Skip to content

Commit c288226

Browse files
authored
fix(acp): skip resume transcript replay (anomalyco#34070)
1 parent 9c38b91 commit c288226

2 files changed

Lines changed: 22 additions & 4 deletions

File tree

packages/opencode/src/acp/service.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -314,7 +314,6 @@ export function make(input: {
314314

315315
yield* registerMcpServers(input.sdk, registeredMcp, params.cwd, state.id, params.mcpServers ?? [])
316316
yield* sendAvailableCommands(input.connection, state.id, snapshot)
317-
yield* replayMessages(events, messages)
318317

319318
return {
320319
configOptions: configOptions(snapshot, {

packages/opencode/test/acp/service-session.test.ts

Lines changed: 22 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -394,15 +394,29 @@ describe("ACP service sessions", () => {
394394
expect(second.sessions.map((session) => session.sessionId)).toEqual(["ses_2", "ses_1"])
395395
})
396396

397-
it("resumes a session and stores restored state", async () => {
398-
const { service } = makeService([
397+
it("resumes a session and stores restored state without replaying transcript chunks", async () => {
398+
const { service, updates } = makeService([
399399
{
400400
info: {
401+
id: "msg_user",
402+
sessionID: "ses_resume",
401403
role: "user",
402404
model: { providerID: "test", modelID: "test-model", variant: "high" },
403405
agent: "plan",
404406
},
405-
parts: [],
407+
parts: [{ id: "part_user", sessionID: "ses_resume", messageID: "msg_user", type: "text", text: "hello" }],
408+
},
409+
{
410+
info: { id: "msg_assistant", sessionID: "ses_resume", role: "assistant" },
411+
parts: [
412+
{
413+
id: "part_assistant",
414+
sessionID: "ses_resume",
415+
messageID: "msg_assistant",
416+
type: "text",
417+
text: "hi there",
418+
},
419+
],
406420
},
407421
])
408422
const resumed = await Effect.runPromise(
@@ -414,6 +428,11 @@ describe("ACP service sessions", () => {
414428

415429
expect(select(resumed, "effort")?.currentValue).toBe("high")
416430
expect(select(updated, "effort")?.currentValue).toBe("default")
431+
expect(
432+
updates
433+
.map((item) => item.update)
434+
.filter((item) => item.sessionUpdate === "user_message_chunk" || item.sessionUpdate === "agent_message_chunk"),
435+
).toEqual([])
417436
})
418437

419438
it("closes local ACP state and aborts the backing session best-effort", async () => {

0 commit comments

Comments
 (0)