@delali/narsil 0.2.4-next.47 → 0.2.4-next.49

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 (48) hide show
  1. package/README.md +2 -2
  2. package/dist/adapters/indexeddb.mjs +15 -10
  3. package/dist/{chunk-BFIH7OV5.mjs → chunk-2GWVQWGA.mjs} +3 -1
  4. package/dist/{chunk-UZTT2BKQ.mjs → chunk-56PJBIJ6.mjs} +891 -542
  5. package/dist/chunk-CBLS46IE.mjs +10 -0
  6. package/dist/{chunk-JQUL2T6I.mjs → chunk-GCM3JFVA.mjs} +1 -2
  7. package/dist/{chunk-4COAUBLJ.mjs → chunk-HGJC5L65.mjs} +4 -7
  8. package/dist/{chunk-DFZDV5FV.mjs → chunk-JXHUHFJ5.mjs} +27 -14
  9. package/dist/{chunk-XWICBGYT.mjs → chunk-KGRYQVZ5.mjs} +2 -5
  10. package/dist/{chunk-EV45L35L.mjs → chunk-M6JGMKA5.mjs} +391 -183
  11. package/dist/{chunk-PM52SMBT.mjs → chunk-OOSIDHA3.mjs} +2 -1
  12. package/dist/chunk-ORBLD3EL.mjs +6 -0
  13. package/dist/chunk-OWCFK42Q.mjs +30 -0
  14. package/dist/{chunk-WTONLDU3.mjs → chunk-RDGXYRF4.mjs} +1 -0
  15. package/dist/chunk-UNEEFTEU.mjs +7 -0
  16. package/dist/chunk-YEO6G2NG.mjs +6 -0
  17. package/dist/{client-C5BkUqB8.d.ts → client-DX7xPcNA.d.ts} +1 -1
  18. package/dist/client.d.ts +5 -5
  19. package/dist/client.mjs +224 -222
  20. package/dist/{config-B-ZI-ft5.d.ts → config-B41W23Us.d.ts} +1 -1
  21. package/dist/{config-BZRExglL.d.ts → config-Co-zAXqO.d.ts} +27 -11
  22. package/dist/direct-executor-HRTDWMVB.mjs +9 -0
  23. package/dist/distribution/coordinator/etcd.mjs +4 -7
  24. package/dist/distribution/coordinator/in-memory.mjs +2 -2
  25. package/dist/distribution/transport/grpc.mjs +7 -9
  26. package/dist/distribution/transport/in-memory.mjs +2 -1
  27. package/dist/distribution/transport/tcp.mjs +3 -2
  28. package/dist/distribution.d.ts +5 -5
  29. package/dist/distribution.mjs +121 -97
  30. package/dist/embeddings/openai.mjs +5 -3
  31. package/dist/{engine-Cjr1uBLa.d.ts → engine-CABZg25p.d.ts} +12 -8
  32. package/dist/index.browser.mjs +1514 -894
  33. package/dist/index.d.ts +5 -5
  34. package/dist/index.mjs +9 -8
  35. package/dist/invalidation/broadcast-channel.mjs +2 -1
  36. package/dist/invalidation/filesystem.mjs +3 -4
  37. package/dist/{options-BC68VPoE.d.ts → options-Dtk99qUs.d.ts} +1 -1
  38. package/dist/persistence/durability/checkpoint-worker.mjs +9 -8
  39. package/dist/react.d.ts +3 -3
  40. package/dist/react.mjs +7 -5
  41. package/dist/{search-DDHjfXhJ.d.ts → search-FjWhZN3f.d.ts} +20 -3
  42. package/dist/server.d.ts +6 -6
  43. package/dist/server.mjs +43 -30
  44. package/dist/vector/hnsw-build-worker.mjs +2 -4
  45. package/dist/vector/search-worker.mjs +3 -4
  46. package/dist/workers/entry.mjs +2 -2
  47. package/package.json +1 -1
  48. package/dist/direct-executor-EOTFGXTO.mjs +0 -8
@@ -0,0 +1,9 @@
1
+ export { createDirectExecutor } from './chunk-M6JGMKA5.mjs';
2
+ import './chunk-CBLS46IE.mjs';
3
+ import './chunk-TGP5M5R7.mjs';
4
+ import './chunk-HGJC5L65.mjs';
5
+ import './chunk-JXHUHFJ5.mjs';
6
+ import './chunk-U2BKYEC7.mjs';
7
+ import './chunk-2GWVQWGA.mjs';
8
+ import './chunk-RDGXYRF4.mjs';
9
+ import './chunk-P4ELXVJQ.mjs';
@@ -1,4 +1,5 @@
1
- import { compareCodePoints } from '../../chunk-BFIH7OV5.mjs';
1
+ import { MAX_NODE_ID_LENGTH, MAX_WATCHERS } from '../../chunk-ORBLD3EL.mjs';
2
+ import { compareCodePoints } from '../../chunk-2GWVQWGA.mjs';
2
3
  import { NarsilError, ErrorCodes } from '../../chunk-P4ELXVJQ.mjs';
3
4
  import { decode, encode } from '@msgpack/msgpack';
4
5
 
