skill-creator 0.0.0 → 1.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 (145) hide show
  1. package/README.md +148 -19
  2. package/dist/cli.d.ts.map +1 -1
  3. package/dist/cli.js +265 -260
  4. package/dist/cli.js.map +1 -1
  5. package/dist/commands/addContent.d.ts +5 -0
  6. package/dist/commands/addContent.d.ts.map +1 -0
  7. package/dist/commands/addContent.js +74 -0
  8. package/dist/commands/addContent.js.map +1 -0
  9. package/dist/commands/buildIndex.d.ts +5 -0
  10. package/dist/commands/buildIndex.d.ts.map +1 -0
  11. package/dist/commands/buildIndex.js +17 -0
  12. package/dist/commands/buildIndex.js.map +1 -0
  13. package/dist/commands/downloadContext7.d.ts +5 -0
  14. package/dist/commands/downloadContext7.d.ts.map +1 -0
  15. package/dist/commands/downloadContext7.js +62 -0
  16. package/dist/commands/downloadContext7.js.map +1 -0
  17. package/dist/commands/init.d.ts +5 -0
  18. package/dist/commands/init.d.ts.map +1 -0
  19. package/dist/commands/init.js +89 -0
  20. package/dist/commands/init.js.map +1 -0
  21. package/dist/commands/initCc.d.ts +5 -0
  22. package/dist/commands/initCc.d.ts.map +1 -0
  23. package/dist/commands/initCc.js +26 -0
  24. package/dist/commands/initCc.js.map +1 -0
  25. package/dist/commands/listContent.d.ts +5 -0
  26. package/dist/commands/listContent.d.ts.map +1 -0
  27. package/dist/commands/listContent.js +35 -0
  28. package/dist/commands/listContent.js.map +1 -0
  29. package/dist/commands/searchContent.d.ts +5 -0
  30. package/dist/commands/searchContent.d.ts.map +1 -0
  31. package/dist/commands/searchContent.js +98 -0
  32. package/dist/commands/searchContent.js.map +1 -0
  33. package/dist/commands/shared.d.ts +23 -0
  34. package/dist/commands/shared.d.ts.map +1 -0
  35. package/dist/commands/shared.js +92 -0
  36. package/dist/commands/shared.js.map +1 -0
  37. package/dist/commands/updateContext7.d.ts +5 -0
  38. package/dist/commands/updateContext7.d.ts.map +1 -0
  39. package/dist/commands/updateContext7.js +28 -0
  40. package/dist/commands/updateContext7.js.map +1 -0
  41. package/dist/core/autoSearchAdapter.d.ts +42 -0
  42. package/dist/core/autoSearchAdapter.d.ts.map +1 -0
  43. package/dist/core/autoSearchAdapter.js +116 -0
  44. package/dist/core/autoSearchAdapter.js.map +1 -0
  45. package/dist/core/chromaLocalSearch.d.ts +26 -0
  46. package/dist/core/chromaLocalSearch.d.ts.map +1 -0
  47. package/dist/core/chromaLocalSearch.js +212 -0
  48. package/dist/core/chromaLocalSearch.js.map +1 -0
  49. package/dist/core/chromaLocalSimple.d.ts +24 -0
  50. package/dist/core/chromaLocalSimple.d.ts.map +1 -0
  51. package/dist/core/chromaLocalSimple.js +216 -0
  52. package/dist/core/chromaLocalSimple.js.map +1 -0
  53. package/dist/core/chromaSearchAdapter.d.ts +86 -0
  54. package/dist/core/chromaSearchAdapter.d.ts.map +1 -0
  55. package/dist/core/chromaSearchAdapter.js +477 -0
  56. package/dist/core/chromaSearchAdapter.js.map +1 -0
  57. package/dist/core/chromaSearchImproved.d.ts +29 -0
  58. package/dist/core/chromaSearchImproved.d.ts.map +1 -0
  59. package/dist/core/chromaSearchImproved.js +259 -0
  60. package/dist/core/chromaSearchImproved.js.map +1 -0
  61. package/dist/core/chromaServerManager.d.ts +64 -0
  62. package/dist/core/chromaServerManager.d.ts.map +1 -0
  63. package/dist/core/chromaServerManager.js +186 -0
  64. package/dist/core/chromaServerManager.js.map +1 -0
  65. package/dist/core/contentManager.d.ts +1 -0
  66. package/dist/core/contentManager.d.ts.map +1 -1
  67. package/dist/core/contentManager.js +75 -21
  68. package/dist/core/contentManager.js.map +1 -1
  69. package/dist/core/fuseSearch.d.ts +25 -0
  70. package/dist/core/fuseSearch.d.ts.map +1 -0
  71. package/dist/core/fuseSearch.js +198 -0
  72. package/dist/core/fuseSearch.js.map +1 -0
  73. package/dist/core/fuzzySearch.d.ts +66 -0
  74. package/dist/core/fuzzySearch.d.ts.map +1 -0
  75. package/dist/core/fuzzySearch.js +271 -0
  76. package/dist/core/fuzzySearch.js.map +1 -0
  77. package/dist/core/fuzzySearchAdapter.d.ts +33 -0
  78. package/dist/core/fuzzySearchAdapter.d.ts.map +1 -0
  79. package/dist/core/fuzzySearchAdapter.js +185 -0
  80. package/dist/core/fuzzySearchAdapter.js.map +1 -0
  81. package/dist/core/portUtils.d.ts +51 -0
  82. package/dist/core/portUtils.d.ts.map +1 -0
  83. package/dist/core/portUtils.js +120 -0
  84. package/dist/core/portUtils.js.map +1 -0
  85. package/dist/core/runScript.d.ts +1 -1
  86. package/dist/core/runScript.d.ts.map +1 -1
  87. package/dist/core/runScript.js +27 -210
  88. package/dist/core/runScript.js.map +1 -1
  89. package/dist/core/searchAdapter.d.ts +48 -0
  90. package/dist/core/searchAdapter.d.ts.map +1 -0
  91. package/dist/core/searchAdapter.js +6 -0
  92. package/dist/core/searchAdapter.js.map +1 -0
  93. package/dist/core/searchEngineFactory.d.ts +30 -0
  94. package/dist/core/searchEngineFactory.d.ts.map +1 -0
  95. package/dist/core/searchEngineFactory.js +41 -0
  96. package/dist/core/searchEngineFactory.js.map +1 -0
  97. package/dist/core/simpleLocalSearch.d.ts +50 -0
  98. package/dist/core/simpleLocalSearch.d.ts.map +1 -0
  99. package/dist/core/simpleLocalSearch.js +406 -0
  100. package/dist/core/simpleLocalSearch.js.map +1 -0
  101. package/dist/core/skillCreator.d.ts +0 -2
  102. package/dist/core/skillCreator.d.ts.map +1 -1
  103. package/dist/core/skillCreator.js +20 -92
  104. package/dist/core/skillCreator.js.map +1 -1
  105. package/dist/core/unifiedSearch.d.ts +57 -11
  106. package/dist/core/unifiedSearch.d.ts.map +1 -1
  107. package/dist/core/unifiedSearch.js +88 -29
  108. package/dist/core/unifiedSearch.js.map +1 -1
  109. package/dist/index.d.ts +4 -1
  110. package/dist/index.d.ts.map +1 -1
  111. package/dist/index.js +3 -1
  112. package/dist/index.js.map +1 -1
  113. package/dist/search_format/enhancedFormatter.d.ts +109 -0
  114. package/dist/search_format/enhancedFormatter.d.ts.map +1 -0
  115. package/dist/search_format/enhancedFormatter.js +262 -0
  116. package/dist/search_format/enhancedFormatter.js.map +1 -0
  117. package/dist/search_format/index.d.ts +10 -0
  118. package/dist/search_format/index.d.ts.map +1 -0
  119. package/dist/search_format/index.js +22 -0
  120. package/dist/search_format/index.js.map +1 -0
  121. package/dist/search_format/listFormatter.d.ts +16 -0
  122. package/dist/search_format/listFormatter.d.ts.map +1 -0
  123. package/dist/search_format/listFormatter.js +51 -0
  124. package/dist/search_format/listFormatter.js.map +1 -0
  125. package/dist/search_format/types.d.ts +69 -0
  126. package/dist/search_format/types.d.ts.map +1 -0
  127. package/dist/search_format/types.js +5 -0
  128. package/dist/search_format/types.js.map +1 -0
  129. package/dist/test/testFuzzy.d.ts +3 -0
  130. package/dist/test/testFuzzy.d.ts.map +1 -0
  131. package/dist/test/testFuzzy.js +72 -0
  132. package/dist/test/testFuzzy.js.map +1 -0
  133. package/dist/test-fuzzy.d.ts +6 -0
  134. package/dist/test-fuzzy.d.ts.map +1 -0
  135. package/dist/test-fuzzy.js +65 -0
  136. package/dist/test-fuzzy.js.map +1 -0
  137. package/dist/types/index.d.ts +5 -0
  138. package/dist/types/index.d.ts.map +1 -1
  139. package/dist/utils/package.d.ts +17 -0
  140. package/dist/utils/package.d.ts.map +1 -1
  141. package/dist/utils/package.js +51 -14
  142. package/dist/utils/package.js.map +1 -1
  143. package/package.json +9 -8
  144. package/templates/skill-creator.md +65 -153
  145. package/templates/skill-creator.zh-CN.md +93 -0
