{"version":3,"sources":["../../../src/agent/react/use-agent.ts","../../../src/agent/react/use-agent-stream.ts","../../../src/agent/react/agent-provider.tsx"],"names":["useState","useRef","useCallback"],"mappings":"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","file":"index.mjs","sourcesContent":["/**\n * useAgent Hook\n *\n * React hook for running agents with state management.\n */\n\nimport { useState, useCallback, useRef } from 'react';\nimport type { EADKAgent, RunConfig, RunResult, RunEvent } from '../core/types';\n\nexport interface UseAgentOptions {\n  /** Agent to use */\n  agent: EADKAgent;\n  /** Default run config */\n  config?: RunConfig;\n  /** Callback when run completes */\n  onComplete?: (result: RunResult) => void;\n  /** Callback on error */\n  onError?: (error: Error) => void;\n}\n\nexport interface UseAgentReturn {\n  /** Run the agent with input */\n  run: (input: string, config?: RunConfig) => Promise<RunResult>;\n  /** Whether the agent is currently running */\n  isRunning: boolean;\n  /** Last result */\n  result: RunResult | null;\n  /** Last error */\n  error: Error | null;\n  /** Abort the current run */\n  abort: () => void;\n  /** Reset state */\n  reset: () => void;\n}\n\nexport function useAgent(options: UseAgentOptions): UseAgentReturn {\n  const [isRunning, setIsRunning] = useState(false);\n  const [result, setResult] = useState<RunResult | null>(null);\n  const [error, setError] = useState<Error | null>(null);\n  const abortControllerRef = useRef<AbortController | null>(null);\n\n  const run = useCallback(\n    async (input: string, config?: RunConfig): Promise<RunResult> => {\n      setIsRunning(true);\n      setError(null);\n\n      const controller = new AbortController();\n      abortControllerRef.current = controller;\n\n      try {\n        const mergedConfig: RunConfig = {\n          ...options.config,\n          ...config,\n          abortSignal: controller.signal,\n        };\n\n        const runResult = await options.agent.run(input, mergedConfig);\n        setResult(runResult);\n        options.onComplete?.(runResult);\n        return runResult;\n      } catch (err) {\n        const runError = err instanceof Error ? err : new Error(String(err));\n        setError(runError);\n        options.onError?.(runError);\n        throw runError;\n      } finally {\n        setIsRunning(false);\n        abortControllerRef.current = null;\n      }\n    },\n    [options]\n  );\n\n  const abort = useCallback(() => {\n    abortControllerRef.current?.abort();\n  }, []);\n\n  const reset = useCallback(() => {\n    setResult(null);\n    setError(null);\n    setIsRunning(false);\n  }, []);\n\n  return { run, isRunning, result, error, abort, reset };\n}\n","/**\n * useAgentStream Hook\n *\n * React hook for streaming agent events with real-time updates.\n */\n\nimport { useState, useCallback, useRef } from 'react';\nimport type { EADKAgent, RunConfig, RunEvent, RunResult } from '../core/types';\n\nexport interface UseAgentStreamOptions {\n  /** Agent to use */\n  agent: EADKAgent;\n  /** Default run config */\n  config?: RunConfig;\n  /** Callback for each event */\n  onEvent?: (event: RunEvent) => void;\n  /** Callback when stream completes */\n  onComplete?: (result: RunResult | null) => void;\n  /** Callback on error */\n  onError?: (error: Error) => void;\n}\n\nexport interface UseAgentStreamReturn {\n  /** Start streaming */\n  stream: (input: string, config?: RunConfig) => Promise<void>;\n  /** Whether streaming is active */\n  isStreaming: boolean;\n  /** Accumulated text output */\n  text: string;\n  /** All events received */\n  events: RunEvent[];\n  /** Final result (when stream completes) */\n  result: RunResult | null;\n  /** Error if any */\n  error: Error | null;\n  /** Abort the stream */\n  abort: () => void;\n  /** Reset state */\n  reset: () => void;\n}\n\nexport function useAgentStream(\n  options: UseAgentStreamOptions\n): UseAgentStreamReturn {\n  const [isStreaming, setIsStreaming] = useState(false);\n  const [text, setText] = useState('');\n  const [events, setEvents] = useState<RunEvent[]>([]);\n  const [result, setResult] = useState<RunResult | null>(null);\n  const [error, setError] = useState<Error | null>(null);\n  const abortControllerRef = useRef<AbortController | null>(null);\n\n  const stream = useCallback(\n    async (input: string, config?: RunConfig): Promise<void> => {\n      setIsStreaming(true);\n      setError(null);\n      setText('');\n      setEvents([]);\n      setResult(null);\n\n      const controller = new AbortController();\n      abortControllerRef.current = controller;\n\n      try {\n        const mergedConfig: RunConfig = {\n          ...options.config,\n          ...config,\n          streaming: true,\n          abortSignal: controller.signal,\n        };\n\n        let finalResult: RunResult | null = null;\n\n        for await (const event of options.agent.stream(input, mergedConfig)) {\n          if (controller.signal.aborted) break;\n\n          setEvents((prev) => [...prev, event]);\n          options.onEvent?.(event);\n\n          // Accumulate text from LLM chunks\n          if (event.data.type === 'llm_chunk') {\n            const chunk = event.data as {\n              type: 'llm_chunk';\n              text: string;\n              tokenIndex: number;\n            };\n            setText((prev) => prev + chunk.text);\n          }\n\n          // Capture final result\n          if (event.data.type === 'agent_end') {\n            const endData = event.data as {\n              type: 'agent_end';\n              result: RunResult;\n            };\n            finalResult = endData.result;\n          }\n        }\n\n        setResult(finalResult);\n        options.onComplete?.(finalResult);\n      } catch (err) {\n        if ((err as Error).name !== 'AbortError') {\n          const streamError =\n            err instanceof Error ? err : new Error(String(err));\n          setError(streamError);\n          options.onError?.(streamError);\n        }\n      } finally {\n        setIsStreaming(false);\n        abortControllerRef.current = null;\n      }\n    },\n    [options]\n  );\n\n  const abort = useCallback(() => {\n    abortControllerRef.current?.abort();\n  }, []);\n\n  const reset = useCallback(() => {\n    setText('');\n    setEvents([]);\n    setResult(null);\n    setError(null);\n    setIsStreaming(false);\n  }, []);\n\n  return { stream, isStreaming, text, events, result, error, abort, reset };\n}\n","/**\n * AgentProvider\n *\n * React context provider for sharing agent configuration across components.\n */\n\nimport React, { createContext, useContext, useMemo } from 'react';\nimport type { EADKAgent, RunConfig } from '../core/types';\n\nexport interface AgentContextValue {\n  /** Registered agents by name */\n  agents: Record<string, EADKAgent>;\n  /** Default run configuration */\n  defaultConfig?: RunConfig;\n  /** Get an agent by name */\n  getAgent: (name: string) => EADKAgent | undefined;\n}\n\nconst AgentContext = createContext<AgentContextValue | null>(null);\n\nexport interface AgentProviderProps {\n  /** Agents to make available */\n  agents: EADKAgent[];\n  /** Default run configuration */\n  defaultConfig?: RunConfig;\n  /** Children */\n  children: React.ReactNode;\n}\n\nexport function AgentProvider({\n  agents,\n  defaultConfig,\n  children,\n}: AgentProviderProps) {\n  const value = useMemo<AgentContextValue>(() => {\n    const agentMap: Record<string, EADKAgent> = {};\n    for (const agent of agents) {\n      agentMap[agent.config.name] = agent;\n    }\n\n    return {\n      agents: agentMap,\n      defaultConfig,\n      getAgent: (name: string) => agentMap[name],\n    };\n  }, [agents, defaultConfig]);\n\n  return (\n    <AgentContext.Provider value={value}>{children}</AgentContext.Provider>\n  );\n}\n\n/**\n * Hook to access agent context.\n */\nexport function useAgentContext(): AgentContextValue {\n  const ctx = useContext(AgentContext);\n  if (!ctx) {\n    throw new Error('useAgentContext must be used within an AgentProvider');\n  }\n  return ctx;\n}\n\n/**\n * Hook to get a specific agent by name from the provider.\n */\nexport function useAgentByName(name: string): EADKAgent | undefined {\n  const ctx = useAgentContext();\n  return ctx.getAgent(name);\n}\n"]}