diff --git a/packages/types/npm/package.metadata.json b/packages/types/npm/package.metadata.json index 4e9bb68f189..6596dd184d6 100644 --- a/packages/types/npm/package.metadata.json +++ b/packages/types/npm/package.metadata.json @@ -1,6 +1,6 @@ { "name": "@roo-code/types", - "version": "1.105.0", + "version": "1.106.0", "description": "TypeScript type definitions for Roo Code.", "publishConfig": { "access": "public", diff --git a/packages/types/src/__tests__/cloud.test.ts b/packages/types/src/__tests__/cloud.test.ts index 0d412a312dc..7a6cebd8a51 100644 --- a/packages/types/src/__tests__/cloud.test.ts +++ b/packages/types/src/__tests__/cloud.test.ts @@ -4,9 +4,11 @@ import { organizationCloudSettingsSchema, organizationFeaturesSchema, organizationSettingsSchema, + userSettingsConfigSchema, type OrganizationCloudSettings, type OrganizationFeatures, type OrganizationSettings, + type UserSettingsConfig, type WorkspaceTaskVisibility, } from "../cloud.js" @@ -407,3 +409,75 @@ describe("organizationCloudSettingsSchema with llmEnhancedFeaturesEnabled", () = expect(result.data?.cloudSettings?.llmEnhancedFeaturesEnabled).toBe(false) }) }) + +describe("userSettingsConfigSchema with llmEnhancedFeaturesEnabled", () => { + it("should validate without llmEnhancedFeaturesEnabled property", () => { + const input = { + extensionBridgeEnabled: true, + taskSyncEnabled: true, + } + const result = userSettingsConfigSchema.safeParse(input) + expect(result.success).toBe(true) + expect(result.data?.llmEnhancedFeaturesEnabled).toBeUndefined() + }) + + it("should validate with llmEnhancedFeaturesEnabled as true", () => { + const input = { + extensionBridgeEnabled: true, + taskSyncEnabled: true, + llmEnhancedFeaturesEnabled: true, + } + const result = userSettingsConfigSchema.safeParse(input) + expect(result.success).toBe(true) + expect(result.data?.llmEnhancedFeaturesEnabled).toBe(true) + }) + + it("should validate with llmEnhancedFeaturesEnabled as false", () => { + const input = { + extensionBridgeEnabled: true, + taskSyncEnabled: true, + llmEnhancedFeaturesEnabled: false, + } + const result = userSettingsConfigSchema.safeParse(input) + expect(result.success).toBe(true) + expect(result.data?.llmEnhancedFeaturesEnabled).toBe(false) + }) + + it("should reject non-boolean llmEnhancedFeaturesEnabled", () => { + const input = { + llmEnhancedFeaturesEnabled: "true", + } + const result = userSettingsConfigSchema.safeParse(input) + expect(result.success).toBe(false) + }) + + it("should have correct TypeScript type", () => { + // Type-only test to ensure TypeScript compilation + const settings: UserSettingsConfig = { + extensionBridgeEnabled: true, + taskSyncEnabled: true, + llmEnhancedFeaturesEnabled: true, + } + expect(settings.llmEnhancedFeaturesEnabled).toBe(true) + + const settingsWithoutLlmFeatures: UserSettingsConfig = { + extensionBridgeEnabled: false, + } + expect(settingsWithoutLlmFeatures.llmEnhancedFeaturesEnabled).toBeUndefined() + }) + + it("should validate empty object", () => { + const result = userSettingsConfigSchema.safeParse({}) + expect(result.success).toBe(true) + expect(result.data).toEqual({}) + }) + + it("should validate with only llmEnhancedFeaturesEnabled", () => { + const input = { + llmEnhancedFeaturesEnabled: true, + } + const result = userSettingsConfigSchema.safeParse(input) + expect(result.success).toBe(true) + expect(result.data?.llmEnhancedFeaturesEnabled).toBe(true) + }) +}) diff --git a/packages/types/src/cloud.ts b/packages/types/src/cloud.ts index 13d7db674a4..cccac017eed 100644 --- a/packages/types/src/cloud.ts +++ b/packages/types/src/cloud.ts @@ -185,6 +185,7 @@ export type UserFeatures = z.infer export const userSettingsConfigSchema = z.object({ extensionBridgeEnabled: z.boolean().optional(), taskSyncEnabled: z.boolean().optional(), + llmEnhancedFeaturesEnabled: z.boolean().optional(), }) export type UserSettingsConfig = z.infer