@speakeasy-api/docs-mcp-core 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (51) hide show
  1. package/LICENSE +661 -0
  2. package/README.md +27 -0
  3. package/dist/chunking.d.ts +3 -0
  4. package/dist/chunking.d.ts.map +1 -0
  5. package/dist/chunking.js +332 -0
  6. package/dist/chunking.js.map +1 -0
  7. package/dist/cursor.d.ts +12 -0
  8. package/dist/cursor.d.ts.map +1 -0
  9. package/dist/cursor.js +83 -0
  10. package/dist/cursor.js.map +1 -0
  11. package/dist/embedding-cache.d.ts +46 -0
  12. package/dist/embedding-cache.d.ts.map +1 -0
  13. package/dist/embedding-cache.js +230 -0
  14. package/dist/embedding-cache.js.map +1 -0
  15. package/dist/embedding.d.ts +66 -0
  16. package/dist/embedding.d.ts.map +1 -0
  17. package/dist/embedding.js +264 -0
  18. package/dist/embedding.js.map +1 -0
  19. package/dist/index.d.ts +11 -0
  20. package/dist/index.d.ts.map +1 -0
  21. package/dist/index.js +11 -0
  22. package/dist/index.js.map +1 -0
  23. package/dist/lancedb.d.ts +42 -0
  24. package/dist/lancedb.d.ts.map +1 -0
  25. package/dist/lancedb.js +442 -0
  26. package/dist/lancedb.js.map +1 -0
  27. package/dist/manifest.d.ts +19 -0
  28. package/dist/manifest.d.ts.map +1 -0
  29. package/dist/manifest.js +245 -0
  30. package/dist/manifest.js.map +1 -0
  31. package/dist/metadata.d.ts +6 -0
  32. package/dist/metadata.d.ts.map +1 -0
  33. package/dist/metadata.js +152 -0
  34. package/dist/metadata.js.map +1 -0
  35. package/dist/parser.d.ts +6 -0
  36. package/dist/parser.d.ts.map +1 -0
  37. package/dist/parser.js +21 -0
  38. package/dist/parser.js.map +1 -0
  39. package/dist/search-common.d.ts +7 -0
  40. package/dist/search-common.d.ts.map +1 -0
  41. package/dist/search-common.js +81 -0
  42. package/dist/search-common.js.map +1 -0
  43. package/dist/search.d.ts +13 -0
  44. package/dist/search.d.ts.map +1 -0
  45. package/dist/search.js +166 -0
  46. package/dist/search.js.map +1 -0
  47. package/dist/types.d.ts +125 -0
  48. package/dist/types.d.ts.map +1 -0
  49. package/dist/types.js +2 -0
  50. package/dist/types.js.map +1 -0
  51. package/package.json +49 -0
