Skip to main content

Where each hook plugs in

The runtime never reaches inside your plugin. Every contribution flows through one of these channels.

The ten contribution channels at a glance

The first four are declarative properties (data the runtime reads); the rest are hooks (methods the runtime calls). A middleware can declare any of the six LangChain hooks above. There is no onError middleware hook — to handle an LLM or tool error inside a middleware, wrap the call in wrapModelCall / wrapToolCall with try/catch. Boot-time hooks (getTools, getSubAgents, getMiddlewares) are called once and the results are cached for every request. The per-request variants run on every agent build — use them only when the contribution depends on live state (e.g. loadedPlugins, current user, rtCtx.shared.*).

Two contexts

A tool registered via boot-time getTools still gets a fresh RuntimeContext when its handler fires. “Boot-time” refers to registration, not execution. See Contexts for the field list.

Error semantics

Write a plugin

Scaffold and ship one.

Manifest

The agent-facing interface.
Source: packages/oracle-runtime/src/plugin-api/oracle-plugin.ts.