@qihoo/tuitui-openclaw-channel 1.0.23 → 1.0.25

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/README.md CHANGED
@@ -1,3 +1,3 @@
1
- # openclaw-tuitui-channel
2
-
1
+ # openclaw-tuitui-channel
2
+
3
3
  tuitui-channel
package/index.ts CHANGED
@@ -1,21 +1,21 @@
1
- import type { OpenClawPluginApi } from 'openclaw/plugin-sdk';
2
- import { emptyPluginConfigSchema } from 'openclaw/plugin-sdk/core';
3
- import { createTuiTuiChannelPlugin } from './src/channel';
4
- import { registerTuituiTools } from './src/tools';
5
- import { CHANNEL_ID, CHANNEL_NAME } from './src/const';
6
- import { id } from './openclaw.plugin.json';
7
-
8
- const plugin = {
9
- id, // plugin id not is CHANNEL_ID
10
- name: CHANNEL_NAME,
11
- description: `${CHANNEL_NAME} chat integration for OpenClaw via WebSocket`,
12
- configSchema: emptyPluginConfigSchema(),
13
- register(api: OpenClawPluginApi) {
14
- console.log(`[${CHANNEL_ID}] Plugin.register Before.`);
15
- api.registerChannel({ plugin: createTuiTuiChannelPlugin(api.runtime) });
16
- registerTuituiTools(api);
17
- console.log(`[${CHANNEL_ID}] Plugin.register After.`);
18
- },
19
- };
20
- console.log(`[${CHANNEL_ID}] Tuitui Extension Loaded!`);
21
- export default plugin;
1
+ import type { OpenClawPluginApi } from 'openclaw/plugin-sdk';
2
+ import { emptyPluginConfigSchema } from 'openclaw/plugin-sdk/core';
3
+ import { registerTuiTuiChannel } from './src/channel';
4
+ import { registerTuituiTools } from './src/tools';
5
+ import { registerMonitorHooks } from './src/monitor';
6
+ import { CHANNEL_ID, CHANNEL_NAME } from './src/const';
7
+ import { id } from './openclaw.plugin.json';
8
+
9
+ const plugin = {
10
+ id, // plugin id not is CHANNEL_ID
11
+ name: CHANNEL_NAME,
12
+ description: `${CHANNEL_NAME} chat integration for OpenClaw via WebSocket`,
13
+ configSchema: emptyPluginConfigSchema(),
14
+ register(api: OpenClawPluginApi) {
15
+ registerTuiTuiChannel(api);
16
+ registerTuituiTools(api);
17
+ registerMonitorHooks(api);
18
+ },
19
+ };
20
+ console.log(`[${CHANNEL_ID}] Tuitui Extension Loaded!`);
21
+ export default plugin;
@@ -1,183 +1,175 @@
1
- {
2
- "id": "tuitui-openclaw-channel",
3
- "channels": ["tuitui"],
4
- "skills": ["./skills"],
5
- "configSchema": {
6
- "type": "object",
7
- "additionalProperties": false,
8
- "properties": {}
9
- },
10
- "channelConfigs": {
11
- "tuitui": {
12
- "schema": {
13
- "type": "object",
14
- "additionalProperties": false,
15
- "properties": {
16
- "enabled": { "type": "boolean", "default": true },
17
- "appId": { "type": "string", "default": "" },
18
- "appSecret": { "type": "string" },
19
- "dmPolicy": {
20
- "type": "string",
21
- "default": "pairing",
22
- "enum": ["pairing", "allowlist", "open", "disabled"]
23
- },
24
- "allowFrom": {
25
- "type": "array",
26
- "default": [],
27
- "items": { "type": "string" }
28
- },
29
- "groupPolicy": {
30
- "type": "string",
31
- "default": "allowlist",
32
- "enum": ["allowlist", "disabled"]
33
- },
34
- "requireMention": { "type": "boolean", "default": true },
35
- "groupAllowFrom": {
36
- "type": "array",
37
- "default": [],
38
- "items": { "type": "string" }
39
- },
40
- "channelContext": {
41
- "type": "string",
42
- "default": "thread",
43
- "enum": ["channel", "thread"]
44
- },
45
- "emojiReaction": { "type": "boolean", "default": true },
46
- "accounts": {
47
- "type": "object",
48
- "additionalProperties": {
49
- "type": "object",
50
- "additionalProperties": false,
51
- "properties": {
52
- "enabled": { "type": "boolean", "default": true },
53
- "appId": { "type": "string", "default": "" },
54
- "appSecret": { "type": "string" },
55
- "dmPolicy": {
56
- "type": "string",
57
- "default": "pairing",
58
- "enum": ["pairing", "allowlist", "open", "disabled"]
59
- },
60
- "allowFrom": {
61
- "type": "array",
62
- "default": [],
63
- "items": { "type": "string" }
64
- },
65
- "groupPolicy": {
66
- "type": "string",
67
- "default": "allowlist",
68
- "enum": ["allowlist", "disabled"]
69
- },
70
- "requireMention": { "type": "boolean", "default": true },
71
- "groupAllowFrom": {
72
- "type": "array",
73
- "items": { "type": "string" }
74
- },
75
- "channelContext": {
76
- "type": "string",
77
- "default": "thread",
78
- "enum": ["channel", "thread"]
79
- },
80
- "emojiReaction": { "type": "boolean", "default": true }
81
- }
82
- }
83
- }
84
- }
85
- },
86
- "uiHints": {
87
- "enabled": { "order": 1, "help": "开启或关闭" },
88
- "appId": {
89
- "help": "推推机器人身份 AppId(你可以推推搜索【推推机器人助手】,和它聊天自助申请推推机器人)",
90
- "order": 2
91
- },
92
- "appSecret": {
93
- "help": "推推机器人密钥 Secret(推推机器人的 App Secret)",
94
- "order": 3
95
- },
96
- "dmPolicy": {
97
- "help": "私聊策略(pairing=配对(默认);allowlist=白名单;open=允许所有(不安全);disabled=禁用私聊)",
98
- "order": 10,
99
- "advanced": true
100
- },
101
- "allowFrom": {
102
- "help": "私聊白名单-域账号(dmPolicy=allowlist 时生效;pairing 下可用于显式放行用户)。对群聊/团队也能生效",
103
- "order": 11,
104
- "advanced": true
105
- },
106
- "groupPolicy": {
107
- "help": "群聊/团队策略(allowlist=白名单;disabled=禁用)",
108
- "order": 12,
109
- "advanced": true
110
- },
111
- "requireMention": {
112
- "help": "群组/团队是否需要 @ 机器人才触发 Agent(默认 true)。注意:如果你关闭了这个开关,且有多个龙虾机器人在同一个群里,他们会聊的停不下来",
113
- "order": 13,
114
- "advanced": true
115
- },
116
- "groupAllowFrom": {
117
- "help": "群组/团队白名单-包含群ID、团队ID或频道ID(仅在 groupPolicy=allowlist 生效)",
118
- "order": 14,
119
- "advanced": true
120
- },
121
- "channelContext": {
122
- "help": "团队-频道上下文(channel=每个频道共享上下文; thread=每个帖子使用独立上下文)。修改后对后续对话生效,对历史数据不生效。",
123
- "order": 15,
124
- "advanced": true
125
- },
126
- "emojiReaction": {
127
- "help": "在收到消息后,大模型给出反应结果前,先对原消息发送一个\"收到\"的表情回复。",
128
- "order": 16,
129
- "advanced": true
130
- },
131
- "accounts": {
132
- "help": "Accounts(多账户配置)",
133
- "order": 30,
134
- "advanced": true
135
- },
136
- "accounts.*.enabled": { "order": 301, "help": "开启或关闭" },
137
- "accounts.*.appId": {
138
- "help": "推推机器人身份 AppId(你可以推推搜索【推推机器人助手】,和它聊天自助申请推推机器人)",
139
- "order": 302
140
- },
141
- "accounts.*.appSecret": {
142
- "help": "推推机器人密钥 Secret(推推机器人的 App Secret)",
143
- "order": 303
144
- },
145
- "accounts.*.dmPolicy": {
146
- "help": "私聊策略(pairing=配对(默认);allowlist=白名单;open=允许所有(不安全);disabled=禁用私聊)",
147
- "order": 304,
148
- "advanced": true
149
- },
150
- "accounts.*.allowFrom": {
151
- "help": "私聊白名单-推推域账号(dmPolicy=allowlist 时生效;pairing 下可用于显式放行用户);对群、团队也生效",
152
- "order": 305,
153
- "advanced": true
154
- },
155
- "accounts.*.groupPolicy": {
156
- "help": "群聊/团队策略(allowlist=白名单;disabled=禁用)",
157
- "order": 306,
158
- "advanced": true
159
- },
160
- "accounts.*.requireMention": {
161
- "help": "群组/团队是否需要 @ 机器人才触发 Agent(默认 true)",
162
- "order": 307,
163
- "advanced": true
164
- },
165
- "accounts.*.groupAllowFrom": {
166
- "help": "群组/团队白名单-包含群ID、团队ID或频道ID(仅在 groupPolicy=allowlist 生效)。如果不想所有人使用,可以配置私聊白名单,私聊白名单对群/团队仍然有效",
167
- "order": 308,
168
- "advanced": true
169
- },
170
- "accounts.*.channelContext": {
171
- "help": "团队-频道上下文(channel=每个频道共享上下文; thread=每个帖子使用独立上下文)",
172
- "order": 309,
173
- "advanced": true
174
- },
175
- "accounts.*.emojiReaction": {
176
- "help": "在收到消息后,大模型给出反应结果前,先对原消息发送一个\"收到\"的表情回复。",
177
- "order": 310,
178
- "advanced": true
179
- }
180
- }
181
- }
182
- }
1
+ {
2
+ "id": "tuitui-openclaw-channel",
3
+ "channels": ["tuitui"],
4
+ "skills": ["./skills"],
5
+ "configSchema": {
6
+ "type": "object",
7
+ "additionalProperties": false,
8
+ "properties": {}
9
+ },
10
+ "channelConfigs": {
11
+ "tuitui": {
12
+ "schema": {
13
+ "type": "object",
14
+ "additionalProperties": false,
15
+ "properties": {
16
+ "enabled": { "type": "boolean", "default": true },
17
+ "appId": { "type": "string", "default": "" },
18
+ "appSecret": { "type": "string" },
19
+ "dmPolicy": {
20
+ "type": "string",
21
+ "default": "pairing",
22
+ "enum": ["pairing", "allowlist", "open", "disabled"]
23
+ },
24
+ "allowFrom": {
25
+ "type": "array",
26
+ "default": [],
27
+ "items": { "type": "string" }
28
+ },
29
+ "groupPolicy": {
30
+ "type": "string",
31
+ "default": "allowlist",
32
+ "enum": ["allowlist", "disabled"]
33
+ },
34
+ "requireMention": { "type": "boolean", "default": true },
35
+ "groupAllowFrom": {
36
+ "type": "array",
37
+ "default": [],
38
+ "items": { "type": "string" }
39
+ },
40
+ "emojiReaction": { "type": "boolean", "default": true },
41
+ "monitorEnabled": { "type": "boolean", "default": false },
42
+ "accounts": {
43
+ "type": "object",
44
+ "additionalProperties": {
45
+ "type": "object",
46
+ "additionalProperties": false,
47
+ "properties": {
48
+ "enabled": { "type": "boolean", "default": true },
49
+ "appId": { "type": "string", "default": "" },
50
+ "appSecret": { "type": "string" },
51
+ "dmPolicy": {
52
+ "type": "string",
53
+ "default": "pairing",
54
+ "enum": ["pairing", "allowlist", "open", "disabled"]
55
+ },
56
+ "allowFrom": {
57
+ "type": "array",
58
+ "default": [],
59
+ "items": { "type": "string" }
60
+ },
61
+ "groupPolicy": {
62
+ "type": "string",
63
+ "default": "allowlist",
64
+ "enum": ["allowlist", "disabled"]
65
+ },
66
+ "requireMention": { "type": "boolean", "default": true },
67
+ "groupAllowFrom": {
68
+ "type": "array",
69
+ "items": { "type": "string" }
70
+ },
71
+ "emojiReaction": { "type": "boolean", "default": true },
72
+ "monitorEnabled": { "type": "boolean", "default": false }
73
+ }
74
+ }
75
+ }
76
+ }
77
+ },
78
+ "uiHints": {
79
+ "enabled": { "order": 1, "help": "开启或关闭" },
80
+ "appId": {
81
+ "help": "推推机器人身份 AppId(你可以推推搜索【推推机器人助手】,和它聊天自助申请推推机器人)",
82
+ "order": 2
83
+ },
84
+ "appSecret": {
85
+ "help": "推推机器人密钥 Secret(推推机器人的 App Secret)",
86
+ "order": 3
87
+ },
88
+ "dmPolicy": {
89
+ "help": "私聊策略(pairing=配对(默认);allowlist=白名单;open=允许所有(不安全);disabled=禁用私聊)",
90
+ "order": 10,
91
+ "advanced": true
92
+ },
93
+ "allowFrom": {
94
+ "help": "私聊白名单-域账号(dmPolicy=allowlist 时生效;pairing 下可用于显式放行用户)。对群聊/团队也能生效",
95
+ "order": 11,
96
+ "advanced": true
97
+ },
98
+ "groupPolicy": {
99
+ "help": "群聊/团队策略(allowlist=白名单;disabled=禁用)",
100
+ "order": 12,
101
+ "advanced": true
102
+ },
103
+ "requireMention": {
104
+ "help": "群组/团队是否需要 @ 机器人才触发 Agent(默认 true)。注意:如果你关闭了这个开关,且有多个龙虾机器人在同一个群里,他们会聊的停不下来",
105
+ "order": 13,
106
+ "advanced": true
107
+ },
108
+ "groupAllowFrom": {
109
+ "help": "群组/团队白名单-包含群ID、团队ID或频道ID(仅在 groupPolicy=allowlist 生效)",
110
+ "order": 14,
111
+ "advanced": true
112
+ },
113
+ "emojiReaction": {
114
+ "help": "在收到消息后,大模型给出反应结果前,先对原消息发送一个\"收到\"的表情回复。",
115
+ "order": 16,
116
+ "advanced": true
117
+ },
118
+ "monitorEnabled": {
119
+ "help": "是否开启工作状态监控上报(默认 false)。开启后,所有 Agent 事件的完整原始数据将实时上报到监控接口。",
120
+ "order": 17,
121
+ "advanced": true
122
+ },
123
+ "accounts": {
124
+ "help": "Accounts(多账户配置)",
125
+ "order": 30,
126
+ "advanced": true
127
+ },
128
+ "accounts.*.enabled": { "order": 301, "help": "开启或关闭" },
129
+ "accounts.*.appId": {
130
+ "help": "推推机器人身份 AppId(你可以推推搜索【推推机器人助手】,和它聊天自助申请推推机器人)",
131
+ "order": 302
132
+ },
133
+ "accounts.*.appSecret": {
134
+ "help": "推推机器人密钥 Secret(推推机器人的 App Secret)",
135
+ "order": 303
136
+ },
137
+ "accounts.*.dmPolicy": {
138
+ "help": "私聊策略(pairing=配对(默认);allowlist=白名单;open=允许所有(不安全);disabled=禁用私聊)",
139
+ "order": 304,
140
+ "advanced": true
141
+ },
142
+ "accounts.*.allowFrom": {
143
+ "help": "私聊白名单-推推域账号(dmPolicy=allowlist 时生效;pairing 下可用于显式放行用户);对群、团队也生效",
144
+ "order": 305,
145
+ "advanced": true
146
+ },
147
+ "accounts.*.groupPolicy": {
148
+ "help": "群聊/团队策略(allowlist=白名单;disabled=禁用)",
149
+ "order": 306,
150
+ "advanced": true
151
+ },
152
+ "accounts.*.requireMention": {
153
+ "help": "群组/团队是否需要 @ 机器人才触发 Agent(默认 true)",
154
+ "order": 307,
155
+ "advanced": true
156
+ },
157
+ "accounts.*.groupAllowFrom": {
158
+ "help": "群组/团队白名单-包含群ID、团队ID或频道ID(仅在 groupPolicy=allowlist 生效)。如果不想所有人使用,可以配置私聊白名单,私聊白名单对群/团队仍然有效",
159
+ "order": 308,
160
+ "advanced": true
161
+ },
162
+ "accounts.*.emojiReaction": {
163
+ "help": "在收到消息后,大模型给出反应结果前,先对原消息发送一个\"收到\"的表情回复。",
164
+ "order": 310,
165
+ "advanced": true
166
+ },
167
+ "accounts.*.monitorEnabled": {
168
+ "help": "是否开启工作状态监控上报(默认 false)。",
169
+ "order": 311,
170
+ "advanced": true
171
+ }
172
+ }
173
+ }
174
+ }
183
175
  }
package/package.json CHANGED
@@ -1,37 +1,37 @@
1
- {
2
- "name": "@qihoo/tuitui-openclaw-channel",
3
- "version": "1.0.23",
4
- "maintainers": [
5
- {
6
- "name": "huzunjie",
7
- "email": "huzunjie@pyzy.net"
8
- },
9
- {
10
- "name": "zhaohuaqiang",
11
- "email": "zhaohuaqiang@360.cn"
12
- },
13
- {
14
- "name": "xiaoshasha",
15
- "email": "xiaoshasha@360.cn"
16
- }
17
- ],
18
- "description": "TuiTui channel plugin for OpenClaw",
19
- "type": "module",
20
- "peerDependencies": {
21
- "openclaw": ">=2026.3.13"
22
- },
23
- "dependencies": {
24
- "@sinclair/typebox": "^0.34.48",
25
- "ws": "^8.13.0"
26
- },
27
- "openclaw": {
28
- "extensions": [
29
- "./index.ts"
30
- ],
31
- "install": {
32
- "npmSpec": "@qihoo/tuitui-openclaw-channel",
33
- "localPath": "extensions/tuitui",
34
- "defaultChoice": "npm"
35
- }
36
- }
37
- }
1
+ {
2
+ "name": "@qihoo/tuitui-openclaw-channel",
3
+ "version": "1.0.25",
4
+ "maintainers": [
5
+ {
6
+ "name": "huzunjie",
7
+ "email": "huzunjie@pyzy.net"
8
+ },
9
+ {
10
+ "name": "zhaohuaqiang",
11
+ "email": "zhaohuaqiang@360.cn"
12
+ },
13
+ {
14
+ "name": "xiaoshasha",
15
+ "email": "xiaoshasha@360.cn"
16
+ }
17
+ ],
18
+ "description": "TuiTui channel plugin for OpenClaw",
19
+ "type": "module",
20
+ "peerDependencies": {
21
+ "openclaw": ">=2026.3.13"
22
+ },
23
+ "dependencies": {
24
+ "@sinclair/typebox": "^0.34.48",
25
+ "ws": "^8.13.0"
26
+ },
27
+ "openclaw": {
28
+ "extensions": [
29
+ "./index.ts"
30
+ ],
31
+ "install": {
32
+ "npmSpec": "@qihoo/tuitui-openclaw-channel",
33
+ "localPath": "extensions/tuitui",
34
+ "defaultChoice": "npm"
35
+ }
36
+ }
37
+ }