UNPKG

@vfarcic/dot-ai

Version:

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

135 lines (134 loc) 5.53 kB
"use strict"; /** * Visualization Response Schemas * * Schemas for the /api/v1/visualize/:sessionId endpoint. * PRD #354: REST API Route Registry with Auto-Generated OpenAPI and Test Fixtures */ Object.defineProperty(exports, "__esModule", { value: true }); exports.VisualizationInternalErrorSchema = exports.VisualizationServiceUnavailableErrorSchema = exports.VisualizationNotFoundErrorSchema = exports.VisualizationResponseSchema = exports.VisualizationResponseDataSchema = exports.VisualizationSchema = exports.VisualizationContentSchema = exports.BarChartContentSchema = exports.BarChartDataItemSchema = exports.DiffContentSchema = exports.CardsContentSchema = exports.CardItemSchema = exports.TableContentSchema = exports.CodeContentSchema = exports.VisualizationTypeSchema = void 0; const zod_1 = require("zod"); const common_1 = require("./common"); /** * Visualization types supported by the API * PRD #320: Added 'diff' type for before/after comparisons * PRD #328: Added 'bar-chart' type for metrics visualization */ exports.VisualizationTypeSchema = zod_1.z.enum([ 'mermaid', 'cards', 'code', 'table', 'diff', 'bar-chart', ]); /** * Code visualization content */ exports.CodeContentSchema = zod_1.z.object({ language: zod_1.z.string().describe('Programming language for syntax highlighting'), code: zod_1.z.string().describe('Code content'), }); /** * Table visualization content */ exports.TableContentSchema = zod_1.z.object({ headers: zod_1.z.array(zod_1.z.string()).describe('Column headers'), rows: zod_1.z.array(zod_1.z.array(zod_1.z.string())).describe('Table rows'), }); /** * Card item in cards visualization */ exports.CardItemSchema = zod_1.z.object({ id: zod_1.z.string().describe('Unique card identifier'), title: zod_1.z.string().describe('Card title'), description: zod_1.z.string().optional().describe('Card description'), tags: zod_1.z.array(zod_1.z.string()).optional().describe('Tags/labels for the card'), }); /** * Cards visualization content */ exports.CardsContentSchema = zod_1.z.array(exports.CardItemSchema); /** * Diff visualization content (PRD #320) */ exports.DiffContentSchema = zod_1.z.object({ before: exports.CodeContentSchema.describe('Code before changes'), after: exports.CodeContentSchema.describe('Code after changes'), }); /** * Bar chart data item (PRD #328) */ exports.BarChartDataItemSchema = zod_1.z.object({ label: zod_1.z.string().describe('Data point label (e.g., "node-1", "kube-system")'), value: zod_1.z.number().describe('Numeric value'), max: zod_1.z.number().optional().describe('Maximum value for percentage calculation'), status: zod_1.z.enum(['error', 'warning', 'ok']).optional().describe('Status for color-coding'), }); /** * Bar chart visualization content (PRD #328) */ exports.BarChartContentSchema = zod_1.z.object({ data: zod_1.z.array(exports.BarChartDataItemSchema).describe('Chart data points'), unit: zod_1.z.string().optional().describe('Unit label (e.g., "Gi", "cores", "%")'), orientation: zod_1.z.enum(['horizontal', 'vertical']).optional().describe('Chart orientation'), }); /** * Visualization content union type * Content varies based on visualization type */ exports.VisualizationContentSchema = zod_1.z.union([ zod_1.z.string(), // mermaid diagram code exports.CodeContentSchema, // code block exports.TableContentSchema, // table exports.CardsContentSchema, // array of cards exports.DiffContentSchema, // diff view exports.BarChartContentSchema, // bar chart ]); /** * Individual visualization item */ exports.VisualizationSchema = zod_1.z.object({ id: zod_1.z.string().describe('Unique visualization identifier'), label: zod_1.z.string().describe('Display label'), type: exports.VisualizationTypeSchema.describe('Visualization type'), content: exports.VisualizationContentSchema.describe('Visualization content (varies by type)'), }); /** * Visualization endpoint response data * PRD #320: Added toolsUsed for test validation */ exports.VisualizationResponseDataSchema = zod_1.z.object({ title: zod_1.z.string().describe('Title of the visualization'), visualizations: zod_1.z.array(exports.VisualizationSchema).describe('Array of visualizations'), insights: zod_1.z.array(zod_1.z.string()).describe('AI-generated insights about the data'), toolsUsed: zod_1.z.array(zod_1.z.string()).optional().describe('Tools called during visualization generation'), }); /** * Full visualization endpoint response */ exports.VisualizationResponseSchema = (0, common_1.createSuccessResponseSchema)(exports.VisualizationResponseDataSchema); /** * Visualization endpoint error responses */ exports.VisualizationNotFoundErrorSchema = 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.VisualizationServiceUnavailableErrorSchema = common_1.ServiceUnavailableErrorSchema.extend({ error: zod_1.z.object({ code: zod_1.z.literal('AI_NOT_CONFIGURED'), message: zod_1.z.string(), details: zod_1.z.any().optional(), }), }); exports.VisualizationInternalErrorSchema = common_1.InternalServerErrorSchema.extend({ error: zod_1.z.object({ code: zod_1.z.literal('VISUALIZATION_ERROR'), message: zod_1.z.string(), details: zod_1.z.any().optional(), }), });