{"_id":"@boteai/a2ui-custom-kit","_rev":"6-239c82c36f09f4724254dfa613824d02","name":"@boteai/a2ui-custom-kit","dist-tags":{"latest":"0.0.3","beta":"0.0.2-beta.1"},"versions":{"0.0.1":{"name":"@boteai/a2ui-custom-kit","version":"0.0.1","keywords":["a2ui","custom-component","web-components"],"license":"MIT","_id":"@boteai/a2ui-custom-kit@0.0.1","maintainers":[{"name":"wujian666","email":"sunboyjian@126.com"}],"dist":{"shasum":"63c915fa38ece68a3a9b7aa39160ec8597e98215","tarball":"https://registry.npmjs.org/@boteai/a2ui-custom-kit/-/a2ui-custom-kit-0.0.1.tgz","fileCount":36,"integrity":"sha512-Vx0RzwyEFs9TcJU95/iIeurGTm6P0+yE3dV86QAcypKGx8ra+0Gg8qZTY0mD8uuKwr6nKk4fsC0FxfR8S3mAWA==","signatures":[{"sig":"MEYCIQDtUWpclqfnoxW7mFdMM5rzJqCTNReZadRmCL747NZB/gIhAIX/hh8d9y3T1SZ/0QQ3oNxvRDe+Jf9+gsPH0LPEKqgO","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":74287},"types":"dist/esm/index.d.ts","module":"dist/esm/index.js","authors":["wujian"],"exports":{".":{"types":"./dist/esm/index.d.ts","import":"./dist/esm/index.js","default":"./dist/esm/index.js"},"./react-runtime":{"types":"./dist/esm/react-runtime/index.d.ts","import":"./dist/esm/react-runtime/index.js","default":"./dist/esm/react-runtime/index.js"},"./remote-runtime":{"types":"./dist/esm/remote-runtime/index.d.ts","import":"./dist/esm/remote-runtime/index.js","default":"./dist/esm/remote-runtime/index.js"}},"gitHead":"fc602bb07a159e95804d4857057d8aab3345d2a8","scripts":{"dev":"father dev","build":"father build"},"_npmUser":{"name":"wujian666","email":"sunboyjian@126.com"},"_npmVersion":"10.9.3","description":"博特 A2UI 自定义组件开发框架与工具集","directories":{},"sideEffects":false,"_nodeVersion":"22.20.0","dependencies":{"zod":"^3.25.76","zod-to-json-schema":"^3.24.6"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"react":"17.x","father":"^4.4.5","react-dom":"17.x","@types/react":"^17.0.0","@types/react-dom":"^17.0.0"},"peerDependencies":{"react":"^17.x","react-dom":"^17.x"},"_npmOperationalInternal":{"tmp":"tmp/a2ui-custom-kit_0.0.1_1781255753576_0.6393254362514496","host":"s3://npm-registry-packages-npm-production"}},"0.0.1-beta.1":{"name":"@boteai/a2ui-custom-kit","version":"0.0.1-beta.1","keywords":["a2ui","custom-component","web-components"],"license":"MIT","_id":"@boteai/a2ui-custom-kit@0.0.1-beta.1","maintainers":[{"name":"wujian666","email":"sunboyjian@126.com"}],"dist":{"shasum":"ccaddf602904948ff708285ac00b936f23421b6d","tarball":"https://registry.npmjs.org/@boteai/a2ui-custom-kit/-/a2ui-custom-kit-0.0.1-beta.1.tgz","fileCount":38,"integrity":"sha512-EnuBIrQSp73COvFBQ4nnE9BQx1wpLUc5YXn38gM4K6JrnzdRNw5r0I2UzmzvZDsdGVMg8ygDzt85oYGMBZ1vnA==","signatures":[{"sig":"MEYCIQDiSXIVufrcbVQP/30mX/XWz2nfRlZNnH22ctDbHM/1+QIhALUbaN2nQ484O7c+Pjm6NmGzAIWoHkT2VnYpbWXIVrMN","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":84010},"types":"dist/esm/index.d.ts","module":"dist/esm/index.js","authors":["wujian"],"exports":{".":{"types":"./dist/esm/index.d.ts","import":"./dist/esm/index.js","default":"./dist/esm/index.js"},"./react-runtime":{"types":"./dist/esm/react-runtime/index.d.ts","import":"./dist/esm/react-runtime/index.js","default":"./dist/esm/react-runtime/index.js"},"./remote-runtime":{"types":"./dist/esm/remote-runtime/index.d.ts","import":"./dist/esm/remote-runtime/index.js","default":"./dist/esm/remote-runtime/index.js"}},"gitHead":"a8f8ae5deadaa901d2e2a1b6507a3e0e6d2ae7bb","scripts":{"dev":"father dev","build":"father build"},"_npmUser":{"name":"wujian666","email":"sunboyjian@126.com"},"_npmVersion":"10.9.3","description":"博特 A2UI 自定义组件开发框架与工具集","directories":{},"sideEffects":false,"_nodeVersion":"22.20.0","dependencies":{"zod":"^3.25.76","zod-to-json-schema":"^3.24.6"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"react":"17.x","father":"^4.4.5","react-dom":"17.x","@types/react":"^17.0.0","@types/react-dom":"^17.0.0"},"peerDependencies":{"react":"^17.x","react-dom":"^17.x"},"_npmOperationalInternal":{"tmp":"tmp/a2ui-custom-kit_0.0.1-beta.1_1781512236905_0.34247091034975385","host":"s3://npm-registry-packages-npm-production"}},"0.0.1-beta.2":{"name":"@boteai/a2ui-custom-kit","version":"0.0.1-beta.2","keywords":["a2ui","custom-component","web-components"],"license":"MIT","_id":"@boteai/a2ui-custom-kit@0.0.1-beta.2","maintainers":[{"name":"wujian666","email":"sunboyjian@126.com"}],"dist":{"shasum":"9007a921ea89b6a6f6077f9c072dff558bed1ea4","tarball":"https://registry.npmjs.org/@boteai/a2ui-custom-kit/-/a2ui-custom-kit-0.0.1-beta.2.tgz","fileCount":38,"integrity":"sha512-CLsCldBGGjhRub1avOYwEsuR0lE5QH3HHGv9rYylDECd8WNKO8g0Hvb2MRCXygvGj6sydGQ7paFMwyn44EQQSw==","signatures":[{"sig":"MEYCIQC8sHllNGvxzno3r8ZBQPy3qSQQ+UoiYoJAE38oR8ccmwIhAPrZCX0l0r0SfwZ6xs3DYm1wnJ82EeN1DM7pQmIDliwq","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":84294},"types":"dist/esm/index.d.ts","module":"dist/esm/index.js","authors":["wujian"],"exports":{".":{"types":"./dist/esm/index.d.ts","import":"./dist/esm/index.js","default":"./dist/esm/index.js"},"./react-runtime":{"types":"./dist/esm/react-runtime/index.d.ts","import":"./dist/esm/react-runtime/index.js","default":"./dist/esm/react-runtime/index.js"},"./remote-runtime":{"types":"./dist/esm/remote-runtime/index.d.ts","import":"./dist/esm/remote-runtime/index.js","default":"./dist/esm/remote-runtime/index.js"}},"gitHead":"87e7067353354821fb696aab6bb2e66c28a14dea","scripts":{"dev":"father dev","build":"father build"},"_npmUser":{"name":"wujian666","email":"sunboyjian@126.com"},"_npmVersion":"10.9.3","description":"博特 A2UI 自定义组件开发框架与工具集","directories":{},"sideEffects":false,"_nodeVersion":"22.20.0","dependencies":{"zod":"^3.25.76","zod-to-json-schema":"^3.24.6"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"react":"17.x","father":"^4.4.5","react-dom":"17.x","@types/react":"^17.0.0","@types/react-dom":"^17.0.0"},"peerDependencies":{"react":"^17.x","react-dom":"^17.x"},"_npmOperationalInternal":{"tmp":"tmp/a2ui-custom-kit_0.0.1-beta.2_1781573239680_0.41457193720054586","host":"s3://npm-registry-packages-npm-production"}},"0.0.2":{"name":"@boteai/a2ui-custom-kit","version":"0.0.2","keywords":["a2ui","custom-component","web-components"],"license":"MIT","_id":"@boteai/a2ui-custom-kit@0.0.2","maintainers":[{"name":"wujian666","email":"sunboyjian@126.com"}],"dist":{"shasum":"9b2a948606a6c229bc9326271187ecde4098a848","tarball":"https://registry.npmjs.org/@boteai/a2ui-custom-kit/-/a2ui-custom-kit-0.0.2.tgz","fileCount":38,"integrity":"sha512-tLgaCUFvimyvlUj8pLSDupoVsfh3KQQZUM4DrAC5DOur//hpbtaX2KgT0ydlr4hnvmQjvt4gWOl3tWpZ4rQZsQ==","signatures":[{"sig":"MEQCIH+MZSJoTW4/N+SuV9P8Qgl8egfiVwLL3zO5Ch5Y0EmvAiA2u3fInuhr9bkKctilixVGLejPyFHyg3XDinaRK59niA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":84287},"types":"dist/esm/index.d.ts","module":"dist/esm/index.js","authors":["wujian"],"exports":{".":{"types":"./dist/esm/index.d.ts","import":"./dist/esm/index.js","default":"./dist/esm/index.js"},"./react-runtime":{"types":"./dist/esm/react-runtime/index.d.ts","import":"./dist/esm/react-runtime/index.js","default":"./dist/esm/react-runtime/index.js"},"./remote-runtime":{"types":"./dist/esm/remote-runtime/index.d.ts","import":"./dist/esm/remote-runtime/index.js","default":"./dist/esm/remote-runtime/index.js"}},"gitHead":"a6be7ae9790122776c47636070458c6f18f885ab","scripts":{"dev":"father dev","build":"father build"},"_npmUser":{"name":"wujian666","email":"sunboyjian@126.com"},"_npmVersion":"10.9.3","description":"博特 A2UI 自定义组件开发框架与工具集","directories":{},"sideEffects":false,"_nodeVersion":"22.20.0","dependencies":{"zod":"^3.25.76","zod-to-json-schema":"^3.24.6"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"react":"17.x","father":"^4.4.5","react-dom":"17.x","@types/react":"^17.0.0","@types/react-dom":"^17.0.0"},"peerDependencies":{"react":"^17.x","react-dom":"^17.x"},"_npmOperationalInternal":{"tmp":"tmp/a2ui-custom-kit_0.0.2_1782819421864_0.1335525586787507","host":"s3://npm-registry-packages-npm-production"}},"0.0.2-beta.1":{"name":"@boteai/a2ui-custom-kit","version":"0.0.2-beta.1","keywords":["a2ui","custom-component","web-components"],"license":"MIT","_id":"@boteai/a2ui-custom-kit@0.0.2-beta.1","maintainers":[{"name":"wujian666","email":"sunboyjian@126.com"}],"dist":{"shasum":"c37a451bd646072416d7d06defd334d0150385ff","tarball":"https://registry.npmjs.org/@boteai/a2ui-custom-kit/-/a2ui-custom-kit-0.0.2-beta.1.tgz","fileCount":38,"integrity":"sha512-/+pz39mrsfFJnpq7fy2er/X/T15sZGwWErhGg82qJpN2sWAb7kj3yGjmkB7R5KZ5CtYlB/JH+T9vO6JtdI+eYA==","signatures":[{"sig":"MEUCIQCtBWVrx1iqcZgWPsd4W0imcCnhU95lIiv/tFzuQhLsWAIgVCbRLZTJKu0ikWwaIyBFS3iOkcv6cOQw4qfei2SDvVA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":84294},"types":"dist/esm/index.d.ts","module":"dist/esm/index.js","authors":["wujian"],"exports":{".":{"types":"./dist/esm/index.d.ts","import":"./dist/esm/index.js","default":"./dist/esm/index.js"},"./react-runtime":{"types":"./dist/esm/react-runtime/index.d.ts","import":"./dist/esm/react-runtime/index.js","default":"./dist/esm/react-runtime/index.js"},"./remote-runtime":{"types":"./dist/esm/remote-runtime/index.d.ts","import":"./dist/esm/remote-runtime/index.js","default":"./dist/esm/remote-runtime/index.js"}},"gitHead":"305fdc493eaec5cabcd4e658f769d1285e53dc83","scripts":{"dev":"father dev","build":"father build"},"_npmUser":{"name":"wujian666","email":"sunboyjian@126.com"},"_npmVersion":"10.9.3","description":"博特 A2UI 自定义组件开发框架与工具集","directories":{},"sideEffects":false,"_nodeVersion":"22.20.0","dependencies":{"zod":"^3.25.76","zod-to-json-schema":"^3.24.6"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"react":"17.x","father":"^4.4.5","react-dom":"17.x","@types/react":"^17.0.0","@types/react-dom":"^17.0.0"},"peerDependencies":{"react":"^17.x","react-dom":"^17.x"},"_npmOperationalInternal":{"tmp":"tmp/a2ui-custom-kit_0.0.2-beta.1_1786439201138_0.8543942972685614","host":"s3://npm-registry-packages-npm-production"}},"0.0.3":{"name":"@boteai/a2ui-custom-kit","version":"0.0.3","description":"博特 A2UI 自定义组件开发框架与工具集","module":"dist/esm/index.js","types":"dist/esm/index.d.ts","sideEffects":false,"exports":{".":{"types":"./dist/esm/index.d.ts","import":"./dist/esm/index.js","default":"./dist/esm/index.js"},"./remote-runtime":{"types":"./dist/esm/remote-runtime/index.d.ts","import":"./dist/esm/remote-runtime/index.js","default":"./dist/esm/remote-runtime/index.js"},"./react-runtime":{"types":"./dist/esm/react-runtime/index.d.ts","import":"./dist/esm/react-runtime/index.js","default":"./dist/esm/react-runtime/index.js"}},"scripts":{"dev":"father dev","build":"father build"},"keywords":["a2ui","custom-component","web-components"],"authors":["wujian"],"license":"MIT","publishConfig":{"access":"public"},"peerDependencies":{"react":"^17.x","react-dom":"^17.x"},"dependencies":{"zod":"^3.25.76","zod-to-json-schema":"^3.24.6"},"devDependencies":{"@types/react":"^17.0.0","@types/react-dom":"^17.0.0","father":"^4.4.5","react":"17.x","react-dom":"17.x"},"gitHead":"8eb3d365a67c3fe7ab9606aeed077053e1b40da4","_id":"@boteai/a2ui-custom-kit@0.0.3","_nodeVersion":"22.18.0","_npmVersion":"10.9.3","dist":{"integrity":"sha512-81C3tIfdYj9Ye0dk/hsd3ZTI+ck5P/LdhycWNroTt1AFxpOh9sY0nXbhrqtiWE9jFaBC2M5qoPP4W6a4OnAceA==","shasum":"b15c01577b5c4ae8c7c4c1c057e83f60b97d04e8","tarball":"https://registry.npmjs.org/@boteai/a2ui-custom-kit/-/a2ui-custom-kit-0.0.3.tgz","fileCount":38,"unpackedSize":84731,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIBOCLy7k9EuYwA4mGDsRcJamArqRAMDMJtiCzsLGMhtMAiAcz8aiBoDW6JHrqpsTCPx029RzJNFEl/TDBNqDjVn4xA=="}]},"_npmUser":{"name":"wujian666","email":"sunboyjian@126.com"},"directories":{},"maintainers":[{"name":"wujian666","email":"sunboyjian@126.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/a2ui-custom-kit_0.0.3_1789228108032_0.6132690855018827"},"_hasShrinkwrap":false}},"time":{"created":"2026-06-12T09:15:53.380Z","modified":"2026-09-12T15:48:28.322Z","0.0.1":"2026-06-12T09:15:53.691Z","0.0.1-beta.1":"2026-06-15T08:30:37.045Z","0.0.1-beta.2":"2026-06-16T01:27:19.817Z","0.0.2":"2026-06-30T11:37:02.006Z","0.0.2-beta.1":"2026-08-11T09:06:41.293Z","0.0.3":"2026-09-12T15:48:28.174Z"},"license":"MIT","keywords":["a2ui","custom-component","web-components"],"description":"博特 A2UI 自定义组件开发框架与工具集","maintainers":[{"name":"wujian666","email":"sunboyjian@126.com"}],"readme":"# @boteai/a2ui-custom-kit\r\n\r\n**仓库**：[github.com/BoteAI/a2ui](https://github.com/BoteAI/a2ui)\r\n\r\n## 这个包是做什么的\r\n\r\n**A2UI 自定义组件的开发工具集** — 帮你定义 props schema、实现 Web Component、构建注册表并打包为远程 ESM。\r\n\r\n| 职责 | 包 |\r\n|------|-----|\r\n| **渲染**协议界面、加载远程 URL | `@boteai/a2ui-render`（单独安装即可） |\r\n| **开发**自定义组件、产出注册表 / `.mjs` | `@boteai/a2ui-custom-kit`（可选） |\r\n\r\n渲染侧已内置 `remoteComponentUrls` 与 `loadRemoteA2UICustomRegistry`，**业务页面只渲染、不开发自定义组件时，不必安装本包**。\r\n\r\n---\r\n\r\n## 与 @boteai/a2ui-render 的关系\r\n\r\n```\r\n开发阶段                          运行阶段\r\n────────                          ────────\r\n@boteai/a2ui-custom-kit             @boteai/a2ui-render\r\n  defineComponentApi                BaseRenderer\r\n  createNativeElement /             ├─ customComponents（本地注册表）\r\n  createReactComponent              └─ remoteComponentUrls（CDN .mjs）\r\n  defineRegistryEntry\r\n  mergeRegistryEntries\r\n        │\r\n        └─ esbuild → public/*.mjs ──► remoteComponentUrls\r\n```\r\n\r\n- 本包**不依赖** `@boteai/a2ui-render`，可仅在组件工程 / monorepo 的 `a2ui-remote` 目录中使用。\r\n- **`A2UICustomComponentRegistry` 等类型**在本包与 `@boteai/a2ui-render` 中各自定义并对齐，**无需** `@boteai/types`。\r\n- 类型从对应包 import 即可：`import type { A2UICustomComponentRegistry } from '@boteai/a2ui-custom-kit'` 或 `'@boteai/a2ui-render'`。\r\n\r\n---\r\n\r\n## 什么时候需要安装\r\n\r\n| 场景 | 需要本包？ |\r\n|------|-----------|\r\n| 只渲染标准 A2UI + 远程 URL | 否，仅 `@boteai/a2ui-render` |\r\n| 在应用内写本地自定义组件 | 是 |\r\n| 打包独立 `.mjs` 供 CDN 部署 | 是 |\r\n| 合并多份本地注册表 | 是（`mergeRegistryEntries`） |\r\n\r\n---\r\n\r\n## 快速开始\r\n\r\n```bash\r\nyarn add @boteai/a2ui-custom-kit @boteai/a2ui-render\r\n```\r\n\r\n典型流程：\r\n\r\n1. **`api.ts`** — `defineComponentApi` 声明组件名与 Zod schema  \r\n2. **`element.ts(x)`** — `createNativeElement` 或 `createReactComponent` 实现  \r\n3. **`index.ts`** — `defineRegistryEntry` + `mergeRegistryEntries` 导出注册表  \r\n4. 传给 **`BaseRenderer`** 的 `customComponents`，或 `yarn build:a2ui` 产出 `.mjs` 后配置 `remoteComponentUrls`\r\n\r\n```ts\r\nimport {\r\n  defineComponentApi,\r\n  defineRegistryEntry,\r\n  mergeRegistryEntries,\r\n  createReactComponent,\r\n  DynString,\r\n} from '@boteai/a2ui-custom-kit';\r\n\r\n// … api + element 实现\r\n\r\nexport const a2uiRemoteRegistry = mergeRegistryEntries(\r\n  defineRegistryEntry(YourApi, YourElement),\r\n);\r\n```\r\n\r\n```tsx\r\nimport { BaseRenderer } from '@boteai/a2ui-render';\r\nimport { a2uiRemoteRegistry } from './your-remote-registry';\r\n\r\n<BaseRenderer\r\n  messages={messages}\r\n  protocolVersion=\"0.9\"\r\n  customComponents={a2uiRemoteRegistry}\r\n  onAction={handleAction}\r\n/>\r\n```\r\n\r\n或部署 `.mjs` 后仅传 URL（无需在本业务包引用 kit）：\r\n\r\n```tsx\r\n<BaseRenderer\r\n  remoteComponentUrls={['https://cdn.example.com/YourComponent.mjs']}\r\n  /* … */\r\n/>\r\n```\r\n\r\n---\r\n\r\n## 主要导出\r\n\r\n| 分类 | API |\r\n|------|-----|\r\n| Schema | `defineComponentApi`、`DynString`、`ActionSchema`、`DynamicValueSchema`、`componentApiToJsonSchema2019` |\r\n| 注册表 | `defineRegistryEntry`、`defineSimpleRegistryEntry`、`mergeRegistryEntries` |\r\n| 工厂 | `createNativeElement`、`createReactComponent` |\r\n| 运行时 | `readComponentProps`、`writeBoundValue`、`dispatchDeclaredAction`、`dispatchA2UIAction`、`ensureComponentStyles` 等 |\r\n| 类型 | `A2UICustomComponentRegistry`、`A2UICustomElementHost`、`ComponentApi` 等 |\r\n\r\n远程 ESM 打包子路径：\r\n\r\n| 入口 | 说明 |\r\n|------|------|\r\n| `@boteai/a2ui-custom-kit/remote-runtime` | 纯原生组件 bundle，不含 React |\r\n| `@boteai/a2ui-custom-kit/react-runtime` | 含 `createReactComponent` |\r\n\r\n`templates/` 目录提供可拷贝的组件模板。\r\n\r\n---\r\n\r\n## 文档\r\n\r\n- **完整开发指南与 API 参考**：[`app/public/docs/custom-components-guide.md`](../../app/public/docs/custom-components-guide.md)\r\n- **渲染器用法**：[`packages/a2ui-render/README.md`](../a2ui-render/README.md)\r\n","readmeFilename":"README.md"}