@keboola/agent-vocabulary
v0.1.1
Published
The vocabulary Kai's prompts teach the model and Keboola's renderers draw — icon names today, fence tags next
Readme
@keboola/agent-vocabulary
The vocabulary Keboola's agents are taught and Keboola's renderers draw.
A prompt tells the model it may write icon:table; a renderer has to know what
table looks like. Both halves live in different packages — often in different
repositories — so the list of legal names is published on its own, with zero
dependencies, and both halves import it.
Installation
npm install @keboola/agent-vocabulary
# or
pnpm add @keboola/agent-vocabularyUsage
Prompt side — tell the model exactly which names exist:
import { CHAT_INLINE_ICON_NAMES } from '@keboola/agent-vocabulary';
const promptFragment = `Available icons: ${CHAT_INLINE_ICON_NAMES.join(', ')}`;Renderer side — satisfies turns a missing glyph into a compile error:
import { type ChatInlineIconName, CHAT_INLINE_ICON_NAMES } from '@keboola/agent-vocabulary';
import { Table, Zap, type LucideIcon } from 'lucide-react';
const ICONS = {
table: Table,
zap: Zap,
// …one entry per name
} satisfies Record<ChatInlineIconName, LucideIcon>;Exports
| Export | What it is |
| ---------------------------- | ------------------------------------------------------------ |
| CHAT_INLINE_ICON_NAMES | Names legal in a chat answer's inline icon:<name> token |
| ChatInlineIconName | The union of those names |
| MERMAID_DIAGRAM_ICON_NAMES | Lucide names legal in a mermaid node's lucide:<name> shape |
| MermaidDiagramIconName | The union of those names |
The two lists are deliberately different vocabularies: chat names are
product-facing aliases (analytics, arrow-rotate-back), mermaid names are
Lucide's own (chart-line, undo-2).
Adding a name
- Add it to the list here and release.
- Add the matching glyph to every renderer —
satisfiesfails the build until you do.
Removing a name is the reverse order: teach the model to stop emitting it first, then drop the glyph.
