# Module LittleGhost::Agent::Delegation::ClassMethods

Documentation version: Edge

Canonical HTML: https://littleghostai.org/docs/LittleGhost/Agent/Delegation/ClassMethods.html

Exposes delegation declarations on agent classes. These methods become
inheritable DSL entries when the capability is included.

## Instance methods

<a id="method-i-agent_as_tool"></a>
### `#agent_as_tool`

```ruby
#agent_as_tool(agent_class, name: nil, description: nil, model: nil, tools: nil,
          preserve_context: false)
```

Exposes `agent_class` as one ordinary tool.

Pass `preserve_context: true` to retain the delegated agent's
conversational history between calls to that tool instance.

<a id="method-i-agents_as_tools"></a>
### `#agents_as_tools`

```ruby
#agents_as_tools(*agent_classes, **options)
```

Exposes several agent classes as ordinary tools with shared options.

<a id="method-i-assemblies_as_tools"></a>
### `#assemblies_as_tools`

```ruby
#assemblies_as_tools(*assembly_classes, **options)
```

Exposes several assembly classes as ordinary tools with shared options.

<a id="method-i-assembly_as_tool"></a>
### `#assembly_as_tool`

```ruby
#assembly_as_tool(assembly_class, name: nil, description: nil, model: nil, tools: nil,
          preserve_context: false)
```

Exposes an Agent, Workflow, Swarm, or Graph as one ordinary tool. Agent-only
`model` and `tools` overrides are rejected for composites.

<a id="method-i-subagent"></a>
### `#subagent`

```ruby
#subagent(agent_class, kind: nil, description: nil, model: nil, tools: nil, factory: nil, persist: true)
```

Adds `agent_class` as an available managed subagent.

`kind` defaults to the agent ID and `description` defaults to the agent
description. Conversations persist when a session store exists; pass
`persist: false` for invocation-local work.

    subagent ResearchAgent, kind: "research"

<a id="method-i-subagent_long_poll_duration"></a>
### `#subagent_long_poll_duration`

```ruby
subagent_long_poll_duration() -> Float
subagent_long_poll_duration(seconds) -> Float
```

How long `wait_for_subagents` watches for progress before returning.

The default comes from Subagents::Manager. Values must be positive, finite
numbers and are normalized to Float.

<a id="method-i-subagents"></a>
### `#subagents`

```ruby
#subagents(*agent_classes, **options, &resolver)
```

Adds several static subagents and an optional dynamic definition resolver.
