adapter.schemas.ts•2.05 kB
import { z } from 'zod';
export const AdapterConfigSchema = z.object({
type: z.enum(['vsdbg', 'netcoredbg', 'vscode-js-debug', 'debugpy', 'dap']),
name: z.string(),
version: z.string(),
path: z.string(),
command: z.array(z.string()),
env: z.record(z.string()).optional(),
timeout: z.number().optional(),
capabilities: z.record(z.string(), z.any()).optional(),
language: z.enum(['csharp', 'nodejs', 'typescript', 'python', 'dart']),
windows: z.object({
exePath: z.string(),
args: z.array(z.string()),
requiredPaths: z.array(z.string()),
versionRequirements: z.record(z.string(), z.any()),
installHints: z.array(z.string()),
}),
});
export const AdapterDiscoverySchema = z.object({
adapters: z.array(AdapterConfigSchema),
errors: z.array(
z.object({
adapter: z.string(),
error: z.string(),
suggestion: z.string(),
})
),
missingAdapters: z.array(z.string()),
foundAdapters: z.array(z.string()),
});
export const AdapterHealthCheckSchema = z.object({
adapter: z.string(),
status: z.enum(['healthy', 'unhealthy', 'timeout', 'error']),
message: z.string(),
details: z.any().optional(),
lastCheck: z.number(),
});
export const AdapterSessionSchema = z.object({
sessionId: z.string(),
adapter: z.string(),
processId: z.number().optional(),
debuggerProcess: z.any().optional(),
capabilities: z.record(z.string(), z.any()),
startTime: z.number(),
lastActivity: z.number(),
});
export const AdapterErrorSchema = z.object({
code: z.string(),
message: z.string(),
details: z.any().optional(),
adapter: z.string(),
timestamp: z.number(),
severity: z.enum(['info', 'warning', 'error', 'critical']),
});
export type AdapterConfig = z.infer<typeof AdapterConfigSchema>;
export type AdapterDiscovery = z.infer<typeof AdapterDiscoverySchema>;
export type AdapterHealthCheck = z.infer<typeof AdapterHealthCheckSchema>;
export type AdapterSession = z.infer<typeof AdapterSessionSchema>;
export type AdapterError = z.infer<typeof AdapterErrorSchema>;