@amalgm/live 0.2.53 → 0.2.55

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 (97) hide show
  1. package/PURPOSE.md +17 -0
  2. package/dist/contracts/binding.d.ts +3 -2
  3. package/dist/contracts/binding.d.ts.map +1 -1
  4. package/dist/contracts/deployments.d.ts +39 -0
  5. package/dist/contracts/deployments.d.ts.map +1 -0
  6. package/dist/contracts/deployments.js +75 -0
  7. package/dist/contracts/deployments.js.map +1 -0
  8. package/dist/contracts/index.d.ts +1 -0
  9. package/dist/contracts/index.d.ts.map +1 -1
  10. package/dist/contracts/index.js +1 -0
  11. package/dist/contracts/index.js.map +1 -1
  12. package/dist/detection/adapter-contract.d.ts +0 -33
  13. package/dist/detection/adapter-contract.d.ts.map +1 -1
  14. package/dist/detection/adapter-contract.js +0 -32
  15. package/dist/detection/adapter-contract.js.map +1 -1
  16. package/dist/detection/diff.d.ts +5 -87
  17. package/dist/detection/diff.d.ts.map +1 -1
  18. package/dist/detection/diff.js +5 -111
  19. package/dist/detection/diff.js.map +1 -1
  20. package/dist/detection/enrollment.d.ts +8 -17
  21. package/dist/detection/enrollment.d.ts.map +1 -1
  22. package/dist/detection/enrollment.js +8 -73
  23. package/dist/detection/enrollment.js.map +1 -1
  24. package/dist/detection/index.d.ts +5 -8
  25. package/dist/detection/index.d.ts.map +1 -1
  26. package/dist/detection/index.js +5 -8
  27. package/dist/detection/index.js.map +1 -1
  28. package/dist/detection/territory.d.ts +1 -27
  29. package/dist/detection/territory.d.ts.map +1 -1
  30. package/dist/detection/territory.js +1 -77
  31. package/dist/detection/territory.js.map +1 -1
  32. package/dist/entities/cloud.d.ts +31 -6
  33. package/dist/entities/cloud.d.ts.map +1 -1
  34. package/dist/entities/cloud.js +210 -47
  35. package/dist/entities/cloud.js.map +1 -1
  36. package/dist/entities/graph-head.d.ts +109 -0
  37. package/dist/entities/graph-head.d.ts.map +1 -0
  38. package/dist/entities/graph-head.js +267 -0
  39. package/dist/entities/graph-head.js.map +1 -0
  40. package/dist/entities/index.d.ts +3 -1
  41. package/dist/entities/index.d.ts.map +1 -1
  42. package/dist/entities/index.js +3 -1
  43. package/dist/entities/index.js.map +1 -1
  44. package/dist/entities/rules.js +2 -2
  45. package/dist/entities/rules.js.map +1 -1
  46. package/dist/entities/types.d.ts +3 -0
  47. package/dist/entities/types.d.ts.map +1 -1
  48. package/dist/entities/types.js +3 -0
  49. package/dist/entities/types.js.map +1 -1
  50. package/dist/files/commands.d.ts.map +1 -1
  51. package/dist/files/commands.js +2 -13
  52. package/dist/files/commands.js.map +1 -1
  53. package/dist/registration/user-ground.d.ts +5 -1
  54. package/dist/registration/user-ground.d.ts.map +1 -1
  55. package/dist/registration/user-ground.js +9 -14
  56. package/dist/registration/user-ground.js.map +1 -1
  57. package/dist/transfer/cargo.d.ts +46 -12
  58. package/dist/transfer/cargo.d.ts.map +1 -1
  59. package/dist/transfer/cargo.js +52 -18
  60. package/dist/transfer/cargo.js.map +1 -1
  61. package/dist-cjs/contracts/deployments.js +81 -0
  62. package/dist-cjs/contracts/deployments.js.map +1 -0
  63. package/dist-cjs/contracts/index.js +1 -0
  64. package/dist-cjs/contracts/index.js.map +1 -1
  65. package/dist-cjs/detection/adapter-contract.js +1 -34
  66. package/dist-cjs/detection/adapter-contract.js.map +1 -1
  67. package/dist-cjs/detection/diff.js +5 -113
  68. package/dist-cjs/detection/diff.js.map +1 -1
  69. package/dist-cjs/detection/enrollment.js +9 -75
  70. package/dist-cjs/detection/enrollment.js.map +1 -1
  71. package/dist-cjs/detection/index.js +5 -8
  72. package/dist-cjs/detection/index.js.map +1 -1
  73. package/dist-cjs/detection/territory.js +1 -79
  74. package/dist-cjs/detection/territory.js.map +1 -1
  75. package/dist-cjs/entities/cloud.js +212 -49
  76. package/dist-cjs/entities/cloud.js.map +1 -1
  77. package/dist-cjs/entities/graph-head.js +280 -0
  78. package/dist-cjs/entities/graph-head.js.map +1 -0
  79. package/dist-cjs/entities/index.js +3 -1
  80. package/dist-cjs/entities/index.js.map +1 -1
  81. package/dist-cjs/entities/rules.js +1 -1
  82. package/dist-cjs/entities/rules.js.map +1 -1
  83. package/dist-cjs/entities/types.js +4 -1
  84. package/dist-cjs/entities/types.js.map +1 -1
  85. package/dist-cjs/files/commands.js +1 -12
  86. package/dist-cjs/files/commands.js.map +1 -1
  87. package/dist-cjs/registration/user-ground.js +8 -13
  88. package/dist-cjs/registration/user-ground.js.map +1 -1
  89. package/dist-cjs/transfer/cargo.js +55 -20
  90. package/dist-cjs/transfer/cargo.js.map +1 -1
  91. package/package.json +1 -1
  92. package/dist/detection/continuity.d.ts +0 -54
  93. package/dist/detection/continuity.d.ts.map +0 -1
  94. package/dist/detection/continuity.js +0 -85
  95. package/dist/detection/continuity.js.map +0 -1
  96. package/dist-cjs/detection/continuity.js +0 -88
  97. package/dist-cjs/detection/continuity.js.map +0 -1
