{"_id":"@ai37/copilotkit-chat-helpers","_rev":"5-687a073d9c59e61db0b428d69d232857","name":"@ai37/copilotkit-chat-helpers","dist-tags":{"latest":"0.4.0"},"versions":{"0.1.0":{"name":"@ai37/copilotkit-chat-helpers","version":"0.1.0","keywords":["copilotkit","a2ui","accordion","react","ai37"],"license":"Apache-2.0","_id":"@ai37/copilotkit-chat-helpers@0.1.0","maintainers":[{"name":"akjmto","email":"otmjka@gmail.com"},{"name":"cthtuf","email":"gdazeysinc@gmail.com"}],"homepage":"https://github.com/AI-37/copilotkit-md-renderer#readme","bugs":{"url":"https://github.com/AI-37/copilotkit-md-renderer/issues"},"dist":{"shasum":"2adae6f57f68b964f493c3a589af118fc697d394","tarball":"https://registry.npmjs.org/@ai37/copilotkit-chat-helpers/-/copilotkit-chat-helpers-0.1.0.tgz","fileCount":19,"integrity":"sha512-tyFIiCtxbV4NrCXPmZSFIG5kDTO1TT+phmHSZ7iHh8GRivuFb9KORB4si1NwQpHX1Oo/9ip6qhQ/I6P+oULSYA==","signatures":[{"sig":"MEYCIQCS3KJE/Wz12nu47/44NPuIkY8cWT0fEW3DkRbl7xkudgIhAN467hSUD8CnmSiMFraD0aLOK8haTfMV80KFs8v/UxJT","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":25937},"main":"dist/index.js","type":"module","_from":"file:ai37-copilotkit-chat-helpers-0.1.0.tgz","types":"dist/index.d.ts","engines":{"node":">=22.0.0"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"scripts":{"build":"tsc -p tsconfig.json","typecheck":"tsc -p tsconfig.json --noEmit"},"_npmUser":{"name":"akjmto","email":"otmjka@gmail.com"},"_resolved":"/private/var/folders/3c/kc47_fpj6sngrh4f4gz9g40c0000gn/T/f974c2ed44b95bc81a2022cf1e7a7a0f/ai37-copilotkit-chat-helpers-0.1.0.tgz","_integrity":"sha512-tyFIiCtxbV4NrCXPmZSFIG5kDTO1TT+phmHSZ7iHh8GRivuFb9KORB4si1NwQpHX1Oo/9ip6qhQ/I6P+oULSYA==","repository":{"url":"git+https://github.com/AI-37/copilotkit-md-renderer.git","type":"git","directory":"packages/copilotkit-chat-helpers"},"_npmVersion":"11.3.0","description":"CopilotKit v2 chat helpers: accordion wrapper for A2UI activity message renderers (one form open at a time).","directories":{},"sideEffects":false,"_nodeVersion":"22.14.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"react":"^19.2.0","typescript":"^5.9.0","@types/react":"^19.2.17"},"peerDependencies":{"react":"^18.0.0 || ^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/copilotkit-chat-helpers_0.1.0_1782986931350_0.32296278748840823","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@ai37/copilotkit-chat-helpers","version":"0.2.0","keywords":["copilotkit","a2ui","accordion","react","ai37"],"license":"Apache-2.0","_id":"@ai37/copilotkit-chat-helpers@0.2.0","maintainers":[{"name":"akjmto","email":"otmjka@gmail.com"},{"name":"cthtuf","email":"gdazeysinc@gmail.com"}],"homepage":"https://github.com/AI-37/copilotkit-md-renderer#readme","bugs":{"url":"https://github.com/AI-37/copilotkit-md-renderer/issues"},"dist":{"shasum":"3188cc8aa579a2695d1d75fc66a2aa30754b6cef","tarball":"https://registry.npmjs.org/@ai37/copilotkit-chat-helpers/-/copilotkit-chat-helpers-0.2.0.tgz","fileCount":19,"integrity":"sha512-r4d9Q7bvX7FQlNklSjpSVTZ1yx97R++TD8FBZ2r+7XVrakFSTmJ0bCdIbLi41o7NxGVZF5iKMRGzxygl9Jjnew==","signatures":[{"sig":"MEUCIB5mUddiL+7eTksMylmkfx+H32Cpphv9r0ARFMxWNvLyAiEAvrszMo0RP405XeYnBO83nuNFzgfp81Gu8AO0/VFbkQM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":28874},"main":"dist/index.js","type":"module","_from":"file:ai37-copilotkit-chat-helpers-0.2.0.tgz","types":"dist/index.d.ts","engines":{"node":">=22.0.0"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"scripts":{"build":"tsc -p tsconfig.json","typecheck":"tsc -p tsconfig.json --noEmit"},"_npmUser":{"name":"akjmto","email":"otmjka@gmail.com"},"_resolved":"/private/var/folders/3c/kc47_fpj6sngrh4f4gz9g40c0000gn/T/3990bfb1cbb8625488515aec4e5e634c/ai37-copilotkit-chat-helpers-0.2.0.tgz","_integrity":"sha512-r4d9Q7bvX7FQlNklSjpSVTZ1yx97R++TD8FBZ2r+7XVrakFSTmJ0bCdIbLi41o7NxGVZF5iKMRGzxygl9Jjnew==","repository":{"url":"git+https://github.com/AI-37/copilotkit-md-renderer.git","type":"git","directory":"packages/copilotkit-chat-helpers"},"_npmVersion":"11.3.0","description":"CopilotKit v2 chat helpers: accordion wrapper for A2UI activity message renderers (one form open at a time).","directories":{},"sideEffects":false,"_nodeVersion":"22.14.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"react":"^19.2.0","typescript":"^5.9.0","@types/react":"^19.2.17"},"peerDependencies":{"react":"^18.0.0 || ^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/copilotkit-chat-helpers_0.2.0_1782988938442_0.3505947292238436","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@ai37/copilotkit-chat-helpers","version":"0.3.0","keywords":["copilotkit","a2ui","accordion","react","ai37"],"license":"Apache-2.0","_id":"@ai37/copilotkit-chat-helpers@0.3.0","maintainers":[{"name":"akjmto","email":"otmjka@gmail.com"},{"name":"shtep","email":"shtep@list.ru"},{"name":"cthtuf","email":"gdazeysinc@gmail.com"}],"homepage":"https://github.com/AI-37/copilotkit-md-renderer#readme","bugs":{"url":"https://github.com/AI-37/copilotkit-md-renderer/issues"},"dist":{"shasum":"b6f540d41d7e2650b31d6eda209f220a6901d32c","tarball":"https://registry.npmjs.org/@ai37/copilotkit-chat-helpers/-/copilotkit-chat-helpers-0.3.0.tgz","fileCount":27,"integrity":"sha512-hKA4sohTi04hU8jWf2VWgmKbDosxxt2u/mquXDl2s37dZcz+s+jJfVDs8MzLZhBvXtnKDV4b36chN28NnbzSWQ==","signatures":[{"sig":"MEYCIQC5XkHn9iGzjekHPEBvbBsEnKaIj0/LF4GzUN4GZx/LfQIhALfmp0iHs/RpUdyQNp4KQnktto341CsmxsBErgz8SiSM","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34977},"main":"dist/index.js","type":"module","_from":"file:ai37-copilotkit-chat-helpers-0.3.0.tgz","types":"dist/index.d.ts","engines":{"node":">=22.0.0"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"scripts":{"build":"tsc -p tsconfig.json","typecheck":"tsc -p tsconfig.json --noEmit"},"_npmUser":{"name":"akjmto","email":"otmjka@gmail.com"},"_resolved":"/private/var/folders/3c/kc47_fpj6sngrh4f4gz9g40c0000gn/T/06725516e39caf8d85c20bc6c0d61701/ai37-copilotkit-chat-helpers-0.3.0.tgz","_integrity":"sha512-hKA4sohTi04hU8jWf2VWgmKbDosxxt2u/mquXDl2s37dZcz+s+jJfVDs8MzLZhBvXtnKDV4b36chN28NnbzSWQ==","repository":{"url":"git+https://github.com/AI-37/copilotkit-md-renderer.git","type":"git","directory":"packages/copilotkit-chat-helpers"},"_npmVersion":"11.3.0","description":"CopilotKit v2 chat helpers: accordion wrapper for A2UI activity message renderers (one form open at a time).","directories":{},"sideEffects":false,"_nodeVersion":"22.14.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"react":"^19.2.0","typescript":"^5.9.0","@types/react":"^19.2.17"},"peerDependencies":{"react":"^18.0.0 || ^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/copilotkit-chat-helpers_0.3.0_1783850792659_0.15216704897759548","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"@ai37/copilotkit-chat-helpers","version":"0.4.0","description":"CopilotKit v2 chat helpers: accordion wrapper for A2UI activity message renderers (one form open at a time).","license":"Apache-2.0","type":"module","sideEffects":false,"main":"dist/index.js","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"keywords":["copilotkit","a2ui","accordion","react","ai37"],"repository":{"type":"git","url":"git+https://github.com/AI-37/copilotkit-md-renderer.git","directory":"packages/copilotkit-chat-helpers"},"homepage":"https://github.com/AI-37/copilotkit-md-renderer#readme","bugs":{"url":"https://github.com/AI-37/copilotkit-md-renderer/issues"},"engines":{"node":">=22.0.0"},"publishConfig":{"access":"public"},"peerDependencies":{"react":"^18.0.0 || ^19.0.0"},"devDependencies":{"@types/react":"^19.2.17","react":"^19.2.0","typescript":"^5.9.0"},"scripts":{"build":"tsc -p tsconfig.json","typecheck":"tsc -p tsconfig.json --noEmit"},"_id":"@ai37/copilotkit-chat-helpers@0.4.0","_integrity":"sha512-0InKHWtPZYQ12UxGT92APIjLbHMQ8bGTD/n9Grfzx4SjElys9Al9+ZbIhkJBlr7rbeDau04+5PP3yhVjoA39Ag==","_resolved":"/private/var/folders/3c/kc47_fpj6sngrh4f4gz9g40c0000gn/T/bf26ec819e6306b8822b3d2d5820f363/ai37-copilotkit-chat-helpers-0.4.0.tgz","_from":"file:ai37-copilotkit-chat-helpers-0.4.0.tgz","_nodeVersion":"22.14.0","_npmVersion":"11.3.0","dist":{"integrity":"sha512-0InKHWtPZYQ12UxGT92APIjLbHMQ8bGTD/n9Grfzx4SjElys9Al9+ZbIhkJBlr7rbeDau04+5PP3yhVjoA39Ag==","shasum":"1008801a65b6da4b6fb36c4f647d82d731b60117","tarball":"https://registry.npmjs.org/@ai37/copilotkit-chat-helpers/-/copilotkit-chat-helpers-0.4.0.tgz","fileCount":31,"unpackedSize":49935,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIDysg7kvJhYgMu++MpypNzsubgPogCbmtLvTlNAnNtgwAiA9zD2NOdC/nShDeww7F5NrhVG54zlrOKt7j/Tb7FRqTg=="}]},"_npmUser":{"name":"akjmto","email":"otmjka@gmail.com"},"directories":{},"maintainers":[{"name":"akjmto","email":"otmjka@gmail.com"},{"name":"shtep","email":"shtep@list.ru"},{"name":"cthtuf","email":"gdazeysinc@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/copilotkit-chat-helpers_0.4.0_1786040608680_0.7311342977732254"},"_hasShrinkwrap":false}},"time":{"created":"2026-07-02T10:08:51.152Z","modified":"2026-08-06T18:23:28.998Z","0.1.0":"2026-07-02T10:08:51.489Z","0.2.0":"2026-07-02T10:42:18.635Z","0.3.0":"2026-07-12T10:06:32.826Z","0.4.0":"2026-08-06T18:23:28.817Z"},"bugs":{"url":"https://github.com/AI-37/copilotkit-md-renderer/issues"},"license":"Apache-2.0","homepage":"https://github.com/AI-37/copilotkit-md-renderer#readme","keywords":["copilotkit","a2ui","accordion","react","ai37"],"repository":{"type":"git","url":"git+https://github.com/AI-37/copilotkit-md-renderer.git","directory":"packages/copilotkit-chat-helpers"},"description":"CopilotKit v2 chat helpers: accordion wrapper for A2UI activity message renderers (one form open at a time).","maintainers":[{"name":"akjmto","email":"otmjka@gmail.com"},{"name":"shtep","email":"shtep@list.ru"},{"name":"cthtuf","email":"gdazeysinc@gmail.com"}],"readme":"# @ai37/copilotkit-chat-helpers\n\nХелперы чат-уровня для CopilotKit v2: заворачивание A2UI-форм (activity-сообщений)\nв сворачиваемый аккордеон (во всём чате развёрнута максимум одна форма, последняя\nпришедшая открыта) и сворачивание длинных сообщений пользователя до ~6 строк\n(как в ChatGPT).\n\nПакет CopilotKit-agnostic: обёртка типизирована структурно\n(`{ render: ComponentType }`), зависимость только peer `react`.\n\n## Установка\n\n```bash\nnpm i @ai37/copilotkit-chat-helpers\n```\n\n## Требования к консюмеру\n\n1. **Tailwind CSS + shadcn-токены.** `CollapsibleForm` стилизован Tailwind-утилитами\n   (`border-border`, `px-3 py-2`, …); токен `--border` должен быть определён в теме\n   приложения (shadcn-стиль).\n2. **Скан пакета Tailwind-билдом.** Tailwind по умолчанию не сканирует\n   `node_modules` — без этого классы выпадут из билда. Tailwind v4 (в css):\n\n   ```css\n   @source \"../node_modules/@ai37/copilotkit-chat-helpers\";\n   ```\n\n## Использование\n\n```tsx\nimport {\n  CopilotKitProvider,\n  createA2UIMessageRenderer,\n} from \"@copilotkit/react-core/v2\"\nimport {\n  FormAccordionProvider,\n  createCollapsibleA2uiRenderer,\n} from \"@ai37/copilotkit-chat-helpers\"\n\nconst a2uiRenderer = createA2UIMessageRenderer({ theme, catalog })\n\n// Стабильная ссылка — CopilotKit требует не пересоздавать массив на каждом рендере.\nconst renderActivityMessages = [createCollapsibleA2uiRenderer(a2uiRenderer)]\n\nexport function Providers({ children }) {\n  return (\n    <CopilotKitProvider renderActivityMessages={renderActivityMessages}>\n      <FormAccordionProvider>{children}</FormAccordionProvider>\n    </CopilotKitProvider>\n  )\n}\n```\n\n## API\n\n- `createCollapsibleA2uiRenderer(base, options?)` — оборачивает renderer из\n  `createA2UIMessageRenderer`: переопределяет только `render` (обёртка в\n  `CollapsibleForm` по `message.id`), `activityType`/`content` наследуются.\n  Заголовок аккордеона берётся из данных агента: title первого компонента в\n  операциях A2UI (у FormCard/ChoiceCard обязателен по схеме каталога). Пока\n  операций нет (стрим) или title отсутствует — фолбэк `options.title`\n  (по умолчанию `\"Форма\"`).\n- `extractA2uiTitle(operations)` — сам извлекатель заголовка из операций A2UI\n  v0.9 (`content.a2ui_operations`); `undefined`, если titled-компонента нет.\n- `FormAccordionProvider` / `useFormAccordion` — стейт аккордеона\n  (`openId`/`register`/`toggle`): новая форма открывается, прежние сворачиваются;\n  ручной toggle переживает перерендер.\n- `CollapsibleForm` — сворачиваемая обёртка (можно использовать напрямую вне\n  A2UI-сценария).\n- `createCollapsibleUserMessageRenderer(options)` — фабрика messageRenderer для\n  слота `chatView.messageView.userMessage`: сообщения пользователя выше порога\n  (`collapsedMaxHeightPx`, по умолчанию 192px ≈ 6 строк, + гистерезис\n  `hysteresisPx` 42px ≈ 1.5 строки) клипаются `max-height` с alpha-маской и\n  кнопкой «Развернуть»/«Свернуть» (`aria-expanded`; лейблы настраиваются).\n  Контент остаётся в DOM (Cmd+F, выделение); порог в px, не в символах —\n  пересчитывается по `scrollHeight` через `ResizeObserver` при ресайзе.\n  Дефолтный рендерер пузыря передаётся опцией `messageRenderer`\n  (обычно `CopilotChatUserMessage.MessageRenderer`) — CopilotKit не в\n  зависимостях пакета:\n\n  ```tsx\n  import { CopilotChatUserMessage } from \"@copilotkit/react-core/v2\"\n  import { createCollapsibleUserMessageRenderer } from \"@ai37/copilotkit-chat-helpers\"\n\n  const CollapsibleUserMessage = createCollapsibleUserMessageRenderer({\n    messageRenderer: CopilotChatUserMessage.MessageRenderer,\n  })\n\n  // <CopilotChat chatView={{ messageView: { userMessage: { messageRenderer: CollapsibleUserMessage } } }} />\n  ```\n","readmeFilename":"README.md"}