@tdesign-react/chat 1.1.0-alpha.16 → 1.1.0-alpha.18
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/es/_chunks/{dep-3e40d789.js → dep-5d7a98b7.js} +2 -2
- package/es/_chunks/{dep-3e40d789.js.map → dep-5d7a98b7.js.map} +1 -1
- package/es/_chunks/{dep-1ca64fef.js → dep-907337f3.js} +2 -2
- package/es/_chunks/{dep-93283bbd.js.map → dep-907337f3.js.map} +1 -1
- package/es/_chunks/{dep-dfe91b1f.js → dep-e1e84ed7.js} +1 -1
- package/es/_chunks/{dep-13fe70ea.js.map → dep-e1e84ed7.js.map} +1 -1
- package/es/_chunks/{dep-076af7c3.js → dep-ee7a509c.js} +3 -3
- package/es/_chunks/{dep-076af7c3.js.map → dep-ee7a509c.js.map} +1 -1
- package/es/_util/reactify.js +1 -1
- package/es/_util/useDynamicStyle.js +1 -1
- package/es/attachments/index.js +1 -1
- package/es/chat-actionbar/index.js +1 -1
- package/es/chat-engine/components/activity/index.js +2 -2
- package/es/chat-engine/components/activity/registry.js +1 -1
- package/es/chat-engine/components/activity/render.js +2 -2
- package/es/chat-engine/components/activity/types.js +1 -1
- package/es/chat-engine/components/index.js +12 -6
- package/es/chat-engine/components/index.js.map +1 -1
- package/es/chat-engine/components/json-render/catalog/atomic/button.js +1 -1
- package/es/chat-engine/components/json-render/catalog/atomic/card.js +1 -1
- package/es/chat-engine/components/json-render/catalog/atomic/input.js +12 -6
- package/es/chat-engine/components/json-render/catalog/atomic/input.js.map +1 -1
- package/es/chat-engine/components/json-render/catalog/atomic/layout.js +1 -1
- package/es/chat-engine/components/json-render/catalog/atomic/text.js +1 -1
- package/es/chat-engine/components/json-render/catalog/catalog-to-prompt.js +1 -1
- package/es/chat-engine/components/json-render/contexts/actions.js +2 -2
- package/es/chat-engine/components/json-render/contexts/data.js +2 -2
- package/es/chat-engine/components/json-render/contexts/index.js +2 -2
- package/es/chat-engine/components/json-render/contexts/store.js +1 -1
- package/es/chat-engine/components/json-render/contexts/tree.js +1 -1
- package/es/chat-engine/components/json-render/contexts/validation.js +2 -2
- package/es/chat-engine/components/json-render/contexts/visibility.js +2 -2
- package/es/chat-engine/components/json-render/index.js +12 -6
- package/es/chat-engine/components/json-render/index.js.map +1 -1
- package/es/chat-engine/components/json-render/registry/a2ui-binding.js +12 -6
- package/es/chat-engine/components/json-render/registry/a2ui-binding.js.map +1 -1
- package/es/chat-engine/components/json-render/registry/a2ui-registry.js +12 -6
- package/es/chat-engine/components/json-render/registry/a2ui-registry.js.map +1 -1
- package/es/chat-engine/components/json-render/registry/config.js +12 -6
- package/es/chat-engine/components/json-render/registry/config.js.map +1 -1
- package/es/chat-engine/components/json-render/registry/index.js +12 -6
- package/es/chat-engine/components/json-render/registry/index.js.map +1 -1
- package/es/chat-engine/components/json-render/renderer/A2UIJsonRenderActivityRenderer.js +11 -5
- package/es/chat-engine/components/json-render/renderer/A2UIJsonRenderActivityRenderer.js.map +1 -1
- package/es/chat-engine/components/json-render/renderer/JsonRenderActivityRenderer.js +3 -3
- package/es/chat-engine/components/json-render/renderer/JsonUIRenderer.js +2 -2
- package/es/chat-engine/components/json-render/renderer/_index.js +2 -2
- package/es/chat-engine/components/json-render/types.js +1 -1
- package/es/chat-engine/components/provider/agent-state.js +10 -4
- package/es/chat-engine/components/provider/agent-state.js.map +1 -1
- package/es/chat-engine/components/shared/ComponentErrorBoundary.js +1 -1
- package/es/chat-engine/components/shared/createRegistry.js +1 -1
- package/es/chat-engine/components/shared/index.js +1 -1
- package/es/chat-engine/components/shared/useRegistrationListener.js +1 -1
- package/es/chat-engine/components/toolcall/index.js +10 -4
- package/es/chat-engine/components/toolcall/index.js.map +1 -1
- package/es/chat-engine/components/toolcall/registry.js +1 -1
- package/es/chat-engine/components/toolcall/render.js +9 -3
- package/es/chat-engine/components/toolcall/render.js.map +1 -1
- package/es/chat-engine/components/toolcall/types.js +1 -1
- package/es/chat-engine/core/adapters/a2ui/index.js +1 -1
- package/es/chat-engine/core/adapters/a2ui/processor/A2uiMessageProcessor.js +1 -1
- package/es/chat-engine/core/adapters/a2ui/processor/ComponentTree.js +1 -1
- package/es/chat-engine/core/adapters/a2ui/processor/DataStore.js +1 -1
- package/es/chat-engine/core/adapters/a2ui/processor/PathResolver.js +1 -1
- package/es/chat-engine/core/adapters/a2ui/types/index.js +1 -1
- package/es/chat-engine/core/adapters/a2ui/types/types.js +1 -1
- package/es/chat-engine/core/adapters/a2ui/utils/binding.js +1 -1
- package/es/chat-engine/core/adapters/a2ui/utils/index.js +1 -1
- package/es/chat-engine/core/adapters/a2ui/utils/validation.js +1 -1
- package/es/chat-engine/core/adapters/agui/ActivityManager.js +1 -1
- package/es/chat-engine/core/adapters/agui/StateManager.js +1 -1
- package/es/chat-engine/core/adapters/agui/event-mapper.js +1 -1
- package/es/chat-engine/core/adapters/agui/index.js +21 -52
- package/es/chat-engine/core/adapters/agui/index.js.map +1 -1
- package/es/chat-engine/core/adapters/agui/types/events.js +1 -1
- package/es/chat-engine/core/adapters/agui/types/index.js +1 -1
- package/es/chat-engine/core/adapters/agui/utils.d.ts +25 -2
- package/es/chat-engine/core/adapters/agui/utils.js +52 -12
- package/es/chat-engine/core/adapters/agui/utils.js.map +1 -1
- package/es/chat-engine/core/adapters/index.js +3 -1
- package/es/chat-engine/core/adapters/index.js.map +1 -1
- package/es/chat-engine/core/adapters/json-render/SurfaceStateManager.js +1 -1
- package/es/chat-engine/core/adapters/json-render/a2ui-to-jsonrender.js +1 -1
- package/es/chat-engine/core/adapters/json-render/engine.js +1 -1
- package/es/chat-engine/core/adapters/json-render/index.js +1 -1
- package/es/chat-engine/core/adapters/json-render/types/a2ui.js +1 -1
- package/es/chat-engine/core/adapters/json-render/types/core.js +1 -1
- package/es/chat-engine/core/adapters/json-render/types/index.js +1 -1
- package/es/chat-engine/core/adapters/openclaw/device-key-manager.d.ts +65 -0
- package/es/chat-engine/core/adapters/openclaw/device-key-manager.js +375 -0
- package/es/chat-engine/core/adapters/openclaw/device-key-manager.js.map +1 -0
- package/es/chat-engine/core/adapters/openclaw/event-mapper.d.ts +36 -14
- package/es/chat-engine/core/adapters/openclaw/event-mapper.js +37 -21
- package/es/chat-engine/core/adapters/openclaw/event-mapper.js.map +1 -1
- package/es/chat-engine/core/adapters/openclaw/history-converter.d.ts +120 -0
- package/es/chat-engine/core/adapters/openclaw/history-converter.js +251 -0
- package/es/chat-engine/core/adapters/openclaw/history-converter.js.map +1 -0
- package/es/chat-engine/core/adapters/openclaw/index.d.ts +41 -0
- package/es/chat-engine/core/adapters/openclaw/index.js +146 -46
- package/es/chat-engine/core/adapters/openclaw/index.js.map +1 -1
- package/es/chat-engine/core/adapters/openclaw/rpc-handler.d.ts +13 -0
- package/es/chat-engine/core/adapters/openclaw/rpc-handler.js +20 -1
- package/es/chat-engine/core/adapters/openclaw/rpc-handler.js.map +1 -1
- package/es/chat-engine/core/adapters/openclaw/types/config.d.ts +17 -18
- package/es/chat-engine/core/adapters/openclaw/types/config.js +4 -2
- package/es/chat-engine/core/adapters/openclaw/types/config.js.map +1 -1
- package/es/chat-engine/core/adapters/openclaw/types/events.d.ts +5 -1
- package/es/chat-engine/core/adapters/openclaw/types/events.js +3 -1
- package/es/chat-engine/core/adapters/openclaw/types/events.js.map +1 -1
- package/es/chat-engine/core/adapters/openclaw/types/index.js +1 -1
- package/es/chat-engine/core/adapters/openclaw/types/messages.d.ts +22 -0
- package/es/chat-engine/core/adapters/openclaw/types/messages.js +1 -1
- package/es/chat-engine/core/adapters/openclaw/types/messages.js.map +1 -1
- package/es/chat-engine/core/adapters/openclaw/utils.js +1 -1
- package/es/chat-engine/core/adapters/openclaw/utils.js.map +1 -1
- package/es/chat-engine/core/adapters/shared/activity-manager.js +1 -1
- package/es/chat-engine/core/adapters/shared/content-factory.js +1 -1
- package/es/chat-engine/core/adapters/shared/index.js +1 -1
- package/es/chat-engine/core/adapters/shared/merge-utils.js +1 -1
- package/es/chat-engine/core/event-bus/ChatEventBus.js +1 -1
- package/es/chat-engine/core/event-bus/index.js +1 -1
- package/es/chat-engine/core/event-bus/types.js +1 -1
- package/es/chat-engine/core/index.d.ts +27 -25
- package/es/chat-engine/core/index.js +231 -359
- package/es/chat-engine/core/index.js.map +1 -1
- package/es/chat-engine/core/processor/index.d.ts +32 -0
- package/es/chat-engine/core/processor/index.js +76 -1
- package/es/chat-engine/core/processor/index.js.map +1 -1
- package/es/chat-engine/core/server/batch-client.js +1 -1
- package/es/chat-engine/core/server/connection-manager.js +1 -1
- package/es/chat-engine/core/server/errors.js +1 -1
- package/es/chat-engine/core/server/index.js +1 -21
- package/es/chat-engine/core/server/index.js.map +1 -1
- package/es/chat-engine/core/server/llm-service.d.ts +7 -7
- package/es/chat-engine/core/server/llm-service.js +13 -140
- package/es/chat-engine/core/server/llm-service.js.map +1 -1
- package/es/chat-engine/core/server/sse-client.js +1 -1
- package/es/chat-engine/core/server/sse-parser.js +1 -1
- package/es/chat-engine/core/server/types.js +1 -1
- package/es/chat-engine/core/server/websocket-client.d.ts +2 -0
- package/es/chat-engine/core/server/websocket-client.js +19 -3
- package/es/chat-engine/core/server/websocket-client.js.map +1 -1
- package/es/chat-engine/core/store/message.js +2 -2
- package/es/chat-engine/core/store/model.js +2 -2
- package/es/chat-engine/core/store/reactiveState.js +2 -2
- package/es/chat-engine/core/stream-handlers/agui-stream-handler.d.ts +24 -0
- package/es/chat-engine/core/stream-handlers/agui-stream-handler.js +140 -0
- package/es/chat-engine/core/stream-handlers/agui-stream-handler.js.map +1 -0
- package/es/chat-engine/core/stream-handlers/default-stream-handler.d.ts +7 -0
- package/es/chat-engine/core/stream-handlers/default-stream-handler.js +77 -0
- package/es/chat-engine/core/stream-handlers/default-stream-handler.js.map +1 -0
- package/es/chat-engine/core/stream-handlers/index.d.ts +21 -0
- package/es/chat-engine/core/stream-handlers/index.js +72 -0
- package/es/chat-engine/core/stream-handlers/index.js.map +1 -0
- package/es/chat-engine/core/stream-handlers/openclaw-stream-handler.d.ts +64 -0
- package/es/chat-engine/core/stream-handlers/openclaw-stream-handler.js +320 -0
- package/es/chat-engine/core/stream-handlers/openclaw-stream-handler.js.map +1 -0
- package/es/chat-engine/core/stream-handlers/types.d.ts +47 -0
- package/es/chat-engine/core/stream-handlers/types.js +7 -0
- package/es/chat-engine/core/stream-handlers/types.js.map +1 -0
- package/es/chat-engine/core/type.d.ts +18 -0
- package/es/chat-engine/core/type.js +1 -1
- package/es/chat-engine/core/utils/eventEmitter.js +1 -1
- package/es/chat-engine/core/utils/immutable-patch.js +1 -1
- package/es/chat-engine/core/utils/index.js +1 -1
- package/es/chat-engine/core/utils/json-patch/helpers.js +1 -1
- package/es/chat-engine/core/utils/json-patch/index.js +1 -1
- package/es/chat-engine/core/utils/logger.js +1 -1
- package/es/chat-engine/core/utils/performance.js +1 -1
- package/es/chat-engine/hooks/index.js +10 -4
- package/es/chat-engine/hooks/index.js.map +1 -1
- package/es/chat-engine/hooks/useAgentActivity.js +1 -1
- package/es/chat-engine/hooks/useAgentState.js +10 -4
- package/es/chat-engine/hooks/useAgentState.js.map +1 -1
- package/es/chat-engine/hooks/useAgentToolcall.js +1 -1
- package/es/chat-engine/hooks/useChat.js +45 -15
- package/es/chat-engine/hooks/useChat.js.map +1 -1
- package/es/chat-engine/index.js +12 -6
- package/es/chat-engine/index.js.map +1 -1
- package/es/chat-filecard/index.js +1 -1
- package/es/chat-loading/index.js +1 -1
- package/es/chat-markdown/index.js +1 -1
- package/es/chat-message/index.js +1 -1
- package/es/chat-sender/index.js +1 -1
- package/es/chat-thinking/index.js +1 -1
- package/es/chatbot/index.js +1 -1
- package/es/index.js +10 -4
- package/es/index.js.map +1 -1
- package/es/style/index.js +1 -1
- package/package.json +1 -1
- package/es/_chunks/dep-1007ac80.js +0 -205
- package/es/_chunks/dep-1007ac80.js.map +0 -1
- package/es/_chunks/dep-13fe70ea.js +0 -438
- package/es/_chunks/dep-16520c2b.js +0 -1247
- package/es/_chunks/dep-16520c2b.js.map +0 -1
- package/es/_chunks/dep-1743bd61.js +0 -438
- package/es/_chunks/dep-1743bd61.js.map +0 -1
- package/es/_chunks/dep-1ca64fef.js.map +0 -1
- package/es/_chunks/dep-24472232.js +0 -839
- package/es/_chunks/dep-24472232.js.map +0 -1
- package/es/_chunks/dep-2bfe72cb.js +0 -438
- package/es/_chunks/dep-2bfe72cb.js.map +0 -1
- package/es/_chunks/dep-3864b369.js +0 -839
- package/es/_chunks/dep-3864b369.js.map +0 -1
- package/es/_chunks/dep-4dedfbef.js +0 -438
- package/es/_chunks/dep-4dedfbef.js.map +0 -1
- package/es/_chunks/dep-56f5e08e.js +0 -448
- package/es/_chunks/dep-56f5e08e.js.map +0 -1
- package/es/_chunks/dep-58d90dfe.js +0 -438
- package/es/_chunks/dep-58d90dfe.js.map +0 -1
- package/es/_chunks/dep-5b6b17d0.js +0 -169
- package/es/_chunks/dep-5b6b17d0.js.map +0 -1
- package/es/_chunks/dep-5e2400d2.js +0 -438
- package/es/_chunks/dep-5e2400d2.js.map +0 -1
- package/es/_chunks/dep-60f2a734.js +0 -169
- package/es/_chunks/dep-60f2a734.js.map +0 -1
- package/es/_chunks/dep-688e4aaa.js +0 -438
- package/es/_chunks/dep-688e4aaa.js.map +0 -1
- package/es/_chunks/dep-771678df.js +0 -438
- package/es/_chunks/dep-771678df.js.map +0 -1
- package/es/_chunks/dep-870f0d35.js +0 -839
- package/es/_chunks/dep-870f0d35.js.map +0 -1
- package/es/_chunks/dep-93283bbd.js +0 -1247
- package/es/_chunks/dep-96eca06f.js +0 -169
- package/es/_chunks/dep-96eca06f.js.map +0 -1
- package/es/_chunks/dep-98d23dfa.js +0 -169
- package/es/_chunks/dep-98d23dfa.js.map +0 -1
- package/es/_chunks/dep-991f7c12.js +0 -1247
- package/es/_chunks/dep-991f7c12.js.map +0 -1
- package/es/_chunks/dep-b4eec30f.js +0 -1247
- package/es/_chunks/dep-b4eec30f.js.map +0 -1
- package/es/_chunks/dep-ba3bd553.js +0 -169
- package/es/_chunks/dep-ba3bd553.js.map +0 -1
- package/es/_chunks/dep-bcb234a1.js +0 -839
- package/es/_chunks/dep-bcb234a1.js.map +0 -1
- package/es/_chunks/dep-dbdfe7d6.js +0 -169
- package/es/_chunks/dep-dbdfe7d6.js.map +0 -1
- package/es/_chunks/dep-de8ac730.js +0 -1247
- package/es/_chunks/dep-de8ac730.js.map +0 -1
- package/es/_chunks/dep-dfe91b1f.js.map +0 -1
- package/es/_chunks/dep-e9dbff09.js +0 -1247
- package/es/_chunks/dep-e9dbff09.js.map +0 -1
- package/es/_chunks/dep-ebc4cf30.js +0 -1247
- package/es/_chunks/dep-ebc4cf30.js.map +0 -1
- package/es/_chunks/dep-f2051ebd.js +0 -839
- package/es/_chunks/dep-f2051ebd.js.map +0 -1
- package/es/_chunks/dep-f691a67e.js +0 -438
- package/es/_chunks/dep-f691a67e.js.map +0 -1
- package/es/_chunks/dep-f8016301.js +0 -169
- package/es/_chunks/dep-f8016301.js.map +0 -1
- package/es/chat-actionbar/_example-js/base.d.ts +0 -2
- package/es/chat-actionbar/_example-js/custom.d.ts +0 -2
- package/es/chat-actionbar/_example-js/style.d.ts +0 -2
- package/es/chat-attachments/_example-js/base.d.ts +0 -2
- package/es/chat-attachments/_example-js/scroll-x.d.ts +0 -2
- package/es/chat-attachments/_example-js/scroll-y.d.ts +0 -2
- package/es/chat-attachments/index.d.ts +0 -5
- package/es/chat-attachments/index.js +0 -26
- package/es/chat-attachments/index.js.map +0 -1
- package/es/chat-engine/_example-js/agui-basic.d.ts +0 -10
- package/es/chat-engine/_example-js/agui-comprehensive.d.ts +0 -2
- package/es/chat-engine/_example-js/agui-test.d.ts +0 -11
- package/es/chat-engine/_example-js/agui-toolcall.d.ts +0 -5
- package/es/chat-engine/_example-js/agui-videoclip.d.ts +0 -8
- package/es/chat-engine/_example-js/agui.d.ts +0 -1
- package/es/chat-engine/_example-js/basic.d.ts +0 -9
- package/es/chat-engine/_example-js/components/HotelCard.d.ts +0 -3
- package/es/chat-engine/_example-js/components/HumanInputForm.d.ts +0 -6
- package/es/chat-engine/_example-js/components/HumanInputResult.d.ts +0 -3
- package/es/chat-engine/_example-js/components/ItineraryCard.d.ts +0 -3
- package/es/chat-engine/_example-js/components/PlanningStatePanel.d.ts +0 -4
- package/es/chat-engine/_example-js/components/Toolcall.d.ts +0 -4
- package/es/chat-engine/_example-js/components/WeatherCard.d.ts +0 -3
- package/es/chat-engine/_example-js/components/login.d.ts +0 -1
- package/es/chat-engine/_example-js/comprehensive.d.ts +0 -12
- package/es/chat-engine/_example-js/custom-content.d.ts +0 -1
- package/es/chat-engine/_example-js/hookComponent.d.ts +0 -1
- package/es/chat-engine/_example-js/initial-messages.d.ts +0 -9
- package/es/chat-engine/_example-js/instance-methods.d.ts +0 -13
- package/es/chat-engine/_example-js/travel-actions.d.ts +0 -91
- package/es/chat-engine/_example-js/travelToolcall.d.ts +0 -1
- package/es/chat-engine/components/a2ui/A2UIActivityRenderer.d.ts +0 -196
- package/es/chat-engine/components/a2ui/A2UIActivityRenderer.js +0 -301
- package/es/chat-engine/components/a2ui/A2UIActivityRenderer.js.map +0 -1
- package/es/chat-engine/components/a2ui/A2UIComponentRenderer.d.ts +0 -37
- package/es/chat-engine/components/a2ui/A2UIComponentRenderer.js +0 -116
- package/es/chat-engine/components/a2ui/A2UIComponentRenderer.js.map +0 -1
- package/es/chat-engine/components/a2ui/A2UIErrorBoundary.d.ts +0 -42
- package/es/chat-engine/components/a2ui/A2UIErrorBoundary.js +0 -113
- package/es/chat-engine/components/a2ui/A2UIErrorBoundary.js.map +0 -1
- package/es/chat-engine/components/a2ui/A2UISkeleton.d.ts +0 -60
- package/es/chat-engine/components/a2ui/A2UISkeleton.js +0 -197
- package/es/chat-engine/components/a2ui/A2UISkeleton.js.map +0 -1
- package/es/chat-engine/components/a2ui/A2UISurfaceRenderer.d.ts +0 -44
- package/es/chat-engine/components/a2ui/A2UISurfaceRenderer.js +0 -139
- package/es/chat-engine/components/a2ui/A2UISurfaceRenderer.js.map +0 -1
- package/es/chat-engine/components/a2ui/containers/A2UICard.d.ts +0 -22
- package/es/chat-engine/components/a2ui/containers/A2UICard.js +0 -82
- package/es/chat-engine/components/a2ui/containers/A2UICard.js.map +0 -1
- package/es/chat-engine/components/a2ui/containers/A2UIColumn.d.ts +0 -18
- package/es/chat-engine/components/a2ui/containers/A2UIColumn.js +0 -81
- package/es/chat-engine/components/a2ui/containers/A2UIColumn.js.map +0 -1
- package/es/chat-engine/components/a2ui/containers/A2UIList.d.ts +0 -14
- package/es/chat-engine/components/a2ui/containers/A2UIList.js +0 -62
- package/es/chat-engine/components/a2ui/containers/A2UIList.js.map +0 -1
- package/es/chat-engine/components/a2ui/containers/A2UIRow.d.ts +0 -20
- package/es/chat-engine/components/a2ui/containers/A2UIRow.js +0 -84
- package/es/chat-engine/components/a2ui/containers/A2UIRow.js.map +0 -1
- package/es/chat-engine/components/a2ui/containers/A2UITabs.d.ts +0 -14
- package/es/chat-engine/components/a2ui/containers/A2UITabs.js +0 -69
- package/es/chat-engine/components/a2ui/containers/A2UITabs.js.map +0 -1
- package/es/chat-engine/components/a2ui/containers/index.d.ts +0 -8
- package/es/chat-engine/components/a2ui/containers/index.js +0 -30
- package/es/chat-engine/components/a2ui/containers/index.js.map +0 -1
- package/es/chat-engine/components/a2ui/index.d.ts +0 -11
- package/es/chat-engine/components/a2ui/index.js +0 -62
- package/es/chat-engine/components/a2ui/index.js.map +0 -1
- package/es/chat-engine/components/a2ui/primitives/A2UIButton.d.ts +0 -33
- package/es/chat-engine/components/a2ui/primitives/A2UIButton.js +0 -80
- package/es/chat-engine/components/a2ui/primitives/A2UIButton.js.map +0 -1
- package/es/chat-engine/components/a2ui/primitives/A2UICheckBox.d.ts +0 -12
- package/es/chat-engine/components/a2ui/primitives/A2UICheckBox.js +0 -43
- package/es/chat-engine/components/a2ui/primitives/A2UICheckBox.js.map +0 -1
- package/es/chat-engine/components/a2ui/primitives/A2UICheckboxGroup.d.ts +0 -50
- package/es/chat-engine/components/a2ui/primitives/A2UICheckboxGroup.js +0 -54
- package/es/chat-engine/components/a2ui/primitives/A2UICheckboxGroup.js.map +0 -1
- package/es/chat-engine/components/a2ui/primitives/A2UIChoicePicker.d.ts +0 -13
- package/es/chat-engine/components/a2ui/primitives/A2UIChoicePicker.js +0 -89
- package/es/chat-engine/components/a2ui/primitives/A2UIChoicePicker.js.map +0 -1
- package/es/chat-engine/components/a2ui/primitives/A2UIDivider.d.ts +0 -12
- package/es/chat-engine/components/a2ui/primitives/A2UIDivider.js +0 -25
- package/es/chat-engine/components/a2ui/primitives/A2UIDivider.js.map +0 -1
- package/es/chat-engine/components/a2ui/primitives/A2UIIcon.d.ts +0 -13
- package/es/chat-engine/components/a2ui/primitives/A2UIIcon.js +0 -138942
- package/es/chat-engine/components/a2ui/primitives/A2UIIcon.js.map +0 -1
- package/es/chat-engine/components/a2ui/primitives/A2UIImage.d.ts +0 -12
- package/es/chat-engine/components/a2ui/primitives/A2UIImage.js +0 -75
- package/es/chat-engine/components/a2ui/primitives/A2UIImage.js.map +0 -1
- package/es/chat-engine/components/a2ui/primitives/A2UIInput.d.ts +0 -20
- package/es/chat-engine/components/a2ui/primitives/A2UIInput.js +0 -63
- package/es/chat-engine/components/a2ui/primitives/A2UIInput.js.map +0 -1
- package/es/chat-engine/components/a2ui/primitives/A2UIRadioGroup.d.ts +0 -56
- package/es/chat-engine/components/a2ui/primitives/A2UIRadioGroup.js +0 -64
- package/es/chat-engine/components/a2ui/primitives/A2UIRadioGroup.js.map +0 -1
- package/es/chat-engine/components/a2ui/primitives/A2UISlider.d.ts +0 -12
- package/es/chat-engine/components/a2ui/primitives/A2UISlider.js +0 -55
- package/es/chat-engine/components/a2ui/primitives/A2UISlider.js.map +0 -1
- package/es/chat-engine/components/a2ui/primitives/A2UIText.d.ts +0 -12
- package/es/chat-engine/components/a2ui/primitives/A2UIText.js +0 -104
- package/es/chat-engine/components/a2ui/primitives/A2UIText.js.map +0 -1
- package/es/chat-engine/components/a2ui/primitives/A2UITextField.d.ts +0 -12
- package/es/chat-engine/components/a2ui/primitives/A2UITextField.js +0 -80
- package/es/chat-engine/components/a2ui/primitives/A2UITextField.js.map +0 -1
- package/es/chat-engine/components/a2ui/primitives/index.d.ts +0 -15
- package/es/chat-engine/components/a2ui/primitives/index.js +0 -39
- package/es/chat-engine/components/a2ui/primitives/index.js.map +0 -1
- package/es/chat-engine/components/a2ui/registry.d.ts +0 -35
- package/es/chat-engine/components/a2ui/registry.js +0 -74
- package/es/chat-engine/components/a2ui/registry.js.map +0 -1
- package/es/chat-engine/components/json-render/A2UIJsonRenderActivityRenderer.d.ts +0 -36
- package/es/chat-engine/components/json-render/A2UIJsonRenderActivityRenderer.js +0 -36
- package/es/chat-engine/components/json-render/A2UIJsonRenderActivityRenderer.js.map +0 -1
- package/es/chat-engine/components/json-render/JsonRenderActivityRenderer.d.ts +0 -46
- package/es/chat-engine/components/json-render/JsonRenderActivityRenderer.js +0 -36
- package/es/chat-engine/components/json-render/JsonRenderActivityRenderer.js.map +0 -1
- package/es/chat-engine/components/json-render/SurfaceStateManager.d.ts +0 -113
- package/es/chat-engine/components/json-render/SurfaceStateManager.js +0 -195
- package/es/chat-engine/components/json-render/SurfaceStateManager.js.map +0 -1
- package/es/chat-engine/components/json-render/adapters/a2ui-to-jsonrender.d.ts +0 -49
- package/es/chat-engine/components/json-render/adapters/a2ui-to-jsonrender.js +0 -307
- package/es/chat-engine/components/json-render/adapters/a2ui-to-jsonrender.js.map +0 -1
- package/es/chat-engine/components/json-render/adapters/a2ui-types.d.ts +0 -96
- package/es/chat-engine/components/json-render/adapters/a2ui-types.js +0 -7
- package/es/chat-engine/components/json-render/adapters/a2ui-types.js.map +0 -1
- package/es/chat-engine/components/json-render/adapters/index.d.ts +0 -7
- package/es/chat-engine/components/json-render/adapters/index.js +0 -11
- package/es/chat-engine/components/json-render/adapters/index.js.map +0 -1
- package/es/chat-engine/components/json-render/catalog/a2ui-binding.d.ts +0 -64
- package/es/chat-engine/components/json-render/catalog/a2ui-binding.js +0 -36
- package/es/chat-engine/components/json-render/catalog/a2ui-binding.js.map +0 -1
- package/es/chat-engine/components/json-render/catalog/a2ui-registry.d.ts +0 -78
- package/es/chat-engine/components/json-render/catalog/a2ui-registry.js +0 -36
- package/es/chat-engine/components/json-render/catalog/a2ui-registry.js.map +0 -1
- package/es/chat-engine/components/json-render/catalog/button.d.ts +0 -14
- package/es/chat-engine/components/json-render/catalog/button.js +0 -71
- package/es/chat-engine/components/json-render/catalog/button.js.map +0 -1
- package/es/chat-engine/components/json-render/catalog/card.d.ts +0 -11
- package/es/chat-engine/components/json-render/catalog/card.js +0 -57
- package/es/chat-engine/components/json-render/catalog/card.js.map +0 -1
- package/es/chat-engine/components/json-render/catalog/index.d.ts +0 -128
- package/es/chat-engine/components/json-render/catalog/index.js +0 -36
- package/es/chat-engine/components/json-render/catalog/index.js.map +0 -1
- package/es/chat-engine/components/json-render/catalog/input.d.ts +0 -20
- package/es/chat-engine/components/json-render/catalog/input.js +0 -36
- package/es/chat-engine/components/json-render/catalog/input.js.map +0 -1
- package/es/chat-engine/components/json-render/catalog/layout.d.ts +0 -44
- package/es/chat-engine/components/json-render/catalog/layout.js +0 -129
- package/es/chat-engine/components/json-render/catalog/layout.js.map +0 -1
- package/es/chat-engine/components/json-render/catalog/text.d.ts +0 -11
- package/es/chat-engine/components/json-render/catalog/text.js +0 -31
- package/es/chat-engine/components/json-render/catalog/text.js.map +0 -1
- package/es/chat-engine/components/json-render/catalog.d.ts +0 -614
- package/es/chat-engine/components/json-render/catalog.js +0 -779
- package/es/chat-engine/components/json-render/catalog.js.map +0 -1
- package/es/chat-engine/components/json-render/config.d.ts +0 -154
- package/es/chat-engine/components/json-render/config.js +0 -36
- package/es/chat-engine/components/json-render/config.js.map +0 -1
- package/es/chat-engine/components/json-render/engine.d.ts +0 -58
- package/es/chat-engine/components/json-render/engine.js +0 -88
- package/es/chat-engine/components/json-render/engine.js.map +0 -1
- package/es/chat-engine/components/json-render/performance.d.ts +0 -91
- package/es/chat-engine/components/json-render/performance.js +0 -135
- package/es/chat-engine/components/json-render/performance.js.map +0 -1
- package/es/chat-engine/components/json-render/renderer/index.d.ts +0 -71
- package/es/chat-engine/components/json-render/renderer/index.js +0 -125
- package/es/chat-engine/components/json-render/renderer/index.js.map +0 -1
- package/es/chat-engine/components/json-render/renderer.d.ts +0 -71
- package/es/chat-engine/components/json-render/renderer.js +0 -124
- package/es/chat-engine/components/json-render/renderer.js.map +0 -1
- package/es/chat-engine/core/a2ui/index.d.ts +0 -10
- package/es/chat-engine/core/a2ui/index.js +0 -24
- package/es/chat-engine/core/a2ui/index.js.map +0 -1
- package/es/chat-engine/core/a2ui/processor/A2uiMessageProcessor.d.ts +0 -197
- package/es/chat-engine/core/a2ui/processor/A2uiMessageProcessor.js +0 -438
- package/es/chat-engine/core/a2ui/processor/A2uiMessageProcessor.js.map +0 -1
- package/es/chat-engine/core/a2ui/processor/ComponentTree.d.ts +0 -53
- package/es/chat-engine/core/a2ui/processor/ComponentTree.js +0 -158
- package/es/chat-engine/core/a2ui/processor/ComponentTree.js.map +0 -1
- package/es/chat-engine/core/a2ui/processor/DataStore.d.ts +0 -63
- package/es/chat-engine/core/a2ui/processor/DataStore.js +0 -172
- package/es/chat-engine/core/a2ui/processor/DataStore.js.map +0 -1
- package/es/chat-engine/core/a2ui/processor/PathResolver.d.ts +0 -47
- package/es/chat-engine/core/a2ui/processor/PathResolver.js +0 -99
- package/es/chat-engine/core/a2ui/processor/PathResolver.js.map +0 -1
- package/es/chat-engine/core/a2ui/types/index.d.ts +0 -4
- package/es/chat-engine/core/a2ui/types/index.js +0 -9
- package/es/chat-engine/core/a2ui/types/index.js.map +0 -1
- package/es/chat-engine/core/a2ui/types/types.d.ts +0 -770
- package/es/chat-engine/core/a2ui/types/types.js +0 -104
- package/es/chat-engine/core/a2ui/types/types.js.map +0 -1
- package/es/chat-engine/core/a2ui/utils/binding.d.ts +0 -34
- package/es/chat-engine/core/a2ui/utils/binding.js +0 -1784
- package/es/chat-engine/core/a2ui/utils/binding.js.map +0 -1
- package/es/chat-engine/core/a2ui/utils/index.d.ts +0 -5
- package/es/chat-engine/core/a2ui/utils/index.js +0 -13
- package/es/chat-engine/core/a2ui/utils/index.js.map +0 -1
- package/es/chat-engine/core/a2ui/utils/validation.d.ts +0 -70
- package/es/chat-engine/core/a2ui/utils/validation.js +0 -333
- package/es/chat-engine/core/a2ui/utils/validation.js.map +0 -1
- package/es/chat-engine/core/adapters/agui/activity-manager.d.ts +0 -102
- package/es/chat-engine/core/adapters/agui/activity-manager.js +0 -150
- package/es/chat-engine/core/adapters/agui/activity-manager.js.map +0 -1
- package/es/chat-engine/core/adapters/agui/events.d.ts +0 -1550
- package/es/chat-engine/core/adapters/agui/events.js +0 -199
- package/es/chat-engine/core/adapters/agui/events.js.map +0 -1
- package/es/chat-engine/core/adapters/agui/state-manager.d.ts +0 -99
- package/es/chat-engine/core/adapters/agui/state-manager.js +0 -174
- package/es/chat-engine/core/adapters/agui/state-manager.js.map +0 -1
- package/es/chat-engine/core/adapters/agui/types.d.ts +0 -818
- package/es/chat-engine/core/adapters/agui/types.js +0 -95
- package/es/chat-engine/core/adapters/agui/types.js.map +0 -1
- package/es/chat-engine/hooks/a2ui/A2UIContext.d.ts +0 -90
- package/es/chat-engine/hooks/a2ui/A2UIContext.js +0 -97
- package/es/chat-engine/hooks/a2ui/A2UIContext.js.map +0 -1
- package/es/chat-engine/hooks/a2ui/index.d.ts +0 -12
- package/es/chat-engine/hooks/a2ui/index.js +0 -19
- package/es/chat-engine/hooks/a2ui/index.js.map +0 -1
- package/es/chat-engine/hooks/a2ui/useA2UIAction.d.ts +0 -40
- package/es/chat-engine/hooks/a2ui/useA2UIAction.js +0 -74
- package/es/chat-engine/hooks/a2ui/useA2UIAction.js.map +0 -1
- package/es/chat-engine/hooks/a2ui/useA2UISurface.d.ts +0 -36
- package/es/chat-engine/hooks/a2ui/useA2UISurface.js +0 -39
- package/es/chat-engine/hooks/a2ui/useA2UISurface.js.map +0 -1
- package/es/chat-engine/hooks/a2ui/useDataBinding.d.ts +0 -53
- package/es/chat-engine/hooks/a2ui/useDataBinding.js +0 -111
- package/es/chat-engine/hooks/a2ui/useDataBinding.js.map +0 -1
- package/es/chat-engine/hooks/useJsonRenderActivity.d.ts +0 -56
- package/es/chat-engine/hooks/useJsonRenderActivity.js +0 -63
- package/es/chat-engine/hooks/useJsonRenderActivity.js.map +0 -1
- package/es/chat-filecard/_example-js/base.d.ts +0 -1
- package/es/chat-loading/_example-js/base.d.ts +0 -2
- package/es/chat-loading/_example-js/text.d.ts +0 -2
- package/es/chat-markdown/_example-js/base.d.ts +0 -1
- package/es/chat-markdown/_example-js/custom.d.ts +0 -2
- package/es/chat-markdown/_example-js/event.d.ts +0 -1
- package/es/chat-markdown/_example-js/footnote.d.ts +0 -2
- package/es/chat-markdown/_example-js/plugin.d.ts +0 -2
- package/es/chat-markdown/_example-js/theme.d.ts +0 -2
- package/es/chat-message/_example-js/action.d.ts +0 -1
- package/es/chat-message/_example-js/base.d.ts +0 -1
- package/es/chat-message/_example-js/configure.d.ts +0 -1
- package/es/chat-message/_example-js/content.d.ts +0 -1
- package/es/chat-message/_example-js/custom.d.ts +0 -1
- package/es/chat-message/_example-js/handle-actions.d.ts +0 -7
- package/es/chat-message/_example-js/status.d.ts +0 -1
- package/es/chat-message/_example-js/think.d.ts +0 -1
- package/es/chat-sender/_example-js/attachment.d.ts +0 -2
- package/es/chat-sender/_example-js/base.d.ts +0 -2
- package/es/chat-sender/_example-js/custom.d.ts +0 -2
- package/es/chat-thinking/_example-js/base.d.ts +0 -1
- package/es/chat-thinking/_example-js/style.d.ts +0 -1
- package/es/chatbot/_example-js/agent.d.ts +0 -1
- package/es/chatbot/_example-js/agui.d.ts +0 -13
- package/es/chatbot/_example-js/backup/travel.d.ts +0 -1
- package/es/chatbot/_example-js/basic.d.ts +0 -1
- package/es/chatbot/_example-js/code.d.ts +0 -1
- package/es/chatbot/_example-js/components/ItineraryCard.d.ts +0 -3
- package/es/chatbot/_example-js/components/login.d.ts +0 -1
- package/es/chatbot/_example-js/comprehensive.d.ts +0 -1
- package/es/chatbot/_example-js/custom-content.d.ts +0 -1
- package/es/chatbot/_example-js/custom-merge.d.ts +0 -1
- package/es/chatbot/_example-js/custom.d.ts +0 -1
- package/es/chatbot/_example-js/docs.d.ts +0 -1
- package/es/chatbot/_example-js/image.d.ts +0 -1
- package/es/chatbot/_example-js/initial-messages.d.ts +0 -9
- package/es/chatbot/_example-js/instance-methods.d.ts +0 -14
- package/es/chatbot/_example-js/nostream.d.ts +0 -1
- package/es/chatbot/_example-js/quick-start.d.ts +0 -9
- package/es/chatbot/_example-js/research.d.ts +0 -1
- package/es/chatbot/_example-js/role-message-config.d.ts +0 -22
- package/es/chatbot/_example-js/sender-config.d.ts +0 -20
- package/es/chatbot/_example-js/service-config.d.ts +0 -17
- package/es/chatbot/_example-js/simple.d.ts +0 -1
- package/es/chatbot/_example-js/utils/messageRenderer.d.ts +0 -5
- package/es/chatbot/docs/react-best-practice.d.ts +0 -13
|
@@ -0,0 +1,375 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* tdesign v1.1.0-alpha.17
|
|
3
|
+
* (c) 2026 tdesign
|
|
4
|
+
* @license MIT
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
import _classCallCheck from '@babel/runtime/helpers/classCallCheck';
|
|
8
|
+
import _createClass from '@babel/runtime/helpers/createClass';
|
|
9
|
+
import _defineProperty from '@babel/runtime/helpers/defineProperty';
|
|
10
|
+
import _asyncToGenerator from '@babel/runtime/helpers/asyncToGenerator';
|
|
11
|
+
import _regeneratorRuntime from '@babel/runtime/regenerator';
|
|
12
|
+
import { LoggerManager } from '../../utils/logger.js';
|
|
13
|
+
|
|
14
|
+
var logger = LoggerManager.getLogger();
|
|
15
|
+
function bytesToHex(bytes) {
|
|
16
|
+
return Array.from(bytes).map(function (b) {
|
|
17
|
+
return b.toString(16).padStart(2, "0");
|
|
18
|
+
}).join("");
|
|
19
|
+
}
|
|
20
|
+
function hexToBytes(hex) {
|
|
21
|
+
var bytes = new Uint8Array(hex.length / 2);
|
|
22
|
+
for (var i = 0; i < hex.length; i += 2) {
|
|
23
|
+
bytes[i / 2] = parseInt(hex.substring(i, i + 2), 16);
|
|
24
|
+
}
|
|
25
|
+
return bytes;
|
|
26
|
+
}
|
|
27
|
+
function deriveDeviceId(publicKeyHex) {
|
|
28
|
+
return "device_".concat(publicKeyHex.substring(0, 16));
|
|
29
|
+
}
|
|
30
|
+
function getStorageKey(clientId) {
|
|
31
|
+
return "openclaw_device_key_".concat(clientId);
|
|
32
|
+
}
|
|
33
|
+
function isEd25519Supported() {
|
|
34
|
+
return _isEd25519Supported.apply(this, arguments);
|
|
35
|
+
}
|
|
36
|
+
function _isEd25519Supported() {
|
|
37
|
+
_isEd25519Supported = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee4() {
|
|
38
|
+
var keyPair, _t3;
|
|
39
|
+
return _regeneratorRuntime.wrap(function (_context4) {
|
|
40
|
+
while (1) switch (_context4.prev = _context4.next) {
|
|
41
|
+
case 0:
|
|
42
|
+
_context4.prev = 0;
|
|
43
|
+
_context4.next = 1;
|
|
44
|
+
return crypto.subtle.generateKey("Ed25519", true, ["sign", "verify"]);
|
|
45
|
+
case 1:
|
|
46
|
+
keyPair = _context4.sent;
|
|
47
|
+
return _context4.abrupt("return", !!keyPair);
|
|
48
|
+
case 2:
|
|
49
|
+
_context4.prev = 2;
|
|
50
|
+
_t3 = _context4["catch"](0);
|
|
51
|
+
return _context4.abrupt("return", false);
|
|
52
|
+
case 3:
|
|
53
|
+
case "end":
|
|
54
|
+
return _context4.stop();
|
|
55
|
+
}
|
|
56
|
+
}, _callee4, null, [[0, 2]]);
|
|
57
|
+
}));
|
|
58
|
+
return _isEd25519Supported.apply(this, arguments);
|
|
59
|
+
}
|
|
60
|
+
function generateEd25519KeyPair() {
|
|
61
|
+
return _generateEd25519KeyPair.apply(this, arguments);
|
|
62
|
+
}
|
|
63
|
+
function _generateEd25519KeyPair() {
|
|
64
|
+
_generateEd25519KeyPair = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee5() {
|
|
65
|
+
var keyPair, publicKeyRaw, privateKeyPkcs8, publicKeyHex, privateKeyHex;
|
|
66
|
+
return _regeneratorRuntime.wrap(function (_context5) {
|
|
67
|
+
while (1) switch (_context5.prev = _context5.next) {
|
|
68
|
+
case 0:
|
|
69
|
+
_context5.next = 1;
|
|
70
|
+
return crypto.subtle.generateKey("Ed25519", true, ["sign", "verify"]);
|
|
71
|
+
case 1:
|
|
72
|
+
keyPair = _context5.sent;
|
|
73
|
+
_context5.next = 2;
|
|
74
|
+
return crypto.subtle.exportKey("raw", keyPair.publicKey);
|
|
75
|
+
case 2:
|
|
76
|
+
publicKeyRaw = _context5.sent;
|
|
77
|
+
_context5.next = 3;
|
|
78
|
+
return crypto.subtle.exportKey("pkcs8", keyPair.privateKey);
|
|
79
|
+
case 3:
|
|
80
|
+
privateKeyPkcs8 = _context5.sent;
|
|
81
|
+
publicKeyHex = bytesToHex(new Uint8Array(publicKeyRaw));
|
|
82
|
+
privateKeyHex = bytesToHex(new Uint8Array(privateKeyPkcs8));
|
|
83
|
+
return _context5.abrupt("return", {
|
|
84
|
+
publicKey: publicKeyHex,
|
|
85
|
+
privateKey: privateKeyHex,
|
|
86
|
+
deviceId: deriveDeviceId(publicKeyHex)
|
|
87
|
+
});
|
|
88
|
+
case 4:
|
|
89
|
+
case "end":
|
|
90
|
+
return _context5.stop();
|
|
91
|
+
}
|
|
92
|
+
}, _callee5);
|
|
93
|
+
}));
|
|
94
|
+
return _generateEd25519KeyPair.apply(this, arguments);
|
|
95
|
+
}
|
|
96
|
+
function signWithEd25519(_x, _x2) {
|
|
97
|
+
return _signWithEd.apply(this, arguments);
|
|
98
|
+
}
|
|
99
|
+
function _signWithEd() {
|
|
100
|
+
_signWithEd = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee6(privateKeyHex, nonce) {
|
|
101
|
+
var privateKeyBytes, privateKey, encoder, data, signature;
|
|
102
|
+
return _regeneratorRuntime.wrap(function (_context6) {
|
|
103
|
+
while (1) switch (_context6.prev = _context6.next) {
|
|
104
|
+
case 0:
|
|
105
|
+
privateKeyBytes = hexToBytes(privateKeyHex);
|
|
106
|
+
_context6.next = 1;
|
|
107
|
+
return crypto.subtle.importKey("pkcs8", privateKeyBytes.buffer, "Ed25519", false, ["sign"]);
|
|
108
|
+
case 1:
|
|
109
|
+
privateKey = _context6.sent;
|
|
110
|
+
encoder = new TextEncoder();
|
|
111
|
+
data = encoder.encode(nonce);
|
|
112
|
+
_context6.next = 2;
|
|
113
|
+
return crypto.subtle.sign("Ed25519", privateKey, data);
|
|
114
|
+
case 2:
|
|
115
|
+
signature = _context6.sent;
|
|
116
|
+
return _context6.abrupt("return", bytesToHex(new Uint8Array(signature)));
|
|
117
|
+
case 3:
|
|
118
|
+
case "end":
|
|
119
|
+
return _context6.stop();
|
|
120
|
+
}
|
|
121
|
+
}, _callee6);
|
|
122
|
+
}));
|
|
123
|
+
return _signWithEd.apply(this, arguments);
|
|
124
|
+
}
|
|
125
|
+
function generateHmacKeyPair() {
|
|
126
|
+
return _generateHmacKeyPair.apply(this, arguments);
|
|
127
|
+
}
|
|
128
|
+
function _generateHmacKeyPair() {
|
|
129
|
+
_generateHmacKeyPair = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee7() {
|
|
130
|
+
var privateKeyBytes, privateKeyHex, encoder, hashBuffer, publicKeyHex;
|
|
131
|
+
return _regeneratorRuntime.wrap(function (_context7) {
|
|
132
|
+
while (1) switch (_context7.prev = _context7.next) {
|
|
133
|
+
case 0:
|
|
134
|
+
privateKeyBytes = crypto.getRandomValues(new Uint8Array(32));
|
|
135
|
+
privateKeyHex = bytesToHex(privateKeyBytes);
|
|
136
|
+
encoder = new TextEncoder();
|
|
137
|
+
_context7.next = 1;
|
|
138
|
+
return crypto.subtle.digest("SHA-256", encoder.encode(privateKeyHex));
|
|
139
|
+
case 1:
|
|
140
|
+
hashBuffer = _context7.sent;
|
|
141
|
+
publicKeyHex = bytesToHex(new Uint8Array(hashBuffer));
|
|
142
|
+
return _context7.abrupt("return", {
|
|
143
|
+
publicKey: publicKeyHex,
|
|
144
|
+
privateKey: privateKeyHex,
|
|
145
|
+
deviceId: deriveDeviceId(publicKeyHex)
|
|
146
|
+
});
|
|
147
|
+
case 2:
|
|
148
|
+
case "end":
|
|
149
|
+
return _context7.stop();
|
|
150
|
+
}
|
|
151
|
+
}, _callee7);
|
|
152
|
+
}));
|
|
153
|
+
return _generateHmacKeyPair.apply(this, arguments);
|
|
154
|
+
}
|
|
155
|
+
function signWithHmac(_x3, _x4) {
|
|
156
|
+
return _signWithHmac.apply(this, arguments);
|
|
157
|
+
}
|
|
158
|
+
function _signWithHmac() {
|
|
159
|
+
_signWithHmac = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee8(privateKeyHex, nonce) {
|
|
160
|
+
var encoder, keyData, key, signature;
|
|
161
|
+
return _regeneratorRuntime.wrap(function (_context8) {
|
|
162
|
+
while (1) switch (_context8.prev = _context8.next) {
|
|
163
|
+
case 0:
|
|
164
|
+
encoder = new TextEncoder();
|
|
165
|
+
keyData = encoder.encode(privateKeyHex);
|
|
166
|
+
_context8.next = 1;
|
|
167
|
+
return crypto.subtle.importKey("raw", keyData, {
|
|
168
|
+
name: "HMAC",
|
|
169
|
+
hash: "SHA-256"
|
|
170
|
+
}, false, ["sign"]);
|
|
171
|
+
case 1:
|
|
172
|
+
key = _context8.sent;
|
|
173
|
+
_context8.next = 2;
|
|
174
|
+
return crypto.subtle.sign("HMAC", key, encoder.encode(nonce));
|
|
175
|
+
case 2:
|
|
176
|
+
signature = _context8.sent;
|
|
177
|
+
return _context8.abrupt("return", bytesToHex(new Uint8Array(signature)));
|
|
178
|
+
case 3:
|
|
179
|
+
case "end":
|
|
180
|
+
return _context8.stop();
|
|
181
|
+
}
|
|
182
|
+
}, _callee8);
|
|
183
|
+
}));
|
|
184
|
+
return _signWithHmac.apply(this, arguments);
|
|
185
|
+
}
|
|
186
|
+
var DeviceKeyManager = /*#__PURE__*/function () {
|
|
187
|
+
function DeviceKeyManager() {
|
|
188
|
+
var clientId = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : "webchat";
|
|
189
|
+
_classCallCheck(this, DeviceKeyManager);
|
|
190
|
+
_defineProperty(this, "keyPair", null);
|
|
191
|
+
_defineProperty(this, "useEd25519", false);
|
|
192
|
+
_defineProperty(this, "initialized", false);
|
|
193
|
+
this.clientId = clientId;
|
|
194
|
+
}
|
|
195
|
+
return _createClass(DeviceKeyManager, [{
|
|
196
|
+
key: "initialize",
|
|
197
|
+
value: function () {
|
|
198
|
+
var _initialize = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee() {
|
|
199
|
+
var stored, _t;
|
|
200
|
+
return _regeneratorRuntime.wrap(function (_context) {
|
|
201
|
+
while (1) switch (_context.prev = _context.next) {
|
|
202
|
+
case 0:
|
|
203
|
+
if (!this.initialized) {
|
|
204
|
+
_context.next = 1;
|
|
205
|
+
break;
|
|
206
|
+
}
|
|
207
|
+
return _context.abrupt("return");
|
|
208
|
+
case 1:
|
|
209
|
+
_context.next = 2;
|
|
210
|
+
return isEd25519Supported();
|
|
211
|
+
case 2:
|
|
212
|
+
this.useEd25519 = _context.sent;
|
|
213
|
+
logger.debug("Device auth: Ed25519 ".concat(this.useEd25519 ? "supported" : "not supported, using HMAC-SHA256 fallback"));
|
|
214
|
+
stored = this.loadFromStorage();
|
|
215
|
+
if (!stored) {
|
|
216
|
+
_context.next = 3;
|
|
217
|
+
break;
|
|
218
|
+
}
|
|
219
|
+
this.keyPair = stored;
|
|
220
|
+
logger.debug("Device auth: restored key pair for device ".concat(stored.deviceId));
|
|
221
|
+
_context.next = 8;
|
|
222
|
+
break;
|
|
223
|
+
case 3:
|
|
224
|
+
if (!this.useEd25519) {
|
|
225
|
+
_context.next = 5;
|
|
226
|
+
break;
|
|
227
|
+
}
|
|
228
|
+
_context.next = 4;
|
|
229
|
+
return generateEd25519KeyPair();
|
|
230
|
+
case 4:
|
|
231
|
+
_t = _context.sent;
|
|
232
|
+
_context.next = 7;
|
|
233
|
+
break;
|
|
234
|
+
case 5:
|
|
235
|
+
_context.next = 6;
|
|
236
|
+
return generateHmacKeyPair();
|
|
237
|
+
case 6:
|
|
238
|
+
_t = _context.sent;
|
|
239
|
+
case 7:
|
|
240
|
+
this.keyPair = _t;
|
|
241
|
+
this.saveToStorage(this.keyPair);
|
|
242
|
+
logger.info("Device auth: generated new key pair, deviceId=".concat(this.keyPair.deviceId));
|
|
243
|
+
case 8:
|
|
244
|
+
this.initialized = true;
|
|
245
|
+
case 9:
|
|
246
|
+
case "end":
|
|
247
|
+
return _context.stop();
|
|
248
|
+
}
|
|
249
|
+
}, _callee, this);
|
|
250
|
+
}));
|
|
251
|
+
function initialize() {
|
|
252
|
+
return _initialize.apply(this, arguments);
|
|
253
|
+
}
|
|
254
|
+
return initialize;
|
|
255
|
+
}()
|
|
256
|
+
}, {
|
|
257
|
+
key: "signChallenge",
|
|
258
|
+
value: function () {
|
|
259
|
+
var _signChallenge = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee2(nonce) {
|
|
260
|
+
var signedAt, signPayload, signature, _t2;
|
|
261
|
+
return _regeneratorRuntime.wrap(function (_context2) {
|
|
262
|
+
while (1) switch (_context2.prev = _context2.next) {
|
|
263
|
+
case 0:
|
|
264
|
+
if (this.keyPair) {
|
|
265
|
+
_context2.next = 1;
|
|
266
|
+
break;
|
|
267
|
+
}
|
|
268
|
+
_context2.next = 1;
|
|
269
|
+
return this.initialize();
|
|
270
|
+
case 1:
|
|
271
|
+
signedAt = Math.floor(Date.now() / 1e3);
|
|
272
|
+
signPayload = "".concat(nonce, ":").concat(signedAt);
|
|
273
|
+
if (!this.useEd25519) {
|
|
274
|
+
_context2.next = 3;
|
|
275
|
+
break;
|
|
276
|
+
}
|
|
277
|
+
_context2.next = 2;
|
|
278
|
+
return signWithEd25519(this.keyPair.privateKey, signPayload);
|
|
279
|
+
case 2:
|
|
280
|
+
_t2 = _context2.sent;
|
|
281
|
+
_context2.next = 5;
|
|
282
|
+
break;
|
|
283
|
+
case 3:
|
|
284
|
+
_context2.next = 4;
|
|
285
|
+
return signWithHmac(this.keyPair.privateKey, signPayload);
|
|
286
|
+
case 4:
|
|
287
|
+
_t2 = _context2.sent;
|
|
288
|
+
case 5:
|
|
289
|
+
signature = _t2;
|
|
290
|
+
return _context2.abrupt("return", {
|
|
291
|
+
id: this.keyPair.deviceId,
|
|
292
|
+
publicKey: this.keyPair.publicKey,
|
|
293
|
+
signature: signature,
|
|
294
|
+
signedAt: signedAt,
|
|
295
|
+
nonce: nonce
|
|
296
|
+
});
|
|
297
|
+
case 6:
|
|
298
|
+
case "end":
|
|
299
|
+
return _context2.stop();
|
|
300
|
+
}
|
|
301
|
+
}, _callee2, this);
|
|
302
|
+
}));
|
|
303
|
+
function signChallenge(_x5) {
|
|
304
|
+
return _signChallenge.apply(this, arguments);
|
|
305
|
+
}
|
|
306
|
+
return signChallenge;
|
|
307
|
+
}()
|
|
308
|
+
}, {
|
|
309
|
+
key: "getDeviceId",
|
|
310
|
+
value: function getDeviceId() {
|
|
311
|
+
var _this$keyPair$deviceI, _this$keyPair;
|
|
312
|
+
return (_this$keyPair$deviceI = (_this$keyPair = this.keyPair) === null || _this$keyPair === void 0 ? void 0 : _this$keyPair.deviceId) !== null && _this$keyPair$deviceI !== void 0 ? _this$keyPair$deviceI : null;
|
|
313
|
+
}
|
|
314
|
+
}, {
|
|
315
|
+
key: "reset",
|
|
316
|
+
value: function () {
|
|
317
|
+
var _reset = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee3() {
|
|
318
|
+
return _regeneratorRuntime.wrap(function (_context3) {
|
|
319
|
+
while (1) switch (_context3.prev = _context3.next) {
|
|
320
|
+
case 0:
|
|
321
|
+
this.clearStorage();
|
|
322
|
+
this.keyPair = null;
|
|
323
|
+
this.initialized = false;
|
|
324
|
+
_context3.next = 1;
|
|
325
|
+
return this.initialize();
|
|
326
|
+
case 1:
|
|
327
|
+
case "end":
|
|
328
|
+
return _context3.stop();
|
|
329
|
+
}
|
|
330
|
+
}, _callee3, this);
|
|
331
|
+
}));
|
|
332
|
+
function reset() {
|
|
333
|
+
return _reset.apply(this, arguments);
|
|
334
|
+
}
|
|
335
|
+
return reset;
|
|
336
|
+
}()
|
|
337
|
+
}, {
|
|
338
|
+
key: "loadFromStorage",
|
|
339
|
+
value: function loadFromStorage() {
|
|
340
|
+
if (typeof window === "undefined" || !window.localStorage) return null;
|
|
341
|
+
try {
|
|
342
|
+
var stored = window.localStorage.getItem(getStorageKey(this.clientId));
|
|
343
|
+
if (!stored) return null;
|
|
344
|
+
var parsed = JSON.parse(stored);
|
|
345
|
+
if (parsed.publicKey && parsed.privateKey && parsed.deviceId) {
|
|
346
|
+
return parsed;
|
|
347
|
+
}
|
|
348
|
+
} catch (e) {
|
|
349
|
+
logger.warn("Failed to load device key from storage:", e);
|
|
350
|
+
}
|
|
351
|
+
return null;
|
|
352
|
+
}
|
|
353
|
+
}, {
|
|
354
|
+
key: "saveToStorage",
|
|
355
|
+
value: function saveToStorage(keyPair) {
|
|
356
|
+
if (typeof window === "undefined" || !window.localStorage) return;
|
|
357
|
+
try {
|
|
358
|
+
window.localStorage.setItem(getStorageKey(this.clientId), JSON.stringify(keyPair));
|
|
359
|
+
} catch (e) {
|
|
360
|
+
logger.warn("Failed to save device key to storage:", e);
|
|
361
|
+
}
|
|
362
|
+
}
|
|
363
|
+
}, {
|
|
364
|
+
key: "clearStorage",
|
|
365
|
+
value: function clearStorage() {
|
|
366
|
+
if (typeof window === "undefined" || !window.localStorage) return;
|
|
367
|
+
try {
|
|
368
|
+
window.localStorage.removeItem(getStorageKey(this.clientId));
|
|
369
|
+
} catch (_unused) {}
|
|
370
|
+
}
|
|
371
|
+
}]);
|
|
372
|
+
}();
|
|
373
|
+
|
|
374
|
+
export { DeviceKeyManager };
|
|
375
|
+
//# sourceMappingURL=device-key-manager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"device-key-manager.js","sources":["../../../../../../pro-components/chat/chat-engine/core/adapters/openclaw/device-key-manager.ts"],"sourcesContent":["/**\n * OpenClaw 设备密钥管理器\n *\n * 负责生成/持久化 Ed25519 密钥对并签名 nonce,\n * 用于 OpenClaw Gateway 的设备身份认证(Device Pairing)。\n *\n * 认证流程:\n * 1. Gateway 发送 connect.challenge,包含 nonce\n * 2. 客户端用私钥签名 nonce\n * 3. 在 connect 请求的 params.device 中携带 { publicKey, signature, deviceId }\n * 4. Gateway 验签通过后完成认证(首次连接自动配对)\n *\n * 存储策略:\n * - 密钥对以 hex 格式持久化到 localStorage\n * - key: `openclaw_device_key_{clientId}`\n * - 密钥对在浏览器端生命周期内保持一致(设备标识不变)\n */\nimport { LoggerManager } from '../../utils/logger';\n\nconst logger = LoggerManager.getLogger();\n\n/** 设备密钥对(hex 编码) */\nexport interface DeviceKeyPair {\n publicKey: string;\n privateKey: string;\n deviceId: string;\n}\n\n/** connect 请求中的 device 字段 */\nexport interface DeviceIdentity {\n /** 设备 ID(由公钥派生或随机生成) */\n id: string;\n /** 公钥(hex 编码) */\n publicKey: string;\n /** nonce 签名(hex 编码) */\n signature: string;\n /** 签名时间戳(Unix 秒级时间戳) */\n signedAt: number;\n /** 回传的 challenge nonce */\n nonce: string;\n}\n\n// ==================== 工具函数 ====================\n\n/** 字节数组转 hex 字符串 */\nfunction bytesToHex(bytes: Uint8Array): string {\n return Array.from(bytes)\n .map((b) => b.toString(16).padStart(2, '0'))\n .join('');\n}\n\n/** hex 字符串转字节数组 */\nfunction hexToBytes(hex: string): Uint8Array {\n const bytes = new Uint8Array(hex.length / 2);\n for (let i = 0; i < hex.length; i += 2) {\n bytes[i / 2] = parseInt(hex.substring(i, i + 2), 16);\n }\n return bytes;\n}\n\n/** 从公钥派生设备 ID(取公钥前 16 字符作为设备 ID) */\nfunction deriveDeviceId(publicKeyHex: string): string {\n return `device_${publicKeyHex.substring(0, 16)}`;\n}\n\n/** 生成 localStorage key */\nfunction getStorageKey(clientId: string): string {\n return `openclaw_device_key_${clientId}`;\n}\n\n// ==================== Web Crypto API 实现 ====================\n\n/**\n * 检测浏览器是否支持 Ed25519\n *\n * Ed25519 在 Web Crypto API 中的支持情况:\n * - Chrome 113+ / Edge 113+\n * - Firefox(尚未支持)\n * - Safari 17+\n *\n * 对于不支持的浏览器,退回到 HMAC-SHA256 方案\n */\nasync function isEd25519Supported(): Promise<boolean> {\n try {\n const keyPair = await crypto.subtle.generateKey('Ed25519', true, ['sign', 'verify']);\n return !!keyPair;\n } catch {\n return false;\n }\n}\n\n/**\n * 使用 Web Crypto API 生成 Ed25519 密钥对\n */\nasync function generateEd25519KeyPair(): Promise<DeviceKeyPair> {\n const keyPair = await crypto.subtle.generateKey('Ed25519', true, ['sign', 'verify']);\n\n // 导出原始格式的公钥和私钥\n const publicKeyRaw = await crypto.subtle.exportKey('raw', keyPair.publicKey);\n const privateKeyPkcs8 = await crypto.subtle.exportKey('pkcs8', keyPair.privateKey);\n\n const publicKeyHex = bytesToHex(new Uint8Array(publicKeyRaw));\n const privateKeyHex = bytesToHex(new Uint8Array(privateKeyPkcs8));\n\n return {\n publicKey: publicKeyHex,\n privateKey: privateKeyHex,\n deviceId: deriveDeviceId(publicKeyHex),\n };\n}\n\n/**\n * 使用 Ed25519 私钥签名 nonce\n */\nasync function signWithEd25519(privateKeyHex: string, nonce: string): Promise<string> {\n const privateKeyBytes = hexToBytes(privateKeyHex);\n\n // 导入 PKCS8 格式的私钥\n const privateKey = await crypto.subtle.importKey(\n 'pkcs8',\n privateKeyBytes.buffer,\n 'Ed25519',\n false,\n ['sign'],\n );\n\n // 签名 nonce(UTF-8 编码)\n const encoder = new TextEncoder();\n const data = encoder.encode(nonce);\n const signature = await crypto.subtle.sign('Ed25519', privateKey, data);\n\n return bytesToHex(new Uint8Array(signature));\n}\n\n// ==================== HMAC-SHA256 降级方案 ====================\n\n/**\n * 使用 HMAC-SHA256 作为降级签名方案\n *\n * 当浏览器不支持 Ed25519 时,使用随机密钥 + HMAC-SHA256 代替。\n * 密钥不用于非对称验签,但保证设备标识的一致性和签名的不可伪造性。\n */\nasync function generateHmacKeyPair(): Promise<DeviceKeyPair> {\n // 生成 32 字节随机密钥作为 \"私钥\"\n const privateKeyBytes = crypto.getRandomValues(new Uint8Array(32));\n const privateKeyHex = bytesToHex(privateKeyBytes);\n\n // 用私钥的 SHA-256 哈希作为 \"公钥\"(设备标识)\n const encoder = new TextEncoder();\n const hashBuffer = await crypto.subtle.digest('SHA-256', encoder.encode(privateKeyHex));\n const publicKeyHex = bytesToHex(new Uint8Array(hashBuffer));\n\n return {\n publicKey: publicKeyHex,\n privateKey: privateKeyHex,\n deviceId: deriveDeviceId(publicKeyHex),\n };\n}\n\n/**\n * 使用 HMAC-SHA256 签名 nonce\n */\nasync function signWithHmac(privateKeyHex: string, nonce: string): Promise<string> {\n const encoder = new TextEncoder();\n const keyData = encoder.encode(privateKeyHex);\n\n const key = await crypto.subtle.importKey(\n 'raw',\n keyData,\n { name: 'HMAC', hash: 'SHA-256' },\n false,\n ['sign'],\n );\n\n const signature = await crypto.subtle.sign('HMAC', key, encoder.encode(nonce));\n return bytesToHex(new Uint8Array(signature));\n}\n\n// ==================== DeviceKeyManager ====================\n\n/**\n * 设备密钥管理器\n *\n * 使用方式:\n * ```ts\n * const manager = new DeviceKeyManager('webchat');\n * await manager.initialize();\n *\n * // 收到 connect.challenge 时\n * const device = await manager.signChallenge(nonce);\n * // 将 device 放入 connect params\n * ```\n */\nexport class DeviceKeyManager {\n private keyPair: DeviceKeyPair | null = null;\n private clientId: string;\n private useEd25519 = false;\n private initialized = false;\n\n constructor(clientId: string = 'webchat') {\n this.clientId = clientId;\n }\n\n /**\n * 初始化密钥管理器\n *\n * - 尝试从 localStorage 恢复已有密钥对\n * - 如果没有,则生成新的密钥对并持久化\n * - 自动检测并选择 Ed25519 或 HMAC-SHA256\n */\n async initialize(): Promise<void> {\n if (this.initialized) return;\n\n // 检测 Ed25519 支持\n this.useEd25519 = await isEd25519Supported();\n logger.debug(`Device auth: Ed25519 ${this.useEd25519 ? 'supported' : 'not supported, using HMAC-SHA256 fallback'}`);\n\n // 尝试从 localStorage 恢复\n const stored = this.loadFromStorage();\n if (stored) {\n this.keyPair = stored;\n logger.debug(`Device auth: restored key pair for device ${stored.deviceId}`);\n } else {\n // 生成新密钥对\n this.keyPair = this.useEd25519\n ? await generateEd25519KeyPair()\n : await generateHmacKeyPair();\n\n this.saveToStorage(this.keyPair);\n logger.info(`Device auth: generated new key pair, deviceId=${this.keyPair.deviceId}`);\n }\n\n this.initialized = true;\n }\n\n /**\n * 签名 challenge nonce,返回 device 字段\n *\n * 在收到 connect.challenge 事件后调用,\n * 返回值直接放入 connect 请求的 params.device 中。\n */\n async signChallenge(nonce: string): Promise<DeviceIdentity> {\n if (!this.keyPair) {\n await this.initialize();\n }\n\n const signedAt = Math.floor(Date.now() / 1000);\n // 签名内容包含 nonce + signedAt,确保签名的时效性\n const signPayload = `${nonce}:${signedAt}`;\n\n const signature = this.useEd25519\n ? await signWithEd25519(this.keyPair!.privateKey, signPayload)\n : await signWithHmac(this.keyPair!.privateKey, signPayload);\n\n return {\n id: this.keyPair!.deviceId,\n publicKey: this.keyPair!.publicKey,\n signature,\n signedAt,\n nonce,\n };\n }\n\n /**\n * 获取设备 ID\n */\n getDeviceId(): string | null {\n return this.keyPair?.deviceId ?? null;\n }\n\n /**\n * 重置密钥(强制重新生成密钥对)\n */\n async reset(): Promise<void> {\n this.clearStorage();\n this.keyPair = null;\n this.initialized = false;\n await this.initialize();\n }\n\n // ==================== 存储相关 ====================\n\n private loadFromStorage(): DeviceKeyPair | null {\n if (typeof window === 'undefined' || !window.localStorage) return null;\n\n try {\n const stored = window.localStorage.getItem(getStorageKey(this.clientId));\n if (!stored) return null;\n\n const parsed = JSON.parse(stored) as DeviceKeyPair;\n if (parsed.publicKey && parsed.privateKey && parsed.deviceId) {\n return parsed;\n }\n } catch (e) {\n logger.warn('Failed to load device key from storage:', e);\n }\n return null;\n }\n\n private saveToStorage(keyPair: DeviceKeyPair): void {\n if (typeof window === 'undefined' || !window.localStorage) return;\n\n try {\n window.localStorage.setItem(getStorageKey(this.clientId), JSON.stringify(keyPair));\n } catch (e) {\n logger.warn('Failed to save device key to storage:', e);\n }\n }\n\n private clearStorage(): void {\n if (typeof window === 'undefined' || !window.localStorage) return;\n\n try {\n window.localStorage.removeItem(getStorageKey(this.clientId));\n } catch {\n // ignore\n }\n }\n}\n"],"names":["logger","LoggerManager","getLogger","bytesToHex","bytes","Array","from","map","b","toString","padStart","join","hexToBytes","hex","Uint8Array","length","i","parseInt","substring","deriveDeviceId","publicKeyHex","concat","getStorageKey","clientId","isEd25519Supported","_isEd25519Supported","apply","arguments","_asyncToGenerator","_regeneratorRuntime","mark","_callee4","keyPair","_t3","wrap","_context4","prev","next","crypto","subtle","generateKey","sent","abrupt","stop","generateEd25519KeyPair","_generateEd25519KeyPair","_callee5","publicKeyRaw","privateKeyPkcs8","privateKeyHex","_context5","exportKey","publicKey","privateKey","deviceId","signWithEd25519","_x","_x2","_signWithEd","_callee6","nonce","privateKeyBytes","encoder","data","signature","_context6","importKey","buffer","TextEncoder","encode","sign","generateHmacKeyPair","_generateHmacKeyPair","_callee7","hashBuffer","_context7","getRandomValues","digest","signWithHmac","_x3","_x4","_signWithHmac","_callee8","keyData","key","_context8","name","hash","DeviceKeyManager","_classCallCheck","_defineProperty","_createClass","value","_initialize","_callee","stored","_t","_context","initialized","useEd25519","debug","loadFromStorage","saveToStorage","info","initialize","_signChallenge","_callee2","signedAt","signPayload","_t2","_context2","Math","floor","Date","now","id","signChallenge","getDeviceId","_this$keyPair$deviceI","_this$keyPair","_reset","_callee3","_context3","clearStorage","reset","window","localStorage","getItem","parsed","JSON","parse","e","warn","setItem","stringify","removeItem","_unused"],"mappings":"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"}
|
|
@@ -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
|
/**
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* tdesign v1.1.0-alpha.
|
|
2
|
+
* tdesign v1.1.0-alpha.17
|
|
3
3
|
* (c) 2026 tdesign
|
|
4
4
|
* @license MIT
|
|
5
5
|
*/
|
|
@@ -150,6 +150,7 @@ var OpenClawEventMapper = /*#__PURE__*/function () {
|
|
|
150
150
|
data = payload.data,
|
|
151
151
|
runId = payload.runId;
|
|
152
152
|
this.currentRunId = runId || this.currentRunId;
|
|
153
|
+
console.log("[OpenClaw EventMapper] agent stream=\"".concat(stream, "\", data="), JSON.stringify(data).slice(0, 300));
|
|
153
154
|
switch (stream) {
|
|
154
155
|
case AgentStreamType.TOOL:
|
|
155
156
|
return this.handleToolStream(data);
|
|
@@ -328,16 +329,16 @@ var OpenClawEventMapper = /*#__PURE__*/function () {
|
|
|
328
329
|
hasError: false
|
|
329
330
|
};
|
|
330
331
|
}
|
|
331
|
-
var
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
switch (
|
|
332
|
+
var phase = data.phase || data.state;
|
|
333
|
+
var toolCallId = data.toolCallId;
|
|
334
|
+
var toolCallName = data.name || data.toolCallName || "unknown";
|
|
335
|
+
switch (phase) {
|
|
335
336
|
case "start":
|
|
336
337
|
return this.handleToolCallStart(toolCallId, toolCallName, data);
|
|
337
|
-
case "args":
|
|
338
|
-
return this.handleToolCallArgs(toolCallId, data);
|
|
339
338
|
case "result":
|
|
340
339
|
return this.handleToolCallResult(toolCallId, data);
|
|
340
|
+
case "args":
|
|
341
|
+
return this.handleToolCallArgs(toolCallId, data);
|
|
341
342
|
case "end":
|
|
342
343
|
return this.handleToolCallEnd(toolCallId);
|
|
343
344
|
default:
|
|
@@ -347,15 +348,20 @@ var OpenClawEventMapper = /*#__PURE__*/function () {
|
|
|
347
348
|
}, {
|
|
348
349
|
key: "handleToolCallStart",
|
|
349
350
|
value: function handleToolCallStart(toolCallId, toolCallName, data) {
|
|
351
|
+
var rawArgs = data === null || data === void 0 ? void 0 : data.args;
|
|
352
|
+
var argsStr = "";
|
|
353
|
+
if (rawArgs !== void 0 && rawArgs !== null) {
|
|
354
|
+
argsStr = typeof rawArgs === "string" ? rawArgs : JSON.stringify(rawArgs);
|
|
355
|
+
}
|
|
350
356
|
this.toolCallMap[toolCallId] = {
|
|
351
357
|
eventType: "TOOL_CALL_START",
|
|
352
358
|
toolCallId: toolCallId,
|
|
353
359
|
toolCallName: toolCallName || "unknown",
|
|
354
360
|
parentMessageId: (data === null || data === void 0 ? void 0 : data.parentMessageId) || "",
|
|
355
|
-
args:
|
|
361
|
+
args: argsStr
|
|
356
362
|
};
|
|
357
363
|
return {
|
|
358
|
-
content: createToolCallContent(this.toolCallMap[toolCallId], "
|
|
364
|
+
content: createToolCallContent(this.toolCallMap[toolCallId], "streaming", "append"),
|
|
359
365
|
isFinal: false,
|
|
360
366
|
hasError: false,
|
|
361
367
|
runId: this.currentRunId || void 0
|
|
@@ -388,18 +394,28 @@ var OpenClawEventMapper = /*#__PURE__*/function () {
|
|
|
388
394
|
key: "handleToolCallResult",
|
|
389
395
|
value: function handleToolCallResult(toolCallId, data) {
|
|
390
396
|
if (!this.toolCallMap[toolCallId]) {
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
397
|
+
var toolCallName = (data === null || data === void 0 ? void 0 : data.name) || (data === null || data === void 0 ? void 0 : data.toolCallName) || "unknown";
|
|
398
|
+
this.toolCallMap[toolCallId] = {
|
|
399
|
+
eventType: "TOOL_CALL_START",
|
|
400
|
+
toolCallId: toolCallId,
|
|
401
|
+
toolCallName: toolCallName,
|
|
402
|
+
parentMessageId: "",
|
|
403
|
+
args: ""
|
|
395
404
|
};
|
|
396
405
|
}
|
|
397
|
-
var
|
|
398
|
-
var
|
|
399
|
-
|
|
406
|
+
var resultContent = (data === null || data === void 0 ? void 0 : data.content) || (data === null || data === void 0 ? void 0 : data.result) || "";
|
|
407
|
+
var meta = (data === null || data === void 0 ? void 0 : data.meta) || "";
|
|
408
|
+
var isError = data === null || data === void 0 ? void 0 : data.isError;
|
|
409
|
+
var resultStr = resultContent || meta || "";
|
|
410
|
+
this.toolCallMap[toolCallId] = updateToolCall(this.toolCallMap[toolCallId], _objectSpread({
|
|
400
411
|
eventType: "TOOL_CALL_RESULT",
|
|
401
|
-
result:
|
|
402
|
-
}
|
|
412
|
+
result: resultStr
|
|
413
|
+
}, isError !== void 0 ? {
|
|
414
|
+
ext: {
|
|
415
|
+
isError: isError
|
|
416
|
+
}
|
|
417
|
+
} : {}));
|
|
418
|
+
this.toolCallEnded.add(toolCallId);
|
|
403
419
|
var suggestionContent = handleSuggestionToolCall(this.toolCallMap[toolCallId]);
|
|
404
420
|
if (suggestionContent) {
|
|
405
421
|
return {
|
|
@@ -443,14 +459,14 @@ var OpenClawEventMapper = /*#__PURE__*/function () {
|
|
|
443
459
|
};
|
|
444
460
|
}
|
|
445
461
|
var toolCallId = data.toolCallId;
|
|
446
|
-
var toolCallName = data.toolCallName;
|
|
462
|
+
var toolCallName = data.name || data.toolCallName || "unknown";
|
|
447
463
|
if (!this.toolCallMap[toolCallId]) {
|
|
448
464
|
return this.handleToolCallStart(toolCallId, toolCallName, data);
|
|
449
465
|
}
|
|
450
466
|
if (data.delta || data.args) {
|
|
451
467
|
return this.handleToolCallArgs(toolCallId, data);
|
|
452
468
|
}
|
|
453
|
-
if (data.content || data.result) {
|
|
469
|
+
if (data.content || data.result || data.meta || data.isError !== void 0) {
|
|
454
470
|
return this.handleToolCallResult(toolCallId, data);
|
|
455
471
|
}
|
|
456
472
|
return {
|
|
@@ -469,7 +485,7 @@ var OpenClawEventMapper = /*#__PURE__*/function () {
|
|
|
469
485
|
hasError: false
|
|
470
486
|
};
|
|
471
487
|
}
|
|
472
|
-
return this.handleToolCallStart(data.toolCallId, data.toolCallName || "unknown", data);
|
|
488
|
+
return this.handleToolCallStart(data.toolCallId, data.name || data.toolCallName || "unknown", data);
|
|
473
489
|
}
|
|
474
490
|
}, {
|
|
475
491
|
key: "handleToolResult",
|