Gateway: resolve fallback plugin context lazily

This commit is contained in:
scoootscooob
2026-03-22 23:51:30 -07:00
parent 52b92f2973
commit 4580d585ff
3 changed files with 47 additions and 8 deletions

View File

@@ -616,4 +616,31 @@ describe("loadGatewayPlugins", () => {
| undefined;
expect(dispatched?.marker).toBe("after-mutation");
});
test("resolves fallback context lazily when a resolver is registered", async () => {
const serverPlugins = serverPluginsModule;
const runtime = await createSubagentRuntime(serverPlugins);
let currentContext = createTestContext("before-resolver-update");
serverPlugins.setFallbackGatewayContextResolver(() => currentContext);
await runtime.run({ sessionKey: "s-4", message: "before resolver update" });
expect(getLastDispatchedContext()).toBe(currentContext);
currentContext = createTestContext("after-resolver-update");
await runtime.run({ sessionKey: "s-4", message: "after resolver update" });
expect(getLastDispatchedContext()).toBe(currentContext);
});
test("prefers resolver output over an older fallback context snapshot", async () => {
const serverPlugins = serverPluginsModule;
const runtime = await createSubagentRuntime(serverPlugins);
const staleContext = createTestContext("stale-snapshot");
const freshContext = createTestContext("fresh-resolver");
serverPlugins.setFallbackGatewayContext(staleContext);
serverPlugins.setFallbackGatewayContextResolver(() => freshContext);
await runtime.run({ sessionKey: "s-5", message: "prefer resolver" });
expect(getLastDispatchedContext()).toBe(freshContext);
});
});