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
readonlyconfig:ProviderConfig
Defined in: packages/core/src/providers/types.ts:600
Provider configuration (API key, base URL, etc.)
name
readonlyname: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
Normalized chat completion parameters
config
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?
optionalheaders?:Record<string,string>
chatCompletion()?
optionalchatCompletion(params,config):Promise<ChatCompletionResult>
Defined in: packages/core/src/providers/types.ts:693
Chat completion (for backward compatibility with v1)
Parameters
params
config
Returns
Promise<ChatCompletionResult>
chatCompletionStream()?
optionalchatCompletionStream(params,config,onEvent):Promise<ChatCompletionResult>
Defined in: packages/core/src/providers/types.ts:684
Chat completion stream (for backward compatibility with v1)
Parameters
params
config
onEvent
(event) => void
Returns
Promise<ChatCompletionResult>
extractMetadata()?
optionalextractMetadata(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()?
optionaltransformResponse(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