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

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 (169) hide show
  1. package/SKILL.md +46 -8
  2. package/dist/engine-wasm/wasm/lix_engine.d.ts +25 -1
  3. package/dist/engine-wasm/wasm/lix_engine.js +60 -2
  4. package/dist/engine-wasm/wasm/lix_engine.wasm +0 -0
  5. package/dist/engine-wasm/wasm/lix_engine.wasm.d.ts +5 -0
  6. package/dist/generated/builtin-schemas.d.ts +87 -162
  7. package/dist/generated/builtin-schemas.js +139 -236
  8. package/dist/open-lix.d.ts +10 -3
  9. package/dist/open-lix.js +39 -0
  10. package/dist-engine-src/src/binary_cas/types.rs +0 -6
  11. package/dist-engine-src/src/catalog/context.rs +412 -0
  12. package/dist-engine-src/src/catalog/mod.rs +10 -0
  13. package/dist-engine-src/src/catalog/schema.rs +4 -0
  14. package/dist-engine-src/src/catalog/snapshot.rs +1114 -0
  15. package/dist-engine-src/src/cel/mod.rs +1 -1
  16. package/dist-engine-src/src/cel/provider.rs +1 -1
  17. package/dist-engine-src/src/commit_graph/context.rs +328 -1015
  18. package/dist-engine-src/src/commit_graph/mod.rs +2 -3
  19. package/dist-engine-src/src/commit_graph/types.rs +7 -43
  20. package/dist-engine-src/src/commit_graph/walker.rs +57 -81
  21. package/dist-engine-src/src/commit_store/codec.rs +887 -0
  22. package/dist-engine-src/src/commit_store/context.rs +944 -0
  23. package/dist-engine-src/src/commit_store/materialization.rs +84 -0
  24. package/dist-engine-src/src/commit_store/mod.rs +16 -0
  25. package/dist-engine-src/src/commit_store/storage.rs +600 -0
  26. package/dist-engine-src/src/commit_store/types.rs +215 -0
  27. package/dist-engine-src/src/common/identity.rs +15 -5
  28. package/dist-engine-src/src/common/json_pointer.rs +67 -0
  29. package/dist-engine-src/src/common/metadata.rs +17 -12
  30. package/dist-engine-src/src/common/mod.rs +5 -5
  31. package/dist-engine-src/src/domain.rs +324 -0
  32. package/dist-engine-src/src/engine.rs +29 -43
  33. package/dist-engine-src/src/entity_identity.rs +238 -118
  34. package/dist-engine-src/src/functions/context.rs +17 -52
  35. package/dist-engine-src/src/functions/deterministic.rs +1 -1
  36. package/dist-engine-src/src/functions/mod.rs +1 -1
  37. package/dist-engine-src/src/functions/provider.rs +4 -4
  38. package/dist-engine-src/src/functions/state.rs +39 -66
  39. package/dist-engine-src/src/functions/types.rs +1 -1
  40. package/dist-engine-src/src/init.rs +204 -151
  41. package/dist-engine-src/src/json_store/context.rs +354 -60
  42. package/dist-engine-src/src/json_store/encoded.rs +6 -6
  43. package/dist-engine-src/src/json_store/mod.rs +4 -1
  44. package/dist-engine-src/src/json_store/store.rs +884 -11
  45. package/dist-engine-src/src/json_store/types.rs +166 -1
  46. package/dist-engine-src/src/lib.rs +11 -10
  47. package/dist-engine-src/src/live_state/context.rs +608 -830
  48. package/dist-engine-src/src/live_state/mod.rs +3 -3
  49. package/dist-engine-src/src/live_state/overlay.rs +7 -7
  50. package/dist-engine-src/src/live_state/reader.rs +5 -5
  51. package/dist-engine-src/src/live_state/types.rs +19 -36
  52. package/dist-engine-src/src/live_state/visibility.rs +19 -14
  53. package/dist-engine-src/src/plugin/archive.rs +3 -6
  54. package/dist-engine-src/src/plugin/install.rs +0 -18
  55. package/dist-engine-src/src/plugin/plugin_manifest.json +0 -1
  56. package/dist-engine-src/src/schema/annotations/defaults.rs +2 -7
  57. package/dist-engine-src/src/schema/builtin/lix_account.json +0 -1
  58. package/dist-engine-src/src/schema/builtin/lix_active_account.json +0 -1
  59. package/dist-engine-src/src/schema/builtin/lix_binary_blob_ref.json +0 -1
  60. package/dist-engine-src/src/schema/builtin/lix_change.json +11 -10
  61. package/dist-engine-src/src/schema/builtin/lix_change_author.json +0 -1
  62. package/dist-engine-src/src/schema/builtin/lix_commit.json +8 -46
  63. package/dist-engine-src/src/schema/builtin/lix_commit_edge.json +29 -22
  64. package/dist-engine-src/src/schema/builtin/lix_directory_descriptor.json +0 -1
  65. package/dist-engine-src/src/schema/builtin/lix_file_descriptor.json +0 -1
  66. package/dist-engine-src/src/schema/builtin/lix_key_value.json +0 -1
  67. package/dist-engine-src/src/schema/builtin/lix_label.json +10 -3
  68. package/dist-engine-src/src/schema/builtin/lix_label_assignment.json +74 -0
  69. package/dist-engine-src/src/schema/builtin/lix_registered_schema.json +2 -8
  70. package/dist-engine-src/src/schema/builtin/lix_version_descriptor.json +0 -1
  71. package/dist-engine-src/src/schema/builtin/lix_version_ref.json +0 -1
  72. package/dist-engine-src/src/schema/builtin/mod.rs +10 -59
  73. package/dist-engine-src/src/schema/compatibility.rs +787 -0
  74. package/dist-engine-src/src/schema/definition.json +47 -17
  75. package/dist-engine-src/src/schema/definition.rs +202 -96
  76. package/dist-engine-src/src/schema/key.rs +9 -77
  77. package/dist-engine-src/src/schema/mod.rs +4 -4
  78. package/dist-engine-src/src/schema/tests.rs +133 -92
  79. package/dist-engine-src/src/session/context.rs +86 -48
  80. package/dist-engine-src/src/session/create_version.rs +22 -14
  81. package/dist-engine-src/src/session/execute.rs +117 -23
  82. package/dist-engine-src/src/session/merge/apply.rs +4 -4
  83. package/dist-engine-src/src/session/merge/conflicts.rs +3 -2
  84. package/dist-engine-src/src/session/merge/stats.rs +1 -1
  85. package/dist-engine-src/src/session/merge/version.rs +35 -45
  86. package/dist-engine-src/src/session/mod.rs +9 -7
  87. package/dist-engine-src/src/session/optimization9_sql2_bench.rs +100 -0
  88. package/dist-engine-src/src/session/switch_version.rs +17 -28
  89. package/dist-engine-src/src/session/transaction.rs +76 -0
  90. package/dist-engine-src/src/sql2/change_provider.rs +14 -20
  91. package/dist-engine-src/src/sql2/classify.rs +75 -48
  92. package/dist-engine-src/src/sql2/context.rs +22 -18
  93. package/dist-engine-src/src/sql2/directory_history_provider.rs +28 -20
  94. package/dist-engine-src/src/sql2/directory_provider.rs +131 -83
  95. package/dist-engine-src/src/sql2/entity_history_provider.rs +10 -14
  96. package/dist-engine-src/src/sql2/entity_provider.rs +680 -169
  97. package/dist-engine-src/src/sql2/error.rs +24 -5
  98. package/dist-engine-src/src/sql2/execute.rs +426 -272
  99. package/dist-engine-src/src/sql2/file_history_provider.rs +29 -21
  100. package/dist-engine-src/src/sql2/file_provider.rs +533 -108
  101. package/dist-engine-src/src/sql2/filesystem_planner.rs +58 -94
  102. package/dist-engine-src/src/sql2/filesystem_visibility.rs +37 -23
  103. package/dist-engine-src/src/sql2/history_projection.rs +3 -27
  104. package/dist-engine-src/src/sql2/history_provider.rs +11 -17
  105. package/dist-engine-src/src/sql2/history_route.rs +22 -8
  106. package/dist-engine-src/src/sql2/lix_state_provider.rs +178 -96
  107. package/dist-engine-src/src/sql2/mod.rs +8 -4
  108. package/dist-engine-src/src/sql2/predicate_typecheck.rs +246 -0
  109. package/dist-engine-src/src/sql2/public_bind/assignment.rs +46 -0
  110. package/dist-engine-src/src/sql2/public_bind/capability.rs +41 -0
  111. package/dist-engine-src/src/sql2/public_bind/dml.rs +172 -0
  112. package/dist-engine-src/src/sql2/public_bind/mod.rs +26 -0
  113. package/dist-engine-src/src/sql2/public_bind/table.rs +168 -0
  114. package/dist-engine-src/src/sql2/read_only.rs +10 -12
  115. package/dist-engine-src/src/sql2/session.rs +7 -10
  116. package/dist-engine-src/src/sql2/udfs/lix_timestamp.rs +76 -0
  117. package/dist-engine-src/src/sql2/udfs/mod.rs +8 -1
  118. package/dist-engine-src/src/sql2/udfs/public_call.rs +238 -0
  119. package/dist-engine-src/src/sql2/version_provider.rs +46 -31
  120. package/dist-engine-src/src/sql2/version_scope.rs +4 -4
  121. package/dist-engine-src/src/storage_bench.rs +1782 -325
  122. package/dist-engine-src/src/test_support.rs +183 -36
  123. package/dist-engine-src/src/tracked_state/by_file_index.rs +20 -24
  124. package/dist-engine-src/src/tracked_state/codec.rs +1519 -181
  125. package/dist-engine-src/src/tracked_state/context.rs +1155 -271
  126. package/dist-engine-src/src/tracked_state/diff.rs +249 -57
  127. package/dist-engine-src/src/tracked_state/materialization.rs +365 -103
  128. package/dist-engine-src/src/tracked_state/materializer.rs +488 -0
  129. package/dist-engine-src/src/tracked_state/merge.rs +37 -19
  130. package/dist-engine-src/src/tracked_state/mod.rs +8 -7
  131. package/dist-engine-src/src/tracked_state/storage.rs +138 -6
  132. package/dist-engine-src/src/tracked_state/tree.rs +695 -252
  133. package/dist-engine-src/src/tracked_state/types.rs +176 -6
  134. package/dist-engine-src/src/transaction/commit.rs +695 -435
  135. package/dist-engine-src/src/transaction/context.rs +551 -310
  136. package/dist-engine-src/src/transaction/live_state_overlay.rs +9 -8
  137. package/dist-engine-src/src/transaction/mod.rs +2 -0
  138. package/dist-engine-src/src/transaction/normalization.rs +311 -447
  139. package/dist-engine-src/src/transaction/prep.rs +37 -0
  140. package/dist-engine-src/src/transaction/schema_resolver.rs +93 -71
  141. package/dist-engine-src/src/transaction/staging.rs +701 -406
  142. package/dist-engine-src/src/transaction/types.rs +231 -122
  143. package/dist-engine-src/src/transaction/validation.rs +2717 -1698
  144. package/dist-engine-src/src/untracked_state/codec.rs +40 -96
  145. package/dist-engine-src/src/untracked_state/context.rs +21 -5
  146. package/dist-engine-src/src/untracked_state/materialization.rs +10 -104
  147. package/dist-engine-src/src/untracked_state/mod.rs +3 -5
  148. package/dist-engine-src/src/untracked_state/storage.rs +105 -57
  149. package/dist-engine-src/src/untracked_state/types.rs +63 -13
  150. package/dist-engine-src/src/version/context.rs +1 -13
  151. package/dist-engine-src/src/version/lifecycle.rs +221 -0
  152. package/dist-engine-src/src/version/mod.rs +3 -2
  153. package/dist-engine-src/src/version/refs.rs +12 -103
  154. package/dist-engine-src/src/version/stage_rows.rs +15 -19
  155. package/package.json +1 -1
  156. package/dist-engine-src/src/changelog/codec.rs +0 -321
  157. package/dist-engine-src/src/changelog/context.rs +0 -92
  158. package/dist-engine-src/src/changelog/materialization.rs +0 -121
  159. package/dist-engine-src/src/changelog/mod.rs +0 -13
  160. package/dist-engine-src/src/changelog/reader.rs +0 -20
  161. package/dist-engine-src/src/changelog/storage.rs +0 -220
  162. package/dist-engine-src/src/changelog/types.rs +0 -38
  163. package/dist-engine-src/src/schema/builtin/lix_change_set.json +0 -18
  164. package/dist-engine-src/src/schema/builtin/lix_change_set_element.json +0 -75
  165. package/dist-engine-src/src/schema/builtin/lix_entity_label.json +0 -63
  166. package/dist-engine-src/src/schema_registry.rs +0 -294
  167. package/dist-engine-src/src/sql2/commit_derived_provider.rs +0 -591
  168. package/dist-engine-src/src/tracked_state/rebuild.rs +0 -771
  169. package/dist-engine-src/src/tracked_state/tree_types.rs +0 -176
