strray-ai 1.22.21 → 1.22.22

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 (32) hide show
  1. package/.strray/state/state.json +1 -0
  2. package/dist/CHANGELOG.md +8 -0
  3. package/dist/index.d.ts +2 -0
  4. package/dist/index.d.ts.map +1 -1
  5. package/dist/index.js +1 -0
  6. package/dist/index.js.map +1 -1
  7. package/dist/integrations/openclaw/api-server.d.ts +86 -0
  8. package/dist/integrations/openclaw/api-server.d.ts.map +1 -0
  9. package/dist/integrations/openclaw/api-server.js +339 -0
  10. package/dist/integrations/openclaw/api-server.js.map +1 -0
  11. package/dist/integrations/openclaw/client.d.ts +120 -0
  12. package/dist/integrations/openclaw/client.d.ts.map +1 -0
  13. package/dist/integrations/openclaw/client.js +447 -0
  14. package/dist/integrations/openclaw/client.js.map +1 -0
  15. package/dist/integrations/openclaw/config.d.ts +97 -0
  16. package/dist/integrations/openclaw/config.d.ts.map +1 -0
  17. package/dist/integrations/openclaw/config.js +375 -0
  18. package/dist/integrations/openclaw/config.js.map +1 -0
  19. package/dist/integrations/openclaw/hooks/strray-hooks.d.ts +125 -0
  20. package/dist/integrations/openclaw/hooks/strray-hooks.d.ts.map +1 -0
  21. package/dist/integrations/openclaw/hooks/strray-hooks.js +281 -0
  22. package/dist/integrations/openclaw/hooks/strray-hooks.js.map +1 -0
  23. package/dist/integrations/openclaw/index.d.ts +102 -0
  24. package/dist/integrations/openclaw/index.d.ts.map +1 -0
  25. package/dist/integrations/openclaw/index.js +340 -0
  26. package/dist/integrations/openclaw/index.js.map +1 -0
  27. package/dist/integrations/openclaw/types.d.ts +427 -0
  28. package/dist/integrations/openclaw/types.d.ts.map +1 -0
  29. package/dist/integrations/openclaw/types.js +154 -0
  30. package/dist/integrations/openclaw/types.js.map +1 -0
  31. package/package.json +1 -1
  32. package/scripts/node/universal-version-manager.js +3 -3
