@ynhcj/xiaoyi-channel 0.0.83-next → 0.0.84-next

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.
@@ -97,6 +97,7 @@ async function downloadRemoteFile(url) {
97
97
  */
98
98
  export function createSendFileToUserTool(ctx) {
99
99
  const { config, sessionId, taskId, messageId } = ctx;
100
+ console.log(`[SEND-FILE-TO-USER] 🏭 CREATE: sessionId=${sessionId} taskId=${taskId}`);
100
101
  return {
101
102
  name: "send_file_to_user",
102
103
  label: "Send File to User",
@@ -235,6 +236,7 @@ b. 操作超时时间为2分钟(120秒),请勿重复调用此工具,如
235
236
  error: { code: 0 },
236
237
  }),
237
238
  };
239
+ console.log(`[SEND-FILE-TO-USER] 🚀 EXEC sending: sessionId=${sessionId} taskId=${taskId} fileName=${fileName}`);
238
240
  // Send WebSocket message
239
241
  await wsManager.sendMessage(sessionId, agentResponse);
240
242
  console.log(`send ${fileName} file to user success`);
@@ -113,7 +113,7 @@ export class XYWebSocketManager extends EventEmitter {
113
113
  throw new Error("WebSocket not ready");
114
114
  }
115
115
  const messageStr = JSON.stringify(message);
116
- console.log(`[WS-SEND] sessionId=${sessionId} taskId=${message.taskId} msgType=${message.msgType} len=${messageStr.length}`);
116
+ this.log(`[WS-SEND] sessionId=${sessionId} taskId=${message.taskId} msgType=${message.msgType} len=${messageStr.length}`);
117
117
  this.ws.send(messageStr);
118
118
  }
