skill-creator 1.4.2 → 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 -16
  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 -75
  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 -44
  185. package/dist/utils/skillMdManager.d.ts.map +0 -1
  186. package/dist/utils/skillMdManager.js +0 -157
  187. package/dist/utils/skillMdManager.js.map +0 -1
@@ -1,533 +0,0 @@
1
- /**
2
- * Content management with Context7 integration
3
- */
4
- import { join } from 'node:path';
5
- import { existsSync, mkdirSync, readdirSync, writeFileSync, rmSync, statSync, readFileSync, } from 'node:fs';
6
- import { createHash } from 'node:crypto';
7
- import MarkdownIt from 'markdown-it';
8
- export class ContentManager {
9
- options;
10
- userDir;
11
- context7BaseDir;
12
- md;
13
- constructor(options) {
14
- this.options = options;
15
- this.userDir = join(options.referencesDir, 'user');
16
- this.context7BaseDir = join(options.referencesDir, 'context7');
17
- this.md = new MarkdownIt();
18
- }
19
- /**
20
- * Get the directory path for a specific context7 project
21
- */
22
- getContext7ProjectDir(projectId) {
23
- return join(this.context7BaseDir, projectId);
24
- }
25
- async updateFromContext7(libraryId, force = false) {
26
- const result = {
27
- updated: false,
28
- skipped: false,
29
- filesCreated: 0,
30
- message: '',
31
- };
32
- try {
33
- // Download content
34
- const content = await this.downloadContext7Doc(libraryId);
35
- // Get project-specific directory
36
- const projectDir = this.getContext7ProjectDir(libraryId);
37
- // Check if update needed
38
- if (!force && !this.needsUpdate(content, libraryId)) {
39
- result.skipped = true;
40
- result.message = 'Context7 documentation is up to date';
41
- return result;
42
- }
43
- // Clear existing context7 docs for this project
44
- if (existsSync(projectDir)) {
45
- const files = readdirSync(projectDir);
46
- for (const file of files) {
47
- if (file.endsWith('.md')) {
48
- rmSync(join(projectDir, file));
49
- }
50
- }
51
- }
52
- // Ensure directory exists
53
- mkdirSync(projectDir, { recursive: true });
54
- // Slice and save
55
- const savedFiles = await this.sliceDocument(content, projectDir);
56
- result.filesCreated = savedFiles.length;
57
- // Save hash for this project
58
- this.saveContentHash(content, libraryId);
59
- // Trigger reindex
60
- this.triggerReindex();
61
- result.updated = true;
62
- result.message = `Updated ${savedFiles.length} documentation slices for project ${libraryId}`;
63
- }
64
- catch (error) {
65
- result.message = `Failed to update Context7 docs: ${error}`;
66
- }
67
- return result;
68
- }
69
- async addUserContent(options) {
70
- const result = {
71
- added: false,
72
- updated: false,
73
- skipped: false,
74
- message: '',
75
- similarFound: 0,
76
- };
77
- try {
78
- // Search for similar content
79
- const similar = await this.findSimilarContent(options.content);
80
- if (similar.length > 0 && !options.force) {
81
- const bestMatch = similar[0];
82
- if (options.autoUpdate && bestMatch.source === 'user') {
83
- // Update user file
84
- const filePath = join(this.options.referencesDir, bestMatch.file_path);
85
- if (this.isContentEnhanced(bestMatch, options.content)) {
86
- writeFileSync(filePath, `# ${options.title}\n\n${options.content}`);
87
- result.updated = true;
88
- result.filePath = filePath;
89
- result.message = `Updated existing content: ${bestMatch.file_path}`;
90
- // Trigger index update
91
- this.triggerReindex();
92
- }
93
- else {
94
- result.skipped = true;
95
- result.message = 'Existing content is comprehensive enough';
96
- }
97
- }
98
- else {
99
- // Similar content found but not updating
100
- result.message = `Found ${similar.length} similar documents`;
101
- result.similarContent = similar.slice(0, 3).map((s) => ({
102
- title: s.title,
103
- score: s.score,
104
- source: s.source,
105
- preview: s.content.slice(0, 200) + '...',
106
- }));
107
- result.similarFound = similar.length;
108
- }
109
- }
110
- else if (!result.added && !result.updated && !result.skipped) {
111
- // Create new file only if no similar content was found
112
- mkdirSync(this.userDir, { recursive: true });
113
- // Check if file with same title already exists
114
- const safeTitle = options.title
115
- .toLowerCase()
116
- .replace(/[^\w\s-]/g, '')
117
- .replace(/[-\s]+/g, '_')
118
- .replace(/^_+|_+$/g, '')
119
- .slice(0, 50) || 'content';
120
- const expectedFilePath = join(this.userDir, `${safeTitle}.md`);
121
- if (existsSync(expectedFilePath) && !options.force && !options.forceAppend) {
122
- // File exists and no force flag - show error and file content
123
- const { readFileSync } = await import('node:fs');
124
- const existingContent = readFileSync(expectedFilePath, 'utf-8');
125
- result.message = `File already exists: ${safeTitle}.md. Use --force to overwrite or --force-append to append.`;
126
- result.existingFile = {
127
- path: expectedFilePath,
128
- content: existingContent,
129
- };
130
- }
131
- else {
132
- // Either file doesn't exist or force flag is set
133
- let filePath;
134
- let fileName;
135
- if (existsSync(expectedFilePath) && options.force) {
136
- // Force overwrite: directly replace the existing file
137
- filePath = expectedFilePath;
138
- fileName = safeTitle + '.md';
139
- writeFileSync(filePath, `# ${options.title}\n\n${options.content}`);
140
- result.message = `Overwrote existing content: ${fileName}`;
141
- }
142
- else if (existsSync(expectedFilePath) && options.forceAppend) {
143
- // Force append: add content to the end of existing file
144
- filePath = expectedFilePath;
145
- fileName = safeTitle + '.md';
146
- const { readFileSync } = await import('node:fs');
147
- const existingContent = readFileSync(filePath, 'utf-8');
148
- const newContent = `${existingContent}\n\n---\n\n# ${options.title}\n\n${options.content}`;
149
- writeFileSync(filePath, newContent);
150
- result.message = `Appended content to existing file: ${fileName}`;
151
- }
152
- else {
153
- // Create new file
154
- filePath = this.createUniqueFilePath(options.title, this.userDir);
155
- fileName = filePath.split('/').pop() || safeTitle + '.md';
156
- writeFileSync(filePath, `# ${options.title}\n\n${options.content}`);
157
- result.message = `Created new content: ${fileName}`;
158
- }
159
- result.added = true;
160
- result.filePath = filePath;
161
- // Trigger index update
162
- this.triggerReindex();
163
- }
164
- }
165
- }
166
- catch (error) {
167
- result.message = `Failed to add content: ${error}`;
168
- }
169
- result.similarFound = result.similarContent?.length || 0;
170
- return result;
171
- }
172
- getContentStats() {
173
- const stats = {
174
- userFiles: 0,
175
- context7Files: 0,
176
- totalFiles: 0,
177
- userDirExists: existsSync(this.userDir),
178
- context7DirExists: existsSync(this.context7BaseDir),
179
- };
180
- if (stats.userDirExists) {
181
- stats.userFiles = readdirSync(this.userDir).filter((f) => f.endsWith('.md')).length;
182
- }
183
- if (stats.context7DirExists) {
184
- // Count files in all context7 project subdirectories
185
- const projects = readdirSync(this.context7BaseDir, { withFileTypes: true })
186
- .filter((dirent) => dirent.isDirectory())
187
- .map((dirent) => dirent.name);
188
- for (const projectId of projects) {
189
- const projectDir = this.getContext7ProjectDir(projectId);
190
- if (existsSync(projectDir)) {
191
- stats.context7Files += readdirSync(projectDir).filter((f) => f.endsWith('.md')).length;
192
- }
193
- }
194
- }
195
- stats.totalFiles = stats.userFiles + stats.context7Files;
196
- return stats;
197
- }
198
- listContent(source) {
199
- const contentList = [];
200
- // List user content
201
- if (source === 'user' || !source) {
202
- if (existsSync(this.userDir)) {
203
- const files = readdirSync(this.userDir);
204
- for (const file of files) {
205
- if (!file.endsWith('.md'))
206
- continue;
207
- const filePath = join(this.userDir, file);
208
- const stat = statSync(filePath);
209
- let title = file.replace('.md', '');
210
- try {
211
- const content = readFileSync(filePath, 'utf-8');
212
- const firstLine = content.split('\n')[0];
213
- if (firstLine?.startsWith('# ')) {
214
- title = firstLine.slice(2);
215
- }
216
- }
217
- catch {
218
- // Use filename if can't read
219
- }
220
- contentList.push({
221
- title,
222
- filename: file,
223
- source: 'user',
224
- path: filePath,
225
- size: stat.size,
226
- modified: stat.mtime || new Date(),
227
- });
228
- }
229
- }
230
- }
231
- // List context7 content from all projects
232
- if (source === 'context7' || !source) {
233
- if (existsSync(this.context7BaseDir)) {
234
- const projects = readdirSync(this.context7BaseDir, { withFileTypes: true })
235
- .filter((dirent) => dirent.isDirectory())
236
- .map((dirent) => dirent.name);
237
- for (const projectId of projects) {
238
- const projectDir = this.getContext7ProjectDir(projectId);
239
- if (existsSync(projectDir)) {
240
- const files = readdirSync(projectDir);
241
- for (const file of files) {
242
- if (!file.endsWith('.md'))
243
- continue;
244
- const filePath = join(projectDir, file);
245
- const stat = statSync(filePath);
246
- let title = file.replace('.md', '');
247
- try {
248
- const content = readFileSync(filePath, 'utf-8');
249
- const firstLine = content.split('\n')[0];
250
- if (firstLine?.startsWith('# ')) {
251
- title = firstLine.slice(2);
252
- }
253
- }
254
- catch {
255
- // Use filename if can't read
256
- }
257
- contentList.push({
258
- title,
259
- filename: file,
260
- source: 'context7',
261
- path: filePath,
262
- size: stat.size,
263
- modified: stat.mtime || new Date(),
264
- });
265
- }
266
- }
267
- }
268
- }
269
- }
270
- return contentList.sort((a, b) => b.modified.getTime() - a.modified.getTime());
271
- }
272
- async downloadContext7Doc(libraryId) {
273
- const url = `https://context7.com${libraryId}/llms.txt?tokens=100000000&topic=*`;
274
- const response = await fetch(url);
275
- if (!response.ok) {
276
- throw new Error(`Failed to download: ${response.statusText}`);
277
- }
278
- return await response.text();
279
- }
280
- async sliceDocument(content, outputDir) {
281
- const sections = this.extractSections(content);
282
- const savedFiles = [];
283
- for (let i = 0; i < sections.length; i++) {
284
- const { title, content: sectionContent } = sections[i];
285
- if (!sectionContent.trim())
286
- continue;
287
- const filename = this.createUniqueFileName(title, i, outputDir);
288
- const filePath = join(outputDir, filename);
289
- writeFileSync(filePath, `# ${title}\n\n${sectionContent}`);
290
- savedFiles.push(filePath);
291
- }
292
- return savedFiles;
293
- }
294
- extractSections(content) {
295
- const sections = [];
296
- const lines = content.split('\n');
297
- let currentSection = { title: 'Introduction', content: '' };
298
- let sectionContent = [];
299
- const headingPattern = /^(#{1,6})\s+(.+)$/;
300
- for (let i = 0; i < lines.length; i++) {
301
- const line = lines[i];
302
- const match = headingPattern.exec(line);
303
- if (match) {
304
- // Save previous section if it has content
305
- if (sectionContent.length > 0) {
306
- currentSection.content = sectionContent.join('\n').trim();
307
- // Only add section if it meets minimum content threshold
308
- if (currentSection.content.length > 50) {
309
- sections.push({ ...currentSection });
310
- }
311
- sectionContent = [];
312
- }
313
- // Start new section
314
- currentSection = {
315
- title: match[2].trim(),
316
- content: '',
317
- };
318
- }
319
- else {
320
- // Add non-heading lines to current section
321
- if (line.trim() || sectionContent.length > 0) {
322
- sectionContent.push(line);
323
- }
324
- }
325
- }
326
- // Add the last section
327
- if (sectionContent.length > 0) {
328
- currentSection.content = sectionContent.join('\n').trim();
329
- if (currentSection.content.length > 50) {
330
- sections.push(currentSection);
331
- }
332
- }
333
- // Post-process sections to merge very short ones
334
- return this.mergeShortSections(sections);
335
- }
336
- mergeShortSections(sections) {
337
- const merged = [];
338
- for (let i = 0; i < sections.length; i++) {
339
- const section = sections[i];
340
- // If section is very short and not the last, consider merging with next
341
- if (section.content.length < 200 && i < sections.length - 1) {
342
- const nextSection = sections[i + 1];
343
- // Merge if next section is not a major section
344
- if (!this.isMajorSection(nextSection.title)) {
345
- merged.push({
346
- title: section.title,
347
- content: section.content + '\n\n' + nextSection.content,
348
- });
349
- i++; // Skip next section
350
- }
351
- else {
352
- merged.push(section);
353
- }
354
- }
355
- else {
356
- merged.push(section);
357
- }
358
- }
359
- return merged;
360
- }
361
- isMajorSection(title) {
362
- const majorKeywords = [
363
- 'introduction',
364
- 'getting started',
365
- 'installation',
366
- 'setup',
367
- 'api',
368
- 'reference',
369
- 'examples',
370
- 'tutorial',
371
- 'guide',
372
- 'overview',
373
- 'quick start',
374
- 'basics',
375
- 'advanced',
376
- ];
377
- const titleLower = title.toLowerCase();
378
- return majorKeywords.some((keyword) => titleLower.includes(keyword));
379
- }
380
- createUniqueFileName(title, index, dir) {
381
- // Clean up the title for use in filename
382
- const safeTitle = title
383
- .replace(/[^\w\s-]/g, '')
384
- .replace(/[-\s]+/g, '_')
385
- .replace(/^_+|_+$/g, '') // Remove leading/trailing underscores
386
- .slice(0, 50) || 'section';
387
- // Create hierarchical naming based on heading level if possible
388
- const headingLevel = this.extractHeadingLevel(title);
389
- const prefix = headingLevel > 1 ? `${'0'.repeat(Math.min(headingLevel - 1, 3))}${index}` : index.toString();
390
- // Use both index and title for better organization
391
- const baseName = `${prefix.padStart(4, '0')}_${safeTitle}`;
392
- let filename = `${baseName}.md`;
393
- let counter = 1;
394
- while (existsSync(join(dir, filename))) {
395
- filename = `${baseName}_${counter.toString().padStart(2, '0')}.md`;
396
- counter++;
397
- }
398
- return filename;
399
- }
400
- extractHeadingLevel(title) {
401
- // Try to extract heading level from title if it contains markdown-like indicators
402
- const match = title.match(/^(#{1,6})\s*(.+)$/);
403
- if (match) {
404
- return match[1].length;
405
- }
406
- // Look for other indicators in the title
407
- if (/^(Chapter|Section|Part)\s+\d+/i.test(title))
408
- return 1;
409
- if (/^\d+\.\d+/i.test(title))
410
- return 2;
411
- if (/^\d+\.\d+\.\d+/i.test(title))
412
- return 3;
413
- return 1; // Default to level 1
414
- }
415
- createUniqueFilePath(title, dir) {
416
- // Convert to lowercase and clean up for filename
417
- const safeTitle = title
418
- .toLowerCase()
419
- .replace(/[^\w\s-]/g, '')
420
- .replace(/[-\s]+/g, '_')
421
- .replace(/^_+|_+$/g, '') // Remove leading/trailing underscores
422
- .slice(0, 50) || 'content';
423
- let filename = `${safeTitle}.md`;
424
- let counter = 1;
425
- while (existsSync(join(dir, filename))) {
426
- filename = `${safeTitle}_${counter.toString().padStart(2, '0')}.md`;
427
- counter++;
428
- }
429
- return join(dir, filename);
430
- }
431
- async findSimilarContent(content, threshold = 0.85, maxResults = 10) {
432
- const results = await this.options.searchEngine.search(content, maxResults);
433
- return results.filter((r) => r.score >= threshold);
434
- }
435
- isContentEnhanced(existing, newContent) {
436
- const existingWords = existing.content.split(/\s+/).length;
437
- const newWords = newContent.split(/\s+/).length;
438
- return newWords > existingWords * 1.3;
439
- }
440
- getHashFilePath(projectId) {
441
- // Sanitize project ID for use in filename (replace slashes with underscores)
442
- const safeProjectId = projectId.replace(/\//g, '_');
443
- return join(this.options.referencesDir, '..', `.context7_hash_${safeProjectId}`);
444
- }
445
- saveContentHash(content, projectId) {
446
- const hash = createHash('md5').update(content).digest('hex');
447
- const hashFile = this.getHashFilePath(projectId);
448
- writeFileSync(hashFile, hash);
449
- }
450
- needsUpdate(content, projectId) {
451
- const hashFile = this.getHashFilePath(projectId);
452
- if (!existsSync(hashFile)) {
453
- return true;
454
- }
455
- const currentHash = createHash('md5').update(content).digest('hex');
456
- const storedHash = readFileSync(hashFile, 'utf-8');
457
- return currentHash !== storedHash;
458
- }
459
- async triggerReindex() {
460
- const hashFile = join(this.options.referencesDir, '..', '.last_index_hash');
461
- if (existsSync(hashFile)) {
462
- rmSync(hashFile);
463
- }
464
- }
465
- /**
466
- * List all context7 projects
467
- */
468
- listContext7Projects() {
469
- const projects = [];
470
- if (!existsSync(this.context7BaseDir)) {
471
- return projects;
472
- }
473
- const projectDirs = readdirSync(this.context7BaseDir, { withFileTypes: true })
474
- .filter((dirent) => dirent.isDirectory())
475
- .map((dirent) => dirent.name);
476
- for (const projectId of projectDirs) {
477
- const projectDir = this.getContext7ProjectDir(projectId);
478
- if (existsSync(projectDir)) {
479
- const files = readdirSync(projectDir).filter((f) => f.endsWith('.md'));
480
- projects.push({
481
- projectId,
482
- filesCount: files.length,
483
- directory: projectDir,
484
- });
485
- }
486
- }
487
- return projects;
488
- }
489
- /**
490
- * Get files for a specific context7 project
491
- */
492
- getContext7ProjectFiles(projectId) {
493
- const projectDir = this.getContext7ProjectDir(projectId);
494
- if (!existsSync(projectDir)) {
495
- return [];
496
- }
497
- return readdirSync(projectDir).filter((f) => f.endsWith('.md'));
498
- }
499
- /**
500
- * Remove a context7 project
501
- */
502
- removeContext7Project(projectId) {
503
- const projectDir = this.getContext7ProjectDir(projectId);
504
- if (!existsSync(projectDir)) {
505
- return {
506
- success: false,
507
- message: `Context7 project ${projectId} does not exist`,
508
- };
509
- }
510
- try {
511
- // Remove project directory
512
- rmSync(projectDir, { recursive: true, force: true });
513
- // Remove project hash file
514
- const hashFile = this.getHashFilePath(projectId);
515
- if (existsSync(hashFile)) {
516
- rmSync(hashFile);
517
- }
518
- // Trigger reindex
519
- this.triggerReindex();
520
- return {
521
- success: true,
522
- message: `Context7 project ${projectId} removed successfully`,
523
- };
524
- }
525
- catch (error) {
526
- return {
527
- success: false,
528
- message: `Failed to remove Context7 project ${projectId}: ${error}`,
529
- };
530
- }
531
- }
532
- }
533
- //# sourceMappingURL=contentManager.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"contentManager.js","sourceRoot":"","sources":["../../src/core/contentManager.ts"],"names":[],"mappings":"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"}
@@ -1,33 +0,0 @@
1
- /**
2
- * Fuzzy Search Engine Adapter
3
- * Implements the SearchEngine interface using uFuzzy library
4
- * Clean, focused implementation - formatting handled by separate formatters
5
- */
6
- import type { SearchEngine, SearchResult, SearchOptions } from './searchAdapter';
7
- /**
8
- * uFuzzy-based Search Engine Adapter
9
- * Clean implementation focused only on search functionality
10
- */
11
- export declare class FuzzySearchAdapter implements SearchEngine {
12
- private documents;
13
- private fuzzy;
14
- private lastSearchInfo;
15
- constructor();
16
- buildIndex(referencesDir: string): Promise<void>;
17
- search(query: string, options?: SearchOptions): Promise<SearchResult[]>;
18
- /**
19
- * Basic fuzzy search using uFuzzy
20
- */
21
- private fuzzySearch;
22
- /**
23
- * Enhanced fuzzy search that returns both indices and detailed info
24
- */
25
- private fuzzySearchWithInfo;
26
- isBuilt(): boolean;
27
- getStats(): Promise<{
28
- totalDocuments: number;
29
- }>;
30
- searchByPriority(query: string, topK?: number): Promise<SearchResult[]>;
31
- clearIndex(): void;
32
- }
33
- //# sourceMappingURL=fuzzySearchAdapter.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"fuzzySearchAdapter.d.ts","sourceRoot":"","sources":["../../src/core/fuzzySearchAdapter.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAKhF;;;GAGG;AACH,qBAAa,kBAAmB,YAAW,YAAY;IACrD,OAAO,CAAC,SAAS,CAOV;IAEP,OAAO,CAAC,KAAK,CAAQ;IACrB,OAAO,CAAC,cAAc,CAA8B;;IAS9C,UAAU,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA2ChD,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,GAAE,aAAkB,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IA6FjF;;OAEG;IACH,OAAO,CAAC,WAAW;IAKnB;;OAEG;IACH,OAAO,CAAC,mBAAmB;IA8B3B,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;IAKhF,UAAU,IAAI,IAAI;CAInB"}