///
import type React from 'react';
import codexPng from '../assets/icon-codex.png';
/** Claude icon โ extracted from apps/marketing/public/assets/icon-claude.svg */
export const ClaudeIcon: React.FC<{ className?: string }> = ({ className = 'w-4 h-4' }) => (
);
/** Codex icon โ PNG from apps/marketing/public/assets/icon-codex.png */
export const CodexIcon: React.FC<{ className?: string }> = ({ className = 'w-4 h-4' }) => (
);
/**
* Pi icon: the pi.dev logo (https://pi.dev/logo.svg), the same file as
* apps/marketing/public/assets/icon-pi.svg. It keeps its own three colours in
* every theme; the viewBox crops pi.dev's 800-unit canvas to the mark plus an
* even margin so it sits level with the other marks.
*/
export const PiIcon: React.FC<{ className?: string }> = ({ className = 'w-4 h-4' }) => (
);
/** OpenCode icon โ extracted from apps/marketing/public/assets/icon-opencode-dark.svg */
export const OpenCodeIcon: React.FC<{ className?: string }> = ({ className = 'w-4 h-4' }) => (
);
/** Generic fallback icon for unknown providers */
const GenericProviderIcon: React.FC<{ className?: string }> = ({ className = 'w-4 h-4' }) => (
);
/** "Ask this session": a speech bubble, since the answer comes from the agent session itself. */
const SessionIcon: React.FC<{ className?: string }> = ({ className = 'w-4 h-4' }) => (
);
/** Provider metadata: maps provider type name to display label and icon component. */
export const PROVIDER_META: Record }> = {
'claude-agent-sdk': { label: 'Claude', icon: ClaudeIcon },
'codex-sdk': { label: 'Codex', icon: CodexIcon },
'pi-sdk': { label: 'Pi', icon: PiIcon },
'opencode-sdk': { label: 'OpenCode', icon: OpenCodeIcon },
'session-bridge': { label: 'Ask this session', icon: SessionIcon },
};
/**
* Get provider metadata, with fallback for unknown providers. A server-sent
* `label` (e.g. "Ask this session ยท Pi") overrides the name lookup.
*/
export function getProviderMeta(providerName: string, label?: string): { label: string; icon: React.FC<{ className?: string }> } {
const meta = PROVIDER_META[providerName] ?? { label: providerName, icon: GenericProviderIcon };
return label ? { ...meta, label } : meta;
}