codingbuddy 1.1.2 → 1.3.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/custom/custom.module.d.ts +2 -0
- package/dist/src/custom/custom.module.js +21 -0
- package/dist/src/custom/custom.module.js.map +1 -0
- package/dist/src/custom/custom.service.d.ts +8 -0
- package/dist/src/custom/custom.service.js +134 -0
- package/dist/src/custom/custom.service.js.map +1 -0
- package/dist/src/custom/custom.types.d.ts +33 -0
- package/dist/src/custom/custom.types.js +10 -0
- package/dist/src/custom/custom.types.js.map +1 -0
- package/dist/src/custom/index.d.ts +3 -0
- package/dist/src/custom/index.js +20 -0
- package/dist/src/custom/index.js.map +1 -0
- package/dist/src/keyword/keyword.module.js +4 -1
- package/dist/src/keyword/keyword.module.js.map +1 -1
- package/dist/src/keyword/keyword.service.d.ts +3 -1
- package/dist/src/keyword/keyword.service.js +66 -9
- package/dist/src/keyword/keyword.service.js.map +1 -1
- package/dist/src/keyword/keyword.types.d.ts +14 -0
- package/dist/src/keyword/keyword.types.js +17 -1
- package/dist/src/keyword/keyword.types.js.map +1 -1
- package/dist/src/mcp/mcp.service.js +1 -1
- package/dist/src/mcp/mcp.service.js.map +1 -1
- package/dist/src/rules/rules.module.js +2 -0
- package/dist/src/rules/rules.module.js.map +1 -1
- package/dist/src/rules/rules.service.d.ts +5 -1
- package/dist/src/rules/rules.service.js +40 -5
- package/dist/src/rules/rules.service.js.map +1 -1
- package/dist/src/rules/rules.types.d.ts +3 -0
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/package.json +2 -2
|
@@ -17,8 +17,11 @@ const fs_1 = require("fs");
|
|
|
17
17
|
const path = require("path");
|
|
18
18
|
const security_utils_1 = require("../shared/security.utils");
|
|
19
19
|
const agent_schema_1 = require("./agent.schema");
|
|
20
|
+
const custom_1 = require("../custom");
|
|
21
|
+
const keyword_types_1 = require("../keyword/keyword.types");
|
|
20
22
|
let RulesService = RulesService_1 = class RulesService {
|
|
21
|
-
constructor() {
|
|
23
|
+
constructor(customService) {
|
|
24
|
+
this.customService = customService;
|
|
22
25
|
this.logger = new common_1.Logger(RulesService_1.name);
|
|
23
26
|
if (process.env.CODINGBUDDY_RULES_DIR) {
|
|
24
27
|
this.rulesDir = process.env.CODINGBUDDY_RULES_DIR;
|
|
@@ -76,21 +79,32 @@ let RulesService = RulesService_1 = class RulesService {
|
|
|
76
79
|
const agentsDir = path.join(this.rulesDir, 'agents');
|
|
77
80
|
try {
|
|
78
81
|
const files = await fs.readdir(agentsDir);
|
|
79
|
-
|
|
82
|
+
const agents = files
|
|
80
83
|
.filter(f => f.endsWith('.json'))
|
|
81
84
|
.map(f => f.replace('.json', ''));
|
|
85
|
+
return this.sortAgentsByPriority(agents);
|
|
82
86
|
}
|
|
83
87
|
catch (error) {
|
|
84
88
|
this.logger.error('Failed to list agents', error);
|
|
85
89
|
return [];
|
|
86
90
|
}
|
|
87
91
|
}
|
|
92
|
+
sortAgentsByPriority(agents) {
|
|
93
|
+
const modeAgentSet = new Set(keyword_types_1.MODE_AGENTS);
|
|
94
|
+
const foundModeAgents = agents.filter(agent => modeAgentSet.has(agent));
|
|
95
|
+
const otherAgents = agents.filter(agent => !modeAgentSet.has(agent));
|
|
96
|
+
const sortedModeAgents = keyword_types_1.MODE_AGENTS.filter(agent => foundModeAgents.includes(agent));
|
|
97
|
+
return [...sortedModeAgents, ...otherAgents.sort()];
|
|
98
|
+
}
|
|
99
|
+
isModeAgent(agentName) {
|
|
100
|
+
return keyword_types_1.MODE_AGENTS.includes(agentName);
|
|
101
|
+
}
|
|
88
102
|
async getAgent(name) {
|
|
89
103
|
const content = await this.getRuleContent(`agents/${name}.json`);
|
|
90
104
|
try {
|
|
91
105
|
const parsed = JSON.parse(content);
|
|
92
106
|
const validated = (0, agent_schema_1.parseAgentProfile)(parsed);
|
|
93
|
-
return validated;
|
|
107
|
+
return { ...validated, source: 'default' };
|
|
94
108
|
}
|
|
95
109
|
catch (error) {
|
|
96
110
|
if (error instanceof agent_schema_1.AgentSchemaError) {
|
|
@@ -103,6 +117,27 @@ let RulesService = RulesService_1 = class RulesService {
|
|
|
103
117
|
async searchRules(query) {
|
|
104
118
|
const results = [];
|
|
105
119
|
const queryLower = query.toLowerCase();
|
|
120
|
+
const projectRoot = process.cwd();
|
|
121
|
+
const customRules = await this.customService.listCustomRules(projectRoot);
|
|
122
|
+
for (const customRule of customRules) {
|
|
123
|
+
const lines = customRule.content.split('\n');
|
|
124
|
+
const matches = [];
|
|
125
|
+
let score = 0;
|
|
126
|
+
lines.forEach((line, index) => {
|
|
127
|
+
if (line.toLowerCase().includes(queryLower)) {
|
|
128
|
+
matches.push(`Line ${index + 1}: ${line.trim()}`);
|
|
129
|
+
score++;
|
|
130
|
+
}
|
|
131
|
+
});
|
|
132
|
+
if (score > 0) {
|
|
133
|
+
results.push({
|
|
134
|
+
file: customRule.name,
|
|
135
|
+
matches,
|
|
136
|
+
score,
|
|
137
|
+
source: 'custom',
|
|
138
|
+
});
|
|
139
|
+
}
|
|
140
|
+
}
|
|
106
141
|
const agents = await this.listAgents();
|
|
107
142
|
const filesToSearch = [
|
|
108
143
|
'rules/core.md',
|
|
@@ -123,7 +158,7 @@ let RulesService = RulesService_1 = class RulesService {
|
|
|
123
158
|
}
|
|
124
159
|
});
|
|
125
160
|
if (score > 0) {
|
|
126
|
-
results.push({ file, matches, score });
|
|
161
|
+
results.push({ file, matches, score, source: 'default' });
|
|
127
162
|
}
|
|
128
163
|
}
|
|
129
164
|
catch {
|
|
@@ -135,6 +170,6 @@ let RulesService = RulesService_1 = class RulesService {
|
|
|
135
170
|
exports.RulesService = RulesService;
|
|
136
171
|
exports.RulesService = RulesService = RulesService_1 = __decorate([
|
|
137
172
|
(0, common_1.Injectable)(),
|
|
138
|
-
__metadata("design:paramtypes", [])
|
|
173
|
+
__metadata("design:paramtypes", [custom_1.CustomService])
|
|
139
174
|
], RulesService);
|
|
140
175
|
//# sourceMappingURL=rules.service.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rules.service.js","sourceRoot":"","sources":["../../../src/rules/rules.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,2CAAoD;AACpD,kCAAkC;AAClC,2BAAgC;AAChC,6BAA6B;AAE7B,6DAAsD;AACtD,iDAAqE;
|
|
1
|
+
{"version":3,"file":"rules.service.js","sourceRoot":"","sources":["../../../src/rules/rules.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
export type RuleSource = 'custom' | 'default';
|
|
1
2
|
export interface AgentProfile {
|
|
2
3
|
name: string;
|
|
3
4
|
description: string;
|
|
@@ -7,10 +8,12 @@ export interface AgentProfile {
|
|
|
7
8
|
tech_stack_reference?: string;
|
|
8
9
|
responsibilities?: string[];
|
|
9
10
|
};
|
|
11
|
+
source?: RuleSource;
|
|
10
12
|
[key: string]: unknown;
|
|
11
13
|
}
|
|
12
14
|
export interface SearchResult {
|
|
13
15
|
file: string;
|
|
14
16
|
matches: string[];
|
|
15
17
|
score: number;
|
|
18
|
+
source?: RuleSource;
|
|
16
19
|
}
|