import Page from "@/src/components/layouts/page";
import { useRouter } from "next/router";
import { useHasProjectAccess } from "@/src/features/rbac/utils/checkProjectAccess";
import { Plus } from "lucide-react";
import EvaluatorTable from "@/src/features/evals/components/evaluator-table";
import { usePostHogClientCapture } from "@/src/features/posthog-analytics/usePostHogClientCapture";
import {
getEvalsTabs,
EVALS_TABS,
} from "@/src/features/navigation/utils/evals-tabs";
import { ActionButton } from "@/src/components/ActionButton";
import { api } from "@/src/utils/api";
import { useEntitlementLimit } from "@/src/features/entitlements/hooks";
import { SupportOrUpgradePage } from "@/src/ee/features/billing/components/SupportOrUpgradePage";
import { EvaluatorsOnboarding } from "@/src/components/onboarding/EvaluatorsOnboarding";
import { ManageDefaultEvalModel } from "@/src/features/evals/components/manage-default-eval-model";
export default function EvaluatorsPage() {
const router = useRouter();
const projectId = router.query.projectId as string;
const capture = usePostHogClientCapture();
const evaluatorLimit = useEntitlementLimit(
"model-based-evaluations-count-evaluators",
);
const hasWriteAccess = useHasProjectAccess({
projectId,
scope: "evalJob:CUD",
});
const hasReadAccess = useHasProjectAccess({
projectId,
scope: "evalJob:read",
});
// Fetch counts of evaluator configs and templates
const countsQuery = api.evals.counts.useQuery(
{
projectId,
},
{
enabled: !!projectId,
trpc: {
context: {
skipBatch: true,
},
},
},
);
const showOnboarding =
countsQuery.data?.configCount === 0 &&
countsQuery.data?.templateCount === 0;
if (!hasReadAccess) {
return ;
}
if (showOnboarding) {
return (
);
}
return (
<>
}
variant="default"
onClick={() => {
capture("eval_config:new_form_open");
router.push(`/project/${projectId}/evals/new`);
}}
limitValue={countsQuery.data?.configActiveCount ?? 0}
limit={evaluatorLimit}
>
Set up evaluator
>
),
}}
>
>
);
}