diff --git a/packages/evals/src/cli/runTask.ts b/packages/evals/src/cli/runTask.ts index 14028b493a..0ee37a8a6e 100644 --- a/packages/evals/src/cli/runTask.ts +++ b/packages/evals/src/cli/runTask.ts @@ -294,8 +294,8 @@ export const runTask = async ({ run, task, publish, logger }: RunTaskOptions) => data: { configuration: { ...EVALS_SETTINGS, - ...run.settings, openRouterApiKey: process.env.OPENROUTER_API_KEY, + ...run.settings, // Allow the provided settings to override `openRouterApiKey`. }, text: prompt, newTab: true, diff --git a/packages/types/src/experiment.ts b/packages/types/src/experiment.ts index 59b2524fdb..301d5fc453 100644 --- a/packages/types/src/experiment.ts +++ b/packages/types/src/experiment.ts @@ -6,7 +6,13 @@ import type { Keys, Equals, AssertEqual } from "./type-fu.js" * ExperimentId */ -export const experimentIds = ["powerSteering", "concurrentFileReads", "disableCompletionCommand", "marketplace", "multiFileApplyDiff"] as const +export const experimentIds = [ + "powerSteering", + "concurrentFileReads", + "disableCompletionCommand", + "marketplace", + "multiFileApplyDiff", +] as const export const experimentIdsSchema = z.enum(experimentIds) @@ -17,11 +23,11 @@ export type ExperimentId = z.infer */ export const experimentsSchema = z.object({ - powerSteering: z.boolean(), - marketplace: z.boolean(), - concurrentFileReads: z.boolean(), - disableCompletionCommand: z.boolean(), - multiFileApplyDiff: z.boolean(), + powerSteering: z.boolean().optional(), + concurrentFileReads: z.boolean().optional(), + disableCompletionCommand: z.boolean().optional(), + marketplace: z.boolean().optional(), + multiFileApplyDiff: z.boolean().optional(), }) export type Experiments = z.infer diff --git a/src/shared/ExtensionMessage.ts b/src/shared/ExtensionMessage.ts index c6efdc1aea..3044d1d301 100644 --- a/src/shared/ExtensionMessage.ts +++ b/src/shared/ExtensionMessage.ts @@ -5,7 +5,7 @@ import type { HistoryItem, ModeConfig, TelemetrySetting, - ExperimentId, + Experiments, ClineMessage, OrganizationAllowList, CloudUserInfo, @@ -208,7 +208,7 @@ export type ExtensionState = Pick< showRooIgnoredFiles: boolean // Whether to show .rooignore'd files in listings maxReadFileLine: number // Maximum number of lines to read from a file before truncating - experiments: Record // Map of experiment IDs to their enabled state + experiments: Experiments // Map of experiment IDs to their enabled state mcpEnabled: boolean enableMcpServerCreation: boolean diff --git a/src/shared/experiments.ts b/src/shared/experiments.ts index f6c387d480..2fb6c160a3 100644 --- a/src/shared/experiments.ts +++ b/src/shared/experiments.ts @@ -1,4 +1,4 @@ -import type { AssertEqual, Equals, Keys, Values, ExperimentId } from "@roo-code/types" +import type { AssertEqual, Equals, Keys, Values, ExperimentId, Experiments } from "@roo-code/types" export const EXPERIMENT_IDS = { MARKETPLACE: "marketplace", @@ -33,6 +33,5 @@ export const experimentDefault = Object.fromEntries( export const experiments = { get: (id: ExperimentKey): ExperimentConfig | undefined => experimentConfigsMap[id], - isEnabled: (experimentsConfig: Record, id: ExperimentId) => - experimentsConfig[id] ?? experimentDefault[id], + isEnabled: (experimentsConfig: Experiments, id: ExperimentId) => experimentsConfig[id] ?? experimentDefault[id], } as const diff --git a/webview-ui/src/components/settings/ExperimentalSettings.tsx b/webview-ui/src/components/settings/ExperimentalSettings.tsx index 4e2546eb38..e9413090b9 100644 --- a/webview-ui/src/components/settings/ExperimentalSettings.tsx +++ b/webview-ui/src/components/settings/ExperimentalSettings.tsx @@ -1,7 +1,7 @@ import { HTMLAttributes } from "react" import { FlaskConical } from "lucide-react" -import type { ExperimentId, CodebaseIndexConfig, CodebaseIndexModels, ProviderSettings } from "@roo-code/types" +import type { Experiments, CodebaseIndexConfig, CodebaseIndexModels, ProviderSettings } from "@roo-code/types" import { EXPERIMENT_IDS, experimentConfigsMap } from "@roo/experiments" @@ -17,7 +17,7 @@ import { CodeIndexSettings } from "./CodeIndexSettings" import { ConcurrentFileReadsExperiment } from "./ConcurrentFileReadsExperiment" type ExperimentalSettingsProps = HTMLAttributes & { - experiments: Record + experiments: Experiments setExperimentEnabled: SetExperimentEnabled maxConcurrentFileReads?: number setCachedStateField: SetCachedStateField<"codebaseIndexConfig" | "maxConcurrentFileReads">