Messages and providers
types.py · providers/base.py
the loop never sees a vendor object
anthropic
typed blocks · results in a
user message
openai
tool_calls[] · results as
role: "tool"
vLLM · ollama · gateway
a subset, or tool calls
emitted as text
FakeProvider
no I/O · scripted responses
adapter
complete(
messages, tools
) -> Response
class Message(BaseModel):
role
system | user | assistant | tool
content
str
tool_calls
list[ToolCall] — id, name, arguments
tool_results
list[ToolResult] — call_id, content, is_error
synthetic
bool — set when compaction invented this
ToolCall.id = "c_2"
ToolResult.call_id = "c_2"
{{ line }}
{{ caption }}