@codesherlock/codesherlock-beta-mcp-server 0.0.1
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/.env +9 -0
- package/README.md +185 -0
- package/build/handlers/analyzeCommitHandler.d.ts +36 -0
- package/build/handlers/analyzeCommitHandler.d.ts.map +1 -0
- package/build/handlers/analyzeCommitHandler.js +397 -0
- package/build/handlers/analyzeCommitHandler.js.map +1 -0
- package/build/handlers/events.d.ts +7 -0
- package/build/handlers/events.d.ts.map +1 -0
- package/build/handlers/events.js +15 -0
- package/build/handlers/events.js.map +1 -0
- package/build/handlers/resources.d.ts +10 -0
- package/build/handlers/resources.d.ts.map +1 -0
- package/build/handlers/resources.js +14 -0
- package/build/handlers/resources.js.map +1 -0
- package/build/handlers/tools.d.ts +6 -0
- package/build/handlers/tools.d.ts.map +1 -0
- package/build/handlers/tools.js +29 -0
- package/build/handlers/tools.js.map +1 -0
- package/build/index.d.ts +3 -0
- package/build/index.d.ts.map +1 -0
- package/build/index.js +82 -0
- package/build/index.js.map +1 -0
- package/build/schemas/toolSchemas.d.ts +50 -0
- package/build/schemas/toolSchemas.d.ts.map +1 -0
- package/build/schemas/toolSchemas.js +48 -0
- package/build/schemas/toolSchemas.js.map +1 -0
- package/build/services/backendApiService.d.ts +81 -0
- package/build/services/backendApiService.d.ts.map +1 -0
- package/build/services/backendApiService.js +265 -0
- package/build/services/backendApiService.js.map +1 -0
- package/build/services/commitReviewService.d.ts +71 -0
- package/build/services/commitReviewService.d.ts.map +1 -0
- package/build/services/commitReviewService.js +506 -0
- package/build/services/commitReviewService.js.map +1 -0
- package/build/services/gitService.d.ts +159 -0
- package/build/services/gitService.d.ts.map +1 -0
- package/build/services/gitService.js +778 -0
- package/build/services/gitService.js.map +1 -0
- package/build/services/loggingService.d.ts +64 -0
- package/build/services/loggingService.d.ts.map +1 -0
- package/build/services/loggingService.js +185 -0
- package/build/services/loggingService.js.map +1 -0
- package/build/services/zipService.d.ts +9 -0
- package/build/services/zipService.d.ts.map +1 -0
- package/build/services/zipService.js +47 -0
- package/build/services/zipService.js.map +1 -0
- package/build/tests/analysisFormatter.test.d.ts +2 -0
- package/build/tests/analysisFormatter.test.d.ts.map +1 -0
- package/build/tests/analysisFormatter.test.js +92 -0
- package/build/tests/analysisFormatter.test.js.map +1 -0
- package/build/tests/analyzeCommitHandler.test.d.ts +2 -0
- package/build/tests/analyzeCommitHandler.test.d.ts.map +1 -0
- package/build/tests/analyzeCommitHandler.test.js +111 -0
- package/build/tests/analyzeCommitHandler.test.js.map +1 -0
- package/build/tests/backendApiService.test.d.ts +2 -0
- package/build/tests/backendApiService.test.d.ts.map +1 -0
- package/build/tests/backendApiService.test.js +109 -0
- package/build/tests/backendApiService.test.js.map +1 -0
- package/build/tests/commitReviewService.test.d.ts +2 -0
- package/build/tests/commitReviewService.test.d.ts.map +1 -0
- package/build/tests/commitReviewService.test.js +120 -0
- package/build/tests/commitReviewService.test.js.map +1 -0
- package/build/tests/errorExtractor.test.d.ts +2 -0
- package/build/tests/errorExtractor.test.d.ts.map +1 -0
- package/build/tests/errorExtractor.test.js +61 -0
- package/build/tests/errorExtractor.test.js.map +1 -0
- package/build/tests/loggingService.test.d.ts +2 -0
- package/build/tests/loggingService.test.d.ts.map +1 -0
- package/build/tests/loggingService.test.js +153 -0
- package/build/tests/loggingService.test.js.map +1 -0
- package/build/tests/setup.test.d.ts +2 -0
- package/build/tests/setup.test.d.ts.map +1 -0
- package/build/tests/setup.test.js +7 -0
- package/build/tests/setup.test.js.map +1 -0
- package/build/tests/tools.test.d.ts +2 -0
- package/build/tests/tools.test.d.ts.map +1 -0
- package/build/tests/tools.test.js +58 -0
- package/build/tests/tools.test.js.map +1 -0
- package/build/utils/analysisFormatter.d.ts +40 -0
- package/build/utils/analysisFormatter.d.ts.map +1 -0
- package/build/utils/analysisFormatter.js +97 -0
- package/build/utils/analysisFormatter.js.map +1 -0
- package/build/utils/errorExtractor.d.ts +36 -0
- package/build/utils/errorExtractor.d.ts.map +1 -0
- package/build/utils/errorExtractor.js +178 -0
- package/build/utils/errorExtractor.js.map +1 -0
- package/package.json +55 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gitService.js","sourceRoot":"","sources":["../../src/services/gitService.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Simple Logging Service using Azure Application Insights
|
|
3
|
+
* All logs are sent to Application Insights only (no console output)
|
|
4
|
+
*/
|
|
5
|
+
export declare class LoggingService {
|
|
6
|
+
private static instance;
|
|
7
|
+
private client;
|
|
8
|
+
private isInitialized;
|
|
9
|
+
private constructor();
|
|
10
|
+
/**
|
|
11
|
+
* Get singleton instance of LoggingService
|
|
12
|
+
*/
|
|
13
|
+
static getInstance(): LoggingService;
|
|
14
|
+
/**
|
|
15
|
+
* Initialize Application Insights with connection string
|
|
16
|
+
*/
|
|
17
|
+
initialize(connectionString?: string): Promise<void>;
|
|
18
|
+
/**
|
|
19
|
+
* Log an informational message
|
|
20
|
+
*/
|
|
21
|
+
logInfo(message: string, properties?: {
|
|
22
|
+
[key: string]: string;
|
|
23
|
+
}): void;
|
|
24
|
+
/**
|
|
25
|
+
* Log a warning message
|
|
26
|
+
*/
|
|
27
|
+
logWarning(message: string, properties?: {
|
|
28
|
+
[key: string]: string;
|
|
29
|
+
}): void;
|
|
30
|
+
/**
|
|
31
|
+
* Log an error message
|
|
32
|
+
*/
|
|
33
|
+
logError(message: string, error?: Error, properties?: {
|
|
34
|
+
[key: string]: string;
|
|
35
|
+
}): void;
|
|
36
|
+
/**
|
|
37
|
+
* Log a custom event
|
|
38
|
+
*/
|
|
39
|
+
logEvent(name: string, properties?: {
|
|
40
|
+
[key: string]: string;
|
|
41
|
+
}, measurements?: {
|
|
42
|
+
[key: string]: number;
|
|
43
|
+
}): void;
|
|
44
|
+
/**
|
|
45
|
+
* Track a metric
|
|
46
|
+
*/
|
|
47
|
+
trackMetric(name: string, value: number, properties?: {
|
|
48
|
+
[key: string]: string;
|
|
49
|
+
}): void;
|
|
50
|
+
/**
|
|
51
|
+
* Track a dependency call
|
|
52
|
+
*/
|
|
53
|
+
trackDependency(name: string, commandName: string, duration: number, success: boolean, dependencyType?: string): void;
|
|
54
|
+
/**
|
|
55
|
+
* Flush telemetry before shutdown
|
|
56
|
+
*/
|
|
57
|
+
flush(): Promise<void>;
|
|
58
|
+
/**
|
|
59
|
+
* Check if logging is enabled
|
|
60
|
+
*/
|
|
61
|
+
isEnabled(): boolean;
|
|
62
|
+
}
|
|
63
|
+
export declare const logger: LoggingService;
|
|
64
|
+
//# sourceMappingURL=loggingService.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"loggingService.d.ts","sourceRoot":"","sources":["../../src/services/loggingService.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,qBAAa,cAAc;IACvB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAiB;IACxC,OAAO,CAAC,MAAM,CAA4C;IAC1D,OAAO,CAAC,aAAa,CAAS;IAE9B,OAAO;IAEP;;OAEG;IACH,MAAM,CAAC,WAAW,IAAI,cAAc;IAOpC;;OAEG;IACG,UAAU,CAAC,gBAAgB,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA2C1D;;OAEG;IACH,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,GAAG,IAAI;IActE;;OAEG;IACH,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,GAAG,IAAI;IAczE;;OAEG;IACH,QAAQ,CACJ,OAAO,EAAE,MAAM,EACf,KAAK,CAAC,EAAE,KAAK,EACb,UAAU,CAAC,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,GACvC,IAAI;IA6BP;;OAEG;IACH,QAAQ,CACJ,IAAI,EAAE,MAAM,EACZ,UAAU,CAAC,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,EACtC,YAAY,CAAC,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,GACzC,IAAI;IAUP;;OAEG;IACH,WAAW,CACP,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,EACb,UAAU,CAAC,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,GACvC,IAAI;IAUP;;OAEG;IACH,eAAe,CACX,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,OAAO,EAChB,cAAc,CAAC,EAAE,MAAM,GACxB,IAAI;IAYP;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAM5B;;OAEG;IACH,SAAS,IAAI,OAAO;CAGvB;AAGD,eAAO,MAAM,MAAM,gBAA+B,CAAC"}
|
|
@@ -0,0 +1,185 @@
|
|
|
1
|
+
import * as appInsights from "applicationinsights";
|
|
2
|
+
/**
|
|
3
|
+
* Simple Logging Service using Azure Application Insights
|
|
4
|
+
* All logs are sent to Application Insights only (no console output)
|
|
5
|
+
*/
|
|
6
|
+
export class LoggingService {
|
|
7
|
+
static instance;
|
|
8
|
+
client = null;
|
|
9
|
+
isInitialized = false;
|
|
10
|
+
constructor() { }
|
|
11
|
+
/**
|
|
12
|
+
* Get singleton instance of LoggingService
|
|
13
|
+
*/
|
|
14
|
+
static getInstance() {
|
|
15
|
+
if (!LoggingService.instance) {
|
|
16
|
+
LoggingService.instance = new LoggingService();
|
|
17
|
+
}
|
|
18
|
+
return LoggingService.instance;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Initialize Application Insights with connection string
|
|
22
|
+
*/
|
|
23
|
+
async initialize(connectionString) {
|
|
24
|
+
const debugLog = (message) => {
|
|
25
|
+
process.stderr.write(`[LoggingService] ${message}\n`);
|
|
26
|
+
};
|
|
27
|
+
if (this.isInitialized) {
|
|
28
|
+
return;
|
|
29
|
+
}
|
|
30
|
+
if (!connectionString) {
|
|
31
|
+
debugLog("Application Insights connection string missing; logging disabled.");
|
|
32
|
+
this.isInitialized = false;
|
|
33
|
+
this.client = null;
|
|
34
|
+
return;
|
|
35
|
+
}
|
|
36
|
+
try {
|
|
37
|
+
const client = new appInsights.TelemetryClient(connectionString);
|
|
38
|
+
appInsights.setup(connectionString)
|
|
39
|
+
.setAutoDependencyCorrelation(false)
|
|
40
|
+
.setAutoCollectRequests(false)
|
|
41
|
+
.setAutoCollectPerformance(false, false)
|
|
42
|
+
.setAutoCollectExceptions(true)
|
|
43
|
+
.setAutoCollectDependencies(false)
|
|
44
|
+
.setAutoCollectConsole(false)
|
|
45
|
+
.setSendLiveMetrics(false);
|
|
46
|
+
appInsights.start();
|
|
47
|
+
this.client = client;
|
|
48
|
+
this.isInitialized = true;
|
|
49
|
+
debugLog("Application Insights initialized.");
|
|
50
|
+
}
|
|
51
|
+
catch (error) {
|
|
52
|
+
if (error instanceof Error) {
|
|
53
|
+
debugLog(`Application Insights init error: ${error.message}`);
|
|
54
|
+
}
|
|
55
|
+
else {
|
|
56
|
+
debugLog(`Application Insights init error: ${String(error)}`);
|
|
57
|
+
}
|
|
58
|
+
this.isInitialized = false;
|
|
59
|
+
this.client = null;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Log an informational message
|
|
64
|
+
*/
|
|
65
|
+
logInfo(message, properties) {
|
|
66
|
+
if (this.client) {
|
|
67
|
+
this.client.trackTrace({
|
|
68
|
+
message,
|
|
69
|
+
severity: 1,
|
|
70
|
+
properties,
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
else {
|
|
74
|
+
// Fallback to stderr if Application Insights is not available (MCP uses stdout for protocol)
|
|
75
|
+
const propsStr = properties ? ` ${JSON.stringify(properties)}` : '';
|
|
76
|
+
process.stderr.write(`[INFO] ${message}${propsStr}\n`);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Log a warning message
|
|
81
|
+
*/
|
|
82
|
+
logWarning(message, properties) {
|
|
83
|
+
if (this.client) {
|
|
84
|
+
this.client.trackTrace({
|
|
85
|
+
message,
|
|
86
|
+
severity: 2,
|
|
87
|
+
properties,
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
else {
|
|
91
|
+
// Fallback to stderr if Application Insights is not available (MCP uses stdout for protocol)
|
|
92
|
+
const propsStr = properties ? ` ${JSON.stringify(properties)}` : '';
|
|
93
|
+
process.stderr.write(`[WARN] ${message}${propsStr}\n`);
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Log an error message
|
|
98
|
+
*/
|
|
99
|
+
logError(message, error, properties) {
|
|
100
|
+
if (this.client) {
|
|
101
|
+
if (error) {
|
|
102
|
+
this.client.trackException({
|
|
103
|
+
exception: error,
|
|
104
|
+
properties: { ...properties, customMessage: message },
|
|
105
|
+
});
|
|
106
|
+
}
|
|
107
|
+
else {
|
|
108
|
+
this.client.trackTrace({
|
|
109
|
+
message,
|
|
110
|
+
severity: 3,
|
|
111
|
+
properties,
|
|
112
|
+
});
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
else {
|
|
116
|
+
// Fallback to stderr if Application Insights is not available (MCP uses stdout for protocol)
|
|
117
|
+
const propsStr = properties ? ` ${JSON.stringify(properties)}` : '';
|
|
118
|
+
if (error) {
|
|
119
|
+
process.stderr.write(`[ERROR] ${message}${propsStr}\n`);
|
|
120
|
+
process.stderr.write(`[ERROR] ${error.message}\n`);
|
|
121
|
+
if (error.stack) {
|
|
122
|
+
process.stderr.write(`[ERROR] Stack: ${error.stack}\n`);
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
else {
|
|
126
|
+
process.stderr.write(`[ERROR] ${message}${propsStr}\n`);
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* Log a custom event
|
|
132
|
+
*/
|
|
133
|
+
logEvent(name, properties, measurements) {
|
|
134
|
+
if (this.client) {
|
|
135
|
+
this.client.trackEvent({
|
|
136
|
+
name,
|
|
137
|
+
properties,
|
|
138
|
+
measurements,
|
|
139
|
+
});
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* Track a metric
|
|
144
|
+
*/
|
|
145
|
+
trackMetric(name, value, properties) {
|
|
146
|
+
if (this.client) {
|
|
147
|
+
this.client.trackMetric({
|
|
148
|
+
name,
|
|
149
|
+
value,
|
|
150
|
+
properties,
|
|
151
|
+
});
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
/**
|
|
155
|
+
* Track a dependency call
|
|
156
|
+
*/
|
|
157
|
+
trackDependency(name, commandName, duration, success, dependencyType) {
|
|
158
|
+
if (this.client) {
|
|
159
|
+
this.client.trackDependency({
|
|
160
|
+
name,
|
|
161
|
+
data: commandName,
|
|
162
|
+
duration,
|
|
163
|
+
success,
|
|
164
|
+
dependencyTypeName: dependencyType || "HTTP",
|
|
165
|
+
});
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
/**
|
|
169
|
+
* Flush telemetry before shutdown
|
|
170
|
+
*/
|
|
171
|
+
async flush() {
|
|
172
|
+
if (this.client) {
|
|
173
|
+
this.client.flush();
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
/**
|
|
177
|
+
* Check if logging is enabled
|
|
178
|
+
*/
|
|
179
|
+
isEnabled() {
|
|
180
|
+
return this.isInitialized && this.client !== null;
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
// Export singleton instance
|
|
184
|
+
export const logger = LoggingService.getInstance();
|
|
185
|
+
//# sourceMappingURL=loggingService.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"loggingService.js","sourceRoot":"","sources":["../../src/services/loggingService.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export declare class ZipService {
|
|
2
|
+
/**
|
|
3
|
+
* Zips the provided data into a file named 'files.json' within the archive.
|
|
4
|
+
* @param data - The data to be zipped (will be stringified to JSON)
|
|
5
|
+
* @returns Buffer containing the zip file
|
|
6
|
+
*/
|
|
7
|
+
createZip(data: any): Promise<Buffer>;
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=zipService.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"zipService.d.ts","sourceRoot":"","sources":["../../src/services/zipService.ts"],"names":[],"mappings":"AAIA,qBAAa,UAAU;IACnB;;;;OAIG;IACG,SAAS,CAAC,IAAI,EAAE,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC;CA0C9C"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import archiver from 'archiver';
|
|
2
|
+
import { Writable } from 'stream';
|
|
3
|
+
import { logger } from './loggingService.js';
|
|
4
|
+
export class ZipService {
|
|
5
|
+
/**
|
|
6
|
+
* Zips the provided data into a file named 'files.json' within the archive.
|
|
7
|
+
* @param data - The data to be zipped (will be stringified to JSON)
|
|
8
|
+
* @returns Buffer containing the zip file
|
|
9
|
+
*/
|
|
10
|
+
async createZip(data) {
|
|
11
|
+
try {
|
|
12
|
+
logger.logInfo('Creating zip archive');
|
|
13
|
+
const chunks = [];
|
|
14
|
+
// Create a writable stream to capture the zip output in memory
|
|
15
|
+
const output = new Writable({
|
|
16
|
+
write(chunk, encoding, callback) {
|
|
17
|
+
chunks.push(Buffer.from(chunk));
|
|
18
|
+
callback();
|
|
19
|
+
}
|
|
20
|
+
});
|
|
21
|
+
const archive = archiver('zip', {
|
|
22
|
+
zlib: { level: 9 } // Maximum compression
|
|
23
|
+
});
|
|
24
|
+
return new Promise((resolve, reject) => {
|
|
25
|
+
output.on('finish', () => {
|
|
26
|
+
const result = Buffer.concat(chunks);
|
|
27
|
+
logger.logInfo(`Zip archive created successfully. Size: ${result.length} bytes`);
|
|
28
|
+
resolve(result);
|
|
29
|
+
});
|
|
30
|
+
archive.on('error', (err) => {
|
|
31
|
+
logger.logError('Error creating zip archive', err);
|
|
32
|
+
reject(err);
|
|
33
|
+
});
|
|
34
|
+
archive.pipe(output);
|
|
35
|
+
// The Python endpoint expects 'files.json'
|
|
36
|
+
logger.logInfo('Appending files.json to archive');
|
|
37
|
+
archive.append(JSON.stringify(data, null, 2), { name: 'files.json' });
|
|
38
|
+
archive.finalize();
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
catch (error) {
|
|
42
|
+
logger.logError('Unexpected error in createZip', error);
|
|
43
|
+
throw error;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
//# sourceMappingURL=zipService.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"zipService.js","sourceRoot":"","sources":["../../src/services/zipService.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,UAAU,CAAC;AAChC,OAAO,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAClC,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAE7C,MAAM,OAAO,UAAU;IACnB;;;;OAIG;IACH,KAAK,CAAC,SAAS,CAAC,IAAS;QACrB,IAAI,CAAC;YACD,MAAM,CAAC,OAAO,CAAC,sBAAsB,CAAC,CAAC;YACvC,MAAM,MAAM,GAAa,EAAE,CAAC;YAE5B,+DAA+D;YAC/D,MAAM,MAAM,GAAG,IAAI,QAAQ,CAAC;gBACxB,KAAK,CAAC,KAAK,EAAE,QAAQ,EAAE,QAAQ;oBAC3B,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;oBAChC,QAAQ,EAAE,CAAC;gBACf,CAAC;aACJ,CAAC,CAAC;YAEH,MAAM,OAAO,GAAG,QAAQ,CAAC,KAAK,EAAE;gBAC5B,IAAI,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,sBAAsB;aAC5C,CAAC,CAAC;YAEH,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;gBACnC,MAAM,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE;oBACrB,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;oBACrC,MAAM,CAAC,OAAO,CAAC,2CAA2C,MAAM,CAAC,MAAM,QAAQ,CAAC,CAAC;oBACjF,OAAO,CAAC,MAAM,CAAC,CAAC;gBACpB,CAAC,CAAC,CAAC;gBAEH,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;oBACxB,MAAM,CAAC,QAAQ,CAAC,4BAA4B,EAAE,GAAG,CAAC,CAAC;oBACnD,MAAM,CAAC,GAAG,CAAC,CAAC;gBAChB,CAAC,CAAC,CAAC;gBAEH,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBAErB,2CAA2C;gBAC3C,MAAM,CAAC,OAAO,CAAC,iCAAiC,CAAC,CAAC;gBAClD,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC;gBAEtE,OAAO,CAAC,QAAQ,EAAE,CAAC;YACvB,CAAC,CAAC,CAAC;QACP,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,MAAM,CAAC,QAAQ,CAAC,+BAA+B,EAAE,KAAc,CAAC,CAAC;YACjE,MAAM,KAAK,CAAC;QAChB,CAAC;IACL,CAAC;CACJ"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"analysisFormatter.test.d.ts","sourceRoot":"","sources":["../../src/tests/analysisFormatter.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
import { jsonToMdIssue, jsonToMdAnalysis, formatFileAnalysisToMarkdown, formatMultipleFileAnalysisToMarkdown, } from "../utils/analysisFormatter.js";
|
|
2
|
+
describe("analysisFormatter", () => {
|
|
3
|
+
describe("jsonToMdIssue", () => {
|
|
4
|
+
it("renders issue with lines, snippets, severity and solution", () => {
|
|
5
|
+
const md = jsonToMdIssue({
|
|
6
|
+
issue: "Null pointer",
|
|
7
|
+
uid: "u1",
|
|
8
|
+
start_line: 10,
|
|
9
|
+
end_line: 12,
|
|
10
|
+
issue_code_snippet: "foo.bar();",
|
|
11
|
+
severity: "High",
|
|
12
|
+
solution: "Check nulls",
|
|
13
|
+
solution_code_snippet: "if (foo) foo.bar();",
|
|
14
|
+
}, "TS", "Reliability");
|
|
15
|
+
expect(md).toContain("**Issue:** Null pointer");
|
|
16
|
+
expect(md).toContain("**Quality Aspect:** Reliability");
|
|
17
|
+
expect(md).toContain("**Severity:** High");
|
|
18
|
+
expect(md).toContain("**Lines:** 10-12");
|
|
19
|
+
expect(md).toContain("```ts\nfoo.bar();\n```");
|
|
20
|
+
expect(md).toContain("**Solution:** Check nulls");
|
|
21
|
+
expect(md).toContain("```ts\nif (foo) foo.bar();\n```");
|
|
22
|
+
});
|
|
23
|
+
it("omits optional sections when not provided", () => {
|
|
24
|
+
const md = jsonToMdIssue({
|
|
25
|
+
issue: "Minor style",
|
|
26
|
+
uid: "u2",
|
|
27
|
+
severity: "low",
|
|
28
|
+
solution: "Run formatter",
|
|
29
|
+
}, "JS");
|
|
30
|
+
expect(md).not.toContain("Lines:");
|
|
31
|
+
expect(md).not.toContain("Quality Aspect");
|
|
32
|
+
expect(md).toContain("**Solution:** Run formatter");
|
|
33
|
+
});
|
|
34
|
+
});
|
|
35
|
+
describe("jsonToMdAnalysis", () => {
|
|
36
|
+
it("groups issues and returns markdown per characteristic", () => {
|
|
37
|
+
const md = jsonToMdAnalysis([
|
|
38
|
+
{
|
|
39
|
+
characteristic: "Security",
|
|
40
|
+
description_of_characteristic: "OWASP checks",
|
|
41
|
+
issue_items: [
|
|
42
|
+
{ issue: "SQLi", severity: "critical", solution: "Use params", uid: "u3" },
|
|
43
|
+
{ issue: "XSS", severity: "medium", solution: "Escape output", uid: "u4" },
|
|
44
|
+
],
|
|
45
|
+
},
|
|
46
|
+
], "TS");
|
|
47
|
+
expect(md).toContain("## Security");
|
|
48
|
+
expect(md).toContain("OWASP checks");
|
|
49
|
+
expect(md).toContain("SQLi");
|
|
50
|
+
expect(md).toContain("XSS");
|
|
51
|
+
});
|
|
52
|
+
it("skips null entries gracefully", () => {
|
|
53
|
+
const md = jsonToMdAnalysis([null, {
|
|
54
|
+
characteristic: "Quality",
|
|
55
|
+
description_of_characteristic: "General",
|
|
56
|
+
issue_items: [],
|
|
57
|
+
}], "ts");
|
|
58
|
+
expect(md).toContain("## Quality");
|
|
59
|
+
expect(md).not.toContain("null");
|
|
60
|
+
});
|
|
61
|
+
});
|
|
62
|
+
describe("formatFileAnalysisToMarkdown", () => {
|
|
63
|
+
it("adds file header and delegates to jsonToMdAnalysis", () => {
|
|
64
|
+
const md = formatFileAnalysisToMarkdown([{
|
|
65
|
+
characteristic: "Performance",
|
|
66
|
+
description_of_characteristic: "Speed issues",
|
|
67
|
+
issue_items: [{ issue: "Slow loop", severity: "high", solution: "Optimize" }],
|
|
68
|
+
}], "ts", "app.ts");
|
|
69
|
+
expect(md.startsWith("# Analysis for app.ts")).toBe(true);
|
|
70
|
+
expect(md).toContain("Performance");
|
|
71
|
+
expect(md).toContain("Slow loop");
|
|
72
|
+
});
|
|
73
|
+
it("handles missing analysis array", () => {
|
|
74
|
+
const md = formatFileAnalysisToMarkdown(undefined, "ts", "file.ts");
|
|
75
|
+
expect(md).toContain("No analysis data available.");
|
|
76
|
+
});
|
|
77
|
+
});
|
|
78
|
+
describe("formatMultipleFileAnalysisToMarkdown", () => {
|
|
79
|
+
it("renders multiple files separated by rules", () => {
|
|
80
|
+
const md = formatMultipleFileAnalysisToMarkdown([
|
|
81
|
+
{ file_name: "a.ts", language: "ts", analysis: [] },
|
|
82
|
+
{ file_name: "b.ts", language: "ts", analysis: [] },
|
|
83
|
+
]);
|
|
84
|
+
expect(md).toContain("# Code Analysis Results");
|
|
85
|
+
const separators = md.match(/---/g) || [];
|
|
86
|
+
expect(separators.length).toBe(2);
|
|
87
|
+
expect(md).toContain("Analysis for a.ts");
|
|
88
|
+
expect(md).toContain("Analysis for b.ts");
|
|
89
|
+
});
|
|
90
|
+
});
|
|
91
|
+
});
|
|
92
|
+
//# sourceMappingURL=analysisFormatter.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"analysisFormatter.test.js","sourceRoot":"","sources":["../../src/tests/analysisFormatter.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"analyzeCommitHandler.test.d.ts","sourceRoot":"","sources":["../../src/tests/analyzeCommitHandler.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
import { createAnalyzeCommitHandler } from "../handlers/analyzeCommitHandler.js";
|
|
2
|
+
import { formatMultipleFileAnalysisToMarkdown } from "../utils/analysisFormatter.js";
|
|
3
|
+
import fs from "fs";
|
|
4
|
+
// Mock logger to silence output
|
|
5
|
+
jest.mock("../services/loggingService.js", () => ({
|
|
6
|
+
logger: {
|
|
7
|
+
logInfo: jest.fn(),
|
|
8
|
+
logError: jest.fn(),
|
|
9
|
+
logWarning: jest.fn(),
|
|
10
|
+
logEvent: jest.fn(),
|
|
11
|
+
},
|
|
12
|
+
}));
|
|
13
|
+
jest.mock("../utils/analysisFormatter.js", () => ({
|
|
14
|
+
formatMultipleFileAnalysisToMarkdown: jest.fn(),
|
|
15
|
+
}));
|
|
16
|
+
jest.mock("fs", () => ({
|
|
17
|
+
existsSync: jest.fn(),
|
|
18
|
+
mkdirSync: jest.fn(),
|
|
19
|
+
writeFileSync: jest.fn(),
|
|
20
|
+
}));
|
|
21
|
+
describe("createAnalyzeCommitHandler", () => {
|
|
22
|
+
let gitService;
|
|
23
|
+
let commitReviewService;
|
|
24
|
+
let backendApiService;
|
|
25
|
+
const handlerArgs = {
|
|
26
|
+
uncommitted: true,
|
|
27
|
+
directory: "C:\\Users\\dev\\GitHub\\my-org\\my-repo",
|
|
28
|
+
factor: "power",
|
|
29
|
+
};
|
|
30
|
+
beforeEach(() => {
|
|
31
|
+
jest.clearAllMocks();
|
|
32
|
+
gitService = {
|
|
33
|
+
analyzeGitChanges: jest.fn(),
|
|
34
|
+
getCurrentCommitHash: jest.fn(),
|
|
35
|
+
};
|
|
36
|
+
commitReviewService = {
|
|
37
|
+
submitAndWaitForResults: jest.fn(),
|
|
38
|
+
};
|
|
39
|
+
backendApiService = {
|
|
40
|
+
getUserFromSecureRoute: jest.fn(),
|
|
41
|
+
};
|
|
42
|
+
});
|
|
43
|
+
it("returns success response and saves markdown when analysis succeeds", async () => {
|
|
44
|
+
fs.existsSync.mockImplementationOnce(() => true).mockImplementationOnce(() => false);
|
|
45
|
+
gitService.analyzeGitChanges.mockResolvedValue([
|
|
46
|
+
{ filename: "file.ts", status: "modified", new_content: "code", patch: "diff" },
|
|
47
|
+
]);
|
|
48
|
+
gitService.getCurrentCommitHash.mockResolvedValue("abc123");
|
|
49
|
+
backendApiService.getUserFromSecureRoute.mockResolvedValue({ userid: "u1", username: "tester" });
|
|
50
|
+
const analysisResult = {
|
|
51
|
+
success: true,
|
|
52
|
+
analysisId: "analysis-1",
|
|
53
|
+
results: [
|
|
54
|
+
{ analysis: { issue: "bug" }, language: "ts", file_name: "file.ts", analysisId: 1 },
|
|
55
|
+
],
|
|
56
|
+
};
|
|
57
|
+
commitReviewService.submitAndWaitForResults.mockResolvedValue(analysisResult);
|
|
58
|
+
formatMultipleFileAnalysisToMarkdown.mockReturnValue("markdown-content");
|
|
59
|
+
const handler = createAnalyzeCommitHandler(gitService, commitReviewService, backendApiService);
|
|
60
|
+
const response = await handler(handlerArgs);
|
|
61
|
+
expect(commitReviewService.submitAndWaitForResults).toHaveBeenCalledWith({
|
|
62
|
+
factor: "power_analysis",
|
|
63
|
+
user_id: "u1",
|
|
64
|
+
repo_name: "my-repo",
|
|
65
|
+
commit_id: "abc123",
|
|
66
|
+
username: "tester",
|
|
67
|
+
file_changes: expect.any(Array),
|
|
68
|
+
organization_name: "my-org",
|
|
69
|
+
});
|
|
70
|
+
expect(formatMultipleFileAnalysisToMarkdown).toHaveBeenCalledWith(analysisResult.results);
|
|
71
|
+
expect(fs.mkdirSync).toHaveBeenCalledWith(expect.stringContaining("debug_outputs"), { recursive: true });
|
|
72
|
+
expect(fs.writeFileSync).toHaveBeenCalledWith(expect.stringContaining("analysis_result_"), "markdown-content", "utf-8");
|
|
73
|
+
expect(response.structuredContent).toEqual(analysisResult);
|
|
74
|
+
expect(response.content[0].text).toBe("markdown-content");
|
|
75
|
+
});
|
|
76
|
+
it("returns not found error when directory is missing", async () => {
|
|
77
|
+
fs.existsSync.mockReturnValue(false);
|
|
78
|
+
const handler = createAnalyzeCommitHandler(gitService, commitReviewService, backendApiService);
|
|
79
|
+
const response = await handler(handlerArgs);
|
|
80
|
+
expect(response.isError).toBe(true);
|
|
81
|
+
expect(response.structuredContent.success).toBe(false);
|
|
82
|
+
expect(response.structuredContent.statusCode).toBe(404);
|
|
83
|
+
});
|
|
84
|
+
it("returns validation error when file changes are invalid", async () => {
|
|
85
|
+
fs.existsSync.mockReturnValue(true);
|
|
86
|
+
gitService.analyzeGitChanges.mockResolvedValue([{ filename: "file.ts", status: "modified" }]);
|
|
87
|
+
const handler = createAnalyzeCommitHandler(gitService, commitReviewService, backendApiService);
|
|
88
|
+
const response = await handler(handlerArgs);
|
|
89
|
+
expect(response.isError).toBe(true);
|
|
90
|
+
expect(response.structuredContent.statusCode).toBe(422);
|
|
91
|
+
expect(commitReviewService.submitAndWaitForResults).not.toHaveBeenCalled();
|
|
92
|
+
});
|
|
93
|
+
it("propagates backend error result when commit review fails", async () => {
|
|
94
|
+
fs.existsSync.mockReturnValue(true);
|
|
95
|
+
gitService.analyzeGitChanges.mockResolvedValue([
|
|
96
|
+
{ filename: "file.ts", status: "modified", new_content: "code", patch: "diff" },
|
|
97
|
+
]);
|
|
98
|
+
gitService.getCurrentCommitHash.mockResolvedValue("abc123");
|
|
99
|
+
backendApiService.getUserFromSecureRoute.mockResolvedValue({ userid: "u1", username: "tester" });
|
|
100
|
+
commitReviewService.submitAndWaitForResults.mockResolvedValue({
|
|
101
|
+
success: false,
|
|
102
|
+
error: "Backend failed",
|
|
103
|
+
});
|
|
104
|
+
const handler = createAnalyzeCommitHandler(gitService, commitReviewService, backendApiService);
|
|
105
|
+
const response = await handler(handlerArgs);
|
|
106
|
+
expect(response.isError).toBe(true);
|
|
107
|
+
expect(response.structuredContent.success).toBe(false);
|
|
108
|
+
expect(response.structuredContent.error).toBe("Backend failed");
|
|
109
|
+
});
|
|
110
|
+
});
|
|
111
|
+
//# sourceMappingURL=analyzeCommitHandler.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"analyzeCommitHandler.test.js","sourceRoot":"","sources":["../../src/tests/analyzeCommitHandler.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"backendApiService.test.d.ts","sourceRoot":"","sources":["../../src/tests/backendApiService.test.ts"],"names":[],"mappings":""}
|