jarvis-agent-factory 4.3.0 → 4.3.1

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 (68) hide show
  1. package/dist/package.json +4 -2
  2. package/package.json +4 -2
  3. package/dist/tests/agent-registry.test.d.ts +0 -1
  4. package/dist/tests/agent-registry.test.js +0 -246
  5. package/dist/tests/agent-registry.test.js.map +0 -1
  6. package/dist/tests/cli-scope.test.d.ts +0 -1
  7. package/dist/tests/cli-scope.test.js +0 -66
  8. package/dist/tests/cli-scope.test.js.map +0 -1
  9. package/dist/tests/commands-api.test.d.ts +0 -1
  10. package/dist/tests/commands-api.test.js +0 -278
  11. package/dist/tests/commands-api.test.js.map +0 -1
  12. package/dist/tests/commands-filter.test.d.ts +0 -1
  13. package/dist/tests/commands-filter.test.js +0 -54
  14. package/dist/tests/commands-filter.test.js.map +0 -1
  15. package/dist/tests/db.test.d.ts +0 -1
  16. package/dist/tests/db.test.js +0 -481
  17. package/dist/tests/db.test.js.map +0 -1
  18. package/dist/tests/docs-api.test.d.ts +0 -1
  19. package/dist/tests/docs-api.test.js +0 -56
  20. package/dist/tests/docs-api.test.js.map +0 -1
  21. package/dist/tests/gates.test.d.ts +0 -1
  22. package/dist/tests/gates.test.js +0 -503
  23. package/dist/tests/gates.test.js.map +0 -1
  24. package/dist/tests/guardian.test.d.ts +0 -1
  25. package/dist/tests/guardian.test.js +0 -377
  26. package/dist/tests/guardian.test.js.map +0 -1
  27. package/dist/tests/hash-paths.test.d.ts +0 -1
  28. package/dist/tests/hash-paths.test.js +0 -51
  29. package/dist/tests/hash-paths.test.js.map +0 -1
  30. package/dist/tests/hook-cmd.test.d.ts +0 -1
  31. package/dist/tests/hook-cmd.test.js +0 -247
  32. package/dist/tests/hook-cmd.test.js.map +0 -1
  33. package/dist/tests/install-merge.test.d.ts +0 -1
  34. package/dist/tests/install-merge.test.js +0 -266
  35. package/dist/tests/install-merge.test.js.map +0 -1
  36. package/dist/tests/install-section-hash.test.d.ts +0 -1
  37. package/dist/tests/install-section-hash.test.js +0 -161
  38. package/dist/tests/install-section-hash.test.js.map +0 -1
  39. package/dist/tests/mcp-config.test.d.ts +0 -1
  40. package/dist/tests/mcp-config.test.js +0 -113
  41. package/dist/tests/mcp-config.test.js.map +0 -1
  42. package/dist/tests/mcp-platform-info.test.d.ts +0 -1
  43. package/dist/tests/mcp-platform-info.test.js +0 -144
  44. package/dist/tests/mcp-platform-info.test.js.map +0 -1
  45. package/dist/tests/pubsub.test.d.ts +0 -1
  46. package/dist/tests/pubsub.test.js +0 -166
  47. package/dist/tests/pubsub.test.js.map +0 -1
  48. package/dist/tests/quality-gate.test.d.ts +0 -1
  49. package/dist/tests/quality-gate.test.js +0 -324
  50. package/dist/tests/quality-gate.test.js.map +0 -1
  51. package/dist/tests/remove-fine-grained.test.d.ts +0 -1
  52. package/dist/tests/remove-fine-grained.test.js +0 -85
  53. package/dist/tests/remove-fine-grained.test.js.map +0 -1
  54. package/dist/tests/routes-emit.test.d.ts +0 -1
  55. package/dist/tests/routes-emit.test.js +0 -188
  56. package/dist/tests/routes-emit.test.js.map +0 -1
  57. package/dist/tests/server-emit.test.d.ts +0 -1
  58. package/dist/tests/server-emit.test.js +0 -230
  59. package/dist/tests/server-emit.test.js.map +0 -1
  60. package/dist/tests/server-error-handler.test.d.ts +0 -1
  61. package/dist/tests/server-error-handler.test.js +0 -185
  62. package/dist/tests/server-error-handler.test.js.map +0 -1
  63. package/dist/tests/server-mcp-core.test.d.ts +0 -1
  64. package/dist/tests/server-mcp-core.test.js +0 -275
  65. package/dist/tests/server-mcp-core.test.js.map +0 -1
  66. package/dist/tests/sse-broadcast.test.d.ts +0 -1
  67. package/dist/tests/sse-broadcast.test.js +0 -204
  68. package/dist/tests/sse-broadcast.test.js.map +0 -1
