@gulibs/safe-coder 0.0.4 → 0.0.6

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.
Files changed (74) hide show
  1. package/README.md +112 -1
  2. package/dist/documentation/github-client.d.ts +3 -1
  3. package/dist/documentation/github-client.d.ts.map +1 -1
  4. package/dist/documentation/github-client.js +7 -5
  5. package/dist/documentation/github-client.js.map +1 -1
  6. package/dist/documentation/http-fetcher.d.ts +3 -0
  7. package/dist/documentation/http-fetcher.d.ts.map +1 -1
  8. package/dist/documentation/http-fetcher.js +6 -2
  9. package/dist/documentation/http-fetcher.js.map +1 -1
  10. package/dist/documentation/index.d.ts +5 -3
  11. package/dist/documentation/index.d.ts.map +1 -1
  12. package/dist/documentation/index.js +98 -14
  13. package/dist/documentation/index.js.map +1 -1
  14. package/dist/documentation/npm-client.d.ts +12 -0
  15. package/dist/documentation/npm-client.d.ts.map +1 -1
  16. package/dist/documentation/npm-client.js +150 -17
  17. package/dist/documentation/npm-client.js.map +1 -1
  18. package/dist/errors/api-validator.d.ts +9 -0
  19. package/dist/errors/api-validator.d.ts.map +1 -0
  20. package/dist/errors/api-validator.js +57 -0
  21. package/dist/errors/api-validator.js.map +1 -0
  22. package/dist/errors/contextual-analysis.d.ts +3 -0
  23. package/dist/errors/contextual-analysis.d.ts.map +1 -1
  24. package/dist/errors/contextual-analysis.js +102 -4
  25. package/dist/errors/contextual-analysis.js.map +1 -1
  26. package/dist/errors/cross-file-analyzer.d.ts +16 -0
  27. package/dist/errors/cross-file-analyzer.d.ts.map +1 -0
  28. package/dist/errors/cross-file-analyzer.js +172 -0
  29. package/dist/errors/cross-file-analyzer.js.map +1 -0
  30. package/dist/errors/eslint-integration.d.ts +1 -0
  31. package/dist/errors/eslint-integration.d.ts.map +1 -1
  32. package/dist/errors/eslint-integration.js +101 -22
  33. package/dist/errors/eslint-integration.js.map +1 -1
  34. package/dist/errors/framework-detector.d.ts +10 -0
  35. package/dist/errors/framework-detector.d.ts.map +1 -0
  36. package/dist/errors/framework-detector.js +126 -0
  37. package/dist/errors/framework-detector.js.map +1 -0
  38. package/dist/errors/index.d.ts +9 -2
  39. package/dist/errors/index.d.ts.map +1 -1
  40. package/dist/errors/index.js +78 -2
  41. package/dist/errors/index.js.map +1 -1
  42. package/dist/errors/patterns.d.ts.map +1 -1
  43. package/dist/errors/patterns.js +314 -0
  44. package/dist/errors/patterns.js.map +1 -1
  45. package/dist/errors/performance-detector.d.ts +11 -0
  46. package/dist/errors/performance-detector.d.ts.map +1 -0
  47. package/dist/errors/performance-detector.js +119 -0
  48. package/dist/errors/performance-detector.js.map +1 -0
  49. package/dist/errors/runtime-detector.d.ts +7 -0
  50. package/dist/errors/runtime-detector.d.ts.map +1 -0
  51. package/dist/errors/runtime-detector.js +86 -0
  52. package/dist/errors/runtime-detector.js.map +1 -0
  53. package/dist/errors/security-detector.d.ts +6 -0
  54. package/dist/errors/security-detector.d.ts.map +1 -0
  55. package/dist/errors/security-detector.js +75 -0
  56. package/dist/errors/security-detector.js.map +1 -0
  57. package/dist/index.js +10 -3
  58. package/dist/index.js.map +1 -1
  59. package/dist/server/mcp-server.d.ts.map +1 -1
  60. package/dist/server/mcp-server.js +155 -61
  61. package/dist/server/mcp-server.js.map +1 -1
  62. package/dist/utils/config.d.ts +12 -0
  63. package/dist/utils/config.d.ts.map +1 -1
  64. package/dist/utils/config.js +24 -0
  65. package/dist/utils/config.js.map +1 -1
  66. package/dist/utils/http-client.d.ts +17 -0
  67. package/dist/utils/http-client.d.ts.map +1 -0
  68. package/dist/utils/http-client.js +62 -0
  69. package/dist/utils/http-client.js.map +1 -0
  70. package/dist/utils/logger.d.ts +36 -0
  71. package/dist/utils/logger.d.ts.map +1 -0
  72. package/dist/utils/logger.js +128 -0
  73. package/dist/utils/logger.js.map +1 -0
  74. package/package.json +5 -4
