{"version":3,"sources":["../src/agent/core/runner.ts"],"names":[],"mappings":"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","file":"chunk-GONETCFZ.mjs","sourcesContent":["/**\n * EADK Runner\n *\n * Static entry point for executing agents with run/stream/runLive methods.\n * Provides a clean API for starting agent execution.\n */\n\nimport type {\n  EADKAgent,\n  RunConfig,\n  RunResult,\n  RunEvent,\n  LiveSession,\n} from './types';\n\n/**\n * Runner provides static methods for executing agents.\n * This is the primary API for running agents.\n *\n * @example\n * ```ts\n * const result = await Runner.run(myAgent, \"Hello, world!\");\n * console.log(result.output);\n *\n * for await (const event of Runner.stream(myAgent, \"Tell me a joke\")) {\n *   console.log(event.type, event.data);\n * }\n * ```\n */\nexport class Runner {\n  /**\n   * Run an agent to completion and return the result.\n   */\n  static async run(\n    agent: EADKAgent,\n    input: string,\n    config?: RunConfig\n  ): Promise<RunResult> {\n    return agent.run(input, config);\n  }\n\n  /**\n   * Stream events from an agent as they occur.\n   */\n  static async *stream(\n    agent: EADKAgent,\n    input: string,\n    config?: RunConfig\n  ): AsyncIterable<RunEvent> {\n    yield* agent.stream(input, { ...config, streaming: true });\n  }\n\n  /**\n   * Start a live bidirectional session with an agent.\n   * Supports real-time message exchange and optional audio streaming.\n   */\n  static runLive(agent: EADKAgent, config?: RunConfig): LiveSession {\n    const abortController = new AbortController();\n    const messageQueue: string[] = [];\n    const eventQueue: RunEvent[] = [];\n    let resolveNext: ((value: IteratorResult<RunEvent>) => void) | null = null;\n    let closed = false;\n\n    // Process messages in the queue\n    const processQueue = async () => {\n      while (!closed) {\n        if (messageQueue.length === 0) {\n          // Wait for new messages\n          await new Promise<void>((resolve) => {\n            const check = () => {\n              if (messageQueue.length > 0 || closed) {\n                resolve();\n              } else {\n                setTimeout(check, 50);\n              }\n            };\n            check();\n          });\n          continue;\n        }\n\n        const message = messageQueue.shift()!;\n        for await (const event of agent.stream(message, {\n          ...config,\n          streaming: true,\n          abortSignal: abortController.signal,\n        })) {\n          if (resolveNext) {\n            resolveNext({ value: event, done: false });\n            resolveNext = null;\n          } else {\n            eventQueue.push(event);\n          }\n        }\n      }\n    };\n\n    // Start processing\n    processQueue().catch(() => {\n      closed = true;\n    });\n\n    const events: AsyncIterable<RunEvent> = {\n      [Symbol.asyncIterator]() {\n        return {\n          async next(): Promise<IteratorResult<RunEvent>> {\n            if (closed && eventQueue.length === 0) {\n              return { value: undefined as unknown as RunEvent, done: true };\n            }\n\n            if (eventQueue.length > 0) {\n              return { value: eventQueue.shift()!, done: false };\n            }\n\n            return new Promise<IteratorResult<RunEvent>>((resolve) => {\n              resolveNext = resolve;\n            });\n          },\n        };\n      },\n    };\n\n    return {\n      send(message: string) {\n        if (closed) throw new Error('Session is closed');\n        messageQueue.push(message);\n      },\n      events,\n      close() {\n        closed = true;\n        abortController.abort();\n      },\n      get isActive() {\n        return !closed;\n      },\n    };\n  }\n}\n"]}