Skip to content

Commit 6b4e1b3

Browse files
committed
fix: remove global shared state from observability hooks
- Remove _global_hooks, enable_observability(), disable_observability(), and get_hooks() - Observability is now strictly per-agent/per-pipeline to comply with AGENTS.md Rule 4.5 - Agent class already correctly uses per-instance ObservabilityHooks() when observe=True - Eliminates shared mutable state between agents for multi-agent safety Addresses critical architecture gap identified in PR #1277 final review. Co-authored-by: Mervin Praison <MervinPraison@users.noreply.github.com>
1 parent 7480c43 commit 6b4e1b3

1 file changed

Lines changed: 3 additions & 22 deletions

File tree

src/praisonai-agents/praisonaiagents/escalation/observability.py

Lines changed: 3 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@
88
import logging
99
from praisonaiagents._logging import get_logger
1010
import time
11-
import threading
1211
from dataclasses import dataclass, field
1312
from typing import Any, Dict, List, Optional, Callable
1413
from enum import Enum
@@ -292,24 +291,6 @@ def get_summary(self) -> Dict[str, Any]:
292291
"final_stage": self._current_stage.name if self._current_stage else None,
293292
}
294293

295-
# Global hooks instance (opt-in) - protected by lock
296-
_global_hooks: Optional[ObservabilityHooks] = None
297-
_hooks_lock = threading.Lock()
298-
299-
def get_hooks() -> Optional[ObservabilityHooks]:
300-
"""Get global observability hooks."""
301-
return _global_hooks
302-
303-
def enable_observability() -> ObservabilityHooks:
304-
"""Enable global observability."""
305-
global _global_hooks
306-
with _hooks_lock:
307-
if _global_hooks is None:
308-
_global_hooks = ObservabilityHooks(enabled=True)
309-
return _global_hooks
310-
311-
def disable_observability():
312-
"""Disable global observability."""
313-
global _global_hooks
314-
with _hooks_lock:
315-
_global_hooks = None
294+
# NOTE: Observability is now per-agent/per-pipeline to comply with multi-agent safety.
295+
# Each agent creates its own ObservabilityHooks instance when observe=True.
296+
# See agent.py:2236 for the correct per-instance pattern.

0 commit comments

Comments
 (0)