import * as j from "@char/justin"; export const providers = ["anthropic", "openai", "openai-codex", "opencode-go"] as const; export type Provider = (typeof providers)[number]; export const providerNames: Record = { anthropic: "Claude", openai: "ChatGPT / Codex", "openai-codex": "ChatGPT / Codex", "opencode-go": "OpenCode Go", }; const window = j.obj({ label: j.string, usedPercent: j.number, resetsAt: j.union(j.string, j.null), }); export type UsageWindow = j.Infer; export const usageSchema = j.union( j.obj({ status: j.literal("ok"), fetchedAt: j.string, windows: j.array(window) }), j.obj({ status: j.union(j.literal("unavailable"), j.literal("error")), message: j.string }), ); export type SubscriptionUsage = j.Infer; export function isProvider(value: string): value is Provider { return (providers as readonly string[]).includes(value); }