@mitre/hdf-schema 3.3.2 → 3.4.1

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/dist/ts/hdf.js CHANGED
@@ -1,6 +1,4 @@
1
1
  /**
2
- * The comparison operator used when evaluating this input against observed values.
3
- *
4
2
  * Comparison operator for evaluating the input value against observed values. Numeric:
5
3
  * eq/ne/lt/le/gt/ge. String: eq/ne/contains/matches. Collection: in/notIn.
6
4
  */
@@ -18,8 +16,6 @@ export var ComparisonOperator;
18
16
  ComparisonOperator["NotIn"] = "notIn";
19
17
  })(ComparisonOperator || (ComparisonOperator = {}));
20
18
  /**
21
- * The data type of this input.
22
- *
23
19
  * The data type of the input value. Aligns with InSpec input types.
24
20
  */
25
21
  export var InputType;
@@ -32,12 +28,12 @@ export var InputType;
32
28
  InputType["String"] = "String";
33
29
  })(InputType || (InputType = {}));
34
30
  /**
35
- * The hash algorithm used for the checksum.
36
- *
37
- * Supported cryptographic hash algorithms for checksums and integrity verification.
31
+ * Supported cryptographic hash algorithms for checksums and integrity verification. blake3 covers
32
+ * container-image and other artifact digests that use it.
38
33
  */
39
34
  export var HashAlgorithm;
40
35
  (function (HashAlgorithm) {
36
+ HashAlgorithm["Blake3"] = "blake3";
41
37
  HashAlgorithm["Sha256"] = "sha256";
42
38
  HashAlgorithm["Sha384"] = "sha384";
43
39
  HashAlgorithm["Sha512"] = "sha512";
@@ -90,15 +86,9 @@ export var ControlType;
90
86
  ControlType["Technical"] = "technical";
91
87
  })(ControlType || (ControlType = {}));
92
88
  /**
93
- * Qualitative severity band corresponding to baseScore. CVSS 2.0 does not natively use
94
- * 'none' or 'critical' bands; map accordingly when populating.
95
- *
96
89
  * Qualitative CVSS severity band. Aligns with FIRST/NVD bands: none=0.0, low=0.1-3.9,
97
- * medium=4.0-6.9, high=7.0-8.9, critical=9.0-10.0. Distinct from the broader Severity enum
98
- * used on Requirement_Core (which includes 'informational').
99
- *
100
- * Qualitative severity band corresponding to computedScore. Same band convention as
101
- * baseSeverity.
90
+ * medium=4.0-6.9, high=7.0-8.9, critical=9.0-10.0. Distinct from the broader Severity enum used on
91
+ * Requirement_Core (which includes 'informational').
102
92
  */
103
93
  export var CVSSSeverity;
104
94
  (function (CVSSSeverity) {
@@ -120,29 +110,19 @@ export var Version;
120
110
  Version["The40"] = "4.0";
121
111
  })(Version || (Version = {}));
