@ynhcj/xiaoyi 0.0.4-beta → 0.0.5-beta

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.
@@ -21,7 +21,13 @@ export declare class XiaoYiWebSocketManager extends EventEmitter {
21
21
  private stableConnectionTimer2?;
22
22
  private static readonly STABLE_CONNECTION_THRESHOLD;
23
23
  private activeTasks;
24
+ private onHealthEvent?;
24
25
  constructor(config: XiaoYiChannelConfig);
26
+ /**
27
+ * Set health event callback to report activity to OpenClaw framework.
28
+ * This callback is invoked on heartbeat success to update lastEventAt.
29
+ */
30
+ setHealthEventCallback(callback: () => void): void;
25
31
  /**
26
32
  * Check if URL is wss + IP format (skip certificate verification)
27
33
  */
package/dist/websocket.js CHANGED
@@ -43,6 +43,14 @@ class XiaoYiWebSocketManager extends events_1.EventEmitter {
43
43
  console.log(` Server 1: ${this.config.wsUrl1}`);
44
44
  console.log(` Server 2: ${this.config.wsUrl2}`);
45
45
  }
46
+ /**
47
+ * Set health event callback to report activity to OpenClaw framework.
48
+ * This callback is invoked on heartbeat success to update lastEventAt.
49
+ */
50
+ setHealthEventCallback(callback) {
51
+ this.onHealthEvent = callback;
52
+ console.log("[WS Manager] Health event callback registered");
53
+ }
46
54
  /**
47
55
  * Check if URL is wss + IP format (skip certificate verification)
48
56
  */
@@ -185,6 +193,8 @@ class XiaoYiWebSocketManager extends events_1.EventEmitter {
185
193
  }, "server1", console.log, console.error, () => {
186
194
  // ✅ Heartbeat success callback - report health to OpenClaw
187
195
  this.emit("heartbeat", "server1");
196
+ // ✅ Report liveness to OpenClaw framework to prevent stale-socket detection
197
+ this.onHealthEvent?.();
188
198
  });
189
199
  this.setupWebSocketHandlers(this.ws1, 'server1');
190
200
  await new Promise((resolve, reject) => {
@@ -267,6 +277,8 @@ class XiaoYiWebSocketManager extends events_1.EventEmitter {
267
277
  }, "server2", console.log, console.error, () => {
268
278
  // ✅ Heartbeat success callback - report health to OpenClaw
269
279
  this.emit("heartbeat", "server2");
280
+ // ✅ Report liveness to OpenClaw framework to prevent stale-socket detection
281
+ this.onHealthEvent?.();
270
282
  });
271
283
  this.setupWebSocketHandlers(this.ws2, 'server2');
272
284
  await new Promise((resolve, reject) => {
@@ -51,10 +51,11 @@ async function monitorXYProvider(opts = {}) {
51
51
  // diagnoseAllManagers();
52
52
  // Get WebSocket manager (cached)
53
53
  const wsManager = (0, xy_client_js_1.getXYWebSocketManager)(account);
54
- // // ✅ Set health event callback for heartbeat reporting
55
- // if (trackEvent) {
56
- // wsManager.setHealthEventCallback(trackEvent);
57
- // }
54
+ // ✅ Set health event callback for heartbeat reporting
55
+ // This ensures OpenClaw's health-monitor sees activity and doesn't trigger stale-socket restarts
56
+ if (trackEvent) {
57
+ wsManager.setHealthEventCallback(trackEvent);
58
+ }
58
59
  // Track logged servers to avoid duplicate logs
59
60
  const loggedServers = new Set();
60
61
  // Track active message processing to detect duplicates
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ynhcj/xiaoyi",
3
- "version": "0.0.4-beta",
3
+ "version": "0.0.5-beta",
4
4
  "description": "XiaoYi channel plugin for OpenClaw",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",