diff --git a/apps/desktop/src/app/session/hooks/use-session-actions.test.tsx b/apps/desktop/src/app/session/hooks/use-session-actions.test.tsx index 34c6c694af..c7e1adac50 100644 --- a/apps/desktop/src/app/session/hooks/use-session-actions.test.tsx +++ b/apps/desktop/src/app/session/hooks/use-session-actions.test.tsx @@ -947,7 +947,9 @@ describe('resumeSession failure recovery', () => { }) expect(request.questions).toHaveLength(2) expect( - state?.messages.flatMap(message => message.parts).filter(part => part.type === 'tool-call' && part.toolName === 'clarify') + state?.messages + .flatMap(message => message.parts) + .filter(part => part.type === 'tool-call' && part.toolName === 'clarify') ).toHaveLength(1) expect(state?.messages.filter(message => message.pending)).toHaveLength(1) expect(state?.streamId).toBe(state?.messages.find(message => message.pending)?.id) diff --git a/apps/desktop/src/components/assistant-ui/clarify-tool.tsx b/apps/desktop/src/components/assistant-ui/clarify-tool.tsx index cb36233304..4b4492ecf7 100644 --- a/apps/desktop/src/components/assistant-ui/clarify-tool.tsx +++ b/apps/desktop/src/components/assistant-ui/clarify-tool.tsx @@ -919,13 +919,7 @@ const emptyStage = { choices: [] as string[], draft: '' } * back-to-back and completes the batch. Staged answers stay editable up to * that moment. The per-question wire protocol is unchanged (the TUI/CLI * still lock incrementally); this card just batches its locks at the end. */ -function ClarifyToolBatchPending({ - onAnswered, - request -}: { - onAnswered: () => void - request: ClarifyRequest | null -}) { +function ClarifyToolBatchPending({ onAnswered, request }: { onAnswered: () => void; request: ClarifyRequest | null }) { const { t } = useI18n() const copy = t.assistant.clarify const gateway = useStore($gateway) diff --git a/apps/shared/src/json-rpc-gateway-replay.test.ts b/apps/shared/src/json-rpc-gateway-replay.test.ts index b9022c63ef..dc5dd559bf 100644 --- a/apps/shared/src/json-rpc-gateway-replay.test.ts +++ b/apps/shared/src/json-rpc-gateway-replay.test.ts @@ -41,6 +41,7 @@ class FakeWebSocket extends EventTarget { lastRequest(): { id: string; method: string; params: Record } { const last = this.sent[this.sent.length - 1] + return JSON.parse(last ?? '{}') } } @@ -54,6 +55,7 @@ const makeClient = () => { heartbeatDeadlineMs: 0, connectTimeoutMs: 1000 }) + return client } diff --git a/apps/shared/src/json-rpc-gateway.ts b/apps/shared/src/json-rpc-gateway.ts index aac8ac2058..72d9d70138 100644 --- a/apps/shared/src/json-rpc-gateway.ts +++ b/apps/shared/src/json-rpc-gateway.ts @@ -499,6 +499,7 @@ export class JsonRpcGatewayClient { try { const entries = Object.entries(this.getSeqWatermarks()) + // One RPC per known session keeps params flat; sessions are few (<20). const results = await Promise.allSettled( entries.map(([sid, lastSeen]) =>