@tdesign-react/chat 1.1.0-alpha.11 → 1.1.0-alpha.13

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.
Files changed (183) hide show
  1. package/es/_chunks/dep-58d90dfe.js +438 -0
  2. package/es/_chunks/dep-58d90dfe.js.map +1 -0
  3. package/es/_chunks/dep-771678df.js +438 -0
  4. package/es/_chunks/dep-771678df.js.map +1 -0
  5. package/es/_chunks/dep-93283bbd.js +1247 -0
  6. package/es/_chunks/dep-93283bbd.js.map +1 -0
  7. package/es/_chunks/dep-dbdfe7d6.js +169 -0
  8. package/es/_chunks/dep-dbdfe7d6.js.map +1 -0
  9. package/es/_util/reactify.js +1 -1
  10. package/es/_util/useDynamicStyle.js +1 -1
  11. package/es/attachments/index.js +1 -1
  12. package/es/chat-actionbar/index.js +1 -1
  13. package/es/chat-engine/components/activity/index.js +2 -2
  14. package/es/chat-engine/components/activity/registry.js +1 -1
  15. package/es/chat-engine/components/activity/render.js +2 -2
  16. package/es/chat-engine/components/activity/types.js +1 -1
  17. package/es/chat-engine/components/index.js +17 -4
  18. package/es/chat-engine/components/index.js.map +1 -1
  19. package/es/chat-engine/components/json-render/catalog/atomic/button.js +1 -1
  20. package/es/chat-engine/components/json-render/catalog/atomic/card.js +1 -1
  21. package/es/chat-engine/components/json-render/catalog/atomic/input.js +17 -4
  22. package/es/chat-engine/components/json-render/catalog/atomic/input.js.map +1 -1
  23. package/es/chat-engine/components/json-render/catalog/atomic/layout.js +1 -1
  24. package/es/chat-engine/components/json-render/catalog/atomic/text.js +1 -1
  25. package/es/chat-engine/components/json-render/catalog/catalog-to-prompt.js +1 -1
  26. package/es/chat-engine/components/json-render/contexts/actions.js +2 -2
  27. package/es/chat-engine/components/json-render/contexts/data.js +2 -2
  28. package/es/chat-engine/components/json-render/contexts/index.js +2 -2
  29. package/es/chat-engine/components/json-render/contexts/store.js +1 -1
  30. package/es/chat-engine/components/json-render/contexts/tree.js +1 -1
  31. package/es/chat-engine/components/json-render/contexts/validation.js +2 -2
  32. package/es/chat-engine/components/json-render/contexts/visibility.js +2 -2
  33. package/es/chat-engine/components/json-render/index.js +17 -4
  34. package/es/chat-engine/components/json-render/index.js.map +1 -1
  35. package/es/chat-engine/components/json-render/registry/a2ui-binding.js +17 -4
  36. package/es/chat-engine/components/json-render/registry/a2ui-binding.js.map +1 -1
  37. package/es/chat-engine/components/json-render/registry/a2ui-registry.js +17 -4
  38. package/es/chat-engine/components/json-render/registry/a2ui-registry.js.map +1 -1
  39. package/es/chat-engine/components/json-render/registry/config.js +17 -4
  40. package/es/chat-engine/components/json-render/registry/config.js.map +1 -1
  41. package/es/chat-engine/components/json-render/registry/index.js +17 -4
  42. package/es/chat-engine/components/json-render/registry/index.js.map +1 -1
  43. package/es/chat-engine/components/json-render/renderer/A2UIJsonRenderActivityRenderer.js +16 -3
  44. package/es/chat-engine/components/json-render/renderer/A2UIJsonRenderActivityRenderer.js.map +1 -1
  45. package/es/chat-engine/components/json-render/renderer/JsonRenderActivityRenderer.js +3 -3
  46. package/es/chat-engine/components/json-render/renderer/JsonUIRenderer.js +2 -2
  47. package/es/chat-engine/components/json-render/renderer/_index.js +2 -2
  48. package/es/chat-engine/components/json-render/types.js +1 -1
  49. package/es/chat-engine/components/provider/agent-state.js +15 -2
  50. package/es/chat-engine/components/provider/agent-state.js.map +1 -1
  51. package/es/chat-engine/components/shared/ComponentErrorBoundary.js +1 -1
  52. package/es/chat-engine/components/shared/createRegistry.js +1 -1
  53. package/es/chat-engine/components/shared/index.js +1 -1
  54. package/es/chat-engine/components/shared/useRegistrationListener.js +1 -1
  55. package/es/chat-engine/components/toolcall/index.js +15 -2
  56. package/es/chat-engine/components/toolcall/index.js.map +1 -1
  57. package/es/chat-engine/components/toolcall/registry.js +1 -1
  58. package/es/chat-engine/components/toolcall/render.js +15 -2
  59. package/es/chat-engine/components/toolcall/render.js.map +1 -1
  60. package/es/chat-engine/components/toolcall/types.js +1 -1
  61. package/es/chat-engine/core/adapters/a2ui/index.js +2 -1
  62. package/es/chat-engine/core/adapters/a2ui/index.js.map +1 -1
  63. package/es/chat-engine/core/adapters/a2ui/processor/A2uiMessageProcessor.js +1 -1
  64. package/es/chat-engine/core/adapters/a2ui/processor/ComponentTree.js +1 -1
  65. package/es/chat-engine/core/adapters/a2ui/processor/DataStore.js +1 -1
  66. package/es/chat-engine/core/adapters/a2ui/processor/PathResolver.js +1 -1
  67. package/es/chat-engine/core/adapters/a2ui/types/index.js +1 -1
  68. package/es/chat-engine/core/adapters/a2ui/types/types.js +1 -1
  69. package/es/chat-engine/core/adapters/a2ui/utils/binding.js +2 -1631
  70. package/es/chat-engine/core/adapters/a2ui/utils/binding.js.map +1 -1
  71. package/es/chat-engine/core/adapters/a2ui/utils/index.js +2 -1
  72. package/es/chat-engine/core/adapters/a2ui/utils/index.js.map +1 -1
  73. package/es/chat-engine/core/adapters/a2ui/utils/validation.js +1 -1
  74. package/es/chat-engine/core/adapters/agui/ActivityManager.js +1 -1
  75. package/es/chat-engine/core/adapters/agui/StateManager.js +1 -1
  76. package/es/chat-engine/core/adapters/agui/event-mapper.js +1 -1
  77. package/es/chat-engine/core/adapters/agui/index.js +1 -1
  78. package/es/chat-engine/core/adapters/agui/types/events.js +1 -1
  79. package/es/chat-engine/core/adapters/agui/types/index.js +1 -1
  80. package/es/chat-engine/core/adapters/agui/utils.js +1 -1
  81. package/es/chat-engine/core/adapters/index.d.ts +2 -0
  82. package/es/chat-engine/core/adapters/index.js +27 -9
  83. package/es/chat-engine/core/adapters/index.js.map +1 -1
  84. package/es/chat-engine/core/adapters/json-render/SurfaceStateManager.js +1 -1
  85. package/es/chat-engine/core/adapters/json-render/a2ui-to-jsonrender.js +1 -1
  86. package/es/chat-engine/core/adapters/json-render/engine.js +1 -1
  87. package/es/chat-engine/core/adapters/json-render/index.js +1 -1
  88. package/es/chat-engine/core/adapters/json-render/types/a2ui.js +1 -1
  89. package/es/chat-engine/core/adapters/json-render/types/core.js +1 -1
  90. package/es/chat-engine/core/adapters/json-render/types/index.js +1 -1
  91. package/es/chat-engine/core/adapters/openclaw/event-mapper.d.ts +212 -0
  92. package/es/chat-engine/core/adapters/openclaw/event-mapper.js +606 -0
  93. package/es/chat-engine/core/adapters/openclaw/event-mapper.js.map +1 -0
  94. package/es/chat-engine/core/adapters/openclaw/index.d.ts +158 -0
  95. package/es/chat-engine/core/adapters/openclaw/index.js +460 -0
  96. package/es/chat-engine/core/adapters/openclaw/index.js.map +1 -0
  97. package/es/chat-engine/core/adapters/openclaw/rpc-handler.d.ts +114 -0
  98. package/es/chat-engine/core/adapters/openclaw/rpc-handler.js +263 -0
  99. package/es/chat-engine/core/adapters/openclaw/rpc-handler.js.map +1 -0
  100. package/es/chat-engine/core/adapters/openclaw/types/config.d.ts +67 -0
  101. package/es/chat-engine/core/adapters/openclaw/types/config.js +35 -0
  102. package/es/chat-engine/core/adapters/openclaw/types/config.js.map +1 -0
  103. package/es/chat-engine/core/adapters/openclaw/types/events.d.ts +121 -0
  104. package/es/chat-engine/core/adapters/openclaw/types/events.js +71 -0
  105. package/es/chat-engine/core/adapters/openclaw/types/events.js.map +1 -0
  106. package/es/chat-engine/core/adapters/openclaw/types/index.d.ts +6 -0
  107. package/es/chat-engine/core/adapters/openclaw/types/index.js +11 -0
  108. package/es/chat-engine/core/adapters/openclaw/types/index.js.map +1 -0
  109. package/es/chat-engine/core/adapters/openclaw/types/messages.d.ts +215 -0
  110. package/es/chat-engine/core/adapters/openclaw/types/messages.js +18 -0
  111. package/es/chat-engine/core/adapters/openclaw/types/messages.js.map +1 -0
  112. package/es/chat-engine/core/adapters/openclaw/utils.d.ts +49 -0
  113. package/es/chat-engine/core/adapters/openclaw/utils.js +109 -0
  114. package/es/chat-engine/core/adapters/openclaw/utils.js.map +1 -0
  115. package/es/chat-engine/core/adapters/shared/activity-manager.d.ts +11 -0
  116. package/es/chat-engine/core/adapters/shared/activity-manager.js +17 -0
  117. package/es/chat-engine/core/adapters/shared/activity-manager.js.map +1 -0
  118. package/es/chat-engine/core/adapters/shared/content-factory.d.ts +7 -0
  119. package/es/chat-engine/core/adapters/shared/content-factory.js +11 -0
  120. package/es/chat-engine/core/adapters/shared/content-factory.js.map +1 -0
  121. package/es/chat-engine/core/adapters/shared/index.d.ts +11 -0
  122. package/es/chat-engine/core/adapters/shared/index.js +21 -0
  123. package/es/chat-engine/core/adapters/shared/index.js.map +1 -0
  124. package/es/chat-engine/core/adapters/shared/merge-utils.d.ts +7 -0
  125. package/es/chat-engine/core/adapters/shared/merge-utils.js +11 -0
  126. package/es/chat-engine/core/adapters/shared/merge-utils.js.map +1 -0
  127. package/es/chat-engine/core/event-bus/ChatEventBus.js +1 -1
  128. package/es/chat-engine/core/event-bus/index.js +1 -1
  129. package/es/chat-engine/core/event-bus/types.js +1 -1
  130. package/es/chat-engine/core/index.d.ts +7 -0
  131. package/es/chat-engine/core/index.js +83 -8
  132. package/es/chat-engine/core/index.js.map +1 -1
  133. package/es/chat-engine/core/processor/index.js +1 -1
  134. package/es/chat-engine/core/server/batch-client.js +1 -1
  135. package/es/chat-engine/core/server/connection-manager.js +1 -1
  136. package/es/chat-engine/core/server/errors.js +1 -1
  137. package/es/chat-engine/core/server/index.d.ts +1 -0
  138. package/es/chat-engine/core/server/index.js +22 -1
  139. package/es/chat-engine/core/server/index.js.map +1 -1
  140. package/es/chat-engine/core/server/llm-service.d.ts +5 -0
  141. package/es/chat-engine/core/server/llm-service.js +140 -13
  142. package/es/chat-engine/core/server/llm-service.js.map +1 -1
  143. package/es/chat-engine/core/server/sse-client.js +1 -1
  144. package/es/chat-engine/core/server/sse-parser.js +1 -1
  145. package/es/chat-engine/core/server/types.js +1 -1
  146. package/es/chat-engine/core/server/websocket-client.d.ts +139 -0
  147. package/es/chat-engine/core/server/websocket-client.js +386 -0
  148. package/es/chat-engine/core/server/websocket-client.js.map +1 -0
  149. package/es/chat-engine/core/store/message.js +2 -2
  150. package/es/chat-engine/core/store/model.js +2 -2
  151. package/es/chat-engine/core/store/reactiveState.js +2 -2
  152. package/es/chat-engine/core/type.d.ts +7 -1
  153. package/es/chat-engine/core/type.js +1 -1
  154. package/es/chat-engine/core/utils/eventEmitter.d.ts +1 -0
  155. package/es/chat-engine/core/utils/eventEmitter.js +11 -1
  156. package/es/chat-engine/core/utils/eventEmitter.js.map +1 -1
  157. package/es/chat-engine/core/utils/immutable-patch.js +1 -1
  158. package/es/chat-engine/core/utils/index.js +1 -1
  159. package/es/chat-engine/core/utils/json-patch/helpers.js +1 -1
  160. package/es/chat-engine/core/utils/json-patch/index.js +1 -1
  161. package/es/chat-engine/core/utils/logger.js +1 -1
  162. package/es/chat-engine/core/utils/performance.js +1 -1
  163. package/es/chat-engine/hooks/index.js +15 -2
  164. package/es/chat-engine/hooks/index.js.map +1 -1
  165. package/es/chat-engine/hooks/useAgentActivity.js +1 -1
  166. package/es/chat-engine/hooks/useAgentState.js +15 -2
  167. package/es/chat-engine/hooks/useAgentState.js.map +1 -1
  168. package/es/chat-engine/hooks/useAgentToolcall.js +1 -1
  169. package/es/chat-engine/hooks/useChat.js +15 -2
  170. package/es/chat-engine/hooks/useChat.js.map +1 -1
  171. package/es/chat-engine/index.js +19 -6
  172. package/es/chat-engine/index.js.map +1 -1
  173. package/es/chat-filecard/index.js +1 -1
  174. package/es/chat-loading/index.js +1 -1
  175. package/es/chat-markdown/index.js +1 -1
  176. package/es/chat-message/index.js +1 -1
  177. package/es/chat-sender/index.js +1 -1
  178. package/es/chat-thinking/index.js +1 -1
  179. package/es/chatbot/index.js +1 -1
  180. package/es/index.js +19 -6
  181. package/es/index.js.map +1 -1
  182. package/es/style/index.js +1 -1
  183. package/package.json +1 -1
