fix: ACP prompt 未切换全局 sessionId 导致 transcript 写入错误会话文件
prompt() 在调用 submitMessage 前没有 switchSession,recordTranscript 依赖全局 getSessionId() 确定写入路径,多会话场景下新会话内容会覆盖旧会话。
This commit is contained in:
parent
1ce561ca6c
commit
f2393903ec
|
|
@ -812,19 +812,20 @@ describe('AcpAgent', () => {
|
||||||
)
|
)
|
||||||
})
|
})
|
||||||
|
|
||||||
test('prompt does not trigger additional switchSession for multi-session', async () => {
|
test('prompt switches global sessionId to the correct session', async () => {
|
||||||
const agent = new AcpAgent(makeConn())
|
const agent = new AcpAgent(makeConn())
|
||||||
await agent.newSession({ cwd: '/tmp' } as any)
|
await agent.newSession({ cwd: '/tmp' } as any)
|
||||||
await agent.newSession({ cwd: '/tmp' } as any)
|
await agent.newSession({ cwd: '/tmp' } as any)
|
||||||
mockSwitchSession.mockClear()
|
mockSwitchSession.mockClear()
|
||||||
|
|
||||||
// Prompts should not call switchSession — alignment happens at session creation
|
// Prompts must switch global state so recordTranscript writes to
|
||||||
|
// the correct session file in multi-session scenarios.
|
||||||
const s1 = agent.sessions.keys().next().value
|
const s1 = agent.sessions.keys().next().value
|
||||||
await agent.prompt({
|
await agent.prompt({
|
||||||
sessionId: s1,
|
sessionId: s1,
|
||||||
prompt: [{ type: 'text', text: 'hello' }],
|
prompt: [{ type: 'text', text: 'hello' }],
|
||||||
} as any)
|
} as any)
|
||||||
expect(mockSwitchSession).not.toHaveBeenCalled()
|
expect(mockSwitchSession).toHaveBeenCalledWith(s1, null)
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user