@noyrax/5d-database-plugin 0.1.14-beta.10 → 0.1.14-beta.12
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/out/api/bootstrap-api.d.ts +28 -0
- package/out/api/bootstrap-api.d.ts.map +1 -1
- package/out/api/bootstrap-api.js +180 -10
- package/out/api/bootstrap-api.js.map +1 -1
- package/out/api/semantic-search-api.d.ts +10 -0
- package/out/api/semantic-search-api.d.ts.map +1 -1
- package/out/api/semantic-search-api.js +25 -4
- package/out/api/semantic-search-api.js.map +1 -1
- package/out/cli/debug-semantic-search.d.ts +3 -0
- package/out/cli/debug-semantic-search.d.ts.map +1 -0
- package/out/cli/debug-semantic-search.js +337 -0
- package/out/cli/debug-semantic-search.js.map +1 -0
- package/out/embedding/embedding-pipeline.d.ts +11 -0
- package/out/embedding/embedding-pipeline.d.ts.map +1 -1
- package/out/embedding/embedding-pipeline.js +170 -68
- package/out/embedding/embedding-pipeline.js.map +1 -1
- package/out/services/query-rewriter.d.ts +61 -0
- package/out/services/query-rewriter.d.ts.map +1 -0
- package/out/services/query-rewriter.js +153 -0
- package/out/services/query-rewriter.js.map +1 -0
- package/package.json +3 -2
|
@@ -0,0 +1,337 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
"use strict";
|
|
3
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
4
|
+
if (k2 === undefined) k2 = k;
|
|
5
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
6
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
7
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
8
|
+
}
|
|
9
|
+
Object.defineProperty(o, k2, desc);
|
|
10
|
+
}) : (function(o, m, k, k2) {
|
|
11
|
+
if (k2 === undefined) k2 = k;
|
|
12
|
+
o[k2] = m[k];
|
|
13
|
+
}));
|
|
14
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
15
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
16
|
+
}) : function(o, v) {
|
|
17
|
+
o["default"] = v;
|
|
18
|
+
});
|
|
19
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
20
|
+
var ownKeys = function(o) {
|
|
21
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
22
|
+
var ar = [];
|
|
23
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
24
|
+
return ar;
|
|
25
|
+
};
|
|
26
|
+
return ownKeys(o);
|
|
27
|
+
};
|
|
28
|
+
return function (mod) {
|
|
29
|
+
if (mod && mod.__esModule) return mod;
|
|
30
|
+
var result = {};
|
|
31
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
32
|
+
__setModuleDefault(result, mod);
|
|
33
|
+
return result;
|
|
34
|
+
};
|
|
35
|
+
})();
|
|
36
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
37
|
+
const path = __importStar(require("path"));
|
|
38
|
+
const fs = __importStar(require("fs"));
|
|
39
|
+
const dotenv_1 = require("dotenv");
|
|
40
|
+
const multi_db_manager_1 = require("../core/multi-db-manager");
|
|
41
|
+
const semantic_search_api_1 = require("../api/semantic-search-api");
|
|
42
|
+
const embedding_generator_1 = require("../embedding/embedding-generator");
|
|
43
|
+
const adr_api_1 = require("../api/adr-api");
|
|
44
|
+
const query_rewriter_1 = require("../services/query-rewriter");
|
|
45
|
+
const docs_path_resolver_1 = require("../core/docs-path-resolver");
|
|
46
|
+
const embedding_pipeline_1 = require("../embedding/embedding-pipeline");
|
|
47
|
+
/**
|
|
48
|
+
* Loads .env file from workspace root or parent directories.
|
|
49
|
+
*/
|
|
50
|
+
function loadEnvFile(workspaceRoot) {
|
|
51
|
+
let currentPath = workspaceRoot;
|
|
52
|
+
const maxDepth = 5;
|
|
53
|
+
for (let depth = 0; depth < maxDepth; depth++) {
|
|
54
|
+
const envPath = path.join(currentPath, '.env');
|
|
55
|
+
if (fs.existsSync(envPath)) {
|
|
56
|
+
(0, dotenv_1.config)({ path: envPath });
|
|
57
|
+
return;
|
|
58
|
+
}
|
|
59
|
+
const parentPath = path.dirname(currentPath);
|
|
60
|
+
if (parentPath === currentPath) {
|
|
61
|
+
break;
|
|
62
|
+
}
|
|
63
|
+
currentPath = parentPath;
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Validates that docs/ directory exists.
|
|
68
|
+
*/
|
|
69
|
+
function validateDocsDirectory(workspaceRoot) {
|
|
70
|
+
const docsPath = docs_path_resolver_1.DocsPathResolver.findDocsDirectoryFromPath(workspaceRoot);
|
|
71
|
+
if (!docsPath) {
|
|
72
|
+
console.error('ERROR: docs/ directory not found in workspace or parent directories.');
|
|
73
|
+
console.error('Please run Documentation System Plugin (Noyrax) first to generate docs/ directory.');
|
|
74
|
+
return false;
|
|
75
|
+
}
|
|
76
|
+
return true;
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Gets embedding content for an ADR.
|
|
80
|
+
*/
|
|
81
|
+
async function getAdrEmbeddingContent(adrNumber, pluginId, dbManager, embeddingPipeline) {
|
|
82
|
+
const adrApi = new adr_api_1.AdrApi(dbManager);
|
|
83
|
+
const adr = await adrApi.getAdrByNumber(adrNumber, pluginId);
|
|
84
|
+
if (!adr) {
|
|
85
|
+
return null;
|
|
86
|
+
}
|
|
87
|
+
// Extract content using the same logic as EmbeddingPipeline
|
|
88
|
+
const adrDb = await dbManager.getDatabase('W');
|
|
89
|
+
const { AdrRepository } = await Promise.resolve().then(() => __importStar(require('../repositories/adr-repository')));
|
|
90
|
+
const adrRepo = new AdrRepository(adrDb);
|
|
91
|
+
const fileMappings = await adrRepo.getAdrFileMappings(adr.id);
|
|
92
|
+
const filesStr = fileMappings.length > 0
|
|
93
|
+
? `\n\nLinked files: ${fileMappings.map(m => m.file_path).join(', ')}`
|
|
94
|
+
: '';
|
|
95
|
+
return `${adr.title}\n${adr.content_markdown}${filesStr}`;
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Command: content - Shows embedding content for an entity.
|
|
99
|
+
*/
|
|
100
|
+
async function commandContent(args, workspaceRoot, dbManager, pluginId) {
|
|
101
|
+
if (args.length < 2) {
|
|
102
|
+
console.error('Usage: debug-semantic-search <workspace-root> content <dimension> <entity-id>');
|
|
103
|
+
console.error('Example: debug-semantic-search . content W 0016');
|
|
104
|
+
process.exit(1);
|
|
105
|
+
}
|
|
106
|
+
const dimension = args[0].toUpperCase();
|
|
107
|
+
const entityId = args[1];
|
|
108
|
+
if (dimension !== 'W') {
|
|
109
|
+
console.error('Currently only W (ADRs) dimension is supported for content command');
|
|
110
|
+
process.exit(1);
|
|
111
|
+
}
|
|
112
|
+
const embeddingGenerator = new embedding_generator_1.EmbeddingGenerator();
|
|
113
|
+
const embeddingPipeline = new embedding_pipeline_1.EmbeddingPipeline(dbManager, embeddingGenerator);
|
|
114
|
+
const content = await getAdrEmbeddingContent(entityId, pluginId, dbManager, embeddingPipeline);
|
|
115
|
+
if (!content) {
|
|
116
|
+
console.error(`ADR-${entityId} not found`);
|
|
117
|
+
process.exit(1);
|
|
118
|
+
}
|
|
119
|
+
console.log(JSON.stringify({
|
|
120
|
+
dimension,
|
|
121
|
+
entityId,
|
|
122
|
+
content,
|
|
123
|
+
contentLength: content.length,
|
|
124
|
+
estimatedTokens: Math.ceil(content.length / 4) // Rough estimate
|
|
125
|
+
}, null, 2));
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* Command: scores - Analyzes semantic search scores.
|
|
129
|
+
*/
|
|
130
|
+
async function commandScores(args, workspaceRoot, dbManager, pluginId) {
|
|
131
|
+
if (args.length < 1) {
|
|
132
|
+
console.error('Usage: debug-semantic-search <workspace-root> scores <query> [--dimension W] [--limit 20]');
|
|
133
|
+
process.exit(1);
|
|
134
|
+
}
|
|
135
|
+
let query = args[0];
|
|
136
|
+
let dimension = undefined;
|
|
137
|
+
let limit = 20;
|
|
138
|
+
// Parse optional arguments
|
|
139
|
+
for (let i = 1; i < args.length; i++) {
|
|
140
|
+
if (args[i] === '--dimension' && i + 1 < args.length) {
|
|
141
|
+
const dim = args[i + 1].toUpperCase();
|
|
142
|
+
if (['X', 'Y', 'Z', 'W', 'T'].includes(dim)) {
|
|
143
|
+
dimension = [dim];
|
|
144
|
+
}
|
|
145
|
+
i++;
|
|
146
|
+
}
|
|
147
|
+
else if (args[i] === '--limit' && i + 1 < args.length) {
|
|
148
|
+
limit = parseInt(args[i + 1], 10);
|
|
149
|
+
if (isNaN(limit)) {
|
|
150
|
+
console.error('Error: --limit must be a number');
|
|
151
|
+
process.exit(1);
|
|
152
|
+
}
|
|
153
|
+
i++;
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
const embeddingGenerator = new embedding_generator_1.EmbeddingGenerator();
|
|
157
|
+
const semanticSearchApi = new semantic_search_api_1.SemanticSearchApi(dbManager, embeddingGenerator);
|
|
158
|
+
const results = await semanticSearchApi.search(query, pluginId, {
|
|
159
|
+
dimensions: dimension,
|
|
160
|
+
limit
|
|
161
|
+
});
|
|
162
|
+
console.log(JSON.stringify({
|
|
163
|
+
query,
|
|
164
|
+
dimension: dimension || ['X', 'Y', 'Z', 'W', 'T'],
|
|
165
|
+
limit,
|
|
166
|
+
resultCount: results.length,
|
|
167
|
+
results: results.map(r => ({
|
|
168
|
+
dimension: r.dimension,
|
|
169
|
+
externalId: r.externalId,
|
|
170
|
+
score: r.score,
|
|
171
|
+
vectorScore: r.vectorScore,
|
|
172
|
+
importanceScore: r.importanceScore
|
|
173
|
+
}))
|
|
174
|
+
}, null, 2));
|
|
175
|
+
}
|
|
176
|
+
/**
|
|
177
|
+
* Command: test - Tests multiple query variations for an ADR.
|
|
178
|
+
*/
|
|
179
|
+
async function commandTest(args, workspaceRoot, dbManager, pluginId) {
|
|
180
|
+
if (args.length < 1) {
|
|
181
|
+
console.error('Usage: debug-semantic-search <workspace-root> test <adr-number>');
|
|
182
|
+
console.error('Example: debug-semantic-search . test 0016');
|
|
183
|
+
process.exit(1);
|
|
184
|
+
}
|
|
185
|
+
const adrNumber = args[0];
|
|
186
|
+
// Generate test queries
|
|
187
|
+
const testQueries = [
|
|
188
|
+
`ADR-${adrNumber}`,
|
|
189
|
+
`ADR ${adrNumber}`,
|
|
190
|
+
adrNumber,
|
|
191
|
+
`Why was ADR-${adrNumber} created?`,
|
|
192
|
+
`What is ADR-${adrNumber} about?`,
|
|
193
|
+
`ADR-${adrNumber} migration`,
|
|
194
|
+
`TypeScript-only migration`,
|
|
195
|
+
`migration TypeScript`
|
|
196
|
+
];
|
|
197
|
+
const embeddingGenerator = new embedding_generator_1.EmbeddingGenerator();
|
|
198
|
+
const semanticSearchApi = new semantic_search_api_1.SemanticSearchApi(dbManager, embeddingGenerator);
|
|
199
|
+
const results = [];
|
|
200
|
+
for (const query of testQueries) {
|
|
201
|
+
const searchResults = await semanticSearchApi.search(query, pluginId, {
|
|
202
|
+
dimensions: ['W'],
|
|
203
|
+
limit: 20
|
|
204
|
+
});
|
|
205
|
+
const foundIndex = searchResults.findIndex(r => r.externalId === adrNumber || r.externalId === adrNumber.padStart(3, '0') || r.externalId === adrNumber.replace(/^0+/, ''));
|
|
206
|
+
const found = foundIndex >= 0;
|
|
207
|
+
results.push({
|
|
208
|
+
query,
|
|
209
|
+
found,
|
|
210
|
+
rank: found ? foundIndex + 1 : undefined,
|
|
211
|
+
score: found ? searchResults[foundIndex].score : undefined
|
|
212
|
+
});
|
|
213
|
+
}
|
|
214
|
+
console.log(JSON.stringify({
|
|
215
|
+
adrNumber,
|
|
216
|
+
testQueries: results
|
|
217
|
+
}, null, 2));
|
|
218
|
+
}
|
|
219
|
+
/**
|
|
220
|
+
* Command: rewrite - Tests query rewriting.
|
|
221
|
+
*/
|
|
222
|
+
async function commandRewrite(args, workspaceRoot, dbManager, pluginId) {
|
|
223
|
+
if (args.length < 1) {
|
|
224
|
+
console.error('Usage: debug-semantic-search <workspace-root> rewrite <query>');
|
|
225
|
+
console.error('Example: debug-semantic-search . rewrite "Why was Python removed?"');
|
|
226
|
+
process.exit(1);
|
|
227
|
+
}
|
|
228
|
+
const query = args.join(' ');
|
|
229
|
+
const queryRewriter = new query_rewriter_1.QueryRewriter();
|
|
230
|
+
const rewritten = queryRewriter.rewriteQuery(query);
|
|
231
|
+
const adrNumbers = queryRewriter.extractAdrNumbers(query);
|
|
232
|
+
console.log(JSON.stringify({
|
|
233
|
+
originalQuery: query,
|
|
234
|
+
rewrittenQuery: rewritten,
|
|
235
|
+
extractedAdrNumbers: adrNumbers,
|
|
236
|
+
changed: query !== rewritten
|
|
237
|
+
}, null, 2));
|
|
238
|
+
}
|
|
239
|
+
/**
|
|
240
|
+
* CLI tool for debugging semantic search and discovery.
|
|
241
|
+
* Usage: debug-semantic-search <workspace-root> <command> <args...>
|
|
242
|
+
*
|
|
243
|
+
* Commands:
|
|
244
|
+
* content <dimension> <entity-id> - Show embedding content for an entity
|
|
245
|
+
* scores <query> [--dimension W] [--limit 20] - Analyze semantic search scores
|
|
246
|
+
* test <adr-number> - Test multiple query variations for an ADR
|
|
247
|
+
* rewrite <query> - Test query rewriting
|
|
248
|
+
*/
|
|
249
|
+
async function main() {
|
|
250
|
+
const args = process.argv.slice(2);
|
|
251
|
+
if (args.length < 2) {
|
|
252
|
+
console.error('Usage: debug-semantic-search <workspace-root> <command> <args...>');
|
|
253
|
+
console.error('');
|
|
254
|
+
console.error('Commands:');
|
|
255
|
+
console.error(' content <dimension> <entity-id> - Show embedding content for an entity');
|
|
256
|
+
console.error(' scores <query> [--dimension W] [--limit 20] - Analyze semantic search scores');
|
|
257
|
+
console.error(' test <adr-number> - Test multiple query variations for an ADR');
|
|
258
|
+
console.error(' rewrite <query> - Test query rewriting');
|
|
259
|
+
process.exit(1);
|
|
260
|
+
}
|
|
261
|
+
// Auto-detect workspace root if not provided (first arg is command)
|
|
262
|
+
let workspaceRoot;
|
|
263
|
+
let command;
|
|
264
|
+
let commandArgs;
|
|
265
|
+
// Check if first arg is a command (no path separators) or a workspace root
|
|
266
|
+
if (args.length >= 2 && !args[0].includes('/') && !args[0].includes('\\') && !path.isAbsolute(args[0]) &&
|
|
267
|
+
['content', 'scores', 'test', 'rewrite'].includes(args[0])) {
|
|
268
|
+
// First arg is command, use current directory as workspace root
|
|
269
|
+
workspaceRoot = process.cwd();
|
|
270
|
+
command = args[0];
|
|
271
|
+
commandArgs = args.slice(1);
|
|
272
|
+
}
|
|
273
|
+
else if (args.length >= 3) {
|
|
274
|
+
// First arg is workspace root, second is command
|
|
275
|
+
workspaceRoot = path.resolve(args[0]);
|
|
276
|
+
command = args[1];
|
|
277
|
+
commandArgs = args.slice(2);
|
|
278
|
+
}
|
|
279
|
+
else {
|
|
280
|
+
console.error('Usage: debug-semantic-search <workspace-root> <command> <args...>');
|
|
281
|
+
process.exit(1);
|
|
282
|
+
}
|
|
283
|
+
// Validate workspace root exists
|
|
284
|
+
if (!fs.existsSync(workspaceRoot)) {
|
|
285
|
+
console.error(`ERROR: Workspace root does not exist: ${workspaceRoot}`);
|
|
286
|
+
process.exit(1);
|
|
287
|
+
}
|
|
288
|
+
// Load .env file
|
|
289
|
+
loadEnvFile(workspaceRoot);
|
|
290
|
+
// Check for OpenAI API key (required for some commands)
|
|
291
|
+
if (!process.env.OPENAI_API_KEY && (command === 'scores' || command === 'test')) {
|
|
292
|
+
console.error('ERROR: OPENAI_API_KEY not found in environment or .env file');
|
|
293
|
+
console.error('Semantic search requires OpenAI API key for embedding generation.');
|
|
294
|
+
process.exit(1);
|
|
295
|
+
}
|
|
296
|
+
// Validate docs/ directory
|
|
297
|
+
if (!validateDocsDirectory(workspaceRoot)) {
|
|
298
|
+
process.exit(1);
|
|
299
|
+
}
|
|
300
|
+
const dbManager = new multi_db_manager_1.MultiDbManager(workspaceRoot);
|
|
301
|
+
const pluginId = dbManager.getPluginId();
|
|
302
|
+
try {
|
|
303
|
+
switch (command) {
|
|
304
|
+
case 'content':
|
|
305
|
+
await commandContent(commandArgs, workspaceRoot, dbManager, pluginId);
|
|
306
|
+
break;
|
|
307
|
+
case 'scores':
|
|
308
|
+
await commandScores(commandArgs, workspaceRoot, dbManager, pluginId);
|
|
309
|
+
break;
|
|
310
|
+
case 'test':
|
|
311
|
+
await commandTest(commandArgs, workspaceRoot, dbManager, pluginId);
|
|
312
|
+
break;
|
|
313
|
+
case 'rewrite':
|
|
314
|
+
await commandRewrite(commandArgs, workspaceRoot, dbManager, pluginId);
|
|
315
|
+
break;
|
|
316
|
+
default:
|
|
317
|
+
console.error(`Unknown command: ${command}`);
|
|
318
|
+
console.error('Use "content", "scores", "test", or "rewrite"');
|
|
319
|
+
process.exit(1);
|
|
320
|
+
}
|
|
321
|
+
}
|
|
322
|
+
catch (error) {
|
|
323
|
+
const errorMsg = error instanceof Error ? error.message : String(error);
|
|
324
|
+
console.error(`Error: ${errorMsg}`);
|
|
325
|
+
if (error instanceof Error && error.stack) {
|
|
326
|
+
console.error(`Stack trace: ${error.stack}`);
|
|
327
|
+
}
|
|
328
|
+
process.exit(1);
|
|
329
|
+
}
|
|
330
|
+
}
|
|
331
|
+
if (require.main === module) {
|
|
332
|
+
main().catch((error) => {
|
|
333
|
+
console.error('Fatal error:', error);
|
|
334
|
+
process.exit(1);
|
|
335
|
+
});
|
|
336
|
+
}
|
|
337
|
+
//# sourceMappingURL=debug-semantic-search.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"debug-semantic-search.js","sourceRoot":"","sources":["../../src/cli/debug-semantic-search.ts"],"names":[],"mappings":"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"}
|
|
@@ -39,9 +39,18 @@ export declare class EmbeddingPipeline {
|
|
|
39
39
|
* Computes content hash for change detection.
|
|
40
40
|
*/
|
|
41
41
|
private computeContentHash;
|
|
42
|
+
/**
|
|
43
|
+
* Estimates token count from content length (Markdown-optimized).
|
|
44
|
+
* Markdown has different token densities:
|
|
45
|
+
* - Code blocks: ~3 chars/token (more tokens per char due to formatting)
|
|
46
|
+
* - Normal text: ~4 chars/token (standard estimate)
|
|
47
|
+
* - Tables: ~2.5 chars/token (many separators increase token count)
|
|
48
|
+
*/
|
|
49
|
+
private estimateTokens;
|
|
42
50
|
/**
|
|
43
51
|
* Optimizes module documentation for embedding while preserving semantic meaning.
|
|
44
52
|
* Strategy: Keep structure and important information, remove detailed tables.
|
|
53
|
+
* Aggressively truncates code blocks to signatures only, limits table rows.
|
|
45
54
|
*
|
|
46
55
|
* @param content Full markdown content
|
|
47
56
|
* @param maxTokens Maximum tokens allowed
|
|
@@ -51,6 +60,8 @@ export declare class EmbeddingPipeline {
|
|
|
51
60
|
/**
|
|
52
61
|
* Extracts only the structure of a module (header, interface/method names, signatures).
|
|
53
62
|
* Used for hierarchical embeddings where details are in Y-Dimension (Symbols).
|
|
63
|
+
* Only keeps: Headers, interface/method/class/variable names, first line of code blocks (signatures).
|
|
64
|
+
* Removes: All tables, code block bodies, normal text.
|
|
54
65
|
*
|
|
55
66
|
* @param content Full markdown content
|
|
56
67
|
* @returns Module structure (header + names + signatures, no details)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"embedding-pipeline.d.ts","sourceRoot":"","sources":["../../src/embedding/embedding-pipeline.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAgB3D;;;GAGG;AACH,qBAAa,iBAAiB;IAC1B,OAAO,CAAC,SAAS,CAAiB;IAClC,OAAO,CAAC,kBAAkB,CAAqB;IAC/C,OAAO,CAAC,SAAS,CAAY;IAC7B,OAAO,CAAC,SAAS,CAAY;IAC7B,OAAO,CAAC,aAAa,CAAgB;IACrC,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,SAAS,CAAY;IAC7B,OAAO,CAAC,gBAAgB,CAAmB;gBAE/B,SAAS,EAAE,cAAc,EAAE,kBAAkB,EAAE,kBAAkB;IAW7E;;;OAGG;IACG,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAoBrD;;OAEG;IACG,aAAa,CACf,SAAS,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EACtC,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,GACd,OAAO,CAAC,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"embedding-pipeline.d.ts","sourceRoot":"","sources":["../../src/embedding/embedding-pipeline.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAgB3D;;;GAGG;AACH,qBAAa,iBAAiB;IAC1B,OAAO,CAAC,SAAS,CAAiB;IAClC,OAAO,CAAC,kBAAkB,CAAqB;IAC/C,OAAO,CAAC,SAAS,CAAY;IAC7B,OAAO,CAAC,SAAS,CAAY;IAC7B,OAAO,CAAC,aAAa,CAAgB;IACrC,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,SAAS,CAAY;IAC7B,OAAO,CAAC,gBAAgB,CAAmB;gBAE/B,SAAS,EAAE,cAAc,EAAE,kBAAkB,EAAE,kBAAkB;IAW7E;;;OAGG;IACG,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAoBrD;;OAEG;IACG,aAAa,CACf,SAAS,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EACtC,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,GACd,OAAO,CAAC,IAAI,CAAC;IAyJhB;;OAEG;YACW,uBAAuB;IAoBrC;;OAEG;YACW,0BAA0B;IA6FxC;;OAEG;IACH,OAAO,CAAC,aAAa;IAgBrB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAI1B;;;;;;OAMG;IACH,OAAO,CAAC,cAAc;IAoBtB;;;;;;;;OAQG;IACH,OAAO,CAAC,iCAAiC;IAkJzC;;;;;;;;OAQG;IACH,OAAO,CAAC,sBAAsB;CAwEjC"}
|