ADK for TypeScript: API Reference
    Preparing search index...

    Class Agent

    An agent that uses a large language model to generate responses.

    Hierarchy (View Summary)

    Constructors

    Properties

    "[BASE_AGENT_SIGNATURE_SYMBOL]": true

    A unique symbol to identify ADK agent classes.

    "[BASE_NODE_SIGNATURE_SYMBOL]": true

    Brand identifying this object as a BaseNode (see isBaseNode).

    "[LLM_AGENT_SIGNATURE_SYMBOL]": true

    A unique symbol to identify ADK LLM agent class.

    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.

    Each callback takes a single Context argument. Returning Content emits it as the agent's response, appended to the event history; return undefined to leave the response as the agent produced it.

    afterModelCallback?: AfterModelCallback
    afterToolCallback?: AfterToolCallback
    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.

    Each callback takes a single Context argument. Returning Content skips this agent's own run — its runAsyncImpl body and its afterAgentCallback — and emits the returned content as this agent's response; return undefined to let the run proceed.

    That skip is scoped to this agent. It sets endInvocation on the invocation context the agent created for itself, which is a copy of its parent's, so callers above are unaffected: a SequentialAgent still runs the remaining sub-agents.

    beforeModelCallback?: BeforeModelCallback
    beforeToolCallback?: BeforeToolCallback
    codeExecutor?: BaseCodeExecutor

    The config this agent was constructed from.

    Stored so clone can rebuild the agent by re-running the concrete constructor with overrides applied, which re-derives all state correctly instead of copying an already-mutated instance. Shallow-copied so later external mutation of the caller's object does not leak into clones.

    description: string
    disallowTransferToParent: boolean
    disallowTransferToPeers: boolean
    generateContentConfig?: GenerateContentConfig
    globalInstruction: string | InstructionProvider

    Use GlobalInstructionPlugin instead.

    includeContents: "default" | "none"
    includeContentsExplicit: boolean

    Whether includeContents was set by the caller rather than defaulted.

    A workflow node runs its agent for a single turn on the input the graph handed it, so the agent must not also read the surrounding conversation — unless the author asked for it. Mirrors Python checking 'include_contents' in agent.model_fields_set.

    inputSchema?: Schema
    inputSchemaSource?: SchemaLike

    The input schema exactly as it was supplied, before conversion into the genai dialect.

    inputSchema is normalized to a genai Schema because that is what the model API and function declarations require, but that conversion is lossy: a Zod refinement, transform, or custom error message has no genai equivalent. Validation therefore uses the original, falling back to the converted form when the schema was given in the genai dialect to begin with.

    instruction: string | InstructionProvider
    isolationScope?: string | true
    mode?: "single_turn" | "task"
    model?: string | BaseLlm
    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.

    outputKey?: string
    outputSchema?: Schema
    outputSchemaSource?: SchemaLike

    The output schema as supplied — see inputSchemaSource.

    parentAgent?: BaseAgent<BaseAgentConfig>

    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.

    planner?: BasePlanner
    preparedRetryConfig?: PreparedRetryConfig

    The retry config with its exception filter normalized once, up front (see prepareRetryConfig). Used by the node runner so the retry hot path never re-normalizes or throws on a malformed config mid-retry.

    requestProcessors: BaseLlmRequestProcessor[]
    rerunOnResume: boolean
    responseProcessors: BaseLlmResponseProcessor[]
    retryConfig?: RetryConfig
    stateSchema?: SchemaLike

    The sub-agents of this agent.

    timeout?: number
    tools: ToolUnion[]
    waitForOutput: boolean

    Accessors

    • get requiresAllPredecessors(): boolean

      Whether this node must wait for ALL of its predecessors to trigger before it runs (fan-in barrier). Overridden by JoinNode.

      Returns boolean

    Methods

    • The resolved globalInstruction field to construct global instruction.

      This method is only for use by Agent Development Kit.

      Parameters

      Returns Promise<{ instruction: string; requireStateInjection: boolean }>

      The resolved globalInstruction field.

      Use GlobalInstructionPlugin instead.

    • The resolved instruction field to construct instruction for this agent.

      This method is only for use by Agent Development Kit.

      Parameters

      Returns Promise<{ instruction: string; requireStateInjection: boolean }>

      The resolved instruction field.

    • Creates a copy of this agent with the given config fields overridden.

      The clone is a detached root: its parentAgent is always undefined. Sub-agents are recursively cloned (and re-parented to the clone) unless subAgents is overridden. Rebuilding via the concrete constructor re-derives all state, so a cloned LlmAgent gets a fresh requestProcessors array rather than sharing the original's. See google/adk-js#534.

      Parameters

      • Optionaloverrides: Partial<LlmAgentConfig>

        Config fields to override on the clone. Overriding parentAgent is rejected: parentage is assigned only when a parent agent is constructed with its sub-agents.

      Returns this

      A new detached agent instance of the same concrete class.

    • Runs the node, normalizing every yielded item into an Event. This is what the engine (and ctx.runNode()) consumes. Validates the input against inputSchema once, up front (skipping genai Content, which nodes coerce themselves).

      Parameters

      Returns AsyncGenerator<Event, void, void>

    • Runs this agent as a workflow node.

      Where BaseAgent.runImpl delegates straight to runAsync, an LlmAgent has a node input to inject into the conversation, instruction placeholders to resolve against it, a reply to promote to node output, and — in task mode — a finish_task round-trip to drive. All of that lives in runLlmAgentAsNode, mirroring adk-python's LlmAgent._run_impl delegating to run_llm_agent_as_node.

      Parameters

      Returns AsyncGenerator<Event, void, void>

    • Validates node input against inputSchema (Content passes through). Only enforced for Zod schemas; a genai Schema is left unvalidated (see parseWithSchema).

      Parameters

      • input: unknown

      Returns unknown

    • Validates a value against this agent's output schema, in whichever dialect it was declared, and returns the parsed value.

      Prefers the schema as supplied (outputSchemaSource) over the genai form derived from it, since the conversion drops constraints Zod can express and genai cannot.

      Parameters

      • value: unknown

      Returns unknown

      if the value does not satisfy the schema.