@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":"utils.js","sources":["../../../../../../pro-components/chat/chat-engine/core/adapters/agui/utils.ts"],"sourcesContent":["/* eslint-disable default-param-last */\n/**\n * AGUI适配器工具函数\n * 包含与类无关的纯函数,用于处理AGUI协议相关逻辑\n */\n\n/**\n * 合并字符串内容,处理JSON和普通字符串\n * @param existing 现有内容\n * @param delta 增量内容\n * @returns 合并后的内容\n */\nexport function mergeStringContent(existing: string | undefined, delta: string): string {\n if (!existing) return delta;\n\n // 尝试解析为JSON,如果是有效的JSON则合并\n try {\n const existingObj = JSON.parse(existing);\n const deltaObj = JSON.parse(delta);\n\n // 如果是对象,进行深度合并\n if (typeof existingObj === 'object' && typeof deltaObj === 'object') {\n return JSON.stringify({ ...existingObj, ...deltaObj });\n }\n\n // 如果是数组,进行数组合并\n if (Array.isArray(existingObj) && Array.isArray(deltaObj)) {\n return JSON.stringify([...existingObj, ...deltaObj]);\n }\n\n // 其他情况,直接替换\n return delta;\n } catch (error) {\n // 不是有效的JSON,按普通字符串处理\n return existing + delta;\n }\n}\n\n/**\n * 从delta事件中提取stateKey\n * @param event delta事件对象\n * @returns stateKey或null\n */\nexport function extractStateKeyFromDelta(event: { type: string; delta?: any[] }): string | null {\n if (event.type === 'STATE_DELTA' && event.delta && event.delta.length > 0) {\n // 从第一个delta操作的路径中提取stateKey\n const firstDelta = event.delta[0];\n if (firstDelta && firstDelta.path) {\n const pathParts = firstDelta.path.split('/');\n return pathParts.length > 1 ? pathParts[1] : null;\n }\n }\n return null;\n}\n\n/**\n * 处理消息快照\n * @param messages 消息数组\n * @returns 处理后的消息内容数组\n */\nexport function handleMessagesSnapshot(messages: any[]): any[] {\n // 只取assistant消息\n if (!messages) return [];\n return messages.flatMap((msg: any) => {\n if (msg.role === 'assistant' && Array.isArray(msg.content)) {\n return msg.content.map((content: any) => ({\n type: content.type || 'markdown',\n data: content.data,\n status: 'complete',\n }));\n }\n return [];\n });\n}\n\n/**\n * 处理自定义事件\n * 直接将 CUSTOM 事件转换为通用格式,由业务层自行处理\n * @param event 自定义事件对象\n * @returns 处理结果\n */\nexport function handleCustomEvent(event: any): any {\n if (event.name === 'suggestion') {\n return {\n type: 'suggestion',\n data: event.value || [],\n status: 'complete',\n };\n }\n return {\n type: 'custom',\n data: {\n name: event.name,\n value: event.value,\n },\n status: 'complete',\n };\n}\n\n\n/**\n * 解析SSE数据\n * @param data SSE数据,可能是字符串或已解析的对象\n * @returns 解析后的事件对象或null\n */\nexport function parseSSEData(data: any): any {\n if (typeof data === 'string') {\n try {\n return JSON.parse(data);\n } catch (error) {\n console.warn('Failed to parse SSE data:', error);\n return null;\n }\n }\n return data;\n}\n\n/**\n * 验证事件对象\n * @param event 事件对象\n * @returns 是否为有效事件\n */\nexport function isValidEvent(event: any): boolean {\n return event && typeof event === 'object' && event.type;\n}\n\n/**\n * 生成连接ID\n * @param prefix 前缀\n * @returns 连接ID\n */\nexport function generateConnectionId(prefix = 'sse'): string {\n const timestamp = Date.now();\n return `${prefix}_${timestamp}_${Math.random().toString(36).substr(2, 9)}`;\n}\n\n/**\n * 格式化日志消息\n * @param level 日志级别\n * @param message 消息内容\n * @param context 上下文信息\n * @returns 格式化后的日志消息\n */\nexport function formatLogMessage(level: string, message: string, context?: any): string {\n const timestamp = new Date().toISOString();\n const contextStr = context ? ` [${JSON.stringify(context)}]` : '';\n return `[${timestamp}] [${level.toUpperCase()}] ${message}${contextStr}`;\n}\n\n/**\n * 创建基础的 AIMessageContent 对象\n * @param type 内容类型\n * @param data 内容数据\n * @param status 状态\n * @param strategy 策略\n * @param ext 扩展属性\n * @returns AIMessageContent 对象\n */\nexport function createAIMessageContent(\n type: string,\n data: any,\n status: 'pending' | 'streaming' | 'complete' | 'error' = 'complete',\n strategy: 'append' | 'merge' = 'append',\n ext?: any,\n): any {\n const content: any = {\n type,\n data,\n status,\n strategy,\n };\n\n if (ext) {\n content.ext = ext;\n }\n\n return content;\n}\n\n/**\n * 创建 reasoning 类型的 AIMessageContent\n * @param data reasoning 数据\n * @param status 状态\n * @param strategy 策略\n * @param collapsed 是否折叠\n * @returns reasoning 类型的 AIMessageContent\n */\nexport function createReasoningContent(\n data: any[],\n status: 'streaming' | 'complete' = 'streaming',\n strategy: 'append' | 'merge' = 'append',\n collapsed = false,\n): any {\n return createAIMessageContent('reasoning', data, status, strategy, { collapsed });\n}\n\n/**\n * 创建 thinking 类型的 AIMessageContent\n * @param data thinking 数据\n * @param status 状态\n * @param strategy 策略\n * @param collapsed 是否折叠\n * @returns thinking 类型的 AIMessageContent\n */\nexport function createThinkingContent(\n data: any,\n status: 'streaming' | 'complete' = 'streaming',\n strategy: 'append' | 'merge' = 'append',\n collapsed = false,\n): any {\n return createAIMessageContent('thinking', data, status, strategy, { collapsed });\n}\n\n/**\n * 创建 toolcall 类型的 AIMessageContent\n * @param toolCall 工具调用数据\n * @param status 状态\n * @param strategy 策略(可选)\n * @returns toolcall 类型的 AIMessageContent\n *\n * type 格式: toolcall-${toolCallName}-${toolCallId}\n * - toolCallName: 用于查找对应的渲染组件\n * - toolCallId: 用于区分同名工具的不同调用实例,支持并行工具调用\n */\nexport function createToolCallContent(\n toolCall: any,\n status: 'pending' | 'streaming' | 'complete' = 'pending',\n strategy?: 'append' | 'merge',\n): any {\n // 根据 toolCallName 和 toolCallId 生成唯一的 type\n // 这样同名工具的不同调用实例会有不同的 type,支持并行工具调用场景\n const type = `toolcall-${toolCall.toolCallName}-${toolCall.toolCallId}`;\n\n // 如果没有指定 strategy,默认使用 'append'\n const finalStrategy = strategy || 'append';\n\n return createAIMessageContent(type, toolCall, status, finalStrategy);\n}\n\n/**\n * 创建 activity 类型的 AIMessageContent\n * @param activityType 活动类型\n * @param content 活动内容\n * @param status 状态\n * @param strategy 策略\n * @param deltaInfo 增量信息(可选,用于 A2UI 等场景的增量处理)\n * @returns activity 类型的 AIMessageContent\n *\n * type 格式: activity-${activityType}\n * - activityType: 用于查找对应的渲染组件和区分不同类型的 Activity\n * - 支持并行多个不同类型的 Activity\n */\nexport function createActivityContent(\n activityType: string,\n content: Record<string, any>,\n status: 'streaming' | 'complete' = 'complete',\n strategy: 'append' | 'merge' = 'append',\n deltaInfo?: { fromIndex: number; toIndex: number },\n): any {\n // 使用 activity-${activityType} 格式,支持并行不同类型的 Activity\n const type = `activity-${activityType}`;\n\n const ext = deltaInfo ? { deltaInfo } : undefined;\n\n return createAIMessageContent(\n type,\n {\n activityType,\n content,\n },\n status,\n strategy,\n ext,\n );\n}\n\n/**\n * 创建 markdown 类型的 AIMessageContent\n * @param data markdown 数据\n * @param status 状态\n * @param strategy 策略\n * @param role 消息角色(可选,默认 assistant),通过 ext.role 传递给业务层\n * @returns markdown 类型的 AIMessageContent\n */\nexport function createMarkdownContent(\n data: string,\n status: 'streaming' | 'complete' = 'complete',\n strategy: 'append' | 'merge' = 'append',\n role?: 'assistant' | 'system',\n): any {\n const notAssistant = role && role !== 'assistant';\n // TODO: 这里对于textchunk中设置了role的情况delta没做合并(暂时type=`${role}-text`业务自行处理)\n const content = createAIMessageContent(notAssistant ? `${role}-text` : 'markdown', data, status, strategy);\n if (notAssistant) {\n content.ext = { ...content.ext, role };\n }\n return content;\n}\n\n/**\n * 创建 suggestion 类型的 AIMessageContent\n * @param data suggestion 数据\n * @returns suggestion 类型的 AIMessageContent\n */\nexport function createSuggestionContent(data: any[]): any {\n return createAIMessageContent('suggestion', data, 'complete', 'append');\n}\n\n/**\n * 创建 text 类型的 AIMessageContent\n * @param data 文本数据\n * @param status 状态\n * @returns text 类型的 AIMessageContent\n */\nexport function createTextContent(data: string, status: 'streaming' | 'complete' | 'error' = 'complete'): any {\n return createAIMessageContent('text', data, status, 'append');\n}\n\n/**\n * 更新工具调用对象\n * @param existingToolCall 现有工具调用\n * @param updates 更新内容\n * @returns 更新后的工具调用\n */\nexport function updateToolCall(existingToolCall: any, updates: Partial<any>): any {\n return {\n ...existingToolCall,\n ...updates,\n };\n}\n\n/**\n * 处理 suggestion 工具调用的特殊逻辑\n * @param toolCall 工具调用对象\n * @returns suggestion 内容或 null\n */\nexport function handleSuggestionToolCall(toolCall: any): any | null {\n if (toolCall.toolCallName === 'suggestion') {\n try {\n const suggestionData = JSON.parse(toolCall.result || '{}') || [];\n return createSuggestionContent(suggestionData);\n } catch (error) {\n console.warn('Failed to parse suggestion result:', error);\n return null;\n }\n }\n return null;\n}\n\n/**\n * 更新 reasoning 上下文中的内容\n * @param reasoningData 当前 reasoning 数据\n * @param index 要更新的索引\n * @param newContent 新内容\n * @returns 更新后的 reasoning 数据\n */\nexport function updateReasoningData(reasoningData: any[], index: number, newContent: any): any[] {\n const updatedData = [...reasoningData];\n if (index >= 0 && index < updatedData.length) {\n updatedData[index] = newContent;\n }\n return updatedData;\n}\n\n/**\n * 向 reasoning 数据中添加新内容\n * @param reasoningData 当前 reasoning 数据\n * @param newContent 新内容\n * @returns 更新后的 reasoning 数据和新内容的索引\n */\nexport function addToReasoningData(reasoningData: any[], newContent: any): { data: any[]; index: number } {\n const updatedData = [...reasoningData, newContent];\n return {\n data: updatedData,\n index: updatedData.length - 1,\n };\n}\n\n/**\n * 解析 reasoningContent 字段\n * @param reasoningContent 原始 reasoningContent 数据\n * @returns 解析后的数据和类型信息\n */\nexport function parseReasoningContent(reasoningContent: any): {\n type: 'reasoning' | 'thinking';\n data: any;\n} {\n let parsedContent;\n\n if (typeof reasoningContent === 'string') {\n try {\n parsedContent = JSON.parse(reasoningContent);\n } catch {\n // 解析失败时,作为简单文本处理\n return {\n type: 'thinking',\n data: { text: reasoningContent, title: '思考完成' },\n };\n }\n } else {\n parsedContent = reasoningContent;\n }\n\n // 判断解析后的数据类型\n if (Array.isArray(parsedContent)) {\n return {\n type: 'reasoning',\n data: parsedContent,\n };\n }\n return {\n type: 'thinking',\n data: parsedContent,\n };\n}\n\n/**\n * 转换 reasoning 消息数组为 AIMessageContent 数组\n * @param reasoningMessages reasoning 消息数组\n * @returns 转换后的 AIMessageContent 数组\n */\nexport function convertReasoningMessages(reasoningMessages: any[]): any[] {\n const reasoningData: any[] = [];\n const toolCallMap = new Map<string, any>();\n\n // 第一遍:收集工具调用结果\n reasoningMessages.forEach((msg) => {\n if (msg.role === 'tool') {\n toolCallMap.set(msg.toolCallId, {\n toolCallId: msg.toolCallId,\n result: msg.content,\n });\n }\n });\n\n // 第二遍:处理消息内容\n reasoningMessages.forEach((msg) => {\n if (msg.role === 'assistant') {\n // 处理嵌套的 reasoningContent(文本思考)\n if (msg.reasoningContent && typeof msg.reasoningContent === 'string') {\n reasoningData.push({\n type: 'text',\n data: msg.reasoningContent,\n status: 'complete',\n });\n }\n\n // 处理普通内容\n if (msg.content) {\n reasoningData.push({\n type: 'text', // 在 reasoning 内部,通常用 text 而不是 markdown\n data: msg.content,\n status: 'complete',\n });\n }\n\n // 处理工具调用\n if (msg.toolCalls && msg.toolCalls.length > 0) {\n msg.toolCalls.forEach((toolCall: any) => {\n const toolResult = toolCallMap.get(toolCall.id)?.result || '';\n const toolCallData = {\n toolCallId: toolCall.id,\n toolCallName: toolCall.function.name,\n args: toolCall.function.arguments,\n result: toolResult,\n };\n reasoningData.push({\n // 使用 toolCallName-toolCallId 格式,与 createToolCallContent 保持一致\n type: `toolcall-${toolCall.function.name}-${toolCall.id}`,\n data: toolCallData,\n status: 'complete',\n });\n });\n }\n }\n });\n\n return reasoningData;\n}\n\n/**\n * 处理 reasoningContent 并创建对应的 AIMessageContent\n * @param reasoningContent 原始 reasoningContent 数据\n * @returns 创建的 AIMessageContent 或 null\n */\nexport function processReasoningContent(reasoningContent: any): any | null {\n if (!reasoningContent) return null;\n\n const { type, data } = parseReasoningContent(reasoningContent);\n\n if (type === 'reasoning') {\n const reasoningData = convertReasoningMessages(data);\n return {\n type: 'reasoning',\n data: reasoningData,\n status: 'complete',\n strategy: 'append',\n ext: { collapsed: true },\n };\n }\n return {\n type: 'thinking',\n status: 'complete',\n data,\n };\n}\n\n/**\n * 处理工具调用并创建对应的 AIMessageContent 数组\n * @param toolCalls 工具调用数组\n * @param toolCallMap 工具调用结果映射\n * @returns 创建的 AIMessageContent 数组\n */\nexport function processToolCalls(toolCalls: any[], toolCallMap: Map<string, any>): any[] {\n return toolCalls.map((toolCall) => {\n const toolResult = toolCallMap.get(toolCall.id)?.result || '';\n\n // 建议类型的toolcall特殊解析\n if (toolCall.function.name === 'suggestion') {\n return {\n type: 'suggestion' as const,\n data: parseSSEData(toolResult) || [],\n };\n }\n\n const toolCallData = {\n toolCallId: toolCall.id,\n toolCallName: toolCall.function.name,\n args: toolCall.function.arguments,\n result: toolResult,\n };\n\n return {\n // 使用 toolCallName-toolCallId 格式,支持并行工具调用\n type: `toolcall-${toolCall.function.name}-${toolCall.id}` as const,\n data: toolCallData,\n };\n });\n}\n\n/**\n * 构建工具调用结果映射\n * @param historyMessages 历史消息数组\n * @returns 工具调用结果映射\n */\nexport function buildToolCallMap(historyMessages: any[]): Map<string, any> {\n const toolCallMap = new Map<string, any>();\n\n historyMessages.forEach((msg) => {\n if (msg.role === 'tool') {\n toolCallMap.set(msg.toolCallId, {\n toolCallId: msg.toolCallId,\n result: msg.content,\n });\n }\n });\n\n return toolCallMap;\n}\n"],"names":["mergeStringContent","existing","delta","existingObj","JSON","parse","deltaObj","_typeof","stringify","_objectSpread","Array","isArray","concat","_toConsumableArray","error","extractStateKeyFromDelta","event","type","length","firstDelta","path","pathParts","split","handleMessagesSnapshot","messages","flatMap","msg","role","content","map","data","status","handleCustomEvent","name","value","parseSSEData","console","warn","isValidEvent","generateConnectionId","prefix","timestamp","Date","now","Math","random","toString","substr","formatLogMessage","level","message","context","toISOString","contextStr","toUpperCase","createAIMessageContent","strategy","arguments","undefined","ext","createReasoningContent","collapsed","createThinkingContent","createToolCallContent","toolCall","toolCallName","toolCallId","finalStrategy","createActivityContent","activityType","deltaInfo","createMarkdownContent","notAssistant","createSuggestionContent","createTextContent","updateToolCall","existingToolCall","updates","handleSuggestionToolCall","suggestionData","result","updateReasoningData","reasoningData","index","newContent","updatedData","addToReasoningData","parseReasoningContent","reasoningContent","parsedContent","_unused","text","title","convertReasoningMessages","reasoningMessages","toolCallMap","Map","forEach","set","push","toolCalls","_toolCallMap$get","toolResult","get","id","toolCallData","args","processReasoningContent","_parseReasoningConten","processToolCalls","_toolCallMap$get2","buildToolCallMap","historyMessages"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"utils.js","sources":["../../../../../../pro-components/chat/chat-engine/core/adapters/agui/utils.ts"],"sourcesContent":["/* eslint-disable default-param-last */\n/**\n * AGUI适配器工具函数\n * 包含与类无关的纯函数,用于处理AGUI协议相关逻辑\n */\n\n/**\n * 合并字符串内容,处理JSON和普通字符串\n * @param existing 现有内容\n * @param delta 增量内容\n * @returns 合并后的内容\n */\nexport function mergeStringContent(existing: string | undefined, delta: string): string {\n if (!existing) return delta;\n\n // 尝试解析为JSON,如果是有效的JSON则合并\n try {\n const existingObj = JSON.parse(existing);\n const deltaObj = JSON.parse(delta);\n\n // 如果是对象,进行深度合并\n if (typeof existingObj === 'object' && typeof deltaObj === 'object') {\n return JSON.stringify({ ...existingObj, ...deltaObj });\n }\n\n // 如果是数组,进行数组合并\n if (Array.isArray(existingObj) && Array.isArray(deltaObj)) {\n return JSON.stringify([...existingObj, ...deltaObj]);\n }\n\n // 其他情况,直接替换\n return delta;\n } catch (error) {\n // 不是有效的JSON,按普通字符串处理\n return existing + delta;\n }\n}\n\n/**\n * 从delta事件中提取stateKey\n * @param event delta事件对象\n * @returns stateKey或null\n */\nexport function extractStateKeyFromDelta(event: { type: string; delta?: any[] }): string | null {\n if (event.type === 'STATE_DELTA' && event.delta && event.delta.length > 0) {\n // 从第一个delta操作的路径中提取stateKey\n const firstDelta = event.delta[0];\n if (firstDelta && firstDelta.path) {\n const pathParts = firstDelta.path.split('/');\n return pathParts.length > 1 ? pathParts[1] : null;\n }\n }\n return null;\n}\n\n/**\n * 处理一组 AG-UI 标准格式的消息,转换为前端内部的 AIMessageContent[] 格式\n *\n * 这是 convertHistoryMessages 和 handleMessagesSnapshot 的共享核心逻辑。\n * 处理顺序(保持原始顺序):\n * 1. assistant 的 reasoningContent(思考过程)\n * 2. assistant 的 content(文本回复)\n * 3. assistant 的 toolCalls(工具调用,关联 tool 消息的结果)\n * 4. activity 消息(活动/状态展示)\n *\n * @param messages 一组 AG-UI 标准格式的消息(assistant、tool、activity 等)\n * @param toolCallMap 工具调用结果映射(通过 buildToolCallMap 构建)\n * @returns 转换后的 AIMessageContent 数组\n */\nexport function processMessageGroup(messages: any[], toolCallMap: Map<string, any>): any[] {\n const allContent: any[] = [];\n\n messages.forEach((msg: any) => {\n if (msg.role === 'assistant') {\n // 处理 reasoningContent(支持 reasoning 和 thinking 两种类型)\n if (msg.reasoningContent) {\n const reasoningContentResult = processReasoningContent(msg.reasoningContent);\n if (reasoningContentResult) {\n allContent.push(reasoningContentResult);\n }\n }\n\n // 处理普通文本内容\n if (msg.content) {\n allContent.push({\n type: 'markdown',\n data: msg.content,\n });\n }\n\n // 处理工具调用内容\n if (msg.toolCalls && msg.toolCalls.length > 0) {\n const toolCallContents = processToolCalls(msg.toolCalls, toolCallMap);\n allContent.push(...toolCallContents);\n }\n } else if (msg.role === 'activity') {\n // 检查是否是存储为 Activity 的 CUSTOM 事件\n if (msg.activityType === 'CUSTOM') {\n const customContent: any = {\n type: 'custom',\n data: {\n name: msg.content?.name || '',\n value: msg.content?.value,\n },\n status: 'complete',\n };\n allContent.push(customContent);\n } else {\n // 普通 Activity 处理\n allContent.push({\n type: `activity-${msg.activityType}`,\n data: {\n activityType: msg.activityType,\n content: msg.content,\n },\n status: 'complete',\n });\n }\n }\n });\n\n return allContent;\n}\n\n/**\n * 处理消息快照\n *\n * 支持两种场景:\n * 1. 正常流中收到 MESSAGES_SNAPSHOT(如初始化同步)\n * 2. 断点恢复场景:后端推送已产生内容的快照,前端一次性恢复\n *\n * MESSAGES_SNAPSHOT 的 messages 遵循 AG-UI 协议标准格式(AGUIMessage[]),\n * 和历史消息接口返回的格式一致。直接复用 processMessageGroup 进行转换。\n *\n * @param messages 消息数组(来自 MESSAGES_SNAPSHOT 事件的 messages 字段,AG-UI 标准格式)\n * @returns 处理后的消息内容数组,带 _isSnapshot 标记用于区分快照 vs 增量\n */\nexport function handleMessagesSnapshot(messages: any[]): any[] {\n if (!messages || messages.length === 0) return [];\n\n const toolCallMap = buildToolCallMap(messages);\n const result = processMessageGroup(messages, toolCallMap);\n\n // 标记为快照结果,让上层使用 replaceContent 语义\n if (result.length > 0) {\n (result as any)._isSnapshot = true;\n }\n\n return result;\n}\n\n/**\n * 处理自定义事件\n * 直接将 CUSTOM 事件转换为通用格式,由业务层自行处理\n * @param event 自定义事件对象\n * @returns 处理结果\n */\nexport function handleCustomEvent(event: any): any {\n if (event.name === 'suggestion') {\n return {\n type: 'suggestion',\n data: event.value || [],\n status: 'complete',\n };\n }\n return {\n type: 'custom',\n data: {\n name: event.name,\n value: event.value,\n },\n status: 'complete',\n };\n}\n\n\n/**\n * 解析SSE数据\n * @param data SSE数据,可能是字符串或已解析的对象\n * @returns 解析后的事件对象或null\n */\nexport function parseSSEData(data: any): any {\n if (typeof data === 'string') {\n try {\n return JSON.parse(data);\n } catch (error) {\n console.warn('Failed to parse SSE data:', error);\n return null;\n }\n }\n return data;\n}\n\n/**\n * 验证事件对象\n * @param event 事件对象\n * @returns 是否为有效事件\n */\nexport function isValidEvent(event: any): boolean {\n return event && typeof event === 'object' && event.type;\n}\n\n/**\n * 生成连接ID\n * @param prefix 前缀\n * @returns 连接ID\n */\nexport function generateConnectionId(prefix = 'sse'): string {\n const timestamp = Date.now();\n return `${prefix}_${timestamp}_${Math.random().toString(36).substr(2, 9)}`;\n}\n\n/**\n * 格式化日志消息\n * @param level 日志级别\n * @param message 消息内容\n * @param context 上下文信息\n * @returns 格式化后的日志消息\n */\nexport function formatLogMessage(level: string, message: string, context?: any): string {\n const timestamp = new Date().toISOString();\n const contextStr = context ? ` [${JSON.stringify(context)}]` : '';\n return `[${timestamp}] [${level.toUpperCase()}] ${message}${contextStr}`;\n}\n\n/**\n * 创建基础的 AIMessageContent 对象\n * @param type 内容类型\n * @param data 内容数据\n * @param status 状态\n * @param strategy 策略\n * @param ext 扩展属性\n * @returns AIMessageContent 对象\n */\nexport function createAIMessageContent(\n type: string,\n data: any,\n status: 'pending' | 'streaming' | 'complete' | 'error' = 'complete',\n strategy: 'append' | 'merge' = 'append',\n ext?: any,\n): any {\n const content: any = {\n type,\n data,\n status,\n strategy,\n };\n\n if (ext) {\n content.ext = ext;\n }\n\n return content;\n}\n\n/**\n * 创建 reasoning 类型的 AIMessageContent\n * @param data reasoning 数据\n * @param status 状态\n * @param strategy 策略\n * @param collapsed 是否折叠\n * @returns reasoning 类型的 AIMessageContent\n */\nexport function createReasoningContent(\n data: any[],\n status: 'streaming' | 'complete' = 'streaming',\n strategy: 'append' | 'merge' = 'append',\n collapsed = false,\n): any {\n return createAIMessageContent('reasoning', data, status, strategy, { collapsed });\n}\n\n/**\n * 创建 thinking 类型的 AIMessageContent\n * @param data thinking 数据\n * @param status 状态\n * @param strategy 策略\n * @param collapsed 是否折叠\n * @returns thinking 类型的 AIMessageContent\n */\nexport function createThinkingContent(\n data: any,\n status: 'streaming' | 'complete' = 'streaming',\n strategy: 'append' | 'merge' = 'append',\n collapsed = false,\n): any {\n return createAIMessageContent('thinking', data, status, strategy, { collapsed });\n}\n\n/**\n * 创建 toolcall 类型的 AIMessageContent\n * @param toolCall 工具调用数据\n * @param status 状态\n * @param strategy 策略(可选)\n * @returns toolcall 类型的 AIMessageContent\n *\n * type 格式: toolcall-${toolCallName}-${toolCallId}\n * - toolCallName: 用于查找对应的渲染组件\n * - toolCallId: 用于区分同名工具的不同调用实例,支持并行工具调用\n */\nexport function createToolCallContent(\n toolCall: any,\n status: 'pending' | 'streaming' | 'complete' = 'pending',\n strategy?: 'append' | 'merge',\n): any {\n // 根据 toolCallName 和 toolCallId 生成唯一的 type\n // 这样同名工具的不同调用实例会有不同的 type,支持并行工具调用场景\n const type = `toolcall-${toolCall.toolCallName}-${toolCall.toolCallId}`;\n\n // 如果没有指定 strategy,默认使用 'append'\n const finalStrategy = strategy || 'append';\n\n return createAIMessageContent(type, toolCall, status, finalStrategy);\n}\n\n/**\n * 创建 activity 类型的 AIMessageContent\n * @param activityType 活动类型\n * @param content 活动内容\n * @param status 状态\n * @param strategy 策略\n * @param deltaInfo 增量信息(可选,用于 A2UI 等场景的增量处理)\n * @returns activity 类型的 AIMessageContent\n *\n * type 格式: activity-${activityType}\n * - activityType: 用于查找对应的渲染组件和区分不同类型的 Activity\n * - 支持并行多个不同类型的 Activity\n */\nexport function createActivityContent(\n activityType: string,\n content: Record<string, any>,\n status: 'streaming' | 'complete' = 'complete',\n strategy: 'append' | 'merge' = 'append',\n deltaInfo?: { fromIndex: number; toIndex: number },\n): any {\n // 使用 activity-${activityType} 格式,支持并行不同类型的 Activity\n const type = `activity-${activityType}`;\n\n const ext = deltaInfo ? { deltaInfo } : undefined;\n\n return createAIMessageContent(\n type,\n {\n activityType,\n content,\n },\n status,\n strategy,\n ext,\n );\n}\n\n/**\n * 创建 markdown 类型的 AIMessageContent\n * @param data markdown 数据\n * @param status 状态\n * @param strategy 策略\n * @param role 消息角色(可选,默认 assistant),通过 ext.role 传递给业务层\n * @returns markdown 类型的 AIMessageContent\n */\nexport function createMarkdownContent(\n data: string,\n status: 'streaming' | 'complete' = 'complete',\n strategy: 'append' | 'merge' = 'append',\n role?: 'assistant' | 'system',\n): any {\n const notAssistant = role && role !== 'assistant';\n // TODO: 这里对于textchunk中设置了role的情况delta没做合并(暂时type=`${role}-text`业务自行处理)\n const content = createAIMessageContent(notAssistant ? `${role}-text` : 'markdown', data, status, strategy);\n if (notAssistant) {\n content.ext = { ...content.ext, role };\n }\n return content;\n}\n\n/**\n * 创建 suggestion 类型的 AIMessageContent\n * @param data suggestion 数据\n * @returns suggestion 类型的 AIMessageContent\n */\nexport function createSuggestionContent(data: any[]): any {\n return createAIMessageContent('suggestion', data, 'complete', 'append');\n}\n\n/**\n * 创建 text 类型的 AIMessageContent\n * @param data 文本数据\n * @param status 状态\n * @returns text 类型的 AIMessageContent\n */\nexport function createTextContent(data: string, status: 'streaming' | 'complete' | 'error' = 'complete'): any {\n return createAIMessageContent('text', data, status, 'append');\n}\n\n/**\n * 更新工具调用对象\n * @param existingToolCall 现有工具调用\n * @param updates 更新内容\n * @returns 更新后的工具调用\n */\nexport function updateToolCall(existingToolCall: any, updates: Partial<any>): any {\n return {\n ...existingToolCall,\n ...updates,\n };\n}\n\n/**\n * 处理 suggestion 工具调用的特殊逻辑\n * @param toolCall 工具调用对象\n * @returns suggestion 内容或 null\n */\nexport function handleSuggestionToolCall(toolCall: any): any | null {\n if (toolCall.toolCallName === 'suggestion') {\n try {\n const suggestionData = JSON.parse(toolCall.result || '{}') || [];\n return createSuggestionContent(suggestionData);\n } catch (error) {\n console.warn('Failed to parse suggestion result:', error);\n return null;\n }\n }\n return null;\n}\n\n/**\n * 更新 reasoning 上下文中的内容\n * @param reasoningData 当前 reasoning 数据\n * @param index 要更新的索引\n * @param newContent 新内容\n * @returns 更新后的 reasoning 数据\n */\nexport function updateReasoningData(reasoningData: any[], index: number, newContent: any): any[] {\n const updatedData = [...reasoningData];\n if (index >= 0 && index < updatedData.length) {\n updatedData[index] = newContent;\n }\n return updatedData;\n}\n\n/**\n * 向 reasoning 数据中添加新内容\n * @param reasoningData 当前 reasoning 数据\n * @param newContent 新内容\n * @returns 更新后的 reasoning 数据和新内容的索引\n */\nexport function addToReasoningData(reasoningData: any[], newContent: any): { data: any[]; index: number } {\n const updatedData = [...reasoningData, newContent];\n return {\n data: updatedData,\n index: updatedData.length - 1,\n };\n}\n\n/**\n * 解析 reasoningContent 字段\n * @param reasoningContent 原始 reasoningContent 数据\n * @returns 解析后的数据和类型信息\n */\nexport function parseReasoningContent(reasoningContent: any): {\n type: 'reasoning' | 'thinking';\n data: any;\n} {\n let parsedContent;\n\n if (typeof reasoningContent === 'string') {\n try {\n parsedContent = JSON.parse(reasoningContent);\n } catch {\n // 解析失败时,作为简单文本处理\n return {\n type: 'thinking',\n data: { text: reasoningContent, title: '思考完成' },\n };\n }\n } else {\n parsedContent = reasoningContent;\n }\n\n // 判断解析后的数据类型\n if (Array.isArray(parsedContent)) {\n return {\n type: 'reasoning',\n data: parsedContent,\n };\n }\n return {\n type: 'thinking',\n data: parsedContent,\n };\n}\n\n/**\n * 转换 reasoning 消息数组为 AIMessageContent 数组\n * @param reasoningMessages reasoning 消息数组\n * @returns 转换后的 AIMessageContent 数组\n */\nexport function convertReasoningMessages(reasoningMessages: any[]): any[] {\n const reasoningData: any[] = [];\n const toolCallMap = new Map<string, any>();\n\n // 第一遍:收集工具调用结果\n reasoningMessages.forEach((msg) => {\n if (msg.role === 'tool') {\n toolCallMap.set(msg.toolCallId, {\n toolCallId: msg.toolCallId,\n result: msg.content,\n });\n }\n });\n\n // 第二遍:处理消息内容\n reasoningMessages.forEach((msg) => {\n if (msg.role === 'assistant') {\n // 处理嵌套的 reasoningContent(文本思考)\n if (msg.reasoningContent && typeof msg.reasoningContent === 'string') {\n reasoningData.push({\n type: 'text',\n data: msg.reasoningContent,\n status: 'complete',\n });\n }\n\n // 处理普通内容\n if (msg.content) {\n reasoningData.push({\n type: 'text', // 在 reasoning 内部,通常用 text 而不是 markdown\n data: msg.content,\n status: 'complete',\n });\n }\n\n // 处理工具调用\n if (msg.toolCalls && msg.toolCalls.length > 0) {\n msg.toolCalls.forEach((toolCall: any) => {\n const toolResult = toolCallMap.get(toolCall.id)?.result || '';\n const toolCallData = {\n toolCallId: toolCall.id,\n toolCallName: toolCall.function.name,\n args: toolCall.function.arguments,\n result: toolResult,\n };\n reasoningData.push({\n // 使用 toolCallName-toolCallId 格式,与 createToolCallContent 保持一致\n type: `toolcall-${toolCall.function.name}-${toolCall.id}`,\n data: toolCallData,\n status: 'complete',\n });\n });\n }\n }\n });\n\n return reasoningData;\n}\n\n/**\n * 处理 reasoningContent 并创建对应的 AIMessageContent\n * @param reasoningContent 原始 reasoningContent 数据\n * @returns 创建的 AIMessageContent 或 null\n */\nexport function processReasoningContent(reasoningContent: any): any | null {\n if (!reasoningContent) return null;\n\n const { type, data } = parseReasoningContent(reasoningContent);\n\n if (type === 'reasoning') {\n const reasoningData = convertReasoningMessages(data);\n return {\n type: 'reasoning',\n data: reasoningData,\n status: 'complete',\n strategy: 'append',\n ext: { collapsed: true },\n };\n }\n return {\n type: 'thinking',\n status: 'complete',\n data,\n };\n}\n\n/**\n * 处理工具调用并创建对应的 AIMessageContent 数组\n * @param toolCalls 工具调用数组\n * @param toolCallMap 工具调用结果映射\n * @returns 创建的 AIMessageContent 数组\n */\nexport function processToolCalls(toolCalls: any[], toolCallMap: Map<string, any>): any[] {\n return toolCalls.map((toolCall) => {\n const toolResult = toolCallMap.get(toolCall.id)?.result || '';\n\n // 建议类型的toolcall特殊解析\n if (toolCall.function.name === 'suggestion') {\n return {\n type: 'suggestion' as const,\n data: parseSSEData(toolResult) || [],\n };\n }\n\n const toolCallData = {\n toolCallId: toolCall.id,\n toolCallName: toolCall.function.name,\n args: toolCall.function.arguments,\n result: toolResult,\n };\n\n return {\n // 使用 toolCallName-toolCallId 格式,支持并行工具调用\n type: `toolcall-${toolCall.function.name}-${toolCall.id}` as const,\n data: toolCallData,\n };\n });\n}\n\n/**\n * 构建工具调用结果映射\n * @param historyMessages 历史消息数组\n * @returns 工具调用结果映射\n */\nexport function buildToolCallMap(historyMessages: any[]): Map<string, any> {\n const toolCallMap = new Map<string, any>();\n\n historyMessages.forEach((msg) => {\n if (msg.role === 'tool') {\n toolCallMap.set(msg.toolCallId, {\n toolCallId: msg.toolCallId,\n result: msg.content,\n });\n }\n });\n\n return toolCallMap;\n}\n"],"names":["mergeStringContent","existing","delta","existingObj","JSON","parse","deltaObj","_typeof","stringify","_objectSpread","Array","isArray","concat","_toConsumableArray","error","extractStateKeyFromDelta","event","type","length","firstDelta","path","pathParts","split","processMessageGroup","messages","toolCallMap","allContent","forEach","msg","role","reasoningContent","reasoningContentResult","processReasoningContent","push","content","data","toolCalls","toolCallContents","processToolCalls","apply","activityType","_msg$content","_msg$content2","customContent","name","value","status","handleMessagesSnapshot","buildToolCallMap","result","_isSnapshot","handleCustomEvent","parseSSEData","console","warn","isValidEvent","generateConnectionId","prefix","timestamp","Date","now","Math","random","toString","substr","formatLogMessage","level","message","context","toISOString","contextStr","toUpperCase","createAIMessageContent","strategy","arguments","undefined","ext","createReasoningContent","collapsed","createThinkingContent","createToolCallContent","toolCall","toolCallName","toolCallId","finalStrategy","createActivityContent","deltaInfo","createMarkdownContent","notAssistant","createSuggestionContent","createTextContent","updateToolCall","existingToolCall","updates","handleSuggestionToolCall","suggestionData","updateReasoningData","reasoningData","index","newContent","updatedData","addToReasoningData","parseReasoningContent","parsedContent","_unused","text","title","convertReasoningMessages","reasoningMessages","Map","set","_toolCallMap$get","toolResult","get","id","toolCallData","args","_parseReasoningConten","map","_toolCallMap$get2","historyMessages"],"mappings":"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"}
|
|
@@ -16,6 +16,7 @@ export { SurfaceStateManager, surfaceStateManager } from './json-render/SurfaceS
|
|
|
16
16
|
export { applyA2UIDataUpdate, applyA2UIUpdates, convertA2UIMessagesToJsonRender } from './json-render/a2ui-to-jsonrender.js';
|
|
17
17
|
export { OpenClawEventMapper } from './openclaw/event-mapper.js';
|
|
18
18
|
export { OpenClawRPCHandler, RPCError } from './openclaw/rpc-handler.js';
|
|
19
|
+
export { convertOpenClawHistory, convertOpenClawHistoryResponse } from './openclaw/history-converter.js';
|
|
19
20
|
export { DEFAULT_OPENCLAW_CONFIG, mergeOpenClawConfig } from './openclaw/types/config.js';
|
|
20
21
|
export { AgentDataType, AgentStreamType, ChatEventState, OpenClawConnectionState, OpenClawEventType, OpenClawMethod } from './openclaw/types/events.js';
|
|
21
22
|
export { isEventFrame, isRequestFrame, isResponseFrame } from './openclaw/types/messages.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -117,37 +117,59 @@ export declare class OpenClawEventMapper {
|
|
|
117
117
|
/**
|
|
118
118
|
* 处理 tool stream
|
|
119
119
|
*
|
|
120
|
-
* OpenClaw tool stream data
|
|
120
|
+
* OpenClaw 实际返回的 tool stream data 结构(经过对真实 Gateway 数据抓取确认):
|
|
121
|
+
*
|
|
122
|
+
* phase: 'start' (开始,包含完整 args):
|
|
123
|
+
* {
|
|
124
|
+
* phase: 'start',
|
|
125
|
+
* name: 'read', // 工具名称(字段名是 name,不是 toolCallName)
|
|
126
|
+
* toolCallId: 'read:0', // 工具调用 ID
|
|
127
|
+
* args: { file_path: '...' }, // 完整参数对象(非 JSON 字符串,start 阶段就包含全部 args)
|
|
128
|
+
* }
|
|
129
|
+
*
|
|
130
|
+
* phase: 'result' (结果):
|
|
121
131
|
* {
|
|
122
|
-
*
|
|
123
|
-
*
|
|
124
|
-
*
|
|
125
|
-
*
|
|
126
|
-
*
|
|
127
|
-
* args?: string, // 全量 args(snapshot 模式)
|
|
128
|
-
* result?: string, // 全量 result(snapshot 模式)
|
|
129
|
-
* parentMessageId?: string, // 父消息 ID
|
|
132
|
+
* phase: 'result',
|
|
133
|
+
* name: 'read',
|
|
134
|
+
* toolCallId: 'read:0',
|
|
135
|
+
* meta: 'from ~/.openclaw/workspace/memory/2026-03-11.md', // 结果元信息
|
|
136
|
+
* isError: true, // 是否出错
|
|
130
137
|
* }
|
|
138
|
+
*
|
|
139
|
+
* 注意:
|
|
140
|
+
* 1. 只有 start 和 result 两个 phase(没有 args 和 end 阶段)
|
|
141
|
+
* 2. 字段名是 name 不是 toolCallName
|
|
142
|
+
* 3. args 在 start 阶段就是完整对象,不需要增量拼接
|
|
143
|
+
* 4. result 的具体内容通过 toolResult 角色的消息传递(在 chat final 中),
|
|
144
|
+
* tool stream 的 result phase 只包含 meta 和 isError
|
|
131
145
|
*/
|
|
132
146
|
private handleToolStream;
|
|
133
147
|
/**
|
|
134
|
-
*
|
|
148
|
+
* 处理工具调用开始(phase: 'start')
|
|
149
|
+
*
|
|
150
|
+
* OpenClaw 实际行为:start 阶段就包含完整的 args 对象(不是 JSON 字符串)
|
|
151
|
+
* 因此直接序列化 args 并创建 toolcall 内容
|
|
135
152
|
*/
|
|
136
153
|
private handleToolCallStart;
|
|
137
154
|
/**
|
|
138
|
-
*
|
|
155
|
+
* 处理工具调用参数增量(兼容 args 增量阶段)
|
|
139
156
|
*/
|
|
140
157
|
private handleToolCallArgs;
|
|
141
158
|
/**
|
|
142
|
-
*
|
|
159
|
+
* 处理工具调用结果(phase: 'result')
|
|
160
|
+
*
|
|
161
|
+
* OpenClaw 实际行为:
|
|
162
|
+
* - result phase 的 data 包含 meta(描述性信息)和 isError(是否出错)
|
|
163
|
+
* - 工具调用的具体结果文本通过 chat final 中的 toolResult 角色消息传递
|
|
164
|
+
* - 因此此处不一定有 content/result 文本,但应标记 toolcall 为 complete
|
|
143
165
|
*/
|
|
144
166
|
private handleToolCallResult;
|
|
145
167
|
/**
|
|
146
|
-
*
|
|
168
|
+
* 处理工具调用结束(兼容 end 阶段)
|
|
147
169
|
*/
|
|
148
170
|
private handleToolCallEnd;
|
|
149
171
|
/**
|
|
150
|
-
* 兜底处理工具调用数据(无 state 字段时)
|
|
172
|
+
* 兜底处理工具调用数据(无 phase/state 字段时)
|
|
151
173
|
*/
|
|
152
174
|
private handleToolCallGeneric;
|
|
153
175
|
/**
|
|
@@ -328,16 +328,16 @@ var OpenClawEventMapper = /*#__PURE__*/function () {
|
|
|
328
328
|
hasError: false
|
|
329
329
|
};
|
|
330
330
|
}
|
|
331
|
-
var
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
switch (
|
|
331
|
+
var phase = data.phase || data.state;
|
|
332
|
+
var toolCallId = data.toolCallId;
|
|
333
|
+
var toolCallName = data.name || data.toolCallName || "unknown";
|
|
334
|
+
switch (phase) {
|
|
335
335
|
case "start":
|
|
336
336
|
return this.handleToolCallStart(toolCallId, toolCallName, data);
|
|
337
|
-
case "args":
|
|
338
|
-
return this.handleToolCallArgs(toolCallId, data);
|
|
339
337
|
case "result":
|
|
340
338
|
return this.handleToolCallResult(toolCallId, data);
|
|
339
|
+
case "args":
|
|
340
|
+
return this.handleToolCallArgs(toolCallId, data);
|
|
341
341
|
case "end":
|
|
342
342
|
return this.handleToolCallEnd(toolCallId);
|
|
343
343
|
default:
|
|
@@ -347,15 +347,20 @@ var OpenClawEventMapper = /*#__PURE__*/function () {
|
|
|
347
347
|
}, {
|
|
348
348
|
key: "handleToolCallStart",
|
|
349
349
|
value: function handleToolCallStart(toolCallId, toolCallName, data) {
|
|
350
|
+
var rawArgs = data === null || data === void 0 ? void 0 : data.args;
|
|
351
|
+
var argsStr = "";
|
|
352
|
+
if (rawArgs !== void 0 && rawArgs !== null) {
|
|
353
|
+
argsStr = typeof rawArgs === "string" ? rawArgs : JSON.stringify(rawArgs);
|
|
354
|
+
}
|
|
350
355
|
this.toolCallMap[toolCallId] = {
|
|
351
356
|
eventType: "TOOL_CALL_START",
|
|
352
357
|
toolCallId: toolCallId,
|
|
353
358
|
toolCallName: toolCallName || "unknown",
|
|
354
359
|
parentMessageId: (data === null || data === void 0 ? void 0 : data.parentMessageId) || "",
|
|
355
|
-
args:
|
|
360
|
+
args: argsStr
|
|
356
361
|
};
|
|
357
362
|
return {
|
|
358
|
-
content: createToolCallContent(this.toolCallMap[toolCallId], "
|
|
363
|
+
content: createToolCallContent(this.toolCallMap[toolCallId], "streaming", "append"),
|
|
359
364
|
isFinal: false,
|
|
360
365
|
hasError: false,
|
|
361
366
|
runId: this.currentRunId || void 0
|
|
@@ -388,18 +393,28 @@ var OpenClawEventMapper = /*#__PURE__*/function () {
|
|
|
388
393
|
key: "handleToolCallResult",
|
|
389
394
|
value: function handleToolCallResult(toolCallId, data) {
|
|
390
395
|
if (!this.toolCallMap[toolCallId]) {
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
396
|
+
var toolCallName = (data === null || data === void 0 ? void 0 : data.name) || (data === null || data === void 0 ? void 0 : data.toolCallName) || "unknown";
|
|
397
|
+
this.toolCallMap[toolCallId] = {
|
|
398
|
+
eventType: "TOOL_CALL_START",
|
|
399
|
+
toolCallId: toolCallId,
|
|
400
|
+
toolCallName: toolCallName,
|
|
401
|
+
parentMessageId: "",
|
|
402
|
+
args: ""
|
|
395
403
|
};
|
|
396
404
|
}
|
|
397
|
-
var
|
|
398
|
-
var
|
|
399
|
-
|
|
405
|
+
var resultContent = (data === null || data === void 0 ? void 0 : data.content) || (data === null || data === void 0 ? void 0 : data.result) || "";
|
|
406
|
+
var meta = (data === null || data === void 0 ? void 0 : data.meta) || "";
|
|
407
|
+
var isError = data === null || data === void 0 ? void 0 : data.isError;
|
|
408
|
+
var resultStr = resultContent || meta || "";
|
|
409
|
+
this.toolCallMap[toolCallId] = updateToolCall(this.toolCallMap[toolCallId], _objectSpread({
|
|
400
410
|
eventType: "TOOL_CALL_RESULT",
|
|
401
|
-
result:
|
|
402
|
-
}
|
|
411
|
+
result: resultStr
|
|
412
|
+
}, isError !== void 0 ? {
|
|
413
|
+
ext: {
|
|
414
|
+
isError: isError
|
|
415
|
+
}
|
|
416
|
+
} : {}));
|
|
417
|
+
this.toolCallEnded.add(toolCallId);
|
|
403
418
|
var suggestionContent = handleSuggestionToolCall(this.toolCallMap[toolCallId]);
|
|
404
419
|
if (suggestionContent) {
|
|
405
420
|
return {
|
|
@@ -443,14 +458,14 @@ var OpenClawEventMapper = /*#__PURE__*/function () {
|
|
|
443
458
|
};
|
|
444
459
|
}
|
|
445
460
|
var toolCallId = data.toolCallId;
|
|
446
|
-
var toolCallName = data.toolCallName;
|
|
461
|
+
var toolCallName = data.name || data.toolCallName || "unknown";
|
|
447
462
|
if (!this.toolCallMap[toolCallId]) {
|
|
448
463
|
return this.handleToolCallStart(toolCallId, toolCallName, data);
|
|
449
464
|
}
|
|
450
465
|
if (data.delta || data.args) {
|
|
451
466
|
return this.handleToolCallArgs(toolCallId, data);
|
|
452
467
|
}
|
|
453
|
-
if (data.content || data.result) {
|
|
468
|
+
if (data.content || data.result || data.meta || data.isError !== void 0) {
|
|
454
469
|
return this.handleToolCallResult(toolCallId, data);
|
|
455
470
|
}
|
|
456
471
|
return {
|
|
@@ -469,7 +484,7 @@ var OpenClawEventMapper = /*#__PURE__*/function () {
|
|
|
469
484
|
hasError: false
|
|
470
485
|
};
|
|
471
486
|
}
|
|
472
|
-
return this.handleToolCallStart(data.toolCallId, data.toolCallName || "unknown", data);
|
|
487
|
+
return this.handleToolCallStart(data.toolCallId, data.name || data.toolCallName || "unknown", data);
|
|
473
488
|
}
|
|
474
489
|
}, {
|
|
475
490
|
key: "handleToolResult",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"event-mapper.js","sources":["../../../../../../pro-components/chat/chat-engine/core/adapters/openclaw/event-mapper.ts"],"sourcesContent":["/**\n * OpenClaw 事件映射器\n *\n * 将 OpenClaw 事件(chat、agent 等)转换为 ChatEngine 统一的 AIMessageContent 格式\n *\n * 支持的 stream 类型:\n * - assistant:文本流(标准文本对话)\n * - tool:工具调用流(start → args → result → end 四阶段)\n * - activity:Activity 组件流(snapshot / delta 增量合并)\n */\nimport type { AIMessageContent, TextContent, ToolCall } from '../../type';\nimport type { OpenClawEventFrame, ChatEventPayload, AgentEventPayload } from './types';\nimport { OpenClawEventType, ChatEventState, AgentStreamType, AgentDataType } from './types/events';\n\n// 从共享层引入通用工具函数\nimport {\n createToolCallContent,\n createActivityContent,\n mergeStringContent,\n updateToolCall,\n handleSuggestionToolCall,\n} from '../shared';\nimport { activityManager } from '../shared/activity-manager';\n\n/**\n * 事件映射结果\n */\nexport interface EventMapResult {\n /** 映射后的内容 */\n content: AIMessageContent | AIMessageContent[] | null;\n /** 是否是最终消息 */\n isFinal: boolean;\n /** 是否有错误 */\n hasError: boolean;\n /** 错误消息 */\n errorMessage?: string;\n /** 原始运行 ID */\n runId?: string;\n}\n\n/**\n * OpenClaw 事件映射器\n */\nexport class OpenClawEventMapper {\n /** 当前流式文本缓冲 */\n private textBuffer = '';\n\n /** 当前运行 ID */\n private currentRunId: string | null = null;\n\n /** 工具调用状态映射(toolCallId → ToolCall) */\n private toolCallMap: Record<string, ToolCall> = {};\n\n /** 已结束的工具调用 ID 集合 */\n private toolCallEnded: Set<string> = new Set();\n\n /**\n * 映射 OpenClaw 事件帧到 AIMessageContent\n */\n mapEvent(frame: OpenClawEventFrame): EventMapResult {\n const { event, payload } = frame;\n\n switch (event) {\n case OpenClawEventType.CHAT:\n return this.mapChatEvent(payload as ChatEventPayload);\n\n case OpenClawEventType.AGENT:\n return this.mapAgentEvent(payload as AgentEventPayload);\n\n case OpenClawEventType.CONNECT_CHALLENGE:\n // 握手事件,不产生消息内容\n return { content: null, isFinal: false, hasError: false };\n\n default:\n // 未知事件,尝试作为通用消息处理\n return this.mapGenericEvent(event, payload);\n }\n }\n\n // ==================== Chat 事件处理 ====================\n\n /**\n * 映射 chat 事件\n */\n private mapChatEvent(payload: ChatEventPayload): EventMapResult {\n const { state, message, runId, errorMessage } = payload;\n\n this.currentRunId = runId || this.currentRunId;\n\n switch (state) {\n case ChatEventState.DELTA:\n return this.handleChatDelta(message);\n\n case ChatEventState.FINAL:\n return this.handleChatFinal(message);\n\n case ChatEventState.ERROR:\n return {\n content: this.createErrorContent(errorMessage || 'Chat error'),\n isFinal: true,\n hasError: true,\n errorMessage,\n runId: this.currentRunId || undefined,\n };\n\n case ChatEventState.ABORTED:\n return {\n content: null,\n isFinal: true,\n hasError: false,\n runId: this.currentRunId || undefined,\n };\n\n default:\n return { content: null, isFinal: false, hasError: false };\n }\n }\n\n /**\n * 处理 chat delta(增量更新)\n *\n * chat 事件的 message.content 包含全量文本快照。\n * 需要计算与上次的增量,只返回新增部分,\n * 因为 ChatEngine 的 text handler 会拼接内容。\n */\n private handleChatDelta(message?: ChatEventPayload['message']): EventMapResult {\n if (!message?.content) {\n return { content: null, isFinal: false, hasError: false };\n }\n\n // 从 content 数组中提取文本(全量快照)\n const text = this.extractTextFromContent(message.content);\n if (text === null) {\n return { content: null, isFinal: false, hasError: false };\n }\n\n // 计算增量\n const prevBuffer = this.textBuffer;\n this.textBuffer = text;\n const delta = text.startsWith(prevBuffer) ? text.slice(prevBuffer.length) : text;\n\n if (!delta) {\n return { content: null, isFinal: false, hasError: false };\n }\n\n const textContent: TextContent = {\n type: 'text',\n data: delta,\n status: 'streaming',\n };\n\n return {\n content: textContent,\n isFinal: false,\n hasError: false,\n runId: this.currentRunId || undefined,\n };\n }\n\n /**\n * 处理 chat final(最终消息)\n *\n * 在实际 OpenClaw 流程中,chat final 在 agent 流式结束后发送。\n * 此时所有文本已通过 agent 事件累积完毕,\n * 所以 final 只需标记完成状态,不应再输出全量内容。\n */\n private handleChatFinal(_message?: ChatEventPayload['message']): EventMapResult {\n // 重置缓冲区\n this.textBuffer = '';\n\n const textContent: TextContent = {\n type: 'text',\n data: '',\n status: 'complete',\n };\n\n return {\n content: textContent,\n isFinal: true,\n hasError: false,\n runId: this.currentRunId || undefined,\n };\n }\n\n // ==================== Agent 事件处理(核心分发) ====================\n\n /**\n * 映射 agent 事件\n *\n * 根据 stream 字段分发到不同的处理器:\n * - assistant / 缺省:文本流\n * - tool:工具调用流\n * - activity:Activity 组件流\n */\n private mapAgentEvent(payload: AgentEventPayload): EventMapResult {\n const { stream, data, runId } = payload;\n\n this.currentRunId = runId || this.currentRunId;\n\n // 根据 stream 类型分发\n switch (stream) {\n case AgentStreamType.TOOL:\n return this.handleToolStream(data);\n\n case AgentStreamType.ACTIVITY:\n return this.handleActivityStream(data);\n\n case AgentStreamType.ASSISTANT:\n case undefined:\n default:\n // assistant 或未指定 stream 类型,走文本流处理\n return this.handleAssistantStream(payload);\n }\n }\n\n // ==================== Assistant Stream(文本流) ====================\n\n /**\n * 处理 assistant stream(文本流)\n *\n * 实际 OpenClaw agent 事件格式:\n * {\n * \"type\": \"event\",\n * \"event\": \"agent\",\n * \"payload\": {\n * \"runId\": \"xxx\",\n * \"stream\": \"assistant\",\n * \"data\": { \"text\": \"全量快照\", \"delta\": \"增量\" },\n * \"sessionKey\": \"agent:main:main\",\n * \"seq\": 12,\n * \"ts\": 1772612049089\n * }\n * }\n */\n private handleAssistantStream(payload: AgentEventPayload): EventMapResult {\n const { type, data } = payload;\n\n // 优先判断:如果 data 同时包含 text 和 delta,这是实际 OpenClaw 的标准 agent 流式格式\n if (data && typeof data.text === 'string' && typeof data.delta === 'string') {\n return this.handleAgentTextSnapshot(data);\n }\n\n // 根据显式的 type 字段处理(兼容可能的扩展格式)\n const eventType = type || data?.type;\n\n switch (eventType) {\n case AgentDataType.TEXT_SNAPSHOT:\n case 'snapshot':\n return this.handleAgentTextSnapshot(data);\n\n case AgentDataType.TEXT_DELTA:\n case 'delta':\n return this.handleAgentTextDelta(data);\n\n case AgentDataType.DONE:\n case 'done':\n case 'complete':\n case 'final':\n return this.handleAgentComplete();\n\n case AgentDataType.ERROR:\n case 'error':\n return {\n content: this.createErrorContent(data?.text || 'Agent error'),\n isFinal: true,\n hasError: true,\n errorMessage: data?.text,\n runId: this.currentRunId || undefined,\n };\n\n case AgentDataType.TOOL_CALL:\n return this.handleToolCall(data);\n\n case AgentDataType.TOOL_RESULT:\n return this.handleToolResult(data);\n\n default:\n // 尝试从 data 中提取文本(兜底处理)\n return this.handleAgentGenericData(data);\n }\n }\n\n /**\n * 处理 agent 文本快照\n *\n * 实际 OpenClaw agent 事件中,data.text 是全量快照,data.delta 是本次增量。\n * ChatEngine 的 text 合并策略是 existing + incoming(拼接),\n * 所以这里必须返回 delta(增量)而非全量快照,否则会导致内容重复。\n * textBuffer 保存全量快照,用于 final 阶段和状态恢复。\n */\n private handleAgentTextSnapshot(data?: AgentEventPayload['data']): EventMapResult {\n const text = data?.text || '';\n const delta = data?.delta;\n\n if (!text && !delta) {\n return { content: null, isFinal: false, hasError: false };\n }\n\n // 保存全量快照到 buffer\n this.textBuffer = text;\n\n // 优先使用 delta(增量),因为 ChatEngine 的 text handler 会拼接内容\n // 如果没有 delta(首条消息),则使用全量 text\n const contentData = (typeof delta === 'string') ? delta : text;\n\n if (!contentData) {\n return { content: null, isFinal: false, hasError: false };\n }\n\n const textContent: TextContent = {\n type: 'text',\n data: contentData,\n status: 'streaming',\n };\n\n return {\n content: textContent,\n isFinal: false,\n hasError: false,\n runId: this.currentRunId || undefined,\n };\n }\n\n /**\n * 处理 agent 文本增量\n */\n private handleAgentTextDelta(data?: AgentEventPayload['data']): EventMapResult {\n const delta = data?.delta || data?.text || '';\n if (!delta) {\n return { content: null, isFinal: false, hasError: false };\n }\n\n this.textBuffer += delta;\n\n const textContent: TextContent = {\n type: 'text',\n data: delta,\n status: 'streaming',\n };\n\n return {\n content: textContent,\n isFinal: false,\n hasError: false,\n runId: this.currentRunId || undefined,\n };\n }\n\n /**\n * 处理 agent 完成\n *\n * 完成时不再输出内容(之前的 delta 已经都输出了),\n * 只返回一个空 data + complete 状态来标记结束。\n */\n private handleAgentComplete(): EventMapResult {\n const textContent: TextContent = {\n type: 'text',\n data: '',\n status: 'complete',\n };\n\n this.textBuffer = '';\n\n return {\n content: textContent,\n isFinal: true,\n hasError: false,\n runId: this.currentRunId || undefined,\n };\n }\n\n /**\n * 处理通用 agent 数据\n *\n * 兜底处理逻辑:优先使用 delta 增量,避免全量快照被 ChatEngine 拼接导致重复\n */\n private handleAgentGenericData(data?: AgentEventPayload['data']): EventMapResult {\n const text = data?.text;\n const delta = data?.delta;\n\n // 优先使用 delta 增量\n if (typeof delta === 'string' && delta) {\n this.textBuffer += delta;\n return {\n content: {\n type: 'text',\n data: delta,\n status: 'streaming',\n } as TextContent,\n isFinal: false,\n hasError: false,\n runId: this.currentRunId || undefined,\n };\n }\n\n // 如果只有 text(全量快照),计算增量后返回\n if (typeof text === 'string' && text) {\n const prevBuffer = this.textBuffer;\n this.textBuffer = text;\n // 如果 text 以之前的 buffer 开头,只返回新增部分\n const contentData = text.startsWith(prevBuffer) ? text.slice(prevBuffer.length) : text;\n if (!contentData) {\n return { content: null, isFinal: false, hasError: false };\n }\n return {\n content: {\n type: 'text',\n data: contentData,\n status: 'streaming',\n } as TextContent,\n isFinal: false,\n hasError: false,\n runId: this.currentRunId || undefined,\n };\n }\n\n return { content: null, isFinal: false, hasError: false };\n }\n\n // ==================== Tool Stream(工具调用流) ====================\n\n /**\n * 处理 tool stream\n *\n * OpenClaw tool stream data 约定:\n * {\n * toolCallId: string, // 工具调用 ID\n * toolCallName: string, // 工具名称\n * state: 'start' | 'args' | 'result' | 'end',\n * delta?: string, // args 增量\n * content?: string, // result 内容\n * args?: string, // 全量 args(snapshot 模式)\n * result?: string, // 全量 result(snapshot 模式)\n * parentMessageId?: string, // 父消息 ID\n * }\n */\n private handleToolStream(data: AgentEventPayload['data']): EventMapResult {\n if (!data?.toolCallId) {\n return { content: null, isFinal: false, hasError: false };\n }\n\n const { toolCallId, toolCallName, state } = data;\n\n switch (state) {\n case 'start':\n return this.handleToolCallStart(toolCallId as string, toolCallName as string, data);\n case 'args':\n return this.handleToolCallArgs(toolCallId as string, data);\n case 'result':\n return this.handleToolCallResult(toolCallId as string, data);\n case 'end':\n return this.handleToolCallEnd(toolCallId as string);\n default:\n // 兜底:如果没有 state,尝试从 data 推断\n return this.handleToolCallGeneric(data);\n }\n }\n\n /**\n * 处理工具调用开始\n */\n private handleToolCallStart(toolCallId: string, toolCallName: string, data: AgentEventPayload['data']): EventMapResult {\n this.toolCallMap[toolCallId] = {\n eventType: 'TOOL_CALL_START',\n toolCallId,\n toolCallName: toolCallName || 'unknown',\n parentMessageId: (data?.parentMessageId as string) || '',\n args: (data?.args as string) || (data?.delta as string) || '',\n };\n\n return {\n content: createToolCallContent(this.toolCallMap[toolCallId], 'pending', 'append'),\n isFinal: false,\n hasError: false,\n runId: this.currentRunId || undefined,\n };\n }\n\n /**\n * 处理工具调用参数增量\n */\n private handleToolCallArgs(toolCallId: string, data: AgentEventPayload['data']): EventMapResult {\n if (!this.toolCallMap[toolCallId]) {\n return { content: null, isFinal: false, hasError: false };\n }\n\n const currentArgs = this.toolCallMap[toolCallId].args || '';\n const newArgs = mergeStringContent(currentArgs, (data?.delta as string) || '');\n\n this.toolCallMap[toolCallId] = updateToolCall(this.toolCallMap[toolCallId], {\n eventType: 'TOOL_CALL_ARGS',\n args: newArgs,\n });\n\n return {\n content: createToolCallContent(this.toolCallMap[toolCallId], 'streaming', 'merge'),\n isFinal: false,\n hasError: false,\n runId: this.currentRunId || undefined,\n };\n }\n\n /**\n * 处理工具调用结果\n */\n private handleToolCallResult(toolCallId: string, data: AgentEventPayload['data']): EventMapResult {\n if (!this.toolCallMap[toolCallId]) {\n return { content: null, isFinal: false, hasError: false };\n }\n\n const currentResult = this.toolCallMap[toolCallId].result || '';\n const newResult = mergeStringContent(\n currentResult,\n (data?.content as string) || (data?.result as string) || '',\n );\n\n this.toolCallMap[toolCallId] = updateToolCall(this.toolCallMap[toolCallId], {\n eventType: 'TOOL_CALL_RESULT',\n result: newResult,\n });\n\n // 复用 suggestion 特殊处理\n const suggestionContent = handleSuggestionToolCall(this.toolCallMap[toolCallId]);\n if (suggestionContent) {\n return {\n content: suggestionContent,\n isFinal: false,\n hasError: false,\n runId: this.currentRunId || undefined,\n };\n }\n\n return {\n content: createToolCallContent(this.toolCallMap[toolCallId], 'complete', 'merge'),\n isFinal: false,\n hasError: false,\n runId: this.currentRunId || undefined,\n };\n }\n\n /**\n * 处理工具调用结束\n */\n private handleToolCallEnd(toolCallId: string): EventMapResult {\n this.toolCallEnded.add(toolCallId);\n\n if (this.toolCallMap[toolCallId]) {\n this.toolCallMap[toolCallId] = {\n ...this.toolCallMap[toolCallId],\n eventType: 'TOOL_CALL_END',\n };\n }\n\n return {\n content: this.toolCallMap[toolCallId]\n ? createToolCallContent(this.toolCallMap[toolCallId], 'complete', 'merge')\n : null,\n isFinal: false,\n hasError: false,\n runId: this.currentRunId || undefined,\n };\n }\n\n /**\n * 兜底处理工具调用数据(无 state 字段时)\n */\n private handleToolCallGeneric(data: AgentEventPayload['data']): EventMapResult {\n if (!data?.toolCallId) {\n return { content: null, isFinal: false, hasError: false };\n }\n\n const toolCallId = data.toolCallId as string;\n const toolCallName = data.toolCallName as string;\n\n // 如果还没有这个 toolCall 的记录,当作 start 处理\n if (!this.toolCallMap[toolCallId]) {\n return this.handleToolCallStart(toolCallId, toolCallName, data);\n }\n\n // 如果有 delta/args,当作 args 更新\n if (data.delta || data.args) {\n return this.handleToolCallArgs(toolCallId, data);\n }\n\n // 如果有 content/result,当作 result 更新\n if (data.content || data.result) {\n return this.handleToolCallResult(toolCallId, data);\n }\n\n return { content: null, isFinal: false, hasError: false };\n }\n\n // ==================== 旧版 Tool 处理(兼容 assistant stream 中的 type 字段) ====================\n\n /**\n * 处理旧版工具调用(通过 type 字段而非 stream=tool)\n */\n private handleToolCall(data?: AgentEventPayload['data']): EventMapResult {\n if (!data?.toolCallId) {\n return { content: null, isFinal: false, hasError: false };\n }\n return this.handleToolCallStart(\n data.toolCallId as string,\n (data.toolCallName as string) || 'unknown',\n data,\n );\n }\n\n /**\n * 处理旧版工具结果(通过 type 字段而非 stream=tool)\n */\n private handleToolResult(data?: AgentEventPayload['data']): EventMapResult {\n if (!data?.toolCallId) {\n return { content: null, isFinal: false, hasError: false };\n }\n return this.handleToolCallResult(data.toolCallId as string, data);\n }\n\n // ==================== Activity Stream ====================\n\n /**\n * 处理 activity stream\n *\n * 直接复用 activityManager 的 snapshot/delta 处理逻辑。\n *\n * OpenClaw activity stream data 约定:\n * {\n * activityType: string, // Activity 组件类型\n * state: 'snapshot' | 'delta', // 全量 or 增量\n * content?: Record<string, any>, // snapshot 全量数据\n * patch?: any[], // delta JSON Patch 数组\n * messageId?: string, // 关联消息 ID\n * }\n */\n private handleActivityStream(data: AgentEventPayload['data']): EventMapResult {\n if (!data?.activityType) {\n return { content: null, isFinal: false, hasError: false };\n }\n\n const activityType = data.activityType as string;\n const state = data.state as string;\n\n // 将 OpenClaw 的 state 映射为 AG-UI 兼容的事件 type\n const eventType = state === 'snapshot' ? 'ACTIVITY_SNAPSHOT' : 'ACTIVITY_DELTA';\n\n // 委托给 activityManager 处理(复用 AG-UI 的 snapshot/delta 合并逻辑)\n const activityData = activityManager.handleActivityEvent({\n type: eventType,\n activityType,\n content: data.content as Record<string, any>,\n patch: data.patch as any[],\n messageId: data.messageId as string,\n });\n\n if (!activityData) {\n return { content: null, isFinal: false, hasError: false };\n }\n\n // 判断是否需要 append(新建内容块)\n const isSnapshot = state === 'snapshot';\n // 首次 delta 时 activityManager 内部已经处理了初始化\n const existingActivity = activityManager.getActivity(activityType);\n const isFirstEvent = isSnapshot || (!existingActivity && state === 'delta');\n\n return {\n content: createActivityContent(\n activityType,\n activityData.content,\n 'streaming',\n isFirstEvent ? 'append' : 'merge',\n activityData.deltaInfo,\n ),\n isFinal: false,\n hasError: false,\n runId: this.currentRunId || undefined,\n };\n }\n\n // ==================== 通用事件处理 ====================\n\n /**\n * 映射通用事件\n */\n private mapGenericEvent(_event: string, payload: unknown): EventMapResult {\n // 尝试从 payload 中提取有用信息\n if (typeof payload === 'object' && payload !== null) {\n const p = payload as Record<string, unknown>;\n const text = p.text || p.content || p.message;\n if (typeof text === 'string') {\n return {\n content: {\n type: 'text',\n data: text,\n status: 'streaming',\n } as TextContent,\n isFinal: false,\n hasError: false,\n };\n }\n }\n\n return { content: null, isFinal: false, hasError: false };\n }\n\n // ==================== 工具方法 ====================\n\n /**\n * 从 content 数组中提取文本\n */\n private extractTextFromContent(content: Array<{ type: string; text?: string }>): string | null {\n if (!Array.isArray(content)) {\n return null;\n }\n\n return content\n .filter((c) => c?.type === 'text' && c?.text)\n .map((c) => c.text!)\n .join('');\n }\n\n /**\n * 创建错误内容\n */\n private createErrorContent(message: string): TextContent {\n return {\n type: 'text',\n data: `Error: ${message}`,\n status: 'error',\n };\n }\n\n /**\n * 获取当前文本缓冲\n */\n getTextBuffer(): string {\n return this.textBuffer;\n }\n\n /**\n * 获取当前运行 ID\n */\n getCurrentRunId(): string | null {\n return this.currentRunId;\n }\n\n /**\n * 获取指定工具调用\n */\n getToolCall(toolCallId: string): ToolCall | undefined {\n return this.toolCallMap[toolCallId];\n }\n\n /**\n * 获取所有工具调用\n */\n getToolCalls(): ToolCall[] {\n return Object.values(this.toolCallMap);\n }\n\n /**\n * 检查工具调用是否已结束\n */\n isToolCallEnded(toolCallId: string): boolean {\n return this.toolCallEnded.has(toolCallId);\n }\n\n /**\n * 重置映射器状态\n */\n reset(): void {\n this.textBuffer = '';\n this.currentRunId = null;\n this.toolCallMap = {};\n this.toolCallEnded.clear();\n activityManager.clear();\n }\n}\n"],"names":["OpenClawEventMapper","_classCallCheck","_defineProperty","Set","_createClass","key","value","mapEvent","frame","event","payload","OpenClawEventType","CHAT","mapChatEvent","AGENT","mapAgentEvent","CONNECT_CHALLENGE","content","isFinal","hasError","mapGenericEvent","state","message","runId","errorMessage","currentRunId","ChatEventState","DELTA","handleChatDelta","FINAL","handleChatFinal","ERROR","createErrorContent","ABORTED","text","extractTextFromContent","prevBuffer","textBuffer","delta","startsWith","slice","length","textContent","type","data","status","_message","stream","AgentStreamType","TOOL","handleToolStream","ACTIVITY","handleActivityStream","ASSISTANT","handleAssistantStream","handleAgentTextSnapshot","eventType","AgentDataType","TEXT_SNAPSHOT","TEXT_DELTA","handleAgentTextDelta","DONE","handleAgentComplete","TOOL_CALL","handleToolCall","TOOL_RESULT","handleToolResult","handleAgentGenericData","contentData","toolCallId","toolCallName","handleToolCallStart","handleToolCallArgs","handleToolCallResult","handleToolCallEnd","handleToolCallGeneric","toolCallMap","parentMessageId","args","createToolCallContent","currentArgs","newArgs","mergeStringContent","updateToolCall","currentResult","result","newResult","suggestionContent","handleSuggestionToolCall","toolCallEnded","add","_objectSpread","activityType","activityData","activityManager","handleActivityEvent","patch","messageId","isSnapshot","existingActivity","getActivity","isFirstEvent","createActivityContent","deltaInfo","_event","_typeof","p","Array","isArray","filter","c","map","join","getTextBuffer","getCurrentRunId","getToolCall","getToolCalls","Object","values","isToolCallEnded","has","reset","clear"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"event-mapper.js","sources":["../../../../../../pro-components/chat/chat-engine/core/adapters/openclaw/event-mapper.ts"],"sourcesContent":["/**\n * OpenClaw 事件映射器\n *\n * 将 OpenClaw 事件(chat、agent 等)转换为 ChatEngine 统一的 AIMessageContent 格式\n *\n * 支持的 stream 类型:\n * - assistant:文本流(标准文本对话)\n * - tool:工具调用流(start → args → result → end 四阶段)\n * - activity:Activity 组件流(snapshot / delta 增量合并)\n */\nimport type { AIMessageContent, TextContent, ToolCall } from '../../type';\nimport type { OpenClawEventFrame, ChatEventPayload, AgentEventPayload } from './types';\nimport { OpenClawEventType, ChatEventState, AgentStreamType, AgentDataType } from './types/events';\n\n// 从共享层引入通用工具函数\nimport {\n createToolCallContent,\n createActivityContent,\n mergeStringContent,\n updateToolCall,\n handleSuggestionToolCall,\n} from '../shared';\nimport { activityManager } from '../shared/activity-manager';\n\n/**\n * 事件映射结果\n */\nexport interface EventMapResult {\n /** 映射后的内容 */\n content: AIMessageContent | AIMessageContent[] | null;\n /** 是否是最终消息 */\n isFinal: boolean;\n /** 是否有错误 */\n hasError: boolean;\n /** 错误消息 */\n errorMessage?: string;\n /** 原始运行 ID */\n runId?: string;\n}\n\n/**\n * OpenClaw 事件映射器\n */\nexport class OpenClawEventMapper {\n /** 当前流式文本缓冲 */\n private textBuffer = '';\n\n /** 当前运行 ID */\n private currentRunId: string | null = null;\n\n /** 工具调用状态映射(toolCallId → ToolCall) */\n private toolCallMap: Record<string, ToolCall> = {};\n\n /** 已结束的工具调用 ID 集合 */\n private toolCallEnded: Set<string> = new Set();\n\n /**\n * 映射 OpenClaw 事件帧到 AIMessageContent\n */\n mapEvent(frame: OpenClawEventFrame): EventMapResult {\n const { event, payload } = frame;\n\n switch (event) {\n case OpenClawEventType.CHAT:\n return this.mapChatEvent(payload as ChatEventPayload);\n\n case OpenClawEventType.AGENT:\n return this.mapAgentEvent(payload as AgentEventPayload);\n\n case OpenClawEventType.CONNECT_CHALLENGE:\n // 握手事件,不产生消息内容\n return { content: null, isFinal: false, hasError: false };\n\n default:\n // 未知事件,尝试作为通用消息处理\n return this.mapGenericEvent(event, payload);\n }\n }\n\n // ==================== Chat 事件处理 ====================\n\n /**\n * 映射 chat 事件\n */\n private mapChatEvent(payload: ChatEventPayload): EventMapResult {\n const { state, message, runId, errorMessage } = payload;\n\n this.currentRunId = runId || this.currentRunId;\n\n switch (state) {\n case ChatEventState.DELTA:\n return this.handleChatDelta(message);\n\n case ChatEventState.FINAL:\n return this.handleChatFinal(message);\n\n case ChatEventState.ERROR:\n return {\n content: this.createErrorContent(errorMessage || 'Chat error'),\n isFinal: true,\n hasError: true,\n errorMessage,\n runId: this.currentRunId || undefined,\n };\n\n case ChatEventState.ABORTED:\n return {\n content: null,\n isFinal: true,\n hasError: false,\n runId: this.currentRunId || undefined,\n };\n\n default:\n return { content: null, isFinal: false, hasError: false };\n }\n }\n\n /**\n * 处理 chat delta(增量更新)\n *\n * chat 事件的 message.content 包含全量文本快照。\n * 需要计算与上次的增量,只返回新增部分,\n * 因为 ChatEngine 的 text handler 会拼接内容。\n */\n private handleChatDelta(message?: ChatEventPayload['message']): EventMapResult {\n if (!message?.content) {\n return { content: null, isFinal: false, hasError: false };\n }\n\n // 从 content 数组中提取文本(全量快照)\n const text = this.extractTextFromContent(message.content);\n if (text === null) {\n return { content: null, isFinal: false, hasError: false };\n }\n\n // 计算增量\n const prevBuffer = this.textBuffer;\n this.textBuffer = text;\n const delta = text.startsWith(prevBuffer) ? text.slice(prevBuffer.length) : text;\n\n if (!delta) {\n return { content: null, isFinal: false, hasError: false };\n }\n\n const textContent: TextContent = {\n type: 'text',\n data: delta,\n status: 'streaming',\n };\n\n return {\n content: textContent,\n isFinal: false,\n hasError: false,\n runId: this.currentRunId || undefined,\n };\n }\n\n /**\n * 处理 chat final(最终消息)\n *\n * 在实际 OpenClaw 流程中,chat final 在 agent 流式结束后发送。\n * 此时所有文本已通过 agent 事件累积完毕,\n * 所以 final 只需标记完成状态,不应再输出全量内容。\n */\n private handleChatFinal(_message?: ChatEventPayload['message']): EventMapResult {\n // 重置缓冲区\n this.textBuffer = '';\n\n const textContent: TextContent = {\n type: 'text',\n data: '',\n status: 'complete',\n };\n\n return {\n content: textContent,\n isFinal: true,\n hasError: false,\n runId: this.currentRunId || undefined,\n };\n }\n\n // ==================== Agent 事件处理(核心分发) ====================\n\n /**\n * 映射 agent 事件\n *\n * 根据 stream 字段分发到不同的处理器:\n * - assistant / 缺省:文本流\n * - tool:工具调用流\n * - activity:Activity 组件流\n */\n private mapAgentEvent(payload: AgentEventPayload): EventMapResult {\n const { stream, data, runId } = payload;\n\n this.currentRunId = runId || this.currentRunId;\n\n // 根据 stream 类型分发\n switch (stream) {\n case AgentStreamType.TOOL:\n return this.handleToolStream(data);\n\n case AgentStreamType.ACTIVITY:\n return this.handleActivityStream(data);\n\n case AgentStreamType.ASSISTANT:\n case undefined:\n default:\n // assistant 或未指定 stream 类型,走文本流处理\n return this.handleAssistantStream(payload);\n }\n }\n\n // ==================== Assistant Stream(文本流) ====================\n\n /**\n * 处理 assistant stream(文本流)\n *\n * 实际 OpenClaw agent 事件格式:\n * {\n * \"type\": \"event\",\n * \"event\": \"agent\",\n * \"payload\": {\n * \"runId\": \"xxx\",\n * \"stream\": \"assistant\",\n * \"data\": { \"text\": \"全量快照\", \"delta\": \"增量\" },\n * \"sessionKey\": \"agent:main:main\",\n * \"seq\": 12,\n * \"ts\": 1772612049089\n * }\n * }\n */\n private handleAssistantStream(payload: AgentEventPayload): EventMapResult {\n const { type, data } = payload;\n\n // 优先判断:如果 data 同时包含 text 和 delta,这是实际 OpenClaw 的标准 agent 流式格式\n if (data && typeof data.text === 'string' && typeof data.delta === 'string') {\n return this.handleAgentTextSnapshot(data);\n }\n\n // 根据显式的 type 字段处理(兼容可能的扩展格式)\n const eventType = type || data?.type;\n\n switch (eventType) {\n case AgentDataType.TEXT_SNAPSHOT:\n case 'snapshot':\n return this.handleAgentTextSnapshot(data);\n\n case AgentDataType.TEXT_DELTA:\n case 'delta':\n return this.handleAgentTextDelta(data);\n\n case AgentDataType.DONE:\n case 'done':\n case 'complete':\n case 'final':\n return this.handleAgentComplete();\n\n case AgentDataType.ERROR:\n case 'error':\n return {\n content: this.createErrorContent(data?.text || 'Agent error'),\n isFinal: true,\n hasError: true,\n errorMessage: data?.text,\n runId: this.currentRunId || undefined,\n };\n\n case AgentDataType.TOOL_CALL:\n return this.handleToolCall(data);\n\n case AgentDataType.TOOL_RESULT:\n return this.handleToolResult(data);\n\n default:\n // 尝试从 data 中提取文本(兜底处理)\n return this.handleAgentGenericData(data);\n }\n }\n\n /**\n * 处理 agent 文本快照\n *\n * 实际 OpenClaw agent 事件中,data.text 是全量快照,data.delta 是本次增量。\n * ChatEngine 的 text 合并策略是 existing + incoming(拼接),\n * 所以这里必须返回 delta(增量)而非全量快照,否则会导致内容重复。\n * textBuffer 保存全量快照,用于 final 阶段和状态恢复。\n */\n private handleAgentTextSnapshot(data?: AgentEventPayload['data']): EventMapResult {\n const text = data?.text || '';\n const delta = data?.delta;\n\n if (!text && !delta) {\n return { content: null, isFinal: false, hasError: false };\n }\n\n // 保存全量快照到 buffer\n this.textBuffer = text;\n\n // 优先使用 delta(增量),因为 ChatEngine 的 text handler 会拼接内容\n // 如果没有 delta(首条消息),则使用全量 text\n const contentData = (typeof delta === 'string') ? delta : text;\n\n if (!contentData) {\n return { content: null, isFinal: false, hasError: false };\n }\n\n const textContent: TextContent = {\n type: 'text',\n data: contentData,\n status: 'streaming',\n };\n\n return {\n content: textContent,\n isFinal: false,\n hasError: false,\n runId: this.currentRunId || undefined,\n };\n }\n\n /**\n * 处理 agent 文本增量\n */\n private handleAgentTextDelta(data?: AgentEventPayload['data']): EventMapResult {\n const delta = data?.delta || data?.text || '';\n if (!delta) {\n return { content: null, isFinal: false, hasError: false };\n }\n\n this.textBuffer += delta;\n\n const textContent: TextContent = {\n type: 'text',\n data: delta,\n status: 'streaming',\n };\n\n return {\n content: textContent,\n isFinal: false,\n hasError: false,\n runId: this.currentRunId || undefined,\n };\n }\n\n /**\n * 处理 agent 完成\n *\n * 完成时不再输出内容(之前的 delta 已经都输出了),\n * 只返回一个空 data + complete 状态来标记结束。\n */\n private handleAgentComplete(): EventMapResult {\n const textContent: TextContent = {\n type: 'text',\n data: '',\n status: 'complete',\n };\n\n this.textBuffer = '';\n\n return {\n content: textContent,\n isFinal: true,\n hasError: false,\n runId: this.currentRunId || undefined,\n };\n }\n\n /**\n * 处理通用 agent 数据\n *\n * 兜底处理逻辑:优先使用 delta 增量,避免全量快照被 ChatEngine 拼接导致重复\n */\n private handleAgentGenericData(data?: AgentEventPayload['data']): EventMapResult {\n const text = data?.text;\n const delta = data?.delta;\n\n // 优先使用 delta 增量\n if (typeof delta === 'string' && delta) {\n this.textBuffer += delta;\n return {\n content: {\n type: 'text',\n data: delta,\n status: 'streaming',\n } as TextContent,\n isFinal: false,\n hasError: false,\n runId: this.currentRunId || undefined,\n };\n }\n\n // 如果只有 text(全量快照),计算增量后返回\n if (typeof text === 'string' && text) {\n const prevBuffer = this.textBuffer;\n this.textBuffer = text;\n // 如果 text 以之前的 buffer 开头,只返回新增部分\n const contentData = text.startsWith(prevBuffer) ? text.slice(prevBuffer.length) : text;\n if (!contentData) {\n return { content: null, isFinal: false, hasError: false };\n }\n return {\n content: {\n type: 'text',\n data: contentData,\n status: 'streaming',\n } as TextContent,\n isFinal: false,\n hasError: false,\n runId: this.currentRunId || undefined,\n };\n }\n\n return { content: null, isFinal: false, hasError: false };\n }\n\n // ==================== Tool Stream(工具调用流) ====================\n\n /**\n * 处理 tool stream\n *\n * OpenClaw 实际返回的 tool stream data 结构(经过对真实 Gateway 数据抓取确认):\n *\n * phase: 'start' (开始,包含完整 args):\n * {\n * phase: 'start',\n * name: 'read', // 工具名称(字段名是 name,不是 toolCallName)\n * toolCallId: 'read:0', // 工具调用 ID\n * args: { file_path: '...' }, // 完整参数对象(非 JSON 字符串,start 阶段就包含全部 args)\n * }\n *\n * phase: 'result' (结果):\n * {\n * phase: 'result',\n * name: 'read',\n * toolCallId: 'read:0',\n * meta: 'from ~/.openclaw/workspace/memory/2026-03-11.md', // 结果元信息\n * isError: true, // 是否出错\n * }\n *\n * 注意:\n * 1. 只有 start 和 result 两个 phase(没有 args 和 end 阶段)\n * 2. 字段名是 name 不是 toolCallName\n * 3. args 在 start 阶段就是完整对象,不需要增量拼接\n * 4. result 的具体内容通过 toolResult 角色的消息传递(在 chat final 中),\n * tool stream 的 result phase 只包含 meta 和 isError\n */\n private handleToolStream(data: AgentEventPayload['data']): EventMapResult {\n if (!data?.toolCallId) {\n return { content: null, isFinal: false, hasError: false };\n }\n\n // OpenClaw 使用 phase 字段(不是 state),工具名使用 name 字段(不是 toolCallName)\n const phase = (data.phase || data.state) as string;\n const toolCallId = data.toolCallId as string;\n const toolCallName = (data.name || data.toolCallName || 'unknown') as string;\n\n switch (phase) {\n case 'start':\n return this.handleToolCallStart(toolCallId, toolCallName, data);\n case 'result':\n return this.handleToolCallResult(toolCallId, data);\n case 'args':\n // 兼容 Mock Server 或其他 Gateway 实现可能使用的 args 增量阶段\n return this.handleToolCallArgs(toolCallId, data);\n case 'end':\n // 兼容可能的 end 阶段\n return this.handleToolCallEnd(toolCallId);\n default:\n // 兜底:如果没有 phase/state,尝试从 data 推断\n return this.handleToolCallGeneric(data);\n }\n }\n\n /**\n * 处理工具调用开始(phase: 'start')\n *\n * OpenClaw 实际行为:start 阶段就包含完整的 args 对象(不是 JSON 字符串)\n * 因此直接序列化 args 并创建 toolcall 内容\n */\n private handleToolCallStart(toolCallId: string, toolCallName: string, data: AgentEventPayload['data']): EventMapResult {\n // OpenClaw 的 args 在 start 阶段是完整对象,需要序列化为 JSON 字符串\n const rawArgs = data?.args;\n let argsStr = '';\n if (rawArgs !== undefined && rawArgs !== null) {\n argsStr = typeof rawArgs === 'string' ? rawArgs : JSON.stringify(rawArgs);\n }\n\n this.toolCallMap[toolCallId] = {\n eventType: 'TOOL_CALL_START',\n toolCallId,\n toolCallName: toolCallName || 'unknown',\n parentMessageId: (data?.parentMessageId as string) || '',\n args: argsStr,\n };\n\n // OpenClaw 的 start 阶段已包含完整 args,状态可以直接标记为 executing(streaming)\n return {\n content: createToolCallContent(this.toolCallMap[toolCallId], 'streaming', 'append'),\n isFinal: false,\n hasError: false,\n runId: this.currentRunId || undefined,\n };\n }\n\n /**\n * 处理工具调用参数增量(兼容 args 增量阶段)\n */\n private handleToolCallArgs(toolCallId: string, data: AgentEventPayload['data']): EventMapResult {\n if (!this.toolCallMap[toolCallId]) {\n return { content: null, isFinal: false, hasError: false };\n }\n\n const currentArgs = this.toolCallMap[toolCallId].args || '';\n const newArgs = mergeStringContent(currentArgs, (data?.delta as string) || '');\n\n this.toolCallMap[toolCallId] = updateToolCall(this.toolCallMap[toolCallId], {\n eventType: 'TOOL_CALL_ARGS',\n args: newArgs,\n });\n\n return {\n content: createToolCallContent(this.toolCallMap[toolCallId], 'streaming', 'merge'),\n isFinal: false,\n hasError: false,\n runId: this.currentRunId || undefined,\n };\n }\n\n /**\n * 处理工具调用结果(phase: 'result')\n *\n * OpenClaw 实际行为:\n * - result phase 的 data 包含 meta(描述性信息)和 isError(是否出错)\n * - 工具调用的具体结果文本通过 chat final 中的 toolResult 角色消息传递\n * - 因此此处不一定有 content/result 文本,但应标记 toolcall 为 complete\n */\n private handleToolCallResult(toolCallId: string, data: AgentEventPayload['data']): EventMapResult {\n if (!this.toolCallMap[toolCallId]) {\n // 如果之前没有 start 事件,先创建 toolcall 记录\n const toolCallName = (data?.name || data?.toolCallName || 'unknown') as string;\n this.toolCallMap[toolCallId] = {\n eventType: 'TOOL_CALL_START',\n toolCallId,\n toolCallName,\n parentMessageId: '',\n args: '',\n };\n }\n\n // 从 data 中提取结果信息\n const resultContent = (data?.content as string) || (data?.result as string) || '';\n const meta = (data?.meta as string) || '';\n const isError = data?.isError as boolean;\n\n // 构建 result 文本:优先使用 content/result,其次使用 meta 描述\n const resultStr = resultContent || meta || '';\n\n this.toolCallMap[toolCallId] = updateToolCall(this.toolCallMap[toolCallId], {\n eventType: 'TOOL_CALL_RESULT',\n result: resultStr,\n ...(isError !== undefined ? { ext: { isError } } : {}),\n });\n\n this.toolCallEnded.add(toolCallId);\n\n // 复用 suggestion 特殊处理\n const suggestionContent = handleSuggestionToolCall(this.toolCallMap[toolCallId]);\n if (suggestionContent) {\n return {\n content: suggestionContent,\n isFinal: false,\n hasError: false,\n runId: this.currentRunId || undefined,\n };\n }\n\n return {\n content: createToolCallContent(this.toolCallMap[toolCallId], 'complete', 'merge'),\n isFinal: false,\n hasError: false,\n runId: this.currentRunId || undefined,\n };\n }\n\n /**\n * 处理工具调用结束(兼容 end 阶段)\n */\n private handleToolCallEnd(toolCallId: string): EventMapResult {\n this.toolCallEnded.add(toolCallId);\n\n if (this.toolCallMap[toolCallId]) {\n this.toolCallMap[toolCallId] = {\n ...this.toolCallMap[toolCallId],\n eventType: 'TOOL_CALL_END',\n };\n }\n\n return {\n content: this.toolCallMap[toolCallId]\n ? createToolCallContent(this.toolCallMap[toolCallId], 'complete', 'merge')\n : null,\n isFinal: false,\n hasError: false,\n runId: this.currentRunId || undefined,\n };\n }\n\n /**\n * 兜底处理工具调用数据(无 phase/state 字段时)\n */\n private handleToolCallGeneric(data: AgentEventPayload['data']): EventMapResult {\n if (!data?.toolCallId) {\n return { content: null, isFinal: false, hasError: false };\n }\n\n const toolCallId = data.toolCallId as string;\n const toolCallName = (data.name || data.toolCallName || 'unknown') as string;\n\n // 如果还没有这个 toolCall 的记录,当作 start 处理\n if (!this.toolCallMap[toolCallId]) {\n return this.handleToolCallStart(toolCallId, toolCallName, data);\n }\n\n // 如果有 delta/args,当作 args 更新\n if (data.delta || data.args) {\n return this.handleToolCallArgs(toolCallId, data);\n }\n\n // 如果有 content/result/meta/isError,当作 result 更新\n if (data.content || data.result || data.meta || data.isError !== undefined) {\n return this.handleToolCallResult(toolCallId, data);\n }\n\n return { content: null, isFinal: false, hasError: false };\n }\n\n // ==================== 旧版 Tool 处理(兼容 assistant stream 中的 type 字段) ====================\n\n /**\n * 处理旧版工具调用(通过 type 字段而非 stream=tool)\n */\n private handleToolCall(data?: AgentEventPayload['data']): EventMapResult {\n if (!data?.toolCallId) {\n return { content: null, isFinal: false, hasError: false };\n }\n return this.handleToolCallStart(\n data.toolCallId as string,\n (data.name as string) || (data.toolCallName as string) || 'unknown',\n data,\n );\n }\n\n /**\n * 处理旧版工具结果(通过 type 字段而非 stream=tool)\n */\n private handleToolResult(data?: AgentEventPayload['data']): EventMapResult {\n if (!data?.toolCallId) {\n return { content: null, isFinal: false, hasError: false };\n }\n return this.handleToolCallResult(data.toolCallId as string, data);\n }\n\n // ==================== Activity Stream ====================\n\n /**\n * 处理 activity stream\n *\n * 直接复用 activityManager 的 snapshot/delta 处理逻辑。\n *\n * OpenClaw activity stream data 约定:\n * {\n * activityType: string, // Activity 组件类型\n * state: 'snapshot' | 'delta', // 全量 or 增量\n * content?: Record<string, any>, // snapshot 全量数据\n * patch?: any[], // delta JSON Patch 数组\n * messageId?: string, // 关联消息 ID\n * }\n */\n private handleActivityStream(data: AgentEventPayload['data']): EventMapResult {\n if (!data?.activityType) {\n return { content: null, isFinal: false, hasError: false };\n }\n\n const activityType = data.activityType as string;\n const state = data.state as string;\n\n // 将 OpenClaw 的 state 映射为 AG-UI 兼容的事件 type\n const eventType = state === 'snapshot' ? 'ACTIVITY_SNAPSHOT' : 'ACTIVITY_DELTA';\n\n // 委托给 activityManager 处理(复用 AG-UI 的 snapshot/delta 合并逻辑)\n const activityData = activityManager.handleActivityEvent({\n type: eventType,\n activityType,\n content: data.content as Record<string, any>,\n patch: data.patch as any[],\n messageId: data.messageId as string,\n });\n\n if (!activityData) {\n return { content: null, isFinal: false, hasError: false };\n }\n\n // 判断是否需要 append(新建内容块)\n const isSnapshot = state === 'snapshot';\n // 首次 delta 时 activityManager 内部已经处理了初始化\n const existingActivity = activityManager.getActivity(activityType);\n const isFirstEvent = isSnapshot || (!existingActivity && state === 'delta');\n\n return {\n content: createActivityContent(\n activityType,\n activityData.content,\n 'streaming',\n isFirstEvent ? 'append' : 'merge',\n activityData.deltaInfo,\n ),\n isFinal: false,\n hasError: false,\n runId: this.currentRunId || undefined,\n };\n }\n\n // ==================== 通用事件处理 ====================\n\n /**\n * 映射通用事件\n */\n private mapGenericEvent(_event: string, payload: unknown): EventMapResult {\n // 尝试从 payload 中提取有用信息\n if (typeof payload === 'object' && payload !== null) {\n const p = payload as Record<string, unknown>;\n const text = p.text || p.content || p.message;\n if (typeof text === 'string') {\n return {\n content: {\n type: 'text',\n data: text,\n status: 'streaming',\n } as TextContent,\n isFinal: false,\n hasError: false,\n };\n }\n }\n\n return { content: null, isFinal: false, hasError: false };\n }\n\n // ==================== 工具方法 ====================\n\n /**\n * 从 content 数组中提取文本\n */\n private extractTextFromContent(content: Array<{ type: string; text?: string }>): string | null {\n if (!Array.isArray(content)) {\n return null;\n }\n\n return content\n .filter((c) => c?.type === 'text' && c?.text)\n .map((c) => c.text!)\n .join('');\n }\n\n /**\n * 创建错误内容\n */\n private createErrorContent(message: string): TextContent {\n return {\n type: 'text',\n data: `Error: ${message}`,\n status: 'error',\n };\n }\n\n /**\n * 获取当前文本缓冲\n */\n getTextBuffer(): string {\n return this.textBuffer;\n }\n\n /**\n * 获取当前运行 ID\n */\n getCurrentRunId(): string | null {\n return this.currentRunId;\n }\n\n /**\n * 获取指定工具调用\n */\n getToolCall(toolCallId: string): ToolCall | undefined {\n return this.toolCallMap[toolCallId];\n }\n\n /**\n * 获取所有工具调用\n */\n getToolCalls(): ToolCall[] {\n return Object.values(this.toolCallMap);\n }\n\n /**\n * 检查工具调用是否已结束\n */\n isToolCallEnded(toolCallId: string): boolean {\n return this.toolCallEnded.has(toolCallId);\n }\n\n /**\n * 重置映射器状态\n */\n reset(): void {\n this.textBuffer = '';\n this.currentRunId = null;\n this.toolCallMap = {};\n this.toolCallEnded.clear();\n activityManager.clear();\n }\n}\n"],"names":["OpenClawEventMapper","_classCallCheck","_defineProperty","Set","_createClass","key","value","mapEvent","frame","event","payload","OpenClawEventType","CHAT","mapChatEvent","AGENT","mapAgentEvent","CONNECT_CHALLENGE","content","isFinal","hasError","mapGenericEvent","state","message","runId","errorMessage","currentRunId","ChatEventState","DELTA","handleChatDelta","FINAL","handleChatFinal","ERROR","createErrorContent","ABORTED","text","extractTextFromContent","prevBuffer","textBuffer","delta","startsWith","slice","length","textContent","type","data","status","_message","stream","AgentStreamType","TOOL","handleToolStream","ACTIVITY","handleActivityStream","ASSISTANT","handleAssistantStream","handleAgentTextSnapshot","eventType","AgentDataType","TEXT_SNAPSHOT","TEXT_DELTA","handleAgentTextDelta","DONE","handleAgentComplete","TOOL_CALL","handleToolCall","TOOL_RESULT","handleToolResult","handleAgentGenericData","contentData","toolCallId","phase","toolCallName","name","handleToolCallStart","handleToolCallResult","handleToolCallArgs","handleToolCallEnd","handleToolCallGeneric","rawArgs","args","argsStr","JSON","stringify","toolCallMap","parentMessageId","createToolCallContent","currentArgs","newArgs","mergeStringContent","updateToolCall","resultContent","result","meta","isError","resultStr","_objectSpread","ext","toolCallEnded","add","suggestionContent","handleSuggestionToolCall","activityType","activityData","activityManager","handleActivityEvent","patch","messageId","isSnapshot","existingActivity","getActivity","isFirstEvent","createActivityContent","deltaInfo","_event","_typeof","p","Array","isArray","filter","c","map","join","getTextBuffer","getCurrentRunId","getToolCall","getToolCalls","Object","values","isToolCallEnded","has","reset","clear"],"mappings":"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"}
|