meridian-sdk 1.2.1 → 1.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (77) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/README.md +41 -0
  3. package/dist/agents.d.ts +143 -8
  4. package/dist/agents.d.ts.map +1 -1
  5. package/dist/agents.js +141 -14
  6. package/dist/agents.js.map +1 -1
  7. package/dist/client.d.ts +45 -2
  8. package/dist/client.d.ts.map +1 -1
  9. package/dist/client.js +86 -4
  10. package/dist/client.js.map +1 -1
  11. package/dist/conflict/types.d.ts +54 -0
  12. package/dist/conflict/types.d.ts.map +1 -0
  13. package/dist/conflict/types.js +9 -0
  14. package/dist/conflict/types.js.map +1 -0
  15. package/dist/crdt/rga.d.ts +20 -4
  16. package/dist/crdt/rga.d.ts.map +1 -1
  17. package/dist/crdt/rga.js +42 -6
  18. package/dist/crdt/rga.js.map +1 -1
  19. package/dist/crdt/tree.d.ts +45 -0
  20. package/dist/crdt/tree.d.ts.map +1 -1
  21. package/dist/crdt/tree.js +135 -10
  22. package/dist/crdt/tree.js.map +1 -1
  23. package/dist/index.d.ts +11 -4
  24. package/dist/index.d.ts.map +1 -1
  25. package/dist/index.js +9 -3
  26. package/dist/index.js.map +1 -1
  27. package/dist/schema.d.ts +109 -3
  28. package/dist/schema.d.ts.map +1 -1
  29. package/dist/schema.js +59 -1
  30. package/dist/schema.js.map +1 -1
  31. package/dist/sync/delta.d.ts +24 -0
  32. package/dist/sync/delta.d.ts.map +1 -1
  33. package/dist/sync/delta.js +1 -1
  34. package/dist/sync/delta.js.map +1 -1
  35. package/dist/transport/http.d.ts +2 -1
  36. package/dist/transport/http.d.ts.map +1 -1
  37. package/dist/transport/http.js +4 -1
  38. package/dist/transport/http.js.map +1 -1
  39. package/dist/transport/websocket.d.ts +7 -0
  40. package/dist/transport/websocket.d.ts.map +1 -1
  41. package/dist/transport/websocket.js +14 -0
  42. package/dist/transport/websocket.js.map +1 -1
  43. package/dist/undo/UndoManager.d.ts +74 -0
  44. package/dist/undo/UndoManager.d.ts.map +1 -0
  45. package/dist/undo/UndoManager.js +318 -0
  46. package/dist/undo/UndoManager.js.map +1 -0
  47. package/dist/undo/types.d.ts +63 -0
  48. package/dist/undo/types.d.ts.map +1 -0
  49. package/dist/undo/types.js +9 -0
  50. package/dist/undo/types.js.map +1 -0
  51. package/dist/utils/fractional.d.ts +78 -0
  52. package/dist/utils/fractional.d.ts.map +1 -0
  53. package/dist/utils/fractional.js +159 -0
  54. package/dist/utils/fractional.js.map +1 -0
  55. package/dist/validation/index.d.ts +107 -0
  56. package/dist/validation/index.d.ts.map +1 -0
  57. package/dist/validation/index.js +123 -0
  58. package/dist/validation/index.js.map +1 -0
  59. package/package.json +1 -1
  60. package/src/agents.ts +224 -15
  61. package/src/client.ts +109 -4
  62. package/src/conflict/types.ts +60 -0
  63. package/src/crdt/rga.ts +46 -7
  64. package/src/crdt/tree.ts +164 -0
  65. package/src/index.ts +32 -1
  66. package/src/schema.ts +81 -1
  67. package/src/sync/delta.ts +15 -2
  68. package/src/transport/http.ts +6 -0
  69. package/src/transport/websocket.ts +15 -0
  70. package/src/undo/UndoManager.ts +369 -0
  71. package/src/undo/types.ts +74 -0
  72. package/src/utils/fractional.ts +166 -0
  73. package/src/validation/index.ts +137 -0
  74. package/test/conflict.test.ts +242 -0
  75. package/test/fractional.test.ts +127 -0
  76. package/test/undo.test.ts +272 -0
  77. package/test/validation.test.ts +137 -0
package/dist/crdt/tree.js CHANGED
@@ -1,27 +1,28 @@
1
1
  import { Chunk, Effect, Stream } from "effect";
2
2
  import { encode } from "../codec.js";
