@lunora/shard-engine 1.0.0-alpha.6 → 1.0.0-alpha.60

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 (152) hide show
  1. package/README.md +1 -1
  2. package/dist/conformance/index.mjs +1 -1
  3. package/dist/index.d.mts +421 -53
  4. package/dist/index.d.ts +421 -53
  5. package/dist/index.mjs +1 -1
  6. package/dist/packem_shared/ADMIN_FUNCTIONS-CkHqihb_.mjs +1 -0
  7. package/dist/packem_shared/AGGREGATE_SQL_FUNCTION-DDEoMnJR.mjs +1 -0
  8. package/dist/packem_shared/AGG_COUNT-ZuAKCecq.mjs +1 -0
  9. package/dist/packem_shared/AUDIT_LOG_TABLE-ONxmEAIz.mjs +8 -0
  10. package/dist/packem_shared/BIGINT_KEY_DIGITS-DIS6kqPO.mjs +1 -0
  11. package/dist/packem_shared/CDC_LOG_TABLE-B-SKH98h.mjs +15 -0
  12. package/dist/packem_shared/CLIENT_WATERMARK_TABLE-CRnrAnJ2.mjs +7 -0
  13. package/dist/packem_shared/COMMIT_SEQ_FIELD-BUdOMG5y.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-BNMWxRzv.mjs +31 -0
  17. package/dist/packem_shared/DEFAULT_MAX_RELATION_KEYS-XESc7TiB.mjs +1 -0
  18. package/dist/packem_shared/DEFAULT_MAX_RELAYS-DDOVsK5A.mjs +8 -0
  19. package/dist/packem_shared/DEFAULT_PROMOTION_THRESHOLDS-Bfx7KakS.mjs +1 -0
  20. package/dist/packem_shared/DEFAULT_TRANSACTION_LIMITS-UeeQm79B.mjs +1 -0
  21. package/dist/packem_shared/DurableStreamRunner-rTYp4v03.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-DSA6mzyx.mjs +7 -0
  24. package/dist/packem_shared/GlobalPollTick-BNK4o-XT.mjs +1 -0
  25. package/dist/packem_shared/IDEMPOTENCY_TABLE-DOpm_oMF.mjs +7 -0
  26. package/dist/packem_shared/MAIL_RETENTION-DGAQTHHs.mjs +18 -0
  27. package/dist/packem_shared/MAX_SQL_ROWS-RvXZ7S7f.mjs +4 -0
  28. package/dist/packem_shared/MAX_TOKEN_LENGTH-BakL9FUy-B3VwYY8C.mjs +1 -0
  29. package/dist/packem_shared/NotUniqueError-BO_Arsyi.mjs +1 -0
  30. package/dist/packem_shared/QUEUE_TABLE-s7QJZvBz.mjs +17 -0
  31. package/dist/packem_shared/RANK_TIEBREAK-3pXm7Ng_.mjs +1 -0
  32. package/dist/packem_shared/REACTOR_STATE_TABLE-QPRFyxMS.mjs +28 -0
  33. package/dist/packem_shared/RELATION_EXISTS_KEY-CFUhnZSZ.mjs +1 -0
  34. package/dist/packem_shared/REPROJECTION_MIGRATION_PREFIX-Czcb6_mO.mjs +1 -0
  35. package/dist/packem_shared/RLS_UNWRAP_SYMBOL-BF5gi64E.mjs +1 -0
  36. package/dist/packem_shared/ReactiveCache-D9NC5C9j.mjs +1 -0
  37. package/dist/packem_shared/SCAN_DEP-D7qE3iUe.mjs +1 -0
  38. package/dist/packem_shared/SCHEMA_HISTORY_MAX_VERSIONS-BluIj2s-.mjs +6 -0
  39. package/dist/packem_shared/SEARCH_STATE_TABLE-D5mnK5kX.mjs +1 -0
  40. package/dist/packem_shared/SHAPE_POKE_CURSOR_TABLE-ByJVDHds.mjs +8 -0
  41. package/dist/packem_shared/ShapeDiffCache-gdaILV5E.mjs +1 -0
  42. package/dist/packem_shared/ShardRunner-C9p5DVOx.mjs +1 -0
  43. package/dist/packem_shared/UNVOUCHABLE_DEP-C68htACn.mjs +1 -0
  44. package/dist/packem_shared/aggregateTableName-C7o-gpms.mjs +1 -0
  45. package/dist/packem_shared/appendStreamChunk-C1Ok4b6J.mjs +19 -0
  46. package/dist/packem_shared/applyOnDelete-7JZ4vR9r.mjs +1 -0
  47. package/dist/packem_shared/archiveCdcSegment-DU4uzDFQ.mjs +4 -0
  48. package/dist/packem_shared/{armRestore-BNzdvQ_o.mjs → armRestore-Bu1_8SUa.mjs} +1 -1
  49. package/dist/packem_shared/awaitWsDrain-apizgmKY.mjs +1 -0
  50. package/dist/packem_shared/backfillAggregateIndexes-BXftO36q.mjs +1 -0
  51. package/dist/packem_shared/base64-DfpzS4o_.mjs +1 -0
  52. package/dist/packem_shared/buildIndexRange-CBKQmHSS.mjs +1 -0
  53. package/dist/packem_shared/buildPokeFrames-BBE6J91z.mjs +1 -0
  54. package/dist/packem_shared/buildReprojectionMigration-Cmo0g3p3.mjs +1 -0
  55. package/dist/packem_shared/buildSettings-B4igo4rJ.mjs +1 -0
  56. package/dist/packem_shared/buildShapeDiff-IXpIxdnF.mjs +1 -0
  57. package/dist/packem_shared/clearMemoryTables-BGbmag2i.mjs +1 -0
  58. package/dist/packem_shared/compileWhereSql-B8tS0_nD.mjs +1 -0
  59. package/dist/packem_shared/computeRankPage-BvVrHUOx.mjs +1 -0
  60. package/dist/packem_shared/createCompanionSync-CfuiObtd.mjs +1 -0
  61. package/dist/packem_shared/createReplicaLink-BPmCx8rV.mjs +7 -0
  62. package/dist/packem_shared/createSystemReader-DcDLFfC-.mjs +1 -0
  63. package/dist/packem_shared/ctx-db-companions-kHoblDbS.mjs +1 -0
  64. package/dist/packem_shared/ctx-db-relay-shapes-Bg5YYnmN.mjs +17 -0
  65. package/dist/packem_shared/ctx-db-search-state-ruTuCsxa.mjs +1 -0
  66. package/dist/packem_shared/defineEngineContractSuite-J4VL-C0q.mjs +1 -0
  67. package/dist/packem_shared/diffExternalSource-DgDJhslq.mjs +1 -0
  68. package/dist/packem_shared/do-sql-ByyZb9U0.mjs +1 -0
  69. package/dist/packem_shared/envOptionalPositiveInt-D2pY-c64.mjs +1 -0
  70. package/dist/packem_shared/estimate-bytes-DCVD8-i6.mjs +1 -0
  71. package/dist/packem_shared/exportShardRows-D_upYHRQ.mjs +1 -0
  72. package/dist/packem_shared/hasTrigger-CjlwI4le.mjs +1 -0
  73. package/dist/packem_shared/isSoftDeleted-BlFMzng2.mjs +9 -0
  74. package/dist/packem_shared/liftSourceId-CA3ENhXj.mjs +1 -0
  75. package/dist/packem_shared/materializeExternalRows-CFE0QRYx.mjs +1 -0
  76. package/dist/packem_shared/mergeChangedKeys-D1T-TPUb.mjs +1 -0
  77. package/dist/packem_shared/param-DlozcSQu.mjs +1 -0
  78. package/dist/packem_shared/quoteIdentifier-CObIFRhb.mjs +1 -0
  79. package/dist/packem_shared/runDrizzle-2ULFQR_k.mjs +1 -0
  80. package/dist/packem_shared/runShardMigrations-BvgoGgwG.mjs +5 -0
  81. package/dist/packem_shared/runSocketPool-CZJ2X9cF.mjs +1 -0
  82. package/dist/packem_shared/selectExpiredIds-D-W5WEPH.mjs +1 -0
  83. package/dist/packem_shared/selectShapeMembers-OatGcYrk.mjs +1 -0
  84. package/dist/packem_shared/serializeSqlValue-xohfS85H.mjs +1 -0
  85. package/dist/packem_shared/sibling-channel-BkL5cTCc.mjs +1 -0
  86. package/dist/packem_shared/sql-projection-DML1_ex4.mjs +1 -0
  87. package/dist/packem_shared/stableStringify-DibjylKD.mjs +1 -0
  88. package/dist/packem_shared/stableWireKey-D2US4k_J.mjs +1 -0
  89. package/dist/packem_shared/where-sql-x1YKldcq.mjs +1 -0
  90. package/dist/packem_shared/wire-codec-C-FpWm52.mjs +1 -0
  91. package/package.json +3 -3
  92. package/dist/packem_shared/ADMIN_FUNCTIONS-vj2G8OR6.mjs +0 -1
  93. package/dist/packem_shared/AGGREGATE_SQL_FUNCTION-QYaiuty4.mjs +0 -1
  94. package/dist/packem_shared/AGG_COUNT-BWXe3gtQ.mjs +0 -1
  95. package/dist/packem_shared/AUDIT_LOG_TABLE-CaA0jL0L.mjs +0 -8
  96. package/dist/packem_shared/CDC_LOG_TABLE-BnqlH2eZ.mjs +0 -8
  97. package/dist/packem_shared/CLIENT_WATERMARK_TABLE-CXsSLU8D.mjs +0 -7
  98. package/dist/packem_shared/CountRlsUnsupportedError-B2WKJD9v.mjs +0 -1
  99. package/dist/packem_shared/DATA_MIGRATION_STATE_TABLE-BZMVrLcy.mjs +0 -31
  100. package/dist/packem_shared/DEFAULT_MAX_RELATION_KEYS-bq00btqV.mjs +0 -1
  101. package/dist/packem_shared/DEFAULT_MAX_RELAYS-D0oc40p6.mjs +0 -1
  102. package/dist/packem_shared/DEFAULT_PROMOTION_THRESHOLDS-Dteg0sZF.mjs +0 -1
  103. package/dist/packem_shared/DEFAULT_TRANSACTION_LIMITS-BH5q0Ror.mjs +0 -1
  104. package/dist/packem_shared/FTS_COUNT_COLUMN-D1gY3wwZ-CZHdaRrd.mjs +0 -1
  105. package/dist/packem_shared/GEO_DEFAULT_PRECISION-okRCkZ6r.mjs +0 -1
  106. package/dist/packem_shared/GLOBAL_SHAPE_SNAPSHOT_TABLE-DX-6-gBP.mjs +0 -7
  107. package/dist/packem_shared/IDEMPOTENCY_TABLE-DjkEMp6w.mjs +0 -7
  108. package/dist/packem_shared/MAIL_RETENTION-KmozO2NQ.mjs +0 -18
  109. package/dist/packem_shared/MAX_SQL_ROWS-nMwkxv5f.mjs +0 -2
  110. package/dist/packem_shared/NotUniqueError-Qrtwm7S6.mjs +0 -1
  111. package/dist/packem_shared/QUEUE_TABLE-DYCDvzTG.mjs +0 -17
  112. package/dist/packem_shared/RANK_TIEBREAK-9NU5s_mi.mjs +0 -1
  113. package/dist/packem_shared/RELATION_EXISTS_KEY-BaqSIFU1.mjs +0 -1
  114. package/dist/packem_shared/RLS_UNWRAP_SYMBOL-CBYPlYBb.mjs +0 -1
  115. package/dist/packem_shared/ReactiveCache-C6QAa7MG.mjs +0 -1
  116. package/dist/packem_shared/SCAN_DEP-D_yR9EeV.mjs +0 -1
  117. package/dist/packem_shared/SCHEMA_HISTORY_MAX_VERSIONS-CHXz6p_z.mjs +0 -6
  118. package/dist/packem_shared/SEARCH_STATE_TABLE-eLN8U5tz.mjs +0 -1
  119. package/dist/packem_shared/ShardRunner-DIqVdWtk.mjs +0 -1
  120. package/dist/packem_shared/aggregateTableName-G-eXyjcz.mjs +0 -1
  121. package/dist/packem_shared/applyOnDelete-uFRC5p1d.mjs +0 -1
  122. package/dist/packem_shared/applySelect-B0CF8T7y.mjs +0 -1
  123. package/dist/packem_shared/awaitWsDrain-CCZ-8wjm.mjs +0 -1
  124. package/dist/packem_shared/backfillAggregateIndexes-BHiewuB-.mjs +0 -1
  125. package/dist/packem_shared/buildIndexRange-DFsdtPjD.mjs +0 -1
  126. package/dist/packem_shared/buildPokeFrames-DaPpm5Ss.mjs +0 -1
  127. package/dist/packem_shared/buildSettings-DT18_DkX.mjs +0 -1
  128. package/dist/packem_shared/compileWhereSql-BLcfs4QW.mjs +0 -1
  129. package/dist/packem_shared/computeRankPage-IUSS-zIB.mjs +0 -1
  130. package/dist/packem_shared/createCompanionSync-DWK0Vlg1.mjs +0 -1
  131. package/dist/packem_shared/createReadFootprint-DIrrxRTE.mjs +0 -1
  132. package/dist/packem_shared/createSystemReader-DcDcrtM3.mjs +0 -1
  133. package/dist/packem_shared/defineEngineContractSuite-1f7OcQND.mjs +0 -1
  134. package/dist/packem_shared/diffExternalSource-DMpkJta1.mjs +0 -1
  135. package/dist/packem_shared/estimate-bytes-DwQON1Ky.mjs +0 -1
  136. package/dist/packem_shared/exportShardRows-kt42wijd.mjs +0 -1
  137. package/dist/packem_shared/hasTrigger-CbkOHExZ.mjs +0 -1
  138. package/dist/packem_shared/isSoftDeleted-B-SXkGUo.mjs +0 -9
  139. package/dist/packem_shared/liftSourceId-DApAbu7Q.mjs +0 -1
  140. package/dist/packem_shared/materializeExternalRows-DOQJV9p2.mjs +0 -1
  141. package/dist/packem_shared/mergeChangedKeys-BXtUgIPW.mjs +0 -1
  142. package/dist/packem_shared/param-B5lF5Jd9.mjs +0 -1
  143. package/dist/packem_shared/quote-identifier-CGiYFBvY.mjs +0 -1
  144. package/dist/packem_shared/runDrizzle-GKR3y97k.mjs +0 -1
  145. package/dist/packem_shared/runShardMigrations-CPxqCh3O.mjs +0 -5
  146. package/dist/packem_shared/runSocketPool-DPQLVyWF.mjs +0 -1
  147. package/dist/packem_shared/selectExpiredIds-FzhIEeG1.mjs +0 -1
  148. package/dist/packem_shared/selectShapeMemberIds-DvE7K6zG.mjs +0 -1
  149. package/dist/packem_shared/serializeSqlValue-DnpyaLcw.mjs +0 -1
  150. package/dist/packem_shared/stableStringify-BjLh4gvA.mjs +0 -1
  151. package/dist/packem_shared/stableWireKey-YEHLaX6X.mjs +0 -1
  152. package/dist/packem_shared/wire-codec-Ctnni0h6.mjs +0 -1
