Skip to content

Commit 818a04e

Browse files
committed
new trace
1 parent 11a49db commit 818a04e

37 files changed

+329
-111
lines changed

app/page.tsx

Lines changed: 87 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,9 @@
11
'use client';
22

3-
import React, { useState } from 'react';
3+
import React, { useState, useEffect } from 'react';
44
import TraceViewer from '../src/components/TraceViewer';
55
import TraceCarousel from '../src/components/TraceCarousel';
66
import { TraceData } from '../src/types/trace';
7-
import trace1Data from '../src/data/trace1.json';
8-
import trace2Data from '../src/data/trace2.json';
9-
import trace3Data from '../src/data/trace3.json';
10-
import trace4Data from '../src/data/trace4.json';
11-
import trace5Data from '../src/data/trace5.json';
12-
import trace6Data from '../src/data/trace6.json';
13-
import trace7Data from '../src/data/trace7.json';
147

158
// 获取basePath
169
const basePath = process.env.NEXT_PUBLIC_BASE_PATH || '';
@@ -27,30 +20,89 @@ const fixAssetPaths = (data: TraceData): TraceData => {
2720
};
2821
};
2922

30-
// 应用路径修正
31-
const processedTrace1 = fixAssetPaths(trace1Data as TraceData);
32-
const processedTrace2 = fixAssetPaths(trace2Data as TraceData);
33-
const processedTrace3 = fixAssetPaths(trace3Data as TraceData);
34-
const processedTrace4 = fixAssetPaths(trace4Data as TraceData);
35-
const processedTrace5 = fixAssetPaths(trace5Data as TraceData);
36-
const processedTrace6 = fixAssetPaths(trace6Data as TraceData);
37-
const processedTrace7 = fixAssetPaths(trace7Data as TraceData);
38-
// 将所有轨迹数据收集到一个数组中
39-
const allTraceData = [
40-
processedTrace1,
41-
processedTrace2,
42-
processedTrace3,
43-
processedTrace4,
44-
processedTrace5,
45-
processedTrace6,
46-
processedTrace7
47-
];
23+
// 生成traceIds
24+
const generateTraceIds = (count: number): string[] => {
25+
return Array.from({ length: count }, (_, i) => `viewer${i + 1}`);
26+
};
27+
28+
// TaskDisplay component to show current task
29+
const TaskDisplay = ({ traceData, activeIndex = 0, darkMode = true }: { traceData: TraceData | null, activeIndex?: number, darkMode?: boolean }) => {
30+
if (!traceData) {
31+
return null;
32+
}
4833

49-
// 为每个轨迹生成唯一ID
50-
const traceIds = ['viewer1', 'viewer2', 'viewer3', 'viewer4', 'viewer5', 'viewer6', 'viewer7' ];
34+
// 适配夜间/白天模式的样式
35+
const bgClass = darkMode
36+
? 'bg-gray-900/90 border-blue-500/40 shadow-lg'
37+
: 'bg-white border-blue-500/30 shadow-md';
38+
const textClass = darkMode ? 'text-gray-100' : 'text-gray-900';
39+
const taskLabelClass = darkMode
40+
? 'text-blue-300 font-bold tracking-wider mr-2'
41+
: 'text-blue-700 font-bold tracking-wider mr-2';
42+
const taskContentClass = darkMode
43+
? 'font-sans font-medium text-base md:text-lg leading-relaxed break-words text-gray-100'
44+
: 'font-sans font-medium text-base md:text-lg leading-relaxed break-words text-gray-900';
45+
46+
return (
47+
<div
48+
className={`w-full rounded-xl mb-6 border px-6 py-4 flex items-start ${bgClass} ${textClass}`}
49+
style={{ fontFamily: `-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'PingFang SC','Hiragino Sans GB','Microsoft YaHei',sans-serif` }}
50+
>
51+
<span className={taskLabelClass} style={{ fontFamily: 'Segoe UI,Arial,sans-serif' }}>TASK:</span>
52+
<span className={taskContentClass}>{traceData.task || 'No task information available'}</span>
53+
</div>
54+
);
55+
};
5156

5257
export default function Home() {
58+
const [allTraceData, setAllTraceData] = useState<TraceData[]>([]);
59+
const [traceIds, setTraceIds] = useState<string[]>([]);
5360
const [darkMode, setDarkMode] = useState(true);
61+
const [activeTraceIndex, setActiveTraceIndex] = useState(0);
62+
63+
useEffect(() => {
64+
// 动态加载trace文件
65+
async function loadTraceFiles() {
66+
try {
67+
// 尝试加载所有可能的trace文件(从1到20)
68+
const tracePromises = [];
69+
70+
// 定义一个异步函数来尝试导入单个trace文件
71+
const tryImportTrace = async (index: number) => {
72+
try {
73+
const module = await import(`../src/data/trace${index}.json`);
74+
return { index, data: module.default };
75+
} catch (e) {
76+
return null;
77+
}
78+
};
79+
80+
// 并行尝试导入所有可能的trace文件
81+
for (let i = 1; i <= 20; i++) {
82+
tracePromises.push(tryImportTrace(i));
83+
}
84+
85+
// 等待所有导入尝试完成
86+
const results = await Promise.all(tracePromises);
87+
88+
// 过滤出成功导入的trace文件,并按索引排序
89+
const successfulImports = results
90+
.filter(result => result !== null)
91+
.sort((a, b) => a!.index - b!.index)
92+
.map(result => fixAssetPaths(result!.data as TraceData));
93+
94+
console.log(`Successfully loaded ${successfulImports.length} trace files`);
95+
96+
// 更新状态
97+
setAllTraceData(successfulImports);
98+
setTraceIds(generateTraceIds(successfulImports.length));
99+
} catch (error) {
100+
console.error('Error loading trace files:', error);
101+
}
102+
}
103+
104+
loadTraceFiles();
105+
}, []);
54106

55107
const toggleTheme = () => {
56108
setDarkMode(!darkMode);
@@ -565,12 +617,19 @@ export default function Home() {
565617
Agent Execution Traces
566618
</h2>
567619

620+
{/* Task Display Component in the red box area */}
621+
<TaskDisplay
622+
traceData={allTraceData.length > 0 ? allTraceData[activeTraceIndex] : null}
623+
darkMode={darkMode}
624+
/>
625+
568626
<div className="mb-4">
569627
<TraceCarousel
570628
traceDatas={allTraceData}
571629
ids={traceIds}
572630
autoplay={true}
573631
autoplayInterval={8000}
632+
onActiveIndexChange={setActiveTraceIndex}
574633
/>
575634
</div>
576635

948 KB
Loading
774 KB
Loading
-642 KB
Loading
18.5 KB
Loading
27.5 KB
Loading
11.4 KB
Loading
-4.83 KB
Loading
10.5 KB
Loading
-3.35 KB
Loading

0 commit comments

Comments
 (0)