import { createServerFn } from "@tanstack/react-start";
import { z } from "zod";
import { requireViewer, viewerMiddleware } from "./middleware";
import { MAX_IN_LIST } from "~/server/db";
import { notFoundError } from "~/server/errors";
import { limitBrowse, limitWrite } from "~/server/limits";
import { assertNotArchived, hasPermission, requireRepoAccess } from "~/server/repos";
import { advisoryCounts, canManageAdvisories } from "~/server/security/advisories";
import {
codeAlertCounts,
listCodeAlerts,
listSarifUploads,
loadCodeAlert,
pullCodeAlerts,
setCodeAlertDismissed,
} from "~/server/security/code-scanning";
import { listDependencies } from "~/server/security/dependencies";
import { loadSecurityPolicy } from "~/server/security/policy";
import { bypassPushBlock, loadPushBlock } from "~/server/security/push-protection";
import { enqueueSecurity } from "~/server/security/queue";
import { listSecretAlerts, secretAlertCounts, setSecretAlertState } from "~/server/security/secret-alerts";
import { loadSecuritySettings, saveSecuritySettings } from "~/server/security/settings";
import { loadSignatures } from "~/server/security/signatures";
import { loadPull } from "~/server/pulls";
import { branchSha, listRefs } from "~/server/git/refs";
import { repoRef } from "~/lib/validation";
const page = z.number().int().min(1).max(1000).default(1);
const sha = z.string().regex(/^[0-9a-f]{40}$/);
const MAX_VERIFY_ON_VIEW = 20;
export const getSecurityOverview = createServerFn({ method: "GET" })
.middleware([viewerMiddleware])
.validator(repoRef)
.handler(async ({ data, context }) => {
await limitBrowse(context.viewer);
const { repo, permission } = await requireRepoAccess(data.owner, data.repo, context.viewer, "read");
const canWrite = hasPermission(permission, "write");
const [settings, policy, advisories] = await Promise.all([
loadSecuritySettings(repo.id),