From e75f90ceab73af87610a146a637132f62ffb9c6e Mon Sep 17 00:00:00 2001 From: dal Date: Fri, 8 Aug 2025 13:00:20 -0600 Subject: [PATCH] refactor: update dashboard types and schemas for improved validation - Removed unused import for `createMetricsRawLlmMessageEntry` in visualization tools. - Introduced Zod schemas for `Dashboard` and `DashboardConfig` to enhance type validation and structure. - Cleaned up the interface definitions for better clarity and maintainability. These changes improve the robustness of the dashboard configuration and streamline the codebase. --- .../create-metrics-execute.ts | 1 - .../src/dashboards/dashboard.types.ts | 63 ++++++++++++------- 2 files changed, 39 insertions(+), 25 deletions(-) diff --git a/packages/ai/src/tools/visualization-tools/metrics/create-metrics-tool/create-metrics-execute.ts b/packages/ai/src/tools/visualization-tools/metrics/create-metrics-tool/create-metrics-execute.ts index 80dd80c2f..b9f11e438 100644 --- a/packages/ai/src/tools/visualization-tools/metrics/create-metrics-tool/create-metrics-execute.ts +++ b/packages/ai/src/tools/visualization-tools/metrics/create-metrics-tool/create-metrics-execute.ts @@ -22,7 +22,6 @@ import type { CreateMetricsState, } from './create-metrics-tool'; import { - createMetricsRawLlmMessageEntry, createMetricsReasoningMessage, createMetricsResponseMessage, } from './helpers/create-metrics-transform-helper'; diff --git a/packages/server-shared/src/dashboards/dashboard.types.ts b/packages/server-shared/src/dashboards/dashboard.types.ts index 920330cfd..b67e91b76 100644 --- a/packages/server-shared/src/dashboards/dashboard.types.ts +++ b/packages/server-shared/src/dashboards/dashboard.types.ts @@ -1,26 +1,41 @@ -import type { VerificationStatus } from '../share'; +import { z } from 'zod'; +import { VerificationStatusSchema } from '../share'; -export interface Dashboard { - config: DashboardConfig; - created_at: string; - created_by: string; - deleted_at: string | null; - description: string | null; - id: string; - name: string; - updated_at: string | null; - updated_by: string; - status: VerificationStatus; - version_number: number; - file: string; //yaml file - file_name: string; -} +// Dashboard Config Schema +export const DashboardConfigSchema = z.object({ + rows: z + .array( + z.object({ + columnSizes: z.array(z.number().min(1).max(12)).optional(), // columns sizes 1 - 12. MUST add up to 12 + rowHeight: z.number().optional(), // pixel based! + id: z.string(), + items: z.array( + z.object({ + id: z.string(), + }) + ), + }) + ) + .optional(), +}); -export interface DashboardConfig { - rows?: { - columnSizes?: number[]; //columns sizes 1 - 12. MUST add up to 12 - rowHeight?: number; //pixel based! - id: string; - items: { id: string }[]; - }[]; -} +// Dashboard Schema +export const DashboardSchema = z.object({ + config: DashboardConfigSchema, + created_at: z.string(), + created_by: z.string(), + deleted_at: z.string().nullable(), + description: z.string().nullable(), + id: z.string(), + name: z.string(), + updated_at: z.string().nullable(), + updated_by: z.string(), + status: VerificationStatusSchema, + version_number: z.number(), + file: z.string(), // yaml file + file_name: z.string(), +}); + +// Export inferred types +export type DashboardConfig = z.infer; +export type Dashboard = z.infer;