codingbuddy 1.3.1 → 2.1.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 (173) hide show
  1. package/dist/src/agent/agent-prompt.builder.d.ts +5 -0
  2. package/dist/src/agent/agent-prompt.builder.js +84 -0
  3. package/dist/src/agent/agent-prompt.builder.js.map +1 -0
  4. package/dist/src/agent/agent.module.d.ts +2 -0
  5. package/dist/src/agent/agent.module.js +23 -0
  6. package/dist/src/agent/agent.module.js.map +1 -0
  7. package/dist/src/agent/agent.service.d.ts +15 -0
  8. package/dist/src/agent/agent.service.js +103 -0
  9. package/dist/src/agent/agent.service.js.map +1 -0
  10. package/dist/src/agent/agent.types.d.ts +29 -0
  11. package/dist/src/agent/agent.types.js +31 -0
  12. package/dist/src/agent/agent.types.js.map +1 -0
  13. package/dist/src/agent/index.d.ts +4 -0
  14. package/dist/src/agent/index.js +21 -0
  15. package/dist/src/agent/index.js.map +1 -0
  16. package/dist/src/app.module.js +12 -1
  17. package/dist/src/app.module.js.map +1 -1
  18. package/dist/src/checklist/checklist.module.d.ts +2 -0
  19. package/dist/src/checklist/checklist.module.js +29 -0
  20. package/dist/src/checklist/checklist.module.js.map +1 -0
  21. package/dist/src/checklist/checklist.schema.d.ts +14 -0
  22. package/dist/src/checklist/checklist.schema.js +189 -0
  23. package/dist/src/checklist/checklist.schema.js.map +1 -0
  24. package/dist/src/checklist/checklist.service.d.ts +21 -0
  25. package/dist/src/checklist/checklist.service.js +258 -0
  26. package/dist/src/checklist/checklist.service.js.map +1 -0
  27. package/dist/src/checklist/checklist.types.d.ts +56 -0
  28. package/dist/src/checklist/checklist.types.js +24 -0
  29. package/dist/src/checklist/checklist.types.js.map +1 -0
  30. package/dist/src/checklist/index.d.ts +3 -0
  31. package/dist/src/checklist/index.js +20 -0
  32. package/dist/src/checklist/index.js.map +1 -0
  33. package/dist/src/cli/cli.types.d.ts +1 -6
  34. package/dist/src/cli/index.d.ts +1 -1
  35. package/dist/src/cli/index.js.map +1 -1
  36. package/dist/src/cli/init/config.generator.d.ts +1 -0
  37. package/dist/src/cli/init/config.generator.js +10 -2
  38. package/dist/src/cli/init/config.generator.js.map +1 -1
  39. package/dist/src/cli/init/init.command.js +19 -1
  40. package/dist/src/cli/init/init.command.js.map +1 -1
  41. package/dist/src/cli/init/prompts/agent-prompt.d.ts +9 -0
  42. package/dist/src/cli/init/prompts/agent-prompt.js +28 -0
  43. package/dist/src/cli/init/prompts/agent-prompt.js.map +1 -0
  44. package/dist/src/cli/init/prompts/index.d.ts +7 -0
  45. package/dist/src/cli/init/prompts/index.js +16 -0
  46. package/dist/src/cli/init/prompts/index.js.map +1 -0
  47. package/dist/src/cli/init/prompts/language-prompt.d.ts +8 -0
  48. package/dist/src/cli/init/prompts/language-prompt.js +30 -0
  49. package/dist/src/cli/init/prompts/language-prompt.js.map +1 -0
  50. package/dist/src/cli/init/prompts/model-prompt.d.ts +8 -0
  51. package/dist/src/cli/init/prompts/model-prompt.js +36 -0
  52. package/dist/src/cli/init/prompts/model-prompt.js.map +1 -0
  53. package/dist/src/cli/init/templates/template.renderer.js +21 -1
  54. package/dist/src/cli/init/templates/template.renderer.js.map +1 -1
  55. package/dist/src/cli/init/templates/template.types.d.ts +2 -0
  56. package/dist/src/config/config.schema.d.ts +9 -0
  57. package/dist/src/config/config.schema.js +6 -1
  58. package/dist/src/config/config.schema.js.map +1 -1
  59. package/dist/src/context/context.module.d.ts +2 -0
  60. package/dist/src/context/context.module.js +23 -0
  61. package/dist/src/context/context.module.js.map +1 -0
  62. package/dist/src/context/context.service.d.ts +21 -0
  63. package/dist/src/context/context.service.js +286 -0
  64. package/dist/src/context/context.service.js.map +1 -0
  65. package/dist/src/context/context.types.d.ts +50 -0
  66. package/dist/src/context/context.types.js +42 -0
  67. package/dist/src/context/context.types.js.map +1 -0
  68. package/dist/src/context/index.d.ts +3 -0
  69. package/dist/src/context/index.js +20 -0
  70. package/dist/src/context/index.js.map +1 -0
  71. package/dist/src/context/intent-patterns.d.ts +7 -0
  72. package/dist/src/context/intent-patterns.js +50 -0
  73. package/dist/src/context/intent-patterns.js.map +1 -0
  74. package/dist/src/keyword/activation-message.builder.d.ts +14 -0
  75. package/dist/src/keyword/activation-message.builder.js +80 -0
  76. package/dist/src/keyword/activation-message.builder.js.map +1 -0
  77. package/dist/src/keyword/keyword.module.js +39 -4
  78. package/dist/src/keyword/keyword.module.js.map +1 -1
  79. package/dist/src/keyword/keyword.service.d.ts +18 -3
  80. package/dist/src/keyword/keyword.service.js +146 -53
  81. package/dist/src/keyword/keyword.service.js.map +1 -1
  82. package/dist/src/keyword/keyword.types.d.ts +61 -0
  83. package/dist/src/keyword/keyword.types.js +83 -1
  84. package/dist/src/keyword/keyword.types.js.map +1 -1
  85. package/dist/src/keyword/primary-agent-resolver.d.ts +30 -0
  86. package/dist/src/keyword/primary-agent-resolver.js +376 -0
  87. package/dist/src/keyword/primary-agent-resolver.js.map +1 -0
  88. package/dist/src/keyword/rule-filter.d.ts +3 -0
  89. package/dist/src/keyword/rule-filter.js +64 -0
  90. package/dist/src/keyword/rule-filter.js.map +1 -0
  91. package/dist/src/mcp/handlers/agent.handler.d.ts +11 -0
  92. package/dist/src/mcp/handlers/agent.handler.js +167 -0
  93. package/dist/src/mcp/handlers/agent.handler.js.map +1 -0
  94. package/dist/src/mcp/handlers/base.handler.d.ts +15 -0
  95. package/dist/src/mcp/handlers/base.handler.js +3 -0
  96. package/dist/src/mcp/handlers/base.handler.js.map +1 -0
  97. package/dist/src/mcp/handlers/checklist-context.handler.d.ts +13 -0
  98. package/dist/src/mcp/handlers/checklist-context.handler.js +141 -0
  99. package/dist/src/mcp/handlers/checklist-context.handler.js.map +1 -0
  100. package/dist/src/mcp/handlers/config.handler.d.ts +15 -0
  101. package/dist/src/mcp/handlers/config.handler.js +104 -0
  102. package/dist/src/mcp/handlers/config.handler.js.map +1 -0
  103. package/dist/src/mcp/handlers/index.d.ts +8 -0
  104. package/dist/src/mcp/handlers/index.js +17 -0
  105. package/dist/src/mcp/handlers/index.js.map +1 -0
  106. package/dist/src/mcp/handlers/mode.handler.d.ts +16 -0
  107. package/dist/src/mcp/handlers/mode.handler.js +100 -0
  108. package/dist/src/mcp/handlers/mode.handler.js.map +1 -0
  109. package/dist/src/mcp/handlers/rules.handler.d.ts +11 -0
  110. package/dist/src/mcp/handlers/rules.handler.js +99 -0
  111. package/dist/src/mcp/handlers/rules.handler.js.map +1 -0
  112. package/dist/src/mcp/handlers/skill.handler.d.ts +11 -0
  113. package/dist/src/mcp/handlers/skill.handler.js +111 -0
  114. package/dist/src/mcp/handlers/skill.handler.js.map +1 -0
  115. package/dist/src/mcp/mcp-serverless.d.ts +0 -2
  116. package/dist/src/mcp/mcp-serverless.js +19 -29
  117. package/dist/src/mcp/mcp-serverless.js.map +1 -1
  118. package/dist/src/mcp/mcp.module.js +29 -1
  119. package/dist/src/mcp/mcp.module.js.map +1 -1
  120. package/dist/src/mcp/mcp.service.d.ts +3 -18
  121. package/dist/src/mcp/mcp.service.js +13 -216
  122. package/dist/src/mcp/mcp.service.js.map +1 -1
  123. package/dist/src/mcp/response.utils.d.ts +10 -0
  124. package/dist/src/mcp/response.utils.js +16 -0
  125. package/dist/src/mcp/response.utils.js.map +1 -0
  126. package/dist/src/model/index.d.ts +4 -0
  127. package/dist/src/model/index.js +23 -0
  128. package/dist/src/model/index.js.map +1 -0
  129. package/dist/src/model/model-resolver.service.d.ts +13 -0
  130. package/dist/src/model/model-resolver.service.js +63 -0
  131. package/dist/src/model/model-resolver.service.js.map +1 -0
  132. package/dist/src/model/model.constants.d.ts +4 -0
  133. package/dist/src/model/model.constants.js +8 -0
  134. package/dist/src/model/model.constants.js.map +1 -0
  135. package/dist/src/model/model.resolver.d.ts +7 -0
  136. package/dist/src/model/model.resolver.js +56 -0
  137. package/dist/src/model/model.resolver.js.map +1 -0
  138. package/dist/src/model/model.types.d.ts +17 -0
  139. package/dist/src/model/model.types.js +11 -0
  140. package/dist/src/model/model.types.js.map +1 -0
  141. package/dist/src/rules/agent.schema.d.ts +15 -0
  142. package/dist/src/rules/agent.schema.js +9 -0
  143. package/dist/src/rules/agent.schema.js.map +1 -1
  144. package/dist/src/shared/agent.utils.d.ts +1 -0
  145. package/dist/src/shared/agent.utils.js +14 -0
  146. package/dist/src/shared/agent.utils.js.map +1 -0
  147. package/dist/src/shared/filesystem.interface.d.ts +15 -0
  148. package/dist/src/shared/filesystem.interface.js +14 -0
  149. package/dist/src/shared/filesystem.interface.js.map +1 -0
  150. package/dist/src/shared/language.service.d.ts +9 -0
  151. package/dist/src/shared/language.service.js +108 -0
  152. package/dist/src/shared/language.service.js.map +1 -0
  153. package/dist/src/shared/language.types.d.ts +12 -0
  154. package/dist/src/shared/language.types.js +3 -0
  155. package/dist/src/shared/language.types.js.map +1 -0
  156. package/dist/src/shared/node-filesystem.service.d.ts +5 -0
  157. package/dist/src/shared/node-filesystem.service.js +25 -0
  158. package/dist/src/shared/node-filesystem.service.js.map +1 -0
  159. package/dist/src/shared/path.utils.js.map +1 -1
  160. package/dist/src/shared/pattern-matcher.d.ts +11 -0
  161. package/dist/src/shared/pattern-matcher.js +39 -0
  162. package/dist/src/shared/pattern-matcher.js.map +1 -0
  163. package/dist/src/shared/security.utils.d.ts +17 -0
  164. package/dist/src/shared/security.utils.js +63 -0
  165. package/dist/src/shared/security.utils.js.map +1 -1
  166. package/dist/src/shared/validation.constants.d.ts +10 -0
  167. package/dist/src/shared/validation.constants.js +42 -1
  168. package/dist/src/shared/validation.constants.js.map +1 -1
  169. package/dist/tsconfig.build.tsbuildinfo +1 -1
  170. package/package.json +4 -2
  171. package/dist/src/config/config.types.d.ts +0 -2
  172. package/dist/src/config/config.types.js +0 -6
  173. package/dist/src/config/config.types.js.map +0 -1
