skill-creator 1.0.0 → 1.1.1

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 (74) hide show
  1. package/README.md +14 -5
  2. package/dist/cli.d.ts +1 -2
  3. package/dist/cli.d.ts.map +1 -1
  4. package/dist/cli.js +30 -29
  5. package/dist/cli.js.map +1 -1
  6. package/dist/commands/init.js +2 -2
  7. package/dist/commands/init.js.map +1 -1
  8. package/dist/core/chromaSearch.d.ts +2 -2
  9. package/dist/core/chromaSearch.d.ts.map +1 -1
  10. package/dist/core/chromaSearch.js +11 -9
  11. package/dist/core/chromaSearch.js.map +1 -1
  12. package/dist/core/skillCreator.d.ts +2 -2
  13. package/dist/core/skillCreator.d.ts.map +1 -1
  14. package/dist/core/skillCreator.js +39 -116
  15. package/dist/core/skillCreator.js.map +1 -1
  16. package/dist/core/templateManager.d.ts +2 -1
  17. package/dist/core/templateManager.d.ts.map +1 -1
  18. package/dist/core/templateManager.js +19 -13
  19. package/dist/core/templateManager.js.map +1 -1
  20. package/dist/types/index.d.ts +1 -1
  21. package/dist/types/index.d.ts.map +1 -1
  22. package/package.json +1 -1
  23. package/templates/SKILL.md +193 -0
  24. package/templates/SKILL.zh-CN.md +193 -0
  25. package/templates/skill-creator.md +6 -4
  26. package/templates/skill-creator.zh-CN.md +9 -4
  27. package/dist/commands/initCc.d.ts +0 -5
  28. package/dist/commands/initCc.d.ts.map +0 -1
  29. package/dist/commands/initCc.js +0 -26
  30. package/dist/commands/initCc.js.map +0 -1
  31. package/dist/commands/updateContext7.d.ts +0 -5
  32. package/dist/commands/updateContext7.d.ts.map +0 -1
  33. package/dist/commands/updateContext7.js +0 -28
  34. package/dist/commands/updateContext7.js.map +0 -1
  35. package/dist/core/chromaLocalSearch.d.ts +0 -26
  36. package/dist/core/chromaLocalSearch.d.ts.map +0 -1
  37. package/dist/core/chromaLocalSearch.js +0 -212
  38. package/dist/core/chromaLocalSearch.js.map +0 -1
  39. package/dist/core/chromaLocalSimple.d.ts +0 -24
  40. package/dist/core/chromaLocalSimple.d.ts.map +0 -1
  41. package/dist/core/chromaLocalSimple.js +0 -216
  42. package/dist/core/chromaLocalSimple.js.map +0 -1
  43. package/dist/core/chromaSearchImproved.d.ts +0 -29
  44. package/dist/core/chromaSearchImproved.d.ts.map +0 -1
  45. package/dist/core/chromaSearchImproved.js +0 -259
  46. package/dist/core/chromaSearchImproved.js.map +0 -1
  47. package/dist/core/fuseSearch.d.ts +0 -25
  48. package/dist/core/fuseSearch.d.ts.map +0 -1
  49. package/dist/core/fuseSearch.js +0 -198
  50. package/dist/core/fuseSearch.js.map +0 -1
  51. package/dist/core/fuzzySearch.d.ts +0 -66
  52. package/dist/core/fuzzySearch.d.ts.map +0 -1
  53. package/dist/core/fuzzySearch.js +0 -271
  54. package/dist/core/fuzzySearch.js.map +0 -1
  55. package/dist/core/searchEngine.d.ts +0 -25
  56. package/dist/core/searchEngine.d.ts.map +0 -1
  57. package/dist/core/searchEngine.js +0 -198
  58. package/dist/core/searchEngine.js.map +0 -1
  59. package/dist/core/simpleLocalSearch.d.ts +0 -50
  60. package/dist/core/simpleLocalSearch.d.ts.map +0 -1
  61. package/dist/core/simpleLocalSearch.js +0 -406
  62. package/dist/core/simpleLocalSearch.js.map +0 -1
  63. package/dist/core/simpleSearch.d.ts +0 -21
  64. package/dist/core/simpleSearch.d.ts.map +0 -1
  65. package/dist/core/simpleSearch.js +0 -113
  66. package/dist/core/simpleSearch.js.map +0 -1
  67. package/dist/test/testFuzzy.d.ts +0 -3
  68. package/dist/test/testFuzzy.d.ts.map +0 -1
  69. package/dist/test/testFuzzy.js +0 -72
  70. package/dist/test/testFuzzy.js.map +0 -1
  71. package/dist/test-fuzzy.d.ts +0 -6
  72. package/dist/test-fuzzy.d.ts.map +0 -1
  73. package/dist/test-fuzzy.js +0 -65
  74. package/dist/test-fuzzy.js.map +0 -1
