@paradigma-inc/flywheel 0.2.61 → 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 (70) hide show
  1. package/package.json +1 -1
  2. package/skills/flywheel-repo/references/repository-commands.md +2 -2
  3. package/src/runtime/vendor/flywheel-cli-dist/commands/hosted-graph.js +19 -2
  4. package/src/runtime/vendor/flywheel-cli-dist/commands/hosted-graph.js.map +1 -1
  5. package/src/runtime/vendor/flywheel-cli-dist/commands/hosted-repository-snapshot.js +94 -42
  6. package/src/runtime/vendor/flywheel-cli-dist/commands/hosted-repository-snapshot.js.map +1 -1
  7. package/src/runtime/vendor/flywheel-cli-dist/commands/registry/repository.js +23 -15
  8. package/src/runtime/vendor/flywheel-cli-dist/commands/registry/repository.js.map +1 -1
  9. package/src/runtime/vendor/flywheel-cli-dist/commands/repository-edit.js +20 -27
  10. package/src/runtime/vendor/flywheel-cli-dist/commands/repository-edit.js.map +1 -1
  11. package/src/runtime/vendor/flywheel-cli-dist/commands/repository-output.js +72 -0
  12. package/src/runtime/vendor/flywheel-cli-dist/commands/repository-output.js.map +1 -1
  13. package/src/runtime/vendor/flywheel-cli-dist/commands/types.js.map +1 -1
  14. package/src/runtime/vendor/flywheel-cli-dist/local/adapter.js +55 -49
  15. package/src/runtime/vendor/flywheel-cli-dist/local/adapter.js.map +1 -1
  16. package/src/runtime/vendor/flywheel-cli-dist/local/domain/models/tags.js +3 -1
  17. package/src/runtime/vendor/flywheel-cli-dist/local/domain/models/tags.js.map +1 -1
  18. package/src/runtime/vendor/flywheel-cli-dist/local/domain/rebase/conflict-view.js +288 -0
  19. package/src/runtime/vendor/flywheel-cli-dist/local/domain/rebase/conflict-view.js.map +1 -0
  20. package/src/runtime/vendor/flywheel-cli-dist/local/domain/rebase/conflicts.js +162 -11
  21. package/src/runtime/vendor/flywheel-cli-dist/local/domain/rebase/conflicts.js.map +1 -1
  22. package/src/runtime/vendor/flywheel-cli-dist/local/domain/rebase/edge-restoration.js +95 -0
  23. package/src/runtime/vendor/flywheel-cli-dist/local/domain/rebase/edge-restoration.js.map +1 -0
  24. package/src/runtime/vendor/flywheel-cli-dist/local/domain/rebase/graph-membership.js +351 -0
  25. package/src/runtime/vendor/flywheel-cli-dist/local/domain/rebase/graph-membership.js.map +1 -0
  26. package/src/runtime/vendor/flywheel-cli-dist/local/domain/rebase/local-replay.js +6 -0
  27. package/src/runtime/vendor/flywheel-cli-dist/local/domain/rebase/local-replay.js.map +1 -0
  28. package/src/runtime/vendor/flywheel-cli-dist/local/domain/rebase/pull.js +26 -18
  29. package/src/runtime/vendor/flywheel-cli-dist/local/domain/rebase/pull.js.map +1 -1
  30. package/src/runtime/vendor/flywheel-cli-dist/local/domain/rebase/pulled-artifacts.js +126 -0
  31. package/src/runtime/vendor/flywheel-cli-dist/local/domain/rebase/pulled-artifacts.js.map +1 -0
  32. package/src/runtime/vendor/flywheel-cli-dist/local/domain/rebase/pulled-state.js +412 -0
  33. package/src/runtime/vendor/flywheel-cli-dist/local/domain/rebase/pulled-state.js.map +1 -0
  34. package/src/runtime/vendor/flywheel-cli-dist/local/domain/rebase/replay-walk.js +107 -0
  35. package/src/runtime/vendor/flywheel-cli-dist/local/domain/rebase/replay-walk.js.map +1 -0
  36. package/src/runtime/vendor/flywheel-cli-dist/local/domain/rebase/replay.js +139 -130
  37. package/src/runtime/vendor/flywheel-cli-dist/local/domain/rebase/replay.js.map +1 -1
  38. package/src/runtime/vendor/flywheel-cli-dist/local/domain/rebase/resolve.js +245 -5
  39. package/src/runtime/vendor/flywheel-cli-dist/local/domain/rebase/resolve.js.map +1 -1
  40. package/src/runtime/vendor/flywheel-cli-dist/local/fs/writer-lock.js +33 -3
  41. package/src/runtime/vendor/flywheel-cli-dist/local/fs/writer-lock.js.map +1 -1
  42. package/src/runtime/vendor/flywheel-cli-dist/local/runtime/dispatch.js +14 -15
  43. package/src/runtime/vendor/flywheel-cli-dist/local/runtime/dispatch.js.map +1 -1
  44. package/src/runtime/vendor/flywheel-cli-dist/local/runtime/operations/conflicts.js +4 -9
  45. package/src/runtime/vendor/flywheel-cli-dist/local/runtime/operations/conflicts.js.map +1 -1
  46. package/src/runtime/vendor/flywheel-cli-dist/local/runtime/recover-departed.js +52 -9
  47. package/src/runtime/vendor/flywheel-cli-dist/local/runtime/recover-departed.js.map +1 -1
  48. package/src/runtime/vendor/flywheel-cli-dist/local/runtime/snapshot-diff.js +12 -19
  49. package/src/runtime/vendor/flywheel-cli-dist/local/runtime/snapshot-diff.js.map +1 -1
  50. package/src/runtime/vendor/flywheel-cli-dist/local/store/pending.js +85 -13
  51. package/src/runtime/vendor/flywheel-cli-dist/local/store/pending.js.map +1 -1
  52. package/src/runtime/vendor/flywheel-cli-dist/local/store/projection/artifacts.js +2 -1
  53. package/src/runtime/vendor/flywheel-cli-dist/local/store/projection/artifacts.js.map +1 -1
  54. package/src/runtime/vendor/flywheel-cli-dist/local/store/projection/tags.js +4 -2
  55. package/src/runtime/vendor/flywheel-cli-dist/local/store/projection/tags.js.map +1 -1
  56. package/src/runtime/vendor/flywheel-cli-dist/local/store/snapshot/hosted.js +7 -1
  57. package/src/runtime/vendor/flywheel-cli-dist/local/store/snapshot/hosted.js.map +1 -1
  58. package/src/runtime/vendor/flywheel-cli-dist/local/store/snapshot/schema.js +5 -0
  59. package/src/runtime/vendor/flywheel-cli-dist/local/store/snapshot/schema.js.map +1 -1
  60. package/src/runtime/vendor/flywheel-cli-dist/local/store/sqlite/errors.js +5 -0
  61. package/src/runtime/vendor/flywheel-cli-dist/local/store/sqlite/errors.js.map +1 -1
  62. package/src/runtime/vendor/flywheel-cli-dist/local/store/sync.js +29 -9
  63. package/src/runtime/vendor/flywheel-cli-dist/local/store/sync.js.map +1 -1
  64. package/src/runtime/vendor/flywheel-cli-dist/local/store/workspace.js +1 -4
  65. package/src/runtime/vendor/flywheel-cli-dist/local/store/workspace.js.map +1 -1
  66. package/src/runtime/vendor/flywheel-cli-dist/main.js +1 -3
  67. package/src/runtime/vendor/flywheel-cli-dist/main.js.map +1 -1
  68. package/src/runtime/vendor/flywheel-cli-dist/prebuilds/darwin-arm64/node.napi.node +0 -0
  69. package/src/runtime/vendor/flywheel-cli-dist/prebuilds/darwin-x64/node.napi.node +0 -0
  70. package/src/runtime/vendor/manifest.json +15 -1
