Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ type TrajectoryPageProps = {
};

export function TrajectoryPage({ title, trajectoryUrl, fallbackUrl }: TrajectoryPageProps) {
const [iframeLoading, setIframeLoading] = useState(false);
const [iframeLoading, setIframeLoading] = useState(true);
const iframeRef = useRef<HTMLIFrameElement>(null);

useEffect(() => {
Expand All @@ -28,7 +28,7 @@ export function TrajectoryPage({ title, trajectoryUrl, fallbackUrl }: Trajectory
if (iframeRef.current) {
iframeRef.current.style.opacity = "1";
}
}, 200);
}, 300);
};

const handleIframeError = () => {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import zealtConfig from "@/../zealt.json";

type RouteParams = {
name: string;
jobName: string;
jobId: string;
};

type TrialEntry = {
Expand All @@ -18,6 +18,18 @@ function buildFallbackUrl(jobName: string, trialName: string) {
return `${zealtConfig.github_repo}/blob/main/jobs/${jobName}/${trialName}/result.json`
}

function splitTrialName(trialName: string): { taskName: string; jobId: string } | null {
const separatorIndex = trialName.lastIndexOf("__");
if (separatorIndex <= 0 || separatorIndex >= trialName.length - 2) {
return null;
}

return {
taskName: trialName.slice(0, separatorIndex),
jobId: trialName.slice(separatorIndex + 2),
};
}

function getServerBaseUrl() {
return process.env.CLIPS_BASE_URL || 'https://cc.getpochi.com';
}
Expand All @@ -39,14 +51,10 @@ function isTrialEntry(value: unknown): value is TrialEntry {
return false;
}

if (typeof trial.trajectory_id === "undefined") {
return true;
}

return typeof trial.trajectory_id === "string";
return true;
}

function findTrialEntry(jobName: string, trialName: string): TrialEntry | null {
function findTrialEntry(taskName: string, jobId: string): TrialEntry | null {
for (const trials of Object.values(tasksData as Record<string, unknown>)) {
if (!Array.isArray(trials)) {
continue;
Expand All @@ -57,7 +65,12 @@ function findTrialEntry(jobName: string, trialName: string): TrialEntry | null {
continue;
}

if (trial.job_name === jobName && trial.trial_name === trialName) {
const splitName = splitTrialName(trial.trial_name);
if (!splitName) {
continue;
}

if (splitName.taskName === taskName && splitName.jobId === jobId) {
return trial;
}
}
Expand All @@ -81,9 +94,14 @@ export function generateStaticParams(): RouteParams[] {
continue;
}

const splitName = splitTrialName(trial.trial_name);
if (!splitName) {
continue;
}

params.push({
name: trial.trial_name,
jobName: trial.job_name,
name: splitName.taskName,
jobId: splitName.jobId,
});
}
}
Expand All @@ -97,8 +115,11 @@ export default async function TrajectoryRoutePage({
params: Promise<RouteParams>;
}) {
const resolvedParams = await params;
const fallbackUrl = buildFallbackUrl(resolvedParams.jobName, resolvedParams.name);
const trialEntry = findTrialEntry(resolvedParams.jobName, resolvedParams.name);

const trialEntry = findTrialEntry(resolvedParams.name, resolvedParams.jobId);
const fallbackUrl = trialEntry
? buildFallbackUrl(trialEntry.job_name, trialEntry.trial_name)
: null;
const clipId = trialEntry?.trajectory_id?.trim() || null;
const trajectoryUrl = clipId ? buildClipUrl(clipId, resolvedParams.name) : null;

Expand All @@ -108,7 +129,7 @@ export default async function TrajectoryRoutePage({
<TrajectoryPage
title={resolvedParams.name}
trajectoryUrl={trajectoryUrl}
fallbackUrl={fallbackUrl}
fallbackUrl={fallbackUrl ?? ""}
/>
</div>
);
Expand Down
22 changes: 15 additions & 7 deletions site/app/tasks/page.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -24,12 +24,20 @@ function cn(...inputs: ClassValue[]) {
const tasksData = Object.entries(tasksDataRaw).map(([taskName, trials]) => {
return {
taskName,
trials: (trials as any[]).map(t => ({
...t,
model: t.model.split('/').pop() || t.model,
agent: t.agent.charAt(0).toUpperCase() + t.agent.slice(1),
exec_duration: t.latency_breakdown?.agent_exec || t.latency_sec || 0
})),
trials: (trials as any[]).map(t => {
const trialNameParts = String(t.trial_name ?? "").split("__");
const taskName = trialNameParts[0] || "";
const jobId = trialNameParts[trialNameParts.length - 1] || "";

return {
...t,
model: t.model.split('/').pop() || t.model,
agent: t.agent.charAt(0).toUpperCase() + t.agent.slice(1),
exec_duration: t.latency_breakdown?.agent_exec || t.latency_sec || 0,
taskName,
jobId,
};
}),
};
}).sort((a, b) => a.taskName.localeCompare(b.taskName));

Expand Down Expand Up @@ -344,7 +352,7 @@ function TasksContent() {
<HoverCard openDelay={200} closeDelay={0}>
<HoverCardTrigger asChild>
<Link
href={`/tasks/${encodeURIComponent(trial.trial_name)}/${encodeURIComponent(trial.job_name)}/trajectory`}
href={`/tasks/${encodeURIComponent(trial.taskName)}/${encodeURIComponent(trial.jobId)}/trajectory`}
target="_blank"
rel="noopener noreferrer"
className="absolute inset-0 flex items-center justify-start gap-1.5 md:gap-2 px-3 sm:px-6 w-full h-full cursor-pointer hover:bg-secondary/50 transition-colors group/cell focus:outline-none text-left bg-transparent border-none m-0 p-0"
Expand Down
Loading
Loading