# Class LoopAgent

A shell agent that run its sub-agents in a loop.

When sub-agent generates an event with escalate or max_iterations are reached, the loop agent will stop.

#### Hierarchy (View Summary)

- BaseAgent
  - LoopAgent

- Defined in agents/loop_agent.ts:50

## Constructors

### constructor

- new LoopAgent(config: LoopAgentConfig): LoopAgent

  #### Parameters

  - config: LoopAgentConfig

  #### Returns LoopAgent

  Overrides BaseAgent.constructor

  - Defined in agents/loop_agent.ts:58

## Properties

### `Readonly`[BASE_AGENT_SIGNATURE_SYMBOL]

"[BASE_AGENT_SIGNATURE_SYMBOL]": true

A unique symbol to identify ADK agent classes.

Inherited from BaseAgent.[BASE_AGENT_SIGNATURE_SYMBOL]

- Defined in agents/base_agent.ts:78

### `Readonly`[LOOP_AGENT_SIGNATURE_SYMBOL]

"[LOOP_AGENT_SIGNATURE_SYMBOL]": true

A unique symbol to identify ADK loop agent class.

- Defined in agents/loop_agent.ts:54

### `Readonly` afterAgentCallback

afterAgentCallback: SingleAgentCallback[]

Callback or list of callbacks to be invoked after the agent run.

When a list of callbacks is provided, the callbacks will be called in the order they are listed until a callback does not return undefined.

#### Param: callbackContext:

MUST be named 'callbackContext' (enforced).

#### Returns

Content: The content to return to the user. When the content is present, the provided content will be used as agent response and appended to event history as agent response.

Inherited from BaseAgent.afterAgentCallback

- Defined in agents/base_agent.ts:147

### `Readonly` beforeAgentCallback

beforeAgentCallback: SingleAgentCallback[]

Callback or list of callbacks to be invoked before the agent run.

When a list of callbacks is provided, the callbacks will be called in the order they are listed until a callback does not return undefined.

#### Param: callbackContext:

MUST be named 'callbackContext' (enforced).

#### Returns

Content: The content to return to the user. When the content is present, the agent run will be skipped and the provided content will be returned to user.

Inherited from BaseAgent.beforeAgentCallback

- Defined in agents/base_agent.ts:133

### `Optional` `Readonly` description

description?: string

Description about the agent's capability.

The model uses this to determine whether to delegate control to the agent. One-line description is enough and preferred.

Inherited from BaseAgent.description

- Defined in agents/base_agent.ts:93

### `Readonly` name

name: string

The agent's name. Agent name must be a JS identifier and unique within the agent tree. Agent name cannot be "user", since it's reserved for end-user's input.

Inherited from BaseAgent.name

- Defined in agents/base_agent.ts:85

### `Optional` parentAgent

parentAgent?: BaseAgent

The parent agent of this agent.

Note that an agent can ONLY be added as sub-agent once.

If you want to add one agent twice as sub-agent, consider to create two agent instances with identical config, but with different name and add them to the agent tree.

The parent agent is the agent that created this agent.

Inherited from BaseAgent.parentAgent

- Defined in agents/base_agent.ts:114

### `Readonly` subAgents

subAgents: BaseAgent[]

The sub-agents of this agent.

Inherited from BaseAgent.subAgents

- Defined in agents/base_agent.ts:119

## Accessors

### rootAgent

- get rootAgent(): BaseAgent

  Root agent of this agent. Computed dynamically by traversing up the parent chain.

  #### Returns BaseAgent

  Inherited from BaseAgent.rootAgent

  - Defined in agents/base_agent.ts:99

## Methods

### `Protected` createInvocationContext

- createInvocationContext(parentContext: InvocationContext): InvocationContext

  Creates an invocation context for this agent.

  #### Parameters

  - parentContext: InvocationContext

    The invocation context of the parent agent.

  #### Returns InvocationContext

  The invocation context for this agent.

  Inherited from BaseAgent.createInvocationContext

  - Defined in agents/base_agent.ts:297

