import { LabIcon } from '@jupyterlab/ui-components';
/**
* Brand icons for the agent launcher cards. Most marks are taken verbatim
* from `jupyter-ai-contrib/jupyter-ai-acp-client`
* (`jupyter_ai_acp_client/static/*.svg`, BSD-3-Clause); Antigravity post-dates
* that set, so its mark is the official glyph from `@lobehub/icons-static-svg`
* (MIT) — we ship the brand-colored `antigravity-color` variant so Antigravity
* reads as a multi-color Google mark. Small adjustments are applied
* to play nicely with JupyterLab themes:
* - Monochrome marks (Codex, Copilot, Goose) use `currentColor` so they
* inherit the surrounding launcher card's text color rather than
* hard-coding black, which disappears on the dark theme.
* - The Goose mark upstream is rendered on a white rounded rect; we drop
* the rect so the silhouette can sit on the launcher card directly.
* - SVG ids that would collide if two copies of the same artwork ended up
* on the page (gradient/mask/filter defs) are namespaced under
* `xtralab-…`.
*
* Brand-colored icons (Antigravity, Claude, Kiro, Mistral Vibe, OpenCode) keep
* their upstream colors; the dark/light contrast of the launcher card behind
* them is the same as on `jupyter-ai-acp-client`.
*
* The Vim and Neovim marks belong to the launcher's "Open" editor tile rather
* than the agent grid. They are the brand silhouettes from Simple Icons
* (https://simpleicons.org, CC0), each filled with its brand green so the mark
* reads on both the light and dark themes.
*/
const antigravityIcon = new LabIcon({
name: 'xtralab:agent-antigravity',
svgstr: ``
});
const claudeIcon = new LabIcon({
name: 'xtralab:agent-claude',
svgstr: ``
});
const codexIcon = new LabIcon({
name: 'xtralab:agent-codex',
svgstr: ``
});
const copilotIcon = new LabIcon({
name: 'xtralab:agent-copilot',
svgstr: ``
});
const gooseIcon = new LabIcon({
name: 'xtralab:agent-goose',
svgstr: ``
});
const kiroIcon = new LabIcon({
name: 'xtralab:agent-kiro',
svgstr: ``
});
const mistralVibeIcon = new LabIcon({
name: 'xtralab:agent-mistral-vibe',
svgstr: ``
});
const opencodeIcon = new LabIcon({
name: 'xtralab:agent-opencode',
svgstr: ``
});
const neovimIcon = new LabIcon({
name: 'xtralab:editor-neovim',
svgstr: ``
});
const vimIcon = new LabIcon({
name: 'xtralab:editor-vim',
svgstr: ``
});
/**
* Built-in icons keyed by the agent's id, used to resolve the icon for an
* agent declared without an inline `iconSvg` override (i.e. one of xtralab's
* defaults). Custom agents added via settings can either supply their own
* `iconSvg` or fall back to the generic terminal icon.
*/
export const BUILTIN_AGENT_ICONS: Record = {
antigravity: antigravityIcon,
claude: claudeIcon,
codex: codexIcon,
copilot: copilotIcon,
goose: gooseIcon,
kiro: kiroIcon,
'mistral-vibe': mistralVibeIcon,
opencode: opencodeIcon
};
/**
* Built-in icons keyed by the editor's id, used to resolve the icon for a
* built-in editor (Neovim, Vim) declared without an inline `iconSvg`. Custom
* editors added via settings can supply their own `iconSvg` or fall back to
* the generic text-editor icon.
*/
export const BUILTIN_EDITOR_ICONS: Record = {
nvim: neovimIcon,
vim: vimIcon
};