| import { z } from "zod"; | |
| export const compressionModeSchema = z.enum([ | |
| "off", | |
| "lite", | |
| "standard", | |
| "aggressive", | |
| "ultra", | |
| "rtk", | |
| "stacked", | |
| ]); | |
| export const cavemanIntensitySchema = z.enum(["lite", "full", "ultra"]); | |
| export const rtkIntensitySchema = z.enum(["minimal", "standard", "aggressive"]); | |
| export const rtkRawOutputRetentionSchema = z.enum(["never", "failures", "always"]); | |
| export const cavemanConfigSchema = z | |
| .object({ | |
| enabled: z.boolean().optional(), | |
| compressRoles: z.array(z.enum(["user", "assistant", "system"])).optional(), | |
| skipRules: z.array(z.string()).optional(), | |
| minMessageLength: z.number().int().min(0).optional(), | |
| preservePatterns: z.array(z.string()).optional(), | |
| intensity: cavemanIntensitySchema.optional(), | |
| }) | |
| .strict(); | |
| export const cavemanOutputModeSchema = z | |
| .object({ | |
| enabled: z.boolean().optional(), | |
| intensity: cavemanIntensitySchema.optional(), | |
| autoClarity: z.boolean().optional(), | |
| }) | |
| .strict(); | |
| export const rtkConfigSchema = z | |
| .object({ | |
| enabled: z.boolean().optional(), | |
| intensity: rtkIntensitySchema.optional(), | |
| applyToToolResults: z.boolean().optional(), | |
| applyToCodeBlocks: z.boolean().optional(), | |
| applyToAssistantMessages: z.boolean().optional(), | |
| enabledFilters: z.array(z.string()).optional(), | |
| disabledFilters: z.array(z.string()).optional(), | |
| maxLinesPerResult: z.number().int().min(0).max(100000).optional(), | |
| maxCharsPerResult: z.number().int().min(0).max(1000000).optional(), | |
| deduplicateThreshold: z.number().int().min(2).max(100).optional(), | |
| customFiltersEnabled: z.boolean().optional(), | |
| trustProjectFilters: z.boolean().optional(), | |
| rawOutputRetention: rtkRawOutputRetentionSchema.optional(), | |
| rawOutputMaxBytes: z.number().int().min(1024).max(10_000_000).optional(), | |
| }) | |
| .strict(); | |
| export const languageConfigSchema = z | |
| .object({ | |
| enabled: z.boolean().optional(), | |
| defaultLanguage: z.string().trim().min(1).optional(), | |
| autoDetect: z.boolean().optional(), | |
| enabledPacks: z.array(z.string().trim().min(1)).optional(), | |
| }) | |
| .strict(); | |
| export const aggressiveConfigSchema = z | |
| .object({ | |
| thresholds: z | |
| .object({ | |
| fullSummary: z.number().int().min(1).max(100).optional(), | |
| moderate: z.number().int().min(1).max(100).optional(), | |
| light: z.number().int().min(1).max(100).optional(), | |
| verbatim: z.number().int().min(1).max(100).optional(), | |
| }) | |
| .strict() | |
| .optional(), | |
| toolStrategies: z | |
| .object({ | |
| fileContent: z.boolean().optional(), | |
| grepSearch: z.boolean().optional(), | |
| shellOutput: z.boolean().optional(), | |
| json: z.boolean().optional(), | |
| errorMessage: z.boolean().optional(), | |
| }) | |
| .strict() | |
| .optional(), | |
| summarizerEnabled: z.boolean().optional(), | |
| maxTokensPerMessage: z.number().int().min(256).max(32768).optional(), | |
| minSavingsThreshold: z.number().min(0).max(1).optional(), | |
| preserveSystemPrompt: z.boolean().optional(), | |
| }) | |
| .strict(); | |
| export const ultraConfigSchema = z | |
| .object({ | |
| enabled: z.boolean().optional(), | |
| compressionRate: z.number().min(0).max(1).optional(), | |
| minScoreThreshold: z.number().min(0).max(1).optional(), | |
| slmFallbackToAggressive: z.boolean().optional(), | |
| modelPath: z.string().trim().min(1).optional(), | |
| maxTokensPerMessage: z.number().int().min(0).max(32768).optional(), | |
| preserveSystemPrompt: z.boolean().optional(), | |
| }) | |
| .strict(); | |
| const noConfigSchema = z.object({}).strict(); | |
| export const stackedPipelineStepSchema = z.discriminatedUnion("engine", [ | |
| z | |
| .object({ | |
| engine: z.literal("lite"), | |
| intensity: z.literal("lite").optional(), | |
| config: noConfigSchema.optional(), | |
| }) | |
| .strict(), | |
| z | |
| .object({ | |
| engine: z.literal("caveman"), | |
| intensity: cavemanIntensitySchema.optional(), | |
| config: cavemanConfigSchema.optional(), | |
| }) | |
| .strict(), | |
| z | |
| .object({ | |
| engine: z.literal("aggressive"), | |
| intensity: z.literal("standard").optional(), | |
| config: aggressiveConfigSchema.optional(), | |
| }) | |
| .strict(), | |
| z | |
| .object({ | |
| engine: z.literal("ultra"), | |
| intensity: z.literal("ultra").optional(), | |
| config: ultraConfigSchema.optional(), | |
| }) | |
| .strict(), | |
| z | |
| .object({ | |
| engine: z.literal("rtk"), | |
| intensity: rtkIntensitySchema.optional(), | |
| config: rtkConfigSchema.optional(), | |
| }) | |
| .strict(), | |
| ]); | |
| export const compressionSettingsUpdateSchema = z | |
| .object({ | |
| enabled: z.boolean().optional(), | |
| defaultMode: compressionModeSchema.optional(), | |
| autoTriggerMode: compressionModeSchema.optional(), | |
| autoTriggerTokens: z.number().int().min(0).optional(), | |
| cacheMinutes: z.number().int().min(1).max(60).optional(), | |
| preserveSystemPrompt: z.boolean().optional(), | |
| mcpDescriptionCompressionEnabled: z.boolean().optional(), | |
| comboOverrides: z.record(z.string(), compressionModeSchema).optional(), | |
| compressionComboId: z.string().trim().min(1).nullable().optional(), | |
| stackedPipeline: z.array(stackedPipelineStepSchema).optional(), | |
| cavemanConfig: cavemanConfigSchema.optional(), | |
| cavemanOutputMode: cavemanOutputModeSchema.optional(), | |
| rtkConfig: rtkConfigSchema.optional(), | |
| languageConfig: languageConfigSchema.optional(), | |
| aggressive: aggressiveConfigSchema.optional(), | |
| ultra: ultraConfigSchema.optional(), | |
| }) | |
| .strict(); | |
| export const compressionPreviewConfigSchema = compressionSettingsUpdateSchema; | |