Agent
freeact.Agent
Agent(
runtime: ResolvedRuntime,
agent_id: str | None = None,
session_id: str | None = None,
sandbox: bool = False,
sandbox_config: Path | None = None,
cancel_token: CancelToken | None = None,
)
Code action agent that executes Python code and shell commands.
Fulfills user requests by writing code and running it in a stateful IPython kernel provided by ipybox. Variables persist across executions. MCP server tools can be called in two ways:
- JSON tool calls: MCP servers called directly via structured arguments
- Programmatic tool calls (PTC): agent writes Python code that imports
and calls tool APIs, auto-generated from MCP schemas (
mcptools/) or user-defined (gentools/)
All code actions and tool calls require approval. The stream() method
yields ApprovalRequest events that must be
resolved before execution proceeds.
Use as an async context manager or call start()/stop() explicitly.
Initialize the agent.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
runtime
|
ResolvedRuntime
|
Resolved runtime produced by
|
required |
agent_id
|
str | None
|
Identifier for this agent instance. Defaults to
|
None
|
session_id
|
str | None
|
Optional session identifier for persistence.
If |
None
|
sandbox
|
bool
|
Run the kernel in sandbox mode. |
False
|
sandbox_config
|
Path | None
|
Path to custom sandbox configuration. |
None
|
cancel_token
|
CancelToken | None
|
Shared cancellation token. Used internally to propagate parent cancellation to subagents; leave unset otherwise. |
None
|
Raises:
| Type | Description |
|---|---|
ValueError
|
If |
session_id
property
session_id: str | None
Session ID used by this agent, or None when persistence is disabled.
tool_names
property
Names of all registered tools (ipybox tools and MCP server tools).
cancel
cancel() -> None
Cancel the current agent turn.
Sets the cancellation token and interrupts any running kernel
execution. The active stream() call will stop at the next phase
boundary and yield a Cancelled event.
start
async
start() -> None
Restore persisted history, start the code executor and MCP servers.
Automatically called when entering the async context manager.
stop
async
stop() -> None
Stop the code executor and MCP servers.
Automatically called when exiting the async context manager.
stream
async
stream(
prompt: str | Sequence[UserContent],
max_turns: int | None = None,
) -> AsyncIterator[AgentEvent]
Run a single agent turn, yielding events as they occur.
Loops through model responses and tool executions until the model
produces a response without tool calls. All code actions and tool
calls yield an ApprovalRequest that
must be resolved before execution proceeds.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
prompt
|
str | Sequence[UserContent]
|
User message as text or multimodal content sequence. |
required |
max_turns
|
int | None
|
Maximum number of tool-execution rounds. Each round
consists of a model response followed by tool execution.
If |
None
|
Returns:
| Type | Description |
|---|---|
AsyncIterator[AgentEvent]
|
An async event iterator. |
freeact.AgentEvent
dataclass
Base class for all agent stream events.
Carries the agent_id of the agent that produced the event, allowing
callers to distinguish events from a parent agent vs. its subagents.
Tool-related events carry a corr_id; events produced by a subagent
additionally carry the parent task's correlation id in parent_corr_id.
freeact.Response
dataclass
freeact.ResponseChunk
dataclass
freeact.Thoughts
dataclass
freeact.ThoughtsChunk
dataclass
freeact.CodeExecutionOutput
dataclass
CodeExecutionOutput(
text: str | None,
images: list[Path],
truncated: bool = False,
approval_rejected: bool = False,
*,
agent_id: str = "",
corr_id: str = "",
parent_corr_id: str = ""
)
freeact.CodeExecutionOutputChunk
dataclass
freeact.ApprovalRequest
dataclass
ApprovalRequest(
tool_call: ToolCall,
_future: Future[bool] = Future(),
*,
agent_id: str = "",
corr_id: str = "",
parent_corr_id: str = ""
)
Bases: AgentEvent
Pending code action or tool call awaiting approval.
Yielded by Agent.stream() before executing any
code action, shell command, programmatic tool call, JSON tool call, or
subagent task. The affected execution is suspended until approve() is
called.
freeact.ToolOutput
dataclass
freeact.Cancelled
dataclass
freeact.CancelToken
CancelToken()
Cooperative cancellation signal shared across a turn's components.
freeact.ToolCall
dataclass
ToolCall(tool_name: str)
Base class for typed tool call representations.
from_pattern
Reconstruct a ToolCall from a user-edited pattern string.
from_raw
classmethod
to_display
to_display() -> str
Return display text for the approval bar.
Empty string means "fall back to the suggested pattern". Subclasses override this to surface the verbatim action being approved (e.g. a shell command) instead of the permission pattern.
freeact.GenericCall
dataclass
freeact.ShellAction
dataclass
freeact.CodeAction
dataclass
freeact.FileRead
dataclass
freeact.FileWrite
dataclass
freeact.FileEdit
dataclass
freeact.suggest_pattern
freeact.suggest_display
Suggest display text for the approval bar for a tool call.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
tool_call
|
ToolCall
|
The tool call to render in the approval bar. |
required |
Returns:
| Type | Description |
|---|---|
str
|
Display string for the approval bar, or an empty string when the |
str
|
bar should fall back to the suggested permission pattern. |
freeact.parse_pattern
Reconstruct a ToolCall from a user-edited pattern string and an original type.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
pattern
|
str
|
User-edited pattern string from the approval bar. |
required |
template
|
ToolCall
|
Original ToolCall that determines the reconstructed type. |
required |
Returns:
| Type | Description |
|---|---|
ToolCall
|
A ToolCall with pattern fields from the edited string. |