@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,88 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ChatEngine 事件总线实现
|
|
3
|
+
*/
|
|
4
|
+
import type { ChatEngineEventPayloadMap, ChatEventBusOptions, EventCallback, EventFilter, EventHistoryItem, IChatEventBus, UnsubscribeFn } from './types';
|
|
5
|
+
import { ChatEngineEventType } from './types';
|
|
6
|
+
/**
|
|
7
|
+
* ChatEventBus - 聊天引擎事件总线
|
|
8
|
+
*
|
|
9
|
+
* 提供统一的事件发布/订阅机制,支持:
|
|
10
|
+
* - 类型安全的事件订阅和发布
|
|
11
|
+
* - 一次性订阅 (once)
|
|
12
|
+
* - Promise 方式等待事件 (waitFor)
|
|
13
|
+
* - 带过滤条件的等待 (waitForMatch)
|
|
14
|
+
* - 自定义事件支持
|
|
15
|
+
* - 事件历史记录(调试用)
|
|
16
|
+
*/
|
|
17
|
+
export declare class ChatEventBus implements IChatEventBus {
|
|
18
|
+
private listeners;
|
|
19
|
+
private onceListeners;
|
|
20
|
+
private customListeners;
|
|
21
|
+
private history;
|
|
22
|
+
private options;
|
|
23
|
+
private destroyed;
|
|
24
|
+
constructor(options?: ChatEventBusOptions);
|
|
25
|
+
/**
|
|
26
|
+
* 订阅事件
|
|
27
|
+
*/
|
|
28
|
+
on<E extends ChatEngineEventType>(event: E, callback: EventCallback<ChatEngineEventPayloadMap[E]>): UnsubscribeFn;
|
|
29
|
+
/**
|
|
30
|
+
* 一次性订阅
|
|
31
|
+
*/
|
|
32
|
+
once<E extends ChatEngineEventType>(event: E, callback: EventCallback<ChatEngineEventPayloadMap[E]>): UnsubscribeFn;
|
|
33
|
+
/**
|
|
34
|
+
* 取消订阅
|
|
35
|
+
*/
|
|
36
|
+
off<E extends ChatEngineEventType>(event: E, callback?: EventCallback<ChatEngineEventPayloadMap[E]>): void;
|
|
37
|
+
/**
|
|
38
|
+
* 发布事件
|
|
39
|
+
*/
|
|
40
|
+
emit<E extends ChatEngineEventType>(event: E, payload: ChatEngineEventPayloadMap[E]): void;
|
|
41
|
+
/**
|
|
42
|
+
* 等待事件(Promise 方式)
|
|
43
|
+
*/
|
|
44
|
+
waitFor<E extends ChatEngineEventType>(event: E, timeout?: number): Promise<ChatEngineEventPayloadMap[E]>;
|
|
45
|
+
/**
|
|
46
|
+
* 带过滤条件的等待
|
|
47
|
+
*/
|
|
48
|
+
waitForMatch<E extends ChatEngineEventType>(event: E, filter: EventFilter<ChatEngineEventPayloadMap[E]>, timeout?: number): Promise<ChatEngineEventPayloadMap[E]>;
|
|
49
|
+
/**
|
|
50
|
+
* 订阅自定义事件
|
|
51
|
+
*/
|
|
52
|
+
onCustom<T = unknown>(eventName: string, callback: EventCallback<T>): UnsubscribeFn;
|
|
53
|
+
/**
|
|
54
|
+
* 发布自定义事件
|
|
55
|
+
*/
|
|
56
|
+
emitCustom<T = unknown>(eventName: string, data: T): void;
|
|
57
|
+
/**
|
|
58
|
+
* 获取事件历史记录
|
|
59
|
+
*/
|
|
60
|
+
getHistory(): EventHistoryItem[];
|
|
61
|
+
/**
|
|
62
|
+
* 清理所有订阅
|
|
63
|
+
*/
|
|
64
|
+
clear(): void;
|
|
65
|
+
/**
|
|
66
|
+
* 销毁事件总线
|
|
67
|
+
*/
|
|
68
|
+
destroy(): void;
|
|
69
|
+
/**
|
|
70
|
+
* 获取指定事件的监听器数量
|
|
71
|
+
*/
|
|
72
|
+
listenerCount(event: ChatEngineEventType): number;
|
|
73
|
+
/**
|
|
74
|
+
* 获取所有事件的监听器数量
|
|
75
|
+
*/
|
|
76
|
+
getTotalListenerCount(): number;
|
|
77
|
+
/**
|
|
78
|
+
* 检查是否有指定事件的监听器
|
|
79
|
+
*/
|
|
80
|
+
hasListeners(event: ChatEngineEventType): boolean;
|
|
81
|
+
private recordHistory;
|
|
82
|
+
private checkDestroyed;
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* 创建事件总线实例
|
|
86
|
+
*/
|
|
87
|
+
export declare function createEventBus(options?: ChatEventBusOptions): IChatEventBus;
|
|
88
|
+
export { ChatEngineEventType };
|
|
@@ -0,0 +1,295 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* tdesign v1.0.2-alpha.15
|
|
3
|
+
* (c) 2026 tdesign
|
|
4
|
+
* @license MIT
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
import _toConsumableArray from '@babel/runtime/helpers/toConsumableArray';
|
|
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 { ChatEngineEventType } from './types.js';
|
|
12
|
+
export { ChatEngineEventType } from './types.js';
|
|
13
|
+
|
|
14
|
+
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
15
|
+
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
16
|
+
var ChatEventBus = /*#__PURE__*/function () {
|
|
17
|
+
function ChatEventBus() {
|
|
18
|
+
var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
19
|
+
_classCallCheck(this, ChatEventBus);
|
|
20
|
+
_defineProperty(this, "listeners", /* @__PURE__ */new Map());
|
|
21
|
+
_defineProperty(this, "onceListeners", /* @__PURE__ */new Map());
|
|
22
|
+
_defineProperty(this, "customListeners", /* @__PURE__ */new Map());
|
|
23
|
+
_defineProperty(this, "history", []);
|
|
24
|
+
_defineProperty(this, "destroyed", false);
|
|
25
|
+
this.options = _objectSpread({
|
|
26
|
+
debug: false,
|
|
27
|
+
maxListeners: 100,
|
|
28
|
+
historySize: 0
|
|
29
|
+
}, options);
|
|
30
|
+
}
|
|
31
|
+
return _createClass(ChatEventBus, [{
|
|
32
|
+
key: "on",
|
|
33
|
+
value: function on(event, callback) {
|
|
34
|
+
var _this = this;
|
|
35
|
+
this.checkDestroyed();
|
|
36
|
+
if (!this.listeners.has(event)) {
|
|
37
|
+
this.listeners.set(event, /* @__PURE__ */new Set());
|
|
38
|
+
}
|
|
39
|
+
var listeners = this.listeners.get(event);
|
|
40
|
+
if (listeners.size >= this.options.maxListeners) {
|
|
41
|
+
console.warn("[ChatEventBus] Maximum listeners (".concat(this.options.maxListeners, ") exceeded for event: ").concat(event, ". Consider increasing maxListeners or removing unused listeners."));
|
|
42
|
+
}
|
|
43
|
+
listeners.add(callback);
|
|
44
|
+
if (this.options.debug) {
|
|
45
|
+
console.log("[ChatEventBus] Subscribed to event: ".concat(event, ", total listeners: ").concat(listeners.size));
|
|
46
|
+
}
|
|
47
|
+
return function () {
|
|
48
|
+
return _this.off(event, callback);
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
}, {
|
|
52
|
+
key: "once",
|
|
53
|
+
value: function once(event, callback) {
|
|
54
|
+
var _this2 = this;
|
|
55
|
+
this.checkDestroyed();
|
|
56
|
+
if (!this.onceListeners.has(event)) {
|
|
57
|
+
this.onceListeners.set(event, /* @__PURE__ */new Set());
|
|
58
|
+
}
|
|
59
|
+
this.onceListeners.get(event).add(callback);
|
|
60
|
+
if (this.options.debug) {
|
|
61
|
+
console.log("[ChatEventBus] Once subscribed to event: ".concat(event));
|
|
62
|
+
}
|
|
63
|
+
return function () {
|
|
64
|
+
var _this2$onceListeners$;
|
|
65
|
+
return (_this2$onceListeners$ = _this2.onceListeners.get(event)) === null || _this2$onceListeners$ === void 0 ? void 0 : _this2$onceListeners$["delete"](callback);
|
|
66
|
+
};
|
|
67
|
+
}
|
|
68
|
+
}, {
|
|
69
|
+
key: "off",
|
|
70
|
+
value: function off(event, callback) {
|
|
71
|
+
if (callback) {
|
|
72
|
+
var _this$listeners$get, _this$onceListeners$g;
|
|
73
|
+
(_this$listeners$get = this.listeners.get(event)) === null || _this$listeners$get === void 0 || _this$listeners$get["delete"](callback);
|
|
74
|
+
(_this$onceListeners$g = this.onceListeners.get(event)) === null || _this$onceListeners$g === void 0 || _this$onceListeners$g["delete"](callback);
|
|
75
|
+
if (this.options.debug) {
|
|
76
|
+
console.log("[ChatEventBus] Unsubscribed specific callback from event: ".concat(event));
|
|
77
|
+
}
|
|
78
|
+
} else {
|
|
79
|
+
this.listeners["delete"](event);
|
|
80
|
+
this.onceListeners["delete"](event);
|
|
81
|
+
if (this.options.debug) {
|
|
82
|
+
console.log("[ChatEventBus] Unsubscribed all callbacks from event: ".concat(event));
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
}, {
|
|
87
|
+
key: "emit",
|
|
88
|
+
value: function emit(event, payload) {
|
|
89
|
+
var _this$listeners$get2;
|
|
90
|
+
if (this.destroyed) return;
|
|
91
|
+
if (this.options.historySize > 0) {
|
|
92
|
+
this.recordHistory(event, payload);
|
|
93
|
+
}
|
|
94
|
+
if (this.options.debug) {
|
|
95
|
+
console.log("[ChatEventBus] Emitting event: ".concat(event), payload);
|
|
96
|
+
}
|
|
97
|
+
(_this$listeners$get2 = this.listeners.get(event)) === null || _this$listeners$get2 === void 0 || _this$listeners$get2.forEach(function (cb) {
|
|
98
|
+
try {
|
|
99
|
+
cb(payload);
|
|
100
|
+
} catch (error) {
|
|
101
|
+
console.error("[ChatEventBus] Error in event handler for ".concat(event, ":"), error);
|
|
102
|
+
}
|
|
103
|
+
});
|
|
104
|
+
var onceSubs = this.onceListeners.get(event);
|
|
105
|
+
if (onceSubs && onceSubs.size > 0) {
|
|
106
|
+
onceSubs.forEach(function (cb) {
|
|
107
|
+
try {
|
|
108
|
+
cb(payload);
|
|
109
|
+
} catch (error) {
|
|
110
|
+
console.error("[ChatEventBus] Error in once handler for ".concat(event, ":"), error);
|
|
111
|
+
}
|
|
112
|
+
});
|
|
113
|
+
onceSubs.clear();
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
}, {
|
|
117
|
+
key: "waitFor",
|
|
118
|
+
value: function waitFor(event) {
|
|
119
|
+
var _this3 = this;
|
|
120
|
+
var timeout = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 3e4;
|
|
121
|
+
this.checkDestroyed();
|
|
122
|
+
return new Promise(function (resolve, reject) {
|
|
123
|
+
var timer = null;
|
|
124
|
+
var handler = function handler(payload) {
|
|
125
|
+
if (timer) {
|
|
126
|
+
clearTimeout(timer);
|
|
127
|
+
}
|
|
128
|
+
resolve(payload);
|
|
129
|
+
};
|
|
130
|
+
if (timeout > 0) {
|
|
131
|
+
timer = setTimeout(function () {
|
|
132
|
+
var _this3$onceListeners$;
|
|
133
|
+
(_this3$onceListeners$ = _this3.onceListeners.get(event)) === null || _this3$onceListeners$ === void 0 || _this3$onceListeners$["delete"](handler);
|
|
134
|
+
reject(new Error("[ChatEventBus] Timeout waiting for event: ".concat(event, " (").concat(timeout, "ms)")));
|
|
135
|
+
}, timeout);
|
|
136
|
+
}
|
|
137
|
+
_this3.once(event, handler);
|
|
138
|
+
});
|
|
139
|
+
}
|
|
140
|
+
}, {
|
|
141
|
+
key: "waitForMatch",
|
|
142
|
+
value: function waitForMatch(event, filter) {
|
|
143
|
+
var _this4 = this;
|
|
144
|
+
var timeout = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 3e4;
|
|
145
|
+
this.checkDestroyed();
|
|
146
|
+
return new Promise(function (resolve, reject) {
|
|
147
|
+
var timer = null;
|
|
148
|
+
var unsubscribe = null;
|
|
149
|
+
var handler = function handler(payload) {
|
|
150
|
+
try {
|
|
151
|
+
if (filter(payload)) {
|
|
152
|
+
if (timer) {
|
|
153
|
+
clearTimeout(timer);
|
|
154
|
+
}
|
|
155
|
+
if (unsubscribe) {
|
|
156
|
+
unsubscribe();
|
|
157
|
+
}
|
|
158
|
+
resolve(payload);
|
|
159
|
+
}
|
|
160
|
+
} catch (error) {
|
|
161
|
+
console.error("[ChatEventBus] Error in filter for ".concat(event, ":"), error);
|
|
162
|
+
}
|
|
163
|
+
};
|
|
164
|
+
if (timeout > 0) {
|
|
165
|
+
timer = setTimeout(function () {
|
|
166
|
+
if (unsubscribe) {
|
|
167
|
+
unsubscribe();
|
|
168
|
+
}
|
|
169
|
+
reject(new Error("[ChatEventBus] Timeout waiting for matching event: ".concat(event, " (").concat(timeout, "ms)")));
|
|
170
|
+
}, timeout);
|
|
171
|
+
}
|
|
172
|
+
unsubscribe = _this4.on(event, handler);
|
|
173
|
+
});
|
|
174
|
+
}
|
|
175
|
+
}, {
|
|
176
|
+
key: "onCustom",
|
|
177
|
+
value: function onCustom(eventName, callback) {
|
|
178
|
+
var _this5 = this;
|
|
179
|
+
this.checkDestroyed();
|
|
180
|
+
var key = "custom:".concat(eventName);
|
|
181
|
+
if (!this.customListeners.has(key)) {
|
|
182
|
+
this.customListeners.set(key, /* @__PURE__ */new Set());
|
|
183
|
+
}
|
|
184
|
+
this.customListeners.get(key).add(callback);
|
|
185
|
+
if (this.options.debug) {
|
|
186
|
+
console.log("[ChatEventBus] Subscribed to custom event: ".concat(eventName));
|
|
187
|
+
}
|
|
188
|
+
return function () {
|
|
189
|
+
var _this5$customListener;
|
|
190
|
+
return (_this5$customListener = _this5.customListeners.get(key)) === null || _this5$customListener === void 0 ? void 0 : _this5$customListener["delete"](callback);
|
|
191
|
+
};
|
|
192
|
+
}
|
|
193
|
+
}, {
|
|
194
|
+
key: "emitCustom",
|
|
195
|
+
value: function emitCustom(eventName, data) {
|
|
196
|
+
var _this$customListeners;
|
|
197
|
+
if (this.destroyed) return;
|
|
198
|
+
var key = "custom:".concat(eventName);
|
|
199
|
+
if (this.options.historySize > 0) {
|
|
200
|
+
this.recordHistory(ChatEngineEventType.CUSTOM, {
|
|
201
|
+
eventName: eventName,
|
|
202
|
+
data: data
|
|
203
|
+
});
|
|
204
|
+
}
|
|
205
|
+
if (this.options.debug) {
|
|
206
|
+
console.log("[ChatEventBus] Emitting custom event: ".concat(eventName), data);
|
|
207
|
+
}
|
|
208
|
+
(_this$customListeners = this.customListeners.get(key)) === null || _this$customListeners === void 0 || _this$customListeners.forEach(function (cb) {
|
|
209
|
+
try {
|
|
210
|
+
cb(data);
|
|
211
|
+
} catch (error) {
|
|
212
|
+
console.error("[ChatEventBus] Error in custom event handler for ".concat(eventName, ":"), error);
|
|
213
|
+
}
|
|
214
|
+
});
|
|
215
|
+
}
|
|
216
|
+
}, {
|
|
217
|
+
key: "getHistory",
|
|
218
|
+
value: function getHistory() {
|
|
219
|
+
return _toConsumableArray(this.history);
|
|
220
|
+
}
|
|
221
|
+
}, {
|
|
222
|
+
key: "clear",
|
|
223
|
+
value: function clear() {
|
|
224
|
+
this.listeners.clear();
|
|
225
|
+
this.onceListeners.clear();
|
|
226
|
+
this.customListeners.clear();
|
|
227
|
+
this.history = [];
|
|
228
|
+
if (this.options.debug) {
|
|
229
|
+
console.log("[ChatEventBus] All subscriptions cleared");
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
}, {
|
|
233
|
+
key: "destroy",
|
|
234
|
+
value: function destroy() {
|
|
235
|
+
this.clear();
|
|
236
|
+
this.destroyed = true;
|
|
237
|
+
if (this.options.debug) {
|
|
238
|
+
console.log("[ChatEventBus] Event bus destroyed");
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
}, {
|
|
242
|
+
key: "listenerCount",
|
|
243
|
+
value: function listenerCount(event) {
|
|
244
|
+
var _this$listeners$get3, _this$onceListeners$g2;
|
|
245
|
+
var regular = ((_this$listeners$get3 = this.listeners.get(event)) === null || _this$listeners$get3 === void 0 ? void 0 : _this$listeners$get3.size) || 0;
|
|
246
|
+
var once = ((_this$onceListeners$g2 = this.onceListeners.get(event)) === null || _this$onceListeners$g2 === void 0 ? void 0 : _this$onceListeners$g2.size) || 0;
|
|
247
|
+
return regular + once;
|
|
248
|
+
}
|
|
249
|
+
}, {
|
|
250
|
+
key: "getTotalListenerCount",
|
|
251
|
+
value: function getTotalListenerCount() {
|
|
252
|
+
var total = 0;
|
|
253
|
+
this.listeners.forEach(function (set) {
|
|
254
|
+
total += set.size;
|
|
255
|
+
});
|
|
256
|
+
this.onceListeners.forEach(function (set) {
|
|
257
|
+
total += set.size;
|
|
258
|
+
});
|
|
259
|
+
this.customListeners.forEach(function (set) {
|
|
260
|
+
total += set.size;
|
|
261
|
+
});
|
|
262
|
+
return total;
|
|
263
|
+
}
|
|
264
|
+
}, {
|
|
265
|
+
key: "hasListeners",
|
|
266
|
+
value: function hasListeners(event) {
|
|
267
|
+
return this.listenerCount(event) > 0;
|
|
268
|
+
}
|
|
269
|
+
}, {
|
|
270
|
+
key: "recordHistory",
|
|
271
|
+
value: function recordHistory(event, payload) {
|
|
272
|
+
this.history.push({
|
|
273
|
+
event: event,
|
|
274
|
+
payload: payload,
|
|
275
|
+
timestamp: Date.now()
|
|
276
|
+
});
|
|
277
|
+
while (this.history.length > this.options.historySize) {
|
|
278
|
+
this.history.shift();
|
|
279
|
+
}
|
|
280
|
+
}
|
|
281
|
+
}, {
|
|
282
|
+
key: "checkDestroyed",
|
|
283
|
+
value: function checkDestroyed() {
|
|
284
|
+
if (this.destroyed) {
|
|
285
|
+
throw new Error("[ChatEventBus] Event bus has been destroyed");
|
|
286
|
+
}
|
|
287
|
+
}
|
|
288
|
+
}]);
|
|
289
|
+
}();
|
|
290
|
+
function createEventBus(options) {
|
|
291
|
+
return new ChatEventBus(options);
|
|
292
|
+
}
|
|
293
|
+
|
|
294
|
+
export { ChatEventBus, createEventBus };
|
|
295
|
+
//# sourceMappingURL=ChatEventBus.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ChatEventBus.js","sources":["../../../../../pro-components/chat/chat-engine/core/event-bus/ChatEventBus.ts"],"sourcesContent":["/**\n * ChatEngine 事件总线实现\n */\nimport type {\n ChatEngineEventPayloadMap,\n ChatEventBusOptions,\n EventCallback,\n EventFilter,\n EventHistoryItem,\n IChatEventBus,\n UnsubscribeFn,\n} from './types';\nimport { ChatEngineEventType } from './types';\n\n/**\n * ChatEventBus - 聊天引擎事件总线\n *\n * 提供统一的事件发布/订阅机制,支持:\n * - 类型安全的事件订阅和发布\n * - 一次性订阅 (once)\n * - Promise 方式等待事件 (waitFor)\n * - 带过滤条件的等待 (waitForMatch)\n * - 自定义事件支持\n * - 事件历史记录(调试用)\n */\nexport class ChatEventBus implements IChatEventBus {\n private listeners: Map<string, Set<EventCallback>> = new Map();\n\n private onceListeners: Map<string, Set<EventCallback>> = new Map();\n\n private customListeners: Map<string, Set<EventCallback>> = new Map();\n\n private history: EventHistoryItem[] = [];\n\n private options: Required<ChatEventBusOptions>;\n\n private destroyed = false;\n\n constructor(options: ChatEventBusOptions = {}) {\n this.options = {\n debug: false,\n maxListeners: 100,\n historySize: 0,\n ...options,\n };\n }\n\n /**\n * 订阅事件\n */\n on<E extends ChatEngineEventType>(event: E, callback: EventCallback<ChatEngineEventPayloadMap[E]>): UnsubscribeFn {\n this.checkDestroyed();\n\n if (!this.listeners.has(event)) {\n this.listeners.set(event, new Set());\n }\n\n const listeners = this.listeners.get(event)!;\n\n // 检查监听器数量限制\n if (listeners.size >= this.options.maxListeners) {\n console.warn(\n `[ChatEventBus] Maximum listeners (${this.options.maxListeners}) exceeded for event: ${event}. ` +\n 'Consider increasing maxListeners or removing unused listeners.',\n );\n }\n\n listeners.add(callback as EventCallback);\n\n if (this.options.debug) {\n console.log(`[ChatEventBus] Subscribed to event: ${event}, total listeners: ${listeners.size}`);\n }\n\n return () => this.off(event, callback);\n }\n\n /**\n * 一次性订阅\n */\n once<E extends ChatEngineEventType>(event: E, callback: EventCallback<ChatEngineEventPayloadMap[E]>): UnsubscribeFn {\n this.checkDestroyed();\n\n if (!this.onceListeners.has(event)) {\n this.onceListeners.set(event, new Set());\n }\n\n this.onceListeners.get(event)!.add(callback as EventCallback);\n\n if (this.options.debug) {\n console.log(`[ChatEventBus] Once subscribed to event: ${event}`);\n }\n\n return () => this.onceListeners.get(event)?.delete(callback as EventCallback);\n }\n\n /**\n * 取消订阅\n */\n off<E extends ChatEngineEventType>(event: E, callback?: EventCallback<ChatEngineEventPayloadMap[E]>): void {\n if (callback) {\n this.listeners.get(event)?.delete(callback as EventCallback);\n this.onceListeners.get(event)?.delete(callback as EventCallback);\n\n if (this.options.debug) {\n console.log(`[ChatEventBus] Unsubscribed specific callback from event: ${event}`);\n }\n } else {\n this.listeners.delete(event);\n this.onceListeners.delete(event);\n\n if (this.options.debug) {\n console.log(`[ChatEventBus] Unsubscribed all callbacks from event: ${event}`);\n }\n }\n }\n\n /**\n * 发布事件\n */\n emit<E extends ChatEngineEventType>(event: E, payload: ChatEngineEventPayloadMap[E]): void {\n if (this.destroyed) return;\n\n // 记录历史\n if (this.options.historySize > 0) {\n this.recordHistory(event, payload);\n }\n\n if (this.options.debug) {\n console.log(`[ChatEventBus] Emitting event: ${event}`, payload);\n }\n\n // 通知常规订阅者\n this.listeners.get(event)?.forEach((cb) => {\n try {\n cb(payload);\n } catch (error) {\n console.error(`[ChatEventBus] Error in event handler for ${event}:`, error);\n }\n });\n\n // 通知一次性订阅者并清理\n const onceSubs = this.onceListeners.get(event);\n if (onceSubs && onceSubs.size > 0) {\n onceSubs.forEach((cb) => {\n try {\n cb(payload);\n } catch (error) {\n console.error(`[ChatEventBus] Error in once handler for ${event}:`, error);\n }\n });\n onceSubs.clear();\n }\n }\n\n /**\n * 等待事件(Promise 方式)\n */\n waitFor<E extends ChatEngineEventType>(event: E, timeout = 30000): Promise<ChatEngineEventPayloadMap[E]> {\n this.checkDestroyed();\n\n return new Promise((resolve, reject) => {\n let timer: ReturnType<typeof setTimeout> | null = null;\n\n const handler = (payload: ChatEngineEventPayloadMap[E]) => {\n if (timer) {\n clearTimeout(timer);\n }\n resolve(payload);\n };\n\n if (timeout > 0) {\n timer = setTimeout(() => {\n this.onceListeners.get(event)?.delete(handler as EventCallback);\n reject(new Error(`[ChatEventBus] Timeout waiting for event: ${event} (${timeout}ms)`));\n }, timeout);\n }\n\n this.once(event, handler);\n });\n }\n\n /**\n * 带过滤条件的等待\n */\n waitForMatch<E extends ChatEngineEventType>(\n event: E,\n filter: EventFilter<ChatEngineEventPayloadMap[E]>,\n timeout = 30000,\n ): Promise<ChatEngineEventPayloadMap[E]> {\n this.checkDestroyed();\n\n return new Promise((resolve, reject) => {\n let timer: ReturnType<typeof setTimeout> | null = null;\n let unsubscribe: UnsubscribeFn | null = null;\n\n const handler = (payload: ChatEngineEventPayloadMap[E]) => {\n try {\n if (filter(payload)) {\n if (timer) {\n clearTimeout(timer);\n }\n if (unsubscribe) {\n unsubscribe();\n }\n resolve(payload);\n }\n } catch (error) {\n console.error(`[ChatEventBus] Error in filter for ${event}:`, error);\n }\n };\n\n if (timeout > 0) {\n timer = setTimeout(() => {\n if (unsubscribe) {\n unsubscribe();\n }\n reject(new Error(`[ChatEventBus] Timeout waiting for matching event: ${event} (${timeout}ms)`));\n }, timeout);\n }\n\n unsubscribe = this.on(event, handler);\n });\n }\n\n /**\n * 订阅自定义事件\n */\n onCustom<T = unknown>(eventName: string, callback: EventCallback<T>): UnsubscribeFn {\n this.checkDestroyed();\n\n const key = `custom:${eventName}`;\n if (!this.customListeners.has(key)) {\n this.customListeners.set(key, new Set());\n }\n\n this.customListeners.get(key)!.add(callback as EventCallback);\n\n if (this.options.debug) {\n console.log(`[ChatEventBus] Subscribed to custom event: ${eventName}`);\n }\n\n return () => this.customListeners.get(key)?.delete(callback as EventCallback);\n }\n\n /**\n * 发布自定义事件\n */\n emitCustom<T = unknown>(eventName: string, data: T): void {\n if (this.destroyed) return;\n\n const key = `custom:${eventName}`;\n\n // 记录历史\n if (this.options.historySize > 0) {\n this.recordHistory(ChatEngineEventType.CUSTOM, { eventName, data });\n }\n\n if (this.options.debug) {\n console.log(`[ChatEventBus] Emitting custom event: ${eventName}`, data);\n }\n\n this.customListeners.get(key)?.forEach((cb) => {\n try {\n cb(data);\n } catch (error) {\n console.error(`[ChatEventBus] Error in custom event handler for ${eventName}:`, error);\n }\n });\n }\n\n /**\n * 获取事件历史记录\n */\n getHistory(): EventHistoryItem[] {\n return [...this.history];\n }\n\n /**\n * 清理所有订阅\n */\n clear(): void {\n this.listeners.clear();\n this.onceListeners.clear();\n this.customListeners.clear();\n this.history = [];\n\n if (this.options.debug) {\n console.log('[ChatEventBus] All subscriptions cleared');\n }\n }\n\n /**\n * 销毁事件总线\n */\n destroy(): void {\n this.clear();\n this.destroyed = true;\n\n if (this.options.debug) {\n console.log('[ChatEventBus] Event bus destroyed');\n }\n }\n\n /**\n * 获取指定事件的监听器数量\n */\n listenerCount(event: ChatEngineEventType): number {\n const regular = this.listeners.get(event)?.size || 0;\n const once = this.onceListeners.get(event)?.size || 0;\n return regular + once;\n }\n\n /**\n * 获取所有事件的监听器数量\n */\n getTotalListenerCount(): number {\n let total = 0;\n this.listeners.forEach((set) => {\n total += set.size;\n });\n this.onceListeners.forEach((set) => {\n total += set.size;\n });\n this.customListeners.forEach((set) => {\n total += set.size;\n });\n return total;\n }\n\n /**\n * 检查是否有指定事件的监听器\n */\n hasListeners(event: ChatEngineEventType): boolean {\n return this.listenerCount(event) > 0;\n }\n\n private recordHistory(event: ChatEngineEventType | string, payload: unknown): void {\n this.history.push({\n event,\n payload,\n timestamp: Date.now(),\n });\n\n // 保持历史记录在限制范围内\n while (this.history.length > this.options.historySize) {\n this.history.shift();\n }\n }\n\n private checkDestroyed(): void {\n if (this.destroyed) {\n throw new Error('[ChatEventBus] Event bus has been destroyed');\n }\n }\n}\n\n/**\n * 创建事件总线实例\n */\nexport function createEventBus(options?: ChatEventBusOptions): IChatEventBus {\n return new ChatEventBus(options);\n}\n\nexport { ChatEngineEventType };\n"],"names":["ChatEventBus","options","arguments","length","undefined","_classCallCheck","_defineProperty","Map","_objectSpread","debug","maxListeners","historySize","_createClass","key","value","on","event","callback","_this","checkDestroyed","listeners","has","set","Set","get","size","console","warn","concat","add","log","off","once","_this2","onceListeners","_this2$onceListeners$","_this$listeners$get","_this$onceListeners$g","emit","payload","_this$listeners$get2","destroyed","recordHistory","forEach","cb","error","onceSubs","clear","waitFor","_this3","timeout","Promise","resolve","reject","timer","handler","clearTimeout","setTimeout","_this3$onceListeners$","Error","waitForMatch","filter","_this4","unsubscribe","onCustom","eventName","_this5","customListeners","_this5$customListener","emitCustom","data","_this$customListeners","ChatEngineEventType","CUSTOM","getHistory","_toConsumableArray","history","destroy","listenerCount","_this$listeners$get3","_this$onceListeners$g2","regular","getTotalListenerCount","total","hasListeners","push","timestamp","Date","now","shift","createEventBus"],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* tdesign v1.0.2-alpha.15
|
|
3
|
+
* (c) 2026 tdesign
|
|
4
|
+
* @license MIT
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
export { ChatEventBus, createEventBus } from './ChatEventBus.js';
|
|
8
|
+
export { ChatEngineEventType } from './types.js';
|
|
9
|
+
import '@babel/runtime/helpers/toConsumableArray';
|
|
10
|
+
import '@babel/runtime/helpers/classCallCheck';
|
|
11
|
+
import '@babel/runtime/helpers/createClass';
|
|
12
|
+
import '@babel/runtime/helpers/defineProperty';
|
|
13
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;"}
|
|
@@ -0,0 +1,230 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ChatEngine 事件总线类型定义
|
|
3
|
+
*/
|
|
4
|
+
import type { AIMessageContent, ChatMessagesData, ChatRequestParams, ChatStatus, ToolCall } from '../type';
|
|
5
|
+
/**
|
|
6
|
+
* 事件类型枚举
|
|
7
|
+
*/
|
|
8
|
+
export declare enum ChatEngineEventType {
|
|
9
|
+
ENGINE_INIT = "engine:init",
|
|
10
|
+
ENGINE_DESTROY = "engine:destroy",
|
|
11
|
+
MESSAGE_CREATE = "message:create",
|
|
12
|
+
MESSAGE_UPDATE = "message:update",
|
|
13
|
+
MESSAGE_DELETE = "message:delete",
|
|
14
|
+
MESSAGE_CLEAR = "message:clear",
|
|
15
|
+
MESSAGE_STATUS_CHANGE = "message:status",
|
|
16
|
+
MESSAGE_CONTENT_APPEND = "message:content:append",
|
|
17
|
+
REQUEST_START = "request:start",
|
|
18
|
+
REQUEST_STREAM = "request:stream",
|
|
19
|
+
REQUEST_COMPLETE = "request:complete",
|
|
20
|
+
REQUEST_ERROR = "request:error",
|
|
21
|
+
REQUEST_ABORT = "request:abort",
|
|
22
|
+
AGUI_RUN_START = "agui:run:start",
|
|
23
|
+
AGUI_RUN_COMPLETE = "agui:run:complete",
|
|
24
|
+
AGUI_RUN_ERROR = "agui:run:error",
|
|
25
|
+
AGUI_STATE_UPDATE = "agui:state:update",
|
|
26
|
+
AGUI_TOOLCALL = "agui:toolcall",
|
|
27
|
+
AGUI_ACTIVITY = "agui:activity",
|
|
28
|
+
CUSTOM = "custom"
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* 事件载荷类型映射
|
|
32
|
+
*/
|
|
33
|
+
export interface ChatEngineEventPayloadMap {
|
|
34
|
+
[ChatEngineEventType.ENGINE_INIT]: {
|
|
35
|
+
timestamp: number;
|
|
36
|
+
};
|
|
37
|
+
[ChatEngineEventType.ENGINE_DESTROY]: {
|
|
38
|
+
timestamp: number;
|
|
39
|
+
};
|
|
40
|
+
[ChatEngineEventType.MESSAGE_CREATE]: {
|
|
41
|
+
message: ChatMessagesData;
|
|
42
|
+
messages: ChatMessagesData[];
|
|
43
|
+
};
|
|
44
|
+
[ChatEngineEventType.MESSAGE_UPDATE]: {
|
|
45
|
+
messageId: string;
|
|
46
|
+
content: AIMessageContent | AIMessageContent[];
|
|
47
|
+
message: ChatMessagesData;
|
|
48
|
+
};
|
|
49
|
+
[ChatEngineEventType.MESSAGE_DELETE]: {
|
|
50
|
+
messageId: string;
|
|
51
|
+
messages: ChatMessagesData[];
|
|
52
|
+
};
|
|
53
|
+
[ChatEngineEventType.MESSAGE_CLEAR]: {
|
|
54
|
+
timestamp: number;
|
|
55
|
+
};
|
|
56
|
+
[ChatEngineEventType.MESSAGE_STATUS_CHANGE]: {
|
|
57
|
+
messageId: string;
|
|
58
|
+
status: ChatStatus;
|
|
59
|
+
previousStatus?: ChatStatus;
|
|
60
|
+
};
|
|
61
|
+
[ChatEngineEventType.MESSAGE_CONTENT_APPEND]: {
|
|
62
|
+
messageId: string;
|
|
63
|
+
content: AIMessageContent;
|
|
64
|
+
contentIndex: number;
|
|
65
|
+
};
|
|
66
|
+
[ChatEngineEventType.REQUEST_START]: {
|
|
67
|
+
params: ChatRequestParams;
|
|
68
|
+
messageId?: string;
|
|
69
|
+
};
|
|
70
|
+
[ChatEngineEventType.REQUEST_STREAM]: {
|
|
71
|
+
messageId: string;
|
|
72
|
+
chunk: unknown;
|
|
73
|
+
content?: AIMessageContent | AIMessageContent[] | null;
|
|
74
|
+
};
|
|
75
|
+
[ChatEngineEventType.REQUEST_COMPLETE]: {
|
|
76
|
+
messageId: string;
|
|
77
|
+
params: ChatRequestParams;
|
|
78
|
+
message: ChatMessagesData;
|
|
79
|
+
};
|
|
80
|
+
[ChatEngineEventType.REQUEST_ERROR]: {
|
|
81
|
+
messageId: string;
|
|
82
|
+
error: Error | unknown;
|
|
83
|
+
params?: ChatRequestParams;
|
|
84
|
+
};
|
|
85
|
+
[ChatEngineEventType.REQUEST_ABORT]: {
|
|
86
|
+
messageId: string;
|
|
87
|
+
params: ChatRequestParams;
|
|
88
|
+
};
|
|
89
|
+
[ChatEngineEventType.AGUI_RUN_START]: {
|
|
90
|
+
runId: string;
|
|
91
|
+
threadId?: string;
|
|
92
|
+
timestamp: number;
|
|
93
|
+
};
|
|
94
|
+
[ChatEngineEventType.AGUI_RUN_COMPLETE]: {
|
|
95
|
+
runId: string;
|
|
96
|
+
threadId?: string;
|
|
97
|
+
timestamp: number;
|
|
98
|
+
};
|
|
99
|
+
[ChatEngineEventType.AGUI_RUN_ERROR]: {
|
|
100
|
+
error: Error | unknown;
|
|
101
|
+
runId?: string;
|
|
102
|
+
};
|
|
103
|
+
[ChatEngineEventType.AGUI_STATE_UPDATE]: {
|
|
104
|
+
stateKey: string;
|
|
105
|
+
state: unknown;
|
|
106
|
+
previousState?: unknown;
|
|
107
|
+
};
|
|
108
|
+
[ChatEngineEventType.AGUI_TOOLCALL]: {
|
|
109
|
+
toolCall: ToolCall;
|
|
110
|
+
eventType: string;
|
|
111
|
+
};
|
|
112
|
+
[ChatEngineEventType.AGUI_ACTIVITY]: {
|
|
113
|
+
activityType: string;
|
|
114
|
+
messageId?: string;
|
|
115
|
+
content: unknown;
|
|
116
|
+
};
|
|
117
|
+
[ChatEngineEventType.CUSTOM]: {
|
|
118
|
+
eventName: string;
|
|
119
|
+
data: unknown;
|
|
120
|
+
};
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* 事件回调函数类型
|
|
124
|
+
*/
|
|
125
|
+
export type EventCallback<T = unknown> = (payload: T) => void;
|
|
126
|
+
/**
|
|
127
|
+
* 取消订阅函数类型
|
|
128
|
+
*/
|
|
129
|
+
export type UnsubscribeFn = () => void;
|
|
130
|
+
/**
|
|
131
|
+
* 事件过滤器类型
|
|
132
|
+
*/
|
|
133
|
+
export type EventFilter<T = unknown> = (payload: T) => boolean;
|
|
134
|
+
/**
|
|
135
|
+
* 事件总线配置
|
|
136
|
+
*/
|
|
137
|
+
export interface ChatEventBusOptions {
|
|
138
|
+
/**
|
|
139
|
+
* 是否启用调试模式
|
|
140
|
+
* @default false
|
|
141
|
+
*/
|
|
142
|
+
debug?: boolean;
|
|
143
|
+
/**
|
|
144
|
+
* 最大监听器数量(每个事件)
|
|
145
|
+
* @default 100
|
|
146
|
+
*/
|
|
147
|
+
maxListeners?: number;
|
|
148
|
+
/**
|
|
149
|
+
* 事件历史记录长度(用于调试)
|
|
150
|
+
* @default 0
|
|
151
|
+
*/
|
|
152
|
+
historySize?: number;
|
|
153
|
+
}
|
|
154
|
+
/**
|
|
155
|
+
* 事件历史记录
|
|
156
|
+
*/
|
|
157
|
+
export interface EventHistoryItem {
|
|
158
|
+
event: ChatEngineEventType | string;
|
|
159
|
+
payload: unknown;
|
|
160
|
+
timestamp: number;
|
|
161
|
+
}
|
|
162
|
+
/**
|
|
163
|
+
* 事件总线接口
|
|
164
|
+
*/
|
|
165
|
+
export interface IChatEventBus {
|
|
166
|
+
/**
|
|
167
|
+
* 订阅事件
|
|
168
|
+
* @param event 事件类型
|
|
169
|
+
* @param callback 回调函数
|
|
170
|
+
* @returns 取消订阅函数
|
|
171
|
+
*/
|
|
172
|
+
on<E extends ChatEngineEventType>(event: E, callback: EventCallback<ChatEngineEventPayloadMap[E]>): UnsubscribeFn;
|
|
173
|
+
/**
|
|
174
|
+
* 一次性订阅
|
|
175
|
+
* @param event 事件类型
|
|
176
|
+
* @param callback 回调函数
|
|
177
|
+
* @returns 取消订阅函数
|
|
178
|
+
*/
|
|
179
|
+
once<E extends ChatEngineEventType>(event: E, callback: EventCallback<ChatEngineEventPayloadMap[E]>): UnsubscribeFn;
|
|
180
|
+
/**
|
|
181
|
+
* 取消订阅
|
|
182
|
+
* @param event 事件类型
|
|
183
|
+
* @param callback 可选的回调函数,不传则取消该事件所有订阅
|
|
184
|
+
*/
|
|
185
|
+
off<E extends ChatEngineEventType>(event: E, callback?: EventCallback<ChatEngineEventPayloadMap[E]>): void;
|
|
186
|
+
/**
|
|
187
|
+
* 发布事件
|
|
188
|
+
* @param event 事件类型
|
|
189
|
+
* @param payload 事件载荷
|
|
190
|
+
*/
|
|
191
|
+
emit<E extends ChatEngineEventType>(event: E, payload: ChatEngineEventPayloadMap[E]): void;
|
|
192
|
+
/**
|
|
193
|
+
* 等待事件(Promise 方式)
|
|
194
|
+
* @param event 事件类型
|
|
195
|
+
* @param timeout 超时时间(毫秒)
|
|
196
|
+
* @returns Promise
|
|
197
|
+
*/
|
|
198
|
+
waitFor<E extends ChatEngineEventType>(event: E, timeout?: number): Promise<ChatEngineEventPayloadMap[E]>;
|
|
199
|
+
/**
|
|
200
|
+
* 带过滤条件的等待
|
|
201
|
+
* @param event 事件类型
|
|
202
|
+
* @param filter 过滤函数
|
|
203
|
+
* @param timeout 超时时间
|
|
204
|
+
*/
|
|
205
|
+
waitForMatch<E extends ChatEngineEventType>(event: E, filter: EventFilter<ChatEngineEventPayloadMap[E]>, timeout?: number): Promise<ChatEngineEventPayloadMap[E]>;
|
|
206
|
+
/**
|
|
207
|
+
* 订阅自定义事件
|
|
208
|
+
* @param eventName 自定义事件名
|
|
209
|
+
* @param callback 回调函数
|
|
210
|
+
*/
|
|
211
|
+
onCustom<T = unknown>(eventName: string, callback: EventCallback<T>): UnsubscribeFn;
|
|
212
|
+
/**
|
|
213
|
+
* 发布自定义事件
|
|
214
|
+
* @param eventName 自定义事件名
|
|
215
|
+
* @param data 数据
|
|
216
|
+
*/
|
|
217
|
+
emitCustom<T = unknown>(eventName: string, data: T): void;
|
|
218
|
+
/**
|
|
219
|
+
* 获取事件历史记录
|
|
220
|
+
*/
|
|
221
|
+
getHistory(): EventHistoryItem[];
|
|
222
|
+
/**
|
|
223
|
+
* 清理所有订阅
|
|
224
|
+
*/
|
|
225
|
+
clear(): void;
|
|
226
|
+
/**
|
|
227
|
+
* 销毁事件总线
|
|
228
|
+
*/
|
|
229
|
+
destroy(): void;
|
|
230
|
+
}
|