@lunora/shard-engine 1.0.0-alpha.9 → 1.0.0-alpha.90

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 (158) hide show
  1. package/README.md +1 -1
  2. package/dist/conformance/index.mjs +1 -1
  3. package/dist/index.d.mts +642 -123
  4. package/dist/index.d.ts +642 -123
  5. package/dist/index.mjs +1 -1
  6. package/dist/packem_shared/ADMIN_FUNCTIONS-dPyoRPmJ.mjs +1 -0
  7. package/dist/packem_shared/AGGREGATE_SQL_FUNCTION-DDEoMnJR.mjs +1 -0
  8. package/dist/packem_shared/AGG_COUNT-HNcZ6gXQ.mjs +1 -0
  9. package/dist/packem_shared/AUDIT_LOG_TABLE-CMhmmmgR.mjs +8 -0
  10. package/dist/packem_shared/BIGINT_KEY_DIGITS-C9a7Ix7k.mjs +1 -0
  11. package/dist/packem_shared/CDC_LOG_TABLE-kGina9SW.mjs +18 -0
  12. package/dist/packem_shared/CLIENT_WATERMARK_TABLE-DPY-NtOH.mjs +7 -0
  13. package/dist/packem_shared/COMMIT_SEQ_FIELD-6lGDFLgk.mjs +4 -0
  14. package/dist/packem_shared/CURSOR_PREFIX-Bn8SFoGd.mjs +1 -0
  15. package/dist/packem_shared/CountRlsUnsupportedError-BvsDqfO2.mjs +1 -0
  16. package/dist/packem_shared/DATA_MIGRATION_STATE_TABLE-mUH4b2lA.mjs +31 -0
  17. package/dist/packem_shared/DEFAULT_MAX_RELATION_KEYS-B1zeutIo.mjs +1 -0
  18. package/dist/packem_shared/DEFAULT_MAX_RELAYS-CSb6oGUZ.mjs +8 -0
  19. package/dist/packem_shared/DEFAULT_PROMOTION_THRESHOLDS-Bfx7KakS.mjs +1 -0
  20. package/dist/packem_shared/DEFAULT_TRANSACTION_LIMITS-DiR5z5EX.mjs +1 -0
  21. package/dist/packem_shared/DurableStreamRunner-k4x__lMt.mjs +1 -0
  22. package/dist/packem_shared/GEO_DEFAULT_PRECISION-CqpQZ-J_.mjs +1 -0
  23. package/dist/packem_shared/GLOBAL_SHAPE_SNAPSHOT_TABLE-BpFE-qYL.mjs +7 -0
  24. package/dist/packem_shared/GlobalPollTick-BNK4o-XT.mjs +1 -0
  25. package/dist/packem_shared/IDEMPOTENCY_TABLE-CUc9L-o_.mjs +7 -0
  26. package/dist/packem_shared/MAIL_RETENTION-kYNWpCbY.mjs +18 -0
  27. package/dist/packem_shared/MAX_SQL_ROWS-Dh_Ty0Zo.mjs +4 -0
  28. package/dist/packem_shared/MAX_TOKEN_LENGTH-BakL9FUy-B3VwYY8C.mjs +1 -0
  29. package/dist/packem_shared/NotUniqueError-CRj5uEio.mjs +1 -0
  30. package/dist/packem_shared/QUEUE_TABLE-D-5_s2hl.mjs +17 -0
  31. package/dist/packem_shared/RANK_TIEBREAK-B0_x8iev.mjs +1 -0
  32. package/dist/packem_shared/REACTOR_STATE_TABLE-XAIYdVL0.mjs +28 -0
  33. package/dist/packem_shared/RELATED_DEFAULT_LIMIT-B9PH28Pn.mjs +1 -0
  34. package/dist/packem_shared/RELATION_EXISTS_KEY-CFUhnZSZ.mjs +1 -0
  35. package/dist/packem_shared/REPROJECTION_MIGRATION_PREFIX-Czcb6_mO.mjs +1 -0
  36. package/dist/packem_shared/RLS_UNWRAP_SYMBOL-BwwTbz3Q.mjs +1 -0
  37. package/dist/packem_shared/ReactiveCache-D8ccaO6f.mjs +1 -0
  38. package/dist/packem_shared/SCAN_DEP-D7qE3iUe.mjs +1 -0
  39. package/dist/packem_shared/SCHEDULE_OUTBOX_TABLE-wAAIitt2.mjs +11 -0
  40. package/dist/packem_shared/SCHEMA_HISTORY_MAX_VERSIONS-CYVBglZe.mjs +6 -0
  41. package/dist/packem_shared/SEARCH_STATE_TABLE-BlVsBsix.mjs +1 -0
  42. package/dist/packem_shared/SHAPE_POKE_CURSOR_TABLE-BVskv7ei.mjs +8 -0
  43. package/dist/packem_shared/ShapeDiffCache-gdaILV5E.mjs +1 -0
  44. package/dist/packem_shared/ShardRunner-CrveaPId.mjs +1 -0
  45. package/dist/packem_shared/UNVOUCHABLE_DEP-C68htACn.mjs +1 -0
  46. package/dist/packem_shared/VECTOR_BACKFILL_MAX_PAGES-Dy3_CF69.mjs +1 -0
  47. package/dist/packem_shared/WORKERD_SQLITE_LIMITS-DlozcSQu.mjs +1 -0
  48. package/dist/packem_shared/aggregateTableName-C7o-gpms.mjs +1 -0
  49. package/dist/packem_shared/appendStreamChunk-BRwBOTEN.mjs +19 -0
  50. package/dist/packem_shared/applyOnDelete-7JZ4vR9r.mjs +1 -0
  51. package/dist/packem_shared/archiveCdcSegment-CMAVUCck.mjs +4 -0
  52. package/dist/packem_shared/{armRestore-BNzdvQ_o.mjs → armRestore-Bu1_8SUa.mjs} +1 -1
  53. package/dist/packem_shared/awaitWsDrain-apizgmKY.mjs +1 -0
  54. package/dist/packem_shared/backfillAggregateIndexes-BCSZxzPj.mjs +1 -0
  55. package/dist/packem_shared/base64-DfpzS4o_.mjs +1 -0
  56. package/dist/packem_shared/buildIndexRange-6nIZDf4m.mjs +1 -0
  57. package/dist/packem_shared/buildPokeFrames-BBE6J91z.mjs +1 -0
  58. package/dist/packem_shared/buildReprojectionMigration-Cvq70FvX.mjs +1 -0
  59. package/dist/packem_shared/buildSettings-DC3VeQ0H.mjs +1 -0
  60. package/dist/packem_shared/buildShapeDiff-BZN27cem.mjs +1 -0
  61. package/dist/packem_shared/clearMemoryTables-BCDG0X9P.mjs +1 -0
  62. package/dist/packem_shared/compileWhereSql-Bi04r4ut.mjs +1 -0
  63. package/dist/packem_shared/computeRankPage-BEyDlhws.mjs +1 -0
  64. package/dist/packem_shared/createCompanionSync-CeSm2u-U.mjs +1 -0
  65. package/dist/packem_shared/createReplicaLink-D48HC2Ev.mjs +7 -0
  66. package/dist/packem_shared/createSystemReader-DcDLFfC-.mjs +1 -0
  67. package/dist/packem_shared/ctx-db-relay-shapes-DBRHlvNu.mjs +17 -0
  68. package/dist/packem_shared/ctx-db-search-state-z0OqNIGe.mjs +1 -0
  69. package/dist/packem_shared/defineEngineContractSuite-C-LduuFT.mjs +1 -0
  70. package/dist/packem_shared/diffExternalSource-DgDJhslq.mjs +1 -0
  71. package/dist/packem_shared/do-sql-BgeJDhxn.mjs +1 -0
  72. package/dist/packem_shared/effective-kind-BmG_zCAy.mjs +1 -0
  73. package/dist/packem_shared/envOptionalPositiveInt-D2pY-c64.mjs +1 -0
  74. package/dist/packem_shared/estimate-bytes-CTuiPWMD.mjs +1 -0
  75. package/dist/packem_shared/exportShardRows-BFpaZI99.mjs +1 -0
  76. package/dist/packem_shared/fts-companion-DcGBHZiM.mjs +1 -0
  77. package/dist/packem_shared/ftsCompanionDdl-BaLv81YG.mjs +1 -0
  78. package/dist/packem_shared/hasTrigger-CjlwI4le.mjs +1 -0
  79. package/dist/packem_shared/isPushableWhere-BeYAOjUb.mjs +1 -0
  80. package/dist/packem_shared/isSoftDeleted-z1u8hGqI.mjs +9 -0
  81. package/dist/packem_shared/liftSourceId-CA3ENhXj.mjs +1 -0
  82. package/dist/packem_shared/materializeExternalRows-D887_FTq.mjs +1 -0
  83. package/dist/packem_shared/mergeChangedKeys-DH9RAARR.mjs +1 -0
  84. package/dist/packem_shared/quoteIdentifier-CObIFRhb.mjs +1 -0
  85. package/dist/packem_shared/relation-operators-BEg-CvCH.mjs +1 -0
  86. package/dist/packem_shared/runDrizzle-BlpM0R9P.mjs +1 -0
  87. package/dist/packem_shared/runShardMigrations-B2euqCut.mjs +5 -0
  88. package/dist/packem_shared/runSocketPool-CZJ2X9cF.mjs +1 -0
  89. package/dist/packem_shared/selectExpiredIds-DZhnNuXX.mjs +1 -0
  90. package/dist/packem_shared/selectShapeMembers-scSb4F0Y.mjs +1 -0
  91. package/dist/packem_shared/serializeSqlValue-BbZ5hKM7.mjs +1 -0
  92. package/dist/packem_shared/sibling-channel-BkL5cTCc.mjs +1 -0
  93. package/dist/packem_shared/stableStringify-DibjylKD.mjs +1 -0
  94. package/dist/packem_shared/stableWireKey-D2US4k_J.mjs +1 -0
  95. package/dist/packem_shared/where-sql-BV8Kg4_B.mjs +1 -0
  96. package/dist/packem_shared/wire-codec-C-FpWm52.mjs +1 -0
  97. package/package.json +3 -3
  98. package/dist/packem_shared/ADMIN_FUNCTIONS-vj2G8OR6.mjs +0 -1
  99. package/dist/packem_shared/AGGREGATE_SQL_FUNCTION-QYaiuty4.mjs +0 -1
  100. package/dist/packem_shared/AGG_COUNT-Bzd34FRk.mjs +0 -1
  101. package/dist/packem_shared/AUDIT_LOG_TABLE-CaA0jL0L.mjs +0 -8
  102. package/dist/packem_shared/CDC_LOG_TABLE-BYLRV7-q.mjs +0 -8
  103. package/dist/packem_shared/CLIENT_WATERMARK_TABLE-CXsSLU8D.mjs +0 -7
  104. package/dist/packem_shared/CountRlsUnsupportedError-B2WKJD9v.mjs +0 -1
  105. package/dist/packem_shared/DATA_MIGRATION_STATE_TABLE-BZMVrLcy.mjs +0 -31
  106. package/dist/packem_shared/DEFAULT_MAX_RELATION_KEYS-bq00btqV.mjs +0 -1
  107. package/dist/packem_shared/DEFAULT_MAX_RELAYS-Bql_LKaq.mjs +0 -1
  108. package/dist/packem_shared/DEFAULT_PROMOTION_THRESHOLDS-AgPry7WL.mjs +0 -1
  109. package/dist/packem_shared/DEFAULT_TRANSACTION_LIMITS-BH5q0Ror.mjs +0 -1
  110. package/dist/packem_shared/FTS_COUNT_COLUMN-D1gY3wwZ-CZHdaRrd.mjs +0 -1
  111. package/dist/packem_shared/GEO_DEFAULT_PRECISION-okRCkZ6r.mjs +0 -1
  112. package/dist/packem_shared/GLOBAL_SHAPE_SNAPSHOT_TABLE-DX-6-gBP.mjs +0 -7
  113. package/dist/packem_shared/IDEMPOTENCY_TABLE-DjkEMp6w.mjs +0 -7
  114. package/dist/packem_shared/MAIL_RETENTION-KmozO2NQ.mjs +0 -18
  115. package/dist/packem_shared/MAX_SQL_ROWS-nMwkxv5f.mjs +0 -2
  116. package/dist/packem_shared/NotUniqueError-DCzs_EKE.mjs +0 -1
  117. package/dist/packem_shared/QUEUE_TABLE-DYCDvzTG.mjs +0 -17
  118. package/dist/packem_shared/RANK_TIEBREAK-9NU5s_mi.mjs +0 -1
  119. package/dist/packem_shared/RELATION_EXISTS_KEY-BaqSIFU1.mjs +0 -1
  120. package/dist/packem_shared/RLS_UNWRAP_SYMBOL-CBYPlYBb.mjs +0 -1
  121. package/dist/packem_shared/ReactiveCache-D7tpXME6.mjs +0 -1
  122. package/dist/packem_shared/SCAN_DEP-D_yR9EeV.mjs +0 -1
  123. package/dist/packem_shared/SCHEMA_HISTORY_MAX_VERSIONS-CHXz6p_z.mjs +0 -6
  124. package/dist/packem_shared/SEARCH_STATE_TABLE-eLN8U5tz.mjs +0 -1
  125. package/dist/packem_shared/ShardRunner-DIqVdWtk.mjs +0 -1
  126. package/dist/packem_shared/aggregateTableName-G-eXyjcz.mjs +0 -1
  127. package/dist/packem_shared/applyOnDelete-uFRC5p1d.mjs +0 -1
  128. package/dist/packem_shared/applySelect-B0CF8T7y.mjs +0 -1
  129. package/dist/packem_shared/awaitWsDrain-BO5x5HYv.mjs +0 -1
  130. package/dist/packem_shared/backfillAggregateIndexes-DSA1Pf3L.mjs +0 -1
  131. package/dist/packem_shared/buildIndexRange-DFsdtPjD.mjs +0 -1
  132. package/dist/packem_shared/buildPokeFrames-FXWhJFyr.mjs +0 -1
  133. package/dist/packem_shared/buildSettings-DT18_DkX.mjs +0 -1
  134. package/dist/packem_shared/compileWhereSql-BLcfs4QW.mjs +0 -1
  135. package/dist/packem_shared/computeRankPage-IUSS-zIB.mjs +0 -1
  136. package/dist/packem_shared/createCompanionSync-BU85IZPJ.mjs +0 -1
  137. package/dist/packem_shared/createReadFootprint-DIrrxRTE.mjs +0 -1
  138. package/dist/packem_shared/createSystemReader-DcDcrtM3.mjs +0 -1
  139. package/dist/packem_shared/defineEngineContractSuite-DA9Xajwm.mjs +0 -1
  140. package/dist/packem_shared/diffExternalSource-DMpkJta1.mjs +0 -1
  141. package/dist/packem_shared/estimate-bytes-DwQON1Ky.mjs +0 -1
  142. package/dist/packem_shared/exportShardRows-kt42wijd.mjs +0 -1
  143. package/dist/packem_shared/hasTrigger-CbkOHExZ.mjs +0 -1
  144. package/dist/packem_shared/isSoftDeleted-CbykrrSZ.mjs +0 -9
  145. package/dist/packem_shared/liftSourceId-DApAbu7Q.mjs +0 -1
  146. package/dist/packem_shared/materializeExternalRows-DgG38W3I.mjs +0 -1
  147. package/dist/packem_shared/mergeChangedKeys-BXtUgIPW.mjs +0 -1
  148. package/dist/packem_shared/param-B5lF5Jd9.mjs +0 -1
  149. package/dist/packem_shared/quote-identifier-CGiYFBvY.mjs +0 -1
  150. package/dist/packem_shared/runDrizzle-GKR3y97k.mjs +0 -1
  151. package/dist/packem_shared/runShardMigrations-CJ9Fkslb.mjs +0 -5
  152. package/dist/packem_shared/runSocketPool-DPQLVyWF.mjs +0 -1
  153. package/dist/packem_shared/selectExpiredIds-CFLRQUFO.mjs +0 -1
  154. package/dist/packem_shared/selectShapeMemberIds-DK74eAPs.mjs +0 -1
  155. package/dist/packem_shared/serializeSqlValue-DnpyaLcw.mjs +0 -1
  156. package/dist/packem_shared/stableStringify-BjLh4gvA.mjs +0 -1
  157. package/dist/packem_shared/stableWireKey-C2NzK-K_.mjs +0 -1
  158. package/dist/packem_shared/wire-codec-ivyqGF-j.mjs +0 -1