122
112
  /**
123
- * The type of the most recent non-expired override or POAM governing this requirement.
124
- * Indicates why the requirement is in its current state (e.g., waiver, falsePositive,
125
- * riskAdjustment) or what remediation is being tracked (poam). Absent when no overrides or
126
- * POAMs apply.
127
- *
128
- * The type of amendment, aligned with FedRAMP deviation request categories. 'waiver': risk
129
- * accepted by Authorizing Official. 'attestation': manually verified by assessor. 'poam':
130
- * remediation tracked (no status change). 'inherited': control provided by another
131
- * component or system. 'falsePositive': scanner incorrectly identified a finding — for
132
- * compliance scans (STIG, CIS), the check actually passes, so status is typically set to
133
- * 'passed'; for vulnerability scans (CVE, SCA), the flagged vulnerability does not apply to
134
- * this system, so status is typically set to 'notApplicable'. The disposition field on the
135
- * requirement distinguishes false positives from genuinely not-applicable findings.
136
- * 'riskAdjustment': impact score adjusted based on environmental context (FedRAMP Risk
137
- * Adjustment); does not change pass/fail status, only impact via the impact field.
138
- * 'operationalRequirement': deviation required by operational constraints (FedRAMP
139
- * Operational Requirement); the finding cannot be remediated because the system requires
140
- * the affected functionality. Remains an open risk. Migration note: 'exception' was removed
141
- * in v3.1.0 — use 'waiver' with status 'notApplicable' instead.
142
- *
143
- * The type of override applied to this requirement.
144
- *
145
- * The type of amendment.
113
+ * The type of amendment, aligned with FedRAMP deviation request categories. 'waiver': risk accepted
114
+ * by Authorizing Official. 'attestation': manually verified by assessor. 'poam': remediation
115
+ * tracked (no status change). 'inherited': control provided by another component or system.
116
+ * 'falsePositive': scanner incorrectly identified a finding — for compliance scans (STIG, CIS), the
117
+ * check actually passes, so status is typically set to 'passed'; for vulnerability scans (CVE,
118
+ * SCA), the flagged vulnerability does not apply to this system, so status is typically set to
119
+ * 'notApplicable'. The disposition field on the requirement distinguishes false positives from
120
+ * genuinely not-applicable findings. 'riskAdjustment': impact score adjusted based on environmental
121
+ * context (FedRAMP Risk Adjustment); does not change pass/fail status, only impact via the impact
122
+ * field. 'operationalRequirement': deviation required by operational constraints (FedRAMP
123
+ * Operational Requirement); the finding cannot be remediated because the system requires the
124
+ * affected functionality. Remains an open risk. Migration note: 'exception' was removed in v3.1.0 —
125
+ * use 'waiver' with status 'notApplicable' instead.
146
126
  */
147
127
  export var OverrideType;
148
128
  (function (OverrideType) {
@@ -155,20 +135,9 @@ export var OverrideType;
155
135
  OverrideType["Waiver"] = "waiver";
156
136
  })(OverrideType || (OverrideType = {}));
157
137
  /**
158
- * The current effective compliance status of this requirement after applying the most
159
- * recent non-expired override with a status field, or computed from results (worst-wins) if
160
- * no status-bearing overrides exist.
161
- *
162
- * The status of an individual test result. 'notApplicable' indicates the requirement does
163
- * not apply to the target. 'notReviewed' indicates the requirement was not assessed (e.g.,
164
- * requires manual verification).
165
- *
166
- * The status of this test within the requirement. Example: 'failed'.
167
- *
168
- * The new status this override sets for the requirement. Optional when only impact is being
169
- * overridden.
170
- *
171
- * The new status this amendment sets. Optional when only impact is being overridden.
138
+ * The status of an individual test result. 'notApplicable' indicates the requirement does not apply
139
+ * to the target. 'notReviewed' indicates the requirement was not assessed (e.g., requires manual
140
+ * verification).
172
141
  */
173
142
  export var ResultStatus;
174
143
  (function (ResultStatus) {
@@ -180,11 +149,16 @@ export var ResultStatus;
180
149
  })(ResultStatus || (ResultStatus = {}));
181
150
  /**
182
151
  * The type of identifier. Use 'email' for email addresses, 'username' for user accounts,
183
- * 'system' for automated systems, 'simple' for basic string identifiers without additional
184
- * classification, or 'other' for custom identity systems.
152
+ * 'system' for deterministic non-interactive automation (CI jobs, cron, scanners), 'agent'
153
+ * for an AI/LLM agent acting with autonomy — kept distinct from 'system' so auditors can
154
+ * apply AI-specific scrutiny (e.g. 'an LLM proposed this' vs a deterministic job) and
155
+ * satisfy AI-source disclosure under frameworks like the EU AI Act and NIST AI RMF,
156
+ * 'simple' for basic string identifiers without additional classification, or 'other' for
157
+ * custom identity systems.
185
158
  */
186
159
  export var IdentityType;
187
160
  (function (IdentityType) {
161
+ IdentityType["Agent"] = "agent";
188
162
  IdentityType["Email"] = "email";
189
163
  IdentityType["Other"] = "other";
190
164
  IdentityType["Simple"] = "simple";
@@ -225,9 +199,6 @@ export var POAMType;
225
199
  POAMType["VendorDependency"] = "vendorDependency";
226
200
  })(POAMType || (POAMType = {}));
