Skip to content

Chat Backends

Defined in: chat/backends/resumable.ts:28

Abstract base for backend adapters that support session resume. Handles backendSessionId tracking, canResume(), resume(), captureSessionId(). Subclasses only define constructor (with backend-specific options) and createService().

new ResumableChatAdapter(name, options): ResumableChatAdapter

Defined in: chat/backends/resumable.ts:31

string

BackendAdapterOptions

ResumableChatAdapter

BaseBackendAdapter.constructor

protected readonly _agentConfig: FullAgentConfig

Defined in: chat/backends/base.ts:39

BaseBackendAdapter._agentConfig

readonly name: string

Defined in: chat/backends/base.ts:35

Backend name (e.g. “copilot”, “claude”, “vercel-ai”)

IResumableBackend.name

BaseBackendAdapter.name

get agentService(): IAgentService

Defined in: chat/backends/base.ts:64

IAgentService

BaseBackendAdapter.agentService

get backendSessionId(): string | null

Defined in: chat/backends/resumable.ts:40

The backend session ID from the last stream, or null if not yet streamed

string | null

The backend session ID from the last stream, or null if not yet streamed

IResumableBackend.backendSessionId

get currentModel(): string | undefined

Defined in: chat/backends/base.ts:78

Current effective model

string | undefined

Current effective model

IResumableBackend.currentModel

BaseBackendAdapter.currentModel

protected assertNotDisposed(): void

Defined in: chat/backends/base.ts:244

void

BaseBackendAdapter.assertNotDisposed

canResume(): boolean

Defined in: chat/backends/resumable.ts:44

Whether this adapter supports session resume

boolean

IResumableBackend.canResume

protected captureSessionId(agent): void

Defined in: chat/backends/resumable.ts:82

Subclasses capture backend session ID from agent after streaming

IAgent

void

BaseBackendAdapter.captureSessionId

abstract protected createService(): IAgentService

Defined in: chat/backends/base.ts:62

Subclasses create their specific IAgentService

IAgentService

BaseBackendAdapter.createService

dispose(): Promise<void>

Defined in: chat/backends/base.ts:196

Dispose resources

Promise<void>

IResumableBackend.dispose

BaseBackendAdapter.dispose

protected getOrCreateAgent(options?): IAgent

Defined in: chat/backends/base.ts:211

Get or create an agent. Model is passed per-call via RunOptions. Tools are passed per-call via SendMessageOptions — not baked into config. For persistent sessions, reuses agent when model matches.

SendMessageOptions

IAgent

BaseBackendAdapter.getOrCreateAgent

listModels(): Promise<ModelInfo[]>

Defined in: chat/backends/base.ts:186

List available models

Promise<ModelInfo[]>

IResumableBackend.listModels

BaseBackendAdapter.listModels

resume(session, backendSessionId, options?): AsyncIterable<ChatEvent>

Defined in: chat/backends/resumable.ts:48

Resume a previous session by its backend session ID. Streams events from the resumed session.

ChatSession

string

SendMessageOptions

AsyncIterable<ChatEvent>

ChatError with SESSION_EXPIRED if session is no longer valid

ChatError with SESSION_NOT_FOUND if session ID is unknown

IResumableBackend.resume

sendMessage(session, message, options?): Promise<ChatMessage<unknown>>

Defined in: chat/backends/base.ts:90

Send a message and receive a complete response

ChatSession

string

SendMessageOptions

Promise<ChatMessage<unknown>>

IResumableBackend.sendMessage

BaseBackendAdapter.sendMessage

setTools(): void

Defined in: chat/backends/base.ts:86

void

No-op. Tools are passed per-call via SendMessageOptions.tools. Kept for backward compatibility with code that calls setTools() directly.

BaseBackendAdapter.setTools

protected streamAgentEvents(agent, messages, options?): AsyncIterable<ChatEvent>

Defined in: chat/backends/base.ts:144

Shared streaming helper: bridges agent events to chat events. Used by both streamMessage() and resume() to avoid duplication.

IAgent

Message[]

SendMessageOptions

AsyncIterable<ChatEvent>

BaseBackendAdapter.streamAgentEvents

streamMessage(session, message, options?): AsyncIterable<ChatEvent>

Defined in: chat/backends/base.ts:124