@@ -0,0 +1,86 @@
1
+ export class RuntimeDetector {
2
+ detectErrors(code) {
3
+ const errors = [];
4
+ const lines = code.split('\n');
5
+ for (let i = 0; i < lines.length; i++) {
6
+ const line = lines[i];
7
+ const lineNumber = i + 1;
8
+ // Detect array bounds violations
9
+ const arrayAccessMatch = line.match(/(\w+)\s*\[\s*([^\]]+)\s*\]/g);
10
+ if (arrayAccessMatch) {
11
+ for (const match of arrayAccessMatch) {
12
+ const indexMatch = match.match(/\[\s*([^\]]+)\s*\]/);
13
+ if (indexMatch) {
14
+ const index = indexMatch[1].trim();
15
+ // Check for negative index
16
+ if (index.startsWith('-')) {
17
+ errors.push({
18
+ type: 'runtime',
19
+ message: `Array access with negative index: ${index}`,
20
+ line: lineNumber,
21
+ column: line.indexOf(match) + 1,
22
+ priority: 2,
23
+ fix: 'Ensure array index is non-negative',
24
+ });
25
+ }
26
+ // Check for variable index (potential out of bounds)
27
+ else if (!/^\d+$/.test(index) && !index.includes('length')) {
28
+ errors.push({
29
+ type: 'runtime',
30
+ message: `Array access with variable index may be out of bounds: ${index}`,
31
+ line: lineNumber,
32
+ column: line.indexOf(match) + 1,
33
+ priority: 2,
34
+ fix: 'Add bounds checking before array access',
35
+ });
36
+ }
37
+ }
38
+ }
39
+ }
40
+ // Detect division by zero
41
+ const divisionMatch = line.match(/\/(\s*0\s*|[\w\s]+\s*-\s*[\w\s]+)/);
42
+ if (divisionMatch) {
43
+ errors.push({
44
+ type: 'runtime',
45
+ message: 'Potential division by zero',
46
+ line: lineNumber,
47
+ column: line.indexOf('/') + 1,
48
+ priority: 2,
49
+ fix: 'Add zero check before division',
50
+ });
51
+ }
52
+ // Detect null/undefined dereference
53
+ const nullDerefMatch = line.match(/(null|undefined)\s*\./);
54
+ if (nullDerefMatch) {
55
+ errors.push({
56
+ type: 'runtime',
57
+ message: `Direct ${nullDerefMatch[1]} property access`,
58
+ line: lineNumber,
59
+ column: line.indexOf(nullDerefMatch[0]) + 1,
60
+ priority: 2,
61
+ fix: 'Use optional chaining (?.) or null check',
62
+ });
63
+ }
64
+ // Detect unhandled promises
65
+ const promiseMatch = line.match(/\b(\w+)\s*\([^)]*\)(?!\s*\.(then|catch|await))/);
66
+ if (promiseMatch && this.looksLikeAsyncFunction(line)) {
67
+ errors.push({
68
+ type: 'runtime',
69
+ message: `Promise may be unhandled: ${promiseMatch[1]}`,
70
+ line: lineNumber,
71
+ column: line.indexOf(promiseMatch[0]) + 1,
72
+ priority: 2,
73
+ fix: 'Add .catch() or await the promise',
74
+ });
75
+ }
76
+ }
77
+ return this.prioritize(errors);
78
+ }
79
+ looksLikeAsyncFunction(line) {
80
+ return /async|Promise|fetch|axios|request/.test(line);
81
+ }
82
+ prioritize(errors) {
83
+ return errors.sort((a, b) => a.priority - b.priority);
84
+ }
85
+ }
86
+ //# sourceMappingURL=runtime-detector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime-detector.js","sourceRoot":"","sources":["../../src/errors/runtime-detector.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import type { DetectedError } from './pattern-matcher.js';
2
+ export declare class SecurityDetector {
3
+ detectErrors(code: string): DetectedError[];
4
+ private prioritize;
5
+ }
6
+ //# sourceMappingURL=security-detector.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"security-detector.d.ts","sourceRoot":"","sources":["../../src/errors/security-detector.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAE1D,qBAAa,gBAAgB;IAC3B,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa,EAAE;IA6E3C,OAAO,CAAC,UAAU;CAGnB"}
@@ -0,0 +1,75 @@
1
+ export class SecurityDetector {
2
+ detectErrors(code) {
3
+ const errors = [];
4
+ const lines = code.split('\n');
5
+ for (let i = 0; i < lines.length; i++) {
6
+ const line = lines[i];
7
+ const lineNumber = i + 1;
8
+ // Detect SQL injection
9
+ const sqlMatch = line.match(/(query|execute|exec)\s*\([^)]*\+/);
10
+ if (sqlMatch) {
11
+ errors.push({
12
+ type: 'security',
13
+ message: 'SQL query with string concatenation may be vulnerable to injection',
14
+ line: lineNumber,
15
+ column: line.indexOf(sqlMatch[0]) + 1,
16
+ priority: 1,
17
+ fix: 'Use parameterized queries or prepared statements',
18
+ });
19
+ }
20
+ // Detect XSS: innerHTML
21
+ const innerHTMLMatch = line.match(/\.innerHTML\s*=\s*[^;]+/);
22
+ if (innerHTMLMatch) {
23
+ errors.push({
24
+ type: 'security',
25
+ message: 'Setting innerHTML with user input may cause XSS',
26
+ line: lineNumber,
27
+ column: line.indexOf(innerHTMLMatch[0]) + 1,
28
+ priority: 1,
29
+ fix: 'Use textContent or sanitize input',
30
+ });
31
+ }
32
+ // Detect XSS: eval()
33
+ const evalMatch = line.match(/\beval\s*\(/);
34
+ if (evalMatch) {
35
+ errors.push({
36
+ type: 'security',
37
+ message: 'Using eval() with user input is dangerous',
38
+ line: lineNumber,
39
+ column: line.indexOf(evalMatch[0]) + 1,
40
+ priority: 1,
41
+ fix: 'Avoid eval(), use safer alternatives',
42
+ });
43
+ }
44
+ // Detect hardcoded secrets
45
+ const secretMatch = line.match(/(password|secret|key|token|api[_-]?key)\s*[:=]\s*['"][^'"]+['"]/i);
46
+ if (secretMatch) {
47
+ errors.push({
48
+ type: 'security',
49
+ message: `Hardcoded ${secretMatch[1]} in code`,
50
+ line: lineNumber,
51
+ column: line.indexOf(secretMatch[0]) + 1,
52
+ priority: 1,
53
+ fix: 'Use environment variables or secure storage',
54
+ });
55
+ }
56
+ // Detect sensitive data in logs
57
+ const logMatch = line.match(/(console\.(log|warn|error)|logger\.(info|debug))\s*\([^)]*\b(password|secret|token|ssn|credit[_-]?card)/i);
58
+ if (logMatch) {
59
+ errors.push({
60
+ type: 'security',
61
+ message: 'Sensitive data may be logged',
62
+ line: lineNumber,
63
+ column: line.indexOf(logMatch[0]) + 1,
64
+ priority: 1,
65
+ fix: 'Remove sensitive data from logs',
66
+ });
67
+ }
68
+ }
69
+ return this.prioritize(errors);
70
+ }
71
+ prioritize(errors) {
72
+ return errors.sort((a, b) => a.priority - b.priority);
73
+ }
74
+ }
75
+ //# sourceMappingURL=security-detector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"security-detector.js","sourceRoot":"","sources":["../../src/errors/security-detector.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -1,11 +1,18 @@
1
1
  #!/usr/bin/env node
2
2
  import { SafeCoderMCPServer } from './server/mcp-server.js';
3
+ import { logger } from './utils/logger.js';
3
4
  async function main() {
4
- const server = new SafeCoderMCPServer();
5
- await server.run();
5
+ try {
6
+ const server = new SafeCoderMCPServer();
7
+ await server.run();
8
+ }
9
+ catch (error) {
10
+ logger.error('Fatal error starting server', {}, error instanceof Error ? error : new Error(String(error)));
11
+ process.exit(1);
12
+ }
6
13
  }
7
14
  main().catch((error) => {
8
- console.error('Fatal error:', error);
15
+ logger.error('Unhandled error', {}, error instanceof Error ? error : new Error(String(error)));
9
16
  process.exit(1);
10
17
  });
11
18
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAE5D,KAAK,UAAU,IAAI;IACjB,MAAM,MAAM,GAAG,IAAI,kBAAkB,EAAE,CAAC;IACxC,MAAM,MAAM,CAAC,GAAG,EAAE,CAAC;AACrB,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;IACrB,OAAO,CAAC,KAAK,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC;IACrC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAE3C,KAAK,UAAU,IAAI;IACjB,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,kBAAkB,EAAE,CAAC;QACxC,MAAM,MAAM,CAAC,GAAG,EAAE,CAAC;IACrB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,CAAC,KAAK,CAAC,6BAA6B,EAAE,EAAE,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC3G,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;IACrB,MAAM,CAAC,KAAK,CAAC,iBAAiB,EAAE,EAAE,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC/F,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"mcp-server.d.ts","sourceRoot":"","sources":["../../src/server/mcp-server.ts"],"names":[],"mappings":"AAQA,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,MAAM,CAAY;IAC1B,OAAO,CAAC,oBAAoB,CAAuB;IACnD,OAAO,CAAC,cAAc,CAAwB;IAC9C,OAAO,CAAC,UAAU,CAAwB;;IAmB1C,OAAO,CAAC,UAAU;IAgKlB,OAAO,CAAC,cAAc;IAqDhB,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CAK3B"}
1
+ {"version":3,"file":"mcp-server.d.ts","sourceRoot":"","sources":["../../src/server/mcp-server.ts"],"names":[],"mappings":"AAUA,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,MAAM,CAAY;IAC1B,OAAO,CAAC,oBAAoB,CAAuB;IACnD,OAAO,CAAC,cAAc,CAAwB;IAC9C,OAAO,CAAC,UAAU,CAAwB;;IA6B1C,OAAO,CAAC,UAAU;IA0QlB,OAAO,CAAC,cAAc;IAqDhB,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CAO3B"}
@@ -4,6 +4,8 @@ import { z } from 'zod';
4
4
  import { DocumentationService } from '../documentation/index.js';
