diff --git a/packages/opencode/src/acp/service.ts b/packages/opencode/src/acp/service.ts index 3771459b157b..7fb4d405ea56 100644 --- a/packages/opencode/src/acp/service.ts +++ b/packages/opencode/src/acp/service.ts @@ -320,7 +320,6 @@ export function make(input: { yield* registerMcpServers(input.sdk, registeredMcp, params.cwd, state.id, params.mcpServers ?? []) yield* sendAvailableCommands(input.connection, state.id, snapshot) - yield* replayMessages(events, messages) return { configOptions: configOptions(snapshot, { diff --git a/packages/opencode/test/acp/service-session.test.ts b/packages/opencode/test/acp/service-session.test.ts index 890719072abf..ba3a64cb4859 100644 --- a/packages/opencode/test/acp/service-session.test.ts +++ b/packages/opencode/test/acp/service-session.test.ts @@ -411,6 +411,45 @@ describe("ACP service sessions", () => { expect(select(updated, "effort")?.currentValue).toBe("default") }) + it("resumes a session without replaying historical transcript chunks", async () => { + const { service, updates } = makeService([ + { + info: { + id: "msg_user", + sessionID: "ses_resume", + role: "user", + model: { providerID: "test", modelID: "test-model", variant: "high" }, + agent: "plan", + }, + parts: [{ id: "part_user", sessionID: "ses_resume", messageID: "msg_user", type: "text", text: "hello" }], + }, + { + info: { id: "msg_assistant", sessionID: "ses_resume", role: "assistant" }, + parts: [ + { + id: "part_assistant", + sessionID: "ses_resume", + messageID: "msg_assistant", + type: "text", + text: "hi there", + }, + ], + }, + ]) + + const resumed = await Effect.runPromise( + service.resumeSession({ cwd: "/workspace", sessionId: "ses_resume", mcpServers: [] }), + ) + + expect(select(resumed, "effort")?.currentValue).toBe("high") + expect(select(resumed, "mode")?.currentValue).toBe("plan") + expect( + updates + .map((item) => item.update) + .filter((item) => item.sessionUpdate === "user_message_chunk" || item.sessionUpdate === "agent_message_chunk"), + ).toEqual([]) + }) + it("closes local ACP state and aborts the backing session best-effort", async () => { const { service, aborts } = makeService() const created = await Effect.runPromise(service.newSession({ cwd: "/workspace", mcpServers: [] }))