File size: 2,962 Bytes
3193174
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
"""
Callback system for execution monitoring.

Provides LangChain-like callback handling for monitoring and logging
execution events.

Example (basic usage):
    from gmas import MACPRunner
    from callbacks import StdoutCallbackHandler

    runner = MACPRunner(
        llm_caller=my_llm,
        callbacks=[StdoutCallbackHandler()]
    )
    result = runner.run_round(graph)

Example (context manager):
    from callbacks import trace_as_callback, MetricsCallbackHandler

    with trace_as_callback(handlers=[MetricsCallbackHandler()]) as manager:
        runner.run_round(graph)

    # Get metrics from handler
    metrics_handler = manager.handlers[0]
    print(metrics_handler.get_metrics())

Example (custom handler):
    from callbacks import BaseCallbackHandler

    class MyHandler(BaseCallbackHandler):
        def on_agent_end(self, *, agent_id, output, tokens_used, **kwargs):
            print(f"{agent_id} used {tokens_used} tokens")

    runner = MACPRunner(callbacks=[MyHandler()])
"""

from .base import AsyncCallbackHandler, BaseCallbackHandler, CallbackHandlerMixin
from .context import (
    collect_metrics,
    configure_async_callbacks,
    configure_callbacks,
    get_callback_manager,
    set_callback_manager,
    trace_as_callback,
)
from .events import (
    AgentEndEvent,
    AgentErrorEvent,
    AgentRetryEvent,
    AgentStartEvent,
    BaseEvent,
    BudgetExceededEvent,
    BudgetWarningEvent,
    EventType,
    FallbackEvent,
    MemoryReadEvent,
    MemoryWriteEvent,
    ParallelEndEvent,
    ParallelStartEvent,
    PlanCreatedEvent,
    PruneEvent,
    RunEndEvent,
    RunStartEvent,
    TokenEvent,
    ToolEndEvent,
    ToolErrorEvent,
    ToolStartEvent,
    TopologyChangedEvent,
)
from .handlers import (
    FileCallbackHandler,
    MetricsCallbackHandler,
    StdoutCallbackHandler,
)
from .manager import AsyncCallbackManager, CallbackManager

# Type alias for handlers
Handler = BaseCallbackHandler | AsyncCallbackHandler

__all__ = [
    "AgentEndEvent",
    "AgentErrorEvent",
    "AgentRetryEvent",
    "AgentStartEvent",
    "AsyncCallbackHandler",
    "AsyncCallbackManager",
    "BaseCallbackHandler",
    "BaseEvent",
    "BudgetExceededEvent",
    "BudgetWarningEvent",
    # Base handlers
    "CallbackHandlerMixin",
    # Managers
    "CallbackManager",
    # Events
    "EventType",
    "FallbackEvent",
    "FileCallbackHandler",
    "Handler",
    "MemoryReadEvent",
    "MemoryWriteEvent",
    "MetricsCallbackHandler",
    "ParallelEndEvent",
    "ParallelStartEvent",
    "PlanCreatedEvent",
    "PruneEvent",
    "RunEndEvent",
    "RunStartEvent",
    # Built-in handlers
    "StdoutCallbackHandler",
    "TokenEvent",
    "ToolEndEvent",
    "ToolErrorEvent",
    "ToolStartEvent",
    "TopologyChangedEvent",
    "collect_metrics",
    "configure_async_callbacks",
    "configure_callbacks",
    "get_callback_manager",
    "set_callback_manager",
    # Context
    "trace_as_callback",
]