@tdesign-react/chat 1.1.0-alpha.16 → 1.1.0-alpha.18
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-3e40d789.js → dep-5d7a98b7.js} +2 -2
- package/es/_chunks/{dep-3e40d789.js.map → dep-5d7a98b7.js.map} +1 -1
- package/es/_chunks/{dep-1ca64fef.js → dep-907337f3.js} +2 -2
- package/es/_chunks/{dep-93283bbd.js.map → dep-907337f3.js.map} +1 -1
- package/es/_chunks/{dep-dfe91b1f.js → dep-e1e84ed7.js} +1 -1
- package/es/_chunks/{dep-13fe70ea.js.map → dep-e1e84ed7.js.map} +1 -1
- package/es/_chunks/{dep-076af7c3.js → dep-ee7a509c.js} +3 -3
- package/es/_chunks/{dep-076af7c3.js.map → dep-ee7a509c.js.map} +1 -1
- 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/activity/index.js +2 -2
- package/es/chat-engine/components/activity/registry.js +1 -1
- package/es/chat-engine/components/activity/render.js +2 -2
- package/es/chat-engine/components/activity/types.js +1 -1
- package/es/chat-engine/components/index.js +12 -6
- package/es/chat-engine/components/index.js.map +1 -1
- package/es/chat-engine/components/json-render/catalog/atomic/button.js +1 -1
- package/es/chat-engine/components/json-render/catalog/atomic/card.js +1 -1
- package/es/chat-engine/components/json-render/catalog/atomic/input.js +12 -6
- package/es/chat-engine/components/json-render/catalog/atomic/input.js.map +1 -1
- package/es/chat-engine/components/json-render/catalog/atomic/layout.js +1 -1
- package/es/chat-engine/components/json-render/catalog/atomic/text.js +1 -1
- package/es/chat-engine/components/json-render/catalog/catalog-to-prompt.js +1 -1
- package/es/chat-engine/components/json-render/contexts/actions.js +2 -2
- package/es/chat-engine/components/json-render/contexts/data.js +2 -2
- package/es/chat-engine/components/json-render/contexts/index.js +2 -2
- package/es/chat-engine/components/json-render/contexts/store.js +1 -1
- package/es/chat-engine/components/json-render/contexts/tree.js +1 -1
- package/es/chat-engine/components/json-render/contexts/validation.js +2 -2
- package/es/chat-engine/components/json-render/contexts/visibility.js +2 -2
- package/es/chat-engine/components/json-render/index.js +12 -6
- package/es/chat-engine/components/json-render/index.js.map +1 -1
- package/es/chat-engine/components/json-render/registry/a2ui-binding.js +12 -6
- package/es/chat-engine/components/json-render/registry/a2ui-binding.js.map +1 -1
- package/es/chat-engine/components/json-render/registry/a2ui-registry.js +12 -6
- package/es/chat-engine/components/json-render/registry/a2ui-registry.js.map +1 -1
- package/es/chat-engine/components/json-render/registry/config.js +12 -6
- package/es/chat-engine/components/json-render/registry/config.js.map +1 -1
- package/es/chat-engine/components/json-render/registry/index.js +12 -6
- package/es/chat-engine/components/json-render/registry/index.js.map +1 -1
- package/es/chat-engine/components/json-render/renderer/A2UIJsonRenderActivityRenderer.js +11 -5
- package/es/chat-engine/components/json-render/renderer/A2UIJsonRenderActivityRenderer.js.map +1 -1
- package/es/chat-engine/components/json-render/renderer/JsonRenderActivityRenderer.js +3 -3
- package/es/chat-engine/components/json-render/renderer/JsonUIRenderer.js +2 -2
- package/es/chat-engine/components/json-render/renderer/_index.js +2 -2
- package/es/chat-engine/components/json-render/types.js +1 -1
- package/es/chat-engine/components/provider/agent-state.js +10 -4
- package/es/chat-engine/components/provider/agent-state.js.map +1 -1
- package/es/chat-engine/components/shared/ComponentErrorBoundary.js +1 -1
- package/es/chat-engine/components/shared/createRegistry.js +1 -1
- package/es/chat-engine/components/shared/index.js +1 -1
- package/es/chat-engine/components/shared/useRegistrationListener.js +1 -1
- package/es/chat-engine/components/toolcall/index.js +10 -4
- 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.js +9 -3
- 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/adapters/a2ui/index.js +1 -1
- package/es/chat-engine/core/adapters/a2ui/processor/A2uiMessageProcessor.js +1 -1
- package/es/chat-engine/core/adapters/a2ui/processor/ComponentTree.js +1 -1
- package/es/chat-engine/core/adapters/a2ui/processor/DataStore.js +1 -1
- package/es/chat-engine/core/adapters/a2ui/processor/PathResolver.js +1 -1
- package/es/chat-engine/core/adapters/a2ui/types/index.js +1 -1
- package/es/chat-engine/core/adapters/a2ui/types/types.js +1 -1
- package/es/chat-engine/core/adapters/a2ui/utils/binding.js +1 -1
- package/es/chat-engine/core/adapters/a2ui/utils/index.js +1 -1
- package/es/chat-engine/core/adapters/a2ui/utils/validation.js +1 -1
- package/es/chat-engine/core/adapters/agui/ActivityManager.js +1 -1
- package/es/chat-engine/core/adapters/agui/StateManager.js +1 -1
- package/es/chat-engine/core/adapters/agui/event-mapper.js +1 -1
- package/es/chat-engine/core/adapters/agui/index.js +21 -52
- package/es/chat-engine/core/adapters/agui/index.js.map +1 -1
- package/es/chat-engine/core/adapters/agui/types/events.js +1 -1
- package/es/chat-engine/core/adapters/agui/types/index.js +1 -1
- package/es/chat-engine/core/adapters/agui/utils.d.ts +25 -2
- package/es/chat-engine/core/adapters/agui/utils.js +52 -12
- package/es/chat-engine/core/adapters/agui/utils.js.map +1 -1
- package/es/chat-engine/core/adapters/index.js +3 -1
- package/es/chat-engine/core/adapters/index.js.map +1 -1
- package/es/chat-engine/core/adapters/json-render/SurfaceStateManager.js +1 -1
- package/es/chat-engine/core/adapters/json-render/a2ui-to-jsonrender.js +1 -1
- package/es/chat-engine/core/adapters/json-render/engine.js +1 -1
- package/es/chat-engine/core/adapters/json-render/index.js +1 -1
- package/es/chat-engine/core/adapters/json-render/types/a2ui.js +1 -1
- package/es/chat-engine/core/adapters/json-render/types/core.js +1 -1
- package/es/chat-engine/core/adapters/json-render/types/index.js +1 -1
- package/es/chat-engine/core/adapters/openclaw/device-key-manager.d.ts +65 -0
- package/es/chat-engine/core/adapters/openclaw/device-key-manager.js +375 -0
- package/es/chat-engine/core/adapters/openclaw/device-key-manager.js.map +1 -0
- package/es/chat-engine/core/adapters/openclaw/event-mapper.d.ts +36 -14
- package/es/chat-engine/core/adapters/openclaw/event-mapper.js +37 -21
- package/es/chat-engine/core/adapters/openclaw/event-mapper.js.map +1 -1
- package/es/chat-engine/core/adapters/openclaw/history-converter.d.ts +120 -0
- package/es/chat-engine/core/adapters/openclaw/history-converter.js +251 -0
- package/es/chat-engine/core/adapters/openclaw/history-converter.js.map +1 -0
- package/es/chat-engine/core/adapters/openclaw/index.d.ts +41 -0
- package/es/chat-engine/core/adapters/openclaw/index.js +146 -46
- package/es/chat-engine/core/adapters/openclaw/index.js.map +1 -1
- package/es/chat-engine/core/adapters/openclaw/rpc-handler.d.ts +13 -0
- package/es/chat-engine/core/adapters/openclaw/rpc-handler.js +20 -1
- package/es/chat-engine/core/adapters/openclaw/rpc-handler.js.map +1 -1
- package/es/chat-engine/core/adapters/openclaw/types/config.d.ts +17 -18
- package/es/chat-engine/core/adapters/openclaw/types/config.js +4 -2
- package/es/chat-engine/core/adapters/openclaw/types/config.js.map +1 -1
- package/es/chat-engine/core/adapters/openclaw/types/events.d.ts +5 -1
- package/es/chat-engine/core/adapters/openclaw/types/events.js +3 -1
- package/es/chat-engine/core/adapters/openclaw/types/events.js.map +1 -1
- package/es/chat-engine/core/adapters/openclaw/types/index.js +1 -1
- package/es/chat-engine/core/adapters/openclaw/types/messages.d.ts +22 -0
- package/es/chat-engine/core/adapters/openclaw/types/messages.js +1 -1
- package/es/chat-engine/core/adapters/openclaw/types/messages.js.map +1 -1
- package/es/chat-engine/core/adapters/openclaw/utils.js +1 -1
- package/es/chat-engine/core/adapters/openclaw/utils.js.map +1 -1
- package/es/chat-engine/core/adapters/shared/activity-manager.js +1 -1
- package/es/chat-engine/core/adapters/shared/content-factory.js +1 -1
- package/es/chat-engine/core/adapters/shared/index.js +1 -1
- package/es/chat-engine/core/adapters/shared/merge-utils.js +1 -1
- package/es/chat-engine/core/event-bus/ChatEventBus.js +1 -1
- package/es/chat-engine/core/event-bus/index.js +1 -1
- package/es/chat-engine/core/event-bus/types.js +1 -1
- package/es/chat-engine/core/index.d.ts +27 -25
- package/es/chat-engine/core/index.js +231 -359
- package/es/chat-engine/core/index.js.map +1 -1
- package/es/chat-engine/core/processor/index.d.ts +32 -0
- package/es/chat-engine/core/processor/index.js +76 -1
- package/es/chat-engine/core/processor/index.js.map +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 -21
- package/es/chat-engine/core/server/index.js.map +1 -1
- package/es/chat-engine/core/server/llm-service.d.ts +7 -7
- package/es/chat-engine/core/server/llm-service.js +13 -140
- 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/server/websocket-client.d.ts +2 -0
- package/es/chat-engine/core/server/websocket-client.js +19 -3
- package/es/chat-engine/core/server/websocket-client.js.map +1 -1
- package/es/chat-engine/core/store/message.js +2 -2
- package/es/chat-engine/core/store/model.js +2 -2
- package/es/chat-engine/core/store/reactiveState.js +2 -2
- package/es/chat-engine/core/stream-handlers/agui-stream-handler.d.ts +24 -0
- package/es/chat-engine/core/stream-handlers/agui-stream-handler.js +140 -0
- package/es/chat-engine/core/stream-handlers/agui-stream-handler.js.map +1 -0
- package/es/chat-engine/core/stream-handlers/default-stream-handler.d.ts +7 -0
- package/es/chat-engine/core/stream-handlers/default-stream-handler.js +77 -0
- package/es/chat-engine/core/stream-handlers/default-stream-handler.js.map +1 -0
- package/es/chat-engine/core/stream-handlers/index.d.ts +21 -0
- package/es/chat-engine/core/stream-handlers/index.js +72 -0
- package/es/chat-engine/core/stream-handlers/index.js.map +1 -0
- package/es/chat-engine/core/stream-handlers/openclaw-stream-handler.d.ts +64 -0
- package/es/chat-engine/core/stream-handlers/openclaw-stream-handler.js +320 -0
- package/es/chat-engine/core/stream-handlers/openclaw-stream-handler.js.map +1 -0
- package/es/chat-engine/core/stream-handlers/types.d.ts +47 -0
- package/es/chat-engine/core/stream-handlers/types.js +7 -0
- package/es/chat-engine/core/stream-handlers/types.js.map +1 -0
- package/es/chat-engine/core/type.d.ts +18 -0
- 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/immutable-patch.js +1 -1
- package/es/chat-engine/core/utils/index.js +1 -1
- package/es/chat-engine/core/utils/json-patch/helpers.js +1 -1
- package/es/chat-engine/core/utils/json-patch/index.js +1 -1
- package/es/chat-engine/core/utils/logger.js +1 -1
- package/es/chat-engine/core/utils/performance.js +1 -1
- package/es/chat-engine/hooks/index.js +10 -4
- package/es/chat-engine/hooks/index.js.map +1 -1
- package/es/chat-engine/hooks/useAgentActivity.js +1 -1
- package/es/chat-engine/hooks/useAgentState.js +10 -4
- 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.js +45 -15
- package/es/chat-engine/hooks/useChat.js.map +1 -1
- package/es/chat-engine/index.js +12 -6
- 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/index.js +1 -1
- package/es/index.js +10 -4
- package/es/index.js.map +1 -1
- package/es/style/index.js +1 -1
- package/package.json +1 -1
- package/es/_chunks/dep-1007ac80.js +0 -205
- package/es/_chunks/dep-1007ac80.js.map +0 -1
- package/es/_chunks/dep-13fe70ea.js +0 -438
- package/es/_chunks/dep-16520c2b.js +0 -1247
- package/es/_chunks/dep-16520c2b.js.map +0 -1
- package/es/_chunks/dep-1743bd61.js +0 -438
- package/es/_chunks/dep-1743bd61.js.map +0 -1
- package/es/_chunks/dep-1ca64fef.js.map +0 -1
- package/es/_chunks/dep-24472232.js +0 -839
- package/es/_chunks/dep-24472232.js.map +0 -1
- package/es/_chunks/dep-2bfe72cb.js +0 -438
- package/es/_chunks/dep-2bfe72cb.js.map +0 -1
- package/es/_chunks/dep-3864b369.js +0 -839
- package/es/_chunks/dep-3864b369.js.map +0 -1
- package/es/_chunks/dep-4dedfbef.js +0 -438
- package/es/_chunks/dep-4dedfbef.js.map +0 -1
- package/es/_chunks/dep-56f5e08e.js +0 -448
- package/es/_chunks/dep-56f5e08e.js.map +0 -1
- package/es/_chunks/dep-58d90dfe.js +0 -438
- package/es/_chunks/dep-58d90dfe.js.map +0 -1
- package/es/_chunks/dep-5b6b17d0.js +0 -169
- package/es/_chunks/dep-5b6b17d0.js.map +0 -1
- package/es/_chunks/dep-5e2400d2.js +0 -438
- package/es/_chunks/dep-5e2400d2.js.map +0 -1
- package/es/_chunks/dep-60f2a734.js +0 -169
- package/es/_chunks/dep-60f2a734.js.map +0 -1
- package/es/_chunks/dep-688e4aaa.js +0 -438
- package/es/_chunks/dep-688e4aaa.js.map +0 -1
- package/es/_chunks/dep-771678df.js +0 -438
- package/es/_chunks/dep-771678df.js.map +0 -1
- package/es/_chunks/dep-870f0d35.js +0 -839
- package/es/_chunks/dep-870f0d35.js.map +0 -1
- package/es/_chunks/dep-93283bbd.js +0 -1247
- package/es/_chunks/dep-96eca06f.js +0 -169
- package/es/_chunks/dep-96eca06f.js.map +0 -1
- package/es/_chunks/dep-98d23dfa.js +0 -169
- package/es/_chunks/dep-98d23dfa.js.map +0 -1
- package/es/_chunks/dep-991f7c12.js +0 -1247
- package/es/_chunks/dep-991f7c12.js.map +0 -1
- package/es/_chunks/dep-b4eec30f.js +0 -1247
- package/es/_chunks/dep-b4eec30f.js.map +0 -1
- package/es/_chunks/dep-ba3bd553.js +0 -169
- package/es/_chunks/dep-ba3bd553.js.map +0 -1
- package/es/_chunks/dep-bcb234a1.js +0 -839
- package/es/_chunks/dep-bcb234a1.js.map +0 -1
- package/es/_chunks/dep-dbdfe7d6.js +0 -169
- package/es/_chunks/dep-dbdfe7d6.js.map +0 -1
- package/es/_chunks/dep-de8ac730.js +0 -1247
- package/es/_chunks/dep-de8ac730.js.map +0 -1
- package/es/_chunks/dep-dfe91b1f.js.map +0 -1
- package/es/_chunks/dep-e9dbff09.js +0 -1247
- package/es/_chunks/dep-e9dbff09.js.map +0 -1
- package/es/_chunks/dep-ebc4cf30.js +0 -1247
- package/es/_chunks/dep-ebc4cf30.js.map +0 -1
- package/es/_chunks/dep-f2051ebd.js +0 -839
- package/es/_chunks/dep-f2051ebd.js.map +0 -1
- package/es/_chunks/dep-f691a67e.js +0 -438
- package/es/_chunks/dep-f691a67e.js.map +0 -1
- package/es/_chunks/dep-f8016301.js +0 -169
- package/es/_chunks/dep-f8016301.js.map +0 -1
- package/es/chat-actionbar/_example-js/base.d.ts +0 -2
- package/es/chat-actionbar/_example-js/custom.d.ts +0 -2
- package/es/chat-actionbar/_example-js/style.d.ts +0 -2
- package/es/chat-attachments/_example-js/base.d.ts +0 -2
- package/es/chat-attachments/_example-js/scroll-x.d.ts +0 -2
- package/es/chat-attachments/_example-js/scroll-y.d.ts +0 -2
- package/es/chat-attachments/index.d.ts +0 -5
- package/es/chat-attachments/index.js +0 -26
- package/es/chat-attachments/index.js.map +0 -1
- package/es/chat-engine/_example-js/agui-basic.d.ts +0 -10
- package/es/chat-engine/_example-js/agui-comprehensive.d.ts +0 -2
- package/es/chat-engine/_example-js/agui-test.d.ts +0 -11
- package/es/chat-engine/_example-js/agui-toolcall.d.ts +0 -5
- package/es/chat-engine/_example-js/agui-videoclip.d.ts +0 -8
- package/es/chat-engine/_example-js/agui.d.ts +0 -1
- package/es/chat-engine/_example-js/basic.d.ts +0 -9
- package/es/chat-engine/_example-js/components/HotelCard.d.ts +0 -3
- package/es/chat-engine/_example-js/components/HumanInputForm.d.ts +0 -6
- package/es/chat-engine/_example-js/components/HumanInputResult.d.ts +0 -3
- package/es/chat-engine/_example-js/components/ItineraryCard.d.ts +0 -3
- package/es/chat-engine/_example-js/components/PlanningStatePanel.d.ts +0 -4
- package/es/chat-engine/_example-js/components/Toolcall.d.ts +0 -4
- package/es/chat-engine/_example-js/components/WeatherCard.d.ts +0 -3
- package/es/chat-engine/_example-js/components/login.d.ts +0 -1
- package/es/chat-engine/_example-js/comprehensive.d.ts +0 -12
- package/es/chat-engine/_example-js/custom-content.d.ts +0 -1
- package/es/chat-engine/_example-js/hookComponent.d.ts +0 -1
- package/es/chat-engine/_example-js/initial-messages.d.ts +0 -9
- package/es/chat-engine/_example-js/instance-methods.d.ts +0 -13
- package/es/chat-engine/_example-js/travel-actions.d.ts +0 -91
- package/es/chat-engine/_example-js/travelToolcall.d.ts +0 -1
- package/es/chat-engine/components/a2ui/A2UIActivityRenderer.d.ts +0 -196
- package/es/chat-engine/components/a2ui/A2UIActivityRenderer.js +0 -301
- package/es/chat-engine/components/a2ui/A2UIActivityRenderer.js.map +0 -1
- package/es/chat-engine/components/a2ui/A2UIComponentRenderer.d.ts +0 -37
- package/es/chat-engine/components/a2ui/A2UIComponentRenderer.js +0 -116
- package/es/chat-engine/components/a2ui/A2UIComponentRenderer.js.map +0 -1
- package/es/chat-engine/components/a2ui/A2UIErrorBoundary.d.ts +0 -42
- package/es/chat-engine/components/a2ui/A2UIErrorBoundary.js +0 -113
- package/es/chat-engine/components/a2ui/A2UIErrorBoundary.js.map +0 -1
- package/es/chat-engine/components/a2ui/A2UISkeleton.d.ts +0 -60
- package/es/chat-engine/components/a2ui/A2UISkeleton.js +0 -197
- package/es/chat-engine/components/a2ui/A2UISkeleton.js.map +0 -1
- package/es/chat-engine/components/a2ui/A2UISurfaceRenderer.d.ts +0 -44
- package/es/chat-engine/components/a2ui/A2UISurfaceRenderer.js +0 -139
- package/es/chat-engine/components/a2ui/A2UISurfaceRenderer.js.map +0 -1
- package/es/chat-engine/components/a2ui/containers/A2UICard.d.ts +0 -22
- package/es/chat-engine/components/a2ui/containers/A2UICard.js +0 -82
- package/es/chat-engine/components/a2ui/containers/A2UICard.js.map +0 -1
- package/es/chat-engine/components/a2ui/containers/A2UIColumn.d.ts +0 -18
- package/es/chat-engine/components/a2ui/containers/A2UIColumn.js +0 -81
- package/es/chat-engine/components/a2ui/containers/A2UIColumn.js.map +0 -1
- package/es/chat-engine/components/a2ui/containers/A2UIList.d.ts +0 -14
- package/es/chat-engine/components/a2ui/containers/A2UIList.js +0 -62
- package/es/chat-engine/components/a2ui/containers/A2UIList.js.map +0 -1
- package/es/chat-engine/components/a2ui/containers/A2UIRow.d.ts +0 -20
- package/es/chat-engine/components/a2ui/containers/A2UIRow.js +0 -84
- package/es/chat-engine/components/a2ui/containers/A2UIRow.js.map +0 -1
- package/es/chat-engine/components/a2ui/containers/A2UITabs.d.ts +0 -14
- package/es/chat-engine/components/a2ui/containers/A2UITabs.js +0 -69
- package/es/chat-engine/components/a2ui/containers/A2UITabs.js.map +0 -1
- package/es/chat-engine/components/a2ui/containers/index.d.ts +0 -8
- package/es/chat-engine/components/a2ui/containers/index.js +0 -30
- package/es/chat-engine/components/a2ui/containers/index.js.map +0 -1
- package/es/chat-engine/components/a2ui/index.d.ts +0 -11
- package/es/chat-engine/components/a2ui/index.js +0 -62
- package/es/chat-engine/components/a2ui/index.js.map +0 -1
- package/es/chat-engine/components/a2ui/primitives/A2UIButton.d.ts +0 -33
- package/es/chat-engine/components/a2ui/primitives/A2UIButton.js +0 -80
- package/es/chat-engine/components/a2ui/primitives/A2UIButton.js.map +0 -1
- package/es/chat-engine/components/a2ui/primitives/A2UICheckBox.d.ts +0 -12
- package/es/chat-engine/components/a2ui/primitives/A2UICheckBox.js +0 -43
- package/es/chat-engine/components/a2ui/primitives/A2UICheckBox.js.map +0 -1
- package/es/chat-engine/components/a2ui/primitives/A2UICheckboxGroup.d.ts +0 -50
- package/es/chat-engine/components/a2ui/primitives/A2UICheckboxGroup.js +0 -54
- package/es/chat-engine/components/a2ui/primitives/A2UICheckboxGroup.js.map +0 -1
- package/es/chat-engine/components/a2ui/primitives/A2UIChoicePicker.d.ts +0 -13
- package/es/chat-engine/components/a2ui/primitives/A2UIChoicePicker.js +0 -89
- package/es/chat-engine/components/a2ui/primitives/A2UIChoicePicker.js.map +0 -1
- package/es/chat-engine/components/a2ui/primitives/A2UIDivider.d.ts +0 -12
- package/es/chat-engine/components/a2ui/primitives/A2UIDivider.js +0 -25
- package/es/chat-engine/components/a2ui/primitives/A2UIDivider.js.map +0 -1
- package/es/chat-engine/components/a2ui/primitives/A2UIIcon.d.ts +0 -13
- package/es/chat-engine/components/a2ui/primitives/A2UIIcon.js +0 -138942
- package/es/chat-engine/components/a2ui/primitives/A2UIIcon.js.map +0 -1
- package/es/chat-engine/components/a2ui/primitives/A2UIImage.d.ts +0 -12
- package/es/chat-engine/components/a2ui/primitives/A2UIImage.js +0 -75
- package/es/chat-engine/components/a2ui/primitives/A2UIImage.js.map +0 -1
- package/es/chat-engine/components/a2ui/primitives/A2UIInput.d.ts +0 -20
- package/es/chat-engine/components/a2ui/primitives/A2UIInput.js +0 -63
- package/es/chat-engine/components/a2ui/primitives/A2UIInput.js.map +0 -1
- package/es/chat-engine/components/a2ui/primitives/A2UIRadioGroup.d.ts +0 -56
- package/es/chat-engine/components/a2ui/primitives/A2UIRadioGroup.js +0 -64
- package/es/chat-engine/components/a2ui/primitives/A2UIRadioGroup.js.map +0 -1
- package/es/chat-engine/components/a2ui/primitives/A2UISlider.d.ts +0 -12
- package/es/chat-engine/components/a2ui/primitives/A2UISlider.js +0 -55
- package/es/chat-engine/components/a2ui/primitives/A2UISlider.js.map +0 -1
- package/es/chat-engine/components/a2ui/primitives/A2UIText.d.ts +0 -12
- package/es/chat-engine/components/a2ui/primitives/A2UIText.js +0 -104
- package/es/chat-engine/components/a2ui/primitives/A2UIText.js.map +0 -1
- package/es/chat-engine/components/a2ui/primitives/A2UITextField.d.ts +0 -12
- package/es/chat-engine/components/a2ui/primitives/A2UITextField.js +0 -80
- package/es/chat-engine/components/a2ui/primitives/A2UITextField.js.map +0 -1
- package/es/chat-engine/components/a2ui/primitives/index.d.ts +0 -15
- package/es/chat-engine/components/a2ui/primitives/index.js +0 -39
- package/es/chat-engine/components/a2ui/primitives/index.js.map +0 -1
- package/es/chat-engine/components/a2ui/registry.d.ts +0 -35
- package/es/chat-engine/components/a2ui/registry.js +0 -74
- package/es/chat-engine/components/a2ui/registry.js.map +0 -1
- package/es/chat-engine/components/json-render/A2UIJsonRenderActivityRenderer.d.ts +0 -36
- package/es/chat-engine/components/json-render/A2UIJsonRenderActivityRenderer.js +0 -36
- package/es/chat-engine/components/json-render/A2UIJsonRenderActivityRenderer.js.map +0 -1
- package/es/chat-engine/components/json-render/JsonRenderActivityRenderer.d.ts +0 -46
- package/es/chat-engine/components/json-render/JsonRenderActivityRenderer.js +0 -36
- package/es/chat-engine/components/json-render/JsonRenderActivityRenderer.js.map +0 -1
- package/es/chat-engine/components/json-render/SurfaceStateManager.d.ts +0 -113
- package/es/chat-engine/components/json-render/SurfaceStateManager.js +0 -195
- package/es/chat-engine/components/json-render/SurfaceStateManager.js.map +0 -1
- package/es/chat-engine/components/json-render/adapters/a2ui-to-jsonrender.d.ts +0 -49
- package/es/chat-engine/components/json-render/adapters/a2ui-to-jsonrender.js +0 -307
- package/es/chat-engine/components/json-render/adapters/a2ui-to-jsonrender.js.map +0 -1
- package/es/chat-engine/components/json-render/adapters/a2ui-types.d.ts +0 -96
- package/es/chat-engine/components/json-render/adapters/a2ui-types.js +0 -7
- package/es/chat-engine/components/json-render/adapters/a2ui-types.js.map +0 -1
- package/es/chat-engine/components/json-render/adapters/index.d.ts +0 -7
- package/es/chat-engine/components/json-render/adapters/index.js +0 -11
- package/es/chat-engine/components/json-render/adapters/index.js.map +0 -1
- package/es/chat-engine/components/json-render/catalog/a2ui-binding.d.ts +0 -64
- package/es/chat-engine/components/json-render/catalog/a2ui-binding.js +0 -36
- package/es/chat-engine/components/json-render/catalog/a2ui-binding.js.map +0 -1
- package/es/chat-engine/components/json-render/catalog/a2ui-registry.d.ts +0 -78
- package/es/chat-engine/components/json-render/catalog/a2ui-registry.js +0 -36
- package/es/chat-engine/components/json-render/catalog/a2ui-registry.js.map +0 -1
- package/es/chat-engine/components/json-render/catalog/button.d.ts +0 -14
- package/es/chat-engine/components/json-render/catalog/button.js +0 -71
- package/es/chat-engine/components/json-render/catalog/button.js.map +0 -1
- package/es/chat-engine/components/json-render/catalog/card.d.ts +0 -11
- package/es/chat-engine/components/json-render/catalog/card.js +0 -57
- package/es/chat-engine/components/json-render/catalog/card.js.map +0 -1
- package/es/chat-engine/components/json-render/catalog/index.d.ts +0 -128
- package/es/chat-engine/components/json-render/catalog/index.js +0 -36
- package/es/chat-engine/components/json-render/catalog/index.js.map +0 -1
- package/es/chat-engine/components/json-render/catalog/input.d.ts +0 -20
- package/es/chat-engine/components/json-render/catalog/input.js +0 -36
- package/es/chat-engine/components/json-render/catalog/input.js.map +0 -1
- package/es/chat-engine/components/json-render/catalog/layout.d.ts +0 -44
- package/es/chat-engine/components/json-render/catalog/layout.js +0 -129
- package/es/chat-engine/components/json-render/catalog/layout.js.map +0 -1
- package/es/chat-engine/components/json-render/catalog/text.d.ts +0 -11
- package/es/chat-engine/components/json-render/catalog/text.js +0 -31
- package/es/chat-engine/components/json-render/catalog/text.js.map +0 -1
- package/es/chat-engine/components/json-render/catalog.d.ts +0 -614
- package/es/chat-engine/components/json-render/catalog.js +0 -779
- package/es/chat-engine/components/json-render/catalog.js.map +0 -1
- package/es/chat-engine/components/json-render/config.d.ts +0 -154
- package/es/chat-engine/components/json-render/config.js +0 -36
- package/es/chat-engine/components/json-render/config.js.map +0 -1
- package/es/chat-engine/components/json-render/engine.d.ts +0 -58
- package/es/chat-engine/components/json-render/engine.js +0 -88
- package/es/chat-engine/components/json-render/engine.js.map +0 -1
- package/es/chat-engine/components/json-render/performance.d.ts +0 -91
- package/es/chat-engine/components/json-render/performance.js +0 -135
- package/es/chat-engine/components/json-render/performance.js.map +0 -1
- package/es/chat-engine/components/json-render/renderer/index.d.ts +0 -71
- package/es/chat-engine/components/json-render/renderer/index.js +0 -125
- package/es/chat-engine/components/json-render/renderer/index.js.map +0 -1
- package/es/chat-engine/components/json-render/renderer.d.ts +0 -71
- package/es/chat-engine/components/json-render/renderer.js +0 -124
- package/es/chat-engine/components/json-render/renderer.js.map +0 -1
- package/es/chat-engine/core/a2ui/index.d.ts +0 -10
- package/es/chat-engine/core/a2ui/index.js +0 -24
- package/es/chat-engine/core/a2ui/index.js.map +0 -1
- package/es/chat-engine/core/a2ui/processor/A2uiMessageProcessor.d.ts +0 -197
- package/es/chat-engine/core/a2ui/processor/A2uiMessageProcessor.js +0 -438
- package/es/chat-engine/core/a2ui/processor/A2uiMessageProcessor.js.map +0 -1
- package/es/chat-engine/core/a2ui/processor/ComponentTree.d.ts +0 -53
- package/es/chat-engine/core/a2ui/processor/ComponentTree.js +0 -158
- package/es/chat-engine/core/a2ui/processor/ComponentTree.js.map +0 -1
- package/es/chat-engine/core/a2ui/processor/DataStore.d.ts +0 -63
- package/es/chat-engine/core/a2ui/processor/DataStore.js +0 -172
- package/es/chat-engine/core/a2ui/processor/DataStore.js.map +0 -1
- package/es/chat-engine/core/a2ui/processor/PathResolver.d.ts +0 -47
- package/es/chat-engine/core/a2ui/processor/PathResolver.js +0 -99
- package/es/chat-engine/core/a2ui/processor/PathResolver.js.map +0 -1
- package/es/chat-engine/core/a2ui/types/index.d.ts +0 -4
- package/es/chat-engine/core/a2ui/types/index.js +0 -9
- package/es/chat-engine/core/a2ui/types/index.js.map +0 -1
- package/es/chat-engine/core/a2ui/types/types.d.ts +0 -770
- package/es/chat-engine/core/a2ui/types/types.js +0 -104
- package/es/chat-engine/core/a2ui/types/types.js.map +0 -1
- package/es/chat-engine/core/a2ui/utils/binding.d.ts +0 -34
- package/es/chat-engine/core/a2ui/utils/binding.js +0 -1784
- package/es/chat-engine/core/a2ui/utils/binding.js.map +0 -1
- package/es/chat-engine/core/a2ui/utils/index.d.ts +0 -5
- package/es/chat-engine/core/a2ui/utils/index.js +0 -13
- package/es/chat-engine/core/a2ui/utils/index.js.map +0 -1
- package/es/chat-engine/core/a2ui/utils/validation.d.ts +0 -70
- package/es/chat-engine/core/a2ui/utils/validation.js +0 -333
- package/es/chat-engine/core/a2ui/utils/validation.js.map +0 -1
- package/es/chat-engine/core/adapters/agui/activity-manager.d.ts +0 -102
- package/es/chat-engine/core/adapters/agui/activity-manager.js +0 -150
- package/es/chat-engine/core/adapters/agui/activity-manager.js.map +0 -1
- package/es/chat-engine/core/adapters/agui/events.d.ts +0 -1550
- package/es/chat-engine/core/adapters/agui/events.js +0 -199
- package/es/chat-engine/core/adapters/agui/events.js.map +0 -1
- package/es/chat-engine/core/adapters/agui/state-manager.d.ts +0 -99
- package/es/chat-engine/core/adapters/agui/state-manager.js +0 -174
- package/es/chat-engine/core/adapters/agui/state-manager.js.map +0 -1
- package/es/chat-engine/core/adapters/agui/types.d.ts +0 -818
- package/es/chat-engine/core/adapters/agui/types.js +0 -95
- package/es/chat-engine/core/adapters/agui/types.js.map +0 -1
- package/es/chat-engine/hooks/a2ui/A2UIContext.d.ts +0 -90
- package/es/chat-engine/hooks/a2ui/A2UIContext.js +0 -97
- package/es/chat-engine/hooks/a2ui/A2UIContext.js.map +0 -1
- package/es/chat-engine/hooks/a2ui/index.d.ts +0 -12
- package/es/chat-engine/hooks/a2ui/index.js +0 -19
- package/es/chat-engine/hooks/a2ui/index.js.map +0 -1
- package/es/chat-engine/hooks/a2ui/useA2UIAction.d.ts +0 -40
- package/es/chat-engine/hooks/a2ui/useA2UIAction.js +0 -74
- package/es/chat-engine/hooks/a2ui/useA2UIAction.js.map +0 -1
- package/es/chat-engine/hooks/a2ui/useA2UISurface.d.ts +0 -36
- package/es/chat-engine/hooks/a2ui/useA2UISurface.js +0 -39
- package/es/chat-engine/hooks/a2ui/useA2UISurface.js.map +0 -1
- package/es/chat-engine/hooks/a2ui/useDataBinding.d.ts +0 -53
- package/es/chat-engine/hooks/a2ui/useDataBinding.js +0 -111
- package/es/chat-engine/hooks/a2ui/useDataBinding.js.map +0 -1
- package/es/chat-engine/hooks/useJsonRenderActivity.d.ts +0 -56
- package/es/chat-engine/hooks/useJsonRenderActivity.js +0 -63
- package/es/chat-engine/hooks/useJsonRenderActivity.js.map +0 -1
- package/es/chat-filecard/_example-js/base.d.ts +0 -1
- package/es/chat-loading/_example-js/base.d.ts +0 -2
- package/es/chat-loading/_example-js/text.d.ts +0 -2
- package/es/chat-markdown/_example-js/base.d.ts +0 -1
- package/es/chat-markdown/_example-js/custom.d.ts +0 -2
- package/es/chat-markdown/_example-js/event.d.ts +0 -1
- package/es/chat-markdown/_example-js/footnote.d.ts +0 -2
- package/es/chat-markdown/_example-js/plugin.d.ts +0 -2
- package/es/chat-markdown/_example-js/theme.d.ts +0 -2
- package/es/chat-message/_example-js/action.d.ts +0 -1
- package/es/chat-message/_example-js/base.d.ts +0 -1
- package/es/chat-message/_example-js/configure.d.ts +0 -1
- package/es/chat-message/_example-js/content.d.ts +0 -1
- package/es/chat-message/_example-js/custom.d.ts +0 -1
- package/es/chat-message/_example-js/handle-actions.d.ts +0 -7
- package/es/chat-message/_example-js/status.d.ts +0 -1
- package/es/chat-message/_example-js/think.d.ts +0 -1
- package/es/chat-sender/_example-js/attachment.d.ts +0 -2
- package/es/chat-sender/_example-js/base.d.ts +0 -2
- package/es/chat-sender/_example-js/custom.d.ts +0 -2
- package/es/chat-thinking/_example-js/base.d.ts +0 -1
- package/es/chat-thinking/_example-js/style.d.ts +0 -1
- package/es/chatbot/_example-js/agent.d.ts +0 -1
- package/es/chatbot/_example-js/agui.d.ts +0 -13
- package/es/chatbot/_example-js/backup/travel.d.ts +0 -1
- package/es/chatbot/_example-js/basic.d.ts +0 -1
- package/es/chatbot/_example-js/code.d.ts +0 -1
- package/es/chatbot/_example-js/components/ItineraryCard.d.ts +0 -3
- package/es/chatbot/_example-js/components/login.d.ts +0 -1
- package/es/chatbot/_example-js/comprehensive.d.ts +0 -1
- package/es/chatbot/_example-js/custom-content.d.ts +0 -1
- package/es/chatbot/_example-js/custom-merge.d.ts +0 -1
- package/es/chatbot/_example-js/custom.d.ts +0 -1
- package/es/chatbot/_example-js/docs.d.ts +0 -1
- package/es/chatbot/_example-js/image.d.ts +0 -1
- package/es/chatbot/_example-js/initial-messages.d.ts +0 -9
- package/es/chatbot/_example-js/instance-methods.d.ts +0 -14
- package/es/chatbot/_example-js/nostream.d.ts +0 -1
- package/es/chatbot/_example-js/quick-start.d.ts +0 -9
- package/es/chatbot/_example-js/research.d.ts +0 -1
- package/es/chatbot/_example-js/role-message-config.d.ts +0 -22
- package/es/chatbot/_example-js/sender-config.d.ts +0 -20
- package/es/chatbot/_example-js/service-config.d.ts +0 -17
- package/es/chatbot/_example-js/simple.d.ts +0 -1
- package/es/chatbot/_example-js/utils/messageRenderer.d.ts +0 -5
- package/es/chatbot/docs/react-best-practice.d.ts +0 -13
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* tdesign v1.1.0-alpha.
|
|
2
|
+
* tdesign v1.1.0-alpha.17
|
|
3
3
|
* (c) 2026 tdesign
|
|
4
4
|
* @license MIT
|
|
5
5
|
*/
|
|
@@ -12,7 +12,6 @@ import _regeneratorRuntime from '@babel/runtime/regenerator';
|
|
|
12
12
|
import { LoggerManager } from '../utils/logger.js';
|
|
13
13
|
import { BatchClient } from './batch-client.js';
|
|
14
14
|
import { SSEClient } from './sse-client.js';
|
|
15
|
-
import { OpenClawAdapter } from '../adapters/openclaw/index.js';
|
|
16
15
|
import '@babel/runtime/helpers/possibleConstructorReturn';
|
|
17
16
|
import '@babel/runtime/helpers/getPrototypeOf';
|
|
18
17
|
import '@babel/runtime/helpers/inherits';
|
|
@@ -22,26 +21,6 @@ import '@babel/runtime/helpers/wrapNativeSuper';
|
|
|
22
21
|
import './connection-manager.js';
|
|
23
22
|
import './sse-parser.js';
|
|
24
23
|
import './types.js';
|
|
25
|
-
import './websocket-client.js';
|
|
26
|
-
import '../adapters/openclaw/event-mapper.js';
|
|
27
|
-
import '@babel/runtime/helpers/typeof';
|
|
28
|
-
import '../adapters/openclaw/types/events.js';
|
|
29
|
-
import '../adapters/shared/index.js';
|
|
30
|
-
import '../adapters/shared/content-factory.js';
|
|
31
|
-
import '../adapters/agui/utils.js';
|
|
32
|
-
import '@babel/runtime/helpers/toConsumableArray';
|
|
33
|
-
import '../adapters/shared/merge-utils.js';
|
|
34
|
-
import '../adapters/shared/activity-manager.js';
|
|
35
|
-
import '../adapters/agui/ActivityManager.js';
|
|
36
|
-
import '../utils/index.js';
|
|
37
|
-
import '../utils/immutable-patch.js';
|
|
38
|
-
import '@babel/runtime/helpers/objectWithoutProperties';
|
|
39
|
-
import '@babel/runtime/helpers/toArray';
|
|
40
|
-
import '../adapters/openclaw/rpc-handler.js';
|
|
41
|
-
import '../adapters/openclaw/types/config.js';
|
|
42
|
-
import '../adapters/openclaw/utils.js';
|
|
43
|
-
import '../adapters/openclaw/types/index.js';
|
|
44
|
-
import '../adapters/openclaw/types/messages.js';
|
|
45
24
|
|
|
46
25
|
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; }
|
|
47
26
|
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; }
|
|
@@ -50,7 +29,6 @@ var LLMService = /*#__PURE__*/function () {
|
|
|
50
29
|
_classCallCheck(this, LLMService);
|
|
51
30
|
_defineProperty(this, "sseClient", null);
|
|
52
31
|
_defineProperty(this, "batchClient", null);
|
|
53
|
-
_defineProperty(this, "openclawAdapter", null);
|
|
54
32
|
_defineProperty(this, "isDestroyed", false);
|
|
55
33
|
_defineProperty(this, "logger", LoggerManager.getLogger());
|
|
56
34
|
}
|
|
@@ -129,26 +107,17 @@ var LLMService = /*#__PURE__*/function () {
|
|
|
129
107
|
}
|
|
130
108
|
return _context2.abrupt("return");
|
|
131
109
|
case 1:
|
|
132
|
-
if (!(config.protocol === "openclaw")) {
|
|
133
|
-
_context2.next = 3;
|
|
134
|
-
break;
|
|
135
|
-
}
|
|
136
|
-
_context2.next = 2;
|
|
137
|
-
return this.handleOpenClawStreamRequest(params, config);
|
|
138
|
-
case 2:
|
|
139
|
-
return _context2.abrupt("return");
|
|
140
|
-
case 3:
|
|
141
110
|
this.sseClient = new SSEClient(config.endpoint);
|
|
142
|
-
_context2.next =
|
|
111
|
+
_context2.next = 2;
|
|
143
112
|
return (_config$onRequest2 = config.onRequest) === null || _config$onRequest2 === void 0 ? void 0 : _config$onRequest2.call(config, params);
|
|
144
|
-
case
|
|
113
|
+
case 2:
|
|
145
114
|
_t3 = _context2.sent;
|
|
146
115
|
if (_t3) {
|
|
147
|
-
_context2.next =
|
|
116
|
+
_context2.next = 3;
|
|
148
117
|
break;
|
|
149
118
|
}
|
|
150
119
|
_t3 = {};
|
|
151
|
-
case
|
|
120
|
+
case 3:
|
|
152
121
|
req = _t3;
|
|
153
122
|
this.sseClient.on("start", function (chunk) {
|
|
154
123
|
var _config$onStart;
|
|
@@ -168,9 +137,9 @@ var LLMService = /*#__PURE__*/function () {
|
|
|
168
137
|
var _config$onComplete2;
|
|
169
138
|
(_config$onComplete2 = config.onComplete) === null || _config$onComplete2 === void 0 || _config$onComplete2.call(config, isAborted, req);
|
|
170
139
|
});
|
|
171
|
-
_context2.next =
|
|
140
|
+
_context2.next = 4;
|
|
172
141
|
return this.sseClient.connect(req);
|
|
173
|
-
case
|
|
142
|
+
case 4:
|
|
174
143
|
case "end":
|
|
175
144
|
return _context2.stop();
|
|
176
145
|
}
|
|
@@ -181,90 +150,6 @@ var LLMService = /*#__PURE__*/function () {
|
|
|
181
150
|
}
|
|
182
151
|
return handleStreamRequest;
|
|
183
152
|
}()
|
|
184
|
-
}, {
|
|
185
|
-
key: "handleOpenClawStreamRequest",
|
|
186
|
-
value: function () {
|
|
187
|
-
var _handleOpenClawStreamRequest = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee3(params, config) {
|
|
188
|
-
var _this = this;
|
|
189
|
-
var openclawConfig, adapterConfig, _config$onRequest3, requestParams, _config$onError5, _t4, _t5;
|
|
190
|
-
return _regeneratorRuntime.wrap(function (_context3) {
|
|
191
|
-
while (1) switch (_context3.prev = _context3.next) {
|
|
192
|
-
case 0:
|
|
193
|
-
openclawConfig = config.openclaw || {};
|
|
194
|
-
adapterConfig = _objectSpread({
|
|
195
|
-
endpoint: config.endpoint,
|
|
196
|
-
timeout: config.timeout,
|
|
197
|
-
maxRetries: config.maxRetries,
|
|
198
|
-
retryInterval: config.retryInterval
|
|
199
|
-
}, openclawConfig);
|
|
200
|
-
if (!this.openclawAdapter) {
|
|
201
|
-
this.openclawAdapter = new OpenClawAdapter(adapterConfig);
|
|
202
|
-
}
|
|
203
|
-
this.openclawAdapter.setCallbacks({
|
|
204
|
-
onConnected: function onConnected() {
|
|
205
|
-
_this.logger.info("OpenClaw connected, sending message...");
|
|
206
|
-
},
|
|
207
|
-
onStart: function onStart() {
|
|
208
|
-
var _config$onStart2;
|
|
209
|
-
(_config$onStart2 = config.onStart) === null || _config$onStart2 === void 0 || _config$onStart2.call(config, "openclaw:stream:start");
|
|
210
|
-
},
|
|
211
|
-
onMessage: function onMessage(content) {
|
|
212
|
-
var _config$onMessage2;
|
|
213
|
-
var chunk = {
|
|
214
|
-
event: "openclaw",
|
|
215
|
-
data: content
|
|
216
|
-
};
|
|
217
|
-
(_config$onMessage2 = config.onMessage) === null || _config$onMessage2 === void 0 || _config$onMessage2.call(config, chunk);
|
|
218
|
-
},
|
|
219
|
-
onComplete: function onComplete(isAborted, requestParams) {
|
|
220
|
-
var _config$onComplete3;
|
|
221
|
-
(_config$onComplete3 = config.onComplete) === null || _config$onComplete3 === void 0 || _config$onComplete3.call(config, isAborted, requestParams);
|
|
222
|
-
},
|
|
223
|
-
onError: function onError(error) {
|
|
224
|
-
var _config$onError4;
|
|
225
|
-
(_config$onError4 = config.onError) === null || _config$onError4 === void 0 || _config$onError4.call(config, error);
|
|
226
|
-
}
|
|
227
|
-
});
|
|
228
|
-
_context3.prev = 1;
|
|
229
|
-
if (this.openclawAdapter.isAuthenticated()) {
|
|
230
|
-
_context3.next = 2;
|
|
231
|
-
break;
|
|
232
|
-
}
|
|
233
|
-
_context3.next = 2;
|
|
234
|
-
return this.openclawAdapter.connect();
|
|
235
|
-
case 2:
|
|
236
|
-
_context3.next = 3;
|
|
237
|
-
return (_config$onRequest3 = config.onRequest) === null || _config$onRequest3 === void 0 ? void 0 : _config$onRequest3.call(config, params);
|
|
238
|
-
case 3:
|
|
239
|
-
_t4 = _context3.sent;
|
|
240
|
-
if (_t4) {
|
|
241
|
-
_context3.next = 4;
|
|
242
|
-
break;
|
|
243
|
-
}
|
|
244
|
-
_t4 = {};
|
|
245
|
-
case 4:
|
|
246
|
-
requestParams = _t4;
|
|
247
|
-
_context3.next = 5;
|
|
248
|
-
return this.openclawAdapter.sendMessage(params, requestParams);
|
|
249
|
-
case 5:
|
|
250
|
-
_context3.next = 7;
|
|
251
|
-
break;
|
|
252
|
-
case 6:
|
|
253
|
-
_context3.prev = 6;
|
|
254
|
-
_t5 = _context3["catch"](1);
|
|
255
|
-
(_config$onError5 = config.onError) === null || _config$onError5 === void 0 || _config$onError5.call(config, _t5);
|
|
256
|
-
throw _t5;
|
|
257
|
-
case 7:
|
|
258
|
-
case "end":
|
|
259
|
-
return _context3.stop();
|
|
260
|
-
}
|
|
261
|
-
}, _callee3, this, [[1, 6]]);
|
|
262
|
-
}));
|
|
263
|
-
function handleOpenClawStreamRequest(_x5, _x6) {
|
|
264
|
-
return _handleOpenClawStreamRequest.apply(this, arguments);
|
|
265
|
-
}
|
|
266
|
-
return handleOpenClawStreamRequest;
|
|
267
|
-
}()
|
|
268
153
|
}, {
|
|
269
154
|
key: "closeConnect",
|
|
270
155
|
value: function closeConnect() {
|
|
@@ -276,9 +161,6 @@ var LLMService = /*#__PURE__*/function () {
|
|
|
276
161
|
this.batchClient.abort();
|
|
277
162
|
this.batchClient = null;
|
|
278
163
|
}
|
|
279
|
-
if (this.openclawAdapter) {
|
|
280
|
-
this.openclawAdapter.abort();
|
|
281
|
-
}
|
|
282
164
|
}
|
|
283
165
|
}, {
|
|
284
166
|
key: "getSSEStats",
|
|
@@ -293,27 +175,18 @@ var LLMService = /*#__PURE__*/function () {
|
|
|
293
175
|
}, {
|
|
294
176
|
key: "destroy",
|
|
295
177
|
value: function () {
|
|
296
|
-
var _destroy = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function
|
|
297
|
-
return _regeneratorRuntime.wrap(function (
|
|
298
|
-
while (1) switch (
|
|
178
|
+
var _destroy = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee3() {
|
|
179
|
+
return _regeneratorRuntime.wrap(function (_context3) {
|
|
180
|
+
while (1) switch (_context3.prev = _context3.next) {
|
|
299
181
|
case 0:
|
|
300
182
|
this.isDestroyed = true;
|
|
301
183
|
this.closeConnect();
|
|
302
|
-
|
|
303
|
-
_context4.next = 2;
|
|
304
|
-
break;
|
|
305
|
-
}
|
|
306
|
-
_context4.next = 1;
|
|
307
|
-
return this.openclawAdapter.destroy();
|
|
184
|
+
this.logger.info("LLM Service destroyed");
|
|
308
185
|
case 1:
|
|
309
|
-
this.openclawAdapter = null;
|
|
310
|
-
case 2:
|
|
311
|
-
this.logger.info("Enhanced LLM Service destroyed");
|
|
312
|
-
case 3:
|
|
313
186
|
case "end":
|
|
314
|
-
return
|
|
187
|
+
return _context3.stop();
|
|
315
188
|
}
|
|
316
|
-
},
|
|
189
|
+
}, _callee3, this);
|
|
317
190
|
}));
|
|
318
191
|
function destroy() {
|
|
319
192
|
return _destroy.apply(this, arguments);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"llm-service.js","sources":["../../../../../pro-components/chat/chat-engine/core/server/llm-service.ts"],"sourcesContent":["import type { AIMessageContent, ChatRequestParams, ChatServiceConfig, SSEChunkData } from '../type';\nimport { LoggerManager } from '../utils/logger';\nimport { BatchClient } from './batch-client';\nimport { SSEClient } from './sse-client';\nimport {\n OpenClawAdapter,\n type OpenClawAdapterConfig,\n} from '../adapters/openclaw';\n\n// 与原有接口保持兼容\nexport interface ILLMService {\n /**\n * 处理批量请求(非流式)\n */\n handleBatchRequest(\n params: ChatRequestParams,\n config: ChatServiceConfig,\n ): Promise<AIMessageContent | AIMessageContent[]>;\n\n /**\n * 处理流式请求\n */\n handleStreamRequest(params: ChatRequestParams, config: ChatServiceConfig): Promise<void>;\n}\n\n/**\n * Enhanced LLM Service with error handling and connection management\n */\nexport class LLMService implements ILLMService {\n private sseClient: SSEClient | null = null;\n\n private batchClient: BatchClient | null = null;\n\n private openclawAdapter: OpenClawAdapter | null = null;\n\n private isDestroyed = false;\n\n private logger = LoggerManager.getLogger();\n\n /**\n * 处理批量请求(非流式)\n */\n async handleBatchRequest(\n params: ChatRequestParams,\n config: ChatServiceConfig,\n ): Promise<AIMessageContent | AIMessageContent[]> {\n // 确保只有一个客户端实例\n this.batchClient = this.batchClient || new BatchClient();\n this.batchClient.on('error', (error) => {\n config.onError?.(error);\n });\n\n const req = (await config.onRequest?.(params)) || params;\n\n try {\n const data = await this.batchClient.request<AIMessageContent>(\n config.endpoint!,\n {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n ...req.headers,\n },\n body: req.body,\n },\n config.timeout, // 现在timeout属性已存在\n );\n if (data) {\n const result = config.onComplete?.(false, req, data);\n // 如果onComplete返回了内容,使用它;否则使用原始data\n return result || data;\n }\n // 如果没有data,返回空数组\n return [];\n } catch (error) {\n config.onError?.(error as Error | Response);\n throw error;\n }\n }\n\n /**\n * 处理流式请求\n */\n async handleStreamRequest(params: ChatRequestParams, config: ChatServiceConfig): Promise<void> {\n if (!config.endpoint) return;\n\n // OpenClaw WebSocket 协议\n if (config.protocol === 'openclaw') {\n await this.handleOpenClawStreamRequest(params, config);\n return;\n }\n\n this.sseClient = new SSEClient(config.endpoint);\n\n const req = (await config.onRequest?.(params)) || {};\n\n // 设置事件处理器\n this.sseClient.on('start', (chunk) => {\n config.onStart?.(chunk);\n });\n\n this.sseClient.on('message', (msg) => {\n const chunk = msg as SSEChunkData;\n // 如果配置了 isValidChunk 且返回 false,则跳过该 chunk\n if (config.isValidChunk && !config.isValidChunk(chunk)) return;\n config.onMessage?.(chunk);\n });\n\n this.sseClient.on('error', (error) => {\n config.onError?.(error);\n });\n\n this.sseClient.on('complete', (isAborted) => {\n config.onComplete?.(isAborted, req);\n });\n\n await this.sseClient.connect(req);\n }\n\n /**\n * 处理 OpenClaw WebSocket 流式请求\n */\n private async handleOpenClawStreamRequest(params: ChatRequestParams, config: ChatServiceConfig): Promise<void> {\n const openclawConfig = config.openclaw || {};\n\n // 构建适配器配置\n const adapterConfig: OpenClawAdapterConfig = {\n endpoint: config.endpoint!,\n timeout: config.timeout,\n maxRetries: config.maxRetries,\n retryInterval: config.retryInterval,\n ...openclawConfig,\n };\n\n // 复用或创建适配器\n if (!this.openclawAdapter) {\n this.openclawAdapter = new OpenClawAdapter(adapterConfig);\n }\n\n // 设置回调\n this.openclawAdapter.setCallbacks({\n onConnected: () => {\n this.logger.info('OpenClaw connected, sending message...');\n },\n onStart: () => {\n config.onStart?.('openclaw:stream:start');\n },\n onMessage: (content) => {\n // 将 OpenClaw 事件转换为 SSEChunkData 格式,保持与 ChatEngine 的兼容性\n const chunk: SSEChunkData = {\n event: 'openclaw',\n data: content,\n };\n config.onMessage?.(chunk);\n },\n onComplete: (isAborted, requestParams) => {\n config.onComplete?.(isAborted, requestParams);\n },\n onError: (error) => {\n config.onError?.(error);\n },\n });\n\n try {\n // 连接 WebSocket(如果未连接)\n if (!this.openclawAdapter.isAuthenticated()) {\n await this.openclawAdapter.connect();\n }\n\n // 通过 onRequest 获取用户自定义的业务参数\n const requestParams = (await config.onRequest?.(params)) || {};\n\n // 发送消息(requestParams 包含用户自定义的 sessionKey、token 等)\n await this.openclawAdapter.sendMessage(params, requestParams as Record<string, unknown>);\n } catch (error) {\n config.onError?.(error as Error);\n throw error;\n }\n }\n\n /**\n * 关闭所有客户端连接\n */\n closeConnect(): void {\n if (this.sseClient) {\n this.sseClient.abort();\n this.sseClient = null;\n }\n if (this.batchClient) {\n this.batchClient.abort();\n this.batchClient = null;\n }\n if (this.openclawAdapter) {\n this.openclawAdapter.abort();\n }\n }\n\n /**\n * 获取连接统计\n */\n getSSEStats(): { id: string; status: string; info: any } | null {\n if (!this.sseClient) return null;\n\n return {\n id: this.sseClient.connectionId,\n status: this.sseClient.getStatus(),\n info: this.sseClient.getInfo(),\n };\n }\n\n /**\n * 销毁服务\n */\n async destroy(): Promise<void> {\n this.isDestroyed = true;\n this.closeConnect();\n if (this.openclawAdapter) {\n await this.openclawAdapter.destroy();\n this.openclawAdapter = null;\n }\n this.logger.info('Enhanced LLM Service destroyed');\n }\n}\n"],"names":["LLMService","_classCallCheck","_defineProperty","LoggerManager","getLogger","_createClass","key","value","_handleBatchRequest","_asyncToGenerator","_regeneratorRuntime","mark","_callee","params","config","_config$onRequest","req","data","_config$onComplete","result","_config$onError2","_t","_t2","wrap","_context","prev","next","batchClient","BatchClient","on","error","_config$onError","onError","call","onRequest","sent","request","endpoint","method","headers","_objectSpread","body","timeout","onComplete","abrupt","stop","handleBatchRequest","_x","_x2","apply","arguments","_handleStreamRequest","_callee2","_config$onRequest2","_t3","_context2","protocol","handleOpenClawStreamRequest","sseClient","SSEClient","chunk","_config$onStart","onStart","msg","_config$onMessage","isValidChunk","onMessage","_config$onError3","isAborted","_config$onComplete2","connect","handleStreamRequest","_x3","_x4","_handleOpenClawStreamRequest","_callee3","_this","openclawConfig","adapterConfig","_config$onRequest3","requestParams","_config$onError5","_t4","_t5","_context3","openclaw","maxRetries","retryInterval","openclawAdapter","OpenClawAdapter","setCallbacks","onConnected","logger","info","_config$onStart2","content","_config$onMessage2","event","_config$onComplete3","_config$onError4","isAuthenticated","sendMessage","_x5","_x6","closeConnect","abort","getSSEStats","id","connectionId","status","getStatus","getInfo","_destroy","_callee4","_context4","isDestroyed","destroy"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"llm-service.js","sources":["../../../../../pro-components/chat/chat-engine/core/server/llm-service.ts"],"sourcesContent":["import type { AIMessageContent, ChatRequestParams, ChatServiceConfig, SSEChunkData } from '../type';\nimport { LoggerManager } from '../utils/logger';\nimport { BatchClient } from './batch-client';\nimport { SSEClient } from './sse-client';\n\n// 与原有接口保持兼容\nexport interface ILLMService {\n /**\n * 处理批量请求(非流式)\n */\n handleBatchRequest(\n params: ChatRequestParams,\n config: ChatServiceConfig,\n ): Promise<AIMessageContent | AIMessageContent[]>;\n\n /**\n * 处理流式请求\n */\n handleStreamRequest(params: ChatRequestParams, config: ChatServiceConfig): Promise<void>;\n}\n\n/**\n * LLM Service — 负责 SSE 和 Batch 请求\n *\n * 注意:OpenClaw WebSocket 连接已移至 OpenClawStreamHandler 管理,\n * LLMService 不再感知 OpenClaw 的存在。\n */\nexport class LLMService implements ILLMService {\n private sseClient: SSEClient | null = null;\n\n private batchClient: BatchClient | null = null;\n\n private isDestroyed = false;\n\n private logger = LoggerManager.getLogger();\n\n /**\n * 处理批量请求(非流式)\n */\n async handleBatchRequest(\n params: ChatRequestParams,\n config: ChatServiceConfig,\n ): Promise<AIMessageContent | AIMessageContent[]> {\n // 确保只有一个客户端实例\n this.batchClient = this.batchClient || new BatchClient();\n this.batchClient.on('error', (error) => {\n config.onError?.(error);\n });\n\n const req = (await config.onRequest?.(params)) || params;\n\n try {\n const data = await this.batchClient.request<AIMessageContent>(\n config.endpoint!,\n {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n ...req.headers,\n },\n body: req.body,\n },\n config.timeout,\n );\n if (data) {\n const result = config.onComplete?.(false, req, data);\n // 如果onComplete返回了内容,使用它;否则使用原始data\n return result || data;\n }\n // 如果没有data,返回空数组\n return [];\n } catch (error) {\n config.onError?.(error as Error | Response);\n throw error;\n }\n }\n\n /**\n * 处理流式请求(SSE)\n *\n * 注意:OpenClaw 协议不再走此方法,而是由 OpenClawStreamHandler 直接管理。\n */\n async handleStreamRequest(params: ChatRequestParams, config: ChatServiceConfig): Promise<void> {\n if (!config.endpoint) return;\n\n this.sseClient = new SSEClient(config.endpoint);\n\n const req = (await config.onRequest?.(params)) || {};\n\n // 设置事件处理器\n this.sseClient.on('start', (chunk) => {\n config.onStart?.(chunk);\n });\n\n this.sseClient.on('message', (msg) => {\n const chunk = msg as SSEChunkData;\n // 如果配置了 isValidChunk 且返回 false,则跳过该 chunk\n if (config.isValidChunk && !config.isValidChunk(chunk)) return;\n config.onMessage?.(chunk);\n });\n\n this.sseClient.on('error', (error) => {\n config.onError?.(error);\n });\n\n this.sseClient.on('complete', (isAborted) => {\n config.onComplete?.(isAborted, req);\n });\n\n await this.sseClient.connect(req);\n }\n\n /**\n * 关闭所有客户端连接\n */\n closeConnect(): void {\n if (this.sseClient) {\n this.sseClient.abort();\n this.sseClient = null;\n }\n if (this.batchClient) {\n this.batchClient.abort();\n this.batchClient = null;\n }\n }\n\n /**\n * 获取连接统计\n */\n getSSEStats(): { id: string; status: string; info: any } | null {\n if (!this.sseClient) return null;\n\n return {\n id: this.sseClient.connectionId,\n status: this.sseClient.getStatus(),\n info: this.sseClient.getInfo(),\n };\n }\n\n /**\n * 销毁服务\n */\n async destroy(): Promise<void> {\n this.isDestroyed = true;\n this.closeConnect();\n this.logger.info('LLM Service destroyed');\n }\n}\n"],"names":["LLMService","_classCallCheck","_defineProperty","LoggerManager","getLogger","_createClass","key","value","_handleBatchRequest","_asyncToGenerator","_regeneratorRuntime","mark","_callee","params","config","_config$onRequest","req","data","_config$onComplete","result","_config$onError2","_t","_t2","wrap","_context","prev","next","batchClient","BatchClient","on","error","_config$onError","onError","call","onRequest","sent","request","endpoint","method","headers","_objectSpread","body","timeout","onComplete","abrupt","stop","handleBatchRequest","_x","_x2","apply","arguments","_handleStreamRequest","_callee2","_config$onRequest2","_t3","_context2","sseClient","SSEClient","chunk","_config$onStart","onStart","msg","_config$onMessage","isValidChunk","onMessage","_config$onError3","isAborted","_config$onComplete2","connect","handleStreamRequest","_x3","_x4","closeConnect","abort","getSSEStats","id","connectionId","status","getStatus","info","getInfo","_destroy","_callee3","_context3","isDestroyed","logger","destroy"],"mappings":"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"}
|
|
@@ -59,6 +59,8 @@ export declare class WebSocketClient extends EventEmitter {
|
|
|
59
59
|
private timeoutTimer?;
|
|
60
60
|
private manualClose;
|
|
61
61
|
private firstMessageReceived;
|
|
62
|
+
/** 用于在 close 时 reject 正在等待的 connect promise */
|
|
63
|
+
private connectReject;
|
|
62
64
|
constructor(url: string);
|
|
63
65
|
/**
|
|
64
66
|
* 连接 WebSocket 服务
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* tdesign v1.1.0-alpha.
|
|
2
|
+
* tdesign v1.1.0-alpha.17
|
|
3
3
|
* (c) 2026 tdesign
|
|
4
4
|
* @license MIT
|
|
5
5
|
*/
|
|
@@ -14,7 +14,7 @@ import _defineProperty from '@babel/runtime/helpers/defineProperty';
|
|
|
14
14
|
import _regeneratorRuntime from '@babel/runtime/regenerator';
|
|
15
15
|
import SimpleEventEmitter from '../utils/eventEmitter.js';
|
|
16
16
|
import { LoggerManager } from '../utils/logger.js';
|
|
17
|
-
import {
|
|
17
|
+
import { ConnectionError, TimeoutError } from './errors.js';
|
|
18
18
|
import '@babel/runtime/helpers/wrapNativeSuper';
|
|
19
19
|
|
|
20
20
|
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; }
|
|
@@ -47,6 +47,7 @@ var WebSocketClient = /*#__PURE__*/function (_EventEmitter) {
|
|
|
47
47
|
_defineProperty(_this, "retryCount", 0);
|
|
48
48
|
_defineProperty(_this, "manualClose", false);
|
|
49
49
|
_defineProperty(_this, "firstMessageReceived", false);
|
|
50
|
+
_defineProperty(_this, "connectReject", null);
|
|
50
51
|
_this.url = url;
|
|
51
52
|
_this.connectionId = _this.generateConnectionId();
|
|
52
53
|
_this.config = _objectSpread({}, DEFAULT_WS_CONFIG);
|
|
@@ -116,10 +117,11 @@ var WebSocketClient = /*#__PURE__*/function (_EventEmitter) {
|
|
|
116
117
|
key: "close",
|
|
117
118
|
value: function () {
|
|
118
119
|
var _close = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee2() {
|
|
120
|
+
var rejectFn;
|
|
119
121
|
return _regeneratorRuntime.wrap(function (_context2) {
|
|
120
122
|
while (1) switch (_context2.prev = _context2.next) {
|
|
121
123
|
case 0:
|
|
122
|
-
if (!(this.state === "disconnected" /* DISCONNECTED */ || this.state === "closing" /* CLOSING */)) {
|
|
124
|
+
if (!(this.state === "disconnected" /* DISCONNECTED */ || this.state === "closing" /* CLOSING */ || this.state === "closed" /* CLOSED */)) {
|
|
123
125
|
_context2.next = 1;
|
|
124
126
|
break;
|
|
125
127
|
}
|
|
@@ -129,7 +131,18 @@ var WebSocketClient = /*#__PURE__*/function (_EventEmitter) {
|
|
|
129
131
|
this.setState("closing" /* CLOSING */);
|
|
130
132
|
try {
|
|
131
133
|
this.clearTimers();
|
|
134
|
+
if (this.connectReject) {
|
|
135
|
+
rejectFn = this.connectReject;
|
|
136
|
+
this.connectReject = null;
|
|
137
|
+
rejectFn(new ConnectionError("Connection closed before established"));
|
|
138
|
+
}
|
|
132
139
|
if (this.ws) {
|
|
140
|
+
if (this.ws.readyState === WebSocket.CONNECTING) {
|
|
141
|
+
this.ws.onopen = null;
|
|
142
|
+
this.ws.onmessage = null;
|
|
143
|
+
this.ws.onerror = null;
|
|
144
|
+
this.ws.onclose = null;
|
|
145
|
+
}
|
|
133
146
|
this.ws.close(1e3, "Client initiated close");
|
|
134
147
|
this.ws = null;
|
|
135
148
|
}
|
|
@@ -194,6 +207,7 @@ var WebSocketClient = /*#__PURE__*/function (_EventEmitter) {
|
|
|
194
207
|
value: function establishConnection() {
|
|
195
208
|
var _this2 = this;
|
|
196
209
|
return new Promise(function (resolve, reject) {
|
|
210
|
+
_this2.connectReject = reject;
|
|
197
211
|
try {
|
|
198
212
|
_this2.ws = new WebSocket(_this2.url);
|
|
199
213
|
if (_this2.config.timeout > 0) {
|
|
@@ -207,6 +221,7 @@ var WebSocketClient = /*#__PURE__*/function (_EventEmitter) {
|
|
|
207
221
|
}
|
|
208
222
|
_this2.ws.onopen = function () {
|
|
209
223
|
_this2.clearTimeout();
|
|
224
|
+
_this2.connectReject = null;
|
|
210
225
|
_this2.setState("connected" /* CONNECTED */);
|
|
211
226
|
_this2.retryCount = 0;
|
|
212
227
|
_this2.connectionInfo.lastActivity = Date.now();
|
|
@@ -256,6 +271,7 @@ var WebSocketClient = /*#__PURE__*/function (_EventEmitter) {
|
|
|
256
271
|
value: function handleClose(code, reason) {
|
|
257
272
|
this.clearTimers();
|
|
258
273
|
this.ws = null;
|
|
274
|
+
this.logger.warn("[WS handleClose] code=".concat(code, ", reason=\"").concat(reason, "\", manualClose=").concat(this.manualClose));
|
|
259
275
|
if (this.manualClose || code === 1e3) {
|
|
260
276
|
this.setState("closed" /* CLOSED */);
|
|
261
277
|
this.emit("complete", this.manualClose);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"websocket-client.js","sources":["../../../../../pro-components/chat/chat-engine/core/server/websocket-client.ts"],"sourcesContent":["/* eslint-disable max-classes-per-file */\nimport EventEmitter from '../utils/eventEmitter';\nimport { LoggerManager } from '../utils/logger';\nimport { ConnectionError, TimeoutError } from './errors';\nimport type { ConnectionInfo } from './types';\n\n/**\n * WebSocket 连接状态\n */\nexport enum WebSocketConnectionState {\n DISCONNECTED = 'disconnected',\n CONNECTING = 'connecting',\n CONNECTED = 'connected',\n CLOSING = 'closing',\n CLOSED = 'closed',\n ERROR = 'error',\n}\n\n/**\n * WebSocket 客户端配置\n */\nexport interface WebSocketClientConfig {\n /** 请求超时时间(毫秒) */\n timeout?: number;\n /** 重连间隔(毫秒) */\n retryInterval?: number;\n /** 最大重连次数 */\n maxRetries?: number;\n /** 心跳间隔(毫秒),0 表示禁用 */\n heartbeatInterval?: number;\n}\n\n/**\n * 默认 WebSocket 配置\n */\nexport const DEFAULT_WS_CONFIG: Required<WebSocketClientConfig> = {\n timeout: 30000,\n retryInterval: 1000,\n maxRetries: 5,\n heartbeatInterval: 30000,\n};\n\n/**\n * WebSocket 状态变更事件\n */\nexport interface WSStateChangeEvent {\n connectionId: string;\n from: WebSocketConnectionState;\n to: WebSocketConnectionState;\n timestamp: number;\n}\n\n/**\n * WebSocket 客户端\n *\n * 设计原则:\n * - 与 SSEClient 保持相同的事件接口(message、error、complete、start、stateChange)\n * - 支持心跳保活、自动重连\n * - 支持消息发送和接收\n */\nexport class WebSocketClient extends EventEmitter {\n public readonly connectionId: string;\n\n private state = WebSocketConnectionState.DISCONNECTED;\n\n private ws: WebSocket | null = null;\n\n private config: Required<WebSocketClientConfig>;\n\n private logger = LoggerManager.getLogger();\n\n private url: string;\n\n private connectionInfo: ConnectionInfo;\n\n private retryCount = 0;\n\n private reconnectTimer?: ReturnType<typeof setTimeout>;\n\n private heartbeatTimer?: ReturnType<typeof setInterval>;\n\n private timeoutTimer?: ReturnType<typeof setTimeout>;\n\n private manualClose = false;\n\n private firstMessageReceived = false;\n\n constructor(url: string) {\n super();\n this.url = url;\n this.connectionId = this.generateConnectionId();\n this.config = { ...DEFAULT_WS_CONFIG };\n\n this.connectionInfo = {\n id: this.connectionId,\n url,\n state: this.state,\n createdAt: Date.now(),\n retryCount: 0,\n lastActivity: Date.now(),\n stats: {},\n };\n\n this.setupInternalEventHandlers();\n }\n\n /**\n * 连接 WebSocket 服务\n */\n async connect(config?: WebSocketClientConfig): Promise<void> {\n if (this.state === WebSocketConnectionState.CONNECTED || this.state === WebSocketConnectionState.CONNECTING) {\n return;\n }\n\n this.config = {\n ...DEFAULT_WS_CONFIG,\n ...config,\n };\n\n this.manualClose = false;\n this.setState(WebSocketConnectionState.CONNECTING);\n\n try {\n await this.establishConnection();\n } catch (error) {\n this.handleConnectionError(error as Error);\n }\n }\n\n /**\n * 发送消息\n */\n send(data: string | object): void {\n if (this.state !== WebSocketConnectionState.CONNECTED || !this.ws) {\n this.logger.warn(`Cannot send message: WebSocket not connected (state: ${this.state})`);\n return;\n }\n\n const message = typeof data === 'string' ? data : JSON.stringify(data);\n this.ws.send(message);\n this.connectionInfo.lastActivity = Date.now();\n }\n\n /**\n * 关闭连接\n */\n async close(): Promise<void> {\n if (this.state === WebSocketConnectionState.DISCONNECTED || this.state === WebSocketConnectionState.CLOSING) {\n return;\n }\n\n this.manualClose = true;\n this.setState(WebSocketConnectionState.CLOSING);\n\n try {\n this.clearTimers();\n\n if (this.ws) {\n this.ws.close(1000, 'Client initiated close');\n this.ws = null;\n }\n\n this.emit('complete', true);\n } catch (error) {\n this.logger.error('WebSocket close failed:', error);\n this.emit('error', error);\n } finally {\n this.setState(WebSocketConnectionState.CLOSED);\n }\n }\n\n /**\n * 中止连接(与 SSEClient 接口保持一致)\n */\n async abort(): Promise<void> {\n return this.close();\n }\n\n /**\n * 获取连接状态\n */\n getStatus(): WebSocketConnectionState {\n return this.state;\n }\n\n /**\n * 获取连接信息\n */\n getInfo(): ConnectionInfo {\n return {\n ...this.connectionInfo,\n state: this.state,\n retryCount: this.retryCount,\n };\n }\n\n /**\n * 检查是否已连接\n */\n isConnected(): boolean {\n return this.state === WebSocketConnectionState.CONNECTED && this.ws?.readyState === WebSocket.OPEN;\n }\n\n /**\n * 建立 WebSocket 连接\n */\n private establishConnection(): Promise<void> {\n return new Promise((resolve, reject) => {\n try {\n this.ws = new WebSocket(this.url);\n\n // 连接超时处理\n if (this.config.timeout > 0) {\n this.timeoutTimer = setTimeout(() => {\n if (this.state === WebSocketConnectionState.CONNECTING) {\n const error = new TimeoutError(`WebSocket connection timeout after ${this.config.timeout}ms`);\n this.handleConnectionError(error);\n reject(error);\n }\n }, this.config.timeout);\n }\n\n this.ws.onopen = () => {\n this.clearTimeout();\n this.setState(WebSocketConnectionState.CONNECTED);\n this.retryCount = 0;\n this.connectionInfo.lastActivity = Date.now();\n\n // 启动心跳\n this.startHeartbeat();\n\n this.logger.info(`WebSocket ${this.connectionId} connected to ${this.url}`);\n resolve();\n };\n\n this.ws.onmessage = (event) => {\n this.handleMessage(event.data);\n };\n\n this.ws.onerror = (event) => {\n this.logger.error(`WebSocket ${this.connectionId} error:`, event);\n const error = new ConnectionError('WebSocket connection error');\n this.emit('error', error);\n };\n\n this.ws.onclose = (event) => {\n this.handleClose(event.code, event.reason);\n };\n } catch (error) {\n reject(error);\n }\n });\n }\n\n /**\n * 处理接收到的消息\n */\n private handleMessage(data: string): void {\n this.connectionInfo.lastActivity = Date.now();\n\n // 首次消息,发出 start 事件\n if (!this.firstMessageReceived) {\n this.firstMessageReceived = true;\n this.emit('start', data);\n }\n\n // 尝试解析 JSON\n try {\n const parsed = JSON.parse(data);\n this.emit('message', {\n event: parsed.event || parsed.type || 'message',\n data: parsed,\n });\n } catch {\n // 非 JSON 消息,原样发送\n this.emit('message', {\n event: 'message',\n data,\n });\n }\n }\n\n /**\n * 处理连接关闭\n */\n private handleClose(code: number, reason: string): void {\n this.clearTimers();\n this.ws = null;\n\n if (this.manualClose || code === 1000) {\n // 正常关闭\n this.setState(WebSocketConnectionState.CLOSED);\n this.emit('complete', this.manualClose);\n this.logger.info(`WebSocket ${this.connectionId} closed normally`);\n } else {\n // 异常关闭,尝试重连\n this.setState(WebSocketConnectionState.DISCONNECTED);\n this.logger.warn(`WebSocket ${this.connectionId} closed unexpectedly: ${code} - ${reason}`);\n\n if (this.shouldReconnect()) {\n this.scheduleReconnect();\n } else {\n this.emit('complete', false);\n this.emit('error', new ConnectionError(`WebSocket closed: ${code} - ${reason}`));\n }\n }\n }\n\n /**\n * 处理连接错误\n */\n private handleConnectionError(error: Error): void {\n this.connectionInfo.error = error;\n this.setState(WebSocketConnectionState.ERROR);\n this.emit('error', error);\n\n if (this.shouldReconnect()) {\n this.scheduleReconnect();\n }\n }\n\n /**\n * 判断是否应该重连\n */\n private shouldReconnect(): boolean {\n return !this.manualClose && this.retryCount < this.config.maxRetries;\n }\n\n /**\n * 调度重连\n */\n private scheduleReconnect(): void {\n this.retryCount++;\n const delay = this.config.retryInterval * Math.pow(1.5, this.retryCount - 1);\n\n this.logger.info(`WebSocket ${this.connectionId} reconnecting in ${delay}ms (attempt ${this.retryCount}/${this.config.maxRetries})`);\n\n this.reconnectTimer = setTimeout(() => {\n if (!this.manualClose && this.state !== WebSocketConnectionState.CONNECTED) {\n this.firstMessageReceived = false;\n this.connect(this.config);\n }\n }, delay);\n }\n\n /**\n * 启动心跳\n *\n * 注意:OpenClaw Gateway 不支持 RPC 方式的 heartbeat 方法,\n * 这里仅通过检测连接活跃度来判断是否需要重连,\n * 不再主动发送 heartbeat 请求帧。\n */\n private startHeartbeat(): void {\n if (this.config.heartbeatInterval <= 0) return;\n\n this.heartbeatTimer = setInterval(() => {\n if (!this.isConnected()) {\n return;\n }\n\n // 检测连接是否长时间无活动(2倍心跳间隔),如果是则主动关闭触发重连\n const idleTime = Date.now() - this.connectionInfo.lastActivity;\n if (idleTime > this.config.heartbeatInterval * 2) {\n this.logger.warn(`WebSocket ${this.connectionId} idle for ${idleTime}ms, reconnecting...`);\n this.ws?.close(4000, 'Heartbeat timeout');\n }\n }, this.config.heartbeatInterval);\n }\n\n /**\n * 清理超时定时器\n */\n private clearTimeout(): void {\n if (this.timeoutTimer) {\n clearTimeout(this.timeoutTimer);\n this.timeoutTimer = undefined;\n }\n }\n\n /**\n * 清理所有定时器\n */\n private clearTimers(): void {\n this.clearTimeout();\n\n if (this.reconnectTimer) {\n clearTimeout(this.reconnectTimer);\n this.reconnectTimer = undefined;\n }\n\n if (this.heartbeatTimer) {\n clearInterval(this.heartbeatTimer);\n this.heartbeatTimer = undefined;\n }\n }\n\n /**\n * 设置连接状态\n */\n private setState(newState: WebSocketConnectionState): void {\n const oldState = this.state;\n this.state = newState;\n this.connectionInfo.state = newState;\n\n const stateChangeEvent: WSStateChangeEvent = {\n connectionId: this.connectionId,\n from: oldState,\n to: newState,\n timestamp: Date.now(),\n };\n\n this.emit('stateChange', stateChangeEvent);\n this.logger.debug(`WebSocket ${this.connectionId} state: ${oldState} -> ${newState}`);\n }\n\n /**\n * 设置内部事件处理器\n */\n private setupInternalEventHandlers(): void {\n this.on('error', (error) => {\n this.logger.error(`WebSocket Client ${this.connectionId} error:`, error);\n });\n\n this.on('complete', (isAborted) => {\n this.logger.info(`WebSocket Client ${this.connectionId} completed, aborted: ${isAborted}`);\n });\n }\n\n /**\n * 生成连接 ID\n */\n private generateConnectionId(): string {\n const timestamp = Date.now();\n return `ws_${timestamp}_${Math.random().toString(36).substr(2, 9)}`;\n }\n}\n"],"names":["WebSocketConnectionState","DEFAULT_WS_CONFIG","timeout","retryInterval","maxRetries","heartbeatInterval","WebSocketClient","url","_this","_classCallCheck","_callSuper","_defineProperty","LoggerManager","getLogger","connectionId","generateConnectionId","config","_objectSpread","connectionInfo","id","state","createdAt","Date","now","retryCount","lastActivity","stats","setupInternalEventHandlers","_inherits","_EventEmitter","_createClass","key","value","_connect","_asyncToGenerator","_regeneratorRuntime","mark","_callee","_t","wrap","_context","prev","next","abrupt","manualClose","setState","establishConnection","handleConnectionError","stop","connect","send","data","ws","logger","warn","concat","message","JSON","stringify","_close","_callee2","_context2","clearTimers","close","emit","error","apply","arguments","_abort","_callee3","_context3","abort","getStatus","getInfo","isConnected","_this$ws","readyState","WebSocket","OPEN","_this2","Promise","resolve","reject","timeoutTimer","setTimeout","TimeoutError","onopen","clearTimeout","startHeartbeat","info","onmessage","event","handleMessage","onerror","ConnectionError","onclose","handleClose","code","reason","firstMessageReceived","parsed","parse","type","_unused","shouldReconnect","scheduleReconnect","_this3","delay","Math","pow","reconnectTimer","_this4","heartbeatTimer","setInterval","idleTime","_this4$ws","_clearTimeout","toString","clearInterval","newState","oldState","stateChangeEvent","from","to","timestamp","debug","_this5","on","isAborted","random","substr","EventEmitter"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"websocket-client.js","sources":["../../../../../pro-components/chat/chat-engine/core/server/websocket-client.ts"],"sourcesContent":["/* eslint-disable max-classes-per-file */\nimport EventEmitter from '../utils/eventEmitter';\nimport { LoggerManager } from '../utils/logger';\nimport { ConnectionError, TimeoutError } from './errors';\nimport type { ConnectionInfo } from './types';\n\n/**\n * WebSocket 连接状态\n */\nexport enum WebSocketConnectionState {\n DISCONNECTED = 'disconnected',\n CONNECTING = 'connecting',\n CONNECTED = 'connected',\n CLOSING = 'closing',\n CLOSED = 'closed',\n ERROR = 'error',\n}\n\n/**\n * WebSocket 客户端配置\n */\nexport interface WebSocketClientConfig {\n /** 请求超时时间(毫秒) */\n timeout?: number;\n /** 重连间隔(毫秒) */\n retryInterval?: number;\n /** 最大重连次数 */\n maxRetries?: number;\n /** 心跳间隔(毫秒),0 表示禁用 */\n heartbeatInterval?: number;\n}\n\n/**\n * 默认 WebSocket 配置\n */\nexport const DEFAULT_WS_CONFIG: Required<WebSocketClientConfig> = {\n timeout: 30000,\n retryInterval: 1000,\n maxRetries: 5,\n heartbeatInterval: 30000,\n};\n\n/**\n * WebSocket 状态变更事件\n */\nexport interface WSStateChangeEvent {\n connectionId: string;\n from: WebSocketConnectionState;\n to: WebSocketConnectionState;\n timestamp: number;\n}\n\n/**\n * WebSocket 客户端\n *\n * 设计原则:\n * - 与 SSEClient 保持相同的事件接口(message、error、complete、start、stateChange)\n * - 支持心跳保活、自动重连\n * - 支持消息发送和接收\n */\nexport class WebSocketClient extends EventEmitter {\n public readonly connectionId: string;\n\n private state = WebSocketConnectionState.DISCONNECTED;\n\n private ws: WebSocket | null = null;\n\n private config: Required<WebSocketClientConfig>;\n\n private logger = LoggerManager.getLogger();\n\n private url: string;\n\n private connectionInfo: ConnectionInfo;\n\n private retryCount = 0;\n\n private reconnectTimer?: ReturnType<typeof setTimeout>;\n\n private heartbeatTimer?: ReturnType<typeof setInterval>;\n\n private timeoutTimer?: ReturnType<typeof setTimeout>;\n\n private manualClose = false;\n\n private firstMessageReceived = false;\n\n /** 用于在 close 时 reject 正在等待的 connect promise */\n private connectReject: ((reason: Error) => void) | null = null;\n\n constructor(url: string) {\n super();\n this.url = url;\n this.connectionId = this.generateConnectionId();\n this.config = { ...DEFAULT_WS_CONFIG };\n\n this.connectionInfo = {\n id: this.connectionId,\n url,\n state: this.state,\n createdAt: Date.now(),\n retryCount: 0,\n lastActivity: Date.now(),\n stats: {},\n };\n\n this.setupInternalEventHandlers();\n }\n\n /**\n * 连接 WebSocket 服务\n */\n async connect(config?: WebSocketClientConfig): Promise<void> {\n if (this.state === WebSocketConnectionState.CONNECTED || this.state === WebSocketConnectionState.CONNECTING) {\n return;\n }\n\n this.config = {\n ...DEFAULT_WS_CONFIG,\n ...config,\n };\n\n this.manualClose = false;\n this.setState(WebSocketConnectionState.CONNECTING);\n\n try {\n await this.establishConnection();\n } catch (error) {\n this.handleConnectionError(error as Error);\n }\n }\n\n /**\n * 发送消息\n */\n send(data: string | object): void {\n if (this.state !== WebSocketConnectionState.CONNECTED || !this.ws) {\n this.logger.warn(`Cannot send message: WebSocket not connected (state: ${this.state})`);\n return;\n }\n\n const message = typeof data === 'string' ? data : JSON.stringify(data);\n this.ws.send(message);\n this.connectionInfo.lastActivity = Date.now();\n }\n\n /**\n * 关闭连接\n */\n async close(): Promise<void> {\n if (this.state === WebSocketConnectionState.DISCONNECTED || this.state === WebSocketConnectionState.CLOSING || this.state === WebSocketConnectionState.CLOSED) {\n return;\n }\n\n this.manualClose = true;\n this.setState(WebSocketConnectionState.CLOSING);\n\n try {\n this.clearTimers();\n\n // 如果 connect 还在 pending(CONNECTING 阶段被 close),reject 它\n if (this.connectReject) {\n const rejectFn = this.connectReject;\n this.connectReject = null;\n rejectFn(new ConnectionError('Connection closed before established'));\n }\n\n if (this.ws) {\n // 如果 WebSocket 还在 CONNECTING 阶段,先移除事件处理器以避免触发错误回调\n if (this.ws.readyState === WebSocket.CONNECTING) {\n this.ws.onopen = null;\n this.ws.onmessage = null;\n this.ws.onerror = null;\n this.ws.onclose = null;\n }\n this.ws.close(1000, 'Client initiated close');\n this.ws = null;\n }\n\n this.emit('complete', true);\n } catch (error) {\n this.logger.error('WebSocket close failed:', error);\n this.emit('error', error);\n } finally {\n this.setState(WebSocketConnectionState.CLOSED);\n }\n }\n\n /**\n * 中止连接(与 SSEClient 接口保持一致)\n */\n async abort(): Promise<void> {\n return this.close();\n }\n\n /**\n * 获取连接状态\n */\n getStatus(): WebSocketConnectionState {\n return this.state;\n }\n\n /**\n * 获取连接信息\n */\n getInfo(): ConnectionInfo {\n return {\n ...this.connectionInfo,\n state: this.state,\n retryCount: this.retryCount,\n };\n }\n\n /**\n * 检查是否已连接\n */\n isConnected(): boolean {\n return this.state === WebSocketConnectionState.CONNECTED && this.ws?.readyState === WebSocket.OPEN;\n }\n\n /**\n * 建立 WebSocket 连接\n */\n private establishConnection(): Promise<void> {\n return new Promise((resolve, reject) => {\n // 保存 reject,以便 close() 时可以 reject 这个 pending promise\n this.connectReject = reject;\n\n try {\n this.ws = new WebSocket(this.url);\n\n // 连接超时处理\n if (this.config.timeout > 0) {\n this.timeoutTimer = setTimeout(() => {\n if (this.state === WebSocketConnectionState.CONNECTING) {\n const error = new TimeoutError(`WebSocket connection timeout after ${this.config.timeout}ms`);\n this.handleConnectionError(error);\n reject(error);\n }\n }, this.config.timeout);\n }\n\n this.ws.onopen = () => {\n this.clearTimeout();\n this.connectReject = null;\n this.setState(WebSocketConnectionState.CONNECTED);\n this.retryCount = 0;\n this.connectionInfo.lastActivity = Date.now();\n\n // 启动心跳\n this.startHeartbeat();\n\n this.logger.info(`WebSocket ${this.connectionId} connected to ${this.url}`);\n resolve();\n };\n\n this.ws.onmessage = (event) => {\n this.handleMessage(event.data);\n };\n\n this.ws.onerror = (event) => {\n this.logger.error(`WebSocket ${this.connectionId} error:`, event);\n const error = new ConnectionError('WebSocket connection error');\n this.emit('error', error);\n };\n\n this.ws.onclose = (event) => {\n this.handleClose(event.code, event.reason);\n };\n } catch (error) {\n reject(error);\n }\n });\n }\n\n /**\n * 处理接收到的消息\n */\n private handleMessage(data: string): void {\n this.connectionInfo.lastActivity = Date.now();\n\n // 首次消息,发出 start 事件\n if (!this.firstMessageReceived) {\n this.firstMessageReceived = true;\n this.emit('start', data);\n }\n\n // 尝试解析 JSON\n try {\n const parsed = JSON.parse(data);\n this.emit('message', {\n event: parsed.event || parsed.type || 'message',\n data: parsed,\n });\n } catch {\n // 非 JSON 消息,原样发送\n this.emit('message', {\n event: 'message',\n data,\n });\n }\n }\n\n /**\n * 处理连接关闭\n */\n private handleClose(code: number, reason: string): void {\n this.clearTimers();\n this.ws = null;\n\n this.logger.warn(`[WS handleClose] code=${code}, reason=\"${reason}\", manualClose=${this.manualClose}`);\n\n if (this.manualClose || code === 1000) {\n // 正常关闭\n this.setState(WebSocketConnectionState.CLOSED);\n this.emit('complete', this.manualClose);\n this.logger.info(`WebSocket ${this.connectionId} closed normally`);\n } else {\n // 异常关闭,尝试重连\n this.setState(WebSocketConnectionState.DISCONNECTED);\n this.logger.warn(`WebSocket ${this.connectionId} closed unexpectedly: ${code} - ${reason}`);\n\n if (this.shouldReconnect()) {\n this.scheduleReconnect();\n } else {\n this.emit('complete', false);\n this.emit('error', new ConnectionError(`WebSocket closed: ${code} - ${reason}`));\n }\n }\n }\n\n /**\n * 处理连接错误\n */\n private handleConnectionError(error: Error): void {\n this.connectionInfo.error = error;\n this.setState(WebSocketConnectionState.ERROR);\n this.emit('error', error);\n\n if (this.shouldReconnect()) {\n this.scheduleReconnect();\n }\n }\n\n /**\n * 判断是否应该重连\n */\n private shouldReconnect(): boolean {\n return !this.manualClose && this.retryCount < this.config.maxRetries;\n }\n\n /**\n * 调度重连\n */\n private scheduleReconnect(): void {\n this.retryCount++;\n const delay = this.config.retryInterval * Math.pow(1.5, this.retryCount - 1);\n\n this.logger.info(`WebSocket ${this.connectionId} reconnecting in ${delay}ms (attempt ${this.retryCount}/${this.config.maxRetries})`);\n\n this.reconnectTimer = setTimeout(() => {\n if (!this.manualClose && this.state !== WebSocketConnectionState.CONNECTED) {\n this.firstMessageReceived = false;\n this.connect(this.config);\n }\n }, delay);\n }\n\n /**\n * 启动心跳\n *\n * 注意:OpenClaw Gateway 不支持 RPC 方式的 heartbeat 方法,\n * 这里仅通过检测连接活跃度来判断是否需要重连,\n * 不再主动发送 heartbeat 请求帧。\n */\n private startHeartbeat(): void {\n if (this.config.heartbeatInterval <= 0) return;\n\n this.heartbeatTimer = setInterval(() => {\n if (!this.isConnected()) {\n return;\n }\n\n // 检测连接是否长时间无活动(2倍心跳间隔),如果是则主动关闭触发重连\n const idleTime = Date.now() - this.connectionInfo.lastActivity;\n if (idleTime > this.config.heartbeatInterval * 2) {\n this.logger.warn(`WebSocket ${this.connectionId} idle for ${idleTime}ms, reconnecting...`);\n this.ws?.close(4000, 'Heartbeat timeout');\n }\n }, this.config.heartbeatInterval);\n }\n\n /**\n * 清理超时定时器\n */\n private clearTimeout(): void {\n if (this.timeoutTimer) {\n clearTimeout(this.timeoutTimer);\n this.timeoutTimer = undefined;\n }\n }\n\n /**\n * 清理所有定时器\n */\n private clearTimers(): void {\n this.clearTimeout();\n\n if (this.reconnectTimer) {\n clearTimeout(this.reconnectTimer);\n this.reconnectTimer = undefined;\n }\n\n if (this.heartbeatTimer) {\n clearInterval(this.heartbeatTimer);\n this.heartbeatTimer = undefined;\n }\n }\n\n /**\n * 设置连接状态\n */\n private setState(newState: WebSocketConnectionState): void {\n const oldState = this.state;\n this.state = newState;\n this.connectionInfo.state = newState;\n\n const stateChangeEvent: WSStateChangeEvent = {\n connectionId: this.connectionId,\n from: oldState,\n to: newState,\n timestamp: Date.now(),\n };\n\n this.emit('stateChange', stateChangeEvent);\n this.logger.debug(`WebSocket ${this.connectionId} state: ${oldState} -> ${newState}`);\n }\n\n /**\n * 设置内部事件处理器\n */\n private setupInternalEventHandlers(): void {\n this.on('error', (error) => {\n this.logger.error(`WebSocket Client ${this.connectionId} error:`, error);\n });\n\n this.on('complete', (isAborted) => {\n this.logger.info(`WebSocket Client ${this.connectionId} completed, aborted: ${isAborted}`);\n });\n }\n\n /**\n * 生成连接 ID\n */\n private generateConnectionId(): string {\n const timestamp = Date.now();\n return `ws_${timestamp}_${Math.random().toString(36).substr(2, 9)}`;\n }\n}\n"],"names":["WebSocketConnectionState","DEFAULT_WS_CONFIG","timeout","retryInterval","maxRetries","heartbeatInterval","WebSocketClient","url","_this","_classCallCheck","_callSuper","_defineProperty","LoggerManager","getLogger","connectionId","generateConnectionId","config","_objectSpread","connectionInfo","id","state","createdAt","Date","now","retryCount","lastActivity","stats","setupInternalEventHandlers","_inherits","_EventEmitter","_createClass","key","value","_connect","_asyncToGenerator","_regeneratorRuntime","mark","_callee","_t","wrap","_context","prev","next","abrupt","manualClose","setState","establishConnection","handleConnectionError","stop","connect","send","data","ws","logger","warn","concat","message","JSON","stringify","_close","_callee2","rejectFn","_context2","clearTimers","connectReject","ConnectionError","readyState","WebSocket","CONNECTING","onopen","onmessage","onerror","onclose","close","emit","error","apply","arguments","_abort","_callee3","_context3","abort","getStatus","getInfo","isConnected","_this$ws","OPEN","_this2","Promise","resolve","reject","timeoutTimer","setTimeout","TimeoutError","clearTimeout","startHeartbeat","info","event","handleMessage","handleClose","code","reason","firstMessageReceived","parsed","parse","type","_unused","shouldReconnect","scheduleReconnect","_this3","delay","Math","pow","reconnectTimer","_this4","heartbeatTimer","setInterval","idleTime","_this4$ws","_clearTimeout","toString","clearInterval","newState","oldState","stateChangeEvent","from","to","timestamp","debug","_this5","on","isAborted","random","substr","EventEmitter"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;IASYA,wBAAA,4BAAAA,yBAAL,EAAA;AACLA,EAAAA,0BAAA,cAAe,CAAA,GAAA,cAAA,CAAA;AACfA,EAAAA,0BAAA,YAAa,CAAA,GAAA,YAAA,CAAA;AACbA,EAAAA,0BAAA,WAAY,CAAA,GAAA,WAAA,CAAA;AACZA,EAAAA,0BAAA,SAAU,CAAA,GAAA,SAAA,CAAA;AACVA,EAAAA,0BAAA,QAAS,CAAA,GAAA,QAAA,CAAA;AACTA,EAAAA,0BAAA,OAAQ,CAAA,GAAA,OAAA,CAAA;AANEA,EAAAA,OAAAA,yBAAAA,CAAAA;AAAA,CAAA,CAAAA,wBAAA,IAAA,EAAA,EAAA;AA0BL,IAAMC,iBAAqD,GAAA;AAChEC,EAAAA,OAAS,EAAA,GAAA;AACTC,EAAAA,aAAe,EAAA,GAAA;AACfC,EAAAA,UAAY,EAAA,CAAA;AACZC,EAAAA,iBAAmB,EAAA,GAAA;AACrB,EAAA;AAoBaC,IAAAA;EA8BX,SAAAA,eAAAA,CAAYC,GAAa,EAAA;AAAA,IAAA,IAAAC,KAAA,CAAA;AAAAC,IAAAA,eAAA,OAAAH,eAAA,CAAA,CAAA;IACjBE,KAAA,GAAAE,UAAA,CAAA,IAAA,EAAAJ,eAAA,CAAA,CAAA;AAAAK,IAAAA,eAAA,CAAAH,KAAA,EA5BQ,OAAA,EAAA,cAAA,oBAAA,CAAA;IAAAG,eAAA,CAAAH,KAAA,EAAA,IAAA,EAEe,IAAA,CAAA,CAAA;AAAAG,IAAAA,eAAA,CAAAH,KAAA,EAAA,QAAA,EAIdI,cAAcC,SAAU,EAAA,CAAA,CAAA;IAAAF,eAAA,CAAAH,KAAA,EAAA,YAAA,EAMpB,CAAA,CAAA,CAAA;IAAAG,eAAA,CAAAH,KAAA,EAAA,aAAA,EAQC,KAAA,CAAA,CAAA;IAAAG,eAAA,CAAAH,KAAA,EAAA,sBAAA,EAES,KAAA,CAAA,CAAA;IAAAG,eAAA,CAAAH,KAAA,EAAA,eAAA,EAG2B,IAAA,CAAA,CAAA;IAIxDA,KAAA,CAAKD,GAAM,GAAAA,GAAA,CAAA;AACNC,IAAAA,KAAA,CAAAM,YAAA,GAAeN,KAAA,CAAKO,oBAAqB,EAAA,CAAA;AACzCP,IAAAA,KAAA,CAAAQ,MAAA,GAAAC,aAAA,CAAA,EAAA,EAAchB,iBAAkB,CAAA,CAAA;IAErCO,KAAA,CAAKU,cAAiB,GAAA;MACpBC,IAAIX,KAAA,CAAKM,YAAA;AACTP,MAAAA,GAAA,EAAAA,GAAA;MACAa,OAAOZ,KAAA,CAAKY,KAAA;AACZC,MAAAA,SAAA,EAAWC,KAAKC,GAAI,EAAA;AACpBC,MAAAA,UAAY,EAAA,CAAA;AACZC,MAAAA,YAAA,EAAcH,KAAKC,GAAI,EAAA;AACvBG,MAAAA,OAAO,EAAC;KACV,CAAA;IAEAlB,KAAA,CAAKmB,0BAA2B,EAAA,CAAA;AAAA,IAAA,OAAAnB,KAAA,CAAA;AAClC,GAAA;EAAAoB,SAAA,CAAAtB,eAAA,EAAAuB,aAAA,CAAA,CAAA;EAAA,OAAAC,YAAA,CAAAxB,eAAA,EAAA,CAAA;IAAAyB,GAAA,EAAA,SAAA;IAAAC,KAAA,EAAA,YAAA;MAAA,IAAAC,QAAA,GAAAC,iBAAA,cAAAC,mBAAA,CAAAC,IAAA,CAKA,SAAAC,OAAAA,CAAcrB,MAA+C,EAAA;AAAA,QAAA,IAAAsB,EAAA,CAAA;AAAA,QAAA,OAAAH,mBAAA,CAAAI,IAAA,CAAA,UAAAC,QAAA,EAAA;AAAA,UAAA,OAAA,CAAA,EAAA,QAAAA,QAAA,CAAAC,IAAA,GAAAD,QAAA,CAAAE,IAAA;AAAA,YAAA,KAAA,CAAA;AAAA,cAAA,IAAA,EACvD,IAAK,CAAAtB,KAAA,KAAU,WAAsC,oBAAA,IAAA,CAAKA,UAAU,YAAqC,kBAAA,EAAA;AAAAoB,gBAAAA,QAAA,CAAAE,IAAA,GAAA,CAAA,CAAA;AAAA,gBAAA,MAAA;AAAA,eAAA;cAAA,OAAAF,QAAA,CAAAG,MAAA,CAAA,QAAA,CAAA,CAAA;AAAA,YAAA,KAAA,CAAA;cAI7G,IAAA,CAAK3B,MAAS,GAAAC,aAAA,CAAAA,aAAA,CACThB,EAAAA,EAAAA,iBAAA,CACAe,EAAAA,MAAA,CACL,CAAA;cAEA,IAAA,CAAK4B,WAAc,GAAA,KAAA,CAAA;AACnB,cAAA,IAAA,CAAKC,SAAS,YAAmC,kBAAA,CAAA;AAAAL,cAAAA,QAAA,CAAAC,IAAA,GAAA,CAAA,CAAA;AAAAD,cAAAA,QAAA,CAAAE,IAAA,GAAA,CAAA,CAAA;AAAA,cAAA,OAGzC,KAAKI,mBAAoB,EAAA,CAAA;AAAA,YAAA,KAAA,CAAA;AAAAN,cAAAA,QAAA,CAAAE,IAAA,GAAA,CAAA,CAAA;AAAA,cAAA,MAAA;AAAA,YAAA,KAAA,CAAA;AAAAF,cAAAA,QAAA,CAAAC,IAAA,GAAA,CAAA,CAAA;AAAAH,cAAAA,EAAA,GAAAE,QAAA,CAAA,OAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAE/B,cAAA,IAAA,CAAKO,wBAAoC,CAAA,CAAA;AAAA,YAAA,KAAA,CAAA,CAAA;AAAA,YAAA,KAAA,KAAA;cAAA,OAAAP,QAAA,CAAAQ,IAAA,EAAA,CAAA;AAAA,WAAA;AAAA,SAAA,EAAAX,OAAA,EAAA,IAAA,EAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA;OAE7C,CAAA,CAAA,CAAA;MAAA,SAlBMY;;;aAAAA;;;;WAuBN,SAAAC,KAAKC,IAA6B,EAAA;MAChC,IAAI,IAAK,CAAA/B,KAAA,KAAU,WAAsC,oBAAA,CAAC,KAAKgC,EAAI,EAAA;QACjE,IAAA,CAAKC,MAAO,CAAAC,IAAA,CAAA,uDAAA,CAAAC,MAAA,CAA6D,IAAA,CAAKnC,KAAQ,EAAA,GAAA,CAAA,CAAA,CAAA;AACtF,QAAA,OAAA;AACF,OAAA;AAEA,MAAA,IAAMoC,UAAU,OAAOL,IAAA,KAAS,WAAWA,IAAO,GAAAM,IAAA,CAAKC,UAAUP,IAAI,CAAA,CAAA;AAChE,MAAA,IAAA,CAAAC,EAAA,CAAGF,KAAKM,OAAO,CAAA,CAAA;MACf,IAAA,CAAAtC,cAAA,CAAeO,YAAe,GAAAH,IAAA,CAAKC,GAAI,EAAA,CAAA;AAC9C,KAAA;AAAA,GAAA,EAAA;IAAAQ,GAAA,EAAA,OAAA;IAAAC,KAAA,EAAA,YAAA;MAAA,IAAA2B,MAAA,GAAAzB,iBAAA,cAAAC,mBAAA,CAAAC,IAAA,CAKA,SAAAwB,QAAA,GAAA;AAAA,QAAA,IAAAC,QAAA,CAAA;AAAA,QAAA,OAAA1B,mBAAA,CAAAI,IAAA,CAAA,UAAAuB,SAAA,EAAA;AAAA,UAAA,OAAA,CAAA,EAAA,QAAAA,SAAA,CAAArB,IAAA,GAAAqB,SAAA,CAAApB,IAAA;AAAA,YAAA,KAAA,CAAA;AAAA,cAAA,IAAA,EACM,IAAA,CAAKtB,UAAU,cAAyC,uBAAA,IAAA,CAAKA,UAAU,SAAoC,kBAAA,IAAA,CAAKA,UAAU,QAAiC,cAAA,EAAA;AAAA0C,gBAAAA,SAAA,CAAApB,IAAA,GAAA,CAAA,CAAA;AAAA,gBAAA,MAAA;AAAA,eAAA;cAAA,OAAAoB,SAAA,CAAAnB,MAAA,CAAA,QAAA,CAAA,CAAA;AAAA,YAAA,KAAA,CAAA;cAI/J,IAAA,CAAKC,WAAc,GAAA,IAAA,CAAA;AACnB,cAAA,IAAA,CAAKC,SAAS,SAAgC,eAAA,CAAA;cAE1C,IAAA;gBACF,IAAA,CAAKkB,WAAY,EAAA,CAAA;gBAGjB,IAAI,KAAKC,aAAe,EAAA;kBAChBH,WAAW,IAAK,CAAAG,aAAA,CAAA;kBACtB,IAAA,CAAKA,aAAgB,GAAA,IAAA,CAAA;AACZH,kBAAAA,QAAA,CAAA,IAAII,eAAgB,CAAA,sCAAsC,CAAC,CAAA,CAAA;AACtE,iBAAA;gBAEA,IAAI,KAAKb,EAAI,EAAA;kBAEX,IAAI,IAAK,CAAAA,EAAA,CAAGc,UAAe,KAAAC,SAAA,CAAUC,UAAY,EAAA;AAC/C,oBAAA,IAAA,CAAKhB,GAAGiB,MAAS,GAAA,IAAA,CAAA;AACjB,oBAAA,IAAA,CAAKjB,GAAGkB,SAAY,GAAA,IAAA,CAAA;AACpB,oBAAA,IAAA,CAAKlB,GAAGmB,OAAU,GAAA,IAAA,CAAA;AAClB,oBAAA,IAAA,CAAKnB,GAAGoB,OAAU,GAAA,IAAA,CAAA;AACpB,mBAAA;kBACK,IAAA,CAAApB,EAAA,CAAGqB,KAAM,CAAA,GAAA,EAAM,wBAAwB,CAAA,CAAA;kBAC5C,IAAA,CAAKrB,EAAK,GAAA,IAAA,CAAA;AACZ,iBAAA;AAEK,gBAAA,IAAA,CAAAsB,IAAA,CAAK,YAAY,IAAI,CAAA,CAAA;uBACnBC,KAAP,EAAA;gBACK,IAAA,CAAAtB,MAAA,CAAOsB,KAAM,CAAA,yBAAA,EAA2BA,KAAK,CAAA,CAAA;AAC7C,gBAAA,IAAA,CAAAD,IAAA,CAAK,SAASC,KAAK,CAAA,CAAA;AAC1B,eAAE,SAAA;AACA,gBAAA,IAAA,CAAK9B,SAAS,QAA+B,cAAA,CAAA;AAC/C,eAAA;AAAA,YAAA,KAAA,CAAA,CAAA;AAAA,YAAA,KAAA,KAAA;cAAA,OAAAiB,SAAA,CAAAd,IAAA,EAAA,CAAA;AAAA,WAAA;AAAA,SAAA,EAAAY,QAAA,EAAA,IAAA,CAAA,CAAA;OACF,CAAA,CAAA,CAAA;AAAA,MAAA,SArCMa,KAAuBA,GAAA;AAAA,QAAA,OAAAd,MAAA,CAAAiB,KAAA,CAAA,IAAA,EAAAC,SAAA,CAAA,CAAA;AAAA,OAAA;AAAA,MAAA,OAAvBJ,KAAuB,CAAA;AAAA,KAAA,EAAA;AAAA,GAAA,EAAA;IAAA1C,GAAA,EAAA,OAAA;IAAAC,KAAA,EAAA,YAAA;MAAA,IAAA8C,MAAA,GAAA5C,iBAAA,cAAAC,mBAAA,CAAAC,IAAA,CA0C7B,SAAA2C,QAAA,GAAA;AAAA,QAAA,OAAA5C,mBAAA,CAAAI,IAAA,CAAA,UAAAyC,SAAA,EAAA;AAAA,UAAA,OAAA,CAAA,EAAA,QAAAA,SAAA,CAAAvC,IAAA,GAAAuC,SAAA,CAAAtC,IAAA;AAAA,YAAA,KAAA,CAAA;cAAA,OAAAsC,SAAA,CAAArC,MAAA,CAAA,QAAA,EACS,KAAK8B,KAAM,EAAA,CAAA,CAAA;AAAA,YAAA,KAAA,CAAA,CAAA;AAAA,YAAA,KAAA,KAAA;cAAA,OAAAO,SAAA,CAAAhC,IAAA,EAAA,CAAA;AAAA,WAAA;AAAA,SAAA,EAAA+B,QAAA,EAAA,IAAA,CAAA,CAAA;OACpB,CAAA,CAAA,CAAA;AAAA,MAAA,SAFME,KAAuBA,GAAA;AAAA,QAAA,OAAAH,MAAA,CAAAF,KAAA,CAAA,IAAA,EAAAC,SAAA,CAAA,CAAA;AAAA,OAAA;AAAA,MAAA,OAAvBI,KAAuB,CAAA;AAAA,KAAA,EAAA;AAAA,GAAA,EAAA;IAAAlD,GAAA,EAAA,WAAA;AAAAC,IAAAA,KAAA,EAO7B,SAAAkD,SAAsCA,GAAA;MACpC,OAAO,IAAK,CAAA9D,KAAA,CAAA;AACd,KAAA;AAAA,GAAA,EAAA;IAAAW,GAAA,EAAA,SAAA;AAAAC,IAAAA,KAAA,EAKA,SAAAmD,OAA0BA,GAAA;AACjB,MAAA,OAAAlE,aAAA,CAAAA,aAAA,CACF,EAAA,EAAA,IAAK,CAAAC,cAAA,CAAA,EAAA,EAAA,EAAA;QACRE,OAAO,IAAK,CAAAA,KAAA;QACZI,YAAY,IAAK,CAAAA,UAAAA;AAAA,OAAA,CAAA,CAAA;AAErB,KAAA;AAAA,GAAA,EAAA;IAAAO,GAAA,EAAA,aAAA;AAAAC,IAAAA,KAAA,EAKA,SAAAoD,WAAuBA,GAAA;AAAA,MAAA,IAAAC,QAAA,CAAA;MACrB,OAAO,KAAKjE,KAAU,KAAA,WAAA,oBAAsC,EAAAiE,QAAA,GAAA,IAAK,CAAAjC,EAAA,MAAA,IAAA,IAAAiC,QAAA,KAALA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,QAAA,CAASnB,gBAAeC,SAAU,CAAAmB,IAAA,CAAA;AAChG,KAAA;AAAA,GAAA,EAAA;IAAAvD,GAAA,EAAA,qBAAA;AAAAC,IAAAA,KAAA,EAKQ,SAAAc,mBAAqCA,GAAA;AAAA,MAAA,IAAAyC,MAAA,GAAA,IAAA,CAAA;AAC3C,MAAA,OAAO,IAAIC,OAAA,CAAQ,UAACC,OAAA,EAASC,MAAW,EAAA;QAEtCH,MAAA,CAAKvB,aAAgB,GAAA0B,MAAA,CAAA;QAEjB,IAAA;UACFH,MAAA,CAAKnC,EAAK,GAAA,IAAIe,SAAU,CAAAoB,MAAA,CAAKhF,GAAG,CAAA,CAAA;AAG5B,UAAA,IAAAgF,MAAA,CAAKvE,MAAO,CAAAd,OAAA,GAAU,CAAG,EAAA;AACtBqF,YAAAA,MAAA,CAAAI,YAAA,GAAeC,WAAW,YAAM;AAC/B,cAAA,IAAAL,MAAA,CAAKnE,UAAU,YAAqC,mBAAA;AACtD,gBAAA,IAAMuD,QAAQ,IAAIkB,YAAA,CAAAtC,qCAAAA,CAAAA,MAAA,CAAmDgC,MAAA,CAAKvE,OAAOd,OAAW,OAAA,CAAA,CAAA;AAC5FqF,gBAAAA,MAAA,CAAKxC,sBAAsB4B,KAAK,CAAA,CAAA;gBAChCe,MAAA,CAAOf,KAAK,CAAA,CAAA;AACd,eAAA;AACF,aAAA,EAAGY,MAAK,CAAAvE,MAAA,CAAOd,OAAO,CAAA,CAAA;AACxB,WAAA;AAEKqF,UAAAA,MAAA,CAAAnC,EAAA,CAAGiB,SAAS,YAAM;YACrBkB,MAAA,CAAKO,YAAa,EAAA,CAAA;YAClBP,MAAA,CAAKvB,aAAgB,GAAA,IAAA,CAAA;AACrBuB,YAAAA,MAAA,CAAK1C,SAAS,WAAkC,iBAAA,CAAA;YAChD0C,MAAA,CAAK/D,UAAa,GAAA,CAAA,CAAA;YACb+D,MAAA,CAAArE,cAAA,CAAeO,YAAe,GAAAH,IAAA,CAAKC,GAAI,EAAA,CAAA;YAG5CgE,MAAA,CAAKQ,cAAe,EAAA,CAAA;AAEpBR,YAAAA,MAAA,CAAKlC,OAAO2C,IAAK,CAAA,YAAA,CAAAzC,MAAA,CAAagC,MAAK,CAAAzE,YAAA,oBAAAyC,MAAA,CAA6BgC,OAAKhF,GAAK,CAAA,CAAA,CAAA;AAClEkF,YAAAA,OAAA,EAAA,CAAA;WACV,CAAA;AAEKF,UAAAA,MAAA,CAAAnC,EAAA,CAAGkB,SAAY,GAAA,UAAC2B,KAAU,EAAA;AACxBV,YAAAA,MAAA,CAAAW,aAAA,CAAcD,MAAM9C,IAAI,CAAA,CAAA;WAC/B,CAAA;AAEKoC,UAAAA,MAAA,CAAAnC,EAAA,CAAGmB,OAAU,GAAA,UAAC0B,KAAU,EAAA;AAC3BV,YAAAA,MAAA,CAAKlC,MAAO,CAAAsB,KAAA,CAAApB,YAAAA,CAAAA,MAAA,CAAmBgC,MAAA,CAAKzE,cAAuBmF,SAAAA,CAAAA,EAAAA,KAAK,CAAA,CAAA;AAC1D,YAAA,IAAAtB,KAAA,GAAQ,IAAIV,eAAA,CAAgB,4BAA4B,CAAA,CAAA;AACzDsB,YAAAA,MAAA,CAAAb,IAAA,CAAK,SAASC,KAAK,CAAA,CAAA;WAC1B,CAAA;AAEKY,UAAAA,MAAA,CAAAnC,EAAA,CAAGoB,OAAU,GAAA,UAACyB,KAAU,EAAA;YAC3BV,MAAA,CAAKY,WAAY,CAAAF,KAAA,CAAMG,IAAM,EAAAH,KAAA,CAAMI,MAAM,CAAA,CAAA;WAC3C,CAAA;iBACO1B,KAAP,EAAA;UACAe,MAAA,CAAOf,KAAK,CAAA,CAAA;AACd,SAAA;AACF,OAAC,CAAA,CAAA;AACH,KAAA;AAAA,GAAA,EAAA;IAAA5C,GAAA,EAAA,eAAA;AAAAC,IAAAA,KAAA,EAKQ,SAAAkE,cAAc/C,IAAoB,EAAA;MACnC,IAAA,CAAAjC,cAAA,CAAeO,YAAe,GAAAH,IAAA,CAAKC,GAAI,EAAA,CAAA;AAGxC,MAAA,IAAA,CAAC,KAAK+E,oBAAsB,EAAA;QAC9B,IAAA,CAAKA,oBAAuB,GAAA,IAAA,CAAA;AACvB,QAAA,IAAA,CAAA5B,IAAA,CAAK,SAASvB,IAAI,CAAA,CAAA;AACzB,OAAA;MAGI,IAAA;AACI,QAAA,IAAAoD,MAAA,GAAS9C,IAAK,CAAA+C,KAAA,CAAMrD,IAAI,CAAA,CAAA;AAC9B,QAAA,IAAA,CAAKuB,KAAK,SAAW,EAAA;UACnBuB,KAAO,EAAAM,MAAA,CAAON,KAAS,IAAAM,MAAA,CAAOE,IAAQ,IAAA,SAAA;AACtCtD,UAAAA,IAAM,EAAAoD,MAAAA;AACR,SAAC,CAAA,CAAA;OACD,CAAA,OAAAG,OAAA,EAAA;AAEA,QAAA,IAAA,CAAKhC,KAAK,SAAW,EAAA;AACnBuB,UAAAA,KAAO,EAAA,SAAA;AACP9C,UAAAA,IAAA,EAAAA,IAAAA;AACF,SAAC,CAAA,CAAA;AACH,OAAA;AACF,KAAA;AAAA,GAAA,EAAA;IAAApB,GAAA,EAAA,aAAA;AAAAC,IAAAA,KAAA,EAKQ,SAAAmE,WAAAA,CAAYC,MAAcC,MAAsB,EAAA;MACtD,IAAA,CAAKtC,WAAY,EAAA,CAAA;MACjB,IAAA,CAAKX,EAAK,GAAA,IAAA,CAAA;AAEV,MAAA,IAAA,CAAKC,OAAOC,IAAK,CAAAC,wBAAAA,CAAAA,MAAA,CAAyB6C,IAAiB,EAAA,aAAA,CAAA,CAAA7C,MAAA,CAAA8C,MAAA,sBAAA9C,MAAA,CAAwB,KAAKX,WAAa,CAAA,CAAA,CAAA;AAEjG,MAAA,IAAA,IAAA,CAAKA,WAAe,IAAAwD,IAAA,KAAS,GAAM,EAAA;AAErC,QAAA,IAAA,CAAKvD,SAAS,QAA+B,cAAA,CAAA;QACxC,IAAA,CAAA6B,IAAA,CAAK,UAAY,EAAA,IAAA,CAAK9B,WAAW,CAAA,CAAA;QACtC,IAAA,CAAKS,MAAO,CAAA2C,IAAA,CAAA,YAAA,CAAAzC,MAAA,CAAkB,IAAA,CAAKzC,YAA8B,EAAA,kBAAA,CAAA,CAAA,CAAA;AACnE,OAAO,MAAA;AAEL,QAAA,IAAA,CAAK+B,SAAS,cAAqC,oBAAA,CAAA;AACnD,QAAA,IAAA,CAAKQ,OAAOC,IAAK,CAAAC,YAAAA,CAAAA,MAAA,CAAa,IAAK,CAAAzC,YAAA,EAAAyC,wBAAAA,CAAAA,CAAAA,MAAA,CAAqC6C,oBAAUC,MAAQ,CAAA,CAAA,CAAA;AAEtF,QAAA,IAAA,IAAA,CAAKM,iBAAmB,EAAA;UAC1B,IAAA,CAAKC,iBAAkB,EAAA,CAAA;AACzB,SAAO,MAAA;AACA,UAAA,IAAA,CAAAlC,IAAA,CAAK,YAAY,KAAK,CAAA,CAAA;AAC3B,UAAA,IAAA,CAAKA,KAAK,OAAS,EAAA,IAAIT,4CAAqCmC,IAAA,EAAA7C,KAAAA,CAAAA,CAAAA,MAAA,CAAU8C,OAAQ,CAAC,CAAA,CAAA;AACjF,SAAA;AACF,OAAA;AACF,KAAA;AAAA,GAAA,EAAA;IAAAtE,GAAA,EAAA,uBAAA;AAAAC,IAAAA,KAAA,EAKQ,SAAAe,sBAAsB4B,KAAoB,EAAA;AAChD,MAAA,IAAA,CAAKzD,eAAeyD,KAAQ,GAAAA,KAAA,CAAA;AAC5B,MAAA,IAAA,CAAK9B,SAAS,OAA8B,aAAA,CAAA;AACvC,MAAA,IAAA,CAAA6B,IAAA,CAAK,SAASC,KAAK,CAAA,CAAA;AAEpB,MAAA,IAAA,IAAA,CAAKgC,iBAAmB,EAAA;QAC1B,IAAA,CAAKC,iBAAkB,EAAA,CAAA;AACzB,OAAA;AACF,KAAA;AAAA,GAAA,EAAA;IAAA7E,GAAA,EAAA,iBAAA;AAAAC,IAAAA,KAAA,EAKQ,SAAA2E,eAA2BA,GAAA;AACjC,MAAA,OAAO,CAAC,IAAK,CAAA/D,WAAA,IAAe,IAAK,CAAApB,UAAA,GAAa,KAAKR,MAAO,CAAAZ,UAAA,CAAA;AAC5D,KAAA;AAAA,GAAA,EAAA;IAAA2B,GAAA,EAAA,mBAAA;AAAAC,IAAAA,KAAA,EAKQ,SAAA4E,iBAA0BA,GAAA;AAAA,MAAA,IAAAC,MAAA,GAAA,IAAA,CAAA;MAC3B,IAAA,CAAArF,UAAA,EAAA,CAAA;AACC,MAAA,IAAAsF,KAAA,GAAQ,KAAK9F,MAAO,CAAAb,aAAA,GAAgB4G,KAAKC,GAAI,CAAA,GAAA,EAAK,IAAK,CAAAxF,UAAA,GAAa,CAAC,CAAA,CAAA;AAEtE,MAAA,IAAA,CAAA6B,MAAA,CAAO2C,IAAK,CAAAzC,YAAAA,CAAAA,MAAA,CAAa,IAAK,CAAAzC,YAAA,EAAAyC,mBAAAA,CAAAA,CAAAA,MAAA,CAAgCuD,8BAAoB,IAAK,CAAAtF,UAAA,EAAA+B,GAAAA,CAAAA,CAAAA,MAAA,CAAc,IAAK,CAAAvC,MAAA,CAAOZ,UAAa,MAAA,CAAA,CAAA;AAE9H,MAAA,IAAA,CAAA6G,cAAA,GAAiBrB,WAAW,YAAM;QACrC,IAAI,CAACiB,MAAA,CAAKjE,WAAe,IAAAiE,MAAA,CAAKzF,UAAU,WAAoC,kBAAA;UAC1EyF,MAAA,CAAKP,oBAAuB,GAAA,KAAA,CAAA;AACvBO,UAAAA,MAAA,CAAA5D,OAAA,CAAQ4D,OAAK7F,MAAM,CAAA,CAAA;AAC1B,SAAA;SACC8F,KAAK,CAAA,CAAA;AACV,KAAA;AAAA,GAAA,EAAA;IAAA/E,GAAA,EAAA,gBAAA;AAAAC,IAAAA,KAAA,EASQ,SAAA+D,cAAuBA,GAAA;AAAA,MAAA,IAAAmB,MAAA,GAAA,IAAA,CAAA;AACzB,MAAA,IAAA,IAAA,CAAKlG,OAAOX,iBAAqB,IAAA,CAAA,EAAG,OAAA;AAEnC,MAAA,IAAA,CAAA8G,cAAA,GAAiBC,YAAY,YAAM;AAClC,QAAA,IAAA,CAACF,MAAK,CAAA9B,WAAA,EAAe,EAAA;AACvB,UAAA,OAAA;AACF,SAAA;AAGA,QAAA,IAAMiC,QAAW,GAAA/F,IAAA,CAAKC,GAAI,EAAA,GAAI2F,OAAKhG,cAAe,CAAAO,YAAA,CAAA;QAClD,IAAI4F,QAAW,GAAAH,MAAA,CAAKlG,MAAO,CAAAX,iBAAA,GAAoB,CAAG,EAAA;AAAA,UAAA,IAAAiH,SAAA,CAAA;AAChDJ,UAAAA,MAAA,CAAK7D,MAAO,CAAAC,IAAA,cAAAC,MAAA,CAAkB2D,MAAA,CAAKpG,mCAAyBuG,QAA6B,wBAAA,CAAA,CAAA;AACpF,UAAA,CAAAC,SAAA,GAAAJ,MAAA,CAAA9D,EAAA,MAAAkE,IAAAA,IAAAA,SAAA,KAAAA,KAAAA,CAAAA,IAAAA,SAAA,CAAI7C,KAAM,CAAA,GAAA,EAAM,mBAAmB,CAAA,CAAA;AAC1C,SAAA;AACF,OAAA,EAAG,IAAK,CAAAzD,MAAA,CAAOX,iBAAiB,CAAA,CAAA;AAClC,KAAA;AAAA,GAAA,EAAA;IAAA0B,GAAA,EAAA,cAAA;AAAAC,IAAAA,KAAA,YAAAuF,aAAA,EAAA;AAAA,MAAA,SAKQzB,YAAqBA,GAAA;AAAA,QAAA,OAAAyB,aAAA,CAAA3C,KAAA,CAAA,IAAA,EAAAC,SAAA,CAAA,CAAA;AAAA,OAAA;AAArBiB,MAAAA,YAAqB,CAAA0B,QAAA,GAAA,YAAA;QAAA,OAAAD,aAAA,CAAAC,QAAA,EAAA,CAAA;AAAA,OAAA,CAAA;AAAA,MAAA,OAArB1B,YAAqB,CAAA;AAAA,KAAA,CAArB,YAAqB;MAC3B,IAAI,KAAKH,YAAc,EAAA;AACrBG,QAAAA,YAAA,CAAa,KAAKH,YAAY,CAAA,CAAA;AAC9B,QAAA,IAAA,CAAKA,YAAe,GAAA,KAAA,CAAA,CAAA;AACtB,OAAA;KACF,CAAA;AAAA,GAAA,EAAA;IAAA5D,GAAA,EAAA,aAAA;AAAAC,IAAAA,KAAA,EAKQ,SAAA+B,WAAoBA,GAAA;MAC1B,IAAA,CAAK+B,YAAa,EAAA,CAAA;MAElB,IAAI,KAAKmB,cAAgB,EAAA;AACvBnB,QAAAA,YAAA,CAAa,KAAKmB,cAAc,CAAA,CAAA;AAChC,QAAA,IAAA,CAAKA,cAAiB,GAAA,KAAA,CAAA,CAAA;AACxB,OAAA;MAEA,IAAI,KAAKE,cAAgB,EAAA;AACvBM,QAAAA,aAAA,CAAc,KAAKN,cAAc,CAAA,CAAA;AACjC,QAAA,IAAA,CAAKA,cAAiB,GAAA,KAAA,CAAA,CAAA;AACxB,OAAA;AACF,KAAA;AAAA,GAAA,EAAA;IAAApF,GAAA,EAAA,UAAA;AAAAC,IAAAA,KAAA,EAKQ,SAAAa,SAAS6E,QAA0C,EAAA;AACzD,MAAA,IAAMC,WAAW,IAAK,CAAAvG,KAAA,CAAA;MACtB,IAAA,CAAKA,KAAQ,GAAAsG,QAAA,CAAA;AACb,MAAA,IAAA,CAAKxG,eAAeE,KAAQ,GAAAsG,QAAA,CAAA;AAE5B,MAAA,IAAME,gBAAuC,GAAA;QAC3C9G,cAAc,IAAK,CAAAA,YAAA;AACnB+G,QAAAA,IAAM,EAAAF,QAAA;AACNG,QAAAA,EAAI,EAAAJ,QAAA;AACJK,QAAAA,SAAA,EAAWzG,KAAKC,GAAI,EAAA;OACtB,CAAA;AAEK,MAAA,IAAA,CAAAmD,IAAA,CAAK,eAAekD,gBAAgB,CAAA,CAAA;AACzC,MAAA,IAAA,CAAKvE,OAAO2E,KAAM,CAAAzE,YAAAA,CAAAA,MAAA,CAAa,IAAK,CAAAzC,YAAA,EAAAyC,UAAAA,CAAAA,CAAAA,MAAA,CAAuBoE,yBAAeD,QAAU,CAAA,CAAA,CAAA;AACtF,KAAA;AAAA,GAAA,EAAA;IAAA3F,GAAA,EAAA,4BAAA;AAAAC,IAAAA,KAAA,EAKQ,SAAAL,0BAAmCA,GAAA;AAAA,MAAA,IAAAsG,MAAA,GAAA,IAAA,CAAA;AACpC,MAAA,IAAA,CAAAC,EAAA,CAAG,OAAS,EAAA,UAACvD,KAAU,EAAA;AAC1BsD,QAAAA,MAAA,CAAK5E,MAAO,CAAAsB,KAAA,CAAApB,mBAAAA,CAAAA,MAAA,CAA0B0E,MAAA,CAAKnH,cAAuB6D,SAAAA,CAAAA,EAAAA,KAAK,CAAA,CAAA;AACzE,OAAC,CAAA,CAAA;AAEI,MAAA,IAAA,CAAAuD,EAAA,CAAG,UAAY,EAAA,UAACC,SAAc,EAAA;AACjCF,QAAAA,MAAA,CAAK5E,MAAO,CAAA2C,IAAA,qBAAAzC,MAAA,CAAyB0E,MAAA,CAAKnH,8CAAoCqH,SAAW,CAAA,CAAA,CAAA;AAC3F,OAAC,CAAA,CAAA;AACH,KAAA;AAAA,GAAA,EAAA;IAAApG,GAAA,EAAA,sBAAA;AAAAC,IAAAA,KAAA,EAKQ,SAAAjB,oBAA+BA,GAAA;AAC/B,MAAA,IAAAgH,SAAA,GAAYzG,KAAKC,GAAI,EAAA,CAAA;MACpB,OAAAgC,KAAAA,CAAAA,MAAA,CAAMwE,SAAa,EAAA,GAAA,CAAA,CAAAxE,MAAA,CAAAwD,IAAA,CAAKqB,MAAO,EAAA,CAAEZ,SAAS,EAAE,CAAA,CAAEa,MAAO,CAAA,CAAA,EAAG,CAAC,CAAA,CAAA,CAAA;AAClE,KAAA;AAAA,GAAA,CAAA,CAAA,CAAA;AAAA,CAAA,CA7YmCC,kBAAa;;;;"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* tdesign v1.1.0-alpha.
|
|
2
|
+
* tdesign v1.1.0-alpha.17
|
|
3
3
|
* (c) 2026 tdesign
|
|
4
4
|
* @license MIT
|
|
5
5
|
*/
|
|
@@ -19,7 +19,7 @@ import '@babel/runtime/helpers/typeof';
|
|
|
19
19
|
import '@babel/runtime/helpers/objectWithoutProperties';
|
|
20
20
|
import '@babel/runtime/helpers/toArray';
|
|
21
21
|
import '@babel/runtime/helpers/slicedToArray';
|
|
22
|
-
import '../../../_chunks/dep-
|
|
22
|
+
import '../../../_chunks/dep-907337f3.js';
|
|
23
23
|
import '@babel/runtime/helpers/wrapNativeSuper';
|
|
24
24
|
|
|
25
25
|
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; }
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* tdesign v1.1.0-alpha.
|
|
2
|
+
* tdesign v1.1.0-alpha.17
|
|
3
3
|
* (c) 2026 tdesign
|
|
4
4
|
* @license MIT
|
|
5
5
|
*/
|
|
@@ -14,7 +14,7 @@ import _inherits from '@babel/runtime/helpers/inherits';
|
|
|
14
14
|
import ReactiveState from './reactiveState.js';
|
|
15
15
|
import '@babel/runtime/helpers/toConsumableArray';
|
|
16
16
|
import '@babel/runtime/helpers/slicedToArray';
|
|
17
|
-
import '../../../_chunks/dep-
|
|
17
|
+
import '../../../_chunks/dep-907337f3.js';
|
|
18
18
|
import '@babel/runtime/helpers/wrapNativeSuper';
|
|
19
19
|
import '@babel/runtime/helpers/typeof';
|
|
20
20
|
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* tdesign v1.1.0-alpha.
|
|
2
|
+
* tdesign v1.1.0-alpha.17
|
|
3
3
|
* (c) 2026 tdesign
|
|
4
4
|
* @license MIT
|
|
5
5
|
*/
|
|
@@ -9,7 +9,7 @@ import _slicedToArray from '@babel/runtime/helpers/slicedToArray';
|
|
|
9
9
|
import _classCallCheck from '@babel/runtime/helpers/classCallCheck';
|
|
10
10
|
import _createClass from '@babel/runtime/helpers/createClass';
|
|
11
11
|
import _defineProperty from '@babel/runtime/helpers/defineProperty';
|
|
12
|
-
import { e as enablePatches, a as produceWithPatches } from '../../../_chunks/dep-
|
|
12
|
+
import { e as enablePatches, a as produceWithPatches } from '../../../_chunks/dep-907337f3.js';
|
|
13
13
|
import '@babel/runtime/helpers/possibleConstructorReturn';
|
|
14
14
|
import '@babel/runtime/helpers/getPrototypeOf';
|
|
15
15
|
import '@babel/runtime/helpers/inherits';
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* AG-UI 协议流式处理器
|
|
3
|
+
*
|
|
4
|
+
* SSE 数据 → AGUIEventMapper.mapEvent → 用户自定义 onMessage → processMessageResult
|
|
5
|
+
* 同时负责发布 AG-UI 细粒度事件(AGUI_ACTIVITY / AGUI_TOOLCALL)
|
|
6
|
+
*/
|
|
7
|
+
import type { AGUIAdapter } from '../adapters/agui';
|
|
8
|
+
import type { AIMessageContent } from '../type';
|
|
9
|
+
import { LLMService } from '../server';
|
|
10
|
+
import type { IStreamHandler, StreamContext } from './types';
|
|
11
|
+
export declare class AGUIStreamHandler implements IStreamHandler {
|
|
12
|
+
private llmService;
|
|
13
|
+
private aguiAdapter;
|
|
14
|
+
constructor(llmService: LLMService, aguiAdapter: AGUIAdapter);
|
|
15
|
+
handleStream(params: any, context: StreamContext): Promise<void>;
|
|
16
|
+
/**
|
|
17
|
+
* 发布 AG-UI 细粒度事件
|
|
18
|
+
* 根据内容类型分发到对应的事件通道
|
|
19
|
+
*
|
|
20
|
+
* 从 ChatEngine.emitAGUIDetailEvents 移入此处,
|
|
21
|
+
* 因为这完全是 AG-UI 协议的事件细节分发,不应在 ChatEngine 里。
|
|
22
|
+
*/
|
|
23
|
+
emitDetailEvents(messageId: string, result: AIMessageContent | AIMessageContent[], eventBus: StreamContext['eventBus']): void;
|
|
24
|
+
}
|