@@ -0,0 +1,280 @@
1
+ "use strict";
2
+ /**
3
+ * Immutable graph pages and the committed graph head.
4
+ *
5
+ * The registry resource is only ever written by Register, and Register
6
+ * always replaces whole roots. So the immutable unit of graph publication
7
+ * is the root subtree: each root's canonical records split into
8
+ * content-addressed pages, and the whole graph named by one small head —
9
+ * sorted roots, each listing its ordered pages. Publishing a workspace
10
+ * uploads that workspace's pages and commits a head that names every other
11
+ * root's pages unchanged; nothing about an untouched root is rebuilt,
12
+ * serialized, journaled, or transmitted.
13
+ *
14
+ * Laws:
15
+ * - Page bytes are the canonical JSON array of a contiguous uuid-sorted
16
+ * slice of one root's records; the page's identity is the SHA-256 of
17
+ * those exact bytes.
18
+ * - Pagination is canonical: the same records always split into the same
19
+ * pages (`pagesForRoot`), so two machines paging one root agree
20
+ * byte-for-byte and an unchanged root is provable by page-list identity.
21
+ * - The head is total: it names every root of the graph. Its checksum,
22
+ * `sha256(stableJson(head))`, is the graph's snapshot checksum.
23
+ * - Assembly re-proves everything it accepts: page hashes, root-subtree
24
+ * laws (via `rootReplacementFromRecords`), and canonical pagination.
25
+ */
26
+ Object.defineProperty(exports, "__esModule", { value: true });
27
+ exports.GRAPH_HEAD_OPERATION_KIND = exports.GRAPH_HEAD_KIND = exports.GRAPH_PAGE_BYTES = void 0;
28
+ exports.pagesForRoot = pagesForRoot;
29
+ exports.recordsByRoot = recordsByRoot;
30
+ exports.graphHeadFromRootPages = graphHeadFromRootPages;
31
+ exports.graphHeadChecksum = graphHeadChecksum;
32
+ exports.parseGraphHead = parseGraphHead;
33
+ exports.sameRootPages = sameRootPages;
34
+ exports.assembleRootRecords = assembleRootRecords;
35
+ exports.graphHeadReplacement = graphHeadReplacement;
36
+ exports.graphHeadFromSnapshotRecords = graphHeadFromSnapshotRecords;
37
+ exports.recordsFromHead = recordsFromHead;
38
+ const types_js_1 = require("./types.js");
39
+ const bytes_js_1 = require("./bytes.js");
40
+ const cloud_js_1 = require("./cloud.js");
41
+ /** Byte budget one page targets. A single record larger than the budget
42
+ * still travels as its own page: the budget bounds waste, never validity. */
43
+ exports.GRAPH_PAGE_BYTES = 4 * 1024 * 1024;
44
+ exports.GRAPH_HEAD_KIND = 'amalgm-entity-registry-head';
45
+ exports.GRAPH_HEAD_OPERATION_KIND = 'entity.graph.head';
46
+ const SHA256_HEX = /^[0-9a-f]{64}$/;
47
+ /** UTF-8 byte length without allocating an encoding. */
48
+ function utf8Length(text) {
49
+ let length = 0;
50
+ for (let index = 0; index < text.length; index += 1) {
51
+ const code = text.charCodeAt(index);
52
+ if (code < 0x80)
53
+ length += 1;
54
+ else if (code < 0x800)
55
+ length += 2;
56
+ else if (code >= 0xd800 && code < 0xdc00) {
57
+ length += 4;
58
+ index += 1;
59
+ }
60
+ else
61
+ length += 3;
62
+ }
63
+ return length;
64
+ }
65
+ /** Split one complete root subtree into its canonical pages. The records
66
+ * must be exactly the subtree — the same law `entity.roots.replace`
67
+ * enforced — so every page set that exists is lawful by construction. */
68
+ function pagesForRoot(rootId, records, sha256Hex) {
69
+ const sorted = (0, cloud_js_1.rootReplacementFromRecords)([rootId], records).records;
70
+ const pages = [];
71
+ let parts = [];
72
+ let pageRecords = [];
73
+ let pageBytes = 2;
74
+ const seal = () => {
75
+ const text = `[${parts.join(',')}]`;
76
+ const bytes = (0, bytes_js_1.utf8Encode)(text);
77
+ pages.push({
78
+ ref: { sha256: sha256Hex(bytes), bytes: bytes.length, records: pageRecords.length },
79
+ bytes,
80
+ records: pageRecords,
81
+ });
82
+ parts = [];
83
+ pageRecords = [];
84
+ pageBytes = 2;
85
+ };
86
+ for (const record of sorted) {
87
+ const part = (0, cloud_js_1.stableJson)(record);
88
+ const partLength = utf8Length(part);
89
+ if (parts.length > 0 && pageBytes + partLength + 1 > exports.GRAPH_PAGE_BYTES)
90
+ seal();
91
+ parts.push(part);
92
+ pageRecords.push(record);
93
+ pageBytes += partLength + (parts.length > 1 ? 1 : 0);
94
+ }
95
+ seal();
96
+ return pages;
97
+ }
98
+ /** Group a record list by the root each record descends from, every group
99
+ * uuid-sorted. A record no root reaches down child edges — an orphan or a
100
+ * cycle — refuses the graph rather than silently dropping out of it. */
101
+ function recordsByRoot(records) {
102
+ const snapshot = (0, cloud_js_1.snapshotFromRecords)(records);
103
+ const children = new Map();
104
+ for (const record of snapshot.records) {
105
+ if (record.parentUUID === null)
106
+ continue;
107
+ const siblings = children.get(record.parentUUID);
108
+ if (siblings)
109
+ siblings.push(record);
110
+ else
111
+ children.set(record.parentUUID, [record]);
112
+ }
113
+ const rootOf = new Map();
114
+ for (const record of snapshot.records) {
115
+ if (record.parentUUID !== null)
116
+ continue;
117
+ const frontier = [record.uuid];
118
+ rootOf.set(record.uuid, record.uuid);
119
+ while (frontier.length > 0) {
120
+ for (const child of children.get(frontier.pop()) ?? []) {
121
+ if (rootOf.has(child.uuid))
122
+ continue;
123
+ rootOf.set(child.uuid, record.uuid);
124
+ frontier.push(child.uuid);
125
+ }
126
+ }
127
+ }
128
+ const groups = new Map();
129
+ for (const record of snapshot.records) {
130
+ const rootId = rootOf.get(record.uuid);
131
+ if (rootId === undefined) {
132
+ throw new Error(`cloud graph record ${record.uuid} descends from no root`);
133
+ }
134
+ const group = groups.get(rootId);
135
+ if (group)
136
+ group.push(record);
137
+ else
138
+ groups.set(rootId, [record]);
139
+ }
140
+ return groups;
141
+ }
142
+ function assertPageRef(value) {
143
+ const ref = value;
144
+ if (!ref || typeof ref !== 'object'
145
+ || typeof ref.sha256 !== 'string' || !SHA256_HEX.test(ref.sha256)
146
+ || typeof ref.bytes !== 'number' || !Number.isSafeInteger(ref.bytes) || ref.bytes < 2
147
+ || typeof ref.records !== 'number' || !Number.isSafeInteger(ref.records) || ref.records < 1) {
148
+ throw new Error('cloud graph head has an invalid page reference');
149
+ }
150
+ return { sha256: ref.sha256, bytes: ref.bytes, records: ref.records };
151
+ }
152
+ /** Build the canonical head from per-root page lists: roots validated,
153
+ * sorted, duplicates refused; every root carries at least one page
154
+ * because every root holds at least its own record. */
155
+ function graphHeadFromRootPages(roots) {
156
+ const normalized = roots.map((root) => {
157
+ if (typeof root.rootId !== 'string' || !types_js_1.UUID_PATTERN.test(root.rootId)) {
158
+ throw new Error('cloud graph head has an invalid root UUID');
159
+ }
160
+ if (!Array.isArray(root.pages) || root.pages.length === 0) {
161
+ throw new Error(`cloud graph head root ${root.rootId} has no pages`);
162
+ }
163
+ return { rootId: root.rootId.toLowerCase(), pages: root.pages.map(assertPageRef) };
164
+ }).sort((left, right) => (left.rootId < right.rootId ? -1 : left.rootId > right.rootId ? 1 : 0));
165
+ for (let index = 1; index < normalized.length; index += 1) {
166
+ if (normalized[index].rootId === normalized[index - 1].rootId) {
167
+ throw new Error('cloud graph head has duplicate roots');
168
+ }
169
+ }
170
+ return { schemaVersion: 1, kind: exports.GRAPH_HEAD_KIND, roots: normalized };
171
+ }
172
+ /** The graph's snapshot checksum: the SHA-256 of the head's canonical
173
+ * serialization. Unchanged roots contribute only their page identities,
174
+ * so the checksum never requires materializing their records. */
175
+ function graphHeadChecksum(head, sha256Hex) {
176
+ return sha256Hex((0, cloud_js_1.stableJson)(head));
177
+ }
178
+ /** Parse head bytes (or their UTF-8 text) back into the canonical form. */
179
+ function parseGraphHead(bytes) {
180
+ let head;
181
+ try {
182
+ head = JSON.parse(typeof bytes === 'string' ? bytes : (0, bytes_js_1.utf8Decode)(bytes));
183
+ }
184
+ catch {
185
+ throw new Error('cloud graph head is not JSON');
186
+ }
187
+ if (head?.schemaVersion !== 1 || head?.kind !== exports.GRAPH_HEAD_KIND || !Array.isArray(head.roots)) {
188
+ throw new Error('cloud graph head has an unsupported shape');
189
+ }
190
+ return graphHeadFromRootPages(head.roots);
191
+ }
192
+ /** Two page lists name the same immutable pages in the same order. */
193
+ function sameRootPages(left, right) {
194
+ if (left.length !== right.length)
195
+ return false;
196
+ return left.every((page, index) => {
197
+ const other = right[index];
198
+ return page.sha256 === other.sha256
199
+ && page.bytes === other.bytes
200
+ && page.records === other.records;
201
+ });
202
+ }
203
+ /** Re-prove one root from its page bytes: every page's hash, size, and
204
+ * count; the complete subtree laws; and canonical pagination, so a lawful
205
+ * but differently-split page set is refused rather than cached as a
206
+ * second spelling of the same root. Returns the root's uuid-sorted
207
+ * records. */
208
+ function assembleRootRecords(rootId, refs, pages, sha256Hex) {
209
+ if (refs.length !== pages.length) {
210
+ throw new Error(`cloud graph root ${rootId} pages do not match its head`);
211
+ }
212
+ const assembled = [];
213
+ for (let index = 0; index < refs.length; index += 1) {
214
+ const ref = refs[index];
215
+ const bytes = pages[index];
216
+ if (bytes.length !== ref.bytes || sha256Hex(bytes) !== ref.sha256) {
217
+ throw new Error(`cloud graph page ${ref.sha256} does not match its bytes`);
218
+ }
219
+ let parsed;
220
+ try {
221
+ parsed = JSON.parse((0, bytes_js_1.utf8Decode)(bytes));
222
+ }
223
+ catch {
224
+ throw new Error(`cloud graph page ${ref.sha256} is not JSON`);
225
+ }
226
+ if (!Array.isArray(parsed) || parsed.length !== ref.records) {
227
+ throw new Error(`cloud graph page ${ref.sha256} does not carry its declared records`);
228
+ }
229
+ assembled.push(...parsed);
230
+ }
231
+ const canonical = pagesForRoot(rootId, assembled, sha256Hex);
232
+ if (!sameRootPages(canonical.map((page) => page.ref), refs)) {
233
+ throw new Error(`cloud graph root ${rootId} is not canonically paginated`);
234
+ }
235
+ return canonical.flatMap((page) => page.records);
236
+ }
237
+ /** Build the atomic head-commit operation. */
238
+ function graphHeadReplacement(head, replacedRootIds) {
239
+ if (replacedRootIds.length === 0) {
240
+ throw new Error('cloud graph head replacement replaces no roots');
241
+ }
242
+ const normalized = replacedRootIds.map((rootId) => {
243
+ if (!types_js_1.UUID_PATTERN.test(rootId)) {
244
+ throw new Error('cloud graph head replacement has an invalid root UUID');
245
+ }
246
+ return rootId.toLowerCase();
247
+ }).sort();
248
+ if (new Set(normalized).size !== normalized.length) {
249
+ throw new Error('cloud graph head replacement has duplicate roots');
250
+ }
251
+ return {
252
+ kind: exports.GRAPH_HEAD_OPERATION_KIND,
253
+ head: graphHeadFromRootPages(head.roots),
254
+ replacedRootIds: normalized,
255
+ };
256
+ }
257
+ /** Page every root of a complete record list — the transition from a
258
+ * records-shape snapshot to its head, and the shape of a first
259
+ * publication that must name the whole account. */
260
+ function graphHeadFromSnapshotRecords(records, sha256Hex) {
261
+ const roots = [];
262
+ const pages = [];
263
+ for (const [rootId, group] of recordsByRoot(records)) {
264
+ const rootPages = pagesForRoot(rootId, group, sha256Hex);
265
+ roots.push({ rootId, pages: rootPages.map((page) => page.ref) });
266
+ pages.push(...rootPages);
267
+ }
268
+ return { head: graphHeadFromRootPages(roots), pages };
269
+ }
270
+ /** Materialize the complete graph a head names, reading each page's bytes
271
+ * through `readPage`. Every root is re-proved on the way in; the result is
272
+ * the canonical whole-graph record list. */
273
+ function recordsFromHead(head, readPage, sha256Hex) {
274
+ const records = [];
275
+ for (const root of head.roots) {
276
+ records.push(...assembleRootRecords(root.rootId, root.pages, root.pages.map(readPage), sha256Hex));
277
+ }
278
+ return (0, cloud_js_1.snapshotFromRecords)(records).records;
279
+ }
280
+ //# sourceMappingURL=graph-head.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"graph-head.js","sourceRoot":"","sources":["../../src/entities/graph-head.ts"],"names":[],"mappings":"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"}
@@ -12,7 +12,8 @@
12
12
  * - rules.ts version formula, naming, lifecycle inheritance,
