@ifc-lite/sdk 9.0.0 → 9.3.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 (175) hide show
  1. package/README.md +60 -0
  2. package/dist/cost-store-backend.d.ts +2 -0
  3. package/dist/cost-store-backend.d.ts.map +1 -1
  4. package/dist/cost-store-backend.js.map +1 -1
  5. package/dist/group-store-backend.d.ts +5 -0
  6. package/dist/group-store-backend.d.ts.map +1 -0
  7. package/dist/group-store-backend.js +43 -0
  8. package/dist/group-store-backend.js.map +1 -0
  9. package/dist/headless-mutate.d.ts +0 -10
  10. package/dist/headless-mutate.d.ts.map +1 -1
  11. package/dist/headless-mutate.js +8 -2
  12. package/dist/headless-mutate.js.map +1 -1
  13. package/dist/host.d.ts +2 -0
  14. package/dist/host.d.ts.map +1 -1
  15. package/dist/host.js +34 -11
  16. package/dist/host.js.map +1 -1
  17. package/dist/index.d.ts +6 -9
  18. package/dist/index.d.ts.map +1 -1
  19. package/dist/index.js +4 -4
  20. package/dist/index.js.map +1 -1
  21. package/dist/namespaces/ids-authoring.d.ts +74 -0
  22. package/dist/namespaces/ids-authoring.d.ts.map +1 -0
  23. package/dist/namespaces/ids-authoring.js +99 -0
  24. package/dist/namespaces/ids-authoring.js.map +1 -0
  25. package/dist/namespaces/ids.d.ts +4 -0
  26. package/dist/namespaces/ids.d.ts.map +1 -1
  27. package/dist/namespaces/ids.js +11 -0
  28. package/dist/namespaces/ids.js.map +1 -1
  29. package/dist/namespaces/mutate.d.ts +3 -3
  30. package/dist/namespaces/mutate.d.ts.map +1 -1
  31. package/dist/namespaces/mutate.js +7 -3
  32. package/dist/namespaces/mutate.js.map +1 -1
  33. package/dist/namespaces/store-group.d.ts +9 -0
  34. package/dist/namespaces/store-group.d.ts.map +1 -0
  35. package/dist/namespaces/store-group.js +31 -0
  36. package/dist/namespaces/store-group.js.map +1 -0
  37. package/dist/namespaces/store-modelling.d.ts +42 -1
  38. package/dist/namespaces/store-modelling.d.ts.map +1 -1
  39. package/dist/namespaces/store-modelling.js +119 -0
  40. package/dist/namespaces/store-modelling.js.map +1 -1
  41. package/dist/namespaces/store.d.ts +14 -13
  42. package/dist/namespaces/store.d.ts.map +1 -1
  43. package/dist/namespaces/store.js +10 -9
  44. package/dist/namespaces/store.js.map +1 -1
  45. package/dist/review/bcf.d.ts +10 -0
  46. package/dist/review/bcf.d.ts.map +1 -0
  47. package/dist/review/bcf.js +33 -0
  48. package/dist/review/bcf.js.map +1 -0
  49. package/dist/review/capture-budget.d.ts +6 -0
  50. package/dist/review/capture-budget.d.ts.map +1 -0
  51. package/dist/review/capture-budget.js +47 -0
  52. package/dist/review/capture-budget.js.map +1 -0
  53. package/dist/review/capture-retention.d.ts +47 -0
  54. package/dist/review/capture-retention.d.ts.map +1 -0
  55. package/dist/review/capture-retention.js +141 -0
  56. package/dist/review/capture-retention.js.map +1 -0
  57. package/dist/review/capture-types.d.ts +57 -0
  58. package/dist/review/capture-types.d.ts.map +1 -0
  59. package/dist/review/capture-types.js +5 -0
  60. package/dist/review/capture-types.js.map +1 -0
  61. package/dist/review/cards.d.ts +60 -0
  62. package/dist/review/cards.d.ts.map +1 -0
  63. package/dist/review/cards.js +90 -0
  64. package/dist/review/cards.js.map +1 -0
  65. package/dist/review/disciplines.d.ts +3 -0
  66. package/dist/review/disciplines.d.ts.map +1 -0
  67. package/dist/review/disciplines.js +10 -0
  68. package/dist/review/disciplines.js.map +1 -0
  69. package/dist/review/identity.d.ts +27 -0
  70. package/dist/review/identity.d.ts.map +1 -0
  71. package/dist/review/identity.js +42 -0
  72. package/dist/review/identity.js.map +1 -0
  73. package/dist/review/native-captures.d.ts +21 -0
  74. package/dist/review/native-captures.d.ts.map +1 -0
  75. package/dist/review/native-captures.js +325 -0
  76. package/dist/review/native-captures.js.map +1 -0
  77. package/dist/review/native-snapshot.d.ts +47 -0
  78. package/dist/review/native-snapshot.d.ts.map +1 -0
  79. package/dist/review/native-snapshot.js +98 -0
  80. package/dist/review/native-snapshot.js.map +1 -0
  81. package/dist/review/portable-analysis-binding.d.ts +29 -0
  82. package/dist/review/portable-analysis-binding.d.ts.map +1 -0
  83. package/dist/review/portable-analysis-binding.js +60 -0
  84. package/dist/review/portable-analysis-binding.js.map +1 -0
  85. package/dist/review/portable-analysis.d.ts +103 -0
  86. package/dist/review/portable-analysis.d.ts.map +1 -0
  87. package/dist/review/portable-analysis.js +119 -0
  88. package/dist/review/portable-analysis.js.map +1 -0
  89. package/dist/review/portable-automation-provenance.d.ts +32 -0
  90. package/dist/review/portable-automation-provenance.d.ts.map +1 -0
  91. package/dist/review/portable-automation-provenance.js +68 -0
  92. package/dist/review/portable-automation-provenance.js.map +1 -0
  93. package/dist/review/portable-ids-report.d.ts +125 -0
  94. package/dist/review/portable-ids-report.d.ts.map +1 -0
  95. package/dist/review/portable-ids-report.js +124 -0
  96. package/dist/review/portable-ids-report.js.map +1 -0
  97. package/dist/review/portable-manual-report.d.ts +66 -0
  98. package/dist/review/portable-manual-report.d.ts.map +1 -0
  99. package/dist/review/portable-manual-report.js +121 -0
  100. package/dist/review/portable-manual-report.js.map +1 -0
  101. package/dist/review/portable-report-metadata.d.ts +42 -0
  102. package/dist/review/portable-report-metadata.d.ts.map +1 -0
  103. package/dist/review/portable-report-metadata.js +41 -0
  104. package/dist/review/portable-report-metadata.js.map +1 -0
  105. package/dist/review/portable-saved-validation.d.ts +12 -0
  106. package/dist/review/portable-saved-validation.d.ts.map +1 -0
  107. package/dist/review/portable-saved-validation.js +32 -0
  108. package/dist/review/portable-saved-validation.js.map +1 -0
  109. package/dist/review/portable-validation-evidence.d.ts +53 -0
  110. package/dist/review/portable-validation-evidence.d.ts.map +1 -0
  111. package/dist/review/portable-validation-evidence.js +52 -0
  112. package/dist/review/portable-validation-evidence.js.map +1 -0
  113. package/dist/review/snapshot.d.ts +15 -0
  114. package/dist/review/snapshot.d.ts.map +1 -0
  115. package/dist/review/snapshot.js +25 -0
  116. package/dist/review/snapshot.js.map +1 -0
  117. package/dist/review/types.d.ts +167 -0
  118. package/dist/review/types.d.ts.map +1 -0
  119. package/dist/review/types.js +11 -0
  120. package/dist/review/types.js.map +1 -0
  121. package/dist/review/validation.d.ts +14 -0
  122. package/dist/review/validation.d.ts.map +1 -0
  123. package/dist/review/validation.js +57 -0
  124. package/dist/review/validation.js.map +1 -0
  125. package/dist/review.d.ts +27 -0
  126. package/dist/review.d.ts.map +1 -0
  127. package/dist/review.js +23 -0
  128. package/dist/review.js.map +1 -0
  129. package/dist/schedule-types.d.ts +4 -0
  130. package/dist/schedule-types.d.ts.map +1 -1
  131. package/dist/store-align-command.d.ts +13 -0
  132. package/dist/store-align-command.d.ts.map +1 -0
  133. package/dist/store-align-command.js +31 -0
  134. package/dist/store-align-command.js.map +1 -0
  135. package/dist/store-authoring-exports.d.ts +10 -0
  136. package/dist/store-authoring-exports.d.ts.map +1 -0
  137. package/dist/store-authoring-exports.js +9 -0
  138. package/dist/store-authoring-exports.js.map +1 -0
  139. package/dist/store-authoring-types.d.ts +8 -0
  140. package/dist/store-authoring-types.d.ts.map +1 -0
  141. package/dist/store-authoring-types.js +2 -0
  142. package/dist/store-authoring-types.js.map +1 -0
  143. package/dist/store-group-types.d.ts +20 -0
  144. package/dist/store-group-types.d.ts.map +1 -0
  145. package/dist/store-group-types.js +2 -0
  146. package/dist/store-group-types.js.map +1 -0
  147. package/dist/store-modelling-backend.d.ts.map +1 -1
  148. package/dist/store-modelling-backend.js +61 -1
  149. package/dist/store-modelling-backend.js.map +1 -1
  150. package/dist/store-modelling-types.d.ts +31 -2
  151. package/dist/store-modelling-types.d.ts.map +1 -1
  152. package/dist/store-ordinary-backend.d.ts +10 -0
  153. package/dist/store-ordinary-backend.d.ts.map +1 -0
  154. package/dist/store-ordinary-backend.js +27 -0
  155. package/dist/store-ordinary-backend.js.map +1 -0
  156. package/dist/store-physical-backend.d.ts +5 -0
  157. package/dist/store-physical-backend.d.ts.map +1 -0
  158. package/dist/store-physical-backend.js +51 -0
  159. package/dist/store-physical-backend.js.map +1 -0
  160. package/dist/store-physical-types.d.ts +33 -0
  161. package/dist/store-physical-types.d.ts.map +1 -0
  162. package/dist/store-physical-types.js +5 -0
  163. package/dist/store-physical-types.js.map +1 -0
  164. package/dist/store-room-auto-all.d.ts +5 -0
  165. package/dist/store-room-auto-all.d.ts.map +1 -0
  166. package/dist/store-room-auto-all.js +94 -0
  167. package/dist/store-room-auto-all.js.map +1 -0
  168. package/dist/store-room-command.d.ts +91 -0
  169. package/dist/store-room-command.d.ts.map +1 -0
  170. package/dist/store-room-command.js +197 -0
  171. package/dist/store-room-command.js.map +1 -0
  172. package/dist/types.d.ts +12 -24
  173. package/dist/types.d.ts.map +1 -1
  174. package/dist/types.js.map +1 -1
  175. package/package.json +21 -14
