ol.llx.agent

platforms: clj, cljs

Public runtime wrapper for the agent loop.

This namespace wires runtime state, effect environment dependencies,
and subscription management around `ol.llx.agent.loop` + `ol.llx.agent.fx`.

create-initial-state

clj

platforms: clj

(create-initial-state schema-registry opts)

cljs

platforms: cljs

(create-initial-state schema-registry opts)

default-convert-to-llm

clj

platforms: clj

(default-convert-to-llm messages)

Converts agent messages to LLM-compatible messages by keeping only maps whose :role is one of :user, :assistant, or :tool-result.

cljs

platforms: cljs

(default-convert-to-llm messages)

Converts agent messages to LLM-compatible messages by keeping only maps whose :role is one of :user, :assistant, or :tool-result.


create-agent

clj

platforms: clj

(create-agent)
(create-agent opts)

Creates an agent runtime handle.

Required options:
- `:tools`             vector of tools
`opts` may include:
- `:convert-to-llm`    `(fn [messages])`; defaults to filtering
                       messages to roles `:user`, `:assistant`,
                       `:tool-result`
- `:transform-context` optional context transform hook
- `:stream-fn`         optional stream hook; resolved at callsite
- `:schema-registry`   extra Malli registry to be composed with the built-in schemas
- `:custom-message-schemas` map of message dispatch keyword to schema keyword in the active registry
- `:session-id`, `:get-api-key`, `:thinking-budgets`, `:max-retry-delay-ms`
- `:system-prompt`, `:model`, `:thinking-level`
- `:steering-mode`, `:follow-up-mode`
- `:abort-signal`

For state rehydration, use rehydrate-agent.

cljs

platforms: cljs

(create-agent)
(create-agent opts)

Creates an agent runtime handle.

Required options:
- `:tools`             vector of tools
`opts` may include:
- `:convert-to-llm`    `(fn [messages])`; defaults to filtering
                       messages to roles `:user`, `:assistant`,
                       `:tool-result`
- `:transform-context` optional context transform hook
- `:stream-fn`         optional stream hook; resolved at callsite
- `:schema-registry`   extra Malli registry to be composed with the built-in schemas
- `:custom-message-schemas` map of message dispatch keyword to schema keyword in the active registry
- `:session-id`, `:get-api-key`, `:thinking-budgets`, `:max-retry-delay-ms`
- `:system-prompt`, `:model`, `:thinking-level`
- `:steering-mode`, `:follow-up-mode`
- `:abort-signal`

For state rehydration, use rehydrate-agent.


rehydrate-agent

clj

platforms: clj

(rehydrate-agent state opts)

Creates an agent runtime from a previously persisted state snapshot.

 `state` must satisfy `:ol.llx.agent.loop/state`.
 `opts` carries runtime dependencies and may include:
 - `:convert-to-llm` (optional; see <<create-agent,`create-agent`>>)
 - `:transform-context` (optional; see <<create-agent,`create-agent`>>)
 - `:stream-fn` (optional; see <<create-agent,`create-agent`>>)
 - `:schema-registry` (optional; see <<create-agent,`create-agent`>>)
 - `:custom-message-schemas` (optional; see <<create-agent,`create-agent`>>)
 - `:session-id`, `:get-api-key`, `:thinking-budgets`, `:max-retry-delay-ms`
- `:tools`
- `:abort-signal`.

cljs

platforms: cljs

(rehydrate-agent state opts)

Creates an agent runtime from a previously persisted state snapshot.

 `state` must satisfy `:ol.llx.agent.loop/state`.
 `opts` carries runtime dependencies and may include:
 - `:convert-to-llm` (optional; see <<create-agent,`create-agent`>>)
 - `:transform-context` (optional; see <<create-agent,`create-agent`>>)
 - `:stream-fn` (optional; see <<create-agent,`create-agent`>>)
 - `:schema-registry` (optional; see <<create-agent,`create-agent`>>)
 - `:custom-message-schemas` (optional; see <<create-agent,`create-agent`>>)
 - `:session-id`, `:get-api-key`, `:thinking-budgets`, `:max-retry-delay-ms`
- `:tools`
- `:abort-signal`.

state

clj

platforms: clj

(state agent)

Returns the current agent state snapshot.

cljs

platforms: cljs

(state agent)

Returns the current agent state snapshot.


