refactor: remove threads layer, use sessions directly for ACP (#9078)

Co-authored-by: Douwe Osinga <douwe@squareup.com>
This commit is contained in:
Douwe Osinga
2026-05-08 16:10:55 -04:00
committed by GitHub
parent a999f52056
commit ea5802c380
32 changed files with 525 additions and 1922 deletions
@@ -69,7 +69,6 @@ describe("acpCreateSession", () => {
await expect(
acpCreateSession("openai", "/tmp/project", {
projectId: "project-1",
personaId: "persona-1",
modelId: "gpt-4.1",
}),
).resolves.toEqual({ sessionId: "acp-session-1" });
@@ -78,7 +77,6 @@ describe("acpCreateSession", () => {
"/tmp/project",
"openai",
"project-1",
"persona-1",
);
expect(mockLoadSession).not.toHaveBeenCalled();
expect(mockSetProvider).toHaveBeenCalledWith("acp-session-1", "openai");
+2 -12
View File
@@ -21,14 +21,11 @@ export interface AcpProvider {
export interface AcpSendMessageOptions {
systemPrompt?: string;
assistantPrompt?: string;
personaId?: string;
personaName?: string;
/** Image attachments as [base64Data, mimeType] pairs. */
images?: [string, string][];
}
export interface AcpCreateSessionOptions {
personaId?: string;
projectId?: string;
modelId?: string | null;
}
@@ -79,7 +76,7 @@ export async function acpSendMessage(
prompt: string,
options: AcpSendMessageOptions = {},
): Promise<void> {
const { systemPrompt, assistantPrompt, personaId, images } = options;
const { systemPrompt, assistantPrompt, images } = options;
const sid = sessionId.slice(0, 8);
const tStart = performance.now();
@@ -116,14 +113,8 @@ export async function acpSendMessage(
`[perf:send] ${sid} acpSendMessage → prompt(len=${prompt.length}, imgs=${images?.length ?? 0})`,
);
const tPrompt = performance.now();
const meta: Record<string, unknown> = {};
if (personaId) meta.personaId = personaId;
try {
await directAcp.prompt(
sessionId,
content,
Object.keys(meta).length > 0 ? meta : undefined,
);
await directAcp.prompt(sessionId, content);
const tDone = performance.now();
perfLog(
`[perf:send] ${sid} prompt() resolved in ${(tDone - tPrompt).toFixed(1)}ms (total acpSendMessage ${(tDone - tStart).toFixed(1)}ms)`,
@@ -159,7 +150,6 @@ export async function acpCreateSession(
workingDir,
providerId,
options.projectId,
options.personaId,
);
const sessionId = response.sessionId;
await directAcp.setProvider(sessionId, providerId);
+2 -7
View File
@@ -26,7 +26,6 @@ export interface AcpSessionInfo {
projectId?: string | null;
providerId: string | null;
modelId: string | null;
personaId: string | null;
}
export const DEPRECATED_PROVIDER_IDS = new Set([
@@ -83,7 +82,6 @@ export async function listSessions(): Promise<AcpSessionInfo[]> {
projectId: (info._meta?.projectId as string) ?? null,
providerId: (info._meta?.providerId as string) ?? null,
modelId: (info._meta?.modelId as string) ?? null,
personaId: (info._meta?.personaId as string) ?? null,
}));
}
@@ -118,7 +116,6 @@ export async function forkSession(sessionId: string): Promise<AcpSessionInfo> {
projectId: (response._meta?.projectId as string) ?? null,
providerId: (response._meta?.providerId as string) ?? null,
modelId: (response._meta?.modelId as string) ?? null,
personaId: (response._meta?.personaId as string) ?? null,
};
}
@@ -207,7 +204,6 @@ export async function newSession(
workingDir: string,
providerId?: string,
projectId?: string,
personaId?: string,
): Promise<NewSessionResponse> {
const tClient = performance.now();
const client = await getClient();
@@ -216,11 +212,10 @@ export async function newSession(
mcpServers: [],
};
const meta: Record<string, string> = {};
const meta: Record<string, string> = { client: "goose" };
if (providerId) meta.provider = providerId;
if (projectId) meta.projectId = projectId;
if (personaId) meta.personaId = personaId;
if (Object.keys(meta).length > 0) request._meta = meta;
request._meta = meta;
const tCall = performance.now();
const response = await client.newSession(request);
-1
View File
@@ -54,7 +54,6 @@ export interface Session {
title: string;
projectId?: string | null;
providerId?: string;
personaId?: string;
modelId?: string;
modelName?: string;
workingDir?: string | null;