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
@@ -19,20 +19,13 @@ const index_js_1 = require("@modelcontextprotocol/sdk/server/index.js");
19
19
  const stdio_js_1 = require("@modelcontextprotocol/sdk/server/stdio.js");
20
20
  const types_js_1 = require("@modelcontextprotocol/sdk/types.js");
21
21
  const rules_service_1 = require("../rules/rules.service");
22
- const keyword_service_1 = require("../keyword/keyword.service");
23
- const keyword_module_1 = require("../keyword/keyword.module");
24
22
  const config_service_1 = require("../config/config.service");
25
- const config_diff_service_1 = require("../config/config-diff.service");
26
- const analyzer_service_1 = require("../analyzer/analyzer.service");
27
- const skill_recommendation_service_1 = require("../skill/skill-recommendation.service");
23
+ const handlers_1 = require("./handlers");
28
24
  let McpService = McpService_1 = class McpService {
29
- constructor(rulesService, keywordService, configService, configDiffService, analyzerService, skillRecommendationService) {
25
+ constructor(rulesService, configService, toolHandlers) {
30
26
  this.rulesService = rulesService;
31
- this.keywordService = keywordService;
32
27
  this.configService = configService;
33
- this.configDiffService = configDiffService;
34
- this.analyzerService = analyzerService;
35
- this.skillRecommendationService = skillRecommendationService;
28
+ this.toolHandlers = toolHandlers;
36
29
  this.logger = new common_1.Logger(McpService_1.name);
37
30
  this.server = new index_js_1.Server({
38
31
  name: 'codingbuddy-rules-server',
@@ -133,122 +126,18 @@ let McpService = McpService_1 = class McpService {
133
126
  }
134
127
  registerTools() {
135
128
  this.server.setRequestHandler(types_js_1.ListToolsRequestSchema, async () => {
136
- return {
137
- tools: [
138
- {
139
- name: 'search_rules',
140
- description: 'Search for rules and guidelines',
141
- inputSchema: {
142
- type: 'object',
143
- properties: {
144
- query: { type: 'string', description: 'Search query' },
145
- },
146
- required: ['query'],
147
- },
148
- },
149
- {
150
- name: 'get_agent_details',
151
- description: 'Get detailed profile of a specific AI agent',
152
- inputSchema: {
153
- type: 'object',
154
- properties: {
155
- agentName: { type: 'string', description: 'Name of the agent' },
156
- },
157
- required: ['agentName'],
158
- },
159
- },
160
- {
161
- name: 'parse_mode',
162
- description: 'MANDATORY: When user message starts with PLAN, ACT, or EVAL keyword (or localized equivalents: Korean 계획/실행/평가, Japanese 計画/実行/評価, Chinese 计划/执行/评估, Spanish PLANIFICAR/ACTUAR/EVALUAR), you MUST call this tool FIRST before any other action. This tool parses the workflow mode and returns critical rules that MUST be followed. Failure to call this tool when these keywords are present is a protocol violation.',
163
- inputSchema: {
164
- type: 'object',
165
- properties: {
166
- prompt: {
167
- type: 'string',
168
- description: 'User prompt that may start with PLAN/ACT/EVAL keyword',
169
- },
170
- },
171
- required: ['prompt'],
172
- },
173
- },
174
- {
175
- name: 'get_project_config',
176
- description: 'Get project configuration including tech stack, architecture, conventions, and language settings',
177
- inputSchema: {
178
- type: 'object',
179
- properties: {},
180
- required: [],
181
- },
182
- },
183
- {
184
- name: 'suggest_config_updates',
185
- description: 'Analyze the project and suggest config updates based on detected changes (new frameworks, dependencies, patterns)',
186
- inputSchema: {
187
- type: 'object',
188
- properties: {
189
- projectRoot: {
190
- type: 'string',
191
- description: 'Project root directory (defaults to current working directory)',
192
- },
193
- },
194
- required: [],
195
- },
196
- },
197
- {
198
- name: 'recommend_skills',
199
- description: 'Recommend skills based on user prompt with multi-language support',
200
- inputSchema: {
201
- type: 'object',
202
- properties: {
203
- prompt: {
204
- type: 'string',
205
- description: 'User prompt to analyze for skill recommendations',
206
- },
207
- },
208
- required: ['prompt'],
209
- },
210
- },
211
- {
212
- name: 'list_skills',
213
- description: 'List all available skills with optional filtering',
214
- inputSchema: {
215
- type: 'object',
216
- properties: {
217
- minPriority: {
218
- type: 'number',
219
- description: 'Minimum priority threshold (inclusive)',
220
- },
221
- maxPriority: {
222
- type: 'number',
223
- description: 'Maximum priority threshold (inclusive)',
224
- },
225
- },
226
- required: [],
227
- },
228
- },
229
- ],
230
- };
129
+ const tools = this.toolHandlers.flatMap(handler => handler.getToolDefinitions());
130
+ return { tools };
231
131
  });
232
132
  this.server.setRequestHandler(types_js_1.CallToolRequestSchema, async (request) => {
233
133
  const { name, arguments: args } = request.params;
234
- switch (name) {
235
- case 'search_rules':
236
- return this.handleSearchRules(args);
237
- case 'get_agent_details':
238
- return this.handleGetAgentDetails(args);
239
- case 'parse_mode':
240
- return this.handleParseMode(args);
241
- case 'get_project_config':
242
- return this.handleGetProjectConfig();
243
- case 'suggest_config_updates':
244
- return this.handleSuggestConfigUpdates(args);
245
- case 'recommend_skills':
246
- return this.handleRecommendSkills(args);
247
- case 'list_skills':
248
- return this.handleListSkills(args);
249
- default:
250
- throw new types_js_1.McpError(types_js_1.ErrorCode.MethodNotFound, `Tool not found: ${name}`);
134
+ for (const handler of this.toolHandlers) {
135
+ const result = await handler.handle(name, args);
136
+ if (result !== null) {
137
+ return result;
138
+ }
251
139
  }
140
+ throw new types_js_1.McpError(types_js_1.ErrorCode.MethodNotFound, `Tool not found: ${name}`);
252
141
  });
253
142
  }
254
143
  registerPrompts() {
@@ -298,94 +187,6 @@ let McpService = McpService_1 = class McpService {
298
187
  throw new types_js_1.McpError(types_js_1.ErrorCode.MethodNotFound, 'Prompt not found');
299
188
  });
300
189
  }
301
- async handleSearchRules(args) {
302
- const query = String(args?.query);
303
- const results = await this.rulesService.searchRules(query);
304
- return this.jsonResponse(results);
305
- }
306
- async handleGetAgentDetails(args) {
307
- const agentName = String(args?.agentName);
308
- try {
309
- const agent = await this.rulesService.getAgent(agentName);
310
- return this.jsonResponse(agent);
311
- }
312
- catch {
313
- return this.errorResponse(`Agent '${agentName}' not found.`);
314
- }
315
- }
316
- async handleParseMode(args) {
317
- const prompt = String(args?.prompt ?? '');
318
- try {
319
- const result = await this.keywordService.parseMode(prompt);
320
- const language = await this.configService.getLanguage();
321
- return this.jsonResponse({ ...result, language });
322
- }
323
- catch (error) {
324
- return this.errorResponse(`Failed to parse mode: ${error instanceof Error ? error.message : 'Unknown error'}`);
325
- }
326
- }
327
- async handleGetProjectConfig() {
328
- try {
329
- const settings = await this.configService.getSettings();
330
- return this.jsonResponse(settings);
331
- }
332
- catch (error) {
333
- return this.errorResponse(`Failed to get project config: ${error instanceof Error ? error.message : 'Unknown error'}`);
334
- }
335
- }
336
- async handleSuggestConfigUpdates(args) {
337
- try {
338
- const projectRoot = String(args?.projectRoot ?? process.cwd());
339
- const analysis = await this.analyzerService.analyzeProject(projectRoot);
340
- await this.configService.reload();
341
- const currentConfig = await this.configService.getSettings();
342
- const result = this.configDiffService.compareConfig(analysis, currentConfig);
343
- return this.jsonResponse(result);
344
- }
345
- catch (error) {
346
- return this.errorResponse(`Failed to suggest config updates: ${error instanceof Error ? error.message : 'Unknown error'}`);
347
- }
348
- }
349
- handleRecommendSkills(args) {
350
- const prompt = args?.prompt;
351
- if (typeof prompt !== 'string') {
352
- return this.errorResponse('Missing required parameter: prompt');
353
- }
354
- try {
355
- const result = this.skillRecommendationService.recommendSkills(prompt);
356
- return this.jsonResponse(result);
357
- }
358
- catch (error) {
359
- return this.errorResponse(`Failed to recommend skills: ${error instanceof Error ? error.message : 'Unknown error'}`);
360
- }
361
- }
362
- handleListSkills(args) {
363
- try {
364
- const options = {};
365
- if (typeof args?.minPriority === 'number') {
366
- options.minPriority = args.minPriority;
367
- }
368
- if (typeof args?.maxPriority === 'number') {
369
- options.maxPriority = args.maxPriority;
370
- }
371
- const result = this.skillRecommendationService.listSkills(options);
372
- return this.jsonResponse(result);
373
- }
374
- catch (error) {
375
- return this.errorResponse(`Failed to list skills: ${error instanceof Error ? error.message : 'Unknown error'}`);
376
- }
377
- }
378
- jsonResponse(data) {
379
- return {
380
- content: [{ type: 'text', text: JSON.stringify(data, null, 2) }],
381
- };
382
- }
383
- errorResponse(message) {
384
- return {
385
- isError: true,
386
- content: [{ type: 'text', text: message }],
387
- };
388
- }
389
190
  formatProjectContext(settings) {
390
191
  const sections = ['Project Context:'];
391
192
  if (settings.projectName) {
@@ -430,12 +231,8 @@ let McpService = McpService_1 = class McpService {
430
231
  exports.McpService = McpService;
431
232
  exports.McpService = McpService = McpService_1 = __decorate([
432
233
  (0, common_1.Injectable)(),
433
- __param(1, (0, common_1.Inject)(keyword_module_1.KEYWORD_SERVICE)),
234
+ __param(2, (0, common_1.Inject)(handlers_1.TOOL_HANDLERS)),
434
235
  __metadata("design:paramtypes", [rules_service_1.RulesService,
435
- keyword_service_1.KeywordService,
436
- config_service_1.ConfigService,
437
- config_diff_service_1.ConfigDiffService,
438
- analyzer_service_1.AnalyzerService,
439
- skill_recommendation_service_1.SkillRecommendationService])
236
+ config_service_1.ConfigService, Array])
440
237
  ], McpService);
441
238
  //# sourceMappingURL=mcp.service.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"mcp.service.js","sourceRoot":"","sources":["../../../src/mcp/mcp.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mcp.service.js","sourceRoot":"","sources":["../../../src/mcp/mcp.service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ export interface ToolResponse {
2
+ [key: string]: unknown;
3
+ content: Array<{
4
+ type: 'text';
5
+ text: string;
6
+ }>;
7
+ isError?: boolean;
8
+ }
9
+ export declare function createJsonResponse(data: unknown): ToolResponse;
10
+ export declare function createErrorResponse(message: string): ToolResponse;
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createJsonResponse = createJsonResponse;
4
+ exports.createErrorResponse = createErrorResponse;
5
+ function createJsonResponse(data) {
6
+ return {
7
+ content: [{ type: 'text', text: JSON.stringify(data) }],
8
+ };
9
+ }
10
+ function createErrorResponse(message) {
11
+ return {
12
+ isError: true,
13
+ content: [{ type: 'text', text: message }],
14
+ };
15
+ }
16
+ //# sourceMappingURL=response.utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"response.utils.js","sourceRoot":"","sources":["../../../src/mcp/response.utils.ts"],"names":[],"mappings":";;AAkBA,gDAIC;AAQD,kDAKC;AAjBD,SAAgB,kBAAkB,CAAC,IAAa;IAC9C,OAAO;QACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC;KACxD,CAAC;AACJ,CAAC;AAQD,SAAgB,mBAAmB,CAAC,OAAe;IACjD,OAAO;QACL,OAAO,EAAE,IAAI;QACb,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;KAC3C,CAAC;AACJ,CAAC"}
@@ -0,0 +1,4 @@
1
+ export * from './model.constants';
2
+ export * from './model.types';
3
+ export * from './model.resolver';
4
+ export { ModelResolverService } from './model-resolver.service';
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ exports.ModelResolverService = void 0;
18
+ __exportStar(require("./model.constants"), exports);
19
+ __exportStar(require("./model.types"), exports);
20
+ __exportStar(require("./model.resolver"), exports);
21
+ var model_resolver_service_1 = require("./model-resolver.service");
22
+ Object.defineProperty(exports, "ModelResolverService", { enumerable: true, get: function () { return model_resolver_service_1.ModelResolverService; } });
23
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/model/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,oDAAkC;AAClC,gDAA8B;AAC9B,mDAAiC;AACjC,mEAAgE;AAAvD,8HAAA,oBAAoB,OAAA"}
@@ -0,0 +1,13 @@
1
+ import { ConfigService } from '../config/config.service';
2
+ import { RulesService } from '../rules/rules.service';
3
+ import type { ModelConfig, ResolvedModel } from './model.types';
4
+ export declare class ModelResolverService {
5
+ private readonly configService;
6
+ private readonly rulesService;
7
+ private readonly logger;
8
+ constructor(configService: ConfigService, rulesService: RulesService);
9
+ resolveForMode(modeAgentName?: string): Promise<ResolvedModel>;
10
+ resolveForAgent(agentModel?: ModelConfig): Promise<ResolvedModel>;
11
+ private loadGlobalDefaultModel;
12
+ private loadModeModel;
13
+ }
@@ -0,0 +1,63 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ var ModelResolverService_1;
12
+ Object.defineProperty(exports, "__esModule", { value: true });
13
+ exports.ModelResolverService = void 0;
14
+ const common_1 = require("@nestjs/common");
15
+ const config_service_1 = require("../config/config.service");
16
+ const rules_service_1 = require("../rules/rules.service");
17
+ const model_resolver_1 = require("./model.resolver");
18
+ const model_types_1 = require("./model.types");
19
+ let ModelResolverService = ModelResolverService_1 = class ModelResolverService {
20
+ constructor(configService, rulesService) {
21
+ this.configService = configService;
22
+ this.rulesService = rulesService;
23
+ this.logger = new common_1.Logger(ModelResolverService_1.name);
24
+ }
25
+ async resolveForMode(modeAgentName) {
26
+ const globalDefaultModel = await this.loadGlobalDefaultModel();
27
+ const modeModel = await this.loadModeModel(modeAgentName);
28
+ return (0, model_resolver_1.resolveModel)({ modeModel, globalDefaultModel });
29
+ }
30
+ async resolveForAgent(agentModel) {
31
+ const globalDefaultModel = await this.loadGlobalDefaultModel();
32
+ return (0, model_resolver_1.resolveModel)({ agentModel, globalDefaultModel });
33
+ }
34
+ async loadGlobalDefaultModel() {
35
+ try {
36
+ const globalConfig = await this.configService.getSettings();
37
+ return globalConfig?.ai?.defaultModel;
38
+ }
39
+ catch (error) {
40
+ this.logger.warn(`Failed to load global config for model resolution: ${error instanceof Error ? error.message : 'Unknown error'}. Using system default.`);
41
+ return undefined;
42
+ }
43
+ }
44
+ async loadModeModel(agentName) {
45
+ if (!agentName)
46
+ return undefined;
47
+ try {
48
+ const modeAgent = await this.rulesService.getAgent(agentName);
49
+ return (0, model_types_1.isModelConfig)(modeAgent.model) ? modeAgent.model : undefined;
50
+ }
51
+ catch (error) {
52
+ this.logger.warn(`Failed to load mode agent '${agentName}' for model resolution: ${error instanceof Error ? error.message : 'Unknown error'}. Using fallback.`);
53
+ return undefined;
54
+ }
55
+ }
56
+ };
57
+ exports.ModelResolverService = ModelResolverService;
58
+ exports.ModelResolverService = ModelResolverService = ModelResolverService_1 = __decorate([
59
+ (0, common_1.Injectable)(),
60
+ __metadata("design:paramtypes", [config_service_1.ConfigService,
61
+ rules_service_1.RulesService])
62
+ ], ModelResolverService);
63
+ //# sourceMappingURL=model-resolver.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"model-resolver.service.js","sourceRoot":"","sources":["../../../src/model/model-resolver.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,2CAAoD;AACpD,6DAAyD;AACzD,0DAAsD;AACtD,qDAAgD;AAChD,+CAA8C;AASvC,IAAM,oBAAoB,4BAA1B,MAAM,oBAAoB;IAG/B,YACmB,aAA4B,EAC5B,YAA0B;QAD1B,kBAAa,GAAb,aAAa,CAAe;QAC5B,iBAAY,GAAZ,YAAY,CAAc;QAJ5B,WAAM,GAAG,IAAI,eAAM,CAAC,sBAAoB,CAAC,IAAI,CAAC,CAAC;IAK7D,CAAC;IASJ,KAAK,CAAC,cAAc,CAAC,aAAsB;QACzC,MAAM,kBAAkB,GAAG,MAAM,IAAI,CAAC,sBAAsB,EAAE,CAAC;QAC/D,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC;QAC1D,OAAO,IAAA,6BAAY,EAAC,EAAE,SAAS,EAAE,kBAAkB,EAAE,CAAC,CAAC;IACzD,CAAC;IASD,KAAK,CAAC,eAAe,CAAC,UAAwB;QAC5C,MAAM,kBAAkB,GAAG,MAAM,IAAI,CAAC,sBAAsB,EAAE,CAAC;QAC/D,OAAO,IAAA,6BAAY,EAAC,EAAE,UAAU,EAAE,kBAAkB,EAAE,CAAC,CAAC;IAC1D,CAAC;IAKO,KAAK,CAAC,sBAAsB;QAClC,IAAI,CAAC;YACH,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE,CAAC;YAC5D,OAAO,YAAY,EAAE,EAAE,EAAE,YAAY,CAAC;QACxC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,MAAM,CAAC,IAAI,CACd,sDAAsD,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,yBAAyB,CACxI,CAAC;YACF,OAAO,SAAS,CAAC;QACnB,CAAC;IACH,CAAC;IAKO,KAAK,CAAC,aAAa,CACzB,SAAkB;QAElB,IAAI,CAAC,SAAS;YAAE,OAAO,SAAS,CAAC;QAEjC,IAAI,CAAC;YACH,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;YAC9D,OAAO,IAAA,2BAAa,EAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;QACtE,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,MAAM,CAAC,IAAI,CACd,8BAA8B,SAAS,2BAA2B,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,mBAAmB,CAC9I,CAAC;YACF,OAAO,SAAS,CAAC;QACnB,CAAC;IACH,CAAC;CACF,CAAA;AAlEY,oDAAoB;+BAApB,oBAAoB;IADhC,IAAA,mBAAU,GAAE;qCAKuB,8BAAa;QACd,4BAAY;GALlC,oBAAoB,CAkEhC"}
@@ -0,0 +1,4 @@
1
+ export declare const CLAUDE_OPUS_4 = "claude-opus-4-20250514";
2
+ export declare const CLAUDE_SONNET_4 = "claude-sonnet-4-20250514";
3
+ export declare const CLAUDE_HAIKU_35 = "claude-haiku-3-5-20241022";
4
+ export declare const DEFAULT_MODEL = "claude-sonnet-4-20250514";
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DEFAULT_MODEL = exports.CLAUDE_HAIKU_35 = exports.CLAUDE_SONNET_4 = exports.CLAUDE_OPUS_4 = void 0;
4
+ exports.CLAUDE_OPUS_4 = 'claude-opus-4-20250514';
5
+ exports.CLAUDE_SONNET_4 = 'claude-sonnet-4-20250514';
6
+ exports.CLAUDE_HAIKU_35 = 'claude-haiku-3-5-20241022';
7
+ exports.DEFAULT_MODEL = exports.CLAUDE_SONNET_4;
8
+ //# sourceMappingURL=model.constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"model.constants.js","sourceRoot":"","sources":["../../../src/model/model.constants.ts"],"names":[],"mappings":";;;AAUa,QAAA,aAAa,GAAG,wBAAwB,CAAC;AAKzC,QAAA,eAAe,GAAG,0BAA0B,CAAC;AAK7C,QAAA,eAAe,GAAG,2BAA2B,CAAC;AAM9C,QAAA,aAAa,GAAG,uBAAe,CAAC"}
@@ -0,0 +1,7 @@
1
+ import type { ResolvedModel, ResolveModelParams } from './model.types';
2
+ export declare const SYSTEM_DEFAULT_MODEL = "claude-sonnet-4-20250514";
3
+ export declare const KNOWN_MODEL_PREFIXES: readonly ["claude-opus-4", "claude-sonnet-4", "claude-sonnet-3", "claude-haiku-3"];
4
+ export declare function getAllPrefixes(additionalPrefixes?: readonly string[]): readonly string[];
5
+ export declare function formatUnknownModelWarning(modelId: string, additionalPrefixes?: readonly string[]): string;
6
+ export declare function isKnownModel(modelId: string, additionalPrefixes?: readonly string[]): boolean;
7
+ export declare function resolveModel(params: ResolveModelParams): ResolvedModel;
@@ -0,0 +1,56 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.KNOWN_MODEL_PREFIXES = exports.SYSTEM_DEFAULT_MODEL = void 0;
4
+ exports.getAllPrefixes = getAllPrefixes;
5
+ exports.formatUnknownModelWarning = formatUnknownModelWarning;
6
+ exports.isKnownModel = isKnownModel;
7
+ exports.resolveModel = resolveModel;
8
+ const model_constants_1 = require("./model.constants");
9
+ exports.SYSTEM_DEFAULT_MODEL = model_constants_1.DEFAULT_MODEL;
10
+ exports.KNOWN_MODEL_PREFIXES = [
11
+ 'claude-opus-4',
12
+ 'claude-sonnet-4',
13
+ 'claude-sonnet-3',
14
+ 'claude-haiku-3',
15
+ ];
16
+ function getAllPrefixes(additionalPrefixes) {
17
+ if (!additionalPrefixes || additionalPrefixes.length === 0) {
18
+ return exports.KNOWN_MODEL_PREFIXES;
19
+ }
20
+ return [...exports.KNOWN_MODEL_PREFIXES, ...additionalPrefixes];
21
+ }
22
+ function formatUnknownModelWarning(modelId, additionalPrefixes) {
23
+ return `Unknown model ID: "${modelId}". Known prefixes: ${getAllPrefixes(additionalPrefixes).join(', ')}`;
24
+ }
25
+ function isKnownModel(modelId, additionalPrefixes) {
26
+ return getAllPrefixes(additionalPrefixes).some(prefix => modelId.startsWith(prefix));
27
+ }
28
+ function hasValidPreferred(model) {
29
+ return Boolean(model?.preferred);
30
+ }
31
+ function resolveModel(params) {
32
+ const { agentModel, modeModel, globalDefaultModel, additionalPrefixes } = params;
33
+ let model;
34
+ let source;
35
+ if (hasValidPreferred(agentModel)) {
36
+ model = agentModel.preferred;
37
+ source = 'agent';
38
+ }
39
+ else if (hasValidPreferred(modeModel)) {
40
+ model = modeModel.preferred;
41
+ source = 'mode';
42
+ }
43
+ else if (globalDefaultModel) {
44
+ model = globalDefaultModel;
45
+ source = 'global';
46
+ }
47
+ else {
48
+ return { model: exports.SYSTEM_DEFAULT_MODEL, source: 'system' };
49
+ }
50
+ const result = { model, source };
51
+ if (!isKnownModel(model, additionalPrefixes)) {
52
+ result.warning = formatUnknownModelWarning(model, additionalPrefixes);
53
+ }
54
+ return result;
55
+ }
56
+ //# sourceMappingURL=model.resolver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"model.resolver.js","sourceRoot":"","sources":["../../../src/model/model.resolver.ts"],"names":[],"mappings":";;;AA4BA,wCAOC;AAOD,8DAKC;AAOD,oCAOC;AAqBD,oCAkCC;AA/GD,uDAAkD;AAMrC,QAAA,oBAAoB,GAAG,+BAAa,CAAC;AAMrC,QAAA,oBAAoB,GAAG;IAClC,eAAe;IACf,iBAAiB;IACjB,iBAAiB;IACjB,gBAAgB;CACR,CAAC;AAMX,SAAgB,cAAc,CAC5B,kBAAsC;IAEtC,IAAI,CAAC,kBAAkB,IAAI,kBAAkB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC3D,OAAO,4BAAoB,CAAC;IAC9B,CAAC;IACD,OAAO,CAAC,GAAG,4BAAoB,EAAE,GAAG,kBAAkB,CAAC,CAAC;AAC1D,CAAC;AAOD,SAAgB,yBAAyB,CACvC,OAAe,EACf,kBAAsC;IAEtC,OAAO,sBAAsB,OAAO,sBAAsB,cAAc,CAAC,kBAAkB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;AAC5G,CAAC;AAOD,SAAgB,YAAY,CAC1B,OAAe,EACf,kBAAsC;IAEtC,OAAO,cAAc,CAAC,kBAAkB,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CACtD,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,CAC3B,CAAC;AACJ,CAAC;AAKD,SAAS,iBAAiB,CACxB,KAAmB;IAEnB,OAAO,OAAO,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;AACnC,CAAC;AAYD,SAAgB,YAAY,CAAC,MAA0B;IACrD,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,GACrE,MAAM,CAAC;IAET,IAAI,KAAa,CAAC;IAClB,IAAI,MAA+B,CAAC;IAGpC,IAAI,iBAAiB,CAAC,UAAU,CAAC,EAAE,CAAC;QAClC,KAAK,GAAG,UAAU,CAAC,SAAS,CAAC;QAC7B,MAAM,GAAG,OAAO,CAAC;IACnB,CAAC;SAEI,IAAI,iBAAiB,CAAC,SAAS,CAAC,EAAE,CAAC;QACtC,KAAK,GAAG,SAAS,CAAC,SAAS,CAAC;QAC5B,MAAM,GAAG,MAAM,CAAC;IAClB,CAAC;SAEI,IAAI,kBAAkB,EAAE,CAAC;QAC5B,KAAK,GAAG,kBAAkB,CAAC;QAC3B,MAAM,GAAG,QAAQ,CAAC;IACpB,CAAC;SAEI,CAAC;QACJ,OAAO,EAAE,KAAK,EAAE,4BAAoB,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;IAC3D,CAAC;IAGD,MAAM,MAAM,GAAkB,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;IAChD,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,kBAAkB,CAAC,EAAE,CAAC;QAC7C,MAAM,CAAC,OAAO,GAAG,yBAAyB,CAAC,KAAK,EAAE,kBAAkB,CAAC,CAAC;IACxE,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -0,0 +1,17 @@
1
+ export interface ModelConfig {
2
+ preferred: string;
3
+ reason?: string;
4
+ }
5
+ export declare function isModelConfig(value: unknown): value is ModelConfig;
6
+ export type ModelSource = 'agent' | 'mode' | 'global' | 'system';
7
+ export interface ResolvedModel {
8
+ model: string;
9
+ source: ModelSource;
10
+ warning?: string;
11
+ }
12
+ export interface ResolveModelParams {
13
+ agentModel?: ModelConfig;
14
+ modeModel?: ModelConfig;
15
+ globalDefaultModel?: string;
16
+ additionalPrefixes?: readonly string[];
17
+ }
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isModelConfig = isModelConfig;
4
+ function isModelConfig(value) {
5
+ return (typeof value === 'object' &&
6
+ value !== null &&
7
+ 'preferred' in value &&
8
+ typeof value.preferred === 'string' &&
9
+ value.preferred.length > 0);
10
+ }
11
+ //# sourceMappingURL=model.types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"model.types.js","sourceRoot":"","sources":["../../../src/model/model.types.ts"],"names":[],"mappings":";;AAsBA,sCAQC;AARD,SAAgB,aAAa,CAAC,KAAc;IAC1C,OAAO,CACL,OAAO,KAAK,KAAK,QAAQ;QACzB,KAAK,KAAK,IAAI;QACd,WAAW,IAAI,KAAK;QACpB,OAAQ,KAAqB,CAAC,SAAS,KAAK,QAAQ;QACnD,KAAqB,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAC5C,CAAC;AACJ,CAAC"}
@@ -3,11 +3,25 @@ export declare class AgentSchemaError extends Error {
3
3
  readonly details?: z.ZodError | undefined;
4
4
  constructor(message: string, details?: z.ZodError | undefined);
5
5
  }
6
+ declare const AgentRoleType: z.ZodEnum<{
7
+ primary: "primary";
8
+ specialist: "specialist";
9
+ utility: "utility";
10
+ }>;
6
11
  declare const AgentProfileSchema: z.ZodObject<{
7
12
  name: z.ZodString;
8
13
  description: z.ZodString;
14
+ model: z.ZodOptional<z.ZodObject<{
15
+ preferred: z.ZodString;
16
+ reason: z.ZodOptional<z.ZodString>;
17
+ }, z.z.core.$strip>>;
9
18
  role: z.ZodObject<{
10
19
  title: z.ZodString;
20
+ type: z.ZodOptional<z.ZodEnum<{
21
+ primary: "primary";
22
+ specialist: "specialist";
23
+ utility: "utility";
24
+ }>>;
11
25
  expertise: z.ZodArray<z.ZodString>;
12
26
  tech_stack_reference: z.ZodOptional<z.ZodString>;
13
27
  responsibilities: z.ZodOptional<z.ZodArray<z.ZodString>>;
@@ -16,5 +30,6 @@ declare const AgentProfileSchema: z.ZodObject<{
16
30
  export type ValidatedAgentProfile = z.infer<typeof AgentProfileSchema> & {
17
31
  [key: string]: unknown;
18
32
  };
33
+ export type AgentRoleTypeValue = z.infer<typeof AgentRoleType>;
19
34
  export declare function parseAgentProfile(data: unknown): ValidatedAgentProfile;
20
35
  export {};
@@ -12,18 +12,27 @@ class AgentSchemaError extends Error {
12
12
  }
13
13
  }
14
14
  exports.AgentSchemaError = AgentSchemaError;
15
+ const AgentRoleType = z.enum(['primary', 'specialist', 'utility']);
15
16
  const RoleSchema = z
16
17
  .object({
17
18
  title: z.string(),
19
+ type: AgentRoleType.optional(),
18
20
  expertise: z.array(z.string()),
19
21
  tech_stack_reference: z.string().optional(),
20
22
  responsibilities: z.array(z.string()).optional(),
21
23
  })
22
24
  .passthrough();
25
+ const ModelConfigSchema = z
26
+ .object({
27
+ preferred: z.string(),
28
+ reason: z.string().optional(),
29
+ })
30
+ .optional();
23
31
  const AgentProfileSchema = z
24
32
  .object({
25
33
  name: z.string(),
26
34
  description: z.string(),
35
+ model: ModelConfigSchema,
27
36
  role: RoleSchema,
28
37
  })
29
38
  .passthrough();