40 lines
1.4 KiB
TypeScript
40 lines
1.4 KiB
TypeScript
/**
|
|
* Type definitions for the provider abstraction layer
|
|
*/
|
|
|
|
import type { StreamCallback, PermissionHandler, AskUserQuestionHandler } from '../claude/types.js';
|
|
import type { AgentResponse, PermissionMode } from '../models/types.js';
|
|
|
|
/** Common options for all providers */
|
|
export interface ProviderCallOptions {
|
|
cwd: string;
|
|
sessionId?: string;
|
|
model?: string;
|
|
systemPrompt?: string;
|
|
allowedTools?: string[];
|
|
/** Maximum number of agentic turns */
|
|
maxTurns?: number;
|
|
/** Permission mode for tool execution (from workflow step) */
|
|
permissionMode?: PermissionMode;
|
|
onStream?: StreamCallback;
|
|
onPermissionRequest?: PermissionHandler;
|
|
onAskUserQuestion?: AskUserQuestionHandler;
|
|
bypassPermissions?: boolean;
|
|
/** Anthropic API key for Claude provider */
|
|
anthropicApiKey?: string;
|
|
/** OpenAI API key for Codex provider */
|
|
openaiApiKey?: string;
|
|
}
|
|
|
|
/** Provider interface - all providers must implement this */
|
|
export interface Provider {
|
|
/** Call the provider with a prompt (using systemPrompt from options if provided) */
|
|
call(agentName: string, prompt: string, options: ProviderCallOptions): Promise<AgentResponse>;
|
|
|
|
/** Call the provider with explicit system prompt */
|
|
callCustom(agentName: string, prompt: string, systemPrompt: string, options: ProviderCallOptions): Promise<AgentResponse>;
|
|
}
|
|
|
|
/** Provider type */
|
|
export type ProviderType = 'claude' | 'codex' | 'mock';
|