@cicctencent/agent-core 1.0.17 → 1.0.20

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 (71) hide show
  1. package/dist/cjs/agent/compaction.d.ts +26 -0
  2. package/dist/cjs/agent/compaction.d.ts.map +1 -0
  3. package/dist/cjs/agent/compaction.js +95 -0
  4. package/dist/cjs/agent/compaction.js.map +1 -0
  5. package/dist/cjs/agent/engine.d.ts +8 -9
  6. package/dist/cjs/agent/engine.d.ts.map +1 -1
  7. package/dist/cjs/agent/engine.js +37 -75
  8. package/dist/cjs/agent/engine.js.map +1 -1
  9. package/dist/cjs/agent/history-manager.d.ts.map +1 -1
  10. package/dist/cjs/agent/history-manager.js +1 -4
  11. package/dist/cjs/agent/history-manager.js.map +1 -1
  12. package/dist/cjs/agent/types.d.ts +2 -0
  13. package/dist/cjs/agent/types.d.ts.map +1 -1
  14. package/dist/cjs/agent/types.js.map +1 -1
  15. package/dist/cjs/index.d.ts +3 -1
  16. package/dist/cjs/index.d.ts.map +1 -1
  17. package/dist/cjs/index.js +9 -4
  18. package/dist/cjs/index.js.map +1 -1
  19. package/dist/cjs/skill/frontmatter.d.ts +18 -0
  20. package/dist/cjs/skill/frontmatter.d.ts.map +1 -0
  21. package/dist/cjs/skill/frontmatter.js +332 -0
  22. package/dist/cjs/skill/frontmatter.js.map +1 -0
  23. package/dist/cjs/skill/manager.d.ts +59 -6
  24. package/dist/cjs/skill/manager.d.ts.map +1 -1
  25. package/dist/cjs/skill/manager.js +391 -83
  26. package/dist/cjs/skill/manager.js.map +1 -1
  27. package/dist/cjs/skill/types.d.ts +30 -0
  28. package/dist/cjs/skill/types.d.ts.map +1 -1
  29. package/dist/cjs/store/file-tool-result-store.d.ts +5 -0
  30. package/dist/cjs/store/file-tool-result-store.d.ts.map +1 -1
  31. package/dist/cjs/store/file-tool-result-store.js +14 -0
  32. package/dist/cjs/store/file-tool-result-store.js.map +1 -1
  33. package/dist/cjs/utils/token-counter.d.ts.map +1 -1
  34. package/dist/cjs/utils/token-counter.js +20 -16
  35. package/dist/cjs/utils/token-counter.js.map +1 -1
  36. package/dist/esm/agent/compaction.d.ts +26 -0
  37. package/dist/esm/agent/compaction.d.ts.map +1 -0
  38. package/dist/esm/agent/compaction.js +91 -0
  39. package/dist/esm/agent/compaction.js.map +1 -0
  40. package/dist/esm/agent/engine.d.ts +8 -9
  41. package/dist/esm/agent/engine.d.ts.map +1 -1
  42. package/dist/esm/agent/engine.js +36 -74
  43. package/dist/esm/agent/engine.js.map +1 -1
  44. package/dist/esm/agent/history-manager.d.ts.map +1 -1
  45. package/dist/esm/agent/history-manager.js +1 -4
  46. package/dist/esm/agent/history-manager.js.map +1 -1
  47. package/dist/esm/agent/types.d.ts +2 -0
  48. package/dist/esm/agent/types.d.ts.map +1 -1
  49. package/dist/esm/agent/types.js.map +1 -1
  50. package/dist/esm/index.d.ts +3 -1
  51. package/dist/esm/index.d.ts.map +1 -1
  52. package/dist/esm/index.js +1 -0
  53. package/dist/esm/index.js.map +1 -1
  54. package/dist/esm/skill/frontmatter.d.ts +18 -0
  55. package/dist/esm/skill/frontmatter.d.ts.map +1 -0
  56. package/dist/esm/skill/frontmatter.js +326 -0
  57. package/dist/esm/skill/frontmatter.js.map +1 -0
  58. package/dist/esm/skill/manager.d.ts +59 -6
  59. package/dist/esm/skill/manager.d.ts.map +1 -1
  60. package/dist/esm/skill/manager.js +391 -83
  61. package/dist/esm/skill/manager.js.map +1 -1
  62. package/dist/esm/skill/types.d.ts +30 -0
  63. package/dist/esm/skill/types.d.ts.map +1 -1
  64. package/dist/esm/store/file-tool-result-store.d.ts +5 -0
  65. package/dist/esm/store/file-tool-result-store.d.ts.map +1 -1
  66. package/dist/esm/store/file-tool-result-store.js +14 -0
  67. package/dist/esm/store/file-tool-result-store.js.map +1 -1
  68. package/dist/esm/utils/token-counter.d.ts.map +1 -1
  69. package/dist/esm/utils/token-counter.js +20 -16
  70. package/dist/esm/utils/token-counter.js.map +1 -1
  71. package/package.json +7 -4