package/dist/index.d.mts 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;
@@ -180,9 +182,11 @@ interface SchemaLike {
180
182
  }
181
183
  interface TableDefinitionLike {
182
184
  readonly aggregateIndexes?: ReadonlyArray<AggregateIndexDefinitionLike>;
185
+ readonly commitOrderedMode?: boolean;
183
186
  readonly geoIndexes?: ReadonlyArray<GeoIndexDefinitionLike>;
184
187
  readonly indexes: ReadonlyArray<IndexDefinitionLike>;
185
188
  readonly isPublic?: boolean;
189
+ readonly memoryMode?: boolean;
186
190
  readonly rankIndexes?: ReadonlyArray<RankIndexDefinitionLike>;
187
191
  readonly relationMap?: Record<string, RelationDefinitionLike>;
188
192
  readonly searchIndexes?: ReadonlyArray<SearchIndexDefinitionLike>;
@@ -225,11 +229,16 @@ interface ApplyOnDeleteOptions$1 {
225
229
  row: Record<string, unknown>;
226
230
  tableName: string;
227
231
  }
232
+ interface FanOutBudget {
233
+ remaining: number;
234
+ }
228
235
  interface ResolveWithOptions {
236
+ fanOutBudget?: FanOutBudget;
229
237
  fetcher: (tableName: string, args: QueryArgs) => Promise<QueryPage>;
230
238
  groupedCounter: (tableName: string, whereField: string, values: unknown[], policyWhere?: WhereInput) => Promise<Map<unknown, number>>;
231
239
  parents: Record<string, unknown>[];
232
240
  relationBaseWhere?: (table: string) => undefined | WhereInput;
241
+ relationMask?: RelationMask;
233
242
  schema: {
234
243
  readonly tables: Record<string, TableDefinitionLike>;
235
244
  };
@@ -248,13 +257,22 @@ interface QueryArgs {
248
257
  cursor?: null | string;
249
258
  includeDeleted?: boolean;
250
259
  limit?: number;
260
+ omitContinueCursor?: boolean;
251
261
  orderBy?: OrderByInput[];
252
262
  relationBaseWhere?: (table: string) => undefined | WhereInput;
263
+ relationMask?: RelationMask;
253
264
  restrictsCounts?: boolean;
254
265
  select?: ReadonlyArray<string>;
255
266
  where?: WhereInput;
256
267
  with?: WithInput;
257
268
  }
269
+ interface CrossShardReadArgs {
270
+ orderBy?: OrderByInput[];
271
+ relationPolicies?: Record<string, WhereInput>;
272
+ where?: WhereInput;
273
+ with?: WithInput;
274
+ }
275
+ type RelationMask = (table: string, rows: Record<string, unknown>[]) => Record<string, unknown>[];
258
276
  interface QueryPage {
259
277
  continueCursor: null | string;
260
278
  isDone: boolean;
@@ -264,6 +282,7 @@ interface QueryPage {
264
282
  interface OrderKey {
265
283
  direction: SortDirection;
266
284
  field: string;
285
+ nullable: boolean;
267
286
  }
268
287
  interface RestrictableQueryOptions {
269
288
  baseWhere?: WhereInput;
@@ -414,6 +433,13 @@ interface MutationDelta {
414
433
  interface DatabaseWriterLike {
415
434
  aggregate: (tableName: string, options: AggregateOptions) => Promise<AggregateResult>;
416
435
  asId?: (tableName: string, id: string) => string;
436
+ cdcChangedTables?: (sinceSeq: number, options?: {
437
+ cursorOnly?: boolean;
438
+ }) => Promise<{
439
+ cursor: number;
440
+ floor?: number;
441
+ tables: string[];
442
+ } | undefined>;
417
443
  count: (tableName: string, where?: RestrictableQueryOptions | WhereInput) => Promise<number>;
418
444
  delete: (id: string, expectedTable?: string, options?: {
419
445
  hard?: boolean;
@@ -516,7 +542,6 @@ interface ImportShardResult {
516
542
  inserted: Record<string, number>;
517
543
  }
518
544
  declare const selectExportTables: (schema: SchemaLike, requested?: ReadonlyArray<string>) => string[];
519
- declare const exportShardTable: (writer: DatabaseWriterLike, table: string, batchSize?: number) => AsyncGenerator<ExportRow, void, undefined>;
520
545
  declare const exportShardRows: (writer: DatabaseWriterLike, schema: SchemaLike, args: ExportShardArgs) => AsyncGenerator<ExportRow, void, undefined>;
521
546
  declare const validateImportRow: (schema: SchemaLike, table: string, record: Record<string, unknown>) => string | undefined;
522
547
  declare const importShardRows: (writer: DatabaseWriterLike, schema: SchemaLike, args: ImportShardArgs) => Promise<ImportShardResult>;
@@ -591,6 +616,7 @@ declare class ReactiveCache {
591
616
  private readonly maxBytes;
592
617
  private readonly now;
593
618
  private monotonic;
619
+ private generation;
594
620
  constructor(options?: ReactiveCacheOptions);
595
621
  run<R>(key: string, deps: Set<string>, run: () => Promise<R>, ranges?: () => ReadonlyArray<KeyRange>): Promise<R>;
596
622
  invalidate(table: string, id: string, indexKeys?: ReadonlyArray<IndexKeyEntry>): string[];
@@ -612,6 +638,7 @@ declare class ReactiveCache {
612
638
  };
613
639
  private dropRangeDeps;
614
640
  private collectAndDrop;
641
+ private dropKeys;
615
642
  private dropEntry;
616
643
  private evict;
617
644
  }
@@ -650,12 +677,18 @@ interface RunTriggersOptions {
650
677
  }
651
678
  declare const runTriggers: (options: RunTriggersOptions) => Promise<void>;
652
679
  declare const hasTrigger: (schema: SchemaLike, tableName: string, op: TriggerOpLike) => boolean;
680
+ interface SearchBackfillProgress {
681
+ done: boolean;
682
+ pages: number;
683
+ }
653
684
  declare const backfillAggregateIndexes: (sql: SqlExec, schema: SchemaLike) => void;
654
685
  declare const backfillRankIndexes: (sql: SqlExec, schema: SchemaLike) => void;
655
686
  declare const backfillSearchIndexesForTable: (sql: SqlExec, tableName: string, definition: {
656
687
  searchIndexes?: ReadonlyArray<SearchIndexDefinitionLike>;
657
688
  }) => void;
658
- declare const backfillSearchIndexes: (sql: SqlExec, schema: SchemaLike) => void;
689
+ declare const backfillSearchIndexes: (sql: SqlExec, schema: SchemaLike, options?: {
690
+ maxPages?: number;
691
+ }) => SearchBackfillProgress;
659
692
  declare const CDC_LOG_TABLE = "__cdc_log";
660
693
  interface CdcChange {
661
694
  doc?: Record<string, unknown>;
@@ -665,19 +698,32 @@ interface CdcChange {
665
698
  table: string;
666
699
  ts: number;
667
700
  }
701
+ declare const CDC_LOG_TABLE_SEQ_INDEX = "__cdc_log_table_seq";
668
702
  declare const migrateCdcLog: (sql: SqlExec) => void;
669
703
  declare const appendCdcChange: (sql: SqlExec, ts: number, table: string, id: string, op: CdcChange["op"], doc: Record<string, unknown> | undefined) => void;
670
704
  declare const readCdcChanges: (sql: SqlExec, options?: {
671
705
  limit?: number;
672
706
  sinceSeq?: number;
673
- tables?: ReadonlySet<string>;
674
707
  }) => {
675
708
  changes: CdcChange[];
676
709
  cursor: number;
677
710
  };
678
- declare const trimCdcChanges: (sql: SqlExec, throughSeq: number) => void;
711
+ declare const cdcTouchesTables: (sql: SqlExec, sinceSeq: number, tables: ReadonlySet<string>) => boolean;
712
+ declare const cdcCanVouchFor: (sql: SqlExec, deps: ReadonlySet<string>) => boolean;
713
+ interface CdcChangeKey {
714
+ id: string;
715
+ op: CdcChange["op"];
716
+ seq: number;
717
+ }
718
+ declare const readCdcChangeKeys: (sql: SqlExec, table: string, sinceSeq: number, upTo: number) => CdcChangeKey[];
719
+ declare const trimCdcChanges: (sql: SqlExec, throughSeq: number, maxRows: number) => void;
720
+ declare const compactCdcDocs: (sql: SqlExec, throughSeq: number, maxRows: number) => void;
721
+ declare const cdcSeqLeavingRows: (sql: SqlExec, keep: number) => number | undefined;
679
722
  declare const readCdcCursor: (sql: SqlExec) => number;
723
+ declare const cursorBelowRetainedFloor: (floor: number | undefined, sinceSeq: number) => boolean;
724
+ declare const cdcTrimmedError: (floor: number, sinceSeq: number, scope: "global" | "shard") => LunoraError;
680
725
  declare const minCdcSeq: (sql: SqlExec) => number | undefined;
726
+ declare const minCdcReplayableSeq: (sql: SqlExec) => number | undefined;
681
727
  declare const CDC_META_TABLE = "__cdc_meta";
682
728
  declare const migrateCdcMeta: (sql: SqlExec) => void;
683
729
  declare const readCdcEpoch: (sql: SqlExec) => string;
@@ -689,7 +735,7 @@ declare const readClientWatermark: (sql: SqlExec, identity: string, clientId: st
689
735
  declare const advanceClientWatermark: (sql: SqlExec, identity: string, clientId: string, mutationId: number) => void;
690
736
  declare const GLOBAL_SHAPE_SNAPSHOT_TABLE = "__global_shape_snapshot";
691
737
  declare const migrateGlobalShapeSnapshot: (sql: SqlExec) => void;
692
- declare const readGlobalShapeSnapshot: (sql: SqlExec, connectionId: string, subId: string) => Map<string, string>;
738
+ declare const readGlobalShapeSnapshot: (sql: SqlExec, connectionId: string, subId: string) => Map<string, string> | undefined;
693
739
  declare const writeGlobalShapeSnapshot: (sql: SqlExec, connectionId: string, subId: string, snapshot: Map<string, string>) => void;
694
740
  declare const deleteGlobalShapeSnapshot: (sql: SqlExec, connectionId: string, subId: string) => void;
695
741
  declare const deleteGlobalShapeSnapshotsForConnection: (sql: SqlExec, connectionId: string) => void;
@@ -709,21 +755,6 @@ declare const runShardMigrations: (sql: SqlExec, schema: SchemaLike, options?: {
709
755
  json: string;
710
756
  };
711
757
  }) => 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
758
  /**
728
759
  * How far a companion's backfill has progressed, and under which analysis.
729
760
  * Declared here rather than beside either engine's state table: both record the
@@ -747,7 +778,7 @@ interface ShapeRow {
747
778
  id: string;
748
779
  }
749
780
  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>;
781
+ declare const selectShapeMembers: (sql: SqlExec, table: string, effectiveWhere: WhereInput | undefined, ids: ReadonlyArray<string>) => Map<string, Record<string, unknown>>;
751
782
  interface SqlExec {
752
783
  exec: <Row = Record<string, unknown>>(sql: string, ...params: unknown[]) => SqlCursor<Row>;
753
784
  }
@@ -776,6 +807,7 @@ interface CtxDbOptions {
776
807
  globalDb?: DatabaseWriterLike;
777
808
  headroom?: TransactionHeadroomTracker;
778
809
  idGenerator?: IdGenerator;
810
+ inTransaction?: () => boolean;
779
811
  maxRelationKeys?: number;
780
812
  onIndexUse?: IndexUseHook;
781
813
  onRead?: ReadHook;
@@ -792,6 +824,7 @@ declare class NotUniqueError extends LunoraError {
792
824
  constructor(message?: string);
793
825
  }
794
826
  declare const normalizeIdStructurally: (schema: SchemaLike, tableName: string, id: string) => null | string;
827
+ declare const assertNoExplicitUndefined: (op: "patch" | "replace", document: Record<string, unknown>) => void;
795
828
  declare const createShardCtxDb: (options: CtxDbOptions) => DatabaseWriterLike;
796
829
  declare const AUDIT_LOG_TABLE = "__lunora_audit__";
797
830
  interface AuditEntry {
@@ -815,6 +848,22 @@ declare const readAuditLog: (sql: SqlExec, options?: {
815
848
  limit?: number;
816
849
  sinceSeq?: number;
817
850
  }) => AuditEntry[];
851
+ interface CdcArchiveScope {
852
+ epoch: string;
853
+ shard: string;
854
+ }
855
+ declare const readCdcArchivedThrough: (sql: SqlExec) => number;
856
+ declare const writeCdcArchivedThrough: (sql: SqlExec, seq: number) => void;
857
+ declare const archiveCdcSegment: (bucket: R2BucketLike, scope: CdcArchiveScope, changes: CdcChange[]) => Promise<void>;
858
+ declare const readArchivedCdcChanges: (bucket: R2BucketLike, scope: CdcArchiveScope, sinceSeq: number, limit: number | undefined) => Promise<{
859
+ changes: CdcChange[];
860
+ cursor: number;
861
+ } | undefined>;
862
+ declare const COMMIT_SEQ_TABLE = "__commit_seq";
863
+ declare const COMMIT_SEQ_FIELD = "_commitSeq";
864
+ declare const migrateCommitSeq: (sql: SqlExec) => void;
865
+ declare const readCommitSeq: (sql: SqlExec) => number;
866
+ declare const allocateCommitSeq: (sql: SqlExec) => number;
818
867
  interface SubscriptionQuery {
819
868
  args?: Record<string, unknown>;
820
869
  functionPath?: string;
@@ -829,9 +878,11 @@ interface ShapeSubscriptionQuery {
829
878
  sinceSeq?: number;
830
879
  }
831
880
  interface SubscriptionEnvelope {
881
+ caps?: string[];
832
882
  clientId?: string;
833
883
  context?: Record<string, unknown>;
834
884
  data?: unknown;
885
+ generation?: number;
835
886
  id: string;
836
887
  query?: SubscriptionQuery;
837
888
  shape?: {
@@ -839,6 +890,7 @@ interface SubscriptionEnvelope {
839
890
  name: string;
840
891
  };
841
892
  sinceCheckpoint?: number;
893
+ sinceChunk?: number;
842
894
  sinceEpoch?: string;
843
895
  topic?: string;
844
896
  type: "ack" | "connect" | "shape_subscribe" | "shape_unsubscribe" | "stream" | "subscribe" | "unsubscribe" | "whisper" | "whisper_subscribe" | "whisper_unsubscribe";
@@ -849,12 +901,14 @@ interface RpcRequest {
849
901
  }
850
902
  interface SocketAttachment {
851
903
  admin?: boolean;
904
+ adminBinding?: string;
852
905
  clientId?: string;
853
906
  connected?: boolean;
854
907
  connectionId?: string;
855
908
  context?: Record<string, unknown>;
856
909
  expiresAt?: number;
857
910
  identity?: Record<string, unknown>;
911
+ pageDeltas?: boolean;
858
912
  shapes?: Record<string, ShapeSubscriptionQuery>;
859
913
  subs: Record<string, SubscriptionQuery>;
860
914
  userId?: string;
@@ -900,6 +954,13 @@ interface CompanionSync {
900
954
  syncSearch: (tableName: string, id: string, document: Record<string, unknown> | undefined, previous?: Record<string, unknown>) => void;
901
955
  }
902
956
  declare const createCompanionSync: (deps: CompanionSyncDeps) => CompanionSync;
957
+ declare const isMemoryTable: (definition: TableDefinitionLike | undefined) => boolean;
958
+ declare const memoryTableNames: (schema: SchemaLike) => string[];
959
+ declare const clearMemoryTables: (sql: SqlExec, schema: SchemaLike) => number;
960
+ declare const resolveRankSeekTuple: (options: {
961
+ after?: RankPageRowKey;
962
+ cursor?: null | string;
963
+ }) => unknown[] | undefined;
903
964
  interface RankPageDeps {
904
965
  assertRankPartitionLocal: (tableName: string, definition: TableDefinitionLike, index: RankIndexDefinitionLike) => void;
905
966
  ensureRankBackfilled: (tableName: string, index: RankIndexDefinitionLike) => void;
@@ -917,8 +978,20 @@ interface RankPageComputation {
917
978
  key: RankPageRowKey;
918
979
  }[];
919
980
  }
920
- declare const hydrateDocsById: (deps: RankPageDeps, tableName: string, ids: ReadonlyArray<string>) => Map<string, Record<string, unknown>>;
921
981
  declare const computeRankPage: (deps: RankPageDeps, tableName: string, indexName: string, rankPageOptions: RankPageOptions) => RankPageComputation;
982
+ declare const SHAPE_POKE_CURSOR_TABLE = "__shape_poke_cursor";
983
+ declare const migrateShapePokeCursor: (sql: SqlExec) => void;
984
+ declare const readShapePokeCursor: (sql: SqlExec, connectionId: string, subId: string) => number | undefined;
985
+ declare const writeShapePokeCursor: (sql: SqlExec, connectionId: string, subId: string, cursor: number) => void;
986
+ interface ShapePokeCursorRow {
987
+ connectionId: string;
988
+ cursor: number;
989
+ subId: string;
990
+ }
991
+ declare const writeShapePokeCursors: (sql: SqlExec, rows: ReadonlyArray<ShapePokeCursorRow>) => void;
992
+ declare const minShapePokeCursor: (sql: SqlExec) => number | undefined;
993
+ declare const deleteShapePokeCursor: (sql: SqlExec, connectionId: string, subId: string) => void;
994
+ declare const deleteShapePokeCursorsForConnection: (sql: SqlExec, connectionId: string) => void;
922
995
  declare const DATA_MIGRATION_STATE_TABLE = "__lunora_migrations";
923
996
  type MigrationDirection = "down" | "up";
924
997
  type MigrationStatus = "completed" | "failed" | "in_progress";
@@ -982,10 +1055,10 @@ interface DependencyTracker {
982
1055
  declare const createDependencyTracker: () => DependencyTracker;
983
1056
  declare const runSql: <Row = Record<string, unknown>>(sql: SqlExec, query: string, ...params: unknown[]) => SqlCursor<Row>;
984
1057
  declare const runDrizzle: <Row = Record<string, unknown>>(exec: SqlExec, query: SQL) => SqlCursor<Row>;
1058
+ declare const quoteIdentifier: (name: string) => string;
985
1059
  declare const serializeSqlValue: (value: unknown) => unknown;
986
1060
  declare const DOC_COLUMN = "__doc__";
987
1061
  declare const geoTableName: (table: string, indexName: string) => string;
988
- declare const quoteIdentifier: (name: string) => string;
989
1062
  declare const jsonPath: (field: string) => string;
990
1063
  declare const jsonPathSql: (field: string) => SQL;
991
1064
  declare const qualifiedJsonPath: (table: string, field: string) => string;
@@ -995,7 +1068,7 @@ declare const AGG_KEY: Name;
995
1068
  declare const AGG_VALUE: Name;
996
1069
  declare const AGG_COUNT: Name;
997
1070
  declare const aggUpsertSql: (aggTable: string, key: unknown, value: unknown, count: unknown, set: SQL) => SQL;
998
- declare const tableColumns: (definition: TableDefinitionLike) => [string, ColumnMetaLike][];
1071
+ declare const tableColumns: (definition: TableDefinitionLike) => ReadonlyArray<readonly [string, ColumnMetaLike]>;
999
1072
  declare const rowToDocument: (row: Record<string, unknown> | undefined) => Record<string, unknown> | undefined;
1000
1073
  declare const tryRowToDocument: (row: Record<string, unknown> | undefined) => Record<string, unknown> | undefined;
1001
1074
  declare const isFtsAvailable: (sql: SqlExec) => boolean;
@@ -1006,6 +1079,79 @@ interface RenderedSql {
1006
1079
  }
1007
1080
  declare const renderSql: (engine: SqlEngine, query: SQL) => RenderedSql;
1008
1081
  declare const param: (value: unknown) => SQL;
1082
+ declare const unionAll: (branches: ReadonlyArray<SQL>) => SQL;
1083
+ declare const sqliteInList: (reference: SQL, items: ReadonlyArray<unknown>, negated: boolean, budget?: number) => SQL;
1084
+ type DurableStreamStatus = "complete" | "error" | "running";
1085
+ interface DurableStreamRun {
1086
+ error?: string;
1087
+ errorCode?: string;
1088
+ lastSeq: number;
1089
+ startedAt: number;
1090
+ status: DurableStreamStatus;
1091
+ }
1092
+ interface DurableStreamChunk {
1093
+ dataJson: string;
1094
+ seq: number;
1095
+ }
1096
+ declare const migrateDurableStreams: (sql: SqlExec) => void;
1097
+ declare const readStreamRun: (sql: SqlExec, runKey: string) => DurableStreamRun | undefined;
1098
+ declare const claimStreamRun: (sql: SqlExec, runKey: string, startedAt: number, ttlMs: number) => boolean;
1099
+ declare const deleteStreamRun: (sql: SqlExec, runKey: string) => void;
1100
+ declare const appendStreamChunk: (sql: SqlExec, runKey: string, seq: number, dataJson: string) => void;
1101
+ declare const readStreamChunks: (sql: SqlExec, runKey: string, sinceSeq: number) => DurableStreamChunk[];
1102
+ declare const finishStreamRun: (sql: SqlExec, runKey: string, status: "complete" | "error", lastSeq: number, failure?: {
1103
+ code: string;
1104
+ message: string;
1105
+ }) => void;
1106
+ declare const trimStreamRuns: (sql: SqlExec, now: number) => void;
1107
+ declare const MAX_DURABLE_STREAM_CHUNKS = 50000;
1108
+ declare const MAX_DURABLE_STREAM_BYTES: number;
1109
+ interface DurableStreamSink {
1110
+ readonly chunk: (chunk: {
1111
+ data: unknown;
1112
+ generation?: number;
1113
+ seq: number;
1114
+ }) => boolean;
1115
+ readonly complete: () => void;
1116
+ readonly fail: (failure: {
1117
+ code: string;
1118
+ message: string;
1119
+ }) => void;
1120
+ }
1121
+ type DurableAttachDecision = "attach" | "interrupted" | "reclaim" | "replay-terminal";
1122
+ declare const decideDurableAttach: (run: DurableStreamRun | undefined, context: {
1123
+ generation?: number;
1124
+ live?: {
1125
+ generation: number;
1126
+ };
1127
+ resuming: boolean;
1128
+ }) => DurableAttachDecision;
1129
+ interface DurableStreamAttach {
1130
+ readonly generation?: number;
1131
+ readonly iterator: (signal: AbortSignal) => AsyncIterable<unknown>;
1132
+ readonly runKey: string;
1133
+ readonly sinceChunk: number;
1134
+ readonly sink: DurableStreamSink;
1135
+ readonly ttlMs?: number;
1136
+ }
1137
+ declare class DurableStreamRunner {
1138
+ private lastTrimAt;
1139
+ private readonly runs;
1140
+ private readonly sql;
1141
+ private readonly waitUntil;
1142
+ constructor(dependencies: {
1143
+ sql: () => SqlExec;
1144
+ waitUntil?: (promise: Promise<unknown>) => void;
1145
+ });
1146
+ attach(request: DurableStreamAttach): Promise<void>;
1147
+ detach(runKey: string, sink: DurableStreamSink): void;
1148
+ isLive(runKey: string): boolean;
1149
+ private attachOrThrow;
1150
+ private produce;
1151
+ private trim;
1152
+ }
1153
+ declare const envPositiveInt: (env: unknown, key: string, fallback: number) => number;
1154
+ declare const envOptionalPositiveInt: (env: unknown, key: string) => number | undefined;
1009
1155
  interface ExternalSourceDiffResult {
1010
1156
  changes: CdcChange[];
1011
1157
  nextBaseline: Map<string, string>;
@@ -1085,6 +1231,19 @@ declare const coveringGeohashes: (center: GeoPoint, radiusMeters: number) => str
1085
1231
  declare const pointInBoundingBox: (point: GeoPoint, box: GeoBoundingBox) => boolean;
1086
1232
  declare const boundingBoxCenter: (box: GeoBoundingBox) => GeoPoint;
1087
1233
  declare const boundingBoxGeohashes: (box: GeoBoundingBox) => string[];
1234
+ declare class GlobalPollTick {
1235
+ private readonly changedTables;
1236
+ private readonly reads;
1237
+ private resync;
1238
+ private skippedCount;
1239
+ constructor(changedTables?: Set<string>);
1240
+ get readCount(): number;
1241
+ get resyncRequested(): boolean;
1242
+ get skipped(): number;
1243
+ requestResync(): void;
1244
+ rows(key: string | undefined, load: () => Promise<ShapeRow[]>): Promise<ShapeRow[]>;
1245
+ shouldRead(table: string): boolean;
1246
+ }
1088
1247
  declare const ADMIN_FUNCTION_PREFIX = "__lunora_admin__:";
1089
1248
  declare const RELATION_FUNCTION_PREFIX = "__lunora_relation__:";
1090
1249
  declare const FLAGS_FUNCTION_PREFIX = "__lunora_flags__:";
@@ -1095,6 +1254,7 @@ declare const ADMIN_FUNCTIONS: {
1095
1254
  readonly aiGenerateSql: "__lunora_admin__:aiGenerateSql";
1096
1255
  readonly aiTableFilter: "__lunora_admin__:aiTableFilter";
1097
1256
  readonly assignIssue: "__lunora_admin__:assignIssue";
1257
+ readonly backfillSearch: "__lunora_admin__:backfillSearch";
1098
1258
  readonly backRelationCounts: "__lunora_admin__:backRelationCounts";
1099
1259
  readonly cdcSync: "__lunora_admin__:cdcSync";
1100
1260
  readonly clearCapturedMail: "__lunora_admin__:clearCapturedMail";
@@ -1133,12 +1293,14 @@ declare const ADMIN_FUNCTIONS: {
1133
1293
  readonly ignoreIssue: "__lunora_admin__:ignoreIssue";
1134
1294
  readonly importShard: "__lunora_admin__:importShard";
1135
1295
  readonly listFlags: "__lunora_admin__:listFlags";
1296
+ readonly listReactors: "__lunora_admin__:listReactors";
1136
1297
  readonly listQueues: "__lunora_admin__:listQueues";
1137
1298
  readonly lintSql: "__lunora_admin__:lintSql";
1138
1299
  readonly listTables: "__lunora_admin__:listTables";
1139
1300
  readonly listWorkflows: "__lunora_admin__:listWorkflows";
1140
1301
  readonly maskPolicies: "__lunora_admin__:maskPolicies";
1141
1302
  readonly migrationStatus: "__lunora_admin__:migrationStatus";
1303
+ readonly patchRows: "__lunora_admin__:patchRows";
1142
1304
  readonly pitrRestore: "__lunora_admin__:pitrRestore";
1143
1305
  readonly rankBefore: "__lunora_admin__:rankBefore";
1144
1306
  readonly rankPage: "__lunora_admin__:rankPage";
@@ -1216,8 +1378,11 @@ interface TablesIndexesResult {
1216
1378
  indexesByTable: Record<string, TableIndexInfo[]>;
1217
1379
  }
1218
1380
  interface ColumnMeta {
1381
+ bucket?: string;
1382
+ enumValues?: string[];
1219
1383
  isStorage?: boolean;
1220
1384
  name: string;
1385
+ nullable?: boolean;
1221
1386
  optional: boolean;
1222
1387
  pk?: boolean;
1223
1388
  ref?: string;
@@ -1332,6 +1497,19 @@ interface FlagsResult {
1332
1497
  configured: boolean;
1333
1498
  flags: FlagEvaluation[];
1334
1499
  }
1500
+ interface ReactorMetadata {
1501
+ errors: number;
1502
+ lastError?: string;
1503
+ lastRanAt?: number;
1504
+ path: string;
1505
+ runs: number;
1506
+ state: "active" | "failing" | "idle";
1507
+ suppressed: number;
1508
+ tables?: ReadonlyArray<string>;
1509
+ }
1510
+ interface ReactorsResult {
1511
+ reactors: ReactorMetadata[];
1512
+ }
1335
1513
  interface WorkflowMetadata {
1336
1514
  binding: string;
1337
1515
  className: string;
@@ -1413,6 +1591,7 @@ interface ReadTablePageOptions {
1413
1591
  table: string;
1414
1592
  }
1415
1593
  interface SelectMatchingIdsOptions {
1594
+ after?: string;
1416
1595
  filters?: FilterClause[];
1417
1596
  limit?: number;
1418
1597
  search?: string;
@@ -1469,12 +1648,22 @@ interface FanoutPathCounters {
1469
1648
  socketsIterated: number;
1470
1649
  totalMs: number;
1471
1650
  }
1651
+ interface ShapeProbeCounters {
1652
+ run: number;
1653
+ served: number;
1654
+ }
1655
+ interface GlobalPollCounters {
1656
+ drains: number;
1657
+ pairsSkipped: number;
1658
+ }
1472
1659
  interface FanoutMetricsResult {
1660
+ globalPoll: GlobalPollCounters;
1473
1661
  maxRelays: number;
1474
1662
  peakSubscribers: number;
1475
1663
  promoted: boolean;
1476
1664
  relayCount: number;
1477
1665
  shapePoke: FanoutPathCounters;
1666
+ shapeProbe: ShapeProbeCounters;
1478
1667
  sinceMs: number;
1479
1668
  topics: FanoutTopicStat[];
1480
1669
  totalConnections: number;
@@ -1488,6 +1677,10 @@ interface FanoutAttachmentLike {
1488
1677
  }
1489
1678
  declare const DEFAULT_FANOUT_TOPIC_LIMIT = 20;
1490
1679
  declare const createFanoutCounters: () => FanoutPathCounters;
1680
+ declare const createShapeProbeCounters: () => ShapeProbeCounters;
1681
+ declare const createGlobalPollCounters: () => GlobalPollCounters;
1682
+ declare const recordGlobalPollPass: (counters: GlobalPollCounters, drains: number, pairsSkipped: number) => GlobalPollCounters;
1683
+ declare const recordShapeProbePass: (counters: ShapeProbeCounters, run: number, served: number) => ShapeProbeCounters;
1491
1684
  declare const recordFanoutPass: (counters: FanoutPathCounters, iterated: number, delivered: number, ms: number) => FanoutPathCounters;
1492
1685
  declare const summarizeFanoutTopics: (attachments: FanoutAttachmentLike[], limit?: number) => {
1493
1686
  peakSubscribers: number;
@@ -1556,7 +1749,20 @@ interface PitrRestoreArgs {
1556
1749
  }
1557
1750
  declare const readBookmark: (storage: PitrStorage, time?: number | string) => Promise<PitrBookmarkResult>;
1558
1751
  declare const armRestore: (storage: PitrStorage, args: PitrRestoreArgs) => Promise<Omit<PitrRestoreResult, "restarted">>;
1559
- declare const normalizeOrderKeys: (orderBy: OrderByInput[] | undefined) => OrderKey[];
1752
+ declare const tiebreakDirectionFor: (keys: ReadonlyArray<{
1753
+ direction?: string;
1754
+ }>) => SortDirection;
1755
+ declare const equalityPinnedFields: (where: undefined | WhereInput) => ReadonlySet<string>;
1756
+ declare const uniqueIndexFields: (indexes: ReadonlyArray<{
1757
+ fields: ReadonlyArray<string>;
1758
+ unique?: boolean;
1759
+ }> | undefined, shape: Record<string, ValidatorLike> | undefined) => ReadonlyArray<ReadonlyArray<string>>;
1760
+ interface OrderKeyConstraints {
1761
+ pinned?: ReadonlySet<string>;
1762
+ uniqueBy?: ReadonlyArray<ReadonlyArray<string>>;
1763
+ }
1764
+ declare const normalizeOrderKeys: (orderBy: OrderByInput[] | undefined, shape?: Record<string, ValidatorLike>, constraints?: OrderKeyConstraints) => OrderKey[];
1765
+ declare const CURSOR_PREFIX = "~4";
1560
1766
  declare const encodeCursor: (record: Record<string, unknown>, keys: OrderKey[]) => string;
1561
1767
  declare const decodeCursor: (cursor: string) => unknown[];
1562
1768
  declare const buildSeekWhere: (keys: OrderKey[], cursorValues: unknown[]) => WhereInput;
@@ -1609,7 +1815,6 @@ declare const clearQueueMessages: (sql: SqlExec) => {
1609
1815
  declare const encodePartitionKey: (partitionBy: ReadonlyArray<string>, source: Record<string, unknown>) => string;
1610
1816
  declare const RANK_TIEBREAK = "__id__";
1611
1817
  declare const sortColumnName: (i: number) => string;
1612
- declare const matchesRankStaticWhere: (document: Record<string, unknown>, predicate: Record<string, unknown>) => boolean;
1613
1818
  declare const resolveRankPartition: (index: RankIndexDefinitionLike, where: Record<string, unknown> | undefined) => Record<string, unknown> | undefined;
1614
1819
  declare const rankTableName: (table: string, indexName: string) => string;
1615
1820
  declare const rankKeyFromDocument: (index: RankIndexDefinitionLike, document_: Record<string, unknown>) => {
@@ -1617,6 +1822,36 @@ declare const rankKeyFromDocument: (index: RankIndexDefinitionLike, document_: R
1617
1822
  rowId: string;
1618
1823
  sortValues: unknown[];
1619
1824
  };
1825
+ declare const rankPivotConditionSql: (column: string, value: unknown, direction: "asc" | "desc", wantLater: boolean) => SQL | undefined;
1826
+ declare const matchesRankStaticWhere: (document: Record<string, unknown>, predicate: Record<string, unknown>) => boolean;
1827
+ declare const REACTOR_STATE_TABLE = "__reactor_state";
1828
+ interface ReactorState {
1829
+ digest: string;
1830
+ lastError?: string;
1831
+ lastRanAt: number;
1832
+ stats: ReactorStats;
1833
+ tables?: ReadonlyArray<string>;
1834
+ }
1835
+ interface ReactorStats {
1836
+ errors: number;
1837
+ runs: number;
1838
+ suppressed: number;
1839
+ }
1840
+ declare const migrateReactorState: (sql: SqlExec) => void;
1841
+ declare const readReactorState: (sql: SqlExec, path: string) => ReactorState | undefined;
1842
+ declare const listReactorStates: (sql: SqlExec) => {
1843
+ path: string;
1844
+ state: ReactorState;
1845
+ }[];
1846
+ type ReactorDispatchResult = "error" | "ran" | "suppressed";
1847
+ declare const writeReactorState: (sql: SqlExec, path: string, outcome: {
1848
+ digest?: string;
1849
+ error?: string;
1850
+ now: number;
1851
+ result: ReactorDispatchResult;
1852
+ tables?: ReadonlyArray<string>;
1853
+ }) => void;
1854
+ declare const reactorNeedsRun: (state: Pick<ReactorState, "tables"> | undefined, changed: ReadonlySet<string>) => boolean;
1620
1855
  interface ReadFootprint {
1621
1856
  onRead: (table: string, idOrScan?: string) => void;
1622
1857
  onReadRange: (range: KeyRange) => void;
@@ -1624,6 +1859,8 @@ interface ReadFootprint {
1624
1859
  tables: Set<string>;
1625
1860
  }
1626
1861
  declare const createReadFootprint: () => ReadFootprint;
1862
+ declare const UNVOUCHABLE_DEP = "!unvouchable";
1863
+ declare const markUnvouchableReads: <T extends object>(facade: T, onRead: ReadFootprint["onRead"] | undefined, methods: ReadonlyArray<string>) => T;
1627
1864
  declare const DEFAULT_MAX_RELATION_KEYS = 5000;
1628
1865
  interface RelationExistsMarker {
1629
1866
  childWhere: WhereInput;
@@ -1658,6 +1895,7 @@ declare const containsRelationPredicate: (where: WhereInput, schema: ResolveCont
1658
1895
  declare const assertFlatPredicate: (where: WhereInput | undefined, schema: ResolveContext["schema"], tableName: string, op: string) => void;
1659
1896
  declare const resolveRelationPredicates: (where: WhereInput | undefined, options: ResolveRelationPredicatesOptions) => Promise<WhereInput | undefined>;
1660
1897
  declare const assertShapeShardable: (effectiveWhere: WhereInput | undefined, schema: ResolveContext["schema"], table: string) => void;
1898
+ declare const relationHooks: (args: Pick<QueryArgs, "relationBaseWhere" | "relationMask">) => Pick<QueryArgs, "relationBaseWhere" | "relationMask"> & Pick<ResolveWithOptions, "fanOutBudget">;
1661
1899
  declare const fanOutScalarCounts: (counter: (tableName: string, where?: WhereInput) => Promise<number>, tableName: string, whereField: string, values: unknown[], policyWhere: WhereInput | undefined) => Promise<Map<unknown, number>>;
1662
1900
  declare const distinctValues: (rows: Record<string, unknown>[], field: string) => unknown[];
1663
1901
  declare const resolveWith: (options: ResolveWithOptions) => Promise<void>;
@@ -1682,6 +1920,8 @@ interface ShapeRowOp {
1682
1920
  value?: Record<string, unknown>;
1683
1921
  }
1684
1922
  interface ShapePokePart {
1923
+ baseCheckpoint?: number;
1924
+ reset?: boolean;
1685
1925
  rowsPatch: ShapeRowOp[];
1686
1926
  shapeId: string;
1687
1927
  }
@@ -1742,6 +1982,12 @@ interface RelayShapeSubscribe {
1742
1982
  type: "relay_shape_subscribe";
1743
1983
  userId?: string;
1744
1984
  }
1985
+ interface RelayShapeUnsubscribe {
1986
+ connectionId: string;
1987
+ relayIndex: number;
1988
+ subId?: string;
1989
+ type: "relay_shape_unsubscribe";
1990
+ }
1745
1991
  interface RelayShapeSeed {
1746
1992
  cursor?: number;
1747
1993
  epoch?: string;
@@ -1761,22 +2007,18 @@ interface RelayShapePoke {
1761
2007
  targetConnectionId?: string;
1762
2008
  type: "relay_shape_poke";
1763
2009
  }
1764
- type OwnerRelayFrame = RelayAttach | RelayDetach | RelayFrame | RelayShapePoke | RelayShapeSubscribe;
1765
- declare const DEFAULT_MAX_RELAYS = 8;
1766
- interface RelayStub {
2010
+ type OwnerRelayFrame = RelayAttach | RelayDetach | RelayFrame | RelayShapePoke | RelayShapeSubscribe | RelayShapeUnsubscribe;
2011
+ interface SiblingStub {
1767
2012
  fetch: (url: string, init?: RequestInit) => Promise<Response>;
1768
2013
  }
1769
- interface RelayNamespaceLike {
1770
- get: (id: unknown) => RelayStub;
1771
- getByName?: (name: string) => RelayStub;
1772
- idFromName: (name: string) => unknown;
1773
- }
2014
+ declare const DEFAULT_MAX_RELAYS = 8;
1774
2015
  interface RelayHost {
1775
2016
  buildShapeDiff: (resolved: ResolvedShape, fromCursor: number, toCursor: number) => ShapeRowOp[];
1776
2017
  computeOpLogShapeSeed: (shape: ShapeSubscriptionQuery, resolved: ResolvedShape) => {
1777
2018
  baseCheckpoint: number | undefined;
1778
2019
  cursor: number;
1779
2020
  epoch: string | undefined;
2021
+ reset: boolean;
1780
2022
  rowsPatch: ShapeRowOp[];
1781
2023
  };
1782
2024
  currentCdcEpoch: () => string | undefined;
@@ -1791,8 +2033,13 @@ interface RelayHost {
1791
2033
  resolveShape: (name: string, args: Record<string, unknown>, identity?: SubscriptionIdentity) => ResolvedShape | undefined;
1792
2034
  rlsMetadata: () => RlsPoliciesResult;
1793
2035
  shardBinding: () => string | undefined;
2036
+ shardJurisdiction: () => string | undefined;
1794
2037
  sql: () => SqlExec;
1795
2038
  }
2039
+ interface RelayPokeDelivery {
2040
+ delivered: number;
2041
+ matched: number;
2042
+ }
1796
2043
  declare abstract class RelayLink {
1797
2044
  protected readonly host: RelayHost;
1798
2045
  protected readonly roleId: {
@@ -1806,7 +2053,8 @@ declare abstract class RelayLink {
1806
2053
  handleControl(request: Request): Promise<Response>;
1807
2054
  maxRelays(): number;
1808
2055
  protected canAddressSiblings(): boolean;
1809
- protected relayNamespace(): RelayNamespaceLike | undefined;
2056
+ protected siblingStub(targetName: string): SiblingStub | undefined;
2057
+ protected bindingName(): string | undefined;
1810
2058
  protected postRelayMessage(targetName: string, message: OwnerRelayFrame): Promise<void>;
1811
2059
  protected requestRelayMessage(targetName: string, message: OwnerRelayFrame): Promise<Response | undefined>;
1812
2060
  abstract forwardWhisper(topic: string, frame: string): Promise<void>;
@@ -1817,19 +2065,22 @@ declare abstract class RelayLink {
1817
2065
  }>;
1818
2066
  abstract announce(): Promise<void>;
1819
2067
  abstract announceDrain(closing: ShardSocketLike): Promise<void>;
2068
+ abstract releaseRelayShapes(ws: ShardSocketLike, subId?: string): Promise<void>;
1820
2069
  abstract relayCount(): number;
1821
2070
  abstract isShapeRelayUniform(name: string, args: Record<string, unknown>): boolean;
2071
+ abstract minShapeCursor(): number | undefined;
1822
2072
  protected abstract onAttach(index: number): void;
1823
2073
  protected abstract onDetach(index: number): void;
1824
2074
  protected abstract onWhisperFrame(message: RelayFrame): Promise<void>;
1825
2075
  protected abstract onShapeSubscribe(message: RelayShapeSubscribe): RelayShapeSeed;
1826
- protected abstract onShapePoke(poke: RelayShapePoke): number;
2076
+ protected abstract onShapeUnsubscribe(message: RelayShapeUnsubscribe): void;
2077
+ protected abstract onShapePoke(poke: RelayShapePoke): RelayPokeDelivery;
1827
2078
  }
1828
2079
  declare class OwnerRelay extends RelayLink {
1829
2080
  private readonly shapeUniformCache;
1830
2081
  private relaySetCache;
1831
- private readonly relayShapeRegistry;
1832
- private readonly relayShapeProxies;
2082
+ private registryCache;
2083
+ private recordedBinding;
1833
2084
  private promotionState;
1834
2085
  constructor(host: RelayHost, ownerKey: string);
1835
2086
  forwardWhisper(topic: string, frame: string): Promise<void>;
@@ -1840,17 +2091,26 @@ declare class OwnerRelay extends RelayLink {
1840
2091
  }>;
1841
2092
  announce(): Promise<void>;
1842
2093
  announceDrain(): Promise<void>;
2094
+ releaseRelayShapes(): Promise<void>;
1843
2095
  relayCount(): number;
2096
+ minShapeCursor(): number | undefined;
1844
2097
  isShapeRelayUniform(name: string, args: Record<string, unknown>): boolean;
2098
+ protected onShapeUnsubscribe(message: RelayShapeUnsubscribe): void;
1845
2099
  protected onAttach(index: number): void;
1846
2100
  protected onDetach(index: number): void;
1847
2101
  protected onWhisperFrame(message: RelayFrame): Promise<void>;
1848
2102
  protected onShapeSubscribe(message: RelayShapeSubscribe): RelayShapeSeed;
1849
- protected onShapePoke(): number;
2103
+ protected onShapePoke(): RelayPokeDelivery;
2104
+ private buildShapePoke;
1850
2105
  private multicastShapePokes;
2106
+ private multicastToRelays;
1851
2107
  private proxyShapePokes;
2108
+ private proxyToRelay;
1852
2109
  private buildShapeSeedFrames;
1853
- private ensureRelayTable;
2110
+ private ensureRelayTables;
2111
+ protected bindingName(): string | undefined;
2112
+ private relayShapes;
2113
+ private rewindShapeCursor;
1854
2114
  private ownerRelaySet;
1855
2115
  private addRelayToSet;
1856
2116
  private removeRelayFromSet;
@@ -1859,7 +2119,8 @@ declare class OwnerRelay extends RelayLink {
1859
2119
  }
1860
2120
  declare class RelayMember extends RelayLink {
1861
2121
  private relayAnnounced;
1862
- private readonly shapeRelayMemos;
2122
+ private relayMemoCache;
2123
+ private readonly shapeControl;
1863
2124
  constructor(host: RelayHost, ownerKey: string, relayIndex: number);
1864
2125
  forwardWhisper(topic: string, frame: string): Promise<void>;
1865
2126
  onFlush(): Promise<void>;
@@ -1869,17 +2130,81 @@ declare class RelayMember extends RelayLink {
1869
2130
  }>;
1870
2131
  announce(): Promise<void>;
1871
2132
  announceDrain(closing: ShardSocketLike): Promise<void>;
2133
+ releaseRelayShapes(ws: ShardSocketLike, subId?: string): Promise<void>;
1872
2134
  relayCount(): number;
1873
2135
  isShapeRelayUniform(): boolean;
2136
+ minShapeCursor(): number | undefined;
1874
2137
  protected onAttach(): void;
1875
2138
  protected onDetach(): void;
1876
2139
  protected onWhisperFrame(): Promise<void>;
1877
2140
  protected onShapeSubscribe(): RelayShapeSeed;
1878
- protected onShapePoke(poke: RelayShapePoke): number;
2141
+ protected onShapeUnsubscribe(): void;
2142
+ protected onShapePoke(poke: RelayShapePoke): RelayPokeDelivery;
2143
+ private queueShapeControl;
2144
+ private relayMemos;
2145
+ private connectionMemos;
1879
2146
  private recordRelayShapeMemo;
2147
+ private forgetRelayShapeMemos;
1880
2148
  private deliverShapePoke;
2149
+ private pokeSocketShapes;
1881
2150
  }
1882
2151
  declare const createRelayLink: (host: RelayHost) => OwnerRelay | RelayMember | undefined;
2152
+ declare const REGION_HINTS: readonly ["wnam", "enam", "sam", "weur", "eeur", "apac", "apac-ne", "apac-se", "oc", "afr", "me"];
2153
+ type RegionHint = (typeof REGION_HINTS)[number];
2154
+ type ReplicaReadiness = "fresh" | "stale" | "unavailable";
2155
+ interface ShardSiblingHost {
2156
+ doName: () => string | undefined;
2157
+ env: () => unknown;
2158
+ shardBinding: () => string | undefined;
2159
+ shardJurisdiction: () => string | undefined;
2160
+ sql: () => SqlExec;
2161
+ }
2162
+ interface ReplicaOwnerHost extends ShardSiblingHost {
2163
+ exportRows: () => Promise<ExportRow[]>;
2164
+ ownerCursor: () => number | undefined;
2165
+ ownerEpoch: () => string | undefined;
2166
+ ownerFloor: () => number | undefined;
2167
+ readChanges: (sinceSeq: number, limit: number) => {
2168
+ changes: CdcChange[];
2169
+ cursor: number;
2170
+ };
2171
+ rowCount: () => number;
2172
+ }
2173
+ interface ReplicaFollowerHost extends ShardSiblingHost {
2174
+ applyChanges: (changes: ReadonlyArray<CdcChange>) => Promise<number>;
2175
+ importRows: (rows: ReadonlyArray<ExportRow>) => Promise<{
2176
+ errors: ReadonlyArray<unknown>;
2177
+ }>;
2178
+ }
2179
+ declare const handleReplicaControl: (host: ReplicaOwnerHost, request: Request) => Promise<Response>;
2180
+ declare class ShardReplica {
2181
+ private readonly host;
2182
+ readonly ownerKey: string;
2183
+ readonly region: RegionHint;
2184
+ private divergent;
2185
+ private inFlight;
2186
+ constructor(host: ReplicaFollowerHost, ownerKey: string, region: RegionHint);
2187
+ ensureFresh(minSeq?: number): Promise<ReplicaReadiness>;
2188
+ appliedSeq(): number;
2189
+ isDivergent(): boolean;
2190
+ private advance;
2191
+ private isCaughtUp;
2192
+ private catchUp;
2193
+ private applyPage;
2194
+ private hasDiverged;
2195
+ private bootstrap;
2196
+ private isFreshEnough;
2197
+ private pull;
2198
+ private request;
2199
+ }
2200
+ declare const createReplicaLink: (host: ReplicaFollowerHost) => ShardReplica | undefined;
2201
+ declare const gateReplicaDispatch: (replica: ShardReplica, request: Request, functionPath: string) => Promise<Response | undefined>;
2202
+ declare const REPROJECTION_MIGRATION_PREFIX = "__lunora_reproject__";
2203
+ declare const reprojectionMigrationId: (table: string) => string;
2204
+ declare const reprojectableFields: (definition: TableDefinitionLike) => string[];
2205
+ declare const reprojectionTables: (schema: SchemaLike) => string[];
2206
+ declare const countLegacyRows: (sql: SqlExec, table: string, fields: ReadonlyArray<string>) => number;
2207
+ declare const buildReprojectionMigration: (id: string, schema: SchemaLike, sql: SqlExec) => DataMigrationLike | undefined;
1883
2208
  declare const RLS_UNWRAP_SYMBOL: symbol;
1884
2209
  declare class RlsRequiredError extends LunoraError {
1885
2210
  readonly table: string;
@@ -1909,6 +2234,24 @@ declare const readSchemaHistory: (sql: SqlExec) => SchemaVersionRow[];
1909
2234
  declare const readSchemaVersion: (sql: SqlExec, hash: string) => SchemaVersionRow | undefined;
1910
2235
  declare const isDevEnvironment: (rawEnv: unknown) => boolean;
1911
2236
  declare const buildSettings: (rawEnv: unknown) => SettingsResult;
2237
+ declare class ShapeDiffCache {
2238
+ private readonly keyScans;
2239
+ private readonly memberProbes;
2240
+ private run;
2241
+ private served;
2242
+ get probesRun(): number;
2243
+ get probesServed(): number;
2244
+ changedKeys(rangeKey: string, load: () => CdcChangeKey[]): ReadonlyArray<CdcChangeKey>;
2245
+ members(resolved: ResolvedShape, rangeKey: string, load: () => Map<string, Record<string, unknown>>): ReadonlyMap<string, Record<string, unknown>>;
2246
+ private getOrLoad;
2247
+ }
2248
+ declare const createShapeDiffCache: () => ShapeDiffCache;
2249
+ declare const globalShapeReadKey: (resolved: ResolvedShape, identity: {
2250
+ identity?: Record<string, unknown>;
2251
+ userId?: string;
2252
+ }) => string | undefined;
2253
+ type ReadShapeCdcKeys = (sql: SqlExec, table: string, sinceSeq: number, upTo: number) => CdcChangeKey[];
2254
+ declare const buildShapeDiff: (sql: SqlExec, resolved: ResolvedShape, sinceSeq: number, upTo: number, cache: ShapeDiffCache, readKeys?: ReadShapeCdcKeys) => ShapeRowOp[];
1912
2255
  interface ShardRunnerOptions {
1913
2256
  handlers?: {
1914
2257
  handleAlarm?: () => Promise<void>;
@@ -1950,6 +2293,9 @@ interface SqlDiagnostic {
1950
2293
  source: "gate" | "plan" | "syntax";
1951
2294
  }
1952
2295
  declare const lintReadonlySql: (sql: SqlExec, query: string) => SqlLintResult;
2296
+ declare const BIGINT_KEY_DIGITS = 39;
2297
+ declare const bigintSqlKey: (value: bigint) => string;
2298
+ declare const decodeBigintSqlKey: (raw: string) => bigint | undefined;
1953
2299
  declare const subscriptionListDeltas: (previousJson: string, nextResult: unknown, table: string, frames?: string[]) => MutationDelta[] | undefined;
1954
2300
  interface FrameSink {
1955
2301
  send: (data: string) => void;
@@ -1958,7 +2304,17 @@ interface DrainableSink {
1958
2304
  readonly bufferedAmount?: unknown;
1959
2305
  }
1960
2306
  declare const trySendFrame: (ws: FrameSink, frame: string) => boolean;
1961
- declare const sendDeltaFrames: (ws: FrameSink, subId: string, deltaFrames: ReadonlyArray<string>, cursorSuffix: string, lastMutationId?: number) => boolean;
2307
+ interface SubscriptionFrameInput {
2308
+ cursorSuffix: string;
2309
+ lastMutationId?: number;
2310
+ nextResult: unknown;
2311
+ pageDeltas?: boolean;
2312
+ previousJson?: string;
2313
+ snapshotJson: string;
2314
+ subId: string;
2315
+ table: string;
2316
+ }
2317
+ declare const subscriptionFrames: (input: SubscriptionFrameInput) => string[];
1962
2318
  declare const awaitWsDrain: (ws: DrainableSink) => Promise<void>;
1963
2319
  interface SubscriptionReadFootprint {
1964
2320
  ranges?: Map<string, KeyRange[]>;
@@ -1986,13 +2342,25 @@ declare const selectExpiredIds: (sql: SqlExec, spec: TtlSweepSpec, now: number,
1986
2342
  hasMore: boolean;
1987
2343
  ids: string[];
1988
2344
  };
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;
2345
+ interface WhereFragments<T> {
2346
+ binary: (reference: T, comparator: string, value: unknown) => T;
2347
+ connect: (left: T, right: T, connector: "AND" | "OR") => T;
2348
+ constant: (value: boolean) => T;
2349
+ contains: (reference: T, term: T) => T;
2350
+ inList: (reference: T, items: ReadonlyArray<unknown>, negated: boolean, budget: number) => T;
2351
+ negate: (inner: T) => T;
2352
+ nullCheck: (reference: T, negated: boolean) => T;
2353
+ value: (value: unknown) => T;
2354
+ }
2355
+ type FieldRefSql<T> = (field: string) => T;
2356
+ type SerializeValue = (value: unknown, field: string) => unknown;
2357
+ interface WhereSqlStrategy<T = SQL> {
2358
+ containsExpr?: (reference: T, term: T) => T;
2359
+ fieldRef: FieldRefSql<T>;
2360
+ inList?: (reference: T, items: ReadonlyArray<unknown>, negated: boolean, budget?: number) => T;
2361
+ relationExists?: (request: unknown) => T;
1995
2362
  serialize: SerializeValue;
1996
2363
  }
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 };
2364
+ declare const literalInList: (reference: SQL, items: ReadonlyArray<unknown>, negated: boolean) => SQL;
2365
+ declare const compileWhereSql: <T = SQL>(where: WhereInput | undefined, strategy: WhereSqlStrategy<T>, fragments?: WhereFragments<T>) => T | undefined;
2366
+ 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 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, 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 RelationDefinitionLike, type RelationExistsMarker, 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, SCHEMA_HISTORY_MAX_VERSIONS, SEARCH_STATE_TABLE, SHAPE_POKE_CURSOR_TABLE, type SchedulableWorkflowReferenceLike, 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, type ValidatorLike, 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, bigintSqlKey, boundingBoxCenter, boundingBoxGeohashes, buildIndexRange, buildPokeFrames, buildReprojectionMigration, buildSeekBeforeWhere, buildSeekWhere, buildSettings, buildShapeDiff, bumpCdcEpoch, cdcCanVouchFor, 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, deleteGlobalShapeSnapshot, deleteGlobalShapeSnapshotsForConnection, deleteShapePokeCursor, deleteShapePokeCursorsForConnection, deleteStreamRun, depKey, diffExternalSource, diffGlobalMembership, distinctValues, encodeAggregateKey, encodeCursor, encodeGeohash, encodePartitionKey, encodeRowsPatch, ensureAuditTable, ensureMailTable, envOptionalPositiveInt, envPositiveInt, equalityPinnedFields, exportShardRows, facetColumn, fanOutScalarCounts, findStorageReferences, finishStreamRun, foldAggregateTally, gateReplicaDispatch, geoTableName, globalShapeReadKey, guardWriter, handleReplicaControl, hasTrigger, haversineMeters, importShardRows, indexKeysForRow, isDevEnvironment, isFtsAvailable, isLossyBody, isMemoryTable, 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, migrateSearchState, migrateShapePokeCursor, minCdcReplayableSeq, minCdcSeq, minShapePokeCursor, nextPromotionState, normalizeCountArgument, normalizeIdStructurally, normalizeOrderKeys, normalizeSourceDocument, normalizeSourceValue, param, parseExportShardArgs, parseImportShardArgs, planAggregateLookup, pointInBoundingBox, 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, readExternalSourceBaseline, readGlobalShapeSnapshot, readIdempotent, readMigrationStatus, readQueueMessageById, readQueueMessages, readReactorState, readSchemaHistory, readSchemaVersion, readSearchBackfillState, readShapePokeCursor, readStreamChunks, readStreamRun, readTablePage, recordCapturedMail, recordChangedKeys, recordFanoutPass, recordGlobalPollPass, recordQueueMessages, 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, subscriptionFrames, subscriptionListDeltas, summarizeFanoutTopics, summarizeSubscriptions, tableColumns, tableFromDepKey, throwingScheduler, tiebreakDirectionFor, trimCdcChanges, trimIdempotent, trimStreamRuns, tryRowToDocument, trySendFrame, unionAll, uniqueIndexFields, validateImportRow, writeCdcArchivedThrough, writeGlobalShapeSnapshot, writeIdempotent, writeReactorState, writeSearchBackfillState, writeShapePokeCursor, writeShapePokeCursors, writeTouchesMemo };