13
13
  * slot/container laws, record builders
14
14
  * - moves.ts batch move validation: permutations, acyclicity, adoption
15
- * - cloud.ts entity-cloud snapshot codec + the repo travel law
15
+ * - cloud.ts entity-cloud snapshot codec, subtree containment, and
16
+ * the repo travel law
16
17
  * - repo-states.ts Card + Checkpoint state codec and id derivations
17
18
  */
18
19
  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
@@ -35,5 +36,6 @@ __exportStar(require("./bytes.js"), exports);
35
36
  __exportStar(require("./rules.js"), exports);
36
37
  __exportStar(require("./moves.js"), exports);
37
38
  __exportStar(require("./cloud.js"), exports);
39
+ __exportStar(require("./graph-head.js"), exports);
38
40
  __exportStar(require("./repo-states.js"), exports);
39
41
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/entities/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;GAeG;;;;;;;;;;;;;;;;AAEH,6CAA2B;AAC3B,6CAA2B;AAC3B,6CAA2B;AAC3B,6CAA2B;AAC3B,6CAA2B;AAC3B,mDAAiC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/entities/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;GAgBG;;;;;;;;;;;;;;;;AAEH,6CAA2B;AAC3B,6CAA2B;AAC3B,6CAA2B;AAC3B,6CAA2B;AAC3B,6CAA2B;AAC3B,kDAAgC;AAChC,mDAAiC"}
@@ -159,7 +159,7 @@ function normalizeCloudRecord(value) {
159
159
  || typeof record.type !== 'string' || !types_js_1.TYPES.has(record.type)
160
160
  || (record.parentUUID !== null && (typeof record.parentUUID !== 'string' || !types_js_1.UUID_PATTERN.test(record.parentUUID)))
161
161
  || typeof record.name !== 'string'
162
- || !['active', 'trashed', 'deleted'].includes(record.status)
162
+ || !types_js_1.STATUSES.has(record.status)
163
163
  || (record.payloadVersion !== null && typeof record.payloadVersion !== 'string')
164
164
  || typeof record.version !== 'string' || !/^[0-9a-f]{64}$/i.test(record.version)) {
165
165
  throw new Error('cloud entity operation has an invalid record');
@@ -1 +1 @@
1
- {"version":3,"file":"rules.js","sourceRoot":"","sources":["../../src/entities/rules.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;GAkBG;;AASH,0BAIC;AAQD,gCAQC;AAWD,4CAKC;AAGD,8BAKC;AAYD,gDAOC;AAGD,kCAWC;AAKD,8CASC;AAcD,wCAQC;AAaD,wCAYC;AAOD,oCAKC;AAgBD,oDA+BC;AAID,8CAUC;AAID,oEASC;AAID,0CAWC;AAtPD,yCAIoB;AAEpB,2EAA2E;AAC3E,SAAgB,OAAO,CAAC,IAAY,EAAE,MAAgC;IACpE,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;IACzB,IAAI,CAAC,GAAG;QAAE,MAAM,IAAI,KAAK,CAAC,aAAa,IAAI,EAAE,CAAC,CAAC;IAC/C,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;;;GAKG;AACH,SAAgB,UAAU,CAAC,IAAY;IACrC,IAAI,0BAAe,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;QAC9B,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,gDAAgD,CAAC,CAAC;IAC3E,CAAC;IACD,IAAI,IAAI,KAAK,WAAW,EAAE,CAAC;QACzB,MAAM,IAAI,KAAK,CAAC,yKAAyK,CAAC,CAAC;IAC7L,CAAC;IACD,IAAI,CAAC,gBAAK,CAAC,GAAG,CAAC,IAAI,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,uBAAuB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACvF,CAAC;AAUD,4FAA4F;AAC5F,SAAgB,gBAAgB,CAC9B,EAAE,IAAI,EAAE,UAAU,GAAG,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,cAAc,GAAG,IAAI,EAAyB,EACvF,SAAoB;IAEpB,OAAO,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC;AACrF,CAAC;AAED,+EAA+E;AAC/E,SAAgB,SAAS,CAAC,IAAa;IACrC,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,EAAE,IAAI,IAAI,KAAK,GAAG,IAAI,IAAI,KAAK,IAAI;WACvE,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QAC/C,MAAM,IAAI,KAAK,CAAC,uBAAuB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,wCAAwC,CAAC,CAAC;IACvG,CAAC;AACH,CAAC;AAQD;;;yCAGyC;AACzC,SAAgB,kBAAkB,CAAC,IAA+B,EAAE,KAAgB;IAClF,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,IAAI;QAAE,OAAO,KAAK,CAAC,QAAQ,EAAE,CAAC;IACjE,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,CAAC,uBAAY,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QACzD,MAAM,IAAI,KAAK,CAAC,uCAAuC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjF,CAAC;IACD,IAAI,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,mBAAmB,IAAI,wBAAwB,CAAC,CAAC;IACzF,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC;AAC5B,CAAC;AAED,2DAA2D;AAC3D,SAAgB,WAAW,CAAC,UAAyB,EAAE,MAAgC;IACrF,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,IAAI,MAAM,GAAG,UAAU,CAAC;IACxB,OAAO,MAAM,KAAK,IAAI,EAAE,CAAC;QACvB,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,qCAAqC,MAAM,EAAE,CAAC,CAAC;QACrF,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACjB,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACnB,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,UAAU,CAAC;IAC9C,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;6CAE6C;AAC7C,SAAgB,iBAAiB,CAC/B,GAA6C,EAC7C,MAAgC;IAEhC,MAAM,QAAQ,GAAG,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,WAAW,CAAC,GAAG,CAAC,UAAU,EAAE,MAAM,CAAC;aACjE,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;IAChD,IAAI,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC;QAAE,OAAO,SAAS,CAAC;IACnD,IAAI,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC;QAAE,OAAO,SAAS,CAAC;IACnD,OAAO,GAAG,CAAC,MAAM,CAAC;AACpB,CAAC;AAED,MAAM,WAAW,GAAG,CAAC,IAAY,EAAE,KAAa,EAAU,EAAE,CAC1D,CAAC,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAE7C;;;;;;;;GAQG;AACH,SAAgB,cAAc,CAC5B,cAA2D,EAC3D,SAAoB;IAEpB,MAAM,KAAK,GAAG,CAAC,GAAG,cAAc,CAAC;SAC9B,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;SACzD,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;IAC5C,OAAO,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;AAC1C,CAAC;AASD,MAAM,UAAU,GAAG,CAAC,GAAc,EAAE,KAAkB,EAAiB,EAAE,CACvE,CAAC,0BAAe,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;AAE1F,2EAA2E;AAC3E,SAAgB,cAAc,CAAC,GAAc,EAAE,KAAkB;IAC/D,OAAO;QACL,IAAI,EAAE,GAAG,CAAC,IAAI;QACd,IAAI,EAAE,GAAG,CAAC,IAAI;QACd,UAAU,EAAE,GAAG,CAAC,UAAU;QAC1B,IAAI,EAAE,GAAG,CAAC,IAAI;QACd,OAAO,EAAE,gBAAgB,CAAC;YACxB,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,UAAU,EAAE,GAAG,CAAC,UAAU,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI;YAC1D,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,cAAc,EAAE,UAAU,CAAC,GAAG,EAAE,KAAK,CAAC;SAC3D,EAAE,KAAK,CAAC,SAAS,CAAC;QACnB,MAAM,EAAE,GAAG,CAAC,MAAM;KACnB,CAAC;AACJ,CAAC;AAED;;;;2BAI2B;AAC3B,SAAgB,YAAY,CAAC,GAAc,EAAE,KAAkB;IAC7D,OAAO;QACL,GAAG,cAAc,CAAC,GAAG,EAAE,KAAK,CAAC;QAC7B,cAAc,EAAE,GAAG,CAAC,cAAc;KACnC,CAAC;AACJ,CAAC;AAcD;2DAC2D;AAC3D,SAAgB,oBAAoB,CAAC,KAAc;IACjD,MAAM,MAAM,GAAG,KAGP,CAAC;IACT,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ;WACpC,OAAO,MAAM,CAAC,IAAI,KAAK,QAAQ,IAAI,CAAC,uBAAY,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;WAClE,OAAO,MAAM,CAAC,IAAI,KAAK,QAAQ,IAAI,CAAC,gBAAK,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC;WAC1D,CAAC,MAAM,CAAC,UAAU,KAAK,IAAI,IAAI,CAAC,OAAO,MAAM,CAAC,UAAU,KAAK,QAAQ,IAAI,CAAC,uBAAY,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC;WAChH,OAAO,MAAM,CAAC,IAAI,KAAK,QAAQ;WAC/B,CAAC,CAAC,QAAQ,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAgB,CAAC;WACnE,CAAC,MAAM,CAAC,cAAc,KAAK,IAAI,IAAI,OAAO,MAAM,CAAC,cAAc,KAAK,QAAQ,CAAC;WAC7E,OAAO,MAAM,CAAC,OAAO,KAAK,QAAQ,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;QACnF,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;IAClE,CAAC;IACD,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACvB,IAAI,MAAM,CAAC,UAAU,KAAK,IAAI,IAAI,CAAC,qBAAU,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;QAC/D,MAAM,IAAI,KAAK,CAAC,gBAAgB,MAAM,CAAC,IAAI,2BAA2B,CAAC,CAAC;IAC1E,CAAC;IACD,IAAI,MAAM,CAAC,UAAU,KAAK,IAAI,IAAI,MAAM,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;QAC9D,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;IAClE,CAAC;IACD,OAAO;QACL,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE;QAC/B,IAAI,EAAE,MAAM,CAAC,IAAkB;QAC/B,UAAU,EAAE,MAAM,CAAC,UAAU,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAE,MAAM,CAAC,UAAqB,CAAC,WAAW,EAAE;QAC3F,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,MAAM,EAAE,MAAM,CAAC,MAAsB;QACrC,cAAc,EAAE,MAAM,CAAC,cAA+B;QACtD,eAAe,EAAE,MAAM,CAAC,OAAO,CAAC,WAAW,EAAE;KAC9C,CAAC;AACJ,CAAC;AAED;yDACyD;AACzD,SAAgB,iBAAiB,CAC/B,IAA4F,EAC5F,KAA6F;IAE7F,OAAO,IAAI,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI;WAC1B,IAAI,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI;WACxB,IAAI,CAAC,UAAU,KAAK,KAAK,CAAC,UAAU;WACpC,IAAI,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI;WACxB,IAAI,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM;WAC5B,IAAI,CAAC,cAAc,KAAK,KAAK,CAAC,cAAc,CAAC;AACpD,CAAC;AAED;mDACmD;AACnD,SAAgB,4BAA4B,CAAC,UAAkB,EAAE,IAAoB;IACnF,MAAM,MAAM,GAAG,OAAO,CAAC,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAC3D,IAAI,CAAC,qBAAU,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;QACjC,MAAM,IAAI,KAAK,CAAC,yCAAyC,UAAU,OAAO,MAAM,CAAC,IAAI,iCAAiC,CAAC,CAAC;IAC1H,CAAC;IACD,IAAI,iBAAiB,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,QAAQ,EAAE,CAAC;QACnE,MAAM,IAAI,KAAK,CAAC,UAAU,UAAU,0EAA0E,CAAC,CAAC;IAClH,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;+EAC+E;AAC/E,SAAgB,eAAe,CAC7B,UAAyB,EACzB,IAAY,EACZ,IAAoB,EACpB,UAAyB,IAAI;IAE7B,IAAI,UAAU,KAAK,IAAI;QAAE,OAAO,CAAC,mDAAmD;IACpF,MAAM,QAAQ,GAAG,IAAI,CAAC,iBAAiB,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;IAC1D,IAAI,QAAQ,IAAI,QAAQ,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;QAC1C,MAAM,IAAI,KAAK,CAAC,6BAA6B,QAAQ,CAAC,IAAI,kBAAkB,UAAU,KAAK,IAAI,4BAA4B,CAAC,CAAC;IAC/H,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"rules.js","sourceRoot":"","sources":["../../src/entities/rules.ts"],"names":[],"mappings":"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"}
@@ -17,12 +17,15 @@
17
17
  * a SHA-256 hex function.
18
18
  */
19
19
  Object.defineProperty(exports, "__esModule", { value: true });
20
- exports.UUID_PATTERN = exports.isEntityType = exports.ENTITY_TYPES = exports.DERIVED_PAYLOAD = exports.ROOT_TYPES = exports.CONTAINERS = exports.TYPES = void 0;
20
+ exports.UUID_PATTERN = exports.isEntityType = exports.ENTITY_TYPES = exports.DERIVED_PAYLOAD = exports.ROOT_TYPES = exports.CONTAINERS = exports.STATUSES = exports.TYPES = void 0;
21
21
  const ALPHABET = [
22
22
  'workspace', 'folder', 'repo.git', 'file.text', 'file.binary',
23
23
  'link', 'reference',
24
24
  ];
25
25
  exports.TYPES = new Set(ALPHABET);
26
+ /** The three lifecycle states, as one set every validator reads — restated
27
+ * as an inline array it would allocate once per record validated. */
28
+ exports.STATUSES = new Set(['active', 'trashed', 'deleted']);
26
29
  /** Only containers hold active children. */
27
30
  exports.CONTAINERS = new Set(['workspace', 'folder', 'repo.git']);
28
31
  /** The types a parentless record (a tree root) may wear. `folder` is
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/entities/types.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;GAgBG;;;AAiBH,MAAM,QAAQ,GAA0B;IACtC,WAAW,EAAE,QAAQ,EAAE,UAAU,EAAE,WAAW,EAAE,aAAa;IAC7D,MAAM,EAAE,WAAW;CACpB,CAAC;AAEW,QAAA,KAAK,GAAwB,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC;AAE5D,4CAA4C;AAC/B,QAAA,UAAU,GAAwB,IAAI,GAAG,CACpD,CAAC,WAAW,EAAE,QAAQ,EAAE,UAAU,CAA2B,CAC9D,CAAC;AAEF;;;4BAG4B;AACf,QAAA,UAAU,GAAwB,IAAI,GAAG,CACpD,CAAC,WAAW,EAAE,UAAU,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,CAAwB,CACrF,CAAC;AAEF;qDACqD;AACxC,QAAA,eAAe,GAAwB,IAAI,GAAG,CACzD,CAAC,WAAW,EAAE,QAAQ,CAAwB,CAC/C,CAAC;AAEF;8DAC8D;AACjD,QAAA,YAAY,GAA0B,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;AAEhF,MAAM,YAAY,GAAG,CAAC,KAAc,EAAuB,EAAE,CAClE,OAAO,KAAK,KAAK,QAAQ,IAAI,aAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AADnC,QAAA,YAAY,gBACuB;AAEhD;uCACuC;AAC1B,QAAA,YAAY,GACvB,4EAA4E,CAAC"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/entities/types.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;GAgBG;;;AAiBH,MAAM,QAAQ,GAA0B;IACtC,WAAW,EAAE,QAAQ,EAAE,UAAU,EAAE,WAAW,EAAE,aAAa;IAC7D,MAAM,EAAE,WAAW;CACpB,CAAC;AAEW,QAAA,KAAK,GAAwB,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC;AAE5D;qEACqE;AACxD,QAAA,QAAQ,GAAwB,IAAI,GAAG,CAClD,CAAC,QAAQ,EAAE,SAAS,EAAE,SAAS,CAA0B,CAC1D,CAAC;AAEF,4CAA4C;AAC/B,QAAA,UAAU,GAAwB,IAAI,GAAG,CACpD,CAAC,WAAW,EAAE,QAAQ,EAAE,UAAU,CAA2B,CAC9D,CAAC;AAEF;;;4BAG4B;AACf,QAAA,UAAU,GAAwB,IAAI,GAAG,CACpD,CAAC,WAAW,EAAE,UAAU,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,CAAwB,CACrF,CAAC;AAEF;qDACqD;AACxC,QAAA,eAAe,GAAwB,IAAI,GAAG,CACzD,CAAC,WAAW,EAAE,QAAQ,CAAwB,CAC/C,CAAC;AAEF;8DAC8D;AACjD,QAAA,YAAY,GAA0B,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;AAEhF,MAAM,YAAY,GAAG,CAAC,KAAc,EAAuB,EAAE,CAClE,OAAO,KAAK,KAAK,QAAQ,IAAI,aAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AADnC,QAAA,YAAY,gBACuB;AAEhD;uCACuC;AAC1B,QAAA,YAAY,GACvB,4EAA4E,CAAC"}
@@ -61,21 +61,10 @@ function workspaceGraph(records, workspaceId) {
61
61
  if (references.length !== 1) {
62
62
  throw new Error(`workspace ${normalizedId} must have exactly one durable reference`);
63
63
  }
64
- const included = new Set([normalizedId]);
65
- let changed = true;
66
- while (changed) {
67
- changed = false;
68
- for (const record of snapshot.records) {
69
- if (record.parentUUID !== null && included.has(record.parentUUID) && !included.has(record.uuid)) {
70
- included.add(record.uuid);
71
- changed = true;
72
- }
73
- }
74
- }
75
64
  return {
76
65
  workspace,
77
66
  reference: references[0],
78
- records: snapshot.records.filter((record) => included.has(record.uuid)),
67
+ records: (0, index_js_1.containedRecords)(snapshot.records, normalizedId),
79
68
  };
80
69
  }
81
70
  /** Materialize one owned workspace root and establish Watch coverage for it. */
@@ -1 +1 @@
1
- {"version":3,"file":"commands.js","sourceRoot":"","sources":["../../src/files/commands.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"commands.js","sourceRoot":"","sources":["../../src/files/commands.ts"],"names":[],"mappings":"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"}
@@ -36,7 +36,12 @@ function assertCloud(value, resourceId, sha256Hex) {
36
36
  const snapshot = (0, index_js_1.snapshotFromRecords)(cloud.snapshot?.records || []);
37
37
  if (snapshot.records.length === 0)
38
38
  throw new Error('cloud user-ground graph is empty');
39
- const checksum = sha256Hex((0, index_js_1.stableJson)(snapshot));
39
+ // The stored snapshot is whatever the authority holds: the head once this
40
+ // graph is paged, the records otherwise. Proving the checksum over the
41
+ // records of a paged graph would prove the wrong bytes.
42
+ const checksum = cloud.head
43
+ ? (0, index_js_1.graphHeadChecksum)(cloud.head, sha256Hex)
44
+ : sha256Hex((0, index_js_1.stableJson)(snapshot));
40
45
  if (checksum !== cloud.checksum)
41
46
  throw new Error('cloud user-ground snapshot checksum mismatch');
42
47
  return {
@@ -45,6 +50,7 @@ function assertCloud(value, resourceId, sha256Hex) {
45
50
  deliveryWatermark: Number(cloud.deliveryWatermark),
46
51
  checksum,
47
52
  snapshot,
53
+ ...(cloud.head ? { head: cloud.head } : {}),
48
54
  };
49
55
  }
50
56
  function controlPath(path) {
@@ -86,18 +92,7 @@ function userGroundRecords(records, userEmail) {
86
92
  if (roots.length !== 1) {
87
93
  throw new Error('cloud registry must contain exactly one authenticated user-ground root');
88
94
  }
89
- const included = new Set([roots[0].uuid]);
90
- let changed = true;
91
- while (changed) {
92
- changed = false;
93
- for (const record of snapshot.records) {
94
- if (record.parentUUID !== null && included.has(record.parentUUID) && !included.has(record.uuid)) {
95
- included.add(record.uuid);
96
- changed = true;
97
- }
98
- }
99
- }
100
- return snapshot.records.filter((record) => included.has(record.uuid));
95
+ return (0, index_js_1.containedRecords)(snapshot.records, roots[0].uuid);
101
96
  }
102
97
  function assertSameGraph(local, cloudCore, sha256Hex) {
103
98
  if (!(0, index_js_1.sameRecords)((0, index_js_1.travelingRecords)(userGroundRecords(local.records, local.userEmail), sha256Hex), cloudCore)) {
@@ -1 +1 @@
1
- {"version":3,"file":"user-ground.js","sourceRoot":"","sources":["../../src/registration/user-ground.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"user-ground.js","sourceRoot":"","sources":["../../src/registration/user-ground.ts"],"names":[],"mappings":"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"}
@@ -1,39 +1,54 @@
1
1
  "use strict";
2
2
  /**
3
- * Cargo waves — cold transport of many complete small artifacts.
3
+ * Cargo stream — cold transport of many complete small artifacts.
4
4
  *
5
5
  * A register journey moves file counts, not just bytes: tens of thousands
6
6
  * of small artifacts whose per-artifact negotiation frames would dwarf the
7
- * payload. A wave carries whole artifacts every chunk and the manifest
8
- * identityso the frame count scales with bytes moved, never with file
9
- * count. Only artifacts at or below the wave byte bound ride waves; larger
10
- * artifacts keep per-artifact transfer where chunk reuse pays.
7
+ * payload. The set streams as self-contained segments. Each segment carries
8
+ * whole artifacts every chunk and the manifest identity so the frame
9
+ * count scales with bytes moved, never with file count. Segments flow
10
+ * through one bounded window and never wait on one another's durability
11
+ * acknowledgements; the authority verifies and seals each segment
12
+ * independently, so an interruption loses only unacknowledged segments and
13
+ * a rerun resumes from the sealed inventory. Only artifacts at or below the
14
+ * segment byte bound ride the stream; larger artifacts keep per-artifact
15
+ * transfer where chunk reuse pays.
11
16
  */
12
17
  Object.defineProperty(exports, "__esModule", { value: true });
13
- exports.CARGO_WAVE_ARTIFACTS = exports.CARGO_WAVE_BYTES = void 0;
14
- exports.planCargoWaves = planCargoWaves;
18
+ exports.CARGO_STREAM_IN_FLIGHT_BYTES = exports.CARGO_SEGMENT_ARTIFACTS = exports.CARGO_SEGMENT_BYTES = void 0;
19
+ exports.planCargoSegments = planCargoSegments;
20
+ exports.streamCargo = streamCargo;
15
21
  const batches_js_1 = require("./batches.js");
16
- exports.CARGO_WAVE_BYTES = batches_js_1.FILE_TRANSFER_BATCH_BYTES;
22
+ const parallel_js_1 = require("./parallel.js");
23
+ exports.CARGO_SEGMENT_BYTES = batches_js_1.FILE_TRANSFER_BATCH_BYTES;
17
24
  /** Bounded by the 64KiB binary-frame header law: every artifact declaration
18
25
  * (content hash, bytes, chunk list) rides the JSON header, and 256 worst-case
19
26
  * declarations stay under the bound with margin. The byte bound, not this
20
- * count, decides the wave tally on real grounds. */
21
- exports.CARGO_WAVE_ARTIFACTS = 256;
22
- /** Pack items in order into waves within the byte and artifact bounds. */
23
- function planCargoWaves(items) {
24
- const waves = [];
27
+ * count, decides the segment tally on real grounds. */
28
+ exports.CARGO_SEGMENT_ARTIFACTS = 256;
29
+ /** Four full segments may be in flight at once. The window keeps the wire
30
+ * busy while earlier segments await the authority's per-segment durability
31
+ * fan-out, and worst-case payload residency (plaintext plus one encoded
32
+ * copy per in-flight segment) stays comfortably inside a 1-GiB runtime. */
33
+ exports.CARGO_STREAM_IN_FLIGHT_BYTES = 4 * exports.CARGO_SEGMENT_BYTES;
34
+ /** Pack items in order into segments within the byte and artifact bounds. */
35
+ function planCargoSegments(items) {
36
+ const segments = [];
25
37
  let current = [];
26
38
  let bytes = 0;
27
39
  for (const item of items) {
40
+ if (typeof item.contentHash !== 'string' || item.contentHash.length === 0) {
41
+ throw new Error('cargo item is missing its content identity');
42
+ }
28
43
  if (!Number.isSafeInteger(item.bytes) || item.bytes < 0) {
29
- throw new Error('cargo wave item byte count is invalid');
44
+ throw new Error('cargo item byte count is invalid');
30
45
  }
31
- if (item.bytes > exports.CARGO_WAVE_BYTES) {
32
- throw new Error('cargo wave item exceeds the wave byte bound');
46
+ if (item.bytes > exports.CARGO_SEGMENT_BYTES) {
47
+ throw new Error('cargo item exceeds the segment byte bound');
33
48
  }
34
49
  if (current.length > 0
35
- && (bytes + item.bytes > exports.CARGO_WAVE_BYTES || current.length >= exports.CARGO_WAVE_ARTIFACTS)) {
36
- waves.push({ items: current, bytes });
50
+ && (bytes + item.bytes > exports.CARGO_SEGMENT_BYTES || current.length >= exports.CARGO_SEGMENT_ARTIFACTS)) {
51
+ segments.push({ items: current, bytes });
37
52
  current = [];
38
53
  bytes = 0;
39
54
  }
@@ -41,7 +56,27 @@ function planCargoWaves(items) {
41
56
  bytes += item.bytes;
42
57
  }
43
58
  if (current.length > 0)
44
- waves.push({ items: current, bytes });
45
- return waves;
59
+ segments.push({ items: current, bytes });
60
+ return segments;
61
+ }
62
+ /** Stream one cold set of small artifacts as bounded pipelined segments.
63
+ * Every item must come back sealed or the stream fails; a failure stops new
64
+ * admission, lets in-flight segments settle, and leaves their sealed work
65
+ * durable for the resuming rerun. */
66
+ async function streamCargo(items, ports, options = {}) {
67
+ const segments = planCargoSegments(items);
68
+ let artifacts = 0;
69
+ let bytes = 0;
70
+ await (0, parallel_js_1.weightedParallelForEach)(segments, options.lanes ?? parallel_js_1.DEFAULT_TRANSFER_CONCURRENCY, options.maxInFlightBytes ?? exports.CARGO_STREAM_IN_FLIGHT_BYTES, (segment) => Math.max(segment.bytes, 1), async (segment) => {
71
+ const sealed = new Set(await ports.send(segment));
72
+ for (const item of segment.items) {
73
+ if (!sealed.has(item.contentHash)) {
74
+ throw new Error(`cargo authority did not seal ${item.contentHash}`);
75
+ }
76
+ }
77
+ artifacts += segment.items.length;
78
+ bytes += segment.bytes;
79
+ });
80
+ return { segments: segments.length, artifacts, bytes };
46
81
  }
47
82
  //# sourceMappingURL=cargo.js.map