@@ -0,0 +1,351 @@
1
+ import { createHash } from "node:crypto";
2
+ import { RepositoryServiceError } from "../errors.js";
3
+ import { canonicalBytes } from "../models/encoding.js";
4
+ import { snapshotRows } from "../../store/snapshot/schema.js";
5
+ import { operationKey } from "./keys.js";
6
+ // A graph_membership conflict: one side removed graph membership (containment or a
7
+ // needed node) while the other side added or edited a semantic edge that depends on it.
8
+ // An edge is valid only while its graph, source and target are live and both endpoints
9
+ // sit at the same depth beneath the graph through containment, so every containment on
10
+ // the path from each endpoint up to the graph is a dependency of the edge.
11
+ export const GRAPH_MEMBERSHIP = "graph_membership";
12
+ const LIFECYCLE_OPERATIONS = new Set(["node.tombstone.v1", "node.restore.v1", "node.purge.v1", "node.relocate.v1"]);
13
+ /** Graph membership, lifecycle and edge artifact references of one snapshot. */
14
+ class Membership {
15
+ lifecycle = new Map();
16
+ containmentByChild = new Map();
17
+ containmentById = new Map();
18
+ edges = new Map();
19
+ edgeReferences = new Map();
20
+ objectDigests = new Map();
21
+ constructor(tables) {
22
+ for (const row of snapshotRows(tables, "repository_nodes"))
23
+ this.lifecycle.set(row.node_id, row.lifecycle_state);
24
+ for (const row of snapshotRows(tables, "repository_containments")) {
25
+ const containment = {
26
+ containmentId: row.containment_id, containerId: row.container_node_id,
27
+ childId: row.child_node_id, relationDigest: row.relation_digest,
28
+ ordinal: row.ordinal, sourceArtifactId: row.source_artifact_id,
29
+ };
30
+ this.containmentByChild.set(containment.childId, containment);
31
+ this.containmentById.set(containment.containmentId, containment);
32
+ }
33
+ for (const row of snapshotRows(tables, "repository_semantic_edges")) {
34
+ this.edges.set(row.edge_id, {
35
+ edgeId: row.edge_id, graphId: row.graph_node_id, sourceId: row.source_node_id,
36
+ targetId: row.target_node_id, relationDigest: row.relation_digest,
37
+ });
38
+ }
39
+ for (const row of snapshotRows(tables, "repository_artifacts"))
40
+ this.objectDigests.set(row.artifact_id, row.object_digest);
41
+ for (const row of snapshotRows(tables, "repository_artifact_references")) {
42
+ if (row.owner_kind !== "edge")
43
+ continue;
44
+ const references = this.edgeReferences.get(row.owner_id) ?? [];
45
+ references.push({ artifactId: row.artifact_id, order: row.reference_order });
46
+ this.edgeReferences.set(row.owner_id, references);
47
+ }
48
+ }
49
+ /** Containments from `nodeId` up to `graphId`, nearest first, or null when the node is not beneath the graph. */
50
+ path(nodeId, graphId) {
51
+ const path = [];
52
+ for (let current = this.containmentByChild.get(nodeId); current !== undefined; current = this.containmentByChild.get(current.containerId)) {
53
+ // Stores refuse containment cycles, so a longer walk means the snapshot itself is corrupt.
54
+ if (path.length > this.containmentById.size)
55
+ throw new RepositoryServiceError("repository containment snapshot is cyclic");
56
+ path.push(current);
57
+ if (current.containerId === graphId)
58
+ return path;
59
+ }
60
+ return null;
61
+ }
62
+ edgePath(edge) {
63
+ const source = this.path(edge.sourceId, edge.graphId);
64
+ const target = this.path(edge.targetId, edge.graphId);
65
+ return source === null || target === null ? null : [...source, ...target];
66
+ }
67
+ }
68
+ /** The semantic edge an operation writes: edge operations and edge-owned artifact references. */
69
+ function edgeTarget(operation) {
70
+ const payload = operation.payload;
71
+ if (operation.type.startsWith("edge."))
72
+ return payload.edge_id;
73
+ const owner = payload.owner;
74
+ return owner?.owner_type === "edge" ? owner.owner_id : undefined;
75
+ }
76
+ function payloadString(operation, name) {
77
+ return operation.payload[name];
78
+ }
79
+ /** The `field` value of every operation of `type`. */
80
+ function payloadIds(operations, type, field) {
81
+ return new Set(operations.filter(operation => operation.type === type).map(operation => payloadString(operation, field)));
82
+ }
83
+ function shares(left, right) {
84
+ return [...right.edges].some(id => left.edges.has(id)) || [...right.nodes].some(id => left.nodes.has(id)) ||
85
+ [...right.containments.keys()].some(id => left.containments.has(id));
86
+ }
87
+ /** Merges dependencies that share an edge, node or containment so that one choice covers all of them. */
88
+ function grouped(dependencies) {
89
+ const groups = [];
90
+ for (const dependency of dependencies) {
91
+ const group = {
92
+ edges: new Set(dependency.edges), graphs: new Set(dependency.graphs),
93
+ nodes: new Set(dependency.nodes), containments: new Map(dependency.containments),
94
+ };
95
+ for (let index = groups.length - 1; index >= 0; index -= 1) {
96
+ if (!shares(groups[index], group))
97
+ continue;
98
+ const [joined] = groups.splice(index, 1);
99
+ for (const id of joined.edges)
100
+ group.edges.add(id);
101
+ for (const id of joined.graphs)
102
+ group.graphs.add(id);
103
+ for (const id of joined.nodes)
104
+ group.nodes.add(id);
105
+ for (const [id, containment] of joined.containments)
106
+ group.containments.set(id, containment);
107
+ }
108
+ groups.push(group);
109
+ }
110
+ return groups;
111
+ }
112
+ function conflict(removalSide, group, localOperations, remoteOperations) {
113
+ const edgeIds = [...group.edges].sort();
114
+ return {
115
+ key: ["graph-membership", removalSide, ...edgeIds],
116
+ removalSide,
117
+ graphNodeIds: [...group.graphs].sort(),
118
+ edgeIds,
119
+ nodeIds: [...group.nodes].sort(),
120
+ containmentIds: [...group.containments.keys()].sort(),
121
+ localOperations,
122
+ remoteOperations,
123
+ };
124
+ }
125
+ /** Local edge additions whose containment path or graph/endpoint lifecycle the remote history removed. */
126
+ function remoteRemovals(input, local, remote) {
127
+ const createdNodes = payloadIds(input.localOperations, "node.create.v1", "node_id");
128
+ const assigned = payloadIds(input.localOperations, "containment.assign.v1", "containment_id");
129
+ const dependencies = [];
130
+ for (const operation of input.localOperations) {
131
+ if (operation.type !== "edge.add.v1")
132
+ continue;
133
+ const edge = {
134
+ graphId: payloadString(operation, "graph_node_id"),
135
+ sourceId: payloadString(operation, "source_node_id"),
136
+ targetId: payloadString(operation, "target_node_id"),
137
+ };
138
+ const path = local.edgePath(edge);
139
+ if (path === null)
140
+ continue;
141
+ const containments = new Map(path
142
+ .filter(containment => !assigned.has(containment.containmentId) &&
143
+ remote.containmentByChild.get(containment.childId)?.containerId !== containment.containerId)
144
+ .map(containment => [containment.containmentId, containment]));
145
+ const nodes = new Set([edge.graphId, edge.sourceId, edge.targetId]
146
+ .filter(nodeId => !createdNodes.has(nodeId) && remote.lifecycle.get(nodeId) !== "live"));
147
+ if (containments.size === 0 && nodes.size === 0)
148
+ continue;
149
+ for (const containment of containments.values())
150
+ nodes.add(containment.childId);
151
+ dependencies.push({ edges: new Set([payloadString(operation, "edge_id")]), graphs: new Set([edge.graphId]), nodes, containments });
152
+ }
153
+ return grouped(dependencies).map(group => {
154
+ const introducedArtifacts = new Set();
155
+ const localOperations = input.localOperations.filter(operation => {
156
+ const artifactId = operation.payload.artifact_id;
157
+ if (artifactId !== undefined && introducedArtifacts.has(artifactId))
158
+ return true;
159
+ const edgeId = edgeTarget(operation);
160
+ if (edgeId === undefined || !group.edges.has(edgeId))
161
+ return false;
162
+ if (artifactId !== undefined && !remote.objectDigests.has(artifactId))
163
+ introducedArtifacts.add(artifactId);
164
+ return true;
165
+ });
166
+ const remoteOperations = input.remoteOperations.filter(operation => (operation.type.startsWith("containment.") && group.nodes.has(payloadString(operation, "child_node_id"))) ||
167
+ (LIFECYCLE_OPERATIONS.has(operation.type) && group.nodes.has(payloadString(operation, "node_id"))));
168
+ return conflict("remote", group, localOperations, remoteOperations);
169
+ });
170
+ }
171
+ /** Remote edges that need a containment the local history removed. */
172
+ function localRemovals(input, remote) {
173
+ const removals = new Map(input.localOperations
174
+ .filter(op => op.type === "containment.remove.v1" && remote.containmentById.has(payloadString(op, "containment_id")))
175
+ .map(op => [payloadString(op, "containment_id"), remote.containmentById.get(payloadString(op, "containment_id"))]));
176
+ if (removals.size === 0)
177
+ return [];
178
+ const locallyRemovedEdges = payloadIds(input.localOperations, "edge.remove.v1", "edge_id");
179
+ const remotelyWrittenEdges = new Set(input.remoteOperations.map(edgeTarget).filter(id => id !== undefined));
180
+ const dependencies = [];
181
+ const edgePaths = new Map();
182
+ for (const edge of remote.edges.values()) {
183
+ const path = remote.edgePath(edge) ?? [];
184
+ const removed = new Map(path.filter(containment => removals.has(containment.containmentId))
185
+ .map(containment => [containment.containmentId, containment]));
186
+ if (removed.size === 0 || (locallyRemovedEdges.has(edge.edgeId) && !remotelyWrittenEdges.has(edge.edgeId)))
187
+ continue;
188
+ edgePaths.set(edge.edgeId, path);
189
+ dependencies.push({
190
+ edges: new Set([edge.edgeId]), graphs: new Set([edge.graphId]),
191
+ nodes: new Set([...removed.values()].map(containment => containment.childId)), containments: removed,
192
+ });
193
+ }
194
+ return grouped(dependencies).map(group => {
195
+ const pathIds = new Set([...group.edges].flatMap(edgeId => edgePaths.get(edgeId).map(containment => containment.containmentId)));
196
+ const localOperations = input.localOperations.filter(operation => {
197
+ const key = operationKey(operation);
198
+ return (key[0] === "containment" && group.nodes.has(key[1])) || (key[0] === "edge" && group.edges.has(key[1]));
199
+ });
200
+ const remoteOperations = input.remoteOperations.filter(operation => {
201
+ const edgeId = edgeTarget(operation);
202
+ return (edgeId !== undefined && group.edges.has(edgeId)) ||
203
+ (operation.type === "containment.assign.v1" && pathIds.has(payloadString(operation, "containment_id")));
204
+ });
205
+ return conflict("local", group, localOperations, remoteOperations);
206
+ });
207
+ }
208
+ export function graphMembershipConflicts(input) {
209
+ const addsEdges = input.localOperations.some(op => op.type === "edge.add.v1");
210
+ const removesContainment = input.localOperations.some(op => op.type === "containment.remove.v1");
211
+ if (!addsEdges && !removesContainment)
212
+ return [];
213
+ const remote = new Membership(input.remoteTables());
214
+ return [
215
+ ...(addsEdges ? remoteRemovals(input, new Membership(input.localTables()), remote) : []),
216
+ ...(removesContainment ? localRemovals(input, remote) : []),
217
+ ];
218
+ }
219
+ export const NO_GRAPH_MEMBERSHIP_PLAN = { drop: new Set(), insertBefore: new Map() };
220
+ function digest(value) {
221
+ return `sha256:${createHash("sha256").update(canonicalBytes(value)).digest("hex")}`;
222
+ }
223
+ function refusal(choice, message, reason, details) {
224
+ return new RepositoryServiceError(`Cannot keep the edge in conflict ${choice.conflictId}: ${message}`, {
225
+ code: "repository_conflict_choice_unavailable",
226
+ details: { conflict_id: choice.conflictId, strategy: choice.strategy, reason, ...details },
227
+ nextAction: `Keep the removal with flywheel repo:conflicts:resolve ${choice.conflictId} --strategy ${choice.removalSide}, ` +
228
+ `or abandon the pull with flywheel repo:rebase:abort ${choice.rebaseId}.`,
229
+ });
230
+ }
231
+ /**
232
+ * Replay plan for one resolved graph_membership conflict. Choosing the removal side drops only the
233
+ * dependent edge work; choosing the edge side keeps only the containment that edge needs. Throws
234
+ * repository_conflict_choice_unavailable when the edge cannot be kept, before anything is recorded.
235
+ */
236
+ export function graphMembershipPlan(choice, input) {
237
+ const participants = new Set(choice.localOperationIds);
238
+ const anchor = choice.localOperationIds[0];
239
+ const keepsRemoval = choice.strategy === choice.removalSide;
240
+ if (choice.removalSide === "remote" && keepsRemoval)
241
+ return { drop: participants, insertBefore: new Map() };
242
+ const remote = new Membership(input.remoteTables());
243
+ if (choice.removalSide === "local" && keepsRemoval) {
244
+ const detached = new Set(input.localOperations.filter(op => op.type === "artifact.detach.v1")
245
+ .map(op => `${edgeTarget(op)}\u0000${payloadString(op, "artifact_id")}`));
246
+ const removed = payloadIds(input.localOperations, "edge.remove.v1", "edge_id");
247
+ const inserted = [];
248
+ for (const edgeId of choice.edgeIds) {
249
+ const edge = remote.edges.get(edgeId);
250
+ if (edge === undefined)
251
+ continue;
252
+ for (const { artifactId, order } of remote.edgeReferences.get(edgeId) ?? []) {
253
+ if (detached.has(`${edgeId}\u0000${artifactId}`))
254
+ continue;
255
+ const objectDigest = remote.objectDigests.get(artifactId);
256
+ inserted.push({
257
+ type: "artifact.detach.v1", repository_id: input.repositoryId, artifact_id: artifactId,
258
+ owner: { owner_type: "edge", owner_id: edgeId }, expected_reference_state: "present", object_digest: objectDigest,
259
+ reference_digest: digest({ artifact_id: artifactId, object_digest: objectDigest, owner_kind: "edge", owner_id: edgeId, reference_order: order }),
260
+ });
261
+ }
262
+ if (!removed.has(edgeId)) {
263
+ inserted.push({
264
+ type: "edge.remove.v1", repository_id: input.repositoryId, edge_id: edgeId,
265
+ expected_relation_state: "present", relation_digest: edge.relationDigest,
266
+ });
267
+ }
268
+ }
269
+ return { drop: new Set(), insertBefore: new Map(inserted.length === 0 ? [] : [[anchor, inserted]]) };
270
+ }
271
+ const local = new Membership(input.localTables());
272
+ if (choice.removalSide === "local") {
273
+ const droppedContainments = new Set(input.localOperations
274
+ .filter(op => participants.has(op.operationId) && op.type === "containment.assign.v1")
275
+ .map(op => payloadString(op, "containment_id")));
276
+ for (const operation of input.localOperations) {
277
+ if (participants.has(operation.operationId) || operation.type !== "edge.add.v1")
278
+ continue;
279
+ const path = local.edgePath({
280
+ graphId: payloadString(operation, "graph_node_id"),
281
+ sourceId: payloadString(operation, "source_node_id"),
282
+ targetId: payloadString(operation, "target_node_id"),
283
+ }) ?? [];
284
+ if (path.some(containment => droppedContainments.has(containment.containmentId))) {
285
+ throw refusal(choice, `local operation ${operation.operationId} (${operation.type}) depends on the local containment ` +
286
+ "change that this choice drops.", "dependent_local_work", { operation_id: operation.operationId });
287
+ }
288
+ }
289
+ return { drop: participants, insertBefore: new Map() };
290
+ }
291
+ const createdNodes = payloadIds(input.localOperations, "node.create.v1", "node_id");
292
+ const containments = choice.containmentIds.map(id => {
293
+ const containment = local.containmentById.get(id);
294
+ if (containment === undefined)
295
+ throw new RepositoryServiceError("repository conflict containment is unavailable");
296
+ return containment;
297
+ });
298
+ const needed = new Set();
299
+ for (const operation of input.localOperations) {
300
+ if (!participants.has(operation.operationId) || operation.type !== "edge.add.v1")
301
+ continue;
302
+ for (const name of ["graph_node_id", "source_node_id", "target_node_id"])
303
+ needed.add(payloadString(operation, name));
304
+ }
305
+ for (const containment of containments) {
306
+ needed.add(containment.containerId);
307
+ needed.add(containment.childId);
308
+ }
309
+ for (const nodeId of [...needed].sort()) {
310
+ const lifecycle = remote.lifecycle.get(nodeId);
311
+ if (lifecycle === "live" || createdNodes.has(nodeId))
312
+ continue;
313
+ if (lifecycle === "purged") {
314
+ throw refusal(choice, `node ${nodeId} was purged in the remote history, and purged content is never restored.`, "purged", { node_id: nodeId });
315
+ }
316
+ if (lifecycle === "tombstoned") {
317
+ throw refusal(choice, `node ${nodeId} is tombstoned in the remote history, and resolving a conflict never restores a node.`, "tombstoned", { node_id: nodeId });
318
+ }
319
+ const relocation = input.remoteOperations.findLast(op => op.type === "node.relocate.v1" && op.payload.node_id === nodeId);
320
+ if (relocation !== undefined) {
321
+ const target = payloadString(relocation, "target_repository_id");
322
+ throw refusal(choice, `node ${nodeId} moved to repository ${target}, and resolving a conflict never reverses a repository move.`, "relocated", {
323
+ node_id: nodeId, current_repository_id: target,
324
+ });
325
+ }
326
+ throw refusal(choice, `node ${nodeId} is not in the remote history.`, "absent", { node_id: nodeId });
327
+ }
328
+ for (const containment of containments) {
329
+ const current = remote.containmentByChild.get(containment.childId);
330
+ if (current !== undefined) {
331
+ throw refusal(choice, `node ${containment.childId} is now inside ${current.containerId} in the remote history; ` +
332
+ `keeping the edge would move it back under ${containment.containerId}.`, "moved", {
333
+ node_id: containment.childId, container_node_id: current.containerId,
334
+ });
335
+ }
336
+ if (containment.containerId === containment.childId || remote.path(containment.containerId, containment.childId) !== null) {
337
+ throw refusal(choice, `restoring ${containment.childId} under ${containment.containerId} would create a containment cycle.`, "cycle", {
338
+ node_id: containment.childId, container_node_id: containment.containerId,
339
+ });
340
+ }
341
+ }
342
+ return {
343
+ drop: new Set(),
344
+ insertBefore: new Map([[anchor, containments.map(containment => ({
345
+ type: "containment.assign.v1", repository_id: input.repositoryId, containment_id: containment.containmentId,
346
+ container_node_id: containment.containerId, child_node_id: containment.childId, expected_relation_state: "absent",
347
+ relation_digest: containment.relationDigest, ordinal: containment.ordinal, source_artifact_id: containment.sourceArtifactId,
348
+ }))]]),
349
+ };
350
+ }
351
+ //# sourceMappingURL=graph-membership.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"graph-membership.js","sourceRoot":"","sources":["../../../../src/local/domain/rebase/graph-membership.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ export const KEEP = { action: "keep" };
2
+ export const DROP = { action: "drop" };
3
+ export function refuse(problem, details) {
4
+ return { action: "refuse", problem, details };
5
+ }
6
+ //# sourceMappingURL=local-replay.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"local-replay.js","sourceRoot":"","sources":["../../../../src/local/domain/rebase/local-replay.ts"],"names":[],"mappings":"AAMA,MAAM,CAAC,MAAM,IAAI,GAAgB,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;AACpD,MAAM,CAAC,MAAM,IAAI,GAAgB,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;AAEpD,MAAM,UAAU,MAAM,CAAC,OAAe,EAAE,OAA0C;IAChF,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;AAChD,CAAC"}
@@ -1,9 +1,9 @@
1
1
  import { RepositoryServiceError } from "../errors.js";
