import { z } from "zod";
import { MAX_IN_LIST } from "../db";
import { forbidden, notFoundError } from "../errors";
import { limitBrowse, limitWrite } from "../limits";
import { loadPull } from "../pulls";
import { branchSha, listRefs } from "../git/refs";
import { hasPermission, repoPermission } from "../repos";
import { advisoryCounts, canManageAdvisories } from "../security/advisories";
import {
codeAlertCounts,
listCodeAlerts,
listSarifUploads,
loadCodeAlert,
pullCodeAlerts,
setCodeAlertDismissed,
} from "../security/code-scanning";
import { listDependencies } from "../security/dependencies";
import { loadSecurityPolicy } from "../security/policy";
import { bypassPushBlock, loadPushBlock } from "../security/push-protection";
import { enqueueSecurity } from "../security/queue";
import {
listSecretAlerts,
requiresAdminResolution,
secretAlertCounts,
setSecretAlertState,
} from "../security/secret-alerts";
import { loadSecuritySettings, saveSecuritySettings } from "../security/settings";
import { loadSignatures } from "../security/signatures";
import { credentialCoversRepo, scopedRepoPermission } from "../token-scope";
import { noContent, readJson, requireScopedAdminWrite, requireScopedRepo, unprocessable } from "./http";
import type { ApiContext, ScopedRepo } from "./http";
import type { Permission } from "~/lib/types";
const MAX_VERIFY_ON_VIEW = 20;
const MAX_PAGE = 1000;
const MAX_REF_LENGTH = 255;
const MAX_QUERY_LENGTH = 100;
const GHSA_ID = /^GITFOR-[a-z0-9]{4}-[a-z0-9]{4}-[a-z0-9]{4}$/;
function query(ctx: ApiContext, key: string): string | null {