@@ -3,6 +3,15 @@
3
3
  // ============================================================
4
4
  import * as fs from 'fs';
5
5
  import * as path from 'path';
6
+ import { parseFrontmatter, fmString, fmStringArray, fmMap } from "./frontmatter.js";
7
+ /** 需要透传到 metadata 的标准/已知 frontmatter 字段集合 */
8
+ const KNOWN_FM_KEYS = new Set([
9
+ 'name', 'description', 'tags', 'keywords', 'aliases',
10
+ 'requires', 'required_mcps', 'version', 'author',
11
+ 'referenced_skills', 'referencedSkills',
12
+ 'allowed-tools', 'allowedTools', 'allowed_tools',
13
+ 'license', 'compatibility', 'metadata',
14
+ ]);
6
15
  /** 简单 LRU 缓存(基于 Map 插入顺序) */
7
16
  class LRUCache {
8
17
  cache = new Map();
@@ -54,6 +63,8 @@ export class SkillManager {
54
63
  nameIndex = new Map();
55
64
  /** content LRU 缓存(懒加载时按需填充) */
56
65
  contentCache;
66
+ /** 嵌套子包扫描结果缓存:packageDir -> Skill[] */
67
+ nestedSkillsCache = new Map();
57
68
  /** 是否启用懒加载 */
58
69
  lazy;
59
70
  /** 记录加载的目录,用于 reload */
@@ -91,16 +102,47 @@ export class SkillManager {
91
102
  : path.resolve(dir);
92
103
  if (!fs.existsSync(resolvedDir))
93
104
  return;
94
- // 递归扫描目录及子目录中的所有 .md 文件
105
+ const isSkippableDir = (name) => name === 'node_modules' || name === '.git' || name === '.hg' || name.startsWith('.');
106
+ // 第一遍:递归识别所有标准目录包(含 SKILL.md 的目录)。
107
+ // 关键:识别到包后【继续向下递归】,因此父包内的子目录若也含 SKILL.md
108
+ // (如 modules/zk-strategy/SKILL.md)会被识别为独立子包,支持任意层级嵌套。
109
+ const packageEntries = [];
110
+ const collectPackages = (currentDir, relId) => {
111
+ const entries = fs.readdirSync(currentDir, { withFileTypes: true });
112
+ const hasSkillMd = entries.some(e => e.isFile() && e.name.toLowerCase() === 'skill.md');
113
+ if (hasSkillMd) {
114
+ packageEntries.push({ dir: currentDir, relId: relId || path.basename(currentDir) });
115
+ // 继续递归(而非 return),以发现嵌套子包
116
+ }
117
+ for (const entry of entries) {
118
+ if (entry.isDirectory() && !isSkippableDir(entry.name)) {
119
+ const childRel = relId ? `${relId}/${entry.name}` : entry.name;
120
+ collectPackages(path.join(currentDir, entry.name), childRel);
121
+ }
122
+ }
123
+ };
124
+ collectPackages(resolvedDir, '');
125
+ const packageSet = packageEntries.map(p => path.resolve(p.dir));
126
+ // 加载目录包(SKILL.md + 资源目录),relId 作为嵌套 storageId
127
+ for (const { dir, relId } of packageEntries) {
128
+ this.loadPackageDir(dir, relId, source, connectorId);
129
+ }
130
+ // 判断路径是否位于某个包目录内
131
+ const isInPackage = (fp) => {
132
+ const abs = path.resolve(fp);
133
+ return packageSet.some(pkg => abs === pkg || abs.startsWith(pkg + path.sep));
134
+ };
135
+ // 第二遍:递归扫描散落的 .md 文件(跳过任何包目录内的文件)
95
136
  const walkDir = (currentDir) => {
96
137
  const entries = fs.readdirSync(currentDir, { withFileTypes: true });
97
138
  const mdFiles = [];
98
139
  for (const entry of entries) {
99
140
  const fullPath = path.join(currentDir, entry.name);
100
141
  if (entry.isDirectory()) {
101
- mdFiles.push(...walkDir(fullPath));
142
+ if (!isInPackage(fullPath))
143
+ mdFiles.push(...walkDir(fullPath));
102
144
  }
103
- else if (entry.isFile() && entry.name.endsWith('.md')) {
145
+ else if (entry.isFile() && entry.name.endsWith('.md') && !isInPackage(fullPath)) {
104
146
  mdFiles.push(fullPath);
105
147
  }
106
148
  }
@@ -134,10 +176,210 @@ export class SkillManager {
134
176
  }
135
177
  }
136
178
  }
179
+ /** 扫描目录包的资源清单(scripts/ references/ assets/ skills/),返回相对路径(POSIX 风格) */
180
+ static scanPackageResources(packageDir) {
181
+ const scan = (sub) => {
182
+ const dir = path.join(packageDir, sub);
183
+ if (!fs.existsSync(dir))
184
+ return [];
185
+ const out = [];
186
+ const walk = (d) => {
187
+ for (const e of fs.readdirSync(d, { withFileTypes: true })) {
188
+ const fp = path.join(d, e.name);
189
+ if (e.isDirectory())
190
+ walk(fp);
191
+ else if (e.isFile())
192
+ out.push(path.relative(packageDir, fp).split(path.sep).join('/'));
193
+ }
194
+ };
195
+ walk(dir);
196
+ return out.sort();
197
+ };
198
+ const resources = {};
199
+ const scripts = scan('scripts');
200
+ const references = scan('references');
201
+ const assets = scan('assets');
202
+ // 兼容:包根目录下除 SKILL.md 外的 .md 文档也视为 references(WorkBuddy 旧格式,如 reference.md)
203
+ try {
204
+ for (const e of fs.readdirSync(packageDir, { withFileTypes: true })) {
205
+ if (e.isFile() && e.name.toLowerCase().endsWith('.md') && e.name.toLowerCase() !== 'skill.md') {
206
+ references.push(e.name);
207
+ }
208
+ }
209
+ }
210
+ catch {
211
+ /* ignore */
212
+ }
213
+ if (scripts.length)
214
+ resources.scripts = scripts;
215
+ if (references.length)
216
+ resources.references = [...new Set(references)].sort();
217
+ if (assets.length)
218
+ resources.assets = assets;
219
+ // 扫描嵌套子包(skills/ 目录下的子目录含 SKILL.md)
220
+ const skillsDir = path.join(packageDir, 'skills');
221
+ if (fs.existsSync(skillsDir) && fs.statSync(skillsDir).isDirectory()) {
222
+ const nestedSkills = this.scanNestedPackages(skillsDir);
223
+ if (nestedSkills.length > 0) {
224
+ resources.skills = nestedSkills;
225
+ }
226
+ }
227
+ return resources;
228
+ }
229
+ /** 扫描嵌套子包(skills/ 目录下的子目录含 SKILL.md) */
230
+ static scanNestedPackages(skillsDir) {
231
+ const nestedSkills = [];
232
+ const scanDir = (dir, relPath) => {
233
+ const entries = fs.readdirSync(dir, { withFileTypes: true });
234
+ for (const entry of entries) {
235
+ if (!entry.isDirectory())
236
+ continue;
237
+ const subDir = path.join(dir, entry.name);
238
+ const skillMd = path.join(subDir, 'SKILL.md');
239
+ if (fs.existsSync(skillMd)) {
240
+ // 这是一个嵌套子包
241
+ nestedSkills.push(relPath ? `${relPath}/${entry.name}` : entry.name);
242
+ // 继续递归扫描子包的 skills/ 目录
243
+ const subSkillsDir = path.join(subDir, 'skills');
244
+ if (fs.existsSync(subSkillsDir)) {
245
+ scanDir(subSkillsDir, relPath ? `${relPath}/${entry.name}` : entry.name);
246
+ }
247
+ }
248
+ else {
249
+ // 不是子包,继续向下扫描
250
+ scanDir(subDir, relPath ? `${relPath}/${entry.name}` : entry.name);
251
+ }
252
+ }
253
+ };
254
+ scanDir(skillsDir, '');
255
+ return nestedSkills;
256
+ }
257
+ /**
258
+ * 扫描嵌套子包并返回完整的 Skill 对象列表
259
+ * @param parentPkgDir 父包的物化目录
260
+ * @param parentRuntimeId 父包的运行时 ID
261
+ * @param parentPath 父包的 path
262
+ * @returns 嵌套子包列表
263
+ */
264
+ static scanNestedSkills(parentPkgDir, parentRuntimeId, parentPath) {
265
+ const nestedSkills = [];
266
+ const skillsDir = path.join(parentPkgDir, 'skills');
267
+ if (!fs.existsSync(skillsDir)) {
268
+ return nestedSkills;
269
+ }
270
+ const scanDir = (dir, relPath) => {
271
+ try {
272
+ const entries = fs.readdirSync(dir, { withFileTypes: true });
273
+ for (const entry of entries) {
274
+ if (!entry.isDirectory())
275
+ continue;
276
+ const subDir = path.join(dir, entry.name);
277
+ const skillMd = path.join(subDir, 'SKILL.md');
278
+ if (fs.existsSync(skillMd)) {
279
+ // 这是一个嵌套子包
280
+ const subPath = `${parentPath}/skills/${entry.name}`;
281
+ // 使用 / 作为分隔符,避免与 connectorSkillKey 冲突
282
+ const subRuntimeId = `${parentRuntimeId}/${entry.name}`;
283
+ // 解析 SKILL.md 的 frontmatter
284
+ let name = entry.name;
285
+ let description = '';
286
+ let content = '';
287
+ try {
288
+ const raw = fs.readFileSync(skillMd, 'utf-8');
289
+ const { data, body } = parseFrontmatter(raw);
290
+ name = String(data.name || entry.name);
291
+ description = String(data.description || '');
292
+ content = body.trim();
293
+ }
294
+ catch (error) {
295
+ console.warn(`[SkillManager] 解析嵌套子包 SKILL.md 失败: ${subDir}`, error);
296
+ // 使用默认值,继续处理其他子包
297
+ }
298
+ nestedSkills.push({
299
+ id: subRuntimeId,
300
+ name: name,
301
+ description: description,
302
+ tags: [],
303
+ aliases: [],
304
+ content: content,
305
+ source: 'user',
306
+ packageDir: subDir,
307
+ });
308
+ // 继续递归扫描子包的 skills/ 目录
309
+ const subSkillsDir = path.join(subDir, 'skills');
310
+ if (fs.existsSync(subSkillsDir)) {
311
+ scanDir(subSkillsDir, relPath ? `${relPath}/${entry.name}` : entry.name);
312
+ }
313
+ }
314
+ else {
315
+ // 不是子包,继续向下扫描
316
+ scanDir(subDir, relPath ? `${relPath}/${entry.name}` : entry.name);
317
+ }
318
+ }
319
+ }
320
+ catch (error) {
321
+ console.warn(`[SkillManager] 扫描嵌套子包目录失败: ${dir}`, error);
322
+ }
323
+ };
324
+ scanDir(skillsDir, 'skills');
325
+ return nestedSkills;
326
+ }
327
+ /**
328
+ * 加载单个标准目录包(含 SKILL.md 的目录)。
329
+ * 自动扫描资源目录并注册资源清单。
330
+ * @param relId 相对于加载根目录的嵌套 id(如 `master-investment/modules/zk-strategy`);
331
+ * 无连接器时直接作为 storageId,确保不同层级的同名目录互不覆盖。
332
+ */
333
+ loadPackageDir(packageDir, relId, source, connectorId) {
334
+ const resolvedDir = path.resolve(packageDir);
335
+ const skillMd = path.join(resolvedDir, 'SKILL.md');
336
+ if (!fs.existsSync(skillMd))
337
+ return;
338
+ // 嵌套 id:连接器前缀 + 相对路径(用 '/' 分隔,跨平台统一)
339
+ const storageId = connectorId ? SkillManager.connectorSkillKey(connectorId, relId) : relId;
340
+ const baseId = path.basename(resolvedDir);
341
+ // 父包 id:去掉最后一段(如 `master-investment/modules/zk-strategy` -> `master-investment`)
342
+ const parentId = relId.includes('/') ? relId.substring(0, relId.lastIndexOf('/')) : undefined;
343
+ const resources = SkillManager.scanPackageResources(resolvedDir);
344
+ if (this.lazy) {
345
+ const manifest = this.parseManifest(storageId, skillMd, source, connectorId);
346
+ if (manifest) {
347
+ manifest.baseId = baseId;
348
+ manifest.parentId = parentId;
349
+ this.manifests.set(storageId, manifest);
350
+ this.indexManifest(manifest, storageId);
351
+ this.registerPackageResources(storageId, resources, resolvedDir);
352
+ }
353
+ }
354
+ else {
355
+ const raw = fs.readFileSync(skillMd, 'utf-8');
356
+ const skill = this.parse(storageId, raw, source);
357
+ if (connectorId)
358
+ skill.metadata = { ...skill.metadata, connectorId };
359
+ const manifest = this.toManifest(skill, skillMd);
360
+ manifest.baseId = baseId;
361
+ manifest.parentId = parentId;
362
+ this.manifests.set(storageId, manifest);
363
+ this.indexManifest(manifest, storageId);
364
+ this.contentCache.set(storageId, skill.content);
365
+ this.registerPackageResources(storageId, resources, resolvedDir);
366
+ }
367
+ }
137
368
  /** 手动注册 Skill(全量,含 content) */
138
369
  register(skill) {
139
- this.manifests.set(skill.id, this.toManifest(skill));
140
- this.indexManifest(this.manifests.get(skill.id), skill.id);
370
+ const manifest = this.toManifest(skill);
371
+ // 带 packageDir 的物化包:若未携带 resources 清单,自动扫描目录补全过程资源,
372
+ // 使 list_skill_resources / run_skill_script 能正确枚举脚本与文档(多级嵌套同包各自独立)。
373
+ if (skill.packageDir && !manifest.resources) {
374
+ try {
375
+ manifest.resources = SkillManager.scanPackageResources(skill.packageDir);
376
+ }
377
+ catch {
378
+ /* ignore */
379
+ }
380
+ }
381
+ this.manifests.set(skill.id, manifest);
382
+ this.indexManifest(manifest, skill.id);
141
383
  if (skill.content) {
142
384
  this.contentCache.set(skill.id, skill.content);
143
385
  }
@@ -249,17 +491,95 @@ export class SkillManager {
249
491
  lazyMode: this.lazy,
250
492
  };
251
493
  }
494
+ // ---- Agent Skills 规范:资源访问(Layer3 按需加载) ----
495
+ /**
496
+ * 注册 Skill 包的资源清单与根目录(标准目录包形态)。
497
+ * 供管理端注入运行时 Skill 时调用,或 loadFromDir 扫描目录包时自动调用。
498
+ */
499
+ registerPackageResources(skillId, resources, packageDir) {
500
+ const manifest = this.resolveManifest(skillId);
501
+ if (!manifest)
502
+ return;
503
+ manifest.resources = resources;
504
+ manifest.packageDir = packageDir;
505
+ }
506
+ /** 列出 Skill 的资源清单(无则返回 null) */
507
+ listResources(skillIdOrName) {
508
+ const manifest = this.resolveManifest(skillIdOrName);
509
+ return manifest?.resources ?? null;
510
+ }
511
+ /**
512
+ * 按需加载 Skill 资源文件文本内容(references/ assets/ 等)。
513
+ * 仅允许读取 packageDir 内的文件,含路径穿越防护。
514
+ */
515
+ loadResource(skillIdOrName, resourcePath) {
516
+ const abs = this.resolveResourcePathByName(skillIdOrName, resourcePath);
517
+ if (!abs)
518
+ return null;
519
+ try {
520
+ return fs.readFileSync(abs, 'utf-8');
521
+ }
522
+ catch (err) {
523
+ console.warn(`[SkillManager] Failed to load resource "${resourcePath}" for "${skillIdOrName}":`, err?.message);
524
+ return null;
525
+ }
526
+ }
527
+ /** 获取资源文件绝对路径(供执行/二进制读取),含路径穿越防护 */
528
+ resolveResourcePathByName(skillIdOrName, resourcePath) {
529
+ const manifest = this.resolveManifest(skillIdOrName);
530
+ return this.resolveResourcePath(manifest, resourcePath);
531
+ }
532
+ /** 解析脚本绝对路径(scripts/ 下),供脚本执行工具调用 */
533
+ resolveScriptPath(skillIdOrName, scriptRel) {
534
+ const rel = scriptRel.startsWith('scripts/') ? scriptRel : `scripts/${scriptRel}`;
535
+ return this.resolveResourcePath(this.resolveManifest(skillIdOrName), rel);
536
+ }
537
+ /** 内部:解析并校验资源路径,确保位于 packageDir 内(防路径穿越) */
538
+ resolveResourcePath(manifest, resourcePath) {
539
+ if (!manifest?.packageDir || !resourcePath)
540
+ return null;
541
+ const base = path.resolve(manifest.packageDir);
542
+ const abs = path.resolve(base, resourcePath);
543
+ // 必须位于包根目录内
544
+ if (abs !== base && !abs.startsWith(base + path.sep))
545
+ return null;
546
+ if (!fs.existsSync(abs))
547
+ return null;
548
+ return abs;
549
+ }
252
550
  /** 重新加载(文件变更后刷新) */
253
551
  reload() {
254
552
  this.manifests.clear();
255
553
  this.nameIndex.clear();
256
554
  this.contentCache.clear();
555
+ this.nestedSkillsCache.clear();
257
556
  const dirs = [...this.loadedDirs];
258
557
  this.loadedDirs = []; // 重置,loadFromDir 会重新填充
259
558
  for (const { dir, source, connectorId } of dirs) {
260
559
  this.loadFromDir(dir, source, connectorId);
261
560
  }
262
561
  }
562
+ /**
563
+ * 清除嵌套子包缓存
564
+ * @param packageDir 包目录路径,不传则清除所有缓存
565
+ */
566
+ clearNestedSkillsCache(packageDir) {
567
+ if (packageDir) {
568
+ this.nestedSkillsCache.delete(packageDir);
569
+ }
570
+ else {
571
+ this.nestedSkillsCache.clear();
572
+ }
573
+ }
574
+ /**
575
+ * 获取嵌套子包缓存统计信息
576
+ */
577
+ getNestedSkillsCacheStats() {
578
+ return {
579
+ size: this.nestedSkillsCache.size,
580
+ keys: Array.from(this.nestedSkillsCache.keys()),
581
+ };
582
+ }
263
583
  // ---- 内部方法 ----
264
584
  /**
265
585
  * 从磁盘懒加载 content
@@ -272,12 +592,8 @@ export class SkillManager {
272
592
  if (!fs.existsSync(manifest.filePath))
273
593
  return '';
274
594
  const raw = fs.readFileSync(manifest.filePath, 'utf-8');
275
- const normalized = raw.replace(/\r\n/g, '\n');
276
- const match = normalized.match(/^---\n([\s\S]*?)\n---\n?([\s\S]*)$/);
277
- if (match) {
278
- return match[2].trim();
279
- }
280
- return raw;
595
+ const { data, body } = parseFrontmatter(raw);
596
+ return Object.keys(data).length > 0 ? body.trim() : raw;
281
597
  }
282
598
  catch (err) {
283
599
  console.warn(`[SkillManager] Failed to lazy-load content for "${manifest.id}":`, err?.message);
@@ -313,20 +629,20 @@ export class SkillManager {
313
629
  }
314
630
  /**
315
631
  * 仅解析 front matter(不读 content),用于懒加载模式
316
- * 通过读取文件前 N 字节提取 YAML front matter,避免加载整个文件
632
+ * 通过读取文件前 32KB 提取 YAML front matter,避免加载整个文件。
633
+ * 使用标准解析器,兼容嵌套 map / 多行折叠语法。
317
634
  */
318
635
  parseManifest(id, filePath, source, connectorId) {
319
636
  try {
320
- // 只读取文件前 2KB 来提取 front matter
637
+ // 读取文件前 32KB 提取 front matter(覆盖长 description / metadata 场景)
321
638
  const fd = fs.openSync(filePath, 'r');
322
- const buf = Buffer.alloc(2048);
323
- const bytesRead = fs.readSync(fd, buf, 0, 2048, 0);
639
+ const buf = Buffer.alloc(32768);
640
+ const bytesRead = fs.readSync(fd, buf, 0, 32768, 0);
324
641
  fs.closeSync(fd);
325
642
  const head = buf.toString('utf-8', 0, bytesRead);
326
- const normalized = head.replace(/\r\n/g, '\n');
327
- const match = normalized.match(/^---\n([\s\S]*?)\n---/);
328
643
  const fileSize = fs.statSync(filePath).size;
329
- if (!match) {
644
+ const { data } = parseFrontmatter(head);
645
+ if (Object.keys(data).length === 0) {
330
646
  // 无 front matter,使用文件名作为 name
331
647
  return {
332
648
  id,
@@ -342,23 +658,9 @@ export class SkillManager {
342
658
  ...(connectorId ? { metadata: { connectorId } } : {}),
343
659
  };
344
660
  }
345
- const fm = match[1];
346
- const referencedSkills = this.parseTags(this.extractField(fm, 'referenced_skills') || this.extractField(fm, 'referencedSkills') || '');
347
- const manifest = {
348
- id,
349
- name: this.extractField(fm, 'name') || id,
350
- description: this.extractField(fm, 'description') || '',
351
- tags: this.parseTags(this.extractField(fm, 'tags') || ''),
352
- aliases: this.parseTags(this.extractField(fm, 'aliases') || ''),
353
- source,
354
- version: this.extractField(fm, 'version') || undefined,
355
- author: this.extractField(fm, 'author') || undefined,
356
- requires: this.parseTags(this.extractField(fm, 'requires') || ''),
357
- referencedSkills: referencedSkills.length > 0 ? referencedSkills : undefined,
358
- filePath,
359
- contentSize: fileSize,
360
- ...(connectorId ? { metadata: { connectorId } } : {}),
361
- };
661
+ const manifest = this.buildManifest(id, data, source, filePath, fileSize);
662
+ if (connectorId)
663
+ manifest.metadata = { ...manifest.metadata, connectorId };
362
664
  return manifest;
363
665
  }
364
666
  catch (err) {
@@ -366,12 +668,61 @@ export class SkillManager {
366
668
  return null;
367
669
  }
368
670
  }
671
+ /**
672
+ * 由解析后的 frontmatter data 构建 SkillManifest(公共逻辑,parse/parseManifest 复用)。
673
+ * content 字段由调用方按需补充(parse 全量 / parseManifest 仅清单)。
674
+ */
675
+ buildManifest(id, data, source, filePath, contentSize) {
676
+ const metadataMap = fmMap(data, 'metadata');
677
+ const tags = [...fmStringArray(data, 'tags', 'keywords'), ...fmStringArray(metadataMap ?? {}, 'tags')];
678
+ const aliases = [...fmStringArray(data, 'aliases'), ...fmStringArray(metadataMap ?? {}, 'aliases')];
679
+ const requires = fmStringArray(data, 'requires', 'required_mcps');
680
+ const referencedSkills = fmStringArray(data, 'referenced_skills', 'referencedSkills');
681
+ const allowedTools = fmStringArray(data, 'allowed-tools', 'allowedTools', 'allowed_tools');
682
+ const manifest = {
683
+ id,
684
+ name: fmString(data, 'name') || id,
685
+ description: fmString(data, 'description'),
686
+ tags,
687
+ aliases,
688
+ source,
689
+ version: fmString(data, 'version') || fmString(metadataMap ?? {}, 'version') || undefined,
690
+ author: fmString(data, 'author') || fmString(metadataMap ?? {}, 'author') || undefined,
691
+ requires: requires.length ? requires : [],
692
+ referencedSkills: referencedSkills.length ? referencedSkills : undefined,
693
+ filePath,
694
+ contentSize,
695
+ license: fmString(data, 'license') || undefined,
696
+ compatibility: fmString(data, 'compatibility') || undefined,
697
+ allowedTools: allowedTools.length ? allowedTools : undefined,
698
+ };
699
+ // 未识别的扩展字段归入 metadata(标准 parser 忽略未知 key,此处保留以便回写)
700
+ const extra = {};
701
+ for (const [k, v] of Object.entries(data)) {
702
+ if (!KNOWN_FM_KEYS.has(k))
703
+ extra[k] = v;
704
+ }
705
+ if (Object.keys(extra).length)
706
+ manifest.metadata = extra;
707
+ return manifest;
708
+ }
369
709
  /** 解析完整的 Markdown 文件(含 content),用于兼容模式 */
370
710
  parse(id, raw, source) {
371
711
  // 统一行尾为 \n(兼容 Windows CRLF)
372
712
  const normalized = raw.replace(/\r\n/g, '\n');
373
- const match = normalized.match(/^---\n([\s\S]*?)\n---\n?([\s\S]*)$/);
374
- if (!match) {
713
+ let { data, body } = parseFrontmatter(normalized);
714
+ // 检测双重 frontmatter(旧版 createSkillFromFile 产生的问题)
715
+ const doubleMatch = body.match(/^---\s*\n([\s\S]*?)\n---\s*\n?([\s\S]*)$/);
716
+ if (doubleMatch) {
717
+ const fm1Fields = Object.keys(data).length;
718
+ const fm2Fields = doubleMatch[1].split('\n').filter(l => /^\w+:/.test(l)).length;
719
+ if (fm2Fields > fm1Fields) {
720
+ const reparsed = parseFrontmatter(body);
721
+ data = reparsed.data;
722
+ body = reparsed.body;
723
+ }
724
+ }
725
+ if (Object.keys(data).length === 0) {
375
726
  return {
376
727
  id,
377
728
  name: id,
@@ -383,52 +734,9 @@ export class SkillManager {
383
734
  requires: [],
384
735
  };
385
736
  }
386
- let frontMatter = match[1];
387
- let content = match[2].trim();
388
- // 检测双重 frontmatter(旧版 createSkillFromFile 产生的问题)
389
- const doubleMatch = content.match(/^---\n([\s\S]*?)\n---\n?([\s\S]*)$/);
390
- if (doubleMatch) {
391
- const fm1Fields = frontMatter.split('\n').filter(l => /^\w+:/.test(l)).length;
392
- const fm2Fields = doubleMatch[1].split('\n').filter(l => /^\w+:/.test(l)).length;
393
- if (fm2Fields > fm1Fields) {
394
- frontMatter = doubleMatch[1];
395
- content = doubleMatch[2].trim();
396
- }
397
- }
398
- return {
399
- id,
400
- name: this.extractField(frontMatter, 'name') || id,
401
- description: this.extractField(frontMatter, 'description') || '',
402
- tags: this.parseTags(this.extractField(frontMatter, 'tags') || ''),
403
- aliases: this.parseTags(this.extractField(frontMatter, 'aliases') || ''),
404
- content,
405
- source,
406
- version: this.extractField(frontMatter, 'version') || undefined,
407
- author: this.extractField(frontMatter, 'author') || undefined,
408
- requires: this.parseTags(this.extractField(frontMatter, 'requires') || ''),
409
- referencedSkills: this.parseReferencedSkills(frontMatter),
410
- };
411
- }
412
- /** 解析 referenced_skills 字段 */
413
- parseReferencedSkills(frontMatter) {
414
- const raw = this.extractField(frontMatter, 'referenced_skills') || this.extractField(frontMatter, 'referencedSkills') || '';
415
- const tags = this.parseTags(raw);
416
- return tags.length > 0 ? tags : undefined;
417
- }
418
- extractField(frontMatter, field) {
419
- const regex = new RegExp(`^${field}:\\s*(.+)$`, 'm');
420
- const match = frontMatter.match(regex);
421
- return match ? match[1].trim() : '';
422
- }
423
- parseTags(raw) {
424
- // 支持 [tag1, tag2] 和 tag1, tag2 两种格式
425
- const cleaned = raw.replace(/^\[|\]$/g, '');
426
- if (!cleaned.trim())
427
- return [];
428
- return cleaned
429
- .split(',')
430
- .map((t) => t.trim())
431
- .filter(Boolean);
737
+ const content = body.trim();
738
+ const manifest = this.buildManifest(id, data, source, undefined, content.length);
739
+ return { ...manifest, content };
432
740
  }
433
741
  }
434
742
  //# sourceMappingURL=manager.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"manager.js","sourceRoot":"","sources":["../../../src/skill/manager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"manager.js","sourceRoot":"","sources":["../../../src/skill/manager.ts"],"names":[],"mappings":"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"}