@dharma-ai-labs/agent-fabric 0.2.186 → 0.2.188

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 (42) hide show
  1. package/dist/index.d.ts +74 -0
  2. package/dist/index.d.ts.map +1 -1
  3. package/dist/index.js +296 -12
  4. package/dist/index.js.map +1 -1
  5. package/dist/namedSessionNativeAudit.d.ts +20 -25
  6. package/dist/namedSessionNativeAudit.d.ts.map +1 -1
  7. package/dist/namedSessionNativeAudit.js.map +1 -1
  8. package/dist/repositoryCandidateSync.d.ts +109 -2
  9. package/dist/repositoryCandidateSync.d.ts.map +1 -1
  10. package/dist/repositoryCandidateSync.js +327 -22
  11. package/dist/repositoryCandidateSync.js.map +1 -1
  12. package/dist/repositoryCandidateSync.test.js +912 -6
  13. package/dist/repositoryCandidateSync.test.js.map +1 -1
  14. package/dist/repositoryKnowledgeRetention.test.js +319 -3
  15. package/dist/repositoryKnowledgeRetention.test.js.map +1 -1
  16. package/dist/repositorySourceInventoryClient.d.ts +1 -0
  17. package/dist/repositorySourceInventoryClient.d.ts.map +1 -1
  18. package/dist/repositorySourceInventoryClient.js +4 -1
  19. package/dist/repositorySourceInventoryClient.js.map +1 -1
  20. package/dist/repositorySourceRestoration.d.ts +47 -0
  21. package/dist/repositorySourceRestoration.d.ts.map +1 -0
  22. package/dist/repositorySourceRestoration.js +140 -0
  23. package/dist/repositorySourceRestoration.js.map +1 -0
  24. package/dist/repositorySourceRestorationCommand.test.d.ts +2 -0
  25. package/dist/repositorySourceRestorationCommand.test.d.ts.map +1 -0
  26. package/dist/repositorySourceRestorationCommand.test.js +754 -0
  27. package/dist/repositorySourceRestorationCommand.test.js.map +1 -0
  28. package/dist/repositorySourceSync.d.ts +1 -0
  29. package/dist/repositorySourceSync.d.ts.map +1 -1
  30. package/dist/repositorySourceSync.js +10 -4
  31. package/dist/repositorySourceSync.js.map +1 -1
  32. package/dist/repositorySourceSync.test.js +38 -4
  33. package/dist/repositorySourceSync.test.js.map +1 -1
  34. package/dist/schemas/repository-candidate-fence-v1.schema.json +55 -0
  35. package/dist/schemas/repository-candidate-upload-v1.schema.json +60 -0
  36. package/dist/schemas/repository-knowledge-restoration-v1.schema.json +16 -0
  37. package/dist/schemas/task-action.schema.json +1 -1
  38. package/dist/schemas/task-envelope.schema.json +5 -1
  39. package/dist/usage.d.ts.map +1 -1
  40. package/dist/usage.js +3 -1
  41. package/dist/usage.js.map +1 -1
  42. package/package.json +5 -5
@@ -1,17 +1,49 @@
1
1
  import { constants } from 'node:fs';
2
- import { mkdir, open, readFile, rename, rm } from 'node:fs/promises';
2
+ import { randomUUID } from 'node:crypto';
3
+ import { link, lstat, mkdir, open, readFile, rename, rm } from 'node:fs/promises';
3
4
  import { dirname, resolve } from 'node:path';
4
- import { canonicalize, sha256 } from '@dharma-ai-labs/agent-fabric-contracts';
5
+ import { fileURLToPath } from 'node:url';
6
+ import { canonicalize, sha256, validateContract } from '@dharma-ai-labs/agent-fabric-contracts';
5
7
  import { serializeRepositoryPackageSnapshot, } from './repositoryPackage.js';
