@zhin.js/core 1.0.51 → 1.0.52
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 +12 -0
- package/README.md +1 -1
- package/lib/adapter.d.ts +10 -19
- package/lib/adapter.d.ts.map +1 -1
- package/lib/adapter.js +47 -80
- package/lib/adapter.js.map +1 -1
- package/lib/built/common-adapter-tools.d.ts +2 -2
- package/lib/built/common-adapter-tools.js +3 -3
- package/lib/built/common-adapter-tools.js.map +1 -1
- package/lib/built/dispatcher.d.ts +52 -42
- package/lib/built/dispatcher.d.ts.map +1 -1
- package/lib/built/dispatcher.js +194 -60
- package/lib/built/dispatcher.js.map +1 -1
- package/lib/built/skill.d.ts +3 -20
- package/lib/built/skill.d.ts.map +1 -1
- package/lib/built/skill.js +1 -53
- package/lib/built/skill.js.map +1 -1
- package/lib/plugin.d.ts +2 -0
- package/lib/plugin.d.ts.map +1 -1
- package/lib/plugin.js +1 -1
- package/lib/plugin.js.map +1 -1
- package/lib/types.d.ts +13 -0
- package/lib/types.d.ts.map +1 -1
- package/lib/utils.js +1 -1
- package/package.json +6 -6
- package/src/adapter.ts +51 -95
- package/src/built/common-adapter-tools.ts +3 -3
- package/src/built/dispatcher.ts +264 -99
- package/src/built/skill.ts +3 -75
- package/src/plugin.ts +11 -5
- package/src/types.ts +16 -0
- package/src/utils.ts +1 -1
- package/tests/adapter.test.ts +40 -128
- package/tests/dispatcher.test.ts +155 -8
- package/tests/redos-protection.test.ts +5 -4
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,17 @@
|
|
|
1
1
|
# @zhin.js/core
|
|
2
2
|
|
|
3
|
+
## 1.0.52
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- bb6bfa8: feat: MessageDispatcher 双轨分流(指令+AI)、出站润色管道;技能扫描含插件包 `skills/`
|
|
8
|
+
- bb6bfa8: feat: 技能全面文件化——仓库内插件/适配器使用 `skills/<name>/SKILL.md`;Core 已移除 `plugin.declareSkill` / `Adapter.declareSkill` API
|
|
9
|
+
- @zhin.js/database@1.0.39
|
|
10
|
+
- @zhin.js/logger@0.1.36
|
|
11
|
+
- @zhin.js/schema@1.0.36
|
|
12
|
+
- @zhin.js/ai@1.0.13
|
|
13
|
+
- @zhin.js/kernel@0.0.13
|
|
14
|
+
|
|
3
15
|
## 1.0.51
|
|
4
16
|
|
|
5
17
|
### Patch Changes
|
package/README.md
CHANGED
|
@@ -52,7 +52,7 @@ Feature 是 Zhin.js 的核心扩展机制。所有内置功能均继承自 `Feat
|
|
|
52
52
|
Feature (抽象基类)
|
|
53
53
|
├── CommandFeature — 消息命令 addCommand()
|
|
54
54
|
├── ToolFeature — AI 可调用工具 addTool()
|
|
55
|
-
├── SkillFeature —
|
|
55
|
+
├── SkillFeature — 技能记录 Agent 从 SKILL.md 注入
|
|
56
56
|
├── CronFeature — 定时任务 addCron()
|
|
57
57
|
├── DatabaseFeature — 数据模型 defineModel()
|
|
58
58
|
├── ComponentFeature — 消息组件 addComponent()
|
package/lib/adapter.d.ts
CHANGED
|
@@ -10,10 +10,11 @@ import { type ToolInput } from "./built/tool.js";
|
|
|
10
10
|
* Adapter 类:适配器抽象,管理多平台 Bot 实例。
|
|
11
11
|
* 负责根据配置启动/关闭各平台机器人,统一异常处理。
|
|
12
12
|
*
|
|
13
|
-
* 适配器可提供 AI
|
|
14
|
-
*
|
|
13
|
+
* 适配器可提供 AI 工具;群管等由各 IM 平台在子类中实现方法并注册 Tool(如 createGroupManagementTools)。
|
|
14
|
+
* 面向 AI 的技能说明请使用包内 `skills/<name>/SKILL.md`(由 Agent 扫描),不再提供代码内 declareSkill。
|
|
15
15
|
*/
|
|
16
16
|
export declare abstract class Adapter<R extends Bot = Bot> extends EventEmitter<Adapter.Lifecycle> {
|
|
17
|
+
#private;
|
|
17
18
|
plugin: Plugin;
|
|
18
19
|
name: keyof Plugin.Contexts;
|
|
19
20
|
config: Adapter.BotConfig<R>[];
|
|
@@ -21,17 +22,22 @@ export declare abstract class Adapter<R extends Bot = Bot> extends EventEmitter<
|
|
|
21
22
|
bots: Map<string, R>;
|
|
22
23
|
/** 适配器提供的工具 */
|
|
23
24
|
tools: Map<string, Tool>;
|
|
24
|
-
/** Skill 注销函数(declareSkill 时设置) */
|
|
25
|
-
private _skillDispose?;
|
|
26
25
|
/**
|
|
27
26
|
* 构造函数
|
|
28
27
|
* @param name 适配器名称(如 'process'、'qq' 等)
|
|
29
28
|
* @param botFactory Bot工厂函数或构造器
|
|
30
29
|
*/
|
|
31
30
|
constructor(plugin: Plugin, name: keyof Plugin.Contexts, config: Adapter.BotConfig<R>[]);
|
|
31
|
+
/**
|
|
32
|
+
* 入站顺序:await MessageDispatcher.dispatch → await 根插件 message.receive(生命周期)→
|
|
33
|
+
* 再同步调用本适配器上通过 `adapter.on('message.receive')` 注册的观察者(如控制台 UI)。
|
|
34
|
+
* 不再使用无 Dispatcher 时的根 middleware 回退。
|
|
35
|
+
*/
|
|
36
|
+
emit<K extends keyof Adapter.Lifecycle>(eventName: K, ...args: Adapter.Lifecycle[K]): boolean;
|
|
32
37
|
abstract createBot(config: Adapter.BotConfig<R>): R;
|
|
33
38
|
get logger(): import("@zhin.js/logger").Logger;
|
|
34
39
|
binding(plugin: Plugin): void;
|
|
40
|
+
/** 出站统一预处理:`MessageDispatcher.replyWithPolish` 与任意 `$reply` 最终都走此处。润色见 `addOutboundPolish`(注册额外的 before.sendMessage)。 */
|
|
35
41
|
private renderSendMessage;
|
|
36
42
|
sendMessage(options: SendOptions): Promise<string>;
|
|
37
43
|
start(): Promise<void>;
|
|
@@ -57,21 +63,6 @@ export declare abstract class Adapter<R extends Bot = Bot> extends EventEmitter<
|
|
|
57
63
|
* @returns 工具定义或 undefined
|
|
58
64
|
*/
|
|
59
65
|
getTool(name: string): Tool | undefined;
|
|
60
|
-
/**
|
|
61
|
-
* 声明适配器的 Skill(将 this.tools 聚合为一个 Skill 注册到 SkillFeature)
|
|
62
|
-
*
|
|
63
|
-
* @param metadata Skill 元数据
|
|
64
|
-
* - description: 平台级能力描述
|
|
65
|
-
* - keywords: 额外的触发关键词(可选,会自动从工具中聚合)
|
|
66
|
-
* - tags: 额外的分类标签(可选,会自动从工具中聚合)
|
|
67
|
-
* - conventions: 平台调用约定(可选,拼接到 description 末尾)
|
|
68
|
-
*/
|
|
69
|
-
declareSkill(metadata: {
|
|
70
|
-
description: string;
|
|
71
|
-
keywords?: string[];
|
|
72
|
-
tags?: string[];
|
|
73
|
-
conventions?: string;
|
|
74
|
-
}): void;
|
|
75
66
|
/**
|
|
76
67
|
* 提供默认的适配器工具(子类可覆盖)
|
|
77
68
|
* 包含发送消息、撤回消息等基础能力
|
package/lib/adapter.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../src/adapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAC/B,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,MAAM,EAAc,MAAM,aAAa,CAAC;AACjD,OAAO,EAAE,OAAO,EAAe,MAAM,cAAc,CAAC;AACpD,OAAO,EAAqB,WAAW,EAAE,IAAI,EAA0B,MAAM,YAAY,CAAC;AAE1F,OAAO,EAAwB,KAAK,SAAS,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../src/adapter.ts"],"names":[],"mappings":"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"}
|
package/lib/adapter.js
CHANGED
|
@@ -5,8 +5,8 @@ import { isZhinTool } from "./built/tool.js";
|
|
|
5
5
|
* Adapter 类:适配器抽象,管理多平台 Bot 实例。
|
|
6
6
|
* 负责根据配置启动/关闭各平台机器人,统一异常处理。
|
|
7
7
|
*
|
|
8
|
-
* 适配器可提供 AI
|
|
9
|
-
*
|
|
8
|
+
* 适配器可提供 AI 工具;群管等由各 IM 平台在子类中实现方法并注册 Tool(如 createGroupManagementTools)。
|
|
9
|
+
* 面向 AI 的技能说明请使用包内 `skills/<name>/SKILL.md`(由 Agent 扫描),不再提供代码内 declareSkill。
|
|
10
10
|
*/
|
|
11
11
|
export class Adapter extends EventEmitter {
|
|
12
12
|
plugin;
|
|
@@ -16,8 +16,6 @@ export class Adapter extends EventEmitter {
|
|
|
16
16
|
bots = new Map();
|
|
17
17
|
/** 适配器提供的工具 */
|
|
18
18
|
tools = new Map();
|
|
19
|
-
/** Skill 注销函数(declareSkill 时设置) */
|
|
20
|
-
_skillDispose;
|
|
21
19
|
/**
|
|
22
20
|
* 构造函数
|
|
23
21
|
* @param name 适配器名称(如 'process'、'qq' 等)
|
|
@@ -35,23 +33,6 @@ export class Adapter extends EventEmitter {
|
|
|
35
33
|
this.logger.info(`${bot_id} recall ${id}`);
|
|
36
34
|
await bot.$recallMessage(id);
|
|
37
35
|
});
|
|
38
|
-
this.on('message.receive', (message) => {
|
|
39
|
-
this.logger.info(`${message.$bot} recv ${message.$channel.type}(${message.$channel.id}):${segment.raw(message.$content)}`);
|
|
40
|
-
const rootPlugin = this.plugin?.root || this.plugin;
|
|
41
|
-
// 优先使用 MessageDispatcher(新架构),回退到旧中间件链(兼容)
|
|
42
|
-
const dispatcher = rootPlugin?.inject('dispatcher');
|
|
43
|
-
if (dispatcher && typeof dispatcher.dispatch === 'function') {
|
|
44
|
-
void dispatcher.dispatch(message).catch((err) => {
|
|
45
|
-
this.logger.error('dispatcher.dispatch(message) failed', err);
|
|
46
|
-
});
|
|
47
|
-
}
|
|
48
|
-
else {
|
|
49
|
-
// 旧中间件链回退
|
|
50
|
-
void Promise.resolve(rootPlugin?.middleware(message, async () => { })).catch((err) => {
|
|
51
|
-
this.logger.error('rootPlugin.middleware(message, next) failed', err);
|
|
52
|
-
});
|
|
53
|
-
}
|
|
54
|
-
});
|
|
55
36
|
this.on('notice.receive', (notice) => {
|
|
56
37
|
this.logger.info(`${notice.$bot} notice ${notice.$type}${notice.$subType ? '.' + notice.$subType : ''} ${notice.$channel.type}(${notice.$channel.id})`);
|
|
57
38
|
const rootPlugin = this.plugin?.root || this.plugin;
|
|
@@ -68,6 +49,50 @@ export class Adapter extends EventEmitter {
|
|
|
68
49
|
rootPlugin?.dispatch(`request.${request.$type}`, request);
|
|
69
50
|
});
|
|
70
51
|
}
|
|
52
|
+
/**
|
|
53
|
+
* 入站顺序:await MessageDispatcher.dispatch → await 根插件 message.receive(生命周期)→
|
|
54
|
+
* 再同步调用本适配器上通过 `adapter.on('message.receive')` 注册的观察者(如控制台 UI)。
|
|
55
|
+
* 不再使用无 Dispatcher 时的根 middleware 回退。
|
|
56
|
+
*/
|
|
57
|
+
emit(eventName, ...args) {
|
|
58
|
+
if (eventName === 'message.receive') {
|
|
59
|
+
const message = args[0];
|
|
60
|
+
void this.#deliverInboundMessage(message);
|
|
61
|
+
return true;
|
|
62
|
+
}
|
|
63
|
+
return super.emit(eventName, ...args);
|
|
64
|
+
}
|
|
65
|
+
async #deliverInboundMessage(message) {
|
|
66
|
+
this.logger.info(`${message.$bot} recv ${message.$channel.type}(${message.$channel.id}):${segment.raw(message.$content)}`);
|
|
67
|
+
const rootPlugin = this.plugin?.root || this.plugin;
|
|
68
|
+
const dispatcher = rootPlugin?.inject('dispatcher');
|
|
69
|
+
if (dispatcher && typeof dispatcher.dispatch === 'function') {
|
|
70
|
+
try {
|
|
71
|
+
await dispatcher.dispatch(message);
|
|
72
|
+
}
|
|
73
|
+
catch (err) {
|
|
74
|
+
this.logger.error('dispatcher.dispatch(message) failed', err);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
else {
|
|
78
|
+
this.logger.error('MessageDispatcher missing: inject("dispatcher").dispatch is required for inbound routing (legacy root middleware path removed).');
|
|
79
|
+
}
|
|
80
|
+
try {
|
|
81
|
+
await rootPlugin?.dispatch('message.receive', message);
|
|
82
|
+
}
|
|
83
|
+
catch (err) {
|
|
84
|
+
this.logger.error('root dispatch message.receive failed', err);
|
|
85
|
+
}
|
|
86
|
+
const observers = this.listeners('message.receive');
|
|
87
|
+
for (const fn of observers) {
|
|
88
|
+
try {
|
|
89
|
+
fn(message);
|
|
90
|
+
}
|
|
91
|
+
catch (e) {
|
|
92
|
+
this.logger.error('adapter message.receive observer failed', e);
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
}
|
|
71
96
|
get logger() {
|
|
72
97
|
if (!this.plugin)
|
|
73
98
|
throw new Error("Adapter is not associated with any plugin");
|
|
@@ -76,6 +101,7 @@ export class Adapter extends EventEmitter {
|
|
|
76
101
|
binding(plugin) {
|
|
77
102
|
this.plugin = plugin;
|
|
78
103
|
}
|
|
104
|
+
/** 出站统一预处理:`MessageDispatcher.replyWithPolish` 与任意 `$reply` 最终都走此处。润色见 `addOutboundPolish`(注册额外的 before.sendMessage)。 */
|
|
79
105
|
async renderSendMessage(options) {
|
|
80
106
|
const fns = this.plugin.root.listeners('before.sendMessage');
|
|
81
107
|
for (const fn of fns) {
|
|
@@ -123,9 +149,6 @@ export class Adapter extends EventEmitter {
|
|
|
123
149
|
}
|
|
124
150
|
// 清理 bots Map
|
|
125
151
|
this.bots.clear();
|
|
126
|
-
// 清理 Skill
|
|
127
|
-
this._skillDispose?.();
|
|
128
|
-
this._skillDispose = undefined;
|
|
129
152
|
// 从 adapters 数组中移除
|
|
130
153
|
const idx = this.plugin.root.adapters.indexOf(this.name);
|
|
131
154
|
if (idx !== -1) {
|
|
@@ -184,62 +207,6 @@ export class Adapter extends EventEmitter {
|
|
|
184
207
|
getTool(name) {
|
|
185
208
|
return this.tools.get(name);
|
|
186
209
|
}
|
|
187
|
-
/**
|
|
188
|
-
* 声明适配器的 Skill(将 this.tools 聚合为一个 Skill 注册到 SkillFeature)
|
|
189
|
-
*
|
|
190
|
-
* @param metadata Skill 元数据
|
|
191
|
-
* - description: 平台级能力描述
|
|
192
|
-
* - keywords: 额外的触发关键词(可选,会自动从工具中聚合)
|
|
193
|
-
* - tags: 额外的分类标签(可选,会自动从工具中聚合)
|
|
194
|
-
* - conventions: 平台调用约定(可选,拼接到 description 末尾)
|
|
195
|
-
*/
|
|
196
|
-
declareSkill(metadata) {
|
|
197
|
-
const skillFeature = this.plugin?.root?.inject('skill');
|
|
198
|
-
if (!skillFeature) {
|
|
199
|
-
this.logger.debug(`declareSkill: SkillFeature 不可用,跳过 Skill 注册`);
|
|
200
|
-
return;
|
|
201
|
-
}
|
|
202
|
-
// 收集适配器所有工具
|
|
203
|
-
const tools = this.getTools();
|
|
204
|
-
// 聚合关键词:metadata 声明 + 工具自带
|
|
205
|
-
const allKeywords = new Set(metadata.keywords || []);
|
|
206
|
-
for (const tool of tools) {
|
|
207
|
-
if (tool.keywords) {
|
|
208
|
-
for (const kw of tool.keywords) {
|
|
209
|
-
allKeywords.add(kw);
|
|
210
|
-
}
|
|
211
|
-
}
|
|
212
|
-
}
|
|
213
|
-
// 聚合标签:metadata 声明 + 工具自带
|
|
214
|
-
const allTags = new Set(metadata.tags || []);
|
|
215
|
-
for (const tool of tools) {
|
|
216
|
-
if (tool.tags) {
|
|
217
|
-
for (const tag of tool.tags) {
|
|
218
|
-
allTags.add(tag);
|
|
219
|
-
}
|
|
220
|
-
}
|
|
221
|
-
}
|
|
222
|
-
// 拼接描述:基础描述 + 调用约定
|
|
223
|
-
let description = metadata.description;
|
|
224
|
-
if (metadata.conventions) {
|
|
225
|
-
description += `\n\n调用约定:${metadata.conventions}`;
|
|
226
|
-
}
|
|
227
|
-
const pluginName = this.plugin?.name || `adapter:${this.name}`;
|
|
228
|
-
const skill = {
|
|
229
|
-
name: `adapter:${this.name}`,
|
|
230
|
-
description,
|
|
231
|
-
tools,
|
|
232
|
-
keywords: Array.from(allKeywords),
|
|
233
|
-
tags: Array.from(allTags),
|
|
234
|
-
pluginName,
|
|
235
|
-
};
|
|
236
|
-
// 清理旧的 Skill(如果有)
|
|
237
|
-
this._skillDispose?.();
|
|
238
|
-
// 注册到 SkillFeature
|
|
239
|
-
this._skillDispose = skillFeature.add(skill, pluginName);
|
|
240
|
-
this.plugin?.recordFeatureContribution('skill', `adapter:${this.name}`);
|
|
241
|
-
this.logger.debug(`declareSkill: 已注册 Skill "${skill.name}",包含 ${tools.length} 个工具`);
|
|
242
|
-
}
|
|
243
210
|
/**
|
|
244
211
|
* 提供默认的适配器工具(子类可覆盖)
|
|
245
212
|
* 包含发送消息、撤回消息等基础能力
|
package/lib/adapter.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"adapter.js","sourceRoot":"","sources":["../src/adapter.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAKtC,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AACrC,OAAO,EAAY,UAAU,EAAkB,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"adapter.js","sourceRoot":"","sources":["../src/adapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,14 +3,14 @@
|
|
|
3
3
|
*
|
|
4
4
|
* 设计理念:
|
|
5
5
|
* 各 IM 平台在适配器内自行实现群管方法(kickMember、muteMember 等),
|
|
6
|
-
* 并自行注册 Tool
|
|
6
|
+
* 并自行注册 Tool;平台说明使用包内 `skills/<adapter>/SKILL.md`。
|
|
7
7
|
*
|
|
8
8
|
* 使用方式(在各适配器 start 或注册方法中):
|
|
9
9
|
*
|
|
10
10
|
* import { createGroupManagementTools, GROUP_MANAGEMENT_SKILL_KEYWORDS, GROUP_MANAGEMENT_SKILL_TAGS } from 'zhin.js';
|
|
11
11
|
* const tools = createGroupManagementTools(this, this.name);
|
|
12
12
|
* tools.forEach(t => this.addTool(t));
|
|
13
|
-
*
|
|
13
|
+
* // 另:包内 skills/<name>/SKILL.md 供 Agent 发现
|
|
14
14
|
*/
|
|
15
15
|
import type { Tool, ToolPermissionLevel } from '../types.js';
|
|
16
16
|
/**
|
|
@@ -3,14 +3,14 @@
|
|
|
3
3
|
*
|
|
4
4
|
* 设计理念:
|
|
5
5
|
* 各 IM 平台在适配器内自行实现群管方法(kickMember、muteMember 等),
|
|
6
|
-
* 并自行注册 Tool
|
|
6
|
+
* 并自行注册 Tool;平台说明使用包内 `skills/<adapter>/SKILL.md`。
|
|
7
7
|
*
|
|
8
8
|
* 使用方式(在各适配器 start 或注册方法中):
|
|
9
9
|
*
|
|
10
10
|
* import { createGroupManagementTools, GROUP_MANAGEMENT_SKILL_KEYWORDS, GROUP_MANAGEMENT_SKILL_TAGS } from 'zhin.js';
|
|
11
11
|
* const tools = createGroupManagementTools(this, this.name);
|
|
12
12
|
* tools.forEach(t => this.addTool(t));
|
|
13
|
-
*
|
|
13
|
+
* // 另:包内 skills/<name>/SKILL.md 供 Agent 发现
|
|
14
14
|
*/
|
|
15
15
|
export const GROUP_METHOD_SPECS = [
|
|
16
16
|
{
|
|
@@ -124,7 +124,7 @@ export const GROUP_METHOD_SPECS = [
|
|
|
124
124
|
},
|
|
125
125
|
];
|
|
126
126
|
// ============================================================================
|
|
127
|
-
// Skill
|
|
127
|
+
// Skill 常量(群管相关 SKILL.md 与文档可复用 keywords/tags)
|
|
128
128
|
// ============================================================================
|
|
129
129
|
export const GROUP_MANAGEMENT_SKILL_TAGS = ['group', 'management', 'im', 'admin'];
|
|
130
130
|
export const GROUP_MANAGEMENT_SKILL_KEYWORDS = [
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"common-adapter-tools.js","sourceRoot":"","sources":["../../src/built/common-adapter-tools.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"common-adapter-tools.js","sourceRoot":"","sources":["../../src/built/common-adapter-tools.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAwCH,MAAM,CAAC,MAAM,kBAAkB,GAAsB;IACnD;QACE,MAAM,EAAE,YAAY;QACpB,UAAU,EAAE,aAAa;QACzB,WAAW,EAAE,mGAAmG;QAChH,QAAQ,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC;QACnC,eAAe,EAAE,aAAa;QAC9B,WAAW,EAAE;YACX,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,sCAAsC,EAAE;SACjF;QACD,aAAa,EAAE,CAAC,SAAS,CAAC;KAC3B;IACD;QACE,MAAM,EAAE,YAAY;QACpB,UAAU,EAAE,aAAa;QACzB,WAAW,EAAE,yHAAyH;QACtI,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC;QAClD,eAAe,EAAE,aAAa;QAC9B,WAAW,EAAE;YACX,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,sCAAsC,EAAE;YAChF,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,qEAAqE,EAAE,OAAO,EAAE,GAAG,EAAE;SAC/H;QACD,aAAa,EAAE,CAAC,SAAS,CAAC;KAC3B;IACD;QACE,MAAM,EAAE,mBAAmB;QAC3B,UAAU,EAAE,cAAc;QAC1B,WAAW,EAAE,0EAA0E;QACvF,QAAQ,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,KAAK,CAAC;QACjD,eAAe,EAAE,aAAa;QAC9B,WAAW,EAAE;YACX,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,sCAAsC,EAAE;YAChF,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,UAAU,EAAE;SACtD;QACD,aAAa,EAAE,CAAC,SAAS,EAAE,UAAU,CAAC;KACvC;IACD;QACE,MAAM,EAAE,UAAU;QAClB,UAAU,EAAE,WAAW;QACvB,WAAW,EAAE,gHAAgH;QAC7H,QAAQ,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;QAC1D,eAAe,EAAE,aAAa;QAC9B,WAAW,EAAE;YACX,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,sCAAsC,EAAE;YAChF,MAAM,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,2BAA2B,EAAE,OAAO,EAAE,IAAI,EAAE;SACrF;QACD,aAAa,EAAE,CAAC,SAAS,CAAC;KAC3B;IACD;QACE,MAAM,EAAE,aAAa;QACrB,UAAU,EAAE,cAAc;QAC1B,WAAW,EAAE,mGAAmG;QAChH,QAAQ,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC;QACvD,eAAe,EAAE,MAAM;QACvB,WAAW,EAAE,EAAE;QACf,aAAa,EAAE,IAAI;KACpB;IACD;QACE,MAAM,EAAE,WAAW;QACnB,UAAU,EAAE,YAAY;QACxB,WAAW,EAAE,uGAAuG;QACpH,QAAQ,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC;QACpC,eAAe,EAAE,aAAa;QAC9B,WAAW,EAAE;YACX,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,sCAAsC,EAAE;YAChF,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,iBAAiB,EAAE;SAC3D;QACD,aAAa,EAAE,CAAC,SAAS,CAAC;KAC3B;IACD;QACE,MAAM,EAAE,aAAa;QACrB,UAAU,EAAE,cAAc;QAC1B,WAAW,EAAE,uEAAuE;QACpF,QAAQ,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC;QAC1C,eAAe,EAAE,aAAa;QAC9B,WAAW,EAAE;YACX,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,sCAAsC,EAAE;SACjF;QACD,aAAa,EAAE,CAAC,SAAS,CAAC;KAC3B;IACD;QACE,MAAM,EAAE,cAAc;QACtB,UAAU,EAAE,gBAAgB;QAC5B,WAAW,EAAE,0BAA0B;QACvC,QAAQ,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,CAAC;QAC5C,eAAe,EAAE,aAAa;QAC9B,WAAW,EAAE;YACX,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,EAAE;SAC9C;QACD,aAAa,EAAE,CAAC,MAAM,CAAC;KACxB;IACD;QACE,MAAM,EAAE,SAAS;QACjB,UAAU,EAAE,UAAU;QACtB,WAAW,EAAE,mFAAmF;QAChG,QAAQ,EAAE,CAAC,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,CAAC;QAC9C,eAAe,EAAE,aAAa;QAC9B,WAAW,EAAE;YACX,MAAM,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,0BAA0B,EAAE,OAAO,EAAE,IAAI,EAAE;SACpF;KACF;IACD;QACE,MAAM,EAAE,cAAc;QACtB,UAAU,EAAE,gBAAgB;QAC5B,WAAW,EAAE,yCAAyC;QACtD,QAAQ,EAAE,CAAC,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,KAAK,CAAC;QAC7C,eAAe,EAAE,MAAM;QACvB,WAAW,EAAE,EAAE;QACf,aAAa,EAAE,IAAI;KACpB;CACF,CAAC;AAEF,+EAA+E;AAC/E,+CAA+C;AAC/C,+EAA+E;AAE/E,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAAC,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;AAClF,MAAM,CAAC,MAAM,+BAA+B,GAAG;IAC7C,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI;IACpC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS;CAChD,CAAC;AAEF,+EAA+E;AAC/E,kDAAkD;AAClD,+EAA+E;AAE/E,MAAM,UAAU,0BAA0B,CACxC,OAAyB,EACzB,MAAc;IAEd,MAAM,KAAK,GAAW,EAAE,CAAC;IACzB,KAAK,MAAM,IAAI,IAAI,kBAAkB,EAAE,CAAC;QACtC,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAChC,IAAI,OAAO,EAAE,KAAK,UAAU;YAAE,SAAS;QAEvC,MAAM,UAAU,GAAwB;YACtC,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,QAAQ,EAAE,UAAU,EAAE,OAAO,EAAE;YACtE,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE;SAC7E,CAAC;QACF,MAAM,QAAQ,GAAa,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;QAClD,KAAK,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC;YAC9D,UAAU,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC;QAC5B,CAAC;QACD,IAAI,IAAI,CAAC,aAAa;YAAE,QAAQ,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC;QAE7D,MAAM,OAAO,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACjC,KAAK,CAAC,IAAI,CAAC;YACT,IAAI,EAAE,GAAG,MAAM,IAAI,IAAI,CAAC,UAAU,EAAE;YACpC,WAAW,EAAE,GAAG,IAAI,CAAC,WAAW,KAAK,MAAM,GAAG;YAC9C,UAAU,EAAE,EAAE,IAAI,EAAE,QAAiB,EAAE,UAAU,EAAE,QAAQ,EAAE;YAC7D,OAAO,EAAE,KAAK,EAAE,IAAyB,EAAE,EAAE;gBAC3C,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC;gBAC3C,MAAM,UAAU,GAAG,eAAe,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;gBACxE,OAAQ,OAAyC,CAAC,KAAK,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;YAC/E,CAAC;YACD,IAAI,EAAE,CAAC,OAAO,EAAE,YAAY,EAAE,MAAM,CAAC;YACrC,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,eAAe,EAAE,IAAI,CAAC,eAAe;YACrC,MAAM,EAAE,CAAC,OAAO,EAAE,SAAS,CAAgB;YAC3C,aAAa,EAAE,IAAI,CAAC,aAAa;SAClC,CAAC,CAAC;IACL,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,+EAA+E;AAC/E,wBAAwB;AACxB,+EAA+E;AAE/E,MAAM,UAAU,eAAe,CAC7B,MAA8B,EAC9B,KAAa,EACb,OAAe,EACf,IAAyB;IAEzB,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,YAAY,CAAC,CAAM,OAAO,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QAC9D,KAAK,YAAY,CAAC,CAAM,OAAO,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,QAAQ,IAAI,GAAG,CAAC,CAAC;QACpF,KAAK,mBAAmB,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC/E,KAAK,UAAU,CAAC,CAAQ,OAAO,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,CAAC;QACnF,KAAK,aAAa,CAAC,CAAK,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QAChD,KAAK,WAAW,CAAC,CAAO,OAAO,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QAC3E,KAAK,aAAa,CAAC,CAAK,OAAO,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QAC9D,KAAK,cAAc,CAAC,CAAI,OAAO,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QAC3D,KAAK,SAAS,CAAC,CAAS,OAAO,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,CAAC;QACrE,KAAK,cAAc,CAAC,CAAI,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QAChD,OAAO,CAAC,CAAgB,OAAO,CAAC,KAAK,EAAE,OAAO,EAAE,GAAI,MAAM,CAAC,MAAM,CAAC,IAAI,CAAW,CAAC,CAAC;IACrF,CAAC;AACH,CAAC"}
|
|
@@ -11,23 +11,30 @@
|
|
|
11
11
|
* ▼
|
|
12
12
|
* ┌────────────────────────────────────────┐
|
|
13
13
|
* │ Stage 2: Route(路径判定) │
|
|
14
|
-
* │
|
|
15
|
-
* │
|
|
14
|
+
* │ exclusive:命令与 AI 互斥(旧行为) │
|
|
15
|
+
* │ dual:命令与 AI 独立判定,可同时命中 │
|
|
16
16
|
* └──────────────┬─────────────────────────┘
|
|
17
17
|
* ▼
|
|
18
18
|
* ┌────────────────────────────────────────┐
|
|
19
19
|
* │ Stage 3: Handle(处理) │
|
|
20
20
|
* │ Command: commandService.handle() │
|
|
21
21
|
* │ AI: aiHandler (由 AI 模块注册) │
|
|
22
|
+
* │ 出站:replyWithPolish → $reply → Adapter.sendMessage → before.sendMessage │
|
|
22
23
|
* └────────────────────────────────────────┘
|
|
23
24
|
*
|
|
24
25
|
* 注意:Context key 为 'dispatcher',避免与 HTTP 模块的 'router' 冲突。
|
|
26
|
+
*
|
|
27
|
+
* 默认路由为 exclusive(命令与 AI 互斥);需双轨时请显式 dualRoute.mode: 'dual'。
|
|
25
28
|
*/
|
|
26
29
|
import { Message } from '../message.js';
|
|
27
|
-
import type { MessageMiddleware, RegisteredAdapter, MaybePromise } from '../types.js';
|
|
30
|
+
import type { MessageMiddleware, RegisteredAdapter, MaybePromise, SendContent, OutboundReplySource, OutboundPolishMiddleware } from '../types.js';
|
|
28
31
|
import type { Context } from '../plugin.js';
|
|
32
|
+
export declare function getOutboundReplyStore(): {
|
|
33
|
+
message: Message<any>;
|
|
34
|
+
source: OutboundReplySource;
|
|
35
|
+
} | undefined;
|
|
29
36
|
/**
|
|
30
|
-
*
|
|
37
|
+
* 路由判定结果(互斥模式 legacy)
|
|
31
38
|
*/
|
|
32
39
|
export type RouteResult = {
|
|
33
40
|
type: 'command';
|
|
@@ -37,6 +44,23 @@ export type RouteResult = {
|
|
|
37
44
|
} | {
|
|
38
45
|
type: 'skip';
|
|
39
46
|
};
|
|
47
|
+
/**
|
|
48
|
+
* 双轨分流配置
|
|
49
|
+
*/
|
|
50
|
+
export interface DualRouteConfig {
|
|
51
|
+
/**
|
|
52
|
+
* exclusive:与旧版一致,命中命令则不再走 AI;
|
|
53
|
+
* dual:命令与 AI 独立判定,可同时执行(顺序由 order 决定)
|
|
54
|
+
*/
|
|
55
|
+
mode?: 'exclusive' | 'dual';
|
|
56
|
+
/** 同时命中时的执行顺序,默认先指令后 AI */
|
|
57
|
+
order?: 'command-first' | 'ai-first';
|
|
58
|
+
/**
|
|
59
|
+
* 是否允许在双命中时各回复一次;为 false 时仅执行 order 中的第一个分支
|
|
60
|
+
*/
|
|
61
|
+
allowDualReply?: boolean;
|
|
62
|
+
}
|
|
63
|
+
export type ResolvedDualRouteConfig = Required<DualRouteConfig>;
|
|
40
64
|
/**
|
|
41
65
|
* AI 处理函数签名
|
|
42
66
|
* 由 AI 模块通过 dispatcher.setAIHandler() 注册
|
|
@@ -44,63 +68,52 @@ export type RouteResult = {
|
|
|
44
68
|
export type AIHandler = (message: Message<any>, content: string) => MaybePromise<void>;
|
|
45
69
|
/**
|
|
46
70
|
* 命令前缀判定函数
|
|
47
|
-
* 返回 true 表示该消息是精确命令调用
|
|
48
71
|
*/
|
|
49
72
|
export type CommandMatcher = (text: string, message: Message<any>) => boolean;
|
|
50
73
|
/**
|
|
51
74
|
* AI 触发判定函数
|
|
52
|
-
* 返回 { triggered, content } 表示是否应该触发 AI 以及提取的内容
|
|
53
75
|
*/
|
|
54
76
|
export type AITriggerMatcher = (message: Message<any>) => {
|
|
55
77
|
triggered: boolean;
|
|
56
78
|
content: string;
|
|
57
79
|
};
|
|
58
|
-
/**
|
|
59
|
-
* Guardrail 中间件
|
|
60
|
-
* 与 MessageMiddleware 签名一致,但语义上只用于鉴权/限流/安全/日志
|
|
61
|
-
* 返回 false 或抛异常表示拦截消息
|
|
62
|
-
*/
|
|
63
80
|
export type GuardrailMiddleware = MessageMiddleware<RegisteredAdapter>;
|
|
64
|
-
/**
|
|
65
|
-
|
|
66
|
-
|
|
81
|
+
/** @alias OutboundReplySource:出站回复来源(指令 / AI) */
|
|
82
|
+
export type ReplySource = OutboundReplySource;
|
|
83
|
+
export interface CreateMessageDispatcherOptions {
|
|
84
|
+
dualRoute?: Partial<DualRouteConfig>;
|
|
85
|
+
}
|
|
67
86
|
export interface MessageDispatcherService {
|
|
68
|
-
/**
|
|
69
|
-
* 调度一条消息 — 这是唯一的入口
|
|
70
|
-
* Adapter 的 message.receive 事件应该调用此方法
|
|
71
|
-
*/
|
|
72
87
|
dispatch(message: Message<any>): Promise<void>;
|
|
73
|
-
/**
|
|
74
|
-
* 注册 Guardrail(护栏中间件)
|
|
75
|
-
* Guardrail 始终执行,用于鉴权、限流、安全过滤、日志等
|
|
76
|
-
* @returns 移除函数
|
|
77
|
-
*/
|
|
78
88
|
addGuardrail(guardrail: GuardrailMiddleware): () => void;
|
|
79
|
-
/**
|
|
80
|
-
* 设置命令匹配器
|
|
81
|
-
* 用于判定消息是否为精确命令调用
|
|
82
|
-
* 默认:检查消息是否以已注册命令的 pattern 开头
|
|
83
|
-
*/
|
|
84
89
|
setCommandMatcher(matcher: CommandMatcher): void;
|
|
90
|
+
setAITriggerMatcher(matcher: AITriggerMatcher): void;
|
|
91
|
+
setAIHandler(handler: AIHandler): void;
|
|
92
|
+
hasAIHandler(): boolean;
|
|
93
|
+
/** 合并更新双轨配置 */
|
|
94
|
+
setDualRouteConfig(config: Partial<DualRouteConfig>): void;
|
|
95
|
+
getDualRouteConfig(): Readonly<ResolvedDualRouteConfig>;
|
|
96
|
+
/** 注册出站润色:挂到根插件 `before.sendMessage`;仅在 `replyWithPolish` 触发的发送中生效(见 getOutboundReplyStore) */
|
|
97
|
+
addOutboundPolish(handler: OutboundPolishMiddleware): () => void;
|
|
85
98
|
/**
|
|
86
|
-
*
|
|
87
|
-
* 用于判定消息是否应该触发 AI 处理
|
|
88
|
-
* 由 AI 模块注册
|
|
99
|
+
* 在 `before.sendMessage` 管道内调用 `message.$reply`(与 Adapter#sendMessage 同一出站链)
|
|
89
100
|
*/
|
|
90
|
-
|
|
101
|
+
replyWithPolish(message: Message<any>, source: ReplySource, content: SendContent): Promise<unknown>;
|
|
91
102
|
/**
|
|
92
|
-
*
|
|
93
|
-
* 由 AI 模块注册,当消息路由到 AI 路径时调用
|
|
103
|
+
* 是否匹配为指令路径(与 dispatch 内判定一致)
|
|
94
104
|
*/
|
|
95
|
-
|
|
105
|
+
matchCommand(message: Message<any>): boolean;
|
|
96
106
|
/**
|
|
97
|
-
*
|
|
107
|
+
* AI 触发判定结果
|
|
98
108
|
*/
|
|
99
|
-
|
|
109
|
+
matchAI(message: Message<any>): {
|
|
110
|
+
triggered: boolean;
|
|
111
|
+
content: string;
|
|
112
|
+
};
|
|
100
113
|
}
|
|
101
114
|
export interface DispatcherContextExtensions {
|
|
102
|
-
/** 注册 Guardrail(护栏中间件) */
|
|
103
115
|
addGuardrail(guardrail: GuardrailMiddleware): () => void;
|
|
116
|
+
addOutboundPolish(handler: OutboundPolishMiddleware): () => void;
|
|
104
117
|
}
|
|
105
118
|
declare module '../plugin.js' {
|
|
106
119
|
namespace Plugin {
|
|
@@ -111,8 +124,5 @@ declare module '../plugin.js' {
|
|
|
111
124
|
}
|
|
112
125
|
}
|
|
113
126
|
}
|
|
114
|
-
|
|
115
|
-
* 创建 MessageDispatcher Context
|
|
116
|
-
*/
|
|
117
|
-
export declare function createMessageDispatcher(): Context<'dispatcher', DispatcherContextExtensions>;
|
|
127
|
+
export declare function createMessageDispatcher(options?: CreateMessageDispatcherOptions): Context<'dispatcher', DispatcherContextExtensions>;
|
|
118
128
|
//# sourceMappingURL=dispatcher.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dispatcher.d.ts","sourceRoot":"","sources":["../../src/built/dispatcher.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"dispatcher.d.ts","sourceRoot":"","sources":["../../src/built/dispatcher.ts"],"names":[],"mappings":"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"}
|