5
5
  import { ErrorDetectionService } from '../errors/index.js';
6
6
  import { CodeValidationService } from '../validation/index.js';
7
+ import { loadConfig } from '../utils/config.js';
8
+ import { logger } from '../utils/logger.js';
7
9
  export class SafeCoderMCPServer {
8
10
  server;
9
11
  documentationService;
@@ -14,11 +16,10 @@ export class SafeCoderMCPServer {
14
16
  name: 'safe-coder',
15
17
  version: '1.0.0',
16
18
  });
17
- // Initialize services
18
- const cacheTTL = parseInt(process.env.CACHE_TTL_MINUTES || '60', 10);
19
- const githubToken = process.env.GITHUB_TOKEN;
20
- this.documentationService = new DocumentationService(cacheTTL, githubToken);
21
- this.errorDetection = new ErrorDetectionService();
19
+ // Initialize services with configuration
20
+ const config = loadConfig();
21
+ this.documentationService = new DocumentationService(config.cacheTTLMinutes, config.githubToken, config.proxy);
22
+ this.errorDetection = new ErrorDetectionService(config.errorDetection?.enableRuntime ?? true, config.errorDetection?.enablePerformance ?? true, config.errorDetection?.enableSecurity ?? true, config.errorDetection?.enableFramework ?? true, config.errorDetection?.enableApiValidation ?? true, config.errorDetection?.enableCrossFile ?? false);
22
23
  this.validation = new CodeValidationService();