227
201
  /**
228
- * Explicit severity rating. Typically derived from impact score but provided explicitly for
229
- * clarity.
230
- *
231
202
  * Severity rating for a requirement. Typically derived from the numeric impact score.
232
203
  */
233
204
  export var Severity;
@@ -239,28 +210,21 @@ export var Severity;
239
210
  Severity["Medium"] = "medium";
240
211
  })(Severity || (Severity = {}));
241
212
  /**
242
- * Structured controlled-vocabulary classification for why this override applies.
243
- * Complements (does not replace) the free-text 'reason' field. Most useful on falsePositive
244
- * and attestation overrides where the structured category enables filtering and lossless
245
- * round-trip with VEX / OSCAL / FedRAMP DR. See the Justification primitive for the
246
- * precedent vocabulary and rationale.
247
- *
248
- * Structured controlled-vocabulary reason for an override, complementing the free-text
249
- * 'reason' field. 'reason' carries the human-readable rationale an auditor reads;
250
- * 'justification' carries the machine-readable category enabling filtering, aggregation,
251
- * and lossless round-trip with structured ecosystems (VEX, OSCAL, FedRAMP DR). Both fields
252
- * may be present simultaneously and are NOT redundant: 'reason' explains the specific
253
- * circumstance; 'justification' classifies it. Authors SHOULD populate both when a
254
- * controlled-vocabulary value applies — the enum value alone is not self-explanatory to an
255
- * auditor. The vocabulary is drawn from the VEX ecosystem: the first five values are common
256
- * across OpenVEX, CSAF VEX, and CycloneDX VEX; the remaining six (requires_configuration /
257
- * requires_dependency / requires_environment / protected_by_compiler / protected_at_runtime
258
- * / protected_at_perimeter) are CycloneDX-specific and describe why the vulnerable code
259
- * path is unreachable in the deployed configuration. The enum is extended additively across
260
- * schema versions as other ecosystems' controlled vocabularies are integrated; documents
261
- * using values added in a newer schema version will fail validation against an older
262
- * schema. Consumers SHOULD validate against the schema version declared by the document
263
- * ($schema) rather than assume a fixed vocabulary.
213
+ * Structured controlled-vocabulary reason for an override, complementing the free-text 'reason'
214
+ * field. 'reason' carries the human-readable rationale an auditor reads; 'justification' carries
215
+ * the machine-readable category enabling filtering, aggregation, and lossless round-trip with
216
+ * structured ecosystems (VEX, OSCAL, FedRAMP DR). Both fields may be present simultaneously and are
217
+ * NOT redundant: 'reason' explains the specific circumstance; 'justification' classifies it.
218
+ * Authors SHOULD populate both when a controlled-vocabulary value applies — the enum value alone is
219
+ * not self-explanatory to an auditor. The vocabulary is drawn from the VEX ecosystem: the first
220
+ * five values are common across OpenVEX, CSAF VEX, and CycloneDX VEX; the remaining six
221
+ * (requires_configuration / requires_dependency / requires_environment / protected_by_compiler /
222
+ * protected_at_runtime / protected_at_perimeter) are CycloneDX-specific and describe why the
223
+ * vulnerable code path is unreachable in the deployed configuration. The enum is extended
224
+ * additively across schema versions as other ecosystems' controlled vocabularies are integrated;
225
+ * documents using values added in a newer schema version will fail validation against an older
226
+ * schema. Consumers SHOULD validate against the schema version declared by the document ($schema)
227
+ * rather than assume a fixed vocabulary.
264
228
  */
265
229
  export var Justification;
266
230
  (function (Justification) {
@@ -277,19 +241,12 @@ export var Justification;
277
241
  Justification["VulnerableCodeNotPresent"] = "vulnerable_code_not_present";
278
242
  })(Justification || (Justification = {}));
