@forgecart/cli 2.202610141555.0 → 2.202610141948.0

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 (42) hide show
  1. package/dist/src/admin-api/admin-api.answer.d.ts +26 -0
  2. package/dist/src/admin-api/admin-api.answer.js +43 -0
  3. package/dist/src/admin-api/admin-api.answer.js.map +1 -0
  4. package/dist/src/admin-api/admin-api.client.d.ts +6 -4
  5. package/dist/src/admin-api/admin-api.client.js +19 -15
  6. package/dist/src/admin-api/admin-api.client.js.map +1 -1
  7. package/dist/src/admin-api/admin-api.result.d.ts +15 -9
  8. package/dist/src/admin-api/admin-api.result.js +45 -30
  9. package/dist/src/admin-api/admin-api.result.js.map +1 -1
  10. package/dist/src/authorization/cli-authorization.client.d.ts +4 -3
  11. package/dist/src/authorization/cli-authorization.client.js +18 -13
  12. package/dist/src/authorization/cli-authorization.client.js.map +1 -1
  13. package/dist/src/commands/sync.js +1 -1
  14. package/dist/src/commands/sync.js.map +1 -1
  15. package/dist/src/sync/sync-bundle-push.d.ts +15 -3
  16. package/dist/src/sync/sync-bundle-push.js +45 -2
  17. package/dist/src/sync/sync-bundle-push.js.map +1 -1
  18. package/dist/src/sync/sync-record.file.d.ts +27 -3
  19. package/dist/src/sync/sync-record.file.js +77 -25
  20. package/dist/src/sync/sync-record.file.js.map +1 -1
  21. package/dist/src/sync/sync-rejection.d.ts +24 -0
  22. package/dist/src/sync/sync-rejection.js +58 -0
  23. package/dist/src/sync/sync-rejection.js.map +1 -0
  24. package/dist/src/sync/sync-repository.d.ts +9 -1
  25. package/dist/src/sync/sync-repository.js +23 -1
  26. package/dist/src/sync/sync-repository.js.map +1 -1
  27. package/dist/src/sync/sync-round-follow.d.ts +42 -0
  28. package/dist/src/sync/sync-round-follow.js +128 -0
  29. package/dist/src/sync/sync-round-follow.js.map +1 -0
  30. package/dist/src/sync/sync-round.d.ts +49 -8
  31. package/dist/src/sync/sync-round.js +134 -27
  32. package/dist/src/sync/sync-round.js.map +1 -1
  33. package/dist/src/sync/sync.runner.d.ts +4 -2
  34. package/dist/src/sync/sync.runner.js +6 -3
  35. package/dist/src/sync/sync.runner.js.map +1 -1
  36. package/dist/src/sync/type/sync.types.d.ts +78 -2
  37. package/dist/src/sync/type/sync.types.js +31 -0
  38. package/dist/src/sync/type/sync.types.js.map +1 -1
  39. package/dist/src/sync/workspace-sync.client.d.ts +29 -6
  40. package/dist/src/sync/workspace-sync.client.js +141 -21
  41. package/dist/src/sync/workspace-sync.client.js.map +1 -1
  42. package/package.json +1 -1
@@ -6,6 +6,14 @@ import { print } from '../output.js';
6
6
  * multipart envelope stay well under every hop's per-request body cap.
7
7
  */
8
8
  const PART_BYTES = 8 * 1024 * 1024;
9
+ /** How many top-level entries of the pushed tree print by name; the rest print as one count. */
10
+ const LISTED_ENTRIES = 10;
11
+ /** The width a line's label, and a top-level entry's name, are padded to. */
12
+ const LINE_LABEL_WIDTH = 10;
13
+ const ENTRY_NAME_WIDTH = 24;
14
+ /** The units a byte count prints in, each 1024 of the one before. */
15
+ const BYTE_UNITS = ['B', 'KiB', 'MiB', 'GiB'];
16
+ const BYTES_PER_UNIT = 1024;
9
17
  /**
10
18
  * How `forgecart sync` sends a push's bundle (factory task 2375). A bundle
11
19
  * within one part travels as it always has: ONE push carrying it whole. A
@@ -16,14 +24,22 @@ const PART_BYTES = 8 * 1024 * 1024;
16
24
  * each printed as it is sent; and ONE push naming the upload lands them as one
17
25
  * bundle. A run cut off mid-way leaves the parts it sent on the workspace: the
18
26
  * next run cuts the same bundle, begins it again, and sends only the rest.
27
+ * Either way the push answers the round it lands as (factory task 2481), and
28
+ * before a byte of it is sent the push prints the bundle's size and the pushed
29
+ * tree's top-level entries by the bytes they hold, the largest first — what
30
+ * makes a push large is named before it is paid for.
19
31
  */
