export const agentPrismPrefix = "agentprism";

export const AGENT_PRISM_TOKENS = [
  "background",
  "foreground",
  "primary",
  "primary-foreground",
  "primary",
  "primary-foreground",
  "secondary",
  "secondary-foreground",
  "muted",
  "muted-foreground",
  "accent",
  "accent-foreground",
  "brand",
  "brand-foreground",
  "brand-secondary",
  "brand-secondary-foreground",
  "border",
  "border-subtle",
  "border-strong",
  "border-inverse",
  "success",
  "success-muted",
  "success-muted-foreground",
  "error",
  "error-muted",
  "error-muted-foreground",
  "warning",
  "warning-muted",
  "warning-muted-foreground",
  "pending",
  "pending-muted",
  "pending-muted-foreground",
  "code-string",
  "code-number",
  "code-key",
  "code-base",
  "badge-default",
  "badge-default-foreground",
  "avatar-llm",
  "badge-llm",
  "badge-llm-foreground",
  "timeline-llm",
  "avatar-agent",
  "badge-agent",
  "badge-agent-foreground",
  "timeline-agent",
  "avatar-tool",
  "badge-tool",
  "badge-tool-foreground",
  "timeline-tool",
  "avatar-chain",
  "badge-chain",
  "badge-chain-foreground",
  "timeline-chain",
  "avatar-retrieval",
  "badge-retrieval",
  "badge-retrieval-foreground",
  "timeline-retrieval",
  "avatar-embedding",
  "badge-embedding",
  "badge-embedding-foreground",
  "timeline-embedding",
  "avatar-guardrail",
  "badge-guardrail",
  "badge-guardrail-foreground",
  "timeline-guardrail",
  "avatar-create-agent",
  "badge-create-agent",
  "badge-create-agent-foreground",
  "timeline-create-agent",
  "avatar-span",
  "badge-span",
  "badge-span-foreground",
  "timeline-span",
  "avatar-event",
  "badge-event",
  "badge-event-foreground",
  "timeline-event",
  "avatar-unknown",
  "badge-unknown",
  "badge-unknown-foreground",
  "timeline-unknown",
] as const;

export type AgentPrismToken = (typeof AGENT_PRISM_TOKENS)[number];

export type AgentPrismColors = Record<AgentPrismToken, string>;

export const agentPrismTailwindColors = Object.fromEntries(
  AGENT_PRISM_TOKENS.map((tokenName) => [
    `agentprism-${tokenName}`,
    token(tokenName),
  ]),
) as AgentPrismColors;

function token(name: string) {
  return `oklch(var(--${agentPrismPrefix}-${name}) / <alpha-value>)`;
}
