/** * @file Pi:model-adapter protocol types. Mirrors pi-scraper's internal ModelAdapter / ModelRequest * / ModelResponse shape. Keep in sync via README cross-reference. */ export type ModelCapability = "summarize" | "extract" | "analyze" | "chat"; export interface ModelRequest { task: "extract" | "summarize"; input: string; prompt?: string; schema?: unknown; options?: Record; } export interface ModelUsage { provider?: string; model?: string; inputTokens?: number; outputTokens?: number; totalTokens?: number; costUSD?: number; } export interface ModelResponse { data: T; text?: string; raw?: unknown; usage?: ModelUsage; } export interface ModelAdapter { run(request: ModelRequest, signal?: AbortSignal): Promise>; } export interface RegisteredAdapter { id: string; label: string; capabilities: ModelCapability[]; priority: number; adapter: ModelAdapter; } /** Filter sent by pi-scraper on pi:model-adapter/discover to narrow re-registration. */ export interface DiscoverPayload { filter?: { capabilities?: ModelCapability[]; minPriority?: number; }; }