HyperCluster/Fara-BrowserUse
5
1import { useCallback } from 'react';
2import { exportTraceToJson, downloadJson } from '@/services/jsonExporter';
3import { AgentTrace, AgentStep, AgentTraceMetadata, FinalStep } from '@/types/agent';
4
5interface UseJsonExporterOptions {
6 trace?: AgentTrace;
7 steps: AgentStep[];
8 metadata?: AgentTraceMetadata;
9 finalStep?: FinalStep;
10}
11
12interface UseJsonExporterReturn {
13 downloadTraceAsJson: () => void;
14}
15
16/**
17 * Custom hook to export and download a trace as JSON
18 */
19export const useJsonExporter = ({
20 trace,
21 steps,
22 metadata,
23 finalStep,
24}: UseJsonExporterOptions): UseJsonExporterReturn => {
25 const downloadTraceAsJson = useCallback(() => {
26 if (!trace) {
27 console.error('No trace available to export');
28 return;
29 }
30
31 try {
32 const jsonString = exportTraceToJson(trace, steps, metadata, finalStep);
33 const filename = `trace-${trace.id}.json`;
34 downloadJson(jsonString, filename);
35 } catch (error) {
36 console.error('Error exporting trace to JSON:', error);
37 }
38 }, [trace, steps, metadata, finalStep]);
39
40 return {
41 downloadTraceAsJson,
42 };
43};
44 