Agenton API reference
This page summarizes the public Agenton API. Import paths are shown for the symbols commonly used by layer authors and compositor callers.
Layers: agenton.layers
Layer[DepsT, PromptT, UserPromptT, ToolT, ConfigT, RuntimeStateT, RuntimeHandlesT]
Framework-neutral base class for prompt/tool layers.
Class attributes:
type_id: str | None: registry id for config-backed plugin layers.config_type: type[BaseModel]: Pydantic schema for serialized layer config.runtime_state_type: type[BaseModel]: Pydantic schema for snapshot-safe per-session state.runtime_handles_type: type[BaseModel]: Pydantic schema for live runtime handles; usearbitrary_types_allowed=Truefor client/process objects.deps_type: type[LayerDeps]: inferred from the layer generic base or declared explicitly.
Construction and dependency APIs:
from_config(config: ConfigT) -> Self: create a layer from schema-validated config. The default implementation raisesTypeError.dependency_names() -> frozenset[str]: dependency fields declared bydeps_type.bind_deps(deps: Mapping[str, Layer | None]) -> None: bind graph dependencies.new_control(state=LifecycleState.NEW, runtime_state=None) -> LayerControl: create a schema-validated per-session control.
Lifecycle hooks:
on_context_create(control)on_context_resume(control)on_context_suspend(control)on_context_delete(control)enter(control)/lifecycle_enter(control): async context manager entry surface. Overrideenter()only when a layer needs to wrap extra resources.
Prompt/tool authoring surfaces:
prefix_prompts -> Sequence[PromptT]suffix_prompts -> Sequence[PromptT]user_prompts -> Sequence[UserPromptT]tools -> Sequence[ToolT]
Aggregation adapters implemented by typed layer families:
wrap_prompt(prompt: PromptT) -> objectwrap_user_prompt(prompt: UserPromptT) -> objectwrap_tool(tool: ToolT) -> object
LayerControl[RuntimeStateT, RuntimeHandlesT]
Per-layer, per-session lifecycle control.
Fields:
state: LifecycleStateexit_intent: ExitIntentruntime_state: RuntimeStateTruntime_handles: RuntimeHandlesT
Methods:
suspend_on_exit() -> Nonedelete_on_exit() -> None
runtime_state is serialized in session snapshots. runtime_handles is never
serialized and should be rehydrated from runtime state in resume hooks.
Schema defaults and lifecycle enums
EmptyLayerConfigEmptyRuntimeStateEmptyRuntimeHandlesLifecycleState:NEW,ACTIVE,SUSPENDED,CLOSEDExitIntent:DELETE,SUSPEND
Typed layer families: agenton.layers.types
PlainLayer[DepsT, ConfigT, RuntimeStateT, RuntimeHandlesT]PydanticAILayer[DepsT, AgentDepsT, ConfigT, RuntimeStateT, RuntimeHandlesT]
Tagged aggregate item types:
PlainPromptType,PlainUserPromptType,PlainToolTypePydanticAIPromptType,PydanticAIUserPromptType,PydanticAIToolTypeAllPromptTypes,AllUserPromptTypes,AllToolTypes
Compositor: agenton.compositor
Config models
LayerNodeConfig:name,type,config,deps,metadataCompositorConfig:schema_version,layers
Config nodes are pure serializable graph input. Use live instances for Python objects and callables.
Registry
LayerRegistry manually registers config-backed layer classes.
register_layer(layer_type, type_id=None) -> Noneresolve(type_id) -> LayerDescriptordescriptors() -> Mapping[str, LayerDescriptor]
LayerDescriptor exposes type_id, layer_type, config_type,
runtime_state_type, and runtime_handles_type.
Builder
CompositorBuilder(registry) mixes config-backed nodes and live instances.
add_config(config) -> Selfadd_config_layer(name, type, config=None, deps=None) -> Selfadd_instance(name, layer, deps=None) -> Selfbuild(prompt_transformer=None, user_prompt_transformer=None, tool_transformer=None) -> Compositor
Compositor
Compositor[PromptT, ToolT, LayerPromptT, LayerToolT, UserPromptT, LayerUserPromptT]
owns the ordered layer graph.
Construction:
Compositor(layers=..., deps_name_mapping=..., ...)Compositor.from_config(conf, registry=..., ...)
Aggregation properties:
prompts -> list[PromptT]: prefix prompts in layer order, suffix prompts in reverse layer order, then optionalprompt_transformer.user_prompts -> list[UserPromptT]: user prompts in layer order, then optionaluser_prompt_transformer.tools -> list[ToolT]: tools in layer order, then optionaltool_transformer.
Session APIs:
new_session() -> CompositorSessionenter(session=None) -> AsyncIterator[CompositorSession]snapshot_session(session) -> CompositorSessionSnapshotsession_from_snapshot(snapshot) -> CompositorSession
Sessions and snapshots
CompositorSession owns ordered layer controls.
suspend_on_exit() -> Nonedelete_on_exit() -> Nonelayer(name) -> LayerControl
Snapshot models:
LayerSessionSnapshot:name,state,runtime_stateCompositorSessionSnapshot:schema_version,layers
Snapshots reject active sessions and exclude runtime_handles and exit_intent.
Collection layers and transformers
Plain layers: agenton_collections.layers.plain
PromptLayer: config-backed layer withPromptLayerConfig(prefix, user, suffix)andtype_id = "plain.prompt".ObjectLayer: instance-only layer for Python objects.ToolsLayer: instance-only layer for callables.DynamicToolsLayer: instance-only layer for object-bound callables.
Pydantic AI bridge
agenton_collections.layers.pydantic_ai.PydanticAIBridgeLayer exposes
pydantic-ai system prompts, user prompts, and tools while depending on an
ObjectLayer for RunContext.deps.
agenton_collections.transformers.PYDANTIC_AI_TRANSFORMERS provides:
prompt_transformer: mapscompositor.promptsto pydantic-ai system prompt functions.user_prompt_transformer: mapscompositor.user_promptsto pydantic-aiUserContent.tool_transformer: mapscompositor.toolsto pydantic-ai tools.