@slicedearth/whoisleuth-cli 2.3.0 → 2.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/NOTICE +6 -0
- 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/arguments.mjs +68 -6
- package/cli/artifact-validation/case-response.mjs +47 -41
- package/cli/artifact-validation/investigation-capsule.mjs +52 -31
- package/cli/artifact-validation/lookup-evidence.mjs +12 -6
- package/cli/artifact-validation/signed-review.mjs +83 -61
- package/cli/artifact-validation/structure-primitives.mjs +1 -105
- package/cli/artifact-verify.mjs +90 -24
- package/cli/assurance-command-runner.mjs +39 -4
- package/cli/bagit-folder.mjs +57 -0
- package/cli/bagit-review.mjs +23 -0
- package/cli/bounded-json.mjs +1 -1
- package/cli/bulk-command-runner.mjs +2 -0
- package/cli/bulk-output.mjs +29 -3
- package/cli/case-command.mjs +195 -0
- package/cli/case-pack.mjs +39 -31
- package/cli/command-argument-grammar.mjs +4 -0
- package/cli/command-reference.mjs +145 -75
- package/cli/completion.mjs +298 -79
- package/cli/config-profile.mjs +7 -5
- package/cli/ct-event-intake.mjs +12 -12
- package/cli/discover.mjs +4 -3
- package/cli/discovery-observation-snapshot.mjs +44 -16
- package/cli/discovery-scan-command-runner.mjs +2 -0
- package/cli/discovery-scan.mjs +7 -4
- package/cli/discovery-workflow.mjs +1 -1
- package/cli/domain-control-monitor.mjs +50 -20
- package/cli/domain-control-observations.mjs +149 -102
- package/cli/errors.mjs +33 -1
- package/cli/evidence-command-runner.mjs +16 -5
- package/cli/evidence-signing.mjs +2 -2
- package/cli/external-observation-mapping.mjs +7 -8
- package/cli/formatters/terminal-lookup.mjs +18 -46
- package/cli/formatters/terminal-shared.mjs +5 -3
- package/cli/formatters/terminal-technology.mjs +114 -0
- package/cli/inline-command-families.mjs +1 -0
- package/cli/interactive-launcher.mjs +2 -160
- package/cli/interchange-report.mjs +4 -8
- 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 +32 -19
- package/cli/investigation-run.mjs +188 -33
- package/cli/local-document-checkpoint.mjs +170 -0
- package/cli/lookup-browser.mjs +5 -12
- package/cli/lookup-command-runner.mjs +17 -6
- package/cli/lookup-diff.mjs +37 -3
- package/cli/lookup-plan.mjs +11 -5
- package/cli/lookup-reconcile.mjs +10 -8
- package/cli/mail-review.mjs +66 -14
- package/cli/manual.mjs +1 -0
- package/cli/network-command-runner.mjs +2 -0
- package/cli/output-file.mjs +31 -5
- package/cli/registry-doctor.mjs +3 -1
- package/cli/registry-support.mjs +1 -1
- package/cli/retained-artifact-diff.mjs +2 -2
- package/cli/review-command-runner.mjs +45 -0
- package/cli/runner.mjs +55 -6
- package/cli/sharing-review.mjs +21 -34
- package/cli/signer-trust.mjs +104 -0
- package/cli/source-reliability.mjs +74 -83
- package/cli/terminal-input.mjs +168 -0
- package/cli/workflow-command-runner.mjs +68 -13
- package/docs/cli-reference.md +76 -30
- package/docs/cli.md +289 -25
- package/lib/abort.mjs +4 -1
- package/lib/availability.mjs +161 -112
- package/lib/bounded-file.mjs +3 -1
- package/lib/bounded-html-document.mjs +125 -0
- package/lib/bounded-json.mjs +43 -3
- package/lib/browser-library-profile.mjs +42 -51
- package/lib/browser-library-worker.mjs +112 -0
- package/lib/client-behavior-profile.mjs +3 -3
- package/lib/ct-search.mjs +11 -4
- package/lib/dns-delegation-health.mjs +24 -14
- package/lib/dns-inheritance-review.mjs +217 -0
- package/lib/dns-intelligence.mjs +36 -23
- package/lib/dns-mx.mjs +1 -1
- package/lib/dnssec-evidence-validation.mjs +11 -3
- package/lib/domain-change-packet.mjs +7 -2
- package/lib/domain-change-review.mjs +14 -8
- package/lib/domain-control-flight-recorder.mjs +219 -118
- package/lib/domain-control-manifest.mjs +117 -57
- package/lib/domain-posture-analysis.mjs +20 -7
- package/lib/domain-posture-parsers.mjs +88 -6
- package/lib/domain-posture.mjs +113 -26
- package/lib/evidence-export-privacy.mjs +561 -0
- package/lib/evidence-export.mjs +11 -592
- package/lib/evidence-report.mjs +3 -1
- package/lib/favicon.mjs +117 -41
- package/lib/generated/cisa-kev-catalog.mjs +12 -4
- package/lib/generated/registrar-standing-catalogue.mjs +7 -7
- package/lib/generated/retire-browser-catalog.mjs +2335 -940
- package/lib/hostname.mjs +2 -38
- package/lib/html-signals.mjs +82 -85
- package/lib/http-evidence-bounds.mjs +2 -1
- package/lib/http-intelligence.mjs +39 -26
- package/lib/lookup-cache.mjs +34 -11
- package/lib/lookup-child-profile-contract.mjs +24 -15
- package/lib/lookup-diagnostics.mjs +24 -1
- package/lib/lookup-progress.mjs +30 -13
- package/lib/lookup-response-contract.mjs +1048 -0
- package/lib/lookup-response.mjs +7 -10
- package/lib/lookup-source-progress.mjs +17 -14
- package/lib/lookup.mjs +48 -27
- package/lib/observed-network-context.mjs +43 -27
- package/lib/outbound-request-bounds.mjs +4 -1
- package/lib/page-fingerprints.mjs +69 -133
- package/lib/page-role-profile.mjs +12 -8
- package/lib/perceptual-hash.mjs +43 -14
- package/lib/rdap-bootstrap.mjs +72 -22
- package/lib/rdap-client.mjs +15 -7
- 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 +21 -1
- package/lib/registrar-standing-contract.mjs +1 -0
- package/lib/registry-capabilities.mjs +5 -1
- package/lib/registry-capability-catalogue.mjs +2 -1
- 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 +17 -3
- package/lib/rpki-evidence.mjs +8 -5
- package/lib/safe-fetch.mjs +54 -47
- package/lib/security-txt.mjs +10 -7
- package/lib/service-binding-dns.mjs +8 -0
- package/lib/smtp-transport-review.mjs +27 -15
- package/lib/sslbl-certificates.generated.mjs +136 -135
- package/lib/static-html-analysis.mjs +117 -146
- package/lib/structured-data-identity.mjs +1 -0
- 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 +39 -0
- package/lib/typosquat-generator.mjs +19 -15
- package/lib/urlhaus-intelligence.mjs +8 -3
- package/lib/urlscan-intelligence.mjs +1 -1
- package/lib/website-security-posture.mjs +30 -6
- package/lib/website-technology.mjs +111 -71
- package/lib/whois-authority.mjs +14 -2
- 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-parser-support.mjs +8 -1
- package/lib/whois-transport.mjs +23 -7
- package/package.json +2 -1
- package/packages/cases/case-attachment-model.mjs +83 -0
- package/packages/cases/case-evidence-model.mjs +156 -62
- package/packages/cases/case-export-input.mjs +53 -0
- package/packages/cases/case-migration-model.mjs +59 -25
- package/packages/cases/case-model.mjs +1 -0
- package/packages/cases/case-recheck-model.mjs +91 -0
- package/packages/cases/case-record-core.mjs +3 -2
- package/packages/cases/case-record-operations.mjs +89 -27
- package/packages/cases/case-record-projection.mjs +23 -20
- package/packages/cases/case-report.mjs +63 -52
- package/packages/cases/case-response-actions.mjs +654 -0
- package/packages/cases/case-response-model.mjs +41 -1129
- package/packages/cases/case-response-outcomes.mjs +317 -0
- package/packages/cases/case-response-packet-render.mjs +153 -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 +38 -587
- package/packages/cases/case-response-records.mjs +94 -0
- package/packages/cases/case-response-review-inputs.mjs +371 -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 +25 -0
- 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/page-similarity.mjs +2 -1
- package/packages/comparison/relationship-evidence.mjs +85 -8
- package/packages/comparison/relationship-provenance.mjs +93 -0
- package/packages/contracts/analyst-interchange.mjs +216 -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 +279 -116
- package/packages/contracts/case-views-contract.mjs +12 -0
- package/packages/contracts/case-views.mjs +26 -0
- package/packages/contracts/cli-command-semantics.mjs +1 -0
- package/packages/contracts/cli-lookup.mjs +0 -1
- package/packages/contracts/domain-control-flight-recorder.mjs +80 -42
- package/packages/contracts/domain-control-manifest.mjs +127 -73
- package/packages/contracts/domain-control-monitor.mjs +48 -45
- package/packages/contracts/domain-control-review.mjs +179 -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/http-url.mjs +2 -0
- package/packages/contracts/investigation-package-limits.mjs +24 -0
- package/packages/contracts/investigation-portability.mjs +56 -27
- package/packages/contracts/investigation-run.mjs +16 -0
- package/packages/contracts/ip-address.mjs +34 -0
- package/packages/contracts/lookup-evidence.mjs +35 -0
- package/packages/contracts/offline-comparison.mjs +1 -2
- package/packages/contracts/page-fingerprints.mjs +15 -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 +160 -225
- package/packages/evidence/artifact-integrity.mjs +8 -2
- package/packages/evidence/artifact-structure.mjs +105 -0
- package/packages/evidence/decision-fact.mjs +4 -1
- package/packages/evidence/domain-control-runtime.mjs +155 -27
- package/packages/evidence/domain-posture-context.mjs +79 -0
- package/packages/evidence/image-regions.mjs +56 -0
- package/packages/evidence/latest-observations.mjs +28 -0
- package/packages/evidence/lookup-target.mjs +104 -0
- package/packages/evidence/observation.mjs +16 -1
- package/packages/evidence/passphrase-encryption.mjs +44 -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/external-findings-import.mjs +89 -49
- package/packages/interchange/web-capture-import.mjs +382 -0
- package/packages/investigation/bulk-mail-exposure.mjs +2 -1
- 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/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/monitoring/analyst-review-state.mjs +38 -90
- package/packages/workspace/brand-profile-model.mjs +158 -20
- package/packages/workspace/bulk-columns.mjs +17 -0
- package/packages/workspace/bulk-review-model.mjs +11 -5
- package/packages/workspace/bulk-session-model.mjs +95 -20
- package/packages/workspace/bulk-sort.mjs +1 -0
- package/packages/workspace/case-views.mjs +102 -0
- package/packages/workspace/hostile-input.mjs +29 -8
- package/packages/workspace/investigation-template-model.mjs +19 -4
- package/packages/workspace/page-baseline.mjs +18 -15
- package/packages/workspace/relationship-observation-model.mjs +41 -26
- package/packages/workspace/watchlist-history.mjs +2 -2
- package/packages/workspace/watchlist-store.mjs +8 -2
- package/packages/workspace/website-snapshot-model.mjs +70 -30
- package/packages/workspace/workspace-archive-crypto.mjs +41 -61
- package/packages/workspace/workspace-archive.mjs +85 -21
- package/third-party-notices.txt +29 -2
- package/packages/investigation/bulk-review-export.mjs +0 -63
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export const CASE_VIEWS_SCHEMA = 'whoisleuth.case-views';
|
|
2
|
+
export const CASE_VIEWS_VERSION = 1;
|
|
3
|
+
export const MAX_CASE_VIEWS = 100;
|
|
4
|
+
export const MAX_CASE_VIEW_NAME_LENGTH = 80;
|
|
5
|
+
export const MAX_CASE_VIEW_SEARCH_LENGTH = 512;
|
|
6
|
+
// Accommodates 100 views with maximum-length Unicode names and search text.
|
|
7
|
+
export const MAX_CASE_VIEWS_BYTES = 512 * 1024;
|
|
8
|
+
export const CASE_VIEW_SORTS = Object.freeze([
|
|
9
|
+
{ value: 'updated', label: 'Recently updated' },
|
|
10
|
+
{ value: 'domain', label: 'Domain' },
|
|
11
|
+
{ value: 'status', label: 'Status' },
|
|
12
|
+
]);
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { defineSchemaCompatibility } from "./schema-compatibility.mjs";
|
|
2
|
+
import { buildExtractedLifecycleFamily } from "./extracted-domain-lifecycle.mjs";
|
|
3
|
+
import { defineSchemaLifecycleFamily } from "./schema-lifecycle.mjs";
|
|
4
|
+
import { CASE_VIEWS_SCHEMA, CASE_VIEWS_VERSION, MAX_CASE_VIEWS_BYTES } from "./case-views-contract.mjs";
|
|
5
|
+
export const CASE_VIEWS_COMPATIBILITY = defineSchemaCompatibility({
|
|
6
|
+
id: 'browser.case-views', kind: 'browser_store', schema: CASE_VIEWS_SCHEMA,
|
|
7
|
+
currentVersion: CASE_VIEWS_VERSION, supportedVersions: [CASE_VIEWS_VERSION],
|
|
8
|
+
acceptsUnversionedLegacy: false, futureVersionBehavior: 'preserve_without_write',
|
|
9
|
+
migration: 'exact_current_only', writeSemantics: 'optimistic_replace',
|
|
10
|
+
byteBudget: MAX_CASE_VIEWS_BYTES, owner: 'packages/contracts/case-views.mts',
|
|
11
|
+
note: 'Workspace-local named Case filters. Saved views retain no result set and grant no collection authority; workspace exports include their names and search text.',
|
|
12
|
+
});
|
|
13
|
+
export const CASE_VIEWS_LIFECYCLE_FAMILY = /* @__PURE__ */ defineSchemaLifecycleFamily(/* @__PURE__ */ buildExtractedLifecycleFamily({
|
|
14
|
+
id: 'case-views', owner: 'packages/contracts/case-views.mts',
|
|
15
|
+
serializerModule: 'packages/workspace/case-views.mts', serializerExportName: 'serialiseCaseViewsJson',
|
|
16
|
+
plane: 'browser', projection: 'browser_import', retention: 'browser_indexeddb', notePolicy: 'allowed_bounded',
|
|
17
|
+
includedCategories: ['saved-filter-name', 'case-status-and-disposition', 'search-text', 'sort-order', 'authored-times'],
|
|
18
|
+
excludedCategories: ['matching-case-records', 'source-evidence', 'collection-authorisation', 'public-response-packets'],
|
|
19
|
+
formats: [{
|
|
20
|
+
descriptor: CASE_VIEWS_COMPATIBILITY, lifecycleSchema: CASE_VIEWS_SCHEMA,
|
|
21
|
+
requiredKeys: ['schema', 'version', 'views'], optionalKeys: [],
|
|
22
|
+
hook: { module: 'packages/workspace/case-views.mts', exportName: 'normalizeCaseViewsStore', role: 'normaliser', runtime: 'shared' },
|
|
23
|
+
fixtures: [{ id: 'case-views-v1', path: 'test/fixtures/extracted-domain-lifecycle/case-views-v1.json', version: 1,
|
|
24
|
+
bytes: 408, sha256: '015592dd0d6f4536b5960be9325b8d3b8c136eaab195d82383ab9a320a03f855' }],
|
|
25
|
+
}],
|
|
26
|
+
}));
|
|
@@ -78,6 +78,7 @@ export const CLI_COMMAND_SEMANTICS = Object.freeze({
|
|
|
78
78
|
'mail-headers': semantic('investigate', CAPABILITY_IDS.OFFLINE_REVIEW),
|
|
79
79
|
'review-evidence': semantic('investigate', CAPABILITY_IDS.PORTABLE_EVIDENCE),
|
|
80
80
|
brief: semantic('investigate', CAPABILITY_IDS.OFFLINE_REVIEW),
|
|
81
|
+
case: semantic('respond', CAPABILITY_IDS.ANALYST_CASES),
|
|
81
82
|
'case-pack': semantic('respond', CAPABILITY_IDS.PORTABLE_EVIDENCE),
|
|
82
83
|
'domain-control': semantic('assure', CAPABILITY_IDS.PORTABLE_EVIDENCE),
|
|
83
84
|
'monitor-once': semantic('assure', CAPABILITY_IDS.LOOKUP),
|
|
@@ -1,20 +1,25 @@
|
|
|
1
1
|
import { defineSchemaCompatibility } from "./schema-compatibility.mjs";
|
|
2
2
|
import { defineSchemaLifecycleFamily } from "./schema-lifecycle.mjs";
|
|
3
|
-
import { MAX_DOMAIN_CONTROL_MANIFEST_BYTES, } from "./domain-control-manifest.mjs";
|
|
3
|
+
import { MAX_DOMAIN_CONTROL_MANIFEST_BYTES, MAX_CURRENT_DOMAIN_CONTROL_RECORDS, MAX_DOMAIN_CONTROL_DS_PRESENTATION_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
|
export const DOMAIN_CONTROL_FLIGHT_RECORDER_INPUT_SCHEMA = 'whoisleuth.domain-control-flight-recorder.input';
|
|
6
6
|
export const DOMAIN_CONTROL_FLIGHT_RECORDER_SCHEMA = 'whoisleuth.domain-control-flight-recorder';
|
|
7
|
-
export const
|
|
7
|
+
export const PUBLIC_DOMAIN_CONTROL_FLIGHT_RECORDER_VERSION = 1;
|
|
8
|
+
export const DOMAIN_CONTROL_FLIGHT_RECORDER_VERSION = 2;
|
|
9
|
+
export const SUPPORTED_DOMAIN_CONTROL_FLIGHT_RECORDER_VERSIONS = [PUBLIC_DOMAIN_CONTROL_FLIGHT_RECORDER_VERSION, DOMAIN_CONTROL_FLIGHT_RECORDER_VERSION];
|
|
8
10
|
export const MIN_FLIGHT_RECORDER_OBSERVATIONS = 1;
|
|
9
11
|
export const MAX_FLIGHT_RECORDER_OBSERVATIONS = 200;
|
|
10
12
|
export const MAX_FLIGHT_RECORDER_WINDOWS = 40;
|
|
11
13
|
export const MAX_FLIGHT_RECORDER_FIELDS = 24;
|
|
12
|
-
export const
|
|
14
|
+
export const PUBLIC_MAX_FLIGHT_RECORDER_VALUES = 32;
|
|
15
|
+
export const MAX_FLIGHT_RECORDER_VALUES = MAX_CURRENT_DOMAIN_CONTROL_RECORDS;
|
|
13
16
|
export const DOMAIN_CONTROL_FLIGHT_RECORDER_VALUE_INPUT_FACTOR = 2;
|
|
14
17
|
export const MAX_FLIGHT_RECORDER_INPUT_VALUES = MAX_FLIGHT_RECORDER_VALUES
|
|
15
18
|
* DOMAIN_CONTROL_FLIGHT_RECORDER_VALUE_INPUT_FACTOR;
|
|
19
|
+
export const PUBLIC_MAX_FLIGHT_RECORDER_INPUT_VALUES = PUBLIC_MAX_FLIGHT_RECORDER_VALUES * DOMAIN_CONTROL_FLIGHT_RECORDER_VALUE_INPUT_FACTOR;
|
|
16
20
|
export const MAX_FLIGHT_RECORDER_SOURCE_LENGTH = 120;
|
|
17
|
-
export const
|
|
21
|
+
export const PUBLIC_MAX_FLIGHT_RECORDER_VALUE_LENGTH = 500;
|
|
22
|
+
export const MAX_FLIGHT_RECORDER_VALUE_LENGTH = MAX_DOMAIN_CONTROL_DS_PRESENTATION_LENGTH;
|
|
18
23
|
export const MAX_FLIGHT_RECORDER_WINDOW_ID_LENGTH = 64;
|
|
19
24
|
export const MAX_FLIGHT_RECORDER_WINDOW_REASON_LENGTH = 400;
|
|
20
25
|
export const MAX_FLIGHT_RECORDER_JSON_DEPTH = 8;
|
|
@@ -45,18 +50,20 @@ export const DOMAIN_CONTROL_FLIGHT_RECORDER_INPUT_KEYS = Object.freeze([
|
|
|
45
50
|
'observations',
|
|
46
51
|
'approvedWindows',
|
|
47
52
|
]);
|
|
48
|
-
export const
|
|
53
|
+
export const PUBLIC_DOMAIN_CONTROL_FLIGHT_RECORDER_OBSERVATION_KEYS = Object.freeze([
|
|
49
54
|
'domain',
|
|
50
55
|
'observedAt',
|
|
51
56
|
'collectionDepth',
|
|
52
57
|
'fields',
|
|
53
58
|
]);
|
|
54
|
-
export const
|
|
59
|
+
export const DOMAIN_CONTROL_FLIGHT_RECORDER_OBSERVATION_KEYS = Object.freeze(['domain', 'capturedAt', 'collectionDepth', 'fields']);
|
|
60
|
+
export const PUBLIC_DOMAIN_CONTROL_FLIGHT_RECORDER_FIELD_KEYS = Object.freeze([
|
|
55
61
|
'id',
|
|
56
62
|
'source',
|
|
57
63
|
'state',
|
|
58
64
|
'values',
|
|
59
65
|
]);
|
|
66
|
+
export const DOMAIN_CONTROL_FLIGHT_RECORDER_FIELD_KEYS = Object.freeze([...PUBLIC_DOMAIN_CONTROL_FLIGHT_RECORDER_FIELD_KEYS, 'observedAt']);
|
|
60
67
|
export const DOMAIN_CONTROL_FLIGHT_RECORDER_WINDOW_KEYS = Object.freeze([
|
|
61
68
|
'id',
|
|
62
69
|
'domain',
|
|
@@ -75,7 +82,7 @@ export const DOMAIN_CONTROL_FLIGHT_RECORDER_ROOT_KEYS = Object.freeze([
|
|
|
75
82
|
'summary',
|
|
76
83
|
'limitations',
|
|
77
84
|
]);
|
|
78
|
-
export const
|
|
85
|
+
export const PUBLIC_DOMAIN_CONTROL_FLIGHT_RECORDER_EVENT_KEYS = Object.freeze([
|
|
79
86
|
'id',
|
|
80
87
|
'domain',
|
|
81
88
|
'field',
|
|
@@ -88,11 +95,12 @@ export const DOMAIN_CONTROL_FLIGHT_RECORDER_EVENT_KEYS = Object.freeze([
|
|
|
88
95
|
'approvedWindow',
|
|
89
96
|
'explanation',
|
|
90
97
|
]);
|
|
98
|
+
export const DOMAIN_CONTROL_FLIGHT_RECORDER_EVENT_KEYS = Object.freeze([...PUBLIC_DOMAIN_CONTROL_FLIGHT_RECORDER_EVENT_KEYS, 'capturedAt']);
|
|
91
99
|
export const DOMAIN_CONTROL_FLIGHT_RECORDER_APPROVED_WINDOW_KEYS = Object.freeze([
|
|
92
100
|
'id',
|
|
93
101
|
'reason',
|
|
94
102
|
]);
|
|
95
|
-
export const
|
|
103
|
+
export const PUBLIC_DOMAIN_CONTROL_FLIGHT_RECORDER_SUMMARY_KEYS = Object.freeze([
|
|
96
104
|
'firstObservations',
|
|
97
105
|
'observedChanges',
|
|
98
106
|
'approvedChanges',
|
|
@@ -100,21 +108,26 @@ export const DOMAIN_CONTROL_FLIGHT_RECORDER_SUMMARY_KEYS = Object.freeze([
|
|
|
100
108
|
'collectionChanges',
|
|
101
109
|
'recoveredSources',
|
|
102
110
|
]);
|
|
103
|
-
export const
|
|
111
|
+
export const DOMAIN_CONTROL_FLIGHT_RECORDER_SUMMARY_KEYS = Object.freeze([...PUBLIC_DOMAIN_CONTROL_FLIGHT_RECORDER_SUMMARY_KEYS, 'incompleteFields']);
|
|
112
|
+
export const PUBLIC_DOMAIN_CONTROL_FLIGHT_RECORDER_LIMITATIONS = Object.freeze([
|
|
104
113
|
'The flight recorder compares only supplied bounded observations and performs no collection or configuration change.',
|
|
105
114
|
'Source fields remain separate. A collection failure, partial result, unsupported source, or missing field never becomes evidence that a prior value disappeared.',
|
|
106
115
|
'Approved windows label expected timing but do not delete evidence or establish that a change was authorised, successful, safe, or complete.',
|
|
107
116
|
'Observed changes can reflect publication lag or different collection conditions and require analyst review.',
|
|
108
117
|
]);
|
|
118
|
+
export const DOMAIN_CONTROL_FLIGHT_RECORDER_LIMITATIONS = Object.freeze([
|
|
119
|
+
...PUBLIC_DOMAIN_CONTROL_FLIGHT_RECORDER_LIMITATIONS,
|
|
120
|
+
'Capture time and source observation time remain separate. Unknown, conflicting or non-increasing source times cannot establish an observed change.',
|
|
121
|
+
]);
|
|
109
122
|
export const DOMAIN_CONTROL_FLIGHT_RECORDER_INPUT_COMPATIBILITY = defineSchemaCompatibility({
|
|
110
123
|
id: 'cli.domain-control-flight-recorder-input',
|
|
111
124
|
kind: 'cli_document',
|
|
112
125
|
schema: DOMAIN_CONTROL_FLIGHT_RECORDER_INPUT_SCHEMA,
|
|
113
126
|
currentVersion: DOMAIN_CONTROL_FLIGHT_RECORDER_VERSION,
|
|
114
|
-
supportedVersions:
|
|
127
|
+
supportedVersions: SUPPORTED_DOMAIN_CONTROL_FLIGHT_RECORDER_VERSIONS,
|
|
115
128
|
acceptsUnversionedLegacy: false,
|
|
116
129
|
futureVersionBehavior: 'reject',
|
|
117
|
-
migration: '
|
|
130
|
+
migration: 'read_only',
|
|
118
131
|
writeSemantics: 'read_only',
|
|
119
132
|
byteBudget: MAX_DOMAIN_CONTROL_FLIGHT_RECORDER_INPUT_BYTES,
|
|
120
133
|
owner: 'packages/contracts/domain-control-flight-recorder.mts',
|
|
@@ -125,15 +138,18 @@ export const DOMAIN_CONTROL_FLIGHT_RECORDER_COMPATIBILITY = defineSchemaCompatib
|
|
|
125
138
|
kind: 'cli_document',
|
|
126
139
|
schema: DOMAIN_CONTROL_FLIGHT_RECORDER_SCHEMA,
|
|
127
140
|
currentVersion: DOMAIN_CONTROL_FLIGHT_RECORDER_VERSION,
|
|
128
|
-
supportedVersions:
|
|
141
|
+
supportedVersions: SUPPORTED_DOMAIN_CONTROL_FLIGHT_RECORDER_VERSIONS,
|
|
129
142
|
acceptsUnversionedLegacy: false,
|
|
130
143
|
futureVersionBehavior: 'reject',
|
|
131
|
-
migration: '
|
|
144
|
+
migration: 'read_only',
|
|
132
145
|
writeSemantics: 'read_only',
|
|
133
146
|
byteBudget: MAX_DOMAIN_CONTROL_FLIGHT_RECORDER_OUTPUT_BYTES,
|
|
134
147
|
owner: 'packages/contracts/domain-control-flight-recorder.mts',
|
|
135
148
|
note: 'Offline first and last observed control history that preserves expected and unexpected changes.',
|
|
136
149
|
});
|
|
150
|
+
const FLIGHT_INPUT_SHAPE_IDS = SUPPORTED_DOMAIN_CONTROL_FLIGHT_RECORDER_VERSIONS.map((version) => `domain-control-flight-recorder.input.v${version}`);
|
|
151
|
+
const FLIGHT_DOCUMENT_SHAPE_IDS = SUPPORTED_DOMAIN_CONTROL_FLIGHT_RECORDER_VERSIONS.map((version) => `domain-control-flight-recorder.document.v${version}`);
|
|
152
|
+
const CURRENT_FLIGHT_DOCUMENT_SHAPE_ID = `domain-control-flight-recorder.document.v${DOMAIN_CONTROL_FLIGHT_RECORDER_VERSION}`;
|
|
137
153
|
export const DOMAIN_CONTROL_FLIGHT_RECORDER_SCHEMA_LIFECYCLE = defineSchemaLifecycleFamily({
|
|
138
154
|
id: 'domain-control-flight-recorder',
|
|
139
155
|
owner: 'packages/contracts/domain-control-flight-recorder.mts',
|
|
@@ -175,7 +191,11 @@ export const DOMAIN_CONTROL_FLIGHT_RECORDER_SCHEMA_LIFECYCLE = defineSchemaLifec
|
|
|
175
191
|
byteBudget: MAX_DOMAIN_CONTROL_FLIGHT_RECORDER_OUTPUT_BYTES,
|
|
176
192
|
fixtureIds: ['domain-control-flight-recorder-v1'],
|
|
177
193
|
},
|
|
178
|
-
]
|
|
194
|
+
].flatMap((contract) => SUPPORTED_DOMAIN_CONTROL_FLIGHT_RECORDER_VERSIONS.map((version) => ({
|
|
195
|
+
...contract, version, lifecycle: version === DOMAIN_CONTROL_FLIGHT_RECORDER_VERSION ? 'current' : 'legacy',
|
|
196
|
+
emitted: contract.emitted && version === DOMAIN_CONTROL_FLIGHT_RECORDER_VERSION,
|
|
197
|
+
fixtureIds: contract.fixtureIds.map((id) => id.replace(/v\d+$/u, `v${version}`)),
|
|
198
|
+
}))),
|
|
179
199
|
fixtures: [
|
|
180
200
|
{
|
|
181
201
|
id: 'domain-control-flight-recorder-input-v1',
|
|
@@ -184,7 +204,7 @@ export const DOMAIN_CONTROL_FLIGHT_RECORDER_SCHEMA_LIFECYCLE = defineSchemaLifec
|
|
|
184
204
|
sha256: '1fc4127a5885409d2ba76d40c1835a496767c6fe6d87f0545d8367d5f394a628',
|
|
185
205
|
contentDigestSha256: null,
|
|
186
206
|
schema: DOMAIN_CONTROL_FLIGHT_RECORDER_INPUT_SCHEMA,
|
|
187
|
-
version:
|
|
207
|
+
version: PUBLIC_DOMAIN_CONTROL_FLIGHT_RECORDER_VERSION,
|
|
188
208
|
role: 'input',
|
|
189
209
|
expectation: 'normalises_to_current_output',
|
|
190
210
|
expectedOutputFixtureId: 'domain-control-flight-recorder-v1',
|
|
@@ -197,25 +217,34 @@ export const DOMAIN_CONTROL_FLIGHT_RECORDER_SCHEMA_LIFECYCLE = defineSchemaLifec
|
|
|
197
217
|
sha256: 'c35d43907bba7a7912f3151bc1a2ba37bb8f774c56a3bd5f690be262e842cf4c',
|
|
198
218
|
contentDigestSha256: null,
|
|
199
219
|
schema: DOMAIN_CONTROL_FLIGHT_RECORDER_SCHEMA,
|
|
200
|
-
version:
|
|
220
|
+
version: PUBLIC_DOMAIN_CONTROL_FLIGHT_RECORDER_VERSION,
|
|
201
221
|
role: 'current',
|
|
202
222
|
expectation: 'accepted_exact',
|
|
203
223
|
expectedOutputFixtureId: null,
|
|
204
224
|
scope: 'repository',
|
|
205
225
|
},
|
|
206
|
-
]
|
|
226
|
+
].flatMap((fixture) => {
|
|
227
|
+
const version = DOMAIN_CONTROL_FLIGHT_RECORDER_VERSION;
|
|
228
|
+
const id = fixture.id.replace(/v\d+$/u, `v${version}`);
|
|
229
|
+
const content = fixture.role === 'input'
|
|
230
|
+
? { bytes: 2108, sha256: '6998ea864355dd0802b3b6f2c4905f8c84136ad0d4ac9cad1a0fd63dca523b60' }
|
|
231
|
+
: { bytes: 4649, sha256: '8f3168d101291166f34cede351bc176a934e7997920cd8c22ec00d642ec000df' };
|
|
232
|
+
return [
|
|
233
|
+
{ ...fixture, role: fixture.role === 'input' ? 'input' : 'historical', expectation: 'accepted_exact', expectedOutputFixtureId: null },
|
|
234
|
+
{ ...fixture, ...content, id, path: `test/fixtures/${id}.json`, version, expectedOutputFixtureId: fixture.expectedOutputFixtureId?.replace(/v\d+$/u, `v${version}`) ?? null },
|
|
235
|
+
];
|
|
236
|
+
}),
|
|
207
237
|
metadata: {
|
|
208
|
-
metadataVersion: 2,
|
|
209
238
|
enforcement: 'declarative_only',
|
|
210
|
-
shapes: [
|
|
239
|
+
shapes: SUPPORTED_DOMAIN_CONTROL_FLIGHT_RECORDER_VERSIONS.flatMap((version) => [
|
|
211
240
|
{
|
|
212
|
-
id:
|
|
241
|
+
id: `domain-control-flight-recorder.input.v${version}`,
|
|
213
242
|
schema: DOMAIN_CONTROL_FLIGHT_RECORDER_INPUT_SCHEMA,
|
|
214
|
-
versions: [
|
|
243
|
+
versions: [version],
|
|
215
244
|
objects: [
|
|
216
245
|
{ path: '$', requiredKeys: DOMAIN_CONTROL_FLIGHT_RECORDER_INPUT_KEYS, optionalKeys: [], unknownKeys: 'reject' },
|
|
217
|
-
{ path: '$.observations[]', requiredKeys: DOMAIN_CONTROL_FLIGHT_RECORDER_OBSERVATION_KEYS, optionalKeys: [], unknownKeys: 'reject' },
|
|
218
|
-
{ path: '$.observations[].fields[]', requiredKeys: DOMAIN_CONTROL_FLIGHT_RECORDER_FIELD_KEYS, optionalKeys: [], unknownKeys: 'reject' },
|
|
246
|
+
{ path: '$.observations[]', requiredKeys: version === PUBLIC_DOMAIN_CONTROL_FLIGHT_RECORDER_VERSION ? PUBLIC_DOMAIN_CONTROL_FLIGHT_RECORDER_OBSERVATION_KEYS : DOMAIN_CONTROL_FLIGHT_RECORDER_OBSERVATION_KEYS, optionalKeys: [], unknownKeys: 'reject' },
|
|
247
|
+
{ path: '$.observations[].fields[]', requiredKeys: version === PUBLIC_DOMAIN_CONTROL_FLIGHT_RECORDER_VERSION ? PUBLIC_DOMAIN_CONTROL_FLIGHT_RECORDER_FIELD_KEYS : DOMAIN_CONTROL_FLIGHT_RECORDER_FIELD_KEYS, optionalKeys: [], unknownKeys: 'reject' },
|
|
219
248
|
{ path: '$.approvedWindows[]', requiredKeys: DOMAIN_CONTROL_FLIGHT_RECORDER_WINDOW_KEYS, optionalKeys: [], unknownKeys: 'reject' },
|
|
220
249
|
],
|
|
221
250
|
fixedArrays: [],
|
|
@@ -223,20 +252,20 @@ export const DOMAIN_CONTROL_FLIGHT_RECORDER_SCHEMA_LIFECYCLE = defineSchemaLifec
|
|
|
223
252
|
target: { schema: DOMAIN_CONTROL_FLIGHT_RECORDER_SCHEMA, version: DOMAIN_CONTROL_FLIGHT_RECORDER_VERSION },
|
|
224
253
|
},
|
|
225
254
|
{
|
|
226
|
-
id:
|
|
255
|
+
id: `domain-control-flight-recorder.document.v${version}`,
|
|
227
256
|
schema: DOMAIN_CONTROL_FLIGHT_RECORDER_SCHEMA,
|
|
228
|
-
versions: [
|
|
257
|
+
versions: [version],
|
|
229
258
|
objects: [
|
|
230
259
|
{ path: '$', requiredKeys: DOMAIN_CONTROL_FLIGHT_RECORDER_ROOT_KEYS, optionalKeys: [], unknownKeys: 'reject' },
|
|
231
|
-
{ path: '$.events[]', requiredKeys: DOMAIN_CONTROL_FLIGHT_RECORDER_EVENT_KEYS, optionalKeys: [], unknownKeys: 'reject' },
|
|
260
|
+
{ path: '$.events[]', requiredKeys: version === PUBLIC_DOMAIN_CONTROL_FLIGHT_RECORDER_VERSION ? PUBLIC_DOMAIN_CONTROL_FLIGHT_RECORDER_EVENT_KEYS : DOMAIN_CONTROL_FLIGHT_RECORDER_EVENT_KEYS, optionalKeys: [], unknownKeys: 'reject' },
|
|
232
261
|
{ path: '$.events[].approvedWindow', requiredKeys: DOMAIN_CONTROL_FLIGHT_RECORDER_APPROVED_WINDOW_KEYS, optionalKeys: [], unknownKeys: 'reject' },
|
|
233
|
-
{ path: '$.summary', requiredKeys: DOMAIN_CONTROL_FLIGHT_RECORDER_SUMMARY_KEYS, optionalKeys: [], unknownKeys: 'reject' },
|
|
262
|
+
{ path: '$.summary', requiredKeys: version === PUBLIC_DOMAIN_CONTROL_FLIGHT_RECORDER_VERSION ? PUBLIC_DOMAIN_CONTROL_FLIGHT_RECORDER_SUMMARY_KEYS : DOMAIN_CONTROL_FLIGHT_RECORDER_SUMMARY_KEYS, optionalKeys: [], unknownKeys: 'reject' },
|
|
234
263
|
],
|
|
235
|
-
fixedArrays: [{ path: '$.limitations', values: DOMAIN_CONTROL_FLIGHT_RECORDER_LIMITATIONS }],
|
|
264
|
+
fixedArrays: [{ path: '$.limitations', values: version === PUBLIC_DOMAIN_CONTROL_FLIGHT_RECORDER_VERSION ? PUBLIC_DOMAIN_CONTROL_FLIGHT_RECORDER_LIMITATIONS : DOMAIN_CONTROL_FLIGHT_RECORDER_LIMITATIONS }],
|
|
236
265
|
normalisation: 'preserve_document',
|
|
237
266
|
target: null,
|
|
238
267
|
},
|
|
239
|
-
],
|
|
268
|
+
]),
|
|
240
269
|
boundProfiles: [
|
|
241
270
|
{
|
|
242
271
|
id: 'domain-control-flight-recorder.input-wire.v1',
|
|
@@ -248,7 +277,7 @@ export const DOMAIN_CONTROL_FLIGHT_RECORDER_SCHEMA_LIFECYCLE = defineSchemaLifec
|
|
|
248
277
|
{ id: 'observation-fields', path: '$.observations[].fields', phase: 'pre_accumulation', unit: 'items', minimum: 0, maximum: MAX_FLIGHT_RECORDER_FIELDS, handling: 'reject' },
|
|
249
278
|
{ id: 'observation-unique-fields', path: '$.observations[].fields', phase: 'normalised', unit: 'items', minimum: 0, maximum: MAX_FLIGHT_RECORDER_UNIQUE_FIELDS, handling: 'reject' },
|
|
250
279
|
{ id: 'field-input-values', path: '$.observations[].fields[].values', phase: 'pre_accumulation', unit: 'items', minimum: 0, maximum: MAX_FLIGHT_RECORDER_INPUT_VALUES, handling: 'reject' },
|
|
251
|
-
{ id: 'field-values', path: '$.observations[].fields[].values', phase: 'normalised', unit: 'items', minimum: 0, maximum: MAX_FLIGHT_RECORDER_VALUES, handling: '
|
|
280
|
+
{ id: 'field-values', path: '$.observations[].fields[].values', phase: 'normalised', unit: 'items', minimum: 0, maximum: MAX_FLIGHT_RECORDER_VALUES, handling: 'reject' },
|
|
252
281
|
{ id: 'field-source', path: '$.observations[].fields[].source', phase: 'pre_accumulation', unit: 'characters', minimum: 1, maximum: MAX_FLIGHT_RECORDER_SOURCE_LENGTH, handling: 'reject' },
|
|
253
282
|
{ id: 'field-value-text', path: '$.observations[].fields[].values[]', phase: 'pre_accumulation', unit: 'characters', minimum: 1, maximum: MAX_FLIGHT_RECORDER_VALUE_LENGTH, handling: 'reject' },
|
|
254
283
|
{ id: 'approved-windows', path: '$.approvedWindows', phase: 'pre_accumulation', unit: 'items', minimum: 0, maximum: MAX_FLIGHT_RECORDER_WINDOWS, handling: 'reject' },
|
|
@@ -294,7 +323,7 @@ export const DOMAIN_CONTROL_FLIGHT_RECORDER_SCHEMA_LIFECYCLE = defineSchemaLifec
|
|
|
294
323
|
{
|
|
295
324
|
id: 'domain-control-flight-recorder.json.v1',
|
|
296
325
|
schema: DOMAIN_CONTROL_FLIGHT_RECORDER_SCHEMA,
|
|
297
|
-
versions:
|
|
326
|
+
versions: SUPPORTED_DOMAIN_CONTROL_FLIGHT_RECORDER_VERSIONS,
|
|
298
327
|
mediaType: 'application/json',
|
|
299
328
|
encoding: 'utf-8',
|
|
300
329
|
bom: false,
|
|
@@ -353,13 +382,22 @@ export const DOMAIN_CONTROL_FLIGHT_RECORDER_SCHEMA_LIFECYCLE = defineSchemaLifec
|
|
|
353
382
|
},
|
|
354
383
|
],
|
|
355
384
|
consumerEdges: [
|
|
385
|
+
{
|
|
386
|
+
id: 'domain-control-flight-recorder.node-validate', plane: 'node', operation: 'validate-document',
|
|
387
|
+
acceptedContracts: [{ schema: DOMAIN_CONTROL_FLIGHT_RECORDER_SCHEMA, versions: SUPPORTED_DOMAIN_CONTROL_FLIGHT_RECORDER_VERSIONS, mode: 'direct' }],
|
|
388
|
+
emittedContract: null, shapeIds: FLIGHT_DOCUMENT_SHAPE_IDS,
|
|
389
|
+
boundProfileIds: ['domain-control-flight-recorder.output-wire.v1'],
|
|
390
|
+
hookIds: ['domain-control-flight-recorder.node.validate-document'], serialisationProfileId: null,
|
|
391
|
+
privacyProfileId: 'domain-control-flight-recorder.sensitive.v1', expiryPolicyId: 'domain-control-flight-recorder.expiry-not-applicable.v1',
|
|
392
|
+
requestMode: 'none', retentionEffect: 'transient_report', bindingState: 'declared_unenforced', policyState: 'current',
|
|
393
|
+
},
|
|
356
394
|
{
|
|
357
395
|
id: 'domain-control-flight-recorder.node-build',
|
|
358
396
|
plane: 'node',
|
|
359
397
|
operation: 'review',
|
|
360
|
-
acceptedContracts: [{ schema: DOMAIN_CONTROL_FLIGHT_RECORDER_INPUT_SCHEMA, versions:
|
|
398
|
+
acceptedContracts: [{ schema: DOMAIN_CONTROL_FLIGHT_RECORDER_INPUT_SCHEMA, versions: SUPPORTED_DOMAIN_CONTROL_FLIGHT_RECORDER_VERSIONS, mode: 'direct' }],
|
|
361
399
|
emittedContract: { schema: DOMAIN_CONTROL_FLIGHT_RECORDER_SCHEMA, version: DOMAIN_CONTROL_FLIGHT_RECORDER_VERSION },
|
|
362
|
-
shapeIds: [
|
|
400
|
+
shapeIds: [...FLIGHT_INPUT_SHAPE_IDS, CURRENT_FLIGHT_DOCUMENT_SHAPE_ID],
|
|
363
401
|
boundProfileIds: ['domain-control-flight-recorder.input-wire.v1', 'domain-control-flight-recorder.output-wire.v1'],
|
|
364
402
|
hookIds: ['domain-control-flight-recorder.node.build'],
|
|
365
403
|
serialisationProfileId: null,
|
|
@@ -374,9 +412,9 @@ export const DOMAIN_CONTROL_FLIGHT_RECORDER_SCHEMA_LIFECYCLE = defineSchemaLifec
|
|
|
374
412
|
id: 'domain-control-flight-recorder.cli-json-stdout',
|
|
375
413
|
plane: 'cli',
|
|
376
414
|
operation: 'review-json-stdout',
|
|
377
|
-
acceptedContracts: [{ schema: DOMAIN_CONTROL_FLIGHT_RECORDER_INPUT_SCHEMA, versions:
|
|
415
|
+
acceptedContracts: [{ schema: DOMAIN_CONTROL_FLIGHT_RECORDER_INPUT_SCHEMA, versions: SUPPORTED_DOMAIN_CONTROL_FLIGHT_RECORDER_VERSIONS, mode: 'direct' }],
|
|
378
416
|
emittedContract: { schema: DOMAIN_CONTROL_FLIGHT_RECORDER_SCHEMA, version: DOMAIN_CONTROL_FLIGHT_RECORDER_VERSION },
|
|
379
|
-
shapeIds: [
|
|
417
|
+
shapeIds: [...FLIGHT_INPUT_SHAPE_IDS, CURRENT_FLIGHT_DOCUMENT_SHAPE_ID],
|
|
380
418
|
boundProfileIds: ['domain-control-flight-recorder.input-wire.v1', 'domain-control-flight-recorder.output-wire.v1', 'domain-control-flight-recorder.cli-command.v1'],
|
|
381
419
|
hookIds: ['domain-control-flight-recorder.node.build', 'domain-control-flight-recorder.node.serialise-json'],
|
|
382
420
|
serialisationProfileId: 'domain-control-flight-recorder.json.v1',
|
|
@@ -391,9 +429,9 @@ export const DOMAIN_CONTROL_FLIGHT_RECORDER_SCHEMA_LIFECYCLE = defineSchemaLifec
|
|
|
391
429
|
id: 'domain-control-flight-recorder.cli-terminal-stdout',
|
|
392
430
|
plane: 'cli',
|
|
393
431
|
operation: 'review-terminal-stdout',
|
|
394
|
-
acceptedContracts: [{ schema: DOMAIN_CONTROL_FLIGHT_RECORDER_INPUT_SCHEMA, versions:
|
|
432
|
+
acceptedContracts: [{ schema: DOMAIN_CONTROL_FLIGHT_RECORDER_INPUT_SCHEMA, versions: SUPPORTED_DOMAIN_CONTROL_FLIGHT_RECORDER_VERSIONS, mode: 'direct' }],
|
|
395
433
|
emittedContract: { schema: DOMAIN_CONTROL_FLIGHT_RECORDER_SCHEMA, version: DOMAIN_CONTROL_FLIGHT_RECORDER_VERSION },
|
|
396
|
-
shapeIds: [
|
|
434
|
+
shapeIds: [...FLIGHT_INPUT_SHAPE_IDS, CURRENT_FLIGHT_DOCUMENT_SHAPE_ID],
|
|
397
435
|
boundProfileIds: ['domain-control-flight-recorder.input-wire.v1', 'domain-control-flight-recorder.output-wire.v1', 'domain-control-flight-recorder.cli-command.v1'],
|
|
398
436
|
hookIds: ['domain-control-flight-recorder.node.build', 'domain-control-flight-recorder.node.format-terminal'],
|
|
399
437
|
serialisationProfileId: null,
|
|
@@ -408,9 +446,9 @@ export const DOMAIN_CONTROL_FLIGHT_RECORDER_SCHEMA_LIFECYCLE = defineSchemaLifec
|
|
|
408
446
|
id: 'domain-control-flight-recorder.cli-json-file',
|
|
409
447
|
plane: 'cli',
|
|
410
448
|
operation: 'review-json-file',
|
|
411
|
-
acceptedContracts: [{ schema: DOMAIN_CONTROL_FLIGHT_RECORDER_INPUT_SCHEMA, versions:
|
|
449
|
+
acceptedContracts: [{ schema: DOMAIN_CONTROL_FLIGHT_RECORDER_INPUT_SCHEMA, versions: SUPPORTED_DOMAIN_CONTROL_FLIGHT_RECORDER_VERSIONS, mode: 'direct' }],
|
|
412
450
|
emittedContract: { schema: DOMAIN_CONTROL_FLIGHT_RECORDER_SCHEMA, version: DOMAIN_CONTROL_FLIGHT_RECORDER_VERSION },
|
|
413
|
-
shapeIds: [
|
|
451
|
+
shapeIds: [...FLIGHT_INPUT_SHAPE_IDS, CURRENT_FLIGHT_DOCUMENT_SHAPE_ID],
|
|
414
452
|
boundProfileIds: ['domain-control-flight-recorder.input-wire.v1', 'domain-control-flight-recorder.output-wire.v1', 'domain-control-flight-recorder.cli-command.v1'],
|
|
415
453
|
hookIds: ['domain-control-flight-recorder.node.build', 'domain-control-flight-recorder.node.serialise-json'],
|
|
416
454
|
serialisationProfileId: 'domain-control-flight-recorder.json.v1',
|
|
@@ -425,9 +463,9 @@ export const DOMAIN_CONTROL_FLIGHT_RECORDER_SCHEMA_LIFECYCLE = defineSchemaLifec
|
|
|
425
463
|
id: 'domain-control-flight-recorder.cli-terminal-file',
|
|
426
464
|
plane: 'cli',
|
|
427
465
|
operation: 'review-terminal-file',
|
|
428
|
-
acceptedContracts: [{ schema: DOMAIN_CONTROL_FLIGHT_RECORDER_INPUT_SCHEMA, versions:
|
|
466
|
+
acceptedContracts: [{ schema: DOMAIN_CONTROL_FLIGHT_RECORDER_INPUT_SCHEMA, versions: SUPPORTED_DOMAIN_CONTROL_FLIGHT_RECORDER_VERSIONS, mode: 'direct' }],
|
|
429
467
|
emittedContract: { schema: DOMAIN_CONTROL_FLIGHT_RECORDER_SCHEMA, version: DOMAIN_CONTROL_FLIGHT_RECORDER_VERSION },
|
|
430
|
-
shapeIds: [
|
|
468
|
+
shapeIds: [...FLIGHT_INPUT_SHAPE_IDS, CURRENT_FLIGHT_DOCUMENT_SHAPE_ID],
|
|
431
469
|
boundProfileIds: ['domain-control-flight-recorder.input-wire.v1', 'domain-control-flight-recorder.output-wire.v1', 'domain-control-flight-recorder.cli-command.v1'],
|
|
432
470
|
hookIds: ['domain-control-flight-recorder.node.build', 'domain-control-flight-recorder.node.format-terminal'],
|
|
433
471
|
serialisationProfileId: null,
|
|
@@ -444,7 +482,7 @@ export const DOMAIN_CONTROL_FLIGHT_RECORDER_SCHEMA_LIFECYCLE = defineSchemaLifec
|
|
|
444
482
|
operation: 'embed-after-current-manifest-bounded-passive-monitor',
|
|
445
483
|
acceptedContracts: [],
|
|
446
484
|
emittedContract: { schema: DOMAIN_CONTROL_FLIGHT_RECORDER_SCHEMA, version: DOMAIN_CONTROL_FLIGHT_RECORDER_VERSION },
|
|
447
|
-
shapeIds: [
|
|
485
|
+
shapeIds: [CURRENT_FLIGHT_DOCUMENT_SHAPE_ID],
|
|
448
486
|
boundProfileIds: ['domain-control-flight-recorder.output-wire.v1', 'domain-control-flight-recorder.monitor-action.v1'],
|
|
449
487
|
hookIds: ['domain-control-flight-recorder.node.validate-document', 'domain-control-flight-recorder.cli.monitor'],
|
|
450
488
|
serialisationProfileId: null,
|