mcp-adr-analysis-server 2.7.25 → 2.7.26
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 -32
- package/dist/.tsbuildinfo +1 -1
- package/dist/src/index.d.ts +0 -4
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +0 -57
- package/dist/src/index.js.map +1 -1
- package/dist/src/tools/tool-catalog.d.ts.map +1 -1
- package/dist/src/tools/tool-catalog.js +2 -22
- package/dist/src/tools/tool-catalog.js.map +1 -1
- package/dist/src/utils/ai-executor.d.ts +1 -1
- package/dist/src/utils/ai-executor.js +1 -1
- package/dist/src/utils/config.d.ts +0 -3
- package/dist/src/utils/config.d.ts.map +1 -1
- package/dist/src/utils/config.js +0 -13
- package/dist/src/utils/config.js.map +1 -1
- package/dist/src/utils/research-orchestrator.d.ts +0 -28
- package/dist/src/utils/research-orchestrator.d.ts.map +1 -1
- package/dist/src/utils/research-orchestrator.js +15 -252
- package/dist/src/utils/research-orchestrator.js.map +1 -1
- package/dist/src/utils/server-context-generator.d.ts.map +1 -1
- package/dist/src/utils/server-context-generator.js +0 -1
- package/dist/src/utils/server-context-generator.js.map +1 -1
- package/package.json +1 -2
- package/dist/src/tools/llm-web-search-tool.d.ts +0 -59
- package/dist/src/tools/llm-web-search-tool.d.ts.map +0 -1
- package/dist/src/tools/llm-web-search-tool.js +0 -165
- package/dist/src/tools/llm-web-search-tool.js.map +0 -1
|
@@ -1,165 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* LLM-Managed Web Search Tool
|
|
3
|
-
*
|
|
4
|
-
* Uses Firecrawl for cross-platform web search with LLM-driven query optimization
|
|
5
|
-
*/
|
|
6
|
-
import { McpAdrError } from '../types/index.js';
|
|
7
|
-
import { ResearchOrchestrator } from '../utils/research-orchestrator.js';
|
|
8
|
-
/**
|
|
9
|
-
* LLM-managed web search using Firecrawl for cross-platform support
|
|
10
|
-
*
|
|
11
|
-
* @description Executes intelligent web search using Firecrawl with LLM-driven
|
|
12
|
-
* query optimization and content relevance scoring. Supports RHEL, Ubuntu, and macOS.
|
|
13
|
-
*
|
|
14
|
-
* @param {Object} args - Web search configuration parameters
|
|
15
|
-
* @param {string} args.query - The search query to execute
|
|
16
|
-
* @param {number} [args.maxResults] - Maximum results to return (default: 5)
|
|
17
|
-
* @param {boolean} [args.includeContent] - Include full content (default: true)
|
|
18
|
-
* @param {string} [args.llmInstructions] - LLM instructions for search optimization
|
|
19
|
-
* @param {string} [args.projectPath] - Path to project root (defaults to cwd)
|
|
20
|
-
* @param {string} [args.adrDirectory] - ADR directory relative to project (defaults to 'docs/adrs')
|
|
21
|
-
*
|
|
22
|
-
* @returns {Promise<any>} Web search results with LLM analysis
|
|
23
|
-
*
|
|
24
|
-
* @throws {McpAdrError} When query is empty or search fails
|
|
25
|
-
*
|
|
26
|
-
* @example
|
|
27
|
-
* ```typescript
|
|
28
|
-
* // Basic web search
|
|
29
|
-
* const result = await llmWebSearch({
|
|
30
|
-
* query: 'Red Hat OpenShift best practices'
|
|
31
|
-
* });
|
|
32
|
-
*
|
|
33
|
-
* console.log(result.results); // Array of search results
|
|
34
|
-
* console.log(result.llmAnalysis); // LLM analysis of results
|
|
35
|
-
* ```
|
|
36
|
-
*
|
|
37
|
-
* @example
|
|
38
|
-
* ```typescript
|
|
39
|
-
* // Advanced search with LLM instructions
|
|
40
|
-
* const result = await llmWebSearch({
|
|
41
|
-
* query: 'Kubernetes security hardening',
|
|
42
|
-
* maxResults: 10,
|
|
43
|
-
* llmInstructions: 'Focus on enterprise security practices and compliance requirements'
|
|
44
|
-
* });
|
|
45
|
-
* ```
|
|
46
|
-
*
|
|
47
|
-
* @since 2.1.0
|
|
48
|
-
* @category Web Search
|
|
49
|
-
* @category LLM
|
|
50
|
-
* @mcp-tool
|
|
51
|
-
*/
|
|
52
|
-
export async function llmWebSearch(args, context) {
|
|
53
|
-
const { query, maxResults = 5, includeContent = true, llmInstructions, projectPath, adrDirectory, } = args;
|
|
54
|
-
if (!query || query.trim().length === 0) {
|
|
55
|
-
throw new McpAdrError('Query parameter is required and cannot be empty', 'INVALID_QUERY');
|
|
56
|
-
}
|
|
57
|
-
try {
|
|
58
|
-
context?.info(`🌐 Initializing web search for: ${query}`);
|
|
59
|
-
context?.report_progress(0, 100);
|
|
60
|
-
// Initialize research orchestrator with Firecrawl
|
|
61
|
-
const orchestrator = new ResearchOrchestrator(projectPath, adrDirectory);
|
|
62
|
-
// Enhance query with LLM instructions if provided
|
|
63
|
-
context?.info('🤖 Optimizing search query with LLM guidance...');
|
|
64
|
-
context?.report_progress(25, 100);
|
|
65
|
-
let enhancedQuery = query;
|
|
66
|
-
if (llmInstructions) {
|
|
67
|
-
enhancedQuery = `${query}\n\nLLM Instructions: ${llmInstructions}`;
|
|
68
|
-
}
|
|
69
|
-
// Perform web search using research orchestrator
|
|
70
|
-
context?.info('🔍 Executing web search with Firecrawl...');
|
|
71
|
-
context?.report_progress(50, 100);
|
|
72
|
-
const researchResult = await orchestrator.answerResearchQuestion(enhancedQuery);
|
|
73
|
-
// Extract web search results
|
|
74
|
-
const webSearchSource = researchResult.sources.find(source => source.type === 'web_search');
|
|
75
|
-
const webResults = webSearchSource?.data?.results || [];
|
|
76
|
-
// Limit results
|
|
77
|
-
const limitedResults = webResults.slice(0, maxResults);
|
|
78
|
-
// Generate LLM analysis of results
|
|
79
|
-
context?.info('📊 Analyzing search results with LLM...');
|
|
80
|
-
context?.report_progress(75, 100);
|
|
81
|
-
const llmAnalysis = await generateLLMAnalysis(query, limitedResults, llmInstructions);
|
|
82
|
-
context?.info('✅ Web search complete!');
|
|
83
|
-
context?.report_progress(100, 100);
|
|
84
|
-
return {
|
|
85
|
-
content: [
|
|
86
|
-
{
|
|
87
|
-
type: 'text',
|
|
88
|
-
text: `# LLM-Managed Web Search Results
|
|
89
|
-
|
|
90
|
-
## Query
|
|
91
|
-
${query}
|
|
92
|
-
|
|
93
|
-
${llmInstructions ? `## LLM Instructions\n${llmInstructions}\n` : ''}
|
|
94
|
-
|
|
95
|
-
## Search Results (${limitedResults.length} found)
|
|
96
|
-
|
|
97
|
-
${limitedResults
|
|
98
|
-
.map((result, index) => `
|
|
99
|
-
### ${index + 1}. ${result.title}
|
|
100
|
-
- **URL**: ${result.url}
|
|
101
|
-
- **Relevance**: ${(result.relevance * 100).toFixed(1)}%
|
|
102
|
-
- **Content**: ${includeContent ? result.content?.substring(0, 500) + '...' : 'Content available'}
|
|
103
|
-
|
|
104
|
-
---
|
|
105
|
-
`)
|
|
106
|
-
.join('\n')}
|
|
107
|
-
|
|
108
|
-
## LLM Analysis
|
|
109
|
-
${llmAnalysis}
|
|
110
|
-
|
|
111
|
-
## Search Metadata
|
|
112
|
-
- **Provider**: Firecrawl
|
|
113
|
-
- **Total Results**: ${webResults.length}
|
|
114
|
-
- **Returned Results**: ${limitedResults.length}
|
|
115
|
-
- **Confidence**: ${(researchResult.confidence * 100).toFixed(1)}%
|
|
116
|
-
- **Timestamp**: ${new Date().toISOString()}
|
|
117
|
-
`,
|
|
118
|
-
},
|
|
119
|
-
],
|
|
120
|
-
};
|
|
121
|
-
}
|
|
122
|
-
catch (error) {
|
|
123
|
-
throw new McpAdrError(`Web search failed: ${error instanceof Error ? error.message : String(error)}`, 'WEB_SEARCH_ERROR');
|
|
124
|
-
}
|
|
125
|
-
}
|
|
126
|
-
/**
|
|
127
|
-
* Generate LLM analysis of search results
|
|
128
|
-
*/
|
|
129
|
-
async function generateLLMAnalysis(_query, _results, _instructions) {
|
|
130
|
-
// TODO: Implement LLM analysis when AI executor is available
|
|
131
|
-
// const { loadAIConfig, getAIExecutor } = await import('../config/ai-config.js');
|
|
132
|
-
// const aiConfig = loadAIConfig();
|
|
133
|
-
// const executor = getAIExecutor();
|
|
134
|
-
// const prompt = `
|
|
135
|
-
// Analyze these web search results for the query: "${query}"
|
|
136
|
-
//
|
|
137
|
-
// ${instructions ? `Additional Instructions: ${instructions}` : ''}
|
|
138
|
-
//
|
|
139
|
-
// Search Results:
|
|
140
|
-
// ${results.map((result, index) => `
|
|
141
|
-
// ${index + 1}. ${result.title}
|
|
142
|
-
// URL: ${result.url}
|
|
143
|
-
// Relevance: ${(result.relevance * 100).toFixed(1)}%
|
|
144
|
-
// Content Preview: ${result.content?.substring(0, 300)}...
|
|
145
|
-
// `).join('\n')}
|
|
146
|
-
//
|
|
147
|
-
// Provide analysis covering:
|
|
148
|
-
// 1. Overall quality and relevance of results
|
|
149
|
-
// 2. Key insights and findings
|
|
150
|
-
// 3. Gaps or missing information
|
|
151
|
-
// 4. Recommendations for further research
|
|
152
|
-
// 5. Summary of most valuable sources
|
|
153
|
-
//
|
|
154
|
-
// Keep analysis concise but comprehensive.
|
|
155
|
-
// `;
|
|
156
|
-
// const result = await executor.executeStructuredPrompt(prompt, {
|
|
157
|
-
// type: 'object',
|
|
158
|
-
// properties: {
|
|
159
|
-
// analysis: { type: 'string' }
|
|
160
|
-
// }
|
|
161
|
-
// });
|
|
162
|
-
// return result.data.analysis || 'Analysis unavailable';
|
|
163
|
-
return 'LLM analysis is not yet available. Results are available but require manual review.';
|
|
164
|
-
}
|
|
165
|
-
//# sourceMappingURL=llm-web-search-tool.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"llm-web-search-tool.js","sourceRoot":"","sources":["../../../src/tools/llm-web-search-tool.ts"],"names":[],"mappings":"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"}
|