Skip to main content

Interface: ModelProvider<TEvent, TProviderState>

Defined in: packages/core/src/providers/types.ts:592

Provider adapter interface (v2)

Each provider implements this interface. Providers are thin data processors - they transform data, Baleybot orchestrates.

Type Parameters

TEvent

TEvent = unknown

The type of raw events from the provider's API

TProviderState

TProviderState extends Record<string, unknown> = Record<string, never>

The provider-specific state type (defaults to empty)

Properties

config

readonly config: ProviderConfig

Defined in: packages/core/src/providers/types.ts:600

Provider configuration (API key, base URL, etc.)


name

readonly name: string

Defined in: packages/core/src/providers/types.ts:597

The provider name

Methods

buildRequest()

buildRequest(params, config, options?): object

Defined in: packages/core/src/providers/types.ts:610

Build request details for the provider API

Parameters

params

ChatCompletionParams

Normalized chat completion parameters

config

ProviderConfig

Provider configuration

options?

Additional options (stream, reasoningOverride)

reasoningOverride?

{ budgetTokens?: number; effort?: "low" | "medium" | "high"; summary?: "concise" | "detailed" | "auto"; }

reasoningOverride.budgetTokens?

number

Token budget for extended thinking (Anthropic models)

reasoningOverride.effort?

"low" | "medium" | "high"

Reasoning effort level - higher effort = more thorough reasoning

reasoningOverride.summary?

"concise" | "detailed" | "auto"

Reasoning summary style - concise, detailed, or auto

stream?

boolean

Returns

object

Request details (endpoint, body, optional headers)

body

body: unknown

endpoint

endpoint: string

headers?

optional headers?: Record<string, string>


chatCompletion()?

optional chatCompletion(params, config): Promise<ChatCompletionResult>

Defined in: packages/core/src/providers/types.ts:693

Chat completion (for backward compatibility with v1)

Parameters

params

ChatCompletionParams

config

ProviderConfig

Returns

Promise<ChatCompletionResult>


chatCompletionStream()?

optional chatCompletionStream(params, config, onEvent): Promise<ChatCompletionResult>

Defined in: packages/core/src/providers/types.ts:684

Chat completion stream (for backward compatibility with v1)

Parameters

params

ChatCompletionParams

config

ProviderConfig

onEvent

(event) => void

Returns

Promise<ChatCompletionResult>


extractMetadata()?

optional extractMetadata(chunk, current): Partial<{ model?: string; usage?: { completionTokens?: number; promptTokens?: number; totalTokens?: number; }; } | undefined>

Defined in: packages/core/src/providers/types.ts:644

Extract metadata from a provider event chunk

Optional method for extracting metadata like finishReason, usage, model name

Parameters

chunk

TEvent

Raw event chunk from provider API

current

Partial<{ model?: string; usage?: { completionTokens?: number; promptTokens?: number; totalTokens?: number; }; } | undefined>

Current metadata state

Returns

Partial<{ model?: string; usage?: { completionTokens?: number; promptTokens?: number; totalTokens?: number; }; } | undefined>

Partial metadata updates


getApiKey()

getApiKey(): string | undefined

Defined in: packages/core/src/providers/types.ts:664

Get API key from config or environment

Returns

string | undefined


getAuthHeaders()

getAuthHeaders(apiKey): Record<string, string>

Defined in: packages/core/src/providers/types.ts:669

Get authentication headers

Parameters

apiKey

string

Returns

Record<string, string>


getDefaultBaseUrl()

getDefaultBaseUrl(): string

Defined in: packages/core/src/providers/types.ts:679

Get default base URL for the provider

Returns

string


getProviderHeaders()

getProviderHeaders(): Record<string, string>

Defined in: packages/core/src/providers/types.ts:674

Get provider-specific headers

Returns

Record<string, string>


transformEvent()

transformEvent(chunk, state): BaleybotStreamEvent | null

Defined in: packages/core/src/providers/types.ts:630

Transform a provider event chunk to BaleybotStreamEvent

Parameters

chunk

TEvent

Raw event chunk from provider API

state

TransformationState<TProviderState>

Current transformation state (for accumulating data)

Returns

BaleybotStreamEvent | null

BaleybotStreamEvent or null if chunk should be ignored


transformResponse()?

optional transformResponse(responseBody): ChatCompletionResult

Defined in: packages/core/src/providers/types.ts:657

Transform full response body to ChatCompletionResult (for non-streaming)

Optional method for transforming non-streaming responses

Parameters

responseBody

any

Full JSON response body

Returns

ChatCompletionResult

ChatCompletionResult