@@ -0,0 +1,447 @@
1
+ /**
2
+ * OpenClaw WebSocket Client
3
+ *
4
+ * Implements OpenClaw Gateway Protocol v3 with proper request/response handling,
5
+ * reconnection logic, and event management.
6
+ *
7
+ * @version 1.0.0
8
+ * @since 2026-03-14
9
+ */
10
+ import { WebSocket } from 'ws';
11
+ import * as crypto from 'crypto';
12
+ import { isOpenClawResponse, isOpenClawEvent, OpenClawTimeoutError, OpenClawConnectionError, } from './types.js';
13
+ /**
14
+ * OpenClaw WebSocket Client
15
+ */
16
+ export class OpenClawClient {
17
+ ws = null;
18
+ config;
19
+ state = 'disconnected';
20
+ pendingRequests = new Map();
21
+ eventListeners = new Map();
22
+ stateListeners = new Set();
23
+ reconnectAttempts = 0;
24
+ reconnectTimeout = null;
25
+ pingInterval = null;
26
+ stats = {
27
+ messagesSent: 0,
28
+ messagesReceived: 0,
29
+ requestsSent: 0,
30
+ requestsSucceeded: 0,
31
+ requestsFailed: 0,
32
+ reconnects: 0,
33
+ errors: 0,
34
+ };
35
+ logger;
36
+ constructor(config) {
37
+ this.config = {
38
+ gatewayUrl: config.gatewayUrl || 'ws://127.0.0.1:18789',
39
+ authToken: config.authToken || '',
40
+ deviceId: config.deviceId || '',
41
+ deviceKeyPair: config.deviceKeyPair || { publicKey: '', privateKey: '' },
42
+ reconnect: config.reconnect ?? true,
43
+ reconnectAttempts: config.reconnectAttempts ?? 5,
44
+ reconnectDelay: config.reconnectDelay ?? 1000,
45
+ pingInterval: config.pingInterval ?? 30000,
46
+ requestTimeout: config.requestTimeout ?? 30000,
47
+ };
48
+ // Use console but can be replaced with proper logger
49
+ this.logger = console;
50
+ }
51
+ /**
52
+ * Connect to OpenClaw Gateway
53
+ */
54
+ async connect() {
55
+ if (this.state === 'connected' || this.state === 'authenticating') {
56
+ this.logger.warn('[OpenClawClient] Already connected or connecting');
57
+ return;
58
+ }
59
+ this.setState('connecting');
60
+ return new Promise((resolve, reject) => {
61
+ try {
62
+ this.ws = new WebSocket(this.config.gatewayUrl);
63
+ this.ws.on('open', () => {
64
+ this.logger.info('[OpenClawClient] WebSocket connected, sending handshake...');
65
+ this.sendHandshake();
66
+ resolve();
67
+ });
68
+ this.ws.on('message', (data) => {
69
+ const message = typeof data === 'string' ? data : String(data);
70
+ this.handleMessage(message);
71
+ });
72
+ this.ws.on('close', (code, reason) => {
73
+ this.logger.info(`[OpenClawClient] Connection closed: ${code} ${String(reason)}`);
74
+ this.handleDisconnect(Number(code), String(reason));
75
+ });
76
+ this.ws.on('error', (error) => {
77
+ this.logger.error('[OpenClawClient] WebSocket error:', error instanceof Error ? error.message : String(error));
78
+ this.stats.errors++;
79
+ if (this.state === 'connecting') {
80
+ reject(new OpenClawConnectionError(`Failed to connect to ${this.config.gatewayUrl}: ${error instanceof Error ? error.message : String(error)}`, error instanceof Error ? error : undefined));
81
+ }
82
+ });
83
+ this.ws.on('ping', () => {
84
+ this.logger.debug('[OpenClawClient] Received ping');
85
+ });
86
+ this.ws.on('pong', () => {
87
+ this.logger.debug('[OpenClawClient] Received pong');
88
+ });
89
+ }
90
+ catch (error) {
91
+ this.setState('error');
92
+ reject(new OpenClawConnectionError('Failed to create WebSocket connection', error));
93
+ }
94
+ });
95
+ }
96
+ /**
97
+ * Disconnect from OpenClaw Gateway
98
+ */
99
+ disconnect() {
100
+ this.logger.info('[OpenClawClient] Disconnecting...');
101
+ // Clear reconnection
102
+ if (this.reconnectTimeout) {
103
+ clearTimeout(this.reconnectTimeout);
104
+ this.reconnectTimeout = null;
105
+ }
106
+ // Clear ping interval
107
+ if (this.pingInterval) {
108
+ clearInterval(this.pingInterval);
109
+ this.pingInterval = null;
110
+ }
111
+ // Reject pending requests
112
+ for (const [id, request] of this.pendingRequests.entries()) {
113
+ clearTimeout(request.timeout);
114
+ request.reject(new Error('Connection closed'));
115
+ this.pendingRequests.delete(id);
116
+ }
117
+ // Close WebSocket
118
+ if (this.ws) {
119
+ this.ws.removeAllListeners();
120
+ this.ws.close(1000, 'Client disconnecting');
121
+ this.ws = null;
122
+ }
123
+ this.setState('disconnected');
124
+ }
125
+ /**
126
+ * Send request and wait for response
127
+ */
128
+ async sendRequest(method, params = {}) {
129
+ if (!this.ws || this.ws.readyState !== WebSocket.OPEN) {
130
+ throw new Error('Not connected to OpenClaw Gateway');
131
+ }
132
+ const id = this.generateId();
133
+ const frame = {
134
+ type: 'req',
135
+ id,
136
+ method,
137
+ params,
138
+ };
139
+ this.logger.debug(`[OpenClawClient] Sending request: ${method} (${id})`);
140
+ this.stats.requestsSent++;
141
+ return new Promise((resolve, reject) => {
142
+ // Set timeout
143
+ const timeout = setTimeout(() => {
144
+ this.pendingRequests.delete(id);
145
+ this.stats.requestsFailed++;
146
+ reject(new OpenClawTimeoutError(method, this.config.requestTimeout));
147
+ }, this.config.requestTimeout);
148
+ // Store pending request
149
+ this.pendingRequests.set(id, {
150
+ resolve: (value) => {
151
+ clearTimeout(timeout);
152
+ this.stats.requestsSucceeded++;
153
+ resolve(value);
154
+ },
155
+ reject: (reason) => {
156
+ clearTimeout(timeout);
157
+ this.stats.requestsFailed++;
158
+ reject(reason);
159
+ },
160
+ timeout,
161
+ timestamp: Date.now(),
162
+ });
163
+ // Send frame
164
+ try {
165
+ this.ws.send(JSON.stringify(frame));
166
+ this.stats.messagesSent++;
167
+ }
168
+ catch (error) {
169
+ clearTimeout(timeout);
170
+ this.pendingRequests.delete(id);
171
+ this.stats.errors++;
172
+ reject(error);
173
+ }
174
+ });
175
+ }
176
+ /**
177
+ * Subscribe to events
178
+ */
179
+ async subscribeToEvents(events) {
180
+ await this.sendRequest('events.subscribe', { events });
181
+ }
182
+ /**
183
+ * Get current state
184
+ */
185
+ getState() {
186
+ return this.state;
187
+ }
188
+ /**
189
+ * Check if connected
190
+ */
191
+ isConnected() {
192
+ return this.state === 'connected' || this.state === 'authorized';
193
+ }
194
+ /**
195
+ * Get statistics
196
+ */
197
+ getStats() {
198
+ return { ...this.stats };
199
+ }
200
+ /**
201
+ * Add event listener
202
+ */
203
+ on(event, listener) {
204
+ if (!this.eventListeners.has(event)) {
205
+ this.eventListeners.set(event, new Set());
206
+ }
207
+ this.eventListeners.get(event).add(listener);
208
+ }
209
+ /**
210
+ * Remove event listener
211
+ */
212
+ off(event, listener) {
213
+ const listeners = this.eventListeners.get(event);
214
+ if (listeners) {
215
+ listeners.delete(listener);
216
+ }
217
+ }
218
+ /**
219
+ * Add state change listener
220
+ */
221
+ onStateChange(listener) {
222
+ this.stateListeners.add(listener);
223
+ }
224
+ /**
225
+ * Remove state change listener
226
+ */
227
+ offStateChange(listener) {
228
+ this.stateListeners.delete(listener);
229
+ }
230
+ // =========================================================================
231
+ // Private Methods
232
+ // =========================================================================
233
+ /**
234
+ * Send handshake on connect
235
+ */
236
+ sendHandshake() {
237
+ const params = {
238
+ minProtocol: 3,
239
+ maxProtocol: 3,
240
+ client: {
241
+ id: 'strray-integration',
242
+ version: '1.0.0',
243
+ platform: process.platform,
244
+ mode: 'operator',
245
+ },
246
+ role: 'operator',
247
+ scopes: ['operator.read', 'operator.write'],
248
+ caps: [],
249
+ commands: [],
250
+ userAgent: `0xRay-OpenClaw-Integration/1.0.0`,
251
+ };
252
+ // Add auth if provided
253
+ if (this.config.authToken) {
254
+ params.auth = { token: this.config.authToken };
255
+ }
256
+ // Add device if provided
257
+ if (this.config.deviceId && this.config.deviceKeyPair) {
258
+ params.device = {
259
+ id: this.config.deviceId,
260
+ publicKey: this.config.deviceKeyPair.publicKey,
261
+ signature: this.signDeviceChallenge(this.config.deviceId),
262
+ signedAt: Date.now(),
263
+ nonce: this.generateNonce(),
264
+ };
265
+ }
266
+ // Send connect request
267
+ this.sendRequest('connect', params).catch((error) => {
268
+ this.logger.error('[OpenClawClient] Handshake failed:', error);
269
+ this.setState('error');
270
+ });
271
+ }
272
+ /**
273
+ * Handle incoming WebSocket message
274
+ */
275
+ handleMessage(data) {
276
+ this.stats.messagesReceived++;
277
+ try {
278
+ const frame = JSON.parse(data);
279
+ if (isOpenClawResponse(frame)) {
280
+ this.handleResponse(frame);
281
+ }
282
+ else if (isOpenClawEvent(frame)) {
283
+ this.handleEvent(frame);
284
+ }
285
+ else {
286
+ this.logger.warn('[OpenClawClient] Unknown frame type:', frame);
287
+ }
288
+ }
289
+ catch (error) {
290
+ this.logger.error('[OpenClawClient] Failed to parse message:', error);
291
+ this.stats.errors++;
292
+ }
293
+ }
294
+ /**
295
+ * Handle response frame
296
+ */
297
+ handleResponse(frame) {
298
+ const pending = this.pendingRequests.get(frame.id);
299
+ if (pending) {
300
+ this.pendingRequests.delete(frame.id);
301
+ if (frame.ok) {
302
+ pending.resolve(frame.result);
303
+ }
304
+ else {
305
+ const error = new Error(frame.error?.message || 'Request failed');
306
+ error.code = frame.error?.code;
307
+ pending.reject(error);
308
+ }
309
+ }
310
+ else {
311
+ this.logger.warn('[OpenClawClient] Received response for unknown request:', frame.id);
312
+ }
313
+ }
314
+ /**
315
+ * Handle event frame
316
+ */
317
+ handleEvent(frame) {
318
+ this.logger.debug('[OpenClawClient] Event:', frame.event);
319
+ // Handle specific events
320
+ if (frame.event === 'authorized') {
321
+ this.setState('authorized');
322
+ this.startPingInterval();
323
+ }
324
+ // Notify listeners
325
+ const listeners = this.eventListeners.get(frame.event);
326
+ if (listeners) {
327
+ for (const listener of listeners) {
328
+ try {
329
+ listener(frame.data);
330
+ }
331
+ catch (error) {
332
+ this.logger.error('[OpenClawClient] Event listener error:', error);
333
+ }
334
+ }
335
+ }
336
+ // Notify all-event listeners
337
+ const allListeners = this.eventListeners.get('*');
338
+ if (allListeners) {
339
+ for (const listener of allListeners) {
340
+ try {
341
+ listener(frame.event, frame.data);
342
+ }
343
+ catch (error) {
344
+ this.logger.error('[OpenClawClient] All-event listener error:', error);
345
+ }
346
+ }
347
+ }
348
+ }
349
+ /**
350
+ * Handle disconnection
351
+ */
352
+ handleDisconnect(code, reason) {
353
+ // Stop ping interval
354
+ if (this.pingInterval) {
355
+ clearInterval(this.pingInterval);
356
+ this.pingInterval = null;
357
+ }
358
+ // Set state
359
+ if (this.state !== 'disconnected') {
360
+ this.setState('disconnected');
361
+ }
362
+ // Attempt reconnection
363
+ if (this.config.reconnect && this.reconnectAttempts < this.config.reconnectAttempts) {
364
+ this.scheduleReconnect();
365
+ }
366
+ }
367
+ /**
368
+ * Schedule reconnection
369
+ */
370
+ scheduleReconnect() {
371
+ if (this.reconnectTimeout) {
372
+ return;
373
+ }
374
+ this.reconnectAttempts++;
375
+ this.stats.reconnects++;
376
+ const delay = this.config.reconnectDelay * Math.pow(2, this.reconnectAttempts - 1);
377
+ const maxDelay = 30000;
378
+ const actualDelay = Math.min(delay, maxDelay);
379
+ this.logger.info(`[OpenClawClient] Scheduling reconnect attempt ${this.reconnectAttempts}/${this.config.reconnectAttempts} in ${actualDelay}ms`);
380
+ this.setState('reconnecting');
381
+ this.reconnectTimeout = setTimeout(() => {
382
+ this.reconnectTimeout = null;
383
+ this.connect().catch((error) => {
384
+ this.logger.error('[OpenClawClient] Reconnection failed:', error);
385
+ });
386
+ }, actualDelay);
387
+ }
388
+ /**
389
+ * Start ping interval for connection health
390
+ */
391
+ startPingInterval() {
392
+ this.pingInterval = setInterval(() => {
393
+ if (this.ws && this.ws.readyState === WebSocket.OPEN) {
394
+ this.ws.ping();
395
+ }
396
+ }, this.config.pingInterval);
397
+ }
398
+ /**
399
+ * Set client state
400
+ */
401
+ setState(newState) {
402
+ const previousState = this.state;
403
+ this.state = newState;
404
+ if (previousState !== newState) {
405
+ this.logger.info(`[OpenClawClient] State: ${previousState} → ${newState}`);
406
+ // Notify state listeners
407
+ for (const listener of this.stateListeners) {
408
+ try {
409
+ listener(newState, previousState);
410
+ }
411
+ catch (error) {
412
+ this.logger.error('[OpenClawClient] State listener error:', error);
413
+ }
414
+ }
415
+ }
416
+ }
417
+ /**
418
+ * Generate unique ID for requests
419
+ */
420
+ generateId() {
421
+ return `${Date.now()}-${crypto.randomBytes(4).toString('hex')}`;
422
+ }
423
+ /**
424
+ * Generate nonce for device pairing
425
+ */
426
+ generateNonce() {
427
+ return crypto.randomBytes(16).toString('base64');
428
+ }
429
+ /**
430
+ * Sign device challenge
431
+ */
432
+ signDeviceChallenge(deviceId) {
433
+ if (!this.config.deviceKeyPair) {
434
+ return '';
435
+ }
436
+ const hmac = crypto.createHmac('sha256', this.config.deviceKeyPair.privateKey);
437
+ hmac.update(deviceId);
438
+ return hmac.digest('base64');
439
+ }
440
+ }
441
+ /**
442
+ * Factory function to create client
443
+ */
444
+ export function createOpenClawClient(config) {
445
+ return new OpenClawClient(config);
446
+ }
447
+ //# sourceMappingURL=client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../../src/integrations/openclaw/client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,97 @@
1
+ /**
2
+ * OpenClaw Configuration Loader
3
+ *
4
+ * Handles loading, validation, and management of OpenClaw integration configuration.
5
+ *
6
+ * @version 1.0.0
7
+ * @since 2026-03-14
8
+ */
9
+ import { OpenClawIntegrationConfig, ConfigValidationResult } from './types.js';
10
+ /**
11
+ * Configuration loader class
12
+ */
13
+ export declare class OpenClawConfigLoader {
14
+ private config;
15
+ private configPath;
16
+ private loadedAt;
17
+ constructor(configPath?: string);
18
+ /**
19
+ * Load configuration from file with environment variable overrides
20
+ */
21
+ load(): OpenClawIntegrationConfig;
22
+ /**
23
+ * Reload configuration from file
24
+ */
25
+ reload(): OpenClawIntegrationConfig;
26
+ /**
27
+ * Get current configuration
28
+ */
29
+ getConfig(): OpenClawIntegrationConfig;
30
+ /**
31
+ * Get configuration age in milliseconds
32
+ */
33
+ getConfigAge(): number;
34
+ /**
35
+ * Check if configuration needs reload
36
+ */
37
+ needsReload(maxAgeMs?: number): boolean;
38
+ /**
39
+ * Apply environment variable overrides
40
+ */
41
+ private applyEnvironmentOverrides;
42
+ /**
43
+ * Merge user config with defaults
44
+ */
45
+ private mergeWithDefaults;
46
+ /**
47
+ * Validate configuration
48
+ */
49
+ validateConfig(config: OpenClawIntegrationConfig): ConfigValidationResult;
50
+ /**
51
+ * Get configuration file path
52
+ */
53
+ getConfigPath(): string;
54
+ /**
55
+ * Check if configuration file exists
56
+ */
57
+ configExists(): boolean;
58
+ /**
59
+ * Create sample configuration file
60
+ */
61
+ createSampleConfig(): void;
62
+ /**
63
+ * Get config for API server only
64
+ */
65
+ getAPIServerConfig(): {
66
+ enabled: boolean;
67
+ port: number;
68
+ host?: string;
69
+ apiKey?: string;
70
+ };
71
+ /**
72
+ * Get config for hooks only
73
+ */
74
+ getHooksConfig(): {
75
+ enabled: boolean;
76
+ toolBefore: boolean;
77
+ toolAfter: boolean;
78
+ includeArgs: boolean;
79
+ includeResult: boolean;
80
+ toolFilter?: string[];
81
+ };
82
+ /**
83
+ * Check if integration is enabled
84
+ */
85
+ isEnabled(): boolean;
86
+ /**
87
+ * Check if API server is enabled
88
+ */
89
+ isAPIServerEnabled(): boolean;
90
+ /**
91
+ * Check if hooks are enabled
92
+ */
93
+ areHooksEnabled(): boolean;
94
+ }
95
+ export declare const configLoader: OpenClawConfigLoader;
96
+ export declare function createConfigLoader(configPath?: string): OpenClawConfigLoader;
97
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/integrations/openclaw/config.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAKH,OAAO,EACL,yBAAyB,EACzB,sBAAsB,EAGvB,MAAM,YAAY,CAAC;AAwCpB;;GAEG;AACH,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,MAAM,CAA0C;IACxD,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,QAAQ,CAAa;gBAEjB,UAAU,CAAC,EAAE,MAAM;IAK/B;;OAEG;IACH,IAAI,IAAI,yBAAyB;IAoCjC;;OAEG;IACH,MAAM,IAAI,yBAAyB;IAMnC;;OAEG;IACH,SAAS,IAAI,yBAAyB;IAOtC;;OAEG;IACH,YAAY,IAAI,MAAM;IAKtB;;OAEG;IACH,WAAW,CAAC,QAAQ,GAAE,MAAc,GAAG,OAAO;IAI9C;;OAEG;IACH,OAAO,CAAC,yBAAyB;IA2CjC;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAqCzB;;OAEG;IACH,cAAc,CAAC,MAAM,EAAE,yBAAyB,GAAG,sBAAsB;IAkGzE;;OAEG;IACH,aAAa,IAAI,MAAM;IAIvB;;OAEG;IACH,YAAY,IAAI,OAAO;IAIvB;;OAEG;IACH,kBAAkB,IAAI,IAAI;IA0C1B;;OAEG;IACH,kBAAkB;;;;;;IAKlB;;OAEG;IACH,cAAc;;;;;;;;IAKd;;OAEG;IACH,SAAS,IAAI,OAAO;IAIpB;;OAEG;IACH,kBAAkB,IAAI,OAAO;IAI7B;;OAEG;IACH,eAAe,IAAI,OAAO;CAI3B;AAGD,eAAO,MAAM,YAAY,sBAA6B,CAAC;AAGvD,wBAAgB,kBAAkB,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,oBAAoB,CAE5E"}