### findAgent

- findAgent(name: string): BaseAgent | undefined

  Finds the agent with the given name in this agent and its descendants.

  #### Parameters

  - name: string

    The name of the agent to find.

  #### Returns BaseAgent | undefined

  The agent with the given name, or undefined if not found.

  Inherited from BaseAgent.findAgent

  - Defined in agents/base_agent.ts:266

### findSubAgent

- findSubAgent(name: string): BaseAgent | undefined

  Finds the agent with the given name in this agent's descendants.

  #### Parameters

  - name: string

    The name of the agent to find.

  #### Returns BaseAgent | undefined

  The agent with the given name, or undefined if not found.

  Inherited from BaseAgent.findSubAgent

  - Defined in agents/base_agent.ts:280

### `Protected` handleAfterAgentCallback

- handleAfterAgentCallback(
  invocationContext: InvocationContext,
  ): Promise<Event | undefined>

  Runs the after agent callback if it exists.

  #### Parameters

  - invocationContext: InvocationContext

    The invocation context of the agent.

  #### Returns Promise<Event | undefined>

  The event to return to the user, or undefined if no event is generated.

  Inherited from BaseAgent.handleAfterAgentCallback

  - Defined in agents/base_agent.ts:356

### `Protected` handleBeforeAgentCallback

- handleBeforeAgentCallback(
  invocationContext: InvocationContext,
  ): Promise<Event | undefined>

  Runs the before agent callback if it exists.

  #### Parameters

  - invocationContext: InvocationContext

    The invocation context of the agent.

  #### Returns Promise<Event | undefined>

  The event to return to the user, or undefined if no event is generated.

  Inherited from BaseAgent.handleBeforeAgentCallback

  - Defined in agents/base_agent.ts:313

### runAsync

- runAsync(parentContext: InvocationContext): AsyncGenerator<Event, void, void>

  Entry method to run an agent via text-based conversation.

  #### Parameters

  - parentContext: InvocationContext

    The invocation context of the parent agent.

  #### Returns AsyncGenerator<Event, void, void>

  An AsyncGenerator that yields the events generated by the agent.

  #### Yields

  The events generated by the agent.

  Inherited from BaseAgent.runAsync

  - Defined in agents/base_agent.ts:169

### `Protected` runAsyncImpl

- runAsyncImpl(context: InvocationContext): AsyncGenerator<Event, void, void>

  Core logic to run this agent via text-based conversation.

  #### Parameters

  - context: InvocationContext

    The invocation context of the agent.

  #### Returns AsyncGenerator<Event, void, void>

  An AsyncGenerator that yields the events generated by the agent.

  #### Yields

  The events generated by the agent.

  Overrides BaseAgent.runAsyncImpl

  - Defined in agents/loop_agent.ts:63

### runLive

- runLive(parentContext: InvocationContext): AsyncGenerator<Event, void, void>

  Entry method to run an agent via video/audio-based conversation.

  #### Parameters

  - parentContext: InvocationContext

    The invocation context of the parent agent.

  #### Returns AsyncGenerator<Event, void, void>

  An AsyncGenerator that yields the events generated by the agent.

  #### Yields

  The events generated by the agent.

  Inherited from BaseAgent.runLive

  - Defined in agents/base_agent.ts:219

### `Protected` runLiveImpl

- runLiveImpl(_context: InvocationContext): AsyncGenerator<Event, void, void>

  Core logic to run this agent via video/audio-based conversation.

  #### Parameters

  - _context: InvocationContext

  #### Returns AsyncGenerator<Event, void, void>

  An AsyncGenerator that yields the events generated by the agent.

  #### Yields

  The events generated by the agent.

  Overrides BaseAgent.runLiveImpl

  - Defined in agents/loop_agent.ts:91