@@ -1,176 +0,0 @@
1
- use crate::entity_identity::EntityIdentity;
2
- use crate::json_store::JsonRef;
3
- use crate::tracked_state::TrackedStateRow;
4
- use crate::{LixError, NullableKeyFilter};
5
-
6
- pub(crate) const TRACKED_STATE_HASH_BYTES: usize = 32;
7
-
8
- /// Content-addressed root id for one tracked-state tree tree.
9
- #[derive(Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
10
- pub(crate) struct TrackedStateRootId([u8; TRACKED_STATE_HASH_BYTES]);
11
-
12
- impl TrackedStateRootId {
13
- pub(crate) fn new(bytes: [u8; TRACKED_STATE_HASH_BYTES]) -> Self {
14
- Self(bytes)
15
- }
16
-
17
- pub(crate) fn from_slice(bytes: &[u8]) -> Result<Self, LixError> {
18
- if bytes.len() != TRACKED_STATE_HASH_BYTES {
19
- return Err(LixError::new(
20
- "LIX_ERROR_UNKNOWN",
21
- format!(
22
- "tracked-state tree root id must be {TRACKED_STATE_HASH_BYTES} bytes, got {}",
23
- bytes.len()
24
- ),
25
- ));
26
- }
27
- let mut out = [0_u8; TRACKED_STATE_HASH_BYTES];
28
- out.copy_from_slice(bytes);
29
- Ok(Self(out))
30
- }
31
-
32
- pub(crate) fn as_bytes(&self) -> &[u8; TRACKED_STATE_HASH_BYTES] {
33
- &self.0
34
- }
35
- }
36
-
37
- /// Root-independent tracked entity identity.
38
- ///
39
- /// Version ids intentionally do not appear in the key. Version refs select a
40
- /// commit/root; the tree itself represents the tracked entities visible at that
41
- /// commit.
42
- #[derive(Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
43
- pub(crate) struct TrackedStateKey {
44
- pub(crate) schema_key: String,
45
- pub(crate) file_id: Option<String>,
46
- pub(crate) entity_id: EntityIdentity,
47
- }
48
-
49
- impl TrackedStateKey {
50
- pub(crate) fn from_row(row: &TrackedStateRow) -> Self {
51
- Self {
52
- schema_key: row.schema_key.clone(),
53
- file_id: row.file_id.clone(),
54
- entity_id: row.entity_id.clone(),
55
- }
56
- }
57
- }
58
-
59
- /// Tracked entity payload stored at a commit root.
60
- ///
61
- /// This is deliberately the version-independent part of `TrackedStateRow`.
62
- /// Callers project it back to `TrackedStateRow` by supplying the version id
63
- /// selected by the version ref.
64
- #[derive(Debug, Clone, PartialEq, Eq)]
65
- pub(crate) struct TrackedStateValue {
66
- pub(crate) snapshot_ref: Option<JsonRef>,
67
- pub(crate) metadata_ref: Option<JsonRef>,
68
- pub(crate) schema_version: String,
69
- pub(crate) created_at: String,
70
- pub(crate) updated_at: String,
71
- pub(crate) change_id: String,
72
- pub(crate) commit_id: String,
73
- pub(crate) deleted: bool,
74
- }
75
-
76
- impl TrackedStateValue {
77
- pub(crate) fn from_row_refs(
78
- row: &TrackedStateRow,
79
- snapshot_ref: Option<JsonRef>,
80
- metadata_ref: Option<JsonRef>,
81
- ) -> Self {
82
- Self {
83
- snapshot_ref,
84
- metadata_ref,
85
- schema_version: row.schema_version.clone(),
86
- created_at: row.created_at.clone(),
87
- updated_at: row.updated_at.clone(),
88
- change_id: row.change_id.clone(),
89
- commit_id: row.commit_id.clone(),
90
- deleted: row.snapshot_content.is_none(),
91
- }
92
- }
93
-
94
- pub(crate) fn into_materialized_row(
95
- self,
96
- key: TrackedStateKey,
97
- snapshot_content: Option<String>,
98
- metadata: Option<crate::RowMetadata>,
99
- ) -> TrackedStateRow {
100
- TrackedStateRow {
101
- entity_id: key.entity_id,
102
- schema_key: key.schema_key,
103
- file_id: key.file_id,
104
- snapshot_content,
105
- metadata,
106
- schema_version: self.schema_version,
107
- created_at: self.created_at,
108
- updated_at: self.updated_at,
109
- change_id: self.change_id,
110
- commit_id: self.commit_id,
111
- }
112
- }
113
- }
114
-
115
- #[derive(Debug, Clone, PartialEq, Eq)]
116
- pub(crate) enum TrackedStateMutation {
117
- Put {
118
- key: TrackedStateKey,
119
- value: TrackedStateValue,
120
- },
121
- }
122
-
123
- impl TrackedStateMutation {
124
- pub(crate) fn put(key: TrackedStateKey, value: TrackedStateValue) -> Self {
125
- Self::Put { key, value }
126
- }
127
- }
128
-
129
- #[derive(Debug, Clone, PartialEq, Eq, Default)]
130
- pub(crate) struct TrackedStateTreeScanRequest {
131
- pub(crate) schema_keys: Vec<String>,
132
- pub(crate) entity_ids: Vec<EntityIdentity>,
133
- pub(crate) file_ids: Vec<NullableKeyFilter<String>>,
134
- pub(crate) include_tombstones: bool,
135
- pub(crate) limit: Option<usize>,
136
- }
137
-
138
- impl TrackedStateTreeScanRequest {
139
- pub(crate) fn matches(&self, key: &TrackedStateKey, value: &TrackedStateValue) -> bool {
140
- if !self.include_tombstones && value.deleted {
141
- return false;
142
- }
143
- if !self.schema_keys.is_empty() && !self.schema_keys.contains(&key.schema_key) {
144
- return false;
145
- }
146
- if !self.entity_ids.is_empty() && !self.entity_ids.contains(&key.entity_id) {
147
- return false;
148
- }
149
- if !self.file_ids.is_empty()
150
- && !self.file_ids.iter().any(|filter| match filter {
151
- NullableKeyFilter::Any => true,
152
- NullableKeyFilter::Null => key.file_id.is_none(),
153
- NullableKeyFilter::Value(value) => key.file_id.as_ref() == Some(value),
154
- })
155
- {
156
- return false;
157
- }
158
- true
159
- }
160
- }
161
-
162
- #[derive(Debug, Clone, PartialEq, Eq)]
163
- pub(crate) struct TrackedStateApplyResult {
164
- pub(crate) root_id: TrackedStateRootId,
165
- pub(crate) row_count: usize,
166
- pub(crate) tree_height: usize,
167
- pub(crate) chunk_count: usize,
168
- pub(crate) chunk_bytes: usize,
169
- pub(crate) persisted_root: bool,
170
- }
171
-
172
- #[derive(Debug, Clone, PartialEq, Eq)]
173
- pub(crate) struct TrackedStateTreeDiffEntry {
174
- pub(crate) before: Option<(TrackedStateKey, TrackedStateValue)>,
175
- pub(crate) after: Option<(TrackedStateKey, TrackedStateValue)>,
176
- }