speccore 6.83.0 → 6.90.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 (134) hide show
  1. package/dist/cli.js +15 -0
  2. package/dist/cli.js.map +1 -1
  3. package/dist/commands/analyze.d.ts.map +1 -1
  4. package/dist/commands/analyze.js +32 -7
  5. package/dist/commands/analyze.js.map +1 -1
  6. package/dist/commands/change.d.ts.map +1 -1
  7. package/dist/commands/change.js +39 -1
  8. package/dist/commands/change.js.map +1 -1
  9. package/dist/commands/code-index.d.ts +1 -0
  10. package/dist/commands/code-index.d.ts.map +1 -1
  11. package/dist/commands/code-index.js +10 -0
  12. package/dist/commands/code-index.js.map +1 -1
  13. package/dist/commands/init.d.ts.map +1 -1
  14. package/dist/commands/init.js +118 -0
  15. package/dist/commands/init.js.map +1 -1
  16. package/dist/commands/knowledge.d.ts +12 -0
  17. package/dist/commands/knowledge.d.ts.map +1 -1
  18. package/dist/commands/knowledge.js +80 -0
  19. package/dist/commands/knowledge.js.map +1 -1
  20. package/dist/commands/pr.d.ts.map +1 -1
  21. package/dist/commands/pr.js +75 -38
  22. package/dist/commands/pr.js.map +1 -1
  23. package/dist/core/agents/defaults/_INDEX.md +68 -0
  24. package/dist/core/agents/defaults/_TEMPLATE.md +34 -0
  25. package/dist/core/agents/defaults/code-reviewer.md +49 -0
  26. package/dist/core/agents/defaults/compiler.md +25 -0
  27. package/dist/core/agents/defaults/compliance-checker.md +38 -0
  28. package/dist/core/agents/defaults/dependency-analyst.md +42 -0
  29. package/dist/core/agents/defaults/doc-sync-agent.md +25 -0
  30. package/dist/core/agents/defaults/impact-analyst.md +37 -0
  31. package/dist/core/agents/defaults/interaction-designer.md +73 -0
  32. package/dist/core/agents/defaults/performance-expert.md +35 -0
  33. package/dist/core/agents/defaults/product-analyst-backend.md +68 -0
  34. package/dist/core/agents/defaults/product-analyst-frontend.md +72 -0
  35. package/dist/core/agents/defaults/product-analyst.md +48 -0
  36. package/dist/core/agents/defaults/regression-tester.md +36 -0
  37. package/dist/core/agents/defaults/risk-assessor.md +38 -0
  38. package/dist/core/agents/defaults/schedule-planner.md +37 -0
  39. package/dist/core/agents/defaults/security-reviewer-finance.md +67 -0
  40. package/dist/core/agents/defaults/security-reviewer.md +43 -0
  41. package/dist/core/agents/defaults/task-decomposer.md +33 -0
  42. package/dist/core/agents/defaults/test-engineer.md +25 -0
  43. package/dist/core/agents/defaults/test-reviewer.md +48 -0
  44. package/dist/core/agents/engine/agent-executor.d.ts +50 -0
  45. package/dist/core/agents/engine/agent-executor.d.ts.map +1 -0
  46. package/dist/core/agents/engine/agent-executor.js +225 -0
  47. package/dist/core/agents/engine/agent-executor.js.map +1 -0
  48. package/dist/core/agents/engine/agent-loader.d.ts +58 -0
  49. package/dist/core/agents/engine/agent-loader.d.ts.map +1 -0
  50. package/dist/core/agents/engine/agent-loader.js +377 -0
  51. package/dist/core/agents/engine/agent-loader.js.map +1 -0
  52. package/dist/core/agents/engine/types.d.ts +71 -0
  53. package/dist/core/agents/engine/types.d.ts.map +1 -0
  54. package/dist/core/agents/engine/types.js +8 -0
  55. package/dist/core/agents/engine/types.js.map +1 -0
  56. package/dist/core/agents/index.d.ts +4 -0
  57. package/dist/core/agents/index.d.ts.map +1 -1
  58. package/dist/core/agents/index.js +17 -1
  59. package/dist/core/agents/index.js.map +1 -1
  60. package/dist/core/code-graph/builder.d.ts +6 -0
  61. package/dist/core/code-graph/builder.d.ts.map +1 -0
  62. package/dist/core/code-graph/builder.js +155 -0
  63. package/dist/core/code-graph/builder.js.map +1 -0
  64. package/dist/core/code-graph/index.d.ts +25 -0
  65. package/dist/core/code-graph/index.d.ts.map +1 -0
  66. package/dist/core/code-graph/index.js +125 -0
  67. package/dist/core/code-graph/index.js.map +1 -0
  68. package/dist/core/code-graph/parser.d.ts +10 -0
  69. package/dist/core/code-graph/parser.d.ts.map +1 -0
  70. package/dist/core/code-graph/parser.js +314 -0
  71. package/dist/core/code-graph/parser.js.map +1 -0
  72. package/dist/core/code-graph/query.d.ts +14 -0
  73. package/dist/core/code-graph/query.d.ts.map +1 -0
  74. package/dist/core/code-graph/query.js +112 -0
  75. package/dist/core/code-graph/query.js.map +1 -0
  76. package/dist/core/code-graph/reporter.d.ts +7 -0
  77. package/dist/core/code-graph/reporter.d.ts.map +1 -0
  78. package/dist/core/code-graph/reporter.js +97 -0
  79. package/dist/core/code-graph/reporter.js.map +1 -0
  80. package/dist/core/code-graph/types.d.ts +60 -0
  81. package/dist/core/code-graph/types.d.ts.map +1 -0
  82. package/dist/core/code-graph/types.js +7 -0
  83. package/dist/core/code-graph/types.js.map +1 -0
  84. package/dist/core/code-graph/visualizer.d.ts +9 -0
  85. package/dist/core/code-graph/visualizer.d.ts.map +1 -0
  86. package/dist/core/code-graph/visualizer.js +97 -0
  87. package/dist/core/code-graph/visualizer.js.map +1 -0
  88. package/dist/core/command-loader.d.ts +31 -0
  89. package/dist/core/command-loader.d.ts.map +1 -0
  90. package/dist/core/command-loader.js +76 -0
  91. package/dist/core/command-loader.js.map +1 -0
  92. package/dist/core/commands/defaults/change-impact.md +40 -0
  93. package/dist/core/commands/defaults/pr-review.md +42 -0
  94. package/dist/core/commands/defaults/refactor.md +37 -0
  95. package/dist/core/context-injector.d.ts +56 -0
  96. package/dist/core/context-injector.d.ts.map +1 -0
  97. package/dist/core/context-injector.js +122 -0
  98. package/dist/core/context-injector.js.map +1 -0
  99. package/dist/core/hook-runner.d.ts +36 -0
  100. package/dist/core/hook-runner.d.ts.map +1 -0
  101. package/dist/core/hook-runner.js +93 -0
  102. package/dist/core/hook-runner.js.map +1 -0
  103. package/dist/core/hooks/defaults/post-execute.md +22 -0
  104. package/dist/core/hooks/defaults/pre-execute.md +18 -0
  105. package/dist/core/prompt-builder.d.ts +1 -0
  106. package/dist/core/prompt-builder.d.ts.map +1 -1
  107. package/dist/core/prompt-builder.js +60 -1
  108. package/dist/core/prompt-builder.js.map +1 -1
  109. package/dist/core/rule-loader.d.ts +38 -0
  110. package/dist/core/rule-loader.d.ts.map +1 -0
  111. package/dist/core/rule-loader.js +156 -0
  112. package/dist/core/rule-loader.js.map +1 -0
  113. package/dist/core/rules/defaults/_INDEX.md +16 -0
  114. package/dist/core/rules/defaults/api-design.md +44 -0
  115. package/dist/core/rules/defaults/database.md +37 -0
  116. package/dist/core/rules/defaults/frontend-common.md +38 -0
  117. package/dist/core/rules/defaults/nodejs.md +38 -0
  118. package/dist/core/rules/defaults/react.md +34 -0
  119. package/dist/core/rules/defaults/security.md +31 -0
  120. package/dist/core/rules/defaults/testing.md +35 -0
  121. package/dist/core/rules/defaults/typescript.md +36 -0
  122. package/dist/core/skill-loader.d.ts +28 -0
  123. package/dist/core/skill-loader.d.ts.map +1 -0
  124. package/dist/core/skill-loader.js +102 -0
  125. package/dist/core/skill-loader.js.map +1 -0
  126. package/dist/core/skills/defaults/caching.md +33 -0
  127. package/dist/core/skills/defaults/db-migration.md +46 -0
  128. package/dist/core/skills/defaults/deployment.md +50 -0
  129. package/dist/core/skills/defaults/logging.md +38 -0
  130. package/dist/core/verify-engine.d.ts +7 -0
  131. package/dist/core/verify-engine.d.ts.map +1 -1
  132. package/dist/core/verify-engine.js +27 -1
  133. package/dist/core/verify-engine.js.map +1 -1
  134. package/package.json +2 -2
