PtcRunner.SubAgent.Namespace.User (PtcRunner v0.9.0)

Copy Markdown View Source

Renders the user/ namespace section (LLM-defined functions and values).

Summary

Functions

Render user/ namespace section for USER message.

Functions

render(memory, opts)

@spec render(
  map(),
  keyword()
) :: String.t() | nil

Render user/ namespace section for USER message.

Returns nil for empty memory maps, otherwise a formatted string with header and entries showing functions (with params and optional return type) and values (with type and optional sample).

Functions are listed first, then values, both sorted alphabetically (DEF-009). Samples are only shown when has_println is false (SAM-001, SAM-002).

Options

  • :has_println - Boolean, controls whether samples are shown (default: false)
  • :sample_limit - Max items to show in collections (default: 3)
  • :sample_printable_limit - Max chars for strings (default: 80)

Examples

iex> PtcRunner.SubAgent.Namespace.User.render(%{}, [])
nil

iex> closure = {:closure, [{:var, :x}], nil, %{}, [], %{}}
iex> PtcRunner.SubAgent.Namespace.User.render(%{double: closure}, [])
";; === user/ (your prelude) ===\n(double [x])"

iex> closure = {:closure, [{:var, :x}], nil, %{}, [], %{return_type: "integer"}}
iex> PtcRunner.SubAgent.Namespace.User.render(%{double: closure}, [])
";; === user/ (your prelude) ===\n(double [x]) -> integer"

iex> closure = {:closure, [{:var, :x}], nil, %{}, [], %{docstring: "Doubles x"}}
iex> PtcRunner.SubAgent.Namespace.User.render(%{double: closure}, [])
";; === user/ (your prelude) ===\n(double [x])                  ; \"Doubles x\""

iex> closure = {:closure, [{:var, :x}], nil, %{}, [], %{docstring: "Doubles x", return_type: "integer"}}
iex> PtcRunner.SubAgent.Namespace.User.render(%{double: closure}, [])
";; === user/ (your prelude) ===\n(double [x])                  ; \"Doubles x\" -> integer"

iex> PtcRunner.SubAgent.Namespace.User.render(%{total: 42}, [])
";; === user/ (your prelude) ===\ntotal                         ; = integer, sample: 42"

iex> PtcRunner.SubAgent.Namespace.User.render(%{total: 42}, has_println: true)
";; === user/ (your prelude) ===\ntotal                         ; = integer"

iex> PtcRunner.SubAgent.Namespace.User.render(%{_secret: "token123"}, [])
";; === user/ (your prelude) ===\n_secret                       ; = string, [Hidden]"