279
243
  /**
280
- * How this requirement is intended to be verified. Disambiguates the two cases that null
281
- * 'code' overloads: 'manual-by-design' (the requirement is statement-form and not amenable
282
- * to automation, e.g. FedRAMP 20x KSIs); 'manual-pending-automation' (automation could
283
- * exist but does not yet, e.g. a STIG rule lacking a fix). 'automated' = a check exists and
284
- * runs without operator action; 'hybrid' = part automated, part manual. Optional: when
285
- * omitted, consumers should not infer a default.
286
- *
287
- * How a requirement is intended to be verified. Disambiguates the two cases that null
288
- * 'code' overloads: 'manual-by-design' (the requirement is statement-form and not amenable
289
- * to automation, e.g. FedRAMP 20x KSIs); 'manual-pending-automation' (automation could
290
- * exist but does not yet, e.g. a STIG rule lacking a fix). 'automated' = a check exists and
291
- * runs without operator action; 'hybrid' = part automated, part manual. Named '_Enum' to
292
- * disambiguate from the unrelated Verification_Method DID-context struct.
244
+ * How a requirement is intended to be verified. Disambiguates the two cases that null 'code'
245
+ * overloads: 'manual-by-design' (the requirement is statement-form and not amenable to automation,
246
+ * e.g. FedRAMP 20x KSIs); 'manual-pending-automation' (automation could exist but does not yet,
247
+ * e.g. a STIG rule lacking a fix). 'automated' = a check exists and runs without operator action;
248
+ * 'hybrid' = part automated, part manual. Named '_Enum' to disambiguate from the unrelated
249
+ * Verification_Method DID-context struct.
293
250
  */
294
251
  export var VerificationMethodEnum;
295
252
  (function (VerificationMethodEnum) {
@@ -298,6 +255,29 @@ export var VerificationMethodEnum;
298
255
  VerificationMethodEnum["ManualByDesign"] = "manual-by-design";
299
256
  VerificationMethodEnum["ManualPendingAutomation"] = "manual-pending-automation";
300
257
  })(VerificationMethodEnum || (VerificationMethodEnum = {}));
258
+ /**
259
+ * Relationship of this dataset to baseDatasetRefs, parallel to the model extension's
260
+ * adaptationType. Minimal + extensible: filtered (subset by rule), augmented
261
+ * (added/synthesized records), merged (union of sources), sampled (statistical draw).
262
+ */
263
+ export var DatasetDerivationType;
264
+ (function (DatasetDerivationType) {
265
+ DatasetDerivationType["Augmented"] = "augmented";
266
+ DatasetDerivationType["Filtered"] = "filtered";
267
+ DatasetDerivationType["Merged"] = "merged";
268
+ DatasetDerivationType["Sampled"] = "sampled";
269
+ })(DatasetDerivationType || (DatasetDerivationType = {}));
270
+ /**
271
+ * Lineage relationship to baseModelRef, adopting Hugging Face's base_model_relation
272
+ * vocabulary (the only typed lineage enum in the ecosystem).
273
+ */
274
+ export var ModelAdaptationType;
275
+ (function (ModelAdaptationType) {
276
+ ModelAdaptationType["Adapter"] = "adapter";
277
+ ModelAdaptationType["Finetune"] = "finetune";
278
+ ModelAdaptationType["Merge"] = "merge";
279
+ ModelAdaptationType["Quantized"] = "quantized";
280
+ })(ModelAdaptationType || (ModelAdaptationType = {}));
301
281
  export var CloudProvider;
302
282
  (function (CloudProvider) {
303
283
  CloudProvider["Aws"] = "aws";
@@ -307,18 +287,12 @@ export var CloudProvider;
307
287
  CloudProvider["Other"] = "other";
308
288
  })(CloudProvider || (CloudProvider = {}));