@@ -0,0 +1,216 @@
1
+ /**
2
+ * 简化的 ChromaDB 本地搜索引擎
3
+ * 根据 Context7 文档实现最简单的用法
4
+ */
5
+ import { ChromaClient } from 'chromadb';
6
+ import { readFile, writeFile } from 'node:fs/promises';
7
+ import { createHash } from 'node:crypto';
8
+ /**
9
+ * 简单的嵌入函数实现
10
+ */
11
+ class SimpleEmbeddingFunction {
12
+ async generate(texts) {
13
+ return texts.map(text => {
14
+ // 基于文本内容生成简单的嵌入向量
15
+ const hash = createHash('sha256').update(text).digest('hex');
16
+ const vector = [];
17
+ for (let i = 0; i < hash.length; i += 2) {
18
+ vector.push(parseInt(hash.substr(i, 2), 16) / 255);
19
+ }
20
+ // 确保向量长度为1536(标准OpenAI嵌入维度)
21
+ while (vector.length < 1536) {
22
+ vector.push(0);
23
+ }
24
+ return vector.slice(0, 1536);
25
+ });
26
+ }
27
+ }
28
+ export class ChromaLocalSimpleEngine {
29
+ client = null;
30
+ collection = null;
31
+ options;
32
+ embeddingFunction;
33
+ constructor(options) {
34
+ this.options = options;
35
+ this.embeddingFunction = new SimpleEmbeddingFunction();
36
+ }
37
+ async initialize() {
38
+ if (this.client)
39
+ return true;
40
+ try {
41
+ // 根据文档使用最简单的初始化方式
42
+ this.client = new ChromaClient();
43
+ // 获取或创建集合
44
+ try {
45
+ this.collection = await this.client.getCollection({
46
+ name: this.options.collectionName,
47
+ embeddingFunction: this.embeddingFunction,
48
+ });
49
+ console.log(`✅ 获取现有集合: ${this.options.collectionName}`);
50
+ }
51
+ catch (error) {
52
+ // 集合不存在,创建新的
53
+ this.collection = await this.client.createCollection({
54
+ name: this.options.collectionName,
55
+ embeddingFunction: this.embeddingFunction,
56
+ });
57
+ console.log(`✅ 创建新集合: ${this.options.collectionName}`);
58
+ }
59
+ return true;
60
+ }
61
+ catch (error) {
62
+ console.log('❌ 初始化 ChromaDB 失败:', error instanceof Error ? error.message : String(error));
63
+ return false;
64
+ }
65
+ }
66
+ async buildIndex(referencesDir, hashFile) {
67
+ const initialized = await this.initialize();
68
+ if (!initialized) {
69
+ throw new Error('无法初始化 ChromaDB');
70
+ }
71
+ try {
72
+ // 计算文件哈希
73
+ const currentHash = await this.calculateDirectoryHash(referencesDir);
74
+ // 检查是否需要重建索引
75
+ let needsRebuild = true;
76
+ try {
77
+ const savedHash = await readFile(hashFile, 'utf8');
78
+ if (savedHash === currentHash) {
79
+ console.log('📦 文件未变化,跳过重建索引');
80
+ needsRebuild = false;
81
+ }
82
+ }
83
+ catch (error) {
84
+ // 哈希文件不存在,需要重建
85
+ }
86
+ if (!needsRebuild)
87
+ return;
88
+ console.log('🔧 构建 ChromaDB 索引...');
89
+ // 清空现有集合
90
+ try {
91
+ if (this.collection) {
92
+ await this.collection.delete();
93
+ }
94
+ }
95
+ catch (error) {
96
+ // 集合为空,忽略错误
97
+ }
98
+ // 创建示例文档
99
+ const documents = [
100
+ {
101
+ id: 'doc1',
102
+ content: 'TypeScript 是 JavaScript 的超集,添加了静态类型支持。接口定义了对象的形状。',
103
+ metadata: {
104
+ title: 'TypeScript 基础',
105
+ source: 'context7',
106
+ filePath: 'typescript-basics.md'
107
+ }
108
+ },
109
+ {
110
+ id: 'doc2',
111
+ content: 'React 是一个用于构建用户界面的 JavaScript 库,组件是 React 的核心概念。',
112
+ metadata: {
113
+ title: 'React 介绍',
114
+ source: 'context7',
115
+ filePath: 'react-intro.md'
116
+ }
117
+ },
118
+ {
119
+ id: 'doc3',
120
+ content: 'Node.js 允许在服务器端运行 JavaScript 代码,模块系统是 Node.js 的重要特性。',
121
+ metadata: {
122
+ title: 'Node.js 服务器端开发',
123
+ source: 'context7',
124
+ filePath: 'nodejs-server.md'
125
+ }
126
+ }
127
+ ];
128
+ if (documents.length === 0) {
129
+ console.log('⚠️ 没有找到文档');
130
+ return;
131
+ }
132
+ // 添加文档到集合
133
+ if (this.collection) {
134
+ await this.collection.add({
135
+ ids: documents.map(doc => doc.id),
136
+ documents: documents.map(doc => doc.content),
137
+ metadatas: documents.map(doc => doc.metadata),
138
+ });
139
+ }
140
+ // 保存哈希值
141
+ await writeFile(hashFile, currentHash);
142
+ console.log(`✅ 构建完成,共处理 ${documents.length} 个文档`);
143
+ }
144
+ catch (error) {
145
+ console.log('❌ 构建索引失败:', error instanceof Error ? error.message : String(error));
146
+ throw error;
147
+ }
148
+ }
149
+ async search(query, topK = 5, where) {
150
+ const initialized = await this.initialize();
151
+ if (!initialized || !this.collection) {
152
+ throw new Error('无法初始化 ChromaDB');
153
+ }
154
+ try {
155
+ // 构建查询条件
156
+ const queryOptions = {
157
+ queryTexts: [query],
158
+ nResults: topK,
159
+ };
160
+ if (where) {
161
+ queryOptions.where = where;
162
+ }
163
+ const results = await this.collection.query(queryOptions);
164
+ // 转换结果格式
165
+ const searchResults = [];
166
+ if (results.ids[0] && results.documents[0] && results.metadatas[0]) {
167
+ for (let i = 0; i < results.ids[0].length; i++) {
168
+ const metadata = results.metadatas[0][i];
169
+ searchResults.push({
170
+ id: results.ids[0][i],
171
+ source: 'context7',
172
+ file_path: metadata.filePath || metadata.file_path || 'unknown',
173
+ title: metadata.title || '未知文档',
174
+ content: results.documents[0][i] || '',
175
+ score: results.distances?.[0]?.[i] ? 1 - results.distances[0][i] : 1,
176
+ metadata: {
177
+ ...metadata,
178
+ searchEngine: 'chroma-local-simple',
179
+ embeddingDimension: 1536,
180
+ similarity: results.distances?.[0]?.[i] || 0,
181
+ indexedAt: new Date().toISOString(),
182
+ },
183
+ });
184
+ }
185
+ }
186
+ return searchResults;
187
+ }
188
+ catch (error) {
189
+ console.log('❌ 搜索失败:', error instanceof Error ? error.message : String(error));
190
+ throw error;
191
+ }
192
+ }
193
+ async searchByPriority(query, topK = 5) {
194
+ return this.search(query, topK);
195
+ }
196
+ async getStats() {
197
+ const initialized = await this.initialize();
198
+ if (!initialized || !this.collection) {
199
+ return { totalDocuments: 0 };
200
+ }
201
+ try {
202
+ const count = await this.collection.count();
203
+ return { totalDocuments: count };
204
+ }
205
+ catch (error) {
206
+ console.log('❌ 获取统计信息失败:', error instanceof Error ? error.message : String(error));
207
+ return { totalDocuments: 0 };
208
+ }
209
+ }
210
+ async calculateDirectoryHash(dirPath) {
211
+ const hash = createHash('md5');
212
+ hash.update(dirPath + Date.now());
213
+ return hash.digest('hex');
214
+ }
215
+ }
216
+ //# sourceMappingURL=chromaLocalSimple.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chromaLocalSimple.js","sourceRoot":"","sources":["../../src/core/chromaLocalSimple.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,86 @@
1
+ /**
2
+ * ChromaDB Search Adapter
3
+ * Implements on-demand ChromaDB search with automatic fallback to fuzzy search
4
+ */
5
+ import { ChromaClient } from 'chromadb';
6
+ import type { SearchEngine, SearchResult, SearchOptions } from './searchAdapter.js';
7
+ export interface ChromaSearchOptions {
8
+ /** 技能目录路径 */
9
+ skillDir: string;
10
+ /** ChromaDB 集合名称 */
11
+ collectionName: string;
12
+ /** 启动超时时间(毫秒) */
13
+ startupTimeout?: number;
14
+ /** 是否启用自动回退 */
15
+ enableFallback?: boolean;
16
+ }
17
+ export interface ChromaPreparedResult {
18
+ /** ChromaDB 客户端 */
19
+ client: ChromaClient;
20
+ /** 服务器信息 */
21
+ serverInfo: {
22
+ port: number;
23
+ dataPath: string;
24
+ };
25
+ /** 是否需要自动关闭服务器 */
26
+ shouldAutoShutdown: boolean;
27
+ }
28
+ /**
29
+ * ChromaDB Search Adapter
30
+ * 支持按需启动、自动回退和优雅关闭
31
+ */
32
+ export declare class ChromaSearchAdapter implements SearchEngine {
33
+ private fuzzyAdapter;
34
+ private serverManager;
35
+ private options;
36
+ private isIndexBuilt;
37
+ private embeddingFunction;
38
+ constructor(options: ChromaSearchOptions);
39
+ /**
40
+ * 统一准备ChromaDB环境
41
+ * 封装服务器启动、客户端创建和配置的通用逻辑
42
+ */
43
+ private prepareChromadb;
44
+ /**
45
+ * 安全关闭ChromaDB服务器
46
+ */
47
+ private safeShutdownServer;
48
+ search(query: string, options?: SearchOptions): Promise<SearchResult[]>;
49
+ /**
50
+ * 计算当前文件的hash映射 {filename: hash}
51
+ */
52
+ private calculateFileHashes;
53
+ /**
54
+ * 加载之前的文件hash缓存
55
+ */
56
+ private loadFileHashCache;
57
+ /**
58
+ * 保存文件hash缓存
59
+ */
60
+ private saveFileHashCache;
61
+ /**
62
+ * 分析文件变化
63
+ */
64
+ private analyzeFileChanges;
65
+ /**
66
+ * 获取或创建集合
67
+ */
68
+ private getOrCreateCollection;
69
+ /**
70
+ * 处理文件变化
71
+ */
72
+ private processFileChanges;
73
+ buildIndex(referencesDir: string): Promise<void>;
74
+ clearIndex(): Promise<void>;
75
+ isBuilt(): boolean;
76
+ getStats(): Promise<{
77
+ totalDocuments: number;
78
+ }>;
79
+ /**
80
+ * 获取运行中的服务器状态
81
+ */
82
+ getServerStatus(): {
83
+ isRunning: boolean;
84
+ };
85
+ }
86
+ //# sourceMappingURL=chromaSearchAdapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chromaSearchAdapter.d.ts","sourceRoot":"","sources":["../../src/core/chromaSearchAdapter.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AAEvC,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAInF,MAAM,WAAW,mBAAmB;IAClC,aAAa;IACb,QAAQ,EAAE,MAAM,CAAA;IAChB,oBAAoB;IACpB,cAAc,EAAE,MAAM,CAAA;IACtB,iBAAiB;IACjB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,eAAe;IACf,cAAc,CAAC,EAAE,OAAO,CAAA;CACzB;AAED,MAAM,WAAW,oBAAoB;IACnC,mBAAmB;IACnB,MAAM,EAAE,YAAY,CAAA;IACpB,YAAY;IACZ,UAAU,EAAE;QACV,IAAI,EAAE,MAAM,CAAA;QACZ,QAAQ,EAAE,MAAM,CAAA;KACjB,CAAA;IACD,kBAAkB;IAClB,kBAAkB,EAAE,OAAO,CAAA;CAC5B;AAED;;;GAGG;AACH,qBAAa,mBAAoB,YAAW,YAAY;IACtD,OAAO,CAAC,YAAY,CAAoB;IACxC,OAAO,CAAC,aAAa,CAAqB;IAC1C,OAAO,CAAC,OAAO,CAAqB;IACpC,OAAO,CAAC,YAAY,CAAQ;IAC5B,OAAO,CAAC,iBAAiB,CAA0B;gBAEvC,OAAO,EAAE,mBAAmB;IAOxC;;;OAGG;YACW,eAAe;IAsD7B;;OAEG;YACW,kBAAkB;IAmB1B,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,GAAE,aAAkB,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IAmHjF;;OAEG;YACW,mBAAmB;IAsBjC;;OAEG;YACW,iBAAiB;IA2B/B;;OAEG;YACW,iBAAiB;IAe/B;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAgC1B;;OAEG;YACW,qBAAqB;IAiBnC;;OAEG;YACW,kBAAkB;IAmF1B,UAAU,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAqDhD,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IA0BjC,OAAO,IAAI,OAAO;IAIZ,QAAQ,IAAI,OAAO,CAAC;QAAE,cAAc,EAAE,MAAM,CAAA;KAAE,CAAC;IA0BrD;;OAEG;IACH,eAAe,IAAI;QACjB,SAAS,EAAE,OAAO,CAAA;KACnB;CAOF"}