2
2
  import { isDigest, isUuid } from "../models/constants.js";
3
- import { buildConflicts } from "./conflicts.js";
3
+ import { conflictsForContext } from "./conflicts.js";
4
4
  import { loadRebaseLatestValues, rebaseLocalCommits } from "./replay.js";
5
5
  const NO_CONFLICTS = [];
6
- function pulledDepartures(repositoryId, commits) {
6
+ export function pulledDepartures(repositoryId, commits) {
7
7
  const currentByNode = new Map();
8
8
  for (const commit of commits) {
9
9
  for (const operation of commit.operations) {
@@ -32,7 +32,7 @@ export async function applyPull(store, repositoryId, clientId, pullId, sessionMa
32
32
  }
33
33
  return { repositoryId, pullId, rebaseId: null, head: workspace.localHeadCommitId, remoteTrackingHead: workspace.remoteTrackingHeadCommitId, departures: [], conflicts: [] };
34
34
  }
35
- const localCommits = await localUnpublishedCommits(store, workspace);
35
+ const localCommits = await localCommitsAfter(store, repositoryId, workspace.localHeadCommitId, workspace.remoteTrackingHeadCommitId);
36
36
  const localSnapshot = await store.loadSnapshot(repositoryId, workspace.localHeadCommitId);
37
37
  const context = {
38
38
  ...(sessionManifest.actorPrincipalId === undefined ? {} : { actorPrincipalId: sessionManifest.actorPrincipalId }),
@@ -63,10 +63,7 @@ export async function applyPull(store, repositoryId, clientId, pullId, sessionMa
63
63
  conflicts: [],
64
64
  };
65
65
  }
66
- const conflicts = buildConflicts({
67
- repositoryId, rebaseId: pullId, localCommitsNewestFirst: localCommits,
68
- remoteCommits: sessionManifest.commits, context,
69
- });
66
+ const conflicts = conflictsForContext(repositoryId, pullId, context);
70
67
  if (conflicts.length > 0) {
71
68
  const rebase = {
72
69
  repositoryId, rebaseId: pullId, state: "open", baseCommitId: requirePullTarget(sessionManifest), pendingResolutionDigest: null,
@@ -104,21 +101,16 @@ export async function listConflicts(store, repositoryId) {
104
101
  }
105
102
  return workspace.conflicts;
106
103
  }
107
- export async function loadConflict(store, repositoryId, conflictId) {
108
- const conflict = (await listConflicts(store, repositoryId)).find(candidate => candidate.conflictId === conflictId);
109
- if (conflict === undefined)
110
- throw new RepositoryServiceError("repository conflict is not active");
111
- return conflict;
112
- }
113
- export async function localUnpublishedCommits(store, workspace) {
114
- if (workspace.localHeadCommitId === workspace.remoteTrackingHeadCommitId)
104
+ /** Local history from `head` back to, but excluding, `base`, newest first. */
105
+ export async function localCommitsAfter(store, repositoryId, head, base) {
106
+ if (head === base)
115
107
  return [];
116
108
  const commits = [];
117
109
  let afterCommitId = null;
118
110
  while (true) {
119
- const page = await store.listCommits(workspace.repositoryId, workspace.localHeadCommitId, afterCommitId, 256);
111
+ const page = await store.listCommits(repositoryId, head, afterCommitId, 256);
120
112
  for (const commit of page.commits) {
121
- if (commit.commitId === workspace.remoteTrackingHeadCommitId)
113
+ if (commit.commitId === base)
122
114
  return commits;
123
115
  commits.push(commit);
124
116
  }
@@ -128,11 +120,27 @@ export async function localUnpublishedCommits(store, workspace) {
128
120
  throw new RepositoryServiceError("repository history cursor did not advance");
129
121
  afterCommitId = page.nextCommitId;
130
122
  }
131
- if (workspace.remoteTrackingHeadCommitId !== null) {
123
+ if (base !== null) {
132
124
  throw new RepositoryServiceError("repository remote-tracking head is outside local history");
133
125
  }
134
126
  return commits;
135
127
  }
128
+ /**
129
+ * An open rebase's saved context, extended to the actual local history: a
130
+ * commit made while the rebase is open is part of the local side it replays.
131
+ * Returns `saved` itself when no such commit exists.
132
+ */
133
+ export async function extendRebaseContext(store, workspace, saved) {
134
+ const localCommits = await localCommitsAfter(store, workspace.repositoryId, workspace.localHeadCommitId, saved.oldRemoteHead);
135
+ if (localCommits.length === saved.localCommits.length &&
136
+ localCommits.every((commit, index) => commit.commitId === saved.localCommits[index].commitId))
137
+ return saved;
138
+ return {
139
+ ...saved,
140
+ localCommits,
141
+ localSnapshot: await store.loadSnapshot(workspace.repositoryId, workspace.localHeadCommitId),
142
+ };
143
+ }
136
144
  export function validatePullManifest(repositoryId, expectedRemoteHead, manifest) {
137
145
  if (manifest.repositoryId !== repositoryId || manifest.snapshot.repositoryId !== repositoryId ||
138
146
  manifest.snapshot.headCommitId !== manifest.targetHead ||
@@ -1 +1 @@
1
- {"version":3,"file":"pull.js","sourceRoot":"","sources":["../../../../src/local/domain/rebase/pull.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pull.js","sourceRoot":"","sources":["../../../../src/local/domain/rebase/pull.ts"],"names":[],"mappings":"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"}