@slicedearth/whoisleuth-cli 2.3.0 → 2.5.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/NOTICE +8 -2
- package/README.md +19 -15
- package/bin/whoisleuth.mjs +8 -1
- package/cli/archive-content-digest.mjs +14 -0
- package/cli/archive-inspect.mjs +20 -53
- package/cli/argument-values.mjs +55 -0
- package/cli/arguments.mjs +24 -408
- package/cli/artifact-validation/case-response.mjs +65 -44
- package/cli/artifact-validation/investigation-capsule.mjs +52 -31
- package/cli/artifact-validation/lookup-evidence.mjs +15 -9
- package/cli/artifact-validation/signed-review.mjs +136 -68
- package/cli/artifact-validation/structure-primitives.mjs +1 -105
- package/cli/artifact-verify.mjs +92 -24
- package/cli/assurance-arguments.mjs +56 -0
- package/cli/assurance-command-definitions.mjs +179 -0
- package/cli/assurance-command-runner.mjs +40 -5
- package/cli/bagit-folder.mjs +57 -0
- package/cli/bagit-review.mjs +23 -0
- package/cli/bounded-json.mjs +1 -1
- package/cli/bulk-checkpoint.mjs +1 -1
- package/cli/bulk-command-runner.mjs +4 -2
- package/cli/bulk-output.mjs +29 -3
- package/cli/bulk.mjs +2 -3
- package/cli/case-command.mjs +212 -0
- package/cli/case-pack.mjs +50 -32
- package/cli/ci-report.mjs +6 -3
- package/cli/collection-arguments.mjs +123 -0
- package/cli/collection-command-definitions.mjs +330 -0
- package/cli/collection-preflight.mjs +8 -1
- package/cli/command-argument-grammar.mjs +8 -206
- package/cli/command-definition.mjs +329 -0
- package/cli/command-reference.mjs +94 -1357
- package/cli/command-seeds.mjs +18 -0
- package/cli/compare.mjs +1 -1
- package/cli/completion.mjs +298 -79
- package/cli/config-profile.mjs +8 -6
- package/cli/ct-event-intake.mjs +16 -16
- package/cli/discover.mjs +5 -4
- package/cli/discovery-observation-snapshot.mjs +46 -18
- package/cli/discovery-scan-command-runner.mjs +5 -3
- package/cli/discovery-scan.mjs +7 -4
- package/cli/discovery-snapshot.mjs +2 -2
- package/cli/discovery-workflow.mjs +5 -5
- package/cli/domain-control-monitor.mjs +50 -20
- package/cli/domain-control-observations.mjs +151 -103
- package/cli/errors.mjs +37 -6
- package/cli/evidence-arguments.mjs +46 -0
- package/cli/evidence-command-definitions.mjs +69 -0
- package/cli/evidence-command-runner.mjs +18 -8
- package/cli/evidence-signing.mjs +5 -4
- package/cli/external-observation-mapping.mjs +9 -10
- package/cli/formatters/terminal-command-formats.mjs +6 -0
- package/cli/formatters/terminal-lookup.mjs +24 -46
- package/cli/formatters/terminal-shared.mjs +5 -3
- package/cli/formatters/terminal-technology.mjs +114 -0
- package/cli/history-arguments.mjs +39 -0
- package/cli/history-command-definitions.mjs +88 -0
- package/cli/indicator-set-command.mjs +33 -0
- package/cli/inline-command-families.mjs +6 -46
- package/cli/inline-command-runner.mjs +4 -31
- package/cli/input.mjs +2 -2
- package/cli/intake-command.mjs +107 -0
- package/cli/interactive-launcher.mjs +2 -160
- package/cli/interchange-report.mjs +8 -10
- package/cli/investigation-artifacts.mjs +176 -0
- package/cli/investigation-checkpoint.mjs +10 -0
- package/cli/investigation-folder.mjs +114 -0
- package/cli/investigation-manifest.mjs +1 -112
- package/cli/investigation-package-review.mjs +103 -0
- package/cli/investigation-plan.mjs +38 -147
- package/cli/investigation-recipes.mjs +177 -0
- package/cli/investigation-run.mjs +256 -35
- package/cli/local-document-checkpoint.mjs +170 -0
- package/cli/local-mmdb-review.mjs +197 -17
- package/cli/lookalike-calibration.mjs +1 -1
- package/cli/lookup-brief.mjs +2 -2
- package/cli/lookup-browser.mjs +5 -12
- package/cli/lookup-command-runner.mjs +33 -39
- package/cli/lookup-diff.mjs +47 -12
- package/cli/lookup-plan.mjs +16 -14
- package/cli/lookup-reconcile.mjs +15 -12
- package/cli/lookup-timeline.mjs +7 -6
- package/cli/mail-header-review.mjs +24 -247
- package/cli/mail-review.mjs +75 -21
- package/cli/manual.mjs +1 -0
- package/cli/network-arguments.mjs +51 -0
- package/cli/network-command-definitions.mjs +130 -0
- package/cli/network-command-runner.mjs +45 -31
- package/cli/offline-evidence-review.mjs +39 -6
- package/cli/output-file.mjs +31 -5
- package/cli/posture.mjs +1 -1
- package/cli/registry-doctor.mjs +3 -1
- package/cli/registry-fixture-scaffold.mjs +1 -1
- package/cli/registry-support.mjs +1 -1
- package/cli/retained-artifact-diff.mjs +10 -9
- package/cli/review-arguments.mjs +131 -0
- package/cli/review-command-definitions.mjs +273 -0
- package/cli/review-command-runner.mjs +104 -149
- package/cli/risk-calibration.mjs +8 -8
- package/cli/runner.mjs +74 -37
- package/cli/saved-lookup.mjs +2 -2
- package/cli/selected-input-worker.mjs +63 -0
- package/cli/sharing-review.mjs +8 -80
- package/cli/signer-trust.mjs +104 -0
- package/cli/source-reliability.mjs +75 -84
- package/cli/support-arguments.mjs +49 -0
- package/cli/support-command-definitions.mjs +209 -0
- package/cli/support-command-runner.mjs +2 -2
- package/cli/terminal-input.mjs +168 -0
- package/cli/workflow-arguments.mjs +86 -0
- package/cli/workflow-command-definitions.mjs +78 -0
- package/cli/workflow-command-runner.mjs +75 -13
- package/docs/cli-reference.md +103 -30
- package/docs/cli.md +510 -25
- package/docs/contextual-reviews.md +155 -0
- package/lib/abort.mjs +4 -1
- package/lib/analyst-taxonomy.mjs +2 -40
- package/lib/application-version.mjs +1 -1
- package/lib/availability.mjs +27 -754
- package/lib/bounded-contract-normalizers.mjs +4 -0
- package/lib/bounded-file.mjs +3 -1
- package/lib/bounded-html-document.mjs +125 -0
- package/lib/bounded-json.mjs +2 -290
- package/lib/browser-library-profile.mjs +99 -130
- package/lib/browser-library-worker.mjs +112 -0
- package/lib/candidate-provenance-bounds.mjs +2 -0
- package/lib/classify.mjs +1 -1
- package/lib/client-behavior-profile.mjs +3 -3
- package/lib/ct-query.mjs +2 -27
- package/lib/ct-response-bounds.mjs +2 -9
- package/lib/ct-search.mjs +89 -46
- package/lib/dmarc-discovery.mjs +62 -0
- package/lib/dns-convergence-review.mjs +21 -8
- package/lib/dns-delegation-health.mjs +36 -22
- package/lib/dns-inheritance-review.mjs +207 -0
- package/lib/dns-intelligence.mjs +44 -29
- package/lib/dns-mx.mjs +1 -1
- package/lib/dns-query-coverage.mjs +40 -0
- package/lib/dnssec-evidence-validation.mjs +11 -3
- package/lib/domain-assurance.mjs +1 -1
- package/lib/domain-change-packet.mjs +18 -14
- package/lib/domain-change-review.mjs +40 -16
- package/lib/domain-control-flight-recorder.mjs +301 -124
- package/lib/domain-control-manifest.mjs +126 -58
- package/lib/domain-posture-analysis.mjs +41 -11
- package/lib/domain-posture-parsers.mjs +88 -6
- package/lib/domain-posture.mjs +120 -32
- package/lib/domain-registration.mjs +392 -0
- package/lib/evidence-export-privacy.mjs +568 -0
- package/lib/evidence-export.mjs +12 -593
- package/lib/evidence-report.mjs +7 -2
- package/lib/external-intelligence-risk.mjs +2 -124
- package/lib/favicon.mjs +117 -41
- package/lib/generated/cisa-kev-catalog.mjs +50 -4
- package/lib/generated/registrar-standing-catalogue.mjs +18 -10
- package/lib/generated/retire-browser-catalog.mjs +2742 -1034
- package/lib/generated/{unicode-confusables-17.mjs → unicode-confusables.mjs} +33 -33
- package/lib/html-signals.mjs +87 -85
- package/lib/http-evidence-bounds.mjs +2 -7
- package/lib/http-intelligence.mjs +52 -27
- package/lib/idn-confusable-policy.mjs +6 -4
- package/lib/idn-confusables.mjs +1 -1
- package/lib/interchange-fidelity-registry.mjs +10 -0
- package/lib/lookup-cache.mjs +34 -11
- package/lib/lookup-child-profile-contract.mjs +24 -15
- package/lib/lookup-contract-primitives.mjs +1 -1
- package/lib/lookup-diagnostics.mjs +2 -1
- package/lib/lookup-network-evidence-bounds.mjs +1 -10
- package/lib/lookup-progress.mjs +79 -13
- package/lib/lookup-response-contract.mjs +1077 -0
- package/lib/lookup-response.mjs +11 -24
- package/lib/lookup-source-progress.mjs +24 -35
- package/lib/lookup.mjs +49 -28
- package/lib/observed-network-context.mjs +43 -27
- package/lib/opportunity-scoring.mjs +2 -107
- package/lib/outbound-identity.mjs +1 -1
- package/lib/outbound-request-bounds.mjs +4 -1
- package/lib/page-fingerprints.mjs +87 -134
- package/lib/page-role-profile.mjs +12 -8
- package/lib/perceptual-hash-comparison.mjs +2 -34
- package/lib/perceptual-hash.mjs +79 -24
- package/lib/portable-generator.mjs +2 -29
- package/lib/project-metadata.mjs +2 -8
- package/lib/rdap-bootstrap.mjs +72 -22
- package/lib/rdap-client.mjs +26 -14
- package/lib/rdap-normalization.mjs +33 -18
- package/lib/rdap-search-workbench.mjs +1 -1
- package/lib/rdap-transport.mjs +47 -20
- package/lib/rdap-types.mjs +2 -1
- package/lib/rdap.mjs +18 -3
- package/lib/registrable-domain.mjs +2 -36
- package/lib/registrar-standing-contract.mjs +2 -1
- package/lib/registrar-standing.mjs +9 -13
- package/lib/registry-capabilities.mjs +7 -3
- package/lib/registry-capability-catalogue.mjs +29 -20
- package/lib/registry-dates.mjs +2 -190
- package/lib/registry-insights.mjs +56 -18
- package/lib/response-policy.mjs +86 -48
- package/lib/risk-calibration-summary.mjs +2 -338
- package/lib/risk-scoring.mjs +2 -345
- package/lib/rpki-evidence.mjs +8 -5
- package/lib/safe-fetch.mjs +54 -47
- package/lib/scoring-evidence-quality.mjs +2 -107
- package/lib/security-txt.mjs +10 -7
- package/lib/semantic-version.mjs +2 -54
- package/lib/service-binding-dns.mjs +35 -0
- package/lib/smtp-transport-review.mjs +75 -34
- package/lib/sslbl-certificates.generated.mjs +141 -138
- package/lib/static-html-analysis.mjs +117 -146
- package/lib/structured-data-identity.mjs +2 -1
- package/lib/technology-markup.mjs +100 -0
- package/lib/threat-intelligence-manifests.mjs +11 -139
- package/lib/threat-intelligence-runtime.mjs +24 -52
- package/lib/threat-intelligence-targets.mjs +6 -34
- package/lib/threat-intelligence-types.mjs +2 -36
- package/lib/typosquat-generator.mjs +29 -16
- package/lib/urlhaus-intelligence.mjs +8 -3
- package/lib/urlscan-intelligence.mjs +1 -1
- package/lib/website-enrichment.mjs +388 -0
- package/lib/website-security-posture.mjs +30 -6
- package/lib/website-technology.mjs +111 -71
- package/lib/whois-authority.mjs +55 -5
- package/lib/whois-chain.mjs +9 -2
- package/lib/whois-common-formats.mjs +5 -5
- package/lib/whois-contracts.mjs +2 -1
- package/lib/whois-dialects.mjs +2 -2
- package/lib/whois-normalization.mjs +3 -1
- package/lib/whois-parser-support.mjs +8 -1
- package/lib/whois-parser.mjs +5 -3
- package/lib/whois-transport.mjs +23 -7
- package/package.json +14 -14
- package/packages/analysis/analyst-taxonomy.mjs +40 -0
- package/packages/analysis/bounded-json.mjs +330 -0
- package/packages/analysis/candidate-provenance-bounds.mjs +4 -0
- package/packages/analysis/cli-argument-grammar.mjs +216 -0
- package/packages/analysis/ct-query.mjs +27 -0
- package/packages/analysis/ct-response-bounds.mjs +9 -0
- package/packages/analysis/external-intelligence-risk.mjs +124 -0
- package/packages/analysis/http-evidence-bounds.mjs +8 -0
- package/packages/analysis/lookup-network-evidence-bounds.mjs +10 -0
- package/packages/analysis/opportunity-scoring.mjs +107 -0
- package/packages/analysis/perceptual-hash-comparison.mjs +34 -0
- package/packages/analysis/portable-generator.mjs +29 -0
- package/packages/analysis/project-metadata.mjs +8 -0
- package/packages/analysis/registrable-domain.mjs +56 -0
- package/packages/analysis/risk-calibration-summary.mjs +352 -0
- package/packages/analysis/risk-scoring.mjs +345 -0
- package/packages/analysis/scoring-evidence-quality.mjs +107 -0
- package/packages/analysis/semantic-version.mjs +54 -0
- package/packages/analysis/threat-intelligence-types.mjs +75 -0
- package/packages/cases/case-attachment-model.mjs +83 -0
- package/packages/cases/case-evidence-links.mjs +135 -0
- package/packages/cases/case-evidence-model.mjs +229 -69
- package/packages/cases/case-evidence-quality.mjs +5 -0
- package/packages/cases/case-export-input.mjs +55 -0
- package/packages/cases/case-incident-context.mjs +52 -0
- package/packages/cases/case-markdown.mjs +11 -0
- package/packages/cases/case-migration-model.mjs +98 -48
- package/packages/cases/case-model.mjs +1 -0
- package/packages/cases/case-recheck-model.mjs +149 -0
- package/packages/cases/case-record-contracts.mjs +1 -1
- package/packages/cases/case-record-core.mjs +4 -3
- package/packages/cases/case-record-operations.mjs +123 -133
- package/packages/cases/case-record-projection.mjs +30 -20
- package/packages/cases/case-record-version-input.mjs +19 -0
- package/packages/cases/case-report.mjs +114 -67
- package/packages/cases/case-requested-evidence.mjs +146 -0
- package/packages/cases/case-response-actions.mjs +756 -0
- package/packages/cases/case-response-model.mjs +49 -1129
- package/packages/cases/case-response-outcomes.mjs +338 -0
- package/packages/cases/case-response-packet-render.mjs +157 -0
- package/packages/cases/case-response-packet-types.mjs +1 -0
- package/packages/cases/case-response-packet-vocabulary.mjs +48 -0
- package/packages/cases/case-response-packet.mjs +58 -593
- package/packages/cases/case-response-records.mjs +93 -0
- package/packages/cases/case-response-review-inputs.mjs +382 -0
- package/packages/cases/case-response-values.mjs +85 -0
- package/packages/cases/case-review-package.mjs +45 -0
- package/packages/cases/case-selection.mjs +46 -0
- package/packages/cases/case-storage-model.mjs +26 -1
- package/packages/cases/case-workflow-metadata.mjs +225 -0
- package/packages/cases/case-workflow-migration.mjs +43 -0
- package/packages/cases/http-summary.mjs +6 -1
- package/packages/cases/response-route-freshness.mjs +16 -0
- package/packages/comparison/capture-context.mjs +61 -0
- package/packages/comparison/comparison-ledger-bulk.mjs +4 -1
- package/packages/comparison/favicon-similarity.mjs +1 -1
- package/packages/comparison/page-similarity.mjs +3 -2
- package/packages/comparison/relationship-evidence.mjs +103 -14
- package/packages/comparison/relationship-provenance.mjs +99 -0
- package/packages/contracts/analyst-interchange.mjs +234 -0
- package/packages/contracts/analyst-review-state-contract.mjs +11 -0
- package/packages/contracts/analyst-review-state.mjs +5 -4
- package/packages/contracts/case-portability.mjs +370 -114
- package/packages/contracts/case-views-contract.mjs +12 -0
- package/packages/contracts/case-views.mjs +26 -0
- package/packages/contracts/cli-command-semantics.mjs +3 -0
- package/packages/contracts/cli-grammar.mjs +6 -0
- package/packages/contracts/cli-lookup-brief.mjs +2 -0
- package/packages/contracts/cli-lookup.mjs +0 -1
- package/packages/contracts/context-review.mjs +24 -0
- package/packages/contracts/document-intake.mjs +11 -0
- package/packages/contracts/domain-control-flight-recorder.mjs +98 -44
- package/packages/contracts/domain-control-manifest.mjs +128 -74
- package/packages/contracts/domain-control-monitor.mjs +59 -45
- package/packages/contracts/domain-control-review.mjs +200 -121
- package/packages/contracts/domain-name.mjs +21 -0
- package/packages/contracts/external-observation-interchange.mjs +2 -1
- package/packages/contracts/extracted-domain-lifecycle.mjs +11 -32
- package/packages/contracts/har-review.mjs +2 -0
- package/packages/contracts/http-url.mjs +2 -0
- package/packages/contracts/identity-events.mjs +4 -0
- package/packages/contracts/investigation-package-limits.mjs +24 -0
- package/packages/contracts/investigation-portability.mjs +56 -27
- package/packages/contracts/investigation-run.mjs +18 -0
- package/packages/contracts/ip-address.mjs +44 -0
- package/packages/contracts/lookup-evidence.mjs +35 -0
- package/packages/contracts/mail-authentication.mjs +5 -0
- package/packages/contracts/message-intake.mjs +31 -0
- package/packages/contracts/offline-comparison.mjs +4 -2
- package/packages/contracts/page-fingerprints.mjs +15 -0
- package/packages/contracts/passive-mail.mjs +10 -0
- package/packages/contracts/risk-calibration.mjs +0 -1
- package/packages/contracts/schema-compatibility.mjs +1 -1
- package/packages/contracts/schema-lifecycle.mjs +83 -153
- package/packages/contracts/selected-file-limits.mjs +6 -0
- package/packages/contracts/vulnerability-identifiers.mjs +5 -0
- package/packages/contracts/web-capture.mjs +10 -0
- package/packages/contracts/workspace-portability.mjs +219 -238
- package/packages/evidence/artifact-integrity.mjs +8 -2
- package/packages/evidence/artifact-structure.mjs +105 -0
- package/packages/evidence/collection-quality.mjs +67 -0
- package/packages/evidence/decision-fact.mjs +4 -1
- package/packages/evidence/dns-query-outcome.mjs +72 -0
- package/packages/evidence/domain-control-runtime.mjs +155 -27
- package/packages/evidence/domain-posture-context.mjs +79 -0
- package/packages/evidence/email-recipient.mjs +18 -0
- package/packages/evidence/image-regions.mjs +56 -0
- package/packages/evidence/latest-observations.mjs +28 -0
- package/packages/evidence/lookup-target.mjs +108 -0
- package/packages/evidence/observation.mjs +18 -1
- package/packages/evidence/passphrase-encryption.mjs +44 -0
- package/packages/evidence/png-pixels.mjs +117 -0
- package/packages/evidence/public-address-policy.mjs +83 -0
- package/packages/evidence/record-identity.mjs +72 -0
- package/packages/evidence/registry-dates.mjs +190 -0
- package/packages/evidence/retained-file.mjs +69 -0
- package/packages/evidence/review-age.mjs +14 -0
- package/packages/interchange/bagit.mjs +342 -0
- package/packages/interchange/bounded-zip-extraction.mjs +278 -0
- package/packages/interchange/crc32.mjs +17 -0
- package/packages/interchange/defensive-indicator-export.mjs +264 -0
- package/packages/interchange/external-findings-import.mjs +93 -61
- package/packages/interchange/managed-indicator-export.mjs +35 -0
- package/packages/interchange/managed-indicator-set.mjs +210 -0
- package/packages/interchange/misp-indicator-export.mjs +93 -0
- package/packages/interchange/sharing-policy.mjs +56 -0
- package/packages/interchange/stix-indicator-export.mjs +129 -0
- package/packages/interchange/web-capture-import.mjs +389 -0
- package/packages/investigation/acquisition-decision-packet.mjs +1 -1
- package/packages/investigation/bulk-mail-exposure.mjs +9 -14
- package/packages/investigation/capture-coverage.mjs +57 -0
- package/packages/investigation/connector-provenance-review.mjs +100 -0
- package/packages/investigation/context-review.mjs +35 -0
- package/packages/investigation/document-intake.mjs +81 -0
- package/packages/investigation/docx-intake.mjs +133 -0
- package/packages/investigation/domain-history-review.mjs +100 -0
- package/packages/investigation/domain-transition-review.mjs +47 -0
- package/packages/investigation/evidence-coverage-ledger.mjs +9 -1
- package/packages/investigation/har-intake.mjs +68 -0
- package/packages/investigation/identity-event-intake.mjs +131 -0
- package/packages/investigation/identity-incident-review.mjs +39 -0
- package/packages/investigation/incident-sequence-review.mjs +58 -0
- package/packages/investigation/intake-report.mjs +19 -0
- package/packages/investigation/investigation-bagit.mjs +14 -0
- package/packages/investigation/investigation-capsule.mjs +33 -5
- package/packages/investigation/investigation-manifest.mjs +200 -0
- package/packages/investigation/investigation-package-crypto.mjs +98 -0
- package/packages/investigation/investigation-package.mjs +200 -0
- package/packages/investigation/link-intake.mjs +179 -0
- package/packages/investigation/lookup-asset-graph-inputs.mjs +38 -0
- package/packages/investigation/lookup-asset-graph.mjs +161 -141
- package/packages/investigation/lookup-claim-readiness.mjs +18 -0
- package/packages/investigation/lookup-investigation-brief.mjs +3 -3
- package/packages/investigation/lookup-task-guidance.mjs +58 -0
- package/packages/investigation/mail-authentication-review.mjs +222 -0
- package/packages/investigation/mail-header-identity.mjs +209 -0
- package/packages/investigation/message-intake.mjs +195 -0
- package/packages/investigation/page-behaviour.mjs +113 -0
- package/packages/investigation/pdf-intake.mjs +155 -0
- package/packages/investigation/platform-continuity-review.mjs +60 -0
- package/packages/investigation/qr-intake.mjs +56 -0
- package/packages/investigation/requested-action-hints.mjs +11 -0
- package/packages/investigation/selected-input-review.mjs +17 -0
- package/packages/investigation/storefront-review.mjs +70 -0
- package/packages/monitoring/analyst-review-state.mjs +38 -90
- package/packages/workspace/brand-profile-model.mjs +160 -22
- package/packages/workspace/bulk-columns.mjs +17 -0
- package/packages/workspace/bulk-review-model.mjs +39 -31
- package/packages/workspace/bulk-session-model.mjs +112 -27
- package/packages/workspace/bulk-sort.mjs +1 -0
- package/packages/workspace/campaign-model.mjs +1 -1
- package/packages/workspace/case-views.mjs +102 -0
- package/packages/workspace/detection-rule-model.mjs +1 -1
- package/packages/workspace/hostile-input.mjs +29 -8
- package/packages/workspace/investigation-guide.mjs +2 -2
- package/packages/workspace/investigation-template-model.mjs +45 -6
- package/packages/workspace/page-baseline.mjs +20 -17
- package/packages/workspace/relationship-observation-model.mjs +54 -35
- package/packages/workspace/shortlist-model.mjs +14 -5
- package/packages/workspace/watchlist-history.mjs +30 -14
- package/packages/workspace/watchlist-store.mjs +24 -6
- package/packages/workspace/website-snapshot-model.mjs +98 -33
- package/packages/workspace/workspace-archive-crypto.mjs +41 -61
- package/packages/workspace/workspace-archive.mjs +90 -25
- package/third-party-notices.txt +577 -17
- package/lib/hostname.mjs +0 -38
- package/packages/investigation/bulk-review-export.mjs +0 -63
|
@@ -1,14 +1,19 @@
|
|
|
1
1
|
import { defineSchemaCompatibility } from "./schema-compatibility.mjs";
|
|
2
2
|
import { defineSchemaLifecycleFamily } from "./schema-lifecycle.mjs";
|
|
3
|
-
import {
|
|
3
|
+
import { PUBLIC_DOMAIN_CONTROL_MANIFEST_ENTRY_KEYS, PUBLIC_DOMAIN_CONTROL_MANIFEST_LIMITATIONS, DOMAIN_CONTROL_MANIFEST_INTEGRITY_KEYS, DOMAIN_CONTROL_MANIFEST_ROOT_KEYS, DOMAIN_CONTROL_SPKI_SHA256_HEX_LENGTH, DOMAIN_CONTROL_TEXT_INPUT_BOUND_FACTOR, MAX_CURRENT_DOMAIN_CONTROL_RECORDS, MAX_CANONICAL_DOMAIN_CONTROL_RECORDS, MAX_DOMAIN_CONTROL_CLI_REVIEW_JSON_DEPTH, MAX_DOMAIN_CONTROL_CLI_REVIEW_JSON_KEYS, MAX_DOMAIN_CONTROL_CLI_REVIEW_JSON_VALUES, MAX_DOMAIN_CONTROL_DOMAIN_LENGTH, MAX_DOMAIN_CONTROL_INPUT_RECORDS, MAX_DOMAIN_CONTROL_JSON_CONTAINER_ITEMS, MAX_DOMAIN_CONTROL_MANIFEST_BYTES, MAX_DOMAIN_CONTROL_MANIFEST_ENTRIES, MAX_DOMAIN_CONTROL_TIMESTAMP_LENGTH, } from "./domain-control-manifest.mjs";
|
|
4
4
|
import { MAX_DOMAIN_CONTROL_MONITOR_CONCURRENCY, MAX_DOMAIN_CONTROL_MONITOR_DOMAINS, MIN_DOMAIN_CONTROL_MONITOR_CONCURRENCY, MIN_DOMAIN_CONTROL_MONITOR_DOMAINS, } from "./domain-control-monitor.mjs";
|
|
5
5
|
import { MAX_CLI_LOOKUP_BYTES } from "./cli-lookup.mjs";
|
|
6
|
+
import { DOMAIN_CONTROL_FLIGHT_RECORDER_OBSERVATION_KEYS, PUBLIC_DOMAIN_CONTROL_FLIGHT_RECORDER_OBSERVATION_KEYS, DOMAIN_CONTROL_FLIGHT_RECORDER_FIELD_KEYS, PUBLIC_DOMAIN_CONTROL_FLIGHT_RECORDER_FIELD_KEYS, } from "./domain-control-flight-recorder.mjs";
|
|
6
7
|
export const DOMAIN_CONTROL_REVIEW_INPUT_SCHEMA = 'whoisleuth.domain-control-review-input';
|
|
7
8
|
export const DOMAIN_CONTROL_REVIEW_SCHEMA = 'whoisleuth.domain-control-review';
|
|
8
9
|
export const CLI_DOMAIN_CONTROL_REVIEW_INPUT_SCHEMA = 'whoisleuth.cli.domain-control-review-input';
|
|
9
10
|
export const CLI_DOMAIN_CONTROL_REVIEW_SCHEMA = 'whoisleuth.cli.domain-control-review';
|
|
10
|
-
export const
|
|
11
|
-
export const
|
|
11
|
+
export const PUBLIC_DOMAIN_CONTROL_REVIEW_VERSION = 1;
|
|
12
|
+
export const PUBLIC_CLI_DOMAIN_CONTROL_REVIEW_VERSION = 1;
|
|
13
|
+
export const DOMAIN_CONTROL_REVIEW_VERSION = 3;
|
|
14
|
+
export const CLI_DOMAIN_CONTROL_REVIEW_VERSION = 3;
|
|
15
|
+
export const SUPPORTED_DOMAIN_CONTROL_REVIEW_VERSIONS = [PUBLIC_DOMAIN_CONTROL_REVIEW_VERSION, 2, DOMAIN_CONTROL_REVIEW_VERSION];
|
|
16
|
+
export const SUPPORTED_CLI_DOMAIN_CONTROL_REVIEW_VERSIONS = [PUBLIC_CLI_DOMAIN_CONTROL_REVIEW_VERSION, 2, CLI_DOMAIN_CONTROL_REVIEW_VERSION];
|
|
12
17
|
export const DOMAIN_CONTROL_REVIEW_OBSERVATION_FACTOR = 2;
|
|
13
18
|
export const MAX_DOMAIN_CONTROL_REVIEW_OBSERVATIONS = MAX_DOMAIN_CONTROL_MANIFEST_ENTRIES
|
|
14
19
|
* DOMAIN_CONTROL_REVIEW_OBSERVATION_FACTOR;
|
|
@@ -73,7 +78,7 @@ export const DOMAIN_CONTROL_REVIEW_MANIFEST_SUMMARY_KEYS = Object.freeze([
|
|
|
73
78
|
'digestSha256',
|
|
74
79
|
'expired',
|
|
75
80
|
]);
|
|
76
|
-
export const
|
|
81
|
+
export const PUBLIC_DOMAIN_CONTROL_REVIEW_COUNT_KEYS = Object.freeze([
|
|
77
82
|
'aligned',
|
|
78
83
|
'drift',
|
|
79
84
|
'partial',
|
|
@@ -82,12 +87,14 @@ export const DOMAIN_CONTROL_REVIEW_COUNT_KEYS = Object.freeze([
|
|
|
82
87
|
'not_configured',
|
|
83
88
|
'due',
|
|
84
89
|
]);
|
|
90
|
+
export const DOMAIN_CONTROL_REVIEW_V2_COUNT_KEYS = Object.freeze([...PUBLIC_DOMAIN_CONTROL_REVIEW_COUNT_KEYS, 'observed']);
|
|
91
|
+
export const DOMAIN_CONTROL_REVIEW_COUNT_KEYS = Object.freeze([...DOMAIN_CONTROL_REVIEW_V2_COUNT_KEYS, 'not_due']);
|
|
85
92
|
export const DOMAIN_CONTROL_REVIEW_DOMAIN_KEYS = Object.freeze([
|
|
86
93
|
'domain',
|
|
87
94
|
'state',
|
|
88
95
|
'comparisons',
|
|
89
96
|
]);
|
|
90
|
-
export const
|
|
97
|
+
export const PUBLIC_DOMAIN_CONTROL_REVIEW_COMPARISON_KEYS = Object.freeze([
|
|
91
98
|
'field',
|
|
92
99
|
'state',
|
|
93
100
|
'desired',
|
|
@@ -96,11 +103,27 @@ export const DOMAIN_CONTROL_REVIEW_COMPARISON_KEYS = Object.freeze([
|
|
|
96
103
|
'observedAt',
|
|
97
104
|
'explanation',
|
|
98
105
|
]);
|
|
99
|
-
export const
|
|
106
|
+
export const DOMAIN_CONTROL_REVIEW_COMPARISON_KEYS = Object.freeze([...PUBLIC_DOMAIN_CONTROL_REVIEW_COMPARISON_KEYS, 'expectation']);
|
|
107
|
+
export const PUBLIC_DOMAIN_CONTROL_REVIEW_LIMITATIONS = Object.freeze([
|
|
100
108
|
'This local review compares analyst-authored desired state with separately supplied observations and performs no collection or configuration change.',
|
|
101
109
|
'Only complete observations can produce drift. Partial, unavailable, unsupported, or missing evidence remains inconclusive.',
|
|
102
110
|
'A valid manifest digest or signature establishes file integrity, not the correctness of the desired state or supplied observations.',
|
|
103
111
|
]);
|
|
112
|
+
export const DOMAIN_CONTROL_REVIEW_V2_LIMITATIONS = Object.freeze([
|
|
113
|
+
PUBLIC_DOMAIN_CONTROL_REVIEW_LIMITATIONS[0],
|
|
114
|
+
'Only complete observations with valid source times within the current review-age window can establish alignment, drift or expected absence. Observation-only fields do not establish alignment.',
|
|
115
|
+
PUBLIC_DOMAIN_CONTROL_REVIEW_LIMITATIONS[2],
|
|
116
|
+
]);
|
|
117
|
+
export const DOMAIN_CONTROL_REVIEW_LIMITATIONS = Object.freeze([
|
|
118
|
+
...DOMAIN_CONTROL_REVIEW_V2_LIMITATIONS,
|
|
119
|
+
'Renewal dates are analyst-authored reminders, not observations of configuration.',
|
|
120
|
+
]);
|
|
121
|
+
export function domainControlReviewCountKeys(version) {
|
|
122
|
+
return version === 1 ? PUBLIC_DOMAIN_CONTROL_REVIEW_COUNT_KEYS : version === 2 ? DOMAIN_CONTROL_REVIEW_V2_COUNT_KEYS : DOMAIN_CONTROL_REVIEW_COUNT_KEYS;
|
|
123
|
+
}
|
|
124
|
+
export function domainControlReviewLimitations(version) {
|
|
125
|
+
return version === 1 ? PUBLIC_DOMAIN_CONTROL_REVIEW_LIMITATIONS : version === 2 ? DOMAIN_CONTROL_REVIEW_V2_LIMITATIONS : DOMAIN_CONTROL_REVIEW_LIMITATIONS;
|
|
126
|
+
}
|
|
104
127
|
export const CLI_DOMAIN_CONTROL_REVIEW_INPUT_KEYS = Object.freeze([
|
|
105
128
|
'schema',
|
|
106
129
|
'version',
|
|
@@ -116,37 +139,34 @@ export const CLI_DOMAIN_CONTROL_REVIEW_ROOT_KEYS = Object.freeze([
|
|
|
116
139
|
'input',
|
|
117
140
|
'limitations',
|
|
118
141
|
]);
|
|
119
|
-
export const
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
'fields',
|
|
124
|
-
]);
|
|
125
|
-
export const CLI_DOMAIN_CONTROL_REVIEW_FIELD_KEYS = Object.freeze([
|
|
126
|
-
'id',
|
|
127
|
-
'source',
|
|
128
|
-
'state',
|
|
129
|
-
'values',
|
|
130
|
-
]);
|
|
142
|
+
export const PUBLIC_CLI_DOMAIN_CONTROL_REVIEW_OBSERVATION_KEYS = PUBLIC_DOMAIN_CONTROL_FLIGHT_RECORDER_OBSERVATION_KEYS;
|
|
143
|
+
export const CLI_DOMAIN_CONTROL_REVIEW_OBSERVATION_KEYS = DOMAIN_CONTROL_FLIGHT_RECORDER_OBSERVATION_KEYS;
|
|
144
|
+
export const PUBLIC_CLI_DOMAIN_CONTROL_REVIEW_FIELD_KEYS = PUBLIC_DOMAIN_CONTROL_FLIGHT_RECORDER_FIELD_KEYS;
|
|
145
|
+
export const CLI_DOMAIN_CONTROL_REVIEW_FIELD_KEYS = DOMAIN_CONTROL_FLIGHT_RECORDER_FIELD_KEYS;
|
|
131
146
|
export const CLI_DOMAIN_CONTROL_REVIEW_INPUT_SUMMARY_KEYS = Object.freeze([
|
|
132
147
|
'lookupsReceived',
|
|
133
148
|
'latestDomainObservations',
|
|
134
149
|
'ignoredHistoricalLookups',
|
|
135
150
|
]);
|
|
136
|
-
export const
|
|
151
|
+
export const PUBLIC_CLI_DOMAIN_CONTROL_REVIEW_LIMITATIONS = Object.freeze([
|
|
137
152
|
'The review uses only supplied saved Lookup documents and performs no request.',
|
|
138
153
|
'The newest supplied observation per domain is used for desired-state comparison; all supplied observations remain available to a separate flight-recorder review.',
|
|
139
154
|
'Raw RDAP, WHOIS, HTTP, TLS, and page payloads are not copied into this output.',
|
|
140
155
|
]);
|
|
156
|
+
export const CLI_DOMAIN_CONTROL_REVIEW_LIMITATIONS = Object.freeze([
|
|
157
|
+
PUBLIC_CLI_DOMAIN_CONTROL_REVIEW_LIMITATIONS[0],
|
|
158
|
+
'The newest supplied capture per domain is reviewed using each field’s retained source time. Missing or conflicting source times remain inconclusive.',
|
|
159
|
+
PUBLIC_CLI_DOMAIN_CONTROL_REVIEW_LIMITATIONS[2],
|
|
160
|
+
]);
|
|
141
161
|
export const DOMAIN_CONTROL_REVIEW_INPUT_COMPATIBILITY = defineSchemaCompatibility({
|
|
142
162
|
id: 'cli.domain-control-review-core-input',
|
|
143
163
|
kind: 'cli_document',
|
|
144
164
|
schema: DOMAIN_CONTROL_REVIEW_INPUT_SCHEMA,
|
|
145
165
|
currentVersion: DOMAIN_CONTROL_REVIEW_VERSION,
|
|
146
|
-
supportedVersions:
|
|
166
|
+
supportedVersions: SUPPORTED_DOMAIN_CONTROL_REVIEW_VERSIONS,
|
|
147
167
|
acceptsUnversionedLegacy: false,
|
|
148
168
|
futureVersionBehavior: 'reject',
|
|
149
|
-
migration: '
|
|
169
|
+
migration: 'read_only',
|
|
150
170
|
writeSemantics: 'read_only',
|
|
151
171
|
byteBudget: null,
|
|
152
172
|
owner: 'packages/contracts/domain-control-review.mts',
|
|
@@ -157,10 +177,10 @@ export const DOMAIN_CONTROL_REVIEW_COMPATIBILITY = defineSchemaCompatibility({
|
|
|
157
177
|
kind: 'cli_document',
|
|
158
178
|
schema: DOMAIN_CONTROL_REVIEW_SCHEMA,
|
|
159
179
|
currentVersion: DOMAIN_CONTROL_REVIEW_VERSION,
|
|
160
|
-
supportedVersions:
|
|
180
|
+
supportedVersions: SUPPORTED_DOMAIN_CONTROL_REVIEW_VERSIONS,
|
|
161
181
|
acceptsUnversionedLegacy: false,
|
|
162
182
|
futureVersionBehavior: 'reject',
|
|
163
|
-
migration: '
|
|
183
|
+
migration: 'read_only',
|
|
164
184
|
writeSemantics: 'read_only',
|
|
165
185
|
byteBudget: null,
|
|
166
186
|
owner: 'packages/contracts/domain-control-review.mts',
|
|
@@ -171,10 +191,10 @@ export const CLI_DOMAIN_CONTROL_REVIEW_INPUT_COMPATIBILITY = defineSchemaCompati
|
|
|
171
191
|
kind: 'cli_document',
|
|
172
192
|
schema: CLI_DOMAIN_CONTROL_REVIEW_INPUT_SCHEMA,
|
|
173
193
|
currentVersion: CLI_DOMAIN_CONTROL_REVIEW_VERSION,
|
|
174
|
-
supportedVersions:
|
|
194
|
+
supportedVersions: SUPPORTED_CLI_DOMAIN_CONTROL_REVIEW_VERSIONS,
|
|
175
195
|
acceptsUnversionedLegacy: false,
|
|
176
196
|
futureVersionBehavior: 'reject',
|
|
177
|
-
migration: '
|
|
197
|
+
migration: 'read_only',
|
|
178
198
|
writeSemantics: 'read_only',
|
|
179
199
|
byteBudget: MAX_DOMAIN_CONTROL_REVIEW_INPUT_BYTES,
|
|
180
200
|
owner: 'packages/contracts/domain-control-review.mts',
|
|
@@ -185,7 +205,7 @@ export const CLI_DOMAIN_CONTROL_REVIEW_COMPATIBILITY = defineSchemaCompatibility
|
|
|
185
205
|
kind: 'cli_document',
|
|
186
206
|
schema: CLI_DOMAIN_CONTROL_REVIEW_SCHEMA,
|
|
187
207
|
currentVersion: CLI_DOMAIN_CONTROL_REVIEW_VERSION,
|
|
188
|
-
supportedVersions:
|
|
208
|
+
supportedVersions: SUPPORTED_CLI_DOMAIN_CONTROL_REVIEW_VERSIONS,
|
|
189
209
|
acceptsUnversionedLegacy: false,
|
|
190
210
|
futureVersionBehavior: 'not_applicable',
|
|
191
211
|
migration: 'read_only',
|
|
@@ -194,15 +214,15 @@ export const CLI_DOMAIN_CONTROL_REVIEW_COMPATIBILITY = defineSchemaCompatibility
|
|
|
194
214
|
owner: 'packages/contracts/domain-control-review.mts',
|
|
195
215
|
note: 'Compact source-qualified control observations and desired-state comparison.',
|
|
196
216
|
});
|
|
197
|
-
const CORE_REVIEW_SHAPES = [
|
|
217
|
+
const CORE_REVIEW_SHAPES = SUPPORTED_DOMAIN_CONTROL_REVIEW_VERSIONS.flatMap((version) => [
|
|
198
218
|
{
|
|
199
|
-
id:
|
|
219
|
+
id: `domain-control-review.input.v${version}`,
|
|
200
220
|
schema: DOMAIN_CONTROL_REVIEW_INPUT_SCHEMA,
|
|
201
|
-
versions: [
|
|
221
|
+
versions: [version],
|
|
202
222
|
objects: [
|
|
203
223
|
{ path: '$', requiredKeys: DOMAIN_CONTROL_REVIEW_INPUT_KEYS, optionalKeys: [], unknownKeys: 'reject' },
|
|
204
224
|
{ path: '$.manifest', requiredKeys: DOMAIN_CONTROL_MANIFEST_ROOT_KEYS, optionalKeys: [], unknownKeys: 'reject' },
|
|
205
|
-
{ path: '$.manifest.entries[]', requiredKeys:
|
|
225
|
+
{ path: '$.manifest.entries[]', requiredKeys: PUBLIC_DOMAIN_CONTROL_MANIFEST_ENTRY_KEYS, optionalKeys: version === PUBLIC_DOMAIN_CONTROL_REVIEW_VERSION ? [] : ['recordModes'], unknownKeys: 'reject' },
|
|
206
226
|
{ path: '$.manifest.integrity', requiredKeys: DOMAIN_CONTROL_MANIFEST_INTEGRITY_KEYS, optionalKeys: [], unknownKeys: 'reject' },
|
|
207
227
|
{ path: '$.observations[]', requiredKeys: DOMAIN_CONTROL_REVIEW_OBSERVATION_KEYS, optionalKeys: [], unknownKeys: 'reject' },
|
|
208
228
|
{ path: '$.observations[].fields', requiredKeys: [], optionalKeys: DOMAIN_CONTROL_REVIEW_FIELDS, unknownKeys: 'reject' },
|
|
@@ -213,26 +233,58 @@ const CORE_REVIEW_SHAPES = [
|
|
|
213
233
|
unknownKeys: 'reject',
|
|
214
234
|
})),
|
|
215
235
|
],
|
|
216
|
-
fixedArrays: [{ path: '$.manifest.limitations', values:
|
|
236
|
+
fixedArrays: version === PUBLIC_DOMAIN_CONTROL_REVIEW_VERSION ? [{ path: '$.manifest.limitations', values: PUBLIC_DOMAIN_CONTROL_MANIFEST_LIMITATIONS }] : [],
|
|
217
237
|
normalisation: 'input_to_current',
|
|
218
238
|
target: { schema: DOMAIN_CONTROL_REVIEW_SCHEMA, version: DOMAIN_CONTROL_REVIEW_VERSION },
|
|
219
239
|
},
|
|
220
240
|
{
|
|
221
|
-
id:
|
|
241
|
+
id: `domain-control-review.document.v${version}`,
|
|
222
242
|
schema: DOMAIN_CONTROL_REVIEW_SCHEMA,
|
|
223
|
-
versions: [
|
|
243
|
+
versions: [version],
|
|
224
244
|
objects: [
|
|
225
245
|
{ path: '$', requiredKeys: DOMAIN_CONTROL_REVIEW_ROOT_KEYS, optionalKeys: [], unknownKeys: 'reject' },
|
|
226
246
|
{ path: '$.manifest', requiredKeys: DOMAIN_CONTROL_REVIEW_MANIFEST_SUMMARY_KEYS, optionalKeys: [], unknownKeys: 'reject' },
|
|
227
|
-
{ path: '$.counts', requiredKeys:
|
|
247
|
+
{ path: '$.counts', requiredKeys: domainControlReviewCountKeys(version), optionalKeys: [], unknownKeys: 'reject' },
|
|
228
248
|
{ path: '$.domains[]', requiredKeys: DOMAIN_CONTROL_REVIEW_DOMAIN_KEYS, optionalKeys: [], unknownKeys: 'reject' },
|
|
229
|
-
{ path: '$.domains[].comparisons[]', requiredKeys: DOMAIN_CONTROL_REVIEW_COMPARISON_KEYS, optionalKeys: [], unknownKeys: 'reject' },
|
|
249
|
+
{ path: '$.domains[].comparisons[]', requiredKeys: version === PUBLIC_DOMAIN_CONTROL_REVIEW_VERSION ? PUBLIC_DOMAIN_CONTROL_REVIEW_COMPARISON_KEYS : DOMAIN_CONTROL_REVIEW_COMPARISON_KEYS, optionalKeys: [], unknownKeys: 'reject' },
|
|
230
250
|
],
|
|
231
|
-
fixedArrays: [{ path: '$.limitations', values:
|
|
251
|
+
fixedArrays: [{ path: '$.limitations', values: domainControlReviewLimitations(version) }],
|
|
232
252
|
normalisation: 'preserve_document',
|
|
233
253
|
target: null,
|
|
234
254
|
},
|
|
235
|
-
];
|
|
255
|
+
]);
|
|
256
|
+
const CORE_BOUND_PROFILE_IDS = SUPPORTED_DOMAIN_CONTROL_REVIEW_VERSIONS.map((version) => `domain-control-review.core.v${version}`);
|
|
257
|
+
const CORE_INPUT_SHAPE_IDS = SUPPORTED_DOMAIN_CONTROL_REVIEW_VERSIONS.map((version) => `domain-control-review.input.v${version}`);
|
|
258
|
+
const CORE_DOCUMENT_SHAPE_IDS = SUPPORTED_DOMAIN_CONTROL_REVIEW_VERSIONS.map((version) => `domain-control-review.document.v${version}`);
|
|
259
|
+
const CURRENT_CORE_DOCUMENT_SHAPE_ID = `domain-control-review.document.v${DOMAIN_CONTROL_REVIEW_VERSION}`;
|
|
260
|
+
const CLI_INPUT_SHAPE_IDS = SUPPORTED_CLI_DOMAIN_CONTROL_REVIEW_VERSIONS.map((version) => `domain-control-review.cli-input.v${version}`);
|
|
261
|
+
const CURRENT_CLI_DOCUMENT_SHAPE_ID = `domain-control-review.cli-document.v${CLI_DOMAIN_CONTROL_REVIEW_VERSION}`;
|
|
262
|
+
function reviewFixtureShapeId(schema, version) {
|
|
263
|
+
const cli = schema.startsWith('whoisleuth.cli.');
|
|
264
|
+
return `domain-control-review.${cli ? 'cli-' : ''}${schema.endsWith('-input') ? 'input' : 'document'}.v${version}`;
|
|
265
|
+
}
|
|
266
|
+
const CURRENT_REVIEW_FIXTURE_CONTENT = {
|
|
267
|
+
"domain-control-review-input-v3": { "bytes": 1879, "sha256": "747cccb9a0610dd5b77ebd2a01f44dc7bd6a929b09b6e52037596427d0c2275b" },
|
|
268
|
+
"domain-control-review-v3": { "bytes": 4496, "sha256": "736926cf402ca868ddc832c229b88d3c91b44a4c73563c356633a69c1ec8d06c" },
|
|
269
|
+
"cli-domain-control-review-input-v3": { "bytes": 4123, "sha256": "0283efe6f78551a8aa5a9449a608fb4f3b46b39a9f11f6ffe93244979b16d30b" },
|
|
270
|
+
"cli-domain-control-review-v3": { "bytes": 9194, "sha256": "31c263f17cd663be74ab9801970a8800894da4023842137e41f602fde633452e" },
|
|
271
|
+
"domain-control-review-input-v2": {
|
|
272
|
+
"bytes": 1879,
|
|
273
|
+
"sha256": "ac3b5913a44c47bd179cd69e4a8bf4268f10e9f01dd7f59c7d722a8c0d241ad1"
|
|
274
|
+
},
|
|
275
|
+
"domain-control-review-v2": {
|
|
276
|
+
"bytes": 4386,
|
|
277
|
+
"sha256": "e85870d7c978f484a47c807104cab038af2aa30265d05cae1b129ce663e7b9b8"
|
|
278
|
+
},
|
|
279
|
+
"cli-domain-control-review-input-v2": {
|
|
280
|
+
"bytes": 4123,
|
|
281
|
+
"sha256": "ae360c4bcc2f6c3b48b5e9cef524b51ac25f958a88184d6f7efdf26eadfd815f"
|
|
282
|
+
},
|
|
283
|
+
"cli-domain-control-review-v2": {
|
|
284
|
+
"bytes": 9084,
|
|
285
|
+
"sha256": "4befd3e6e81873497a0d56b8337a6540516f36cfdb81d35a26c807875488e309"
|
|
286
|
+
}
|
|
287
|
+
};
|
|
236
288
|
export const DOMAIN_CONTROL_REVIEW_SCHEMA_LIFECYCLE = defineSchemaLifecycleFamily({
|
|
237
289
|
id: 'domain-control-review',
|
|
238
290
|
owner: 'packages/contracts/domain-control-review.mts',
|
|
@@ -283,7 +335,7 @@ export const DOMAIN_CONTROL_REVIEW_SCHEMA_LIFECYCLE = defineSchemaLifecycleFamil
|
|
|
283
335
|
role: 'input',
|
|
284
336
|
lifecycle: 'current',
|
|
285
337
|
readable: true,
|
|
286
|
-
emitted:
|
|
338
|
+
emitted: false,
|
|
287
339
|
exactKeys: true,
|
|
288
340
|
extensionPolicy: 'reject',
|
|
289
341
|
futureVersionBehaviour: 'reject',
|
|
@@ -308,7 +360,15 @@ export const DOMAIN_CONTROL_REVIEW_SCHEMA_LIFECYCLE = defineSchemaLifecycleFamil
|
|
|
308
360
|
byteBudget: null,
|
|
309
361
|
fixtureIds: ['cli-domain-control-review-v1'],
|
|
310
362
|
},
|
|
311
|
-
]
|
|
363
|
+
].flatMap((contract) => {
|
|
364
|
+
const versions = contract.schema.startsWith('whoisleuth.cli.') ? SUPPORTED_CLI_DOMAIN_CONTROL_REVIEW_VERSIONS : SUPPORTED_DOMAIN_CONTROL_REVIEW_VERSIONS;
|
|
365
|
+
return versions.map((version) => ({
|
|
366
|
+
...contract, version,
|
|
367
|
+
lifecycle: version === contract.version ? 'current' : contract.readable ? 'legacy' : 'retired',
|
|
368
|
+
emitted: contract.emitted && version === contract.version,
|
|
369
|
+
fixtureIds: contract.fixtureIds.map((id) => id.replace(/v\d+$/u, `v${version}`)),
|
|
370
|
+
}));
|
|
371
|
+
}),
|
|
312
372
|
fixtures: [
|
|
313
373
|
{
|
|
314
374
|
id: 'domain-control-review-input-v1',
|
|
@@ -317,7 +377,7 @@ export const DOMAIN_CONTROL_REVIEW_SCHEMA_LIFECYCLE = defineSchemaLifecycleFamil
|
|
|
317
377
|
sha256: 'ca6e894a67715fa93a872d189fe22a21dc516200f672546de7cc8ffe2df12329',
|
|
318
378
|
contentDigestSha256: null,
|
|
319
379
|
schema: DOMAIN_CONTROL_REVIEW_INPUT_SCHEMA,
|
|
320
|
-
version:
|
|
380
|
+
version: PUBLIC_DOMAIN_CONTROL_REVIEW_VERSION,
|
|
321
381
|
role: 'input',
|
|
322
382
|
expectation: 'normalises_to_current_output',
|
|
323
383
|
expectedOutputFixtureId: 'domain-control-review-v1',
|
|
@@ -330,7 +390,7 @@ export const DOMAIN_CONTROL_REVIEW_SCHEMA_LIFECYCLE = defineSchemaLifecycleFamil
|
|
|
330
390
|
sha256: '1ac47d146aee742dd9e1c2b9755bfd8d59d1104b005bedd21d63f42c68d255ec',
|
|
331
391
|
contentDigestSha256: null,
|
|
332
392
|
schema: DOMAIN_CONTROL_REVIEW_SCHEMA,
|
|
333
|
-
version:
|
|
393
|
+
version: PUBLIC_DOMAIN_CONTROL_REVIEW_VERSION,
|
|
334
394
|
role: 'current',
|
|
335
395
|
expectation: 'accepted_exact',
|
|
336
396
|
expectedOutputFixtureId: null,
|
|
@@ -343,7 +403,7 @@ export const DOMAIN_CONTROL_REVIEW_SCHEMA_LIFECYCLE = defineSchemaLifecycleFamil
|
|
|
343
403
|
sha256: 'b4f2005738bf6d8f12433304f20b503eb3ee47778bef9daa1cf1d4fdddae8621',
|
|
344
404
|
contentDigestSha256: null,
|
|
345
405
|
schema: CLI_DOMAIN_CONTROL_REVIEW_INPUT_SCHEMA,
|
|
346
|
-
version:
|
|
406
|
+
version: PUBLIC_CLI_DOMAIN_CONTROL_REVIEW_VERSION,
|
|
347
407
|
role: 'input',
|
|
348
408
|
expectation: 'normalises_to_current_output',
|
|
349
409
|
expectedOutputFixtureId: 'cli-domain-control-review-v1',
|
|
@@ -356,58 +416,73 @@ export const DOMAIN_CONTROL_REVIEW_SCHEMA_LIFECYCLE = defineSchemaLifecycleFamil
|
|
|
356
416
|
sha256: 'd6e24209da9d4e41d2065bab493c035adf117faa5bacc8c8ce30c56c8aef0b93',
|
|
357
417
|
contentDigestSha256: null,
|
|
358
418
|
schema: CLI_DOMAIN_CONTROL_REVIEW_SCHEMA,
|
|
359
|
-
version:
|
|
419
|
+
version: PUBLIC_CLI_DOMAIN_CONTROL_REVIEW_VERSION,
|
|
360
420
|
role: 'current',
|
|
361
421
|
expectation: 'accepted_exact',
|
|
362
422
|
expectedOutputFixtureId: null,
|
|
363
423
|
scope: 'repository',
|
|
364
424
|
},
|
|
365
|
-
]
|
|
425
|
+
].flatMap((fixture) => {
|
|
426
|
+
const currentVersion = fixture.schema.startsWith('whoisleuth.cli.') ? CLI_DOMAIN_CONTROL_REVIEW_VERSION : DOMAIN_CONTROL_REVIEW_VERSION;
|
|
427
|
+
const versions = fixture.schema.startsWith('whoisleuth.cli.') ? SUPPORTED_CLI_DOMAIN_CONTROL_REVIEW_VERSIONS : SUPPORTED_DOMAIN_CONTROL_REVIEW_VERSIONS;
|
|
428
|
+
return versions.map((version) => {
|
|
429
|
+
const id = fixture.id.replace(/v\d+$/u, `v${version}`);
|
|
430
|
+
const current = version === currentVersion;
|
|
431
|
+
return {
|
|
432
|
+
...fixture, ...(version === 1 ? {} : CURRENT_REVIEW_FIXTURE_CONTENT[id]), id,
|
|
433
|
+
path: `test/fixtures/${id}.json`, version, shapeId: reviewFixtureShapeId(fixture.schema, version),
|
|
434
|
+
role: fixture.role === 'input' ? 'input' : current ? 'current' : 'historical',
|
|
435
|
+
expectation: current ? fixture.expectation : fixture.schema === CLI_DOMAIN_CONTROL_REVIEW_SCHEMA ? 'historical_output_exact' : 'accepted_exact',
|
|
436
|
+
expectedOutputFixtureId: current ? fixture.expectedOutputFixtureId?.replace(/v\d+$/u, `v${version}`) ?? null : null,
|
|
437
|
+
};
|
|
438
|
+
});
|
|
439
|
+
}),
|
|
366
440
|
metadata: {
|
|
367
|
-
metadataVersion: 2,
|
|
368
441
|
enforcement: 'declarative_only',
|
|
369
442
|
shapes: [
|
|
370
443
|
...CORE_REVIEW_SHAPES,
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
444
|
+
...SUPPORTED_CLI_DOMAIN_CONTROL_REVIEW_VERSIONS.flatMap((version) => [
|
|
445
|
+
{
|
|
446
|
+
id: `domain-control-review.cli-input.v${version}`,
|
|
447
|
+
schema: CLI_DOMAIN_CONTROL_REVIEW_INPUT_SCHEMA,
|
|
448
|
+
versions: [version],
|
|
449
|
+
objects: [
|
|
450
|
+
{ path: '$', requiredKeys: CLI_DOMAIN_CONTROL_REVIEW_INPUT_KEYS, optionalKeys: [], unknownKeys: 'reject' },
|
|
451
|
+
{ path: '$.manifest', requiredKeys: DOMAIN_CONTROL_MANIFEST_ROOT_KEYS, optionalKeys: [], unknownKeys: 'reject' },
|
|
452
|
+
{ path: '$.manifest.entries[]', requiredKeys: PUBLIC_DOMAIN_CONTROL_MANIFEST_ENTRY_KEYS, optionalKeys: version === PUBLIC_CLI_DOMAIN_CONTROL_REVIEW_VERSION ? [] : ['recordModes'], unknownKeys: 'reject' },
|
|
453
|
+
{ path: '$.manifest.integrity', requiredKeys: DOMAIN_CONTROL_MANIFEST_INTEGRITY_KEYS, optionalKeys: [], unknownKeys: 'reject' },
|
|
454
|
+
],
|
|
455
|
+
fixedArrays: version === PUBLIC_CLI_DOMAIN_CONTROL_REVIEW_VERSION ? [{ path: '$.manifest.limitations', values: PUBLIC_DOMAIN_CONTROL_MANIFEST_LIMITATIONS }] : [],
|
|
456
|
+
normalisation: 'input_to_current',
|
|
457
|
+
target: { schema: CLI_DOMAIN_CONTROL_REVIEW_SCHEMA, version: CLI_DOMAIN_CONTROL_REVIEW_VERSION },
|
|
458
|
+
},
|
|
459
|
+
{
|
|
460
|
+
id: `domain-control-review.cli-document.v${version}`,
|
|
461
|
+
schema: CLI_DOMAIN_CONTROL_REVIEW_SCHEMA,
|
|
462
|
+
versions: [version],
|
|
463
|
+
objects: [
|
|
464
|
+
{ path: '$', requiredKeys: CLI_DOMAIN_CONTROL_REVIEW_ROOT_KEYS, optionalKeys: [], unknownKeys: 'reject' },
|
|
465
|
+
{ path: '$.review', requiredKeys: DOMAIN_CONTROL_REVIEW_ROOT_KEYS, optionalKeys: [], unknownKeys: 'reject' },
|
|
466
|
+
{ path: '$.review.manifest', requiredKeys: DOMAIN_CONTROL_REVIEW_MANIFEST_SUMMARY_KEYS, optionalKeys: [], unknownKeys: 'reject' },
|
|
467
|
+
{ path: '$.review.counts', requiredKeys: version === PUBLIC_CLI_DOMAIN_CONTROL_REVIEW_VERSION ? PUBLIC_DOMAIN_CONTROL_REVIEW_COUNT_KEYS : DOMAIN_CONTROL_REVIEW_COUNT_KEYS, optionalKeys: [], unknownKeys: 'reject' },
|
|
468
|
+
{ path: '$.review.domains[]', requiredKeys: DOMAIN_CONTROL_REVIEW_DOMAIN_KEYS, optionalKeys: [], unknownKeys: 'reject' },
|
|
469
|
+
{ path: '$.review.domains[].comparisons[]', requiredKeys: version === PUBLIC_CLI_DOMAIN_CONTROL_REVIEW_VERSION ? PUBLIC_DOMAIN_CONTROL_REVIEW_COMPARISON_KEYS : DOMAIN_CONTROL_REVIEW_COMPARISON_KEYS, optionalKeys: [], unknownKeys: 'reject' },
|
|
470
|
+
{ path: '$.observations[]', requiredKeys: version === PUBLIC_CLI_DOMAIN_CONTROL_REVIEW_VERSION ? PUBLIC_CLI_DOMAIN_CONTROL_REVIEW_OBSERVATION_KEYS : CLI_DOMAIN_CONTROL_REVIEW_OBSERVATION_KEYS, optionalKeys: [], unknownKeys: 'reject' },
|
|
471
|
+
{ path: '$.observations[].fields[]', requiredKeys: version === PUBLIC_CLI_DOMAIN_CONTROL_REVIEW_VERSION ? PUBLIC_CLI_DOMAIN_CONTROL_REVIEW_FIELD_KEYS : CLI_DOMAIN_CONTROL_REVIEW_FIELD_KEYS, optionalKeys: [], unknownKeys: 'reject' },
|
|
472
|
+
{ path: '$.input', requiredKeys: CLI_DOMAIN_CONTROL_REVIEW_INPUT_SUMMARY_KEYS, optionalKeys: [], unknownKeys: 'reject' },
|
|
473
|
+
],
|
|
474
|
+
fixedArrays: [
|
|
475
|
+
{ path: '$.review.limitations', values: version === PUBLIC_CLI_DOMAIN_CONTROL_REVIEW_VERSION ? PUBLIC_DOMAIN_CONTROL_REVIEW_LIMITATIONS : DOMAIN_CONTROL_REVIEW_LIMITATIONS },
|
|
476
|
+
{ path: '$.limitations', values: version === PUBLIC_CLI_DOMAIN_CONTROL_REVIEW_VERSION ? PUBLIC_CLI_DOMAIN_CONTROL_REVIEW_LIMITATIONS : CLI_DOMAIN_CONTROL_REVIEW_LIMITATIONS },
|
|
477
|
+
],
|
|
478
|
+
normalisation: 'preserve_document',
|
|
479
|
+
target: null,
|
|
480
|
+
},
|
|
481
|
+
]),
|
|
482
|
+
].map((shape) => ({ ...shape, discriminator: null, objects: shape.objects.map((object) => ({ ...object, alternativeRequiredKeys: [] })) })),
|
|
408
483
|
boundProfiles: [
|
|
409
|
-
{
|
|
410
|
-
id:
|
|
484
|
+
...SUPPORTED_DOMAIN_CONTROL_REVIEW_VERSIONS.map((version) => ({
|
|
485
|
+
id: `domain-control-review.core.v${version}`,
|
|
411
486
|
bounds: [
|
|
412
487
|
{ id: 'observations', path: '$.observations', phase: 'pre_accumulation', unit: 'items', minimum: 0, maximum: MAX_DOMAIN_CONTROL_REVIEW_OBSERVATIONS, handling: 'reject' },
|
|
413
488
|
{ id: 'observation-fields', path: '$.observations[].fields', phase: 'pre_accumulation', unit: 'keys', minimum: 0, maximum: MAX_DOMAIN_CONTROL_REVIEW_FIELDS, handling: 'reject' },
|
|
@@ -415,7 +490,7 @@ export const DOMAIN_CONTROL_REVIEW_SCHEMA_LIFECYCLE = defineSchemaLifecycleFamil
|
|
|
415
490
|
const boundId = field.replace(/([A-Z])/gu, '-$1').toLowerCase();
|
|
416
491
|
return [
|
|
417
492
|
{ id: `${boundId}-input-values`, path: `$.observations[].fields.${field}.values`, phase: 'pre_accumulation', unit: 'items', minimum: 0, maximum: MAX_DOMAIN_CONTROL_REVIEW_FIELD_INPUT_VALUES, handling: 'reject' },
|
|
418
|
-
{ id: `${boundId}-values`, path: `$.observations[].fields.${field}.values`, phase: 'normalised', unit: 'items', minimum: 0, maximum: MAX_CANONICAL_DOMAIN_CONTROL_RECORDS, handling: '
|
|
493
|
+
{ id: `${boundId}-values`, path: `$.observations[].fields.${field}.values`, phase: 'normalised', unit: 'items', minimum: 0, maximum: version === PUBLIC_DOMAIN_CONTROL_REVIEW_VERSION ? MAX_CANONICAL_DOMAIN_CONTROL_RECORDS : MAX_CURRENT_DOMAIN_CONTROL_RECORDS, handling: 'reject' },
|
|
419
494
|
{ id: `${boundId}-source-input`, path: `$.observations[].fields.${field}.source`, phase: 'pre_accumulation', unit: 'characters', minimum: 1, maximum: MAX_DOMAIN_CONTROL_REVIEW_SOURCE_INPUT_LENGTH, handling: 'reject' },
|
|
420
495
|
{ id: `${boundId}-source`, path: `$.observations[].fields.${field}.source`, phase: 'normalised', unit: 'characters', minimum: 1, maximum: MAX_DOMAIN_CONTROL_REVIEW_SOURCE_LENGTH, handling: 'truncate' },
|
|
421
496
|
{ id: `${boundId}-observed-at-input`, path: `$.observations[].fields.${field}.observedAt`, phase: 'pre_accumulation', unit: 'characters', minimum: 0, maximum: MAX_DOMAIN_CONTROL_TIMESTAMP_LENGTH * DOMAIN_CONTROL_TEXT_INPUT_BOUND_FACTOR, handling: 'reject' },
|
|
@@ -430,7 +505,7 @@ export const DOMAIN_CONTROL_REVIEW_SCHEMA_LIFECYCLE = defineSchemaLifecycleFamil
|
|
|
430
505
|
{ id: 'tls-spki-text', path: '$.observations[].fields.tlsSpkiSha256.values[]', phase: 'normalised', unit: 'characters', minimum: DOMAIN_CONTROL_SPKI_SHA256_HEX_LENGTH, maximum: DOMAIN_CONTROL_SPKI_SHA256_HEX_LENGTH, handling: 'reject' },
|
|
431
506
|
{ id: 'output-domains', path: '$.domains', phase: 'normalised', unit: 'entries', minimum: 1, maximum: MAX_DOMAIN_CONTROL_MANIFEST_ENTRIES, handling: 'reject' },
|
|
432
507
|
],
|
|
433
|
-
},
|
|
508
|
+
})),
|
|
434
509
|
{
|
|
435
510
|
id: 'domain-control-review.cli-library.v1',
|
|
436
511
|
bounds: [
|
|
@@ -471,7 +546,7 @@ export const DOMAIN_CONTROL_REVIEW_SCHEMA_LIFECYCLE = defineSchemaLifecycleFamil
|
|
|
471
546
|
{
|
|
472
547
|
id: 'domain-control-review.core-json.v1',
|
|
473
548
|
schema: DOMAIN_CONTROL_REVIEW_SCHEMA,
|
|
474
|
-
versions:
|
|
549
|
+
versions: SUPPORTED_DOMAIN_CONTROL_REVIEW_VERSIONS,
|
|
475
550
|
mediaType: 'application/json',
|
|
476
551
|
encoding: 'utf-8',
|
|
477
552
|
bom: false,
|
|
@@ -486,7 +561,7 @@ export const DOMAIN_CONTROL_REVIEW_SCHEMA_LIFECYCLE = defineSchemaLifecycleFamil
|
|
|
486
561
|
{
|
|
487
562
|
id: 'domain-control-review.cli-json.v1',
|
|
488
563
|
schema: CLI_DOMAIN_CONTROL_REVIEW_SCHEMA,
|
|
489
|
-
versions:
|
|
564
|
+
versions: SUPPORTED_CLI_DOMAIN_CONTROL_REVIEW_VERSIONS,
|
|
490
565
|
mediaType: 'application/json',
|
|
491
566
|
encoding: 'utf-8',
|
|
492
567
|
bom: false,
|
|
@@ -583,10 +658,10 @@ export const DOMAIN_CONTROL_REVIEW_SCHEMA_LIFECYCLE = defineSchemaLifecycleFamil
|
|
|
583
658
|
id: 'domain-control-review.node-core',
|
|
584
659
|
plane: 'node',
|
|
585
660
|
operation: 'review',
|
|
586
|
-
acceptedContracts: [{ schema: DOMAIN_CONTROL_REVIEW_INPUT_SCHEMA, versions:
|
|
661
|
+
acceptedContracts: [{ schema: DOMAIN_CONTROL_REVIEW_INPUT_SCHEMA, versions: SUPPORTED_DOMAIN_CONTROL_REVIEW_VERSIONS, mode: 'direct' }],
|
|
587
662
|
emittedContract: { schema: DOMAIN_CONTROL_REVIEW_SCHEMA, version: DOMAIN_CONTROL_REVIEW_VERSION },
|
|
588
|
-
shapeIds: [
|
|
589
|
-
boundProfileIds: [
|
|
663
|
+
shapeIds: [...CORE_INPUT_SHAPE_IDS, CURRENT_CORE_DOCUMENT_SHAPE_ID],
|
|
664
|
+
boundProfileIds: [...CORE_BOUND_PROFILE_IDS],
|
|
590
665
|
hookIds: ['domain-control-review.node.verify-manifest', 'domain-control-review.node.build-core'],
|
|
591
666
|
serialisationProfileId: null,
|
|
592
667
|
privacyProfileId: 'domain-control-review.sensitive.v1',
|
|
@@ -600,10 +675,10 @@ export const DOMAIN_CONTROL_REVIEW_SCHEMA_LIFECYCLE = defineSchemaLifecycleFamil
|
|
|
600
675
|
id: 'domain-control-review.cli-core-json-stdout',
|
|
601
676
|
plane: 'cli',
|
|
602
677
|
operation: 'review-json-stdout',
|
|
603
|
-
acceptedContracts: [{ schema: DOMAIN_CONTROL_REVIEW_INPUT_SCHEMA, versions:
|
|
678
|
+
acceptedContracts: [{ schema: DOMAIN_CONTROL_REVIEW_INPUT_SCHEMA, versions: SUPPORTED_DOMAIN_CONTROL_REVIEW_VERSIONS, mode: 'direct' }],
|
|
604
679
|
emittedContract: { schema: DOMAIN_CONTROL_REVIEW_SCHEMA, version: DOMAIN_CONTROL_REVIEW_VERSION },
|
|
605
|
-
shapeIds: [
|
|
606
|
-
boundProfileIds: [
|
|
680
|
+
shapeIds: [...CORE_INPUT_SHAPE_IDS, CURRENT_CORE_DOCUMENT_SHAPE_ID],
|
|
681
|
+
boundProfileIds: [...CORE_BOUND_PROFILE_IDS, 'domain-control-review.cli-command.v1'],
|
|
607
682
|
hookIds: [
|
|
608
683
|
'domain-control-review.node.verify-manifest',
|
|
609
684
|
'domain-control-review.node.build-core',
|
|
@@ -621,10 +696,10 @@ export const DOMAIN_CONTROL_REVIEW_SCHEMA_LIFECYCLE = defineSchemaLifecycleFamil
|
|
|
621
696
|
id: 'domain-control-review.cli-core-terminal-stdout',
|
|
622
697
|
plane: 'cli',
|
|
623
698
|
operation: 'review-terminal-stdout',
|
|
624
|
-
acceptedContracts: [{ schema: DOMAIN_CONTROL_REVIEW_INPUT_SCHEMA, versions:
|
|
699
|
+
acceptedContracts: [{ schema: DOMAIN_CONTROL_REVIEW_INPUT_SCHEMA, versions: SUPPORTED_DOMAIN_CONTROL_REVIEW_VERSIONS, mode: 'direct' }],
|
|
625
700
|
emittedContract: { schema: DOMAIN_CONTROL_REVIEW_SCHEMA, version: DOMAIN_CONTROL_REVIEW_VERSION },
|
|
626
|
-
shapeIds: [
|
|
627
|
-
boundProfileIds: [
|
|
701
|
+
shapeIds: [...CORE_INPUT_SHAPE_IDS, CURRENT_CORE_DOCUMENT_SHAPE_ID],
|
|
702
|
+
boundProfileIds: [...CORE_BOUND_PROFILE_IDS, 'domain-control-review.cli-command.v1'],
|
|
628
703
|
hookIds: [
|
|
629
704
|
'domain-control-review.node.verify-manifest',
|
|
630
705
|
'domain-control-review.node.build-core',
|
|
@@ -642,10 +717,10 @@ export const DOMAIN_CONTROL_REVIEW_SCHEMA_LIFECYCLE = defineSchemaLifecycleFamil
|
|
|
642
717
|
id: 'domain-control-review.cli-core-json-file',
|
|
643
718
|
plane: 'cli',
|
|
644
719
|
operation: 'review-json-file',
|
|
645
|
-
acceptedContracts: [{ schema: DOMAIN_CONTROL_REVIEW_INPUT_SCHEMA, versions:
|
|
720
|
+
acceptedContracts: [{ schema: DOMAIN_CONTROL_REVIEW_INPUT_SCHEMA, versions: SUPPORTED_DOMAIN_CONTROL_REVIEW_VERSIONS, mode: 'direct' }],
|
|
646
721
|
emittedContract: { schema: DOMAIN_CONTROL_REVIEW_SCHEMA, version: DOMAIN_CONTROL_REVIEW_VERSION },
|
|
647
|
-
shapeIds: [
|
|
648
|
-
boundProfileIds: [
|
|
722
|
+
shapeIds: [...CORE_INPUT_SHAPE_IDS, CURRENT_CORE_DOCUMENT_SHAPE_ID],
|
|
723
|
+
boundProfileIds: [...CORE_BOUND_PROFILE_IDS, 'domain-control-review.cli-command.v1'],
|
|
649
724
|
hookIds: [
|
|
650
725
|
'domain-control-review.node.verify-manifest',
|
|
651
726
|
'domain-control-review.node.build-core',
|
|
@@ -663,10 +738,10 @@ export const DOMAIN_CONTROL_REVIEW_SCHEMA_LIFECYCLE = defineSchemaLifecycleFamil
|
|
|
663
738
|
id: 'domain-control-review.cli-core-terminal-file',
|
|
664
739
|
plane: 'cli',
|
|
665
740
|
operation: 'review-terminal-file',
|
|
666
|
-
acceptedContracts: [{ schema: DOMAIN_CONTROL_REVIEW_INPUT_SCHEMA, versions:
|
|
741
|
+
acceptedContracts: [{ schema: DOMAIN_CONTROL_REVIEW_INPUT_SCHEMA, versions: SUPPORTED_DOMAIN_CONTROL_REVIEW_VERSIONS, mode: 'direct' }],
|
|
667
742
|
emittedContract: { schema: DOMAIN_CONTROL_REVIEW_SCHEMA, version: DOMAIN_CONTROL_REVIEW_VERSION },
|
|
668
|
-
shapeIds: [
|
|
669
|
-
boundProfileIds: [
|
|
743
|
+
shapeIds: [...CORE_INPUT_SHAPE_IDS, CURRENT_CORE_DOCUMENT_SHAPE_ID],
|
|
744
|
+
boundProfileIds: [...CORE_BOUND_PROFILE_IDS, 'domain-control-review.cli-command.v1'],
|
|
670
745
|
hookIds: [
|
|
671
746
|
'domain-control-review.node.verify-manifest',
|
|
672
747
|
'domain-control-review.node.build-core',
|
|
@@ -684,10 +759,10 @@ export const DOMAIN_CONTROL_REVIEW_SCHEMA_LIFECYCLE = defineSchemaLifecycleFamil
|
|
|
684
759
|
id: 'domain-control-review.cli-saved-lookup-library',
|
|
685
760
|
plane: 'cli',
|
|
686
761
|
operation: 'review',
|
|
687
|
-
acceptedContracts: [{ schema: CLI_DOMAIN_CONTROL_REVIEW_INPUT_SCHEMA, versions:
|
|
762
|
+
acceptedContracts: [{ schema: CLI_DOMAIN_CONTROL_REVIEW_INPUT_SCHEMA, versions: SUPPORTED_CLI_DOMAIN_CONTROL_REVIEW_VERSIONS, mode: 'direct' }],
|
|
688
763
|
emittedContract: { schema: CLI_DOMAIN_CONTROL_REVIEW_SCHEMA, version: CLI_DOMAIN_CONTROL_REVIEW_VERSION },
|
|
689
|
-
shapeIds: [
|
|
690
|
-
boundProfileIds: [
|
|
764
|
+
shapeIds: [...CLI_INPUT_SHAPE_IDS, CURRENT_CLI_DOCUMENT_SHAPE_ID],
|
|
765
|
+
boundProfileIds: [...CORE_BOUND_PROFILE_IDS, 'domain-control-review.cli-library.v1'],
|
|
691
766
|
hookIds: [
|
|
692
767
|
'domain-control-review.node.verify-manifest',
|
|
693
768
|
'domain-control-review.node.build-core',
|
|
@@ -705,11 +780,11 @@ export const DOMAIN_CONTROL_REVIEW_SCHEMA_LIFECYCLE = defineSchemaLifecycleFamil
|
|
|
705
780
|
id: 'domain-control-review.cli-saved-json-stdout',
|
|
706
781
|
plane: 'cli',
|
|
707
782
|
operation: 'review-json-stdout',
|
|
708
|
-
acceptedContracts: [{ schema: CLI_DOMAIN_CONTROL_REVIEW_INPUT_SCHEMA, versions:
|
|
783
|
+
acceptedContracts: [{ schema: CLI_DOMAIN_CONTROL_REVIEW_INPUT_SCHEMA, versions: SUPPORTED_CLI_DOMAIN_CONTROL_REVIEW_VERSIONS, mode: 'direct' }],
|
|
709
784
|
emittedContract: { schema: CLI_DOMAIN_CONTROL_REVIEW_SCHEMA, version: CLI_DOMAIN_CONTROL_REVIEW_VERSION },
|
|
710
|
-
shapeIds: [
|
|
785
|
+
shapeIds: [...CLI_INPUT_SHAPE_IDS, CURRENT_CLI_DOCUMENT_SHAPE_ID],
|
|
711
786
|
boundProfileIds: [
|
|
712
|
-
|
|
787
|
+
...CORE_BOUND_PROFILE_IDS,
|
|
713
788
|
'domain-control-review.cli-library.v1',
|
|
714
789
|
'domain-control-review.cli-command.v1',
|
|
715
790
|
],
|
|
@@ -731,11 +806,11 @@ export const DOMAIN_CONTROL_REVIEW_SCHEMA_LIFECYCLE = defineSchemaLifecycleFamil
|
|
|
731
806
|
id: 'domain-control-review.cli-saved-terminal-stdout',
|
|
732
807
|
plane: 'cli',
|
|
733
808
|
operation: 'review-terminal-stdout',
|
|
734
|
-
acceptedContracts: [{ schema: CLI_DOMAIN_CONTROL_REVIEW_INPUT_SCHEMA, versions:
|
|
809
|
+
acceptedContracts: [{ schema: CLI_DOMAIN_CONTROL_REVIEW_INPUT_SCHEMA, versions: SUPPORTED_CLI_DOMAIN_CONTROL_REVIEW_VERSIONS, mode: 'direct' }],
|
|
735
810
|
emittedContract: { schema: CLI_DOMAIN_CONTROL_REVIEW_SCHEMA, version: CLI_DOMAIN_CONTROL_REVIEW_VERSION },
|
|
736
|
-
shapeIds: [
|
|
811
|
+
shapeIds: [...CLI_INPUT_SHAPE_IDS, CURRENT_CLI_DOCUMENT_SHAPE_ID],
|
|
737
812
|
boundProfileIds: [
|
|
738
|
-
|
|
813
|
+
...CORE_BOUND_PROFILE_IDS,
|
|
739
814
|
'domain-control-review.cli-library.v1',
|
|
740
815
|
'domain-control-review.cli-command.v1',
|
|
741
816
|
],
|
|
@@ -757,11 +832,11 @@ export const DOMAIN_CONTROL_REVIEW_SCHEMA_LIFECYCLE = defineSchemaLifecycleFamil
|
|
|
757
832
|
id: 'domain-control-review.cli-saved-json-file',
|
|
758
833
|
plane: 'cli',
|
|
759
834
|
operation: 'review-json-file',
|
|
760
|
-
acceptedContracts: [{ schema: CLI_DOMAIN_CONTROL_REVIEW_INPUT_SCHEMA, versions:
|
|
835
|
+
acceptedContracts: [{ schema: CLI_DOMAIN_CONTROL_REVIEW_INPUT_SCHEMA, versions: SUPPORTED_CLI_DOMAIN_CONTROL_REVIEW_VERSIONS, mode: 'direct' }],
|
|
761
836
|
emittedContract: { schema: CLI_DOMAIN_CONTROL_REVIEW_SCHEMA, version: CLI_DOMAIN_CONTROL_REVIEW_VERSION },
|
|
762
|
-
shapeIds: [
|
|
837
|
+
shapeIds: [...CLI_INPUT_SHAPE_IDS, CURRENT_CLI_DOCUMENT_SHAPE_ID],
|
|
763
838
|
boundProfileIds: [
|
|
764
|
-
|
|
839
|
+
...CORE_BOUND_PROFILE_IDS,
|
|
765
840
|
'domain-control-review.cli-library.v1',
|
|
766
841
|
'domain-control-review.cli-command.v1',
|
|
767
842
|
],
|
|
@@ -783,11 +858,11 @@ export const DOMAIN_CONTROL_REVIEW_SCHEMA_LIFECYCLE = defineSchemaLifecycleFamil
|
|
|
783
858
|
id: 'domain-control-review.cli-saved-terminal-file',
|
|
784
859
|
plane: 'cli',
|
|
785
860
|
operation: 'review-terminal-file',
|
|
786
|
-
acceptedContracts: [{ schema: CLI_DOMAIN_CONTROL_REVIEW_INPUT_SCHEMA, versions:
|
|
861
|
+
acceptedContracts: [{ schema: CLI_DOMAIN_CONTROL_REVIEW_INPUT_SCHEMA, versions: SUPPORTED_CLI_DOMAIN_CONTROL_REVIEW_VERSIONS, mode: 'direct' }],
|
|
787
862
|
emittedContract: { schema: CLI_DOMAIN_CONTROL_REVIEW_SCHEMA, version: CLI_DOMAIN_CONTROL_REVIEW_VERSION },
|
|
788
|
-
shapeIds: [
|
|
863
|
+
shapeIds: [...CLI_INPUT_SHAPE_IDS, CURRENT_CLI_DOCUMENT_SHAPE_ID],
|
|
789
864
|
boundProfileIds: [
|
|
790
|
-
|
|
865
|
+
...CORE_BOUND_PROFILE_IDS,
|
|
791
866
|
'domain-control-review.cli-library.v1',
|
|
792
867
|
'domain-control-review.cli-command.v1',
|
|
793
868
|
],
|
|
@@ -809,9 +884,9 @@ export const DOMAIN_CONTROL_REVIEW_SCHEMA_LIFECYCLE = defineSchemaLifecycleFamil
|
|
|
809
884
|
id: 'domain-control-review.cli-monitor-embedding',
|
|
810
885
|
plane: 'cli',
|
|
811
886
|
operation: 'embed-review-after-bounded-passive-collection',
|
|
812
|
-
acceptedContracts: [{ schema: DOMAIN_CONTROL_REVIEW_SCHEMA, versions:
|
|
887
|
+
acceptedContracts: [{ schema: DOMAIN_CONTROL_REVIEW_SCHEMA, versions: SUPPORTED_DOMAIN_CONTROL_REVIEW_VERSIONS, mode: 'embedded' }],
|
|
813
888
|
emittedContract: null,
|
|
814
|
-
shapeIds:
|
|
889
|
+
shapeIds: CORE_DOCUMENT_SHAPE_IDS,
|
|
815
890
|
boundProfileIds: ['domain-control-review.monitor-action.v1'],
|
|
816
891
|
hookIds: ['domain-control-review.node.validate-core', 'domain-control-review.cli.monitor'],
|
|
817
892
|
serialisationProfileId: null,
|
|
@@ -822,7 +897,11 @@ export const DOMAIN_CONTROL_REVIEW_SCHEMA_LIFECYCLE = defineSchemaLifecycleFamil
|
|
|
822
897
|
bindingState: 'declared_unenforced',
|
|
823
898
|
policyState: 'current',
|
|
824
899
|
},
|
|
825
|
-
]
|
|
900
|
+
].map((edge) => ({
|
|
901
|
+
...edge,
|
|
902
|
+
acceptedContracts: edge.acceptedContracts.map((contract) => ({ ...contract, discriminator: null })),
|
|
903
|
+
emittedContract: edge.emittedContract ? { ...edge.emittedContract, discriminator: null } : null,
|
|
904
|
+
})),
|
|
826
905
|
consumerRelationships: [],
|
|
827
906
|
},
|
|
828
907
|
});
|