@amalgm/shell 0.1.17 → 0.1.19

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.
@@ -1,10 +1,12 @@
1
1
  import { createHash } from "node:crypto";
2
- import { execFileSync } from "node:child_process";
3
- import { chmodSync, existsSync, lstatSync, mkdirSync, mkdtempSync, readFileSync, readlinkSync, realpathSync, rmSync, symlinkSync, writeFileSync, } from "node:fs";
2
+ import { spawn } from "node:child_process";
3
+ import { chmodSync, closeSync, createReadStream, existsSync, lstatSync, mkdirSync, mkdtempSync, openSync, readFileSync, readSync, readlinkSync, realpathSync, rmSync, symlinkSync, statSync, writeFileSync, } from "node:fs";
4
4
  import { tmpdir } from "node:os";
5
5
  import { dirname, join, resolve } from "node:path";
6
- import { deriveCardId, deriveCheckpointId, deriveStateId, transportBytes, unpack, } from "@amalgm/live";
7
- const MAX_GIT_BUFFER = 512 * 1024 * 1024;
6
+ import { Transform } from "node:stream";
7
+ import { pipeline } from "node:stream/promises";
8
+ import { applyRepositoryIdentity, decodeRepositoryTransport, deriveCardId, deriveCheckpointId, deriveStateId, encodeRepositoryTransport, inspectRepositoryTransport, planRepositoryIdentity, repositoryTransportMetadataBytes, } from "@amalgm/live";
9
+ import { gitText, runGit, runGitToFile, tryGit, tryGitText, } from "./git-command.js";
8
10
  const EMPTY_TREE = "4b825dc642cb6eb9a060e54bf8d69288fbee4904";
