mcp-adr-analysis-server 2.1.19 → 2.1.22
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/README.md +1 -0
- package/dist/.tsbuildinfo +1 -1
- package/dist/src/config/ai-config.d.ts +54 -6
- package/dist/src/config/ai-config.d.ts.map +1 -1
- package/dist/src/config/ai-config.js +69 -6
- package/dist/src/config/ai-config.js.map +1 -1
- package/dist/src/config/ape-descriptions.d.ts +77 -0
- package/dist/src/config/ape-descriptions.d.ts.map +1 -0
- package/dist/src/config/ape-descriptions.js +177 -0
- package/dist/src/config/ape-descriptions.js.map +1 -0
- package/dist/src/index.d.ts +40 -0
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +564 -8
- package/dist/src/index.js.map +1 -1
- package/dist/src/prompts/adr-suggestion-prompts.d.ts +5 -0
- package/dist/src/prompts/adr-suggestion-prompts.d.ts.map +1 -1
- package/dist/src/prompts/adr-suggestion-prompts.js +22 -1
- package/dist/src/prompts/adr-suggestion-prompts.js.map +1 -1
- package/dist/src/prompts/prompt-catalog.d.ts +95 -0
- package/dist/src/prompts/prompt-catalog.d.ts.map +1 -0
- package/dist/src/prompts/prompt-catalog.js +300 -0
- package/dist/src/prompts/prompt-catalog.js.map +1 -0
- package/dist/src/resources/adrs-discovered-resource.d.ts +124 -0
- package/dist/src/resources/adrs-discovered-resource.d.ts.map +1 -0
- package/dist/src/resources/adrs-discovered-resource.js +174 -0
- package/dist/src/resources/adrs-discovered-resource.js.map +1 -0
- package/dist/src/resources/adrs-review-resource.d.ts +82 -0
- package/dist/src/resources/adrs-review-resource.d.ts.map +1 -0
- package/dist/src/resources/adrs-review-resource.js +160 -0
- package/dist/src/resources/adrs-review-resource.js.map +1 -0
- package/dist/src/resources/architectural-context-resource.d.ts +95 -0
- package/dist/src/resources/architectural-context-resource.d.ts.map +1 -0
- package/dist/src/resources/architectural-context-resource.js +428 -0
- package/dist/src/resources/architectural-context-resource.js.map +1 -0
- package/dist/src/resources/conversation-snapshot-resource.d.ts +92 -0
- package/dist/src/resources/conversation-snapshot-resource.d.ts.map +1 -0
- package/dist/src/resources/conversation-snapshot-resource.js +122 -0
- package/dist/src/resources/conversation-snapshot-resource.js.map +1 -0
- package/dist/src/resources/deployment-status-resource.js +1 -1
- package/dist/src/resources/deployment-status-resource.js.map +1 -1
- package/dist/src/resources/environment-analysis-resource.js +1 -1
- package/dist/src/resources/environment-analysis-resource.js.map +1 -1
- package/dist/src/resources/knowledge-graph-resource.d.ts +129 -0
- package/dist/src/resources/knowledge-graph-resource.d.ts.map +1 -0
- package/dist/src/resources/knowledge-graph-resource.js +217 -0
- package/dist/src/resources/knowledge-graph-resource.js.map +1 -0
- package/dist/src/resources/memory-expand-resource.d.ts +90 -0
- package/dist/src/resources/memory-expand-resource.d.ts.map +1 -0
- package/dist/src/resources/memory-expand-resource.js +176 -0
- package/dist/src/resources/memory-expand-resource.js.map +1 -0
- package/dist/src/resources/memory-stats-resource.d.ts +77 -0
- package/dist/src/resources/memory-stats-resource.d.ts.map +1 -0
- package/dist/src/resources/memory-stats-resource.js +108 -0
- package/dist/src/resources/memory-stats-resource.js.map +1 -0
- package/dist/src/resources/project-metrics-resource.js +1 -1
- package/dist/src/resources/project-metrics-resource.js.map +1 -1
- package/dist/src/resources/resource-cache.d.ts.map +1 -1
- package/dist/src/resources/resource-cache.js +2 -1
- package/dist/src/resources/resource-cache.js.map +1 -1
- package/dist/src/resources/server-context-resource.d.ts +69 -0
- package/dist/src/resources/server-context-resource.d.ts.map +1 -0
- package/dist/src/resources/server-context-resource.js +104 -0
- package/dist/src/resources/server-context-resource.js.map +1 -0
- package/dist/src/resources/tool-catalog-resource.d.ts +122 -0
- package/dist/src/resources/tool-catalog-resource.d.ts.map +1 -0
- package/dist/src/resources/tool-catalog-resource.js +167 -0
- package/dist/src/resources/tool-catalog-resource.js.map +1 -0
- package/dist/src/tools/adr-bootstrap-validation-tool.d.ts.map +1 -1
- package/dist/src/tools/adr-bootstrap-validation-tool.js +7 -6
- package/dist/src/tools/adr-bootstrap-validation-tool.js.map +1 -1
- package/dist/src/tools/adr-suggestion-tool.d.ts +5 -0
- package/dist/src/tools/adr-suggestion-tool.d.ts.map +1 -1
- package/dist/src/tools/adr-suggestion-tool.js +40 -71
- package/dist/src/tools/adr-suggestion-tool.js.map +1 -1
- package/dist/src/tools/bootstrap-validation-loop-tool.d.ts +23 -1
- package/dist/src/tools/bootstrap-validation-loop-tool.d.ts.map +1 -1
- package/dist/src/tools/bootstrap-validation-loop-tool.js +15 -5
- package/dist/src/tools/bootstrap-validation-loop-tool.js.map +1 -1
- package/dist/src/tools/ce-mcp-tools.d.ts +291 -0
- package/dist/src/tools/ce-mcp-tools.d.ts.map +1 -0
- package/dist/src/tools/ce-mcp-tools.js +1188 -0
- package/dist/src/tools/ce-mcp-tools.js.map +1 -0
- package/dist/src/tools/content-masking-tool.d.ts +11 -0
- package/dist/src/tools/content-masking-tool.d.ts.map +1 -1
- package/dist/src/tools/content-masking-tool.js +13 -6
- package/dist/src/tools/content-masking-tool.js.map +1 -1
- package/dist/src/tools/deployment-readiness-tool.d.ts +11 -0
- package/dist/src/tools/deployment-readiness-tool.d.ts.map +1 -1
- package/dist/src/tools/deployment-readiness-tool.js +10 -4
- package/dist/src/tools/deployment-readiness-tool.js.map +1 -1
- package/dist/src/tools/environment-analysis-tool.d.ts +96 -1
- package/dist/src/tools/environment-analysis-tool.d.ts.map +1 -1
- package/dist/src/tools/environment-analysis-tool.js +38 -46
- package/dist/src/tools/environment-analysis-tool.js.map +1 -1
- package/dist/src/tools/research-question-tool.d.ts.map +1 -1
- package/dist/src/tools/research-question-tool.js +3 -2
- package/dist/src/tools/research-question-tool.js.map +1 -1
- package/dist/src/tools/review-existing-adrs-tool.d.ts +5 -0
- package/dist/src/tools/review-existing-adrs-tool.d.ts.map +1 -1
- package/dist/src/tools/review-existing-adrs-tool.js +123 -42
- package/dist/src/tools/review-existing-adrs-tool.js.map +1 -1
- package/dist/src/tools/rule-generation-tool.d.ts.map +1 -1
- package/dist/src/tools/rule-generation-tool.js +3 -5
- package/dist/src/tools/rule-generation-tool.js.map +1 -1
- package/dist/src/tools/search-codebase-tool.d.ts +148 -0
- package/dist/src/tools/search-codebase-tool.d.ts.map +1 -0
- package/dist/src/tools/search-codebase-tool.js +406 -0
- package/dist/src/tools/search-codebase-tool.js.map +1 -0
- package/dist/src/tools/smart-git-push-tool-v2.js +1 -1
- package/dist/src/tools/smart-git-push-tool-v2.js.map +1 -1
- package/dist/src/tools/tool-catalog.d.ts +134 -0
- package/dist/src/tools/tool-catalog.d.ts.map +1 -0
- package/dist/src/tools/tool-catalog.js +1431 -0
- package/dist/src/tools/tool-catalog.js.map +1 -0
- package/dist/src/tools/tool-chain-orchestrator.d.ts +11 -2
- package/dist/src/tools/tool-chain-orchestrator.d.ts.map +1 -1
- package/dist/src/tools/tool-chain-orchestrator.js +11 -2
- package/dist/src/tools/tool-chain-orchestrator.js.map +1 -1
- package/dist/src/tools/tool-dispatcher.d.ts +98 -0
- package/dist/src/tools/tool-dispatcher.d.ts.map +1 -0
- package/dist/src/tools/tool-dispatcher.js +225 -0
- package/dist/src/tools/tool-dispatcher.js.map +1 -0
- package/dist/src/tools/tree-sitter-code-tools.d.ts +184 -0
- package/dist/src/tools/tree-sitter-code-tools.d.ts.map +1 -0
- package/dist/src/tools/tree-sitter-code-tools.js +642 -0
- package/dist/src/tools/tree-sitter-code-tools.js.map +1 -0
- package/dist/src/tools/troubleshoot-guided-workflow-tool.d.ts +22 -0
- package/dist/src/tools/troubleshoot-guided-workflow-tool.d.ts.map +1 -1
- package/dist/src/tools/troubleshoot-guided-workflow-tool.js +20 -3
- package/dist/src/tools/troubleshoot-guided-workflow-tool.js.map +1 -1
- package/dist/src/tools/update-knowledge-tool.d.ts +89 -0
- package/dist/src/tools/update-knowledge-tool.d.ts.map +1 -0
- package/dist/src/tools/update-knowledge-tool.js +222 -0
- package/dist/src/tools/update-knowledge-tool.js.map +1 -0
- package/dist/src/types/ce-mcp.d.ts +248 -0
- package/dist/src/types/ce-mcp.d.ts.map +1 -0
- package/dist/src/types/ce-mcp.js +27 -0
- package/dist/src/types/ce-mcp.js.map +1 -0
- package/dist/src/utils/adr-context-detector.js +1 -1
- package/dist/src/utils/adr-context-detector.js.map +1 -1
- package/dist/src/utils/adr-planning-task-integration.d.ts +260 -0
- package/dist/src/utils/adr-planning-task-integration.d.ts.map +1 -0
- package/dist/src/utils/adr-planning-task-integration.js +466 -0
- package/dist/src/utils/adr-planning-task-integration.js.map +1 -0
- package/dist/src/utils/adr-timeline-extractor.d.ts.map +1 -1
- package/dist/src/utils/adr-timeline-extractor.js +3 -2
- package/dist/src/utils/adr-timeline-extractor.js.map +1 -1
- package/dist/src/utils/ai-executor.d.ts +10 -0
- package/dist/src/utils/ai-executor.d.ts.map +1 -1
- package/dist/src/utils/ai-executor.js +14 -3
- package/dist/src/utils/ai-executor.js.map +1 -1
- package/dist/src/utils/automatic-prompt-engineering.d.ts +5 -0
- package/dist/src/utils/automatic-prompt-engineering.d.ts.map +1 -1
- package/dist/src/utils/automatic-prompt-engineering.js +10 -90
- package/dist/src/utils/automatic-prompt-engineering.js.map +1 -1
- package/dist/src/utils/bootstrap-task-integration.d.ts +214 -0
- package/dist/src/utils/bootstrap-task-integration.d.ts.map +1 -0
- package/dist/src/utils/bootstrap-task-integration.js +365 -0
- package/dist/src/utils/bootstrap-task-integration.js.map +1 -0
- package/dist/src/utils/dag-executor.d.ts.map +1 -1
- package/dist/src/utils/dag-executor.js +48 -15
- package/dist/src/utils/dag-executor.js.map +1 -1
- package/dist/src/utils/deployment-task-integration.d.ts +260 -0
- package/dist/src/utils/deployment-task-integration.d.ts.map +1 -0
- package/dist/src/utils/deployment-task-integration.js +393 -0
- package/dist/src/utils/deployment-task-integration.js.map +1 -0
- package/dist/src/utils/dynamic-deployment-intelligence.js +1 -1
- package/dist/src/utils/dynamic-deployment-intelligence.js.map +1 -1
- package/dist/src/utils/enhanced-logging.d.ts +3 -0
- package/dist/src/utils/enhanced-logging.d.ts.map +1 -1
- package/dist/src/utils/enhanced-logging.js +9 -30
- package/dist/src/utils/enhanced-logging.js.map +1 -1
- package/dist/src/utils/environment-capability-registry.js +1 -1
- package/dist/src/utils/environment-capability-registry.js.map +1 -1
- package/dist/src/utils/file-system.d.ts.map +1 -1
- package/dist/src/utils/file-system.js +33 -3
- package/dist/src/utils/file-system.js.map +1 -1
- package/dist/src/utils/gitleaks-detector.js +1 -1
- package/dist/src/utils/gitleaks-detector.js.map +1 -1
- package/dist/src/utils/knowledge-graph-manager.d.ts +13 -0
- package/dist/src/utils/knowledge-graph-manager.d.ts.map +1 -1
- package/dist/src/utils/knowledge-graph-manager.js +13 -0
- package/dist/src/utils/knowledge-graph-manager.js.map +1 -1
- package/dist/src/utils/prompt-execution.d.ts +29 -1
- package/dist/src/utils/prompt-execution.d.ts.map +1 -1
- package/dist/src/utils/prompt-execution.js +29 -1
- package/dist/src/utils/prompt-execution.js.map +1 -1
- package/dist/src/utils/research-orchestrator.d.ts +87 -1
- package/dist/src/utils/research-orchestrator.d.ts.map +1 -1
- package/dist/src/utils/research-orchestrator.js +121 -17
- package/dist/src/utils/research-orchestrator.js.map +1 -1
- package/dist/src/utils/research-task-integration.d.ts +297 -0
- package/dist/src/utils/research-task-integration.d.ts.map +1 -0
- package/dist/src/utils/research-task-integration.js +449 -0
- package/dist/src/utils/research-task-integration.js.map +1 -0
- package/dist/src/utils/ripgrep-wrapper.d.ts.map +1 -1
- package/dist/src/utils/ripgrep-wrapper.js +17 -3
- package/dist/src/utils/ripgrep-wrapper.js.map +1 -1
- package/dist/src/utils/sandbox-executor.d.ts +145 -0
- package/dist/src/utils/sandbox-executor.d.ts.map +1 -0
- package/dist/src/utils/sandbox-executor.js +642 -0
- package/dist/src/utils/sandbox-executor.js.map +1 -0
- package/dist/src/utils/server-context-generator.d.ts +5 -0
- package/dist/src/utils/server-context-generator.d.ts.map +1 -1
- package/dist/src/utils/server-context-generator.js +38 -0
- package/dist/src/utils/server-context-generator.js.map +1 -1
- package/dist/src/utils/task-manager.d.ts +239 -0
- package/dist/src/utils/task-manager.d.ts.map +1 -0
- package/dist/src/utils/task-manager.js +528 -0
- package/dist/src/utils/task-manager.js.map +1 -0
- package/dist/src/utils/task-persistence.d.ts +82 -0
- package/dist/src/utils/task-persistence.d.ts.map +1 -0
- package/dist/src/utils/task-persistence.js +248 -0
- package/dist/src/utils/task-persistence.js.map +1 -0
- package/dist/src/utils/test-aware-defaults.d.ts +57 -0
- package/dist/src/utils/test-aware-defaults.d.ts.map +1 -0
- package/dist/src/utils/test-aware-defaults.js +71 -0
- package/dist/src/utils/test-aware-defaults.js.map +1 -0
- package/dist/src/utils/tree-sitter-analyzer.d.ts +42 -5
- package/dist/src/utils/tree-sitter-analyzer.d.ts.map +1 -1
- package/dist/src/utils/tree-sitter-analyzer.js +499 -17
- package/dist/src/utils/tree-sitter-analyzer.js.map +1 -1
- package/package.json +25 -20
- package/dist/src/tools/smart-git-push-tool.d.ts +0 -55
- package/dist/src/tools/smart-git-push-tool.d.ts.map +0 -1
- package/dist/src/tools/smart-git-push-tool.js +0 -1011
- package/dist/src/tools/smart-git-push-tool.js.map +0 -1
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Search Codebase Tool
|
|
3
|
+
*
|
|
4
|
+
* Atomic tool for searching codebase files based on query patterns.
|
|
5
|
+
* Extracted from ResearchOrchestrator per ADR-018 (Atomic Tools Architecture).
|
|
6
|
+
*
|
|
7
|
+
* This tool provides dependency-injected codebase search functionality:
|
|
8
|
+
* - Returns raw data (matches, files) without analysis/conclusions
|
|
9
|
+
* - Supports configurable file system and analyzer dependencies
|
|
10
|
+
* - No LLM calls or orchestration logic
|
|
11
|
+
* - Testable without complex ESM mocking
|
|
12
|
+
*
|
|
13
|
+
* @see ResearchOrchestrator (deprecated) - Full multi-source orchestration
|
|
14
|
+
* @since 3.0.0
|
|
15
|
+
* @category Tools
|
|
16
|
+
* @category Research
|
|
17
|
+
*/
|
|
18
|
+
import { promises as fs } from 'fs';
|
|
19
|
+
import type { CallToolResult } from '@modelcontextprotocol/sdk/types.js';
|
|
20
|
+
import type { TreeSitterAnalyzer } from '../utils/tree-sitter-analyzer.js';
|
|
21
|
+
/**
|
|
22
|
+
* File match result with relevance scoring
|
|
23
|
+
*/
|
|
24
|
+
export interface FileMatch {
|
|
25
|
+
/** Full path to the file */
|
|
26
|
+
path: string;
|
|
27
|
+
/** File content (if includeContent was true) */
|
|
28
|
+
content?: string;
|
|
29
|
+
/** Relevance score 0-1 */
|
|
30
|
+
relevance: number;
|
|
31
|
+
/** Tree-sitter parse analysis (if available) */
|
|
32
|
+
parseAnalysis?: {
|
|
33
|
+
language: string;
|
|
34
|
+
hasInfrastructure: boolean;
|
|
35
|
+
functionCount: number;
|
|
36
|
+
importCount: number;
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Codebase search result
|
|
41
|
+
*/
|
|
42
|
+
export interface CodebaseSearchResult {
|
|
43
|
+
/** Array of matching files with relevance scores */
|
|
44
|
+
matches: FileMatch[];
|
|
45
|
+
/** Total number of files discovered */
|
|
46
|
+
totalFiles: number;
|
|
47
|
+
/** Keywords extracted from query */
|
|
48
|
+
keywords: string[];
|
|
49
|
+
/** Project path searched */
|
|
50
|
+
projectPath: string;
|
|
51
|
+
/** Search duration in milliseconds */
|
|
52
|
+
duration: number;
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Dependencies for search_codebase function (injectable for testing)
|
|
56
|
+
*/
|
|
57
|
+
export interface SearchCodebaseDependencies {
|
|
58
|
+
/** File system operations */
|
|
59
|
+
fs: typeof fs;
|
|
60
|
+
/** Tree-sitter analyzer (optional) */
|
|
61
|
+
analyzer?: TreeSitterAnalyzer;
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Default dependencies for production use
|
|
65
|
+
*/
|
|
66
|
+
export declare const defaultDeps: SearchCodebaseDependencies;
|
|
67
|
+
/**
|
|
68
|
+
* Minimum relevance threshold for including files in results (0-1)
|
|
69
|
+
* Files with relevance below this threshold will be filtered out
|
|
70
|
+
*/
|
|
71
|
+
export declare const DEFAULT_RELEVANCE_THRESHOLD = 0.2;
|
|
72
|
+
/**
|
|
73
|
+
* Search codebase for files matching query
|
|
74
|
+
*
|
|
75
|
+
* @description Atomic tool that searches project files based on query patterns.
|
|
76
|
+
* Returns raw file matches with relevance scores. Does NOT perform LLM analysis
|
|
77
|
+
* or synthesis - returns structured data only.
|
|
78
|
+
*
|
|
79
|
+
* Search strategy:
|
|
80
|
+
* 1. Extract keywords from query
|
|
81
|
+
* 2. Use scanProjectStructure for intent-based file discovery (Docker, K8s, etc.)
|
|
82
|
+
* 3. Use findFiles for glob-based keyword matching
|
|
83
|
+
* 4. Read and score file relevance (optional tree-sitter enhancement)
|
|
84
|
+
* 5. Return sorted results
|
|
85
|
+
*
|
|
86
|
+
* @param args - Search parameters
|
|
87
|
+
* @param args.query - Search query (e.g., "Docker configuration", "authentication")
|
|
88
|
+
* @param args.projectPath - Path to project root (defaults to cwd)
|
|
89
|
+
* @param args.scope - Optional file scope patterns (e.g., ["src/**", "config/**"])
|
|
90
|
+
* @param args.includeContent - Include file content in results (default: false)
|
|
91
|
+
* @param args.maxFiles - Maximum files to return (default: 20)
|
|
92
|
+
* @param args.enableTreeSitter - Use tree-sitter for enhanced analysis (default: true)
|
|
93
|
+
* @param deps - Injectable dependencies (for testing)
|
|
94
|
+
*
|
|
95
|
+
* @returns Promise<CodebaseSearchResult> Raw search results with matches and scores
|
|
96
|
+
*
|
|
97
|
+
* @throws {McpAdrError} When query is empty or search fails
|
|
98
|
+
*
|
|
99
|
+
* @example
|
|
100
|
+
* ```typescript
|
|
101
|
+
* // Basic search
|
|
102
|
+
* const result = await searchCodebase({
|
|
103
|
+
* query: "Docker configuration",
|
|
104
|
+
* projectPath: "/path/to/project"
|
|
105
|
+
* });
|
|
106
|
+
*
|
|
107
|
+
* console.log(`Found ${result.matches.length} files`);
|
|
108
|
+
* result.matches.forEach(match => {
|
|
109
|
+
* console.log(`${match.path}: ${(match.relevance * 100).toFixed(1)}%`);
|
|
110
|
+
* });
|
|
111
|
+
* ```
|
|
112
|
+
*
|
|
113
|
+
* @example
|
|
114
|
+
* ```typescript
|
|
115
|
+
* // Search with content and custom scope
|
|
116
|
+
* const result = await searchCodebase({
|
|
117
|
+
* query: "authentication methods",
|
|
118
|
+
* scope: ["src/**", "lib/**"],
|
|
119
|
+
* includeContent: true,
|
|
120
|
+
* maxFiles: 10
|
|
121
|
+
* });
|
|
122
|
+
* ```
|
|
123
|
+
*
|
|
124
|
+
* @since 3.0.0
|
|
125
|
+
* @category Research
|
|
126
|
+
* @category Atomic Tools
|
|
127
|
+
*/
|
|
128
|
+
export declare function searchCodebase(args: {
|
|
129
|
+
query: string;
|
|
130
|
+
projectPath?: string;
|
|
131
|
+
scope?: string[];
|
|
132
|
+
includeContent?: boolean;
|
|
133
|
+
maxFiles?: number;
|
|
134
|
+
enableTreeSitter?: boolean;
|
|
135
|
+
relevanceThreshold?: number;
|
|
136
|
+
}, deps?: SearchCodebaseDependencies): Promise<CodebaseSearchResult>;
|
|
137
|
+
/**
|
|
138
|
+
* MCP tool wrapper for search_codebase
|
|
139
|
+
*/
|
|
140
|
+
export declare function searchCodebaseTool(args: {
|
|
141
|
+
query: string;
|
|
142
|
+
projectPath?: string;
|
|
143
|
+
scope?: string[];
|
|
144
|
+
includeContent?: boolean;
|
|
145
|
+
maxFiles?: number;
|
|
146
|
+
enableTreeSitter?: boolean;
|
|
147
|
+
}): Promise<CallToolResult>;
|
|
148
|
+
//# sourceMappingURL=search-codebase-tool.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"search-codebase-tool.d.ts","sourceRoot":"","sources":["../../../src/tools/search-codebase-tool.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EAAE,QAAQ,IAAI,EAAE,EAAE,MAAM,IAAI,CAAC;AAEpC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AAEzE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AAI3E;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,4BAA4B;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,gDAAgD;IAChD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,0BAA0B;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,gDAAgD;IAChD,aAAa,CAAC,EAAE;QACd,QAAQ,EAAE,MAAM,CAAC;QACjB,iBAAiB,EAAE,OAAO,CAAC;QAC3B,aAAa,EAAE,MAAM,CAAC;QACtB,WAAW,EAAE,MAAM,CAAC;KACrB,CAAC;CACH;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,oDAAoD;IACpD,OAAO,EAAE,SAAS,EAAE,CAAC;IACrB,uCAAuC;IACvC,UAAU,EAAE,MAAM,CAAC;IACnB,oCAAoC;IACpC,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,4BAA4B;IAC5B,WAAW,EAAE,MAAM,CAAC;IACpB,sCAAsC;IACtC,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,0BAA0B;IACzC,6BAA6B;IAC7B,EAAE,EAAE,OAAO,EAAE,CAAC;IACd,sCAAsC;IACtC,QAAQ,CAAC,EAAE,kBAAkB,CAAC;CAC/B;AAED;;GAEG;AACH,eAAO,MAAM,WAAW,EAAE,0BAEzB,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,2BAA2B,MAAM,CAAC;AAE/C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuDG;AACH,wBAAsB,cAAc,CAClC,IAAI,EAAE;IACJ,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B,EACD,IAAI,GAAE,0BAAwC,GAC7C,OAAO,CAAC,oBAAoB,CAAC,CAwN/B;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CACtC,IAAI,EAAE;IACJ,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B,GACA,OAAO,CAAC,cAAc,CAAC,CAyDzB"}
|
|
@@ -0,0 +1,406 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Search Codebase Tool
|
|
3
|
+
*
|
|
4
|
+
* Atomic tool for searching codebase files based on query patterns.
|
|
5
|
+
* Extracted from ResearchOrchestrator per ADR-018 (Atomic Tools Architecture).
|
|
6
|
+
*
|
|
7
|
+
* This tool provides dependency-injected codebase search functionality:
|
|
8
|
+
* - Returns raw data (matches, files) without analysis/conclusions
|
|
9
|
+
* - Supports configurable file system and analyzer dependencies
|
|
10
|
+
* - No LLM calls or orchestration logic
|
|
11
|
+
* - Testable without complex ESM mocking
|
|
12
|
+
*
|
|
13
|
+
* @see ResearchOrchestrator (deprecated) - Full multi-source orchestration
|
|
14
|
+
* @since 3.0.0
|
|
15
|
+
* @category Tools
|
|
16
|
+
* @category Research
|
|
17
|
+
*/
|
|
18
|
+
import { promises as fs } from 'fs';
|
|
19
|
+
import * as path from 'path';
|
|
20
|
+
import { McpAdrError } from '../types/index.js';
|
|
21
|
+
import { findFiles } from '../utils/file-system.js';
|
|
22
|
+
import { scanProjectStructure } from '../utils/actual-file-operations.js';
|
|
23
|
+
/**
|
|
24
|
+
* Default dependencies for production use
|
|
25
|
+
*/
|
|
26
|
+
export const defaultDeps = {
|
|
27
|
+
fs,
|
|
28
|
+
};
|
|
29
|
+
/**
|
|
30
|
+
* Minimum relevance threshold for including files in results (0-1)
|
|
31
|
+
* Files with relevance below this threshold will be filtered out
|
|
32
|
+
*/
|
|
33
|
+
export const DEFAULT_RELEVANCE_THRESHOLD = 0.2;
|
|
34
|
+
/**
|
|
35
|
+
* Search codebase for files matching query
|
|
36
|
+
*
|
|
37
|
+
* @description Atomic tool that searches project files based on query patterns.
|
|
38
|
+
* Returns raw file matches with relevance scores. Does NOT perform LLM analysis
|
|
39
|
+
* or synthesis - returns structured data only.
|
|
40
|
+
*
|
|
41
|
+
* Search strategy:
|
|
42
|
+
* 1. Extract keywords from query
|
|
43
|
+
* 2. Use scanProjectStructure for intent-based file discovery (Docker, K8s, etc.)
|
|
44
|
+
* 3. Use findFiles for glob-based keyword matching
|
|
45
|
+
* 4. Read and score file relevance (optional tree-sitter enhancement)
|
|
46
|
+
* 5. Return sorted results
|
|
47
|
+
*
|
|
48
|
+
* @param args - Search parameters
|
|
49
|
+
* @param args.query - Search query (e.g., "Docker configuration", "authentication")
|
|
50
|
+
* @param args.projectPath - Path to project root (defaults to cwd)
|
|
51
|
+
* @param args.scope - Optional file scope patterns (e.g., ["src/**", "config/**"])
|
|
52
|
+
* @param args.includeContent - Include file content in results (default: false)
|
|
53
|
+
* @param args.maxFiles - Maximum files to return (default: 20)
|
|
54
|
+
* @param args.enableTreeSitter - Use tree-sitter for enhanced analysis (default: true)
|
|
55
|
+
* @param deps - Injectable dependencies (for testing)
|
|
56
|
+
*
|
|
57
|
+
* @returns Promise<CodebaseSearchResult> Raw search results with matches and scores
|
|
58
|
+
*
|
|
59
|
+
* @throws {McpAdrError} When query is empty or search fails
|
|
60
|
+
*
|
|
61
|
+
* @example
|
|
62
|
+
* ```typescript
|
|
63
|
+
* // Basic search
|
|
64
|
+
* const result = await searchCodebase({
|
|
65
|
+
* query: "Docker configuration",
|
|
66
|
+
* projectPath: "/path/to/project"
|
|
67
|
+
* });
|
|
68
|
+
*
|
|
69
|
+
* console.log(`Found ${result.matches.length} files`);
|
|
70
|
+
* result.matches.forEach(match => {
|
|
71
|
+
* console.log(`${match.path}: ${(match.relevance * 100).toFixed(1)}%`);
|
|
72
|
+
* });
|
|
73
|
+
* ```
|
|
74
|
+
*
|
|
75
|
+
* @example
|
|
76
|
+
* ```typescript
|
|
77
|
+
* // Search with content and custom scope
|
|
78
|
+
* const result = await searchCodebase({
|
|
79
|
+
* query: "authentication methods",
|
|
80
|
+
* scope: ["src/**", "lib/**"],
|
|
81
|
+
* includeContent: true,
|
|
82
|
+
* maxFiles: 10
|
|
83
|
+
* });
|
|
84
|
+
* ```
|
|
85
|
+
*
|
|
86
|
+
* @since 3.0.0
|
|
87
|
+
* @category Research
|
|
88
|
+
* @category Atomic Tools
|
|
89
|
+
*/
|
|
90
|
+
export async function searchCodebase(args, deps = defaultDeps) {
|
|
91
|
+
const { query, projectPath = process.cwd(), scope, includeContent = false, maxFiles = 20, enableTreeSitter = true, relevanceThreshold = DEFAULT_RELEVANCE_THRESHOLD, } = args;
|
|
92
|
+
if (!query || query.trim().length === 0) {
|
|
93
|
+
throw new McpAdrError('Search query is required', 'INVALID_INPUT');
|
|
94
|
+
}
|
|
95
|
+
const startTime = Date.now();
|
|
96
|
+
const keywords = extractKeywords(query);
|
|
97
|
+
const queryLower = query.toLowerCase();
|
|
98
|
+
const relevanceMap = new Map();
|
|
99
|
+
const contentMap = new Map();
|
|
100
|
+
const parseAnalysisMap = new Map();
|
|
101
|
+
const discoveredFiles = new Set();
|
|
102
|
+
try {
|
|
103
|
+
// PHASE 1: Intent-based file discovery using scanProjectStructure
|
|
104
|
+
const projectStructure = await scanProjectStructure(projectPath, {
|
|
105
|
+
readContent: false,
|
|
106
|
+
maxFileSize: 100000,
|
|
107
|
+
includeHidden: false,
|
|
108
|
+
});
|
|
109
|
+
// Match relevant file categories based on query intent
|
|
110
|
+
if (queryLower.match(/docker|container/i)) {
|
|
111
|
+
projectStructure.dockerFiles.forEach(f => discoveredFiles.add(f.path));
|
|
112
|
+
}
|
|
113
|
+
if (queryLower.match(/kubernetes|k8s|pod|deployment/i)) {
|
|
114
|
+
projectStructure.kubernetesFiles.forEach(f => discoveredFiles.add(f.path));
|
|
115
|
+
}
|
|
116
|
+
if (queryLower.match(/dependency|package|library/i)) {
|
|
117
|
+
projectStructure.packageFiles.forEach(f => discoveredFiles.add(f.path));
|
|
118
|
+
}
|
|
119
|
+
if (queryLower.match(/config|configuration|environment|env/i)) {
|
|
120
|
+
projectStructure.configFiles.forEach(f => discoveredFiles.add(f.path));
|
|
121
|
+
projectStructure.environmentFiles.forEach(f => discoveredFiles.add(f.path));
|
|
122
|
+
}
|
|
123
|
+
if (queryLower.match(/build|ci|cd|pipeline/i)) {
|
|
124
|
+
projectStructure.buildFiles.forEach(f => discoveredFiles.add(f.path));
|
|
125
|
+
projectStructure.ciFiles.forEach(f => discoveredFiles.add(f.path));
|
|
126
|
+
}
|
|
127
|
+
if (queryLower.match(/test|testing|spec/i)) {
|
|
128
|
+
const testResults = await findFiles(projectPath, [
|
|
129
|
+
'**/*.test.ts',
|
|
130
|
+
'**/*.spec.ts',
|
|
131
|
+
'**/*.test.js',
|
|
132
|
+
'**/*.spec.js',
|
|
133
|
+
'**/tests/**',
|
|
134
|
+
'**/test/**',
|
|
135
|
+
]);
|
|
136
|
+
testResults.files.forEach(f => discoveredFiles.add(f.path));
|
|
137
|
+
}
|
|
138
|
+
// PHASE 2: Keyword-based file discovery
|
|
139
|
+
if (keywords.length > 0) {
|
|
140
|
+
try {
|
|
141
|
+
const keywordPatterns = keywords.slice(0, 5).map(k => `**/*${k}*`);
|
|
142
|
+
const keywordResults = await findFiles(projectPath, keywordPatterns, { limit: 50 });
|
|
143
|
+
keywordResults.files.forEach(f => discoveredFiles.add(f.path));
|
|
144
|
+
}
|
|
145
|
+
catch {
|
|
146
|
+
// Keyword discovery failed, continue with other methods
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
// PHASE 3: Apply custom scope if provided
|
|
150
|
+
if (scope && scope.length > 0) {
|
|
151
|
+
const scopedResults = await findFiles(projectPath, scope, { limit: 100 });
|
|
152
|
+
scopedResults.files.forEach(f => discoveredFiles.add(f.path));
|
|
153
|
+
}
|
|
154
|
+
// PHASE 4: Read and score file relevance
|
|
155
|
+
const fileArray = Array.from(discoveredFiles).slice(0, 50); // Limit to 50 files for performance
|
|
156
|
+
// Import analyzer if tree-sitter is enabled
|
|
157
|
+
let analyzer;
|
|
158
|
+
if (enableTreeSitter) {
|
|
159
|
+
try {
|
|
160
|
+
const { TreeSitterAnalyzer: TSAnalyzer } = await import('../utils/tree-sitter-analyzer.js');
|
|
161
|
+
analyzer = new TSAnalyzer();
|
|
162
|
+
}
|
|
163
|
+
catch {
|
|
164
|
+
// Tree-sitter not available (common in test environments), continue without it
|
|
165
|
+
// Not logging as this is expected behavior in some environments
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
// Process files in parallel for better performance
|
|
169
|
+
const fileProcessingPromises = fileArray.map(async (filePath) => {
|
|
170
|
+
try {
|
|
171
|
+
const fullPath = path.isAbsolute(filePath) ? filePath : path.join(projectPath, filePath);
|
|
172
|
+
const content = await deps.fs.readFile(fullPath, 'utf-8');
|
|
173
|
+
// Calculate text-based relevance
|
|
174
|
+
let relevance = calculateTextRelevance(content, query, keywords);
|
|
175
|
+
if (includeContent) {
|
|
176
|
+
contentMap.set(filePath, content);
|
|
177
|
+
}
|
|
178
|
+
// PHASE 5: Enhance with tree-sitter analysis if available
|
|
179
|
+
if (analyzer && shouldParse(filePath)) {
|
|
180
|
+
try {
|
|
181
|
+
const analysis = await analyzer.analyzeFile(fullPath, content);
|
|
182
|
+
// Enhance relevance based on AST analysis
|
|
183
|
+
let astRelevance = relevance;
|
|
184
|
+
// Check for infrastructure references
|
|
185
|
+
if (analysis.infraStructure && analysis.infraStructure.length > 0) {
|
|
186
|
+
const infraProviders = analysis.infraStructure.map(i => i.provider);
|
|
187
|
+
const infraResources = analysis.infraStructure.map(i => i.name);
|
|
188
|
+
const matchingProviders = keywords.filter(k => infraProviders.some(p => p.toLowerCase().includes(k.toLowerCase())));
|
|
189
|
+
const matchingResources = keywords.filter(k => infraResources.some(r => r.toLowerCase().includes(k.toLowerCase())));
|
|
190
|
+
const totalMatches = matchingProviders.length + matchingResources.length;
|
|
191
|
+
if (totalMatches > 0) {
|
|
192
|
+
astRelevance += 0.2 * Math.min(totalMatches, 3); // Cap bonus at 0.6
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
// Check for imports/dependencies
|
|
196
|
+
if (analysis.imports && keywords.some(k => k.match(/import|require|dependency/i))) {
|
|
197
|
+
astRelevance += 0.1;
|
|
198
|
+
}
|
|
199
|
+
relevance = Math.min(astRelevance, 1.0);
|
|
200
|
+
parseAnalysisMap.set(filePath, {
|
|
201
|
+
language: analysis.language,
|
|
202
|
+
hasInfrastructure: !!analysis.infraStructure,
|
|
203
|
+
functionCount: analysis.functions?.length || 0,
|
|
204
|
+
importCount: analysis.imports?.length || 0,
|
|
205
|
+
});
|
|
206
|
+
}
|
|
207
|
+
catch {
|
|
208
|
+
// Tree-sitter parsing failed, use text-based relevance
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
relevanceMap.set(filePath, relevance);
|
|
212
|
+
return { filePath, success: true };
|
|
213
|
+
}
|
|
214
|
+
catch {
|
|
215
|
+
// File read failed, skip
|
|
216
|
+
return { filePath, success: false };
|
|
217
|
+
}
|
|
218
|
+
});
|
|
219
|
+
// Wait for all file processing to complete
|
|
220
|
+
await Promise.allSettled(fileProcessingPromises);
|
|
221
|
+
// PHASE 6: Build and sort results
|
|
222
|
+
const matches = Array.from(relevanceMap.entries())
|
|
223
|
+
.filter(([, relevance]) => relevance > relevanceThreshold)
|
|
224
|
+
.sort((a, b) => b[1] - a[1]) // Sort by relevance descending
|
|
225
|
+
.slice(0, maxFiles)
|
|
226
|
+
.map(([filePath, relevance]) => {
|
|
227
|
+
const match = {
|
|
228
|
+
path: filePath,
|
|
229
|
+
relevance,
|
|
230
|
+
};
|
|
231
|
+
const content = contentMap.get(filePath);
|
|
232
|
+
if (content !== undefined) {
|
|
233
|
+
match.content = content;
|
|
234
|
+
}
|
|
235
|
+
const parseAnalysis = parseAnalysisMap.get(filePath);
|
|
236
|
+
if (parseAnalysis !== undefined) {
|
|
237
|
+
match.parseAnalysis = parseAnalysis;
|
|
238
|
+
}
|
|
239
|
+
return match;
|
|
240
|
+
});
|
|
241
|
+
return {
|
|
242
|
+
matches,
|
|
243
|
+
totalFiles: discoveredFiles.size,
|
|
244
|
+
keywords,
|
|
245
|
+
projectPath,
|
|
246
|
+
duration: Date.now() - startTime,
|
|
247
|
+
};
|
|
248
|
+
}
|
|
249
|
+
catch (error) {
|
|
250
|
+
throw new McpAdrError(`Codebase search failed: ${error instanceof Error ? error.message : String(error)}`, 'SEARCH_ERROR', { query, projectPath });
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
/**
|
|
254
|
+
* MCP tool wrapper for search_codebase
|
|
255
|
+
*/
|
|
256
|
+
export async function searchCodebaseTool(args) {
|
|
257
|
+
try {
|
|
258
|
+
const result = await searchCodebase(args);
|
|
259
|
+
// Format response
|
|
260
|
+
let output = `# Codebase Search Results\n\n`;
|
|
261
|
+
output += `**Query**: ${args.query}\n`;
|
|
262
|
+
output += `**Project**: ${result.projectPath}\n`;
|
|
263
|
+
output += `**Matches**: ${result.matches.length} of ${result.totalFiles} files\n`;
|
|
264
|
+
output += `**Duration**: ${result.duration}ms\n`;
|
|
265
|
+
output += `**Keywords**: ${result.keywords.join(', ')}\n\n`;
|
|
266
|
+
if (result.matches.length === 0) {
|
|
267
|
+
output += `No files found matching the query.\n`;
|
|
268
|
+
}
|
|
269
|
+
else {
|
|
270
|
+
output += `## Matches\n\n`;
|
|
271
|
+
result.matches.forEach((match, index) => {
|
|
272
|
+
output += `### ${index + 1}. ${match.path}\n`;
|
|
273
|
+
output += `**Relevance**: ${(match.relevance * 100).toFixed(1)}%\n`;
|
|
274
|
+
if (match.parseAnalysis) {
|
|
275
|
+
output += `**Language**: ${match.parseAnalysis.language}\n`;
|
|
276
|
+
output += `**Functions**: ${match.parseAnalysis.functionCount}\n`;
|
|
277
|
+
output += `**Imports**: ${match.parseAnalysis.importCount}\n`;
|
|
278
|
+
if (match.parseAnalysis.hasInfrastructure) {
|
|
279
|
+
output += `**Infrastructure**: Yes\n`;
|
|
280
|
+
}
|
|
281
|
+
}
|
|
282
|
+
if (match.content) {
|
|
283
|
+
const preview = match.content.substring(0, 500);
|
|
284
|
+
output += `\n**Content Preview**:\n\`\`\`\n${preview}${match.content.length > 500 ? '...' : ''}\n\`\`\`\n`;
|
|
285
|
+
}
|
|
286
|
+
output += `\n`;
|
|
287
|
+
});
|
|
288
|
+
}
|
|
289
|
+
return {
|
|
290
|
+
content: [
|
|
291
|
+
{
|
|
292
|
+
type: 'text',
|
|
293
|
+
text: output,
|
|
294
|
+
},
|
|
295
|
+
],
|
|
296
|
+
};
|
|
297
|
+
}
|
|
298
|
+
catch (error) {
|
|
299
|
+
return {
|
|
300
|
+
content: [
|
|
301
|
+
{
|
|
302
|
+
type: 'text',
|
|
303
|
+
text: `❌ Search failed: ${error instanceof Error ? error.message : String(error)}`,
|
|
304
|
+
},
|
|
305
|
+
],
|
|
306
|
+
isError: true,
|
|
307
|
+
};
|
|
308
|
+
}
|
|
309
|
+
}
|
|
310
|
+
/**
|
|
311
|
+
* Extract keywords from search query
|
|
312
|
+
*/
|
|
313
|
+
function extractKeywords(query) {
|
|
314
|
+
const stopWords = new Set([
|
|
315
|
+
'the',
|
|
316
|
+
'is',
|
|
317
|
+
'are',
|
|
318
|
+
'was',
|
|
319
|
+
'were',
|
|
320
|
+
'what',
|
|
321
|
+
'when',
|
|
322
|
+
'where',
|
|
323
|
+
'why',
|
|
324
|
+
'how',
|
|
325
|
+
'which',
|
|
326
|
+
'who',
|
|
327
|
+
'a',
|
|
328
|
+
'an',
|
|
329
|
+
'and',
|
|
330
|
+
'or',
|
|
331
|
+
'but',
|
|
332
|
+
'in',
|
|
333
|
+
'on',
|
|
334
|
+
'at',
|
|
335
|
+
'to',
|
|
336
|
+
'for',
|
|
337
|
+
'with',
|
|
338
|
+
'about',
|
|
339
|
+
'as',
|
|
340
|
+
'by',
|
|
341
|
+
'from',
|
|
342
|
+
'of',
|
|
343
|
+
'can',
|
|
344
|
+
'could',
|
|
345
|
+
'should',
|
|
346
|
+
'would',
|
|
347
|
+
'do',
|
|
348
|
+
'does',
|
|
349
|
+
'did',
|
|
350
|
+
'have',
|
|
351
|
+
'has',
|
|
352
|
+
'had',
|
|
353
|
+
'we',
|
|
354
|
+
'our',
|
|
355
|
+
'us',
|
|
356
|
+
]);
|
|
357
|
+
const words = query
|
|
358
|
+
.toLowerCase()
|
|
359
|
+
.replace(/[^\w\s-]/g, ' ')
|
|
360
|
+
.split(/\s+/)
|
|
361
|
+
.filter(w => w.length > 2 && !stopWords.has(w));
|
|
362
|
+
return [...new Set(words)];
|
|
363
|
+
}
|
|
364
|
+
/**
|
|
365
|
+
* Calculate text-based relevance score
|
|
366
|
+
*/
|
|
367
|
+
function calculateTextRelevance(content, query, keywords) {
|
|
368
|
+
const contentLower = content.toLowerCase();
|
|
369
|
+
const queryLower = query.toLowerCase();
|
|
370
|
+
let score = 0;
|
|
371
|
+
// Keyword matching
|
|
372
|
+
for (const keyword of keywords) {
|
|
373
|
+
if (contentLower.includes(keyword.toLowerCase())) {
|
|
374
|
+
score += 0.2;
|
|
375
|
+
}
|
|
376
|
+
}
|
|
377
|
+
// Query phrase matching
|
|
378
|
+
const queryWords = queryLower.split(/\s+/).filter(w => w.length > 3);
|
|
379
|
+
for (const word of queryWords) {
|
|
380
|
+
if (contentLower.includes(word)) {
|
|
381
|
+
score += 0.1;
|
|
382
|
+
}
|
|
383
|
+
}
|
|
384
|
+
return Math.min(score, 1.0);
|
|
385
|
+
}
|
|
386
|
+
/**
|
|
387
|
+
* Check if file should be parsed with tree-sitter
|
|
388
|
+
*/
|
|
389
|
+
function shouldParse(filePath) {
|
|
390
|
+
const parsableExtensions = [
|
|
391
|
+
'.ts',
|
|
392
|
+
'.tsx',
|
|
393
|
+
'.js',
|
|
394
|
+
'.jsx',
|
|
395
|
+
'.py',
|
|
396
|
+
'.yaml',
|
|
397
|
+
'.yml',
|
|
398
|
+
'.json',
|
|
399
|
+
'.sh',
|
|
400
|
+
'.bash',
|
|
401
|
+
'.tf',
|
|
402
|
+
'.hcl',
|
|
403
|
+
];
|
|
404
|
+
return parsableExtensions.some(ext => filePath.endsWith(ext));
|
|
405
|
+
}
|
|
406
|
+
//# sourceMappingURL=search-codebase-tool.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"search-codebase-tool.js","sourceRoot":"","sources":["../../../src/tools/search-codebase-tool.ts"],"names":[],"mappings":"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"}
|
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
* Use this tool for safe, metric-driven git pushes.
|
|
22
22
|
*/
|
|
23
23
|
import { McpAdrError } from '../types/index.js';
|
|
24
|
-
import { execSync } from 'child_process';
|
|
24
|
+
import { execSync } from 'node:child_process';
|
|
25
25
|
import { readFileSync, writeFileSync, existsSync, statSync, mkdirSync } from 'fs';
|
|
26
26
|
import { join, extname, basename } from 'path';
|
|
27
27
|
import * as os from 'os';
|