3
- /**
4
- * Low-level handle for a TreeCRDT a convergent hierarchical tree.
5
- *
6
- * Obtained via `MeridianClient.tree()`. Supports add, move, update, and delete
7
- * operations on tree nodes. Concurrent moves use Kleppmann et al. (2021)
8
- * move semantics — cycles are prevented, all replicas converge.
9
- *
10
- * Node IDs are returned by `addNode()` as opaque strings of the form
11
- * "wall_ms:logical:node_id" matching the Rust HLC serialization.
12
- */
3
+ import { runValidator } from "../validation/index.js";
4
+ /** Maximum number of conflict events retained in the in-memory log. */
5
+ const CONFLICT_LOG_CAP = 200;
13
6
  export class TreeHandle {
14
7
  roots = [];
15
8
  crdtId;
16
9
  clientId;
17
10
  transport;
11
+ validator;
18
12
  listeners = new Set();
13
+ conflictListeners = new Set();
14
+ conflictHistory = [];
19
15
  opCounter = 0;
16
+ /** Tracks parent, position, updatedAt, and value per node for undo support. */
17
+ nodeMetaMap = new Map();
20
18
  constructor(opts) {
21
19
  this.crdtId = opts.crdtId;
22
20
  this.clientId = opts.clientId;
23
21
  this.transport = opts.transport;
22
+ this.validator = opts.validator;
24
23
  }
24
+ /** The CRDT key this handle is bound to. */
25
+ get id() { return this.crdtId; }
25
26
  /** Returns the current tree value. */
26
27
  value() {
27
28
  return { roots: this.roots };
@@ -52,10 +53,18 @@ export class TreeHandle {
52
53
  * @returns The new node's ID as a string.
53
54
  */
54
55
  addNode(parentId, position, value, ttlMs) {
56
+ runValidator(this.validator, value);
55
57
  const wallMs = Date.now();
56
58
  const logical = this.opCounter++;
57
59
  const id = { wall_ms: wallMs, logical, node_id: this.clientId };
58
60
  const idStr = `${wallMs}:${logical}:${this.clientId}`;
61
+ // Optimistic meta update — allows UndoManager to read state immediately.
62
+ this.nodeMetaMap.set(idStr, {
63
+ parentId,
64
+ position,
65
+ updatedAt: idStr,
66
+ value,
67
+ });
59
68
  const op = encode({
60
69
  Tree: {
61
70
  AddNode: {
@@ -87,6 +96,11 @@ export class TreeHandle {
87
96
  const wallMs = Date.now();
88
97
  const logical = this.opCounter++;
89
98
  const opId = { wall_ms: wallMs, logical, node_id: this.clientId };
99
+ // Optimistic meta update.
100
+ const existing = this.nodeMetaMap.get(nodeId);
101
+ if (existing !== undefined) {
102
+ this.nodeMetaMap.set(nodeId, { ...existing, parentId: newParentId, position: newPosition });
103
+ }
90
104
  const op = encode({
91
105
  Tree: {
92
106
  MoveNode: {
@@ -113,9 +127,16 @@ export class TreeHandle {
113
127
  * @param ttlMs - Optional TTL.
114
128
  */
115
129
  updateNode(nodeId, value, ttlMs) {
130
+ runValidator(this.validator, value);
116
131
  const wallMs = Date.now();
117
132
  const logical = this.opCounter++;
118
133
  const updatedAt = { wall_ms: wallMs, logical, node_id: this.clientId };
134
+ const updatedAtStr = `${wallMs}:${logical}:${this.clientId}`;
135
+ // Optimistic meta update.
136
+ const existing = this.nodeMetaMap.get(nodeId);
137
+ if (existing !== undefined) {
138
+ this.nodeMetaMap.set(nodeId, { ...existing, value, updatedAt: updatedAtStr });
139
+ }
119
140
  const op = encode({
120
141
  Tree: {
121
142
  UpdateNode: {
@@ -156,11 +177,115 @@ export class TreeHandle {
156
177
  },
157
178
  });
158
179
  }
180
+ /**
181
+ * Returns the last-known metadata for a node (parent, position, value, updatedAt).
182
+ * Used by UndoManager to capture pre-op state before mutations.
183
+ */
184
+ getNodeMeta(nodeId) {
185
+ return this.nodeMetaMap.get(nodeId);
186
+ }
187
+ /**
188
+ * Registers a listener called whenever a conflict is detected in an incoming delta.
189
+ * Conflicts include concurrent move resolutions, LWW overwrites, and discarded moves.
190
+ *
191
+ * @returns An unsubscribe function.
192
+ */
193
+ onConflict(listener) {
194
+ this.conflictListeners.add(listener);
195
+ return () => { this.conflictListeners.delete(listener); };
196
+ }
197
+ /**
198
+ * Returns the last up-to-200 conflict events in chronological order.
199
+ * Useful for rendering an audit log or "track changes" UI.
200
+ */
201
+ conflictLog() {
202
+ return this.conflictHistory;
203
+ }
159
204
  /** Apply a delta received from the server. Replaces local state with authoritative tree. */
160
205
  applyDelta(delta) {
206
+ this.detectConflicts(delta.roots, null, delta.discarded_moves ?? []);
161
207
  this.roots = delta.roots;
208
+ this.rebuildMetaMap(delta.roots, null);
162
209
  this.emit();
163
210
  }
211
+ /** Emit a conflict event to all listeners and append to history. */
212
+ emitConflict(event) {
213
+ if (this.conflictHistory.length >= CONFLICT_LOG_CAP) {
214
+ this.conflictHistory.shift();
215
+ }
216
+ this.conflictHistory.push(event);
217
+ for (const listener of this.conflictListeners)
218
+ listener(event);
219
+ }
220
+ /**
221
+ * Walks the incoming delta tree and compares each node's server-authoritative
222
+ * parent/position/value against what the local client last recorded.
223
+ * Also processes discarded_moves from the server to emit move_discarded events.
224
+ * Emits conflict events for discrepancies caused by concurrent op resolution.
225
+ */
226
+ detectConflicts(nodes, serverParentId, discardedMoves) {
227
+ const now = Date.now();
228
+ // Emit move_discarded events for server-rejected cycle moves.
229
+ for (const dm of discardedMoves) {
230
+ const hlcToStr = (hlc) => `${hlc.wall_ms}:${hlc.logical}:${hlc.node_id}`;
231
+ const event = {
232
+ kind: "move_discarded",
233
+ nodeId: hlcToStr(dm.node_id),
234
+ attemptedParentId: dm.attempted_parent_id !== null ? hlcToStr(dm.attempted_parent_id) : null,
235
+ attemptedPosition: dm.attempted_position,
236
+ actualParentId: dm.actual_parent_id !== null ? hlcToStr(dm.actual_parent_id) : null,
237
+ actualPosition: dm.actual_position,
238
+ at: now,
239
+ };
240
+ this.emitConflict(event);
241
+ }
242
+ for (const node of nodes) {
243
+ const local = this.nodeMetaMap.get(node.id);
244
+ if (local !== undefined) {
245
+ // Detect move reordering: server placed the node somewhere different
246
+ // from what the local optimistic update recorded.
247
+ if (local.parentId !== serverParentId || local.position !== node.position) {
248
+ const event = {
249
+ kind: "move_reordered",
250
+ nodeId: node.id,
251
+ localParentId: local.parentId,
252
+ localPosition: local.position,
253
+ serverParentId,
254
+ serverPosition: node.position,
255
+ at: now,
256
+ };
257
+ this.emitConflict(event);
258
+ }
259
+ // Detect LWW overwrite: server has a different value than local recorded.
260
+ if (local.value !== node.value) {
261
+ const event = {
262
+ kind: "lww_overwrite",
263
+ nodeId: node.id,
264
+ discardedValue: local.value,
265
+ winnerValue: node.value,
266
+ at: now,
267
+ };
268
+ this.emitConflict(event);
269
+ }
270
+ }
271
+ // Recurse into children — serverParentId for children is this node's id.
272
+ // discardedMoves are top-level only (already processed above).
273
+ this.detectConflicts(node.children, node.id, []);
274
+ }
275
+ }
276
+ /** Rebuilds nodeMetaMap from a full tree snapshot (called on each server delta). */
277
+ rebuildMetaMap(nodes, parentId) {
278
+ for (const node of nodes) {
279
+ const existing = this.nodeMetaMap.get(node.id);
280
+ this.nodeMetaMap.set(node.id, {
281
+ parentId,
282
+ position: node.position,
283
+ updatedAt: existing?.updatedAt ?? node.id,
284
+ value: node.value,
285
+ });
286
+ this.rebuildMetaMap(node.children, node.id);
287
+ }
288
+ }
164
289
  emit() {
165
290
  const v = { roots: this.roots };
166
291
  for (const listener of this.listeners)
@@ -1 +1 @@
1
- {"version":3,"file":"tree.js","sourceRoot":"","sources":["../../src/crdt/tree.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tree.js","sourceRoot":"","sources":["../../src/crdt/tree.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  export { MeridianClient } from "./client.js";
2
- export type { MeridianClientConfig, ClientSnapshot, DeltaEvent, CRDTSnapshotEntry, GCounterSnapshotEntry, PNCounterSnapshotEntry, ORSetSnapshotEntry, LwwRegisterSnapshotEntry, PresenceSnapshotEntry, CRDTMapSnapshotEntry, RGASnapshotEntry, TreeSnapshotEntry, } from "./client.js";
2
+ export type { MeridianClientConfig, ClientSnapshot, DeltaEvent, LiveQueryHandle, CRDTSnapshotEntry, GCounterSnapshotEntry, PNCounterSnapshotEntry, ORSetSnapshotEntry, LwwRegisterSnapshotEntry, PresenceSnapshotEntry, CRDTMapSnapshotEntry, RGASnapshotEntry, TreeSnapshotEntry, } from "./client.js";
3
3
  export { GCounterHandle } from "./crdt/gcounter.js";
4
4
  export { PNCounterHandle } from "./crdt/pncounter.js";
5
5
  export { ORSetHandle } from "./crdt/orset.js";
@@ -19,10 +19,17 @@ export { WsTransport } from "./transport/websocket.js";
19
19
  export type { WsTransportConfig, WsState } from "./transport/websocket.js";
20
20
  export { parseToken, parseAndValidateToken, checkTokenExpiry, tokenTtlMs } from "./auth/token.js";
21
21
  export { CodecError, TokenParseError, TokenExpiredError, HttpError, NetworkError, TransportError, } from "./errors.js";
22
- export { TokenClaims, Permissions, VectorClock, ClientMsg, ServerMsg, GCounterValue, PNCounterValue, ORSetValue, LwwValue, PresenceValue, CrdtGetResponse, CrdtOpResponse, ErrorResponse, } from "./schema.js";
22
+ export { TokenClaims, Permissions, PermissionsV1, PermissionsV2, PermEntry, VectorClock, ClientMsg, ServerMsg, GCounterValue, PNCounterValue, ORSetValue, LwwValue, PresenceValue, CrdtGetResponse, CrdtOpResponse, ErrorResponse, QuerySpec, QueryResult, LiveQueryResult, } from "./schema.js";
23
23
  export type { TimestampMs, ClientId } from "./schema.js";
24
- export { getMeridianTools, executeMeridianTool, } from "./agents.js";
25
- export type { Tool, ToolUseBlock, MeridianAgentConfig, } from "./agents.js";
24
+ export { UndoManager } from "./undo/UndoManager.js";
25
+ export type { UndoEntry, UndoBatch, RgaInsertEntry, TreeAddEntry, TreeDeleteEntry, TreeMoveEntry, TreeUpdateEntry } from "./undo/types.js";
26
+ export { fi, between, before, after, start, end, spread } from "./utils/fractional.js";
27
+ export { CrdtValidationError, zodValidator, fnValidator } from "./validation/index.js";
28
+ export type { CrdtValidator } from "./validation/index.js";
29
+ export type { ConflictEvent, MoveDiscardedEvent, MoveReorderedEvent, LwwOverwriteEvent } from "./conflict/types.js";
30
+ export type { DiscardedMove } from "./sync/delta.js";
31
+ export { getMeridianTools, toOpenAITools, toGeminiTools, executeMeridianTool, executeOpenAITool, executeGeminiTool, } from "./agents.js";
32
+ export type { Tool, OpenAITool, GeminiFunctionDeclaration, GeminiTool, ToolUseBlock, OpenAIToolCall, GeminiFunctionCall, MeridianAgentConfig, } from "./agents.js";
26
33
  export { MeridianService, MeridianLive } from "./layer.js";
27
34
  export { encode, decode, encodeClientMsg, decodeServerMsg, encodeVectorClock, decodeVectorClock, } from "./codec.js";
28
35
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,YAAY,EACV,oBAAoB,EACpB,cAAc,EACd,UAAU,EACV,iBAAiB,EACjB,qBAAqB,EACrB,sBAAsB,EACtB,kBAAkB,EAClB,wBAAwB,EACxB,qBAAqB,EACrB,oBAAoB,EACpB,gBAAgB,EAChB,iBAAiB,GAClB,MAAM,aAAa,CAAC;AAGrB,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,YAAY,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,YAAY,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,YAAY,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5C,YAAY,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAGhE,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,YAAY,EAAE,gBAAgB,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAC3F,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,YAAY,EAAE,iBAAiB,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AAG3E,OAAO,EAAE,UAAU,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAGlG,OAAO,EACL,UAAU,EACV,eAAe,EACf,iBAAiB,EACjB,SAAS,EACT,YAAY,EACZ,cAAc,GACf,MAAM,aAAa,CAAC;AAGrB,OAAO,EACL,WAAW,EACX,WAAW,EACX,WAAW,EACX,SAAS,EACT,SAAS,EACT,aAAa,EACb,cAAc,EACd,UAAU,EACV,QAAQ,EACR,aAAa,EACb,eAAe,EACf,cAAc,EACd,aAAa,GACd,MAAM,aAAa,CAAC;AACrB,YAAY,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAGzD,OAAO,EACL,gBAAgB,EAChB,mBAAmB,GACpB,MAAM,aAAa,CAAC;AACrB,YAAY,EACV,IAAI,EACJ,YAAY,EACZ,mBAAmB,GACpB,MAAM,aAAa,CAAC;AAGrB,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAG3D,OAAO,EACL,MAAM,EACN,MAAM,EACN,eAAe,EACf,eAAe,EACf,iBAAiB,EACjB,iBAAiB,GAClB,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -18,9 +18,15 @@ export { parseToken, parseAndValidateToken, checkTokenExpiry, tokenTtlMs } from
18
18
  // Errors (all Data.TaggedError — matchable with Effect.catchTag)
19
19
  export { CodecError, TokenParseError, TokenExpiredError, HttpError, NetworkError, TransportError, } from "./errors.js";
20
20
  // Schema (Effect Schema — use for runtime validation / advanced use)
21
- export { TokenClaims, Permissions, VectorClock, ClientMsg, ServerMsg, GCounterValue, PNCounterValue, ORSetValue, LwwValue, PresenceValue, CrdtGetResponse, CrdtOpResponse, ErrorResponse, } from "./schema.js";
22
- // AI Agents — Claude tool use helpers
23
- export { getMeridianTools, executeMeridianTool, } from "./agents.js";
21
+ export { TokenClaims, Permissions, PermissionsV1, PermissionsV2, PermEntry, VectorClock, ClientMsg, ServerMsg, GCounterValue, PNCounterValue, ORSetValue, LwwValue, PresenceValue, CrdtGetResponse, CrdtOpResponse, ErrorResponse, QuerySpec, QueryResult, LiveQueryResult, } from "./schema.js";
22
+ // Undo/redo
23
+ export { UndoManager } from "./undo/UndoManager.js";
24
+ // Fractional indexing — position helpers for TreeCRDT
25
+ export { fi, between, before, after, start, end, spread } from "./utils/fractional.js";
26
+ // Validation — runtime validators for CRDT string values
27
+ export { CrdtValidationError, zodValidator, fnValidator } from "./validation/index.js";
28
+ // AI Agents — provider-agnostic tool use helpers (Anthropic, OpenAI, Gemini)
29
+ export { getMeridianTools, toOpenAITools, toGeminiTools, executeMeridianTool, executeOpenAITool, executeGeminiTool, } from "./agents.js";
24
30
  // Effect Layer — dependency injection
25
31
  export { MeridianService, MeridianLive } from "./layer.js";
26
32
  // Codec (for advanced use / testing)
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,qBAAqB;AAErB,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAgB7C,eAAe;AACf,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEpD,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAElD,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAEtD,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAG5C,YAAY;AACZ,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAEjD,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAGvD,OAAO;AACP,OAAO,EAAE,UAAU,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAElG,iEAAiE;AACjE,OAAO,EACL,UAAU,EACV,eAAe,EACf,iBAAiB,EACjB,SAAS,EACT,YAAY,EACZ,cAAc,GACf,MAAM,aAAa,CAAC;AAErB,qEAAqE;AACrE,OAAO,EACL,WAAW,EACX,WAAW,EACX,WAAW,EACX,SAAS,EACT,SAAS,EACT,aAAa,EACb,cAAc,EACd,UAAU,EACV,QAAQ,EACR,aAAa,EACb,eAAe,EACf,cAAc,EACd,aAAa,GACd,MAAM,aAAa,CAAC;AAGrB,sCAAsC;AACtC,OAAO,EACL,gBAAgB,EAChB,mBAAmB,GACpB,MAAM,aAAa,CAAC;AAOrB,sCAAsC;AACtC,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE3D,qCAAqC;AACrC,OAAO,EACL,MAAM,EACN,MAAM,EACN,eAAe,EACf,eAAe,EACf,iBAAiB,EACjB,iBAAiB,GAClB,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,qBAAqB;AAErB,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAiB7C,eAAe;AACf,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEpD,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAElD,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAEtD,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAG5C,YAAY;AACZ,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAEjD,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAGvD,OAAO;AACP,OAAO,EAAE,UAAU,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAElG,iEAAiE;AACjE,OAAO,EACL,UAAU,EACV,eAAe,EACf,iBAAiB,EACjB,SAAS,EACT,YAAY,EACZ,cAAc,GACf,MAAM,aAAa,CAAC;AAErB,qEAAqE;AACrE,OAAO,EACL,WAAW,EACX,WAAW,EACX,aAAa,EACb,aAAa,EACb,SAAS,EACT,WAAW,EACX,SAAS,EACT,SAAS,EACT,aAAa,EACb,cAAc,EACd,UAAU,EACV,QAAQ,EACR,aAAa,EACb,eAAe,EACf,cAAc,EACd,aAAa,EACb,SAAS,EACT,WAAW,EACX,eAAe,GAChB,MAAM,aAAa,CAAC;AAGrB,YAAY;AACZ,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAGpD,sDAAsD;AACtD,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAEvF,yDAAyD;AACzD,OAAO,EAAE,mBAAmB,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAOvF,6EAA6E;AAC7E,OAAO,EACL,gBAAgB,EAChB,aAAa,EACb,aAAa,EACb,mBAAmB,EACnB,iBAAiB,EACjB,iBAAiB,GAClB,MAAM,aAAa,CAAC;AAYrB,sCAAsC;AACtC,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE3D,qCAAqC;AACrC,OAAO,EACL,MAAM,EACN,MAAM,EACN,eAAe,EACf,eAAe,EACf,iBAAiB,EACjB,iBAAiB,GAClB,MAAM,YAAY,CAAC"}
package/dist/schema.d.ts CHANGED
@@ -11,21 +11,81 @@ export type TimestampMs = number;
11
11
  /** client_id / author — Rust u64, may decode as bigint for large values. Normalise to number. */
12
12
  export declare const ClientId: Schema.Union<[typeof Schema.Number, Schema.transform<typeof Schema.BigIntFromSelf, typeof Schema.Number>]>;
13
13
  export type ClientId = number;
14
- export declare const Permissions: Schema.Struct<{
14
+ /** V1 permissions glob-list style (legacy tokens). */
15
+ export declare const PermissionsV1: Schema.Struct<{
15
16
  read: Schema.Array$<typeof Schema.String>;
16
17
  write: Schema.Array$<typeof Schema.String>;
17
18
  admin: typeof Schema.Boolean;
18
19
  }>;
20
+ export type PermissionsV1 = typeof PermissionsV1.Type;
21
+ /** A single permission rule in a V2 token. */
22
+ export declare const PermEntry: Schema.Struct<{
23
+ p: typeof Schema.String;
24
+ o: Schema.optional<typeof Schema.Number>;
25
+ e: Schema.optional<typeof Schema.Number>;
26
+ }>;
27
+ export type PermEntry = typeof PermEntry.Type;
28
+ /** V2 fine-grained permissions. */
29
+ export declare const PermissionsV2: Schema.Struct<{
30
+ v: Schema.Literal<[2]>;
31
+ r: Schema.Array$<Schema.Struct<{
32
+ p: typeof Schema.String;
33
+ o: Schema.optional<typeof Schema.Number>;
34
+ e: Schema.optional<typeof Schema.Number>;
35
+ }>>;
36
+ w: Schema.Array$<Schema.Struct<{
37
+ p: typeof Schema.String;
38
+ o: Schema.optional<typeof Schema.Number>;
39
+ e: Schema.optional<typeof Schema.Number>;
40
+ }>>;
41
+ admin: typeof Schema.Boolean;
42
+ rl: Schema.optional<typeof Schema.Number>;
43
+ }>;
44
+ export type PermissionsV2 = typeof PermissionsV2.Type;
45
+ /** Token permissions — V1 or V2. */
46
+ export declare const Permissions: Schema.Union<[Schema.Struct<{
47
+ v: Schema.Literal<[2]>;
48
+ r: Schema.Array$<Schema.Struct<{
49
+ p: typeof Schema.String;
50
+ o: Schema.optional<typeof Schema.Number>;
51
+ e: Schema.optional<typeof Schema.Number>;
52
+ }>>;
53
+ w: Schema.Array$<Schema.Struct<{
54
+ p: typeof Schema.String;
55
+ o: Schema.optional<typeof Schema.Number>;
56
+ e: Schema.optional<typeof Schema.Number>;
57
+ }>>;
58
+ admin: typeof Schema.Boolean;
59
+ rl: Schema.optional<typeof Schema.Number>;
60
+ }>, Schema.Struct<{
61
+ read: Schema.Array$<typeof Schema.String>;
62
+ write: Schema.Array$<typeof Schema.String>;
63
+ admin: typeof Schema.Boolean;
64
+ }>]>;
19
65
  export type Permissions = typeof Permissions.Type;
20
66
  export declare const TokenClaims: Schema.Struct<{
21
67
  namespace: typeof Schema.String;
22
68
  client_id: Schema.Union<[typeof Schema.Number, Schema.transform<typeof Schema.BigIntFromSelf, typeof Schema.Number>]>;
23
69
  expires_at: Schema.Union<[typeof Schema.Number, Schema.transform<typeof Schema.BigIntFromSelf, typeof Schema.Number>]>;
24
- permissions: Schema.Struct<{
70
+ permissions: Schema.Union<[Schema.Struct<{
71
+ v: Schema.Literal<[2]>;
72
+ r: Schema.Array$<Schema.Struct<{
73
+ p: typeof Schema.String;
74
+ o: Schema.optional<typeof Schema.Number>;
75
+ e: Schema.optional<typeof Schema.Number>;
76
+ }>>;
77
+ w: Schema.Array$<Schema.Struct<{
78
+ p: typeof Schema.String;
79
+ o: Schema.optional<typeof Schema.Number>;
80
+ e: Schema.optional<typeof Schema.Number>;
81
+ }>>;
82
+ admin: typeof Schema.Boolean;
83
+ rl: Schema.optional<typeof Schema.Number>;
84
+ }>, Schema.Struct<{
25
85
  read: Schema.Array$<typeof Schema.String>;
26
86
  write: Schema.Array$<typeof Schema.String>;
27
87
  admin: typeof Schema.Boolean;
28
- }>;
88
+ }>]>;
29
89
  }>;
30
90
  export type TokenClaims = typeof TokenClaims.Type;
31
91
  /** BTreeMap<client_id, version> — matches server VectorClock.entries */
@@ -52,6 +112,23 @@ export declare const ClientMsg: Schema.Union<[Schema.Struct<{
52
112
  key: typeof Schema.String;
53
113
  data: typeof Schema.Uint8ArrayFromSelf;
54
114
  }>;
115
+ }>, Schema.Struct<{
116
+ SubscribeQuery: Schema.Struct<{
117
+ query_id: typeof Schema.String;
118
+ query: Schema.Struct<{
119
+ from: typeof Schema.String;
120
+ type: Schema.optional<typeof Schema.String>;
121
+ aggregate: typeof Schema.String;
122
+ where: Schema.optional<Schema.Struct<{
123
+ contains: Schema.optional<typeof Schema.Unknown>;
124
+ updated_after: Schema.optional<typeof Schema.Number>;
125
+ }>>;
126
+ }>;
127
+ }>;
128
+ }>, Schema.Struct<{
129
+ UnsubscribeQuery: Schema.Struct<{
130
+ query_id: typeof Schema.String;
131
+ }>;
55
132
  }>]>;
56
133
  export type ClientMsg = typeof ClientMsg.Type;
57
134
  export declare const ServerMsg: Schema.Union<[Schema.Struct<{
@@ -75,6 +152,12 @@ export declare const ServerMsg: Schema.Union<[Schema.Struct<{
75
152
  key: typeof Schema.String;
76
153
  data: typeof Schema.Uint8ArrayFromSelf;
77
154
  }>;
155
+ }>, Schema.Struct<{
156
+ QueryResult: Schema.Struct<{
157
+ query_id: typeof Schema.String;
158
+ value: typeof Schema.Unknown;
159
+ matched: typeof Schema.Number;
160
+ }>;
78
161
  }>]>;
79
162
  export type ServerMsg = typeof ServerMsg.Type;
80
163
  export declare const GCounterValue: Schema.Struct<{
@@ -123,4 +206,27 @@ export declare const ErrorResponse: Schema.Struct<{
123
206
  message: typeof Schema.String;
124
207
  }>;
125
208
  export type ErrorResponse = typeof ErrorResponse.Type;
209
+ export declare const QuerySpec: Schema.Struct<{
210
+ from: typeof Schema.String;
211
+ type: Schema.optional<typeof Schema.String>;
212
+ aggregate: Schema.Literal<["sum", "max", "min", "count", "union", "intersection", "latest", "collect", "merge"]>;
213
+ where: Schema.optional<Schema.Struct<{
214
+ contains: Schema.optional<typeof Schema.Unknown>;
215
+ updatedAfter: Schema.optional<typeof Schema.Number>;
216
+ }>>;
217
+ }>;
218
+ export type QuerySpec = typeof QuerySpec.Type;
219
+ export declare const QueryResult: Schema.Struct<{
220
+ value: typeof Schema.Unknown;
221
+ matched: typeof Schema.Number;
222
+ scanned: typeof Schema.Number;
223
+ execution_ms: typeof Schema.Number;
224
+ }>;
225
+ export type QueryResult = typeof QueryResult.Type;
226
+ /** Result pushed by the server for a live query subscription (WebSocket only). */
227
+ export declare const LiveQueryResult: Schema.Struct<{
228
+ value: typeof Schema.Unknown;
229
+ matched: typeof Schema.Number;
230
+ }>;
231
+ export type LiveQueryResult = typeof LiveQueryResult.Type;
126
232
  //# sourceMappingURL=schema.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../src/schema.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC,uHAAuH;AACvH,eAAO,MAAM,WAAW,4GAGrB,CAAC;AACJ,MAAM,MAAM,WAAW,GAAG,MAAM,CAAC;AAEjC,iGAAiG;AACjG,eAAO,MAAM,QAAQ,4GAGlB,CAAC;AACJ,MAAM,MAAM,QAAQ,GAAG,MAAM,CAAC;AAE9B,eAAO,MAAM,WAAW;;;;EAItB,CAAC;AACH,MAAM,MAAM,WAAW,GAAG,OAAO,WAAW,CAAC,IAAI,CAAC;AAElD,eAAO,MAAM,WAAW;;;;;;;;;EAKtB,CAAC;AACH,MAAM,MAAM,WAAW,GAAG,OAAO,WAAW,CAAC,IAAI,CAAC;AAElD,wEAAwE;AACxE,eAAO,MAAM,WAAW,4DAA8D,CAAC;AACvF,MAAM,MAAM,WAAW,GAAG,OAAO,WAAW,CAAC,IAAI,CAAC;AAElD,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;IAmBrB,CAAC;AACF,MAAM,MAAM,SAAS,GAAG,OAAO,SAAS,CAAC,IAAI,CAAC;AAE9C,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;IAkBrB,CAAC;AACF,MAAM,MAAM,SAAS,GAAG,OAAO,SAAS,CAAC,IAAI,CAAC;AAE9C,eAAO,MAAM,aAAa;;;EAGxB,CAAC;AACH,MAAM,MAAM,aAAa,GAAG,OAAO,aAAa,CAAC,IAAI,CAAC;AAEtD,eAAO,MAAM,cAAc;;EAEzB,CAAC;AACH,MAAM,MAAM,cAAc,GAAG,OAAO,cAAc,CAAC,IAAI,CAAC;AAExD,eAAO,MAAM,UAAU;;EAErB,CAAC;AACH,MAAM,MAAM,UAAU,GAAG,OAAO,UAAU,CAAC,IAAI,CAAC;AAEhD,eAAO,MAAM,QAAQ;;;;EAInB,CAAC;AACH,MAAM,MAAM,QAAQ,GAAG,OAAO,QAAQ,CAAC,IAAI,CAAC;AAE5C,eAAO,MAAM,iBAAiB;;;EAG5B,CAAC;AACH,MAAM,MAAM,iBAAiB,GAAG,OAAO,iBAAiB,CAAC,IAAI,CAAC;AAE9D,eAAO,MAAM,aAAa;;;;;EAExB,CAAC;AACH,MAAM,MAAM,aAAa,GAAG,OAAO,aAAa,CAAC,IAAI,CAAC;AAEtD,qFAAqF;AACrF,eAAO,MAAM,eAAe,uBAAiB,CAAC;AAC9C,MAAM,MAAM,eAAe,GAAG,OAAO,CAAC;AAEtC,0FAA0F;AAC1F,eAAO,MAAM,cAAc,uBAAiB,CAAC;AAC7C,MAAM,MAAM,cAAc,GAAG,OAAO,CAAC;AAErC,eAAO,MAAM,kBAAkB;;EAE7B,CAAC;AACH,MAAM,MAAM,kBAAkB,GAAG,OAAO,kBAAkB,CAAC,IAAI,CAAC;AAEhE,eAAO,MAAM,aAAa;;;EAGxB,CAAC;AACH,MAAM,MAAM,aAAa,GAAG,OAAO,aAAa,CAAC,IAAI,CAAC"}
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../src/schema.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC,uHAAuH;AACvH,eAAO,MAAM,WAAW,4GAGrB,CAAC;AACJ,MAAM,MAAM,WAAW,GAAG,MAAM,CAAC;AAEjC,iGAAiG;AACjG,eAAO,MAAM,QAAQ,4GAGlB,CAAC;AACJ,MAAM,MAAM,QAAQ,GAAG,MAAM,CAAC;AAE9B,wDAAwD;AACxD,eAAO,MAAM,aAAa;;;;EAIxB,CAAC;AACH,MAAM,MAAM,aAAa,GAAG,OAAO,aAAa,CAAC,IAAI,CAAC;AAEtD,8CAA8C;AAC9C,eAAO,MAAM,SAAS;;;;EAIpB,CAAC;AACH,MAAM,MAAM,SAAS,GAAG,OAAO,SAAS,CAAC,IAAI,CAAC;AAE9C,mCAAmC;AACnC,eAAO,MAAM,aAAa;;;;;;;;;;;;;;EAMxB,CAAC;AACH,MAAM,MAAM,aAAa,GAAG,OAAO,aAAa,CAAC,IAAI,CAAC;AAEtD,oCAAoC;AACpC,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;IAA6C,CAAC;AACtE,MAAM,MAAM,WAAW,GAAG,OAAO,WAAW,CAAC,IAAI,CAAC;AAElD,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;EAKtB,CAAC;AACH,MAAM,MAAM,WAAW,GAAG,OAAO,WAAW,CAAC,IAAI,CAAC;AAElD,wEAAwE;AACxE,eAAO,MAAM,WAAW,4DAA8D,CAAC;AACvF,MAAM,MAAM,WAAW,GAAG,OAAO,WAAW,CAAC,IAAI,CAAC;AAElD,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAsCrB,CAAC;AACF,MAAM,MAAM,SAAS,GAAG,OAAO,SAAS,CAAC,IAAI,CAAC;AAE9C,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;IAyBrB,CAAC;AACF,MAAM,MAAM,SAAS,GAAG,OAAO,SAAS,CAAC,IAAI,CAAC;AAE9C,eAAO,MAAM,aAAa;;;EAGxB,CAAC;AACH,MAAM,MAAM,aAAa,GAAG,OAAO,aAAa,CAAC,IAAI,CAAC;AAEtD,eAAO,MAAM,cAAc;;EAEzB,CAAC;AACH,MAAM,MAAM,cAAc,GAAG,OAAO,cAAc,CAAC,IAAI,CAAC;AAExD,eAAO,MAAM,UAAU;;EAErB,CAAC;AACH,MAAM,MAAM,UAAU,GAAG,OAAO,UAAU,CAAC,IAAI,CAAC;AAEhD,eAAO,MAAM,QAAQ;;;;EAInB,CAAC;AACH,MAAM,MAAM,QAAQ,GAAG,OAAO,QAAQ,CAAC,IAAI,CAAC;AAE5C,eAAO,MAAM,iBAAiB;;;EAG5B,CAAC;AACH,MAAM,MAAM,iBAAiB,GAAG,OAAO,iBAAiB,CAAC,IAAI,CAAC;AAE9D,eAAO,MAAM,aAAa;;;;;EAExB,CAAC;AACH,MAAM,MAAM,aAAa,GAAG,OAAO,aAAa,CAAC,IAAI,CAAC;AAEtD,qFAAqF;AACrF,eAAO,MAAM,eAAe,uBAAiB,CAAC;AAC9C,MAAM,MAAM,eAAe,GAAG,OAAO,CAAC;AAEtC,0FAA0F;AAC1F,eAAO,MAAM,cAAc,uBAAiB,CAAC;AAC7C,MAAM,MAAM,cAAc,GAAG,OAAO,CAAC;AAErC,eAAO,MAAM,kBAAkB;;EAE7B,CAAC;AACH,MAAM,MAAM,kBAAkB,GAAG,OAAO,kBAAkB,CAAC,IAAI,CAAC;AAEhE,eAAO,MAAM,aAAa;;;EAGxB,CAAC;AACH,MAAM,MAAM,aAAa,GAAG,OAAO,aAAa,CAAC,IAAI,CAAC;AAEtD,eAAO,MAAM,SAAS;;;;;;;;EAapB,CAAC;AACH,MAAM,MAAM,SAAS,GAAG,OAAO,SAAS,CAAC,IAAI,CAAC;AAE9C,eAAO,MAAM,WAAW;;;;;EAKtB,CAAC;AACH,MAAM,MAAM,WAAW,GAAG,OAAO,WAAW,CAAC,IAAI,CAAC;AAElD,kFAAkF;AAClF,eAAO,MAAM,eAAe;;;EAG1B,CAAC;AACH,MAAM,MAAM,eAAe,GAAG,OAAO,eAAe,CAAC,IAAI,CAAC"}
package/dist/schema.js CHANGED
@@ -9,11 +9,28 @@ import { Schema } from "effect";
9
9
  export const TimestampMs = Schema.Union(Schema.Number, Schema.BigIntFromSelf.pipe(Schema.transform(Schema.Number, { decode: (n) => Number(n), encode: (n) => BigInt(n) })));
10
10
  /** client_id / author — Rust u64, may decode as bigint for large values. Normalise to number. */
11
11
  export const ClientId = Schema.Union(Schema.Number, Schema.BigIntFromSelf.pipe(Schema.transform(Schema.Number, { decode: (n) => Number(n), encode: (n) => BigInt(n) })));
12
- export const Permissions = Schema.Struct({
12
+ /** V1 permissions glob-list style (legacy tokens). */
13
+ export const PermissionsV1 = Schema.Struct({
13
14
  read: Schema.Array(Schema.String),
14
15
  write: Schema.Array(Schema.String),
15
16
  admin: Schema.Boolean,
16
17
  });
18
+ /** A single permission rule in a V2 token. */
19
+ export const PermEntry = Schema.Struct({
20
+ p: Schema.String,
21
+ o: Schema.optional(Schema.Number),
22
+ e: Schema.optional(Schema.Number),
23
+ });
24
+ /** V2 fine-grained permissions. */
25
+ export const PermissionsV2 = Schema.Struct({
26
+ v: Schema.Literal(2),
27
+ r: Schema.Array(PermEntry),
28
+ w: Schema.Array(PermEntry),
29
+ admin: Schema.Boolean,
30
+ rl: Schema.optional(Schema.Number),
31
+ });
32
+ /** Token permissions — V1 or V2. */
33
+ export const Permissions = Schema.Union(PermissionsV2, PermissionsV1);
17
34
  export const TokenClaims = Schema.Struct({
18
35
  namespace: Schema.String,
19
36
  client_id: ClientId,
@@ -36,6 +53,21 @@ export const ClientMsg = Schema.Union(Schema.Struct({ Subscribe: Schema.Struct({
36
53
  key: Schema.String,
37
54
  data: Schema.Uint8ArrayFromSelf,
38
55
  }),
56
+ }), Schema.Struct({
57
+ SubscribeQuery: Schema.Struct({
58
+ query_id: Schema.String,
59
+ query: Schema.Struct({
60
+ from: Schema.String,
61
+ type: Schema.optional(Schema.String),
62
+ aggregate: Schema.String,
63
+ where: Schema.optional(Schema.Struct({
64
+ contains: Schema.optional(Schema.Unknown),
65
+ updated_after: Schema.optional(Schema.Number),
66
+ })),
67
+ }),
68
+ }),
69
+ }), Schema.Struct({
70
+ UnsubscribeQuery: Schema.Struct({ query_id: Schema.String }),
39
71
  }));
40
72
  export const ServerMsg = Schema.Union(Schema.Struct({
41
73
  Delta: Schema.Struct({
@@ -50,6 +82,12 @@ export const ServerMsg = Schema.Union(Schema.Struct({
50
82
  key: Schema.String,
51
83
  data: Schema.Uint8ArrayFromSelf,
52
84
  }),
85
+ }), Schema.Struct({
86
+ QueryResult: Schema.Struct({
87
+ query_id: Schema.String,
88
+ value: Schema.Unknown,
89
+ matched: Schema.Number,
90
+ }),
53
91
  }));
54
92
  export const GCounterValue = Schema.Struct({
55
93
  value: Schema.Number,
@@ -84,4 +122,24 @@ export const ErrorResponse = Schema.Struct({
84
122
  error: Schema.String,
85
123
  message: Schema.String,
86
124
  });
125
+ export const QuerySpec = Schema.Struct({
126
+ from: Schema.String,
127
+ type: Schema.optional(Schema.String),
128
+ aggregate: Schema.Literal("sum", "max", "min", "count", "union", "intersection", "latest", "collect", "merge"),
129
+ where: Schema.optional(Schema.Struct({
130
+ contains: Schema.optional(Schema.Unknown),
131
+ updatedAfter: Schema.optional(Schema.Number),
132
+ })),
133
+ });
134
+ export const QueryResult = Schema.Struct({
135
+ value: Schema.Unknown,
136
+ matched: Schema.Number,
137
+ scanned: Schema.Number,
138
+ execution_ms: Schema.Number,
139
+ });
140
+ /** Result pushed by the server for a live query subscription (WebSocket only). */
141
+ export const LiveQueryResult = Schema.Struct({
142
+ value: Schema.Unknown,
143
+ matched: Schema.Number,
144
+ });
87
145
  //# sourceMappingURL=schema.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"schema.js","sourceRoot":"","sources":["../src/schema.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../src/schema.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC,uHAAuH;AACvH,MAAM,CAAC,MAAM,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAChG,MAAM,CAAC,MAAM,EACb,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CACvD,CAAC,CAAC,CAAC;AAGJ,iGAAiG;AACjG,MAAM,CAAC,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAC7F,MAAM,CAAC,MAAM,EACb,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CACvD,CAAC,CAAC,CAAC;AAGJ,wDAAwD;AACxD,MAAM,CAAC,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC;IACzC,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC;IACjC,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC;IAClC,KAAK,EAAE,MAAM,CAAC,OAAO;CACtB,CAAC,CAAC;AAGH,8CAA8C;AAC9C,MAAM,CAAC,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC;IACrC,CAAC,EAAE,MAAM,CAAC,MAAM;IAChB,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC;IACjC,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC;CAClC,CAAC,CAAC;AAGH,mCAAmC;AACnC,MAAM,CAAC,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC;IACzC,CAAC,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;IACpB,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC;IAC1B,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC;IAC1B,KAAK,EAAE,MAAM,CAAC,OAAO;IACrB,EAAE,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC;CACnC,CAAC,CAAC;AAGH,oCAAoC;AACpC,MAAM,CAAC,MAAM,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC,aAAa,EAAE,aAAa,CAAC,CAAC;AAGtE,MAAM,CAAC,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC;IACvC,SAAS,EAAE,MAAM,CAAC,MAAM;IACxB,SAAS,EAAE,QAAQ;IACnB,UAAU,EAAE,WAAW;IACvB,WAAW,EAAE,WAAW;CACzB,CAAC,CAAC;AAGH,wEAAwE;AACxE,MAAM,CAAC,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;AAGvF,MAAM,CAAC,MAAM,SAAS,GAAG,MAAM,CAAC,KAAK,CACnC,MAAM,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,EACvE,MAAM,CAAC,MAAM,CAAC;IACZ,EAAE,EAAE,MAAM,CAAC,MAAM,CAAC;QAChB,OAAO,EAAE,MAAM,CAAC,MAAM;QACtB,QAAQ,EAAE,MAAM,CAAC,kBAAkB;QACnC,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC;QACtC,UAAU,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC;KAC3C,CAAC;CACH,CAAC,EACF,MAAM,CAAC,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAC,kBAAkB,EAAE,CAAC;CACrF,CAAC,EACF,MAAM,CAAC,MAAM,CAAC;IACZ,eAAe,EAAE,MAAM,CAAC,MAAM,CAAC;QAC7B,GAAG,EAAE,MAAM,CAAC,MAAM;QAClB,IAAI,EAAE,MAAM,CAAC,kBAAkB;KAChC,CAAC;CACH,CAAC,EACF,MAAM,CAAC,MAAM,CAAC;IACZ,cAAc,EAAE,MAAM,CAAC,MAAM,CAAC;QAC5B,QAAQ,EAAE,MAAM,CAAC,MAAM;QACvB,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC;YACnB,IAAI,EAAE,MAAM,CAAC,MAAM;YACnB,IAAI,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC;YACpC,SAAS,EAAE,MAAM,CAAC,MAAM;YACxB,KAAK,EAAE,MAAM,CAAC,QAAQ,CACpB,MAAM,CAAC,MAAM,CAAC;gBACZ,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC;gBACzC,aAAa,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC;aAC9C,CAAC,CACH;SACF,CAAC;KACH,CAAC;CACH,CAAC,EACF,MAAM,CAAC,MAAM,CAAC;IACZ,gBAAgB,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC;CAC7D,CAAC,CACH,CAAC;AAGF,MAAM,CAAC,MAAM,SAAS,GAAG,MAAM,CAAC,KAAK,CACnC,MAAM,CAAC,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC;QACnB,OAAO,EAAE,MAAM,CAAC,MAAM;QACtB,WAAW,EAAE,MAAM,CAAC,kBAAkB;KACvC,CAAC;CACH,CAAC,EACF,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,EACzG,MAAM,CAAC,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC;CACtE,CAAC,EACF,MAAM,CAAC,MAAM,CAAC;IACZ,kBAAkB,EAAE,MAAM,CAAC,MAAM,CAAC;QAChC,SAAS,EAAE,QAAQ;QACnB,GAAG,EAAE,MAAM,CAAC,MAAM;QAClB,IAAI,EAAE,MAAM,CAAC,kBAAkB;KAChC,CAAC;CACH,CAAC,EACF,MAAM,CAAC,MAAM,CAAC;IACZ,WAAW,EAAE,MAAM,CAAC,MAAM,CAAC;QACzB,QAAQ,EAAE,MAAM,CAAC,MAAM;QACvB,KAAK,EAAE,MAAM,CAAC,OAAO;QACrB,OAAO,EAAE,MAAM,CAAC,MAAM;KACvB,CAAC;CACH,CAAC,CACH,CAAC;AAGF,MAAM,CAAC,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC;IACzC,KAAK,EAAE,MAAM,CAAC,MAAM;IACpB,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC;CACpE,CAAC,CAAC;AAGH,MAAM,CAAC,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,CAAC;IAC1C,KAAK,EAAE,MAAM,CAAC,MAAM;CACrB,CAAC,CAAC;AAGH,MAAM,CAAC,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC;IACtC,QAAQ,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC;CACvC,CAAC,CAAC;AAGH,MAAM,CAAC,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC;IACpC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC;IACpC,aAAa,EAAE,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC;IACzC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC;CAChC,CAAC,CAAC;AAGH,MAAM,CAAC,MAAM,iBAAiB,GAAG,MAAM,CAAC,MAAM,CAAC;IAC7C,IAAI,EAAE,MAAM,CAAC,OAAO;IACpB,aAAa,EAAE,WAAW;CAC3B,CAAC,CAAC;AAGH,MAAM,CAAC,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC;IACzC,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,EAAE,iBAAiB,EAAE,CAAC;CACzE,CAAC,CAAC;AAGH,qFAAqF;AACrF,MAAM,CAAC,MAAM,eAAe,GAAG,MAAM,CAAC,OAAO,CAAC;AAG9C,0FAA0F;AAC1F,MAAM,CAAC,MAAM,cAAc,GAAG,MAAM,CAAC,OAAO,CAAC;AAG7C,MAAM,CAAC,MAAM,kBAAkB,GAAG,MAAM,CAAC,MAAM,CAAC;IAC9C,KAAK,EAAE,MAAM,CAAC,MAAM;CACrB,CAAC,CAAC;AAGH,MAAM,CAAC,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC;IACzC,KAAK,EAAE,MAAM,CAAC,MAAM;IACpB,OAAO,EAAE,MAAM,CAAC,MAAM;CACvB,CAAC,CAAC;AAGH,MAAM,CAAC,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC;IACrC,IAAI,EAAE,MAAM,CAAC,MAAM;IACnB,IAAI,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC;IACpC,SAAS,EAAE,MAAM,CAAC,OAAO,CACvB,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAC5B,OAAO,EAAE,cAAc,EACvB,QAAQ,EAAE,SAAS,EACnB,OAAO,CACR;IACD,KAAK,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC;QACnC,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC;QACzC,YAAY,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC;KAC7C,CAAC,CAAC;CACJ,CAAC,CAAC;AAGH,MAAM,CAAC,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC;IACvC,KAAK,EAAE,MAAM,CAAC,OAAO;IACrB,OAAO,EAAE,MAAM,CAAC,MAAM;IACtB,OAAO,EAAE,MAAM,CAAC,MAAM;IACtB,YAAY,EAAE,MAAM,CAAC,MAAM;CAC5B,CAAC,CAAC;AAGH,kFAAkF;AAClF,MAAM,CAAC,MAAM,eAAe,GAAG,MAAM,CAAC,MAAM,CAAC;IAC3C,KAAK,EAAE,MAAM,CAAC,OAAO;IACrB,OAAO,EAAE,MAAM,CAAC,MAAM;CACvB,CAAC,CAAC"}
@@ -45,10 +45,34 @@ export declare const decodeRGADelta: (bytes: Uint8Array) => RGADelta;
45
45
  export interface TreeNodeValue {
46
46
  id: string;
47
47
  value: string;
48
+ /** Fractional index string for sibling ordering (e.g. "a0", "b0"). */
49
+ position: string;
48
50
  children: TreeNodeValue[];
49
51
  }
52
+ /** A MoveNode op that was rejected by the server due to cycle prevention. */
53
+ export interface DiscardedMove {
54
+ node_id: {
55
+ wall_ms: number;
56
+ logical: number;
57
+ node_id: number;
58
+ };
59
+ attempted_parent_id: {
60
+ wall_ms: number;
61
+ logical: number;
62
+ node_id: number;
63
+ } | null;
64
+ attempted_position: string;
65
+ actual_parent_id: {
66
+ wall_ms: number;
67
+ logical: number;
68
+ node_id: number;
69
+ } | null;
70
+ actual_position: string;
71
+ }
50
72
  export interface TreeDelta {
51
73
  roots: TreeNodeValue[];
74
+ /** MoveNode ops discarded due to cycle prevention. Empty in the common case. */
75
+ discarded_moves?: DiscardedMove[];
52
76
  }
53
77
  export declare const decodeTreeDelta: (bytes: Uint8Array) => TreeDelta;
54
78
  export type CrdtValueDelta = {
@@ -1 +1 @@
1
- {"version":3,"file":"delta.d.ts","sourceRoot":"","sources":["../../src/sync/delta.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAClC;AAED,eAAO,MAAM,mBAAmB,GAAI,OAAO,UAAU,KAAG,aAGvD,CAAC;AAEF,MAAM,WAAW,cAAc;IAC7B,GAAG,EAAE,aAAa,GAAG,IAAI,CAAC;IAC1B,GAAG,EAAE,aAAa,GAAG,IAAI,CAAC;CAC3B;AAED,eAAO,MAAM,oBAAoB,GAAI,OAAO,UAAU,KAAG,cASxD,CAAC;AAEF,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC;IACnC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC;CACvC;AAED,eAAO,MAAM,gBAAgB,GAAI,OAAO,UAAU,KAAG,UAUpD,CAAC;AAEF,MAAM,WAAW,QAAQ;IACvB,KAAK,EAAE,OAAO,CAAC;IACf,GAAG,EAAE;QAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAC;IAC7E,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,QAAQ;IACvB,KAAK,EAAE,QAAQ,GAAG,IAAI,CAAC;CACxB;AAED,eAAO,MAAM,cAAc,GAAI,OAAO,UAAU,KAAG,QAGlD,CAAC;AAEF,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,OAAO,CAAC;IACd,GAAG,EAAE;QAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAC;IAC7E,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,kBAAkB,GAAG,IAAI,CAAC,CAAC;CACpD;AAED,eAAO,MAAM,mBAAmB,GAAI,OAAO,UAAU,KAAG,aAGvD,CAAC;AAEF,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,eAAO,MAAM,cAAc,GAAI,OAAO,UAAU,KAAG,QAGlD,CAAC;AAEF,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,aAAa,EAAE,CAAC;CAC3B;AAED,MAAM,WAAW,SAAS;IACxB,KAAK,EAAE,aAAa,EAAE,CAAC;CACxB;AAED,eAAO,MAAM,eAAe,GAAI,OAAO,UAAU,KAAG,SAGnD,CAAC;AAEF,MAAM,MAAM,cAAc,GACtB;IAAE,QAAQ,EAAE,aAAa,CAAA;CAAE,GAC3B;IAAE,SAAS,EAAE,cAAc,CAAA;CAAE,GAC7B;IAAE,KAAK,EAAE,UAAU,CAAA;CAAE,GACrB;IAAE,WAAW,EAAE,QAAQ,CAAA;CAAE,GACzB;IAAE,QAAQ,EAAE,aAAa,CAAA;CAAE,GAC3B;IAAE,GAAG,EAAE,QAAQ,CAAA;CAAE,GACjB;IAAE,IAAI,EAAE,SAAS,CAAA;CAAE,CAAC;AAExB,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;CACxC;AAED,eAAO,MAAM,kBAAkB,GAAI,OAAO,UAAU,KAAG,YAGtD,CAAC"}
1
+ {"version":3,"file":"delta.d.ts","sourceRoot":"","sources":["../../src/sync/delta.ts"],"names":[],"mappings":"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"}
@@ -30,7 +30,7 @@ export const decodeRGADelta = (bytes) => {
30
30
  };
31
31
  export const decodeTreeDelta = (bytes) => {
32
32
  const raw = decode(bytes);
33
- return { roots: raw.roots ?? [] };
33
+ return { roots: raw.roots ?? [], discarded_moves: raw.discarded_moves ?? [] };
34
34
  };
35
35
  export const decodeCRDTMapDelta = (bytes) => {
36
36
  const raw = decode(bytes);