Skip to content
Closed
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
2 changes: 1 addition & 1 deletion agents-manage-ui/src/app/utils/format-date.ts
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ function normalizeDateString(dateString: string | Date): string | Date {

if (pgTimestampPattern.test(dateString)) {
// Replace space with 'T' and add 'Z' for UTC
return dateString.replace(' ', 'T') + 'Z';
return `${dateString.replace(' ', 'T')}Z`;
}

return dateString;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,4 @@
import { ChevronRight } from 'lucide-react';
import type { FC } from 'react';
import { useState } from 'react';
import { cn } from '@/lib/utils';

const getOperationLabel = (operation: any) => {
// Use LLM-generated label if available for data-operations
Expand All @@ -23,16 +20,10 @@ const getOperationLabel = (operation: any) => {
};

export const InlineEvent: FC<{ operation: any; isLast: boolean }> = ({ operation, isLast }) => {
const [isExpanded, setIsExpanded] = useState(false);

const getLabel = () => {
return getOperationLabel(operation);
};

const getExpandedContent = () => {
return operation.details || {};
};

return (
<div className="flex flex-col items-start my-2 relative">
{/* Connection line */}
Expand Down
4 changes: 0 additions & 4 deletions agents-manage-ui/src/components/agent/sidepane/sidepane.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@ import type { Edge, Node } from '@xyflow/react';
import { useEdges, useNodesData } from '@xyflow/react';
import { type LucideIcon, Workflow } from 'lucide-react';
import { useMemo } from 'react';
import { useAgentStore } from '@/features/agent/state/use-agent-store';
import { useAgentErrors } from '@/hooks/use-agent-errors';
import type { ArtifactComponent } from '@/lib/api/artifact-components';
import type { Credential } from '@/lib/api/credentials';
Expand Down Expand Up @@ -65,7 +64,6 @@ export function SidePane({
const selectedNode = useNodesData(selectedNodeId || '');
const edges = useEdges();
const { hasFieldError, getFieldErrorMessage, getFirstErrorField } = useAgentErrors();
const errors = useAgentStore((state) => state.errors);

const selectedEdge = useMemo(
() => (selectedEdgeId ? edges.find((edge) => edge.id === selectedEdgeId) : null),
Expand Down Expand Up @@ -185,8 +183,6 @@ export function SidePane({
credentialLookup,
subAgentExternalAgentConfigLookup,
subAgentTeamAgentConfigLookup,
// Rerender sidepane when errors changes
errors,
]);

const showBackButton = selectedNode || selectedEdge;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ export function DatasetRunConfigsList({
const [editingConfigId, setEditingConfigId] = useState<string | null>(null);
const [editingConfig, setEditingConfig] = useState<DatasetRunConfig | null>(null);

const loadRunConfigs = async () => {
const loadRunConfigs = useCallback(async () => {
try {
setLoading(true);
setError(null);
Expand All @@ -66,11 +66,11 @@ export function DatasetRunConfigsList({
} finally {
setLoading(false);
}
};
}, [tenantId, projectId, datasetId]);

useEffect(() => {
loadRunConfigs();
}, [tenantId, projectId, datasetId, refreshKey]);
}, [loadRunConfigs]);

const handleDeleteClick = (configId: string) => {
setDeletingConfigId(configId);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -222,9 +222,9 @@ export function DatasetRunDetails({
</CardContent>
</Card>

{selectedItemId && run.items && (
{selectedItemId && run.items && run.items.find((item) => item.id === selectedItemId) && (
<DatasetItemViewDialog
item={run.items.find((item) => item.id === selectedItemId)!}
item={run.items.find((item) => item.id === selectedItemId) as any}
isOpen={selectedItemId !== null}
onOpenChange={(open) => !open && setSelectedItemId(null)}
/>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -45,8 +45,7 @@ export function DatasetRunsList({
}

loadRuns();
// eslint-disable-next-line react-hooks/exhaustive-deps
}, [tenantId, projectId, datasetId, refreshKey]);
}, [tenantId, projectId, datasetId]);

if (loading) {
return (
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -131,7 +131,7 @@ export function DatasetRunConfigForm({
description: data.description,
agentIds: data.agentIds || [],
evaluatorIds: data.evaluatorIds || [],
...(runConfigId ? {} : { datasetId: datasetId! }),
...(runConfigId ? {} : datasetId ? { datasetId } : {}),
};

console.log('Payload being sent:', payload);
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
'use client';

import { zodResolver } from '@hookform/resolvers/zod';
import { useEffect, useState } from 'react';
import { useCallback, useEffect, useState } from 'react';
import { useForm } from 'react-hook-form';
import { toast } from 'sonner';
import { Button } from '@/components/ui/button';
Expand Down Expand Up @@ -75,14 +75,7 @@ export function EvaluationJobFormDialog({
defaultValues: formatFormData(initialData),
});

useEffect(() => {
if (isOpen) {
form.reset(formatFormData(initialData));
loadData();
}
}, [isOpen, initialData]);

const loadData = async () => {
const loadData = useCallback(async () => {
setLoading(true);
try {
const evaluatorsRes = await fetchEvaluators(tenantId, projectId);
Expand All @@ -93,7 +86,14 @@ export function EvaluationJobFormDialog({
} finally {
setLoading(false);
}
};
}, [tenantId, projectId]);

useEffect(() => {
if (isOpen) {
form.reset(formatFormData(initialData));
loadData();
}
}, [isOpen, initialData, form, loadData]);

const { isSubmitting } = form.formState;
const selectedEvaluatorIds = form.watch('evaluatorIds') || [];
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
import { zodResolver } from '@hookform/resolvers/zod';
import { Plus } from 'lucide-react';
import { useRouter } from 'next/navigation';
import { useEffect, useState } from 'react';
import { useCallback, useEffect, useState } from 'react';
import { useForm } from 'react-hook-form';
import { toast } from 'sonner';
import { z } from 'zod';
Expand Down Expand Up @@ -119,14 +119,7 @@ export function EvaluationRunConfigFormDialog({
defaultValues: formatFormData(initialData),
});

useEffect(() => {
if (isOpen) {
form.reset(formatFormData(initialData));
loadData();
}
}, [isOpen, initialData]);

const loadData = async () => {
const loadData = useCallback(async () => {
setLoading(true);
try {
const [suiteConfigsRes, evaluatorsRes, agentsRes] = await Promise.all([
Expand All @@ -143,7 +136,14 @@ export function EvaluationRunConfigFormDialog({
} finally {
setLoading(false);
}
};
}, [tenantId, projectId]);

useEffect(() => {
if (isOpen) {
form.reset(formatFormData(initialData));
loadData();
}
}, [isOpen, initialData, form, loadData]);

const handleCreateSuiteConfig = async (data: SuiteConfigFormData) => {
const isValid = await suiteConfigForm.trigger();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

import { ExternalLink, MoreVertical, Pencil, Trash2 } from 'lucide-react';
import Link from 'next/link';
import { useEffect, useState } from 'react';
import { useCallback, useEffect, useState } from 'react';
import { formatDateTimeTable } from '@/app/utils/format-date';
import { Badge } from '@/components/ui/badge';
import { Button } from '@/components/ui/button';
Expand Down Expand Up @@ -48,7 +48,7 @@ export function EvaluationRunConfigsList({
setRunConfigs(initialRunConfigs);
}, [initialRunConfigs]);

const refreshRunConfigs = async () => {
const refreshRunConfigs = useCallback(async () => {
try {
console.log('Fetching fresh run configs...');
const response = await fetchEvaluationRunConfigs(tenantId, projectId);
Expand All @@ -57,7 +57,7 @@ export function EvaluationRunConfigsList({
} catch (error) {
console.error('Error refreshing run configs:', error);
}
};
}, [tenantId, projectId]);

// Refresh when refreshKey changes (e.g., after creating a new config)
useEffect(() => {
Expand All @@ -66,8 +66,7 @@ export function EvaluationRunConfigsList({
console.log('Calling refreshRunConfigs');
refreshRunConfigs();
}
// eslint-disable-next-line react-hooks/exhaustive-deps
}, [refreshKey]);
}, [refreshKey, refreshRunConfigs]);

const handleEdit = (runConfig: EvaluationRunConfig) => {
setEditingRunConfig(runConfig);
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
'use client';

import { Info } from 'lucide-react';
import { useEffect, useState } from 'react';
import { useCallback, useEffect, useState } from 'react';
import { Button } from '@/components/ui/button';
import { Popover, PopoverContent, PopoverTrigger } from '@/components/ui/popover';
import { fetchAgents } from '@/lib/api/agent-full-client';
Expand Down Expand Up @@ -35,17 +35,7 @@ export function SuiteConfigDetailsPopover({
const [evaluators, setEvaluators] = useState<Evaluator[]>([]);
const [agents, setAgents] = useState<Agent[]>([]);

useEffect(() => {
if (!suiteConfigId || !tenantId || !projectId) {
return;
}
if (isOpen && !suiteConfig) {
loadSuiteConfigDetails();
}
// eslint-disable-next-line react-hooks/exhaustive-deps
}, [isOpen]);

const loadSuiteConfigDetails = async () => {
const loadSuiteConfigDetails = useCallback(async () => {
if (!suiteConfigId) {
console.error('Suite config ID is missing');
return;
Expand Down Expand Up @@ -111,7 +101,16 @@ export function SuiteConfigDetailsPopover({
} finally {
setLoading(false);
}
};
}, [suiteConfigId, tenantId, projectId]);

useEffect(() => {
if (!suiteConfigId || !tenantId || !projectId) {
return;
}
if (isOpen && !suiteConfig) {
loadSuiteConfigDetails();
}
}, [isOpen, suiteConfigId, tenantId, projectId, suiteConfig, loadSuiteConfigDetails]);

const getAgentNames = (agentIds?: string[]): string[] => {
if (!agentIds || agentIds.length === 0) {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
'use client';

import { useEffect, useState } from 'react';
import { useCallback, useEffect, useState } from 'react';
import { ExpandableJsonEditor } from '@/components/editors/expandable-json-editor';
import { Button } from '@/components/ui/button';
import {
Expand Down Expand Up @@ -47,14 +47,7 @@ export function SuiteConfigViewDialog({
const [evaluators, setEvaluators] = useState<Evaluator[]>([]);
const [agents, setAgents] = useState<Agent[]>([]);

useEffect(() => {
if (isOpen && suiteConfigId && tenantId && projectId) {
loadSuiteConfigDetails();
}
// eslint-disable-next-line react-hooks/exhaustive-deps
}, [isOpen, suiteConfigId]);

const loadSuiteConfigDetails = async () => {
const loadSuiteConfigDetails = useCallback(async () => {
if (!suiteConfigId || !tenantId || !projectId) {
return;
}
Expand Down Expand Up @@ -110,7 +103,13 @@ export function SuiteConfigViewDialog({
} finally {
setLoading(false);
}
};
}, [suiteConfigId, tenantId, projectId]);

useEffect(() => {
if (isOpen && suiteConfigId && tenantId && projectId) {
loadSuiteConfigDetails();
}
}, [isOpen, suiteConfigId, tenantId, projectId, loadSuiteConfigDetails]);

const getAgentNames = (agentIds?: string[]): string[] => {
if (!agentIds || agentIds.length === 0) {
Expand Down
Loading