@paradigma-inc/flywheel 0.2.66 → 0.2.67

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 (36) hide show
  1. package/package.json +1 -1
  2. package/src/runtime/vendor/flywheel-cli-dist/commands/registry/repository.js +4 -4
  3. package/src/runtime/vendor/flywheel-cli-dist/commands/registry/repository.js.map +1 -1
  4. package/src/runtime/vendor/flywheel-cli-dist/commands/repository-output.js +72 -0
  5. package/src/runtime/vendor/flywheel-cli-dist/commands/repository-output.js.map +1 -1
  6. package/src/runtime/vendor/flywheel-cli-dist/local/domain/models/tags.js +3 -1
  7. package/src/runtime/vendor/flywheel-cli-dist/local/domain/models/tags.js.map +1 -1
  8. package/src/runtime/vendor/flywheel-cli-dist/local/domain/rebase/conflict-view.js +288 -0
  9. package/src/runtime/vendor/flywheel-cli-dist/local/domain/rebase/conflict-view.js.map +1 -0
  10. package/src/runtime/vendor/flywheel-cli-dist/local/domain/rebase/conflicts.js +22 -3
  11. package/src/runtime/vendor/flywheel-cli-dist/local/domain/rebase/conflicts.js.map +1 -1
  12. package/src/runtime/vendor/flywheel-cli-dist/local/domain/rebase/edge-restoration.js +4 -50
  13. package/src/runtime/vendor/flywheel-cli-dist/local/domain/rebase/edge-restoration.js.map +1 -1
  14. package/src/runtime/vendor/flywheel-cli-dist/local/domain/rebase/local-replay.js +6 -0
  15. package/src/runtime/vendor/flywheel-cli-dist/local/domain/rebase/local-replay.js.map +1 -0
  16. package/src/runtime/vendor/flywheel-cli-dist/local/domain/rebase/pull.js +1 -7
  17. package/src/runtime/vendor/flywheel-cli-dist/local/domain/rebase/pull.js.map +1 -1
  18. package/src/runtime/vendor/flywheel-cli-dist/local/domain/rebase/pulled-artifacts.js +126 -0
  19. package/src/runtime/vendor/flywheel-cli-dist/local/domain/rebase/pulled-artifacts.js.map +1 -0
  20. package/src/runtime/vendor/flywheel-cli-dist/local/domain/rebase/pulled-state.js +412 -0
  21. package/src/runtime/vendor/flywheel-cli-dist/local/domain/rebase/pulled-state.js.map +1 -0
  22. package/src/runtime/vendor/flywheel-cli-dist/local/domain/rebase/replay-walk.js +107 -0
  23. package/src/runtime/vendor/flywheel-cli-dist/local/domain/rebase/replay-walk.js.map +1 -0
  24. package/src/runtime/vendor/flywheel-cli-dist/local/domain/rebase/replay.js +47 -127
  25. package/src/runtime/vendor/flywheel-cli-dist/local/domain/rebase/replay.js.map +1 -1
  26. package/src/runtime/vendor/flywheel-cli-dist/local/domain/rebase/resolve.js +243 -10
  27. package/src/runtime/vendor/flywheel-cli-dist/local/domain/rebase/resolve.js.map +1 -1
  28. package/src/runtime/vendor/flywheel-cli-dist/local/runtime/operations/conflicts.js +4 -9
  29. package/src/runtime/vendor/flywheel-cli-dist/local/runtime/operations/conflicts.js.map +1 -1
  30. package/src/runtime/vendor/flywheel-cli-dist/local/store/pending.js +79 -8
  31. package/src/runtime/vendor/flywheel-cli-dist/local/store/pending.js.map +1 -1
  32. package/src/runtime/vendor/flywheel-cli-dist/local/store/projection/artifacts.js +2 -1
  33. package/src/runtime/vendor/flywheel-cli-dist/local/store/projection/artifacts.js.map +1 -1
  34. package/src/runtime/vendor/flywheel-cli-dist/local/store/projection/tags.js +4 -2
  35. package/src/runtime/vendor/flywheel-cli-dist/local/store/projection/tags.js.map +1 -1
  36. package/src/runtime/vendor/manifest.json +11 -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 { artifactReferenceSetDigest, foldArtifactPropertiesOperation, legacyArtifactMetadata, legacyArtifactProperties, parseArtifactProperties } from "../models/artifact-properties.js";
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 { localOperationNodeIds, operationFailureMessage } from "../models/operation-identity.js";
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 { edgeDependency, removedEdges, restoredEdgeOperation } from "./edge-restoration.js";
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
- function applyReferenceOperation(referenceSets, operation) {
190
- const payload = operation.payload;
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
- /** The latest values an original local operation recorded, recovered from the local snapshot when its commit kept none. */
223
- function localWrites(operation, originalWrites, localTables) {
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 remoteDepartureNodes = remoteDepartureNodeIds(resolutions);
256
- const removed = removedEdges(resolutions, remoteSnapshot, loadLocalTables, localCommitsNewestFirst, rebaseId);
257
- const pendingRestorations = new Map(removed.restorations);
258
- const discardedArtifacts = new Set();
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 operation of original.operations) {
264
- for (const inserted of graphMembership.insertBefore.get(operation.operationId) ?? []) {
265
- const restored = RepositoryOperation.fromMapping({ ...inserted, operation_id: randomUUID() });
266
- operations.push(restored);
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
- // An artifact that only a discarded edge attachment created does not exist for later local operations,
281
- // so they are skipped until a kept attachment replays: an attach carries the artifact's object and
282
- // properties and creates it when absent (store/projection/artifacts.ts), and replaying it records the
283
- // artifact in artifactProperties, after which operations on it replay normally.
284
- if (targetArtifactId !== undefined && discardedArtifacts.has(targetArtifactId) && !artifactProperties.has(targetArtifactId) &&
285
- operation.type !== "artifact.attach.v1" && operation.type !== "artifact.attach.v2")
286
- continue;
287
- const key = operationKey(operation);
288
- const resolution = resolutionFor(resolutions, key);
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
- const mapping = { ...operation.toMapping(), operation_id: randomUUID() };
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,240 @@
1
1
  import { RepositoryServiceError } from "../errors.js";
2
- import { isUuid } from "../models/constants.js";
3
- import { conflictContext, graphMembershipReplayPlan, resolutionDigest, resolveConflictBytes } from "./conflicts.js";
2
+ import { isRecord, isUuid } from "../models/constants.js";
3
+ import { conflictContext, conflictMapping, conflictResolutionByKey, graphMembershipReplayPlan, resolutionDigest, resolveConflictBytes } from "./conflicts.js";
4
4
  import { RepositoryRebaseError } from "./context.js";
5
- import { assertEdgeRestorable } from "./edge-restoration.js";
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 { TrialGraph } from "../../store/pending.js";
12
+ import { pulledSnapshotTables } from "../../store/snapshot/hosted.js";
13
+ import { snapshotTables } from "../../store/snapshot/validate.js";
14
+ import { RepositoryStoreError } from "../../store/sqlite/errors.js";
15
+ function choiceRefusal(conflict, strategy, problem, details) {
16
+ return new RepositoryServiceError(`Cannot keep the local change in conflict ${conflict.conflictId}: ${problem}`, {
17
+ code: "repository_conflict_choice_unavailable",
18
+ details: { conflict_id: conflict.conflictId, strategy, ...details },
19
+ nextAction: `Keep the pulled change with flywheel repo:conflicts:resolve ${conflict.conflictId} --strategy remote, ` +
20
+ `or abandon the pull with flywheel repo:rebase:abort ${conflict.rebaseId}.`,
21
+ });
22
+ }
23
+ /**
24
+ * What every choice check of one open rebase reads, built once per
25
+ * repo:conflicts:list or repo:conflicts:resolve: the rebase context, each
26
+ * local commit's stored latest values, both snapshots' tables (decoded when
27
+ * first needed, then shared; replay only reads them), and the copy of the
28
+ * pulled graph the last choice's trial replay runs on. Close it when done.
29
+ */
30
+ export class ChoiceCheckInputs {
31
+ context;
32
+ localLatestValues;
33
+ trial;
34
+ #remoteTables;
35
+ #localTables;
36
+ constructor(context, localLatestValues) {
37
+ this.context = context;
38
+ this.localLatestValues = localLatestValues;
39
+ this.trial = new TrialGraph(context.remoteSnapshot);
40
+ }
41
+ remoteTables() {
42
+ return this.#remoteTables ??= pulledSnapshotTables(this.context.remoteSnapshot);
43
+ }
44
+ localTables() {
45
+ return this.#localTables ??= snapshotTables(this.context.localSnapshot);
46
+ }
47
+ close() {
48
+ this.trial.close();
49
+ }
50
+ }
51
+ /**
52
+ * With every conflict decided, runs the replay repo:rebase:continue will run
53
+ * and tries its commits on a copy of the pulled graph (TrialGraph), so a choice
54
+ * is refused whenever continue would fail, not only when a rule predicts it.
55
+ */
56
+ function trialRefusal(inputs, resolutions, graph, rebaseId, choiceFor) {
57
+ const { context } = inputs;
58
+ let rebased;
59
+ try {
60
+ rebased = rebaseLocalCommits(context.localCommits, context.targetHead, rebaseId, resolutions, () => new Date(), context.remoteSnapshot, inputs.localLatestValues, context.localSnapshot, graph);
61
+ }
62
+ catch (error) {
63
+ if (!(error instanceof RepositoryServiceError) && !(error instanceof RepositoryStoreError))
64
+ throw error;
65
+ return { conflict: undefined, operation: undefined, problem: `continue would fail: ${error.message}`, details: { reason: "replay_failed" } };
66
+ }
67
+ const failure = inputs.trial.try(rebased.commits, rebased.latestValuesByCommit);
68
+ if (failure === undefined)
69
+ return undefined;
70
+ const original = failure.operation === undefined ? undefined : rebased.sources.get(failure.operation.operationId);
71
+ if (original === undefined) {
72
+ return { conflict: undefined, operation: undefined, problem: `continue would fail: ${failure.error.message}`, details: { reason: "replay_failed" } };
73
+ }
74
+ // The store names the rebased copy of the operation; its cause holds the plain reason.
75
+ const reason = failure.error.cause instanceof Error ? failure.error.cause.message : failure.error.message;
76
+ return {
77
+ conflict: choiceFor(original), operation: original,
78
+ problem: `local operation ${original.operationId} (${original.type}) cannot be applied on the pulled history: ${reason}`,
79
+ details: { reason: "replay_failed", operation_id: original.operationId },
80
+ };
81
+ }
82
+ /** IDs of the local operations a stored conflict lists. */
83
+ function localOperationIds(conflict) {
84
+ const operations = conflictMapping(conflict).local_operations;
85
+ return Array.isArray(operations)
86
+ ? operations.flatMap(operation => isRecord(operation) && typeof operation.operation_id === "string" ? [operation.operation_id] : [])
87
+ : [];
88
+ }
89
+ /**
90
+ * Walks the local operations as replay will with every recorded choice in
91
+ * `conflicts` (replay-walk.ts) and returns the first refusal, if any, with the
92
+ * recorded choice it comes from. Operations of a conflict still open are walked
93
+ * as if kept locally but never refuse (they are skipped instead); their own
94
+ * check runs once that conflict is resolved. A kept local operation from a
95
+ * commit that stored no latest values takes its text from the local snapshot,
96
+ * as in replay (`localLatestValues` holds each local commit's stored values),
97
+ * so that text must still be there. A node a replayed tombstone leaves
98
+ * tombstoned must also end up free of lineage, as the store checks after the
99
+ * whole batch, and an edge a recorded choice adds (or adds back) must not end
100
+ * up next to an equivalent edge, which the service refuses when it is pushed.
101
+ * Once every conflict is decided, the replay itself is tried (trialRefusal).
102
+ */
103
+ function replayRefusal(inputs, conflicts, graph, rebaseId) {
104
+ const { context } = inputs;
105
+ const resolved = conflicts.filter(conflict => conflict.state === "resolved");
106
+ // One entry per recorded choice; conflictResolutionByKey validates each recorded resolution.
107
+ const resolutions = new Map();
108
+ const choices = new Map(resolved.map(conflict => {
109
+ const [[key, resolution]] = conflictResolutionByKey([conflict]);
110
+ resolutions.set(key, resolution);
111
+ return [JSON.stringify(key), conflict];
112
+ }));
113
+ const undecided = new Set(conflicts.filter(conflict => conflict.state !== "resolved").flatMap(localOperationIds));
114
+ // The edge work of a graph_membership conflict has its own keys; the recorded choice keeps whatever the plan does not drop.
115
+ const membership = new Map(resolved.filter(conflict => conflictMapping(conflict).kind === GRAPH_MEMBERSHIP)
116
+ .flatMap(conflict => localOperationIds(conflict).map(operationId => [operationId, conflict])));
117
+ const choiceFor = (operation) => choices.get(JSON.stringify(operationKey(operation))) ?? membership.get(operation.operationId);
118
+ const localTables = () => inputs.localTables();
119
+ /** A refusal when replay would read `operation`'s text from the local snapshot and it is gone; `conflict` is the choice it belongs to. */
120
+ const missingText = (operation, commit, conflict) => {
121
+ try {
122
+ localWrites(operation, inputs.localLatestValues.get(commit.commitId), localTables);
123
+ return undefined;
124
+ }
125
+ catch (error) {
126
+ // Only text missing from the local snapshot is a problem of the choice; anything else fails as it would in continue.
127
+ if (!(error instanceof RepositoryServiceError) || !(error.cause instanceof RepositoryStoreError))
128
+ throw error;
129
+ return {
130
+ conflict, operation,
131
+ problem: `the value that local operation ${operation.operationId} wrote is no longer stored in this checkout, so it cannot be replayed.`,
132
+ details: { reason: "local_value_unavailable", operation_id: operation.operationId },
133
+ };
134
+ }
135
+ };
136
+ const walk = new ReplayWalk({
137
+ localCommitsNewestFirst: context.localCommits, resolutions, graphMembership: graph,
138
+ repositoryId: context.remoteSnapshot.repositoryId, remoteTables: inputs.remoteTables(), localTables, rebaseId,
139
+ departures: new Map(pulledDepartures(context.remoteSnapshot.repositoryId, context.remoteCommits)
140
+ .map(({ nodeId, targetRepositoryId }) => [nodeId, targetRepositoryId])),
141
+ });
142
+ const tombstones = new Map();
143
+ const addedEdges = new Map();
144
+ for (const commit of [...context.localCommits].reverse()) {
145
+ for (const step of walk.commitSteps(commit)) {
146
+ if (step.kind === "inserted")
147
+ continue;
148
+ if (step.kind === "restored") {
149
+ const { commit: editCommit, operation: firstEdit } = step.restoration.firstEdit;
150
+ const refusal = missingText(firstEdit, editCommit, choices.get(JSON.stringify(["edge", step.restoration.edgeId])));
151
+ if (refusal !== undefined)
152
+ return refusal;
153
+ addedEdges.set(step.restoration.edgeId, {
154
+ conflict: choices.get(JSON.stringify(["edge", step.restoration.edgeId])), operation: firstEdit, restored: true,
155
+ });
156
+ continue;
157
+ }
158
+ if (step.kind === "refused") {
159
+ if (undecided.has(step.original.operationId))
160
+ continue;
161
+ if (step.restoration === undefined) {
162
+ return { conflict: choiceFor(step.original), operation: step.original, problem: step.problem, details: step.details };
163
+ }
164
+ const { edgeId } = step.restoration;
165
+ return {
166
+ conflict: choices.get(JSON.stringify(["edge", edgeId])), operation: step.original,
167
+ problem: `edge ${edgeId} cannot be restored: ${step.problem}`, details: step.details,
168
+ error: restoreRefusal(edgeId, rebaseId, step.problem, step.details),
169
+ };
170
+ }
171
+ const { original, resolution } = step;
172
+ // A manual choice writes its own text, and an open conflict's operations are checked once it is resolved.
173
+ if (resolution?.[0] !== "manual" && !undecided.has(original.operationId)) {
174
+ const refusal = missingText(original, commit, choiceFor(original));
175
+ if (refusal !== undefined)
176
+ return refusal;
177
+ }
178
+ if (original.type === "node.tombstone.v1" && !undecided.has(original.operationId)) {
179
+ tombstones.set(original.payload.node_id, { conflict: choiceFor(original), operation: original });
180
+ }
181
+ const keeper = choiceFor(original);
182
+ if (original.type === "edge.add.v1" && keeper !== undefined && !undecided.has(original.operationId)) {
183
+ addedEdges.set(original.payload.edge_id, { conflict: keeper, operation: original, restored: false });
184
+ }
185
+ }
186
+ }
187
+ for (const [nodeId, { conflict, operation }] of tombstones) {
188
+ const blocked = walk.state.tombstoneBlockedByLineage(nodeId);
189
+ if (blocked?.action === "refuse")
190
+ return { conflict, operation, problem: blocked.problem, details: blocked.details };
191
+ }
192
+ for (const [edgeId, { conflict, operation, restored }] of addedEdges) {
193
+ const equivalent = walk.state.equivalentEdge(edgeId);
194
+ if (equivalent === undefined)
195
+ continue;
196
+ const problem = `edge ${equivalent} already connects the same nodes with the same relation where replay adds edge ${edgeId}`;
197
+ const details = { reason: "duplicate_edge", edge_id: edgeId, equivalent_edge_id: equivalent };
198
+ return restored
199
+ ? { conflict, operation, problem: `edge ${edgeId} cannot be restored: ${problem}`, details, error: restoreRefusal(edgeId, rebaseId, problem, details) }
200
+ : { conflict, operation, problem, details };
201
+ }
202
+ return conflicts.every(conflict => conflict.state === "resolved")
203
+ ? trialRefusal(inputs, resolutions, graph, rebaseId, choiceFor)
204
+ : undefined;
205
+ }
206
+ /**
207
+ * The conflict with `strategy` recorded, after the checks that refuse a choice
208
+ * continue could not replay together with the choices already recorded in
209
+ * `conflicts`: a graph_membership choice that needs an unavailable node or
210
+ * containment, an edge the pull removed that cannot be added back, or kept
211
+ * local operations whose preconditions the replayed state breaks (see
212
+ * pulled-state.ts) or whose text is no longer stored, including a choice here
213
+ * that stops another recorded choice, or a local operation in no conflict,
214
+ * from replaying; and, once every conflict is decided, any failure the replay
215
+ * itself meets on a copy of the pulled graph (`inputs.trial`). `inputs` is
216
+ * built once per list or resolve and shared by every check.
217
+ * Refusals are RepositoryServiceErrors with a code; the conflict itself is not
218
+ * changed.
219
+ */
220
+ export function checkedResolution(conflict, strategy, manualValue, conflicts, inputs) {
221
+ const { canonicalBytes } = resolveConflictBytes(conflict, strategy, manualValue);
222
+ const resolved = { ...conflict, state: "resolved", canonicalBytes };
223
+ const updated = conflicts.map(other => other.conflictId === conflict.conflictId ? resolved : other);
224
+ const graph = graphMembershipReplayPlan(updated.filter(other => other.state === "resolved"), () => inputs.context);
225
+ const refusal = replayRefusal(inputs, updated, graph, conflict.rebaseId);
226
+ if (refusal === undefined)
227
+ return resolved;
228
+ if (refusal.conflict?.conflictId === conflict.conflictId)
229
+ throw refusal.error ?? choiceRefusal(conflict, strategy, refusal.problem, refusal.details);
230
+ if (refusal.conflict !== undefined) {
231
+ 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 });
232
+ }
233
+ if (refusal.operation === undefined) {
234
+ throw choiceRefusal(conflict, strategy, `with this choice and the choices already recorded, ${refusal.problem}`, refusal.details);
235
+ }
236
+ 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 });
237
+ }
6
238
  export async function resolveConflict(store, repositoryId, operationId, conflictId, strategy, manualValue) {
7
239
  if (!isUuid(operationId))
8
240
  throw new RepositoryServiceError("operation_id must be UUIDv4");
@@ -15,14 +247,15 @@ export async function resolveConflict(store, repositoryId, operationId, conflict
15
247
  }
16
248
  let resolved;
17
249
  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
250
  // A choice that cannot be replayed is refused here, leaving the conflict open.
23
- graphMembershipReplayPlan([resolved], loadContext);
24
- if (strategy === "local" && key[0] === "edge")
25
- assertEdgeRestorable(loadContext(), key[1], workspace.rebase.rebaseId);
251
+ const context = conflictContext(workspace.conflicts);
252
+ const inputs = new ChoiceCheckInputs(context, await loadRebaseLatestValues(store, repositoryId, context.localCommits));
253
+ try {
254
+ resolved = checkedResolution(conflict, strategy, manualValue, workspace.conflicts, inputs);
255
+ }
256
+ finally {
257
+ inputs.close();
258
+ }
26
259
  }
27
260
  catch (error) {
28
261
  if (error instanceof RepositoryRebaseError)