package/dist/index.d.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  import { LunoraError } from '@lunora/errors';
2
+ import { R2BucketLike, ShardHost, SocketHost, SocketHandle } from '@lunora/platform';
2
3
  import { SQL, Name } from 'drizzle-orm';
3
- import { ShardHost, SocketHost, SocketHandle } from '@lunora/platform';
4
4
  interface KeyRange {
5
5
  hi: string;
6
6
  index: string;
@@ -27,10 +27,12 @@ interface ScheduledFunctionDoc {
27
27
  args: Record<string, unknown>;
28
28
  attempts?: number;
29
29
  enqueuedAt: number;
30
- functionPath: string;
30
+ functionPath?: string;
31
31
  id: string;
32
+ pool?: string;
32
33
  scheduledFor: number;
33
34
  shardKey?: string;
35
+ workflow?: string;
34
36
  }
35
37
  interface StorageMetadata {
36
38
  contentType?: string;
@@ -86,6 +88,75 @@ interface WhereInput {
86
88
  OR?: WhereInput[];
87
89
  }
88
90
  declare const RELATION_EXISTS_KEY = "__relationExists";
91
+ interface SubscriptionQuery {
92
+ args?: Record<string, unknown>;
93
+ functionPath?: string;
94
+ sinceEpoch?: string;
95
+ sinceSeq?: number;
96
+ table?: string;
97
+ }
98
+ interface ShapeSubscriptionQuery {
99
+ args?: Record<string, unknown>;
100
+ name: string;
101
+ sinceEpoch?: string;
102
+ sinceSeq?: number;
103
+ }
104
+ interface SubscriptionEnvelope {
105
+ caps?: string[];
106
+ clientId?: string;
107
+ context?: Record<string, unknown>;
108
+ data?: unknown;
109
+ generation?: number;
110
+ id: string;
111
+ query?: SubscriptionQuery;
112
+ shape?: {
113
+ args?: Record<string, unknown>;
114
+ name: string;
115
+ };
116
+ sinceCheckpoint?: number;
117
+ sinceChunk?: number;
118
+ sinceEpoch?: string;
119
+ topic?: string;
120
+ type: "ack" | "connect" | "shape_subscribe" | "shape_unsubscribe" | "stream" | "subscribe" | "unsubscribe" | "whisper" | "whisper_subscribe" | "whisper_unsubscribe";
121
+ }
122
+ interface RpcRequest {
123
+ args?: Record<string, unknown>;
124
+ functionPath: string;
125
+ }
126
+ interface SocketAttachment {
127
+ admin?: boolean;
128
+ adminBinding?: string;
129
+ clientId?: string;
130
+ connected?: boolean;
131
+ connectionId?: string;
132
+ context?: Record<string, unknown>;
133
+ expiresAt?: number;
134
+ identity?: Record<string, unknown>;
135
+ ip?: string;
136
+ pageDeltas?: boolean;
137
+ shapes?: Record<string, ShapeSubscriptionQuery>;
138
+ subs: Record<string, SubscriptionQuery>;
139
+ userId?: string;
140
+ whispers?: string[];
141
+ }
142
+ interface ResolvedShape {
143
+ columns?: ReadonlyArray<string>;
144
+ effectiveWhere?: WhereInput;
145
+ global?: boolean;
146
+ table: string;
147
+ }
148
+ interface SubscriptionIdentity {
149
+ identity?: Record<string, unknown>;
150
+ ip?: string;
151
+ userId?: string;
152
+ }
153
+ interface ShardSocketLike {
154
+ readonly bufferedAmount?: number;
155
+ close?: (code?: number, reason?: string) => void;
156
+ deserializeAttachment?: () => unknown;
157
+ send: (data: string) => void;
158
+ serializeAttachment?: (value: unknown) => void;
159
+ }
89
160
  type AggregateOp = "avg" | "count" | "max" | "min" | "sum";
90
161
  interface AggregateIndexDefinitionLike {
91
162
  readonly by?: ReadonlyArray<string>;
@@ -137,6 +208,10 @@ interface ColumnMetaLike {
137
208
  interface ValidatorLike {
138
209
  readonly _meta?: {
139
210
  readonly column?: ColumnMetaLike;
211
+ readonly inner?: ValidatorLike;
212
+ readonly members?: ReadonlyArray<ValidatorLike>;
213
+ readonly tableName?: string;
214
+ readonly value?: unknown;
140
215
  };
141
216
  readonly kind?: string;
142
217
  readonly parse?: (value: unknown) => unknown;
@@ -180,9 +255,12 @@ interface SchemaLike {
180
255
  }
181
256
  interface TableDefinitionLike {
182
257
  readonly aggregateIndexes?: ReadonlyArray<AggregateIndexDefinitionLike>;
258
+ readonly commitOrderedMode?: boolean;
259
+ readonly dropStalePatchesMode?: boolean;
183
260
  readonly geoIndexes?: ReadonlyArray<GeoIndexDefinitionLike>;
184
261
  readonly indexes: ReadonlyArray<IndexDefinitionLike>;
185
262
  readonly isPublic?: boolean;
263
+ readonly memoryMode?: boolean;
186
264
  readonly rankIndexes?: ReadonlyArray<RankIndexDefinitionLike>;
187
265
  readonly relationMap?: Record<string, RelationDefinitionLike>;
188
266
  readonly searchIndexes?: ReadonlyArray<SearchIndexDefinitionLike>;
@@ -225,11 +303,16 @@ interface ApplyOnDeleteOptions$1 {
225
303
  row: Record<string, unknown>;
226
304
  tableName: string;
227
305
  }
306
+ interface FanOutBudget {
307
+ remaining: number;
308
+ }
228
309
  interface ResolveWithOptions {
310
+ fanOutBudget?: FanOutBudget;
229
311
  fetcher: (tableName: string, args: QueryArgs) => Promise<QueryPage>;
230
312
  groupedCounter: (tableName: string, whereField: string, values: unknown[], policyWhere?: WhereInput) => Promise<Map<unknown, number>>;
231
313
  parents: Record<string, unknown>[];
232
314
  relationBaseWhere?: (table: string) => undefined | WhereInput;
315
+ relationMask?: RelationMask;
233
316
  schema: {
234
317
  readonly tables: Record<string, TableDefinitionLike>;
235
318
  };
@@ -248,22 +331,69 @@ interface QueryArgs {
248
331
  cursor?: null | string;
249
332
  includeDeleted?: boolean;
250
333
  limit?: number;
334
+ omitContinueCursor?: boolean;
251
335
  orderBy?: OrderByInput[];
252
336
  relationBaseWhere?: (table: string) => undefined | WhereInput;
337
+ relationMask?: RelationMask;
253
338
  restrictsCounts?: boolean;
254
339
  select?: ReadonlyArray<string>;
255
340
  where?: WhereInput;
256
341
  with?: WithInput;
257
342
  }
343
+ interface CrossShardReadArgs {
344
+ orderBy?: OrderByInput[];
345
+ relationPolicies?: Record<string, WhereInput>;
346
+ where?: WhereInput;
347
+ with?: WithInput;
348
+ }
349
+ type RelationMask = (table: string, rows: Record<string, unknown>[]) => Record<string, unknown>[];
258
350
  interface QueryPage {
259
351
  continueCursor: null | string;
260
352
  isDone: boolean;
261
353
  page: Record<string, unknown>[];
262
354
  splitCursor?: null | string;
263
355
  }
356
+ interface RelationEdge {
357
+ readonly array: boolean;
358
+ readonly column: string;
359
+ readonly name: string;
360
+ readonly sourceTable: string;
361
+ readonly targetTable: string;
362
+ }
363
+ interface RelatedStartReference {
364
+ id: string;
365
+ table: string;
366
+ }
367
+ type RelatedStart = (Record<string, unknown> & {
368
+ _id: string;
369
+ }) | RelatedStartReference;
370
+ type RelatedDirection = "both" | "in" | "out";
371
+ interface RelatedOptions {
372
+ cursor?: null | string;
373
+ depth?: number;
374
+ direction?: RelatedDirection;
375
+ edges?: ReadonlyArray<string>;
376
+ limit?: number;
377
+ relationBaseWhere?: (table: string) => undefined | WhereInput;
378
+ relationMask?: RelationMask;
379
+ }
380
+ interface RelatedNode {
381
+ depth: number;
382
+ document: Record<string, unknown>;
383
+ path: ReadonlyArray<string>;
384
+ pathIds: ReadonlyArray<string>;
385
+ score: number;
386
+ table: string;
387
+ }
388
+ interface RelatedPage {
389
+ continueCursor: null | string;
390
+ isDone: boolean;
391
+ nodes: RelatedNode[];
392
+ }
264
393
  interface OrderKey {
265
394
  direction: SortDirection;
266
395
  field: string;
396
+ nullable: boolean;
267
397
  }
268
398
  interface RestrictableQueryOptions {
269
399
  baseWhere?: WhereInput;
@@ -399,10 +529,8 @@ interface LifecycleEvent {
399
529
  shardKey: string;
400
530
  userId: string | null;
401
531
  }
402
- interface LifecycleDispatchInfo {
532
+ interface LifecycleDispatchInfo extends SubscriptionIdentity {
403
533
  event: LifecycleEvent;
404
- identity: Record<string, unknown> | undefined;
405
- userId: string | undefined;
406
534
  }
407
535
  interface MutationDelta {
408
536
  indexKeys?: ReadonlyArray<IndexKeyEntry>;
@@ -414,6 +542,13 @@ interface MutationDelta {
414
542
  interface DatabaseWriterLike {
415
543
  aggregate: (tableName: string, options: AggregateOptions) => Promise<AggregateResult>;
416
544
  asId?: (tableName: string, id: string) => string;
545
+ cdcChangedTables?: (sinceSeq: number, options?: {
546
+ cursorOnly?: boolean;
547
+ }) => Promise<{
548
+ cursor: number;
549
+ floor?: number;
550
+ tables: string[];
551
+ } | undefined>;
417
552
  count: (tableName: string, where?: RestrictableQueryOptions | WhereInput) => Promise<number>;
418
553
  delete: (id: string, expectedTable?: string, options?: {
419
554
  hard?: boolean;
@@ -478,6 +613,8 @@ interface DatabaseWriterLike {
478
613
  rankBefore?: (tableName: string, indexName: string, options: RankBeforeOptions) => Promise<RankBeforeResult>;
479
614
  rankPage: (tableName: string, indexName: string, options?: RankPageOptions) => Promise<RankPage>;
480
615
  rankPageRows?: (tableName: string, indexName: string, options?: RankPageOptions) => Promise<ShardRankPageResult>;
616
+ related?: (start: RelatedStart, options?: RelatedOptions) => Promise<RelatedPage>;
617
+ relationEdges?: ReadonlyArray<RelationEdge>;
481
618
  replace: (id: string, document: Record<string, unknown>, expectedTable?: string, options?: {
482
619
  allowExplicitId?: boolean;
483
620
  }) => Promise<void>;
@@ -516,7 +653,6 @@ interface ImportShardResult {
516
653
  inserted: Record<string, number>;
517
654
  }
518
655
  declare const selectExportTables: (schema: SchemaLike, requested?: ReadonlyArray<string>) => string[];
519
- declare const exportShardTable: (writer: DatabaseWriterLike, table: string, batchSize?: number) => AsyncGenerator<ExportRow, void, undefined>;
520
656
  declare const exportShardRows: (writer: DatabaseWriterLike, schema: SchemaLike, args: ExportShardArgs) => AsyncGenerator<ExportRow, void, undefined>;
521
657
  declare const validateImportRow: (schema: SchemaLike, table: string, record: Record<string, unknown>) => string | undefined;
522
658
  declare const importShardRows: (writer: DatabaseWriterLike, schema: SchemaLike, args: ImportShardArgs) => Promise<ImportShardResult>;
@@ -591,6 +727,7 @@ declare class ReactiveCache {
591
727
  private readonly maxBytes;
592
728
  private readonly now;
593
729
  private monotonic;
730
+ private generation;
594
731
  constructor(options?: ReactiveCacheOptions);
595
732
  run<R>(key: string, deps: Set<string>, run: () => Promise<R>, ranges?: () => ReadonlyArray<KeyRange>): Promise<R>;
596
733
  invalidate(table: string, id: string, indexKeys?: ReadonlyArray<IndexKeyEntry>): string[];
@@ -612,6 +749,7 @@ declare class ReactiveCache {
612
749
  };
613
750
  private dropRangeDeps;
614
751
  private collectAndDrop;
752
+ private dropKeys;
615
753
  private dropEntry;
616
754
  private evict;
617
755
  }
@@ -650,12 +788,18 @@ interface RunTriggersOptions {
650
788
  }
651
789
  declare const runTriggers: (options: RunTriggersOptions) => Promise<void>;
652
790
  declare const hasTrigger: (schema: SchemaLike, tableName: string, op: TriggerOpLike) => boolean;
791
+ interface SearchBackfillProgress {
792
+ done: boolean;
793
+ pages: number;
794
+ }
653
795
  declare const backfillAggregateIndexes: (sql: SqlExec, schema: SchemaLike) => void;
654
796
  declare const backfillRankIndexes: (sql: SqlExec, schema: SchemaLike) => void;
655
797
  declare const backfillSearchIndexesForTable: (sql: SqlExec, tableName: string, definition: {
656
798
  searchIndexes?: ReadonlyArray<SearchIndexDefinitionLike>;
657
799
  }) => void;
658
- declare const backfillSearchIndexes: (sql: SqlExec, schema: SchemaLike) => void;
800
+ declare const backfillSearchIndexes: (sql: SqlExec, schema: SchemaLike, options?: {
801
+ maxPages?: number;
802
+ }) => SearchBackfillProgress;
659
803
  declare const CDC_LOG_TABLE = "__cdc_log";
660
804
  interface CdcChange {
661
805
  doc?: Record<string, unknown>;
@@ -665,19 +809,35 @@ interface CdcChange {
665
809
  table: string;
666
810
  ts: number;
667
811
  }
668
- declare const migrateCdcLog: (sql: SqlExec) => void;
812
+ declare const CDC_LOG_TABLE_SEQ_INDEX = "__cdc_log_table_seq";
813
+ declare const migrateCdcLog: (sql: SqlExec, options?: {
814
+ rowHistoryIndex?: boolean;
815
+ }) => void;
669
816
  declare const appendCdcChange: (sql: SqlExec, ts: number, table: string, id: string, op: CdcChange["op"], doc: Record<string, unknown> | undefined) => void;
670
817
  declare const readCdcChanges: (sql: SqlExec, options?: {
671
818
  limit?: number;
672
819
  sinceSeq?: number;
673
- tables?: ReadonlySet<string>;
674
820
  }) => {
675
821
  changes: CdcChange[];
676
822
  cursor: number;
677
823
  };
678
- declare const trimCdcChanges: (sql: SqlExec, throughSeq: number) => void;
824
+ declare const cdcTouchesTables: (sql: SqlExec, sinceSeq: number, tables: ReadonlySet<string>) => boolean;
825
+ declare const cdcCanVouchFor: (sql: SqlExec, deps: ReadonlySet<string>) => boolean;
826
+ interface CdcChangeKey {
827
+ id: string;
828
+ op: CdcChange["op"];
829
+ seq: number;
830
+ }
831
+ declare const readCdcChangeKeys: (sql: SqlExec, table: string, sinceSeq: number, upTo: number) => CdcChangeKey[];
832
+ declare const trimCdcChanges: (sql: SqlExec, throughSeq: number, maxRows: number) => void;
833
+ declare const compactCdcDocs: (sql: SqlExec, throughSeq: number, maxRows: number) => void;
834
+ declare const cdcSeqLeavingRows: (sql: SqlExec, keep: number) => number | undefined;
679
835
  declare const readCdcCursor: (sql: SqlExec) => number;
836
+ declare const cursorBelowRetainedFloor: (floor: number | undefined, sinceSeq: number) => boolean;
837
+ declare const cdcTrimmedError: (floor: number, sinceSeq: number, scope: "global" | "shard") => LunoraError;
838
+ declare const cdcForkedError: (cursor: number, sinceSeq: number, scope: "global" | "shard", epoch?: string) => LunoraError;
680
839
  declare const minCdcSeq: (sql: SqlExec) => number | undefined;
840
+ declare const minCdcReplayableSeq: (sql: SqlExec) => number | undefined;
681
841
  declare const CDC_META_TABLE = "__cdc_meta";
682
842
  declare const migrateCdcMeta: (sql: SqlExec) => void;
683
843
  declare const readCdcEpoch: (sql: SqlExec) => string;
@@ -689,7 +849,7 @@ declare const readClientWatermark: (sql: SqlExec, identity: string, clientId: st
689
849
  declare const advanceClientWatermark: (sql: SqlExec, identity: string, clientId: string, mutationId: number) => void;
690
850
  declare const GLOBAL_SHAPE_SNAPSHOT_TABLE = "__global_shape_snapshot";
691
851
  declare const migrateGlobalShapeSnapshot: (sql: SqlExec) => void;
692
- declare const readGlobalShapeSnapshot: (sql: SqlExec, connectionId: string, subId: string) => Map<string, string>;
852
+ declare const readGlobalShapeSnapshot: (sql: SqlExec, connectionId: string, subId: string) => Map<string, string> | undefined;
693
853
  declare const writeGlobalShapeSnapshot: (sql: SqlExec, connectionId: string, subId: string, snapshot: Map<string, string>) => void;
694
854
  declare const deleteGlobalShapeSnapshot: (sql: SqlExec, connectionId: string, subId: string) => void;
695
855
  declare const deleteGlobalShapeSnapshotsForConnection: (sql: SqlExec, connectionId: string) => void;
@@ -709,28 +869,13 @@ declare const runShardMigrations: (sql: SqlExec, schema: SchemaLike, options?: {
709
869
  json: string;
710
870
  };
711
871
  }) => void;
712
- /**
713
- * How far a search companion's backfill has progressed, and what the next pass
714
- * should do about it.
715
- *
716
- * Neither stored analysis nor query policy, which is why it is its own module
717
- * rather than a third responsibility bolted onto one of them: it is *progress*,
718
- * the one piece of search state that is written as the index is built rather
719
- * than decided when it is read.
720
- *
721
- * The policy below is shared because when each engine owned a copy they
722
- * immediately disagreed about exactly the two cases that matter — whether a row
723
- * with no recorded profile may be resumed (it may not; nothing says what
724
- * analyzed it) and whether a never-started index is worth wiping (it is not;
725
- * there is nothing in it).
726
- */
727
872
  /**
728
873
  * How far a companion's backfill has progressed, and under which analysis.
729
874
  * Declared here rather than beside either engine's state table: both record the
730
875
  * same three facts, and the decisions made from them are the shared policy
731
876
  * below.
732
877
  */
733
- interface SearchBackfillState {
878
+ interface BackfillState {
734
879
  /** Last `id` indexed, or `undefined` when no page has run yet. */
735
880
  cursor: string | undefined;
736
881
  /** True once a page came back short — the table is fully indexed. */
@@ -740,19 +885,21 @@ interface SearchBackfillState {
740
885
  }
741
886
  declare const SEARCH_STATE_TABLE = "__lunora_search_state";
742
887
  declare const migrateSearchState: (sql: SqlExec) => void;
743
- declare const readSearchBackfillState: (sql: SqlExec, companion: string) => SearchBackfillState;
888
+ declare const readSearchBackfillState: (sql: SqlExec, companion: string) => BackfillState;
744
889
  declare const writeSearchBackfillState: (sql: SqlExec, companion: string, cursor: string | undefined, done: boolean, profile: string) => void;
745
890
  interface ShapeRow {
746
891
  doc: Record<string, unknown>;
747
892
  id: string;
748
893
  }
749
894
  declare const selectShapeRows: (sql: SqlExec, table: string, effectiveWhere: WhereInput | undefined) => ShapeRow[];
750
- declare const selectShapeMemberIds: (sql: SqlExec, table: string, effectiveWhere: WhereInput | undefined, ids: ReadonlyArray<string>) => Set<string>;
895
+ declare const selectShapeMembers: (sql: SqlExec, table: string, effectiveWhere: WhereInput | undefined, ids: ReadonlyArray<string>) => Map<string, Record<string, unknown>>;
751
896
  interface SqlExec {
752
897
  exec: <Row = Record<string, unknown>>(sql: string, ...params: unknown[]) => SqlCursor<Row>;
753
898
  }
754
899
  interface SqlCursor<Row> extends Iterable<Row> {
900
+ readonly columnNames?: string[];
755
901
  one: () => Row;
902
+ raw?: () => IterableIterator<unknown[]>;
756
903
  toArray: () => Row[];
757
904
  }
758
905
  type IndexUseHook = (table: string, indexName: string, kind: "geo" | "index" | "rank" | "search") => void;
@@ -768,6 +915,7 @@ interface WriteEvent {
768
915
  type WriteHook = (event: WriteEvent) => Promise<void> | void;
769
916
  interface CtxDbOptions {
770
917
  auth?: ServerDefaultContextLike["auth"];
918
+ baselineSeq?: () => number | undefined;
771
919
  broadcast?: BroadcastDelta;
772
920
  cache?: ReactiveCache;
773
921
  cdc?: boolean;
@@ -776,10 +924,16 @@ interface CtxDbOptions {
776
924
  globalDb?: DatabaseWriterLike;
777
925
  headroom?: TransactionHeadroomTracker;
778
926
  idGenerator?: IdGenerator;
927
+ inTransaction?: () => boolean;
779
928
  maxRelationKeys?: number;
780
929
  onIndexUse?: IndexUseHook;
781
930
  onRead?: ReadHook;
782
931
  onReadRange?: (range: KeyRange) => void;
932
+ onStalePatchDropped?: (event: {
933
+ fields: string[];
934
+ id: string;
935
+ table: string;
936
+ }) => void;
783
937
  onWrite?: WriteHook;
784
938
  relationExistsPushDown?: "always" | "auto" | "never";
785
939
  scheduler?: SchedulerLike;
@@ -792,6 +946,8 @@ declare class NotUniqueError extends LunoraError {
792
946
  constructor(message?: string);
793
947
  }
794
948
  declare const normalizeIdStructurally: (schema: SchemaLike, tableName: string, id: string) => null | string;
949
+ declare const assertNoExplicitUndefined: (op: "patch" | "replace", document: Record<string, unknown>) => void;
950
+ declare const stripReservedPatchFields: (patch: Record<string, unknown>) => Record<string, unknown>;
795
951
  declare const createShardCtxDb: (options: CtxDbOptions) => DatabaseWriterLike;
796
952
  declare const AUDIT_LOG_TABLE = "__lunora_audit__";
797
953
  interface AuditEntry {
@@ -815,68 +971,23 @@ declare const readAuditLog: (sql: SqlExec, options?: {
815
971
  limit?: number;
816
972
  sinceSeq?: number;
817
973
  }) => AuditEntry[];
818
- interface SubscriptionQuery {
819
- args?: Record<string, unknown>;
820
- functionPath?: string;
821
- sinceEpoch?: string;
822
- sinceSeq?: number;
823
- table?: string;
824
- }
825
- interface ShapeSubscriptionQuery {
826
- args?: Record<string, unknown>;
827
- name: string;
828
- sinceEpoch?: string;
829
- sinceSeq?: number;
830
- }
831
- interface SubscriptionEnvelope {
832
- clientId?: string;
833
- context?: Record<string, unknown>;
834
- data?: unknown;
835
- id: string;
836
- query?: SubscriptionQuery;
837
- shape?: {
838
- args?: Record<string, unknown>;
839
- name: string;
840
- };
841
- sinceCheckpoint?: number;
842
- sinceEpoch?: string;
843
- topic?: string;
844
- type: "ack" | "connect" | "shape_subscribe" | "shape_unsubscribe" | "stream" | "subscribe" | "unsubscribe" | "whisper" | "whisper_subscribe" | "whisper_unsubscribe";
845
- }
846
- interface RpcRequest {
847
- args?: Record<string, unknown>;
848
- functionPath: string;
849
- }
850
- interface SocketAttachment {
851
- admin?: boolean;
852
- clientId?: string;
853
- connected?: boolean;
854
- connectionId?: string;
855
- context?: Record<string, unknown>;
856
- expiresAt?: number;
857
- identity?: Record<string, unknown>;
858
- shapes?: Record<string, ShapeSubscriptionQuery>;
859
- subs: Record<string, SubscriptionQuery>;
860
- userId?: string;
861
- whispers?: string[];
862
- }
863
- interface ResolvedShape {
864
- columns?: ReadonlyArray<string>;
865
- effectiveWhere?: WhereInput;
866
- global?: boolean;
867
- table: string;
868
- }
869
- interface SubscriptionIdentity {
870
- identity?: Record<string, unknown>;
871
- userId?: string;
872
- }
873
- interface ShardSocketLike {
874
- readonly bufferedAmount?: number;
875
- close?: (code?: number, reason?: string) => void;
876
- deserializeAttachment?: () => unknown;
877
- send: (data: string) => void;
878
- serializeAttachment?: (value: unknown) => void;
879
- }
974
+ interface CdcArchiveScope {
975
+ epoch: string;
976
+ shard: string;
977
+ }
978
+ declare const readCdcArchivedThrough: (sql: SqlExec) => number;
979
+ declare const writeCdcArchivedThrough: (sql: SqlExec, seq: number) => void;
980
+ declare const archiveCdcSegment: (bucket: R2BucketLike, scope: CdcArchiveScope, changes: CdcChange[]) => Promise<void>;
981
+ declare const cdcArchiveRewound: (bucket: R2BucketLike, scope: CdcArchiveScope, archivedThrough: number) => Promise<boolean>;
982
+ declare const readArchivedCdcChanges: (bucket: R2BucketLike, scope: CdcArchiveScope, sinceSeq: number, limit: number | undefined) => Promise<{
983
+ changes: CdcChange[];
984
+ cursor: number;
985
+ } | undefined>;
986
+ declare const COMMIT_SEQ_TABLE = "__commit_seq";
987
+ declare const COMMIT_SEQ_FIELD = "_commitSeq";
988
+ declare const migrateCommitSeq: (sql: SqlExec) => void;
989
+ declare const readCommitSeq: (sql: SqlExec) => number;
990
+ declare const allocateCommitSeq: (sql: SqlExec) => number;
880
991
  interface CompanionSyncDeps {
881
992
  broadcast: (delta: MutationDelta) => void;
882
993
  indexKeysFor: (table: string, document?: Record<string, unknown>) => ReadonlyArray<{
@@ -900,6 +1011,13 @@ interface CompanionSync {
900
1011
  syncSearch: (tableName: string, id: string, document: Record<string, unknown> | undefined, previous?: Record<string, unknown>) => void;
901
1012
  }
902
1013
  declare const createCompanionSync: (deps: CompanionSyncDeps) => CompanionSync;
1014
+ declare const isMemoryTable: (definition: TableDefinitionLike | undefined) => boolean;
1015
+ declare const memoryTableNames: (schema: SchemaLike) => string[];
1016
+ declare const clearMemoryTables: (sql: SqlExec, schema: SchemaLike) => number;
1017
+ declare const resolveRankSeekTuple: (options: {
1018
+ after?: RankPageRowKey;
1019
+ cursor?: null | string;
1020
+ }) => unknown[] | undefined;
903
1021
  interface RankPageDeps {
904
1022
  assertRankPartitionLocal: (tableName: string, definition: TableDefinitionLike, index: RankIndexDefinitionLike) => void;
905
1023
  ensureRankBackfilled: (tableName: string, index: RankIndexDefinitionLike) => void;
@@ -917,8 +1035,49 @@ interface RankPageComputation {
917
1035
  key: RankPageRowKey;
918
1036
  }[];
919
1037
  }
920
- declare const hydrateDocsById: (deps: RankPageDeps, tableName: string, ids: ReadonlyArray<string>) => Map<string, Record<string, unknown>>;
921
1038
  declare const computeRankPage: (deps: RankPageDeps, tableName: string, indexName: string, rankPageOptions: RankPageOptions) => RankPageComputation;
1039
+ declare const SCHEDULE_OUTBOX_TABLE = "__schedule_outbox";
1040
+ interface ScheduleOutboxRow {
1041
+ attempts: number;
1042
+ envelopeJson: string;
1043
+ id: string;
1044
+ nextAttemptAt: number;
1045
+ }
1046
+ interface ScheduleOutboxEnvelope {
1047
+ args: unknown;
1048
+ options: Record<string, unknown> | undefined;
1049
+ target: unknown;
1050
+ when: number;
1051
+ }
1052
+ interface ScheduleOutbox {
1053
+ forget: (id: string) => void;
1054
+ record: (id: string, envelope: ScheduleOutboxEnvelope) => void;
1055
+ wake: () => void;
1056
+ }
1057
+ declare const migrateScheduleOutbox: (sql: SqlExec) => void;
1058
+ declare const recordScheduleOutbox: (sql: SqlExec, id: string, envelopeJson: string, now: number) => void;
1059
+ declare const forgetScheduleOutbox: (sql: SqlExec, id: string) => void;
1060
+ declare const readDueScheduleOutbox: (sql: SqlExec, nowMs: number, limit: number) => ScheduleOutboxRow[];
1061
+ declare const deferScheduleOutbox: (sql: SqlExec, id: string, attempts: number, nextAttemptAt: number) => void;
1062
+ declare const parkScheduleOutbox: (sql: SqlExec, id: string, attempts: number) => void;
1063
+ declare const probeScheduleOutbox: (sql: SqlExec) => {
1064
+ dueAt: number | undefined;
1065
+ populated: boolean;
1066
+ };
1067
+ declare const trimScheduleOutbox: (sql: SqlExec, olderThanTs: number) => void;
1068
+ declare const SHAPE_POKE_CURSOR_TABLE = "__shape_poke_cursor";
1069
+ declare const migrateShapePokeCursor: (sql: SqlExec) => void;
1070
+ declare const readShapePokeCursor: (sql: SqlExec, connectionId: string, subId: string) => number | undefined;
1071
+ declare const writeShapePokeCursor: (sql: SqlExec, connectionId: string, subId: string, cursor: number) => void;
1072
+ interface ShapePokeCursorRow {
1073
+ connectionId: string;
1074
+ cursor: number;
1075
+ subId: string;
1076
+ }
1077
+ declare const writeShapePokeCursors: (sql: SqlExec, rows: ReadonlyArray<ShapePokeCursorRow>) => void;
1078
+ declare const minShapePokeCursor: (sql: SqlExec) => number | undefined;
1079
+ declare const deleteShapePokeCursor: (sql: SqlExec, connectionId: string, subId: string) => void;
1080
+ declare const deleteShapePokeCursorsForConnection: (sql: SqlExec, connectionId: string) => void;
922
1081
  declare const DATA_MIGRATION_STATE_TABLE = "__lunora_migrations";
923
1082
  type MigrationDirection = "down" | "up";
924
1083
  type MigrationStatus = "completed" | "failed" | "in_progress";
@@ -982,10 +1141,10 @@ interface DependencyTracker {
982
1141
  declare const createDependencyTracker: () => DependencyTracker;
983
1142
  declare const runSql: <Row = Record<string, unknown>>(sql: SqlExec, query: string, ...params: unknown[]) => SqlCursor<Row>;
984
1143
  declare const runDrizzle: <Row = Record<string, unknown>>(exec: SqlExec, query: SQL) => SqlCursor<Row>;
1144
+ declare const quoteIdentifier: (name: string) => string;
985
1145
  declare const serializeSqlValue: (value: unknown) => unknown;
986
1146
  declare const DOC_COLUMN = "__doc__";
987
1147
  declare const geoTableName: (table: string, indexName: string) => string;
988
- declare const quoteIdentifier: (name: string) => string;
989
1148
  declare const jsonPath: (field: string) => string;
990
1149
  declare const jsonPathSql: (field: string) => SQL;
991
1150
  declare const qualifiedJsonPath: (table: string, field: string) => string;
@@ -995,10 +1154,16 @@ declare const AGG_KEY: Name;
995
1154
  declare const AGG_VALUE: Name;
996
1155
  declare const AGG_COUNT: Name;
997
1156
  declare const aggUpsertSql: (aggTable: string, key: unknown, value: unknown, count: unknown, set: SQL) => SQL;
998
- declare const tableColumns: (definition: TableDefinitionLike) => [string, ColumnMetaLike][];
1157
+ declare const tableColumns: (definition: TableDefinitionLike) => ReadonlyArray<readonly [string, ColumnMetaLike]>;
999
1158
  declare const rowToDocument: (row: Record<string, unknown> | undefined) => Record<string, unknown> | undefined;
1000
1159
  declare const tryRowToDocument: (row: Record<string, unknown> | undefined) => Record<string, unknown> | undefined;
1001
1160
  declare const isFtsAvailable: (sql: SqlExec) => boolean;
1161
+ declare const WORKERD_SQLITE_LIMITS: {
1162
+ readonly boundParams: 100;
1163
+ readonly compoundSelect: 5;
1164
+ readonly likePattern: 50;
1165
+ readonly sqlTextLength: 100000;
1166
+ };
1002
1167
  type SqlEngine = "mysql" | "postgres" | "sqlite";
1003
1168
  interface RenderedSql {
1004
1169
  params: unknown[];
@@ -1006,6 +1171,79 @@ interface RenderedSql {
1006
1171
  }
1007
1172
  declare const renderSql: (engine: SqlEngine, query: SQL) => RenderedSql;
1008
1173
  declare const param: (value: unknown) => SQL;
1174
+ declare const unionAll: (branches: ReadonlyArray<SQL>) => SQL;
1175
+ declare const sqliteInList: (reference: SQL, items: ReadonlyArray<unknown>, negated: boolean, budget?: number) => SQL;
1176
+ type DurableStreamStatus = "complete" | "error" | "running";
1177
+ interface DurableStreamRun {
1178
+ error?: string;
1179
+ errorCode?: string;
1180
+ lastSeq: number;
1181
+ startedAt: number;
1182
+ status: DurableStreamStatus;
1183
+ }
1184
+ interface DurableStreamChunk {
1185
+ dataJson: string;
1186
+ seq: number;
1187
+ }
1188
+ declare const migrateDurableStreams: (sql: SqlExec) => void;
1189
+ declare const readStreamRun: (sql: SqlExec, runKey: string) => DurableStreamRun | undefined;
1190
+ declare const claimStreamRun: (sql: SqlExec, runKey: string, startedAt: number, ttlMs: number) => boolean;
1191
+ declare const deleteStreamRun: (sql: SqlExec, runKey: string) => void;
1192
+ declare const appendStreamChunk: (sql: SqlExec, runKey: string, seq: number, dataJson: string) => void;
1193
+ declare const readStreamChunks: (sql: SqlExec, runKey: string, sinceSeq: number) => DurableStreamChunk[];
1194
+ declare const finishStreamRun: (sql: SqlExec, runKey: string, status: "complete" | "error", lastSeq: number, failure?: {
1195
+ code: string;
1196
+ message: string;
1197
+ }) => void;
1198
+ declare const trimStreamRuns: (sql: SqlExec, now: number) => void;
1199
+ declare const MAX_DURABLE_STREAM_CHUNKS = 50000;
1200
+ declare const MAX_DURABLE_STREAM_BYTES: number;
1201
+ interface DurableStreamSink {
1202
+ readonly chunk: (chunk: {
1203
+ data: unknown;
1204
+ generation?: number;
1205
+ seq: number;
1206
+ }) => boolean;
1207
+ readonly complete: () => void;
1208
+ readonly fail: (failure: {
1209
+ code: string;
1210
+ message: string;
1211
+ }) => void;
1212
+ }
1213
+ type DurableAttachDecision = "attach" | "interrupted" | "reclaim" | "replay-terminal";
1214
+ declare const decideDurableAttach: (run: DurableStreamRun | undefined, context: {
1215
+ generation?: number;
1216
+ live?: {
1217
+ generation: number;
1218
+ };
1219
+ resuming: boolean;
1220
+ }) => DurableAttachDecision;
1221
+ interface DurableStreamAttach {
1222
+ readonly generation?: number;
1223
+ readonly iterator: (signal: AbortSignal) => AsyncIterable<unknown>;
1224
+ readonly runKey: string;
1225
+ readonly sinceChunk: number;
1226
+ readonly sink: DurableStreamSink;
1227
+ readonly ttlMs?: number;
1228
+ }
1229
+ declare class DurableStreamRunner {
1230
+ private lastTrimAt;
1231
+ private readonly runs;
1232
+ private readonly sql;
1233
+ private readonly waitUntil;
1234
+ constructor(dependencies: {
1235
+ sql: () => SqlExec;
1236
+ waitUntil?: (promise: Promise<unknown>) => void;
1237
+ });
1238
+ attach(request: DurableStreamAttach): Promise<void>;
1239
+ detach(runKey: string, sink: DurableStreamSink): void;
1240
+ isLive(runKey: string): boolean;
1241
+ private attachOrThrow;
1242
+ private produce;
1243
+ private trim;
1244
+ }
1245
+ declare const envPositiveInt: (env: unknown, key: string, fallback: number) => number;
1246
+ declare const envOptionalPositiveInt: (env: unknown, key: string) => number | undefined;
1009
1247
  interface ExternalSourceDiffResult {
1010
1248
  changes: CdcChange[];
1011
1249
  nextBaseline: Map<string, string>;
@@ -1070,6 +1308,16 @@ declare const isSoftDeleted: (row: Record<string, unknown>, column: string) => b
1070
1308
  declare const pullExternalSourceIncrementalTick: (sql: SqlExec, writer: DatabaseWriterLike, client: SourceClientLike, table: string, source: ExternalSourceLike, shardKey: string, nowMs: number) => Promise<{
1071
1309
  applied: number;
1072
1310
  }>;
1311
+ declare const ftsRowidMapName: (companion: string) => string;
1312
+ interface FtsWriteOptions {
1313
+ guard?: SQL;
1314
+ unmappedRowids?: ReadonlyArray<number>;
1315
+ }
1316
+ declare const ftsCompanionDdl: (companion: string) => SQL[];
1317
+ declare const ftsWriteDocument: (companion: string, id: string, text: string, options?: FtsWriteOptions) => SQL[];
1318
+ declare const ftsPurgeDocument: (companion: string, id: string, options?: FtsWriteOptions) => SQL[];
1319
+ declare const ftsUnmappedPage: (companion: string, limit: number, after?: number) => SQL;
1320
+ declare const groupUnmappedRows: (rows: ReadonlyArray<Record<string, unknown>>) => Map<string, number[]>;
1073
1321
  declare const GEO_DEFAULT_PRECISION = 9;
1074
1322
  interface GeoPoint {
1075
1323
  lat: number;
@@ -1085,6 +1333,19 @@ declare const coveringGeohashes: (center: GeoPoint, radiusMeters: number) => str
1085
1333
  declare const pointInBoundingBox: (point: GeoPoint, box: GeoBoundingBox) => boolean;
1086
1334
  declare const boundingBoxCenter: (box: GeoBoundingBox) => GeoPoint;
1087
1335
  declare const boundingBoxGeohashes: (box: GeoBoundingBox) => string[];
1336
+ declare class GlobalPollTick {
1337
+ private readonly changedTables;
1338
+ private readonly reads;
1339
+ private resync;
1340
+ private skippedCount;
1341
+ constructor(changedTables?: Set<string>);
1342
+ get readCount(): number;
1343
+ get resyncRequested(): boolean;
1344
+ get skipped(): number;
1345
+ requestResync(): void;
1346
+ rows(key: string | undefined, load: () => Promise<ShapeRow[]>): Promise<ShapeRow[]>;
1347
+ shouldRead(table: string): boolean;
1348
+ }
1088
1349
  declare const ADMIN_FUNCTION_PREFIX = "__lunora_admin__:";
1089
1350
  declare const RELATION_FUNCTION_PREFIX = "__lunora_relation__:";
1090
1351
  declare const FLAGS_FUNCTION_PREFIX = "__lunora_flags__:";
@@ -1095,6 +1356,8 @@ declare const ADMIN_FUNCTIONS: {
1095
1356
  readonly aiGenerateSql: "__lunora_admin__:aiGenerateSql";
1096
1357
  readonly aiTableFilter: "__lunora_admin__:aiTableFilter";
1097
1358
  readonly assignIssue: "__lunora_admin__:assignIssue";
1359
+ readonly backfillSearch: "__lunora_admin__:backfillSearch";
1360
+ readonly backfillVectors: "__lunora_admin__:backfillVectors";
1098
1361
  readonly backRelationCounts: "__lunora_admin__:backRelationCounts";
1099
1362
  readonly cdcSync: "__lunora_admin__:cdcSync";
1100
1363
  readonly clearCapturedMail: "__lunora_admin__:clearCapturedMail";
@@ -1107,6 +1370,7 @@ declare const ADMIN_FUNCTIONS: {
1107
1370
  readonly explainIssue: "__lunora_admin__:explainIssue";
1108
1371
  readonly exportShard: "__lunora_admin__:exportShard";
1109
1372
  readonly facetColumn: "__lunora_admin__:facetColumn";
1373
+ readonly findRelated: "__lunora_admin__:findRelated";
1110
1374
  readonly getAdvisories: "__lunora_admin__:getAdvisories";
1111
1375
  readonly getAdvisorProcedures: "__lunora_admin__:getAdvisorProcedures";
1112
1376
  readonly getAuditLog: "__lunora_admin__:getAuditLog";
@@ -1133,12 +1397,14 @@ declare const ADMIN_FUNCTIONS: {
1133
1397
  readonly ignoreIssue: "__lunora_admin__:ignoreIssue";
1134
1398
  readonly importShard: "__lunora_admin__:importShard";
1135
1399
  readonly listFlags: "__lunora_admin__:listFlags";
1400
+ readonly listReactors: "__lunora_admin__:listReactors";
1136
1401
  readonly listQueues: "__lunora_admin__:listQueues";
1137
1402
  readonly lintSql: "__lunora_admin__:lintSql";
1138
1403
  readonly listTables: "__lunora_admin__:listTables";
1139
1404
  readonly listWorkflows: "__lunora_admin__:listWorkflows";
1140
1405
  readonly maskPolicies: "__lunora_admin__:maskPolicies";
1141
1406
  readonly migrationStatus: "__lunora_admin__:migrationStatus";
1407
+ readonly patchRows: "__lunora_admin__:patchRows";
1142
1408
  readonly pitrRestore: "__lunora_admin__:pitrRestore";
1143
1409
  readonly rankBefore: "__lunora_admin__:rankBefore";
1144
1410
  readonly rankPage: "__lunora_admin__:rankPage";
@@ -1216,8 +1482,12 @@ interface TablesIndexesResult {
1216
1482
  indexesByTable: Record<string, TableIndexInfo[]>;
1217
1483
  }
1218
1484
  interface ColumnMeta {
1485
+ bucket?: string;
1486
+ enumValues?: string[];
1219
1487
  isStorage?: boolean;
1220
1488
  name: string;
1489
+ nullable?: boolean;
1490
+ onDelete?: "cascade" | "restrict" | "set null";
1221
1491
  optional: boolean;
1222
1492
  pk?: boolean;
1223
1493
  ref?: string;
@@ -1332,6 +1602,19 @@ interface FlagsResult {
1332
1602
  configured: boolean;
1333
1603
  flags: FlagEvaluation[];
1334
1604
  }
1605
+ interface ReactorMetadata {
1606
+ errors: number;
1607
+ lastError?: string;
1608
+ lastRanAt?: number;
1609
+ path: string;
1610
+ runs: number;
1611
+ state: "active" | "failing" | "idle";
1612
+ suppressed: number;
1613
+ tables?: ReadonlyArray<string>;
1614
+ }
1615
+ interface ReactorsResult {
1616
+ reactors: ReactorMetadata[];
1617
+ }
1335
1618
  interface WorkflowMetadata {
1336
1619
  binding: string;
1337
1620
  className: string;
@@ -1390,8 +1673,10 @@ interface TablePage {
1390
1673
  columns: string[];
1391
1674
  refs?: Record<string, string>;
1392
1675
  rows: Record<string, unknown>[];
1676
+ sqlColumns: string[];
1393
1677
  total?: number;
1394
1678
  }
1679
+ type ColumnKinds = Readonly<Record<string, string>>;
1395
1680
  type FilterOperator = "contains" | "eq" | "gt" | "gte" | "lt" | "lte" | "ne";
1396
1681
  interface FilterClause {
1397
1682
  column: string;
@@ -1403,6 +1688,7 @@ interface OrderByClause {
1403
1688
  direction: SortDirection;
1404
1689
  }
1405
1690
  interface ReadTablePageOptions {
1691
+ columnKinds?: ColumnKinds;
1406
1692
  filters?: FilterClause[];
1407
1693
  limit?: number;
1408
1694
  offset?: number;
@@ -1413,6 +1699,8 @@ interface ReadTablePageOptions {
1413
1699
  table: string;
1414
1700
  }
1415
1701
  interface SelectMatchingIdsOptions {
1702
+ after?: string;
1703
+ columnKinds?: ColumnKinds;
1416
1704
  filters?: FilterClause[];
1417
1705
  limit?: number;
1418
1706
  search?: string;
@@ -1420,6 +1708,7 @@ interface SelectMatchingIdsOptions {
1420
1708
  }
1421
1709
  interface FacetColumnOptions {
1422
1710
  column: string;
1711
+ columnKinds?: ColumnKinds;
1423
1712
  filters?: FilterClause[];
1424
1713
  limit?: number;
1425
1714
  search?: string;
@@ -1469,12 +1758,22 @@ interface FanoutPathCounters {
1469
1758
  socketsIterated: number;
1470
1759
  totalMs: number;
1471
1760
  }
1761
+ interface ShapeProbeCounters {
1762
+ run: number;
1763
+ served: number;
1764
+ }
1765
+ interface GlobalPollCounters {
1766
+ drains: number;
1767
+ pairsSkipped: number;
1768
+ }
1472
1769
  interface FanoutMetricsResult {
1770
+ globalPoll: GlobalPollCounters;
1473
1771
  maxRelays: number;
1474
1772
  peakSubscribers: number;
1475
1773
  promoted: boolean;
1476
1774
  relayCount: number;
1477
1775
  shapePoke: FanoutPathCounters;
1776
+ shapeProbe: ShapeProbeCounters;
1478
1777
  sinceMs: number;
1479
1778
  topics: FanoutTopicStat[];
1480
1779
  totalConnections: number;
@@ -1488,6 +1787,10 @@ interface FanoutAttachmentLike {
1488
1787
  }
1489
1788
  declare const DEFAULT_FANOUT_TOPIC_LIMIT = 20;
1490
1789
  declare const createFanoutCounters: () => FanoutPathCounters;
1790
+ declare const createShapeProbeCounters: () => ShapeProbeCounters;
1791
+ declare const createGlobalPollCounters: () => GlobalPollCounters;
1792
+ declare const recordGlobalPollPass: (counters: GlobalPollCounters, drains: number, pairsSkipped: number) => GlobalPollCounters;
1793
+ declare const recordShapeProbePass: (counters: ShapeProbeCounters, run: number, served: number) => ShapeProbeCounters;
1491
1794
  declare const recordFanoutPass: (counters: FanoutPathCounters, iterated: number, delivered: number, ms: number) => FanoutPathCounters;
1492
1795
  declare const summarizeFanoutTopics: (attachments: FanoutAttachmentLike[], limit?: number) => {
1493
1796
  peakSubscribers: number;
@@ -1556,7 +1859,20 @@ interface PitrRestoreArgs {
1556
1859
  }
1557
1860
  declare const readBookmark: (storage: PitrStorage, time?: number | string) => Promise<PitrBookmarkResult>;
1558
1861
  declare const armRestore: (storage: PitrStorage, args: PitrRestoreArgs) => Promise<Omit<PitrRestoreResult, "restarted">>;
1559
- declare const normalizeOrderKeys: (orderBy: OrderByInput[] | undefined) => OrderKey[];
1862
+ declare const tiebreakDirectionFor: (keys: ReadonlyArray<{
1863
+ direction?: string;
1864
+ }>) => SortDirection;
1865
+ declare const equalityPinnedFields: (where: undefined | WhereInput) => ReadonlySet<string>;
1866
+ declare const uniqueIndexFields: (indexes: ReadonlyArray<{
1867
+ fields: ReadonlyArray<string>;
1868
+ unique?: boolean;
1869
+ }> | undefined, shape: Record<string, ValidatorLike> | undefined) => ReadonlyArray<ReadonlyArray<string>>;
1870
+ interface OrderKeyConstraints {
1871
+ pinned?: ReadonlySet<string>;
1872
+ uniqueBy?: ReadonlyArray<ReadonlyArray<string>>;
1873
+ }
1874
+ declare const normalizeOrderKeys: (orderBy: OrderByInput[] | undefined, shape?: Record<string, ValidatorLike>, constraints?: OrderKeyConstraints) => OrderKey[];
1875
+ declare const CURSOR_PREFIX = "~4";
1560
1876
  declare const encodeCursor: (record: Record<string, unknown>, keys: OrderKey[]) => string;
1561
1877
  declare const decodeCursor: (cursor: string) => unknown[];
1562
1878
  declare const buildSeekWhere: (keys: OrderKey[], cursorValues: unknown[]) => WhereInput;
@@ -1609,7 +1925,6 @@ declare const clearQueueMessages: (sql: SqlExec) => {
1609
1925
  declare const encodePartitionKey: (partitionBy: ReadonlyArray<string>, source: Record<string, unknown>) => string;
1610
1926
  declare const RANK_TIEBREAK = "__id__";
1611
1927
  declare const sortColumnName: (i: number) => string;
1612
- declare const matchesRankStaticWhere: (document: Record<string, unknown>, predicate: Record<string, unknown>) => boolean;
1613
1928
  declare const resolveRankPartition: (index: RankIndexDefinitionLike, where: Record<string, unknown> | undefined) => Record<string, unknown> | undefined;
1614
1929
  declare const rankTableName: (table: string, indexName: string) => string;
1615
1930
  declare const rankKeyFromDocument: (index: RankIndexDefinitionLike, document_: Record<string, unknown>) => {
@@ -1617,6 +1932,36 @@ declare const rankKeyFromDocument: (index: RankIndexDefinitionLike, document_: R
1617
1932
  rowId: string;
1618
1933
  sortValues: unknown[];
1619
1934
  };
1935
+ declare const rankPivotConditionSql: (column: string, value: unknown, direction: "asc" | "desc", wantLater: boolean) => SQL | undefined;
1936
+ declare const matchesRankStaticWhere: (document: Record<string, unknown>, predicate: Record<string, unknown>) => boolean;
1937
+ declare const REACTOR_STATE_TABLE = "__reactor_state";
1938
+ interface ReactorState {
1939
+ digest: string;
1940
+ lastError?: string;
1941
+ lastRanAt: number;
1942
+ stats: ReactorStats;
1943
+ tables?: ReadonlyArray<string>;
1944
+ }
1945
+ interface ReactorStats {
1946
+ errors: number;
1947
+ runs: number;
1948
+ suppressed: number;
1949
+ }
1950
+ declare const migrateReactorState: (sql: SqlExec) => void;
1951
+ declare const readReactorState: (sql: SqlExec, path: string) => ReactorState | undefined;
1952
+ declare const listReactorStates: (sql: SqlExec) => {
1953
+ path: string;
1954
+ state: ReactorState;
1955
+ }[];
1956
+ type ReactorDispatchResult = "error" | "ran" | "suppressed";
1957
+ declare const writeReactorState: (sql: SqlExec, path: string, outcome: {
1958
+ digest?: string;
1959
+ error?: string;
1960
+ now: number;
1961
+ result: ReactorDispatchResult;
1962
+ tables?: ReadonlyArray<string>;
1963
+ }) => void;
1964
+ declare const reactorNeedsRun: (state: Pick<ReactorState, "tables"> | undefined, changed: ReadonlySet<string>) => boolean;
1620
1965
  interface ReadFootprint {
1621
1966
  onRead: (table: string, idOrScan?: string) => void;
1622
1967
  onReadRange: (range: KeyRange) => void;
@@ -1624,6 +1969,23 @@ interface ReadFootprint {
1624
1969
  tables: Set<string>;
1625
1970
  }
1626
1971
  declare const createReadFootprint: () => ReadFootprint;
1972
+ declare const UNVOUCHABLE_DEP = "!unvouchable";
1973
+ declare const markUnvouchableReads: <T extends object>(facade: T, onRead: ReadFootprint["onRead"] | undefined, methods: ReadonlyArray<string>) => T;
1974
+ declare const WHERE_FILTER: unique symbol;
1975
+ type RowPredicate = (document: Record<string, unknown>) => boolean;
1976
+ type WhereFilter = RowPredicate & {
1977
+ readonly [WHERE_FILTER]: WhereInput;
1978
+ };
1979
+ declare const whereFilter: (where: WhereInput, predicate: RowPredicate) => WhereFilter;
1980
+ declare const whereOfFilter: (predicate: RowPredicate) => undefined | WhereInput;
1981
+ declare const isPushableWhere: (where: WhereInput, shape: Readonly<Record<string, ValidatorLike>>, exactText?: boolean) => boolean;
1982
+ declare const RELATED_MAX_DEPTH = 4;
1983
+ declare const RELATED_DEFAULT_LIMIT = 50;
1984
+ declare const RELATED_MAX_LIMIT = 200;
1985
+ declare const RELATED_DEPTH_DECAY = 0.5;
1986
+ declare const deriveRelationEdges: (schema: SchemaLike) => RelationEdge[];
1987
+ type RelationGraphReader = Pick<DatabaseWriterLike, "findMany"> & Pick<Partial<DatabaseWriterLike>, "lookupById">;
1988
+ declare const findRelated: (reader: RelationGraphReader, edges: ReadonlyArray<RelationEdge>, start: RelatedStart, options?: RelatedOptions) => Promise<RelatedPage>;
1627
1989
  declare const DEFAULT_MAX_RELATION_KEYS = 5000;
1628
1990
  interface RelationExistsMarker {
1629
1991
  childWhere: WhereInput;
@@ -1658,6 +2020,7 @@ declare const containsRelationPredicate: (where: WhereInput, schema: ResolveCont
1658
2020
  declare const assertFlatPredicate: (where: WhereInput | undefined, schema: ResolveContext["schema"], tableName: string, op: string) => void;
1659
2021
  declare const resolveRelationPredicates: (where: WhereInput | undefined, options: ResolveRelationPredicatesOptions) => Promise<WhereInput | undefined>;
1660
2022
  declare const assertShapeShardable: (effectiveWhere: WhereInput | undefined, schema: ResolveContext["schema"], table: string) => void;
2023
+ declare const relationHooks: (args: Pick<QueryArgs, "relationBaseWhere" | "relationMask">) => Pick<QueryArgs, "relationBaseWhere" | "relationMask"> & Pick<ResolveWithOptions, "fanOutBudget">;
1661
2024
  declare const fanOutScalarCounts: (counter: (tableName: string, where?: WhereInput) => Promise<number>, tableName: string, whereField: string, values: unknown[], policyWhere: WhereInput | undefined) => Promise<Map<unknown, number>>;
1662
2025
  declare const distinctValues: (rows: Record<string, unknown>[], field: string) => unknown[];
1663
2026
  declare const resolveWith: (options: ResolveWithOptions) => Promise<void>;
@@ -1682,6 +2045,8 @@ interface ShapeRowOp {
1682
2045
  value?: Record<string, unknown>;
1683
2046
  }
1684
2047
  interface ShapePokePart {
2048
+ baseCheckpoint?: number;
2049
+ reset?: boolean;
1685
2050
  rowsPatch: ShapeRowOp[];
1686
2051
  shapeId: string;
1687
2052
  }
@@ -1742,6 +2107,12 @@ interface RelayShapeSubscribe {
1742
2107
  type: "relay_shape_subscribe";
1743
2108
  userId?: string;
1744
2109
  }
2110
+ interface RelayShapeUnsubscribe {
2111
+ connectionId: string;
2112
+ relayIndex: number;
2113
+ subId?: string;
2114
+ type: "relay_shape_unsubscribe";
2115
+ }
1745
2116
  interface RelayShapeSeed {
1746
2117
  cursor?: number;
1747
2118
  epoch?: string;
@@ -1761,22 +2132,18 @@ interface RelayShapePoke {
1761
2132
  targetConnectionId?: string;
1762
2133
  type: "relay_shape_poke";
1763
2134
  }
1764
- type OwnerRelayFrame = RelayAttach | RelayDetach | RelayFrame | RelayShapePoke | RelayShapeSubscribe;
1765
- declare const DEFAULT_MAX_RELAYS = 8;
1766
- interface RelayStub {
2135
+ type OwnerRelayFrame = RelayAttach | RelayDetach | RelayFrame | RelayShapePoke | RelayShapeSubscribe | RelayShapeUnsubscribe;
2136
+ interface SiblingStub {
1767
2137
  fetch: (url: string, init?: RequestInit) => Promise<Response>;
1768
2138
  }
1769
- interface RelayNamespaceLike {
1770
- get: (id: unknown) => RelayStub;
1771
- getByName?: (name: string) => RelayStub;
1772
- idFromName: (name: string) => unknown;
1773
- }
2139
+ declare const DEFAULT_MAX_RELAYS = 8;
1774
2140
  interface RelayHost {
1775
2141
  buildShapeDiff: (resolved: ResolvedShape, fromCursor: number, toCursor: number) => ShapeRowOp[];
1776
2142
  computeOpLogShapeSeed: (shape: ShapeSubscriptionQuery, resolved: ResolvedShape) => {
1777
2143
  baseCheckpoint: number | undefined;
1778
2144
  cursor: number;
1779
2145
  epoch: string | undefined;
2146
+ reset: boolean;
1780
2147
  rowsPatch: ShapeRowOp[];
1781
2148
  };
1782
2149
  currentCdcEpoch: () => string | undefined;
@@ -1791,8 +2158,13 @@ interface RelayHost {
1791
2158
  resolveShape: (name: string, args: Record<string, unknown>, identity?: SubscriptionIdentity) => ResolvedShape | undefined;
1792
2159
  rlsMetadata: () => RlsPoliciesResult;
1793
2160
  shardBinding: () => string | undefined;
2161
+ shardJurisdiction: () => string | undefined;
1794
2162
  sql: () => SqlExec;
1795
2163
  }
2164
+ interface RelayPokeDelivery {
2165
+ delivered: number;
2166
+ matched: number;
2167
+ }
1796
2168
  declare abstract class RelayLink {
1797
2169
  protected readonly host: RelayHost;
1798
2170
  protected readonly roleId: {
@@ -1806,7 +2178,8 @@ declare abstract class RelayLink {
1806
2178
  handleControl(request: Request): Promise<Response>;
1807
2179
  maxRelays(): number;
1808
2180
  protected canAddressSiblings(): boolean;
1809
- protected relayNamespace(): RelayNamespaceLike | undefined;
2181
+ protected siblingStub(targetName: string): SiblingStub | undefined;
2182
+ protected bindingName(): string | undefined;
1810
2183
  protected postRelayMessage(targetName: string, message: OwnerRelayFrame): Promise<void>;
1811
2184
  protected requestRelayMessage(targetName: string, message: OwnerRelayFrame): Promise<Response | undefined>;
1812
2185
  abstract forwardWhisper(topic: string, frame: string): Promise<void>;
@@ -1817,19 +2190,22 @@ declare abstract class RelayLink {
1817
2190
  }>;
1818
2191
  abstract announce(): Promise<void>;
1819
2192
  abstract announceDrain(closing: ShardSocketLike): Promise<void>;
2193
+ abstract releaseRelayShapes(ws: ShardSocketLike, subId?: string): Promise<void>;
1820
2194
  abstract relayCount(): number;
1821
2195
  abstract isShapeRelayUniform(name: string, args: Record<string, unknown>): boolean;
2196
+ abstract minShapeCursor(): number | undefined;
1822
2197
  protected abstract onAttach(index: number): void;
1823
2198
  protected abstract onDetach(index: number): void;
1824
2199
  protected abstract onWhisperFrame(message: RelayFrame): Promise<void>;
1825
2200
  protected abstract onShapeSubscribe(message: RelayShapeSubscribe): RelayShapeSeed;
1826
- protected abstract onShapePoke(poke: RelayShapePoke): number;
2201
+ protected abstract onShapeUnsubscribe(message: RelayShapeUnsubscribe): void;
2202
+ protected abstract onShapePoke(poke: RelayShapePoke): RelayPokeDelivery;
1827
2203
  }
1828
2204
  declare class OwnerRelay extends RelayLink {
1829
2205
  private readonly shapeUniformCache;
1830
2206
  private relaySetCache;
1831
- private readonly relayShapeRegistry;
1832
- private readonly relayShapeProxies;
2207
+ private registryCache;
2208
+ private recordedBinding;
1833
2209
  private promotionState;
1834
2210
  constructor(host: RelayHost, ownerKey: string);
1835
2211
  forwardWhisper(topic: string, frame: string): Promise<void>;
@@ -1840,17 +2216,26 @@ declare class OwnerRelay extends RelayLink {
1840
2216
  }>;
1841
2217
  announce(): Promise<void>;
1842
2218
  announceDrain(): Promise<void>;
2219
+ releaseRelayShapes(): Promise<void>;
1843
2220
  relayCount(): number;
2221
+ minShapeCursor(): number | undefined;
1844
2222
  isShapeRelayUniform(name: string, args: Record<string, unknown>): boolean;
2223
+ protected onShapeUnsubscribe(message: RelayShapeUnsubscribe): void;
1845
2224
  protected onAttach(index: number): void;
1846
2225
  protected onDetach(index: number): void;
1847
2226
  protected onWhisperFrame(message: RelayFrame): Promise<void>;
1848
2227
  protected onShapeSubscribe(message: RelayShapeSubscribe): RelayShapeSeed;
1849
- protected onShapePoke(): number;
2228
+ protected onShapePoke(): RelayPokeDelivery;
2229
+ private buildShapePoke;
1850
2230
  private multicastShapePokes;
2231
+ private multicastToRelays;
1851
2232
  private proxyShapePokes;
2233
+ private proxyToRelay;
1852
2234
  private buildShapeSeedFrames;
1853
- private ensureRelayTable;
2235
+ private ensureRelayTables;
2236
+ protected bindingName(): string | undefined;
2237
+ private relayShapes;
2238
+ private rewindShapeCursor;
1854
2239
  private ownerRelaySet;
1855
2240
  private addRelayToSet;
1856
2241
  private removeRelayFromSet;
@@ -1859,7 +2244,8 @@ declare class OwnerRelay extends RelayLink {
1859
2244
  }
1860
2245
  declare class RelayMember extends RelayLink {
1861
2246
  private relayAnnounced;
1862
- private readonly shapeRelayMemos;
2247
+ private relayMemoCache;
2248
+ private readonly shapeControl;
1863
2249
  constructor(host: RelayHost, ownerKey: string, relayIndex: number);
1864
2250
  forwardWhisper(topic: string, frame: string): Promise<void>;
1865
2251
  onFlush(): Promise<void>;
@@ -1869,17 +2255,81 @@ declare class RelayMember extends RelayLink {
1869
2255
  }>;
1870
2256
  announce(): Promise<void>;
1871
2257
  announceDrain(closing: ShardSocketLike): Promise<void>;
2258
+ releaseRelayShapes(ws: ShardSocketLike, subId?: string): Promise<void>;
1872
2259
  relayCount(): number;
1873
2260
  isShapeRelayUniform(): boolean;
2261
+ minShapeCursor(): number | undefined;
1874
2262
  protected onAttach(): void;
1875
2263
  protected onDetach(): void;
1876
2264
  protected onWhisperFrame(): Promise<void>;
1877
2265
  protected onShapeSubscribe(): RelayShapeSeed;
1878
- protected onShapePoke(poke: RelayShapePoke): number;
2266
+ protected onShapeUnsubscribe(): void;
2267
+ protected onShapePoke(poke: RelayShapePoke): RelayPokeDelivery;
2268
+ private queueShapeControl;
2269
+ private relayMemos;
2270
+ private connectionMemos;
1879
2271
  private recordRelayShapeMemo;
2272
+ private forgetRelayShapeMemos;
1880
2273
  private deliverShapePoke;
2274
+ private pokeSocketShapes;
1881
2275
  }
1882
2276
  declare const createRelayLink: (host: RelayHost) => OwnerRelay | RelayMember | undefined;
2277
+ declare const REGION_HINTS: readonly ["wnam", "enam", "sam", "weur", "eeur", "apac", "apac-ne", "apac-se", "oc", "afr", "me"];
2278
+ type RegionHint = (typeof REGION_HINTS)[number];
2279
+ type ReplicaReadiness = "fresh" | "stale" | "unavailable";
2280
+ interface ShardSiblingHost {
2281
+ doName: () => string | undefined;
2282
+ env: () => unknown;
2283
+ shardBinding: () => string | undefined;
2284
+ shardJurisdiction: () => string | undefined;
2285
+ sql: () => SqlExec;
2286
+ }
2287
+ interface ReplicaOwnerHost extends ShardSiblingHost {
2288
+ exportRows: () => Promise<ExportRow[]>;
2289
+ ownerCursor: () => number | undefined;
2290
+ ownerEpoch: () => string | undefined;
2291
+ ownerFloor: () => number | undefined;
2292
+ readChanges: (sinceSeq: number, limit: number) => {
2293
+ changes: CdcChange[];
2294
+ cursor: number;
2295
+ };
2296
+ rowCount: () => number;
2297
+ }
2298
+ interface ReplicaFollowerHost extends ShardSiblingHost {
2299
+ applyChanges: (changes: ReadonlyArray<CdcChange>) => Promise<number>;
2300
+ importRows: (rows: ReadonlyArray<ExportRow>) => Promise<{
2301
+ errors: ReadonlyArray<unknown>;
2302
+ }>;
2303
+ }
2304
+ declare const handleReplicaControl: (host: ReplicaOwnerHost, request: Request) => Promise<Response>;
2305
+ declare class ShardReplica {
2306
+ private readonly host;
2307
+ readonly ownerKey: string;
2308
+ readonly region: RegionHint;
2309
+ private divergent;
2310
+ private inFlight;
2311
+ constructor(host: ReplicaFollowerHost, ownerKey: string, region: RegionHint);
2312
+ ensureFresh(minSeq?: number): Promise<ReplicaReadiness>;
2313
+ appliedSeq(): number;
2314
+ isDivergent(): boolean;
2315
+ private advance;
2316
+ private isCaughtUp;
2317
+ private catchUp;
2318
+ private applyPage;
2319
+ private hasDiverged;
2320
+ private bootstrap;
2321
+ private isFreshEnough;
2322
+ private pull;
2323
+ private request;
2324
+ }
2325
+ declare const createReplicaLink: (host: ReplicaFollowerHost) => ShardReplica | undefined;
2326
+ declare const gateReplicaDispatch: (replica: ShardReplica, request: Request, functionPath: string) => Promise<Response | undefined>;
2327
+ declare const REPROJECTION_MIGRATION_PREFIX = "__lunora_reproject__";
2328
+ declare const reprojectionMigrationId: (table: string) => string;
2329
+ declare const reprojectableFields: (definition: TableDefinitionLike) => string[];
2330
+ declare const reprojectionTables: (schema: SchemaLike) => string[];
2331
+ declare const countLegacyRows: (sql: SqlExec, table: string, fields: ReadonlyArray<string>) => number;
2332
+ declare const buildReprojectionMigration: (id: string, schema: SchemaLike, sql: SqlExec) => DataMigrationLike | undefined;
1883
2333
  declare const RLS_UNWRAP_SYMBOL: symbol;
1884
2334
  declare class RlsRequiredError extends LunoraError {
1885
2335
  readonly table: string;
@@ -1896,7 +2346,7 @@ interface GuardableSchema {
1896
2346
  }
1897
2347
  type TableOfId = (id: string, expectedTable?: string) => Promise<string | undefined> | string | undefined;
1898
2348
  type TablesOfIds = (ids: ReadonlyArray<string>, expectedTable?: string) => Promise<ReadonlyMap<string, string>> | ReadonlyMap<string, string>;
1899
- declare const guardWriter: <W>(raw: W, schema: GuardableSchema, tableOfId: TableOfId, tablesOfIds?: TablesOfIds) => W;
2349
+ declare const guardWriter: <W>(raw: W, schema: GuardableSchema, tableOfId: TableOfId, tablesOfIds?: TablesOfIds, relationEdges?: ReadonlyArray<RelationEdge>) => W;
1900
2350
  declare const SCHEMA_HISTORY_MAX_VERSIONS = 50;
1901
2351
  interface SchemaVersionRow {
1902
2352
  appliedAt: number;
@@ -1907,8 +2357,24 @@ interface SchemaVersionRow {
1907
2357
  declare const recordSchemaVersion: (sql: SqlExec, hash: string, snapshotJson: string, now?: number) => boolean;
1908
2358
  declare const readSchemaHistory: (sql: SqlExec) => SchemaVersionRow[];
1909
2359
  declare const readSchemaVersion: (sql: SqlExec, hash: string) => SchemaVersionRow | undefined;
2360
+ declare const readDeployInfo: (rawEnv: unknown) => DeployInfo;
1910
2361
  declare const isDevEnvironment: (rawEnv: unknown) => boolean;
1911
2362
  declare const buildSettings: (rawEnv: unknown) => SettingsResult;
2363
+ declare class ShapeDiffCache {
2364
+ private readonly keyScans;
2365
+ private readonly memberProbes;
2366
+ private run;
2367
+ private served;
2368
+ get probesRun(): number;
2369
+ get probesServed(): number;
2370
+ changedKeys(rangeKey: string, load: () => CdcChangeKey[]): ReadonlyArray<CdcChangeKey>;
2371
+ members(resolved: ResolvedShape, rangeKey: string, load: () => Map<string, Record<string, unknown>>): ReadonlyMap<string, Record<string, unknown>>;
2372
+ private getOrLoad;
2373
+ }
2374
+ declare const createShapeDiffCache: () => ShapeDiffCache;
2375
+ declare const globalShapeReadKey: (resolved: ResolvedShape, identity: SubscriptionIdentity) => string | undefined;
2376
+ type ReadShapeCdcKeys = (sql: SqlExec, table: string, sinceSeq: number, upTo: number) => CdcChangeKey[];
2377
+ declare const buildShapeDiff: (sql: SqlExec, resolved: ResolvedShape, sinceSeq: number, upTo: number, cache: ShapeDiffCache, readKeys?: ReadShapeCdcKeys) => ShapeRowOp[];
1912
2378
  interface ShardRunnerOptions {
1913
2379
  handlers?: {
1914
2380
  handleAlarm?: () => Promise<void>;
@@ -1924,7 +2390,7 @@ declare class ShardRunner {
1924
2390
  socketFor(raw: unknown): ShardSocketLike;
1925
2391
  sockets(tag?: string): SocketHandle[];
1926
2392
  background(work: Promise<unknown>): boolean;
1927
- runInTransaction<T>(work: () => Promise<T>): Promise<T>;
2393
+ runInTransaction<T>(work: () => Promise<T>, onCommitted?: () => void): Promise<T>;
1928
2394
  handleFetch(request: Request): Promise<Response>;
1929
2395
  handleAlarm(): Promise<void>;
1930
2396
  }
@@ -1950,6 +2416,11 @@ interface SqlDiagnostic {
1950
2416
  source: "gate" | "plan" | "syntax";
1951
2417
  }
1952
2418
  declare const lintReadonlySql: (sql: SqlExec, query: string) => SqlLintResult;
2419
+ declare const BIGINT_KEY_DIGITS = 39;
2420
+ declare const bigintSqlKey: (value: bigint) => string;
2421
+ declare const decodeBigintSqlKey: (raw: string) => bigint | undefined;
2422
+ declare const float64SqlKey: (value: number) => string;
2423
+ declare const decodeFloat64SqlKey: (raw: string) => number | undefined;
1953
2424
  declare const subscriptionListDeltas: (previousJson: string, nextResult: unknown, table: string, frames?: string[]) => MutationDelta[] | undefined;
1954
2425
  interface FrameSink {
1955
2426
  send: (data: string) => void;
@@ -1958,7 +2429,17 @@ interface DrainableSink {
1958
2429
  readonly bufferedAmount?: unknown;
1959
2430
  }
1960
2431
  declare const trySendFrame: (ws: FrameSink, frame: string) => boolean;
1961
- declare const sendDeltaFrames: (ws: FrameSink, subId: string, deltaFrames: ReadonlyArray<string>, cursorSuffix: string, lastMutationId?: number) => boolean;
2432
+ interface SubscriptionFrameInput {
2433
+ cursorSuffix: string;
2434
+ lastMutationId?: number;
2435
+ nextResult: unknown;
2436
+ pageDeltas?: boolean;
2437
+ previousJson?: string;
2438
+ snapshotJson: string;
2439
+ subId: string;
2440
+ table: string;
2441
+ }
2442
+ declare const subscriptionFrames: (input: SubscriptionFrameInput) => string[];
1962
2443
  declare const awaitWsDrain: (ws: DrainableSink) => Promise<void>;
1963
2444
  interface SubscriptionReadFootprint {
1964
2445
  ranges?: Map<string, KeyRange[]>;
@@ -1986,13 +2467,51 @@ declare const selectExpiredIds: (sql: SqlExec, spec: TtlSweepSpec, now: number,
1986
2467
  hasMore: boolean;
1987
2468
  ids: string[];
1988
2469
  };
1989
- type FieldRefSql = (field: string) => SQL;
1990
- type SerializeValue = (value: unknown) => unknown;
1991
- interface WhereSqlStrategy {
1992
- fieldRef: FieldRefSql;
1993
- likeContains?: (reference: SQL, term: SQL) => SQL;
1994
- relationExists?: (request: unknown) => SQL;
2470
+ declare const VECTOR_BACKFILL_MAX_PAGES = 20;
2471
+ interface VectorBackfillTarget {
2472
+ profile: string;
2473
+ table: string;
2474
+ }
2475
+ interface VectorBackfillProgress {
2476
+ done: boolean;
2477
+ error?: string;
2478
+ failed: number;
2479
+ failedIds: string[];
2480
+ pages: number;
2481
+ rows: number;
2482
+ }
2483
+ type VectorPageSync = (table: string, rows: ReadonlyArray<{
2484
+ doc: Record<string, unknown>;
2485
+ id: string;
2486
+ }>) => Promise<ReadonlyArray<{
2487
+ error: unknown;
2488
+ id: string;
2489
+ }>>;
2490
+ type OrderedAfterWrites = <T, U>(read: () => T, work: (value: T) => Promise<U>) => Promise<U>;
2491
+ declare const backfillVectorIndexes: (sql: SqlExec, targets: ReadonlyArray<VectorBackfillTarget>, sync: VectorPageSync, options: {
2492
+ maxPages?: number;
2493
+ ordered: OrderedAfterWrites;
2494
+ restart?: boolean;
2495
+ }) => Promise<VectorBackfillProgress>;
2496
+ interface WhereFragments<T> {
2497
+ binary: (reference: T, comparator: string, value: unknown) => T;
2498
+ connect: (left: T, right: T, connector: "AND" | "OR") => T;
2499
+ constant: (value: boolean) => T;
2500
+ contains: (reference: T, term: T) => T;
2501
+ inList: (reference: T, items: ReadonlyArray<unknown>, negated: boolean, budget: number) => T;
2502
+ negate: (inner: T) => T;
2503
+ nullCheck: (reference: T, negated: boolean) => T;
2504
+ value: (value: unknown) => T;
2505
+ }
2506
+ type FieldRefSql<T> = (field: string) => T;
2507
+ type SerializeValue = (value: unknown, field: string) => unknown;
2508
+ interface WhereSqlStrategy<T = SQL> {
2509
+ containsExpr?: (reference: T, term: T) => T;
2510
+ fieldRef: FieldRefSql<T>;
2511
+ inList?: (reference: T, items: ReadonlyArray<unknown>, negated: boolean, budget?: number) => T;
2512
+ relationExists?: (request: unknown) => T;
1995
2513
  serialize: SerializeValue;
1996
2514
  }
1997
- declare const compileWhereSql: (where: WhereInput | undefined, strategy: WhereSqlStrategy) => SQL | undefined;
1998
- export { ADMIN_FUNCTIONS, ADMIN_FUNCTION_PREFIX, AGGREGATE_SQL_FUNCTION, AGG_COUNT, AGG_KEY, AGG_VALUE, AUDIT_LOG_TABLE, type AdvisorProcedure, type AdvisorProceduresResult, type AdvisoriesResult, type AdvisoryFinding, type AggregateIndexDefinitionLike, type AggregateOp, type AggregateOptions, type AggregateResult, type AggregateTally, type AppendAuditEntry, type ApplyOnDeleteOptions$1 as ApplyOnDeleteOptions, type AuditEntry, type AuditLogResult, type BroadcastDelta, CDC_LOG_TABLE, CDC_META_TABLE, CLIENT_WATERMARK_TABLE, type CacheEntry, type CapturedMailRow, type CdcChange, type ChangedKeys, type Clock, type ColumnMeta, type ColumnMetaLike, type CompanionSync, type CompanionSyncDeps, ConflictError, type ConflictKind, type CountArgs, CountRlsUnsupportedError, type CreateWorkflowInstanceResult, type CtxDbOptions, DATA_MIGRATION_STATE_TABLE, DEFAULT_FANOUT_TOPIC_LIMIT, DEFAULT_MAX_RELATION_KEYS, DEFAULT_MAX_RELAYS, DEFAULT_PROMOTION_THRESHOLDS, DEFAULT_TRANSACTION_LIMITS, DOC_COLUMN, type DataMigrationDocument, type DataMigrationLike, type DataMigrationTransform, type DatabaseWriterLike, type DependencyTracker, type DeployInfo, type ExportRow, type ExportShardAdminArgs, type ExportShardArgs, type ExternalSourceDiffResult, type ExternalSourceLike, FLAGS_FUNCTION_PREFIX, type FacetColumnOptions, type FacetColumnResult, type FacetValue, type FanoutMetricsResult, type FanoutPathCounters, type FanoutTopicStat, type FieldOperators, type FilterClause, type FilterOperator, type FlagEvaluation, type FlagsResult, type FunctionCallStat, type FunctionScanAttribution, type FunctionStatsResult, GEO_DEFAULT_PRECISION, GLOBAL_SHAPE_SNAPSHOT_TABLE, type GeoBoundingBox, type GeoFilterBuilderLike, type GeoIndexDefinitionLike, type GeoPoint, type GeoScoredDocument, type GroupByEntry, type GroupByOptions, type GuardableSchema$1 as GuardableSchema, IDEMPOTENCY_TABLE, type IdGenerator, type IdempotentRecord, type ImportError, type ImportShardAdminArgs, type ImportShardArgs, type ImportShardResult, type IncrementalMaterializeResult, type IndexDefinitionLike, type IndexKeyEntry, type IndexRangeBuilderLike, type KeyRange, type LifecycleDispatchInfo, type LifecycleEvent, MAIL_RETENTION, MAIL_TABLE, MAX_PAGE_SIZE, MAX_SQL_ROWS, type MaskColumnMetadata, type MaskPoliciesResult, type MaterializeResult, type MigrationDirection, type MigrationRunResult, type MigrationStatus, type MigrationStatusRow, type MutationDelta, type NestedWith, NotFoundError, NotUniqueError, type OnDeleteActionLike, type OrderByClause, type OrderByInput, type OrderKey, OwnerRelay, type OwnerRelayFrame, type PaginationOptions, type PitrBookmarkResult, type PitrRestoreArgs, type PitrRestoreResult, type PitrStorage, type PokeFrameMeta, type PromotionState, type PromotionThresholds, QUEUE_TABLE, type QueryArgs, type QueryPage, type QueueMessageOutcome, type QueueMessageRow, type QueueMetadata, type QueuesResult, RANK_TIEBREAK, RELATION_EXISTS_KEY, RELATION_FUNCTION_PREFIX, RLS_UNWRAP_SYMBOL, type RankBeforeOptions, type RankBeforeResult, type RankDirection, type RankIndexDefinitionLike, type RankOptions, type RankPage, type RankPageComputation, type RankPageDeps, type RankPageOptions, type RankPageRow, type RankPageRowKey, type RankResult, type RankSortKeyLike, ReactiveCache, type ReactiveCacheOptions, type ReadFootprint, type ReadHook, type ReadTablePageOptions, type RecordMailInput, type RecordQueueMessageInput, type RelationDefinitionLike, type RelationExistsMarker, type RelayAttach, type RelayDetach, type RelayFrame, type RelayHost, RelayMember, type RelayShapePoke, type RelayShapeSeed, type RelayShapeSubscribe, type RenderedSql, type ResolveRelationPredicatesOptions, type ResolveWithOptions, type ResolveWithResult, type ResolvedShape, type RestrictableQueryOptions, type RlsPoliciesResult, type RlsPolicyMetadata, RlsRequiredError, type RlsRoleMetadata, type RpcRequest, type RunDataMigrationOptions, type RunTriggersOptions, SCAN_DEP, SCHEMA_HISTORY_MAX_VERSIONS, SEARCH_STATE_TABLE, type SchedulableWorkflowReferenceLike, type ScheduledFunctionDoc, type SchedulerLike, type SchemaLike, type ScoredDocument, type SearchFilterBuilderLike, type SearchIndexDefinitionLike, type SearchScoredDocument, type SelectMatchingIdsOptions, type ServerDefaultContextLike, type SettingEntry, type SettingKind, type SettingsResult, type ShapePokePart, type ShapeRow, type ShapeRowOp, type ShapeSubscriptionQuery, type ShardRankPageResult, ShardRunner, type ShardRunnerOptions, type ShardSocketLike, type SocketAttachment, type SortDirection, type SourceClientLike, type SourceCursorLike, type SourceRefresh, type SqlConsoleResult, type SqlCursor, type SqlEngine, type SqlExec, type SqlLintResult, type StorageMetadata, type StorageReference, type StorageReferenceResult, type StorageRuleMetadata, type StorageRulesResult, type StudioFeaturesResult, type SubscriptionConnection, type SubscriptionEnvelope, type SubscriptionIdentity, type SubscriptionInfo, type SubscriptionQuery, type SubscriptionReadFootprint, type SubscriptionsResult, type SystemDatabaseReader, type SystemDoc, type SystemQuery, type SystemReaderOptions, type SystemReaderSchedulerLike, type SystemReaderStorageLike, type SystemTableName, type TableColumnsResult, type TableDefinitionLike, type TableIndexInfo, type TableIndexesResult, type TableInfo, type TablePage, type TableReaderLike, type TablesColumnsResult, type TablesIndexesResult, type TransactionHeadroom, TransactionHeadroomTracker, type TransactionLimits, type TransactionSqlLike, type TriggerContextLike, type TriggerDefinitionLike, type TriggerEventLike, type TriggerOpLike, type TriggerTimingLike, type TtlSweepSpec, type ValidatorLike, type WhereInput, type WhereSqlStrategy, type WithInput, type WorkflowInstanceState, type WorkflowInstanceStatusResult, type WorkflowMetadata, type WorkflowsResult, type WriteEvent, type WriteHook, advanceClientWatermark, aggUpsertSql, aggregateSqlFunction, aggregateTableName, appendAuditEntry, appendCdcChange, applyCdcChanges, applyOnDelete, applySelect, armRestore, assertFlatPredicate, assertReadonly, assertShapeShardable, assertValidClientId, awaitWsDrain, backfillAggregateIndexes, backfillRankIndexes, backfillSearchIndexes, backfillSearchIndexesForTable, boundingBoxCenter, boundingBoxGeohashes, buildIndexRange, buildPokeFrames, buildSeekBeforeWhere, buildSeekWhere, buildSettings, bumpCdcEpoch, clampPromotionThresholds, clearCapturedMail, clearQueueMessages, coerceAggregateNumber, compileWhereSql, computeRankPage, containsRelationPredicate, coveringGeohashes, createCompanionSync, createDependencyTracker, createFanoutCounters, createIndexSql, createReadFootprint, createRelayLink, createShardCtxDb, createSystemReader, decodeCursor, deleteGlobalShapeSnapshot, deleteGlobalShapeSnapshotsForConnection, depKey, diffExternalSource, diffGlobalMembership, distinctValues, encodeAggregateKey, encodeCursor, encodeGeohash, encodePartitionKey, encodeRowsPatch, ensureAuditTable, ensureMailTable, exportShardRows, exportShardTable, facetColumn, fanOutScalarCounts, findStorageReferences, foldAggregateTally, geoTableName, guardWriter, hasTrigger, haversineMeters, hydrateDocsById, importShardRows, indexKeysForRow, isDevEnvironment, isFtsAvailable, isLossyBody, isRelationPredicate, isSoftDeleted, isSourceDue, jsonPath, jsonPathSql, keysTouchRanges, liftSourceId, lintReadonlySql, listTables, matchesRankStaticWhere, matchesStaticWhere, materializeExternalRows, materializeExternalRowsIncremental, mergeChangedKeys, mergeWhere, migrateCdcLog, migrateCdcMeta, migrateClientWatermark, migrateGlobalShapeSnapshot, migrateIdempotency, migrateSearchState, minCdcSeq, nextPromotionState, normalizeCountArgument, normalizeIdStructurally, normalizeOrderKeys, normalizeSourceDocument, normalizeSourceValue, param, parseExportShardArgs, parseImportShardArgs, planAggregateLookup, pointInBoundingBox, projectColumns, pullExternalSourceIncrementalTick, pullExternalSourceTick, qualifiedJsonPath, qualifiedJsonPathSql, quoteIdentifier, rankKeyFromDocument as rankKeyFromDoc, rankTableName, reactiveCacheKey, readAggregateValue, readAuditLog, readBookmark, readCapturedMail, readCdcChanges, readCdcCursor, readCdcEpoch, readClientWatermark, readExternalSourceBaseline, readGlobalShapeSnapshot, readIdempotent, readMigrationStatus, readQueueMessageById, readQueueMessages, readSchemaHistory, readSchemaVersion, readSearchBackfillState, readTablePage, recordCapturedMail, recordChangedKeys, recordFanoutPass, recordQueueMessages, recordSchemaVersion, relayCountFor, renderSql, resolveRankPartition, resolveRelationPredicates, resolveWith, rowToDocument, runDataMigration, runDrizzle, runExternalSourceTick, runReadonlySql, runRowValidators, runShardMigrations, runSocketPool, runSql, runTriggers, selectExpiredIds, selectExportTables, selectIndexForAggregate, selectIndexForCount, selectIndexForGroupBy, selectMatchingIds, selectShapeMemberIds, selectShapeRows, sendDeltaFrames, serializeSqlValue, shapeRoutingKey, softDeleteScope, sortColumnName, stableStringify, stableWireKey, subscriptionListDeltas, summarizeFanoutTopics, summarizeSubscriptions, tableColumns, tableFromDepKey, throwingScheduler, trimCdcChanges, trimIdempotent, tryRowToDocument, trySendFrame, validateImportRow, writeGlobalShapeSnapshot, writeIdempotent, writeSearchBackfillState, writeTouchesMemo };
2515
+ declare const literalInList: (reference: SQL, items: ReadonlyArray<unknown>, negated: boolean) => SQL;
2516
+ declare const compileWhereSql: <T = SQL>(where: WhereInput | undefined, strategy: WhereSqlStrategy<T>, fragments?: WhereFragments<T>, reservedParams?: number) => T | undefined;
2517
+ export { ADMIN_FUNCTIONS, ADMIN_FUNCTION_PREFIX, AGGREGATE_SQL_FUNCTION, AGG_COUNT, AGG_KEY, AGG_VALUE, AUDIT_LOG_TABLE, type AdvisorProcedure, type AdvisorProceduresResult, type AdvisoriesResult, type AdvisoryFinding, type AggregateIndexDefinitionLike, type AggregateOp, type AggregateOptions, type AggregateResult, type AggregateTally, type AppendAuditEntry, type ApplyOnDeleteOptions$1 as ApplyOnDeleteOptions, type AuditEntry, type AuditLogResult, BIGINT_KEY_DIGITS, type BroadcastDelta, CDC_LOG_TABLE, CDC_LOG_TABLE_SEQ_INDEX, CDC_META_TABLE, CLIENT_WATERMARK_TABLE, COMMIT_SEQ_FIELD, COMMIT_SEQ_TABLE, CURSOR_PREFIX, type CacheEntry, type CapturedMailRow, type CdcArchiveScope, type CdcChange, type CdcChangeKey, type ChangedKeys, type Clock, type ColumnMeta, type ColumnMetaLike, type CompanionSync, type CompanionSyncDeps, ConflictError, type ConflictKind, type CountArgs, CountRlsUnsupportedError, type CreateWorkflowInstanceResult, type CrossShardReadArgs, type CtxDbOptions, DATA_MIGRATION_STATE_TABLE, DEFAULT_FANOUT_TOPIC_LIMIT, DEFAULT_MAX_RELATION_KEYS, DEFAULT_MAX_RELAYS, DEFAULT_PROMOTION_THRESHOLDS, DEFAULT_TRANSACTION_LIMITS, DOC_COLUMN, type DataMigrationDocument, type DataMigrationLike, type DataMigrationTransform, type DatabaseWriterLike, type DependencyTracker, type DeployInfo, type DurableAttachDecision, type DurableStreamAttach, type DurableStreamRun, DurableStreamRunner, type DurableStreamSink, type ExportRow, type ExportShardAdminArgs, type ExportShardArgs, type ExternalSourceDiffResult, type ExternalSourceLike, FLAGS_FUNCTION_PREFIX, type FacetColumnOptions, type FacetColumnResult, type FacetValue, type FanOutBudget, type FanoutMetricsResult, type FanoutPathCounters, type FanoutTopicStat, type FieldOperators, type FilterClause, type FilterOperator, type FlagEvaluation, type FlagsResult, type FtsWriteOptions, type FunctionCallStat, type FunctionScanAttribution, type FunctionStatsResult, GEO_DEFAULT_PRECISION, GLOBAL_SHAPE_SNAPSHOT_TABLE, type GeoBoundingBox, type GeoFilterBuilderLike, type GeoIndexDefinitionLike, type GeoPoint, type GeoScoredDocument, type GlobalPollCounters, GlobalPollTick, type GroupByEntry, type GroupByOptions, type GuardableSchema$1 as GuardableSchema, IDEMPOTENCY_TABLE, type IdGenerator, type IdempotentRecord, type ImportError, type ImportShardAdminArgs, type ImportShardArgs, type ImportShardResult, type IncrementalMaterializeResult, type IndexDefinitionLike, type IndexKeyEntry, type IndexRangeBuilderLike, type KeyRange, type LifecycleDispatchInfo, type LifecycleEvent, MAIL_RETENTION, MAIL_TABLE, MAX_DURABLE_STREAM_BYTES, MAX_DURABLE_STREAM_CHUNKS, MAX_PAGE_SIZE, MAX_SQL_ROWS, type MaskColumnMetadata, type MaskPoliciesResult, type MaterializeResult, type MigrationDirection, type MigrationRunResult, type MigrationStatus, type MigrationStatusRow, type MutationDelta, type NestedWith, NotFoundError, NotUniqueError, type OnDeleteActionLike, type OrderByClause, type OrderByInput, type OrderKey, type OrderKeyConstraints, OwnerRelay, type OwnerRelayFrame, type PaginationOptions, type PitrBookmarkResult, type PitrRestoreArgs, type PitrRestoreResult, type PitrStorage, type PokeFrameMeta, type PromotionState, type PromotionThresholds, QUEUE_TABLE, type QueryArgs, type QueryPage, type QueueMessageOutcome, type QueueMessageRow, type QueueMetadata, type QueuesResult, RANK_TIEBREAK, REACTOR_STATE_TABLE, RELATED_DEFAULT_LIMIT, RELATED_DEPTH_DECAY, RELATED_MAX_DEPTH, RELATED_MAX_LIMIT, RELATION_EXISTS_KEY, RELATION_FUNCTION_PREFIX, REPROJECTION_MIGRATION_PREFIX, RLS_UNWRAP_SYMBOL, type RankBeforeOptions, type RankBeforeResult, type RankDirection, type RankIndexDefinitionLike, type RankOptions, type RankPage, type RankPageComputation, type RankPageDeps, type RankPageOptions, type RankPageRow, type RankPageRowKey, type RankResult, type RankSortKeyLike, ReactiveCache, type ReactiveCacheOptions, type ReactorDispatchResult, type ReactorMetadata, type ReactorState, type ReactorStats, type ReactorsResult, type ReadFootprint, type ReadHook, type ReadTablePageOptions, type RecordMailInput, type RecordQueueMessageInput, type RelatedDirection, type RelatedNode, type RelatedOptions, type RelatedPage, type RelatedStart, type RelatedStartReference, type RelationDefinitionLike, type RelationEdge, type RelationExistsMarker, type RelationGraphReader, type RelayAttach, type RelayDetach, type RelayFrame, type RelayHost, RelayMember, type RelayPokeDelivery, type RelayShapePoke, type RelayShapeSeed, type RelayShapeSubscribe, type RelayShapeUnsubscribe, type RenderedSql, type ReplicaFollowerHost, type ReplicaOwnerHost, type ReplicaReadiness, type ResolveRelationPredicatesOptions, type ResolveWithOptions, type ResolveWithResult, type ResolvedShape, type RestrictableQueryOptions, type RlsPoliciesResult, type RlsPolicyMetadata, RlsRequiredError, type RlsRoleMetadata, type RpcRequest, type RunDataMigrationOptions, type RunTriggersOptions, SCAN_DEP, SCHEDULE_OUTBOX_TABLE, SCHEMA_HISTORY_MAX_VERSIONS, SEARCH_STATE_TABLE, SHAPE_POKE_CURSOR_TABLE, type SchedulableWorkflowReferenceLike, type ScheduleOutbox, type ScheduleOutboxEnvelope, type ScheduleOutboxRow, type ScheduledFunctionDoc, type SchedulerLike, type SchemaLike, type ScoredDocument, type SearchBackfillProgress, type SearchFilterBuilderLike, type SearchIndexDefinitionLike, type SearchScoredDocument, type SelectMatchingIdsOptions, type ServerDefaultContextLike, type SettingEntry, type SettingKind, type SettingsResult, ShapeDiffCache, type ShapePokeCursorRow, type ShapePokePart, type ShapeProbeCounters, type ShapeRow, type ShapeRowOp, type ShapeSubscriptionQuery, type ShardRankPageResult, ShardRunner, type ShardRunnerOptions, type ShardSiblingHost, type ShardSocketLike, type SocketAttachment, type SortDirection, type SourceClientLike, type SourceCursorLike, type SourceRefresh, type SqlConsoleResult, type SqlCursor, type SqlEngine, type SqlExec, type SqlLintResult, type StorageMetadata, type StorageReference, type StorageReferenceResult, type StorageRuleMetadata, type StorageRulesResult, type StudioFeaturesResult, type SubscriptionConnection, type SubscriptionEnvelope, type SubscriptionIdentity, type SubscriptionInfo, type SubscriptionQuery, type SubscriptionReadFootprint, type SubscriptionsResult, type SystemDatabaseReader, type SystemDoc, type SystemQuery, type SystemReaderOptions, type SystemReaderSchedulerLike, type SystemReaderStorageLike, type SystemTableName, type TableColumnsResult, type TableDefinitionLike, type TableIndexInfo, type TableIndexesResult, type TableInfo, type TablePage, type TableReaderLike, type TablesColumnsResult, type TablesIndexesResult, type TransactionHeadroom, TransactionHeadroomTracker, type TransactionLimits, type TransactionSqlLike, type TriggerContextLike, type TriggerDefinitionLike, type TriggerEventLike, type TriggerOpLike, type TriggerTimingLike, type TtlSweepSpec, UNVOUCHABLE_DEP, VECTOR_BACKFILL_MAX_PAGES, type ValidatorLike, type VectorBackfillProgress, WORKERD_SQLITE_LIMITS, type WhereFilter, type WhereInput, type WhereSqlStrategy, type WithInput, type WorkflowInstanceState, type WorkflowInstanceStatusResult, type WorkflowMetadata, type WorkflowsResult, type WriteEvent, type WriteHook, advanceClientWatermark, aggUpsertSql, aggregateSqlFunction, aggregateTableName, allocateCommitSeq, appendAuditEntry, appendCdcChange, appendStreamChunk, applyCdcChanges, applyOnDelete, applySelect, archiveCdcSegment, armRestore, assertFlatPredicate, assertNoExplicitUndefined, assertReadonly, assertShapeShardable, assertValidClientId, awaitWsDrain, backfillAggregateIndexes, backfillRankIndexes, backfillSearchIndexes, backfillSearchIndexesForTable, backfillVectorIndexes, bigintSqlKey, boundingBoxCenter, boundingBoxGeohashes, buildIndexRange, buildPokeFrames, buildReprojectionMigration, buildSeekBeforeWhere, buildSeekWhere, buildSettings, buildShapeDiff, bumpCdcEpoch, cdcArchiveRewound, cdcCanVouchFor, cdcForkedError, cdcSeqLeavingRows, cdcTouchesTables, cdcTrimmedError, claimStreamRun, clampPromotionThresholds, clearCapturedMail, clearMemoryTables, clearQueueMessages, coerceAggregateNumber, compactCdcDocs, compileWhereSql, computeRankPage, containsRelationPredicate, countLegacyRows, coveringGeohashes, createCompanionSync, createDependencyTracker, createFanoutCounters, createGlobalPollCounters, createIndexSql, createReadFootprint, createRelayLink, createReplicaLink, createShapeDiffCache, createShapeProbeCounters, createShardCtxDb, createSystemReader, cursorBelowRetainedFloor, decideDurableAttach, decodeBigintSqlKey, decodeCursor, decodeFloat64SqlKey, deferScheduleOutbox, deleteGlobalShapeSnapshot, deleteGlobalShapeSnapshotsForConnection, deleteShapePokeCursor, deleteShapePokeCursorsForConnection, deleteStreamRun, depKey, deriveRelationEdges, diffExternalSource, diffGlobalMembership, distinctValues, encodeAggregateKey, encodeCursor, encodeGeohash, encodePartitionKey, encodeRowsPatch, ensureAuditTable, ensureMailTable, envOptionalPositiveInt, envPositiveInt, equalityPinnedFields, exportShardRows, facetColumn, fanOutScalarCounts, findRelated, findStorageReferences, finishStreamRun, float64SqlKey, foldAggregateTally, forgetScheduleOutbox, ftsCompanionDdl, ftsPurgeDocument, ftsRowidMapName, ftsUnmappedPage, ftsWriteDocument, gateReplicaDispatch, geoTableName, globalShapeReadKey, groupUnmappedRows, guardWriter, handleReplicaControl, hasTrigger, haversineMeters, importShardRows, indexKeysForRow, isDevEnvironment, isFtsAvailable, isLossyBody, isMemoryTable, isPushableWhere, isRelationPredicate, isSoftDeleted, isSourceDue, jsonPath, jsonPathSql, keysTouchRanges, liftSourceId, lintReadonlySql, listReactorStates, listTables, literalInList, markUnvouchableReads, matchesRankStaticWhere, matchesStaticWhere, materializeExternalRows, materializeExternalRowsIncremental, memoryTableNames, mergeChangedKeys, mergeWhere, migrateCdcLog, migrateCdcMeta, migrateClientWatermark, migrateCommitSeq, migrateDurableStreams, migrateGlobalShapeSnapshot, migrateIdempotency, migrateReactorState, migrateScheduleOutbox, migrateSearchState, migrateShapePokeCursor, minCdcReplayableSeq, minCdcSeq, minShapePokeCursor, nextPromotionState, normalizeCountArgument, normalizeIdStructurally, normalizeOrderKeys, normalizeSourceDocument, normalizeSourceValue, param, parkScheduleOutbox, parseExportShardArgs, parseImportShardArgs, planAggregateLookup, pointInBoundingBox, probeScheduleOutbox, projectColumns, pullExternalSourceIncrementalTick, pullExternalSourceTick, qualifiedJsonPath, qualifiedJsonPathSql, quoteIdentifier, rankKeyFromDocument as rankKeyFromDoc, rankPivotConditionSql, rankTableName, reactiveCacheKey, reactorNeedsRun, readAggregateValue, readArchivedCdcChanges, readAuditLog, readBookmark, readCapturedMail, readCdcArchivedThrough, readCdcChangeKeys, readCdcChanges, readCdcCursor, readCdcEpoch, readClientWatermark, readCommitSeq, readDeployInfo, readDueScheduleOutbox, readExternalSourceBaseline, readGlobalShapeSnapshot, readIdempotent, readMigrationStatus, readQueueMessageById, readQueueMessages, readReactorState, readSchemaHistory, readSchemaVersion, readSearchBackfillState, readShapePokeCursor, readStreamChunks, readStreamRun, readTablePage, recordCapturedMail, recordChangedKeys, recordFanoutPass, recordGlobalPollPass, recordQueueMessages, recordScheduleOutbox, recordSchemaVersion, recordShapeProbePass, relationHooks, relayCountFor, renderSql, reprojectableFields, reprojectionMigrationId, reprojectionTables, resolveRankPartition, resolveRankSeekTuple, resolveRelationPredicates, resolveWith, rowToDocument, runDataMigration, runDrizzle, runExternalSourceTick, runReadonlySql, runRowValidators, runShardMigrations, runSocketPool, runSql, runTriggers, selectExpiredIds, selectExportTables, selectIndexForAggregate, selectIndexForCount, selectIndexForGroupBy, selectMatchingIds, selectShapeMembers, selectShapeRows, serializeSqlValue, shapeRoutingKey, softDeleteScope, sortColumnName, sqliteInList, stableStringify, stableWireKey, stripReservedPatchFields, subscriptionFrames, subscriptionListDeltas, summarizeFanoutTopics, summarizeSubscriptions, tableColumns, tableFromDepKey, throwingScheduler, tiebreakDirectionFor, trimCdcChanges, trimIdempotent, trimScheduleOutbox, trimStreamRuns, tryRowToDocument, trySendFrame, unionAll, uniqueIndexFields, validateImportRow, whereFilter, whereOfFilter, writeCdcArchivedThrough, writeGlobalShapeSnapshot, writeIdempotent, writeReactorState, writeSearchBackfillState, writeShapePokeCursor, writeShapePokeCursors, writeTouchesMemo };