@visorcraft/mongreldb-kit 0.63.1 → 0.64.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/migrate.js CHANGED
@@ -397,7 +397,7 @@ async function writeSchemaCatalog(kit, schema) {
397
397
  }
398
398
  function kitVersion() {
399
399
  // Keep in sync with package.json. Avoiding a JSON import keeps the ESM bundle simple.
400
- return '0.63.1';
400
+ return '0.64.0';
401
401
  }
402
402
  function makeContext(kit, sqlOptions) {
403
403
  return {
package/dist/remote.d.ts CHANGED
@@ -79,16 +79,25 @@ export type RemoteSqlWriteReceipt = {
79
79
  category: string;
80
80
  };
81
81
  };
82
+ /** Structural HLC from server durable recovery (0.64+). */
83
+ export type RemoteCommitHlc = {
84
+ physical_micros: number;
85
+ logical?: number;
86
+ node_tiebreaker?: number;
87
+ };
82
88
  export type RemoteDurableOutcome = {
83
89
  committed: boolean | null;
84
90
  committed_statements?: number | null;
85
91
  last_commit_epoch?: number | null;
86
92
  last_commit_epoch_text?: string | null;
93
+ last_commit_hlc?: RemoteCommitHlc | null;
87
94
  first_commit_statement_index?: number | null;
88
95
  last_commit_statement_index?: number | null;
89
96
  completed_statements?: number | null;
90
97
  statement_index?: number | null;
91
98
  serialization?: string;
99
+ serialization_state?: string | null;
100
+ terminal_state?: string | null;
92
101
  };
93
102
  export type RemoteQueryStatus = SqlQueryStatus;
94
103
  /**
@@ -129,6 +138,46 @@ export declare class RemoteDatabase {
129
138
  private cancelSqlForSignal;
130
139
  private sendCancelSql;
131
140
  queryStatus(queryId: string): Promise<RemoteQueryStatus>;
141
+ /**
142
+ * Text → embed under the active semantic identity → ANN retrieve
143
+ * (`POST /kit/retrieve_text`, 0.64+).
144
+ */
145
+ retrieveText(table: string, embeddingColumn: number, text: string, options?: {
146
+ k?: number;
147
+ deadlineMs?: number;
148
+ maxWork?: number;
149
+ }): Promise<{
150
+ hits: Array<{
151
+ rowId: string;
152
+ rank: number;
153
+ score: unknown;
154
+ }>;
155
+ provenance: {
156
+ embeddingColumn: number;
157
+ providerRegistryGeneration: number;
158
+ querySourceFingerprint: string;
159
+ semanticIdentity: Record<string, unknown>;
160
+ };
161
+ }>;
162
+ /**
163
+ * Build a multi-retriever hybrid search body for `POST /kit/search`.
164
+ * Exposed for wire tests and callers that need the payload without executing.
165
+ */
166
+ static buildKitSearchBody(input: {
167
+ table: string;
168
+ retrievers: Array<Record<string, unknown>>;
169
+ fusionConstant?: number;
170
+ limit?: number;
171
+ must?: Array<Record<string, unknown>>;
172
+ rerank?: Record<string, unknown>;
173
+ projection?: number[];
174
+ }): Record<string, unknown>;
175
+ /** Multi-retriever hybrid search (`POST /kit/search`). */
176
+ kitSearch(body: Record<string, unknown>): Promise<{
177
+ hits: Array<Record<string, unknown>>;
178
+ trace?: unknown;
179
+ nextCursor?: string;
180
+ }>;
132
181
  sqlPage(sql: string, options: RemoteSqlPaginationOptions): Promise<RemoteSqlPage>;
133
182
  continueSqlPage(cursor: string, options?: RemoteSqlControlOptions): Promise<RemoteSqlPage>;
134
183
  executeIdempotentSql(sql: string, options: RemoteIdempotentSqlOptions): Promise<RemoteSqlWriteReceipt>;
@@ -1 +1 @@
1
- {"version":3,"file":"remote.d.ts","sourceRoot":"","sources":["../src/remote.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"remote.d.ts","sourceRoot":"","sources":["../src/remote.ts"],"names":[],"mappings":"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"}
package/dist/remote.js CHANGED
@@ -440,6 +440,68 @@ const COMMITTED_QUERY_STATUSES = new Set([
440
440
  function sameOptional(left, right) {
441
441
  return (left ?? null) === (right ?? null);
442
442
  }
443
+ const OUTCOME_ALLOWED_KEYS = [
444
+ 'committed', 'committed_statements', 'last_commit_epoch', 'last_commit_epoch_text',
445
+ 'last_commit_hlc', 'first_commit_statement_index', 'last_commit_statement_index',
446
+ 'completed_statements', 'statement_index', 'serialization', 'serialization_state',
447
+ 'terminal_state'
448
+ ];
449
+ const OUTCOME_REQUIRED_KEYS = [
450
+ 'committed', 'committed_statements', 'last_commit_epoch', 'last_commit_epoch_text',
451
+ 'first_commit_statement_index', 'last_commit_statement_index', 'completed_statements',
452
+ 'statement_index', 'serialization'
453
+ ];
454
+ function isRemoteCommitHlc(value) {
455
+ if (value === null || value === undefined)
456
+ return true;
457
+ if (value === null || typeof value !== 'object')
458
+ return false;
459
+ const hlc = value;
460
+ if (!hasOnlyKeys(hlc, ['physical_micros', 'logical', 'node_tiebreaker']))
461
+ return false;
462
+ if (typeof hlc.physical_micros !== 'number'
463
+ || !Number.isSafeInteger(hlc.physical_micros)
464
+ || hlc.physical_micros < 0)
465
+ return false;
466
+ if (hlc.logical !== undefined
467
+ && (typeof hlc.logical !== 'number' || !Number.isSafeInteger(hlc.logical) || hlc.logical < 0)) {
468
+ return false;
469
+ }
470
+ if (hlc.node_tiebreaker !== undefined
471
+ && (typeof hlc.node_tiebreaker !== 'number'
472
+ || !Number.isSafeInteger(hlc.node_tiebreaker)
473
+ || hlc.node_tiebreaker < 0)) {
474
+ return false;
475
+ }
476
+ return true;
477
+ }
478
+ function parseRemoteCommitHlc(value) {
479
+ if (value === null || value === undefined || typeof value !== 'object')
480
+ return undefined;
481
+ const hlc = value;
482
+ return {
483
+ physicalMicros: hlc.physical_micros,
484
+ logical: hlc.logical ?? 0,
485
+ nodeTiebreaker: hlc.node_tiebreaker ?? 0
486
+ };
487
+ }
488
+ function pickCommitHlc(...sources) {
489
+ for (const source of sources) {
490
+ if (!source)
491
+ continue;
492
+ const parsed = parseRemoteCommitHlc('last_commit_hlc' in source ? source.last_commit_hlc : undefined);
493
+ if (parsed !== undefined)
494
+ return parsed;
495
+ }
496
+ return undefined;
497
+ }
498
+ function pickSerializationState(outcome, durable) {
499
+ const state = durable?.serialization_state
500
+ ?? outcome?.serialization_state
501
+ ?? durable?.serialization
502
+ ?? outcome?.serialization;
503
+ return state === undefined || state === null ? undefined : state;
504
+ }
443
505
  function isRemoteQueryStatus(value, queryId) {
444
506
  if (value === null || typeof value !== 'object')
445
507
  return false;
@@ -449,24 +511,31 @@ function isRemoteQueryStatus(value, queryId) {
449
511
  : undefined;
450
512
  if (outcome === undefined)
451
513
  return false;
514
+ const durable = body.durable === undefined || body.durable === null
515
+ ? undefined
516
+ : typeof body.durable === 'object'
517
+ ? body.durable
518
+ : undefined;
519
+ if (body.durable !== undefined && body.durable !== null && durable === undefined)
520
+ return false;
452
521
  const serverState = body.server_state ?? '';
453
522
  const terminal = body.terminal_error;
454
523
  if (!hasOnlyKeys(body, [
455
524
  'query_id', 'status', 'state', 'server_state', 'terminal_state', 'detail', 'operation',
456
525
  'started_ms_ago', 'deadline_ms_remaining', 'session_id',
457
526
  'committed', 'committed_statements', 'last_commit_epoch', 'last_commit_epoch_text',
527
+ 'last_commit_hlc',
458
528
  'first_commit_statement_index', 'last_commit_statement_index', 'completed_statements',
459
529
  'statement_index', 'cancel_outcome', 'retryable', 'terminal_error',
460
- 'cancellation_reason', 'outcome', 'trace'
461
- ]) || !hasOnlyKeys(outcome, [
462
- 'committed', 'committed_statements', 'last_commit_epoch', 'last_commit_epoch_text',
463
- 'first_commit_statement_index', 'last_commit_statement_index', 'completed_statements',
464
- 'statement_index', 'serialization'
465
- ]) || !hasAllKeys(outcome, [
466
- 'committed', 'committed_statements', 'last_commit_epoch', 'last_commit_epoch_text',
467
- 'first_commit_statement_index', 'last_commit_statement_index', 'completed_statements',
468
- 'statement_index', 'serialization'
469
- ]))
530
+ 'cancellation_reason', 'outcome', 'durable', 'trace'
531
+ ]) || !hasOnlyKeys(outcome, OUTCOME_ALLOWED_KEYS)
532
+ || !hasAllKeys(outcome, OUTCOME_REQUIRED_KEYS)
533
+ || (durable !== undefined && (!hasOnlyKeys(durable, OUTCOME_ALLOWED_KEYS)
534
+ || !hasAllKeys(durable, OUTCOME_REQUIRED_KEYS))))
535
+ return false;
536
+ if (!isRemoteCommitHlc(body.last_commit_hlc)
537
+ || !isRemoteCommitHlc(outcome.last_commit_hlc)
538
+ || (durable !== undefined && !isRemoteCommitHlc(durable.last_commit_hlc)))
470
539
  return false;
471
540
  if (terminal !== undefined && terminal !== null
472
541
  && (typeof terminal !== 'object'
@@ -826,19 +895,16 @@ function validateCancelResponse(value, queryId, httpStatus) {
826
895
  if (!hasOnlyKeys(body, [
827
896
  'query_id', 'state', 'cancel_outcome', 'status', 'terminal_state', 'code',
828
897
  'committed', 'committed_statements', 'last_commit_epoch', 'last_commit_epoch_text',
898
+ 'last_commit_hlc',
829
899
  'first_commit_statement_index', 'last_commit_statement_index', 'completed_statements',
830
- 'statement_index', 'cancellation_reason', 'retryable', 'server_state', 'outcome', 'error',
831
- 'terminal_error'
900
+ 'statement_index', 'cancellation_reason', 'retryable', 'server_state', 'outcome', 'durable',
901
+ 'error', 'terminal_error'
832
902
  ])) {
833
903
  throw new KitError('SQL cancellation response has unknown fields', 'REMOTE_PROTOCOL');
834
904
  }
835
905
  if (body.outcome !== undefined && body.outcome !== null
836
906
  && (typeof body.outcome !== 'object'
837
- || !hasOnlyKeys(body.outcome, [
838
- 'committed', 'committed_statements', 'last_commit_epoch', 'last_commit_epoch_text',
839
- 'first_commit_statement_index', 'last_commit_statement_index', 'completed_statements',
840
- 'statement_index', 'serialization'
841
- ]))) {
907
+ || !hasOnlyKeys(body.outcome, OUTCOME_ALLOWED_KEYS))) {
842
908
  throw new KitError('SQL cancellation outcome has unknown fields', 'REMOTE_PROTOCOL');
843
909
  }
844
910
  if (body.error !== undefined && body.error !== null
@@ -1342,6 +1408,7 @@ export class RemoteDatabase {
1342
1408
  queryId = normalizeQueryId(queryId);
1343
1409
  const status = await this.rawQueryStatus(queryId);
1344
1410
  const committed = mergedCommitState(status.outcome?.committed, status.committed);
1411
+ const durable = status.durable ?? undefined;
1345
1412
  return {
1346
1413
  queryId: status.query_id,
1347
1414
  phase: status.server_state || status.state,
@@ -1353,10 +1420,12 @@ export class RemoteDatabase {
1353
1420
  committed,
1354
1421
  committedStatements: maxKnown(status.outcome?.committed_statements, status.committed_statements) ?? null,
1355
1422
  lastCommitEpoch: remoteEpoch(status.outcome?.last_commit_epoch_text ?? status.last_commit_epoch_text, status.outcome?.last_commit_epoch ?? status.last_commit_epoch),
1423
+ lastCommitHlc: pickCommitHlc(durable, status.outcome, status),
1356
1424
  firstCommitStatementIndex: status.outcome?.first_commit_statement_index
1357
1425
  ?? status.first_commit_statement_index ?? undefined,
1358
1426
  lastCommitStatementIndex: status.outcome?.last_commit_statement_index
1359
- ?? status.last_commit_statement_index ?? undefined
1427
+ ?? status.last_commit_statement_index ?? undefined,
1428
+ serializationState: pickSerializationState(status.outcome, durable)
1360
1429
  },
1361
1430
  terminalErrorCode: status.terminal_error?.code,
1362
1431
  terminalErrorCategory: status.terminal_error?.category,
@@ -1367,6 +1436,108 @@ export class RemoteDatabase {
1367
1436
  retryable: status.retryable
1368
1437
  };
1369
1438
  }
1439
+ /**
1440
+ * Text → embed under the active semantic identity → ANN retrieve
1441
+ * (`POST /kit/retrieve_text`, 0.64+).
1442
+ */
1443
+ async retrieveText(table, embeddingColumn, text, options = {}) {
1444
+ if (!Number.isInteger(embeddingColumn) || embeddingColumn < 0 || embeddingColumn > 0xffff) {
1445
+ throw new RangeError('embeddingColumn must be a u16 column id');
1446
+ }
1447
+ if (options.k !== undefined && (!Number.isSafeInteger(options.k) || options.k <= 0)) {
1448
+ throw new RangeError('k must be a positive safe integer');
1449
+ }
1450
+ const body = {
1451
+ table,
1452
+ embedding_column: embeddingColumn,
1453
+ text
1454
+ };
1455
+ if (options.k !== undefined)
1456
+ body.k = options.k;
1457
+ if (options.deadlineMs !== undefined)
1458
+ body.deadline_ms = options.deadlineMs;
1459
+ if (options.maxWork !== undefined)
1460
+ body.max_work = options.maxWork;
1461
+ const response = await this.request('/kit/retrieve_text', {
1462
+ method: 'POST',
1463
+ headers: { 'content-type': 'application/json' },
1464
+ body: JSON.stringify(body)
1465
+ });
1466
+ if (!response.ok) {
1467
+ throw new KitError(`retrieve_text failed with HTTP ${response.status}`, 'REMOTE_PROTOCOL');
1468
+ }
1469
+ const payload = await responseJsonStrict(response);
1470
+ if (payload === null || typeof payload !== 'object') {
1471
+ throw new KitError('retrieve_text response was not an object', 'REMOTE_PROTOCOL');
1472
+ }
1473
+ const env = payload;
1474
+ if (!Array.isArray(env.hits) || env.provenance === null || typeof env.provenance !== 'object') {
1475
+ throw new KitError('retrieve_text response missing hits/provenance', 'REMOTE_PROTOCOL');
1476
+ }
1477
+ const provenance = env.provenance;
1478
+ return {
1479
+ hits: env.hits.map((hit) => ({
1480
+ rowId: String(hit.row_id),
1481
+ rank: hit.rank,
1482
+ score: hit.score
1483
+ })),
1484
+ provenance: {
1485
+ embeddingColumn: provenance.embedding_column,
1486
+ providerRegistryGeneration: provenance.provider_registry_generation,
1487
+ querySourceFingerprint: String(provenance.query_source_fingerprint ?? ''),
1488
+ semanticIdentity: (provenance.semantic_identity ?? {})
1489
+ }
1490
+ };
1491
+ }
1492
+ /**
1493
+ * Build a multi-retriever hybrid search body for `POST /kit/search`.
1494
+ * Exposed for wire tests and callers that need the payload without executing.
1495
+ */
1496
+ static buildKitSearchBody(input) {
1497
+ if (!input.table)
1498
+ throw new TypeError('table is required');
1499
+ if (!input.retrievers || input.retrievers.length === 0) {
1500
+ throw new RangeError('search requires at least one retriever');
1501
+ }
1502
+ const limit = input.limit ?? 10;
1503
+ if (!Number.isSafeInteger(limit) || limit <= 0) {
1504
+ throw new RangeError('limit must be a positive safe integer');
1505
+ }
1506
+ const body = {
1507
+ table: input.table,
1508
+ retrievers: input.retrievers,
1509
+ fusion: { reciprocal_rank: { constant: input.fusionConstant ?? 60 } },
1510
+ limit
1511
+ };
1512
+ if (input.must && input.must.length > 0)
1513
+ body.must = input.must;
1514
+ if (input.rerank)
1515
+ body.rerank = input.rerank;
1516
+ if (input.projection)
1517
+ body.projection = input.projection;
1518
+ return body;
1519
+ }
1520
+ /** Multi-retriever hybrid search (`POST /kit/search`). */
1521
+ async kitSearch(body) {
1522
+ const response = await this.request('/kit/search', {
1523
+ method: 'POST',
1524
+ headers: { 'content-type': 'application/json' },
1525
+ body: JSON.stringify(body)
1526
+ });
1527
+ if (!response.ok) {
1528
+ throw new KitError(`kit search failed with HTTP ${response.status}`, 'REMOTE_PROTOCOL');
1529
+ }
1530
+ const payload = await responseJsonStrict(response);
1531
+ if (payload === null || typeof payload !== 'object') {
1532
+ throw new KitError('kit search response was not an object', 'REMOTE_PROTOCOL');
1533
+ }
1534
+ const env = payload;
1535
+ return {
1536
+ hits: Array.isArray(env.hits) ? env.hits : [],
1537
+ trace: env.trace,
1538
+ nextCursor: typeof env.next_cursor === 'string' ? env.next_cursor : undefined
1539
+ };
1540
+ }
1370
1541
  async sqlPage(sql, options) {
1371
1542
  await this.requireSqlPagination();
1372
1543
  if (options.projection.length === 0 || options.projection.length > 128
@@ -1657,16 +1828,19 @@ export class RemoteDatabase {
1657
1828
  if (committed === null) {
1658
1829
  throw new QueryOutcomeUnknownError(queryId, message, metadata);
1659
1830
  }
1831
+ const durable = status.durable ?? undefined;
1660
1832
  const durableOutcome = {
1661
1833
  committed,
1662
1834
  committedStatements: maxKnown(outcome?.committed_statements, status.committed_statements),
1663
1835
  lastCommitEpoch: remoteEpoch(outcome?.last_commit_epoch_text ?? status.last_commit_epoch_text, outcome?.last_commit_epoch ?? status.last_commit_epoch),
1836
+ lastCommitHlc: pickCommitHlc(durable, outcome, status),
1664
1837
  firstCommitStatementIndex: outcome?.first_commit_statement_index
1665
1838
  ?? status.first_commit_statement_index ?? undefined,
1666
1839
  lastCommitStatementIndex: outcome?.last_commit_statement_index
1667
1840
  ?? status.last_commit_statement_index ?? undefined,
1668
1841
  completedStatements: outcome?.completed_statements ?? status.completed_statements ?? undefined,
1669
- statementIndex: outcome?.statement_index ?? status.statement_index ?? undefined
1842
+ statementIndex: outcome?.statement_index ?? status.statement_index ?? undefined,
1843
+ serializationState: pickSerializationState(outcome, durable)
1670
1844
  };
1671
1845
  switch (status.terminal_error?.code) {
1672
1846
  case 'QUERY_CANCELLED':