@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
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../pro-components/chat/chat-engine/core/index.ts"],"sourcesContent":["/* eslint-disable no-param-reassign */\n/* eslint-disable class-methods-use-this */\nimport { AGUIAdapter } from './adapters/agui';\nimport { MessageStore } from './store/message';\nimport type { ChatEventBusOptions, IChatEventBus } from './event-bus';\nimport { ChatEngineEventType, ChatEventBus } from './event-bus';\nimport MessageProcessor from './processor';\nimport { LLMService } from './server';\nimport type {\n AIContentChunkUpdate,\n AIMessageContent,\n ChatMessagesData,\n ChatMessageSetterMode,\n ChatRequestParams,\n ChatServiceConfig,\n ChatServiceConfigSetter,\n ChatStatus,\n IChatEngine,\n SSEChunkData,\n SystemMessage,\n ToolCall,\n} from './type';\nimport { isAIMessage } from './utils';\n\nexport default class ChatEngine implements IChatEngine {\n public messageStore: MessageStore;\n\n /**\n * 事件总线实例\n * @description 用于发布/订阅引擎事件,支持无 UI 场景下的事件分发\n */\n public readonly eventBus: IChatEventBus;\n\n private messageProcessor: MessageProcessor;\n\n private llmService!: LLMService;\n\n private config!: ChatServiceConfig;\n\n private lastRequestParams: ChatRequestParams | undefined;\n\n private stopReceive = false;\n\n private aguiAdapter: AGUIAdapter | null = null;\n\n constructor(eventBusOptions?: ChatEventBusOptions) {\n this.messageProcessor = new MessageProcessor();\n this.messageStore = new MessageStore();\n this.eventBus = new ChatEventBus(eventBusOptions);\n }\n\n /**\n * 获取当前所有消息\n * @returns 消息数组\n * @description 返回消息存储中的所有消息\n */\n get messages(): ChatMessagesData[] {\n return this.messageStore.messages;\n }\n\n /**\n * 获取当前聊天状态\n * @returns 聊天状态:'idle'、'pending'、'streaming'、'complete'、'stop'或'error'\n * @description 返回最后一条消息的状态,如果没有消息则返回'idle'\n */\n get status(): ChatStatus {\n return this.messages.at(-1)?.status || 'idle';\n }\n\n /**\n * 销毁聊天引擎实例\n * @description 中止请求,清理消息存储和适配器,释放资源\n */\n destroy(): void {\n // 发布销毁事件\n this.eventBus.emit(ChatEngineEventType.ENGINE_DESTROY, {\n timestamp: Date.now(),\n });\n\n // 中止当前请求\n this.abortChat();\n\n // 清理消息存储\n this.messageStore.clearHistory();\n this.messageStore.destroy();\n\n // 清理适配器\n this.aguiAdapter = null;\n\n // 销毁事件总线\n this.eventBus.destroy();\n }\n\n /**\n * 初始化聊天引擎\n * @param configSetter 聊天服务配置或配置生成函数\n * @param initialMessages 初始消息列表,用于恢复历史对话\n * @description 设置初始消息、配置服务参数,并根据协议类型初始化适配器\n */\n public init(configSetter: ChatServiceConfigSetter, initialMessages?: ChatMessagesData[]) {\n this.messageStore.initialize(this.convertMessages(initialMessages));\n this.config = typeof configSetter === 'function' ? configSetter() : configSetter || {};\n this.llmService = new LLMService();\n\n // 初始化AGUI适配器\n if (this.config.protocol === 'agui') {\n this.aguiAdapter = new AGUIAdapter();\n }\n\n // 初始化OpenClaw适配器(由 LLMService 内部管理连接生命周期)\n // if (this.config.protocol === 'openclaw') {\n // // OpenClaw 适配器通过 LLMService 自动创建和管理\n // // 这里仅标记协议类型,无需提前创建适配器实例\n // }\n\n // 发布初始化事件\n this.eventBus.emit(ChatEngineEventType.ENGINE_INIT, {\n timestamp: Date.now(),\n });\n }\n\n /**\n * 发送用户消息并获取AI回复\n * @param requestParams 请求参数,包含用户输入的文本和附件\n * @param sendRequest 是否立即发送\n * @description 创建用户消息和AI消息,并发送请求获取AI回复\n */\n public async sendUserMessage(requestParams: ChatRequestParams, sendRequest = true) {\n const { prompt, attachments, ...customParams } = requestParams;\n\n // 检查条件:prompt和attachments至少传入一个,且如果设置了就不能为空\n const hasValidPrompt = prompt && prompt.trim() !== '';\n const hasValidAttachments = Array.isArray(attachments) && attachments.length > 0;\n\n // 如果两者都没有有效值,则直接返回\n if (!hasValidPrompt && !hasValidAttachments) {\n console.warn('[ChatEngine] sendUserMessage: 必须提供有效的prompt或attachments');\n return;\n }\n\n const userMessage = this.messageProcessor.createUserMessage(prompt, attachments);\n const aiMessage = this.messageProcessor.createAssistantMessage();\n this.messageStore.createMultiMessages([userMessage, aiMessage]);\n\n // 发布消息创建事件\n this.eventBus.emit(ChatEngineEventType.MESSAGE_CREATE, {\n message: userMessage,\n messages: this.messages,\n });\n\n if (sendRequest) {\n const params = {\n ...requestParams,\n messageID: aiMessage.id,\n ...customParams, // 透传用户自定义参数\n };\n this.sendRequest(params);\n }\n }\n\n /**\n * 发送系统消息\n * @param msg 系统消息文本内容\n * @description 创建并存储一条系统消息,通常用于设置上下文或控制对话流程\n */\n public async sendSystemMessage(msg: string) {\n const systemMessage = {\n role: 'system',\n content: [\n {\n type: 'text',\n data: msg,\n },\n ],\n } as SystemMessage;\n this.messageStore.createMessage(systemMessage);\n\n // 发布消息创建事件\n this.eventBus.emit(ChatEngineEventType.MESSAGE_CREATE, {\n message: systemMessage,\n messages: this.messages,\n });\n }\n\n /**\n * 手动发送AI消息\n * @param options 包含请求参数params、发送消息内容content和是否发送请求的标志sendRequest\n * @description 创建并存储一条AI消息,可选择是否同时发送请求\n */\n public async sendAIMessage(\n options: { params?: ChatRequestParams; content?: AIMessageContent[]; sendRequest?: boolean } = {},\n ) {\n const { params = {}, content, sendRequest = true } = options;\n const newAIMessage = this.messageProcessor.createAssistantMessage({\n content,\n status: sendRequest ? 'pending' : 'complete',\n });\n this.messageStore.createMessage(newAIMessage);\n\n // 发布消息创建事件\n this.eventBus.emit(ChatEngineEventType.MESSAGE_CREATE, {\n message: newAIMessage,\n messages: this.messages,\n });\n\n if (sendRequest) {\n params.messageID = newAIMessage.id;\n await this.sendRequest(params);\n }\n }\n\n /**\n * 中止当前进行中的聊天请求\n * @description 停止接收流式响应,关闭连接,并调用配置的onAbort回调\n */\n public async abortChat() {\n this.stopReceive = true;\n\n if (this.config?.onAbort) {\n await this.config.onAbort();\n }\n\n try {\n this.llmService.closeConnect();\n if (!this.config.stream) {\n // 只有在批量模式下才删除最后一条AI消息\n if (this.messageStore.lastAIMessage?.id) {\n const messageId = this.messageStore.lastAIMessage.id;\n this.messageStore.removeMessage(messageId);\n\n // 发布消息删除事件\n this.eventBus.emit(ChatEngineEventType.MESSAGE_DELETE, {\n messageId,\n messages: this.messages,\n });\n }\n }\n } catch (error) {\n console.warn('Error during service cleanup:', error);\n }\n }\n\n /**\n * 注册内容块合并策略\n * @param type 内容类型,如'text'、'markdown'等\n * @param handler 合并处理函数,接收新块和现有块,返回合并后的内容块\n * @description 用于自定义不同类型内容的增量更新逻辑\n */\n public registerMergeStrategy<T extends AIMessageContent>(\n type: T['type'], // 使用类型中定义的type字段作为参数类型\n handler: (chunk: T, existing?: T) => T,\n ) {\n this.messageProcessor.registerHandler(type, handler);\n }\n\n /**\n * 设置消息列表\n * @param messages 要设置的消息数组\n * @param mode 设置模式:'replace'(替换)、'prepend'(前置)、'append'(追加),默认为'replace'\n * @description 用于批量更新消息,如加载历史消息或重置对话\n */\n public setMessages(messages: ChatMessagesData[], mode: ChatMessageSetterMode = 'replace') {\n this.messageStore.setMessages(messages, mode);\n }\n\n /**\n * 清空所有消息\n * @description 清除消息存储中的所有历史记录\n */\n public clearMessages(): void {\n this.messageStore.clearHistory();\n\n // 发布消息清空事件\n this.eventBus.emit(ChatEngineEventType.MESSAGE_CLEAR, {\n timestamp: Date.now(),\n });\n }\n\n /**\n * 重新生成AI回复\n * @param keepVersion 是否保留历史版本,默认为false\n * @description\n * - 当keepVersion=false时:删除最后一条AI消息,创建新消息并重新请求\n * - 当keepVersion=true时:保留旧消息,创建分支消息并重新请求\n */\n public async regenerateAIMessage(keepVersion = false) {\n const { lastAIMessage } = this.messageStore;\n if (!lastAIMessage) return;\n\n if (!keepVersion) {\n // 删除最后一条AI消息\n this.messageStore.removeMessage(lastAIMessage.id);\n } else {\n // todo: 保留历史版本,创建新分支\n this.messageStore.createMessageBranch(lastAIMessage.id);\n }\n\n // 创建新的AI消息\n const newAIMessage = this.messageProcessor.createAssistantMessage();\n this.messageStore.createMessage(newAIMessage);\n\n // 重新发起请求\n const params = {\n ...(this.lastRequestParams || {}),\n messageID: newAIMessage.id,\n prompt: this.lastRequestParams?.prompt ?? '',\n };\n\n await this.sendRequest(params);\n }\n\n /**\n * 发送请求获取AI回复\n * @param params 请求参数\n * @description 根据配置选择流式或批量请求模式,处理响应并更新消息状态\n */\n public async sendRequest(params: ChatRequestParams) {\n const { messageID: id } = params;\n\n // 发布请求开始事件\n this.eventBus.emit(ChatEngineEventType.REQUEST_START, {\n params,\n messageId: id,\n });\n\n try {\n if (this.config.stream) {\n // 处理sse流式响应模式\n this.stopReceive = false;\n await this.handleStreamRequest(params);\n } else {\n // 处理批量响应模式\n await this.handleBatchRequest(params);\n }\n this.lastRequestParams = params;\n } catch (error) {\n this.setMessageStatus(id!, 'error');\n\n // 发布请求错误事件\n this.eventBus.emit(ChatEngineEventType.REQUEST_ERROR, {\n messageId: id!,\n error,\n params,\n });\n\n throw error;\n }\n }\n\n /**\n * 根据名称获取工具调用\n * @param name 工具调用名称\n * @returns 匹配的工具调用对象,如果未找到则返回undefined\n * @description 用于获取特定名称的工具调用信息,仅在AGUI协议下可用\n */\n public getToolcallByName(name: string): ToolCall | undefined {\n return this.aguiAdapter?.getToolcallByName(name);\n }\n\n private async handleBatchRequest(params: ChatRequestParams) {\n const id = params.messageID;\n if (!id) return;\n this.setMessageStatus(id, 'pending');\n const result = await this.llmService.handleBatchRequest(params, this.config);\n if (result) {\n this.processMessageResult(id, result);\n this.setMessageStatus(id, 'complete');\n\n // 发布请求完成事件\n const message = this.messageStore.getMessageByID(id);\n if (message) {\n this.eventBus.emit(ChatEngineEventType.REQUEST_COMPLETE, {\n messageId: id,\n params,\n message,\n });\n }\n } else {\n this.setMessageStatus(id, 'error');\n\n // 发布请求错误事件\n this.eventBus.emit(ChatEngineEventType.REQUEST_ERROR, {\n messageId: id,\n error: new Error('Batch request returned empty result'),\n params,\n });\n }\n }\n\n private handleError(id: string, error: unknown) {\n this.setMessageStatus(id, 'error');\n this.config.onError?.(error as Error);\n\n // 发布请求错误事件\n this.eventBus.emit(ChatEngineEventType.REQUEST_ERROR, {\n messageId: id,\n error,\n });\n }\n\n private handleComplete(id: string, isAborted: boolean, params: ChatRequestParams, chunk?: unknown) {\n // 先调用用户自定义的 onComplete 回调,让业务层决定如何处理\n const customResult = this.config.onComplete?.(isAborted, params, chunk);\n // 如果用户返回了自定义内容,处理这些内容\n if (Array.isArray(customResult) || (customResult && 'status' in customResult)) {\n this.processMessageResult(id, customResult);\n } else {\n // 所有消息内容块检查,只要有一个失败,消息的status就是失败\n const allContentFailed = this.messageStore.messages.find((content) => content.status === 'error');\n // eslint-disable-next-line no-nested-ternary\n this.setMessageStatus(id, isAborted ? 'stop' : allContentFailed ? 'error' : 'complete');\n }\n\n // 发布请求完成/中止事件\n const message = this.messageStore.getMessageByID(id);\n if (message) {\n if (isAborted) {\n this.eventBus.emit(ChatEngineEventType.REQUEST_ABORT, {\n messageId: id,\n params,\n });\n } else {\n this.eventBus.emit(ChatEngineEventType.REQUEST_COMPLETE, {\n messageId: id,\n params,\n message,\n });\n }\n }\n }\n\n /**\n * 处理流式请求\n * 根据协议类型选择不同的处理策略\n * SSE 原始数据 → isValidChunk验证 → onMessage解析 → processMessageResult\n */\n private async handleStreamRequest(params: ChatRequestParams) {\n const id = params.messageID;\n const isAGUI = this.config.protocol === 'agui';\n const isOpenClaw = this.config.protocol === 'openclaw';\n\n if (id) {\n this.setMessageStatus(id, 'streaming');\n }\n\n // 根据协议类型选择处理策略\n if (isAGUI && this.aguiAdapter) {\n await this.handleAGUIStreamRequest(params, id);\n } else if (isOpenClaw) {\n await this.handleOpenClawStreamRequest(params, id);\n } else {\n await this.handleDefaultStreamRequest(params, id);\n }\n }\n\n /**\n * 处理AGUI协议的流式请求\n */\n private async handleAGUIStreamRequest(params: ChatRequestParams, messageId?: string) {\n await this.llmService.handleStreamRequest(params, {\n ...this.config,\n onMessage: (chunk: SSEChunkData) => {\n if (this.stopReceive || !messageId) return null;\n\n let result: AIMessageContent | AIMessageContent[] | null = null;\n\n // SSE数据 → AGUIEventMapper.mapEvent → 用户自定义onMessage(解析后数据 + 原始chunk)\n // 首先使用AGUI适配器进行通用协议解析\n if (this.aguiAdapter) {\n result = this.aguiAdapter.handleAGUIEvent(chunk, {\n onRunStart: (event) => {\n // 重置适配器状态,确保新一轮对话从干净状态开始\n this.aguiAdapter?.reset();\n this.config.onStart?.(JSON.stringify(event));\n // 发布 AGUI 运行开始事件\n this.eventBus.emit(ChatEngineEventType.AGUI_RUN_START, {\n runId: event.runId || '',\n threadId: event.threadId,\n timestamp: Date.now(),\n });\n },\n onRunComplete: (isAborted, requestParams, event) => {\n this.handleComplete(messageId, isAborted, requestParams, event);\n // 发布 AGUI 运行完成事件\n if (!isAborted) {\n this.eventBus.emit(ChatEngineEventType.AGUI_RUN_COMPLETE, {\n runId: event?.runId || '',\n threadId: event?.threadId,\n timestamp: Date.now(),\n });\n }\n },\n onRunError: (error) => {\n this.handleError(messageId, error);\n // 发布 AGUI 运行错误事件\n this.eventBus.emit(ChatEngineEventType.AGUI_RUN_ERROR, {\n error,\n });\n },\n });\n }\n\n // 然后调用用户自定义的onMessage,传入解析后的结果和原始数据\n if (this.config.onMessage) {\n const userResult = this.config.onMessage(chunk, this.messageStore.getMessageByID(messageId), result);\n // 如果用户返回了自定义结果,使用用户的结果\n if (userResult) {\n result = userResult;\n }\n }\n\n // 发布流数据事件\n this.eventBus.emit(ChatEngineEventType.REQUEST_STREAM, {\n messageId,\n chunk,\n content: result,\n });\n\n // 处理消息结果\n this.processMessageResult(messageId, result);\n return result;\n },\n onError: (error) => {\n if (messageId) this.handleError(messageId, error);\n },\n onComplete: (isAborted) => {\n // AGUI的完成事件由AGUIAdapter内部处理,这里只处理中断情况\n if (isAborted && messageId) {\n this.handleComplete(messageId, isAborted, params);\n }\n },\n });\n }\n\n /**\n * 处理默认协议的流式请求\n */\n private async handleDefaultStreamRequest(params: ChatRequestParams, messageId?: string) {\n await this.llmService.handleStreamRequest(params, {\n ...this.config,\n onStart: (chunk) => {\n this.config.onStart?.(chunk);\n },\n onMessage: (chunk: SSEChunkData) => {\n if (this.stopReceive || !messageId) return null;\n\n let result = null;\n\n // 使用默认的消息处理\n if (this.config.onMessage) {\n result = this.config.onMessage(chunk, this.messageStore.getMessageByID(messageId));\n }\n\n // 发布流数据事件\n this.eventBus.emit(ChatEngineEventType.REQUEST_STREAM, {\n messageId,\n chunk,\n content: result,\n });\n\n // 处理消息结果\n this.processMessageResult(messageId, result);\n return result;\n },\n onError: (error) => {\n if (messageId) this.handleError(messageId, error);\n },\n onComplete: (isAborted) => {\n if (messageId) {\n this.handleComplete(messageId, isAborted, params);\n }\n },\n });\n }\n\n /**\n * 处理 OpenClaw 协议的流式请求\n *\n * OpenClaw 使用 WebSocket 连接,消息流由 LLMService 内部的 OpenClawAdapter 处理。\n * Adapter 将 OpenClaw 事件转换为 AIMessageContent 后,通过 onMessage 回调传递给 ChatEngine。\n */\n private async handleOpenClawStreamRequest(params: ChatRequestParams, messageId?: string) {\n await this.llmService.handleStreamRequest(params, {\n ...this.config,\n onStart: (chunk) => {\n this.config.onStart?.(chunk);\n },\n onMessage: (chunk: SSEChunkData) => {\n if (this.stopReceive || !messageId) return null;\n\n // OpenClaw 的 chunk.data 已经是 AIMessageContent 格式(由 OpenClawAdapter 转换)\n let result: AIMessageContent | AIMessageContent[] | null = chunk.data;\n\n // 允许用户通过 onMessage 进行自定义处理\n if (this.config.onMessage) {\n const userResult = this.config.onMessage(chunk, this.messageStore.getMessageByID(messageId), result);\n if (userResult) {\n result = userResult;\n }\n }\n\n // 发布流数据事件\n this.eventBus.emit(ChatEngineEventType.REQUEST_STREAM, {\n messageId,\n chunk,\n content: result,\n });\n\n // 处理消息结果\n this.processMessageResult(messageId, result);\n return result;\n },\n onError: (error) => {\n if (messageId) this.handleError(messageId, error);\n },\n onComplete: (isAborted) => {\n if (messageId) {\n this.handleComplete(messageId, isAborted, params);\n }\n },\n });\n }\n\n /**\n * 统一处理消息结果\n * 支持单个内容块、多个内容块和增量更新\n */\n private processMessageResult(messageId: string, result: AIMessageContent | AIMessageContent[] | null) {\n if (!result) return;\n\n // 根据原始类型选择更新方式\n Array.isArray(result)\n ? this.messageStore.updateMultipleContents(messageId, result)\n : this.processContentUpdate(messageId, result);\n\n // 发布消息更新事件\n const message = this.messageStore.getMessageByID(messageId);\n if (message) {\n this.eventBus.emit(ChatEngineEventType.MESSAGE_UPDATE, {\n messageId,\n content: result,\n message,\n });\n\n // AG-UI 协议:发布细粒度事件\n if (this.aguiAdapter) {\n this.emitAGUIDetailEvents(messageId, result);\n }\n }\n }\n\n /**\n * 发布 AG-UI 细粒度事件\n * 根据内容类型分发到对应的事件通道\n * todo: 这里的类型 any问题\n */\n private emitAGUIDetailEvents(messageId: string, result: AIMessageContent | AIMessageContent[]) {\n const contents = Array.isArray(result) ? result : [result];\n for (const content of contents) {\n // Activity 事件\n if ((content as any).data.activityType) {\n this.eventBus.emit(ChatEngineEventType.AGUI_ACTIVITY, {\n activityType: (content as any).data.activityType,\n messageId,\n content: (content as any)?.data?.content,\n });\n }\n\n // ToolCall 事件\n if ((content as any)?.data?.eventType?.startsWith('TOOL_CALL')) {\n this.eventBus.emit(ChatEngineEventType.AGUI_TOOLCALL, {\n toolCall: (content as any).data,\n eventType: (content as any).data.eventType,\n });\n }\n }\n }\n\n private convertMessages(messages?: ChatMessagesData[]) {\n if (!messages) return { messageIds: [], messages: [] };\n\n return {\n messageIds: messages.map((msg) => msg.id),\n messages,\n };\n }\n\n private setMessageStatus(messageId: string, status: ChatMessagesData['status']) {\n const previousStatus = this.messageStore.getMessageByID(messageId)?.status;\n this.messageStore.setMessageStatus(messageId, status);\n\n // 发布消息状态变化事件\n if (status) {\n this.eventBus.emit(ChatEngineEventType.MESSAGE_STATUS_CHANGE, {\n messageId,\n status,\n previousStatus,\n });\n }\n }\n\n // 处理内容更新逻辑\n private processContentUpdate(messageId: string, rawChunk: AIContentChunkUpdate) {\n const message = this.messageStore.messages.find((m) => m.id === messageId);\n if (!message || !isAIMessage(message) || !message.content) return;\n\n let targetIndex: number;\n // 作为新的内容块追加\n if ((rawChunk as any)?.strategy === 'append') {\n targetIndex = -1;\n } else {\n // merge 策略:按 type 查找最后一个匹配的类型\n // 通过 type (如 toolcall-${toolCallName}) 来定位要更新的内容块\n targetIndex = message.content.findIndex((content: AIMessageContent) => content.type === rawChunk.type);\n if (targetIndex !== -1) {\n // 找到最后一个匹配的类型(从后往前查找)\n for (let i = message.content.length - 1; i >= 0; i--) {\n if (message.content[i].type === rawChunk.type) {\n targetIndex = i;\n break;\n }\n }\n }\n }\n const processed = this.messageProcessor.processContentUpdate(\n targetIndex !== -1 ? message.content[targetIndex] : undefined,\n rawChunk,\n );\n\n this.messageStore.appendContent(messageId, processed, targetIndex);\n }\n}\n\nexport * from './utils';\nexport * from './adapters';\nexport * from './event-bus';\nexport * from './adapters';\nexport type * from './type';\n"],"names":["ChatEngine","eventBusOptions","_classCallCheck","_defineProperty","messageProcessor","MessageProcessor","messageStore","MessageStore","eventBus","ChatEventBus","_createClass","key","get","messages","_this$messages$at","at","status","value","destroy","emit","ChatEngineEventType","ENGINE_DESTROY","timestamp","Date","now","abortChat","clearHistory","aguiAdapter","init","configSetter","initialMessages","initialize","convertMessages","config","llmService","LLMService","protocol","AGUIAdapter","ENGINE_INIT","_sendUserMessage","_asyncToGenerator","_regeneratorRuntime","mark","_callee","requestParams","sendRequest","prompt","attachments","customParams","hasValidPrompt","hasValidAttachments","userMessage","aiMessage","params","_args","arguments","wrap","_context","prev","next","length","undefined","_objectWithoutProperties","_excluded","trim","Array","isArray","console","warn","abrupt","createUserMessage","createAssistantMessage","createMultiMessages","MESSAGE_CREATE","message","_objectSpread","messageID","id","stop","sendUserMessage","_x","apply","_sendSystemMessage","_callee2","msg","systemMessage","_context2","role","content","type","data","createMessage","sendSystemMessage","_callee3","options","_options$params","_options$sendRequest","newAIMessage","_args3","_context3","sendAIMessage","_sendAIMessage","_abortChat","_callee4","_this$config","_this$messageStore$la","messageId","_context4","stopReceive","onAbort","closeConnect","stream","lastAIMessage","removeMessage","MESSAGE_DELETE","error","registerMergeStrategy","handler","registerHandler","setMessages","mode","clearMessages","MESSAGE_CLEAR","_regenerateAIMessage","_callee5","_this$lastRequestPara","_this$lastRequestPara2","keepVersion","_args5","_context5","createMessageBranch","lastRequestParams","regenerateAIMessage","_sendRequest","_callee6","_t","_context6","REQUEST_START","handleStreamRequest","handleBatchRequest","setMessageStatus","REQUEST_ERROR","getToolcallByName","name","_this$aguiAdapter","_handleBatchRequest","_callee7","result","_context7","processMessageResult","getMessageByID","REQUEST_COMPLETE","Error","handleError","_this$config$onError","_this$config2","onError","call","handleComplete","isAborted","chunk","_this$config$onComple","_this$config3","customResult","onComplete","allContentFailed","find","REQUEST_ABORT","_handleStreamRequest","_callee8","isAGUI","isOpenClaw","_context8","handleAGUIStreamRequest","handleOpenClawStreamRequest","handleDefaultStreamRequest","_callee9","_this","_context9","onMessage","handleAGUIEvent","onRunStart","event","_this$aguiAdapter2","_this$config$onStart","_this$config4","reset","onStart","JSON","stringify","AGUI_RUN_START","runId","threadId","onRunComplete","AGUI_RUN_COMPLETE","onRunError","AGUI_RUN_ERROR","userResult","REQUEST_STREAM","_x6","_x7","_handleAGUIStreamRequest","_handleDefaultStreamRequest","_callee0","_this2","_context0","_this2$config$onStart","_this2$config","_x8","_x9","_handleOpenClawStreamRequest","_callee1","_this3","_context1","_this3$config$onStart","_this3$config","_x0","_x1","updateMultipleContents","processContentUpdate","MESSAGE_UPDATE","emitAGUIDetailEvents","contents","_iterator","_createForOfIteratorHelper","_step","s","n","done","_content$data2","activityType","_content$data","AGUI_ACTIVITY","eventType","startsWith","AGUI_TOOLCALL","toolCall","err","e","f","messageIds","map","_this$messageStore$ge","previousStatus","MESSAGE_STATUS_CHANGE","rawChunk","m","isAIMessage","targetIndex","strategy","findIndex","i","processed","appendContent"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../pro-components/chat/chat-engine/core/index.ts"],"sourcesContent":["/* eslint-disable no-param-reassign */\n/* eslint-disable class-methods-use-this */\nimport { AGUIAdapter } from './adapters/agui';\nimport { MessageStore } from './store/message';\nimport type { ChatEventBusOptions, IChatEventBus } from './event-bus';\nimport { ChatEngineEventType, ChatEventBus } from './event-bus';\nimport MessageProcessor from './processor';\nimport { LLMService } from './server';\nimport {\n createStreamHandler,\n type IStreamHandler,\n type StreamContext,\n AGUIStreamHandler,\n OpenClawStreamHandler,\n} from './stream-handlers';\nimport type {\n AIMessageContent,\n ChatMessagesData,\n ChatMessageSetterMode,\n ChatRequestParams,\n ChatServiceConfig,\n ChatServiceConfigSetter,\n ChatStatus,\n IChatEngine,\n SystemMessage,\n ToolCall,\n} from './type';\n\nexport default class ChatEngine implements IChatEngine {\n public messageStore: MessageStore;\n\n /**\n * 事件总线实例\n * @description 用于发布/订阅引擎事件,支持无 UI 场景下的事件分发\n */\n public readonly eventBus: IChatEventBus;\n\n private messageProcessor: MessageProcessor;\n\n private llmService!: LLMService;\n\n private config!: ChatServiceConfig;\n\n private lastRequestParams: ChatRequestParams | undefined;\n\n private stopReceive = false;\n\n private aguiAdapter: AGUIAdapter | null = null;\n\n /** 流式处理策略(由协议类型决定) */\n private streamHandler!: IStreamHandler;\n\n constructor(eventBusOptions?: ChatEventBusOptions) {\n this.messageProcessor = new MessageProcessor();\n this.messageStore = new MessageStore();\n this.eventBus = new ChatEventBus(eventBusOptions);\n }\n\n /**\n * 获取当前所有消息\n * @returns 消息数组\n * @description 返回消息存储中的所有消息\n */\n get messages(): ChatMessagesData[] {\n return this.messageStore.messages;\n }\n\n /**\n * 获取当前聊天状态\n * @returns 聊天状态:'idle'、'pending'、'streaming'、'complete'、'stop'或'error'\n * @description 返回最后一条消息的状态,如果没有消息则返回'idle'\n */\n get status(): ChatStatus {\n return this.messages.at(-1)?.status || 'idle';\n }\n\n /**\n * 销毁聊天引擎实例\n * @description 中止请求,清理消息存储和适配器,释放资源\n */\n destroy(): void {\n // 发布销毁事件\n this.eventBus.emit(ChatEngineEventType.ENGINE_DESTROY, {\n timestamp: Date.now(),\n });\n\n // 中止当前请求\n this.abortChat();\n\n // 清理消息存储\n this.messageStore.clearHistory();\n this.messageStore.destroy();\n\n // 清理适配器和 StreamHandler\n this.aguiAdapter = null;\n this.streamHandler?.destroy?.();\n\n // 销毁事件总线\n this.eventBus.destroy();\n }\n\n /**\n * 初始化聊天引擎\n * @param configSetter 聊天服务配置或配置生成函数\n * @param initialMessages 初始消息列表,用于恢复历史对话\n * @description 设置初始消息、配置服务参数,并根据协议类型初始化适配器和 StreamHandler\n */\n public init(configSetter: ChatServiceConfigSetter, initialMessages?: ChatMessagesData[]) {\n this.messageStore.initialize(this.convertMessages(initialMessages));\n this.config = typeof configSetter === 'function' ? configSetter() : configSetter || {};\n this.llmService = new LLMService();\n\n // 初始化 AGUI 适配器\n if (this.config.protocol === 'agui') {\n this.aguiAdapter = new AGUIAdapter();\n }\n\n // 创建协议对应的 StreamHandler(Strategy 模式)\n this.streamHandler = createStreamHandler({\n protocol: this.config.protocol,\n llmService: this.llmService,\n aguiAdapter: this.aguiAdapter,\n });\n\n // OpenClaw 协议:立即建立 WebSocket 连接并完成握手\n // Gateway 会在 connect 响应中推送历史消息,通过 onHistoryLoaded 自动回填\n if (this.config.protocol === 'openclaw' && this.config.endpoint && this.streamHandler instanceof OpenClawStreamHandler) {\n (this.streamHandler as OpenClawStreamHandler).initConnection(this.config, (historyMessages) => {\n if (historyMessages && historyMessages.length > 0) {\n this.messageStore.setMessages(historyMessages, 'replace');\n this.config.onHistoryLoaded?.(historyMessages);\n }\n });\n }\n\n // 发布初始化事件\n this.eventBus.emit(ChatEngineEventType.ENGINE_INIT, {\n timestamp: Date.now(),\n });\n }\n\n /**\n * 发送用户消息并获取AI回复\n * @param requestParams 请求参数,包含用户输入的文本和附件\n * @param sendRequest 是否立即发送\n * @description 创建用户消息和AI消息,并发送请求获取AI回复\n */\n public async sendUserMessage(requestParams: ChatRequestParams, sendRequest = true) {\n const { prompt, attachments, ...customParams } = requestParams;\n\n // 检查条件:prompt和attachments至少传入一个,且如果设置了就不能为空\n const hasValidPrompt = prompt && prompt.trim() !== '';\n const hasValidAttachments = Array.isArray(attachments) && attachments.length > 0;\n\n // 如果两者都没有有效值,则直接返回\n if (!hasValidPrompt && !hasValidAttachments) {\n console.warn('[ChatEngine] sendUserMessage: 必须提供有效的prompt或attachments');\n return;\n }\n\n const userMessage = this.messageProcessor.createUserMessage(prompt, attachments);\n const aiMessage = this.messageProcessor.createAssistantMessage();\n this.messageStore.createMultiMessages([userMessage, aiMessage]);\n\n // 发布消息创建事件\n this.eventBus.emit(ChatEngineEventType.MESSAGE_CREATE, {\n message: userMessage,\n messages: this.messages,\n });\n\n if (sendRequest) {\n const params = {\n ...requestParams,\n messageID: aiMessage.id,\n ...customParams, // 透传用户自定义参数\n };\n this.sendRequest(params);\n }\n }\n\n /**\n * 发送系统消息\n * @param msg 系统消息文本内容\n * @description 创建并存储一条系统消息,通常用于设置上下文或控制对话流程\n */\n public async sendSystemMessage(msg: string) {\n const systemMessage = {\n role: 'system',\n content: [\n {\n type: 'text',\n data: msg,\n },\n ],\n } as SystemMessage;\n this.messageStore.createMessage(systemMessage);\n\n // 发布消息创建事件\n this.eventBus.emit(ChatEngineEventType.MESSAGE_CREATE, {\n message: systemMessage,\n messages: this.messages,\n });\n }\n\n /**\n * 手动发送AI消息\n * @param options 包含请求参数params、发送消息内容content和是否发送请求的标志sendRequest\n * @description 创建并存储一条AI消息,可选择是否同时发送请求\n */\n public async sendAIMessage(\n options: { params?: ChatRequestParams; content?: AIMessageContent[]; sendRequest?: boolean } = {},\n ) {\n const { params = {}, content, sendRequest = true } = options;\n const newAIMessage = this.messageProcessor.createAssistantMessage({\n content,\n status: sendRequest ? 'pending' : 'complete',\n });\n this.messageStore.createMessage(newAIMessage);\n\n // 发布消息创建事件\n this.eventBus.emit(ChatEngineEventType.MESSAGE_CREATE, {\n message: newAIMessage,\n messages: this.messages,\n });\n\n if (sendRequest) {\n params.messageID = newAIMessage.id;\n await this.sendRequest(params);\n }\n }\n\n /**\n * 恢复未完成的 Agent 运行(断点续传)\n *\n * 适用场景:用户离开页面后重新进入,后端 Agent 仍在运行。\n *\n * 流程:\n * 1. 创建一条空的 AI 消息(用于承载后续推送的内容)\n * 2. 调用 sendRequest 发起 SSE 连接\n * 3. 后端推 MESSAGES_SNAPSHOT 恢复已产生的中间内容(replaceContent)\n * 4. 后端继续推增量事件(TEXT_MESSAGE_CONTENT 等),Processor 正常 append\n * 5. 后端推 RUN_FINISHED 结束\n *\n * @param params 请求参数,应包含 threadId / runId 等后端识别续传所需的信息\n * @returns 新创建的 AI 消息 ID\n */\n public async resumeRun(params: ChatRequestParams = {}): Promise<string> {\n // 创建空的 AI 消息,状态为 pending(等待后端推送内容)\n const newAIMessage = this.messageProcessor.createAssistantMessage({\n content: [],\n status: 'pending',\n });\n this.messageStore.createMessage(newAIMessage);\n\n // 发布消息创建事件\n this.eventBus.emit(ChatEngineEventType.MESSAGE_CREATE, {\n message: newAIMessage,\n messages: this.messages,\n });\n\n // 发起请求,后端会通过 MESSAGES_SNAPSHOT 恢复已有内容,然后继续推增量\n params.messageID = newAIMessage.id;\n await this.sendRequest(params);\n\n return newAIMessage.id;\n }\n\n /**\n * 中止当前进行中的聊天请求\n * @description 停止接收流式响应,关闭连接,并调用配置的onAbort回调\n */\n public async abortChat() {\n this.stopReceive = true;\n\n if (this.config?.onAbort) {\n await this.config.onAbort();\n }\n\n try {\n this.llmService.closeConnect();\n // OpenClaw 的 abort 由 StreamHandler 管理\n if (this.streamHandler instanceof OpenClawStreamHandler) {\n (this.streamHandler as OpenClawStreamHandler).abort();\n }\n if (!this.config.stream) {\n // 只有在批量模式下才删除最后一条AI消息\n if (this.messageStore.lastAIMessage?.id) {\n const messageId = this.messageStore.lastAIMessage.id;\n this.messageStore.removeMessage(messageId);\n\n // 发布消息删除事件\n this.eventBus.emit(ChatEngineEventType.MESSAGE_DELETE, {\n messageId,\n messages: this.messages,\n });\n }\n }\n } catch (error) {\n console.warn('Error during service cleanup:', error);\n }\n }\n\n /**\n * 注册内容块合并策略\n * @param type 内容类型,如'text'、'markdown'等\n * @param handler 合并处理函数,接收新块和现有块,返回合并后的内容块\n * @description 用于自定义不同类型内容的增量更新逻辑\n */\n public registerMergeStrategy<T extends AIMessageContent>(\n type: T['type'], // 使用类型中定义的type字段作为参数类型\n handler: (chunk: T, existing?: T) => T,\n ) {\n this.messageProcessor.registerHandler(type, handler);\n }\n\n /**\n * 设置消息列表\n * @param messages 要设置的消息数组\n * @param mode 设置模式:'replace'(替换)、'prepend'(前置)、'append'(追加),默认为'replace'\n * @description 用于批量更新消息,如加载历史消息或重置对话\n */\n public setMessages(messages: ChatMessagesData[], mode: ChatMessageSetterMode = 'replace') {\n this.messageStore.setMessages(messages, mode);\n }\n\n /**\n * 清空所有消息\n * @description 清除消息存储中的所有历史记录\n */\n public clearMessages(): void {\n this.messageStore.clearHistory();\n\n // 发布消息清空事件\n this.eventBus.emit(ChatEngineEventType.MESSAGE_CLEAR, {\n timestamp: Date.now(),\n });\n }\n\n /**\n * 重新生成AI回复\n * @param keepVersion 是否保留历史版本,默认为false\n * @description\n * - 当keepVersion=false时:删除最后一条AI消息,创建新消息并重新请求\n * - 当keepVersion=true时:保留旧消息,创建分支消息并重新请求\n */\n public async regenerateAIMessage(keepVersion = false) {\n const { lastAIMessage } = this.messageStore;\n if (!lastAIMessage) return;\n\n if (!keepVersion) {\n // 删除最后一条AI消息\n this.messageStore.removeMessage(lastAIMessage.id);\n } else {\n // todo: 保留历史版本,创建新分支\n this.messageStore.createMessageBranch(lastAIMessage.id);\n }\n\n // 创建新的AI消息\n const newAIMessage = this.messageProcessor.createAssistantMessage();\n this.messageStore.createMessage(newAIMessage);\n\n // 重新发起请求\n const params = {\n ...(this.lastRequestParams || {}),\n messageID: newAIMessage.id,\n prompt: this.lastRequestParams?.prompt ?? '',\n };\n\n await this.sendRequest(params);\n }\n\n /**\n * 发送请求获取AI回复\n * @param params 请求参数\n * @description 根据配置选择流式或批量请求模式,处理响应并更新消息状态\n */\n public async sendRequest(params: ChatRequestParams) {\n const { messageID: id } = params;\n\n // 发布请求开始事件\n this.eventBus.emit(ChatEngineEventType.REQUEST_START, {\n params,\n messageId: id,\n });\n\n try {\n if (this.config.stream) {\n // 处理sse流式响应模式\n this.stopReceive = false;\n await this.handleStreamRequest(params);\n } else {\n // 处理批量响应模式\n await this.handleBatchRequest(params);\n }\n this.lastRequestParams = params;\n } catch (error) {\n this.setMessageStatus(id!, 'error');\n\n // 发布请求错误事件\n this.eventBus.emit(ChatEngineEventType.REQUEST_ERROR, {\n messageId: id!,\n error,\n params,\n });\n\n throw error;\n }\n }\n\n /**\n * 根据名称获取工具调用\n * @param name 工具调用名称\n * @returns 匹配的工具调用对象,如果未找到则返回undefined\n * @description 用于获取特定名称的工具调用信息,仅在AGUI协议下可用\n */\n public getToolcallByName(name: string): ToolCall | undefined {\n return this.aguiAdapter?.getToolcallByName(name);\n }\n\n private async handleBatchRequest(params: ChatRequestParams) {\n const id = params.messageID;\n if (!id) return;\n this.setMessageStatus(id, 'pending');\n const result = await this.llmService.handleBatchRequest(params, this.config);\n if (result) {\n this.processMessageResult(id, result);\n this.setMessageStatus(id, 'complete');\n\n // 发布请求完成事件\n const message = this.messageStore.getMessageByID(id);\n if (message) {\n this.eventBus.emit(ChatEngineEventType.REQUEST_COMPLETE, {\n messageId: id,\n params,\n message,\n });\n }\n } else {\n this.setMessageStatus(id, 'error');\n\n // 发布请求错误事件\n this.eventBus.emit(ChatEngineEventType.REQUEST_ERROR, {\n messageId: id,\n error: new Error('Batch request returned empty result'),\n params,\n });\n }\n }\n\n private handleError(id: string, error: unknown) {\n this.setMessageStatus(id, 'error');\n this.config.onError?.(error as Error);\n\n // 发布请求错误事件\n this.eventBus.emit(ChatEngineEventType.REQUEST_ERROR, {\n messageId: id,\n error,\n });\n }\n\n private handleComplete(id: string, isAborted: boolean, params: ChatRequestParams, chunk?: unknown) {\n // 先调用用户自定义的 onComplete 回调,让业务层决定如何处理\n const customResult = this.config.onComplete?.(isAborted, params, chunk);\n // 如果用户返回了自定义内容,处理这些内容\n if (Array.isArray(customResult) || (customResult && 'status' in customResult)) {\n this.processMessageResult(id, customResult);\n } else {\n // 所有消息内容块检查,只要有一个失败,消息的status就是失败\n const allContentFailed = this.messageStore.messages.find((content) => content.status === 'error');\n // eslint-disable-next-line no-nested-ternary\n this.setMessageStatus(id, isAborted ? 'stop' : allContentFailed ? 'error' : 'complete');\n }\n\n // 发布请求完成/中止事件\n const message = this.messageStore.getMessageByID(id);\n if (message) {\n if (isAborted) {\n this.eventBus.emit(ChatEngineEventType.REQUEST_ABORT, {\n messageId: id,\n params,\n });\n } else {\n this.eventBus.emit(ChatEngineEventType.REQUEST_COMPLETE, {\n messageId: id,\n params,\n message,\n });\n }\n }\n }\n\n /**\n * 处理流式请求\n * 委托给 StreamHandler 策略处理(Default/AGUI/OpenClaw)\n */\n private async handleStreamRequest(params: ChatRequestParams) {\n const id = params.messageID;\n\n if (id) {\n this.setMessageStatus(id, 'streaming');\n }\n\n const context = this.buildStreamContext(id);\n await this.streamHandler.handleStream(params, context);\n }\n\n /**\n * 构建 StreamHandler 所需的上下文\n */\n private buildStreamContext(messageId?: string): StreamContext {\n return {\n messageId,\n config: this.config,\n getStopReceive: () => this.stopReceive,\n processMessageResult: (id, result) => this.processMessageResult(id, result),\n handleError: (id, error) => this.handleError(id, error),\n handleComplete: (id, isAborted, params, chunk?) => this.handleComplete(id, isAborted, params, chunk),\n messageStore: this.messageStore,\n eventBus: this.eventBus,\n };\n }\n\n /**\n * 统一处理消息结果\n * 支持单个内容块、多个内容块和增量更新\n * 支持 MESSAGES_SNAPSHOT 的 replaceContent 语义(_isSnapshot 标记)\n */\n private processMessageResult(messageId: string, result: AIMessageContent | AIMessageContent[] | null) {\n if (!result) return;\n\n // MESSAGES_SNAPSHOT 场景:使用 replaceContent 一次性替换消息内容\n // 而非逐个 append,避免与已有内容产生拼接冲突\n if (Array.isArray(result) && (result as any)._isSnapshot) {\n this.messageStore.replaceContent(messageId, result);\n } else {\n // 委托 MessageProcessor 处理内容更新\n this.messageProcessor.applyContentUpdate(this.messageStore, messageId, result);\n }\n\n // 发布消息更新事件\n const message = this.messageStore.getMessageByID(messageId);\n if (message) {\n this.eventBus.emit(ChatEngineEventType.MESSAGE_UPDATE, {\n messageId,\n content: result,\n message,\n });\n\n // AG-UI 协议:发布细粒度事件(委托给 AGUIStreamHandler)\n if (this.streamHandler instanceof AGUIStreamHandler) {\n (this.streamHandler as AGUIStreamHandler).emitDetailEvents(messageId, result, this.eventBus);\n }\n }\n }\n\n private convertMessages(messages?: ChatMessagesData[]) {\n if (!messages) return { messageIds: [], messages: [] };\n\n return {\n messageIds: messages.map((msg) => msg.id),\n messages,\n };\n }\n\n private setMessageStatus(messageId: string, status: ChatMessagesData['status']) {\n const previousStatus = this.messageStore.getMessageByID(messageId)?.status;\n this.messageStore.setMessageStatus(messageId, status);\n\n // 发布消息状态变化事件\n if (status) {\n this.eventBus.emit(ChatEngineEventType.MESSAGE_STATUS_CHANGE, {\n messageId,\n status,\n previousStatus,\n });\n }\n }\n\n}\n\nexport * from './utils';\nexport * from './adapters';\nexport * from './event-bus';\nexport * from './stream-handlers';\nexport type * from './type';\n"],"names":["ChatEngine","eventBusOptions","_classCallCheck","_defineProperty","messageProcessor","MessageProcessor","messageStore","MessageStore","eventBus","ChatEventBus","_createClass","key","get","messages","_this$messages$at","at","status","value","destroy","_this$streamHandler","_this$streamHandler$d","emit","ChatEngineEventType","ENGINE_DESTROY","timestamp","Date","now","abortChat","clearHistory","aguiAdapter","streamHandler","call","init","configSetter","initialMessages","_this","initialize","convertMessages","config","llmService","LLMService","protocol","AGUIAdapter","createStreamHandler","endpoint","OpenClawStreamHandler","initConnection","historyMessages","length","_this$config$onHistor","_this$config","setMessages","onHistoryLoaded","ENGINE_INIT","_sendUserMessage","_asyncToGenerator","_regeneratorRuntime","mark","_callee","requestParams","sendRequest","prompt","attachments","customParams","hasValidPrompt","hasValidAttachments","userMessage","aiMessage","params","_args","arguments","wrap","_context","prev","next","undefined","_objectWithoutProperties","_excluded","trim","Array","isArray","console","warn","abrupt","createUserMessage","createAssistantMessage","createMultiMessages","MESSAGE_CREATE","message","_objectSpread","messageID","id","stop","sendUserMessage","_x","apply","_sendSystemMessage","_callee2","msg","systemMessage","_context2","role","content","type","data","createMessage","sendSystemMessage","_callee3","options","_options$params","_options$sendRequest","newAIMessage","_args3","_context3","sendAIMessage","_sendAIMessage","_resumeRun","_callee4","_args4","_context4","resumeRun","_abortChat","_callee5","_this$config2","_this$messageStore$la","messageId","_context5","stopReceive","onAbort","closeConnect","abort","stream","lastAIMessage","removeMessage","MESSAGE_DELETE","error","registerMergeStrategy","handler","registerHandler","mode","clearMessages","MESSAGE_CLEAR","_regenerateAIMessage","_callee6","_this$lastRequestPara","_this$lastRequestPara2","keepVersion","_args6","_context6","createMessageBranch","lastRequestParams","regenerateAIMessage","_sendRequest","_callee7","_t","_context7","REQUEST_START","handleStreamRequest","handleBatchRequest","setMessageStatus","REQUEST_ERROR","getToolcallByName","name","_this$aguiAdapter","_handleBatchRequest","_callee8","result","_context8","processMessageResult","getMessageByID","REQUEST_COMPLETE","Error","handleError","_this$config$onError","_this$config3","onError","handleComplete","isAborted","chunk","_this$config$onComple","_this$config4","customResult","onComplete","allContentFailed","find","REQUEST_ABORT","_handleStreamRequest","_callee9","context","_context9","buildStreamContext","handleStream","_this2","getStopReceive","_isSnapshot","replaceContent","applyContentUpdate","MESSAGE_UPDATE","AGUIStreamHandler","emitDetailEvents","messageIds","map","_this$messageStore$ge","previousStatus","MESSAGE_STATUS_CHANGE"],"mappings":"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"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { AIMessage, AIMessageContent, AttachmentItem, ChatMessagesData } from '../type';
|
|
2
|
+
import type { MessageStore } from '../store/message';
|
|
2
3
|
export default class MessageProcessor {
|
|
3
4
|
private contentHandlers;
|
|
4
5
|
constructor();
|
|
@@ -8,6 +9,37 @@ export default class MessageProcessor {
|
|
|
8
9
|
status?: AIMessage['status'];
|
|
9
10
|
}): AIMessage;
|
|
10
11
|
processContentUpdate(lastContent: AIMessageContent | undefined, newChunk: AIMessageContent): AIMessageContent;
|
|
12
|
+
/**
|
|
13
|
+
* 应用内容更新到消息存储
|
|
14
|
+
*
|
|
15
|
+
* 从 ChatEngine.processContentUpdate + processMessageResult 合并而来。
|
|
16
|
+
* 统一处理单个/多个内容块的更新逻辑,包括 append/merge 策略判断。
|
|
17
|
+
*/
|
|
18
|
+
applyContentUpdate(messageStore: MessageStore, messageId: string, result: AIMessageContent | AIMessageContent[] | null): void;
|
|
19
|
+
/**
|
|
20
|
+
* 将单个内容块应用到指定消息
|
|
21
|
+
*
|
|
22
|
+
* 从 ChatEngine.processContentUpdate 移入。
|
|
23
|
+
* 处理 append(新建内容块追加) 和 merge(按 type 查找并合并)两种策略。
|
|
24
|
+
*
|
|
25
|
+
* 跨消息查找:当 merge 策略在当前消息找不到匹配的内容块时,
|
|
26
|
+
* 会向前查找历史 AI 消息。典型场景:交互式 Toolcall 的 start 在前一条消息中,
|
|
27
|
+
* 用户回传后 sendAIMessage 创建了新消息,result 事件需要更新前一条消息的 toolcall。
|
|
28
|
+
*/
|
|
29
|
+
private applyChunkToMessage;
|
|
30
|
+
/**
|
|
31
|
+
* 在消息内容数组中查找最后一个匹配 type 的索引
|
|
32
|
+
*/
|
|
33
|
+
private findLastContentIndex;
|
|
34
|
+
/**
|
|
35
|
+
* 向前搜索历史 AI 消息中匹配指定 type 的内容块
|
|
36
|
+
*
|
|
37
|
+
* 典型场景:
|
|
38
|
+
* 1. 交互式 Toolcall:start 在消息 A 中,用户回传后 sendAIMessage 创建消息 B,
|
|
39
|
+
* 后端推送的 result 事件需要更新消息 A 中的 toolcall 内容块
|
|
40
|
+
* 2. 跨消息的 Activity 更新(如 delta 事件对应的 snapshot 在前一条消息中)
|
|
41
|
+
*/
|
|
42
|
+
private findContentInPreviousMessages;
|
|
11
43
|
registerHandler<T extends AIMessageContent>(type: T['type'], // 使用类型中定义的type字段作为参数类型
|
|
12
44
|
handler: (chunk: T, existing?: T) => T): void;
|
|
13
45
|
private generateID;
|
|
@@ -7,6 +7,12 @@
|
|
|
7
7
|
import _classCallCheck from '@babel/runtime/helpers/classCallCheck';
|
|
8
8
|
import _createClass from '@babel/runtime/helpers/createClass';
|
|
9
9
|
import _defineProperty from '@babel/runtime/helpers/defineProperty';
|
|
10
|
+
import { isAIMessage } from '../utils/index.js';
|
|
11
|
+
import '../utils/immutable-patch.js';
|
|
12
|
+
import '@babel/runtime/helpers/typeof';
|
|
13
|
+
import '@babel/runtime/helpers/objectWithoutProperties';
|
|
14
|
+
import '@babel/runtime/helpers/toConsumableArray';
|
|
15
|
+
import '@babel/runtime/helpers/toArray';
|
|
10
16
|
|
|
11
17
|
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; }
|
|
12
18
|
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; }
|
|
@@ -69,6 +75,75 @@ var MessageProcessor = /*#__PURE__*/function () {
|
|
|
69
75
|
status: (newChunk === null || newChunk === void 0 ? void 0 : newChunk.status) || "streaming"
|
|
70
76
|
});
|
|
71
77
|
}
|
|
78
|
+
}, {
|
|
79
|
+
key: "applyContentUpdate",
|
|
80
|
+
value: function applyContentUpdate(messageStore, messageId, result) {
|
|
81
|
+
if (!result) return;
|
|
82
|
+
if (Array.isArray(result)) {
|
|
83
|
+
messageStore.updateMultipleContents(messageId, result);
|
|
84
|
+
} else {
|
|
85
|
+
this.applyChunkToMessage(messageStore, messageId, result);
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
}, {
|
|
89
|
+
key: "applyChunkToMessage",
|
|
90
|
+
value: function applyChunkToMessage(messageStore, messageId, rawChunk) {
|
|
91
|
+
var _messageStore$message;
|
|
92
|
+
var message = messageStore.messages.find(function (m) {
|
|
93
|
+
return m.id === messageId;
|
|
94
|
+
});
|
|
95
|
+
if (!message || !isAIMessage(message) || !message.content) return;
|
|
96
|
+
var targetIndex;
|
|
97
|
+
var targetMessageId = messageId;
|
|
98
|
+
if ((rawChunk === null || rawChunk === void 0 ? void 0 : rawChunk.strategy) === "append") {
|
|
99
|
+
targetIndex = -1;
|
|
100
|
+
} else {
|
|
101
|
+
targetIndex = this.findLastContentIndex(message.content, rawChunk.type);
|
|
102
|
+
if (targetIndex === -1 && rawChunk.type.startsWith("toolcall-")) {
|
|
103
|
+
var crossResult = this.findContentInPreviousMessages(messageStore, messageId, rawChunk.type);
|
|
104
|
+
if (crossResult) {
|
|
105
|
+
targetMessageId = crossResult.messageId;
|
|
106
|
+
targetIndex = crossResult.contentIndex;
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
var existingContent = targetIndex !== -1 ? (_messageStore$message = messageStore.messages.find(function (m) {
|
|
111
|
+
return m.id === targetMessageId;
|
|
112
|
+
})) === null || _messageStore$message === void 0 || (_messageStore$message = _messageStore$message.content) === null || _messageStore$message === void 0 ? void 0 : _messageStore$message[targetIndex] : void 0;
|
|
113
|
+
var processed = this.processContentUpdate(existingContent, rawChunk);
|
|
114
|
+
messageStore.appendContent(targetMessageId, processed, targetIndex);
|
|
115
|
+
}
|
|
116
|
+
}, {
|
|
117
|
+
key: "findLastContentIndex",
|
|
118
|
+
value: function findLastContentIndex(contents, type) {
|
|
119
|
+
for (var i = contents.length - 1; i >= 0; i--) {
|
|
120
|
+
if (contents[i].type === type) {
|
|
121
|
+
return i;
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
return -1;
|
|
125
|
+
}
|
|
126
|
+
}, {
|
|
127
|
+
key: "findContentInPreviousMessages",
|
|
128
|
+
value: function findContentInPreviousMessages(messageStore, currentMessageId, type) {
|
|
129
|
+
var messages = messageStore.messages;
|
|
130
|
+
var currentIndex = messages.findIndex(function (m) {
|
|
131
|
+
return m.id === currentMessageId;
|
|
132
|
+
});
|
|
133
|
+
if (currentIndex <= 0) return null;
|
|
134
|
+
for (var i = currentIndex - 1; i >= 0; i--) {
|
|
135
|
+
var msg = messages[i];
|
|
136
|
+
if (!isAIMessage(msg) || !msg.content) continue;
|
|
137
|
+
var contentIndex = this.findLastContentIndex(msg.content, type);
|
|
138
|
+
if (contentIndex !== -1) {
|
|
139
|
+
return {
|
|
140
|
+
messageId: msg.id,
|
|
141
|
+
contentIndex: contentIndex
|
|
142
|
+
};
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
return null;
|
|
146
|
+
}
|
|
72
147
|
}, {
|
|
73
148
|
key: "registerHandler",
|
|
74
149
|
value: function registerHandler(type, handler) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../../pro-components/chat/chat-engine/core/processor/index.ts"],"sourcesContent":["/* eslint-disable class-methods-use-this */\nimport type {\n AIMessage,\n AIMessageContent,\n AttachmentItem,\n ChatMessagesData,\n ImageContent,\n MarkdownContent,\n SearchContent,\n TextContent,\n ThinkingContent,\n UserMessage,\n} from '../type';\n\nexport default class MessageProcessor {\n private contentHandlers: Map<string, (chunk: any, existing?: any) => any> = new Map();\n\n constructor() {\n this.registerDefaultHandlers();\n }\n\n public createUserMessage(content, attachments?: AttachmentItem[]): ChatMessagesData {\n const messageContent: UserMessage['content'] = [\n {\n type: 'text',\n data: content,\n },\n ];\n\n if (attachments?.length) {\n messageContent.push({\n type: 'attachment',\n data: attachments,\n });\n }\n\n return {\n id: this.generateID(),\n role: 'user',\n status: 'complete',\n datetime: `${Date.now()}`,\n content: messageContent,\n };\n }\n\n public createAssistantMessage(msg?: { content?: AIMessageContent[]; status?: AIMessage['status'] }): AIMessage {\n const { content = [], status = 'pending' } = msg || {};\n\n return {\n id: this.generateID(),\n role: 'assistant',\n content,\n status,\n datetime: new Date().toISOString(),\n };\n }\n\n // 处理内容更新\n public processContentUpdate(lastContent: AIMessageContent | undefined, newChunk: AIMessageContent): AIMessageContent {\n const handler = this.contentHandlers.get(newChunk.type);\n if (!lastContent) {\n return {\n ...newChunk,\n status: newChunk?.status || 'streaming',\n };\n }\n // 如果有注册的处理器且类型匹配\n if (handler && lastContent?.type === newChunk.type) {\n return handler(newChunk, lastContent);\n }\n // 没有处理器时的默认合并逻辑\n return {\n ...(lastContent || {}),\n ...newChunk,\n status: newChunk?.status || 'streaming',\n };\n }\n\n // 通用处理器注册方法\n public registerHandler<T extends AIMessageContent>(\n type: T['type'], // 使用类型中定义的type字段作为参数类型\n handler: (chunk: T, existing?: T) => T,\n ) {\n this.contentHandlers.set(type, handler);\n }\n\n private generateID() {\n return `msg_${Date.now()}_${Math.floor(Math.random() * 90000) + 10000}`;\n }\n\n // 注册默认支持的内容处理器\n private registerDefaultHandlers() {\n this.registerTextHandlers();\n this.registerThinkingHandler();\n this.registerImageHandler();\n this.registerSearchHandler();\n }\n\n // 通用处理器工厂\n private createContentHandler<T extends AIMessageContent>(\n mergeData: (existing: T['data'], incoming: T['data']) => T['data'],\n ): (chunk: T, existing?: T) => T {\n return (chunk: T, existing?: T): T => {\n if (existing?.type === chunk.type) {\n return {\n ...existing,\n data: mergeData(existing.data, chunk.data),\n status: chunk.status || 'streaming',\n // 合并ext字段,确保动态属性能够正确传递\n ext: {\n ...existing.ext,\n ...chunk.ext,\n },\n };\n }\n return {\n ...chunk,\n data: chunk.data,\n status: chunk.status || 'streaming',\n };\n };\n }\n\n // 文本类处理器(text/markdown)\n private registerTextHandlers() {\n // 创建类型安全的处理器\n const createTextHandler = <T extends TextContent | MarkdownContent>() =>\n this.createContentHandler<T>((existing: string, incoming: string) => existing + incoming);\n\n this.registerHandler<TextContent>('text', createTextHandler<TextContent>());\n this.registerHandler<MarkdownContent>('markdown', createTextHandler<MarkdownContent>());\n }\n\n // 思考过程处理器\n private registerThinkingHandler() {\n this.registerHandler<ThinkingContent>(\n 'thinking',\n this.createContentHandler((existing, incoming) => ({\n ...existing,\n ...incoming,\n text: (existing?.text || '') + (incoming?.text || ''),\n })),\n );\n }\n\n // 图片处理器\n private registerImageHandler() {\n this.registerHandler<ImageContent>(\n 'image',\n this.createContentHandler((existing, incoming) => ({ ...existing, ...incoming })),\n );\n }\n\n // 搜索处理器\n private registerSearchHandler() {\n this.registerHandler<SearchContent>(\n 'search',\n this.createContentHandler((existing, incoming) => ({\n ...existing,\n ...incoming,\n })),\n );\n }\n}\n"],"names":["MessageProcessor","_classCallCheck","_defineProperty","Map","registerDefaultHandlers","_createClass","key","value","createUserMessage","content","attachments","messageContent","type","data","length","push","id","generateID","role","status","datetime","concat","Date","now","createAssistantMessage","msg","_ref","_ref$content","_ref$status","toISOString","processContentUpdate","lastContent","newChunk","handler","contentHandlers","get","_objectSpread","registerHandler","set","Math","floor","random","registerTextHandlers","registerThinkingHandler","registerImageHandler","registerSearchHandler","createContentHandler","mergeData","chunk","existing","ext","_this","createTextHandler","incoming","text"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../../pro-components/chat/chat-engine/core/processor/index.ts"],"sourcesContent":["/* eslint-disable class-methods-use-this */\nimport type {\n AIContentChunkUpdate,\n AIMessage,\n AIMessageContent,\n AttachmentItem,\n ChatMessagesData,\n ImageContent,\n MarkdownContent,\n SearchContent,\n TextContent,\n ThinkingContent,\n UserMessage,\n} from '../type';\nimport type { MessageStore } from '../store/message';\nimport { isAIMessage } from '../utils';\n\nexport default class MessageProcessor {\n private contentHandlers: Map<string, (chunk: any, existing?: any) => any> = new Map();\n\n constructor() {\n this.registerDefaultHandlers();\n }\n\n public createUserMessage(content, attachments?: AttachmentItem[]): ChatMessagesData {\n const messageContent: UserMessage['content'] = [\n {\n type: 'text',\n data: content,\n },\n ];\n\n if (attachments?.length) {\n messageContent.push({\n type: 'attachment',\n data: attachments,\n });\n }\n\n return {\n id: this.generateID(),\n role: 'user',\n status: 'complete',\n datetime: `${Date.now()}`,\n content: messageContent,\n };\n }\n\n public createAssistantMessage(msg?: { content?: AIMessageContent[]; status?: AIMessage['status'] }): AIMessage {\n const { content = [], status = 'pending' } = msg || {};\n\n return {\n id: this.generateID(),\n role: 'assistant',\n content,\n status,\n datetime: new Date().toISOString(),\n };\n }\n\n // 处理内容更新(单个内容块的合并策略)\n public processContentUpdate(lastContent: AIMessageContent | undefined, newChunk: AIMessageContent): AIMessageContent {\n const handler = this.contentHandlers.get(newChunk.type);\n if (!lastContent) {\n return {\n ...newChunk,\n status: newChunk?.status || 'streaming',\n };\n }\n // 如果有注册的处理器且类型匹配\n if (handler && lastContent?.type === newChunk.type) {\n return handler(newChunk, lastContent);\n }\n // 没有处理器时的默认合并逻辑\n return {\n ...(lastContent || {}),\n ...newChunk,\n status: newChunk?.status || 'streaming',\n };\n }\n\n /**\n * 应用内容更新到消息存储\n *\n * 从 ChatEngine.processContentUpdate + processMessageResult 合并而来。\n * 统一处理单个/多个内容块的更新逻辑,包括 append/merge 策略判断。\n */\n public applyContentUpdate(\n messageStore: MessageStore,\n messageId: string,\n result: AIMessageContent | AIMessageContent[] | null,\n ): void {\n if (!result) return;\n\n // 根据原始类型选择更新方式\n if (Array.isArray(result)) {\n messageStore.updateMultipleContents(messageId, result);\n } else {\n this.applyChunkToMessage(messageStore, messageId, result);\n }\n }\n\n /**\n * 将单个内容块应用到指定消息\n *\n * 从 ChatEngine.processContentUpdate 移入。\n * 处理 append(新建内容块追加) 和 merge(按 type 查找并合并)两种策略。\n *\n * 跨消息查找:当 merge 策略在当前消息找不到匹配的内容块时,\n * 会向前查找历史 AI 消息。典型场景:交互式 Toolcall 的 start 在前一条消息中,\n * 用户回传后 sendAIMessage 创建了新消息,result 事件需要更新前一条消息的 toolcall。\n */\n private applyChunkToMessage(messageStore: MessageStore, messageId: string, rawChunk: AIContentChunkUpdate): void {\n const message = messageStore.messages.find((m) => m.id === messageId);\n if (!message || !isAIMessage(message) || !message.content) return;\n\n let targetIndex: number;\n let targetMessageId = messageId;\n\n // 作为新的内容块追加\n if ((rawChunk as any)?.strategy === 'append') {\n targetIndex = -1;\n } else {\n // merge 策略:按 type 查找最后一个匹配的类型\n targetIndex = this.findLastContentIndex(message.content, rawChunk.type);\n\n // 跨消息查找:当前消息没找到,向前搜索历史 AI 消息\n // 仅对 toolcall 类型生效。典型场景:交互式 Toolcall 的 start 在前一条消息中,\n // 用户回传后 sendAIMessage 创建了新消息,result 事件需要更新前一条消息的 toolcall。\n // 注意:Activity 类型不做跨消息查找,因为其 merge 语义是同一消息内的增量更新,\n // 跨消息时应由后端重新发 SNAPSHOT 创建新内容块。\n if (targetIndex === -1 && rawChunk.type.startsWith('toolcall-')) {\n const crossResult = this.findContentInPreviousMessages(messageStore, messageId, rawChunk.type);\n if (crossResult) {\n targetMessageId = crossResult.messageId;\n targetIndex = crossResult.contentIndex;\n }\n }\n }\n\n const existingContent = targetIndex !== -1\n ? (messageStore.messages.find((m) => m.id === targetMessageId) as any)?.content?.[targetIndex]\n : undefined;\n\n const processed = this.processContentUpdate(existingContent, rawChunk);\n messageStore.appendContent(targetMessageId, processed, targetIndex);\n }\n\n /**\n * 在消息内容数组中查找最后一个匹配 type 的索引\n */\n private findLastContentIndex(contents: AIMessageContent[], type: string): number {\n for (let i = contents.length - 1; i >= 0; i--) {\n if (contents[i].type === type) {\n return i;\n }\n }\n return -1;\n }\n\n /**\n * 向前搜索历史 AI 消息中匹配指定 type 的内容块\n *\n * 典型场景:\n * 1. 交互式 Toolcall:start 在消息 A 中,用户回传后 sendAIMessage 创建消息 B,\n * 后端推送的 result 事件需要更新消息 A 中的 toolcall 内容块\n * 2. 跨消息的 Activity 更新(如 delta 事件对应的 snapshot 在前一条消息中)\n */\n private findContentInPreviousMessages(\n messageStore: MessageStore,\n currentMessageId: string,\n type: string,\n ): { messageId: string; contentIndex: number } | null {\n const messages = messageStore.messages;\n const currentIndex = messages.findIndex((m) => m.id === currentMessageId);\n if (currentIndex <= 0) return null;\n\n // 从当前消息的前一条开始向前搜索\n for (let i = currentIndex - 1; i >= 0; i--) {\n const msg = messages[i];\n if (!isAIMessage(msg) || !msg.content) continue;\n\n const contentIndex = this.findLastContentIndex(msg.content, type);\n if (contentIndex !== -1) {\n return { messageId: msg.id, contentIndex };\n }\n }\n\n return null;\n }\n\n // 通用处理器注册方法\n public registerHandler<T extends AIMessageContent>(\n type: T['type'], // 使用类型中定义的type字段作为参数类型\n handler: (chunk: T, existing?: T) => T,\n ) {\n this.contentHandlers.set(type, handler);\n }\n\n private generateID() {\n return `msg_${Date.now()}_${Math.floor(Math.random() * 90000) + 10000}`;\n }\n\n // 注册默认支持的内容处理器\n private registerDefaultHandlers() {\n this.registerTextHandlers();\n this.registerThinkingHandler();\n this.registerImageHandler();\n this.registerSearchHandler();\n }\n\n // 通用处理器工厂\n private createContentHandler<T extends AIMessageContent>(\n mergeData: (existing: T['data'], incoming: T['data']) => T['data'],\n ): (chunk: T, existing?: T) => T {\n return (chunk: T, existing?: T): T => {\n if (existing?.type === chunk.type) {\n return {\n ...existing,\n data: mergeData(existing.data, chunk.data),\n status: chunk.status || 'streaming',\n // 合并ext字段,确保动态属性能够正确传递\n ext: {\n ...existing.ext,\n ...chunk.ext,\n },\n };\n }\n return {\n ...chunk,\n data: chunk.data,\n status: chunk.status || 'streaming',\n };\n };\n }\n\n // 文本类处理器(text/markdown)\n private registerTextHandlers() {\n // 创建类型安全的处理器\n const createTextHandler = <T extends TextContent | MarkdownContent>() =>\n this.createContentHandler<T>((existing: string, incoming: string) => existing + incoming);\n\n this.registerHandler<TextContent>('text', createTextHandler<TextContent>());\n this.registerHandler<MarkdownContent>('markdown', createTextHandler<MarkdownContent>());\n }\n\n // 思考过程处理器\n private registerThinkingHandler() {\n this.registerHandler<ThinkingContent>(\n 'thinking',\n this.createContentHandler((existing, incoming) => ({\n ...existing,\n ...incoming,\n text: (existing?.text || '') + (incoming?.text || ''),\n })),\n );\n }\n\n // 图片处理器\n private registerImageHandler() {\n this.registerHandler<ImageContent>(\n 'image',\n this.createContentHandler((existing, incoming) => ({ ...existing, ...incoming })),\n );\n }\n\n // 搜索处理器\n private registerSearchHandler() {\n this.registerHandler<SearchContent>(\n 'search',\n this.createContentHandler((existing, incoming) => ({\n ...existing,\n ...incoming,\n })),\n );\n }\n}\n"],"names":["MessageProcessor","_classCallCheck","_defineProperty","Map","registerDefaultHandlers","_createClass","key","value","createUserMessage","content","attachments","messageContent","type","data","length","push","id","generateID","role","status","datetime","concat","Date","now","createAssistantMessage","msg","_ref","_ref$content","_ref$status","toISOString","processContentUpdate","lastContent","newChunk","handler","contentHandlers","get","_objectSpread","applyContentUpdate","messageStore","messageId","result","Array","isArray","updateMultipleContents","applyChunkToMessage","rawChunk","_messageStore$message","message","messages","find","m","isAIMessage","targetIndex","targetMessageId","strategy","findLastContentIndex","startsWith","crossResult","findContentInPreviousMessages","contentIndex","existingContent","processed","appendContent","contents","i","currentMessageId","currentIndex","findIndex","registerHandler","set","Math","floor","random","registerTextHandlers","registerThinkingHandler","registerImageHandler","registerSearchHandler","createContentHandler","mergeData","chunk","existing","ext","_this","createTextHandler","incoming","text"],"mappings":"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"}
|
|
@@ -22,26 +22,6 @@ import '@babel/runtime/helpers/possibleConstructorReturn';
|
|
|
22
22
|
import '@babel/runtime/helpers/getPrototypeOf';
|
|
23
23
|
import '@babel/runtime/helpers/inherits';
|
|
24
24
|
import '../utils/eventEmitter.js';
|
|
25
|
-
import '../adapters/openclaw/index.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
25
|
import '@babel/runtime/helpers/wrapNativeSuper';
|
|
42
|
-
import '../adapters/openclaw/types/config.js';
|
|
43
|
-
import '../adapters/openclaw/utils.js';
|
|
44
|
-
import '../adapters/openclaw/types/index.js';
|
|
45
|
-
import '../adapters/openclaw/types/messages.js';
|
|
46
26
|
import './sse-parser.js';
|
|
47
27
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -10,12 +10,14 @@ export interface ILLMService {
|
|
|
10
10
|
handleStreamRequest(params: ChatRequestParams, config: ChatServiceConfig): Promise<void>;
|
|
11
11
|
}
|
|
12
12
|
/**
|
|
13
|
-
*
|
|
13
|
+
* LLM Service — 负责 SSE 和 Batch 请求
|
|
14
|
+
*
|
|
15
|
+
* 注意:OpenClaw WebSocket 连接已移至 OpenClawStreamHandler 管理,
|
|
16
|
+
* LLMService 不再感知 OpenClaw 的存在。
|
|
14
17
|
*/
|
|
15
18
|
export declare class LLMService implements ILLMService {
|
|
16
19
|
private sseClient;
|
|
17
20
|
private batchClient;
|
|
18
|
-
private openclawAdapter;
|
|
19
21
|
private isDestroyed;
|
|
20
22
|
private logger;
|
|
21
23
|
/**
|
|
@@ -23,13 +25,11 @@ export declare class LLMService implements ILLMService {
|
|
|
23
25
|
*/
|
|
24
26
|
handleBatchRequest(params: ChatRequestParams, config: ChatServiceConfig): Promise<AIMessageContent | AIMessageContent[]>;
|
|
25
27
|
/**
|
|
26
|
-
*
|
|
28
|
+
* 处理流式请求(SSE)
|
|
29
|
+
*
|
|
30
|
+
* 注意:OpenClaw 协议不再走此方法,而是由 OpenClawStreamHandler 直接管理。
|
|
27
31
|
*/
|
|
28
32
|
handleStreamRequest(params: ChatRequestParams, config: ChatServiceConfig): Promise<void>;
|
|
29
|
-
/**
|
|
30
|
-
* 处理 OpenClaw WebSocket 流式请求
|
|
31
|
-
*/
|
|
32
|
-
private handleOpenClawStreamRequest;
|
|
33
33
|
/**
|
|
34
34
|
* 关闭所有客户端连接
|
|
35
35
|
*/
|