@lix-js/sdk 0.6.0-preview.0 → 0.6.0-preview.2

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 (196) hide show
  1. package/README.md +9 -0
  2. package/SKILL.md +468 -0
  3. package/dist/engine-wasm/index.d.ts +15 -11
  4. package/dist/engine-wasm/index.js +105 -38
  5. package/dist/engine-wasm/wasm/lix_engine.d.ts +14 -2
  6. package/dist/engine-wasm/wasm/lix_engine.js +18 -17
  7. package/dist/engine-wasm/wasm/lix_engine.wasm +0 -0
  8. package/dist/engine-wasm/wasm/lix_engine.wasm.d.ts +2 -1
  9. package/dist/generated/builtin-schemas.d.ts +31 -41
  10. package/dist/generated/builtin-schemas.js +52 -56
  11. package/dist/open-lix.d.ts +141 -24
  12. package/dist/open-lix.js +199 -35
  13. package/dist/sqlite/index.js +99 -22
  14. package/dist-engine-src/README.md +18 -0
  15. package/dist-engine-src/src/backend/kv.rs +358 -0
  16. package/dist-engine-src/src/backend/mod.rs +12 -0
  17. package/dist-engine-src/src/backend/testing.rs +658 -0
  18. package/dist-engine-src/src/backend/types.rs +96 -0
  19. package/dist-engine-src/src/binary_cas/chunking.rs +31 -0
  20. package/dist-engine-src/src/binary_cas/codec.rs +346 -0
  21. package/dist-engine-src/src/binary_cas/context.rs +139 -0
  22. package/dist-engine-src/src/binary_cas/kv.rs +1063 -0
  23. package/dist-engine-src/src/binary_cas/mod.rs +11 -0
  24. package/dist-engine-src/src/binary_cas/types.rs +127 -0
  25. package/dist-engine-src/src/cel/context.rs +86 -0
  26. package/dist-engine-src/src/cel/error.rs +19 -0
  27. package/dist-engine-src/src/cel/mod.rs +8 -0
  28. package/dist-engine-src/src/cel/provider.rs +9 -0
  29. package/dist-engine-src/src/cel/runtime.rs +167 -0
  30. package/dist-engine-src/src/cel/value.rs +50 -0
  31. package/dist-engine-src/src/changelog/codec.rs +321 -0
  32. package/dist-engine-src/src/changelog/context.rs +92 -0
  33. package/dist-engine-src/src/changelog/materialization.rs +121 -0
  34. package/dist-engine-src/src/changelog/mod.rs +13 -0
  35. package/dist-engine-src/src/changelog/reader.rs +20 -0
  36. package/dist-engine-src/src/changelog/storage.rs +220 -0
  37. package/dist-engine-src/src/changelog/types.rs +38 -0
  38. package/dist-engine-src/src/commit_graph/context.rs +1588 -0
  39. package/dist-engine-src/src/commit_graph/mod.rs +12 -0
  40. package/dist-engine-src/src/commit_graph/types.rs +145 -0
  41. package/dist-engine-src/src/commit_graph/walker.rs +780 -0
  42. package/dist-engine-src/src/common/error.rs +313 -0
  43. package/dist-engine-src/src/common/fingerprint.rs +3 -0
  44. package/dist-engine-src/src/common/fs_path.rs +1336 -0
  45. package/dist-engine-src/src/common/identity.rs +135 -0
  46. package/dist-engine-src/src/common/metadata.rs +35 -0
  47. package/dist-engine-src/src/common/mod.rs +23 -0
  48. package/dist-engine-src/src/common/types.rs +105 -0
  49. package/dist-engine-src/src/common/wire.rs +222 -0
  50. package/dist-engine-src/src/engine.rs +239 -0
  51. package/dist-engine-src/src/entity_identity.rs +285 -0
  52. package/dist-engine-src/src/functions/context.rs +327 -0
  53. package/dist-engine-src/src/functions/deterministic.rs +113 -0
  54. package/dist-engine-src/src/functions/mod.rs +18 -0
  55. package/dist-engine-src/src/functions/provider.rs +130 -0
  56. package/dist-engine-src/src/functions/state.rs +363 -0
  57. package/dist-engine-src/src/functions/types.rs +37 -0
  58. package/dist-engine-src/src/init.rs +505 -0
  59. package/dist-engine-src/src/json_store/compression.rs +77 -0
  60. package/dist-engine-src/src/json_store/context.rs +129 -0
  61. package/dist-engine-src/src/json_store/encoded.rs +15 -0
  62. package/dist-engine-src/src/json_store/mod.rs +9 -0
  63. package/dist-engine-src/src/json_store/store.rs +236 -0
  64. package/dist-engine-src/src/json_store/types.rs +52 -0
  65. package/dist-engine-src/src/lib.rs +61 -0
  66. package/dist-engine-src/src/live_state/context.rs +2241 -0
  67. package/dist-engine-src/src/live_state/mod.rs +15 -0
  68. package/dist-engine-src/src/live_state/overlay.rs +75 -0
  69. package/dist-engine-src/src/live_state/reader.rs +23 -0
  70. package/dist-engine-src/src/live_state/types.rs +239 -0
  71. package/dist-engine-src/src/live_state/visibility.rs +218 -0
  72. package/dist-engine-src/src/plugin/archive.rs +441 -0
  73. package/dist-engine-src/src/plugin/component.rs +183 -0
  74. package/dist-engine-src/src/plugin/install.rs +637 -0
  75. package/dist-engine-src/src/plugin/manifest.rs +516 -0
  76. package/dist-engine-src/src/plugin/materializer.rs +477 -0
  77. package/dist-engine-src/src/plugin/mod.rs +33 -0
  78. package/dist-engine-src/src/plugin/plugin_manifest.json +119 -0
  79. package/dist-engine-src/src/plugin/storage.rs +74 -0
  80. package/dist-engine-src/src/schema/annotations/defaults.rs +280 -0
  81. package/dist-engine-src/src/schema/annotations/mod.rs +1 -0
  82. package/dist-engine-src/src/schema/builtin/lix_account.json +22 -0
  83. package/dist-engine-src/src/schema/builtin/lix_active_account.json +30 -0
  84. package/dist-engine-src/src/schema/builtin/lix_binary_blob_ref.json +30 -0
  85. package/dist-engine-src/src/schema/builtin/lix_change.json +62 -0
  86. package/dist-engine-src/src/schema/builtin/lix_change_author.json +46 -0
  87. package/dist-engine-src/src/schema/builtin/lix_change_set.json +18 -0
  88. package/dist-engine-src/src/schema/builtin/lix_change_set_element.json +75 -0
  89. package/dist-engine-src/src/schema/builtin/lix_commit.json +62 -0
  90. package/dist-engine-src/src/schema/builtin/lix_commit_edge.json +46 -0
  91. package/dist-engine-src/src/schema/builtin/lix_directory_descriptor.json +53 -0
  92. package/dist-engine-src/src/schema/builtin/lix_entity_label.json +63 -0
  93. package/dist-engine-src/src/schema/builtin/lix_file_descriptor.json +53 -0
  94. package/dist-engine-src/src/schema/builtin/lix_key_value.json +41 -0
  95. package/dist-engine-src/src/schema/builtin/lix_label.json +22 -0
  96. package/dist-engine-src/src/schema/builtin/lix_registered_schema.json +31 -0
  97. package/dist-engine-src/src/schema/builtin/lix_version_descriptor.json +35 -0
  98. package/dist-engine-src/src/schema/builtin/lix_version_ref.json +49 -0
  99. package/dist-engine-src/src/schema/builtin/mod.rs +271 -0
  100. package/dist-engine-src/src/schema/definition.json +157 -0
  101. package/dist-engine-src/src/schema/definition.rs +636 -0
  102. package/dist-engine-src/src/schema/key.rs +206 -0
  103. package/dist-engine-src/src/schema/mod.rs +20 -0
  104. package/dist-engine-src/src/schema/seed.rs +14 -0
  105. package/dist-engine-src/src/schema/tests.rs +739 -0
  106. package/dist-engine-src/src/schema_registry.rs +294 -0
  107. package/dist-engine-src/src/session/context.rs +366 -0
  108. package/dist-engine-src/src/session/create_version.rs +80 -0
  109. package/dist-engine-src/src/session/execute.rs +447 -0
  110. package/dist-engine-src/src/session/merge/analysis.rs +102 -0
  111. package/dist-engine-src/src/session/merge/apply.rs +23 -0
  112. package/dist-engine-src/src/session/merge/conflicts.rs +62 -0
  113. package/dist-engine-src/src/session/merge/mod.rs +11 -0
  114. package/dist-engine-src/src/session/merge/stats.rs +65 -0
  115. package/dist-engine-src/src/session/merge/version.rs +437 -0
  116. package/dist-engine-src/src/session/mod.rs +25 -0
  117. package/dist-engine-src/src/session/switch_version.rs +121 -0
  118. package/dist-engine-src/src/sql2/change_provider.rs +337 -0
  119. package/dist-engine-src/src/sql2/classify.rs +147 -0
  120. package/dist-engine-src/src/sql2/commit_derived_provider.rs +591 -0
  121. package/dist-engine-src/src/sql2/context.rs +307 -0
  122. package/dist-engine-src/src/sql2/directory_history_provider.rs +623 -0
  123. package/dist-engine-src/src/sql2/directory_provider.rs +2405 -0
  124. package/dist-engine-src/src/sql2/dml.rs +148 -0
  125. package/dist-engine-src/src/sql2/entity_history_provider.rs +444 -0
  126. package/dist-engine-src/src/sql2/entity_provider.rs +2700 -0
  127. package/dist-engine-src/src/sql2/error.rs +196 -0
  128. package/dist-engine-src/src/sql2/execute.rs +3379 -0
  129. package/dist-engine-src/src/sql2/file_history_provider.rs +902 -0
  130. package/dist-engine-src/src/sql2/file_provider.rs +3254 -0
  131. package/dist-engine-src/src/sql2/filesystem_planner.rs +1526 -0
  132. package/dist-engine-src/src/sql2/filesystem_predicates.rs +159 -0
  133. package/dist-engine-src/src/sql2/filesystem_visibility.rs +369 -0
  134. package/dist-engine-src/src/sql2/history_projection.rs +80 -0
  135. package/dist-engine-src/src/sql2/history_provider.rs +418 -0
  136. package/dist-engine-src/src/sql2/history_route.rs +643 -0
  137. package/dist-engine-src/src/sql2/lix_state_provider.rs +2430 -0
  138. package/dist-engine-src/src/sql2/mod.rs +43 -0
  139. package/dist-engine-src/src/sql2/read_only.rs +65 -0
  140. package/dist-engine-src/src/sql2/record_batch.rs +17 -0
  141. package/dist-engine-src/src/sql2/result_metadata.rs +29 -0
  142. package/dist-engine-src/src/sql2/runtime.rs +60 -0
  143. package/dist-engine-src/src/sql2/session.rs +135 -0
  144. package/dist-engine-src/src/sql2/udfs/common.rs +295 -0
  145. package/dist-engine-src/src/sql2/udfs/lix_active_version_commit_id.rs +53 -0
  146. package/dist-engine-src/src/sql2/udfs/lix_empty_blob.rs +47 -0
  147. package/dist-engine-src/src/sql2/udfs/lix_json.rs +100 -0
  148. package/dist-engine-src/src/sql2/udfs/lix_json_get.rs +99 -0
  149. package/dist-engine-src/src/sql2/udfs/lix_json_get_text.rs +99 -0
  150. package/dist-engine-src/src/sql2/udfs/lix_text_decode.rs +82 -0
  151. package/dist-engine-src/src/sql2/udfs/lix_text_encode.rs +85 -0
  152. package/dist-engine-src/src/sql2/udfs/lix_uuid_v7.rs +76 -0
  153. package/dist-engine-src/src/sql2/udfs/mod.rs +82 -0
  154. package/dist-engine-src/src/sql2/version_provider.rs +1187 -0
  155. package/dist-engine-src/src/sql2/version_scope.rs +394 -0
  156. package/dist-engine-src/src/sql2/write_normalization.rs +345 -0
  157. package/dist-engine-src/src/storage/context.rs +356 -0
  158. package/dist-engine-src/src/storage/mod.rs +14 -0
  159. package/dist-engine-src/src/storage/read_scope.rs +88 -0
  160. package/dist-engine-src/src/storage/types.rs +501 -0
  161. package/dist-engine-src/src/storage_bench.rs +3406 -0
  162. package/dist-engine-src/src/test_support.rs +81 -0
  163. package/dist-engine-src/src/tracked_state/by_file_index.rs +102 -0
  164. package/dist-engine-src/src/tracked_state/codec.rs +747 -0
  165. package/dist-engine-src/src/tracked_state/context.rs +983 -0
  166. package/dist-engine-src/src/tracked_state/diff.rs +494 -0
  167. package/dist-engine-src/src/tracked_state/materialization.rs +141 -0
  168. package/dist-engine-src/src/tracked_state/merge.rs +474 -0
  169. package/dist-engine-src/src/tracked_state/mod.rs +31 -0
  170. package/dist-engine-src/src/tracked_state/rebuild.rs +771 -0
  171. package/dist-engine-src/src/tracked_state/storage.rs +243 -0
  172. package/dist-engine-src/src/tracked_state/tree.rs +2744 -0
  173. package/dist-engine-src/src/tracked_state/tree_types.rs +176 -0
  174. package/dist-engine-src/src/tracked_state/types.rs +61 -0
  175. package/dist-engine-src/src/transaction/commit.rs +1224 -0
  176. package/dist-engine-src/src/transaction/context.rs +1307 -0
  177. package/dist-engine-src/src/transaction/live_state_overlay.rs +34 -0
  178. package/dist-engine-src/src/transaction/mod.rs +11 -0
  179. package/dist-engine-src/src/transaction/normalization.rs +1026 -0
  180. package/dist-engine-src/src/transaction/schema_resolver.rs +127 -0
  181. package/dist-engine-src/src/transaction/staging.rs +1436 -0
  182. package/dist-engine-src/src/transaction/types.rs +351 -0
  183. package/dist-engine-src/src/transaction/validation.rs +4811 -0
  184. package/dist-engine-src/src/untracked_state/codec.rs +363 -0
  185. package/dist-engine-src/src/untracked_state/context.rs +82 -0
  186. package/dist-engine-src/src/untracked_state/materialization.rs +157 -0
  187. package/dist-engine-src/src/untracked_state/mod.rs +17 -0
  188. package/dist-engine-src/src/untracked_state/storage.rs +348 -0
  189. package/dist-engine-src/src/untracked_state/types.rs +96 -0
  190. package/dist-engine-src/src/version/context.rs +52 -0
  191. package/dist-engine-src/src/version/mod.rs +12 -0
  192. package/dist-engine-src/src/version/refs.rs +421 -0
  193. package/dist-engine-src/src/version/stage_rows.rs +71 -0
  194. package/dist-engine-src/src/version/types.rs +21 -0
  195. package/dist-engine-src/src/wasm/mod.rs +60 -0
  196. package/package.json +68 -63
