Spaces:
Running
Running
| import { useCallback } from 'react'; | |
| import { exportTraceToJson, downloadJson } from '@/services/jsonExporter'; | |
| import { AgentTrace, AgentStep, AgentTraceMetadata, FinalStep } from '@/types/agent'; | |
| interface UseJsonExporterOptions { | |
| trace?: AgentTrace; | |
| steps: AgentStep[]; | |
| metadata?: AgentTraceMetadata; | |
| finalStep?: FinalStep; | |
| } | |
| interface UseJsonExporterReturn { | |
| downloadTraceAsJson: () => void; | |
| } | |
| /** | |
| * Custom hook to export and download a trace as JSON | |
| */ | |
| export const useJsonExporter = ({ | |
| trace, | |
| steps, | |
| metadata, | |
| finalStep, | |
| }: UseJsonExporterOptions): UseJsonExporterReturn => { | |
| const downloadTraceAsJson = useCallback(() => { | |
| if (!trace) { | |
| console.error('No trace available to export'); | |
| return; | |
| } | |
| try { | |
| const jsonString = exportTraceToJson(trace, steps, metadata, finalStep); | |
| const filename = `trace-${trace.id}.json`; | |
| downloadJson(jsonString, filename); | |
| } catch (error) { | |
| console.error('Error exporting trace to JSON:', error); | |
| } | |
| }, [trace, steps, metadata, finalStep]); | |
| return { | |
| downloadTraceAsJson, | |
| }; | |
| }; | |