palz-connector 1.3.6 → 1.3.7

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.
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "id": "palz-connector",
3
3
  "name": "Palz Connector Channel",
4
- "version": "1.3.6",
4
+ "version": "1.3.7",
5
5
  "description": "Palz IM 接入 OpenClaw",
6
6
  "channels": [
7
7
  "palz-connector"
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "palz-connector",
3
- "version": "1.3.6",
3
+ "version": "1.3.7",
4
4
  "type": "module",
5
5
  "main": "index.ts",
6
6
  "description": "Palz IM 接入 OpenClaw — 模块化架构,基于 OpenClaw Runtime 消息管道",
@@ -3,6 +3,6 @@
3
3
  "streamUrl": "ws://14.103.148.99:8090/ws/bot",
4
4
  "apiBaseUrl": "http://14.103.148.99:8090/api",
5
5
  "sessionTimeout": 1800000,
6
- "groupContextCache": true,
6
+ "groupContextCache": false,
7
7
  "showProcess": true
8
8
  }
@@ -3,6 +3,6 @@
3
3
  "streamUrl": "wss://claw-server.csaiagent.com/ws/bot",
4
4
  "apiBaseUrl": "https://claw-server.csaiagent.com/api",
5
5
  "sessionTimeout": 1800000,
6
- "groupContextCache": true,
6
+ "groupContextCache": false,
7
7
  "showProcess": true
8
8
  }
@@ -3,6 +3,6 @@
3
3
  "streamUrl": "wss://claw-server.csagentai.com/ws/bot",
4
4
  "apiBaseUrl": "https://claw-server.csagentai.com/api",
5
5
  "sessionTimeout": 1800000,
6
- "groupContextCache": true,
6
+ "groupContextCache": false,
7
7
  "showProcess": true
8
8
  }
@@ -3,6 +3,6 @@
3
3
  "streamUrl": "wss://claw-server.csjkagent.com/ws/bot",
4
4
  "apiBaseUrl": "https://claw-server.csjkagent.com/api",
5
5
  "sessionTimeout": 1800000,
6
- "groupContextCache": true,
6
+ "groupContextCache": false,
7
7
  "showProcess": true
8
8
  }
package/src/bot.ts CHANGED
@@ -394,9 +394,13 @@ async function _dispatchPalzMessageInner(params: HandlePalzMessageParams): Promi
394
394
  log(`${tag}: [group_id] resolved=${groupId ?? "(none)"} conv=${msg.conversation_id}`);
395
395
  }
396
396
 
397
- // 群聊:peerId = chat:conversation_id(整群共享 session,与 palzTo 格式一致)
398
- // DM:peerId = sender_id:conversation_id(每用户每会话独立 session)
399
- const peerId = isGroup ? `chat:${msg.conversation_id}` : `${msg.sender_id}:${msg.conversation_id}`;
397
+ // peerId 使用 4 段格式,确保 cron delivery 推断 to 时包含完整路由信息(含 lobster_id)
398
+ // 格式: {conversationType}:{senderId}:{lobsterId}:{conversationId}
399
+ // 群聊中不同用户共享 session:senderId 固定为 "_"
400
+ const lobsterId = msg.lobster_id || "";
401
+ const peerId = isGroup
402
+ ? `group:_:${lobsterId}:${msg.conversation_id}`
403
+ : `direct:${msg.sender_id}:${lobsterId}:${msg.conversation_id}`;
400
404
 
401
405
  // STEP 4: 解析媒体
402
406
  const mediaCount = Array.isArray(msg.content)
@@ -462,7 +466,7 @@ async function _dispatchPalzMessageInner(params: HandlePalzMessageParams): Promi
462
466
  // STEP 6b: 构建 inbound context
463
467
  const palzFrom = `palz:${msg.sender_id}:${msg.conversation_id}`;
464
468
  // 新格式: {conversationType}:{senderId}:{lobsterId}:{conversationId}
465
- const palzTo = `${msg.conversation_type || "direct"}:${msg.sender_id}:${msg.lobster_id || ""}:${msg.conversation_id}`;
469
+ const palzTo = `${msg.conversation_type || "direct"}:${msg.sender_id}:${lobsterId}:${msg.conversation_id}`;
466
470
 
467
471
  // 命令授权:DM 默认允许,群聊也默认允许(可后续扩展 allowlist)
468
472
  const wasMentioned = isGroup ? (msg.mentioned_bot === true) : true;
package/src/outbound.ts CHANGED
@@ -14,14 +14,14 @@ import type { ContentPart, TextContentPart, OpenAIContent } from "./types.js";
14
14
  export const palzOutbound = {
15
15
  deliveryMode: "direct" as const,
16
16
 
17
- resolveTarget: (params: { to?: string; mode?: string }) => {
17
+ resolveTarget: (params: any) => {
18
18
  const to = params.to?.trim();
19
19
  if (!to) {
20
20
  return { ok: false as const, error: new Error("Palz target is required. Format: <conversationType>:<senderId>:<lobsterId>:<conversationId>") };
21
21
  }
22
- // Must contain ":" — bare sender_id or bare conversation_id is invalid
23
- if (!to.includes(":")) {
24
- return { ok: false as const, error: new Error(`Invalid Palz target "${to}": must be <conversationType>:<senderId>:<lobsterId>:<conversationId>. A bare ID without ":" is not a valid target.`) };
22
+ const parts = to.split(":");
23
+ if (parts.length < 4 || (parts[0] !== "group" && parts[0] !== "direct")) {
24
+ return { ok: false as const, error: new Error(`Invalid Palz target "${to}": must be <conversationType>:<senderId>:<lobsterId>:<conversationId> where conversationType is "group" or "direct".`) };
25
25
  }
26
26
  return { ok: true as const, to };
27
27
  },
package/src/targets.ts CHANGED
@@ -43,7 +43,7 @@ export function parsePalzTarget(to: string): ParsedPalzTarget {
43
43
  if (parts.length >= 4 && (parts[0] === "group" || parts[0] === "direct")) {
44
44
  return {
45
45
  conversationType: parts[0],
46
- senderId: parts[1] || undefined,
46
+ senderId: (parts[1] && parts[1] !== "_") ? parts[1] : undefined,
47
47
  lobsterId: parts[2] || undefined,
48
48
  conversationId: parts.slice(3).join(":"),
49
49
  };