Who runs a tool: the agent (an Issho.Actor), the options of its joins
(:on_behalf_of, :claims, :can), and the instance. A front end
makes it from its caller: Issho.MCP from an MCP call, your code from
the user your app's model works for.
ctx = Issho.Tool.Context.new(MyApp.Issho, %{id: "assistant:#{user.id}", name: "Assistant", kind: :agent},
on_behalf_of: user)The agent joins the rooms it works in and stays between calls, until it
leaves or has been idle for :idle milliseconds (Issho.Agents).
Summary
Functions
A tool's error, as words the model reads.
The agent's participant in the room, joining it if it is not there.
The agent's key in the rooms.
Takes the agent out of the room.
A context: the instance, the agent, and :on_behalf_of, :claims, :can and :idle.
The agent's participant in the room, with the document (the room unless given) open.
A value the agent kept in the room, or nil.
Keeps a value for the agent in the room, for its later calls.
Types
@type t() :: %Issho.Tool.Context{ actor: Issho.Actor.t(), idle: pos_integer(), instance: atom(), opts: keyword() }
Functions
A tool's error, as words the model reads.
The agent's participant in the room, joining it if it is not there.
The agent's key in the rooms.
Takes the agent out of the room.
@spec new(atom(), Issho.Actor.t(), keyword()) :: t()
A context: the instance, the agent, and :on_behalf_of, :claims, :can and :idle.
The agent's participant in the room, with the document (the room unless given) open.
A value the agent kept in the room, or nil.
Keeps a value for the agent in the room, for its later calls.