package/dist/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "jarvis-agent-factory",
3
- "version": "4.3.0",
3
+ "version": "4.3.1",
4
4
  "description": "Jarvis Agent Factory CLI — Claude Code 多智能体 AI 编程助手配置安装器 | Multi-agent AI coding assistant config installer for Claude Code",
5
5
  "keywords": [
6
6
  "jarvis",
@@ -33,12 +33,14 @@
33
33
  "node": ">=22.5"
34
34
  },
35
35
  "scripts": {
36
+ "clean": "node -e \"import{rmSync}from'fs';try{rmSync('dist',{recursive:true,force:true})}catch(e){}\"",
37
+ "prebuild": "npm run clean",
36
38
  "lint": "eslint src/ tests/",
37
39
  "lint:fix": "eslint --fix src/ tests/",
38
40
  "test": "vitest run",
39
41
  "test:watch": "vitest",
40
42
  "typecheck": "tsc --noEmit",
41
- "build": "tsc && node -e \"import{cpSync}from'fs';cpSync('package.json','dist/package.json');cpSync('src/templates','dist/src/templates',{recursive:true})\"",
43
+ "build": "tsc && node -e \"import{cpSync,rmSync}from'fs';cpSync('package.json','dist/package.json');cpSync('src/templates','dist/src/templates',{recursive:true});try{rmSync('dist/tests',{recursive:true,force:true})}catch(e){}\"",
42
44
  "build:web": "cd web && npm run build",
43
45
  "dev": "tsx src/cli/index.ts",
44
46
  "jarvis": "node dist/src/cli/index.js",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "jarvis-agent-factory",
3
- "version": "4.3.0",
3
+ "version": "4.3.1",
4
4
  "description": "Jarvis Agent Factory CLI — Claude Code 多智能体 AI 编程助手配置安装器 | Multi-agent AI coding assistant config installer for Claude Code",
5
5
  "keywords": [
6
6
  "jarvis",
@@ -33,12 +33,14 @@
33
33
  "node": ">=22.5"
34
34
  },
35
35
  "scripts": {
36
+ "clean": "node -e \"import{rmSync}from'fs';try{rmSync('dist',{recursive:true,force:true})}catch(e){}\"",
37
+ "prebuild": "npm run clean",
36
38
  "lint": "eslint src/ tests/",
37
39
  "lint:fix": "eslint --fix src/ tests/",
38
40
  "test": "vitest run",
39
41
  "test:watch": "vitest",
40
42
  "typecheck": "tsc --noEmit",
41
- "build": "tsc && node -e \"import{cpSync}from'fs';cpSync('package.json','dist/package.json');cpSync('src/templates','dist/src/templates',{recursive:true})\"",
43
+ "build": "tsc && node -e \"import{cpSync,rmSync}from'fs';cpSync('package.json','dist/package.json');cpSync('src/templates','dist/src/templates',{recursive:true});try{rmSync('dist/tests',{recursive:true,force:true})}catch(e){}\"",
42
44
  "build:web": "cd web && npm run build",
43
45
  "dev": "tsx src/cli/index.ts",
44
46
  "jarvis": "node dist/src/cli/index.js",
@@ -1 +0,0 @@
1
- export {};
@@ -1,246 +0,0 @@
1
- import { describe, it, expect, vi, beforeEach, beforeAll, afterAll } from 'vitest';
2
- import { resolveTemplatesDir, getAgentList, getAgentFiles, getCategories, } from '../src/engine/agent-registry.js';
3
- import { mkdirSync, writeFileSync, rmSync } from 'node:fs';
4
- import { join } from 'node:path';
5
- import { tmpdir } from 'node:os';
6
- // ---- 三层配置合并测试的固定目录 ----
7
- const MOCK_HOME = join(tmpdir(), 'jarvis-test-home-' + Date.now());
8
- const MOCK_PROJECT = join(tmpdir(), 'jarvis-test-project-' + Date.now());
9
- // Mock node:os homedir 指向测试临时目录
10
- vi.mock('node:os', async (importOriginal) => {
11
- const mod = await importOriginal();
12
- return {
13
- ...mod,
14
- homedir: () => MOCK_HOME,
15
- };
16
- });
17
- describe('resolveTemplatesDir', () => {
18
- it('dist 路径存在时优先返回 dist 路径', () => {
19
- const mockCheck = vi.fn().mockReturnValue(true);
20
- const dir = resolveTemplatesDir(mockCheck);
21
- // resolveTemplatesDir 优先检查的路径应包含 dist
22
- expect(mockCheck).toHaveBeenCalled();
23
- expect(dir).toContain('templates');
24
- expect(dir).toContain('platforms');
25
- });
26
- it('dist 路径不存在时回退到源码路径', () => {
27
- const mockCheck = vi.fn().mockReturnValue(false);
28
- const dir = resolveTemplatesDir(mockCheck);
29
- // 回退路径应包含 src
30
- expect(mockCheck).toHaveBeenCalled();
31
- expect(dir).toContain('src');
32
- expect(dir).toContain('templates');
33
- expect(dir).toContain('platforms');
34
- // 确认 dist 不在最终路径中(源码路径不含 dist)
35
- expect(dir).not.toContain('dist');
36
- });
37
- it('返回的路径是绝对路径', () => {
38
- const mockCheck = vi.fn().mockReturnValue(true);
39
- const dir = resolveTemplatesDir(mockCheck);
40
- expect(dir.startsWith('/') || /^[A-Z]:/.test(dir)).toBe(true);
41
- });
42
- });
43
- describe('getAgentList', () => {
44
- beforeEach(() => {
45
- // 强制重新扫描,确保惰性解析生效
46
- getAgentList(true);
47
- });
48
- it('返回非空 agent 列表', () => {
49
- const agents = getAgentList();
50
- expect(agents.length).toBeGreaterThan(0);
51
- });
52
- it('每个 agent 包含必要字段', () => {
53
- const agents = getAgentList();
54
- for (const a of agents) {
55
- expect(a).toHaveProperty('id');
56
- expect(a).toHaveProperty('name');
57
- expect(a).toHaveProperty('role');
58
- expect(a).toHaveProperty('icon');
59
- expect(a).toHaveProperty('platform');
60
- expect(a).toHaveProperty('defaultModel');
61
- expect(a).toHaveProperty('defaultEffort');
62
- expect(a).toHaveProperty('category');
63
- }
64
- });
65
- it('force=true 时重新扫描并返回与首次扫描相同数量', () => {
66
- const first = getAgentList();
67
- const second = getAgentList(true);
68
- expect(second.length).toBe(first.length);
69
- });
70
- it('仅覆盖 claude 平台(TASK-009:opencode/codex 已删除)', () => {
71
- const agents = getAgentList();
72
- const platforms = new Set(agents.map(a => a.platform));
73
- expect(platforms).toContain('claude');
74
- expect(platforms.size).toBe(1);
75
- });
76
- });
77
- describe('getAgentFiles', () => {
78
- it('返回非空文件映射', () => {
79
- const files = getAgentFiles();
80
- expect(files).not.toBeNull();
81
- expect(Object.keys(files).length).toBeGreaterThan(0);
82
- // 每个文件映射应包含 base 和 type
83
- for (const info of Object.values(files)) {
84
- expect(info).toHaveProperty('base');
85
- expect(info).toHaveProperty('type');
86
- expect(info.type).toBe('md');
87
- }
88
- });
89
- });
90
- describe('getCategories', () => {
91
- it('返回来源归属分类列表(无db时不含项目名、不含模板默认)', () => {
92
- const cats = getCategories();
93
- expect(cats).toContain('全部');
94
- expect(cats).toContain('全局配置');
95
- expect(cats).not.toContain('模板默认');
96
- });
97
- });
98
- // ---- 三层配置合并测试 ----
99
- describe('getAgentList 三层配置读取与合并', () => {
100
- /**
101
- * 夹具目录结构:
102
- * MOCK_HOME/.claude/agents/
103
- * - test-global-only.md → id=test-global-only(全局独有)
104
- * - backend-logic-expert.md → id=backend-logic-expert(覆写模板)
105
- *
106
- * MOCK_HOME/.config/opencode/agents/
107
- * - test-global.md → id=opencode-test-global(OpenCode 全局独有)
108
- *
109
- * MOCK_PROJECT/.claude/agents/
110
- * - test-project-only.md → id=test-project-only(项目独有)
111
- * - backend-logic-expert.md → id=backend-logic-expert(覆写全局+模板)
112
- */
113
- beforeAll(() => {
114
- // 全局配置:~/.claude/agents/
115
- const globalClaudeDir = join(MOCK_HOME, '.claude', 'agents');
116
- mkdirSync(globalClaudeDir, { recursive: true });
117
- // 全局独有智能体
118
- writeFileSync(join(globalClaudeDir, 'test-global-only.md'), `---
119
- name: test-global-only
120
- description: "全局独有测试智能体——不在模板中"
121
- model: deepseek-v4-pro
122
- effort: high
123
- ---
124
- `);
125
- // 覆写模板 backend-logic-expert 的全局版本
126
- writeFileSync(join(globalClaudeDir, 'backend-logic-expert.md'), `---
127
- name: global-backend-logic
128
- description: "全局层覆写——名称与模板不同"
129
- model: claude-sonnet-4-20250514
130
- effort: medium
131
- ---
132
- `);
133
- // TASK-009: opencode 全局配置目录不再被扫描
134
- // 项目配置:{projectRoot}/.claude/agents/
135
- const projectAgentsDir = join(MOCK_PROJECT, '.claude', 'agents');
136
- mkdirSync(projectAgentsDir, { recursive: true });
137
- // 项目独有智能体
138
- writeFileSync(join(projectAgentsDir, 'test-project-only.md'), `---
139
- name: test-project-only
140
- description: "项目独有测试智能体——不在模板/全局中"
141
- model: deepseek-v4-pro
142
- effort: high
143
- ---
144
- `);
145
- // 覆写 backend-logic-expert 的项目版本(优先级最高)
146
- writeFileSync(join(projectAgentsDir, 'backend-logic-expert.md'), `---
147
- name: project-backend-logic
148
- description: "项目层覆写——最终生效版本"
149
- model: claude-opus-4-20250514
150
- effort: max
151
- ---
152
- `);
153
- });
154
- afterAll(() => {
155
- // 清理临时目录
156
- try {
157
- rmSync(MOCK_HOME, { recursive: true, force: true });
158
- }
159
- catch { }
160
- try {
161
- rmSync(MOCK_PROJECT, { recursive: true, force: true });
162
- }
163
- catch { }
164
- });
165
- it('传入 projectRoot 时返回合并后的列表(含模板+全局+项目智能体)', () => {
166
- const agents = getAgentList(true, MOCK_PROJECT);
167
- const ids = new Set(agents.map(a => a.id));
168
- // 模板智能体仍在(未覆写的)
169
- expect(ids.has('algorithm-expert')).toBe(true);
170
- expect(ids.has('frontend-dev-expert')).toBe(true);
171
- // 全局独有智能体出现
172
- expect(ids.has('test-global-only')).toBe(true);
173
- // TASK-009: opencode 平台已删除,不再有 opencode 全局智能体
174
- // 项目独有智能体出现
175
- expect(ids.has('test-project-only')).toBe(true);
176
- });
177
- it('项目级配置覆写全局级同名智能体(backend-logic-expert)', () => {
178
- const agents = getAgentList(true, MOCK_PROJECT);
179
- const ble = agents.find(a => a.id === 'backend-logic-expert');
180
- expect(ble).toBeDefined();
181
- // 项目级覆写生效:名称、模型、effort 均为项目版本
182
- expect(ble.name).toBe('project-backend-logic');
183
- expect(ble.defaultModel).toBe('claude-opus-4-20250514');
184
- expect(ble.defaultEffort).toBe('max');
185
- });
186
- it('全局级配置覆写模板默认同名智能体(当无项目级时)', () => {
187
- // 使用不存在的 projectRoot,确保只有全局 + 模板
188
- const noProjectDir = join(tmpdir(), 'jarvis-test-no-project-' + Date.now());
189
- const agents = getAgentList(true, noProjectDir);
190
- const ble = agents.find(a => a.id === 'backend-logic-expert');
191
- expect(ble).toBeDefined();
192
- // 全局覆写生效:名称、模型、effort 均为全局版本
193
- expect(ble.name).toBe('global-backend-logic');
194
- expect(ble.defaultModel).toBe('claude-sonnet-4-20250514');
195
- expect(ble.defaultEffort).toBe('medium');
196
- // 清理
197
- try {
198
- rmSync(noProjectDir, { recursive: true, force: true });
199
- }
200
- catch { }
201
- });
202
- it('不传 projectRoot 时仅返回模板默认列表(向后兼容)', () => {
203
- const agents = getAgentList(true);
204
- const ids = new Set(agents.map(a => a.id));
205
- // 模板智能体存在
206
- expect(ids.has('algorithm-expert')).toBe(true);
207
- expect(ids.has('backend-logic-expert')).toBe(true);
208
- // 全局/项目独有智能体不应出现
209
- expect(ids.has('test-global-only')).toBe(false);
210
- expect(ids.has('test-project-only')).toBe(false);
211
- });
212
- it('projectRoot 变化时刷新缓存', () => {
213
- // 创建另一个项目目录,含不同的智能体
214
- const otherProject = join(tmpdir(), 'jarvis-test-other-' + Date.now());
215
- const otherAgentsDir = join(otherProject, '.claude', 'agents');
216
- mkdirSync(otherAgentsDir, { recursive: true });
217
- writeFileSync(join(otherAgentsDir, 'test-other-project.md'), `---
218
- name: test-other-project
219
- description: "另一个项目的智能体"
220
- model: deepseek-v4-pro
221
- effort: high
222
- ---
223
- `);
224
- // 先查询 MOCK_PROJECT
225
- const agents1 = getAgentList(true, MOCK_PROJECT);
226
- const ids1 = new Set(agents1.map(a => a.id));
227
- expect(ids1.has('test-project-only')).toBe(true);
228
- expect(ids1.has('test-other-project')).toBe(false);
229
- // 切换到 otherProject(缓存应刷新)
230
- const agents2 = getAgentList(false, otherProject);
231
- const ids2 = new Set(agents2.map(a => a.id));
232
- expect(ids2.has('test-project-only')).toBe(false);
233
- expect(ids2.has('test-other-project')).toBe(true);
234
- // 切回 MOCK_PROJECT
235
- const agents3 = getAgentList(false, MOCK_PROJECT);
236
- const ids3 = new Set(agents3.map(a => a.id));
237
- expect(ids3.has('test-project-only')).toBe(true);
238
- expect(ids3.has('test-other-project')).toBe(false);
239
- // 清理
240
- try {
241
- rmSync(otherProject, { recursive: true, force: true });
242
- }
243
- catch { }
244
- });
245
- });
246
- //# sourceMappingURL=agent-registry.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"agent-registry.test.js","sourceRoot":"","sources":["../../tests/agent-registry.test.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- export {};
@@ -1,66 +0,0 @@
1
- import { describe, it, expect, vi } from 'vitest';
2
- // 延迟导入:测试用 mock promptFn 注入,不触发真实 I/O
3
- // resolveScope 在 scope.ts 中定义,测试仅验证其逻辑分支
4
- describe('resolveScope', () => {
5
- // 动态 import 以便 vite 可以 tree-shake 并正确处理 ESM
6
- async function importScope() {
7
- return await import('../src/cli/utils/scope.js');
8
- }
9
- it('globalExplicit 为 true 时直接返回 true,不调用 promptFn', async () => {
10
- const { resolveScope } = await importScope();
11
- const mockPrompt = vi.fn().mockResolvedValue(false);
12
- const result = await resolveScope({ globalExplicit: true, global: true }, mockPrompt);
13
- expect(result).toBe(true);
14
- // globalExplicit 路径不应调用 promptFn
15
- expect(mockPrompt).not.toHaveBeenCalled();
16
- });
17
- it('globalExplicit 为 true 但 global 为 false 时返回 false', async () => {
18
- const { resolveScope } = await importScope();
19
- const mockPrompt = vi.fn().mockResolvedValue(false);
20
- const result = await resolveScope({ globalExplicit: true, global: false }, mockPrompt);
21
- expect(result).toBe(false);
22
- expect(mockPrompt).not.toHaveBeenCalled();
23
- });
24
- it('globalExplicit 为 false 时调用注入的 promptFn 并返回其结果', async () => {
25
- const { resolveScope } = await importScope();
26
- const mockPrompt = vi.fn().mockResolvedValue(true);
27
- const result = await resolveScope({ globalExplicit: false, global: false }, mockPrompt);
28
- expect(result).toBe(true);
29
- expect(mockPrompt).toHaveBeenCalledTimes(1);
30
- });
31
- it('未提供 globalExplicit 时视为 false,走 promptFn 路径', async () => {
32
- const { resolveScope } = await importScope();
33
- const mockPrompt = vi.fn().mockResolvedValue(false);
34
- const result = await resolveScope({}, mockPrompt);
35
- expect(result).toBe(false);
36
- expect(mockPrompt).toHaveBeenCalledTimes(1);
37
- });
38
- it('promptFn 返回 false 时 resolveScope 返回 false', async () => {
39
- const { resolveScope } = await importScope();
40
- const mockPrompt = vi.fn().mockResolvedValue(false);
41
- const result = await resolveScope({ globalExplicit: false, global: false }, mockPrompt);
42
- expect(result).toBe(false);
43
- });
44
- it('promptFn 返回 Promise<boolean> 正常 resolve', async () => {
45
- const { resolveScope } = await importScope();
46
- // 验证异步行为正确
47
- let called = false;
48
- const mockPrompt = async () => {
49
- called = true;
50
- return true;
51
- };
52
- const result = await resolveScope({}, mockPrompt);
53
- expect(result).toBe(true);
54
- expect(called).toBe(true);
55
- });
56
- });
57
- describe('promptScope', () => {
58
- // promptScope 是含真实 I/O 的默认实现,仅验证其函数签名存在
59
- it('promptScope 应为一个可导出的异步函数', async () => {
60
- const { promptScope } = await import('../src/cli/utils/scope.js');
61
- expect(typeof promptScope).toBe('function');
62
- // async 函数在 ES 规范中 constructor.name === 'AsyncFunction'
63
- expect(promptScope.constructor.name).toBe('AsyncFunction');
64
- });
65
- });
66
- //# sourceMappingURL=cli-scope.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"cli-scope.test.js","sourceRoot":"","sources":["../../tests/cli-scope.test.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- export {};