119
119
  /**
@@ -299,9 +299,9 @@ export class XYWebSocketManager extends EventEmitter {
299
299
  msgDetail: JSON.stringify({ agentId: this.config.agentId }),
300
300
  };
301
301
  const initMessageStr = JSON.stringify(initMessage);
302
- console.log("[WS-SEND] Sending init message frame:", JSON.stringify(initMessage, null, 2));
302
+ this.log("[WS-SEND] Sending init message frame:", JSON.stringify(initMessage, null, 2));
303
303
  this.ws.send(initMessageStr);
304
- console.log(`[WS-SEND] Init message sent successfully, size: ${initMessageStr.length} bytes`);
304
+ this.log(`[WS-SEND] Init message sent successfully, size: ${initMessageStr.length} bytes`);
305
305
  // Mark as ready after init
306
306
  this.state.ready = true;
307
307
  this.emit("ready");
@@ -361,7 +361,7 @@ export class XYWebSocketManager extends EventEmitter {
361
361
  handleMessage(data) {
362
362
  try {
363
363
  const messageStr = data.toString();
364
- console.log(`[WS-RECV] Raw message frame, size: ${messageStr.length} characters`);
364
+ this.log(`[WS-RECV] Raw message frame, size: ${messageStr.length} characters`);
365
365
  const parsed = JSON.parse(messageStr);
366
366
  // 提取并打印消息内容(只显示 text,data 只打印提示)
367
367
  const parts = parsed.params?.message?.parts;
@@ -387,7 +387,7 @@ export class XYWebSocketManager extends EventEmitter {
387
387
  // 如果长度 > 8,显示前5个 + *** + 后5个
388
388
  maskedText = `${textContents.slice(0, 5)}***${textContents.slice(-5)}`;
389
389
  }
390
- console.log("[WS-RECV] Text:", maskedText);
390
+ this.log("[WS-RECV] Text:", maskedText);
391
391
  }
392
392
  }
393
393
  }
@@ -397,7 +397,7 @@ export class XYWebSocketManager extends EventEmitter {
397
397
  // Extract sessionId from params
398
398
  const sessionId = a2aRequest.params?.sessionId;
399
399
  if (!sessionId) {
400
- console.error("[XY] Message missing sessionId");
400
+ this.error("[XY] Message missing sessionId");
401
401
  return;
402
402
  }
403
403
  // Check if message contains only data parts (tool results)
@@ -408,10 +408,10 @@ export class XYWebSocketManager extends EventEmitter {
408
408
  for (const dataPart of dataParts) {
409
409
  const events = dataPart.data?.events;
410
410
  if (!Array.isArray(events)) {
411
- console.warn("[XY] dataPart.data.events is not an array, skipping");
411
+ this.log("[XY] dataPart.data.events is not an array, skipping");
412
412
  continue;
413
413
  }
414
- console.log(`[XY] Processing ${events.length} events from data.events`);
414
+ this.log(`[XY] Processing ${events.length} events from data.events`);
415
415
  for (const item of events) {
416
416
  if (item.header?.name === "UploadExeResult" && item.payload?.intentName) {
417
417
  const dataEvent = {
@@ -419,15 +419,15 @@ export class XYWebSocketManager extends EventEmitter {
419
419
  outputs: item.payload.outputs || {},
420
420
  status: "success",
421
421
  };
422
- console.log(`[XY] Emitting data-event, intentName: ${item.payload.intentName}, size: ${JSON.stringify(dataEvent).length} bytes`);
422
+ this.log(`[XY] Emitting data-event, intentName: ${item.payload.intentName}, size: ${JSON.stringify(dataEvent).length} bytes`);
423
423
  this.emit("data-event", dataEvent);
424
424
  }
425
425
  else if (item.header?.namespace === "ClawAgent" && item.header?.name === "InvokeJarvisGUIAgentResponse") {
426
- console.log(`[XY] Emitting gui-agent-response, size: ${JSON.stringify(item).length} bytes`);
426
+ this.log(`[XY] Emitting gui-agent-response, size: ${JSON.stringify(item).length} bytes`);
427
427
  this.emit("gui-agent-response", item);
428
428
  }
429
429
  else if (item.header?.namespace === "Common" && item.header?.name === "Trigger") {
430
- console.log("[XY] Trigger event detected, emitting trigger-event with context");
430
+ this.log("[XY] Trigger event detected, emitting trigger-event with context");
431
431
  // 传递完整上下文:event、sessionId、taskId
432
432
  this.emit("trigger-event", {
433
433
  event: item,
@@ -436,13 +436,13 @@ export class XYWebSocketManager extends EventEmitter {
436
436
  });
437
437
  }
438
438
  else if (item.header?.namespace === "AgentEvent" && item.header?.name === "ClawSelfEvolutionState") {
439
- console.log("[XY] ClawSelfEvolutionState event detected, emitting self-evolution-event");
439
+ this.log("[XY] ClawSelfEvolutionState event detected, emitting self-evolution-event");
440
440
  this.emit("self-evolution-event", {
441
441
  event: item,
442
442
  });
443
443
  }
444
444
  else if (item.header?.namespace === "AgentEvent" && item.header?.name === "ClawSelfEvolutionStateGet") {
445
- console.log("[XY] ClawSelfEvolutionStateGet event detected, emitting self-evolution-state-get-event");
445
+ this.log("[XY] ClawSelfEvolutionStateGet event detected, emitting self-evolution-state-get-event");
446
446
  this.emit("self-evolution-state-get-event", {
447
447
  event: item,
448
448
  sessionId: sessionId,
@@ -451,7 +451,7 @@ export class XYWebSocketManager extends EventEmitter {
451
451
  });
452
452
  }
453
453
  else if (item.header?.namespace === "LoginTokenEvent" && item.header?.name === "ClawAutoLogin") {
454
- console.log("[XY] LoginTokenEvent.ClawAutoLogin detected, emitting login-token-event");
454
+ this.log("[XY] LoginTokenEvent.ClawAutoLogin detected, emitting login-token-event");
455
455
  this.emit("login-token-event", {
456
456
  event: item,
457
457
  });
@@ -466,16 +466,16 @@ export class XYWebSocketManager extends EventEmitter {
466
466
  }
467
467
  // Wrapped format (InboundWebSocketMessage)
468
468
  const inboundMsg = parsed;
469
- console.log(`[XY] Message type: Wrapped, msgType: ${inboundMsg.msgType}`);
469
+ this.log(`[XY] Message type: Wrapped, msgType: ${inboundMsg.msgType}`);
470
470
  // Handle heartbeat responses
471
471
  if (inboundMsg.msgType === "heartbeat") {
472
- console.log("[XY] Received heartbeat response");
472
+ this.log("[XY] Received heartbeat response");
473
473
  this.onHealthEvent?.();
474
474
  return;
475
475
  }
476
476
  // Handle data messages
477
477
  if (inboundMsg.msgType === "data") {
478
- console.log("[XY] Processing data message");
478
+ this.log("[XY] Processing data message");
479
479
  try {
480
480
  const a2aRequest = JSON.parse(inboundMsg.msgDetail);
481
481
  const dataParts = a2aRequest.params?.message?.parts?.filter((p) => p.kind === "data");
@@ -483,10 +483,10 @@ export class XYWebSocketManager extends EventEmitter {
483
483
  for (const dataPart of dataParts) {
484
484
  const events = dataPart.data?.events;
485
485
  if (!Array.isArray(events)) {
486
- console.warn("[XY] dataPart.data.events is not an array, skipping");
486
+ this.log("[XY] dataPart.data.events is not an array, skipping");
487
487
  continue;
488
488
  }
489
- console.log(`[XY] Processing ${events.length} events from data.events`);
489
+ this.log(`[XY] Processing ${events.length} events from data.events`);
490
490
  for (const item of events) {
491
491
  if (item.header?.name === "UploadExeResult" && item.payload?.intentName) {
492
492
  const dataEvent = {
@@ -494,15 +494,15 @@ export class XYWebSocketManager extends EventEmitter {
494
494
  outputs: item.payload.outputs || {},
495
495
  status: "success",
496
496
  };
497
- console.log(`[XY] Emitting data-event, intentName: ${item.payload.intentName}, size: ${JSON.stringify(dataEvent).length} bytes`);
497
+ this.log(`[XY] Emitting data-event, intentName: ${item.payload.intentName}, size: ${JSON.stringify(dataEvent).length} bytes`);
498
498
  this.emit("data-event", dataEvent);
499
499
  }
500
500
  else if (item.header?.namespace === "ClawAgent" && item.header?.name === "InvokeJarvisGUIAgentResponse") {
501
- console.log(`[XY] Emitting gui-agent-response, size: ${JSON.stringify(item).length} bytes`);
501
+ this.log(`[XY] Emitting gui-agent-response, size: ${JSON.stringify(item).length} bytes`);
502
502
  this.emit("gui-agent-response", item);
503
503
  }
504
504
  else if (item.header?.namespace === "Common" && item.header?.name === "Trigger") {
505
- console.log("[XY] Trigger event detected (wrapped format), emitting trigger-event with context");
505
+ this.log("[XY] Trigger event detected (wrapped format), emitting trigger-event with context");
506
506
  // 传递完整上下文:event、sessionId、taskId
507
507
  this.emit("trigger-event", {
508
508
  event: item,
@@ -511,7 +511,7 @@ export class XYWebSocketManager extends EventEmitter {
511
511
  });
512
512
  }
513
513
  else if (item.header?.namespace === "LoginTokenEvent" && item.header?.name === "ClawAutoLogin") {
514
- console.log("[XY] LoginTokenEvent.ClawAutoLogin detected (wrapped format), emitting login-token-event");
514
+ this.log("[XY] LoginTokenEvent.ClawAutoLogin detected (wrapped format), emitting login-token-event");
515
515
  this.emit("login-token-event", {
516
516
  event: item,
517
517
  });
@@ -521,28 +521,28 @@ export class XYWebSocketManager extends EventEmitter {
521
521
  }
522
522
  }
523
523
  catch (error) {
524
- console.error("[XY] Failed to process data message:", error);
524
+ this.error("[XY] Failed to process data message:", error);
525
525
  }
526
526
  return;
527
527
  }
528
528
  // Parse msgDetail as A2AJsonRpcRequest
529
529
  const a2aRequest = JSON.parse(inboundMsg.msgDetail);
530
- console.log(`[XY] Parsed A2A request, method: ${a2aRequest.method}`);
530
+ this.log(`[XY] Parsed A2A request, method: ${a2aRequest.method}`);
531
531
  const sessionId = inboundMsg.sessionId;
532
- console.log(`[XY] Session ID: ${sessionId}`);
532
+ this.log(`[XY] Session ID: ${sessionId}`);
533
533
  // Emit message event
534
- console.log("[XY] *** EMITTING message event (Wrapped path) ***");
534
+ this.log("[XY] *** EMITTING message event (Wrapped path) ***");
535
535
  this.emit("message", a2aRequest, sessionId);
536
536
  }
537
537
  catch (error) {
538
- console.error("[XY] Failed to parse message:", error);
538
+ this.error("[XY] Failed to parse message:", error);
539
539
  }
540
540
  }
541
541
  /**
542
542
  * Handle connection close.
543
543
  */
544
544
  handleClose(code, reason) {
545
- console.warn(`WebSocket disconnected: code=${code}, reason=${reason}`);
545
+ this.log(`WebSocket disconnected: code=${code}, reason=${reason}`);
546
546
  // Only process if this is the current connection
547
547
  if (!this.ws) {
548
548
  this.log("Ignoring close event for already cleaned connection");
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ynhcj/xiaoyi-channel",
3
- "version": "0.0.83-next",
3
+ "version": "0.0.84-next",
4
4
  "description": "OpenClaw Xiaoyi Channel plugin - Xiaoyi A2A protocol integration",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",