minibeartwo 7c3d2551b6
feat(frontend): add a token usage dashboard for the console APIs (#7636)
* feat(frontend): add token usage dashboard over console APIs

* fix(frontend): address token usage dashboard review feedback

* fix(frontend): route usage runs to their custom agent chats

* docs(frontend): keep agent guidance within the module budget
2026-11-02 15:29:46 +08:00

39 lines
1.1 KiB
TypeScript

import { useQuery } from "@tanstack/react-query";
import { fetchUsage, fetchUsageRuns } from "./api";
import type { UsagePeriod, UsageRunFilter } from "./types";
// The workspace QueryClient is already account-scoped; explicit owner keys
// also fence requests when auth is unknown or a caller mounts us elsewhere.
export function useUsage(
owner: string | undefined,
days: UsagePeriod,
timezoneOffsetMinutes: number,
enabled: boolean,
) {
return useQuery({
queryKey: ["usage", owner, "window", days, timezoneOffsetMinutes],
queryFn: ({ signal }) => fetchUsage(days, timezoneOffsetMinutes, signal),
enabled: enabled && !!owner,
staleTime: 30_000,
retry: false,
});
}
export function useUsageRuns(
owner: string | undefined,
page: number,
status: UsageRunFilter,
enabled: boolean,
) {
return useQuery({
queryKey: ["usage", owner, "runs", status, page],
queryFn: ({ signal }) => fetchUsageRuns(page * 20, status, signal),
enabled: enabled && !!owner,
staleTime: 30_000,
refetchOnWindowFocus: page === 0,
refetchOnReconnect: page === 0,
retry: false,
});
}