@slicedearth/whoisleuth-cli 2.5.1 → 2.6.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 (122) hide show
  1. package/DISCLOSURE +1 -1
  2. package/cli/artifact-validation/case-response.mjs +51 -8
  3. package/cli/artifact-validation/lookup-evidence.mjs +15 -1
  4. package/cli/artifact-validation/signed-review.mjs +2 -51
  5. package/cli/artifact-verify.mjs +9 -2
  6. package/cli/bulk-command-runner.mjs +4 -6
  7. package/cli/case-command.mjs +79 -3
  8. package/cli/case-pack.mjs +7 -2
  9. package/cli/command-definition.mjs +2 -1
  10. package/cli/discovery-scan-command-runner.mjs +4 -6
  11. package/cli/domain-feed.mjs +61 -0
  12. package/cli/formatters/json.mjs +1 -13
  13. package/cli/indicator-set-command.mjs +1 -2
  14. package/cli/intake-command.mjs +43 -3
  15. package/cli/investigation-artifacts.mjs +2 -3
  16. package/cli/investigation-package-review.mjs +2 -0
  17. package/cli/local-mmdb-review.mjs +27 -4
  18. package/cli/lookup-command-runner.mjs +1 -0
  19. package/cli/offline-evidence-review.mjs +51 -5
  20. package/cli/review-arguments.mjs +3 -2
  21. package/cli/review-command-definitions.mjs +14 -8
  22. package/cli/review-command-runner.mjs +6 -3
  23. package/cli/risk-calibration.mjs +6 -4
  24. package/cli/selected-input-worker.mjs +12 -2
  25. package/cli/support-command-runner.mjs +3 -3
  26. package/cli/watchlist-review.mjs +43 -0
  27. package/cli/workflow-arguments.mjs +14 -0
  28. package/cli/workflow-command-definitions.mjs +26 -1
  29. package/cli/workflow-command-runner.mjs +32 -0
  30. package/docs/cli.md +99 -2
  31. package/docs/contextual-reviews.md +28 -5
  32. package/docs/infrastructure-observations.md +126 -0
  33. package/docs/offline-intake-context.md +213 -0
  34. package/lib/credential-form-attribution.mjs +136 -0
  35. package/lib/credential-surface-profile.mjs +6 -2
  36. package/lib/dns-delegation-health.mjs +23 -7
  37. package/lib/dns-intelligence.mjs +18 -4
  38. package/lib/domain-posture-analysis.mjs +53 -2
  39. package/lib/domain-posture-parsers.mjs +9 -0
  40. package/lib/domain-posture.mjs +29 -10
  41. package/lib/evidence-export-privacy.mjs +5 -2
  42. package/lib/evidence-report.mjs +1 -0
  43. package/lib/favicon.mjs +13 -4
  44. package/lib/html-signals.mjs +6 -0
  45. package/lib/lookup-child-profile-contract.mjs +28 -11
  46. package/lib/lookup-response-contract.mjs +1 -0
  47. package/lib/operation-budget.mjs +4 -0
  48. package/lib/service-binding-dns.mjs +19 -2
  49. package/lib/sslbl-certificates.generated.mjs +138 -137
  50. package/lib/static-html-analysis.mjs +32 -4
  51. package/lib/technology-evidence-role.mjs +1 -51
  52. package/lib/tls-intelligence.mjs +30 -5
  53. package/lib/website-enrichment.mjs +39 -23
  54. package/lib/whois-chain.mjs +12 -3
  55. package/lib/whois-common-formats.mjs +3 -1
  56. package/lib/whois-contacts.mjs +13 -2
  57. package/package.json +7 -5
  58. package/packages/analysis/risk-scoring.mjs +12 -9
  59. package/packages/cases/case-containment-handoff.mjs +195 -0
  60. package/packages/cases/case-evidence-links.mjs +16 -0
  61. package/packages/cases/case-evidence-model.mjs +14 -3
  62. package/packages/cases/case-object-coverage.mjs +33 -0
  63. package/packages/cases/case-packet-correction.mjs +106 -0
  64. package/packages/cases/case-recheck-model.mjs +35 -5
  65. package/packages/cases/case-record-operations.mjs +74 -9
  66. package/packages/cases/case-record-projection.mjs +15 -3
  67. package/packages/cases/case-record-version-input.mjs +23 -1
  68. package/packages/cases/case-report.mjs +30 -0
  69. package/packages/cases/case-requested-evidence.mjs +1 -1
  70. package/packages/cases/case-response-actions.mjs +57 -1
  71. package/packages/cases/case-response-model.mjs +7 -0
  72. package/packages/cases/case-response-object.mjs +119 -0
  73. package/packages/cases/case-response-outcomes.mjs +81 -14
  74. package/packages/cases/case-response-packet-render.mjs +22 -3
  75. package/packages/cases/case-response-packet.mjs +30 -2
  76. package/packages/cases/case-response-review-inputs.mjs +48 -7
  77. package/packages/cases/case-workflow-metadata.mjs +1 -9
  78. package/packages/contracts/analyst-interchange.mjs +7 -5
  79. package/packages/contracts/candidate-watch-review.mjs +54 -0
  80. package/packages/contracts/case-portability.mjs +260 -42
  81. package/packages/contracts/cli-command-semantics.mjs +3 -0
  82. package/packages/contracts/context-review.mjs +2 -1
  83. package/packages/contracts/external-observation-interchange.mjs +96 -28
  84. package/packages/contracts/lookup-evidence.mjs +3 -2
  85. package/packages/contracts/message-intake.mjs +7 -1
  86. package/packages/contracts/risk-calibration.mjs +44 -29
  87. package/packages/contracts/schema-lifecycle.mjs +3 -1
  88. package/packages/contracts/web-capture.mjs +1 -1
  89. package/packages/contracts/workspace-portability.mjs +86 -16
  90. package/packages/evidence/collection-quality.mjs +1 -1
  91. package/packages/evidence/credential-form-attribution.mjs +60 -0
  92. package/packages/evidence/image-regions.mjs +15 -0
  93. package/packages/evidence/record-identity.mjs +60 -16
  94. package/packages/evidence/technology-evidence-role.mjs +51 -0
  95. package/packages/interchange/external-findings-import.mjs +32 -17
  96. package/packages/interchange/json-output.mjs +14 -0
  97. package/packages/interchange/managed-indicator-export.mjs +3 -2
  98. package/packages/interchange/managed-indicator-set.mjs +13 -0
  99. package/packages/investigation/acquisition-decision-packet.mjs +78 -0
  100. package/packages/investigation/context-review.mjs +3 -3
  101. package/packages/investigation/document-intake.mjs +9 -3
  102. package/packages/investigation/domain-history-review.mjs +43 -11
  103. package/packages/investigation/domain-transition-review.mjs +2 -0
  104. package/packages/investigation/infrastructure-observation.mjs +234 -0
  105. package/packages/investigation/intake-context.mjs +284 -0
  106. package/packages/investigation/intake-indicators.mjs +116 -0
  107. package/packages/investigation/intake-phones.mjs +155 -0
  108. package/packages/investigation/intake-report.mjs +2 -1
  109. package/packages/investigation/investigation-manifest.mjs +33 -7
  110. package/packages/investigation/link-intake.mjs +38 -8
  111. package/packages/investigation/message-intake.mjs +55 -15
  112. package/packages/monitoring/domain-feed.mjs +321 -0
  113. package/packages/workspace/brand-candidate-workflow.mjs +351 -0
  114. package/packages/workspace/brand-keyword-campaign.mjs +231 -0
  115. package/packages/workspace/brand-profile-model.mjs +46 -2
  116. package/packages/workspace/bulk-session-model.mjs +4 -0
  117. package/packages/workspace/candidate-watch-handoff.mjs +195 -0
  118. package/packages/workspace/detection-rule-model.mjs +10 -2
  119. package/packages/workspace/shortlist-model.mjs +10 -2
  120. package/packages/workspace/watchlist-history.mjs +31 -4
  121. package/packages/workspace/watchlist-store.mjs +136 -7
  122. package/third-party-notices.txt +29 -29
