chatkit-node-backend-sdk / ChatKitServer
Abstract Class: ChatKitServer\<TContext>
Defined in: src/server/ChatKitServer.ts:75
Abstract ChatKitServer class
Example
class MyServer extends ChatKitServer<{ userId: string }> {
async *respond(thread, inputUserMessage, context) {
// Your implementation here
yield {
type: 'thread.item.done',
item: {
type: 'assistant_message',
// ... message details
}
};
}
}
Type Parameters
TContext
TContext = unknown
Constructors
Constructor
new ChatKitServer\<
TContext>(store,attachmentStore?,logger?):ChatKitServer\<TContext>
Defined in: src/server/ChatKitServer.ts:80
Parameters
store
Store\<TContext>
attachmentStore?
AttachmentStore\<TContext>
logger?
Returns
ChatKitServer\<TContext>
Properties
store
protectedstore:Store\<TContext>
Defined in: src/server/ChatKitServer.ts:76
attachmentStore?
protectedoptionalattachmentStore:AttachmentStore\<TContext>
Defined in: src/server/ChatKitServer.ts:77
logger
protectedlogger:Logger
Defined in: src/server/ChatKitServer.ts:78
Methods
getAttachmentStore()
protectedgetAttachmentStore():AttachmentStore\<TContext>
Defined in: src/server/ChatKitServer.ts:93
Get the configured attachment store or throw if not configured
Returns
AttachmentStore\<TContext>
respond()
abstractrespond(thread,inputUserMessage,context):AsyncGenerator\<ThreadStreamEvent>
Defined in: src/server/ChatKitServer.ts:113
Abstract method: Stream ThreadStreamEvent instances for a new user message
This is the primary method users must implement to handle incoming messages and generate responses.
Parameters
thread
Metadata for the thread being processed
inputUserMessage
The incoming message to respond to, or null for retry/tool output
null | UserMessageItem
context
TContext
Per-request context provided by the caller
Returns
AsyncGenerator\<ThreadStreamEvent>
AsyncGenerator yielding ThreadStreamEvent instances
addFeedback()
addFeedback(
threadId,itemIds,feedback,_context):Promise\<void>
Defined in: src/server/ChatKitServer.ts:130
Optional: Handle feedback on thread items
Override this method to store or process user feedback (thumbs up/down). Default implementation does nothing.
Parameters
threadId
string
Thread ID
itemIds
string[]
List of item IDs receiving feedback
feedback
'positive' or 'negative'
_context
TContext
Returns
Promise\<void>
action()
action(
_thread,_action,_sender,_context):AsyncGenerator\<ThreadStreamEvent>
Defined in: src/server/ChatKitServer.ts:152
Optional: Handle custom actions from widgets
Override this method to react to button clicks and form submissions from widgets. Default implementation throws NotImplementedError.
Parameters
_thread
_action
_sender
null | WidgetItem
_context
TContext
Returns
AsyncGenerator\<ThreadStreamEvent>
AsyncGenerator yielding ThreadStreamEvent instances
process()
process(
request,context):Promise\<StreamingResult|NonStreamingResult>
Defined in: src/server/ChatKitServer.ts:174
Main entry point: Process a ChatKit request
Parses the request JSON, routes to appropriate handler, and returns either a StreamingResult or NonStreamingResult.
Parameters
request
JSON request string or buffer
string | Buffer\<ArrayBufferLike>
context
TContext
Per-request context
Returns
Promise\<StreamingResult | NonStreamingResult>
StreamingResult or NonStreamingResult
processNonStreaming()
protectedprocessNonStreaming(request,context):Promise\<unknown>
Defined in: src/server/ChatKitServer.ts:196
Process non-streaming requests (returns JSON)
Parameters
request
context
TContext
Returns
Promise\<unknown>
processStreaming()
protectedprocessStreaming(request,context):AsyncGenerator\<ThreadStreamEvent>
Defined in: src/server/ChatKitServer.ts:291
Process streaming requests (returns SSE stream)
Parameters
request
context
TContext
Returns
AsyncGenerator\<ThreadStreamEvent>
processStreamingImpl()
protectedprocessStreamingImpl(request,context):AsyncGenerator\<ThreadStreamEvent>
Defined in: src/server/ChatKitServer.ts:306
Implementation of streaming request processing
Parameters
request
context
TContext
Returns
AsyncGenerator\<ThreadStreamEvent>
processNewThreadItemRespond()
protectedprocessNewThreadItemRespond(thread,item,context):AsyncGenerator\<ThreadStreamEvent>
Defined in: src/server/ChatKitServer.ts:461
Process a new user message and generate response
Parameters
thread
item
context
TContext
Returns
AsyncGenerator\<ThreadStreamEvent>
processEvents()
protectedprocessEvents(thread,context,streamFn):AsyncGenerator\<ThreadStreamEvent>
Defined in: src/server/ChatKitServer.ts:488
Process events from user's respond() method
Handles: - Saving items to store - Error handling - Thread updates - Filtering hidden context items
Parameters
thread
context
TContext
streamFn
() => AsyncGenerator\<ThreadStreamEvent>
Returns
AsyncGenerator\<ThreadStreamEvent>
buildUserMessageItem()
protectedbuildUserMessageItem(input,thread,context):Promise\<UserMessageItem>
Defined in: src/server/ChatKitServer.ts:573
Build a UserMessageItem from input
Parameters
input
any
thread
context
TContext
Returns
Promise\<UserMessageItem>
loadFullThread()
protectedloadFullThread(threadId,context):Promise\<Thread>
Defined in: src/server/ChatKitServer.ts:598
Load a full thread with items
Parameters
threadId
string
context
TContext
Returns
Promise\<Thread>
toThreadResponse()
protectedtoThreadResponse(thread):Thread
Defined in: src/server/ChatKitServer.ts:618
Convert ThreadMetadata or Thread to Thread response (filters out hidden context items)