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

Function getMessageContext

packages/core/src/query/message-queries.ts:583–607  ·  view source on GitHub ↗
(
  db: DatabaseAdapter,
  messageIds: number[],
  contextSize: number = 20
)

Source from the content-addressed store, hash-verified

581 * Uses simple id-based ordering (not session-aware).
582 */
583export function getMessageContext(
584 db: DatabaseAdapter,
585 messageIds: number[],
586 contextSize: number = 20
587): MappedMessage[] {
588 if (messageIds.length === 0) return []
589
590 const contextIds = new Set<number>()
591
592 for (const messageId of messageIds) {
593 contextIds.add(messageId)
594
595 const beforeRows = db
596 .prepare('SELECT id FROM message WHERE id < ? ORDER BY id DESC LIMIT ?')
597 .all(messageId, contextSize) as { id: number }[]
598 beforeRows.forEach((r) => contextIds.add(r.id))
599
600 const afterRows = db
601 .prepare('SELECT id FROM message WHERE id > ? ORDER BY id ASC LIMIT ?')
602 .all(messageId, contextSize) as { id: number }[]
603 afterRows.forEach((r) => contextIds.add(r.id))
604 }
605
606 return hydrateMessagesByIds(db, Array.from(contextIds))
607}
608
609/**
610 * Get context messages around search results.

Callers

nothing calls this directly

Calls 4

hydrateMessagesByIdsFunction · 0.85
allMethod · 0.65
prepareMethod · 0.65
addMethod · 0.45

Tested by

no test coverage detected