@paradigma-inc/flywheel 0.2.66 → 0.2.68
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/package.json +1 -1
- package/src/runtime/vendor/flywheel-cli-dist/commands/registry/repository.js +21 -12
- package/src/runtime/vendor/flywheel-cli-dist/commands/registry/repository.js.map +1 -1
- package/src/runtime/vendor/flywheel-cli-dist/commands/repository-operation.js +2 -0
- package/src/runtime/vendor/flywheel-cli-dist/commands/repository-operation.js.map +1 -1
- package/src/runtime/vendor/flywheel-cli-dist/commands/repository-output.js +72 -0
- package/src/runtime/vendor/flywheel-cli-dist/commands/repository-output.js.map +1 -1
- package/src/runtime/vendor/flywheel-cli-dist/local/domain/models/tags.js +3 -1
- package/src/runtime/vendor/flywheel-cli-dist/local/domain/models/tags.js.map +1 -1
- package/src/runtime/vendor/flywheel-cli-dist/local/domain/rebase/conflict-view.js +300 -0
- package/src/runtime/vendor/flywheel-cli-dist/local/domain/rebase/conflict-view.js.map +1 -0
- package/src/runtime/vendor/flywheel-cli-dist/local/domain/rebase/conflicts.js +74 -25
- package/src/runtime/vendor/flywheel-cli-dist/local/domain/rebase/conflicts.js.map +1 -1
- package/src/runtime/vendor/flywheel-cli-dist/local/domain/rebase/edge-restoration.js +4 -50
- package/src/runtime/vendor/flywheel-cli-dist/local/domain/rebase/edge-restoration.js.map +1 -1
- package/src/runtime/vendor/flywheel-cli-dist/local/domain/rebase/keys.js +2 -3
- package/src/runtime/vendor/flywheel-cli-dist/local/domain/rebase/keys.js.map +1 -1
- package/src/runtime/vendor/flywheel-cli-dist/local/domain/rebase/local-replay.js +6 -0
- package/src/runtime/vendor/flywheel-cli-dist/local/domain/rebase/local-replay.js.map +1 -0
- package/src/runtime/vendor/flywheel-cli-dist/local/domain/rebase/pull.js +1 -7
- package/src/runtime/vendor/flywheel-cli-dist/local/domain/rebase/pull.js.map +1 -1
- package/src/runtime/vendor/flywheel-cli-dist/local/domain/rebase/pulled-artifacts.js +126 -0
- package/src/runtime/vendor/flywheel-cli-dist/local/domain/rebase/pulled-artifacts.js.map +1 -0
- package/src/runtime/vendor/flywheel-cli-dist/local/domain/rebase/pulled-state.js +423 -0
- package/src/runtime/vendor/flywheel-cli-dist/local/domain/rebase/pulled-state.js.map +1 -0
- package/src/runtime/vendor/flywheel-cli-dist/local/domain/rebase/replay-walk.js +133 -0
- package/src/runtime/vendor/flywheel-cli-dist/local/domain/rebase/replay-walk.js.map +1 -0
- package/src/runtime/vendor/flywheel-cli-dist/local/domain/rebase/replay.js +47 -127
- package/src/runtime/vendor/flywheel-cli-dist/local/domain/rebase/replay.js.map +1 -1
- package/src/runtime/vendor/flywheel-cli-dist/local/domain/rebase/resolve.js +240 -9
- package/src/runtime/vendor/flywheel-cli-dist/local/domain/rebase/resolve.js.map +1 -1
- package/src/runtime/vendor/flywheel-cli-dist/local/domain/rebase/tag-holders.js +78 -0
- package/src/runtime/vendor/flywheel-cli-dist/local/domain/rebase/tag-holders.js.map +1 -0
- package/src/runtime/vendor/flywheel-cli-dist/local/runtime/bootstrap.js +40 -1
- package/src/runtime/vendor/flywheel-cli-dist/local/runtime/bootstrap.js.map +1 -1
- package/src/runtime/vendor/flywheel-cli-dist/local/runtime/operations/conflicts.js +4 -9
- package/src/runtime/vendor/flywheel-cli-dist/local/runtime/operations/conflicts.js.map +1 -1
- package/src/runtime/vendor/flywheel-cli-dist/local/runtime/operations/core.js +1 -1
- package/src/runtime/vendor/flywheel-cli-dist/local/runtime/operations/core.js.map +1 -1
- package/src/runtime/vendor/flywheel-cli-dist/local/runtime/remote/push.js +9 -2
- package/src/runtime/vendor/flywheel-cli-dist/local/runtime/remote/push.js.map +1 -1
- package/src/runtime/vendor/flywheel-cli-dist/local/store/backup/restore.js +2 -0
- package/src/runtime/vendor/flywheel-cli-dist/local/store/backup/restore.js.map +1 -1
- package/src/runtime/vendor/flywheel-cli-dist/local/store/pending.js +79 -8
- package/src/runtime/vendor/flywheel-cli-dist/local/store/pending.js.map +1 -1
- package/src/runtime/vendor/flywheel-cli-dist/local/store/projection/artifacts.js +2 -1
- package/src/runtime/vendor/flywheel-cli-dist/local/store/projection/artifacts.js.map +1 -1
- package/src/runtime/vendor/flywheel-cli-dist/local/store/projection/tags.js +4 -2
- package/src/runtime/vendor/flywheel-cli-dist/local/store/projection/tags.js.map +1 -1
- package/src/runtime/vendor/flywheel-cli-dist/prebuilds/darwin-arm64/node.napi.node +0 -0
- package/src/runtime/vendor/flywheel-cli-dist/prebuilds/darwin-x64/node.napi.node +0 -0
- package/src/runtime/vendor/manifest.json +13 -1
|
@@ -3,20 +3,23 @@ import { RepositoryServiceError } from "../errors.js";
|
|
|
3
3
|
import { isRecord, isUuid } from "../models/constants.js";
|
|
4
4
|
import { RepositoryCommit } from "../models/commits.js";
|
|
5
5
|
import { RepositoryOperation } from "../models/operations.js";
|
|
6
|
-
import {
|
|
6
|
+
import { foldArtifactPropertiesOperation, legacyArtifactMetadata, legacyArtifactProperties, parseArtifactProperties } from "../models/artifact-properties.js";
|
|
7
7
|
import { parseRepositoryJson, valueDigest } from "../models/encoding.js";
|
|
8
8
|
import { artifactDigests, latestStateDigests } from "../service/writes.js";
|
|
9
9
|
import { LatestValueWrite } from "../../store/contract.js";
|
|
10
10
|
import { latestValueWrites } from "../../store/latest-values.js";
|
|
11
|
-
import {
|
|
11
|
+
import { pulledSnapshotTables } from "../../store/snapshot/hosted.js";
|
|
12
|
+
import { operationFailureMessage } from "../models/operation-identity.js";
|
|
12
13
|
import { snapshotLatestValue } from "../../store/sync-commits.js";
|
|
14
|
+
import { RepositoryStoreError } from "../../store/sqlite/errors.js";
|
|
13
15
|
import { snapshotTables } from "../../store/snapshot/validate.js";
|
|
14
16
|
import { conflictContext, conflictResolutionByKey, conflictsForContext, graphMembershipReplayPlan, recheckConflicts, resolutionDigest } from "./conflicts.js";
|
|
15
17
|
import { RepositoryRebaseError } from "./context.js";
|
|
16
|
-
import {
|
|
18
|
+
import { restoreRefusal } from "./edge-restoration.js";
|
|
17
19
|
import { NO_GRAPH_MEMBERSHIP_PLAN } from "./graph-membership.js";
|
|
18
20
|
import { operationKey } from "./keys.js";
|
|
19
21
|
import { extendRebaseContext, pullBatch } from "./pull.js";
|
|
22
|
+
import { ReplayWalk } from "./replay-walk.js";
|
|
20
23
|
function commitTimestamp(clock) {
|
|
21
24
|
const value = clock();
|
|
22
25
|
if (!(value instanceof Date) || Number.isNaN(value.valueOf()))
|
|
@@ -123,38 +126,6 @@ export function requireRebase(workspace, rebaseId, expectedHead) {
|
|
|
123
126
|
}
|
|
124
127
|
return workspace.rebase;
|
|
125
128
|
}
|
|
126
|
-
function referenceSetsFromSnapshot(snapshot) {
|
|
127
|
-
try {
|
|
128
|
-
const projection = parseRepositoryJson(Buffer.from(snapshot.canonicalBytes).toString("utf8"));
|
|
129
|
-
const rows = isRecord(projection) && isRecord(projection.tables)
|
|
130
|
-
? projection.tables.repository_artifact_references
|
|
131
|
-
: isRecord(projection) && (projection.format === "flywheel.repository.projection.v1" || projection.format === "flywheel.repository.projection.v2" ||
|
|
132
|
-
projection.format === "flywheel.repository.projection.v3" || projection.format === "flywheel.repository.projection.v4")
|
|
133
|
-
? projection.artifact_references : (() => { throw new Error(); })();
|
|
134
|
-
const sets = new Map();
|
|
135
|
-
for (const row of rows) {
|
|
136
|
-
const value = Array.isArray(row)
|
|
137
|
-
? { artifact_id: row[1], owner_type: row[2], owner_id: row[3], order: row[6] }
|
|
138
|
-
: isRecord(row)
|
|
139
|
-
? { artifact_id: row.artifact_id, owner_type: row.owner_kind, owner_id: row.owner_id, order: row.reference_order }
|
|
140
|
-
: null;
|
|
141
|
-
if (value === null || !isUuid(value.artifact_id) || (value.owner_type !== "node" && value.owner_type !== "edge") ||
|
|
142
|
-
!isUuid(value.owner_id) || (typeof value.order !== "number" && typeof value.order !== "bigint") ||
|
|
143
|
-
(typeof value.order === "number" && (!Number.isSafeInteger(value.order) || value.order < 0)) || value.order < 0)
|
|
144
|
-
throw new Error();
|
|
145
|
-
const owners = sets.get(value.artifact_id) ?? new Map();
|
|
146
|
-
const key = `${value.owner_type}\u0000${value.owner_id}`;
|
|
147
|
-
if (owners.has(key))
|
|
148
|
-
throw new Error();
|
|
149
|
-
owners.set(key, value.order);
|
|
150
|
-
sets.set(value.artifact_id, owners);
|
|
151
|
-
}
|
|
152
|
-
return sets;
|
|
153
|
-
}
|
|
154
|
-
catch (error) {
|
|
155
|
-
throw new RepositoryServiceError("remote artifact references are invalid", { cause: error });
|
|
156
|
-
}
|
|
157
|
-
}
|
|
158
129
|
function artifactPropertiesFromSnapshot(snapshot) {
|
|
159
130
|
try {
|
|
160
131
|
const projection = parseRepositoryJson(Buffer.from(snapshot.canonicalBytes).toString("utf8"));
|
|
@@ -186,31 +157,15 @@ function artifactPropertiesFromSnapshot(snapshot) {
|
|
|
186
157
|
throw new RepositoryServiceError("remote artifact properties are invalid", { cause: error });
|
|
187
158
|
}
|
|
188
159
|
}
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
if (operation.type === "artifact.attach.v1" || operation.type === "artifact.attach.v2") {
|
|
192
|
-
const owner = payload.owner;
|
|
193
|
-
if (!isRecord(owner) || !isUuid(payload.artifact_id) || !isUuid(owner.owner_id) ||
|
|
194
|
-
(owner.owner_type !== "node" && owner.owner_type !== "edge") ||
|
|
195
|
-
(typeof payload.order !== "number" && typeof payload.order !== "bigint")) {
|
|
196
|
-
throw new RepositoryServiceError("local artifact reference is invalid");
|
|
197
|
-
}
|
|
198
|
-
const owners = referenceSets.get(payload.artifact_id) ?? new Map();
|
|
199
|
-
owners.set(`${owner.owner_type}\u0000${owner.owner_id}`, payload.order);
|
|
200
|
-
referenceSets.set(payload.artifact_id, owners);
|
|
201
|
-
}
|
|
202
|
-
else if (operation.type === "artifact.detach.v1") {
|
|
203
|
-
const owner = payload.owner;
|
|
204
|
-
if (!isRecord(owner) || !isUuid(payload.artifact_id) || !isUuid(owner.owner_id) ||
|
|
205
|
-
(owner.owner_type !== "node" && owner.owner_type !== "edge"))
|
|
206
|
-
throw new RepositoryServiceError("local artifact reference is invalid");
|
|
207
|
-
referenceSets.get(payload.artifact_id)?.delete(`${owner.owner_type}\u0000${owner.owner_id}`);
|
|
208
|
-
}
|
|
209
|
-
}
|
|
210
|
-
function latestTarget(operation) {
|
|
160
|
+
/** The latest-value field an operation writes, with the digest of its new value. */
|
|
161
|
+
export function latestTarget(operation) {
|
|
211
162
|
const payload = operation.payload;
|
|
212
163
|
if (operation.type === "node.field.set.v1")
|
|
213
164
|
return ["node", payload.node_id, payload.field, payload.new_digest];
|
|
165
|
+
if (operation.type === "artifact.attach.v2")
|
|
166
|
+
return ["artifact", payload.artifact_id, "properties", payload.properties_digest];
|
|
167
|
+
if (operation.type === "edge.add.v1")
|
|
168
|
+
return ["edge", payload.edge_id, "content", payload.content_digest];
|
|
214
169
|
if (operation.type === "edge.field.set.v1")
|
|
215
170
|
return ["edge", payload.edge_id, "content", payload.new_digest];
|
|
216
171
|
if (operation.type === "artifact.metadata.set.v1")
|
|
@@ -219,8 +174,13 @@ function latestTarget(operation) {
|
|
|
219
174
|
return ["artifact", payload.artifact_id, "properties", payload.new_digest];
|
|
220
175
|
return undefined;
|
|
221
176
|
}
|
|
222
|
-
/**
|
|
223
|
-
|
|
177
|
+
/**
|
|
178
|
+
* The latest values an original local operation recorded, recovered from the
|
|
179
|
+
* local snapshot when its commit kept none. An attachment's properties text is
|
|
180
|
+
* only needed when the attachment creates the artifact, which the store checks,
|
|
181
|
+
* so an attachment whose text is gone replays without it.
|
|
182
|
+
*/
|
|
183
|
+
export function localWrites(operation, originalWrites, localTables) {
|
|
224
184
|
if (originalWrites?.size === 0) {
|
|
225
185
|
const target = latestTarget(operation);
|
|
226
186
|
if (!target)
|
|
@@ -233,6 +193,8 @@ function localWrites(operation, originalWrites, localTables) {
|
|
|
233
193
|
return new Map([[JSON.stringify(write.key), write]]);
|
|
234
194
|
}
|
|
235
195
|
catch (error) {
|
|
196
|
+
if (error instanceof RepositoryStoreError && operation.type === "artifact.attach.v2")
|
|
197
|
+
return new Map();
|
|
236
198
|
const reason = error instanceof Error ? error.message : "local rebase latest value is unavailable";
|
|
237
199
|
throw new RepositoryServiceError(operationFailureMessage(operation, reason), { cause: error });
|
|
238
200
|
}
|
|
@@ -247,61 +209,44 @@ export function rebaseLocalCommits(localCommitsNewestFirst, targetHead, rebaseId
|
|
|
247
209
|
let parent = targetHead;
|
|
248
210
|
const commits = [];
|
|
249
211
|
const latestValuesByCommit = [];
|
|
212
|
+
const sources = new Map();
|
|
250
213
|
let localTables;
|
|
251
214
|
const loadLocalTables = () => localTables ??= snapshotTables(localSnapshot);
|
|
252
215
|
const fieldResolutionHeads = new Map();
|
|
253
|
-
const referenceSets = referenceSetsFromSnapshot(remoteSnapshot);
|
|
254
216
|
const artifactProperties = artifactPropertiesFromSnapshot(remoteSnapshot);
|
|
255
|
-
const
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
217
|
+
const walk = new ReplayWalk({
|
|
218
|
+
localCommitsNewestFirst, resolutions, graphMembership, repositoryId: remoteSnapshot.repositoryId,
|
|
219
|
+
remoteTables: pulledSnapshotTables(remoteSnapshot), localTables: loadLocalTables, rebaseId,
|
|
220
|
+
});
|
|
259
221
|
for (const original of [...localCommitsNewestFirst].reverse()) {
|
|
260
222
|
const originalWrites = localLatestValues.get(original.commitId);
|
|
261
223
|
const serializedWrites = [];
|
|
262
224
|
const operations = [];
|
|
263
|
-
for (const
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
applyReferenceOperation(referenceSets, restored);
|
|
268
|
-
}
|
|
269
|
-
if (graphMembership.drop.has(operation.operationId))
|
|
270
|
-
continue;
|
|
271
|
-
if (localOperationNodeIds(operation).some(nodeId => remoteDepartureNodes.has(nodeId)))
|
|
272
|
-
continue;
|
|
273
|
-
const edgeId = edgeDependency(operation);
|
|
274
|
-
const targetArtifactId = operation.type.startsWith("artifact.") ? operation.payload.artifact_id : undefined;
|
|
275
|
-
if (edgeId !== undefined && removed.discarded.has(edgeId)) {
|
|
276
|
-
if (targetArtifactId !== undefined)
|
|
277
|
-
discardedArtifacts.add(targetArtifactId);
|
|
225
|
+
for (const step of walk.commitSteps(original)) {
|
|
226
|
+
if (step.kind === "inserted") {
|
|
227
|
+
operations.push(step.operation);
|
|
228
|
+
sources.set(step.operation.operationId, step.original);
|
|
278
229
|
continue;
|
|
279
230
|
}
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
const [strategy, manualValue, remoteDigest] = resolution ?? ["local", null, null];
|
|
290
|
-
if (strategy === "remote")
|
|
291
|
-
continue;
|
|
292
|
-
const restoration = edgeId === undefined ? undefined : pendingRestorations.get(edgeId);
|
|
293
|
-
if (restoration !== undefined) {
|
|
294
|
-
pendingRestorations.delete(restoration.edgeId);
|
|
295
|
-
const { commit, operation: firstEdit } = restoration.firstEdit;
|
|
296
|
-
operations.push(restoredEdgeOperation(restoration, randomUUID()));
|
|
231
|
+
if (step.kind === "refused") {
|
|
232
|
+
throw step.restoration === undefined
|
|
233
|
+
? new RepositoryServiceError(operationFailureMessage(step.original, step.problem))
|
|
234
|
+
: restoreRefusal(step.restoration.edgeId, rebaseId, step.problem, step.details);
|
|
235
|
+
}
|
|
236
|
+
if (step.kind === "restored") {
|
|
237
|
+
const { commit, operation: firstEdit } = step.restoration.firstEdit;
|
|
238
|
+
operations.push(step.operation);
|
|
239
|
+
sources.set(step.operation.operationId, step.original);
|
|
297
240
|
for (const write of localWrites(firstEdit, localLatestValues.get(commit.commitId), loadLocalTables).values()) {
|
|
298
241
|
serializedWrites.push(write.canonicalBytes);
|
|
299
242
|
}
|
|
300
|
-
fieldResolutionHeads.set(JSON.stringify(["edge", restoration.edgeId]), firstEdit.payload.new_digest);
|
|
301
|
-
}
|
|
302
|
-
if (edgeId !== undefined && removed.restorations.get(edgeId)?.firstEdit.operation.operationId === operation.operationId)
|
|
243
|
+
fieldResolutionHeads.set(JSON.stringify(["edge", step.restoration.edgeId]), firstEdit.payload.new_digest);
|
|
303
244
|
continue;
|
|
304
|
-
|
|
245
|
+
}
|
|
246
|
+
const { original: operation, resolution, rewrite } = step;
|
|
247
|
+
const key = operationKey(operation);
|
|
248
|
+
const [strategy, manualValue, remoteDigest] = resolution ?? ["local", null, null];
|
|
249
|
+
const mapping = { ...operation.toMapping(), ...rewrite, operation_id: randomUUID() };
|
|
305
250
|
let writes;
|
|
306
251
|
if (strategy === "manual") {
|
|
307
252
|
if (manualValue === null)
|
|
@@ -343,22 +288,12 @@ export function rebaseLocalCommits(localCommitsNewestFirst, targetHead, rebaseId
|
|
|
343
288
|
throw new RepositoryServiceError("field conflict new digest is invalid");
|
|
344
289
|
fieldResolutionHeads.set(JSON.stringify(key), mapping[newName]);
|
|
345
290
|
}
|
|
346
|
-
if (Object.hasOwn(mapping, "expected_reference_digest")) {
|
|
347
|
-
const artifactId = mapping.artifact_id;
|
|
348
|
-
if (typeof artifactId !== "string")
|
|
349
|
-
throw new RepositoryServiceError("artifact conflict reference is invalid");
|
|
350
|
-
const references = referenceSets.get(artifactId) ?? new Map();
|
|
351
|
-
mapping.expected_reference_digest = artifactReferenceSetDigest([...references.entries()].map(([owner, order]) => {
|
|
352
|
-
const [owner_type, owner_id] = owner.split("\u0000");
|
|
353
|
-
return { owner_type: owner_type, owner_id, order };
|
|
354
|
-
}));
|
|
355
|
-
}
|
|
356
291
|
}
|
|
357
292
|
const rebased = RepositoryOperation.fromMapping(mapping);
|
|
358
293
|
operations.push(rebased);
|
|
294
|
+
sources.set(rebased.operationId, operation);
|
|
359
295
|
for (const write of writes.values())
|
|
360
296
|
serializedWrites.push(write.canonicalBytes);
|
|
361
|
-
applyReferenceOperation(referenceSets, rebased);
|
|
362
297
|
if (rebased.type.startsWith("artifact.")) {
|
|
363
298
|
const properties = foldArtifactPropertiesOperation(artifactProperties.get(rebased.payload.artifact_id), rebased, writes);
|
|
364
299
|
if (properties !== undefined)
|
|
@@ -377,7 +312,7 @@ export function rebaseLocalCommits(localCommitsNewestFirst, targetHead, rebaseId
|
|
|
377
312
|
latestValuesByCommit.push(serializedWrites);
|
|
378
313
|
parent = commit.commitId;
|
|
379
314
|
}
|
|
380
|
-
return { commits, latestValuesByCommit };
|
|
315
|
+
return { commits, latestValuesByCommit, sources };
|
|
381
316
|
}
|
|
382
317
|
export async function loadRebaseLatestValues(store, repositoryId, commits) {
|
|
383
318
|
const values = new Map();
|
|
@@ -392,19 +327,4 @@ export async function loadRebaseLatestValues(store, repositoryId, commits) {
|
|
|
392
327
|
}
|
|
393
328
|
return values;
|
|
394
329
|
}
|
|
395
|
-
function remoteDepartureNodeIds(resolutions) {
|
|
396
|
-
const nodeIds = new Set();
|
|
397
|
-
for (const [key, [strategy]] of resolutions) {
|
|
398
|
-
if (key.length === 3 && key[0] === "departure" && strategy === "remote")
|
|
399
|
-
nodeIds.add(key[1]);
|
|
400
|
-
}
|
|
401
|
-
return nodeIds;
|
|
402
|
-
}
|
|
403
|
-
function resolutionFor(resolutions, key) {
|
|
404
|
-
for (const [candidate, resolution] of resolutions) {
|
|
405
|
-
if (candidate.length === key.length && candidate.every((value, index) => value === key[index]))
|
|
406
|
-
return resolution;
|
|
407
|
-
}
|
|
408
|
-
return undefined;
|
|
409
|
-
}
|
|
410
330
|
//# sourceMappingURL=replay.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"replay.js","sourceRoot":"","sources":["../../../../src/local/domain/rebase/replay.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"replay.js","sourceRoot":"","sources":["../../../../src/local/domain/rebase/replay.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,238 @@
|
|
|
1
1
|
import { RepositoryServiceError } from "../errors.js";
|
|
2
2
|
import { isUuid } from "../models/constants.js";
|
|
3
|
-
import { conflictContext, graphMembershipReplayPlan, resolutionDigest, resolveConflictBytes } from "./conflicts.js";
|
|
3
|
+
import { conflictContext, conflictMapping, conflictResolutionByKey, graphMembershipReplayPlan, localOperationIds, resolutionDigest, resolveConflictBytes, } from "./conflicts.js";
|
|
4
4
|
import { RepositoryRebaseError } from "./context.js";
|
|
5
|
-
import {
|
|
5
|
+
import { restoreRefusal } from "./edge-restoration.js";
|
|
6
|
+
import { GRAPH_MEMBERSHIP } from "./graph-membership.js";
|
|
7
|
+
import { pulledDepartures } from "./pull.js";
|
|
8
|
+
import { loadRebaseLatestValues, localWrites, rebaseLocalCommits } from "./replay.js";
|
|
9
|
+
import { ReplayWalk } from "./replay-walk.js";
|
|
10
|
+
import { operationKey } from "./keys.js";
|
|
11
|
+
import { tagHolderKey } from "./tag-holders.js";
|
|
12
|
+
import { TrialGraph } from "../../store/pending.js";
|
|
13
|
+
import { pulledSnapshotTables } from "../../store/snapshot/hosted.js";
|
|
14
|
+
import { snapshotTables } from "../../store/snapshot/validate.js";
|
|
15
|
+
import { RepositoryStoreError } from "../../store/sqlite/errors.js";
|
|
16
|
+
function choiceRefusal(conflict, strategy, problem, details) {
|
|
17
|
+
return new RepositoryServiceError(`Cannot keep the local change in conflict ${conflict.conflictId}: ${problem}`, {
|
|
18
|
+
code: "repository_conflict_choice_unavailable",
|
|
19
|
+
details: { conflict_id: conflict.conflictId, strategy, ...details },
|
|
20
|
+
nextAction: `Keep the pulled change with flywheel repo:conflicts:resolve ${conflict.conflictId} --strategy remote, ` +
|
|
21
|
+
`or abandon the pull with flywheel repo:rebase:abort ${conflict.rebaseId}.`,
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* What every choice check of one open rebase reads, built once per
|
|
26
|
+
* repo:conflicts:list or repo:conflicts:resolve: the rebase context, each
|
|
27
|
+
* local commit's stored latest values, both snapshots' tables (decoded when
|
|
28
|
+
* first needed, then shared; replay only reads them), and the copy of the
|
|
29
|
+
* pulled graph the last choice's trial replay runs on. Close it when done.
|
|
30
|
+
*/
|
|
31
|
+
export class ChoiceCheckInputs {
|
|
32
|
+
context;
|
|
33
|
+
localLatestValues;
|
|
34
|
+
trial;
|
|
35
|
+
#remoteTables;
|
|
36
|
+
#localTables;
|
|
37
|
+
constructor(context, localLatestValues) {
|
|
38
|
+
this.context = context;
|
|
39
|
+
this.localLatestValues = localLatestValues;
|
|
40
|
+
this.trial = new TrialGraph(context.remoteSnapshot);
|
|
41
|
+
}
|
|
42
|
+
remoteTables() {
|
|
43
|
+
return this.#remoteTables ??= pulledSnapshotTables(this.context.remoteSnapshot);
|
|
44
|
+
}
|
|
45
|
+
localTables() {
|
|
46
|
+
return this.#localTables ??= snapshotTables(this.context.localSnapshot);
|
|
47
|
+
}
|
|
48
|
+
close() {
|
|
49
|
+
this.trial.close();
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* With every conflict decided, runs the replay repo:rebase:continue will run
|
|
54
|
+
* and tries its commits on a copy of the pulled graph (TrialGraph), so a choice
|
|
55
|
+
* is refused whenever continue would fail, not only when a rule predicts it.
|
|
56
|
+
*/
|
|
57
|
+
function trialRefusal(inputs, resolutions, graph, rebaseId, choiceFor) {
|
|
58
|
+
const { context } = inputs;
|
|
59
|
+
let rebased;
|
|
60
|
+
try {
|
|
61
|
+
rebased = rebaseLocalCommits(context.localCommits, context.targetHead, rebaseId, resolutions, () => new Date(), context.remoteSnapshot, inputs.localLatestValues, context.localSnapshot, graph);
|
|
62
|
+
}
|
|
63
|
+
catch (error) {
|
|
64
|
+
if (!(error instanceof RepositoryServiceError) && !(error instanceof RepositoryStoreError))
|
|
65
|
+
throw error;
|
|
66
|
+
return { conflict: undefined, operation: undefined, problem: `continue would fail: ${error.message}`, details: { reason: "replay_failed" } };
|
|
67
|
+
}
|
|
68
|
+
const failure = inputs.trial.try(rebased.commits, rebased.latestValuesByCommit);
|
|
69
|
+
if (failure === undefined)
|
|
70
|
+
return undefined;
|
|
71
|
+
const original = failure.operation === undefined ? undefined : rebased.sources.get(failure.operation.operationId);
|
|
72
|
+
if (original === undefined) {
|
|
73
|
+
return { conflict: undefined, operation: undefined, problem: `continue would fail: ${failure.error.message}`, details: { reason: "replay_failed" } };
|
|
74
|
+
}
|
|
75
|
+
// The store names the rebased copy of the operation; its cause holds the plain reason.
|
|
76
|
+
const reason = failure.error.cause instanceof Error ? failure.error.cause.message : failure.error.message;
|
|
77
|
+
return {
|
|
78
|
+
conflict: choiceFor(original), operation: original,
|
|
79
|
+
problem: `local operation ${original.operationId} (${original.type}) cannot be applied on the pulled history: ${reason}`,
|
|
80
|
+
details: { reason: "replay_failed", operation_id: original.operationId },
|
|
81
|
+
};
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Walks the local operations as replay will with every recorded choice in
|
|
85
|
+
* `conflicts` (replay-walk.ts) and returns the first refusal, if any, with the
|
|
86
|
+
* recorded choice it comes from. Operations of a conflict still open are walked
|
|
87
|
+
* as if kept locally but never refuse (they are skipped instead); their own
|
|
88
|
+
* check runs once that conflict is resolved. A kept local operation from a
|
|
89
|
+
* commit that stored no latest values takes its text from the local snapshot,
|
|
90
|
+
* as in replay (`localLatestValues` holds each local commit's stored values),
|
|
91
|
+
* so that text must still be there. A node a replayed tombstone leaves
|
|
92
|
+
* tombstoned must also end up free of lineage, as the store checks after the
|
|
93
|
+
* whole batch, and an edge a recorded choice adds (or adds back) must not end
|
|
94
|
+
* up next to an equivalent edge, which the service refuses when it is pushed.
|
|
95
|
+
* Once every conflict is decided, the replay itself is tried (trialRefusal).
|
|
96
|
+
*/
|
|
97
|
+
function replayRefusal(inputs, conflicts, graph, rebaseId) {
|
|
98
|
+
const { context } = inputs;
|
|
99
|
+
const resolved = conflicts.filter(conflict => conflict.state === "resolved");
|
|
100
|
+
// One entry per recorded choice; conflictResolutionByKey validates each recorded resolution.
|
|
101
|
+
const resolutions = new Map();
|
|
102
|
+
const choices = new Map(resolved.map(conflict => {
|
|
103
|
+
const [[key, resolution]] = conflictResolutionByKey([conflict]);
|
|
104
|
+
resolutions.set(key, resolution);
|
|
105
|
+
return [JSON.stringify(key), conflict];
|
|
106
|
+
}));
|
|
107
|
+
const undecided = new Set(conflicts.filter(conflict => conflict.state !== "resolved").flatMap(localOperationIds));
|
|
108
|
+
// The edge work of a graph_membership conflict has its own keys; the recorded choice keeps whatever the plan does not drop.
|
|
109
|
+
const membership = new Map(resolved.filter(conflict => conflictMapping(conflict).kind === GRAPH_MEMBERSHIP)
|
|
110
|
+
.flatMap(conflict => localOperationIds(conflict).map(operationId => [operationId, conflict])));
|
|
111
|
+
const choiceFor = (operation) => {
|
|
112
|
+
const holderKey = tagHolderKey(operation);
|
|
113
|
+
return (holderKey === undefined ? undefined : choices.get(JSON.stringify(holderKey))) ??
|
|
114
|
+
choices.get(JSON.stringify(operationKey(operation))) ?? membership.get(operation.operationId);
|
|
115
|
+
};
|
|
116
|
+
const localTables = () => inputs.localTables();
|
|
117
|
+
/** A refusal when replay would read `operation`'s text from the local snapshot and it is gone; `conflict` is the choice it belongs to. */
|
|
118
|
+
const missingText = (operation, commit, conflict) => {
|
|
119
|
+
try {
|
|
120
|
+
localWrites(operation, inputs.localLatestValues.get(commit.commitId), localTables);
|
|
121
|
+
return undefined;
|
|
122
|
+
}
|
|
123
|
+
catch (error) {
|
|
124
|
+
// Only text missing from the local snapshot is a problem of the choice; anything else fails as it would in continue.
|
|
125
|
+
if (!(error instanceof RepositoryServiceError) || !(error.cause instanceof RepositoryStoreError))
|
|
126
|
+
throw error;
|
|
127
|
+
return {
|
|
128
|
+
conflict, operation,
|
|
129
|
+
problem: `the value that local operation ${operation.operationId} wrote is no longer stored in this checkout, so it cannot be replayed.`,
|
|
130
|
+
details: { reason: "local_value_unavailable", operation_id: operation.operationId },
|
|
131
|
+
};
|
|
132
|
+
}
|
|
133
|
+
};
|
|
134
|
+
const walk = new ReplayWalk({
|
|
135
|
+
localCommitsNewestFirst: context.localCommits, resolutions, graphMembership: graph,
|
|
136
|
+
repositoryId: context.remoteSnapshot.repositoryId, remoteTables: inputs.remoteTables(), localTables, rebaseId,
|
|
137
|
+
departures: new Map(pulledDepartures(context.remoteSnapshot.repositoryId, context.remoteCommits)
|
|
138
|
+
.map(({ nodeId, targetRepositoryId }) => [nodeId, targetRepositoryId])),
|
|
139
|
+
});
|
|
140
|
+
const tombstones = new Map();
|
|
141
|
+
const addedEdges = new Map();
|
|
142
|
+
for (const commit of [...context.localCommits].reverse()) {
|
|
143
|
+
for (const step of walk.commitSteps(commit)) {
|
|
144
|
+
if (step.kind === "inserted")
|
|
145
|
+
continue;
|
|
146
|
+
if (step.kind === "restored") {
|
|
147
|
+
const { commit: editCommit, operation: firstEdit } = step.restoration.firstEdit;
|
|
148
|
+
const refusal = missingText(firstEdit, editCommit, choices.get(JSON.stringify(["edge", step.restoration.edgeId])));
|
|
149
|
+
if (refusal !== undefined)
|
|
150
|
+
return refusal;
|
|
151
|
+
addedEdges.set(step.restoration.edgeId, {
|
|
152
|
+
conflict: choices.get(JSON.stringify(["edge", step.restoration.edgeId])), operation: firstEdit, restored: true,
|
|
153
|
+
});
|
|
154
|
+
continue;
|
|
155
|
+
}
|
|
156
|
+
if (step.kind === "refused") {
|
|
157
|
+
if (undecided.has(step.original.operationId))
|
|
158
|
+
continue;
|
|
159
|
+
if (step.restoration === undefined) {
|
|
160
|
+
return { conflict: choiceFor(step.original), operation: step.original, problem: step.problem, details: step.details };
|
|
161
|
+
}
|
|
162
|
+
const { edgeId } = step.restoration;
|
|
163
|
+
return {
|
|
164
|
+
conflict: choices.get(JSON.stringify(["edge", edgeId])), operation: step.original,
|
|
165
|
+
problem: `edge ${edgeId} cannot be restored: ${step.problem}`, details: step.details,
|
|
166
|
+
error: restoreRefusal(edgeId, rebaseId, step.problem, step.details),
|
|
167
|
+
};
|
|
168
|
+
}
|
|
169
|
+
const { original, resolution } = step;
|
|
170
|
+
// A manual choice writes its own text, and an open conflict's operations are checked once it is resolved.
|
|
171
|
+
if (resolution?.[0] !== "manual" && !undecided.has(original.operationId)) {
|
|
172
|
+
const refusal = missingText(original, commit, choiceFor(original));
|
|
173
|
+
if (refusal !== undefined)
|
|
174
|
+
return refusal;
|
|
175
|
+
}
|
|
176
|
+
if (original.type === "node.tombstone.v1" && !undecided.has(original.operationId)) {
|
|
177
|
+
tombstones.set(original.payload.node_id, { conflict: choiceFor(original), operation: original });
|
|
178
|
+
}
|
|
179
|
+
const keeper = choiceFor(original);
|
|
180
|
+
if (original.type === "edge.add.v1" && keeper !== undefined && !undecided.has(original.operationId)) {
|
|
181
|
+
addedEdges.set(original.payload.edge_id, { conflict: keeper, operation: original, restored: false });
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
for (const [nodeId, { conflict, operation }] of tombstones) {
|
|
186
|
+
const blocked = walk.state.tombstoneBlockedByLineage(nodeId);
|
|
187
|
+
if (blocked?.action === "refuse")
|
|
188
|
+
return { conflict, operation, problem: blocked.problem, details: blocked.details };
|
|
189
|
+
}
|
|
190
|
+
for (const [edgeId, { conflict, operation, restored }] of addedEdges) {
|
|
191
|
+
const equivalent = walk.state.equivalentEdge(edgeId);
|
|
192
|
+
if (equivalent === undefined)
|
|
193
|
+
continue;
|
|
194
|
+
const problem = `edge ${equivalent} already connects the same nodes with the same relation where replay adds edge ${edgeId}`;
|
|
195
|
+
const details = { reason: "duplicate_edge", edge_id: edgeId, equivalent_edge_id: equivalent };
|
|
196
|
+
return restored
|
|
197
|
+
? { conflict, operation, problem: `edge ${edgeId} cannot be restored: ${problem}`, details, error: restoreRefusal(edgeId, rebaseId, problem, details) }
|
|
198
|
+
: { conflict, operation, problem, details };
|
|
199
|
+
}
|
|
200
|
+
return conflicts.every(conflict => conflict.state === "resolved")
|
|
201
|
+
? trialRefusal(inputs, resolutions, graph, rebaseId, choiceFor)
|
|
202
|
+
: undefined;
|
|
203
|
+
}
|
|
204
|
+
/**
|
|
205
|
+
* The conflict with `strategy` recorded, after the checks that refuse a choice
|
|
206
|
+
* continue could not replay together with the choices already recorded in
|
|
207
|
+
* `conflicts`: a graph_membership choice that needs an unavailable node or
|
|
208
|
+
* containment, an edge the pull removed that cannot be added back, or kept
|
|
209
|
+
* local operations whose preconditions the replayed state breaks (see
|
|
210
|
+
* pulled-state.ts) or whose text is no longer stored, including a choice here
|
|
211
|
+
* that stops another recorded choice, or a local operation in no conflict,
|
|
212
|
+
* from replaying; and, once every conflict is decided, any failure the replay
|
|
213
|
+
* itself meets on a copy of the pulled graph (`inputs.trial`). `inputs` is
|
|
214
|
+
* built once per list or resolve and shared by every check.
|
|
215
|
+
* Refusals are RepositoryServiceErrors with a code; the conflict itself is not
|
|
216
|
+
* changed.
|
|
217
|
+
*/
|
|
218
|
+
export function checkedResolution(conflict, strategy, manualValue, conflicts, inputs) {
|
|
219
|
+
const { canonicalBytes } = resolveConflictBytes(conflict, strategy, manualValue);
|
|
220
|
+
const resolved = { ...conflict, state: "resolved", canonicalBytes };
|
|
221
|
+
const updated = conflicts.map(other => other.conflictId === conflict.conflictId ? resolved : other);
|
|
222
|
+
const graph = graphMembershipReplayPlan(updated.filter(other => other.state === "resolved"), () => inputs.context);
|
|
223
|
+
const refusal = replayRefusal(inputs, updated, graph, conflict.rebaseId);
|
|
224
|
+
if (refusal === undefined)
|
|
225
|
+
return resolved;
|
|
226
|
+
if (refusal.conflict?.conflictId === conflict.conflictId)
|
|
227
|
+
throw refusal.error ?? choiceRefusal(conflict, strategy, refusal.problem, refusal.details);
|
|
228
|
+
if (refusal.conflict !== undefined) {
|
|
229
|
+
throw choiceRefusal(conflict, strategy, `choosing ${strategy} here stops the choice recorded for conflict ${refusal.conflict.conflictId} from replaying: ${refusal.problem}`, { ...refusal.details, blocked_conflict_id: refusal.conflict.conflictId });
|
|
230
|
+
}
|
|
231
|
+
if (refusal.operation === undefined) {
|
|
232
|
+
throw choiceRefusal(conflict, strategy, `with this choice and the choices already recorded, ${refusal.problem}`, refusal.details);
|
|
233
|
+
}
|
|
234
|
+
throw choiceRefusal(conflict, strategy, `with this choice, local operation ${refusal.operation.operationId} (${refusal.operation.type}), which is in no conflict, cannot replay: ${refusal.problem}`, { ...refusal.details, blocked_operation_id: refusal.operation.operationId });
|
|
235
|
+
}
|
|
6
236
|
export async function resolveConflict(store, repositoryId, operationId, conflictId, strategy, manualValue) {
|
|
7
237
|
if (!isUuid(operationId))
|
|
8
238
|
throw new RepositoryServiceError("operation_id must be UUIDv4");
|
|
@@ -15,14 +245,15 @@ export async function resolveConflict(store, repositoryId, operationId, conflict
|
|
|
15
245
|
}
|
|
16
246
|
let resolved;
|
|
17
247
|
try {
|
|
18
|
-
const { key, canonicalBytes } = resolveConflictBytes(conflict, strategy, manualValue);
|
|
19
|
-
resolved = { ...conflict, state: "resolved", canonicalBytes };
|
|
20
|
-
let context;
|
|
21
|
-
const loadContext = () => context ??= conflictContext(workspace.conflicts);
|
|
22
248
|
// A choice that cannot be replayed is refused here, leaving the conflict open.
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
249
|
+
const context = conflictContext(workspace.conflicts);
|
|
250
|
+
const inputs = new ChoiceCheckInputs(context, await loadRebaseLatestValues(store, repositoryId, context.localCommits));
|
|
251
|
+
try {
|
|
252
|
+
resolved = checkedResolution(conflict, strategy, manualValue, workspace.conflicts, inputs);
|
|
253
|
+
}
|
|
254
|
+
finally {
|
|
255
|
+
inputs.close();
|
|
256
|
+
}
|
|
26
257
|
}
|
|
27
258
|
catch (error) {
|
|
28
259
|
if (error instanceof RepositoryRebaseError)
|