6
8
  const UUID = /^[0-9a-f]{8}-[0-9a-f]{4}-[1-8][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$(?![\s\S])/i;
7
9
  const HASH = /^sha256:[0-9a-f]{64}$(?![\s\S])/;
8
10
  const ORG = /^org_[A-Za-z0-9_]{1,156}$(?![\s\S])/;
9
11
  const STATES = new Set(['accepted', 'processing', 'published', 'blocked']);
10
- const OUTBOX_STATES = new Set(['pending_upload', ...STATES]);
12
+ const OUTBOX_STATES = new Set(['pending_upload', 'fenced', ...STATES]);
13
+ export function repositoryCandidateOperationId(input) {
14
+ requireFact(input.restorationAttempt === undefined || UUID.test(input.restorationAttempt), 'Repository restoration attempt is invalid.');
15
+ requireFact(input.restorationContext === undefined || UUID.test(input.restorationContext.headCandidateId)
16
+ && UUID.test(input.restorationContext.priorReleaseId), 'Repository restoration context is invalid.');
17
+ return sha256(canonicalize({ schema: 'dharma.repository-candidate-operation/v1',
18
+ organizationId: input.scope.organizationId, workspaceId: input.scope.workspaceId,
19
+ repositoryBindingId: input.scope.repositoryBindingId, repositoryAgentId: input.scope.repositoryAgentId,
20
+ snapshotHash: input.snapshotHash, sourceManifestHash: input.sourceManifestHash, consolidation: input.consolidation,
21
+ ...(input.recoveryAttempt ? { recoveryAttempt: 1 } : {}),
22
+ ...(input.restorationAttempt ? { restorationAttempt: input.restorationAttempt } : {}),
23
+ ...(input.restorationContext ? { restorationContext: input.restorationContext } : {}) }));
24
+ }
11
25
  function requireFact(value, message) {
12
26
  if (!value)
13
27
  throw new Error(message);
14
28
  }
29
+ function restorationCheckpoint(value) {
30
+ requireFact(value !== null && typeof value === 'object' && !Array.isArray(value), 'Repository restoration checkpoint is invalid.');
31
+ const row = value;
32
+ requireFact(Object.keys(row).sort().join(',') === ['baselineSnapshotHash', 'localSnapshotHash', 'planHash',
33
+ 'previousOperationId', 'priorReleaseId', ...(Object.hasOwn(row, 'attemptId') ? ['attemptId'] : []),
34
+ ...(Object.hasOwn(row, 'headCandidateId') ? ['headCandidateId'] : [])].sort().join(',')
35
+ && typeof row.planHash === 'string' && HASH.test(row.planHash)
36
+ && typeof row.localSnapshotHash === 'string' && HASH.test(row.localSnapshotHash)
37
+ && (row.baselineSnapshotHash === null || typeof row.baselineSnapshotHash === 'string' && HASH.test(row.baselineSnapshotHash))
38
+ && (row.previousOperationId === null || typeof row.previousOperationId === 'string' && HASH.test(row.previousOperationId))
39
+ && typeof row.priorReleaseId === 'string' && UUID.test(row.priorReleaseId)
40
+ && (row.attemptId === undefined || typeof row.attemptId === 'string' && UUID.test(row.attemptId))
41
+ && (!Object.hasOwn(row, 'headCandidateId') || typeof row.headCandidateId === 'string' && UUID.test(row.headCandidateId)), 'Repository restoration checkpoint is invalid.');
42
+ return row;
43
+ }
44
+ function restorationContext(checkpoint) {
45
+ return checkpoint?.headCandidateId ? { headCandidateId: checkpoint.headCandidateId, priorReleaseId: checkpoint.priorReleaseId } : undefined;
46
+ }
15
47
  function checkedScope(value) {
16
48
  requireFact(ORG.test(value.organizationId), 'Repository candidate organization is invalid.');
17
49
  for (const id of [value.workspaceId, value.repositoryBindingId, value.repositoryAgentId]) {
@@ -19,7 +51,7 @@ function checkedScope(value) {
19
51
  }
20
52
  return { ...value };
21
53
  }
22
- function receipt(value, scope, operationId, snapshotHash) {
54
+ function receipt(value, scope, operationId, snapshotHash, archivedReleaseId) {
23
55
  requireFact(value !== null && typeof value === 'object' && !Array.isArray(value), 'Repository candidate response is invalid.');
24
56
  const response = value;
25
57
  requireFact(response.ok === true && response.organizationId === scope.organizationId
@@ -33,6 +65,7 @@ function receipt(value, scope, operationId, snapshotHash) {
33
65
  && typeof candidate.state === 'string' && STATES.has(candidate.state)
34
66
  && (candidate.releaseId === null || typeof candidate.releaseId === 'string' && UUID.test(candidate.releaseId))
35
67
  && (candidate.state === 'published') === (candidate.releaseId !== null), 'Repository candidate receipt is inconsistent.');
68
+ requireFact(candidate.state !== 'published' || candidate.releaseId !== archivedReleaseId, 'Repository restoration cannot reuse the archived release identity.');
36
69
  return candidate;
37
70
  }
38
71
  function outboxPath(root, scope) {
@@ -64,7 +97,8 @@ function outbox(value, expectedScope) {
64
97
  'candidateId', 'state', 'releaseId'];
65
98
  requireFact(row.schema === 'dharma.repository-candidate-outbox/v1'
66
99
  && Reflect.ownKeys(row).every(key => typeof key === 'string')
67
- && keys.every(key => Object.hasOwn(row, key)) && Object.keys(row).every(key => keys.includes(key)), 'Repository candidate outbox is invalid.');
100
+ && keys.every(key => Object.hasOwn(row, key)) && Object.keys(row).every(key => keys.includes(key)
101
+ || ['restoration', 'fence', 'fenceRequestGenerationId', 'registryReceiptHash'].includes(key)), 'Repository candidate outbox is invalid.');
68
102
  const scope = checkedScope(row.scope);
69
103
  if (expectedScope)
70
104
  requireFact(canonicalize(scope) === canonicalize(expectedScope), 'Repository candidate outbox scope is invalid.');
@@ -74,7 +108,7 @@ function outbox(value, expectedScope) {
74
108
  && typeof row.state === 'string' && OUTBOX_STATES.has(row.state)
75
109
  && (row.candidateId === null || typeof row.candidateId === 'string' && UUID.test(row.candidateId))
76
110
  && (row.releaseId === null || typeof row.releaseId === 'string' && UUID.test(row.releaseId))
77
- && (row.state === 'pending_upload') === (row.candidateId === null)
111
+ && ['pending_upload', 'fenced'].includes(String(row.state)) === (row.candidateId === null)
78
112
  && (row.state === 'published') === (row.releaseId !== null), 'Repository candidate outbox is inconsistent.');
79
113
  requireFact(row.consolidation !== null && typeof row.consolidation === 'object' && !Array.isArray(row.consolidation), 'Repository candidate consolidation is invalid.');
80
114
  const consolidation = row.consolidation;
@@ -86,11 +120,65 @@ function outbox(value, expectedScope) {
86
120
  && (consolidation.expectedLatestSourceFingerprint === undefined
87
121
  || consolidation.mode === 'repository_update' && typeof consolidation.expectedLatestSourceFingerprint === 'string'
88
122
  && HASH.test(consolidation.expectedLatestSourceFingerprint)), 'Repository candidate consolidation is invalid.');
123
+ const restoration = Object.hasOwn(row, 'restoration') ? restorationCheckpoint(row.restoration) : undefined;
124
+ requireFact(!Object.hasOwn(row, 'registryReceiptHash') || Boolean(restoration) && typeof row.registryReceiptHash === 'string'
125
+ && HASH.test(row.registryReceiptHash), 'Repository restoration registry checkpoint is invalid.');
126
+ requireFact((row.state === 'fenced') === Object.hasOwn(row, 'fence') && (row.state !== 'fenced' || Boolean(restoration)), 'Repository candidate fence checkpoint is inconsistent.');
127
+ requireFact(!Object.hasOwn(row, 'fenceRequestGenerationId') || Boolean(restoration)
128
+ && typeof row.fenceRequestGenerationId === 'string' && UUID.test(row.fenceRequestGenerationId), 'Repository candidate fence request provenance is invalid.');
129
+ const fence = row.state === 'fenced' ? checkedFence(row.fence, scope, String(row.operationId), String(row.snapshotHash), String(row.sourceManifestHash), row.fenceRequestGenerationId) : undefined;
89
130
  return { schema: 'dharma.repository-candidate-outbox/v1', scope,
90
131
  operationId: row.operationId, sourceManifestHash: row.sourceManifestHash,
91
132
  snapshotHash: row.snapshotHash, consolidation: consolidation,
92
133
  candidateId: row.candidateId, state: row.state,
93
- releaseId: row.releaseId };
134
+ releaseId: row.releaseId,
135
+ ...(restoration ? { restoration } : {}), ...(fence ? { fence } : {}),
136
+ ...(typeof row.fenceRequestGenerationId === 'string' ? { fenceRequestGenerationId: row.fenceRequestGenerationId } : {}),
137
+ ...(typeof row.registryReceiptHash === 'string' ? { registryReceiptHash: row.registryReceiptHash } : {}) };
138
+ }
139
+ function registryReceiptHash(pending) {
140
+ return sha256(canonicalize({ scope: pending.scope, operationId: pending.operationId, candidateId: pending.candidateId,
141
+ snapshotHash: pending.snapshotHash, sourceManifestHash: pending.sourceManifestHash, state: pending.state,
142
+ releaseId: pending.releaseId, restoration: pending.restoration }));
143
+ }
144
+ function assertRestorationReconciled(pending) {
145
+ requireFact(!pending.restoration || pending.registryReceiptHash === registryReceiptHash(pending), 'Repository restoration requires registry reconciliation before replacement.');
146
+ }
147
+ // Called under the registry mutation lock, only after its durable save. A crash
148
+ // before this marker leaves provenance retained and exact recovery retryable.
149
+ export async function checkpointRepositoryRestorationRegistry(input) {
150
+ const scope = checkedScope(input.scope), path = outboxPath(input.outboxRoot, scope), pending = await readOutbox(path, scope);
151
+ if (!pending?.restoration || pending.state === 'fenced')
152
+ return;
153
+ const saved = input.repositoryPackage;
154
+ const restoration = pending.restoration, inFlight = ['accepted', 'processing'].includes(pending.state);
155
+ requireFact(STATES.has(pending.state)
156
+ && ['state', 'candidateId', 'operationId', 'snapshotHash', 'releaseId', 'sourceManifestHash'].every(key => saved[key] === pending[key])
157
+ && saved.consolidationMode === 'repository_update'
158
+ && saved.localBaselineSnapshotHash === (pending.state === 'blocked' ? restoration.baselineSnapshotHash : restoration.localSnapshotHash)
159
+ && saved.publishedLocalSnapshotHash === (pending.state === 'published' ? restoration.localSnapshotHash : restoration.baselineSnapshotHash)
160
+ && saved.pendingLocalSnapshotHash === (inFlight ? restoration.localSnapshotHash : null)
161
+ && saved.pendingLocalOperationId === (inFlight ? pending.operationId : null), 'Repository restoration registry receipt does not match its durable checkpoint.');
162
+ await writeOutbox(path, { ...pending, registryReceiptHash: registryReceiptHash(pending) });
163
+ }
164
+ function checkedFence(value, scope, operationId, snapshotHash, sourceManifestHash, requestPolicyGenerationId) {
165
+ requireFact(value !== null && typeof value === 'object' && !Array.isArray(value), 'Repository candidate fence receipt is invalid.');
166
+ const row = value;
167
+ const keys = ['createdAt', 'fenceId', 'operationId', 'policyGenerationId', 'repositoryAgentId', 'repositoryBindingId',
168
+ 'sourceManifestHash', 'sourceSnapshotHash', 'state', 'workspaceId',
169
+ ...(Object.hasOwn(row, 'requestPolicyGenerationId') ? ['requestPolicyGenerationId'] : [])];
170
+ requireFact(Object.keys(row).sort().join(',') === keys.sort().join(',')
171
+ && typeof row.fenceId === 'string' && UUID.test(row.fenceId) && row.operationId === operationId
172
+ && row.workspaceId === scope.workspaceId && row.repositoryBindingId === scope.repositoryBindingId && row.repositoryAgentId === scope.repositoryAgentId
173
+ && row.sourceSnapshotHash === snapshotHash && row.sourceManifestHash === sourceManifestHash && row.state === 'fenced'
174
+ && typeof row.policyGenerationId === 'string' && UUID.test(row.policyGenerationId)
175
+ && (!Object.hasOwn(row, 'requestPolicyGenerationId') || typeof row.requestPolicyGenerationId === 'string'
176
+ && UUID.test(row.requestPolicyGenerationId))
177
+ && (requestPolicyGenerationId === undefined || (Object.hasOwn(row, 'requestPolicyGenerationId')
178
+ ? row.requestPolicyGenerationId === requestPolicyGenerationId : row.policyGenerationId === requestPolicyGenerationId))
179
+ && typeof row.createdAt === 'string' && Number.isFinite(Date.parse(row.createdAt))
180
+ && new Date(row.createdAt).toISOString() === row.createdAt, 'Repository candidate fence receipt is inconsistent.');
181
+ return row;
94
182
  }
95
183
  async function readOutbox(path, expectedScope) {
96
184
  try {
@@ -107,7 +195,7 @@ async function readOutbox(path, expectedScope) {
107
195
  export async function synchronizeRepositoryCandidate(input) {
108
196
  const scope = checkedScope(input.scope);
109
197
  const serialized = serializeRepositoryPackageSnapshot(input.snapshot);
110
- requireFact(Buffer.byteLength(serialized) <= 8_388_608, 'Repository candidate exceeds its upload byte limit.');
198
+ requireFact(Buffer.byteLength(serialized) <= 4_194_304, 'Repository candidate exceeds its upload byte limit.');
111
199
  requireFact(input.snapshot.schema === 'dharma.repository-package-snapshot/v1'
112
200
  && /^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}\.\d{3}Z$/.test(input.snapshot.capturedAt)
113
201
  && Number.isFinite(Date.parse(input.snapshot.capturedAt))
@@ -137,53 +225,241 @@ export async function synchronizeRepositoryCandidate(input) {
137
225
  expectedLatestSourceFingerprint: input.expectedLatestSourceFingerprint,
138
226
  } : {}),
139
227
  };
140
- const operationId = sha256(canonicalize({ schema: 'dharma.repository-candidate-operation/v1', ...scope,
141
- snapshotHash: snapshot.manifest.snapshotHash, sourceManifestHash, consolidation,
142
- ...(input.blockedCandidate ? { recoveryAttempt: 1 } : {}) }));
228
+ const restoration = input.restoration === undefined ? undefined : restorationCheckpoint(input.restoration);
229
+ requireFact(!restoration || !input.initialRepository && Boolean(input.expectedLatestSourceFingerprint)
230
+ && !input.blockedCandidate, 'Repository restoration checkpoint requires an update.');
231
+ const operationId = repositoryCandidateOperationId({ scope, snapshotHash: snapshot.manifest.snapshotHash,
232
+ sourceManifestHash, consolidation, recoveryAttempt: Boolean(input.blockedCandidate), restorationAttempt: restoration?.attemptId,
233
+ restorationContext: restorationContext(restoration) });
143
234
  const path = outboxPath(input.outboxRoot, scope);
144
235
  const prior = await readOutbox(path, scope);
236
+ requireFact(prior?.state !== 'pending_upload' || !prior.fenceRequestGenerationId, 'Repository restoration fence outcome must be reconciled before any upload retry.');
237
+ if (prior?.state === 'fenced') {
238
+ requireFact(prior.fence && restoration?.attemptId === prior.fence.fenceId && prior.operationId !== operationId, 'A fenced operation requires its verified new restoration attempt.');
239
+ await archiveFencedCheckpoint(input.outboxRoot, prior);
240
+ }
145
241
  if (prior && (prior.operationId !== operationId || canonicalize(prior.scope) !== canonicalize(scope))) {
146
- requireFact(['published', 'blocked'].includes(prior.state)
242
+ requireFact(['published', 'blocked', 'fenced'].includes(prior.state)
147
243
  || input.blockedCandidate?.candidateId === prior.candidateId, 'A different repository candidate is still pending.');
244
+ if (prior.state !== 'fenced')
245
+ assertRestorationReconciled(prior);
148
246
  }
149
247
  const pending = prior?.operationId === operationId ? prior : {
150
248
  schema: 'dharma.repository-candidate-outbox/v1', scope, operationId,
151
249
  sourceManifestHash, snapshotHash: snapshot.manifest.snapshotHash, consolidation,
152
250
  candidateId: null, state: 'pending_upload', releaseId: null,
251
+ ...(restoration ? { restoration } : {}),
153
252
  };
154
253
  requireFact(pending.sourceManifestHash === sourceManifestHash && pending.snapshotHash === snapshot.manifest.snapshotHash
155
- && canonicalize(pending.consolidation) === canonicalize(consolidation), 'Repository candidate outbox does not match the current upload.');
254
+ && canonicalize(pending.consolidation) === canonicalize(consolidation)
255
+ && canonicalize(pending.restoration ?? null) === canonicalize(restoration ?? null), 'Repository candidate outbox does not match the current upload.');
256
+ const body = {
257
+ schema: 'dharma.repository-candidate-upload/v1', operationId, workspaceId: scope.workspaceId,
258
+ repositoryBindingId: scope.repositoryBindingId, repositoryAgentId: scope.repositoryAgentId,
259
+ sourceSnapshotHash: snapshot.manifest.snapshotHash, sourceManifestHash: pending.sourceManifestHash,
260
+ consolidation: pending.consolidation, snapshot,
261
+ ...(restoration?.attemptId ? { restorationAttempt: restoration.attemptId } : {}),
262
+ ...(restorationContext(restoration) ? { restorationContext: restorationContext(restoration) } : {}),
263
+ };
264
+ // The relay caps the complete encoded request, not only raw repository bytes.
265
+ requireFact(Buffer.byteLength(canonicalize(body)) <= 4_194_304, 'Repository candidate exceeds its upload byte limit.');
266
+ requireFact((await validateContract(fileURLToPath(new URL('./schemas/', import.meta.url)), 'https://schemas.dharma-ai.io/repository-candidate-upload/v1', body)).ok, 'Repository candidate upload contract is invalid.');
156
267
  await writeOutbox(path, pending);
157
268
  const route = `/agent-fabric/repository-agents/${encodeURIComponent(scope.repositoryAgentId)}/package-candidates`;
158
269
  let accepted;
159
270
  if (pending.candidateId) {
160
271
  const query = new URLSearchParams({ workspaceId: scope.workspaceId, operationId });
161
- accepted = receipt(await input.transport.signedGet(`${route}/${encodeURIComponent(pending.candidateId)}?${query}`), scope, operationId, snapshot.manifest.snapshotHash);
272
+ accepted = receipt(await input.transport.signedGet(`${route}/${encodeURIComponent(pending.candidateId)}?${query}`), scope, operationId, snapshot.manifest.snapshotHash, restoration?.priorReleaseId);
162
273
  }
163
274
  else {
164
- accepted = receipt(await input.transport.signedPost(route, {
165
- schema: 'dharma.repository-candidate-upload/v1', operationId, workspaceId: scope.workspaceId,
166
- repositoryBindingId: scope.repositoryBindingId, repositoryAgentId: scope.repositoryAgentId,
167
- sourceSnapshotHash: snapshot.manifest.snapshotHash, sourceManifestHash: pending.sourceManifestHash,
168
- consolidation: pending.consolidation, snapshot,
169
- }), scope, operationId, snapshot.manifest.snapshotHash);
275
+ accepted = receipt(await input.transport.signedPost(route, body), scope, operationId, snapshot.manifest.snapshotHash, restoration?.priorReleaseId);
170
276
  }
171
277
  await writeOutbox(path, { ...pending, candidateId: accepted.candidateId, state: accepted.state, releaseId: accepted.releaseId });
172
278
  return accepted;
173
279
  }
280
+ // Only reconcile an already admitted operation. This never uploads or obtains
281
+ // new restoration authority, even if the original registry write was lost.
282
+ export async function recoverRepositoryRestorationCandidate(input) {
283
+ const scope = checkedScope(input.scope);
284
+ requireFact(HASH.test(input.planHash), 'Repository restoration plan hash is invalid.');
285
+ const path = outboxPath(input.outboxRoot, scope), pending = await readOutbox(path, scope);
286
+ if (!pending?.restoration || pending.state === 'fenced' || pending.restoration.planHash !== input.planHash)
287
+ return null;
288
+ requireFact(pending.consolidation.mode === 'repository_update' && Boolean(pending.consolidation.expectedLatestSourceFingerprint)
289
+ && repositoryCandidateOperationId({ scope, snapshotHash: pending.snapshotHash,
290
+ sourceManifestHash: pending.sourceManifestHash, consolidation: pending.consolidation,
291
+ restorationAttempt: pending.restoration.attemptId, restorationContext: restorationContext(pending.restoration) }) === pending.operationId, 'Repository restoration checkpoint operation is invalid.');
292
+ const query = new URLSearchParams({ workspaceId: scope.workspaceId, operationId: pending.operationId });
293
+ const suffix = pending.candidateId ? `/${encodeURIComponent(pending.candidateId)}` : '';
294
+ const response = await input.transport.signedGet(`/agent-fabric/repository-agents/${encodeURIComponent(scope.repositoryAgentId)}/package-candidates${suffix}?${query}`);
295
+ if (!pending.candidateId && response.ok === true && response.organizationId === scope.organizationId && response.candidate === null) {
296
+ throw new Error('repository_source_restoration_upload_unresolved');
297
+ }
298
+ const candidate = receipt(response, scope, pending.operationId, pending.snapshotHash, pending.restoration.priorReleaseId);
299
+ requireFact(!pending.candidateId || candidate.candidateId === pending.candidateId, 'Repository restoration checkpoint candidate changed.');
300
+ return { candidate, sourceManifestHash: pending.sourceManifestHash, ...pending.restoration };
301
+ }
302
+ // Called only after the command's final authority, CAS and stopped-runtime
303
+ // checks. Keep restoration provenance if the following registry write fails.
304
+ export async function checkpointRepositoryRestorationCandidate(input) {
305
+ const scope = checkedScope(input.scope), recovered = input.recovered;
306
+ const path = outboxPath(input.outboxRoot, scope), pending = await readOutbox(path, scope);
307
+ const expected = restorationCheckpoint({ planHash: recovered.planHash, localSnapshotHash: recovered.localSnapshotHash,
308
+ baselineSnapshotHash: recovered.baselineSnapshotHash, previousOperationId: recovered.previousOperationId,
309
+ priorReleaseId: recovered.priorReleaseId, ...(recovered.attemptId ? { attemptId: recovered.attemptId } : {}),
310
+ ...(recovered.headCandidateId ? { headCandidateId: recovered.headCandidateId } : {}) });
311
+ requireFact(pending?.restoration && pending.state !== 'fenced' && canonicalize(pending.restoration) === canonicalize(expected)
312
+ && pending.sourceManifestHash === recovered.sourceManifestHash
313
+ && pending.consolidation.mode === 'repository_update' && Boolean(pending.consolidation.expectedLatestSourceFingerprint)
314
+ && repositoryCandidateOperationId({ scope, snapshotHash: pending.snapshotHash,
315
+ sourceManifestHash: pending.sourceManifestHash, consolidation: pending.consolidation,
316
+ restorationAttempt: pending.restoration.attemptId, restorationContext: restorationContext(pending.restoration) }) === pending.operationId, 'Repository restoration checkpoint changed.');
317
+ const candidate = receipt({ ok: true, organizationId: scope.organizationId, candidate: recovered.candidate }, scope, pending.operationId, pending.snapshotHash, pending.restoration.priorReleaseId);
318
+ requireFact(!pending.candidateId || pending.candidateId === candidate.candidateId, 'Repository restoration checkpoint candidate changed.');
319
+ requireFact(!['published', 'blocked'].includes(pending.state)
320
+ || pending.state === candidate.state && pending.releaseId === candidate.releaseId, 'Repository restoration checkpoint terminal state changed.');
321
+ await writeOutbox(path, { ...pending, ...candidate });
322
+ return candidate;
323
+ }
324
+ export async function readRepositoryRestorationAttempt(input) {
325
+ const scope = checkedScope(input.scope), pending = await readOutbox(outboxPath(input.outboxRoot, scope), scope);
326
+ return pending?.state === 'fenced' ? pending.fence.fenceId
327
+ : pending?.state === 'pending_upload' ? pending.restoration?.attemptId : undefined;
328
+ }
329
+ // Explicit recovery only: this can fence an unadmitted operation but never
330
+ // cancels admitted work, uploads source, or retires a local checkpoint.
331
+ export async function fenceRepositoryRestorationUpload(input) {
332
+ const scope = checkedScope(input.scope);
333
+ requireFact(HASH.test(input.planHash) && UUID.test(input.policyGenerationId), 'Repository restoration fence authority is invalid.');
334
+ let pending = await readOutbox(outboxPath(input.outboxRoot, scope), scope);
335
+ requireFact(pending?.restoration && pending.restoration.planHash === input.planHash
336
+ && pending.restoration.previousOperationId === input.expectedPreviousOperationId
337
+ && ['pending_upload', 'fenced'].includes(pending.state) && pending.candidateId === null
338
+ && pending.consolidation.mode === 'repository_update' && Boolean(pending.consolidation.expectedLatestSourceFingerprint)
339
+ && repositoryCandidateOperationId({ scope, snapshotHash: pending.snapshotHash, sourceManifestHash: pending.sourceManifestHash,
340
+ consolidation: pending.consolidation, restorationAttempt: pending.restoration.attemptId,
341
+ restorationContext: restorationContext(pending.restoration) }) === pending.operationId, 'Repository restoration fence checkpoint is invalid.');
342
+ const schemaDirectory = fileURLToPath(new URL('./schemas/', import.meta.url));
343
+ if (pending.state === 'fenced') {
344
+ // Containment is already durable. Reposting under a newer policy cannot
345
+ // change this receipt; the guarded checkpoint verifies the immutable archive.
346
+ requireFact((await validateContract(schemaDirectory, 'https://schemas.dharma-ai.io/repository-candidate-fence/v1#/$defs/fence', pending.fence)).ok, 'Repository restoration fence receipt schema is invalid.');
347
+ return { checkpointHash: sha256(canonicalize(pending)), pending, fence: pending.fence, candidate: null };
348
+ }
349
+ // The command holds its registry mutation lock. Persist request provenance
350
+ // before transport so response loss cannot erase the original retry binding.
351
+ const restoration = pending.restoration;
352
+ if (!pending.fenceRequestGenerationId) {
353
+ pending = { ...pending, fenceRequestGenerationId: input.policyGenerationId };
354
+ await writeOutbox(outboxPath(input.outboxRoot, scope), pending);
355
+ if (process.platform !== 'win32') {
356
+ const parent = await open(resolve(input.outboxRoot), constants.O_RDONLY | constants.O_DIRECTORY | (constants.O_NOFOLLOW || 0));
357
+ try {
358
+ await parent.sync();
359
+ }
360
+ finally {
361
+ await parent.close();
362
+ }
363
+ }
364
+ }
365
+ const body = {
366
+ schema: 'dharma.repository-candidate-fence/v1', operationId: pending.operationId,
367
+ workspaceId: scope.workspaceId, repositoryBindingId: scope.repositoryBindingId, repositoryAgentId: scope.repositoryAgentId,
368
+ sourceSnapshotHash: pending.snapshotHash, sourceManifestHash: pending.sourceManifestHash, consolidation: pending.consolidation,
369
+ requestPolicyGenerationId: pending.fenceRequestGenerationId,
370
+ ...(restoration.attemptId ? { restorationAttempt: restoration.attemptId } : {}),
371
+ ...(restorationContext(restoration) ? { restorationContext: restorationContext(restoration) } : {}),
372
+ };
373
+ requireFact((await validateContract(schemaDirectory, 'https://schemas.dharma-ai.io/repository-candidate-fence/v1', body)).ok
374
+ && Buffer.byteLength(canonicalize(body)) <= 4096, 'Repository restoration fence metadata is invalid.');
375
+ const response = await input.transport.signedPost(`/agent-fabric/repository-agents/${encodeURIComponent(scope.repositoryAgentId)}/package-candidates/fence`, body);
376
+ requireFact(response.ok === true && response.organizationId === scope.organizationId
377
+ && Object.hasOwn(response, 'candidate') && Object.hasOwn(response, 'fence')
378
+ && (response.candidate === null) !== (response.fence === null), 'Repository restoration fence response is invalid.');
379
+ const fence = response.fence === null ? null : checkedFence(response.fence, scope, pending.operationId, pending.snapshotHash, pending.sourceManifestHash, pending.fenceRequestGenerationId);
380
+ requireFact(!fence || (await validateContract(schemaDirectory, 'https://schemas.dharma-ai.io/repository-candidate-fence/v1#/$defs/fence', fence)).ok, 'Repository restoration fence receipt schema is invalid.');
381
+ const candidate = fence ? null : receipt(response, scope, pending.operationId, pending.snapshotHash, restoration.priorReleaseId);
382
+ return { checkpointHash: sha256(canonicalize(pending)), pending, fence, candidate };
383
+ }
384
+ async function archiveFencedCheckpoint(root, pending) {
385
+ requireFact(pending.state === 'fenced' && pending.fence && pending.restoration, 'Repository restoration terminal fence is required.');
386
+ const { fence, ...checkpoint } = pending;
387
+ const value = { checkpoint: { ...checkpoint, state: 'pending_upload' }, fence };
388
+ const bytes = `${canonicalize(value)}\n`, directory = resolve(root, 'fenced');
389
+ await mkdir(directory, { recursive: true, mode: 0o700 });
390
+ const directoryStat = await lstat(directory);
391
+ requireFact(directoryStat.isDirectory() && !directoryStat.isSymbolicLink(), 'Repository restoration archive directory is invalid.');
392
+ const path = resolve(directory, `${pending.scope.workspaceId}.${fence.fenceId}.json`);
393
+ const temporary = resolve(directory, `.${pending.scope.workspaceId}.${fence.fenceId}.${randomUUID()}.tmp`);
394
+ const handle = await open(temporary, constants.O_WRONLY | constants.O_CREAT | constants.O_EXCL | (constants.O_NOFOLLOW || 0), 0o600);
395
+ try {
396
+ try {
397
+ await handle.writeFile(bytes);
398
+ await handle.sync();
399
+ }
400
+ finally {
401
+ await handle.close();
402
+ }
403
+ // Publishing a fully flushed inode with a link cannot replace an existing archive.
404
+ try {
405
+ await link(temporary, path);
406
+ }
407
+ catch (error) {
408
+ if (error.code !== 'EEXIST')
409
+ throw error;
410
+ const before = await lstat(path);
411
+ requireFact(before.isFile() && !before.isSymbolicLink() && before.size <= 65_536, 'Repository restoration archive is invalid.');
412
+ const existing = await open(path, constants.O_RDONLY | (constants.O_NOFOLLOW || 0));
413
+ try {
414
+ const after = await existing.stat();
415
+ requireFact(after.isFile() && before.ino === after.ino && before.dev === after.dev && after.size <= 65_536
416
+ && await existing.readFile('utf8') === bytes, 'Repository restoration archive changed.');
417
+ }
418
+ finally {
419
+ await existing.close();
420
+ }
421
+ }
422
+ if (process.platform !== 'win32') {
423
+ const parent = await open(directory, constants.O_RDONLY | constants.O_DIRECTORY | (constants.O_NOFOLLOW || 0));
424
+ try {
425
+ await parent.sync();
426
+ }
427
+ finally {
428
+ await parent.close();
429
+ }
430
+ }
431
+ }
432
+ finally {
433
+ await rm(temporary, { force: true });
434
+ }
435
+ }
436
+ // The command invokes this only after the registry CAS, current authority and
437
+ // stopped-runtime guards. Persist the terminal archive before replacement.
438
+ export async function checkpointRepositoryRestorationFence(input) {
439
+ const scope = checkedScope(input.scope), path = outboxPath(input.outboxRoot, scope), pending = await readOutbox(path, scope);
440
+ requireFact(pending && sha256(canonicalize(pending)) === input.fenced.checkpointHash
441
+ && input.fenced.fence && input.fenced.candidate === null, 'Repository restoration fence checkpoint changed.');
442
+ const fence = checkedFence(input.fenced.fence, scope, pending.operationId, pending.snapshotHash, pending.sourceManifestHash, pending.fenceRequestGenerationId);
443
+ const next = { ...pending, state: 'fenced', fence };
444
+ await archiveFencedCheckpoint(input.outboxRoot, next);
445
+ if (canonicalize(next) !== canonicalize(pending))
446
+ await writeOutbox(path, next);
447
+ return fence;
448
+ }
174
449
  export async function pollRepositoryCandidate(input) {
175
450
  const scope = checkedScope(input.scope);
176
451
  const path = outboxPath(input.outboxRoot, scope);
177
452
  const pending = await readOutbox(path, scope);
178
- if (!pending || pending.state === 'pending_upload')
453
+ if (!pending || pending.state === 'pending_upload' || pending.state === 'fenced')
179
454
  return null;
180
455
  if (pending.state === 'published' || pending.state === 'blocked') {
456
+ requireFact(pending.state !== 'published' || pending.releaseId !== pending.restoration?.priorReleaseId, 'Repository restoration cannot reuse the archived release identity.');
181
457
  return { candidateId: pending.candidateId, operationId: pending.operationId, snapshotHash: pending.snapshotHash,
182
458
  state: pending.state, releaseId: pending.releaseId };
183
459
  }
184
460
  const route = `/agent-fabric/repository-agents/${encodeURIComponent(scope.repositoryAgentId)}/package-candidates`;
185
461
  const query = new URLSearchParams({ workspaceId: scope.workspaceId, operationId: pending.operationId });
186
- const current = receipt(await input.transport.signedGet(`${route}/${encodeURIComponent(pending.candidateId)}?${query}`), scope, pending.operationId, pending.snapshotHash);
462
+ const current = receipt(await input.transport.signedGet(`${route}/${encodeURIComponent(pending.candidateId)}?${query}`), scope, pending.operationId, pending.snapshotHash, pending.restoration?.priorReleaseId);
187
463
  await writeOutbox(path, { ...pending, candidateId: current.candidateId, state: current.state, releaseId: current.releaseId });
188
464
  return current;
189
465
  }
@@ -191,6 +467,35 @@ export async function adoptRepositoryCandidate(input) {
191
467
  const scope = checkedScope(input.scope);
192
468
  requireFact(HASH.test(input.sourceManifestHash), 'Canonical repository candidate manifest hash is invalid.');
193
469
  const candidate = receipt({ ok: true, organizationId: scope.organizationId, candidate: input.candidate }, scope, input.candidate.operationId, input.candidate.snapshotHash);
470
+ const prior = await readOutbox(outboxPath(input.outboxRoot, scope), scope);
471
+ if (prior?.state === 'fenced') {
472
+ requireFact(prior.operationId !== candidate.operationId, 'A fenced operation cannot be adopted.');
473
+ requireFact(['published', 'blocked'].includes(candidate.state), 'A fenced restoration requires a terminal canonical candidate before adoption. Retry after canonical publication completes.');
474
+ await archiveFencedCheckpoint(input.outboxRoot, prior);
475
+ // Registry adoption is not a new restoration. Keep its terminal retry
476
+ // identity active until a restoration explicitly carries this fence ID.
477
+ return candidate;
478
+ }
479
+ else if (prior?.restoration) {
480
+ requireFact(['published', 'blocked'].includes(prior.state), 'An unresolved restoration checkpoint cannot be replaced by adoption.');
481
+ if (prior.operationId === candidate.operationId) {
482
+ requireFact(prior.candidateId === candidate.candidateId && prior.snapshotHash === candidate.snapshotHash
483
+ && prior.sourceManifestHash === input.sourceManifestHash && prior.state === candidate.state && prior.releaseId === candidate.releaseId
484
+ && prior.consolidation.mode === input.consolidationMode, 'Restoration adoption changed its checkpoint.');
485
+ requireFact(prior.consolidation.mode === 'repository_update' && Boolean(prior.consolidation.expectedLatestSourceFingerprint)
486
+ && repositoryCandidateOperationId({ scope, snapshotHash: prior.snapshotHash,
487
+ sourceManifestHash: prior.sourceManifestHash, consolidation: prior.consolidation,
488
+ restorationAttempt: prior.restoration.attemptId, restorationContext: restorationContext(prior.restoration) }) === prior.operationId, 'Repository restoration checkpoint operation is invalid.');
489
+ requireFact(candidate.state !== 'published' || candidate.releaseId !== prior.restoration.priorReleaseId, 'Repository restoration cannot reuse the archived release identity.');
490
+ // Internal save metadata only; never add it to a signed candidate receipt.
491
+ return { ...candidate, restorationRegistryBaseline: {
492
+ localBaselineSnapshotHash: prior.state === 'blocked' ? prior.restoration.baselineSnapshotHash : prior.restoration.localSnapshotHash,
493
+ publishedLocalSnapshotHash: prior.state === 'published' ? prior.restoration.localSnapshotHash : prior.restoration.baselineSnapshotHash,
494
+ pendingLocalSnapshotHash: null, pendingLocalOperationId: null,
495
+ } };
496
+ }
497
+ assertRestorationReconciled(prior);
498
+ }
194
499
  requireFact(candidate.state !== 'accepted' || candidate.candidateId !== null, 'Canonical repository candidate is incomplete.');
195
500
  await writeOutbox(outboxPath(input.outboxRoot, scope), {
196
501
  schema: 'dharma.repository-candidate-outbox/v1', scope, operationId: candidate.operationId,
@@ -1 +1 @@
1
- {"version":3,"file":"repositoryCandidateSync.js","sourceRoot":"","sources":["../src/repositoryCandidateSync.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"repositoryCandidateSync.js","sourceRoot":"","sources":["../src/repositoryCandidateSync.ts"],"names":[],"mappings":"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"}