codeguardian-mcp 1.0.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/LICENSE +21 -0
- package/README.md +348 -0
- package/dist/agent/agentTools.d.ts +26 -0
- package/dist/agent/agentTools.d.ts.map +1 -0
- package/dist/agent/agentTools.js +699 -0
- package/dist/agent/agentTools.js.map +1 -0
- package/dist/agent/autoValidator.d.ts +110 -0
- package/dist/agent/autoValidator.d.ts.map +1 -0
- package/dist/agent/autoValidator.js +964 -0
- package/dist/agent/autoValidator.js.map +1 -0
- package/dist/agent/fileWatcher.d.ts +28 -0
- package/dist/agent/fileWatcher.d.ts.map +1 -0
- package/dist/agent/fileWatcher.js +88 -0
- package/dist/agent/fileWatcher.js.map +1 -0
- package/dist/agent/guardianPersistence.d.ts +98 -0
- package/dist/agent/guardianPersistence.d.ts.map +1 -0
- package/dist/agent/guardianPersistence.js +296 -0
- package/dist/agent/guardianPersistence.js.map +1 -0
- package/dist/agent/mcpNotifications.d.ts +38 -0
- package/dist/agent/mcpNotifications.d.ts.map +1 -0
- package/dist/agent/mcpNotifications.js +81 -0
- package/dist/agent/mcpNotifications.js.map +1 -0
- package/dist/analyzers/aiPatterns.d.ts +16 -0
- package/dist/analyzers/aiPatterns.d.ts.map +1 -0
- package/dist/analyzers/aiPatterns.js +103 -0
- package/dist/analyzers/aiPatterns.js.map +1 -0
- package/dist/analyzers/antiPatterns.d.ts +60 -0
- package/dist/analyzers/antiPatterns.d.ts.map +1 -0
- package/dist/analyzers/antiPatterns.js +198 -0
- package/dist/analyzers/antiPatterns.js.map +1 -0
- package/dist/analyzers/builtinTypes.d.ts +18 -0
- package/dist/analyzers/builtinTypes.d.ts.map +1 -0
- package/dist/analyzers/builtinTypes.js +1275 -0
- package/dist/analyzers/builtinTypes.js.map +1 -0
- package/dist/analyzers/complexity.d.ts +14 -0
- package/dist/analyzers/complexity.d.ts.map +1 -0
- package/dist/analyzers/complexity.js +610 -0
- package/dist/analyzers/complexity.js.map +1 -0
- package/dist/analyzers/findingVerifier.d.ts +59 -0
- package/dist/analyzers/findingVerifier.d.ts.map +1 -0
- package/dist/analyzers/findingVerifier.js +1169 -0
- package/dist/analyzers/findingVerifier.js.map +1 -0
- package/dist/analyzers/impactAnalyzer.d.ts +53 -0
- package/dist/analyzers/impactAnalyzer.d.ts.map +1 -0
- package/dist/analyzers/impactAnalyzer.js +152 -0
- package/dist/analyzers/impactAnalyzer.js.map +1 -0
- package/dist/analyzers/languageDetector.d.ts +48 -0
- package/dist/analyzers/languageDetector.d.ts.map +1 -0
- package/dist/analyzers/languageDetector.js +404 -0
- package/dist/analyzers/languageDetector.js.map +1 -0
- package/dist/analyzers/parsers/incrementalParser.d.ts +53 -0
- package/dist/analyzers/parsers/incrementalParser.d.ts.map +1 -0
- package/dist/analyzers/parsers/incrementalParser.js +193 -0
- package/dist/analyzers/parsers/incrementalParser.js.map +1 -0
- package/dist/analyzers/parsers/scopeResolver.d.ts +92 -0
- package/dist/analyzers/parsers/scopeResolver.d.ts.map +1 -0
- package/dist/analyzers/parsers/scopeResolver.js +324 -0
- package/dist/analyzers/parsers/scopeResolver.js.map +1 -0
- package/dist/analyzers/parsers/semanticIndex.d.ts +127 -0
- package/dist/analyzers/parsers/semanticIndex.d.ts.map +1 -0
- package/dist/analyzers/parsers/semanticIndex.js +429 -0
- package/dist/analyzers/parsers/semanticIndex.js.map +1 -0
- package/dist/analyzers/parsers/sessionDiffAnalyzer.d.ts +42 -0
- package/dist/analyzers/parsers/sessionDiffAnalyzer.d.ts.map +1 -0
- package/dist/analyzers/parsers/sessionDiffAnalyzer.js +233 -0
- package/dist/analyzers/parsers/sessionDiffAnalyzer.js.map +1 -0
- package/dist/analyzers/parsers/treeSitterParser.d.ts +76 -0
- package/dist/analyzers/parsers/treeSitterParser.d.ts.map +1 -0
- package/dist/analyzers/parsers/treeSitterParser.js +709 -0
- package/dist/analyzers/parsers/treeSitterParser.js.map +1 -0
- package/dist/analyzers/relevanceScorer.d.ts +43 -0
- package/dist/analyzers/relevanceScorer.d.ts.map +1 -0
- package/dist/analyzers/relevanceScorer.js +200 -0
- package/dist/analyzers/relevanceScorer.js.map +1 -0
- package/dist/analyzers/standardLibrary.d.ts +22 -0
- package/dist/analyzers/standardLibrary.d.ts.map +1 -0
- package/dist/analyzers/standardLibrary.js +211 -0
- package/dist/analyzers/standardLibrary.js.map +1 -0
- package/dist/analyzers/symbolGraph.d.ts +30 -0
- package/dist/analyzers/symbolGraph.d.ts.map +1 -0
- package/dist/analyzers/symbolGraph.js +380 -0
- package/dist/analyzers/symbolGraph.js.map +1 -0
- package/dist/analyzers/symbolTable.d.ts +18 -0
- package/dist/analyzers/symbolTable.d.ts.map +1 -0
- package/dist/analyzers/symbolTable.js +176 -0
- package/dist/analyzers/symbolTable.js.map +1 -0
- package/dist/analyzers/typeChecker.d.ts +13 -0
- package/dist/analyzers/typeChecker.d.ts.map +1 -0
- package/dist/analyzers/typeChecker.js +580 -0
- package/dist/analyzers/typeChecker.js.map +1 -0
- package/dist/analyzers/usagePatterns.d.ts +42 -0
- package/dist/analyzers/usagePatterns.d.ts.map +1 -0
- package/dist/analyzers/usagePatterns.js +75 -0
- package/dist/analyzers/usagePatterns.js.map +1 -0
- package/dist/api-contract/context/backend.d.ts +19 -0
- package/dist/api-contract/context/backend.d.ts.map +1 -0
- package/dist/api-contract/context/backend.js +64 -0
- package/dist/api-contract/context/backend.js.map +1 -0
- package/dist/api-contract/context/contract.d.ts +34 -0
- package/dist/api-contract/context/contract.d.ts.map +1 -0
- package/dist/api-contract/context/contract.js +306 -0
- package/dist/api-contract/context/contract.js.map +1 -0
- package/dist/api-contract/context/frontend.d.ts +19 -0
- package/dist/api-contract/context/frontend.d.ts.map +1 -0
- package/dist/api-contract/context/frontend.js +64 -0
- package/dist/api-contract/context/frontend.js.map +1 -0
- package/dist/api-contract/detector.d.ts +28 -0
- package/dist/api-contract/detector.d.ts.map +1 -0
- package/dist/api-contract/detector.js +393 -0
- package/dist/api-contract/detector.js.map +1 -0
- package/dist/api-contract/extractors/python.d.ts +32 -0
- package/dist/api-contract/extractors/python.d.ts.map +1 -0
- package/dist/api-contract/extractors/python.js +521 -0
- package/dist/api-contract/extractors/python.js.map +1 -0
- package/dist/api-contract/extractors/pythonAstUtils.d.ts +44 -0
- package/dist/api-contract/extractors/pythonAstUtils.d.ts.map +1 -0
- package/dist/api-contract/extractors/pythonAstUtils.js +489 -0
- package/dist/api-contract/extractors/pythonAstUtils.js.map +1 -0
- package/dist/api-contract/extractors/tsAstUtils.d.ts +47 -0
- package/dist/api-contract/extractors/tsAstUtils.d.ts.map +1 -0
- package/dist/api-contract/extractors/tsAstUtils.js +173 -0
- package/dist/api-contract/extractors/tsAstUtils.js.map +1 -0
- package/dist/api-contract/extractors/typescript.d.ts +32 -0
- package/dist/api-contract/extractors/typescript.d.ts.map +1 -0
- package/dist/api-contract/extractors/typescript.js +666 -0
- package/dist/api-contract/extractors/typescript.js.map +1 -0
- package/dist/api-contract/index.d.ts +104 -0
- package/dist/api-contract/index.d.ts.map +1 -0
- package/dist/api-contract/index.js +232 -0
- package/dist/api-contract/index.js.map +1 -0
- package/dist/api-contract/types.d.ts +151 -0
- package/dist/api-contract/types.d.ts.map +1 -0
- package/dist/api-contract/types.js +19 -0
- package/dist/api-contract/types.js.map +1 -0
- package/dist/api-contract/validators/endpoint.d.ts +21 -0
- package/dist/api-contract/validators/endpoint.d.ts.map +1 -0
- package/dist/api-contract/validators/endpoint.js +224 -0
- package/dist/api-contract/validators/endpoint.js.map +1 -0
- package/dist/api-contract/validators/index.d.ts +40 -0
- package/dist/api-contract/validators/index.d.ts.map +1 -0
- package/dist/api-contract/validators/index.js +875 -0
- package/dist/api-contract/validators/index.js.map +1 -0
- package/dist/api-contract/validators/parameter.d.ts +17 -0
- package/dist/api-contract/validators/parameter.d.ts.map +1 -0
- package/dist/api-contract/validators/parameter.js +250 -0
- package/dist/api-contract/validators/parameter.js.map +1 -0
- package/dist/api-contract/validators/type.d.ts +38 -0
- package/dist/api-contract/validators/type.d.ts.map +1 -0
- package/dist/api-contract/validators/type.js +244 -0
- package/dist/api-contract/validators/type.js.map +1 -0
- package/dist/context/apiContract/complexTypeSupport.d.ts +83 -0
- package/dist/context/apiContract/complexTypeSupport.d.ts.map +1 -0
- package/dist/context/apiContract/complexTypeSupport.js +665 -0
- package/dist/context/apiContract/complexTypeSupport.js.map +1 -0
- package/dist/context/apiContract/graphqlSupport.d.ts +105 -0
- package/dist/context/apiContract/graphqlSupport.d.ts.map +1 -0
- package/dist/context/apiContract/graphqlSupport.js +671 -0
- package/dist/context/apiContract/graphqlSupport.js.map +1 -0
- package/dist/context/apiContract/index.d.ts +14 -0
- package/dist/context/apiContract/index.d.ts.map +1 -0
- package/dist/context/apiContract/index.js +17 -0
- package/dist/context/apiContract/index.js.map +1 -0
- package/dist/context/apiContract/webSocketSupport.d.ts +104 -0
- package/dist/context/apiContract/webSocketSupport.d.ts.map +1 -0
- package/dist/context/apiContract/webSocketSupport.js +465 -0
- package/dist/context/apiContract/webSocketSupport.js.map +1 -0
- package/dist/context/apiContractContext.d.ts +15 -0
- package/dist/context/apiContractContext.d.ts.map +1 -0
- package/dist/context/apiContractContext.js +979 -0
- package/dist/context/apiContractContext.js.map +1 -0
- package/dist/context/apiContractExtraction.d.ts +52 -0
- package/dist/context/apiContractExtraction.d.ts.map +1 -0
- package/dist/context/apiContractExtraction.js +438 -0
- package/dist/context/apiContractExtraction.js.map +1 -0
- package/dist/context/contextLineage.d.ts +79 -0
- package/dist/context/contextLineage.d.ts.map +1 -0
- package/dist/context/contextLineage.js +259 -0
- package/dist/context/contextLineage.js.map +1 -0
- package/dist/context/contextOrchestrator.d.ts +57 -0
- package/dist/context/contextOrchestrator.d.ts.map +1 -0
- package/dist/context/contextOrchestrator.js +162 -0
- package/dist/context/contextOrchestrator.js.map +1 -0
- package/dist/context/intentTracker.d.ts +73 -0
- package/dist/context/intentTracker.d.ts.map +1 -0
- package/dist/context/intentTracker.js +168 -0
- package/dist/context/intentTracker.js.map +1 -0
- package/dist/context/projectContext.d.ts +219 -0
- package/dist/context/projectContext.d.ts.map +1 -0
- package/dist/context/projectContext.js +1984 -0
- package/dist/context/projectContext.js.map +1 -0
- package/dist/prompts/index.d.ts +17 -0
- package/dist/prompts/index.d.ts.map +1 -0
- package/dist/prompts/index.js +260 -0
- package/dist/prompts/index.js.map +1 -0
- package/dist/prompts/library.d.ts +51 -0
- package/dist/prompts/library.d.ts.map +1 -0
- package/dist/prompts/library.js +65 -0
- package/dist/prompts/library.js.map +1 -0
- package/dist/prompts/templates.d.ts +44 -0
- package/dist/prompts/templates.d.ts.map +1 -0
- package/dist/prompts/templates.js +97 -0
- package/dist/prompts/templates.js.map +1 -0
- package/dist/queue/jobPersistence.d.ts +46 -0
- package/dist/queue/jobPersistence.d.ts.map +1 -0
- package/dist/queue/jobPersistence.js +158 -0
- package/dist/queue/jobPersistence.js.map +1 -0
- package/dist/queue/jobQueue.d.ts +116 -0
- package/dist/queue/jobQueue.d.ts.map +1 -0
- package/dist/queue/jobQueue.js +275 -0
- package/dist/queue/jobQueue.js.map +1 -0
- package/dist/queue/validationJob.d.ts +69 -0
- package/dist/queue/validationJob.d.ts.map +1 -0
- package/dist/queue/validationJob.js +435 -0
- package/dist/queue/validationJob.js.map +1 -0
- package/dist/resources/index.d.ts +15 -0
- package/dist/resources/index.d.ts.map +1 -0
- package/dist/resources/index.js +328 -0
- package/dist/resources/index.js.map +1 -0
- package/dist/resources/validationReportStore.d.ts +170 -0
- package/dist/resources/validationReportStore.d.ts.map +1 -0
- package/dist/resources/validationReportStore.js +515 -0
- package/dist/resources/validationReportStore.js.map +1 -0
- package/dist/server.d.ts +12 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +102 -0
- package/dist/server.js.map +1 -0
- package/dist/tools/asyncValidation.d.ts +19 -0
- package/dist/tools/asyncValidation.d.ts.map +1 -0
- package/dist/tools/asyncValidation.js +346 -0
- package/dist/tools/asyncValidation.js.map +1 -0
- package/dist/tools/buildContext.d.ts +17 -0
- package/dist/tools/buildContext.d.ts.map +1 -0
- package/dist/tools/buildContext.js +188 -0
- package/dist/tools/buildContext.js.map +1 -0
- package/dist/tools/getDependencyGraph.d.ts +16 -0
- package/dist/tools/getDependencyGraph.d.ts.map +1 -0
- package/dist/tools/getDependencyGraph.js +436 -0
- package/dist/tools/getDependencyGraph.js.map +1 -0
- package/dist/tools/incrementalValidation.d.ts +71 -0
- package/dist/tools/incrementalValidation.d.ts.map +1 -0
- package/dist/tools/incrementalValidation.js +203 -0
- package/dist/tools/incrementalValidation.js.map +1 -0
- package/dist/tools/index.d.ts +24 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +106 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tools/validateCode.d.ts +17 -0
- package/dist/tools/validateCode.d.ts.map +1 -0
- package/dist/tools/validateCode.js +368 -0
- package/dist/tools/validateCode.js.map +1 -0
- package/dist/tools/validateCodeLite.d.ts +2 -0
- package/dist/tools/validateCodeLite.d.ts.map +1 -0
- package/dist/tools/validateCodeLite.js +2 -0
- package/dist/tools/validateCodeLite.js.map +1 -0
- package/dist/tools/validation/builtins.d.ts +92 -0
- package/dist/tools/validation/builtins.d.ts.map +1 -0
- package/dist/tools/validation/builtins.js +2184 -0
- package/dist/tools/validation/builtins.js.map +1 -0
- package/dist/tools/validation/contextualNaming.d.ts +99 -0
- package/dist/tools/validation/contextualNaming.d.ts.map +1 -0
- package/dist/tools/validation/contextualNaming.js +959 -0
- package/dist/tools/validation/contextualNaming.js.map +1 -0
- package/dist/tools/validation/deadCode.d.ts +115 -0
- package/dist/tools/validation/deadCode.d.ts.map +1 -0
- package/dist/tools/validation/deadCode.js +861 -0
- package/dist/tools/validation/deadCode.js.map +1 -0
- package/dist/tools/validation/extractors/index.d.ts +131 -0
- package/dist/tools/validation/extractors/index.d.ts.map +1 -0
- package/dist/tools/validation/extractors/index.js +233 -0
- package/dist/tools/validation/extractors/index.js.map +1 -0
- package/dist/tools/validation/extractors/javascript.d.ts +73 -0
- package/dist/tools/validation/extractors/javascript.d.ts.map +1 -0
- package/dist/tools/validation/extractors/javascript.js +1841 -0
- package/dist/tools/validation/extractors/javascript.js.map +1 -0
- package/dist/tools/validation/extractors/python.d.ts +93 -0
- package/dist/tools/validation/extractors/python.d.ts.map +1 -0
- package/dist/tools/validation/extractors/python.js +799 -0
- package/dist/tools/validation/extractors/python.js.map +1 -0
- package/dist/tools/validation/manifest.d.ts +45 -0
- package/dist/tools/validation/manifest.d.ts.map +1 -0
- package/dist/tools/validation/manifest.js +719 -0
- package/dist/tools/validation/manifest.js.map +1 -0
- package/dist/tools/validation/parser.d.ts +58 -0
- package/dist/tools/validation/parser.d.ts.map +1 -0
- package/dist/tools/validation/parser.js +232 -0
- package/dist/tools/validation/parser.js.map +1 -0
- package/dist/tools/validation/registry.d.ts +15 -0
- package/dist/tools/validation/registry.d.ts.map +1 -0
- package/dist/tools/validation/registry.js +169 -0
- package/dist/tools/validation/registry.js.map +1 -0
- package/dist/tools/validation/scoring.d.ts +54 -0
- package/dist/tools/validation/scoring.d.ts.map +1 -0
- package/dist/tools/validation/scoring.js +242 -0
- package/dist/tools/validation/scoring.js.map +1 -0
- package/dist/tools/validation/types.d.ts +120 -0
- package/dist/tools/validation/types.d.ts.map +1 -0
- package/dist/tools/validation/types.js +11 -0
- package/dist/tools/validation/types.js.map +1 -0
- package/dist/tools/validation/unusedLocals.d.ts +36 -0
- package/dist/tools/validation/unusedLocals.d.ts.map +1 -0
- package/dist/tools/validation/unusedLocals.js +333 -0
- package/dist/tools/validation/unusedLocals.js.map +1 -0
- package/dist/tools/validation/validation.d.ts +98 -0
- package/dist/tools/validation/validation.d.ts.map +1 -0
- package/dist/tools/validation/validation.js +1837 -0
- package/dist/tools/validation/validation.js.map +1 -0
- package/dist/types/codeGraph.d.ts +163 -0
- package/dist/types/codeGraph.d.ts.map +1 -0
- package/dist/types/codeGraph.js +9 -0
- package/dist/types/codeGraph.js.map +1 -0
- package/dist/types/symbolGraph.d.ts +68 -0
- package/dist/types/symbolGraph.d.ts.map +1 -0
- package/dist/types/symbolGraph.js +10 -0
- package/dist/types/symbolGraph.js.map +1 -0
- package/dist/types/tools.d.ts +43 -0
- package/dist/types/tools.d.ts.map +1 -0
- package/dist/types/tools.js +7 -0
- package/dist/types/tools.js.map +1 -0
- package/dist/utils/fileFilter.d.ts +37 -0
- package/dist/utils/fileFilter.d.ts.map +1 -0
- package/dist/utils/fileFilter.js +91 -0
- package/dist/utils/fileFilter.js.map +1 -0
- package/dist/utils/gitUtils.d.ts +28 -0
- package/dist/utils/gitUtils.d.ts.map +1 -0
- package/dist/utils/gitUtils.js +81 -0
- package/dist/utils/gitUtils.js.map +1 -0
- package/dist/utils/logger.d.ts +15 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +38 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/serialization.d.ts +25 -0
- package/dist/utils/serialization.d.ts.map +1 -0
- package/dist/utils/serialization.js +53 -0
- package/dist/utils/serialization.js.map +1 -0
- package/package.json +90 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Godwin Mayodi
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,348 @@
|
|
|
1
|
+
# CodeGuardian MCP
|
|
2
|
+
|
|
3
|
+
<p align="center">
|
|
4
|
+
<img src="https://img.shields.io/badge/TypeScript-007ACC?style=for-the-badge&logo=typescript&logoColor=white" alt="TypeScript">
|
|
5
|
+
<img src="https://img.shields.io/badge/JavaScript-F7DF1E?style=for-the-badge&logo=javascript&logoColor=black" alt="JavaScript">
|
|
6
|
+
<img src="https://img.shields.io/badge/Python-3776AB?style=for-the-badge&logo=python&logoColor=white" alt="Python">
|
|
7
|
+
<img src="https://img.shields.io/badge/MCP%20Server-FF6B6B?style=for-the-badge&logo=server&logoColor=white" alt="MCP Server">
|
|
8
|
+
</p>
|
|
9
|
+
|
|
10
|
+
<p align="center">
|
|
11
|
+
<img src="https://img.shields.io/badge/AI%20Hallucination%20Detection-00C853?style=for-the-badge&logo=artificial-intelligence&logoColor=white" alt="AI Hallucination Detection">
|
|
12
|
+
<img src="https://img.shields.io/badge/Dead%20Code%20Detection-FF9800?style=for-the-badge&logo=code&logoColor=white" alt="Dead Code Detection">
|
|
13
|
+
<img src="https://img.shields.io/badge/License-MIT-yellow?style=for-the-badge" alt="License">
|
|
14
|
+
</p>
|
|
15
|
+
|
|
16
|
+
<p align="center">
|
|
17
|
+
<b>Catches AI hallucinations before they break your code</b>
|
|
18
|
+
</p>
|
|
19
|
+
|
|
20
|
+
<p align="center">
|
|
21
|
+
<a href="#installation">Installation</a> •
|
|
22
|
+
<a href="#connecting-to-your-mcp-client">Connect MCP</a> •
|
|
23
|
+
<a href="#quick-start">Quick Start</a> •
|
|
24
|
+
<a href="#features">Features</a> •
|
|
25
|
+
<a href="#all-tools">All Tools</a> •
|
|
26
|
+
<a href="#contributing">Contributing</a>
|
|
27
|
+
</p>
|
|
28
|
+
|
|
29
|
+
---
|
|
30
|
+
|
|
31
|
+
## The Problem
|
|
32
|
+
|
|
33
|
+
AI coding assistants hallucinate. They generate code that **compiles fine but breaks at runtime**:
|
|
34
|
+
|
|
35
|
+
```typescript
|
|
36
|
+
// [X] AI generates this:
|
|
37
|
+
const user = getUserById(id); // Function doesn't exist!
|
|
38
|
+
|
|
39
|
+
// [OK] Your codebase has:
|
|
40
|
+
const user = findUserById(id); // Correct function name
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
**Common AI Hallucinations:**
|
|
44
|
+
- [CRITICAL] Calling `getUserById()` when your codebase has `findUserById()`
|
|
45
|
+
- [CRITICAL] Using methods that aren't on your classes
|
|
46
|
+
- [CRITICAL] Importing from modules that don't export what they claim
|
|
47
|
+
- [CRITICAL] Creating dead code that nothing ever uses
|
|
48
|
+
|
|
49
|
+
## The Solution
|
|
50
|
+
|
|
51
|
+
CodeGuardian validates AI-generated code against your **actual codebase** before you run it.
|
|
52
|
+
|
|
53
|
+
```
|
|
54
|
+
┌─────────────────┐ ┌──────────────────┐ ┌─────────────────┐
|
|
55
|
+
│ AI Generates │────▶│ CodeGuardian │────▶│ Issues Found │
|
|
56
|
+
│ Code │ │ Validates │ │ + Suggestions │
|
|
57
|
+
└─────────────────┘ └──────────────────┘ └─────────────────┘
|
|
58
|
+
│ │ │
|
|
59
|
+
▼ ▼ ▼
|
|
60
|
+
Vibe Coding AST Parsing Fix Before
|
|
61
|
+
Confidently Symbol Matching Runtime
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
## Installation
|
|
65
|
+
|
|
66
|
+
### Prerequisites
|
|
67
|
+
|
|
68
|
+
- **Node.js** v20 or higher ([Download](https://nodejs.org/))
|
|
69
|
+
- **pnpm** package manager ([Install](https://pnpm.io/installation))
|
|
70
|
+
|
|
71
|
+
### Clone & Build
|
|
72
|
+
|
|
73
|
+
```bash
|
|
74
|
+
# Clone the repository
|
|
75
|
+
git clone https://github.com/codegoddy/codeguardian_mcp.git
|
|
76
|
+
cd codeguardian_mcp
|
|
77
|
+
|
|
78
|
+
# Install dependencies
|
|
79
|
+
pnpm install
|
|
80
|
+
|
|
81
|
+
# Build the project
|
|
82
|
+
pnpm run build
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
## Connecting to Your MCP Client
|
|
86
|
+
|
|
87
|
+
After building, you need to tell your MCP client (Claude Desktop, Windsurf, Cursor, etc.) where CodeGuardian lives.
|
|
88
|
+
|
|
89
|
+
The key is the **absolute path** to `dist/server.js` inside wherever you cloned the repo.
|
|
90
|
+
|
|
91
|
+
### 1. Find your path
|
|
92
|
+
|
|
93
|
+
Run this from inside the cloned repo to get the exact path:
|
|
94
|
+
|
|
95
|
+
```bash
|
|
96
|
+
echo "$(pwd)/dist/server.js"
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
This will output something like:
|
|
100
|
+
- **Linux**: `/home/youruser/codeguardian_mcp/dist/server.js`
|
|
101
|
+
- **macOS**: `/Users/youruser/codeguardian_mcp/dist/server.js`
|
|
102
|
+
- **Windows**: `C:\Users\youruser\codeguardian_mcp\dist\server.js`
|
|
103
|
+
|
|
104
|
+
### 2. Add to your MCP client config
|
|
105
|
+
|
|
106
|
+
Copy the path from step 1 and add it to your client's MCP configuration:
|
|
107
|
+
|
|
108
|
+
**Claude Desktop** (`claude_desktop_config.json`):
|
|
109
|
+
```json
|
|
110
|
+
{
|
|
111
|
+
"mcpServers": {
|
|
112
|
+
"codeguardian": {
|
|
113
|
+
"command": "node",
|
|
114
|
+
"args": ["/home/youruser/codeguardian_mcp/dist/server.js"]
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
**Windsurf / Cursor** (`mcp_config.json`):
|
|
121
|
+
```json
|
|
122
|
+
{
|
|
123
|
+
"mcpServers": {
|
|
124
|
+
"codeguardian": {
|
|
125
|
+
"command": "node",
|
|
126
|
+
"args": ["/home/youruser/codeguardian_mcp/dist/server.js"]
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
**OpenCode** (`opencode.json` in your project root):
|
|
133
|
+
```json
|
|
134
|
+
{
|
|
135
|
+
"$schema": "https://opencode.ai/config.json",
|
|
136
|
+
"mcp": {
|
|
137
|
+
"codeguardian": {
|
|
138
|
+
"type": "local",
|
|
139
|
+
"command": ["node", "/home/youruser/codeguardian_mcp/dist/server.js"],
|
|
140
|
+
"enabled": true
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
**Gemini CLI / Antigravity** (`settings.json`):
|
|
147
|
+
```json
|
|
148
|
+
{
|
|
149
|
+
"mcpServers": {
|
|
150
|
+
"codeguardian": {
|
|
151
|
+
"command": "node",
|
|
152
|
+
"args": ["/home/youruser/codeguardian_mcp/dist/server.js"]
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
**Claude Code** (CLI):
|
|
159
|
+
```bash
|
|
160
|
+
claude mcp add --transport stdio codeguardian -- node /home/youruser/codeguardian_mcp/dist/server.js
|
|
161
|
+
```
|
|
162
|
+
|
|
163
|
+
> **Important:** Replace the path with the actual output from step 1. The path depends on where **you** cloned the repo.
|
|
164
|
+
|
|
165
|
+
### 3. Restart your MCP client
|
|
166
|
+
|
|
167
|
+
Restart your IDE / MCP client for the changes to take effect. You should see CodeGuardian's tools become available.
|
|
168
|
+
|
|
169
|
+
## Quick Start
|
|
170
|
+
|
|
171
|
+
The two primary tools that handle everything for you:
|
|
172
|
+
|
|
173
|
+
### `start_validation` — Full Project Health Check
|
|
174
|
+
|
|
175
|
+
Scans your entire codebase for hallucinations, dead code, and bad imports. Best for on-demand audits.
|
|
176
|
+
|
|
177
|
+
```
|
|
178
|
+
start_validation({
|
|
179
|
+
projectPath: "/absolute/path/to/your/project",
|
|
180
|
+
language: "typescript"
|
|
181
|
+
})
|
|
182
|
+
```
|
|
183
|
+
|
|
184
|
+
This runs in the background (no timeouts). Check progress and get results with:
|
|
185
|
+
- `get_validation_status({ jobId: "..." })` — poll progress
|
|
186
|
+
- `get_validation_results({ jobId: "..." })` — get the final report
|
|
187
|
+
|
|
188
|
+
### `start_guardian` — Real-Time File Watcher
|
|
189
|
+
|
|
190
|
+
Watches your project and automatically validates files as you (or your AI) edit them. Runs continuously in the background.
|
|
191
|
+
|
|
192
|
+
```
|
|
193
|
+
start_guardian({
|
|
194
|
+
projectPath: "/absolute/path/to/your/project",
|
|
195
|
+
language: "typescript"
|
|
196
|
+
})
|
|
197
|
+
```
|
|
198
|
+
|
|
199
|
+
Once running, it catches issues in real-time. Use these companion tools:
|
|
200
|
+
- `get_guardian_alerts` — see current issues found by the watcher
|
|
201
|
+
- `get_guardian_status` — check which guardians are active
|
|
202
|
+
- `stop_guardian` — stop a guardian when done
|
|
203
|
+
|
|
204
|
+
> **Tip:** These two tools handle everything without needing to call individual validation tools manually. `start_validation` for audits, `start_guardian` for continuous protection.
|
|
205
|
+
|
|
206
|
+
## Features
|
|
207
|
+
|
|
208
|
+
### AI Hallucination Detection
|
|
209
|
+
Catches non-existent functions, classes, and methods with **95% confidence**
|
|
210
|
+
|
|
211
|
+
### Confidence Scoring
|
|
212
|
+
Every issue includes a confidence score (0-100%) and detailed reasoning
|
|
213
|
+
|
|
214
|
+
| Score | Level | Action |
|
|
215
|
+
|-------|-------|--------|
|
|
216
|
+
| 0-49 | Critical | **REJECT** - Major hallucinations detected |
|
|
217
|
+
| 50-69 | Low | **REVIEW** - Multiple issues need attention |
|
|
218
|
+
| 70-89 | Medium | **CAUTION** - Minor issues, review suggested |
|
|
219
|
+
| 90-100 | High | **ACCEPT** - Code is safe to use |
|
|
220
|
+
|
|
221
|
+
### Dead Code Detection
|
|
222
|
+
Finds exported functions and classes that nothing imports
|
|
223
|
+
|
|
224
|
+
### API Contract Validation
|
|
225
|
+
Detects mismatches between frontend and backend — wrong endpoints, missing fields, type incompatibilities
|
|
226
|
+
|
|
227
|
+
### Multi-Language Support
|
|
228
|
+
- **TypeScript / JavaScript** — full support
|
|
229
|
+
- **Python** — full support
|
|
230
|
+
|
|
231
|
+
### Full-Stack Projects
|
|
232
|
+
Automatically detects full-stack projects (e.g. React + FastAPI, Next.js + Express) and validates each language correctly.
|
|
233
|
+
|
|
234
|
+
### Real-Time Validation
|
|
235
|
+
Validates code immediately after generation with sub-second response times
|
|
236
|
+
|
|
237
|
+
## What It Catches
|
|
238
|
+
|
|
239
|
+
| Type | Example | Severity | Confidence |
|
|
240
|
+
|------|---------|----------|------------|
|
|
241
|
+
| Non-existent function | `getUserById()` when it doesn't exist | Critical | 95% |
|
|
242
|
+
| Non-existent class | `new PaymentService()` when undefined | Critical | 95% |
|
|
243
|
+
| Bad import | `import { foo } from './utils'` when not exported | Critical | 93% |
|
|
244
|
+
| Missing dependency | `import 'react-ui'` not in package.json | Critical | 95% |
|
|
245
|
+
| Wrong method | `user.getFullName()` on class without it | Medium | 70% |
|
|
246
|
+
| Wrong param count | `func(a, b)` when expects 3 params | High | 88% |
|
|
247
|
+
| Dead export | Exported function nothing imports | Medium | 85% |
|
|
248
|
+
| Hardcoded credentials | `API_KEY = 'sk_live_...'` | Critical | 85% |
|
|
249
|
+
| API contract mismatch | Frontend calls endpoint that doesn't exist on backend | Critical | 90% |
|
|
250
|
+
|
|
251
|
+
## How It Works
|
|
252
|
+
|
|
253
|
+
```
|
|
254
|
+
┌─────────────────────────────────────────────────────────────┐
|
|
255
|
+
│ CodeGuardian Pipeline │
|
|
256
|
+
├─────────────────────────────────────────────────────────────┤
|
|
257
|
+
│ 1. AST Parsing │
|
|
258
|
+
│ └─> Uses tree-sitter to parse your codebase │
|
|
259
|
+
│ └─> Extracts all symbols (functions, classes, methods) │
|
|
260
|
+
│ │
|
|
261
|
+
│ 2. Context Building │
|
|
262
|
+
│ └─> Builds searchable index of project symbols │
|
|
263
|
+
│ └─> Caches for fast subsequent validations │
|
|
264
|
+
│ │
|
|
265
|
+
│ 3. Validation │
|
|
266
|
+
│ └─> Compares AI-generated code against index │
|
|
267
|
+
│ └─> Flags anything that doesn't exist │
|
|
268
|
+
│ │
|
|
269
|
+
│ 4. Suggestions │
|
|
270
|
+
│ └─> Uses fuzzy matching to suggest corrections │
|
|
271
|
+
│ └─> Provides confidence scores and reasoning │
|
|
272
|
+
└─────────────────────────────────────────────────────────────┘
|
|
273
|
+
```
|
|
274
|
+
|
|
275
|
+
## All Tools
|
|
276
|
+
|
|
277
|
+
### Primary Tools (start here)
|
|
278
|
+
|
|
279
|
+
| Tool | Description |
|
|
280
|
+
|------|-------------|
|
|
281
|
+
| `start_validation` | Full project scan — runs in background, no timeouts. Use for on-demand audits. |
|
|
282
|
+
| `start_guardian` | Real-time file watcher — validates files as they change. Use for continuous protection. |
|
|
283
|
+
|
|
284
|
+
### Validation Job Tools
|
|
285
|
+
|
|
286
|
+
| Tool | Description |
|
|
287
|
+
|------|-------------|
|
|
288
|
+
| `get_validation_status` | Poll progress of a `start_validation` job |
|
|
289
|
+
| `get_validation_results` | Get final results when a validation job completes |
|
|
290
|
+
|
|
291
|
+
### Guardian Tools
|
|
292
|
+
|
|
293
|
+
| Tool | Description |
|
|
294
|
+
|------|-------------|
|
|
295
|
+
| `get_guardian_alerts` | Get current issues found by active guardians |
|
|
296
|
+
| `get_guardian_status` | Check which guardians are running |
|
|
297
|
+
| `stop_guardian` | Stop a specific guardian or all guardians |
|
|
298
|
+
|
|
299
|
+
### Individual Tools
|
|
300
|
+
|
|
301
|
+
| Tool | Description |
|
|
302
|
+
|------|-------------|
|
|
303
|
+
| `validate_code` | Validate a single code snippet against your project's symbols |
|
|
304
|
+
| `build_context` | Build/rebuild project symbol index (usually auto-called) |
|
|
305
|
+
| `get_dependency_graph` | Show what files depend on what — understand the blast radius of changes |
|
|
306
|
+
|
|
307
|
+
### API Contract Tools
|
|
308
|
+
|
|
309
|
+
| Tool | Description |
|
|
310
|
+
|------|-------------|
|
|
311
|
+
| `validate_api_contracts` | Validate frontend/backend API contract compatibility |
|
|
312
|
+
| `get_api_contract_report` | Generate a detailed API contract validation report |
|
|
313
|
+
|
|
314
|
+
## What It Skips (No False Positives)
|
|
315
|
+
|
|
316
|
+
- [OK] External packages (npm/pip) - not your code
|
|
317
|
+
- [OK] Built-ins (`console.log`, `print`, `Math.random`)
|
|
318
|
+
- [OK] New code being created in the same snippet
|
|
319
|
+
- [OK] Entry points (`index.ts`, `main.py`)
|
|
320
|
+
- [OK] Test files
|
|
321
|
+
|
|
322
|
+
## Limitations
|
|
323
|
+
|
|
324
|
+
- **No Python type inference** — CodeGuardian uses static AST analysis, not a type system. It cannot resolve types through variable assignments, function return values, or chained calls. For example, if `db.query(User)` returns a `Query` object and you call `.filter()` on it, CodeGuardian cannot verify that `.filter()` is a valid method because it doesn't track the return type of `db.query()`. This would require building a mini mypy-style type checker, which is out of scope. Python method calls on dynamically-typed variables are skipped to avoid false positives.
|
|
325
|
+
- Doesn't catch logic errors (that's still on you)
|
|
326
|
+
- Dynamic code (`eval`, reflection) can't be tracked
|
|
327
|
+
- Method calls on untyped objects may be skipped to avoid false positives
|
|
328
|
+
- Very large monorepos (>1000 files) should use `start_validation` with batching
|
|
329
|
+
|
|
330
|
+
## Contributing
|
|
331
|
+
|
|
332
|
+
We welcome contributions! Please see our [Contributing Guide](CONTRIBUTING.md) for details.
|
|
333
|
+
|
|
334
|
+
## License
|
|
335
|
+
|
|
336
|
+
MIT License - see [LICENSE](LICENSE) file for details.
|
|
337
|
+
|
|
338
|
+
---
|
|
339
|
+
|
|
340
|
+
<p align="center">
|
|
341
|
+
<b>Made by developers who are tired of AI hallucinations</b>
|
|
342
|
+
</p>
|
|
343
|
+
|
|
344
|
+
<p align="center">
|
|
345
|
+
<a href="https://github.com/codegoddy/codeguardian_mcp">Star us on GitHub</a> •
|
|
346
|
+
<a href="https://github.com/codegoddy/codeguardian_mcp/issues">Report Issues</a> •
|
|
347
|
+
<a href="https://github.com/codegoddy/codeguardian_mcp/discussions">Discussions</a>
|
|
348
|
+
</p>
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Agent Tools - Start/Stop Agent Mode
|
|
3
|
+
*
|
|
4
|
+
* MCP tools to control the proactive agent mode.
|
|
5
|
+
*
|
|
6
|
+
* @format
|
|
7
|
+
*/
|
|
8
|
+
import { ToolDefinition } from "../types/tools.js";
|
|
9
|
+
export declare const startGuardianTool: ToolDefinition;
|
|
10
|
+
export declare const stopGuardianTool: ToolDefinition;
|
|
11
|
+
export declare const getGuardianAlertsTool: ToolDefinition;
|
|
12
|
+
export declare const getGuardianStatusTool: ToolDefinition;
|
|
13
|
+
export declare const validateApiContractsTool: ToolDefinition;
|
|
14
|
+
export declare const getApiContractReportTool: ToolDefinition;
|
|
15
|
+
/**
|
|
16
|
+
* Stop all in-memory guardian watchers WITHOUT removing persisted configs.
|
|
17
|
+
* Called during server shutdown so guardians auto-restore on next startup.
|
|
18
|
+
*/
|
|
19
|
+
export declare function shutdownGuardiansGracefully(): Promise<void>;
|
|
20
|
+
/**
|
|
21
|
+
* Restore guardians from persisted configs.
|
|
22
|
+
* Called once during server startup to resume any guardians that were
|
|
23
|
+
* running before the server was restarted (e.g., new LLM session).
|
|
24
|
+
*/
|
|
25
|
+
export declare function restoreGuardians(): Promise<number>;
|
|
26
|
+
//# sourceMappingURL=agentTools.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agentTools.d.ts","sourceRoot":"","sources":["../../src/agent/agentTools.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAoInD,eAAO,MAAM,iBAAiB,EAAE,cAqH/B,CAAC;AAEF,eAAO,MAAM,gBAAgB,EAAE,cA4F9B,CAAC;AAEF,eAAO,MAAM,qBAAqB,EAAE,cA6GnC,CAAC;AAEF,eAAO,MAAM,qBAAqB,EAAE,cAiDnC,CAAC;AAMF,eAAO,MAAM,wBAAwB,EAAE,cAqEtC,CAAC;AAEF,eAAO,MAAM,wBAAwB,EAAE,cA2FtC,CAAC;AAMF;;;GAGG;AACH,wBAAsB,2BAA2B,IAAI,OAAO,CAAC,IAAI,CAAC,CAQjE;AAMD;;;;GAIG;AACH,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,MAAM,CAAC,CAiExD"}
|