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}
))}
);
}