1af42befca9f9bee83dc259a63e5afbd4f6360ab
Three coordinated changes: 1. DefaultOrchestrationReducer now handles TransitionExecutedEvent, updating currentStageId so the projected state always reflects the actual current stage rather than staying stuck at the start stage. 2. DefaultSessionOrchestrator.resume() re-enters the execution loop at the current stage without re-emitting WorkflowStartedEvent. It reads currentStageId from the projected state, creates an ExecutionContext there, and calls enterStage → step exactly as run() does after its first stage. 3. ServerModule.start() calls resumeAbandonedSessions(), which scans all RUNNING/PAUSED sessions on startup and launches resume() for each one whose orchestrator is no longer in memory. Sessions that have a live deferred are unaffected; only sessions with no coroutine (e.g. the server was restarted while a tool was executing or approval was pending) are picked up and re-executed from their current stage.
Description
No description provided
Languages
Kotlin
88.4%
Go
11.4%
Python
0.2%