Stream a message response as ChatEvents

ChatSession

string

SendMessageOptions

AsyncIterable<ChatEvent>

IResumableBackend.streamMessage

BaseBackendAdapter.streamMessage

validate(): Promise<{ errors: string[]; valid: boolean; }>

Defined in: chat/backends/base.ts:191

Validate backend configuration/credentials

Promise<{ errors: string[]; valid: boolean; }>

IResumableBackend.validate

BaseBackendAdapter.validate

Defined in: chat/backends/claude.ts:18

Options for creating a ClaudeChatAdapter

agentConfig: FullAgentConfig

Defined in: chat/backends/types.ts:25

Agent configuration (model, systemPrompt, tools, etc.)

BackendAdapterOptions.agentConfig

optional agentService: IAgentService

Defined in: chat/backends/types.ts:27

Pre-created agent service (if adapter should not own lifecycle)

BackendAdapterOptions.agentService

optional agentServiceFactory: () => IAgentService

Defined in: chat/backends/types.ts:29

Factory for lazy service creation (called on first use, not at construction)

IAgentService

BackendAdapterOptions.agentServiceFactory

optional claudeOptions: ClaudeBackendOptions

Defined in: chat/backends/claude.ts:20

Claude backend options (cliPath, model, etc.)


Defined in: chat/backends/transport.ts:42

Minimal interface for detecting client disconnection

on(event, listener): void

Defined in: chat/backends/transport.ts:43

"close"

() => void

void


Defined in: chat/backends/copilot.ts:18

Options for creating a CopilotChatAdapter

agentConfig: FullAgentConfig

Defined in: chat/backends/types.ts:25

Agent configuration (model, systemPrompt, tools, etc.)

BackendAdapterOptions.agentConfig

optional agentService: IAgentService

Defined in: chat/backends/types.ts:27

Pre-created agent service (if adapter should not own lifecycle)

BackendAdapterOptions.agentService

optional agentServiceFactory: () => IAgentService

Defined in: chat/backends/types.ts:29

Factory for lazy service creation (called on first use, not at construction)

IAgentService

BackendAdapterOptions.agentServiceFactory

optional copilotOptions: CopilotBackendOptions

Defined in: chat/backends/copilot.ts:20

Copilot backend options (cliPath, token, etc.)


Defined in: chat/backends/interceptors.ts:24

Context passed to interceptor hooks

event: ChatEvent

Defined in: chat/backends/interceptors.ts:26

The event being intercepted (mutable for beforeSend)

transport: IChatTransport

Defined in: chat/backends/interceptors.ts:28

The underlying transport being wrapped


Defined in: chat/backends/mock-llm.ts:16

Options for creating a MockLLMChatAdapter

agentConfig: FullAgentConfig

Defined in: chat/backends/types.ts:25

Agent configuration (model, systemPrompt, tools, etc.)

BackendAdapterOptions.agentConfig

optional agentService: IAgentService

Defined in: chat/backends/types.ts:27

Pre-created agent service (if adapter should not own lifecycle)

BackendAdapterOptions.agentService

optional agentServiceFactory: () => IAgentService

Defined in: chat/backends/types.ts:29

Factory for lazy service creation (called on first use, not at construction)

IAgentService

BackendAdapterOptions.agentServiceFactory

optional mockOptions: MockLLMBackendOptions

Defined in: chat/backends/mock-llm.ts:18

MockLLM backend options (mode, latency, streaming, etc.)


Defined in: chat/backends/transport.ts:47

Configuration options for SSEChatTransport

optional heartbeatMs: number

Defined in: chat/backends/transport.ts:49

Heartbeat interval in milliseconds. 0 or undefined disables heartbeat.

optional request: CloseDetectable

Defined in: chat/backends/transport.ts:51

Request object for detecting client disconnection (listens for ‘close’ event)


Defined in: chat/backends/interceptors.ts:35

Transport interceptor with lifecycle hooks. All hooks are optional — implement only what you need.

optional name: string

Defined in: chat/backends/interceptors.ts:37

Optional name for debugging

optional afterSend(event, transport): void

Defined in: chat/backends/interceptors.ts:46

Called after each event is sent to the transport

ChatEvent

IChatTransport

void

optional beforeClose(transport): void

Defined in: chat/backends/interceptors.ts:49

