CoolFace
Apppublic

HyperCluster/Fara-BrowserUse

sourceHugging Facemitupdated 10mo agoView on Hugging Face
5likes
useJsonExporter.ts44 linesDownload Raw Back to hooks
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