@zhin.js/adapter-icqq 6.0.1 → 6.0.2

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 (149) hide show
  1. package/CHANGELOG.md +19 -0
  2. package/README.md +1 -1
  3. package/agent/tools/announce.ts +21 -0
  4. package/agent/tools/essence.ts +22 -0
  5. package/agent/tools/friend_list.ts +19 -0
  6. package/agent/tools/group_files.ts +27 -0
  7. package/agent/tools/group_invite.ts +20 -0
  8. package/agent/tools/group_list.ts +20 -0
  9. package/agent/tools/group_sign.ts +19 -0
  10. package/agent/tools/list_muted.ts +22 -0
  11. package/agent/tools/poke.ts +20 -0
  12. package/agent/tools/send_user_like.ts +22 -0
  13. package/agent/tools/set_anonymous.ts +22 -0
  14. package/agent/tools/set_title.ts +25 -0
  15. package/lib/agent/tools/announce.js +21 -0
  16. package/lib/agent/tools/announce.js.map +1 -0
  17. package/lib/agent/tools/essence.js +22 -0
  18. package/lib/agent/tools/essence.js.map +1 -0
  19. package/lib/agent/tools/friend_list.js +19 -0
  20. package/lib/agent/tools/friend_list.js.map +1 -0
  21. package/lib/agent/tools/group_files.js +29 -0
  22. package/lib/agent/tools/group_files.js.map +1 -0
  23. package/lib/agent/tools/group_invite.js +20 -0
  24. package/lib/agent/tools/group_invite.js.map +1 -0
  25. package/lib/agent/tools/group_list.js +20 -0
  26. package/lib/agent/tools/group_list.js.map +1 -0
  27. package/lib/agent/tools/group_sign.js +19 -0
  28. package/lib/agent/tools/group_sign.js.map +1 -0
  29. package/lib/agent/tools/list_muted.js +23 -0
  30. package/lib/agent/tools/list_muted.js.map +1 -0
  31. package/lib/agent/tools/poke.js +20 -0
  32. package/lib/agent/tools/poke.js.map +1 -0
  33. package/lib/agent/tools/send_user_like.js +22 -0
  34. package/lib/agent/tools/send_user_like.js.map +1 -0
  35. package/lib/agent/tools/set_anonymous.js +22 -0
  36. package/lib/agent/tools/set_anonymous.js.map +1 -0
  37. package/lib/agent/tools/set_title.js +25 -0
  38. package/lib/agent/tools/set_title.js.map +1 -0
  39. package/lib/src/adapter.js.map +1 -0
  40. package/lib/src/agent-prompt.js.map +1 -0
  41. package/lib/src/cq-message.js.map +1 -0
  42. package/lib/{endpoint.js → src/endpoint.js} +21 -20
  43. package/lib/src/endpoint.js.map +1 -0
  44. package/lib/{forward-msg.js → src/forward-msg.js} +4 -1
  45. package/lib/src/forward-msg.js.map +1 -0
  46. package/lib/src/get-msg.js.map +1 -0
  47. package/lib/src/icqq-agent-deps.js +10 -0
  48. package/lib/src/icqq-agent-deps.js.map +1 -0
  49. package/lib/src/icqq-guild.js.map +1 -0
  50. package/lib/src/icqq-inbound.js.map +1 -0
  51. package/lib/src/icqq-login-assist-bridge.js.map +1 -0
  52. package/lib/{icqq-side-events.js → src/icqq-side-events.js} +28 -92
  53. package/lib/src/icqq-side-events.js.map +1 -0
  54. package/lib/src/index.js.map +1 -0
  55. package/lib/src/ipc-client.js.map +1 -0
  56. package/lib/src/login-assist-routes.js.map +1 -0
  57. package/lib/src/login-ipc-contract.js.map +1 -0
  58. package/lib/src/outbound-media.js.map +1 -0
  59. package/lib/src/protocol.js.map +1 -0
  60. package/lib/src/routes.js.map +1 -0
  61. package/lib/src/segment-mapper.js.map +1 -0
  62. package/lib/src/tools/index.js +23 -0
  63. package/lib/src/tools/index.js.map +1 -0
  64. package/lib/src/types.js.map +1 -0
  65. package/package.json +23 -19
  66. package/src/agent-prompt.ts +1 -2
  67. package/src/endpoint.ts +21 -33
  68. package/src/forward-msg.ts +2 -2
  69. package/src/icqq-agent-deps.ts +18 -0
  70. package/src/icqq-side-events.ts +33 -118
  71. package/src/tools/index.ts +14 -395
  72. package/lib/adapter.d.ts +0 -46
  73. package/lib/adapter.d.ts.map +0 -1
  74. package/lib/adapter.js.map +0 -1
  75. package/lib/agent-prompt.d.ts +0 -3
  76. package/lib/agent-prompt.d.ts.map +0 -1
  77. package/lib/agent-prompt.js.map +0 -1
  78. package/lib/cq-message.d.ts +0 -10
  79. package/lib/cq-message.d.ts.map +0 -1
  80. package/lib/cq-message.js.map +0 -1
  81. package/lib/endpoint.d.ts +0 -103
  82. package/lib/endpoint.d.ts.map +0 -1
  83. package/lib/endpoint.js.map +0 -1
  84. package/lib/forward-msg.d.ts +0 -27
  85. package/lib/forward-msg.d.ts.map +0 -1
  86. package/lib/forward-msg.js.map +0 -1
  87. package/lib/get-msg.d.ts +0 -3
  88. package/lib/get-msg.d.ts.map +0 -1
  89. package/lib/get-msg.js.map +0 -1
  90. package/lib/icqq-guild.d.ts +0 -48
  91. package/lib/icqq-guild.d.ts.map +0 -1
  92. package/lib/icqq-guild.js.map +0 -1
  93. package/lib/icqq-inbound.d.ts +0 -130
  94. package/lib/icqq-inbound.d.ts.map +0 -1
  95. package/lib/icqq-inbound.js.map +0 -1
  96. package/lib/icqq-login-assist-bridge.d.ts +0 -5
  97. package/lib/icqq-login-assist-bridge.d.ts.map +0 -1
  98. package/lib/icqq-login-assist-bridge.js.map +0 -1
  99. package/lib/icqq-side-events.d.ts +0 -34
  100. package/lib/icqq-side-events.d.ts.map +0 -1
  101. package/lib/icqq-side-events.js.map +0 -1
  102. package/lib/index.d.ts +0 -18
  103. package/lib/index.d.ts.map +0 -1
  104. package/lib/index.js.map +0 -1
  105. package/lib/ipc-client.d.ts +0 -74
  106. package/lib/ipc-client.d.ts.map +0 -1
  107. package/lib/ipc-client.js.map +0 -1
  108. package/lib/login-assist-routes.d.ts +0 -7
  109. package/lib/login-assist-routes.d.ts.map +0 -1
  110. package/lib/login-assist-routes.js.map +0 -1
  111. package/lib/login-ipc-contract.d.ts +0 -44
  112. package/lib/login-ipc-contract.d.ts.map +0 -1
  113. package/lib/login-ipc-contract.js.map +0 -1
  114. package/lib/outbound-media.d.ts +0 -14
  115. package/lib/outbound-media.d.ts.map +0 -1
  116. package/lib/outbound-media.js.map +0 -1
  117. package/lib/protocol.d.ts +0 -198
  118. package/lib/protocol.d.ts.map +0 -1
  119. package/lib/protocol.js.map +0 -1
  120. package/lib/routes.d.ts +0 -8
  121. package/lib/routes.d.ts.map +0 -1
  122. package/lib/routes.js.map +0 -1
  123. package/lib/segment-mapper.d.ts +0 -2
  124. package/lib/segment-mapper.d.ts.map +0 -1
  125. package/lib/segment-mapper.js.map +0 -1
  126. package/lib/tools/index.d.ts +0 -10
  127. package/lib/tools/index.d.ts.map +0 -1
  128. package/lib/tools/index.js +0 -341
  129. package/lib/tools/index.js.map +0 -1
  130. package/lib/types.d.ts +0 -73
  131. package/lib/types.d.ts.map +0 -1
  132. package/lib/types.js.map +0 -1
  133. /package/{skills/icqq → agent}/PERMITS.md +0 -0
  134. /package/lib/{adapter.js → src/adapter.js} +0 -0
  135. /package/lib/{agent-prompt.js → src/agent-prompt.js} +0 -0
  136. /package/lib/{cq-message.js → src/cq-message.js} +0 -0
  137. /package/lib/{get-msg.js → src/get-msg.js} +0 -0
  138. /package/lib/{icqq-guild.js → src/icqq-guild.js} +0 -0
  139. /package/lib/{icqq-inbound.js → src/icqq-inbound.js} +0 -0
  140. /package/lib/{icqq-login-assist-bridge.js → src/icqq-login-assist-bridge.js} +0 -0
  141. /package/lib/{index.js → src/index.js} +0 -0
  142. /package/lib/{ipc-client.js → src/ipc-client.js} +0 -0
  143. /package/lib/{login-assist-routes.js → src/login-assist-routes.js} +0 -0
  144. /package/lib/{login-ipc-contract.js → src/login-ipc-contract.js} +0 -0
  145. /package/lib/{outbound-media.js → src/outbound-media.js} +0 -0
  146. /package/lib/{protocol.js → src/protocol.js} +0 -0
  147. /package/lib/{routes.js → src/routes.js} +0 -0
  148. /package/lib/{segment-mapper.js → src/segment-mapper.js} +0 -0
  149. /package/lib/{types.js → src/types.js} +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"login-ipc-contract.js","sourceRoot":"","sources":["../../src/login-ipc-contract.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAgBH,mDAAmD;AACnD,MAAM,CAAC,MAAM,eAAe,GAAG;IAC7B,yDAAyD;IACzD,KAAK,EAAE,OAAO;IACd,8CAA8C;IAC9C,aAAa,EAAE,eAAe;IAC9B,4CAA4C;IAC5C,eAAe,EAAE,iBAAiB;IAClC,uCAAuC;IACvC,aAAa,EAAE,eAAe;CACtB,CAAC;AAIX,0CAA0C;AAC1C,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC/B,uCAAuC;IACvC,wCAAwC;IACxC,mCAAmC;IACnC,mCAAmC;CAC3B,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"outbound-media.js","sourceRoot":"","sources":["../../src/outbound-media.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"protocol.js","sourceRoot":"","sources":["../../src/protocol.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"routes.js","sourceRoot":"","sources":["../../src/routes.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"segment-mapper.js","sourceRoot":"","sources":["../../src/segment-mapper.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAC"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * ICQQ 场景管理工具注册
3
+ *
4
+ * 平台特有工具已迁移至 agent/tools/;本模块仅注册通用群管工具。
5
+ */
6
+ import { createSceneManagementTools } from 'zhin.js';
7
+ import { setIcqqAgentDeps } from "../icqq-agent-deps.js";
8
+ export function registerTools(toolService, icqq, pluginName) {
9
+ const disposers = [];
10
+ setIcqqAgentDeps({
11
+ getEndpoint: (endpointId) => {
12
+ const endpoint = icqq.endpoints.get(endpointId);
13
+ if (!endpoint)
14
+ throw new Error(`Endpoint ${endpointId} 不存在`);
15
+ return endpoint;
16
+ },
17
+ getAdapter: () => icqq,
18
+ });
19
+ const sceneTools = createSceneManagementTools(icqq, "icqq");
20
+ disposers.push(...sceneTools.map((t) => toolService.addTool(t, pluginName)));
21
+ return () => disposers.forEach((d) => d());
22
+ }
23
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/tools/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,0BAA0B,EAAoB,MAAM,SAAS,CAAC;AAGvE,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAEzD,MAAM,UAAU,aAAa,CAC3B,WAAwB,EACxB,IAAiB,EACjB,UAAkB;IAElB,MAAM,SAAS,GAAmB,EAAE,CAAC;IAErC,gBAAgB,CAAC;QACf,WAAW,EAAE,CAAC,UAAU,EAAE,EAAE;YAC1B,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;YAChD,IAAI,CAAC,QAAQ;gBAAE,MAAM,IAAI,KAAK,CAAC,YAAY,UAAU,MAAM,CAAC,CAAC;YAC7D,OAAO,QAAQ,CAAC;QAClB,CAAC;QACD,UAAU,EAAE,GAAG,EAAE,CAAC,IAAI;KACvB,CAAC,CAAC;IAEH,MAAM,UAAU,GAAG,0BAA0B,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAC5D,SAAS,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC;IAE7E,OAAO,GAAG,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;AAC7C,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zhin.js/adapter-icqq",
3
- "version": "6.0.1",
3
+ "version": "6.0.2",
4
4
  "description": "Zhin.js adapter for ICQQ (QQ Bot)",
5
5
  "type": "module",
6
6
  "main": "./lib/index.js",
@@ -38,12 +38,11 @@
38
38
  "lib",
39
39
  "client",
40
40
  "dist",
41
- "skills",
42
41
  "plugin.yml",
43
42
  "README.md",
44
- "CHANGELOG.md"
43
+ "CHANGELOG.md",
44
+ "agent"
45
45
  ],
46
- "dependencies": {},
47
46
  "devDependencies": {
48
47
  "@radix-ui/themes": "^3.2.1",
49
48
  "@types/react": "^19.2.17",
@@ -51,23 +50,25 @@
51
50
  "lucide-react": "^1.22.0",
52
51
  "radix-ui": "^1.6.2",
53
52
  "typescript": "^6.0.3",
54
- "@zhin.js/agent": "1.0.2",
55
- "@zhin.js/cli": "1.0.92",
56
- "@zhin.js/client": "2.0.4",
57
- "@zhin.js/contract": "1.0.2",
58
- "@zhin.js/core": "1.3.3",
59
- "@zhin.js/host-api": "2.0.4",
60
- "@zhin.js/host-router": "2.0.2",
61
- "zhin.js": "4.1.1"
53
+ "zod": "^4.4.3",
54
+ "@zhin.js/agent": "1.0.3",
55
+ "@zhin.js/cli": "1.0.93",
56
+ "@zhin.js/client": "2.0.5",
57
+ "@zhin.js/contract": "1.0.3",
58
+ "@zhin.js/core": "1.3.4",
59
+ "@zhin.js/host-api": "2.0.5",
60
+ "@zhin.js/host-router": "2.0.3",
61
+ "zhin.js": "4.1.2"
62
62
  },
63
63
  "peerDependencies": {
64
- "@zhin.js/agent": "1.0.2",
65
- "@zhin.js/client": "2.0.4",
66
- "@zhin.js/host-api": "2.0.4",
67
- "@zhin.js/contract": "1.0.2",
68
- "@zhin.js/core": "1.3.3",
69
- "@zhin.js/host-router": "2.0.2",
70
- "zhin.js": "4.1.1"
64
+ "zod": "^4.0.0",
65
+ "@zhin.js/agent": "1.0.3",
66
+ "@zhin.js/client": "2.0.5",
67
+ "@zhin.js/host-api": "2.0.5",
68
+ "@zhin.js/contract": "1.0.3",
69
+ "@zhin.js/core": "1.3.4",
70
+ "@zhin.js/host-router": "2.0.3",
71
+ "zhin.js": "4.1.2"
71
72
  },
72
73
  "peerDependenciesMeta": {
73
74
  "@zhin.js/agent": {
@@ -81,6 +82,9 @@
81
82
  },
82
83
  "@zhin.js/host-api": {
83
84
  "optional": true
85
+ },
86
+ "zod": {
87
+ "optional": true
84
88
  }
85
89
  },
86
90
  "publishConfig": {
@@ -4,8 +4,7 @@ import type {
4
4
  AgentPromptSection,
5
5
  DeferredToolCatalogItem,
6
6
  } from 'zhin.js';
7
- import type { AgentTool } from 'zhin.js/ai';
8
- import { filterTools } from 'zhin.js/ai';
7
+ import { filterTools, type AgentTool } from 'zhin.js/ai';
9
8
 
10
9
  function isIcqqDelegatedTask(query: string, goal: string): boolean {
11
10
  const text = `${query} ${goal}`;
package/src/endpoint.ts CHANGED
@@ -4,7 +4,7 @@
4
4
  * 不再直接依赖 @icqqjs/icqq 协议库。
5
5
  * 登录由 `icqq login` 完成,本 Endpoint 只负责连接守护进程并收发消息。
6
6
  */
7
- import { formatCompact, Endpoint, Message, segment, SendContent, SendOptions, expandInteractiveSegmentsInContent, type QuotedMessagePayload,} from 'zhin.js';
7
+ import { formatCompact, Endpoint, Message, segment, SendContent, SendOptions, expandInteractiveSegmentsInContent, resolveSideEventDedupeKey, type QuotedMessagePayload,} from 'zhin.js';
8
8
  import type {
9
9
  IcqqEndpointConfig,
10
10
  IcqqSenderInfo,
@@ -14,20 +14,9 @@ import type {
14
14
  } from "./types.js";
15
15
  import type { IcqqAdapter } from "./adapter.js";
16
16
  import { IpcClient } from "./ipc-client.js";
17
- import { Actions, type IpcEvent } from "./protocol.js";
18
- import type { IcqqIpcMessageEvent } from "./icqq-inbound.js";
19
- import {
20
- findIcqqNestedMessageSource,
21
- InboundMessageDeduper,
22
- isIcqqMessagePostType,
23
- normalizeIcqqInboundMessage,
24
- quotedPayloadFromIcqqSource,
25
- resolveIcqqQuoteIdFromEvent,
26
- resolveQuoteIdFromIcqqSource,
27
- shouldSkipSelfInboundMessage,
28
- unwrapIcqqIpcEventPayload,
29
- type NormalizedIcqqInbound,
30
- } from "./icqq-inbound.js";
17
+ import { Actions, type IpcEvent, type IpcGuildMessageEventData } from './protocol.js';
18
+ import { findIcqqNestedMessageSource, InboundMessageDeduper, isIcqqMessagePostType, normalizeIcqqInboundMessage, quotedPayloadFromIcqqSource, resolveIcqqQuoteIdFromEvent, resolveQuoteIdFromIcqqSource, shouldSkipSelfInboundMessage, unwrapIcqqIpcEventPayload, type IcqqIpcMessageEvent, type NormalizedIcqqInbound } from './icqq-inbound.js';
19
+
31
20
  import {
32
21
  buildIcqqIpcMessage as buildIcqqIpcMessageImpl,
33
22
  parseCqMessage as parseCqMessageImpl,
@@ -45,7 +34,6 @@ import {
45
34
  isIcqqNoticePayload,
46
35
  isIcqqRequestPayload,
47
36
  resolveIcqqEventPostType,
48
- resolveSideEventDedupeKey,
49
37
  shouldRefreshListsOnMeta,
50
38
  type IcqqIpcRawEvent,
51
39
  } from "./icqq-side-events.js";
@@ -61,7 +49,6 @@ import {
61
49
  normalizeIcqqGuildInboundMessage,
62
50
  type NormalizedIcqqGuildInbound,
63
51
  } from "./icqq-guild.js";
64
- import type { IpcGuildMessageEventData } from "./protocol.js";
65
52
 
66
53
  export class IcqqEndpoint implements Endpoint<IcqqEndpointConfig, IcqqIpcMessageEvent> {
67
54
  $connected = false;
@@ -115,7 +102,7 @@ export class IcqqEndpoint implements Endpoint<IcqqEndpointConfig, IcqqIpcMessage
115
102
 
116
103
  await this.rebindIpcSession();
117
104
 
118
- this.logger.info(formatCompact( {
105
+ this.logger.debug(formatCompact( {
119
106
  机器人: this.$id,
120
107
  好友数: this.friends.size,
121
108
  群组数: this.groups.size,
@@ -192,7 +179,7 @@ export class IcqqEndpoint implements Endpoint<IcqqEndpointConfig, IcqqIpcMessage
192
179
 
193
180
  try {
194
181
  await this.rebindIpcSession();
195
- this.logger.info(formatCompact( {
182
+ this.logger.debug(formatCompact( {
196
183
  op: "reconnect",
197
184
  endpoint: this.$id,
198
185
  friends: this.friends.size,
@@ -270,7 +257,7 @@ export class IcqqEndpoint implements Endpoint<IcqqEndpointConfig, IcqqIpcMessage
270
257
  disposeIcqqLoginAssistBridge(this.$id);
271
258
  this.ipc?.close();
272
259
  this.$connected = false;
273
- this.logger.info(formatCompact( { op: "disconnect", endpoint: this.$id }));
260
+ this.logger.debug(formatCompact( { op: "disconnect", endpoint: this.$id }));
274
261
  }
275
262
 
276
263
  // ── 消息处理 ───────────────────────────────────────────────────────
@@ -348,7 +335,7 @@ export class IcqqEndpoint implements Endpoint<IcqqEndpointConfig, IcqqIpcMessage
348
335
 
349
336
  if (shouldSkipSelfInboundMessage(data)) {
350
337
  if (process.env.ICQQ_IPC_LOG_RAW === "1") {
351
- this.logger.info(formatCompact({ ipc_skip: "self_message" }));
338
+ this.logger.debug(formatCompact({ ipc_skip: "self_message" }));
352
339
  }
353
340
  return;
354
341
  }
@@ -356,7 +343,7 @@ export class IcqqEndpoint implements Endpoint<IcqqEndpointConfig, IcqqIpcMessage
356
343
  const normalized = normalizeIcqqInboundMessage(data);
357
344
  if (!normalized) {
358
345
  if (process.env.ICQQ_IPC_LOG_RAW === "1") {
359
- this.logger.info(formatCompact({ ipc_skip: "normalize_failed" }));
346
+ this.logger.debug(formatCompact({ ipc_skip: "normalize_failed" }));
360
347
  }
361
348
  return;
362
349
  }
@@ -468,18 +455,17 @@ export class IcqqEndpoint implements Endpoint<IcqqEndpointConfig, IcqqIpcMessage
468
455
  const dedupeKey = resolveSideEventDedupeKey(event, "notice");
469
456
  if (!this.inboundDeduper.shouldProcess(dedupeKey)) {
470
457
  if (process.env.ICQQ_IPC_LOG_RAW === "1") {
471
- this.logger.info(formatCompact({ ipc_dedupe: dedupeKey }));
458
+ this.logger.debug(formatCompact({ ipc_dedupe: dedupeKey }));
472
459
  }
473
460
  return;
474
461
  }
475
462
  const notice = formatIcqqNotice(event, this.$config.name);
476
463
  this.adapter.emit("notice.receive", notice);
477
- this.logger.info(
464
+ this.logger.debug(
478
465
  formatCompact({
479
- notice: notice.$type,
480
- channel: `${notice.$channel.type}(${notice.$channel.id})`,
466
+ notice: `${notice.$type}.${notice.$scene_type}.${notice.$sub_type}`,
467
+ scene: `${notice.$scene_type}(${notice.$scene_id})`,
481
468
  endpoint: this.$id,
482
- sub_type: notice.$subType,
483
469
  }),
484
470
  );
485
471
  }
@@ -488,24 +474,26 @@ export class IcqqEndpoint implements Endpoint<IcqqEndpointConfig, IcqqIpcMessage
488
474
  const dedupeKey = resolveSideEventDedupeKey(event, "request");
489
475
  if (!this.inboundDeduper.shouldProcess(dedupeKey)) {
490
476
  if (process.env.ICQQ_IPC_LOG_RAW === "1") {
491
- this.logger.info(formatCompact({ ipc_dedupe: dedupeKey }));
477
+ this.logger.debug(formatCompact({ ipc_dedupe: dedupeKey }));
492
478
  }
493
479
  return;
494
480
  }
495
481
  const request = formatIcqqRequest(event, this.$config.name, this.ipc);
496
482
  this.adapter.emit("request.receive", request);
497
- this.logger.info(
483
+ this.logger.debug(
498
484
  formatCompact({
499
- request: request.$type,
500
- channel: `${request.$channel.type}(${request.$channel.id})`,
485
+ request: `${request.$type}.${request.$scene_type}.${request.$sub_type}`,
486
+ scene: `${request.$scene_type}(${request.$scene_id})`,
501
487
  endpoint: this.$id,
502
- from: request.$sender.id,
488
+ from: request.$actor.id,
503
489
  }),
504
490
  );
505
491
  }
506
492
 
507
493
  private handleMetaEvent(event: IcqqIpcRawEvent): void {
508
- const dedupeKey = resolveSideEventDedupeKey(event, "meta");
494
+ const time = event.time ?? 0;
495
+ const kind = event.meta_event_type ?? event.post_type ?? 'meta';
496
+ const dedupeKey = `meta:${time}_${kind}_${event.sub_type ?? ''}`;
509
497
  if (!this.inboundDeduper.shouldProcess(dedupeKey)) return;
510
498
 
511
499
  this.logger.debug(formatIcqqMetaLog(event));
@@ -1,8 +1,8 @@
1
1
  /**
2
2
  * 合并转发(聊天记录)解析:从 json/xml 提取 resid,经 IPC get_forward_msg 拉取正文。
3
3
  */
4
- import type { MessageSegment, QuotedMessagePayload } from "zhin.js";
5
- import { segment } from "zhin.js";
4
+ import { segment, type MessageSegment, type QuotedMessagePayload } from 'zhin.js';
5
+
6
6
  import { Actions } from "./protocol.js";
7
7
  import type { IpcClient } from "./ipc-client.js";
8
8
  import {
@@ -0,0 +1,18 @@
1
+ import type { IcqqAdapter } from './adapter.js';
2
+ import type { IcqqEndpoint } from './endpoint.js';
3
+
4
+ export interface IcqqAgentDeps {
5
+ getEndpoint: (endpointId: string) => IcqqEndpoint;
6
+ getAdapter: () => IcqqAdapter;
7
+ }
8
+
9
+ let _deps: IcqqAgentDeps | null = null;
10
+
11
+ export function setIcqqAgentDeps(deps: IcqqAgentDeps): void {
12
+ _deps = deps;
13
+ }
14
+
15
+ export function getIcqqAgentDeps(): IcqqAgentDeps {
16
+ if (!_deps) throw new Error('icqq agent deps not initialized');
17
+ return _deps;
18
+ }
@@ -1,29 +1,12 @@
1
1
  /**
2
2
  * icqq IPC 非 message 入站:notice / request / meta(对齐 OneBot 与 @icqqjs/icqq EventMap)
3
- * @see https://icqq.pages.dev/interfaces/EventMap.html
4
3
  */
5
- import { Notice, Request, formatCompact } from "zhin.js";
6
- import type { NoticeType } from "zhin.js";
7
- import type { RequestType } from "zhin.js";
4
+ import { mapNoticeParts, mapRequestParts, resolveSideEventDedupeKey, senderFromId, buildNotice, buildRequest, formatCompact, type OneBotLikeRawEvent } from 'zhin.js';
5
+
8
6
  import { Actions } from "./protocol.js";
9
7
  import type { IpcClient } from "./ipc-client.js";
10
8
 
11
- /** OneBot / icqq 守护进程推送的通用事件字段 */
12
- export interface IcqqIpcRawEvent {
13
- post_type?: string;
14
- time?: number;
15
- self_id?: number;
16
- notice_type?: string;
17
- request_type?: string;
18
- sub_type?: string;
19
- meta_event_type?: string;
20
- group_id?: number;
21
- user_id?: number;
22
- operator_id?: number;
23
- flag?: string;
24
- comment?: string;
25
- [key: string]: unknown;
26
- }
9
+ export type IcqqIpcRawEvent = OneBotLikeRawEvent;
27
10
 
28
11
  export function resolveIcqqEventPostType(
29
12
  data: Record<string, unknown>,
@@ -54,110 +37,39 @@ export function isIcqqMetaPayload(data: unknown): data is IcqqIpcRawEvent {
54
37
  return pt === "meta_event" || (typeof pt === "string" && pt.startsWith("system."));
55
38
  }
56
39
 
57
- /** 去重用:notice / request 无稳定 id 时组合键 */
58
- export function resolveSideEventDedupeKey(
59
- data: IcqqIpcRawEvent,
60
- kind: "notice" | "request" | "meta",
61
- ): string {
62
- if (data.flag != null && String(data.flag) !== "") {
63
- return `${kind}:${data.flag}`;
64
- }
65
- const time = data.time ?? 0;
66
- const type =
67
- data.notice_type ?? data.request_type ?? data.meta_event_type ?? kind;
68
- const scope = data.group_id ?? data.user_id ?? "";
69
- const sub = data.sub_type ?? "";
70
- return `${kind}:${time}_${type}_${scope}_${sub}`;
71
- }
72
-
73
- const NOTICE_TYPE_MAP: Record<string, NoticeType> = {
74
- group_increase: "group_member_increase",
75
- group_decrease: "group_member_decrease",
76
- group_admin: "group_admin_change",
77
- group_ban: "group_ban",
78
- group_recall: "group_recall",
79
- friend_recall: "friend_recall",
80
- friend_add: "friend_add",
81
- group_upload: "group_upload",
82
- group_sign: "group_sign",
83
- group_transfer: "group_transfer",
84
- // icqq EventMap 命名 → Zhin NoticeType
85
- "group.increase": "group_member_increase",
86
- "group.decrease": "group_member_decrease",
87
- "group.admin": "group_admin_change",
88
- "group.ban": "group_ban",
89
- "group.recall": "group_recall",
90
- "friend.increase": "friend_add",
91
- "friend.decrease": "friend_recall",
92
- "friend.recall": "friend_recall",
93
- };
94
-
95
- function resolveNoticeZhinType(event: IcqqIpcRawEvent): NoticeType {
96
- const raw = event.notice_type ?? "";
97
- if (NOTICE_TYPE_MAP[raw]) return NOTICE_TYPE_MAP[raw];
98
- if (raw === "notify") {
99
- if (event.sub_type === "poke") {
100
- return event.group_id != null ? "group_poke" : "friend_poke";
101
- }
102
- return `notify_${event.sub_type ?? "unknown"}` as NoticeType;
103
- }
104
- if (raw.startsWith("notice.")) {
105
- const suffix = raw.slice("notice.".length).replace(/\./g, "_");
106
- return (NOTICE_TYPE_MAP[suffix] ?? suffix) as NoticeType;
107
- }
108
- return raw as NoticeType;
109
- }
110
-
111
- function senderFromId(id: unknown, name?: string) {
112
- if (id == null) return undefined;
113
- const s = String(id);
114
- return { id: s, name: name ?? s };
115
- }
116
-
117
40
  export function formatIcqqNotice(
118
41
  event: IcqqIpcRawEvent,
119
42
  endpointName: string,
120
- ): ReturnType<typeof Notice.from<IcqqIpcRawEvent>> {
121
- const $type = resolveNoticeZhinType(event);
43
+ ) {
44
+ const raw = event.notice_type ?? "";
122
45
  const isGroup = event.group_id != null;
123
- const channelId = String(
46
+ const { scene_type, sub_type } = mapNoticeParts('icqq', raw, { sub_type: event.sub_type, is_group: isGroup });
47
+ const sceneId = String(
124
48
  event.group_id ?? event.user_id ?? event.operator_id ?? "",
125
49
  );
126
50
  const tsSec = event.time ?? Math.floor(Date.now() / 1000);
127
51
 
128
- return Notice.from(event, {
52
+ return buildNotice(event, {
129
53
  $id: resolveSideEventDedupeKey(event, "notice"),
130
54
  $adapter: "icqq",
131
55
  $endpoint: endpointName,
132
- $type,
133
- $subType: event.sub_type,
134
- $channel: {
135
- id: channelId,
136
- type: isGroup ? "group" : "private",
137
- },
138
- $operator: senderFromId(event.operator_id),
56
+ $type: "notice",
57
+ $scene_id: sceneId,
58
+ $scene_type: scene_type,
59
+ $sub_type: sub_type,
60
+ $actor: senderFromId(event.operator_id),
139
61
  $target: senderFromId(event.user_id),
140
62
  $timestamp: tsSec * 1000,
141
63
  });
142
64
  }
143
65
 
144
- function resolveRequestZhinType(event: IcqqIpcRawEvent): RequestType {
145
- const rt = event.request_type ?? "";
146
- if (rt === "friend" || rt.startsWith("friend")) return "friend_add";
147
- if (rt === "group" || rt.startsWith("group")) {
148
- return event.sub_type === "invite" ? "group_invite" : "group_add";
149
- }
150
- return rt as RequestType;
151
- }
152
-
153
66
  export function formatIcqqRequest(
154
67
  event: IcqqIpcRawEvent,
155
68
  endpointName: string,
156
69
  ipc: IpcClient,
157
- ): ReturnType<typeof Request.from<IcqqIpcRawEvent>> {
158
- const $type = resolveRequestZhinType(event);
159
- const isGroup = event.group_id != null;
160
- const channelId = String(event.group_id ?? event.user_id ?? "");
70
+ ) {
71
+ const { scene_type, sub_type } = mapRequestParts('icqq', event.request_type ?? '', event.sub_type);
72
+ const sceneId = String(event.group_id ?? event.user_id ?? "");
161
73
  const tsSec = event.time ?? Math.floor(Date.now() / 1000);
162
74
  const flag = event.flag ?? resolveSideEventDedupeKey(event, "request");
163
75
 
@@ -166,18 +78,16 @@ export function formatIcqqRequest(
166
78
  (typeof event.request_type === "string" &&
167
79
  event.request_type.startsWith("friend"));
168
80
 
169
- return Request.from(event, {
81
+ return buildRequest(event, {
170
82
  $id: String(flag),
171
83
  $adapter: "icqq",
172
84
  $endpoint: endpointName,
173
- $type,
174
- $subType: event.sub_type,
175
- $channel: {
176
- id: channelId,
177
- type: isGroup ? "group" : "private",
178
- },
179
- $sender: senderFromId(event.user_id) ?? { id: "", name: "" },
180
- $comment: event.comment,
85
+ $type: "request",
86
+ $scene_id: sceneId,
87
+ $scene_type: scene_type,
88
+ $sub_type: sub_type,
89
+ $actor: senderFromId(event.user_id) ?? { id: "", name: "" },
90
+ $comment: typeof event.comment === "string" ? event.comment : undefined,
181
91
  $timestamp: tsSec * 1000,
182
92
  $approve: async (remark?: string) => {
183
93
  const action = isFriend
@@ -208,21 +118,26 @@ export function formatIcqqRequest(
208
118
  });
209
119
  }
210
120
 
211
- /** meta_event / system.*:返回是否建议在上线后刷新好友/群列表 */
212
121
  export function shouldRefreshListsOnMeta(event: IcqqIpcRawEvent): boolean {
213
122
  if (event.meta_event_type === "lifecycle") {
214
123
  const sub = event.sub_type;
215
124
  return sub === "connect" || sub === "enable";
216
125
  }
217
- const pt = event.post_type ?? "";
126
+ const pt = String(event.post_type ?? "");
218
127
  if (pt === "system.online" || pt.endsWith(".online")) return true;
219
128
  return false;
220
129
  }
221
130
 
222
131
  export function formatIcqqMetaLog(event: IcqqIpcRawEvent): string {
132
+ const meta =
133
+ (typeof event.meta_event_type === "string" && event.meta_event_type) ||
134
+ (typeof event.post_type === "string" && event.post_type) ||
135
+ "meta";
136
+ const subType = typeof event.sub_type === "string" ? event.sub_type : undefined;
137
+ const time = typeof event.time === "number" ? event.time : undefined;
223
138
  return formatCompact({
224
- meta: event.meta_event_type ?? event.post_type ?? "meta",
225
- sub_type: event.sub_type,
226
- time: event.time,
139
+ meta,
140
+ sub_type: subType,
141
+ time,
227
142
  });
228
143
  }