skill-creator 0.0.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 (55) hide show
  1. package/README.md +53 -0
  2. package/dist/cli.d.ts +8 -0
  3. package/dist/cli.d.ts.map +1 -0
  4. package/dist/cli.js +378 -0
  5. package/dist/cli.js.map +1 -0
  6. package/dist/core/chromaSearch.d.ts +24 -0
  7. package/dist/core/chromaSearch.d.ts.map +1 -0
  8. package/dist/core/chromaSearch.js +192 -0
  9. package/dist/core/chromaSearch.js.map +1 -0
  10. package/dist/core/contentManager.d.ts +40 -0
  11. package/dist/core/contentManager.d.ts.map +1 -0
  12. package/dist/core/contentManager.js +355 -0
  13. package/dist/core/contentManager.js.map +1 -0
  14. package/dist/core/runScript.d.ts +5 -0
  15. package/dist/core/runScript.d.ts.map +1 -0
  16. package/dist/core/runScript.js +220 -0
  17. package/dist/core/runScript.js.map +1 -0
  18. package/dist/core/searchEngine.d.ts +25 -0
  19. package/dist/core/searchEngine.d.ts.map +1 -0
  20. package/dist/core/searchEngine.js +198 -0
  21. package/dist/core/searchEngine.js.map +1 -0
  22. package/dist/core/simpleSearch.d.ts +21 -0
  23. package/dist/core/simpleSearch.d.ts.map +1 -0
  24. package/dist/core/simpleSearch.js +113 -0
  25. package/dist/core/simpleSearch.js.map +1 -0
  26. package/dist/core/skillCreator.d.ts +16 -0
  27. package/dist/core/skillCreator.d.ts.map +1 -0
  28. package/dist/core/skillCreator.js +291 -0
  29. package/dist/core/skillCreator.js.map +1 -0
  30. package/dist/core/templateManager.d.ts +28 -0
  31. package/dist/core/templateManager.d.ts.map +1 -0
  32. package/dist/core/templateManager.js +612 -0
  33. package/dist/core/templateManager.js.map +1 -0
  34. package/dist/core/unifiedSearch.d.ts +23 -0
  35. package/dist/core/unifiedSearch.d.ts.map +1 -0
  36. package/dist/core/unifiedSearch.js +46 -0
  37. package/dist/core/unifiedSearch.js.map +1 -0
  38. package/dist/index.d.ts +10 -0
  39. package/dist/index.d.ts.map +1 -0
  40. package/dist/index.js +9 -0
  41. package/dist/index.js.map +1 -0
  42. package/dist/types/index.d.ts +86 -0
  43. package/dist/types/index.d.ts.map +1 -0
  44. package/dist/types/index.js +5 -0
  45. package/dist/types/index.js.map +1 -0
  46. package/dist/utils/config.d.ts +47 -0
  47. package/dist/utils/config.d.ts.map +1 -0
  48. package/dist/utils/config.js +69 -0
  49. package/dist/utils/config.js.map +1 -0
  50. package/dist/utils/package.d.ts +57 -0
  51. package/dist/utils/package.d.ts.map +1 -0
  52. package/dist/utils/package.js +170 -0
  53. package/dist/utils/package.js.map +1 -0
  54. package/package.json +57 -0
  55. package/templates/skill-creator.md +182 -0