@@ -54,6 +54,7 @@ export const CASE_PORTABILITY_IDENTITY_CONSTANTS = Object.freeze([
54
54
  'WORKSPACE_ARCHIVE_SCHEMA',
55
55
  'PUBLIC_WORKSPACE_ARCHIVE_VERSION',
56
56
  'WORKSPACE_ARCHIVE_VERSION',
57
+ 'WORKSPACE_ARCHIVE_WRITER_FIXTURE_ID',
57
58
  'SUPPORTED_WORKSPACE_ARCHIVE_VERSIONS',
58
59
  'PUBLIC_WORKSPACE_ARCHIVE_SECTION_IDS',
59
60
  'WORKSPACE_ARCHIVE_SECTION_IDS',
@@ -161,13 +162,17 @@ export const PUBLISHED_V2_2_CASE_SCHEMA_VERSION = 14;
161
162
  export const PUBLISHED_V2_3_CASE_SCHEMA_VERSION = 15;
162
163
  export const INCIDENT_CASE_SCHEMA_VERSION = 16;
163
164
  export const EVIDENCE_FOLLOW_UP_CASE_SCHEMA_VERSION = 17;
164
- export const CASE_SCHEMA_VERSION = EVIDENCE_FOLLOW_UP_CASE_SCHEMA_VERSION;
165
+ export const OBJECT_RESPONSE_CASE_SCHEMA_VERSION = 18;
166
+ export const DELIVERY_CORRECTION_CASE_SCHEMA_VERSION = 19;
167
+ export const CASE_SCHEMA_VERSION = DELIVERY_CORRECTION_CASE_SCHEMA_VERSION;
165
168
  export const CASE_BROWSER_SUPPORTED_VERSIONS = Object.freeze([
166
169
  PUBLIC_CASE_SCHEMA_VERSION,
167
170
  PUBLISHED_V2_CASE_SCHEMA_VERSION,
168
171
  PUBLISHED_V2_2_CASE_SCHEMA_VERSION,
169
172
  PUBLISHED_V2_3_CASE_SCHEMA_VERSION,
170
173
  INCIDENT_CASE_SCHEMA_VERSION,
174
+ EVIDENCE_FOLLOW_UP_CASE_SCHEMA_VERSION,
175
+ OBJECT_RESPONSE_CASE_SCHEMA_VERSION,
171
176
  CASE_SCHEMA_VERSION,
172
177
  ]);
173
178
  export const CASE_IMPORT_VERSIONS = CASE_BROWSER_SUPPORTED_VERSIONS;
@@ -176,12 +181,16 @@ export const PUBLIC_CASE_REPORT_SCHEMA_VERSION = 8;
176
181
  export const PUBLISHED_V2_CASE_REPORT_SCHEMA_VERSION = 9;
177
182
  export const PUBLISHED_V2_2_CASE_REPORT_SCHEMA_VERSION = 10;
178
183
  export const PUBLISHED_V2_3_CASE_REPORT_SCHEMA_VERSION = 11;
179
- export const CASE_REPORT_SCHEMA_VERSION = 13;
184
+ export const EVIDENCE_FOLLOW_UP_CASE_REPORT_SCHEMA_VERSION = 13;
185
+ export const OBJECT_RESPONSE_CASE_REPORT_SCHEMA_VERSION = 14;
186
+ export const CASE_REPORT_SCHEMA_VERSION = 15;
180
187
  export const CASE_REPORT_OUTPUT_VERSIONS = Object.freeze([
181
188
  PUBLISHED_V2_CASE_REPORT_SCHEMA_VERSION,
182
189
  PUBLISHED_V2_2_CASE_REPORT_SCHEMA_VERSION,
183
190
  PUBLISHED_V2_3_CASE_REPORT_SCHEMA_VERSION,
184
191
  LATEST_PUBLIC_CASE_REPORT_SCHEMA_VERSION,
192
+ EVIDENCE_FOLLOW_UP_CASE_REPORT_SCHEMA_VERSION,
193
+ OBJECT_RESPONSE_CASE_REPORT_SCHEMA_VERSION,
185
194
  CASE_REPORT_SCHEMA_VERSION,
186
195
  ]);
187
196
  export const CASE_RESPONSE_PACKET_SCHEMA = 'whoisleuth.case-response-packet';
@@ -189,13 +198,17 @@ export const PUBLIC_CASE_RESPONSE_PACKET_VERSION = 6;
189
198
  export const PUBLISHED_V2_CASE_RESPONSE_PACKET_VERSION = 7;
190
199
  export const PUBLISHED_V2_2_CASE_RESPONSE_PACKET_VERSION = 8;
191
200
  export const PUBLISHED_V2_3_CASE_RESPONSE_PACKET_VERSION = 9;
192
- export const CASE_RESPONSE_PACKET_VERSION = 11;
201
+ export const EVIDENCE_FOLLOW_UP_CASE_RESPONSE_PACKET_VERSION = 11;
202
+ export const OBJECT_RESPONSE_CASE_PACKET_VERSION = 12;
203
+ export const CASE_RESPONSE_PACKET_VERSION = 13;
193
204
  export const CASE_RESPONSE_PACKET_OUTPUT_VERSIONS = Object.freeze([
194
205
  PUBLIC_CASE_RESPONSE_PACKET_VERSION,
195
206
  PUBLISHED_V2_CASE_RESPONSE_PACKET_VERSION,
196
207
  PUBLISHED_V2_2_CASE_RESPONSE_PACKET_VERSION,
197
208
  PUBLISHED_V2_3_CASE_RESPONSE_PACKET_VERSION,
198
209
  LATEST_PUBLIC_CASE_RESPONSE_PACKET_VERSION,
210
+ EVIDENCE_FOLLOW_UP_CASE_RESPONSE_PACKET_VERSION,
211
+ OBJECT_RESPONSE_CASE_PACKET_VERSION,
199
212
  CASE_RESPONSE_PACKET_VERSION,
200
213
  ]);
201
214
  export const SUPPORTED_CASE_RESPONSE_PACKET_VERSIONS = CASE_RESPONSE_PACKET_OUTPUT_VERSIONS;
@@ -203,17 +216,21 @@ export const CASE_RESPONSE_REVIEW_INPUTS_SCHEMA = 'whoisleuth.case-response-revi
203
216
  export const PUBLISHED_V2_CASE_RESPONSE_REVIEW_INPUTS_VERSION = 1;
204
217
  export const PUBLISHED_V2_2_CASE_RESPONSE_REVIEW_INPUTS_VERSION = 2;
205
218
  export const PUBLISHED_V2_3_CASE_RESPONSE_REVIEW_INPUTS_VERSION = 3;
206
- export const CASE_RESPONSE_REVIEW_INPUTS_VERSION = 5;
219
+ export const EVIDENCE_FOLLOW_UP_CASE_RESPONSE_REVIEW_INPUTS_VERSION = 5;
220
+ export const OBJECT_RESPONSE_CASE_REVIEW_INPUTS_VERSION = 6;
221
+ export const CASE_RESPONSE_REVIEW_INPUTS_VERSION = 7;
207
222
  export const SUPPORTED_CASE_RESPONSE_REVIEW_INPUTS_VERSIONS = Object.freeze([
208
223
  PUBLISHED_V2_CASE_RESPONSE_REVIEW_INPUTS_VERSION,
209
224
  PUBLISHED_V2_2_CASE_RESPONSE_REVIEW_INPUTS_VERSION,
210
225
  PUBLISHED_V2_3_CASE_RESPONSE_REVIEW_INPUTS_VERSION,
211
226
  LATEST_PUBLIC_CASE_RESPONSE_REVIEW_INPUTS_VERSION,
227
+ EVIDENCE_FOLLOW_UP_CASE_RESPONSE_REVIEW_INPUTS_VERSION,
228
+ OBJECT_RESPONSE_CASE_REVIEW_INPUTS_VERSION,
212
229
  CASE_RESPONSE_REVIEW_INPUTS_VERSION,
213
230
  ]);
214
231
  export const CLI_CASE_PACK_SCHEMA = 'whoisleuth.cli.case-pack';
215
232
  export const CLI_CASE_PACK_VERSION = 2;
216
- export const CLI_CASE_PACK_WRITER_FIXTURE_ID = 'cli-case-pack-v2-case-v17-current';
233
+ export const CLI_CASE_PACK_WRITER_FIXTURE_ID = 'cli-case-pack-v2-case-v19-current';
217
234
  export const CLI_CASE_PACK_INPUT_CASE_VERSIONS = Object.freeze(CASE_IMPORT_VERSIONS.filter((version) => version >= PUBLISHED_V2_3_CASE_SCHEMA_VERSION));
218
235
  export const SUPPORTED_CLI_CASE_PACK_VERSIONS = Object.freeze([CLI_CASE_PACK_VERSION]);
219
236
  export const CLI_CASE_PACK_ROOT_KEYS = Object.freeze(['version', 'exportedAt', 'cases', 'packet', 'integrity']);
@@ -233,6 +250,8 @@ export const CLI_CASE_PACK_CASE_REPORT_EPOCHS = Object.freeze([
233
250
  Object.freeze({ caseVersions: Object.freeze([PUBLISHED_V2_2_CASE_SCHEMA_VERSION]), reportVersions: Object.freeze([PUBLISHED_V2_2_CASE_REPORT_SCHEMA_VERSION]) }),
234
251
  Object.freeze({ caseVersions: Object.freeze([PUBLISHED_V2_3_CASE_SCHEMA_VERSION]), reportVersions: Object.freeze([PUBLISHED_V2_3_CASE_REPORT_SCHEMA_VERSION]) }),
235
252
  Object.freeze({ caseVersions: Object.freeze([INCIDENT_CASE_SCHEMA_VERSION]), reportVersions: Object.freeze([LATEST_PUBLIC_CASE_REPORT_SCHEMA_VERSION]) }),
253
+ Object.freeze({ caseVersions: Object.freeze([EVIDENCE_FOLLOW_UP_CASE_SCHEMA_VERSION]), reportVersions: Object.freeze([EVIDENCE_FOLLOW_UP_CASE_REPORT_SCHEMA_VERSION]) }),
254
+ Object.freeze({ caseVersions: Object.freeze([OBJECT_RESPONSE_CASE_SCHEMA_VERSION]), reportVersions: Object.freeze([OBJECT_RESPONSE_CASE_REPORT_SCHEMA_VERSION]) }),
236
255
  Object.freeze({ caseVersions: Object.freeze([CASE_SCHEMA_VERSION]), reportVersions: Object.freeze([CASE_REPORT_SCHEMA_VERSION]) }),
237
256
  ]);
238
257
  export function caseReportVersionMatchesCase(caseVersion, reportVersion) {
@@ -246,12 +265,14 @@ export const PUBLIC_WORKSPACE_ARCHIVE_VERSION = 5;
246
265
  export const PUBLISHED_V2_WORKSPACE_ARCHIVE_VERSION = 6;
247
266
  export const PUBLISHED_V2_2_WORKSPACE_ARCHIVE_VERSION = 7;
248
267
  export const PUBLISHED_V2_3_WORKSPACE_ARCHIVE_VERSION = 8;
249
- export const WORKSPACE_ARCHIVE_VERSION = 9;
268
+ export const WORKSPACE_ARCHIVE_VERSION = 10;
269
+ export const WORKSPACE_ARCHIVE_WRITER_FIXTURE_ID = 'workspace-archive-v10-case-v19-empty-current';
250
270
  export const SUPPORTED_WORKSPACE_ARCHIVE_VERSIONS = Object.freeze([
251
271
  PUBLIC_WORKSPACE_ARCHIVE_VERSION,
252
272
  PUBLISHED_V2_WORKSPACE_ARCHIVE_VERSION,
253
273
  PUBLISHED_V2_2_WORKSPACE_ARCHIVE_VERSION,
254
274
  PUBLISHED_V2_3_WORKSPACE_ARCHIVE_VERSION,
275
+ LATEST_PUBLIC_WORKSPACE_ARCHIVE_VERSION,
255
276
  WORKSPACE_ARCHIVE_VERSION,
256
277
  ]);
257
278
  export function isSupportedWorkspaceArchiveVersion(value) {
@@ -447,6 +468,104 @@ export function serialiseWorkspaceArchiveSection(value) {
447
468
  return serialised;
448
469
  }
449
470
  const CASE_LIFECYCLE_FIXTURES = Object.freeze([
471
+ Object.freeze({
472
+ id: 'browser-case-v19',
473
+ path: 'test/fixtures/case-lifecycle/browser-case-v19.json',
474
+ bytes: 3312,
475
+ sha256: '3d3c3c3f35f05406d5f4d2b9a0925e6971a9dd237f570733a0b1e82a52d99a92',
476
+ contentDigestSha256: null,
477
+ schema: CASE_BROWSER_STORE_LIFECYCLE_SCHEMA,
478
+ version: CASE_SCHEMA_VERSION,
479
+ role: 'current',
480
+ expectation: 'accepted_exact',
481
+ expectedOutputFixtureId: null,
482
+ shapeId: 'case.browser-store.v19',
483
+ scope: 'repository',
484
+ }),
485
+ Object.freeze({
486
+ id: 'case-export-v19',
487
+ path: 'test/fixtures/case-lifecycle/case-export-v19.json',
488
+ bytes: 3356,
489
+ sha256: '65cbb4952766cf6016d4ba81b5859a8a2bd16eb373c7c2f6d08d666aa29c99c1',
490
+ contentDigestSha256: null,
491
+ schema: CASE_EXPORT_LIFECYCLE_SCHEMA,
492
+ version: CASE_SCHEMA_VERSION,
493
+ role: 'current',
494
+ expectation: 'accepted_exact',
495
+ expectedOutputFixtureId: null,
496
+ shapeId: 'case.export.v19',
497
+ scope: 'repository',
498
+ }),
499
+ Object.freeze({
500
+ id: 'case-report-v15',
501
+ path: 'test/fixtures/case-lifecycle/case-report-v15.json',
502
+ bytes: 4894,
503
+ sha256: '8e6fe5c4c8cd96aa5a89f39e6290137157db40fe07c84525f26e0a6105e4d162',
504
+ contentDigestSha256: null,
505
+ schema: CASE_REPORT_SCHEMA,
506
+ version: CASE_REPORT_SCHEMA_VERSION,
507
+ role: 'current',
508
+ expectation: 'accepted_exact',
509
+ expectedOutputFixtureId: null,
510
+ shapeId: 'case.report.v15',
511
+ scope: 'repository',
512
+ }),
513
+ Object.freeze({
514
+ id: 'case-response-review-inputs-v7',
515
+ path: 'test/fixtures/case-lifecycle/case-response-review-inputs-v7.json',
516
+ bytes: 7634,
517
+ sha256: 'f8a7de7af1a2f341b5123e0d6c41d10a85f4dcaa13815b3aa7974355f070f55b',
518
+ contentDigestSha256: null,
519
+ schema: CASE_RESPONSE_REVIEW_INPUTS_SCHEMA,
520
+ version: CASE_RESPONSE_REVIEW_INPUTS_VERSION,
521
+ role: 'current',
522
+ expectation: 'accepted_exact',
523
+ expectedOutputFixtureId: null,
524
+ shapeId: 'case.response-review-inputs.v7',
525
+ scope: 'repository',
526
+ }),
527
+ Object.freeze({
528
+ id: 'case-response-packet-v13',
529
+ path: 'test/fixtures/case-lifecycle/case-response-packet-v13.json',
530
+ bytes: 12276,
531
+ sha256: 'e24bfaa12c12ee9bca57e165dcbd8445a9768b3095a19fb08f1c56a12e1acc97',
532
+ contentDigestSha256: "sha256:424cd8a9fd2dbfec2e272891d97359164f4492426e3160eb6e2f52d9b432b9fe",
533
+ schema: CASE_RESPONSE_PACKET_SCHEMA,
534
+ version: CASE_RESPONSE_PACKET_VERSION,
535
+ role: 'current',
536
+ expectation: 'accepted_exact',
537
+ expectedOutputFixtureId: null,
538
+ shapeId: 'case.response-packet.v13',
539
+ scope: 'repository',
540
+ }),
541
+ Object.freeze({
542
+ id: 'cli-case-pack-v2-case-v19-current',
543
+ path: 'test/fixtures/case-lifecycle/cli-case-pack-v2-case-v19-current.json',
544
+ bytes: 9874,
545
+ sha256: 'd29be046deeed1ff8b626ec3e79d7c14be690d35b67a506f95141075f50c3701',
546
+ contentDigestSha256: "sha256:218f1a1ca412920a85c2577b5fc958e6bbef47606da8056a09069619560e8435",
547
+ schema: CLI_CASE_PACK_SCHEMA,
548
+ version: CLI_CASE_PACK_VERSION,
549
+ role: 'current',
550
+ expectation: 'accepted_exact',
551
+ expectedOutputFixtureId: null,
552
+ shapeId: 'case.cli-pack.current',
553
+ scope: 'repository',
554
+ }),
555
+ Object.freeze({
556
+ id: WORKSPACE_ARCHIVE_WRITER_FIXTURE_ID,
557
+ path: `test/fixtures/case-lifecycle/${WORKSPACE_ARCHIVE_WRITER_FIXTURE_ID}.json`,
558
+ bytes: 7616,
559
+ sha256: '4dee9ab450b16a2ab4cf46a4807fd2be81c1809c8dd4641fbef47ffb78b21794',
560
+ contentDigestSha256: null,
561
+ schema: WORKSPACE_ARCHIVE_SCHEMA,
562
+ version: WORKSPACE_ARCHIVE_VERSION,
563
+ role: 'current',
564
+ expectation: 'accepted_exact',
565
+ expectedOutputFixtureId: null,
566
+ shapeId: 'case.workspace-archive.v10',
567
+ scope: 'repository',
568
+ }),
450
569
  Object.freeze({
451
570
  id: 'browser-case-v12-public',
452
571
  path: 'test/fixtures/case-lifecycle/browser-case-v12.json',
@@ -457,7 +576,7 @@ const CASE_LIFECYCLE_FIXTURES = Object.freeze([
457
576
  version: PUBLIC_CASE_SCHEMA_VERSION,
458
577
  role: 'historical',
459
578
  expectation: 'normalises_to_current_output',
460
- expectedOutputFixtureId: 'browser-case-v17',
579
+ expectedOutputFixtureId: 'browser-case-v19',
461
580
  shapeId: `case.browser-store.v${PUBLIC_CASE_SCHEMA_VERSION}`,
462
581
  scope: 'repository',
463
582
  }),
@@ -471,7 +590,7 @@ const CASE_LIFECYCLE_FIXTURES = Object.freeze([
471
590
  version: PUBLISHED_V2_CASE_SCHEMA_VERSION,
472
591
  role: 'historical',
473
592
  expectation: 'normalises_to_current_output',
474
- expectedOutputFixtureId: 'browser-case-v17',
593
+ expectedOutputFixtureId: 'browser-case-v19',
475
594
  shapeId: `case.browser-store.v${PUBLISHED_V2_CASE_SCHEMA_VERSION}`,
476
595
  scope: 'repository',
477
596
  }),
@@ -485,7 +604,7 @@ const CASE_LIFECYCLE_FIXTURES = Object.freeze([
485
604
  version: PUBLISHED_V2_2_CASE_SCHEMA_VERSION,
486
605
  role: 'historical',
487
606
  expectation: 'normalises_to_current_output',
488
- expectedOutputFixtureId: 'browser-case-v17',
607
+ expectedOutputFixtureId: 'browser-case-v19',
489
608
  shapeId: `case.browser-store.v${PUBLISHED_V2_2_CASE_SCHEMA_VERSION}`,
490
609
  scope: 'repository',
491
610
  }),
@@ -499,7 +618,7 @@ const CASE_LIFECYCLE_FIXTURES = Object.freeze([
499
618
  version: PUBLISHED_V2_3_CASE_SCHEMA_VERSION,
500
619
  role: 'historical',
501
620
  expectation: 'normalises_to_current_output',
502
- expectedOutputFixtureId: 'browser-case-v17',
621
+ expectedOutputFixtureId: 'browser-case-v19',
503
622
  shapeId: `case.browser-store.v${PUBLISHED_V2_3_CASE_SCHEMA_VERSION}`,
504
623
  scope: 'repository',
505
624
  }),
@@ -513,7 +632,7 @@ const CASE_LIFECYCLE_FIXTURES = Object.freeze([
513
632
  version: INCIDENT_CASE_SCHEMA_VERSION,
514
633
  role: 'historical',
515
634
  expectation: 'normalises_to_current_output',
516
- expectedOutputFixtureId: 'browser-case-v17',
635
+ expectedOutputFixtureId: 'browser-case-v19',
517
636
  shapeId: `case.browser-store.v${INCIDENT_CASE_SCHEMA_VERSION}`,
518
637
  scope: 'repository',
519
638
  }),
@@ -524,11 +643,25 @@ const CASE_LIFECYCLE_FIXTURES = Object.freeze([
524
643
  sha256: '8de3bb904b09ec07994d832738b148321902d91c4351763eebdc0cf908bf5429',
525
644
  contentDigestSha256: null,
526
645
  schema: CASE_BROWSER_STORE_LIFECYCLE_SCHEMA,
527
- version: CASE_SCHEMA_VERSION,
528
- role: 'current',
529
- expectation: 'accepted_exact',
530
- expectedOutputFixtureId: null,
531
- shapeId: `case.browser-store.v${CASE_SCHEMA_VERSION}`,
646
+ version: EVIDENCE_FOLLOW_UP_CASE_SCHEMA_VERSION,
647
+ role: 'historical',
648
+ expectation: 'normalises_to_current_output',
649
+ expectedOutputFixtureId: 'browser-case-v19',
650
+ shapeId: `case.browser-store.v${EVIDENCE_FOLLOW_UP_CASE_SCHEMA_VERSION}`,
651
+ scope: 'repository',
652
+ }),
653
+ Object.freeze({
654
+ id: 'browser-case-v18',
655
+ path: 'test/fixtures/case-lifecycle/browser-case-v18.json',
656
+ bytes: 3312,
657
+ sha256: 'def2f8c2aca1b124d7361438ab7e448b2f53c2ef6804336da35b441d0233528a',
658
+ contentDigestSha256: null,
659
+ schema: CASE_BROWSER_STORE_LIFECYCLE_SCHEMA,
660
+ version: OBJECT_RESPONSE_CASE_SCHEMA_VERSION,
661
+ role: 'historical',
662
+ expectation: 'normalises_to_current_output',
663
+ expectedOutputFixtureId: 'browser-case-v19',
664
+ shapeId: `case.browser-store.v${OBJECT_RESPONSE_CASE_SCHEMA_VERSION}`,
532
665
  scope: 'repository',
533
666
  }),
534
667
  Object.freeze({
@@ -541,7 +674,7 @@ const CASE_LIFECYCLE_FIXTURES = Object.freeze([
541
674
  version: PUBLIC_CASE_SCHEMA_VERSION,
542
675
  role: 'historical',
543
676
  expectation: 'normalises_to_current_output',
544
- expectedOutputFixtureId: 'case-export-v17',
677
+ expectedOutputFixtureId: 'case-export-v19',
545
678
  shapeId: `case.export.v${PUBLIC_CASE_SCHEMA_VERSION}`,
546
679
  scope: 'repository',
547
680
  }),
@@ -555,7 +688,7 @@ const CASE_LIFECYCLE_FIXTURES = Object.freeze([
555
688
  version: PUBLISHED_V2_CASE_SCHEMA_VERSION,
556
689
  role: 'historical',
557
690
  expectation: 'normalises_to_current_output',
558
- expectedOutputFixtureId: 'case-export-v17',
691
+ expectedOutputFixtureId: 'case-export-v19',
559
692
  shapeId: `case.export.v${PUBLISHED_V2_CASE_SCHEMA_VERSION}`,
560
693
  scope: 'repository',
561
694
  }),
@@ -569,7 +702,7 @@ const CASE_LIFECYCLE_FIXTURES = Object.freeze([
569
702
  version: PUBLISHED_V2_2_CASE_SCHEMA_VERSION,
570
703
  role: 'historical',
571
704
  expectation: 'normalises_to_current_output',
572
- expectedOutputFixtureId: 'case-export-v17',
705
+ expectedOutputFixtureId: 'case-export-v19',
573
706
  shapeId: `case.export.v${PUBLISHED_V2_2_CASE_SCHEMA_VERSION}`,
574
707
  scope: 'repository',
575
708
  }),
@@ -583,7 +716,7 @@ const CASE_LIFECYCLE_FIXTURES = Object.freeze([
583
716
  version: PUBLISHED_V2_3_CASE_SCHEMA_VERSION,
584
717
  role: 'historical',
585
718
  expectation: 'normalises_to_current_output',
586
- expectedOutputFixtureId: 'case-export-v17',
719
+ expectedOutputFixtureId: 'case-export-v19',
587
720
  shapeId: `case.export.v${PUBLISHED_V2_3_CASE_SCHEMA_VERSION}`,
588
721
  scope: 'repository',
589
722
  }),
@@ -597,7 +730,7 @@ const CASE_LIFECYCLE_FIXTURES = Object.freeze([
597
730
  version: INCIDENT_CASE_SCHEMA_VERSION,
598
731
  role: 'historical',
599
732
  expectation: 'normalises_to_current_output',
600
- expectedOutputFixtureId: 'case-export-v17',
733
+ expectedOutputFixtureId: 'case-export-v19',
601
734
  shapeId: `case.export.v${INCIDENT_CASE_SCHEMA_VERSION}`,
602
735
  scope: 'repository',
603
736
  }),
@@ -608,11 +741,25 @@ const CASE_LIFECYCLE_FIXTURES = Object.freeze([
608
741
  sha256: 'bbce977c1045fd2b5d576619f07c6cc19388d3d192f671f467ab0ad069f01e8b',
609
742
  contentDigestSha256: null,
610
743
  schema: CASE_EXPORT_LIFECYCLE_SCHEMA,
611
- version: CASE_SCHEMA_VERSION,
612
- role: 'current',
613
- expectation: 'accepted_exact',
614
- expectedOutputFixtureId: null,
615
- shapeId: `case.export.v${CASE_SCHEMA_VERSION}`,
744
+ version: EVIDENCE_FOLLOW_UP_CASE_SCHEMA_VERSION,
745
+ role: 'historical',
746
+ expectation: 'normalises_to_current_output',
747
+ expectedOutputFixtureId: 'case-export-v19',
748
+ shapeId: `case.export.v${EVIDENCE_FOLLOW_UP_CASE_SCHEMA_VERSION}`,
749
+ scope: 'repository',
750
+ }),
751
+ Object.freeze({
752
+ id: 'case-export-v18',
753
+ path: 'test/fixtures/case-lifecycle/case-export-v18.json',
754
+ bytes: 3356,
755
+ sha256: '796744c3dbffdbdb2e93dbece159a812a9c1f7c6e46b9ecd130aa84f1283828b',
756
+ contentDigestSha256: null,
757
+ schema: CASE_EXPORT_LIFECYCLE_SCHEMA,
758
+ version: OBJECT_RESPONSE_CASE_SCHEMA_VERSION,
759
+ role: 'historical',
760
+ expectation: 'normalises_to_current_output',
761
+ expectedOutputFixtureId: 'case-export-v19',
762
+ shapeId: `case.export.v${OBJECT_RESPONSE_CASE_SCHEMA_VERSION}`,
616
763
  scope: 'repository',
617
764
  }),
618
765
  Object.freeze({
@@ -692,11 +839,25 @@ const CASE_LIFECYCLE_FIXTURES = Object.freeze([
692
839
  sha256: '3b0e69f800a2b7a087a0ffcdf81ebbe4237863f42aea7812fd0d0f6b600b8426',
693
840
  contentDigestSha256: null,
694
841
  schema: CASE_REPORT_SCHEMA,
695
- version: CASE_REPORT_SCHEMA_VERSION,
696
- role: 'current',
842
+ version: EVIDENCE_FOLLOW_UP_CASE_REPORT_SCHEMA_VERSION,
843
+ role: 'historical',
844
+ expectation: 'accepted_exact',
845
+ expectedOutputFixtureId: null,
846
+ shapeId: `case.report.v${EVIDENCE_FOLLOW_UP_CASE_REPORT_SCHEMA_VERSION}`,
847
+ scope: 'repository',
848
+ }),
849
+ Object.freeze({
850
+ id: 'case-report-v14',
851
+ path: 'test/fixtures/case-lifecycle/case-report-v14.json',
852
+ bytes: 4894,
853
+ sha256: '0fb3613dfaace2f86e38eaa86f9c081a41afde2a7a373a21a6c0de78cd17e6ac',
854
+ contentDigestSha256: null,
855
+ schema: CASE_REPORT_SCHEMA,
856
+ version: OBJECT_RESPONSE_CASE_REPORT_SCHEMA_VERSION,
857
+ role: 'historical',
697
858
  expectation: 'accepted_exact',
698
859
  expectedOutputFixtureId: null,
699
- shapeId: `case.report.v${CASE_REPORT_SCHEMA_VERSION}`,
860
+ shapeId: `case.report.v${OBJECT_RESPONSE_CASE_REPORT_SCHEMA_VERSION}`,
700
861
  scope: 'repository',
701
862
  }),
702
863
  Object.freeze({
@@ -762,11 +923,25 @@ const CASE_LIFECYCLE_FIXTURES = Object.freeze([
762
923
  sha256: '42817b82fbba58930866d9d4f5554732f56c143fd7a64c6e0acab57b66ddfdce',
763
924
  contentDigestSha256: "sha256:603558cc7a9112ab759b7dd01f44c53c9408ed6d71db19f562fced2629d5c437",
764
925
  schema: CASE_RESPONSE_PACKET_SCHEMA,
765
- version: CASE_RESPONSE_PACKET_VERSION,
766
- role: 'current',
926
+ version: EVIDENCE_FOLLOW_UP_CASE_RESPONSE_PACKET_VERSION,
927
+ role: 'historical',
767
928
  expectation: 'accepted_exact',
768
929
  expectedOutputFixtureId: null,
769
- shapeId: `case.response-packet.v${CASE_RESPONSE_PACKET_VERSION}`,
930
+ shapeId: `case.response-packet.v${EVIDENCE_FOLLOW_UP_CASE_RESPONSE_PACKET_VERSION}`,
931
+ scope: 'repository',
932
+ }),
933
+ Object.freeze({
934
+ id: 'case-response-packet-v12',
935
+ path: 'test/fixtures/case-lifecycle/case-response-packet-v12.json',
936
+ bytes: 12276,
937
+ sha256: '2f35363026f10b5eb7f7c0c3ece9c69ae776b4366510512302d7c43e8baee099',
938
+ contentDigestSha256: 'sha256:4fa4e033ef4cc7943d6ee95e513f27a982f35d0e3da402cda78bc9df28db9e05',
939
+ schema: CASE_RESPONSE_PACKET_SCHEMA,
940
+ version: OBJECT_RESPONSE_CASE_PACKET_VERSION,
941
+ role: 'historical',
942
+ expectation: 'accepted_exact',
943
+ expectedOutputFixtureId: null,
944
+ shapeId: `case.response-packet.v${OBJECT_RESPONSE_CASE_PACKET_VERSION}`,
770
945
  scope: 'repository',
771
946
  }),
772
947
  Object.freeze({
@@ -832,11 +1007,25 @@ const CASE_LIFECYCLE_FIXTURES = Object.freeze([
832
1007
  sha256: '4a54acbc37ee4384c7a2b5c6168d3fffce6757e259d5314da537c8d423c8bee4',
833
1008
  contentDigestSha256: null,
834
1009
  schema: CASE_RESPONSE_REVIEW_INPUTS_SCHEMA,
835
- version: CASE_RESPONSE_REVIEW_INPUTS_VERSION,
836
- role: 'current',
1010
+ version: EVIDENCE_FOLLOW_UP_CASE_RESPONSE_REVIEW_INPUTS_VERSION,
1011
+ role: 'historical',
1012
+ expectation: 'accepted_exact',
1013
+ expectedOutputFixtureId: null,
1014
+ shapeId: `case.response-review-inputs.v${EVIDENCE_FOLLOW_UP_CASE_RESPONSE_REVIEW_INPUTS_VERSION}`,
1015
+ scope: 'repository',
1016
+ }),
1017
+ Object.freeze({
1018
+ id: 'case-response-review-inputs-v6',
1019
+ path: 'test/fixtures/case-lifecycle/case-response-review-inputs-v6.json',
1020
+ bytes: 7604,
1021
+ sha256: '1cfd2d65b85b3c0c3e92af388be1163eff6efea740a05447bdc54024ed98be0d',
1022
+ contentDigestSha256: null,
1023
+ schema: CASE_RESPONSE_REVIEW_INPUTS_SCHEMA,
1024
+ version: OBJECT_RESPONSE_CASE_REVIEW_INPUTS_VERSION,
1025
+ role: 'historical',
837
1026
  expectation: 'accepted_exact',
838
1027
  expectedOutputFixtureId: null,
839
- shapeId: `case.response-review-inputs.v${CASE_RESPONSE_REVIEW_INPUTS_VERSION}`,
1028
+ shapeId: `case.response-review-inputs.v${OBJECT_RESPONSE_CASE_REVIEW_INPUTS_VERSION}`,
840
1029
  scope: 'repository',
841
1030
  }),
842
1031
  Object.freeze({
@@ -924,8 +1113,8 @@ const CASE_LIFECYCLE_FIXTURES = Object.freeze([
924
1113
  scope: 'repository',
925
1114
  }),
926
1115
  Object.freeze({
927
- id: CLI_CASE_PACK_WRITER_FIXTURE_ID,
928
- path: `test/fixtures/case-lifecycle/${CLI_CASE_PACK_WRITER_FIXTURE_ID}.json`,
1116
+ id: 'cli-case-pack-v2-case-v17-current',
1117
+ path: 'test/fixtures/case-lifecycle/cli-case-pack-v2-case-v17-current.json',
929
1118
  bytes: 9874,
930
1119
  sha256: '3b25440521ddcc1e3ea65a0e56907df4fb725e27b91415c8f1afabab1c4f7e58',
931
1120
  contentDigestSha256: 'sha256:3cbf9f6dcacdc8efdaa55319e5ce7068a5cf2ea116c80e9ff8ccf6d2dc8741c6',
@@ -937,6 +1126,20 @@ const CASE_LIFECYCLE_FIXTURES = Object.freeze([
937
1126
  shapeId: 'case.cli-pack.current',
938
1127
  scope: 'repository',
939
1128
  }),
1129
+ Object.freeze({
1130
+ id: 'cli-case-pack-v2-case-v18-current',
1131
+ path: 'test/fixtures/case-lifecycle/cli-case-pack-v2-case-v18-current.json',
1132
+ bytes: 9874,
1133
+ sha256: 'fb95d648a3e8a6772a0da0726e9259cff622f58287d5cc5d6232904db2e32c42',
1134
+ contentDigestSha256: 'sha256:e55955de4751538fbf5830129d99e08b0aef28325a1d98a31ecfe0b5415cef20',
1135
+ schema: CLI_CASE_PACK_SCHEMA,
1136
+ version: CLI_CASE_PACK_VERSION,
1137
+ role: 'current',
1138
+ expectation: 'accepted_exact',
1139
+ expectedOutputFixtureId: null,
1140
+ shapeId: 'case.cli-pack.current',
1141
+ scope: 'repository',
1142
+ }),
940
1143
  Object.freeze({
941
1144
  id: 'workspace-archive-v5-public',
942
1145
  path: 'test/fixtures/case-lifecycle/workspace-archive-v5-public.json',
@@ -947,7 +1150,7 @@ const CASE_LIFECYCLE_FIXTURES = Object.freeze([
947
1150
  version: PUBLIC_WORKSPACE_ARCHIVE_VERSION,
948
1151
  role: 'historical',
949
1152
  expectation: 'normalises_to_current_output',
950
- expectedOutputFixtureId: `workspace-archive-v${WORKSPACE_ARCHIVE_VERSION}-empty-current`,
1153
+ expectedOutputFixtureId: WORKSPACE_ARCHIVE_WRITER_FIXTURE_ID,
951
1154
  shapeId: 'case.workspace-archive.v5',
952
1155
  scope: 'repository',
953
1156
  }),
@@ -961,7 +1164,7 @@ const CASE_LIFECYCLE_FIXTURES = Object.freeze([
961
1164
  version: PUBLISHED_V2_WORKSPACE_ARCHIVE_VERSION,
962
1165
  role: 'historical',
963
1166
  expectation: 'normalises_to_current_output',
964
- expectedOutputFixtureId: `workspace-archive-v${WORKSPACE_ARCHIVE_VERSION}-empty-current`,
1167
+ expectedOutputFixtureId: WORKSPACE_ARCHIVE_WRITER_FIXTURE_ID,
965
1168
  shapeId: 'case.workspace-archive.v6',
966
1169
  scope: 'repository',
967
1170
  }),
@@ -975,7 +1178,7 @@ const CASE_LIFECYCLE_FIXTURES = Object.freeze([
975
1178
  version: PUBLISHED_V2_2_WORKSPACE_ARCHIVE_VERSION,
976
1179
  role: 'historical',
977
1180
  expectation: 'normalises_to_current_output',
978
- expectedOutputFixtureId: `workspace-archive-v${WORKSPACE_ARCHIVE_VERSION}-empty-current`,
1181
+ expectedOutputFixtureId: WORKSPACE_ARCHIVE_WRITER_FIXTURE_ID,
979
1182
  shapeId: 'case.workspace-archive.v7',
980
1183
  scope: 'repository',
981
1184
  }),
@@ -989,7 +1192,7 @@ const CASE_LIFECYCLE_FIXTURES = Object.freeze([
989
1192
  version: PUBLISHED_V2_3_WORKSPACE_ARCHIVE_VERSION,
990
1193
  role: 'historical',
991
1194
  expectation: 'normalises_to_current_output',
992
- expectedOutputFixtureId: `workspace-archive-v${WORKSPACE_ARCHIVE_VERSION}-empty-current`,
1195
+ expectedOutputFixtureId: WORKSPACE_ARCHIVE_WRITER_FIXTURE_ID,
993
1196
  shapeId: 'case.workspace-archive.v8',
994
1197
  scope: 'repository',
995
1198
  }),
@@ -1000,11 +1203,25 @@ const CASE_LIFECYCLE_FIXTURES = Object.freeze([
1000
1203
  sha256: '6786a9a892bdc21814b0f1165cd9286fb82258862a4c15140daf9caae71daff0',
1001
1204
  contentDigestSha256: null,
1002
1205
  schema: WORKSPACE_ARCHIVE_SCHEMA,
1206
+ version: LATEST_PUBLIC_WORKSPACE_ARCHIVE_VERSION,
1207
+ role: 'historical',
1208
+ expectation: 'normalises_to_current_output',
1209
+ expectedOutputFixtureId: WORKSPACE_ARCHIVE_WRITER_FIXTURE_ID,
1210
+ shapeId: 'case.workspace-archive.v9',
1211
+ scope: 'repository',
1212
+ }),
1213
+ Object.freeze({
1214
+ id: 'workspace-archive-v10-empty-current',
1215
+ path: 'test/fixtures/case-lifecycle/workspace-archive-v10-empty-current.json',
1216
+ bytes: 7616,
1217
+ sha256: 'd40c0e6f28cac0cac5b38d45642e9cd86a7d77c689a852e85b2747b376c93a15',
1218
+ contentDigestSha256: null,
1219
+ schema: WORKSPACE_ARCHIVE_SCHEMA,
1003
1220
  version: WORKSPACE_ARCHIVE_VERSION,
1004
1221
  role: 'current',
1005
1222
  expectation: 'accepted_exact',
1006
1223
  expectedOutputFixtureId: null,
1007
- shapeId: `case.workspace-archive.v${WORKSPACE_ARCHIVE_VERSION}`,
1224
+ shapeId: 'case.workspace-archive.v10',
1008
1225
  scope: 'repository',
1009
1226
  }),
1010
1227
  Object.freeze({
@@ -1134,6 +1351,7 @@ const CASE_LIFECYCLE_SHAPES = Object.freeze([
1134
1351
  ...SUPPORTED_CASE_RESPONSE_REVIEW_INPUTS_VERSIONS.filter((version) => version >= PUBLISHED_V2_2_CASE_RESPONSE_REVIEW_INPUTS_VERSION).map((version) => shape(`case.response-review-inputs.v${version}`, CASE_RESPONSE_REVIEW_INPUTS_SCHEMA, [version], [
1135
1352
  'contract', 'version', 'profile', 'case', 'incident', 'contacts',
1136
1353
  'recipientRoute', 'actionBinding', 'selectedEvidence', 'contradictions',
1354
+ ...(version >= 7 ? ['sourceQualifications'] : []),
1137
1355
  'readiness', 'artefactReferences', 'escalationHistory',
1138
1356
  'escalationHistoryOmitted', 'escalationHistoryLimitations', 'responseLifecycle',
1139
1357
  ], 'preserve_signed_document')),
@@ -14,6 +14,7 @@ export const CAPABILITY_IDS = Object.freeze({
14
14
  URLSCAN_SEARCH: 'urlscan_search',
15
15
  URLHAUS_HOST: 'urlhaus_host',
16
16
  THREATFOX_DOMAIN_IOC: 'threatfox_domain_ioc',
17
+ DOMAIN_FEED_SEARCH: 'domain_feed_search',
17
18
  REGISTRAR_RDAP: 'registrar_rdap',
18
19
  NETWORK_CONTEXT: 'network_context',
19
20
  REVERSE_DNS: 'reverse_dns',
@@ -88,6 +89,8 @@ export const CLI_COMMAND_SEMANTICS = Object.freeze({
88
89
  'change-packet': semantic('respond', CAPABILITY_IDS.PORTABLE_EVIDENCE),
89
90
  'sharing-review': semantic('respond', CAPABILITY_IDS.PORTABLE_EVIDENCE),
90
91
  'workflow-plan': semantic('assure', CAPABILITY_IDS.OFFLINE_REVIEW),
92
+ 'watchlist-review': semantic('assure', CAPABILITY_IDS.OFFLINE_REVIEW),
93
+ 'domain-feed': semantic('investigate', CAPABILITY_IDS.OFFLINE_REVIEW),
91
94
  'workflow-run': semantic('assure', CAPABILITY_IDS.WORKFLOW_EXECUTION),
92
95
  diff: semantic('assure', CAPABILITY_IDS.OFFLINE_REVIEW),
93
96
  reconcile: semantic('assure', CAPABILITY_IDS.OFFLINE_REVIEW),
@@ -2,7 +2,8 @@
2
2
  export const CONTEXT_REVIEW_SCHEMA = 'whoisleuth.context-review';
3
3
  export const CONTEXT_REVIEW_VERSION = 1;
4
4
  export const DOMAIN_HISTORY_INPUT_SCHEMA = 'whoisleuth.domain-history.input';
5
- export const DOMAIN_HISTORY_INPUT_VERSION = 1;
5
+ export const DOMAIN_HISTORY_INPUT_VERSION = 2;
6
+ export const DOMAIN_HISTORY_LEGACY_INPUT_VERSION = 1;
6
7
  export const PLATFORM_CONTINUITY_INPUT_SCHEMA = 'whoisleuth.platform-continuity.input';
7
8
  export const PLATFORM_CONTINUITY_INPUT_VERSION = 1;
8
9
  export const STOREFRONT_INPUT_SCHEMA = 'whoisleuth.storefront-review.input';