@@ -96,10 +97,8 @@ var LeaseManager = class {
96
97
  async revokeAll() {
97
98
  const revokePromises = [];
98
99
  for (const [, entry] of this.leases) {
99
- revokePromises.push(
100
- entry.lease.revoke().catch(() => {
101
- })
102
- );
100
+ revokePromises.push(entry.lease.revoke().catch(() => {
101
+ }));
103
102
  }
104
103
  this.leases.clear();
105
104
  await Promise.all(revokePromises);
@@ -238,9 +237,7 @@ async function writeUnderLease(context, registration) {
238
237
  }
239
238
 
240
239
  // src/distribution/coordinator/etcd/validation.ts
241
- var MAX_NODE_ID_LENGTH = 255;
242
240
  var VALID_PARTITION_STATES = /* @__PURE__ */ new Set(["UNASSIGNED", "INITIALISING", "ACTIVE", "MIGRATING", "DECOMMISSIONING"]);
243
- var MAX_WATCHERS = 64;
244
241
  function validateNodeId(nodeId) {
245
242
  if (nodeId.length === 0) {
246
243
  throw new NarsilError(ErrorCodes.CONFIG_INVALID, "Node ID must not be empty");
@@ -1,8 +1,8 @@
1
- import { compareCodePoints } from '../../chunk-BFIH7OV5.mjs';
1
+ import { NODE_HEARTBEAT_TTL_MS } from '../../chunk-ORBLD3EL.mjs';
2
+ import { compareCodePoints } from '../../chunk-2GWVQWGA.mjs';
2
3
 
3
4
  // src/distribution/coordinator/in-memory.ts
4
5
  var NODE_HEARTBEAT_PREFIX = "_narsil/node/";
5
- var NODE_HEARTBEAT_TTL_MS = 3e4;
6
6
  function bytesEqual(a, b) {
7
7
  if (a.byteLength !== b.byteLength) {
8
8
  return false;
@@ -1,5 +1,6 @@
1
- import { decodeTransportMessage, encodeTransportMessage } from '../../chunk-PM52SMBT.mjs';
2
- import { TransportError, TransportErrorCodes, MAX_MESSAGE_SIZE_BYTES } from '../../chunk-JQUL2T6I.mjs';
1
+ import { decodeTransportMessage, encodeTransportMessage } from '../../chunk-OOSIDHA3.mjs';
2
+ import { MAX_MESSAGE_SIZE_BYTES, GRPC_KEEPALIVE_TIMEOUT_MS, GRPC_KEEPALIVE_TIME_MS, GRPC_ENVELOPE_OVERHEAD_BYTES } from '../../chunk-UNEEFTEU.mjs';
3
+ import { TransportError, TransportErrorCodes } from '../../chunk-GCM3JFVA.mjs';
3
4
  import { NarsilError, ErrorCodes } from '../../chunk-P4ELXVJQ.mjs';
4
5
 
5
6
  // src/distribution/transport/grpc/codec.ts
@@ -123,15 +124,12 @@ var DEFAULT_GRPC_CONFIG = {
123
124
  replicationTimeout: 1e4,
124
125
  snapshotTimeout: 3e5
125
126
  };
126
- var ENVELOPE_OVERHEAD_BYTES = 1024;
127
- var KEEPALIVE_TIME_MS = 3e4;
128
- var KEEPALIVE_TIMEOUT_MS = 1e4;
129
127
  function channelOptions() {
130
128
  return {
131
- "grpc.max_receive_message_length": MAX_MESSAGE_SIZE_BYTES + ENVELOPE_OVERHEAD_BYTES,
132
- "grpc.max_send_message_length": MAX_MESSAGE_SIZE_BYTES + ENVELOPE_OVERHEAD_BYTES,
133
- "grpc.keepalive_time_ms": KEEPALIVE_TIME_MS,
134
- "grpc.keepalive_timeout_ms": KEEPALIVE_TIMEOUT_MS,
129
+ "grpc.max_receive_message_length": MAX_MESSAGE_SIZE_BYTES + GRPC_ENVELOPE_OVERHEAD_BYTES,
130
+ "grpc.max_send_message_length": MAX_MESSAGE_SIZE_BYTES + GRPC_ENVELOPE_OVERHEAD_BYTES,
131
+ "grpc.keepalive_time_ms": GRPC_KEEPALIVE_TIME_MS,
132
+ "grpc.keepalive_timeout_ms": GRPC_KEEPALIVE_TIMEOUT_MS,
135
133
  "grpc.keepalive_permit_without_calls": 1
136
134
  };
137
135
  }
@@ -1,4 +1,5 @@
1
- import { DEFAULT_TRANSPORT_CONFIG, TransportError, TransportErrorCodes, MAX_MESSAGE_SIZE_BYTES } from '../../chunk-JQUL2T6I.mjs';
1
+ import { MAX_MESSAGE_SIZE_BYTES } from '../../chunk-UNEEFTEU.mjs';
2
+ import { DEFAULT_TRANSPORT_CONFIG, TransportError, TransportErrorCodes } from '../../chunk-GCM3JFVA.mjs';
2
3
 
3
4
  // src/distribution/transport/in-memory.ts
4
5
  function createInMemoryNetwork() {
@@ -1,5 +1,6 @@
1
- import { DEFAULT_TCP_CONFIG, encodeTransportMessage, encodeFrame, FRAME_TYPE_REQUEST, FrameParser, FRAME_TYPE_RESPONSE, decodeTransportMessage, FRAME_TYPE_STREAM_CHUNK, FRAME_TYPE_STREAM_END } from '../../chunk-PM52SMBT.mjs';
2
- import { MAX_MESSAGE_SIZE_BYTES, TransportError, TransportErrorCodes } from '../../chunk-JQUL2T6I.mjs';
1
+ import { DEFAULT_TCP_CONFIG, encodeTransportMessage, encodeFrame, FRAME_TYPE_REQUEST, FrameParser, FRAME_TYPE_RESPONSE, decodeTransportMessage, FRAME_TYPE_STREAM_CHUNK, FRAME_TYPE_STREAM_END } from '../../chunk-OOSIDHA3.mjs';
2
+ import { MAX_MESSAGE_SIZE_BYTES } from '../../chunk-UNEEFTEU.mjs';
3
+ import { TransportError, TransportErrorCodes } from '../../chunk-GCM3JFVA.mjs';
3
4
  import { connect as connect$1, createServer as createServer$1 } from 'net';
4
5
  import { connect, createServer } from 'tls';
5
6
 
@@ -1,12 +1,12 @@
1
- import { a as CreateIndexOptions, C as ClusterNamespace, b as ClusterNodeConfig } from './config-B-ZI-ft5.js';
2
- export { c as ClusterControllerConfig, d as ClusterNodeInfo, e as ClusterQueryConfig, N as NodeReadiness, R as ReplicationConfig } from './config-B-ZI-ft5.js';
3
- import { N as NarsilEventMap, a as Narsil } from './engine-Cjr1uBLa.js';
4
- import { B as BatchResult, L as ListParams, g as ListResult, i as SuggestParams, j as SuggestResult, Q as QueryParams, h as PreflightResult, f as IndexStats, P as PartitionStatsResult, M as MemoryStats, e as QueryResult } from './search-DDHjfXhJ.js';
1
+ import { a as CreateIndexOptions, C as ClusterNamespace, b as ClusterNodeConfig } from './config-B41W23Us.js';
2
+ export { c as ClusterControllerConfig, d as ClusterNodeInfo, e as ClusterQueryConfig, N as NodeReadiness, R as ReplicationConfig } from './config-B41W23Us.js';
3
+ import { N as NarsilEventMap, a as Narsil } from './engine-CABZg25p.js';
4
+ import { B as BatchResult, L as ListParams, g as ListResult, i as SuggestParams, j as SuggestResult, Q as QueryParams, h as PreflightResult, f as IndexStats, P as PartitionStatsResult, M as MemoryStats, e as QueryResult } from './search-FjWhZN3f.js';
5
5
  import { I as IndexConfig, A as AnyDocument, b as InsertOptions } from './schema-B7juWg8Q.js';
6
6
  import { b as NodeCapacity, N as NodeRole } from './types-DsSSjY4d.js';
7
7
  export { c as AllocationConstraints, d as AllocationEvent, A as AllocationTable, C as ClusterCoordinator, e as NodeEvent, a as NodeRegistration, P as PartitionAssignment, f as PartitionState, S as SchemaEvent, U as UnassignedReason } from './types-DsSSjY4d.js';
8
8
  export { L as ListenHandler, N as NodeTransport, R as RespondFn, T as TransportConfig, a as TransportMessage } from './types-D5OwhtsQ.js';
9
- import './config-BZRExglL.js';
9
+ import './config-Co-zAXqO.js';
10
10
  import './adapters-79OIa4xm.js';
11
11
 
12
12
  /**
@@ -1,23 +1,46 @@
1
- import { createEngineCore, createNarsilFromCore, runEngineQueryStats, runEngineListDocuments, runEngineSuggest, runEnginePreflight, runEngineQuery, createEngineIndex, applyIndexEntry, applyDeleteEntry, DEFAULT_SUGGEST_LIMIT, MAX_SUGGEST_LIMIT, now, listBindingOf, validateEntryBatchPayload, createAckMessage, validateEntryPayload, validateForwardBatchPayload, createForwardBatchResultMessage, queryBindingOf, foldGroupReducer, clampLimit, createForwardBatchMessage, validateForwardBatchResultPayload, createForwardMessage, validateReplicationEntry, MAX_SUGGEST_SCATTER_LIMIT, chunkByBudget, WIRE_BATCH_BUDGET, computeEntryChecksum, dedupePinnedEntries, SUGGEST_OVERSAMPLE_FACTOR, SUGGEST_OVERSAMPLE_PADDING, createEntryMessage, createEntryBatchMessage, createInsyncConfirmMessage, validateAckPayload, createInsyncRemoveMessage, validateInsyncConfirmPayload, createInsyncAddMessage } from './chunk-UZTT2BKQ.mjs';
2
- import { ReplicationMessageTypes, TransportErrorCodes, ClusterMessageTypes, QueryMessageTypes, TransportError, MAX_MESSAGE_SIZE_BYTES } from './chunk-JQUL2T6I.mjs';
3
- import { validateIndexName, indexConfigKey, putIndexMetadata, getIndexMetadata, MAX_PARTITION_COUNT, MAX_INDEX_NAME_LENGTH } from './chunk-XWICBGYT.mjs';
4
- import { deserializePayloadV2, createPartitionIndex, resolveProjection, clampRowCount, sortSignatureOf, requireMatchingCursor, decodePageCursor, normalizeSort, encodePageCursor, applyProjection, readSortValues, getLanguage, DEFAULT_PAGE_SIZE, requireWithinResultWindow, fnv1a, FILTER_EXPRESSION_KEYS, MAX_CURSOR_LENGTH, mergePartitionStats, RESULT_WINDOW, FIELD_FILTER_OPERATORS, MAX_NESTING_DEPTH } from './chunk-EV45L35L.mjs';
1
+ import { MAX_MESSAGE_SIZE_BYTES } from './chunk-UNEEFTEU.mjs';
2
+ import { validateIndexName, indexConfigKey, putIndexMetadata, getIndexMetadata } from './chunk-KGRYQVZ5.mjs';
3
+ import { createEngineCore, createNarsilFromCore, runEngineQueryStats, runEngineListDocuments, runEngineSuggest, runEnginePreflight, runEngineQuery, createEngineIndex, applyIndexEntry, applyDeleteEntry, now, listBindingOf, validateEntryBatchPayload, createAckMessage, validateEntryPayload, validateForwardBatchPayload, createForwardBatchResultMessage, queryBindingOf, foldGroupReducer, clampLimit, createForwardBatchMessage, validateForwardBatchResultPayload, createForwardMessage, validateReplicationEntry, computeEntryChecksum, dedupePinnedEntries, createEntryMessage, createEntryBatchMessage, createInsyncConfirmMessage, validateAckPayload, createInsyncRemoveMessage, validateInsyncConfirmPayload, createInsyncAddMessage } from './chunk-56PJBIJ6.mjs';
4
+ import { ReplicationMessageTypes, TransportErrorCodes, ClusterMessageTypes, QueryMessageTypes, TransportError } from './chunk-GCM3JFVA.mjs';
5
+ import { DEFAULT_SUGGEST_LIMIT, MAX_SUGGEST_LIMIT, MAX_PARTITION_COUNT, MAX_REPLICATION_FACTOR, MAX_SUGGEST_SCATTER_LIMIT, WIRE_BATCH_BUDGET, MAX_INDEX_NAME_LENGTH, MAX_DOC_ID_LENGTH, SUGGEST_OVERSAMPLE_FACTOR, SUGGEST_OVERSAMPLE_PADDING, INDEX_NAME_PATTERN } from './chunk-OWCFK42Q.mjs';
6
+ import { deserializePayloadV2, createPartitionIndex, resolveProjection, clampRowCount, sortSignatureOf, requireMatchingCursor, decodePageCursor, normalizeSort, encodePageCursor, applyProjection, readSortValues, getLanguage, requireWithinResultWindow, fnv1a, FILTER_EXPRESSION_KEYS, mergePartitionStats, FIELD_FILTER_OPERATORS, MAX_NESTING_DEPTH } from './chunk-M6JGMKA5.mjs';
7
+ import { DEFAULT_PAGE_SIZE, MAX_SORT_FIELDS, MAX_CURSOR_LENGTH, RESULT_WINDOW } from './chunk-CBLS46IE.mjs';
5
8
  import './chunk-TGP5M5R7.mjs';
6
- import './chunk-4COAUBLJ.mjs';
7
- import './chunk-DFZDV5FV.mjs';
9
+ import './chunk-HGJC5L65.mjs';
10
+ import './chunk-JXHUHFJ5.mjs';
8
11
  import { crc32 } from './chunk-KMMJMDUA.mjs';
9
12
  import './chunk-U2BKYEC7.mjs';
10
- import { compareCodePoints, toComparableSortValue, compareComparableKeys, compareSortValues } from './chunk-BFIH7OV5.mjs';
11
- import { generateId } from './chunk-WTONLDU3.mjs';
13
+ import { compareCodePoints, toComparableSortValue, compareComparableKeys, compareSortValues } from './chunk-2GWVQWGA.mjs';
14
+ import { generateId } from './chunk-RDGXYRF4.mjs';
12
15
  import { ErrorCodes, NarsilError, describeError } from './chunk-P4ELXVJQ.mjs';
13
16
  import { encode, decode } from '@msgpack/msgpack';
14
17
 
15
- // src/distribution/cluster/controller/types.ts
16
- var CONTROLLER_LEASE_KEY = "_narsil/controller";
18
+ // src/distribution/cluster/constants.ts
19
+ var LEADERSHIP_IMBALANCE_THRESHOLD = 2;
20
+ var DEFAULT_ESTIMATED_PARTITION_BYTES = 50 * 1024 * 1024;
21
+ var REBALANCE_THRESHOLD = 0.1;
22
+ var BOOTSTRAP_CAS_ATTEMPTS = 5;
23
+ var ALLOCATION_CAS_ATTEMPTS = 5;
24
+ var ALLOCATION_RETRY_DELAY_MS = 1e3;
25
+ var TEARDOWN_CAS_ATTEMPTS = 5;
26
+ var TEARDOWN_RETRY_DELAY_MS = 500;
27
+ var TEARDOWN_RETRY_ROUNDS = 3;
28
+ var RECOVERY_CAS_ATTEMPTS = 5;
29
+ var PARTITION_STORES_TIMEOUT_MS = 5e3;
17
30
  var DEFAULT_CONTROLLER_CONFIG = {
18
31
  leaseTtlMs: 15e3,
19
32
  standbyRetryMs: 5e3
20
33
  };
34
+ var DEFAULT_NODE_LIFECYCLE_CONFIG = {
35
+ bootstrapRetryBaseMs: 1e3,
36
+ bootstrapRetryMaxMs: 5e3,
37
+ bootstrapMaxRetries: 10,
38
+ allocationDebounceMs: 250,
39
+ nodeHeartbeatIntervalMs: 1e4
40
+ };
41
+
42
+ // src/distribution/cluster/controller/types.ts
43
+ var CONTROLLER_LEASE_KEY = "_narsil/controller";
21
44
 
22
45
  // src/distribution/cluster/controller/election.ts
23
46
  function createElectionState() {
@@ -95,10 +118,6 @@ var balanceDecider = {
95
118
  }
96
119
  };
97
120
 
98
- // src/distribution/cluster/allocator/types.ts
99
- var REBALANCE_THRESHOLD = 0.1;
100
- var DEFAULT_ESTIMATED_PARTITION_BYTES = 50 * 1024 * 1024;
101
-
102
121
  // src/distribution/cluster/allocator/deciders/capacity.ts
103
122
  function createCapacityDecider(estimatedPartitionBytes) {
104
123
  const bytesPerPartition = DEFAULT_ESTIMATED_PARTITION_BYTES;
@@ -417,7 +436,6 @@ function holdsLastCopy(assignment, nodeId) {
417
436
  }
418
437
 
419
438
  // src/distribution/cluster/allocator/leadership.ts
420
- var LEADERSHIP_IMBALANCE_THRESHOLD = 2;
421
439
  function loadOf(nodeId, counts, shares) {
422
440
  const share = shares.get(nodeId);
423
441
  return (counts.get(nodeId) ?? 0) / (share === void 0 || share <= 0 ? 1 : share);
@@ -822,8 +840,6 @@ function createPartitionStoresResultMessage(result, sourceNodeId, requestId) {
822
840
  }
823
841
 
824
842
  // src/distribution/cluster/controller/event-loop/unassigned-recovery.ts
825
- var RECOVERY_CAS_ATTEMPTS = 5;
826
- var PARTITION_STORES_TIMEOUT_MS = 5e3;
827
843
  function liveHoldersOfUnassignedPartitions(table, liveNodeIds) {
828
844
  const holders = /* @__PURE__ */ new Set();
829
845
  for (const assignment of table.assignments.values()) {
@@ -1026,11 +1042,6 @@ async function recoverUnassignedPartitions(coordinator, transport, indexName, co
1026
1042
  function holdsDataNode(nodes) {
1027
1043
  return nodes.some((node) => node.roles.includes("data"));
1028
1044
  }
1029
- var ALLOCATION_CAS_ATTEMPTS = 5;
1030
- var ALLOCATION_RETRY_DELAY_MS = 1e3;
1031
- var TEARDOWN_CAS_ATTEMPTS = 5;
1032
- var TEARDOWN_RETRY_ROUNDS = 3;
1033
- var TEARDOWN_RETRY_DELAY_MS = 500;
1034
1045
  async function runAllocatorForIndex(coordinator, indexName, nodes, isActive, attempt = 0) {
1035
1046
  if (!isActive()) {
1036
1047
  return;
@@ -1226,7 +1237,15 @@ async function handleSchemaEvent(event, coordinator, state, isActive, onError) {
1226
1237
  await tearDownAllocation(event.indexName, coordinator, state, isActive, 0, onError);
1227
1238
  }
1228
1239
  }
1240
+
1241
+ // src/distribution/replication/constants.ts
1242
+ var REPLICATION_ENTRY_FIXED_OVERHEAD_BYTES = 40;
1243
+ var DEFAULT_LOG_RETENTION_BYTES = 268435456;
1229
1244
  var INSYNC_CAS_ATTEMPTS = 5;
1245
+ var SNAPSHOT_CHUNK_SIZE = 65536;
1246
+ var MAX_SNAPSHOT_SIZE_BYTES = 2 * 1024 * 1024 * 1024;
1247
+
1248
+ // src/distribution/replication/insync.ts
1230
1249
  var REFUSE = { outcome: "refuse" };
1231
1250
  var ACCEPT = { outcome: "accept" };
1232
1251
  async function updateInsyncSet(request, coordinator, decide) {
@@ -1416,7 +1435,6 @@ async function handleBootstrapCompleteMessage(message, respond, coordinator, con
1416
1435
  payload: encode(resultPayload)
1417
1436
  });
1418
1437
  }
1419
- var BOOTSTRAP_CAS_ATTEMPTS = 5;
1420
1438
  async function processBootstrapComplete(payload, coordinator) {
1421
1439
  for (let attempt = 0; attempt < BOOTSTRAP_CAS_ATTEMPTS; attempt++) {
1422
1440
  const table = await coordinator.getAllocation(payload.indexName);
@@ -2378,15 +2396,6 @@ async function leaveCluster(config) {
2378
2396
  await config.coordinator.deregisterNode(config.registration.nodeId);
2379
2397
  }
2380
2398
 
2381
- // src/distribution/cluster/node-lifecycle/types.ts
2382
- var DEFAULT_NODE_LIFECYCLE_CONFIG = {
2383
- bootstrapRetryBaseMs: 1e3,
2384
- bootstrapRetryMaxMs: 5e3,
2385
- bootstrapMaxRetries: 10,
2386
- allocationDebounceMs: 250,
2387
- nodeHeartbeatIntervalMs: 1e4
2388
- };
2389
-
2390
2399
  // src/distribution/cluster/node-lifecycle/index.ts
2391
2400
  function createDataNodeLifecycle(config) {
2392
2401
  let status = "stopped";
@@ -2555,12 +2564,6 @@ async function nodeHasOtherPartitions(indexName, removedPartitionId, deps) {
2555
2564
  return false;
2556
2565
  }
2557
2566
 
2558
- // src/distribution/replication/snapshot-constants.ts
2559
- var SNAPSHOT_CHUNK_SIZE = 65536;
2560
- var MAX_SNAPSHOT_SIZE_BYTES = 2 * 1024 * 1024 * 1024;
2561
- var SNAPSHOT_HEADER_SENTINEL_SEQNO = Number.MAX_SAFE_INTEGER;
2562
- var SNAPSHOT_HEADER_SENTINEL_PARTITION_ID = 4294967295;
2563
-
2564
2567
  // src/distribution/replication/snapshot-stream-apply.ts
2565
2568
  function fail(state, code, message, details = {}) {
2566
2569
  if (state.failure !== null) {
@@ -2877,9 +2880,34 @@ function toStreamFailure(err, defaultCode, defaultMessage) {
2877
2880
  };
2878
2881
  }
2879
2882
 
2880
- // src/distribution/cluster-node/bootstrap-fetch.ts
2883
+ // src/distribution/cluster-node/constants.ts
2884
+ var DEFAULT_PARTITION_COUNT = 5;
2885
+ var DEFAULT_REPLICATION_FACTOR = 1;
2886
+ var DEFAULT_CAPACITY = {
2887
+ memoryBytes: 8e9,
2888
+ cpuCores: 4,
2889
+ diskBytes: null
2890
+ };
2891
+ var DEFAULT_CREATE_INDEX_WAIT_MS = 3e4;
2881
2892
  var CAPACITY_EXHAUSTED_BACKOFF_BASE_MS = 100;
2882
2893
  var CAPACITY_EXHAUSTED_BACKOFF_MAX_MS = 500;
2894
+ var JITTERED_BACKOFF_POLL_INTERVAL_MS = 20;
2895
+ var DEFAULT_BOOTSTRAP_SYNC_DEADLINE_MS = 6e5;
2896
+ var SYNCED_POSITION_REPORT_TIMEOUT_MS = 5e3;
2897
+ var ADMISSION_TIMEOUT_MS = 1e4;
2898
+ var CATCH_UP_TICK_MS = 1e3;
2899
+ var MAX_CATCH_UP_IN_FLIGHT_BYTES = 67108864;
2900
+ var CLEAR_PAGE_SIZE = 1e3;
2901
+ var DEFAULT_MAX_CONCURRENT_SNAPSHOTS = 2;
2902
+ var DEFAULT_MAX_PER_SOURCE_SNAPSHOTS = 1;
2903
+ var DEFAULT_MAX_STREAMS_PER_INDEX = 4;
2904
+ var SNAPSHOT_CHUNK_YIELD_INTERVAL_MS = 8;
2905
+ var MAX_SNAPSHOT_SYNC_REQUEST_BYTES = 4096;
2906
+ var MAX_SOURCE_ID_LENGTH = 256;
2907
+ var MAX_WAIT_FOR_ACTIVE_REPLICAS = 255;
2908
+ var MIN_CONTROLLER_LEASE_TTL_MS = 1e3;
2909
+
2910
+ // src/distribution/cluster-node/bootstrap-fetch.ts
2883
2911
  var RETRY_ANY_TARGET_CODES = /* @__PURE__ */ new Set([
2884
2912
  ErrorCodes.SNAPSHOT_SYNC_TRANSPORT_FAILED,
2885
2913
  ErrorCodes.SNAPSHOT_SYNC_TIMEOUT,
@@ -2990,7 +3018,6 @@ async function fetchSnapshotFromAnyTarget(indexName, primaryNodeId, targets, dea
2990
3018
  }
2991
3019
  return lastFailure;
2992
3020
  }
2993
- var JITTERED_BACKOFF_POLL_INTERVAL_MS = 20;
2994
3021
  async function jitteredBackoff(baseMs, maxMs, deadline, abortCheck) {
2995
3022
  const plannedMs = Math.floor(baseMs + Math.random() * (maxMs - baseMs));
2996
3023
  const remainingMs = deadline - Date.now();
@@ -3345,7 +3372,6 @@ async function dropExistingIndex(engine, indexName, primaryNodeId) {
3345
3372
  }
3346
3373
 
3347
3374
  // src/distribution/cluster-node/bootstrap-sync/state.ts
3348
- var DEFAULT_BOOTSTRAP_SYNC_DEADLINE_MS = 6e5;
3349
3375
  function createBootstrapSyncState() {
3350
3376
  return {
3351
3377
  inFlight: /* @__PURE__ */ new Map(),
@@ -3767,7 +3793,6 @@ function readLocalLogState(indexName, partitionId, deps) {
3767
3793
  const newestEntry = log.getEntry(lastSeqNo);
3768
3794
  return { lastSeqNo, lastPrimaryTerm: newestEntry?.primaryTerm ?? lastPrimaryTerm };
3769
3795
  }
3770
- var SYNCED_POSITION_REPORT_TIMEOUT_MS = 5e3;
3771
3796
  async function reportSyncedPosition(indexName, partitionId, target, knownSeqNo, deadline, deps) {
3772
3797
  const logState = readLocalLogState(indexName, partitionId, deps);
3773
3798
  if (logState.lastSeqNo <= knownSeqNo) {
@@ -4392,8 +4417,6 @@ function getInSyncReplicaTargets(assignment, localNodeId, pendingAdmissions = []
4392
4417
  }
4393
4418
 
4394
4419
  // src/distribution/cluster-node/catch-up/state.ts
4395
- var CATCH_UP_TICK_MS = 1e3;
4396
- var CATCH_UP_IN_FLIGHT_BYTE_CEILING = 67108864;
4397
4420
  function partitionKey2(indexName, partitionId) {
4398
4421
  return `${indexName}:${partitionId}`;
4399
4422
  }
@@ -4459,7 +4482,6 @@ function clearPendingAdmission(state, indexName, partitionId, replicaNodeId) {
4459
4482
  }
4460
4483
 
4461
4484
  // src/distribution/cluster-node/catch-up/admission.ts
4462
- var ADMISSION_TIMEOUT_MS = 1e4;
4463
4485
  async function sendToController(payload, controllerNodeId, deps) {
4464
4486
  const targets = await resolveNodeTargets(controllerNodeId, deps);
4465
4487
  for (const target of targets) {
@@ -4534,6 +4556,30 @@ async function proposeAdmission(state, deps, indexName, partitionId, assignment,
4534
4556
  clearPendingAdmission(state, indexName, partitionId, replicaNodeId);
4535
4557
  }
4536
4558
  }
4559
+
4560
+ // src/distribution/chunking.ts
4561
+ function chunkByBudget(items, budget) {
4562
+ const chunks = [];
4563
+ let current = [];
4564
+ let currentBytes = 0;
4565
+ for (const item of items) {
4566
+ const itemBytes = budget.payloadBytesOf(item) + budget.overheadBytes;
4567
+ const previous = current[current.length - 1];
4568
+ const breaksRun = previous !== void 0 && budget.breaksRun?.(item, previous) === true;
4569
+ const overflows = current.length >= budget.maxCount || current.length > 0 && currentBytes + itemBytes > budget.maxBytes;
4570
+ if (breaksRun || overflows) {
4571
+ chunks.push(current);
4572
+ current = [];
4573
+ currentBytes = 0;
4574
+ }
4575
+ current.push(item);
4576
+ currentBytes += itemBytes;
4577
+ }
4578
+ if (current.length > 0) {
4579
+ chunks.push(current);
4580
+ }
4581
+ return chunks;
4582
+ }
4537
4583
  async function replicateToReplicas(entry, inSyncReplicas, transport, sourceNodeId, resolveNodeTargets3) {
4538
4584
  const message = createEntryMessage(entry, sourceNodeId);
4539
4585
  return sendAndCollectAcks(message, entry, inSyncReplicas, transport, resolveNodeTargets3);
@@ -4604,9 +4650,8 @@ function isMatchingAck(response, entry) {
4604
4650
  }
4605
4651
 
4606
4652
  // src/distribution/cluster-node/catch-up/pump.ts
4607
- var ENTRY_FIXED_OVERHEAD_BYTES = 40;
4608
4653
  function entryBytes(entry) {
4609
- return ENTRY_FIXED_OVERHEAD_BYTES + entry.indexName.length + entry.documentId.length + (entry.document?.byteLength ?? 0);
4654
+ return REPLICATION_ENTRY_FIXED_OVERHEAD_BYTES + entry.indexName.length + entry.documentId.length + (entry.document?.byteLength ?? 0);
4610
4655
  }
4611
4656
  function batchBytes(entries) {
4612
4657
  let total = 0;
@@ -4632,7 +4677,7 @@ function nextWireBatch(state, pending) {
4632
4677
  if (batch.length === 0) {
4633
4678
  return [];
4634
4679
  }
4635
- const available = CATCH_UP_IN_FLIGHT_BYTE_CEILING - state.inFlightBytes;
4680
+ const available = MAX_CATCH_UP_IN_FLIGHT_BYTES - state.inFlightBytes;
4636
4681
  return batchBytes(batch) > available ? [] : batch;
4637
4682
  }
4638
4683
  async function pumpReplica(state, deps, indexName, partitionId, assignment, replicaNodeId, cursor) {
@@ -4844,13 +4889,9 @@ async function writeHeldPartitions(core, indexName, next, indexesBehindOnDisk) {
4844
4889
  indexesBehindOnDisk.delete(indexName);
4845
4890
  }
4846
4891
 
4847
- // src/distribution/replication/types.ts
4848
- var DEFAULT_LOG_RETENTION_BYTES = 268435456;
4849
-
4850
4892
  // src/distribution/replication/log.ts
4851
- var ENTRY_FIXED_OVERHEAD_BYTES2 = 40;
4852
4893
  function estimateEntrySize(entry) {
4853
- return ENTRY_FIXED_OVERHEAD_BYTES2 + entry.indexName.length + entry.documentId.length + (entry.document?.byteLength ?? 0);
4894
+ return REPLICATION_ENTRY_FIXED_OVERHEAD_BYTES + entry.indexName.length + entry.documentId.length + (entry.document?.byteLength ?? 0);
4854
4895
  }
4855
4896
  var computeChecksum = computeEntryChecksum;
4856
4897
  function createReplicationLog(partitionId, config) {
@@ -4901,7 +4942,7 @@ function createReplicationLog(partitionId, config) {
4901
4942
  }
4902
4943
  }
4903
4944
  function assertEntryFitsRetention(entry) {
4904
- const entrySize = ENTRY_FIXED_OVERHEAD_BYTES2 + entry.indexName.length + entry.documentId.length + (entry.document?.byteLength ?? 0);
4945
+ const entrySize = REPLICATION_ENTRY_FIXED_OVERHEAD_BYTES + entry.indexName.length + entry.documentId.length + (entry.document?.byteLength ?? 0);
4905
4946
  if (entrySize > retentionBytes) {
4906
4947
  throw new NarsilError(
4907
4948
  ErrorCodes.REPLICATION_LOG_FULL,
@@ -5507,9 +5548,6 @@ async function authorizeSnapshotRequest(coordinator, indexName, sourceId) {
5507
5548
  }
5508
5549
 
5509
5550
  // src/distribution/cluster-node/snapshot-cache.ts
5510
- var DEFAULT_MAX_CONCURRENT_SNAPSHOTS = 2;
5511
- var DEFAULT_MAX_PER_SOURCE_SNAPSHOTS = 1;
5512
- var DEFAULT_MAX_STREAMS_PER_INDEX = 4;
5513
5551
  function createSnapshotCacheState(maxConcurrent = DEFAULT_MAX_CONCURRENT_SNAPSHOTS, maxPerSource = DEFAULT_MAX_PER_SOURCE_SNAPSHOTS, maxStreamsPerIndex = DEFAULT_MAX_STREAMS_PER_INDEX) {
5514
5552
  if (!Number.isInteger(maxConcurrent) || maxConcurrent <= 0) {
5515
5553
  throw new NarsilError(ErrorCodes.CONFIG_INVALID, "maxConcurrent must be a positive integer", {
@@ -5635,7 +5673,6 @@ async function acquireSnapshotBuild(state, indexName, builder) {
5635
5673
  return entry.promise;
5636
5674
  }
5637
5675
  var SNAPSHOT_SYNC_ERROR_TYPE = `${ReplicationMessageTypes.SNAPSHOT_SYNC_REQUEST}.error`;
5638
- var CHUNK_YIELD_INTERVAL_MS = 8;
5639
5676
  function createSingleResponseSink(respond) {
5640
5677
  const sink = ((response) => {
5641
5678
  if (sink.closed) {
@@ -5677,7 +5714,7 @@ async function streamSnapshotToReplica(sink, nodeId, requestId, indexName, build
5677
5714
  assertMessageWithinLimit(chunkBytes, "SNAPSHOT_CHUNK");
5678
5715
  await respondMessage(sink, ReplicationMessageTypes.SNAPSHOT_CHUNK, nodeId, requestId, chunkBytes);
5679
5716
  offset = end;
5680
- if (offset < totalBytes && now2() - lastYieldAt >= CHUNK_YIELD_INTERVAL_MS) {
5717
+ if (offset < totalBytes && now2() - lastYieldAt >= SNAPSHOT_CHUNK_YIELD_INTERVAL_MS) {
5681
5718
  await yieldToEventLoop();
5682
5719
  lastYieldAt = now2();
5683
5720
  }
@@ -5733,6 +5770,10 @@ async function respondError(sink, sourceId, requestId, code, message) {
5733
5770
  sink.closed = true;
5734
5771
  }
5735
5772
 
5773
+ // src/distribution/replication/snapshot-constants.ts
5774
+ var SNAPSHOT_HEADER_SENTINEL_SEQNO = Number.MAX_SAFE_INTEGER;
5775
+ var SNAPSHOT_HEADER_SENTINEL_PARTITION_ID = 4294967295;
5776
+
5736
5777
  // src/distribution/cluster-node/snapshot-sync-handler/metadata.ts
5737
5778
  async function defaultSnapshotHeaderMetadataProvider(coordinator, indexName) {
5738
5779
  try {
@@ -5853,8 +5894,6 @@ function buildSnapshotForRequest(deps, indexName, options) {
5853
5894
  }
5854
5895
  return buildSnapshot(deps, indexName);
5855
5896
  }
5856
- var INDEX_NAME_PATTERN = /^[a-zA-Z0-9][a-zA-Z0-9._-]*$/;
5857
- var MAX_SOURCE_ID_LENGTH = 256;
5858
5897
  function containsControlCharacter(value) {
5859
5898
  for (let i = 0; i < value.length; i++) {
5860
5899
  const code = value.charCodeAt(i);
@@ -5870,7 +5909,6 @@ function containsControlCharacter(value) {
5870
5909
  }
5871
5910
  return false;
5872
5911
  }
5873
- var MAX_SNAPSHOT_SYNC_REQUEST_BYTES = 4096;
5874
5912
  var REQUEST_DECODE_OPTIONS = {
5875
5913
  maxMapLength: 16,
5876
5914
  maxArrayLength: 16,
@@ -6021,17 +6059,15 @@ async function handlePartitionStores(message, respond, deps) {
6021
6059
  await respond(createPartitionStoresResultMessage(result, deps.nodeId, message.requestId));
6022
6060
  }
6023
6061
 
6024
- // src/distribution/query/validators/common.ts
6062
+ // src/distribution/query/constants.ts
6025
6063
  var MAX_PARTITION_IDS = MAX_PARTITION_COUNT;
6026
6064
  var MAX_TERM_LENGTH = 1024;
6027
6065
  var MAX_TERMS_COUNT = 65536;
6028
6066
  var MAX_FIELD_NAME_LENGTH = 255;
6029
6067
  var MAX_FIELDS_LIST = 256;
6030
6068
  var MAX_BOOST_FIELDS = 256;
6031
- var MAX_SORT_FIELDS = 8;
6032
6069
  var MAX_FACETS = 64;
6033
6070
  var MAX_FETCH_DOCUMENT_IDS = 1e4;
6034
- var MAX_DOC_ID_LENGTH = 512;
6035
6071
  var MAX_FILTER_DEPTH = 30;
6036
6072
  var MAX_FILTER_FIELDS = 256;
6037
6073
  var MAX_FILTER_ARRAY_SIZE = 65536;
@@ -6046,6 +6082,25 @@ var MAX_PINNED_ENTRIES = 1e3;
6046
6082
  var MAX_PINNED_POSITION = RESULT_WINDOW;
6047
6083
  var MAX_EF_SEARCH = 1e4;
6048
6084
  var MAX_GROUP_FIELDS = 64;
6085
+ var MAX_HIGHLIGHT_TAG_LENGTH = 256;
6086
+ var MAX_HIGHLIGHT_SNIPPET_LENGTH = 65536;
6087
+ var MAX_LIST_CURSOR_LENGTH = 4096;
6088
+ var MAX_SUGGEST_WIRE_LIMIT = 1e3;
6089
+ var MAX_COUNT_VALUE = Number.MAX_SAFE_INTEGER;
6090
+ var MAX_LANGUAGE_NAME_LENGTH = 64;
6091
+ var MAX_SORT_VALUE_STRING_LENGTH = 65536;
6092
+ var MAX_RESULTS_PER_PARTITION = 1e4;
6093
+ var MAX_SORT_VALUES = 8;
6094
+ var MAX_FACET_FIELDS = 64;
6095
+ var MAX_FACET_BUCKETS = 1e4;
6096
+ var MAX_FACET_VALUE_LENGTH = 1024;
6097
+ var MAX_GROUPS_PER_RESPONSE = 65536;
6098
+ var MAX_FACET_SIZE = 1e3;
6099
+ var DEFAULT_MAX_FACET_BUCKETS = 100;
6100
+ var MAX_VECTOR_DIMENSION = 8192;
6101
+ var MAX_VECTOR_TEXT_LENGTH = 16384;
6102
+
6103
+ // src/distribution/query/validators/common.ts
6049
6104
  var NULL_BYTE = String.fromCharCode(0);
6050
6105
  function throwInvalid(code, message, details) {
6051
6106
  throw new NarsilError(code, message, details);
@@ -6158,8 +6213,6 @@ var SEARCH_INVALID_MODE = ErrorCodes.SEARCH_INVALID_MODE;
6158
6213
  var CONFIG_INVALID = ErrorCodes.CONFIG_INVALID;
6159
6214
 
6160
6215
  // src/distribution/query/validators/fetch.ts
6161
- var MAX_HIGHLIGHT_TAG_LENGTH = 256;
6162
- var MAX_HIGHLIGHT_SNIPPET_LENGTH = 65536;
6163
6216
  function validateIndexNameField(value, fieldLabel) {
6164
6217
  if (typeof value !== "string") {
6165
6218
  throwInvalid(CONFIG_INVALID, `Invalid FetchPayload: "${fieldLabel}" must be a string`);
@@ -6664,9 +6717,7 @@ function validateEfSearchParam(value) {
6664
6717
  }
6665
6718
 
6666
6719
  // src/distribution/query/validators/search.ts
6667
- var MAX_FACET_SHARD_SIZE = oversampledShardSize(1e3);
6668
- var MAX_VECTOR_DIMENSION = 8192;
6669
- var MAX_VECTOR_TEXT_LENGTH = 16384;
6720
+ var MAX_FACET_SHARD_SIZE = oversampledShardSize(MAX_FACET_SIZE);
6670
6721
  var ALLOWED_SCORING = ["local", "dfs", "broadcast"];
6671
6722
  var ALLOWED_SORT_DIRECTIONS = ["asc", "desc"];
6672
6723
  function validateIndexNameField2(value, fieldLabel) {
@@ -6930,11 +6981,6 @@ function validateSearchPayload(decoded) {
6930
6981
  }
6931
6982
 
6932
6983
  // src/distribution/query/validators/reads.ts
6933
- var MAX_LIST_CURSOR_LENGTH = 4096;
6934
- var MAX_SUGGEST_WIRE_LIMIT = 1e3;
6935
- var MAX_COUNT_VALUE = Number.MAX_SAFE_INTEGER;
6936
- var MAX_LANGUAGE_NAME_LENGTH = 64;
6937
- var MAX_SORT_VALUE_STRING_LENGTH = 65536;
6938
6984
  function validateIndexNameField3(decoded, payloadLabel) {
6939
6985
  validateStringField(decoded.indexName, `${payloadLabel}.indexName`, 255, CONFIG_INVALID);
6940
6986
  }
@@ -7129,12 +7175,6 @@ function validatePreflightResultPayload(decoded) {
7129
7175
  }
7130
7176
 
7131
7177
  // src/distribution/query/validators/search-result.ts
7132
- var MAX_RESULTS_PER_PARTITION = 1e4;
7133
- var MAX_SORT_VALUES = 8;
7134
- var MAX_FACET_FIELDS = 64;
7135
- var MAX_FACET_BUCKETS = 1e4;
7136
- var MAX_FACET_VALUE_LENGTH = 1024;
7137
- var MAX_GROUPS_PER_RESPONSE = 65536;
7138
7178
  function validateScoredEntry(value, fieldLabel) {
7139
7179
  if (!isRecord2(value)) {
7140
7180
  throwInvalid(CONFIG_INVALID, `Invalid SearchResultPayload: "${fieldLabel}" must be an object`);
@@ -7987,7 +8027,6 @@ async function sendSyncEntriesResponse(message, respond, deps, entries) {
7987
8027
  }
7988
8028
 
7989
8029
  // src/distribution/cluster-node/allocation-wait.ts
7990
- var DEFAULT_CREATE_INDEX_WAIT_MS = 3e4;
7991
8030
  function everyPartitionActive(table, partitionCount) {
7992
8031
  if (table === null || table.assignments.size < partitionCount) {
7993
8032
  return false;
@@ -8035,15 +8074,6 @@ async function waitForServingAllocation(coordinator, indexName, partitionCount,
8035
8074
  }
8036
8075
  }
8037
8076
 
8038
- // src/distribution/cluster-node/types/defaults.ts
8039
- var DEFAULT_PARTITION_COUNT = 5;
8040
- var DEFAULT_REPLICATION_FACTOR = 1;
8041
- var DEFAULT_CAPACITY = {
8042
- memoryBytes: 8e9,
8043
- cpuCores: 4,
8044
- diskBytes: null
8045
- };
8046
-
8047
8077
  // src/distribution/cluster-node/transport-failure.ts
8048
8078
  var FAILURE_CODE_BY_TRANSPORT_CODE = {
8049
8079
  [TransportErrorCodes.CONNECT_FAILED]: ErrorCodes.QUERY_NO_ACTIVE_REPLICA,
@@ -9037,7 +9067,6 @@ async function routeUpdateBatch(indexName, updates, deps) {
9037
9067
  }
9038
9068
 
9039
9069
  // src/distribution/cluster-node/write-routing/index.ts
9040
- var MAX_REPLICATION_FACTOR = 255;
9041
9070
  function validateCreateIndexOptions(partitionCount, replicationFactor) {
9042
9071
  if (!Number.isInteger(partitionCount) || partitionCount < 1 || partitionCount > MAX_PARTITION_COUNT) {
9043
9072
  throw new NarsilError(
@@ -9838,7 +9867,6 @@ function popScoredHeap(heap, nodeFirst) {
9838
9867
  }
9839
9868
  return top;
9840
9869
  }
9841
- var DEFAULT_MAX_FACET_BUCKETS = 100;
9842
9870
  function mergeDistributedFacets(allFacets, allBounds, maxBuckets = DEFAULT_MAX_FACET_BUCKETS) {
9843
9871
  const merged = /* @__PURE__ */ new Map();
9844
9872
  const bounds = /* @__PURE__ */ new Map();
@@ -10124,7 +10152,6 @@ var DEFAULT_QUERY_CONFIG = {
10124
10152
  };
10125
10153
 
10126
10154
  // src/distribution/query/routing.ts
10127
- var MAX_FACET_SIZE = 1e3;
10128
10155
  function wireSortSignature(sort) {
10129
10156
  if (sort === null || sort.length === 0) return null;
10130
10157
  return JSON.stringify(sort.map((field) => [field.field, field.direction]));
@@ -10777,7 +10804,6 @@ async function queryCluster(deps, indexName, params) {
10777
10804
  }
10778
10805
 
10779
10806
  // src/distribution/cluster-node/clear.ts
10780
- var CLEAR_PAGE_SIZE = 1e3;
10781
10807
  async function clearCluster(readDeps, writeDeps, indexName) {
10782
10808
  const allocation = await routableAllocation(readDeps.config.coordinator, indexName);
10783
10809
  if (allocation === null) {
@@ -11093,8 +11119,6 @@ function createSingleResponseRespond(respond) {
11093
11119
  }
11094
11120
 
11095
11121
  // src/distribution/cluster-node/validate-config.ts
11096
- var MAX_WAIT_FOR_ACTIVE_REPLICAS = 255;
11097
- var MIN_CONTROLLER_LEASE_TTL_MS = 1e3;
11098
11122
  function validateClusterNodeConfig(config) {
11099
11123
  if (config.address.length === 0) {
11100
11124
  throw new NarsilError(ErrorCodes.CONFIG_INVALID, "ClusterNodeConfig.address must not be empty");
@@ -1,12 +1,14 @@
1
1
  import { NarsilError, ErrorCodes } from '../chunk-P4ELXVJQ.mjs';
2
2
 
3
- // src/embeddings/openai.ts
3
+ // src/embeddings/constants.ts
4
4
  var RETRYABLE_STATUS_CODES = /* @__PURE__ */ new Set([429, 500, 502, 503]);
5
5
  var MAX_BACKOFF_MS = 3e4;
6
6
  var BASE_BACKOFF_MS = 1e3;
7
7
  var MAX_JITTER_MS = 1e3;
8
- var DEFAULT_TIMEOUT_MS = 3e4;
8
+ var DEFAULT_REQUEST_TIMEOUT_MS = 3e4;
9
9
  var MAX_INPUTS_PER_REQUEST = 2048;
10
+
11
+ // src/embeddings/openai.ts
10
12
  function isRetryableStatus(status) {
11
13
  return RETRYABLE_STATUS_CODES.has(status);
12
14
  }
@@ -194,7 +196,7 @@ function createOpenAIEmbedding(config) {
194
196
  const url = `${config.baseUrl.replace(/\/+$/, "")}/embeddings`;
195
197
  const model = config.model;
196
198
  const dimensionCount = config.dimensions;
197
- const timeoutMs = config.timeout ?? DEFAULT_TIMEOUT_MS;
199
+ const timeoutMs = config.timeout ?? DEFAULT_REQUEST_TIMEOUT_MS;
198
200
  const maxRetries = config.maxRetries ?? 3;
199
201
  return {
200
202
  get dimensions() {