from dataclasses import dataclass, field from typing import Any, Generic from typing_extensions import TypeVar from .usage import Usage TContext = TypeVar("TContext", default=Any) @dataclass class RunContextWrapper(Generic[TContext]): """This wraps the context object that you passed to `Runner.run()`. It also contains information about the usage of the agent run so far. NOTE: Contexts are not passed to the LLM. They're a way to pass dependencies and data to code you implement, like tool functions, callbacks, hooks, etc. """ context: TContext """The context object (or None), passed by you to `Runner.run()`""" usage: Usage = field(default_factory=Usage) """The usage of the agent run so far. For streamed responses, the usage will be stale until the last chunk of the stream is processed. """