fix: /stop leaves stale paired task, sawOutput guard, progress text overwrite

- /stop now resets the active paired task to completed so the next
  user message routes to the owner instead of the stuck reviewer
- Owner completion with sawOutput=false (e.g. interrupted by /stop)
  no longer auto-triggers the reviewer — treated as interrupted
- Clear pendingProgressText when intermediate updates arrive on an
  existing progress message, preventing flushPendingProgress from
  overwriting latestProgressText with stale buffered content
This commit is contained in:
Eyejoker
2026-03-31 02:54:04 +09:00
parent 33575c84f1
commit dddf18428e
6 changed files with 38 additions and 11 deletions

View File

@@ -37,7 +37,7 @@ export interface RotationAttemptResult {
}
export type RotationOutcome =
| { type: 'success' }
| { type: 'success'; sawOutput: boolean }
| { type: 'error'; trigger?: TriggerInfo };
// ── Shared rotation loop ─────────────────────────────────────────
@@ -161,7 +161,7 @@ export async function runClaudeRotationLoop(
// ── Success ──
markTokenHealthy();
clearGlobalFailover();
return { type: 'success' };
return { type: 'success', sawOutput: attempt.sawOutput };
}
// ── All tokens exhausted ──