@@ -1,259 +0,0 @@
1
- /**
2
- * 优化后的 ChromaDB-based search engine with local file storage support
3
- */
4
- import { join } from 'node:path';
5
- import { existsSync, readFileSync, writeFileSync, mkdirSync } from 'node:fs';
6
- import { glob } from 'glob';
7
- import { createHash } from 'node:crypto';
8
- export class ChromaSearchEngine {
9
- client = null;
10
- collection = null;
11
- options;
12
- embeddingFunction = null;
13
- mode = 'http';
14
- constructor(options) {
15
- this.options = {
16
- mode: 'auto',
17
- ...options
18
- };
19
- }
20
- async initializeEmbeddingFunction() {
21
- if (!this.embeddingFunction) {
22
- const { DefaultEmbeddingFunction } = await import('@chroma-core/default-embed');
23
- this.embeddingFunction = new DefaultEmbeddingFunction();
24
- }
25
- }
26
- async initializeClient() {
27
- await this.initializeEmbeddingFunction();
28
- const { ChromaClient } = await import('chromadb');
29
- // 尝试 HTTP 模式(优先)
30
- if (this.options.mode === 'http' || this.options.mode === 'auto') {
31
- try {
32
- console.log('🔗 尝试 HTTP 模式: http://localhost:8000');
33
- this.client = new ChromaClient({
34
- path: 'http://localhost:8000',
35
- });
36
- // 测试连接
37
- await this.client.heartbeat();
38
- this.mode = 'http';
39
- console.log('✅ HTTP 模式连接成功');
40
- return true;
41
- }
42
- catch (httpError) {
43
- console.log('❌ HTTP 模式连接失败:', httpError.message);
44
- if (this.options.mode === 'http') {
45
- return false;
46
- }
47
- }
48
- }
49
- // 尝试本地文件存储模式
50
- if (!this.client && (this.options.mode === 'local' || this.options.mode === 'auto')) {
51
- try {
52
- console.log('🔧 尝试本地文件存储模式:', this.options.dbPath);
53
- // 确保目录存在
54
- if (!existsSync(this.options.dbPath)) {
55
- mkdirSync(this.options.dbPath, { recursive: true });
56
- }
57
- this.client = new ChromaClient({
58
- path: this.options.dbPath
59
- });
60
- // 初始化客户端
61
- await this.client.init();
62
- this.mode = 'local';
63
- console.log('✅ 本地文件存储模式初始化成功');
64
- return true;
65
- }
66
- catch (localError) {
67
- console.log('❌ 本地文件存储模式失败:', localError.message);
68
- return false;
69
- }
70
- }
71
- console.log('❌ 所有 ChromaDB 模式都失败');
72
- return false;
73
- }
74
- async getCollection() {
75
- if (!this.client) {
76
- return false;
77
- }
78
- try {
79
- this.collection = await this.client.getOrCreateCollection({
80
- name: this.options.collectionName,
81
- embeddingFunction: this.embeddingFunction,
82
- });
83
- console.log('✅ Collection 创建/获取成功');
84
- return true;
85
- }
86
- catch (collectionError) {
87
- console.log('❌ Collection 操作失败:', collectionError.message);
88
- return false;
89
- }
90
- }
91
- async initializeIfNeeded() {
92
- if (!this.client || !this.collection) {
93
- const clientOk = await this.initializeClient();
94
- if (!clientOk) {
95
- return false;
96
- }
97
- const collectionOk = await this.getCollection();
98
- if (!collectionOk) {
99
- return false;
100
- }
101
- }
102
- return true;
103
- }
104
- async buildIndex(referencesDir, hashFile) {
105
- try {
106
- if (!await this.initializeIfNeeded()) {
107
- throw new Error('ChromaDB 初始化失败');
108
- }
109
- // Get all markdown files
110
- const files = await glob('**/*.md', { cwd: referencesDir });
111
- if (files.length === 0) {
112
- console.log('ℹ️ 没有找到文档文件来建立索引');
113
- return;
114
- }
115
- // Calculate current hash
116
- const fileContents = files.map(file => {
117
- const content = readFileSync(join(referencesDir, file), 'utf-8');
118
- return `${file}:${content}`;
119
- });
120
- const h = createHash('sha256');
121
- h.update(fileContents.join('\n'));
122
- const currentHash = h.digest('hex');
123
- // Check if we need to rebuild
124
- if (existsSync(hashFile)) {
125
- const lastHash = readFileSync(hashFile, 'utf-8');
126
- if (lastHash === currentHash) {
127
- console.log('ℹ️ 索引是最新的');
128
- return;
129
- }
130
- }
131
- console.log(`🔄 正在索引 ${files.length} 个文档 (模式: ${this.mode})...`);
132
- // Clear existing data
133
- try {
134
- await this.collection.delete();
135
- }
136
- catch (deleteError) {
137
- console.log('⚠️ 清理现有数据时出错:', deleteError.message);
138
- }
139
- // Process and add documents
140
- const documents = [];
141
- const metadatas = [];
142
- const ids = [];
143
- for (const file of files) {
144
- const content = readFileSync(join(referencesDir, file), 'utf-8');
145
- const sections = this.splitIntoSections(content);
146
- for (let i = 0; i < sections.length; i++) {
147
- const section = sections[i];
148
- const docId = `${file.replace(/[^a-zA-Z0-9._-]/g, '_')}_${i}`;
149
- documents.push(section.content);
150
- metadatas.push({
151
- source: file,
152
- section: i,
153
- title: section.title || `Section ${i + 1}`,
154
- totalSections: sections.length,
155
- mode: this.mode
156
- });
157
- ids.push(docId);
158
- }
159
- }
160
- if (documents.length > 0) {
161
- await this.collection.add({
162
- ids,
163
- documents,
164
- metadatas
165
- });
166
- console.log(`✅ 成功索引 ${documents.length} 个文档片段`);
167
- }
168
- // Save hash
169
- writeFileSync(hashFile, currentHash);
170
- console.log('✅ 索引哈希已保存');
171
- }
172
- catch (error) {
173
- console.log('❌ 索引构建失败:', error.message);
174
- throw error;
175
- }
176
- }
177
- async search(query, topK = 5, where) {
178
- try {
179
- if (!await this.initializeIfNeeded()) {
180
- throw new Error('ChromaDB 不可用');
181
- }
182
- const results = await this.collection.query({
183
- queryTexts: [query],
184
- nResults: topK,
185
- where: where
186
- });
187
- return results.ids.map((id, index) => ({
188
- id,
189
- title: results.metadatas[index]?.title || `Document ${index + 1}`,
190
- content: results.documents[index],
191
- source: results.metadatas[index]?.source || 'unknown',
192
- score: results.distances[index],
193
- metadata: {
194
- ...results.metadatas[index],
195
- distance: results.distances[index],
196
- embeddingDimension: results.embeddings?.[0]?.length || 0,
197
- searchEngine: 'chroma',
198
- mode: this.mode
199
- }
200
- }));
201
- }
202
- catch (error) {
203
- console.log('❌ ChromaDB 搜索失败:', error.message);
204
- throw error;
205
- }
206
- }
207
- async searchByPriority(query, topK = 5) {
208
- return this.search(query, topK);
209
- }
210
- async getStats() {
211
- try {
212
- if (!await this.initializeIfNeeded()) {
213
- return { totalDocuments: 0 };
214
- }
215
- const count = await this.collection.count();
216
- return { totalDocuments: count };
217
- }
218
- catch (error) {
219
- console.log('❌ 获取统计信息失败:', error.message);
220
- return { totalDocuments: 0 };
221
- }
222
- }
223
- splitIntoSections(content) {
224
- const lines = content.split('\n');
225
- const sections = [];
226
- let currentSection = { title: '', content: [] };
227
- for (const line of lines) {
228
- const trimmedLine = line.trim();
229
- // Check if line is a header (starts with #)
230
- if (trimmedLine.startsWith('#')) {
231
- // Save previous section if it has content
232
- if (currentSection.content.length > 0) {
233
- sections.push({
234
- title: currentSection.title,
235
- content: currentSection.content.join('\n').trim()
236
- });
237
- }
238
- // Start new section
239
- const title = trimmedLine.replace(/^#+\s*/, '').trim();
240
- currentSection = { title, content: [] };
241
- if (title) {
242
- currentSection.content.push(line); // Include the header line
243
- }
244
- }
245
- else {
246
- currentSection.content.push(line);
247
- }
248
- }
249
- // Add the last section if it has content
250
- if (currentSection.content.length > 0) {
251
- sections.push({
252
- title: currentSection.title,
253
- content: currentSection.content.join('\n').trim()
254
- });
255
- }
256
- return sections;
257
- }
258
- }
259
- //# sourceMappingURL=chromaSearchImproved.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"chromaSearchImproved.js","sourceRoot":"","sources":["../../src/core/chromaSearchImproved.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAChC,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AAC5E,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAC3B,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AASxC,MAAM,OAAO,kBAAkB;IACrB,MAAM,GAAe,IAAI,CAAA;IACzB,UAAU,GAAe,IAAI,CAAA;IAC7B,OAAO,CAAqB;IAC5B,iBAAiB,GAAoC,IAAI,CAAA;IACzD,IAAI,GAAqB,MAAM,CAAA;IAEvC,YAAY,OAA4B;QACtC,IAAI,CAAC,OAAO,GAAG;YACb,IAAI,EAAE,MAAM;YACZ,GAAG,OAAO;SACX,CAAA;IACH,CAAC;IAEO,KAAK,CAAC,2BAA2B;QACvC,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC;YAC5B,MAAM,EAAE,wBAAwB,EAAE,GAAG,MAAM,MAAM,CAAC,4BAA4B,CAAC,CAAA;YAC/E,IAAI,CAAC,iBAAiB,GAAG,IAAI,wBAAwB,EAAE,CAAA;QACzD,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,gBAAgB;QAC5B,MAAM,IAAI,CAAC,2BAA2B,EAAE,CAAA;QACxC,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,CAAA;QAEjD,iBAAiB;QACjB,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,KAAK,MAAM,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YACjE,IAAI,CAAC;gBACH,OAAO,CAAC,GAAG,CAAC,sCAAsC,CAAC,CAAA;gBACnD,IAAI,CAAC,MAAM,GAAG,IAAI,YAAY,CAAC;oBAC7B,IAAI,EAAE,uBAAuB;iBAC9B,CAAC,CAAA;gBAEF,OAAO;gBACP,MAAM,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAA;gBAC7B,IAAI,CAAC,IAAI,GAAG,MAAM,CAAA;gBAClB,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAA;gBAC5B,OAAO,IAAI,CAAA;YAEb,CAAC;YAAC,OAAO,SAAS,EAAE,CAAC;gBACnB,OAAO,CAAC,GAAG,CAAC,gBAAgB,EAAE,SAAS,CAAC,OAAO,CAAC,CAAA;gBAEhD,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;oBACjC,OAAO,KAAK,CAAA;gBACd,CAAC;YACH,CAAC;QACH,CAAC;QAED,aAAa;QACb,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,KAAK,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,KAAK,MAAM,CAAC,EAAE,CAAC;YACpF,IAAI,CAAC;gBACH,OAAO,CAAC,GAAG,CAAC,gBAAgB,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;gBAElD,SAAS;gBACT,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;oBACrC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;gBACrD,CAAC;gBAED,IAAI,CAAC,MAAM,GAAG,IAAI,YAAY,CAAC;oBAC7B,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM;iBAC1B,CAAC,CAAA;gBAEF,SAAS;gBACT,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAA;gBACxB,IAAI,CAAC,IAAI,GAAG,OAAO,CAAA;gBACnB,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAA;gBAC9B,OAAO,IAAI,CAAA;YAEb,CAAC;YAAC,OAAO,UAAU,EAAE,CAAC;gBACpB,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE,UAAU,CAAC,OAAO,CAAC,CAAA;gBAChD,OAAO,KAAK,CAAA;YACd,CAAC;QACH,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAA;QAClC,OAAO,KAAK,CAAA;IACd,CAAC;IAEO,KAAK,CAAC,aAAa;QACzB,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACjB,OAAO,KAAK,CAAA;QACd,CAAC;QAED,IAAI,CAAC;YACH,IAAI,CAAC,UAAU,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,qBAAqB,CAAC;gBACxD,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,cAAc;gBACjC,iBAAiB,EAAE,IAAI,CAAC,iBAAiB;aAC1C,CAAC,CAAA;YACF,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAA;YACnC,OAAO,IAAI,CAAA;QACb,CAAC;QAAC,OAAO,eAAe,EAAE,CAAC;YACzB,OAAO,CAAC,GAAG,CAAC,oBAAoB,EAAE,eAAe,CAAC,OAAO,CAAC,CAAA;YAC1D,OAAO,KAAK,CAAA;QACd,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,kBAAkB;QAC9B,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;YACrC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,gBAAgB,EAAE,CAAA;YAC9C,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACd,OAAO,KAAK,CAAA;YACd,CAAC;YAED,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,aAAa,EAAE,CAAA;YAC/C,IAAI,CAAC,YAAY,EAAE,CAAC;gBAClB,OAAO,KAAK,CAAA;YACd,CAAC;QACH,CAAC;QAED,OAAO,IAAI,CAAA;IACb,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,aAAqB,EAAE,QAAgB;QACtD,IAAI,CAAC;YACH,IAAI,CAAC,MAAM,IAAI,CAAC,kBAAkB,EAAE,EAAE,CAAC;gBACrC,MAAM,IAAI,KAAK,CAAC,gBAAgB,CAAC,CAAA;YACnC,CAAC;YAED,yBAAyB;YACzB,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,SAAS,EAAE,EAAE,GAAG,EAAE,aAAa,EAAE,CAAC,CAAA;YAE3D,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACvB,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAA;gBAChC,OAAM;YACR,CAAC;YAED,yBAAyB;YACzB,MAAM,YAAY,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;gBACpC,MAAM,OAAO,GAAG,YAAY,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,EAAE,OAAO,CAAC,CAAA;gBAChE,OAAO,GAAG,IAAI,IAAI,OAAO,EAAE,CAAA;YAC7B,CAAC,CAAC,CAAA;YACF,MAAM,CAAC,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAA;YAC9B,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAA;YACjC,MAAM,WAAW,GAAG,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;YAEnC,8BAA8B;YAC9B,IAAI,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;gBACzB,MAAM,QAAQ,GAAG,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAA;gBAChD,IAAI,QAAQ,KAAK,WAAW,EAAE,CAAC;oBAC7B,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAA;oBACzB,OAAM;gBACR,CAAC;YACH,CAAC;YAED,OAAO,CAAC,GAAG,CAAC,WAAW,KAAK,CAAC,MAAM,aAAa,IAAI,CAAC,IAAI,MAAM,CAAC,CAAA;YAEhE,sBAAsB;YACtB,IAAI,CAAC;gBACH,MAAM,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAA;YAChC,CAAC;YAAC,OAAO,WAAW,EAAE,CAAC;gBACrB,OAAO,CAAC,GAAG,CAAC,gBAAgB,EAAE,WAAW,CAAC,OAAO,CAAC,CAAA;YACpD,CAAC;YAED,4BAA4B;YAC5B,MAAM,SAAS,GAAa,EAAE,CAAA;YAC9B,MAAM,SAAS,GAAU,EAAE,CAAA;YAC3B,MAAM,GAAG,GAAa,EAAE,CAAA;YAExB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBACzB,MAAM,OAAO,GAAG,YAAY,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,EAAE,OAAO,CAAC,CAAA;gBAChE,MAAM,QAAQ,GAAG,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAA;gBAEhD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;oBACzC,MAAM,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAA;oBAC3B,MAAM,KAAK,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,kBAAkB,EAAE,GAAG,CAAC,IAAI,CAAC,EAAE,CAAA;oBAE7D,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;oBAC/B,SAAS,CAAC,IAAI,CAAC;wBACb,MAAM,EAAE,IAAI;wBACZ,OAAO,EAAE,CAAC;wBACV,KAAK,EAAE,OAAO,CAAC,KAAK,IAAI,WAAW,CAAC,GAAG,CAAC,EAAE;wBAC1C,aAAa,EAAE,QAAQ,CAAC,MAAM;wBAC9B,IAAI,EAAE,IAAI,CAAC,IAAI;qBAChB,CAAC,CAAA;oBACF,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;gBACjB,CAAC;YACH,CAAC;YAED,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACzB,MAAM,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;oBACxB,GAAG;oBACH,SAAS;oBACT,SAAS;iBACV,CAAC,CAAA;gBACF,OAAO,CAAC,GAAG,CAAC,UAAU,SAAS,CAAC,MAAM,QAAQ,CAAC,CAAA;YACjD,CAAC;YAED,YAAY;YACZ,aAAa,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAA;YACpC,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAA;QAE1B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE,KAAK,CAAC,OAAO,CAAC,CAAA;YACvC,MAAM,KAAK,CAAA;QACb,CAAC;IACH,CAAC;IAED,KAAK,CAAC,MAAM,CACV,KAAa,EACb,OAAe,CAAC,EAChB,KAA2B;QAE3B,IAAI,CAAC;YACH,IAAI,CAAC,MAAM,IAAI,CAAC,kBAAkB,EAAE,EAAE,CAAC;gBACrC,MAAM,IAAI,KAAK,CAAC,cAAc,CAAC,CAAA;YACjC,CAAC;YAED,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;gBAC1C,UAAU,EAAE,CAAC,KAAK,CAAC;gBACnB,QAAQ,EAAE,IAAI;gBACd,KAAK,EAAE,KAAK;aACb,CAAC,CAAA;YAEF,OAAO,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAU,EAAE,KAAa,EAAE,EAAE,CAAC,CAAC;gBACrD,EAAE;gBACF,KAAK,EAAE,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,KAAK,IAAI,YAAY,KAAK,GAAG,CAAC,EAAE;gBACjE,OAAO,EAAE,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC;gBACjC,MAAM,EAAE,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,MAAM,IAAI,SAAS;gBACrD,KAAK,EAAE,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC;gBAC/B,QAAQ,EAAE;oBACR,GAAG,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC;oBAC3B,QAAQ,EAAE,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC;oBAClC,kBAAkB,EAAE,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,IAAI,CAAC;oBACxD,YAAY,EAAE,QAAQ;oBACtB,IAAI,EAAE,IAAI,CAAC,IAAI;iBAChB;aACF,CAAC,CAAC,CAAA;QAEL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,GAAG,CAAC,kBAAkB,EAAE,KAAK,CAAC,OAAO,CAAC,CAAA;YAC9C,MAAM,KAAK,CAAA;QACb,CAAC;IACH,CAAC;IAED,KAAK,CAAC,gBAAgB,CAAC,KAAa,EAAE,OAAe,CAAC;QACpD,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA;IACjC,CAAC;IAED,KAAK,CAAC,QAAQ;QACZ,IAAI,CAAC;YACH,IAAI,CAAC,MAAM,IAAI,CAAC,kBAAkB,EAAE,EAAE,CAAC;gBACrC,OAAO,EAAE,cAAc,EAAE,CAAC,EAAE,CAAA;YAC9B,CAAC;YAED,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAA;YAC3C,OAAO,EAAE,cAAc,EAAE,KAAK,EAAE,CAAA;QAClC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,GAAG,CAAC,aAAa,EAAE,KAAK,CAAC,OAAO,CAAC,CAAA;YACzC,OAAO,EAAE,cAAc,EAAE,CAAC,EAAE,CAAA;QAC9B,CAAC;IAEH,CAAC,AAFE;IAEK,iBAAiB,CAAC,OAAe;QACvC,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QACjC,MAAM,QAAQ,GAA8C,EAAE,CAAA;QAC9D,IAAI,cAAc,GAAyC,EAAE,KAAK,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,CAAA;QAErF,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,EAAE,CAAA;YAE/B,4CAA4C;YAC5C,IAAI,WAAW,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;gBAChC,0CAA0C;gBAC1C,IAAI,cAAc,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACtC,QAAQ,CAAC,IAAI,CAAC;wBACZ,KAAK,EAAE,cAAc,CAAC,KAAK;wBAC3B,OAAO,EAAE,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE;qBAClD,CAAC,CAAA;gBACJ,CAAC;gBAED,oBAAoB;gBACpB,MAAM,KAAK,GAAG,WAAW,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAA;gBACtD,cAAc,GAAG,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,EAAE,CAAA;gBACvC,IAAI,KAAK,EAAE,CAAC;oBACV,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA,CAAC,0BAA0B;gBAC9D,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;YACnC,CAAC;QACH,CAAC;QAED,yCAAyC;QACzC,IAAI,cAAc,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACtC,QAAQ,CAAC,IAAI,CAAC;gBACZ,KAAK,EAAE,cAAc,CAAC,KAAK;gBAC3B,OAAO,EAAE,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE;aAClD,CAAC,CAAA;QACJ,CAAC;QAED,OAAO,QAAQ,CAAA;IACjB,CAAC;CACF"}
@@ -1,25 +0,0 @@
1
- /**
2
- * Enhanced search engine with Fuse.js integration
3
- * Provides fuzzy matching, better scoring, and improved search experience
4
- */
5
- import type { SearchResult } from '../types/index.js';
6
- export interface FuseSearchOptions {
7
- referencesDir: string;
8
- collectionName: string;
9
- }
10
- export declare class FuseSearchEngine {
11
- private options;
12
- private documents;
13
- private fuse;
14
- constructor(options: FuseSearchOptions);
15
- buildIndex(referencesDir: string, hashFile: string): Promise<void>;
16
- private initializeFuse;
17
- search(query: string, topK?: number, where?: Record<string, any>): Promise<SearchResult[]>;
18
- searchByPriority(query: string, topK?: number): Promise<SearchResult[]>;
19
- getStats(): Promise<{
20
- totalDocuments: number;
21
- }>;
22
- private normalizeFuseScore;
23
- private splitIntoSections;
24
- }
25
- //# sourceMappingURL=fuseSearch.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"fuseSearch.d.ts","sourceRoot":"","sources":["../../src/core/fuseSearch.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAMH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAErD,MAAM,WAAW,iBAAiB;IAChC,aAAa,EAAE,MAAM,CAAA;IACrB,cAAc,EAAE,MAAM,CAAA;CACvB;AAED,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,OAAO,CAAmB;IAClC,OAAO,CAAC,SAAS,CAOV;IACP,OAAO,CAAC,IAAI,CAAyB;gBAEzB,OAAO,EAAE,iBAAiB;IAIhC,UAAU,CAAC,aAAa,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA+CxE,OAAO,CAAC,cAAc;IA+BhB,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;IAoEpB,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,GAAE,MAAU,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IAW1E,QAAQ,IAAI,OAAO,CAAC;QAAE,cAAc,EAAE,MAAM,CAAA;KAAE,CAAC;IAIrD,OAAO,CAAC,kBAAkB;IAM1B,OAAO,CAAC,iBAAiB;CA+C1B"}
@@ -1,198 +0,0 @@
1
- /**
2
- * Enhanced search engine with Fuse.js integration
3
- * Provides fuzzy matching, better scoring, and improved search experience
4
- */
5
- import Fuse from 'fuse.js';
6
- import { join } from 'node:path';
7
- import { readFileSync } from 'node:fs';
8
- import { glob } from 'glob';
9
- export class FuseSearchEngine {
10
- options;
11
- documents = [];
12
- fuse = null;
13
- constructor(options) {
14
- this.options = options;
15
- }
16
- async buildIndex(referencesDir, hashFile) {
17
- console.log('Building enhanced fuzzy search index with Fuse.js...');
18
- // Get all markdown files
19
- const files = await glob('**/*.md', { cwd: referencesDir });
20
- if (files.length === 0) {
21
- console.log('No documentation files found to index');
22
- return;
23
- }
24
- console.log(`Indexing ${files.length} documents with fuzzy search capabilities...`);
25
- // Load all documents
26
- this.documents = [];
27
- for (const file of files) {
28
- const content = readFileSync(join(referencesDir, file), 'utf-8');
29
- const sections = this.splitIntoSections(content);
30
- for (let i = 0; i < sections.length; i++) {
31
- const { title, content: sectionContent } = sections[i];
32
- if (!sectionContent.trim())
33
- continue;
34
- const docId = `${file.replace(/\//g, '_')}_${i}`;
35
- this.documents.push({
36
- id: docId,
37
- title,
38
- content: sectionContent,
39
- source: file.startsWith('user/') ? 'user' : 'context7',
40
- file_path: file,
41
- metadata: {
42
- section_index: i,
43
- total_sections: sections.length,
44
- file_name: file.split('/').pop() || file,
45
- priority: file.startsWith('user/') ? 10 : 1,
46
- },
47
- });
48
- }
49
- }
50
- // Initialize Fuse.js with optimized options
51
- this.initializeFuse();
52
- console.log(`✅ Enhanced search index built with ${this.documents.length} sections`);
53
- }
54
- initializeFuse() {
55
- const fuseOptions = {
56
- keys: [
57
- {
58
- name: 'title',
59
- weight: 3.0, // Title matches are most important
60
- },
61
- {
62
- name: 'content',
63
- weight: 1.0, // Content matches are important but less than title
64
- },
65
- {
66
- name: 'metadata.file_name',
67
- weight: 2.0, // File name matches are moderately important
68
- },
69
- ],
70
- threshold: 0.3, // Fuzzy matching threshold (0.0 = exact, 1.0 = match anything)
71
- distance: 100, // Maximum distance between matched characters
72
- ignoreLocation: false,
73
- includeScore: true,
74
- includeMatches: true,
75
- minMatchCharLength: 2,
76
- useExtendedSearch: true,
77
- findAllMatches: true,
78
- ignoreFieldNorm: false,
79
- fieldNormWeight: 0.7,
80
- };
81
- this.fuse = new Fuse(this.documents, fuseOptions);
82
- }
83
- async search(query, topK = 5, where) {
84
- if (!this.fuse) {
85
- console.warn('Search index not built. Call buildIndex() first.');
86
- return [];
87
- }
88
- // Filter documents by source if specified
89
- let searchDocs = this.documents;
90
- if (where?.source) {
91
- searchDocs = searchDocs.filter(doc => doc.source === where.source);
92
- }
93
- // If no documents match the filter, return empty
94
- if (searchDocs.length === 0) {
95
- return [];
96
- }
97
- // Create a temporary Fuse instance with filtered documents
98
- const fuseOptions = {
99
- keys: [
100
- { name: 'title', weight: 3.0 },
101
- { name: 'content', weight: 1.0 },
102
- { name: 'metadata.file_name', weight: 2.0 },
103
- ],
104
- threshold: 0.3,
105
- distance: 100,
106
- ignoreLocation: false,
107
- includeScore: true,
108
- includeMatches: true,
109
- minMatchCharLength: 2,
110
- useExtendedSearch: true,
111
- findAllMatches: true,
112
- ignoreFieldNorm: false,
113
- fieldNormWeight: 0.7,
114
- };
115
- const filteredFuse = new Fuse(searchDocs, fuseOptions);
116
- // Perform fuzzy search
117
- const fuseResults = filteredFuse.search(query, { limit: topK * 2 }); // Get more results to allow for filtering
118
- // Convert Fuse results to SearchResult format
119
- const results = fuseResults.map((result, index) => {
120
- const doc = result.item;
121
- const score = this.normalizeFuseScore(result.score || 0);
122
- return {
123
- id: doc.id,
124
- title: doc.title,
125
- content: doc.content,
126
- source: doc.source,
127
- file_path: doc.file_path,
128
- score,
129
- metadata: {
130
- ...doc.metadata,
131
- matches: result.matches,
132
- fuseScore: result.score,
133
- matchRank: index + 1,
134
- },
135
- };
136
- });
137
- // Sort by score (descending) and limit to topK
138
- return results
139
- .sort((a, b) => b.score - a.score)
140
- .slice(0, topK);
141
- }
142
- async searchByPriority(query, topK = 5) {
143
- // First try user content, then context7
144
- const userResults = await this.search(query, topK, { source: 'user' });
145
- const contextResults = await this.search(query, topK - userResults.length, { source: 'context7' });
146
- return [...userResults, ...contextResults].slice(0, topK);
147
- }
148
- async getStats() {
149
- return { totalDocuments: this.documents.length };
150
- }
151
- normalizeFuseScore(fuseScore) {
152
- // Fuse.js scores are 0 (perfect match) to 1 (poor match)
153
- // Convert to a more intuitive 1.0 (perfect) to 0.0 (poor) scale
154
- return Math.max(0, 1 - fuseScore);
155
- }
156
- splitIntoSections(content) {
157
- const sections = [];
158
- const lines = content.split('\n');
159
- let currentSection = { title: 'Introduction', content: '' };
160
- let sectionContent = [];
161
- const headingPattern = /^(#{1,6})\s+(.+)$/;
162
- for (let i = 0; i < lines.length; i++) {
163
- const line = lines[i];
164
- const match = headingPattern.exec(line);
165
- if (match) {
166
- // Save previous section if it has content
167
- if (sectionContent.length > 0) {
168
- currentSection.content = sectionContent.join('\n').trim();
169
- // Only add section if it meets minimum content threshold
170
- if (currentSection.content.length > 50) {
171
- sections.push({ ...currentSection });
172
- }
173
- sectionContent = [];
174
- }
175
- // Start new section
176
- currentSection = {
177
- title: match[2].trim(),
178
- content: '',
179
- };
180
- }
181
- else {
182
- // Add non-heading lines to current section
183
- if (line.trim() || sectionContent.length > 0) {
184
- sectionContent.push(line);
185
- }
186
- }
187
- }
188
- // Add the last section
189
- if (sectionContent.length > 0) {
190
- currentSection.content = sectionContent.join('\n').trim();
191
- if (currentSection.content.length > 50) {
192
- sections.push({ ...currentSection });
193
- }
194
- }
195
- return sections.length > 0 ? sections : [{ title: 'Introduction', content }];
196
- }
197
- }
198
- //# sourceMappingURL=fuseSearch.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"fuseSearch.js","sourceRoot":"","sources":["../../src/core/fuseSearch.ts"],"names":[],"mappings":"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"}
@@ -1,66 +0,0 @@
1
- import type { SearchResult } from '../types/index';
2
- export interface FuzzySearchOptions {
3
- /**
4
- * Threshold for fuzzy matching (0-1)
5
- * Lower values = more lenient matching
6
- */
7
- fuzzyThreshold?: number;
8
- /**
9
- * Whether to prioritize exact matches
10
- */
11
- prioritizeExact?: boolean;
12
- /**
13
- * Maximum number of results to return
14
- */
15
- maxResults?: number;
16
- }
17
- /**
18
- * Enhanced search result with additional metadata
19
- */
20
- export interface EnhancedSearchResult extends SearchResult {
21
- relativePath: string;
22
- preview?: string;
23
- fullContent?: string;
24
- matchRanges?: number[][];
25
- }
26
- export declare class FuzzySearchEngine {
27
- private options;
28
- private documents;
29
- constructor(options?: FuzzySearchOptions);
30
- /**
31
- * Enhanced fuzzy search function that returns both indices and detailed info
32
- */
33
- private fuzzySearchWithInfo;
34
- buildIndex(referencesDir: string, hashFile: string): Promise<void>;
35
- search(query: string, topK?: number, where?: Record<string, any>): Promise<SearchResult[]>;
36
- /**
37
- * Calculate fuzzy search score based on uFuzzy info
38
- */
39
- private calculateFuzzyScore;
40
- /**
41
- * Smart content selection based on score
42
- */
43
- private selectContent;
44
- /**
45
- * Extract preview based on match ranges
46
- */
47
- private extractRangePreview;
48
- searchByPriority(query: string, topK?: number): Promise<SearchResult[]>;
49
- /**
50
- * Get statistics about the search index
51
- */
52
- getStats(): {
53
- totalDocuments: number;
54
- userDocuments: number;
55
- context7Documents: number;
56
- };
57
- /**
58
- * Check if the search index is built
59
- */
60
- isBuilt(): boolean;
61
- /**
62
- * Clear the search index
63
- */
64
- clearIndex(): void;
65
- }
66
- //# sourceMappingURL=fuzzySearch.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"fuzzySearch.d.ts","sourceRoot":"","sources":["../../src/core/fuzzySearch.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAe,MAAM,gBAAgB,CAAA;AAK/D,MAAM,WAAW,kBAAkB;IACjC;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB;;OAEG;IACH,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB;;OAEG;IACH,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,oBAAqB,SAAQ,YAAY;IACxD,YAAY,EAAE,MAAM,CAAA;IACpB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,WAAW,CAAC,EAAE,MAAM,EAAE,EAAE,CAAA;CACzB;AAED,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,OAAO,CAAoB;IACnC,OAAO,CAAC,SAAS,CAOV;gBAEK,OAAO,GAAE,kBAAuB;IAS5C;;OAEG;IACH,OAAO,CAAC,mBAAmB;IA2BrB,UAAU,CAAC,aAAa,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAgDlE,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;IAoI1B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAe3B;;OAEG;IACH,OAAO,CAAC,aAAa;IAqBrB;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAuBrB,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,GAAE,MAAU,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IAkBhF;;OAEG;IACH,QAAQ;;;;;IAWR;;OAEG;IACH,OAAO,IAAI,OAAO;IAIlB;;OAEG;IACH,UAAU;CAGX"}