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.
Files changed (187) hide show
  1. package/dist/chunk-Da8dvM5T.mjs +1 -0
  2. package/dist/cli.d.mts +1016 -0
  3. package/dist/cli.d.mts.map +1 -0
  4. package/dist/cli.mjs +36 -0
  5. package/dist/cli.mjs.map +1 -0
  6. package/dist/contentManager-8rmWJMb6.mjs +22 -0
  7. package/dist/contentManager-8rmWJMb6.mjs.map +1 -0
  8. package/dist/contentManager-Xt8N5psY.mjs +1 -0
  9. package/dist/dist-DZL34HNo.mjs +8 -0
  10. package/dist/dist-DZL34HNo.mjs.map +1 -0
  11. package/dist/dist-X_kVEzbK.mjs +1 -0
  12. package/dist/esm-8qfZdcpd.mjs +33 -0
  13. package/dist/esm-8qfZdcpd.mjs.map +1 -0
  14. package/dist/esm-BF5pvSbc.mjs +1 -0
  15. package/dist/esm-BbhxxeGF.mjs +4 -0
  16. package/dist/esm-BbhxxeGF.mjs.map +1 -0
  17. package/dist/index.d.mts +1964 -0
  18. package/dist/index.d.mts.map +1 -0
  19. package/dist/index.mjs +21 -0
  20. package/dist/index.mjs.map +1 -0
  21. package/dist/listContext7-DKXzgWdn.mjs +2 -0
  22. package/dist/listContext7-DKXzgWdn.mjs.map +1 -0
  23. package/dist/package-B4FNst2t.mjs +2 -0
  24. package/dist/package-B4FNst2t.mjs.map +1 -0
  25. package/dist/path-CuoiIaIe.mjs +2 -0
  26. package/dist/path-CuoiIaIe.mjs.map +1 -0
  27. package/dist/removeContext7-DOXrTXeI.mjs +3 -0
  28. package/dist/removeContext7-DOXrTXeI.mjs.map +1 -0
  29. package/dist/removeSkill-C-ehFexk.mjs +5 -0
  30. package/dist/removeSkill-C-ehFexk.mjs.map +1 -0
  31. package/dist/removeSkill-DWwhvzej.mjs +1 -0
  32. package/dist/runScript-Cr9RRN9y.mjs +14 -0
  33. package/dist/runScript-Cr9RRN9y.mjs.map +1 -0
  34. package/dist/search_format-DIs-1lKk.mjs +5 -0
  35. package/dist/search_format-DIs-1lKk.mjs.map +1 -0
  36. package/dist/shared-CFoY2Xhg.mjs +2 -0
  37. package/dist/shared-CFoY2Xhg.mjs.map +1 -0
  38. package/dist/skillMdManager-DP8fGZb7.mjs +7 -0
  39. package/dist/skillMdManager-DP8fGZb7.mjs.map +1 -0
  40. package/dist/unifiedSearch-CGZXw0NB.mjs +1 -0
  41. package/dist/unifiedSearch-l-lrSc9C.mjs +4 -0
  42. package/dist/unifiedSearch-l-lrSc9C.mjs.map +1 -0
  43. package/package.json +30 -17
  44. package/dist/cli.d.ts +0 -8
  45. package/dist/cli.d.ts.map +0 -1
  46. package/dist/cli.js +0 -513
  47. package/dist/cli.js.map +0 -1
  48. package/dist/commands/addContent.d.ts +0 -5
  49. package/dist/commands/addContent.d.ts.map +0 -1
  50. package/dist/commands/addContent.js +0 -88
  51. package/dist/commands/addContent.js.map +0 -1
  52. package/dist/commands/buildIndex.d.ts +0 -5
  53. package/dist/commands/buildIndex.d.ts.map +0 -1
  54. package/dist/commands/buildIndex.js +0 -16
  55. package/dist/commands/buildIndex.js.map +0 -1
  56. package/dist/commands/createSkill.d.ts +0 -6
  57. package/dist/commands/createSkill.d.ts.map +0 -1
  58. package/dist/commands/createSkill.js +0 -32
  59. package/dist/commands/createSkill.js.map +0 -1
  60. package/dist/commands/downloadContext7.d.ts +0 -5
  61. package/dist/commands/downloadContext7.d.ts.map +0 -1
  62. package/dist/commands/downloadContext7.js +0 -71
  63. package/dist/commands/downloadContext7.js.map +0 -1
  64. package/dist/commands/init.d.ts +0 -5
  65. package/dist/commands/init.d.ts.map +0 -1
  66. package/dist/commands/init.js +0 -95
  67. package/dist/commands/init.js.map +0 -1
  68. package/dist/commands/listContent.d.ts +0 -5
  69. package/dist/commands/listContent.d.ts.map +0 -1
  70. package/dist/commands/listContent.js +0 -34
  71. package/dist/commands/listContent.js.map +0 -1
  72. package/dist/commands/listContext7.d.ts +0 -5
  73. package/dist/commands/listContext7.d.ts.map +0 -1
  74. package/dist/commands/listContext7.js +0 -26
  75. package/dist/commands/listContext7.js.map +0 -1
  76. package/dist/commands/listSkills.d.ts +0 -5
  77. package/dist/commands/listSkills.d.ts.map +0 -1
  78. package/dist/commands/listSkills.js +0 -34
  79. package/dist/commands/listSkills.js.map +0 -1
  80. package/dist/commands/removeContext7.d.ts +0 -5
  81. package/dist/commands/removeContext7.d.ts.map +0 -1
  82. package/dist/commands/removeContext7.js +0 -54
  83. package/dist/commands/removeContext7.js.map +0 -1
  84. package/dist/commands/removeSkill.d.ts +0 -5
  85. package/dist/commands/removeSkill.d.ts.map +0 -1
  86. package/dist/commands/removeSkill.js +0 -83
  87. package/dist/commands/removeSkill.js.map +0 -1
  88. package/dist/commands/searchContent.d.ts +0 -5
  89. package/dist/commands/searchContent.d.ts.map +0 -1
  90. package/dist/commands/searchContent.js +0 -99
  91. package/dist/commands/searchContent.js.map +0 -1
  92. package/dist/commands/shared.d.ts +0 -21
  93. package/dist/commands/shared.d.ts.map +0 -1
  94. package/dist/commands/shared.js +0 -80
  95. package/dist/commands/shared.js.map +0 -1
  96. package/dist/core/autoSearchAdapter.d.ts +0 -42
  97. package/dist/core/autoSearchAdapter.d.ts.map +0 -1
  98. package/dist/core/autoSearchAdapter.js +0 -116
  99. package/dist/core/autoSearchAdapter.js.map +0 -1
  100. package/dist/core/chromaSearch.d.ts +0 -24
  101. package/dist/core/chromaSearch.d.ts.map +0 -1
  102. package/dist/core/chromaSearch.js +0 -194
  103. package/dist/core/chromaSearch.js.map +0 -1
  104. package/dist/core/chromaSearchAdapter.d.ts +0 -86
  105. package/dist/core/chromaSearchAdapter.d.ts.map +0 -1
  106. package/dist/core/chromaSearchAdapter.js +0 -477
  107. package/dist/core/chromaSearchAdapter.js.map +0 -1
  108. package/dist/core/chromaServerManager.d.ts +0 -64
  109. package/dist/core/chromaServerManager.d.ts.map +0 -1
  110. package/dist/core/chromaServerManager.js +0 -186
  111. package/dist/core/chromaServerManager.js.map +0 -1
  112. package/dist/core/contentManager.d.ts +0 -65
  113. package/dist/core/contentManager.d.ts.map +0 -1
  114. package/dist/core/contentManager.js +0 -533
  115. package/dist/core/contentManager.js.map +0 -1
  116. package/dist/core/fuzzySearchAdapter.d.ts +0 -33
  117. package/dist/core/fuzzySearchAdapter.d.ts.map +0 -1
  118. package/dist/core/fuzzySearchAdapter.js +0 -185
  119. package/dist/core/fuzzySearchAdapter.js.map +0 -1
  120. package/dist/core/portUtils.d.ts +0 -51
  121. package/dist/core/portUtils.d.ts.map +0 -1
  122. package/dist/core/portUtils.js +0 -120
  123. package/dist/core/portUtils.js.map +0 -1
  124. package/dist/core/runScript.d.ts +0 -5
  125. package/dist/core/runScript.d.ts.map +0 -1
  126. package/dist/core/runScript.js +0 -40
  127. package/dist/core/runScript.js.map +0 -1
  128. package/dist/core/searchAdapter.d.ts +0 -48
  129. package/dist/core/searchAdapter.d.ts.map +0 -1
  130. package/dist/core/searchAdapter.js +0 -6
  131. package/dist/core/searchAdapter.js.map +0 -1
  132. package/dist/core/searchEngineFactory.d.ts +0 -30
  133. package/dist/core/searchEngineFactory.d.ts.map +0 -1
  134. package/dist/core/searchEngineFactory.js +0 -41
  135. package/dist/core/searchEngineFactory.js.map +0 -1
  136. package/dist/core/skillCreator.d.ts +0 -12
  137. package/dist/core/skillCreator.d.ts.map +0 -1
  138. package/dist/core/skillCreator.js +0 -79
  139. package/dist/core/skillCreator.js.map +0 -1
  140. package/dist/core/templateManager.d.ts +0 -28
  141. package/dist/core/templateManager.d.ts.map +0 -1
  142. package/dist/core/templateManager.js +0 -583
  143. package/dist/core/templateManager.js.map +0 -1
  144. package/dist/core/unifiedSearch.d.ts +0 -69
  145. package/dist/core/unifiedSearch.d.ts.map +0 -1
  146. package/dist/core/unifiedSearch.js +0 -105
  147. package/dist/core/unifiedSearch.js.map +0 -1
  148. package/dist/index.d.ts +0 -13
  149. package/dist/index.d.ts.map +0 -1
  150. package/dist/index.js +0 -11
  151. package/dist/index.js.map +0 -1
  152. package/dist/search_format/enhancedFormatter.d.ts +0 -109
  153. package/dist/search_format/enhancedFormatter.d.ts.map +0 -1
  154. package/dist/search_format/enhancedFormatter.js +0 -262
  155. package/dist/search_format/enhancedFormatter.js.map +0 -1
  156. package/dist/search_format/index.d.ts +0 -10
  157. package/dist/search_format/index.d.ts.map +0 -1
  158. package/dist/search_format/index.js +0 -22
  159. package/dist/search_format/index.js.map +0 -1
  160. package/dist/search_format/listFormatter.d.ts +0 -16
  161. package/dist/search_format/listFormatter.d.ts.map +0 -1
  162. package/dist/search_format/listFormatter.js +0 -51
  163. package/dist/search_format/listFormatter.js.map +0 -1
  164. package/dist/search_format/types.d.ts +0 -69
  165. package/dist/search_format/types.d.ts.map +0 -1
  166. package/dist/search_format/types.js +0 -5
  167. package/dist/search_format/types.js.map +0 -1
  168. package/dist/types/index.d.ts +0 -74
  169. package/dist/types/index.d.ts.map +0 -1
  170. package/dist/types/index.js +0 -2
  171. package/dist/types/index.js.map +0 -1
  172. package/dist/utils/claudeCodeDetection.d.ts +0 -27
  173. package/dist/utils/claudeCodeDetection.d.ts.map +0 -1
  174. package/dist/utils/claudeCodeDetection.js +0 -81
  175. package/dist/utils/claudeCodeDetection.js.map +0 -1
  176. package/dist/utils/config.d.ts +0 -23
  177. package/dist/utils/config.d.ts.map +0 -1
  178. package/dist/utils/config.js +0 -41
  179. package/dist/utils/config.js.map +0 -1
  180. package/dist/utils/package.d.ts +0 -88
  181. package/dist/utils/package.d.ts.map +0 -1
  182. package/dist/utils/package.js +0 -221
  183. package/dist/utils/package.js.map +0 -1
  184. package/dist/utils/skillMdManager.d.ts +0 -45
  185. package/dist/utils/skillMdManager.d.ts.map +0 -1
  186. package/dist/utils/skillMdManager.js +0 -173
  187. 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"}
@@ -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":"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"}
@@ -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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"}