Keep latest metadata probe diagnostics in shared cache

This commit is contained in:
murashit 2026-06-14 21:26:01 +09:00
parent 2499ffca38
commit e072338224
3 changed files with 6 additions and 5 deletions

View file

@ -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 }))

View file

@ -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"]);
});

View file

@ -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", () => {