Constructor
Parameters
ChatConfig<TAdapters>
required
Type:
ChatConfigReturns
Chat
Properties
required
Unified History API. Sub-APIs:
history.user— cross-platform per-user transcript store (throws if not configured)history.thread— per-thread message listinghistory.channel— channel-level messages and thread listings
required
Cross-platform per-user transcript store. Deprecated alias for
ChatInstance.history.user — throws on access when user history
was not configured (history.user or legacy transcripts + identity).Webhooks<TAdapters>
required
Type-safe webhook handlers keyed by adapter name.
Methods
abortTurn()
Parameters
string
required
Returns
Promise<void>
channel()
Parameters
string
required
Channel ID (e.g., “slack:C123ABC”, “gchat:spaces/ABC123”)
Returns
Channel
A Channel that can be used to list threads, post messages, iterate messages, etc.
getAdapter()
Parameters
K
required
Returns
TAdapters[K]
getLogger()
Parameters
string
Returns
Logger
getSingleton()
Returns
Chat
getState()
Returns
StateAdapter
getUser()
users:read.email on Slack).
Parameters
Returns
UserInfo
User info, or null if user not found
getUserName()
Returns
string
handleIncomingMessage()
- Deduplication: Same message may arrive multiple times (e.g., Slack sends
both
messageandapp_mentionevents, GChat sends direct webhook + Pub/Sub) - Bot filtering: Messages from the bot itself are skipped
- Concurrency: Controlled by
concurrencyconfig (drop, queue, debounce, burst, concurrent)
Parameters
string
required
Returns
Promise<void>
hasSingleton()
Returns
boolean
initialize()
Returns
Promise<void>
onAction()
Parameters
required
The handler (if action ID filter is provided)
Parameters
string | string[]
required
required
The handler (if action ID filter is provided)
onAgentSessionStopped()
Parameters
required
onAgentSessionTitleChanged()
Parameters
required
onAppContextChanged()
Parameters
required
onAppHomeOpened()
Parameters
required
onAssistantContextChanged()
Parameters
required
onAssistantThreadStarted()
Parameters
required
onDirectMessage()
onSubscribedMessage, onNewMention, and pattern handlers.
If no onDirectMessage handlers are registered, DMs continue through
normal routing. Unsubscribed DMs fall through to onNewMention for
backward compatibility.
Parameters
DirectMessageHandler<TState>
required
Type:
DirectMessageHandlerHandler called for DM messagesonInstalled()
Parameters
required
onMemberJoinedChannel()
Parameters
required
onMessageDeleted()
Parameters
required
onMessageUpdated()
onNewMessage, onNewMention, or onSubscribedMessage.
Parameters
MessageUpdatedHandler<TState>
required
Type:
MessageUpdatedHandleronModalClose()
notifyOnClose: true.
Parameters
required
The handler (if callback ID filter is provided)
notifyOnClose: true.
Parameters
string | string[]
required
required
The handler (if callback ID filter is provided)
onModalSubmit()
Parameters
required
The handler (if callback ID filter is provided)
Parameters
string | string[]
required
required
The handler (if callback ID filter is provided)
onNewMention()
thread.subscribe()), subsequent messages
including @-mentions go to onSubscribedMessage handlers instead.
To detect mentions in subscribed threads, check message.isMention:
Parameters
MentionHandler<TState>
required
Type:
MentionHandleronNewMessage()
Parameters
RegExp
required
Regular expression to match against message text
MessageHandler<TState>
required
Type:
MessageHandlerHandler called when pattern matchesonOptionsLoad()
Parameters
required
Parameters
string | string[]
required
required
onReaction()
Parameters
required
The handler (if emoji filter is provided)
Parameters
EmojiFilter[]
required
required
The handler (if emoji filter is provided)
onSlashCommand()
/command in the message composer.
Use event.channel.post() or event.channel.postEphemeral() to respond.
Parameters
SlashCommandHandler<TState>
required
Type:
SlashCommandHandlerThe handler (if command filter is provided)/command in the message composer.
Use event.channel.post() or event.channel.postEphemeral() to respond.
Parameters
string | string[]
required
SlashCommandHandler<TState>
required
Type:
SlashCommandHandlerThe handler (if command filter is provided)onSubscribedMessage()
thread.subscribe().
This includes:
- Follow-up messages from users
- Messages that @-mention the bot (check
message.isMention)
- The message that triggered the subscription (e.g., the initial @mention)
- Messages sent by the bot itself
Parameters
SubscribedMessageHandler<TState>
required
Type:
SubscribedMessageHandleronUninstalled()
Parameters
required
openDM()
- Slack:
U...(e.g., “U00FAKEUSER1”) - Teams:
29:...(e.g., “29:198PbJuw…”) - Google Chat:
users/...(e.g., “users/100000000000000000001”) - Discord: numeric snowflake (e.g., “1033044521375764530”)
Parameters
Returns
Thread
A Thread that can be used to post messages
processAction()
Parameters
Omit<ActionEvent<unknown>, "thread" | "openModal"> & { adapter: Adapter }
required
Type:
ActionEventAdapterWebhookOptions | undefined
required
Type:
WebhookOptionsReturns
Promise<void>
processAgentSessionStopped()
Parameters
required
processAgentSessionTitleChanged()
Parameters
required
processAppContextChanged()
Parameters
required
processAppHomeOpened()
Parameters
required
processAssistantContextChanged()
Parameters
required
processAssistantThreadStarted()
Parameters
required
processInstalled()
Parameters
required
processMemberJoinedChannel()
Parameters
required
processMessage()
Parameters
string
required
Returns
Promise<void>
processMessageDeleted()
Parameters
Omit<MessageDeletedEvent<unknown>, "platform" | "adapter"> & { adapter: Adapter…
required
Returns
Promise<void>
processMessageUpdated()
Parameters
{ adapter: Adapter; message: Message<unknown> | () => Promise<Message<unknown>>…
required
Returns
Promise<void>
processModalClose()
Parameters
Omit<ModalCloseEvent, "relatedThread" | "relatedMessage" | "relatedChannel">
required
Type:
ModalCloseEventThe modal close event (without relatedThread/relatedMessage/relatedChannel)string
Context ID for retrieving stored thread/message/channel context
Webhook options
processModalSubmit()
Parameters
Omit<ModalSubmitEvent, "relatedThread" | "relatedMessage" | "relatedChannel">
required
Type:
ModalSubmitEventThe modal submit event (without relatedThread/relatedMessage/relatedChannel)string
Context ID for retrieving stored thread/message/channel context
Webhook options
Returns
ModalResponse
processOptionsLoad()
Parameters
required
Returns
OptionsLoadResult
processReaction()
Parameters
Omit<ReactionEvent<unknown>, "thread" | "adapter"> & { adapter: Adapter<unknown…
required
Type:
ReactionEventAdapterReturns
Promise<void>
processSlashCommand()
Parameters
Omit<SlashCommandEvent<Record<string, unknown>>, "channel" | "openModal"> & { a…
required
Type:
SlashCommandEventAdapterWebhookOptions | undefined
required
Type:
WebhookOptionsReturns
Promise<void>
processUninstalled()
Parameters
required
registerSingleton()
Returns
this
reviver()
Returns
(key: string, value: unknown) => unknown
A reviver function for JSON.parse
shutdown()
Returns
Promise<void>
thread()
Parameters
string
required
Full thread ID (e.g., “slack:C123ABC:1234567890.123456”)
Returns
Thread
A Thread that can be used to post messages, subscribe, etc.