@dharma-ai-labs/agent-fabric 0.2.109 → 0.2.111

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 (100) hide show
  1. package/README.md +41 -0
  2. package/dist/codexInboxSession.d.ts +1 -1
  3. package/dist/cooperativeInboxSession.d.ts +1 -1
  4. package/dist/demoDeviceTransport.d.ts +33 -0
  5. package/dist/demoDeviceTransport.d.ts.map +1 -0
  6. package/dist/demoDeviceTransport.js +52 -0
  7. package/dist/demoDeviceTransport.js.map +1 -0
  8. package/dist/demoDeviceTransport.test.d.ts +2 -0
  9. package/dist/demoDeviceTransport.test.d.ts.map +1 -0
  10. package/dist/demoDeviceTransport.test.js +178 -0
  11. package/dist/demoDeviceTransport.test.js.map +1 -0
  12. package/dist/demoEnrollment.d.ts +2 -1
  13. package/dist/demoEnrollment.d.ts.map +1 -1
  14. package/dist/demoEnrollment.js +99 -21
  15. package/dist/demoEnrollment.js.map +1 -1
  16. package/dist/demoEnrollment.test.js +288 -2
  17. package/dist/demoEnrollment.test.js.map +1 -1
  18. package/dist/demoPackage.js +1 -1
  19. package/dist/demoPackage.js.map +1 -1
  20. package/dist/demoSigningTrust.d.ts +24 -0
  21. package/dist/demoSigningTrust.d.ts.map +1 -0
  22. package/dist/demoSigningTrust.js +326 -0
  23. package/dist/demoSigningTrust.js.map +1 -0
  24. package/dist/demoSigningTrust.test.d.ts +2 -0
  25. package/dist/demoSigningTrust.test.d.ts.map +1 -0
  26. package/dist/demoSigningTrust.test.js +445 -0
  27. package/dist/demoSigningTrust.test.js.map +1 -0
  28. package/dist/demoSigningUpgradeProof.d.ts +52 -0
  29. package/dist/demoSigningUpgradeProof.d.ts.map +1 -0
  30. package/dist/demoSigningUpgradeProof.js +137 -0
  31. package/dist/demoSigningUpgradeProof.js.map +1 -0
  32. package/dist/demoSigningUpgradeProof.test.d.ts +2 -0
  33. package/dist/demoSigningUpgradeProof.test.d.ts.map +1 -0
  34. package/dist/demoSigningUpgradeProof.test.js +564 -0
  35. package/dist/demoSigningUpgradeProof.test.js.map +1 -0
  36. package/dist/demoSigningUpgradeSubmission.d.ts +21 -0
  37. package/dist/demoSigningUpgradeSubmission.d.ts.map +1 -0
  38. package/dist/demoSigningUpgradeSubmission.js +178 -0
  39. package/dist/demoSigningUpgradeSubmission.js.map +1 -0
  40. package/dist/demoSupervisor.d.ts.map +1 -1
  41. package/dist/demoSupervisor.js +2 -1
  42. package/dist/demoSupervisor.js.map +1 -1
  43. package/dist/demoSupervisor.test.js +35 -0
  44. package/dist/demoSupervisor.test.js.map +1 -1
  45. package/dist/demoTransportCommand.test.d.ts +2 -0
  46. package/dist/demoTransportCommand.test.d.ts.map +1 -0
  47. package/dist/demoTransportCommand.test.js +28 -0
  48. package/dist/demoTransportCommand.test.js.map +1 -0
  49. package/dist/demoTransportContinuity.d.ts +39 -0
  50. package/dist/demoTransportContinuity.d.ts.map +1 -0
  51. package/dist/demoTransportContinuity.js +82 -0
  52. package/dist/demoTransportContinuity.js.map +1 -0
  53. package/dist/demoTransportContinuity.test.d.ts +2 -0
  54. package/dist/demoTransportContinuity.test.d.ts.map +1 -0
  55. package/dist/demoTransportContinuity.test.js +145 -0
  56. package/dist/demoTransportContinuity.test.js.map +1 -0
  57. package/dist/demoTransportFetch.d.ts +12 -0
  58. package/dist/demoTransportFetch.d.ts.map +1 -0
  59. package/dist/demoTransportFetch.js +109 -0
  60. package/dist/demoTransportFetch.js.map +1 -0
  61. package/dist/demoTransportFetch.test.d.ts +2 -0
  62. package/dist/demoTransportFetch.test.d.ts.map +1 -0
  63. package/dist/demoTransportFetch.test.js +150 -0
  64. package/dist/demoTransportFetch.test.js.map +1 -0
  65. package/dist/demoTransportRequest.d.ts +35 -0
  66. package/dist/demoTransportRequest.d.ts.map +1 -0
  67. package/dist/demoTransportRequest.js +193 -0
  68. package/dist/demoTransportRequest.js.map +1 -0
  69. package/dist/demoTransportRequest.test.d.ts +2 -0
  70. package/dist/demoTransportRequest.test.d.ts.map +1 -0
  71. package/dist/demoTransportRequest.test.js +203 -0
  72. package/dist/demoTransportRequest.test.js.map +1 -0
  73. package/dist/demoTransportState.d.ts +31 -0
  74. package/dist/demoTransportState.d.ts.map +1 -0
  75. package/dist/demoTransportState.js +204 -0
  76. package/dist/demoTransportState.js.map +1 -0
  77. package/dist/demoTransportState.test.d.ts +2 -0
  78. package/dist/demoTransportState.test.d.ts.map +1 -0
  79. package/dist/demoTransportState.test.js +192 -0
  80. package/dist/demoTransportState.test.js.map +1 -0
  81. package/dist/index.d.ts.map +1 -1
  82. package/dist/index.js +46 -13
  83. package/dist/index.js.map +1 -1
  84. package/dist/providerSessionReplyRecovery.d.ts +1 -1
  85. package/dist/relaySupervisor.test.js +3 -1
  86. package/dist/relaySupervisor.test.js.map +1 -1
  87. package/dist/schemas/demo-enrollment-approval.schema.json +19 -0
  88. package/dist/schemas/demo-signing-update.schema.json +18 -0
  89. package/dist/schemas/demo-transport-continuity.schema.json +27 -0
  90. package/dist/schemas/demo-transport-journal.schema.json +13 -0
  91. package/dist/schemas/demo-transport-request.schema.json +27 -0
  92. package/dist/schemas/demo-transport-state.schema.json +13 -0
  93. package/dist/schemas/lifecycle-event.schema.json +178 -0
  94. package/dist/schemas/signing-upgrade-context.schema.json +28 -0
  95. package/dist/schemas/signing-upgrade-source.schema.json +32 -0
  96. package/dist/usage.d.ts +1 -1
  97. package/dist/usage.d.ts.map +1 -1
  98. package/dist/usage.js +1 -1
  99. package/dist/usage.js.map +1 -1
  100. package/package.json +2 -1
