Member Junction
    Preparing search index...

    Abstract base class for agent type implementations.

    Agent types define reusable execution patterns that control how agents behave. Each agent type is associated with a system prompt that guides the LLM's output format and decision-making process. Common agent type patterns include:

    • Loop: Continues executing until a goal is achieved
    • SinglePass: Executes once and returns a result
    • DecisionTree: Makes branching decisions based on conditions
    • Pipeline: Executes a series of steps in sequence

    The agent type's system prompt should be designed to produce output that can be parsed by the DetermineNextStep method to decide what happens next in the agent's execution flow.

    BaseAgentType

    export class LoopAgentType extends BaseAgentType {
    public async DetermineNextStep(): Promise<BaseAgentNextStep> {
    // Parse LLM output to determine if goal is achieved
    const goalAchieved = // ... parsing logic

    return {
    step: goalAchieved ? 'success' : 'action',
    payload: result
    };
    }
    }

    Hierarchy (View Summary)

    Index

    Constructors

    Properties

    _jsonValidator: JSONValidator = ...

    JSON validator instance for cleaning and validating responses

    CURRENT_PAYLOAD_PLACEHOLDER: "_CURRENT_PAYLOAD" = '_CURRENT_PAYLOAD'

    Common placeholder for current payload injection

    Accessors

    • get InjectLoopResultsAsMessage(): boolean

      Determines if loop results should be injected as a temporary user message before the next prompt execution (for LLM reasoning).

      Default: true (most agent types benefit from seeing loop results) Flow agents override to false (deterministic path navigation, no LLM)

      Returns boolean

      true to inject results as message, false to skip

      2.112.0

    • get RequiresAgentLevelPrompts(): boolean

      Indicates whether this agent type requires agent-level prompts (AI Agent Prompts relationship).

      Some agent types (like Flow) use step-level prompts exclusively and don't need agent-level prompts. Other agent types (like Loop) require agent-level prompts for their main reasoning loop.

      Default: true (most agent types require agent-level prompts)

      Returns boolean

      True if agent-level prompts are required, false if optional

      2.113.0

    Methods

    • Called after each loop iteration completes to process results.

      Flow agents use this to apply ActionOutputMapping and update payload. Loop agents typically don't need this (just collect results).

      Type Parameters

      • P

      Parameters

      • iterationResult: {
            actionResults?: ActionResult[];
            currentPayload: P;
            index: number;
            item: any;
            itemVariable: string;
            loopContext: any;
            subAgentResult?: any;
        }

        Results from this iteration

      Returns P

      Modified payload or null for default behavior (just collect result)

      2.112.0

    • Called before each loop iteration to prepare parameters and payload.

      Loop agents use this to resolve template variables ("item.email"). Flow agents typically don't need this (params already resolved).

      Type Parameters

      • P

      Parameters

      • context: {
            actionParams: Record<string, unknown>;
            index: number;
            item: any;
            itemVariable: string;
            loopType: "ForEach" | "While";
            payload: P;
            subAgentRequest?: {
                message: string;
                name: string;
                templateParameters?: Record<string, string>;
            };
        }

        Current iteration context

      Returns {
          actionParams?: Record<string, unknown>;
          payload?: P;
          subAgentRequest?: {
              message: string;
              name: string;
              templateParameters?: Record<string, string>;
          };
      }

      Modified context or null for default behavior

      2.112.0

    • Protected

      Creates a standardized next step object with common defaults

      Type Parameters

      • P

        The payload type

      Parameters

      • step:
            | "Actions"
            | "Chat"
            | "Failed"
            | "ForEach"
            | "Retry"
            | "Sub-Agent"
            | "Success"
            | "While"

        The step type

      • options: Partial<BaseAgentNextStep<P>> = {}

        Additional options to merge

      Returns BaseAgentNextStep<P>

      The next step object

    • Provides agent-type-specific guidance for configuration errors related to missing prompts. This allows each agent type to give contextual help based on its architecture.

      Default implementation provides generic guidance. Agent types should override to provide specific instructions relevant to their configuration requirements.

      Returns string

      Configuration guidance specific to this agent type

      2.113.0

    • Determines how to handle Success or Failed steps when no explicit termination is requested.

      This allows agent types to control their own fallback behavior:

      • Loop agents use default behavior (return null) to process results with their main prompt
      • Flow agents should terminate instead of falling back to prompts (return terminate step)
      • Pipeline agents might want to move to the next stage

      Default implementation returns null, which causes base-agent to fall back to prompt execution if prompts are configured. Agent types can override this to provide custom behavior.

      Type Parameters

      • P = any
      • ATS = any

      Parameters

      Returns Promise<BaseAgentNextStep<P>>

      Custom step to execute, or null for default behavior

      2.113.0

    • This method allows each agent type to initialize its agent-run-specific state package as required. Not all agent types require this and are able to live off just the current payload or other properties passed to them to DetermineNextStep(), but some require more complex internal state tracking.

      Type Parameters

      • ATS = any
      • P = any

      Parameters

      Returns Promise<ATS>

      the fully initialized initial agent-type state

    • Injects a payload into the prompt parameters. For LoopAgentType, this could be used to inject previous loop results or context.

      Type Parameters

      • T = any
      • ATS = any

      Parameters

      • payload: T

        The payload to inject

      • agentTypeState: ATS
      • prompt: AIPromptParams

        The prompt parameters to update

      • agentInfo: { agentId: string; agentRunId?: string }

        Agent identification info (unused by LoopAgentType)

      Returns Promise<void>

    • Protected

      Validates that the response conforms to the expected LoopAgentResponse structure.

      Parameters

      • simpleResponse: unknown

      Returns { message?: string; success: boolean }

      True if the response is valid, false otherwise

    • Pre-processes action parameters to resolve conversation references.

      Loop agents get action parameters directly from the LLM's JSON response. This method resolves any "conversation.*" references in those parameters before the actions are executed.

      Type Parameters

      • P = any
      • ATS = any

      Parameters

      • actions: AgentAction[]

        The actions that will be executed (modified in place)

      • currentPayload: P

        The current payload

      • agentTypeState: ATS

        The agent type state

      • currentStep: BaseAgentNextStep<P>

        The current step being executed

      • Optionalparams: ExecuteAgentParams<P>

        The execution parameters with conversation messages

      Returns Promise<void>

      Actions are modified in place

      2.120.0

    • Protected

      Instantiates the appropriate agent type class based on the agent type entity.

      This method uses the MemberJunction class factory to dynamically instantiate agent type classes. It uses the DriverClass field. If DriverClass is not specified it throws an error.

      Parameters

      Returns Promise<BaseAgentType>

      Instance of the agent type class

      // For an agent type with DriverClass "LoopAgentType"
      const agentTypeInstance = await this.getAgentTypeInstance(loopAgentType);

      @protected
    • Helper method that retrieves an instance of the agent type based on the provided agent type entity.

      This method uses the ClassFactory to create an instance of the agent type class specified in the DriverClass field of the agent type entity. If the DriverClass is not specified, it throws an error.

      Parameters

      Returns Promise<BaseAgentType>

      An instance of the agent type class

      GetAgentTypeInstance

      If the agent type does not have a DriverClass specified or if instantiation fails