@tdesign-react/chat 1.0.2-alpha.13 → 1.0.2-alpha.15
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/es/_util/reactify.js +1 -1
- package/es/_util/useDynamicStyle.js +1 -1
- package/es/attachments/index.js +1 -1
- package/es/chat-actionbar/index.js +1 -1
- package/es/chat-engine/components/a2ui/A2UIActivityRenderer.d.ts +110 -5
- package/es/chat-engine/components/a2ui/A2UIActivityRenderer.js +84 -19
- package/es/chat-engine/components/a2ui/A2UIActivityRenderer.js.map +1 -1
- package/es/chat-engine/components/a2ui/A2UIComponentRenderer.js +1 -1
- package/es/chat-engine/components/a2ui/A2UIErrorBoundary.js +1 -1
- package/es/chat-engine/components/a2ui/A2UISkeleton.js +1 -1
- package/es/chat-engine/components/a2ui/A2UISurfaceRenderer.js +1 -1
- package/es/chat-engine/components/a2ui/containers/A2UICard.js +1 -1
- package/es/chat-engine/components/a2ui/containers/A2UIColumn.js +1 -1
- package/es/chat-engine/components/a2ui/containers/A2UIList.js +1 -1
- package/es/chat-engine/components/a2ui/containers/A2UIRow.js +1 -1
- package/es/chat-engine/components/a2ui/containers/A2UITabs.js +1 -1
- package/es/chat-engine/components/a2ui/containers/index.js +1 -1
- package/es/chat-engine/components/a2ui/index.d.ts +1 -1
- package/es/chat-engine/components/a2ui/index.js +4 -2
- package/es/chat-engine/components/a2ui/index.js.map +1 -1
- package/es/chat-engine/components/a2ui/primitives/A2UIButton.d.ts +2 -0
- package/es/chat-engine/components/a2ui/primitives/A2UIButton.js +12 -8
- package/es/chat-engine/components/a2ui/primitives/A2UIButton.js.map +1 -1
- package/es/chat-engine/components/a2ui/primitives/A2UICheckBox.js +1 -1
- package/es/chat-engine/components/a2ui/primitives/A2UICheckboxGroup.js +1 -1
- package/es/chat-engine/components/a2ui/primitives/A2UIChoicePicker.js +1 -1
- package/es/chat-engine/components/a2ui/primitives/A2UIDivider.js +1 -1
- package/es/chat-engine/components/a2ui/primitives/A2UIIcon.js +1 -1
- package/es/chat-engine/components/a2ui/primitives/A2UIImage.js +1 -1
- package/es/chat-engine/components/a2ui/primitives/A2UIInput.js +1 -1
- package/es/chat-engine/components/a2ui/primitives/A2UIRadioGroup.js +1 -1
- package/es/chat-engine/components/a2ui/primitives/A2UISlider.js +1 -1
- package/es/chat-engine/components/a2ui/primitives/A2UIText.js +1 -1
- package/es/chat-engine/components/a2ui/primitives/A2UITextField.js +1 -1
- package/es/chat-engine/components/a2ui/primitives/index.js +1 -1
- package/es/chat-engine/components/a2ui/registry.js +1 -1
- package/es/chat-engine/components/activity/index.js +1 -1
- package/es/chat-engine/components/activity/registry.js +1 -1
- package/es/chat-engine/components/activity/render.js +1 -1
- package/es/chat-engine/components/activity/types.js +1 -1
- package/es/chat-engine/components/index.js +1 -1
- package/es/chat-engine/components/provider/agent-state.js +1 -1
- package/es/chat-engine/components/toolcall/index.js +1 -1
- package/es/chat-engine/components/toolcall/registry.js +1 -1
- package/es/chat-engine/components/toolcall/render.js +1 -1
- package/es/chat-engine/components/toolcall/types.js +1 -1
- package/es/chat-engine/core/a2ui/index.js +1 -1
- package/es/chat-engine/core/a2ui/processor/A2uiMessageProcessor.js +1 -1
- package/es/chat-engine/core/a2ui/processor/ComponentTree.js +1 -1
- package/es/chat-engine/core/a2ui/processor/DataStore.js +1 -1
- package/es/chat-engine/core/a2ui/processor/PathResolver.js +1 -1
- package/es/chat-engine/core/a2ui/types/index.js +1 -1
- package/es/chat-engine/core/a2ui/types/types.d.ts +2 -1
- package/es/chat-engine/core/a2ui/types/types.js +1 -1
- package/es/chat-engine/core/a2ui/types/types.js.map +1 -1
- package/es/chat-engine/core/a2ui/utils/binding.js +1 -1
- package/es/chat-engine/core/a2ui/utils/index.js +1 -1
- package/es/chat-engine/core/a2ui/utils/validation.js +1 -1
- package/es/chat-engine/core/adapters/agui/event-mapper.d.ts +34 -2
- package/es/chat-engine/core/adapters/agui/event-mapper.js +69 -20
- package/es/chat-engine/core/adapters/agui/event-mapper.js.map +1 -1
- package/es/chat-engine/core/adapters/agui/events.js +1 -1
- package/es/chat-engine/core/adapters/agui/index.d.ts +1 -1
- package/es/chat-engine/core/adapters/agui/index.js +2 -2
- package/es/chat-engine/core/adapters/agui/index.js.map +1 -1
- package/es/chat-engine/core/adapters/agui/state-manager.js +1 -1
- package/es/chat-engine/core/adapters/agui/types.js +1 -1
- package/es/chat-engine/core/adapters/agui/utils.d.ts +2 -1
- package/es/chat-engine/core/adapters/agui/utils.js +10 -2
- package/es/chat-engine/core/adapters/agui/utils.js.map +1 -1
- package/es/chat-engine/core/event-bus/ChatEventBus.js +1 -1
- package/es/chat-engine/core/event-bus/index.js +1 -1
- package/es/chat-engine/core/event-bus/types.js +1 -1
- package/es/chat-engine/core/index.js +2 -2
- package/es/chat-engine/core/index.js.map +1 -1
- package/es/chat-engine/core/processor/index.js +1 -1
- package/es/chat-engine/core/server/batch-client.js +1 -1
- package/es/chat-engine/core/server/connection-manager.js +1 -1
- package/es/chat-engine/core/server/errors.js +1 -1
- package/es/chat-engine/core/server/index.js +1 -1
- package/es/chat-engine/core/server/llm-service.js +1 -1
- package/es/chat-engine/core/server/sse-client.js +1 -1
- package/es/chat-engine/core/server/sse-parser.js +1 -1
- package/es/chat-engine/core/server/types.js +1 -1
- package/es/chat-engine/core/store/message.js +2 -2
- package/es/chat-engine/core/store/message.js.map +1 -1
- package/es/chat-engine/core/store/model.js +1 -1
- package/es/chat-engine/core/store/reactiveState.js +1 -1
- package/es/chat-engine/core/type.js +1 -1
- package/es/chat-engine/core/utils/eventEmitter.js +1 -1
- package/es/chat-engine/core/utils/index.js +1 -1
- package/es/chat-engine/core/utils/logger.js +1 -1
- package/es/chat-engine/hooks/a2ui/A2UIContext.js +1 -1
- package/es/chat-engine/hooks/a2ui/index.d.ts +9 -4
- package/es/chat-engine/hooks/a2ui/index.js +5 -5
- package/es/chat-engine/hooks/a2ui/useA2UIAction.js +1 -1
- package/es/chat-engine/hooks/a2ui/useA2UISurface.js +1 -1
- package/es/chat-engine/hooks/a2ui/useDataBinding.js +1 -1
- package/es/chat-engine/hooks/index.js +1 -1
- package/es/chat-engine/hooks/useAgentActivity.js +1 -1
- package/es/chat-engine/hooks/useAgentState.js +1 -1
- package/es/chat-engine/hooks/useAgentToolcall.js +1 -1
- package/es/chat-engine/hooks/useChat.d.ts +1 -1
- package/es/chat-engine/hooks/useChat.js +1 -1
- package/es/chat-engine/hooks/useChat.js.map +1 -1
- package/es/chat-engine/index.js +1 -1
- package/es/chat-filecard/index.js +1 -1
- package/es/chat-loading/index.js +1 -1
- package/es/chat-markdown/index.js +1 -1
- package/es/chat-message/index.js +1 -1
- package/es/chat-sender/index.js +1 -1
- package/es/chat-thinking/index.js +1 -1
- package/es/chatbot/index.js +1 -1
- package/es/index.js +1 -1
- package/es/style/index.js +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"A2UIButton.js","sources":["../../../../../../pro-components/chat/chat-engine/components/a2ui/primitives/A2UIButton.tsx"],"sourcesContent":["/**\n * A2UI Button 组件\n * 复用 TDesign Button,支持 A2UI v0.9 child 模式\n */\n\nimport React from 'react';\nimport { Button } from 'tdesign-react';\nimport { useDataBinding } from '../../../hooks/a2ui/useDataBinding';\nimport {
|
|
1
|
+
{"version":3,"file":"A2UIButton.js","sources":["../../../../../../pro-components/chat/chat-engine/components/a2ui/primitives/A2UIButton.tsx"],"sourcesContent":["/**\n * A2UI Button 组件\n * 复用 TDesign Button,支持 A2UI v0.9 child 模式\n */\n\nimport React, { useCallback } from 'react';\nimport { Button } from 'tdesign-react';\nimport { useDataBinding } from '../../../hooks/a2ui/useDataBinding';\nimport { useA2UIAction } from '../../../hooks/a2ui/useA2UIAction';\nimport { A2UIComponentRenderer } from '../A2UIComponentRenderer';\nimport type { A2UIAction, Bindable, ResolvedComponent } from '../../../core/a2ui';\n\ntype ButtonTheme = 'default' | 'primary' | 'danger' | 'warning' | 'success';\ntype ButtonVariant = 'base' | 'outline' | 'dashed' | 'text';\n\nexport interface A2UIButtonProps {\n id?: string;\n /** A2UI v0.9: child 是内容组件 ID(已解析为 resolvedChildren) */\n child?: string;\n /** 解析后的子组件(由 ComponentRenderer 传入) */\n resolvedChildren?: ResolvedComponent[];\n /** A2UI v0.9: primary 属性 */\n primary?: boolean;\n /** A2UI v0.9: text 属性(标准) */\n text?: Bindable<string>;\n /** Action 定义 */\n action?: A2UIAction;\n disabled?: Bindable<boolean>;\n loading?: Bindable<boolean>;\n /** TDesign 扩展属性 */\n theme?: Bindable<ButtonTheme>;\n variant?: Bindable<ButtonVariant>;\n size?: 'small' | 'medium' | 'large';\n /** 向后兼容:label 属性 */\n label?: Bindable<string>;\n className?: string;\n style?: React.CSSProperties;\n}\n\nexport const A2UIButton: React.FC<A2UIButtonProps> = ({\n id,\n resolvedChildren,\n primary,\n text,\n action,\n disabled,\n loading,\n theme = 'default',\n variant = 'base',\n size = 'medium',\n className,\n style,\n}) => {\n // 解析绑定值\n const resolvedText = useDataBinding<string | undefined>(text);\n const resolvedDisabled = useDataBinding<boolean | undefined>(disabled);\n const resolvedLoading = useDataBinding<boolean | undefined>(loading);\n const resolvedTheme = useDataBinding<ButtonTheme>(theme as Bindable<ButtonTheme>) || 'default';\n const resolvedVariant = useDataBinding<ButtonVariant>(variant as Bindable<ButtonVariant>) || 'base';\n\n // 获取 action 分发函数\n const dispatch = useA2UIAction();\n \n // 创建 action 回调\n const handleClick = useCallback(() => {\n if (action) {\n dispatch(action, id);\n }\n }, [dispatch, action, id]);\n\n // 根据 primary 属性设置主题\n const finalTheme = primary ? 'primary' : resolvedTheme;\n\n // 渲染内容:优先使用 resolvedChildren(A2UI v0.9),其次使用 text\n const renderContent = () => {\n if (resolvedChildren && resolvedChildren.length > 0) {\n return resolvedChildren.map((comp, index) => (\n <A2UIComponentRenderer key={comp.id || index} component={comp} />\n ));\n }\n return resolvedText;\n };\n\n return (\n <Button\n className={className}\n style={style}\n theme={finalTheme}\n variant={resolvedVariant}\n size={size}\n disabled={!!resolvedDisabled}\n loading={!!resolvedLoading}\n onClick={handleClick}\n >\n {renderContent()}\n </Button>\n );\n};\n\nA2UIButton.displayName = 'A2UIButton';\n\nexport default A2UIButton;\n"],"names":["A2UIButton","id","_ref","resolvedChildren","primary","text","action","disabled","loading","_ref$theme","theme","_ref$variant","variant","_ref$size","size","className","style","resolvedText","useDataBinding","resolvedDisabled","resolvedLoading","resolvedTheme","resolvedVariant","dispatch","useA2UIAction","handleClick","useCallback","finalTheme","renderContent","length","map","comp","index","React","createElement","A2UIComponentRenderer","key","component","Button","onClick","displayName"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;IAuCaA,aAAwC,SAAxCA,iBAaP;AAAA,EAAA,IAZJC,EAAA,GAAAC,IAAA,CAAAD,EAAA;IACAE,gBAAA,GAAAD,IAAA,CAAAC,gBAAA;IACAC,OAAA,GAAAF,IAAA,CAAAE,OAAA;IACAC,IAAA,GAAAH,IAAA,CAAAG,IAAA;IACAC,MAAA,GAAAJ,IAAA,CAAAI,MAAA;IACAC,QAAA,GAAAL,IAAA,CAAAK,QAAA;IACAC,OAAA,GAAAN,IAAA,CAAAM,OAAA;IAAAC,UAAA,GAAAP,IAAA,CACAQ,KAAQ;AAARA,IAAAA,KAAQ,GAAAD,UAAA,KAAA,KAAA,CAAA,GAAA,SAAA,GAAAA,UAAA;IAAAE,YAAA,GAAAT,IAAA,CACRU,OAAU;AAAVA,IAAAA,OAAU,GAAAD,YAAA,KAAA,KAAA,CAAA,GAAA,MAAA,GAAAA,YAAA;IAAAE,SAAA,GAAAX,IAAA,CACVY,IAAO;AAAPA,IAAAA,IAAO,GAAAD,SAAA,KAAA,KAAA,CAAA,GAAA,QAAA,GAAAA,SAAA;IACPE,SAAA,GAAAb,IAAA,CAAAa,SAAA;IACAC,KAAA,GAAAd,IAAA,CAAAc,KAAA,CAAA;AAGM,EAAA,IAAAC,YAAA,GAAeC,eAAmCb,IAAI,CAAA,CAAA;AACtD,EAAA,IAAAc,gBAAA,GAAmBD,eAAoCX,QAAQ,CAAA,CAAA;AAC/D,EAAA,IAAAa,eAAA,GAAkBF,eAAoCV,OAAO,CAAA,CAAA;AAC7D,EAAA,IAAAa,aAAA,GAAgBH,cAA4B,CAAAR,KAA8B,CAAK,IAAA,SAAA,CAAA;AAC/E,EAAA,IAAAY,eAAA,GAAkBJ,cAA8B,CAAAN,OAAkC,CAAK,IAAA,MAAA,CAAA;AAG7F,EAAA,IAAMW,WAAWC,aAAc,EAAA,CAAA;AAGzB,EAAA,IAAAC,WAAA,GAAcC,YAAY,YAAM;AACpC,IAAA,IAAIpB,MAAQ,EAAA;AACViB,MAAAA,QAAA,CAASjB,QAAQL,EAAE,CAAA,CAAA;AACrB,KAAA;GACC,EAAA,CAACsB,QAAU,EAAAjB,MAAA,EAAQL,EAAE,CAAC,CAAA,CAAA;AAGnB,EAAA,IAAA0B,UAAA,GAAavB,UAAU,SAAY,GAAAiB,aAAA,CAAA;AAGzC,EAAA,IAAMO,gBAAgB,SAAhBA,gBAAsB;AACtB,IAAA,IAAAzB,gBAAA,IAAoBA,gBAAiB,CAAA0B,MAAA,GAAS,CAAG,EAAA;AACnD,MAAA,OAAO1B,gBAAiB,CAAA2B,GAAA,CAAI,UAACC,IAAA,EAAMC;8BAChCC,cAAA,CAAAC,aAAA,CAAAC,qBAAA,EAAA;AAAsBC,UAAAA,GAAA,EAAKL,KAAK9B,EAAM,IAAA+B,KAAA;AAAOK,UAAAA,SAAW,EAAAN,IAAAA;AAAA,SAAM,CAChE,CAAA;OAAA,CAAA,CAAA;AACH,KAAA;AACO,IAAA,OAAAd,YAAA,CAAA;GACT,CAAA;AAEA,EAAA,sBACGgB,cAAA,CAAAC,aAAA,CAAAI,MAAA,EAAA;AACCvB,IAAAA,SAAA,EAAAA,SAAA;AACAC,IAAAA,KAAA,EAAAA,KAAA;AACAN,IAAAA,KAAO,EAAAiB,UAAA;AACPf,IAAAA,OAAS,EAAAU,eAAA;AACTR,IAAAA,IAAA,EAAAA,IAAA;IACAP,QAAA,EAAU,CAAC,CAACY,gBAAA;IACZX,OAAA,EAAS,CAAC,CAACY,eAAA;AACXmB,IAAAA,OAAS,EAAAd,WAAAA;AAAA,GAAA,EAERG,eACH,CAAA,CAAA;AAEJ,EAAA;AAEA5B,UAAA,CAAWwC,WAAc,GAAA,YAAA;;;;"}
|
|
@@ -260,7 +260,8 @@ export interface A2UIDividerComponent extends A2UIComponentBase {
|
|
|
260
260
|
*/
|
|
261
261
|
export interface A2UIButtonComponent extends A2UIComponentBase {
|
|
262
262
|
component: 'Button';
|
|
263
|
-
child
|
|
263
|
+
child?: string;
|
|
264
|
+
text?: Bindable<string>;
|
|
264
265
|
primary?: boolean;
|
|
265
266
|
action?: A2UIAction;
|
|
266
267
|
disabled?: Bindable<boolean>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sources":["../../../../../../pro-components/chat/chat-engine/core/a2ui/types/types.ts"],"sourcesContent":["/**\n * A2UI v0.9 协议类型定义\n * 参考 A2UI Specification 0.9 和 @a2ui/core 实现\n * \n * 核心层:框架无关,可跨 React/Vue 复用\n */\n\nimport { z } from 'zod';\n\n// ============= 基础类型 =============\n\n/**\n * 数据绑定路径 - 支持从数据模型读取值\n * @example { path: \"/user/name\" }\n */\nexport const PathBindingSchema = z.object({\n path: z.string(),\n});\nexport type PathBinding = z.infer<typeof PathBindingSchema>;\n\n/**\n * 表达式绑定 - 支持简单计算表达式\n * @example { expr: \"basePrice + addonTotal\", vars: { basePrice: { path: \"/config/basePrice\" } } }\n */\nexport const ExprBindingSchema = z.object({\n expr: z.string(),\n vars: z.record(z.union([PathBindingSchema, z.any()])).optional(),\n format: z.string().optional(),\n});\nexport type ExprBinding = z.infer<typeof ExprBindingSchema>;\n\n/**\n * 可绑定值 - 字面值、路径绑定或表达式绑定\n */\nexport type Bindable<T> = T | PathBinding | ExprBinding;\n\n// ============= 路径绑定辅助 Schema =============\n\nexport const stringOrPathSchema = z.union([z.string(), PathBindingSchema]);\nexport const numberOrPathSchema = z.union([z.number(), PathBindingSchema]);\nexport const booleanOrPathSchema = z.union([z.boolean(), PathBindingSchema]);\nexport const stringArrayOrPathSchema = z.union([z.array(z.string()), PathBindingSchema]);\n\n// ============= Action 类型 =============\n\n/**\n * A2UI Action - 服务端定义的用户交互\n * 支持两种格式:\n * 1. A2UI v0.9 规范格式:{ name: string, context?: Record<string, unknown> }\n * 2. 简化格式(向后兼容):{ type: string, payload?: unknown }\n */\nexport const A2UIActionSchema = z.object({\n // A2UI v0.9 标准字段\n name: z.string().optional(),\n context: z.record(z.unknown()).optional(),\n // 向后兼容字段\n type: z.string().optional(),\n payload: z.unknown().optional(),\n}).refine(\n (data) => data.name || data.type,\n { message: 'Action must have either name or type' }\n);\n\nexport interface A2UIAction {\n /** A2UI v0.9 标准字段 */\n name?: string;\n context?: Record<string, unknown>;\n /** 向后兼容字段 */\n type?: string;\n payload?: unknown;\n}\n\n/**\n * 用户行为消息 - 发送给服务端\n */\nexport interface UserActionMessage {\n userAction: {\n name: string;\n surfaceId: string;\n sourceComponentId: string;\n timestamp: string;\n context: Record<string, unknown>;\n };\n}\n\n/**\n * Action 处理上下文\n */\nexport interface ActionContext {\n surfaceId: string;\n componentId?: string;\n updateData: (path: string, value: unknown) => void;\n getData: (path?: string) => unknown;\n}\n\n/**\n * Action 处理回调\n */\nexport type ActionHandler = (\n action: A2UIAction,\n context?: ActionContext\n) => void | Promise<void>;\n\n// ============= 组件类型定义 (A2UI v0.9) =============\n\n/**\n * 组件通用属性\n */\nexport const componentCommonSchema = z.object({\n id: z.string(),\n component: z.string(),\n});\n\n/**\n * children 属性定义 (A2UI v0.9 规范)\n * 支持两种模式:\n * 1. 直接引用: [\"comp1\", \"comp2\"]\n * 2. Template 模式: { componentId: \"comp1\", path: \"/items\" }\n */\nexport const childrenPropertySchema = z.union([\n z.array(z.string()),\n z.object({\n componentId: z.string(),\n path: z.string(),\n }),\n]);\nexport type ChildrenProperty = z.infer<typeof childrenPropertySchema>;\n\n/**\n * A2UI 组件基础结构\n */\nexport interface A2UIComponentBase {\n id: string;\n component: string;\n [key: string]: unknown;\n}\n\n// ============= Display Components =============\n\n/**\n * Text 组件\n */\nexport interface A2UITextComponent extends A2UIComponentBase {\n component: 'Text';\n text: Bindable<string>;\n usageHint?: 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'caption' | 'body';\n}\n\n/**\n * Image 组件\n */\nexport interface A2UIImageComponent extends A2UIComponentBase {\n component: 'Image';\n url: Bindable<string>;\n fit?: 'contain' | 'cover' | 'fill' | 'none' | 'scale-down';\n usageHint?: 'icon' | 'avatar' | 'smallFeature' | 'mediumFeature' | 'largeFeature' | 'header';\n}\n\n/**\n * Icon 组件\n */\nexport interface A2UIIconComponent extends A2UIComponentBase {\n component: 'Icon';\n name: string | PathBinding;\n}\n\n// ============= Layout Components =============\n\n/**\n * Row 布局组件\n */\nexport interface A2UIRowComponent extends A2UIComponentBase {\n component: 'Row';\n children?: ChildrenProperty;\n distribution?: 'center' | 'end' | 'spaceAround' | 'spaceBetween' | 'spaceEvenly' | 'start' | 'stretch';\n alignment?: 'start' | 'center' | 'end' | 'stretch';\n}\n\n/**\n * Column 布局组件\n */\nexport interface A2UIColumnComponent extends A2UIComponentBase {\n component: 'Column';\n children?: ChildrenProperty;\n distribution?: 'start' | 'center' | 'end' | 'spaceBetween' | 'spaceAround' | 'spaceEvenly' | 'stretch';\n alignment?: 'center' | 'end' | 'start' | 'stretch';\n}\n\n/**\n * List 组件\n */\nexport interface A2UIListComponent extends A2UIComponentBase {\n component: 'List';\n children?: ChildrenProperty;\n direction?: 'vertical' | 'horizontal';\n alignment?: 'start' | 'center' | 'end' | 'stretch';\n}\n\n/**\n * Card 组件 (A2UI v0.9 规范: child 是单个组件 ID)\n */\nexport interface A2UICardComponent extends A2UIComponentBase {\n component: 'Card';\n child: string;\n // TDesign 扩展属性\n title?: Bindable<string>;\n bordered?: boolean;\n shadow?: boolean;\n}\n\n/**\n * Tabs 组件\n */\nexport interface A2UITabItem {\n title: Bindable<string>;\n child: string;\n}\n\nexport interface A2UITabsComponent extends A2UIComponentBase {\n component: 'Tabs';\n tabItems: A2UITabItem[];\n}\n\n/**\n * Divider 组件\n */\nexport interface A2UIDividerComponent extends A2UIComponentBase {\n component: 'Divider';\n axis?: 'horizontal' | 'vertical';\n}\n\n// ============= Interactive Components =============\n\n/**\n * Button 组件 (A2UI v0.9: child 是内容组件 ID)\n */\nexport interface A2UIButtonComponent extends A2UIComponentBase {\n component: 'Button';\n child: string;\n primary?: boolean;\n action?: A2UIAction;\n disabled?: Bindable<boolean>;\n loading?: Bindable<boolean>;\n // TDesign 扩展属性\n theme?: 'default' | 'primary' | 'danger' | 'warning' | 'success';\n variant?: 'base' | 'outline' | 'dashed' | 'text';\n size?: 'small' | 'medium' | 'large';\n}\n\n/**\n * CheckBox 组件\n */\nexport interface A2UICheckBoxComponent extends A2UIComponentBase {\n component: 'CheckBox';\n label: Bindable<string>;\n value: Bindable<boolean>;\n}\n\n/**\n * TextField 组件 (A2UI v0.9 规范)\n */\nexport interface A2UITextFieldComponent extends A2UIComponentBase {\n component: 'TextField';\n label: Bindable<string>;\n text?: Bindable<string>;\n usageHint?: 'longText' | 'number' | 'shortText' | 'obscured';\n validationRegexp?: string;\n placeholder?: string;\n disabled?: Bindable<boolean>;\n}\n\n/**\n * DateTimeInput 组件\n */\nexport interface A2UIDateTimeInputComponent extends A2UIComponentBase {\n component: 'DateTimeInput';\n value: Bindable<string>;\n enableDate?: boolean;\n enableTime?: boolean;\n outputFormat?: string;\n label?: Bindable<string>;\n}\n\n/**\n * ChoicePicker 选项\n */\nexport interface A2UIChoiceOption {\n label: Bindable<string>;\n value: string;\n}\n\n/**\n * ChoicePicker 组件 (单选/多选)\n */\nexport interface A2UIChoicePickerComponent extends A2UIComponentBase {\n component: 'ChoicePicker';\n label: Bindable<string>;\n usageHint: 'multipleSelection' | 'mutuallyExclusive';\n options: A2UIChoiceOption[];\n value: Bindable<string[]>;\n}\n\n/**\n * Slider 组件\n */\nexport interface A2UISliderComponent extends A2UIComponentBase {\n component: 'Slider';\n label?: Bindable<string>;\n min?: number;\n max?: number;\n value: Bindable<number>;\n}\n\n// ============= 兼容模式组件 (TDesign 扩展) =============\n\n/**\n * Input 组件 (TDesign 扩展,简化版 TextField)\n */\nexport interface A2UIInputComponent extends A2UIComponentBase {\n component: 'Input';\n value?: Bindable<string>;\n placeholder?: string;\n disabled?: Bindable<boolean>;\n label?: string;\n type?: 'text' | 'password' | 'number';\n clearable?: boolean;\n status?: 'default' | 'success' | 'warning' | 'error';\n tips?: string;\n size?: 'small' | 'medium' | 'large';\n maxlength?: number;\n}\n\n/**\n * RadioGroup 组件 (TDesign 扩展)\n */\nexport interface A2UIRadioOption {\n label: Bindable<string>;\n value: string | number | boolean;\n disabled?: boolean;\n}\n\nexport interface A2UIRadioGroupComponent extends A2UIComponentBase {\n component: 'RadioGroup';\n value?: Bindable<string | number | boolean>;\n options: A2UIRadioOption[];\n disabled?: Bindable<boolean>;\n theme?: 'radio' | 'button';\n variant?: 'outline' | 'primary-filled' | 'default-filled';\n size?: 'small' | 'medium' | 'large';\n allowUncheck?: boolean;\n}\n\n/**\n * CheckboxGroup 组件 (TDesign 扩展)\n */\nexport interface A2UICheckboxGroupComponent extends A2UIComponentBase {\n component: 'CheckboxGroup';\n value?: Bindable<(string | number)[]>;\n options: A2UIRadioOption[];\n disabled?: Bindable<boolean>;\n}\n\n// ============= 所有组件联合类型 =============\n\nexport type A2UIComponent =\n // Display\n | A2UITextComponent\n | A2UIImageComponent\n | A2UIIconComponent\n // Layout\n | A2UIRowComponent\n | A2UIColumnComponent\n | A2UIListComponent\n | A2UICardComponent\n | A2UITabsComponent\n | A2UIDividerComponent\n // Interactive\n | A2UIButtonComponent\n | A2UICheckBoxComponent\n | A2UITextFieldComponent\n | A2UIDateTimeInputComponent\n | A2UIChoicePickerComponent\n | A2UISliderComponent\n // TDesign 扩展\n | A2UIInputComponent\n | A2UIRadioGroupComponent\n | A2UICheckboxGroupComponent;\n\n/**\n * 组件类型枚举\n */\nexport const A2UIComponentType = {\n // Display\n Text: 'Text',\n Image: 'Image',\n Icon: 'Icon',\n // Layout\n Row: 'Row',\n Column: 'Column',\n List: 'List',\n Card: 'Card',\n Tabs: 'Tabs',\n Divider: 'Divider',\n // Interactive\n Button: 'Button',\n CheckBox: 'CheckBox',\n TextField: 'TextField',\n DateTimeInput: 'DateTimeInput',\n ChoicePicker: 'ChoicePicker',\n Slider: 'Slider',\n // TDesign 扩展\n Input: 'Input',\n RadioGroup: 'RadioGroup',\n CheckboxGroup: 'CheckboxGroup',\n} as const;\n\n// ============= A2UI v0.9 消息类型 =============\n\n/**\n * createSurface 消息\n */\nexport interface CreateSurfaceMessage {\n createSurface: {\n surfaceId: string;\n catalogId: string;\n };\n}\n\n/**\n * updateComponents 消息\n */\nexport interface UpdateComponentsMessage {\n updateComponents: {\n surfaceId: string;\n components: A2UIComponentBase[];\n };\n}\n\n/**\n * updateDataModel 消息\n */\nexport interface UpdateDataModelMessage {\n updateDataModel: {\n surfaceId: string;\n path?: string;\n op?: 'add' | 'replace' | 'remove';\n value?: unknown;\n };\n}\n\n/**\n * deleteSurface 消息\n */\nexport interface DeleteSurfaceMessage {\n deleteSurface: {\n surfaceId: string;\n };\n}\n\n/**\n * 服务端消息联合类型\n */\nexport type A2UIServerMessage =\n | CreateSurfaceMessage\n | UpdateComponentsMessage\n | UpdateDataModelMessage\n | DeleteSurfaceMessage;\n\n// ============= Surface 类型 =============\n\n/**\n * Surface 状态\n */\nexport type SurfaceState = 'active' | 'closed' | 'pending';\n\n/**\n * Skeleton 布局提示\n */\nexport type SkeletonLayoutHint = 'form' | 'card' | 'list' | 'simple' | 'wizard';\n\n/**\n * Skeleton 配置\n */\nexport interface SkeletonHint {\n layout?: SkeletonLayoutHint;\n rowCount?: number;\n animation?: 'gradient' | 'flashed' | 'none';\n}\n\n/**\n * 解析后的组件节点(带 children 引用)\n */\nexport interface ResolvedComponent extends A2UIComponentBase {\n resolvedChildren?: ResolvedComponent[];\n dataContextPath?: string;\n}\n\n/**\n * A2UI Surface - UI 表面抽象\n */\nexport interface A2UISurface {\n id: string;\n catalogId?: string;\n state: SurfaceState;\n /** 组件平铺注册表 */\n components: Map<string, A2UIComponentBase>;\n /** 解析后的组件树根节点 */\n root: ResolvedComponent | null;\n /** 数据模型 */\n data: Record<string, unknown>;\n /** 骨架屏提示 */\n skeletonHint?: SkeletonHint;\n updatedAt?: number;\n}\n\n// ============= 兼容旧版 Operation 类型 =============\n\nexport type A2UIOperationType = 'create' | 'update' | 'patch' | 'delete' | 'action';\n\nexport interface A2UIOperation {\n type: A2UIOperationType;\n surfaceId: string;\n componentId?: string;\n payload?: A2UIComponent | Partial<A2UIComponent> | A2UIAction | Record<string, unknown>;\n}\n\nexport interface A2UIMessage {\n surfaceId: string;\n operations: A2UIOperation[];\n data?: Record<string, unknown>;\n}\n\n// ============= Zod Schema (运行时验证) =============\n\nexport const A2UIComponentBaseSchema = z.object({\n id: z.string(),\n component: z.string(),\n}).passthrough();\n\nexport const createSurfaceMessageSchema = z.object({\n createSurface: z.object({\n surfaceId: z.string(),\n catalogId: z.string(),\n }),\n});\n\nexport const updateComponentsMessageSchema = z.object({\n updateComponents: z.object({\n surfaceId: z.string(),\n components: z.array(A2UIComponentBaseSchema).min(1),\n }),\n});\n\nexport const updateDataModelMessageSchema = z.object({\n updateDataModel: z.object({\n surfaceId: z.string(),\n path: z.string().optional(),\n op: z.enum(['add', 'replace', 'remove']).optional(),\n value: z.any().optional(),\n }),\n});\n\nexport const deleteSurfaceMessageSchema = z.object({\n deleteSurface: z.object({\n surfaceId: z.string(),\n }),\n});\n\nexport const serverMessageSchema = z.union([\n createSurfaceMessageSchema,\n updateComponentsMessageSchema,\n updateDataModelMessageSchema,\n deleteSurfaceMessageSchema,\n]);\n\nexport const A2UISurfaceSchema = z.object({\n id: z.string(),\n catalogId: z.string().optional(),\n state: z.enum(['active', 'closed', 'pending']),\n root: z.any().nullable(),\n data: z.record(z.unknown()).optional(),\n skeletonHint: z.object({\n layout: z.enum(['form', 'card', 'list', 'simple', 'wizard']).optional(),\n rowCount: z.number().optional(),\n animation: z.enum(['gradient', 'flashed', 'none']).optional(),\n }).optional(),\n updatedAt: z.number().optional(),\n});\n"],"names":["PathBindingSchema","z","object","path","string","ExprBindingSchema","expr","vars","record","union","any","optional","format","stringOrPathSchema","numberOrPathSchema","number","booleanOrPathSchema","stringArrayOrPathSchema","array","A2UIActionSchema","name","context","unknown","type","payload","refine","data","message","componentCommonSchema","id","component","childrenPropertySchema","componentId","A2UIComponentType","Text","Image","Icon","Row","Column","List","Card","Tabs","Divider","Button","CheckBox","TextField","DateTimeInput","ChoicePicker","Slider","Input","RadioGroup","CheckboxGroup","A2UIComponentBaseSchema","passthrough","createSurfaceMessageSchema","createSurface","surfaceId","catalogId","updateComponentsMessageSchema","updateComponents","components","min","updateDataModelMessageSchema","updateDataModel","op","value","deleteSurfaceMessageSchema","deleteSurface","serverMessageSchema","A2UISurfaceSchema","state","root","nullable","skeletonHint","layout","rowCount","animation","updatedAt"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"types.js","sources":["../../../../../../pro-components/chat/chat-engine/core/a2ui/types/types.ts"],"sourcesContent":["/**\n * A2UI v0.9 协议类型定义\n * 参考 A2UI Specification 0.9 和 @a2ui/core 实现\n * \n * 核心层:框架无关,可跨 React/Vue 复用\n */\n\nimport { z } from 'zod';\n\n// ============= 基础类型 =============\n\n/**\n * 数据绑定路径 - 支持从数据模型读取值\n * @example { path: \"/user/name\" }\n */\nexport const PathBindingSchema = z.object({\n path: z.string(),\n});\nexport type PathBinding = z.infer<typeof PathBindingSchema>;\n\n/**\n * 表达式绑定 - 支持简单计算表达式\n * @example { expr: \"basePrice + addonTotal\", vars: { basePrice: { path: \"/config/basePrice\" } } }\n */\nexport const ExprBindingSchema = z.object({\n expr: z.string(),\n vars: z.record(z.union([PathBindingSchema, z.any()])).optional(),\n format: z.string().optional(),\n});\nexport type ExprBinding = z.infer<typeof ExprBindingSchema>;\n\n/**\n * 可绑定值 - 字面值、路径绑定或表达式绑定\n */\nexport type Bindable<T> = T | PathBinding | ExprBinding;\n\n// ============= 路径绑定辅助 Schema =============\n\nexport const stringOrPathSchema = z.union([z.string(), PathBindingSchema]);\nexport const numberOrPathSchema = z.union([z.number(), PathBindingSchema]);\nexport const booleanOrPathSchema = z.union([z.boolean(), PathBindingSchema]);\nexport const stringArrayOrPathSchema = z.union([z.array(z.string()), PathBindingSchema]);\n\n// ============= Action 类型 =============\n\n/**\n * A2UI Action - 服务端定义的用户交互\n * 支持两种格式:\n * 1. A2UI v0.9 规范格式:{ name: string, context?: Record<string, unknown> }\n * 2. 简化格式(向后兼容):{ type: string, payload?: unknown }\n */\nexport const A2UIActionSchema = z.object({\n // A2UI v0.9 标准字段\n name: z.string().optional(),\n context: z.record(z.unknown()).optional(),\n // 向后兼容字段\n type: z.string().optional(),\n payload: z.unknown().optional(),\n}).refine(\n (data) => data.name || data.type,\n { message: 'Action must have either name or type' }\n);\n\nexport interface A2UIAction {\n /** A2UI v0.9 标准字段 */\n name?: string;\n context?: Record<string, unknown>;\n /** 向后兼容字段 */\n type?: string;\n payload?: unknown;\n}\n\n/**\n * 用户行为消息 - 发送给服务端\n */\nexport interface UserActionMessage {\n userAction: {\n name: string;\n surfaceId: string;\n sourceComponentId: string;\n timestamp: string;\n context: Record<string, unknown>;\n };\n}\n\n/**\n * Action 处理上下文\n */\nexport interface ActionContext {\n surfaceId: string;\n componentId?: string;\n updateData: (path: string, value: unknown) => void;\n getData: (path?: string) => unknown;\n}\n\n/**\n * Action 处理回调\n */\nexport type ActionHandler = (\n action: A2UIAction,\n context?: ActionContext\n) => void | Promise<void>;\n\n// ============= 组件类型定义 (A2UI v0.9) =============\n\n/**\n * 组件通用属性\n */\nexport const componentCommonSchema = z.object({\n id: z.string(),\n component: z.string(),\n});\n\n/**\n * children 属性定义 (A2UI v0.9 规范)\n * 支持两种模式:\n * 1. 直接引用: [\"comp1\", \"comp2\"]\n * 2. Template 模式: { componentId: \"comp1\", path: \"/items\" }\n */\nexport const childrenPropertySchema = z.union([\n z.array(z.string()),\n z.object({\n componentId: z.string(),\n path: z.string(),\n }),\n]);\nexport type ChildrenProperty = z.infer<typeof childrenPropertySchema>;\n\n/**\n * A2UI 组件基础结构\n */\nexport interface A2UIComponentBase {\n id: string;\n component: string;\n [key: string]: unknown;\n}\n\n// ============= Display Components =============\n\n/**\n * Text 组件\n */\nexport interface A2UITextComponent extends A2UIComponentBase {\n component: 'Text';\n text: Bindable<string>;\n usageHint?: 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'caption' | 'body';\n}\n\n/**\n * Image 组件\n */\nexport interface A2UIImageComponent extends A2UIComponentBase {\n component: 'Image';\n url: Bindable<string>;\n fit?: 'contain' | 'cover' | 'fill' | 'none' | 'scale-down';\n usageHint?: 'icon' | 'avatar' | 'smallFeature' | 'mediumFeature' | 'largeFeature' | 'header';\n}\n\n/**\n * Icon 组件\n */\nexport interface A2UIIconComponent extends A2UIComponentBase {\n component: 'Icon';\n name: string | PathBinding;\n}\n\n// ============= Layout Components =============\n\n/**\n * Row 布局组件\n */\nexport interface A2UIRowComponent extends A2UIComponentBase {\n component: 'Row';\n children?: ChildrenProperty;\n distribution?: 'center' | 'end' | 'spaceAround' | 'spaceBetween' | 'spaceEvenly' | 'start' | 'stretch';\n alignment?: 'start' | 'center' | 'end' | 'stretch';\n}\n\n/**\n * Column 布局组件\n */\nexport interface A2UIColumnComponent extends A2UIComponentBase {\n component: 'Column';\n children?: ChildrenProperty;\n distribution?: 'start' | 'center' | 'end' | 'spaceBetween' | 'spaceAround' | 'spaceEvenly' | 'stretch';\n alignment?: 'center' | 'end' | 'start' | 'stretch';\n}\n\n/**\n * List 组件\n */\nexport interface A2UIListComponent extends A2UIComponentBase {\n component: 'List';\n children?: ChildrenProperty;\n direction?: 'vertical' | 'horizontal';\n alignment?: 'start' | 'center' | 'end' | 'stretch';\n}\n\n/**\n * Card 组件 (A2UI v0.9 规范: child 是单个组件 ID)\n */\nexport interface A2UICardComponent extends A2UIComponentBase {\n component: 'Card';\n child: string;\n // TDesign 扩展属性\n title?: Bindable<string>;\n bordered?: boolean;\n shadow?: boolean;\n}\n\n/**\n * Tabs 组件\n */\nexport interface A2UITabItem {\n title: Bindable<string>;\n child: string;\n}\n\nexport interface A2UITabsComponent extends A2UIComponentBase {\n component: 'Tabs';\n tabItems: A2UITabItem[];\n}\n\n/**\n * Divider 组件\n */\nexport interface A2UIDividerComponent extends A2UIComponentBase {\n component: 'Divider';\n axis?: 'horizontal' | 'vertical';\n}\n\n// ============= Interactive Components =============\n\n/**\n * Button 组件 (A2UI v0.9: child 是内容组件 ID)\n */\nexport interface A2UIButtonComponent extends A2UIComponentBase {\n component: 'Button';\n child?: string;\n text?: Bindable<string>;\n primary?: boolean;\n action?: A2UIAction;\n disabled?: Bindable<boolean>;\n loading?: Bindable<boolean>;\n // TDesign 扩展属性\n theme?: 'default' | 'primary' | 'danger' | 'warning' | 'success';\n variant?: 'base' | 'outline' | 'dashed' | 'text';\n size?: 'small' | 'medium' | 'large';\n}\n\n/**\n * CheckBox 组件\n */\nexport interface A2UICheckBoxComponent extends A2UIComponentBase {\n component: 'CheckBox';\n label: Bindable<string>;\n value: Bindable<boolean>;\n}\n\n/**\n * TextField 组件 (A2UI v0.9 规范)\n */\nexport interface A2UITextFieldComponent extends A2UIComponentBase {\n component: 'TextField';\n label: Bindable<string>;\n text?: Bindable<string>;\n usageHint?: 'longText' | 'number' | 'shortText' | 'obscured';\n validationRegexp?: string;\n placeholder?: string;\n disabled?: Bindable<boolean>;\n}\n\n/**\n * DateTimeInput 组件\n */\nexport interface A2UIDateTimeInputComponent extends A2UIComponentBase {\n component: 'DateTimeInput';\n value: Bindable<string>;\n enableDate?: boolean;\n enableTime?: boolean;\n outputFormat?: string;\n label?: Bindable<string>;\n}\n\n/**\n * ChoicePicker 选项\n */\nexport interface A2UIChoiceOption {\n label: Bindable<string>;\n value: string;\n}\n\n/**\n * ChoicePicker 组件 (单选/多选)\n */\nexport interface A2UIChoicePickerComponent extends A2UIComponentBase {\n component: 'ChoicePicker';\n label: Bindable<string>;\n usageHint: 'multipleSelection' | 'mutuallyExclusive';\n options: A2UIChoiceOption[];\n value: Bindable<string[]>;\n}\n\n/**\n * Slider 组件\n */\nexport interface A2UISliderComponent extends A2UIComponentBase {\n component: 'Slider';\n label?: Bindable<string>;\n min?: number;\n max?: number;\n value: Bindable<number>;\n}\n\n// ============= 兼容模式组件 (TDesign 扩展) =============\n\n/**\n * Input 组件 (TDesign 扩展,简化版 TextField)\n */\nexport interface A2UIInputComponent extends A2UIComponentBase {\n component: 'Input';\n value?: Bindable<string>;\n placeholder?: string;\n disabled?: Bindable<boolean>;\n label?: string;\n type?: 'text' | 'password' | 'number';\n clearable?: boolean;\n status?: 'default' | 'success' | 'warning' | 'error';\n tips?: string;\n size?: 'small' | 'medium' | 'large';\n maxlength?: number;\n}\n\n/**\n * RadioGroup 组件 (TDesign 扩展)\n */\nexport interface A2UIRadioOption {\n label: Bindable<string>;\n value: string | number | boolean;\n disabled?: boolean;\n}\n\nexport interface A2UIRadioGroupComponent extends A2UIComponentBase {\n component: 'RadioGroup';\n value?: Bindable<string | number | boolean>;\n options: A2UIRadioOption[];\n disabled?: Bindable<boolean>;\n theme?: 'radio' | 'button';\n variant?: 'outline' | 'primary-filled' | 'default-filled';\n size?: 'small' | 'medium' | 'large';\n allowUncheck?: boolean;\n}\n\n/**\n * CheckboxGroup 组件 (TDesign 扩展)\n */\nexport interface A2UICheckboxGroupComponent extends A2UIComponentBase {\n component: 'CheckboxGroup';\n value?: Bindable<(string | number)[]>;\n options: A2UIRadioOption[];\n disabled?: Bindable<boolean>;\n}\n\n// ============= 所有组件联合类型 =============\n\nexport type A2UIComponent =\n // Display\n | A2UITextComponent\n | A2UIImageComponent\n | A2UIIconComponent\n // Layout\n | A2UIRowComponent\n | A2UIColumnComponent\n | A2UIListComponent\n | A2UICardComponent\n | A2UITabsComponent\n | A2UIDividerComponent\n // Interactive\n | A2UIButtonComponent\n | A2UICheckBoxComponent\n | A2UITextFieldComponent\n | A2UIDateTimeInputComponent\n | A2UIChoicePickerComponent\n | A2UISliderComponent\n // TDesign 扩展\n | A2UIInputComponent\n | A2UIRadioGroupComponent\n | A2UICheckboxGroupComponent;\n\n/**\n * 组件类型枚举\n */\nexport const A2UIComponentType = {\n // Display\n Text: 'Text',\n Image: 'Image',\n Icon: 'Icon',\n // Layout\n Row: 'Row',\n Column: 'Column',\n List: 'List',\n Card: 'Card',\n Tabs: 'Tabs',\n Divider: 'Divider',\n // Interactive\n Button: 'Button',\n CheckBox: 'CheckBox',\n TextField: 'TextField',\n DateTimeInput: 'DateTimeInput',\n ChoicePicker: 'ChoicePicker',\n Slider: 'Slider',\n // TDesign 扩展\n Input: 'Input',\n RadioGroup: 'RadioGroup',\n CheckboxGroup: 'CheckboxGroup',\n} as const;\n\n// ============= A2UI v0.9 消息类型 =============\n\n/**\n * createSurface 消息\n */\nexport interface CreateSurfaceMessage {\n createSurface: {\n surfaceId: string;\n catalogId: string;\n };\n}\n\n/**\n * updateComponents 消息\n */\nexport interface UpdateComponentsMessage {\n updateComponents: {\n surfaceId: string;\n components: A2UIComponentBase[];\n };\n}\n\n/**\n * updateDataModel 消息\n */\nexport interface UpdateDataModelMessage {\n updateDataModel: {\n surfaceId: string;\n path?: string;\n op?: 'add' | 'replace' | 'remove';\n value?: unknown;\n };\n}\n\n/**\n * deleteSurface 消息\n */\nexport interface DeleteSurfaceMessage {\n deleteSurface: {\n surfaceId: string;\n };\n}\n\n/**\n * 服务端消息联合类型\n */\nexport type A2UIServerMessage =\n | CreateSurfaceMessage\n | UpdateComponentsMessage\n | UpdateDataModelMessage\n | DeleteSurfaceMessage;\n\n// ============= Surface 类型 =============\n\n/**\n * Surface 状态\n */\nexport type SurfaceState = 'active' | 'closed' | 'pending';\n\n/**\n * Skeleton 布局提示\n */\nexport type SkeletonLayoutHint = 'form' | 'card' | 'list' | 'simple' | 'wizard';\n\n/**\n * Skeleton 配置\n */\nexport interface SkeletonHint {\n layout?: SkeletonLayoutHint;\n rowCount?: number;\n animation?: 'gradient' | 'flashed' | 'none';\n}\n\n/**\n * 解析后的组件节点(带 children 引用)\n */\nexport interface ResolvedComponent extends A2UIComponentBase {\n resolvedChildren?: ResolvedComponent[];\n dataContextPath?: string;\n}\n\n/**\n * A2UI Surface - UI 表面抽象\n */\nexport interface A2UISurface {\n id: string;\n catalogId?: string;\n state: SurfaceState;\n /** 组件平铺注册表 */\n components: Map<string, A2UIComponentBase>;\n /** 解析后的组件树根节点 */\n root: ResolvedComponent | null;\n /** 数据模型 */\n data: Record<string, unknown>;\n /** 骨架屏提示 */\n skeletonHint?: SkeletonHint;\n updatedAt?: number;\n}\n\n// ============= 兼容旧版 Operation 类型 =============\n\nexport type A2UIOperationType = 'create' | 'update' | 'patch' | 'delete' | 'action';\n\nexport interface A2UIOperation {\n type: A2UIOperationType;\n surfaceId: string;\n componentId?: string;\n payload?: A2UIComponent | Partial<A2UIComponent> | A2UIAction | Record<string, unknown>;\n}\n\nexport interface A2UIMessage {\n surfaceId: string;\n operations: A2UIOperation[];\n data?: Record<string, unknown>;\n}\n\n// ============= Zod Schema (运行时验证) =============\n\nexport const A2UIComponentBaseSchema = z.object({\n id: z.string(),\n component: z.string(),\n}).passthrough();\n\nexport const createSurfaceMessageSchema = z.object({\n createSurface: z.object({\n surfaceId: z.string(),\n catalogId: z.string(),\n }),\n});\n\nexport const updateComponentsMessageSchema = z.object({\n updateComponents: z.object({\n surfaceId: z.string(),\n components: z.array(A2UIComponentBaseSchema).min(1),\n }),\n});\n\nexport const updateDataModelMessageSchema = z.object({\n updateDataModel: z.object({\n surfaceId: z.string(),\n path: z.string().optional(),\n op: z.enum(['add', 'replace', 'remove']).optional(),\n value: z.any().optional(),\n }),\n});\n\nexport const deleteSurfaceMessageSchema = z.object({\n deleteSurface: z.object({\n surfaceId: z.string(),\n }),\n});\n\nexport const serverMessageSchema = z.union([\n createSurfaceMessageSchema,\n updateComponentsMessageSchema,\n updateDataModelMessageSchema,\n deleteSurfaceMessageSchema,\n]);\n\nexport const A2UISurfaceSchema = z.object({\n id: z.string(),\n catalogId: z.string().optional(),\n state: z.enum(['active', 'closed', 'pending']),\n root: z.any().nullable(),\n data: z.record(z.unknown()).optional(),\n skeletonHint: z.object({\n layout: z.enum(['form', 'card', 'list', 'simple', 'wizard']).optional(),\n rowCount: z.number().optional(),\n animation: z.enum(['gradient', 'flashed', 'none']).optional(),\n }).optional(),\n updatedAt: z.number().optional(),\n});\n"],"names":["PathBindingSchema","z","object","path","string","ExprBindingSchema","expr","vars","record","union","any","optional","format","stringOrPathSchema","numberOrPathSchema","number","booleanOrPathSchema","stringArrayOrPathSchema","array","A2UIActionSchema","name","context","unknown","type","payload","refine","data","message","componentCommonSchema","id","component","childrenPropertySchema","componentId","A2UIComponentType","Text","Image","Icon","Row","Column","List","Card","Tabs","Divider","Button","CheckBox","TextField","DateTimeInput","ChoicePicker","Slider","Input","RadioGroup","CheckboxGroup","A2UIComponentBaseSchema","passthrough","createSurfaceMessageSchema","createSurface","surfaceId","catalogId","updateComponentsMessageSchema","updateComponents","components","min","updateDataModelMessageSchema","updateDataModel","op","value","deleteSurfaceMessageSchema","deleteSurface","serverMessageSchema","A2UISurfaceSchema","state","root","nullable","skeletonHint","layout","rowCount","animation","updatedAt"],"mappings":"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"}
|
|
@@ -4,12 +4,19 @@ import type { AIMessageContent, SSEChunkData, ToolCall } from '../../type';
|
|
|
4
4
|
* 将AG-UI协议事件(SSEChunkData)转换为AIContentChunkUpdate
|
|
5
5
|
* 支持多轮对话、增量文本、工具调用、思考、状态快照、消息快照等基础事件
|
|
6
6
|
* 同时提供状态变更和步骤生命周期事件的分发机制
|
|
7
|
+
*
|
|
8
|
+
* 支持简化模式:
|
|
9
|
+
* - TEXT_MESSAGE_CHUNK:自动补全 Start → Content → End 生命周期
|
|
10
|
+
* - TOOL_CALL_CHUNK:自动补全 Start → Args → End 生命周期
|
|
7
11
|
*/
|
|
8
12
|
export declare class AGUIEventMapper {
|
|
9
13
|
private toolCallMap;
|
|
10
14
|
private toolCallEnded;
|
|
11
|
-
private
|
|
15
|
+
private activityMap;
|
|
12
16
|
private reasoningContext;
|
|
17
|
+
private currentTextMessageId;
|
|
18
|
+
private currentTextMessageRole;
|
|
19
|
+
private toolCallChunkStarted;
|
|
13
20
|
/**
|
|
14
21
|
* 主入口:将SSE事件转换为AIContentChunkUpdate
|
|
15
22
|
*
|
|
@@ -35,14 +42,30 @@ export declare class AGUIEventMapper {
|
|
|
35
42
|
reset(): void;
|
|
36
43
|
/**
|
|
37
44
|
* 处理文本消息事件
|
|
45
|
+
*
|
|
46
|
+
* 支持两种模式:
|
|
47
|
+
* 1. 标准模式:TEXT_MESSAGE_START → TEXT_MESSAGE_CONTENT → TEXT_MESSAGE_END
|
|
48
|
+
* 2. 简化模式:仅发送 TEXT_MESSAGE_CHUNK,自动补全生命周期
|
|
38
49
|
*/
|
|
39
50
|
private handleTextMessageEvent;
|
|
51
|
+
/**
|
|
52
|
+
* 处理简化模式的 TEXT_MESSAGE_CHUNK 事件
|
|
53
|
+
* 自动补全 Start → Content → End 生命周期
|
|
54
|
+
*
|
|
55
|
+
* 关键:通过 messageId 区分不同的文本块,
|
|
56
|
+
* 当 messageId 变化时创建新的内容块
|
|
57
|
+
*/
|
|
58
|
+
private handleTextMessageChunk;
|
|
40
59
|
/**
|
|
41
60
|
* 处理思考事件
|
|
42
61
|
*/
|
|
43
62
|
private handleThinkingEvent;
|
|
44
63
|
/**
|
|
45
64
|
* 处理工具调用事件
|
|
65
|
+
*
|
|
66
|
+
* 支持两种模式:
|
|
67
|
+
* 1. 标准模式:TOOL_CALL_START → TOOL_CALL_ARGS → TOOL_CALL_END
|
|
68
|
+
* 2. 简化模式:仅发送 TOOL_CALL_CHUNK,自动补全生命周期
|
|
46
69
|
*/
|
|
47
70
|
private handleToolCallEvent;
|
|
48
71
|
/**
|
|
@@ -53,6 +76,8 @@ export declare class AGUIEventMapper {
|
|
|
53
76
|
* 支持两种模式:
|
|
54
77
|
* 1. 标准模式:先收到 ACTIVITY_SNAPSHOT,后续 ACTIVITY_DELTA 基于 snapshot 增量更新
|
|
55
78
|
* 2. 纯增量模式:没有 ACTIVITY_SNAPSHOT,直接收到 ACTIVITY_DELTA,自动初始化空内容
|
|
79
|
+
*
|
|
80
|
+
* 注意:不同 activityType 的活动是独立管理的,互不影响
|
|
56
81
|
*/
|
|
57
82
|
private handleActivityEvent;
|
|
58
83
|
/**
|
|
@@ -102,7 +127,14 @@ export declare class AGUIEventMapper {
|
|
|
102
127
|
*/
|
|
103
128
|
private handleToolCallArgs;
|
|
104
129
|
/**
|
|
105
|
-
*
|
|
130
|
+
* 处理简化模式的 TOOL_CALL_CHUNK 事件
|
|
131
|
+
* 自动补全 Start → Args → End 生命周期
|
|
132
|
+
*
|
|
133
|
+
* TOOL_CALL_CHUNK 事件结构:
|
|
134
|
+
* - toolCallId: 工具调用ID(可选,首次时自动生成)
|
|
135
|
+
* - toolCallName: 工具名称(首次必需)
|
|
136
|
+
* - delta: 参数增量内容
|
|
137
|
+
* - parentMessageId: 父消息ID(可选)
|
|
106
138
|
*/
|
|
107
139
|
private handleToolCallChunk;
|
|
108
140
|
/**
|