@eko-ai/eko
Version:
Empowering language to transform human words into action.
105 lines • 2.72 kB
TypeScript
import { JSONSchema7, SharedV2ProviderOptions, LanguageModelV2ToolCallPart } from "@ai-sdk/provider";
import { ToolResult } from "./tools.types";
import { LLMStreamMessage } from "./llm.types";
import { EkoConfig, HumanCallback, AgentStreamCallback } from "./agent.types";
export type MessageTextPart = {
type: "text";
text: string;
};
export type MessageFilePart = {
type: "file";
fileId: string;
filename?: string;
mimeType: string;
data: string;
filePath?: string;
};
export type ToolCallPart = {
type: "tool-call";
toolCallId: string;
toolName: string;
input: Record<string, any>;
};
export type ToolResultPart = {
type: "tool-result";
toolCallId: string;
toolName: string;
isError: boolean;
output: string | Record<string, any>;
};
export type ChatStreamMessage = {
streamType: "chat";
chatId: string;
messageId: string;
} & ({
type: "chat_start";
} | LLMStreamMessage | {
type: "chat_end";
error: string | null;
duration: number;
reactLoopNum: number;
});
export interface ChatStreamCallback {
chatCallback: {
onMessage: (message: ChatStreamMessage) => Promise<void>;
};
taskCallback?: AgentStreamCallback & HumanCallback;
}
export type EkoMessage = {
id: string;
} & ({
role: "user";
content: EkoMessageUserPart[];
} | {
role: "assistant";
content: EkoMessageAssistantPart[];
} | {
role: "tool";
content: EkoMessageToolPart[];
}) & {
timestamp: number;
extra?: Record<string, any>;
};
export type EkoMessageUserPart = {
type: "text";
text: string;
} | {
type: "file";
mimeType: string;
data: string;
filename?: string;
};
export type EkoMessageAssistantPart = {
type: "text";
text: string;
} | {
type: "tool-call";
toolCallId: string;
toolName: string;
args: Record<string, unknown>;
providerOptions?: SharedV2ProviderOptions;
};
export type EkoMessageToolPart = {
type: "tool-result";
toolCallId: string;
toolName: string;
result: string | Record<string, unknown>;
};
export interface DialogueTool {
readonly name: string;
readonly description?: string;
readonly parameters: JSONSchema7;
execute: (args: Record<string, unknown>, toolCall: LanguageModelV2ToolCallPart, messageId: string) => Promise<ToolResult>;
}
export type EkoDialogueConfig = Omit<EkoConfig, "callback"> & {
chatLlms?: string[];
};
export type DialogueParams = {
messageId: string;
user: Array<MessageTextPart | MessageFilePart>;
callback: ChatStreamCallback;
datetime?: string;
signal?: AbortSignal;
extra?: Record<string, any>;
};
//# sourceMappingURL=chat.types.d.ts.map