@@ -1,7 +1,10 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.KeywordService = void 0;
4
+ const common_1 = require("@nestjs/common");
4
5
  const keyword_types_1 = require("./keyword.types");
6
+ const activation_message_builder_1 = require("./activation-message.builder");
7
+ const rule_filter_1 = require("./rule-filter");
5
8
  const DEFAULT_CONFIG = {
6
9
  modes: {
7
10
  PLAN: {
@@ -9,14 +12,20 @@ const DEFAULT_CONFIG = {
9
12
  instructions: 'Design first approach. Define test cases from TDD perspective. Review architecture before implementation.',
10
13
  rules: ['rules/core.md', 'rules/augmented-coding.md'],
11
14
  agent: keyword_types_1.MODE_AGENTS[0],
12
- delegates_to: 'frontend-developer',
15
+ defaultSpecialists: [
16
+ 'architecture-specialist',
17
+ 'test-strategy-specialist',
18
+ ],
13
19
  },
14
20
  ACT: {
15
21
  description: 'Actual task execution phase',
16
22
  instructions: 'Follow Red-Green-Refactor cycle. Implement minimally then improve incrementally. Verify quality standards.',
17
23
  rules: ['rules/core.md', 'rules/project.md', 'rules/augmented-coding.md'],
18
24
  agent: keyword_types_1.MODE_AGENTS[1],
19
- delegates_to: 'frontend-developer',
25
+ defaultSpecialists: [
26
+ 'code-quality-specialist',
27
+ 'test-strategy-specialist',
28
+ ],
20
29
  },
21
30
  EVAL: {
22
31
  description: 'Result review and assessment phase',
@@ -24,88 +33,151 @@ const DEFAULT_CONFIG = {
24
33
  rules: ['rules/core.md', 'rules/augmented-coding.md'],
25
34
  agent: keyword_types_1.MODE_AGENTS[2],
26
35
  delegates_to: 'code-reviewer',
36
+ defaultSpecialists: [
37
+ 'security-specialist',
38
+ 'accessibility-specialist',
39
+ 'performance-specialist',
40
+ 'code-quality-specialist',
41
+ ],
27
42
  },
28
43
  },
29
44
  defaultMode: 'PLAN',
30
45
  };
31
46
  class KeywordService {
32
- constructor(loadConfigFn, loadRuleFn, loadAgentInfoFn) {
47
+ constructor(loadConfigFn, loadRuleFn, loadAgentInfoFn, primaryAgentResolver) {
33
48
  this.loadConfigFn = loadConfigFn;
34
49
  this.loadRuleFn = loadRuleFn;
35
50
  this.loadAgentInfoFn = loadAgentInfoFn;
51
+ this.logger = new common_1.Logger(KeywordService.name);
36
52
  this.configCache = null;
53
+ this.primaryAgentResolver = primaryAgentResolver;
37
54
  }
38
- async parseMode(prompt) {
55
+ async parseMode(prompt, options) {
39
56
  const config = await this.loadModeConfig();
57
+ const { mode, originalPrompt, warnings } = this.extractModeFromPrompt(prompt, config.defaultMode);
58
+ const modeConfig = config.modes[mode];
59
+ const rules = await this.getRulesForMode(mode);
60
+ const effectiveRecommendedAgent = mode === 'ACT' ? options?.recommendedActAgent : undefined;
61
+ return this.buildParseModeResult(mode, originalPrompt, warnings, modeConfig, rules, config, options?.context, effectiveRecommendedAgent);
62
+ }
63
+ extractModeFromPrompt(prompt, defaultMode) {
40
64
  const warnings = [];
41
65
  const trimmed = prompt.trim();
42
66
  const parts = trimmed.split(/\s+/);
43
67
  const firstWord = parts[0] ?? '';
44
68
  const firstWordUpper = firstWord.toUpperCase();
45
- let mode;
46
- let originalPrompt;
47
69
  const isEnglishKeyword = keyword_types_1.KEYWORDS.includes(firstWordUpper);
48
70
  const localizedMode = keyword_types_1.LOCALIZED_KEYWORD_MAP[firstWord] ?? keyword_types_1.LOCALIZED_KEYWORD_MAP[firstWordUpper];
49
71
  if (isEnglishKeyword) {
50
- mode = firstWordUpper;
51
- originalPrompt = trimmed.slice(firstWord.length).trim();
52
- if (parts.length > 1) {
53
- const secondWord = parts[1];
54
- const secondWordUpper = secondWord.toUpperCase();
55
- const isSecondKeyword = keyword_types_1.KEYWORDS.includes(secondWordUpper) ||
56
- keyword_types_1.LOCALIZED_KEYWORD_MAP[secondWord] !== undefined ||
57
- keyword_types_1.LOCALIZED_KEYWORD_MAP[secondWordUpper] !== undefined;
58
- if (isSecondKeyword) {
59
- warnings.push('Multiple keywords found, using first');
60
- }
61
- }
62
- if (originalPrompt === '') {
63
- warnings.push('No prompt content after keyword');
64
- }
72
+ const mode = firstWordUpper;
73
+ const originalPrompt = trimmed.slice(firstWord.length).trim();
74
+ this.checkForMultipleKeywords(parts, warnings);
75
+ this.checkForEmptyContent(originalPrompt, warnings);
76
+ return { mode, originalPrompt, warnings };
65
77
  }
66
- else if (localizedMode) {
67
- mode = localizedMode;
68
- originalPrompt = trimmed.slice(firstWord.length).trim();
69
- if (parts.length > 1) {
70
- const secondWord = parts[1];
71
- const secondWordUpper = secondWord.toUpperCase();
72
- const isSecondKeyword = keyword_types_1.KEYWORDS.includes(secondWordUpper) ||
73
- keyword_types_1.LOCALIZED_KEYWORD_MAP[secondWord] !== undefined ||
74
- keyword_types_1.LOCALIZED_KEYWORD_MAP[secondWordUpper] !== undefined;
75
- if (isSecondKeyword) {
76
- warnings.push('Multiple keywords found, using first');
77
- }
78
- }
79
- if (originalPrompt === '') {
80
- warnings.push('No prompt content after keyword');
81
- }
78
+ if (localizedMode) {
79
+ const originalPrompt = trimmed.slice(firstWord.length).trim();
80
+ this.checkForMultipleKeywords(parts, warnings);
81
+ this.checkForEmptyContent(originalPrompt, warnings);
82
+ return { mode: localizedMode, originalPrompt, warnings };
82
83
  }
83
- else {
84
- mode = config.defaultMode;
85
- originalPrompt = trimmed;
86
- warnings.push('No keyword found, defaulting to PLAN');
84
+ warnings.push('No keyword found, defaulting to PLAN');
85
+ return { mode: defaultMode, originalPrompt: trimmed, warnings };
86
+ }
87
+ checkForMultipleKeywords(parts, warnings) {
88
+ if (parts.length <= 1)
89
+ return;
90
+ const secondWord = parts[1];
91
+ const secondWordUpper = secondWord.toUpperCase();
92
+ const isSecondKeyword = keyword_types_1.KEYWORDS.includes(secondWordUpper) ||
93
+ keyword_types_1.LOCALIZED_KEYWORD_MAP[secondWord] !== undefined ||
94
+ keyword_types_1.LOCALIZED_KEYWORD_MAP[secondWordUpper] !== undefined;
95
+ if (isSecondKeyword) {
96
+ warnings.push('Multiple keywords found, using first');
87
97
  }
88
- const modeConfig = config.modes[mode];
89
- const rules = await this.getRulesForMode(mode);
98
+ }
99
+ checkForEmptyContent(originalPrompt, warnings) {
100
+ if (originalPrompt === '') {
101
+ warnings.push('No prompt content after keyword');
102
+ }
103
+ }
104
+ async buildParseModeResult(mode, originalPrompt, warnings, modeConfig, rules, config, context, recommendedActAgent) {
105
+ const filteredRules = (0, rule_filter_1.filterRulesByMode)(rules, mode);
90
106
  const result = {
91
107
  mode,
92
108
  originalPrompt,
93
109
  instructions: modeConfig.instructions,
94
- rules,
110
+ rules: filteredRules,
95
111
  ...(warnings.length > 0 ? { warnings } : {}),
96
112
  };
97
113
  if (modeConfig.agent) {
98
114
  result.agent = modeConfig.agent;
99
115
  }
100
- if (modeConfig.delegates_to) {
101
- result.delegates_to = modeConfig.delegates_to;
102
- const delegateAgentInfo = await this.getAgentInfo(modeConfig.delegates_to);
116
+ const resolvedAgent = await this.resolvePrimaryAgent(mode, originalPrompt, modeConfig.delegates_to, context, recommendedActAgent);
117
+ if (resolvedAgent) {
118
+ result.delegates_to = resolvedAgent.agentName;
119
+ result.primary_agent_source = resolvedAgent.source;
120
+ const delegateAgentInfo = await this.getAgentInfo(resolvedAgent.agentName);
103
121
  if (delegateAgentInfo) {
104
122
  result.delegate_agent_info = delegateAgentInfo;
105
123
  }
106
124
  }
125
+ const parallelAgentsRecommendation = this.getParallelAgentsRecommendation(mode, config);
126
+ if (parallelAgentsRecommendation) {
127
+ result.parallelAgentsRecommendation = parallelAgentsRecommendation;
128
+ }
129
+ if (mode === 'PLAN' && this.primaryAgentResolver) {
130
+ const actRecommendation = await this.getActAgentRecommendation(originalPrompt);
131
+ if (actRecommendation) {
132
+ result.recommended_act_agent = actRecommendation;
133
+ result.available_act_agents = [...keyword_types_1.ACT_PRIMARY_AGENTS];
134
+ }
135
+ }
136
+ if (resolvedAgent) {
137
+ const tier = this.getPrimaryAgentTier(resolvedAgent.agentName);
138
+ const activationMessage = activation_message_builder_1.ActivationMessageBuilder.forPrimaryAgent(resolvedAgent.agentName);
139
+ if (tier === 'specialist') {
140
+ result.activation_message = activation_message_builder_1.ActivationMessageBuilder.forSpecialistAgent(resolvedAgent.agentName);
141
+ }
142
+ else {
143
+ result.activation_message = activationMessage;
144
+ }
145
+ }
107
146
  return result;
108
147
  }
148
+ getPrimaryAgentTier(agentName) {
149
+ return keyword_types_1.ALL_PRIMARY_AGENTS_LIST.includes(agentName)
150
+ ? 'primary'
151
+ : 'specialist';
152
+ }
153
+ getParallelAgentsRecommendation(mode, config) {
154
+ const modeConfig = config.modes[mode];
155
+ const specialists = modeConfig?.defaultSpecialists;
156
+ if (!specialists || specialists.length === 0) {
157
+ return undefined;
158
+ }
159
+ return {
160
+ specialists: [...specialists],
161
+ hint: `Use Task tool with subagent_type="general-purpose" and run_in_background=true for each specialist. Call prepare_parallel_agents MCP tool to get ready-to-use prompts.`,
162
+ };
163
+ }
164
+ async getActAgentRecommendation(prompt) {
165
+ if (!this.primaryAgentResolver) {
166
+ return undefined;
167
+ }
168
+ try {
169
+ const result = await this.primaryAgentResolver.resolve('ACT', prompt);
170
+ return {
171
+ agentName: result.agentName,
172
+ reason: result.reason,
173
+ confidence: result.confidence,
174
+ };
175
+ }
176
+ catch (error) {
177
+ this.logger.debug(`Failed to get ACT agent recommendation: ${error instanceof Error ? error.message : 'Unknown error'}`);
178
+ return undefined;
179
+ }
180
+ }
109
181
  async loadModeConfig() {
110
182
  if (this.configCache) {
111
183
  return this.configCache;
@@ -114,7 +186,8 @@ class KeywordService {
114
186
  this.configCache = await this.loadConfigFn();
115
187
  return this.configCache;
116
188
  }
117
- catch {
189
+ catch (error) {
190
+ this.logger.debug(`Failed to load mode config, using defaults: ${error instanceof Error ? error.message : 'Unknown error'}`);
118
191
  this.configCache = DEFAULT_CONFIG;
119
192
  return DEFAULT_CONFIG;
120
193
  }
@@ -128,7 +201,8 @@ class KeywordService {
128
201
  const content = await this.loadRuleFn(rulePath);
129
202
  rules.push({ name: rulePath, content });
130
203
  }
131
- catch {
204
+ catch (error) {
205
+ this.logger.debug(`Skipping rule file '${rulePath}': ${error instanceof Error ? error.message : 'Unknown error'}`);
132
206
  }
133
207
  }
134
208
  return rules;
@@ -139,16 +213,35 @@ class KeywordService {
139
213
  }
140
214
  try {
141
215
  const agentData = await this.loadAgentInfoFn(agentName);
216
+ if (!agentData || typeof agentData !== 'object') {
217
+ return undefined;
218
+ }
219
+ const agent = agentData;
220
+ const role = agent.role;
142
221
  return {
143
- name: agentData.name || agentName,
144
- description: agentData.description || '',
145
- expertise: agentData.role?.expertise || [],
222
+ name: typeof agent.name === 'string' ? agent.name : agentName,
223
+ description: typeof agent.description === 'string' ? agent.description : '',
224
+ expertise: Array.isArray(role?.expertise) ? role.expertise : [],
146
225
  };
147
226
  }
148
- catch {
227
+ catch (error) {
228
+ this.logger.debug(`Failed to load agent info for '${agentName}': ${error instanceof Error ? error.message : 'Unknown error'}`);
149
229
  return undefined;
150
230
  }
151
231
  }
232
+ async resolvePrimaryAgent(mode, prompt, staticDelegatesTo, context, recommendedActAgent) {
233
+ if (this.primaryAgentResolver) {
234
+ const result = await this.primaryAgentResolver.resolve(mode, prompt, context, recommendedActAgent);
235
+ return { agentName: result.agentName, source: result.source };
236
+ }
237
+ if (staticDelegatesTo) {
238
+ return { agentName: staticDelegatesTo, source: 'default' };
239
+ }
240
+ if (mode !== 'EVAL') {
241
+ return { agentName: keyword_types_1.DEFAULT_ACT_AGENT, source: 'default' };
242
+ }
243
+ return null;
244
+ }
152
245
  }
153
246
  exports.KeywordService = KeywordService;
154
247
  //# sourceMappingURL=keyword.service.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"keyword.service.js","sourceRoot":"","sources":["../../../src/keyword/keyword.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"keyword.service.js","sourceRoot":"","sources":["../../../src/keyword/keyword.service.ts"],"names":[],"mappings":"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"}
@@ -2,7 +2,31 @@ export declare const KEYWORDS: readonly ["PLAN", "ACT", "EVAL"];
2
2
  export type Mode = (typeof KEYWORDS)[number];
3
3
  export declare const MODE_AGENTS: readonly ["plan-mode", "act-mode", "eval-mode"];
4
4
  export type ModeAgent = (typeof MODE_AGENTS)[number];
5
+ export declare const PLAN_PRIMARY_AGENTS: readonly ["solution-architect", "technical-planner"];
6
+ export declare const ACT_PRIMARY_AGENTS: readonly ["tooling-engineer", "data-engineer", "mobile-developer", "frontend-developer", "backend-developer", "devops-engineer", "agent-architect"];
7
+ export declare const EVAL_PRIMARY_AGENT: "code-reviewer";
8
+ export declare const DEFAULT_ACT_AGENT: "frontend-developer";
9
+ export declare const ALL_PRIMARY_AGENTS: readonly ["solution-architect", "technical-planner", "tooling-engineer", "data-engineer", "mobile-developer", "frontend-developer", "backend-developer", "devops-engineer", "agent-architect", "code-reviewer"];
10
+ export type PlanPrimaryAgent = (typeof PLAN_PRIMARY_AGENTS)[number];
11
+ export type ActPrimaryAgent = (typeof ACT_PRIMARY_AGENTS)[number];
12
+ export type PrimaryAgent = (typeof ALL_PRIMARY_AGENTS)[number];
13
+ export declare const PLAN_PRIMARY_AGENTS_LIST: string[];
14
+ export declare const ACT_PRIMARY_AGENTS_LIST: string[];
15
+ export declare const ALL_PRIMARY_AGENTS_LIST: string[];
16
+ export interface AgentDisplayInfo {
17
+ name: string;
18
+ description: string;
19
+ }
20
+ export declare const ACT_AGENT_DISPLAY_INFO: Record<ActPrimaryAgent, AgentDisplayInfo>;
5
21
  export declare const LOCALIZED_KEYWORD_MAP: Record<string, Mode>;
22
+ export interface LanguageDisplayInfo {
23
+ name: string;
24
+ nativeName: string;
25
+ description: string;
26
+ }
27
+ export declare const SUPPORTED_LANGUAGES: Record<string, LanguageDisplayInfo>;
28
+ export declare const DEFAULT_LANGUAGE_CODE: "ko";
29
+ export declare const SUPPORTED_LANGUAGE_CODES: (keyof typeof SUPPORTED_LANGUAGES)[];
6
30
  export declare const KOREAN_KEYWORD_MAP: Record<string, "PLAN" | "ACT" | "EVAL">;
7
31
  export interface RuleContent {
8
32
  name: string;
@@ -13,6 +37,37 @@ export interface AgentInfo {
13
37
  description: string;
14
38
  expertise: string[];
15
39
  }
40
+ export interface ParallelAgentRecommendation {
41
+ specialists: string[];
42
+ hint: string;
43
+ }
44
+ export type PrimaryAgentSource = 'explicit' | 'config' | 'intent' | 'context' | 'default';
45
+ export interface PrimaryAgentResolutionResult {
46
+ agentName: string;
47
+ source: PrimaryAgentSource;
48
+ confidence: number;
49
+ reason: string;
50
+ }
51
+ export interface ResolutionContext {
52
+ filePath?: string;
53
+ projectType?: string;
54
+ }
55
+ export interface ActAgentRecommendation {
56
+ agentName: string;
57
+ reason: string;
58
+ confidence: number;
59
+ }
60
+ export interface AgentActivation {
61
+ type: 'agent' | 'skill';
62
+ name: string;
63
+ tier: 'primary' | 'specialist';
64
+ activatedBy?: string;
65
+ timestamp: string;
66
+ }
67
+ export interface ActivationMessage {
68
+ activations: AgentActivation[];
69
+ formatted: string;
70
+ }
16
71
  export interface ParseModeResult {
17
72
  mode: Mode;
18
73
  originalPrompt: string;
@@ -22,6 +77,11 @@ export interface ParseModeResult {
22
77
  agent?: string;
23
78
  delegates_to?: string;
24
79
  delegate_agent_info?: AgentInfo;
80
+ primary_agent_source?: PrimaryAgentSource;
81
+ parallelAgentsRecommendation?: ParallelAgentRecommendation;
82
+ recommended_act_agent?: ActAgentRecommendation;
83
+ available_act_agents?: string[];
84
+ activation_message?: ActivationMessage;
25
85
  }
26
86
  export interface ModeConfig {
27
87
  description: string;
@@ -29,6 +89,7 @@ export interface ModeConfig {
29
89
  rules: string[];
30
90
  agent?: string;
31
91
  delegates_to?: string;
92
+ defaultSpecialists?: string[];
32
93
  }
33
94
  export interface KeywordModesConfig {
34
95
  modes: Record<Mode, ModeConfig>;
@@ -1,8 +1,61 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.KOREAN_KEYWORD_MAP = exports.LOCALIZED_KEYWORD_MAP = exports.MODE_AGENTS = exports.KEYWORDS = void 0;
3
+ exports.KOREAN_KEYWORD_MAP = exports.SUPPORTED_LANGUAGE_CODES = exports.DEFAULT_LANGUAGE_CODE = exports.SUPPORTED_LANGUAGES = exports.LOCALIZED_KEYWORD_MAP = exports.ACT_AGENT_DISPLAY_INFO = exports.ALL_PRIMARY_AGENTS_LIST = exports.ACT_PRIMARY_AGENTS_LIST = exports.PLAN_PRIMARY_AGENTS_LIST = exports.ALL_PRIMARY_AGENTS = exports.DEFAULT_ACT_AGENT = exports.EVAL_PRIMARY_AGENT = exports.ACT_PRIMARY_AGENTS = exports.PLAN_PRIMARY_AGENTS = exports.MODE_AGENTS = exports.KEYWORDS = void 0;
4
4
  exports.KEYWORDS = ['PLAN', 'ACT', 'EVAL'];
5
5
  exports.MODE_AGENTS = ['plan-mode', 'act-mode', 'eval-mode'];
6
+ exports.PLAN_PRIMARY_AGENTS = [
7
+ 'solution-architect',
8
+ 'technical-planner',
9
+ ];
10
+ exports.ACT_PRIMARY_AGENTS = [
11
+ 'tooling-engineer',
12
+ 'data-engineer',
13
+ 'mobile-developer',
14
+ 'frontend-developer',
15
+ 'backend-developer',
16
+ 'devops-engineer',
17
+ 'agent-architect',
18
+ ];
19
+ exports.EVAL_PRIMARY_AGENT = 'code-reviewer';
20
+ exports.DEFAULT_ACT_AGENT = 'frontend-developer';
21
+ exports.ALL_PRIMARY_AGENTS = [
22
+ ...exports.PLAN_PRIMARY_AGENTS,
23
+ ...exports.ACT_PRIMARY_AGENTS,
24
+ exports.EVAL_PRIMARY_AGENT,
25
+ ];
26
+ exports.PLAN_PRIMARY_AGENTS_LIST = [...exports.PLAN_PRIMARY_AGENTS];
27
+ exports.ACT_PRIMARY_AGENTS_LIST = [...exports.ACT_PRIMARY_AGENTS];
28
+ exports.ALL_PRIMARY_AGENTS_LIST = [...exports.ALL_PRIMARY_AGENTS];
29
+ exports.ACT_AGENT_DISPLAY_INFO = {
30
+ 'tooling-engineer': {
31
+ name: 'Tooling Engineer',
32
+ description: 'Config, build tools, bundlers (webpack, vite, eslint)',
33
+ },
34
+ 'data-engineer': {
35
+ name: 'Data Engineer',
36
+ description: 'Database, schema design, migrations, analytics',
37
+ },
38
+ 'mobile-developer': {
39
+ name: 'Mobile Developer',
40
+ description: 'React Native, Flutter, iOS, Android',
41
+ },
42
+ 'frontend-developer': {
43
+ name: 'Frontend Developer',
44
+ description: 'React, Vue, Angular, Web UI development',
45
+ },
46
+ 'backend-developer': {
47
+ name: 'Backend Developer',
48
+ description: 'Node.js, NestJS, Express, API development',
49
+ },
50
+ 'devops-engineer': {
51
+ name: 'DevOps Engineer',
52
+ description: 'CI/CD, Docker, Kubernetes, infrastructure',
53
+ },
54
+ 'agent-architect': {
55
+ name: 'Agent Architect',
56
+ description: 'AI agent systems, MCP servers, LLM integration',
57
+ },
58
+ };
6
59
  exports.LOCALIZED_KEYWORD_MAP = {
7
60
  계획: 'PLAN',
8
61
  실행: 'ACT',
@@ -17,5 +70,34 @@ exports.LOCALIZED_KEYWORD_MAP = {
17
70
  ACTUAR: 'ACT',
18
71
  EVALUAR: 'EVAL',
19
72
  };
73
+ exports.SUPPORTED_LANGUAGES = {
74
+ ko: {
75
+ name: 'Korean',
76
+ nativeName: '한국어',
77
+ description: 'AI responses will be in Korean',
78
+ },
79
+ en: {
80
+ name: 'English',
81
+ nativeName: 'English',
82
+ description: 'AI responses will be in English',
83
+ },
84
+ ja: {
85
+ name: 'Japanese',
86
+ nativeName: '日本語',
87
+ description: 'AI responses will be in Japanese',
88
+ },
89
+ zh: {
90
+ name: 'Chinese',
91
+ nativeName: '中文',
92
+ description: 'AI responses will be in Chinese',
93
+ },
94
+ es: {
95
+ name: 'Spanish',
96
+ nativeName: 'Español',
97
+ description: 'AI responses will be in Spanish',
98
+ },
99
+ };
100
+ exports.DEFAULT_LANGUAGE_CODE = 'ko';
101
+ exports.SUPPORTED_LANGUAGE_CODES = Object.keys(exports.SUPPORTED_LANGUAGES);
20
102
  exports.KOREAN_KEYWORD_MAP = exports.LOCALIZED_KEYWORD_MAP;
21
103
  //# sourceMappingURL=keyword.types.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"keyword.types.js","sourceRoot":"","sources":["../../../src/keyword/keyword.types.ts"],"names":[],"mappings":";;;AAAa,QAAA,QAAQ,GAAG,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,CAAU,CAAC;AAK5C,QAAA,WAAW,GAAG,CAAC,WAAW,EAAE,UAAU,EAAE,WAAW,CAAU,CAAC;AAK9D,QAAA,qBAAqB,GAAyB;IAEzD,EAAE,EAAE,MAAM;IACV,EAAE,EAAE,KAAK;IACT,EAAE,EAAE,MAAM;IAEV,EAAE,EAAE,MAAM;IACV,EAAE,EAAE,KAAK;IACT,EAAE,EAAE,MAAM;IAEV,EAAE,EAAE,MAAM;IACV,EAAE,EAAE,KAAK;IACT,EAAE,EAAE,MAAM;IAEV,UAAU,EAAE,MAAM;IAClB,MAAM,EAAE,KAAK;IACb,OAAO,EAAE,MAAM;CACP,CAAC;AAGE,QAAA,kBAAkB,GAAG,6BAAqB,CAAC"}
1
+ {"version":3,"file":"keyword.types.js","sourceRoot":"","sources":["../../../src/keyword/keyword.types.ts"],"names":[],"mappings":";;;AAAa,QAAA,QAAQ,GAAG,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,CAAU,CAAC;AAK5C,QAAA,WAAW,GAAG,CAAC,WAAW,EAAE,UAAU,EAAE,WAAW,CAAU,CAAC;AAK9D,QAAA,mBAAmB,GAAG;IACjC,oBAAoB;IACpB,mBAAmB;CACX,CAAC;AAGE,QAAA,kBAAkB,GAAG;IAChC,kBAAkB;IAClB,eAAe;IACf,kBAAkB;IAClB,oBAAoB;IACpB,mBAAmB;IACnB,iBAAiB;IACjB,iBAAiB;CACT,CAAC;AAGE,QAAA,kBAAkB,GAAG,eAAwB,CAAC;AAY9C,QAAA,iBAAiB,GAAG,oBAA6B,CAAC;AAGlD,QAAA,kBAAkB,GAAG;IAChC,GAAG,2BAAmB;IACtB,GAAG,0BAAkB;IACrB,0BAAkB;CACV,CAAC;AAWE,QAAA,wBAAwB,GAAa,CAAC,GAAG,2BAAmB,CAAC,CAAC;AAC9D,QAAA,uBAAuB,GAAa,CAAC,GAAG,0BAAkB,CAAC,CAAC;AAC5D,QAAA,uBAAuB,GAAa,CAAC,GAAG,0BAAkB,CAAC,CAAC;AAqB5D,QAAA,sBAAsB,GACjC;IACE,kBAAkB,EAAE;QAClB,IAAI,EAAE,kBAAkB;QACxB,WAAW,EAAE,uDAAuD;KACrE;IACD,eAAe,EAAE;QACf,IAAI,EAAE,eAAe;QACrB,WAAW,EAAE,gDAAgD;KAC9D;IACD,kBAAkB,EAAE;QAClB,IAAI,EAAE,kBAAkB;QACxB,WAAW,EAAE,qCAAqC;KACnD;IACD,oBAAoB,EAAE;QACpB,IAAI,EAAE,oBAAoB;QAC1B,WAAW,EAAE,yCAAyC;KACvD;IACD,mBAAmB,EAAE;QACnB,IAAI,EAAE,mBAAmB;QACzB,WAAW,EAAE,2CAA2C;KACzD;IACD,iBAAiB,EAAE;QACjB,IAAI,EAAE,iBAAiB;QACvB,WAAW,EAAE,2CAA2C;KACzD;IACD,iBAAiB,EAAE;QACjB,IAAI,EAAE,iBAAiB;QACvB,WAAW,EAAE,gDAAgD;KAC9D;CACF,CAAC;AAGS,QAAA,qBAAqB,GAAyB;IAEzD,EAAE,EAAE,MAAM;IACV,EAAE,EAAE,KAAK;IACT,EAAE,EAAE,MAAM;IAEV,EAAE,EAAE,MAAM;IACV,EAAE,EAAE,KAAK;IACT,EAAE,EAAE,MAAM;IAEV,EAAE,EAAE,MAAM;IACV,EAAE,EAAE,KAAK;IACT,EAAE,EAAE,MAAM;IAEV,UAAU,EAAE,MAAM;IAClB,MAAM,EAAE,KAAK;IACb,OAAO,EAAE,MAAM;CACP,CAAC;AAoBE,QAAA,mBAAmB,GAAwC;IACtE,EAAE,EAAE;QACF,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE,KAAK;QACjB,WAAW,EAAE,gCAAgC;KAC9C;IACD,EAAE,EAAE;QACF,IAAI,EAAE,SAAS;QACf,UAAU,EAAE,SAAS;QACrB,WAAW,EAAE,iCAAiC;KAC/C;IACD,EAAE,EAAE;QACF,IAAI,EAAE,UAAU;QAChB,UAAU,EAAE,KAAK;QACjB,WAAW,EAAE,kCAAkC;KAChD;IACD,EAAE,EAAE;QACF,IAAI,EAAE,SAAS;QACf,UAAU,EAAE,IAAI;QAChB,WAAW,EAAE,iCAAiC;KAC/C;IACD,EAAE,EAAE;QACF,IAAI,EAAE,SAAS;QACf,UAAU,EAAE,SAAS;QACrB,WAAW,EAAE,iCAAiC;KAC/C;CACO,CAAC;AAGE,QAAA,qBAAqB,GAAG,IAAa,CAAC;AAGtC,QAAA,wBAAwB,GAAG,MAAM,CAAC,IAAI,CACjD,2BAAmB,CACoB,CAAC;AAG7B,QAAA,kBAAkB,GAAG,6BAAqB,CAAC"}
@@ -0,0 +1,30 @@
1
+ import { type Mode, type PrimaryAgentResolutionResult, type ResolutionContext } from './keyword.types';
2
+ interface ProjectConfig {
3
+ primaryAgent?: string;
4
+ }
5
+ type GetProjectConfigFn = () => Promise<ProjectConfig | null>;
6
+ type ListPrimaryAgentsFn = () => Promise<string[]>;
7
+ export declare class PrimaryAgentResolver {
8
+ private readonly getProjectConfig;
9
+ private readonly listPrimaryAgents;
10
+ private readonly logger;
11
+ private static readonly EXPLICIT_PATTERNS;
12
+ private static readonly DATA_INTENT_PATTERNS;
13
+ private static readonly MOBILE_INTENT_PATTERNS;
14
+ private static readonly TOOLING_INTENT_PATTERNS;
15
+ private static readonly CONTEXT_PATTERNS;
16
+ constructor(getProjectConfig: GetProjectConfigFn, listPrimaryAgents: ListPrimaryAgentsFn);
17
+ resolve(mode: Mode, prompt: string, context?: ResolutionContext, recommendedActAgent?: string): Promise<PrimaryAgentResolutionResult>;
18
+ private resolvePlanAgent;
19
+ private choosePlanAgent;
20
+ private resolveActAgent;
21
+ private inferFromToolingPatterns;
22
+ private inferFromDataPatterns;
23
+ private inferFromMobilePatterns;
24
+ private parseExplicitRequest;
25
+ private getFromProjectConfig;
26
+ private inferFromContext;
27
+ private safeListPrimaryAgents;
28
+ private createResult;
29
+ }
30
+ export {};