@ynhcj/xiaoyi 2.3.8 → 2.4.0

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/dist/channel.js CHANGED
@@ -214,8 +214,8 @@ exports.xiaoyiPlugin = {
214
214
  const { getXiaoYiRuntime } = require("./runtime");
215
215
  const runtime = getXiaoYiRuntime();
216
216
  console.log(`XiaoYi: [Message Handler] Using runtime instance: ${runtime.getInstanceId()}`);
217
- // For message/stream, sessionId is ONLY in params
218
- const sessionId = message.params.sessionId;
217
+ // For message/stream, prioritize params.sessionId, fallback to top-level sessionid
218
+ const sessionId = message.params.sessionId || message.sessionid;
219
219
  // Store sessionId -> taskId mapping in runtime (use params.id as taskId)
220
220
  runtime.setTaskIdForSession(sessionId, message.params.id);
221
221
  // Get PluginRuntime from our runtime wrapper
@@ -136,7 +136,7 @@ export declare class XiaoYiWebSocketManager extends EventEmitter {
136
136
  private clearStableConnectionCheck;
137
137
  /**
138
138
  * Type guard for A2A request messages
139
- * For message/stream, sessionId MUST be in params
139
+ * sessionId can be in params OR at top level (fallback)
140
140
  */
141
141
  private isA2ARequestMessage;
142
142
  /**
package/dist/websocket.js CHANGED
@@ -361,9 +361,10 @@ class XiaoYiWebSocketManager extends events_1.EventEmitter {
361
361
  }
362
362
  // Handle regular A2A request
363
363
  if (this.isA2ARequestMessage(message)) {
364
- // Store task for potential cancellation
364
+ // Store task for potential cancellation (support both params.sessionId and top-level sessionid)
365
+ const sessionId = message.params.sessionId || message.sessionid;
365
366
  this.activeTasks.set(message.id, {
366
- sessionId: message.params.sessionId,
367
+ sessionId: sessionId,
367
368
  timestamp: Date.now(),
368
369
  });
369
370
  // Emit with server info
@@ -798,7 +799,7 @@ class XiaoYiWebSocketManager extends events_1.EventEmitter {
798
799
  }
799
800
  /**
800
801
  * Type guard for A2A request messages
801
- * For message/stream, sessionId MUST be in params
802
+ * sessionId can be in params OR at top level (fallback)
802
803
  */
803
804
  isA2ARequestMessage(data) {
804
805
  return data &&
@@ -808,8 +809,8 @@ class XiaoYiWebSocketManager extends events_1.EventEmitter {
808
809
  data.method === "message/stream" &&
809
810
  data.params &&
810
811
  typeof data.params.id === "string" &&
811
- // For message/stream, sessionId MUST be in params
812
- typeof data.params.sessionId === "string" &&
812
+ // sessionId can be in params OR at top level
813
+ (typeof data.params.sessionId === "string" || typeof data.sessionid === "string") &&
813
814
  data.params.message &&
814
815
  typeof data.params.message.role === "string" &&
815
816
  Array.isArray(data.params.message.parts);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ynhcj/xiaoyi",
3
- "version": "2.3.8",
3
+ "version": "2.4.0",
4
4
  "description": "XiaoYi channel plugin for OpenClaw",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",