fix(workbench): gc stale empty sessions

This commit is contained in:
lyon
2026-06-19 01:14:45 +08:00
parent 244844e608
commit c950709b25
7 changed files with 426 additions and 2 deletions
+5 -1
View File
@@ -68,6 +68,7 @@ import {
handleCodeAgentTraceHttp
} from "./server-code-agent-http.ts";
import { handleWorkbenchReadModelHttp, handleWorkbenchRealtimeHttp } from "./server-workbench-http.ts";
import { startWorkbenchEmptySessionGc } from "./workbench-empty-session-gc.ts";
import { handleM3IoControlHttp } from "./server-m3-http.ts";
import { handleSkillsHttp } from "./server-skills-http.ts";
import { handleProviderProfileCatalogHttp, handleProviderProfilesHttp } from "./provider-profile-management.ts";
@@ -115,7 +116,8 @@ export function createCloudApiServer(options = {}) {
if (typeof accessController.configureCodeAgentWorkspaceContext === "function") {
accessController.configureCodeAgentWorkspaceContext({ env, fetchImpl: options.fetchImpl, traceStore, codeAgentChatResults });
}
return createServer(async (request, response) => {
const workbenchEmptySessionGc = startWorkbenchEmptySessionGc({ env, accessController, logger: console });
const server = createServer(async (request, response) => {
const backendPerformance = backendPerformanceStore.beginHttpRequest(request, response);
await withBackendPerformanceContext(backendPerformance, async () => {
try {
@@ -133,6 +135,8 @@ export function createCloudApiServer(options = {}) {
}
});
});
server.on("close", () => workbenchEmptySessionGc.stop());
return server;
}
export function ensureCodeAgentRuntimeBase(env = process.env) {