1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35import type { Capability } from "../config.ts";
export interface Message {
role: "system" | "user" | "assistant";
content: string;
}
export interface Image {
// Raw bytes of the source image plus its media type (e.g. image/png).
data: Buffer;
media_type: string;
}
export interface CompletionRequest {
capability: Capability;
messages: Message[];
images?: Image[];
schema?: Record<string, unknown>; // JSON Schema for structured_output
model: string; // resolved by the router from deployment config
}
export interface CompletionResult {
text: string;
model: string;
provider: string;
}
// PRD §10.3 provider interface. An agent declares a capability; the
// deployment decides which provider serves it.
export interface ModelProvider {
name: string;
capabilities: Capability[];
complete(request: CompletionRequest): Promise<CompletionResult>;
}