fix(composer): make Stop and retry race-safe
2 months ago
Authored
Cursor Agent# Conflicts:
# apps/desktop/quality-gates/specs/journeys.pw.ts
# apps/desktop/src/app/store.actions/thread.ts
# apps/desktop/src/app/store.helpers.ts
# apps/desktop/src/app/store.helpers/threadEventReducer/jsonRpcWorkspace.ts
# apps/desktop/src/ui/ChatView.tsx
# apps/desktop/src/ui/chat/NewChatLanding.tsx
# apps/desktop/src/ui/chat/chatLogic.ts
# apps/desktop/src/ui/composer/MessageComposer.tsx
# docs/generated/websocket-jsonrpc.schema.json
Co-authored-by: Max Weinbach <mweinbach@users.noreply.github.com>
Parentsb16f7f9fbe9d1e
52 files changed
- apps/desktop/electron/qualityGateMain.ts+8−2
- apps/desktop/quality-gates/specs/journeys.pw.ts+14−5
- apps/desktop/src/app/composerDrafts.ts+8−6
- apps/desktop/src/app/composerSubmission.ts+72−0
- apps/desktop/src/app/store.actions/bootstrap.ts+2−0
- apps/desktop/src/app/store.actions/thread.ts+473−29
- apps/desktop/src/app/store.helpers.ts+14−1
apps/desktop/src/app/store.helpers/jsonRpcSocket.ts
+22
−2
apps/desktop/src/app/store.helpers/runtimeState.ts+12−2apps/desktop/src/app/store.helpers/threadEventReducer/feedProjection.ts+47−3apps/desktop/src/app/store.helpers/threadEventReducer/handlers/contentHandlers.ts+20−2apps/desktop/src/app/store.helpers/threadEventReducer/handlers/lifecycleHandlers.ts+14−1apps/desktop/src/app/store.helpers/threadEventReducer/jsonRpcWorkspace.ts+30−1apps/desktop/src/app/store.helpers/threadEventReducer/messaging.ts+57−11apps/desktop/src/app/store.helpers/threadEventReducer/socket.ts+2−0apps/desktop/src/app/store.ts+1−0apps/desktop/src/app/types.ts+3−0apps/desktop/src/lib/composerAttachments.ts+35−0apps/desktop/src/ui/ChatView.tsx+48−169apps/desktop/src/ui/chat/ChatComposer.tsx+30−15apps/desktop/src/ui/chat/NewChatLanding.tsx+50−183apps/desktop/src/ui/chat/chatLogic.ts+22−22apps/desktop/src/ui/composer/MessageComposer.tsx+116−31apps/desktop/test/chat-reasoning-ui.test.ts+14−11apps/desktop/test/chat-view.stability.test.tsx+72−18apps/desktop/test/composer-attachments.test.ts+46−1apps/desktop/test/composer-draft-thread-switch.test.ts+571−2apps/desktop/test/feed-projection-coalescing.test.ts+44−1apps/desktop/test/jsonrpc-single-connection.test.ts+14−1apps/desktop/test/message-composer.test.tsx+55−4apps/desktop/test/protocol-v2-events.test.ts+98−0docs/generated/websocket-jsonrpc.d.ts+6−6docs/generated/websocket-jsonrpc.schema.json+1−1docs/websocket-protocol.md+17−5src/server/jsonrpc/routes/turn.ts+65−21src/server/jsonrpc/schema.threadTurn.ts+2−0src/server/projection/conversationProjectionAssistant.ts+2−0src/server/projection/conversationProjectionFeedItems.ts+2−0src/server/projection/conversationProjectionSessionEvents.ts+5−0src/server/projection/conversationProjectionState.ts+2−0src/server/protocol.ts+3−1src/server/session/AgentSession.ts+10−0src/server/session/SessionContext.ts+1−0src/server/session/SessionRuntime.ts+10−0src/server/session/TurnExecutionManager.ts+59−1src/server/session/turnExecution/runUserMessageTurn.ts+22−13src/server/session/turnExecution/steerCoordinator.ts+80−24src/shared/idempotencyLedger.ts+6−0src/shared/projectedItems.ts+3−0test/idempotency-ledger.test.ts+10−0test/jsonrpc/flow.turnSteer.test.ts+81−0test/session/steerCoordinator.test.ts+74−0