fix(rpc): serialize IRC wake finalization

This commit is contained in:
can1357
2026-07-31 19:21:56 +02:00
parent e02510f8c9
commit bd96752b83
4 changed files with 56 additions and 45 deletions
@@ -54,7 +54,9 @@ function createMockSession(
let abortCount = 0;
let disposeCount = 0;
let promptIndex = 0;
let ircWakeTurnObserver: ((records: CustomMessage[]) => ((error?: unknown) => void) | undefined) | undefined;
let ircWakeTurnObserver:
| ((records: CustomMessage[]) => ((error?: unknown) => void | Promise<void>) | undefined)
| undefined;
const emit = (event: AgentSessionEvent) => {
for (const listener of [...listeners]) listener(event);
@@ -125,7 +127,7 @@ function createMockSession(
isError: false,
} as AgentSessionEvent);
emit({ type: "agent_end", messages: [yieldMessage] } as unknown as AgentSessionEvent);
finishObservation?.();
await finishObservation?.();
return "woken";
},
abort: async () => {
@@ -39,7 +39,7 @@ function createRef(sessionFile: string): AgentRef {
};
}
type IrcWakeObserver = (records: CustomMessage[]) => ((error?: unknown) => void) | undefined;
type IrcWakeObserver = (records: CustomMessage[]) => ((error?: unknown) => void | Promise<void>) | undefined;
interface RevivedSessionHandle {
session: AgentSession;
@@ -223,7 +223,7 @@ describe("persisted subagent revival", () => {
timestamp: Date.now(),
};
const finish = observer?.([record]);
finish?.();
await finish?.();
await terminal.promise;
expect(frames[0]).toMatchObject({