Manages context, memory, and tools for program execution.
ctx: External input data (read-only)memory: Mutable state passed through evaluationtools: Tool registry
Kernel environments construct this context at the evaluator boundary.
Summary
Functions
Retrieves a value from context (external data).
Retrieves a value from memory (mutable state).
Creates a new context with external data, memory, tools, and optional turn history.
Sets a value in memory.
Types
Functions
Retrieves a value from context (external data).
Returns {:ok, nil} if key doesn't exist.
Examples
iex> ctx = PtcRunner.Lisp.Context.new(%{"users" => [1, 2, 3]})
iex> PtcRunner.Lisp.Context.get_ctx(ctx, "users")
{:ok, [1, 2, 3]}
iex> ctx = PtcRunner.Lisp.Context.new()
iex> PtcRunner.Lisp.Context.get_ctx(ctx, "missing")
{:ok, nil}
Retrieves a value from memory (mutable state).
Returns {:ok, nil} if key doesn't exist.
Examples
iex> ctx = PtcRunner.Lisp.Context.new(%{}, %{"counter" => 42})
iex> PtcRunner.Lisp.Context.get_memory(ctx, "counter")
{:ok, 42}
iex> ctx = PtcRunner.Lisp.Context.new()
iex> PtcRunner.Lisp.Context.get_memory(ctx, "missing")
{:ok, nil}
Creates a new context with external data, memory, tools, and optional turn history.
Examples
iex> ctx = PtcRunner.Lisp.Context.new(%{"users" => [1, 2, 3]})
iex> ctx.ctx
%{"users" => [1, 2, 3]}
iex> ctx = PtcRunner.Lisp.Context.new(%{}, %{"counter" => 0})
iex> ctx.memory
%{"counter" => 0}
Sets a value in memory.
Examples
iex> ctx = PtcRunner.Lisp.Context.new()
iex> ctx = PtcRunner.Lisp.Context.put_memory(ctx, "result", 100)
iex> ctx.memory
%{"result" => 100}