9
11
  const BUSY_MARKERS = [
10
12
  "MERGE_HEAD",
@@ -17,36 +19,6 @@ const sha256Hex = (input) => createHash("sha256").update(input).digest("hex");
17
19
  const bufferView = (bytes) => Buffer.isBuffer(bytes)
18
20
  ? bytes
19
21
  : Buffer.from(bytes.buffer, bytes.byteOffset, bytes.byteLength);
20
- function runGit(cwd, args, input) {
21
- try {
22
- return execFileSync("git", [...args], {
23
- cwd,
24
- input,
25
- maxBuffer: MAX_GIT_BUFFER,
26
- stdio: ["pipe", "pipe", "pipe"],
27
- env: { ...process.env, GIT_TERMINAL_PROMPT: "0" },
28
- });
29
- }
30
- catch (error) {
31
- const failure = error;
32
- const stderr = failure.stderr?.toString("utf8").trim();
33
- failure.message = `git ${args.join(" ")} failed${stderr ? `: ${stderr}` : ""}`;
34
- throw failure;
35
- }
36
- }
37
- function tryGit(cwd, args) {
38
- try {
39
- return runGit(cwd, args);
40
- }
41
- catch {
42
- return null;
43
- }
44
- }
45
- const gitText = (cwd, args) => runGit(cwd, args).toString("utf8").trim();
46
- function tryGitText(cwd, args) {
47
- const value = tryGit(cwd, args);
48
- return value === null ? null : value.toString("utf8").trim();
49
- }
50
22
  /** A `.git` directory or linked-worktree file is evidence only when Git says
51
23
  * this exact directory is the worktree root. Stale marker files remain
52
24
  * ordinary folder ground. */
@@ -94,7 +66,9 @@ function shallowBoundary(repository) {
94
66
  return commits;
95
67
  }
96
68
  function untrackedFiles(repository) {
97
- const output = runGit(repository, ["ls-files", "--others", "--exclude-standard", "-z"])
69
+ // Git ignore is not Amalgm enrollment policy. Every on-disk worktree leaf
70
+ // travels unless the registered root's .amalgmignore excludes it.
71
+ const output = runGit(repository, ["ls-files", "--others", "-z"])
98
72
  .toString("utf8");
99
73
  return output.split("\0").filter(Boolean).sort().flatMap((relativePath) => {
100
74
  if (relativePath.endsWith("/"))
@@ -123,26 +97,11 @@ function untrackedFiles(repository) {
123
97
  }
124
98
  });
125
99
  }
126
- function bundle(repository) {
127
- const commit = tryGitText(repository, ["rev-parse", "-q", "--verify", "HEAD"]);
128
- if (!commit)
129
- return null;
130
- const scratch = mkdtempSync(join(tmpdir(), "amalgm-repo-bundle-"));
131
- const file = join(scratch, "repository.bundle");
132
- try {
133
- runGit(repository, ["bundle", "create", file, "--all", "HEAD"]);
134
- const bytes = readFileSync(file);
135
- return { bytes, sha256: sha256Hex(bytes) };
136
- }
137
- finally {
138
- rmSync(scratch, { recursive: true, force: true });
139
- }
140
- }
141
100
  function busyMarker(repository) {
142
101
  const gitDirectory = resolve(repository, gitText(repository, ["rev-parse", "--git-dir"]));
143
102
  return BUSY_MARKERS.find((marker) => existsSync(join(gitDirectory, marker))) ?? null;
144
103
  }
145
- function captureState(repository, withBundle) {
104
+ function captureState(repository) {
146
105
  const busy = busyMarker(repository);
147
106
  if (busy)
148
107
  throw new Error(`repository is busy: ${busy}`);
@@ -156,7 +115,6 @@ function captureState(repository, withBundle) {
156
115
  tags: refList(repository, "refs/tags"),
157
116
  remotes: remoteList(repository),
158
117
  ...(shallow.length > 0 ? { shallow } : {}),
159
- bundle: withBundle ? bundle(repository) : null,
160
118
  };
161
119
  const checkpoint = {
162
120
  baseCommit: commit,
@@ -175,52 +133,75 @@ function captureState(repository, withBundle) {
175
133
  checkpointId,
176
134
  card,
177
135
  checkpoint,
136
+ pack: null,
178
137
  };
179
138
  }
180
- /** Capture one semantic repository state. An unchanged state and identity map
181
- * reuse their prior immutable transport head; a new state creates one Git
182
- * bundle parcel, never one cloud object per worktree file. */
183
- export function captureRepository(repository, identity, prior) {
139
+ const cardTips = (card) => [...new Set([
140
+ ...(card.head.commit ? [card.head.commit] : []),
141
+ ...card.branches.map((ref) => ref.commit),
142
+ ...card.tags.map((ref) => ref.commit),
143
+ ])];
144
+ /** Produce the same native thin-pack work as send-pack: current wants minus
145
+ * receiver haves. Ref updates and Amalgm metadata remain outside the pack. */
146
+ function nativePack(repository, current, previous) {
147
+ const wants = cardTips(current);
148
+ if (wants.length === 0)
149
+ return null;
150
+ const haves = (previous ? cardTips(previous) : []).filter((commit) => tryGit(repository, ["cat-file", "-e", `${commit}^{object}`]) !== null);
151
+ const revisions = Buffer.from([
152
+ ...wants,
153
+ ...haves.map((commit) => `^${commit}`),
154
+ "",
155
+ ].join("\n"), "utf8");
156
+ const scratch = mkdtempSync(join(tmpdir(), "amalgm-repo-pack-"));
157
+ const file = join(scratch, "repository.pack");
158
+ try {
159
+ runGitToFile(repository, [
160
+ "pack-objects", "--stdout", "--revs", "--thin", "--delta-base-offset",
161
+ ], revisions, file);
162
+ const bytes = readFileSync(file);
163
+ if (bytes.byteLength < 12 || bytes.subarray(0, 4).toString("ascii") !== "PACK") {
164
+ throw new Error("Git produced an invalid repository pack");
165
+ }
166
+ if (bytes.readUInt32BE(8) === 0)
167
+ return null;
168
+ return { bytes, sha256: sha256Hex(bytes) };
169
+ }
170
+ finally {
171
+ rmSync(scratch, { recursive: true, force: true });
172
+ }
173
+ }
174
+ /** Capture one semantic repository state. A chainable capture packs only Git
175
+ * objects absent from its parent and only changed identity-map paths. */
176
+ export function captureRepository(repository, identity, prior, previousIdentity = null) {
177
+ const state = captureState(repository);
184
178
  if (prior) {
185
- const state = captureState(repository, false);
186
- const previous = unpack(bufferView(prior.bytes).toString("utf8"));
179
+ const identityHash = planRepositoryIdentity(identity, null, sha256Hex).identityHash;
187
180
  if (state.stateId === prior.stateId
188
- && previous.stateId === prior.stateId
189
- && JSON.stringify(previous.card.shallow ?? []) === JSON.stringify(state.card.shallow ?? [])
190
- && JSON.stringify(previous.identity ?? []) === JSON.stringify(identity)) {
191
- return { ...prior, state };
181
+ && JSON.stringify(prior.card) === JSON.stringify(state.card)
182
+ && prior.identityHash === identityHash) {
183
+ return { ...prior, state, bytes: null };
192
184
  }
193
185
  }
194
- const state = captureState(repository, true);
195
- const bytes = bufferView(transportBytes(state, identity));
186
+ const chainable = prior !== null && previousIdentity !== null;
187
+ const identityPlan = planRepositoryIdentity(identity, chainable ? previousIdentity : null, sha256Hex);
188
+ const captured = {
189
+ ...state,
190
+ pack: nativePack(repository, state.card, chainable ? prior.card : null),
191
+ };
192
+ const bytes = bufferView(encodeRepositoryTransport(captured, {
193
+ parentTransportVersion: chainable ? prior.transportVersion : null,
194
+ ...identityPlan,
195
+ }));
196
196
  return {
197
- state,
198
- stateId: state.stateId,
197
+ state: captured,
198
+ stateId: captured.stateId,
199
199
  transportVersion: sha256Hex(bytes),
200
+ card: captured.card,
201
+ identityHash: identityPlan.identityHash,
200
202
  bytes,
201
203
  };
202
204
  }
203
- function fetchBundle(repository, state) {
204
- const packed = state.card.bundle;
205
- if (!packed)
206
- return;
207
- if (sha256Hex(packed.bytes) !== packed.sha256)
208
- throw new Error("repository bundle checksum mismatch");
209
- const scratch = mkdtempSync(join(tmpdir(), "amalgm-repo-apply-"));
210
- const file = join(scratch, "repository.bundle");
211
- writeFileSync(file, packed.bytes);
212
- try {
213
- runGit(repository, [
214
- "fetch", "--quiet", file,
215
- "+HEAD:refs/amalgm-import/HEAD",
216
- "+refs/heads/*:refs/amalgm-import/heads/*",
217
- "+refs/tags/*:refs/amalgm-import/tags/*",
218
- ]);
219
- }
220
- finally {
221
- rmSync(scratch, { recursive: true, force: true });
222
- }
223
- }
224
205
  function installShallowBoundary(repository, commits) {
225
206
  if (commits.length === 0)
226
207
  return;
@@ -229,10 +210,6 @@ function installShallowBoundary(repository, commits) {
229
210
  writeFileSync(file, `${[...commits].sort().join("\n")}\n`);
230
211
  }
231
212
  function forceRefs(repository, state) {
232
- for (const ref of state.card.branches)
233
- runGit(repository, ["update-ref", `refs/heads/${ref.name}`, ref.commit]);
234
- for (const ref of state.card.tags)
235
- runGit(repository, ["update-ref", `refs/tags/${ref.name}`, ref.commit]);
236
213
  const keep = new Set([
237
214
  ...state.card.branches.map((ref) => `refs/heads/${ref.name}`),
238
215
  ...state.card.tags.map((ref) => `refs/tags/${ref.name}`),
@@ -240,10 +217,14 @@ function forceRefs(repository, state) {
240
217
  const existing = tryGitText(repository, [
241
218
  "for-each-ref", "--format=%(refname)", "refs/heads", "refs/tags", "refs/amalgm-import",
242
219
  ]);
243
- for (const ref of (existing ?? "").split("\n").filter(Boolean)) {
244
- if (!keep.has(ref))
245
- runGit(repository, ["update-ref", "-d", ref]);
246
- }
220
+ const commands = [
221
+ ...state.card.branches.map((ref) => `update refs/heads/${ref.name} ${ref.commit}`),
222
+ ...state.card.tags.map((ref) => `update refs/tags/${ref.name} ${ref.commit}`),
223
+ ...(existing ?? "").split("\n").filter((ref) => ref && !keep.has(ref))
224
+ .map((ref) => `delete ${ref}`),
225
+ "",
226
+ ];
227
+ runGit(repository, ["update-ref", "--stdin"], Buffer.from(commands.join("\n"), "utf8"));
247
228
  }
248
229
  function forceHead(repository, state) {
249
230
  const { head } = state.card;
@@ -286,26 +267,197 @@ function applyCheckpoint(repository, state) {
286
267
  }
287
268
  }
288
269
  }
289
- /** Materialize and then re-derive the semantic ids. Only a proved return is
290
- * accepted as the repository state described by the transport. */
291
- export function applyRepository(repository, bytes) {
292
- const state = unpack(bufferView(bytes).toString("utf8"));
270
+ function importPack(repository, state) {
271
+ if (!state.pack)
272
+ return;
273
+ if (sha256Hex(state.pack.bytes) !== state.pack.sha256) {
274
+ throw new Error("repository Git pack checksum mismatch");
275
+ }
276
+ runGit(repository, [
277
+ "index-pack", "--stdin", "--fix-thin", "--keep=amalgm repository transport",
278
+ ], state.pack.bytes);
279
+ }
280
+ /** Materialize a complete transport chain and then re-derive its semantic
281
+ * state. The oldest node must be self-contained; every later node must name
282
+ * the exact predecessor whose Git objects and identity map it extends. */
283
+ export function applyRepository(repository, chain) {
284
+ if (chain.length === 0)
285
+ throw new Error("repository transport chain is empty");
286
+ const transports = [];
287
+ let priorVersion = null;
288
+ let identity = null;
289
+ for (const bytes of chain) {
290
+ const state = decodeRepositoryTransport(bytes);
291
+ if (state.parentTransportVersion !== priorVersion) {
292
+ throw new Error("repository transport chain is discontinuous");
293
+ }
294
+ identity = applyRepositoryIdentity(identity, state, sha256Hex);
295
+ transports.push(state);
296
+ priorVersion = sha256Hex(bytes);
297
+ }
298
+ const state = transports.at(-1);
293
299
  mkdirSync(repository, { recursive: true });
294
300
  runGit(repository, ["init", "--quiet"]);
295
301
  for (const remote of state.card.remotes)
296
302
  runGit(repository, ["remote", "add", remote.name, remote.url]);
303
+ for (const transport of transports)
304
+ importPack(repository, transport);
297
305
  installShallowBoundary(repository, state.card.shallow ?? []);
298
- fetchBundle(repository, state);
299
306
  forceRefs(repository, state);
300
307
  forceHead(repository, state);
301
308
  applyCheckpoint(repository, state);
302
- const proof = captureState(repository, false);
309
+ const proof = captureState(repository);
310
+ if (proof.cardId !== state.cardId || proof.checkpointId !== state.checkpointId) {
311
+ throw new Error("materialized repository does not reproduce its declared state");
312
+ }
313
+ if (JSON.stringify(proof.card.shallow ?? []) !== JSON.stringify(state.card.shallow ?? [])) {
314
+ throw new Error("materialized repository does not reproduce its shallow boundary");
315
+ }
316
+ return {
317
+ stateId: state.stateId,
318
+ cardId: state.cardId,
319
+ checkpointId: state.checkpointId,
320
+ card: state.card,
321
+ transportVersion: priorVersion,
322
+ identity: identity,
323
+ };
324
+ }
325
+ function readExact(file, offset, bytes) {
326
+ const result = Buffer.allocUnsafe(bytes);
327
+ const descriptor = openSync(file, "r");
328
+ try {
329
+ let cursor = 0;
330
+ while (cursor < bytes) {
331
+ const count = readSync(descriptor, result, cursor, bytes - cursor, offset + cursor);
332
+ if (count === 0)
333
+ throw new Error("repository transport file is truncated");
334
+ cursor += count;
335
+ }
336
+ return result;
337
+ }
338
+ finally {
339
+ closeSync(descriptor);
340
+ }
341
+ }
342
+ export function inspectRepositoryTransportFile(file) {
343
+ const totalBytes = statSync(file).size;
344
+ const prefix = readExact(file, 0, 12);
345
+ const metadataBytes = repositoryTransportMetadataBytes(prefix);
346
+ return inspectRepositoryTransport(readExact(file, 0, metadataBytes), totalBytes);
347
+ }
348
+ async function importPackFile(repository, file, pack) {
349
+ const hash = createHash("sha256");
350
+ const witness = new Transform({
351
+ transform(chunk, _encoding, callback) {
352
+ hash.update(chunk);
353
+ callback(null, chunk);
354
+ },
355
+ });
356
+ const child = spawn("git", [
357
+ "index-pack", "--stdin", "--fix-thin", "--keep=amalgm repository transport",
358
+ ], {
359
+ cwd: repository,
360
+ stdio: ["pipe", "ignore", "pipe"],
361
+ env: { ...process.env, GIT_TERMINAL_PROMPT: "0" },
362
+ });
363
+ const stderr = [];
364
+ child.stderr.on("data", (chunk) => stderr.push(chunk));
365
+ const completed = new Promise((resolveChild, rejectChild) => {
366
+ child.once("error", rejectChild);
367
+ child.once("close", (code) => {
368
+ if (code === 0)
369
+ resolveChild();
370
+ else
371
+ rejectChild(new Error(`git index-pack failed${stderr.length
372
+ ? `: ${Buffer.concat(stderr).toString("utf8").trim()}` : ""}`));
373
+ });
374
+ });
375
+ const source = createReadStream(file, {
376
+ start: pack.range.offset,
377
+ end: pack.range.offset + pack.range.bytes - 1,
378
+ });
379
+ await Promise.all([pipeline(source, witness, child.stdin), completed]);
380
+ if (hash.digest("hex") !== pack.sha256)
381
+ throw new Error("repository Git pack checksum mismatch");
382
+ }
383
+ function readRange(file, range) {
384
+ return range.bytes === 0 ? Buffer.alloc(0) : readExact(file, range.offset, range.bytes);
385
+ }
386
+ function applyCheckpointFile(repository, file, checkpoint) {
387
+ const staged = readRange(file, checkpoint.stagedPatch);
388
+ if (staged.length > 0) {
389
+ runGit(repository, ["apply", "--index", "--binary", "--whitespace=nowarn"], staged);
390
+ }
391
+ const unstaged = readRange(file, checkpoint.unstagedPatch);
392
+ if (unstaged.length > 0) {
393
+ runGit(repository, ["apply", "--binary", "--whitespace=nowarn"], unstaged);
394
+ }
395
+ for (const entry of checkpoint.untracked) {
396
+ if (entry.content === null) {
397
+ throw new Error(`repository transport omitted untracked content for ${entry.path}`);
398
+ }
399
+ const content = readRange(file, entry.content);
400
+ if (sha256Hex(content) !== entry.sha256) {
401
+ throw new Error(`repository untracked content checksum mismatch for ${entry.path}`);
402
+ }
403
+ const absolutePath = join(repository, entry.path);
404
+ mkdirSync(dirname(absolutePath), { recursive: true });
405
+ if (entry.mode === "120000") {
406
+ rmSync(absolutePath, { force: true });
407
+ symlinkSync(content.toString("utf8"), absolutePath);
408
+ }
409
+ else {
410
+ writeFileSync(absolutePath, content);
411
+ chmodSync(absolutePath, entry.mode === "100755" ? 0o755 : 0o644);
412
+ }
413
+ }
414
+ }
415
+ /** Apply sealed repository artifacts by streaming each Git range directly
416
+ * into index-pack. Download already verified each complete transport hash. */
417
+ export async function applyRepositoryFiles(repository, chain) {
418
+ if (chain.length === 0)
419
+ throw new Error("repository transport chain is empty");
420
+ const transports = [];
421
+ let priorVersion = null;
422
+ let identity = null;
423
+ for (const sealed of chain) {
424
+ const layout = inspectRepositoryTransportFile(sealed.file);
425
+ if (layout.parentTransportVersion !== priorVersion) {
426
+ throw new Error("repository transport chain is discontinuous");
427
+ }
428
+ identity = applyRepositoryIdentity(identity, layout, sha256Hex);
429
+ transports.push({ ...sealed, layout });
430
+ priorVersion = sealed.transportVersion;
431
+ }
432
+ const latest = transports.at(-1);
433
+ const state = latest.layout;
434
+ mkdirSync(repository, { recursive: true });
435
+ runGit(repository, ["init", "--quiet"]);
436
+ for (const remote of state.card.remotes)
437
+ runGit(repository, ["remote", "add", remote.name, remote.url]);
438
+ for (const transport of transports) {
439
+ if (transport.layout.pack) {
440
+ await importPackFile(repository, transport.file, transport.layout.pack);
441
+ }
442
+ }
443
+ installShallowBoundary(repository, state.card.shallow ?? []);
444
+ forceRefs(repository, state);
445
+ forceHead(repository, state);
446
+ applyCheckpointFile(repository, latest.file, state.checkpoint);
447
+ const proof = captureState(repository);
303
448
  if (proof.cardId !== state.cardId || proof.checkpointId !== state.checkpointId) {
304
449
  throw new Error("materialized repository does not reproduce its declared state");
305
450
  }
306
451
  if (JSON.stringify(proof.card.shallow ?? []) !== JSON.stringify(state.card.shallow ?? [])) {
307
452
  throw new Error("materialized repository does not reproduce its shallow boundary");
308
453
  }
309
- return state;
454
+ return {
455
+ stateId: state.stateId,
456
+ cardId: state.cardId,
457
+ checkpointId: state.checkpointId,
458
+ card: state.card,
459
+ transportVersion: priorVersion,
460
+ identity: identity,
461
+ };
310
462
  }
311
463
  //# sourceMappingURL=git-repository-host.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"git-repository-host.js","sourceRoot":"","sources":["../src/git-repository-host.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"git-repository-host.js","sourceRoot":"","sources":["../src/git-repository-host.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ import { type CloudEntityRecord, type RepoIdentityEntry } from "@amalgm/live";
2
+ export interface MaterializedGraphRow {
3
+ readonly record: CloudEntityRecord;
4
+ readonly relativePath: string;
5
+ readonly absolutePath: string;
6
+ readonly deviceNumber: number;
7
+ readonly inode: number;
8
+ }
9
+ export interface MaterializedRepositoryGraph {
10
+ readonly record: CloudEntityRecord;
11
+ readonly identity: readonly RepoIdentityEntry[];
12
+ }
13
+ /**
14
+ * Extend already-materialized cloud rows with repository child rows using the
15
+ * transport identity map. This reads only filesystem stats: content and type
16
+ * were already proved before upload and reproduced by Git during download.
17
+ */
18
+ export declare function projectMaterializedGraph(baseRows: readonly MaterializedGraphRow[], repositories: readonly MaterializedRepositoryGraph[], sha256Hex: (input: Uint8Array | string) => string): readonly MaterializedGraphRow[];
@@ -0,0 +1,113 @@
1
+ import { lstatSync } from "node:fs";
2
+ import { basename, dirname, join } from "node:path";
3
+ import { canonicalVersion, membershipHash, } from "@amalgm/live";
4
+ const ENTITY_TYPES = new Set([
5
+ "file.text", "file.binary", "folder", "workspace", "repo.git", "link", "reference",
6
+ ]);
7
+ const LEAF_TYPES = new Set(["file.text", "file.binary", "link", "reference"]);
8
+ function pathSegments(path) {
9
+ const segments = path.split("/");
10
+ if (!path || path.startsWith("/") || segments.some((segment) => !segment || segment === "." || segment === "..")) {
11
+ throw new Error(`repository identity path is unsafe: ${path}`);
12
+ }
13
+ return segments;
14
+ }
15
+ /**
16
+ * Extend already-materialized cloud rows with repository child rows using the
17
+ * transport identity map. This reads only filesystem stats: content and type
18
+ * were already proved before upload and reproduced by Git during download.
19
+ */
20
+ export function projectMaterializedGraph(baseRows, repositories, sha256Hex) {
21
+ const rows = new Map(baseRows.map((row) => [row.record.uuid, row]));
22
+ const facts = new Map();
23
+ for (const repository of repositories) {
24
+ const root = rows.get(repository.record.uuid);
25
+ if (!root || root.record.type !== "repo.git") {
26
+ throw new Error(`materialized repository ${repository.record.uuid} has no local root row`);
27
+ }
28
+ const byPath = new Map([["", repository.record.uuid]]);
29
+ for (const entry of [...repository.identity].sort((left, right) => left.path.split("/").length - right.path.split("/").length
30
+ || (left.path < right.path ? -1 : left.path > right.path ? 1 : 0))) {
31
+ const segments = pathSegments(entry.path);
32
+ if (byPath.has(entry.path))
33
+ throw new Error(`repository identity has duplicate path: ${entry.path}`);
34
+ if (!ENTITY_TYPES.has(entry.type)) {
35
+ throw new Error(`repository identity ${entry.path} has unknown type: ${entry.type}`);
36
+ }
37
+ const type = entry.type;
38
+ if (type === "workspace" || type === "reference") {
39
+ throw new Error(`repository identity ${entry.path} cannot contain ${type}`);
40
+ }
41
+ const parentPath = dirname(entry.path) === "." ? "" : dirname(entry.path).split("\\").join("/");
42
+ const parentUUID = byPath.get(parentPath);
43
+ if (!parentUUID)
44
+ throw new Error(`repository identity ${entry.path} has no parent`);
45
+ const existing = rows.get(entry.uuid);
46
+ const relativePath = [root.relativePath, entry.path].filter(Boolean).join("/");
47
+ const absolutePath = join(root.absolutePath, ...segments);
48
+ if (existing) {
49
+ if (existing.relativePath !== relativePath || existing.record.type !== type) {
50
+ throw new Error(`repository identity ${entry.path} conflicts with its cloud row`);
51
+ }
52
+ byPath.set(entry.path, entry.uuid);
53
+ continue;
54
+ }
55
+ const payloadVersion = entry.payloadVersion ?? null;
56
+ if (LEAF_TYPES.has(type) && !payloadVersion) {
57
+ throw new Error(`repository identity ${entry.path} has no payload evidence`);
58
+ }
59
+ if (type === "repo.git") {
60
+ throw new Error(`nested repository ${entry.path} requires its own cloud row`);
61
+ }
62
+ const stats = lstatSync(absolutePath);
63
+ facts.set(entry.uuid, {
64
+ uuid: entry.uuid,
65
+ type,
66
+ parentUUID,
67
+ name: basename(entry.path),
68
+ relativePath,
69
+ absolutePath,
70
+ payloadVersion,
71
+ deviceNumber: stats.dev,
72
+ inode: stats.ino,
73
+ });
74
+ byPath.set(entry.path, entry.uuid);
75
+ }
76
+ }
77
+ const children = new Map();
78
+ for (const fact of facts.values()) {
79
+ const group = children.get(fact.parentUUID) ?? [];
80
+ group.push({ uuid: fact.uuid, name: fact.name });
81
+ children.set(fact.parentUUID, group);
82
+ }
83
+ for (const fact of facts.values()) {
84
+ const payload = fact.type === "folder"
85
+ ? membershipHash(children.get(fact.uuid) ?? [], sha256Hex)
86
+ : fact.payloadVersion;
87
+ const record = {
88
+ uuid: fact.uuid,
89
+ type: fact.type,
90
+ parentUUID: fact.parentUUID,
91
+ name: fact.name,
92
+ status: "active",
93
+ version: canonicalVersion({
94
+ type: fact.type,
95
+ parentUUID: fact.parentUUID,
96
+ name: fact.name,
97
+ status: "active",
98
+ payloadVersion: payload,
99
+ }, sha256Hex),
100
+ payloadVersion: fact.payloadVersion,
101
+ transportVersion: null,
102
+ };
103
+ rows.set(fact.uuid, {
104
+ record,
105
+ relativePath: fact.relativePath,
106
+ absolutePath: fact.absolutePath,
107
+ deviceNumber: fact.deviceNumber,
108
+ inode: fact.inode,
109
+ });
110
+ }
111
+ return [...rows.values()];
112
+ }
113
+ //# sourceMappingURL=materialized-graph.js.map