@@ -52,30 +52,6 @@ export const LixActiveAccountSchema = {
52
52
  ],
53
53
  "additionalProperties": false
54
54
  };
55
- export const LixActiveVersionSchema = {
56
- "x-lix-key": "lix_active_version",
57
- "x-lix-version": "1",
58
- "description": "Singleton tracking which version is currently checked out in the local runtime. Exactly one row exists at all times; writing to this surface is how clients switch versions.",
59
- "x-lix-primary-key": [
60
- "/id"
61
- ],
62
- "type": "object",
63
- "properties": {
64
- "id": {
65
- "type": "string",
66
- "description": "Fixed singleton key (constant, not a UUID); the primary-key column exists to satisfy entity-model requirements and enforces the one-row invariant."
67
- },
68
- "version_id": {
69
- "type": "string",
70
- "description": "The currently active version; references `lix_version_descriptor.id` and drives the default scope for reads and writes in the session."
71
- }
72
- },
73
- "required": [
74
- "id",
75
- "version_id"
76
- ],
77
- "additionalProperties": false
78
- };
79
55
  export const LixBinaryBlobRefSchema = {
80
56
  "x-lix-key": "lix_binary_blob_ref",
81
57
  "x-lix-version": "1",
@@ -109,7 +85,7 @@ export const LixBinaryBlobRefSchema = {
109
85
  export const LixChangeSchema = {
110
86
  "x-lix-key": "lix_change",
111
87
  "x-lix-version": "1",
112
- "description": "Canonical immutable change fact. This surface represents the authoritative stream of journaled change facts. Commit lineage and non-commit scope are modeled separately around these facts. The public `untracked` field is retained as convenience metadata and should not be treated as proof that trackedness is intrinsic to the canonical fact row itself.",
88
+ "description": "Canonical immutable change fact. This surface represents the authoritative stream of journaled change facts. Commit lineage and non-commit scope are modeled separately around these facts.",
113
89
  "x-lix-primary-key": [
114
90
  "/id"
115
91
  ],
@@ -139,13 +115,6 @@ export const LixChangeSchema = {
139
115
  ],
140
116
  "description": "Filesystem-scoped file identifier when the change belongs to a file; NULL for engine-internal entities (commits, versions, settings)."
141
117
  },
142
- "plugin_key": {
143
- "type": [
144
- "string",
145
- "null"
146
- ],
147
- "description": "Plugin that authored the change; NULL for engine-internal changes."
148
- },
149
118
  "metadata": {
150
119
  "type": [
151
120
  "object",
@@ -157,10 +126,6 @@ export const LixChangeSchema = {
157
126
  "type": "string",
158
127
  "description": "ISO-8601 timestamp at which the change was recorded (set via `lix_timestamp()` at write time)."
159
128
  },
160
- "untracked": {
161
- "type": "boolean",
162
- "description": "Public convenience field indicating that the change currently participates in non-commit visibility rather than commit lineage. This is intended to become derived metadata rather than intrinsic canonical storage truth."
163
- },
164
129
  "snapshot_content": {
165
130
  "type": [
166
131
  "object",
@@ -175,9 +140,7 @@ export const LixChangeSchema = {
175
140
  "schema_key",
176
141
  "schema_version",
177
142
  "file_id",
178
- "plugin_key",
179
- "created_at",
180
- "untracked"
143
+ "created_at"
181
144
  ],
182
145
  "additionalProperties": false
183
146
  };
@@ -248,7 +211,7 @@ export const LixChangeSetSchema = {
248
211
  export const LixChangeSetElementSchema = {
249
212
  "x-lix-key": "lix_change_set_element",
250
213
  "x-lix-version": "1",
251
- "description": "Derived relational index mapping a change_set to the canonical changes it contains. Rebuildable from `lix_commit.change_ids` plus the referenced `lix_change` rows; the unique constraint enforces at most one change per (entity, schema, file) tuple within a single change_set.",
214
+ "description": "Derived relational index mapping a change_set to the canonical changes introduced by its commit relative to the commit's first parent. Rebuildable from `lix_commit.change_ids` plus the referenced `lix_change` rows; the unique constraint enforces at most one change per (entity, schema, file) tuple within a single change_set.",
252
215
  "x-lix-primary-key": [
253
216
  "/change_set_id",
254
217
  "/change_id"
@@ -293,7 +256,7 @@ export const LixChangeSetElementSchema = {
293
256
  },
294
257
  "change_id": {
295
258
  "type": "string",
296
- "description": "The canonical change included in the change_set (references `lix_change.id`)."
259
+ "description": "The canonical change introduced/adopted by the change_set's commit (references `lix_change.id`)."
297
260
  },
298
261
  "entity_id": {
299
262
  "type": "string",
@@ -323,7 +286,7 @@ export const LixChangeSetElementSchema = {
323
286
  export const LixCommitSchema = {
324
287
  "x-lix-key": "lix_commit",
325
288
  "x-lix-version": "1",
326
- "description": "Commit header change. Canonical commit membership is stored in change_ids as the ordered list of non-header member changes for this commit. Derived projections such as lix_change_set_element must be rebuildable from this header plus the referenced change rows. Version head pointers such as lix_version_ref are maintained separately and are not commit members.",
289
+ "description": "Commit header change. Canonical commit membership is stored in change_ids as the ordered list of canonical changes whose effects this commit introduces relative to its first parent. A merge commit may reference canonical changes originally authored in another parent instead of copying them. Derived projections such as lix_change_set_element must be rebuildable from this header plus the referenced change rows. Version head pointers such as lix_version_ref are maintained separately and are not commit members.",
327
290
  "x-lix-primary-key": [
328
291
  "/id"
329
292
  ],
@@ -357,7 +320,7 @@ export const LixCommitSchema = {
357
320
  "items": {
358
321
  "type": "string"
359
322
  },
360
- "description": "Canonical ordered membership list of non-header change IDs that belong to this commit. Derived indexes such as lix_change_set_element must be rebuildable from this list. This does not include lix_version_ref pointer rows."
323
+ "description": "Canonical ordered membership list of non-header change IDs whose effects this commit introduces relative to its first parent. Merge commits may reference existing changes from another parent instead of minting equivalent copies. Derived indexes such as lix_change_set_element must be rebuildable from this list. This does not include lix_version_ref pointer rows."
361
324
  },
362
325
  "author_account_ids": {
363
326
  "type": "array",
@@ -440,6 +403,19 @@ export const LixDirectoryDescriptorSchema = {
440
403
  "/name"
441
404
  ]
442
405
  ],
406
+ "x-lix-foreign-keys": [
407
+ {
408
+ "properties": [
409
+ "/parent_id"
410
+ ],
411
+ "references": {
412
+ "schemaKey": "lix_directory_descriptor",
413
+ "properties": [
414
+ "/id"
415
+ ]
416
+ }
417
+ }
418
+ ],
443
419
  "type": "object",
444
420
  "properties": {
445
421
  "id": {
@@ -540,10 +516,22 @@ export const LixFileDescriptorSchema = {
540
516
  "x-lix-unique": [
541
517
  [
542
518
  "/directory_id",
543
- "/name",
544
- "/extension"
519
+ "/name"
545
520
  ]
546
521
  ],
522
+ "x-lix-foreign-keys": [
523
+ {
524
+ "properties": [
525
+ "/directory_id"
526
+ ],
527
+ "references": {
528
+ "schemaKey": "lix_directory_descriptor",
529
+ "properties": [
530
+ "/id"
531
+ ]
532
+ }
533
+ }
534
+ ],
547
535
  "type": "object",
548
536
  "properties": {
549
537
  "id": {
@@ -558,14 +546,7 @@ export const LixFileDescriptorSchema = {
558
546
  },
559
547
  "name": {
560
548
  "type": "string",
561
- "pattern": "^[^/\\\\]+$"
562
- },
563
- "extension": {
564
- "type": [
565
- "string",
566
- "null"
567
- ],
568
- "pattern": "^[^./\\\\]+$"
549
+ "pattern": "^(?!\\.{1,2}$)[^/\\\\]+$"
569
550
  },
570
551
  "hidden": {
571
552
  "type": "boolean",
@@ -575,8 +556,7 @@ export const LixFileDescriptorSchema = {
575
556
  "required": [
576
557
  "id",
577
558
  "directory_id",
578
- "name",
579
- "extension"
559
+ "name"
580
560
  ],
581
561
  "additionalProperties": false
582
562
  };
@@ -681,12 +661,17 @@ export const LixVersionDescriptorSchema = {
681
661
  "x-lix-primary-key": [
682
662
  "/id"
683
663
  ],
664
+ "x-lix-unique": [
665
+ [
666
+ "/name"
667
+ ]
668
+ ],
684
669
  "type": "object",
685
670
  "properties": {
686
671
  "id": {
687
672
  "type": "string",
688
673
  "x-lix-default": "lix_uuid_v7()",
689
- "description": "Stable version identifier (UUIDv7). Referenced by `lix_version_ref.id` and `lix_active_version.version_id`."
674
+ "description": "Stable version identifier (UUIDv7). Referenced by `lix_version_ref.id`."
690
675
  },
691
676
  "name": {
692
677
  "type": "string",
@@ -712,6 +697,17 @@ export const LixVersionRefSchema = {
712
697
  "/id"
713
698
  ],
714
699
  "x-lix-foreign-keys": [
700
+ {
701
+ "properties": [
702
+ "/id"
703
+ ],
704
+ "references": {
705
+ "schemaKey": "lix_version_descriptor",
706
+ "properties": [
707
+ "/id"
708
+ ]
709
+ }
710
+ },
715
711
  {
716
712
  "properties": [
717
713
  "/commit_id"
@@ -3,19 +3,34 @@ export type JsonValue = null | boolean | number | string | JsonValue[] | {
3
3
  [key: string]: JsonValue;
4
4
  };
5
5
  export type LixRuntimeValue = JsonValue | Uint8Array | ArrayBuffer | Value;
6
- export type RowSet = {
6
+ export type LixNativeValue = JsonValue | Uint8Array;
7
+ export type ExecuteResult = {
7
8
  columns: string[];
8
- rows: Value[][];
9
+ rows: Row[];
10
+ rowsAffected: number;
11
+ notices: LixNotice[];
9
12
  };
10
- export type ExecuteResult = {
11
- kind: "rows";
12
- rows: RowSet;
13
- } | {
14
- kind: "affectedRows";
15
- affectedRows: number;
13
+ export type LixNotice = {
14
+ code: string;
15
+ message: string;
16
+ hint?: string;
16
17
  };
17
- export type TransactionBeginMode = "read" | "write" | "deferred";
18
- export type KvScanRange = {
18
+ export declare class Row {
19
+ readonly columns: string[];
20
+ private readonly valuesByIndex;
21
+ constructor(columns: string[], values: Value[]);
22
+ get(columnName: string): LixNativeValue;
23
+ tryGet(columnName: string): LixNativeValue | undefined;
24
+ value(columnName: string): Value;
25
+ tryValue(columnName: string): Value | undefined;
26
+ getAt(index: number): LixNativeValue;
27
+ valueAt(index: number): Value;
28
+ values(): Value[];
29
+ toObject(): Record<string, LixNativeValue>;
30
+ toValueMap(): Record<string, Value>;
31
+ private availableColumns;
32
+ }
33
+ export type BackendKvScanRange = {
19
34
  kind: "prefix";
20
35
  prefix: Uint8Array;
21
36
  } | {
@@ -23,22 +38,78 @@ export type KvScanRange = {
23
38
  start: Uint8Array;
24
39
  end: Uint8Array;
25
40
  };
26
- export type KvPair = {
41
+ export type BackendKvGetRequest = {
42
+ groups: BackendKvGetGroup[];
43
+ };
44
+ export type BackendKvGetGroup = {
45
+ namespace: string;
46
+ keys: Uint8Array[];
47
+ };
48
+ export type BackendKvValueBatch = {
49
+ groups: BackendKvValueGroup[];
50
+ };
51
+ export type BackendKvValueGroup = {
52
+ namespace: string;
53
+ values: Array<Uint8Array | null>;
54
+ };
55
+ export type BackendKvExistsBatch = {
56
+ groups: BackendKvExistsGroup[];
57
+ };
58
+ export type BackendKvExistsGroup = {
59
+ namespace: string;
60
+ exists: boolean[];
61
+ };
62
+ export type BackendKvScanRequest = {
63
+ namespace: string;
64
+ range: BackendKvScanRange;
65
+ after?: Uint8Array | null;
66
+ limit: number;
67
+ };
68
+ export type BackendKvKeyPage = {
69
+ keys: Uint8Array[];
70
+ resumeAfter?: Uint8Array | null;
71
+ };
72
+ export type BackendKvValuePage = {
73
+ values: Uint8Array[];
74
+ resumeAfter?: Uint8Array | null;
75
+ };
76
+ export type BackendKvEntryPage = {
77
+ keys: Uint8Array[];
78
+ values: Uint8Array[];
79
+ resumeAfter?: Uint8Array | null;
80
+ };
81
+ export type BackendKvPut = {
27
82
  key: Uint8Array;
28
83
  value: Uint8Array;
29
84
  };
30
- export type LixBackendTransaction = {
31
- kvGet(namespace: string, key: Uint8Array): Uint8Array | null | undefined;
32
- kvScan(namespace: string, range: KvScanRange, limit?: number | null): KvPair[];
33
- kvPut(namespace: string, key: Uint8Array, value: Uint8Array): void;
34
- kvDelete(namespace: string, key: Uint8Array): void;
35
- commit(): void;
85
+ export type BackendKvWriteBatch = {
86
+ groups: BackendKvWriteGroup[];
87
+ };
88
+ export type BackendKvWriteGroup = {
89
+ namespace: string;
90
+ puts: BackendKvPut[];
91
+ deletes: Uint8Array[];
92
+ };
93
+ export type BackendKvWriteStats = {
94
+ puts: number;
95
+ deletes: number;
96
+ bytesWritten: number;
97
+ };
98
+ export type LixBackendReadTransaction = {
99
+ getValues(request: BackendKvGetRequest): BackendKvValueBatch;
100
+ existsMany(request: BackendKvGetRequest): BackendKvExistsBatch;
101
+ scanKeys(request: BackendKvScanRequest): BackendKvKeyPage;
102
+ scanValues(request: BackendKvScanRequest): BackendKvValuePage;
103
+ scanEntries(request: BackendKvScanRequest): BackendKvEntryPage;
36
104
  rollback(): void;
37
105
  };
106
+ export type LixBackendWriteTransaction = LixBackendReadTransaction & {
107
+ writeKvBatch(batch: BackendKvWriteBatch): BackendKvWriteStats;
108
+ commit(): void;
109
+ };
38
110
  export type LixBackend = {
39
- beginTransaction(mode: TransactionBeginMode): LixBackendTransaction;
40
- kvGet?(namespace: string, key: Uint8Array): Uint8Array | null | undefined;
41
- kvScan?(namespace: string, range: KvScanRange, limit?: number | null): KvPair[];
111
+ beginReadTransaction(): LixBackendReadTransaction;
112
+ beginWriteTransaction(): LixBackendWriteTransaction;
42
113
  close?(): void;
43
114
  };
44
115
  export type OpenLixOptions = {
@@ -47,9 +118,13 @@ export type OpenLixOptions = {
47
118
  export type CreateVersionOptions = {
48
119
  id?: string;
49
120
  name: string;
121
+ fromCommitId?: string;
50
122
  };
51
123
  export type CreateVersionResult = {
52
- versionId: string;
124
+ id: string;
125
+ name: string;
126
+ hidden: boolean;
127
+ commitId: string;
53
128
  };
54
129
  export type SwitchVersionOptions = {
55
130
  versionId: string;
@@ -60,23 +135,65 @@ export type SwitchVersionResult = {
60
135
  export type MergeVersionOptions = {
61
136
  sourceVersionId: string;
62
137
  };
63
- export type MergeVersionOutcome = "alreadyUpToDate" | "mergeCommitted";
138
+ export type MergeVersionOutcome = "alreadyUpToDate" | "fastForward" | "mergeCommitted";
64
139
  export type MergeVersionResult = {
140
+ /**
141
+ * How the merge was applied. `fastForward` advances the target ref without
142
+ * creating a merge commit, but can still make source changes visible.
143
+ */
65
144
  outcome: MergeVersionOutcome;
66
145
  targetVersionId: string;
67
146
  sourceVersionId: string;
68
- mergeBaseCommitId: string | null;
147
+ baseCommitId: string;
69
148
  targetHeadBeforeCommitId: string;
70
149
  sourceHeadBeforeCommitId: string;
71
150
  targetHeadAfterCommitId: string;
72
151
  createdMergeCommitId: string | null;
73
- appliedChangeCount: number;
152
+ changeStats: MergeChangeStats;
153
+ };
154
+ export type MergeVersionPreviewResult = {
155
+ outcome: MergeVersionOutcome;
156
+ targetVersionId: string;
157
+ sourceVersionId: string;
158
+ baseCommitId: string;
159
+ targetHeadCommitId: string;
160
+ sourceHeadCommitId: string;
161
+ changeStats: MergeChangeStats;
162
+ conflicts: MergeConflict[];
163
+ };
164
+ export type MergeChangeStats = {
165
+ total: number;
166
+ added: number;
167
+ modified: number;
168
+ removed: number;
169
+ };
170
+ export type MergeConflict = {
171
+ kind: "sameEntityChanged";
172
+ schemaKey: string;
173
+ entityId: string;
174
+ fileId: string | null;
175
+ target: MergeConflictSide;
176
+ source: MergeConflictSide;
177
+ };
178
+ export type MergeConflictSide = {
179
+ kind: "added" | "modified" | "removed";
180
+ beforeChangeId: string | null;
181
+ afterChangeId: string | null;
74
182
  };
75
183
  export type Lix = {
184
+ /**
185
+ * Executes one DataFusion SQL statement against this Lix session.
186
+ *
187
+ * This is not SQLite SQL. Use the DataFusion SQL dialect; positional
188
+ * placeholders are `$1`, `$2`, and so on. SQLite-specific catalog tables and
189
+ * transaction statements such as `sqlite_master`, `BEGIN`, and `COMMIT` are
190
+ * not available. Use `information_schema` for catalog inspection.
191
+ */
76
192
  execute(sql: string, params?: ReadonlyArray<LixRuntimeValue>): Promise<ExecuteResult>;
77
193
  activeVersionId(): Promise<string>;
78
194
  createVersion(options: CreateVersionOptions): Promise<CreateVersionResult>;
79
195
  switchVersion(options: SwitchVersionOptions): Promise<SwitchVersionResult>;
196
+ mergeVersionPreview(options: MergeVersionOptions): Promise<MergeVersionPreviewResult>;
80
197
  mergeVersion(options: MergeVersionOptions): Promise<MergeVersionResult>;
81
198
  close(): Promise<void>;
82
199
  };