personal memory agent
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

Fix fallback error event leaking backup provider errors

When provider fallback retries with a backup provider that also fails,
suppress the backup's error events from the callback and clear the
_evented flag on the original exception so the caller reports the
correct (original) error.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

+13 -1
+13 -1
think/agents.py
··· 625 625 config["model"] = backup_model 626 626 627 627 backup_mod = get_provider_module(backup) 628 + 629 + # Suppress error events from backup provider — if backup also fails 630 + # we report the original error, not the backup's error. 631 + def backup_emit(data: Event) -> None: 632 + if data.get("event") == "error": 633 + return 634 + agent_emit_event(data) 635 + 628 636 try: 629 - await backup_mod.run_cogitate(config=config, on_event=agent_emit_event) 637 + await backup_mod.run_cogitate(config=config, on_event=backup_emit) 630 638 except Exception: 639 + # Ensure the original error is reported by the caller even if the 640 + # primary provider already emitted its own error event (_evented). 641 + if hasattr(exc, "_evented"): 642 + delattr(exc, "_evented") 631 643 raise exc 632 644 finally: 633 645 if config.get("health_stale"):