309
289
  /**
310
- * Format of the SBOM (embedded or referenced). Required when sbom or sbomRef is present.
311
- */
312
- export var SBOMFormat;
313
- (function (SBOMFormat) {
314
- SBOMFormat["Cyclonedx"] = "cyclonedx";
315
- SBOMFormat["Spdx"] = "spdx";
316
- })(SBOMFormat || (SBOMFormat = {}));
317
- /**
318
- * Component type discriminator. Same values as Target types.
290
+ * Component type discriminator. Same values as Target types, plus aiModel and dataset (thin
291
+ * AI subject components whose detail lives in an attached ai-model / dataset BOM).
319
292
  */
320
293
  export var TargetType;
321
294
  (function (TargetType) {
295
+ TargetType["AIModel"] = "aiModel";
322
296
  TargetType["Application"] = "application";
323
297
  TargetType["Artifact"] = "artifact";
324
298
  TargetType["CloudAccount"] = "cloudAccount";
@@ -327,13 +301,12 @@ export var TargetType;
327
301
  TargetType["ContainerInstance"] = "containerInstance";
328
302
  TargetType["ContainerPlatform"] = "containerPlatform";
329
303
  TargetType["Database"] = "database";
304
+ TargetType["Dataset"] = "dataset";
330
305
  TargetType["Host"] = "host";
331
306
  TargetType["Network"] = "network";
332
307
  TargetType["Repository"] = "repository";
333
308
  })(TargetType || (TargetType = {}));
334
309
  /**
335
- * The category of this annotation.
336
- *
337
310
  * The category of an annotation attached to a comparison.
338
311
  */
339
312
  export var AnnotationCategory;
@@ -357,13 +330,11 @@ export var BaselineDiffState;
357
330
  BaselineDiffState["Updated"] = "updated";
358
331
  })(BaselineDiffState || (BaselineDiffState = {}));
359
332
  /**
360
- * The mode of comparison being performed.
361
- *
362
- * The mode of comparison. 'temporal' compares the same target over time. 'baseline'
363
- * compares against a golden reference. 'fleet' compares across multiple systems.
364
- * 'multiSource' compares outputs from different scanners. 'baselineEvolution' compares two
365
- * baseline documents to detect requirement changes between versions. 'systemDrift' compares
366
- * two system documents to detect component-level changes.
333
+ * The mode of comparison. 'temporal' compares the same target over time. 'baseline' compares
334
+ * against a golden reference. 'fleet' compares across multiple systems. 'multiSource' compares
335
+ * outputs from different scanners. 'baselineEvolution' compares two baseline documents to detect
336
+ * requirement changes between versions. 'systemDrift' compares two system documents to detect
337
+ * component-level changes.
367
338
  */
368
339
  export var ComparisonMode;
369
340
  (function (ComparisonMode) {
@@ -402,8 +373,6 @@ export var ChangeReason;
402
373
  ChangeReason["TargetChanged"] = "targetChanged";
403
374
  })(ChangeReason || (ChangeReason = {}));
404
375
  /**
405
- * How the conflict was resolved.
406
- *
407
376
  * How a conflict between multiple scanner results was resolved.
408
377
  */
409
378
  export var ConflictResolution;
@@ -414,13 +383,9 @@ export var ConflictResolution;
414
383
  ConflictResolution["Unresolved"] = "unresolved";
415
384
  })(ConflictResolution || (ConflictResolution = {}));
416
385
  /**
417
- * The strategy that was used to match this requirement across sources.
418
- *
419
- * The strategy used to match requirements across sources. 'exactId' matches by identical
420
- * IDs. 'mappedId' uses an ID mapping table. 'cciMatch'/'nistMatch' match by framework
421
- * identifiers. 'fuzzyTitle'/'fuzzyContent' use text similarity.
422
- *
423
- * The primary strategy used to match requirements across sources.
386
+ * The strategy used to match requirements across sources. 'exactId' matches by identical IDs.
387
+ * 'mappedId' uses an ID mapping table. 'cciMatch'/'nistMatch' match by framework identifiers.
388
+ * 'fuzzyTitle'/'fuzzyContent' use text similarity.
424
389
  */
425
390
  export var MatchStrategy;
426
391
  (function (MatchStrategy) {
@@ -432,12 +397,10 @@ export var MatchStrategy;
432
397
  MatchStrategy["NISTMatch"] = "nistMatch";
433
398
  })(MatchStrategy || (MatchStrategy = {}));
