{"version":3,"sources":["../src/agent/orchestration/sequential.ts","../src/agent/orchestration/parallel.ts","../src/agent/orchestration/loop.ts","../src/agent/orchestration/graph.ts","../src/agent/orchestration/handoff.ts"],"names":[],"mappings":"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","file":"chunk-5W3PRFGC.mjs","sourcesContent":["/**\n * Sequential Agent\n *\n * Deterministic pipeline that runs sub-agents in order.\n * Google ADK SequentialAgent pattern.\n */\n\nimport { BaseAgent } from '../core/agent';\nimport type {\n  AgentType,\n  AgentContext,\n  EADKAgentConfig,\n  EADKAgent,\n  RunConfig,\n  RunResult,\n  RunEvent,\n  Message,\n  TokenUsage,\n  ToolCallResult,\n} from '../core/types';\n\nexport interface SequentialAgentConfig extends EADKAgentConfig {\n  name: string;\n  description?: string;\n  instructions: string | ((ctx: AgentContext) => string | Promise<string>);\n  /** Ordered list of agents to run sequentially */\n  pipeline: EADKAgent[];\n  /** Whether to pass previous agent output as next agent input */\n  chainOutputs?: boolean;\n}\n\nexport class SequentialAgent extends BaseAgent {\n  readonly type: AgentType = 'sequential';\n  private readonly pipeline: EADKAgent[];\n  private readonly chainOutputs: boolean;\n\n  constructor(config: SequentialAgentConfig) {\n    super(config);\n    this.pipeline = config.pipeline;\n    this.chainOutputs = config.chainOutputs ?? true;\n  }\n\n  async run(input: string, runConfig?: RunConfig): Promise<RunResult> {\n    const startTime = Date.now();\n    const allMessages: Message[] = [];\n    const allToolCalls: ToolCallResult[] = [];\n    const totalUsage: TokenUsage = {\n      promptTokens: 0,\n      completionTokens: 0,\n      totalTokens: 0,\n    };\n    const guardrailsTriggered: string[] = [];\n\n    let currentInput = input;\n    let lastResult: RunResult | undefined;\n\n    for (const agent of this.pipeline) {\n      const result = await agent.run(currentInput, runConfig);\n\n      allMessages.push(...result.messages);\n      allToolCalls.push(...result.toolCalls);\n      totalUsage.promptTokens += result.usage.promptTokens;\n      totalUsage.completionTokens += result.usage.completionTokens;\n      totalUsage.totalTokens += result.usage.totalTokens;\n      guardrailsTriggered.push(...result.guardrailsTriggered);\n\n      lastResult = result;\n\n      // Chain outputs: use this agent's output as next agent's input\n      if (this.chainOutputs) {\n        currentInput = result.output;\n      }\n    }\n\n    return {\n      output: lastResult?.output ?? '',\n      structuredOutput: lastResult?.structuredOutput,\n      messages: allMessages,\n      toolCalls: allToolCalls,\n      usage: totalUsage,\n      durationMs: Date.now() - startTime,\n      turns: this.pipeline.length,\n      maxTurnsReached: false,\n      guardrailsTriggered,\n    };\n  }\n\n  override async *stream(\n    input: string,\n    runConfig?: RunConfig\n  ): AsyncIterable<RunEvent> {\n    const startTime = Date.now();\n\n    yield {\n      type: 'agent_start',\n      agentName: this.config.name,\n      timestamp: startTime,\n      data: { type: 'agent_start', turn: 0 },\n    };\n\n    let currentInput = input;\n\n    for (let i = 0; i < this.pipeline.length; i++) {\n      const agent = this.pipeline[i];\n\n      for await (const event of agent.stream(currentInput, runConfig)) {\n        yield event;\n\n        // Capture the result for chaining\n        if (event.data.type === 'agent_end' && this.chainOutputs) {\n          currentInput = event.data.result.output;\n        }\n      }\n    }\n  }\n}\n","/**\n * Parallel Agent\n *\n * Concurrent fan-out that runs sub-agents simultaneously.\n * Google ADK ParallelAgent pattern.\n */\n\nimport { BaseAgent } from '../core/agent';\nimport type {\n  AgentType,\n  AgentContext,\n  EADKAgentConfig,\n  EADKAgent,\n  RunConfig,\n  RunResult,\n  RunEvent,\n  Message,\n  TokenUsage,\n  ToolCallResult,\n} from '../core/types';\n\nexport interface ParallelAgentConfig extends EADKAgentConfig {\n  name: string;\n  description?: string;\n  instructions: string | ((ctx: AgentContext) => string | Promise<string>);\n  /** Agents to run in parallel */\n  agents: EADKAgent[];\n  /** How to merge results */\n  mergeStrategy?: 'concatenate' | 'first' | 'best' | 'custom';\n  /** Custom merge function */\n  mergeFn?: (results: RunResult[]) => RunResult;\n}\n\nexport class ParallelAgent extends BaseAgent {\n  readonly type: AgentType = 'parallel';\n  private readonly agents: EADKAgent[];\n  private readonly mergeStrategy: string;\n  private readonly mergeFn?: (results: RunResult[]) => RunResult;\n\n  constructor(config: ParallelAgentConfig) {\n    super(config);\n    this.agents = config.agents;\n    this.mergeStrategy = config.mergeStrategy ?? 'concatenate';\n    this.mergeFn = config.mergeFn;\n  }\n\n  async run(input: string, runConfig?: RunConfig): Promise<RunResult> {\n    const startTime = Date.now();\n\n    // Run all agents concurrently\n    const results = await Promise.all(\n      this.agents.map((agent) => agent.run(input, runConfig))\n    );\n\n    // Merge results based on strategy\n    if (this.mergeFn) {\n      return this.mergeFn(results);\n    }\n\n    return this.mergeResults(results, startTime);\n  }\n\n  private mergeResults(results: RunResult[], startTime: number): RunResult {\n    const allMessages: Message[] = [];\n    const allToolCalls: ToolCallResult[] = [];\n    const totalUsage: TokenUsage = {\n      promptTokens: 0,\n      completionTokens: 0,\n      totalTokens: 0,\n    };\n    const guardrailsTriggered: string[] = [];\n\n    for (const result of results) {\n      allMessages.push(...result.messages);\n      allToolCalls.push(...result.toolCalls);\n      totalUsage.promptTokens += result.usage.promptTokens;\n      totalUsage.completionTokens += result.usage.completionTokens;\n      totalUsage.totalTokens += result.usage.totalTokens;\n      guardrailsTriggered.push(...result.guardrailsTriggered);\n    }\n\n    let output: string;\n    let structuredOutput: unknown;\n\n    switch (this.mergeStrategy) {\n      case 'first':\n        output = results[0]?.output ?? '';\n        structuredOutput = results[0]?.structuredOutput;\n        break;\n      case 'best': {\n        // Pick the result with the most tool calls (proxy for most thorough)\n        const best = results.reduce((a, b) =>\n          a.toolCalls.length >= b.toolCalls.length ? a : b\n        );\n        output = best.output;\n        structuredOutput = best.structuredOutput;\n        break;\n      }\n      case 'concatenate':\n      default:\n        output = results.map((r) => r.output).join('\\n\\n');\n        break;\n    }\n\n    return {\n      output,\n      structuredOutput,\n      messages: allMessages,\n      toolCalls: allToolCalls,\n      usage: totalUsage,\n      durationMs: Date.now() - startTime,\n      turns: results.length,\n      maxTurnsReached: false,\n      guardrailsTriggered,\n    };\n  }\n\n  override async *stream(\n    input: string,\n    runConfig?: RunConfig\n  ): AsyncIterable<RunEvent> {\n    const startTime = Date.now();\n\n    yield {\n      type: 'agent_start',\n      agentName: this.config.name,\n      timestamp: startTime,\n      data: { type: 'agent_start', turn: 0 },\n    };\n\n    // Stream from all agents concurrently using a merge approach\n    const iterators = this.agents.map((agent) =>\n      agent.stream(input, runConfig)\n    );\n\n    // Interleave events from all streams\n    const pending = iterators.map(async (iter) => {\n      const events: RunEvent[] = [];\n      for await (const event of iter) {\n        events.push(event);\n      }\n      return events;\n    });\n\n    const allEvents = await Promise.all(pending);\n    const merged = allEvents.flat().sort((a, b) => a.timestamp - b.timestamp);\n\n    for (const event of merged) {\n      yield event;\n    }\n  }\n}\n","/**\n * Loop Agent\n *\n * Iterative refinement with escalation.\n * Google ADK LoopAgent pattern.\n */\n\nimport { BaseAgent } from '../core/agent';\nimport type {\n  AgentType,\n  AgentContext,\n  EADKAgentConfig,\n  EADKAgent,\n  RunConfig,\n  RunResult,\n  RunEvent,\n  Message,\n  TokenUsage,\n  ToolCallResult,\n} from '../core/types';\n\nexport interface LoopAgentConfig extends EADKAgentConfig {\n  name: string;\n  description?: string;\n  instructions: string | ((ctx: AgentContext) => string | Promise<string>);\n  /** Agent to run in each iteration */\n  agent: EADKAgent;\n  /** Maximum number of iterations */\n  maxIterations?: number;\n  /** experience to continue looping (return true to continue) */\n  shouldContinue: (\n    result: RunResult,\n    iteration: number\n  ) => boolean | Promise<boolean>;\n  /** Transform output between iterations */\n  transformOutput?: (\n    output: string,\n    iteration: number\n  ) => string | Promise<string>;\n  /** Escalation agent (called when maxIterations exceeded) */\n  escalationAgent?: EADKAgent;\n}\n\nexport class LoopAgent extends BaseAgent {\n  readonly type: AgentType = 'loop';\n  private readonly agent: EADKAgent;\n  private readonly maxIterations: number;\n  private readonly shouldContinue: LoopAgentConfig['shouldContinue'];\n  private readonly transformOutput?: LoopAgentConfig['transformOutput'];\n  private readonly escalationAgent?: EADKAgent;\n\n  constructor(config: LoopAgentConfig) {\n    super(config);\n    this.agent = config.agent;\n    this.maxIterations = config.maxIterations ?? 5;\n    this.shouldContinue = config.shouldContinue;\n    this.transformOutput = config.transformOutput;\n    this.escalationAgent = config.escalationAgent;\n  }\n\n  async run(input: string, runConfig?: RunConfig): Promise<RunResult> {\n    const startTime = Date.now();\n    const allMessages: Message[] = [];\n    const allToolCalls: ToolCallResult[] = [];\n    const totalUsage: TokenUsage = {\n      promptTokens: 0,\n      completionTokens: 0,\n      totalTokens: 0,\n    };\n    const guardrailsTriggered: string[] = [];\n\n    let currentInput = input;\n    let lastResult: RunResult | undefined;\n    let iteration = 0;\n\n    while (iteration < this.maxIterations) {\n      const result = await this.agent.run(currentInput, runConfig);\n\n      allMessages.push(...result.messages);\n      allToolCalls.push(...result.toolCalls);\n      totalUsage.promptTokens += result.usage.promptTokens;\n      totalUsage.completionTokens += result.usage.completionTokens;\n      totalUsage.totalTokens += result.usage.totalTokens;\n      guardrailsTriggered.push(...result.guardrailsTriggered);\n\n      lastResult = result;\n      iteration++;\n\n      // Check if we should continue\n      const continueLoop = await this.shouldContinue(result, iteration);\n      if (!continueLoop) break;\n\n      // Transform output for next iteration\n      currentInput = this.transformOutput\n        ? await this.transformOutput(result.output, iteration)\n        : result.output;\n    }\n\n    // Escalate if max iterations reached and shouldContinue still returns true\n    if (iteration >= this.maxIterations && this.escalationAgent && lastResult) {\n      const shouldEscalate = await this.shouldContinue(lastResult, iteration);\n      if (shouldEscalate) {\n        const escalationResult = await this.escalationAgent.run(\n          `Escalation: After ${iteration} iterations, the task was not completed. Last output: ${lastResult.output}`,\n          runConfig\n        );\n\n        allMessages.push(...escalationResult.messages);\n        allToolCalls.push(...escalationResult.toolCalls);\n        totalUsage.promptTokens += escalationResult.usage.promptTokens;\n        totalUsage.completionTokens += escalationResult.usage.completionTokens;\n        totalUsage.totalTokens += escalationResult.usage.totalTokens;\n\n        lastResult = escalationResult;\n      }\n    }\n\n    return {\n      output: lastResult?.output ?? '',\n      structuredOutput: lastResult?.structuredOutput,\n      messages: allMessages,\n      toolCalls: allToolCalls,\n      usage: totalUsage,\n      durationMs: Date.now() - startTime,\n      turns: iteration,\n      maxTurnsReached: iteration >= this.maxIterations,\n      guardrailsTriggered,\n    };\n  }\n}\n","/**\n * Graph Agent\n *\n * Cyclic directed graph with conditional edges, checkpointing, and time travel.\n * LangGraph-inspired orchestration engine.\n */\n\nimport { BaseAgent } from '../core/agent';\nimport { createAgentContext } from '../core/context';\nimport { Session } from '../core/session';\nimport type {\n  AgentType,\n  AgentContext,\n  EADKAgentConfig,\n  RunConfig,\n  RunResult,\n  RunEvent,\n  GraphConfig,\n  GraphNode,\n  GraphEdge,\n  Checkpointer,\n  Message,\n  TokenUsage,\n  ToolCallResult,\n} from '../core/types';\n\nexport interface GraphAgentConfig extends EADKAgentConfig {\n  name: string;\n  description?: string;\n  instructions: string | ((ctx: AgentContext) => string | Promise<string>);\n  /** Graph configuration */\n  graph: GraphConfig;\n}\n\n/**\n * In-memory checkpointer for graph state persistence.\n */\nexport class InMemoryCheckpointer implements Checkpointer {\n  private store = new Map<string, unknown>();\n\n  async save(id: string, state: unknown): Promise<void> {\n    this.store.set(id, structuredClone(state));\n  }\n\n  async load(id: string): Promise<unknown | null> {\n    const data = this.store.get(id);\n    return data ? structuredClone(data) : null;\n  }\n\n  async list(): Promise<string[]> {\n    return [...this.store.keys()];\n  }\n\n  async delete(id: string): Promise<void> {\n    this.store.delete(id);\n  }\n}\n\n/**\n * Special node names for graph control flow.\n */\nexport const END = '__end__';\n\nexport class GraphAgent extends BaseAgent {\n  readonly type: AgentType = 'graph';\n  private readonly graph: GraphConfig;\n\n  constructor(config: GraphAgentConfig) {\n    super(config);\n    this.graph = config.graph;\n  }\n\n  async run(input: string, runConfig?: RunConfig): Promise<RunResult> {\n    const startTime = Date.now();\n    const allMessages: Message[] = [];\n    const allToolCalls: ToolCallResult[] = [];\n    const totalUsage: TokenUsage = {\n      promptTokens: 0,\n      completionTokens: 0,\n      totalTokens: 0,\n    };\n    const guardrailsTriggered: string[] = [];\n\n    const session = runConfig?.session\n      ? new Session(runConfig.session)\n      : new Session();\n\n    const ctx = createAgentContext({\n      agentName: this.config.name,\n      session,\n      computePreference:\n        runConfig?.computePreference ?? this.config.computePreference ?? 'auto',\n      abortSignal: runConfig?.abortSignal,\n    });\n\n    // Graph state\n    let state: Record<string, unknown> = { input, output: '' };\n    let currentNode = this.graph.entryPoint;\n    let stepCount = 0;\n    const maxSteps = runConfig?.maxSteps ?? 50;\n    const visitedNodes: string[] = [];\n\n    while (currentNode !== END && stepCount < maxSteps) {\n      // Check abort\n      if (ctx.abortSignal?.aborted) break;\n\n      const node = this.graph.nodes[currentNode];\n      if (!node) {\n        throw new Error(`Graph node '${currentNode}' not found`);\n      }\n\n      visitedNodes.push(currentNode);\n\n      // Execute node\n      if (node.agent) {\n        const nodeInput =\n          typeof state.output === 'string' && state.output\n            ? state.output\n            : input;\n        const result = await node.agent.run(nodeInput, runConfig);\n\n        allMessages.push(...result.messages);\n        allToolCalls.push(...result.toolCalls);\n        totalUsage.promptTokens += result.usage.promptTokens;\n        totalUsage.completionTokens += result.usage.completionTokens;\n        totalUsage.totalTokens += result.usage.totalTokens;\n        guardrailsTriggered.push(...result.guardrailsTriggered);\n\n        state.output = result.output;\n        state[`${currentNode}_result`] = result;\n      } else if (node.fn) {\n        const result = await node.fn(state, ctx);\n        if (typeof result === 'string') {\n          state.output = result;\n        } else if (result && typeof result === 'object') {\n          state = { ...state, ...(result as Record<string, unknown>) };\n        }\n      }\n\n      // Checkpoint if configured\n      if (this.graph.checkpointer) {\n        const checkpointId = `${session.id}:step-${stepCount}`;\n        await this.graph.checkpointer.save(checkpointId, {\n          state,\n          currentNode,\n          stepCount,\n          visitedNodes: [...visitedNodes],\n        });\n      }\n\n      // Find next node via edges\n      const edge = this.graph.edges.find((e) => e.from === currentNode);\n      if (!edge) {\n        // No outgoing edge — end\n        break;\n      }\n\n      // Resolve next node (may be conditional)\n      if (typeof edge.to === 'function') {\n        currentNode = await edge.to(state);\n      } else {\n        currentNode = edge.to;\n      }\n\n      stepCount++;\n    }\n\n    const output =\n      typeof state.output === 'string'\n        ? state.output\n        : JSON.stringify(state.output);\n\n    return {\n      output,\n      structuredOutput: state,\n      messages: allMessages,\n      toolCalls: allToolCalls,\n      usage: totalUsage,\n      durationMs: Date.now() - startTime,\n      turns: stepCount,\n      maxTurnsReached: stepCount >= maxSteps,\n      guardrailsTriggered,\n    };\n  }\n\n  /**\n   * Resume graph execution from a checkpoint.\n   */\n  async resumeFrom(\n    checkpointId: string,\n    runConfig?: RunConfig\n  ): Promise<RunResult> {\n    if (!this.graph.checkpointer) {\n      throw new Error('Cannot resume without a checkpointer');\n    }\n\n    const checkpoint = (await this.graph.checkpointer.load(checkpointId)) as {\n      state: Record<string, unknown>;\n      currentNode: string;\n      stepCount: number;\n      visitedNodes: string[];\n    } | null;\n\n    if (!checkpoint) {\n      throw new Error(`Checkpoint '${checkpointId}' not found`);\n    }\n\n    // Re-run from the checkpoint state\n    return this.run(checkpoint.state.input as string, runConfig);\n  }\n}\n","/**\n * Handoff System\n *\n * Agent delegation via handoffs.\n * OpenAI Agents SDK pattern.\n */\n\nimport type {\n  Handoff,\n  HandoffResult,\n  EADKAgent,\n  AgentContext,\n  RunConfig,\n} from '../core/types';\n\n/**\n * Create a handoff definition.\n */\nexport function createHandoff(options: {\n  target: EADKAgent;\n  description?: string;\n  contextFilter?: Handoff['contextFilter'];\n  experience?: Handoff['experience'];\n}): Handoff {\n  return {\n    target: options.target,\n    description:\n      options.description ?? `Hand off to ${options.target.config.name}`,\n    contextFilter: options.contextFilter,\n    experience: options.experience,\n  };\n}\n\n/**\n * Execute a handoff to a target agent.\n */\nexport async function executeHandoff(\n  handoff: Handoff,\n  input: string,\n  ctx: AgentContext,\n  runConfig?: RunConfig\n): Promise<HandoffResult> {\n  // Apply context filter if provided\n  let effectiveCtx = ctx;\n  if (handoff.contextFilter) {\n    effectiveCtx = handoff.contextFilter(ctx);\n  }\n\n  // Check experience\n  if (handoff.experience) {\n    const allowed = await handoff.experience(effectiveCtx);\n    if (!allowed) {\n      return {\n        targetAgent: handoff.target.config.name,\n        result: {\n          output: 'Handoff experience not met',\n          messages: [],\n          toolCalls: [],\n          usage: { promptTokens: 0, completionTokens: 0, totalTokens: 0 },\n          durationMs: 0,\n          turns: 0,\n          maxTurnsReached: false,\n          guardrailsTriggered: [],\n        },\n        metadata: { conditionMet: false },\n      };\n    }\n  }\n\n  const result = await handoff.target.run(input, runConfig);\n\n  return {\n    targetAgent: handoff.target.config.name,\n    result,\n    metadata: { conditionMet: true },\n  };\n}\n"]}