diff --git a/packages/agent-core-v2/src/human/agent/machine.ts b/packages/agent-core-v2/src/human/agent/machine.ts index 3570a17fc6..015e168116 100644 --- a/packages/agent-core-v2/src/human/agent/machine.ts +++ b/packages/agent-core-v2/src/human/agent/machine.ts @@ -433,6 +433,7 @@ export function createAgentMachine({ 'store.error': { actions: 'forwardToParent', }, + 'store.changed': {}, 'tool.update': { actions: [emit(({ event }) => event), 'forwardToParent'], }, diff --git a/packages/agent-core-v2/src/human/test/agent/machine.test.ts b/packages/agent-core-v2/src/human/test/agent/machine.test.ts index 1d6ca159df..6916fe02d6 100644 --- a/packages/agent-core-v2/src/human/test/agent/machine.test.ts +++ b/packages/agent-core-v2/src/human/test/agent/machine.test.ts @@ -713,6 +713,31 @@ describe('agent machine lifecycle', () => { 'assistant:recovered', ]); }); + + it('persists turn events without reporting unhandled store.changed', async () => { + const warn = vi.spyOn(console, 'warn').mockImplementation(() => {}); + try { + const requester = createStubRequester([ + createAssistantMessage([{ type: 'text', text: 'hi' }]), + ]); + const store = await testStore(); + const actor = createActor(createTestAgentMachine([], requester), { + input: { request: { model }, store }, + }); + actor.start(); + actor.send({ type: 'input.submit', message: createUserMessage('hello') }); + await waitFor(actor, (s) => s.matches('idle') && store.getState().history.length === 2, { + timeout: 5000, + }); + await store.flush(); + const unhandled = warn.mock.calls.filter(([message]) => + String(message).includes('unhandled event "store.changed"'), + ); + expect(unhandled).toEqual([]); + } finally { + warn.mockRestore(); + } + }); }); describe('agent machine input.notify', () => {