@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 @@
1
+ {"version":3,"file":"conflict-view.js","sourceRoot":"","sources":["../../../../src/local/domain/rebase/conflict-view.ts"],"names":[],"mappings":"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"}
@@ -4,6 +4,9 @@ import { keysConflict, operationKey } from "./keys.js";
4
4
  import { localOperationNodeIds } from "../models/operation-identity.js";
5
5
  import { canonicalBytes, compareCodePoints, parseRepositoryJson } from "../models/encoding.js";
6
6
  import { isRecord } from "../models/constants.js";
7
+ import { pulledSnapshotTables } from "../../store/snapshot/hosted.js";
8
+ import { snapshotTables } from "../../store/snapshot/validate.js";
9
+ import { GRAPH_MEMBERSHIP, graphMembershipConflicts, graphMembershipPlan, NO_GRAPH_MEMBERSHIP_PLAN, } from "./graph-membership.js";
7
10
  function keyId(key) {
8
11
  return canonicalBytes(key).toString("hex");
9
12
  }
@@ -43,7 +46,18 @@ function deterministicConflictId(rebaseId, key) {
43
46
  const hex = raw.toString("hex");
44
47
  return `${hex.slice(0, 8)}-${hex.slice(8, 12)}-${hex.slice(12, 16)}-${hex.slice(16, 20)}-${hex.slice(20)}`;
45
48
  }
