codingbuddy 0.0.0-dev.20251219022942.ae1c42d → 0.0.0-dev.20251219080524.57fa408

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 (79) hide show
  1. package/dist/src/analyzer/code.sampler.js +11 -16
  2. package/dist/src/analyzer/code.sampler.js.map +1 -1
  3. package/dist/src/analyzer/config.analyzer.js +7 -13
  4. package/dist/src/analyzer/config.analyzer.js.map +1 -1
  5. package/dist/src/analyzer/directory.analyzer.js +17 -21
  6. package/dist/src/analyzer/directory.analyzer.js.map +1 -1
  7. package/dist/src/analyzer/package.analyzer.js +5 -2
  8. package/dist/src/analyzer/package.analyzer.js.map +1 -1
  9. package/dist/src/config/config.schema.d.ts +0 -2
  10. package/dist/src/config/config.schema.js +0 -28
  11. package/dist/src/config/config.schema.js.map +1 -1
  12. package/dist/src/config/context.loader.d.ts +0 -1
  13. package/dist/src/config/context.loader.js +20 -27
  14. package/dist/src/config/context.loader.js.map +1 -1
  15. package/dist/src/config/ignore.parser.js +8 -10
  16. package/dist/src/config/ignore.parser.js.map +1 -1
  17. package/dist/src/config/index.d.ts +2 -2
  18. package/dist/src/config/index.js +1 -4
  19. package/dist/src/config/index.js.map +1 -1
  20. package/dist/src/shared/file.utils.d.ts +4 -0
  21. package/dist/src/shared/file.utils.js +37 -0
  22. package/dist/src/shared/file.utils.js.map +1 -0
  23. package/dist/src/shared/path.utils.d.ts +2 -0
  24. package/dist/src/shared/path.utils.js +14 -0
  25. package/dist/src/shared/path.utils.js.map +1 -0
  26. package/dist/tsconfig.build.tsbuildinfo +1 -0
  27. package/package.json +2 -2
  28. package/dist/src/analyzer/analyzer.service.spec.d.ts +0 -1
  29. package/dist/src/analyzer/analyzer.service.spec.js +0 -67
  30. package/dist/src/analyzer/analyzer.service.spec.js.map +0 -1
  31. package/dist/src/analyzer/code.sampler.spec.d.ts +0 -1
  32. package/dist/src/analyzer/code.sampler.spec.js +0 -157
  33. package/dist/src/analyzer/code.sampler.spec.js.map +0 -1
  34. package/dist/src/analyzer/config.analyzer.spec.d.ts +0 -1
  35. package/dist/src/analyzer/config.analyzer.spec.js +0 -146
  36. package/dist/src/analyzer/config.analyzer.spec.js.map +0 -1
  37. package/dist/src/analyzer/directory.analyzer.spec.d.ts +0 -1
  38. package/dist/src/analyzer/directory.analyzer.spec.js +0 -119
  39. package/dist/src/analyzer/directory.analyzer.spec.js.map +0 -1
  40. package/dist/src/analyzer/package.analyzer.spec.d.ts +0 -1
  41. package/dist/src/analyzer/package.analyzer.spec.js +0 -109
  42. package/dist/src/analyzer/package.analyzer.spec.js.map +0 -1
  43. package/dist/src/cli/cli.spec.d.ts +0 -1
  44. package/dist/src/cli/cli.spec.js +0 -84
  45. package/dist/src/cli/cli.spec.js.map +0 -1
  46. package/dist/src/cli/init/config.generator.spec.d.ts +0 -1
  47. package/dist/src/cli/init/config.generator.spec.js +0 -182
  48. package/dist/src/cli/init/config.generator.spec.js.map +0 -1
  49. package/dist/src/cli/init/config.writer.spec.d.ts +0 -1
  50. package/dist/src/cli/init/config.writer.spec.js +0 -112
  51. package/dist/src/cli/init/config.writer.spec.js.map +0 -1
  52. package/dist/src/cli/init/init.command.spec.d.ts +0 -1
  53. package/dist/src/cli/init/init.command.spec.js +0 -227
  54. package/dist/src/cli/init/init.command.spec.js.map +0 -1
  55. package/dist/src/cli/init/prompt.builder.spec.d.ts +0 -1
  56. package/dist/src/cli/init/prompt.builder.spec.js +0 -199
  57. package/dist/src/cli/init/prompt.builder.spec.js.map +0 -1
  58. package/dist/src/cli/utils/console.spec.d.ts +0 -1
  59. package/dist/src/cli/utils/console.spec.js +0 -100
  60. package/dist/src/cli/utils/console.spec.js.map +0 -1
  61. package/dist/src/config/config.loader.spec.d.ts +0 -1
  62. package/dist/src/config/config.loader.spec.js +0 -86
  63. package/dist/src/config/config.loader.spec.js.map +0 -1
  64. package/dist/src/config/config.schema.spec.d.ts +0 -1
  65. package/dist/src/config/config.schema.spec.js +0 -235
  66. package/dist/src/config/config.schema.spec.js.map +0 -1
  67. package/dist/src/config/context.loader.spec.d.ts +0 -1
  68. package/dist/src/config/context.loader.spec.js +0 -123
  69. package/dist/src/config/context.loader.spec.js.map +0 -1
  70. package/dist/src/config/ignore.parser.spec.d.ts +0 -1
  71. package/dist/src/config/ignore.parser.spec.js +0 -130
  72. package/dist/src/config/ignore.parser.spec.js.map +0 -1
  73. package/dist/src/keyword/keyword.service.spec.d.ts +0 -1
  74. package/dist/src/keyword/keyword.service.spec.js +0 -225
  75. package/dist/src/keyword/keyword.service.spec.js.map +0 -1
  76. package/dist/src/mcp/mcp.service.spec.d.ts +0 -1
  77. package/dist/src/mcp/mcp.service.spec.js +0 -262
  78. package/dist/src/mcp/mcp.service.spec.js.map +0 -1
  79. package/dist/tsconfig.tsbuildinfo +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"ignore.parser.spec.js","sourceRoot":"","sources":["../../../src/config/ignore.parser.spec.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- export {};
@@ -1,225 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const vitest_1 = require("vitest");
4
- const keyword_service_1 = require("./keyword.service");
5
- const mockConfig = {
6
- modes: {
7
- PLAN: {
8
- description: 'Task planning and design phase',
9
- instructions: 'Design first approach.',
10
- rules: ['rules/core.md'],
11
- },
12
- ACT: {
13
- description: 'Actual task execution phase',
14
- instructions: 'Red-Green-Refactor cycle.',
15
- rules: ['rules/core.md', 'rules/project.md'],
16
- },
17
- EVAL: {
18
- description: 'Result review and assessment phase',
19
- instructions: 'Code quality review.',
20
- rules: ['rules/core.md'],
21
- },
22
- },
23
- defaultMode: 'PLAN',
24
- };
25
- const mockRulesContent = {
26
- 'rules/core.md': '# Core Rules\nCore content here.',
27
- 'rules/project.md': '# Project Rules\nProject content here.',
28
- };
29
- (0, vitest_1.describe)('KeywordService', () => {
30
- let service;
31
- let mockLoadConfig;
32
- let mockLoadRule;
33
- (0, vitest_1.beforeEach)(() => {
34
- mockLoadConfig = vitest_1.vi.fn().mockResolvedValue(mockConfig);
35
- mockLoadRule = vitest_1.vi.fn().mockImplementation((path) => {
36
- const content = mockRulesContent[path];
37
- if (content)
38
- return Promise.resolve(content);
39
- return Promise.reject(new Error(`File not found: ${path}`));
40
- });
41
- service = new keyword_service_1.KeywordService(mockLoadConfig, mockLoadRule);
42
- });
43
- (0, vitest_1.describe)('parseMode', () => {
44
- (0, vitest_1.describe)('normal cases - each keyword', () => {
45
- (0, vitest_1.it)('parses PLAN keyword', async () => {
46
- const result = await service.parseMode('PLAN design auth feature');
47
- (0, vitest_1.expect)(result.mode).toBe('PLAN');
48
- (0, vitest_1.expect)(result.originalPrompt).toBe('design auth feature');
49
- (0, vitest_1.expect)(result.instructions).toBe('Design first approach.');
50
- (0, vitest_1.expect)(result.rules).toHaveLength(1);
51
- (0, vitest_1.expect)(result.rules[0].name).toBe('rules/core.md');
52
- (0, vitest_1.expect)(result.warnings).toBeUndefined();
53
- });
54
- (0, vitest_1.it)('parses ACT keyword', async () => {
55
- const result = await service.parseMode('ACT implement login API');
56
- (0, vitest_1.expect)(result.mode).toBe('ACT');
57
- (0, vitest_1.expect)(result.originalPrompt).toBe('implement login API');
58
- (0, vitest_1.expect)(result.instructions).toBe('Red-Green-Refactor cycle.');
59
- (0, vitest_1.expect)(result.rules).toHaveLength(2);
60
- });
61
- (0, vitest_1.it)('parses EVAL keyword', async () => {
62
- const result = await service.parseMode('EVAL review security');
63
- (0, vitest_1.expect)(result.mode).toBe('EVAL');
64
- (0, vitest_1.expect)(result.originalPrompt).toBe('review security');
65
- (0, vitest_1.expect)(result.instructions).toBe('Code quality review.');
66
- });
67
- });
68
- (0, vitest_1.describe)('case insensitive - each keyword', () => {
69
- (0, vitest_1.it)('parses plan (lowercase)', async () => {
70
- const result = await service.parseMode('plan design feature');
71
- (0, vitest_1.expect)(result.mode).toBe('PLAN');
72
- (0, vitest_1.expect)(result.originalPrompt).toBe('design feature');
73
- });
74
- (0, vitest_1.it)('parses act (lowercase)', async () => {
75
- const result = await service.parseMode('act implement feature');
76
- (0, vitest_1.expect)(result.mode).toBe('ACT');
77
- });
78
- (0, vitest_1.it)('parses eval (lowercase)', async () => {
79
- const result = await service.parseMode('eval review code');
80
- (0, vitest_1.expect)(result.mode).toBe('EVAL');
81
- });
82
- (0, vitest_1.it)('parses Plan (capitalized)', async () => {
83
- const result = await service.parseMode('Plan design feature');
84
- (0, vitest_1.expect)(result.mode).toBe('PLAN');
85
- });
86
- (0, vitest_1.it)('parses pLaN (mixed case)', async () => {
87
- const result = await service.parseMode('pLaN design feature');
88
- (0, vitest_1.expect)(result.mode).toBe('PLAN');
89
- });
90
- });
91
- (0, vitest_1.describe)('default value cases', () => {
92
- (0, vitest_1.it)('defaults to PLAN with warning when no keyword', async () => {
93
- const result = await service.parseMode('design auth feature');
94
- (0, vitest_1.expect)(result.mode).toBe('PLAN');
95
- (0, vitest_1.expect)(result.originalPrompt).toBe('design auth feature');
96
- (0, vitest_1.expect)(result.warnings).toContain('No keyword found, defaulting to PLAN');
97
- });
98
- (0, vitest_1.it)('defaults to PLAN with warning for empty string', async () => {
99
- const result = await service.parseMode('');
100
- (0, vitest_1.expect)(result.mode).toBe('PLAN');
101
- (0, vitest_1.expect)(result.originalPrompt).toBe('');
102
- (0, vitest_1.expect)(result.warnings).toContain('No keyword found, defaulting to PLAN');
103
- });
104
- (0, vitest_1.it)('defaults to PLAN with warning for whitespace only', async () => {
105
- const result = await service.parseMode(' ');
106
- (0, vitest_1.expect)(result.mode).toBe('PLAN');
107
- (0, vitest_1.expect)(result.originalPrompt).toBe('');
108
- (0, vitest_1.expect)(result.warnings).toContain('No keyword found, defaulting to PLAN');
109
- });
110
- });
111
- (0, vitest_1.describe)('warning cases', () => {
112
- (0, vitest_1.it)('uses first keyword with warning for multiple keywords', async () => {
113
- const result = await service.parseMode('PLAN ACT implement feature');
114
- (0, vitest_1.expect)(result.mode).toBe('PLAN');
115
- (0, vitest_1.expect)(result.originalPrompt).toBe('ACT implement feature');
116
- (0, vitest_1.expect)(result.warnings).toContain('Multiple keywords found, using first');
117
- });
118
- (0, vitest_1.it)('warns when no content after keyword', async () => {
119
- const result = await service.parseMode('PLAN');
120
- (0, vitest_1.expect)(result.mode).toBe('PLAN');
121
- (0, vitest_1.expect)(result.originalPrompt).toBe('');
122
- (0, vitest_1.expect)(result.warnings).toContain('No prompt content after keyword');
123
- });
124
- (0, vitest_1.it)('warns when only whitespace after keyword', async () => {
125
- const result = await service.parseMode('PLAN ');
126
- (0, vitest_1.expect)(result.mode).toBe('PLAN');
127
- (0, vitest_1.expect)(result.originalPrompt).toBe('');
128
- (0, vitest_1.expect)(result.warnings).toContain('No prompt content after keyword');
129
- });
130
- });
131
- (0, vitest_1.describe)('edge cases', () => {
132
- (0, vitest_1.it)('does not recognize keyword in middle of prompt', async () => {
133
- const result = await service.parseMode('Please PLAN this feature');
134
- (0, vitest_1.expect)(result.mode).toBe('PLAN');
135
- (0, vitest_1.expect)(result.originalPrompt).toBe('Please PLAN this feature');
136
- (0, vitest_1.expect)(result.warnings).toContain('No keyword found, defaulting to PLAN');
137
- });
138
- (0, vitest_1.it)('distinguishes from similar words (PLANNING)', async () => {
139
- const result = await service.parseMode('PLANNING session today');
140
- (0, vitest_1.expect)(result.mode).toBe('PLAN');
141
- (0, vitest_1.expect)(result.originalPrompt).toBe('PLANNING session today');
142
- (0, vitest_1.expect)(result.warnings).toContain('No keyword found, defaulting to PLAN');
143
- });
144
- (0, vitest_1.it)('distinguishes from similar words (ACTION)', async () => {
145
- const result = await service.parseMode('ACTION items for today');
146
- (0, vitest_1.expect)(result.mode).toBe('PLAN');
147
- (0, vitest_1.expect)(result.originalPrompt).toBe('ACTION items for today');
148
- (0, vitest_1.expect)(result.warnings).toContain('No keyword found, defaulting to PLAN');
149
- });
150
- (0, vitest_1.it)('handles special characters in prompt', async () => {
151
- const result = await service.parseMode('PLAN design @feature #auth!');
152
- (0, vitest_1.expect)(result.mode).toBe('PLAN');
153
- (0, vitest_1.expect)(result.originalPrompt).toBe('design @feature #auth!');
154
- });
155
- (0, vitest_1.it)('handles newlines in prompt', async () => {
156
- const result = await service.parseMode('PLAN design feature\nwith auth');
157
- (0, vitest_1.expect)(result.mode).toBe('PLAN');
158
- (0, vitest_1.expect)(result.originalPrompt).toBe('design feature\nwith auth');
159
- });
160
- (0, vitest_1.it)('handles tabs in prompt', async () => {
161
- const result = await service.parseMode('PLAN\tdesign feature');
162
- (0, vitest_1.expect)(result.mode).toBe('PLAN');
163
- (0, vitest_1.expect)(result.originalPrompt).toBe('design feature');
164
- });
165
- });
166
- });
167
- (0, vitest_1.describe)('loadModeConfig', () => {
168
- (0, vitest_1.it)('loads keyword-modes.json successfully', async () => {
169
- const config = await service.loadModeConfig();
170
- (0, vitest_1.expect)(config).toEqual(mockConfig);
171
- (0, vitest_1.expect)(mockLoadConfig).toHaveBeenCalled();
172
- });
173
- (0, vitest_1.it)('uses default config when file not found', async () => {
174
- mockLoadConfig = vitest_1.vi.fn().mockRejectedValue(new Error('File not found'));
175
- service = new keyword_service_1.KeywordService(mockLoadConfig, mockLoadRule);
176
- const config = await service.loadModeConfig();
177
- (0, vitest_1.expect)(config.defaultMode).toBe('PLAN');
178
- (0, vitest_1.expect)(config.modes.PLAN).toBeDefined();
179
- (0, vitest_1.expect)(config.modes.ACT).toBeDefined();
180
- (0, vitest_1.expect)(config.modes.EVAL).toBeDefined();
181
- });
182
- (0, vitest_1.it)('uses default config with warning for invalid JSON', async () => {
183
- mockLoadConfig = vitest_1.vi.fn().mockRejectedValue(new SyntaxError('Invalid JSON'));
184
- service = new keyword_service_1.KeywordService(mockLoadConfig, mockLoadRule);
185
- const config = await service.loadModeConfig();
186
- (0, vitest_1.expect)(config.defaultMode).toBe('PLAN');
187
- });
188
- });
189
- (0, vitest_1.describe)('getRulesForMode', () => {
190
- (0, vitest_1.it)('returns PLAN mode rules bundle', async () => {
191
- const rules = await service.getRulesForMode('PLAN');
192
- (0, vitest_1.expect)(rules).toHaveLength(1);
193
- (0, vitest_1.expect)(rules[0].name).toBe('rules/core.md');
194
- (0, vitest_1.expect)(rules[0].content).toBe('# Core Rules\nCore content here.');
195
- });
196
- (0, vitest_1.it)('returns ACT mode rules bundle', async () => {
197
- const rules = await service.getRulesForMode('ACT');
198
- (0, vitest_1.expect)(rules).toHaveLength(2);
199
- (0, vitest_1.expect)(rules[0].name).toBe('rules/core.md');
200
- (0, vitest_1.expect)(rules[1].name).toBe('rules/project.md');
201
- });
202
- (0, vitest_1.it)('returns EVAL mode rules bundle', async () => {
203
- const rules = await service.getRulesForMode('EVAL');
204
- (0, vitest_1.expect)(rules).toHaveLength(1);
205
- (0, vitest_1.expect)(rules[0].name).toBe('rules/core.md');
206
- });
207
- (0, vitest_1.it)('skips missing rule file with warning', async () => {
208
- mockLoadConfig = vitest_1.vi.fn().mockResolvedValue({
209
- ...mockConfig,
210
- modes: {
211
- ...mockConfig.modes,
212
- PLAN: {
213
- ...mockConfig.modes.PLAN,
214
- rules: ['rules/core.md', 'rules/missing.md'],
215
- },
216
- },
217
- });
218
- service = new keyword_service_1.KeywordService(mockLoadConfig, mockLoadRule);
219
- const rules = await service.getRulesForMode('PLAN');
220
- (0, vitest_1.expect)(rules).toHaveLength(1);
221
- (0, vitest_1.expect)(rules[0].name).toBe('rules/core.md');
222
- });
223
- });
224
- });
225
- //# sourceMappingURL=keyword.service.spec.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"keyword.service.spec.js","sourceRoot":"","sources":["../../../src/keyword/keyword.service.spec.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- export {};
@@ -1,262 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const vitest_1 = require("vitest");
4
- const { handlers } = vitest_1.vi.hoisted(() => ({
5
- handlers: new Map(),
6
- }));
7
- vitest_1.vi.mock('@modelcontextprotocol/sdk/server/index.js', () => ({
8
- Server: class MockServer {
9
- constructor() {
10
- }
11
- setRequestHandler(schema, handler) {
12
- const s = schema;
13
- const method = s?.shape?.method?._def?.value;
14
- if (method) {
15
- handlers.set(method, handler);
16
- }
17
- }
18
- async connect() {
19
- }
20
- },
21
- }));
22
- vitest_1.vi.mock('@modelcontextprotocol/sdk/server/stdio.js', () => ({
23
- StdioServerTransport: class MockTransport {
24
- },
25
- }));
26
- const createMockRulesService = () => ({
27
- listAgents: vitest_1.vi.fn().mockResolvedValue(['frontend-developer', 'code-reviewer']),
28
- getRuleContent: vitest_1.vi.fn().mockResolvedValue('# Core Rules\nSome content...'),
29
- getAgent: vitest_1.vi.fn().mockResolvedValue({
30
- id: 'frontend-developer',
31
- name: 'Frontend Developer',
32
- role: 'Frontend development specialist',
33
- goals: ['Write clean code', 'Follow best practices'],
34
- workflow: ['Analyze requirements', 'Implement solution'],
35
- }),
36
- searchRules: vitest_1.vi.fn().mockResolvedValue([]),
37
- });
38
- const createMockKeywordService = () => ({
39
- parseMode: vitest_1.vi.fn().mockResolvedValue({
40
- mode: 'PLAN',
41
- cleanedPrompt: 'Create a login form',
42
- instructions: 'Plan the implementation',
43
- rules: { core: 'Some rules' },
44
- warnings: [],
45
- }),
46
- });
47
- const createMockConfigService = (config = {}) => ({
48
- getProjectConfig: vitest_1.vi.fn().mockResolvedValue({
49
- settings: config,
50
- ignorePatterns: ['node_modules', '.git'],
51
- contextFiles: [],
52
- sources: {
53
- config: '/test/codingbuddy.config.js',
54
- ignore: null,
55
- context: null,
56
- },
57
- }),
58
- getSettings: vitest_1.vi.fn().mockResolvedValue(config),
59
- getLanguage: vitest_1.vi.fn().mockResolvedValue(config.language),
60
- getFormattedContext: vitest_1.vi.fn().mockResolvedValue(''),
61
- });
62
- const mcp_service_1 = require("./mcp.service");
63
- (0, vitest_1.describe)('McpService', () => {
64
- let mockRulesService;
65
- let mockKeywordService;
66
- let mockConfigService;
67
- const testConfig = {
68
- language: 'ko',
69
- projectName: 'Test Project',
70
- techStack: {
71
- frontend: ['React', 'TypeScript'],
72
- },
73
- architecture: {
74
- pattern: 'feature-sliced-design',
75
- },
76
- };
77
- (0, vitest_1.beforeEach)(() => {
78
- handlers.clear();
79
- mockRulesService = createMockRulesService();
80
- mockKeywordService = createMockKeywordService();
81
- mockConfigService = createMockConfigService(testConfig);
82
- const mcpService = new mcp_service_1.McpService(mockRulesService, mockKeywordService, mockConfigService);
83
- mcpService.onModuleInit();
84
- });
85
- (0, vitest_1.describe)('Resources', () => {
86
- (0, vitest_1.it)('should list config://project resource', async () => {
87
- const handler = handlers.get('resources/list');
88
- (0, vitest_1.expect)(handler).toBeDefined();
89
- const result = (await handler({}));
90
- const configResource = result.resources.find(r => r.uri === 'config://project');
91
- (0, vitest_1.expect)(configResource).toBeDefined();
92
- (0, vitest_1.expect)(configResource.name).toBe('Project Configuration');
93
- });
94
- (0, vitest_1.it)('should read config://project resource', async () => {
95
- const handler = handlers.get('resources/read');
96
- (0, vitest_1.expect)(handler).toBeDefined();
97
- const result = (await handler({
98
- params: { uri: 'config://project' },
99
- }));
100
- (0, vitest_1.expect)(result.contents).toHaveLength(1);
101
- (0, vitest_1.expect)(result.contents[0].uri).toBe('config://project');
102
- (0, vitest_1.expect)(result.contents[0].mimeType).toBe('application/json');
103
- const parsedContent = JSON.parse(result.contents[0].text);
104
- (0, vitest_1.expect)(parsedContent.settings.language).toBe('ko');
105
- (0, vitest_1.expect)(parsedContent.settings.projectName).toBe('Test Project');
106
- });
107
- (0, vitest_1.it)('should read rules:// resources', async () => {
108
- const handler = handlers.get('resources/read');
109
- (0, vitest_1.expect)(handler).toBeDefined();
110
- const result = (await handler({
111
- params: { uri: 'rules://rules/core.md' },
112
- }));
113
- (0, vitest_1.expect)(result.contents).toHaveLength(1);
114
- (0, vitest_1.expect)(result.contents[0].text).toContain('Core Rules');
115
- });
116
- });
117
- (0, vitest_1.describe)('Tools', () => {
118
- (0, vitest_1.it)('should list get_project_config tool', async () => {
119
- const handler = handlers.get('tools/list');
120
- (0, vitest_1.expect)(handler).toBeDefined();
121
- const result = (await handler({}));
122
- const configTool = result.tools.find(t => t.name === 'get_project_config');
123
- (0, vitest_1.expect)(configTool).toBeDefined();
124
- (0, vitest_1.expect)(configTool.description).toContain('project configuration');
125
- });
126
- (0, vitest_1.it)('should call get_project_config tool', async () => {
127
- const handler = handlers.get('tools/call');
128
- (0, vitest_1.expect)(handler).toBeDefined();
129
- const result = (await handler({
130
- params: { name: 'get_project_config', arguments: {} },
131
- }));
132
- (0, vitest_1.expect)(result.content).toHaveLength(1);
133
- (0, vitest_1.expect)(result.content[0].type).toBe('text');
134
- const parsedContent = JSON.parse(result.content[0].text);
135
- (0, vitest_1.expect)(parsedContent.language).toBe('ko');
136
- (0, vitest_1.expect)(parsedContent.projectName).toBe('Test Project');
137
- (0, vitest_1.expect)(parsedContent.techStack.frontend).toContain('React');
138
- });
139
- (0, vitest_1.it)('should call search_rules tool', async () => {
140
- const handler = handlers.get('tools/call');
141
- (0, vitest_1.expect)(handler).toBeDefined();
142
- const result = (await handler({
143
- params: { name: 'search_rules', arguments: { query: 'test' } },
144
- }));
145
- (0, vitest_1.expect)(result.content).toHaveLength(1);
146
- (0, vitest_1.expect)(mockRulesService.searchRules).toHaveBeenCalledWith('test');
147
- });
148
- (0, vitest_1.it)('should call get_agent_details tool', async () => {
149
- const handler = handlers.get('tools/call');
150
- (0, vitest_1.expect)(handler).toBeDefined();
151
- const result = (await handler({
152
- params: { name: 'get_agent_details', arguments: { agentName: 'frontend-developer' } },
153
- }));
154
- (0, vitest_1.expect)(result.content).toHaveLength(1);
155
- const parsed = JSON.parse(result.content[0].text);
156
- (0, vitest_1.expect)(parsed.name).toBe('Frontend Developer');
157
- });
158
- (0, vitest_1.it)('should include language setting in parse_mode response', async () => {
159
- const handler = handlers.get('tools/call');
160
- (0, vitest_1.expect)(handler).toBeDefined();
161
- const result = (await handler({
162
- params: {
163
- name: 'parse_mode',
164
- arguments: { prompt: 'PLAN Create a login form' },
165
- },
166
- }));
167
- (0, vitest_1.expect)(result.content).toHaveLength(1);
168
- const parsedContent = JSON.parse(result.content[0].text);
169
- (0, vitest_1.expect)(parsedContent.language).toBe('ko');
170
- (0, vitest_1.expect)(parsedContent.mode).toBe('PLAN');
171
- });
172
- });
173
- (0, vitest_1.describe)('Prompts', () => {
174
- (0, vitest_1.it)('should list activate_agent prompt', async () => {
175
- const handler = handlers.get('prompts/list');
176
- (0, vitest_1.expect)(handler).toBeDefined();
177
- const result = (await handler({}));
178
- const agentPrompt = result.prompts.find(p => p.name === 'activate_agent');
179
- (0, vitest_1.expect)(agentPrompt).toBeDefined();
180
- });
181
- (0, vitest_1.it)('should include project context in activate_agent prompt', async () => {
182
- const handler = handlers.get('prompts/get');
183
- (0, vitest_1.expect)(handler).toBeDefined();
184
- const result = (await handler({
185
- params: {
186
- name: 'activate_agent',
187
- arguments: { role: 'frontend-developer' },
188
- },
189
- }));
190
- (0, vitest_1.expect)(result.messages).toHaveLength(1);
191
- const messageText = result.messages[0].content.text;
192
- (0, vitest_1.expect)(messageText).toContain('Frontend Developer');
193
- (0, vitest_1.expect)(messageText).toContain('Write clean code');
194
- (0, vitest_1.expect)(messageText).toContain('Project Context');
195
- (0, vitest_1.expect)(messageText).toContain('Test Project');
196
- (0, vitest_1.expect)(messageText).toContain('ko');
197
- (0, vitest_1.expect)(messageText).toContain('React');
198
- (0, vitest_1.expect)(messageText).toContain('feature-sliced-design');
199
- });
200
- (0, vitest_1.it)('should work without project config (graceful fallback)', async () => {
201
- handlers.clear();
202
- const emptyConfigService = createMockConfigService({});
203
- const serviceWithEmptyConfig = new mcp_service_1.McpService(mockRulesService, mockKeywordService, emptyConfigService);
204
- serviceWithEmptyConfig.onModuleInit();
205
- const handler = handlers.get('prompts/get');
206
- (0, vitest_1.expect)(handler).toBeDefined();
207
- const result = (await handler({
208
- params: {
209
- name: 'activate_agent',
210
- arguments: { role: 'frontend-developer' },
211
- },
212
- }));
213
- (0, vitest_1.expect)(result.messages).toHaveLength(1);
214
- (0, vitest_1.expect)(result.messages[0].content.text).toContain('Frontend Developer');
215
- });
216
- });
217
- (0, vitest_1.describe)('formatProjectContext', () => {
218
- (0, vitest_1.it)('should format all config fields', async () => {
219
- handlers.clear();
220
- const fullConfigService = createMockConfigService({
221
- projectName: 'Full Project',
222
- language: 'en',
223
- techStack: {
224
- frontend: ['Vue', 'Vite'],
225
- backend: ['Node', 'Express'],
226
- languages: ['TypeScript'],
227
- database: ['PostgreSQL'],
228
- },
229
- architecture: {
230
- pattern: 'clean-architecture',
231
- },
232
- testStrategy: {
233
- approach: 'tdd',
234
- },
235
- conventions: {
236
- style: 'airbnb',
237
- },
238
- });
239
- const service = new mcp_service_1.McpService(mockRulesService, mockKeywordService, fullConfigService);
240
- service.onModuleInit();
241
- const handler = handlers.get('prompts/get');
242
- (0, vitest_1.expect)(handler).toBeDefined();
243
- const result = (await handler({
244
- params: {
245
- name: 'activate_agent',
246
- arguments: { role: 'frontend-developer' },
247
- },
248
- }));
249
- const text = result.messages[0].content.text;
250
- (0, vitest_1.expect)(text).toContain('Full Project');
251
- (0, vitest_1.expect)(text).toContain('en');
252
- (0, vitest_1.expect)(text).toContain('Vue');
253
- (0, vitest_1.expect)(text).toContain('Node');
254
- (0, vitest_1.expect)(text).toContain('TypeScript');
255
- (0, vitest_1.expect)(text).toContain('PostgreSQL');
256
- (0, vitest_1.expect)(text).toContain('clean-architecture');
257
- (0, vitest_1.expect)(text).toContain('tdd');
258
- (0, vitest_1.expect)(text).toContain('airbnb');
259
- });
260
- });
261
- });
262
- //# sourceMappingURL=mcp.service.spec.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"mcp.service.spec.js","sourceRoot":"","sources":["../../../src/mcp/mcp.service.spec.ts"],"names":[],"mappings":"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"}