subscribe

clj

platforms: clj

(subscribe agent)
(subscribe agent ch)

Subscribes a channel to the agent event stream.

  • (subscribe agent) creates and returns a buffered channel.

  • (subscribe agent ch) taps the provided channel and returns it.

cljs

platforms: cljs

(subscribe agent)
(subscribe agent ch)

Subscribes a channel to the agent event stream.

  • (subscribe agent) creates and returns a buffered channel.

  • (subscribe agent ch) taps the provided channel and returns it.


unsubscribe

clj

platforms: clj

(unsubscribe agent ch)

Unsubscribes a channel from the agent event stream and closes it.

cljs

platforms: cljs

(unsubscribe agent ch)

Unsubscribes a channel from the agent event stream and closes it.


dispatch!

clj

platforms: clj

(dispatch! agent command)

cljs

platforms: cljs

(dispatch! agent command)

prompt

clj

platforms: clj

(prompt agent messages)

Submits a prompt command to the agent runtime.

cljs

platforms: cljs

(prompt agent messages)

Submits a prompt command to the agent runtime.


continue

clj

platforms: clj

(continue agent)

Submits a continue command to the agent runtime.

cljs

platforms: cljs

(continue agent)

Submits a continue command to the agent runtime.


abort

clj

platforms: clj

(abort agent)

Submits an abort command to the agent runtime.

cljs

platforms: cljs

(abort agent)

Submits an abort command to the agent runtime.


steer

clj

platforms: clj

(steer agent messages)

Queues steering messages.

cljs

platforms: cljs

(steer agent messages)

Queues steering messages.


follow-up

clj

platforms: clj

(follow-up agent messages)

Queues follow-up messages.

cljs

platforms: cljs

(follow-up agent messages)

Queues follow-up messages.


wait-for-idle

clj

platforms: clj

(wait-for-idle agent)
(wait-for-idle agent max-polls)

Waits until the agent reaches :ol.llx.agent.loop/idle or :ol.llx.agent.loop/closed.

Resolves `true` when idle/closed, or `false` after the polling budget is
exhausted.

cljs

platforms: cljs

(wait-for-idle agent)
(wait-for-idle agent max-polls)

Waits until the agent reaches :ol.llx.agent.loop/idle or :ol.llx.agent.loop/closed.

Resolves `true` when idle/closed, or `false` after the polling budget is
exhausted.

set-system-prompt

clj

platforms: clj

(set-system-prompt agent system-prompt)

cljs

platforms: cljs

(set-system-prompt agent system-prompt)

set-model

clj

platforms: clj

(set-model agent model)

cljs

platforms: cljs

(set-model agent model)

set-thinking-level

clj

platforms: clj

(set-thinking-level agent thinking-level)

cljs

platforms: cljs

(set-thinking-level agent thinking-level)

set-tools

clj

platforms: clj

(set-tools agent tools)

cljs

platforms: cljs

(set-tools agent tools)

set-steering-mode

clj

platforms: clj

(set-steering-mode agent mode)

cljs

platforms: cljs

(set-steering-mode agent mode)

set-follow-up-mode

clj

platforms: clj

(set-follow-up-mode agent mode)

cljs

platforms: cljs

(set-follow-up-mode agent mode)

replace-messages

clj

platforms: clj

(replace-messages agent messages)

cljs

platforms: cljs

(replace-messages agent messages)

append-message

clj

platforms: clj

(append-message agent message)

cljs

platforms: cljs

(append-message agent message)

clear-messages

clj

platforms: clj

(clear-messages agent)

cljs

platforms: cljs

(clear-messages agent)

clear-steering-queue

clj

platforms: clj

(clear-steering-queue agent)

cljs

platforms: cljs

(clear-steering-queue agent)

clear-follow-up-queue

clj

platforms: clj

(clear-follow-up-queue agent)

cljs

platforms: cljs

(clear-follow-up-queue agent)

clear-all-queues

clj

platforms: clj

(clear-all-queues agent)

cljs

platforms: cljs

(clear-all-queues agent)

reset

clj

platforms: clj

(reset agent)

cljs

platforms: cljs

(reset agent)

close

clj

platforms: clj

(close agent)

Closes the command channel and marks state as closed.

cljs

platforms: cljs

(close agent)

Closes the command channel and marks state as closed.