Files
clawdbot/extensions/msteams/src/conversation-store.ts
2026-01-16 02:59:43 +00:00

42 lines
1.6 KiB
TypeScript

/**
* Conversation store for MS Teams proactive messaging.
*
* Stores ConversationReference-like objects keyed by conversation ID so we can
* send proactive messages later (after the webhook turn has completed).
*/
/** Minimal ConversationReference shape for proactive messaging */
export type StoredConversationReference = {
/** Activity ID from the last message */
activityId?: string;
/** User who sent the message */
user?: { id?: string; name?: string; aadObjectId?: string };
/** Agent/bot that received the message */
agent?: { id?: string; name?: string; aadObjectId?: string } | null;
/** @deprecated legacy field (pre-Agents SDK). Prefer `agent`. */
bot?: { id?: string; name?: string };
/** Conversation details */
conversation?: { id?: string; conversationType?: string; tenantId?: string };
/** Team ID for channel messages (when available). */
teamId?: string;
/** Channel ID (usually "msteams") */
channelId?: string;
/** Service URL for sending messages back */
serviceUrl?: string;
/** Locale */
locale?: string;
};
export type MSTeamsConversationStoreEntry = {
conversationId: string;
reference: StoredConversationReference;
};
export type MSTeamsConversationStore = {
upsert: (conversationId: string, reference: StoredConversationReference) => Promise<void>;
get: (conversationId: string) => Promise<StoredConversationReference | null>;
list: () => Promise<MSTeamsConversationStoreEntry[]>;
remove: (conversationId: string) => Promise<boolean>;
findByUserId: (id: string) => Promise<MSTeamsConversationStoreEntry | null>;
};