@elaraai/e3-types 1.0.79 → 1.0.80

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 (153) hide show
  1. package/README.md +1 -1
  2. package/dist/src/api.d.ts +569 -36
  3. package/dist/src/api.d.ts.map +1 -1
  4. package/dist/src/api.js +257 -32
  5. package/dist/src/api.js.map +1 -1
  6. package/dist/src/collection-manifest.d.ts +37 -0
  7. package/dist/src/collection-manifest.d.ts.map +1 -0
  8. package/dist/src/collection-manifest.js +37 -0
  9. package/dist/src/collection-manifest.js.map +1 -0
  10. package/dist/src/dataflow.d.ts +264 -19
  11. package/dist/src/dataflow.d.ts.map +1 -1
  12. package/dist/src/dataflow.js +156 -15
  13. package/dist/src/dataflow.js.map +1 -1
  14. package/dist/src/dataflow.spec.js +184 -27
  15. package/dist/src/dataflow.spec.js.map +1 -1
  16. package/dist/src/dataset-blob.d.ts +75 -15
  17. package/dist/src/dataset-blob.d.ts.map +1 -1
  18. package/dist/src/dataset-blob.js +95 -28
  19. package/dist/src/dataset-blob.js.map +1 -1
  20. package/dist/src/dataset-blob.spec.d.ts +6 -0
  21. package/dist/src/dataset-blob.spec.d.ts.map +1 -0
  22. package/dist/src/dataset-blob.spec.js +92 -0
  23. package/dist/src/dataset-blob.spec.js.map +1 -0
  24. package/dist/src/dataset-ref.d.ts +5 -4
  25. package/dist/src/dataset-ref.d.ts.map +1 -1
  26. package/dist/src/dataset-ref.js +5 -4
  27. package/dist/src/dataset-ref.js.map +1 -1
  28. package/dist/src/environment.d.ts +3 -2
  29. package/dist/src/environment.d.ts.map +1 -1
  30. package/dist/src/environment.js +3 -2
  31. package/dist/src/environment.js.map +1 -1
  32. package/dist/src/execution.d.ts +112 -18
  33. package/dist/src/execution.d.ts.map +1 -1
  34. package/dist/src/execution.js +174 -45
  35. package/dist/src/execution.js.map +1 -1
  36. package/dist/src/execution.spec.d.ts +6 -0
  37. package/dist/src/execution.spec.d.ts.map +1 -0
  38. package/dist/src/execution.spec.js +108 -0
  39. package/dist/src/execution.spec.js.map +1 -0
  40. package/dist/src/function.d.ts +14 -12
  41. package/dist/src/function.d.ts.map +1 -1
  42. package/dist/src/function.js +17 -32
  43. package/dist/src/function.js.map +1 -1
  44. package/dist/src/index.d.ts +16 -12
  45. package/dist/src/index.d.ts.map +1 -1
  46. package/dist/src/index.js +25 -20
  47. package/dist/src/index.js.map +1 -1
  48. package/dist/src/lock.d.ts +68 -22
  49. package/dist/src/lock.d.ts.map +1 -1
  50. package/dist/src/lock.js +33 -22
  51. package/dist/src/lock.js.map +1 -1
  52. package/dist/src/names.d.ts +21 -0
  53. package/dist/src/names.d.ts.map +1 -0
  54. package/dist/src/names.js +31 -0
  55. package/dist/src/names.js.map +1 -0
  56. package/dist/src/package.d.ts +11 -78
  57. package/dist/src/package.d.ts.map +1 -1
  58. package/dist/src/package.js +13 -66
  59. package/dist/src/package.js.map +1 -1
  60. package/dist/src/record.d.ts +582 -18
  61. package/dist/src/record.d.ts.map +1 -1
  62. package/dist/src/record.js +405 -7
  63. package/dist/src/record.js.map +1 -1
  64. package/dist/src/{stream.spec.d.ts → record.spec.d.ts} +1 -1
  65. package/dist/src/record.spec.d.ts.map +1 -0
  66. package/dist/src/record.spec.js +143 -0
  67. package/dist/src/record.spec.js.map +1 -0
  68. package/dist/src/release.d.ts +36 -0
  69. package/dist/src/release.d.ts.map +1 -0
  70. package/dist/src/release.js +71 -0
  71. package/dist/src/release.js.map +1 -0
  72. package/dist/src/release.spec.d.ts +6 -0
  73. package/dist/src/release.spec.d.ts.map +1 -0
  74. package/dist/src/release.spec.js +42 -0
  75. package/dist/src/release.spec.js.map +1 -0
  76. package/dist/src/repository.d.ts +64 -0
  77. package/dist/src/repository.d.ts.map +1 -0
  78. package/dist/src/repository.js +49 -0
  79. package/dist/src/repository.js.map +1 -0
  80. package/dist/src/runner.d.ts +16 -62
  81. package/dist/src/runner.d.ts.map +1 -1
  82. package/dist/src/runner.js +16 -79
  83. package/dist/src/runner.js.map +1 -1
  84. package/dist/src/runner.spec.js +11 -85
  85. package/dist/src/runner.spec.js.map +1 -1
  86. package/dist/src/structure.d.ts +0 -57
  87. package/dist/src/structure.d.ts.map +1 -1
  88. package/dist/src/structure.js +0 -3
  89. package/dist/src/structure.js.map +1 -1
  90. package/dist/src/task.d.ts +210 -318
  91. package/dist/src/task.d.ts.map +1 -1
  92. package/dist/src/task.js +117 -472
  93. package/dist/src/task.js.map +1 -1
  94. package/dist/src/task.spec.js +62 -154
  95. package/dist/src/task.spec.js.map +1 -1
  96. package/dist/src/transfer.d.ts +16 -22
  97. package/dist/src/transfer.d.ts.map +1 -1
  98. package/dist/src/transfer.js +16 -22
  99. package/dist/src/transfer.js.map +1 -1
  100. package/dist/src/transfer.spec.js +4 -34
  101. package/dist/src/transfer.spec.js.map +1 -1
  102. package/dist/src/unit-plan.d.ts +130 -0
  103. package/dist/src/unit-plan.d.ts.map +1 -0
  104. package/dist/src/unit-plan.js +107 -0
  105. package/dist/src/unit-plan.js.map +1 -0
  106. package/dist/src/unit-plan.spec.d.ts +6 -0
  107. package/dist/src/unit-plan.spec.d.ts.map +1 -0
  108. package/dist/src/unit-plan.spec.js +29 -0
  109. package/dist/src/unit-plan.spec.js.map +1 -0
  110. package/dist/src/workspace.d.ts +22 -11
  111. package/dist/src/workspace.d.ts.map +1 -1
  112. package/dist/src/workspace.js +10 -11
  113. package/dist/src/workspace.js.map +1 -1
  114. package/package.json +3 -3
  115. package/src/api.ts +276 -32
  116. package/src/collection-manifest.ts +53 -0
  117. package/src/dataflow.spec.ts +223 -31
  118. package/src/dataflow.ts +183 -26
  119. package/src/dataset-blob.spec.ts +117 -0
  120. package/src/dataset-blob.ts +157 -21
  121. package/src/dataset-ref.ts +5 -4
  122. package/src/environment.ts +3 -2
  123. package/src/execution.spec.ts +114 -0
  124. package/src/execution.ts +175 -51
  125. package/src/function.ts +19 -32
  126. package/src/index.ts +122 -39
  127. package/src/lock.ts +39 -22
  128. package/src/names.ts +39 -0
  129. package/src/package.ts +15 -71
  130. package/src/record.spec.ts +195 -0
  131. package/src/record.ts +489 -7
  132. package/src/release.spec.ts +47 -0
  133. package/src/release.ts +69 -0
  134. package/src/repository.ts +67 -0
  135. package/src/runner.spec.ts +11 -94
  136. package/src/runner.ts +16 -80
  137. package/src/structure.ts +0 -8
  138. package/src/task.spec.ts +67 -188
  139. package/src/task.ts +140 -522
  140. package/src/transfer.spec.ts +4 -51
  141. package/src/transfer.ts +16 -22
  142. package/src/unit-plan.spec.ts +31 -0
  143. package/src/unit-plan.ts +121 -0
  144. package/src/workspace.ts +13 -11
  145. package/dist/src/stream.d.ts +0 -97
  146. package/dist/src/stream.d.ts.map +0 -1
  147. package/dist/src/stream.js +0 -134
  148. package/dist/src/stream.js.map +0 -1
  149. package/dist/src/stream.spec.d.ts.map +0 -1
  150. package/dist/src/stream.spec.js +0 -60
  151. package/dist/src/stream.spec.js.map +0 -1
  152. package/src/stream.spec.ts +0 -88
  153. package/src/stream.ts +0 -170