23
24
  this.setupTools();
24
25
  this.setupResources();
@@ -32,6 +33,7 @@ export class SafeCoderMCPServer {
32
33
  packageName: z.string(),
33
34
  version: z.string().optional(),
34
35
  source: z.enum(['npm', 'github', 'http']).optional(),
36
+ forceRefresh: z.boolean().optional().describe('Force refresh even if cached (default: false)'),
35
37
  },
36
38
  outputSchema: {
37
39
  name: z.string(),
@@ -42,24 +44,36 @@ export class SafeCoderMCPServer {
42
44
  lastUpdated: z.string(),
43
45
  },
44
46
  }, async (args) => {
45
- const { packageName, version, source } = args;
46
- const doc = await this.documentationService.getDocumentation(packageName, version, source);
47
- return {
48
- content: [
49
- {
50
- type: 'text',
51
- text: JSON.stringify(doc, null, 2),
47
+ const requestId = logger.generateRequestId();
48
+ const startTime = Date.now();
49
+ const { packageName, version, source, forceRefresh = false } = args;
50
+ logger.toolInvoked('get_documentation', requestId, { packageName, version, source, forceRefresh });
51
+ try {
52
+ const doc = await this.documentationService.getDocumentation(packageName, version, source, forceRefresh);
53
+ const duration = Date.now() - startTime;
54
+ logger.toolCompleted('get_documentation', requestId, duration, true);
55
+ return {
56
+ content: [
57
+ {
58
+ type: 'text',
59
+ text: JSON.stringify(doc, null, 2),
60
+ },
61
+ ],
62
+ structuredContent: {
63
+ name: doc.name,
64
+ version: doc.version,
65
+ content: doc.content,
66
+ source: doc.source,
67
+ url: doc.url,
68
+ lastUpdated: doc.lastUpdated.toISOString(),
52
69
  },
53
- ],
54
- structuredContent: {
55
- name: doc.name,
56
- version: doc.version,
57
- content: doc.content,
58
- source: doc.source,
59
- url: doc.url,
60
- lastUpdated: doc.lastUpdated.toISOString(),
61
- },
62
- };
70
+ };
71
+ }
72
+ catch (error) {
73
+ const duration = Date.now() - startTime;
74
+ logger.toolError('get_documentation', requestId, error instanceof Error ? error : new Error(String(error)), { packageName, version, source });
75
+ throw error;
76
+ }
63
77
  });
