ethan-skill 1.11.0 → 1.13.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 (92) hide show
  1. package/CHANGELOG.md +272 -0
  2. package/README.md +84 -33
  3. package/dist/agents/index.d.ts +14 -0
  4. package/dist/agents/index.d.ts.map +1 -0
  5. package/dist/agents/index.js +37 -0
  6. package/dist/agents/index.js.map +1 -0
  7. package/dist/agents/orchestrator.d.ts +10 -0
  8. package/dist/agents/orchestrator.d.ts.map +1 -0
  9. package/dist/agents/orchestrator.js +233 -0
  10. package/dist/agents/orchestrator.js.map +1 -0
  11. package/dist/agents/orchestrator.test.d.ts +2 -0
  12. package/dist/agents/orchestrator.test.d.ts.map +1 -0
  13. package/dist/agents/orchestrator.test.js +151 -0
  14. package/dist/agents/orchestrator.test.js.map +1 -0
  15. package/dist/agents/presets.d.ts +16 -0
  16. package/dist/agents/presets.d.ts.map +1 -0
  17. package/dist/agents/presets.js +123 -0
  18. package/dist/agents/presets.js.map +1 -0
  19. package/dist/agents/types.d.ts +29 -0
  20. package/dist/agents/types.d.ts.map +1 -0
  21. package/dist/agents/types.js +7 -0
  22. package/dist/agents/types.js.map +1 -0
  23. package/dist/cli/index.js +1168 -1
  24. package/dist/cli/index.js.map +1 -1
  25. package/dist/loader/custom-agent-loader.d.ts +13 -0
  26. package/dist/loader/custom-agent-loader.d.ts.map +1 -0
  27. package/dist/loader/custom-agent-loader.js +120 -0
  28. package/dist/loader/custom-agent-loader.js.map +1 -0
  29. package/dist/mcp/server.d.ts.map +1 -1
  30. package/dist/mcp/server.js +278 -1
  31. package/dist/mcp/server.js.map +1 -1
  32. package/dist/skills/27-tech-debt.d.ts +3 -0
  33. package/dist/skills/27-tech-debt.d.ts.map +1 -0
  34. package/dist/skills/27-tech-debt.js +149 -0
  35. package/dist/skills/27-tech-debt.js.map +1 -0
  36. package/dist/skills/28-api-mock.d.ts +3 -0
  37. package/dist/skills/28-api-mock.d.ts.map +1 -0
  38. package/dist/skills/28-api-mock.js +272 -0
  39. package/dist/skills/28-api-mock.js.map +1 -0
  40. package/dist/skills/29-data-migration.d.ts +3 -0
  41. package/dist/skills/29-data-migration.d.ts.map +1 -0
  42. package/dist/skills/29-data-migration.js +331 -0
  43. package/dist/skills/29-data-migration.js.map +1 -0
  44. package/dist/skills/30-llm-feature.d.ts +3 -0
  45. package/dist/skills/30-llm-feature.d.ts.map +1 -0
  46. package/dist/skills/30-llm-feature.js +328 -0
  47. package/dist/skills/30-llm-feature.js.map +1 -0
  48. package/dist/skills/31-threat-model.d.ts +3 -0
  49. package/dist/skills/31-threat-model.d.ts.map +1 -0
  50. package/dist/skills/31-threat-model.js +240 -0
  51. package/dist/skills/31-threat-model.js.map +1 -0
  52. package/dist/skills/32-green-code.d.ts +3 -0
  53. package/dist/skills/32-green-code.d.ts.map +1 -0
  54. package/dist/skills/32-green-code.js +346 -0
  55. package/dist/skills/32-green-code.js.map +1 -0
  56. package/dist/skills/33-service-catalog.d.ts +3 -0
  57. package/dist/skills/33-service-catalog.d.ts.map +1 -0
  58. package/dist/skills/33-service-catalog.js +334 -0
  59. package/dist/skills/33-service-catalog.js.map +1 -0
  60. package/dist/skills/34-mobile-review.d.ts +3 -0
  61. package/dist/skills/34-mobile-review.d.ts.map +1 -0
  62. package/dist/skills/34-mobile-review.js +390 -0
  63. package/dist/skills/34-mobile-review.js.map +1 -0
  64. package/dist/skills/35-data-pipeline.d.ts +3 -0
  65. package/dist/skills/35-data-pipeline.d.ts.map +1 -0
  66. package/dist/skills/35-data-pipeline.js +392 -0
  67. package/dist/skills/35-data-pipeline.js.map +1 -0
  68. package/dist/skills/36-ml-experiment.d.ts +3 -0
  69. package/dist/skills/36-ml-experiment.d.ts.map +1 -0
  70. package/dist/skills/36-ml-experiment.js +415 -0
  71. package/dist/skills/36-ml-experiment.js.map +1 -0
  72. package/dist/skills/index.d.ts +10 -0
  73. package/dist/skills/index.d.ts.map +1 -1
  74. package/dist/skills/index.js +41 -1
  75. package/dist/skills/index.js.map +1 -1
  76. package/dist/skills/pipeline.d.ts.map +1 -1
  77. package/dist/skills/pipeline.js +35 -0
  78. package/dist/skills/pipeline.js.map +1 -1
  79. package/dist/skills/skills.test.js +3 -3
  80. package/dist/skills/skills.test.js.map +1 -1
  81. package/package.json +1 -1
  82. package/rules/claude-code/CLAUDE.md +2963 -3
  83. package/rules/cline/.clinerules +2805 -2
  84. package/rules/codebuddy/CODEBUDDY.md +2913 -2
  85. package/rules/continue/.continuerules +2805 -2
  86. package/rules/copilot/copilot-instructions.md +2883 -2
  87. package/rules/cursor/.cursorrules +2952 -2
  88. package/rules/cursor/smart-flow.mdc +2952 -2
  89. package/rules/jetbrains/smart-flow.md +2883 -2
  90. package/rules/lingma/smart-flow.md +2904 -3
  91. package/rules/windsurf/.windsurf/rules/smart-flow.md +2884 -3
  92. package/rules/zed/smart-flow.rules +2794 -1
