From 5885f6d24378d67a569a9290a6815169f3b91793 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 a30d8ac451..4a41b11138 100644 --- a/src/server/management/config-routes.ts +++ b/src/server/management/config-routes.ts @@ -592,6 +592,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);