spb/note-spboucher-ai
Public
1export type Provider = "openai" | "anthropic";2export type TaskClass = "chat" | "quick" | "write" | "reason" | "deep" | "code" | "extract" | "longctx" | "agent" | "judge";3export type Effort = "low" | "medium" | "high";4export interface ChatMessage { role: "user" | "assistant"; content: string; images?: { mime: string; dataBase64: string }[] }5export interface ToolDef { name: string; description: string; parameters: Record<string, unknown> }6export interface AICallOptions {7 model: string; provider: Provider;8 system?: string; messages: ChatMessage[];9 maxTokens?: number; effort?: Effort;10 jsonSchema?: { name: string; schema: Record<string, unknown> };11 tools?: ToolDef[];12 signal?: AbortSignal; timeoutMs?: number;13}14export type AIEvent =15 | { type: "text"; delta: string }16 | { type: "tool_call"; id: string; name: string; args: unknown }17 | { type: "done"; usage: AIUsage; stop: string | null; ttftMs: number | null; totalMs: number; refusal?: string }18 | { type: "error"; message: string; status?: number };19export interface AIUsage { inputTokens: number; outputTokens: number; cachedTokens: number; reasoningTokens: number }20export interface AIResult { text: string; toolCalls: { id: string; name: string; args: unknown }[]; usage: AIUsage; stop: string | null; ttftMs: number | null; totalMs: number; costUsd: number | null; model: string; provider: Provider; refusal?: string }21