From 6505a525e8484e021cec6815c734891af0c78b76 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Louis=20T=C3=A9p=C3=A9?= Date: Tue, 18 Aug 2026 14:38:22 +0200 Subject: [PATCH] Expose web search sidecar enabled status --- src/server/management/config-routes.ts | 2 ++ tests/sidecar-settings-vision-controls.test.ts | 12 ++++++++++++ 2 files changed, 14 insertions(+) diff --git a/src/server/management/config-routes.ts b/src/server/management/config-routes.ts index 1bf09a673d..1aa07a0558 100644 --- a/src/server/management/config-routes.ts +++ b/src/server/management/config-routes.ts @@ -513,6 +513,7 @@ export async function handleConfigRoutes(ctx: ManagementContext): Promise { expect(config.visionSidecar).toEqual({ ...FULL_VISION, enabled: false }); }); + test("GET and PUT expose the effective web-search enabled state", async () => { + const unset = await getSidecarSettings(emptyConfig()); + expect((await unset.json() as { webSearch: { enabled: boolean } }).webSearch.enabled).toBe(true); + + const config = emptyConfig({ webSearchSidecar: { enabled: false } }); + const disabled = await getSidecarSettings(config); + expect((await disabled.json() as { webSearch: { enabled: boolean } }).webSearch.enabled).toBe(false); + + const response = await putSidecarSettings(config, { webSearch: { streamRoutedModelOutput: true } }); + expect((await response.json() as { webSearch: { enabled: boolean } }).webSearch.enabled).toBe(false); + }); + test("timeoutMs validation reuses the runtime bounds rather than a second contract", async () => { expect(resolveVisionTimeoutMs(undefined)).toBe(DEFAULT_VISION_TIMEOUT_MS); expect(resolveVisionTimeoutMs(MIN_VISION_TIMEOUT_MS)).toBe(MIN_VISION_TIMEOUT_MS);