@agno-hq/chat-react 0.1.1 → 0.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +407 -21
- package/dist/chat/index.cjs +334 -0
- package/dist/chat/index.cjs.map +1 -0
- package/dist/chat/index.d.cts +1335 -0
- package/dist/chat/index.d.ts +1335 -0
- package/dist/chat/index.js +5 -0
- package/dist/chat/index.js.map +1 -0
- package/dist/chunk-2WM3CCFE.cjs +106 -0
- package/dist/chunk-2WM3CCFE.cjs.map +1 -0
- package/dist/chunk-55HQJGLP.cjs +527 -0
- package/dist/chunk-55HQJGLP.cjs.map +1 -0
- package/dist/chunk-6V2YIPHF.js +503 -0
- package/dist/chunk-6V2YIPHF.js.map +1 -0
- package/dist/chunk-BZC2674Z.js +3501 -0
- package/dist/chunk-BZC2674Z.js.map +1 -0
- package/dist/chunk-JEPFGKHH.cjs +3588 -0
- package/dist/chunk-JEPFGKHH.cjs.map +1 -0
- package/dist/chunk-RE7ZT73K.js +102 -0
- package/dist/chunk-RE7ZT73K.js.map +1 -0
- package/dist/client-DUyVqxU9.d.cts +413 -0
- package/dist/client-DUyVqxU9.d.ts +413 -0
- package/dist/core/index.cjs +94 -0
- package/dist/core/index.cjs.map +1 -0
- package/dist/core/index.d.cts +108 -0
- package/dist/core/index.d.ts +108 -0
- package/dist/core/index.js +5 -0
- package/dist/core/index.js.map +1 -0
- package/dist/fonts.css +18 -0
- package/dist/index.cjs +415 -1954
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +12 -835
- package/dist/index.d.ts +12 -835
- package/dist/index.js +3 -1920
- package/dist/index.js.map +1 -1
- package/dist/styles.css +2102 -659
- package/dist/tokens.css +111 -0
- package/package.json +50 -7
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/stream.ts","../src/client.ts","../src/events.ts","../src/session.ts","../src/useAgnoChat.ts","../src/components/ChatInput.tsx","../src/components/HumanInput.tsx","../src/components/Citations.tsx","../src/components/Markdown.tsx","../src/components/ToolCalls.tsx","../src/components/MemberResponses.tsx","../src/components/Multimedia.tsx","../src/components/Reasoning.tsx","../src/components/WorkflowSteps.tsx","../src/components/Message.tsx","../src/components/MessageList.tsx","../src/components/ChatWindow.tsx","../src/components/EntitySelector.tsx","../src/components/EventLog.tsx","../src/components/SessionList.tsx","../src/components/AgnoChat.tsx","../src/components/StatusIndicator.tsx","../src/types.ts"],"names":["id","label","pausedTools","useState","useRef","useMemo","name","jsxs","jsx","useEffect","RunEvent","TeamRunEvent","WorkflowRunEvent"],"mappings":"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","file":"index.js","sourcesContent":["/**\n * Streaming parser for AgentOS run endpoints.\n *\n * AgentOS streams a run as a sequence of JSON objects concatenated on the wire\n * (not strictly newline-delimited). Each object is one \"run event\". This module\n * reads the response body incrementally, extracts complete JSON objects as they\n * arrive, and hands each one to a callback.\n *\n * It supports both the legacy shape (the event object sent directly) and the\n * newer envelope shape ({ event: string, data: string | object }), normalising\n * both into a flat event object with an `event` discriminator field.\n */\n\nimport type { RunEvent } from './types'\n\n/** A parsed, normalised run event. Shape varies by `event` type — see types.ts. */\nexport interface StreamEvent {\n event: RunEvent | string\n [key: string]: unknown\n}\n\ninterface Envelope {\n event: string\n data: string | Record<string, unknown>\n}\n\nfunction isEnvelope(data: unknown): data is Envelope {\n return (\n typeof data === 'object' &&\n data !== null &&\n 'event' in data &&\n 'data' in data &&\n typeof (data as Envelope).event === 'string'\n )\n}\n\nfunction isFlatEvent(data: unknown): data is StreamEvent {\n return (\n typeof data === 'object' &&\n data !== null &&\n 'event' in data &&\n !('data' in data) &&\n typeof (data as StreamEvent).event === 'string'\n )\n}\n\nfunction normaliseEnvelope(env: Envelope): StreamEvent {\n let parsed: Record<string, unknown> = {}\n if (typeof env.data === 'string') {\n try {\n parsed = JSON.parse(env.data)\n } catch {\n parsed = {}\n }\n } else if (env.data && typeof env.data === 'object') {\n parsed = env.data\n }\n return { event: env.event, ...parsed }\n}\n\n/**\n * Pulls every complete JSON object out of `buffer`, emitting each via `onEvent`.\n * Returns the unconsumed tail (a partial object awaiting more bytes).\n */\nfunction drainBuffer(buffer: string, onEvent: (e: StreamEvent) => void): string {\n let start = buffer.indexOf('{')\n\n while (start !== -1 && start < buffer.length) {\n let depth = 0\n let inString = false\n let escape = false\n let end = -1\n\n for (let i = start; i < buffer.length; i++) {\n const ch = buffer[i]\n if (inString) {\n if (escape) escape = false\n else if (ch === '\\\\') escape = true\n else if (ch === '\"') inString = false\n } else if (ch === '\"') {\n inString = true\n } else if (ch === '{') {\n depth++\n } else if (ch === '}') {\n depth--\n if (depth === 0) {\n end = i\n break\n }\n }\n }\n\n if (end === -1) break // incomplete object; wait for more data\n\n const slice = buffer.slice(start, end + 1)\n try {\n const parsed = JSON.parse(slice)\n if (isEnvelope(parsed)) onEvent(normaliseEnvelope(parsed))\n else if (isFlatEvent(parsed)) onEvent(parsed)\n } catch {\n // Not valid JSON despite balanced braces — skip this opening brace.\n start = buffer.indexOf('{', start + 1)\n continue\n }\n\n buffer = buffer.slice(end + 1).trim()\n start = buffer.indexOf('{')\n }\n\n return buffer\n}\n\nexport interface StreamRunOptions {\n url: string\n body: FormData | Record<string, unknown>\n headers?: Record<string, string>\n signal?: AbortSignal\n onEvent: (event: StreamEvent) => void\n onError: (error: Error) => void\n onComplete: () => void\n}\n\n/**\n * POSTs a run request and streams the response, calling `onEvent` for every\n * run event as it arrives. Resolves when the stream ends.\n */\nexport async function streamRun(options: StreamRunOptions): Promise<void> {\n const { url, body, headers = {}, signal, onEvent, onError, onComplete } = options\n let buffer = ''\n\n try {\n const response = await fetch(url, {\n method: 'POST',\n headers: {\n ...(!(body instanceof FormData) && { 'Content-Type': 'application/json' }),\n ...headers,\n },\n body: body instanceof FormData ? body : JSON.stringify(body),\n signal,\n })\n\n if (!response.ok) {\n let detail: string\n try {\n const err = await response.json()\n detail = err?.detail ? String(err.detail) : `${response.status} ${response.statusText}`\n } catch {\n detail = `${response.status} ${response.statusText}`\n }\n throw new Error(detail)\n }\n if (!response.body) throw new Error('No response body')\n\n const reader = response.body.getReader()\n const decoder = new TextDecoder()\n\n for (;;) {\n const { done, value } = await reader.read()\n if (done) {\n buffer = drainBuffer(buffer, onEvent)\n onComplete()\n return\n }\n buffer += decoder.decode(value, { stream: true })\n buffer = drainBuffer(buffer, onEvent)\n }\n } catch (error) {\n if (error instanceof DOMException && error.name === 'AbortError') {\n onComplete()\n return\n }\n onError(error instanceof Error ? error : new Error(String(error)))\n }\n}\n","/**\n * Thin client for an AgentOS HTTP backend.\n *\n * Wraps the discovery, run, continue, cancel and session endpoints. Streaming\n * runs are handled by `streamRun` from ./stream; everything else is plain JSON.\n */\n\nimport { streamRun, type StreamEvent } from './stream'\nimport type {\n Entity,\n EntityType,\n RunEventData,\n SessionsResponse,\n ToolExecution,\n} from './types'\n\n/** Normalise a base URL: add a scheme for bare hosts, strip trailing slash. */\nexport function normaliseBaseUrl(value: string | null | undefined): string {\n if (!value) return ''\n let url = value.trim()\n if (!/^https?:\\/\\//.test(url)) {\n const isLocal = url.startsWith('localhost') || /^\\d{1,3}(\\.\\d{1,3}){3}/.test(url)\n url = `${isLocal ? 'http' : 'https'}://${url}`\n }\n return url.replace(/\\/+$/, '')\n}\n\nexport interface AgnoClientOptions {\n /** AgentOS base URL, e.g. \"http://localhost:7777\". */\n baseUrl: string\n /** Optional headers (e.g. Authorization) added to every request. */\n headers?: Record<string, string>\n /** Default db_id used for session listing where the backend requires it. */\n dbId?: string\n}\n\ninterface RunArgs {\n type: EntityType\n id: string\n message?: string\n sessionId?: string\n userId?: string\n files?: File[]\n /** Extra form fields appended verbatim. */\n extra?: Record<string, string>\n signal?: AbortSignal\n onEvent: (event: RunEventData) => void\n onError: (error: Error) => void\n onComplete: () => void\n}\n\ninterface ContinueArgs {\n type: EntityType\n id: string\n runId: string\n sessionId?: string\n userId?: string\n /** Resolved tool executions (agents/teams human-in-the-loop). */\n tools?: ToolExecution[]\n /** Resolved step requirements (workflow human-in-the-loop). */\n stepRequirements?: unknown[]\n signal?: AbortSignal\n onEvent: (event: RunEventData) => void\n onError: (error: Error) => void\n onComplete: () => void\n}\n\nconst RUN_PATH: Record<EntityType, string> = {\n agent: 'agents',\n team: 'teams',\n workflow: 'workflows',\n}\n\nexport class AgnoClient {\n readonly baseUrl: string\n readonly headers: Record<string, string>\n readonly dbId?: string\n\n constructor(options: AgnoClientOptions) {\n this.baseUrl = normaliseBaseUrl(options.baseUrl)\n this.headers = options.headers ?? {}\n this.dbId = options.dbId\n }\n\n private async getJson<T>(path: string): Promise<T> {\n const res = await fetch(`${this.baseUrl}${path}`, { headers: this.headers })\n if (!res.ok) throw new Error(`GET ${path} failed: ${res.status} ${res.statusText}`)\n return res.json() as Promise<T>\n }\n\n /** Liveness check against /health. Returns the HTTP status code. */\n async health(): Promise<number> {\n try {\n const res = await fetch(`${this.baseUrl}/health`, { headers: this.headers })\n return res.status\n } catch {\n return 0\n }\n }\n\n /* ----------------------------- discovery ----------------------------- */\n\n async getAgents(): Promise<Entity[]> {\n const data = await this.getJson<any[]>('/agents').catch(() => [])\n return data.map((a) => ({\n type: 'agent' as const,\n id: a.agent_id ?? a.id,\n name: a.name ?? a.agent_id ?? a.id,\n description: a.description,\n model: a.model,\n db_id: a.db_id,\n }))\n }\n\n async getTeams(): Promise<Entity[]> {\n const data = await this.getJson<any[]>('/teams').catch(() => [])\n return data.map((t) => ({\n type: 'team' as const,\n id: t.team_id ?? t.id,\n name: t.name ?? t.team_id ?? t.id,\n description: t.description,\n model: t.model,\n db_id: t.db_id,\n }))\n }\n\n async getWorkflows(): Promise<Entity[]> {\n const data = await this.getJson<any[]>('/workflows').catch(() => [])\n return data.map((w) => ({\n type: 'workflow' as const,\n id: w.workflow_id ?? w.id,\n name: w.name ?? w.workflow_id ?? w.id,\n description: w.description,\n model: w.model,\n db_id: w.db_id,\n }))\n }\n\n /** All runnable entities (agents, teams, workflows) in one list. */\n async getEntities(): Promise<Entity[]> {\n const [agents, teams, workflows] = await Promise.all([\n this.getAgents(),\n this.getTeams(),\n this.getWorkflows(),\n ])\n return [...agents, ...teams, ...workflows]\n }\n\n /* ------------------------------ sessions ----------------------------- */\n\n async getSessions(type: EntityType, componentId: string, dbId?: string): Promise<SessionsResponse> {\n const url = new URL(`${this.baseUrl}/sessions`)\n url.searchParams.set('type', type)\n url.searchParams.set('component_id', componentId)\n const db = dbId ?? this.dbId\n if (db) url.searchParams.set('db_id', db)\n try {\n const res = await fetch(url.toString(), { headers: this.headers })\n if (!res.ok) return { data: [] }\n return (await res.json()) as SessionsResponse\n } catch {\n return { data: [] }\n }\n }\n\n /** Runs (with messages/tools/events) for a session — used to rehydrate chat history. */\n async getSessionRuns(type: EntityType, sessionId: string, dbId?: string): Promise<any[]> {\n const url = new URL(`${this.baseUrl}/sessions/${sessionId}/runs`)\n url.searchParams.set('type', type)\n const db = dbId ?? this.dbId\n if (db) url.searchParams.set('db_id', db)\n const res = await fetch(url.toString(), { headers: this.headers })\n if (!res.ok) throw new Error(`Failed to load session: ${res.statusText}`)\n return res.json()\n }\n\n async deleteSession(sessionId: string, dbId?: string): Promise<boolean> {\n const url = new URL(`${this.baseUrl}/sessions/${sessionId}`)\n const db = dbId ?? this.dbId\n if (db) url.searchParams.set('db_id', db)\n const res = await fetch(url.toString(), { method: 'DELETE', headers: this.headers })\n return res.ok\n }\n\n /* -------------------------------- runs ------------------------------- */\n\n /** Start a streaming run for an agent, team or workflow. */\n async run(args: RunArgs): Promise<void> {\n const form = new FormData()\n if (args.message != null) form.append('message', args.message)\n form.append('stream', 'true')\n if (args.sessionId) form.append('session_id', args.sessionId)\n if (args.userId) form.append('user_id', args.userId)\n for (const file of args.files ?? []) form.append('files', file)\n for (const [k, v] of Object.entries(args.extra ?? {})) form.append(k, v)\n\n const url = `${this.baseUrl}/${RUN_PATH[args.type]}/${args.id}/runs`\n return streamRun({\n url,\n body: form,\n headers: this.headers,\n signal: args.signal,\n onEvent: (e) => args.onEvent(e as RunEventData),\n onError: args.onError,\n onComplete: args.onComplete,\n })\n }\n\n /** Continue a paused run (resolving a human-in-the-loop requirement). */\n async continueRun(args: ContinueArgs): Promise<void> {\n const form = new FormData()\n form.append('stream', 'true')\n if (args.sessionId) form.append('session_id', args.sessionId)\n if (args.userId) form.append('user_id', args.userId)\n\n if (args.type === 'workflow') {\n if (args.stepRequirements) form.append('step_requirements', JSON.stringify(args.stepRequirements))\n } else if (args.tools) {\n form.append('tools', JSON.stringify(args.tools))\n }\n\n const url = `${this.baseUrl}/${RUN_PATH[args.type]}/${args.id}/runs/${args.runId}/continue`\n return streamRun({\n url,\n body: form,\n headers: this.headers,\n signal: args.signal,\n onEvent: (e) => args.onEvent(e as RunEventData),\n onError: args.onError,\n onComplete: args.onComplete,\n })\n }\n\n /** Cancel an in-flight run. */\n async cancelRun(type: EntityType, id: string, runId: string, sessionId?: string): Promise<boolean> {\n const url = new URL(`${this.baseUrl}/${RUN_PATH[type]}/${id}/runs/${runId}/cancel`)\n if (sessionId) url.searchParams.set('session_id', sessionId)\n try {\n const res = await fetch(url.toString(), { method: 'POST', headers: this.headers })\n return res.ok\n } catch {\n return false\n }\n }\n}\n\nexport type { StreamEvent }\n","/**\n * Helpers for classifying run events and turning them into UI labels.\n *\n * Agent, team and workflow events share shapes but use different name prefixes\n * (e.g. `RunContent` vs `TeamRunContent`). These helpers let the rest of the\n * library treat them uniformly.\n */\n\nimport type { ChatMessage, RunEventData, SubRun, ToolExecution, WorkflowStep } from './types'\n\nconst name = (e: RunEventData): string => String(e.event ?? '')\n\nexport const isStartedEvent = (e: RunEventData): boolean =>\n name(e) === 'RunStarted' ||\n name(e) === 'TeamRunStarted' ||\n name(e) === 'WorkflowStarted' ||\n name(e) === 'ReasoningStarted' ||\n name(e) === 'TeamReasoningStarted'\n\nexport const isContentEvent = (e: RunEventData): boolean =>\n name(e) === 'RunContent' || name(e) === 'TeamRunContent' || name(e) === 'WorkflowAgentCompleted'\n\nexport const isContentCompletedEvent = (e: RunEventData): boolean =>\n name(e) === 'RunContentCompleted' || name(e) === 'TeamRunContentCompleted'\n\nexport const isCompletedEvent = (e: RunEventData): boolean =>\n name(e) === 'RunCompleted' ||\n name(e) === 'TeamRunCompleted' ||\n name(e) === 'WorkflowCompleted'\n\nexport const isErrorEvent = (e: RunEventData): boolean =>\n name(e) === 'RunError' ||\n name(e) === 'TeamRunError' ||\n name(e) === 'WorkflowError' ||\n name(e) === 'StepError' ||\n name(e) === 'ToolCallError' ||\n name(e) === 'TeamToolCallError'\n\nexport const isCancelledEvent = (e: RunEventData): boolean =>\n name(e) === 'RunCancelled' ||\n name(e) === 'TeamRunCancelled' ||\n name(e) === 'WorkflowCancelled'\n\nexport const isPausedEvent = (e: RunEventData): boolean =>\n name(e) === 'RunPaused' ||\n name(e) === 'TeamRunPaused' ||\n name(e) === 'WorkflowPaused' ||\n name(e) === 'StepPaused' ||\n name(e) === 'RouterPaused' ||\n name(e) === 'ConditionPaused'\n\nexport const isToolStartedEvent = (e: RunEventData): boolean =>\n name(e) === 'ToolCallStarted' || name(e) === 'TeamToolCallStarted'\n\nexport const isToolCompletedEvent = (e: RunEventData): boolean =>\n name(e) === 'ToolCallCompleted' || name(e) === 'TeamToolCallCompleted'\n\nexport const isToolEvent = (e: RunEventData): boolean =>\n isToolStartedEvent(e) || isToolCompletedEvent(e) || name(e) === 'ToolCallError' || name(e) === 'TeamToolCallError'\n\nexport const isReasoningStepEvent = (e: RunEventData): boolean =>\n name(e) === 'ReasoningStep' || name(e) === 'TeamReasoningStep'\n\nexport const isReasoningCompletedEvent = (e: RunEventData): boolean =>\n name(e) === 'ReasoningCompleted' || name(e) === 'TeamReasoningCompleted'\n\n/**\n * A nested-run event — a team member's turn or a workflow step executor.\n * Identified by a `parent_run_id` on an agent/team content/tool/run event.\n */\nexport function isSubRunEvent(e: RunEventData): boolean {\n if (!e.parent_run_id) return false\n const ev = name(e)\n return (\n isContentEvent(e) ||\n isToolEvent(e) ||\n isCompletedEvent(e) ||\n isErrorEvent(e) ||\n ev === 'RunStarted' ||\n ev === 'TeamRunStarted'\n )\n}\n\n/** A workflow step lifecycle event (start / output / complete / error). */\nexport function isStepEvent(e: RunEventData): boolean {\n const ev = name(e)\n return ev === 'StepStarted' || ev === 'StepCompleted' || ev === 'StepOutput' || ev === 'StepError'\n}\n\n/** Tool executions carried by an event, from either the single or array field. */\nexport function toolsFromEvent(e: RunEventData): ToolExecution[] {\n const out: ToolExecution[] = []\n if (e.tool) out.push(e.tool)\n if (Array.isArray(e.tools)) out.push(...e.tools)\n return out\n}\n\n/** Apply a content chunk and its related metadata to a message. */\nexport function applyContentEvent(message: ChatMessage, e: RunEventData): ChatMessage {\n const next: ChatMessage = { ...message }\n\n if (typeof e.content === 'string' && e.content) {\n next.content = message.content + e.content\n } else if (e.content && typeof e.content === 'object') {\n next.content = message.content + '\\n```json\\n' + JSON.stringify(e.content, null, 2) + '\\n```\\n'\n }\n\n if (e.reasoning_steps?.length) next.reasoning_steps = e.reasoning_steps\n if (e.extra_data?.reasoning_steps?.length) next.reasoning_steps = e.extra_data.reasoning_steps\n if (e.references?.length) next.references = e.references\n if (e.extra_data?.references?.length) next.references = e.extra_data.references\n if (e.citations) next.citations = e.citations\n\n const tools = toolsFromEvent(e)\n if (tools.length) {\n let toolCalls = message.tool_calls ?? []\n for (const tool of tools) toolCalls = mergeTool(toolCalls, tool)\n next.tool_calls = toolCalls\n }\n\n if (e.images?.length) next.images = e.images\n if (e.videos?.length) next.videos = e.videos\n if (e.audio?.length) next.audio = e.audio\n if (e.response_audio?.transcript) {\n next.response_audio = {\n ...message.response_audio,\n transcript: (message.response_audio?.transcript ?? '') + e.response_audio.transcript,\n }\n }\n\n return next\n}\n\n/**\n * A short human-readable label describing what a run is doing at the moment of\n * this event — for a live status line (\"Calling get_weather\", \"Reasoning…\").\n * Returns null for events that don't warrant a status change.\n */\nexport function activityLabel(e: RunEventData): string | null {\n const ev = name(e)\n switch (ev) {\n case 'RunStarted':\n case 'TeamRunStarted':\n case 'WorkflowStarted':\n return 'Thinking'\n case 'ModelRequestStarted':\n case 'TeamModelRequestStarted':\n return 'Generating'\n case 'ReasoningStarted':\n case 'TeamReasoningStarted':\n case 'ReasoningStep':\n case 'TeamReasoningStep':\n case 'ReasoningContentDelta':\n case 'TeamReasoningContentDelta':\n return 'Reasoning'\n case 'MemoryUpdateStarted':\n case 'TeamMemoryUpdateStarted':\n return 'Updating memory'\n case 'SessionSummaryStarted':\n case 'TeamSessionSummaryStarted':\n return 'Summarising session'\n case 'CompressionStarted':\n return 'Compressing context'\n case 'ToolCallStarted':\n case 'TeamToolCallStarted': {\n const tool = e.tool?.tool_name\n return tool ? `Calling ${tool}` : 'Calling tool'\n }\n case 'ToolCallCompleted':\n case 'TeamToolCallCompleted':\n return 'Generating'\n case 'StepStarted':\n return e.step_name ? `Running step: ${e.step_name}` : 'Running step'\n case 'LoopIterationStarted':\n return `Loop iteration ${e.iteration ?? ''}`.trim()\n case 'ParallelExecutionStarted':\n return 'Running parallel steps'\n case 'RouterExecutionStarted':\n return 'Routing'\n case 'ConditionExecutionStarted':\n return 'Evaluating condition'\n default:\n return null\n }\n}\n\nfunction textOf(value: unknown): string | undefined {\n if (typeof value === 'string') return value\n if (value && typeof value === 'object') return '```json\\n' + JSON.stringify(value, null, 2) + '\\n```'\n return undefined\n}\n\n/** Apply a nested member/executor run event into a message's `members`. */\nexport function applySubRunEvent(\n message: ChatMessage,\n e: RunEventData,\n kind: SubRun['kind'],\n): ChatMessage {\n const rid = e.run_id || e.parent_run_id || 'sub'\n const members = message.members ? [...message.members] : []\n const idx = members.findIndex((s) => s.run_id === rid)\n const base: SubRun = idx >= 0 ? { ...members[idx] } : { run_id: rid, kind, content: '', status: 'running' }\n\n base.name = base.name || (e.agent_name as string) || (e.team_name as string) || (e.agent_id as string)\n\n const tools = toolsFromEvent(e)\n if (tools.length) {\n let tc = base.tool_calls ?? []\n for (const t of tools) tc = mergeTool(tc, t)\n base.tool_calls = tc\n }\n\n if (isErrorEvent(e)) {\n base.status = 'error'\n } else if (isCompletedEvent(e)) {\n base.status = 'completed'\n const final = textOf(e.content)\n if (final) base.content = final\n } else if (isContentEvent(e)) {\n const delta = typeof e.content === 'string' ? e.content : ''\n if (delta) base.content += delta\n }\n\n if (idx >= 0) members[idx] = base\n else members.push(base)\n return { ...message, members }\n}\n\n/** Apply a workflow `Step*` event into a message's `steps`. */\nexport function applyStepEvent(message: ChatMessage, e: RunEventData): ChatMessage {\n const ev = name(e)\n const key = (e.step_name as string) || `step-${JSON.stringify(e.step_index ?? '')}`\n const steps = message.steps ? [...message.steps] : []\n const idx = steps.findIndex((s) => s.key === key)\n const step: WorkflowStep =\n idx >= 0\n ? { ...steps[idx] }\n : { key, name: e.step_name, index: e.step_index, status: 'running' }\n\n if (ev === 'StepStarted') {\n step.status = 'running'\n } else if (ev === 'StepError') {\n step.status = 'error'\n step.error = e.error || (typeof e.content === 'string' ? e.content : undefined)\n } else {\n // StepCompleted / StepOutput\n step.status = 'completed'\n const stepResponse = (e.step_response ?? e.step_output) as { content?: unknown } | undefined\n const content = textOf(e.content) ?? textOf(stepResponse?.content)\n if (content) step.content = content\n }\n\n if (idx >= 0) steps[idx] = step\n else steps.push(step)\n return { ...message, steps }\n}\n\n/** Merge a tool execution into a list, updating an existing entry by id/name. */\nexport function mergeTool(list: ToolExecution[], tool: ToolExecution): ToolExecution[] {\n const key = tool.tool_call_id || `${tool.tool_name}-${tool.created_at}`\n const idx = list.findIndex((t) => {\n if (t.tool_call_id && tool.tool_call_id) return t.tool_call_id === tool.tool_call_id\n return `${t.tool_name}-${t.created_at}` === key\n })\n if (idx >= 0) {\n const next = [...list]\n next[idx] = { ...next[idx], ...tool }\n return next\n }\n return [...list, tool]\n}\n","/**\n * Helpers for turning AgentOS session history into render-ready chat messages.\n *\n * `GET /sessions/{id}/runs` returns an array of run records. Each run carries\n * the user input plus the agent's content, tools, reasoning, references and\n * media — enough to reconstruct the transcript for a past session.\n */\n\nimport type { ChatMessage, ReasoningStep, ReferenceData, ToolExecution } from './types'\n\ninterface SessionRun {\n run_id?: string\n session_id?: string\n run_input?: unknown\n content?: unknown\n created_at?: number\n status?: string\n tools?: ToolExecution[]\n images?: ChatMessage['images']\n videos?: ChatMessage['videos']\n audio?: ChatMessage['audio']\n response_audio?: ChatMessage['response_audio']\n extra_data?: {\n reasoning_steps?: ReasoningStep[]\n references?: ReferenceData[]\n }\n reasoning_steps?: ReasoningStep[]\n references?: ReferenceData[]\n}\n\nfunction toText(value: unknown): string {\n if (value == null) return ''\n if (typeof value === 'string') return value\n // Some inputs/outputs arrive as content-part arrays or objects.\n if (Array.isArray(value)) {\n return value\n .map((part) =>\n part && typeof part === 'object' && 'text' in part ? String((part as { text: unknown }).text) : '',\n )\n .filter(Boolean)\n .join(' ')\n }\n if (typeof value === 'object') {\n const obj = value as Record<string, unknown>\n if (typeof obj.input_content === 'string') return obj.input_content\n if (typeof obj.message === 'string') return obj.message\n if (typeof obj.content === 'string') return obj.content\n return '```json\\n' + JSON.stringify(value, null, 2) + '\\n```'\n }\n return String(value)\n}\n\nlet seq = 0\nconst id = (prefix: string) => `${prefix}-${seq++}`\n\n/** Convert the runs of a session into an ordered list of chat messages. */\nexport function sessionRunsToMessages(runs: SessionRun[]): ChatMessage[] {\n if (!Array.isArray(runs)) return []\n const messages: ChatMessage[] = []\n\n for (const run of runs) {\n const created = run.created_at ?? Math.floor(Date.now() / 1000)\n\n const userContent = toText(run.run_input)\n if (userContent) {\n messages.push({\n id: id('hist-u'),\n role: 'user',\n content: userContent,\n created_at: created,\n })\n }\n\n messages.push({\n id: id('hist-a'),\n role: 'agent',\n content: toText(run.content),\n created_at: created,\n status: 'completed',\n run_id: run.run_id,\n session_id: run.session_id,\n tool_calls: run.tools && run.tools.length ? run.tools : undefined,\n reasoning_steps: run.reasoning_steps ?? run.extra_data?.reasoning_steps,\n references: run.references ?? run.extra_data?.references,\n images: run.images,\n videos: run.videos,\n audio: run.audio,\n response_audio: run.response_audio,\n })\n }\n\n return messages\n}\n","/**\n * useAgnoChat — a headless React hook for running any Agno agent, team or\n * workflow against an AgentOS backend and consuming its streamed output.\n *\n * It owns the full chat lifecycle: sending a message, accumulating the streamed\n * response (content, tool calls, reasoning, media), surfacing live status and\n * the raw event feed, handling human-in-the-loop pauses, cancelling, and\n * rehydrating prior sessions.\n *\n * The hook renders nothing — pair it with the components in this package or\n * build your own UI from the values it returns.\n */\n\nimport { useCallback, useEffect, useMemo, useRef, useState } from 'react'\n\nimport { AgnoClient } from './client'\nimport {\n activityLabel,\n applyContentEvent,\n applyStepEvent,\n applySubRunEvent,\n isCancelledEvent,\n isCompletedEvent,\n isContentEvent,\n isErrorEvent,\n isPausedEvent,\n isReasoningCompletedEvent,\n isReasoningStepEvent,\n isStartedEvent,\n isStepEvent,\n isSubRunEvent,\n isToolEvent,\n mergeTool,\n toolsFromEvent,\n} from './events'\nimport { sessionRunsToMessages } from './session'\nimport type {\n ChatMessage,\n ChatStatus,\n Entity,\n EntityType,\n RunEventData,\n RunRequirement,\n SessionEntry,\n ToolExecution,\n} from './types'\n\nexport interface UseAgnoChatOptions {\n /** AgentOS base URL, e.g. \"http://localhost:7777\". Ignored if `client` given. */\n baseUrl?: string\n /** A pre-built client (use this to share headers/auth across hooks). */\n client?: AgnoClient\n /** Extra request headers (e.g. Authorization). Used only with `baseUrl`. */\n headers?: Record<string, string>\n /** The agent/team/workflow to run. Can change between turns. */\n entity?: Entity | null\n /** User id sent with every run. */\n userId?: string\n /** Initial session id; updated automatically once the backend assigns one. */\n sessionId?: string\n /** Pre-seed the transcript (e.g. when restoring a session). */\n initialMessages?: ChatMessage[]\n /** Called with every raw run event, for logging/telemetry. */\n onEvent?: (event: RunEventData) => void\n /** Called when the session id changes (e.g. first run of a new session). */\n onSessionId?: (sessionId: string) => void\n}\n\nexport interface SendOptions {\n files?: File[]\n}\n\nexport interface UseAgnoChat {\n /** Full transcript, oldest first. */\n messages: ChatMessage[]\n /** The agent message currently streaming, or null when idle. */\n streamingMessage: ChatMessage | null\n /** Every raw event from the current/most-recent run, in arrival order. */\n events: RunEventData[]\n /** The most recent raw event. */\n currentEvent: RunEventData | null\n /** Lifecycle status of the active run. */\n status: ChatStatus\n /** Live \"what is it doing\" label, e.g. \"Calling get_weather\". */\n activity: string | null\n isStreaming: boolean\n isPaused: boolean\n error: string | null\n sessionId: string | undefined\n /** Type of the selected entity (agent / team / workflow). */\n entityType: EntityType | undefined\n\n /** Tool calls of the active/most-recent agent message. */\n tools: ToolExecution[]\n /** Reasoning steps of the active/most-recent agent message. */\n reasoning: ChatMessage['reasoning_steps']\n /** Outstanding human-in-the-loop requirements, if the run is paused. */\n pendingRequirements: RunRequirement[]\n\n /** Past sessions for the selected entity (populated by `refreshSessions`). */\n sessions: SessionEntry[]\n sessionsLoading: boolean\n\n /** Send a user message and stream the response. */\n sendMessage: (message: string, options?: SendOptions) => Promise<void>\n /** Stop the active run. */\n cancel: () => Promise<void>\n /** Continue a paused run with explicitly resolved requirements. */\n continueRun: (resolution: {\n tools?: ToolExecution[]\n stepRequirements?: unknown[]\n }) => Promise<void>\n /** Approve or reject all pending tool confirmations, then continue. */\n respondToConfirmation: (approve: boolean) => Promise<void>\n /** Provide values for pending tool user-input fields, then continue. */\n submitUserInput: (values: Record<string, unknown>) => Promise<void>\n /** Fetch the list of past sessions for the selected entity. */\n refreshSessions: () => Promise<void>\n /** Load a past session's transcript into the chat. */\n loadSession: (sessionId: string) => Promise<void>\n /** Delete a past session, removing it from the list. */\n deleteSession: (sessionId: string) => Promise<void>\n /** Clear the transcript and start a new session. */\n reset: () => void\n /** Replace the transcript (e.g. after loading a session from the backend). */\n setMessages: React.Dispatch<React.SetStateAction<ChatMessage[]>>\n /** The underlying client, for ad-hoc calls (sessions, discovery, …). */\n client: AgnoClient\n}\n\nlet messageCounter = 0\nconst nextId = () => `m${Date.now().toString(36)}-${(messageCounter++).toString(36)}`\nconst nowSeconds = () => Math.floor(Date.now() / 1000)\n\nexport function useAgnoChat(options: UseAgnoChatOptions): UseAgnoChat {\n const { entity, userId, onEvent, onSessionId } = options\n\n const client = useMemo(() => {\n if (options.client) return options.client\n return new AgnoClient({ baseUrl: options.baseUrl ?? '', headers: options.headers })\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [options.client, options.baseUrl, JSON.stringify(options.headers)])\n\n const [messages, setMessages] = useState<ChatMessage[]>(options.initialMessages ?? [])\n const [events, setEvents] = useState<RunEventData[]>([])\n const [currentEvent, setCurrentEvent] = useState<RunEventData | null>(null)\n const [status, setStatus] = useState<ChatStatus>('idle')\n const [activity, setActivity] = useState<string | null>(null)\n const [error, setError] = useState<string | null>(null)\n const [sessionId, setSessionId] = useState<string | undefined>(options.sessionId)\n const [sessions, setSessions] = useState<SessionEntry[]>([])\n const [sessionsLoading, setSessionsLoading] = useState(false)\n\n // Refs that need to survive across stream callbacks without re-subscribing.\n const abortRef = useRef<AbortController | null>(null)\n const activeMsgIdRef = useRef<string | null>(null)\n const runIdRef = useRef<string | undefined>(undefined)\n const entityRef = useRef<Entity | null | undefined>(entity)\n const sessionIdRef = useRef<string | undefined>(options.sessionId)\n\n useEffect(() => {\n entityRef.current = entity\n }, [entity])\n useEffect(() => {\n sessionIdRef.current = sessionId\n }, [sessionId])\n\n /** Update the active agent message in place. */\n const patchActive = useCallback((patch: (m: ChatMessage) => ChatMessage) => {\n const id = activeMsgIdRef.current\n if (!id) return\n setMessages((prev) => prev.map((m) => (m.id === id ? patch(m) : m)))\n }, [])\n\n /** Apply a single streamed event to chat + status state. */\n const applyEvent = useCallback(\n (e: RunEventData) => {\n setEvents((prev) => [...prev, e])\n setCurrentEvent(e)\n onEvent?.(e)\n\n const label = activityLabel(e)\n if (label) setActivity(label)\n\n // Capture session/run ids as soon as we see them.\n if (e.session_id && e.session_id !== sessionIdRef.current) {\n sessionIdRef.current = e.session_id\n setSessionId(e.session_id)\n onSessionId?.(e.session_id)\n }\n if (e.run_id && !e.parent_run_id) runIdRef.current = e.run_id\n\n // Nested member (team) / executor (workflow) run — keep it out of the\n // main message content and accumulate it under `members`.\n if (isSubRunEvent(e)) {\n const kind = entityRef.current?.type === 'workflow' ? 'executor' : 'member'\n patchActive((m) => applySubRunEvent(m, e, kind))\n return\n }\n\n // Workflow step lifecycle / output.\n if (isStepEvent(e)) {\n patchActive((m) => applyStepEvent(m, e))\n return\n }\n\n if (isStartedEvent(e)) {\n patchActive((m) => ({ ...m, run_id: e.run_id ?? m.run_id, session_id: e.session_id ?? m.session_id, status: 'streaming' }))\n return\n }\n\n if (isToolEvent(e)) {\n const incoming = toolsFromEvent(e)\n if (incoming.length) {\n patchActive((m) => {\n let tool_calls = m.tool_calls ?? []\n for (const t of incoming) tool_calls = mergeTool(tool_calls, t)\n return { ...m, tool_calls }\n })\n }\n return\n }\n\n if (isContentEvent(e)) {\n patchActive((m) => applyContentEvent(m, e))\n return\n }\n\n if (isReasoningStepEvent(e)) {\n const incoming = e.reasoning_steps ?? e.extra_data?.reasoning_steps ?? []\n if (incoming.length) {\n patchActive((m) => ({\n ...m,\n reasoning_steps: [...(m.reasoning_steps ?? []), ...incoming],\n }))\n }\n return\n }\n\n if (isReasoningCompletedEvent(e)) {\n const steps = e.reasoning_steps ?? e.extra_data?.reasoning_steps\n if (steps?.length) patchActive((m) => ({ ...m, reasoning_steps: steps }))\n return\n }\n\n if (isPausedEvent(e)) {\n const requirements = (e.requirements as RunRequirement[] | undefined) ?? []\n const pausedTools = toolsFromEvent(e)\n setStatus('paused')\n setActivity('Waiting for input')\n patchActive((m) => {\n let tool_calls = m.tool_calls ?? []\n for (const t of pausedTools) tool_calls = mergeTool(tool_calls, t)\n return { ...m, status: 'paused', streaming: false, requirements, tool_calls }\n })\n return\n }\n\n if (isCompletedEvent(e)) {\n patchActive((m) => {\n const next: ChatMessage = { ...m, streaming: false, status: 'completed' }\n if (typeof e.content === 'string' && e.content) next.content = e.content\n const tools = toolsFromEvent(e)\n if (tools.length) {\n let tc = m.tool_calls ?? []\n for (const t of tools) tc = mergeTool(tc, t)\n next.tool_calls = tc\n }\n if (e.reasoning_steps?.length) next.reasoning_steps = e.reasoning_steps\n if (e.references?.length) next.references = e.references\n if (e.images?.length) next.images = e.images\n if (e.videos?.length) next.videos = e.videos\n if (e.audio?.length) next.audio = e.audio\n if (e.response_audio) next.response_audio = e.response_audio\n return next\n })\n return\n }\n\n if (isCancelledEvent(e)) {\n patchActive((m) => ({ ...m, streaming: false, status: 'cancelled' }))\n setStatus('cancelled')\n return\n }\n\n if (isErrorEvent(e)) {\n const msg = typeof e.content === 'string' ? e.content : e.error || 'Error during run'\n patchActive((m) => ({ ...m, streaming: false, status: 'error', error: msg }))\n setError(msg)\n setStatus('error')\n return\n }\n },\n [onEvent, onSessionId, patchActive],\n )\n\n /** Drive a stream (either a fresh run or a continue) to completion. */\n const drive = useCallback(\n async (\n starter: (cb: {\n signal: AbortSignal\n onEvent: (e: RunEventData) => void\n onError: (err: Error) => void\n onComplete: () => void\n }) => Promise<void>,\n ) => {\n const controller = new AbortController()\n abortRef.current = controller\n setError(null)\n setStatus('streaming')\n\n await starter({\n signal: controller.signal,\n onEvent: applyEvent,\n onError: (err) => {\n patchActive((m) => ({ ...m, streaming: false, status: 'error', error: err.message }))\n setError(err.message)\n setStatus('error')\n },\n onComplete: () => {\n setActivity(null)\n patchActive((m) => (m.streaming ? { ...m, streaming: false } : m))\n // Leave a terminal status (paused/error/cancelled) intact; otherwise mark completed.\n setStatus((s) => (s === 'streaming' ? 'completed' : s))\n },\n })\n abortRef.current = null\n },\n [applyEvent, patchActive],\n )\n\n const sendMessage = useCallback(\n async (message: string, sendOptions?: SendOptions) => {\n const ent = entityRef.current\n if (!ent) {\n setError('No agent, team or workflow selected.')\n return\n }\n\n const userMsg: ChatMessage = {\n id: nextId(),\n role: 'user',\n content: message,\n created_at: nowSeconds(),\n }\n const agentMsg: ChatMessage = {\n id: nextId(),\n role: 'agent',\n content: '',\n created_at: nowSeconds() + 1,\n streaming: true,\n status: 'streaming',\n tool_calls: [],\n events: [],\n }\n activeMsgIdRef.current = agentMsg.id\n setEvents([])\n setCurrentEvent(null)\n setMessages((prev) => [...prev, userMsg, agentMsg])\n\n await drive((cb) =>\n client.run({\n type: ent.type,\n id: ent.id,\n message,\n sessionId: sessionIdRef.current,\n userId,\n files: sendOptions?.files,\n ...cb,\n }),\n )\n },\n [client, drive, userId],\n )\n\n const continueRun = useCallback(\n async (resolution: { tools?: ToolExecution[]; stepRequirements?: unknown[] }) => {\n const ent = entityRef.current\n const runId = runIdRef.current\n if (!ent || !runId) {\n setError('No paused run to continue.')\n return\n }\n // Re-open the existing agent message for more streamed output.\n patchActive((m) => ({ ...m, streaming: true, status: 'streaming', requirements: undefined }))\n\n await drive((cb) =>\n client.continueRun({\n type: ent.type,\n id: ent.id,\n runId,\n sessionId: sessionIdRef.current,\n userId,\n tools: resolution.tools,\n stepRequirements: resolution.stepRequirements,\n ...cb,\n }),\n )\n },\n [client, drive, patchActive, userId],\n )\n\n // Pending requirements / paused tools come from the active message.\n const activeMessage = useMemo(\n () => messages.find((m) => m.id === activeMsgIdRef.current) ?? null,\n [messages],\n )\n\n const pausedTools = useMemo(\n () => (activeMessage?.tool_calls ?? []).filter((t) => t.requires_confirmation || t.requires_user_input),\n [activeMessage],\n )\n\n const respondToConfirmation = useCallback(\n async (approve: boolean) => {\n const ent = entityRef.current\n if (ent?.type === 'workflow') {\n // Workflows resolve via step_requirements; mirror the active requirements.\n const reqs = (activeMessage?.requirements ?? []).map((r) => ({ ...r, confirmation: approve }))\n await continueRun({ stepRequirements: reqs })\n return\n }\n const resolved = pausedTools.map((t) => ({ ...t, confirmed: approve }))\n await continueRun({ tools: resolved })\n },\n [activeMessage, continueRun, pausedTools],\n )\n\n const submitUserInput = useCallback(\n async (values: Record<string, unknown>) => {\n const ent = entityRef.current\n if (ent?.type === 'workflow') {\n const reqs = (activeMessage?.requirements ?? []).map((r) => ({\n ...r,\n user_input_schema: (r.user_input_schema ?? []).map((f) => ({\n ...f,\n value: f.name in values ? values[f.name] : f.value,\n })),\n }))\n await continueRun({ stepRequirements: reqs })\n return\n }\n const resolved = pausedTools.map((t) => ({\n ...t,\n confirmed: true,\n user_input_schema: (t.user_input_schema ?? []).map((f) => ({\n ...f,\n value: f.name in values ? values[f.name] : f.value,\n })),\n }))\n await continueRun({ tools: resolved })\n },\n [activeMessage, continueRun, pausedTools],\n )\n\n const cancel = useCallback(async () => {\n abortRef.current?.abort()\n const ent = entityRef.current\n const runId = runIdRef.current\n setStatus('cancelled')\n setActivity(null)\n patchActive((m) => (m.streaming ? { ...m, streaming: false, status: 'cancelled' } : m))\n if (ent && runId) await client.cancelRun(ent.type, ent.id, runId, sessionIdRef.current)\n }, [client, patchActive])\n\n const refreshSessions = useCallback(async () => {\n const ent = entityRef.current\n if (!ent) {\n setSessions([])\n return\n }\n setSessionsLoading(true)\n try {\n const res = await client.getSessions(ent.type, ent.id, ent.db_id)\n setSessions(res.data ?? [])\n } finally {\n setSessionsLoading(false)\n }\n }, [client])\n\n const loadSession = useCallback(\n async (id: string) => {\n const ent = entityRef.current\n if (!ent) return\n abortRef.current?.abort()\n activeMsgIdRef.current = null\n runIdRef.current = undefined\n setEvents([])\n setCurrentEvent(null)\n setStatus('idle')\n setActivity(null)\n setError(null)\n sessionIdRef.current = id\n setSessionId(id)\n onSessionId?.(id)\n try {\n const runs = await client.getSessionRuns(ent.type, id, ent.db_id)\n setMessages(sessionRunsToMessages(runs))\n } catch (err) {\n setError(err instanceof Error ? err.message : String(err))\n }\n },\n [client, onSessionId],\n )\n\n const deleteSession = useCallback(\n async (id: string) => {\n const ent = entityRef.current\n const ok = await client.deleteSession(id, ent?.db_id)\n if (ok) {\n setSessions((prev) => prev.filter((s) => s.session_id !== id))\n if (sessionIdRef.current === id) {\n sessionIdRef.current = undefined\n setSessionId(undefined)\n setMessages([])\n }\n }\n },\n [client],\n )\n\n const reset = useCallback(() => {\n abortRef.current?.abort()\n abortRef.current = null\n activeMsgIdRef.current = null\n runIdRef.current = undefined\n sessionIdRef.current = undefined\n setMessages([])\n setEvents([])\n setCurrentEvent(null)\n setStatus('idle')\n setActivity(null)\n setError(null)\n setSessionId(undefined)\n }, [])\n\n // Abort any in-flight stream on unmount.\n useEffect(() => () => abortRef.current?.abort(), [])\n\n const streamingMessage = useMemo(\n () => messages.find((m) => m.role === 'agent' && m.streaming) ?? null,\n [messages],\n )\n\n return {\n messages,\n streamingMessage,\n events,\n currentEvent,\n status,\n activity,\n isStreaming: status === 'streaming',\n isPaused: status === 'paused',\n error,\n sessionId,\n entityType: entity?.type,\n tools: activeMessage?.tool_calls ?? [],\n reasoning: activeMessage?.reasoning_steps,\n pendingRequirements: activeMessage?.requirements ?? [],\n sessions,\n sessionsLoading,\n sendMessage,\n cancel,\n continueRun,\n respondToConfirmation,\n submitUserInput,\n refreshSessions,\n loadSession,\n deleteSession,\n reset,\n setMessages,\n client,\n }\n}\n","/** Multiline chat input with optional file attachments, send and stop. */\n\nimport React, { useRef, useState } from 'react'\n\nexport interface ChatInputProps {\n onSend: (message: string, files?: File[]) => void\n onStop?: () => void\n disabled?: boolean\n busy?: boolean\n placeholder?: string\n /** Allow attaching files. */\n allowFiles?: boolean\n}\n\nexport function ChatInput({\n onSend,\n onStop,\n disabled,\n busy,\n placeholder = 'Ask anything',\n allowFiles = false,\n}: ChatInputProps): React.ReactElement {\n const [value, setValue] = useState('')\n const [files, setFiles] = useState<File[]>([])\n const fileRef = useRef<HTMLInputElement>(null)\n\n const submit = () => {\n const text = value.trim()\n if (!text && files.length === 0) return\n onSend(text, files.length ? files : undefined)\n setValue('')\n setFiles([])\n }\n\n return (\n <div className=\"agno-input\">\n {files.length > 0 && (\n <div className=\"agno-input__files\">\n {files.map((f, i) => (\n <span key={i} className=\"agno-input__file\">\n {f.name}\n <button type=\"button\" onClick={() => setFiles((prev) => prev.filter((_, j) => j !== i))} aria-label=\"Remove\">\n ×\n </button>\n </span>\n ))}\n </div>\n )}\n <div className=\"agno-input__row\">\n {allowFiles && (\n <>\n <button\n type=\"button\"\n className=\"agno-input__attach\"\n onClick={() => fileRef.current?.click()}\n disabled={disabled}\n aria-label=\"Attach files\"\n >\n {'\\u{1F4CE}'}\n </button>\n <input\n ref={fileRef}\n type=\"file\"\n multiple\n hidden\n onChange={(e) => setFiles((prev) => [...prev, ...Array.from(e.target.files ?? [])])}\n />\n </>\n )}\n <textarea\n className=\"agno-input__textarea\"\n value={value}\n placeholder={placeholder}\n disabled={disabled}\n rows={1}\n onChange={(e) => setValue(e.target.value)}\n onKeyDown={(e) => {\n if (e.key === 'Enter' && !e.shiftKey) {\n e.preventDefault()\n submit()\n }\n }}\n />\n {busy && onStop ? (\n <button type=\"button\" className=\"agno-input__send agno-input__send--stop\" onClick={onStop} aria-label=\"Stop\">\n <span aria-hidden>{'■'}</span>\n </button>\n ) : (\n <button\n type=\"button\"\n className=\"agno-input__send\"\n onClick={submit}\n disabled={disabled || (!value.trim() && files.length === 0)}\n aria-label=\"Send\"\n >\n <span aria-hidden>{'➤'}</span>\n </button>\n )}\n </div>\n </div>\n )\n}\n","/**\n * Human-in-the-loop panel, styled after the Agno OS chat HITL cards.\n *\n * When a run pauses, each pending tool / requirement renders as its own card:\n * the tool icon + UPPERCASE name, a collapsible Arguments accordion, per-card\n * Approve / Reject controls (with an optional rejection reason), and any\n * requested input fields. Submitting resolves every card and continues the run.\n */\n\nimport React, { useMemo, useState } from 'react'\n\nimport type { ChatMessage, EntityType, RunRequirement, ToolExecution, UserInputField } from '../types'\n\nexport interface HumanInputProps {\n message: ChatMessage\n entityType?: EntityType\n busy?: boolean\n /** Continue the run with the resolved tools (agent/team) or step requirements (workflow). */\n onResolve: (resolution: { tools?: ToolExecution[]; stepRequirements?: unknown[] }) => void\n}\n\ntype Choice = 'confirm' | 'reject'\n\ninterface Ask {\n id: string\n name?: string\n args?: Record<string, unknown>\n needsConfirmation: boolean\n fields: UserInputField[]\n tool?: ToolExecution\n requirement?: RunRequirement\n}\n\nconst isBoolField = (f: UserInputField) => f.field_type === 'bool' || f.field_type === 'boolean'\n\n/** Build the list of pending asks from the paused message. */\nfunction buildAsks(message: ChatMessage, entityType?: EntityType): Ask[] {\n const fromTools = (message.tool_calls ?? [])\n .filter((t) => t.requires_confirmation || t.requires_user_input)\n .map<Ask>((t) => ({\n id: t.tool_call_id ?? `${t.tool_name}`,\n name: t.tool_name,\n args: t.tool_args,\n needsConfirmation: Boolean(t.requires_confirmation) && t.confirmed == null,\n fields: t.requires_user_input ? t.user_input_schema ?? [] : [],\n tool: t,\n }))\n\n const fromReqs = (message.requirements ?? []).map<Ask>((r) => ({\n id: r.id,\n name: r.tool_execution?.tool_name,\n args: r.tool_execution?.tool_args,\n needsConfirmation: Boolean(r.tool_execution?.requires_confirmation) || r.confirmation == null,\n fields: r.user_input_schema ?? r.tool_execution?.user_input_schema ?? [],\n requirement: r,\n }))\n\n // Workflows resolve through requirements; agents/teams through tools.\n if (entityType === 'workflow') return fromReqs.length ? fromReqs : fromTools\n return fromTools.length ? fromTools : fromReqs\n}\n\nexport function HumanInput({ message, entityType, busy, onResolve }: HumanInputProps): React.ReactElement | null {\n const asks = useMemo(() => buildAsks(message, entityType), [message, entityType])\n const [choices, setChoices] = useState<Record<string, Choice>>({})\n const [values, setValues] = useState<Record<string, Record<string, unknown>>>({})\n const [reasons, setReasons] = useState<Record<string, string>>({})\n const [openArgs, setOpenArgs] = useState<Record<string, boolean>>({})\n\n if (asks.length === 0) return null\n\n const setValue = (id: string, name: string, value: unknown) =>\n setValues((v) => ({ ...v, [id]: { ...(v[id] ?? {}), [name]: value } }))\n\n const valueFor = (ask: Ask, field: UserInputField): unknown =>\n values[ask.id]?.[field.name] ?? field.value ?? (isBoolField(field) ? false : '')\n\n const fillFields = (ask: Ask): UserInputField[] =>\n ask.fields.map((f) => ({ ...f, value: valueFor(ask, f) }))\n\n // Every confirmation card must have an explicit choice before continuing.\n const ready = asks.every((a) => !a.needsConfirmation || choices[a.id])\n\n const submit = () => {\n if (entityType === 'workflow') {\n const stepRequirements = asks.map((a) => {\n const approved = a.needsConfirmation ? choices[a.id] === 'confirm' : true\n return {\n id: a.id,\n confirmation: approved,\n ...(a.fields.length ? { user_input_schema: fillFields(a) } : {}),\n tool_execution: a.requirement?.tool_execution,\n ...(reasons[a.id] ? { confirmation_note: reasons[a.id] } : {}),\n }\n })\n onResolve({ stepRequirements })\n return\n }\n\n const tools: ToolExecution[] = asks.map((a) => {\n const base = a.tool ?? { tool_call_id: a.id, tool_name: a.name }\n const approved = a.needsConfirmation ? choices[a.id] === 'confirm' : true\n return {\n ...base,\n ...(a.needsConfirmation ? { confirmed: approved } : {}),\n ...(a.fields.length ? { answered: true, user_input_schema: fillFields(a) } : {}),\n ...(reasons[a.id] ? { confirmation_note: reasons[a.id] } : {}),\n }\n })\n onResolve({ tools })\n }\n\n return (\n <div className=\"agno-hitl\">\n <div className=\"agno-hitl__title\">\n <span aria-hidden>{'✋'}</span> Your input is needed\n </div>\n\n {asks.map((ask) => {\n const choice = choices[ask.id]\n const hasArgs = ask.args && Object.keys(ask.args).length > 0\n const argsOpen = openArgs[ask.id] ?? true\n return (\n <div className=\"agno-hitl-card\" key={ask.id}>\n <div className=\"agno-hitl-card__head\">\n <span className=\"agno-hitl-card__tool\">\n <span className=\"agno-hitl-card__icon\" aria-hidden>{'\\u{1F527}'}</span>\n {ask.name ?? 'tool'}\n </span>\n {ask.needsConfirmation && (\n <span className=\"agno-hitl-card__choices\">\n <button\n type=\"button\"\n className={`agno-hitl-card__choice ${choice === 'reject' ? 'is-active is-reject' : ''}`}\n aria-label=\"Reject\"\n disabled={busy}\n onClick={() => setChoices((c) => ({ ...c, [ask.id]: 'reject' }))}\n >\n {'✕'}\n </button>\n <button\n type=\"button\"\n className={`agno-hitl-card__choice ${choice === 'confirm' ? 'is-active is-confirm' : ''}`}\n aria-label=\"Approve\"\n disabled={busy}\n onClick={() => setChoices((c) => ({ ...c, [ask.id]: 'confirm' }))}\n >\n {'✓'}\n </button>\n </span>\n )}\n </div>\n\n {hasArgs && (\n <div className=\"agno-hitl-card__args\">\n <button\n type=\"button\"\n className=\"agno-hitl-card__args-head\"\n onClick={() => setOpenArgs((o) => ({ ...o, [ask.id]: !argsOpen }))}\n >\n Arguments\n <span className=\"agno-hitl-card__chev\">{argsOpen ? '▲' : '▼'}</span>\n </button>\n {argsOpen && (\n <div className=\"agno-hitl-card__args-body\">\n {Object.entries(ask.args ?? {}).map(([k, v]) => (\n <div className=\"agno-hitl-card__arg\" key={k}>\n <span className=\"agno-hitl-card__arg-key\">{k}</span>\n <span className=\"agno-hitl-card__arg-val\">\n {typeof v === 'object' ? JSON.stringify(v) : String(v)}\n </span>\n </div>\n ))}\n </div>\n )}\n </div>\n )}\n\n {choice === 'reject' && (\n <textarea\n className=\"agno-hitl-card__reason\"\n placeholder=\"Reason for rejection (optional)…\"\n rows={2}\n value={reasons[ask.id] ?? ''}\n disabled={busy}\n onChange={(e) => setReasons((r) => ({ ...r, [ask.id]: e.target.value }))}\n />\n )}\n\n {ask.fields.length > 0 && (\n <div className=\"agno-hitl-card__fields\">\n {ask.fields.map((field) => (\n <label key={field.name} className={`agno-hitl-card__field ${isBoolField(field) ? 'is-bool' : ''}`}>\n <span className=\"agno-hitl-card__field-name\">{field.description || field.name}</span>\n {isBoolField(field) ? (\n <input\n type=\"checkbox\"\n checked={Boolean(valueFor(ask, field))}\n disabled={busy}\n onChange={(e) => setValue(ask.id, field.name, e.target.checked)}\n />\n ) : (\n <input\n className=\"agno-hitl-card__input\"\n value={String(valueFor(ask, field) ?? '')}\n placeholder={field.field_type ?? 'text'}\n disabled={busy}\n onChange={(e) => setValue(ask.id, field.name, e.target.value)}\n />\n )}\n </label>\n ))}\n </div>\n )}\n </div>\n )\n })}\n\n <div className=\"agno-hitl__actions\">\n <button type=\"button\" className=\"agno-btn agno-btn--primary\" disabled={busy || !ready} onClick={submit}>\n Continue\n </button>\n </div>\n </div>\n )\n}\n","/** Renders reference/citation data attached to a message. */\n\nimport React, { useState } from 'react'\n\nimport type { Citations as CitationsType, ReferenceData } from '../types'\n\nexport function Citations({\n references,\n citations,\n}: {\n references?: ReferenceData[]\n citations?: CitationsType\n}): React.ReactElement | null {\n const [open, setOpen] = useState(false)\n const refCount = references?.reduce((n, r) => n + (r.references?.length ?? 0), 0) ?? 0\n const urls = citations?.urls ?? []\n const total = refCount + urls.length\n if (total === 0) return null\n\n return (\n <div className=\"agno-citations\">\n <button type=\"button\" className=\"agno-citations__toggle\" onClick={() => setOpen((v) => !v)}>\n <span aria-hidden>{'\\u{1F4DA}'}</span> {total} source{total > 1 ? 's' : ''}\n <span className=\"agno-citations__chev\">{open ? '▲' : '▼'}</span>\n </button>\n {open && (\n <div className=\"agno-citations__body\">\n {references?.map((group, gi) =>\n (group.references ?? []).map((ref, ri) => (\n <div key={`r-${gi}-${ri}`} className=\"agno-citations__item\">\n <div className=\"agno-citations__name\">{ref.name ?? 'reference'}</div>\n <div className=\"agno-citations__snippet\">{ref.content}</div>\n </div>\n )),\n )}\n {urls.map((u, i) => (\n <a\n key={`u-${i}`}\n className=\"agno-citations__url\"\n href={u.url}\n target=\"_blank\"\n rel=\"noreferrer noopener\"\n >\n {u.title ?? u.url}\n </a>\n ))}\n </div>\n )}\n </div>\n )\n}\n","/**\n * A tiny dependency-free Markdown renderer covering the subset commonly used in\n * chat: fenced code blocks, inline code, bold/italic, links, headings and\n * lists. It renders React nodes (no dangerouslySetInnerHTML).\n *\n * Need full Markdown (tables, GFM, math)? Pass your own renderer via the\n * `renderMarkdown` prop on the chat components, e.g. one backed by\n * `react-markdown`.\n */\n\nimport React from 'react'\n\nexport interface MarkdownProps {\n content: string\n className?: string\n}\n\n/** Inline formatting: `code`, **bold**, *italic*, [text](url). */\nfunction renderInline(text: string, keyPrefix: string): React.ReactNode[] {\n const nodes: React.ReactNode[] = []\n const regex = /(`[^`]+`)|(\\*\\*[^*]+\\*\\*)|(\\*[^*]+\\*)|(\\[[^\\]]+\\]\\([^)]+\\))/g\n let last = 0\n let match: RegExpExecArray | null\n let i = 0\n while ((match = regex.exec(text)) !== null) {\n if (match.index > last) nodes.push(text.slice(last, match.index))\n const token = match[0]\n const key = `${keyPrefix}-${i++}`\n if (token.startsWith('`')) {\n nodes.push(<code key={key} className=\"agno-md-code\">{token.slice(1, -1)}</code>)\n } else if (token.startsWith('**')) {\n nodes.push(<strong key={key}>{token.slice(2, -2)}</strong>)\n } else if (token.startsWith('*')) {\n nodes.push(<em key={key}>{token.slice(1, -1)}</em>)\n } else {\n const m = /\\[([^\\]]+)\\]\\(([^)]+)\\)/.exec(token)\n if (m) {\n nodes.push(\n <a key={key} href={m[2]} target=\"_blank\" rel=\"noreferrer noopener\">\n {m[1]}\n </a>,\n )\n } else {\n nodes.push(token)\n }\n }\n last = match.index + token.length\n }\n if (last < text.length) nodes.push(text.slice(last))\n return nodes\n}\n\nexport function Markdown({ content, className }: MarkdownProps): React.ReactElement {\n const blocks: React.ReactNode[] = []\n const segments = content.split(/(```[\\s\\S]*?```)/g)\n\n segments.forEach((segment, si) => {\n if (segment.startsWith('```')) {\n const body = segment.replace(/^```[^\\n]*\\n?/, '').replace(/```$/, '')\n blocks.push(\n <pre key={`pre-${si}`} className=\"agno-md-pre\">\n <code>{body}</code>\n </pre>,\n )\n return\n }\n\n const lines = segment.split('\\n')\n let listBuffer: string[] = []\n const flushList = (key: string) => {\n if (!listBuffer.length) return\n blocks.push(\n <ul key={key} className=\"agno-md-list\">\n {listBuffer.map((item, ii) => (\n <li key={ii}>{renderInline(item, `${key}-${ii}`)}</li>\n ))}\n </ul>,\n )\n listBuffer = []\n }\n\n lines.forEach((line, li) => {\n const key = `${si}-${li}`\n const heading = /^(#{1,4})\\s+(.*)$/.exec(line)\n const listItem = /^\\s*[-*]\\s+(.*)$/.exec(line)\n if (listItem) {\n listBuffer.push(listItem[1])\n return\n }\n flushList(`ul-${key}`)\n if (heading) {\n const level = heading[1].length\n const Tag = (`h${Math.min(level + 1, 6)}`) as keyof React.JSX.IntrinsicElements\n blocks.push(\n <Tag key={`h-${key}`} className=\"agno-md-heading\">\n {renderInline(heading[2], `h-${key}`)}\n </Tag>,\n )\n } else if (line.trim() === '') {\n // paragraph break — ignore, handled by block spacing\n } else {\n blocks.push(\n <p key={`p-${key}`} className=\"agno-md-p\">\n {renderInline(line, `p-${key}`)}\n </p>,\n )\n }\n })\n flushList(`ul-end-${si}`)\n })\n\n return <div className={['agno-md', className].filter(Boolean).join(' ')}>{blocks}</div>\n}\n\nexport type RenderMarkdown = (content: string) => React.ReactNode\n","/** Renders the tool calls attached to a message: name, args, result, status. */\n\nimport React, { useState } from 'react'\n\nimport type { ToolExecution } from '../types'\n\nfunction statusOf(tool: ToolExecution): { label: string; cls: string } {\n if (tool.tool_call_error) return { label: 'error', cls: 'error' }\n if (tool.requires_confirmation && tool.confirmed == null) return { label: 'awaiting approval', cls: 'paused' }\n if (tool.requires_user_input && !tool.answered) return { label: 'awaiting input', cls: 'paused' }\n if (tool.result != null) return { label: 'done', cls: 'done' }\n return { label: 'running', cls: 'running' }\n}\n\nfunction ToolCall({ tool }: { tool: ToolExecution }): React.ReactElement {\n const [open, setOpen] = useState(false)\n const status = statusOf(tool)\n const hasDetail = Boolean(tool.tool_args && Object.keys(tool.tool_args).length) || tool.result != null\n\n return (\n <div className={`agno-tool agno-tool--${status.cls}`}>\n <button\n type=\"button\"\n className=\"agno-tool__head\"\n onClick={() => hasDetail && setOpen((v) => !v)}\n aria-expanded={open}\n >\n <span className=\"agno-tool__icon\" aria-hidden>{'\\u{1F527}'}</span>\n <span className=\"agno-tool__name\">{tool.tool_name ?? 'tool'}</span>\n <span className={`agno-tool__status agno-tool__status--${status.cls}`}>{status.label}</span>\n {hasDetail && <span className=\"agno-tool__chev\">{open ? '▲' : '▼'}</span>}\n </button>\n {open && hasDetail && (\n <div className=\"agno-tool__body\">\n {tool.tool_args && Object.keys(tool.tool_args).length > 0 && (\n <div className=\"agno-tool__section\">\n <div className=\"agno-tool__label\">Arguments</div>\n <pre className=\"agno-tool__pre\">{JSON.stringify(tool.tool_args, null, 2)}</pre>\n </div>\n )}\n {tool.result != null && (\n <div className=\"agno-tool__section\">\n <div className=\"agno-tool__label\">Result</div>\n <pre className=\"agno-tool__pre\">{String(tool.result)}</pre>\n </div>\n )}\n </div>\n )}\n </div>\n )\n}\n\nexport function ToolCalls({ tools }: { tools?: ToolExecution[] }): React.ReactElement | null {\n if (!tools || tools.length === 0) return null\n return (\n <div className=\"agno-tools\">\n {tools.map((tool, i) => (\n <ToolCall key={tool.tool_call_id ?? `${tool.tool_name}-${i}`} tool={tool} />\n ))}\n </div>\n )\n}\n","/**\n * Renders the nested runs of a team or workflow turn — each team member's\n * response (or each workflow step's executor) as a collapsible card with the\n * member's name, streamed content and tool calls.\n */\n\nimport React, { useState } from 'react'\n\nimport type { SubRun } from '../types'\nimport type { RenderMarkdown } from './Markdown'\nimport { Markdown } from './Markdown'\nimport { ToolCalls } from './ToolCalls'\n\nfunction statusDot(status: SubRun['status']): string {\n if (status === 'error') return 'error'\n if (status === 'completed') return 'done'\n return 'running'\n}\n\nfunction MemberCard({ member, renderMarkdown }: { member: SubRun; renderMarkdown?: RenderMarkdown }): React.ReactElement {\n const [open, setOpen] = useState(true)\n const label = member.kind === 'executor' ? 'Step executor' : 'Member'\n\n return (\n <div className=\"agno-member\">\n <button type=\"button\" className=\"agno-member__head\" onClick={() => setOpen((v) => !v)} aria-expanded={open}>\n <span className={`agno-member__dot agno-member__dot--${statusDot(member.status)}`} aria-hidden />\n <span className=\"agno-member__name\">{member.name ?? member.agent_id ?? label}</span>\n <span className=\"agno-member__kind\">{label}</span>\n <span className=\"agno-member__chev\">{open ? '▲' : '▼'}</span>\n </button>\n {open && (\n <div className=\"agno-member__body\">\n <ToolCalls tools={member.tool_calls} />\n {member.content && (\n <div className=\"agno-member__content\">\n {renderMarkdown ? renderMarkdown(member.content) : <Markdown content={member.content} />}\n </div>\n )}\n </div>\n )}\n </div>\n )\n}\n\nexport function MemberResponses({\n members,\n renderMarkdown,\n title = 'Member responses',\n}: {\n members?: SubRun[]\n renderMarkdown?: RenderMarkdown\n title?: string\n}): React.ReactElement | null {\n if (!members || members.length === 0) return null\n return (\n <div className=\"agno-members\">\n <div className=\"agno-members__title\">\n {title} ({members.length})\n </div>\n {members.map((m) => (\n <MemberCard key={m.run_id} member={m} renderMarkdown={renderMarkdown} />\n ))}\n </div>\n )\n}\n","/** Renders images, videos and audio attached to a message. */\n\nimport React from 'react'\n\nimport type { AudioData, ImageData, VideoData } from '../types'\n\nfunction audioSrc(a: AudioData): string | undefined {\n if (a.url) return a.url\n if (a.base64_audio) return `data:${a.mime_type ?? 'audio/mpeg'};base64,${a.base64_audio}`\n if (a.content) return `data:${a.mime_type ?? 'audio/wav'};base64,${a.content}`\n return undefined\n}\n\nexport function Multimedia({\n images,\n videos,\n audio,\n responseAudio,\n}: {\n images?: ImageData[]\n videos?: VideoData[]\n audio?: AudioData[]\n responseAudio?: AudioData\n}): React.ReactElement | null {\n const audios = [...(audio ?? []), ...(responseAudio ? [responseAudio] : [])]\n if (!images?.length && !videos?.length && !audios.length) return null\n\n return (\n <div className=\"agno-media\">\n {images?.map((img, i) =>\n img.url ? (\n <img key={`img-${i}`} className=\"agno-media__img\" src={img.url} alt={img.revised_prompt ?? 'image'} />\n ) : null,\n )}\n {videos?.map((v, i) =>\n v.url ? (\n <video key={`vid-${i}`} className=\"agno-media__video\" src={v.url} controls />\n ) : null,\n )}\n {audios.map((a, i) => {\n const src = audioSrc(a)\n return src ? <audio key={`aud-${i}`} className=\"agno-media__audio\" src={src} controls /> : null\n })}\n </div>\n )\n}\n","/** Renders a message's reasoning steps in a collapsible panel. */\n\nimport React, { useState } from 'react'\n\nimport type { ReasoningStep } from '../types'\n\nexport function Reasoning({\n steps,\n defaultOpen = false,\n}: {\n steps?: ReasoningStep[]\n defaultOpen?: boolean\n}): React.ReactElement | null {\n const [open, setOpen] = useState(defaultOpen)\n if (!steps || steps.length === 0) return null\n\n return (\n <div className=\"agno-reasoning\">\n <button type=\"button\" className=\"agno-reasoning__toggle\" onClick={() => setOpen((v) => !v)}>\n <span aria-hidden>{'\\u{1F4AD}'}</span> Reasoning ({steps.length} step{steps.length > 1 ? 's' : ''})\n <span className=\"agno-reasoning__chev\">{open ? '▲' : '▼'}</span>\n </button>\n {open && (\n <ol className=\"agno-reasoning__list\">\n {steps.map((step, i) => (\n <li key={i} className=\"agno-reasoning__step\">\n {step.title && <div className=\"agno-reasoning__title\">{step.title}</div>}\n {step.reasoning && <div className=\"agno-reasoning__text\">{step.reasoning}</div>}\n {step.action && <div className=\"agno-reasoning__meta\">Action: {step.action}</div>}\n {step.result && <div className=\"agno-reasoning__meta\">Result: {step.result}</div>}\n {typeof step.confidence === 'number' && (\n <div className=\"agno-reasoning__meta\">Confidence: {Math.round(step.confidence * 100)}%</div>\n )}\n </li>\n ))}\n </ol>\n )}\n </div>\n )\n}\n","/**\n * Renders the steps of a workflow run as an ordered progress list, each with a\n * status indicator, the step name, and its collapsible output.\n */\n\nimport React, { useState } from 'react'\n\nimport type { WorkflowStep } from '../types'\nimport type { RenderMarkdown } from './Markdown'\nimport { Markdown } from './Markdown'\n\nfunction StepRow({ step, renderMarkdown }: { step: WorkflowStep; renderMarkdown?: RenderMarkdown }): React.ReactElement {\n const [open, setOpen] = useState(false)\n const hasBody = Boolean(step.content || step.error)\n\n return (\n <div className={`agno-step agno-step--${step.status}`}>\n <button\n type=\"button\"\n className=\"agno-step__head\"\n onClick={() => hasBody && setOpen((v) => !v)}\n aria-expanded={open}\n >\n <span className={`agno-step__icon agno-step__icon--${step.status}`} aria-hidden>\n {step.status === 'completed' ? '✓' : step.status === 'error' ? '!' : '●'}\n </span>\n <span className=\"agno-step__name\">{step.name ?? step.key}</span>\n {hasBody && <span className=\"agno-step__chev\">{open ? '▲' : '▼'}</span>}\n </button>\n {open && hasBody && (\n <div className=\"agno-step__body\">\n {step.error ? (\n <div className=\"agno-step__error\">{step.error}</div>\n ) : step.content ? (\n renderMarkdown ? renderMarkdown(step.content) : <Markdown content={step.content} />\n ) : null}\n </div>\n )}\n </div>\n )\n}\n\nexport function WorkflowSteps({\n steps,\n renderMarkdown,\n title = 'Steps',\n}: {\n steps?: WorkflowStep[]\n renderMarkdown?: RenderMarkdown\n title?: string\n}): React.ReactElement | null {\n if (!steps || steps.length === 0) return null\n return (\n <div className=\"agno-steps\">\n <div className=\"agno-steps__title\">\n {title} ({steps.length})\n </div>\n <div className=\"agno-steps__list\">\n {steps.map((s) => (\n <StepRow key={s.key} step={s} renderMarkdown={renderMarkdown} />\n ))}\n </div>\n </div>\n )\n}\n","/** Renders a single chat message: content, tools, reasoning, media, citations. */\n\nimport React from 'react'\n\nimport type { ChatMessage } from '../types'\nimport { Citations } from './Citations'\nimport { Markdown, type RenderMarkdown } from './Markdown'\nimport { MemberResponses } from './MemberResponses'\nimport { Multimedia } from './Multimedia'\nimport { Reasoning } from './Reasoning'\nimport { ToolCalls } from './ToolCalls'\nimport { WorkflowSteps } from './WorkflowSteps'\n\nexport interface MessageProps {\n message: ChatMessage\n /** Override the Markdown renderer (e.g. plug in react-markdown). */\n renderMarkdown?: RenderMarkdown\n /** Live activity label, shown inside the bubble while streaming with no content yet. */\n activity?: string | null\n /** Hide the reasoning panel. */\n hideReasoning?: boolean\n /** Hide tool calls. */\n hideTools?: boolean\n}\n\nexport function Message({ message, renderMarkdown, activity, hideReasoning, hideTools }: MessageProps): React.ReactElement {\n const isUser = message.role === 'user'\n const isAgent = message.role === 'agent'\n const hasActivity =\n !message.content &&\n !message.tool_calls?.length &&\n !message.steps?.length &&\n !message.members?.length &&\n !message.reasoning_steps?.length\n\n return (\n <div className={`agno-msg agno-msg--${message.role}`} data-status={message.status}>\n <div className=\"agno-msg__avatar\" aria-hidden>\n {isUser ? '\\u{1F464}' : isAgent ? 'A' : '\\u{2699}'}\n </div>\n <div className=\"agno-msg__body\">\n {isAgent && !hideReasoning && <Reasoning steps={message.reasoning_steps} />}\n {isAgent && <WorkflowSteps steps={message.steps} renderMarkdown={renderMarkdown} />}\n {isAgent && <MemberResponses members={message.members} renderMarkdown={renderMarkdown} />}\n {isAgent && !hideTools && <ToolCalls tools={message.tool_calls} />}\n\n {message.content ? (\n <div className=\"agno-msg__content\">\n {renderMarkdown ? renderMarkdown(message.content) : <Markdown content={message.content} />}\n {message.streaming && <span className=\"agno-msg__caret\" aria-hidden />}\n </div>\n ) : (\n isAgent &&\n message.streaming &&\n hasActivity && (\n <div className=\"agno-msg__activity\" role=\"status\" aria-live=\"polite\">\n <span className=\"agno-status__dots\" aria-hidden>\n <span />\n <span />\n <span />\n </span>\n <span className=\"agno-msg__activity-label\">{activity ?? 'Working'}</span>\n </div>\n )\n )}\n\n <Multimedia\n images={message.images}\n videos={message.videos}\n audio={message.audio}\n responseAudio={message.response_audio}\n />\n {isAgent && <Citations references={message.references} citations={message.citations} />}\n\n {message.error && <div className=\"agno-msg__error\">{message.error}</div>}\n </div>\n </div>\n )\n}\n","/** Scrollable transcript that auto-sticks to the bottom while streaming. */\n\nimport React, { useEffect, useRef } from 'react'\n\nimport type { ChatMessage, ChatStatus } from '../types'\nimport type { RenderMarkdown } from './Markdown'\nimport { Message } from './Message'\n\nexport interface MessageListProps {\n messages: ChatMessage[]\n status: ChatStatus\n activity?: string | null\n renderMarkdown?: RenderMarkdown\n emptyState?: React.ReactNode\n /** Rendered after the last message (e.g. a human-in-the-loop panel). */\n footer?: React.ReactNode\n}\n\nexport function MessageList({\n messages,\n status,\n activity,\n renderMarkdown,\n emptyState,\n footer,\n}: MessageListProps): React.ReactElement {\n const endRef = useRef<HTMLDivElement>(null)\n const stick = useRef(true)\n const containerRef = useRef<HTMLDivElement>(null)\n\n // Track whether the user has scrolled up; only auto-scroll when at the bottom.\n const onScroll = () => {\n const el = containerRef.current\n if (!el) return\n stick.current = el.scrollHeight - el.scrollTop - el.clientHeight < 80\n }\n\n useEffect(() => {\n if (stick.current) endRef.current?.scrollIntoView({ behavior: 'smooth', block: 'end' })\n }, [messages, activity, status])\n\n return (\n <div className=\"agno-list\" ref={containerRef} onScroll={onScroll}>\n {messages.length === 0 && <div className=\"agno-list__empty\">{emptyState ?? 'Start the conversation.'}</div>}\n {messages.map((m) => (\n <Message\n key={m.id}\n message={m}\n renderMarkdown={renderMarkdown}\n activity={m.streaming && status === 'streaming' ? activity : undefined}\n />\n ))}\n {footer}\n <div ref={endRef} />\n </div>\n )\n}\n","/**\n * A complete chat surface built from a `useAgnoChat` result. Pass the hook's\n * return value as `chat`; this renders the transcript, the live status, the\n * human-in-the-loop panel, and the input box.\n *\n * Use this when you call `useAgnoChat` yourself (so you control the entity,\n * session, headers, etc.). For a zero-wiring widget, use `<AgnoChat>`.\n */\n\nimport React from 'react'\n\nimport type { UseAgnoChat } from '../useAgnoChat'\nimport { ChatInput } from './ChatInput'\nimport { HumanInput } from './HumanInput'\nimport type { RenderMarkdown } from './Markdown'\nimport { MessageList } from './MessageList'\n\nexport interface ChatWindowProps {\n chat: UseAgnoChat\n placeholder?: string\n emptyState?: React.ReactNode\n allowFiles?: boolean\n disabled?: boolean\n renderMarkdown?: RenderMarkdown\n className?: string\n}\n\nexport function ChatWindow({\n chat,\n placeholder,\n emptyState,\n allowFiles,\n disabled,\n renderMarkdown,\n className,\n}: ChatWindowProps): React.ReactElement {\n const pausedMessage = chat.isPaused\n ? [...chat.messages].reverse().find((m) => m.status === 'paused')\n : undefined\n\n return (\n <div className={['agno-chat', className].filter(Boolean).join(' ')}>\n <MessageList\n messages={chat.messages}\n status={chat.status}\n activity={chat.activity}\n renderMarkdown={renderMarkdown}\n emptyState={emptyState}\n footer={\n pausedMessage ? (\n <HumanInput\n message={pausedMessage}\n entityType={chat.entityType}\n busy={chat.isStreaming}\n onResolve={chat.continueRun}\n />\n ) : null\n }\n />\n {chat.error && !chat.isPaused && <div className=\"agno-chat__error\">{chat.error}</div>}\n <ChatInput\n onSend={(message, files) => chat.sendMessage(message, files ? { files } : undefined)}\n onStop={chat.cancel}\n busy={chat.isStreaming}\n disabled={disabled || chat.isPaused}\n placeholder={placeholder}\n allowFiles={allowFiles}\n />\n </div>\n )\n}\n","/**\n * Entity picker styled after the Agno OS chat selector: a compact bordered\n * trigger showing the selection in mono-uppercase, opening a dark popover with\n * muted group labels (Agents / Teams / Workflows) and a check on the active\n * item. Custom popover (no native <select>, no extra deps).\n */\n\nimport React, { useEffect, useRef, useState } from 'react'\n\nimport type { Entity } from '../types'\n\nconst TYPE_LABEL: Record<Entity['type'], string> = {\n agent: 'Agents',\n team: 'Teams',\n workflow: 'Workflows',\n}\n\nconst ORDER: Entity['type'][] = ['agent', 'team', 'workflow']\n\nexport function EntitySelector({\n entities,\n value,\n onChange,\n disabled,\n placeholder = 'Select an agent, team or workflow',\n}: {\n entities: Entity[]\n value?: Entity | null\n onChange: (entity: Entity) => void\n disabled?: boolean\n placeholder?: string\n}): React.ReactElement {\n const [open, setOpen] = useState(false)\n const rootRef = useRef<HTMLDivElement>(null)\n const key = (e: Entity) => `${e.type}:${e.id}`\n\n useEffect(() => {\n if (!open) return\n const onDocClick = (e: MouseEvent) => {\n if (rootRef.current && !rootRef.current.contains(e.target as Node)) setOpen(false)\n }\n const onKey = (e: KeyboardEvent) => {\n if (e.key === 'Escape') setOpen(false)\n }\n document.addEventListener('mousedown', onDocClick)\n document.addEventListener('keydown', onKey)\n return () => {\n document.removeEventListener('mousedown', onDocClick)\n document.removeEventListener('keydown', onKey)\n }\n }, [open])\n\n return (\n <div className=\"agno-select\" ref={rootRef}>\n <button\n type=\"button\"\n className=\"agno-select__trigger\"\n disabled={disabled}\n aria-haspopup=\"listbox\"\n aria-expanded={open}\n onClick={() => setOpen((v) => !v)}\n >\n <span className=\"agno-select__value\">{value ? value.name : placeholder}</span>\n <span className={`agno-select__chev ${open ? 'is-open' : ''}`} aria-hidden>\n ⌄\n </span>\n </button>\n\n {open && (\n <div className=\"agno-select__panel\" role=\"listbox\">\n {entities.length === 0 && <div className=\"agno-select__empty\">Nothing available</div>}\n {ORDER.map((type) => {\n const items = entities.filter((e) => e.type === type)\n if (items.length === 0) return null\n return (\n <div className=\"agno-select__group\" key={type}>\n <div className=\"agno-select__group-label\">{TYPE_LABEL[type]}</div>\n {items.map((ent) => {\n const selected = value ? key(value) === key(ent) : false\n return (\n <button\n type=\"button\"\n key={key(ent)}\n role=\"option\"\n aria-selected={selected}\n className={`agno-select__option ${selected ? 'is-selected' : ''}`}\n onClick={() => {\n onChange(ent)\n setOpen(false)\n }}\n >\n <span className=\"agno-select__check\" aria-hidden>\n {selected ? '✓' : ''}\n </span>\n <span className=\"agno-select__label\">{ent.name}</span>\n {ent.model?.model && <span className=\"agno-select__model\">{ent.model.model}</span>}\n </button>\n )\n })}\n </div>\n )\n })}\n </div>\n )}\n </div>\n )\n}\n","/**\n * A developer-facing live feed of run events. Consecutive repeats of the same\n * event (e.g. the stream of `RunContent` deltas) are folded into a single row\n * with a count, and each row is labelled with the agent/team/workflow it came\n * from — so a streaming run reads as one \"RunContent ×N\" line, not hundreds.\n */\n\nimport React, { useEffect, useMemo, useRef } from 'react'\n\nimport { activityLabel } from '../events'\nimport type { RunEventData } from '../types'\n\ninterface FoldedEvent {\n event: string\n source?: string\n count: number\n created_at?: number\n detail?: string | null\n}\n\nfunction sourceOf(e: RunEventData): string | undefined {\n return (\n (e.agent_name as string) ||\n (e.team_name as string) ||\n (e.workflow_name as string) ||\n (e.agent_id as string) ||\n (e.team_id as string) ||\n (e.workflow_id as string) ||\n undefined\n )\n}\n\n/** Merge consecutive events that share the same name + source into one row. */\nfunction fold(events: RunEventData[]): FoldedEvent[] {\n const rows: FoldedEvent[] = []\n for (const e of events) {\n const name = String(e.event)\n const source = sourceOf(e)\n const last = rows[rows.length - 1]\n if (last && last.event === name && last.source === source) {\n last.count += 1\n last.created_at = e.created_at ?? last.created_at\n continue\n }\n rows.push({ event: name, source, count: 1, created_at: e.created_at, detail: activityLabel(e) })\n }\n return rows\n}\n\nexport function EventLog({\n events,\n autoScroll = true,\n maxHeight = 240,\n}: {\n events: RunEventData[]\n autoScroll?: boolean\n maxHeight?: number\n}): React.ReactElement {\n const ref = useRef<HTMLDivElement>(null)\n const rows = useMemo(() => fold(events), [events])\n\n useEffect(() => {\n if (autoScroll && ref.current) ref.current.scrollTop = ref.current.scrollHeight\n }, [rows, autoScroll])\n\n return (\n <div className=\"agno-eventlog\" ref={ref} style={{ maxHeight }}>\n {rows.length === 0 && <div className=\"agno-eventlog__empty\">No events yet.</div>}\n {rows.map((row, i) => (\n <div key={i} className=\"agno-eventlog__row\">\n <span className=\"agno-eventlog__name\">{row.event}</span>\n {row.count > 1 && <span className=\"agno-eventlog__count\">×{row.count}</span>}\n {row.source && <span className=\"agno-eventlog__source\">{row.source}</span>}\n {row.created_at && (\n <span className=\"agno-eventlog__time\">\n {new Date(row.created_at * 1000).toLocaleTimeString()}\n </span>\n )}\n </div>\n ))}\n </div>\n )\n}\n","/**\n * A sidebar listing the past sessions of the selected entity. Clicking a\n * session loads its transcript; the trash icon deletes it.\n *\n * Pair with `useAgnoChat`: pass `chat.sessions`, `chat.loadSession`, etc.\n */\n\nimport React from 'react'\n\nimport type { SessionEntry } from '../types'\n\nexport interface SessionListProps {\n sessions: SessionEntry[]\n activeSessionId?: string\n loading?: boolean\n onSelect: (sessionId: string) => void\n onDelete?: (sessionId: string) => void\n onNew?: () => void\n title?: string\n}\n\nfunction label(session: SessionEntry): string {\n return session.session_name?.trim() || session.session_id\n}\n\n/**\n * Render a session's creation time, tolerating the various shapes the API may\n * return: Unix seconds, Unix milliseconds, or an ISO date string. Returns an\n * empty string for missing/unparseable values so we never show \"Invalid Date\".\n */\nfunction formatDate(value: SessionEntry['created_at']): string {\n if (value == null) return ''\n\n let date: Date\n if (typeof value === 'number') {\n // Heuristic: seconds vs. milliseconds. Timestamps before ~2001 in ms would\n // be implausibly old, so treat small values as seconds.\n date = new Date(value < 1e12 ? value * 1000 : value)\n } else {\n date = new Date(value)\n }\n\n if (Number.isNaN(date.getTime())) return ''\n return date.toLocaleDateString()\n}\n\nexport function SessionList({\n sessions,\n activeSessionId,\n loading,\n onSelect,\n onDelete,\n onNew,\n title = 'Sessions',\n}: SessionListProps): React.ReactElement {\n return (\n <div className=\"agno-sessions\">\n {onNew && (\n <button type=\"button\" className=\"agno-sessions__new\" onClick={onNew} aria-label=\"New chat\">\n <span aria-hidden>+</span> New Chat\n </button>\n )}\n\n <div className=\"agno-sessions__head\">\n <span className=\"agno-sessions__title\">{title}</span>\n </div>\n\n {loading && <div className=\"agno-sessions__empty\">Loading…</div>}\n {!loading && sessions.length === 0 && <div className=\"agno-sessions__empty\">No past sessions.</div>}\n\n <ul className=\"agno-sessions__list\">\n {sessions.map((session) => (\n <li\n key={session.session_id}\n className={`agno-sessions__item ${session.session_id === activeSessionId ? 'is-active' : ''}`}\n >\n <button type=\"button\" className=\"agno-sessions__select\" onClick={() => onSelect(session.session_id)}>\n <span className=\"agno-sessions__name\">{label(session)}</span>\n {formatDate(session.created_at) && (\n <span className=\"agno-sessions__date\">{formatDate(session.created_at)}</span>\n )}\n </button>\n {onDelete && (\n <button\n type=\"button\"\n className=\"agno-sessions__delete\"\n aria-label=\"Delete session\"\n onClick={() => onDelete(session.session_id)}\n >\n {'\\u{1F5D1}'}\n </button>\n )}\n </li>\n ))}\n </ul>\n </div>\n )\n}\n","/**\n * Zero-wiring chat widget. Point it at an AgentOS URL and it discovers the\n * available agents/teams/workflows, lets the user pick one, and runs a full\n * streaming chat — transcript, tools, reasoning, media, human-in-the-loop, and\n * an optional live event log.\n *\n * For finer control (custom layout, auth headers, session restore), call\n * `useAgnoChat` directly and render `<ChatWindow>`.\n */\n\nimport React, { useEffect, useMemo, useState } from 'react'\n\nimport { AgnoClient } from '../client'\nimport type { Entity } from '../types'\nimport { useAgnoChat } from '../useAgnoChat'\nimport { ChatWindow } from './ChatWindow'\nimport { EntitySelector } from './EntitySelector'\nimport { EventLog } from './EventLog'\nimport type { RenderMarkdown } from './Markdown'\nimport { SessionList } from './SessionList'\n\nexport interface AgnoChatProps {\n /** AgentOS base URL, e.g. \"http://localhost:7777\". */\n baseUrl?: string\n /** Pre-built client (overrides baseUrl); use for shared auth/headers. */\n client?: AgnoClient\n headers?: Record<string, string>\n userId?: string\n /** Fix the entity (hides the selector). Otherwise the user picks one. */\n entity?: Entity\n /** Provide entities explicitly instead of auto-discovering them. */\n entities?: Entity[]\n title?: string\n placeholder?: string\n allowFiles?: boolean\n /** Show the collapsible raw event log. Default false. */\n showEventLog?: boolean\n /** Show the past-sessions sidebar. Default false. */\n showSessions?: boolean\n renderMarkdown?: RenderMarkdown\n className?: string\n height?: number | string\n}\n\nexport function AgnoChat(props: AgnoChatProps): React.ReactElement {\n const client = useMemo(\n () => props.client ?? new AgnoClient({ baseUrl: props.baseUrl ?? '', headers: props.headers }),\n [props.client, props.baseUrl, props.headers],\n )\n\n const [discovered, setDiscovered] = useState<Entity[]>(props.entities ?? [])\n const [selected, setSelected] = useState<Entity | null>(props.entity ?? null)\n const [showLog, setShowLog] = useState(false)\n const [discoveryDone, setDiscoveryDone] = useState(Boolean(props.entity || props.entities))\n\n // Discover entities once if none were provided.\n useEffect(() => {\n if (props.entity || props.entities) return\n let cancelled = false\n setDiscoveryDone(false)\n client.getEntities().then((list) => {\n if (cancelled) return\n setDiscovered(list)\n setSelected((cur) => cur ?? list[0] ?? null)\n setDiscoveryDone(true)\n })\n return () => {\n cancelled = true\n }\n }, [client, props.entity, props.entities])\n\n const entity = props.entity ?? selected\n const chat = useAgnoChat({ client, entity, userId: props.userId })\n\n // Load the session list whenever the entity changes.\n const { refreshSessions } = chat\n useEffect(() => {\n if (props.showSessions && entity) refreshSessions()\n }, [props.showSessions, entity?.type, entity?.id, refreshSessions])\n\n // Refresh the list once a run finishes (a new session may have appeared).\n useEffect(() => {\n if (props.showSessions && entity && chat.status === 'completed') refreshSessions()\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [chat.status])\n\n // Starting a new conversation when the entity changes keeps state coherent.\n const onSelect = (e: Entity) => {\n setSelected(e)\n chat.reset()\n }\n\n const showSelector = !props.entity\n const entities = props.entities ?? discovered\n const noEntities = showSelector && discoveryDone && entities.length === 0\n\n return (\n <div\n className={['agno-root', props.className].filter(Boolean).join(' ')}\n style={{ height: props.height ?? 560 }}\n >\n <div className=\"agno-header\">\n <div className=\"agno-header__brand\">\n <span className=\"agno-logo\" aria-hidden>\n A\n </span>\n <span className=\"agno-header__title\">{props.title ?? entity?.name ?? 'Agent UI'}</span>\n </div>\n <div className=\"agno-header__controls\">\n {showSelector && (\n <EntitySelector entities={entities} value={entity} onChange={onSelect} disabled={chat.isStreaming} />\n )}\n {props.showEventLog && (\n <button\n type=\"button\"\n className={`agno-btn agno-btn--ghost ${showLog ? 'is-active' : ''}`}\n onClick={() => setShowLog((v) => !v)}\n >\n Events\n </button>\n )}\n <button type=\"button\" className=\"agno-btn agno-btn--ghost\" onClick={chat.reset} disabled={chat.isStreaming}>\n New chat\n </button>\n </div>\n </div>\n\n {noEntities && (\n <div className=\"agno-banner\">\n No agents, teams or workflows found at <code>{client.baseUrl || '(no URL)'}</code>. Check the URL is\n correct, that AgentOS is running, and that this origin is in its CORS allowlist\n (<code>cors_allowed_origins</code>).\n </div>\n )}\n\n <div className=\"agno-main\">\n {props.showSessions && (\n <div className=\"agno-sidebar agno-sidebar--left\">\n <SessionList\n sessions={chat.sessions}\n activeSessionId={chat.sessionId}\n loading={chat.sessionsLoading}\n onSelect={chat.loadSession}\n onDelete={chat.deleteSession}\n onNew={chat.reset}\n />\n </div>\n )}\n <ChatWindow\n chat={chat}\n placeholder={props.placeholder}\n allowFiles={props.allowFiles}\n disabled={!entity}\n renderMarkdown={props.renderMarkdown}\n emptyState={\n entity ? `Chat with ${entity.name}.` : 'Select an agent, team or workflow to begin.'\n }\n />\n {props.showEventLog && showLog && (\n <div className=\"agno-sidebar\">\n <div className=\"agno-sidebar__title\">Event stream</div>\n <EventLog events={chat.events} />\n </div>\n )}\n </div>\n </div>\n )\n}\n","/** A live status line showing what the run is currently doing. */\n\nimport React from 'react'\n\nimport type { ChatStatus } from '../types'\n\nexport function StatusIndicator({\n status,\n activity,\n}: {\n status: ChatStatus\n activity?: string | null\n}): React.ReactElement | null {\n if (status !== 'streaming' && status !== 'paused') return null\n const label = activity ?? (status === 'paused' ? 'Waiting for input' : 'Working')\n\n return (\n <div className={`agno-status agno-status--${status}`} role=\"status\" aria-live=\"polite\">\n <span className=\"agno-status__dots\" aria-hidden>\n <span />\n <span />\n <span />\n </span>\n <span className=\"agno-status__label\">{label}</span>\n </div>\n )\n}\n","/**\n * Types for AgentOS run events, messages, and entities.\n *\n * These mirror the wire format emitted by Agno's AgentOS when streaming a run\n * for an agent, team, or workflow. Field names match the JSON sent on the wire.\n */\n\n/* ------------------------------------------------------------------ */\n/* Run event names */\n/* ------------------------------------------------------------------ */\n\n/** Agent run event names. */\nexport enum RunEvent {\n RunStarted = 'RunStarted',\n RunContent = 'RunContent',\n RunContentCompleted = 'RunContentCompleted',\n RunIntermediateContent = 'RunIntermediateContent',\n RunCompleted = 'RunCompleted',\n RunError = 'RunError',\n RunCancelled = 'RunCancelled',\n RunPaused = 'RunPaused',\n RunContinued = 'RunContinued',\n\n PreHookStarted = 'PreHookStarted',\n PreHookCompleted = 'PreHookCompleted',\n PostHookStarted = 'PostHookStarted',\n PostHookCompleted = 'PostHookCompleted',\n\n ToolCallStarted = 'ToolCallStarted',\n ToolCallCompleted = 'ToolCallCompleted',\n ToolCallError = 'ToolCallError',\n\n ReasoningStarted = 'ReasoningStarted',\n ReasoningStep = 'ReasoningStep',\n ReasoningContentDelta = 'ReasoningContentDelta',\n ReasoningCompleted = 'ReasoningCompleted',\n\n MemoryUpdateStarted = 'MemoryUpdateStarted',\n MemoryUpdateCompleted = 'MemoryUpdateCompleted',\n\n SessionSummaryStarted = 'SessionSummaryStarted',\n SessionSummaryCompleted = 'SessionSummaryCompleted',\n\n ParserModelResponseStarted = 'ParserModelResponseStarted',\n ParserModelResponseCompleted = 'ParserModelResponseCompleted',\n OutputModelResponseStarted = 'OutputModelResponseStarted',\n OutputModelResponseCompleted = 'OutputModelResponseCompleted',\n\n ModelRequestStarted = 'ModelRequestStarted',\n ModelRequestCompleted = 'ModelRequestCompleted',\n\n CompressionStarted = 'CompressionStarted',\n CompressionCompleted = 'CompressionCompleted',\n\n FollowupsStarted = 'FollowupsStarted',\n FollowupsCompleted = 'FollowupsCompleted',\n\n CustomEvent = 'CustomEvent',\n}\n\n/** Team run event names. */\nexport enum TeamRunEvent {\n TeamRunStarted = 'TeamRunStarted',\n TeamRunContent = 'TeamRunContent',\n TeamRunIntermediateContent = 'TeamRunIntermediateContent',\n TeamRunContentCompleted = 'TeamRunContentCompleted',\n TeamRunCompleted = 'TeamRunCompleted',\n TeamRunError = 'TeamRunError',\n TeamRunCancelled = 'TeamRunCancelled',\n TeamRunPaused = 'TeamRunPaused',\n TeamRunContinued = 'TeamRunContinued',\n\n TeamToolCallStarted = 'TeamToolCallStarted',\n TeamToolCallCompleted = 'TeamToolCallCompleted',\n TeamToolCallError = 'TeamToolCallError',\n\n TeamReasoningStarted = 'TeamReasoningStarted',\n TeamReasoningStep = 'TeamReasoningStep',\n TeamReasoningContentDelta = 'TeamReasoningContentDelta',\n TeamReasoningCompleted = 'TeamReasoningCompleted',\n\n TeamMemoryUpdateStarted = 'TeamMemoryUpdateStarted',\n TeamMemoryUpdateCompleted = 'TeamMemoryUpdateCompleted',\n\n TeamTaskIterationStarted = 'TeamTaskIterationStarted',\n TeamTaskIterationCompleted = 'TeamTaskIterationCompleted',\n TeamTaskStateUpdated = 'TeamTaskStateUpdated',\n TeamTaskCreated = 'TeamTaskCreated',\n TeamTaskUpdated = 'TeamTaskUpdated',\n}\n\n/** Workflow run event names. */\nexport enum WorkflowRunEvent {\n WorkflowStarted = 'WorkflowStarted',\n WorkflowCompleted = 'WorkflowCompleted',\n WorkflowPaused = 'WorkflowPaused',\n WorkflowCancelled = 'WorkflowCancelled',\n WorkflowError = 'WorkflowError',\n\n WorkflowAgentStarted = 'WorkflowAgentStarted',\n WorkflowAgentCompleted = 'WorkflowAgentCompleted',\n\n StepStarted = 'StepStarted',\n StepCompleted = 'StepCompleted',\n StepPaused = 'StepPaused',\n StepContinued = 'StepContinued',\n StepError = 'StepError',\n StepOutput = 'StepOutput',\n StepOutputReview = 'StepOutputReview',\n\n LoopExecutionStarted = 'LoopExecutionStarted',\n LoopIterationStarted = 'LoopIterationStarted',\n LoopIterationCompleted = 'LoopIterationCompleted',\n LoopExecutionCompleted = 'LoopExecutionCompleted',\n\n ParallelExecutionStarted = 'ParallelExecutionStarted',\n ParallelExecutionCompleted = 'ParallelExecutionCompleted',\n\n ConditionExecutionStarted = 'ConditionExecutionStarted',\n ConditionExecutionCompleted = 'ConditionExecutionCompleted',\n ConditionPaused = 'ConditionPaused',\n\n RouterExecutionStarted = 'RouterExecutionStarted',\n RouterExecutionCompleted = 'RouterExecutionCompleted',\n RouterPaused = 'RouterPaused',\n\n StepsExecutionStarted = 'StepsExecutionStarted',\n StepsExecutionCompleted = 'StepsExecutionCompleted',\n}\n\n/** Any run event name, across agents, teams and workflows. */\nexport type AnyRunEventName = RunEvent | TeamRunEvent | WorkflowRunEvent | string\n\n/* ------------------------------------------------------------------ */\n/* Tool calls */\n/* ------------------------------------------------------------------ */\n\nexport interface UserInputField {\n name: string\n field_type?: string\n description?: string\n value?: unknown\n}\n\nexport interface ToolExecution {\n tool_call_id?: string\n tool_name?: string\n tool_args?: Record<string, unknown>\n tool_call_error?: boolean\n result?: string\n metrics?: { time?: number }\n created_at?: number\n stop_after_tool_call?: boolean\n\n // Human-in-the-loop\n requires_confirmation?: boolean\n confirmed?: boolean\n confirmation_note?: string\n requires_user_input?: boolean\n user_input_schema?: UserInputField[]\n answered?: boolean\n external_execution_required?: boolean\n\n // present on a few content payloads under the legacy `role`/`content` shape\n role?: string\n content?: string | null\n}\n\n/* ------------------------------------------------------------------ */\n/* Reasoning, references, media */\n/* ------------------------------------------------------------------ */\n\nexport interface ReasoningStep {\n title?: string\n action?: string\n result?: string\n reasoning?: string\n confidence?: number\n next_action?: string\n}\n\nexport interface Reference {\n content: string\n name?: string\n meta_data?: Record<string, unknown>\n}\n\nexport interface ReferenceData {\n query: string\n references: Reference[]\n time?: number\n}\n\nexport interface ImageData {\n url?: string\n revised_prompt?: string\n content?: string\n}\n\nexport interface VideoData {\n id?: number | string\n url?: string\n eta?: number\n}\n\nexport interface AudioData {\n id?: string\n url?: string\n base64_audio?: string\n mime_type?: string\n content?: string\n transcript?: string\n channels?: number\n sample_rate?: number\n}\n\nexport interface Citations {\n raw?: unknown\n urls?: Array<{ url?: string; title?: string }>\n}\n\n/* ------------------------------------------------------------------ */\n/* The raw streamed event */\n/* ------------------------------------------------------------------ */\n\n/**\n * A single run event off the wire, normalised to a flat object. The `event`\n * field is the discriminator; other fields depend on the event type. This is a\n * permissive superset — most fields are optional and present only for the\n * events that carry them.\n */\nexport interface RunEventData {\n event: AnyRunEventName\n created_at?: number\n run_id?: string\n parent_run_id?: string\n session_id?: string\n agent_id?: string\n agent_name?: string\n team_id?: string\n team_name?: string\n workflow_id?: string\n workflow_name?: string\n\n content?: string | object | null\n content_type?: string\n reasoning_content?: string\n\n tool?: ToolExecution\n tools?: ToolExecution[]\n\n reasoning_steps?: ReasoningStep[]\n references?: ReferenceData[]\n citations?: Citations\n\n images?: ImageData[]\n videos?: VideoData[]\n audio?: AudioData[]\n response_audio?: AudioData\n\n // workflow / step context\n step_name?: string\n step_index?: number | [number, number]\n iteration?: number\n max_iterations?: number\n\n // pause / human-in-the-loop\n requirements?: RunRequirement[]\n requires_confirmation?: boolean\n confirmation_message?: string\n requires_user_input?: boolean\n user_input_message?: string\n user_input_schema?: UserInputField[]\n available_choices?: string[]\n allow_multiple_selections?: boolean\n\n // error\n error?: string\n error_type?: string\n\n // model metrics\n model?: string\n model_provider?: string\n input_tokens?: number\n output_tokens?: number\n total_tokens?: number\n\n metrics?: Record<string, unknown>\n extra_data?: {\n reasoning_steps?: ReasoningStep[]\n references?: ReferenceData[]\n }\n\n // allow forward-compatible access to any other field\n [key: string]: unknown\n}\n\n/* ------------------------------------------------------------------ */\n/* Human-in-the-loop requirement */\n/* ------------------------------------------------------------------ */\n\nexport type PauseType = 'confirmation' | 'user_input' | 'user_feedback' | 'external_execution'\n\nexport interface RunRequirement {\n id: string\n tool_execution?: ToolExecution\n confirmation?: boolean\n confirmation_note?: string\n user_input_schema?: UserInputField[]\n external_execution_result?: string\n member_agent_id?: string\n member_agent_name?: string\n pause_type?: PauseType\n}\n\n/* ------------------------------------------------------------------ */\n/* Chat message (the accumulated, render-ready view of a run) */\n/* ------------------------------------------------------------------ */\n\nexport type ChatRole = 'user' | 'agent' | 'system'\n\nexport type ChatStatus = 'idle' | 'streaming' | 'paused' | 'completed' | 'error' | 'cancelled'\n\nexport type SubRunStatus = 'running' | 'completed' | 'error'\n\n/**\n * A nested run inside a team or workflow run — a team member's turn, or the\n * agent/team that executes a workflow step. Accumulated from events that carry\n * a `parent_run_id`.\n */\nexport interface SubRun {\n run_id: string\n kind: 'member' | 'executor'\n name?: string\n agent_id?: string\n content: string\n tool_calls?: ToolExecution[]\n status: SubRunStatus\n}\n\n/** A workflow step and its output, accumulated from `Step*` events. */\nexport interface WorkflowStep {\n key: string\n name?: string\n index?: number | [number, number]\n status: SubRunStatus\n content?: string\n error?: string\n}\n\nexport interface ChatMessage {\n id: string\n role: ChatRole\n content: string\n created_at: number\n\n /** Set while this message is being streamed. */\n streaming?: boolean\n /** Run-level status, set for agent messages. */\n status?: ChatStatus\n error?: string\n\n run_id?: string\n session_id?: string\n\n tool_calls?: ToolExecution[]\n reasoning_steps?: ReasoningStep[]\n references?: ReferenceData[]\n citations?: Citations\n\n images?: ImageData[]\n videos?: VideoData[]\n audio?: AudioData[]\n response_audio?: AudioData\n\n /** Live \"what is it doing right now\" label, e.g. \"Calling get_weather\". */\n activity?: string\n\n /** Pause requirements when the run is waiting for a human. */\n requirements?: RunRequirement[]\n\n /** Team member turns / workflow step executors (nested runs). */\n members?: SubRun[]\n\n /** Workflow steps and their outputs. */\n steps?: WorkflowStep[]\n\n /** Every raw event that contributed to this message, in order. */\n events?: RunEventData[]\n}\n\n/* ------------------------------------------------------------------ */\n/* Entities (agents / teams / workflows) and sessions */\n/* ------------------------------------------------------------------ */\n\nexport interface Model {\n name?: string\n model?: string\n provider?: string\n}\n\nexport type EntityType = 'agent' | 'team' | 'workflow'\n\nexport interface Entity {\n type: EntityType\n id: string\n name: string\n description?: string\n model?: Model\n db_id?: string\n}\n\nexport interface SessionEntry {\n session_id: string\n session_name?: string\n /** Unix seconds, Unix milliseconds, or an ISO date string, depending on the backend. */\n created_at: number | string\n updated_at?: number | string\n}\n\nexport interface Pagination {\n page: number\n limit: number\n total_pages: number\n total_count: number\n}\n\nexport interface SessionsResponse {\n data: SessionEntry[]\n meta?: Pagination\n}\n"]}
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"index.js"}
|