434
399
  /**
435
- * The state of this requirement in the comparison.
436
- *
437
- * SARIF-compatible vocabulary extended for security. 'new' = present only in new source,
438
- * 'absent' = present only in old, 'unchanged' = same effective status, 'updated' = status
439
- * changed (generic), 'fixed' = was failing now passing, 'regressed' = was passing now
440
- * failing, 'moved' = reorganized same content, 'split'/'merged' = reserved for v1.1.
400
+ * SARIF-compatible vocabulary extended for security. 'new' = present only in new source, 'absent' =
401
+ * present only in old, 'unchanged' = same effective status, 'updated' = status changed (generic),
402
+ * 'fixed' = was failing now passing, 'regressed' = was passing now failing, 'moved' = reorganized
403
+ * same content, 'split'/'merged' = reserved for v1.1.
441
404
  */
442
405
  export var RequirementState;
443
406
  (function (RequirementState) {
@@ -478,8 +441,6 @@ export var OriginalFormat;
478
441
  OriginalFormat["Xccdf"] = "xccdf";
479
442
  })(OriginalFormat || (OriginalFormat = {}));
480
443
  /**
481
- * The role of this source in the comparison.
482
- *
483
444
  * The role of a source document in the comparison.
484
445
  */
485
446
  export var SourceRole;
@@ -491,8 +452,6 @@ export var SourceRole;
491
452
  SourceRole["System"] = "system";
492
453
  })(SourceRole || (SourceRole = {}));
493
454
  /**
494
- * Current Authorization to Operate (ATO) status.
495
- *
496
455
  * Authorization to Operate (ATO) status for the system.
497
456
  */
498
457
  export var AuthorizationStatus;
@@ -505,8 +464,6 @@ export var AuthorizationStatus;
505
464
  AuthorizationStatus["Revoked"] = "revoked";
506
465
  })(AuthorizationStatus || (AuthorizationStatus = {}));
507
466
  /**
508
- * FIPS 199 security categorization (impact level).
509
- *
510
467
  * FIPS 199 security categorization level (impact level).
511
468
  */
512
469
  export var CategorizationLevel;
@@ -536,10 +493,8 @@ export var Direction;
536
493
  Direction["Unidirectional"] = "unidirectional";
537
494
  })(Direction || (Direction = {}));
538
495
  /**
539
- * The type of assessment plan.
540
- *
541
- * The type of assessment. 'automated' for scanner-driven, 'manual' for human-performed,
542
- * 'hybrid' for both.
496
+ * The type of assessment. 'automated' for scanner-driven, 'manual' for human-performed, 'hybrid'
497
+ * for both.
543
498
  */
544
499
  export var PlanType;
545
500
  (function (PlanType) {
@@ -548,17 +503,18 @@ export var PlanType;
548
503
  PlanType["Manual"] = "manual";
549
504
  })(PlanType || (PlanType = {}));
550
505
  /**
551
- * The type of HDF document being referenced.
552
- *
553
- * The type of document referenced in the evidence package.
506
+ * The type of document referenced in the evidence package. 'bom' covers any
507
+ * Bill-of-Materials/manifest document (SBOM, AI model/dataset, and reserved future kinds) — its
508
+ * specific kind is carried by the referenced document's bomType, not by a per-kind Content_Type
509
+ * value.
554
510
  */
555
511
  export var ContentType;
556
512
  (function (ContentType) {
513
+ ContentType["BOM"] = "bom";
557
514
  ContentType["HdfAmendments"] = "hdf-amendments";
558
515
  ContentType["HdfBaseline"] = "hdf-baseline";
559
516
  ContentType["HdfComparison"] = "hdf-comparison";
560
517
  ContentType["HdfPlan"] = "hdf-plan";
561
518
  ContentType["HdfResults"] = "hdf-results";
562
519
  ContentType["HdfSystem"] = "hdf-system";
563
- ContentType["Sbom"] = "sbom";
564
520
  })(ContentType || (ContentType = {}));