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.
- package/README.md +53 -0
- package/dist/cli.d.ts +8 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +378 -0
- package/dist/cli.js.map +1 -0
- package/dist/core/chromaSearch.d.ts +24 -0
- package/dist/core/chromaSearch.d.ts.map +1 -0
- package/dist/core/chromaSearch.js +192 -0
- package/dist/core/chromaSearch.js.map +1 -0
- package/dist/core/contentManager.d.ts +40 -0
- package/dist/core/contentManager.d.ts.map +1 -0
- package/dist/core/contentManager.js +355 -0
- package/dist/core/contentManager.js.map +1 -0
- package/dist/core/runScript.d.ts +5 -0
- package/dist/core/runScript.d.ts.map +1 -0
- package/dist/core/runScript.js +220 -0
- package/dist/core/runScript.js.map +1 -0
- package/dist/core/searchEngine.d.ts +25 -0
- package/dist/core/searchEngine.d.ts.map +1 -0
- package/dist/core/searchEngine.js +198 -0
- package/dist/core/searchEngine.js.map +1 -0
- package/dist/core/simpleSearch.d.ts +21 -0
- package/dist/core/simpleSearch.d.ts.map +1 -0
- package/dist/core/simpleSearch.js +113 -0
- package/dist/core/simpleSearch.js.map +1 -0
- package/dist/core/skillCreator.d.ts +16 -0
- package/dist/core/skillCreator.d.ts.map +1 -0
- package/dist/core/skillCreator.js +291 -0
- package/dist/core/skillCreator.js.map +1 -0
- package/dist/core/templateManager.d.ts +28 -0
- package/dist/core/templateManager.d.ts.map +1 -0
- package/dist/core/templateManager.js +612 -0
- package/dist/core/templateManager.js.map +1 -0
- package/dist/core/unifiedSearch.d.ts +23 -0
- package/dist/core/unifiedSearch.d.ts.map +1 -0
- package/dist/core/unifiedSearch.js +46 -0
- package/dist/core/unifiedSearch.js.map +1 -0
- package/dist/index.d.ts +10 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +9 -0
- package/dist/index.js.map +1 -0
- package/dist/types/index.d.ts +86 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +5 -0
- package/dist/types/index.js.map +1 -0
- package/dist/utils/config.d.ts +47 -0
- package/dist/utils/config.d.ts.map +1 -0
- package/dist/utils/config.js +69 -0
- package/dist/utils/config.js.map +1 -0
- package/dist/utils/package.d.ts +57 -0
- package/dist/utils/package.d.ts.map +1 -0
- package/dist/utils/package.js +170 -0
- package/dist/utils/package.js.map +1 -0
- package/package.json +57 -0
- 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 @@
|
|
|
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"}
|