fix(agent): preserve sent message identity

This commit is contained in:
_Kerman
2026-07-28 18:07:28 +08:00
parent 46665f8af7
commit 7127528b7f
3 changed files with 4 additions and 4 deletions

View File

@@ -101,10 +101,9 @@ export class ReactLoopAgent implements Agent {
/** Accept and route one unified send item. */
send(
input: UserMessage,
message: UserMessage,
options: SendOptions,
): void {
const message = freezeMessage(input)
const { target, wakeup } = options
if (target === 'next-step' && !wakeup) {
if (this.acceptsNextStep) {

View File

@@ -79,7 +79,7 @@ describe('agent/prompt-submit', () => {
expect(userMsg?.type === 'user/message' && userMsg.data.content).toEqual([{ type: 'text', text: 'hello' }])
})
it('snapshots and freezes input before publishing or awaiting admission', async () => {
it('publishes frozen input without replacing its identity', async () => {
const adapter = new MockAdapter([textResponse('ok')])
const ctx = await harness(adapter)
const agent = ctx.agentLoop.create(SessionId('owned-input'), { provider: 'mock', model: 'mock' })
@@ -123,6 +123,7 @@ describe('agent/prompt-submit', () => {
await idle
expect(observed).toHaveLength(1)
expect(observed[0]).toBe(input)
expect(observed[0]).toMatchObject({
content: [{ type: 'text', text: 'accepted text' }],
source: { kind: 'plugin', plugin: 'accepted source' },