Called before the transport is closed

IChatTransport

void

optional beforeSend(event, transport): ChatEvent | null

Defined in: chat/backends/interceptors.ts:43

Called before each event is sent to the transport. Return the event to send, a modified event, or null to suppress.

ChatEvent

IChatTransport

ChatEvent | null

optional onError(error, transport): void

Defined in: chat/backends/interceptors.ts:52

Called when an error is signaled on the transport

Error

IChatTransport

void


Defined in: chat/backends/vercel-ai.ts:20

Options for creating a VercelAIChatAdapter

agentConfig: FullAgentConfig

Defined in: chat/backends/types.ts:25

Agent configuration (model, systemPrompt, tools, etc.)

BackendAdapterOptions.agentConfig

optional agentService: IAgentService

Defined in: chat/backends/types.ts:27

Pre-created agent service (if adapter should not own lifecycle)

BackendAdapterOptions.agentService

optional agentServiceFactory: () => IAgentService

Defined in: chat/backends/types.ts:29

Factory for lazy service creation (called on first use, not at construction)

IAgentService

BackendAdapterOptions.agentServiceFactory

optional vercelOptions: VercelAIBackendOptions

Defined in: chat/backends/vercel-ai.ts:22

Vercel AI backend options (baseURL, apiKey, provider, etc.)


Defined in: chat/backends/ws-transport.ts:25

Minimal WebSocket interface compatible with ws, browser WebSocket, Deno, Bun. Only the methods/properties used by WsChatTransport.

readonly readyState: number

Defined in: chat/backends/ws-transport.ts:26

addEventListener(type, listener): void

Defined in: chat/backends/ws-transport.ts:29

"close"

() => void

void

addEventListener(type, listener): void

Defined in: chat/backends/ws-transport.ts:30

"error"

(err) => void

void

close(code?, reason?): void

Defined in: chat/backends/ws-transport.ts:28

number

string

void

send(data): void

Defined in: chat/backends/ws-transport.ts:27

string

void


Defined in: chat/backends/transport.ts:33

Writable HTTP response interface — minimal type satisfied by Express, Fastify (raw), and Node http.ServerResponse without casts.

readonly writableEnded: boolean

Defined in: chat/backends/transport.ts:38

end(body?): unknown

Defined in: chat/backends/transport.ts:37

string

unknown

setHeader(name, value): unknown

Defined in: chat/backends/transport.ts:35

string

string

unknown

write(chunk): boolean

Defined in: chat/backends/transport.ts:36

string

boolean

writeHead(statusCode, headers?): unknown

Defined in: chat/backends/transport.ts:34

number

Record<string, string | string[]>

unknown


Defined in: chat/backends/ws-transport.ts:34

Configuration options for WsChatTransport

optional heartbeatMs: number

Defined in: chat/backends/ws-transport.ts:36

Heartbeat interval in ms. 0 or undefined disables heartbeat.

optional serialize: (event) => string

Defined in: chat/backends/ws-transport.ts:38

Custom JSON serializer (defaults to JSON.stringify)

ChatEvent

string

const WS_READY_STATE: object

Defined in: chat/backends/ws-transport.ts:14

Ready states matching the WebSocket spec (ws, browser, Deno, Bun)

readonly CLOSED: 3 = 3

readonly CLOSING: 2 = 2

readonly CONNECTING: 0 = 0

readonly OPEN: 1 = 1

withInterceptors(transport, interceptors): IChatTransport

Defined in: chat/backends/interceptors.ts:128

Wrap a transport with one or more interceptors. Interceptors are applied in order: first interceptor’s beforeSend runs first.

IChatTransport

Base transport to wrap

TransportInterceptor[]

Array of interceptors to apply

IChatTransport

Wrapped transport with interceptor hooks

Re-exports BackendAdapterOptions


Re-exports BaseBackendAdapter


Re-exports ClaudeChatAdapter


Re-exports CopilotChatAdapter


Re-exports IChatBackend


Re-exports IChatTransport


Re-exports InProcessChatTransport


Re-exports IResumableBackend


Re-exports isResumableBackend


Re-exports MockLLMChatAdapter


Re-exports SSEChatTransport


Re-exports streamToTransport


Re-exports VercelAIChatAdapter


Re-exports WsChatTransport