mirror of
https://github.com/openclaw/openclaw.git
synced 2026-08-28 13:26:04 -06:00
fix(google): signal fresh realtime sessions
This commit is contained in:
@@ -1136,16 +1136,30 @@ describe("buildGoogleRealtimeVoiceProvider", () => {
|
||||
setupComplete: {},
|
||||
serverContent: { inputTranscription: { text: "Fresh partial " } },
|
||||
});
|
||||
expect(onEvent.mock.calls.map(([event]) => event.type)).toEqual([
|
||||
"session.continuity.reset",
|
||||
"session.created",
|
||||
]);
|
||||
expect(onReady).toHaveBeenCalledTimes(1);
|
||||
|
||||
pendingSession.resolve(freshSession);
|
||||
await vi.waitFor(() => {
|
||||
expect(onReady).toHaveBeenCalledTimes(2);
|
||||
});
|
||||
const sessionCreatedOrder = onEvent.mock.invocationCallOrder[1];
|
||||
const freshReadyOrder = onReady.mock.invocationCallOrder[1];
|
||||
if (sessionCreatedOrder === undefined || freshReadyOrder === undefined) {
|
||||
throw new Error("expected fresh session creation before readiness");
|
||||
}
|
||||
expect(sessionCreatedOrder).toBeLessThan(freshReadyOrder);
|
||||
freshCallbacks.onclose({ code: 1011, reason: "temporary again" });
|
||||
await vi.advanceTimersByTimeAsync(250);
|
||||
|
||||
expect(onEvent).toHaveBeenCalledTimes(2);
|
||||
expect(onEvent.mock.calls.map(([event]) => event.type)).toEqual([
|
||||
"session.continuity.reset",
|
||||
"session.created",
|
||||
"session.continuity.reset",
|
||||
]);
|
||||
lastConnectParams().callbacks.onmessage({
|
||||
serverContent: { inputTranscription: { text: "Next", finished: true } },
|
||||
});
|
||||
|
||||
@@ -873,6 +873,9 @@ class GoogleRealtimeVoiceBridge implements RealtimeVoiceBridge {
|
||||
if (!this.setupCompleteReceived) {
|
||||
// setupComplete proves Google selected a new server session. A later
|
||||
// continuity loss therefore owns a new reset generation.
|
||||
if (this.continuityResetEmitted) {
|
||||
this.config.onEvent?.({ direction: "server", type: "session.created" });
|
||||
}
|
||||
this.continuityResetEmitted = false;
|
||||
}
|
||||
this.setupCompleteReceived = true;
|
||||
|
||||
Reference in New Issue
Block a user