(params: Record<string, unknown>, context: ToolExecutionContext)
| 19 | } |
| 20 | |
| 21 | async function handler(params: Record<string, unknown>, context: ToolExecutionContext): Promise<ToolResult> { |
| 22 | const { locale, timeFilter: contextTimeFilter, maxMessagesLimit } = context |
| 23 | const limit = maxMessagesLimit || (params.limit as number) || 100 |
| 24 | const effectiveTimeFilter = parseExtendedTimeParams(params as any, contextTimeFilter) |
| 25 | |
| 26 | const result = await context.dataProvider!.getConversationBetween( |
| 27 | params.member_id_1 as number, |
| 28 | params.member_id_2 as number, |
| 29 | effectiveTimeFilter, |
| 30 | limit |
| 31 | ) |
| 32 | |
| 33 | if (result.messages.length === 0) { |
| 34 | const data = { |
| 35 | error: t('noConversation', locale), |
| 36 | member1Id: params.member_id_1, |
| 37 | member2Id: params.member_id_2, |
| 38 | } |
| 39 | return { content: JSON.stringify(data), data } |
| 40 | } |
| 41 | |
| 42 | const data = { |
| 43 | total: result.total, |
| 44 | returned: result.messages.length, |
| 45 | member1: result.member1Name, |
| 46 | member2: result.member2Name, |
| 47 | timeRange: formatTimeRange(effectiveTimeFilter, locale), |
| 48 | rawMessages: result.messages, |
| 49 | } |
| 50 | |
| 51 | return { content: JSON.stringify(data), data, rawMessages: result.messages } |
| 52 | } |
| 53 | |
| 54 | export const getConversationBetweenTool: ToolDefinition = { |
| 55 | name: 'get_conversation_between', |
nothing calls this directly
no test coverage detected