@tdesign-react/chat 1.1.0-alpha.16 → 1.1.0-alpha.17
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-dfe91b1f.js → dep-e1e84ed7.js} +1 -1
- package/es/_chunks/{dep-13fe70ea.js.map → dep-e1e84ed7.js.map} +1 -1
- package/es/chat-engine/components/index.js +8 -3
- package/es/chat-engine/components/index.js.map +1 -1
- package/es/chat-engine/components/json-render/catalog/atomic/input.js +8 -3
- package/es/chat-engine/components/json-render/catalog/atomic/input.js.map +1 -1
- package/es/chat-engine/components/json-render/index.js +8 -3
- package/es/chat-engine/components/json-render/index.js.map +1 -1
- package/es/chat-engine/components/json-render/registry/a2ui-binding.js +8 -3
- 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 +8 -3
- package/es/chat-engine/components/json-render/registry/a2ui-registry.js.map +1 -1
- package/es/chat-engine/components/json-render/registry/config.js +8 -3
- package/es/chat-engine/components/json-render/registry/config.js.map +1 -1
- package/es/chat-engine/components/json-render/registry/index.js +8 -3
- package/es/chat-engine/components/json-render/registry/index.js.map +1 -1
- package/es/chat-engine/components/json-render/renderer/A2UIJsonRenderActivityRenderer.js +7 -2
- package/es/chat-engine/components/json-render/renderer/A2UIJsonRenderActivityRenderer.js.map +1 -1
- package/es/chat-engine/components/provider/agent-state.js +7 -2
- package/es/chat-engine/components/provider/agent-state.js.map +1 -1
- package/es/chat-engine/components/toolcall/index.js +7 -2
- package/es/chat-engine/components/toolcall/index.js.map +1 -1
- package/es/chat-engine/components/toolcall/render.js +6 -1
- package/es/chat-engine/components/toolcall/render.js.map +1 -1
- package/es/chat-engine/core/adapters/agui/index.js +5 -50
- package/es/chat-engine/core/adapters/agui/index.js.map +1 -1
- package/es/chat-engine/core/adapters/agui/utils.d.ts +25 -2
- package/es/chat-engine/core/adapters/agui/utils.js +51 -11
- package/es/chat-engine/core/adapters/agui/utils.js.map +1 -1
- package/es/chat-engine/core/adapters/index.js +1 -0
- package/es/chat-engine/core/adapters/index.js.map +1 -1
- package/es/chat-engine/core/adapters/openclaw/event-mapper.d.ts +36 -14
- package/es/chat-engine/core/adapters/openclaw/event-mapper.js +35 -20
- 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 +30 -0
- package/es/chat-engine/core/adapters/openclaw/index.js +82 -35
- 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 +19 -0
- package/es/chat-engine/core/adapters/openclaw/rpc-handler.js.map +1 -1
- package/es/chat-engine/core/adapters/openclaw/types/config.d.ts +2 -24
- package/es/chat-engine/core/adapters/openclaw/types/config.js +3 -5
- package/es/chat-engine/core/adapters/openclaw/types/config.js.map +1 -1
- package/es/chat-engine/core/adapters/openclaw/types/events.d.ts +2 -0
- package/es/chat-engine/core/adapters/openclaw/types/events.js +1 -0
- package/es/chat-engine/core/adapters/openclaw/types/events.js.map +1 -1
- package/es/chat-engine/core/adapters/openclaw/types/messages.d.ts +9 -0
- package/es/chat-engine/core/adapters/openclaw/types/messages.js.map +1 -1
- package/es/chat-engine/core/adapters/openclaw/utils.js.map +1 -1
- package/es/chat-engine/core/index.d.ts +24 -24
- package/es/chat-engine/core/index.js +150 -317
- 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 +75 -0
- package/es/chat-engine/core/processor/index.js.map +1 -1
- package/es/chat-engine/core/server/index.js +0 -20
- 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 +12 -139
- package/es/chat-engine/core/server/llm-service.js.map +1 -1
- 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 +71 -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 +56 -0
- package/es/chat-engine/core/stream-handlers/openclaw-stream-handler.js +269 -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/hooks/index.js +7 -2
- package/es/chat-engine/hooks/index.js.map +1 -1
- package/es/chat-engine/hooks/useAgentState.js +7 -2
- package/es/chat-engine/hooks/useAgentState.js.map +1 -1
- package/es/chat-engine/hooks/useChat.js +11 -5
- package/es/chat-engine/hooks/useChat.js.map +1 -1
- package/es/chat-engine/index.js +6 -1
- package/es/chat-engine/index.js.map +1 -1
- package/es/index.js +6 -1
- package/es/index.js.map +1 -1
- package/package.json +1 -1
- package/es/_chunks/dep-076af7c3.js +0 -438
- package/es/_chunks/dep-076af7c3.js.map +0 -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 +0 -1247
- 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-3e40d789.js +0 -169
- package/es/_chunks/dep-3e40d789.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-93283bbd.js.map +0 -1
- 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
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* tdesign v1.1.0-alpha.16
|
|
3
|
+
* (c) 2026 tdesign
|
|
4
|
+
* @license MIT
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
import { DefaultStreamHandler } from './default-stream-handler.js';
|
|
8
|
+
export { DefaultStreamHandler } from './default-stream-handler.js';
|
|
9
|
+
import { AGUIStreamHandler } from './agui-stream-handler.js';
|
|
10
|
+
export { AGUIStreamHandler } from './agui-stream-handler.js';
|
|
11
|
+
import { OpenClawStreamHandler } from './openclaw-stream-handler.js';
|
|
12
|
+
export { OpenClawStreamHandler } from './openclaw-stream-handler.js';
|
|
13
|
+
import '@babel/runtime/helpers/defineProperty';
|
|
14
|
+
import '@babel/runtime/helpers/asyncToGenerator';
|
|
15
|
+
import '@babel/runtime/helpers/classCallCheck';
|
|
16
|
+
import '@babel/runtime/helpers/createClass';
|
|
17
|
+
import '@babel/runtime/regenerator';
|
|
18
|
+
import '../event-bus/index.js';
|
|
19
|
+
import '../event-bus/ChatEventBus.js';
|
|
20
|
+
import '@babel/runtime/helpers/toConsumableArray';
|
|
21
|
+
import '../event-bus/types.js';
|
|
22
|
+
import '../utils/logger.js';
|
|
23
|
+
import '../adapters/openclaw/index.js';
|
|
24
|
+
import '@babel/runtime/helpers/possibleConstructorReturn';
|
|
25
|
+
import '@babel/runtime/helpers/getPrototypeOf';
|
|
26
|
+
import '@babel/runtime/helpers/inherits';
|
|
27
|
+
import '../utils/eventEmitter.js';
|
|
28
|
+
import '../server/websocket-client.js';
|
|
29
|
+
import '../server/errors.js';
|
|
30
|
+
import '@babel/runtime/helpers/wrapNativeSuper';
|
|
31
|
+
import '../adapters/openclaw/event-mapper.js';
|
|
32
|
+
import '@babel/runtime/helpers/typeof';
|
|
33
|
+
import '../adapters/openclaw/types/events.js';
|
|
34
|
+
import '../adapters/shared/index.js';
|
|
35
|
+
import '../adapters/shared/content-factory.js';
|
|
36
|
+
import '../adapters/agui/utils.js';
|
|
37
|
+
import '../adapters/shared/merge-utils.js';
|
|
38
|
+
import '../adapters/shared/activity-manager.js';
|
|
39
|
+
import '../adapters/agui/ActivityManager.js';
|
|
40
|
+
import '../utils/index.js';
|
|
41
|
+
import '../utils/immutable-patch.js';
|
|
42
|
+
import '@babel/runtime/helpers/objectWithoutProperties';
|
|
43
|
+
import '@babel/runtime/helpers/toArray';
|
|
44
|
+
import '../adapters/openclaw/rpc-handler.js';
|
|
45
|
+
import '../adapters/openclaw/types/config.js';
|
|
46
|
+
import '../adapters/openclaw/utils.js';
|
|
47
|
+
import '../adapters/openclaw/history-converter.js';
|
|
48
|
+
import '../adapters/openclaw/types/index.js';
|
|
49
|
+
import '../adapters/openclaw/types/messages.js';
|
|
50
|
+
|
|
51
|
+
function createStreamHandler(options) {
|
|
52
|
+
var protocol = options.protocol,
|
|
53
|
+
llmService = options.llmService,
|
|
54
|
+
aguiAdapter = options.aguiAdapter;
|
|
55
|
+
switch (protocol) {
|
|
56
|
+
case "agui":
|
|
57
|
+
if (!aguiAdapter) {
|
|
58
|
+
throw new Error("AGUIAdapter is required for agui protocol");
|
|
59
|
+
}
|
|
60
|
+
return new AGUIStreamHandler(llmService, aguiAdapter);
|
|
61
|
+
case "openclaw":
|
|
62
|
+
return new OpenClawStreamHandler({
|
|
63
|
+
llmService: llmService
|
|
64
|
+
});
|
|
65
|
+
default:
|
|
66
|
+
return new DefaultStreamHandler(llmService);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
export { createStreamHandler };
|
|
71
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../../pro-components/chat/chat-engine/core/stream-handlers/index.ts"],"sourcesContent":["/**\n * StreamHandler 模块\n *\n * 统一导出 + 工厂函数\n */\nexport type { IStreamHandler, StreamContext } from './types';\nexport { DefaultStreamHandler } from './default-stream-handler';\nexport { AGUIStreamHandler } from './agui-stream-handler';\nexport { OpenClawStreamHandler } from './openclaw-stream-handler';\n\nimport type { AGUIAdapter } from '../adapters/agui';\nimport { LLMService } from '../server';\nimport type { IStreamHandler } from './types';\nimport { DefaultStreamHandler } from './default-stream-handler';\nimport { AGUIStreamHandler } from './agui-stream-handler';\nimport { OpenClawStreamHandler } from './openclaw-stream-handler';\n\nexport interface CreateStreamHandlerOptions {\n protocol?: 'default' | 'agui' | 'openclaw';\n llmService: LLMService;\n aguiAdapter?: AGUIAdapter | null;\n}\n\n/**\n * 工厂函数:根据协议类型创建对应的 StreamHandler\n */\nexport function createStreamHandler(options: CreateStreamHandlerOptions): IStreamHandler {\n const { protocol, llmService, aguiAdapter } = options;\n\n switch (protocol) {\n case 'agui':\n if (!aguiAdapter) {\n throw new Error('AGUIAdapter is required for agui protocol');\n }\n return new AGUIStreamHandler(llmService, aguiAdapter);\n\n case 'openclaw':\n return new OpenClawStreamHandler({ llmService });\n\n default:\n return new DefaultStreamHandler(llmService);\n }\n}\n"],"names":["createStreamHandler","options","protocol","llmService","aguiAdapter","Error","AGUIStreamHandler","OpenClawStreamHandler","DefaultStreamHandler"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA0BO,SAASA,oBAAoBC,OAAqD,EAAA;AACvF,EAAA,IAAQC,QAAA,GAAsCD,OAAA,CAAtCC,QAAA;IAAUC,UAAY,GAAgBF,OAAA,CAA5BE,UAAY;IAAAC,WAAA,GAAgBH,OAAA,CAAhBG,WAAA,CAAA;AAEtB,EAAA,QAAAF,QAAA;AACD,IAAA,KAAA,MAAA;MACH,IAAI,CAACE,WAAa,EAAA;AACV,QAAA,MAAA,IAAIC,MAAM,2CAA2C,CAAA,CAAA;AAC7D,OAAA;AACO,MAAA,OAAA,IAAIC,iBAAkB,CAAAH,UAAA,EAAYC,WAAW,CAAA,CAAA;AAEjD,IAAA,KAAA,UAAA;MACH,OAAO,IAAIG,qBAAAA,CAAsB;AAAEJ,QAAAA,UAAA,EAAAA,UAAAA;AAAW,OAAC,CAAA,CAAA;AAAA,IAAA;AAGxC,MAAA,OAAA,IAAIK,qBAAqBL,UAAU,CAAA,CAAA;AAAA,GAAA;AAEhD;;;;"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* OpenClaw 协议流式处理器
|
|
3
|
+
*
|
|
4
|
+
* 负责 OpenClaw WebSocket 连接的完整生命周期管理:
|
|
5
|
+
* - 适配器创建与持有(从 LLMService 移入)
|
|
6
|
+
* - 连接建立与认证
|
|
7
|
+
* - 消息发送与流式响应
|
|
8
|
+
* - 历史消息接收
|
|
9
|
+
*
|
|
10
|
+
* OpenClaw 的 chunk.data 已经是 AIMessageContent 格式(由 OpenClawAdapter 转换)
|
|
11
|
+
*/
|
|
12
|
+
import type { ChatRequestParams, ChatServiceConfig } from '../type';
|
|
13
|
+
import { OpenClawAdapter } from '../adapters/openclaw';
|
|
14
|
+
import type { IStreamHandler, StreamContext } from './types';
|
|
15
|
+
import type { LLMService } from '../server';
|
|
16
|
+
export interface OpenClawStreamHandlerOptions {
|
|
17
|
+
/** LLM 服务引用(用于 SSE/Batch 的 abort) */
|
|
18
|
+
llmService: LLMService;
|
|
19
|
+
}
|
|
20
|
+
export declare class OpenClawStreamHandler implements IStreamHandler {
|
|
21
|
+
private openclawAdapter;
|
|
22
|
+
private llmService;
|
|
23
|
+
private logger;
|
|
24
|
+
constructor(options: OpenClawStreamHandlerOptions);
|
|
25
|
+
/**
|
|
26
|
+
* 初始化:在 ChatEngine.init() 阶段预建立 WebSocket 连接
|
|
27
|
+
*
|
|
28
|
+
* Gateway 会在 connect 响应中推送历史消息,通过 onHistoryLoaded 自动回填。
|
|
29
|
+
*/
|
|
30
|
+
initConnection(config: ChatServiceConfig, onHistoryLoaded?: (messages: any[]) => void): Promise<void>;
|
|
31
|
+
handleStream(params: ChatRequestParams, context: StreamContext): Promise<void>;
|
|
32
|
+
/**
|
|
33
|
+
* 中止当前请求
|
|
34
|
+
*/
|
|
35
|
+
abort(): void;
|
|
36
|
+
/**
|
|
37
|
+
* 销毁处理器,释放 OpenClaw 连接资源
|
|
38
|
+
*/
|
|
39
|
+
destroy(): Promise<void>;
|
|
40
|
+
/**
|
|
41
|
+
* 获取适配器实例(供外部调用 invokeAction 等)
|
|
42
|
+
*/
|
|
43
|
+
getAdapter(): OpenClawAdapter | null;
|
|
44
|
+
/**
|
|
45
|
+
* 确保 OpenClaw 适配器已创建
|
|
46
|
+
*/
|
|
47
|
+
private ensureAdapter;
|
|
48
|
+
/**
|
|
49
|
+
* 更新 init 阶段的回调(连接 + 历史消息)
|
|
50
|
+
*/
|
|
51
|
+
private updateCallbacks;
|
|
52
|
+
/**
|
|
53
|
+
* 更新流式请求阶段的回调(消息处理 + 事件发布)
|
|
54
|
+
*/
|
|
55
|
+
private updateStreamCallbacks;
|
|
56
|
+
}
|
|
@@ -0,0 +1,269 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* tdesign v1.1.0-alpha.16
|
|
3
|
+
* (c) 2026 tdesign
|
|
4
|
+
* @license MIT
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
import _asyncToGenerator from '@babel/runtime/helpers/asyncToGenerator';
|
|
8
|
+
import _classCallCheck from '@babel/runtime/helpers/classCallCheck';
|
|
9
|
+
import _createClass from '@babel/runtime/helpers/createClass';
|
|
10
|
+
import _defineProperty from '@babel/runtime/helpers/defineProperty';
|
|
11
|
+
import _regeneratorRuntime from '@babel/runtime/regenerator';
|
|
12
|
+
import '../event-bus/index.js';
|
|
13
|
+
import { LoggerManager } from '../utils/logger.js';
|
|
14
|
+
import { OpenClawAdapter } from '../adapters/openclaw/index.js';
|
|
15
|
+
import { ChatEngineEventType } from '../event-bus/types.js';
|
|
16
|
+
import '../event-bus/ChatEventBus.js';
|
|
17
|
+
import '@babel/runtime/helpers/toConsumableArray';
|
|
18
|
+
import '@babel/runtime/helpers/possibleConstructorReturn';
|
|
19
|
+
import '@babel/runtime/helpers/getPrototypeOf';
|
|
20
|
+
import '@babel/runtime/helpers/inherits';
|
|
21
|
+
import '../utils/eventEmitter.js';
|
|
22
|
+
import '../server/websocket-client.js';
|
|
23
|
+
import '../server/errors.js';
|
|
24
|
+
import '@babel/runtime/helpers/wrapNativeSuper';
|
|
25
|
+
import '../adapters/openclaw/event-mapper.js';
|
|
26
|
+
import '@babel/runtime/helpers/typeof';
|
|
27
|
+
import '../adapters/openclaw/types/events.js';
|
|
28
|
+
import '../adapters/shared/index.js';
|
|
29
|
+
import '../adapters/shared/content-factory.js';
|
|
30
|
+
import '../adapters/agui/utils.js';
|
|
31
|
+
import '../adapters/shared/merge-utils.js';
|
|
32
|
+
import '../adapters/shared/activity-manager.js';
|
|
33
|
+
import '../adapters/agui/ActivityManager.js';
|
|
34
|
+
import '../utils/index.js';
|
|
35
|
+
import '../utils/immutable-patch.js';
|
|
36
|
+
import '@babel/runtime/helpers/objectWithoutProperties';
|
|
37
|
+
import '@babel/runtime/helpers/toArray';
|
|
38
|
+
import '../adapters/openclaw/rpc-handler.js';
|
|
39
|
+
import '../adapters/openclaw/types/config.js';
|
|
40
|
+
import '../adapters/openclaw/utils.js';
|
|
41
|
+
import '../adapters/openclaw/history-converter.js';
|
|
42
|
+
import '../adapters/openclaw/types/index.js';
|
|
43
|
+
import '../adapters/openclaw/types/messages.js';
|
|
44
|
+
|
|
45
|
+
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; }
|
|
46
|
+
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; }
|
|
47
|
+
var OpenClawStreamHandler = /*#__PURE__*/function () {
|
|
48
|
+
function OpenClawStreamHandler(options) {
|
|
49
|
+
_classCallCheck(this, OpenClawStreamHandler);
|
|
50
|
+
_defineProperty(this, "openclawAdapter", null);
|
|
51
|
+
_defineProperty(this, "logger", LoggerManager.getLogger());
|
|
52
|
+
this.llmService = options.llmService;
|
|
53
|
+
}
|
|
54
|
+
return _createClass(OpenClawStreamHandler, [{
|
|
55
|
+
key: "initConnection",
|
|
56
|
+
value: function () {
|
|
57
|
+
var _initConnection = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee(config, onHistoryLoaded) {
|
|
58
|
+
var _config$onError, _t;
|
|
59
|
+
return _regeneratorRuntime.wrap(function (_context) {
|
|
60
|
+
while (1) switch (_context.prev = _context.next) {
|
|
61
|
+
case 0:
|
|
62
|
+
this.ensureAdapter(config);
|
|
63
|
+
this.updateCallbacks(config, onHistoryLoaded);
|
|
64
|
+
_context.prev = 1;
|
|
65
|
+
if (this.openclawAdapter.isAuthenticated()) {
|
|
66
|
+
_context.next = 2;
|
|
67
|
+
break;
|
|
68
|
+
}
|
|
69
|
+
_context.next = 2;
|
|
70
|
+
return this.openclawAdapter.connect();
|
|
71
|
+
case 2:
|
|
72
|
+
_context.next = 4;
|
|
73
|
+
break;
|
|
74
|
+
case 3:
|
|
75
|
+
_context.prev = 3;
|
|
76
|
+
_t = _context["catch"](1);
|
|
77
|
+
(_config$onError = config.onError) === null || _config$onError === void 0 || _config$onError.call(config, _t);
|
|
78
|
+
this.logger.error("OpenClaw pre-connect failed:", _t);
|
|
79
|
+
case 4:
|
|
80
|
+
case "end":
|
|
81
|
+
return _context.stop();
|
|
82
|
+
}
|
|
83
|
+
}, _callee, this, [[1, 3]]);
|
|
84
|
+
}));
|
|
85
|
+
function initConnection(_x, _x2) {
|
|
86
|
+
return _initConnection.apply(this, arguments);
|
|
87
|
+
}
|
|
88
|
+
return initConnection;
|
|
89
|
+
}()
|
|
90
|
+
}, {
|
|
91
|
+
key: "handleStream",
|
|
92
|
+
value: function () {
|
|
93
|
+
var _handleStream = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee2(params, context) {
|
|
94
|
+
var messageId, config, _config$onRequest, requestParams, _t2, _t3;
|
|
95
|
+
return _regeneratorRuntime.wrap(function (_context2) {
|
|
96
|
+
while (1) switch (_context2.prev = _context2.next) {
|
|
97
|
+
case 0:
|
|
98
|
+
messageId = context.messageId, config = context.config;
|
|
99
|
+
this.ensureAdapter(config);
|
|
100
|
+
this.updateStreamCallbacks(config, context);
|
|
101
|
+
_context2.prev = 1;
|
|
102
|
+
if (this.openclawAdapter.isAuthenticated()) {
|
|
103
|
+
_context2.next = 2;
|
|
104
|
+
break;
|
|
105
|
+
}
|
|
106
|
+
_context2.next = 2;
|
|
107
|
+
return this.openclawAdapter.connect();
|
|
108
|
+
case 2:
|
|
109
|
+
_context2.next = 3;
|
|
110
|
+
return (_config$onRequest = config.onRequest) === null || _config$onRequest === void 0 ? void 0 : _config$onRequest.call(config, params);
|
|
111
|
+
case 3:
|
|
112
|
+
_t2 = _context2.sent;
|
|
113
|
+
if (_t2) {
|
|
114
|
+
_context2.next = 4;
|
|
115
|
+
break;
|
|
116
|
+
}
|
|
117
|
+
_t2 = {};
|
|
118
|
+
case 4:
|
|
119
|
+
requestParams = _t2;
|
|
120
|
+
_context2.next = 5;
|
|
121
|
+
return this.openclawAdapter.sendMessage(params, requestParams);
|
|
122
|
+
case 5:
|
|
123
|
+
_context2.next = 7;
|
|
124
|
+
break;
|
|
125
|
+
case 6:
|
|
126
|
+
_context2.prev = 6;
|
|
127
|
+
_t3 = _context2["catch"](1);
|
|
128
|
+
if (messageId) {
|
|
129
|
+
context.handleError(messageId, _t3);
|
|
130
|
+
}
|
|
131
|
+
throw _t3;
|
|
132
|
+
case 7:
|
|
133
|
+
case "end":
|
|
134
|
+
return _context2.stop();
|
|
135
|
+
}
|
|
136
|
+
}, _callee2, this, [[1, 6]]);
|
|
137
|
+
}));
|
|
138
|
+
function handleStream(_x3, _x4) {
|
|
139
|
+
return _handleStream.apply(this, arguments);
|
|
140
|
+
}
|
|
141
|
+
return handleStream;
|
|
142
|
+
}()
|
|
143
|
+
}, {
|
|
144
|
+
key: "abort",
|
|
145
|
+
value: function abort() {
|
|
146
|
+
var _this$openclawAdapter;
|
|
147
|
+
(_this$openclawAdapter = this.openclawAdapter) === null || _this$openclawAdapter === void 0 || _this$openclawAdapter.abort();
|
|
148
|
+
}
|
|
149
|
+
}, {
|
|
150
|
+
key: "destroy",
|
|
151
|
+
value: function () {
|
|
152
|
+
var _destroy = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee3() {
|
|
153
|
+
return _regeneratorRuntime.wrap(function (_context3) {
|
|
154
|
+
while (1) switch (_context3.prev = _context3.next) {
|
|
155
|
+
case 0:
|
|
156
|
+
if (!this.openclawAdapter) {
|
|
157
|
+
_context3.next = 2;
|
|
158
|
+
break;
|
|
159
|
+
}
|
|
160
|
+
_context3.next = 1;
|
|
161
|
+
return this.openclawAdapter.destroy();
|
|
162
|
+
case 1:
|
|
163
|
+
this.openclawAdapter = null;
|
|
164
|
+
case 2:
|
|
165
|
+
case "end":
|
|
166
|
+
return _context3.stop();
|
|
167
|
+
}
|
|
168
|
+
}, _callee3, this);
|
|
169
|
+
}));
|
|
170
|
+
function destroy() {
|
|
171
|
+
return _destroy.apply(this, arguments);
|
|
172
|
+
}
|
|
173
|
+
return destroy;
|
|
174
|
+
}()
|
|
175
|
+
}, {
|
|
176
|
+
key: "getAdapter",
|
|
177
|
+
value: function getAdapter() {
|
|
178
|
+
return this.openclawAdapter;
|
|
179
|
+
}
|
|
180
|
+
}, {
|
|
181
|
+
key: "ensureAdapter",
|
|
182
|
+
value: function ensureAdapter(config) {
|
|
183
|
+
if (this.openclawAdapter) return;
|
|
184
|
+
var openclawConfig = config.openclaw || {};
|
|
185
|
+
var adapterConfig = _objectSpread({
|
|
186
|
+
endpoint: config.endpoint,
|
|
187
|
+
timeout: config.timeout,
|
|
188
|
+
maxRetries: config.maxRetries,
|
|
189
|
+
retryInterval: config.retryInterval
|
|
190
|
+
}, openclawConfig);
|
|
191
|
+
this.openclawAdapter = new OpenClawAdapter(adapterConfig);
|
|
192
|
+
}
|
|
193
|
+
}, {
|
|
194
|
+
key: "updateCallbacks",
|
|
195
|
+
value: function updateCallbacks(config, _onHistoryLoaded) {
|
|
196
|
+
var _this = this;
|
|
197
|
+
if (!this.openclawAdapter) return;
|
|
198
|
+
this.openclawAdapter.setCallbacks({
|
|
199
|
+
onConnected: function onConnected() {
|
|
200
|
+
_this.logger.info("OpenClaw connected");
|
|
201
|
+
},
|
|
202
|
+
onStart: function onStart() {
|
|
203
|
+
var _config$onStart;
|
|
204
|
+
(_config$onStart = config.onStart) === null || _config$onStart === void 0 || _config$onStart.call(config, "openclaw:stream:start");
|
|
205
|
+
},
|
|
206
|
+
onMessage: function onMessage() {},
|
|
207
|
+
onComplete: function onComplete() {},
|
|
208
|
+
onError: function onError(error) {
|
|
209
|
+
var _config$onError2;
|
|
210
|
+
(_config$onError2 = config.onError) === null || _config$onError2 === void 0 || _config$onError2.call(config, error);
|
|
211
|
+
},
|
|
212
|
+
onHistoryLoaded: function onHistoryLoaded(messages) {
|
|
213
|
+
_this.logger.info("OpenClaw history loaded: ".concat(messages.length, " messages"));
|
|
214
|
+
_onHistoryLoaded === null || _onHistoryLoaded === void 0 || _onHistoryLoaded(messages);
|
|
215
|
+
}
|
|
216
|
+
});
|
|
217
|
+
}
|
|
218
|
+
}, {
|
|
219
|
+
key: "updateStreamCallbacks",
|
|
220
|
+
value: function updateStreamCallbacks(config, context) {
|
|
221
|
+
var _this2 = this;
|
|
222
|
+
if (!this.openclawAdapter) return;
|
|
223
|
+
var messageId = context.messageId;
|
|
224
|
+
this.openclawAdapter.setCallbacks({
|
|
225
|
+
onConnected: function onConnected() {
|
|
226
|
+
_this2.logger.info("OpenClaw connected");
|
|
227
|
+
},
|
|
228
|
+
onStart: function onStart() {
|
|
229
|
+
var _config$onStart2;
|
|
230
|
+
(_config$onStart2 = config.onStart) === null || _config$onStart2 === void 0 || _config$onStart2.call(config, "openclaw:stream:start");
|
|
231
|
+
},
|
|
232
|
+
onMessage: function onMessage(content) {
|
|
233
|
+
if (context.getStopReceive() || !messageId) return;
|
|
234
|
+
var chunk = {
|
|
235
|
+
event: "openclaw",
|
|
236
|
+
data: content
|
|
237
|
+
};
|
|
238
|
+
var result = content;
|
|
239
|
+
if (config.onMessage) {
|
|
240
|
+
var userResult = config.onMessage(chunk, context.messageStore.getMessageByID(messageId), result);
|
|
241
|
+
if (userResult) {
|
|
242
|
+
result = userResult;
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
context.eventBus.emit(ChatEngineEventType.REQUEST_STREAM, {
|
|
246
|
+
messageId: messageId,
|
|
247
|
+
chunk: chunk,
|
|
248
|
+
content: result
|
|
249
|
+
});
|
|
250
|
+
context.processMessageResult(messageId, result);
|
|
251
|
+
},
|
|
252
|
+
onComplete: function onComplete(isAborted, requestParams) {
|
|
253
|
+
if (messageId) {
|
|
254
|
+
context.handleComplete(messageId, isAborted, requestParams || context.config);
|
|
255
|
+
}
|
|
256
|
+
},
|
|
257
|
+
onError: function onError(error) {
|
|
258
|
+
if (messageId) context.handleError(messageId, error);
|
|
259
|
+
},
|
|
260
|
+
onHistoryLoaded: function onHistoryLoaded(messages) {
|
|
261
|
+
_this2.logger.info("OpenClaw history loaded during stream: ".concat(messages.length, " messages (ignored)"));
|
|
262
|
+
}
|
|
263
|
+
});
|
|
264
|
+
}
|
|
265
|
+
}]);
|
|
266
|
+
}();
|
|
267
|
+
|
|
268
|
+
export { OpenClawStreamHandler };
|
|
269
|
+
//# sourceMappingURL=openclaw-stream-handler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"openclaw-stream-handler.js","sources":["../../../../../pro-components/chat/chat-engine/core/stream-handlers/openclaw-stream-handler.ts"],"sourcesContent":["/**\n * OpenClaw 协议流式处理器\n *\n * 负责 OpenClaw WebSocket 连接的完整生命周期管理:\n * - 适配器创建与持有(从 LLMService 移入)\n * - 连接建立与认证\n * - 消息发送与流式响应\n * - 历史消息接收\n *\n * OpenClaw 的 chunk.data 已经是 AIMessageContent 格式(由 OpenClawAdapter 转换)\n */\nimport type { AIMessageContent, ChatRequestParams, ChatServiceConfig, SSEChunkData } from '../type';\nimport { ChatEngineEventType } from '../event-bus';\nimport { LoggerManager } from '../utils/logger';\nimport {\n OpenClawAdapter,\n type OpenClawAdapterConfig,\n} from '../adapters/openclaw';\nimport type { IStreamHandler, StreamContext } from './types';\nimport type { LLMService } from '../server';\n\nexport interface OpenClawStreamHandlerOptions {\n /** LLM 服务引用(用于 SSE/Batch 的 abort) */\n llmService: LLMService;\n}\n\nexport class OpenClawStreamHandler implements IStreamHandler {\n private openclawAdapter: OpenClawAdapter | null = null;\n private llmService: LLMService;\n private logger = LoggerManager.getLogger();\n\n constructor(options: OpenClawStreamHandlerOptions) {\n this.llmService = options.llmService;\n }\n\n /**\n * 初始化:在 ChatEngine.init() 阶段预建立 WebSocket 连接\n *\n * Gateway 会在 connect 响应中推送历史消息,通过 onHistoryLoaded 自动回填。\n */\n async initConnection(config: ChatServiceConfig, onHistoryLoaded?: (messages: any[]) => void): Promise<void> {\n this.ensureAdapter(config);\n this.updateCallbacks(config, onHistoryLoaded);\n\n try {\n if (!this.openclawAdapter!.isAuthenticated()) {\n await this.openclawAdapter!.connect();\n }\n } catch (error) {\n config.onError?.(error as Error);\n // 连接失败不抛出,允许后续 sendMessage 时重试\n this.logger.error('OpenClaw pre-connect failed:', error);\n }\n }\n\n async handleStream(params: ChatRequestParams, context: StreamContext): Promise<void> {\n const { messageId, config } = context;\n\n this.ensureAdapter(config);\n this.updateStreamCallbacks(config, context);\n\n try {\n // 连接 WebSocket(如果未连接,比如 init 阶段连接失败需要重试)\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 if (messageId) {\n context.handleError(messageId, error);\n }\n throw error;\n }\n }\n\n /**\n * 中止当前请求\n */\n abort(): void {\n this.openclawAdapter?.abort();\n }\n\n /**\n * 销毁处理器,释放 OpenClaw 连接资源\n */\n async destroy(): Promise<void> {\n if (this.openclawAdapter) {\n await this.openclawAdapter.destroy();\n this.openclawAdapter = null;\n }\n }\n\n /**\n * 获取适配器实例(供外部调用 invokeAction 等)\n */\n getAdapter(): OpenClawAdapter | null {\n return this.openclawAdapter;\n }\n\n // ==================== 内部方法 ====================\n\n /**\n * 确保 OpenClaw 适配器已创建\n */\n private ensureAdapter(config: ChatServiceConfig): void {\n if (this.openclawAdapter) return;\n\n const openclawConfig = config.openclaw || {};\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 this.openclawAdapter = new OpenClawAdapter(adapterConfig);\n }\n\n /**\n * 更新 init 阶段的回调(连接 + 历史消息)\n */\n private updateCallbacks(config: ChatServiceConfig, onHistoryLoaded?: (messages: any[]) => void): void {\n if (!this.openclawAdapter) return;\n\n this.openclawAdapter.setCallbacks({\n onConnected: () => {\n this.logger.info('OpenClaw connected');\n },\n onStart: () => {\n config.onStart?.('openclaw:stream:start');\n },\n onMessage: () => {\n // init 阶段无需处理消息\n },\n onComplete: () => {\n // init 阶段无需处理完成\n },\n onError: (error) => {\n config.onError?.(error);\n },\n onHistoryLoaded: (messages) => {\n this.logger.info(`OpenClaw history loaded: ${messages.length} messages`);\n onHistoryLoaded?.(messages);\n },\n });\n }\n\n /**\n * 更新流式请求阶段的回调(消息处理 + 事件发布)\n */\n private updateStreamCallbacks(config: ChatServiceConfig, context: StreamContext): void {\n if (!this.openclawAdapter) return;\n\n const { messageId } = context;\n\n this.openclawAdapter.setCallbacks({\n onConnected: () => {\n this.logger.info('OpenClaw connected');\n },\n onStart: () => {\n config.onStart?.('openclaw:stream:start');\n },\n onMessage: (content) => {\n if (context.getStopReceive() || !messageId) return;\n\n // OpenClaw 的 content 已经是 AIMessageContent 格式(由 OpenClawAdapter 转换)\n const chunk: SSEChunkData = {\n event: 'openclaw',\n data: content,\n };\n let result: AIMessageContent | AIMessageContent[] | null = content;\n\n // 允许用户通过 onMessage 进行自定义处理\n if (config.onMessage) {\n const userResult = config.onMessage(chunk, context.messageStore.getMessageByID(messageId), result);\n if (userResult) {\n result = userResult;\n }\n }\n\n // 发布流数据事件\n context.eventBus.emit(ChatEngineEventType.REQUEST_STREAM, {\n messageId,\n chunk,\n content: result,\n });\n\n // 处理消息结果\n context.processMessageResult(messageId, result);\n },\n onComplete: (isAborted, requestParams) => {\n if (messageId) {\n context.handleComplete(messageId, isAborted, requestParams || context.config);\n }\n },\n onError: (error) => {\n if (messageId) context.handleError(messageId, error);\n },\n onHistoryLoaded: (messages) => {\n // 流式阶段不应再处理历史消息\n this.logger.info(`OpenClaw history loaded during stream: ${messages.length} messages (ignored)`);\n },\n });\n }\n}\n"],"names":["OpenClawStreamHandler","options","_classCallCheck","_defineProperty","LoggerManager","getLogger","llmService","_createClass","key","value","_initConnection","_asyncToGenerator","_regeneratorRuntime","mark","_callee","config","onHistoryLoaded","_config$onError","_t","wrap","_context","prev","next","ensureAdapter","updateCallbacks","openclawAdapter","isAuthenticated","connect","onError","call","logger","error","stop","initConnection","_x","_x2","apply","arguments","_handleStream","_callee2","params","context","messageId","_config$onRequest","requestParams","_t2","_t3","_context2","updateStreamCallbacks","onRequest","sendMessage","handleError","handleStream","_x3","_x4","abort","_this$openclawAdapter","_destroy","_callee3","_context3","destroy","getAdapter","openclawConfig","openclaw","adapterConfig","_objectSpread","endpoint","timeout","maxRetries","retryInterval","OpenClawAdapter","_this","setCallbacks","onConnected","info","onStart","_config$onStart","onMessage","onComplete","_config$onError2","messages","concat","length","_this2","_config$onStart2","content","getStopReceive","chunk","event","data","result","userResult","messageStore","getMessageByID","eventBus","emit","ChatEngineEventType","REQUEST_STREAM","processMessageResult","isAborted","handleComplete"],"mappings":"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"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 流式处理策略接口
|
|
3
|
+
*
|
|
4
|
+
* 将不同协议(Default/AGUI/OpenClaw)的流式处理逻辑从 ChatEngine 中抽出,
|
|
5
|
+
* 遵循策略模式,使 ChatEngine 专注于编排,新协议无需修改 ChatEngine。
|
|
6
|
+
*/
|
|
7
|
+
import type { AIMessageContent, ChatRequestParams, ChatServiceConfig } from '../type';
|
|
8
|
+
import type { IChatEventBus } from '../event-bus';
|
|
9
|
+
import type { MessageStore } from '../store/message';
|
|
10
|
+
/**
|
|
11
|
+
* 流式处理上下文
|
|
12
|
+
*
|
|
13
|
+
* 由 ChatEngine 构建,提供 StreamHandler 所需的引擎能力
|
|
14
|
+
*/
|
|
15
|
+
export interface StreamContext {
|
|
16
|
+
/** 当前 AI 消息 ID */
|
|
17
|
+
messageId?: string;
|
|
18
|
+
/** 聊天服务配置 */
|
|
19
|
+
config: ChatServiceConfig;
|
|
20
|
+
/** 是否停止接收 */
|
|
21
|
+
getStopReceive: () => boolean;
|
|
22
|
+
/** 处理消息结果(内容更新 + 事件发布) */
|
|
23
|
+
processMessageResult: (messageId: string, result: AIMessageContent | AIMessageContent[] | null) => void;
|
|
24
|
+
/** 错误处理 */
|
|
25
|
+
handleError: (messageId: string, error: unknown) => void;
|
|
26
|
+
/** 完成处理 */
|
|
27
|
+
handleComplete: (messageId: string, isAborted: boolean, params: ChatRequestParams, chunk?: unknown) => void;
|
|
28
|
+
/** 消息存储(用于获取消息) */
|
|
29
|
+
messageStore: MessageStore;
|
|
30
|
+
/** 事件总线 */
|
|
31
|
+
eventBus: IChatEventBus;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* 流式处理策略接口
|
|
35
|
+
*/
|
|
36
|
+
export interface IStreamHandler {
|
|
37
|
+
/**
|
|
38
|
+
* 处理流式请求
|
|
39
|
+
* @param params 请求参数
|
|
40
|
+
* @param context 流式处理上下文
|
|
41
|
+
*/
|
|
42
|
+
handleStream(params: ChatRequestParams, context: StreamContext): Promise<void>;
|
|
43
|
+
/**
|
|
44
|
+
* 销毁处理器,释放资源
|
|
45
|
+
*/
|
|
46
|
+
destroy?(): void;
|
|
47
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;"}
|
|
@@ -158,6 +158,16 @@ export interface DefaultEngineCallbacks {
|
|
|
158
158
|
onAbort?: () => Promise<void>;
|
|
159
159
|
/** 错误处理 */
|
|
160
160
|
onError?: (err: Error | Response) => void;
|
|
161
|
+
/**
|
|
162
|
+
* 历史消息加载回调(OpenClaw 专属)
|
|
163
|
+
*
|
|
164
|
+
* OpenClaw Gateway 在 connect 响应中可能附带历史消息(messages 字段),
|
|
165
|
+
* 当检测到时会自动转换为 ChatEngine 格式并触发此回调。
|
|
166
|
+
* 上层可据此回填历史对话到界面。
|
|
167
|
+
*
|
|
168
|
+
* @param messages 已转换为 ChatEngine 格式的历史消息数组
|
|
169
|
+
*/
|
|
170
|
+
onHistoryLoaded?: (messages: ChatMessagesData[]) => void;
|
|
161
171
|
/**
|
|
162
172
|
* Chunk 验证器 - 用于验证 SSE 数据块是否有效
|
|
163
173
|
*
|
|
@@ -205,6 +215,14 @@ export interface IChatEngine {
|
|
|
205
215
|
content?: AIMessageContent[];
|
|
206
216
|
sendRequest?: boolean;
|
|
207
217
|
}): Promise<void>;
|
|
218
|
+
/**
|
|
219
|
+
* 恢复未完成的 Agent 运行(断点续传)
|
|
220
|
+
* @param params 请求参数,应包含 threadId / runId 等后端识别续传所需的信息
|
|
221
|
+
* @returns 新创建的 AI 消息 ID
|
|
222
|
+
* @description 创建空的 AI 消息后发起请求,后端通过 MESSAGES_SNAPSHOT 恢复已有内容,
|
|
223
|
+
* 然后继续推增量事件直到 RUN_FINISHED
|
|
224
|
+
*/
|
|
225
|
+
resumeRun(params?: ChatRequestParams): Promise<string>;
|
|
208
226
|
/**
|
|
209
227
|
* 重新生成AI回复
|
|
210
228
|
* @param keepVersion 是否保留历史版本,默认为false
|
|
@@ -18,8 +18,8 @@ import '@babel/runtime/helpers/classCallCheck';
|
|
|
18
18
|
import '@babel/runtime/helpers/createClass';
|
|
19
19
|
import '@babel/runtime/regenerator';
|
|
20
20
|
import '../core/adapters/agui/index.js';
|
|
21
|
-
import '@babel/runtime/helpers/toConsumableArray';
|
|
22
21
|
import '../core/adapters/agui/event-mapper.js';
|
|
22
|
+
import '@babel/runtime/helpers/toConsumableArray';
|
|
23
23
|
import '../core/adapters/agui/types/index.js';
|
|
24
24
|
import 'zod';
|
|
25
25
|
import '@babel/runtime/helpers/possibleConstructorReturn';
|
|
@@ -51,8 +51,12 @@ import '../core/server/sse-client.js';
|
|
|
51
51
|
import '../core/server/connection-manager.js';
|
|
52
52
|
import '../core/server/sse-parser.js';
|
|
53
53
|
import '../core/server/types.js';
|
|
54
|
-
import '../core/adapters/openclaw/index.js';
|
|
55
54
|
import '../core/server/websocket-client.js';
|
|
55
|
+
import '../core/stream-handlers/index.js';
|
|
56
|
+
import '../core/stream-handlers/default-stream-handler.js';
|
|
57
|
+
import '../core/stream-handlers/agui-stream-handler.js';
|
|
58
|
+
import '../core/stream-handlers/openclaw-stream-handler.js';
|
|
59
|
+
import '../core/adapters/openclaw/index.js';
|
|
56
60
|
import '../core/adapters/openclaw/event-mapper.js';
|
|
57
61
|
import '../core/adapters/openclaw/types/events.js';
|
|
58
62
|
import '../core/adapters/shared/index.js';
|
|
@@ -62,6 +66,7 @@ import '../core/adapters/shared/activity-manager.js';
|
|
|
62
66
|
import '../core/adapters/openclaw/rpc-handler.js';
|
|
63
67
|
import '../core/adapters/openclaw/types/config.js';
|
|
64
68
|
import '../core/adapters/openclaw/utils.js';
|
|
69
|
+
import '../core/adapters/openclaw/history-converter.js';
|
|
65
70
|
import '../core/adapters/openclaw/types/index.js';
|
|
66
71
|
import '../core/adapters/openclaw/types/messages.js';
|
|
67
72
|
import '../core/adapters/index.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -15,8 +15,8 @@ import '@babel/runtime/helpers/classCallCheck';
|
|
|
15
15
|
import '@babel/runtime/helpers/createClass';
|
|
16
16
|
import '@babel/runtime/regenerator';
|
|
17
17
|
import '../core/adapters/agui/index.js';
|
|
18
|
-
import '@babel/runtime/helpers/toConsumableArray';
|
|
19
18
|
import '../core/adapters/agui/event-mapper.js';
|
|
19
|
+
import '@babel/runtime/helpers/toConsumableArray';
|
|
20
20
|
import '../core/adapters/agui/types/index.js';
|
|
21
21
|
import 'zod';
|
|
22
22
|
import '@babel/runtime/helpers/possibleConstructorReturn';
|
|
@@ -47,8 +47,12 @@ import '../core/server/sse-client.js';
|
|
|
47
47
|
import '../core/server/connection-manager.js';
|
|
48
48
|
import '../core/server/sse-parser.js';
|
|
49
49
|
import '../core/server/types.js';
|
|
50
|
-
import '../core/adapters/openclaw/index.js';
|
|
51
50
|
import '../core/server/websocket-client.js';
|
|
51
|
+
import '../core/stream-handlers/index.js';
|
|
52
|
+
import '../core/stream-handlers/default-stream-handler.js';
|
|
53
|
+
import '../core/stream-handlers/agui-stream-handler.js';
|
|
54
|
+
import '../core/stream-handlers/openclaw-stream-handler.js';
|
|
55
|
+
import '../core/adapters/openclaw/index.js';
|
|
52
56
|
import '../core/adapters/openclaw/event-mapper.js';
|
|
53
57
|
import '../core/adapters/openclaw/types/events.js';
|
|
54
58
|
import '../core/adapters/shared/index.js';
|
|
@@ -58,6 +62,7 @@ import '../core/adapters/shared/activity-manager.js';
|
|
|
58
62
|
import '../core/adapters/openclaw/rpc-handler.js';
|
|
59
63
|
import '../core/adapters/openclaw/types/config.js';
|
|
60
64
|
import '../core/adapters/openclaw/utils.js';
|
|
65
|
+
import '../core/adapters/openclaw/history-converter.js';
|
|
61
66
|
import '../core/adapters/openclaw/types/index.js';
|
|
62
67
|
import '../core/adapters/openclaw/types/messages.js';
|
|
63
68
|
import '../core/adapters/index.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useAgentState.js","sources":["../../../../pro-components/chat/chat-engine/hooks/useAgentState.ts"],"sourcesContent":["/* eslint-disable react-hooks/exhaustive-deps */\nimport { useState, useEffect, useRef, createContext, useContext, useMemo } from 'react';\n// import { stateManager } from 'tdesign-web-components/lib/chat-engine';\nimport { stateManager } from '../core';\n\n/**\n * 状态订阅相关类型定义\n */\n\nexport interface StateActionOptions {\n /**\n * 初始状态\n */\n initialState?: Record<string, any>;\n /**\n * 只订阅特定key的变化\n */\n subscribeKey?: string;\n}\n\nexport interface UseStateActionReturn {\n /**\n * 全量状态Map - 包含所有stateKey的状态\n * 格式: { [stateKey]: stateData }\n */\n stateMap: Record<string, any>;\n /**\n * 当前最新的状态key\n */\n currentStateKey: string | null;\n /**\n * 设置状态Map,用于加载历史对话消息中的state数据\n */\n setStateMap: (stateMap: Record<string, any> | ((prev: Record<string, any>) => Record<string, any>)) => void;\n /**\n * 获取当前完整状态的方法\n */\n getCurrentState: () => Record<string, any>;\n /**\n * 获取特定 key 状态的方法\n */\n getStateByKey: (key: string) => any;\n}\n\nexport const useAgentState = <T = any>(options: StateActionOptions = {}): UseStateActionReturn => {\n const { initialState, subscribeKey } = options;\n const [stateMap, setStateMap] = useState<Record<string, any>>(initialState || {});\n const [currentStateKey, setCurrentStateKey] = useState<string | null>(null);\n\n // 使用 ref 来避免不必要的重新渲染\n const stateMapRef = useRef(stateMap);\n stateMapRef.current = stateMap;\n\n useEffect(\n () =>\n stateManager.subscribeToLatest((newState: T, newStateKey: string) => {\n // 如果指定了 subscribeKey,只有匹配时才更新状态\n if (subscribeKey && newStateKey !== subscribeKey) {\n // 仍然更新内部状态,但不触发重新渲染\n stateMapRef.current = {\n ...stateMapRef.current,\n [newStateKey]: newState,\n };\n return;\n }\n\n setStateMap((prev) => ({\n ...prev,\n [newStateKey]: newState,\n }));\n setCurrentStateKey(newStateKey);\n }),\n [subscribeKey],\n );\n\n return {\n stateMap: stateMapRef.current,\n currentStateKey,\n setStateMap,\n getCurrentState: () => stateMapRef.current,\n getStateByKey: (key: string) => stateMapRef.current[key],\n };\n};\n\n// 创建 AgentState Context\nexport const AgentStateContext = createContext<UseStateActionReturn | null>(null);\n\n// 简化的状态选择器\nexport const useAgentStateDataByKey = (stateKey?: string) => {\n const contextState = useContext(AgentStateContext);\n const independentState = useAgentState({ subscribeKey: stateKey });\n\n return useMemo(() => {\n if (contextState) {\n // 有 Provider,使用 Context 状态\n const { stateMap } = contextState;\n return stateKey ? stateMap[stateKey] : stateMap;\n }\n\n // 没有 Provider,使用独立状态\n const { stateMap } = independentState;\n return stateKey ? stateMap[stateKey] : stateMap;\n }, [\n stateKey,\n // 关键:添加和 useAgentStateByKey 相同的深度依赖逻辑\n contextState && (stateKey ? contextState.stateMap[stateKey] : JSON.stringify(contextState.stateMap)),\n independentState && (stateKey ? independentState.stateMap[stateKey] : JSON.stringify(independentState.stateMap)),\n ]);\n};\n\n// 导出 Context Hook\nexport const useAgentStateContext = (): UseStateActionReturn => {\n const context = useContext(AgentStateContext);\n\n if (!context) {\n throw new Error('useAgentState must be used within AgentStateProvider');\n }\n\n return context;\n};\n"],"names":["useAgentState","options","arguments","length","undefined","initialState","subscribeKey","_useState","useState","_useState2","_slicedToArray","stateMap","setStateMap","_useState3","_useState4","currentStateKey","setCurrentStateKey","stateMapRef","useRef","current","useEffect","stateManager","subscribeToLatest","newState","newStateKey","_objectSpread","_defineProperty","prev","getCurrentState","getStateByKey","key","AgentStateContext","createContext","useAgentStateDataByKey","stateKey","contextState","useContext","independentState","useMemo","JSON","stringify","useAgentStateContext","context","Error"],"mappings":"
|
|
1
|
+
{"version":3,"file":"useAgentState.js","sources":["../../../../pro-components/chat/chat-engine/hooks/useAgentState.ts"],"sourcesContent":["/* eslint-disable react-hooks/exhaustive-deps */\nimport { useState, useEffect, useRef, createContext, useContext, useMemo } from 'react';\n// import { stateManager } from 'tdesign-web-components/lib/chat-engine';\nimport { stateManager } from '../core';\n\n/**\n * 状态订阅相关类型定义\n */\n\nexport interface StateActionOptions {\n /**\n * 初始状态\n */\n initialState?: Record<string, any>;\n /**\n * 只订阅特定key的变化\n */\n subscribeKey?: string;\n}\n\nexport interface UseStateActionReturn {\n /**\n * 全量状态Map - 包含所有stateKey的状态\n * 格式: { [stateKey]: stateData }\n */\n stateMap: Record<string, any>;\n /**\n * 当前最新的状态key\n */\n currentStateKey: string | null;\n /**\n * 设置状态Map,用于加载历史对话消息中的state数据\n */\n setStateMap: (stateMap: Record<string, any> | ((prev: Record<string, any>) => Record<string, any>)) => void;\n /**\n * 获取当前完整状态的方法\n */\n getCurrentState: () => Record<string, any>;\n /**\n * 获取特定 key 状态的方法\n */\n getStateByKey: (key: string) => any;\n}\n\nexport const useAgentState = <T = any>(options: StateActionOptions = {}): UseStateActionReturn => {\n const { initialState, subscribeKey } = options;\n const [stateMap, setStateMap] = useState<Record<string, any>>(initialState || {});\n const [currentStateKey, setCurrentStateKey] = useState<string | null>(null);\n\n // 使用 ref 来避免不必要的重新渲染\n const stateMapRef = useRef(stateMap);\n stateMapRef.current = stateMap;\n\n useEffect(\n () =>\n stateManager.subscribeToLatest((newState: T, newStateKey: string) => {\n // 如果指定了 subscribeKey,只有匹配时才更新状态\n if (subscribeKey && newStateKey !== subscribeKey) {\n // 仍然更新内部状态,但不触发重新渲染\n stateMapRef.current = {\n ...stateMapRef.current,\n [newStateKey]: newState,\n };\n return;\n }\n\n setStateMap((prev) => ({\n ...prev,\n [newStateKey]: newState,\n }));\n setCurrentStateKey(newStateKey);\n }),\n [subscribeKey],\n );\n\n return {\n stateMap: stateMapRef.current,\n currentStateKey,\n setStateMap,\n getCurrentState: () => stateMapRef.current,\n getStateByKey: (key: string) => stateMapRef.current[key],\n };\n};\n\n// 创建 AgentState Context\nexport const AgentStateContext = createContext<UseStateActionReturn | null>(null);\n\n// 简化的状态选择器\nexport const useAgentStateDataByKey = (stateKey?: string) => {\n const contextState = useContext(AgentStateContext);\n const independentState = useAgentState({ subscribeKey: stateKey });\n\n return useMemo(() => {\n if (contextState) {\n // 有 Provider,使用 Context 状态\n const { stateMap } = contextState;\n return stateKey ? stateMap[stateKey] : stateMap;\n }\n\n // 没有 Provider,使用独立状态\n const { stateMap } = independentState;\n return stateKey ? stateMap[stateKey] : stateMap;\n }, [\n stateKey,\n // 关键:添加和 useAgentStateByKey 相同的深度依赖逻辑\n contextState && (stateKey ? contextState.stateMap[stateKey] : JSON.stringify(contextState.stateMap)),\n independentState && (stateKey ? independentState.stateMap[stateKey] : JSON.stringify(independentState.stateMap)),\n ]);\n};\n\n// 导出 Context Hook\nexport const useAgentStateContext = (): UseStateActionReturn => {\n const context = useContext(AgentStateContext);\n\n if (!context) {\n throw new Error('useAgentState must be used within AgentStateProvider');\n }\n\n return context;\n};\n"],"names":["useAgentState","options","arguments","length","undefined","initialState","subscribeKey","_useState","useState","_useState2","_slicedToArray","stateMap","setStateMap","_useState3","_useState4","currentStateKey","setCurrentStateKey","stateMapRef","useRef","current","useEffect","stateManager","subscribeToLatest","newState","newStateKey","_objectSpread","_defineProperty","prev","getCurrentState","getStateByKey","key","AgentStateContext","createContext","useAgentStateDataByKey","stateKey","contextState","useContext","independentState","useMemo","JSON","stringify","useAgentStateContext","context","Error"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IA4CaA,aAAgB,GAAA,SAAhBA,aAAgBA,GAAqE;AAAA,EAAA,IAA3DC,OAA8B,GAAAC,SAAA,CAAAC,MAAA,GAAA,CAAA,IAAAD,SAAA,CAAA,CAAA,CAAA,KAAAE,SAAA,GAAAF,SAAA,CAAA,CAAA,CAAA,GAAA,EAA6B,CAAA;AAC1F,EAAA,IAAEG,YAAc,GAAiBJ,OAAA,CAA/BI,YAAc;IAAAC,YAAA,GAAiBL,OAAA,CAAjBK,YAAA,CAAA;EACtB,IAAAC,SAAA,GAAgCC,QAA8B,CAAAH,YAAA,IAAgB,EAAE,CAAA;IAAAI,UAAA,GAAAC,cAAA,CAAAH,SAAA,EAAA,CAAA,CAAA;AAAzEI,IAAAA,QAAU,GAAAF,UAAA,CAAA,CAAA,CAAA;AAAAG,IAAAA,WAAW,GAAAH,UAAA,CAAA,CAAA,CAAA,CAAA;AAC5B,EAAA,IAAAI,UAAA,GAA8CL,SAAwB,IAAI,CAAA;IAAAM,UAAA,GAAAJ,cAAA,CAAAG,UAAA,EAAA,CAAA,CAAA;AAAnEE,IAAAA,eAAA,GAAAD,UAAA,CAAA,CAAA,CAAA;AAAiBE,IAAAA,kBAAkB,GAAAF,UAAA,CAAA,CAAA,CAAA,CAAA;AAGpC,EAAA,IAAAG,WAAA,GAAcC,OAAOP,QAAQ,CAAA,CAAA;EACnCM,WAAA,CAAYE,OAAU,GAAAR,QAAA,CAAA;AAEtBS,EAAAA,SAAA,CACE,YAAA;IAAA,OACEC,YAAA,CAAaC,iBAAkB,CAAA,UAACC,UAAaC,WAAwB,EAAA;AAE/D,MAAA,IAAAlB,YAAA,IAAgBkB,gBAAgBlB,YAAc,EAAA;AAEhDW,QAAAA,WAAA,CAAYE,OAAU,GAAAM,aAAA,CAAAA,aAAA,CACjBR,EAAAA,EAAAA,WAAY,CAAAE,OAAA,OAAAO,eAAA,CAAA,EAAA,EACdF,WAAc,EAAAD,QAAA,CACjB,CAAA,CAAA;AACA,QAAA,OAAA;AACF,OAAA;MAEAX,WAAA,CAAY,UAACe,IAAU,EAAA;QAAA,OAAAF,aAAA,CAAAA,aAAA,CAClBE,EAAAA,EAAAA,IAAA,OAAAD,eAAA,CAAA,EAAA,EACFF,WAAc,EAAAD,QAAA,CAAA,CAAA,CAAA;AAAA,OACf,CAAA,CAAA;MACFP,kBAAA,CAAmBQ,WAAW,CAAA,CAAA;AAChC,KAAC,CAAA,CAAA;GACH,EAAA,CAAClB,YAAY,CACf,CAAA,CAAA;EAEO,OAAA;IACLK,UAAUM,WAAY,CAAAE,OAAA;AACtBJ,IAAAA,eAAA,EAAAA,eAAA;AACAH,IAAAA,WAAA,EAAAA,WAAA;IACAgB,eAAA,EAAiB,SAAjBA,eAAAA,GAAA;MAAA,OAAuBX,WAAY,CAAAE,OAAA,CAAA;AAAA,KAAA;AACnCU,IAAAA,aAAe,EAAA,SAAfA,aAAeA,CAACC,GAAgB,EAAA;AAAA,MAAA,OAAAb,WAAA,CAAYE,OAAQ,CAAAW,GAAA,CAAA,CAAA;AAAA,KAAA;GACtD,CAAA;AACF,EAAA;IAGaC,iBAAA,gBAAoBC,cAA2C,IAAI,EAAA;IAGnEC,sBAAA,GAAyB,SAAzBA,sBAAAA,CAA0BC,QAAsB,EAAA;AACrD,EAAA,IAAAC,YAAA,GAAeC,WAAWL,iBAAiB,CAAA,CAAA;EACjD,IAAMM,gBAAmB,GAAArC,aAAA,CAAc;AAAEM,IAAAA,YAAA,EAAc4B,QAAAA;AAAS,GAAC,CAAA,CAAA;EAEjE,OAAOI,QAAQ,YAAM;AACnB,IAAA,IAAIH,YAAc,EAAA;AAEV,MAAA,IAAExB,SAAAA,GAAawB,YAAA,CAAbxB,QAAAA,CAAAA;AACD,MAAA,OAAAuB,QAAA,GAAWvB,UAASuB,QAAYvB,CAAAA,GAAAA,SAAAA,CAAAA;AACzC,KAAA;AAGM,IAAA,IAAEA,WAAa0B,gBAAA,CAAb1B;AACD,IAAA,OAAAuB,QAAA,GAAWvB,SAASuB,QAAY,CAAA,GAAAvB,QAAA,CAAA;GACtC,EAAA,CACDuB,QAAA,EAEAC,YAAA,KAAiBD,WAAWC,YAAa,CAAAxB,QAAA,CAASuB,YAAYK,IAAK,CAAAC,SAAA,CAAUL,aAAaxB,QAAQ,CAAA,CAAA,EAClG0B,gBAAA,KAAqBH,WAAWG,gBAAiB,CAAA1B,QAAA,CAASuB,YAAYK,IAAK,CAAAC,SAAA,CAAUH,iBAAiB1B,QAAQ,CAAA,CAAA,CAC/G,CAAA,CAAA;AACH,EAAA;IAGa8B,uBAAuB,SAAvBA,uBAAmD;AACxD,EAAA,IAAAC,OAAA,GAAUN,WAAWL,iBAAiB,CAAA,CAAA;EAE5C,IAAI,CAACW,OAAS,EAAA;AACN,IAAA,MAAA,IAAIC,MAAM,sDAAsD,CAAA,CAAA;AACxE,GAAA;AAEO,EAAA,OAAAD,OAAA,CAAA;AACT;;;;"}
|