64
78
  // Register detect_errors tool
65
79
  this.server.registerTool('detect_errors', {
@@ -81,20 +95,32 @@ export class SafeCoderMCPServer {
81
95
  count: z.number(),
82
96
  },
83
97
  }, async (args) => {
98
+ const requestId = logger.generateRequestId();
99
+ const startTime = Date.now();
84
100
  const { code, filename = 'code.ts' } = args;
85
- const errors = await this.errorDetection.detectErrors(code, filename);
86
- return {
87
- content: [
88
- {
89
- type: 'text',
90
- text: JSON.stringify({ errors, count: errors.length }, null, 2),
101
+ logger.toolInvoked('detect_errors', requestId, { filename, codeLength: code.length });
102
+ try {
103
+ const errors = await this.errorDetection.detectErrors(code, filename);
104
+ const duration = Date.now() - startTime;
105
+ logger.toolCompleted('detect_errors', requestId, duration, true);
106
+ return {
107
+ content: [
108
+ {
109
+ type: 'text',
110
+ text: JSON.stringify({ errors, count: errors.length }, null, 2),
111
+ },
112
+ ],
113
+ structuredContent: {
114
+ errors,
115
+ count: errors.length,
91
116
  },
92
- ],
93
- structuredContent: {
94
- errors,
95
- count: errors.length,
96
- },
97
- };
117
+ };
118
+ }
119
+ catch (error) {
120
+ const duration = Date.now() - startTime;
121
+ logger.toolError('detect_errors', requestId, error instanceof Error ? error : new Error(String(error)), { filename });
122
+ throw error;
123
+ }
98
124
  });
99
125
  // Register validate_code tool
100
126
  this.server.registerTool('validate_code', {
@@ -116,17 +142,71 @@ export class SafeCoderMCPServer {
116
142
  })).optional(),
117
143
  },
