UNPKG

@skyramp/mcp

Version:

Skyramp MCP (Model Context Protocol) Server - AI-powered test generation and execution

107 lines (106 loc) 3.24 kB
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(), }), });