@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.
- package/dist/index.d.ts +74 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +296 -12
- package/dist/index.js.map +1 -1
- package/dist/namedSessionNativeAudit.d.ts +20 -25
- package/dist/namedSessionNativeAudit.d.ts.map +1 -1
- package/dist/namedSessionNativeAudit.js.map +1 -1
- package/dist/repositoryCandidateSync.d.ts +109 -2
- package/dist/repositoryCandidateSync.d.ts.map +1 -1
- package/dist/repositoryCandidateSync.js +327 -22
- package/dist/repositoryCandidateSync.js.map +1 -1
- package/dist/repositoryCandidateSync.test.js +912 -6
- package/dist/repositoryCandidateSync.test.js.map +1 -1
- package/dist/repositoryKnowledgeRetention.test.js +319 -3
- package/dist/repositoryKnowledgeRetention.test.js.map +1 -1
- package/dist/repositorySourceInventoryClient.d.ts +1 -0
- package/dist/repositorySourceInventoryClient.d.ts.map +1 -1
- package/dist/repositorySourceInventoryClient.js +4 -1
- package/dist/repositorySourceInventoryClient.js.map +1 -1
- package/dist/repositorySourceRestoration.d.ts +47 -0
- package/dist/repositorySourceRestoration.d.ts.map +1 -0
- package/dist/repositorySourceRestoration.js +140 -0
- package/dist/repositorySourceRestoration.js.map +1 -0
- package/dist/repositorySourceRestorationCommand.test.d.ts +2 -0
- package/dist/repositorySourceRestorationCommand.test.d.ts.map +1 -0
- package/dist/repositorySourceRestorationCommand.test.js +754 -0
- package/dist/repositorySourceRestorationCommand.test.js.map +1 -0
- package/dist/repositorySourceSync.d.ts +1 -0
- package/dist/repositorySourceSync.d.ts.map +1 -1
- package/dist/repositorySourceSync.js +10 -4
- package/dist/repositorySourceSync.js.map +1 -1
- package/dist/repositorySourceSync.test.js +38 -4
- package/dist/repositorySourceSync.test.js.map +1 -1
- package/dist/schemas/repository-candidate-fence-v1.schema.json +55 -0
- package/dist/schemas/repository-candidate-upload-v1.schema.json +60 -0
- package/dist/schemas/repository-knowledge-restoration-v1.schema.json +16 -0
- package/dist/schemas/task-action.schema.json +1 -1
- package/dist/schemas/task-envelope.schema.json +5 -1
- package/dist/usage.d.ts.map +1 -1
- package/dist/usage.js +3 -1
- package/dist/usage.js.map +1 -1
- package/package.json +5 -5
|
@@ -1,17 +1,49 @@
|
|
|
1
1
|
import { constants } from 'node:fs';
|
|
2
|
-
import {
|
|
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 {
|
|
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)
|
|
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
|
|
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) <=
|
|
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
|
|
141
|
-
|
|
142
|
-
|
|
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)
|
|
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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"}
|