research-cli
Version:
AI-powered research assistant with web search capabilities and beautiful terminal UI
94 lines • 2.38 kB
TypeScript
/**
* Core type definitions for research-cli
*/
export interface ProviderRequest {
query: string;
model?: string | undefined;
webSearch?: boolean | undefined;
webSearchContextSize?: "low" | "medium" | "high" | undefined;
maxTokens?: number | undefined;
temperature?: number | undefined;
}
export interface ProviderEvent {
type: "start" | "tool_call" | "tool_result" | "chunk" | "final" | "error";
data?: unknown;
}
export interface LlmProvider {
name: "openai" | "perplexity" | "claude" | "gemini";
streamQuery(input: ProviderRequest): AsyncIterable<ProviderEvent>;
supportsWebSearch: boolean;
}
export interface Citation {
url: string;
title: string;
date?: string | undefined;
}
export interface ProviderError {
code: "PROVIDER_TIMEOUT" | "API_KEY_MISSING" | "RATE_LIMITED" | "NETWORK_ERROR" | "UNKNOWN_ERROR";
message: string;
provider: "openai" | "perplexity" | "claude" | "gemini";
}
export interface CliOptions {
provider: "openai" | "perplexity" | "claude" | "gemini";
model?: string | undefined;
web: boolean;
webSearchContextSize?: "low" | "medium" | "high" | undefined;
stream: boolean;
format: "md" | "json" | "jsonl" | "raw";
maxTokens?: number | undefined;
temperature?: number | undefined;
timeout?: number | undefined;
dryRun: boolean;
output?: string | undefined;
verbose: boolean;
}
export interface StartEvent {
type: "start";
data: {
provider: string;
model: string;
timestamp: number;
};
}
export interface ToolCallEvent {
type: "tool_call";
data: {
name: string;
args: Record<string, unknown>;
};
}
export interface ToolResultEvent {
type: "tool_result";
data: {
name: string;
results: unknown[];
};
}
export interface ChunkEvent {
type: "chunk";
data: {
text: string;
};
}
export interface UsageStats {
input_tokens: number;
output_tokens: number;
total_tokens: number;
reasoning_tokens?: number;
}
export interface FinalEvent {
type: "final";
data: {
answer: string;
citations: Citation[];
usage?: UsageStats | undefined;
};
}
export interface ErrorEvent {
type: "error";
data: {
message: string;
code: string;
};
}
//# sourceMappingURL=types.d.ts.map