UNPKG

@vfarcic/dot-ai

Version:

AI-powered development productivity platform that enhances software development workflows through intelligent automation and AI-driven assistance

118 lines (117 loc) 4.08 kB
"use strict"; /** * Common REST API Response Schemas * * Base schemas used by all REST API endpoints. * PRD #354: REST API Route Registry with Auto-Generated OpenAPI and Test Fixtures */ Object.defineProperty(exports, "__esModule", { value: true }); exports.InternalServerErrorSchema = exports.ServiceUnavailableErrorSchema = exports.MethodNotAllowedErrorSchema = exports.BadRequestErrorSchema = exports.NotFoundErrorSchema = exports.ErrorResponseSchema = exports.RestApiResponseSchema = exports.ErrorDetailsSchema = exports.MetaSchema = void 0; exports.createSuccessResponseSchema = createSuccessResponseSchema; const zod_1 = require("zod"); /** * Response metadata schema */ exports.MetaSchema = zod_1.z.object({ timestamp: zod_1.z.string().describe('ISO 8601 timestamp of the response'), requestId: zod_1.z .string() .optional() .describe('Unique request identifier for tracing'), version: zod_1.z.string().describe('API version'), }); /** * Error details schema */ exports.ErrorDetailsSchema = zod_1.z.object({ code: zod_1.z.string().describe('Machine-readable error code'), message: zod_1.z.string().describe('Human-readable error message'), details: zod_1.z.any().optional().describe('Additional error context'), }); /** * Base REST API response schema * All endpoint responses extend this structure */ exports.RestApiResponseSchema = zod_1.z.object({ success: zod_1.z.boolean().describe('Whether the request was successful'), data: zod_1.z.any().optional().describe('Response payload'), error: exports.ErrorDetailsSchema.optional().describe('Error information if success is false'), meta: exports.MetaSchema.optional().describe('Response metadata'), }); /** * Success response factory - creates a typed success response schema */ function createSuccessResponseSchema(dataSchema) { return zod_1.z.object({ success: zod_1.z.literal(true), data: dataSchema, meta: exports.MetaSchema.optional(), }); } /** * Error response schema for failed requests */ exports.ErrorResponseSchema = zod_1.z.object({ success: zod_1.z.literal(false), error: exports.ErrorDetailsSchema, meta: exports.MetaSchema.optional(), }); /** * Common error response schemas by HTTP status */ exports.NotFoundErrorSchema = exports.ErrorResponseSchema.extend({ error: exports.ErrorDetailsSchema.extend({ code: zod_1.z.literal('NOT_FOUND'), }), }); exports.BadRequestErrorSchema = exports.ErrorResponseSchema.extend({ error: exports.ErrorDetailsSchema.extend({ code: zod_1.z.enum([ 'BAD_REQUEST', 'INVALID_REQUEST', 'MISSING_PARAMETER', 'INVALID_PARAMETER', 'VALIDATION_ERROR', ]), }), }); exports.MethodNotAllowedErrorSchema = exports.ErrorResponseSchema.extend({ error: exports.ErrorDetailsSchema.extend({ code: zod_1.z.literal('METHOD_NOT_ALLOWED'), }), }); exports.ServiceUnavailableErrorSchema = exports.ErrorResponseSchema.extend({ error: exports.ErrorDetailsSchema.extend({ code: zod_1.z.enum([ 'AI_NOT_CONFIGURED', 'PLUGIN_UNAVAILABLE', 'VECTOR_DB_UNAVAILABLE', 'SERVICE_UNAVAILABLE', ]), }), }); exports.InternalServerErrorSchema = exports.ErrorResponseSchema.extend({ error: exports.ErrorDetailsSchema.extend({ code: zod_1.z.enum([ 'INTERNAL_ERROR', 'DISCOVERY_ERROR', 'EXECUTION_ERROR', 'OPENAPI_ERROR', 'SYNC_ERROR', 'RESOURCE_KINDS_ERROR', 'SEARCH_ERROR', 'LIST_RESOURCES_ERROR', 'NAMESPACES_ERROR', 'RESOURCE_ERROR', 'EVENTS_ERROR', 'LOGS_ERROR', 'PROMPTS_LIST_ERROR', 'PROMPT_GET_ERROR', 'VISUALIZATION_ERROR', 'SESSION_RETRIEVAL_ERROR', 'MIGRATION_ERROR', 'PROMPTS_CACHE_REFRESH_ERROR', 'USER_MANAGEMENT_ERROR', ]), }), });