@skyramp/mcp
Version:
Skyramp MCP (Model Context Protocol) Server - AI-powered test generation and execution
107 lines (106 loc) • 3.24 kB
JavaScript
import { z } from "zod";
// Zod schemas for validation
export const analysisMetadataSchema = z.object({
repositoryName: z.string(),
analysisDate: z.string(),
scanDepth: z.enum(["quick", "full"]),
});
export const projectClassificationSchema = z.object({
projectType: z.enum([
"rest-api",
"frontend",
"full-stack",
"microservices",
"library",
"cli",
"other",
]),
primaryLanguage: z.string(),
primaryFramework: z.string(),
deploymentPattern: z.enum([
"microservices",
"full-stack",
"containerized-monolith",
"traditional",
"unknown",
]),
});
export const repositoryAnalysisSchema = z.object({
metadata: analysisMetadataSchema,
projectClassification: projectClassificationSchema,
technologyStack: z.object({
languages: z.array(z.string()),
frameworks: z.array(z.string()),
runtime: z.string(),
keyDependencies: z.array(z.object({
name: z.string(),
version: z.string(),
purpose: z.string(),
})),
}),
businessContext: z.object({
mainPurpose: z.string(),
userFlows: z.array(z.string()),
dataFlows: z.array(z.string()),
integrationPatterns: z.array(z.string()),
}),
artifacts: z.object({
openApiSpecs: z.array(z.object({
path: z.string(),
version: z.string(),
endpointCount: z.number(),
baseUrl: z.string(),
authType: z.string(),
})),
playwrightRecordings: z.array(z.object({
path: z.string(),
description: z.string(),
})),
traceFiles: z.array(z.object({
path: z.string(),
format: z.string(),
analyzed: z.boolean().optional(),
userFlows: z.array(z.string()).optional(),
})),
notFound: z.array(z.string()),
}),
apiEndpoints: z.object({
totalCount: z.number(),
baseUrl: z.string(),
endpoints: z.array(z.object({
path: z.string(),
method: z.string(),
resourceGroup: z.string(),
authRequired: z.boolean(),
sourceFile: z.string().optional(),
})),
}),
authentication: z.object({
method: z.enum(["bearer", "api-key", "oauth2", "basic", "jwt", "none"]),
configLocation: z.string(),
envVarsRequired: z.array(z.string()),
setupExample: z.string(),
}),
infrastructure: z.object({
isContainerized: z.boolean(),
hasDockerCompose: z.boolean(),
hasKubernetes: z.boolean(),
hasCiCd: z.boolean(),
ciCdPlatform: z.string().optional(),
}),
existingTests: z.object({
frameworks: z.array(z.string()),
coverage: z.object({
unit: z.number(),
integration: z.number(),
e2e: z.number(),
ui: z.number(),
load: z.number(),
contract: z.number(),
smoke: z.number(),
}),
testLocations: z.record(z.string()),
hasCoverageReports: z.boolean(),
estimatedCoverage: z.number().optional(),
}),
});