Types
All types are exported from the one-agent-sdk package.
StreamChunk
Discriminated union for streaming output events.
type StreamChunk =
| { type: "text"; text: string }
| { type: "tool_call"; toolName: string; toolArgs: Record<string, unknown>; toolCallId: string }
| { type: "tool_result"; toolCallId: string; result: string }
| { type: "handoff"; fromAgent: string; toAgent: string }
| { type: "error"; error: string }
| { type: "done"; text?: string; usage?: { inputTokens: number; outputTokens: number } }AgentDef
Agent definition.
interface AgentDef {
name: string;
description: string;
prompt: string;
tools?: ToolDef[];
handoffs?: string[];
model?: string;
mcpServers?: Record<string, McpServerConfig>;
}ToolDef
Tool definition with Zod schema for parameters.
interface ToolDef<T extends z.ZodType = z.ZodType> {
name: string;
description: string;
parameters: T;
handler: (params: z.infer<T>) => Promise<string>;
}RunConfig
Configuration for a run.
interface RunConfig {
provider: Provider;
agent: AgentDef;
agents?: Record<string, AgentDef>;
mcpServers?: Record<string, McpServerConfig>;
providerOptions?: Record<string, unknown>;
workDir?: string;
maxTurns?: number;
signal?: AbortSignal;
middleware?: Middleware[];
responseSchema?: z.ZodType;
}AgentRun
Handle returned by run().
interface AgentRun {
stream: AsyncGenerator<StreamChunk>;
chat(message: string): AsyncGenerator<StreamChunk>;
close(): Promise<void>;
}McpServerConfig
MCP server configuration.
interface McpServerConfig {
command: string;
args?: string[];
env?: Record<string, string>;
url?: string;
}Provider
Supported provider backends. Includes built-in providers and any registered custom providers.
type BuiltinProvider =
| "claude-code"
| "codex"
| "copilot"
| "kimi-cli"
| "openai"
| "anthropic"
| "openrouter";
type Provider = BuiltinProvider | (string & {});Middleware
Stream middleware function.
type Middleware = (
stream: AsyncGenerator<StreamChunk>,
context: MiddlewareContext,
) => AsyncGenerator<StreamChunk>;MiddlewareContext
Context passed to each middleware function.
interface MiddlewareContext {
agent: AgentDef;
provider: Provider;
}Session
Session handle for multi-turn conversations.
interface Session {
readonly id: string;
run(prompt: string, config: RunConfig): Promise<AgentRun>;
getHistory(): Promise<Message[]>;
clear(): Promise<void>;
}Message
A message in the conversation history.
interface Message {
role: "user" | "assistant";
content: string;
}SessionStore
Interface for session storage backends.
interface SessionStore {
load(sessionId: string): Promise<Message[]>;
save(sessionId: string, messages: Message[]): Promise<void>;
}SessionConfig
Configuration options for createSession().
interface SessionConfig {
sessionId?: string;
store?: SessionStore;
runner?: (prompt: string, config: RunConfig) => Promise<AgentRun>;
}ProviderBackend
Interface that provider implementations must satisfy.
interface ProviderBackend {
run(prompt: string, config: RunConfig): AsyncGenerator<StreamChunk>;
chat(message: string): AsyncGenerator<StreamChunk>;
close(): Promise<void>;
}ProviderFactory
Factory function for custom providers.
type ProviderFactory = (config: RunConfig) => Promise<ProviderBackend>;zodToJsonSchema
Converts a Zod schema to JSON Schema. Used internally by providers that need JSON Schema (Codex, Kimi), but also exported for custom provider authors.
function zodToJsonSchema(schema: z.ZodType): Record<string, unknown>;