skill-creator 1.4.3 → 1.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/chunk-Da8dvM5T.mjs +1 -0
- package/dist/cli.d.mts +1016 -0
- package/dist/cli.d.mts.map +1 -0
- package/dist/cli.mjs +36 -0
- package/dist/cli.mjs.map +1 -0
- package/dist/contentManager-8rmWJMb6.mjs +22 -0
- package/dist/contentManager-8rmWJMb6.mjs.map +1 -0
- package/dist/contentManager-Xt8N5psY.mjs +1 -0
- package/dist/dist-DZL34HNo.mjs +8 -0
- package/dist/dist-DZL34HNo.mjs.map +1 -0
- package/dist/dist-X_kVEzbK.mjs +1 -0
- package/dist/esm-8qfZdcpd.mjs +33 -0
- package/dist/esm-8qfZdcpd.mjs.map +1 -0
- package/dist/esm-BF5pvSbc.mjs +1 -0
- package/dist/esm-BbhxxeGF.mjs +4 -0
- package/dist/esm-BbhxxeGF.mjs.map +1 -0
- package/dist/index.d.mts +1964 -0
- package/dist/index.d.mts.map +1 -0
- package/dist/index.mjs +21 -0
- package/dist/index.mjs.map +1 -0
- package/dist/listContext7-DKXzgWdn.mjs +2 -0
- package/dist/listContext7-DKXzgWdn.mjs.map +1 -0
- package/dist/package-B4FNst2t.mjs +2 -0
- package/dist/package-B4FNst2t.mjs.map +1 -0
- package/dist/path-CuoiIaIe.mjs +2 -0
- package/dist/path-CuoiIaIe.mjs.map +1 -0
- package/dist/removeContext7-DOXrTXeI.mjs +3 -0
- package/dist/removeContext7-DOXrTXeI.mjs.map +1 -0
- package/dist/removeSkill-C-ehFexk.mjs +5 -0
- package/dist/removeSkill-C-ehFexk.mjs.map +1 -0
- package/dist/removeSkill-DWwhvzej.mjs +1 -0
- package/dist/runScript-Cr9RRN9y.mjs +14 -0
- package/dist/runScript-Cr9RRN9y.mjs.map +1 -0
- package/dist/search_format-DIs-1lKk.mjs +5 -0
- package/dist/search_format-DIs-1lKk.mjs.map +1 -0
- package/dist/shared-CFoY2Xhg.mjs +2 -0
- package/dist/shared-CFoY2Xhg.mjs.map +1 -0
- package/dist/skillMdManager-DP8fGZb7.mjs +7 -0
- package/dist/skillMdManager-DP8fGZb7.mjs.map +1 -0
- package/dist/unifiedSearch-CGZXw0NB.mjs +1 -0
- package/dist/unifiedSearch-l-lrSc9C.mjs +4 -0
- package/dist/unifiedSearch-l-lrSc9C.mjs.map +1 -0
- package/package.json +30 -17
- package/dist/cli.d.ts +0 -8
- package/dist/cli.d.ts.map +0 -1
- package/dist/cli.js +0 -513
- package/dist/cli.js.map +0 -1
- package/dist/commands/addContent.d.ts +0 -5
- package/dist/commands/addContent.d.ts.map +0 -1
- package/dist/commands/addContent.js +0 -88
- package/dist/commands/addContent.js.map +0 -1
- package/dist/commands/buildIndex.d.ts +0 -5
- package/dist/commands/buildIndex.d.ts.map +0 -1
- package/dist/commands/buildIndex.js +0 -16
- package/dist/commands/buildIndex.js.map +0 -1
- package/dist/commands/createSkill.d.ts +0 -6
- package/dist/commands/createSkill.d.ts.map +0 -1
- package/dist/commands/createSkill.js +0 -32
- package/dist/commands/createSkill.js.map +0 -1
- package/dist/commands/downloadContext7.d.ts +0 -5
- package/dist/commands/downloadContext7.d.ts.map +0 -1
- package/dist/commands/downloadContext7.js +0 -71
- package/dist/commands/downloadContext7.js.map +0 -1
- package/dist/commands/init.d.ts +0 -5
- package/dist/commands/init.d.ts.map +0 -1
- package/dist/commands/init.js +0 -95
- package/dist/commands/init.js.map +0 -1
- package/dist/commands/listContent.d.ts +0 -5
- package/dist/commands/listContent.d.ts.map +0 -1
- package/dist/commands/listContent.js +0 -34
- package/dist/commands/listContent.js.map +0 -1
- package/dist/commands/listContext7.d.ts +0 -5
- package/dist/commands/listContext7.d.ts.map +0 -1
- package/dist/commands/listContext7.js +0 -26
- package/dist/commands/listContext7.js.map +0 -1
- package/dist/commands/listSkills.d.ts +0 -5
- package/dist/commands/listSkills.d.ts.map +0 -1
- package/dist/commands/listSkills.js +0 -34
- package/dist/commands/listSkills.js.map +0 -1
- package/dist/commands/removeContext7.d.ts +0 -5
- package/dist/commands/removeContext7.d.ts.map +0 -1
- package/dist/commands/removeContext7.js +0 -54
- package/dist/commands/removeContext7.js.map +0 -1
- package/dist/commands/removeSkill.d.ts +0 -5
- package/dist/commands/removeSkill.d.ts.map +0 -1
- package/dist/commands/removeSkill.js +0 -83
- package/dist/commands/removeSkill.js.map +0 -1
- package/dist/commands/searchContent.d.ts +0 -5
- package/dist/commands/searchContent.d.ts.map +0 -1
- package/dist/commands/searchContent.js +0 -99
- package/dist/commands/searchContent.js.map +0 -1
- package/dist/commands/shared.d.ts +0 -21
- package/dist/commands/shared.d.ts.map +0 -1
- package/dist/commands/shared.js +0 -80
- package/dist/commands/shared.js.map +0 -1
- package/dist/core/autoSearchAdapter.d.ts +0 -42
- package/dist/core/autoSearchAdapter.d.ts.map +0 -1
- package/dist/core/autoSearchAdapter.js +0 -116
- package/dist/core/autoSearchAdapter.js.map +0 -1
- package/dist/core/chromaSearch.d.ts +0 -24
- package/dist/core/chromaSearch.d.ts.map +0 -1
- package/dist/core/chromaSearch.js +0 -194
- package/dist/core/chromaSearch.js.map +0 -1
- package/dist/core/chromaSearchAdapter.d.ts +0 -86
- package/dist/core/chromaSearchAdapter.d.ts.map +0 -1
- package/dist/core/chromaSearchAdapter.js +0 -477
- package/dist/core/chromaSearchAdapter.js.map +0 -1
- package/dist/core/chromaServerManager.d.ts +0 -64
- package/dist/core/chromaServerManager.d.ts.map +0 -1
- package/dist/core/chromaServerManager.js +0 -186
- package/dist/core/chromaServerManager.js.map +0 -1
- package/dist/core/contentManager.d.ts +0 -65
- package/dist/core/contentManager.d.ts.map +0 -1
- package/dist/core/contentManager.js +0 -533
- package/dist/core/contentManager.js.map +0 -1
- package/dist/core/fuzzySearchAdapter.d.ts +0 -33
- package/dist/core/fuzzySearchAdapter.d.ts.map +0 -1
- package/dist/core/fuzzySearchAdapter.js +0 -185
- package/dist/core/fuzzySearchAdapter.js.map +0 -1
- package/dist/core/portUtils.d.ts +0 -51
- package/dist/core/portUtils.d.ts.map +0 -1
- package/dist/core/portUtils.js +0 -120
- package/dist/core/portUtils.js.map +0 -1
- package/dist/core/runScript.d.ts +0 -5
- package/dist/core/runScript.d.ts.map +0 -1
- package/dist/core/runScript.js +0 -40
- package/dist/core/runScript.js.map +0 -1
- package/dist/core/searchAdapter.d.ts +0 -48
- package/dist/core/searchAdapter.d.ts.map +0 -1
- package/dist/core/searchAdapter.js +0 -6
- package/dist/core/searchAdapter.js.map +0 -1
- package/dist/core/searchEngineFactory.d.ts +0 -30
- package/dist/core/searchEngineFactory.d.ts.map +0 -1
- package/dist/core/searchEngineFactory.js +0 -41
- package/dist/core/searchEngineFactory.js.map +0 -1
- package/dist/core/skillCreator.d.ts +0 -12
- package/dist/core/skillCreator.d.ts.map +0 -1
- package/dist/core/skillCreator.js +0 -79
- package/dist/core/skillCreator.js.map +0 -1
- package/dist/core/templateManager.d.ts +0 -28
- package/dist/core/templateManager.d.ts.map +0 -1
- package/dist/core/templateManager.js +0 -583
- package/dist/core/templateManager.js.map +0 -1
- package/dist/core/unifiedSearch.d.ts +0 -69
- package/dist/core/unifiedSearch.d.ts.map +0 -1
- package/dist/core/unifiedSearch.js +0 -105
- package/dist/core/unifiedSearch.js.map +0 -1
- package/dist/index.d.ts +0 -13
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js +0 -11
- package/dist/index.js.map +0 -1
- package/dist/search_format/enhancedFormatter.d.ts +0 -109
- package/dist/search_format/enhancedFormatter.d.ts.map +0 -1
- package/dist/search_format/enhancedFormatter.js +0 -262
- package/dist/search_format/enhancedFormatter.js.map +0 -1
- package/dist/search_format/index.d.ts +0 -10
- package/dist/search_format/index.d.ts.map +0 -1
- package/dist/search_format/index.js +0 -22
- package/dist/search_format/index.js.map +0 -1
- package/dist/search_format/listFormatter.d.ts +0 -16
- package/dist/search_format/listFormatter.d.ts.map +0 -1
- package/dist/search_format/listFormatter.js +0 -51
- package/dist/search_format/listFormatter.js.map +0 -1
- package/dist/search_format/types.d.ts +0 -69
- package/dist/search_format/types.d.ts.map +0 -1
- package/dist/search_format/types.js +0 -5
- package/dist/search_format/types.js.map +0 -1
- package/dist/types/index.d.ts +0 -74
- package/dist/types/index.d.ts.map +0 -1
- package/dist/types/index.js +0 -2
- package/dist/types/index.js.map +0 -1
- package/dist/utils/claudeCodeDetection.d.ts +0 -27
- package/dist/utils/claudeCodeDetection.d.ts.map +0 -1
- package/dist/utils/claudeCodeDetection.js +0 -81
- package/dist/utils/claudeCodeDetection.js.map +0 -1
- package/dist/utils/config.d.ts +0 -23
- package/dist/utils/config.d.ts.map +0 -1
- package/dist/utils/config.js +0 -41
- package/dist/utils/config.js.map +0 -1
- package/dist/utils/package.d.ts +0 -88
- package/dist/utils/package.d.ts.map +0 -1
- package/dist/utils/package.js +0 -221
- package/dist/utils/package.js.map +0 -1
- package/dist/utils/skillMdManager.d.ts +0 -45
- package/dist/utils/skillMdManager.d.ts.map +0 -1
- package/dist/utils/skillMdManager.js +0 -173
- package/dist/utils/skillMdManager.js.map +0 -1
|
@@ -1,99 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Search skill content command
|
|
3
|
-
*/
|
|
4
|
-
import { join } from 'node:path';
|
|
5
|
-
import { parseArgs, createSearchEngine } from './shared.js';
|
|
6
|
-
import { createFormatter } from '../search_format/index.js';
|
|
7
|
-
export async function searchContent(args) {
|
|
8
|
-
// Parse arguments
|
|
9
|
-
const options = parseArgs(args, [
|
|
10
|
-
{ name: 'query', alias: 'q', type: 'string', required: true },
|
|
11
|
-
{ name: 'top-k', type: 'number', default: 5 },
|
|
12
|
-
{ name: 'source', type: 'string', default: 'all' },
|
|
13
|
-
{ name: 'mode', type: 'string', default: 'auto' },
|
|
14
|
-
{ name: 'list', type: 'boolean', default: false },
|
|
15
|
-
]);
|
|
16
|
-
// Validate search mode
|
|
17
|
-
if (!['auto', 'fuzzy', 'chroma'].includes(options.mode)) {
|
|
18
|
-
console.error('❌ Invalid search mode. Use: auto, fuzzy, or chroma');
|
|
19
|
-
process.exit(1);
|
|
20
|
-
}
|
|
21
|
-
// Create search engine
|
|
22
|
-
const searchEngine = await createSearchEngine({
|
|
23
|
-
searchMode: options.mode,
|
|
24
|
-
useFormatting: false, // We'll handle formatting manually for now
|
|
25
|
-
});
|
|
26
|
-
// Initialize search engine
|
|
27
|
-
await searchEngine.initialize();
|
|
28
|
-
// Build index if needed
|
|
29
|
-
const referencesDir = join(process.cwd(), 'assets', 'references');
|
|
30
|
-
await searchEngine.buildIndex(referencesDir);
|
|
31
|
-
// Prepare search options
|
|
32
|
-
const topK = options['top-k'];
|
|
33
|
-
const whereFilter = options.source !== 'all' ? { source: options.source } : undefined;
|
|
34
|
-
// Perform search
|
|
35
|
-
const results = await searchEngine.search(options.query, topK || 5, whereFilter);
|
|
36
|
-
// Display results
|
|
37
|
-
console.log(`\n🔍 Searching in skill...`);
|
|
38
|
-
console.log(`Skill Path: ${process.cwd()}`);
|
|
39
|
-
console.log(`Query: ${options.query}`);
|
|
40
|
-
console.log(`\nSearch Results for: '${options.query}'`);
|
|
41
|
-
console.log('='.repeat(50));
|
|
42
|
-
if (results.length === 0) {
|
|
43
|
-
console.log('No results found.');
|
|
44
|
-
return;
|
|
45
|
-
}
|
|
46
|
-
// Create formatter based on options
|
|
47
|
-
const formatterType = options.list ? 'list' : 'enhanced';
|
|
48
|
-
const formatter = createFormatter(formatterType);
|
|
49
|
-
// Prepare formatting options
|
|
50
|
-
const formattingOptions = {
|
|
51
|
-
skillPath: process.cwd(),
|
|
52
|
-
showFullContentThreshold: 0.8,
|
|
53
|
-
minScoreForPreview: 0.3,
|
|
54
|
-
maxPreviewLength: 200,
|
|
55
|
-
showLineNumbers: true,
|
|
56
|
-
};
|
|
57
|
-
// Format and display results
|
|
58
|
-
const formattedResults = formatter.format(results, formattingOptions);
|
|
59
|
-
for (let i = 0; i < formattedResults.length; i++) {
|
|
60
|
-
const formattedResult = formattedResults[i];
|
|
61
|
-
const result = formattedResult.result;
|
|
62
|
-
console.log(`\n${i + 1}. [Score: ${result.score.toFixed(2)}] ${result.title}`);
|
|
63
|
-
console.log(` Source: ${result.source} (${result.metadata.priority || 'unknown'})`);
|
|
64
|
-
console.log(` File: ${result.relativePath || result.file_path}`);
|
|
65
|
-
// Display formatted content based on content type
|
|
66
|
-
switch (formattedResult.contentType) {
|
|
67
|
-
case 'full-content':
|
|
68
|
-
console.log(` FileContent:`);
|
|
69
|
-
console.log(` ${formattedResult.content}`);
|
|
70
|
-
break;
|
|
71
|
-
case 'preview':
|
|
72
|
-
if (options.list) {
|
|
73
|
-
// --list mode: simple preview
|
|
74
|
-
console.log(` Preview: ${formattedResult.content}`);
|
|
75
|
-
}
|
|
76
|
-
else {
|
|
77
|
-
// --enhanced mode (default): enhanced preview with line numbers
|
|
78
|
-
console.log(` Preview:`);
|
|
79
|
-
// Extract content from <limit-content lines-indexs="1,3,45">...</limit-content> format
|
|
80
|
-
const limitContentMatch = formattedResult.content.match(/^<limit-content lines-indexs="([^"]+)">\n(.*)\n<\/limit-content>$/s);
|
|
81
|
-
if (limitContentMatch) {
|
|
82
|
-
const [, lineIndexes, content] = limitContentMatch;
|
|
83
|
-
console.log(` ${content}`);
|
|
84
|
-
}
|
|
85
|
-
else {
|
|
86
|
-
console.log(` ${formattedResult.content}`);
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
break;
|
|
90
|
-
case 'metadata-only':
|
|
91
|
-
console.log(` Content: (No preview - metadata only)`);
|
|
92
|
-
break;
|
|
93
|
-
default:
|
|
94
|
-
// Fallback to simple preview
|
|
95
|
-
console.log(` Preview: ${formattedResult.content}`);
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
//# sourceMappingURL=searchContent.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"searchContent.js","sourceRoot":"","sources":["../../src/commands/searchContent.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Shared utilities for commands
|
|
3
|
-
*/
|
|
4
|
-
/**
|
|
5
|
-
* Parse command line arguments
|
|
6
|
-
*/
|
|
7
|
-
export declare function parseArgs(args: string[], definitions: Array<{
|
|
8
|
-
name: string;
|
|
9
|
-
alias?: string;
|
|
10
|
-
type: 'string' | 'number' | 'boolean';
|
|
11
|
-
required?: boolean;
|
|
12
|
-
default?: any;
|
|
13
|
-
}>): Record<string, any>;
|
|
14
|
-
/**
|
|
15
|
-
* Create search engine instance
|
|
16
|
-
*/
|
|
17
|
-
export declare function createSearchEngine(options?: {
|
|
18
|
-
searchMode?: 'chroma' | 'fuzzy' | 'auto';
|
|
19
|
-
useFormatting?: boolean;
|
|
20
|
-
}): Promise<import("../index.js").UnifiedSearchEngine>;
|
|
21
|
-
//# sourceMappingURL=shared.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../src/commands/shared.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH;;GAEG;AACH,wBAAgB,SAAS,CACvB,IAAI,EAAE,MAAM,EAAE,EACd,WAAW,EAAE,KAAK,CAAC;IACjB,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,IAAI,EAAE,QAAQ,GAAG,QAAQ,GAAG,SAAS,CAAA;IACrC,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,OAAO,CAAC,EAAE,GAAG,CAAA;CACd,CAAC,GACD,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAiDrB;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CACtC,OAAO,GAAE;IACP,UAAU,CAAC,EAAE,QAAQ,GAAG,OAAO,GAAG,MAAM,CAAA;IACxC,aAAa,CAAC,EAAE,OAAO,CAAA;CACnB,sDAwBP"}
|
package/dist/commands/shared.js
DELETED
|
@@ -1,80 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Shared utilities for commands
|
|
3
|
-
*/
|
|
4
|
-
import { join } from 'node:path';
|
|
5
|
-
/**
|
|
6
|
-
* Parse command line arguments
|
|
7
|
-
*/
|
|
8
|
-
export function parseArgs(args, definitions) {
|
|
9
|
-
const result = {};
|
|
10
|
-
for (let i = 0; i < args.length; i++) {
|
|
11
|
-
const arg = args[i];
|
|
12
|
-
if (arg.startsWith('--')) {
|
|
13
|
-
const key = arg.slice(2);
|
|
14
|
-
const def = definitions.find((d) => d.name === key || d.alias === key);
|
|
15
|
-
if (def) {
|
|
16
|
-
if (def.type === 'boolean') {
|
|
17
|
-
result[key] = true;
|
|
18
|
-
}
|
|
19
|
-
else if (i + 1 < args.length) {
|
|
20
|
-
const value = args[++i];
|
|
21
|
-
result[key] = def.type === 'number' ? Number(value) : value;
|
|
22
|
-
}
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
else if (arg.startsWith('-')) {
|
|
26
|
-
const key = arg.slice(1);
|
|
27
|
-
const def = definitions.find((d) => d.alias === key);
|
|
28
|
-
if (def) {
|
|
29
|
-
if (def.type === 'boolean') {
|
|
30
|
-
result[def.name] = true;
|
|
31
|
-
}
|
|
32
|
-
else if (i + 1 < args.length) {
|
|
33
|
-
const value = args[++i];
|
|
34
|
-
result[def.name] = def.type === 'number' ? Number(value) : value;
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
// Check for required arguments
|
|
40
|
-
for (const def of definitions) {
|
|
41
|
-
if (def.required && !(def.name in result)) {
|
|
42
|
-
console.error(`❌ Required argument --${def.name} is missing`);
|
|
43
|
-
process.exit(1);
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
// Apply defaults
|
|
47
|
-
for (const def of definitions) {
|
|
48
|
-
if (!(def.name in result) && def.default !== undefined) {
|
|
49
|
-
result[def.name] = def.default;
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
return result;
|
|
53
|
-
}
|
|
54
|
-
/**
|
|
55
|
-
* Create search engine instance
|
|
56
|
-
*/
|
|
57
|
-
export async function createSearchEngine(options = {}) {
|
|
58
|
-
const { searchMode = 'auto', useFormatting = true } = options;
|
|
59
|
-
const { UnifiedSearchEngine } = await import('../core/unifiedSearch.js');
|
|
60
|
-
return new UnifiedSearchEngine({
|
|
61
|
-
mode: searchMode,
|
|
62
|
-
skillDir: join(process.cwd(), 'assets'),
|
|
63
|
-
referencesDir: join(process.cwd(), 'assets', 'references'),
|
|
64
|
-
config: {}, // No longer needed
|
|
65
|
-
skillPath: process.cwd(),
|
|
66
|
-
format: useFormatting ? 'enhanced' : undefined,
|
|
67
|
-
adapterOptions: {
|
|
68
|
-
enableChromaFallback: true,
|
|
69
|
-
chromaStartupTimeout: 15000,
|
|
70
|
-
qualityThreshold: 0.3,
|
|
71
|
-
},
|
|
72
|
-
formatting: {
|
|
73
|
-
maxPreviewLength: 200,
|
|
74
|
-
showFullContentThreshold: 0.8,
|
|
75
|
-
minScoreForPreview: 0.3,
|
|
76
|
-
showLineNumbers: true,
|
|
77
|
-
},
|
|
78
|
-
});
|
|
79
|
-
}
|
|
80
|
-
//# sourceMappingURL=shared.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"shared.js","sourceRoot":"","sources":["../../src/commands/shared.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Auto Search Adapter
|
|
3
|
-
* Intelligently selects and switches between search engines based on query characteristics
|
|
4
|
-
* and search quality evaluation
|
|
5
|
-
*/
|
|
6
|
-
import type { SearchEngine, SearchResult, SearchOptions } from './searchAdapter.js';
|
|
7
|
-
export interface AutoSearchOptions {
|
|
8
|
-
/** Skill directory for ChromaDB */
|
|
9
|
-
skillDir: string;
|
|
10
|
-
/** ChromaDB collection name */
|
|
11
|
-
collectionName: string;
|
|
12
|
-
/** Enable ChromaDB fallback on failure */
|
|
13
|
-
enableChromaFallback?: boolean;
|
|
14
|
-
/** ChromaDB startup timeout in milliseconds */
|
|
15
|
-
chromaStartupTimeout?: number;
|
|
16
|
-
/** Quality threshold for switching engines */
|
|
17
|
-
qualityThreshold?: number;
|
|
18
|
-
}
|
|
19
|
-
/**
|
|
20
|
-
* Auto Search Adapter
|
|
21
|
-
* Implements intelligent search engine selection and automatic switching
|
|
22
|
-
*/
|
|
23
|
-
export declare class AutoSearchAdapter implements SearchEngine {
|
|
24
|
-
private fuzzyAdapter;
|
|
25
|
-
private chromaAdapter;
|
|
26
|
-
private options;
|
|
27
|
-
constructor(options: AutoSearchOptions);
|
|
28
|
-
private getChromaAdapter;
|
|
29
|
-
buildIndex(referencesDir: string): Promise<void>;
|
|
30
|
-
search(query: string, options?: SearchOptions): Promise<SearchResult[]>;
|
|
31
|
-
/**
|
|
32
|
-
* Evaluate search result quality
|
|
33
|
-
*/
|
|
34
|
-
private evaluateSearchQuality;
|
|
35
|
-
isBuilt(): boolean;
|
|
36
|
-
getStats(): Promise<{
|
|
37
|
-
totalDocuments: number;
|
|
38
|
-
}>;
|
|
39
|
-
searchByPriority(query: string, topK?: number): Promise<SearchResult[]>;
|
|
40
|
-
clearIndex(): void;
|
|
41
|
-
}
|
|
42
|
-
//# sourceMappingURL=autoSearchAdapter.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"autoSearchAdapter.d.ts","sourceRoot":"","sources":["../../src/core/autoSearchAdapter.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAInF,MAAM,WAAW,iBAAiB;IAChC,mCAAmC;IACnC,QAAQ,EAAE,MAAM,CAAA;IAChB,+BAA+B;IAC/B,cAAc,EAAE,MAAM,CAAA;IACtB,0CAA0C;IAC1C,oBAAoB,CAAC,EAAE,OAAO,CAAA;IAC9B,+CAA+C;IAC/C,oBAAoB,CAAC,EAAE,MAAM,CAAA;IAC7B,8CAA8C;IAC9C,gBAAgB,CAAC,EAAE,MAAM,CAAA;CAC1B;AAED;;;GAGG;AACH,qBAAa,iBAAkB,YAAW,YAAY;IACpD,OAAO,CAAC,YAAY,CAAoB;IACxC,OAAO,CAAC,aAAa,CAAmC;IACxD,OAAO,CAAC,OAAO,CAAmB;gBAEtB,OAAO,EAAE,iBAAiB;YAOxB,gBAAgB;IAYxB,UAAU,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQhD,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,GAAE,aAAkB,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IAoCjF;;OAEG;IACH,OAAO,CAAC,qBAAqB;IA4C7B,OAAO,IAAI,OAAO;IAIZ,QAAQ,IAAI,OAAO,CAAC;QAAE,cAAc,EAAE,MAAM,CAAA;KAAE,CAAC;IAI/C,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,GAAE,MAAU,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IAIhF,UAAU,IAAI,IAAI;CAMnB"}
|
|
@@ -1,116 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Auto Search Adapter
|
|
3
|
-
* Intelligently selects and switches between search engines based on query characteristics
|
|
4
|
-
* and search quality evaluation
|
|
5
|
-
*/
|
|
6
|
-
import { FuzzySearchAdapter } from './fuzzySearchAdapter.js';
|
|
7
|
-
import { ChromaSearchAdapter } from './chromaSearchAdapter.js';
|
|
8
|
-
/**
|
|
9
|
-
* Auto Search Adapter
|
|
10
|
-
* Implements intelligent search engine selection and automatic switching
|
|
11
|
-
*/
|
|
12
|
-
export class AutoSearchAdapter {
|
|
13
|
-
fuzzyAdapter;
|
|
14
|
-
chromaAdapter = null;
|
|
15
|
-
options;
|
|
16
|
-
constructor(options) {
|
|
17
|
-
this.options = options;
|
|
18
|
-
this.fuzzyAdapter = new FuzzySearchAdapter();
|
|
19
|
-
// ChromaDB adapter created on-demand for better performance
|
|
20
|
-
}
|
|
21
|
-
async getChromaAdapter() {
|
|
22
|
-
if (!this.chromaAdapter) {
|
|
23
|
-
this.chromaAdapter = new ChromaSearchAdapter({
|
|
24
|
-
skillDir: this.options.skillDir,
|
|
25
|
-
collectionName: this.options.collectionName,
|
|
26
|
-
startupTimeout: this.options.chromaStartupTimeout || 15000,
|
|
27
|
-
enableFallback: this.options.enableChromaFallback || true,
|
|
28
|
-
});
|
|
29
|
-
}
|
|
30
|
-
return this.chromaAdapter;
|
|
31
|
-
}
|
|
32
|
-
async buildIndex(referencesDir) {
|
|
33
|
-
// Always build fuzzy index (fast and reliable)
|
|
34
|
-
await this.fuzzyAdapter.buildIndex(referencesDir);
|
|
35
|
-
// Build ChromaDB index only if needed (on-demand)
|
|
36
|
-
// This prevents unnecessary ChromaDB startup for simple searches
|
|
37
|
-
}
|
|
38
|
-
async search(query, options = {}) {
|
|
39
|
-
const { topK = 5, where } = options;
|
|
40
|
-
const qualityThreshold = this.options.qualityThreshold || 0.3;
|
|
41
|
-
console.log('🤖 Auto Mode: Starting with Fuzzy search...');
|
|
42
|
-
// Always start with fuzzy search (fast, reliable, no external dependencies)
|
|
43
|
-
const fuzzyResults = await this.fuzzyAdapter.search(query, { topK, where });
|
|
44
|
-
// Evaluate search quality
|
|
45
|
-
const quality = this.evaluateSearchQuality(fuzzyResults, query);
|
|
46
|
-
console.log(`📊 Fuzzy search quality: ${quality.score.toFixed(2)} (${quality.reason})`);
|
|
47
|
-
// If fuzzy search quality is good, return results
|
|
48
|
-
if (quality.score >= qualityThreshold) {
|
|
49
|
-
console.log('✅ Fuzzy search quality satisfactory, returning results');
|
|
50
|
-
return fuzzyResults;
|
|
51
|
-
}
|
|
52
|
-
// Try ChromaDB for better semantic understanding
|
|
53
|
-
console.log('🔄 Fuzzy search quality below threshold, trying ChromaDB...');
|
|
54
|
-
try {
|
|
55
|
-
const chromaAdapter = await this.getChromaAdapter();
|
|
56
|
-
const chromaResults = await chromaAdapter.search(query, { topK, where });
|
|
57
|
-
console.log(`✅ ChromaDB search completed, found ${chromaResults.length} results`);
|
|
58
|
-
return chromaResults;
|
|
59
|
-
}
|
|
60
|
-
catch (error) {
|
|
61
|
-
console.log(`❌ ChromaDB search failed, returning fuzzy results:`, error instanceof Error ? error.message : String(error));
|
|
62
|
-
return fuzzyResults;
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
/**
|
|
66
|
-
* Evaluate search result quality
|
|
67
|
-
*/
|
|
68
|
-
evaluateSearchQuality(results, query) {
|
|
69
|
-
if (results.length === 0) {
|
|
70
|
-
return { score: 0, reason: 'No results found' };
|
|
71
|
-
}
|
|
72
|
-
// Quick win: check for exact matches
|
|
73
|
-
const topResult = results[0];
|
|
74
|
-
const queryLower = query.toLowerCase();
|
|
75
|
-
if (topResult.title.toLowerCase().includes(queryLower)) {
|
|
76
|
-
return { score: 1.0, reason: 'Exact title match found' };
|
|
77
|
-
}
|
|
78
|
-
// Check score distribution
|
|
79
|
-
const scores = results.map((r) => r.score);
|
|
80
|
-
const maxScore = Math.max(...scores);
|
|
81
|
-
const avgScore = scores.reduce((sum, score) => sum + score, 0) / scores.length;
|
|
82
|
-
// High score threshold
|
|
83
|
-
if (maxScore >= 0.8) {
|
|
84
|
-
return { score: maxScore, reason: 'High quality matches found' };
|
|
85
|
-
}
|
|
86
|
-
// Multiple decent results
|
|
87
|
-
if (results.length >= 3 && avgScore >= 0.5) {
|
|
88
|
-
return { score: avgScore, reason: 'Multiple decent quality results' };
|
|
89
|
-
}
|
|
90
|
-
// Low quality indicators
|
|
91
|
-
if (maxScore < 0.3) {
|
|
92
|
-
return { score: maxScore, reason: 'Low quality matches only' };
|
|
93
|
-
}
|
|
94
|
-
if (results.length < 2) {
|
|
95
|
-
return { score: maxScore * 0.8, reason: 'Too few results' };
|
|
96
|
-
}
|
|
97
|
-
// Default: return average score
|
|
98
|
-
return { score: avgScore, reason: 'Average quality results' };
|
|
99
|
-
}
|
|
100
|
-
isBuilt() {
|
|
101
|
-
return this.fuzzyAdapter.isBuilt();
|
|
102
|
-
}
|
|
103
|
-
async getStats() {
|
|
104
|
-
return this.fuzzyAdapter.getStats();
|
|
105
|
-
}
|
|
106
|
-
async searchByPriority(query, topK = 5) {
|
|
107
|
-
return this.search(query, { topK });
|
|
108
|
-
}
|
|
109
|
-
clearIndex() {
|
|
110
|
-
this.fuzzyAdapter.clearIndex();
|
|
111
|
-
if (this.chromaAdapter) {
|
|
112
|
-
this.chromaAdapter.clearIndex();
|
|
113
|
-
}
|
|
114
|
-
}
|
|
115
|
-
}
|
|
116
|
-
//# sourceMappingURL=autoSearchAdapter.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"autoSearchAdapter.js","sourceRoot":"","sources":["../../src/core/autoSearchAdapter.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAA;AAC5D,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAA;AAe9D;;;GAGG;AACH,MAAM,OAAO,iBAAiB;IACpB,YAAY,CAAoB;IAChC,aAAa,GAA+B,IAAI,CAAA;IAChD,OAAO,CAAmB;IAElC,YAAY,OAA0B;QACpC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;QACtB,IAAI,CAAC,YAAY,GAAG,IAAI,kBAAkB,EAAE,CAAA;QAE5C,4DAA4D;IAC9D,CAAC;IAEO,KAAK,CAAC,gBAAgB;QAC5B,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;YACxB,IAAI,CAAC,aAAa,GAAG,IAAI,mBAAmB,CAAC;gBAC3C,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ;gBAC/B,cAAc,EAAE,IAAI,CAAC,OAAO,CAAC,cAAc;gBAC3C,cAAc,EAAE,IAAI,CAAC,OAAO,CAAC,oBAAoB,IAAI,KAAK;gBAC1D,cAAc,EAAE,IAAI,CAAC,OAAO,CAAC,oBAAoB,IAAI,IAAI;aAC1D,CAAC,CAAA;QACJ,CAAC;QACD,OAAO,IAAI,CAAC,aAAa,CAAA;IAC3B,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,aAAqB;QACpC,+CAA+C;QAC/C,MAAM,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,aAAa,CAAC,CAAA;QAEjD,kDAAkD;QAClD,iEAAiE;IACnE,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,KAAa,EAAE,UAAyB,EAAE;QACrD,MAAM,EAAE,IAAI,GAAG,CAAC,EAAE,KAAK,EAAE,GAAG,OAAO,CAAA;QACnC,MAAM,gBAAgB,GAAG,IAAI,CAAC,OAAO,CAAC,gBAAgB,IAAI,GAAG,CAAA;QAE7D,OAAO,CAAC,GAAG,CAAC,6CAA6C,CAAC,CAAA;QAE1D,4EAA4E;QAC5E,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAA;QAE3E,0BAA0B;QAC1B,MAAM,OAAO,GAAG,IAAI,CAAC,qBAAqB,CAAC,YAAY,EAAE,KAAK,CAAC,CAAA;QAC/D,OAAO,CAAC,GAAG,CAAC,4BAA4B,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,MAAM,GAAG,CAAC,CAAA;QAEvF,kDAAkD;QAClD,IAAI,OAAO,CAAC,KAAK,IAAI,gBAAgB,EAAE,CAAC;YACtC,OAAO,CAAC,GAAG,CAAC,wDAAwD,CAAC,CAAA;YACrE,OAAO,YAAY,CAAA;QACrB,CAAC;QAED,iDAAiD;QACjD,OAAO,CAAC,GAAG,CAAC,6DAA6D,CAAC,CAAA;QAE1E,IAAI,CAAC;YACH,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,gBAAgB,EAAE,CAAA;YACnD,MAAM,aAAa,GAAG,MAAM,aAAa,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAA;YACxE,OAAO,CAAC,GAAG,CAAC,sCAAsC,aAAa,CAAC,MAAM,UAAU,CAAC,CAAA;YACjF,OAAO,aAAa,CAAA;QACtB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,GAAG,CACT,oDAAoD,EACpD,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CACvD,CAAA;YACD,OAAO,YAAY,CAAA;QACrB,CAAC;IACH,CAAC;IAED;;OAEG;IACK,qBAAqB,CAC3B,OAAuB,EACvB,KAAa;QAEb,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzB,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,kBAAkB,EAAE,CAAA;QACjD,CAAC;QAED,qCAAqC;QACrC,MAAM,SAAS,GAAG,OAAO,CAAC,CAAC,CAAC,CAAA;QAC5B,MAAM,UAAU,GAAG,KAAK,CAAC,WAAW,EAAE,CAAA;QAEtC,IAAI,SAAS,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;YACvD,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,yBAAyB,EAAE,CAAA;QAC1D,CAAC;QAED,2BAA2B;QAC3B,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAA;QAC1C,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,CAAA;QACpC,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC,GAAG,GAAG,KAAK,EAAE,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,CAAA;QAE9E,uBAAuB;QACvB,IAAI,QAAQ,IAAI,GAAG,EAAE,CAAC;YACpB,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,4BAA4B,EAAE,CAAA;QAClE,CAAC;QAED,0BAA0B;QAC1B,IAAI,OAAO,CAAC,MAAM,IAAI,CAAC,IAAI,QAAQ,IAAI,GAAG,EAAE,CAAC;YAC3C,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,iCAAiC,EAAE,CAAA;QACvE,CAAC;QAED,yBAAyB;QACzB,IAAI,QAAQ,GAAG,GAAG,EAAE,CAAC;YACnB,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,0BAA0B,EAAE,CAAA;QAChE,CAAC;QAED,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACvB,OAAO,EAAE,KAAK,EAAE,QAAQ,GAAG,GAAG,EAAE,MAAM,EAAE,iBAAiB,EAAE,CAAA;QAC7D,CAAC;QAED,gCAAgC;QAChC,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,yBAAyB,EAAE,CAAA;IAC/D,CAAC;IAED,OAAO;QACL,OAAO,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,CAAA;IACpC,CAAC;IAED,KAAK,CAAC,QAAQ;QACZ,OAAO,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAA;IACrC,CAAC;IAED,KAAK,CAAC,gBAAgB,CAAC,KAAa,EAAE,OAAe,CAAC;QACpD,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,CAAC,CAAA;IACrC,CAAC;IAED,UAAU;QACR,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE,CAAA;QAC9B,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YACvB,IAAI,CAAC,aAAa,CAAC,UAAU,EAAE,CAAA;QACjC,CAAC;IACH,CAAC;CACF"}
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* ChromaDB-based search engine with default embeddings
|
|
3
|
-
*/
|
|
4
|
-
import type { SearchResult } from '../types/index.js';
|
|
5
|
-
export interface ChromaSearchOptions {
|
|
6
|
-
dbPath: string;
|
|
7
|
-
collectionName: string;
|
|
8
|
-
}
|
|
9
|
-
export declare class ChromaSearchEngine {
|
|
10
|
-
private db?;
|
|
11
|
-
private options;
|
|
12
|
-
private embeddingFunction?;
|
|
13
|
-
constructor(options: ChromaSearchOptions);
|
|
14
|
-
initialize(): Promise<void>;
|
|
15
|
-
buildIndex(referencesDir: string, hashFile: string): Promise<void>;
|
|
16
|
-
search(query: string, topK?: number, where?: Record<string, any>): Promise<SearchResult[]>;
|
|
17
|
-
searchByPriority(query: string, topK?: number): Promise<SearchResult[]>;
|
|
18
|
-
getStats(): Promise<{
|
|
19
|
-
totalDocuments: number;
|
|
20
|
-
}>;
|
|
21
|
-
private initializeIfNeeded;
|
|
22
|
-
private splitIntoSections;
|
|
23
|
-
}
|
|
24
|
-
//# sourceMappingURL=chromaSearch.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"chromaSearch.d.ts","sourceRoot":"","sources":["../../src/core/chromaSearch.ts"],"names":[],"mappings":"AAAA;;GAEG;AAOH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAGrD,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,MAAM,CAAA;IACd,cAAc,EAAE,MAAM,CAAA;CACvB;AAED,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,EAAE,CAAC,CAAc;IACzB,OAAO,CAAC,OAAO,CAAqB;IACpC,OAAO,CAAC,iBAAiB,CAAC,CAA0B;gBAExC,OAAO,EAAE,mBAAmB;IAIlC,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAe3B,UAAU,CAAC,aAAa,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA+FlE,MAAM,CACV,KAAK,EAAE,MAAM,EACb,IAAI,GAAE,MAAU,EAChB,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAC1B,OAAO,CAAC,YAAY,EAAE,CAAC;IAoCpB,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,GAAE,MAAU,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IAU1E,QAAQ,IAAI,OAAO,CAAC;QAAE,cAAc,EAAE,MAAM,CAAA;KAAE,CAAC;YAiBvC,kBAAkB;IAOhC,OAAO,CAAC,iBAAiB;CA2B1B"}
|
|
@@ -1,194 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* ChromaDB-based search engine with default embeddings
|
|
3
|
-
*/
|
|
4
|
-
import { join } from 'node:path';
|
|
5
|
-
import { existsSync, readFileSync, writeFileSync } from 'node:fs';
|
|
6
|
-
import { glob } from 'glob';
|
|
7
|
-
import { createHash } from 'node:crypto';
|
|
8
|
-
export class ChromaSearchEngine {
|
|
9
|
-
db;
|
|
10
|
-
options;
|
|
11
|
-
embeddingFunction;
|
|
12
|
-
constructor(options) {
|
|
13
|
-
this.options = options;
|
|
14
|
-
}
|
|
15
|
-
async initialize() {
|
|
16
|
-
const { ChromaClient } = await import('chromadb');
|
|
17
|
-
const { DefaultEmbeddingFunction } = await import('@chroma-core/default-embed');
|
|
18
|
-
// For now, always use HTTP client with local ChromaDB server
|
|
19
|
-
// The JavaScript client doesn't properly support embedded mode
|
|
20
|
-
console.log('Connecting to ChromaDB server at http://localhost:8000');
|
|
21
|
-
this.db = new ChromaClient({
|
|
22
|
-
path: 'http://localhost:8000',
|
|
23
|
-
});
|
|
24
|
-
// Use default embedding function (doesn't require API keys)
|
|
25
|
-
this.embeddingFunction = new DefaultEmbeddingFunction();
|
|
26
|
-
}
|
|
27
|
-
async buildIndex(referencesDir, hashFile) {
|
|
28
|
-
if (!(await this.initializeIfNeeded())) {
|
|
29
|
-
return;
|
|
30
|
-
}
|
|
31
|
-
// Get all markdown files
|
|
32
|
-
const files = await glob('**/*.md', { cwd: referencesDir });
|
|
33
|
-
if (files.length === 0) {
|
|
34
|
-
console.log('No documentation files found to index');
|
|
35
|
-
return;
|
|
36
|
-
}
|
|
37
|
-
// Calculate current hash
|
|
38
|
-
const fileContents = files.map((file) => {
|
|
39
|
-
const content = readFileSync(join(referencesDir, file), 'utf-8');
|
|
40
|
-
return `${file}:${content}`;
|
|
41
|
-
});
|
|
42
|
-
const h = createHash('sha256');
|
|
43
|
-
h.update(fileContents.join('\n'));
|
|
44
|
-
const currentHash = h.digest('hex');
|
|
45
|
-
// Check if we need to rebuild
|
|
46
|
-
if (existsSync(hashFile)) {
|
|
47
|
-
const lastHash = readFileSync(hashFile, 'utf-8');
|
|
48
|
-
if (lastHash === currentHash) {
|
|
49
|
-
console.log('Index is up to date');
|
|
50
|
-
return;
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
console.log(`Indexing ${files.length} documents...`);
|
|
54
|
-
// Get or create collection
|
|
55
|
-
let collection;
|
|
56
|
-
try {
|
|
57
|
-
collection = await this.db.getCollection({
|
|
58
|
-
name: this.options.collectionName,
|
|
59
|
-
embeddingFunction: this.embeddingFunction,
|
|
60
|
-
});
|
|
61
|
-
// Clear existing data
|
|
62
|
-
await collection.delete({});
|
|
63
|
-
}
|
|
64
|
-
catch {
|
|
65
|
-
collection = await this.db.createCollection({
|
|
66
|
-
name: this.options.collectionName,
|
|
67
|
-
embeddingFunction: this.embeddingFunction,
|
|
68
|
-
});
|
|
69
|
-
}
|
|
70
|
-
// Process and add documents
|
|
71
|
-
const documents = [];
|
|
72
|
-
const metadatas = [];
|
|
73
|
-
const ids = [];
|
|
74
|
-
for (const file of files) {
|
|
75
|
-
const content = readFileSync(join(referencesDir, file), 'utf-8');
|
|
76
|
-
const sections = this.splitIntoSections(content);
|
|
77
|
-
for (let i = 0; i < sections.length; i++) {
|
|
78
|
-
const section = sections[i];
|
|
79
|
-
documents.push(section.content);
|
|
80
|
-
const source = file.includes('context7/') ? 'context7' : 'user';
|
|
81
|
-
metadatas.push({
|
|
82
|
-
source,
|
|
83
|
-
file_path: file,
|
|
84
|
-
section_index: i,
|
|
85
|
-
title: section.title,
|
|
86
|
-
priority: source === 'user' ? 10 : 1,
|
|
87
|
-
});
|
|
88
|
-
ids.push(`${file}_${i}`);
|
|
89
|
-
}
|
|
90
|
-
}
|
|
91
|
-
// Add to collection in batches
|
|
92
|
-
const batchSize = 100;
|
|
93
|
-
for (let i = 0; i < documents.length; i += batchSize) {
|
|
94
|
-
const batch = documents.slice(i, i + batchSize);
|
|
95
|
-
const metadataBatch = metadatas.slice(i, i + batchSize);
|
|
96
|
-
const idBatch = ids.slice(i, i + batchSize);
|
|
97
|
-
await collection.add({
|
|
98
|
-
ids: idBatch,
|
|
99
|
-
documents: batch,
|
|
100
|
-
metadatas: metadataBatch,
|
|
101
|
-
});
|
|
102
|
-
}
|
|
103
|
-
// Save hash
|
|
104
|
-
writeFileSync(hashFile, currentHash);
|
|
105
|
-
console.log(`✅ Indexed ${documents.length} sections from ${files.length} files`);
|
|
106
|
-
}
|
|
107
|
-
async search(query, topK = 5, where) {
|
|
108
|
-
if (!(await this.initializeIfNeeded())) {
|
|
109
|
-
return [];
|
|
110
|
-
}
|
|
111
|
-
let collection;
|
|
112
|
-
try {
|
|
113
|
-
collection = await this.db.getCollection({
|
|
114
|
-
name: this.options.collectionName,
|
|
115
|
-
embeddingFunction: this.embeddingFunction,
|
|
116
|
-
});
|
|
117
|
-
}
|
|
118
|
-
catch {
|
|
119
|
-
return [];
|
|
120
|
-
}
|
|
121
|
-
const results = await collection.query({
|
|
122
|
-
queryTexts: [query],
|
|
123
|
-
nResults: topK,
|
|
124
|
-
where,
|
|
125
|
-
});
|
|
126
|
-
if (!results.ids[0] || results.ids[0].length === 0) {
|
|
127
|
-
return [];
|
|
128
|
-
}
|
|
129
|
-
return results.ids[0].map((id, index) => ({
|
|
130
|
-
id,
|
|
131
|
-
title: results.metadatas[0]?.[index]?.title || 'Untitled',
|
|
132
|
-
content: results.documents[0]?.[index] || '',
|
|
133
|
-
score: results.distances[0]?.[index] || 0,
|
|
134
|
-
source: results.metadatas[0]?.[index]?.source || 'unknown',
|
|
135
|
-
file_path: results.metadatas[0]?.[index]?.file_path || '',
|
|
136
|
-
metadata: results.metadatas[0]?.[index] || {},
|
|
137
|
-
}));
|
|
138
|
-
}
|
|
139
|
-
async searchByPriority(query, topK = 5) {
|
|
140
|
-
// First try user content, then context7
|
|
141
|
-
const userResults = await this.search(query, topK, { source: 'user' });
|
|
142
|
-
const contextResults = await this.search(query, topK - userResults.length, {
|
|
143
|
-
source: 'context7',
|
|
144
|
-
});
|
|
145
|
-
return [...userResults, ...contextResults].slice(0, topK);
|
|
146
|
-
}
|
|
147
|
-
async getStats() {
|
|
148
|
-
if (!(await this.initializeIfNeeded())) {
|
|
149
|
-
return { totalDocuments: 0 };
|
|
150
|
-
}
|
|
151
|
-
try {
|
|
152
|
-
const collection = await this.db.getCollection({
|
|
153
|
-
name: this.options.collectionName,
|
|
154
|
-
embeddingFunction: this.embeddingFunction,
|
|
155
|
-
});
|
|
156
|
-
const count = await collection.count();
|
|
157
|
-
return { totalDocuments: count };
|
|
158
|
-
}
|
|
159
|
-
catch {
|
|
160
|
-
return { totalDocuments: 0 };
|
|
161
|
-
}
|
|
162
|
-
}
|
|
163
|
-
async initializeIfNeeded() {
|
|
164
|
-
if (!this.db) {
|
|
165
|
-
await this.initialize();
|
|
166
|
-
}
|
|
167
|
-
return !!this.db;
|
|
168
|
-
}
|
|
169
|
-
splitIntoSections(content) {
|
|
170
|
-
const sections = [];
|
|
171
|
-
const lines = content.split('\n');
|
|
172
|
-
let currentSection = { title: 'Introduction', content: '' };
|
|
173
|
-
for (const line of lines) {
|
|
174
|
-
const headingMatch = line.match(/^(#{1,6})\s+(.+)$/);
|
|
175
|
-
if (headingMatch) {
|
|
176
|
-
if (currentSection.content.trim()) {
|
|
177
|
-
sections.push({ ...currentSection });
|
|
178
|
-
}
|
|
179
|
-
currentSection = {
|
|
180
|
-
title: headingMatch[2],
|
|
181
|
-
content: '',
|
|
182
|
-
};
|
|
183
|
-
}
|
|
184
|
-
else {
|
|
185
|
-
currentSection.content += line + '\n';
|
|
186
|
-
}
|
|
187
|
-
}
|
|
188
|
-
if (currentSection.content.trim()) {
|
|
189
|
-
sections.push(currentSection);
|
|
190
|
-
}
|
|
191
|
-
return sections.filter((s) => s.content.trim().length > 50);
|
|
192
|
-
}
|
|
193
|
-
}
|
|
194
|
-
//# sourceMappingURL=chromaSearch.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"chromaSearch.js","sourceRoot":"","sources":["../../src/core/chromaSearch.ts"],"names":[],"mappings":"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"}
|