codingbuddy 0.0.0-canary.20260110143102.g46c6902 → 0.0.0-canary.20260110151615.g0655f89
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/config/config.service.d.ts +1 -0
- package/dist/src/config/config.service.js +35 -0
- package/dist/src/config/config.service.js.map +1 -1
- package/dist/src/config/ignore.parser.d.ts +1 -0
- package/dist/src/config/ignore.parser.js +15 -1
- package/dist/src/config/ignore.parser.js.map +1 -1
- package/dist/src/mcp/handlers/config.handler.d.ts +1 -0
- package/dist/src/mcp/handlers/config.handler.js +47 -2
- package/dist/src/mcp/handlers/config.handler.js.map +1 -1
- package/dist/src/mcp/handlers/conventions.handler.d.ts +3 -1
- package/dist/src/mcp/handlers/conventions.handler.js +8 -4
- package/dist/src/mcp/handlers/conventions.handler.js.map +1 -1
- package/dist/src/rules/rules.service.d.ts +3 -1
- package/dist/src/rules/rules.service.js +6 -3
- package/dist/src/rules/rules.service.js.map +1 -1
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/package.json +2 -2
|
@@ -20,6 +20,7 @@ export declare class ConfigService implements OnModuleInit {
|
|
|
20
20
|
private resolveProjectRoot;
|
|
21
21
|
onModuleInit(): Promise<void>;
|
|
22
22
|
setProjectRoot(root: string): void;
|
|
23
|
+
setProjectRootAndReload(root: string): Promise<void>;
|
|
23
24
|
getProjectRoot(): string;
|
|
24
25
|
loadProjectConfig(): Promise<ProjectConfig>;
|
|
25
26
|
getProjectConfig(): Promise<ProjectConfig>;
|
|
@@ -13,6 +13,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
13
13
|
exports.ConfigService = void 0;
|
|
14
14
|
const common_1 = require("@nestjs/common");
|
|
15
15
|
const fs_1 = require("fs");
|
|
16
|
+
const promises_1 = require("fs/promises");
|
|
16
17
|
const path = require("path");
|
|
17
18
|
const config_loader_1 = require("./config.loader");
|
|
18
19
|
const ignore_parser_1 = require("./ignore.parser");
|
|
@@ -55,10 +56,44 @@ let ConfigService = ConfigService_1 = class ConfigService {
|
|
|
55
56
|
this.isLoaded = false;
|
|
56
57
|
this.projectConfig = null;
|
|
57
58
|
}
|
|
59
|
+
async setProjectRootAndReload(root) {
|
|
60
|
+
if (root.includes('\x00')) {
|
|
61
|
+
throw new Error('Path contains null bytes (possible null byte injection)');
|
|
62
|
+
}
|
|
63
|
+
const normalizedPath = path.resolve(root);
|
|
64
|
+
let pathStat;
|
|
65
|
+
try {
|
|
66
|
+
pathStat = await (0, promises_1.stat)(normalizedPath);
|
|
67
|
+
}
|
|
68
|
+
catch (error) {
|
|
69
|
+
if (error.code === 'ENOENT') {
|
|
70
|
+
throw new Error(`Project root does not exist: ${normalizedPath}`);
|
|
71
|
+
}
|
|
72
|
+
throw error;
|
|
73
|
+
}
|
|
74
|
+
if (!pathStat.isDirectory()) {
|
|
75
|
+
throw new Error(`Project root is not a directory: ${normalizedPath}`);
|
|
76
|
+
}
|
|
77
|
+
let resolvedPath;
|
|
78
|
+
try {
|
|
79
|
+
resolvedPath = await (0, promises_1.realpath)(normalizedPath);
|
|
80
|
+
}
|
|
81
|
+
catch {
|
|
82
|
+
this.logger.warn(`Failed to resolve symlinks for ${normalizedPath}, using as-is`);
|
|
83
|
+
resolvedPath = normalizedPath;
|
|
84
|
+
}
|
|
85
|
+
(0, config_loader_1.clearProjectRootCache)();
|
|
86
|
+
this.projectRoot = resolvedPath;
|
|
87
|
+
this.isLoaded = false;
|
|
88
|
+
this.projectConfig = null;
|
|
89
|
+
await this.loadProjectConfig();
|
|
90
|
+
this.logger.log(`Project root changed to: ${resolvedPath}`);
|
|
91
|
+
}
|
|
58
92
|
getProjectRoot() {
|
|
59
93
|
return this.projectRoot;
|
|
60
94
|
}
|
|
61
95
|
async loadProjectConfig() {
|
|
96
|
+
(0, ignore_parser_1.clearRegexCache)();
|
|
62
97
|
this.logger.log(`Loading project config from: ${this.projectRoot}`);
|
|
63
98
|
let configResult;
|
|
64
99
|
try {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.service.js","sourceRoot":"","sources":["../../../src/config/config.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,2CAAkE;AAClE,2BAA0C;AAC1C,6BAA6B;AAC7B,
|
|
1
|
+
{"version":3,"file":"config.service.js","sourceRoot":"","sources":["../../../src/config/config.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.IGNORE_FILE_NAME = void 0;
|
|
4
|
+
exports.clearRegexCache = clearRegexCache;
|
|
4
5
|
exports.parseIgnoreLine = parseIgnoreLine;
|
|
5
6
|
exports.parseIgnoreContent = parseIgnoreContent;
|
|
6
7
|
exports.loadIgnoreFile = loadIgnoreFile;
|
|
@@ -12,6 +13,19 @@ const fs_1 = require("fs");
|
|
|
12
13
|
const path = require("path");
|
|
13
14
|
const file_utils_1 = require("../shared/file.utils");
|
|
14
15
|
exports.IGNORE_FILE_NAME = '.codingignore';
|
|
16
|
+
const regexCache = new Map();
|
|
17
|
+
function getCachedRegex(pattern) {
|
|
18
|
+
const cached = regexCache.get(pattern);
|
|
19
|
+
if (cached) {
|
|
20
|
+
return cached;
|
|
21
|
+
}
|
|
22
|
+
const regex = patternToRegex(pattern);
|
|
23
|
+
regexCache.set(pattern, regex);
|
|
24
|
+
return regex;
|
|
25
|
+
}
|
|
26
|
+
function clearRegexCache() {
|
|
27
|
+
regexCache.clear();
|
|
28
|
+
}
|
|
15
29
|
function parseIgnoreLine(line) {
|
|
16
30
|
const trimmed = line.trim();
|
|
17
31
|
if (trimmed === '') {
|
|
@@ -101,7 +115,7 @@ function shouldIgnore(relativePath, patterns) {
|
|
|
101
115
|
for (const pattern of patterns) {
|
|
102
116
|
const isNegated = pattern.startsWith('!');
|
|
103
117
|
const actualPattern = isNegated ? pattern.slice(1) : pattern;
|
|
104
|
-
const regex =
|
|
118
|
+
const regex = getCachedRegex(actualPattern);
|
|
105
119
|
if (regex.test(normalizedPath)) {
|
|
106
120
|
ignored = !isNegated;
|
|
107
121
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ignore.parser.js","sourceRoot":"","sources":["../../../src/config/ignore.parser.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"ignore.parser.js","sourceRoot":"","sources":["../../../src/config/ignore.parser.ts"],"names":[],"mappings":"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"}
|
|
@@ -17,6 +17,7 @@ const config_diff_service_1 = require("../../config/config-diff.service");
|
|
|
17
17
|
const analyzer_service_1 = require("../../analyzer/analyzer.service");
|
|
18
18
|
const response_utils_1 = require("../response.utils");
|
|
19
19
|
const validation_constants_1 = require("../../shared/validation.constants");
|
|
20
|
+
const security_utils_1 = require("../../shared/security.utils");
|
|
20
21
|
let ConfigHandler = class ConfigHandler extends abstract_handler_1.AbstractHandler {
|
|
21
22
|
constructor(configService, configDiffService, analyzerService) {
|
|
22
23
|
super();
|
|
@@ -25,7 +26,7 @@ let ConfigHandler = class ConfigHandler extends abstract_handler_1.AbstractHandl
|
|
|
25
26
|
this.analyzerService = analyzerService;
|
|
26
27
|
}
|
|
27
28
|
getHandledTools() {
|
|
28
|
-
return ['get_project_config', 'suggest_config_updates'];
|
|
29
|
+
return ['get_project_config', 'suggest_config_updates', 'set_project_root'];
|
|
29
30
|
}
|
|
30
31
|
async handleTool(toolName, args) {
|
|
31
32
|
if (toolName === 'get_project_config') {
|
|
@@ -34,6 +35,9 @@ let ConfigHandler = class ConfigHandler extends abstract_handler_1.AbstractHandl
|
|
|
34
35
|
if (toolName === 'suggest_config_updates') {
|
|
35
36
|
return this.handleSuggestConfigUpdates(args);
|
|
36
37
|
}
|
|
38
|
+
if (toolName === 'set_project_root') {
|
|
39
|
+
return this.handleSetProjectRoot(args);
|
|
40
|
+
}
|
|
37
41
|
return (0, response_utils_1.createErrorResponse)(`Unknown tool: ${toolName}`);
|
|
38
42
|
}
|
|
39
43
|
getToolDefinitions() {
|
|
@@ -61,6 +65,20 @@ let ConfigHandler = class ConfigHandler extends abstract_handler_1.AbstractHandl
|
|
|
61
65
|
required: [],
|
|
62
66
|
},
|
|
63
67
|
},
|
|
68
|
+
{
|
|
69
|
+
name: 'set_project_root',
|
|
70
|
+
description: 'Set the project root directory. Use this when the MCP server is launched from a different directory than the target project.',
|
|
71
|
+
inputSchema: {
|
|
72
|
+
type: 'object',
|
|
73
|
+
properties: {
|
|
74
|
+
projectRoot: {
|
|
75
|
+
type: 'string',
|
|
76
|
+
description: 'The absolute path to the project root directory',
|
|
77
|
+
},
|
|
78
|
+
},
|
|
79
|
+
required: ['projectRoot'],
|
|
80
|
+
},
|
|
81
|
+
},
|
|
64
82
|
];
|
|
65
83
|
}
|
|
66
84
|
async handleGetProjectConfig() {
|
|
@@ -74,7 +92,12 @@ let ConfigHandler = class ConfigHandler extends abstract_handler_1.AbstractHandl
|
|
|
74
92
|
}
|
|
75
93
|
async handleSuggestConfigUpdates(args) {
|
|
76
94
|
try {
|
|
77
|
-
const
|
|
95
|
+
const configProjectRoot = this.configService.getProjectRoot();
|
|
96
|
+
const projectRootInput = (0, validation_constants_1.extractOptionalString)(args, 'projectRoot') ?? configProjectRoot;
|
|
97
|
+
const projectRoot = (0, security_utils_1.assertPathSafe)(projectRootInput, {
|
|
98
|
+
basePath: configProjectRoot,
|
|
99
|
+
allowAbsolute: true,
|
|
100
|
+
});
|
|
78
101
|
const analysis = await this.analyzerService.analyzeProject(projectRoot);
|
|
79
102
|
await this.configService.reload();
|
|
80
103
|
const currentConfig = await this.configService.getSettings();
|
|
@@ -85,6 +108,28 @@ let ConfigHandler = class ConfigHandler extends abstract_handler_1.AbstractHandl
|
|
|
85
108
|
return (0, response_utils_1.createErrorResponse)(`Failed to suggest config updates: ${error instanceof Error ? error.message : 'Unknown error'}`);
|
|
86
109
|
}
|
|
87
110
|
}
|
|
111
|
+
async handleSetProjectRoot(args) {
|
|
112
|
+
try {
|
|
113
|
+
const projectRootInput = (0, validation_constants_1.extractOptionalString)(args, 'projectRoot');
|
|
114
|
+
if (!projectRootInput || projectRootInput.trim() === '') {
|
|
115
|
+
return (0, response_utils_1.createErrorResponse)('projectRoot is required and must be a non-empty string');
|
|
116
|
+
}
|
|
117
|
+
const currentProjectRoot = this.configService.getProjectRoot();
|
|
118
|
+
const projectRoot = (0, security_utils_1.assertPathSafe)(projectRootInput, {
|
|
119
|
+
basePath: currentProjectRoot,
|
|
120
|
+
allowAbsolute: true,
|
|
121
|
+
});
|
|
122
|
+
await this.configService.setProjectRootAndReload(projectRoot);
|
|
123
|
+
return (0, response_utils_1.createJsonResponse)({
|
|
124
|
+
success: true,
|
|
125
|
+
projectRoot: this.configService.getProjectRoot(),
|
|
126
|
+
message: `Project root set to: ${this.configService.getProjectRoot()}`,
|
|
127
|
+
});
|
|
128
|
+
}
|
|
129
|
+
catch (error) {
|
|
130
|
+
return (0, response_utils_1.createErrorResponse)(`Failed to set project root: ${error instanceof Error ? error.message : 'Unknown error'}`);
|
|
131
|
+
}
|
|
132
|
+
}
|
|
88
133
|
};
|
|
89
134
|
exports.ConfigHandler = ConfigHandler;
|
|
90
135
|
exports.ConfigHandler = ConfigHandler = __decorate([
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.handler.js","sourceRoot":"","sources":["../../../../src/mcp/handlers/config.handler.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAA4C;AAG5C,yDAAqD;AACrD,gEAA4D;AAC5D,0EAAqE;AACrE,sEAAkE;AAClE,sDAA4E;AAC5E,4EAA0E;
|
|
1
|
+
{"version":3,"file":"config.handler.js","sourceRoot":"","sources":["../../../../src/mcp/handlers/config.handler.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,9 +2,11 @@ import type { ToolDefinition } from './base.handler';
|
|
|
2
2
|
import type { ToolResponse } from '../response.utils';
|
|
3
3
|
import { AbstractHandler } from './abstract-handler';
|
|
4
4
|
import { ConventionsAnalyzer } from '../../analyzer/conventions.analyzer';
|
|
5
|
+
import { ConfigService } from '../../config/config.service';
|
|
5
6
|
export declare class ConventionsHandler extends AbstractHandler {
|
|
6
7
|
private readonly conventionsAnalyzer;
|
|
7
|
-
|
|
8
|
+
private readonly configService;
|
|
9
|
+
constructor(conventionsAnalyzer: ConventionsAnalyzer, configService: ConfigService);
|
|
8
10
|
protected getHandledTools(): string[];
|
|
9
11
|
protected handleTool(toolName: string, args: Record<string, unknown> | undefined): Promise<ToolResponse>;
|
|
10
12
|
getToolDefinitions(): ToolDefinition[];
|
|
@@ -13,13 +13,15 @@ exports.ConventionsHandler = void 0;
|
|
|
13
13
|
const common_1 = require("@nestjs/common");
|
|
14
14
|
const abstract_handler_1 = require("./abstract-handler");
|
|
15
15
|
const conventions_analyzer_1 = require("../../analyzer/conventions.analyzer");
|
|
16
|
+
const config_service_1 = require("../../config/config.service");
|
|
16
17
|
const response_utils_1 = require("../response.utils");
|
|
17
18
|
const validation_constants_1 = require("../../shared/validation.constants");
|
|
18
19
|
const security_utils_1 = require("../../shared/security.utils");
|
|
19
20
|
let ConventionsHandler = class ConventionsHandler extends abstract_handler_1.AbstractHandler {
|
|
20
|
-
constructor(conventionsAnalyzer) {
|
|
21
|
+
constructor(conventionsAnalyzer, configService) {
|
|
21
22
|
super();
|
|
22
23
|
this.conventionsAnalyzer = conventionsAnalyzer;
|
|
24
|
+
this.configService = configService;
|
|
23
25
|
}
|
|
24
26
|
getHandledTools() {
|
|
25
27
|
return ['get_code_conventions'];
|
|
@@ -52,9 +54,10 @@ let ConventionsHandler = class ConventionsHandler extends abstract_handler_1.Abs
|
|
|
52
54
|
}
|
|
53
55
|
async handleGetCodeConventions(args) {
|
|
54
56
|
try {
|
|
55
|
-
const
|
|
57
|
+
const configProjectRoot = this.configService.getProjectRoot();
|
|
58
|
+
const projectRootInput = (0, validation_constants_1.extractOptionalString)(args, 'projectRoot') ?? configProjectRoot;
|
|
56
59
|
const projectRoot = (0, security_utils_1.assertPathSafe)(projectRootInput, {
|
|
57
|
-
basePath:
|
|
60
|
+
basePath: configProjectRoot,
|
|
58
61
|
allowAbsolute: true,
|
|
59
62
|
});
|
|
60
63
|
const conventions = await this.conventionsAnalyzer.analyzeProjectConventions(projectRoot);
|
|
@@ -68,6 +71,7 @@ let ConventionsHandler = class ConventionsHandler extends abstract_handler_1.Abs
|
|
|
68
71
|
exports.ConventionsHandler = ConventionsHandler;
|
|
69
72
|
exports.ConventionsHandler = ConventionsHandler = __decorate([
|
|
70
73
|
(0, common_1.Injectable)(),
|
|
71
|
-
__metadata("design:paramtypes", [conventions_analyzer_1.ConventionsAnalyzer
|
|
74
|
+
__metadata("design:paramtypes", [conventions_analyzer_1.ConventionsAnalyzer,
|
|
75
|
+
config_service_1.ConfigService])
|
|
72
76
|
], ConventionsHandler);
|
|
73
77
|
//# sourceMappingURL=conventions.handler.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"conventions.handler.js","sourceRoot":"","sources":["../../../../src/mcp/handlers/conventions.handler.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAA4C;AAG5C,yDAAqD;AACrD,8EAA0E;AAC1E,sDAA4E;AAC5E,4EAA0E;AAC1E,gEAA6D;AAOtD,IAAM,kBAAkB,GAAxB,MAAM,kBAAmB,SAAQ,kCAAe;IACrD,
|
|
1
|
+
{"version":3,"file":"conventions.handler.js","sourceRoot":"","sources":["../../../../src/mcp/handlers/conventions.handler.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAA4C;AAG5C,yDAAqD;AACrD,8EAA0E;AAC1E,gEAA4D;AAC5D,sDAA4E;AAC5E,4EAA0E;AAC1E,gEAA6D;AAOtD,IAAM,kBAAkB,GAAxB,MAAM,kBAAmB,SAAQ,kCAAe;IACrD,YACmB,mBAAwC,EACxC,aAA4B;QAE7C,KAAK,EAAE,CAAC;QAHS,wBAAmB,GAAnB,mBAAmB,CAAqB;QACxC,kBAAa,GAAb,aAAa,CAAe;IAG/C,CAAC;IAES,eAAe;QACvB,OAAO,CAAC,sBAAsB,CAAC,CAAC;IAClC,CAAC;IAES,KAAK,CAAC,UAAU,CACxB,QAAgB,EAChB,IAAyC;QAEzC,QAAQ,QAAQ,EAAE,CAAC;YACjB,KAAK,sBAAsB;gBACzB,OAAO,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,CAAC;YAC7C;gBACE,OAAO,IAAA,oCAAmB,EAAC,iBAAiB,QAAQ,EAAE,CAAC,CAAC;QAC5D,CAAC;IACH,CAAC;IAED,kBAAkB;QAChB,OAAO;YACL;gBACE,IAAI,EAAE,sBAAsB;gBAC5B,WAAW,EACT,kGAAkG;gBACpG,WAAW,EAAE;oBACX,IAAI,EAAE,QAAQ;oBACd,UAAU,EAAE;wBACV,WAAW,EAAE;4BACX,IAAI,EAAE,QAAQ;4BACd,WAAW,EACT,gEAAgE;yBACnE;qBACF;oBACD,QAAQ,EAAE,EAAE;iBACb;aACF;SACF,CAAC;IACJ,CAAC;IAKO,KAAK,CAAC,wBAAwB,CACpC,IAAyC;QAEzC,IAAI,CAAC;YACH,MAAM,iBAAiB,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,EAAE,CAAC;YAC9D,MAAM,gBAAgB,GACpB,IAAA,4CAAqB,EAAC,IAAI,EAAE,aAAa,CAAC,IAAI,iBAAiB,CAAC;YAGlE,MAAM,WAAW,GAAG,IAAA,+BAAc,EAAC,gBAAgB,EAAE;gBACnD,QAAQ,EAAE,iBAAiB;gBAC3B,aAAa,EAAE,IAAI;aACpB,CAAC,CAAC;YAEH,MAAM,WAAW,GACf,MAAM,IAAI,CAAC,mBAAmB,CAAC,yBAAyB,CAAC,WAAW,CAAC,CAAC;YAExE,OAAO,IAAA,mCAAkB,EAAC,WAAW,CAAC,CAAC;QACzC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,IAAA,oCAAmB,EACxB,uCAAuC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAChG,CAAC;QACJ,CAAC;IACH,CAAC;CACF,CAAA;AAxEY,gDAAkB;6BAAlB,kBAAkB;IAD9B,IAAA,mBAAU,GAAE;qCAG6B,0CAAmB;QACzB,8BAAa;GAHpC,kBAAkB,CAwE9B"}
|
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
import { AgentProfile, SearchResult } from './rules.types';
|
|
2
2
|
import { CustomService } from '../custom';
|
|
3
|
+
import { ConfigService } from '../config/config.service';
|
|
3
4
|
export declare class RulesService {
|
|
4
5
|
private readonly customService;
|
|
6
|
+
private readonly configService;
|
|
5
7
|
private readonly logger;
|
|
6
8
|
private readonly rulesDir;
|
|
7
|
-
constructor(customService: CustomService);
|
|
9
|
+
constructor(customService: CustomService, configService: ConfigService);
|
|
8
10
|
private findDevRulesDir;
|
|
9
11
|
private checkExists;
|
|
10
12
|
getRuleContent(relativePath: string): Promise<string>;
|
|
@@ -18,10 +18,12 @@ const path = require("path");
|
|
|
18
18
|
const security_utils_1 = require("../shared/security.utils");
|
|
19
19
|
const agent_schema_1 = require("./agent.schema");
|
|
20
20
|
const custom_1 = require("../custom");
|
|
21
|
+
const config_service_1 = require("../config/config.service");
|
|
21
22
|
const keyword_types_1 = require("../keyword/keyword.types");
|
|
22
23
|
let RulesService = RulesService_1 = class RulesService {
|
|
23
|
-
constructor(customService) {
|
|
24
|
+
constructor(customService, configService) {
|
|
24
25
|
this.customService = customService;
|
|
26
|
+
this.configService = configService;
|
|
25
27
|
this.logger = new common_1.Logger(RulesService_1.name);
|
|
26
28
|
if (process.env.CODINGBUDDY_RULES_DIR) {
|
|
27
29
|
this.rulesDir = process.env.CODINGBUDDY_RULES_DIR;
|
|
@@ -117,7 +119,7 @@ let RulesService = RulesService_1 = class RulesService {
|
|
|
117
119
|
async searchRules(query) {
|
|
118
120
|
const results = [];
|
|
119
121
|
const queryLower = query.toLowerCase();
|
|
120
|
-
const projectRoot =
|
|
122
|
+
const projectRoot = this.configService.getProjectRoot();
|
|
121
123
|
const customRules = await this.customService.listCustomRules(projectRoot);
|
|
122
124
|
for (const customRule of customRules) {
|
|
123
125
|
const lines = customRule.content.split('\n');
|
|
@@ -170,6 +172,7 @@ let RulesService = RulesService_1 = class RulesService {
|
|
|
170
172
|
exports.RulesService = RulesService;
|
|
171
173
|
exports.RulesService = RulesService = RulesService_1 = __decorate([
|
|
172
174
|
(0, common_1.Injectable)(),
|
|
173
|
-
__metadata("design:paramtypes", [custom_1.CustomService
|
|
175
|
+
__metadata("design:paramtypes", [custom_1.CustomService,
|
|
176
|
+
config_service_1.ConfigService])
|
|
174
177
|
], RulesService);
|
|
175
178
|
//# 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;AACrE,sCAA0C;AAC1C,4DAAuD;AAGhD,IAAM,YAAY,oBAAlB,MAAM,YAAY;IAIvB,
|
|
1
|
+
{"version":3,"file":"rules.service.js","sourceRoot":"","sources":["../../../src/rules/rules.service.ts"],"names":[],"mappings":"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"}
|