@tdesign-react/chat 1.0.2-alpha.9 → 1.1.0-alpha.1
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/_chunks/dep-f2051ebd.js +839 -0
- package/es/_chunks/dep-f2051ebd.js.map +1 -0
- 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 +196 -0
- package/es/chat-engine/components/a2ui/A2UIActivityRenderer.js +301 -0
- package/es/chat-engine/components/a2ui/A2UIActivityRenderer.js.map +1 -0
- package/es/chat-engine/components/a2ui/A2UIComponentRenderer.d.ts +37 -0
- package/es/chat-engine/components/a2ui/A2UIComponentRenderer.js +116 -0
- package/es/chat-engine/components/a2ui/A2UIComponentRenderer.js.map +1 -0
- package/es/chat-engine/components/a2ui/A2UIErrorBoundary.d.ts +42 -0
- package/es/chat-engine/components/a2ui/A2UIErrorBoundary.js +113 -0
- package/es/chat-engine/components/a2ui/A2UIErrorBoundary.js.map +1 -0
- package/es/chat-engine/components/a2ui/A2UISkeleton.d.ts +60 -0
- package/es/chat-engine/components/a2ui/A2UISkeleton.js +197 -0
- package/es/chat-engine/components/a2ui/A2UISkeleton.js.map +1 -0
- package/es/chat-engine/components/a2ui/A2UISurfaceRenderer.d.ts +44 -0
- package/es/chat-engine/components/a2ui/A2UISurfaceRenderer.js +139 -0
- package/es/chat-engine/components/a2ui/A2UISurfaceRenderer.js.map +1 -0
- package/es/chat-engine/components/a2ui/containers/A2UICard.d.ts +22 -0
- package/es/chat-engine/components/a2ui/containers/A2UICard.js +82 -0
- package/es/chat-engine/components/a2ui/containers/A2UICard.js.map +1 -0
- package/es/chat-engine/components/a2ui/containers/A2UIColumn.d.ts +18 -0
- package/es/chat-engine/components/a2ui/containers/A2UIColumn.js +81 -0
- package/es/chat-engine/components/a2ui/containers/A2UIColumn.js.map +1 -0
- package/es/chat-engine/components/a2ui/containers/A2UIList.d.ts +14 -0
- package/es/chat-engine/components/a2ui/containers/A2UIList.js +62 -0
- package/es/chat-engine/components/a2ui/containers/A2UIList.js.map +1 -0
- package/es/chat-engine/components/a2ui/containers/A2UIRow.d.ts +20 -0
- package/es/chat-engine/components/a2ui/containers/A2UIRow.js +84 -0
- package/es/chat-engine/components/a2ui/containers/A2UIRow.js.map +1 -0
- package/es/chat-engine/components/a2ui/containers/A2UITabs.d.ts +14 -0
- package/es/chat-engine/components/a2ui/containers/A2UITabs.js +69 -0
- package/es/chat-engine/components/a2ui/containers/A2UITabs.js.map +1 -0
- package/es/chat-engine/components/a2ui/containers/index.d.ts +8 -0
- package/es/chat-engine/components/a2ui/containers/index.js +30 -0
- package/es/chat-engine/components/a2ui/containers/index.js.map +1 -0
- package/es/chat-engine/components/a2ui/index.d.ts +11 -0
- package/es/chat-engine/components/a2ui/index.js +62 -0
- package/es/chat-engine/components/a2ui/index.js.map +1 -0
- package/es/chat-engine/components/a2ui/primitives/A2UIButton.d.ts +33 -0
- package/es/chat-engine/components/a2ui/primitives/A2UIButton.js +80 -0
- package/es/chat-engine/components/a2ui/primitives/A2UIButton.js.map +1 -0
- package/es/chat-engine/components/a2ui/primitives/A2UICheckBox.d.ts +12 -0
- package/es/chat-engine/components/a2ui/primitives/A2UICheckBox.js +43 -0
- package/es/chat-engine/components/a2ui/primitives/A2UICheckBox.js.map +1 -0
- package/es/chat-engine/components/a2ui/primitives/A2UICheckboxGroup.d.ts +50 -0
- package/es/chat-engine/components/a2ui/primitives/A2UICheckboxGroup.js +54 -0
- package/es/chat-engine/components/a2ui/primitives/A2UICheckboxGroup.js.map +1 -0
- package/es/chat-engine/components/a2ui/primitives/A2UIChoicePicker.d.ts +13 -0
- package/es/chat-engine/components/a2ui/primitives/A2UIChoicePicker.js +89 -0
- package/es/chat-engine/components/a2ui/primitives/A2UIChoicePicker.js.map +1 -0
- package/es/chat-engine/components/a2ui/primitives/A2UIDivider.d.ts +12 -0
- package/es/chat-engine/components/a2ui/primitives/A2UIDivider.js +25 -0
- package/es/chat-engine/components/a2ui/primitives/A2UIDivider.js.map +1 -0
- package/es/chat-engine/components/a2ui/primitives/A2UIIcon.d.ts +13 -0
- package/es/chat-engine/components/a2ui/primitives/A2UIIcon.js +138942 -0
- package/es/chat-engine/components/a2ui/primitives/A2UIIcon.js.map +1 -0
- package/es/chat-engine/components/a2ui/primitives/A2UIImage.d.ts +12 -0
- package/es/chat-engine/components/a2ui/primitives/A2UIImage.js +75 -0
- package/es/chat-engine/components/a2ui/primitives/A2UIImage.js.map +1 -0
- package/es/chat-engine/components/a2ui/primitives/A2UIInput.d.ts +20 -0
- package/es/chat-engine/components/a2ui/primitives/A2UIInput.js +63 -0
- package/es/chat-engine/components/a2ui/primitives/A2UIInput.js.map +1 -0
- package/es/chat-engine/components/a2ui/primitives/A2UIRadioGroup.d.ts +56 -0
- package/es/chat-engine/components/a2ui/primitives/A2UIRadioGroup.js +64 -0
- package/es/chat-engine/components/a2ui/primitives/A2UIRadioGroup.js.map +1 -0
- package/es/chat-engine/components/a2ui/primitives/A2UISlider.d.ts +12 -0
- package/es/chat-engine/components/a2ui/primitives/A2UISlider.js +55 -0
- package/es/chat-engine/components/a2ui/primitives/A2UISlider.js.map +1 -0
- package/es/chat-engine/components/a2ui/primitives/A2UIText.d.ts +12 -0
- package/es/chat-engine/components/a2ui/primitives/A2UIText.js +104 -0
- package/es/chat-engine/components/a2ui/primitives/A2UIText.js.map +1 -0
- package/es/chat-engine/components/a2ui/primitives/A2UITextField.d.ts +12 -0
- package/es/chat-engine/components/a2ui/primitives/A2UITextField.js +80 -0
- package/es/chat-engine/components/a2ui/primitives/A2UITextField.js.map +1 -0
- package/es/chat-engine/components/a2ui/primitives/index.d.ts +15 -0
- package/es/chat-engine/components/a2ui/primitives/index.js +39 -0
- package/es/chat-engine/components/a2ui/primitives/index.js.map +1 -0
- package/es/chat-engine/components/a2ui/registry.d.ts +35 -0
- package/es/chat-engine/components/a2ui/registry.js +74 -0
- package/es/chat-engine/components/a2ui/registry.js.map +1 -0
- package/es/chat-engine/components/activity/index.js +1 -1
- package/es/chat-engine/components/activity/registry.d.ts +1 -1
- package/es/chat-engine/components/activity/registry.js +1 -1
- package/es/chat-engine/components/activity/registry.js.map +1 -1
- package/es/chat-engine/components/activity/render.d.ts +2 -2
- package/es/chat-engine/components/activity/render.js +1 -1
- package/es/chat-engine/components/activity/render.js.map +1 -1
- package/es/chat-engine/components/activity/types.js +1 -1
- package/es/chat-engine/components/index.d.ts +1 -0
- package/es/chat-engine/components/index.js +57 -9
- package/es/chat-engine/components/index.js.map +1 -1
- package/es/chat-engine/components/json-render/A2UIJsonRenderActivityRenderer.d.ts +36 -0
- package/es/chat-engine/components/json-render/A2UIJsonRenderActivityRenderer.js +36 -0
- package/es/chat-engine/components/json-render/A2UIJsonRenderActivityRenderer.js.map +1 -0
- package/es/chat-engine/components/json-render/JsonRenderActivityRenderer.d.ts +46 -0
- package/es/chat-engine/components/json-render/JsonRenderActivityRenderer.js +36 -0
- package/es/chat-engine/components/json-render/JsonRenderActivityRenderer.js.map +1 -0
- package/es/chat-engine/components/json-render/SurfaceStateManager.d.ts +113 -0
- package/es/chat-engine/components/json-render/SurfaceStateManager.js +195 -0
- package/es/chat-engine/components/json-render/SurfaceStateManager.js.map +1 -0
- package/es/chat-engine/components/json-render/adapters/a2ui-to-jsonrender.d.ts +49 -0
- package/es/chat-engine/components/json-render/adapters/a2ui-to-jsonrender.js +307 -0
- package/es/chat-engine/components/json-render/adapters/a2ui-to-jsonrender.js.map +1 -0
- package/es/chat-engine/components/json-render/adapters/a2ui-types.d.ts +96 -0
- package/es/chat-engine/components/json-render/adapters/a2ui-types.js +7 -0
- package/es/chat-engine/components/json-render/adapters/a2ui-types.js.map +1 -0
- package/es/chat-engine/components/json-render/adapters/index.d.ts +7 -0
- package/es/chat-engine/components/json-render/adapters/index.js +11 -0
- package/es/chat-engine/components/json-render/adapters/index.js.map +1 -0
- package/es/chat-engine/components/json-render/catalog/a2ui-binding.d.ts +64 -0
- package/es/chat-engine/components/json-render/catalog/a2ui-binding.js +36 -0
- package/es/chat-engine/components/json-render/catalog/a2ui-binding.js.map +1 -0
- package/es/chat-engine/components/json-render/catalog/a2ui-registry.d.ts +78 -0
- package/es/chat-engine/components/json-render/catalog/a2ui-registry.js +36 -0
- package/es/chat-engine/components/json-render/catalog/a2ui-registry.js.map +1 -0
- package/es/chat-engine/components/json-render/catalog/button.d.ts +14 -0
- package/es/chat-engine/components/json-render/catalog/button.js +71 -0
- package/es/chat-engine/components/json-render/catalog/button.js.map +1 -0
- package/es/chat-engine/components/json-render/catalog/card.d.ts +11 -0
- package/es/chat-engine/components/json-render/catalog/card.js +57 -0
- package/es/chat-engine/components/json-render/catalog/card.js.map +1 -0
- package/es/chat-engine/components/json-render/catalog/index.d.ts +127 -0
- package/es/chat-engine/components/json-render/catalog/index.js +36 -0
- package/es/chat-engine/components/json-render/catalog/index.js.map +1 -0
- package/es/chat-engine/components/json-render/catalog/input.d.ts +20 -0
- package/es/chat-engine/components/json-render/catalog/input.js +36 -0
- package/es/chat-engine/components/json-render/catalog/input.js.map +1 -0
- package/es/chat-engine/components/json-render/catalog/layout.d.ts +44 -0
- package/es/chat-engine/components/json-render/catalog/layout.js +129 -0
- package/es/chat-engine/components/json-render/catalog/layout.js.map +1 -0
- package/es/chat-engine/components/json-render/catalog/text.d.ts +11 -0
- package/es/chat-engine/components/json-render/catalog/text.js +31 -0
- package/es/chat-engine/components/json-render/catalog/text.js.map +1 -0
- package/es/chat-engine/components/json-render/catalog.d.ts +549 -0
- package/es/chat-engine/components/json-render/catalog.js +147 -0
- package/es/chat-engine/components/json-render/catalog.js.map +1 -0
- package/es/chat-engine/components/json-render/config.d.ts +154 -0
- package/es/chat-engine/components/json-render/config.js +36 -0
- package/es/chat-engine/components/json-render/config.js.map +1 -0
- package/es/chat-engine/components/json-render/contexts/actions.d.ts +74 -0
- package/es/chat-engine/components/json-render/contexts/actions.js +290 -0
- package/es/chat-engine/components/json-render/contexts/actions.js.map +1 -0
- package/es/chat-engine/components/json-render/contexts/data.d.ts +45 -0
- package/es/chat-engine/components/json-render/contexts/data.js +104 -0
- package/es/chat-engine/components/json-render/contexts/data.js.map +1 -0
- package/es/chat-engine/components/json-render/contexts/validation.d.ts +59 -0
- package/es/chat-engine/components/json-render/contexts/validation.js +151 -0
- package/es/chat-engine/components/json-render/contexts/validation.js.map +1 -0
- package/es/chat-engine/components/json-render/contexts/visibility.d.ts +29 -0
- package/es/chat-engine/components/json-render/contexts/visibility.js +56 -0
- package/es/chat-engine/components/json-render/contexts/visibility.js.map +1 -0
- package/es/chat-engine/components/json-render/engine.d.ts +58 -0
- package/es/chat-engine/components/json-render/engine.js +88 -0
- package/es/chat-engine/components/json-render/engine.js.map +1 -0
- package/es/chat-engine/components/json-render/index.d.ts +34 -0
- package/es/chat-engine/components/json-render/index.js +36 -0
- package/es/chat-engine/components/json-render/index.js.map +1 -0
- package/es/chat-engine/components/json-render/performance.d.ts +91 -0
- package/es/chat-engine/components/json-render/performance.js +135 -0
- package/es/chat-engine/components/json-render/performance.js.map +1 -0
- package/es/chat-engine/components/json-render/renderer.d.ts +71 -0
- package/es/chat-engine/components/json-render/renderer.js +124 -0
- package/es/chat-engine/components/json-render/renderer.js.map +1 -0
- package/es/chat-engine/components/json-render/types.d.ts +69 -0
- package/es/chat-engine/components/json-render/types.js +7 -0
- package/es/chat-engine/components/json-render/types.js.map +1 -0
- package/es/chat-engine/components/provider/agent-state.js +39 -2
- package/es/chat-engine/components/provider/agent-state.js.map +1 -1
- package/es/chat-engine/components/toolcall/index.js +32 -2
- package/es/chat-engine/components/toolcall/index.js.map +1 -1
- package/es/chat-engine/components/toolcall/registry.js +1 -1
- package/es/chat-engine/components/toolcall/render.d.ts +1 -1
- package/es/chat-engine/components/toolcall/render.js +33 -4
- package/es/chat-engine/components/toolcall/render.js.map +1 -1
- package/es/chat-engine/components/toolcall/types.js +1 -1
- package/es/chat-engine/core/a2ui/index.d.ts +10 -0
- package/es/chat-engine/core/a2ui/index.js +24 -0
- package/es/chat-engine/core/a2ui/index.js.map +1 -0
- package/es/chat-engine/core/a2ui/processor/A2uiMessageProcessor.d.ts +197 -0
- package/es/chat-engine/core/a2ui/processor/A2uiMessageProcessor.js +438 -0
- package/es/chat-engine/core/a2ui/processor/A2uiMessageProcessor.js.map +1 -0
- package/es/chat-engine/core/a2ui/processor/ComponentTree.d.ts +53 -0
- package/es/chat-engine/core/a2ui/processor/ComponentTree.js +158 -0
- package/es/chat-engine/core/a2ui/processor/ComponentTree.js.map +1 -0
- package/es/chat-engine/core/a2ui/processor/DataStore.d.ts +63 -0
- package/es/chat-engine/core/a2ui/processor/DataStore.js +172 -0
- package/es/chat-engine/core/a2ui/processor/DataStore.js.map +1 -0
- package/es/chat-engine/core/a2ui/processor/PathResolver.d.ts +47 -0
- package/es/chat-engine/core/a2ui/processor/PathResolver.js +99 -0
- package/es/chat-engine/core/a2ui/processor/PathResolver.js.map +1 -0
- package/es/chat-engine/core/a2ui/types/index.d.ts +4 -0
- package/es/chat-engine/core/a2ui/types/index.js +9 -0
- package/es/chat-engine/core/a2ui/types/index.js.map +1 -0
- package/es/chat-engine/core/a2ui/types/types.d.ts +770 -0
- package/es/chat-engine/core/a2ui/types/types.js +104 -0
- package/es/chat-engine/core/a2ui/types/types.js.map +1 -0
- package/es/chat-engine/core/a2ui/utils/binding.d.ts +34 -0
- package/es/chat-engine/core/a2ui/utils/binding.js +1784 -0
- package/es/chat-engine/core/a2ui/utils/binding.js.map +1 -0
- package/es/chat-engine/core/a2ui/utils/index.d.ts +5 -0
- package/es/chat-engine/core/a2ui/utils/index.js +13 -0
- package/es/chat-engine/core/a2ui/utils/index.js.map +1 -0
- package/es/chat-engine/core/a2ui/utils/validation.d.ts +70 -0
- package/es/chat-engine/core/a2ui/utils/validation.js +333 -0
- package/es/chat-engine/core/a2ui/utils/validation.js.map +1 -0
- package/es/chat-engine/core/adapters/agui/activity-manager.d.ts +102 -0
- package/es/chat-engine/core/adapters/agui/activity-manager.js +144 -0
- package/es/chat-engine/core/adapters/agui/activity-manager.js.map +1 -0
- package/es/chat-engine/core/adapters/agui/event-mapper.d.ts +42 -2
- package/es/chat-engine/core/adapters/agui/event-mapper.js +90 -50
- package/es/chat-engine/core/adapters/agui/event-mapper.js.map +1 -1
- package/es/chat-engine/core/adapters/agui/events.d.ts +222 -222
- package/es/chat-engine/core/adapters/agui/events.js +34 -34
- package/es/chat-engine/core/adapters/agui/events.js.map +1 -1
- package/es/chat-engine/core/adapters/agui/index.d.ts +22 -2
- package/es/chat-engine/core/adapters/agui/index.js +34 -14
- 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.d.ts +57 -56
- package/es/chat-engine/core/adapters/agui/types.js +5 -5
- package/es/chat-engine/core/adapters/agui/types.js.map +1 -1
- package/es/chat-engine/core/adapters/agui/utils.d.ts +9 -3
- package/es/chat-engine/core/adapters/agui/utils.js +23 -4
- package/es/chat-engine/core/adapters/agui/utils.js.map +1 -1
- package/es/chat-engine/core/event-bus/ChatEventBus.d.ts +88 -0
- package/es/chat-engine/core/event-bus/ChatEventBus.js +295 -0
- package/es/chat-engine/core/event-bus/ChatEventBus.js.map +1 -0
- package/es/chat-engine/core/event-bus/index.d.ts +5 -0
- package/es/chat-engine/core/event-bus/index.js +13 -0
- package/es/chat-engine/core/event-bus/index.js.map +1 -0
- package/es/chat-engine/core/event-bus/types.d.ts +230 -0
- package/es/chat-engine/core/event-bus/types.js +32 -0
- package/es/chat-engine/core/event-bus/types.js.map +1 -0
- package/es/chat-engine/core/index.d.ts +16 -1
- package/es/chat-engine/core/index.js +174 -17
- 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 +17 -15
- package/es/chat-engine/core/server/llm-service.js.map +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.d.ts +18 -2
- 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.d.ts +90 -0
- package/es/chat-engine/hooks/a2ui/A2UIContext.js +97 -0
- package/es/chat-engine/hooks/a2ui/A2UIContext.js.map +1 -0
- package/es/chat-engine/hooks/a2ui/index.d.ts +12 -0
- package/es/chat-engine/hooks/a2ui/index.js +19 -0
- package/es/chat-engine/hooks/a2ui/index.js.map +1 -0
- package/es/chat-engine/hooks/a2ui/useA2UIAction.d.ts +40 -0
- package/es/chat-engine/hooks/a2ui/useA2UIAction.js +74 -0
- package/es/chat-engine/hooks/a2ui/useA2UIAction.js.map +1 -0
- package/es/chat-engine/hooks/a2ui/useA2UISurface.d.ts +36 -0
- package/es/chat-engine/hooks/a2ui/useA2UISurface.js +39 -0
- package/es/chat-engine/hooks/a2ui/useA2UISurface.js.map +1 -0
- package/es/chat-engine/hooks/a2ui/useDataBinding.d.ts +53 -0
- package/es/chat-engine/hooks/a2ui/useDataBinding.js +111 -0
- package/es/chat-engine/hooks/a2ui/useDataBinding.js.map +1 -0
- package/es/chat-engine/hooks/index.js +38 -4
- package/es/chat-engine/hooks/index.js.map +1 -1
- package/es/chat-engine/hooks/useAgentActivity.d.ts +1 -2
- package/es/chat-engine/hooks/useAgentActivity.js +1 -1
- package/es/chat-engine/hooks/useAgentActivity.js.map +1 -1
- package/es/chat-engine/hooks/useAgentState.js +39 -2
- package/es/chat-engine/hooks/useAgentState.js.map +1 -1
- package/es/chat-engine/hooks/useAgentToolcall.js +1 -1
- package/es/chat-engine/hooks/useChat.d.ts +3 -3
- package/es/chat-engine/hooks/useChat.js +40 -2
- package/es/chat-engine/hooks/useChat.js.map +1 -1
- package/es/chat-engine/hooks/useJsonRenderActivity.d.ts +56 -0
- package/es/chat-engine/hooks/useJsonRenderActivity.js +63 -0
- package/es/chat-engine/hooks/useJsonRenderActivity.js.map +1 -0
- package/es/chat-engine/index.d.ts +1 -3
- package/es/chat-engine/index.js +30 -8
- package/es/chat-engine/index.js.map +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/docs/react-best-practice.d.ts +13 -0
- package/es/chatbot/index.js +1 -1
- package/es/index.js +27 -5
- package/es/index.js.map +1 -1
- package/es/style/index.js +1 -1
- package/package.json +6 -3
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Surface 状态管理器
|
|
3
|
+
*
|
|
4
|
+
* 职责:
|
|
5
|
+
* 1. 缓存已创建的 Surface Schema(跨消息/跨轮次)
|
|
6
|
+
* 2. 提供订阅机制,当 Surface 数据更新时通知已渲染的组件
|
|
7
|
+
*
|
|
8
|
+
* 使用场景:
|
|
9
|
+
* - 第一轮对话:createSurface + updateComponents → 创建完整 UI,注册到缓存
|
|
10
|
+
* - 后续轮次:仅 updateDataModel → 更新缓存中的数据,通知订阅者重渲染
|
|
11
|
+
*
|
|
12
|
+
* 设计原则:
|
|
13
|
+
* 1. 服务端是状态的单一数据源(updateDataModel 来自服务端)
|
|
14
|
+
* 2. 本模块只负责存储和订阅,不负责 A2UI → JsonRender 的转换
|
|
15
|
+
* 3. 转换逻辑由 a2ui-to-jsonrender.ts 中的函数完成
|
|
16
|
+
*/
|
|
17
|
+
import type { JsonRenderSchema } from './types';
|
|
18
|
+
export interface SurfaceCache {
|
|
19
|
+
/** Surface ID */
|
|
20
|
+
surfaceId: string;
|
|
21
|
+
/** Catalog ID */
|
|
22
|
+
catalogId?: string;
|
|
23
|
+
/** 当前的 json-render Schema */
|
|
24
|
+
schema: JsonRenderSchema;
|
|
25
|
+
/** 创建时间 */
|
|
26
|
+
createdAt: number;
|
|
27
|
+
/** 最后更新时间 */
|
|
28
|
+
updatedAt: number;
|
|
29
|
+
}
|
|
30
|
+
/** 订阅者回调函数类型 */
|
|
31
|
+
export type SurfaceSubscriber = (schema: JsonRenderSchema) => void;
|
|
32
|
+
/**
|
|
33
|
+
* Surface 状态管理器
|
|
34
|
+
* 单例模式,全局共享 Surface 缓存
|
|
35
|
+
*/
|
|
36
|
+
declare class SurfaceStateManager {
|
|
37
|
+
private surfaces;
|
|
38
|
+
/** 订阅者映射:surfaceId → Set<subscriber> */
|
|
39
|
+
private subscribers;
|
|
40
|
+
private debug;
|
|
41
|
+
/**
|
|
42
|
+
* 设置调试模式
|
|
43
|
+
*/
|
|
44
|
+
setDebug(enabled: boolean): void;
|
|
45
|
+
/**
|
|
46
|
+
* 注册 Surface(由创建型消息调用)
|
|
47
|
+
*
|
|
48
|
+
* @param surfaceId Surface ID
|
|
49
|
+
* @param schema 转换后的 json-render Schema
|
|
50
|
+
* @param catalogId 可选的 Catalog ID
|
|
51
|
+
*/
|
|
52
|
+
registerSurface(surfaceId: string, schema: JsonRenderSchema, catalogId?: string): void;
|
|
53
|
+
/**
|
|
54
|
+
* 更新 Surface 数据(由更新型消息调用)
|
|
55
|
+
*
|
|
56
|
+
* @param surfaceId Surface ID
|
|
57
|
+
* @param path JSON Pointer 路径
|
|
58
|
+
* @param op 操作类型
|
|
59
|
+
* @param value 值
|
|
60
|
+
* @returns 是否成功(Surface 存在)
|
|
61
|
+
*/
|
|
62
|
+
updateData(surfaceId: string, path: string | undefined, op?: 'add' | 'replace' | 'remove', value?: unknown): boolean;
|
|
63
|
+
/**
|
|
64
|
+
* 订阅 Surface 状态变化
|
|
65
|
+
*
|
|
66
|
+
* @param surfaceId Surface ID
|
|
67
|
+
* @param subscriber 订阅者回调
|
|
68
|
+
* @returns 取消订阅函数
|
|
69
|
+
*/
|
|
70
|
+
subscribe(surfaceId: string, subscriber: SurfaceSubscriber): () => void;
|
|
71
|
+
/**
|
|
72
|
+
* 异步通知订阅者(避免在 React 渲染期间调用 setState)
|
|
73
|
+
*/
|
|
74
|
+
private notifySubscribersAsync;
|
|
75
|
+
/**
|
|
76
|
+
* 获取指定 Surface 的缓存
|
|
77
|
+
*/
|
|
78
|
+
getSurface(surfaceId: string): SurfaceCache | undefined;
|
|
79
|
+
/**
|
|
80
|
+
* 获取指定 Surface 的 Schema
|
|
81
|
+
*/
|
|
82
|
+
getSchema(surfaceId: string): JsonRenderSchema | null;
|
|
83
|
+
/**
|
|
84
|
+
* 检查 Surface 是否存在
|
|
85
|
+
*/
|
|
86
|
+
hasSurface(surfaceId: string): boolean;
|
|
87
|
+
/**
|
|
88
|
+
* 获取所有 Surface ID
|
|
89
|
+
*/
|
|
90
|
+
getAllSurfaceIds(): string[];
|
|
91
|
+
/**
|
|
92
|
+
* 删除 Surface(由 deleteSurface 消息调用)
|
|
93
|
+
*/
|
|
94
|
+
deleteSurface(surfaceId: string): boolean;
|
|
95
|
+
/**
|
|
96
|
+
* 清除所有 Surface 缓存
|
|
97
|
+
*/
|
|
98
|
+
clearAll(): void;
|
|
99
|
+
/**
|
|
100
|
+
* 获取缓存统计信息
|
|
101
|
+
*/
|
|
102
|
+
getStats(): {
|
|
103
|
+
count: number;
|
|
104
|
+
surfaces: Array<{
|
|
105
|
+
id: string;
|
|
106
|
+
elementsCount: number;
|
|
107
|
+
updatedAt: number;
|
|
108
|
+
subscriberCount: number;
|
|
109
|
+
}>;
|
|
110
|
+
};
|
|
111
|
+
}
|
|
112
|
+
export declare const surfaceStateManager: SurfaceStateManager;
|
|
113
|
+
export { SurfaceStateManager };
|
|
@@ -0,0 +1,195 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* tdesign v1.0.2-alpha.15
|
|
3
|
+
* (c) 2026 tdesign
|
|
4
|
+
* @license MIT
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
import _slicedToArray from '@babel/runtime/helpers/slicedToArray';
|
|
8
|
+
import _classCallCheck from '@babel/runtime/helpers/classCallCheck';
|
|
9
|
+
import _createClass from '@babel/runtime/helpers/createClass';
|
|
10
|
+
import _defineProperty from '@babel/runtime/helpers/defineProperty';
|
|
11
|
+
import './adapters/index.js';
|
|
12
|
+
import { applyA2UIDataUpdate } from './adapters/a2ui-to-jsonrender.js';
|
|
13
|
+
import '@babel/runtime/helpers/typeof';
|
|
14
|
+
import '@babel/runtime/helpers/objectWithoutProperties';
|
|
15
|
+
|
|
16
|
+
var SurfaceStateManager = /*#__PURE__*/function () {
|
|
17
|
+
function SurfaceStateManager() {
|
|
18
|
+
_classCallCheck(this, SurfaceStateManager);
|
|
19
|
+
_defineProperty(this, "surfaces", /* @__PURE__ */new Map());
|
|
20
|
+
_defineProperty(this, "subscribers", /* @__PURE__ */new Map());
|
|
21
|
+
_defineProperty(this, "debug", false);
|
|
22
|
+
}
|
|
23
|
+
return _createClass(SurfaceStateManager, [{
|
|
24
|
+
key: "setDebug",
|
|
25
|
+
value: function setDebug(enabled) {
|
|
26
|
+
this.debug = enabled;
|
|
27
|
+
}
|
|
28
|
+
}, {
|
|
29
|
+
key: "registerSurface",
|
|
30
|
+
value: function registerSurface(surfaceId, schema, catalogId) {
|
|
31
|
+
var cache = {
|
|
32
|
+
surfaceId: surfaceId,
|
|
33
|
+
catalogId: catalogId,
|
|
34
|
+
schema: schema,
|
|
35
|
+
createdAt: Date.now(),
|
|
36
|
+
updatedAt: Date.now()
|
|
37
|
+
};
|
|
38
|
+
this.surfaces.set(surfaceId, cache);
|
|
39
|
+
if (this.debug) {
|
|
40
|
+
console.log("[SurfaceStateManager] \u6CE8\u518C Surface:", {
|
|
41
|
+
surfaceId: surfaceId,
|
|
42
|
+
elementsCount: Object.keys(schema.elements).length
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
}, {
|
|
47
|
+
key: "updateData",
|
|
48
|
+
value: function updateData(surfaceId, path) {
|
|
49
|
+
var op = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : "replace";
|
|
50
|
+
var value = arguments.length > 3 ? arguments[3] : undefined;
|
|
51
|
+
var cache = this.surfaces.get(surfaceId);
|
|
52
|
+
if (!cache) {
|
|
53
|
+
if (this.debug) {
|
|
54
|
+
console.warn("[SurfaceStateManager] updateData: Surface \u4E0D\u5B58\u5728", surfaceId);
|
|
55
|
+
}
|
|
56
|
+
return false;
|
|
57
|
+
}
|
|
58
|
+
cache.schema = applyA2UIDataUpdate(cache.schema, path, op, value);
|
|
59
|
+
cache.updatedAt = Date.now();
|
|
60
|
+
if (this.debug) {
|
|
61
|
+
console.log("[SurfaceStateManager] \u66F4\u65B0\u6570\u636E:", {
|
|
62
|
+
surfaceId: surfaceId,
|
|
63
|
+
path: path,
|
|
64
|
+
op: op,
|
|
65
|
+
value: value,
|
|
66
|
+
newData: cache.schema.data
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
this.notifySubscribersAsync(surfaceId, cache.schema);
|
|
70
|
+
return true;
|
|
71
|
+
}
|
|
72
|
+
}, {
|
|
73
|
+
key: "subscribe",
|
|
74
|
+
value: function subscribe(surfaceId, subscriber) {
|
|
75
|
+
var _this = this;
|
|
76
|
+
if (!this.subscribers.has(surfaceId)) {
|
|
77
|
+
this.subscribers.set(surfaceId, /* @__PURE__ */new Set());
|
|
78
|
+
}
|
|
79
|
+
this.subscribers.get(surfaceId).add(subscriber);
|
|
80
|
+
if (this.debug) {
|
|
81
|
+
console.log("[SurfaceStateManager] \u8BA2\u9605 Surface:", surfaceId);
|
|
82
|
+
}
|
|
83
|
+
return function () {
|
|
84
|
+
var subs = _this.subscribers.get(surfaceId);
|
|
85
|
+
if (subs) {
|
|
86
|
+
subs["delete"](subscriber);
|
|
87
|
+
if (subs.size === 0) {
|
|
88
|
+
_this.subscribers["delete"](surfaceId);
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
if (_this.debug) {
|
|
92
|
+
console.log("[SurfaceStateManager] \u53D6\u6D88\u8BA2\u9605 Surface:", surfaceId);
|
|
93
|
+
}
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
}, {
|
|
97
|
+
key: "notifySubscribersAsync",
|
|
98
|
+
value: function notifySubscribersAsync(surfaceId, schema) {
|
|
99
|
+
var _this2 = this;
|
|
100
|
+
var subs = this.subscribers.get(surfaceId);
|
|
101
|
+
if (!subs || subs.size === 0) {
|
|
102
|
+
return;
|
|
103
|
+
}
|
|
104
|
+
if (this.debug) {
|
|
105
|
+
console.log("[SurfaceStateManager] \u51C6\u5907\u901A\u77E5\u8BA2\u9605\u8005:", {
|
|
106
|
+
surfaceId: surfaceId,
|
|
107
|
+
subscriberCount: subs.size
|
|
108
|
+
});
|
|
109
|
+
}
|
|
110
|
+
queueMicrotask(function () {
|
|
111
|
+
var currentSubs = _this2.subscribers.get(surfaceId);
|
|
112
|
+
if (!currentSubs || currentSubs.size === 0) {
|
|
113
|
+
return;
|
|
114
|
+
}
|
|
115
|
+
if (_this2.debug) {
|
|
116
|
+
console.log("[SurfaceStateManager] \u6267\u884C\u901A\u77E5\u8BA2\u9605\u8005:", {
|
|
117
|
+
surfaceId: surfaceId
|
|
118
|
+
});
|
|
119
|
+
}
|
|
120
|
+
currentSubs.forEach(function (subscriber) {
|
|
121
|
+
try {
|
|
122
|
+
subscriber(schema);
|
|
123
|
+
} catch (e) {
|
|
124
|
+
console.error("[SurfaceStateManager] \u8BA2\u9605\u8005\u56DE\u8C03\u51FA\u9519:", e);
|
|
125
|
+
}
|
|
126
|
+
});
|
|
127
|
+
});
|
|
128
|
+
}
|
|
129
|
+
}, {
|
|
130
|
+
key: "getSurface",
|
|
131
|
+
value: function getSurface(surfaceId) {
|
|
132
|
+
return this.surfaces.get(surfaceId);
|
|
133
|
+
}
|
|
134
|
+
}, {
|
|
135
|
+
key: "getSchema",
|
|
136
|
+
value: function getSchema(surfaceId) {
|
|
137
|
+
var _this$surfaces$get;
|
|
138
|
+
return ((_this$surfaces$get = this.surfaces.get(surfaceId)) === null || _this$surfaces$get === void 0 ? void 0 : _this$surfaces$get.schema) || null;
|
|
139
|
+
}
|
|
140
|
+
}, {
|
|
141
|
+
key: "hasSurface",
|
|
142
|
+
value: function hasSurface(surfaceId) {
|
|
143
|
+
return this.surfaces.has(surfaceId);
|
|
144
|
+
}
|
|
145
|
+
}, {
|
|
146
|
+
key: "getAllSurfaceIds",
|
|
147
|
+
value: function getAllSurfaceIds() {
|
|
148
|
+
return Array.from(this.surfaces.keys());
|
|
149
|
+
}
|
|
150
|
+
}, {
|
|
151
|
+
key: "deleteSurface",
|
|
152
|
+
value: function deleteSurface(surfaceId) {
|
|
153
|
+
this.subscribers["delete"](surfaceId);
|
|
154
|
+
var deleted = this.surfaces["delete"](surfaceId);
|
|
155
|
+
if (this.debug && deleted) {
|
|
156
|
+
console.log("[SurfaceStateManager] \u5220\u9664 Surface:", surfaceId);
|
|
157
|
+
}
|
|
158
|
+
return deleted;
|
|
159
|
+
}
|
|
160
|
+
}, {
|
|
161
|
+
key: "clearAll",
|
|
162
|
+
value: function clearAll() {
|
|
163
|
+
this.surfaces.clear();
|
|
164
|
+
this.subscribers.clear();
|
|
165
|
+
if (this.debug) {
|
|
166
|
+
console.log("[SurfaceStateManager] \u6E05\u9664\u6240\u6709\u7F13\u5B58");
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
}, {
|
|
170
|
+
key: "getStats",
|
|
171
|
+
value: function getStats() {
|
|
172
|
+
var _this3 = this;
|
|
173
|
+
var surfaces = Array.from(this.surfaces.entries()).map(function (_ref) {
|
|
174
|
+
var _this3$subscribers$ge;
|
|
175
|
+
var _ref2 = _slicedToArray(_ref, 2),
|
|
176
|
+
id = _ref2[0],
|
|
177
|
+
cache = _ref2[1];
|
|
178
|
+
return {
|
|
179
|
+
id: id,
|
|
180
|
+
elementsCount: Object.keys(cache.schema.elements).length,
|
|
181
|
+
updatedAt: cache.updatedAt,
|
|
182
|
+
subscriberCount: ((_this3$subscribers$ge = _this3.subscribers.get(id)) === null || _this3$subscribers$ge === void 0 ? void 0 : _this3$subscribers$ge.size) || 0
|
|
183
|
+
};
|
|
184
|
+
});
|
|
185
|
+
return {
|
|
186
|
+
count: this.surfaces.size,
|
|
187
|
+
surfaces: surfaces
|
|
188
|
+
};
|
|
189
|
+
}
|
|
190
|
+
}]);
|
|
191
|
+
}();
|
|
192
|
+
var surfaceStateManager = new SurfaceStateManager();
|
|
193
|
+
|
|
194
|
+
export { SurfaceStateManager, surfaceStateManager };
|
|
195
|
+
//# sourceMappingURL=SurfaceStateManager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SurfaceStateManager.js","sources":["../../../../../pro-components/chat/chat-engine/components/json-render/SurfaceStateManager.ts"],"sourcesContent":["/**\n * Surface 状态管理器\n * \n * 职责:\n * 1. 缓存已创建的 Surface Schema(跨消息/跨轮次)\n * 2. 提供订阅机制,当 Surface 数据更新时通知已渲染的组件\n * \n * 使用场景:\n * - 第一轮对话:createSurface + updateComponents → 创建完整 UI,注册到缓存\n * - 后续轮次:仅 updateDataModel → 更新缓存中的数据,通知订阅者重渲染\n * \n * 设计原则:\n * 1. 服务端是状态的单一数据源(updateDataModel 来自服务端)\n * 2. 本模块只负责存储和订阅,不负责 A2UI → JsonRender 的转换\n * 3. 转换逻辑由 a2ui-to-jsonrender.ts 中的函数完成\n */\n\nimport type { JsonRenderSchema } from './types';\nimport { applyA2UIDataUpdate } from './adapters';\n\nexport interface SurfaceCache {\n /** Surface ID */\n surfaceId: string;\n /** Catalog ID */\n catalogId?: string;\n /** 当前的 json-render Schema */\n schema: JsonRenderSchema;\n /** 创建时间 */\n createdAt: number;\n /** 最后更新时间 */\n updatedAt: number;\n}\n\n/** 订阅者回调函数类型 */\nexport type SurfaceSubscriber = (schema: JsonRenderSchema) => void;\n\n/**\n * Surface 状态管理器\n * 单例模式,全局共享 Surface 缓存\n */\nclass SurfaceStateManager {\n private surfaces: Map<string, SurfaceCache> = new Map();\n /** 订阅者映射:surfaceId → Set<subscriber> */\n private subscribers: Map<string, Set<SurfaceSubscriber>> = new Map();\n private debug: boolean = false;\n\n /**\n * 设置调试模式\n */\n setDebug(enabled: boolean): void {\n this.debug = enabled;\n }\n\n /**\n * 注册 Surface(由创建型消息调用)\n * \n * @param surfaceId Surface ID\n * @param schema 转换后的 json-render Schema\n * @param catalogId 可选的 Catalog ID\n */\n registerSurface(surfaceId: string, schema: JsonRenderSchema, catalogId?: string): void {\n const cache: SurfaceCache = {\n surfaceId,\n catalogId,\n schema,\n createdAt: Date.now(),\n updatedAt: Date.now(),\n };\n \n this.surfaces.set(surfaceId, cache);\n \n if (this.debug) {\n // eslint-disable-next-line no-console\n console.log('[SurfaceStateManager] 注册 Surface:', {\n surfaceId,\n elementsCount: Object.keys(schema.elements).length,\n });\n }\n }\n\n /**\n * 更新 Surface 数据(由更新型消息调用)\n * \n * @param surfaceId Surface ID\n * @param path JSON Pointer 路径\n * @param op 操作类型\n * @param value 值\n * @returns 是否成功(Surface 存在)\n */\n updateData(\n surfaceId: string,\n path: string | undefined,\n op: 'add' | 'replace' | 'remove' = 'replace',\n value?: unknown,\n ): boolean {\n const cache = this.surfaces.get(surfaceId);\n if (!cache) {\n if (this.debug) {\n // eslint-disable-next-line no-console\n console.warn('[SurfaceStateManager] updateData: Surface 不存在', surfaceId);\n }\n return false;\n }\n\n // 使用已有的增量更新函数\n cache.schema = applyA2UIDataUpdate(cache.schema, path, op, value);\n cache.updatedAt = Date.now();\n\n if (this.debug) {\n // eslint-disable-next-line no-console\n console.log('[SurfaceStateManager] 更新数据:', {\n surfaceId,\n path,\n op,\n value,\n newData: cache.schema.data,\n });\n }\n\n // 异步通知订阅者\n this.notifySubscribersAsync(surfaceId, cache.schema);\n \n return true;\n }\n\n /**\n * 订阅 Surface 状态变化\n * \n * @param surfaceId Surface ID\n * @param subscriber 订阅者回调\n * @returns 取消订阅函数\n */\n subscribe(surfaceId: string, subscriber: SurfaceSubscriber): () => void {\n if (!this.subscribers.has(surfaceId)) {\n this.subscribers.set(surfaceId, new Set());\n }\n this.subscribers.get(surfaceId)!.add(subscriber);\n\n if (this.debug) {\n // eslint-disable-next-line no-console\n console.log('[SurfaceStateManager] 订阅 Surface:', surfaceId);\n }\n\n // 返回取消订阅函数\n return () => {\n const subs = this.subscribers.get(surfaceId);\n if (subs) {\n subs.delete(subscriber);\n if (subs.size === 0) {\n this.subscribers.delete(surfaceId);\n }\n }\n if (this.debug) {\n // eslint-disable-next-line no-console\n console.log('[SurfaceStateManager] 取消订阅 Surface:', surfaceId);\n }\n };\n }\n\n /**\n * 异步通知订阅者(避免在 React 渲染期间调用 setState)\n */\n private notifySubscribersAsync(surfaceId: string, schema: JsonRenderSchema): void {\n const subs = this.subscribers.get(surfaceId);\n if (!subs || subs.size === 0) {\n return;\n }\n\n if (this.debug) {\n // eslint-disable-next-line no-console\n console.log('[SurfaceStateManager] 准备通知订阅者:', { surfaceId, subscriberCount: subs.size });\n }\n\n // 使用 queueMicrotask 延迟到当前渲染完成后执行\n queueMicrotask(() => {\n // 重新获取订阅者(可能在这期间已被取消)\n const currentSubs = this.subscribers.get(surfaceId);\n if (!currentSubs || currentSubs.size === 0) {\n return;\n }\n\n if (this.debug) {\n // eslint-disable-next-line no-console\n console.log('[SurfaceStateManager] 执行通知订阅者:', { surfaceId });\n }\n\n currentSubs.forEach(subscriber => {\n try {\n subscriber(schema);\n } catch (e) {\n // eslint-disable-next-line no-console\n console.error('[SurfaceStateManager] 订阅者回调出错:', e);\n }\n });\n });\n }\n\n /**\n * 获取指定 Surface 的缓存\n */\n getSurface(surfaceId: string): SurfaceCache | undefined {\n return this.surfaces.get(surfaceId);\n }\n\n /**\n * 获取指定 Surface 的 Schema\n */\n getSchema(surfaceId: string): JsonRenderSchema | null {\n return this.surfaces.get(surfaceId)?.schema || null;\n }\n\n /**\n * 检查 Surface 是否存在\n */\n hasSurface(surfaceId: string): boolean {\n return this.surfaces.has(surfaceId);\n }\n\n /**\n * 获取所有 Surface ID\n */\n getAllSurfaceIds(): string[] {\n return Array.from(this.surfaces.keys());\n }\n\n /**\n * 删除 Surface(由 deleteSurface 消息调用)\n */\n deleteSurface(surfaceId: string): boolean {\n this.subscribers.delete(surfaceId);\n const deleted = this.surfaces.delete(surfaceId);\n \n if (this.debug && deleted) {\n // eslint-disable-next-line no-console\n console.log('[SurfaceStateManager] 删除 Surface:', surfaceId);\n }\n \n return deleted;\n }\n\n /**\n * 清除所有 Surface 缓存\n */\n clearAll(): void {\n this.surfaces.clear();\n this.subscribers.clear();\n if (this.debug) {\n // eslint-disable-next-line no-console\n console.log('[SurfaceStateManager] 清除所有缓存');\n }\n }\n\n /**\n * 获取缓存统计信息\n */\n getStats(): { \n count: number; \n surfaces: Array<{ id: string; elementsCount: number; updatedAt: number; subscriberCount: number }>;\n } {\n const surfaces = Array.from(this.surfaces.entries()).map(([id, cache]) => ({\n id,\n elementsCount: Object.keys(cache.schema.elements).length,\n updatedAt: cache.updatedAt,\n subscriberCount: this.subscribers.get(id)?.size || 0,\n }));\n\n return {\n count: this.surfaces.size,\n surfaces,\n };\n }\n}\n\n// 导出单例实例\nexport const surfaceStateManager = new SurfaceStateManager();\n\n// 导出类供测试或创建独立实例\nexport { SurfaceStateManager };\n"],"names":["SurfaceStateManager","_classCallCheck","_defineProperty","Map","_createClass","key","value","setDebug","enabled","debug","registerSurface","surfaceId","schema","catalogId","cache","createdAt","Date","now","updatedAt","surfaces","set","console","log","elementsCount","Object","keys","elements","length","updateData","path","op","arguments","undefined","get","warn","applyA2UIDataUpdate","newData","data","notifySubscribersAsync","subscribe","subscriber","_this","subscribers","has","Set","add","subs","size","_this2","subscriberCount","queueMicrotask","currentSubs","forEach","e","error","getSurface","getSchema","_this$surfaces$get","hasSurface","getAllSurfaceIds","Array","from","deleteSurface","deleted","clearAll","clear","getStats","_this3","entries","map","_ref","_this3$subscribers$ge","_ref2","_slicedToArray","id","count","surfaceStateManager"],"mappings":"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"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A2UI v0.9 → json-render 适配器
|
|
3
|
+
* 将 A2UI v0.9 协议转换为 json-render Schema
|
|
4
|
+
*
|
|
5
|
+
* 核心设计:
|
|
6
|
+
* 1. A2UI v0.9 的 createSurface 只是初始化信号,不包含组件数据
|
|
7
|
+
* 2. 组件数据通过 updateComponents 消息逐步发送(数组形式)
|
|
8
|
+
* 3. 数据模型通过 updateDataModel 消息填充
|
|
9
|
+
* 4. 组件字段名是 'component',不是 'type'
|
|
10
|
+
*/
|
|
11
|
+
import type { JsonRenderSchema } from '../types';
|
|
12
|
+
import type { A2UIComponent, A2UIMessage } from './a2ui-types';
|
|
13
|
+
/**
|
|
14
|
+
* 转换 A2UI v0.9 消息数组为 json-render Schema
|
|
15
|
+
*
|
|
16
|
+
* 处理流程:
|
|
17
|
+
* 1. 查找 createSurface 消息初始化 Surface
|
|
18
|
+
* 2. 累积所有 updateComponents 消息构建组件树
|
|
19
|
+
* 3. 累积所有 updateDataModel 消息填充数据
|
|
20
|
+
* 4. 转换为 json-render Schema
|
|
21
|
+
*
|
|
22
|
+
* @param messages A2UI 消息数组
|
|
23
|
+
* @returns json-render Schema 或 null
|
|
24
|
+
*/
|
|
25
|
+
export declare function convertA2UIMessagesToJsonRender(messages: A2UIMessage[]): JsonRenderSchema | null;
|
|
26
|
+
/**
|
|
27
|
+
* 应用增量更新到现有 Schema
|
|
28
|
+
*
|
|
29
|
+
* @param schema 当前 json-render Schema
|
|
30
|
+
* @param components A2UI updateComponents 的组件数组
|
|
31
|
+
* @returns 更新后的 Schema
|
|
32
|
+
*/
|
|
33
|
+
export declare function applyA2UIUpdates(schema: JsonRenderSchema, components: A2UIComponent[]): JsonRenderSchema;
|
|
34
|
+
/**
|
|
35
|
+
* 应用数据模型更新到现有 Schema
|
|
36
|
+
*
|
|
37
|
+
* @param schema 当前 json-render Schema
|
|
38
|
+
* @param path JSON Pointer 路径
|
|
39
|
+
* @param op 操作类型
|
|
40
|
+
* @param value 值
|
|
41
|
+
* @returns 更新后的 Schema
|
|
42
|
+
*/
|
|
43
|
+
export declare function applyA2UIDataUpdate(schema: JsonRenderSchema, path: string | undefined, op?: 'add' | 'replace' | 'remove', value?: unknown): JsonRenderSchema;
|
|
44
|
+
declare const _default: {
|
|
45
|
+
convertA2UIMessagesToJsonRender: typeof convertA2UIMessagesToJsonRender;
|
|
46
|
+
applyA2UIUpdates: typeof applyA2UIUpdates;
|
|
47
|
+
applyA2UIDataUpdate: typeof applyA2UIDataUpdate;
|
|
48
|
+
};
|
|
49
|
+
export default _default;
|