import { useIsImpersonating } from "~/hooks/useOrganizations"; import { useHasAdminAccess } from "~/hooks/useUser"; import { Button } from "../primitives/Buttons"; import { Dialog, DialogContent, DialogHeader, DialogTrigger } from "../primitives/Dialog"; import { Cog6ToothIcon } from "@heroicons/react/20/solid"; import { type loader } from "~/routes/resources.taskruns.$runParam.debug"; import type { UseDataFunctionReturn } from "remix-typedjson"; import { useTypedFetcher } from "remix-typedjson"; import { useEffect } from "react"; import { Spinner } from "../primitives/Spinner"; import * as Property from "~/components/primitives/PropertyTable"; import { ClipboardField } from "../primitives/ClipboardField"; import { MarQSShortKeyProducer } from "~/v3/marqs/marqsKeyProducer"; export function AdminDebugRun({ friendlyId }: { friendlyId: string }) { const hasAdminAccess = useHasAdminAccess(); const isImpersonating = useIsImpersonating(); if (!hasAdminAccess && !isImpersonating) { return null; } return ( ); } export function DebugRunDialog({ friendlyId }: { friendlyId: string }) { return ( ); } function DebugRunContent({ friendlyId }: { friendlyId: string }) { const fetcher = useTypedFetcher(); const isLoading = fetcher.state === "loading"; useEffect(() => { fetcher.load(`/resources/taskruns/${friendlyId}/debug`); }, [friendlyId]); return ( <> Debugging run {isLoading ? (
) : fetcher.data ? ( ) : ( <>Failed to get run debug data )} ); } function DebugRunData(props: UseDataFunctionReturn) { if (props.engine === "V1") { return ; } return ; } function DebugRunDataEngineV1({ run, environment, queueConcurrencyLimit, queueCurrentConcurrency, envConcurrencyLimit, envCurrentConcurrency, queueReserveConcurrency, envReserveConcurrency, }: UseDataFunctionReturn) { const keys = new MarQSShortKeyProducer("marqs:"); const withPrefix = (key: string) => `marqs:${key}`; return ( ID Message key GET message Queue key Get queue set Queue current concurrency key Get queue current concurrency Queue current concurrency {queueCurrentConcurrency ?? "0"} Queue reserve concurrency key Get queue reserve concurrency Queue reserve concurrency {queueReserveConcurrency ?? "0"} Queue concurrency limit key GET queue concurrency limit Queue concurrency limit {queueConcurrencyLimit ?? "Not set"} Env current concurrency key Get env current concurrency Env current concurrency {envCurrentConcurrency ?? "0"} Env reserve concurrency key Get env reserve concurrency Env reserve concurrency {envReserveConcurrency ?? "0"} Env concurrency limit key GET env concurrency limit Env concurrency limit {envConcurrencyLimit ?? "Not set"} Shared queue key Get shared queue set ); } function DebugRunDataEngineV2({ run, queueConcurrencyLimit, queueCurrentConcurrency, envConcurrencyLimit, envCurrentConcurrency, keys, }: UseDataFunctionReturn) { return ( ID Queue current concurrency {queueCurrentConcurrency ?? "0"} Queue concurrency limit {queueConcurrencyLimit ?? "Not set"} Env current concurrency {envCurrentConcurrency ?? "0"} Env concurrency limit {envConcurrencyLimit ?? "Not set"} {keys.map((key) => ( {key.label} ))} ); }