20
32
  export class SyncBundlePush {
21
33
  client;
22
34
  constructor(client) {
23
35
  this.client = client;
24
36
  }
25
- /** Push `bundle` with the merchant lines of the env files `envFiles`, whole or in parts. */
26
- async send(bundle, envFiles) {
37
+ /**
38
+ * Push `bundle` — its tree's top-level entries `contents` — with the merchant
39
+ * lines of the env files `envFiles`, whole or in parts, and answer its round.
40
+ */
41
+ async send(bundle, contents, envFiles) {
42
+ this.printContents(bundle, contents);
27
43
  if (bundle.length <= PART_BYTES)
28
44
  return this.client.push(bundle, envFiles);
29
45
  const parts = this.partsOf(bundle);
@@ -33,6 +49,33 @@ export class SyncBundlePush {
33
49
  await this.sendParts(upload, parts);
34
50
  return this.client.land(upload.id, envFiles);
35
51
  }
52
+ /** The bundle's size, then the pushed tree's top-level entries by the bytes they hold, the largest first. */
53
+ printContents(bundle, contents) {
54
+ print(this.line('bundle', `${this.size(bundle.length)} to send (${String(bundle.length)} bytes); the pushed tree by top-level entry:`));
55
+ for (const entry of contents.slice(0, LISTED_ENTRIES)) {
56
+ print(this.line('tree', `${entry.name.padEnd(ENTRY_NAME_WIDTH)} ${this.size(entry.bytes)}`));
57
+ }
58
+ const rest = contents.slice(LISTED_ENTRIES);
59
+ if (rest.length === 0)
60
+ return;
61
+ const restBytes = rest.reduce((total, entry) => total + entry.bytes, 0);
62
+ print(this.line('tree', `… and ${String(rest.length)} more, ${this.size(restBytes)} in all`));
63
+ }
64
+ /** `bytes` in the largest unit that keeps it at one or more, to one decimal — bytes as they are. */
65
+ size(bytes) {
66
+ let value = bytes;
67
+ let unit = 0;
68
+ while (value >= BYTES_PER_UNIT && unit < BYTE_UNITS.length - 1) {
69
+ value /= BYTES_PER_UNIT;
70
+ unit += 1;
71
+ }
72
+ if (unit === 0)
73
+ return `${String(bytes)} ${BYTE_UNITS[0]}`;
74
+ return `${value.toFixed(1)} ${BYTE_UNITS[unit]}`;
75
+ }
76
+ line(label, text) {
77
+ return ` ${label.padEnd(LINE_LABEL_WIDTH)} ${text}`;
78
+ }
36
79
  /**
37
80
  * Send every part the upload does not hold, in order, one request each, and
38
81
  * print each as it goes — its place among the parts, and the bytes the
@@ -1 +1 @@
1
- {"version":3,"file":"sync-bundle-push.js","sourceRoot":"","sources":["../../../src/sync/sync-bundle-push.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sync-bundle-push.js","sourceRoot":"","sources":["../../../src/sync/sync-bundle-push.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import type { SyncEnvDigests, SyncRecord } from './type/sync.types.js';
1
+ import type { SyncEnvDigests, SyncPendingRound, SyncRecord } from './type/sync.types.js';
2
2
  /**
3
3
  * The last sync of one storefront (#2781), kept in `.forgecart/sync/state.json`
4
4
  * beside the private repository: the channel it ran against — a digest of the
@@ -12,9 +12,16 @@ import type { SyncEnvDigests, SyncRecord } from './type/sync.types.js';
12
12
  * changes it while the channel and its board stay the same (factory task
13
13
  * 2375). A laptop that pulled through one route pushes through another onto
14
14
  * the base it pulled.
15
+ *
16
+ * Beside it, in `.forgecart/sync/round.json`, the push's round this laptop has
17
+ * not seen end (factory task 2481): written the moment a push answered its
18
+ * round, removed once the round ended, so a run cut off while it followed the
19
+ * round — Ctrl-C, a lost network — leaves it for the next run on that channel,
20
+ * through whatever route, to follow before it pushes anything.
15
21
  */
16
22
  export declare class SyncRecordFile {
17
23
  private readonly path;
24
+ private readonly pendingRoundPath;
18
25
  private readonly channel;
19
26
  /**
20
27
  * @param storefront the storefront directory.
@@ -25,12 +32,29 @@ export declare class SyncRecordFile {
25
32
  read(): Promise<SyncRecord | null>;
26
33
  /** Record a sync that left the laptop on `servingSha`, with the env files' lines as `env` digests them. */
27
34
  write(servingSha: string, env: Readonly<SyncEnvDigests>): Promise<void>;
35
+ /** This channel's push round a run left before its end — null for none, or one of another channel. */
36
+ readPendingRound(): Promise<SyncPendingRound | null>;
37
+ /**
38
+ * Record the round `roundId` a push answered before following it: the push
39
+ * was cut on the serving commit `cutOn`, and once it landed the record takes
40
+ * the env files' lines as `env` digests them.
41
+ */
42
+ writePendingRound(roundId: string, cutOn: string, env: Readonly<SyncEnvDigests>): Promise<void>;
43
+ /** Forget the pending round: it ended. */
44
+ clearPendingRound(): Promise<void>;
28
45
  /** The record's fields, checked one by one: a file sync cannot read is an error naming it. */
29
46
  private parse;
47
+ /** The pending round's fields, checked one by one: a file sync cannot read is an error naming it. */
48
+ private parsePendingRound;
49
+ /** A JSON object, parsed from the text of the file at `path`. */
50
+ private parseObject;
51
+ private isCommitId;
30
52
  /** The env digests, file by file: every file one a storefront reads, every digest a string. */
31
53
  private parseEnv;
32
54
  private parseFileDigests;
33
- private unreadableMessage;
34
- /** The record's text — null before the first sync; any other failure propagates. */
55
+ /** The file at `path` is none sync can read, and what removing it does. */
56
+ private unreadable;
57
+ private remedyFor;
58
+ /** The text of the file at `path` — null while there is none; any other failure propagates. */
35
59
  private readIfPresent;
36
60
  }
@@ -1,11 +1,12 @@
1
1
  import { createHash } from 'node:crypto';
2
- import { readFile, writeFile } from 'node:fs/promises';
2
+ import { readFile, rm, writeFile } from 'node:fs/promises';
3
3
  import { join } from 'node:path';
4
4
  import { isJsonObject } from '../json.js';
5
5
  import { isStorefrontEnvFile } from '../util/dotenv.util.js';
6
6
  import { SYNC_STATE_PATH } from './sync-repository.js';
7
- /** The record's file, in the private state directory. */
7
+ /** The record's file, and the file of a push's round not yet seen end, in the private state directory. */
8
8
  const RECORD_FILE = 'state.json';
9
+ const PENDING_ROUND_FILE = 'round.json';
9
10
  /** A commit id as git names one: lowercase hex digits — 40 of them (sha1) or 64 (sha256). */
10
11
  const COMMIT_ID = /^[0-9a-f]+$/;
11
12
  const COMMIT_ID_LENGTHS = new Set([40, 64]);
@@ -22,9 +23,16 @@ const COMMIT_ID_LENGTHS = new Set([40, 64]);
22
23
  * changes it while the channel and its board stay the same (factory task
23
24
  * 2375). A laptop that pulled through one route pushes through another onto
24
25
  * the base it pulled.
26
+ *
27
+ * Beside it, in `.forgecart/sync/round.json`, the push's round this laptop has
28
+ * not seen end (factory task 2481): written the moment a push answered its
29
+ * round, removed once the round ended, so a run cut off while it followed the
30
+ * round — Ctrl-C, a lost network — leaves it for the next run on that channel,
31
+ * through whatever route, to follow before it pushes anything.
25
32
  */
26
33
  export class SyncRecordFile {
27
34
  path;
35
+ pendingRoundPath;
28
36
  channel;
29
37
  /**
30
38
  * @param storefront the storefront directory.
@@ -32,11 +40,12 @@ export class SyncRecordFile {
32
40
  */
33
41
  constructor(storefront, channelToken) {
34
42
  this.path = join(storefront, ...SYNC_STATE_PATH, RECORD_FILE);
43
+ this.pendingRoundPath = join(storefront, ...SYNC_STATE_PATH, PENDING_ROUND_FILE);
35
44
  this.channel = createHash('sha256').update(channelToken).digest('hex');
36
45
  }
37
46
  /** This channel's last sync — null before the first, or after a sync against another channel. */
38
47
  async read() {
39
- const raw = await this.readIfPresent();
48
+ const raw = await this.readIfPresent(this.path);
40
49
  if (raw === null)
41
50
  return null;
42
51
  const record = this.parse(raw);
@@ -47,54 +56,97 @@ export class SyncRecordFile {
47
56
  const record = { channel: this.channel, servingSha, env: { ...env } };
48
57
  await writeFile(this.path, `${JSON.stringify(record, null, 2)}\n`, 'utf8');
49
58
  }
59
+ /** This channel's push round a run left before its end — null for none, or one of another channel. */
60
+ async readPendingRound() {
61
+ const raw = await this.readIfPresent(this.pendingRoundPath);
62
+ if (raw === null)
63
+ return null;
64
+ const pending = this.parsePendingRound(raw);
65
+ return pending.channel === this.channel ? pending : null;
66
+ }
67
+ /**
68
+ * Record the round `roundId` a push answered before following it: the push
69
+ * was cut on the serving commit `cutOn`, and once it landed the record takes
70
+ * the env files' lines as `env` digests them.
71
+ */
72
+ async writePendingRound(roundId, cutOn, env) {
73
+ const pending = { channel: this.channel, roundId, cutOn, env: { ...env } };
74
+ await writeFile(this.pendingRoundPath, `${JSON.stringify(pending, null, 2)}\n`, 'utf8');
75
+ }
76
+ /** Forget the pending round: it ended. */
77
+ async clearPendingRound() {
78
+ await rm(this.pendingRoundPath, { force: true });
79
+ }
50
80
  /** The record's fields, checked one by one: a file sync cannot read is an error naming it. */
51
81
  parse(raw) {
82
+ const parsed = this.parseObject(raw, this.path);
83
+ const { channel, servingSha, env } = parsed;
84
+ if (typeof channel !== 'string' || !this.isCommitId(servingSha)) {
85
+ throw this.unreadable(this.path);
86
+ }
87
+ return { channel, servingSha, env: this.parseEnv(env, this.path) };
88
+ }
89
+ /** The pending round's fields, checked one by one: a file sync cannot read is an error naming it. */
90
+ parsePendingRound(raw) {
91
+ const parsed = this.parseObject(raw, this.pendingRoundPath);
92
+ const { channel, roundId, cutOn, env } = parsed;
93
+ if (typeof channel !== 'string' || typeof roundId !== 'string' || roundId === '') {
94
+ throw this.unreadable(this.pendingRoundPath);
95
+ }
96
+ if (!this.isCommitId(cutOn))
97
+ throw this.unreadable(this.pendingRoundPath);
98
+ return { channel, roundId, cutOn, env: this.parseEnv(env, this.pendingRoundPath) };
99
+ }
100
+ /** A JSON object, parsed from the text of the file at `path`. */
101
+ parseObject(raw, path) {
52
102
  let parsed;
53
103
  try {
54
104
  parsed = JSON.parse(raw);
55
105
  }
56
106
  catch (error) {
57
- throw new Error(this.unreadableMessage(), { cause: error });
107
+ throw this.unreadable(path, { cause: error });
58
108
  }
59
109
  if (!isJsonObject(parsed))
60
- throw new Error(this.unreadableMessage());
61
- const { channel, servingSha, env } = parsed;
62
- if (typeof channel !== 'string' || typeof servingSha !== 'string') {
63
- throw new Error(this.unreadableMessage());
64
- }
65
- if (!COMMIT_ID_LENGTHS.has(servingSha.length) || !COMMIT_ID.test(servingSha)) {
66
- throw new Error(this.unreadableMessage());
67
- }
68
- return { channel, servingSha, env: this.parseEnv(env) };
110
+ throw this.unreadable(path);
111
+ return parsed;
112
+ }
113
+ isCommitId(value) {
114
+ return typeof value === 'string' && COMMIT_ID_LENGTHS.has(value.length) && COMMIT_ID.test(value);
69
115
  }
70
116
  /** The env digests, file by file: every file one a storefront reads, every digest a string. */
71
- parseEnv(env) {
117
+ parseEnv(env, path) {
72
118
  if (!isJsonObject(env))
73
- throw new Error(this.unreadableMessage());
119
+ throw this.unreadable(path);
74
120
  const digests = {};
75
121
  for (const [file, fileDigests] of Object.entries(env)) {
76
122
  if (!isStorefrontEnvFile(file))
77
- throw new Error(this.unreadableMessage());
78
- digests[file] = this.parseFileDigests(fileDigests);
123
+ throw this.unreadable(path);
124
+ digests[file] = this.parseFileDigests(fileDigests, path);
79
125
  }
80
126
  return digests;
81
127
  }
82
- parseFileDigests(fileDigests) {
128
+ parseFileDigests(fileDigests, path) {
83
129
  if (!isJsonObject(fileDigests))
84
- throw new Error(this.unreadableMessage());
130
+ throw this.unreadable(path);
85
131
  const entries = Object.entries(fileDigests);
86
132
  if (!entries.every((entry) => typeof entry[1] === 'string')) {
87
- throw new Error(this.unreadableMessage());
133
+ throw this.unreadable(path);
88
134
  }
89
135
  return Object.fromEntries(entries);
90
136
  }
91
- unreadableMessage() {
92
- return `${this.path} is not a sync record sync can read; remove it to sync as a first sync.`;
137
+ /** The file at `path` is none sync can read, and what removing it does. */
138
+ unreadable(path, options) {
139
+ return new Error(`${path} is not a sync record sync can read; remove it to ${this.remedyFor(path)}.`, options);
140
+ }
141
+ remedyFor(path) {
142
+ if (path === this.path)
143
+ return 'sync as a first sync';
144
+ return 'sync without following the round it names';
93
145
  }
94
- /** The record's text — null before the first sync; any other failure propagates. */
95
- async readIfPresent() {
146
+ /** The text of the file at `path` — null while there is none; any other failure propagates. */
147
+ async readIfPresent(path) {
96
148
  try {
97
- return await readFile(this.path, 'utf8');
149
+ return await readFile(path, 'utf8');
98
150
  }
99
151
  catch (error) {
100
152
  if (error.code === 'ENOENT')
@@ -1 +1 @@
1
- {"version":3,"file":"sync-record.file.js","sourceRoot":"","sources":["../../../src/sync/sync-record.file.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sync-record.file.js","sourceRoot":"","sources":["../../../src/sync/sync-record.file.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ import { CliRefusal } from '../exit-ladder.js';
2
+ import { type SyncPushResult } from './type/sync.types.js';
3
+ /**
4
+ * A push the workspace did not take, as `forgecart sync` reports it (#2781,
5
+ * factory task 2481): exit 1, with what refused it, most actionable first —
6
+ * every blocking SEO finding on a line of its own with its code, its route and
7
+ * what was observed there; then the warnings, one line per code counting its
8
+ * findings, which never block; then the compile gate's messages and the
9
+ * runtime error, every line of them in full.
10
+ */
11
+ export declare class SyncRejection {
12
+ private readonly verdict;
13
+ /** @param verdict the verdict of a round the workspace did not take. */
14
+ constructor(verdict: SyncPushResult);
15
+ /** The refusal the run ends with. */
16
+ refusal(): CliRefusal;
17
+ /** One line per blocking finding: its code, its route and what was observed there. */
18
+ private blockingLines;
19
+ /** One line per warning code, counting its findings — the most frequent first. */
20
+ private warningLines;
21
+ private isBlocking;
22
+ /** `text`, every line of it, indented under the refusal. */
23
+ private indented;
24
+ }
@@ -0,0 +1,58 @@
1
+ import { CliExitLadder, CliRefusal } from '../exit-ladder.js';
2
+ import { SyncSeoSeverity } from './type/sync.types.js';
3
+ /** A commit id in print: its first twelve digits. */
4
+ const SHORT_SHA_LENGTH = 12;
5
+ /** The severities a finding blocks the push with, as the round's verdict names them. */
6
+ const BLOCKING_SEVERITIES = new Set([SyncSeoSeverity.BLOCKING]);
7
+ /**
8
+ * A push the workspace did not take, as `forgecart sync` reports it (#2781,
9
+ * factory task 2481): exit 1, with what refused it, most actionable first —
10
+ * every blocking SEO finding on a line of its own with its code, its route and
11
+ * what was observed there; then the warnings, one line per code counting its
12
+ * findings, which never block; then the compile gate's messages and the
13
+ * runtime error, every line of them in full.
14
+ */
15
+ export class SyncRejection {
16
+ verdict;
17
+ /** @param verdict the verdict of a round the workspace did not take. */
18
+ constructor(verdict) {
19
+ this.verdict = verdict;
20
+ }
21
+ /** The refusal the run ends with. */
22
+ refusal() {
23
+ const { servingSha, gateMessages, runtimeError, seoFindings } = this.verdict;
24
+ return new CliRefusal(CliExitLadder.error, [
25
+ `the workspace did not take the push; serving stays at ${(servingSha ?? '').slice(0, SHORT_SHA_LENGTH)}, and this laptop's tree as it is:`,
26
+ ...this.blockingLines(seoFindings),
27
+ ...this.warningLines(seoFindings),
28
+ ...gateMessages.flatMap((message) => this.indented(message)),
29
+ ...(runtimeError === null ? [] : this.indented(`runtime: ${runtimeError}`)),
30
+ ]);
31
+ }
32
+ /** One line per blocking finding: its code, its route and what was observed there. */
33
+ blockingLines(findings) {
34
+ return findings
35
+ .filter((finding) => this.isBlocking(finding))
36
+ .map(({ code, url, detail }) => ` seo blocking ${code} at ${url}: ${detail}`);
37
+ }
38
+ /** One line per warning code, counting its findings — the most frequent first. */
39
+ warningLines(findings) {
40
+ const counts = new Map();
41
+ for (const finding of findings) {
42
+ if (this.isBlocking(finding))
43
+ continue;
44
+ counts.set(finding.code, (counts.get(finding.code) ?? 0) + 1);
45
+ }
46
+ return [...counts]
47
+ .sort(([, left], [, right]) => right - left)
48
+ .map(([code, count]) => ` seo warning ${code}: ${String(count)} finding(s), none blocking`);
49
+ }
50
+ isBlocking(finding) {
51
+ return BLOCKING_SEVERITIES.has(finding.severity);
52
+ }
53
+ /** `text`, every line of it, indented under the refusal. */
54
+ indented(text) {
55
+ return text.split('\n').map((line) => ` ${line}`);
56
+ }
57
+ }
58
+ //# sourceMappingURL=sync-rejection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sync-rejection.js","sourceRoot":"","sources":["../../../src/sync/sync-rejection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAE9D,OAAO,EAAE,eAAe,EAA4C,MAAM,sBAAsB,CAAC;AAEjG,qDAAqD;AACrD,MAAM,gBAAgB,GAAG,EAAE,CAAC;AAE5B,wFAAwF;AACxF,MAAM,mBAAmB,GAAwB,IAAI,GAAG,CAAS,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC,CAAC;AAE7F;;;;;;;GAOG;AACH,MAAM,OAAO,aAAa;IAEK;IAD7B,wEAAwE;IACxE,YAA6B,OAAuB;QAAvB,YAAO,GAAP,OAAO,CAAgB;IAAG,CAAC;IAExD,qCAAqC;IACrC,OAAO;QACL,MAAM,EAAE,UAAU,EAAE,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC;QAC7E,OAAO,IAAI,UAAU,CAAC,aAAa,CAAC,KAAK,EAAE;YACzC,yDAAyD,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,gBAAgB,CAAC,oCAAoC;YAC1I,GAAG,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC;YAClC,GAAG,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC;YACjC,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;YAC5D,GAAG,CAAC,YAAY,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,YAAY,EAAE,CAAC,CAAC;SAC5E,CAAC,CAAC;IACL,CAAC;IAED,sFAAsF;IAC9E,aAAa,CAAC,QAAmC;QACvD,OAAO,QAAQ;aACZ,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;aAC7C,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,kBAAkB,IAAI,OAAO,GAAG,KAAK,MAAM,EAAE,CAAC,CAAC;IACnF,CAAC;IAED,kFAAkF;IAC1E,YAAY,CAAC,QAAmC;QACtD,MAAM,MAAM,GAAG,IAAI,GAAG,EAAkB,CAAC;QACzC,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAC/B,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC;gBAAE,SAAS;YACvC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QAChE,CAAC;QACD,OAAO,CAAC,GAAG,MAAM,CAAC;aACf,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,KAAK,GAAG,IAAI,CAAC;aAC3C,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,kBAAkB,IAAI,KAAK,MAAM,CAAC,KAAK,CAAC,4BAA4B,CAAC,CAAC;IAClG,CAAC;IAEO,UAAU,CAAC,OAAuB;QACxC,OAAO,mBAAmB,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACnD,CAAC;IAED,4DAA4D;IACpD,QAAQ,CAAC,IAAY;QAC3B,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;IACrD,CAAC;CACF"}
@@ -1,4 +1,4 @@
1
- import { type SyncMaterialized, type SyncTreeChange } from './type/sync.types.js';
1
+ import { type SyncMaterialized, type SyncTopLevelEntry, type SyncTreeChange } from './type/sync.types.js';
2
2
  /** Where sync keeps its private state, under the storefront's `.forgecart/` — which never travels. */
3
3
  export declare const SYNC_STATE_PATH: readonly [".forgecart", "sync"];
4
4
  /**
@@ -56,6 +56,12 @@ export declare class SyncRepository {
56
56
  * pull writes onto the laptop nor a plan lists as changed.
57
57
  */
58
58
  travellingTree(commit: string): Promise<string>;
59
+ /**
60
+ * The top-level entries of `tree` by the bytes their files hold, the largest
61
+ * first (factory task 2481): a directory by every file beneath it, named with
62
+ * a trailing `/`, a top-level file by its own bytes.
63
+ */
64
+ topLevelSizes(tree: string): Promise<SyncTopLevelEntry[]>;
59
65
  /** The paths `to` changes against `from`, path by path. */
60
66
  changes(from: string, to: string): Promise<SyncTreeChange[]>;
61
67
  /**
@@ -96,6 +102,8 @@ export declare class SyncRepository {
96
102
  private treeOf;
97
103
  /** An `ls-tree` entry's path: everything after its tab. */
98
104
  private entryPath;
105
+ /** An `ls-tree -l` entry's object size, its fourth field — a submodule's commit (`-`) holds no bytes here. */
106
+ private entrySize;
99
107
  /** Whether `path` travels: it lies outside the platform's top-level `.forgecart/`, and the runtime does not own it. */
100
108
  private travels;
101
109
  /**
@@ -3,7 +3,7 @@ import { randomUUID } from 'node:crypto';
3
3
  import { access, mkdir, readdir, readFile, rm, rmdir, writeFile } from 'node:fs/promises';
4
4
  import { dirname, join } from 'node:path';
5
5
  import { CliExitLadder, CliRefusal } from '../exit-ladder.js';
6
- import { SyncChangeKind } from './type/sync.types.js';
6
+ import { SyncChangeKind, } from './type/sync.types.js';
7
7
  /** Where sync keeps its private state, under the storefront's `.forgecart/` — which never travels. */
8
8
  export const SYNC_STATE_PATH = ['.forgecart', 'sync'];
9
9
  /** The private repository, and the index the laptop's tree is snapshotted into. */
@@ -178,6 +178,23 @@ export class SyncRepository {
178
178
  const files = await this.fileEntries(`${commit}^{tree}`);
179
179
  return this.treeOf(files.filter((entry) => this.travels(this.entryPath(entry))));
180
180
  }
181
+ /**
182
+ * The top-level entries of `tree` by the bytes their files hold, the largest
183
+ * first (factory task 2481): a directory by every file beneath it, named with
184
+ * a trailing `/`, a top-level file by its own bytes.
185
+ */
186
+ async topLevelSizes(tree) {
187
+ const sizes = new Map();
188
+ for (const entry of this.nulRecords(await this.git(['ls-tree', '-r', '-l', '-z', tree]))) {
189
+ const path = this.entryPath(entry);
190
+ const slash = path.indexOf('/');
191
+ const name = slash === -1 ? path : `${path.slice(0, slash)}/`;
192
+ sizes.set(name, (sizes.get(name) ?? 0) + this.entrySize(entry));
193
+ }
194
+ return [...sizes]
195
+ .map(([name, bytes]) => ({ name, bytes }))
196
+ .sort((left, right) => right.bytes - left.bytes || left.name.localeCompare(right.name));
197
+ }
181
198
  /** The paths `to` changes against `from`, path by path. */
182
199
  async changes(from, to) {
183
200
  const run = await this.git(['diff-tree', '-r', '-z', '--no-renames', from, to]);
@@ -283,6 +300,11 @@ export class SyncRepository {
283
300
  entryPath(entry) {
284
301
  return entry.slice(entry.indexOf('\t') + 1);
285
302
  }
303
+ /** An `ls-tree -l` entry's object size, its fourth field — a submodule's commit (`-`) holds no bytes here. */
304
+ entrySize(entry) {
305
+ const size = Number(entry.slice(0, entry.indexOf('\t')).trim().split(/\s+/)[3]);
306
+ return Number.isSafeInteger(size) ? size : 0;
307
+ }
286
308
  /** Whether `path` travels: it lies outside the platform's top-level `.forgecart/`, and the runtime does not own it. */
287
309
  travels(path) {
288
310
  const segments = path.split('/');
@@ -1 +1 @@
1
- {"version":3,"file":"sync-repository.js","sourceRoot":"","sources":["../../../src/sync/sync-repository.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sync-repository.js","sourceRoot":"","sources":["../../../src/sync/sync-repository.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,42 @@
1
+ import { type SyncPushResult, type SyncPushRound } from './type/sync.types.js';
2
+ import type { WorkspaceSyncClient } from './workspace-sync.client.js';
3
+ /**
4
+ * Follows a push's round to its verdict (factory task 2481): the push answered
5
+ * the round at once, and the workspace lands it on its own time — so the follow
6
+ * reads the round every {@link ROUND_READ_INTERVAL_MS}, each read its own
7
+ * exchange under `--timeout`, until it ended. Every step prints a line as it
8
+ * starts and another as it ends, with the time it took — a step the round
9
+ * skipped prints as skipped — in the order the round went through them, and
10
+ * then the verdict. A refusal the round ended on is the read's own error,
11
+ * exactly as the push would have answered it.
12
+ */
13
+ export declare class SyncRoundFollow {
14
+ private readonly client;
15
+ private readonly interrupt;
16
+ /**
17
+ * @param client the admin API the round is read from.
18
+ * @param interrupt ends the follow — the wait and the read in flight — when the run is interrupted.
19
+ */
20
+ constructor(client: WorkspaceSyncClient, interrupt: AbortSignal);
21
+ /** Follow `round`, as the push answered it, to its verdict. */
22
+ verdictOf(round: SyncPushRound): Promise<SyncPushResult>;
23
+ /** Follow the round `roundId` a run cut off before its verdict left behind. */
24
+ verdictOfRecorded(roundId: string): Promise<SyncPushResult>;
25
+ /** Print every step whose standing changed since it last printed. */
26
+ private printSteps;
27
+ /** How a step stands, in words: started, ended with the time it took, or skipped. */
28
+ private standing;
29
+ /** The verdict an ended round carries, printed — an ended round without one is the admin API's broken contract. */
30
+ private verdictPrinted;
31
+ /** What the round ended on, in words: the tree landed — on the serving commit it left, when it carried one — or rejected. */
32
+ private verdictWords;
33
+ /** `ms` as a person reads it: milliseconds under a second, seconds to one decimal from there. */
34
+ private elapsed;
35
+ private labelOf;
36
+ private line;
37
+ /**
38
+ * Wait one read's interval. An interrupt ends the wait at once, and the read
39
+ * after it, given the same interrupt, ends the follow as interrupted.
40
+ */
41
+ private pause;
42
+ }