118
144
  }, async (args) => {
145
+ const requestId = logger.generateRequestId();
146
+ const startTime = Date.now();
119
147
  const { code, filename = 'code.ts', autoFix = true } = args;
120
- const result = await this.validation.validateCode(code, filename, autoFix ?? true);
121
- return {
122
- content: [
123
- {
124
- type: 'text',
125
- text: JSON.stringify(result, null, 2),
126
- },
127
- ],
128
- structuredContent: result,
129
- };
148
+ logger.toolInvoked('validate_code', requestId, { filename, autoFix, codeLength: code.length });
149
+ try {
150
+ const result = await this.validation.validateCode(code, filename, autoFix ?? true);
151
+ const duration = Date.now() - startTime;
152
+ logger.toolCompleted('validate_code', requestId, duration, true);
153
+ return {
154
+ content: [
155
+ {
156
+ type: 'text',
157
+ text: JSON.stringify(result, null, 2),
158
+ },
159
+ ],
160
+ structuredContent: result,
161
+ };
162
+ }
163
+ catch (error) {
164
+ const duration = Date.now() - startTime;
165
+ logger.toolError('validate_code', requestId, error instanceof Error ? error : new Error(String(error)), { filename });
166
+ throw error;
167
+ }
168
+ });
169
+ // Register get_status tool
170
+ this.server.registerTool('get_status', {
171
+ title: 'Get Server Status',
172
+ description: 'Get current status and statistics of the MCP server',
173
+ inputSchema: {},
174
+ outputSchema: {
175
+ status: z.enum(['running', 'error']),
176
+ uptime: z.number(),
177
+ version: z.string(),
178
+ tools: z.array(z.string()),
179
+ cacheSize: z.number(),
180
+ pid: z.number(),
181
+ },
182
+ }, async () => {
183
+ const requestId = logger.generateRequestId();
184
+ logger.toolInvoked('get_status', requestId);
185
+ try {
186
+ const cache = this.documentationService.getCache();
187
+ const status = {
188
+ status: 'running',
189
+ uptime: process.uptime(),
190
+ version: '1.0.0',
191
+ tools: ['get_documentation', 'detect_errors', 'validate_code', 'resolve_error', 'get_status'],
192
+ cacheSize: cache.size(),
193
+ pid: process.pid,
194
+ };
195
+ logger.toolCompleted('get_status', requestId, 0, true);
196
+ return {
197
+ content: [
198
+ {
199
+ type: 'text',
200
+ text: JSON.stringify(status, null, 2),
201
+ },
202
+ ],
203
+ structuredContent: status,
204
+ };
205
+ }
206
+ catch (error) {
207
+ logger.toolError('get_status', requestId, error instanceof Error ? error : new Error(String(error)));
208
+ throw error;
209
+ }
130
210
  });
131
211
  // Register resolve_error tool
132
212
  this.server.registerTool('resolve_error', {
@@ -144,23 +224,35 @@ export class SafeCoderMCPServer {
144
224
  codeExample: z.string().optional(),
145
225
  },
146
226
  }, async (args) => {
227
+ const requestId = logger.generateRequestId();
228
+ const startTime = Date.now();
147
229
  const { errorType, message, line } = args;
148
- const error = {
149
- type: errorType,
150
- message,
151
- line,
152
- priority: 3,
153
- };
154
- const resolution = this.validation.resolveError(error);
155
- return {
156
- content: [
157
- {
158
- type: 'text',
159
- text: JSON.stringify(resolution, null, 2),
160
- },
161
- ],
162
- structuredContent: resolution,
163
- };
230
+ logger.toolInvoked('resolve_error', requestId, { errorType, message, line });
231
+ try {
232
+ const error = {
233
+ type: errorType,
234
+ message,
235
+ line,
236
+ priority: 3,
237
+ };
238
+ const resolution = this.validation.resolveError(error);
239
+ const duration = Date.now() - startTime;
240
+ logger.toolCompleted('resolve_error', requestId, duration, true);
241
+ return {
242
+ content: [
243
+ {
244
+ type: 'text',
245
+ text: JSON.stringify(resolution, null, 2),
246
+ },
247
+ ],
248
+ structuredContent: resolution,
249
+ };
250
+ }
251
+ catch (error) {
252
+ const duration = Date.now() - startTime;
253
+ logger.toolError('resolve_error', requestId, error instanceof Error ? error : new Error(String(error)), { errorType });
254
+ throw error;
255
+ }
164
256
  });
165
257
  }
166
258
  setupResources() {
@@ -205,9 +297,11 @@ export class SafeCoderMCPServer {
205
297
  });
206
298
  }
207
299
  async run() {
300
+ logger.serverStarted();
208
301
  const transport = new StdioServerTransport();
209
302
  await this.server.connect(transport);
210
- console.error('Safe Coder MCP server running on stdio');
303
+ logger.serverConnected();
304
+ logger.info('Safe Coder MCP server running on stdio');
211
305
  }
212
306
  }
213
307
  //# sourceMappingURL=mcp-server.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"mcp-server.js","sourceRoot":"","sources":["../../src/server/mcp-server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mcp-server.js","sourceRoot":"","sources":["../../src/server/mcp-server.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,21 @@
