@enokdev/springdocs-mcp 1.2.8 → 1.4.1
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 +83 -40
- package/build/config.d.ts +9 -0
- package/build/config.d.ts.map +1 -0
- package/build/config.js +32 -0
- package/build/config.js.map +1 -0
- package/build/format.d.ts +6 -0
- package/build/format.d.ts.map +1 -0
- package/build/format.js +23 -0
- package/build/format.js.map +1 -0
- package/build/http-server.d.ts +15 -0
- package/build/http-server.d.ts.map +1 -0
- package/build/http-server.js +131 -0
- package/build/http-server.js.map +1 -0
- package/build/index.js +182 -68
- package/build/index.js.map +1 -1
- package/build/prompts.d.ts +23 -0
- package/build/prompts.d.ts.map +1 -0
- package/build/prompts.js +112 -0
- package/build/prompts.js.map +1 -0
- package/build/resources.d.ts +31 -0
- package/build/resources.d.ts.map +1 -0
- package/build/resources.js +66 -0
- package/build/resources.js.map +1 -0
- package/build/services/advanced-features.d.ts +14 -9
- package/build/services/advanced-features.d.ts.map +1 -1
- package/build/services/advanced-features.js +205 -195
- package/build/services/advanced-features.js.map +1 -1
- package/build/services/boot-wiki.d.ts +25 -0
- package/build/services/boot-wiki.d.ts.map +1 -0
- package/build/services/boot-wiki.js +103 -0
- package/build/services/boot-wiki.js.map +1 -0
- package/build/services/cache.d.ts +18 -3
- package/build/services/cache.d.ts.map +1 -1
- package/build/services/cache.js +84 -3
- package/build/services/cache.js.map +1 -1
- package/build/services/dependency-finder.d.ts +46 -0
- package/build/services/dependency-finder.d.ts.map +1 -0
- package/build/services/dependency-finder.js +181 -0
- package/build/services/dependency-finder.js.map +1 -0
- package/build/services/diagnosis.d.ts +46 -0
- package/build/services/diagnosis.d.ts.map +1 -0
- package/build/services/diagnosis.js +481 -0
- package/build/services/diagnosis.js.map +1 -0
- package/build/services/guides-list.d.ts +16 -0
- package/build/services/guides-list.d.ts.map +1 -0
- package/build/services/guides-list.js +45 -0
- package/build/services/guides-list.js.map +1 -0
- package/build/services/http.d.ts +21 -0
- package/build/services/http.d.ts.map +1 -0
- package/build/services/http.js +168 -0
- package/build/services/http.js.map +1 -0
- package/build/services/initializr.d.ts +41 -0
- package/build/services/initializr.d.ts.map +1 -0
- package/build/services/initializr.js +135 -0
- package/build/services/initializr.js.map +1 -0
- package/build/services/markdown.d.ts +56 -0
- package/build/services/markdown.d.ts.map +1 -0
- package/build/services/markdown.js +146 -0
- package/build/services/markdown.js.map +1 -0
- package/build/services/migration-sources.d.ts +13 -0
- package/build/services/migration-sources.d.ts.map +1 -0
- package/build/services/migration-sources.js +48 -0
- package/build/services/migration-sources.js.map +1 -0
- package/build/services/release-notes.d.ts +23 -0
- package/build/services/release-notes.d.ts.map +1 -0
- package/build/services/release-notes.js +94 -0
- package/build/services/release-notes.js.map +1 -0
- package/build/services/search-index.d.ts +33 -0
- package/build/services/search-index.d.ts.map +1 -0
- package/build/services/search-index.js +147 -0
- package/build/services/search-index.js.map +1 -0
- package/build/services/spring-projects-config.d.ts +26 -33
- package/build/services/spring-projects-config.d.ts.map +1 -1
- package/build/services/spring-projects-config.js +248 -79
- package/build/services/spring-projects-config.js.map +1 -1
- package/build/services/springboot-docs-optimized.d.ts +57 -16
- package/build/services/springboot-docs-optimized.d.ts.map +1 -1
- package/build/services/springboot-docs-optimized.js +315 -197
- package/build/services/springboot-docs-optimized.js.map +1 -1
- package/build/services/url.d.ts +15 -0
- package/build/services/url.d.ts.map +1 -0
- package/build/services/url.js +40 -0
- package/build/services/url.js.map +1 -0
- package/build/tools/index.d.ts +376 -2
- package/build/tools/index.d.ts.map +1 -1
- package/build/tools/index.js +178 -11
- package/build/tools/index.js.map +1 -1
- package/build/validation.d.ts +7 -0
- package/build/validation.d.ts.map +1 -0
- package/build/validation.js +50 -0
- package/build/validation.js.map +1 -0
- package/build/version.d.ts +3 -0
- package/build/version.d.ts.map +1 -0
- package/build/version.js +6 -0
- package/build/version.js.map +1 -0
- package/package.json +6 -6
- package/build/debug.d.ts +0 -3
- package/build/debug.d.ts.map +0 -1
- package/build/debug.js +0 -292
- package/build/debug.js.map +0 -1
- package/build/services/advanced-features-old.d.ts +0 -45
- package/build/services/advanced-features-old.d.ts.map +0 -1
- package/build/services/advanced-features-old.js +0 -792
- package/build/services/advanced-features-old.js.map +0 -1
- package/build/services/springboot-docs-optimized-old.d.ts +0 -55
- package/build/services/springboot-docs-optimized-old.d.ts.map +0 -1
- package/build/services/springboot-docs-optimized-old.js +0 -588
- package/build/services/springboot-docs-optimized-old.js.map +0 -1
- package/build/services/springboot-docs.d.ts +0 -65
- package/build/services/springboot-docs.d.ts.map +0 -1
- package/build/services/springboot-docs.js +0 -708
- package/build/services/springboot-docs.js.map +0 -1
|
@@ -1,25 +1,128 @@
|
|
|
1
|
-
import fetch from 'node-fetch';
|
|
2
1
|
import * as cheerio from 'cheerio';
|
|
3
|
-
import TurndownService from 'turndown';
|
|
4
2
|
import { CacheService } from './cache.js';
|
|
3
|
+
import { fetchWithRetry, githubRateLimitMessage } from './http.js';
|
|
4
|
+
import { fetchSpringGuidesList } from './guides-list.js';
|
|
5
|
+
import { turndownService, extractContent } from './markdown.js';
|
|
6
|
+
import { absoluteSpringUrl } from './url.js';
|
|
7
|
+
import { springProjectsConfig } from './spring-projects-config.js';
|
|
8
|
+
import { renderDiagnosis } from './diagnosis.js';
|
|
9
|
+
import { filterReleaseBody, normalizeReleaseVersion, isMinorVersion, latestStableOfMinor } from './release-notes.js';
|
|
5
10
|
/**
|
|
6
11
|
* Advanced features service for Spring documentation - uses ONLY real Spring documentation APIs
|
|
7
12
|
* No mock data - everything is fetched from actual Spring documentation sources
|
|
8
13
|
*/
|
|
9
14
|
export class AdvancedFeaturesService {
|
|
10
15
|
cache;
|
|
11
|
-
turndownService;
|
|
12
16
|
baseUrl = 'https://docs.spring.io';
|
|
13
17
|
springProjectsUrl = 'https://spring.io/projects';
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
18
|
+
projectsConfig;
|
|
19
|
+
constructor(cache = new CacheService(), projectsConfig = springProjectsConfig) {
|
|
20
|
+
this.cache = cache;
|
|
21
|
+
this.projectsConfig = projectsConfig;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Get the GitHub release notes of a Spring project (a given version or the latest one),
|
|
25
|
+
* optionally filtered on breaking changes, new features or deprecations.
|
|
26
|
+
*/
|
|
27
|
+
async getReleaseNotes(project, version, focus = 'all') {
|
|
28
|
+
const config = this.projectsConfig.getProject(project);
|
|
29
|
+
if (!config.githubRepo) {
|
|
30
|
+
throw new Error(`Release notes are not available for ${config.displayName}`);
|
|
31
|
+
}
|
|
32
|
+
// Validate before any network call
|
|
33
|
+
const normalized = normalizeReleaseVersion(version);
|
|
34
|
+
const repo = config.githubRepo;
|
|
35
|
+
const tagPrefix = config.githubTagPrefix ?? '';
|
|
36
|
+
const minor = normalized !== undefined && isMinorVersion(normalized);
|
|
37
|
+
const tag = normalized === undefined || minor ? undefined : `${tagPrefix}${normalized}`;
|
|
38
|
+
const cacheKey = `release:${project}:${normalized ?? 'latest'}`;
|
|
39
|
+
let release = this.cache.get(cacheKey);
|
|
40
|
+
if (!release) {
|
|
41
|
+
let data;
|
|
42
|
+
if (minor) {
|
|
43
|
+
data = await this.findLatestOfMinor(repo, normalized, tagPrefix);
|
|
44
|
+
if (!data) {
|
|
45
|
+
throw new Error(`No release found: ${config.displayName} ${normalized}.x (no stable release of that minor). See https://github.com/${repo}/releases`);
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
else {
|
|
49
|
+
const url = tag === undefined
|
|
50
|
+
? `https://api.github.com/repos/${repo}/releases/latest`
|
|
51
|
+
: `https://api.github.com/repos/${repo}/releases/tags/${encodeURIComponent(tag)}`;
|
|
52
|
+
const response = await this.fetchWithRetry(url);
|
|
53
|
+
if (response.status === 404) {
|
|
54
|
+
throw new Error(tag === undefined
|
|
55
|
+
? `No release found for ${config.displayName}`
|
|
56
|
+
: `Release not found: ${config.displayName} ${normalized} (tag "${tag}"). See https://github.com/${repo}/releases`);
|
|
57
|
+
}
|
|
58
|
+
this.assertNotRateLimited(response);
|
|
59
|
+
if (!response.ok) {
|
|
60
|
+
throw new Error(`Failed to fetch release data: ${response.status}`);
|
|
61
|
+
}
|
|
62
|
+
data = await response.json();
|
|
63
|
+
}
|
|
64
|
+
release = {
|
|
65
|
+
tag: data.tag_name,
|
|
66
|
+
name: data.name || null,
|
|
67
|
+
publishedAt: data.published_at || null,
|
|
68
|
+
url: data.html_url,
|
|
69
|
+
prerelease: Boolean(data.prerelease),
|
|
70
|
+
body: data.body ?? null,
|
|
71
|
+
};
|
|
72
|
+
// Only successful responses are cached; "latest" and "X.Y" move, so they keep the short TTL
|
|
73
|
+
if (normalized === undefined || minor) {
|
|
74
|
+
this.cache.set(cacheKey, release);
|
|
75
|
+
}
|
|
76
|
+
else {
|
|
77
|
+
this.cache.setLongTerm(cacheKey, release);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
let output = `# ${config.displayName} ${release.name || release.tag}\n\n`;
|
|
81
|
+
output += `**Released:** ${release.publishedAt ? release.publishedAt.slice(0, 10) : 'unknown'}\n`;
|
|
82
|
+
if (release.prerelease)
|
|
83
|
+
output += `**Pre-release:** yes\n`;
|
|
84
|
+
output += `**Release notes:** ${release.url}\n`;
|
|
85
|
+
output += `**Focus:** ${focus}\n\n`;
|
|
86
|
+
const filtered = filterReleaseBody(release.body, focus);
|
|
87
|
+
if (filtered.trim()) {
|
|
88
|
+
const { content, truncated } = extractContent(filtered, 'full');
|
|
89
|
+
output += content;
|
|
90
|
+
if (truncated) {
|
|
91
|
+
output += `\n\n---\n*Release notes truncated at 50,000 characters. Full notes: ${release.url}*`;
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
else {
|
|
95
|
+
output += `No ${focus} entries found in these release notes. See the full notes: ${release.url}`;
|
|
96
|
+
}
|
|
97
|
+
return output;
|
|
98
|
+
}
|
|
99
|
+
/** Throws a clear error when GitHub refused the request because of its rate limit. */
|
|
100
|
+
assertNotRateLimited(response) {
|
|
101
|
+
if (response.rateLimit || response.status === 403 || response.status === 429) {
|
|
102
|
+
throw new Error(githubRateLimitMessage(response.rateLimit));
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
/** Latest stable release of an "X.Y" minor, paginating the GitHub releases list. */
|
|
106
|
+
async findLatestOfMinor(repo, minor, tagPrefix) {
|
|
107
|
+
const MAX_PAGES = 5;
|
|
108
|
+
let best;
|
|
109
|
+
let seenOlderPage = false;
|
|
110
|
+
for (let page = 1; page <= MAX_PAGES && !seenOlderPage; page++) {
|
|
111
|
+
const response = await this.fetchWithRetry(`https://api.github.com/repos/${repo}/releases?per_page=100&page=${page}`);
|
|
112
|
+
this.assertNotRateLimited(response);
|
|
113
|
+
if (!response.ok) {
|
|
114
|
+
throw new Error(`Failed to fetch release data: ${response.status}`);
|
|
115
|
+
}
|
|
116
|
+
const releases = await response.json();
|
|
117
|
+
if (!Array.isArray(releases) || releases.length === 0)
|
|
118
|
+
break;
|
|
119
|
+
const candidate = latestStableOfMinor(releases, minor, tagPrefix);
|
|
120
|
+
// Once found, a page without any release of that minor means the rest is older
|
|
121
|
+
if (best && !candidate)
|
|
122
|
+
seenOlderPage = true;
|
|
123
|
+
best = latestStableOfMinor(candidate ? [...(best ? [best] : []), candidate] : [], minor, tagPrefix) ?? best;
|
|
124
|
+
}
|
|
125
|
+
return best;
|
|
23
126
|
}
|
|
24
127
|
/**
|
|
25
128
|
* Search across the entire Spring ecosystem using real APIs
|
|
@@ -36,83 +139,44 @@ export class AdvancedFeaturesService {
|
|
|
36
139
|
categories: {}
|
|
37
140
|
};
|
|
38
141
|
try {
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
142
|
+
const searches = [
|
|
143
|
+
['projects', 'projects', () => this.searchProjects(query, limit)],
|
|
144
|
+
['guides', 'guides', () => this.searchGuides(query, limit)],
|
|
145
|
+
['docs', 'documentation', () => this.searchDocumentation(query, limit)],
|
|
146
|
+
['api', 'api', () => this.searchAPI(query, limit)],
|
|
147
|
+
['ai', 'ai', () => this.searchSpringAI(query, limit)],
|
|
148
|
+
];
|
|
149
|
+
const selected = searches.filter(([name]) => scope === 'all' || scope === name);
|
|
150
|
+
// Run the searches concurrently; a failed one is reported, never cached
|
|
151
|
+
const settled = await Promise.allSettled(selected.map(([, , run]) => run()));
|
|
152
|
+
const unavailable = [];
|
|
153
|
+
selected.forEach(([, category], index) => {
|
|
154
|
+
const outcome = settled[index];
|
|
155
|
+
if (outcome.status === 'fulfilled') {
|
|
156
|
+
results.categories[category] = outcome.value;
|
|
157
|
+
}
|
|
158
|
+
else {
|
|
159
|
+
results.categories[category] = [];
|
|
160
|
+
unavailable.push(category);
|
|
161
|
+
console.error(`Ecosystem source "${category}" failed:`, outcome.reason instanceof Error ? outcome.reason.message : outcome.reason);
|
|
162
|
+
}
|
|
163
|
+
});
|
|
164
|
+
if (selected.length > 0 && unavailable.length === selected.length) {
|
|
165
|
+
throw new Error(`Unable to search the Spring ecosystem: all sources failed (${unavailable.join(', ')})`);
|
|
53
166
|
}
|
|
167
|
+
results.unavailable = unavailable;
|
|
54
168
|
results.totalResults = Object.values(results.categories)
|
|
55
169
|
.reduce((total, category) => total + (category?.length || 0), 0);
|
|
56
170
|
const formattedResult = this.formatEcosystemResults(results);
|
|
57
|
-
|
|
171
|
+
if (unavailable.length === 0) {
|
|
172
|
+
this.cache.set(cacheKey, formattedResult);
|
|
173
|
+
}
|
|
58
174
|
return formattedResult;
|
|
59
175
|
}
|
|
60
176
|
catch (error) {
|
|
61
177
|
console.error('Error searching ecosystem:', error);
|
|
62
|
-
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
/**
|
|
66
|
-
* Extract content intelligently - same as in SpringBootDocsServiceOptimized
|
|
67
|
-
*/
|
|
68
|
-
extractIntelligentContent(markdown, detailLevel = 'medium') {
|
|
69
|
-
const limits = {
|
|
70
|
-
'summary': 1500,
|
|
71
|
-
'medium': 4000,
|
|
72
|
-
'full': 8000
|
|
73
|
-
};
|
|
74
|
-
const maxLength = limits[detailLevel] || limits['medium'];
|
|
75
|
-
if (markdown.length <= maxLength)
|
|
76
|
-
return markdown;
|
|
77
|
-
const lines = markdown.split('\n');
|
|
78
|
-
let result = '';
|
|
79
|
-
let inCodeBlock = false;
|
|
80
|
-
let codeBlockContent = '';
|
|
81
|
-
let currentLength = 0;
|
|
82
|
-
for (const line of lines) {
|
|
83
|
-
if (line.trim().startsWith('```')) {
|
|
84
|
-
inCodeBlock = !inCodeBlock;
|
|
85
|
-
if (!inCodeBlock && codeBlockContent) {
|
|
86
|
-
const blockToAdd = codeBlockContent + line + '\n';
|
|
87
|
-
if (currentLength + blockToAdd.length <= maxLength * 0.8) {
|
|
88
|
-
result += blockToAdd;
|
|
89
|
-
currentLength += blockToAdd.length;
|
|
90
|
-
}
|
|
91
|
-
codeBlockContent = '';
|
|
92
|
-
}
|
|
93
|
-
else {
|
|
94
|
-
codeBlockContent = line + '\n';
|
|
95
|
-
}
|
|
96
|
-
continue;
|
|
97
|
-
}
|
|
98
|
-
if (inCodeBlock) {
|
|
99
|
-
codeBlockContent += line + '\n';
|
|
100
|
-
continue;
|
|
101
|
-
}
|
|
102
|
-
if (line.startsWith('#') || line.startsWith('-') || line.startsWith('*') || line.trim().startsWith('>')) {
|
|
103
|
-
if (currentLength + line.length + 1 <= maxLength) {
|
|
104
|
-
result += line + '\n';
|
|
105
|
-
currentLength += line.length + 1;
|
|
106
|
-
}
|
|
107
|
-
}
|
|
108
|
-
else if (line.trim() && currentLength + line.length + 1 <= maxLength) {
|
|
109
|
-
result += line + '\n';
|
|
110
|
-
currentLength += line.length + 1;
|
|
111
|
-
}
|
|
112
|
-
if (currentLength >= maxLength)
|
|
113
|
-
break;
|
|
178
|
+
throw error;
|
|
114
179
|
}
|
|
115
|
-
return result.trim();
|
|
116
180
|
}
|
|
117
181
|
/**
|
|
118
182
|
* Get tutorials by fetching from actual Spring Boot guides
|
|
@@ -138,52 +202,71 @@ export class AdvancedFeaturesService {
|
|
|
138
202
|
if (content.length === 0) {
|
|
139
203
|
throw new Error('No content found in guide');
|
|
140
204
|
}
|
|
141
|
-
const markdown =
|
|
142
|
-
const extractedContent =
|
|
143
|
-
const
|
|
144
|
-
const result = `# ${guide.title}\n\n**Level:** ${level}\n**Detail Level:** ${detailLevel}\n**Source:** ${guide.url}\n\n${extractedContent}${needsTruncation ? '\n\n---\n*Content truncated. Use detail_level="full" for complete tutorial or visit the link above.*' : ''}`;
|
|
205
|
+
const markdown = turndownService.turndown(content.html() || '');
|
|
206
|
+
const { content: extractedContent, truncated } = extractContent(markdown, detailLevel);
|
|
207
|
+
const result = `# ${guide.title}\n\n**Level:** ${level}\n**Detail Level:** ${detailLevel}\n**Source:** ${guide.url}\n\n${extractedContent}${truncated ? (detailLevel === 'full' ? '\n\n---\n*Content truncated at 50,000 characters even in full mode. Visit the link above for the complete tutorial.*' : '\n\n---\n*Content truncated. Use detail_level="full" for complete tutorial or visit the link above.*') : ''}`;
|
|
145
208
|
this.cache.set(cacheKey, result);
|
|
146
209
|
return result;
|
|
147
210
|
}
|
|
148
211
|
catch (error) {
|
|
149
212
|
console.error('Error fetching tutorial:', error);
|
|
150
|
-
|
|
213
|
+
throw error;
|
|
151
214
|
}
|
|
152
215
|
}
|
|
153
216
|
/**
|
|
154
217
|
* Compare Spring Boot versions using real release notes
|
|
155
218
|
*/
|
|
156
219
|
async compareVersions(version1, version2, focus = 'all') {
|
|
157
|
-
const cacheKey =
|
|
220
|
+
const cacheKey = 'versions:' + JSON.stringify([version1, version2, focus]);
|
|
158
221
|
const cached = this.cache.get(cacheKey);
|
|
159
222
|
if (cached)
|
|
160
223
|
return cached;
|
|
161
224
|
try {
|
|
162
|
-
// Fetch release notes from GitHub
|
|
163
|
-
const
|
|
164
|
-
const
|
|
165
|
-
|
|
166
|
-
|
|
225
|
+
// Fetch release notes from GitHub, paginating until both exact tags are found
|
|
226
|
+
const MAX_PAGES = 5;
|
|
227
|
+
const matches = (r, version) => r.tag_name === version || r.tag_name === `v${version}`;
|
|
228
|
+
let release1;
|
|
229
|
+
let release2;
|
|
230
|
+
for (let page = 1; page <= MAX_PAGES && !(release1 && release2); page++) {
|
|
231
|
+
const releaseNotesUrl = `https://api.github.com/repos/spring-projects/spring-boot/releases?per_page=100&page=${page}`;
|
|
232
|
+
const response = await this.fetchWithRetry(releaseNotesUrl);
|
|
233
|
+
this.assertNotRateLimited(response);
|
|
234
|
+
if (!response.ok) {
|
|
235
|
+
throw new Error(`Failed to fetch release data: ${response.status}`);
|
|
236
|
+
}
|
|
237
|
+
const releases = await response.json();
|
|
238
|
+
if (!Array.isArray(releases) || releases.length === 0)
|
|
239
|
+
break;
|
|
240
|
+
release1 = release1 ?? releases.find((r) => matches(r, version1));
|
|
241
|
+
release2 = release2 ?? releases.find((r) => matches(r, version2));
|
|
167
242
|
}
|
|
168
|
-
const releases = await response.json();
|
|
169
|
-
const release1 = releases.find((r) => r.tag_name.includes(version1));
|
|
170
|
-
const release2 = releases.find((r) => r.tag_name.includes(version2));
|
|
171
243
|
if (!release1 || !release2) {
|
|
172
|
-
return `# Version Comparison: ${version1} vs ${version2}\n\nUnable to find release information for one or both versions.\n\nAvailable versions can be found at: https://github.com/spring-projects/spring-boot/releases`;
|
|
244
|
+
return `# Version Comparison: ${version1} vs ${version2}\n\nUnable to find release information for one or both versions. Versions must match a release tag exactly, in the X.Y.Z format (e.g. 3.5.0, not 3.5).\n\nAvailable versions can be found at: https://github.com/spring-projects/spring-boot/releases`;
|
|
173
245
|
}
|
|
246
|
+
const excerpt = (release) => {
|
|
247
|
+
const body = filterReleaseBody(release.body, focus);
|
|
248
|
+
if (!body.trim()) {
|
|
249
|
+
return focus === 'all'
|
|
250
|
+
? ''
|
|
251
|
+
: `No ${focus} entries found in these release notes. See the full notes: ${release.html_url}`;
|
|
252
|
+
}
|
|
253
|
+
return `${body.substring(0, 1000)}...`;
|
|
254
|
+
};
|
|
174
255
|
const result = `# Spring Boot Version Comparison: ${version1} vs ${version2}
|
|
175
256
|
|
|
257
|
+
**Focus:** ${focus}
|
|
258
|
+
|
|
176
259
|
## Version ${version1}
|
|
177
260
|
**Released:** ${new Date(release1.published_at).toLocaleDateString()}
|
|
178
261
|
**Release Notes:** ${release1.html_url}
|
|
179
262
|
|
|
180
|
-
${release1
|
|
263
|
+
${excerpt(release1)}
|
|
181
264
|
|
|
182
265
|
## Version ${version2}
|
|
183
266
|
**Released:** ${new Date(release2.published_at).toLocaleDateString()}
|
|
184
267
|
**Release Notes:** ${release2.html_url}
|
|
185
268
|
|
|
186
|
-
${release2
|
|
269
|
+
${excerpt(release2)}
|
|
187
270
|
|
|
188
271
|
## Migration Recommendations
|
|
189
272
|
1. Review the full release notes at the URLs above
|
|
@@ -197,7 +280,7 @@ For detailed migration guides, visit: https://github.com/spring-projects/spring-
|
|
|
197
280
|
}
|
|
198
281
|
catch (error) {
|
|
199
282
|
console.error('Error comparing versions:', error);
|
|
200
|
-
|
|
283
|
+
throw error;
|
|
201
284
|
}
|
|
202
285
|
}
|
|
203
286
|
/**
|
|
@@ -237,7 +320,7 @@ For detailed migration guides, visit: https://github.com/spring-projects/spring-
|
|
|
237
320
|
throw new Error('No content found in documentation');
|
|
238
321
|
}
|
|
239
322
|
// Convert to markdown and format
|
|
240
|
-
const markdown =
|
|
323
|
+
const markdown = turndownService.turndown(content.html() || '');
|
|
241
324
|
const result = `# Spring Boot ${category.charAt(0).toUpperCase() + category.slice(1)} Best Practices
|
|
242
325
|
|
|
243
326
|
**Experience Level:** ${experienceLevel}
|
|
@@ -251,52 +334,15 @@ For complete documentation, visit: ${docUrl}`;
|
|
|
251
334
|
}
|
|
252
335
|
catch (error) {
|
|
253
336
|
console.error('Error fetching best practices:', error);
|
|
254
|
-
|
|
337
|
+
throw error;
|
|
255
338
|
}
|
|
256
339
|
}
|
|
257
340
|
/**
|
|
258
341
|
* Diagnose issues using Spring Boot documentation
|
|
259
342
|
*/
|
|
260
343
|
async diagnoseIssues(errorMessage, component, stackTrace) {
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
if (cached)
|
|
264
|
-
return cached;
|
|
265
|
-
try {
|
|
266
|
-
// Search for the error in Spring Boot documentation
|
|
267
|
-
const searchQuery = errorMessage.split(' ').slice(0, 3).join(' ');
|
|
268
|
-
const docs = await this.searchDocumentation(searchQuery, 3);
|
|
269
|
-
let result = `# Spring Boot Issue Diagnosis\n\n**Error:** ${errorMessage}\n`;
|
|
270
|
-
if (component) {
|
|
271
|
-
result += `**Component:** ${component}\n`;
|
|
272
|
-
}
|
|
273
|
-
result += `\n## Relevant Documentation\n\n`;
|
|
274
|
-
if (docs.length > 0) {
|
|
275
|
-
docs.forEach((doc, index) => {
|
|
276
|
-
result += `${index + 1}. **${doc.title}**\n ${doc.url}\n\n`;
|
|
277
|
-
});
|
|
278
|
-
}
|
|
279
|
-
else {
|
|
280
|
-
result += `No specific documentation found for this error.\n\n`;
|
|
281
|
-
}
|
|
282
|
-
result += `## General Troubleshooting Steps\n\n`;
|
|
283
|
-
result += `1. Check the Spring Boot documentation: https://docs.spring.io/spring-boot/docs/current/reference/html/\n`;
|
|
284
|
-
result += `2. Search Spring Boot issues: https://github.com/spring-projects/spring-boot/issues\n`;
|
|
285
|
-
result += `3. Enable debug logging: \`logging.level.org.springframework=DEBUG\`\n`;
|
|
286
|
-
result += `4. Check actuator health endpoint: \`/actuator/health\`\n\n`;
|
|
287
|
-
if (stackTrace) {
|
|
288
|
-
result += `## Stack Trace Analysis\n\nFor detailed stack trace analysis, consider:\n`;
|
|
289
|
-
result += `- Looking for the root cause in the stack trace\n`;
|
|
290
|
-
result += `- Checking for configuration issues\n`;
|
|
291
|
-
result += `- Verifying dependency versions\n\n`;
|
|
292
|
-
}
|
|
293
|
-
this.cache.set(cacheKey, result);
|
|
294
|
-
return result;
|
|
295
|
-
}
|
|
296
|
-
catch (error) {
|
|
297
|
-
console.error('Error diagnosing issue:', error);
|
|
298
|
-
return `# Diagnosis Error\n\nUnable to diagnose issue: ${error instanceof Error ? error.message : 'Unknown error'}`;
|
|
299
|
-
}
|
|
344
|
+
// Local analysis: no network call, bounded and deterministic
|
|
345
|
+
return renderDiagnosis({ errorMessage, component, stackTrace });
|
|
300
346
|
}
|
|
301
347
|
// Real implementation methods (no mock data)
|
|
302
348
|
async searchProjects(query, limit) {
|
|
@@ -312,9 +358,8 @@ For complete documentation, visit: ${docUrl}`;
|
|
|
312
358
|
const $project = $(element);
|
|
313
359
|
const name = $project.find('h2, h3, .title, .project-title, .card-title').first().text().trim();
|
|
314
360
|
const description = $project.find('p, .description, .summary, .card-text').first().text().trim();
|
|
315
|
-
const
|
|
316
|
-
if (name && description) {
|
|
317
|
-
const url = link?.startsWith('http') ? link : `https://spring.io${link}`;
|
|
361
|
+
const url = absoluteSpringUrl($project.find('a').first().attr('href'));
|
|
362
|
+
if (name && description && url) {
|
|
318
363
|
if (name.toLowerCase().includes(query.toLowerCase()) ||
|
|
319
364
|
description.toLowerCase().includes(query.toLowerCase())) {
|
|
320
365
|
projects.push({ name, description, url, type: 'project' });
|
|
@@ -325,37 +370,23 @@ For complete documentation, visit: ${docUrl}`;
|
|
|
325
370
|
}
|
|
326
371
|
catch (error) {
|
|
327
372
|
console.error('Error searching projects:', error);
|
|
328
|
-
|
|
373
|
+
throw error;
|
|
329
374
|
}
|
|
330
375
|
}
|
|
331
376
|
async searchGuides(query, limit) {
|
|
332
377
|
try {
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
const $guide = $(element);
|
|
342
|
-
const title = $guide.find('h2, h3, .title, .guide-title, .card-title, a').first().text().trim();
|
|
343
|
-
const description = $guide.find('p, .description, .summary, .card-text').first().text().trim();
|
|
344
|
-
const link = $guide.find('a').first().attr('href');
|
|
345
|
-
const type = $guide.find('.badge, .label, .type').first().text().trim() || 'Guide';
|
|
346
|
-
if (title) {
|
|
347
|
-
const url = link?.startsWith('http') ? link : `https://spring.io${link}`;
|
|
348
|
-
if (title.toLowerCase().includes(query.toLowerCase()) ||
|
|
349
|
-
description.toLowerCase().includes(query.toLowerCase())) {
|
|
350
|
-
guides.push({ title, description: description || 'Spring Boot guide', url, type });
|
|
351
|
-
}
|
|
352
|
-
}
|
|
353
|
-
});
|
|
354
|
-
return guides.slice(0, limit);
|
|
378
|
+
// The /guides HTML is rendered client-side (no links): use the shared page-data list
|
|
379
|
+
const guides = await fetchSpringGuidesList();
|
|
380
|
+
const needle = query.toLowerCase();
|
|
381
|
+
return guides
|
|
382
|
+
.filter(guide => guide.title.toLowerCase().includes(needle) ||
|
|
383
|
+
guide.description.toLowerCase().includes(needle))
|
|
384
|
+
.map(guide => ({ title: guide.title, description: guide.description, url: guide.url, type: 'Guide' }))
|
|
385
|
+
.slice(0, limit);
|
|
355
386
|
}
|
|
356
387
|
catch (error) {
|
|
357
388
|
console.error('Error searching guides:', error);
|
|
358
|
-
|
|
389
|
+
throw error;
|
|
359
390
|
}
|
|
360
391
|
}
|
|
361
392
|
async searchDocumentation(query, limit) {
|
|
@@ -381,7 +412,7 @@ For complete documentation, visit: ${docUrl}`;
|
|
|
381
412
|
}
|
|
382
413
|
catch (error) {
|
|
383
414
|
console.error('Error searching documentation:', error);
|
|
384
|
-
|
|
415
|
+
throw error;
|
|
385
416
|
}
|
|
386
417
|
}
|
|
387
418
|
/**
|
|
@@ -393,8 +424,7 @@ For complete documentation, visit: ${docUrl}`;
|
|
|
393
424
|
const aiDocsUrl = 'https://docs.spring.io/spring-ai/reference/';
|
|
394
425
|
const response = await this.fetchWithRetry(aiDocsUrl);
|
|
395
426
|
if (!response.ok) {
|
|
396
|
-
|
|
397
|
-
return [];
|
|
427
|
+
throw new Error('Failed to fetch Spring AI documentation');
|
|
398
428
|
}
|
|
399
429
|
const html = await response.text();
|
|
400
430
|
const $ = cheerio.load(html);
|
|
@@ -433,7 +463,7 @@ For complete documentation, visit: ${docUrl}`;
|
|
|
433
463
|
}
|
|
434
464
|
catch (error) {
|
|
435
465
|
console.error('Error searching Spring AI documentation:', error);
|
|
436
|
-
|
|
466
|
+
throw error;
|
|
437
467
|
}
|
|
438
468
|
}
|
|
439
469
|
async searchAPI(query, limit) {
|
|
@@ -499,33 +529,13 @@ For complete documentation, visit: ${docUrl}`;
|
|
|
499
529
|
if (results.totalResults === 0) {
|
|
500
530
|
output += `No results found for "${results.query}" in scope "${results.scope}".`;
|
|
501
531
|
}
|
|
532
|
+
if (results.unavailable?.length > 0) {
|
|
533
|
+
output += `\n\n⚠️ Some sources were unavailable: ${results.unavailable.join(', ')}. Results may be incomplete.`;
|
|
534
|
+
}
|
|
502
535
|
return output;
|
|
503
536
|
}
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
const controller = new AbortController();
|
|
507
|
-
const timeoutId = setTimeout(() => controller.abort(), timeout);
|
|
508
|
-
try {
|
|
509
|
-
const response = await fetch(url, {
|
|
510
|
-
signal: controller.signal,
|
|
511
|
-
headers: {
|
|
512
|
-
'User-Agent': 'Spring-Docs-MCP/1.2.4',
|
|
513
|
-
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
|
|
514
|
-
'Accept-Language': 'en-US,en;q=0.9'
|
|
515
|
-
}
|
|
516
|
-
});
|
|
517
|
-
clearTimeout(timeoutId);
|
|
518
|
-
return response;
|
|
519
|
-
}
|
|
520
|
-
catch (error) {
|
|
521
|
-
clearTimeout(timeoutId);
|
|
522
|
-
if (attempt === retries)
|
|
523
|
-
throw error;
|
|
524
|
-
console.error(`Retry ${attempt}/${retries} for ${url}:`, error instanceof Error ? error.message : 'Unknown error');
|
|
525
|
-
await new Promise(resolve => setTimeout(resolve, 1000 * attempt));
|
|
526
|
-
}
|
|
527
|
-
}
|
|
528
|
-
throw new Error('All retry attempts failed');
|
|
537
|
+
fetchWithRetry(url, timeout, retries) {
|
|
538
|
+
return fetchWithRetry(url, timeout, retries);
|
|
529
539
|
}
|
|
530
540
|
}
|
|
531
541
|
//# sourceMappingURL=advanced-features.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"advanced-features.js","sourceRoot":"","sources":["../../src/services/advanced-features.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"advanced-features.js","sourceRoot":"","sources":["../../src/services/advanced-features.ts"],"names":[],"mappings":"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"}
|