Licence
Apache-2.0
Version
0.3.0
Deps
0
Size
34 kB
Vulns
0
Weekly
0
@ai37/copilotkit-chat-helpers
Хелперы чат-уровня для CopilotKit v2: заворачивание A2UI-форм (activity-сообщений) в сворачиваемый аккордеон — во всём чате развёрнута максимум одна форма, последняя пришедшая открыта.
Пакет CopilotKit-agnostic: обёртка типизирована структурно
({ render: ComponentType }), зависимость только peer react.
Установка
npm i @ai37/copilotkit-chat-helpers
Требования к консюмеру
Tailwind CSS + shadcn-токены.
CollapsibleFormстилизован Tailwind-утилитами (border-border,px-3 py-2, …); токен--borderдолжен быть определён в теме приложения (shadcn-стиль).Скан пакета Tailwind-билдом. Tailwind по умолчанию не сканирует
node_modules— без этого классы выпадут из билда. Tailwind v4 (в css):@source "../node_modules/@ai37/copilotkit-chat-helpers";
Использование
import {
CopilotKitProvider,
createA2UIMessageRenderer,
} from "@copilotkit/react-core/v2"
import {
FormAccordionProvider,
createCollapsibleA2uiRenderer,
} from "@ai37/copilotkit-chat-helpers"
const a2uiRenderer = createA2UIMessageRenderer({ theme, catalog })
// Стабильная ссылка — CopilotKit требует не пересоздавать массив на каждом рендере.
const renderActivityMessages = [createCollapsibleA2uiRenderer(a2uiRenderer)]
export function Providers({ children }) {
return (
<CopilotKitProvider renderActivityMessages={renderActivityMessages}>
<FormAccordionProvider>{children}</FormAccordionProvider>
</CopilotKitProvider>
)
}
API
createCollapsibleA2uiRenderer(base, options?)— оборачивает renderer изcreateA2UIMessageRenderer: переопределяет толькоrender(обёртка вCollapsibleFormпоmessage.id),activityType/contentнаследуются. Заголовок аккордеона берётся из данных агента: title первого компонента в операциях A2UI (у FormCard/ChoiceCard обязателен по схеме каталога). Пока операций нет (стрим) или title отсутствует — фолбэкoptions.title(по умолчанию"Форма").extractA2uiTitle(operations)— сам извлекатель заголовка из операций A2UI v0.9 (content.a2ui_operations);undefined, если titled-компонента нет.FormAccordionProvider/useFormAccordion— стейт аккордеона (openId/register/toggle): новая форма открывается, прежние сворачиваются; ручной toggle переживает перерендер.CollapsibleForm— сворачиваемая обёртка (можно использовать напрямую вне A2UI-сценария).