46
- function conflictMapping(conflict) {
49
+ /**
50
+ * Validated payloads by stored conflict. A RebaseConflict never changes, and
51
+ * one list or resolve checks every choice against every stored conflict, so
52
+ * each payload (one of them holds the whole rebase context) is parsed and
53
+ * verified once rather than once per check. Entries go with their conflicts.
54
+ */
55
+ const MAPPINGS = new WeakMap();
56
+ /** A stored conflict's validated payload; shared, so callers must not change it. */
57
+ export function conflictMapping(conflict) {
58
+ const known = MAPPINGS.get(conflict);
59
+ if (known !== undefined)
60
+ return known;
47
61
  let payload;
48
62
  try {
49
63
  payload = parseRepositoryJson(new TextDecoder("utf-8", { fatal: true }).decode(conflict.canonicalBytes));
@@ -57,16 +71,42 @@ function conflictMapping(conflict) {
57
71
  !Array.isArray(payload.key)) {
58
72
  throw new RepositoryRebaseError("repository conflict is corrupt");
59
73
  }
74
+ MAPPINGS.set(conflict, payload);
60
75
  return payload;
61
76
  }
62
77
  function conflictKey(payload) {
63
78
  return payload.key.map(String);
64
79
  }
80
+ export function conflictOperationKey(conflict) {
81
+ return conflictKey(conflictMapping(conflict));
82
+ }
83
+ function pulledOperations(context) {
84
+ let local;
85
+ let remote;
86
+ return {
87
+ localOperations: [...context.localCommits].reverse().flatMap(commit => commit.operations),
88
+ remoteOperations: context.remoteCommits.flatMap(commit => commit.operations),
89
+ localTables: () => local ??= snapshotTables(context.localSnapshot),
90
+ remoteTables: () => remote ??= pulledSnapshotTables(context.remoteSnapshot),
91
+ };
92
+ }
93
+ /** Graph membership conflicts between the pulled remote history and the local unpublished commits. */
94
+ function detectGraphMembershipConflicts(context) {
95
+ return graphMembershipConflicts(pulledOperations(context));
96
+ }
65
97
  export function buildConflicts(input) {
98
+ // A key overlap wholly inside a graph_membership conflict is decided by that conflict's single choice.
99
+ const claimed = new Set(input.graphMembership.flatMap(conflict => conflict.localOperations.map(operation => operation.operationId)));
66
100
  const localByKey = operationsByKey(input.localCommitsNewestFirst);
67
101
  const remoteByKey = operationsByKey(input.remoteCommits);
68
102
  const conflicting = [...localByKey.values()]
69
- .filter(({ key }) => [...remoteByKey.values()].some((remote) => keysConflict(key, remote.key)));
103
+ .filter(({ key, operations }) => !operations.every(operation => claimed.has(operation.operationId)) &&
104
+ [...remoteByKey.values()].some((remote) => keysConflict(key, remote.key)))
105
+ .map(({ key, operations }) => ({
106
+ key,
107
+ localOperations: operations,
108
+ remoteOperations: [...remoteByKey.values()].filter((remote) => keysConflict(key, remote.key)).flatMap((remote) => remote.operations),
109
+ }));
70
110
  for (const commit of input.remoteCommits) {
71
111
  for (const operation of commit.operations) {
72
112
  if (operation.type !== "node.relocate.v1" ||
@@ -78,22 +118,39 @@ export function buildConflicts(input) {
78
118
  .flatMap(localCommit => localCommit.operations)
79
119
  .filter(localOperation => localOperationNodeIds(localOperation).includes(operation.payload.node_id));
80
120
  if (operations.length > 0 && !conflicting.some(({ key }) => key[0] === "departure" && key[1] === operation.payload.node_id)) {
81
- conflicting.push({ key: ["departure", operation.payload.node_id, operation.payload.target_repository_id], operations });
121
+ conflicting.push({
122
+ key: ["departure", operation.payload.node_id, operation.payload.target_repository_id],
123
+ localOperations: operations,
124
+ remoteOperations: [],
125
+ });
82
126
  }
83
127
  }
84
128
  }
129
+ for (const conflict of input.graphMembership) {
130
+ conflicting.push({
131
+ key: conflict.key,
132
+ localOperations: conflict.localOperations,
133
+ remoteOperations: conflict.remoteOperations,
134
+ details: {
135
+ kind: GRAPH_MEMBERSHIP,
136
+ removal_side: conflict.removalSide,
137
+ graph_node_ids: conflict.graphNodeIds,
138
+ edge_ids: conflict.edgeIds,
139
+ node_ids: conflict.nodeIds,
140
+ containment_ids: conflict.containmentIds,
141
+ },
142
+ });
143
+ }
85
144
  conflicting.sort((left, right) => compareKeys(left.key, right.key));
86
145
  const context = serializeRebaseContext(input.context);
87
- return conflicting.map(({ key, operations }, index) => {
88
- const remoteOperations = [...remoteByKey.values()]
89
- .filter((remote) => keysConflict(key, remote.key))
90
- .flatMap((remote) => remote.operations);
146
+ return conflicting.map(({ key, localOperations, remoteOperations, details }, index) => {
91
147
  const conflictId = deterministicConflictId(input.rebaseId, key);
92
148
  const payload = {
149
+ ...details,
93
150
  conflict_id: conflictId,
94
151
  context: index === 0 ? context : null,
95
152
  key,
96
- local_operations: operations.map((operation) => operation.toMapping()),
153
+ local_operations: localOperations.map((operation) => operation.toMapping()),
97
154
  rebase_id: input.rebaseId,
98
155
  remote_operations: remoteOperations.map((operation) => operation.toMapping()),
99
156
  resolution: null,
@@ -108,12 +165,22 @@ export function buildConflicts(input) {
108
165
  };
109
166
  });
110
167
  }
168
+ /** The conflicts between a rebase context's local history and its pulled commits, including graph_membership conflicts. */
169
+ export function conflictsForContext(repositoryId, rebaseId, context) {
170
+ return buildConflicts({
171
+ repositoryId, rebaseId, localCommitsNewestFirst: context.localCommits, remoteCommits: context.remoteCommits, context,
172
+ graphMembership: detectGraphMembershipConflicts(context),
173
+ });
174
+ }
111
175
  export function resolveConflictBytes(conflict, strategy, manualValue) {
112
176
  const payload = conflictMapping(conflict);
113
177
  if (strategy !== "local" && strategy !== "remote" && strategy !== "manual") {
114
178
  throw new RepositoryRebaseError("repository conflict strategy is invalid");
115
179
  }
116
180
  const key = payload.key;
181
+ if (payload.kind === GRAPH_MEMBERSHIP && strategy === "manual") {
182
+ throw new RepositoryRebaseError("a graph_membership conflict is resolved with --strategy local or remote; manual values apply only to node field conflicts");
183
+ }
117
184
  if (key[0] === "departure" && strategy !== "remote") {
118
185
  throw new RepositoryRebaseError(`repository departure conflict requires remote resolution. Run flywheel repo:recover-departed ${String(key[2])} <directory> --repo <source-checkout>.`);
119
186
  }
@@ -125,7 +192,7 @@ export function resolveConflictBytes(conflict, strategy, manualValue) {
125
192
  else if (manualValue !== null) {
126
193
  throw new RepositoryRebaseError("manual conflict value is invalid");
127
194
  }
128
- return canonicalBytes({ ...payload, resolution: { manual_value: manualValue, strategy } });
195
+ return { key: conflictKey(payload), canonicalBytes: canonicalBytes({ ...payload, resolution: { manual_value: manualValue, strategy } }) };
129
196
  }
130
197
  export function conflictContext(conflicts) {
131
198
  for (const conflict of conflicts) {
@@ -151,9 +218,16 @@ export function conflictResolutionByKey(conflicts) {
151
218
  }
152
219
  let remoteDigest = null;
153
220
  if (Array.isArray(payload.remote_operations)) {
221
+ // The value the pulled history left: the last write, where re-adding an edge writes its content and
222
+ // replacing an artifact's content writes its object digest.
154
223
  for (const operation of [...payload.remote_operations].reverse()) {
155
- if (isRecord(operation) && typeof operation.new_digest === "string") {
156
- remoteDigest = operation.new_digest;
224
+ if (!isRecord(operation))
225
+ continue;
226
+ const written = typeof operation.new_digest === "string" ? operation.new_digest
227
+ : operation.type === "edge.add.v1" && typeof operation.content_digest === "string" ? operation.content_digest
228
+ : operation.type === "artifact.content.set.v1" && typeof operation.object_digest === "string" ? operation.object_digest : undefined;
229
+ if (written !== undefined) {
230
+ remoteDigest = written;
157
231
  break;
158
232
  }
159
233
  }
@@ -162,8 +236,85 @@ export function conflictResolutionByKey(conflicts) {
162
236
  }
163
237
  return result;
164
238
  }
239
+ /**
240
+ * Compares conflicts rebuilt from the current local history with the saved
241
+ * ones. A saved choice carries over only while the same local and remote
242
+ * operations participate; otherwise the conflict is open again.
243
+ */
244
+ export function recheckConflicts(saved, rebuilt) {
245
+ const savedById = new Map(saved.map((conflict) => [conflict.conflictId, conflict]));
246
+ const rebuiltIds = new Set(rebuilt.map((conflict) => conflict.conflictId));
247
+ const dropped = saved.filter((conflict) => !rebuiltIds.has(conflict.conflictId));
248
+ let changed = dropped.length > 0;
249
+ const conflicts = rebuilt.map((conflict) => {
250
+ const previous = savedById.get(conflict.conflictId);
251
+ if (previous === undefined) {
252
+ changed = true;
253
+ return conflict;
254
+ }
255
+ const before = conflictMapping(previous);
256
+ const after = conflictMapping(conflict);
257
+ if (!canonicalBytes(before.local_operations).equals(canonicalBytes(after.local_operations)) ||
258
+ !canonicalBytes(before.remote_operations).equals(canonicalBytes(after.remote_operations))) {
259
+ changed = true;
260
+ return conflict;
261
+ }
262
+ if (previous.state !== "resolved")
263
+ return conflict;
264
+ return { ...conflict, state: "resolved", canonicalBytes: canonicalBytes({ ...after, resolution: before.resolution }) };
265
+ });
266
+ return { conflicts, changed, dropped };
267
+ }
165
268
  export function resolutionDigest(conflicts) {
166
269
  const bytes = canonicalBytes(conflicts.map((conflict) => Buffer.from(conflict.canonicalBytes).toString("hex")));
167
270
  return `sha256:${createHash("sha256").update("flywheel.rebase-resolutions.v1\0").update(bytes).digest("hex")}`;
168
271
  }
272
+ function stringList(value) {
273
+ if (!Array.isArray(value) || !value.every(item => typeof item === "string")) {
274
+ throw new RepositoryRebaseError("repository conflict is corrupt");
275
+ }
276
+ return value;
277
+ }
278
+ /**
279
+ * Replay plan of every resolved graph_membership conflict. Throws repository_conflict_choice_unavailable
280
+ * when a chosen edge cannot be kept, so resolution and continuation apply the same checks.
281
+ */
282
+ export function graphMembershipReplayPlan(conflicts, loadContext) {
283
+ let input;
284
+ const drop = new Set();
285
+ const insertBefore = new Map();
286
+ for (const conflict of conflicts) {
287
+ const payload = conflictMapping(conflict);
288
+ if (payload.kind !== GRAPH_MEMBERSHIP)
289
+ continue;
290
+ if (input === undefined) {
291
+ const context = loadContext();
292
+ input = { ...pulledOperations(context), repositoryId: context.remoteSnapshot.repositoryId };
293
+ }
294
+ const resolution = payload.resolution;
295
+ const strategy = isRecord(resolution) ? resolution.strategy : undefined;
296
+ const removalSide = payload.removal_side;
297
+ if (strategy !== "local" && strategy !== "remote")
298
+ throw new RepositoryRebaseError("repository conflicts are unresolved");
299
+ if ((removalSide !== "local" && removalSide !== "remote") || !Array.isArray(payload.local_operations) ||
300
+ !payload.local_operations.every(operation => isRecord(operation) && typeof operation.operation_id === "string")) {
301
+ throw new RepositoryRebaseError("repository conflict is corrupt");
302
+ }
303
+ const plan = graphMembershipPlan({
304
+ conflictId: conflict.conflictId,
305
+ rebaseId: conflict.rebaseId,
306
+ strategy,
307
+ removalSide,
308
+ edgeIds: stringList(payload.edge_ids),
309
+ containmentIds: stringList(payload.containment_ids),
310
+ localOperationIds: payload.local_operations.map(operation => operation.operation_id),
311
+ }, input);
312
+ for (const operationId of plan.drop)
313
+ drop.add(operationId);
314
+ for (const [operationId, operations] of plan.insertBefore) {
315
+ insertBefore.set(operationId, [...insertBefore.get(operationId) ?? [], ...operations]);
316
+ }
317
+ }
318
+ return drop.size === 0 && insertBefore.size === 0 ? NO_GRAPH_MEMBERSHIP_PLAN : { drop, insertBefore };
319
+ }
169
320
  //# sourceMappingURL=conflicts.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"conflicts.js","sourceRoot":"","sources":["../../../../src/local/domain/rebase/conflicts.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"conflicts.js","sourceRoot":"","sources":["../../../../src/local/domain/rebase/conflicts.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,95 @@
1
+ import { RepositoryServiceError } from "../errors.js";
2
+ import { isRecord } from "../models/constants.js";
3
+ import { RepositoryOperation } from "../models/operations.js";
4
+ import { snapshotRows } from "../../store/snapshot/schema.js";
5
+ const NO_REMOVED_EDGES = { restorations: new Map(), discarded: new Set() };
6
+ function row(tables, table, idColumn, id) {
7
+ return snapshotRows(tables, table).find(candidate => candidate[idColumn] === id);
8
+ }
9
+ /** The edge an operation needs to exist: the edge it changes, or the edge that owns the artifact it changes. */
10
+ export function edgeDependency(operation) {
11
+ const payload = operation.payload;
12
+ if (operation.type.startsWith("edge."))
13
+ return payload.edge_id;
14
+ if (isRecord(payload.owner) && payload.owner.owner_type === "edge")
15
+ return payload.owner.owner_id;
16
+ return undefined;
17
+ }
18
+ function relationOf(values) {
19
+ return {
20
+ graph_node_id: values.graph_node_id,
21
+ source_node_id: values.source_node_id,
22
+ target_node_id: values.target_node_id,
23
+ relation_digest: values.relation_digest,
24
+ };
25
+ }
26
+ const REFUSED_HISTORY = {
27
+ removed_locally: "the local commits also remove it",
28
+ removed_and_readded_locally: "the local commits remove it and add it again",
29
+ };
30
+ function localEdgeHistory(localCommitsNewestFirst, localTables, edgeId) {
31
+ const edgeOperations = [...localCommitsNewestFirst].reverse().flatMap(commit => commit.operations
32
+ .filter(operation => operation.type.startsWith("edge.") && operation.payload.edge_id === edgeId)
33
+ .map(operation => ({ commit, operation })));
34
+ const [first] = edgeOperations;
35
+ // Local history that adds the edge itself re-creates it when that addition replays.
36
+ if (first?.operation.type === "edge.add.v1")
37
+ return { kind: "replayed" };
38
+ const edge = row(localTables, "repository_semantic_edges", "edge_id", edgeId);
39
+ if (edge === undefined)
40
+ return { kind: "refused", reason: "removed_locally" };
41
+ if (edgeOperations.some(({ operation }) => operation.type === "edge.remove.v1")) {
42
+ return { kind: "refused", reason: "removed_and_readded_locally" };
43
+ }
44
+ // Without additions or removals, every local operation on the edge is a content edit.
45
+ if (first === undefined)
46
+ throw new RepositoryServiceError(`repository edge ${edgeId} has no local operation`);
47
+ return { kind: "restored", restoration: { edgeId, relation: relationOf(edge), firstEdit: first } };
48
+ }
49
+ export function restoreRefusal(edgeId, rebaseId, problem, details) {
50
+ return new RepositoryServiceError(`Edge ${edgeId} cannot be restored: ${problem}. The conflict remains open.`, {
51
+ code: "repository_edge_restore_unavailable",
52
+ details: { edge_id: edgeId, ...details },
53
+ nextAction: "Resolve this conflict with --strategy remote to keep the edge removed, or run " +
54
+ `flywheel repo:rebase:abort ${rebaseId} to return to the state before the pull.`,
55
+ });
56
+ }
57
+ /** Plans each resolved edge conflict whose edge is absent from the pulled tables. */
58
+ export function removedEdges(resolutions, remoteTables, localTables, localCommitsNewestFirst, rebaseId) {
59
+ const edgeResolutions = [...resolutions]
60
+ .filter(([key]) => key.length === 2 && key[0] === "edge")
61
+ .map(([[, edgeId], [strategy]]) => ({ edgeId, strategy }));
62
+ if (edgeResolutions.length === 0)
63
+ return NO_REMOVED_EDGES;
64
+ const restorations = new Map();
65
+ const discarded = new Set();
66
+ for (const { edgeId, strategy } of edgeResolutions) {
67
+ if (row(remoteTables, "repository_semantic_edges", "edge_id", edgeId) !== undefined)
68
+ continue;
69
+ if (strategy !== "local") {
70
+ discarded.add(edgeId);
71
+ continue;
72
+ }
73
+ const history = localEdgeHistory(localCommitsNewestFirst, localTables(), edgeId);
74
+ if (history.kind === "refused") {
75
+ throw restoreRefusal(edgeId, rebaseId, REFUSED_HISTORY[history.reason], { reason: history.reason });
76
+ }
77
+ if (history.kind === "restored")
78
+ restorations.set(edgeId, history.restoration);
79
+ }
80
+ return { restorations, discarded };
81
+ }
82
+ /** The edge.add.v1 that re-creates a removed edge with the first local edit's content. */
83
+ export function restoredEdgeOperation(restoration, operationId) {
84
+ return RepositoryOperation.fromMapping({
85
+ type: "edge.add.v1",
86
+ operation_id: operationId,
87
+ repository_id: restoration.firstEdit.operation.repositoryId,
88
+ edge_id: restoration.edgeId,
89
+ ...restoration.relation,
90
+ expected_relation_state: "absent",
91
+ content_digest: restoration.firstEdit.operation.payload.new_digest,
92
+ artifact_reference_digests: [],
93
+ });
94
+ }
95
+ //# sourceMappingURL=edge-restoration.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"edge-restoration.js","sourceRoot":"","sources":["../../../../src/local/domain/rebase/edge-restoration.ts"],"names":[],"mappings":"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"}