/** * Recording Schemas * * Shared Zod validation schemas for session recording and playback. * Extracted from session-recorder.ts and session-player.ts to prevent duplication. * * @since v1.36.0 */ import { z } from 'zod'; /** * Safe recording ID pattern - only allows: rec_[a-z0-9_]+ * This prevents path traversal attacks via malicious recording IDs */ export declare const SAFE_RECORDING_ID_PATTERN: RegExp; /** * Tier schema for user subscription levels */ export declare const TierSchema: z.ZodEnum<["free", "plus", "pro", "max"]>; /** * Application state schema */ export declare const AppStateSchema: z.ZodObject<{ currentView: z.ZodString; selectedIndex: z.ZodNumber; tier: z.ZodEnum<["free", "plus", "pro", "max"]>; isAuthenticated: z.ZodBoolean; showHelp: z.ZodBoolean; showCommandPalette: z.ZodBoolean; showDebugPanel: z.ZodBoolean; showQuickNote: z.ZodBoolean; isRecording: z.ZodBoolean; markerCount: z.ZodNumber; terminalWidth: z.ZodNumber; terminalHeight: z.ZodNumber; }, "strip", z.ZodTypeAny, { tier: "free" | "plus" | "pro" | "max"; showHelp: boolean; isRecording: boolean; isAuthenticated: boolean; selectedIndex: number; terminalWidth: number; showCommandPalette: boolean; currentView: string; showDebugPanel: boolean; showQuickNote: boolean; markerCount: number; terminalHeight: number; }, { tier: "free" | "plus" | "pro" | "max"; showHelp: boolean; isRecording: boolean; isAuthenticated: boolean; selectedIndex: number; terminalWidth: number; showCommandPalette: boolean; currentView: string; showDebugPanel: boolean; showQuickNote: boolean; markerCount: number; terminalHeight: number; }>; /** * Recording metadata schema */ export declare const RecordingMetadataSchema: z.ZodObject<{ version: z.ZodString; tier: z.ZodEnum<["free", "plus", "pro", "max"]>; terminalSize: z.ZodObject<{ width: z.ZodNumber; height: z.ZodNumber; }, "strip", z.ZodTypeAny, { width: number; height: number; }, { width: number; height: number; }>; platform: z.ZodString; nodeVersion: z.ZodString; }, "strip", z.ZodTypeAny, { tier: "free" | "plus" | "pro" | "max"; version: string; platform: string; terminalSize: { width: number; height: number; }; nodeVersion: string; }, { tier: "free" | "plus" | "pro" | "max"; version: string; platform: string; terminalSize: { width: number; height: number; }; nodeVersion: string; }>; /** * Recorded event schema */ export declare const RecordedEventSchema: z.ZodObject<{ timestamp: z.ZodNumber; type: z.ZodString; data: z.ZodUnknown; stateBefore: z.ZodOptional; selectedIndex: z.ZodOptional; tier: z.ZodOptional>; isAuthenticated: z.ZodOptional; showHelp: z.ZodOptional; showCommandPalette: z.ZodOptional; showDebugPanel: z.ZodOptional; showQuickNote: z.ZodOptional; isRecording: z.ZodOptional; markerCount: z.ZodOptional; terminalWidth: z.ZodOptional; terminalHeight: z.ZodOptional; }, "strip", z.ZodTypeAny, { tier?: "free" | "plus" | "pro" | "max" | undefined; showHelp?: boolean | undefined; isRecording?: boolean | undefined; isAuthenticated?: boolean | undefined; selectedIndex?: number | undefined; terminalWidth?: number | undefined; showCommandPalette?: boolean | undefined; currentView?: string | undefined; showDebugPanel?: boolean | undefined; showQuickNote?: boolean | undefined; markerCount?: number | undefined; terminalHeight?: number | undefined; }, { tier?: "free" | "plus" | "pro" | "max" | undefined; showHelp?: boolean | undefined; isRecording?: boolean | undefined; isAuthenticated?: boolean | undefined; selectedIndex?: number | undefined; terminalWidth?: number | undefined; showCommandPalette?: boolean | undefined; currentView?: string | undefined; showDebugPanel?: boolean | undefined; showQuickNote?: boolean | undefined; markerCount?: number | undefined; terminalHeight?: number | undefined; }>>; stateAfter: z.ZodOptional; selectedIndex: z.ZodOptional; tier: z.ZodOptional>; isAuthenticated: z.ZodOptional; showHelp: z.ZodOptional; showCommandPalette: z.ZodOptional; showDebugPanel: z.ZodOptional; showQuickNote: z.ZodOptional; isRecording: z.ZodOptional; markerCount: z.ZodOptional; terminalWidth: z.ZodOptional; terminalHeight: z.ZodOptional; }, "strip", z.ZodTypeAny, { tier?: "free" | "plus" | "pro" | "max" | undefined; showHelp?: boolean | undefined; isRecording?: boolean | undefined; isAuthenticated?: boolean | undefined; selectedIndex?: number | undefined; terminalWidth?: number | undefined; showCommandPalette?: boolean | undefined; currentView?: string | undefined; showDebugPanel?: boolean | undefined; showQuickNote?: boolean | undefined; markerCount?: number | undefined; terminalHeight?: number | undefined; }, { tier?: "free" | "plus" | "pro" | "max" | undefined; showHelp?: boolean | undefined; isRecording?: boolean | undefined; isAuthenticated?: boolean | undefined; selectedIndex?: number | undefined; terminalWidth?: number | undefined; showCommandPalette?: boolean | undefined; currentView?: string | undefined; showDebugPanel?: boolean | undefined; showQuickNote?: boolean | undefined; markerCount?: number | undefined; terminalHeight?: number | undefined; }>>; }, "strip", z.ZodTypeAny, { type: string; timestamp: number; data?: unknown; stateBefore?: { tier?: "free" | "plus" | "pro" | "max" | undefined; showHelp?: boolean | undefined; isRecording?: boolean | undefined; isAuthenticated?: boolean | undefined; selectedIndex?: number | undefined; terminalWidth?: number | undefined; showCommandPalette?: boolean | undefined; currentView?: string | undefined; showDebugPanel?: boolean | undefined; showQuickNote?: boolean | undefined; markerCount?: number | undefined; terminalHeight?: number | undefined; } | undefined; stateAfter?: { tier?: "free" | "plus" | "pro" | "max" | undefined; showHelp?: boolean | undefined; isRecording?: boolean | undefined; isAuthenticated?: boolean | undefined; selectedIndex?: number | undefined; terminalWidth?: number | undefined; showCommandPalette?: boolean | undefined; currentView?: string | undefined; showDebugPanel?: boolean | undefined; showQuickNote?: boolean | undefined; markerCount?: number | undefined; terminalHeight?: number | undefined; } | undefined; }, { type: string; timestamp: number; data?: unknown; stateBefore?: { tier?: "free" | "plus" | "pro" | "max" | undefined; showHelp?: boolean | undefined; isRecording?: boolean | undefined; isAuthenticated?: boolean | undefined; selectedIndex?: number | undefined; terminalWidth?: number | undefined; showCommandPalette?: boolean | undefined; currentView?: string | undefined; showDebugPanel?: boolean | undefined; showQuickNote?: boolean | undefined; markerCount?: number | undefined; terminalHeight?: number | undefined; } | undefined; stateAfter?: { tier?: "free" | "plus" | "pro" | "max" | undefined; showHelp?: boolean | undefined; isRecording?: boolean | undefined; isAuthenticated?: boolean | undefined; selectedIndex?: number | undefined; terminalWidth?: number | undefined; showCommandPalette?: boolean | undefined; currentView?: string | undefined; showDebugPanel?: boolean | undefined; showQuickNote?: boolean | undefined; markerCount?: number | undefined; terminalHeight?: number | undefined; } | undefined; }>; /** * Full recording schema */ export declare const RecordingSchema: z.ZodObject<{ id: z.ZodString; name: z.ZodString; description: z.ZodOptional; createdAt: z.ZodUnion<[z.ZodString, z.ZodString]>; duration: z.ZodNumber; events: z.ZodArray; selectedIndex: z.ZodOptional; tier: z.ZodOptional>; isAuthenticated: z.ZodOptional; showHelp: z.ZodOptional; showCommandPalette: z.ZodOptional; showDebugPanel: z.ZodOptional; showQuickNote: z.ZodOptional; isRecording: z.ZodOptional; markerCount: z.ZodOptional; terminalWidth: z.ZodOptional; terminalHeight: z.ZodOptional; }, "strip", z.ZodTypeAny, { tier?: "free" | "plus" | "pro" | "max" | undefined; showHelp?: boolean | undefined; isRecording?: boolean | undefined; isAuthenticated?: boolean | undefined; selectedIndex?: number | undefined; terminalWidth?: number | undefined; showCommandPalette?: boolean | undefined; currentView?: string | undefined; showDebugPanel?: boolean | undefined; showQuickNote?: boolean | undefined; markerCount?: number | undefined; terminalHeight?: number | undefined; }, { tier?: "free" | "plus" | "pro" | "max" | undefined; showHelp?: boolean | undefined; isRecording?: boolean | undefined; isAuthenticated?: boolean | undefined; selectedIndex?: number | undefined; terminalWidth?: number | undefined; showCommandPalette?: boolean | undefined; currentView?: string | undefined; showDebugPanel?: boolean | undefined; showQuickNote?: boolean | undefined; markerCount?: number | undefined; terminalHeight?: number | undefined; }>>; stateAfter: z.ZodOptional; selectedIndex: z.ZodOptional; tier: z.ZodOptional>; isAuthenticated: z.ZodOptional; showHelp: z.ZodOptional; showCommandPalette: z.ZodOptional; showDebugPanel: z.ZodOptional; showQuickNote: z.ZodOptional; isRecording: z.ZodOptional; markerCount: z.ZodOptional; terminalWidth: z.ZodOptional; terminalHeight: z.ZodOptional; }, "strip", z.ZodTypeAny, { tier?: "free" | "plus" | "pro" | "max" | undefined; showHelp?: boolean | undefined; isRecording?: boolean | undefined; isAuthenticated?: boolean | undefined; selectedIndex?: number | undefined; terminalWidth?: number | undefined; showCommandPalette?: boolean | undefined; currentView?: string | undefined; showDebugPanel?: boolean | undefined; showQuickNote?: boolean | undefined; markerCount?: number | undefined; terminalHeight?: number | undefined; }, { tier?: "free" | "plus" | "pro" | "max" | undefined; showHelp?: boolean | undefined; isRecording?: boolean | undefined; isAuthenticated?: boolean | undefined; selectedIndex?: number | undefined; terminalWidth?: number | undefined; showCommandPalette?: boolean | undefined; currentView?: string | undefined; showDebugPanel?: boolean | undefined; showQuickNote?: boolean | undefined; markerCount?: number | undefined; terminalHeight?: number | undefined; }>>; }, "strip", z.ZodTypeAny, { type: string; timestamp: number; data?: unknown; stateBefore?: { tier?: "free" | "plus" | "pro" | "max" | undefined; showHelp?: boolean | undefined; isRecording?: boolean | undefined; isAuthenticated?: boolean | undefined; selectedIndex?: number | undefined; terminalWidth?: number | undefined; showCommandPalette?: boolean | undefined; currentView?: string | undefined; showDebugPanel?: boolean | undefined; showQuickNote?: boolean | undefined; markerCount?: number | undefined; terminalHeight?: number | undefined; } | undefined; stateAfter?: { tier?: "free" | "plus" | "pro" | "max" | undefined; showHelp?: boolean | undefined; isRecording?: boolean | undefined; isAuthenticated?: boolean | undefined; selectedIndex?: number | undefined; terminalWidth?: number | undefined; showCommandPalette?: boolean | undefined; currentView?: string | undefined; showDebugPanel?: boolean | undefined; showQuickNote?: boolean | undefined; markerCount?: number | undefined; terminalHeight?: number | undefined; } | undefined; }, { type: string; timestamp: number; data?: unknown; stateBefore?: { tier?: "free" | "plus" | "pro" | "max" | undefined; showHelp?: boolean | undefined; isRecording?: boolean | undefined; isAuthenticated?: boolean | undefined; selectedIndex?: number | undefined; terminalWidth?: number | undefined; showCommandPalette?: boolean | undefined; currentView?: string | undefined; showDebugPanel?: boolean | undefined; showQuickNote?: boolean | undefined; markerCount?: number | undefined; terminalHeight?: number | undefined; } | undefined; stateAfter?: { tier?: "free" | "plus" | "pro" | "max" | undefined; showHelp?: boolean | undefined; isRecording?: boolean | undefined; isAuthenticated?: boolean | undefined; selectedIndex?: number | undefined; terminalWidth?: number | undefined; showCommandPalette?: boolean | undefined; currentView?: string | undefined; showDebugPanel?: boolean | undefined; showQuickNote?: boolean | undefined; markerCount?: number | undefined; terminalHeight?: number | undefined; } | undefined; }>, "many">; initialState: z.ZodObject<{ currentView: z.ZodString; selectedIndex: z.ZodNumber; tier: z.ZodEnum<["free", "plus", "pro", "max"]>; isAuthenticated: z.ZodBoolean; showHelp: z.ZodBoolean; showCommandPalette: z.ZodBoolean; showDebugPanel: z.ZodBoolean; showQuickNote: z.ZodBoolean; isRecording: z.ZodBoolean; markerCount: z.ZodNumber; terminalWidth: z.ZodNumber; terminalHeight: z.ZodNumber; }, "strip", z.ZodTypeAny, { tier: "free" | "plus" | "pro" | "max"; showHelp: boolean; isRecording: boolean; isAuthenticated: boolean; selectedIndex: number; terminalWidth: number; showCommandPalette: boolean; currentView: string; showDebugPanel: boolean; showQuickNote: boolean; markerCount: number; terminalHeight: number; }, { tier: "free" | "plus" | "pro" | "max"; showHelp: boolean; isRecording: boolean; isAuthenticated: boolean; selectedIndex: number; terminalWidth: number; showCommandPalette: boolean; currentView: string; showDebugPanel: boolean; showQuickNote: boolean; markerCount: number; terminalHeight: number; }>; finalState: z.ZodObject<{ currentView: z.ZodString; selectedIndex: z.ZodNumber; tier: z.ZodEnum<["free", "plus", "pro", "max"]>; isAuthenticated: z.ZodBoolean; showHelp: z.ZodBoolean; showCommandPalette: z.ZodBoolean; showDebugPanel: z.ZodBoolean; showQuickNote: z.ZodBoolean; isRecording: z.ZodBoolean; markerCount: z.ZodNumber; terminalWidth: z.ZodNumber; terminalHeight: z.ZodNumber; }, "strip", z.ZodTypeAny, { tier: "free" | "plus" | "pro" | "max"; showHelp: boolean; isRecording: boolean; isAuthenticated: boolean; selectedIndex: number; terminalWidth: number; showCommandPalette: boolean; currentView: string; showDebugPanel: boolean; showQuickNote: boolean; markerCount: number; terminalHeight: number; }, { tier: "free" | "plus" | "pro" | "max"; showHelp: boolean; isRecording: boolean; isAuthenticated: boolean; selectedIndex: number; terminalWidth: number; showCommandPalette: boolean; currentView: string; showDebugPanel: boolean; showQuickNote: boolean; markerCount: number; terminalHeight: number; }>; metadata: z.ZodObject<{ version: z.ZodString; tier: z.ZodEnum<["free", "plus", "pro", "max"]>; terminalSize: z.ZodObject<{ width: z.ZodNumber; height: z.ZodNumber; }, "strip", z.ZodTypeAny, { width: number; height: number; }, { width: number; height: number; }>; platform: z.ZodString; nodeVersion: z.ZodString; }, "strip", z.ZodTypeAny, { tier: "free" | "plus" | "pro" | "max"; version: string; platform: string; terminalSize: { width: number; height: number; }; nodeVersion: string; }, { tier: "free" | "plus" | "pro" | "max"; version: string; platform: string; terminalSize: { width: number; height: number; }; nodeVersion: string; }>; }, "strip", z.ZodTypeAny, { id: string; name: string; createdAt: string; duration: number; metadata: { tier: "free" | "plus" | "pro" | "max"; version: string; platform: string; terminalSize: { width: number; height: number; }; nodeVersion: string; }; initialState: { tier: "free" | "plus" | "pro" | "max"; showHelp: boolean; isRecording: boolean; isAuthenticated: boolean; selectedIndex: number; terminalWidth: number; showCommandPalette: boolean; currentView: string; showDebugPanel: boolean; showQuickNote: boolean; markerCount: number; terminalHeight: number; }; events: { type: string; timestamp: number; data?: unknown; stateBefore?: { tier?: "free" | "plus" | "pro" | "max" | undefined; showHelp?: boolean | undefined; isRecording?: boolean | undefined; isAuthenticated?: boolean | undefined; selectedIndex?: number | undefined; terminalWidth?: number | undefined; showCommandPalette?: boolean | undefined; currentView?: string | undefined; showDebugPanel?: boolean | undefined; showQuickNote?: boolean | undefined; markerCount?: number | undefined; terminalHeight?: number | undefined; } | undefined; stateAfter?: { tier?: "free" | "plus" | "pro" | "max" | undefined; showHelp?: boolean | undefined; isRecording?: boolean | undefined; isAuthenticated?: boolean | undefined; selectedIndex?: number | undefined; terminalWidth?: number | undefined; showCommandPalette?: boolean | undefined; currentView?: string | undefined; showDebugPanel?: boolean | undefined; showQuickNote?: boolean | undefined; markerCount?: number | undefined; terminalHeight?: number | undefined; } | undefined; }[]; finalState: { tier: "free" | "plus" | "pro" | "max"; showHelp: boolean; isRecording: boolean; isAuthenticated: boolean; selectedIndex: number; terminalWidth: number; showCommandPalette: boolean; currentView: string; showDebugPanel: boolean; showQuickNote: boolean; markerCount: number; terminalHeight: number; }; description?: string | undefined; }, { id: string; name: string; createdAt: string; duration: number; metadata: { tier: "free" | "plus" | "pro" | "max"; version: string; platform: string; terminalSize: { width: number; height: number; }; nodeVersion: string; }; initialState: { tier: "free" | "plus" | "pro" | "max"; showHelp: boolean; isRecording: boolean; isAuthenticated: boolean; selectedIndex: number; terminalWidth: number; showCommandPalette: boolean; currentView: string; showDebugPanel: boolean; showQuickNote: boolean; markerCount: number; terminalHeight: number; }; events: { type: string; timestamp: number; data?: unknown; stateBefore?: { tier?: "free" | "plus" | "pro" | "max" | undefined; showHelp?: boolean | undefined; isRecording?: boolean | undefined; isAuthenticated?: boolean | undefined; selectedIndex?: number | undefined; terminalWidth?: number | undefined; showCommandPalette?: boolean | undefined; currentView?: string | undefined; showDebugPanel?: boolean | undefined; showQuickNote?: boolean | undefined; markerCount?: number | undefined; terminalHeight?: number | undefined; } | undefined; stateAfter?: { tier?: "free" | "plus" | "pro" | "max" | undefined; showHelp?: boolean | undefined; isRecording?: boolean | undefined; isAuthenticated?: boolean | undefined; selectedIndex?: number | undefined; terminalWidth?: number | undefined; showCommandPalette?: boolean | undefined; currentView?: string | undefined; showDebugPanel?: boolean | undefined; showQuickNote?: boolean | undefined; markerCount?: number | undefined; terminalHeight?: number | undefined; } | undefined; }[]; finalState: { tier: "free" | "plus" | "pro" | "max"; showHelp: boolean; isRecording: boolean; isAuthenticated: boolean; selectedIndex: number; terminalWidth: number; showCommandPalette: boolean; currentView: string; showDebugPanel: boolean; showQuickNote: boolean; markerCount: number; terminalHeight: number; }; description?: string | undefined; }>; export type ValidatedRecording = z.infer; export type ValidatedRecordingMetadata = z.infer; export type ValidatedAppState = z.infer; export type ValidatedRecordedEvent = z.infer; /** * Validate a recording ID format */ export declare function isValidRecordingId(id: string): boolean; /** * Parse and validate a recording from JSON * Returns null if validation fails, logs warning with details */ export declare function parseRecording(data: unknown): ValidatedRecording | null; /** * Parse recording metadata */ export declare function parseRecordingMetadata(data: unknown): ValidatedRecordingMetadata | null; //# sourceMappingURL=schemas.d.ts.map