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.
- package/dist/src/agent/agent-prompt.builder.d.ts +5 -0
- package/dist/src/agent/agent-prompt.builder.js +84 -0
- package/dist/src/agent/agent-prompt.builder.js.map +1 -0
- package/dist/src/agent/agent.module.d.ts +2 -0
- package/dist/src/agent/agent.module.js +23 -0
- package/dist/src/agent/agent.module.js.map +1 -0
- package/dist/src/agent/agent.service.d.ts +15 -0
- package/dist/src/agent/agent.service.js +103 -0
- package/dist/src/agent/agent.service.js.map +1 -0
- package/dist/src/agent/agent.types.d.ts +29 -0
- package/dist/src/agent/agent.types.js +31 -0
- package/dist/src/agent/agent.types.js.map +1 -0
- package/dist/src/agent/index.d.ts +4 -0
- package/dist/src/agent/index.js +21 -0
- package/dist/src/agent/index.js.map +1 -0
- package/dist/src/app.module.js +12 -1
- package/dist/src/app.module.js.map +1 -1
- package/dist/src/checklist/checklist.module.d.ts +2 -0
- package/dist/src/checklist/checklist.module.js +29 -0
- package/dist/src/checklist/checklist.module.js.map +1 -0
- package/dist/src/checklist/checklist.schema.d.ts +14 -0
- package/dist/src/checklist/checklist.schema.js +189 -0
- package/dist/src/checklist/checklist.schema.js.map +1 -0
- package/dist/src/checklist/checklist.service.d.ts +21 -0
- package/dist/src/checklist/checklist.service.js +258 -0
- package/dist/src/checklist/checklist.service.js.map +1 -0
- package/dist/src/checklist/checklist.types.d.ts +56 -0
- package/dist/src/checklist/checklist.types.js +24 -0
- package/dist/src/checklist/checklist.types.js.map +1 -0
- package/dist/src/checklist/index.d.ts +3 -0
- package/dist/src/checklist/index.js +20 -0
- package/dist/src/checklist/index.js.map +1 -0
- package/dist/src/cli/cli.types.d.ts +1 -6
- package/dist/src/cli/index.d.ts +1 -1
- package/dist/src/cli/index.js.map +1 -1
- package/dist/src/cli/init/config.generator.d.ts +1 -0
- package/dist/src/cli/init/config.generator.js +10 -2
- package/dist/src/cli/init/config.generator.js.map +1 -1
- package/dist/src/cli/init/init.command.js +19 -1
- package/dist/src/cli/init/init.command.js.map +1 -1
- package/dist/src/cli/init/prompts/agent-prompt.d.ts +9 -0
- package/dist/src/cli/init/prompts/agent-prompt.js +28 -0
- package/dist/src/cli/init/prompts/agent-prompt.js.map +1 -0
- package/dist/src/cli/init/prompts/index.d.ts +7 -0
- package/dist/src/cli/init/prompts/index.js +16 -0
- package/dist/src/cli/init/prompts/index.js.map +1 -0
- package/dist/src/cli/init/prompts/language-prompt.d.ts +8 -0
- package/dist/src/cli/init/prompts/language-prompt.js +30 -0
- package/dist/src/cli/init/prompts/language-prompt.js.map +1 -0
- package/dist/src/cli/init/prompts/model-prompt.d.ts +8 -0
- package/dist/src/cli/init/prompts/model-prompt.js +36 -0
- package/dist/src/cli/init/prompts/model-prompt.js.map +1 -0
- package/dist/src/cli/init/templates/template.renderer.js +21 -1
- package/dist/src/cli/init/templates/template.renderer.js.map +1 -1
- package/dist/src/cli/init/templates/template.types.d.ts +2 -0
- package/dist/src/config/config.schema.d.ts +9 -0
- package/dist/src/config/config.schema.js +6 -1
- package/dist/src/config/config.schema.js.map +1 -1
- package/dist/src/context/context.module.d.ts +2 -0
- package/dist/src/context/context.module.js +23 -0
- package/dist/src/context/context.module.js.map +1 -0
- package/dist/src/context/context.service.d.ts +21 -0
- package/dist/src/context/context.service.js +286 -0
- package/dist/src/context/context.service.js.map +1 -0
- package/dist/src/context/context.types.d.ts +50 -0
- package/dist/src/context/context.types.js +42 -0
- package/dist/src/context/context.types.js.map +1 -0
- package/dist/src/context/index.d.ts +3 -0
- package/dist/src/context/index.js +20 -0
- package/dist/src/context/index.js.map +1 -0
- package/dist/src/context/intent-patterns.d.ts +7 -0
- package/dist/src/context/intent-patterns.js +50 -0
- package/dist/src/context/intent-patterns.js.map +1 -0
- package/dist/src/keyword/activation-message.builder.d.ts +14 -0
- package/dist/src/keyword/activation-message.builder.js +80 -0
- package/dist/src/keyword/activation-message.builder.js.map +1 -0
- package/dist/src/keyword/keyword.module.js +39 -4
- package/dist/src/keyword/keyword.module.js.map +1 -1
- package/dist/src/keyword/keyword.service.d.ts +18 -3
- package/dist/src/keyword/keyword.service.js +146 -53
- package/dist/src/keyword/keyword.service.js.map +1 -1
- package/dist/src/keyword/keyword.types.d.ts +61 -0
- package/dist/src/keyword/keyword.types.js +83 -1
- package/dist/src/keyword/keyword.types.js.map +1 -1
- package/dist/src/keyword/primary-agent-resolver.d.ts +30 -0
- package/dist/src/keyword/primary-agent-resolver.js +376 -0
- package/dist/src/keyword/primary-agent-resolver.js.map +1 -0
- package/dist/src/keyword/rule-filter.d.ts +3 -0
- package/dist/src/keyword/rule-filter.js +64 -0
- package/dist/src/keyword/rule-filter.js.map +1 -0
- package/dist/src/mcp/handlers/agent.handler.d.ts +11 -0
- package/dist/src/mcp/handlers/agent.handler.js +167 -0
- package/dist/src/mcp/handlers/agent.handler.js.map +1 -0
- package/dist/src/mcp/handlers/base.handler.d.ts +15 -0
- package/dist/src/mcp/handlers/base.handler.js +3 -0
- package/dist/src/mcp/handlers/base.handler.js.map +1 -0
- package/dist/src/mcp/handlers/checklist-context.handler.d.ts +13 -0
- package/dist/src/mcp/handlers/checklist-context.handler.js +141 -0
- package/dist/src/mcp/handlers/checklist-context.handler.js.map +1 -0
- package/dist/src/mcp/handlers/config.handler.d.ts +15 -0
- package/dist/src/mcp/handlers/config.handler.js +104 -0
- package/dist/src/mcp/handlers/config.handler.js.map +1 -0
- package/dist/src/mcp/handlers/index.d.ts +8 -0
- package/dist/src/mcp/handlers/index.js +17 -0
- package/dist/src/mcp/handlers/index.js.map +1 -0
- package/dist/src/mcp/handlers/mode.handler.d.ts +16 -0
- package/dist/src/mcp/handlers/mode.handler.js +100 -0
- package/dist/src/mcp/handlers/mode.handler.js.map +1 -0
- package/dist/src/mcp/handlers/rules.handler.d.ts +11 -0
- package/dist/src/mcp/handlers/rules.handler.js +99 -0
- package/dist/src/mcp/handlers/rules.handler.js.map +1 -0
- package/dist/src/mcp/handlers/skill.handler.d.ts +11 -0
- package/dist/src/mcp/handlers/skill.handler.js +111 -0
- package/dist/src/mcp/handlers/skill.handler.js.map +1 -0
- package/dist/src/mcp/mcp-serverless.d.ts +0 -2
- package/dist/src/mcp/mcp-serverless.js +19 -29
- package/dist/src/mcp/mcp-serverless.js.map +1 -1
- package/dist/src/mcp/mcp.module.js +29 -1
- package/dist/src/mcp/mcp.module.js.map +1 -1
- package/dist/src/mcp/mcp.service.d.ts +3 -18
- package/dist/src/mcp/mcp.service.js +13 -216
- package/dist/src/mcp/mcp.service.js.map +1 -1
- package/dist/src/mcp/response.utils.d.ts +10 -0
- package/dist/src/mcp/response.utils.js +16 -0
- package/dist/src/mcp/response.utils.js.map +1 -0
- package/dist/src/model/index.d.ts +4 -0
- package/dist/src/model/index.js +23 -0
- package/dist/src/model/index.js.map +1 -0
- package/dist/src/model/model-resolver.service.d.ts +13 -0
- package/dist/src/model/model-resolver.service.js +63 -0
- package/dist/src/model/model-resolver.service.js.map +1 -0
- package/dist/src/model/model.constants.d.ts +4 -0
- package/dist/src/model/model.constants.js +8 -0
- package/dist/src/model/model.constants.js.map +1 -0
- package/dist/src/model/model.resolver.d.ts +7 -0
- package/dist/src/model/model.resolver.js +56 -0
- package/dist/src/model/model.resolver.js.map +1 -0
- package/dist/src/model/model.types.d.ts +17 -0
- package/dist/src/model/model.types.js +11 -0
- package/dist/src/model/model.types.js.map +1 -0
- package/dist/src/rules/agent.schema.d.ts +15 -0
- package/dist/src/rules/agent.schema.js +9 -0
- package/dist/src/rules/agent.schema.js.map +1 -1
- package/dist/src/shared/agent.utils.d.ts +1 -0
- package/dist/src/shared/agent.utils.js +14 -0
- package/dist/src/shared/agent.utils.js.map +1 -0
- package/dist/src/shared/filesystem.interface.d.ts +15 -0
- package/dist/src/shared/filesystem.interface.js +14 -0
- package/dist/src/shared/filesystem.interface.js.map +1 -0
- package/dist/src/shared/language.service.d.ts +9 -0
- package/dist/src/shared/language.service.js +108 -0
- package/dist/src/shared/language.service.js.map +1 -0
- package/dist/src/shared/language.types.d.ts +12 -0
- package/dist/src/shared/language.types.js +3 -0
- package/dist/src/shared/language.types.js.map +1 -0
- package/dist/src/shared/node-filesystem.service.d.ts +5 -0
- package/dist/src/shared/node-filesystem.service.js +25 -0
- package/dist/src/shared/node-filesystem.service.js.map +1 -0
- package/dist/src/shared/path.utils.js.map +1 -1
- package/dist/src/shared/pattern-matcher.d.ts +11 -0
- package/dist/src/shared/pattern-matcher.js +39 -0
- package/dist/src/shared/pattern-matcher.js.map +1 -0
- package/dist/src/shared/security.utils.d.ts +17 -0
- package/dist/src/shared/security.utils.js +63 -0
- package/dist/src/shared/security.utils.js.map +1 -1
- package/dist/src/shared/validation.constants.d.ts +10 -0
- package/dist/src/shared/validation.constants.js +42 -1
- package/dist/src/shared/validation.constants.js.map +1 -1
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/package.json +4 -2
- package/dist/src/config/config.types.d.ts +0 -2
- package/dist/src/config/config.types.js +0 -6
- 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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
53
|
-
|
|
54
|
-
|
|
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
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
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
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
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
|
-
|
|
89
|
-
|
|
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
|
-
|
|
101
|
-
|
|
102
|
-
|
|
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:
|
|
144
|
-
description:
|
|
145
|
-
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":";;;AAAA,
|
|
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 {};
|