@@ -0,0 +1,326 @@
1
+ import { createHash, createPublicKey } from 'node:crypto';
2
+ import { readFile } from 'node:fs/promises';
3
+ import { createRequire } from 'node:module';
4
+ import { Ajv2020 } from 'ajv/dist/2020.js';
5
+ import { canonicalize, verifyInitialServerSigningKeyset, verifyServerSigningKeysetUpdate, validateTrustedServerSigningKeysetContract } from '@dharma-ai-labs/agent-fabric-contracts';
6
+ import { createSystemSecureStore } from '@dharma-ai-labs/agent-fabric-secure-store';
7
+ let approvalValidator;
8
+ function enrollmentApprovalValidator() {
9
+ return approvalValidator ??= (async () => {
10
+ const ajv = new Ajv2020({ allErrors: true, strict: true });
11
+ const addFormats = createRequire(import.meta.url)('ajv-formats').default;
12
+ addFormats(ajv);
13
+ return ajv.compile(JSON.parse(await readFile(new URL('./schemas/demo-enrollment-approval.schema.json', import.meta.url), 'utf8')));
14
+ })();
15
+ }
16
+ let updateValidator;
17
+ function signingUpdateValidator() {
18
+ return updateValidator ??= (async () => {
19
+ const ajv = new Ajv2020({ allErrors: true, strict: true });
20
+ const addFormats = createRequire(import.meta.url)('ajv-formats').default;
21
+ addFormats(ajv);
22
+ for (const file of ['server-signing-keyset', 'demo-signing-update']) {
23
+ ajv.addSchema(JSON.parse(await readFile(new URL(`./schemas/${file}.schema.json`, import.meta.url), 'utf8')));
24
+ }
25
+ return ajv.getSchema('https://schemas.dharma-ai.io/demo-signing-update/v1');
26
+ })();
27
+ }
28
+ function failure(reason) {
29
+ throw new Error(`Demo signing trust rejected: ${reason}. Use browser-authorized re-enrollment if trust has expired.`);
30
+ }
31
+ function binding(config) {
32
+ return { schema: 'dharma.demo-signing-anchor/v1', hqUrl: config.hqUrl,
33
+ organizationId: config.organizationId, repositoryId: config.repositoryId,
34
+ normalizedRepository: config.normalizedRepository, installationId: config.installationId,
35
+ deviceId: config.deviceId, publicKeyEd25519: config.publicKeyEd25519,
36
+ enrolledAt: config.enrolledAt, serverPublicKeyEd25519: config.serverPublicKeyEd25519 };
37
+ }
38
+ function accountFor(config) {
39
+ return `demo-signing-${createHash('sha256').update(canonicalize({ hqUrl: config.hqUrl,
40
+ organizationId: config.organizationId, repositoryId: config.repositoryId,
41
+ installationId: config.installationId, deviceId: config.deviceId })).digest('hex').slice(0, 32)}`;
42
+ }
43
+ function checkKeyset(keyset, org, now, pin) {
44
+ if (!validateTrustedServerSigningKeysetContract(keyset).ok)
45
+ failure('schema_invalid');
46
+ const signer = keyset.keys.find(k => k.keyVersion === keyset.signedByKeyVersion);
47
+ if (!signer || signer.status !== 'active' || keyset.keys.filter(k => k.status === 'active').length !== 1
48
+ || new Set(keyset.keys.map(k => k.keyVersion)).size !== keyset.keys.length
49
+ || Date.parse(signer.notBefore) > now.getTime() || Date.parse(signer.notAfter) < Date.parse(keyset.expiresAt)) {
50
+ failure('signing_roles_or_lifetime_invalid');
51
+ }
52
+ // A self-signature is sufficient only after authority has come from the OS
53
+ // anchor or a verified predecessor. It never establishes a new enrollment pin.
54
+ const key = createPublicKey({ key: { kty: 'OKP', crv: 'Ed25519', x: pin ?? signer.publicKeyEd25519 }, format: 'jwk' });
55
+ const verification = verifyInitialServerSigningKeyset(keyset, key, org, now);
56
+ if (!verification.ok)
57
+ failure(verification.reason ?? 'invalid_keyset');
58
+ }
59
+ async function saveAnchor(config, store, nextKeyVersion) {
60
+ const serialized = canonicalize({ ...binding(config), serverSigningKeyset: config.serverSigningKeyset, nextKeyVersion });
61
+ const account = accountFor(config);
62
+ await store.put(account, serialized);
63
+ if (await readProtected(store, account) !== serialized)
64
+ failure('secure_store_write_not_confirmed');
65
+ }
66
+ function readProtected(store, account) {
67
+ return store.getFresh ? store.getFresh(account) : store.get(account);
68
+ }
69
+ function parseAnchor(serialized) {
70
+ let anchor;
71
+ try {
72
+ anchor = JSON.parse(serialized);
73
+ }
74
+ catch {
75
+ failure('protected_anchor_malformed');
76
+ }
77
+ if (!anchor || typeof anchor !== 'object' || !anchor.serverSigningKeyset
78
+ || !validateTrustedServerSigningKeysetContract(anchor.serverSigningKeyset).ok)
79
+ failure('protected_anchor_malformed');
80
+ return anchor;
81
+ }
82
+ function anchorBinding(anchor) {
83
+ const { serverSigningKeyset: _keyset, nextKeyVersion: _next, ...base } = anchor;
84
+ return base;
85
+ }
86
+ function checkDiskHead(config, keyset) {
87
+ if (!config.serverSigningKeyset || !validateTrustedServerSigningKeysetContract(config.serverSigningKeyset).ok
88
+ || config.serverSigningKeyset.generation > keyset.generation
89
+ || (config.serverSigningKeyset.generation === keyset.generation
90
+ && canonicalize(config.serverSigningKeyset) !== canonicalize(keyset)))
91
+ failure('protected_anchor_conflict');
92
+ }
93
+ function hashAnchor(serialized) { return createHash('sha256').update(serialized).digest('hex'); }
94
+ async function parseRecovery(serialized) {
95
+ let recovery;
96
+ try {
97
+ recovery = JSON.parse(serialized);
98
+ }
99
+ catch {
100
+ failure('protected_recovery_malformed');
101
+ }
102
+ if (recovery?.schema !== 'dharma.demo-signing-recovery/v1'
103
+ || !/^[0-9a-f]{64}$/.test(recovery.previousAnchorHash)
104
+ || typeof recovery.previousWasProtected !== 'boolean'
105
+ || typeof recovery.replacementAnchor !== 'string'
106
+ || !(await enrollmentApprovalValidator())(recovery.approval))
107
+ failure('protected_recovery_malformed');
108
+ return recovery;
109
+ }
110
+ async function boundAnchor(config, serialized, store) {
111
+ const anchor = parseAnchor(serialized);
112
+ if (canonicalize(anchorBinding(anchor)) === canonicalize(binding(config))) {
113
+ checkDiskHead(config, anchor.serverSigningKeyset);
114
+ return { config, anchor };
115
+ }
116
+ // Only a confirmed OS-store journal may bridge an interrupted pin replacement.
117
+ // A disk intent or an expired self-signature cannot authorize that replacement.
118
+ const journal = await readProtected(store, `${accountFor(config)}-recovery`);
119
+ if (!journal)
120
+ failure('protected_anchor_binding_mismatch');
121
+ const recovery = await parseRecovery(journal);
122
+ const replacement = parseAnchor(recovery.replacementAnchor);
123
+ const previous = await readProtected(store, `${accountFor(config)}-history-${recovery.previousAnchorHash}`);
124
+ if (!previous || hashAnchor(previous) !== recovery.previousAnchorHash
125
+ || canonicalize(anchorBinding(parseAnchor(previous))) !== canonicalize(binding(config))
126
+ || canonicalize(anchorBinding(replacement)) !== canonicalize(anchorBinding(anchor)))
127
+ failure('protected_anchor_binding_mismatch');
128
+ checkDiskHead(config, parseAnchor(previous).serverSigningKeyset);
129
+ checkDiskHead({ ...config, serverSigningKeyset: replacement.serverSigningKeyset }, anchor.serverSigningKeyset);
130
+ return { config: { ...config, serverPublicKeyEd25519: replacement.serverPublicKeyEd25519,
131
+ serverSigningKeyset: replacement.serverSigningKeyset }, anchor };
132
+ }
133
+ export async function resolveDemoSigningTrust(config, deps = {}) {
134
+ const now = deps.now ?? new Date();
135
+ if (!Number.isFinite(now.getTime()) || !/^[A-Za-z0-9_-]{43}$/.test(config.serverPublicKeyEd25519 ?? '')
136
+ || !config.serverSigningKeyset)
137
+ failure('missing_enrollment_trust');
138
+ const store = deps.store ?? await createSystemSecureStore();
139
+ const serialized = await readProtected(store, accountFor(config));
140
+ if (!serialized) {
141
+ // Compatibility migration is allowed only while the originally pinned
142
+ // bootstrap is valid. An expired or already-rotated disk file cannot bootstrap.
143
+ checkKeyset(config.serverSigningKeyset, config.organizationId, now, config.serverPublicKeyEd25519);
144
+ await saveAnchor(config, store, null);
145
+ return config;
146
+ }
147
+ const bound = await boundAnchor(config, serialized, store);
148
+ const { serverSigningKeyset, nextKeyVersion } = bound.anchor;
149
+ if (nextKeyVersion !== null && (typeof nextKeyVersion !== 'string'
150
+ || !serverSigningKeyset.keys.some(k => k.keyVersion === nextKeyVersion && k.status === 'overlap')))
151
+ failure('protected_preload_invalid');
152
+ checkKeyset(serverSigningKeyset, config.organizationId, now);
153
+ return { ...bound.config, serverSigningKeyset };
154
+ }
155
+ // Call only from a successful poll of the browser-approved enrollment, under the
156
+ // device operation lock. The receipt is not a grant and cannot approve a device.
157
+ export async function recoverDemoSigningEnrollment(config, trust, value, deps = {}) {
158
+ const validate = await enrollmentApprovalValidator();
159
+ if (!validate(value))
160
+ failure('fresh_approval_required');
161
+ const now = deps.now ?? new Date();
162
+ const approved = Date.parse(value.approvedAt), expiry = Date.parse(value.expiresAt);
163
+ if (!Number.isFinite(now.getTime()) || value.organizationId !== config.organizationId
164
+ || value.repositoryId !== config.repositoryId || value.deviceId !== config.deviceId
165
+ || value.publicKeyEd25519 !== config.publicKeyEd25519 || approved > now.getTime() + 30_000
166
+ || expiry <= now.getTime() || expiry <= approved || expiry - approved > 15 * 60_000)
167
+ failure('approval_scope_or_expiry_invalid');
168
+ const store = deps.store ?? await createSystemSecureStore();
169
+ const account = accountFor(config);
170
+ const priorJournal = await readProtected(store, `${account}-recovery`);
171
+ const prior = priorJournal === null ? null : await parseRecovery(priorJournal);
172
+ let existing = await readProtected(store, account);
173
+ // Windows PasswordVault removes an existing credential before adding its
174
+ // replacement. Resume that interrupted write only from the confirmed journal.
175
+ if (existing === null && prior?.previousWasProtected) {
176
+ const sameApproval = canonicalize(prior.approval) === canonicalize(value);
177
+ const replacesExpiredApproval = prior.approval.enrollmentId !== value.enrollmentId
178
+ && Date.parse(prior.approval.expiresAt) <= now.getTime()
179
+ && approved > Date.parse(prior.approval.expiresAt)
180
+ && ['organizationId', 'repositoryId', 'participantId', 'deviceId', 'publicKeyEd25519']
181
+ .every(field => prior.approval[field] === value[field]);
182
+ if ((!sameApproval && !replacesExpiredApproval)
183
+ || await readProtected(store, `${account}-approval-${prior.approval.enrollmentId}`) !== canonicalize(prior)) {
184
+ failure('approval_replayed_or_conflicting');
185
+ }
186
+ const previous = await readProtected(store, `${account}-history-${prior.previousAnchorHash}`);
187
+ if (!previous || hashAnchor(previous) !== prior.previousAnchorHash
188
+ || canonicalize(anchorBinding(parseAnchor(previous))) !== canonicalize(binding(config))) {
189
+ failure('protected_anchor_binding_mismatch');
190
+ }
191
+ if (replacesExpiredApproval) {
192
+ const pending = parseAnchor(prior.replacementAnchor);
193
+ if (!trust.serverSigningKeyset || canonicalize({ ...anchorBinding(pending),
194
+ serverPublicKeyEd25519: config.serverPublicKeyEd25519 }) !== canonicalize(binding(config))) {
195
+ failure('protected_anchor_binding_mismatch');
196
+ }
197
+ checkDiskHead({ ...config, serverSigningKeyset: pending.serverSigningKeyset }, trust.serverSigningKeyset);
198
+ }
199
+ existing = previous;
200
+ }
201
+ const bound = existing ? await boundAnchor(config, existing, store) : null;
202
+ const head = bound?.anchor.serverSigningKeyset ?? config.serverSigningKeyset;
203
+ if (!head || !trust.serverSigningKeyset || !trust.serverPublicKeyEd25519)
204
+ failure('missing_enrollment_trust');
205
+ const expiredAt = Date.parse(head.expiresAt);
206
+ if (!Number.isFinite(expiredAt) || expiredAt > now.getTime() || approved <= expiredAt)
207
+ failure('approval_must_follow_trust_expiry');
208
+ checkKeyset(head, config.organizationId, new Date(expiredAt - 1), existing ? undefined : config.serverPublicKeyEd25519);
209
+ checkKeyset(trust.serverSigningKeyset, config.organizationId, now, trust.serverPublicKeyEd25519);
210
+ for (const old of head.keys) {
211
+ const retained = trust.serverSigningKeyset.keys.find(key => key.keyVersion === old.keyVersion);
212
+ if (retained && (retained.publicKeyEd25519 !== old.publicKeyEd25519
213
+ || retained.notBefore !== old.notBefore || retained.notAfter !== old.notAfter))
214
+ failure('retained_window_changed');
215
+ }
216
+ if (trust.serverSigningKeyset.generation <= head.generation
217
+ || Date.parse(trust.serverSigningKeyset.expiresAt) <= now.getTime() + 600_000
218
+ || Date.parse(trust.serverSigningKeyset.expiresAt) - Date.parse(trust.serverSigningKeyset.issuedAt) > 29 * 86_400_000)
219
+ failure('reenrollment_generation_or_lifetime_invalid');
220
+ const updated = { ...(bound?.config ?? config), ...trust };
221
+ const replacementAnchor = canonicalize({ ...binding(updated), serverSigningKeyset: updated.serverSigningKeyset, nextKeyVersion: null });
222
+ // Legacy clients without an OS signing anchor retain a labelled historical
223
+ // snapshot; only the new recipient approval establishes its replacement trust.
224
+ const previous = existing ?? canonicalize({ ...binding(config), serverSigningKeyset: head, nextKeyVersion: null });
225
+ const previousAnchorHash = hashAnchor(previous);
226
+ const recovery = { schema: 'dharma.demo-signing-recovery/v1', previousAnchorHash, previousWasProtected: existing !== null,
227
+ replacementAnchor, approval: structuredClone(value) };
228
+ if (prior) {
229
+ if (prior.approval.participantId !== value.participantId
230
+ || (prior.approval.enrollmentId === value.enrollmentId
231
+ && canonicalize(prior) !== canonicalize(recovery)))
232
+ failure('approval_replayed_or_conflicting');
233
+ }
234
+ const archive = `${account}-history-${previousAnchorHash}`;
235
+ const archived = await readProtected(store, archive);
236
+ if (archived !== null && archived !== previous)
237
+ failure('protected_history_conflict');
238
+ const approvalAccount = `${account}-approval-${value.enrollmentId}`;
239
+ const recoveryRecord = canonicalize(recovery);
240
+ const seen = await readProtected(store, approvalAccount);
241
+ if (seen !== null && seen !== recoveryRecord)
242
+ failure('approval_replayed_or_conflicting');
243
+ const confirm = async (key, contents) => {
244
+ await store.put(key, contents);
245
+ if (await readProtected(store, key) !== contents)
246
+ failure('secure_store_write_not_confirmed');
247
+ };
248
+ if (archived === null)
249
+ await confirm(archive, previous);
250
+ if (seen === null)
251
+ await confirm(approvalAccount, recoveryRecord);
252
+ await confirm(`${account}-recovery`, recoveryRecord);
253
+ await confirm(account, replacementAnchor);
254
+ return updated;
255
+ }
256
+ // Callers hold the existing per-device operation lock. The protected anchor is
257
+ // the write-ahead record; a restart repairs an older disk config from this record.
258
+ export async function acceptDemoSigningKeysets(config, chain, deps = {}) {
259
+ if (!Array.isArray(chain) || chain.length > 20)
260
+ failure('chain_limit');
261
+ const now = deps.now ?? new Date();
262
+ const store = deps.store ?? await createSystemSecureStore();
263
+ let updated = await resolveDemoSigningTrust(config, { ...deps, store, now });
264
+ let nextKeyVersion = JSON.parse((await readProtected(store, accountFor(config)))).nextKeyVersion;
265
+ for (const candidate of chain) {
266
+ const current = updated.serverSigningKeyset;
267
+ if (canonicalize(current) === canonicalize(candidate))
268
+ continue;
269
+ if (!validateTrustedServerSigningKeysetContract(candidate).ok
270
+ || candidate.generation !== current.generation + 1)
271
+ failure('generation_conflict');
272
+ const verification = verifyServerSigningKeysetUpdate(current, candidate, now);
273
+ if (!verification.ok)
274
+ failure(verification.reason ?? 'transition_invalid');
275
+ checkKeyset(candidate, config.organizationId, now);
276
+ if (Date.parse(candidate.expiresAt) <= now.getTime() + 600_000
277
+ || Date.parse(candidate.expiresAt) - Date.parse(candidate.issuedAt) > 29 * 86_400_000)
278
+ failure('transition_lifetime_invalid');
279
+ for (const old of current.keys) {
280
+ const retained = candidate.keys.find(k => k.keyVersion === old.keyVersion);
281
+ if (!retained || retained.publicKeyEd25519 !== old.publicKeyEd25519
282
+ || retained.notBefore !== old.notBefore || retained.notAfter !== old.notAfter)
283
+ failure('retained_window_changed');
284
+ }
285
+ const active = candidate.keys.find(k => k.status === 'active');
286
+ const previousActive = current.keys.find(k => k.status === 'active');
287
+ const introduced = candidate.keys.filter(k => !current.keys.some(old => old.keyVersion === k.keyVersion));
288
+ if (active.keyVersion === previousActive.keyVersion) {
289
+ if (nextKeyVersion !== null || introduced.length !== 1 || introduced[0].status !== 'overlap'
290
+ || Date.parse(introduced[0].notBefore) > now.getTime()
291
+ || Date.parse(introduced[0].notAfter) <= now.getTime() + 600_000
292
+ || candidate.keys.length !== current.keys.length + 1
293
+ || current.keys.some(old => candidate.keys.find(k => k.keyVersion === old.keyVersion).status !== old.status)) {
294
+ failure('preload_invalid');
295
+ }
296
+ nextKeyVersion = introduced[0].keyVersion;
297
+ }
298
+ else {
299
+ if (active.keyVersion !== nextKeyVersion || introduced.length !== 0
300
+ || current.keys.find(k => k.keyVersion === active.keyVersion)?.status !== 'overlap'
301
+ || candidate.keys.length !== current.keys.length
302
+ || current.keys.some(old => candidate.keys.find(k => k.keyVersion === old.keyVersion).status
303
+ !== (old.keyVersion === active.keyVersion ? 'active' : old.keyVersion === previousActive.keyVersion ? 'overlap' : old.status))) {
304
+ failure('activation_without_preload');
305
+ }
306
+ nextKeyVersion = null;
307
+ }
308
+ updated = { ...updated, serverSigningKeyset: structuredClone(candidate) };
309
+ }
310
+ if (canonicalize(updated.serverSigningKeyset) !== canonicalize(config.serverSigningKeyset))
311
+ await saveAnchor(updated, store, nextKeyVersion);
312
+ return updated;
313
+ }
314
+ export async function acceptDemoSigningUpdate(config, value, deps = {}) {
315
+ const validate = await signingUpdateValidator();
316
+ if (!validate(value))
317
+ failure('update_schema_invalid');
318
+ const now = deps.now ?? new Date();
319
+ const issued = Date.parse(value.issuedAt), expiry = Date.parse(value.expiresAt);
320
+ if (value.organizationId !== config.organizationId || value.repositoryId !== config.repositoryId
321
+ || value.deviceId !== config.deviceId || issued > now.getTime() + 30_000
322
+ || expiry <= now.getTime() || expiry <= issued || expiry - issued > 5 * 60_000)
323
+ failure('update_scope_or_expiry_invalid');
324
+ return acceptDemoSigningKeysets(config, value.keysets, deps);
325
+ }
326
+ //# sourceMappingURL=demoSigningTrust.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"demoSigningTrust.js","sourceRoot":"","sources":["../src/demoSigningTrust.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=demoSigningTrust.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"demoSigningTrust.test.d.ts","sourceRoot":"","sources":["../src/demoSigningTrust.test.ts"],"names":[],"mappings":""}