File size: 773 Bytes
0b9dc2e
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
import { ToolCallGroupList } from './_shared';
import type { ToolRenderer } from './types';

function parseInput(input: string): Record<string, unknown> {
	try {
		return JSON.parse(input);
	} catch {
		return {};
	}
}

function getPattern(input: string): string {
	const { pattern } = parseInput(input) as { pattern?: string };
	return pattern || input;
}

export const GrepRenderer: ToolRenderer = {
	getDisplayName: (_call, t) => t('tool.grep.name'),

	renderCallArgs: (call) => getPattern(call.input),

	renderGroup: (calls, t) => (
		<ToolCallGroupList

			calls={calls}

			inline

			label={<strong className="truncate text-primary text-sm">{t('tool.grep.name')}</strong>}

			renderItem={(item) => getPattern(item.call.input)}

		/>
	),
};