MCPcopy Index your code
hub / github.com/ChatLab/ChatLab / CoreDataProvider

Class CoreDataProvider

packages/tools/src/providers/core-data-provider.ts:43–172  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

41} from '../types'
42
43export class CoreDataProvider implements ToolDataProvider {
44 constructor(private db: DatabaseAdapter) {}
45
46 async searchMessages(
47 keywords: string[],
48 options?: { timeFilter?: ToolTimeRange; limit?: number; senderId?: number }
49 ): Promise<SearchMessagesResult> {
50 const result = searchMessagesByKeywords(this.db, keywords, {
51 startTs: options?.timeFilter?.startTs,
52 endTs: options?.timeFilter?.endTs,
53 senderId: options?.senderId,
54 limit: options?.limit ?? 50,
55 })
56 return {
57 messages: result.messages.map((m) => ({
58 id: m.id,
59 senderId: m.senderId,
60 senderName: m.senderName,
61 senderPlatformId: m.senderPlatformId,
62 content: m.content,
63 timestamp: m.timestamp,
64 })),
65 total: result.total ?? result.messages.length,
66 }
67 }
68
69 async deepSearchMessages(
70 keywords: string[],
71 options?: { timeFilter?: ToolTimeRange; limit?: number; senderId?: number }
72 ): Promise<SearchMessagesResult> {
73 return this.searchMessages(keywords, options)
74 }
75
76 async getSearchMessageContext(
77 messageIds: number[],
78 contextBefore: number,
79 contextAfter: number
80 ): Promise<RawMessage[]> {
81 return coreGetSearchMessageContext(this.db, messageIds, contextBefore, contextAfter)
82 }
83
84 async getRecentMessages(options?: { timeFilter?: ToolTimeRange; limit?: number }): Promise<SearchMessagesResult> {
85 const messages = coreGetRecentMessages(this.db, { limit: options?.limit ?? 50 })
86 return {
87 messages: messages.map((m) => ({
88 id: m.id,
89 senderId: m.senderId,
90 senderName: m.senderName,
91 senderPlatformId: m.senderPlatformId,
92 content: m.content,
93 timestamp: m.timestamp,
94 })),
95 total: messages.length,
96 }
97 }
98
99 async getMessageContext(messageIds: number[], contextSize: number): Promise<RawMessage[]> {
100 return coreGetMessageContext(this.db, messageIds, contextSize)

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected