@zhin.js/adapter-napcat 3.0.2 → 4.0.1
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/CHANGELOG.md +41 -0
- package/README.md +43 -95
- package/adapters/napcat.ts +39 -0
- package/agent/tools/ai_tts.ts +2 -2
- package/agent/tools/del_group_notice.ts +2 -2
- package/agent/tools/delete_essence_msg.ts +2 -2
- package/agent/tools/delete_friend.ts +2 -2
- package/agent/tools/download_file.ts +2 -2
- package/agent/tools/forward_single_msg.ts +2 -2
- package/agent/tools/get_ai_characters.ts +2 -2
- package/agent/tools/get_essence_list.ts +2 -2
- package/agent/tools/get_friend_msg_history.ts +2 -2
- package/agent/tools/get_group_file_url.ts +2 -2
- package/agent/tools/get_group_info_ex.ts +2 -2
- package/agent/tools/get_group_msg_history.ts +2 -2
- package/agent/tools/get_group_notice.ts +2 -2
- package/agent/tools/get_group_root_files.ts +2 -2
- package/agent/tools/get_group_shut_list.ts +2 -2
- package/agent/tools/get_mini_app_ark.ts +2 -2
- package/agent/tools/get_user_status.ts +2 -2
- package/agent/tools/group_sign.ts +2 -2
- package/agent/tools/mark_msg_as_read.ts +2 -2
- package/agent/tools/ocr_image.ts +2 -2
- package/agent/tools/send_forward_msg.ts +2 -2
- package/agent/tools/send_group_notice.ts +2 -2
- package/agent/tools/send_like.ts +2 -2
- package/agent/tools/send_poke.ts +2 -2
- package/agent/tools/set_avatar.ts +2 -2
- package/agent/tools/set_emoji_reaction.ts +2 -2
- package/agent/tools/set_essence_msg.ts +2 -2
- package/agent/tools/set_group_portrait.ts +2 -2
- package/agent/tools/set_online_status.ts +2 -2
- package/agent/tools/set_profile.ts +2 -2
- package/agent/tools/set_signature.ts +2 -2
- package/agent/tools/set_title.ts +2 -2
- package/agent/tools/translate.ts +2 -2
- package/agent/tools/upload_group_file.ts +2 -2
- package/lib/http-endpoint.d.ts +26 -0
- package/lib/http-endpoint.js +147 -0
- package/lib/index.d.ts +11 -0
- package/lib/index.js +10 -0
- package/lib/napcat-agent-deps.d.ts +51 -0
- package/lib/napcat-agent-deps.js +33 -0
- package/lib/napcat-inbound.d.ts +28 -0
- package/lib/{src/napcat-inbound.js → napcat-inbound.js} +28 -13
- package/lib/onebot-get-msg.d.ts +14 -0
- package/lib/{src/onebot-get-msg.js → onebot-get-msg.js} +0 -1
- package/lib/protocol.d.ts +151 -0
- package/lib/protocol.js +217 -0
- package/lib/webhook.d.ts +2 -0
- package/lib/webhook.js +14 -0
- package/lib/ws-endpoint.d.ts +61 -0
- package/lib/ws-endpoint.js +357 -0
- package/lib/ws-transport.d.ts +13 -0
- package/lib/ws-transport.js +75 -0
- package/lib/ws-types.d.ts +17 -0
- package/lib/ws-types.js +1 -0
- package/lib/wss-auth.d.ts +2 -0
- package/lib/wss-auth.js +16 -0
- package/lib/wss-endpoint.d.ts +25 -0
- package/lib/wss-endpoint.js +157 -0
- package/package.json +44 -33
- package/plugin.ts +13 -0
- package/schema.json +48 -0
- package/src/http-endpoint.ts +197 -0
- package/src/index.ts +66 -81
- package/src/napcat-agent-deps.ts +81 -15
- package/src/napcat-inbound.ts +34 -10
- package/src/onebot-get-msg.ts +8 -2
- package/src/protocol.ts +373 -0
- package/src/webhook.ts +16 -0
- package/src/ws-endpoint.ts +452 -0
- package/src/ws-transport.ts +105 -0
- package/src/ws-types.ts +20 -0
- package/src/wss-auth.ts +17 -0
- package/src/wss-endpoint.ts +205 -0
- package/client/NapCatManagement.tsx +0 -113
- package/client/index.tsx +0 -11
- package/client/tsconfig.json +0 -7
- package/client/utils/api.ts +0 -30
- package/dist/index.js +0 -27
- package/lib/agent/tools/ai_tts.js +0 -21
- package/lib/agent/tools/ai_tts.js.map +0 -1
- package/lib/agent/tools/del_group_notice.js +0 -22
- package/lib/agent/tools/del_group_notice.js.map +0 -1
- package/lib/agent/tools/delete_essence_msg.js +0 -21
- package/lib/agent/tools/delete_essence_msg.js.map +0 -1
- package/lib/agent/tools/delete_friend.js +0 -20
- package/lib/agent/tools/delete_friend.js.map +0 -1
- package/lib/agent/tools/download_file.js +0 -19
- package/lib/agent/tools/download_file.js.map +0 -1
- package/lib/agent/tools/forward_single_msg.js +0 -24
- package/lib/agent/tools/forward_single_msg.js.map +0 -1
- package/lib/agent/tools/get_ai_characters.js +0 -19
- package/lib/agent/tools/get_ai_characters.js.map +0 -1
- package/lib/agent/tools/get_essence_list.js +0 -19
- package/lib/agent/tools/get_essence_list.js.map +0 -1
- package/lib/agent/tools/get_friend_msg_history.js +0 -20
- package/lib/agent/tools/get_friend_msg_history.js.map +0 -1
- package/lib/agent/tools/get_group_file_url.js +0 -21
- package/lib/agent/tools/get_group_file_url.js.map +0 -1
- package/lib/agent/tools/get_group_info_ex.js +0 -19
- package/lib/agent/tools/get_group_info_ex.js.map +0 -1
- package/lib/agent/tools/get_group_msg_history.js +0 -21
- package/lib/agent/tools/get_group_msg_history.js.map +0 -1
- package/lib/agent/tools/get_group_notice.js +0 -19
- package/lib/agent/tools/get_group_notice.js.map +0 -1
- package/lib/agent/tools/get_group_root_files.js +0 -19
- package/lib/agent/tools/get_group_root_files.js.map +0 -1
- package/lib/agent/tools/get_group_shut_list.js +0 -19
- package/lib/agent/tools/get_group_shut_list.js.map +0 -1
- package/lib/agent/tools/get_mini_app_ark.js +0 -22
- package/lib/agent/tools/get_mini_app_ark.js.map +0 -1
- package/lib/agent/tools/get_user_status.js +0 -18
- package/lib/agent/tools/get_user_status.js.map +0 -1
- package/lib/agent/tools/group_sign.js +0 -20
- package/lib/agent/tools/group_sign.js.map +0 -1
- package/lib/agent/tools/mark_msg_as_read.js +0 -19
- package/lib/agent/tools/mark_msg_as_read.js.map +0 -1
- package/lib/agent/tools/ocr_image.js +0 -18
- package/lib/agent/tools/ocr_image.js.map +0 -1
- package/lib/agent/tools/send_forward_msg.js +0 -21
- package/lib/agent/tools/send_forward_msg.js.map +0 -1
- package/lib/agent/tools/send_group_notice.js +0 -23
- package/lib/agent/tools/send_group_notice.js.map +0 -1
- package/lib/agent/tools/send_like.js +0 -20
- package/lib/agent/tools/send_like.js.map +0 -1
- package/lib/agent/tools/send_poke.js +0 -20
- package/lib/agent/tools/send_poke.js.map +0 -1
- package/lib/agent/tools/set_avatar.js +0 -19
- package/lib/agent/tools/set_avatar.js.map +0 -1
- package/lib/agent/tools/set_emoji_reaction.js +0 -20
- package/lib/agent/tools/set_emoji_reaction.js.map +0 -1
- package/lib/agent/tools/set_essence_msg.js +0 -21
- package/lib/agent/tools/set_essence_msg.js.map +0 -1
- package/lib/agent/tools/set_group_portrait.js +0 -22
- package/lib/agent/tools/set_group_portrait.js.map +0 -1
- package/lib/agent/tools/set_online_status.js +0 -20
- package/lib/agent/tools/set_online_status.js.map +0 -1
- package/lib/agent/tools/set_profile.js +0 -23
- package/lib/agent/tools/set_profile.js.map +0 -1
- package/lib/agent/tools/set_signature.js +0 -19
- package/lib/agent/tools/set_signature.js.map +0 -1
- package/lib/agent/tools/set_title.js +0 -23
- package/lib/agent/tools/set_title.js.map +0 -1
- package/lib/agent/tools/translate.js +0 -18
- package/lib/agent/tools/translate.js.map +0 -1
- package/lib/agent/tools/upload_group_file.js +0 -23
- package/lib/agent/tools/upload_group_file.js.map +0 -1
- package/lib/src/adapter.js +0 -102
- package/lib/src/adapter.js.map +0 -1
- package/lib/src/agent-prompt.js +0 -106
- package/lib/src/agent-prompt.js.map +0 -1
- package/lib/src/endpoint-base.js +0 -315
- package/lib/src/endpoint-base.js.map +0 -1
- package/lib/src/endpoint-http.js +0 -106
- package/lib/src/endpoint-http.js.map +0 -1
- package/lib/src/endpoint-ws-client.js +0 -139
- package/lib/src/endpoint-ws-client.js.map +0 -1
- package/lib/src/endpoint-ws-server.js +0 -137
- package/lib/src/endpoint-ws-server.js.map +0 -1
- package/lib/src/index.js +0 -58
- package/lib/src/index.js.map +0 -1
- package/lib/src/napcat-agent-deps.js +0 -19
- package/lib/src/napcat-agent-deps.js.map +0 -1
- package/lib/src/napcat-inbound.js.map +0 -1
- package/lib/src/onebot-get-msg.js.map +0 -1
- package/lib/src/routes.js +0 -61
- package/lib/src/routes.js.map +0 -1
- package/lib/src/segment-mapper.js +0 -2
- package/lib/src/segment-mapper.js.map +0 -1
- package/lib/src/types.js +0 -6
- package/lib/src/types.js.map +0 -1
- package/plugin.yml +0 -3
- package/src/adapter.ts +0 -109
- package/src/agent-prompt.ts +0 -115
- package/src/endpoint-base.ts +0 -362
- package/src/endpoint-http.ts +0 -95
- package/src/endpoint-ws-client.ts +0 -137
- package/src/endpoint-ws-server.ts +0 -136
- package/src/routes.ts +0 -61
- package/src/segment-mapper.ts +0 -1
- package/src/types.ts +0 -266
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,46 @@
|
|
|
1
1
|
# @zhin.js/adapter-napcat
|
|
2
2
|
|
|
3
|
+
## 4.0.1
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- cc5c94d: 约定式插件运行时迁移(breaking):插件与适配器由 `usePlugin()` / `extends Adapter` 迁移为 `definePlugin` / `defineAdapter` + `plugin.ts` + 约定目录(`adapters/`、`commands/`、`components/`、`tools/` 等)。
|
|
8
|
+
|
|
9
|
+
- 新增约定式运行时包:`@zhin.js/plugin-runtime`、`@zhin.js/adapter`、`@zhin.js/runtime`、`@zhin.js/host-http`(首版 1.0.0 走 init-publish,不在本 changeset 内 bump)。
|
|
10
|
+
- 全部 20 个平台适配器改为约定式 `defineAdapter`,旧 `usePlugin` / `extends Adapter` / `segment-mapper` 生产入口已删除;onebot11 反向 WSS、onebot12 webhook/wss、milky sse/webhook/wss、satori webhook、kook webhook、qq webhook/middleware 等 slice 1 推迟的连接模式已补齐。
|
|
11
|
+
- 游戏 / 工具 / 服务插件同步迁移到约定目录结构。
|
|
12
|
+
- CLI 增加 plugin-runtime host installer(http/database/outbound/schedule/console 等)。
|
|
13
|
+
|
|
14
|
+
后续加固(同批):
|
|
15
|
+
|
|
16
|
+
- CLI:`zhin runtime start --daemon`(pidfile/崩溃拉起/风暴保护),orphan watchdog 防僵尸进程;legacy `zhin dev` / `zhin start` 已移除(含 `zhin restart`),`zhin stop` 兼容新 daemon。
|
|
17
|
+
- 安全:builtin 工具统一走 `security/policy-facade.ts` 的 `runToolPolicies`(声明式策略表,deny 优先);审计日志 close flush + 背压队列;`splitCompoundCommand` 引号感知、`extractCommandName` 去引号堵绕过。
|
|
18
|
+
- 日志:Logger 双堆栈修复、本地时区、`getLogger` 挂树(`setLevel` 递归生效)、第三方库(log4js/discord)桥接、启动人读总结。
|
|
19
|
+
- 结构:`plugins/games/shared` 迁为 `packages/game-kit`(`@zhin.js/game-kit`);死目录 `plugins/adapters/common` 删除。
|
|
20
|
+
- 脚手架:`create-zhin-app` / `zhin new` / scaffold-wizard 生成物改为 Plugin Runtime 形态(minimal-bot 同构,新配置格式)。
|
|
21
|
+
- Console:endpoint.list 真实名称与 phase、schema:get-all 按 instanceKey 映射、db:\* 接 DatabaseHost。
|
|
22
|
+
|
|
23
|
+
注:按仓库发布惯例(见 1bb345dd2),本次 breaking 迁移统一使用 patch,避免 zhin.js 5.0 级联。
|
|
24
|
+
|
|
25
|
+
- 447f3e2: 迁移缺口修复(legacy 功能对齐):
|
|
26
|
+
|
|
27
|
+
- html 段出站规范化:经 `@zhin.js/html-renderer` 渲染为 image 段(sandbox 豁免、无渲染器时降级文本),修复真实平台 `[object Object]`。
|
|
28
|
+
- 群聊 @ 触发 AI:适配器入站标注 `metadata.mentioned`(icqq/qq/slack/onebot11/onebot12/napcat/milky/discord/telegram/kook/dingtalk/satori),`matchAiTrigger` 补齐 ignorePrefixes/respondToAt/respondToPrivate/keywords(默认值与 legacy 对齐)。
|
|
29
|
+
- im_transcripts 全量流水恢复写入(chat_history 工具可用);群聊旁听上下文回迁。
|
|
30
|
+
- `ai.trigger.timeout/thinkingMessage/errorTemplate` 生效;masters/trusted 角色解析对齐 legacy。
|
|
31
|
+
- `Message.sender` 统一为用户 ID(onebot11/12、napcat、milky 原误传显示名);quote_id 经 metadata 接入 AI 引用上下文。
|
|
32
|
+
|
|
33
|
+
- Updated dependencies [16ec4e8]
|
|
34
|
+
- Updated dependencies [cc5c94d]
|
|
35
|
+
- Updated dependencies [447f3e2]
|
|
36
|
+
- @zhin.js/core@1.3.5
|
|
37
|
+
- @zhin.js/agent@1.0.4
|
|
38
|
+
- @zhin.js/host-http@1.0.1
|
|
39
|
+
- zhin.js@4.1.3
|
|
40
|
+
- @zhin.js/logger@1.0.75
|
|
41
|
+
- @zhin.js/plugin-runtime@1.0.1
|
|
42
|
+
- @zhin.js/adapter@1.0.1
|
|
43
|
+
|
|
3
44
|
## 3.0.2
|
|
4
45
|
|
|
5
46
|
### Patch Changes
|
package/README.md
CHANGED
|
@@ -1,45 +1,38 @@
|
|
|
1
1
|
# @zhin.js/adapter-napcat
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
Zhin.js NapCatQQ 适配器,支持 OneBot11 标准 + go-cqhttp 扩展 + NapCat 独有 API。
|
|
3
|
+
Zhin.js [NapCatQQ](https://github.com/NapNeko/NapCatQQ) 适配器(Plugin Runtime,OneBot 11 + NapCat 扩展)。默认 **正向 WebSocket 客户端**(`connection: ws`);亦支持 **反向 WS** 与 **HTTP POST 上报**(经 `httpHostToken`)。
|
|
6
4
|
|
|
7
5
|
## 功能特性
|
|
8
6
|
|
|
9
|
-
-
|
|
10
|
-
-
|
|
11
|
-
- **正向 WebSocket**(`connection: ws`):应用连 NapCat
|
|
12
|
-
-
|
|
13
|
-
-
|
|
14
|
-
-
|
|
15
|
-
- 自动重连机制(WS)与心跳检测
|
|
16
|
-
- 群聊和私聊消息处理
|
|
17
|
-
- 入站消息去重与 bot 自发消息过滤
|
|
18
|
-
- Typing Indicator(处理中提示:群聊表情回应 / 私聊输入状态)
|
|
19
|
-
- 41 个 AI 工具(群管、戳一戳、表情回应、精华消息、群公告、AI 语音等)
|
|
20
|
-
- Console 管理页面(`/console/napcat`)
|
|
21
|
-
- Agent Prompt 贡献器(deferred 任务自动优选 napcat 工具)
|
|
7
|
+
- OneBot 11 + go-cqhttp 扩展 + NapCat 独有 API
|
|
8
|
+
- 约定式 `defineAdapter` / `definePlugin`(无需 `usePlugin`)
|
|
9
|
+
- **正向 WebSocket**(`connection: ws`):应用连 NapCat WS
|
|
10
|
+
- `access_token` 鉴权(Bearer + query)
|
|
11
|
+
- 入站经 `messageGatewayToken`(去重 + 自发过滤);出站 `send({ target, payload })`
|
|
12
|
+
- 41 个 AI 工具(`agent/tools/`)
|
|
22
13
|
|
|
23
14
|
## 安装
|
|
24
15
|
|
|
25
16
|
```bash
|
|
26
|
-
pnpm add @zhin.js/adapter-napcat
|
|
17
|
+
pnpm add @zhin.js/adapter-napcat
|
|
27
18
|
```
|
|
28
19
|
|
|
29
|
-
|
|
20
|
+
## Plugin Runtime
|
|
30
21
|
|
|
31
|
-
|
|
22
|
+
- `@zhin.js/adapter` — 约定式 `adapters/napcat.ts`(`defineAdapter`)
|
|
23
|
+
- `@zhin.js/core` — `messageGatewayToken` 入站/出站
|
|
24
|
+
- `@zhin.js/plugin-runtime` — `plugin.ts`(`definePlugin`)
|
|
25
|
+
- 配置经插件 `schema.json` 落到 `plugins.<instanceKey>`
|
|
32
26
|
|
|
33
|
-
|
|
27
|
+
入站:`gateway.receive({ adapter, target: "private:uid"|"group:gid", content, sender, metadata })`
|
|
28
|
+
出站:`send({ target, payload })` → WS `send_private_msg` / `send_group_msg`
|
|
34
29
|
|
|
35
|
-
|
|
30
|
+
## 最小配置
|
|
36
31
|
|
|
37
32
|
```yaml
|
|
33
|
+
# zhin.config.yml(Plugin Runtime)
|
|
38
34
|
plugins:
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
endpoints:
|
|
42
|
-
- context: napcat
|
|
35
|
+
napcat:
|
|
43
36
|
connection: ws
|
|
44
37
|
name: my-bot
|
|
45
38
|
url: "ws://127.0.0.1:3001"
|
|
@@ -48,85 +41,40 @@ endpoints:
|
|
|
48
41
|
heartbeat_interval: 30000
|
|
49
42
|
```
|
|
50
43
|
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
```yaml
|
|
54
|
-
plugins:
|
|
55
|
-
- "@zhin.js/host-router"
|
|
56
|
-
- "@zhin.js/adapter-napcat"
|
|
57
|
-
|
|
58
|
-
endpoints:
|
|
59
|
-
- context: napcat
|
|
60
|
-
connection: wss
|
|
61
|
-
name: my-bot
|
|
62
|
-
path: "/napcat/ws"
|
|
63
|
-
access_token: "${NAPCAT_TOKEN}"
|
|
64
|
-
heartbeat_interval: 30000
|
|
65
|
-
```
|
|
66
|
-
|
|
67
|
-
### HTTP API + POST 上报(connection: http)
|
|
68
|
-
|
|
69
|
-
```yaml
|
|
70
|
-
plugins:
|
|
71
|
-
- "@zhin.js/host-router"
|
|
72
|
-
- "@zhin.js/adapter-napcat"
|
|
44
|
+
根插件 `zhin.plugins`(或项目图)需引用 `@zhin.js/adapter-napcat`(`instanceKey: napcat`)。
|
|
73
45
|
|
|
74
|
-
|
|
75
|
-
- context: napcat
|
|
76
|
-
connection: http
|
|
77
|
-
name: my-bot
|
|
78
|
-
http_url: "http://127.0.0.1:3000"
|
|
79
|
-
post_path: "/napcat/post"
|
|
80
|
-
access_token: "${NAPCAT_TOKEN}"
|
|
81
|
-
poll_interval: 30000
|
|
82
|
-
```
|
|
46
|
+
## 连接方式
|
|
83
47
|
|
|
84
|
-
|
|
48
|
+
| connection | 状态 |
|
|
49
|
+
|------------|------|
|
|
50
|
+
| `ws` | 已实现(推荐) |
|
|
51
|
+
| `wss` | 已实现:反向 WS(httpHostToken) |
|
|
52
|
+
| `http` | 已实现:POST 入站 + `http_url/{action}` 出站 |
|
|
85
53
|
|
|
86
|
-
|
|
87
|
-
endpoints:
|
|
88
|
-
- context: napcat
|
|
89
|
-
connection: ws
|
|
90
|
-
name: my-bot
|
|
91
|
-
url: "ws://127.0.0.1:3001"
|
|
92
|
-
typingIndicator:
|
|
93
|
-
enabled: true
|
|
94
|
-
defaultEmoji: "128516"
|
|
95
|
-
privateConfig:
|
|
96
|
-
type: "message"
|
|
97
|
-
message: "正在思考中..."
|
|
98
|
-
groupConfig:
|
|
99
|
-
type: "reaction"
|
|
100
|
-
emoji: "128516"
|
|
101
|
-
```
|
|
54
|
+
## 鉴权
|
|
102
55
|
|
|
103
|
-
|
|
56
|
+
- **Bearer**:`Authorization: Bearer <access_token>`
|
|
57
|
+
- 正向 WS 在 Upgrade 时附带请求头,并在 URL query 写入 `access_token`
|
|
104
58
|
|
|
105
|
-
|
|
59
|
+
## AI 工具
|
|
106
60
|
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
- 群文件管理
|
|
113
|
-
- AI 语音 TTS
|
|
114
|
-
- 图片 OCR 文字识别
|
|
115
|
-
- 小程序卡片签名
|
|
116
|
-
- 个人资料 / 头像 / 签名修改
|
|
117
|
-
- 在线状态设置
|
|
118
|
-
- 消息历史查询
|
|
119
|
-
- 英译中翻译
|
|
61
|
+
| 类别 | 路径 |
|
|
62
|
+
|------|------|
|
|
63
|
+
| Permit 词汇 | `agent/PERMITS.md` |
|
|
64
|
+
| 平台工具 | `agent/tools/*.ts` |
|
|
65
|
+
| 技能说明 | `agent/skills/napcat.md` |
|
|
120
66
|
|
|
121
|
-
##
|
|
67
|
+
## 迁移说明(Plugin Runtime)
|
|
122
68
|
|
|
69
|
+
- **notice / request 侧事件已移除**:旧 Adapter 对 `post_type: notice|request` 构建 `notice.receive` / `request.receive` 事件(含 `$approve` / `$reject`);新 Plugin Runtime(`messageGatewayToken`)暂无侧事件总线,入站仅处理 `post_type: message`,notice / request 事件静默丢弃。加好友 / 加群请求审批可改用 `callApi('set_friend_add_request' | 'set_group_add_request')`。
|
|
70
|
+
- **群管工具暂未迁移**:旧 Adapter 经 `createSceneManagementTools` 注册踢人 / 禁言 / 群名片等成套 agent 工具;迁移后 `agent/tools/` 仅覆盖 NapCat 扩展 API,其余群管能力可通过 `callApi`(如 `set_group_kick`、`set_group_ban`)作为逃生舱调用。
|
|
71
|
+
- **平台权限门禁**:`plugin.ts` setup 已注册 `registerDefaultScenePlatformPermitChecker('napcat')`,`scene_admin` / `scene_owner` 依据入站 metadata 中的 sender `role`(owner / admin)判定。
|
|
123
72
|
|
|
124
|
-
##
|
|
73
|
+
## 文档链接
|
|
125
74
|
|
|
126
|
-
[
|
|
75
|
+
- [NapCatQQ](https://github.com/NapNeko/NapCatQQ)
|
|
76
|
+
- [适配器概览](https://zhin.js.org/essentials/adapters)
|
|
127
77
|
|
|
128
|
-
|
|
129
|
-
- 契约测试:`plugins/adapters/napcat/tests/l4-contract.test.ts` + `integration.test.ts`(adapter-harness)
|
|
130
|
-
- CI:`L4_SKIP_PLATFORM=1` 跳过实机;本地验证不设该变量并可配置 `ONEBOT11_WS_URL`
|
|
78
|
+
## 许可证
|
|
131
79
|
|
|
132
|
-
|
|
80
|
+
MIT License
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Convention entry: discover `adapters/napcat.ts` → defineAdapter.
|
|
3
|
+
*/
|
|
4
|
+
import { defineAdapter } from '@zhin.js/adapter';
|
|
5
|
+
import { messageGatewayToken } from '@zhin.js/core/runtime';
|
|
6
|
+
import { httpHostToken } from '@zhin.js/host-http';
|
|
7
|
+
import { NapCatHttpEndpoint } from '../src/http-endpoint.js';
|
|
8
|
+
import { resolveNapCatConfig, type NapCatAdapterConfig } from '../src/protocol.js';
|
|
9
|
+
import { NapCatWsEndpoint } from '../src/ws-endpoint.js';
|
|
10
|
+
import { NapCatWssEndpoint } from '../src/wss-endpoint.js';
|
|
11
|
+
|
|
12
|
+
export {
|
|
13
|
+
NapCatHttpEndpoint,
|
|
14
|
+
type NapCatHttpEndpointOptions,
|
|
15
|
+
} from '../src/http-endpoint.js';
|
|
16
|
+
export {
|
|
17
|
+
NapCatWsEndpoint,
|
|
18
|
+
type NapCatWsEndpointOptions,
|
|
19
|
+
} from '../src/ws-endpoint.js';
|
|
20
|
+
export {
|
|
21
|
+
NapCatWssEndpoint,
|
|
22
|
+
type NapCatWssEndpointOptions,
|
|
23
|
+
} from '../src/wss-endpoint.js';
|
|
24
|
+
export type { NapCatWsSocket, NapCatWsCreateOptions } from '../src/ws-types.js';
|
|
25
|
+
|
|
26
|
+
export default defineAdapter<NapCatAdapterConfig>({
|
|
27
|
+
capabilities: ['inbound', 'outbound'],
|
|
28
|
+
create(context) {
|
|
29
|
+
const config = resolveNapCatConfig(context.config);
|
|
30
|
+
const gateway = context.use(messageGatewayToken);
|
|
31
|
+
if (config.connection === 'wss') {
|
|
32
|
+
return new NapCatWssEndpoint({ id: context.id, gateway, http: context.use(httpHostToken), config });
|
|
33
|
+
}
|
|
34
|
+
if (config.connection === 'http') {
|
|
35
|
+
return new NapCatHttpEndpoint({ id: context.id, gateway, http: context.use(httpHostToken), config });
|
|
36
|
+
}
|
|
37
|
+
return new NapCatWsEndpoint({ id: context.id, gateway, config });
|
|
38
|
+
},
|
|
39
|
+
});
|
package/agent/tools/ai_tts.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { defineAgentTool } from '@zhin.js/agent/tools';
|
|
2
2
|
import { z } from 'zod';
|
|
3
3
|
import { getEndpoint } from '../../src/napcat-agent-deps.js';
|
|
4
4
|
|
|
5
|
-
export default
|
|
5
|
+
export default defineAgentTool<{ endpoint_id: string; group_id: number; character: string; text: string }>({
|
|
6
6
|
description: 'AI 文字转语音,在群聊中发送 AI 语音消息。',
|
|
7
7
|
inputSchema: z.object({
|
|
8
8
|
endpoint_id: z.string().describe('Endpoint 名称'),
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { defineAgentTool } from '@zhin.js/agent/tools';
|
|
2
2
|
import { z } from 'zod';
|
|
3
3
|
import { getEndpoint } from '../../src/napcat-agent-deps.js';
|
|
4
4
|
|
|
5
|
-
export default
|
|
5
|
+
export default defineAgentTool<{ endpoint_id: string; group_id: number; notice_id: string }>({
|
|
6
6
|
description: '删除群公告。',
|
|
7
7
|
inputSchema: z.object({
|
|
8
8
|
endpoint_id: z.string().describe('Endpoint 名称'),
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { defineAgentTool } from '@zhin.js/agent/tools';
|
|
2
2
|
import { z } from 'zod';
|
|
3
3
|
import { getEndpoint } from '../../src/napcat-agent-deps.js';
|
|
4
4
|
|
|
5
|
-
export default
|
|
5
|
+
export default defineAgentTool<{ endpoint_id: string; message_id: number }>({
|
|
6
6
|
description: '移除群精华消息。',
|
|
7
7
|
inputSchema: z.object({
|
|
8
8
|
endpoint_id: z.string().describe('Endpoint 名称'),
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { defineAgentTool } from '@zhin.js/agent/tools';
|
|
2
2
|
import { z } from 'zod';
|
|
3
3
|
import { getEndpoint } from '../../src/napcat-agent-deps.js';
|
|
4
4
|
|
|
5
|
-
export default
|
|
5
|
+
export default defineAgentTool<{ endpoint_id: string; user_id: number }>({
|
|
6
6
|
description: '删除好友。',
|
|
7
7
|
inputSchema: z.object({
|
|
8
8
|
endpoint_id: z.string().describe('Endpoint 名称'),
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { defineAgentTool } from '@zhin.js/agent/tools';
|
|
2
2
|
import { z } from 'zod';
|
|
3
3
|
import { getEndpoint } from '../../src/napcat-agent-deps.js';
|
|
4
4
|
|
|
5
|
-
export default
|
|
5
|
+
export default defineAgentTool<{ endpoint_id: string; url: string; thread_count?: number }>({
|
|
6
6
|
description: '下载文件到 NapCat 缓存目录,返回本地路径。',
|
|
7
7
|
inputSchema: z.object({
|
|
8
8
|
endpoint_id: z.string().describe('Endpoint 名称'),
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { defineAgentTool } from '@zhin.js/agent/tools';
|
|
2
2
|
import { z } from 'zod';
|
|
3
3
|
import { getEndpoint } from '../../src/napcat-agent-deps.js';
|
|
4
4
|
|
|
5
|
-
export default
|
|
5
|
+
export default defineAgentTool<{
|
|
6
6
|
endpoint_id: string;
|
|
7
7
|
target_type: 'friend' | 'group';
|
|
8
8
|
target_id: number;
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { defineAgentTool } from '@zhin.js/agent/tools';
|
|
2
2
|
import { z } from 'zod';
|
|
3
3
|
import { getEndpoint } from '../../src/napcat-agent-deps.js';
|
|
4
4
|
|
|
5
|
-
export default
|
|
5
|
+
export default defineAgentTool<{ endpoint_id: string; group_id: number }>({
|
|
6
6
|
description: '获取 AI 语音角色列表,用于 napcat_ai_tts 的 character 参数。',
|
|
7
7
|
inputSchema: z.object({
|
|
8
8
|
endpoint_id: z.string().describe('Endpoint 名称'),
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { defineAgentTool } from '@zhin.js/agent/tools';
|
|
2
2
|
import { z } from 'zod';
|
|
3
3
|
import { getEndpoint } from '../../src/napcat-agent-deps.js';
|
|
4
4
|
|
|
5
|
-
export default
|
|
5
|
+
export default defineAgentTool<{ endpoint_id: string; group_id: number }>({
|
|
6
6
|
description: '获取群精华消息列表。',
|
|
7
7
|
inputSchema: z.object({
|
|
8
8
|
endpoint_id: z.string().describe('Endpoint 名称'),
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { defineAgentTool } from '@zhin.js/agent/tools';
|
|
2
2
|
import { z } from 'zod';
|
|
3
3
|
import { getEndpoint } from '../../src/napcat-agent-deps.js';
|
|
4
4
|
|
|
5
|
-
export default
|
|
5
|
+
export default defineAgentTool<{ endpoint_id: string; user_id: number; message_seq?: number; count?: number }>({
|
|
6
6
|
description: '获取私聊消息历史记录。',
|
|
7
7
|
inputSchema: z.object({
|
|
8
8
|
endpoint_id: z.string().describe('Endpoint 名称'),
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { defineAgentTool } from '@zhin.js/agent/tools';
|
|
2
2
|
import { z } from 'zod';
|
|
3
3
|
import { getEndpoint } from '../../src/napcat-agent-deps.js';
|
|
4
4
|
|
|
5
|
-
export default
|
|
5
|
+
export default defineAgentTool<{ endpoint_id: string; group_id: number; file_id: string; busid: number }>({
|
|
6
6
|
description: '获取群文件下载链接。',
|
|
7
7
|
inputSchema: z.object({
|
|
8
8
|
endpoint_id: z.string().describe('Endpoint 名称'),
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { defineAgentTool } from '@zhin.js/agent/tools';
|
|
2
2
|
import { z } from 'zod';
|
|
3
3
|
import { getEndpoint } from '../../src/napcat-agent-deps.js';
|
|
4
4
|
|
|
5
|
-
export default
|
|
5
|
+
export default defineAgentTool<{ endpoint_id: string; group_id: number }>({
|
|
6
6
|
description: '获取群组额外详细信息。',
|
|
7
7
|
inputSchema: z.object({
|
|
8
8
|
endpoint_id: z.string().describe('Endpoint 名称'),
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { defineAgentTool } from '@zhin.js/agent/tools';
|
|
2
2
|
import { z } from 'zod';
|
|
3
3
|
import { getEndpoint } from '../../src/napcat-agent-deps.js';
|
|
4
4
|
|
|
5
|
-
export default
|
|
5
|
+
export default defineAgentTool<{ endpoint_id: string; group_id: number; message_seq?: number; count?: number }>({
|
|
6
6
|
description: '获取群消息历史记录。',
|
|
7
7
|
inputSchema: z.object({
|
|
8
8
|
endpoint_id: z.string().describe('Endpoint 名称'),
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { defineAgentTool } from '@zhin.js/agent/tools';
|
|
2
2
|
import { z } from 'zod';
|
|
3
3
|
import { getEndpoint } from '../../src/napcat-agent-deps.js';
|
|
4
4
|
|
|
5
|
-
export default
|
|
5
|
+
export default defineAgentTool<{ endpoint_id: string; group_id: number }>({
|
|
6
6
|
description: '获取群公告列表。',
|
|
7
7
|
inputSchema: z.object({
|
|
8
8
|
endpoint_id: z.string().describe('Endpoint 名称'),
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { defineAgentTool } from '@zhin.js/agent/tools';
|
|
2
2
|
import { z } from 'zod';
|
|
3
3
|
import { getEndpoint } from '../../src/napcat-agent-deps.js';
|
|
4
4
|
|
|
5
|
-
export default
|
|
5
|
+
export default defineAgentTool<{ endpoint_id: string; group_id: number }>({
|
|
6
6
|
description: '获取群根目录文件列表。',
|
|
7
7
|
inputSchema: z.object({
|
|
8
8
|
endpoint_id: z.string().describe('Endpoint 名称'),
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { defineAgentTool } from '@zhin.js/agent/tools';
|
|
2
2
|
import { z } from 'zod';
|
|
3
3
|
import { getEndpoint } from '../../src/napcat-agent-deps.js';
|
|
4
4
|
|
|
5
|
-
export default
|
|
5
|
+
export default defineAgentTool<{ endpoint_id: string; group_id: number }>({
|
|
6
6
|
description: '获取群禁言列表。',
|
|
7
7
|
inputSchema: z.object({
|
|
8
8
|
endpoint_id: z.string().describe('Endpoint 名称'),
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { defineAgentTool } from '@zhin.js/agent/tools';
|
|
2
2
|
import { z } from 'zod';
|
|
3
3
|
import { getEndpoint } from '../../src/napcat-agent-deps.js';
|
|
4
4
|
|
|
5
|
-
export default
|
|
5
|
+
export default defineAgentTool<{ endpoint_id: string; type: string; title: string; desc: string; pic_url: string; jump_url: string }>({
|
|
6
6
|
description: '签名小程序卡片(如 B 站分享卡片等)。',
|
|
7
7
|
inputSchema: z.object({
|
|
8
8
|
endpoint_id: z.string().describe('Endpoint 名称'),
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { defineAgentTool } from '@zhin.js/agent/tools';
|
|
2
2
|
import { z } from 'zod';
|
|
3
3
|
import { getEndpoint } from '../../src/napcat-agent-deps.js';
|
|
4
4
|
|
|
5
|
-
export default
|
|
5
|
+
export default defineAgentTool<{ endpoint_id: string; user_id: number }>({
|
|
6
6
|
description: '获取用户在线状态。',
|
|
7
7
|
inputSchema: z.object({
|
|
8
8
|
endpoint_id: z.string().describe('Endpoint 名称'),
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { defineAgentTool } from '@zhin.js/agent/tools';
|
|
2
2
|
import { z } from 'zod';
|
|
3
3
|
import { getEndpoint } from '../../src/napcat-agent-deps.js';
|
|
4
4
|
|
|
5
|
-
export default
|
|
5
|
+
export default defineAgentTool<{ endpoint_id: string; group_id: number }>({
|
|
6
6
|
description: '群签到/群打卡。',
|
|
7
7
|
inputSchema: z.object({
|
|
8
8
|
endpoint_id: z.string().describe('Endpoint 名称'),
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { defineAgentTool } from '@zhin.js/agent/tools';
|
|
2
2
|
import { z } from 'zod';
|
|
3
3
|
import { getEndpoint } from '../../src/napcat-agent-deps.js';
|
|
4
4
|
|
|
5
|
-
export default
|
|
5
|
+
export default defineAgentTool<{ endpoint_id: string; message_id: number }>({
|
|
6
6
|
description: '标记消息为已读。',
|
|
7
7
|
inputSchema: z.object({
|
|
8
8
|
endpoint_id: z.string().describe('Endpoint 名称'),
|
package/agent/tools/ocr_image.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { defineAgentTool } from '@zhin.js/agent/tools';
|
|
2
2
|
import { z } from 'zod';
|
|
3
3
|
import { getEndpoint } from '../../src/napcat-agent-deps.js';
|
|
4
4
|
|
|
5
|
-
export default
|
|
5
|
+
export default defineAgentTool<{ endpoint_id: string; image: string }>({
|
|
6
6
|
description: '图片 OCR 文字识别。',
|
|
7
7
|
inputSchema: z.object({
|
|
8
8
|
endpoint_id: z.string().describe('Endpoint 名称'),
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { defineAgentTool } from '@zhin.js/agent/tools';
|
|
2
2
|
import { z } from 'zod';
|
|
3
3
|
import { getEndpoint } from '../../src/napcat-agent-deps.js';
|
|
4
4
|
|
|
5
|
-
export default
|
|
5
|
+
export default defineAgentTool<{
|
|
6
6
|
endpoint_id: string;
|
|
7
7
|
message_type: 'private' | 'group';
|
|
8
8
|
id: number;
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { defineAgentTool } from '@zhin.js/agent/tools';
|
|
2
2
|
import { z } from 'zod';
|
|
3
3
|
import { getEndpoint } from '../../src/napcat-agent-deps.js';
|
|
4
4
|
|
|
5
|
-
export default
|
|
5
|
+
export default defineAgentTool<{ endpoint_id: string; group_id: number; content: string; image?: string }>({
|
|
6
6
|
description: '发送群公告。',
|
|
7
7
|
inputSchema: z.object({
|
|
8
8
|
endpoint_id: z.string().describe('Endpoint 名称'),
|
package/agent/tools/send_like.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { defineAgentTool } from '@zhin.js/agent/tools';
|
|
2
2
|
import { z } from 'zod';
|
|
3
3
|
import { getEndpoint } from '../../src/napcat-agent-deps.js';
|
|
4
4
|
|
|
5
|
-
export default
|
|
5
|
+
export default defineAgentTool<{ endpoint_id: string; user_id: number; times?: number }>({
|
|
6
6
|
description: '给好友点赞(每人每天最多 10 次)。',
|
|
7
7
|
inputSchema: z.object({
|
|
8
8
|
endpoint_id: z.string().describe('Endpoint 名称'),
|
package/agent/tools/send_poke.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { defineAgentTool } from '@zhin.js/agent/tools';
|
|
2
2
|
import { z } from 'zod';
|
|
3
3
|
import { getEndpoint } from '../../src/napcat-agent-deps.js';
|
|
4
4
|
|
|
5
|
-
export default
|
|
5
|
+
export default defineAgentTool<{ endpoint_id: string; user_id: number; group_id?: number }>({
|
|
6
6
|
description: '戳一戳(群聊或私聊)。group_id 不传时为私聊戳一戳。',
|
|
7
7
|
inputSchema: z.object({
|
|
8
8
|
endpoint_id: z.string().describe('Endpoint 名称'),
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { defineAgentTool } from '@zhin.js/agent/tools';
|
|
2
2
|
import { z } from 'zod';
|
|
3
3
|
import { getEndpoint } from '../../src/napcat-agent-deps.js';
|
|
4
4
|
|
|
5
|
-
export default
|
|
5
|
+
export default defineAgentTool<{ endpoint_id: string; file: string }>({
|
|
6
6
|
description: '修改 QQ 头像。',
|
|
7
7
|
inputSchema: z.object({
|
|
8
8
|
endpoint_id: z.string().describe('Endpoint 名称'),
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { defineAgentTool } from '@zhin.js/agent/tools';
|
|
2
2
|
import { z } from 'zod';
|
|
3
3
|
import { getEndpoint } from '../../src/napcat-agent-deps.js';
|
|
4
4
|
|
|
5
|
-
export default
|
|
5
|
+
export default defineAgentTool<{ endpoint_id: string; message_id: number; emoji_id: string }>({
|
|
6
6
|
description: '为消息添加表情回应(贴表情)。',
|
|
7
7
|
inputSchema: z.object({
|
|
8
8
|
endpoint_id: z.string().describe('Endpoint 名称'),
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { defineAgentTool } from '@zhin.js/agent/tools';
|
|
2
2
|
import { z } from 'zod';
|
|
3
3
|
import { getEndpoint } from '../../src/napcat-agent-deps.js';
|
|
4
4
|
|
|
5
|
-
export default
|
|
5
|
+
export default defineAgentTool<{ endpoint_id: string; message_id: number }>({
|
|
6
6
|
description: '设置群精华消息。',
|
|
7
7
|
inputSchema: z.object({
|
|
8
8
|
endpoint_id: z.string().describe('Endpoint 名称'),
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { defineAgentTool } from '@zhin.js/agent/tools';
|
|
2
2
|
import { z } from 'zod';
|
|
3
3
|
import { getEndpoint } from '../../src/napcat-agent-deps.js';
|
|
4
4
|
|
|
5
|
-
export default
|
|
5
|
+
export default defineAgentTool<{ endpoint_id: string; group_id: number; file: string }>({
|
|
6
6
|
description: '设置群头像。file 为图片 URL 或 base64。',
|
|
7
7
|
inputSchema: z.object({
|
|
8
8
|
endpoint_id: z.string().describe('Endpoint 名称'),
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { defineAgentTool } from '@zhin.js/agent/tools';
|
|
2
2
|
import { z } from 'zod';
|
|
3
3
|
import { getEndpoint } from '../../src/napcat-agent-deps.js';
|
|
4
4
|
|
|
5
|
-
export default
|
|
5
|
+
export default defineAgentTool<{ endpoint_id: string; status: number; ext_status?: number }>({
|
|
6
6
|
description: '设置在线状态(在线、隐身、忙碌等)。',
|
|
7
7
|
inputSchema: z.object({
|
|
8
8
|
endpoint_id: z.string().describe('Endpoint 名称'),
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { defineAgentTool } from '@zhin.js/agent/tools';
|
|
2
2
|
import { z } from 'zod';
|
|
3
3
|
import { getEndpoint } from '../../src/napcat-agent-deps.js';
|
|
4
4
|
|
|
5
|
-
export default
|
|
5
|
+
export default defineAgentTool<{ endpoint_id: string; nickname: string; company?: string; email?: string; college?: string; personal_note?: string }>({
|
|
6
6
|
description: '修改 QQ 资料(昵称等)。',
|
|
7
7
|
inputSchema: z.object({
|
|
8
8
|
endpoint_id: z.string().describe('Endpoint 名称'),
|