b373c54cd7
Bug: Ctrl+C on the ask tool selector threw ToolAbortError, the turn ended with stopReason === "aborted", and handleBackgroundEvent fired sendCompletionNotification() unconditionally — producing a misleading "Task complete" desktop toast for a turn that never actually completed. Fix mirrors the stopReason filter already used by #currentContextTokens, #handleMessageEnd, and the retry / TTSR / compaction skip paths across agent-session.ts: check the most recent assistant message via session.getLastAssistantMessage() and return early when stopReason is "aborted" or "error". Test coverage (event-controller-abort-guard.test.ts, 6 cases): - aborted -> 0 sendNotification calls - error -> 0 calls - stop -> 1 call (normal completion) - no last assistant message -> proceeds (defensive) - isBackgrounded=false (foreground) -> still 0 - completion.notify=off -> still 0 Matching guard applied to the standalone desktop-notify extension (~/.omp/agent/extensions/desktop-notify/index.ts) which is currently the live producer of completion toasts after Phase 1 of seed_0ca7e1143ac1.