@@ -0,0 +1,460 @@
1
+ /**
2
+ * tdesign v1.1.0-alpha.12
3
+ * (c) 2026 tdesign
4
+ * @license MIT
5
+ */
6
+
7
+ import _asyncToGenerator from '@babel/runtime/helpers/asyncToGenerator';
8
+ import _classCallCheck from '@babel/runtime/helpers/classCallCheck';
9
+ import _createClass from '@babel/runtime/helpers/createClass';
10
+ import _possibleConstructorReturn from '@babel/runtime/helpers/possibleConstructorReturn';
11
+ import _getPrototypeOf from '@babel/runtime/helpers/getPrototypeOf';
12
+ import _inherits from '@babel/runtime/helpers/inherits';
13
+ import _defineProperty from '@babel/runtime/helpers/defineProperty';
14
+ import _regeneratorRuntime from '@babel/runtime/regenerator';
15
+ import SimpleEventEmitter from '../../utils/eventEmitter.js';
16
+ import { LoggerManager } from '../../utils/logger.js';
17
+ import { WebSocketClient, WebSocketConnectionState } from '../../server/websocket-client.js';
18
+ import { OpenClawEventMapper } from './event-mapper.js';
19
+ export { OpenClawEventMapper } from './event-mapper.js';
20
+ import { OpenClawRPCHandler } from './rpc-handler.js';
21
+ export { OpenClawRPCHandler, RPCError } from './rpc-handler.js';
22
+ import { mergeOpenClawConfig } from './types/config.js';
23
+ export { DEFAULT_OPENCLAW_CONFIG, mergeOpenClawConfig } from './types/config.js';
24
+ import { OpenClawConnectionState, OpenClawEventType } from './types/events.js';
25
+ export { AgentDataType, AgentStreamType, ChatEventState, OpenClawConnectionState, OpenClawEventType, OpenClawMethod } from './types/events.js';
26
+ import { generateUUID, formatWebSocketUrl, parseFrame, getPlatform, getUserAgent, getLocale } from './utils.js';
27
+ import './types/index.js';
28
+ export { isEventFrame, isRequestFrame, isResponseFrame } from './types/messages.js';
29
+ import '../../server/errors.js';
30
+ import '@babel/runtime/helpers/wrapNativeSuper';
31
+ import '@babel/runtime/helpers/typeof';
32
+ import '../shared/index.js';
33
+ import '../shared/content-factory.js';
34
+ import '../agui/utils.js';
35
+ import '@babel/runtime/helpers/toConsumableArray';
36
+ import '../shared/merge-utils.js';
37
+ import '../shared/activity-manager.js';
38
+ import '../agui/ActivityManager.js';
39
+ import '../../utils/index.js';
40
+ import '../../utils/immutable-patch.js';
41
+ import '@babel/runtime/helpers/objectWithoutProperties';
42
+ import '@babel/runtime/helpers/toArray';
43
+
44
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
45
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
46
+ function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }
47
+ function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }
48
+ var OpenClawAdapter = /*#__PURE__*/function (_EventEmitter) {
49
+ function OpenClawAdapter(config) {
50
+ var _this;
51
+ _classCallCheck(this, OpenClawAdapter);
52
+ _this = _callSuper(this, OpenClawAdapter);
53
+ _defineProperty(_this, "wsClient", null);
54
+ _defineProperty(_this, "connectionState", OpenClawConnectionState.DISCONNECTED);
55
+ _defineProperty(_this, "logger", LoggerManager.getLogger());
56
+ _defineProperty(_this, "callbacks", {});
57
+ _defineProperty(_this, "isStreaming", false);
58
+ _defineProperty(_this, "currentRequestParams", null);
59
+ _this.adapterConfig = config;
60
+ _this.config = mergeOpenClawConfig(config);
61
+ _this.instanceId = generateUUID();
62
+ _this.rpcHandler = new OpenClawRPCHandler({
63
+ timeout: config.timeout
64
+ });
65
+ _this.eventMapper = new OpenClawEventMapper();
66
+ return _this;
67
+ }
68
+ _inherits(OpenClawAdapter, _EventEmitter);
69
+ return _createClass(OpenClawAdapter, [{
70
+ key: "setCallbacks",
71
+ value: function setCallbacks(callbacks) {
72
+ this.callbacks = callbacks;
73
+ }
74
+ }, {
75
+ key: "connect",
76
+ value: function () {
77
+ var _connect = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee() {
78
+ var _this2 = this;
79
+ var url, wsConfig;
80
+ return _regeneratorRuntime.wrap(function (_context) {
81
+ while (1) switch (_context.prev = _context.next) {
82
+ case 0:
83
+ if (!(this.connectionState === OpenClawConnectionState.AUTHENTICATED)) {
84
+ _context.next = 1;
85
+ break;
86
+ }
87
+ return _context.abrupt("return");
88
+ case 1:
89
+ this.connectionState = OpenClawConnectionState.CONNECTING;
90
+ url = formatWebSocketUrl(this.adapterConfig.endpoint);
91
+ this.wsClient = new WebSocketClient(url);
92
+ this.rpcHandler.setSendFunction(function (frame) {
93
+ var _this2$wsClient;
94
+ (_this2$wsClient = _this2.wsClient) === null || _this2$wsClient === void 0 || _this2$wsClient.send(frame);
95
+ });
96
+ this.setupEventHandlers();
97
+ wsConfig = {
98
+ timeout: this.adapterConfig.timeout,
99
+ maxRetries: this.adapterConfig.maxRetries,
100
+ retryInterval: this.adapterConfig.retryInterval,
101
+ heartbeatInterval: this.config.heartbeatInterval
102
+ };
103
+ _context.next = 2;
104
+ return this.wsClient.connect(wsConfig);
105
+ case 2:
106
+ _context.next = 3;
107
+ return this.waitForAuthentication();
108
+ case 3:
109
+ case "end":
110
+ return _context.stop();
111
+ }
112
+ }, _callee, this);
113
+ }));
114
+ function connect() {
115
+ return _connect.apply(this, arguments);
116
+ }
117
+ return connect;
118
+ }()
119
+ }, {
120
+ key: "waitForAuthentication",
121
+ value: function waitForAuthentication() {
122
+ var _this3 = this;
123
+ if (this.connectionState === OpenClawConnectionState.AUTHENTICATED) {
124
+ return Promise.resolve();
125
+ }
126
+ var timeout = this.adapterConfig.timeout || 3e4;
127
+ return new Promise(function (resolve, reject) {
128
+ var timer = null;
129
+ var cleanup = function cleanup() {
130
+ if (timer) {
131
+ clearTimeout(timer);
132
+ timer = null;
133
+ }
134
+ _this3.off("connected", onConnected);
135
+ _this3.off("error", onError);
136
+ };
137
+ var onConnected = function onConnected() {
138
+ cleanup();
139
+ resolve();
140
+ };
141
+ var onError = function onError(error) {
142
+ cleanup();
143
+ reject(error);
144
+ };
145
+ _this3.once("connected", onConnected);
146
+ _this3.once("error", onError);
147
+ timer = setTimeout(function () {
148
+ cleanup();
149
+ reject(new Error("OpenClaw authentication timeout after ".concat(timeout, "ms")));
150
+ }, timeout);
151
+ });
152
+ }
153
+ }, {
154
+ key: "sendMessage",
155
+ value: function () {
156
+ var _sendMessage = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee2(params, requestParams) {
157
+ var chatParams, _this$callbacks$onSta, _this$callbacks, _this$callbacks$onErr, _this$callbacks2, _t;
158
+ return _regeneratorRuntime.wrap(function (_context2) {
159
+ while (1) switch (_context2.prev = _context2.next) {
160
+ case 0:
161
+ if (!(this.connectionState !== OpenClawConnectionState.AUTHENTICATED)) {
162
+ _context2.next = 1;
163
+ break;
164
+ }
165
+ throw new Error("Not authenticated. Please connect first.");
166
+ case 1:
167
+ this.currentRequestParams = params;
168
+ this.isStreaming = true;
169
+ this.eventMapper.reset();
170
+ chatParams = _objectSpread({
171
+ message: params.prompt || "",
172
+ idempotencyKey: generateUUID()
173
+ }, requestParams);
174
+ _context2.prev = 2;
175
+ (_this$callbacks$onSta = (_this$callbacks = this.callbacks).onStart) === null || _this$callbacks$onSta === void 0 || _this$callbacks$onSta.call(_this$callbacks);
176
+ _context2.next = 3;
177
+ return this.rpcHandler.chatSend(chatParams);
178
+ case 3:
179
+ _context2.next = 5;
180
+ break;
181
+ case 4:
182
+ _context2.prev = 4;
183
+ _t = _context2["catch"](2);
184
+ this.isStreaming = false;
185
+ (_this$callbacks$onErr = (_this$callbacks2 = this.callbacks).onError) === null || _this$callbacks$onErr === void 0 || _this$callbacks$onErr.call(_this$callbacks2, _t);
186
+ throw _t;
187
+ case 5:
188
+ case "end":
189
+ return _context2.stop();
190
+ }
191
+ }, _callee2, this, [[2, 4]]);
192
+ }));
193
+ function sendMessage(_x, _x2) {
194
+ return _sendMessage.apply(this, arguments);
195
+ }
196
+ return sendMessage;
197
+ }()
198
+ }, {
199
+ key: "handleEvent",
200
+ value: function handleEvent(chunk) {
201
+ var frame = parseFrame(chunk.data);
202
+ if (!frame || frame.type !== "event") {
203
+ return null;
204
+ }
205
+ var result = this.eventMapper.mapEvent(frame);
206
+ if (result.isFinal) {
207
+ var _this$callbacks$onCom, _this$callbacks3;
208
+ this.isStreaming = false;
209
+ (_this$callbacks$onCom = (_this$callbacks3 = this.callbacks).onComplete) === null || _this$callbacks$onCom === void 0 || _this$callbacks$onCom.call(_this$callbacks3, false, this.currentRequestParams || void 0);
210
+ }
211
+ if (result.hasError && result.errorMessage) {
212
+ var _this$callbacks$onErr2, _this$callbacks4;
213
+ (_this$callbacks$onErr2 = (_this$callbacks4 = this.callbacks).onError) === null || _this$callbacks$onErr2 === void 0 || _this$callbacks$onErr2.call(_this$callbacks4, new Error(result.errorMessage));
214
+ }
215
+ return result.content;
216
+ }
217
+ }, {
218
+ key: "invokeAction",
219
+ value: function () {
220
+ var _invokeAction = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee3(params) {
221
+ return _regeneratorRuntime.wrap(function (_context3) {
222
+ while (1) switch (_context3.prev = _context3.next) {
223
+ case 0:
224
+ if (!(this.connectionState !== OpenClawConnectionState.AUTHENTICATED)) {
225
+ _context3.next = 1;
226
+ break;
227
+ }
228
+ throw new Error("Not authenticated. Please connect first.");
229
+ case 1:
230
+ return _context3.abrupt("return", this.rpcHandler.nodeInvoke(_objectSpread(_objectSpread({}, params), {}, {
231
+ runId: this.eventMapper.getCurrentRunId() || void 0
232
+ })));
233
+ case 2:
234
+ case "end":
235
+ return _context3.stop();
236
+ }
237
+ }, _callee3, this);
238
+ }));
239
+ function invokeAction(_x3) {
240
+ return _invokeAction.apply(this, arguments);
241
+ }
242
+ return invokeAction;
243
+ }()
244
+ }, {
245
+ key: "disconnect",
246
+ value: function () {
247
+ var _disconnect = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee4() {
248
+ var _this$callbacks$onDis, _this$callbacks5;
249
+ return _regeneratorRuntime.wrap(function (_context4) {
250
+ while (1) switch (_context4.prev = _context4.next) {
251
+ case 0:
252
+ this.connectionState = OpenClawConnectionState.CLOSING;
253
+ this.rpcHandler.cancelAll("Disconnecting");
254
+ if (!this.wsClient) {
255
+ _context4.next = 2;
256
+ break;
257
+ }
258
+ _context4.next = 1;
259
+ return this.wsClient.close();
260
+ case 1:
261
+ this.wsClient = null;
262
+ case 2:
263
+ this.connectionState = OpenClawConnectionState.DISCONNECTED;
264
+ (_this$callbacks$onDis = (_this$callbacks5 = this.callbacks).onDisconnected) === null || _this$callbacks$onDis === void 0 || _this$callbacks$onDis.call(_this$callbacks5);
265
+ case 3:
266
+ case "end":
267
+ return _context4.stop();
268
+ }
269
+ }, _callee4, this);
270
+ }));
271
+ function disconnect() {
272
+ return _disconnect.apply(this, arguments);
273
+ }
274
+ return disconnect;
275
+ }()
276
+ }, {
277
+ key: "abort",
278
+ value: function abort() {
279
+ if (this.isStreaming) {
280
+ var _this$callbacks$onCom2, _this$callbacks6;
281
+ this.isStreaming = false;
282
+ (_this$callbacks$onCom2 = (_this$callbacks6 = this.callbacks).onComplete) === null || _this$callbacks$onCom2 === void 0 || _this$callbacks$onCom2.call(_this$callbacks6, true, this.currentRequestParams || void 0);
283
+ }
284
+ }
285
+ }, {
286
+ key: "getConnectionState",
287
+ value: function getConnectionState() {
288
+ return this.connectionState;
289
+ }
290
+ }, {
291
+ key: "isAuthenticated",
292
+ value: function isAuthenticated() {
293
+ return this.connectionState === OpenClawConnectionState.AUTHENTICATED;
294
+ }
295
+ }, {
296
+ key: "reset",
297
+ value: function reset() {
298
+ this.eventMapper.reset();
299
+ this.rpcHandler.reset();
300
+ this.isStreaming = false;
301
+ this.currentRequestParams = null;
302
+ }
303
+ }, {
304
+ key: "destroy",
305
+ value: function () {
306
+ var _destroy = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee5() {
307
+ return _regeneratorRuntime.wrap(function (_context5) {
308
+ while (1) switch (_context5.prev = _context5.next) {
309
+ case 0:
310
+ _context5.next = 1;
311
+ return this.disconnect();
312
+ case 1:
313
+ this.rpcHandler.destroy();
314
+ this.removeAllListeners();
315
+ case 2:
316
+ case "end":
317
+ return _context5.stop();
318
+ }
319
+ }, _callee5, this);
320
+ }));
321
+ function destroy() {
322
+ return _destroy.apply(this, arguments);
323
+ }
324
+ return destroy;
325
+ }()
326
+ }, {
327
+ key: "setupEventHandlers",
328
+ value: function setupEventHandlers() {
329
+ var _this4 = this;
330
+ if (!this.wsClient) return;
331
+ this.wsClient.on("message", function (event) {
332
+ _this4.handleWebSocketMessage(event.data);
333
+ });
334
+ this.wsClient.on("error", function (error) {
335
+ var _this4$callbacks$onEr, _this4$callbacks;
336
+ _this4.logger.error("OpenClaw WebSocket error:", error);
337
+ (_this4$callbacks$onEr = (_this4$callbacks = _this4.callbacks).onError) === null || _this4$callbacks$onEr === void 0 || _this4$callbacks$onEr.call(_this4$callbacks, error);
338
+ });
339
+ this.wsClient.on("complete", function (isAborted) {
340
+ var _this4$callbacks$onDi, _this4$callbacks3;
341
+ if (_this4.isStreaming) {
342
+ var _this4$callbacks$onCo, _this4$callbacks2;
343
+ _this4.isStreaming = false;
344
+ (_this4$callbacks$onCo = (_this4$callbacks2 = _this4.callbacks).onComplete) === null || _this4$callbacks$onCo === void 0 || _this4$callbacks$onCo.call(_this4$callbacks2, isAborted, _this4.currentRequestParams || void 0);
345
+ }
346
+ (_this4$callbacks$onDi = (_this4$callbacks3 = _this4.callbacks).onDisconnected) === null || _this4$callbacks$onDi === void 0 || _this4$callbacks$onDi.call(_this4$callbacks3, isAborted ? "Aborted" : "Connection closed");
347
+ });
348
+ this.wsClient.on("stateChange", function (event) {
349
+ _this4.logger.debug("WebSocket state: ".concat(event.from, " -> ").concat(event.to));
350
+ if (event.to === WebSocketConnectionState.CONNECTED) {
351
+ _this4.connectionState = OpenClawConnectionState.HANDSHAKING;
352
+ }
353
+ });
354
+ }
355
+ }, {
356
+ key: "handleWebSocketMessage",
357
+ value: function handleWebSocketMessage(data) {
358
+ var frame = parseFrame(data);
359
+ if (!frame) {
360
+ this.logger.warn("Failed to parse OpenClaw frame:", data);
361
+ return;
362
+ }
363
+ if (frame.type === "res") {
364
+ this.rpcHandler.handleResponse(frame);
365
+ return;
366
+ }
367
+ if (frame.type === "event") {
368
+ this.handleEventFrame(frame);
369
+ }
370
+ }
371
+ }, {
372
+ key: "handleEventFrame",
373
+ value: function handleEventFrame(frame) {
374
+ var event = frame.event,
375
+ payload = frame.payload;
376
+ if (event === OpenClawEventType.CONNECT_CHALLENGE) {
377
+ this.handleConnectChallenge(payload);
378
+ return;
379
+ }
380
+ if (this.isStreaming) {
381
+ var result = this.eventMapper.mapEvent(frame);
382
+ if (result.content) {
383
+ var _this$callbacks$onMes, _this$callbacks7;
384
+ (_this$callbacks$onMes = (_this$callbacks7 = this.callbacks).onMessage) === null || _this$callbacks$onMes === void 0 || _this$callbacks$onMes.call(_this$callbacks7, result.content);
385
+ this.emit("message", result.content);
386
+ }
387
+ if (result.isFinal) {
388
+ var _this$callbacks$onCom3, _this$callbacks8;
389
+ this.isStreaming = false;
390
+ (_this$callbacks$onCom3 = (_this$callbacks8 = this.callbacks).onComplete) === null || _this$callbacks$onCom3 === void 0 || _this$callbacks$onCom3.call(_this$callbacks8, false, this.currentRequestParams || void 0);
391
+ }
392
+ if (result.hasError && result.errorMessage) {
393
+ var _this$callbacks$onErr3, _this$callbacks9;
394
+ (_this$callbacks$onErr3 = (_this$callbacks9 = this.callbacks).onError) === null || _this$callbacks$onErr3 === void 0 || _this$callbacks$onErr3.call(_this$callbacks9, new Error(result.errorMessage));
395
+ }
396
+ }
397
+ }
398
+ }, {
399
+ key: "handleConnectChallenge",
400
+ value: function () {
401
+ var _handleConnectChallenge = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee6(payload) {
402
+ var _this$config$auth;
403
+ var connectParams, _this$callbacks$onCon, _this$callbacks0, response, _this$callbacks$onErr4, _this$callbacks1, _t2;
404
+ return _regeneratorRuntime.wrap(function (_context6) {
405
+ while (1) switch (_context6.prev = _context6.next) {
406
+ case 0:
407
+ this.logger.debug("Received connect.challenge, sending connect request");
408
+ connectParams = _objectSpread(_objectSpread({
409
+ minProtocol: this.config.protocolVersion.min,
410
+ maxProtocol: this.config.protocolVersion.max,
411
+ client: {
412
+ id: this.config.client.id,
413
+ version: this.config.client.version,
414
+ platform: getPlatform(),
415
+ mode: this.config.client.mode,
416
+ instanceId: this.instanceId
417
+ },
418
+ role: "operator",
419
+ scopes: ["operator.admin", "operator.approvals", "operator.pairing"],
420
+ caps: []
421
+ }, (_this$config$auth = this.config.auth) !== null && _this$config$auth !== void 0 && _this$config$auth.token ? {
422
+ auth: this.config.auth
423
+ } : {}), {}, {
424
+ userAgent: getUserAgent(),
425
+ locale: getLocale()
426
+ });
427
+ _context6.prev = 1;
428
+ _context6.next = 2;
429
+ return this.rpcHandler.connect(connectParams);
430
+ case 2:
431
+ response = _context6.sent;
432
+ this.connectionState = OpenClawConnectionState.AUTHENTICATED;
433
+ this.logger.info("OpenClaw authenticated successfully:", response);
434
+ (_this$callbacks$onCon = (_this$callbacks0 = this.callbacks).onConnected) === null || _this$callbacks$onCon === void 0 || _this$callbacks$onCon.call(_this$callbacks0);
435
+ this.emit("connected", response);
436
+ _context6.next = 4;
437
+ break;
438
+ case 3:
439
+ _context6.prev = 3;
440
+ _t2 = _context6["catch"](1);
441
+ this.connectionState = OpenClawConnectionState.ERROR;
442
+ this.logger.error("OpenClaw authentication failed:", _t2);
443
+ (_this$callbacks$onErr4 = (_this$callbacks1 = this.callbacks).onError) === null || _this$callbacks$onErr4 === void 0 || _this$callbacks$onErr4.call(_this$callbacks1, _t2);
444
+ this.emit("error", _t2);
445
+ case 4:
446
+ case "end":
447
+ return _context6.stop();
448
+ }
449
+ }, _callee6, this, [[1, 3]]);
450
+ }));
451
+ function handleConnectChallenge(_x4) {
452
+ return _handleConnectChallenge.apply(this, arguments);
453
+ }
454
+ return handleConnectChallenge;
455
+ }()
456
+ }]);
457
+ }(SimpleEventEmitter);
458
+
459
+ export { OpenClawAdapter };
460
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../../../../../../pro-components/chat/chat-engine/core/adapters/openclaw/index.ts"],"sourcesContent":["/**\n * OpenClaw 协议适配器\n *\n * 功能:\n * 1. 管理 WebSocket 连接生命周期\n * 2. 处理 OpenClaw 协议的握手和认证\n * 3. 将 OpenClaw 事件转换为 ChatEngine 统一的消息格式\n * 4. 提供与 AGUIAdapter 相似的接口,便于 ChatEngine 统一调度\n */\nimport EventEmitter from '../../utils/eventEmitter';\nimport { LoggerManager } from '../../utils/logger';\nimport { WebSocketClient, type WebSocketClientConfig, WebSocketConnectionState } from '../../server/websocket-client';\nimport type { AIMessageContent, ChatRequestParams, SSEChunkData } from '../../type';\nimport { OpenClawEventMapper, type EventMapResult } from './event-mapper';\nimport { OpenClawRPCHandler, RPCError } from './rpc-handler';\nimport type {\n OpenClawConfig,\n OpenClawFrame,\n OpenClawEventFrame,\n OpenClawResponseFrame,\n ConnectParams,\n ConnectChallengePayload,\n} from './types';\nimport { mergeOpenClawConfig, DEFAULT_OPENCLAW_CONFIG } from './types/config';\nimport { OpenClawEventType, OpenClawConnectionState } from './types/events';\nimport {\n generateUUID,\n parseFrame,\n getPlatform,\n getUserAgent,\n getLocale,\n formatWebSocketUrl,\n} from './utils';\n\n// 重新导出类型\nexport * from './types';\nexport { OpenClawEventMapper, type EventMapResult } from './event-mapper';\nexport { OpenClawRPCHandler, RPCError } from './rpc-handler';\n\n/**\n * OpenClaw 适配器回调接口\n */\nexport interface OpenClawAdapterCallbacks {\n /** 连接成功 */\n onConnected?: () => void;\n /** 连接断开 */\n onDisconnected?: (reason?: string) => void;\n /** 消息开始 */\n onStart?: () => void;\n /** 消息完成 */\n onComplete?: (isAborted: boolean, params?: ChatRequestParams) => void;\n /** 错误发生 */\n onError?: (error: Error) => void;\n /** 消息内容更新 */\n onMessage?: (content: AIMessageContent | AIMessageContent[]) => void;\n}\n\n/**\n * OpenClaw 适配器配置\n */\nexport interface OpenClawAdapterConfig extends OpenClawConfig {\n /** WebSocket 端点 */\n endpoint: string;\n /** 请求超时(毫秒) */\n timeout?: number;\n /** 最大重试次数 */\n maxRetries?: number;\n /** 重试间隔(毫秒) */\n retryInterval?: number;\n}\n\n/**\n * OpenClaw 协议适配器\n */\nexport class OpenClawAdapter extends EventEmitter {\n private wsClient: WebSocketClient | null = null;\n\n private rpcHandler: OpenClawRPCHandler;\n\n private eventMapper: OpenClawEventMapper;\n\n private config: Required<OpenClawConfig>;\n\n private adapterConfig: OpenClawAdapterConfig;\n\n private connectionState = OpenClawConnectionState.DISCONNECTED;\n\n private instanceId: string;\n\n private logger = LoggerManager.getLogger();\n\n private callbacks: OpenClawAdapterCallbacks = {};\n\n private isStreaming = false;\n\n private currentRequestParams: ChatRequestParams | null = null;\n\n constructor(config: OpenClawAdapterConfig) {\n super();\n this.adapterConfig = config;\n this.config = mergeOpenClawConfig(config);\n this.instanceId = generateUUID();\n this.rpcHandler = new OpenClawRPCHandler({ timeout: config.timeout });\n this.eventMapper = new OpenClawEventMapper();\n }\n\n /**\n * 设置回调\n */\n setCallbacks(callbacks: OpenClawAdapterCallbacks): void {\n this.callbacks = callbacks;\n }\n\n /**\n * 连接到 OpenClaw Gateway\n * 等待 WebSocket 连接建立并完成认证握手后才返回\n */\n async connect(): Promise<void> {\n if (this.connectionState === OpenClawConnectionState.AUTHENTICATED) {\n return;\n }\n\n this.connectionState = OpenClawConnectionState.CONNECTING;\n\n const url = formatWebSocketUrl(this.adapterConfig.endpoint);\n this.wsClient = new WebSocketClient(url);\n\n // 设置 RPC 发送函数\n this.rpcHandler.setSendFunction((frame) => {\n this.wsClient?.send(frame);\n });\n\n // 绑定事件处理\n this.setupEventHandlers();\n\n // 连接 WebSocket\n const wsConfig: WebSocketClientConfig = {\n timeout: this.adapterConfig.timeout,\n maxRetries: this.adapterConfig.maxRetries,\n retryInterval: this.adapterConfig.retryInterval,\n heartbeatInterval: this.config.heartbeatInterval,\n };\n\n await this.wsClient.connect(wsConfig);\n\n // 等待认证完成(connect.challenge 握手)\n await this.waitForAuthentication();\n }\n\n /**\n * 等待认证完成\n * WebSocket 连接建立后,服务器会发送 connect.challenge 事件,\n * 适配器会自动回复 connect 请求完成握手。\n * 此方法等待整个握手流程完成后再返回。\n */\n private waitForAuthentication(): Promise<void> {\n // 如果已经认证,直接返回\n if (this.connectionState === OpenClawConnectionState.AUTHENTICATED) {\n return Promise.resolve();\n }\n\n const timeout = this.adapterConfig.timeout || 30000;\n\n return new Promise<void>((resolve, reject) => {\n let timer: ReturnType<typeof setTimeout> | null = null;\n\n const cleanup = () => {\n if (timer) {\n clearTimeout(timer);\n timer = null;\n }\n this.off('connected', onConnected);\n this.off('error', onError);\n };\n\n const onConnected = () => {\n cleanup();\n resolve();\n };\n\n const onError = (error: Error) => {\n cleanup();\n reject(error);\n };\n\n this.once('connected', onConnected);\n this.once('error', onError);\n\n // 超时处理\n timer = setTimeout(() => {\n cleanup();\n reject(new Error(`OpenClaw authentication timeout after ${timeout}ms`));\n }, timeout);\n });\n }\n\n /**\n * 发送聊天消息\n */\n async sendMessage(params: ChatRequestParams, requestParams?: Record<string, unknown>): Promise<void> {\n if (this.connectionState !== OpenClawConnectionState.AUTHENTICATED) {\n throw new Error('Not authenticated. Please connect first.');\n }\n\n this.currentRequestParams = params;\n this.isStreaming = true;\n this.eventMapper.reset();\n\n // 合并用户自定义参数\n const chatParams = {\n message: params.prompt || '',\n idempotencyKey: generateUUID(),\n ...requestParams,\n };\n\n try {\n this.callbacks.onStart?.();\n await this.rpcHandler.chatSend(chatParams);\n // 响应会通过事件流返回,这里只是发送请求\n } catch (error) {\n this.isStreaming = false;\n this.callbacks.onError?.(error as Error);\n throw error;\n }\n }\n\n /**\n * 处理 SSE 数据块(兼容 ChatEngine 接口)\n */\n handleEvent(chunk: SSEChunkData): AIMessageContent | AIMessageContent[] | null {\n // 将 SSE 格式转换为 OpenClaw 帧格式\n const frame = parseFrame(chunk.data);\n if (!frame || frame.type !== 'event') {\n return null;\n }\n\n const result = this.eventMapper.mapEvent(frame as OpenClawEventFrame);\n\n if (result.isFinal) {\n this.isStreaming = false;\n this.callbacks.onComplete?.(false, this.currentRequestParams || undefined);\n }\n\n if (result.hasError && result.errorMessage) {\n this.callbacks.onError?.(new Error(result.errorMessage));\n }\n\n return result.content;\n }\n\n /**\n * 调用 Action(供 Toolcall/Activity 组件的 respond/action 使用)\n *\n * 通过 OpenClaw 的 node.invoke RPC 方法上行,利用 WebSocket 双向通道\n * 将用户在交互式组件中的操作(respond/confirm/update 等)发送回 Agent 端。\n *\n * @param params.nodeId - toolCallId 或 activityType,标识目标节点\n * @param params.action - 操作类型,如 \"respond\" | \"update\" | \"confirm\"\n * @param params.payload - 用户操作数据\n * @returns Agent 端返回的响应数据\n *\n * @example\n * ```tsx\n * // 在 ToolCallRenderer 的 onRespond 中使用\n * <ToolCallRenderer\n * toolCall={toolCall}\n * onRespond={async (tc, response) => {\n * await openclawAdapter.invokeAction({\n * nodeId: tc.toolCallId,\n * action: 'respond',\n * payload: response,\n * });\n * }}\n * />\n * ```\n */\n async invokeAction(params: {\n nodeId: string;\n action: string;\n payload: unknown;\n }): Promise<unknown> {\n if (this.connectionState !== OpenClawConnectionState.AUTHENTICATED) {\n throw new Error('Not authenticated. Please connect first.');\n }\n\n return this.rpcHandler.nodeInvoke({\n ...params,\n runId: this.eventMapper.getCurrentRunId() || undefined,\n });\n }\n\n /**\n * 断开连接\n */\n async disconnect(): Promise<void> {\n this.connectionState = OpenClawConnectionState.CLOSING;\n this.rpcHandler.cancelAll('Disconnecting');\n\n if (this.wsClient) {\n await this.wsClient.close();\n this.wsClient = null;\n }\n\n this.connectionState = OpenClawConnectionState.DISCONNECTED;\n this.callbacks.onDisconnected?.();\n }\n\n /**\n * 中止当前流式传输\n */\n abort(): void {\n if (this.isStreaming) {\n this.isStreaming = false;\n this.callbacks.onComplete?.(true, this.currentRequestParams || undefined);\n }\n }\n\n /**\n * 获取连接状态\n */\n getConnectionState(): OpenClawConnectionState {\n return this.connectionState;\n }\n\n /**\n * 检查是否已认证\n */\n isAuthenticated(): boolean {\n return this.connectionState === OpenClawConnectionState.AUTHENTICATED;\n }\n\n /**\n * 重置适配器状态\n */\n reset(): void {\n this.eventMapper.reset();\n this.rpcHandler.reset();\n this.isStreaming = false;\n this.currentRequestParams = null;\n }\n\n /**\n * 销毁适配器\n */\n async destroy(): Promise<void> {\n await this.disconnect();\n this.rpcHandler.destroy();\n this.removeAllListeners();\n }\n\n /**\n * 设置 WebSocket 事件处理器\n */\n private setupEventHandlers(): void {\n if (!this.wsClient) return;\n\n this.wsClient.on('message', (event: { event: string; data: unknown }) => {\n this.handleWebSocketMessage(event.data);\n });\n\n this.wsClient.on('error', (error: Error) => {\n this.logger.error('OpenClaw WebSocket error:', error);\n this.callbacks.onError?.(error);\n });\n\n this.wsClient.on('complete', (isAborted: boolean) => {\n if (this.isStreaming) {\n this.isStreaming = false;\n this.callbacks.onComplete?.(isAborted, this.currentRequestParams || undefined);\n }\n this.callbacks.onDisconnected?.(isAborted ? 'Aborted' : 'Connection closed');\n });\n\n this.wsClient.on('stateChange', (event: { from: WebSocketConnectionState; to: WebSocketConnectionState }) => {\n this.logger.debug(`WebSocket state: ${event.from} -> ${event.to}`);\n if (event.to === WebSocketConnectionState.CONNECTED) {\n this.connectionState = OpenClawConnectionState.HANDSHAKING;\n }\n });\n }\n\n /**\n * 处理 WebSocket 消息\n */\n private handleWebSocketMessage(data: unknown): void {\n const frame = parseFrame(data as string | object);\n if (!frame) {\n this.logger.warn('Failed to parse OpenClaw frame:', data);\n return;\n }\n\n // 处理响应帧\n if (frame.type === 'res') {\n this.rpcHandler.handleResponse(frame as OpenClawResponseFrame);\n return;\n }\n\n // 处理事件帧\n if (frame.type === 'event') {\n this.handleEventFrame(frame as OpenClawEventFrame);\n }\n }\n\n /**\n * 处理事件帧\n */\n private handleEventFrame(frame: OpenClawEventFrame): void {\n const { event, payload } = frame;\n\n // 处理连接挑战事件\n if (event === OpenClawEventType.CONNECT_CHALLENGE) {\n this.handleConnectChallenge(payload as ConnectChallengePayload);\n return;\n }\n\n // 流式消息事件\n if (this.isStreaming) {\n const result = this.eventMapper.mapEvent(frame);\n\n if (result.content) {\n this.callbacks.onMessage?.(result.content);\n this.emit('message', result.content);\n }\n\n if (result.isFinal) {\n this.isStreaming = false;\n this.callbacks.onComplete?.(false, this.currentRequestParams || undefined);\n }\n\n if (result.hasError && result.errorMessage) {\n this.callbacks.onError?.(new Error(result.errorMessage));\n }\n }\n }\n\n /**\n * 处理连接挑战(握手)\n */\n private async handleConnectChallenge(payload: ConnectChallengePayload): Promise<void> {\n this.logger.debug('Received connect.challenge, sending connect request');\n\n const connectParams: ConnectParams = {\n minProtocol: this.config.protocolVersion.min,\n maxProtocol: this.config.protocolVersion.max,\n client: {\n id: this.config.client.id,\n version: this.config.client.version,\n platform: getPlatform(),\n mode: this.config.client.mode,\n instanceId: this.instanceId,\n },\n role: 'operator',\n scopes: ['operator.admin', 'operator.approvals', 'operator.pairing'],\n caps: [],\n // 传入认证信息(来自 openclaw onboard 的 operator token)\n ...(this.config.auth?.token ? { auth: this.config.auth } : {}),\n userAgent: getUserAgent(),\n locale: getLocale(),\n };\n\n try {\n const response = await this.rpcHandler.connect(connectParams);\n this.connectionState = OpenClawConnectionState.AUTHENTICATED;\n this.logger.info('OpenClaw authenticated successfully:', response);\n this.callbacks.onConnected?.();\n this.emit('connected', response);\n } catch (error) {\n this.connectionState = OpenClawConnectionState.ERROR;\n this.logger.error('OpenClaw authentication failed:', error);\n this.callbacks.onError?.(error as Error);\n this.emit('error', error);\n }\n }\n}\n"],"names":["OpenClawAdapter","config","_this","_classCallCheck","_callSuper","_defineProperty","OpenClawConnectionState","DISCONNECTED","LoggerManager","getLogger","adapterConfig","mergeOpenClawConfig","instanceId","generateUUID","rpcHandler","OpenClawRPCHandler","timeout","eventMapper","OpenClawEventMapper","_inherits","_EventEmitter","_createClass","key","value","setCallbacks","callbacks","_connect","_asyncToGenerator","_regeneratorRuntime","mark","_callee","_this2","url","wsConfig","wrap","_context","prev","next","connectionState","AUTHENTICATED","abrupt","CONNECTING","formatWebSocketUrl","endpoint","wsClient","WebSocketClient","setSendFunction","frame","_this2$wsClient","send","setupEventHandlers","maxRetries","retryInterval","heartbeatInterval","connect","waitForAuthentication","stop","apply","arguments","_this3","Promise","resolve","reject","timer","cleanup","clearTimeout","off","onConnected","onError","error","once","setTimeout","Error","concat","_sendMessage","_callee2","params","requestParams","chatParams","_this$callbacks$onSta","_this$callbacks","_this$callbacks$onErr","_this$callbacks2","_t","_context2","currentRequestParams","isStreaming","reset","_objectSpread","message","prompt","idempotencyKey","onStart","call","chatSend","sendMessage","_x","_x2","handleEvent","chunk","parseFrame","data","type","result","mapEvent","isFinal","_this$callbacks$onCom","_this$callbacks3","onComplete","hasError","errorMessage","_this$callbacks$onErr2","_this$callbacks4","content","_invokeAction","_callee3","_context3","nodeInvoke","runId","getCurrentRunId","invokeAction","_callee4","_this$callbacks$onDis","_this$callbacks5","_context4","CLOSING","cancelAll","close","onDisconnected","disconnect","_disconnect","abort","_this$callbacks$onCom2","_this$callbacks6","getConnectionState","isAuthenticated","_destroy","_callee5","_context5","destroy","removeAllListeners","_this4","on","event","handleWebSocketMessage","_this4$callbacks$onEr","_this4$callbacks","logger","isAborted","_this4$callbacks$onDi","_this4$callbacks3","_this4$callbacks$onCo","_this4$callbacks2","debug","from","to","WebSocketConnectionState","CONNECTED","HANDSHAKING","warn","handleResponse","handleEventFrame","payload","OpenClawEventType","CONNECT_CHALLENGE","handleConnectChallenge","_this$callbacks$onMes","_this$callbacks7","onMessage","emit","_this$callbacks$onCom3","_this$callbacks8","_this$callbacks$onErr3","_this$callbacks9","_handleConnectChallenge","_callee6","_this$config$auth","connectParams","_this$callbacks$onCon","_this$callbacks0","response","_this$callbacks$onErr4","_this$callbacks1","_t2","_context6","minProtocol","protocolVersion","min","maxProtocol","max","client","id","version","platform","getPlatform","mode","role","scopes","caps","auth","token","userAgent","getUserAgent","locale","getLocale","sent","info","ERROR","EventEmitter"],"mappings":"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"}
@@ -0,0 +1,114 @@
1
+ /**
2
+ * OpenClaw RPC 请求/响应处理器
3
+ *
4
+ * 管理请求队列、响应匹配、超时和错误处理
5
+ */
6
+ import type { OpenClawRequestFrame, OpenClawResponseFrame, OpenClawFrame, ConnectParams, ConnectResponse, ChatSendParams, ChatSendResponse } from './types';
7
+ /**
8
+ * RPC 处理器配置
9
+ */
10
+ export interface RPCHandlerConfig {
11
+ /** 请求超时时间(毫秒),默认 30000 */
12
+ timeout?: number;
13
+ /** 是否自动重试失败的请求,默认 false */
14
+ autoRetry?: boolean;
15
+ /** 最大重试次数,默认 3 */
16
+ maxRetries?: number;
17
+ }
18
+ /**
19
+ * RPC 错误类
20
+ */
21
+ export declare class RPCError extends Error {
22
+ code: string;
23
+ details?: unknown;
24
+ constructor(message: string, code: string, details?: unknown);
25
+ }
26
+ /**
27
+ * OpenClaw RPC 处理器
28
+ *
29
+ * 功能:
30
+ * - 管理请求队列
31
+ * - 匹配响应到对应的请求
32
+ * - 处理超时
33
+ * - 提供便捷的 RPC 方法调用
34
+ */
35
+ export declare class OpenClawRPCHandler {
36
+ private pendingRequests;
37
+ private config;
38
+ private sendFn;
39
+ private seq;
40
+ constructor(config?: RPCHandlerConfig);
41
+ /**
42
+ * 设置发送函数
43
+ */
44
+ setSendFunction(fn: (frame: OpenClawRequestFrame) => void): void;
45
+ /**
46
+ * 生成唯一请求 ID
47
+ */
48
+ generateRequestId(): string;
49
+ /**
50
+ * 发送 RPC 请求
51
+ */
52
+ request<TParams extends Record<string, unknown>, TResult>(method: string, params: TParams): Promise<TResult>;
53
+ /**
54
+ * 处理响应帧
55
+ */
56
+ handleResponse(frame: OpenClawResponseFrame): boolean;
57
+ /**
58
+ * 处理接收到的消息帧
59
+ * 自动区分响应和事件
60
+ */
61
+ handleFrame(frame: OpenClawFrame): {
62
+ type: 'response' | 'event';
63
+ handled: boolean;
64
+ data?: unknown;
65
+ };
66
+ /**
67
+ * 发送连接认证请求
68
+ */
69
+ connect(params: ConnectParams): Promise<ConnectResponse>;
70
+ /**
71
+ * 发送聊天消息
72
+ */
73
+ chatSend(params: ChatSendParams): Promise<ChatSendResponse>;
74
+ /**
75
+ * 发送心跳
76
+ */
77
+ heartbeat(): Promise<{
78
+ ts: number;
79
+ }>;
80
+ /**
81
+ * 节点调用(用于 Toolcall/Activity 的 action 上行)
82
+ *
83
+ * 遵循 OpenClaw 的 node.invoke RPC 方法,通过 WebSocket 双向通道
84
+ * 将用户在 Toolcall/Activity 组件中的操作(respond/confirm/update 等)
85
+ * 发送回 Agent 端处理。
86
+ *
87
+ * @param params.nodeId - toolCallId 或 activityType,标识目标节点
88
+ * @param params.action - 操作类型,如 "respond" | "update" | "confirm"
89
+ * @param params.payload - 用户操作数据
90
+ * @param params.runId - 关联的运行 ID(可选)
91
+ */
92
+ nodeInvoke(params: {
93
+ nodeId: string;
94
+ action: string;
95
+ payload: unknown;
96
+ runId?: string;
97
+ }): Promise<unknown>;
98
+ /**
99
+ * 取消所有待处理的请求
100
+ */
101
+ cancelAll(reason?: string): void;
102
+ /**
103
+ * 获取待处理请求数量
104
+ */
105
+ getPendingCount(): number;
106
+ /**
107
+ * 重置处理器状态
108
+ */
109
+ reset(): void;
110
+ /**
111
+ * 销毁处理器
112
+ */
113
+ destroy(): void;
114
+ }