@@ -0,0 +1,233 @@
1
+ "use strict";
2
+ /**
3
+ * Multi-Agent 编排器
4
+ * 将 Pipeline 的步骤分配给不同 Agent,生成协作式超级 Prompt
5
+ * 执行模型:Prompt 生成(粘贴到 AI 编辑器执行,零 API 成本)
6
+ */
7
+ Object.defineProperty(exports, "__esModule", { value: true });
8
+ exports.buildMultiAgentPrompt = buildMultiAgentPrompt;
9
+ const presets_1 = require("./presets");
10
+ /** 根据 skillId 解析对应的 Agent(兜底 Code Agent) */
11
+ function resolveAgent(skillId, agents, routing) {
12
+ const agentId = routing[skillId];
13
+ return agents.find((a) => a.id === agentId) ?? agents.find((a) => a.id === 'coder') ?? agents[0];
14
+ }
15
+ /** 生成 Multi-Agent 编排超级 Prompt */
16
+ function buildMultiAgentPrompt(pipeline, skills, agents, options) {
17
+ const { context, lang = 'zh', snapshot } = options;
18
+ const isEn = lang === 'en';
19
+ const routing = (0, presets_1.buildSkillRouting)(agents);
20
+ const participatingAgents = (0, presets_1.getAgentsForPipeline)(pipeline.skillIds, agents, routing);
21
+ const total = skills.length;
22
+ if (isEn) {
23
+ return buildEnPrompt(pipeline, skills, agents, participatingAgents, routing, context, snapshot, total);
24
+ }
25
+ return buildZhPrompt(pipeline, skills, agents, participatingAgents, routing, context, snapshot, total);
26
+ }
27
+ // ─── 中文版 ──────────────────────────────────────────────────────────────────
28
+ function buildZhPrompt(pipeline, skills, agents, participatingAgents, routing, context, snapshot, total) {
29
+ const header = `# 🤖 Multi-Agent 编排:${pipeline.name}
30
+
31
+ **任务背景**:${context}
32
+ **Pipeline**:${pipeline.name}(\`${pipeline.id}\`)
33
+ **执行模式**:Multi-Agent 协作编排
34
+ **参与 Agents**:${participatingAgents.length} 个 | **总步数**:${total} 步`;
35
+ // Agent 阵容表
36
+ const agentStepMap = buildAgentStepMap(skills, agents, routing, false);
37
+ const rosterRows = participatingAgents.map((a) => {
38
+ const steps = agentStepMap[a.id] || [];
39
+ const stepStr = steps.length > 0 ? `步骤 ${steps.join('、')}` : '—';
40
+ return `| ${a.emoji} **${a.name}** | ${a.role} | ${stepStr} |`;
41
+ }).join('\n');
42
+ const roster = `## 🎭 Agent 阵容
43
+
44
+ | Agent | 职责 | 负责步骤 |
45
+ |-------|------|---------|
46
+ ${rosterRows}`;
47
+ const protocol = `## 📋 协作协议(必须严格遵守)
48
+
49
+ 1. 每个 Agent 严格按分配步骤顺序执行,**不越权执行其他 Agent 的步骤**
50
+ 2. 每步完成后输出 **Handoff 摘要**(≤150字),交接给下一个 Agent
51
+ 3. 下一个 Agent 必须**先阅读 Handoff 摘要**,再开始执行
52
+ 4. 所有步骤完成后,将输出折叠在 \`<details>\` 标签中
53
+ 5. 全部步骤完成后,输出一份完整的 Multi-Agent 执行报告
54
+
55
+ **每步输出格式:**
56
+
57
+ \`\`\`
58
+ <details>
59
+ <summary>✅ 步骤 N:[Agent名] · [Skill名] — 已完成</summary>
60
+
61
+ [本步骤完整输出]
62
+
63
+ </details>
64
+ \`\`\``;
65
+ // 步骤详情(含 Agent 标签和 Handoff)
66
+ const stepsSection = skills.map((skill, i) => {
67
+ const stepNum = i + 1;
68
+ const agent = resolveAgent(skill.id, agents, routing);
69
+ const nextAgent = i < skills.length - 1 ? resolveAgent(skills[i + 1].id, agents, routing) : null;
70
+ const handoffFrom = i > 0 ? resolveAgent(skills[i - 1].id, agents, routing) : null;
71
+ const handoffNote = handoffFrom && handoffFrom.id !== agent.id
72
+ ? `> 📨 **Handoff 摘要**(来自 ${handoffFrom.emoji} ${handoffFrom.name}):\`[上一步核心产出,由上一 Agent 填写]\`\n\n`
73
+ : i > 0
74
+ ? `> 📝 **前序输出**(${agent.emoji} ${agent.name} 连续执行):使用步骤 ${i} 的核心产出作为背景。\n\n`
75
+ : '';
76
+ const stepsContent = skill.steps
77
+ .map((s, si) => {
78
+ const title = s.title.replace(/^\d+[.、]\s*/, '');
79
+ const indented = s.content.split('\n').map((l) => ` ${l}`).join('\n');
80
+ return ` ${si + 1}. **${title}**\n${indented}`;
81
+ })
82
+ .join('\n\n');
83
+ const handoffTo = nextAgent && nextAgent.id !== agent.id
84
+ ? `\n\n#### ✅ Handoff → ${nextAgent.emoji} ${nextAgent.name}\n\n> 🔖 请在此输出本步核心产出(≤150字),交接给 **${nextAgent.name}**:\n> \`[请填写:完成了什么、关键决策、下一步需要注意什么]\``
85
+ : '';
86
+ return `### ${agent.emoji} ${agent.name} — 步骤 ${stepNum}/${total}:${skill.name}
87
+
88
+ ${handoffNote}**目标**:${skill.description}
89
+
90
+ **执行内容**:
91
+
92
+ ${stepsContent}
93
+
94
+ **输出格式**:${skill.outputFormat}${handoffTo}`;
95
+ }).join('\n\n---\n\n');
96
+ // 最终报告模板
97
+ const reportTemplate = buildZhReportTemplate(pipeline, skills, agents, participatingAgents, routing, context);
98
+ const startCmd = `**立即开始执行:${participatingAgents[0].emoji} ${participatingAgents[0].name} 执行步骤 1。**`;
99
+ const snapshotBlock = snapshot ?? '';
100
+ return [header, snapshotBlock, '---', roster, '---', protocol, '---', `## 🔄 执行流程`, stepsSection, '---', reportTemplate, startCmd]
101
+ .filter(Boolean)
102
+ .join('\n\n');
103
+ }
104
+ function buildZhReportTemplate(pipeline, skills, agents, participatingAgents, routing, context) {
105
+ // 按 Agent 分组步骤
106
+ const agentSections = participatingAgents.map((agent) => {
107
+ const agentSkills = skills.filter((s) => {
108
+ const a = resolveAgent(s.id, agents, routing);
109
+ return a.id === agent.id;
110
+ });
111
+ const skillList = agentSkills.map((s) => `### ${s.name}\n[完整输出]\n\n---`).join('\n\n');
112
+ return `## ${agent.emoji} ${agent.name} 产出\n\n${skillList}`;
113
+ }).join('\n\n');
114
+ return `## 📄 最终输出要求
115
+
116
+ 全部步骤完成后,输出以下 Multi-Agent 执行报告:
117
+
118
+ # Multi-Agent 执行报告 — ${context}
119
+ > Pipeline:${pipeline.name} | Agents:${participatingAgents.map((a) => `${a.emoji} ${a.name}`).join(' → ')}
120
+
121
+ ${agentSections}
122
+
123
+ *由 Ethan Multi-Agent 自动生成*`;
124
+ }
125
+ // ─── 英文版 ──────────────────────────────────────────────────────────────────
126
+ function buildEnPrompt(pipeline, skills, agents, participatingAgents, routing, context, snapshot, total) {
127
+ const header = `# 🤖 Multi-Agent Orchestration: ${pipeline.name}
128
+
129
+ **Context**: ${context}
130
+ **Pipeline**: ${pipeline.name} (\`${pipeline.id}\`)
131
+ **Mode**: Multi-Agent Collaboration
132
+ **Agents**: ${participatingAgents.length} | **Steps**: ${total}`;
133
+ const agentStepMap = buildAgentStepMap(skills, agents, routing, false);
134
+ const rosterRows = participatingAgents.map((a) => {
135
+ const steps = agentStepMap[a.id] || [];
136
+ const stepStr = steps.length > 0 ? `Steps ${steps.join(', ')}` : '—';
137
+ return `| ${a.emoji} **${a.nameEn}** | ${a.role} | ${stepStr} |`;
138
+ }).join('\n');
139
+ const roster = `## 🎭 Agent Roster
140
+
141
+ | Agent | Role | Assigned Steps |
142
+ |-------|------|----------------|
143
+ ${rosterRows}`;
144
+ const protocol = `## 📋 Collaboration Protocol (Must Follow)
145
+
146
+ 1. Each Agent executes only its assigned steps — **no overstepping**
147
+ 2. After each step, output a **Handoff Summary** (≤150 words) for the next Agent
148
+ 3. The next Agent must **read the Handoff Summary** before starting
149
+ 4. Wrap each step output in \`<details>\` collapse tags
150
+ 5. After all steps complete, output a merged Multi-Agent Execution Report
151
+
152
+ **Per-step output format:**
153
+
154
+ \`\`\`
155
+ <details>
156
+ <summary>✅ Step N: [Agent Name] · [Skill Name] — Completed</summary>
157
+
158
+ [Full step output]
159
+
160
+ </details>
161
+ \`\`\``;
162
+ const stepsSection = skills.map((skill, i) => {
163
+ const stepNum = i + 1;
164
+ const agent = resolveAgent(skill.id, agents, routing);
165
+ const nextAgent = i < skills.length - 1 ? resolveAgent(skills[i + 1].id, agents, routing) : null;
166
+ const handoffFrom = i > 0 ? resolveAgent(skills[i - 1].id, agents, routing) : null;
167
+ const handoffNote = handoffFrom && handoffFrom.id !== agent.id
168
+ ? `> 📨 **Handoff Summary** (from ${handoffFrom.emoji} ${handoffFrom.nameEn}): \`[Previous step's key output — filled by prior Agent]\`\n\n`
169
+ : i > 0
170
+ ? `> 📝 **Prior Output** (${agent.emoji} ${agent.nameEn} continues): Use Step ${i} core output as background.\n\n`
171
+ : '';
172
+ const stepsContent = skill.steps
173
+ .map((s, si) => {
174
+ const title = s.title.replace(/^\d+[.、]\s*/, '');
175
+ const indented = s.content.split('\n').map((l) => ` ${l}`).join('\n');
176
+ return ` ${si + 1}. **${title}**\n${indented}`;
177
+ })
178
+ .join('\n\n');
179
+ const handoffTo = nextAgent && nextAgent.id !== agent.id
180
+ ? `\n\n#### ✅ Handoff → ${nextAgent.emoji} ${nextAgent.nameEn}\n\n> 🔖 Output core outcome (≤150 words) for **${nextAgent.nameEn}**:\n> \`[Fill in: what was completed, key decisions, notes for next Agent]\``
181
+ : '';
182
+ return `### ${agent.emoji} ${agent.nameEn} — Step ${stepNum}/${total}: ${skill.nameEn.replace(/_/g, ' ')}
183
+
184
+ ${handoffNote}**Goal**: ${skill.descriptionEn ?? skill.description}
185
+
186
+ **Execution**:
187
+
188
+ ${stepsContent}
189
+
190
+ **Output Format**: ${skill.outputFormat}${handoffTo}`;
191
+ }).join('\n\n---\n\n');
192
+ const reportTemplate = buildEnReportTemplate(pipeline, skills, agents, participatingAgents, routing, context);
193
+ const startCmd = `**Begin: ${participatingAgents[0].emoji} ${participatingAgents[0].nameEn} executes Step 1 now.**`;
194
+ const snapshotBlock = snapshot ?? '';
195
+ return [header, snapshotBlock, '---', roster, '---', protocol, '---', `## 🔄 Execution Flow`, stepsSection, '---', reportTemplate, startCmd]
196
+ .filter(Boolean)
197
+ .join('\n\n');
198
+ }
199
+ function buildEnReportTemplate(pipeline, skills, agents, participatingAgents, routing, context) {
200
+ const agentSections = participatingAgents.map((agent) => {
201
+ const agentSkills = skills.filter((s) => {
202
+ const a = resolveAgent(s.id, agents, routing);
203
+ return a.id === agent.id;
204
+ });
205
+ const skillList = agentSkills.map((s) => `### ${s.nameEn.replace(/_/g, ' ')}\n[Full output]\n\n---`).join('\n\n');
206
+ return `## ${agent.emoji} ${agent.nameEn} Output\n\n${skillList}`;
207
+ }).join('\n\n');
208
+ return `## 📄 Final Output Requirements
209
+
210
+ After all steps complete, output this Multi-Agent Execution Report:
211
+
212
+ # Multi-Agent Execution Report — ${context}
213
+ > Pipeline: ${pipeline.name} | Agents: ${participatingAgents.map((a) => `${a.emoji} ${a.nameEn}`).join(' → ')}
214
+
215
+ ${agentSections}
216
+
217
+ *Auto-generated by Ethan Multi-Agent*`;
218
+ }
219
+ // ─── 工具函数 ──────────────────────────────────────────────────────────────
220
+ /**
221
+ * 构建 agentId → 步骤序号列表 的映射,用于 Agent 阵容表展示
222
+ */
223
+ function buildAgentStepMap(skills, agents, routing, _isEn) {
224
+ const map = {};
225
+ skills.forEach((skill, i) => {
226
+ const agent = resolveAgent(skill.id, agents, routing);
227
+ if (!map[agent.id])
228
+ map[agent.id] = [];
229
+ map[agent.id].push(i + 1);
230
+ });
231
+ return map;
232
+ }
233
+ //# sourceMappingURL=orchestrator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"orchestrator.js","sourceRoot":"","sources":["../../src/agents/orchestrator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=orchestrator.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"orchestrator.test.d.ts","sourceRoot":"","sources":["../../src/agents/orchestrator.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,151 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const vitest_1 = require("vitest");
4
+ const orchestrator_1 = require("./orchestrator");
5
+ const presets_1 = require("./presets");
6
+ // ─── Fixtures ───────────────────────────────────────────────────────────────
7
+ const mockSkills = [
8
+ {
9
+ id: 'requirement-understanding',
10
+ name: '需求理解',
11
+ nameEn: 'requirement_understanding',
12
+ description: '深度解析用户需求,输出结构化需求文档',
13
+ detailDescription: '深度解析',
14
+ triggers: ['需求理解'],
15
+ steps: [{ title: '1. 提取核心诉求', content: '用一句话总结业务目标' }],
16
+ outputFormat: 'Markdown 结构化文档',
17
+ order: 1,
18
+ },
19
+ {
20
+ id: 'implementation',
21
+ name: '执行实现',
22
+ nameEn: 'implementation',
23
+ description: '按设计方案逐步实现代码',
24
+ detailDescription: '实现代码',
25
+ triggers: ['执行实现'],
26
+ steps: [{ title: '1. 确认实现前提', content: '确认设计方案已确认' }],
27
+ outputFormat: '代码实现 + 自检清单',
28
+ order: 4,
29
+ },
30
+ {
31
+ id: 'code-review',
32
+ name: '代码审查',
33
+ nameEn: 'code_review',
34
+ description: '系统性审查代码变更',
35
+ detailDescription: '审查代码',
36
+ triggers: ['代码审查'],
37
+ steps: [{ title: '1. 理解变更意图', content: '阅读 PR 描述' }],
38
+ outputFormat: 'Markdown 审查报告',
39
+ order: 8,
40
+ },
41
+ ];
42
+ const mockPipeline = {
43
+ id: 'dev-workflow',
44
+ name: '开发工作流',
45
+ description: '需求理解 → 执行实现 → 代码审查',
46
+ skillIds: ['requirement-understanding', 'implementation', 'code-review'],
47
+ };
48
+ // ─── Tests ──────────────────────────────────────────────────────────────────
49
+ (0, vitest_1.describe)('buildMultiAgentPrompt (zh)', () => {
50
+ const prompt = (0, orchestrator_1.buildMultiAgentPrompt)(mockPipeline, mockSkills, presets_1.BUILT_IN_AGENTS, {
51
+ context: '开发用户登录功能',
52
+ lang: 'zh',
53
+ });
54
+ (0, vitest_1.it)('contains pipeline name', () => {
55
+ (0, vitest_1.expect)(prompt).toContain('开发工作流');
56
+ });
57
+ (0, vitest_1.it)('contains context', () => {
58
+ (0, vitest_1.expect)(prompt).toContain('开发用户登录功能');
59
+ });
60
+ (0, vitest_1.it)('contains Agent roster table', () => {
61
+ (0, vitest_1.expect)(prompt).toContain('Agent 阵容');
62
+ (0, vitest_1.expect)(prompt).toContain('Architect Agent');
63
+ (0, vitest_1.expect)(prompt).toContain('Code Agent');
64
+ (0, vitest_1.expect)(prompt).toContain('Review Agent');
65
+ });
66
+ (0, vitest_1.it)('contains collaboration protocol', () => {
67
+ (0, vitest_1.expect)(prompt).toContain('协作协议');
68
+ (0, vitest_1.expect)(prompt).toContain('Handoff 摘要');
69
+ });
70
+ (0, vitest_1.it)('contains step headings with agent names', () => {
71
+ (0, vitest_1.expect)(prompt).toContain('🏗️ Architect Agent');
72
+ (0, vitest_1.expect)(prompt).toContain('💻 Code Agent');
73
+ (0, vitest_1.expect)(prompt).toContain('🔍 Review Agent');
74
+ });
75
+ (0, vitest_1.it)('contains handoff markers between different agents', () => {
76
+ (0, vitest_1.expect)(prompt).toContain('Handoff →');
77
+ });
78
+ (0, vitest_1.it)('contains final report template', () => {
79
+ (0, vitest_1.expect)(prompt).toContain('Multi-Agent 执行报告');
80
+ });
81
+ (0, vitest_1.it)('contains start command', () => {
82
+ (0, vitest_1.expect)(prompt).toContain('立即开始执行');
83
+ });
84
+ });
85
+ (0, vitest_1.describe)('buildMultiAgentPrompt (en)', () => {
86
+ const prompt = (0, orchestrator_1.buildMultiAgentPrompt)(mockPipeline, mockSkills, presets_1.BUILT_IN_AGENTS, {
87
+ context: 'implement user login',
88
+ lang: 'en',
89
+ });
90
+ (0, vitest_1.it)('contains English headers', () => {
91
+ (0, vitest_1.expect)(prompt).toContain('Multi-Agent Orchestration');
92
+ (0, vitest_1.expect)(prompt).toContain('Agent Roster');
93
+ (0, vitest_1.expect)(prompt).toContain('Collaboration Protocol');
94
+ });
95
+ (0, vitest_1.it)('contains English start command', () => {
96
+ (0, vitest_1.expect)(prompt).toContain('Begin:');
97
+ });
98
+ });
99
+ (0, vitest_1.describe)('BUILT_IN_AGENTS', () => {
100
+ (0, vitest_1.it)('has 5 agents', () => {
101
+ (0, vitest_1.expect)(presets_1.BUILT_IN_AGENTS).toHaveLength(5);
102
+ });
103
+ (0, vitest_1.it)('all agents have required fields', () => {
104
+ for (const agent of presets_1.BUILT_IN_AGENTS) {
105
+ (0, vitest_1.expect)(agent.id).toBeTruthy();
106
+ (0, vitest_1.expect)(agent.name).toBeTruthy();
107
+ (0, vitest_1.expect)(agent.emoji).toBeTruthy();
108
+ (0, vitest_1.expect)(agent.role).toBeTruthy();
109
+ (0, vitest_1.expect)(agent.skillIds.length).toBeGreaterThan(0);
110
+ }
111
+ });
112
+ (0, vitest_1.it)('covers all 36 skills across agents', () => {
113
+ const ALL_SKILL_IDS = [
114
+ 'requirement-understanding', 'task-breakdown', 'solution-design', 'implementation',
115
+ 'progress-tracking', 'task-report', 'weekly-report', 'code-review', 'debug',
116
+ 'tech-research', 'api-design', 'security-review', 'deployment', 'prd',
117
+ 'git-workflow', 'unit-testing', 'system-design', 'database-optimize', 'docker',
118
+ 'cicd', 'performance', 'refactoring', 'observability', 'design-patterns',
119
+ 'spec-proposal', 'spec-review', 'tech-debt', 'api-mock', 'data-migration',
120
+ 'llm-feature', 'threat-model', 'green-code', 'service-catalog', 'mobile-review',
121
+ 'data-pipeline', 'ml-experiment',
122
+ ];
123
+ const coveredIds = new Set(presets_1.BUILT_IN_AGENTS.flatMap((a) => a.skillIds));
124
+ const uncovered = ALL_SKILL_IDS.filter((id) => !coveredIds.has(id));
125
+ (0, vitest_1.expect)(uncovered).toEqual([]);
126
+ });
127
+ });
128
+ (0, vitest_1.describe)('buildSkillRouting', () => {
129
+ (0, vitest_1.it)('maps each skillId to its agent', () => {
130
+ const routing = (0, presets_1.buildSkillRouting)(presets_1.BUILT_IN_AGENTS);
131
+ (0, vitest_1.expect)(routing['requirement-understanding']).toBe('architect');
132
+ (0, vitest_1.expect)(routing['implementation']).toBe('coder');
133
+ (0, vitest_1.expect)(routing['code-review']).toBe('reviewer');
134
+ (0, vitest_1.expect)(routing['deployment']).toBe('devops');
135
+ (0, vitest_1.expect)(routing['debug']).toBe('pm');
136
+ });
137
+ });
138
+ (0, vitest_1.describe)('getAgentsForPipeline', () => {
139
+ (0, vitest_1.it)('returns only agents participating in the pipeline', () => {
140
+ const routing = (0, presets_1.buildSkillRouting)(presets_1.BUILT_IN_AGENTS);
141
+ const agents = (0, presets_1.getAgentsForPipeline)(['requirement-understanding', 'implementation', 'code-review'], presets_1.BUILT_IN_AGENTS, routing);
142
+ (0, vitest_1.expect)(agents.map((a) => a.id)).toEqual(['architect', 'coder', 'reviewer']);
143
+ });
144
+ (0, vitest_1.it)('deduplicates consecutive same-agent steps', () => {
145
+ const routing = (0, presets_1.buildSkillRouting)(presets_1.BUILT_IN_AGENTS);
146
+ // Both solution-design and api-design belong to architect
147
+ const agents = (0, presets_1.getAgentsForPipeline)(['requirement-understanding', 'solution-design', 'api-design'], presets_1.BUILT_IN_AGENTS, routing);
148
+ (0, vitest_1.expect)(agents.map((a) => a.id)).toEqual(['architect']); // deduped
149
+ });
150
+ });
151
+ //# sourceMappingURL=orchestrator.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"orchestrator.test.js","sourceRoot":"","sources":["../../src/agents/orchestrator.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * 内置 Agent 预设定义
3
+ * 5 个标准 Agent,覆盖全部 36 个 Skill
4
+ */
5
+ import type { AgentDefinition } from './types';
6
+ export declare const BUILT_IN_AGENTS: AgentDefinition[];
7
+ /**
8
+ * 构建 skillId → agentId 的路由映射表
9
+ * 未匹配到任何 Agent 的 Skill 默认路由到 Code Agent
10
+ */
11
+ export declare function buildSkillRouting(agents: AgentDefinition[]): Record<string, string>;
12
+ /**
13
+ * 找出参与此 Pipeline 的实际 Agent(按步骤顺序去重)
14
+ */
15
+ export declare function getAgentsForPipeline(skillIds: string[], agents: AgentDefinition[], routing: Record<string, string>): AgentDefinition[];
16
+ //# sourceMappingURL=presets.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"presets.d.ts","sourceRoot":"","sources":["../../src/agents/presets.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAE/C,eAAO,MAAM,eAAe,EAAE,eAAe,EAkF5C,CAAC;AAEF;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,eAAe,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAQnF;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAClC,QAAQ,EAAE,MAAM,EAAE,EAClB,MAAM,EAAE,eAAe,EAAE,EACzB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC9B,eAAe,EAAE,CAcnB"}
@@ -0,0 +1,123 @@
1
+ "use strict";
2
+ /**
3
+ * 内置 Agent 预设定义
4
+ * 5 个标准 Agent,覆盖全部 36 个 Skill
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.BUILT_IN_AGENTS = void 0;
8
+ exports.buildSkillRouting = buildSkillRouting;
9
+ exports.getAgentsForPipeline = getAgentsForPipeline;
10
+ exports.BUILT_IN_AGENTS = [
11
+ {
12
+ id: 'architect',
13
+ name: 'Architect Agent',
14
+ nameEn: 'architect-agent',
15
+ emoji: '🏗️',
16
+ role: '负责需求分析、系统设计、接口设计与技术方案',
17
+ skillIds: [
18
+ 'requirement-understanding',
19
+ 'task-breakdown',
20
+ 'solution-design',
21
+ 'api-design',
22
+ 'system-design',
23
+ 'prd',
24
+ 'spec-proposal',
25
+ ],
26
+ },
27
+ {
28
+ id: 'coder',
29
+ name: 'Code Agent',
30
+ nameEn: 'code-agent',
31
+ emoji: '💻',
32
+ role: '负责代码实现、单元测试、重构与设计模式应用',
33
+ skillIds: [
34
+ 'implementation',
35
+ 'unit-testing',
36
+ 'refactoring',
37
+ 'design-patterns',
38
+ 'database-optimize',
39
+ 'api-mock',
40
+ 'data-migration',
41
+ 'llm-feature',
42
+ ],
43
+ },
44
+ {
45
+ id: 'reviewer',
46
+ name: 'Review Agent',
47
+ nameEn: 'review-agent',
48
+ emoji: '🔍',
49
+ role: '负责代码审查、安全审查、Spec 对齐验证与 Git 规范',
50
+ skillIds: [
51
+ 'code-review',
52
+ 'security-review',
53
+ 'spec-review',
54
+ 'git-workflow',
55
+ 'threat-model',
56
+ 'mobile-review',
57
+ 'tech-debt',
58
+ ],
59
+ },
60
+ {
61
+ id: 'devops',
62
+ name: 'DevOps Agent',
63
+ nameEn: 'devops-agent',
64
+ emoji: '🚀',
65
+ role: '负责部署上线、容器化、CI/CD、可观测性与性能优化',
66
+ skillIds: [
67
+ 'deployment',
68
+ 'docker',
69
+ 'cicd',
70
+ 'observability',
71
+ 'performance',
72
+ 'green-code',
73
+ 'data-pipeline',
74
+ 'ml-experiment',
75
+ ],
76
+ },
77
+ {
78
+ id: 'pm',
79
+ name: 'PM Agent',
80
+ nameEn: 'pm-agent',
81
+ emoji: '📊',
82
+ role: '负责进度跟踪、任务报告、周报生成、技术调研与故障排查',
83
+ skillIds: [
84
+ 'progress-tracking',
85
+ 'task-report',
86
+ 'weekly-report',
87
+ 'tech-research',
88
+ 'debug',
89
+ 'service-catalog',
90
+ ],
91
+ },
92
+ ];
93
+ /**
94
+ * 构建 skillId → agentId 的路由映射表
95
+ * 未匹配到任何 Agent 的 Skill 默认路由到 Code Agent
96
+ */
97
+ function buildSkillRouting(agents) {
98
+ const routing = {};
99
+ for (const agent of agents) {
100
+ for (const skillId of agent.skillIds) {
101
+ routing[skillId] = agent.id;
102
+ }
103
+ }
104
+ return routing;
105
+ }
106
+ /**
107
+ * 找出参与此 Pipeline 的实际 Agent(按步骤顺序去重)
108
+ */
109
+ function getAgentsForPipeline(skillIds, agents, routing) {
110
+ const seen = new Set();
111
+ const result = [];
112
+ const fallback = agents.find((a) => a.id === 'coder') ?? agents[0];
113
+ for (const skillId of skillIds) {
114
+ const agentId = routing[skillId] ?? fallback.id;
115
+ if (!seen.has(agentId)) {
116
+ seen.add(agentId);
117
+ const agent = agents.find((a) => a.id === agentId) ?? fallback;
118
+ result.push(agent);
119
+ }
120
+ }
121
+ return result;
122
+ }
123
+ //# sourceMappingURL=presets.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"presets.js","sourceRoot":"","sources":["../../src/agents/presets.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,29 @@
1
+ /**
2
+ * Multi-Agent 编排系统 — 类型定义
3
+ * Agent = 有角色定位的 Skill 执行者,多个 Agent 协作完成复杂工作流
4
+ */
5
+ export interface AgentDefinition {
6
+ /** 唯一标识符 */
7
+ id: string;
8
+ /** 显示名称(中文),如 "Architect Agent" */
9
+ name: string;
10
+ /** 英文名称 */
11
+ nameEn: string;
12
+ /** 角色 Emoji,如 "🏗️" */
13
+ emoji: string;
14
+ /** 角色职责描述(一句话),如 "负责需求分析、系统设计、技术方案" */
15
+ role: string;
16
+ /** 此 Agent 可执行的 Skill ID 列表 */
17
+ skillIds: string[];
18
+ }
19
+ export interface AgentOrchestrationOptions {
20
+ /** 任务背景描述 */
21
+ context: string;
22
+ /** 输出语言,默认 zh */
23
+ lang?: 'zh' | 'en';
24
+ /** 是否注入 ProjectSnapshot */
25
+ withContext?: boolean;
26
+ /** ProjectSnapshot 的格式化字符串(已渲染) */
27
+ snapshot?: string;
28
+ }
29
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/agents/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,WAAW,eAAe;IAC9B,YAAY;IACZ,EAAE,EAAE,MAAM,CAAC;IACX,mCAAmC;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,WAAW;IACX,MAAM,EAAE,MAAM,CAAC;IACf,uBAAuB;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,uCAAuC;IACvC,IAAI,EAAE,MAAM,CAAC;IACb,+BAA+B;IAC/B,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,MAAM,WAAW,yBAAyB;IACxC,aAAa;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,iBAAiB;IACjB,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;IACnB,2BAA2B;IAC3B,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,mCAAmC;IACnC,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB"}
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ /**
3
+ * Multi-Agent 编排系统 — 类型定义
4
+ * Agent = 有角色定位的 Skill 执行者,多个 Agent 协作完成复杂工作流
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/agents/types.ts"],"names":[],"mappings":";AAAA;;;GAGG"}