@tdesign-react/chat 1.1.0-alpha.16 → 1.1.0-alpha.17
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/es/_chunks/{dep-dfe91b1f.js → dep-e1e84ed7.js} +1 -1
- package/es/_chunks/{dep-13fe70ea.js.map → dep-e1e84ed7.js.map} +1 -1
- package/es/chat-engine/components/index.js +8 -3
- package/es/chat-engine/components/index.js.map +1 -1
- package/es/chat-engine/components/json-render/catalog/atomic/input.js +8 -3
- package/es/chat-engine/components/json-render/catalog/atomic/input.js.map +1 -1
- package/es/chat-engine/components/json-render/index.js +8 -3
- package/es/chat-engine/components/json-render/index.js.map +1 -1
- package/es/chat-engine/components/json-render/registry/a2ui-binding.js +8 -3
- package/es/chat-engine/components/json-render/registry/a2ui-binding.js.map +1 -1
- package/es/chat-engine/components/json-render/registry/a2ui-registry.js +8 -3
- package/es/chat-engine/components/json-render/registry/a2ui-registry.js.map +1 -1
- package/es/chat-engine/components/json-render/registry/config.js +8 -3
- package/es/chat-engine/components/json-render/registry/config.js.map +1 -1
- package/es/chat-engine/components/json-render/registry/index.js +8 -3
- package/es/chat-engine/components/json-render/registry/index.js.map +1 -1
- package/es/chat-engine/components/json-render/renderer/A2UIJsonRenderActivityRenderer.js +7 -2
- package/es/chat-engine/components/json-render/renderer/A2UIJsonRenderActivityRenderer.js.map +1 -1
- package/es/chat-engine/components/provider/agent-state.js +7 -2
- package/es/chat-engine/components/provider/agent-state.js.map +1 -1
- package/es/chat-engine/components/toolcall/index.js +7 -2
- package/es/chat-engine/components/toolcall/index.js.map +1 -1
- package/es/chat-engine/components/toolcall/render.js +6 -1
- package/es/chat-engine/components/toolcall/render.js.map +1 -1
- package/es/chat-engine/core/adapters/agui/index.js +5 -50
- package/es/chat-engine/core/adapters/agui/index.js.map +1 -1
- package/es/chat-engine/core/adapters/agui/utils.d.ts +25 -2
- package/es/chat-engine/core/adapters/agui/utils.js +51 -11
- package/es/chat-engine/core/adapters/agui/utils.js.map +1 -1
- package/es/chat-engine/core/adapters/index.js +1 -0
- package/es/chat-engine/core/adapters/index.js.map +1 -1
- package/es/chat-engine/core/adapters/openclaw/event-mapper.d.ts +36 -14
- package/es/chat-engine/core/adapters/openclaw/event-mapper.js +35 -20
- package/es/chat-engine/core/adapters/openclaw/event-mapper.js.map +1 -1
- package/es/chat-engine/core/adapters/openclaw/history-converter.d.ts +120 -0
- package/es/chat-engine/core/adapters/openclaw/history-converter.js +251 -0
- package/es/chat-engine/core/adapters/openclaw/history-converter.js.map +1 -0
- package/es/chat-engine/core/adapters/openclaw/index.d.ts +30 -0
- package/es/chat-engine/core/adapters/openclaw/index.js +82 -35
- package/es/chat-engine/core/adapters/openclaw/index.js.map +1 -1
- package/es/chat-engine/core/adapters/openclaw/rpc-handler.d.ts +13 -0
- package/es/chat-engine/core/adapters/openclaw/rpc-handler.js +19 -0
- package/es/chat-engine/core/adapters/openclaw/rpc-handler.js.map +1 -1
- package/es/chat-engine/core/adapters/openclaw/types/config.d.ts +2 -24
- package/es/chat-engine/core/adapters/openclaw/types/config.js +3 -5
- package/es/chat-engine/core/adapters/openclaw/types/config.js.map +1 -1
- package/es/chat-engine/core/adapters/openclaw/types/events.d.ts +2 -0
- package/es/chat-engine/core/adapters/openclaw/types/events.js +1 -0
- package/es/chat-engine/core/adapters/openclaw/types/events.js.map +1 -1
- package/es/chat-engine/core/adapters/openclaw/types/messages.d.ts +9 -0
- package/es/chat-engine/core/adapters/openclaw/types/messages.js.map +1 -1
- package/es/chat-engine/core/adapters/openclaw/utils.js.map +1 -1
- package/es/chat-engine/core/index.d.ts +24 -24
- package/es/chat-engine/core/index.js +150 -317
- package/es/chat-engine/core/index.js.map +1 -1
- package/es/chat-engine/core/processor/index.d.ts +32 -0
- package/es/chat-engine/core/processor/index.js +75 -0
- package/es/chat-engine/core/processor/index.js.map +1 -1
- package/es/chat-engine/core/server/index.js +0 -20
- package/es/chat-engine/core/server/index.js.map +1 -1
- package/es/chat-engine/core/server/llm-service.d.ts +7 -7
- package/es/chat-engine/core/server/llm-service.js +12 -139
- package/es/chat-engine/core/server/llm-service.js.map +1 -1
- package/es/chat-engine/core/stream-handlers/agui-stream-handler.d.ts +24 -0
- package/es/chat-engine/core/stream-handlers/agui-stream-handler.js +140 -0
- package/es/chat-engine/core/stream-handlers/agui-stream-handler.js.map +1 -0
- package/es/chat-engine/core/stream-handlers/default-stream-handler.d.ts +7 -0
- package/es/chat-engine/core/stream-handlers/default-stream-handler.js +77 -0
- package/es/chat-engine/core/stream-handlers/default-stream-handler.js.map +1 -0
- package/es/chat-engine/core/stream-handlers/index.d.ts +21 -0
- package/es/chat-engine/core/stream-handlers/index.js +71 -0
- package/es/chat-engine/core/stream-handlers/index.js.map +1 -0
- package/es/chat-engine/core/stream-handlers/openclaw-stream-handler.d.ts +56 -0
- package/es/chat-engine/core/stream-handlers/openclaw-stream-handler.js +269 -0
- package/es/chat-engine/core/stream-handlers/openclaw-stream-handler.js.map +1 -0
- package/es/chat-engine/core/stream-handlers/types.d.ts +47 -0
- package/es/chat-engine/core/stream-handlers/types.js +7 -0
- package/es/chat-engine/core/stream-handlers/types.js.map +1 -0
- package/es/chat-engine/core/type.d.ts +18 -0
- package/es/chat-engine/hooks/index.js +7 -2
- package/es/chat-engine/hooks/index.js.map +1 -1
- package/es/chat-engine/hooks/useAgentState.js +7 -2
- package/es/chat-engine/hooks/useAgentState.js.map +1 -1
- package/es/chat-engine/hooks/useChat.js +11 -5
- package/es/chat-engine/hooks/useChat.js.map +1 -1
- package/es/chat-engine/index.js +6 -1
- package/es/chat-engine/index.js.map +1 -1
- package/es/index.js +6 -1
- package/es/index.js.map +1 -1
- package/package.json +1 -1
- package/es/_chunks/dep-076af7c3.js +0 -438
- package/es/_chunks/dep-076af7c3.js.map +0 -1
- package/es/_chunks/dep-1007ac80.js +0 -205
- package/es/_chunks/dep-1007ac80.js.map +0 -1
- package/es/_chunks/dep-13fe70ea.js +0 -438
- package/es/_chunks/dep-16520c2b.js +0 -1247
- package/es/_chunks/dep-16520c2b.js.map +0 -1
- package/es/_chunks/dep-1743bd61.js +0 -438
- package/es/_chunks/dep-1743bd61.js.map +0 -1
- package/es/_chunks/dep-1ca64fef.js +0 -1247
- package/es/_chunks/dep-1ca64fef.js.map +0 -1
- package/es/_chunks/dep-24472232.js +0 -839
- package/es/_chunks/dep-24472232.js.map +0 -1
- package/es/_chunks/dep-2bfe72cb.js +0 -438
- package/es/_chunks/dep-2bfe72cb.js.map +0 -1
- package/es/_chunks/dep-3864b369.js +0 -839
- package/es/_chunks/dep-3864b369.js.map +0 -1
- package/es/_chunks/dep-3e40d789.js +0 -169
- package/es/_chunks/dep-3e40d789.js.map +0 -1
- package/es/_chunks/dep-4dedfbef.js +0 -438
- package/es/_chunks/dep-4dedfbef.js.map +0 -1
- package/es/_chunks/dep-56f5e08e.js +0 -448
- package/es/_chunks/dep-56f5e08e.js.map +0 -1
- package/es/_chunks/dep-58d90dfe.js +0 -438
- package/es/_chunks/dep-58d90dfe.js.map +0 -1
- package/es/_chunks/dep-5b6b17d0.js +0 -169
- package/es/_chunks/dep-5b6b17d0.js.map +0 -1
- package/es/_chunks/dep-5e2400d2.js +0 -438
- package/es/_chunks/dep-5e2400d2.js.map +0 -1
- package/es/_chunks/dep-60f2a734.js +0 -169
- package/es/_chunks/dep-60f2a734.js.map +0 -1
- package/es/_chunks/dep-688e4aaa.js +0 -438
- package/es/_chunks/dep-688e4aaa.js.map +0 -1
- package/es/_chunks/dep-771678df.js +0 -438
- package/es/_chunks/dep-771678df.js.map +0 -1
- package/es/_chunks/dep-870f0d35.js +0 -839
- package/es/_chunks/dep-870f0d35.js.map +0 -1
- package/es/_chunks/dep-93283bbd.js +0 -1247
- package/es/_chunks/dep-93283bbd.js.map +0 -1
- package/es/_chunks/dep-96eca06f.js +0 -169
- package/es/_chunks/dep-96eca06f.js.map +0 -1
- package/es/_chunks/dep-98d23dfa.js +0 -169
- package/es/_chunks/dep-98d23dfa.js.map +0 -1
- package/es/_chunks/dep-991f7c12.js +0 -1247
- package/es/_chunks/dep-991f7c12.js.map +0 -1
- package/es/_chunks/dep-b4eec30f.js +0 -1247
- package/es/_chunks/dep-b4eec30f.js.map +0 -1
- package/es/_chunks/dep-ba3bd553.js +0 -169
- package/es/_chunks/dep-ba3bd553.js.map +0 -1
- package/es/_chunks/dep-bcb234a1.js +0 -839
- package/es/_chunks/dep-bcb234a1.js.map +0 -1
- package/es/_chunks/dep-dbdfe7d6.js +0 -169
- package/es/_chunks/dep-dbdfe7d6.js.map +0 -1
- package/es/_chunks/dep-de8ac730.js +0 -1247
- package/es/_chunks/dep-de8ac730.js.map +0 -1
- package/es/_chunks/dep-dfe91b1f.js.map +0 -1
- package/es/_chunks/dep-e9dbff09.js +0 -1247
- package/es/_chunks/dep-e9dbff09.js.map +0 -1
- package/es/_chunks/dep-ebc4cf30.js +0 -1247
- package/es/_chunks/dep-ebc4cf30.js.map +0 -1
- package/es/_chunks/dep-f2051ebd.js +0 -839
- package/es/_chunks/dep-f2051ebd.js.map +0 -1
- package/es/_chunks/dep-f691a67e.js +0 -438
- package/es/_chunks/dep-f691a67e.js.map +0 -1
- package/es/_chunks/dep-f8016301.js +0 -169
- package/es/_chunks/dep-f8016301.js.map +0 -1
- package/es/chat-actionbar/_example-js/base.d.ts +0 -2
- package/es/chat-actionbar/_example-js/custom.d.ts +0 -2
- package/es/chat-actionbar/_example-js/style.d.ts +0 -2
- package/es/chat-attachments/_example-js/base.d.ts +0 -2
- package/es/chat-attachments/_example-js/scroll-x.d.ts +0 -2
- package/es/chat-attachments/_example-js/scroll-y.d.ts +0 -2
- package/es/chat-attachments/index.d.ts +0 -5
- package/es/chat-attachments/index.js +0 -26
- package/es/chat-attachments/index.js.map +0 -1
- package/es/chat-engine/_example-js/agui-basic.d.ts +0 -10
- package/es/chat-engine/_example-js/agui-comprehensive.d.ts +0 -2
- package/es/chat-engine/_example-js/agui-test.d.ts +0 -11
- package/es/chat-engine/_example-js/agui-toolcall.d.ts +0 -5
- package/es/chat-engine/_example-js/agui-videoclip.d.ts +0 -8
- package/es/chat-engine/_example-js/agui.d.ts +0 -1
- package/es/chat-engine/_example-js/basic.d.ts +0 -9
- package/es/chat-engine/_example-js/components/HotelCard.d.ts +0 -3
- package/es/chat-engine/_example-js/components/HumanInputForm.d.ts +0 -6
- package/es/chat-engine/_example-js/components/HumanInputResult.d.ts +0 -3
- package/es/chat-engine/_example-js/components/ItineraryCard.d.ts +0 -3
- package/es/chat-engine/_example-js/components/PlanningStatePanel.d.ts +0 -4
- package/es/chat-engine/_example-js/components/Toolcall.d.ts +0 -4
- package/es/chat-engine/_example-js/components/WeatherCard.d.ts +0 -3
- package/es/chat-engine/_example-js/components/login.d.ts +0 -1
- package/es/chat-engine/_example-js/comprehensive.d.ts +0 -12
- package/es/chat-engine/_example-js/custom-content.d.ts +0 -1
- package/es/chat-engine/_example-js/hookComponent.d.ts +0 -1
- package/es/chat-engine/_example-js/initial-messages.d.ts +0 -9
- package/es/chat-engine/_example-js/instance-methods.d.ts +0 -13
- package/es/chat-engine/_example-js/travel-actions.d.ts +0 -91
- package/es/chat-engine/_example-js/travelToolcall.d.ts +0 -1
- package/es/chat-engine/components/a2ui/A2UIActivityRenderer.d.ts +0 -196
- package/es/chat-engine/components/a2ui/A2UIActivityRenderer.js +0 -301
- package/es/chat-engine/components/a2ui/A2UIActivityRenderer.js.map +0 -1
- package/es/chat-engine/components/a2ui/A2UIComponentRenderer.d.ts +0 -37
- package/es/chat-engine/components/a2ui/A2UIComponentRenderer.js +0 -116
- package/es/chat-engine/components/a2ui/A2UIComponentRenderer.js.map +0 -1
- package/es/chat-engine/components/a2ui/A2UIErrorBoundary.d.ts +0 -42
- package/es/chat-engine/components/a2ui/A2UIErrorBoundary.js +0 -113
- package/es/chat-engine/components/a2ui/A2UIErrorBoundary.js.map +0 -1
- package/es/chat-engine/components/a2ui/A2UISkeleton.d.ts +0 -60
- package/es/chat-engine/components/a2ui/A2UISkeleton.js +0 -197
- package/es/chat-engine/components/a2ui/A2UISkeleton.js.map +0 -1
- package/es/chat-engine/components/a2ui/A2UISurfaceRenderer.d.ts +0 -44
- package/es/chat-engine/components/a2ui/A2UISurfaceRenderer.js +0 -139
- package/es/chat-engine/components/a2ui/A2UISurfaceRenderer.js.map +0 -1
- package/es/chat-engine/components/a2ui/containers/A2UICard.d.ts +0 -22
- package/es/chat-engine/components/a2ui/containers/A2UICard.js +0 -82
- package/es/chat-engine/components/a2ui/containers/A2UICard.js.map +0 -1
- package/es/chat-engine/components/a2ui/containers/A2UIColumn.d.ts +0 -18
- package/es/chat-engine/components/a2ui/containers/A2UIColumn.js +0 -81
- package/es/chat-engine/components/a2ui/containers/A2UIColumn.js.map +0 -1
- package/es/chat-engine/components/a2ui/containers/A2UIList.d.ts +0 -14
- package/es/chat-engine/components/a2ui/containers/A2UIList.js +0 -62
- package/es/chat-engine/components/a2ui/containers/A2UIList.js.map +0 -1
- package/es/chat-engine/components/a2ui/containers/A2UIRow.d.ts +0 -20
- package/es/chat-engine/components/a2ui/containers/A2UIRow.js +0 -84
- package/es/chat-engine/components/a2ui/containers/A2UIRow.js.map +0 -1
- package/es/chat-engine/components/a2ui/containers/A2UITabs.d.ts +0 -14
- package/es/chat-engine/components/a2ui/containers/A2UITabs.js +0 -69
- package/es/chat-engine/components/a2ui/containers/A2UITabs.js.map +0 -1
- package/es/chat-engine/components/a2ui/containers/index.d.ts +0 -8
- package/es/chat-engine/components/a2ui/containers/index.js +0 -30
- package/es/chat-engine/components/a2ui/containers/index.js.map +0 -1
- package/es/chat-engine/components/a2ui/index.d.ts +0 -11
- package/es/chat-engine/components/a2ui/index.js +0 -62
- package/es/chat-engine/components/a2ui/index.js.map +0 -1
- package/es/chat-engine/components/a2ui/primitives/A2UIButton.d.ts +0 -33
- package/es/chat-engine/components/a2ui/primitives/A2UIButton.js +0 -80
- package/es/chat-engine/components/a2ui/primitives/A2UIButton.js.map +0 -1
- package/es/chat-engine/components/a2ui/primitives/A2UICheckBox.d.ts +0 -12
- package/es/chat-engine/components/a2ui/primitives/A2UICheckBox.js +0 -43
- package/es/chat-engine/components/a2ui/primitives/A2UICheckBox.js.map +0 -1
- package/es/chat-engine/components/a2ui/primitives/A2UICheckboxGroup.d.ts +0 -50
- package/es/chat-engine/components/a2ui/primitives/A2UICheckboxGroup.js +0 -54
- package/es/chat-engine/components/a2ui/primitives/A2UICheckboxGroup.js.map +0 -1
- package/es/chat-engine/components/a2ui/primitives/A2UIChoicePicker.d.ts +0 -13
- package/es/chat-engine/components/a2ui/primitives/A2UIChoicePicker.js +0 -89
- package/es/chat-engine/components/a2ui/primitives/A2UIChoicePicker.js.map +0 -1
- package/es/chat-engine/components/a2ui/primitives/A2UIDivider.d.ts +0 -12
- package/es/chat-engine/components/a2ui/primitives/A2UIDivider.js +0 -25
- package/es/chat-engine/components/a2ui/primitives/A2UIDivider.js.map +0 -1
- package/es/chat-engine/components/a2ui/primitives/A2UIIcon.d.ts +0 -13
- package/es/chat-engine/components/a2ui/primitives/A2UIIcon.js +0 -138942
- package/es/chat-engine/components/a2ui/primitives/A2UIIcon.js.map +0 -1
- package/es/chat-engine/components/a2ui/primitives/A2UIImage.d.ts +0 -12
- package/es/chat-engine/components/a2ui/primitives/A2UIImage.js +0 -75
- package/es/chat-engine/components/a2ui/primitives/A2UIImage.js.map +0 -1
- package/es/chat-engine/components/a2ui/primitives/A2UIInput.d.ts +0 -20
- package/es/chat-engine/components/a2ui/primitives/A2UIInput.js +0 -63
- package/es/chat-engine/components/a2ui/primitives/A2UIInput.js.map +0 -1
- package/es/chat-engine/components/a2ui/primitives/A2UIRadioGroup.d.ts +0 -56
- package/es/chat-engine/components/a2ui/primitives/A2UIRadioGroup.js +0 -64
- package/es/chat-engine/components/a2ui/primitives/A2UIRadioGroup.js.map +0 -1
- package/es/chat-engine/components/a2ui/primitives/A2UISlider.d.ts +0 -12
- package/es/chat-engine/components/a2ui/primitives/A2UISlider.js +0 -55
- package/es/chat-engine/components/a2ui/primitives/A2UISlider.js.map +0 -1
- package/es/chat-engine/components/a2ui/primitives/A2UIText.d.ts +0 -12
- package/es/chat-engine/components/a2ui/primitives/A2UIText.js +0 -104
- package/es/chat-engine/components/a2ui/primitives/A2UIText.js.map +0 -1
- package/es/chat-engine/components/a2ui/primitives/A2UITextField.d.ts +0 -12
- package/es/chat-engine/components/a2ui/primitives/A2UITextField.js +0 -80
- package/es/chat-engine/components/a2ui/primitives/A2UITextField.js.map +0 -1
- package/es/chat-engine/components/a2ui/primitives/index.d.ts +0 -15
- package/es/chat-engine/components/a2ui/primitives/index.js +0 -39
- package/es/chat-engine/components/a2ui/primitives/index.js.map +0 -1
- package/es/chat-engine/components/a2ui/registry.d.ts +0 -35
- package/es/chat-engine/components/a2ui/registry.js +0 -74
- package/es/chat-engine/components/a2ui/registry.js.map +0 -1
- package/es/chat-engine/components/json-render/A2UIJsonRenderActivityRenderer.d.ts +0 -36
- package/es/chat-engine/components/json-render/A2UIJsonRenderActivityRenderer.js +0 -36
- package/es/chat-engine/components/json-render/A2UIJsonRenderActivityRenderer.js.map +0 -1
- package/es/chat-engine/components/json-render/JsonRenderActivityRenderer.d.ts +0 -46
- package/es/chat-engine/components/json-render/JsonRenderActivityRenderer.js +0 -36
- package/es/chat-engine/components/json-render/JsonRenderActivityRenderer.js.map +0 -1
- package/es/chat-engine/components/json-render/SurfaceStateManager.d.ts +0 -113
- package/es/chat-engine/components/json-render/SurfaceStateManager.js +0 -195
- package/es/chat-engine/components/json-render/SurfaceStateManager.js.map +0 -1
- package/es/chat-engine/components/json-render/adapters/a2ui-to-jsonrender.d.ts +0 -49
- package/es/chat-engine/components/json-render/adapters/a2ui-to-jsonrender.js +0 -307
- package/es/chat-engine/components/json-render/adapters/a2ui-to-jsonrender.js.map +0 -1
- package/es/chat-engine/components/json-render/adapters/a2ui-types.d.ts +0 -96
- package/es/chat-engine/components/json-render/adapters/a2ui-types.js +0 -7
- package/es/chat-engine/components/json-render/adapters/a2ui-types.js.map +0 -1
- package/es/chat-engine/components/json-render/adapters/index.d.ts +0 -7
- package/es/chat-engine/components/json-render/adapters/index.js +0 -11
- package/es/chat-engine/components/json-render/adapters/index.js.map +0 -1
- package/es/chat-engine/components/json-render/catalog/a2ui-binding.d.ts +0 -64
- package/es/chat-engine/components/json-render/catalog/a2ui-binding.js +0 -36
- package/es/chat-engine/components/json-render/catalog/a2ui-binding.js.map +0 -1
- package/es/chat-engine/components/json-render/catalog/a2ui-registry.d.ts +0 -78
- package/es/chat-engine/components/json-render/catalog/a2ui-registry.js +0 -36
- package/es/chat-engine/components/json-render/catalog/a2ui-registry.js.map +0 -1
- package/es/chat-engine/components/json-render/catalog/button.d.ts +0 -14
- package/es/chat-engine/components/json-render/catalog/button.js +0 -71
- package/es/chat-engine/components/json-render/catalog/button.js.map +0 -1
- package/es/chat-engine/components/json-render/catalog/card.d.ts +0 -11
- package/es/chat-engine/components/json-render/catalog/card.js +0 -57
- package/es/chat-engine/components/json-render/catalog/card.js.map +0 -1
- package/es/chat-engine/components/json-render/catalog/index.d.ts +0 -128
- package/es/chat-engine/components/json-render/catalog/index.js +0 -36
- package/es/chat-engine/components/json-render/catalog/index.js.map +0 -1
- package/es/chat-engine/components/json-render/catalog/input.d.ts +0 -20
- package/es/chat-engine/components/json-render/catalog/input.js +0 -36
- package/es/chat-engine/components/json-render/catalog/input.js.map +0 -1
- package/es/chat-engine/components/json-render/catalog/layout.d.ts +0 -44
- package/es/chat-engine/components/json-render/catalog/layout.js +0 -129
- package/es/chat-engine/components/json-render/catalog/layout.js.map +0 -1
- package/es/chat-engine/components/json-render/catalog/text.d.ts +0 -11
- package/es/chat-engine/components/json-render/catalog/text.js +0 -31
- package/es/chat-engine/components/json-render/catalog/text.js.map +0 -1
- package/es/chat-engine/components/json-render/catalog.d.ts +0 -614
- package/es/chat-engine/components/json-render/catalog.js +0 -779
- package/es/chat-engine/components/json-render/catalog.js.map +0 -1
- package/es/chat-engine/components/json-render/config.d.ts +0 -154
- package/es/chat-engine/components/json-render/config.js +0 -36
- package/es/chat-engine/components/json-render/config.js.map +0 -1
- package/es/chat-engine/components/json-render/engine.d.ts +0 -58
- package/es/chat-engine/components/json-render/engine.js +0 -88
- package/es/chat-engine/components/json-render/engine.js.map +0 -1
- package/es/chat-engine/components/json-render/performance.d.ts +0 -91
- package/es/chat-engine/components/json-render/performance.js +0 -135
- package/es/chat-engine/components/json-render/performance.js.map +0 -1
- package/es/chat-engine/components/json-render/renderer/index.d.ts +0 -71
- package/es/chat-engine/components/json-render/renderer/index.js +0 -125
- package/es/chat-engine/components/json-render/renderer/index.js.map +0 -1
- package/es/chat-engine/components/json-render/renderer.d.ts +0 -71
- package/es/chat-engine/components/json-render/renderer.js +0 -124
- package/es/chat-engine/components/json-render/renderer.js.map +0 -1
- package/es/chat-engine/core/a2ui/index.d.ts +0 -10
- package/es/chat-engine/core/a2ui/index.js +0 -24
- package/es/chat-engine/core/a2ui/index.js.map +0 -1
- package/es/chat-engine/core/a2ui/processor/A2uiMessageProcessor.d.ts +0 -197
- package/es/chat-engine/core/a2ui/processor/A2uiMessageProcessor.js +0 -438
- package/es/chat-engine/core/a2ui/processor/A2uiMessageProcessor.js.map +0 -1
- package/es/chat-engine/core/a2ui/processor/ComponentTree.d.ts +0 -53
- package/es/chat-engine/core/a2ui/processor/ComponentTree.js +0 -158
- package/es/chat-engine/core/a2ui/processor/ComponentTree.js.map +0 -1
- package/es/chat-engine/core/a2ui/processor/DataStore.d.ts +0 -63
- package/es/chat-engine/core/a2ui/processor/DataStore.js +0 -172
- package/es/chat-engine/core/a2ui/processor/DataStore.js.map +0 -1
- package/es/chat-engine/core/a2ui/processor/PathResolver.d.ts +0 -47
- package/es/chat-engine/core/a2ui/processor/PathResolver.js +0 -99
- package/es/chat-engine/core/a2ui/processor/PathResolver.js.map +0 -1
- package/es/chat-engine/core/a2ui/types/index.d.ts +0 -4
- package/es/chat-engine/core/a2ui/types/index.js +0 -9
- package/es/chat-engine/core/a2ui/types/index.js.map +0 -1
- package/es/chat-engine/core/a2ui/types/types.d.ts +0 -770
- package/es/chat-engine/core/a2ui/types/types.js +0 -104
- package/es/chat-engine/core/a2ui/types/types.js.map +0 -1
- package/es/chat-engine/core/a2ui/utils/binding.d.ts +0 -34
- package/es/chat-engine/core/a2ui/utils/binding.js +0 -1784
- package/es/chat-engine/core/a2ui/utils/binding.js.map +0 -1
- package/es/chat-engine/core/a2ui/utils/index.d.ts +0 -5
- package/es/chat-engine/core/a2ui/utils/index.js +0 -13
- package/es/chat-engine/core/a2ui/utils/index.js.map +0 -1
- package/es/chat-engine/core/a2ui/utils/validation.d.ts +0 -70
- package/es/chat-engine/core/a2ui/utils/validation.js +0 -333
- package/es/chat-engine/core/a2ui/utils/validation.js.map +0 -1
- package/es/chat-engine/core/adapters/agui/activity-manager.d.ts +0 -102
- package/es/chat-engine/core/adapters/agui/activity-manager.js +0 -150
- package/es/chat-engine/core/adapters/agui/activity-manager.js.map +0 -1
- package/es/chat-engine/core/adapters/agui/events.d.ts +0 -1550
- package/es/chat-engine/core/adapters/agui/events.js +0 -199
- package/es/chat-engine/core/adapters/agui/events.js.map +0 -1
- package/es/chat-engine/core/adapters/agui/state-manager.d.ts +0 -99
- package/es/chat-engine/core/adapters/agui/state-manager.js +0 -174
- package/es/chat-engine/core/adapters/agui/state-manager.js.map +0 -1
- package/es/chat-engine/core/adapters/agui/types.d.ts +0 -818
- package/es/chat-engine/core/adapters/agui/types.js +0 -95
- package/es/chat-engine/core/adapters/agui/types.js.map +0 -1
- package/es/chat-engine/hooks/a2ui/A2UIContext.d.ts +0 -90
- package/es/chat-engine/hooks/a2ui/A2UIContext.js +0 -97
- package/es/chat-engine/hooks/a2ui/A2UIContext.js.map +0 -1
- package/es/chat-engine/hooks/a2ui/index.d.ts +0 -12
- package/es/chat-engine/hooks/a2ui/index.js +0 -19
- package/es/chat-engine/hooks/a2ui/index.js.map +0 -1
- package/es/chat-engine/hooks/a2ui/useA2UIAction.d.ts +0 -40
- package/es/chat-engine/hooks/a2ui/useA2UIAction.js +0 -74
- package/es/chat-engine/hooks/a2ui/useA2UIAction.js.map +0 -1
- package/es/chat-engine/hooks/a2ui/useA2UISurface.d.ts +0 -36
- package/es/chat-engine/hooks/a2ui/useA2UISurface.js +0 -39
- package/es/chat-engine/hooks/a2ui/useA2UISurface.js.map +0 -1
- package/es/chat-engine/hooks/a2ui/useDataBinding.d.ts +0 -53
- package/es/chat-engine/hooks/a2ui/useDataBinding.js +0 -111
- package/es/chat-engine/hooks/a2ui/useDataBinding.js.map +0 -1
- package/es/chat-engine/hooks/useJsonRenderActivity.d.ts +0 -56
- package/es/chat-engine/hooks/useJsonRenderActivity.js +0 -63
- package/es/chat-engine/hooks/useJsonRenderActivity.js.map +0 -1
- package/es/chat-filecard/_example-js/base.d.ts +0 -1
- package/es/chat-loading/_example-js/base.d.ts +0 -2
- package/es/chat-loading/_example-js/text.d.ts +0 -2
- package/es/chat-markdown/_example-js/base.d.ts +0 -1
- package/es/chat-markdown/_example-js/custom.d.ts +0 -2
- package/es/chat-markdown/_example-js/event.d.ts +0 -1
- package/es/chat-markdown/_example-js/footnote.d.ts +0 -2
- package/es/chat-markdown/_example-js/plugin.d.ts +0 -2
- package/es/chat-markdown/_example-js/theme.d.ts +0 -2
- package/es/chat-message/_example-js/action.d.ts +0 -1
- package/es/chat-message/_example-js/base.d.ts +0 -1
- package/es/chat-message/_example-js/configure.d.ts +0 -1
- package/es/chat-message/_example-js/content.d.ts +0 -1
- package/es/chat-message/_example-js/custom.d.ts +0 -1
- package/es/chat-message/_example-js/handle-actions.d.ts +0 -7
- package/es/chat-message/_example-js/status.d.ts +0 -1
- package/es/chat-message/_example-js/think.d.ts +0 -1
- package/es/chat-sender/_example-js/attachment.d.ts +0 -2
- package/es/chat-sender/_example-js/base.d.ts +0 -2
- package/es/chat-sender/_example-js/custom.d.ts +0 -2
- package/es/chat-thinking/_example-js/base.d.ts +0 -1
- package/es/chat-thinking/_example-js/style.d.ts +0 -1
- package/es/chatbot/_example-js/agent.d.ts +0 -1
- package/es/chatbot/_example-js/agui.d.ts +0 -13
- package/es/chatbot/_example-js/backup/travel.d.ts +0 -1
- package/es/chatbot/_example-js/basic.d.ts +0 -1
- package/es/chatbot/_example-js/code.d.ts +0 -1
- package/es/chatbot/_example-js/components/ItineraryCard.d.ts +0 -3
- package/es/chatbot/_example-js/components/login.d.ts +0 -1
- package/es/chatbot/_example-js/comprehensive.d.ts +0 -1
- package/es/chatbot/_example-js/custom-content.d.ts +0 -1
- package/es/chatbot/_example-js/custom-merge.d.ts +0 -1
- package/es/chatbot/_example-js/custom.d.ts +0 -1
- package/es/chatbot/_example-js/docs.d.ts +0 -1
- package/es/chatbot/_example-js/image.d.ts +0 -1
- package/es/chatbot/_example-js/initial-messages.d.ts +0 -9
- package/es/chatbot/_example-js/instance-methods.d.ts +0 -14
- package/es/chatbot/_example-js/nostream.d.ts +0 -1
- package/es/chatbot/_example-js/quick-start.d.ts +0 -9
- package/es/chatbot/_example-js/research.d.ts +0 -1
- package/es/chatbot/_example-js/role-message-config.d.ts +0 -22
- package/es/chatbot/_example-js/sender-config.d.ts +0 -20
- package/es/chatbot/_example-js/service-config.d.ts +0 -17
- package/es/chatbot/_example-js/simple.d.ts +0 -1
- package/es/chatbot/_example-js/utils/messageRenderer.d.ts +0 -5
- package/es/chatbot/docs/react-best-practice.d.ts +0 -13
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* OpenClaw 历史消息转换器
|
|
3
|
+
*
|
|
4
|
+
* 将 OpenClaw `sessions.history` RPC 返回的消息格式转换为 ChatEngine 的 ChatMessagesData 格式。
|
|
5
|
+
*
|
|
6
|
+
* OpenClaw 历史消息格式(来自实际 Gateway 返回):
|
|
7
|
+
*
|
|
8
|
+
* 1. user 消息:
|
|
9
|
+
* {
|
|
10
|
+
* role: 'user',
|
|
11
|
+
* content: [{ type: 'text', text: '...' }],
|
|
12
|
+
* timestamp: number,
|
|
13
|
+
* senderLabel: string,
|
|
14
|
+
* }
|
|
15
|
+
*
|
|
16
|
+
* 2. assistant 消息:
|
|
17
|
+
* {
|
|
18
|
+
* role: 'assistant',
|
|
19
|
+
* content: [
|
|
20
|
+
* { type: 'text', text: '...' }, // 文本内容
|
|
21
|
+
* { type: 'toolCall', id: '...', name: '...', arguments: {...} }, // 工具调用
|
|
22
|
+
* ],
|
|
23
|
+
* api: string, provider: string, model: string,
|
|
24
|
+
* stopReason: 'stop' | 'toolUse' | 'aborted',
|
|
25
|
+
* timestamp: number,
|
|
26
|
+
* errorMessage?: string,
|
|
27
|
+
* openclawAbort?: { aborted: boolean, origin: string, runId: string },
|
|
28
|
+
* }
|
|
29
|
+
*
|
|
30
|
+
* 3. toolResult 消息:
|
|
31
|
+
* {
|
|
32
|
+
* role: 'toolResult',
|
|
33
|
+
* toolCallId: string,
|
|
34
|
+
* toolName: string,
|
|
35
|
+
* content: [{ type: 'text', text: '...' }],
|
|
36
|
+
* isError: boolean,
|
|
37
|
+
* timestamp: number,
|
|
38
|
+
* }
|
|
39
|
+
*/
|
|
40
|
+
import type { ChatMessagesData } from '../../type';
|
|
41
|
+
/**
|
|
42
|
+
* OpenClaw 历史消息内容项
|
|
43
|
+
*/
|
|
44
|
+
export interface OpenClawHistoryContentItem {
|
|
45
|
+
type: string;
|
|
46
|
+
text?: string;
|
|
47
|
+
id?: string;
|
|
48
|
+
name?: string;
|
|
49
|
+
arguments?: Record<string, unknown>;
|
|
50
|
+
[key: string]: unknown;
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* OpenClaw 历史消息
|
|
54
|
+
*/
|
|
55
|
+
export interface OpenClawHistoryMessage {
|
|
56
|
+
role: 'user' | 'assistant' | 'toolResult' | 'system';
|
|
57
|
+
content?: OpenClawHistoryContentItem[] | string;
|
|
58
|
+
timestamp?: number;
|
|
59
|
+
senderLabel?: string;
|
|
60
|
+
api?: string;
|
|
61
|
+
provider?: string;
|
|
62
|
+
model?: string;
|
|
63
|
+
stopReason?: string;
|
|
64
|
+
errorMessage?: string;
|
|
65
|
+
openclawAbort?: {
|
|
66
|
+
aborted: boolean;
|
|
67
|
+
origin: string;
|
|
68
|
+
runId: string;
|
|
69
|
+
};
|
|
70
|
+
toolCallId?: string;
|
|
71
|
+
toolName?: string;
|
|
72
|
+
isError?: boolean;
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* OpenClaw sessions.history 响应
|
|
76
|
+
*/
|
|
77
|
+
export interface OpenClawHistoryResponse {
|
|
78
|
+
sessionKey: string;
|
|
79
|
+
sessionId: string;
|
|
80
|
+
messages: OpenClawHistoryMessage[];
|
|
81
|
+
thinkingLevel?: string;
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* 将 OpenClaw 历史消息数组转换为 ChatEngine 的 ChatMessagesData 数组
|
|
85
|
+
*
|
|
86
|
+
* 转换策略:
|
|
87
|
+
* 1. user → UserMessage(直接映射文本内容)
|
|
88
|
+
* 2. assistant → AIMessage(文本内容 + toolCall 转为 toolcall content)
|
|
89
|
+
* 3. toolResult → 合并到前一个 assistant 消息的对应 toolcall 中作为 result
|
|
90
|
+
* 4. 跳过空内容和被中止的消息
|
|
91
|
+
* 5. 连续的 assistant 消息(stopReason: 'toolUse' 后跟 toolResult 再跟 assistant)
|
|
92
|
+
* 会被合并为一条完整的 AIMessage
|
|
93
|
+
*
|
|
94
|
+
* @param messages OpenClaw 格式的历史消息数组
|
|
95
|
+
* @param options 转换选项
|
|
96
|
+
* @returns ChatEngine 格式的消息数组
|
|
97
|
+
*/
|
|
98
|
+
export declare function convertOpenClawHistory(messages: OpenClawHistoryMessage[], options?: ConvertHistoryOptions): ChatMessagesData[];
|
|
99
|
+
/**
|
|
100
|
+
* 从 OpenClaw sessions.history 响应体中提取并转换消息
|
|
101
|
+
* 这是一个便捷方法,直接接受 RPC 响应的 payload
|
|
102
|
+
*/
|
|
103
|
+
export declare function convertOpenClawHistoryResponse(response: OpenClawHistoryResponse, options?: ConvertHistoryOptions): ChatMessagesData[];
|
|
104
|
+
export interface ConvertHistoryOptions {
|
|
105
|
+
/**
|
|
106
|
+
* 是否将 toolCall 的详细参数和结果展示在 toolcall 组件中
|
|
107
|
+
* 默认 true
|
|
108
|
+
*/
|
|
109
|
+
showToolCallDetails?: boolean;
|
|
110
|
+
/**
|
|
111
|
+
* 是否跳过被中止的消息
|
|
112
|
+
* 默认 true
|
|
113
|
+
*/
|
|
114
|
+
skipAborted?: boolean;
|
|
115
|
+
/**
|
|
116
|
+
* 自定义 toolCall 渲染名映射
|
|
117
|
+
* 例如 { 'read': 'file_reader', 'exec': 'command_runner' }
|
|
118
|
+
*/
|
|
119
|
+
toolCallNameMap?: Record<string, string>;
|
|
120
|
+
}
|
|
@@ -0,0 +1,251 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* tdesign v1.1.0-alpha.16
|
|
3
|
+
* (c) 2026 tdesign
|
|
4
|
+
* @license MIT
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
import _toConsumableArray from '@babel/runtime/helpers/toConsumableArray';
|
|
8
|
+
import '../shared/index.js';
|
|
9
|
+
import { generateUUID } from './utils.js';
|
|
10
|
+
import { createToolCallContent } from '../agui/utils.js';
|
|
11
|
+
import '../shared/content-factory.js';
|
|
12
|
+
import '../shared/merge-utils.js';
|
|
13
|
+
import '../shared/activity-manager.js';
|
|
14
|
+
import '../agui/ActivityManager.js';
|
|
15
|
+
import '@babel/runtime/helpers/classCallCheck';
|
|
16
|
+
import '@babel/runtime/helpers/createClass';
|
|
17
|
+
import '@babel/runtime/helpers/defineProperty';
|
|
18
|
+
import '../../utils/index.js';
|
|
19
|
+
import '../../utils/immutable-patch.js';
|
|
20
|
+
import '@babel/runtime/helpers/typeof';
|
|
21
|
+
import '@babel/runtime/helpers/objectWithoutProperties';
|
|
22
|
+
import '@babel/runtime/helpers/toArray';
|
|
23
|
+
|
|
24
|
+
function _createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
|
|
25
|
+
function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
|
|
26
|
+
function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
|
|
27
|
+
function convertOpenClawHistory(messages, options) {
|
|
28
|
+
var result = [];
|
|
29
|
+
var toolResultMap = /* @__PURE__ */new Map();
|
|
30
|
+
var _iterator = _createForOfIteratorHelper(messages),
|
|
31
|
+
_step;
|
|
32
|
+
try {
|
|
33
|
+
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
34
|
+
var _msg = _step.value;
|
|
35
|
+
if (_msg.role === "toolResult" && _msg.toolCallId) {
|
|
36
|
+
var _msg$isError;
|
|
37
|
+
var _text = extractTextFromContent(_msg.content);
|
|
38
|
+
toolResultMap.set(_msg.toolCallId, {
|
|
39
|
+
content: _text,
|
|
40
|
+
isError: (_msg$isError = _msg.isError) !== null && _msg$isError !== void 0 ? _msg$isError : false
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
} catch (err) {
|
|
45
|
+
_iterator.e(err);
|
|
46
|
+
} finally {
|
|
47
|
+
_iterator.f();
|
|
48
|
+
}
|
|
49
|
+
var pendingAIMessage = null;
|
|
50
|
+
for (var i = 0; i < messages.length; i++) {
|
|
51
|
+
var msg = messages[i];
|
|
52
|
+
switch (msg.role) {
|
|
53
|
+
case "user":
|
|
54
|
+
{
|
|
55
|
+
if (pendingAIMessage) {
|
|
56
|
+
result.push(pendingAIMessage);
|
|
57
|
+
pendingAIMessage = null;
|
|
58
|
+
}
|
|
59
|
+
var userMsg = convertUserMessage(msg);
|
|
60
|
+
if (userMsg) {
|
|
61
|
+
result.push(userMsg);
|
|
62
|
+
}
|
|
63
|
+
break;
|
|
64
|
+
}
|
|
65
|
+
case "assistant":
|
|
66
|
+
{
|
|
67
|
+
if (isAbortedEmpty(msg)) {
|
|
68
|
+
break;
|
|
69
|
+
}
|
|
70
|
+
var aiContents = convertAssistantContent(msg, toolResultMap, options);
|
|
71
|
+
if (aiContents.length === 0) {
|
|
72
|
+
break;
|
|
73
|
+
}
|
|
74
|
+
if (pendingAIMessage) {
|
|
75
|
+
pendingAIMessage.content = [].concat(_toConsumableArray(pendingAIMessage.content || []), _toConsumableArray(aiContents));
|
|
76
|
+
if (msg.stopReason === "stop") {
|
|
77
|
+
pendingAIMessage.status = "complete";
|
|
78
|
+
}
|
|
79
|
+
} else {
|
|
80
|
+
pendingAIMessage = {
|
|
81
|
+
id: generateUUID(),
|
|
82
|
+
role: "assistant",
|
|
83
|
+
content: aiContents,
|
|
84
|
+
status: msg.stopReason === "stop" ? "complete" : "complete",
|
|
85
|
+
datetime: msg.timestamp ? new Date(msg.timestamp).toISOString() : void 0,
|
|
86
|
+
ext: {
|
|
87
|
+
model: msg.model,
|
|
88
|
+
provider: msg.provider
|
|
89
|
+
}
|
|
90
|
+
};
|
|
91
|
+
}
|
|
92
|
+
if (msg.stopReason === "stop" || msg.stopReason === "aborted") {
|
|
93
|
+
if (pendingAIMessage) {
|
|
94
|
+
result.push(pendingAIMessage);
|
|
95
|
+
pendingAIMessage = null;
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
break;
|
|
99
|
+
}
|
|
100
|
+
case "toolResult":
|
|
101
|
+
{
|
|
102
|
+
break;
|
|
103
|
+
}
|
|
104
|
+
case "system":
|
|
105
|
+
{
|
|
106
|
+
if (pendingAIMessage) {
|
|
107
|
+
result.push(pendingAIMessage);
|
|
108
|
+
pendingAIMessage = null;
|
|
109
|
+
}
|
|
110
|
+
var text = extractTextFromContent(msg.content);
|
|
111
|
+
if (text) {
|
|
112
|
+
result.push({
|
|
113
|
+
id: generateUUID(),
|
|
114
|
+
role: "system",
|
|
115
|
+
content: [{
|
|
116
|
+
type: "text",
|
|
117
|
+
data: text,
|
|
118
|
+
status: "complete"
|
|
119
|
+
}],
|
|
120
|
+
datetime: msg.timestamp ? new Date(msg.timestamp).toISOString() : void 0
|
|
121
|
+
});
|
|
122
|
+
}
|
|
123
|
+
break;
|
|
124
|
+
}
|
|
125
|
+
default:
|
|
126
|
+
break;
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
if (pendingAIMessage) {
|
|
130
|
+
result.push(pendingAIMessage);
|
|
131
|
+
}
|
|
132
|
+
return result;
|
|
133
|
+
}
|
|
134
|
+
function convertOpenClawHistoryResponse(response, options) {
|
|
135
|
+
return convertOpenClawHistory(response.messages || [], options);
|
|
136
|
+
}
|
|
137
|
+
function convertUserMessage(msg) {
|
|
138
|
+
var text = extractTextFromContent(msg.content);
|
|
139
|
+
if (!text) return null;
|
|
140
|
+
return {
|
|
141
|
+
id: generateUUID(),
|
|
142
|
+
role: "user",
|
|
143
|
+
content: [{
|
|
144
|
+
type: "text",
|
|
145
|
+
data: text
|
|
146
|
+
}],
|
|
147
|
+
datetime: msg.timestamp ? new Date(msg.timestamp).toISOString() : void 0
|
|
148
|
+
};
|
|
149
|
+
}
|
|
150
|
+
function convertAssistantContent(msg, toolResultMap, options) {
|
|
151
|
+
var contents = [];
|
|
152
|
+
var contentArr = normalizeContent(msg.content);
|
|
153
|
+
var _iterator2 = _createForOfIteratorHelper(contentArr),
|
|
154
|
+
_step2;
|
|
155
|
+
try {
|
|
156
|
+
for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
|
|
157
|
+
var item = _step2.value;
|
|
158
|
+
switch (item.type) {
|
|
159
|
+
case "text":
|
|
160
|
+
{
|
|
161
|
+
if (item.text) {
|
|
162
|
+
contents.push({
|
|
163
|
+
type: "text",
|
|
164
|
+
data: item.text,
|
|
165
|
+
status: "complete"
|
|
166
|
+
});
|
|
167
|
+
}
|
|
168
|
+
break;
|
|
169
|
+
}
|
|
170
|
+
case "toolCall":
|
|
171
|
+
{
|
|
172
|
+
var toolCallId = item.id || "";
|
|
173
|
+
var toolCallName = getToolCallName(item.name, options);
|
|
174
|
+
var rawArgs = item.arguments;
|
|
175
|
+
var argsStr = rawArgs ? typeof rawArgs === "string" ? rawArgs : JSON.stringify(rawArgs) : "";
|
|
176
|
+
var toolResult = toolResultMap.get(toolCallId);
|
|
177
|
+
var resultStr = (toolResult === null || toolResult === void 0 ? void 0 : toolResult.content) || "";
|
|
178
|
+
var toolCall = {
|
|
179
|
+
toolCallId: toolCallId,
|
|
180
|
+
toolCallName: toolCallName,
|
|
181
|
+
eventType: toolResult ? "TOOL_CALL_RESULT" : "TOOL_CALL_START",
|
|
182
|
+
parentMessageId: "",
|
|
183
|
+
args: argsStr,
|
|
184
|
+
result: resultStr
|
|
185
|
+
};
|
|
186
|
+
var status = toolResult ? "complete" : "complete";
|
|
187
|
+
contents.push(createToolCallContent(toolCall, status, "append"));
|
|
188
|
+
break;
|
|
189
|
+
}
|
|
190
|
+
default:
|
|
191
|
+
if (item.text) {
|
|
192
|
+
contents.push({
|
|
193
|
+
type: "text",
|
|
194
|
+
data: item.text,
|
|
195
|
+
status: "complete"
|
|
196
|
+
});
|
|
197
|
+
}
|
|
198
|
+
break;
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
} catch (err) {
|
|
202
|
+
_iterator2.e(err);
|
|
203
|
+
} finally {
|
|
204
|
+
_iterator2.f();
|
|
205
|
+
}
|
|
206
|
+
return contents;
|
|
207
|
+
}
|
|
208
|
+
function extractTextFromContent(content) {
|
|
209
|
+
if (!content) return "";
|
|
210
|
+
if (typeof content === "string") return content;
|
|
211
|
+
if (!Array.isArray(content)) return "";
|
|
212
|
+
return content.filter(function (c) {
|
|
213
|
+
return (c === null || c === void 0 ? void 0 : c.type) === "text" && (c === null || c === void 0 ? void 0 : c.text);
|
|
214
|
+
}).map(function (c) {
|
|
215
|
+
return c.text;
|
|
216
|
+
}).join("");
|
|
217
|
+
}
|
|
218
|
+
function normalizeContent(content) {
|
|
219
|
+
if (!content) return [];
|
|
220
|
+
if (typeof content === "string") {
|
|
221
|
+
return [{
|
|
222
|
+
type: "text",
|
|
223
|
+
text: content
|
|
224
|
+
}];
|
|
225
|
+
}
|
|
226
|
+
if (Array.isArray(content)) return content;
|
|
227
|
+
return [];
|
|
228
|
+
}
|
|
229
|
+
function getToolCallName(name, options) {
|
|
230
|
+
if (options !== null && options !== void 0 && options.toolCallNameMap && name in options.toolCallNameMap) {
|
|
231
|
+
return options.toolCallNameMap[name];
|
|
232
|
+
}
|
|
233
|
+
return name || "unknown";
|
|
234
|
+
}
|
|
235
|
+
function isAbortedEmpty(msg) {
|
|
236
|
+
var _msg$openclawAbort;
|
|
237
|
+
if (msg.stopReason === "aborted" || (_msg$openclawAbort = msg.openclawAbort) !== null && _msg$openclawAbort !== void 0 && _msg$openclawAbort.aborted) {
|
|
238
|
+
var contentArr = normalizeContent(msg.content);
|
|
239
|
+
if (contentArr.length === 0) return true;
|
|
240
|
+
var hasContent = contentArr.some(function (c) {
|
|
241
|
+
if (c.type === "text" && c.text) return true;
|
|
242
|
+
if (c.type === "toolCall") return true;
|
|
243
|
+
return false;
|
|
244
|
+
});
|
|
245
|
+
return !hasContent;
|
|
246
|
+
}
|
|
247
|
+
return false;
|
|
248
|
+
}
|
|
249
|
+
|
|
250
|
+
export { convertOpenClawHistory, convertOpenClawHistoryResponse };
|
|
251
|
+
//# sourceMappingURL=history-converter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"history-converter.js","sources":["../../../../../../pro-components/chat/chat-engine/core/adapters/openclaw/history-converter.ts"],"sourcesContent":["/**\n * OpenClaw 历史消息转换器\n *\n * 将 OpenClaw `sessions.history` RPC 返回的消息格式转换为 ChatEngine 的 ChatMessagesData 格式。\n *\n * OpenClaw 历史消息格式(来自实际 Gateway 返回):\n *\n * 1. user 消息:\n * {\n * role: 'user',\n * content: [{ type: 'text', text: '...' }],\n * timestamp: number,\n * senderLabel: string,\n * }\n *\n * 2. assistant 消息:\n * {\n * role: 'assistant',\n * content: [\n * { type: 'text', text: '...' }, // 文本内容\n * { type: 'toolCall', id: '...', name: '...', arguments: {...} }, // 工具调用\n * ],\n * api: string, provider: string, model: string,\n * stopReason: 'stop' | 'toolUse' | 'aborted',\n * timestamp: number,\n * errorMessage?: string,\n * openclawAbort?: { aborted: boolean, origin: string, runId: string },\n * }\n *\n * 3. toolResult 消息:\n * {\n * role: 'toolResult',\n * toolCallId: string,\n * toolName: string,\n * content: [{ type: 'text', text: '...' }],\n * isError: boolean,\n * timestamp: number,\n * }\n */\nimport type {\n ChatMessagesData,\n AIMessageContent,\n TextContent,\n UserMessage,\n AIMessage,\n} from '../../type';\nimport { createToolCallContent } from '../shared';\nimport { generateUUID } from './utils';\n\n// ==================== OpenClaw 历史消息类型 ====================\n\n/**\n * OpenClaw 历史消息内容项\n */\nexport interface OpenClawHistoryContentItem {\n type: string;\n text?: string;\n // toolCall 类型\n id?: string;\n name?: string;\n arguments?: Record<string, unknown>;\n [key: string]: unknown;\n}\n\n/**\n * OpenClaw 历史消息\n */\nexport interface OpenClawHistoryMessage {\n role: 'user' | 'assistant' | 'toolResult' | 'system';\n content?: OpenClawHistoryContentItem[] | string;\n timestamp?: number;\n senderLabel?: string;\n // assistant 专有\n api?: string;\n provider?: string;\n model?: string;\n stopReason?: string;\n errorMessage?: string;\n openclawAbort?: {\n aborted: boolean;\n origin: string;\n runId: string;\n };\n // toolResult 专有\n toolCallId?: string;\n toolName?: string;\n isError?: boolean;\n}\n\n/**\n * OpenClaw sessions.history 响应\n */\nexport interface OpenClawHistoryResponse {\n sessionKey: string;\n sessionId: string;\n messages: OpenClawHistoryMessage[];\n thinkingLevel?: string;\n}\n\n// ==================== 转换器 ====================\n\n/**\n * 将 OpenClaw 历史消息数组转换为 ChatEngine 的 ChatMessagesData 数组\n *\n * 转换策略:\n * 1. user → UserMessage(直接映射文本内容)\n * 2. assistant → AIMessage(文本内容 + toolCall 转为 toolcall content)\n * 3. toolResult → 合并到前一个 assistant 消息的对应 toolcall 中作为 result\n * 4. 跳过空内容和被中止的消息\n * 5. 连续的 assistant 消息(stopReason: 'toolUse' 后跟 toolResult 再跟 assistant)\n * 会被合并为一条完整的 AIMessage\n *\n * @param messages OpenClaw 格式的历史消息数组\n * @param options 转换选项\n * @returns ChatEngine 格式的消息数组\n */\nexport function convertOpenClawHistory(\n messages: OpenClawHistoryMessage[],\n options?: ConvertHistoryOptions,\n): ChatMessagesData[] {\n const result: ChatMessagesData[] = [];\n const toolResultMap = new Map<string, { content: string; isError: boolean }>();\n\n // 第一遍:收集所有 toolResult,建立 toolCallId → result 映射\n for (const msg of messages) {\n if (msg.role === 'toolResult' && msg.toolCallId) {\n const text = extractTextFromContent(msg.content);\n toolResultMap.set(msg.toolCallId, {\n content: text,\n isError: msg.isError ?? false,\n });\n }\n }\n\n // 第二遍:转换消息\n // 用于追踪当前可合并的 assistant 消息\n let pendingAIMessage: AIMessage | null = null;\n\n for (let i = 0; i < messages.length; i++) {\n const msg = messages[i];\n\n switch (msg.role) {\n case 'user': {\n // 先 flush 之前的 pending AI 消息\n if (pendingAIMessage) {\n result.push(pendingAIMessage);\n pendingAIMessage = null;\n }\n const userMsg = convertUserMessage(msg);\n if (userMsg) {\n result.push(userMsg);\n }\n break;\n }\n\n case 'assistant': {\n // 跳过被中止且无内容的消息\n if (isAbortedEmpty(msg)) {\n break;\n }\n\n const aiContents = convertAssistantContent(msg, toolResultMap, options);\n\n if (aiContents.length === 0) {\n break;\n }\n\n if (pendingAIMessage) {\n // 合并到前一个 pending AI 消息中(多轮 tool loop 场景)\n pendingAIMessage.content = [...(pendingAIMessage.content || []), ...aiContents];\n // 更新 status\n if (msg.stopReason === 'stop') {\n pendingAIMessage.status = 'complete';\n }\n } else {\n pendingAIMessage = {\n id: generateUUID(),\n role: 'assistant',\n content: aiContents,\n status: msg.stopReason === 'stop' ? 'complete' : 'complete',\n datetime: msg.timestamp ? new Date(msg.timestamp).toISOString() : undefined,\n ext: {\n model: msg.model,\n provider: msg.provider,\n },\n };\n }\n\n // 如果 stopReason 是 'stop',flush 这个 AI 消息\n // 如果是 'toolUse',保持 pending 等待后续 toolResult + assistant 合并\n if (msg.stopReason === 'stop' || msg.stopReason === 'aborted') {\n if (pendingAIMessage) {\n result.push(pendingAIMessage);\n pendingAIMessage = null;\n }\n }\n break;\n }\n\n case 'toolResult': {\n // toolResult 已经在第一遍收集到 toolResultMap 中\n // 它们会在 convertAssistantContent 时自动关联到对应的 toolCall\n // 这里不需要额外处理\n break;\n }\n\n case 'system': {\n // flush pending\n if (pendingAIMessage) {\n result.push(pendingAIMessage);\n pendingAIMessage = null;\n }\n const text = extractTextFromContent(msg.content);\n if (text) {\n result.push({\n id: generateUUID(),\n role: 'system',\n content: [{ type: 'text', data: text, status: 'complete' }],\n datetime: msg.timestamp ? new Date(msg.timestamp).toISOString() : undefined,\n });\n }\n break;\n }\n\n default:\n break;\n }\n }\n\n // flush 最后一个 pending AI 消息\n if (pendingAIMessage) {\n result.push(pendingAIMessage);\n }\n\n return result;\n}\n\n/**\n * 从 OpenClaw sessions.history 响应体中提取并转换消息\n * 这是一个便捷方法,直接接受 RPC 响应的 payload\n */\nexport function convertOpenClawHistoryResponse(\n response: OpenClawHistoryResponse,\n options?: ConvertHistoryOptions,\n): ChatMessagesData[] {\n return convertOpenClawHistory(response.messages || [], options);\n}\n\n// ==================== 转换选项 ====================\n\nexport interface ConvertHistoryOptions {\n /**\n * 是否将 toolCall 的详细参数和结果展示在 toolcall 组件中\n * 默认 true\n */\n showToolCallDetails?: boolean;\n\n /**\n * 是否跳过被中止的消息\n * 默认 true\n */\n skipAborted?: boolean;\n\n /**\n * 自定义 toolCall 渲染名映射\n * 例如 { 'read': 'file_reader', 'exec': 'command_runner' }\n */\n toolCallNameMap?: Record<string, string>;\n}\n\n// ==================== 内部转换方法 ====================\n\n/**\n * 转换 user 消息\n */\nfunction convertUserMessage(msg: OpenClawHistoryMessage): UserMessage | null {\n const text = extractTextFromContent(msg.content);\n if (!text) return null;\n\n return {\n id: generateUUID(),\n role: 'user',\n content: [{ type: 'text', data: text }],\n datetime: msg.timestamp ? new Date(msg.timestamp).toISOString() : undefined,\n };\n}\n\n/**\n * 转换 assistant 消息的 content 数组为 AIMessageContent 数组\n */\nfunction convertAssistantContent(\n msg: OpenClawHistoryMessage,\n toolResultMap: Map<string, { content: string; isError: boolean }>,\n options?: ConvertHistoryOptions,\n): AIMessageContent[] {\n const contents: AIMessageContent[] = [];\n const contentArr = normalizeContent(msg.content);\n\n for (const item of contentArr) {\n switch (item.type) {\n case 'text': {\n if (item.text) {\n contents.push({\n type: 'text',\n data: item.text,\n status: 'complete',\n } as TextContent);\n }\n break;\n }\n\n case 'toolCall': {\n // 将 OpenClaw 历史中的 toolCall 转换为 ChatEngine 的 toolcall content\n const toolCallId = (item.id || '') as string;\n const toolCallName = getToolCallName(item.name as string, options);\n const rawArgs = item.arguments;\n const argsStr = rawArgs ? (typeof rawArgs === 'string' ? rawArgs : JSON.stringify(rawArgs)) : '';\n\n // 查找对应的 toolResult\n const toolResult = toolResultMap.get(toolCallId);\n const resultStr = toolResult?.content || '';\n\n const toolCall = {\n toolCallId,\n toolCallName,\n eventType: toolResult ? 'TOOL_CALL_RESULT' : 'TOOL_CALL_START',\n parentMessageId: '',\n args: argsStr,\n result: resultStr,\n };\n\n const status = toolResult ? 'complete' : 'complete';\n contents.push(createToolCallContent(toolCall, status, 'append'));\n break;\n }\n\n default:\n // 其他未知类型,尝试作为文本处理\n if (item.text) {\n contents.push({\n type: 'text',\n data: item.text,\n status: 'complete',\n } as TextContent);\n }\n break;\n }\n }\n\n return contents;\n}\n\n/**\n * 从 content 中提取文本\n */\nfunction extractTextFromContent(content: OpenClawHistoryMessage['content']): string {\n if (!content) return '';\n if (typeof content === 'string') return content;\n if (!Array.isArray(content)) return '';\n\n return content\n .filter((c) => c?.type === 'text' && c?.text)\n .map((c) => c.text!)\n .join('');\n}\n\n/**\n * 标准化 content 为数组\n */\nfunction normalizeContent(content: OpenClawHistoryMessage['content']): OpenClawHistoryContentItem[] {\n if (!content) return [];\n if (typeof content === 'string') {\n return [{ type: 'text', text: content }];\n }\n if (Array.isArray(content)) return content;\n return [];\n}\n\n/**\n * 获取映射后的工具名\n */\nfunction getToolCallName(name: string, options?: ConvertHistoryOptions): string {\n if (options?.toolCallNameMap && name in options.toolCallNameMap) {\n return options.toolCallNameMap[name];\n }\n return name || 'unknown';\n}\n\n/**\n * 判断消息是否为被中止的空消息\n */\nfunction isAbortedEmpty(msg: OpenClawHistoryMessage): boolean {\n if (msg.stopReason === 'aborted' || msg.openclawAbort?.aborted) {\n const contentArr = normalizeContent(msg.content);\n // 如果内容为空或只有空文本\n if (contentArr.length === 0) return true;\n const hasContent = contentArr.some((c) => {\n if (c.type === 'text' && c.text) return true;\n if (c.type === 'toolCall') return true;\n return false;\n });\n return !hasContent;\n }\n return false;\n}\n"],"names":["convertOpenClawHistory","messages","options","result","toolResultMap","Map","_iterator","_createForOfIteratorHelper","_step","s","n","done","msg","role","toolCallId","_msg$isError","text","extractTextFromContent","content","set","isError","err","e","f","pendingAIMessage","i","length","push","userMsg","convertUserMessage","isAbortedEmpty","aiContents","convertAssistantContent","concat","_toConsumableArray","stopReason","status","id","generateUUID","datetime","timestamp","Date","toISOString","ext","model","provider","type","data","convertOpenClawHistoryResponse","response","contents","contentArr","normalizeContent","_iterator2","_step2","item","toolCallName","getToolCallName","name","rawArgs","arguments","argsStr","JSON","stringify","toolResult","get","resultStr","toolCall","eventType","parentMessageId","args","createToolCallContent","Array","isArray","filter","c","map","join","toolCallNameMap","_msg$openclawAbort","openclawAbort","aborted","hasContent","some"],"mappings":"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"}
|
|
@@ -11,9 +11,11 @@ import EventEmitter from '../../utils/eventEmitter';
|
|
|
11
11
|
import type { AIMessageContent, ChatRequestParams, SSEChunkData } from '../../type';
|
|
12
12
|
import type { OpenClawConfig } from './types';
|
|
13
13
|
import { OpenClawConnectionState } from './types/events';
|
|
14
|
+
import { type ConvertHistoryOptions } from './history-converter';
|
|
14
15
|
export * from './types';
|
|
15
16
|
export { OpenClawEventMapper, type EventMapResult } from './event-mapper';
|
|
16
17
|
export { OpenClawRPCHandler, RPCError } from './rpc-handler';
|
|
18
|
+
export { convertOpenClawHistory, convertOpenClawHistoryResponse, type OpenClawHistoryMessage, type OpenClawHistoryResponse, type ConvertHistoryOptions, } from './history-converter';
|
|
17
19
|
/**
|
|
18
20
|
* OpenClaw 适配器回调接口
|
|
19
21
|
*/
|
|
@@ -30,6 +32,14 @@ export interface OpenClawAdapterCallbacks {
|
|
|
30
32
|
onError?: (error: Error) => void;
|
|
31
33
|
/** 消息内容更新 */
|
|
32
34
|
onMessage?: (content: AIMessageContent | AIMessageContent[]) => void;
|
|
35
|
+
/**
|
|
36
|
+
* 历史消息加载完成
|
|
37
|
+
*
|
|
38
|
+
* OpenClaw Gateway 在 connect 响应中可能附带历史消息(messages 字段),
|
|
39
|
+
* 当检测到历史消息时,适配器会自动将其转换为 ChatEngine 格式并触发此回调。
|
|
40
|
+
* 上层可以通过 chatEngine.setMessages(messages, 'replace') 回填到对话界面。
|
|
41
|
+
*/
|
|
42
|
+
onHistoryLoaded?: (messages: import('../../type').ChatMessagesData[]) => void;
|
|
33
43
|
}
|
|
34
44
|
/**
|
|
35
45
|
* OpenClaw 适配器配置
|
|
@@ -115,6 +125,23 @@ export declare class OpenClawAdapter extends EventEmitter {
|
|
|
115
125
|
action: string;
|
|
116
126
|
payload: unknown;
|
|
117
127
|
}): Promise<unknown>;
|
|
128
|
+
/**
|
|
129
|
+
* 获取会话历史消息
|
|
130
|
+
*
|
|
131
|
+
* 通过 OpenClaw 的 sessions.history RPC 方法获取指定会话的历史消息,
|
|
132
|
+
* 并自动转换为 ChatEngine 的 ChatMessagesData 格式。
|
|
133
|
+
*
|
|
134
|
+
* @param sessionKey - 会话标识
|
|
135
|
+
* @param options - 转换选项
|
|
136
|
+
* @returns ChatEngine 格式的消息数组,可直接传给 chatEngine.setMessages() 或 useChat 的 defaultMessages
|
|
137
|
+
*
|
|
138
|
+
* @example
|
|
139
|
+
* ```tsx
|
|
140
|
+
* const messages = await adapter.fetchHistory('agent:main:main');
|
|
141
|
+
* chatEngine.setMessages(messages, 'replace');
|
|
142
|
+
* ```
|
|
143
|
+
*/
|
|
144
|
+
fetchHistory(sessionKey: string, options?: ConvertHistoryOptions): Promise<import('../../type').ChatMessagesData[]>;
|
|
118
145
|
/**
|
|
119
146
|
* 断开连接
|
|
120
147
|
*/
|
|
@@ -153,6 +180,9 @@ export declare class OpenClawAdapter extends EventEmitter {
|
|
|
153
180
|
private handleEventFrame;
|
|
154
181
|
/**
|
|
155
182
|
* 处理连接挑战(握手)
|
|
183
|
+
*
|
|
184
|
+
* 认证成功后,如果 connect 响应中包含 messages 字段(历史消息),
|
|
185
|
+
* 会自动转换为 ChatEngine 格式并触发 onHistoryLoaded 回调。
|
|
156
186
|
*/
|
|
157
187
|
private handleConnectChallenge;
|
|
158
188
|
}
|