@@ -0,0 +1,192 @@
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 = null;
10
+ options;
11
+ embeddingFunction = null;
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, { source: 'context7' });
143
+ return [...userResults, ...contextResults].slice(0, topK);
144
+ }
145
+ async getStats() {
146
+ if (!await this.initializeIfNeeded()) {
147
+ return { totalDocuments: 0 };
148
+ }
149
+ try {
150
+ const collection = await this.db.getCollection({
151
+ name: this.options.collectionName,
152
+ embeddingFunction: this.embeddingFunction,
153
+ });
154
+ const count = await collection.count();
155
+ return { totalDocuments: count };
156
+ }
157
+ catch {
158
+ return { totalDocuments: 0 };
159
+ }
160
+ }
161
+ async initializeIfNeeded() {
162
+ if (!this.db) {
163
+ await this.initialize();
164
+ }
165
+ return !!this.db;
166
+ }
167
+ splitIntoSections(content) {
168
+ const sections = [];
169
+ const lines = content.split('\n');
170
+ let currentSection = { title: 'Introduction', content: '' };
171
+ for (const line of lines) {
172
+ const headingMatch = line.match(/^(#{1,6})\s+(.+)$/);
173
+ if (headingMatch) {
174
+ if (currentSection.content.trim()) {
175
+ sections.push({ ...currentSection });
176
+ }
177
+ currentSection = {
178
+ title: headingMatch[2],
179
+ content: '',
180
+ };
181
+ }
182
+ else {
183
+ currentSection.content += line + '\n';
184
+ }
185
+ }
186
+ if (currentSection.content.trim()) {
187
+ sections.push(currentSection);
188
+ }
189
+ return sections.filter(s => s.content.trim().length > 50);
190
+ }
191
+ }
192
+ //# sourceMappingURL=chromaSearch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chromaSearch.js","sourceRoot":"","sources":["../../src/core/chromaSearch.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,40 @@
1
+ /**
2
+ * Content management with Context7 integration
3
+ */
4
+ import type { ContentStats, ContentItem, UpdateContext7Result, AddContentResult } from '../types/index.js';
5
+ export interface ContentManagerOptions {
6
+ searchEngine: {
7
+ search(query: string, topK?: number, where?: any): Promise<any[]>;
8
+ };
9
+ referencesDir: string;
10
+ }
11
+ export declare class ContentManager {
12
+ private options;
13
+ private userDir;
14
+ private context7Dir;
15
+ private md;
16
+ constructor(options: ContentManagerOptions);
17
+ updateFromContext7(libraryId: string, force?: boolean): Promise<UpdateContext7Result>;
18
+ addUserContent(options: {
19
+ title: string;
20
+ content: string;
21
+ force?: boolean;
22
+ autoUpdate?: boolean;
23
+ }): Promise<AddContentResult>;
24
+ getContentStats(): ContentStats;
25
+ listContent(source?: 'user' | 'context7'): ContentItem[];
26
+ private downloadContext7Doc;
27
+ private sliceDocument;
28
+ private extractSections;
29
+ private mergeShortSections;
30
+ private isMajorSection;
31
+ private createUniqueFileName;
32
+ private extractHeadingLevel;
33
+ private createUniqueFilePath;
34
+ private findSimilarContent;
35
+ private isContentEnhanced;
36
+ private saveContentHash;
37
+ private needsUpdate;
38
+ private triggerReindex;
39
+ }
40
+ //# sourceMappingURL=contentManager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contentManager.d.ts","sourceRoot":"","sources":["../../src/core/contentManager.ts"],"names":[],"mappings":"AAAA;;GAEG;AAMH,OAAO,KAAK,EACV,YAAY,EACZ,WAAW,EACX,oBAAoB,EACpB,gBAAgB,EACjB,MAAM,mBAAmB,CAAA;AAE1B,MAAM,WAAW,qBAAqB;IACpC,YAAY,EAAE;QACZ,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,CAAA;KAClE,CAAA;IACD,aAAa,EAAE,MAAM,CAAA;CACtB;AAED,qBAAa,cAAc;IACzB,OAAO,CAAC,OAAO,CAAuB;IACtC,OAAO,CAAC,OAAO,CAAQ;IACvB,OAAO,CAAC,WAAW,CAAQ;IAC3B,OAAO,CAAC,EAAE,CAAY;gBAEV,OAAO,EAAE,qBAAqB;IAOpC,kBAAkB,CACtB,SAAS,EAAE,MAAM,EACjB,KAAK,GAAE,OAAe,GACrB,OAAO,CAAC,oBAAoB,CAAC;IAmD1B,cAAc,CAAC,OAAO,EAAE;QAC5B,KAAK,EAAE,MAAM,CAAA;QACb,OAAO,EAAE,MAAM,CAAA;QACf,KAAK,CAAC,EAAE,OAAO,CAAA;QACf,UAAU,CAAC,EAAE,OAAO,CAAA;KACrB,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAqE7B,eAAe,IAAI,YAAY;IAyB/B,WAAW,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,UAAU,GAAG,WAAW,EAAE;YA0C1C,mBAAmB;YAWnB,aAAa;IAkB3B,OAAO,CAAC,eAAe;IAkDvB,OAAO,CAAC,kBAAkB;IA4B1B,OAAO,CAAC,cAAc;IAWtB,OAAO,CAAC,oBAAoB;IAyB5B,OAAO,CAAC,mBAAmB;IAe3B,OAAO,CAAC,oBAAoB;YAqBd,kBAAkB;IAShC,OAAO,CAAC,iBAAiB;IAMzB,OAAO,CAAC,eAAe;IAMvB,OAAO,CAAC,WAAW;YAaL,cAAc;CAM7B"}
@@ -0,0 +1,355 @@
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
+ context7Dir;
12
+ md;
13
+ constructor(options) {
14
+ this.options = options;
15
+ this.userDir = join(options.referencesDir, 'user');
16
+ this.context7Dir = join(options.referencesDir, 'context7');
17
+ this.md = new MarkdownIt();
18
+ }
19
+ async updateFromContext7(libraryId, force = false) {
20
+ const result = {
21
+ updated: false,
22
+ skipped: false,
23
+ filesCreated: 0,
24
+ message: '',
25
+ };
26
+ try {
27
+ // Download content
28
+ const content = await this.downloadContext7Doc(libraryId);
29
+ // Check if update needed
30
+ if (!force && !this.needsUpdate(content)) {
31
+ result.skipped = true;
32
+ result.message = 'Context7 documentation is up to date';
33
+ return result;
34
+ }
35
+ // Clear existing context7 docs
36
+ if (existsSync(this.context7Dir)) {
37
+ const files = readdirSync(this.context7Dir);
38
+ for (const file of files) {
39
+ if (file.endsWith('.md')) {
40
+ rmSync(join(this.context7Dir, file));
41
+ }
42
+ }
43
+ }
44
+ // Ensure directory exists
45
+ mkdirSync(this.context7Dir, { recursive: true });
46
+ // Slice and save
47
+ const savedFiles = await this.sliceDocument(content, this.context7Dir);
48
+ result.filesCreated = savedFiles.length;
49
+ // Save hash
50
+ this.saveContentHash(content);
51
+ // Trigger reindex
52
+ this.triggerReindex();
53
+ result.updated = true;
54
+ result.message = `Updated ${savedFiles.length} documentation slices`;
55
+ }
56
+ catch (error) {
57
+ result.message = `Failed to update Context7 docs: ${error}`;
58
+ }
59
+ return result;
60
+ }
61
+ async addUserContent(options) {
62
+ const result = {
63
+ added: false,
64
+ updated: false,
65
+ skipped: false,
66
+ message: '',
67
+ similarFound: 0,
68
+ };
69
+ try {
70
+ // Search for similar content
71
+ const similar = await this.findSimilarContent(options.content);
72
+ if (similar.length > 0 && !options.force) {
73
+ const bestMatch = similar[0];
74
+ if (options.autoUpdate && bestMatch.source === 'user') {
75
+ // Update user file
76
+ const filePath = join(this.options.referencesDir, bestMatch.file_path);
77
+ if (this.isContentEnhanced(bestMatch, options.content)) {
78
+ writeFileSync(filePath, `# ${options.title}\n\n${options.content}`);
79
+ result.updated = true;
80
+ result.filePath = filePath;
81
+ result.message = `Updated existing content: ${bestMatch.file_path}`;
82
+ // Trigger index update
83
+ this.triggerReindex();
84
+ }
85
+ else {
86
+ result.skipped = true;
87
+ result.message = 'Existing content is comprehensive enough';
88
+ }
89
+ }
90
+ else {
91
+ // Similar content found but not updating
92
+ result.message = `Found ${similar.length} similar documents`;
93
+ result.similarContent = similar.slice(0, 3).map(s => ({
94
+ title: s.title,
95
+ score: s.score,
96
+ source: s.source,
97
+ preview: s.content.slice(0, 200) + '...',
98
+ }));
99
+ result.similarFound = similar.length;
100
+ }
101
+ }
102
+ else if (!result.added && !result.updated && !result.skipped) {
103
+ // Create new file only if no similar content was found
104
+ mkdirSync(this.userDir, { recursive: true });
105
+ const filePath = this.createUniqueFilePath(options.title, this.userDir);
106
+ writeFileSync(filePath, `# ${options.title}\n\n${options.content}`);
107
+ result.added = true;
108
+ result.filePath = filePath;
109
+ result.message = `Created new content: ${filePath.split('/').pop()}`;
110
+ // Trigger index update
111
+ this.triggerReindex();
112
+ }
113
+ }
114
+ catch (error) {
115
+ result.message = `Failed to add content: ${error}`;
116
+ }
117
+ result.similarFound = result.similarContent?.length || 0;
118
+ return result;
119
+ }
120
+ getContentStats() {
121
+ const stats = {
122
+ userFiles: 0,
123
+ context7Files: 0,
124
+ totalFiles: 0,
125
+ userDirExists: existsSync(this.userDir),
126
+ context7DirExists: existsSync(this.context7Dir),
127
+ };
128
+ if (stats.userDirExists) {
129
+ stats.userFiles = readdirSync(this.userDir).filter(f => f.endsWith('.md')).length;
130
+ }
131
+ if (stats.context7DirExists) {
132
+ stats.context7Files = readdirSync(this.context7Dir).filter(f => f.endsWith('.md')).length;
133
+ }
134
+ stats.totalFiles = stats.userFiles + stats.context7Files;
135
+ return stats;
136
+ }
137
+ listContent(source) {
138
+ const contentList = [];
139
+ const dirsToSearch = [];
140
+ if (source === 'user' || !source)
141
+ dirsToSearch.push(['user', this.userDir]);
142
+ if (source === 'context7' || !source)
143
+ dirsToSearch.push(['context7', this.context7Dir]);
144
+ for (const [sourceName, dirPath] of dirsToSearch) {
145
+ if (existsSync(dirPath)) {
146
+ const files = readdirSync(dirPath);
147
+ for (const file of files) {
148
+ if (!file.endsWith('.md'))
149
+ continue;
150
+ const filePath = join(dirPath, file);
151
+ const stat = statSync(filePath);
152
+ let title = file.replace('.md', '');
153
+ try {
154
+ const content = readFileSync(filePath, 'utf-8');
155
+ const firstLine = content.split('\n')[0];
156
+ if (firstLine?.startsWith('# ')) {
157
+ title = firstLine.slice(2);
158
+ }
159
+ }
160
+ catch {
161
+ // Use filename if can't read
162
+ }
163
+ contentList.push({
164
+ title,
165
+ filename: file,
166
+ source: sourceName,
167
+ path: filePath,
168
+ size: stat.size,
169
+ modified: stat.mtime || new Date(),
170
+ });
171
+ }
172
+ }
173
+ }
174
+ return contentList.sort((a, b) => b.modified.getTime() - a.modified.getTime());
175
+ }
176
+ async downloadContext7Doc(libraryId) {
177
+ const url = `https://context7.com${libraryId}/llms.txt?token=100000000`;
178
+ const response = await fetch(url);
179
+ if (!response.ok) {
180
+ throw new Error(`Failed to download: ${response.statusText}`);
181
+ }
182
+ return await response.text();
183
+ }
184
+ async sliceDocument(content, outputDir) {
185
+ const sections = this.extractSections(content);
186
+ const savedFiles = [];
187
+ for (let i = 0; i < sections.length; i++) {
188
+ const { title, content: sectionContent } = sections[i];
189
+ if (!sectionContent.trim())
190
+ continue;
191
+ const filename = this.createUniqueFileName(title, i, outputDir);
192
+ const filePath = join(outputDir, filename);
193
+ writeFileSync(filePath, `# ${title}\n\n${sectionContent}`);
194
+ savedFiles.push(filePath);
195
+ }
196
+ return savedFiles;
197
+ }
198
+ extractSections(content) {
199
+ const sections = [];
200
+ const lines = content.split('\n');
201
+ let currentSection = { title: 'Introduction', content: '' };
202
+ let sectionContent = [];
203
+ const headingPattern = /^(#{1,6})\s+(.+)$/;
204
+ for (let i = 0; i < lines.length; i++) {
205
+ const line = lines[i];
206
+ const match = headingPattern.exec(line);
207
+ if (match) {
208
+ // Save previous section if it has content
209
+ if (sectionContent.length > 0) {
210
+ currentSection.content = sectionContent.join('\n').trim();
211
+ // Only add section if it meets minimum content threshold
212
+ if (currentSection.content.length > 50) {
213
+ sections.push({ ...currentSection });
214
+ }
215
+ sectionContent = [];
216
+ }
217
+ // Start new section
218
+ currentSection = {
219
+ title: match[2].trim(),
220
+ content: '',
221
+ };
222
+ }
223
+ else {
224
+ // Add non-heading lines to current section
225
+ if (line.trim() || sectionContent.length > 0) {
226
+ sectionContent.push(line);
227
+ }
228
+ }
229
+ }
230
+ // Add the last section
231
+ if (sectionContent.length > 0) {
232
+ currentSection.content = sectionContent.join('\n').trim();
233
+ if (currentSection.content.length > 50) {
234
+ sections.push(currentSection);
235
+ }
236
+ }
237
+ // Post-process sections to merge very short ones
238
+ return this.mergeShortSections(sections);
239
+ }
240
+ mergeShortSections(sections) {
241
+ const merged = [];
242
+ for (let i = 0; i < sections.length; i++) {
243
+ const section = sections[i];
244
+ // If section is very short and not the last, consider merging with next
245
+ if (section.content.length < 200 && i < sections.length - 1) {
246
+ const nextSection = sections[i + 1];
247
+ // Merge if next section is not a major section
248
+ if (!this.isMajorSection(nextSection.title)) {
249
+ merged.push({
250
+ title: section.title,
251
+ content: section.content + '\n\n' + nextSection.content,
252
+ });
253
+ i++; // Skip next section
254
+ }
255
+ else {
256
+ merged.push(section);
257
+ }
258
+ }
259
+ else {
260
+ merged.push(section);
261
+ }
262
+ }
263
+ return merged;
264
+ }
265
+ isMajorSection(title) {
266
+ const majorKeywords = [
267
+ 'introduction', 'getting started', 'installation', 'setup',
268
+ 'api', 'reference', 'examples', 'tutorial', 'guide',
269
+ 'overview', 'quick start', 'basics', 'advanced'
270
+ ];
271
+ const titleLower = title.toLowerCase();
272
+ return majorKeywords.some(keyword => titleLower.includes(keyword));
273
+ }
274
+ createUniqueFileName(title, index, dir) {
275
+ // Clean up the title for use in filename
276
+ const safeTitle = title
277
+ .replace(/[^\w\s-]/g, '')
278
+ .replace(/[-\s]+/g, '_')
279
+ .replace(/^_+|_+$/g, '') // Remove leading/trailing underscores
280
+ .slice(0, 50) || 'section';
281
+ // Create hierarchical naming based on heading level if possible
282
+ const headingLevel = this.extractHeadingLevel(title);
283
+ const prefix = headingLevel > 1 ? `${'0'.repeat(Math.min(headingLevel - 1, 3))}${index}` : index.toString();
284
+ // Use both index and title for better organization
285
+ const baseName = `${prefix.padStart(4, '0')}_${safeTitle}`;
286
+ let filename = `${baseName}.md`;
287
+ let counter = 1;
288
+ while (existsSync(join(dir, filename))) {
289
+ filename = `${baseName}_${counter.toString().padStart(2, '0')}.md`;
290
+ counter++;
291
+ }
292
+ return filename;
293
+ }
294
+ extractHeadingLevel(title) {
295
+ // Try to extract heading level from title if it contains markdown-like indicators
296
+ const match = title.match(/^(#{1,6})\s*(.+)$/);
297
+ if (match) {
298
+ return match[1].length;
299
+ }
300
+ // Look for other indicators in the title
301
+ if (/^(Chapter|Section|Part)\s+\d+/i.test(title))
302
+ return 1;
303
+ if (/^\d+\.\d+/i.test(title))
304
+ return 2;
305
+ if (/^\d+\.\d+\.\d+/i.test(title))
306
+ return 3;
307
+ return 1; // Default to level 1
308
+ }
309
+ createUniqueFilePath(title, dir) {
310
+ const now = new Date();
311
+ const timestamp = `${now.getFullYear()}${(now.getMonth() + 1).toString().padStart(2, '0')}${now.getDate().toString().padStart(2, '0')}_${now.getHours().toString().padStart(2, '0')}${now.getMinutes().toString().padStart(2, '0')}${now.getSeconds().toString().padStart(2, '0')}`;
312
+ const safeTitle = title
313
+ .replace(/[^\w\s-]/g, '')
314
+ .replace(/[-\s]+/g, '_')
315
+ .slice(0, 50) || 'content';
316
+ const baseName = `${safeTitle}.${timestamp}`;
317
+ let filename = `${baseName}.md`;
318
+ let counter = 1;
319
+ while (existsSync(join(dir, filename))) {
320
+ filename = `${baseName}_${counter.toString().padStart(2, '0')}.md`;
321
+ counter++;
322
+ }
323
+ return join(dir, filename);
324
+ }
325
+ async findSimilarContent(content, threshold = 0.85, maxResults = 10) {
326
+ const results = await this.options.searchEngine.search(content, maxResults);
327
+ return results.filter((r) => r.score >= threshold);
328
+ }
329
+ isContentEnhanced(existing, newContent) {
330
+ const existingWords = existing.content.split(/\s+/).length;
331
+ const newWords = newContent.split(/\s+/).length;
332
+ return newWords > existingWords * 1.3;
333
+ }
334
+ saveContentHash(content) {
335
+ const hash = createHash('md5').update(content).digest('hex');
336
+ const hashFile = join(this.options.referencesDir, '..', '.context7_hash');
337
+ writeFileSync(hashFile, hash);
338
+ }
339
+ needsUpdate(content) {
340
+ const hashFile = join(this.options.referencesDir, '..', '.context7_hash');
341
+ if (!existsSync(hashFile)) {
342
+ return true;
343
+ }
344
+ const currentHash = createHash('md5').update(content).digest('hex');
345
+ const storedHash = readFileSync(hashFile, 'utf-8');
346
+ return currentHash !== storedHash;
347
+ }
348
+ async triggerReindex() {
349
+ const hashFile = join(this.options.referencesDir, '..', '.last_index_hash');
350
+ if (existsSync(hashFile)) {
351
+ rmSync(hashFile);
352
+ }
353
+ }
354
+ }
355
+ //# sourceMappingURL=contentManager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contentManager.js","sourceRoot":"","sources":["../../src/core/contentManager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Execute skill scripts
3
+ */
4
+ export declare function runScript(script: string, args: string[]): Promise<void>;
5
+ //# sourceMappingURL=runScript.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runScript.d.ts","sourceRoot":"","sources":["../../src/core/runScript.ts"],"names":[],"mappings":"AAAA;;GAEG;AAMH,wBAAsB,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA+B7E"}