@@ -6,25 +6,37 @@
6
6
  * The ONE encoder that decides how a dataset value is stored.
7
7
  *
8
8
  * Collection-rooted values (Array / Set / Dict) are ALWAYS stored segmented
9
- * with a trailing index, at every size: one uniform encoding per logical value,
10
- * so the paged read API can decode just the segments a window touches and the
11
- * key search can bisect the segment fences. Every other root is stored whole.
9
+ * under the content-defined cut rule, at every size: one uniform encoding per
10
+ * logical value, so the paged read API can decode just the segments a window
11
+ * touches and the key search can bisect the segment fences. Every other root is
12
+ * stored whole.
12
13
  *
13
- * This lives in `e3-types` — the floor both `e3` and `e3-core` stand on —
14
- * because the rule has to hold at EVERY door a value enters the store through,
15
- * and it did not. The store path (`e3-core`'s `datasetWrite`) segmented; the
16
- * package export path (`e3`'s `export_`) encoded flat regardless of root kind.
17
- * Since `workspaceDeploy` copies package refs verbatim, a freshly deployed
18
- * collection input pointed at an unindexed blob and could not be paged at all
19
- * — `dataset_not_indexed`, with no whole-decode fallback — until something
20
- * happened to WRITE the dataset, at which point it silently started working.
21
- * A demo poked by hand behaved differently from a workspace only deployed.
14
+ * Given a `sink` — an object store to write through — a collection goes in as
15
+ * **segment objects plus a {@link CollectionManifestType} naming them**, and it
16
+ * is the manifest the dataset ref points at. That is what makes a one-row edit
17
+ * cost one segment: the new manifest names the same objects as the old one bar
18
+ * the segment that changed, and a content-addressed store deduplicates the
19
+ * rest. Without a sink the value is one blob, which is what travels over the
20
+ * wire.
22
21
  *
23
- * So: one branch, one home, and both doors call it.
22
+ * This lives in `e3-types` — the floor both `e3` and `e3-core` stand on —
23
+ * because the rule has to hold at EVERY door a value enters the store through:
24
+ * the store's own door (`e3-core`'s `storeCollection`) and the package export
25
+ * both write collections through {@link writeCollectionManifest}.
24
26
  *
25
27
  * @packageDocumentation
26
28
  */
27
- import { type EastType, type EastTypeValue } from '@elaraai/east';
29
+ import { type Beast2RecutPiece, type Beast2SegmentRef, type EastType, type EastTypeValue } from '@elaraai/east';
30
+ import { type CollectionManifestEntry } from './collection-manifest.js';
31
+ /**
32
+ * Writes one object and answers with its content hash.
33
+ *
34
+ * @remarks
35
+ * The whole of the object store this module needs. Content-addressed, so
36
+ * writing bytes already stored is a no-op that returns the same hash — which is
37
+ * exactly how a new state shares its unchanged segments with the old one.
38
+ */
39
+ export type SegmentSink = (bytes: Uint8Array) => Promise<string>;
28
40
  /**
29
41
  * Whether a dataset root type is a collection — the kinds stored segmented +
30
42
  * indexed so the paged read API can seek.
@@ -33,6 +45,45 @@ import { type EastType, type EastTypeValue } from '@elaraai/east';
33
45
  * @returns true for Array / Set / Dict roots
34
46
  */
35
47
  export declare function isCollectionRoot(typeValue: EastTypeValue): boolean;
48
+ /**
49
+ * A segment a collection's manifest may carry over as it stands: the segment
50
+ * as a re-cut takes it, and the manifest entry that already names it in the
51
+ * store, when it is there.
52
+ */
53
+ export interface CollectionSegmentRef extends Beast2SegmentRef {
54
+ /** The entry naming the segment in the manifest it came from. A carried
55
+ * segment with one is named by it again, never read or written; one
56
+ * without is read and written as it stands. */
57
+ readonly entry?: CollectionManifestEntry;
58
+ }
59
+ /** A piece of a collection, in order, as {@link writeCollectionManifest}
60
+ * takes it: a run of segments the Writer wrote, under the canonical header
61
+ * for the type, or elements. */
62
+ export type CollectionPiece = Beast2RecutPiece<EastType, CollectionSegmentRef>;
63
+ /**
64
+ * Write a collection as segment objects and return the manifest naming them.
65
+ *
66
+ * @remarks
67
+ * The pieces are re-cut into the canonical whole (`recutBeast2For`): a segment
68
+ * the whole shares with its piece is carried over, and everything else — the
69
+ * seams between pieces, and pieces given as elements — is cut by the rule and
70
+ * written. What comes out is what the Writer writes for the whole value,
71
+ * whichever pieces it came in, so two equal values have one manifest.
72
+ *
73
+ * Every segment is written under the canonical header for the type, the
74
+ * Writer's own: a piece's segments are carried over only when that is the
75
+ * header they are under, which is the caller's to establish.
76
+ *
77
+ * @param type - The collection type (Array / Set / Dict)
78
+ * @param pieces - The collection's pieces, in order
79
+ * @param sink - Writes one object and returns its hash
80
+ * @returns The manifest's bytes — the caller stores them, and its hash is the
81
+ * dataset's content address
82
+ * @throws {Error} When a piece's elements do not ascend (Set / Dict), a
83
+ * segment's blob is not the one segment its reference describes, or the sink
84
+ * rejects.
85
+ */
86
+ export declare function writeCollectionManifest(type: EastType | EastTypeValue, pieces: Iterable<CollectionPiece> | AsyncIterable<CollectionPiece>, sink: SegmentSink): Promise<Uint8Array>;
36
87
  /**
37
88
  * Encode a dataset value for the object store.
38
89
  *
@@ -41,9 +92,18 @@ export declare function isCollectionRoot(typeValue: EastTypeValue): boolean;
41
92
  * encoder themselves: a value that reaches the store unsegmented is one the
42
93
  * paged endpoints refuse, and nothing on the read path can repair it.
43
94
  *
95
+ * With a `sink`, a collection root is written as segment objects and the
96
+ * returned bytes are the manifest naming them; a non-collection root ignores
97
+ * the sink and returns its whole blob, which is what it has always been.
98
+ * Without one, a collection is its canonical segmented blob — the form it
99
+ * travels over the wire in.
100
+ *
44
101
  * @param type - The dataset's declared type (an `EastType` or its homoiconic value)
45
102
  * @param value - The value to encode
46
- * @returns The beast2 bytes to store — segmented + indexed for a collection root
103
+ * @param sink - Writes one object and returns its hash
104
+ * @returns The beast2 bytes to store — the manifest, for a collection written
105
+ * through a sink; otherwise the value's own blob
47
106
  */
48
107
  export declare function encodeDatasetBlob(type: EastType | EastTypeValue, value: unknown): Uint8Array;
108
+ export declare function encodeDatasetBlob(type: EastType | EastTypeValue, value: unknown, sink: SegmentSink): Promise<Uint8Array>;
49
109
  //# sourceMappingURL=dataset-blob.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"dataset-blob.d.ts","sourceRoot":"","sources":["../../src/dataset-blob.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,EAKL,KAAK,QAAQ,EACb,KAAK,aAAa,EACnB,MAAM,eAAe,CAAC;AAEvB;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,aAAa,GAAG,OAAO,CAElE;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,QAAQ,GAAG,aAAa,EAAE,KAAK,EAAE,OAAO,GAAG,UAAU,CAO5F"}
1
+ {"version":3,"file":"dataset-blob.d.ts","sourceRoot":"","sources":["../../src/dataset-blob.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,OAAO,EAUL,KAAK,gBAAgB,EACrB,KAAK,gBAAgB,EACrB,KAAK,QAAQ,EACb,KAAK,aAAa,EACnB,MAAM,eAAe,CAAC;AACvB,OAAO,EAGL,KAAK,uBAAuB,EAC7B,MAAM,0BAA0B,CAAC;AAElC;;;;;;;GAOG;AACH,MAAM,MAAM,WAAW,GAAG,CAAC,KAAK,EAAE,UAAU,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;AAEjE;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,aAAa,GAAG,OAAO,CAElE;AAOD;;;;GAIG;AACH,MAAM,WAAW,oBAAqB,SAAQ,gBAAgB;IAC5D;;oDAEgD;IAChD,QAAQ,CAAC,KAAK,CAAC,EAAE,uBAAuB,CAAC;CAC1C;AAED;;iCAEiC;AACjC,MAAM,MAAM,eAAe,GAAG,gBAAgB,CAAC,QAAQ,EAAE,oBAAoB,CAAC,CAAC;AAE/E;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAsB,uBAAuB,CAC3C,IAAI,EAAE,QAAQ,GAAG,aAAa,EAC9B,MAAM,EAAE,QAAQ,CAAC,eAAe,CAAC,GAAG,aAAa,CAAC,eAAe,CAAC,EAClE,IAAI,EAAE,WAAW,GAChB,OAAO,CAAC,UAAU,CAAC,CAgCrB;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,QAAQ,GAAG,aAAa,EAAE,KAAK,EAAE,OAAO,GAAG,UAAU,CAAC;AAC9F,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,QAAQ,GAAG,aAAa,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC"}
@@ -6,25 +6,28 @@
6
6
  * The ONE encoder that decides how a dataset value is stored.
7
7
  *
8
8
  * Collection-rooted values (Array / Set / Dict) are ALWAYS stored segmented
9
- * with a trailing index, at every size: one uniform encoding per logical value,
10
- * so the paged read API can decode just the segments a window touches and the
11
- * key search can bisect the segment fences. Every other root is stored whole.
9
+ * under the content-defined cut rule, at every size: one uniform encoding per
10
+ * logical value, so the paged read API can decode just the segments a window
11
+ * touches and the key search can bisect the segment fences. Every other root is
12
+ * stored whole.
12
13
  *
13
- * This lives in `e3-types` — the floor both `e3` and `e3-core` stand on —
14
- * because the rule has to hold at EVERY door a value enters the store through,
15
- * and it did not. The store path (`e3-core`'s `datasetWrite`) segmented; the
16
- * package export path (`e3`'s `export_`) encoded flat regardless of root kind.
17
- * Since `workspaceDeploy` copies package refs verbatim, a freshly deployed
18
- * collection input pointed at an unindexed blob and could not be paged at all
19
- * — `dataset_not_indexed`, with no whole-decode fallback — until something
20
- * happened to WRITE the dataset, at which point it silently started working.
21
- * A demo poked by hand behaved differently from a workspace only deployed.
14
+ * Given a `sink` — an object store to write through — a collection goes in as
15
+ * **segment objects plus a {@link CollectionManifestType} naming them**, and it
16
+ * is the manifest the dataset ref points at. That is what makes a one-row edit
17
+ * cost one segment: the new manifest names the same objects as the old one bar
18
+ * the segment that changed, and a content-addressed store deduplicates the
19
+ * rest. Without a sink the value is one blob, which is what travels over the
20
+ * wire.
22
21
  *
23
- * So: one branch, one home, and both doors call it.
22
+ * This lives in `e3-types` — the floor both `e3` and `e3-core` stand on —
23
+ * because the rule has to hold at EVERY door a value enters the store through:
24
+ * the store's own door (`e3-core`'s `storeCollection`) and the package export
25
+ * both write collections through {@link writeCollectionManifest}.
24
26
  *
25
27
  * @packageDocumentation
26
28
  */
27
- import { encodeBeast2For, encodeBeast2PagedFor, isVariant, toEastTypeValue, } from '@elaraai/east';
29
+ import { SortedMap, SortedSet, compareFor, encodeBeast2For, encodeBeast2PagedFor, isVariant, recutBeast2For, segmentRuleFor, toEastTypeValue, } from '@elaraai/east';
30
+ import { COLLECTION_MANIFEST_KIND, encodeCollectionManifest, } from './collection-manifest.js';
28
31
  /**
29
32
  * Whether a dataset root type is a collection — the kinds stored segmented +
30
33
  * indexed so the paged read API can seek.
@@ -35,24 +38,88 @@ import { encodeBeast2For, encodeBeast2PagedFor, isVariant, toEastTypeValue, } fr
35
38
  export function isCollectionRoot(typeValue) {
36
39
  return typeValue.type === 'Array' || typeValue.type === 'Set' || typeValue.type === 'Dict';
37
40
  }
41
+ /** The caller's type argument as an {@link EastTypeValue}. */
42
+ function asTypeValue(type) {
43
+ return isVariant(type) ? type : toEastTypeValue(type);
44
+ }
38
45
  /**
39
- * Encode a dataset value for the object store.
46
+ * Write a collection as segment objects and return the manifest naming them.
40
47
  *
41
48
  * @remarks
42
- * The single point where segmentation is decided. Callers must not choose an
43
- * encoder themselves: a value that reaches the store unsegmented is one the
44
- * paged endpoints refuse, and nothing on the read path can repair it.
49
+ * The pieces are re-cut into the canonical whole (`recutBeast2For`): a segment
50
+ * the whole shares with its piece is carried over, and everything else — the
51
+ * seams between pieces, and pieces given as elements — is cut by the rule and
52
+ * written. What comes out is what the Writer writes for the whole value,
53
+ * whichever pieces it came in, so two equal values have one manifest.
45
54
  *
46
- * @param type - The dataset's declared type (an `EastType` or its homoiconic value)
47
- * @param value - The value to encode
48
- * @returns The beast2 bytes to store — segmented + indexed for a collection root
55
+ * Every segment is written under the canonical header for the type, the
56
+ * Writer's own: a piece's segments are carried over only when that is the
57
+ * header they are under, which is the caller's to establish.
58
+ *
59
+ * @param type - The collection type (Array / Set / Dict)
60
+ * @param pieces - The collection's pieces, in order
61
+ * @param sink - Writes one object and returns its hash
62
+ * @returns The manifest's bytes — the caller stores them, and its hash is the
63
+ * dataset's content address
64
+ * @throws {Error} When a piece's elements do not ascend (Set / Dict), a
65
+ * segment's blob is not the one segment its reference describes, or the sink
66
+ * rejects.
49
67
  */
50
- export function encodeDatasetBlob(type, value) {
51
- const typeValue = isVariant(type)
52
- ? type
53
- : toEastTypeValue(type);
54
- return isCollectionRoot(typeValue)
55
- ? encodeBeast2PagedFor(typeValue)(value)
56
- : encodeBeast2For(typeValue)(value);
68
+ export async function writeCollectionManifest(type, pieces, sink) {
69
+ const typeValue = asTypeValue(type);
70
+ const entries = [];
71
+ // Frames deflate on the worker pool once the value is large enough to be
72
+ // worth it; the pool holds the frames in flight and nothing more.
73
+ const recut = recutBeast2For(typeValue, { parallel: true });
74
+ const stats = await recut(pieces, {
75
+ written: async (segment) => {
76
+ entries.push({
77
+ hash: await sink(segment.blob),
78
+ fence: segment.fence,
79
+ count: BigInt(segment.count),
80
+ bytes: BigInt(segment.blob.byteLength),
81
+ });
82
+ },
83
+ carried: async (ref) => {
84
+ if (ref.entry !== undefined) {
85
+ entries.push(ref.entry);
86
+ return;
87
+ }
88
+ const blob = await ref.read();
89
+ entries.push({ hash: await sink(blob), fence: ref.fence, count: BigInt(ref.count), bytes: BigInt(blob.byteLength) });
90
+ },
91
+ });
92
+ return encodeCollectionManifest({
93
+ kind: COLLECTION_MANIFEST_KIND,
94
+ level: 0n,
95
+ type: typeValue,
96
+ rule: segmentRuleFor(typeValue),
97
+ header: await sink(stats.header),
98
+ entries,
99
+ });
100
+ }
101
+ export function encodeDatasetBlob(type, value, sink) {
102
+ const typeValue = asTypeValue(type);
103
+ if (!isCollectionRoot(typeValue)) {
104
+ const blob = encodeBeast2For(typeValue)(value);
105
+ return sink === undefined ? blob : Promise.resolve(blob);
106
+ }
107
+ if (sink === undefined)
108
+ return encodeBeast2PagedFor(typeValue)(value);
109
+ return writeCollectionManifest(typeValue, [{ elements: canonicalElements(typeValue, value) }], sink);
110
+ }
111
+ /** A collection value's elements in canonical order: an Array's as they
112
+ * stand, a Set's or a Dict's ascending in East order — a plain `Set` or
113
+ * `Map` iterates in insertion order, and is sorted first. */
114
+ function canonicalElements(typeValue, value) {
115
+ if (typeValue.type === 'Array')
116
+ return value;
117
+ if (typeValue.type === 'Set') {
118
+ return value instanceof SortedSet ? value : [...value].sort(compareFor(typeValue.value));
119
+ }
120
+ const cmp = compareFor(typeValue.value.key);
121
+ return value instanceof SortedMap
122
+ ? value.entries()
123
+ : [...value.entries()].sort((a, b) => cmp(a[0], b[0]));
57
124
  }
58
125
  //# sourceMappingURL=dataset-blob.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"dataset-blob.js","sourceRoot":"","sources":["../../src/dataset-blob.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,EACL,eAAe,EACf,oBAAoB,EACpB,SAAS,EACT,eAAe,GAGhB,MAAM,eAAe,CAAC;AAEvB;;;;;;GAMG;AACH,MAAM,UAAU,gBAAgB,CAAC,SAAwB;IACvD,OAAO,SAAS,CAAC,IAAI,KAAK,OAAO,IAAI,SAAS,CAAC,IAAI,KAAK,KAAK,IAAI,SAAS,CAAC,IAAI,KAAK,MAAM,CAAC;AAC7F,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,iBAAiB,CAAC,IAA8B,EAAE,KAAc;IAC9E,MAAM,SAAS,GAAkB,SAAS,CAAC,IAAI,CAAC;QAC9C,CAAC,CAAE,IAAsB;QACzB,CAAC,CAAC,eAAe,CAAC,IAAgB,CAAC,CAAC;IACtC,OAAO,gBAAgB,CAAC,SAAS,CAAC;QAChC,CAAC,CAAC,oBAAoB,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC;QACxC,CAAC,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,CAAC;AACxC,CAAC"}
1
+ {"version":3,"file":"dataset-blob.js","sourceRoot":"","sources":["../../src/dataset-blob.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Copyright (c) 2025 Elara AI Pty Ltd
3
+ * Dual-licensed under AGPL-3.0 and commercial license. See LICENSE for details.
4
+ */
5
+ export {};
6
+ //# sourceMappingURL=dataset-blob.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dataset-blob.spec.d.ts","sourceRoot":"","sources":["../../src/dataset-blob.spec.ts"],"names":[],"mappings":"AAAA;;;GAGG"}
@@ -0,0 +1,92 @@
1
+ /**
2
+ * Copyright (c) 2025 Elara AI Pty Ltd
3
+ * Dual-licensed under AGPL-3.0 and commercial license. See LICENSE for details.
4
+ */
5
+ /**
6
+ * The encoder door: a collection is written as the manifest the Writer's own
7
+ * manifest writer writes for its value — which the conformance corpus pins in
8
+ * every runtime — whichever pieces it arrives in.
9
+ */
10
+ import { describe, it } from 'node:test';
11
+ import assert from 'node:assert/strict';
12
+ import { Beast2ManifestWriter, DictType, IntegerType, SortedMap, StringType, StructType, compareFor, decodeBeast2FenceFor, decodeCollectionManifest, encodeBeast2For, encodeBeast2PagedFor, sha256Hex, } from '@elaraai/east';
13
+ import { encodeDatasetBlob, writeCollectionManifest } from './dataset-blob.js';
14
+ const TableType = DictType(StringType, IntegerType);
15
+ describe('writeCollectionManifest', () => {
16
+ it("writes the manifest writer's manifest for the value, byte for byte", async () => {
17
+ const value = new SortedMap(Array.from({ length: 20_000 }, (_, i) => [`k${String(i).padStart(6, '0')}`, BigInt(i)]), compareFor(StringType));
18
+ const objects = new Map();
19
+ const manifest = await writeCollectionManifest(TableType, [{ elements: value.entries() }], async (bytes) => {
20
+ const hash = sha256Hex(bytes);
21
+ objects.set(hash, bytes);
22
+ return hash;
23
+ });
24
+ const expectedObjects = new Map();
25
+ let expected;
26
+ const writer = new Beast2ManifestWriter(TableType, {
27
+ object: (hash, bytes) => { expectedObjects.set(hash, bytes); },
28
+ manifest: (bytes) => { expected = bytes; },
29
+ });
30
+ for (const element of value)
31
+ writer.add(element);
32
+ writer.finish();
33
+ assert.deepEqual(manifest, expected);
34
+ assert.deepEqual([...objects.keys()].sort(), [...expectedObjects.keys()].sort(), 'the same objects, header included');
35
+ assert.ok(decodeCollectionManifest(manifest).entries.length > 1, 'the value spans segments');
36
+ });
37
+ it('names the segments a piece carries with their entries again, neither reading nor writing them', async () => {
38
+ const value = new SortedMap(Array.from({ length: 20_000 }, (_, i) => [`k${String(i).padStart(6, '0')}`, BigInt(i)]), compareFor(StringType));
39
+ const objects = new Map();
40
+ const sink = async (bytes) => {
41
+ const hash = sha256Hex(bytes);
42
+ objects.set(hash, bytes);
43
+ return hash;
44
+ };
45
+ const whole = await writeCollectionManifest(TableType, [{ elements: value.entries() }], sink);
46
+ const entries = decodeCollectionManifest(whole).entries;
47
+ const half = entries.length >> 1;
48
+ // The first half as the segments they are, each with the fence that
49
+ // followed it; the rest as elements, from the first key of the second half.
50
+ const reads = [];
51
+ const carried = entries.slice(0, half).map((entry, i) => ({
52
+ count: Number(entry.count),
53
+ fence: entry.fence,
54
+ nextFence: entries[i + 1].fence,
55
+ read: () => {
56
+ reads.push(entry.hash);
57
+ return objects.get(entry.hash);
58
+ },
59
+ entry,
60
+ }));
61
+ const written = new Set();
62
+ const again = await writeCollectionManifest(TableType, [
63
+ { segments: carried },
64
+ { elements: value.entries(decodeBeast2FenceFor(StringType)(entries[half].fence)) },
65
+ ], async (bytes) => {
66
+ const hash = await sink(bytes);
67
+ written.add(hash);
68
+ return hash;
69
+ });
70
+ assert.deepEqual(again, whole, 'the same manifest');
71
+ assert.deepEqual(reads, [], 'the seam is decided by the fence that followed');
72
+ for (const entry of entries.slice(0, half))
73
+ assert.ok(!written.has(entry.hash), `segment ${entry.hash.slice(0, 8)} is carried`);
74
+ });
75
+ });
76
+ describe('encodeDatasetBlob', () => {
77
+ it('encodes a collection without a sink as its paged blob, and any other value whole', async () => {
78
+ const value = new Map([['a', 1n], ['b', 2n]]);
79
+ assert.deepEqual(encodeDatasetBlob(TableType, value), encodeBeast2PagedFor(TableType)(value));
80
+ const RowType = StructType({ id: IntegerType, name: StringType });
81
+ const row = { id: 1n, name: 'one' };
82
+ const whole = encodeBeast2For(RowType)(row);
83
+ assert.deepEqual(encodeDatasetBlob(RowType, row), whole);
84
+ const sunk = [];
85
+ assert.deepEqual(await encodeDatasetBlob(RowType, row, async (bytes) => {
86
+ sunk.push(bytes);
87
+ return sha256Hex(bytes);
88
+ }), whole, 'a sink changes nothing for a value that is not a collection');
89
+ assert.deepEqual(sunk, []);
90
+ });
91
+ });
92
+ //# sourceMappingURL=dataset-blob.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dataset-blob.spec.js","sourceRoot":"","sources":["../../src/dataset-blob.spec.ts"],"names":[],"mappings":"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"}
@@ -5,9 +5,9 @@
5
5
  /**
6
6
  * Per-dataset reference types for reactive dataflow.
7
7
  *
8
- * Each dataset in a workspace has its own `.ref` file instead of being
9
- * part of a single root tree. This enables concurrent writes and
10
- * reactive re-execution.
8
+ * Each dataset in a workspace has its own ref instead of being part of a
9
+ * single root tree. This enables concurrent writes and reactive
10
+ * re-execution.
11
11
  *
12
12
  * A DatasetRef tracks:
13
13
  * - The current value hash (or unassigned/null state)
@@ -43,7 +43,8 @@ export type VersionVector = ValueTypeOf<typeof VersionVectorType>;
43
43
  /**
44
44
  * Per-dataset reference stored in workspace data files.
45
45
  *
46
- * Each dataset has a `.ref` file at `workspaces/<ws>/data/<path>.ref`.
46
+ * A local repository keeps each dataset's ref at
47
+ * `workspaces/<ws>/data/<path>.beast2`, beside the revision its write minted.
47
48
  * The ref tracks the dataset's current state and version provenance.
48
49
  *
49
50
  * Variants:
@@ -1 +1 @@
1
- {"version":3,"file":"dataset-ref.d.ts","sourceRoot":"","sources":["../../src/dataset-ref.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE,KAAK,WAAW,EAAE,MAAM,eAAe,CAAC;AAE1G;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,eAAO,MAAM,iBAAiB,kCAAmC,CAAC;AAClE,MAAM,MAAM,iBAAiB,GAAG,OAAO,iBAAiB,CAAC;AAEzD,MAAM,MAAM,aAAa,GAAG,WAAW,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAElE;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,eAAO,MAAM,cAAc;IACzB,oCAAoC;;IAEpC,qDAAqD;;;;IAIrD,uEAAuE;;;;;EAKvE,CAAC;AACH,MAAM,MAAM,cAAc,GAAG,OAAO,cAAc,CAAC;AAEnD,MAAM,MAAM,UAAU,GAAG,WAAW,CAAC,OAAO,cAAc,CAAC,CAAC"}
1
+ {"version":3,"file":"dataset-ref.d.ts","sourceRoot":"","sources":["../../src/dataset-ref.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE,KAAK,WAAW,EAAE,MAAM,eAAe,CAAC;AAE1G;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,eAAO,MAAM,iBAAiB,kCAAmC,CAAC;AAClE,MAAM,MAAM,iBAAiB,GAAG,OAAO,iBAAiB,CAAC;AAEzD,MAAM,MAAM,aAAa,GAAG,WAAW,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAElE;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,eAAO,MAAM,cAAc;IACzB,oCAAoC;;IAEpC,qDAAqD;;;;IAIrD,uEAAuE;;;;;EAKvE,CAAC;AACH,MAAM,MAAM,cAAc,GAAG,OAAO,cAAc,CAAC;AAEnD,MAAM,MAAM,UAAU,GAAG,WAAW,CAAC,OAAO,cAAc,CAAC,CAAC"}
@@ -5,9 +5,9 @@
5
5
  /**
6
6
  * Per-dataset reference types for reactive dataflow.
7
7
  *
8
- * Each dataset in a workspace has its own `.ref` file instead of being
9
- * part of a single root tree. This enables concurrent writes and
10
- * reactive re-execution.
8
+ * Each dataset in a workspace has its own ref instead of being part of a
9
+ * single root tree. This enables concurrent writes and reactive
10
+ * re-execution.
11
11
  *
12
12
  * A DatasetRef tracks:
13
13
  * - The current value hash (or unassigned/null state)
@@ -41,7 +41,8 @@ export const VersionVectorType = DictType(StringType, StringType);
41
41
  /**
42
42
  * Per-dataset reference stored in workspace data files.
43
43
  *
44
- * Each dataset has a `.ref` file at `workspaces/<ws>/data/<path>.ref`.
44
+ * A local repository keeps each dataset's ref at
45
+ * `workspaces/<ws>/data/<path>.beast2`, beside the revision its write minted.
45
46
  * The ref tracks the dataset's current state and version provenance.
46
47
  *
47
48
  * Variants:
@@ -1 +1 @@
1
- {"version":3,"file":"dataset-ref.js","sourceRoot":"","sources":["../../src/dataset-ref.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAoB,MAAM,eAAe,CAAC;AAE1G;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;AAKlE;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,WAAW,CAAC;IACxC,oCAAoC;IACpC,UAAU,EAAE,QAAQ;IACpB,qDAAqD;IACrD,IAAI,EAAE,UAAU,CAAC;QACf,QAAQ,EAAE,iBAAiB;KAC5B,CAAC;IACF,uEAAuE;IACvE,KAAK,EAAE,UAAU,CAAC;QAChB,IAAI,EAAE,UAAU;QAChB,QAAQ,EAAE,iBAAiB;KAC5B,CAAC;CACH,CAAC,CAAC"}
1
+ {"version":3,"file":"dataset-ref.js","sourceRoot":"","sources":["../../src/dataset-ref.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAoB,MAAM,eAAe,CAAC;AAE1G;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;AAKlE;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,WAAW,CAAC;IACxC,oCAAoC;IACpC,UAAU,EAAE,QAAQ;IACpB,qDAAqD;IACrD,IAAI,EAAE,UAAU,CAAC;QACf,QAAQ,EAAE,iBAAiB;KAC5B,CAAC;IACF,uEAAuE;IACvE,KAAK,EAAE,UAAU,CAAC;QAChB,IAAI,EAAE,UAAU;QAChB,QAAQ,EAAE,iBAAiB;KAC5B,CAAC;CACH,CAAC,CAAC"}
@@ -13,8 +13,9 @@
13
13
  * implementation code (via lockfile + sdist/tarball hashes) into execution
14
14
  * cache identity.
15
15
  *
16
- * All fields hold object-store hashes, never inline file contents: the blobs
17
- * ride the existing content-addressed object store and transfer machinery.
16
+ * All fields hold object-store hashes, never inline file contents: each names
17
+ * an object holding the file's bytes as a beast2 Blob, which rides the
18
+ * content-addressed object store and transfer machinery.
18
19
  */
19
20
  import { ArrayType, OptionType, StringType, StructType, ValueTypeOf, VariantType } from '@elaraai/east';
20
21
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"environment.d.ts","sourceRoot":"","sources":["../../src/environment.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAExG;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,qBAAqB;IAChC,6CAA6C;;IAE7C,sCAAsC;;IAEtC,8EAA8E;;;;;EAE9E,CAAC;AACH,MAAM,MAAM,qBAAqB,GAAG,OAAO,qBAAqB,CAAC;AACjE,MAAM,MAAM,iBAAiB,GAAG,WAAW,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAE1E;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,mBAAmB;IAC9B,2CAA2C;;IAE3C,uCAAuC;;IAEvC,gEAAgE;;EAEhE,CAAC;AACH,MAAM,MAAM,mBAAmB,GAAG,OAAO,mBAAmB,CAAC;AAC7D,MAAM,MAAM,eAAe,GAAG,WAAW,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAEtE;;;;;;;;;;GAUG;AACH,eAAO,MAAM,oBAAoB;IAC/B,gEAAgE;;EAEhE,CAAC;AACH,MAAM,MAAM,oBAAoB,GAAG,OAAO,oBAAoB,CAAC;AAC/D,MAAM,MAAM,gBAAgB,GAAG,WAAW,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAExE;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,eAAO,MAAM,oBAAoB;IAC/B,uEAAuE;;;;;EAEvE,CAAC;AACH,MAAM,MAAM,oBAAoB,GAAG,OAAO,oBAAoB,CAAC;AAC/D,MAAM,MAAM,gBAAgB,GAAG,WAAW,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAExE;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,eAAO,MAAM,4BAA4B;IACvC,0DAA0D;;IAE1D,4CAA4C;;IAE5C,kFAAkF;;IAElF,qEAAqE;;IAErE,8EAA8E;;;;;;EAE9E,CAAC;AACH,MAAM,MAAM,4BAA4B,GAAG,OAAO,4BAA4B,CAAC;AAC/E,MAAM,MAAM,wBAAwB,GAAG,WAAW,CAAC,OAAO,4BAA4B,CAAC,CAAC;AAExF;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,mBAAmB;IAC9B,sCAAsC;;QA1ItC,6CAA6C;;QAE7C,sCAAsC;;QAEtC,8EAA8E;;;;;;IAwI9E,+BAA+B;;QApH/B,2CAA2C;;QAE3C,uCAAuC;;QAEvC,gEAAgE;;;IAkHhE,yCAAyC;;QAhGzC,gEAAgE;;;IAkGhE,uDAAuD;;QArEvD,uEAAuE;;;;;;IAuEvE,8DAA8D;;QAxC9D,0DAA0D;;QAE1D,4CAA4C;;QAE5C,kFAAkF;;QAElF,qEAAqE;;QAErE,8EAA8E;;;;;;;EAkC9E,CAAC;AACH,MAAM,MAAM,mBAAmB,GAAG,OAAO,mBAAmB,CAAC;AAC7D,MAAM,MAAM,eAAe,GAAG,WAAW,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAEtE;;;;;;;;GAQG;AACH,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,eAAe,GAAG,MAAM,EAAE,CAkB3E"}
1
+ {"version":3,"file":"environment.d.ts","sourceRoot":"","sources":["../../src/environment.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAExG;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,qBAAqB;IAChC,6CAA6C;;IAE7C,sCAAsC;;IAEtC,8EAA8E;;;;;EAE9E,CAAC;AACH,MAAM,MAAM,qBAAqB,GAAG,OAAO,qBAAqB,CAAC;AACjE,MAAM,MAAM,iBAAiB,GAAG,WAAW,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAE1E;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,mBAAmB;IAC9B,2CAA2C;;IAE3C,uCAAuC;;IAEvC,gEAAgE;;EAEhE,CAAC;AACH,MAAM,MAAM,mBAAmB,GAAG,OAAO,mBAAmB,CAAC;AAC7D,MAAM,MAAM,eAAe,GAAG,WAAW,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAEtE;;;;;;;;;;GAUG;AACH,eAAO,MAAM,oBAAoB;IAC/B,gEAAgE;;EAEhE,CAAC;AACH,MAAM,MAAM,oBAAoB,GAAG,OAAO,oBAAoB,CAAC;AAC/D,MAAM,MAAM,gBAAgB,GAAG,WAAW,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAExE;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,eAAO,MAAM,oBAAoB;IAC/B,uEAAuE;;;;;EAEvE,CAAC;AACH,MAAM,MAAM,oBAAoB,GAAG,OAAO,oBAAoB,CAAC;AAC/D,MAAM,MAAM,gBAAgB,GAAG,WAAW,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAExE;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,eAAO,MAAM,4BAA4B;IACvC,0DAA0D;;IAE1D,4CAA4C;;IAE5C,kFAAkF;;IAElF,qEAAqE;;IAErE,8EAA8E;;;;;;EAE9E,CAAC;AACH,MAAM,MAAM,4BAA4B,GAAG,OAAO,4BAA4B,CAAC;AAC/E,MAAM,MAAM,wBAAwB,GAAG,WAAW,CAAC,OAAO,4BAA4B,CAAC,CAAC;AAExF;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,mBAAmB;IAC9B,sCAAsC;;QA1ItC,6CAA6C;;QAE7C,sCAAsC;;QAEtC,8EAA8E;;;;;;IAwI9E,+BAA+B;;QApH/B,2CAA2C;;QAE3C,uCAAuC;;QAEvC,gEAAgE;;;IAkHhE,yCAAyC;;QAhGzC,gEAAgE;;;IAkGhE,uDAAuD;;QArEvD,uEAAuE;;;;;;IAuEvE,8DAA8D;;QAxC9D,0DAA0D;;QAE1D,4CAA4C;;QAE5C,kFAAkF;;QAElF,qEAAqE;;QAErE,8EAA8E;;;;;;;EAkC9E,CAAC;AACH,MAAM,MAAM,mBAAmB,GAAG,OAAO,mBAAmB,CAAC;AAC7D,MAAM,MAAM,eAAe,GAAG,WAAW,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAEtE;;;;;;;;GAQG;AACH,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,eAAe,GAAG,MAAM,EAAE,CAkB3E"}
@@ -13,8 +13,9 @@
13
13
  * implementation code (via lockfile + sdist/tarball hashes) into execution
14
14
  * cache identity.
15
15
  *
16
- * All fields hold object-store hashes, never inline file contents: the blobs
17
- * ride the existing content-addressed object store and transfer machinery.
16
+ * All fields hold object-store hashes, never inline file contents: each names
17
+ * an object holding the file's bytes as a beast2 Blob, which rides the
18
+ * content-addressed object store and transfer machinery.
18
19
  */
19
20
  import { ArrayType, OptionType, StringType, StructType, VariantType } from '@elaraai/east';
20
21
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"environment.js","sourceRoot":"","sources":["../../src/environment.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"environment.js","sourceRoot":"","sources":["../../src/environment.ts"],"names":[],"mappings":"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"}