refactor: remove threads layer, use sessions directly for ACP (#9078)
Co-authored-by: Douwe Osinga <douwe@squareup.com>
This commit is contained in:
@@ -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");
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -54,7 +54,6 @@ export interface Session {
|
||||
title: string;
|
||||
projectId?: string | null;
|
||||
providerId?: string;
|
||||
personaId?: string;
|
||||
modelId?: string;
|
||||
modelName?: string;
|
||||
workingDir?: string | null;
|
||||
|
||||
Reference in New Issue
Block a user