UNPKG

@vfarcic/dot-ai

Version:

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

114 lines (113 loc) 5.19 kB
"use strict"; /** * Sessions Endpoint Schemas * * Schemas for the /api/v1/sessions/:sessionId endpoint. * PRD #354: REST API Route Registry with Auto-Generated OpenAPI and Test Fixtures */ Object.defineProperty(exports, "__esModule", { value: true }); exports.RemediationSSEEventSchema = exports.SessionListErrorSchema = exports.SessionListResponseSchema = exports.SessionListDataSchema = exports.SessionSummarySchema = exports.SessionListQuerySchema = exports.SessionRetrievalErrorSchema = exports.SessionNotFoundErrorSchema = exports.SessionResponseSchema = exports.SessionResponseDataSchema = exports.SessionDataSchema = exports.SessionMetadataSchema = void 0; const zod_1 = require("zod"); const common_1 = require("./common"); /** * Session metadata */ exports.SessionMetadataSchema = zod_1.z.object({ id: zod_1.z.string().describe('Session ID'), createdAt: zod_1.z.string().describe('Session creation timestamp'), expiresAt: zod_1.z.string().optional().describe('Session expiration timestamp'), }); /** * Generic session data * Sessions can contain different data based on the tool that created them */ exports.SessionDataSchema = zod_1.z.object({ toolName: zod_1.z.string().optional().describe('Tool that created this session'), intent: zod_1.z.string().optional().describe('User intent for this session'), // Additional fields vary by tool type }).passthrough(); // Allow additional properties /** * Session response data * GET /api/v1/sessions/:sessionId */ exports.SessionResponseDataSchema = zod_1.z.object({ id: zod_1.z.string().describe('Session ID'), data: exports.SessionDataSchema.describe('Session data'), createdAt: zod_1.z.string().optional().describe('Session creation timestamp'), expiresAt: zod_1.z.string().optional().describe('Session expiration timestamp'), }); exports.SessionResponseSchema = (0, common_1.createSuccessResponseSchema)(exports.SessionResponseDataSchema); /** * Session endpoint error schemas */ exports.SessionNotFoundErrorSchema = common_1.NotFoundErrorSchema.extend({ error: zod_1.z.object({ code: zod_1.z.literal('SESSION_NOT_FOUND'), message: zod_1.z.string(), details: zod_1.z.any().optional(), }), }); exports.SessionRetrievalErrorSchema = common_1.InternalServerErrorSchema.extend({ error: zod_1.z.object({ code: zod_1.z.literal('SESSION_RETRIEVAL_ERROR'), message: zod_1.z.string(), details: zod_1.z.any().optional(), }), }); /** * Session List Endpoint Schemas * GET /api/v1/sessions * PRD #425: Session List API and SSE Streaming */ /** * Query parameters for listing sessions */ exports.SessionListQuerySchema = zod_1.z.object({ status: zod_1.z.string().optional().describe('Filter by session status (e.g., analysis_complete, failed, investigating)'), limit: zod_1.z.coerce.number().int().min(1).max(200).default(50).describe('Max results per page'), offset: zod_1.z.coerce.number().int().min(0).default(0).describe('Pagination offset'), }); /** * Session summary (no finalAnalysis to keep responses lean) */ exports.SessionSummarySchema = zod_1.z.object({ sessionId: zod_1.z.string().describe('Session ID'), status: zod_1.z.string().optional().describe('Session status'), issue: zod_1.z.string().optional().describe('Issue being investigated'), mode: zod_1.z.string().optional().describe('Remediation mode (manual/automatic)'), toolName: zod_1.z.string().optional().describe('Tool that created this session'), createdAt: zod_1.z.string().describe('Session creation timestamp'), updatedAt: zod_1.z.string().describe('Session last update timestamp'), }); /** * Session list response data */ exports.SessionListDataSchema = zod_1.z.object({ sessions: zod_1.z.array(exports.SessionSummarySchema).describe('List of session summaries'), total: zod_1.z.number().describe('Total number of sessions matching the filter'), limit: zod_1.z.number().describe('Max results per page'), offset: zod_1.z.number().describe('Pagination offset'), }); exports.SessionListResponseSchema = (0, common_1.createSuccessResponseSchema)(exports.SessionListDataSchema); exports.SessionListErrorSchema = common_1.InternalServerErrorSchema.extend({ error: zod_1.z.object({ code: zod_1.z.literal('SESSION_LIST_ERROR'), message: zod_1.z.string(), details: zod_1.z.any().optional(), }), }); /** * SSE Streaming Endpoint Schema * GET /api/v1/events/remediations * PRD #425: Real-time remediation session events via Server-Sent Events */ exports.RemediationSSEEventSchema = zod_1.z.object({ event: zod_1.z.enum(['session-created', 'session-updated']).describe('SSE event type'), data: zod_1.z.object({ sessionId: zod_1.z.string().describe('Session ID'), toolName: zod_1.z.string().describe('Tool that owns the session'), status: zod_1.z.string().describe('Current session status'), issue: zod_1.z.string().describe('Issue being investigated'), timestamp: zod_1.z.string().describe('Event timestamp'), }), }).describe('SSE event for remediation session changes (Content-Type: text/event-stream)');