架构和 exports
这篇文档面向已经完成 quick start、并希望理解 A2UI stack 各部分职责边界的 开发者。
职责划分
包含内容
<A2UI>:all-in-one 组件。它拥有MessageProcessor,订阅开发者传入的MessageStore,并渲染最新的 surface。MessageStore:原始 protocol messages 的 append-only buffer。开发者可以从 fetch、SSE、WebSocket、in-process mock 等任意 IO 传输层写入 messages。defineCatalog、mergeCatalogs、serializeCatalog和defineFunction: catalog API。这里没有全局 component catalog;每个消费者都要显式组合自己 想开放的 component 和 function entries。catalog/<Name>:内置组件 renderers(Text、Image、Row、Column、List、Card、Modal、Button、Divider、Icon、CheckBox、ChoicePicker、DateTimeInput、LineChart、PieChart、RadioGroup、Slider、TextField和Tabs)。catalog/<Name>/catalog.json:用于 Agent handshake 的逐组件 JSON-Schema manifests。basicFunctions:A2UI v0.9 basic-catalog 的客户端 function entries,可以 直接展开到catalogs中。
Exports
@lynx-js/genui/a2ui:<A2UI>、createMessageStore、defineCatalog、内置组件、basic functions 和 protocol types。@lynx-js/genui/a2ui/catalog:catalog API 和内置组件的 re-export, 适合 tree-shake-friendly 的 subpath 访问。@lynx-js/genui/a2ui/catalog/<Name>:导入单个内置组件。@lynx-js/genui/a2ui/catalog/<Name>/catalog.json:导入单个组件的 manifest。@lynx-js/genui/a2ui/store:MessageStore、MessageProcessor、Resource、payload normalizers 等纯数据层能力。@lynx-js/genui/a2ui/react:自定义 catalog 组件会用到的 helper,包括NodeRenderer、useAction、useDataBinding和useChecks。@lynx-js/genui/a2ui/functions:basic-catalog function entries 和注册 helper。@lynx-js/genui/a2ui/styles/theme.css:可选的默认 CSS tokens,提供.a2ui-light和.a2ui-dark。
<A2UI> 生命周期说明
- 每次 mount 都拥有自己的
MessageProcessor。传入另一个messageStore实例 不会重置内部状态;如果你想开启新的 session/turn,请使用由 turn/session id 派生出的key。 onAction是 fire-and-forget。renderer 不等待响应;你的 Agent 把后续 messages 写回同一个MessageStore。className会加在 surface root view(surface-${surfaceId})上。wrapSurface会在渲染出的 surface 外面包一层。- 两者都可以用于多主题切换;选择与你的样式策略匹配的那一层。

