codingbuddy 0.0.0-canary.20260106061736.7e8c714 β 0.0.0-canary.20260106072742.5537605
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/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.service.d.ts +2 -0
- package/dist/src/keyword/keyword.service.js +41 -1
- package/dist/src/keyword/keyword.service.js.map +1 -1
- package/dist/src/keyword/keyword.types.d.ts +30 -0
- package/dist/src/keyword/keyword.types.js +21 -1
- package/dist/src/keyword/keyword.types.js.map +1 -1
- package/dist/src/keyword/primary-agent-resolver.d.ts +4 -6
- package/dist/src/keyword/primary-agent-resolver.js +55 -100
- package/dist/src/keyword/primary-agent-resolver.js.map +1 -1
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/package.json +2 -2
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { type ActivationMessage } from './keyword.types';
|
|
2
|
+
export declare class ActivationMessageBuilder {
|
|
3
|
+
private activations;
|
|
4
|
+
addAgentActivation(name: string, tier: 'primary' | 'specialist', activatedBy?: string): this;
|
|
5
|
+
addSkillActivation(name: string, activatedBy?: string): this;
|
|
6
|
+
build(): ActivationMessage | undefined;
|
|
7
|
+
private formatActivations;
|
|
8
|
+
private getIcon;
|
|
9
|
+
private getTierLabel;
|
|
10
|
+
reset(): this;
|
|
11
|
+
static forPrimaryAgent(agentName: string, activatedBy?: string): ActivationMessage;
|
|
12
|
+
static forSpecialistAgent(agentName: string, activatedBy?: string): ActivationMessage;
|
|
13
|
+
static forSkill(skillName: string, activatedBy?: string): ActivationMessage;
|
|
14
|
+
}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ActivationMessageBuilder = void 0;
|
|
4
|
+
class ActivationMessageBuilder {
|
|
5
|
+
constructor() {
|
|
6
|
+
this.activations = [];
|
|
7
|
+
}
|
|
8
|
+
addAgentActivation(name, tier, activatedBy) {
|
|
9
|
+
this.activations.push({
|
|
10
|
+
type: 'agent',
|
|
11
|
+
name,
|
|
12
|
+
tier,
|
|
13
|
+
activatedBy,
|
|
14
|
+
timestamp: new Date().toISOString(),
|
|
15
|
+
});
|
|
16
|
+
return this;
|
|
17
|
+
}
|
|
18
|
+
addSkillActivation(name, activatedBy) {
|
|
19
|
+
this.activations.push({
|
|
20
|
+
type: 'skill',
|
|
21
|
+
name,
|
|
22
|
+
tier: 'specialist',
|
|
23
|
+
activatedBy,
|
|
24
|
+
timestamp: new Date().toISOString(),
|
|
25
|
+
});
|
|
26
|
+
return this;
|
|
27
|
+
}
|
|
28
|
+
build() {
|
|
29
|
+
if (this.activations.length === 0) {
|
|
30
|
+
return undefined;
|
|
31
|
+
}
|
|
32
|
+
const formatted = this.formatActivations();
|
|
33
|
+
return {
|
|
34
|
+
activations: [...this.activations],
|
|
35
|
+
formatted,
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
formatActivations() {
|
|
39
|
+
const lines = [];
|
|
40
|
+
for (const activation of this.activations) {
|
|
41
|
+
const icon = this.getIcon(activation);
|
|
42
|
+
const tierLabel = this.getTierLabel(activation.tier);
|
|
43
|
+
const activatedByText = activation.activatedBy
|
|
44
|
+
? ` (by ${activation.activatedBy})`
|
|
45
|
+
: '';
|
|
46
|
+
lines.push(`${icon} ${activation.name} [${tierLabel}]${activatedByText}`);
|
|
47
|
+
}
|
|
48
|
+
return lines.join('\n');
|
|
49
|
+
}
|
|
50
|
+
getIcon(activation) {
|
|
51
|
+
if (activation.type === 'skill') {
|
|
52
|
+
return 'β‘';
|
|
53
|
+
}
|
|
54
|
+
return activation.tier === 'primary' ? 'π€' : 'π€';
|
|
55
|
+
}
|
|
56
|
+
getTierLabel(tier) {
|
|
57
|
+
return tier === 'primary' ? 'Primary Agent' : 'Specialist';
|
|
58
|
+
}
|
|
59
|
+
reset() {
|
|
60
|
+
this.activations = [];
|
|
61
|
+
return this;
|
|
62
|
+
}
|
|
63
|
+
static forPrimaryAgent(agentName, activatedBy) {
|
|
64
|
+
return new ActivationMessageBuilder()
|
|
65
|
+
.addAgentActivation(agentName, 'primary', activatedBy)
|
|
66
|
+
.build();
|
|
67
|
+
}
|
|
68
|
+
static forSpecialistAgent(agentName, activatedBy) {
|
|
69
|
+
return new ActivationMessageBuilder()
|
|
70
|
+
.addAgentActivation(agentName, 'specialist', activatedBy)
|
|
71
|
+
.build();
|
|
72
|
+
}
|
|
73
|
+
static forSkill(skillName, activatedBy) {
|
|
74
|
+
return new ActivationMessageBuilder()
|
|
75
|
+
.addSkillActivation(skillName, activatedBy)
|
|
76
|
+
.build();
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
exports.ActivationMessageBuilder = ActivationMessageBuilder;
|
|
80
|
+
//# sourceMappingURL=activation-message.builder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"activation-message.builder.js","sourceRoot":"","sources":["../../../src/keyword/activation-message.builder.ts"],"names":[],"mappings":"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"}
|
|
@@ -13,7 +13,9 @@ export declare class KeywordService {
|
|
|
13
13
|
private checkForMultipleKeywords;
|
|
14
14
|
private checkForEmptyContent;
|
|
15
15
|
private buildParseModeResult;
|
|
16
|
+
private getPrimaryAgentTier;
|
|
16
17
|
private getParallelAgentsRecommendation;
|
|
18
|
+
private getActAgentRecommendation;
|
|
17
19
|
loadModeConfig(): Promise<KeywordModesConfig>;
|
|
18
20
|
getRulesForMode(mode: Mode): Promise<RuleContent[]>;
|
|
19
21
|
private getAgentInfo;
|
|
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.KeywordService = void 0;
|
|
4
4
|
const common_1 = require("@nestjs/common");
|
|
5
5
|
const keyword_types_1 = require("./keyword.types");
|
|
6
|
+
const activation_message_builder_1 = require("./activation-message.builder");
|
|
6
7
|
const DEFAULT_CONFIG = {
|
|
7
8
|
modes: {
|
|
8
9
|
PLAN: {
|
|
@@ -122,8 +123,30 @@ class KeywordService {
|
|
|
122
123
|
if (parallelAgentsRecommendation) {
|
|
123
124
|
result.parallelAgentsRecommendation = parallelAgentsRecommendation;
|
|
124
125
|
}
|
|
126
|
+
if (mode === 'PLAN' && this.primaryAgentResolver) {
|
|
127
|
+
const actRecommendation = await this.getActAgentRecommendation(originalPrompt);
|
|
128
|
+
if (actRecommendation) {
|
|
129
|
+
result.recommended_act_agent = actRecommendation;
|
|
130
|
+
result.available_act_agents = [...keyword_types_1.ACT_PRIMARY_AGENTS];
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
if (resolvedAgent) {
|
|
134
|
+
const tier = this.getPrimaryAgentTier(resolvedAgent.agentName);
|
|
135
|
+
const activationMessage = activation_message_builder_1.ActivationMessageBuilder.forPrimaryAgent(resolvedAgent.agentName);
|
|
136
|
+
if (tier === 'specialist') {
|
|
137
|
+
result.activation_message = activation_message_builder_1.ActivationMessageBuilder.forSpecialistAgent(resolvedAgent.agentName);
|
|
138
|
+
}
|
|
139
|
+
else {
|
|
140
|
+
result.activation_message = activationMessage;
|
|
141
|
+
}
|
|
142
|
+
}
|
|
125
143
|
return result;
|
|
126
144
|
}
|
|
145
|
+
getPrimaryAgentTier(agentName) {
|
|
146
|
+
return keyword_types_1.ALL_PRIMARY_AGENTS_LIST.includes(agentName)
|
|
147
|
+
? 'primary'
|
|
148
|
+
: 'specialist';
|
|
149
|
+
}
|
|
127
150
|
getParallelAgentsRecommendation(mode, config) {
|
|
128
151
|
const modeConfig = config.modes[mode];
|
|
129
152
|
const specialists = modeConfig?.defaultSpecialists;
|
|
@@ -135,6 +158,23 @@ class KeywordService {
|
|
|
135
158
|
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.`,
|
|
136
159
|
};
|
|
137
160
|
}
|
|
161
|
+
async getActAgentRecommendation(prompt) {
|
|
162
|
+
if (!this.primaryAgentResolver) {
|
|
163
|
+
return undefined;
|
|
164
|
+
}
|
|
165
|
+
try {
|
|
166
|
+
const result = await this.primaryAgentResolver.resolve('ACT', prompt);
|
|
167
|
+
return {
|
|
168
|
+
agentName: result.agentName,
|
|
169
|
+
reason: result.reason,
|
|
170
|
+
confidence: result.confidence,
|
|
171
|
+
};
|
|
172
|
+
}
|
|
173
|
+
catch (error) {
|
|
174
|
+
this.logger.debug(`Failed to get ACT agent recommendation: ${error instanceof Error ? error.message : 'Unknown error'}`);
|
|
175
|
+
return undefined;
|
|
176
|
+
}
|
|
177
|
+
}
|
|
138
178
|
async loadModeConfig() {
|
|
139
179
|
if (this.configCache) {
|
|
140
180
|
return this.configCache;
|
|
@@ -195,7 +235,7 @@ class KeywordService {
|
|
|
195
235
|
return { agentName: staticDelegatesTo, source: 'default' };
|
|
196
236
|
}
|
|
197
237
|
if (mode !== 'EVAL') {
|
|
198
|
-
return { agentName:
|
|
238
|
+
return { agentName: keyword_types_1.DEFAULT_ACT_AGENT, source: 'default' };
|
|
199
239
|
}
|
|
200
240
|
return null;
|
|
201
241
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"keyword.service.js","sourceRoot":"","sources":["../../../src/keyword/keyword.service.ts"],"names":[],"mappings":";;;AAAA,2CAAwC;AACxC,
|
|
1
|
+
{"version":3,"file":"keyword.service.js","sourceRoot":"","sources":["../../../src/keyword/keyword.service.ts"],"names":[],"mappings":";;;AAAA,2CAAwC;AACxC,mDAgByB;AAEzB,6EAAwE;AAExE,MAAM,cAAc,GAAuB;IACzC,KAAK,EAAE;QACL,IAAI,EAAE;YACJ,WAAW,EAAE,gCAAgC;YAC7C,YAAY,EACV,2GAA2G;YAC7G,KAAK,EAAE,CAAC,eAAe,EAAE,2BAA2B,CAAC;YACrD,KAAK,EAAE,2BAAW,CAAC,CAAC,CAAC;YAErB,kBAAkB,EAAE;gBAClB,yBAAyB;gBACzB,0BAA0B;aAC3B;SACF;QACD,GAAG,EAAE;YACH,WAAW,EAAE,6BAA6B;YAC1C,YAAY,EACV,4GAA4G;YAC9G,KAAK,EAAE,CAAC,eAAe,EAAE,kBAAkB,EAAE,2BAA2B,CAAC;YACzE,KAAK,EAAE,2BAAW,CAAC,CAAC,CAAC;YAErB,kBAAkB,EAAE;gBAClB,yBAAyB;gBACzB,0BAA0B;aAC3B;SACF;QACD,IAAI,EAAE;YACJ,WAAW,EAAE,oCAAoC;YACjD,YAAY,EACV,0FAA0F;YAC5F,KAAK,EAAE,CAAC,eAAe,EAAE,2BAA2B,CAAC;YACrD,KAAK,EAAE,2BAAW,CAAC,CAAC,CAAC;YACrB,YAAY,EAAE,eAAe;YAC7B,kBAAkB,EAAE;gBAClB,qBAAqB;gBACrB,0BAA0B;gBAC1B,wBAAwB;gBACxB,yBAAyB;aAC1B;SACF;KACF;IACD,WAAW,EAAE,MAAM;CACpB,CAAC;AAEF,MAAa,cAAc;IAKzB,YACmB,YAA+C,EAC/C,UAA6C,EAC7C,eAAyD,EAC1E,oBAA2C;QAH1B,iBAAY,GAAZ,YAAY,CAAmC;QAC/C,eAAU,GAAV,UAAU,CAAmC;QAC7C,oBAAe,GAAf,eAAe,CAA0C;QAP3D,WAAM,GAAG,IAAI,eAAM,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;QAClD,gBAAW,GAA8B,IAAI,CAAC;QASpD,IAAI,CAAC,oBAAoB,GAAG,oBAAoB,CAAC;IACnD,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,MAAc;QAC5B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;QAC3C,MAAM,EAAE,IAAI,EAAE,cAAc,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,qBAAqB,CACnE,MAAM,EACN,MAAM,CAAC,WAAW,CACnB,CAAC;QAEF,MAAM,UAAU,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACtC,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;QAE/C,OAAO,IAAI,CAAC,oBAAoB,CAC9B,IAAI,EACJ,cAAc,EACd,QAAQ,EACR,UAAU,EACV,KAAK,EACL,MAAM,CACP,CAAC;IACJ,CAAC;IAMO,qBAAqB,CAC3B,MAAc,EACd,WAAiB;QAEjB,MAAM,QAAQ,GAAa,EAAE,CAAC;QAC9B,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC;QAC9B,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACnC,MAAM,SAAS,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QACjC,MAAM,cAAc,GAAG,SAAS,CAAC,WAAW,EAAE,CAAC;QAG/C,MAAM,gBAAgB,GAAG,wBAAQ,CAAC,QAAQ,CAAC,cAAsB,CAAC,CAAC;QAEnE,MAAM,aAAa,GACjB,qCAAqB,CAAC,SAAS,CAAC,IAAI,qCAAqB,CAAC,cAAc,CAAC,CAAC;QAE5E,IAAI,gBAAgB,EAAE,CAAC;YACrB,MAAM,IAAI,GAAG,cAAsB,CAAC;YACpC,MAAM,cAAc,GAAG,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC;YAC9D,IAAI,CAAC,wBAAwB,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;YAC/C,IAAI,CAAC,oBAAoB,CAAC,cAAc,EAAE,QAAQ,CAAC,CAAC;YACpD,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,QAAQ,EAAE,CAAC;QAC5C,CAAC;QAED,IAAI,aAAa,EAAE,CAAC;YAClB,MAAM,cAAc,GAAG,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC;YAC9D,IAAI,CAAC,wBAAwB,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;YAC/C,IAAI,CAAC,oBAAoB,CAAC,cAAc,EAAE,QAAQ,CAAC,CAAC;YACpD,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE,cAAc,EAAE,QAAQ,EAAE,CAAC;QAC3D,CAAC;QAGD,QAAQ,CAAC,IAAI,CAAC,sCAAsC,CAAC,CAAC;QACtD,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,cAAc,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC;IAClE,CAAC;IAKO,wBAAwB,CAAC,KAAe,EAAE,QAAkB;QAClE,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC;YAAE,OAAO;QAE9B,MAAM,UAAU,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QAC5B,MAAM,eAAe,GAAG,UAAU,CAAC,WAAW,EAAE,CAAC;QACjD,MAAM,eAAe,GACnB,wBAAQ,CAAC,QAAQ,CAAC,eAAuB,CAAC;YAC1C,qCAAqB,CAAC,UAAU,CAAC,KAAK,SAAS;YAC/C,qCAAqB,CAAC,eAAe,CAAC,KAAK,SAAS,CAAC;QAEvD,IAAI,eAAe,EAAE,CAAC;YACpB,QAAQ,CAAC,IAAI,CAAC,sCAAsC,CAAC,CAAC;QACxD,CAAC;IACH,CAAC;IAKO,oBAAoB,CAC1B,cAAsB,EACtB,QAAkB;QAElB,IAAI,cAAc,KAAK,EAAE,EAAE,CAAC;YAC1B,QAAQ,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;QACnD,CAAC;IACH,CAAC;IAKO,KAAK,CAAC,oBAAoB,CAChC,IAAU,EACV,cAAsB,EACtB,QAAkB,EAClB,UAA6C,EAC7C,KAAoB,EACpB,MAA0B;QAE1B,MAAM,MAAM,GAAoB;YAC9B,IAAI;YACJ,cAAc;YACd,YAAY,EAAE,UAAU,CAAC,YAAY;YACrC,KAAK;YACL,GAAG,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC7C,CAAC;QAEF,IAAI,UAAU,CAAC,KAAK,EAAE,CAAC;YACrB,MAAM,CAAC,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC;QAClC,CAAC;QAGD,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAClD,IAAI,EACJ,cAAc,EACd,UAAU,CAAC,YAAY,CACxB,CAAC;QAEF,IAAI,aAAa,EAAE,CAAC;YAClB,MAAM,CAAC,YAAY,GAAG,aAAa,CAAC,SAAS,CAAC;YAC9C,MAAM,CAAC,oBAAoB,GAAG,aAAa,CAAC,MAAM,CAAC;YAEnD,MAAM,iBAAiB,GAAG,MAAM,IAAI,CAAC,YAAY,CAC/C,aAAa,CAAC,SAAS,CACxB,CAAC;YACF,IAAI,iBAAiB,EAAE,CAAC;gBACtB,MAAM,CAAC,mBAAmB,GAAG,iBAAiB,CAAC;YACjD,CAAC;QACH,CAAC;QAGD,MAAM,4BAA4B,GAAG,IAAI,CAAC,+BAA+B,CACvE,IAAI,EACJ,MAAM,CACP,CAAC;QACF,IAAI,4BAA4B,EAAE,CAAC;YACjC,MAAM,CAAC,4BAA4B,GAAG,4BAA4B,CAAC;QACrE,CAAC;QAGD,IAAI,IAAI,KAAK,MAAM,IAAI,IAAI,CAAC,oBAAoB,EAAE,CAAC;YACjD,MAAM,iBAAiB,GACrB,MAAM,IAAI,CAAC,yBAAyB,CAAC,cAAc,CAAC,CAAC;YACvD,IAAI,iBAAiB,EAAE,CAAC;gBACtB,MAAM,CAAC,qBAAqB,GAAG,iBAAiB,CAAC;gBACjD,MAAM,CAAC,oBAAoB,GAAG,CAAC,GAAG,kCAAkB,CAAC,CAAC;YACxD,CAAC;QACH,CAAC;QAGD,IAAI,aAAa,EAAE,CAAC;YAClB,MAAM,IAAI,GAAG,IAAI,CAAC,mBAAmB,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;YAC/D,MAAM,iBAAiB,GAAG,qDAAwB,CAAC,eAAe,CAChE,aAAa,CAAC,SAAS,CACxB,CAAC;YAEF,IAAI,IAAI,KAAK,YAAY,EAAE,CAAC;gBAC1B,MAAM,CAAC,kBAAkB,GAAG,qDAAwB,CAAC,kBAAkB,CACrE,aAAa,CAAC,SAAS,CACxB,CAAC;YACJ,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,kBAAkB,GAAG,iBAAiB,CAAC;YAChD,CAAC;QACH,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAKO,mBAAmB,CAAC,SAAiB;QAC3C,OAAO,uCAAuB,CAAC,QAAQ,CAAC,SAAS,CAAC;YAChD,CAAC,CAAC,SAAS;YACX,CAAC,CAAC,YAAY,CAAC;IACnB,CAAC;IAMO,+BAA+B,CACrC,IAAU,EACV,MAA0B;QAE1B,MAAM,UAAU,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACtC,MAAM,WAAW,GAAG,UAAU,EAAE,kBAAkB,CAAC;QACnD,IAAI,CAAC,WAAW,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC7C,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,OAAO;YACL,WAAW,EAAE,CAAC,GAAG,WAAW,CAAC;YAC7B,IAAI,EAAE,uKAAuK;SAC9K,CAAC;IACJ,CAAC;IAMO,KAAK,CAAC,yBAAyB,CACrC,MAAc;QAEd,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC;YAC/B,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,IAAI,CAAC;YAEH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;YAEtE,OAAO;gBACL,SAAS,EAAE,MAAM,CAAC,SAAS;gBAC3B,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,UAAU,EAAE,MAAM,CAAC,UAAU;aAC9B,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,MAAM,CAAC,KAAK,CACf,2CAA2C,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,EAAE,CACtG,CAAC;YACF,OAAO,SAAS,CAAC;QACnB,CAAC;IACH,CAAC;IAED,KAAK,CAAC,cAAc;QAClB,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACrB,OAAO,IAAI,CAAC,WAAW,CAAC;QAC1B,CAAC;QAED,IAAI,CAAC;YACH,IAAI,CAAC,WAAW,GAAG,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;YAC7C,OAAO,IAAI,CAAC,WAAW,CAAC;QAC1B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,MAAM,CAAC,KAAK,CACf,+CAA+C,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,EAAE,CAC1G,CAAC;YACF,IAAI,CAAC,WAAW,GAAG,cAAc,CAAC;YAClC,OAAO,cAAc,CAAC;QACxB,CAAC;IACH,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,IAAU;QAC9B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;QAC3C,MAAM,UAAU,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACtC,MAAM,KAAK,GAAkB,EAAE,CAAC;QAEhC,KAAK,MAAM,QAAQ,IAAI,UAAU,CAAC,KAAK,EAAE,CAAC;YACxC,IAAI,CAAC;gBACH,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;gBAChD,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC;YAC1C,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAI,CAAC,MAAM,CAAC,KAAK,CACf,uBAAuB,QAAQ,MAAM,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,EAAE,CAChG,CAAC;YACJ,CAAC;QACH,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAEO,KAAK,CAAC,YAAY,CACxB,SAAiB;QAEjB,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC;YAC1B,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,IAAI,CAAC;YACH,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;YAGxD,IAAI,CAAC,SAAS,IAAI,OAAO,SAAS,KAAK,QAAQ,EAAE,CAAC;gBAChD,OAAO,SAAS,CAAC;YACnB,CAAC;YAED,MAAM,KAAK,GAAG,SAAoC,CAAC;YACnD,MAAM,IAAI,GAAG,KAAK,CAAC,IAA2C,CAAC;YAE/D,OAAO;gBACL,IAAI,EAAE,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS;gBAC7D,WAAW,EACT,OAAO,KAAK,CAAC,WAAW,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE;gBAChE,SAAS,EAAE,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE;aAChE,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,MAAM,CAAC,KAAK,CACf,kCAAkC,SAAS,MAAM,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,EAAE,CAC5G,CAAC;YACF,OAAO,SAAS,CAAC;QACnB,CAAC;IACH,CAAC;IAMO,KAAK,CAAC,mBAAmB,CAC/B,IAAU,EACV,MAAc,EACd,iBAA0B,EAC1B,OAA2B;QAM3B,IAAI,IAAI,CAAC,oBAAoB,EAAE,CAAC;YAC9B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,oBAAoB,CAAC,OAAO,CACpD,IAAI,EACJ,MAAM,EACN,OAAO,CACR,CAAC;YACF,OAAO,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC;QAChE,CAAC;QAGD,IAAI,iBAAiB,EAAE,CAAC;YACtB,OAAO,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;QAC7D,CAAC;QAGD,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;YACpB,OAAO,EAAE,SAAS,EAAE,iCAAiB,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;QAC7D,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;CACF;AAxVD,wCAwVC"}
|
|
@@ -2,6 +2,17 @@ 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 ["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", "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[];
|
|
5
16
|
export declare const LOCALIZED_KEYWORD_MAP: Record<string, Mode>;
|
|
6
17
|
export declare const KOREAN_KEYWORD_MAP: Record<string, "PLAN" | "ACT" | "EVAL">;
|
|
7
18
|
export interface RuleContent {
|
|
@@ -28,6 +39,22 @@ export interface ResolutionContext {
|
|
|
28
39
|
filePath?: string;
|
|
29
40
|
projectType?: string;
|
|
30
41
|
}
|
|
42
|
+
export interface ActAgentRecommendation {
|
|
43
|
+
agentName: string;
|
|
44
|
+
reason: string;
|
|
45
|
+
confidence: number;
|
|
46
|
+
}
|
|
47
|
+
export interface AgentActivation {
|
|
48
|
+
type: 'agent' | 'skill';
|
|
49
|
+
name: string;
|
|
50
|
+
tier: 'primary' | 'specialist';
|
|
51
|
+
activatedBy?: string;
|
|
52
|
+
timestamp: string;
|
|
53
|
+
}
|
|
54
|
+
export interface ActivationMessage {
|
|
55
|
+
activations: AgentActivation[];
|
|
56
|
+
formatted: string;
|
|
57
|
+
}
|
|
31
58
|
export interface ParseModeResult {
|
|
32
59
|
mode: Mode;
|
|
33
60
|
originalPrompt: string;
|
|
@@ -39,6 +66,9 @@ export interface ParseModeResult {
|
|
|
39
66
|
delegate_agent_info?: AgentInfo;
|
|
40
67
|
primary_agent_source?: PrimaryAgentSource;
|
|
41
68
|
parallelAgentsRecommendation?: ParallelAgentRecommendation;
|
|
69
|
+
recommended_act_agent?: ActAgentRecommendation;
|
|
70
|
+
available_act_agents?: string[];
|
|
71
|
+
activation_message?: ActivationMessage;
|
|
42
72
|
}
|
|
43
73
|
export interface ModeConfig {
|
|
44
74
|
description: string;
|
|
@@ -1,8 +1,28 @@
|
|
|
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.LOCALIZED_KEYWORD_MAP = 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
|
+
'frontend-developer',
|
|
12
|
+
'backend-developer',
|
|
13
|
+
'devops-engineer',
|
|
14
|
+
'agent-architect',
|
|
15
|
+
];
|
|
16
|
+
exports.EVAL_PRIMARY_AGENT = 'code-reviewer';
|
|
17
|
+
exports.DEFAULT_ACT_AGENT = 'frontend-developer';
|
|
18
|
+
exports.ALL_PRIMARY_AGENTS = [
|
|
19
|
+
...exports.PLAN_PRIMARY_AGENTS,
|
|
20
|
+
...exports.ACT_PRIMARY_AGENTS,
|
|
21
|
+
exports.EVAL_PRIMARY_AGENT,
|
|
22
|
+
];
|
|
23
|
+
exports.PLAN_PRIMARY_AGENTS_LIST = [...exports.PLAN_PRIMARY_AGENTS];
|
|
24
|
+
exports.ACT_PRIMARY_AGENTS_LIST = [...exports.ACT_PRIMARY_AGENTS];
|
|
25
|
+
exports.ALL_PRIMARY_AGENTS_LIST = [...exports.ALL_PRIMARY_AGENTS];
|
|
6
26
|
exports.LOCALIZED_KEYWORD_MAP = {
|
|
7
27
|
κ³ν: 'PLAN',
|
|
8
28
|
μ€ν: 'ACT',
|
|
@@ -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,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;AAG5D,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"}
|
|
@@ -8,18 +8,16 @@ export declare class PrimaryAgentResolver {
|
|
|
8
8
|
private readonly getProjectConfig;
|
|
9
9
|
private readonly listPrimaryAgents;
|
|
10
10
|
private readonly logger;
|
|
11
|
-
private static readonly DEFAULT_AGENT;
|
|
12
|
-
private static readonly EVAL_AGENT;
|
|
13
|
-
private static readonly DEFAULT_FALLBACK_AGENTS;
|
|
14
11
|
private static readonly EXPLICIT_PATTERNS;
|
|
15
12
|
private static readonly CONTEXT_PATTERNS;
|
|
16
|
-
private static readonly INTENT_PATTERNS;
|
|
17
13
|
constructor(getProjectConfig: GetProjectConfigFn, listPrimaryAgents: ListPrimaryAgentsFn);
|
|
18
|
-
resolve(mode: Mode, prompt: string, context?: ResolutionContext): Promise<PrimaryAgentResolutionResult>;
|
|
14
|
+
resolve(mode: Mode, prompt: string, context?: ResolutionContext, recommendedActAgent?: string): Promise<PrimaryAgentResolutionResult>;
|
|
15
|
+
private resolvePlanAgent;
|
|
16
|
+
private choosePlanAgent;
|
|
17
|
+
private resolveActAgent;
|
|
19
18
|
private parseExplicitRequest;
|
|
20
19
|
private getFromProjectConfig;
|
|
21
20
|
private inferFromContext;
|
|
22
|
-
private analyzeIntent;
|
|
23
21
|
private safeListPrimaryAgents;
|
|
24
22
|
private createResult;
|
|
25
23
|
}
|
|
@@ -2,43 +2,86 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.PrimaryAgentResolver = void 0;
|
|
4
4
|
const common_1 = require("@nestjs/common");
|
|
5
|
+
const keyword_types_1 = require("./keyword.types");
|
|
5
6
|
class PrimaryAgentResolver {
|
|
6
7
|
constructor(getProjectConfig, listPrimaryAgents) {
|
|
7
8
|
this.getProjectConfig = getProjectConfig;
|
|
8
9
|
this.listPrimaryAgents = listPrimaryAgents;
|
|
9
10
|
this.logger = new common_1.Logger(PrimaryAgentResolver.name);
|
|
10
11
|
}
|
|
11
|
-
async resolve(mode, prompt, context) {
|
|
12
|
+
async resolve(mode, prompt, context, recommendedActAgent) {
|
|
12
13
|
if (mode === 'EVAL') {
|
|
13
|
-
return this.createResult(
|
|
14
|
+
return this.createResult(keyword_types_1.EVAL_PRIMARY_AGENT, 'default', 1.0, 'EVAL mode always uses code-reviewer');
|
|
14
15
|
}
|
|
15
16
|
const availableAgents = await this.safeListPrimaryAgents();
|
|
16
|
-
|
|
17
|
+
if (mode === 'PLAN') {
|
|
18
|
+
return this.resolvePlanAgent(prompt, availableAgents);
|
|
19
|
+
}
|
|
20
|
+
return this.resolveActAgent(prompt, availableAgents, context, recommendedActAgent);
|
|
21
|
+
}
|
|
22
|
+
resolvePlanAgent(prompt, availableAgents) {
|
|
23
|
+
const explicit = this.parseExplicitRequest(prompt, availableAgents, keyword_types_1.PLAN_PRIMARY_AGENTS_LIST);
|
|
24
|
+
if (explicit) {
|
|
25
|
+
return explicit;
|
|
26
|
+
}
|
|
27
|
+
const planAgent = this.choosePlanAgent(prompt, availableAgents);
|
|
28
|
+
return planAgent;
|
|
29
|
+
}
|
|
30
|
+
choosePlanAgent(prompt, availableAgents) {
|
|
31
|
+
const architecturePatterns = /μν€ν
μ²|architecture|μμ€ν
\s*μ€κ³|system\s*design|ꡬ쑰|structure|API\s*μ€κ³|λ§μ΄ν¬λ‘μλΉμ€|microservice|κΈ°μ \s*μ ν|technology/i;
|
|
32
|
+
const planningPatterns = /κ³ν|plan|λ¨κ³|step|νμ€ν¬|task|TDD|ꡬν\s*μμ|implementation\s*order|리ν©ν λ§|refactor/i;
|
|
33
|
+
const hasArchitectureIntent = architecturePatterns.test(prompt);
|
|
34
|
+
const hasPlanningIntent = planningPatterns.test(prompt);
|
|
35
|
+
if (hasArchitectureIntent && !hasPlanningIntent) {
|
|
36
|
+
if (availableAgents.includes('solution-architect')) {
|
|
37
|
+
return this.createResult('solution-architect', 'intent', 0.9, 'Architecture-focused task detected in PLAN mode');
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
if (hasPlanningIntent && !hasArchitectureIntent) {
|
|
41
|
+
if (availableAgents.includes('technical-planner')) {
|
|
42
|
+
return this.createResult('technical-planner', 'intent', 0.9, 'Planning/implementation-focused task detected in PLAN mode');
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
if (hasArchitectureIntent && hasPlanningIntent) {
|
|
46
|
+
if (availableAgents.includes('solution-architect')) {
|
|
47
|
+
return this.createResult('solution-architect', 'intent', 0.85, 'Both architecture and planning detected; architecture takes precedence');
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
const defaultPlanAgent = availableAgents.includes('solution-architect')
|
|
51
|
+
? 'solution-architect'
|
|
52
|
+
: availableAgents.includes('technical-planner')
|
|
53
|
+
? 'technical-planner'
|
|
54
|
+
: keyword_types_1.DEFAULT_ACT_AGENT;
|
|
55
|
+
return this.createResult(defaultPlanAgent, 'default', 1.0, 'PLAN mode default: solution-architect for high-level design');
|
|
56
|
+
}
|
|
57
|
+
async resolveActAgent(prompt, availableAgents, context, recommendedActAgent) {
|
|
58
|
+
const explicit = this.parseExplicitRequest(prompt, availableAgents, keyword_types_1.ACT_PRIMARY_AGENTS_LIST);
|
|
17
59
|
if (explicit) {
|
|
18
60
|
return explicit;
|
|
19
61
|
}
|
|
62
|
+
if (recommendedActAgent && availableAgents.includes(recommendedActAgent)) {
|
|
63
|
+
return this.createResult(recommendedActAgent, 'config', 1.0, `Using recommended agent from PLAN mode: ${recommendedActAgent}`);
|
|
64
|
+
}
|
|
20
65
|
const fromConfig = await this.getFromProjectConfig(availableAgents);
|
|
21
66
|
if (fromConfig) {
|
|
22
67
|
return fromConfig;
|
|
23
68
|
}
|
|
24
|
-
const fromIntent = this.analyzeIntent(prompt, availableAgents);
|
|
25
|
-
if (fromIntent && fromIntent.confidence >= 0.8) {
|
|
26
|
-
return fromIntent;
|
|
27
|
-
}
|
|
28
69
|
if (context) {
|
|
29
70
|
const fromContext = this.inferFromContext(context, availableAgents);
|
|
30
71
|
if (fromContext && fromContext.confidence >= 0.8) {
|
|
31
72
|
return fromContext;
|
|
32
73
|
}
|
|
33
74
|
}
|
|
34
|
-
return this.createResult(
|
|
75
|
+
return this.createResult(keyword_types_1.DEFAULT_ACT_AGENT, 'default', 1.0, 'ACT mode default: frontend-developer');
|
|
35
76
|
}
|
|
36
|
-
parseExplicitRequest(prompt, availableAgents) {
|
|
77
|
+
parseExplicitRequest(prompt, availableAgents, allowedAgents) {
|
|
37
78
|
for (const pattern of PrimaryAgentResolver.EXPLICIT_PATTERNS) {
|
|
38
79
|
const match = prompt.match(pattern);
|
|
39
80
|
if (match?.[1]) {
|
|
40
81
|
const agentName = match[1].toLowerCase();
|
|
41
|
-
|
|
82
|
+
const isAvailable = availableAgents.includes(agentName);
|
|
83
|
+
const isAllowed = !allowedAgents || allowedAgents.includes(agentName);
|
|
84
|
+
if (isAvailable && isAllowed) {
|
|
42
85
|
return this.createResult(agentName, 'explicit', 1.0, `Explicit request for ${agentName} in prompt`);
|
|
43
86
|
}
|
|
44
87
|
}
|
|
@@ -79,36 +122,19 @@ class PrimaryAgentResolver {
|
|
|
79
122
|
}
|
|
80
123
|
return null;
|
|
81
124
|
}
|
|
82
|
-
analyzeIntent(prompt, availableAgents) {
|
|
83
|
-
if (!prompt || !prompt.trim()) {
|
|
84
|
-
return null;
|
|
85
|
-
}
|
|
86
|
-
let bestMatch = null;
|
|
87
|
-
for (const { pattern, agent, confidence, category, } of PrimaryAgentResolver.INTENT_PATTERNS) {
|
|
88
|
-
if (pattern.test(prompt) && availableAgents.includes(agent)) {
|
|
89
|
-
if (!bestMatch || confidence > bestMatch.confidence) {
|
|
90
|
-
bestMatch = { agent, confidence, category };
|
|
91
|
-
}
|
|
92
|
-
}
|
|
93
|
-
}
|
|
94
|
-
if (bestMatch && bestMatch.confidence >= 0.8) {
|
|
95
|
-
return this.createResult(bestMatch.agent, 'intent', bestMatch.confidence, `Intent detected: ${bestMatch.category} task`);
|
|
96
|
-
}
|
|
97
|
-
return null;
|
|
98
|
-
}
|
|
99
125
|
async safeListPrimaryAgents() {
|
|
100
126
|
try {
|
|
101
127
|
const agents = await this.listPrimaryAgents();
|
|
102
128
|
if (agents.length === 0) {
|
|
103
129
|
this.logger.debug('No primary agents found in registry, using default fallback list');
|
|
104
|
-
return [...
|
|
130
|
+
return [...keyword_types_1.ALL_PRIMARY_AGENTS_LIST];
|
|
105
131
|
}
|
|
106
132
|
return agents;
|
|
107
133
|
}
|
|
108
134
|
catch (error) {
|
|
109
135
|
this.logger.warn(`Failed to list primary agents: ${error instanceof Error ? error.message : 'Unknown error'}. ` +
|
|
110
136
|
`Using fallback list.`);
|
|
111
|
-
return [...
|
|
137
|
+
return [...keyword_types_1.ALL_PRIMARY_AGENTS_LIST];
|
|
112
138
|
}
|
|
113
139
|
}
|
|
114
140
|
createResult(agentName, source, confidence, reason) {
|
|
@@ -116,15 +142,6 @@ class PrimaryAgentResolver {
|
|
|
116
142
|
}
|
|
117
143
|
}
|
|
118
144
|
exports.PrimaryAgentResolver = PrimaryAgentResolver;
|
|
119
|
-
PrimaryAgentResolver.DEFAULT_AGENT = 'frontend-developer';
|
|
120
|
-
PrimaryAgentResolver.EVAL_AGENT = 'code-reviewer';
|
|
121
|
-
PrimaryAgentResolver.DEFAULT_FALLBACK_AGENTS = [
|
|
122
|
-
'frontend-developer',
|
|
123
|
-
'backend-developer',
|
|
124
|
-
'code-reviewer',
|
|
125
|
-
'solution-architect',
|
|
126
|
-
'technical-planner',
|
|
127
|
-
];
|
|
128
145
|
PrimaryAgentResolver.EXPLICIT_PATTERNS = [
|
|
129
146
|
/(\w+-\w+)(?:λ‘|μΌλ‘)\s*(?:μμ
|κ°λ°|ν΄)/i,
|
|
130
147
|
/(?:use|using)\s+(\w+-\w+)(?:\s+agent)?/i,
|
|
@@ -145,66 +162,4 @@ PrimaryAgentResolver.CONTEXT_PATTERNS = [
|
|
|
145
162
|
{ pattern: /\.jsx?$/i, agent: 'frontend-developer', confidence: 0.7 },
|
|
146
163
|
{ pattern: /agents?.*\.json$/i, agent: 'agent-architect', confidence: 0.8 },
|
|
147
164
|
];
|
|
148
|
-
PrimaryAgentResolver.INTENT_PATTERNS = [
|
|
149
|
-
{
|
|
150
|
-
pattern: /μν€ν
μ²|architecture|μμ€ν
\s*μ€κ³|system\s*design/i,
|
|
151
|
-
agent: 'solution-architect',
|
|
152
|
-
confidence: 0.85,
|
|
153
|
-
category: 'architecture',
|
|
154
|
-
},
|
|
155
|
-
{
|
|
156
|
-
pattern: /κΈ°μ \s*μ ν|technology\s*selection|μ€ν\s*μ ν/i,
|
|
157
|
-
agent: 'solution-architect',
|
|
158
|
-
confidence: 0.8,
|
|
159
|
-
category: 'architecture',
|
|
160
|
-
},
|
|
161
|
-
{
|
|
162
|
-
pattern: /μ 체\s*ꡬ쑰|overall\s*structure|μ€κ³\s*λ°©ν₯/i,
|
|
163
|
-
agent: 'solution-architect',
|
|
164
|
-
confidence: 0.85,
|
|
165
|
-
category: 'architecture',
|
|
166
|
-
},
|
|
167
|
-
{
|
|
168
|
-
pattern: /ꡬ쑰\s*μ€κ³|structural\s*design|API\s*μ€κ³|API\s*design/i,
|
|
169
|
-
agent: 'solution-architect',
|
|
170
|
-
confidence: 0.8,
|
|
171
|
-
category: 'architecture',
|
|
172
|
-
},
|
|
173
|
-
{
|
|
174
|
-
pattern: /λ§μ΄ν¬λ‘μλΉμ€|microservice|μλΉμ€\s*λΆλ¦¬|service\s*decomposition/i,
|
|
175
|
-
agent: 'solution-architect',
|
|
176
|
-
confidence: 0.85,
|
|
177
|
-
category: 'architecture',
|
|
178
|
-
},
|
|
179
|
-
{
|
|
180
|
-
pattern: /ꡬν\s*κ³ν|implementation\s*plan|μμ
\s*λΆν΄/i,
|
|
181
|
-
agent: 'technical-planner',
|
|
182
|
-
confidence: 0.85,
|
|
183
|
-
category: 'planning',
|
|
184
|
-
},
|
|
185
|
-
{
|
|
186
|
-
pattern: /νμ€ν¬|task\s*breakdown|λ¨κ³λ³|step.?by.?step/i,
|
|
187
|
-
agent: 'technical-planner',
|
|
188
|
-
confidence: 0.8,
|
|
189
|
-
category: 'planning',
|
|
190
|
-
},
|
|
191
|
-
{
|
|
192
|
-
pattern: /TDD\s*κ³ν|TDD\s*plan|ν
μ€νΈ\s*λ¨Όμ |test.?first/i,
|
|
193
|
-
agent: 'technical-planner',
|
|
194
|
-
confidence: 0.85,
|
|
195
|
-
category: 'planning',
|
|
196
|
-
},
|
|
197
|
-
{
|
|
198
|
-
pattern: /μ€ν\s*κ³ν|execution\s*plan|κ°λ°\s*κ³ν|development\s*plan/i,
|
|
199
|
-
agent: 'technical-planner',
|
|
200
|
-
confidence: 0.8,
|
|
201
|
-
category: 'planning',
|
|
202
|
-
},
|
|
203
|
-
{
|
|
204
|
-
pattern: /리ν©ν λ§\s*κ³ν|refactoring\s*plan|work\s*breakdown/i,
|
|
205
|
-
agent: 'technical-planner',
|
|
206
|
-
confidence: 0.8,
|
|
207
|
-
category: 'planning',
|
|
208
|
-
},
|
|
209
|
-
];
|
|
210
165
|
//# sourceMappingURL=primary-agent-resolver.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"primary-agent-resolver.js","sourceRoot":"","sources":["../../../src/keyword/primary-agent-resolver.ts"],"names":[],"mappings":";;;AAAA,2CAAwC;
|
|
1
|
+
{"version":3,"file":"primary-agent-resolver.js","sourceRoot":"","sources":["../../../src/keyword/primary-agent-resolver.ts"],"names":[],"mappings":"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"}
|