import { MavenCoordinate } from '../types.js';
import { fetchMavenMetadata, extractVersions } from '../maven-client.js';
import { filterStableVersions, compareVersions } from '../version-utils.js';
export const schema = {
name: 'get_latest_stable_version',
description:
'Get the latest stable version for a Maven dependency (excludes SNAPSHOT, alpha, beta, RC, milestone, etc.)',
inputSchema: {
type: 'object',
properties: {
dependency: {
type: 'string',
description:
'Maven coordinate in format "groupId:artifactId" (e.g., "org.springframework:spring-core")',
},
},
required: ['dependency'],
},
};
export async function handler(coord: MavenCoordinate) {
const metadata = await fetchMavenMetadata(coord);
const allVersions = extractVersions(metadata);
if (allVersions.length === 0) {
throw new Error(`No versions found for ${coord.groupId}:${coord.artifactId}`);
}
const stableVersions = filterStableVersions(allVersions);
if (stableVersions.length === 0) {
throw new Error(
`No stable versions found for ${coord.groupId}:${coord.artifactId}. ` +
`All ${allVersions.length} available versions are pre-release.`
);
}
// Sort and get the latest
const sortedVersions = stableVersions.sort(compareVersions);
const latestStable = sortedVersions[sortedVersions.length - 1];
return {
content: [
{
type: 'text',
text: latestStable,
},
],
};
}