@zhin.js/adapter-icqq 3.0.3 → 3.0.5

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 (62) hide show
  1. package/CHANGELOG.md +26 -0
  2. package/README.md +1 -1
  3. package/dist/index.js +1 -1
  4. package/lib/bot.d.ts +56 -12
  5. package/lib/bot.d.ts.map +1 -1
  6. package/lib/bot.js +416 -136
  7. package/lib/bot.js.map +1 -1
  8. package/lib/cq-message.d.ts +10 -0
  9. package/lib/cq-message.d.ts.map +1 -0
  10. package/lib/cq-message.js +119 -0
  11. package/lib/cq-message.js.map +1 -0
  12. package/lib/forward-msg.d.ts +27 -0
  13. package/lib/forward-msg.d.ts.map +1 -0
  14. package/lib/forward-msg.js +387 -0
  15. package/lib/forward-msg.js.map +1 -0
  16. package/lib/get-msg.d.ts +3 -0
  17. package/lib/get-msg.d.ts.map +1 -0
  18. package/lib/get-msg.js +46 -0
  19. package/lib/get-msg.js.map +1 -0
  20. package/lib/icqq-inbound.d.ts +114 -0
  21. package/lib/icqq-inbound.d.ts.map +1 -0
  22. package/lib/icqq-inbound.js +495 -0
  23. package/lib/icqq-inbound.js.map +1 -0
  24. package/lib/icqq-side-events.d.ts +34 -0
  25. package/lib/icqq-side-events.d.ts.map +1 -0
  26. package/lib/icqq-side-events.js +194 -0
  27. package/lib/icqq-side-events.js.map +1 -0
  28. package/lib/index.d.ts +2 -0
  29. package/lib/index.d.ts.map +1 -1
  30. package/lib/index.js +1 -0
  31. package/lib/index.js.map +1 -1
  32. package/lib/ipc-client.d.ts +7 -2
  33. package/lib/ipc-client.d.ts.map +1 -1
  34. package/lib/ipc-client.js +74 -16
  35. package/lib/ipc-client.js.map +1 -1
  36. package/lib/protocol.d.ts +3 -10
  37. package/lib/protocol.d.ts.map +1 -1
  38. package/lib/protocol.js +2 -0
  39. package/lib/protocol.js.map +1 -1
  40. package/lib/types.d.ts +44 -0
  41. package/lib/types.d.ts.map +1 -1
  42. package/lib/typing-indicator-example.d.ts +108 -0
  43. package/lib/typing-indicator-example.d.ts.map +1 -0
  44. package/lib/typing-indicator-example.js +220 -0
  45. package/lib/typing-indicator-example.js.map +1 -0
  46. package/lib/typing-indicator.d.ts +89 -0
  47. package/lib/typing-indicator.d.ts.map +1 -0
  48. package/lib/typing-indicator.js +237 -0
  49. package/lib/typing-indicator.js.map +1 -0
  50. package/package.json +14 -10
  51. package/src/bot.ts +524 -149
  52. package/src/cq-message.ts +120 -0
  53. package/src/forward-msg.ts +433 -0
  54. package/src/get-msg.ts +56 -0
  55. package/src/icqq-inbound.ts +616 -0
  56. package/src/icqq-side-events.ts +228 -0
  57. package/src/index.ts +8 -0
  58. package/src/ipc-client.ts +76 -16
  59. package/src/protocol.ts +4 -10
  60. package/src/types.ts +45 -0
  61. package/src/typing-indicator-example.ts +269 -0
  62. package/src/typing-indicator.ts +334 -0
package/CHANGELOG.md CHANGED
@@ -1,5 +1,31 @@
1
1
  # @zhin.js/adapter-icqq
2
2
 
