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

46 lines
1.3 KiB
TypeScript

import type {
MSTeamsConversationStore,
MSTeamsConversationStoreEntry,
StoredConversationReference,
} from "./conversation-store.js";
export function createMSTeamsConversationStoreMemory(
initial: MSTeamsConversationStoreEntry[] = [],
): MSTeamsConversationStore {
const map = new Map<string, StoredConversationReference>();
for (const { conversationId, reference } of initial) {
map.set(conversationId, reference);
}
return {
upsert: async (conversationId, reference) => {
map.set(conversationId, reference);
},
get: async (conversationId) => {
return map.get(conversationId) ?? null;
},
list: async () => {
return Array.from(map.entries()).map(([conversationId, reference]) => ({
conversationId,
reference,
}));
},
remove: async (conversationId) => {
return map.delete(conversationId);
},
findByUserId: async (id) => {
const target = id.trim();
if (!target) return null;
for (const [conversationId, reference] of map.entries()) {
if (reference.user?.aadObjectId === target) {
return { conversationId, reference };
}
if (reference.user?.id === target) {
return { conversationId, reference };
}
}
return null;
},
};
}