@@ -0,0 +1 @@
1
+ {"version":3,"file":"portable-automation-provenance.js","sourceRoot":"","sources":["../../src/review/portable-automation-provenance.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,125 @@
1
+ /**
2
+ * The validation report block's saved shape (#5125, #6372), split out of
3
+ * `types.ts` (which re-exports everything here) to keep that file under its
4
+ * module-size budget.
5
+ *
6
+ * One block kind (`'ids-report'`) serves both validation sources: an IDS run
7
+ * and an information-validation (rule set) run. `sourceKind` says which one
8
+ * produced the snapshot. It is optional and additive (#6372): every block
9
+ * saved before it existed was labelled as IDS, so an absent `sourceKind`
10
+ * reads as `'ids'` and the document format version stays the same.
11
+ */
12
+ import { type SavedValidationElements } from './portable-validation-evidence.js';
13
+ import { type BlockTitle } from './portable-report-metadata.js';
14
+ import type { PortableReportValidationError as DocumentValidationError } from './portable-report-metadata.js';
15
+ import { type ReportProvenance } from './portable-report-metadata.js';
16
+ /** Which engine produced a report block's snapshot; mirrors `ValidationSource['kind']`. */
17
+ export type ReportSourceKind = 'ids' | 'rules';
18
+ /**
19
+ * One check (IDS specification, or information-validation rule) inside a
20
+ * report block (#5125): the counts and description taken straight off
21
+ * `SpecificationResult` — `shortDescription` is the specification's `name`,
22
+ * `longDescription` its optional `description`, so neither is invented here.
23
+ *
24
+ * The optional fields below are only ever written for an information
25
+ * validation snapshot (#6372); an IDS snapshot keeps its original shape.
26
+ */
27
+ export interface IdsReportCheckSummary {
28
+ id: string;
29
+ shortDescription: string;
30
+ longDescription?: string;
31
+ checked: number;
32
+ passed: number;
33
+ failed: number;
34
+ /** 0-100, floor-rounded; 100 when `checked` is 0 (no applicable entities) — matches `SpecificationResult.passRate`. */
35
+ passRate: number;
36
+ rules: IdsReportRuleSummary[];
37
+ /** `'warning'`: this check's failures are warnings, counted apart from failures (#6372). Absent means `'error'`. */
38
+ severity?: 'error' | 'warning';
39
+ /** The engine could not evaluate this check (`SpecificationResult.error`); printed instead of counts (#6372). */
40
+ error?: string;
41
+ /** Set-level results of a `unique` / `aggregate` rule (`SpecificationResult.setResults`, #6372). */
42
+ sets?: IdsReportSetRow[];
43
+ /** The engine capped `sets` before every set was evaluated (`setResultsTruncated`). */
44
+ setsTruncated?: boolean;
45
+ /** How many applicable elements the rule found against its declared cardinality (#6372). */
46
+ cardinality?: IdsReportCardinality;
47
+ }
48
+ /** A requirement under one IDS specification. Null metrics mean the source
49
+ * report omitted passing entities, so an exact per-rule count is unavailable. */
50
+ export interface IdsReportRuleSummary {
51
+ id: string;
52
+ /** Bare attribute / property name (#6470), for the compact layout. Absent in older documents. */
53
+ name?: string;
54
+ shortDescription: string;
55
+ longDescription?: string;
56
+ checked: number;
57
+ passed: number | null;
58
+ failed: number | null;
59
+ passRate: number | null;
60
+ }
61
+ /** One uniqueness / aggregate group result, as `SetResult` reports it (without its member list). */
62
+ export interface IdsReportSetRow {
63
+ /** unique: the shared value; aggregate: fn + subject, e.g. `sum(Qto_….NetFloorArea)`. */
64
+ label: string;
65
+ /** The rendered groupBy key (parent name, storey name…), when the rule groups; `''` is a blank grouping value, not "ungrouped". */
66
+ groupKey?: string;
67
+ actual: string;
68
+ expected: string;
69
+ passed: boolean;
70
+ }
71
+ /** `IDSCardinalityResult` reduced to its numbers, so every surface words it in its own language. */
72
+ export interface IdsReportCardinality {
73
+ passed: boolean;
74
+ actual: number;
75
+ min?: number;
76
+ max?: number;
77
+ }
78
+ /** `compact`: one bar row per check / requirement. `long`: full requirement text, never truncated. */
79
+ export type IdsReportVariant = 'compact' | 'long';
80
+ export declare const IDS_REPORT_VARIANTS: readonly IdsReportVariant[];
81
+ /**
82
+ * A frozen snapshot of an IDS / information-validation report (#5125, #6372),
83
+ * taken from the live `ValidationReport` when the block is added or refreshed
84
+ * — like a table block's list copy, it travels with the document instead of
85
+ * reading the store, so a saved document still prints the run that produced it.
86
+ */
87
+ export interface IdsReportBlock extends ReportProvenance, BlockTitle {
88
+ kind: 'ids-report';
89
+ id: string;
90
+ /** Layout (#6470). Absent in documents saved before it existed, which keep printing the original layout (one truncated line per field) until the author picks one. */
91
+ variant?: IdsReportVariant;
92
+ /**
93
+ * Compact layout only (#6560): print one bar row per specification and leave out its
94
+ * requirement rows. Optional and additive, so the document format version is unchanged;
95
+ * a viewer that supports the document format but predates this field ignores it
96
+ * and prints the full compact report.
97
+ */
98
+ specificationsOnly?: boolean;
99
+ /** Optional ring benchmark (#6552). Absent retains existing document output. */
100
+ benchmarks?: boolean;
101
+ /** Whole-block size, 0.5-2 (#6548); absent is 1. */
102
+ scale?: number;
103
+ /** Which engine produced the snapshot (#6372). Absent means `'ids'`: every block saved before this field existed was labelled IDS. */
104
+ sourceKind?: ReportSourceKind;
105
+ /** IDS document title, or rule-set name, printed in the block's heading. */
106
+ sourceName: string;
107
+ /** When the snapshotted run finished (`ValidationReport.timestamp`, ISO). */
108
+ generatedAt: string;
109
+ /** `failed` excludes warning-severity failures, which `warnings` counts (#6372; absent on IDS snapshots). */
110
+ summary: {
111
+ checked: number;
112
+ passed: number;
113
+ failed: number;
114
+ passRate: number;
115
+ warnings?: number;
116
+ };
117
+ checks: IdsReportCheckSummary[];
118
+ /** Optional immutable element failures; absent in older count-only snapshots (#7091). */
119
+ elementEvidence?: SavedValidationElements;
120
+ }
121
+ /** The source a report block was snapshotted from; a block saved before #6372 has none and is IDS. */
122
+ export declare function reportBlockSourceKind(block: Pick<IdsReportBlock, 'sourceKind'>): ReportSourceKind;
123
+ /** Structural check of a report block (#5125, #6372): a finite, non-negative count and a 0-100 pass rate at both the block and every check. */
124
+ export declare function validateIdsReportBlock(block: Record<string, unknown>, at: string, errors: DocumentValidationError[]): void;
125
+ //# sourceMappingURL=portable-ids-report.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"portable-ids-report.d.ts","sourceRoot":"","sources":["../../src/review/portable-ids-report.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,124 @@
1
+ /* This Source Code Form is subject to the terms of the Mozilla Public
2
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
3
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
4
+ /**
5
+ * The validation report block's saved shape (#5125, #6372), split out of
6
+ * `types.ts` (which re-exports everything here) to keep that file under its
7
+ * module-size budget.
8
+ *
9
+ * One block kind (`'ids-report'`) serves both validation sources: an IDS run
10
+ * and an information-validation (rule set) run. `sourceKind` says which one
11
+ * produced the snapshot. It is optional and additive (#6372): every block
12
+ * saved before it existed was labelled as IDS, so an absent `sourceKind`
13
+ * reads as `'ids'` and the document format version stays the same.
14
+ */
15
+ import { validateSavedValidationElements } from './portable-validation-evidence.js';
16
+ import { validateBlockTitle } from './portable-report-metadata.js';
17
+ import { validateReportProvenance } from './portable-report-metadata.js';
18
+ export const IDS_REPORT_VARIANTS = ['compact', 'long'];
19
+ /** The source a report block was snapshotted from; a block saved before #6372 has none and is IDS. */
20
+ export function reportBlockSourceKind(block) {
21
+ return block.sourceKind ?? 'ids';
22
+ }
23
+ const isRecord = (v) => typeof v === 'object' && v !== null && !Array.isArray(v);
24
+ const isString = (v) => typeof v === 'string';
25
+ const isCount = (v) => typeof v === 'number' && Number.isFinite(v) && v >= 0;
26
+ const isRate = (v) => typeof v === 'number' && Number.isFinite(v) && v >= 0 && v <= 100;
27
+ function validateCheckExtras(check, checkAt, errors) {
28
+ if (check.severity !== undefined && check.severity !== 'error' && check.severity !== 'warning')
29
+ errors.push({ path: `${checkAt}.severity`, message: 'expected error | warning' });
30
+ if (check.error !== undefined && !isString(check.error))
31
+ errors.push({ path: `${checkAt}.error`, message: 'expected a string' });
32
+ if (check.setsTruncated !== undefined && typeof check.setsTruncated !== 'boolean')
33
+ errors.push({ path: `${checkAt}.setsTruncated`, message: 'expected a boolean' });
34
+ if (check.sets !== undefined) {
35
+ if (!Array.isArray(check.sets))
36
+ errors.push({ path: `${checkAt}.sets`, message: 'expected an array' });
37
+ else
38
+ check.sets.forEach((set, k) => {
39
+ const ok = isRecord(set) && isString(set.label) && isString(set.actual) && isString(set.expected) && typeof set.passed === 'boolean'
40
+ && (set.groupKey === undefined || isString(set.groupKey));
41
+ if (!ok)
42
+ errors.push({ path: `${checkAt}.sets[${k}]`, message: 'expected { label, actual, expected: strings; passed: boolean; groupKey?: string }' });
43
+ });
44
+ }
45
+ const cardinality = check.cardinality;
46
+ if (cardinality !== undefined) {
47
+ const ok = isRecord(cardinality) && typeof cardinality.passed === 'boolean' && isCount(cardinality.actual)
48
+ && (cardinality.min === undefined || isCount(cardinality.min)) && (cardinality.max === undefined || isCount(cardinality.max));
49
+ if (!ok)
50
+ errors.push({ path: `${checkAt}.cardinality`, message: 'expected { passed: boolean; actual, min?, max?: non-negative numbers }' });
51
+ }
52
+ }
53
+ /** Structural check of a report block (#5125, #6372): a finite, non-negative count and a 0-100 pass rate at both the block and every check. */
54
+ export function validateIdsReportBlock(block, at, errors) {
55
+ validateReportProvenance(block, at, errors);
56
+ if (block.elementEvidence !== undefined)
57
+ validateSavedValidationElements(block.elementEvidence, `${at}.elementEvidence`, errors);
58
+ validateBlockTitle(block, at, errors);
59
+ if (block.sourceKind !== undefined && block.sourceKind !== 'ids' && block.sourceKind !== 'rules')
60
+ errors.push({ path: `${at}.sourceKind`, message: 'expected ids | rules' });
61
+ if (!isString(block.sourceName))
62
+ errors.push({ path: `${at}.sourceName`, message: 'expected a string' });
63
+ if (!isString(block.generatedAt))
64
+ errors.push({ path: `${at}.generatedAt`, message: 'expected a string' });
65
+ if (block.variant !== undefined && !IDS_REPORT_VARIANTS.includes(block.variant))
66
+ errors.push({ path: `${at}.variant`, message: `expected ${IDS_REPORT_VARIANTS.join(' | ')}` });
67
+ if (block.benchmarks !== undefined && typeof block.benchmarks !== 'boolean')
68
+ errors.push({ path: `${at}.benchmarks`, message: 'expected a boolean' });
69
+ if (block.specificationsOnly !== undefined && typeof block.specificationsOnly !== 'boolean')
70
+ errors.push({ path: `${at}.specificationsOnly`, message: 'expected a boolean' });
71
+ const summary = block.summary;
72
+ if (!isRecord(summary) || !isCount(summary.checked) || !isCount(summary.passed) || !isCount(summary.failed) || !isRate(summary.passRate)
73
+ || (summary.warnings !== undefined && !isCount(summary.warnings))) {
74
+ errors.push({ path: `${at}.summary`, message: 'expected { checked, passed, failed, warnings?: non-negative numbers; passRate: 0-100 }' });
75
+ }
76
+ if (!Array.isArray(block.checks)) {
77
+ errors.push({ path: `${at}.checks`, message: 'expected an array' });
78
+ return;
79
+ }
80
+ block.checks.forEach((check, i) => {
81
+ const checkAt = `${at}.checks[${i}]`;
82
+ if (!isRecord(check)) {
83
+ errors.push({ path: checkAt, message: 'expected an object' });
84
+ return;
85
+ }
86
+ if (!isString(check.id) || check.id.length === 0)
87
+ errors.push({ path: `${checkAt}.id`, message: 'expected a non-empty string' });
88
+ if (!isString(check.shortDescription))
89
+ errors.push({ path: `${checkAt}.shortDescription`, message: 'expected a string' });
90
+ if (check.longDescription !== undefined && !isString(check.longDescription))
91
+ errors.push({ path: `${checkAt}.longDescription`, message: 'expected a string' });
92
+ if (!isCount(check.checked) || !isCount(check.passed) || !isCount(check.failed))
93
+ errors.push({ path: `${checkAt}`, message: 'expected checked/passed/failed: non-negative numbers' });
94
+ if (!isRate(check.passRate))
95
+ errors.push({ path: `${checkAt}.passRate`, message: 'expected a number between 0 and 100' });
96
+ validateCheckExtras(check, checkAt, errors);
97
+ if (!Array.isArray(check.rules)) {
98
+ errors.push({ path: `${checkAt}.rules`, message: 'expected an array' });
99
+ return;
100
+ }
101
+ check.rules.forEach((rule, j) => {
102
+ const ruleAt = `${checkAt}.rules[${j}]`;
103
+ if (!isRecord(rule)) {
104
+ errors.push({ path: ruleAt, message: 'expected an object' });
105
+ return;
106
+ }
107
+ if (!isString(rule.id) || rule.id.length === 0)
108
+ errors.push({ path: `${ruleAt}.id`, message: 'expected a non-empty string' });
109
+ if (!isString(rule.shortDescription))
110
+ errors.push({ path: `${ruleAt}.shortDescription`, message: 'expected a string' });
111
+ if (rule.name !== undefined && !isString(rule.name))
112
+ errors.push({ path: `${ruleAt}.name`, message: 'expected a string' });
113
+ if (rule.longDescription !== undefined && !isString(rule.longDescription))
114
+ errors.push({ path: `${ruleAt}.longDescription`, message: 'expected a string' });
115
+ if (!isCount(rule.checked))
116
+ errors.push({ path: `${ruleAt}.checked`, message: 'expected a non-negative number' });
117
+ const unavailable = rule.passed === null && rule.failed === null && rule.passRate === null;
118
+ if (!unavailable && (!isCount(rule.passed) || !isCount(rule.failed) || !isRate(rule.passRate))) {
119
+ errors.push({ path: ruleAt, message: 'expected passed/failed: non-negative numbers and passRate: 0-100, or all null' });
120
+ }
121
+ });
122
+ });
123
+ }
124
+ //# sourceMappingURL=portable-ids-report.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"portable-ids-report.js","sourceRoot":"","sources":["../../src/review/portable-ids-report.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAE/D;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,+BAA+B,EAAgC,MAAM,mCAAmC,CAAC;AAClH,OAAO,EAAE,kBAAkB,EAAmB,MAAM,+BAA+B,CAAC;AAEpF,OAAO,EAAE,wBAAwB,EAAyB,MAAM,+BAA+B,CAAC;AAuEhG,MAAM,CAAC,MAAM,mBAAmB,GAAgC,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;AAqCpF,sGAAsG;AACtG,MAAM,UAAU,qBAAqB,CAAC,KAAyC;IAC7E,OAAO,KAAK,CAAC,UAAU,IAAI,KAAK,CAAC;AACnC,CAAC;AAED,MAAM,QAAQ,GAAG,CAAC,CAAU,EAAgC,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AACxH,MAAM,QAAQ,GAAG,CAAC,CAAU,EAAe,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC;AACpE,MAAM,OAAO,GAAG,CAAC,CAAU,EAAe,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACnG,MAAM,MAAM,GAAG,CAAC,CAAU,EAAe,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC;AAE9G,SAAS,mBAAmB,CAAC,KAA8B,EAAE,OAAe,EAAE,MAAiC;IAC7G,IAAI,KAAK,CAAC,QAAQ,KAAK,SAAS,IAAI,KAAK,CAAC,QAAQ,KAAK,OAAO,IAAI,KAAK,CAAC,QAAQ,KAAK,SAAS;QAAE,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,GAAG,OAAO,WAAW,EAAE,OAAO,EAAE,0BAA0B,EAAE,CAAC,CAAC;IAClL,IAAI,KAAK,CAAC,KAAK,KAAK,SAAS,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC;QAAE,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,GAAG,OAAO,QAAQ,EAAE,OAAO,EAAE,mBAAmB,EAAE,CAAC,CAAC;IACjI,IAAI,KAAK,CAAC,aAAa,KAAK,SAAS,IAAI,OAAO,KAAK,CAAC,aAAa,KAAK,SAAS;QAAE,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,GAAG,OAAO,gBAAgB,EAAE,OAAO,EAAE,oBAAoB,EAAE,CAAC,CAAC;IACpK,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QAC7B,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC;YAAE,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,GAAG,OAAO,OAAO,EAAE,OAAO,EAAE,mBAAmB,EAAE,CAAC,CAAC;;YAClG,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,GAAY,EAAE,CAAC,EAAE,EAAE;gBAC1C,MAAM,EAAE,GAAG,QAAQ,CAAC,GAAG,CAAC,IAAI,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,OAAO,GAAG,CAAC,MAAM,KAAK,SAAS;uBAC/H,CAAC,GAAG,CAAC,QAAQ,KAAK,SAAS,IAAI,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC;gBAC5D,IAAI,CAAC,EAAE;oBAAE,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,GAAG,OAAO,SAAS,CAAC,GAAG,EAAE,OAAO,EAAE,mFAAmF,EAAE,CAAC,CAAC;YACxJ,CAAC,CAAC,CAAC;IACL,CAAC;IACD,MAAM,WAAW,GAAG,KAAK,CAAC,WAAW,CAAC;IACtC,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;QAC9B,MAAM,EAAE,GAAG,QAAQ,CAAC,WAAW,CAAC,IAAI,OAAO,WAAW,CAAC,MAAM,KAAK,SAAS,IAAI,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC;eACrG,CAAC,WAAW,CAAC,GAAG,KAAK,SAAS,IAAI,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,KAAK,SAAS,IAAI,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC;QAChI,IAAI,CAAC,EAAE;YAAE,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,GAAG,OAAO,cAAc,EAAE,OAAO,EAAE,wEAAwE,EAAE,CAAC,CAAC;IAC9I,CAAC;AACH,CAAC;AAED,+IAA+I;AAC/I,MAAM,UAAU,sBAAsB,CAAC,KAA8B,EAAE,EAAU,EAAE,MAAiC;IAClH,wBAAwB,CAAC,KAAK,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC;IAC5C,IAAI,KAAK,CAAC,eAAe,KAAK,SAAS;QAAE,+BAA+B,CAAC,KAAK,CAAC,eAAe,EAAE,GAAG,EAAE,kBAAkB,EAAE,MAAM,CAAC,CAAC;IACjI,kBAAkB,CAAC,KAAK,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC;IACtC,IAAI,KAAK,CAAC,UAAU,KAAK,SAAS,IAAI,KAAK,CAAC,UAAU,KAAK,KAAK,IAAI,KAAK,CAAC,UAAU,KAAK,OAAO;QAAE,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,aAAa,EAAE,OAAO,EAAE,sBAAsB,EAAE,CAAC,CAAC;IAC7K,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,UAAU,CAAC;QAAE,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,aAAa,EAAE,OAAO,EAAE,mBAAmB,EAAE,CAAC,CAAC;IACzG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,CAAC;QAAE,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,cAAc,EAAE,OAAO,EAAE,mBAAmB,EAAE,CAAC,CAAC;IAC3G,IAAI,KAAK,CAAC,OAAO,KAAK,SAAS,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,KAAK,CAAC,OAA2B,CAAC;QAAE,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,UAAU,EAAE,OAAO,EAAE,YAAY,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;IACpM,IAAI,KAAK,CAAC,UAAU,KAAK,SAAS,IAAI,OAAO,KAAK,CAAC,UAAU,KAAK,SAAS;QAAE,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,aAAa,EAAE,OAAO,EAAE,oBAAoB,EAAE,CAAC,CAAC;IACtJ,IAAI,KAAK,CAAC,kBAAkB,KAAK,SAAS,IAAI,OAAO,KAAK,CAAC,kBAAkB,KAAK,SAAS;QAAE,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,qBAAqB,EAAE,OAAO,EAAE,oBAAoB,EAAE,CAAC,CAAC;IAC9K,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;IAC9B,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC;WACnI,CAAC,OAAO,CAAC,QAAQ,KAAK,SAAS,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC;QACpE,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,UAAU,EAAE,OAAO,EAAE,wFAAwF,EAAE,CAAC,CAAC;IAC5I,CAAC;IACD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC;QACjC,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,SAAS,EAAE,OAAO,EAAE,mBAAmB,EAAE,CAAC,CAAC;QACpE,OAAO;IACT,CAAC;IACD,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAc,EAAE,CAAC,EAAE,EAAE;QACzC,MAAM,OAAO,GAAG,GAAG,EAAE,WAAW,CAAC,GAAG,CAAC;QACrC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YAAC,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,oBAAoB,EAAE,CAAC,CAAC;YAAC,OAAO;QAAC,CAAC;QAChG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC,MAAM,KAAK,CAAC;YAAE,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,GAAG,OAAO,KAAK,EAAE,OAAO,EAAE,6BAA6B,EAAE,CAAC,CAAC;QACjI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,gBAAgB,CAAC;YAAE,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,GAAG,OAAO,mBAAmB,EAAE,OAAO,EAAE,mBAAmB,EAAE,CAAC,CAAC;QAC1H,IAAI,KAAK,CAAC,eAAe,KAAK,SAAS,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,eAAe,CAAC;YAAE,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,GAAG,OAAO,kBAAkB,EAAE,OAAO,EAAE,mBAAmB,EAAE,CAAC,CAAC;QAC/J,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC;YAAE,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,GAAG,OAAO,EAAE,EAAE,OAAO,EAAE,sDAAsD,EAAE,CAAC,CAAC;QACtL,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC;YAAE,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,GAAG,OAAO,WAAW,EAAE,OAAO,EAAE,qCAAqC,EAAE,CAAC,CAAC;QAC1H,mBAAmB,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;QAC5C,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;YAChC,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,GAAG,OAAO,QAAQ,EAAE,OAAO,EAAE,mBAAmB,EAAE,CAAC,CAAC;YACxE,OAAO;QACT,CAAC;QACD,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAa,EAAE,CAAC,EAAE,EAAE;YACvC,MAAM,MAAM,GAAG,GAAG,OAAO,UAAU,CAAC,GAAG,CAAC;YACxC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;gBAAC,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,oBAAoB,EAAE,CAAC,CAAC;gBAAC,OAAO;YAAC,CAAC;YAC9F,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,EAAE,CAAC,MAAM,KAAK,CAAC;gBAAE,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,GAAG,MAAM,KAAK,EAAE,OAAO,EAAE,6BAA6B,EAAE,CAAC,CAAC;YAC9H,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,gBAAgB,CAAC;gBAAE,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,GAAG,MAAM,mBAAmB,EAAE,OAAO,EAAE,mBAAmB,EAAE,CAAC,CAAC;YACxH,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;gBAAE,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,GAAG,MAAM,OAAO,EAAE,OAAO,EAAE,mBAAmB,EAAE,CAAC,CAAC;YAC3H,IAAI,IAAI,CAAC,eAAe,KAAK,SAAS,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,eAAe,CAAC;gBAAE,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,GAAG,MAAM,kBAAkB,EAAE,OAAO,EAAE,mBAAmB,EAAE,CAAC,CAAC;YAC5J,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC;gBAAE,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,GAAG,MAAM,UAAU,EAAE,OAAO,EAAE,gCAAgC,EAAE,CAAC,CAAC;YAClH,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,KAAK,IAAI,IAAI,IAAI,CAAC,MAAM,KAAK,IAAI,IAAI,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC;YAC3F,IAAI,CAAC,WAAW,IAAI,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC;gBAC/F,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,+EAA+E,EAAE,CAAC,CAAC;YAC1H,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,66 @@
1
+ /**
2
+ * The manual-validation report block's saved shape (#6401), kept beside
3
+ * `types.ts` (which composes it into `DocumentBlock`) the way the
4
+ * validation report block's types are.
5
+ *
6
+ * A frozen snapshot, like `ids-report`: the checklist's groups and checks,
7
+ * each check's verdict and comment, and the per-group counts, copied when
8
+ * the block is added or refreshed. It never reads the live checklist or
9
+ * the stored answers again, so a saved document prints the round that was
10
+ * recorded, and it travels with the `.ifclite-document.json` file.
11
+ */
12
+ import { type BlockTitle } from './portable-report-metadata.js';
13
+ import type { PortableReportValidationError as DocumentValidationError } from './portable-report-metadata.js';
14
+ import { type ReportProvenance } from './portable-report-metadata.js';
15
+ export type ManualReportVerdict = 'pass' | 'fail' | 'warning';
16
+ /** The four disjoint buckets; a warning is its own bucket, never a pass. */
17
+ export interface ManualReportCounts {
18
+ total: number;
19
+ pass: number;
20
+ fail: number;
21
+ warning: number;
22
+ unanswered: number;
23
+ }
24
+ export interface ManualReportItem {
25
+ id: string;
26
+ text: string;
27
+ description?: string;
28
+ /** `null`: not checked when the snapshot was taken. */
29
+ status: ManualReportVerdict | null;
30
+ comment?: string;
31
+ }
32
+ export interface ManualReportGroup {
33
+ id: string;
34
+ name: string;
35
+ counts: ManualReportCounts;
36
+ items: ManualReportItem[];
37
+ }
38
+ export interface ManualReportBlock extends ReportProvenance, BlockTitle {
39
+ kind: 'manual-report';
40
+ id: string;
41
+ /** The checklist's name, printed in the block's heading. */
42
+ checklistName: string;
43
+ /** Live instance used by explicit Refresh; embedded answers stay immutable. */
44
+ checklistId?: string;
45
+ /** Missing on older documents: their existing detailed layout. */
46
+ variant?: 'long' | 'compact';
47
+ /** Missing on older documents: display their existing rings and scores. */
48
+ benchmarks?: boolean;
49
+ /** Whole-block size, 0.5-2 (#6548); absent is 1. */
50
+ scale?: number;
51
+ /** The model the answers were recorded against, when there was one (display only). */
52
+ modelName?: string;
53
+ /**
54
+ * That model's source fingerprint, the key its answers are stored under:
55
+ * Refresh reads this model and no other. Absent when no model (or one
56
+ * without a fingerprint) was loaded; such a block follows the tab's pick.
57
+ */
58
+ modelFingerprint?: string;
59
+ /** When the snapshot was taken (ISO). */
60
+ generatedAt: string;
61
+ summary: ManualReportCounts;
62
+ groups: ManualReportGroup[];
63
+ }
64
+ /** Structural check of a manual report block (#6401), every problem with its JSON path. */
65
+ export declare function validateManualReportBlock(block: Record<string, unknown>, at: string, errors: DocumentValidationError[]): void;
66
+ //# sourceMappingURL=portable-manual-report.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"portable-manual-report.d.ts","sourceRoot":"","sources":["../../src/review/portable-manual-report.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;GAUG;AAEH,OAAO,EAAsB,KAAK,UAAU,EAAE,MAAM,+BAA+B,CAAC;AACpF,OAAO,KAAK,EAAE,6BAA6B,IAAI,uBAAuB,EAAE,MAAM,+BAA+B,CAAC;AAC9G,OAAO,EAA4B,KAAK,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAEhG,MAAM,MAAM,mBAAmB,GAAG,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;AAE9D,4EAA4E;AAC5E,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,uDAAuD;IACvD,MAAM,EAAE,mBAAmB,GAAG,IAAI,CAAC;IACnC,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,kBAAkB,CAAC;IAC3B,KAAK,EAAE,gBAAgB,EAAE,CAAC;CAC3B;AAED,MAAM,WAAW,iBAAkB,SAAQ,gBAAgB,EAAE,UAAU;IACrE,IAAI,EAAE,eAAe,CAAC;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,4DAA4D;IAC5D,aAAa,EAAE,MAAM,CAAC;IACtB,+EAA+E;IAC/E,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,kEAAkE;IAClE,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,2EAA2E;IAC3E,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,oDAAoD;IACpD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,sFAAsF;IACtF,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,yCAAyC;IACzC,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,kBAAkB,CAAC;IAC5B,MAAM,EAAE,iBAAiB,EAAE,CAAC;CAC7B;AAeD,2FAA2F;AAC3F,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,uBAAuB,EAAE,GAAG,IAAI,CAqD7H"}
@@ -0,0 +1,121 @@
1
+ /* This Source Code Form is subject to the terms of the Mozilla Public
2
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
3
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
4
+ /**
5
+ * The manual-validation report block's saved shape (#6401), kept beside
6
+ * `types.ts` (which composes it into `DocumentBlock`) the way the
7
+ * validation report block's types are.
8
+ *
9
+ * A frozen snapshot, like `ids-report`: the checklist's groups and checks,
10
+ * each check's verdict and comment, and the per-group counts, copied when
11
+ * the block is added or refreshed. It never reads the live checklist or
12
+ * the stored answers again, so a saved document prints the round that was
13
+ * recorded, and it travels with the `.ifclite-document.json` file.
14
+ */
15
+ import { validateBlockTitle } from './portable-report-metadata.js';
16
+ import { validateReportProvenance } from './portable-report-metadata.js';
17
+ const isRecord = (v) => typeof v === 'object' && v !== null && !Array.isArray(v);
18
+ const isString = (v) => typeof v === 'string';
19
+ const isCount = (v) => typeof v === 'number' && Number.isInteger(v) && v >= 0;
20
+ const VERDICTS = ['pass', 'fail', 'warning', null];
21
+ /** Counts that are whole, non-negative, and whose four buckets sum to `total`. */
22
+ function isCounts(v) {
23
+ return isRecord(v) && isCount(v.total) && isCount(v.pass) && isCount(v.fail) && isCount(v.warning) && isCount(v.unanswered)
24
+ && v.pass + v.fail + v.warning + v.unanswered === v.total;
25
+ }
26
+ const COUNTS_MESSAGE = 'expected { total, pass, fail, warning, unanswered: non-negative integers; the four buckets sum to total }';
27
+ /** Structural check of a manual report block (#6401), every problem with its JSON path. */
28
+ export function validateManualReportBlock(block, at, errors) {
29
+ validateReportProvenance(block, at, errors);
30
+ validateBlockTitle(block, at, errors);
31
+ if (!isString(block.checklistName))
32
+ errors.push({ path: `${at}.checklistName`, message: 'expected a string' });
33
+ if (block.checklistId !== undefined && !(isString(block.checklistId) && block.checklistId.trim()))
34
+ errors.push({ path: `${at}.checklistId`, message: 'expected a nonblank string' });
35
+ if (block.variant !== undefined && block.variant !== 'long' && block.variant !== 'compact')
36
+ errors.push({ path: `${at}.variant`, message: 'expected long or compact' });
37
+ if (block.benchmarks !== undefined && typeof block.benchmarks !== 'boolean')
38
+ errors.push({ path: `${at}.benchmarks`, message: 'expected a boolean' });
39
+ if (block.modelName !== undefined && !isString(block.modelName))
40
+ errors.push({ path: `${at}.modelName`, message: 'expected a string' });
41
+ if (block.modelFingerprint !== undefined && !(isString(block.modelFingerprint) && block.modelFingerprint.length > 0)) {
42
+ errors.push({ path: `${at}.modelFingerprint`, message: 'expected a non-empty string' });
43
+ }
44
+ if (!isString(block.generatedAt))
45
+ errors.push({ path: `${at}.generatedAt`, message: 'expected a string' });
46
+ if (!isCounts(block.summary))
47
+ errors.push({ path: `${at}.summary`, message: COUNTS_MESSAGE });
48
+ if (!Array.isArray(block.groups)) {
49
+ errors.push({ path: `${at}.groups`, message: 'expected an array' });
50
+ return;
51
+ }
52
+ // One id space across groups and checks, as the checklist parser enforces; the preview keys rows by id.
53
+ const seenIds = new Set();
54
+ const checkId = (value, path) => {
55
+ if (!isString(value) || value.length === 0)
56
+ errors.push({ path, message: 'expected a non-empty string' });
57
+ else if (seenIds.has(value))
58
+ errors.push({ path, message: `duplicate id "${value}"` });
59
+ else
60
+ seenIds.add(value);
61
+ };
62
+ block.groups.forEach((group, i) => {
63
+ const groupAt = `${at}.groups[${i}]`;
64
+ if (!isRecord(group)) {
65
+ errors.push({ path: groupAt, message: 'expected an object' });
66
+ return;
67
+ }
68
+ checkId(group.id, `${groupAt}.id`);
69
+ if (!isString(group.name))
70
+ errors.push({ path: `${groupAt}.name`, message: 'expected a string' });
71
+ if (!isCounts(group.counts))
72
+ errors.push({ path: `${groupAt}.counts`, message: COUNTS_MESSAGE });
73
+ if (!Array.isArray(group.items)) {
74
+ errors.push({ path: `${groupAt}.items`, message: 'expected an array' });
75
+ return;
76
+ }
77
+ group.items.forEach((item, j) => {
78
+ const itemAt = `${groupAt}.items[${j}]`;
79
+ if (!isRecord(item)) {
80
+ errors.push({ path: itemAt, message: 'expected an object' });
81
+ return;
82
+ }
83
+ checkId(item.id, `${itemAt}.id`);
84
+ if (!isString(item.text))
85
+ errors.push({ path: `${itemAt}.text`, message: 'expected a string' });
86
+ if (item.description !== undefined && !isString(item.description))
87
+ errors.push({ path: `${itemAt}.description`, message: 'expected a string' });
88
+ if (!VERDICTS.includes(item.status))
89
+ errors.push({ path: `${itemAt}.status`, message: 'expected pass | fail | warning | null' });
90
+ if (item.comment !== undefined && !isString(item.comment))
91
+ errors.push({ path: `${itemAt}.comment`, message: 'expected a string' });
92
+ });
93
+ // The ring is drawn from `counts`, so counts that disagree with the verdicts listed under
94
+ // them would print a chart the page contradicts; a hand-edited file is refused instead.
95
+ if (isCounts(group.counts) && !sameCounts(group.counts, countItems(group.items))) {
96
+ errors.push({ path: `${groupAt}.counts`, message: 'does not match the verdicts of its items' });
97
+ }
98
+ });
99
+ const groupCounts = block.groups.map((g) => (isRecord(g) && isCounts(g.counts) ? g.counts : null));
100
+ if (isCounts(block.summary) && groupCounts.every((c) => c !== null)) {
101
+ const sum = groupCounts.reduce((acc, c) => ({
102
+ total: acc.total + c.total, pass: acc.pass + c.pass, fail: acc.fail + c.fail, warning: acc.warning + c.warning, unanswered: acc.unanswered + c.unanswered,
103
+ }), { total: 0, pass: 0, fail: 0, warning: 0, unanswered: 0 });
104
+ if (!sameCounts(block.summary, sum))
105
+ errors.push({ path: `${at}.summary`, message: 'does not match the sum of its groups' });
106
+ }
107
+ }
108
+ function countItems(items) {
109
+ const counts = { total: 0, pass: 0, fail: 0, warning: 0, unanswered: 0 };
110
+ for (const item of items) {
111
+ counts.total += 1;
112
+ const status = isRecord(item) ? item.status : null;
113
+ if (status === 'pass' || status === 'fail' || status === 'warning')
114
+ counts[status] += 1;
115
+ else
116
+ counts.unanswered += 1;
117
+ }
118
+ return counts;
119
+ }
120
+ const sameCounts = (a, b) => a.total === b.total && a.pass === b.pass && a.fail === b.fail && a.warning === b.warning && a.unanswered === b.unanswered;
121
+ //# sourceMappingURL=portable-manual-report.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"portable-manual-report.js","sourceRoot":"","sources":["../../src/review/portable-manual-report.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,42 @@
1
+ import { type AutomationReportProvenance } from './portable-automation-provenance.js';
2
+ export interface PortableReportValidationError {
3
+ path: string;
4
+ message: string;
5
+ }
6
+ /** Opaque sRGB document colours; named/alpha/short forms are intentionally excluded. */
7
+ export declare function isRgbColor(value: unknown): value is string;
8
+ /** Heading text size in points: absent prints the default; the bounds match the chart text size (6-24). */
9
+ export declare const BLOCK_TITLE_SIZE_MIN = 6;
10
+ export declare const BLOCK_TITLE_SIZE_MAX = 24;
11
+ /** How the heading looks, shared by every block kind that has one (#6632). Absent fields print as before. */
12
+ export interface BlockHeaderStyleFields {
13
+ /** Heading text size, `BLOCK_TITLE_SIZE_MIN`-`BLOCK_TITLE_SIZE_MAX` points. */
14
+ titleFontSize?: number;
15
+ /** Heading ink in `#RRGGBB`; absent is black, or black/white by contrast when a background is set. */
16
+ titleTextColor?: string;
17
+ /** Heading strip background in `#RRGGBB`; absent is transparent paper. */
18
+ titleBackgroundColor?: string;
19
+ }
20
+ /** Authored presentation belongs to the document, independently of its source (#6547). */
21
+ export interface BlockTitle extends BlockHeaderStyleFields {
22
+ title?: string;
23
+ }
24
+ export declare function validateBlockTitle(block: Record<string, unknown>, at: string, errors: PortableReportValidationError[]): void;
25
+ /** Source identity is evidence about the original run, never a live selector. */
26
+ export interface ReportModelScope {
27
+ name: string;
28
+ fingerprint?: string;
29
+ }
30
+ /** The author's choice to print or omit a report's stamp rows (#6566, #6678).
31
+ * Absent means shown, so every document saved before the choice printed the same. */
32
+ export interface ReportStampChoice {
33
+ showStamp?: boolean;
34
+ }
35
+ export interface ReportProvenance extends ReportStampChoice {
36
+ savedReportId?: string;
37
+ /** Captured workflow execution identity; travels with the evidence, never a live binding. */
38
+ automation?: AutomationReportProvenance;
39
+ reportModels?: ReportModelScope[];
40
+ }
41
+ export declare function validateReportProvenance(block: Record<string, unknown>, at: string, errors: PortableReportValidationError[]): void;
42
+ //# sourceMappingURL=portable-report-metadata.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"portable-report-metadata.d.ts","sourceRoot":"","sources":["../../src/review/portable-report-metadata.ts"],"names":[],"mappings":"AAIA,OAAO,EAAgC,KAAK,0BAA0B,EAAE,MAAM,qCAAqC,CAAC;AACpH,MAAM,WAAW,6BAA6B;IAAG,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE;AAEhF,wFAAwF;AACxF,wBAAgB,UAAU,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,CAE1D;AAED,2GAA2G;AAC3G,eAAO,MAAM,oBAAoB,IAAI,CAAC;AACtC,eAAO,MAAM,oBAAoB,KAAK,CAAC;AAEvC,6GAA6G;AAC7G,MAAM,WAAW,sBAAsB;IACrC,+EAA+E;IAC/E,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,sGAAsG;IACtG,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,0EAA0E;IAC1E,oBAAoB,CAAC,EAAE,MAAM,CAAC;CAC/B;AAED,0FAA0F;AAC1F,MAAM,WAAW,UAAW,SAAQ,sBAAsB;IACxD,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,6BAA6B,EAAE,GAAG,IAAI,CAS5H;AAED,iFAAiF;AACjF,MAAM,WAAW,gBAAgB;IAAG,IAAI,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAAE;AACxE;qFACqF;AACrF,MAAM,WAAW,iBAAiB;IAChC,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AACD,MAAM,WAAW,gBAAiB,SAAQ,iBAAiB;IACzD,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,6FAA6F;IAC7F,UAAU,CAAC,EAAE,0BAA0B,CAAC;IACxC,YAAY,CAAC,EAAE,gBAAgB,EAAE,CAAC;CACnC;AAED,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,6BAA6B,EAAE,GAAG,IAAI,CAalI"}
@@ -0,0 +1,41 @@
1
+ /* This Source Code Form is subject to the terms of the Mozilla Public
2
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
3
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
4
+ import { isAutomationReportProvenance } from './portable-automation-provenance.js';
5
+ /** Opaque sRGB document colours; named/alpha/short forms are intentionally excluded. */
6
+ export function isRgbColor(value) {
7
+ return typeof value === 'string' && /^#[0-9a-f]{6}$/i.test(value);
8
+ }
9
+ /** Heading text size in points: absent prints the default; the bounds match the chart text size (6-24). */
10
+ export const BLOCK_TITLE_SIZE_MIN = 6;
11
+ export const BLOCK_TITLE_SIZE_MAX = 24;
12
+ export function validateBlockTitle(block, at, errors) {
13
+ if (block.title !== undefined && typeof block.title !== 'string')
14
+ errors.push({ path: `${at}.title`, message: 'expected a string' });
15
+ const size = block.titleFontSize;
16
+ if (size !== undefined && (typeof size !== 'number' || !Number.isFinite(size) || size < BLOCK_TITLE_SIZE_MIN || size > BLOCK_TITLE_SIZE_MAX)) {
17
+ errors.push({ path: `${at}.titleFontSize`, message: `expected a number between ${BLOCK_TITLE_SIZE_MIN} and ${BLOCK_TITLE_SIZE_MAX}` });
18
+ }
19
+ for (const key of ['titleTextColor', 'titleBackgroundColor']) {
20
+ if (block[key] !== undefined && !isRgbColor(block[key]))
21
+ errors.push({ path: `${at}.${key}`, message: 'expected an RGB colour in #RRGGBB form' });
22
+ }
23
+ }
24
+ export function validateReportProvenance(block, at, errors) {
25
+ if (block.showStamp !== undefined && typeof block.showStamp !== 'boolean')
26
+ errors.push({ path: `${at}.showStamp`, message: 'expected a boolean' });
27
+ if (block.automation !== undefined && !isAutomationReportProvenance(block.automation)) {
28
+ errors.push({ path: `${at}.automation`, message: 'expected valid workflow report provenance' });
29
+ }
30
+ if (block.savedReportId !== undefined && (typeof block.savedReportId !== 'string' || !block.savedReportId)) {
31
+ errors.push({ path: `${at}.savedReportId`, message: 'expected a non-empty string' });
32
+ }
33
+ if (block.reportModels !== undefined && (!Array.isArray(block.reportModels) || !block.reportModels.every((model) => {
34
+ if (typeof model !== 'object' || model === null || Array.isArray(model))
35
+ return false;
36
+ const m = model;
37
+ return typeof m.name === 'string' && m.name.trim().length > 0 && (m.fingerprint === undefined || (typeof m.fingerprint === 'string' && m.fingerprint.length > 0));
38
+ })))
39
+ errors.push({ path: `${at}.reportModels`, message: 'expected non-empty model names and optional non-empty fingerprints' });
40
+ }
41
+ //# sourceMappingURL=portable-report-metadata.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"portable-report-metadata.js","sourceRoot":"","sources":["../../src/review/portable-report-metadata.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import { type AutomationReportProvenance } from './portable-automation-provenance.js';
2
+ import { type IdsReportBlock } from './portable-ids-report.js';
3
+ import { type ManualReportBlock } from './portable-manual-report.js';
4
+ export type ValidationReportSnapshot = IdsReportBlock | ManualReportBlock;
5
+ export interface SavedValidationReport {
6
+ id: string;
7
+ name: string;
8
+ snapshot: ValidationReportSnapshot;
9
+ automation?: AutomationReportProvenance;
10
+ }
11
+ export declare function validateSavedReport(value: unknown): value is SavedValidationReport;
12
+ //# sourceMappingURL=portable-saved-validation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"portable-saved-validation.d.ts","sourceRoot":"","sources":["../../src/review/portable-saved-validation.ts"],"names":[],"mappings":"AAIA,OAAO,EAAoD,KAAK,0BAA0B,EAAE,MAAM,qCAAqC,CAAC;AACxI,OAAO,EAA0B,KAAK,cAAc,EAAE,MAAM,0BAA0B,CAAC;AACvF,OAAO,EAA6B,KAAK,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAGhG,MAAM,MAAM,wBAAwB,GAAG,cAAc,GAAG,iBAAiB,CAAC;AAC1E,MAAM,WAAW,qBAAqB;IACpC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,wBAAwB,CAAC;IACnC,UAAU,CAAC,EAAE,0BAA0B,CAAC;CACzC;AACD,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,qBAAqB,CAelF"}