@@ -0,0 +1,377 @@
1
+ "use strict";
2
+ /**
3
+ * AGENTS 引擎 — 加载器
4
+ *
5
+ * 负责:
6
+ * 1. 扫描 .speccore/AGENTS/ 目录下的角色定义
7
+ * 2. 解析 Markdown 文件为 AgentDefinition
8
+ * 3. 解析 _INDEX.md 注册表
9
+ * 4. 根据 platform/industry 解析特化版本
10
+ * 5. 条件过滤和优先级排序
11
+ *
12
+ * v6.84.0+
13
+ */
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.resolveAgentName = resolveAgentName;
16
+ exports.loadAllAgents = loadAllAgents;
17
+ exports.loadRegistry = loadRegistry;
18
+ exports.resolveAgentsForPhase = resolveAgentsForPhase;
19
+ exports.loadAgentDefinition = loadAgentDefinition;
20
+ exports.getBuiltinAgentContents = getBuiltinAgentContents;
21
+ exports.getBuiltinRegistryContent = getBuiltinRegistryContent;
22
+ exports.getBuiltinTemplateContent = getBuiltinTemplateContent;
23
+ const path_1 = require("path");
24
+ const fs_extra_1 = require("fs-extra");
25
+ const BUILTIN_AGENTS_DIR = (0, path_1.join)(__dirname, '..', 'defaults');
26
+ // ============================================================
27
+ // 1. Markdown 解析
28
+ // ============================================================
29
+ function parseAgentMarkdown(content, source) {
30
+ const name = extractHeading(content) || 'unknown';
31
+ const description = extractSection(content, '职责') || extractSection(content, 'Description') || '';
32
+ const responsibilities = extractListItems(content, '职责') || extractListItems(content, 'Responsibilities') || [];
33
+ const inputSpec = extractSection(content, '输入') || extractSection(content, 'Input') || '';
34
+ const checkList = extractCheckboxItems(content) || [];
35
+ const outputFormat = extractSection(content, '输出格式') || extractSection(content, 'Output Format') || '';
36
+ const activations = parseSelfDescribedActivations(content);
37
+ // rolePrompt = 整个文档内容(作为 AI 的 system prompt 注入)
38
+ const rolePrompt = content;
39
+ return {
40
+ name,
41
+ description,
42
+ responsibilities,
43
+ inputSpec,
44
+ checkList,
45
+ outputFormat,
46
+ rolePrompt,
47
+ source,
48
+ activations,
49
+ };
50
+ }
51
+ /**
52
+ * 解析 Agent 自描述激活规则
53
+ * 从 Markdown 中的 "## 激活规则" 或 "## Activations" 部分提取
54
+ *
55
+ * 支持格式:
56
+ * | 命令 | 阶段 | 优先级 | 条件 |
57
+ * | :--- | :--- | :--- | :--- |
58
+ * | analyze | clarify | 60 | project.industry == 'finance' |
59
+ */
60
+ function parseSelfDescribedActivations(content) {
61
+ const section = extractSection(content, '激活规则') || extractSection(content, 'Activations');
62
+ if (!section)
63
+ return [];
64
+ const activations = [];
65
+ const lines = section.split('\n').filter(l => l.trim().startsWith('|') && !l.trim().match(/^\|[\s-:]+\|/));
66
+ for (const line of lines) {
67
+ const cells = line.split('|').map(c => c.trim()).filter(Boolean);
68
+ if (cells.length >= 3) {
69
+ activations.push({
70
+ command: cells[0],
71
+ phase: cells[1],
72
+ priority: parseInt(cells[2], 10) || 50,
73
+ condition: cells[3] && cells[3] !== '—' && cells[3] !== '-' ? cells[3] : undefined,
74
+ });
75
+ }
76
+ }
77
+ return activations;
78
+ }
79
+ function extractHeading(content) {
80
+ const m = content.match(/^#\s+Agent:\s*(.+)$/m);
81
+ return m?.[1].trim();
82
+ }
83
+ function extractSection(content, sectionName) {
84
+ const regex = new RegExp(`^##\\s+${sectionName}\\s*\\n(.*?)(?=\\n##\\s|$)`, 'ms');
85
+ const m = content.match(regex);
86
+ return m?.[1].trim();
87
+ }
88
+ function extractListItems(content, sectionName) {
89
+ const section = extractSection(content, sectionName);
90
+ if (!section)
91
+ return undefined;
92
+ const items = [];
93
+ for (const line of section.split('\n')) {
94
+ const m = line.match(/^\s*[-*]\s+(.+)$/);
95
+ if (m)
96
+ items.push(m[1].trim());
97
+ }
98
+ return items.length > 0 ? items : undefined;
99
+ }
100
+ function extractCheckboxItems(content) {
101
+ const items = [];
102
+ const matches = content.match(/^\s*-\s*\[[ x]\]\s*(.+)$/gm);
103
+ if (matches) {
104
+ for (const m of matches) {
105
+ const item = m.replace(/^\s*-\s*\[[ x]\]\s*/, '').trim();
106
+ if (item)
107
+ items.push(item);
108
+ }
109
+ }
110
+ return items.length > 0 ? items : undefined;
111
+ }
112
+ // ============================================================
113
+ // 2. 注册表解析
114
+ // ============================================================
115
+ function parseRegistryMarkdown(content) {
116
+ const phases = {};
117
+ const phaseMatches = content.matchAll(/^##\s+(.+?)\s*\/\s*(.+?)\s*\n([\s\S]*?)(?=\n##\s|$)/gm);
118
+ for (const match of phaseMatches) {
119
+ const command = match[1].trim();
120
+ const phase = match[2].trim();
121
+ const phaseKey = `${command}/${phase}`;
122
+ const tableContent = match[3];
123
+ phases[phaseKey] = parseRegistryTable(tableContent);
124
+ }
125
+ return { phases };
126
+ }
127
+ function parseRegistryTable(content) {
128
+ const entries = [];
129
+ const lines = content.split('\n').filter(l => l.trim().startsWith('|') && !l.trim().match(/^\|[\s-:]+\|/));
130
+ for (const line of lines) {
131
+ const cells = line.split('|').map(c => c.trim()).filter(Boolean);
132
+ if (cells.length >= 2) {
133
+ entries.push({
134
+ agent: cells[0],
135
+ priority: parseInt(cells[1], 10) || 50,
136
+ condition: cells[2] && cells[2] !== '—' && cells[2] !== '-' ? cells[2] : undefined,
137
+ description: cells[3],
138
+ });
139
+ }
140
+ }
141
+ return entries;
142
+ }
143
+ // ============================================================
144
+ // 3. 条件表达式求值(简单实现)
145
+ // ============================================================
146
+ function evaluateCondition(condition, context) {
147
+ if (!condition)
148
+ return true;
149
+ try {
150
+ // 支持的格式:
151
+ // project.industry == 'finance'
152
+ // project.securityLevel > 2
153
+ // platform == 'backend'
154
+ const eqMatch = condition.match(/^(.+?)\s*==\s*['"](.+?)['"]$/);
155
+ if (eqMatch) {
156
+ const path = eqMatch[1].trim();
157
+ const expected = eqMatch[2];
158
+ const actual = getContextValue(context, path);
159
+ return String(actual) === expected;
160
+ }
161
+ const gtMatch = condition.match(/^(.+?)\s*>\s*(\d+)$/);
162
+ if (gtMatch) {
163
+ const path = gtMatch[1].trim();
164
+ const expected = parseInt(gtMatch[2], 10);
165
+ const actual = getContextValue(context, path);
166
+ return Number(actual) > expected;
167
+ }
168
+ const gteMatch = condition.match(/^(.+?)\s*>=\s*(\d+)$/);
169
+ if (gteMatch) {
170
+ const path = gteMatch[1].trim();
171
+ const expected = parseInt(gteMatch[2], 10);
172
+ const actual = getContextValue(context, path);
173
+ return Number(actual) >= expected;
174
+ }
175
+ // 简单布尔:存在即真
176
+ const path = condition.trim();
177
+ const actual = getContextValue(context, path);
178
+ return actual !== undefined && actual !== null && actual !== false;
179
+ }
180
+ catch {
181
+ return true; // 条件解析失败,默认通过
182
+ }
183
+ }
184
+ function getContextValue(context, path) {
185
+ const parts = path.split('.');
186
+ let current = context;
187
+ for (const part of parts) {
188
+ if (current === null || current === undefined)
189
+ return undefined;
190
+ current = current[part];
191
+ }
192
+ return current;
193
+ }
194
+ // ============================================================
195
+ // 4. Agent 扫描与加载
196
+ // ============================================================
197
+ /**
198
+ * 扫描指定目录下的所有 Agent 定义文件
199
+ */
200
+ async function scanAgentFiles(dir) {
201
+ if (!(await (0, fs_extra_1.pathExists)(dir)))
202
+ return [];
203
+ const entries = await (0, fs_extra_1.readdir)(dir, { withFileTypes: true });
204
+ const agents = [];
205
+ for (const e of entries) {
206
+ if (!e.isFile() || !e.name.endsWith('.md'))
207
+ continue;
208
+ if (e.name.startsWith('_'))
209
+ continue; // _INDEX.md, _TEMPLATE.md 跳过
210
+ const content = await (0, fs_extra_1.readFile)((0, path_1.join)(dir, e.name), 'utf-8');
211
+ agents.push({
212
+ name: e.name.replace(/\.md$/, ''),
213
+ content,
214
+ source: dir === BUILTIN_AGENTS_DIR ? 'builtin' : 'user-defined',
215
+ });
216
+ }
217
+ return agents;
218
+ }
219
+ // ============================================================
220
+ // 5. 特化版本解析
221
+ // ============================================================
222
+ /**
223
+ * 根据 platform/industry 解析特化版本的 Agent 名称
224
+ *
225
+ * 优先级:platform-specific > industry-specific > generic
226
+ */
227
+ function resolveAgentName(baseAgent, context, availableAgents) {
228
+ const platform = context.platform;
229
+ const industry = context.project?.industry;
230
+ // 1. 尝试 platform-specific: product-analyst-backend
231
+ if (platform) {
232
+ const platformSpecific = `${baseAgent}-${platform}`;
233
+ if (availableAgents.has(platformSpecific))
234
+ return platformSpecific;
235
+ }
236
+ // 2. 尝试 industry-specific: security-reviewer-finance
237
+ if (industry) {
238
+ const industrySpecific = `${baseAgent}-${industry}`;
239
+ if (availableAgents.has(industrySpecific))
240
+ return industrySpecific;
241
+ }
242
+ // 3. 回退到通用版
243
+ return baseAgent;
244
+ }
245
+ // ============================================================
246
+ // 6. 主 API
247
+ // ============================================================
248
+ /**
249
+ * 加载所有可用的 Agent 定义
250
+ * 优先读取用户自定义,回退到内置默认
251
+ */
252
+ async function loadAllAgents(projectRoot) {
253
+ const agents = new Map();
254
+ const userAgentsDir = (0, path_1.join)(projectRoot, '.speccore', 'AGENTS');
255
+ // 1. 先加载内置默认
256
+ const builtinFiles = await scanAgentFiles(BUILTIN_AGENTS_DIR);
257
+ for (const f of builtinFiles) {
258
+ const def = parseAgentMarkdown(f.content, 'builtin');
259
+ agents.set(f.name, def);
260
+ }
261
+ // 2. 用户自定义覆盖(同名覆盖)
262
+ const userFiles = await scanAgentFiles(userAgentsDir);
263
+ for (const f of userFiles) {
264
+ const def = parseAgentMarkdown(f.content, 'user-defined');
265
+ agents.set(f.name, def);
266
+ }
267
+ return agents;
268
+ }
269
+ /**
270
+ * 加载注册表
271
+ * 优先读取用户自定义,回退到内置默认
272
+ */
273
+ async function loadRegistry(projectRoot) {
274
+ const userIndex = (0, path_1.join)(projectRoot, '.speccore', 'AGENTS', '_INDEX.md');
275
+ const builtinIndex = (0, path_1.join)(BUILTIN_AGENTS_DIR, '_INDEX.md');
276
+ let content = '';
277
+ if (await (0, fs_extra_1.pathExists)(userIndex)) {
278
+ content = await (0, fs_extra_1.readFile)(userIndex, 'utf-8');
279
+ }
280
+ else if (await (0, fs_extra_1.pathExists)(builtinIndex)) {
281
+ content = await (0, fs_extra_1.readFile)(builtinIndex, 'utf-8');
282
+ }
283
+ if (!content)
284
+ return { phases: {} };
285
+ return parseRegistryMarkdown(content);
286
+ }
287
+ /**
288
+ * 获取指定命令/阶段下需要激活的 Agent 列表
289
+ * 返回按优先级排序的 ResolvedAgent 数组
290
+ *
291
+ * 混合模式:
292
+ * 1. 注册表中的核心角色(显式配置,优先)
293
+ * 2. 用户自定义角色的自描述激活规则(扩展)
294
+ */
295
+ async function resolveAgentsForPhase(command, phase, context, projectRoot) {
296
+ const phaseKey = `${command}/${phase}`;
297
+ // 1. 加载注册表和 Agent 定义
298
+ const registry = await loadRegistry(projectRoot);
299
+ const allAgents = await loadAllAgents(projectRoot);
300
+ const availableNames = new Set(allAgents.keys());
301
+ // 2. 收集注册表中的角色
302
+ const registryEntries = registry.phases[phaseKey] || [];
303
+ const resolvedMap = new Map();
304
+ for (const entry of registryEntries) {
305
+ if (!evaluateCondition(entry.condition, context))
306
+ continue;
307
+ const resolvedName = resolveAgentName(entry.agent, context, availableNames);
308
+ const def = allAgents.get(resolvedName);
309
+ if (!def)
310
+ continue;
311
+ resolvedMap.set(resolvedName, {
312
+ name: resolvedName,
313
+ definition: def,
314
+ priority: entry.priority,
315
+ });
316
+ }
317
+ // 3. 扫描用户自定义角色的自描述激活规则(扩展角色)
318
+ for (const [agentName, def] of allAgents) {
319
+ // 只扫描用户自定义的角色(内置角色不扫描自描述规则)
320
+ if (def.source !== 'user-defined')
321
+ continue;
322
+ // 已在注册表中的跳过(注册表优先)
323
+ if (resolvedMap.has(agentName))
324
+ continue;
325
+ for (const act of def.activations) {
326
+ if (act.command === command && act.phase === phase) {
327
+ if (evaluateCondition(act.condition, context)) {
328
+ resolvedMap.set(agentName, {
329
+ name: agentName,
330
+ definition: def,
331
+ priority: act.priority,
332
+ });
333
+ }
334
+ break; // 匹配到一个就够了
335
+ }
336
+ }
337
+ }
338
+ // 4. 按优先级排序(高优先级在前)
339
+ const resolved = Array.from(resolvedMap.values());
340
+ resolved.sort((a, b) => b.priority - a.priority);
341
+ return resolved;
342
+ }
343
+ /**
344
+ * 获取单个 Agent 的定义
345
+ */
346
+ async function loadAgentDefinition(agentName, projectRoot) {
347
+ const allAgents = await loadAllAgents(projectRoot);
348
+ return allAgents.get(agentName);
349
+ }
350
+ /**
351
+ * 获取内置 Agent 的原始 Markdown 内容(用于 init 时复制到项目)
352
+ */
353
+ async function getBuiltinAgentContents() {
354
+ const files = await scanAgentFiles(BUILTIN_AGENTS_DIR);
355
+ return files.map(f => ({ name: f.name, content: f.content }));
356
+ }
357
+ /**
358
+ * 获取内置注册表内容(用于 init 时复制到项目)
359
+ */
360
+ async function getBuiltinRegistryContent() {
361
+ const path = (0, path_1.join)(BUILTIN_AGENTS_DIR, '_INDEX.md');
362
+ if (await (0, fs_extra_1.pathExists)(path)) {
363
+ return (0, fs_extra_1.readFile)(path, 'utf-8');
364
+ }
365
+ return undefined;
366
+ }
367
+ /**
368
+ * 获取内置模板内容(用于 init 时复制到项目)
369
+ */
370
+ async function getBuiltinTemplateContent() {
371
+ const path = (0, path_1.join)(BUILTIN_AGENTS_DIR, '_TEMPLATE.md');
372
+ if (await (0, fs_extra_1.pathExists)(path)) {
373
+ return (0, fs_extra_1.readFile)(path, 'utf-8');
374
+ }
375
+ return undefined;
376
+ }
377
+ //# sourceMappingURL=agent-loader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-loader.js","sourceRoot":"","sources":["../../../../src/core/agents/engine/agent-loader.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,71 @@
1
+ /**
2
+ * AGENTS 引擎 — 类型定义
3
+ *
4
+ * v6.84.0+: 规范数据库驱动的 Multi-Agent 调度架构
5
+ */
6
+ export interface AgentDefinition {
7
+ name: string;
8
+ description: string;
9
+ responsibilities: string[];
10
+ inputSpec: string;
11
+ checkList: string[];
12
+ outputFormat: string;
13
+ rolePrompt: string;
14
+ source: 'builtin' | 'user-defined';
15
+ activations: AgentActivation[];
16
+ }
17
+ export interface AgentActivation {
18
+ command: string;
19
+ phase: string;
20
+ priority: number;
21
+ condition?: string;
22
+ }
23
+ export interface AgentRegistryEntry {
24
+ agent: string;
25
+ priority: number;
26
+ condition?: string;
27
+ description?: string;
28
+ }
29
+ export interface AgentRegistry {
30
+ phases: Record<string, AgentRegistryEntry[]>;
31
+ }
32
+ export interface AgentContext {
33
+ iteration?: string;
34
+ iterationDir?: string;
35
+ taskDir?: string;
36
+ codePath?: string;
37
+ platform?: string;
38
+ project?: {
39
+ industry?: string;
40
+ securityLevel?: number;
41
+ [key: string]: any;
42
+ };
43
+ [key: string]: any;
44
+ }
45
+ export interface AgentTask {
46
+ agent: string;
47
+ input: AgentContext;
48
+ priority?: number;
49
+ }
50
+ export interface AgentResult {
51
+ agent: string;
52
+ passed: boolean;
53
+ findings: AgentFinding[];
54
+ rewrite?: string;
55
+ nextAgents?: string[];
56
+ duration: number;
57
+ output?: string;
58
+ }
59
+ export interface AgentFinding {
60
+ severity: 'critical' | 'major' | 'minor' | 'info';
61
+ category: string;
62
+ message: string;
63
+ suggestion?: string;
64
+ location?: string;
65
+ }
66
+ export interface ResolvedAgent {
67
+ name: string;
68
+ definition: AgentDefinition;
69
+ priority: number;
70
+ }
71
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/core/agents/engine/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,SAAS,GAAG,cAAc,CAAC;IACnC,WAAW,EAAE,eAAe,EAAE,CAAC;CAChC;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,kBAAkB,EAAE,CAAC,CAAC;CAC9C;AAED,MAAM,WAAW,YAAY;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE;QACR,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;KACpB,CAAC;IACF,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB;AAED,MAAM,WAAW,SAAS;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,YAAY,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,OAAO,CAAC;IAChB,QAAQ,EAAE,YAAY,EAAE,CAAC;IACzB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,UAAU,GAAG,OAAO,GAAG,OAAO,GAAG,MAAM,CAAC;IAClD,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,eAAe,CAAC;IAC5B,QAAQ,EAAE,MAAM,CAAC;CAClB"}
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ /**
3
+ * AGENTS 引擎 — 类型定义
4
+ *
5
+ * v6.84.0+: 规范数据库驱动的 Multi-Agent 调度架构
6
+ */
7
+ Object.defineProperty(exports, "__esModule", { value: true });
8
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/core/agents/engine/types.ts"],"names":[],"mappings":";AAAA;;;;GAIG"}
@@ -2,7 +2,11 @@
2
2
  * Agents Module — 专业 AI 角色定义
3
3
  *
4
4
  * v6.83.0+: 从单一 AGENTS.md 总纲 → 多角色专业化分离
5
+ * v6.84.0+: 规范数据库驱动(.speccore/AGENTS/)+ 混合调度器
5
6
  * 每个角色包含:角色定义、专业 prompt 构建、领域特定检查清单
6
7
  */
7
8
  export { PRODUCT_ANALYST_ROLE, INTERACTION_DESIGNER_ROLE, buildProductAnalystPrompt, buildInteractionDesignerPrompt, } from './product-analyst';
9
+ export { AgentDefinition, AgentActivation, AgentRegistryEntry, AgentRegistry, AgentContext, AgentTask, AgentResult, AgentFinding, ResolvedAgent, } from './engine/types';
10
+ export { loadAllAgents, loadRegistry, resolveAgentsForPhase, loadAgentDefinition, resolveAgentName, getBuiltinAgentContents, getBuiltinRegistryContent, getBuiltinTemplateContent, } from './engine/agent-loader';
11
+ export { buildAgentPrompt, prepareAgentTask, parseAgentResponse, mergeAgentResults, } from './engine/agent-executor';
8
12
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/agents/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EACL,oBAAoB,EACpB,yBAAyB,EACzB,yBAAyB,EACzB,8BAA8B,GAC/B,MAAM,mBAAmB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/agents/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,EACL,oBAAoB,EACpB,yBAAyB,EACzB,yBAAyB,EACzB,8BAA8B,GAC/B,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EACL,eAAe,EACf,eAAe,EACf,kBAAkB,EAClB,aAAa,EACb,YAAY,EACZ,SAAS,EACT,WAAW,EACX,YAAY,EACZ,aAAa,GACd,MAAM,gBAAgB,CAAC;AAExB,OAAO,EACL,aAAa,EACb,YAAY,EACZ,qBAAqB,EACrB,mBAAmB,EACnB,gBAAgB,EAChB,uBAAuB,EACvB,yBAAyB,EACzB,yBAAyB,GAC1B,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EACL,gBAAgB,EAChB,gBAAgB,EAChB,kBAAkB,EAClB,iBAAiB,GAClB,MAAM,yBAAyB,CAAC"}
@@ -3,13 +3,29 @@
3
3
  * Agents Module — 专业 AI 角色定义
4
4
  *
5
5
  * v6.83.0+: 从单一 AGENTS.md 总纲 → 多角色专业化分离
6
+ * v6.84.0+: 规范数据库驱动(.speccore/AGENTS/)+ 混合调度器
6
7
  * 每个角色包含:角色定义、专业 prompt 构建、领域特定检查清单
7
8
  */
8
9
  Object.defineProperty(exports, "__esModule", { value: true });
9
- exports.buildInteractionDesignerPrompt = exports.buildProductAnalystPrompt = exports.INTERACTION_DESIGNER_ROLE = exports.PRODUCT_ANALYST_ROLE = void 0;
10
+ exports.mergeAgentResults = exports.parseAgentResponse = exports.prepareAgentTask = exports.buildAgentPrompt = exports.getBuiltinTemplateContent = exports.getBuiltinRegistryContent = exports.getBuiltinAgentContents = exports.resolveAgentName = exports.loadAgentDefinition = exports.resolveAgentsForPhase = exports.loadRegistry = exports.loadAllAgents = exports.buildInteractionDesignerPrompt = exports.buildProductAnalystPrompt = exports.INTERACTION_DESIGNER_ROLE = exports.PRODUCT_ANALYST_ROLE = void 0;
11
+ // ── 向后兼容:保留 v6.83.0 硬编码角色(内部使用,不鼓励新代码直接引用)──
10
12
  var product_analyst_1 = require("./product-analyst");
11
13
  Object.defineProperty(exports, "PRODUCT_ANALYST_ROLE", { enumerable: true, get: function () { return product_analyst_1.PRODUCT_ANALYST_ROLE; } });
12
14
  Object.defineProperty(exports, "INTERACTION_DESIGNER_ROLE", { enumerable: true, get: function () { return product_analyst_1.INTERACTION_DESIGNER_ROLE; } });
13
15
  Object.defineProperty(exports, "buildProductAnalystPrompt", { enumerable: true, get: function () { return product_analyst_1.buildProductAnalystPrompt; } });
14
16
  Object.defineProperty(exports, "buildInteractionDesignerPrompt", { enumerable: true, get: function () { return product_analyst_1.buildInteractionDesignerPrompt; } });
17
+ var agent_loader_1 = require("./engine/agent-loader");
18
+ Object.defineProperty(exports, "loadAllAgents", { enumerable: true, get: function () { return agent_loader_1.loadAllAgents; } });
19
+ Object.defineProperty(exports, "loadRegistry", { enumerable: true, get: function () { return agent_loader_1.loadRegistry; } });
20
+ Object.defineProperty(exports, "resolveAgentsForPhase", { enumerable: true, get: function () { return agent_loader_1.resolveAgentsForPhase; } });
21
+ Object.defineProperty(exports, "loadAgentDefinition", { enumerable: true, get: function () { return agent_loader_1.loadAgentDefinition; } });
22
+ Object.defineProperty(exports, "resolveAgentName", { enumerable: true, get: function () { return agent_loader_1.resolveAgentName; } });
23
+ Object.defineProperty(exports, "getBuiltinAgentContents", { enumerable: true, get: function () { return agent_loader_1.getBuiltinAgentContents; } });
24
+ Object.defineProperty(exports, "getBuiltinRegistryContent", { enumerable: true, get: function () { return agent_loader_1.getBuiltinRegistryContent; } });
25
+ Object.defineProperty(exports, "getBuiltinTemplateContent", { enumerable: true, get: function () { return agent_loader_1.getBuiltinTemplateContent; } });
26
+ var agent_executor_1 = require("./engine/agent-executor");
27
+ Object.defineProperty(exports, "buildAgentPrompt", { enumerable: true, get: function () { return agent_executor_1.buildAgentPrompt; } });
28
+ Object.defineProperty(exports, "prepareAgentTask", { enumerable: true, get: function () { return agent_executor_1.prepareAgentTask; } });
29
+ Object.defineProperty(exports, "parseAgentResponse", { enumerable: true, get: function () { return agent_executor_1.parseAgentResponse; } });
30
+ Object.defineProperty(exports, "mergeAgentResults", { enumerable: true, get: function () { return agent_executor_1.mergeAgentResults; } });
15
31
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/agents/index.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AAEH,qDAK2B;AAJzB,uHAAA,oBAAoB,OAAA;AACpB,4HAAA,yBAAyB,OAAA;AACzB,4HAAA,yBAAyB,OAAA;AACzB,iIAAA,8BAA8B,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/agents/index.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;;AAEH,8CAA8C;AAC9C,qDAK2B;AAJzB,uHAAA,oBAAoB,OAAA;AACpB,4HAAA,yBAAyB,OAAA;AACzB,4HAAA,yBAAyB,OAAA;AACzB,iIAAA,8BAA8B,OAAA;AAgBhC,sDAS+B;AAR7B,6GAAA,aAAa,OAAA;AACb,4GAAA,YAAY,OAAA;AACZ,qHAAA,qBAAqB,OAAA;AACrB,mHAAA,mBAAmB,OAAA;AACnB,gHAAA,gBAAgB,OAAA;AAChB,uHAAA,uBAAuB,OAAA;AACvB,yHAAA,yBAAyB,OAAA;AACzB,yHAAA,yBAAyB,OAAA;AAG3B,0DAKiC;AAJ/B,kHAAA,gBAAgB,OAAA;AAChB,kHAAA,gBAAgB,OAAA;AAChB,oHAAA,kBAAkB,OAAA;AAClB,mHAAA,iBAAiB,OAAA"}
@@ -0,0 +1,6 @@
1
+ import type { CodeGraph, CodeNode, CodeEdge } from './types';
2
+ /**
3
+ * 计算节点度数、识别 god nodes、构建完整图谱
4
+ */
5
+ export declare function buildCodeGraph(nodes: CodeNode[], edges: CodeEdge[], projectName: string, projectRoot: string, scannedFiles: number): CodeGraph;
6
+ //# sourceMappingURL=builder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"builder.d.ts","sourceRoot":"","sources":["../../../src/core/code-graph/builder.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAiB,MAAM,SAAS,CAAC;AAE5E;;GAEG;AACH,wBAAgB,cAAc,CAC5B,KAAK,EAAE,QAAQ,EAAE,EACjB,KAAK,EAAE,QAAQ,EAAE,EACjB,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,MAAM,EACnB,YAAY,EAAE,MAAM,GACnB,SAAS,CA+DX"}