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.
- package/dist/cli.js +15 -0
- package/dist/cli.js.map +1 -1
- package/dist/commands/analyze.d.ts.map +1 -1
- package/dist/commands/analyze.js +32 -7
- package/dist/commands/analyze.js.map +1 -1
- package/dist/commands/change.d.ts.map +1 -1
- package/dist/commands/change.js +39 -1
- package/dist/commands/change.js.map +1 -1
- package/dist/commands/code-index.d.ts +1 -0
- package/dist/commands/code-index.d.ts.map +1 -1
- package/dist/commands/code-index.js +10 -0
- package/dist/commands/code-index.js.map +1 -1
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +118 -0
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/knowledge.d.ts +12 -0
- package/dist/commands/knowledge.d.ts.map +1 -1
- package/dist/commands/knowledge.js +80 -0
- package/dist/commands/knowledge.js.map +1 -1
- package/dist/commands/pr.d.ts.map +1 -1
- package/dist/commands/pr.js +75 -38
- package/dist/commands/pr.js.map +1 -1
- package/dist/core/agents/defaults/_INDEX.md +68 -0
- package/dist/core/agents/defaults/_TEMPLATE.md +34 -0
- package/dist/core/agents/defaults/code-reviewer.md +49 -0
- package/dist/core/agents/defaults/compiler.md +25 -0
- package/dist/core/agents/defaults/compliance-checker.md +38 -0
- package/dist/core/agents/defaults/dependency-analyst.md +42 -0
- package/dist/core/agents/defaults/doc-sync-agent.md +25 -0
- package/dist/core/agents/defaults/impact-analyst.md +37 -0
- package/dist/core/agents/defaults/interaction-designer.md +73 -0
- package/dist/core/agents/defaults/performance-expert.md +35 -0
- package/dist/core/agents/defaults/product-analyst-backend.md +68 -0
- package/dist/core/agents/defaults/product-analyst-frontend.md +72 -0
- package/dist/core/agents/defaults/product-analyst.md +48 -0
- package/dist/core/agents/defaults/regression-tester.md +36 -0
- package/dist/core/agents/defaults/risk-assessor.md +38 -0
- package/dist/core/agents/defaults/schedule-planner.md +37 -0
- package/dist/core/agents/defaults/security-reviewer-finance.md +67 -0
- package/dist/core/agents/defaults/security-reviewer.md +43 -0
- package/dist/core/agents/defaults/task-decomposer.md +33 -0
- package/dist/core/agents/defaults/test-engineer.md +25 -0
- package/dist/core/agents/defaults/test-reviewer.md +48 -0
- package/dist/core/agents/engine/agent-executor.d.ts +50 -0
- package/dist/core/agents/engine/agent-executor.d.ts.map +1 -0
- package/dist/core/agents/engine/agent-executor.js +225 -0
- package/dist/core/agents/engine/agent-executor.js.map +1 -0
- package/dist/core/agents/engine/agent-loader.d.ts +58 -0
- package/dist/core/agents/engine/agent-loader.d.ts.map +1 -0
- package/dist/core/agents/engine/agent-loader.js +377 -0
- package/dist/core/agents/engine/agent-loader.js.map +1 -0
- package/dist/core/agents/engine/types.d.ts +71 -0
- package/dist/core/agents/engine/types.d.ts.map +1 -0
- package/dist/core/agents/engine/types.js +8 -0
- package/dist/core/agents/engine/types.js.map +1 -0
- package/dist/core/agents/index.d.ts +4 -0
- package/dist/core/agents/index.d.ts.map +1 -1
- package/dist/core/agents/index.js +17 -1
- package/dist/core/agents/index.js.map +1 -1
- package/dist/core/code-graph/builder.d.ts +6 -0
- package/dist/core/code-graph/builder.d.ts.map +1 -0
- package/dist/core/code-graph/builder.js +155 -0
- package/dist/core/code-graph/builder.js.map +1 -0
- package/dist/core/code-graph/index.d.ts +25 -0
- package/dist/core/code-graph/index.d.ts.map +1 -0
- package/dist/core/code-graph/index.js +125 -0
- package/dist/core/code-graph/index.js.map +1 -0
- package/dist/core/code-graph/parser.d.ts +10 -0
- package/dist/core/code-graph/parser.d.ts.map +1 -0
- package/dist/core/code-graph/parser.js +314 -0
- package/dist/core/code-graph/parser.js.map +1 -0
- package/dist/core/code-graph/query.d.ts +14 -0
- package/dist/core/code-graph/query.d.ts.map +1 -0
- package/dist/core/code-graph/query.js +112 -0
- package/dist/core/code-graph/query.js.map +1 -0
- package/dist/core/code-graph/reporter.d.ts +7 -0
- package/dist/core/code-graph/reporter.d.ts.map +1 -0
- package/dist/core/code-graph/reporter.js +97 -0
- package/dist/core/code-graph/reporter.js.map +1 -0
- package/dist/core/code-graph/types.d.ts +60 -0
- package/dist/core/code-graph/types.d.ts.map +1 -0
- package/dist/core/code-graph/types.js +7 -0
- package/dist/core/code-graph/types.js.map +1 -0
- package/dist/core/code-graph/visualizer.d.ts +9 -0
- package/dist/core/code-graph/visualizer.d.ts.map +1 -0
- package/dist/core/code-graph/visualizer.js +97 -0
- package/dist/core/code-graph/visualizer.js.map +1 -0
- package/dist/core/command-loader.d.ts +31 -0
- package/dist/core/command-loader.d.ts.map +1 -0
- package/dist/core/command-loader.js +76 -0
- package/dist/core/command-loader.js.map +1 -0
- package/dist/core/commands/defaults/change-impact.md +40 -0
- package/dist/core/commands/defaults/pr-review.md +42 -0
- package/dist/core/commands/defaults/refactor.md +37 -0
- package/dist/core/context-injector.d.ts +56 -0
- package/dist/core/context-injector.d.ts.map +1 -0
- package/dist/core/context-injector.js +122 -0
- package/dist/core/context-injector.js.map +1 -0
- package/dist/core/hook-runner.d.ts +36 -0
- package/dist/core/hook-runner.d.ts.map +1 -0
- package/dist/core/hook-runner.js +93 -0
- package/dist/core/hook-runner.js.map +1 -0
- package/dist/core/hooks/defaults/post-execute.md +22 -0
- package/dist/core/hooks/defaults/pre-execute.md +18 -0
- package/dist/core/prompt-builder.d.ts +1 -0
- package/dist/core/prompt-builder.d.ts.map +1 -1
- package/dist/core/prompt-builder.js +60 -1
- package/dist/core/prompt-builder.js.map +1 -1
- package/dist/core/rule-loader.d.ts +38 -0
- package/dist/core/rule-loader.d.ts.map +1 -0
- package/dist/core/rule-loader.js +156 -0
- package/dist/core/rule-loader.js.map +1 -0
- package/dist/core/rules/defaults/_INDEX.md +16 -0
- package/dist/core/rules/defaults/api-design.md +44 -0
- package/dist/core/rules/defaults/database.md +37 -0
- package/dist/core/rules/defaults/frontend-common.md +38 -0
- package/dist/core/rules/defaults/nodejs.md +38 -0
- package/dist/core/rules/defaults/react.md +34 -0
- package/dist/core/rules/defaults/security.md +31 -0
- package/dist/core/rules/defaults/testing.md +35 -0
- package/dist/core/rules/defaults/typescript.md +36 -0
- package/dist/core/skill-loader.d.ts +28 -0
- package/dist/core/skill-loader.d.ts.map +1 -0
- package/dist/core/skill-loader.js +102 -0
- package/dist/core/skill-loader.js.map +1 -0
- package/dist/core/skills/defaults/caching.md +33 -0
- package/dist/core/skills/defaults/db-migration.md +46 -0
- package/dist/core/skills/defaults/deployment.md +50 -0
- package/dist/core/skills/defaults/logging.md +38 -0
- package/dist/core/verify-engine.d.ts +7 -0
- package/dist/core/verify-engine.d.ts.map +1 -1
- package/dist/core/verify-engine.js +27 -1
- package/dist/core/verify-engine.js.map +1 -1
- 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 @@
|
|
|
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
|
|
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
|
|
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"}
|