@tdesign-react/chat 1.1.0-alpha.17 → 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-5d7a98b7.js +169 -0
- package/es/_chunks/dep-5d7a98b7.js.map +1 -0
- package/es/_chunks/dep-907337f3.js +1247 -0
- package/es/_chunks/dep-907337f3.js.map +1 -0
- package/es/_chunks/dep-ee7a509c.js +438 -0
- package/es/_chunks/dep-ee7a509c.js.map +1 -0
- 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 +5 -4
- 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 +5 -4
- 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 +5 -4
- package/es/chat-engine/components/json-render/index.js.map +1 -1
- package/es/chat-engine/components/json-render/registry/a2ui-binding.js +5 -4
- 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 +5 -4
- package/es/chat-engine/components/json-render/registry/a2ui-registry.js.map +1 -1
- package/es/chat-engine/components/json-render/registry/config.js +5 -4
- package/es/chat-engine/components/json-render/registry/config.js.map +1 -1
- package/es/chat-engine/components/json-render/registry/index.js +5 -4
- package/es/chat-engine/components/json-render/registry/index.js.map +1 -1
- package/es/chat-engine/components/json-render/renderer/A2UIJsonRenderActivityRenderer.js +4 -3
- 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 +3 -2
- 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 +3 -2
- 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 +3 -2
- 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 +16 -2
- 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.js +1 -1
- package/es/chat-engine/core/adapters/index.js +2 -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.js +2 -1
- package/es/chat-engine/core/adapters/openclaw/event-mapper.js.map +1 -1
- package/es/chat-engine/core/adapters/openclaw/history-converter.js +1 -1
- package/es/chat-engine/core/adapters/openclaw/index.d.ts +11 -0
- package/es/chat-engine/core/adapters/openclaw/index.js +70 -17
- package/es/chat-engine/core/adapters/openclaw/index.js.map +1 -1
- package/es/chat-engine/core/adapters/openclaw/rpc-handler.js +1 -1
- package/es/chat-engine/core/adapters/openclaw/types/config.d.ts +21 -0
- package/es/chat-engine/core/adapters/openclaw/types/config.js +8 -4
- package/es/chat-engine/core/adapters/openclaw/types/config.js.map +1 -1
- package/es/chat-engine/core/adapters/openclaw/types/events.d.ts +3 -1
- package/es/chat-engine/core/adapters/openclaw/types/events.js +2 -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 +13 -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/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 +3 -1
- package/es/chat-engine/core/index.js +150 -111
- package/es/chat-engine/core/index.js.map +1 -1
- package/es/chat-engine/core/processor/index.js +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 -1
- package/es/chat-engine/core/server/llm-service.js +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.js +1 -1
- package/es/chat-engine/core/stream-handlers/default-stream-handler.js +1 -1
- package/es/chat-engine/core/stream-handlers/index.js +4 -3
- package/es/chat-engine/core/stream-handlers/index.js.map +1 -1
- package/es/chat-engine/core/stream-handlers/openclaw-stream-handler.d.ts +8 -0
- package/es/chat-engine/core/stream-handlers/openclaw-stream-handler.js +73 -22
- package/es/chat-engine/core/stream-handlers/openclaw-stream-handler.js.map +1 -1
- package/es/chat-engine/core/stream-handlers/types.d.ts +1 -1
- package/es/chat-engine/core/stream-handlers/types.js +1 -1
- 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 +3 -2
- 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 +3 -2
- 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 +34 -10
- package/es/chat-engine/hooks/useChat.js.map +1 -1
- package/es/chat-engine/index.js +7 -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 +5 -4
- package/es/index.js.map +1 -1
- package/es/style/index.js +1 -1
- package/package.json +1 -1
|
@@ -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
|
*/
|
|
@@ -19,8 +19,10 @@ import '../event-bus/index.js';
|
|
|
19
19
|
import '../event-bus/ChatEventBus.js';
|
|
20
20
|
import '@babel/runtime/helpers/toConsumableArray';
|
|
21
21
|
import '../event-bus/types.js';
|
|
22
|
+
import '@babel/runtime/helpers/typeof';
|
|
22
23
|
import '../utils/logger.js';
|
|
23
24
|
import '../adapters/openclaw/index.js';
|
|
25
|
+
import '@babel/runtime/helpers/objectWithoutProperties';
|
|
24
26
|
import '@babel/runtime/helpers/possibleConstructorReturn';
|
|
25
27
|
import '@babel/runtime/helpers/getPrototypeOf';
|
|
26
28
|
import '@babel/runtime/helpers/inherits';
|
|
@@ -29,7 +31,6 @@ import '../server/websocket-client.js';
|
|
|
29
31
|
import '../server/errors.js';
|
|
30
32
|
import '@babel/runtime/helpers/wrapNativeSuper';
|
|
31
33
|
import '../adapters/openclaw/event-mapper.js';
|
|
32
|
-
import '@babel/runtime/helpers/typeof';
|
|
33
34
|
import '../adapters/openclaw/types/events.js';
|
|
34
35
|
import '../adapters/shared/index.js';
|
|
35
36
|
import '../adapters/shared/content-factory.js';
|
|
@@ -39,12 +40,12 @@ import '../adapters/shared/activity-manager.js';
|
|
|
39
40
|
import '../adapters/agui/ActivityManager.js';
|
|
40
41
|
import '../utils/index.js';
|
|
41
42
|
import '../utils/immutable-patch.js';
|
|
42
|
-
import '@babel/runtime/helpers/objectWithoutProperties';
|
|
43
43
|
import '@babel/runtime/helpers/toArray';
|
|
44
44
|
import '../adapters/openclaw/rpc-handler.js';
|
|
45
45
|
import '../adapters/openclaw/types/config.js';
|
|
46
46
|
import '../adapters/openclaw/utils.js';
|
|
47
47
|
import '../adapters/openclaw/history-converter.js';
|
|
48
|
+
import '../adapters/openclaw/device-key-manager.js';
|
|
48
49
|
import '../adapters/openclaw/types/index.js';
|
|
49
50
|
import '../adapters/openclaw/types/messages.js';
|
|
50
51
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../../pro-components/chat/chat-engine/core/stream-handlers/index.ts"],"sourcesContent":["/**\n * StreamHandler 模块\n *\n * 统一导出 + 工厂函数\n */\nexport type { IStreamHandler, StreamContext } from './types';\nexport { DefaultStreamHandler } from './default-stream-handler';\nexport { AGUIStreamHandler } from './agui-stream-handler';\nexport { OpenClawStreamHandler } from './openclaw-stream-handler';\n\nimport type { AGUIAdapter } from '../adapters/agui';\nimport { LLMService } from '../server';\nimport type { IStreamHandler } from './types';\nimport { DefaultStreamHandler } from './default-stream-handler';\nimport { AGUIStreamHandler } from './agui-stream-handler';\nimport { OpenClawStreamHandler } from './openclaw-stream-handler';\n\nexport interface CreateStreamHandlerOptions {\n protocol?: 'default' | 'agui' | 'openclaw';\n llmService: LLMService;\n aguiAdapter?: AGUIAdapter | null;\n}\n\n/**\n * 工厂函数:根据协议类型创建对应的 StreamHandler\n */\nexport function createStreamHandler(options: CreateStreamHandlerOptions): IStreamHandler {\n const { protocol, llmService, aguiAdapter } = options;\n\n switch (protocol) {\n case 'agui':\n if (!aguiAdapter) {\n throw new Error('AGUIAdapter is required for agui protocol');\n }\n return new AGUIStreamHandler(llmService, aguiAdapter);\n\n case 'openclaw':\n return new OpenClawStreamHandler({ llmService });\n\n default:\n return new DefaultStreamHandler(llmService);\n }\n}\n"],"names":["createStreamHandler","options","protocol","llmService","aguiAdapter","Error","AGUIStreamHandler","OpenClawStreamHandler","DefaultStreamHandler"],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../../pro-components/chat/chat-engine/core/stream-handlers/index.ts"],"sourcesContent":["/**\n * StreamHandler 模块\n *\n * 统一导出 + 工厂函数\n */\nexport type { IStreamHandler, StreamContext } from './types';\nexport { DefaultStreamHandler } from './default-stream-handler';\nexport { AGUIStreamHandler } from './agui-stream-handler';\nexport { OpenClawStreamHandler } from './openclaw-stream-handler';\n\nimport type { AGUIAdapter } from '../adapters/agui';\nimport { LLMService } from '../server';\nimport type { IStreamHandler } from './types';\nimport { DefaultStreamHandler } from './default-stream-handler';\nimport { AGUIStreamHandler } from './agui-stream-handler';\nimport { OpenClawStreamHandler } from './openclaw-stream-handler';\n\nexport interface CreateStreamHandlerOptions {\n protocol?: 'default' | 'agui' | 'openclaw';\n llmService: LLMService;\n aguiAdapter?: AGUIAdapter | null;\n}\n\n/**\n * 工厂函数:根据协议类型创建对应的 StreamHandler\n */\nexport function createStreamHandler(options: CreateStreamHandlerOptions): IStreamHandler {\n const { protocol, llmService, aguiAdapter } = options;\n\n switch (protocol) {\n case 'agui':\n if (!aguiAdapter) {\n throw new Error('AGUIAdapter is required for agui protocol');\n }\n return new AGUIStreamHandler(llmService, aguiAdapter);\n\n case 'openclaw':\n return new OpenClawStreamHandler({ llmService });\n\n default:\n return new DefaultStreamHandler(llmService);\n }\n}\n"],"names":["createStreamHandler","options","protocol","llmService","aguiAdapter","Error","AGUIStreamHandler","OpenClawStreamHandler","DefaultStreamHandler"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA0BO,SAASA,oBAAoBC,OAAqD,EAAA;AACvF,EAAA,IAAQC,QAAA,GAAsCD,OAAA,CAAtCC,QAAA;IAAUC,UAAY,GAAgBF,OAAA,CAA5BE,UAAY;IAAAC,WAAA,GAAgBH,OAAA,CAAhBG,WAAA,CAAA;AAEtB,EAAA,QAAAF,QAAA;AACD,IAAA,KAAA,MAAA;MACH,IAAI,CAACE,WAAa,EAAA;AACV,QAAA,MAAA,IAAIC,MAAM,2CAA2C,CAAA,CAAA;AAC7D,OAAA;AACO,MAAA,OAAA,IAAIC,iBAAkB,CAAAH,UAAA,EAAYC,WAAW,CAAA,CAAA;AAEjD,IAAA,KAAA,UAAA;MACH,OAAO,IAAIG,qBAAAA,CAAsB;AAAEJ,QAAAA,UAAA,EAAAA,UAAAA;AAAW,OAAC,CAAA,CAAA;AAAA,IAAA;AAGxC,MAAA,OAAA,IAAIK,qBAAqBL,UAAU,CAAA,CAAA;AAAA,GAAA;AAEhD;;;;"}
|
|
@@ -41,6 +41,14 @@ export declare class OpenClawStreamHandler implements IStreamHandler {
|
|
|
41
41
|
* 获取适配器实例(供外部调用 invokeAction 等)
|
|
42
42
|
*/
|
|
43
43
|
getAdapter(): OpenClawAdapter | null;
|
|
44
|
+
/**
|
|
45
|
+
* 从 onRequest 获取认证信息,传给 adapter 用于 connect 握手
|
|
46
|
+
*
|
|
47
|
+
* onRequest 返回值中如果包含 `auth` 字段(如 `{ auth: { token: '...' } }`),
|
|
48
|
+
* 会被提取出来作为 connect 握手的认证参数。
|
|
49
|
+
* 其他字段(如 sessionKey、message)属于 sendMessage 阶段使用,不会传入 connect。
|
|
50
|
+
*/
|
|
51
|
+
private prepareConnectAuth;
|
|
44
52
|
/**
|
|
45
53
|
* 确保 OpenClaw 适配器已创建
|
|
46
54
|
*/
|
|
@@ -1,9 +1,10 @@
|
|
|
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
|
*/
|
|
6
6
|
|
|
7
|
+
import _typeof from '@babel/runtime/helpers/typeof';
|
|
7
8
|
import _asyncToGenerator from '@babel/runtime/helpers/asyncToGenerator';
|
|
8
9
|
import _classCallCheck from '@babel/runtime/helpers/classCallCheck';
|
|
9
10
|
import _createClass from '@babel/runtime/helpers/createClass';
|
|
@@ -15,6 +16,7 @@ import { OpenClawAdapter } from '../adapters/openclaw/index.js';
|
|
|
15
16
|
import { ChatEngineEventType } from '../event-bus/types.js';
|
|
16
17
|
import '../event-bus/ChatEventBus.js';
|
|
17
18
|
import '@babel/runtime/helpers/toConsumableArray';
|
|
19
|
+
import '@babel/runtime/helpers/objectWithoutProperties';
|
|
18
20
|
import '@babel/runtime/helpers/possibleConstructorReturn';
|
|
19
21
|
import '@babel/runtime/helpers/getPrototypeOf';
|
|
20
22
|
import '@babel/runtime/helpers/inherits';
|
|
@@ -23,7 +25,6 @@ import '../server/websocket-client.js';
|
|
|
23
25
|
import '../server/errors.js';
|
|
24
26
|
import '@babel/runtime/helpers/wrapNativeSuper';
|
|
25
27
|
import '../adapters/openclaw/event-mapper.js';
|
|
26
|
-
import '@babel/runtime/helpers/typeof';
|
|
27
28
|
import '../adapters/openclaw/types/events.js';
|
|
28
29
|
import '../adapters/shared/index.js';
|
|
29
30
|
import '../adapters/shared/content-factory.js';
|
|
@@ -33,12 +34,12 @@ import '../adapters/shared/activity-manager.js';
|
|
|
33
34
|
import '../adapters/agui/ActivityManager.js';
|
|
34
35
|
import '../utils/index.js';
|
|
35
36
|
import '../utils/immutable-patch.js';
|
|
36
|
-
import '@babel/runtime/helpers/objectWithoutProperties';
|
|
37
37
|
import '@babel/runtime/helpers/toArray';
|
|
38
38
|
import '../adapters/openclaw/rpc-handler.js';
|
|
39
39
|
import '../adapters/openclaw/types/config.js';
|
|
40
40
|
import '../adapters/openclaw/utils.js';
|
|
41
41
|
import '../adapters/openclaw/history-converter.js';
|
|
42
|
+
import '../adapters/openclaw/device-key-manager.js';
|
|
42
43
|
import '../adapters/openclaw/types/index.js';
|
|
43
44
|
import '../adapters/openclaw/types/messages.js';
|
|
44
45
|
|
|
@@ -63,24 +64,27 @@ var OpenClawStreamHandler = /*#__PURE__*/function () {
|
|
|
63
64
|
this.updateCallbacks(config, onHistoryLoaded);
|
|
64
65
|
_context.prev = 1;
|
|
65
66
|
if (this.openclawAdapter.isAuthenticated()) {
|
|
66
|
-
_context.next =
|
|
67
|
+
_context.next = 3;
|
|
67
68
|
break;
|
|
68
69
|
}
|
|
69
70
|
_context.next = 2;
|
|
70
|
-
return this.
|
|
71
|
+
return this.prepareConnectAuth(config);
|
|
71
72
|
case 2:
|
|
72
|
-
_context.next =
|
|
73
|
-
|
|
73
|
+
_context.next = 3;
|
|
74
|
+
return this.openclawAdapter.connect();
|
|
74
75
|
case 3:
|
|
75
|
-
_context.
|
|
76
|
+
_context.next = 5;
|
|
77
|
+
break;
|
|
78
|
+
case 4:
|
|
79
|
+
_context.prev = 4;
|
|
76
80
|
_t = _context["catch"](1);
|
|
77
81
|
(_config$onError = config.onError) === null || _config$onError === void 0 || _config$onError.call(config, _t);
|
|
78
82
|
this.logger.error("OpenClaw pre-connect failed:", _t);
|
|
79
|
-
case
|
|
83
|
+
case 5:
|
|
80
84
|
case "end":
|
|
81
85
|
return _context.stop();
|
|
82
86
|
}
|
|
83
|
-
}, _callee, this, [[1,
|
|
87
|
+
}, _callee, this, [[1, 4]]);
|
|
84
88
|
}));
|
|
85
89
|
function initConnection(_x, _x2) {
|
|
86
90
|
return _initConnection.apply(this, arguments);
|
|
@@ -100,40 +104,43 @@ var OpenClawStreamHandler = /*#__PURE__*/function () {
|
|
|
100
104
|
this.updateStreamCallbacks(config, context);
|
|
101
105
|
_context2.prev = 1;
|
|
102
106
|
if (this.openclawAdapter.isAuthenticated()) {
|
|
103
|
-
_context2.next =
|
|
107
|
+
_context2.next = 3;
|
|
104
108
|
break;
|
|
105
109
|
}
|
|
106
110
|
_context2.next = 2;
|
|
107
|
-
return this.
|
|
111
|
+
return this.prepareConnectAuth(config);
|
|
108
112
|
case 2:
|
|
109
113
|
_context2.next = 3;
|
|
110
|
-
return
|
|
114
|
+
return this.openclawAdapter.connect();
|
|
111
115
|
case 3:
|
|
116
|
+
_context2.next = 4;
|
|
117
|
+
return (_config$onRequest = config.onRequest) === null || _config$onRequest === void 0 ? void 0 : _config$onRequest.call(config, params);
|
|
118
|
+
case 4:
|
|
112
119
|
_t2 = _context2.sent;
|
|
113
120
|
if (_t2) {
|
|
114
|
-
_context2.next =
|
|
121
|
+
_context2.next = 5;
|
|
115
122
|
break;
|
|
116
123
|
}
|
|
117
124
|
_t2 = {};
|
|
118
|
-
case
|
|
125
|
+
case 5:
|
|
119
126
|
requestParams = _t2;
|
|
120
|
-
_context2.next =
|
|
127
|
+
_context2.next = 6;
|
|
121
128
|
return this.openclawAdapter.sendMessage(params, requestParams);
|
|
122
|
-
case 5:
|
|
123
|
-
_context2.next = 7;
|
|
124
|
-
break;
|
|
125
129
|
case 6:
|
|
126
|
-
_context2.
|
|
130
|
+
_context2.next = 8;
|
|
131
|
+
break;
|
|
132
|
+
case 7:
|
|
133
|
+
_context2.prev = 7;
|
|
127
134
|
_t3 = _context2["catch"](1);
|
|
128
135
|
if (messageId) {
|
|
129
136
|
context.handleError(messageId, _t3);
|
|
130
137
|
}
|
|
131
138
|
throw _t3;
|
|
132
|
-
case
|
|
139
|
+
case 8:
|
|
133
140
|
case "end":
|
|
134
141
|
return _context2.stop();
|
|
135
142
|
}
|
|
136
|
-
}, _callee2, this, [[1,
|
|
143
|
+
}, _callee2, this, [[1, 7]]);
|
|
137
144
|
}));
|
|
138
145
|
function handleStream(_x3, _x4) {
|
|
139
146
|
return _handleStream.apply(this, arguments);
|
|
@@ -177,6 +184,50 @@ var OpenClawStreamHandler = /*#__PURE__*/function () {
|
|
|
177
184
|
value: function getAdapter() {
|
|
178
185
|
return this.openclawAdapter;
|
|
179
186
|
}
|
|
187
|
+
}, {
|
|
188
|
+
key: "prepareConnectAuth",
|
|
189
|
+
value: function () {
|
|
190
|
+
var _prepareConnectAuth = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee4(config) {
|
|
191
|
+
var requestParams, auth, _t4;
|
|
192
|
+
return _regeneratorRuntime.wrap(function (_context4) {
|
|
193
|
+
while (1) switch (_context4.prev = _context4.next) {
|
|
194
|
+
case 0:
|
|
195
|
+
if (!(!this.openclawAdapter || !config.onRequest)) {
|
|
196
|
+
_context4.next = 1;
|
|
197
|
+
break;
|
|
198
|
+
}
|
|
199
|
+
return _context4.abrupt("return");
|
|
200
|
+
case 1:
|
|
201
|
+
_context4.prev = 1;
|
|
202
|
+
_context4.next = 2;
|
|
203
|
+
return config.onRequest({
|
|
204
|
+
prompt: ""
|
|
205
|
+
});
|
|
206
|
+
case 2:
|
|
207
|
+
requestParams = _context4.sent;
|
|
208
|
+
if (requestParams) {
|
|
209
|
+
auth = requestParams.auth;
|
|
210
|
+
if (auth && _typeof(auth) === "object") {
|
|
211
|
+
this.openclawAdapter.setConnectAuth(auth);
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
_context4.next = 4;
|
|
215
|
+
break;
|
|
216
|
+
case 3:
|
|
217
|
+
_context4.prev = 3;
|
|
218
|
+
_t4 = _context4["catch"](1);
|
|
219
|
+
this.logger.warn("Failed to get connect auth from onRequest:", _t4);
|
|
220
|
+
case 4:
|
|
221
|
+
case "end":
|
|
222
|
+
return _context4.stop();
|
|
223
|
+
}
|
|
224
|
+
}, _callee4, this, [[1, 3]]);
|
|
225
|
+
}));
|
|
226
|
+
function prepareConnectAuth(_x5) {
|
|
227
|
+
return _prepareConnectAuth.apply(this, arguments);
|
|
228
|
+
}
|
|
229
|
+
return prepareConnectAuth;
|
|
230
|
+
}()
|
|
180
231
|
}, {
|
|
181
232
|
key: "ensureAdapter",
|
|
182
233
|
value: function ensureAdapter(config) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openclaw-stream-handler.js","sources":["../../../../../pro-components/chat/chat-engine/core/stream-handlers/openclaw-stream-handler.ts"],"sourcesContent":["/**\n * OpenClaw 协议流式处理器\n *\n * 负责 OpenClaw WebSocket 连接的完整生命周期管理:\n * - 适配器创建与持有(从 LLMService 移入)\n * - 连接建立与认证\n * - 消息发送与流式响应\n * - 历史消息接收\n *\n * OpenClaw 的 chunk.data 已经是 AIMessageContent 格式(由 OpenClawAdapter 转换)\n */\nimport type { AIMessageContent, ChatRequestParams, ChatServiceConfig, SSEChunkData } from '../type';\nimport { ChatEngineEventType } from '../event-bus';\nimport { LoggerManager } from '../utils/logger';\nimport {\n OpenClawAdapter,\n type OpenClawAdapterConfig,\n} from '../adapters/openclaw';\nimport type { IStreamHandler, StreamContext } from './types';\nimport type { LLMService } from '../server';\n\nexport interface OpenClawStreamHandlerOptions {\n /** LLM 服务引用(用于 SSE/Batch 的 abort) */\n llmService: LLMService;\n}\n\nexport class OpenClawStreamHandler implements IStreamHandler {\n private openclawAdapter: OpenClawAdapter | null = null;\n private llmService: LLMService;\n private logger = LoggerManager.getLogger();\n\n constructor(options: OpenClawStreamHandlerOptions) {\n this.llmService = options.llmService;\n }\n\n /**\n * 初始化:在 ChatEngine.init() 阶段预建立 WebSocket 连接\n *\n * Gateway 会在 connect 响应中推送历史消息,通过 onHistoryLoaded 自动回填。\n */\n async initConnection(config: ChatServiceConfig, onHistoryLoaded?: (messages: any[]) => void): Promise<void> {\n this.ensureAdapter(config);\n this.updateCallbacks(config, onHistoryLoaded);\n\n try {\n if (!this.openclawAdapter!.isAuthenticated()) {\n await this.openclawAdapter!.connect();\n }\n } catch (error) {\n config.onError?.(error as Error);\n // 连接失败不抛出,允许后续 sendMessage 时重试\n this.logger.error('OpenClaw pre-connect failed:', error);\n }\n }\n\n async handleStream(params: ChatRequestParams, context: StreamContext): Promise<void> {\n const { messageId, config } = context;\n\n this.ensureAdapter(config);\n this.updateStreamCallbacks(config, context);\n\n try {\n // 连接 WebSocket(如果未连接,比如 init 阶段连接失败需要重试)\n if (!this.openclawAdapter!.isAuthenticated()) {\n await this.openclawAdapter!.connect();\n }\n\n // 通过 onRequest 获取用户自定义的业务参数\n const requestParams = (await config.onRequest?.(params)) || {};\n\n // 发送消息(requestParams 包含用户自定义的 sessionKey、token 等)\n await this.openclawAdapter!.sendMessage(params, requestParams as Record<string, unknown>);\n } catch (error) {\n if (messageId) {\n context.handleError(messageId, error);\n }\n throw error;\n }\n }\n\n /**\n * 中止当前请求\n */\n abort(): void {\n this.openclawAdapter?.abort();\n }\n\n /**\n * 销毁处理器,释放 OpenClaw 连接资源\n */\n async destroy(): Promise<void> {\n if (this.openclawAdapter) {\n await this.openclawAdapter.destroy();\n this.openclawAdapter = null;\n }\n }\n\n /**\n * 获取适配器实例(供外部调用 invokeAction 等)\n */\n getAdapter(): OpenClawAdapter | null {\n return this.openclawAdapter;\n }\n\n // ==================== 内部方法 ====================\n\n /**\n * 确保 OpenClaw 适配器已创建\n */\n private ensureAdapter(config: ChatServiceConfig): void {\n if (this.openclawAdapter) return;\n\n const openclawConfig = config.openclaw || {};\n\n const adapterConfig: OpenClawAdapterConfig = {\n endpoint: config.endpoint!,\n timeout: config.timeout,\n maxRetries: config.maxRetries,\n retryInterval: config.retryInterval,\n ...openclawConfig,\n };\n\n this.openclawAdapter = new OpenClawAdapter(adapterConfig);\n }\n\n /**\n * 更新 init 阶段的回调(连接 + 历史消息)\n */\n private updateCallbacks(config: ChatServiceConfig, onHistoryLoaded?: (messages: any[]) => void): void {\n if (!this.openclawAdapter) return;\n\n this.openclawAdapter.setCallbacks({\n onConnected: () => {\n this.logger.info('OpenClaw connected');\n },\n onStart: () => {\n config.onStart?.('openclaw:stream:start');\n },\n onMessage: () => {\n // init 阶段无需处理消息\n },\n onComplete: () => {\n // init 阶段无需处理完成\n },\n onError: (error) => {\n config.onError?.(error);\n },\n onHistoryLoaded: (messages) => {\n this.logger.info(`OpenClaw history loaded: ${messages.length} messages`);\n onHistoryLoaded?.(messages);\n },\n });\n }\n\n /**\n * 更新流式请求阶段的回调(消息处理 + 事件发布)\n */\n private updateStreamCallbacks(config: ChatServiceConfig, context: StreamContext): void {\n if (!this.openclawAdapter) return;\n\n const { messageId } = context;\n\n this.openclawAdapter.setCallbacks({\n onConnected: () => {\n this.logger.info('OpenClaw connected');\n },\n onStart: () => {\n config.onStart?.('openclaw:stream:start');\n },\n onMessage: (content) => {\n if (context.getStopReceive() || !messageId) return;\n\n // OpenClaw 的 content 已经是 AIMessageContent 格式(由 OpenClawAdapter 转换)\n const chunk: SSEChunkData = {\n event: 'openclaw',\n data: content,\n };\n let result: AIMessageContent | AIMessageContent[] | null = content;\n\n // 允许用户通过 onMessage 进行自定义处理\n if (config.onMessage) {\n const userResult = config.onMessage(chunk, context.messageStore.getMessageByID(messageId), result);\n if (userResult) {\n result = userResult;\n }\n }\n\n // 发布流数据事件\n context.eventBus.emit(ChatEngineEventType.REQUEST_STREAM, {\n messageId,\n chunk,\n content: result,\n });\n\n // 处理消息结果\n context.processMessageResult(messageId, result);\n },\n onComplete: (isAborted, requestParams) => {\n if (messageId) {\n context.handleComplete(messageId, isAborted, requestParams || context.config);\n }\n },\n onError: (error) => {\n if (messageId) context.handleError(messageId, error);\n },\n onHistoryLoaded: (messages) => {\n // 流式阶段不应再处理历史消息\n this.logger.info(`OpenClaw history loaded during stream: ${messages.length} messages (ignored)`);\n },\n });\n }\n}\n"],"names":["OpenClawStreamHandler","options","_classCallCheck","_defineProperty","LoggerManager","getLogger","llmService","_createClass","key","value","_initConnection","_asyncToGenerator","_regeneratorRuntime","mark","_callee","config","onHistoryLoaded","_config$onError","_t","wrap","_context","prev","next","ensureAdapter","updateCallbacks","openclawAdapter","isAuthenticated","connect","onError","call","logger","error","stop","initConnection","_x","_x2","apply","arguments","_handleStream","_callee2","params","context","messageId","_config$onRequest","requestParams","_t2","_t3","_context2","updateStreamCallbacks","onRequest","sendMessage","handleError","handleStream","_x3","_x4","abort","_this$openclawAdapter","_destroy","_callee3","_context3","destroy","getAdapter","openclawConfig","openclaw","adapterConfig","_objectSpread","endpoint","timeout","maxRetries","retryInterval","OpenClawAdapter","_this","setCallbacks","onConnected","info","onStart","_config$onStart","onMessage","onComplete","_config$onError2","messages","concat","length","_this2","_config$onStart2","content","getStopReceive","chunk","event","data","result","userResult","messageStore","getMessageByID","eventBus","emit","ChatEngineEventType","REQUEST_STREAM","processMessageResult","isAborted","handleComplete"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"openclaw-stream-handler.js","sources":["../../../../../pro-components/chat/chat-engine/core/stream-handlers/openclaw-stream-handler.ts"],"sourcesContent":["/**\n * OpenClaw 协议流式处理器\n *\n * 负责 OpenClaw WebSocket 连接的完整生命周期管理:\n * - 适配器创建与持有(从 LLMService 移入)\n * - 连接建立与认证\n * - 消息发送与流式响应\n * - 历史消息接收\n *\n * OpenClaw 的 chunk.data 已经是 AIMessageContent 格式(由 OpenClawAdapter 转换)\n */\nimport type { AIMessageContent, ChatRequestParams, ChatServiceConfig, SSEChunkData } from '../type';\nimport { ChatEngineEventType } from '../event-bus';\nimport { LoggerManager } from '../utils/logger';\nimport {\n OpenClawAdapter,\n type OpenClawAdapterConfig,\n} from '../adapters/openclaw';\nimport type { IStreamHandler, StreamContext } from './types';\nimport type { LLMService } from '../server';\n\nexport interface OpenClawStreamHandlerOptions {\n /** LLM 服务引用(用于 SSE/Batch 的 abort) */\n llmService: LLMService;\n}\n\nexport class OpenClawStreamHandler implements IStreamHandler {\n private openclawAdapter: OpenClawAdapter | null = null;\n private llmService: LLMService;\n private logger = LoggerManager.getLogger();\n\n constructor(options: OpenClawStreamHandlerOptions) {\n this.llmService = options.llmService;\n }\n\n /**\n * 初始化:在 ChatEngine.init() 阶段预建立 WebSocket 连接\n *\n * Gateway 会在 connect 响应中推送历史消息,通过 onHistoryLoaded 自动回填。\n */\n async initConnection(config: ChatServiceConfig, onHistoryLoaded?: (messages: any[]) => void): Promise<void> {\n this.ensureAdapter(config);\n this.updateCallbacks(config, onHistoryLoaded);\n\n try {\n if (!this.openclawAdapter!.isAuthenticated()) {\n // 在 connect 前获取认证信息(token 等),传给 adapter 用于握手\n await this.prepareConnectAuth(config);\n await this.openclawAdapter!.connect();\n }\n } catch (error) {\n config.onError?.(error as Error);\n // 连接失败不抛出,允许后续 sendMessage 时重试\n this.logger.error('OpenClaw pre-connect failed:', error);\n }\n }\n\n async handleStream(params: ChatRequestParams, context: StreamContext): Promise<void> {\n const { messageId, config } = context;\n\n this.ensureAdapter(config);\n this.updateStreamCallbacks(config, context);\n\n try {\n // 连接 WebSocket(如果未连接,比如 init 阶段连接失败需要重试)\n if (!this.openclawAdapter!.isAuthenticated()) {\n await this.prepareConnectAuth(config);\n await this.openclawAdapter!.connect();\n }\n\n // 通过 onRequest 获取用户自定义的业务参数\n const requestParams = (await config.onRequest?.(params)) || {};\n\n // 发送消息(requestParams 包含用户自定义的 sessionKey、token 等)\n await this.openclawAdapter!.sendMessage(params, requestParams as Record<string, unknown>);\n } catch (error) {\n if (messageId) {\n context.handleError(messageId, error);\n }\n throw error;\n }\n }\n\n /**\n * 中止当前请求\n */\n abort(): void {\n this.openclawAdapter?.abort();\n }\n\n /**\n * 销毁处理器,释放 OpenClaw 连接资源\n */\n async destroy(): Promise<void> {\n if (this.openclawAdapter) {\n await this.openclawAdapter.destroy();\n this.openclawAdapter = null;\n }\n }\n\n /**\n * 获取适配器实例(供外部调用 invokeAction 等)\n */\n getAdapter(): OpenClawAdapter | null {\n return this.openclawAdapter;\n }\n\n // ==================== 内部方法 ====================\n\n /**\n * 从 onRequest 获取认证信息,传给 adapter 用于 connect 握手\n *\n * onRequest 返回值中如果包含 `auth` 字段(如 `{ auth: { token: '...' } }`),\n * 会被提取出来作为 connect 握手的认证参数。\n * 其他字段(如 sessionKey、message)属于 sendMessage 阶段使用,不会传入 connect。\n */\n private async prepareConnectAuth(config: ChatServiceConfig): Promise<void> {\n if (!this.openclawAdapter || !config.onRequest) return;\n\n try {\n // 用空的 params 调用 onRequest,仅获取 auth 信息\n const requestParams = await config.onRequest({ prompt: '' } as ChatRequestParams);\n if (requestParams) {\n const { auth } = requestParams as Record<string, unknown>;\n if (auth && typeof auth === 'object') {\n this.openclawAdapter.setConnectAuth(auth as Record<string, unknown>);\n }\n }\n } catch (error) {\n this.logger.warn('Failed to get connect auth from onRequest:', error);\n }\n }\n\n /**\n * 确保 OpenClaw 适配器已创建\n */\n private ensureAdapter(config: ChatServiceConfig): void {\n if (this.openclawAdapter) return;\n\n const openclawConfig = config.openclaw || {};\n\n const adapterConfig: OpenClawAdapterConfig = {\n endpoint: config.endpoint!,\n timeout: config.timeout,\n maxRetries: config.maxRetries,\n retryInterval: config.retryInterval,\n ...openclawConfig,\n };\n\n this.openclawAdapter = new OpenClawAdapter(adapterConfig);\n }\n\n /**\n * 更新 init 阶段的回调(连接 + 历史消息)\n */\n private updateCallbacks(config: ChatServiceConfig, onHistoryLoaded?: (messages: any[]) => void): void {\n if (!this.openclawAdapter) return;\n\n this.openclawAdapter.setCallbacks({\n onConnected: () => {\n this.logger.info('OpenClaw connected');\n },\n onStart: () => {\n config.onStart?.('openclaw:stream:start');\n },\n onMessage: () => {\n // init 阶段无需处理消息\n },\n onComplete: () => {\n // init 阶段无需处理完成\n },\n onError: (error) => {\n config.onError?.(error);\n },\n onHistoryLoaded: (messages) => {\n this.logger.info(`OpenClaw history loaded: ${messages.length} messages`);\n onHistoryLoaded?.(messages);\n },\n });\n }\n\n /**\n * 更新流式请求阶段的回调(消息处理 + 事件发布)\n */\n private updateStreamCallbacks(config: ChatServiceConfig, context: StreamContext): void {\n if (!this.openclawAdapter) return;\n\n const { messageId } = context;\n\n this.openclawAdapter.setCallbacks({\n onConnected: () => {\n this.logger.info('OpenClaw connected');\n },\n onStart: () => {\n config.onStart?.('openclaw:stream:start');\n },\n onMessage: (content) => {\n if (context.getStopReceive() || !messageId) return;\n\n // OpenClaw 的 content 已经是 AIMessageContent 格式(由 OpenClawAdapter 转换)\n const chunk: SSEChunkData = {\n event: 'openclaw',\n data: content,\n };\n let result: AIMessageContent | AIMessageContent[] | null = content;\n\n // 允许用户通过 onMessage 进行自定义处理\n if (config.onMessage) {\n const userResult = config.onMessage(chunk, context.messageStore.getMessageByID(messageId), result);\n if (userResult) {\n result = userResult;\n }\n }\n\n // 发布流数据事件\n context.eventBus.emit(ChatEngineEventType.REQUEST_STREAM, {\n messageId,\n chunk,\n content: result,\n });\n\n // 处理消息结果\n context.processMessageResult(messageId, result);\n },\n onComplete: (isAborted, requestParams) => {\n if (messageId) {\n context.handleComplete(messageId, isAborted, requestParams || context.config);\n }\n },\n onError: (error) => {\n if (messageId) context.handleError(messageId, error);\n },\n onHistoryLoaded: (messages) => {\n // 流式阶段不应再处理历史消息\n this.logger.info(`OpenClaw history loaded during stream: ${messages.length} messages (ignored)`);\n },\n });\n }\n}\n"],"names":["OpenClawStreamHandler","options","_classCallCheck","_defineProperty","LoggerManager","getLogger","llmService","_createClass","key","value","_initConnection","_asyncToGenerator","_regeneratorRuntime","mark","_callee","config","onHistoryLoaded","_config$onError","_t","wrap","_context","prev","next","ensureAdapter","updateCallbacks","openclawAdapter","isAuthenticated","prepareConnectAuth","connect","onError","call","logger","error","stop","initConnection","_x","_x2","apply","arguments","_handleStream","_callee2","params","context","messageId","_config$onRequest","requestParams","_t2","_t3","_context2","updateStreamCallbacks","onRequest","sendMessage","handleError","handleStream","_x3","_x4","abort","_this$openclawAdapter","_destroy","_callee3","_context3","destroy","getAdapter","_prepareConnectAuth","_callee4","auth","_t4","_context4","abrupt","prompt","_typeof","setConnectAuth","warn","openclawConfig","openclaw","adapterConfig","_objectSpread","endpoint","timeout","maxRetries","retryInterval","OpenClawAdapter","_this","setCallbacks","onConnected","info","onStart","_config$onStart","onMessage","onComplete","_config$onError2","messages","concat","length","_this2","_config$onStart2","content","getStopReceive","chunk","event","data","result","userResult","messageStore","getMessageByID","eventBus","emit","ChatEngineEventType","REQUEST_STREAM","processMessageResult","isAborted","handleComplete"],"mappings":"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"}
|
|
@@ -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
|
*/
|
|
@@ -36,7 +36,7 @@ import '../core/adapters/agui/utils.js';
|
|
|
36
36
|
import '../core/store/message.js';
|
|
37
37
|
import '@babel/runtime/helpers/get';
|
|
38
38
|
import '../core/store/reactiveState.js';
|
|
39
|
-
import '../../_chunks/dep-
|
|
39
|
+
import '../../_chunks/dep-907337f3.js';
|
|
40
40
|
import '../core/event-bus/index.js';
|
|
41
41
|
import '../core/event-bus/ChatEventBus.js';
|
|
42
42
|
import '../core/event-bus/types.js';
|
|
@@ -67,6 +67,7 @@ import '../core/adapters/openclaw/rpc-handler.js';
|
|
|
67
67
|
import '../core/adapters/openclaw/types/config.js';
|
|
68
68
|
import '../core/adapters/openclaw/utils.js';
|
|
69
69
|
import '../core/adapters/openclaw/history-converter.js';
|
|
70
|
+
import '../core/adapters/openclaw/device-key-manager.js';
|
|
70
71
|
import '../core/adapters/openclaw/types/index.js';
|
|
71
72
|
import '../core/adapters/openclaw/types/messages.js';
|
|
72
73
|
import '../core/adapters/index.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -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
|
*/
|
|
@@ -32,7 +32,7 @@ import '../core/adapters/agui/utils.js';
|
|
|
32
32
|
import '../core/store/message.js';
|
|
33
33
|
import '@babel/runtime/helpers/get';
|
|
34
34
|
import '../core/store/reactiveState.js';
|
|
35
|
-
import '../../_chunks/dep-
|
|
35
|
+
import '../../_chunks/dep-907337f3.js';
|
|
36
36
|
import '../core/event-bus/index.js';
|
|
37
37
|
import '../core/event-bus/ChatEventBus.js';
|
|
38
38
|
import '../core/event-bus/types.js';
|
|
@@ -63,6 +63,7 @@ import '../core/adapters/openclaw/rpc-handler.js';
|
|
|
63
63
|
import '../core/adapters/openclaw/types/config.js';
|
|
64
64
|
import '../core/adapters/openclaw/utils.js';
|
|
65
65
|
import '../core/adapters/openclaw/history-converter.js';
|
|
66
|
+
import '../core/adapters/openclaw/device-key-manager.js';
|
|
66
67
|
import '../core/adapters/openclaw/types/index.js';
|
|
67
68
|
import '../core/adapters/openclaw/types/messages.js';
|
|
68
69
|
import '../core/adapters/index.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useAgentState.js","sources":["../../../../pro-components/chat/chat-engine/hooks/useAgentState.ts"],"sourcesContent":["/* eslint-disable react-hooks/exhaustive-deps */\nimport { useState, useEffect, useRef, createContext, useContext, useMemo } from 'react';\n// import { stateManager } from 'tdesign-web-components/lib/chat-engine';\nimport { stateManager } from '../core';\n\n/**\n * 状态订阅相关类型定义\n */\n\nexport interface StateActionOptions {\n /**\n * 初始状态\n */\n initialState?: Record<string, any>;\n /**\n * 只订阅特定key的变化\n */\n subscribeKey?: string;\n}\n\nexport interface UseStateActionReturn {\n /**\n * 全量状态Map - 包含所有stateKey的状态\n * 格式: { [stateKey]: stateData }\n */\n stateMap: Record<string, any>;\n /**\n * 当前最新的状态key\n */\n currentStateKey: string | null;\n /**\n * 设置状态Map,用于加载历史对话消息中的state数据\n */\n setStateMap: (stateMap: Record<string, any> | ((prev: Record<string, any>) => Record<string, any>)) => void;\n /**\n * 获取当前完整状态的方法\n */\n getCurrentState: () => Record<string, any>;\n /**\n * 获取特定 key 状态的方法\n */\n getStateByKey: (key: string) => any;\n}\n\nexport const useAgentState = <T = any>(options: StateActionOptions = {}): UseStateActionReturn => {\n const { initialState, subscribeKey } = options;\n const [stateMap, setStateMap] = useState<Record<string, any>>(initialState || {});\n const [currentStateKey, setCurrentStateKey] = useState<string | null>(null);\n\n // 使用 ref 来避免不必要的重新渲染\n const stateMapRef = useRef(stateMap);\n stateMapRef.current = stateMap;\n\n useEffect(\n () =>\n stateManager.subscribeToLatest((newState: T, newStateKey: string) => {\n // 如果指定了 subscribeKey,只有匹配时才更新状态\n if (subscribeKey && newStateKey !== subscribeKey) {\n // 仍然更新内部状态,但不触发重新渲染\n stateMapRef.current = {\n ...stateMapRef.current,\n [newStateKey]: newState,\n };\n return;\n }\n\n setStateMap((prev) => ({\n ...prev,\n [newStateKey]: newState,\n }));\n setCurrentStateKey(newStateKey);\n }),\n [subscribeKey],\n );\n\n return {\n stateMap: stateMapRef.current,\n currentStateKey,\n setStateMap,\n getCurrentState: () => stateMapRef.current,\n getStateByKey: (key: string) => stateMapRef.current[key],\n };\n};\n\n// 创建 AgentState Context\nexport const AgentStateContext = createContext<UseStateActionReturn | null>(null);\n\n// 简化的状态选择器\nexport const useAgentStateDataByKey = (stateKey?: string) => {\n const contextState = useContext(AgentStateContext);\n const independentState = useAgentState({ subscribeKey: stateKey });\n\n return useMemo(() => {\n if (contextState) {\n // 有 Provider,使用 Context 状态\n const { stateMap } = contextState;\n return stateKey ? stateMap[stateKey] : stateMap;\n }\n\n // 没有 Provider,使用独立状态\n const { stateMap } = independentState;\n return stateKey ? stateMap[stateKey] : stateMap;\n }, [\n stateKey,\n // 关键:添加和 useAgentStateByKey 相同的深度依赖逻辑\n contextState && (stateKey ? contextState.stateMap[stateKey] : JSON.stringify(contextState.stateMap)),\n independentState && (stateKey ? independentState.stateMap[stateKey] : JSON.stringify(independentState.stateMap)),\n ]);\n};\n\n// 导出 Context Hook\nexport const useAgentStateContext = (): UseStateActionReturn => {\n const context = useContext(AgentStateContext);\n\n if (!context) {\n throw new Error('useAgentState must be used within AgentStateProvider');\n }\n\n return context;\n};\n"],"names":["useAgentState","options","arguments","length","undefined","initialState","subscribeKey","_useState","useState","_useState2","_slicedToArray","stateMap","setStateMap","_useState3","_useState4","currentStateKey","setCurrentStateKey","stateMapRef","useRef","current","useEffect","stateManager","subscribeToLatest","newState","newStateKey","_objectSpread","_defineProperty","prev","getCurrentState","getStateByKey","key","AgentStateContext","createContext","useAgentStateDataByKey","stateKey","contextState","useContext","independentState","useMemo","JSON","stringify","useAgentStateContext","context","Error"],"mappings":"
|
|
1
|
+
{"version":3,"file":"useAgentState.js","sources":["../../../../pro-components/chat/chat-engine/hooks/useAgentState.ts"],"sourcesContent":["/* eslint-disable react-hooks/exhaustive-deps */\nimport { useState, useEffect, useRef, createContext, useContext, useMemo } from 'react';\n// import { stateManager } from 'tdesign-web-components/lib/chat-engine';\nimport { stateManager } from '../core';\n\n/**\n * 状态订阅相关类型定义\n */\n\nexport interface StateActionOptions {\n /**\n * 初始状态\n */\n initialState?: Record<string, any>;\n /**\n * 只订阅特定key的变化\n */\n subscribeKey?: string;\n}\n\nexport interface UseStateActionReturn {\n /**\n * 全量状态Map - 包含所有stateKey的状态\n * 格式: { [stateKey]: stateData }\n */\n stateMap: Record<string, any>;\n /**\n * 当前最新的状态key\n */\n currentStateKey: string | null;\n /**\n * 设置状态Map,用于加载历史对话消息中的state数据\n */\n setStateMap: (stateMap: Record<string, any> | ((prev: Record<string, any>) => Record<string, any>)) => void;\n /**\n * 获取当前完整状态的方法\n */\n getCurrentState: () => Record<string, any>;\n /**\n * 获取特定 key 状态的方法\n */\n getStateByKey: (key: string) => any;\n}\n\nexport const useAgentState = <T = any>(options: StateActionOptions = {}): UseStateActionReturn => {\n const { initialState, subscribeKey } = options;\n const [stateMap, setStateMap] = useState<Record<string, any>>(initialState || {});\n const [currentStateKey, setCurrentStateKey] = useState<string | null>(null);\n\n // 使用 ref 来避免不必要的重新渲染\n const stateMapRef = useRef(stateMap);\n stateMapRef.current = stateMap;\n\n useEffect(\n () =>\n stateManager.subscribeToLatest((newState: T, newStateKey: string) => {\n // 如果指定了 subscribeKey,只有匹配时才更新状态\n if (subscribeKey && newStateKey !== subscribeKey) {\n // 仍然更新内部状态,但不触发重新渲染\n stateMapRef.current = {\n ...stateMapRef.current,\n [newStateKey]: newState,\n };\n return;\n }\n\n setStateMap((prev) => ({\n ...prev,\n [newStateKey]: newState,\n }));\n setCurrentStateKey(newStateKey);\n }),\n [subscribeKey],\n );\n\n return {\n stateMap: stateMapRef.current,\n currentStateKey,\n setStateMap,\n getCurrentState: () => stateMapRef.current,\n getStateByKey: (key: string) => stateMapRef.current[key],\n };\n};\n\n// 创建 AgentState Context\nexport const AgentStateContext = createContext<UseStateActionReturn | null>(null);\n\n// 简化的状态选择器\nexport const useAgentStateDataByKey = (stateKey?: string) => {\n const contextState = useContext(AgentStateContext);\n const independentState = useAgentState({ subscribeKey: stateKey });\n\n return useMemo(() => {\n if (contextState) {\n // 有 Provider,使用 Context 状态\n const { stateMap } = contextState;\n return stateKey ? stateMap[stateKey] : stateMap;\n }\n\n // 没有 Provider,使用独立状态\n const { stateMap } = independentState;\n return stateKey ? stateMap[stateKey] : stateMap;\n }, [\n stateKey,\n // 关键:添加和 useAgentStateByKey 相同的深度依赖逻辑\n contextState && (stateKey ? contextState.stateMap[stateKey] : JSON.stringify(contextState.stateMap)),\n independentState && (stateKey ? independentState.stateMap[stateKey] : JSON.stringify(independentState.stateMap)),\n ]);\n};\n\n// 导出 Context Hook\nexport const useAgentStateContext = (): UseStateActionReturn => {\n const context = useContext(AgentStateContext);\n\n if (!context) {\n throw new Error('useAgentState must be used within AgentStateProvider');\n }\n\n return context;\n};\n"],"names":["useAgentState","options","arguments","length","undefined","initialState","subscribeKey","_useState","useState","_useState2","_slicedToArray","stateMap","setStateMap","_useState3","_useState4","currentStateKey","setCurrentStateKey","stateMapRef","useRef","current","useEffect","stateManager","subscribeToLatest","newState","newStateKey","_objectSpread","_defineProperty","prev","getCurrentState","getStateByKey","key","AgentStateContext","createContext","useAgentStateDataByKey","stateKey","contextState","useContext","independentState","useMemo","JSON","stringify","useAgentStateContext","context","Error"],"mappings":"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"}
|
|
@@ -1,18 +1,18 @@
|
|
|
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
|
*/
|
|
6
6
|
|
|
7
|
+
import _asyncToGenerator from '@babel/runtime/helpers/asyncToGenerator';
|
|
7
8
|
import _slicedToArray from '@babel/runtime/helpers/slicedToArray';
|
|
9
|
+
import _regeneratorRuntime from '@babel/runtime/regenerator';
|
|
8
10
|
import { useState, useRef, useEffect } from 'react';
|
|
9
11
|
import ChatEngine from '../core/index.js';
|
|
10
12
|
import '@babel/runtime/helpers/objectWithoutProperties';
|
|
11
|
-
import '@babel/runtime/helpers/asyncToGenerator';
|
|
12
13
|
import '@babel/runtime/helpers/classCallCheck';
|
|
13
14
|
import '@babel/runtime/helpers/createClass';
|
|
14
15
|
import '@babel/runtime/helpers/defineProperty';
|
|
15
|
-
import '@babel/runtime/regenerator';
|
|
16
16
|
import '../core/adapters/agui/index.js';
|
|
17
17
|
import '../core/adapters/agui/event-mapper.js';
|
|
18
18
|
import '@babel/runtime/helpers/toConsumableArray';
|
|
@@ -32,7 +32,7 @@ import '../core/adapters/agui/utils.js';
|
|
|
32
32
|
import '../core/store/message.js';
|
|
33
33
|
import '@babel/runtime/helpers/get';
|
|
34
34
|
import '../core/store/reactiveState.js';
|
|
35
|
-
import '../../_chunks/dep-
|
|
35
|
+
import '../../_chunks/dep-907337f3.js';
|
|
36
36
|
import '../core/event-bus/index.js';
|
|
37
37
|
import '../core/event-bus/ChatEventBus.js';
|
|
38
38
|
import '../core/event-bus/types.js';
|
|
@@ -63,6 +63,7 @@ import '../core/adapters/openclaw/rpc-handler.js';
|
|
|
63
63
|
import '../core/adapters/openclaw/types/config.js';
|
|
64
64
|
import '../core/adapters/openclaw/utils.js';
|
|
65
65
|
import '../core/adapters/openclaw/history-converter.js';
|
|
66
|
+
import '../core/adapters/openclaw/device-key-manager.js';
|
|
66
67
|
import '../core/adapters/openclaw/types/index.js';
|
|
67
68
|
import '../core/adapters/openclaw/types/messages.js';
|
|
68
69
|
import '../core/adapters/index.js';
|
|
@@ -101,16 +102,39 @@ var useChat = function useChat(_ref) {
|
|
|
101
102
|
syncState(state.messages);
|
|
102
103
|
});
|
|
103
104
|
};
|
|
104
|
-
var initChat = function initChat() {
|
|
105
|
-
chatEngine.init(chatServiceConfig, initialMessages);
|
|
106
|
-
syncState(initialMessages);
|
|
107
|
-
subscribeToChat();
|
|
108
|
-
};
|
|
109
105
|
useEffect(function () {
|
|
106
|
+
var isMounted = true;
|
|
107
|
+
var initChat = /*#__PURE__*/function () {
|
|
108
|
+
var _ref2 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee() {
|
|
109
|
+
return _regeneratorRuntime.wrap(function (_context) {
|
|
110
|
+
while (1) switch (_context.prev = _context.next) {
|
|
111
|
+
case 0:
|
|
112
|
+
_context.next = 1;
|
|
113
|
+
return chatEngine.init(chatServiceConfig, initialMessages);
|
|
114
|
+
case 1:
|
|
115
|
+
if (isMounted) {
|
|
116
|
+
_context.next = 2;
|
|
117
|
+
break;
|
|
118
|
+
}
|
|
119
|
+
return _context.abrupt("return");
|
|
120
|
+
case 2:
|
|
121
|
+
syncState(initialMessages);
|
|
122
|
+
subscribeToChat();
|
|
123
|
+
case 3:
|
|
124
|
+
case "end":
|
|
125
|
+
return _context.stop();
|
|
126
|
+
}
|
|
127
|
+
}, _callee);
|
|
128
|
+
}));
|
|
129
|
+
return function initChat() {
|
|
130
|
+
return _ref2.apply(this, arguments);
|
|
131
|
+
};
|
|
132
|
+
}();
|
|
110
133
|
initChat();
|
|
111
134
|
return function () {
|
|
112
135
|
var _msgSubscribeRef$curr2;
|
|
113
|
-
|
|
136
|
+
isMounted = false;
|
|
137
|
+
(_msgSubscribeRef$curr2 = msgSubscribeRef.current) === null || _msgSubscribeRef$curr2 === void 0 || _msgSubscribeRef$curr2.call(msgSubscribeRef);
|
|
114
138
|
};
|
|
115
139
|
}, []);
|
|
116
140
|
useEffect(function () {
|