@@ -0,0 +1,230 @@
1
+ import { mkdir, readFile, rename, rm, stat, writeFile } from "node:fs/promises";
2
+ import path from "node:path";
3
+ import { connect } from "@lancedb/lancedb";
4
+ import { sha256hex, toEmbeddingInput } from "./embedding.js";
5
+ /**
6
+ * Bumped only if toEmbeddingInput() changes in a way that isn't captured
7
+ * by the input text itself (e.g., normalization, encoding).
8
+ */
9
+ export const EMBEDDING_FORMAT_VERSION = "1";
10
+ const CACHE_VERSION = "1";
11
+ const CACHE_DIR_NAME = ".embedding-cache";
12
+ const CACHE_TMP_DIR_NAME = ".embedding-cache.tmp";
13
+ const CACHE_OLD_DIR_NAME = ".embedding-cache.old";
14
+ const CACHE_META_FILE = "cache-meta.json";
15
+ const CACHE_TABLE_NAME = "embeddings";
16
+ /**
17
+ * Compute a fingerprint for a chunk that captures both the embedding model config
18
+ * and the exact text that would be sent to the model.
19
+ */
20
+ export function computeFingerprint(chunk, config) {
21
+ const input = [
22
+ EMBEDDING_FORMAT_VERSION,
23
+ config.configFingerprint,
24
+ toEmbeddingInput(chunk),
25
+ ].join("\0");
26
+ return sha256hex(input);
27
+ }
28
+ function cacheDirPath(baseDir) {
29
+ return path.join(baseDir, CACHE_DIR_NAME);
30
+ }
31
+ function cacheTmpDirPath(baseDir) {
32
+ return path.join(baseDir, CACHE_TMP_DIR_NAME);
33
+ }
34
+ function cacheOldDirPath(baseDir) {
35
+ return path.join(baseDir, CACHE_OLD_DIR_NAME);
36
+ }
37
+ /**
38
+ * Remove leftover .tmp and .old directories from interrupted builds.
39
+ */
40
+ async function cleanupStaleDirectories(baseDir) {
41
+ await rm(cacheTmpDirPath(baseDir), { recursive: true, force: true });
42
+ await rm(cacheOldDirPath(baseDir), { recursive: true, force: true });
43
+ }
44
+ /**
45
+ * Load the embedding cache from disk.
46
+ * Returns null (with a warning to stderr) if the cache is missing, corrupt, or incompatible.
47
+ */
48
+ export async function loadCache(baseDir, currentConfig) {
49
+ await cleanupStaleDirectories(baseDir);
50
+ const cacheDir = cacheDirPath(baseDir);
51
+ const metaPath = path.join(cacheDir, CACHE_META_FILE);
52
+ let metaRaw;
53
+ try {
54
+ metaRaw = await readFile(metaPath, "utf8");
55
+ }
56
+ catch {
57
+ // cache-meta.json missing — check if the cache dir itself exists (orphaned LanceDB files)
58
+ try {
59
+ await stat(cacheDir);
60
+ console.warn("warn: embedding cache invalidated: cache-meta.json missing but cache directory exists");
61
+ await rm(cacheDir, { recursive: true, force: true });
62
+ }
63
+ catch {
64
+ // No cache dir at all — normal first-build case, no warning needed
65
+ }
66
+ return null;
67
+ }
68
+ let meta;
69
+ try {
70
+ meta = JSON.parse(metaRaw);
71
+ }
72
+ catch {
73
+ console.warn("warn: embedding cache invalidated: corrupt cache-meta.json");
74
+ await rm(cacheDir, { recursive: true, force: true });
75
+ return null;
76
+ }
77
+ if (typeof meta.cache_version !== "string" || meta.cache_version.split(".")[0] !== CACHE_VERSION.split(".")[0]) {
78
+ console.warn(`warn: embedding cache invalidated: cache_version mismatch (got ${meta.cache_version}, expected ${CACHE_VERSION})`);
79
+ await rm(cacheDir, { recursive: true, force: true });
80
+ return null;
81
+ }
82
+ if (meta.format_version !== EMBEDDING_FORMAT_VERSION) {
83
+ console.warn(`warn: embedding cache invalidated: format_version mismatch (got ${meta.format_version}, expected ${EMBEDDING_FORMAT_VERSION})`);
84
+ await rm(cacheDir, { recursive: true, force: true });
85
+ return null;
86
+ }
87
+ if (meta.config_fingerprint !== currentConfig.configFingerprint) {
88
+ console.warn("warn: embedding cache invalidated: config_fingerprint mismatch (provider config changed)");
89
+ await rm(cacheDir, { recursive: true, force: true });
90
+ return null;
91
+ }
92
+ try {
93
+ const db = await connect(cacheDir);
94
+ try {
95
+ const tableNames = await db.tableNames();
96
+ if (!tableNames.includes(CACHE_TABLE_NAME)) {
97
+ // Valid meta but no table — could be a zero-chunk build. Return empty cache.
98
+ return { entries: new Map() };
99
+ }
100
+ const table = await db.openTable(CACHE_TABLE_NAME);
101
+ const rows = await table.query().toArray();
102
+ const entries = new Map();
103
+ // NOTE: This loads all vectors into JS memory as number[] (Float64).
104
+ // For a 50K-chunk corpus at 3072 dims this is ~600MB+ of heap. Acceptable
105
+ // for v1; a streaming/query approach could reduce peak memory later.
106
+ for (const row of rows) {
107
+ const fingerprint = row.fingerprint;
108
+ const chunk_id = row.chunk_id;
109
+ const vector = Array.from(row.vector);
110
+ entries.set(fingerprint, { fingerprint, chunk_id, vector });
111
+ }
112
+ table.close();
113
+ return { entries };
114
+ }
115
+ finally {
116
+ db.close();
117
+ }
118
+ }
119
+ catch {
120
+ console.warn("warn: embedding cache invalidated: failed to read cache table");
121
+ await rm(cacheDir, { recursive: true, force: true });
122
+ return null;
123
+ }
124
+ }
125
+ /**
126
+ * Save the embedding cache to disk using the rotate-and-rename pattern
127
+ * for crash safety.
128
+ */
129
+ export async function saveCache(baseDir, cache, config) {
130
+ const tmpDir = cacheTmpDirPath(baseDir);
131
+ const liveDir = cacheDirPath(baseDir);
132
+ const oldDir = cacheOldDirPath(baseDir);
133
+ // Clean up any leftover temp/old dirs
134
+ await rm(tmpDir, { recursive: true, force: true });
135
+ await rm(oldDir, { recursive: true, force: true });
136
+ // Write cache-meta.json
137
+ await mkdir(tmpDir, { recursive: true });
138
+ const meta = {
139
+ cache_version: CACHE_VERSION,
140
+ format_version: EMBEDDING_FORMAT_VERSION,
141
+ config_fingerprint: config.configFingerprint,
142
+ };
143
+ await writeFile(path.join(tmpDir, CACHE_META_FILE), JSON.stringify(meta, null, 2));
144
+ // Write LanceDB cache table
145
+ const rows = Array.from(cache.entries.values()).map((entry) => ({
146
+ fingerprint: entry.fingerprint,
147
+ chunk_id: entry.chunk_id,
148
+ vector: entry.vector,
149
+ }));
150
+ if (rows.length > 0) {
151
+ const db = await connect(tmpDir);
152
+ try {
153
+ const table = await db.createTable(CACHE_TABLE_NAME, rows, { mode: "overwrite" });
154
+ table.close();
155
+ }
156
+ finally {
157
+ db.close();
158
+ }
159
+ }
160
+ // Atomic swap: live → old, tmp → live, delete old
161
+ try {
162
+ await rename(liveDir, oldDir);
163
+ }
164
+ catch {
165
+ // No prior cache — that's fine
166
+ }
167
+ await rename(tmpDir, liveDir);
168
+ await rm(oldDir, { recursive: true, force: true }).catch(() => { });
169
+ }
170
+ /**
171
+ * Embed chunks incrementally: reuse cached vectors for unchanged chunks,
172
+ * only call the provider for misses.
173
+ */
174
+ export async function embedChunksIncremental(chunks, provider, cache) {
175
+ const config = {
176
+ provider: provider.provider,
177
+ model: provider.model,
178
+ dimensions: provider.dimensions,
179
+ configFingerprint: provider.configFingerprint,
180
+ };
181
+ // Partition chunks into hits and misses
182
+ const fingerprints = chunks.map((chunk) => computeFingerprint(chunk, config));
183
+ const hitIndices = [];
184
+ const missIndices = [];
185
+ for (let i = 0; i < chunks.length; i++) {
186
+ const fp = fingerprints[i];
187
+ if (cache?.entries.has(fp)) {
188
+ hitIndices.push(i);
189
+ }
190
+ else {
191
+ missIndices.push(i);
192
+ }
193
+ }
194
+ // Embed only misses
195
+ const missTexts = missIndices.map((i) => toEmbeddingInput(chunks[i]));
196
+ const missVectors = missTexts.length > 0 ? await provider.embed(missTexts) : [];
197
+ if (missVectors.length !== missTexts.length) {
198
+ throw new Error(`Embedding provider returned ${missVectors.length} vectors for ${missTexts.length} chunks`);
199
+ }
200
+ // Merge results
201
+ const vectorsByChunkId = new Map();
202
+ const newEntries = new Map();
203
+ // Cache hits
204
+ for (const i of hitIndices) {
205
+ const fp = fingerprints[i];
206
+ const chunk = chunks[i];
207
+ const entry = cache.entries.get(fp);
208
+ vectorsByChunkId.set(chunk.chunk_id, entry.vector);
209
+ newEntries.set(fp, entry);
210
+ }
211
+ // Cache misses (freshly embedded)
212
+ for (let j = 0; j < missIndices.length; j++) {
213
+ const i = missIndices[j];
214
+ const fp = fingerprints[i];
215
+ const chunk = chunks[i];
216
+ const vector = missVectors[j];
217
+ vectorsByChunkId.set(chunk.chunk_id, vector);
218
+ newEntries.set(fp, { fingerprint: fp, chunk_id: chunk.chunk_id, vector });
219
+ }
220
+ return {
221
+ vectorsByChunkId,
222
+ updatedCache: { entries: newEntries },
223
+ stats: {
224
+ total: chunks.length,
225
+ hits: hitIndices.length,
226
+ misses: missIndices.length,
227
+ },
228
+ };
229
+ }
230
+ //# sourceMappingURL=embedding-cache.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"embedding-cache.js","sourceRoot":"","sources":["../src/embedding-cache.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,66 @@
1
+ import type { Chunk, EmbeddingProvider } from "./types.js";
2
+ /**
3
+ * The single source of truth for constructing the text payload sent to embedding models.
4
+ * Both `provider.embed()` and `computeFingerprint()` use this function.
5
+ */
6
+ export declare function toEmbeddingInput(chunk: Chunk): string;
7
+ export declare function sha256hex(input: string): string;
8
+ export interface OpenAIEmbeddingProviderOptions {
9
+ apiKey: string;
10
+ model?: string;
11
+ dimensions?: number;
12
+ batchSize?: number;
13
+ baseUrl?: string;
14
+ concurrency?: number;
15
+ maxRetries?: number;
16
+ retryBaseDelayMs?: number;
17
+ retryMaxDelayMs?: number;
18
+ }
19
+ export declare class NoopEmbeddingProvider implements EmbeddingProvider {
20
+ readonly name = "none";
21
+ readonly model = "none";
22
+ readonly dimensions = 0;
23
+ readonly configFingerprint: string;
24
+ constructor();
25
+ embed(texts: string[]): Promise<number[][]>;
26
+ }
27
+ export declare class HashEmbeddingProvider implements EmbeddingProvider {
28
+ readonly name = "hash";
29
+ readonly model: string;
30
+ readonly dimensions: number;
31
+ readonly configFingerprint: string;
32
+ constructor(options?: {
33
+ dimensions?: number;
34
+ model?: string;
35
+ });
36
+ embed(texts: string[]): Promise<number[][]>;
37
+ }
38
+ export declare class OpenAIEmbeddingProvider implements EmbeddingProvider {
39
+ readonly name = "openai";
40
+ readonly model: string;
41
+ readonly dimensions: number;
42
+ readonly configFingerprint: string;
43
+ private readonly apiKey;
44
+ private readonly batchSize;
45
+ private readonly baseUrl;
46
+ private readonly concurrency;
47
+ private readonly maxRetries;
48
+ private readonly retryBaseDelayMs;
49
+ private readonly retryMaxDelayMs;
50
+ constructor(options: OpenAIEmbeddingProviderOptions);
51
+ embed(texts: string[]): Promise<number[][]>;
52
+ private embedBatchWithRetry;
53
+ }
54
+ export declare function createEmbeddingProvider(input: {
55
+ provider: "none" | "hash" | "openai";
56
+ dimensions?: number;
57
+ apiKey?: string;
58
+ model?: string;
59
+ baseUrl?: string;
60
+ batchSize?: number;
61
+ concurrency?: number;
62
+ maxRetries?: number;
63
+ retryBaseDelayMs?: number;
64
+ retryMaxDelayMs?: number;
65
+ }): EmbeddingProvider;
66
+ //# sourceMappingURL=embedding.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"embedding.d.ts","sourceRoot":"","sources":["../src/embedding.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAE3D;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,KAAK,GAAG,MAAM,CAGrD;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAE/C;AASD,MAAM,WAAW,8BAA8B;IAC7C,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,qBAAa,qBAAsB,YAAW,iBAAiB;IAC7D,QAAQ,CAAC,IAAI,UAAU;IACvB,QAAQ,CAAC,KAAK,UAAU;IACxB,QAAQ,CAAC,UAAU,KAAK;IACxB,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;;IAU7B,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;CAGlD;AAED,qBAAa,qBAAsB,YAAW,iBAAiB;IAC7D,QAAQ,CAAC,IAAI,UAAU;IACvB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;gBAEvB,OAAO,GAAE;QAAE,UAAU,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAO;IAU3D,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;CAGlD;AAED,qBAAa,uBAAwB,YAAW,iBAAiB;IAC/D,QAAQ,CAAC,IAAI,YAAY;IACzB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;IAEnC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;IACrC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAS;IAC1C,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAS;gBAE7B,OAAO,EAAE,8BAA8B;IAsB7C,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;YA4BnC,mBAAmB;CAwDlC;AAED,wBAAgB,uBAAuB,CAAC,KAAK,EAAE;IAC7C,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,QAAQ,CAAC;IACrC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B,GAAG,iBAAiB,CA4DpB"}
@@ -0,0 +1,264 @@
1
+ import { createHash } from "node:crypto";
2
+ /**
3
+ * The single source of truth for constructing the text payload sent to embedding models.
4
+ * Both `provider.embed()` and `computeFingerprint()` use this function.
5
+ */
6
+ export function toEmbeddingInput(chunk) {
7
+ const context = chunk.breadcrumb || chunk.filepath;
8
+ return `Context: ${context}\n\nContent:\n${chunk.content_text}`;
9
+ }
10
+ export function sha256hex(input) {
11
+ return createHash("sha256").update(input).digest("hex");
12
+ }
13
+ function computeConfigFingerprint(fields) {
14
+ const parts = Object.entries(fields)
15
+ .sort(([a], [b]) => a.localeCompare(b))
16
+ .map(([k, v]) => `${k}=${v}`);
17
+ return sha256hex(parts.join("\0"));
18
+ }
19
+ export class NoopEmbeddingProvider {
20
+ name = "none";
21
+ model = "none";
22
+ dimensions = 0;
23
+ configFingerprint;
24
+ constructor() {
25
+ this.configFingerprint = computeConfigFingerprint({
26
+ provider: "none",
27
+ model: "none",
28
+ dimensions: 0,
29
+ });
30
+ }
31
+ async embed(texts) {
32
+ return texts.map(() => []);
33
+ }
34
+ }
35
+ export class HashEmbeddingProvider {
36
+ name = "hash";
37
+ model;
38
+ dimensions;
39
+ configFingerprint;
40
+ constructor(options = {}) {
41
+ this.dimensions = options.dimensions ?? 256;
42
+ this.model = options.model ?? "hash-v1";
43
+ this.configFingerprint = computeConfigFingerprint({
44
+ provider: "hash",
45
+ model: this.model,
46
+ dimensions: this.dimensions,
47
+ });
48
+ }
49
+ async embed(texts) {
50
+ return texts.map((text) => hashToUnitVector(text, this.dimensions));
51
+ }
52
+ }
53
+ export class OpenAIEmbeddingProvider {
54
+ name = "openai";
55
+ model;
56
+ dimensions;
57
+ configFingerprint;
58
+ apiKey;
59
+ batchSize;
60
+ baseUrl;
61
+ concurrency;
62
+ maxRetries;
63
+ retryBaseDelayMs;
64
+ retryMaxDelayMs;
65
+ constructor(options) {
66
+ if (!options.apiKey.trim()) {
67
+ throw new Error("OpenAIEmbeddingProvider requires a non-empty apiKey");
68
+ }
69
+ this.apiKey = options.apiKey;
70
+ this.model = options.model ?? "text-embedding-3-large";
71
+ this.dimensions = options.dimensions ?? 3072;
72
+ this.batchSize = options.batchSize ?? 128;
73
+ this.baseUrl = (options.baseUrl ?? "https://api.openai.com/v1").replace(/\/$/, "");
74
+ this.concurrency = normalizeInt(options.concurrency, 4, 1, 32);
75
+ this.maxRetries = normalizeInt(options.maxRetries, 3, 0, 10);
76
+ this.retryBaseDelayMs = normalizeInt(options.retryBaseDelayMs, 500, 50, 60_000);
77
+ this.retryMaxDelayMs = normalizeInt(options.retryMaxDelayMs, 10_000, 100, 120_000);
78
+ this.configFingerprint = computeConfigFingerprint({
79
+ provider: "openai",
80
+ model: this.model,
81
+ dimensions: this.dimensions,
82
+ baseUrl: this.baseUrl,
83
+ });
84
+ }
85
+ async embed(texts) {
86
+ if (texts.length === 0) {
87
+ return [];
88
+ }
89
+ const vectors = new Array(texts.length);
90
+ const batches = [];
91
+ for (let i = 0; i < texts.length; i += this.batchSize) {
92
+ batches.push({
93
+ offset: i,
94
+ values: texts.slice(i, i + this.batchSize)
95
+ });
96
+ }
97
+ await runWithConcurrency(batches, this.concurrency, async (batch) => {
98
+ const batchVectors = await this.embedBatchWithRetry(batch.values);
99
+ for (let i = 0; i < batchVectors.length; i += 1) {
100
+ vectors[batch.offset + i] = batchVectors[i];
101
+ }
102
+ });
103
+ if (vectors.some((vector) => vector === undefined)) {
104
+ throw new Error("OpenAI embeddings response was missing one or more vectors");
105
+ }
106
+ return vectors;
107
+ }
108
+ async embedBatchWithRetry(batch) {
109
+ let attempt = 0;
110
+ while (true) {
111
+ const response = await fetch(`${this.baseUrl}/embeddings`, {
112
+ method: "POST",
113
+ headers: {
114
+ "Content-Type": "application/json",
115
+ Authorization: `Bearer ${this.apiKey}`
116
+ },
117
+ body: JSON.stringify({
118
+ model: this.model,
119
+ input: batch,
120
+ dimensions: this.dimensions
121
+ })
122
+ });
123
+ if (response.ok) {
124
+ const payload = (await response.json());
125
+ if (!Array.isArray(payload.data)) {
126
+ throw new Error("OpenAI embeddings response missing data array");
127
+ }
128
+ const ordered = [...payload.data].sort((a, b) => a.index - b.index);
129
+ if (ordered.length !== batch.length) {
130
+ throw new Error(`OpenAI embeddings response size mismatch: expected ${batch.length}, got ${ordered.length}`);
131
+ }
132
+ return ordered.map((item) => item.embedding);
133
+ }
134
+ const body = await response.text();
135
+ if (!isRetryableStatus(response.status) || attempt >= this.maxRetries) {
136
+ throw new Error(`OpenAI embeddings request failed (${response.status}): ${body.slice(0, 500)}`);
137
+ }
138
+ const retryAfterMs = parseRetryAfterMs(response.headers.get("retry-after"));
139
+ const backoffMs = Math.min(this.retryMaxDelayMs, Math.max(retryAfterMs, this.retryBaseDelayMs * Math.pow(2, attempt) + Math.floor(Math.random() * 250)));
140
+ await sleep(backoffMs);
141
+ attempt += 1;
142
+ }
143
+ }
144
+ }
145
+ export function createEmbeddingProvider(input) {
146
+ if (input.provider !== "none" &&
147
+ input.provider !== "hash" &&
148
+ input.provider !== "openai") {
149
+ throw new Error(`unsupported embedding provider '${String(input.provider)}'. Expected one of: none, hash, openai`);
150
+ }
151
+ if (input.provider === "none") {
152
+ return new NoopEmbeddingProvider();
153
+ }
154
+ if (input.provider === "hash") {
155
+ const options = {};
156
+ if (input.dimensions !== undefined) {
157
+ options.dimensions = input.dimensions;
158
+ }
159
+ if (input.model !== undefined) {
160
+ options.model = input.model;
161
+ }
162
+ return new HashEmbeddingProvider(options);
163
+ }
164
+ const apiKey = input.apiKey?.trim();
165
+ if (!apiKey) {
166
+ throw new Error(`${input.provider} embedding provider requires --embedding-api-key or OPENAI_API_KEY`);
167
+ }
168
+ const options = { apiKey };
169
+ if (input.model !== undefined) {
170
+ options.model = input.model;
171
+ }
172
+ if (input.dimensions !== undefined) {
173
+ options.dimensions = input.dimensions;
174
+ }
175
+ if (input.baseUrl !== undefined) {
176
+ options.baseUrl = input.baseUrl;
177
+ }
178
+ if (input.batchSize !== undefined) {
179
+ options.batchSize = input.batchSize;
180
+ }
181
+ if (input.concurrency !== undefined) {
182
+ options.concurrency = input.concurrency;
183
+ }
184
+ if (input.maxRetries !== undefined) {
185
+ options.maxRetries = input.maxRetries;
186
+ }
187
+ if (input.retryBaseDelayMs !== undefined) {
188
+ options.retryBaseDelayMs = input.retryBaseDelayMs;
189
+ }
190
+ if (input.retryMaxDelayMs !== undefined) {
191
+ options.retryMaxDelayMs = input.retryMaxDelayMs;
192
+ }
193
+ return new OpenAIEmbeddingProvider(options);
194
+ }
195
+ function hashToUnitVector(text, dimensions) {
196
+ const vector = new Array(dimensions).fill(0);
197
+ const bytes = new TextEncoder().encode(text);
198
+ for (let i = 0; i < bytes.length; i += 1) {
199
+ const bucket = i % dimensions;
200
+ const byte = bytes[i] ?? 0;
201
+ const signed = i % 2 === 0 ? byte : -byte;
202
+ const current = vector[bucket] ?? 0;
203
+ vector[bucket] = current + signed;
204
+ }
205
+ let norm = 0;
206
+ for (const value of vector) {
207
+ norm += value * value;
208
+ }
209
+ norm = Math.sqrt(norm);
210
+ if (!norm) {
211
+ return vector;
212
+ }
213
+ return vector.map((value) => value / norm);
214
+ }
215
+ function normalizeInt(value, fallback, min, max) {
216
+ if (value === undefined || !Number.isFinite(value)) {
217
+ return fallback;
218
+ }
219
+ return Math.max(min, Math.min(max, Math.floor(value)));
220
+ }
221
+ function isRetryableStatus(status) {
222
+ return status === 429 || (status >= 500 && status <= 599);
223
+ }
224
+ function parseRetryAfterMs(value) {
225
+ if (!value) {
226
+ return 0;
227
+ }
228
+ const asSeconds = Number.parseFloat(value);
229
+ if (Number.isFinite(asSeconds) && asSeconds > 0) {
230
+ return Math.round(asSeconds * 1000);
231
+ }
232
+ const asDate = Date.parse(value);
233
+ if (Number.isFinite(asDate)) {
234
+ return Math.max(0, asDate - Date.now());
235
+ }
236
+ return 0;
237
+ }
238
+ function sleep(ms) {
239
+ return new Promise((resolve) => {
240
+ setTimeout(resolve, ms);
241
+ });
242
+ }
243
+ async function runWithConcurrency(items, concurrency, worker) {
244
+ if (items.length === 0) {
245
+ return;
246
+ }
247
+ const limit = Math.max(1, Math.min(items.length, Math.floor(concurrency)));
248
+ let cursor = 0;
249
+ await Promise.all(Array.from({ length: limit }, async () => {
250
+ while (true) {
251
+ const index = cursor;
252
+ cursor += 1;
253
+ if (index >= items.length) {
254
+ break;
255
+ }
256
+ const item = items[index];
257
+ if (!item) {
258
+ continue;
259
+ }
260
+ await worker(item);
261
+ }
262
+ }));
263
+ }
264
+ //# sourceMappingURL=embedding.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"embedding.js","sourceRoot":"","sources":["../src/embedding.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAGzC;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAAC,KAAY;IAC3C,MAAM,OAAO,GAAG,KAAK,CAAC,UAAU,IAAI,KAAK,CAAC,QAAQ,CAAC;IACnD,OAAO,YAAY,OAAO,iBAAiB,KAAK,CAAC,YAAY,EAAE,CAAC;AAClE,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,KAAa;IACrC,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC1D,CAAC;AAED,SAAS,wBAAwB,CAAC,MAAuC;IACvE,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC;SACjC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;SACtC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAChC,OAAO,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACrC,CAAC;AAcD,MAAM,OAAO,qBAAqB;IACvB,IAAI,GAAG,MAAM,CAAC;IACd,KAAK,GAAG,MAAM,CAAC;IACf,UAAU,GAAG,CAAC,CAAC;IACf,iBAAiB,CAAS;IAEnC;QACE,IAAI,CAAC,iBAAiB,GAAG,wBAAwB,CAAC;YAChD,QAAQ,EAAE,MAAM;YAChB,KAAK,EAAE,MAAM;YACb,UAAU,EAAE,CAAC;SACd,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,KAAe;QACzB,OAAO,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;IAC7B,CAAC;CACF;AAED,MAAM,OAAO,qBAAqB;IACvB,IAAI,GAAG,MAAM,CAAC;IACd,KAAK,CAAS;IACd,UAAU,CAAS;IACnB,iBAAiB,CAAS;IAEnC,YAAY,UAAmD,EAAE;QAC/D,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,UAAU,IAAI,GAAG,CAAC;QAC5C,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,SAAS,CAAC;QACxC,IAAI,CAAC,iBAAiB,GAAG,wBAAwB,CAAC;YAChD,QAAQ,EAAE,MAAM;YAChB,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,UAAU,EAAE,IAAI,CAAC,UAAU;SAC5B,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,KAAe;QACzB,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,gBAAgB,CAAC,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;IACtE,CAAC;CACF;AAED,MAAM,OAAO,uBAAuB;IACzB,IAAI,GAAG,QAAQ,CAAC;IAChB,KAAK,CAAS;IACd,UAAU,CAAS;IACnB,iBAAiB,CAAS;IAElB,MAAM,CAAS;IACf,SAAS,CAAS;IAClB,OAAO,CAAS;IAChB,WAAW,CAAS;IACpB,UAAU,CAAS;IACnB,gBAAgB,CAAS;IACzB,eAAe,CAAS;IAEzC,YAAY,OAAuC;QACjD,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC;YAC3B,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAC;QACzE,CAAC;QAED,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;QAC7B,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,wBAAwB,CAAC;QACvD,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,UAAU,IAAI,IAAI,CAAC;QAC7C,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,GAAG,CAAC;QAC1C,IAAI,CAAC,OAAO,GAAG,CAAC,OAAO,CAAC,OAAO,IAAI,2BAA2B,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QACnF,IAAI,CAAC,WAAW,GAAG,YAAY,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;QAC/D,IAAI,CAAC,UAAU,GAAG,YAAY,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;QAC7D,IAAI,CAAC,gBAAgB,GAAG,YAAY,CAAC,OAAO,CAAC,gBAAgB,EAAE,GAAG,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC;QAChF,IAAI,CAAC,eAAe,GAAG,YAAY,CAAC,OAAO,CAAC,eAAe,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC;QACnF,IAAI,CAAC,iBAAiB,GAAG,wBAAwB,CAAC;YAChD,QAAQ,EAAE,QAAQ;YAClB,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,OAAO,EAAE,IAAI,CAAC,OAAO;SACtB,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,KAAe;QACzB,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvB,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,MAAM,OAAO,GAAgC,IAAI,KAAK,CAAuB,KAAK,CAAC,MAAM,CAAC,CAAC;QAC3F,MAAM,OAAO,GAAgD,EAAE,CAAC;QAChE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACtD,OAAO,CAAC,IAAI,CAAC;gBACX,MAAM,EAAE,CAAC;gBACT,MAAM,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC;aAC3C,CAAC,CAAC;QACL,CAAC;QAED,MAAM,kBAAkB,CAAC,OAAO,EAAE,IAAI,CAAC,WAAW,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE;YAClE,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YAClE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;gBAChD,OAAO,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;YAC9C,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,KAAK,SAAS,CAAC,EAAE,CAAC;YACnD,MAAM,IAAI,KAAK,CAAC,4DAA4D,CAAC,CAAC;QAChF,CAAC;QAED,OAAO,OAAqB,CAAC;IAC/B,CAAC;IAEO,KAAK,CAAC,mBAAmB,CAAC,KAAe;QAC/C,IAAI,OAAO,GAAG,CAAC,CAAC;QAEhB,OAAO,IAAI,EAAE,CAAC;YACZ,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,IAAI,CAAC,OAAO,aAAa,EAAE;gBACzD,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE;oBACP,cAAc,EAAE,kBAAkB;oBAClC,aAAa,EAAE,UAAU,IAAI,CAAC,MAAM,EAAE;iBACvC;gBACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;oBACnB,KAAK,EAAE,IAAI,CAAC,KAAK;oBACjB,KAAK,EAAE,KAAK;oBACZ,UAAU,EAAE,IAAI,CAAC,UAAU;iBAC5B,CAAC;aACH,CAAC,CAAC;YAEH,IAAI,QAAQ,CAAC,EAAE,EAAE,CAAC;gBAChB,MAAM,OAAO,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAErC,CAAC;gBAEF,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;oBACjC,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAC;gBACnE,CAAC;gBAED,MAAM,OAAO,GAAG,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;gBACpE,IAAI,OAAO,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM,EAAE,CAAC;oBACpC,MAAM,IAAI,KAAK,CACb,sDAAsD,KAAK,CAAC,MAAM,SAAS,OAAO,CAAC,MAAM,EAAE,CAC5F,CAAC;gBACJ,CAAC;gBAED,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAC/C,CAAC;YAED,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;YACnC,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,OAAO,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;gBACtE,MAAM,IAAI,KAAK,CACb,qCAAqC,QAAQ,CAAC,MAAM,MAAM,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAC/E,CAAC;YACJ,CAAC;YAED,MAAM,YAAY,GAAG,iBAAiB,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC;YAC5E,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CACxB,IAAI,CAAC,eAAe,EACpB,IAAI,CAAC,GAAG,CACN,YAAY,EACZ,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,GAAG,CAAC,CAC/E,CACF,CAAC;YAEF,MAAM,KAAK,CAAC,SAAS,CAAC,CAAC;YACvB,OAAO,IAAI,CAAC,CAAC;QACf,CAAC;IACH,CAAC;CACF;AAED,MAAM,UAAU,uBAAuB,CAAC,KAWvC;IACC,IACE,KAAK,CAAC,QAAQ,KAAK,MAAM;QACzB,KAAK,CAAC,QAAQ,KAAK,MAAM;QACzB,KAAK,CAAC,QAAQ,KAAK,QAAQ,EAC3B,CAAC;QACD,MAAM,IAAI,KAAK,CACb,mCAAmC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,wCAAwC,CAClG,CAAC;IACJ,CAAC;IAED,IAAI,KAAK,CAAC,QAAQ,KAAK,MAAM,EAAE,CAAC;QAC9B,OAAO,IAAI,qBAAqB,EAAE,CAAC;IACrC,CAAC;IAED,IAAI,KAAK,CAAC,QAAQ,KAAK,MAAM,EAAE,CAAC;QAC9B,MAAM,OAAO,GAA4C,EAAE,CAAC;QAC5D,IAAI,KAAK,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;YACnC,OAAO,CAAC,UAAU,GAAG,KAAK,CAAC,UAAU,CAAC;QACxC,CAAC;QACD,IAAI,KAAK,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;YAC9B,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;QAC9B,CAAC;QACD,OAAO,IAAI,qBAAqB,CAAC,OAAO,CAAC,CAAC;IAC5C,CAAC;IAED,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC;IACpC,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CACb,GAAG,KAAK,CAAC,QAAQ,oEAAoE,CACtF,CAAC;IACJ,CAAC;IAED,MAAM,OAAO,GAAmC,EAAE,MAAM,EAAE,CAAC;IAC3D,IAAI,KAAK,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;QAC9B,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;IAC9B,CAAC;IACD,IAAI,KAAK,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;QACnC,OAAO,CAAC,UAAU,GAAG,KAAK,CAAC,UAAU,CAAC;IACxC,CAAC;IACD,IAAI,KAAK,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;QAChC,OAAO,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;IAClC,CAAC;IACD,IAAI,KAAK,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;QAClC,OAAO,CAAC,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC;IACtC,CAAC;IACD,IAAI,KAAK,CAAC,WAAW,KAAK,SAAS,EAAE,CAAC;QACpC,OAAO,CAAC,WAAW,GAAG,KAAK,CAAC,WAAW,CAAC;IAC1C,CAAC;IACD,IAAI,KAAK,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;QACnC,OAAO,CAAC,UAAU,GAAG,KAAK,CAAC,UAAU,CAAC;IACxC,CAAC;IACD,IAAI,KAAK,CAAC,gBAAgB,KAAK,SAAS,EAAE,CAAC;QACzC,OAAO,CAAC,gBAAgB,GAAG,KAAK,CAAC,gBAAgB,CAAC;IACpD,CAAC;IACD,IAAI,KAAK,CAAC,eAAe,KAAK,SAAS,EAAE,CAAC;QACxC,OAAO,CAAC,eAAe,GAAG,KAAK,CAAC,eAAe,CAAC;IAClD,CAAC;IAED,OAAO,IAAI,uBAAuB,CAAC,OAAO,CAAC,CAAC;AAC9C,CAAC;AAED,SAAS,gBAAgB,CAAC,IAAY,EAAE,UAAkB;IACxD,MAAM,MAAM,GAAG,IAAI,KAAK,CAAS,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAErD,MAAM,KAAK,GAAG,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC7C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QACzC,MAAM,MAAM,GAAG,CAAC,GAAG,UAAU,CAAC;QAC9B,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAC3B,MAAM,MAAM,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAC1C,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACpC,MAAM,CAAC,MAAM,CAAC,GAAG,OAAO,GAAG,MAAM,CAAC;IACpC,CAAC;IAED,IAAI,IAAI,GAAG,CAAC,CAAC;IACb,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,IAAI,IAAI,KAAK,GAAG,KAAK,CAAC;IACxB,CAAC;IACD,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAEvB,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC;AAC7C,CAAC;AAED,SAAS,YAAY,CACnB,KAAyB,EACzB,QAAgB,EAChB,GAAW,EACX,GAAW;IAEX,IAAI,KAAK,KAAK,SAAS,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QACnD,OAAO,QAAQ,CAAC;IAClB,CAAC;IACD,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACzD,CAAC;AAED,SAAS,iBAAiB,CAAC,MAAc;IACvC,OAAO,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,IAAI,GAAG,IAAI,MAAM,IAAI,GAAG,CAAC,CAAC;AAC5D,CAAC;AAED,SAAS,iBAAiB,CAAC,KAAoB;IAC7C,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,CAAC,CAAC;IACX,CAAC;IAED,MAAM,SAAS,GAAG,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;IAC3C,IAAI,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,SAAS,GAAG,CAAC,EAAE,CAAC;QAChD,OAAO,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC,CAAC;IACtC,CAAC;IAED,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACjC,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QAC5B,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;IAC1C,CAAC;IAED,OAAO,CAAC,CAAC;AACX,CAAC;AAED,SAAS,KAAK,CAAC,EAAU;IACvB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;IAC1B,CAAC,CAAC,CAAC;AACL,CAAC;AAED,KAAK,UAAU,kBAAkB,CAC/B,KAAU,EACV,WAAmB,EACnB,MAAkC;IAElC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,OAAO;IACT,CAAC;IAED,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;IAC3E,IAAI,MAAM,GAAG,CAAC,CAAC;IAEf,MAAM,OAAO,CAAC,GAAG,CACf,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,KAAK,IAAI,EAAE;QACvC,OAAO,IAAI,EAAE,CAAC;YACZ,MAAM,KAAK,GAAG,MAAM,CAAC;YACrB,MAAM,IAAI,CAAC,CAAC;YACZ,IAAI,KAAK,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;gBAC1B,MAAM;YACR,CAAC;YACD,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;YAC1B,IAAI,CAAC,IAAI,EAAE,CAAC;gBACV,SAAS;YACX,CAAC;YACD,MAAM,MAAM,CAAC,IAAI,CAAC,CAAC;QACrB,CAAC;IACH,CAAC,CAAC,CACH,CAAC;AACJ,CAAC"}
@@ -0,0 +1,11 @@
1
+ export * from "./types.js";
2
+ export * from "./chunking.js";
3
+ export * from "./parser.js";
4
+ export * from "./cursor.js";
5
+ export * from "./manifest.js";
6
+ export * from "./metadata.js";
7
+ export * from "./search.js";
8
+ export * from "./embedding.js";
9
+ export * from "./embedding-cache.js";
10
+ export * from "./lancedb.js";
11
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,sBAAsB,CAAC;AACrC,cAAc,cAAc,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,11 @@
1
+ export * from "./types.js";
2
+ export * from "./chunking.js";
3
+ export * from "./parser.js";
4
+ export * from "./cursor.js";
5
+ export * from "./manifest.js";
6
+ export * from "./metadata.js";
7
+ export * from "./search.js";
8
+ export * from "./embedding.js";
9
+ export * from "./embedding-cache.js";
10
+ export * from "./lancedb.js";
11
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,sBAAsB,CAAC;AACrC,cAAc,cAAc,CAAC"}