3
+ ## 3.0.5
4
+
5
+ ### Patch Changes
6
+
7
+ - 6295cbd: fix: @优化
8
+ - a51d504: fix: ai 回应
9
+ - 7e14f8d: fix: 统一发个版,优化一些列安全问题
10
+ - Updated dependencies [6295cbd]
11
+ - Updated dependencies [7e14f8d]
12
+ - Updated dependencies [996ebb3]
13
+ - @zhin.js/agent@0.1.26
14
+ - @zhin.js/core@1.1.28
15
+ - @zhin.js/client@1.1.4
16
+ - zhin.js@1.0.86
17
+ - @zhin.js/console@3.0.5
18
+ - @zhin.js/http@1.0.79
19
+
20
+ ## 3.0.4
21
+
22
+ ### Patch Changes
23
+
24
+ - zhin.js@1.0.85
25
+ - @zhin.js/console@3.0.4
26
+ - @zhin.js/http@1.0.78
27
+ - @zhin.js/core@1.1.27
28
+
3
29
  ## 3.0.3
4
30
 
5
31
  ### Patch Changes
package/README.md CHANGED
@@ -384,7 +384,7 @@ onGroupMessage(async (message) => {
384
384
 
385
385
  ## icqq CLI 与 AI bash 安全
386
386
 
387
- 启用 **icqq 技能**(`skills/icqq`)时,模型通常会通过 **`bash`** 调用 `icqq …` 命令行。此时由框架 **`execSecurity` / `execAsk`** 与 **Owner 私聊指令**(`approve always bash`、`approve rule <正则>` 等)共同约束:在 `allowlist` 下,**非敏感**子命令多数可直接执行;**敏感**子命令(踢人、禁言、解散、支付等)在开启 `execAsk` 时需 Owner 确认,并可用 **正则匹配整条子命令** 做持久化放行(不必把 QQ 号写进配置)。持久化文件为数据目录下的 `owner-approve-always.json`。
387
+ 启用 **icqq 技能**(`skills/icqq`)时,模型通常会通过 **`bash`** 调用 `icqq …` 命令行。此时由框架 **`execSecurity` / `execApprovalMode`** 与 **Owner 私聊指令**(`approve always bash`、`approve rule <正则>` 等)共同约束:在 `allowlist` 下,**非敏感**子命令多数可直接执行;**敏感**子命令(踢人、禁言、解散、支付等)在 `execApprovalMode: ask` 时需 Owner 确认,并可用 **正则匹配整条子命令** 做持久化放行(不必把 QQ 号写进配置)。持久化文件为数据目录下的 `owner-approve-always.json`。
388
388
 
389
389
  完整说明与指令表见仓库文档:[docs/advanced/ai.md](../../../docs/advanced/ai.md)(锚点:`#icqq-bash-exec`、`#owner-approve-commands`)。
390
390
 
package/dist/index.js CHANGED
@@ -26,7 +26,7 @@ lucide-react/dist/esm/icons/wifi.mjs:
26
26
  lucide-react/dist/esm/icons/x.mjs:
27
27
  lucide-react/dist/esm/lucide-react.mjs:
28
28
  (**
29
- * @license lucide-react v1.16.0 - ISC
29
+ * @license lucide-react v1.17.0 - ISC
30
30
  *
31
31
  * This source code is licensed under the ISC license.
32
32
  * See the LICENSE file in the root directory of this source tree.
package/lib/bot.d.ts CHANGED
@@ -4,12 +4,15 @@
4
4
  * 不再直接依赖 @icqqjs/icqq 协议库。
5
5
  * 登录由 `icqq login` 完成,本 Bot 只负责连接守护进程并收发消息。
6
6
  */
7
- import { Bot, Message, MessageSegment, SendContent, SendOptions } from 'zhin.js';
7
+ import { Bot, Message, SendOptions, type QuotedMessagePayload } from 'zhin.js';
8
8
  import type { IcqqBotConfig, IpcFriendInfo, IpcGroupInfo } from "./types.js";
9
9
  import type { IcqqAdapter } from "./adapter.js";
10
10
  import { IpcClient } from "./ipc-client.js";
11
- import { type IpcMessageEventData } from "./protocol.js";
12
- export declare class IcqqBot implements Bot<IcqqBotConfig, IpcMessageEventData> {
11
+ import type { IcqqIpcMessageEvent } from "./icqq-inbound.js";
12
+ import { type NormalizedIcqqInbound } from "./icqq-inbound.js";
13
+ import { buildIcqqIpcMessage as buildIcqqIpcMessageImpl, parseCqMessage as parseCqMessageImpl, toCqString as toCqStringImpl } from "./cq-message.js";
14
+ import { type ICQQTypingIndicatorManager } from "./typing-indicator.js";
15
+ export declare class IcqqBot implements Bot<IcqqBotConfig, IcqqIpcMessageEvent> {
13
16
  adapter: IcqqAdapter;
14
17
  $connected: boolean;
15
18
  $config: IcqqBotConfig;
@@ -19,14 +22,25 @@ export declare class IcqqBot implements Bot<IcqqBotConfig, IpcMessageEventData>
19
22
  /** 缓存的群列表 */
20
23
  groups: Map<number, IpcGroupInfo>;
21
24
  private subscriptions;
25
+ /** 事件去重:覆盖多端回流/服务端重复推送等场景 */
26
+ private readonly inboundDeduper;
27
+ /** MessageEvent.source 解析结果,供 $getMsg 优先命中 */
28
+ private readonly quotedSourceCache;
22
29
  /** 用户主动断开时为 true,阻止自动重连 */
23
30
  private intentionalDisconnect;
24
31
  /** 是否已有重连循环在跑(避免多次 schedule 叠套) */
25
32
  private reconnectRunning;
33
+ /** Typing Indicator 管理器 */
34
+ $typingIndicator?: ICQQTypingIndicatorManager;
26
35
  get $id(): `${number}`;
27
36
  get logger(): import("zhin.js").Logger;
28
37
  constructor(adapter: IcqqAdapter, config: IcqqBotConfig);
29
38
  $connect(): Promise<void>;
39
+ /**
40
+ * 初始化 Typing Indicator
41
+ * 根据配置自动启用或禁用
42
+ */
43
+ private initTypingIndicator;
30
44
  /** 建立或恢复与守护进程的 IPC/RPC 会话(订阅、缓存列表) */
31
45
  private rebindIpcSession;
32
46
  /** IPC/RPC 意外断开时调度重连(指数退避) */
@@ -36,20 +50,50 @@ export declare class IcqqBot implements Bot<IcqqBotConfig, IpcMessageEventData>
36
50
  refreshLists(): Promise<void>;
37
51
  $disconnect(): Promise<void>;
38
52
  private handleEvent;
39
- $formatMessage(raw: IpcMessageEventData): Message<IpcMessageEventData>;
53
+ private dispatchInboundMessage;
54
+ private handleNoticeEvent;
55
+ private handleRequestEvent;
56
+ private handleMetaEvent;
57
+ /** 调试 IPC 入站字段:默认 debug;设 ICQQ_IPC_LOG_RAW=1 则 info 打完整 payload */
58
+ private logIpcInboundPayload;
59
+ $formatMessage(input: NormalizedIcqqInbound | IcqqIpcMessageEvent): ReturnType<typeof Message.from<IcqqIpcMessageEvent>>;
60
+ /**
61
+ * 有 source.message_id 时用 get_msg 拉全量正文;否则仅用 source 内联摘要。
62
+ */
63
+ private primeQuotedSourceCache;
64
+ private fetchQuotedMessagePayload;
65
+ $getMsg(messageId: string): Promise<QuotedMessagePayload>;
40
66
  $recallMessage(id: string): Promise<void>;
41
67
  $sendMessage(options: SendOptions): Promise<string>;
42
- }
43
- export declare namespace IcqqBot {
44
68
  /**
45
- * CQ 码原始消息字符串解析为 MessageSegment 数组。
46
- * 格式: `[type:value]` 或纯文本
69
+ * 表情符号到 reaction id 的映射
70
+ * QQ 使用数字 ID 来标识表情,而不是 Unicode 字符
47
71
  */
48
- function parseCqMessage(raw: string): MessageSegment[];
72
+ private static readonly EMOJI_MAP;
49
73
  /**
50
- * SendContent(MessageSegment[] 或字符串)转为 CQ 码字符串。
51
- * 守护进程使用 CQ 码字符串格式收发消息。
74
+ * 将表情符号转换为 reaction id
52
75
  */
53
- function toCqString(content: SendContent): string;
76
+ private getEmojiId;
77
+ /**
78
+ * 添加消息回应(表情)
79
+ *
80
+ * @param messageId - 消息 ID
81
+ * @param emoji - 表情符号或 reaction id
82
+ * @returns 反应 ID,可用于后续移除
83
+ */
84
+ $addReaction(messageId: string, emoji: string): Promise<string | null>;
85
+ /**
86
+ * 移除消息回应
87
+ *
88
+ * @param messageId - 消息 ID
89
+ * @param reactionId - 反应 ID(由 $addReaction 返回)
90
+ */
91
+ $removeReaction(messageId: string, reactionId: string): Promise<void>;
92
+ }
93
+ /** @deprecated 使用 `./cq-message.js` 导出 */
94
+ export declare namespace IcqqBot {
95
+ const parseCqMessage: typeof parseCqMessageImpl;
96
+ const buildIcqqIpcMessage: typeof buildIcqqIpcMessageImpl;
97
+ const toCqString: typeof toCqStringImpl;
54
98
  }
55
99
  //# sourceMappingURL=bot.d.ts.map
package/lib/bot.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"bot.d.ts","sourceRoot":"","sources":["../src/bot.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAiB,GAAG,EAAE,OAAO,EAAE,cAAc,EAAW,WAAW,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AACzG,OAAO,KAAK,EACV,aAAa,EAEb,aAAa,EACb,YAAY,EAEb,MAAM,YAAY,CAAC;AACpB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAEL,KAAK,mBAAmB,EAEzB,MAAM,eAAe,CAAC;AAEvB,qBAAa,OAAQ,YAAW,GAAG,CAAC,aAAa,EAAE,mBAAmB,CAAC;IAyB5D,OAAO,EAAE,WAAW;IAxB7B,UAAU,UAAS;IACnB,OAAO,EAAE,aAAa,CAAC;IACvB,GAAG,EAAG,SAAS,CAAC;IAEhB,cAAc;IACd,OAAO,6BAAoC;IAC3C,aAAa;IACb,MAAM,4BAAmC;IAEzC,OAAO,CAAC,aAAa,CAAmD;IACxE,2BAA2B;IAC3B,OAAO,CAAC,qBAAqB,CAAS;IACtC,mCAAmC;IACnC,OAAO,CAAC,gBAAgB,CAAS;IAEjC,IAAI,GAAG,gBAEN;IAED,IAAI,MAAM,6BAET;gBAGQ,OAAO,EAAE,WAAW,EAC3B,MAAM,EAAE,aAAa;IAOjB,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAoB/B,sCAAsC;YACxB,gBAAgB;IAiD9B,8BAA8B;IAC9B,OAAO,CAAC,iBAAiB;YAQX,gBAAgB;IA0C9B,iBAAiB;IACX,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IAuB7B,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC;IAclC,OAAO,CAAC,WAAW;IAWnB,cAAc,CAAC,GAAG,EAAE,mBAAmB;IAwDjC,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAgBzC,YAAY,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC;CAgC1D;AAID,yBAAiB,OAAO,CAAC;IACvB;;;OAGG;IACH,SAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,cAAc,EAAE,CA6D5D;IAED;;;OAGG;IACH,SAAgB,UAAU,CAAC,OAAO,EAAE,WAAW,GAAG,MAAM,CA+BvD;CACF"}
1
+ {"version":3,"file":"bot.d.ts","sourceRoot":"","sources":["../src/bot.ts"],"names":[],"mappings":"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"}