@ashlr/hub 3.2.7 → 3.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (149) hide show
  1. package/CHANGELOG.md +268 -0
  2. package/README.md +4 -1
  3. package/dist/build-identity.json +2 -2
  4. package/dist/cli/activation.d.ts +41 -0
  5. package/dist/cli/activation.js +485 -0
  6. package/dist/cli/activation.js.map +1 -0
  7. package/dist/cli/audit.js +18 -0
  8. package/dist/cli/audit.js.map +1 -1
  9. package/dist/cli/backlog.d.ts +0 -5
  10. package/dist/cli/backlog.js +18 -0
  11. package/dist/cli/backlog.js.map +1 -1
  12. package/dist/cli/comms.js +20 -0
  13. package/dist/cli/comms.js.map +1 -1
  14. package/dist/cli/completions.d.ts +6 -1
  15. package/dist/cli/completions.js +35 -11
  16. package/dist/cli/completions.js.map +1 -1
  17. package/dist/cli/daemon.js +10 -3
  18. package/dist/cli/daemon.js.map +1 -1
  19. package/dist/cli/demo.d.ts +0 -27
  20. package/dist/cli/demo.js +17 -0
  21. package/dist/cli/demo.js.map +1 -1
  22. package/dist/cli/help.js +19 -3
  23. package/dist/cli/help.js.map +1 -1
  24. package/dist/cli/inbox.d.ts +14 -2
  25. package/dist/cli/inbox.js +137 -23
  26. package/dist/cli/inbox.js.map +1 -1
  27. package/dist/cli/index.d.ts +1 -0
  28. package/dist/cli/index.js +10 -0
  29. package/dist/cli/index.js.map +1 -1
  30. package/dist/cli/onboard.d.ts +0 -13
  31. package/dist/cli/onboard.js +20 -0
  32. package/dist/cli/onboard.js.map +1 -1
  33. package/dist/cli/resources.js +15 -0
  34. package/dist/cli/resources.js.map +1 -1
  35. package/dist/cli/run.js +1 -1
  36. package/dist/cli/run.js.map +1 -1
  37. package/dist/cli/sandbox.js +43 -0
  38. package/dist/cli/sandbox.js.map +1 -1
  39. package/dist/cli/tui.d.ts +0 -6
  40. package/dist/cli/tui.js +14 -0
  41. package/dist/cli/tui.js.map +1 -1
  42. package/dist/core/config.js +70 -0
  43. package/dist/core/config.js.map +1 -1
  44. package/dist/core/daemon/activation-permit.d.ts +268 -33
  45. package/dist/core/daemon/activation-permit.js +1111 -106
  46. package/dist/core/daemon/activation-permit.js.map +1 -1
  47. package/dist/core/daemon/loop.d.ts +13 -1
  48. package/dist/core/daemon/loop.js +192 -9
  49. package/dist/core/daemon/loop.js.map +1 -1
  50. package/dist/core/daemon/runtime-activation-resident-start-protocol.d.ts +141 -0
  51. package/dist/core/daemon/runtime-activation-resident-start-protocol.js +462 -0
  52. package/dist/core/daemon/runtime-activation-resident-start-protocol.js.map +1 -0
  53. package/dist/core/daemon/runtime-activation-resident-start-runtime.d.ts +27 -0
  54. package/dist/core/daemon/runtime-activation-resident-start-runtime.js +28 -0
  55. package/dist/core/daemon/runtime-activation-resident-start-runtime.js.map +1 -0
  56. package/dist/core/daemon/runtime-activation-stopped-consumer.d.ts +139 -0
  57. package/dist/core/daemon/runtime-activation-stopped-consumer.js +995 -0
  58. package/dist/core/daemon/runtime-activation-stopped-consumer.js.map +1 -0
  59. package/dist/core/daemon/runtime-activation-stopped-runtime.d.ts +36 -0
  60. package/dist/core/daemon/runtime-activation-stopped-runtime.js +134 -0
  61. package/dist/core/daemon/runtime-activation-stopped-runtime.js.map +1 -0
  62. package/dist/core/daemon/runtime-activation-transaction.d.ts +41 -17
  63. package/dist/core/daemon/runtime-activation-transaction.js +80 -11
  64. package/dist/core/daemon/runtime-activation-transaction.js.map +1 -1
  65. package/dist/core/daemon/runtime-release-dependency-inventory.js +1 -0
  66. package/dist/core/daemon/runtime-release-dependency-inventory.js.map +1 -1
  67. package/dist/core/daemon/service-install-authority.d.ts +0 -4
  68. package/dist/core/daemon/service-install-authority.js +18 -3
  69. package/dist/core/daemon/service-install-authority.js.map +1 -1
  70. package/dist/core/dashboard.d.ts +10 -0
  71. package/dist/core/dashboard.js +103 -28
  72. package/dist/core/dashboard.js.map +1 -1
  73. package/dist/core/effective-config.js +7 -0
  74. package/dist/core/effective-config.js.map +1 -1
  75. package/dist/core/fleet/automerge-pass.js +33 -0
  76. package/dist/core/fleet/automerge-pass.js.map +1 -1
  77. package/dist/core/fleet/decisions-ledger.js +35 -12
  78. package/dist/core/fleet/decisions-ledger.js.map +1 -1
  79. package/dist/core/fleet/external-skill-git-capture.js +9 -1
  80. package/dist/core/fleet/external-skill-git-capture.js.map +1 -1
  81. package/dist/core/fleet/judge-decision-metadata.d.ts +8 -1
  82. package/dist/core/fleet/judge-decision-metadata.js +14 -1
  83. package/dist/core/fleet/judge-decision-metadata.js.map +1 -1
  84. package/dist/core/fleet/manager.d.ts +15 -1
  85. package/dist/core/fleet/manager.js +108 -30
  86. package/dist/core/fleet/manager.js.map +1 -1
  87. package/dist/core/fleet/post-merge-credit.d.ts +134 -9
  88. package/dist/core/fleet/post-merge-credit.js +350 -10
  89. package/dist/core/fleet/post-merge-credit.js.map +1 -1
  90. package/dist/core/fleet/self-improve.d.ts +34 -1
  91. package/dist/core/fleet/self-improve.js +106 -1
  92. package/dist/core/fleet/self-improve.js.map +1 -1
  93. package/dist/core/fleet/skill-library.d.ts +21 -2
  94. package/dist/core/fleet/skill-library.js +54 -12
  95. package/dist/core/fleet/skill-library.js.map +1 -1
  96. package/dist/core/fleet/status.js +1 -0
  97. package/dist/core/fleet/status.js.map +1 -1
  98. package/dist/core/fleet/worked-ledger.d.ts +22 -0
  99. package/dist/core/fleet/worked-ledger.js +32 -0
  100. package/dist/core/fleet/worked-ledger.js.map +1 -1
  101. package/dist/core/foundry/automerge-scope-policy.d.ts +2 -2
  102. package/dist/core/foundry/automerge-scope-policy.js +9 -2
  103. package/dist/core/foundry/automerge-scope-policy.js.map +1 -1
  104. package/dist/core/goals/store.js +18 -4
  105. package/dist/core/goals/store.js.map +1 -1
  106. package/dist/core/inbox/apply.js +5 -2
  107. package/dist/core/inbox/apply.js.map +1 -1
  108. package/dist/core/inbox/merge.d.ts +94 -1
  109. package/dist/core/inbox/merge.js +349 -16
  110. package/dist/core/inbox/merge.js.map +1 -1
  111. package/dist/core/integrations/github.d.ts +2 -0
  112. package/dist/core/integrations/github.js +2 -1
  113. package/dist/core/integrations/github.js.map +1 -1
  114. package/dist/core/learn/reflect.d.ts +42 -4
  115. package/dist/core/learn/reflect.js +56 -5
  116. package/dist/core/learn/reflect.js.map +1 -1
  117. package/dist/core/run/engines.d.ts +8 -0
  118. package/dist/core/run/engines.js +9 -1
  119. package/dist/core/run/engines.js.map +1 -1
  120. package/dist/core/run/learned-router.js +28 -3
  121. package/dist/core/run/learned-router.js.map +1 -1
  122. package/dist/core/run/orchestrator.d.ts +7 -2
  123. package/dist/core/run/orchestrator.js +86 -60
  124. package/dist/core/run/orchestrator.js.map +1 -1
  125. package/dist/core/swarm/rollback.d.ts +11 -0
  126. package/dist/core/swarm/rollback.js +54 -0
  127. package/dist/core/swarm/rollback.js.map +1 -1
  128. package/dist/core/swarm/runner.js +94 -8
  129. package/dist/core/swarm/runner.js.map +1 -1
  130. package/dist/core/types.d.ts +100 -1
  131. package/dist/core/types.js.map +1 -1
  132. package/dist/core/web/api.js +105 -7
  133. package/dist/core/web/api.js.map +1 -1
  134. package/dist/core/web/control.d.ts +20 -0
  135. package/dist/core/web/control.js +44 -32
  136. package/dist/core/web/control.js.map +1 -1
  137. package/dist/core/web/fleet-status-cache.d.ts +68 -0
  138. package/dist/core/web/fleet-status-cache.js +120 -0
  139. package/dist/core/web/fleet-status-cache.js.map +1 -0
  140. package/dist/core/web/public/next/assets/index-CY0U241s.css +1 -0
  141. package/dist/core/web/public/next/assets/index-Ct0mf8n4.js +69 -0
  142. package/dist/core/web/public/next/assets/index-Ct0mf8n4.js.map +1 -0
  143. package/dist/core/web/public/next/index.html +15 -0
  144. package/dist/release-dependency-inventory.json +1 -1
  145. package/docs/RUNTIME_ACTIVATION_AUTHORITY.md +126 -21
  146. package/docs/contracts/CONTRACT-M521.md +102 -0
  147. package/package.json +20 -3
  148. package/schema/config.schema.json +800 -5
  149. 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":"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"}
@@ -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 {};