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
|
@@ -0,0 +1,368 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Validate Code Tool - Unified AST-Based Validator
|
|
3
|
+
*
|
|
4
|
+
* THE UNIFIED AI CODE VALIDATOR
|
|
5
|
+
*
|
|
6
|
+
* Catches THREE types of AI mistakes:
|
|
7
|
+
* 1. HALLUCINATIONS - References to things that don't exist
|
|
8
|
+
* 2. DEPENDENCY HALLUCINATIONS - Imports from packages not in manifest
|
|
9
|
+
* 3. DEAD CODE - Code that nothing uses (AI over-generation)
|
|
10
|
+
*
|
|
11
|
+
* Uses Tree-sitter AST parsing for accurate, production-grade validation.
|
|
12
|
+
*
|
|
13
|
+
* @format
|
|
14
|
+
*/
|
|
15
|
+
import { logger } from "../utils/logger.js";
|
|
16
|
+
import { validationReportStore } from "../resources/validationReportStore.js";
|
|
17
|
+
import { incrementalValidation } from "./incrementalValidation.js";
|
|
18
|
+
import { orchestrateContext, explainContextQuality, } from "../context/contextOrchestrator.js";
|
|
19
|
+
// Import validation modules
|
|
20
|
+
import { extractUsagesAST, extractImportsASTWithOptions, } from "./validation/extractors/index.js";
|
|
21
|
+
import { loadManifestDependencies, loadPythonModuleExports, } from "./validation/manifest.js";
|
|
22
|
+
import { validateManifest, validateSymbols, buildSymbolTable, validateUsagePatterns, getLineFromCode, } from "./validation/validation.js";
|
|
23
|
+
import { extractSymbolsAST, extractTypeReferencesAST } from "./validation/extractors/index.js";
|
|
24
|
+
import { impactAnalyzer } from "../analyzers/impactAnalyzer.js";
|
|
25
|
+
import { detectDeadCode } from "./validation/deadCode.js";
|
|
26
|
+
import { calculateScore, generateRecommendation, } from "./validation/scoring.js";
|
|
27
|
+
import { verifyFindingsAutomatically, getConfirmedFindings, } from "../analyzers/findingVerifier.js";
|
|
28
|
+
import { PROMPT_PATTERNS, VALIDATION_CONSTRAINTS } from "../prompts/library.js";
|
|
29
|
+
// ============================================================================
|
|
30
|
+
// Tool Definition
|
|
31
|
+
// ============================================================================
|
|
32
|
+
export const validateCodeTool = {
|
|
33
|
+
definition: {
|
|
34
|
+
name: "validate_code",
|
|
35
|
+
description: "Validate code for hallucinations, missing dependencies, and dead code in one pass. Smart filtering ensures only relevant project symbols are checked. ALWAYS call after generating code.",
|
|
36
|
+
inputSchema: {
|
|
37
|
+
type: "object",
|
|
38
|
+
properties: {
|
|
39
|
+
projectPath: {
|
|
40
|
+
type: "string",
|
|
41
|
+
description: 'Path to your project (e.g., ".", "src", "backend")',
|
|
42
|
+
},
|
|
43
|
+
newCode: {
|
|
44
|
+
type: "string",
|
|
45
|
+
description: "The AI-generated code to validate (optional - omit for dead code scan only)",
|
|
46
|
+
},
|
|
47
|
+
language: {
|
|
48
|
+
type: "string",
|
|
49
|
+
enum: ["javascript", "typescript", "python", "go"],
|
|
50
|
+
description: "Programming language",
|
|
51
|
+
},
|
|
52
|
+
strictMode: {
|
|
53
|
+
type: "boolean",
|
|
54
|
+
description: "ONLY use true if explicitly requested. When true, flags ALL unresolved symbols including edge cases. Default is false which catches likely hallucinations without excessive noise.",
|
|
55
|
+
default: false,
|
|
56
|
+
},
|
|
57
|
+
useSmartContext: {
|
|
58
|
+
type: "boolean",
|
|
59
|
+
description: "Use smart context selection for faster validation (default: true)",
|
|
60
|
+
},
|
|
61
|
+
sessionId: {
|
|
62
|
+
type: "string",
|
|
63
|
+
description: "Optional session ID for incremental validation (reuses previous results)",
|
|
64
|
+
},
|
|
65
|
+
recentlyEditedFiles: {
|
|
66
|
+
type: "array",
|
|
67
|
+
items: { type: "string" },
|
|
68
|
+
description: "Optional list of files edited in this session to boost relevance",
|
|
69
|
+
},
|
|
70
|
+
},
|
|
71
|
+
required: ["projectPath", "language"],
|
|
72
|
+
},
|
|
73
|
+
},
|
|
74
|
+
async handler(args) {
|
|
75
|
+
const startTime = Date.now();
|
|
76
|
+
const { projectPath, newCode, language, strictMode = false, useSmartContext = true, sessionId, recentlyEditedFiles = [], } = args;
|
|
77
|
+
logger.info(`Validating code against project: ${projectPath} (strictMode: ${strictMode})`);
|
|
78
|
+
try {
|
|
79
|
+
const virtualFilePath = sessionId ? `session:${sessionId}` : "new_code_validation";
|
|
80
|
+
// Step 0: Parse imports first (needed for context orchestration)
|
|
81
|
+
let imports = [];
|
|
82
|
+
let importedSymbols = [];
|
|
83
|
+
if (newCode) {
|
|
84
|
+
imports = extractImportsASTWithOptions(newCode, language, {
|
|
85
|
+
filePath: virtualFilePath,
|
|
86
|
+
cacheKey: virtualFilePath,
|
|
87
|
+
});
|
|
88
|
+
importedSymbols = imports
|
|
89
|
+
.flatMap((imp) => [...imp.names.map((n) => n.local)])
|
|
90
|
+
.filter(Boolean);
|
|
91
|
+
}
|
|
92
|
+
// Step 1: Orchestrate all context features to work together
|
|
93
|
+
const orchestration = await orchestrateContext({
|
|
94
|
+
projectPath,
|
|
95
|
+
language,
|
|
96
|
+
newCode,
|
|
97
|
+
imports: importedSymbols,
|
|
98
|
+
useSmartContext,
|
|
99
|
+
sessionId,
|
|
100
|
+
recentlyEditedFiles,
|
|
101
|
+
});
|
|
102
|
+
const { projectContext, lineageContext, relevantSymbols, contextQuality, } = orchestration;
|
|
103
|
+
logger.info(`Context quality: ${contextQuality} - ${explainContextQuality(contextQuality)}`);
|
|
104
|
+
// Step 2: Check if we can use incremental validation
|
|
105
|
+
let incrementalResult = { canUse: false };
|
|
106
|
+
if (sessionId && newCode && orchestration.useIncremental) {
|
|
107
|
+
incrementalResult = incrementalValidation.canUseIncremental(sessionId, newCode);
|
|
108
|
+
if (incrementalResult.canUse) {
|
|
109
|
+
logger.info(`Using incremental validation (session: ${sessionId})`);
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
// Step 3: Load manifest dependencies (package.json / requirements.txt)
|
|
113
|
+
const manifest = await loadManifestDependencies(projectPath, language);
|
|
114
|
+
// Step 4: Load Python __all__ exports for module validation
|
|
115
|
+
let pythonExports = new Map();
|
|
116
|
+
if (language === "python") {
|
|
117
|
+
pythonExports = await loadPythonModuleExports(projectPath);
|
|
118
|
+
}
|
|
119
|
+
// Step 5: Build symbol table (filtered by smart context if available)
|
|
120
|
+
const symbolTable = buildSymbolTable(projectContext, relevantSymbols.length > 0 ? relevantSymbols : undefined);
|
|
121
|
+
// Step 5: Run comprehensive validation if new code provided
|
|
122
|
+
const issues = [];
|
|
123
|
+
let usedSymbols = [];
|
|
124
|
+
if (newCode) {
|
|
125
|
+
// Tier 0: Check manifest dependencies
|
|
126
|
+
const manifestIssues = await validateManifest(imports, manifest, newCode, language);
|
|
127
|
+
issues.push(...manifestIssues);
|
|
128
|
+
// Tier 1: Validate symbols (hallucinations)
|
|
129
|
+
// Don't skip imported symbols in extraction - we'll filter them intelligently in validation
|
|
130
|
+
usedSymbols = extractUsagesAST(newCode, language, [], {
|
|
131
|
+
filePath: virtualFilePath,
|
|
132
|
+
cacheKey: virtualFilePath,
|
|
133
|
+
});
|
|
134
|
+
const missingPackages = new Set();
|
|
135
|
+
for (const issue of manifestIssues) {
|
|
136
|
+
if (issue.type === "dependencyHallucination") {
|
|
137
|
+
const match = issue.message.match(/Package '([^']+)'/);
|
|
138
|
+
if (match)
|
|
139
|
+
missingPackages.add(match[1]);
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
// Extract type references for unused import detection
|
|
143
|
+
// This is essential for TypeScript where imports might only be used as types
|
|
144
|
+
const typeReferences = extractTypeReferencesAST(newCode, language, {
|
|
145
|
+
filePath: virtualFilePath,
|
|
146
|
+
cacheKey: virtualFilePath,
|
|
147
|
+
});
|
|
148
|
+
const symbolIssues = validateSymbols(usedSymbols, symbolTable, newCode, language, strictMode, imports, pythonExports, projectContext,
|
|
149
|
+
// Don't pass a fake file path - let validation fall back to global symbol lookup
|
|
150
|
+
// for relative imports.
|
|
151
|
+
"", missingPackages, typeReferences);
|
|
152
|
+
issues.push(...symbolIssues);
|
|
153
|
+
// Secret #5: Usage Pattern Consistency (Rituals)
|
|
154
|
+
const patternIssues = validateUsagePatterns(usedSymbols, projectContext);
|
|
155
|
+
issues.push(...patternIssues);
|
|
156
|
+
// Secret #6: Change Impact Analysis (Blast Radius) - ONLY for changes
|
|
157
|
+
const symbolsInNewCode = extractSymbolsAST(newCode, "new_code_validation", language);
|
|
158
|
+
for (const sym of symbolsInNewCode) {
|
|
159
|
+
// Skip non-exported symbols and generic short names to reduce noise
|
|
160
|
+
if (!sym.isExported || sym.name.length <= 2) {
|
|
161
|
+
continue;
|
|
162
|
+
}
|
|
163
|
+
if (projectContext.symbolIndex.has(sym.name)) {
|
|
164
|
+
const blast = impactAnalyzer.traceBlastRadius(sym.name, projectContext.symbolGraph, 2);
|
|
165
|
+
if (blast.severity === "high") {
|
|
166
|
+
issues.push({
|
|
167
|
+
type: "architecturalDeviation",
|
|
168
|
+
severity: "high",
|
|
169
|
+
file: "new_code_validation", // Virtual file for inline code validation
|
|
170
|
+
message: `Modifying '${sym.name}' has a HIGH project-wide impact affecting ${blast.affectedFiles.length} files.`,
|
|
171
|
+
line: sym.line,
|
|
172
|
+
code: getLineFromCode(newCode, sym.line),
|
|
173
|
+
suggestion: `Run 'analyze_change_impact' for '${sym.name}' to see the full list of affected symbols.`,
|
|
174
|
+
confidence: 85,
|
|
175
|
+
reasoning: `Found ${blast.impactedSymbols.length} downstream consumers in the symbol graph.`,
|
|
176
|
+
});
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
// Step 6: ALWAYS check for dead code (comprehensive validation)
|
|
182
|
+
// Only run when validating large snippets (heuristic) or when no code is provided.
|
|
183
|
+
// This keeps validate_code fast for small snippets while still supporting
|
|
184
|
+
// full dead-code scans.
|
|
185
|
+
const shouldCheckDeadCode = !newCode || newCode.split("\n").length > 50;
|
|
186
|
+
let deadCodeIssues = [];
|
|
187
|
+
if (shouldCheckDeadCode) {
|
|
188
|
+
const DEAD_CODE_TIMEOUT = 30000; // 30 seconds max
|
|
189
|
+
const deadCodePromise = detectDeadCode(projectContext, newCode);
|
|
190
|
+
let timeoutId;
|
|
191
|
+
const timeoutPromise = new Promise((resolve) => {
|
|
192
|
+
timeoutId = setTimeout(() => {
|
|
193
|
+
logger.warn(`Dead code detection timed out after ${DEAD_CODE_TIMEOUT}ms`);
|
|
194
|
+
resolve([]);
|
|
195
|
+
}, DEAD_CODE_TIMEOUT);
|
|
196
|
+
});
|
|
197
|
+
try {
|
|
198
|
+
deadCodeIssues = await Promise.race([deadCodePromise, timeoutPromise]);
|
|
199
|
+
}
|
|
200
|
+
finally {
|
|
201
|
+
if (timeoutId)
|
|
202
|
+
clearTimeout(timeoutId);
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
// Step 7: Automated Verification (eliminates false positives)
|
|
206
|
+
logger.info(`Verifying ${issues.length} findings to eliminate false positives...`);
|
|
207
|
+
const verificationResult = await verifyFindingsAutomatically(issues, deadCodeIssues, projectContext, projectPath, language);
|
|
208
|
+
// Get filtered findings (only confirmed, no false positives)
|
|
209
|
+
const { hallucinations: confirmedIssues, deadCode: confirmedDeadCode } = getConfirmedFindings(verificationResult);
|
|
210
|
+
logger.info(`Verification complete: ${confirmedIssues.length} confirmed, ${verificationResult.stats.falsePositiveCount} false positives filtered`);
|
|
211
|
+
// Step 8: Calculate score and recommendation using CONFIRMED issues only
|
|
212
|
+
const score = calculateScore(confirmedIssues, confirmedDeadCode);
|
|
213
|
+
const recommendation = generateRecommendation(score, confirmedIssues, confirmedDeadCode);
|
|
214
|
+
const elapsed = Date.now() - startTime;
|
|
215
|
+
// Save snapshot for incremental validation (store ALL issues for analysis)
|
|
216
|
+
if (sessionId && newCode) {
|
|
217
|
+
incrementalValidation.saveSnapshot(sessionId, newCode, issues, // Store original issues for comparison
|
|
218
|
+
deadCodeIssues);
|
|
219
|
+
}
|
|
220
|
+
// Use CONFIRMED issues for the response (no false positives)
|
|
221
|
+
const totalIssues = confirmedIssues.length + confirmedDeadCode.length;
|
|
222
|
+
const isLargeResult = totalIssues > 50;
|
|
223
|
+
// Generate a unique ID for this validation run to store it in resources
|
|
224
|
+
const validationId = `sync_${Date.now()}_${Math.random().toString(36).substring(2, 7)}`;
|
|
225
|
+
// Store CONFIRMED issues in report store (wait for disk write to complete)
|
|
226
|
+
await validationReportStore.store(validationId, projectPath, {
|
|
227
|
+
summary: generateStructuredExplanation(confirmedIssues, confirmedDeadCode),
|
|
228
|
+
stats: {
|
|
229
|
+
filesScanned: projectContext.totalFiles,
|
|
230
|
+
symbolsInProject: projectContext.symbolIndex.size,
|
|
231
|
+
hallucinationsFound: confirmedIssues.length,
|
|
232
|
+
deadCodeFound: confirmedDeadCode.length,
|
|
233
|
+
analysisTime: `${elapsed}ms`,
|
|
234
|
+
verification: {
|
|
235
|
+
confirmed: verificationResult.stats.confirmedCount,
|
|
236
|
+
falsePositivesFiltered: verificationResult.stats.falsePositiveCount,
|
|
237
|
+
uncertain: verificationResult.stats.uncertainCount,
|
|
238
|
+
},
|
|
239
|
+
},
|
|
240
|
+
hallucinations: confirmedIssues,
|
|
241
|
+
deadCode: confirmedDeadCode,
|
|
242
|
+
score,
|
|
243
|
+
recommendation,
|
|
244
|
+
});
|
|
245
|
+
const reportUri = validationReportStore.getReportUri(validationId);
|
|
246
|
+
// If the result is large, return a compact response with the URI
|
|
247
|
+
if (isLargeResult) {
|
|
248
|
+
return formatResponse({
|
|
249
|
+
success: true,
|
|
250
|
+
validated: true,
|
|
251
|
+
score,
|
|
252
|
+
hallucinationDetected: confirmedIssues.length > 0,
|
|
253
|
+
deadCodeDetected: confirmedDeadCode.length > 0,
|
|
254
|
+
reportUri,
|
|
255
|
+
message: `Validation found ${totalIssues} confirmed issues (${verificationResult.stats.falsePositiveCount} false positives automatically filtered). Results are stored as an MCP Resource.`,
|
|
256
|
+
recommendation,
|
|
257
|
+
verification: {
|
|
258
|
+
confirmedCount: verificationResult.stats.confirmedCount,
|
|
259
|
+
falsePositiveCount: verificationResult.stats.falsePositiveCount,
|
|
260
|
+
uncertainCount: verificationResult.stats.uncertainCount,
|
|
261
|
+
},
|
|
262
|
+
stats: {
|
|
263
|
+
hallucinationsFound: confirmedIssues.length,
|
|
264
|
+
deadCodeFound: confirmedDeadCode.length,
|
|
265
|
+
analysisTime: `${elapsed}ms`,
|
|
266
|
+
},
|
|
267
|
+
resourceAccess: {
|
|
268
|
+
summaryUri: reportUri,
|
|
269
|
+
hallucinationsUri: `${reportUri}/hallucinations/0`,
|
|
270
|
+
deadCodeUri: `${reportUri}/dead-code/0`,
|
|
271
|
+
bySeverityUri: `${reportUri}/by-severity/critical`,
|
|
272
|
+
byTypeUri: `${reportUri}/by-type/dependencyHallucination`,
|
|
273
|
+
tip: "Use 'read_resource' to fetch chunks of issues from the URIs above. You can also filter by file: .../by-file/{filePath}",
|
|
274
|
+
},
|
|
275
|
+
});
|
|
276
|
+
}
|
|
277
|
+
// Small results can still be returned inline, but we also include the URI
|
|
278
|
+
return formatResponse({
|
|
279
|
+
success: true,
|
|
280
|
+
validated: true,
|
|
281
|
+
score,
|
|
282
|
+
hallucinationDetected: confirmedIssues.length > 0,
|
|
283
|
+
deadCodeDetected: confirmedDeadCode.length > 0,
|
|
284
|
+
// Return ONLY confirmed findings (no false positives)
|
|
285
|
+
hallucinations: confirmedIssues,
|
|
286
|
+
deadCode: confirmedDeadCode,
|
|
287
|
+
reportUri,
|
|
288
|
+
recommendation,
|
|
289
|
+
structuredExplanation: generateStructuredExplanation(confirmedIssues, confirmedDeadCode),
|
|
290
|
+
/**
|
|
291
|
+
* Automated verification results - shows confidence that findings are true positives
|
|
292
|
+
*/
|
|
293
|
+
verification: {
|
|
294
|
+
confirmedCount: verificationResult.stats.confirmedCount,
|
|
295
|
+
falsePositiveCount: verificationResult.stats.falsePositiveCount,
|
|
296
|
+
uncertainCount: verificationResult.stats.uncertainCount,
|
|
297
|
+
/** Detailed breakdown of verification for each finding */
|
|
298
|
+
details: verificationResult.confirmed.map(v => ({
|
|
299
|
+
type: v.original.type,
|
|
300
|
+
message: v.original.message,
|
|
301
|
+
confidence: v.confidence,
|
|
302
|
+
verificationMethod: v.verificationMethod,
|
|
303
|
+
reasons: v.reasons,
|
|
304
|
+
})),
|
|
305
|
+
},
|
|
306
|
+
stats: {
|
|
307
|
+
filesScanned: projectContext.totalFiles,
|
|
308
|
+
symbolsInProject: projectContext.symbolIndex.size,
|
|
309
|
+
symbolsValidatedAgainst: symbolTable.length,
|
|
310
|
+
relevanceFiltering: relevantSymbols.length > 0 ? "enabled" : "disabled",
|
|
311
|
+
contextQuality,
|
|
312
|
+
symbolsChecked: usedSymbols.length,
|
|
313
|
+
importsChecked: imports.length,
|
|
314
|
+
manifestPackages: manifest.all.size,
|
|
315
|
+
hallucinationsFound: issues.length,
|
|
316
|
+
deadCodeFound: deadCodeIssues.length,
|
|
317
|
+
analysisTime: `${elapsed}ms`,
|
|
318
|
+
incrementalValidation: incrementalResult.canUse ? "enabled" : "disabled",
|
|
319
|
+
},
|
|
320
|
+
});
|
|
321
|
+
}
|
|
322
|
+
catch (err) {
|
|
323
|
+
logger.error("Validation error:", err);
|
|
324
|
+
return formatResponse({
|
|
325
|
+
success: false,
|
|
326
|
+
error: err instanceof Error ? err.message : String(err),
|
|
327
|
+
});
|
|
328
|
+
}
|
|
329
|
+
},
|
|
330
|
+
};
|
|
331
|
+
// ============================================================================
|
|
332
|
+
// Response Formatting
|
|
333
|
+
// ============================================================================
|
|
334
|
+
/**
|
|
335
|
+
* Generate a structured explanation for the issues using prompt library patterns
|
|
336
|
+
*/
|
|
337
|
+
function generateStructuredExplanation(issues, deadCode) {
|
|
338
|
+
const total = issues.length + deadCode.length;
|
|
339
|
+
if (total === 0)
|
|
340
|
+
return "Code is clean. No issues detected.";
|
|
341
|
+
const task = `Analyze ${total} issues found in the code and provide actionable feedback.`;
|
|
342
|
+
const roleMsg = PROMPT_PATTERNS.role("Code Quality Auditor", task);
|
|
343
|
+
const constrainedMsg = PROMPT_PATTERNS.withConstraints(roleMsg, VALIDATION_CONSTRAINTS);
|
|
344
|
+
const steps = [
|
|
345
|
+
"Verify symbols against the project's current symbol table",
|
|
346
|
+
"Check for missing package dependencies in manifest files",
|
|
347
|
+
"Identify unused exports or dead code blocks",
|
|
348
|
+
"Evaluate architectural impact on the wider project",
|
|
349
|
+
];
|
|
350
|
+
const reasoningMsg = PROMPT_PATTERNS.stepByStep(constrainedMsg, steps);
|
|
351
|
+
const issueDetails = [...issues, ...deadCode]
|
|
352
|
+
.map((i, idx) => {
|
|
353
|
+
let detail = `${idx + 1}. [${i.severity.toUpperCase()}] ${i.type}: ${i.message}`;
|
|
354
|
+
if ("line" in i && i.line)
|
|
355
|
+
detail += ` (Line ${i.line})`;
|
|
356
|
+
if (i.suggestion)
|
|
357
|
+
detail += `\n Suggestion: ${i.suggestion}`;
|
|
358
|
+
return detail;
|
|
359
|
+
})
|
|
360
|
+
.join("\n");
|
|
361
|
+
return `${reasoningMsg}\n\nISSUE BREAKDOWN:\n${issueDetails}`;
|
|
362
|
+
}
|
|
363
|
+
function formatResponse(data) {
|
|
364
|
+
return {
|
|
365
|
+
content: [{ type: "text", text: JSON.stringify(data, null, 2) }],
|
|
366
|
+
};
|
|
367
|
+
}
|
|
368
|
+
//# sourceMappingURL=validateCode.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validateCode.js","sourceRoot":"","sources":["../../src/tools/validateCode.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validateCodeLite.d.ts","sourceRoot":"","sources":["../../src/tools/validateCodeLite.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validateCodeLite.js","sourceRoot":"","sources":["../../src/tools/validateCodeLite.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Built-in Symbol Sets Module
|
|
3
|
+
*
|
|
4
|
+
* This module centralizes all built-in symbol sets for different programming languages.
|
|
5
|
+
* It provides fast lookup functions for checking if a symbol is a language built-in,
|
|
6
|
+
* which is essential for validation to avoid false positives when detecting hallucinations.
|
|
7
|
+
*
|
|
8
|
+
* Supported Languages:
|
|
9
|
+
* - Python: Built-in functions, types, exceptions, and standard library modules
|
|
10
|
+
* - JavaScript/TypeScript: Built-in globals, constructors, DOM APIs, and utility types
|
|
11
|
+
*
|
|
12
|
+
* @format
|
|
13
|
+
*/
|
|
14
|
+
/**
|
|
15
|
+
* Python built-in functions, types, and constants
|
|
16
|
+
* Based on Python 3.11+ builtins
|
|
17
|
+
*/
|
|
18
|
+
export declare const PYTHON_BUILTINS: Set<string>;
|
|
19
|
+
/**
|
|
20
|
+
* Python built-in types for type hint checking
|
|
21
|
+
*/
|
|
22
|
+
export declare const PYTHON_BUILTIN_TYPES: Set<string>;
|
|
23
|
+
/**
|
|
24
|
+
* JavaScript/TypeScript built-in globals and constructors
|
|
25
|
+
* Based on ECMAScript 2023 and common Node.js/Browser APIs
|
|
26
|
+
*/
|
|
27
|
+
export declare const JS_BUILTINS: Set<string>;
|
|
28
|
+
/**
|
|
29
|
+
* Standard HTML tags to avoid false positives in JSX
|
|
30
|
+
*/
|
|
31
|
+
export declare const HTML_TAGS: Set<string>;
|
|
32
|
+
/**
|
|
33
|
+
* Standard SVG tags to avoid false positives in JSX
|
|
34
|
+
*/
|
|
35
|
+
export declare const SVG_TAGS: Set<string>;
|
|
36
|
+
/**
|
|
37
|
+
* TypeScript built-in types (for type reference checking)
|
|
38
|
+
*/
|
|
39
|
+
export declare const TS_BUILTIN_TYPES: Set<string>;
|
|
40
|
+
/**
|
|
41
|
+
* Get Node.js built-in modules.
|
|
42
|
+
*
|
|
43
|
+
* @returns A Set of Node.js built-In module names
|
|
44
|
+
*/
|
|
45
|
+
export declare function getNodeBuiltInModules(): Set<string>;
|
|
46
|
+
/**
|
|
47
|
+
* Node.js built-in modules
|
|
48
|
+
* Based on Node.js 20+ documentation
|
|
49
|
+
*/
|
|
50
|
+
export declare const NODE_BUILTIN_MODULES: Set<string>;
|
|
51
|
+
/**
|
|
52
|
+
* Check if a name is a Python built-in function, type, or constant.
|
|
53
|
+
* @param name - The symbol name to check
|
|
54
|
+
* @returns true if the name is a Python built-in
|
|
55
|
+
*/
|
|
56
|
+
export declare function isPythonBuiltin(name: string): boolean;
|
|
57
|
+
/**
|
|
58
|
+
* Common method names from popular libraries that should not be flagged as hallucinations.
|
|
59
|
+
* These are methods that are commonly returned by library functions but not tracked in our symbol table.
|
|
60
|
+
*/
|
|
61
|
+
export declare const COMMON_LIBRARY_METHODS: Set<string>;
|
|
62
|
+
/**
|
|
63
|
+
* Common Python methods to whitelist globally to reduce noise
|
|
64
|
+
*/
|
|
65
|
+
export declare const PYTHON_COMMON_METHODS: Set<string>;
|
|
66
|
+
/**
|
|
67
|
+
* Check if a name is a JavaScript built-in global or constructor.
|
|
68
|
+
* @param name - The symbol name to check
|
|
69
|
+
* @returns true if the name is a JavaScript built-in
|
|
70
|
+
*/
|
|
71
|
+
export declare function isJSBuiltin(name: string): boolean;
|
|
72
|
+
/**
|
|
73
|
+
* Check if a name is a Python built-in type (for type hint checking).
|
|
74
|
+
* @param name - The type name to check
|
|
75
|
+
* @returns true if the name is a Python built-in type
|
|
76
|
+
*/
|
|
77
|
+
export declare function isPythonBuiltinType(name: string): boolean;
|
|
78
|
+
/**
|
|
79
|
+
* Check if a name is a TypeScript built-in type.
|
|
80
|
+
* @param name - The type name to check
|
|
81
|
+
* @returns true if the name is a TypeScript built-in type
|
|
82
|
+
*/
|
|
83
|
+
export declare function isTSBuiltinType(name: string): boolean;
|
|
84
|
+
/**
|
|
85
|
+
* Get Python standard library modules.
|
|
86
|
+
* This is a comprehensive list based on Python 3.11+ documentation.
|
|
87
|
+
* Organized by category for maintainability.
|
|
88
|
+
*
|
|
89
|
+
* @returns A Set of Python standard library module names
|
|
90
|
+
*/
|
|
91
|
+
export declare function getPythonStdLib(): Set<string>;
|
|
92
|
+
//# sourceMappingURL=builtins.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"builtins.d.ts","sourceRoot":"","sources":["../../../src/tools/validation/builtins.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAIH;;;GAGG;AACH,eAAO,MAAM,eAAe,aA+S1B,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,oBAAoB,aAmG/B,CAAC;AAIH;;;GAGG;AACH,eAAO,MAAM,WAAW,aAkRtB,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,SAAS,aA4FpB,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,QAAQ,aA6CnB,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,gBAAgB,aAslB3B,CAAC;AAEH;;;;GAIG;AACH,wBAAgB,qBAAqB,IAAI,GAAG,CAAC,MAAM,CAAC,CAEnD;AAED;;;GAGG;AACH,eAAO,MAAM,oBAAoB,aAkD/B,CAAC;AAIH;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAMrD;AAED;;;GAGG;AACH,eAAO,MAAM,sBAAsB,aAgUjC,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,qBAAqB,aAyFhC,CAAC;AAEH;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAOjD;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEzD;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAErD;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,IAAI,GAAG,CAAC,MAAM,CAAC,CA4M7C"}
|