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

Function handler

packages/tools/src/definitions/get-segment-summaries.ts:19–70  ·  view source on GitHub ↗
(params: Record<string, unknown>, context: ToolExecutionContext)

Source from the content-addressed store, hash-verified

17}
18
19async function handler(params: Record<string, unknown>, context: ToolExecutionContext): Promise<ToolResult> {
20 const { locale, timeFilter: contextTimeFilter } = context
21 const limit = (params.limit as number) || 20
22 const effectiveTimeFilter = parseExtendedTimeParams(params as any, contextTimeFilter)
23
24 const segments = await context.dataProvider!.getSegmentSummaries({
25 limit: limit * 2,
26 timeFilter: effectiveTimeFilter,
27 })
28
29 if (!segments || segments.length === 0) {
30 const data = {
31 message: isChineseLocale(locale)
32 ? '未找到带摘要的段落。可能还没有生成摘要,请在段落时间线中点击"批量生成"按钮。'
33 : 'No segments with summaries found. Summaries may not have been generated yet.',
34 }
35 return { content: JSON.stringify(data), data }
36 }
37
38 let filteredSegments = segments
39 const keywords = params.keywords as string[] | undefined
40 if (keywords && keywords.length > 0) {
41 const lowerKeywords = keywords.map((k) => k.toLowerCase())
42 filteredSegments = segments.filter((s) =>
43 lowerKeywords.some((keyword) => s.summary?.toLowerCase().includes(keyword))
44 )
45 }
46
47 filteredSegments = filteredSegments.filter((s) => s.summary)
48 const limitedSegments = filteredSegments.slice(0, limit)
49
50 const localeStr = isChineseLocale(locale) ? 'zh-CN' : 'en-US'
51
52 const data = {
53 total: filteredSegments.length,
54 returned: limitedSegments.length,
55 timeRange: formatTimeRange(effectiveTimeFilter, locale),
56 segments: limitedSegments.map((s) => {
57 const startTime = new Date(s.startTs * 1000).toLocaleString(localeStr)
58 const endTime = new Date(s.endTs * 1000).toLocaleString(localeStr)
59 return {
60 segmentId: s.id,
61 time: `${startTime} ~ ${endTime}`,
62 messageCount: s.messageCount,
63 participants: s.participants,
64 summary: s.summary,
65 }
66 }),
67 }
68
69 return { content: JSON.stringify(data), data }
70}
71
72export const getSegmentSummariesTool: ToolDefinition = {
73 name: 'get_segment_summaries',

Callers

nothing calls this directly

Calls 4

parseExtendedTimeParamsFunction · 0.90
isChineseLocaleFunction · 0.90
formatTimeRangeFunction · 0.90
getSegmentSummariesMethod · 0.65

Tested by

no test coverage detected