1
+ import type { ProxyConfig } from './http-client.js';
1
2
  export interface Config {
2
3
  cacheTTLMinutes: number;
3
4
  githubToken?: string;
4
5
  enableAutoFix: boolean;
5
6
  rateLimitRequests: number;
6
7
  rateLimitWindow: number;
8
+ proxy?: ProxyConfig;
9
+ logLevel?: string;
10
+ logColors?: boolean;
11
+ errorDetection?: {
12
+ enableRuntime?: boolean;
13
+ enablePerformance?: boolean;
14
+ enableSecurity?: boolean;
15
+ enableFramework?: boolean;
16
+ enableApiValidation?: boolean;
17
+ enableCrossFile?: boolean;
18
+ };
7
19
  }
8
20
  export declare function loadConfig(): Config;
9
21
  //# sourceMappingURL=config.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/utils/config.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,MAAM;IACrB,eAAe,EAAE,MAAM,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,OAAO,CAAC;IACvB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,eAAe,EAAE,MAAM,CAAC;CACzB;AAED,wBAAgB,UAAU,IAAI,MAAM,CAQnC"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/utils/config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAEpD,MAAM,WAAW,MAAM;IACrB,eAAe,EAAE,MAAM,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,OAAO,CAAC;IACvB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,eAAe,EAAE,MAAM,CAAC;IACxB,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,cAAc,CAAC,EAAE;QACf,aAAa,CAAC,EAAE,OAAO,CAAC;QACxB,iBAAiB,CAAC,EAAE,OAAO,CAAC;QAC5B,cAAc,CAAC,EAAE,OAAO,CAAC;QACzB,eAAe,CAAC,EAAE,OAAO,CAAC;QAC1B,mBAAmB,CAAC,EAAE,OAAO,CAAC;QAC9B,eAAe,CAAC,EAAE,OAAO,CAAC;KAC3B,CAAC;CACH;AAED,wBAAgB,UAAU,IAAI,MAAM,CAgCnC"}
@@ -1,10 +1,34 @@
1
1
  export function loadConfig() {
2
+ // Parse proxy configuration
3
+ let proxy;
4
+ const httpProxy = process.env.HTTP_PROXY || process.env.http_proxy;
5
+ const httpsProxy = process.env.HTTPS_PROXY || process.env.https_proxy;
6
+ const noProxy = process.env.NO_PROXY || process.env.no_proxy;
7
+ if (httpProxy || httpsProxy) {
8
+ proxy = {};
9
+ if (httpProxy)
10
+ proxy.http = httpProxy;
11
+ if (httpsProxy)
12
+ proxy.https = httpsProxy;
13
+ if (noProxy) {
14
+ proxy.noProxy = noProxy.split(',').map(s => s.trim());
15
+ }
16
+ }
2
17
  return {
3
18
  cacheTTLMinutes: parseInt(process.env.CACHE_TTL_MINUTES || '60', 10),
4
19
  githubToken: process.env.GITHUB_TOKEN,
5
20
  enableAutoFix: process.env.ENABLE_AUTO_FIX !== 'false',
6
21
  rateLimitRequests: parseInt(process.env.RATE_LIMIT_REQUESTS || '100', 10),
7
22
  rateLimitWindow: parseInt(process.env.RATE_LIMIT_WINDOW_MS || '60000', 10),
23
+ proxy,
24
+ errorDetection: {
25
+ enableRuntime: process.env.ENABLE_RUNTIME_DETECTION !== 'false',
26
+ enablePerformance: process.env.ENABLE_PERFORMANCE_DETECTION !== 'false',
27
+ enableSecurity: process.env.ENABLE_SECURITY_DETECTION !== 'false',
28
+ enableFramework: process.env.ENABLE_FRAMEWORK_DETECTION !== 'false',
29
+ enableApiValidation: process.env.ENABLE_API_VALIDATION !== 'false',
30
+ enableCrossFile: process.env.ENABLE_CROSS_FILE === 'true',
31
+ },
8
32
  };
9
33
  }
