import { ReadableStream } from "@llamaindex/env"; import type { Logger } from "../internal/logger.js"; import type { BaseEvent } from "../internal/type.js"; import type { ChatMessage, ChatResponse, ChatResponseChunk, LLM, MessageContent } from "../llm/types.js"; import type { BaseToolWithCall, ToolOutput, UUID } from "../types.js"; export type AgentTaskContext ? AdditionalMessageOptions : never> = { readonly stream: boolean; readonly toolCallCount: number; readonly llm: Model; readonly getTools: (input: MessageContent) => BaseToolWithCall[] | Promise; shouldContinue: (taskStep: Readonly>) => boolean; store: { toolOutputs: ToolOutput[]; messages: ChatMessage[]; } & Store; logger: Readonly; }; export type TaskStep ? AdditionalMessageOptions : never> = { id: UUID; context: AgentTaskContext; prevStep: TaskStep | null; nextSteps: Set>; }; export type TaskStepOutput ? AdditionalMessageOptions : never> = { taskStep: TaskStep; output: ChatResponse | ReadableStream>; isLast: boolean; }; export type TaskHandler ? AdditionalMessageOptions : never> = (step: TaskStep, enqueueOutput: (taskOutput: TaskStepOutput) => void) => Promise; export type AgentStartEvent = BaseEvent<{ startStep: TaskStep; }>; export type AgentEndEvent = BaseEvent<{ endStep: TaskStep; }>;