@ashlr/hub 3.2.7 → 3.3.2
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/CHANGELOG.md +314 -2
- package/README.md +54 -38
- package/dist/build-identity.json +2 -2
- package/dist/cli/audit.js +18 -0
- package/dist/cli/audit.js.map +1 -1
- package/dist/cli/backlog.d.ts +0 -5
- package/dist/cli/backlog.js +18 -0
- package/dist/cli/backlog.js.map +1 -1
- package/dist/cli/comms.js +20 -0
- package/dist/cli/comms.js.map +1 -1
- package/dist/cli/completions.d.ts +6 -1
- package/dist/cli/completions.js +33 -10
- package/dist/cli/completions.js.map +1 -1
- package/dist/cli/daemon.js +10 -3
- package/dist/cli/daemon.js.map +1 -1
- package/dist/cli/dashboard.js +5 -4
- package/dist/cli/dashboard.js.map +1 -1
- package/dist/cli/demo.d.ts +0 -27
- package/dist/cli/demo.js +17 -0
- package/dist/cli/demo.js.map +1 -1
- package/dist/cli/help.js +22 -9
- package/dist/cli/help.js.map +1 -1
- package/dist/cli/inbox.d.ts +14 -2
- package/dist/cli/inbox.js +137 -23
- package/dist/cli/inbox.js.map +1 -1
- package/dist/cli/onboard.d.ts +0 -13
- package/dist/cli/onboard.js +20 -0
- package/dist/cli/onboard.js.map +1 -1
- package/dist/cli/resources.js +15 -0
- package/dist/cli/resources.js.map +1 -1
- package/dist/cli/run.js +1 -1
- package/dist/cli/run.js.map +1 -1
- package/dist/cli/sandbox.js +43 -0
- package/dist/cli/sandbox.js.map +1 -1
- package/dist/cli/serve.js +7 -3
- package/dist/cli/serve.js.map +1 -1
- package/dist/cli/setup.d.ts +5 -3
- package/dist/cli/setup.js +14 -7
- package/dist/cli/setup.js.map +1 -1
- package/dist/cli/tui.d.ts +0 -6
- package/dist/cli/tui.js +14 -0
- package/dist/cli/tui.js.map +1 -1
- package/dist/cli/update.js +3 -1
- package/dist/cli/update.js.map +1 -1
- package/dist/core/config.js +70 -0
- package/dist/core/config.js.map +1 -1
- package/dist/core/daemon/loop.js +83 -3
- package/dist/core/daemon/loop.js.map +1 -1
- package/dist/core/daemon/runtime-activation-resident-start-protocol.d.ts +141 -0
- package/dist/core/daemon/runtime-activation-resident-start-protocol.js +462 -0
- package/dist/core/daemon/runtime-activation-resident-start-protocol.js.map +1 -0
- package/dist/core/daemon/runtime-activation-resident-start-runtime.d.ts +27 -0
- package/dist/core/daemon/runtime-activation-resident-start-runtime.js +28 -0
- package/dist/core/daemon/runtime-activation-resident-start-runtime.js.map +1 -0
- package/dist/core/daemon/runtime-activation-stopped-consumer.d.ts +139 -0
- package/dist/core/daemon/runtime-activation-stopped-consumer.js +995 -0
- package/dist/core/daemon/runtime-activation-stopped-consumer.js.map +1 -0
- package/dist/core/daemon/runtime-activation-stopped-runtime.d.ts +36 -0
- package/dist/core/daemon/runtime-activation-stopped-runtime.js +134 -0
- package/dist/core/daemon/runtime-activation-stopped-runtime.js.map +1 -0
- package/dist/core/daemon/runtime-activation-transaction.d.ts +41 -17
- package/dist/core/daemon/runtime-activation-transaction.js +80 -11
- package/dist/core/daemon/runtime-activation-transaction.js.map +1 -1
- package/dist/core/daemon/runtime-release-dependency-inventory.js +1 -0
- package/dist/core/daemon/runtime-release-dependency-inventory.js.map +1 -1
- package/dist/core/daemon/service-install-authority.d.ts +1 -1
- package/dist/core/daemon/service-install-authority.js +4 -2
- package/dist/core/daemon/service-install-authority.js.map +1 -1
- package/dist/core/dashboard.d.ts +10 -0
- package/dist/core/dashboard.js +103 -28
- package/dist/core/dashboard.js.map +1 -1
- package/dist/core/effective-config.js +7 -0
- package/dist/core/effective-config.js.map +1 -1
- package/dist/core/fleet/automerge-pass.js +57 -73
- package/dist/core/fleet/automerge-pass.js.map +1 -1
- package/dist/core/fleet/decisions-ledger.js +36 -13
- package/dist/core/fleet/decisions-ledger.js.map +1 -1
- package/dist/core/fleet/external-skill-git-capture.js +9 -1
- package/dist/core/fleet/external-skill-git-capture.js.map +1 -1
- package/dist/core/fleet/judge-decision-metadata.d.ts +8 -1
- package/dist/core/fleet/judge-decision-metadata.js +14 -1
- package/dist/core/fleet/judge-decision-metadata.js.map +1 -1
- package/dist/core/fleet/judge-trace.js +2 -1
- package/dist/core/fleet/judge-trace.js.map +1 -1
- package/dist/core/fleet/manager.d.ts +21 -1
- package/dist/core/fleet/manager.js +137 -41
- package/dist/core/fleet/manager.js.map +1 -1
- package/dist/core/fleet/post-merge-credit-label.d.ts +10 -0
- package/dist/core/fleet/post-merge-credit-label.js +13 -0
- package/dist/core/fleet/post-merge-credit-label.js.map +1 -0
- package/dist/core/fleet/post-merge-credit.d.ts +119 -12
- package/dist/core/fleet/post-merge-credit.js +353 -14
- package/dist/core/fleet/post-merge-credit.js.map +1 -1
- package/dist/core/fleet/self-improve.d.ts +38 -5
- package/dist/core/fleet/self-improve.js +201 -12
- package/dist/core/fleet/self-improve.js.map +1 -1
- package/dist/core/fleet/skill-library.d.ts +21 -2
- package/dist/core/fleet/skill-library.js +54 -12
- package/dist/core/fleet/skill-library.js.map +1 -1
- package/dist/core/fleet/worked-ledger.d.ts +22 -0
- package/dist/core/fleet/worked-ledger.js +32 -0
- package/dist/core/fleet/worked-ledger.js.map +1 -1
- package/dist/core/goals/store.js +60 -6
- package/dist/core/goals/store.js.map +1 -1
- package/dist/core/inbox/apply.js +2 -1
- package/dist/core/inbox/apply.js.map +1 -1
- package/dist/core/inbox/merge.d.ts +10 -1
- package/dist/core/inbox/merge.js +97 -18
- package/dist/core/inbox/merge.js.map +1 -1
- package/dist/core/integrations/github.d.ts +2 -0
- package/dist/core/integrations/github.js +2 -1
- package/dist/core/integrations/github.js.map +1 -1
- package/dist/core/learn/reflect.d.ts +42 -4
- package/dist/core/learn/reflect.js +66 -5
- package/dist/core/learn/reflect.js.map +1 -1
- package/dist/core/onboard.d.ts +2 -0
- package/dist/core/onboard.js +9 -3
- package/dist/core/onboard.js.map +1 -1
- package/dist/core/run/engines.d.ts +8 -0
- package/dist/core/run/engines.js +9 -1
- package/dist/core/run/engines.js.map +1 -1
- package/dist/core/run/learned-router.js +28 -3
- package/dist/core/run/learned-router.js.map +1 -1
- package/dist/core/run/orchestrator.d.ts +7 -2
- package/dist/core/run/orchestrator.js +88 -60
- package/dist/core/run/orchestrator.js.map +1 -1
- package/dist/core/swarm/rollback.d.ts +11 -0
- package/dist/core/swarm/rollback.js +54 -0
- package/dist/core/swarm/rollback.js.map +1 -1
- package/dist/core/swarm/runner.js +94 -8
- package/dist/core/swarm/runner.js.map +1 -1
- package/dist/core/types.d.ts +103 -3
- package/dist/core/types.js.map +1 -1
- package/dist/core/web/api.d.ts +6 -0
- package/dist/core/web/api.js +174 -18
- package/dist/core/web/api.js.map +1 -1
- package/dist/core/web/control.d.ts +20 -0
- package/dist/core/web/control.js +44 -32
- package/dist/core/web/control.js.map +1 -1
- package/dist/core/web/fleet-status-cache.d.ts +68 -0
- package/dist/core/web/fleet-status-cache.js +120 -0
- package/dist/core/web/fleet-status-cache.js.map +1 -0
- package/dist/core/web/public/app.js +5 -1
- package/dist/core/web/public/next/assets/index-CDHQraxS.css +1 -0
- package/dist/core/web/public/next/assets/index-zVKD9krw.js +69 -0
- package/dist/core/web/public/next/assets/index-zVKD9krw.js.map +1 -0
- package/dist/core/web/public/next/index.html +15 -0
- package/dist/core/web/read-session-revocations.d.ts +26 -0
- package/dist/core/web/read-session-revocations.js +48 -0
- package/dist/core/web/read-session-revocations.js.map +1 -0
- package/dist/core/web/server.js +73 -27
- package/dist/core/web/server.js.map +1 -1
- package/dist/core/web/static.d.ts +1 -1
- package/dist/core/web/static.js +54 -20
- package/dist/core/web/static.js.map +1 -1
- package/dist/release-dependency-inventory.json +1 -1
- package/docs/RUNTIME_ACTIVATION_AUTHORITY.md +115 -21
- package/docs/contracts/CONTRACT-M521.md +102 -0
- package/node_modules/fast-uri/index.js +201 -48
- package/node_modules/fast-uri/lib/schemes.js +9 -4
- package/node_modules/fast-uri/lib/utils.js +388 -91
- package/node_modules/fast-uri/package.json +1 -1
- package/node_modules/fast-uri/test/component-safe-serialization.test.js +105 -0
- package/node_modules/fast-uri/test/equal.test.js +31 -3
- package/node_modules/fast-uri/test/fixtures/uri-js-parse.json +2 -0
- package/node_modules/fast-uri/test/ipv6-canonical.test.js +34 -0
- package/node_modules/fast-uri/test/ipv6-validation.test.js +90 -0
- package/node_modules/fast-uri/test/malformed-percent.test.js +77 -0
- package/node_modules/fast-uri/test/malformed-urn.test.js +61 -0
- package/node_modules/fast-uri/test/parse.test.js +7 -3
- package/node_modules/fast-uri/test/query-fragment-normalization.test.js +33 -0
- package/node_modules/fast-uri/test/reserved-path-normalization.test.js +109 -0
- package/node_modules/fast-uri/test/scheme-validation.test.js +124 -0
- package/node_modules/fast-uri/test/security-normalization.test.js +101 -0
- package/node_modules/fast-uri/test/security.test.js +75 -3
- package/node_modules/fast-uri/test/urn-full-input.test.js +29 -0
- package/node_modules/fast-uri/test/websocket-query-preservation.test.js +24 -0
- package/node_modules/qs/.github/THREAT_MODEL.md +3 -3
- package/node_modules/qs/CHANGELOG.md +26 -0
- package/node_modules/qs/README.md +19 -1
- package/node_modules/qs/dist/qs.js +25 -25
- package/node_modules/qs/eslint.config.mjs +1 -1
- package/node_modules/qs/lib/parse.js +16 -6
- package/node_modules/qs/lib/stringify.js +23 -8
- package/node_modules/qs/lib/utils.js +57 -11
- package/node_modules/qs/package.json +8 -7
- package/node_modules/qs/test/parse.js +419 -0
- package/node_modules/qs/test/stringify.js +317 -0
- package/node_modules/qs/test/utils.js +206 -0
- package/package.json +24 -6
- package/schema/config.schema.json +800 -5
- package/node_modules/which/CHANGELOG.md +0 -166
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* M521 resident-start permit and exact-release acknowledgement protocol.
|
|
3
|
+
*
|
|
4
|
+
* This module is deliberately pure. It verifies signed intent and canonical
|
|
5
|
+
* evidence shapes, but it cannot authenticate a process, contact launchd,
|
|
6
|
+
* mutate a service, or grant activation/dispatch authority. A future native
|
|
7
|
+
* broker must own those effects and the acknowledgement transport.
|
|
8
|
+
*/
|
|
9
|
+
import { type KeyObject } from 'node:crypto';
|
|
10
|
+
export declare const RUNTIME_ACTIVATION_RESIDENT_START_PROTOCOL: "runtime-activation-resident-start-v1";
|
|
11
|
+
export declare const RUNTIME_ACTIVATION_RESIDENT_START_PERMIT_DOMAIN: "ashlr:runtime-activation-resident-start:permit:v1";
|
|
12
|
+
export declare const RUNTIME_ACTIVATION_RESIDENT_START_ACK_DOMAIN: "ashlr:runtime-activation-resident-start:ack:v1";
|
|
13
|
+
export declare const RUNTIME_ACTIVATION_RESIDENT_START_AUTHORITY: Readonly<{
|
|
14
|
+
readonly activationPermitted: false;
|
|
15
|
+
readonly deployPermitted: false;
|
|
16
|
+
readonly dispatchPermitted: false;
|
|
17
|
+
readonly effectPermitted: false;
|
|
18
|
+
readonly installPermitted: false;
|
|
19
|
+
readonly launchPermitted: false;
|
|
20
|
+
readonly rollbackPermitted: false;
|
|
21
|
+
readonly serviceMutationPermitted: false;
|
|
22
|
+
readonly startPermitted: false;
|
|
23
|
+
}>;
|
|
24
|
+
export interface RuntimeActivationResidentStartTrustRootV1 {
|
|
25
|
+
algorithm: 'ed25519';
|
|
26
|
+
keyId: string;
|
|
27
|
+
publicKeySpki: string;
|
|
28
|
+
validFrom: string;
|
|
29
|
+
validUntil: string;
|
|
30
|
+
}
|
|
31
|
+
export interface RuntimeActivationResidentStartReleaseBindingsV1 {
|
|
32
|
+
candidateRevision: string;
|
|
33
|
+
candidateExpectedTree: string;
|
|
34
|
+
candidateVersion: string;
|
|
35
|
+
candidateReleaseTag: string;
|
|
36
|
+
candidateRuntimeTreeSha256: string;
|
|
37
|
+
candidateManifestDigest: string;
|
|
38
|
+
candidateLaunchReceiptSha256: string;
|
|
39
|
+
candidateServiceDescriptorSha256: string;
|
|
40
|
+
candidateServiceInvocationDigest: string;
|
|
41
|
+
configSha256: string;
|
|
42
|
+
currentTarget: string;
|
|
43
|
+
}
|
|
44
|
+
export interface RuntimeActivationResidentStartBindingsV1 extends RuntimeActivationResidentStartReleaseBindingsV1 {
|
|
45
|
+
activationId: string;
|
|
46
|
+
admissionDigest: string;
|
|
47
|
+
planDigest: string;
|
|
48
|
+
canonicalRequestSha256: string;
|
|
49
|
+
trustRootCanonicalSha256: string;
|
|
50
|
+
stoppedPermitId: string;
|
|
51
|
+
stoppedReceiptDigest: string;
|
|
52
|
+
priorServiceLoaded: false;
|
|
53
|
+
priorServiceDisabled: boolean;
|
|
54
|
+
hostUid: number;
|
|
55
|
+
serviceLabel: 'ai.ashlr.daemon';
|
|
56
|
+
serviceTarget: string;
|
|
57
|
+
brokerChallenge: string;
|
|
58
|
+
acknowledgementDeadlineMs: number;
|
|
59
|
+
}
|
|
60
|
+
export interface RuntimeActivationResidentStartPermitPayloadV1 {
|
|
61
|
+
schemaVersion: 1;
|
|
62
|
+
protocol: typeof RUNTIME_ACTIVATION_RESIDENT_START_PROTOCOL;
|
|
63
|
+
permitId: string;
|
|
64
|
+
keyId: string;
|
|
65
|
+
issuedAt: string;
|
|
66
|
+
expiresAt: string;
|
|
67
|
+
scope: {
|
|
68
|
+
action: 'start-exact-selected-resident-release';
|
|
69
|
+
platform: 'darwin';
|
|
70
|
+
nativeBrokerRequired: true;
|
|
71
|
+
killSwitch: 'healthy-engaged';
|
|
72
|
+
providerEffectsBlocked: true;
|
|
73
|
+
serviceStartRequested: true;
|
|
74
|
+
serviceEnable: false;
|
|
75
|
+
serviceInstall: false;
|
|
76
|
+
pointerMutation: false;
|
|
77
|
+
residentAcknowledgement: 'required-pre-dispatch';
|
|
78
|
+
dispatchAuthorized: false;
|
|
79
|
+
};
|
|
80
|
+
bindings: RuntimeActivationResidentStartBindingsV1;
|
|
81
|
+
}
|
|
82
|
+
export interface RuntimeActivationResidentStartPermitEnvelopeV1 {
|
|
83
|
+
payload: RuntimeActivationResidentStartPermitPayloadV1;
|
|
84
|
+
signature: string;
|
|
85
|
+
}
|
|
86
|
+
export interface RuntimeActivationResidentNativeObservationV1 {
|
|
87
|
+
pid: number;
|
|
88
|
+
processStartIdentitySha256: string;
|
|
89
|
+
auditTokenSha256: string;
|
|
90
|
+
executableVnodeSha256: string;
|
|
91
|
+
codeIdentitySha256: string;
|
|
92
|
+
launchdJobGenerationSha256: string;
|
|
93
|
+
}
|
|
94
|
+
export interface RuntimeActivationResidentStartAcknowledgementV1 {
|
|
95
|
+
schemaVersion: 1;
|
|
96
|
+
protocol: typeof RUNTIME_ACTIVATION_RESIDENT_START_PROTOCOL;
|
|
97
|
+
acknowledgement: 'resident-start-pre-dispatch';
|
|
98
|
+
permitId: string;
|
|
99
|
+
permitPayloadDigest: string;
|
|
100
|
+
activationId: string;
|
|
101
|
+
brokerChallenge: string;
|
|
102
|
+
acknowledgedAt: string;
|
|
103
|
+
bindings: RuntimeActivationResidentStartBindingsV1;
|
|
104
|
+
nativeObservation: RuntimeActivationResidentNativeObservationV1;
|
|
105
|
+
channel: {
|
|
106
|
+
transport: 'broker-owned-inherited-fd';
|
|
107
|
+
peerCredentialsVerified: true;
|
|
108
|
+
challengeVerified: true;
|
|
109
|
+
framing: 'canonical-json-single-lf-eof';
|
|
110
|
+
};
|
|
111
|
+
state: {
|
|
112
|
+
killSwitch: 'healthy-engaged';
|
|
113
|
+
phase: 'pre-dispatch';
|
|
114
|
+
dispatchAuthorized: false;
|
|
115
|
+
providerEffectsBlocked: true;
|
|
116
|
+
};
|
|
117
|
+
authority: typeof RUNTIME_ACTIVATION_RESIDENT_START_AUTHORITY;
|
|
118
|
+
}
|
|
119
|
+
export interface RuntimeActivationResidentStartEvidenceResultV1 {
|
|
120
|
+
ok: boolean;
|
|
121
|
+
reason: string;
|
|
122
|
+
authority: typeof RUNTIME_ACTIVATION_RESIDENT_START_AUTHORITY;
|
|
123
|
+
acknowledgementDigest: string | null;
|
|
124
|
+
}
|
|
125
|
+
export declare function parseRuntimeActivationResidentStartPermit(value: unknown): RuntimeActivationResidentStartPermitEnvelopeV1 | null;
|
|
126
|
+
export declare function parseRuntimeActivationResidentStartPermitFrame(input: string | Buffer): RuntimeActivationResidentStartPermitEnvelopeV1 | null;
|
|
127
|
+
export declare function runtimeActivationResidentStartPermitPayloadDigest(payload: RuntimeActivationResidentStartPermitPayloadV1): string;
|
|
128
|
+
export declare function runtimeActivationResidentStartKeyId(publicKey: KeyObject): string;
|
|
129
|
+
export declare function signRuntimeActivationResidentStartPermit(payload: RuntimeActivationResidentStartPermitPayloadV1, privateKey: KeyObject): RuntimeActivationResidentStartPermitEnvelopeV1;
|
|
130
|
+
export declare function verifyRuntimeActivationResidentStartPermit(envelope: RuntimeActivationResidentStartPermitEnvelopeV1, roots: readonly RuntimeActivationResidentStartTrustRootV1[], nowMs: number): string | null;
|
|
131
|
+
export declare function parseRuntimeActivationResidentStartAcknowledgement(value: unknown): RuntimeActivationResidentStartAcknowledgementV1 | null;
|
|
132
|
+
export declare function parseRuntimeActivationResidentStartAcknowledgementFrame(input: string | Buffer): RuntimeActivationResidentStartAcknowledgementV1 | null;
|
|
133
|
+
export declare function runtimeActivationResidentStartPermitFrame(envelope: RuntimeActivationResidentStartPermitEnvelopeV1): string;
|
|
134
|
+
export declare function runtimeActivationResidentStartAcknowledgementFrame(acknowledgement: RuntimeActivationResidentStartAcknowledgementV1): string;
|
|
135
|
+
/**
|
|
136
|
+
* Validate that a broker-authenticated frame is exactly release-bound.
|
|
137
|
+
*
|
|
138
|
+
* Even a successful result is evidence only. This function cannot establish
|
|
139
|
+
* that the caller supplied evidence from a native broker-owned channel.
|
|
140
|
+
*/
|
|
141
|
+
export declare function evaluateRuntimeActivationResidentStartAcknowledgement(acknowledgement: RuntimeActivationResidentStartAcknowledgementV1, permit: RuntimeActivationResidentStartPermitPayloadV1, expectedNativeObservation: RuntimeActivationResidentNativeObservationV1): RuntimeActivationResidentStartEvidenceResultV1;
|
|
@@ -0,0 +1,462 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* M521 resident-start permit and exact-release acknowledgement protocol.
|
|
3
|
+
*
|
|
4
|
+
* This module is deliberately pure. It verifies signed intent and canonical
|
|
5
|
+
* evidence shapes, but it cannot authenticate a process, contact launchd,
|
|
6
|
+
* mutate a service, or grant activation/dispatch authority. A future native
|
|
7
|
+
* broker must own those effects and the acknowledgement transport.
|
|
8
|
+
*/
|
|
9
|
+
import { createHash, createPublicKey, sign, timingSafeEqual, verify, } from 'node:crypto';
|
|
10
|
+
import { canonicalizeDaemonActivationValue } from './activation-permit.js';
|
|
11
|
+
export const RUNTIME_ACTIVATION_RESIDENT_START_PROTOCOL = 'runtime-activation-resident-start-v1';
|
|
12
|
+
export const RUNTIME_ACTIVATION_RESIDENT_START_PERMIT_DOMAIN = 'ashlr:runtime-activation-resident-start:permit:v1';
|
|
13
|
+
export const RUNTIME_ACTIVATION_RESIDENT_START_ACK_DOMAIN = 'ashlr:runtime-activation-resident-start:ack:v1';
|
|
14
|
+
const PERMIT_SIGNATURE_DOMAIN = `${RUNTIME_ACTIVATION_RESIDENT_START_PERMIT_DOMAIN}\0`;
|
|
15
|
+
const MAX_PERMIT_FRAME_BYTES = 64 * 1024;
|
|
16
|
+
const MAX_ACK_FRAME_BYTES = 64 * 1024;
|
|
17
|
+
const MAX_PERMIT_VALIDITY_MS = 120_000;
|
|
18
|
+
const MAX_FUTURE_SKEW_MS = 30_000;
|
|
19
|
+
const MAX_ACK_DEADLINE_MS = 30_000;
|
|
20
|
+
const SHA256_RE = /^[a-f0-9]{64}$/u;
|
|
21
|
+
const SHA1_RE = /^[a-f0-9]{40}$/u;
|
|
22
|
+
const UUID_RE = /^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/iu;
|
|
23
|
+
const KEY_ID_RE = /^[A-Za-z0-9][A-Za-z0-9._-]{0,63}$/u;
|
|
24
|
+
const PACKAGE_VERSION_RE = /^\d+\.\d+\.\d+(?:-[0-9A-Za-z.-]+)?(?:\+[0-9A-Za-z.-]+)?$/u;
|
|
25
|
+
export const RUNTIME_ACTIVATION_RESIDENT_START_AUTHORITY = Object.freeze({
|
|
26
|
+
activationPermitted: false,
|
|
27
|
+
deployPermitted: false,
|
|
28
|
+
dispatchPermitted: false,
|
|
29
|
+
effectPermitted: false,
|
|
30
|
+
installPermitted: false,
|
|
31
|
+
launchPermitted: false,
|
|
32
|
+
rollbackPermitted: false,
|
|
33
|
+
serviceMutationPermitted: false,
|
|
34
|
+
startPermitted: false,
|
|
35
|
+
});
|
|
36
|
+
function dataRecord(value, expectedKeys) {
|
|
37
|
+
if (value === null || typeof value !== 'object' || Array.isArray(value))
|
|
38
|
+
return null;
|
|
39
|
+
let prototype;
|
|
40
|
+
let descriptors;
|
|
41
|
+
let keys;
|
|
42
|
+
try {
|
|
43
|
+
prototype = Object.getPrototypeOf(value);
|
|
44
|
+
descriptors = Object.getOwnPropertyDescriptors(value);
|
|
45
|
+
keys = Reflect.ownKeys(value);
|
|
46
|
+
}
|
|
47
|
+
catch {
|
|
48
|
+
return null;
|
|
49
|
+
}
|
|
50
|
+
if (prototype !== Object.prototype && prototype !== null)
|
|
51
|
+
return null;
|
|
52
|
+
if (keys.some((key) => typeof key !== 'string'))
|
|
53
|
+
return null;
|
|
54
|
+
const actual = keys.sort();
|
|
55
|
+
const expected = [...expectedKeys].sort();
|
|
56
|
+
if (actual.length !== expected.length || actual.some((key, index) => key !== expected[index]))
|
|
57
|
+
return null;
|
|
58
|
+
for (const key of actual) {
|
|
59
|
+
const descriptor = descriptors[key];
|
|
60
|
+
if (!descriptor || descriptor.enumerable !== true || !Object.hasOwn(descriptor, 'value'))
|
|
61
|
+
return null;
|
|
62
|
+
}
|
|
63
|
+
return value;
|
|
64
|
+
}
|
|
65
|
+
function sha256(value) {
|
|
66
|
+
return createHash('sha256').update(value).digest('hex');
|
|
67
|
+
}
|
|
68
|
+
function sameDigest(left, right) {
|
|
69
|
+
return SHA256_RE.test(left) && SHA256_RE.test(right)
|
|
70
|
+
&& timingSafeEqual(Buffer.from(left, 'hex'), Buffer.from(right, 'hex'));
|
|
71
|
+
}
|
|
72
|
+
function canonicalTimestamp(value) {
|
|
73
|
+
if (typeof value !== 'string')
|
|
74
|
+
return false;
|
|
75
|
+
const parsed = Date.parse(value);
|
|
76
|
+
return Number.isFinite(parsed) && new Date(parsed).toISOString() === value;
|
|
77
|
+
}
|
|
78
|
+
function canonicalBase64url(value, bytes) {
|
|
79
|
+
if (typeof value !== 'string' || !/^[A-Za-z0-9_-]+$/u.test(value))
|
|
80
|
+
return null;
|
|
81
|
+
try {
|
|
82
|
+
const decoded = Buffer.from(value, 'base64url');
|
|
83
|
+
return decoded.length > 0
|
|
84
|
+
&& (bytes === undefined || decoded.length === bytes)
|
|
85
|
+
&& decoded.toString('base64url') === value
|
|
86
|
+
? decoded
|
|
87
|
+
: null;
|
|
88
|
+
}
|
|
89
|
+
catch {
|
|
90
|
+
return null;
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
function parseBindings(value) {
|
|
94
|
+
const record = dataRecord(value, [
|
|
95
|
+
'activationId',
|
|
96
|
+
'admissionDigest',
|
|
97
|
+
'planDigest',
|
|
98
|
+
'canonicalRequestSha256',
|
|
99
|
+
'trustRootCanonicalSha256',
|
|
100
|
+
'stoppedPermitId',
|
|
101
|
+
'stoppedReceiptDigest',
|
|
102
|
+
'candidateRevision',
|
|
103
|
+
'candidateExpectedTree',
|
|
104
|
+
'candidateVersion',
|
|
105
|
+
'candidateReleaseTag',
|
|
106
|
+
'candidateRuntimeTreeSha256',
|
|
107
|
+
'candidateManifestDigest',
|
|
108
|
+
'candidateLaunchReceiptSha256',
|
|
109
|
+
'candidateServiceDescriptorSha256',
|
|
110
|
+
'candidateServiceInvocationDigest',
|
|
111
|
+
'configSha256',
|
|
112
|
+
'currentTarget',
|
|
113
|
+
'priorServiceLoaded',
|
|
114
|
+
'priorServiceDisabled',
|
|
115
|
+
'hostUid',
|
|
116
|
+
'serviceLabel',
|
|
117
|
+
'serviceTarget',
|
|
118
|
+
'brokerChallenge',
|
|
119
|
+
'acknowledgementDeadlineMs',
|
|
120
|
+
]);
|
|
121
|
+
if (!record)
|
|
122
|
+
return null;
|
|
123
|
+
const digestFields = [
|
|
124
|
+
record['admissionDigest'],
|
|
125
|
+
record['planDigest'],
|
|
126
|
+
record['canonicalRequestSha256'],
|
|
127
|
+
record['trustRootCanonicalSha256'],
|
|
128
|
+
record['stoppedReceiptDigest'],
|
|
129
|
+
record['candidateRuntimeTreeSha256'],
|
|
130
|
+
record['candidateManifestDigest'],
|
|
131
|
+
record['candidateLaunchReceiptSha256'],
|
|
132
|
+
record['candidateServiceDescriptorSha256'],
|
|
133
|
+
record['candidateServiceInvocationDigest'],
|
|
134
|
+
record['configSha256'],
|
|
135
|
+
];
|
|
136
|
+
if (!digestFields.every((entry) => typeof entry === 'string' && SHA256_RE.test(entry)))
|
|
137
|
+
return null;
|
|
138
|
+
if (typeof record['activationId'] !== 'string' || !UUID_RE.test(record['activationId'])
|
|
139
|
+
|| typeof record['stoppedPermitId'] !== 'string' || !UUID_RE.test(record['stoppedPermitId'])
|
|
140
|
+
|| typeof record['candidateRevision'] !== 'string' || !SHA1_RE.test(record['candidateRevision'])
|
|
141
|
+
|| typeof record['candidateExpectedTree'] !== 'string' || !SHA1_RE.test(record['candidateExpectedTree'])
|
|
142
|
+
|| typeof record['candidateVersion'] !== 'string' || !PACKAGE_VERSION_RE.test(record['candidateVersion'])
|
|
143
|
+
|| record['candidateReleaseTag'] !== `v${record['candidateVersion']}`
|
|
144
|
+
|| record['currentTarget'] !== `releases/${record['candidateRevision']}`
|
|
145
|
+
|| record['priorServiceLoaded'] !== false
|
|
146
|
+
|| typeof record['priorServiceDisabled'] !== 'boolean'
|
|
147
|
+
|| !Number.isSafeInteger(record['hostUid']) || Number(record['hostUid']) < 0
|
|
148
|
+
|| record['serviceLabel'] !== 'ai.ashlr.daemon'
|
|
149
|
+
|| record['serviceTarget'] !== `gui/${record['hostUid']}/ai.ashlr.daemon`
|
|
150
|
+
|| canonicalBase64url(record['brokerChallenge'], 32) === null
|
|
151
|
+
|| !Number.isSafeInteger(record['acknowledgementDeadlineMs'])
|
|
152
|
+
|| Number(record['acknowledgementDeadlineMs']) < 1
|
|
153
|
+
|| Number(record['acknowledgementDeadlineMs']) > MAX_ACK_DEADLINE_MS)
|
|
154
|
+
return null;
|
|
155
|
+
return record;
|
|
156
|
+
}
|
|
157
|
+
function parseScope(value) {
|
|
158
|
+
const record = dataRecord(value, [
|
|
159
|
+
'action',
|
|
160
|
+
'platform',
|
|
161
|
+
'nativeBrokerRequired',
|
|
162
|
+
'killSwitch',
|
|
163
|
+
'providerEffectsBlocked',
|
|
164
|
+
'serviceStartRequested',
|
|
165
|
+
'serviceEnable',
|
|
166
|
+
'serviceInstall',
|
|
167
|
+
'pointerMutation',
|
|
168
|
+
'residentAcknowledgement',
|
|
169
|
+
'dispatchAuthorized',
|
|
170
|
+
]);
|
|
171
|
+
if (!record
|
|
172
|
+
|| record['action'] !== 'start-exact-selected-resident-release'
|
|
173
|
+
|| record['platform'] !== 'darwin'
|
|
174
|
+
|| record['nativeBrokerRequired'] !== true
|
|
175
|
+
|| record['killSwitch'] !== 'healthy-engaged'
|
|
176
|
+
|| record['providerEffectsBlocked'] !== true
|
|
177
|
+
|| record['serviceStartRequested'] !== true
|
|
178
|
+
|| record['serviceEnable'] !== false
|
|
179
|
+
|| record['serviceInstall'] !== false
|
|
180
|
+
|| record['pointerMutation'] !== false
|
|
181
|
+
|| record['residentAcknowledgement'] !== 'required-pre-dispatch'
|
|
182
|
+
|| record['dispatchAuthorized'] !== false)
|
|
183
|
+
return null;
|
|
184
|
+
return record;
|
|
185
|
+
}
|
|
186
|
+
export function parseRuntimeActivationResidentStartPermit(value) {
|
|
187
|
+
try {
|
|
188
|
+
const envelope = dataRecord(value, ['payload', 'signature']);
|
|
189
|
+
if (!envelope || canonicalBase64url(envelope['signature'], 64) === null)
|
|
190
|
+
return null;
|
|
191
|
+
if (!parsePermitPayload(envelope['payload']))
|
|
192
|
+
return null;
|
|
193
|
+
return envelope;
|
|
194
|
+
}
|
|
195
|
+
catch {
|
|
196
|
+
return null;
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
function parsePermitPayload(value) {
|
|
200
|
+
const payload = dataRecord(value, [
|
|
201
|
+
'schemaVersion', 'protocol', 'permitId', 'keyId', 'issuedAt', 'expiresAt', 'scope', 'bindings',
|
|
202
|
+
]);
|
|
203
|
+
if (!payload
|
|
204
|
+
|| payload['schemaVersion'] !== 1
|
|
205
|
+
|| payload['protocol'] !== RUNTIME_ACTIVATION_RESIDENT_START_PROTOCOL
|
|
206
|
+
|| typeof payload['permitId'] !== 'string' || !UUID_RE.test(payload['permitId'])
|
|
207
|
+
|| typeof payload['keyId'] !== 'string' || !KEY_ID_RE.test(payload['keyId'])
|
|
208
|
+
|| !canonicalTimestamp(payload['issuedAt'])
|
|
209
|
+
|| !canonicalTimestamp(payload['expiresAt'])
|
|
210
|
+
|| !parseScope(payload['scope'])
|
|
211
|
+
|| !parseBindings(payload['bindings']))
|
|
212
|
+
return null;
|
|
213
|
+
return payload;
|
|
214
|
+
}
|
|
215
|
+
function decodeCanonicalFrame(input, maxBytes) {
|
|
216
|
+
const bytes = Buffer.isBuffer(input) ? input : Buffer.from(input, 'utf8');
|
|
217
|
+
if (bytes.length === 0 || bytes.length > maxBytes || bytes.at(-1) !== 0x0a)
|
|
218
|
+
return null;
|
|
219
|
+
let text;
|
|
220
|
+
try {
|
|
221
|
+
text = new TextDecoder('utf-8', { fatal: true }).decode(bytes);
|
|
222
|
+
}
|
|
223
|
+
catch {
|
|
224
|
+
return null;
|
|
225
|
+
}
|
|
226
|
+
if (Buffer.byteLength(text, 'utf8') !== bytes.length || !text.endsWith('\n'))
|
|
227
|
+
return null;
|
|
228
|
+
let value;
|
|
229
|
+
try {
|
|
230
|
+
value = JSON.parse(text.slice(0, -1));
|
|
231
|
+
}
|
|
232
|
+
catch {
|
|
233
|
+
return null;
|
|
234
|
+
}
|
|
235
|
+
try {
|
|
236
|
+
return `${canonicalizeDaemonActivationValue(value)}\n` === text ? { text, value } : null;
|
|
237
|
+
}
|
|
238
|
+
catch {
|
|
239
|
+
return null;
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
export function parseRuntimeActivationResidentStartPermitFrame(input) {
|
|
243
|
+
const decoded = decodeCanonicalFrame(input, MAX_PERMIT_FRAME_BYTES);
|
|
244
|
+
return decoded ? parseRuntimeActivationResidentStartPermit(decoded.value) : null;
|
|
245
|
+
}
|
|
246
|
+
function permitSigningBytes(payload) {
|
|
247
|
+
return Buffer.from(`${PERMIT_SIGNATURE_DOMAIN}${canonicalizeDaemonActivationValue(payload)}`, 'utf8');
|
|
248
|
+
}
|
|
249
|
+
export function runtimeActivationResidentStartPermitPayloadDigest(payload) {
|
|
250
|
+
return sha256(`${RUNTIME_ACTIVATION_RESIDENT_START_PERMIT_DOMAIN}\n${canonicalizeDaemonActivationValue(payload)}`);
|
|
251
|
+
}
|
|
252
|
+
export function runtimeActivationResidentStartKeyId(publicKey) {
|
|
253
|
+
const spki = publicKey.export({ format: 'der', type: 'spki' });
|
|
254
|
+
return sha256(Buffer.concat([
|
|
255
|
+
Buffer.from(`${RUNTIME_ACTIVATION_RESIDENT_START_PERMIT_DOMAIN}:key\0`, 'utf8'),
|
|
256
|
+
spki,
|
|
257
|
+
]));
|
|
258
|
+
}
|
|
259
|
+
export function signRuntimeActivationResidentStartPermit(payload, privateKey) {
|
|
260
|
+
return {
|
|
261
|
+
payload: structuredClone(payload),
|
|
262
|
+
signature: sign(null, permitSigningBytes(payload), privateKey).toString('base64url'),
|
|
263
|
+
};
|
|
264
|
+
}
|
|
265
|
+
export function verifyRuntimeActivationResidentStartPermit(envelope, roots, nowMs) {
|
|
266
|
+
const parsed = parseRuntimeActivationResidentStartPermit(envelope);
|
|
267
|
+
if (!parsed)
|
|
268
|
+
return 'runtime activation resident-start permit is invalid';
|
|
269
|
+
const issued = Date.parse(parsed.payload.issuedAt);
|
|
270
|
+
const expires = Date.parse(parsed.payload.expiresAt);
|
|
271
|
+
if (!Number.isFinite(nowMs)
|
|
272
|
+
|| expires <= issued
|
|
273
|
+
|| expires - issued > MAX_PERMIT_VALIDITY_MS
|
|
274
|
+
|| nowMs < issued - MAX_FUTURE_SKEW_MS
|
|
275
|
+
|| nowMs >= expires) {
|
|
276
|
+
return 'runtime activation resident-start permit is outside its validity window';
|
|
277
|
+
}
|
|
278
|
+
const parsedRoots = [];
|
|
279
|
+
const seenKeyIds = new Set();
|
|
280
|
+
for (const candidate of roots) {
|
|
281
|
+
const record = dataRecord(candidate, ['algorithm', 'keyId', 'publicKeySpki', 'validFrom', 'validUntil']);
|
|
282
|
+
if (!record
|
|
283
|
+
|| record['algorithm'] !== 'ed25519'
|
|
284
|
+
|| typeof record['keyId'] !== 'string' || !KEY_ID_RE.test(record['keyId'])
|
|
285
|
+
|| canonicalBase64url(record['publicKeySpki']) === null
|
|
286
|
+
|| !canonicalTimestamp(record['validFrom'])
|
|
287
|
+
|| !canonicalTimestamp(record['validUntil'])
|
|
288
|
+
|| seenKeyIds.has(record['keyId'])) {
|
|
289
|
+
return 'runtime activation resident-start signing root is unavailable';
|
|
290
|
+
}
|
|
291
|
+
seenKeyIds.add(record['keyId']);
|
|
292
|
+
parsedRoots.push(record);
|
|
293
|
+
}
|
|
294
|
+
const root = parsedRoots.find((entry) => entry.keyId === parsed.payload.keyId) ?? null;
|
|
295
|
+
if (!root
|
|
296
|
+
|| Date.parse(root.validFrom) > issued
|
|
297
|
+
|| Date.parse(root.validUntil) < expires
|
|
298
|
+
|| nowMs < Date.parse(root.validFrom)
|
|
299
|
+
|| nowMs >= Date.parse(root.validUntil)) {
|
|
300
|
+
return 'runtime activation resident-start signing root is unavailable';
|
|
301
|
+
}
|
|
302
|
+
const spki = canonicalBase64url(root.publicKeySpki);
|
|
303
|
+
const signature = canonicalBase64url(parsed.signature, 64);
|
|
304
|
+
if (!spki || !signature)
|
|
305
|
+
return 'runtime activation resident-start permit signature is invalid';
|
|
306
|
+
try {
|
|
307
|
+
const key = createPublicKey({ key: spki, format: 'der', type: 'spki' });
|
|
308
|
+
if (key.asymmetricKeyType !== 'ed25519'
|
|
309
|
+
|| runtimeActivationResidentStartKeyId(key) !== root.keyId
|
|
310
|
+
|| !verify(null, permitSigningBytes(parsed.payload), key, signature)) {
|
|
311
|
+
return 'runtime activation resident-start permit signature is invalid';
|
|
312
|
+
}
|
|
313
|
+
}
|
|
314
|
+
catch {
|
|
315
|
+
return 'runtime activation resident-start permit signature is invalid';
|
|
316
|
+
}
|
|
317
|
+
return null;
|
|
318
|
+
}
|
|
319
|
+
function parseAuthority(value) {
|
|
320
|
+
const record = dataRecord(value, Object.keys(RUNTIME_ACTIVATION_RESIDENT_START_AUTHORITY));
|
|
321
|
+
if (!record || Object.values(record).some((entry) => entry !== false))
|
|
322
|
+
return null;
|
|
323
|
+
return record;
|
|
324
|
+
}
|
|
325
|
+
function parseNativeObservation(value) {
|
|
326
|
+
const record = dataRecord(value, [
|
|
327
|
+
'pid',
|
|
328
|
+
'processStartIdentitySha256',
|
|
329
|
+
'auditTokenSha256',
|
|
330
|
+
'executableVnodeSha256',
|
|
331
|
+
'codeIdentitySha256',
|
|
332
|
+
'launchdJobGenerationSha256',
|
|
333
|
+
]);
|
|
334
|
+
if (!record
|
|
335
|
+
|| !Number.isSafeInteger(record['pid']) || Number(record['pid']) <= 0
|
|
336
|
+
|| [
|
|
337
|
+
record['processStartIdentitySha256'],
|
|
338
|
+
record['auditTokenSha256'],
|
|
339
|
+
record['executableVnodeSha256'],
|
|
340
|
+
record['codeIdentitySha256'],
|
|
341
|
+
record['launchdJobGenerationSha256'],
|
|
342
|
+
].some((entry) => typeof entry !== 'string' || !SHA256_RE.test(entry)))
|
|
343
|
+
return null;
|
|
344
|
+
return record;
|
|
345
|
+
}
|
|
346
|
+
export function parseRuntimeActivationResidentStartAcknowledgement(value) {
|
|
347
|
+
try {
|
|
348
|
+
const ack = dataRecord(value, [
|
|
349
|
+
'schemaVersion',
|
|
350
|
+
'protocol',
|
|
351
|
+
'acknowledgement',
|
|
352
|
+
'permitId',
|
|
353
|
+
'permitPayloadDigest',
|
|
354
|
+
'activationId',
|
|
355
|
+
'brokerChallenge',
|
|
356
|
+
'acknowledgedAt',
|
|
357
|
+
'bindings',
|
|
358
|
+
'nativeObservation',
|
|
359
|
+
'channel',
|
|
360
|
+
'state',
|
|
361
|
+
'authority',
|
|
362
|
+
]);
|
|
363
|
+
if (!ack
|
|
364
|
+
|| ack['schemaVersion'] !== 1
|
|
365
|
+
|| ack['protocol'] !== RUNTIME_ACTIVATION_RESIDENT_START_PROTOCOL
|
|
366
|
+
|| ack['acknowledgement'] !== 'resident-start-pre-dispatch'
|
|
367
|
+
|| typeof ack['permitId'] !== 'string' || !UUID_RE.test(ack['permitId'])
|
|
368
|
+
|| typeof ack['permitPayloadDigest'] !== 'string' || !SHA256_RE.test(ack['permitPayloadDigest'])
|
|
369
|
+
|| typeof ack['activationId'] !== 'string' || !UUID_RE.test(ack['activationId'])
|
|
370
|
+
|| canonicalBase64url(ack['brokerChallenge'], 32) === null
|
|
371
|
+
|| !canonicalTimestamp(ack['acknowledgedAt'])
|
|
372
|
+
|| !parseBindings(ack['bindings'])
|
|
373
|
+
|| !parseNativeObservation(ack['nativeObservation'])
|
|
374
|
+
|| !parseAuthority(ack['authority']))
|
|
375
|
+
return null;
|
|
376
|
+
const channel = dataRecord(ack['channel'], [
|
|
377
|
+
'transport', 'peerCredentialsVerified', 'challengeVerified', 'framing',
|
|
378
|
+
]);
|
|
379
|
+
if (!channel
|
|
380
|
+
|| channel['transport'] !== 'broker-owned-inherited-fd'
|
|
381
|
+
|| channel['peerCredentialsVerified'] !== true
|
|
382
|
+
|| channel['challengeVerified'] !== true
|
|
383
|
+
|| channel['framing'] !== 'canonical-json-single-lf-eof')
|
|
384
|
+
return null;
|
|
385
|
+
const state = dataRecord(ack['state'], [
|
|
386
|
+
'killSwitch', 'phase', 'dispatchAuthorized', 'providerEffectsBlocked',
|
|
387
|
+
]);
|
|
388
|
+
if (!state
|
|
389
|
+
|| state['killSwitch'] !== 'healthy-engaged'
|
|
390
|
+
|| state['phase'] !== 'pre-dispatch'
|
|
391
|
+
|| state['dispatchAuthorized'] !== false
|
|
392
|
+
|| state['providerEffectsBlocked'] !== true)
|
|
393
|
+
return null;
|
|
394
|
+
return ack;
|
|
395
|
+
}
|
|
396
|
+
catch {
|
|
397
|
+
return null;
|
|
398
|
+
}
|
|
399
|
+
}
|
|
400
|
+
export function parseRuntimeActivationResidentStartAcknowledgementFrame(input) {
|
|
401
|
+
const decoded = decodeCanonicalFrame(input, MAX_ACK_FRAME_BYTES);
|
|
402
|
+
return decoded ? parseRuntimeActivationResidentStartAcknowledgement(decoded.value) : null;
|
|
403
|
+
}
|
|
404
|
+
export function runtimeActivationResidentStartPermitFrame(envelope) {
|
|
405
|
+
return `${canonicalizeDaemonActivationValue(envelope)}\n`;
|
|
406
|
+
}
|
|
407
|
+
export function runtimeActivationResidentStartAcknowledgementFrame(acknowledgement) {
|
|
408
|
+
return `${canonicalizeDaemonActivationValue(acknowledgement)}\n`;
|
|
409
|
+
}
|
|
410
|
+
function canonicalEqual(left, right) {
|
|
411
|
+
try {
|
|
412
|
+
const leftDigest = sha256(canonicalizeDaemonActivationValue(left));
|
|
413
|
+
const rightDigest = sha256(canonicalizeDaemonActivationValue(right));
|
|
414
|
+
return sameDigest(leftDigest, rightDigest);
|
|
415
|
+
}
|
|
416
|
+
catch {
|
|
417
|
+
return false;
|
|
418
|
+
}
|
|
419
|
+
}
|
|
420
|
+
/**
|
|
421
|
+
* Validate that a broker-authenticated frame is exactly release-bound.
|
|
422
|
+
*
|
|
423
|
+
* Even a successful result is evidence only. This function cannot establish
|
|
424
|
+
* that the caller supplied evidence from a native broker-owned channel.
|
|
425
|
+
*/
|
|
426
|
+
export function evaluateRuntimeActivationResidentStartAcknowledgement(acknowledgement, permit, expectedNativeObservation) {
|
|
427
|
+
const ack = parseRuntimeActivationResidentStartAcknowledgement(acknowledgement);
|
|
428
|
+
const parsedPermit = parsePermitPayload(permit);
|
|
429
|
+
const failure = (reason) => ({
|
|
430
|
+
ok: false,
|
|
431
|
+
reason,
|
|
432
|
+
authority: RUNTIME_ACTIVATION_RESIDENT_START_AUTHORITY,
|
|
433
|
+
acknowledgementDigest: null,
|
|
434
|
+
});
|
|
435
|
+
if (!ack || !parsedPermit)
|
|
436
|
+
return failure('runtime activation resident-start acknowledgement or permit is invalid');
|
|
437
|
+
if (ack.permitId !== permit.permitId
|
|
438
|
+
|| !sameDigest(ack.permitPayloadDigest, runtimeActivationResidentStartPermitPayloadDigest(permit))
|
|
439
|
+
|| ack.activationId !== permit.bindings.activationId
|
|
440
|
+
|| ack.brokerChallenge !== permit.bindings.brokerChallenge
|
|
441
|
+
|| !canonicalEqual(ack.bindings, permit.bindings)) {
|
|
442
|
+
return failure('runtime activation resident-start acknowledgement binding mismatch');
|
|
443
|
+
}
|
|
444
|
+
const acknowledged = Date.parse(ack.acknowledgedAt);
|
|
445
|
+
const issued = Date.parse(permit.issuedAt);
|
|
446
|
+
const expires = Date.parse(permit.expiresAt);
|
|
447
|
+
if (acknowledged < issued
|
|
448
|
+
|| acknowledged >= expires
|
|
449
|
+
|| acknowledged - issued > permit.bindings.acknowledgementDeadlineMs) {
|
|
450
|
+
return failure('runtime activation resident-start acknowledgement missed its bound deadline');
|
|
451
|
+
}
|
|
452
|
+
if (!canonicalEqual(ack.nativeObservation, expectedNativeObservation)) {
|
|
453
|
+
return failure('runtime activation resident-start native observation mismatch');
|
|
454
|
+
}
|
|
455
|
+
return {
|
|
456
|
+
ok: true,
|
|
457
|
+
reason: 'canonical exact-release pre-dispatch acknowledgement matched; native authority remains external',
|
|
458
|
+
authority: RUNTIME_ACTIVATION_RESIDENT_START_AUTHORITY,
|
|
459
|
+
acknowledgementDigest: sha256(`${RUNTIME_ACTIVATION_RESIDENT_START_ACK_DOMAIN}\n${canonicalizeDaemonActivationValue(ack)}`),
|
|
460
|
+
};
|
|
461
|
+
}
|
|
462
|
+
//# sourceMappingURL=runtime-activation-resident-start-protocol.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runtime-activation-resident-start-protocol.js","sourceRoot":"","sources":["../../../src/core/daemon/runtime-activation-resident-start-protocol.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EACL,UAAU,EACV,eAAe,EACf,IAAI,EACJ,eAAe,EACf,MAAM,GAEP,MAAM,aAAa,CAAC;AAErB,OAAO,EAAE,iCAAiC,EAAE,MAAM,wBAAwB,CAAC;AAE3E,MAAM,CAAC,MAAM,0CAA0C,GACrD,sCAA+C,CAAC;AAClD,MAAM,CAAC,MAAM,+CAA+C,GAC1D,mDAA4D,CAAC;AAC/D,MAAM,CAAC,MAAM,4CAA4C,GACvD,gDAAyD,CAAC;AAE5D,MAAM,uBAAuB,GAAG,GAAG,+CAA+C,IAAI,CAAC;AACvF,MAAM,sBAAsB,GAAG,EAAE,GAAG,IAAI,CAAC;AACzC,MAAM,mBAAmB,GAAG,EAAE,GAAG,IAAI,CAAC;AACtC,MAAM,sBAAsB,GAAG,OAAO,CAAC;AACvC,MAAM,kBAAkB,GAAG,MAAM,CAAC;AAClC,MAAM,mBAAmB,GAAG,MAAM,CAAC;AACnC,MAAM,SAAS,GAAG,iBAAiB,CAAC;AACpC,MAAM,OAAO,GAAG,iBAAiB,CAAC;AAClC,MAAM,OAAO,GAAG,yEAAyE,CAAC;AAC1F,MAAM,SAAS,GAAG,oCAAoC,CAAC;AACvD,MAAM,kBAAkB,GAAG,2DAA2D,CAAC;AAEvF,MAAM,CAAC,MAAM,2CAA2C,GAAG,MAAM,CAAC,MAAM,CAAC;IACvE,mBAAmB,EAAE,KAAK;IAC1B,eAAe,EAAE,KAAK;IACtB,iBAAiB,EAAE,KAAK;IACxB,eAAe,EAAE,KAAK;IACtB,gBAAgB,EAAE,KAAK;IACvB,eAAe,EAAE,KAAK;IACtB,iBAAiB,EAAE,KAAK;IACxB,wBAAwB,EAAE,KAAK;IAC/B,cAAc,EAAE,KAAK;CACb,CAAC,CAAC;AAgHZ,SAAS,UAAU,CACjB,KAAc,EACd,YAA+B;IAE/B,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IACrF,IAAI,SAAwB,CAAC;IAC7B,IAAI,WAA+C,CAAC;IACpD,IAAI,IAAmB,CAAC;IACxB,IAAI,CAAC;QACH,SAAS,GAAG,MAAM,CAAC,cAAc,CAAC,KAAK,CAAkB,CAAC;QAC1D,WAAW,GAAG,MAAM,CAAC,yBAAyB,CAAC,KAAK,CAAC,CAAC;QACtD,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAChC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,SAAS,KAAK,MAAM,CAAC,SAAS,IAAI,SAAS,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IACtE,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,OAAO,GAAG,KAAK,QAAQ,CAAC;QAAE,OAAO,IAAI,CAAC;IAC7D,MAAM,MAAM,GAAI,IAAiB,CAAC,IAAI,EAAE,CAAC;IACzC,MAAM,QAAQ,GAAG,CAAC,GAAG,YAAY,CAAC,CAAC,IAAI,EAAE,CAAC;IAC1C,IAAI,MAAM,CAAC,MAAM,KAAK,QAAQ,CAAC,MAAM,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC,GAAG,KAAK,QAAQ,CAAC,KAAK,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IAC3G,KAAK,MAAM,GAAG,IAAI,MAAM,EAAE,CAAC;QACzB,MAAM,UAAU,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;QACpC,IAAI,CAAC,UAAU,IAAI,UAAU,CAAC,UAAU,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,OAAO,CAAC;YAAE,OAAO,IAAI,CAAC;IACxG,CAAC;IACD,OAAO,KAAgC,CAAC;AAC1C,CAAC;AAED,SAAS,MAAM,CAAC,KAAsB;IACpC,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC1D,CAAC;AAED,SAAS,UAAU,CAAC,IAAY,EAAE,KAAa;IAC7C,OAAO,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC;WAC/C,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;AAC5E,CAAC;AAED,SAAS,kBAAkB,CAAC,KAAc;IACxC,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC5C,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACjC,OAAO,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,KAAK,KAAK,CAAC;AAC7E,CAAC;AAED,SAAS,kBAAkB,CAAC,KAAc,EAAE,KAAc;IACxD,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAC/E,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;QAChD,OAAO,OAAO,CAAC,MAAM,GAAG,CAAC;eACpB,CAAC,KAAK,KAAK,SAAS,IAAI,OAAO,CAAC,MAAM,KAAK,KAAK,CAAC;eACjD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,KAAK,KAAK;YAC1C,CAAC,CAAC,OAAO;YACT,CAAC,CAAC,IAAI,CAAC;IACX,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,SAAS,aAAa,CAAC,KAAc;IACnC,MAAM,MAAM,GAAG,UAAU,CAAC,KAAK,EAAE;QAC/B,cAAc;QACd,iBAAiB;QACjB,YAAY;QACZ,wBAAwB;QACxB,0BAA0B;QAC1B,iBAAiB;QACjB,sBAAsB;QACtB,mBAAmB;QACnB,uBAAuB;QACvB,kBAAkB;QAClB,qBAAqB;QACrB,4BAA4B;QAC5B,yBAAyB;QACzB,8BAA8B;QAC9B,kCAAkC;QAClC,kCAAkC;QAClC,cAAc;QACd,eAAe;QACf,oBAAoB;QACpB,sBAAsB;QACtB,SAAS;QACT,cAAc;QACd,eAAe;QACf,iBAAiB;QACjB,2BAA2B;KAC5B,CAAC,CAAC;IACH,IAAI,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC;IACzB,MAAM,YAAY,GAAG;QACnB,MAAM,CAAC,iBAAiB,CAAC;QACzB,MAAM,CAAC,YAAY,CAAC;QACpB,MAAM,CAAC,wBAAwB,CAAC;QAChC,MAAM,CAAC,0BAA0B,CAAC;QAClC,MAAM,CAAC,sBAAsB,CAAC;QAC9B,MAAM,CAAC,4BAA4B,CAAC;QACpC,MAAM,CAAC,yBAAyB,CAAC;QACjC,MAAM,CAAC,8BAA8B,CAAC;QACtC,MAAM,CAAC,kCAAkC,CAAC;QAC1C,MAAM,CAAC,kCAAkC,CAAC;QAC1C,MAAM,CAAC,cAAc,CAAC;KACvB,CAAC;IACF,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,KAAK,KAAK,QAAQ,IAAI,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IACpG,IAAI,OAAO,MAAM,CAAC,cAAc,CAAC,KAAK,QAAQ,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;WAClF,OAAO,MAAM,CAAC,iBAAiB,CAAC,KAAK,QAAQ,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC;WACzF,OAAO,MAAM,CAAC,mBAAmB,CAAC,KAAK,QAAQ,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC;WAC7F,OAAO,MAAM,CAAC,uBAAuB,CAAC,KAAK,QAAQ,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,uBAAuB,CAAC,CAAC;WACrG,OAAO,MAAM,CAAC,kBAAkB,CAAC,KAAK,QAAQ,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC;WACtG,MAAM,CAAC,qBAAqB,CAAC,KAAK,IAAI,MAAM,CAAC,kBAAkB,CAAC,EAAE;WAClE,MAAM,CAAC,eAAe,CAAC,KAAK,YAAY,MAAM,CAAC,mBAAmB,CAAC,EAAE;WACrE,MAAM,CAAC,oBAAoB,CAAC,KAAK,KAAK;WACtC,OAAO,MAAM,CAAC,sBAAsB,CAAC,KAAK,SAAS;WACnD,CAAC,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC;WACzE,MAAM,CAAC,cAAc,CAAC,KAAK,iBAAiB;WAC5C,MAAM,CAAC,eAAe,CAAC,KAAK,OAAO,MAAM,CAAC,SAAS,CAAC,kBAAkB;WACtE,kBAAkB,CAAC,MAAM,CAAC,iBAAiB,CAAC,EAAE,EAAE,CAAC,KAAK,IAAI;WAC1D,CAAC,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,2BAA2B,CAAC,CAAC;WAC1D,MAAM,CAAC,MAAM,CAAC,2BAA2B,CAAC,CAAC,GAAG,CAAC;WAC/C,MAAM,CAAC,MAAM,CAAC,2BAA2B,CAAC,CAAC,GAAG,mBAAmB;QAAE,OAAO,IAAI,CAAC;IACpF,OAAO,MAA6D,CAAC;AACvE,CAAC;AAED,SAAS,UAAU,CAAC,KAAc;IAChC,MAAM,MAAM,GAAG,UAAU,CAAC,KAAK,EAAE;QAC/B,QAAQ;QACR,UAAU;QACV,sBAAsB;QACtB,YAAY;QACZ,wBAAwB;QACxB,uBAAuB;QACvB,eAAe;QACf,gBAAgB;QAChB,iBAAiB;QACjB,yBAAyB;QACzB,oBAAoB;KACrB,CAAC,CAAC;IACH,IAAI,CAAC,MAAM;WACN,MAAM,CAAC,QAAQ,CAAC,KAAK,uCAAuC;WAC5D,MAAM,CAAC,UAAU,CAAC,KAAK,QAAQ;WAC/B,MAAM,CAAC,sBAAsB,CAAC,KAAK,IAAI;WACvC,MAAM,CAAC,YAAY,CAAC,KAAK,iBAAiB;WAC1C,MAAM,CAAC,wBAAwB,CAAC,KAAK,IAAI;WACzC,MAAM,CAAC,uBAAuB,CAAC,KAAK,IAAI;WACxC,MAAM,CAAC,eAAe,CAAC,KAAK,KAAK;WACjC,MAAM,CAAC,gBAAgB,CAAC,KAAK,KAAK;WAClC,MAAM,CAAC,iBAAiB,CAAC,KAAK,KAAK;WACnC,MAAM,CAAC,yBAAyB,CAAC,KAAK,uBAAuB;WAC7D,MAAM,CAAC,oBAAoB,CAAC,KAAK,KAAK;QAAE,OAAO,IAAI,CAAC;IACzD,OAAO,MAA2E,CAAC;AACrF,CAAC;AAED,MAAM,UAAU,yCAAyC,CACvD,KAAc;IAEd,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,UAAU,CAAC,KAAK,EAAE,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC,CAAC;QAC7D,IAAI,CAAC,QAAQ,IAAI,kBAAkB,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,EAAE,CAAC,KAAK,IAAI;YAAE,OAAO,IAAI,CAAC;QACrF,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;YAAE,OAAO,IAAI,CAAC;QAC1D,OAAO,QAAqE,CAAC;IAC/E,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,SAAS,kBAAkB,CAAC,KAAc;IACxC,MAAM,OAAO,GAAG,UAAU,CAAC,KAAK,EAAE;QAChC,eAAe,EAAE,UAAU,EAAE,UAAU,EAAE,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,OAAO,EAAE,UAAU;KAC/F,CAAC,CAAC;IACH,IAAI,CAAC,OAAO;WACP,OAAO,CAAC,eAAe,CAAC,KAAK,CAAC;WAC9B,OAAO,CAAC,UAAU,CAAC,KAAK,0CAA0C;WAClE,OAAO,OAAO,CAAC,UAAU,CAAC,KAAK,QAAQ,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;WAC7E,OAAO,OAAO,CAAC,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;WACzE,CAAC,kBAAkB,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;WACxC,CAAC,kBAAkB,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;WACzC,CAAC,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;WAC7B,CAAC,aAAa,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IACtD,OAAO,OAAmE,CAAC;AAC7E,CAAC;AAED,SAAS,oBAAoB,CAC3B,KAAsB,EACtB,QAAgB;IAEhB,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IAC1E,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,GAAG,QAAQ,IAAI,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IACxF,IAAI,IAAY,CAAC;IACjB,IAAI,CAAC;QACH,IAAI,GAAG,IAAI,WAAW,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACjE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,MAAM,CAAC,KAAK,KAAK,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IAC1F,IAAI,KAAc,CAAC;IACnB,IAAI,CAAC;QACH,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IACxC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,CAAC;QACH,OAAO,GAAG,iCAAiC,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;IAC3F,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,MAAM,UAAU,8CAA8C,CAC5D,KAAsB;IAEtB,MAAM,OAAO,GAAG,oBAAoB,CAAC,KAAK,EAAE,sBAAsB,CAAC,CAAC;IACpE,OAAO,OAAO,CAAC,CAAC,CAAC,yCAAyC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AACnF,CAAC;AAED,SAAS,kBAAkB,CAAC,OAAsD;IAChF,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,uBAAuB,GAAG,iCAAiC,CAAC,OAAO,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;AACxG,CAAC;AAED,MAAM,UAAU,iDAAiD,CAC/D,OAAsD;IAEtD,OAAO,MAAM,CACX,GAAG,+CAA+C,KAAK,iCAAiC,CAAC,OAAO,CAAC,EAAE,CACpG,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,mCAAmC,CAAC,SAAoB;IACtE,MAAM,IAAI,GAAG,SAAS,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;IAC/D,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC;QAC1B,MAAM,CAAC,IAAI,CAAC,GAAG,+CAA+C,QAAQ,EAAE,MAAM,CAAC;QAC/E,IAAI;KACL,CAAC,CAAC,CAAC;AACN,CAAC;AAED,MAAM,UAAU,wCAAwC,CACtD,OAAsD,EACtD,UAAqB;IAErB,OAAO;QACL,OAAO,EAAE,eAAe,CAAC,OAAO,CAAC;QACjC,SAAS,EAAE,IAAI,CAAC,IAAI,EAAE,kBAAkB,CAAC,OAAO,CAAC,EAAE,UAAU,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC;KACrF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,0CAA0C,CACxD,QAAwD,EACxD,KAA2D,EAC3D,KAAa;IAEb,MAAM,MAAM,GAAG,yCAAyC,CAAC,QAAQ,CAAC,CAAC;IACnE,IAAI,CAAC,MAAM;QAAE,OAAO,qDAAqD,CAAC;IAC1E,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACnD,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IACrD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC;WACtB,OAAO,IAAI,MAAM;WACjB,OAAO,GAAG,MAAM,GAAG,sBAAsB;WACzC,KAAK,GAAG,MAAM,GAAG,kBAAkB;WACnC,KAAK,IAAI,OAAO,EAAE,CAAC;QACtB,OAAO,yEAAyE,CAAC;IACnF,CAAC;IACD,MAAM,WAAW,GAAgD,EAAE,CAAC;IACpE,MAAM,UAAU,GAAG,IAAI,GAAG,EAAU,CAAC;IACrC,KAAK,MAAM,SAAS,IAAI,KAAK,EAAE,CAAC;QAC9B,MAAM,MAAM,GAAG,UAAU,CAAC,SAAS,EAAE,CAAC,WAAW,EAAE,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,YAAY,CAAC,CAAC,CAAC;QACzG,IAAI,CAAC,MAAM;eACN,MAAM,CAAC,WAAW,CAAC,KAAK,SAAS;eACjC,OAAO,MAAM,CAAC,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;eACvE,kBAAkB,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,KAAK,IAAI;eACpD,CAAC,kBAAkB,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;eACxC,CAAC,kBAAkB,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;eACzC,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC;YACrC,OAAO,+DAA+D,CAAC;QACzE,CAAC;QACD,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;QAChC,WAAW,CAAC,IAAI,CAAC,MAA8D,CAAC,CAAC;IACnF,CAAC;IACD,MAAM,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,KAAK,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC;IACvF,IAAI,CAAC,IAAI;WACJ,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,MAAM;WACnC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,OAAO;WACrC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC;WAClC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;QAC1C,OAAO,+DAA+D,CAAC;IACzE,CAAC;IACD,MAAM,IAAI,GAAG,kBAAkB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IACpD,MAAM,SAAS,GAAG,kBAAkB,CAAC,MAAM,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;IAC3D,IAAI,CAAC,IAAI,IAAI,CAAC,SAAS;QAAE,OAAO,+DAA+D,CAAC;IAChG,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,eAAe,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;QACxE,IAAI,GAAG,CAAC,iBAAiB,KAAK,SAAS;eAClC,mCAAmC,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,KAAK;eACvD,CAAC,MAAM,CAAC,IAAI,EAAE,kBAAkB,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,SAAS,CAAC,EAAE,CAAC;YACvE,OAAO,+DAA+D,CAAC;QACzE,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,+DAA+D,CAAC;IACzE,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,cAAc,CAAC,KAAc;IACpC,MAAM,MAAM,GAAG,UAAU,CAAC,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,2CAA2C,CAAC,CAAC,CAAC;IAC3F,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IACnF,OAAO,MAAuE,CAAC;AACjF,CAAC;AAED,SAAS,sBAAsB,CAAC,KAAc;IAC5C,MAAM,MAAM,GAAG,UAAU,CAAC,KAAK,EAAE;QAC/B,KAAK;QACL,4BAA4B;QAC5B,kBAAkB;QAClB,uBAAuB;QACvB,oBAAoB;QACpB,4BAA4B;KAC7B,CAAC,CAAC;IACH,IAAI,CAAC,MAAM;WACN,CAAC,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC;WAClE;YACD,MAAM,CAAC,4BAA4B,CAAC;YACpC,MAAM,CAAC,kBAAkB,CAAC;YAC1B,MAAM,CAAC,uBAAuB,CAAC;YAC/B,MAAM,CAAC,oBAAoB,CAAC;YAC5B,MAAM,CAAC,4BAA4B,CAAC;SACrC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IACtF,OAAO,MAAiE,CAAC;AAC3E,CAAC;AAED,MAAM,UAAU,kDAAkD,CAChE,KAAc;IAEd,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,UAAU,CAAC,KAAK,EAAE;YAC5B,eAAe;YACf,UAAU;YACV,iBAAiB;YACjB,UAAU;YACV,qBAAqB;YACrB,cAAc;YACd,iBAAiB;YACjB,gBAAgB;YAChB,UAAU;YACV,mBAAmB;YACnB,SAAS;YACT,OAAO;YACP,WAAW;SACZ,CAAC,CAAC;QACH,IAAI,CAAC,GAAG;eACH,GAAG,CAAC,eAAe,CAAC,KAAK,CAAC;eAC1B,GAAG,CAAC,UAAU,CAAC,KAAK,0CAA0C;eAC9D,GAAG,CAAC,iBAAiB,CAAC,KAAK,6BAA6B;eACxD,OAAO,GAAG,CAAC,UAAU,CAAC,KAAK,QAAQ,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;eACrE,OAAO,GAAG,CAAC,qBAAqB,CAAC,KAAK,QAAQ,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;eAC7F,OAAO,GAAG,CAAC,cAAc,CAAC,KAAK,QAAQ,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;eAC7E,kBAAkB,CAAC,GAAG,CAAC,iBAAiB,CAAC,EAAE,EAAE,CAAC,KAAK,IAAI;eACvD,CAAC,kBAAkB,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;eAC1C,CAAC,aAAa,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;eAC/B,CAAC,sBAAsB,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;eACjD,CAAC,cAAc,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;YAAE,OAAO,IAAI,CAAC;QACpD,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE;YACzC,WAAW,EAAE,yBAAyB,EAAE,mBAAmB,EAAE,SAAS;SACvE,CAAC,CAAC;QACH,IAAI,CAAC,OAAO;eACP,OAAO,CAAC,WAAW,CAAC,KAAK,2BAA2B;eACpD,OAAO,CAAC,yBAAyB,CAAC,KAAK,IAAI;eAC3C,OAAO,CAAC,mBAAmB,CAAC,KAAK,IAAI;eACrC,OAAO,CAAC,SAAS,CAAC,KAAK,8BAA8B;YAAE,OAAO,IAAI,CAAC;QACxE,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE;YACrC,YAAY,EAAE,OAAO,EAAE,oBAAoB,EAAE,wBAAwB;SACtE,CAAC,CAAC;QACH,IAAI,CAAC,KAAK;eACL,KAAK,CAAC,YAAY,CAAC,KAAK,iBAAiB;eACzC,KAAK,CAAC,OAAO,CAAC,KAAK,cAAc;eACjC,KAAK,CAAC,oBAAoB,CAAC,KAAK,KAAK;eACrC,KAAK,CAAC,wBAAwB,CAAC,KAAK,IAAI;YAAE,OAAO,IAAI,CAAC;QAC3D,OAAO,GAAiE,CAAC;IAC3E,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,MAAM,UAAU,uDAAuD,CACrE,KAAsB;IAEtB,MAAM,OAAO,GAAG,oBAAoB,CAAC,KAAK,EAAE,mBAAmB,CAAC,CAAC;IACjE,OAAO,OAAO,CAAC,CAAC,CAAC,kDAAkD,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AAC5F,CAAC;AAED,MAAM,UAAU,yCAAyC,CACvD,QAAwD;IAExD,OAAO,GAAG,iCAAiC,CAAC,QAAQ,CAAC,IAAI,CAAC;AAC5D,CAAC;AAED,MAAM,UAAU,kDAAkD,CAChE,eAAgE;IAEhE,OAAO,GAAG,iCAAiC,CAAC,eAAe,CAAC,IAAI,CAAC;AACnE,CAAC;AAED,SAAS,cAAc,CAAC,IAAa,EAAE,KAAc;IACnD,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,MAAM,CAAC,iCAAiC,CAAC,IAAI,CAAC,CAAC,CAAC;QACnE,MAAM,WAAW,GAAG,MAAM,CAAC,iCAAiC,CAAC,KAAK,CAAC,CAAC,CAAC;QACrE,OAAO,UAAU,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;IAC7C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,qDAAqD,CACnE,eAAgE,EAChE,MAAqD,EACrD,yBAAuE;IAEvE,MAAM,GAAG,GAAG,kDAAkD,CAAC,eAAe,CAAC,CAAC;IAChF,MAAM,YAAY,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC;IAChD,MAAM,OAAO,GAAG,CAAC,MAAc,EAAkD,EAAE,CAAC,CAAC;QACnF,EAAE,EAAE,KAAK;QACT,MAAM;QACN,SAAS,EAAE,2CAA2C;QACtD,qBAAqB,EAAE,IAAI;KAC5B,CAAC,CAAC;IACH,IAAI,CAAC,GAAG,IAAI,CAAC,YAAY;QAAE,OAAO,OAAO,CAAC,wEAAwE,CAAC,CAAC;IACpH,IAAI,GAAG,CAAC,QAAQ,KAAK,MAAM,CAAC,QAAQ;WAC/B,CAAC,UAAU,CAAC,GAAG,CAAC,mBAAmB,EAAE,iDAAiD,CAAC,MAAM,CAAC,CAAC;WAC/F,GAAG,CAAC,YAAY,KAAK,MAAM,CAAC,QAAQ,CAAC,YAAY;WACjD,GAAG,CAAC,eAAe,KAAK,MAAM,CAAC,QAAQ,CAAC,eAAe;WACvD,CAAC,cAAc,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;QACpD,OAAO,OAAO,CAAC,oEAAoE,CAAC,CAAC;IACvF,CAAC;IACD,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IACpD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAC3C,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IAC7C,IAAI,YAAY,GAAG,MAAM;WACpB,YAAY,IAAI,OAAO;WACvB,YAAY,GAAG,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,yBAAyB,EAAE,CAAC;QACvE,OAAO,OAAO,CAAC,6EAA6E,CAAC,CAAC;IAChG,CAAC;IACD,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,iBAAiB,EAAE,yBAAyB,CAAC,EAAE,CAAC;QACtE,OAAO,OAAO,CAAC,+DAA+D,CAAC,CAAC;IAClF,CAAC;IACD,OAAO;QACL,EAAE,EAAE,IAAI;QACR,MAAM,EAAE,iGAAiG;QACzG,SAAS,EAAE,2CAA2C;QACtD,qBAAqB,EAAE,MAAM,CAC3B,GAAG,4CAA4C,KAAK,iCAAiC,CAAC,GAAG,CAAC,EAAE,CAC7F;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Frozen production adapter for M521.
|
|
3
|
+
*
|
|
4
|
+
* The privileged broker does not exist in this release. Runtime input cannot
|
|
5
|
+
* register roots, replace this adapter, or turn canonical acknowledgement
|
|
6
|
+
* evidence into start authority.
|
|
7
|
+
*/
|
|
8
|
+
import { RUNTIME_ACTIVATION_RESIDENT_START_AUTHORITY, type RuntimeActivationResidentStartTrustRootV1 } from './runtime-activation-resident-start-protocol.js';
|
|
9
|
+
export declare const RUNTIME_ACTIVATION_RESIDENT_START_TRUST_ROOTS: readonly Readonly<RuntimeActivationResidentStartTrustRootV1>[];
|
|
10
|
+
export declare const NATIVE_HOSTILE_PROCESS_CAS_UNAVAILABLE: "native-hostile-process-cas-unavailable";
|
|
11
|
+
export interface RuntimeActivationResidentStartUnavailableResultV1 {
|
|
12
|
+
ok: false;
|
|
13
|
+
reason: typeof NATIVE_HOSTILE_PROCESS_CAS_UNAVAILABLE;
|
|
14
|
+
authority: typeof RUNTIME_ACTIVATION_RESIDENT_START_AUTHORITY;
|
|
15
|
+
trustRootCount: 0;
|
|
16
|
+
acknowledgementAccepted: false;
|
|
17
|
+
serviceStarted: false;
|
|
18
|
+
serviceEnabledChanged: false;
|
|
19
|
+
pointerChanged: false;
|
|
20
|
+
providerEffectsUnblocked: false;
|
|
21
|
+
}
|
|
22
|
+
declare function unavailable(): RuntimeActivationResidentStartUnavailableResultV1;
|
|
23
|
+
export declare const runtimeActivationResidentStartRuntime: Readonly<{
|
|
24
|
+
roots: readonly Readonly<RuntimeActivationResidentStartTrustRootV1>[];
|
|
25
|
+
requestNativeResidentStart: typeof unavailable;
|
|
26
|
+
}>;
|
|
27
|
+
export {};
|