10
34
  //# sourceMappingURL=config.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/utils/config.ts"],"names":[],"mappings":"AAQA,MAAM,UAAU,UAAU;IACxB,OAAO;QACL,eAAe,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,iBAAiB,IAAI,IAAI,EAAE,EAAE,CAAC;QACpE,WAAW,EAAE,OAAO,CAAC,GAAG,CAAC,YAAY;QACrC,aAAa,EAAE,OAAO,CAAC,GAAG,CAAC,eAAe,KAAK,OAAO;QACtD,iBAAiB,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,mBAAmB,IAAI,KAAK,EAAE,EAAE,CAAC;QACzE,eAAe,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,oBAAoB,IAAI,OAAO,EAAE,EAAE,CAAC;KAC3E,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/utils/config.ts"],"names":[],"mappings":"AAqBA,MAAM,UAAU,UAAU;IACxB,4BAA4B;IAC5B,IAAI,KAA8B,CAAC;IACnC,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,UAAU,IAAI,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC;IACnE,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC;IACtE,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC;IAE7D,IAAI,SAAS,IAAI,UAAU,EAAE,CAAC;QAC5B,KAAK,GAAG,EAAE,CAAC;QACX,IAAI,SAAS;YAAE,KAAK,CAAC,IAAI,GAAG,SAAS,CAAC;QACtC,IAAI,UAAU;YAAE,KAAK,CAAC,KAAK,GAAG,UAAU,CAAC;QACzC,IAAI,OAAO,EAAE,CAAC;YACZ,KAAK,CAAC,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;QACxD,CAAC;IACH,CAAC;IAED,OAAO;QACL,eAAe,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,iBAAiB,IAAI,IAAI,EAAE,EAAE,CAAC;QACpE,WAAW,EAAE,OAAO,CAAC,GAAG,CAAC,YAAY;QACrC,aAAa,EAAE,OAAO,CAAC,GAAG,CAAC,eAAe,KAAK,OAAO;QACtD,iBAAiB,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,mBAAmB,IAAI,KAAK,EAAE,EAAE,CAAC;QACzE,eAAe,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,oBAAoB,IAAI,OAAO,EAAE,EAAE,CAAC;QAC1E,KAAK;QACL,cAAc,EAAE;YACd,aAAa,EAAE,OAAO,CAAC,GAAG,CAAC,wBAAwB,KAAK,OAAO;YAC/D,iBAAiB,EAAE,OAAO,CAAC,GAAG,CAAC,4BAA4B,KAAK,OAAO;YACvE,cAAc,EAAE,OAAO,CAAC,GAAG,CAAC,yBAAyB,KAAK,OAAO;YACjE,eAAe,EAAE,OAAO,CAAC,GAAG,CAAC,0BAA0B,KAAK,OAAO;YACnE,mBAAmB,EAAE,OAAO,CAAC,GAAG,CAAC,qBAAqB,KAAK,OAAO;YAClE,eAAe,EAAE,OAAO,CAAC,GAAG,CAAC,iBAAiB,KAAK,MAAM;SAC1D;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,17 @@
1
+ import { AxiosRequestConfig } from 'axios';
2
+ export interface ProxyConfig {
3
+ http?: string;
4
+ https?: string;
5
+ noProxy?: string[];
6
+ }
7
+ export declare class HttpClient {
8
+ private axiosInstance;
9
+ private proxyConfig?;
10
+ constructor(proxyConfig?: ProxyConfig);
11
+ private setupProxy;
12
+ get(url: string, config?: AxiosRequestConfig): Promise<import("axios").AxiosResponse<any, any, {}>>;
13
+ post(url: string, data?: any, config?: AxiosRequestConfig): Promise<import("axios").AxiosResponse<any, any, {}>>;
14
+ put(url: string, data?: any, config?: AxiosRequestConfig): Promise<import("axios").AxiosResponse<any, any, {}>>;
15
+ delete(url: string, config?: AxiosRequestConfig): Promise<import("axios").AxiosResponse<any, any, {}>>;
16
+ }
17
+ //# sourceMappingURL=http-client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"http-client.d.ts","sourceRoot":"","sources":["../../src/utils/http-client.ts"],"names":[],"mappings":"AAAA,OAAc,EAAiB,kBAAkB,EAAE,MAAM,OAAO,CAAC;AAIjE,MAAM,WAAW,WAAW;IAC1B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,qBAAa,UAAU;IACrB,OAAO,CAAC,aAAa,CAAgB;IACrC,OAAO,CAAC,WAAW,CAAC,CAAc;gBAEtB,WAAW,CAAC,EAAE,WAAW;IAMrC,OAAO,CAAC,UAAU;IA4ClB,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,kBAAkB;IAI5C,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,EAAE,kBAAkB;IAIzD,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,EAAE,kBAAkB;IAIxD,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,kBAAkB;CAGhD"}