From e0723382241d65677d1609a42dc4941cd05c44c3 Mon Sep 17 00:00:00 2001 From: murashit Date: Sun, 14 Jun 2026 21:26:01 +0900 Subject: [PATCH] Keep latest metadata probe diagnostics in shared cache --- src/app-server/services/shared-cache-state.ts | 6 +----- tests/app-server/shared-cache-state.test.ts | 2 ++ tests/app-server/shared-cache.test.ts | 3 +++ 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/src/app-server/services/shared-cache-state.ts b/src/app-server/services/shared-cache-state.ts index c7aecfb9..5fb24633 100644 --- a/src/app-server/services/shared-cache-state.ts +++ b/src/app-server/services/shared-cache-state.ts @@ -166,12 +166,8 @@ function metadataResourceSucceeded( } function mergeServerDiagnostics(previous: SharedServerMetadata, next: SharedServerMetadata): SharedServerMetadata["serverDiagnostics"] { - const probes = { ...next.serverDiagnostics.probes }; - for (const method of Object.keys(probes) as (keyof typeof probes)[]) { - if (probes[method].status === "failed") probes[method] = previous.serverDiagnostics.probes[method]; - } return { - probes, + probes: { ...next.serverDiagnostics.probes }, mcpServers: next.serverDiagnostics.probes["mcpServerStatus/list"].status === "failed" ? previous.serverDiagnostics.mcpServers.map((server) => ({ ...server })) diff --git a/tests/app-server/shared-cache-state.test.ts b/tests/app-server/shared-cache-state.test.ts index 05854e38..5f8d46c8 100644 --- a/tests/app-server/shared-cache-state.test.ts +++ b/tests/app-server/shared-cache-state.test.ts @@ -126,6 +126,8 @@ describe("shared app-server cache state", () => { expect(cached.availableModels.map((model) => model.model)).toEqual(["gpt-5.6"]); expect(cached.availableSkills.map((skill) => skill.name)).toEqual(["writer"]); expect(cached.rateLimit?.primary?.usedPercent).toBe(42); + expect(cached.serverDiagnostics.probes["skills/list"].status).toBe("failed"); + expect(cached.serverDiagnostics.probes["account/rateLimits/read"].status).toBe("failed"); expect(expectPresent(cachedSharedModels(second, context)).map((model) => model.model)).toEqual(["gpt-5.6"]); }); diff --git a/tests/app-server/shared-cache.test.ts b/tests/app-server/shared-cache.test.ts index 1911d1a6..9c77255d 100644 --- a/tests/app-server/shared-cache.test.ts +++ b/tests/app-server/shared-cache.test.ts @@ -33,9 +33,12 @@ describe("SharedAppServerCache", () => { expect(cache.cachedAppServerMetadata(context)?.availableModels.map((model) => model.model)).toEqual(["gpt-5.6"]); expect(cache.cachedAppServerMetadata(context)?.availableSkills.map((skill) => skill.name)).toEqual(["writer"]); expect(cache.cachedAppServerMetadata(context)?.rateLimit?.primary?.usedPercent).toBe(42); + expect(cache.cachedAppServerMetadata(context)?.serverDiagnostics.probes["skills/list"].status).toBe("failed"); + expect(cache.cachedAppServerMetadata(context)?.serverDiagnostics.probes["account/rateLimits/read"].status).toBe("failed"); cache.applyAppServerMetadataSnapshot(context, metadata({ availableModels: [], modelProbeStatus: "failed" })); expect(cache.cachedAppServerMetadata(context)?.availableModels.map((model) => model.model)).toEqual(["gpt-5.6"]); + expect(cache.cachedAppServerMetadata(context)?.serverDiagnostics.probes["model/list"].status).toBe("failed"); }); it("loads initial metadata snapshots without caching failed resource values", () => {