@zhin.js/core 1.2.0 → 1.3.0
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 +9 -9
- package/lib/adapter.d.ts +20 -18
- package/lib/adapter.d.ts.map +1 -1
- package/lib/adapter.js +64 -60
- package/lib/adapter.js.map +1 -1
- package/lib/agent-prompt.d.ts +3 -3
- package/lib/agent-prompt.d.ts.map +1 -1
- package/lib/built/adapter-process.d.ts +5 -4
- package/lib/built/adapter-process.d.ts.map +1 -1
- package/lib/built/adapter-process.js +6 -5
- package/lib/built/adapter-process.js.map +1 -1
- package/lib/built/agent-preset.d.ts +1 -1
- package/lib/built/agent-preset.d.ts.map +1 -1
- package/lib/built/agent-preset.js +1 -1
- package/lib/built/agent-preset.js.map +1 -1
- package/lib/built/ai-trigger.d.ts +13 -13
- package/lib/built/ai-trigger.d.ts.map +1 -1
- package/lib/built/ai-trigger.js +37 -49
- package/lib/built/ai-trigger.js.map +1 -1
- package/lib/built/authorization.d.ts +11 -0
- package/lib/built/authorization.d.ts.map +1 -0
- package/lib/built/authorization.js +53 -0
- package/lib/built/authorization.js.map +1 -0
- package/lib/built/common-adapter-tools.d.ts +21 -14
- package/lib/built/common-adapter-tools.d.ts.map +1 -1
- package/lib/built/common-adapter-tools.js +58 -41
- package/lib/built/common-adapter-tools.js.map +1 -1
- package/lib/built/connect-endpoint-instance.d.ts +18 -0
- package/lib/built/connect-endpoint-instance.d.ts.map +1 -0
- package/lib/built/connect-endpoint-instance.js +41 -0
- package/lib/built/connect-endpoint-instance.js.map +1 -0
- package/lib/built/database.d.ts +4 -0
- package/lib/built/database.d.ts.map +1 -1
- package/lib/built/database.js +8 -0
- package/lib/built/database.js.map +1 -1
- package/lib/built/dispatcher.d.ts.map +1 -1
- package/lib/built/dispatcher.js +3 -0
- package/lib/built/dispatcher.js.map +1 -1
- package/lib/built/endpoint-lifecycle.d.ts +28 -0
- package/lib/built/endpoint-lifecycle.d.ts.map +1 -0
- package/lib/built/endpoint-lifecycle.js +36 -0
- package/lib/built/endpoint-lifecycle.js.map +1 -0
- package/lib/built/inbound-pipeline.d.ts +38 -0
- package/lib/built/inbound-pipeline.d.ts.map +1 -0
- package/lib/built/inbound-pipeline.js +65 -0
- package/lib/built/inbound-pipeline.js.map +1 -0
- package/lib/built/login-assist.d.ts +4 -4
- package/lib/built/login-assist.d.ts.map +1 -1
- package/lib/built/login-assist.js +5 -5
- package/lib/built/login-assist.js.map +1 -1
- package/lib/built/message-enrich.d.ts +40 -0
- package/lib/built/message-enrich.d.ts.map +1 -0
- package/lib/built/message-enrich.js +84 -0
- package/lib/built/message-enrich.js.map +1 -0
- package/lib/built/message-filter.d.ts +4 -4
- package/lib/built/message-filter.d.ts.map +1 -1
- package/lib/built/message-filter.js +4 -4
- package/lib/built/message-filter.js.map +1 -1
- package/lib/built/permission.d.ts +3 -2
- package/lib/built/permission.d.ts.map +1 -1
- package/lib/built/permission.js +38 -45
- package/lib/built/permission.js.map +1 -1
- package/lib/built/permit-check.d.ts +8 -0
- package/lib/built/permit-check.d.ts.map +1 -0
- package/lib/built/permit-check.js +36 -0
- package/lib/built/permit-check.js.map +1 -0
- package/lib/built/permit-parse.d.ts +17 -0
- package/lib/built/permit-parse.d.ts.map +1 -0
- package/lib/built/permit-parse.js +33 -0
- package/lib/built/permit-parse.js.map +1 -0
- package/lib/built/platform-permit.d.ts +21 -0
- package/lib/built/platform-permit.d.ts.map +1 -0
- package/lib/built/platform-permit.js +67 -0
- package/lib/built/platform-permit.js.map +1 -0
- package/lib/built/prepend-quote-context.d.ts +2 -2
- package/lib/built/prepend-quote-context.d.ts.map +1 -1
- package/lib/built/prepend-quote-context.js +11 -11
- package/lib/built/prepend-quote-context.js.map +1 -1
- package/lib/built/queue-im-field-contract.d.ts +1 -1
- package/lib/built/queue-im-field-contract.d.ts.map +1 -1
- package/lib/built/queue-im-field-contract.js +3 -3
- package/lib/built/queue-im-field-contract.js.map +1 -1
- package/lib/built/roles.d.ts +4 -4
- package/lib/built/roles.d.ts.map +1 -1
- package/lib/built/roles.js +4 -4
- package/lib/built/roles.js.map +1 -1
- package/lib/built/tool.d.ts +12 -12
- package/lib/built/tool.d.ts.map +1 -1
- package/lib/built/tool.js +38 -22
- package/lib/built/tool.js.map +1 -1
- package/lib/command.d.ts.map +1 -1
- package/lib/command.js +11 -2
- package/lib/command.js.map +1 -1
- package/lib/component.js +1 -1
- package/lib/component.js.map +1 -1
- package/lib/endpoint-capabilities.d.ts +45 -0
- package/lib/endpoint-capabilities.d.ts.map +1 -0
- package/lib/endpoint-capabilities.js +56 -0
- package/lib/endpoint-capabilities.js.map +1 -0
- package/lib/endpoint.d.ts +15 -0
- package/lib/endpoint.d.ts.map +1 -0
- package/lib/endpoint.js +2 -0
- package/lib/endpoint.js.map +1 -0
- package/lib/errors.d.ts +2 -2
- package/lib/errors.d.ts.map +1 -1
- package/lib/errors.js +4 -4
- package/lib/errors.js.map +1 -1
- package/lib/index.d.ts +12 -3
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +9 -3
- package/lib/index.js.map +1 -1
- package/lib/message.d.ts +3 -3
- package/lib/message.d.ts.map +1 -1
- package/lib/notice.d.ts +4 -3
- package/lib/notice.d.ts.map +1 -1
- package/lib/notice.js.map +1 -1
- package/lib/plugin-context.d.ts +19 -0
- package/lib/plugin-context.d.ts.map +1 -0
- package/lib/plugin-context.js +51 -0
- package/lib/plugin-context.js.map +1 -0
- package/lib/plugin.d.ts +7 -10
- package/lib/plugin.d.ts.map +1 -1
- package/lib/plugin.js +27 -50
- package/lib/plugin.js.map +1 -1
- package/lib/prompt.d.ts.map +1 -1
- package/lib/prompt.js +8 -4
- package/lib/prompt.js.map +1 -1
- package/lib/request.d.ts +3 -3
- package/lib/request.d.ts.map +1 -1
- package/lib/tool-zod.d.ts +3 -2
- package/lib/tool-zod.d.ts.map +1 -1
- package/lib/tool-zod.js +3 -3
- package/lib/tool-zod.js.map +1 -1
- package/lib/types.d.ts +19 -59
- package/lib/types.d.ts.map +1 -1
- package/lib/utils.d.ts.map +1 -1
- package/lib/utils.js +2 -1
- package/lib/utils.js.map +1 -1
- package/package.json +6 -6
- package/lib/bot.d.ts +0 -38
- package/lib/bot.d.ts.map +0 -1
- package/lib/bot.js +0 -2
- package/lib/bot.js.map +0 -1
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# @zhin.js/core
|
|
2
2
|
|
|
3
|
-
Zhin.js IM
|
|
3
|
+
Zhin.js **IM/多通道运行时**包:Plugin、Adapter、**Endpoint**、MessageDispatcher 与统一出站链。**AI 编排(ZhinAgent、工具安全、MCP)在 [`@zhin.js/agent`](../agent/README.md)**;本包仅 selective re-export `@zhin.js/ai` 的 Provider / Agent 原语供插件直接使用。
|
|
4
4
|
|
|
5
5
|
领域词汇见 [CONTEXT.md](./CONTEXT.md);入站/出站流程见 [消息如何流转](../../docs/essentials/message-flow.md)。
|
|
6
6
|
|
|
@@ -110,15 +110,15 @@ Adapter.register('my-platform', MyAdapter)
|
|
|
110
110
|
**群管理能力自动检测:** 适配器基类声明了 `IGroupManagement` 接口中的可选方法(`kickMember`、`muteMember`、`banMember` 等),子类只需覆写自己平台支持的方法,`start()` 会自动检测哪些方法已实现,生成对应的 Tool 并注册为"群聊管理"Skill。目前所有 9 个 IM 适配器(ICQQ、OneBot11、QQ 官方、Telegram、Discord、KOOK、Slack、钉钉、飞书)均已采用此模式:
|
|
111
111
|
|
|
112
112
|
```typescript
|
|
113
|
-
class IcqqAdapter extends Adapter<
|
|
113
|
+
class IcqqAdapter extends Adapter<IcqqEndpoint> {
|
|
114
114
|
// 覆写标准群管方法
|
|
115
|
-
async kickMember(
|
|
116
|
-
const
|
|
117
|
-
if (!
|
|
118
|
-
return
|
|
115
|
+
async kickMember(endpointId: string, sceneId: string, userId: string) {
|
|
116
|
+
const endpoint = this.endpoints.get(endpointId)
|
|
117
|
+
if (!endpoint) throw new Error(`Endpoint ${endpointId} 不存在`)
|
|
118
|
+
return endpoint.kickMember(Number(sceneId), Number(userId), false)
|
|
119
119
|
}
|
|
120
|
-
async muteMember(
|
|
121
|
-
async setAdmin(
|
|
120
|
+
async muteMember(endpointId: string, sceneId: string, userId: string, duration = 600) { /* ... */ }
|
|
121
|
+
async setAdmin(endpointId: string, sceneId: string, userId: string, enable = true) { /* ... */ }
|
|
122
122
|
// ...共覆写 7 个标准方法
|
|
123
123
|
|
|
124
124
|
async start() {
|
|
@@ -173,7 +173,7 @@ export { CommandFeature, ToolFeature, SkillFeature, CronFeature, DatabaseFeature
|
|
|
173
173
|
export { createMessageDispatcher } from './built/dispatcher.js'
|
|
174
174
|
|
|
175
175
|
// 适配器与消息
|
|
176
|
-
export { Adapter, Message, MessageCommand,
|
|
176
|
+
export { Adapter, Message, MessageCommand, Endpoint, segment, ... } from './'
|
|
177
177
|
|
|
178
178
|
// HTML 出站回退
|
|
179
179
|
export { htmlToFallbackText, coerceHtmlSegmentsToText, registerHtmlSegmentFallback } from './built/*.js'
|
package/lib/adapter.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Endpoint } from "./endpoint.js";
|
|
2
|
+
import { DEFAULT_ENDPOINT_CAPABILITIES, type EndpointCapability } from "./endpoint-capabilities.js";
|
|
2
3
|
import { Plugin } from "./plugin.js";
|
|
3
4
|
import { EventEmitter } from "node:events";
|
|
4
5
|
import { Message } from "./message.js";
|
|
@@ -11,13 +12,15 @@ import { SendOptions } from "./types.js";
|
|
|
11
12
|
*
|
|
12
13
|
* 适配器可以提供 AI 工具,供 AI 服务调用。
|
|
13
14
|
*/
|
|
14
|
-
export declare abstract class Adapter<R extends
|
|
15
|
+
export declare abstract class Adapter<R extends Endpoint = Endpoint, const Caps extends readonly EndpointCapability[] = typeof DEFAULT_ENDPOINT_CAPABILITIES> extends EventEmitter<Adapter.Lifecycle> {
|
|
15
16
|
#private;
|
|
16
17
|
plugin: Plugin;
|
|
17
18
|
name: keyof Plugin.Contexts;
|
|
18
|
-
config: Adapter.
|
|
19
|
-
|
|
19
|
+
config: Adapter.EndpointConfig<R>[];
|
|
20
|
+
endpoints: Map<string, R>;
|
|
20
21
|
private recallMessageHandler;
|
|
22
|
+
/** Adapter 支持的能力上限(子类覆盖) */
|
|
23
|
+
static readonly capabilities: readonly EndpointCapability[];
|
|
21
24
|
/** 并发上限,0 表示不限制(默认) */
|
|
22
25
|
static DEFAULT_MAX_CONCURRENT_MESSAGES: number;
|
|
23
26
|
get maxConcurrentMessages(): number;
|
|
@@ -26,17 +29,17 @@ export declare abstract class Adapter<R extends Bot = Bot> extends EventEmitter<
|
|
|
26
29
|
/**
|
|
27
30
|
* 构造函数
|
|
28
31
|
* @param name 适配器名称(如 'process'、'qq' 等)
|
|
29
|
-
* @param
|
|
32
|
+
* @param endpointFactory Bot工厂函数或构造器
|
|
30
33
|
*/
|
|
31
|
-
constructor(plugin: Plugin, name: keyof Plugin.Contexts, config: Adapter.
|
|
34
|
+
constructor(plugin: Plugin, name: keyof Plugin.Contexts, config: Adapter.EndpointConfig<R>[]);
|
|
35
|
+
/** 入站消息管线(替代 emit override 的隐式管线) */
|
|
36
|
+
private inboundPipeline;
|
|
32
37
|
/**
|
|
33
|
-
* 重写 emit:拦截 message.receive
|
|
34
|
-
*
|
|
35
|
-
*
|
|
36
|
-
* 以属性 + `EventEmitter.prototype.emit` 调用满足 Node @types 25 对泛型 `emit` 的可赋值检查。
|
|
38
|
+
* 重写 emit:拦截 message.receive/notice.receive/request.receive 事件,
|
|
39
|
+
* 将入站处理委托给 InboundMessagePipeline。
|
|
37
40
|
*/
|
|
38
41
|
emit: EventEmitter<Adapter.Lifecycle>['emit'];
|
|
39
|
-
abstract
|
|
42
|
+
abstract createEndpoint(config: Adapter.EndpointConfig<R>): R;
|
|
40
43
|
get logger(): import("@zhin.js/logger").Logger;
|
|
41
44
|
binding(plugin: Plugin): void;
|
|
42
45
|
/**
|
|
@@ -53,8 +56,7 @@ export declare abstract class Adapter<R extends Bot = Bot> extends EventEmitter<
|
|
|
53
56
|
sendMessage(options: SendOptions): Promise<string>;
|
|
54
57
|
start(): Promise<void>;
|
|
55
58
|
/**
|
|
56
|
-
* 停止适配器,断开并移除所有
|
|
57
|
-
* @param plugin 所属插件实例
|
|
59
|
+
* 停止适配器,断开并移除所有 Endpoint 实例
|
|
58
60
|
*/
|
|
59
61
|
stop(): Promise<void>;
|
|
60
62
|
}
|
|
@@ -62,7 +64,7 @@ export interface Adapters {
|
|
|
62
64
|
}
|
|
63
65
|
export declare namespace Adapter {
|
|
64
66
|
type Factory<R extends Adapter = Adapter> = {
|
|
65
|
-
new (plugin: Plugin, name: string, config: Adapter.
|
|
67
|
+
new (plugin: Plugin, name: string, config: Adapter.EndpointConfig<Adapter.InferEndpoint<R>>[]): R;
|
|
66
68
|
};
|
|
67
69
|
interface Lifecycle {
|
|
68
70
|
'message.receive': [Message];
|
|
@@ -77,10 +79,10 @@ export declare namespace Adapter {
|
|
|
77
79
|
* 适配器工厂注册表
|
|
78
80
|
* 灵感来源于 zhinjs/next 的 Adapter.Registry
|
|
79
81
|
*/
|
|
80
|
-
const Registry: Map<string, Factory<Adapter<
|
|
81
|
-
type
|
|
82
|
-
type
|
|
83
|
-
type
|
|
82
|
+
const Registry: Map<string, Factory<Adapter<Endpoint, readonly EndpointCapability[]>>>;
|
|
83
|
+
type InferEndpoint<R extends Adapter = Adapter> = R extends Adapter<infer T> ? T : never;
|
|
84
|
+
type EndpointConfig<T extends Endpoint> = T extends Endpoint<infer R> ? R : never;
|
|
85
|
+
type EndpointMessage<T extends Endpoint> = T extends Endpoint<infer _L, infer R> ? R : never;
|
|
84
86
|
/**
|
|
85
87
|
* 注册适配器工厂
|
|
86
88
|
*
|
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,
|
|
1
|
+
{"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../src/adapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAEL,6BAA6B,EAE7B,KAAK,kBAAkB,EACxB,MAAM,4BAA4B,CAAC;AAEpC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAqB,WAAW,EAAE,MAAM,YAAY,CAAC;AAO5D;;;;;GAKG;AACH,8BAAsB,OAAO,CAC3B,CAAC,SAAS,QAAQ,GAAG,QAAQ,EAC7B,KAAK,CAAC,IAAI,SAAS,SAAS,kBAAkB,EAAE,GAAG,OAAO,6BAA6B,CACvF,SAAQ,YAAY,CAAC,OAAO,CAAC,SAAS,CAAC;;IAiC9B,MAAM,EAAE,MAAM;IACd,IAAI,EAAE,MAAM,MAAM,CAAC,QAAQ;IAC3B,MAAM,EAAE,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE;IAlCrC,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,CAAwB;IACxD,OAAO,CAAC,oBAAoB,CAAoC;IAEhE,4BAA4B;IAC5B,MAAM,CAAC,QAAQ,CAAC,YAAY,EAAE,SAAS,kBAAkB,EAAE,CAAiC;IAI5F,uBAAuB;IACvB,MAAM,CAAC,+BAA+B,SAAK;IAE3C,IAAI,qBAAqB,IAAI,MAAM,CAQlC;IAED,iBAAiB;IACjB,IAAI,eAAe,IAAI,MAAM,CAE5B;IAED;;;;OAIG;gBAEM,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,MAAM,CAAC,QAAQ,EAC3B,MAAM,EAAE,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE;IAoB5C,qCAAqC;IACrC,OAAO,CAAC,eAAe,CAA0B;IAEjD;;;OAGG;IACM,IAAI,EAAE,YAAY,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,CA+BR;IAC9C,QAAQ,CAAC,cAAc,CAAC,MAAM,EAAE,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,GAAG,CAAC;IAC7D,IAAI,MAAM,qCAGT;IACD,OAAO,CAAC,MAAM,EAAE,MAAM;IAItB;;OAEG;IACH,4BAA4B,IAAI;QAC9B,KAAK,CAAC,EAAE,OAAO,CAAC;QAChB,KAAK,CAAC,EAAE,OAAO,CAAC;QAChB,KAAK,CAAC,EAAE,OAAO,CAAC;QAChB,IAAI,CAAC,EAAE,OAAO,CAAC;QACf,kBAAkB,CAAC,EAAE,MAAM,CAAC;KAC7B;YAUa,iBAAiB;IAWzB,WAAW,CAAC,OAAO,EAAC,WAAW,GAAE,OAAO,CAAC,MAAM,CAAC;IAqBhD,KAAK;IAqBX;;OAEG;IACG,IAAI;CAuCX;AACD,MAAM,WAAW,QAAQ;CAAG;AAC5B,yBAAiB,OAAO,CAAC;IACvB,KAAY,OAAO,CAAC,CAAC,SAAS,OAAO,GAAG,OAAO,IAAI;QACjD,KACA,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,OAAO,CAAC,cAAc,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,EAAE,GAC1D,CAAC,CAAA;KACF,CAAC;IACF,UAAiB,SAAS;QACxB,iBAAiB,EAAE,CAAC,OAAO,CAAC,CAAC;QAC7B,yBAAyB,EAAE,CAAC,OAAO,CAAC,CAAC;QACrC,uBAAuB,EAAE,CAAC,OAAO,CAAC,CAAC;QACnC,yBAAyB,EAAE,CAAC,OAAO,CAAC,CAAC;QACrC,gBAAgB,EAAE,CAAC,MAAM,CAAC,CAAC;QAC3B,iBAAiB,EAAE,CAAC,OAAO,CAAC,CAAC;QAC7B,oBAAoB,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;KACxC;IACD;;;OAGG;IACI,MAAM,QAAQ,wEAA6B,CAAC;IACnD,KAAY,aAAa,CAAC,CAAC,SAAS,OAAO,GAAC,OAAO,IAAI,CAAC,SAAS,OAAO,CAAC,MAAM,CAAC,CAAC,GAC7E,CAAC,GACD,KAAK,CAAC;IACV,KAAY,cAAc,CAAC,CAAC,SAAS,QAAQ,IAAI,CAAC,SAAS,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;IACzF,KAAY,eAAe,CAAC,CAAC,SAAS,QAAQ,IAAI,CAAC,SAAS,QAAQ,CAAC,MAAM,EAAE,EAAE,MAAM,CAAC,CAAC,GACnF,CAAC,GACD,KAAK,CAAC;IACV;;;;;;;;;OASG;IACH,SAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,QAEtD;CACF"}
|
package/lib/adapter.js
CHANGED
|
@@ -1,8 +1,10 @@
|
|
|
1
|
+
import { assertOutbound, DEFAULT_ENDPOINT_CAPABILITIES, hasInbound, } from "./endpoint-capabilities.js";
|
|
2
|
+
import { connectEndpointInstance, disconnectEndpointInstance } from "./built/connect-endpoint-instance.js";
|
|
1
3
|
import { EventEmitter } from "node:events";
|
|
2
4
|
import { getOutboundReplyStore } from "./built/dispatcher.js";
|
|
3
5
|
import { coerceHtmlSegmentsToText } from "./built/html-segment-fallback.js";
|
|
4
6
|
import { segment } from "./utils.js";
|
|
5
|
-
import {
|
|
7
|
+
import { InboundMessagePipeline } from "./built/inbound-pipeline.js";
|
|
6
8
|
import { formatCompact, truncatePreview } from '@zhin.js/logger';
|
|
7
9
|
/**
|
|
8
10
|
* Adapter类:适配器抽象,管理多平台Bot实例。
|
|
@@ -14,8 +16,10 @@ export class Adapter extends EventEmitter {
|
|
|
14
16
|
plugin;
|
|
15
17
|
name;
|
|
16
18
|
config;
|
|
17
|
-
|
|
19
|
+
endpoints = new Map();
|
|
18
20
|
recallMessageHandler;
|
|
21
|
+
/** Adapter 支持的能力上限(子类覆盖) */
|
|
22
|
+
static capabilities = DEFAULT_ENDPOINT_CAPABILITIES;
|
|
19
23
|
/** 入站消息并发计数 */
|
|
20
24
|
#pendingMessages = 0;
|
|
21
25
|
/** 并发上限,0 表示不限制(默认) */
|
|
@@ -37,60 +41,54 @@ export class Adapter extends EventEmitter {
|
|
|
37
41
|
/**
|
|
38
42
|
* 构造函数
|
|
39
43
|
* @param name 适配器名称(如 'process'、'qq' 等)
|
|
40
|
-
* @param
|
|
44
|
+
* @param endpointFactory Bot工厂函数或构造器
|
|
41
45
|
*/
|
|
42
46
|
constructor(plugin, name, config) {
|
|
43
47
|
super();
|
|
44
48
|
this.plugin = plugin;
|
|
45
49
|
this.name = name;
|
|
46
50
|
this.config = config;
|
|
47
|
-
this.recallMessageHandler = async (
|
|
48
|
-
const
|
|
49
|
-
if (!
|
|
50
|
-
throw new Error(`
|
|
51
|
-
|
|
52
|
-
|
|
51
|
+
this.recallMessageHandler = async (endpoint_id, id) => {
|
|
52
|
+
const endpoint = this.endpoints.get(endpoint_id);
|
|
53
|
+
if (!endpoint)
|
|
54
|
+
throw new Error(`Endpoint ${endpoint_id} not found`);
|
|
55
|
+
assertOutbound(endpoint);
|
|
56
|
+
this.logger.debug(formatCompact({ recall: id, endpoint: endpoint_id }));
|
|
57
|
+
await endpoint.$recallMessage(id);
|
|
53
58
|
};
|
|
54
59
|
this.on('call.recallMessage', this.recallMessageHandler);
|
|
60
|
+
this.inboundPipeline = new InboundMessagePipeline({
|
|
61
|
+
getPlugin: () => this.plugin,
|
|
62
|
+
logger: this.logger,
|
|
63
|
+
getMaxConcurrentMessages: () => this.maxConcurrentMessages,
|
|
64
|
+
getPendingMessages: () => this.#pendingMessages,
|
|
65
|
+
decrementPending: () => { this.#pendingMessages--; },
|
|
66
|
+
});
|
|
55
67
|
}
|
|
68
|
+
/** 入站消息管线(替代 emit override 的隐式管线) */
|
|
69
|
+
inboundPipeline;
|
|
56
70
|
/**
|
|
57
|
-
* 重写 emit:拦截 message.receive
|
|
58
|
-
*
|
|
59
|
-
*
|
|
60
|
-
* 以属性 + `EventEmitter.prototype.emit` 调用满足 Node @types 25 对泛型 `emit` 的可赋值检查。
|
|
71
|
+
* 重写 emit:拦截 message.receive/notice.receive/request.receive 事件,
|
|
72
|
+
* 将入站处理委托给 InboundMessagePipeline。
|
|
61
73
|
*/
|
|
62
74
|
emit = ((event, ...args) => {
|
|
75
|
+
if (event === 'notice.receive' || event === 'request.receive') {
|
|
76
|
+
return this.inboundPipeline.bridgeNoticeOrRequest(event, args, () => EventEmitter.prototype.emit.call(this, event, ...args));
|
|
77
|
+
}
|
|
63
78
|
if (event !== 'message.receive') {
|
|
64
79
|
return EventEmitter.prototype.emit.call(this, event, ...args);
|
|
65
80
|
}
|
|
66
81
|
const message = args[0];
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
preview: truncatePreview(segment.raw(message.$content)),
|
|
71
|
-
...(message.$quote_id ? { quote_id: message.$quote_id } : {}),
|
|
72
|
-
}));
|
|
73
|
-
// 背压控制:limit > 0 时启用,超出并发上限丢弃消息并告警
|
|
74
|
-
const limit = this.maxConcurrentMessages;
|
|
75
|
-
if (limit > 0 && this.#pendingMessages >= limit) {
|
|
76
|
-
this.logger.warn(formatCompact({ drop: 'concurrency', limit }));
|
|
82
|
+
// 背压控制:同步返回 false 表示丢弃
|
|
83
|
+
if (this.inboundPipeline.shouldDropDueToBackpressure()) {
|
|
84
|
+
this.logger.warn(formatCompact({ drop: 'concurrency', limit: this.maxConcurrentMessages }));
|
|
77
85
|
return false;
|
|
78
86
|
}
|
|
87
|
+
// 同步计数,保证背压判断的准确性
|
|
79
88
|
this.#pendingMessages++;
|
|
80
|
-
//
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
plugin: this.plugin,
|
|
84
|
-
message,
|
|
85
|
-
emitAdapterObservers: () => {
|
|
86
|
-
EventEmitter.prototype.emit.call(this, event, ...args);
|
|
87
|
-
},
|
|
88
|
-
});
|
|
89
|
-
};
|
|
90
|
-
processing().catch((e) => {
|
|
91
|
-
this.logger.warn(`message.receive handling error: ${e instanceof Error ? e.message : String(e)}`);
|
|
92
|
-
}).finally(() => {
|
|
93
|
-
this.#pendingMessages--;
|
|
89
|
+
// 异步入站管线(middleware → dispatcher → 生命周期 → 观察者)
|
|
90
|
+
this.inboundPipeline.receive(message, () => {
|
|
91
|
+
EventEmitter.prototype.emit.call(this, event, ...args);
|
|
94
92
|
});
|
|
95
93
|
return true;
|
|
96
94
|
});
|
|
@@ -128,15 +126,16 @@ export class Adapter extends EventEmitter {
|
|
|
128
126
|
}
|
|
129
127
|
async sendMessage(options) {
|
|
130
128
|
options = await this.renderSendMessage(options);
|
|
131
|
-
const
|
|
132
|
-
if (!
|
|
133
|
-
throw new Error(`
|
|
129
|
+
const endpoint = this.endpoints.get(options.endpoint);
|
|
130
|
+
if (!endpoint)
|
|
131
|
+
throw new Error(`Endpoint ${options.endpoint} not found`);
|
|
132
|
+
assertOutbound(endpoint);
|
|
134
133
|
this.logger.info(formatCompact({
|
|
135
134
|
send: `${options.type}(${options.id})`,
|
|
136
|
-
|
|
135
|
+
endpoint: options.endpoint,
|
|
137
136
|
preview: truncatePreview(segment.raw(options.content)),
|
|
138
137
|
}));
|
|
139
|
-
const messageId = await
|
|
138
|
+
const messageId = await endpoint.$sendMessage(options);
|
|
140
139
|
const replyStore = getOutboundReplyStore();
|
|
141
140
|
this.plugin.root.dispatch('message.send', {
|
|
142
141
|
adapter: this.name,
|
|
@@ -148,7 +147,7 @@ export class Adapter extends EventEmitter {
|
|
|
148
147
|
return messageId;
|
|
149
148
|
}
|
|
150
149
|
async start() {
|
|
151
|
-
if (this.
|
|
150
|
+
if (this.endpoints.size > 0) {
|
|
152
151
|
await this.stop();
|
|
153
152
|
}
|
|
154
153
|
const rootAdapters = this.plugin.root.adapters;
|
|
@@ -158,31 +157,35 @@ export class Adapter extends EventEmitter {
|
|
|
158
157
|
if (!this.config?.length)
|
|
159
158
|
return;
|
|
160
159
|
for (const config of this.config) {
|
|
161
|
-
const
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
160
|
+
const endpoint = await connectEndpointInstance({
|
|
161
|
+
plugin: this.plugin,
|
|
162
|
+
adapter: this,
|
|
163
|
+
config: config,
|
|
164
|
+
});
|
|
165
|
+
this.logger.debug(formatCompact({ connect: endpoint.$id, adapter: this.name }));
|
|
166
|
+
this.endpoints.set(endpoint.$id, endpoint);
|
|
165
167
|
}
|
|
166
168
|
this.logger.debug(formatCompact({ adapter: this.name }));
|
|
167
169
|
}
|
|
168
170
|
/**
|
|
169
|
-
* 停止适配器,断开并移除所有
|
|
170
|
-
* @param plugin 所属插件实例
|
|
171
|
+
* 停止适配器,断开并移除所有 Endpoint 实例
|
|
171
172
|
*/
|
|
172
173
|
async stop() {
|
|
173
174
|
const errors = [];
|
|
174
|
-
for (const [id,
|
|
175
|
+
for (const [id, endpoint] of this.endpoints) {
|
|
175
176
|
try {
|
|
176
|
-
|
|
177
|
+
if (hasInbound(endpoint)) {
|
|
178
|
+
await disconnectEndpointInstance(this.plugin, this, endpoint);
|
|
179
|
+
}
|
|
177
180
|
this.logger.debug(formatCompact({ disconnect: id, adapter: this.name }));
|
|
178
181
|
}
|
|
179
182
|
catch (error) {
|
|
180
183
|
errors.push(error instanceof Error ? error : new Error(String(error)));
|
|
181
|
-
this.logger.error(`
|
|
184
|
+
this.logger.error(`endpoint ${id} of adapter ${this.name} disconnect failed:`, error);
|
|
182
185
|
}
|
|
183
186
|
}
|
|
184
187
|
// 无论是否有错误,始终完成清理
|
|
185
|
-
this.
|
|
188
|
+
this.endpoints.clear();
|
|
186
189
|
// 从 adapters 数组中移除(可能因重复 start 出现多条同名,需全部删掉)
|
|
187
190
|
const rootAdapters = this.plugin.root.adapters;
|
|
188
191
|
for (let i = rootAdapters.length - 1; i >= 0; i--) {
|
|
@@ -191,17 +194,18 @@ export class Adapter extends EventEmitter {
|
|
|
191
194
|
}
|
|
192
195
|
// 移除所有事件监听器
|
|
193
196
|
this.removeAllListeners();
|
|
194
|
-
this.recallMessageHandler = async (
|
|
195
|
-
const
|
|
196
|
-
if (!
|
|
197
|
-
throw new Error(`
|
|
198
|
-
|
|
199
|
-
|
|
197
|
+
this.recallMessageHandler = async (endpoint_id, id) => {
|
|
198
|
+
const endpoint = this.endpoints.get(endpoint_id);
|
|
199
|
+
if (!endpoint)
|
|
200
|
+
throw new Error(`Endpoint ${endpoint_id} not found`);
|
|
201
|
+
assertOutbound(endpoint);
|
|
202
|
+
this.logger.debug(formatCompact({ recall: id, endpoint: endpoint_id }));
|
|
203
|
+
await endpoint.$recallMessage(id);
|
|
200
204
|
};
|
|
201
205
|
this.on('call.recallMessage', this.recallMessageHandler);
|
|
202
206
|
this.logger.debug(formatCompact({ stop: this.name }));
|
|
203
207
|
if (errors.length) {
|
|
204
|
-
throw new AggregateError(errors, `adapter ${this.name}: ${errors.length}
|
|
208
|
+
throw new AggregateError(errors, `adapter ${this.name}: ${errors.length} endpoint(s) failed to disconnect`);
|
|
205
209
|
}
|
|
206
210
|
}
|
|
207
211
|
}
|
package/lib/adapter.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"adapter.js","sourceRoot":"","sources":["../src/adapter.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"adapter.js","sourceRoot":"","sources":["../src/adapter.ts"],"names":[],"mappings":"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"}
|
package/lib/agent-prompt.d.ts
CHANGED
|
@@ -4,12 +4,12 @@
|
|
|
4
4
|
* Implementations live in adapter plugins; resolution runs in @zhin.js/agent.
|
|
5
5
|
*/
|
|
6
6
|
import type { AgentTool } from '@zhin.js/ai';
|
|
7
|
-
import type {
|
|
7
|
+
import type { Message } from './message.js';
|
|
8
8
|
export type AgentPromptSlot = 'orchestrator' | 'deferred_worker';
|
|
9
9
|
export interface AgentPromptBuildContext {
|
|
10
10
|
slot: AgentPromptSlot;
|
|
11
|
-
/**
|
|
12
|
-
|
|
11
|
+
/** 当前 turn 的 Message 通讯上下文 */
|
|
12
|
+
commMessage: Message<any>;
|
|
13
13
|
/** Truncated user message for intent hints (~500 chars). */
|
|
14
14
|
userMessagePreview?: string;
|
|
15
15
|
deferred?: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-prompt.d.ts","sourceRoot":"","sources":["../src/agent-prompt.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"agent-prompt.d.ts","sourceRoot":"","sources":["../src/agent-prompt.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAE5C,MAAM,MAAM,eAAe,GACvB,cAAc,GACd,iBAAiB,CAAC;AAEtB,MAAM,WAAW,uBAAuB;IACtC,IAAI,EAAE,eAAe,CAAC;IACtB,8BAA8B;IAC9B,WAAW,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC;IAC1B,4DAA4D;IAC5D,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,EAAE;QACT,IAAI,EAAE,MAAM,CAAC;QACb,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB,CAAC;CACH;AAED,MAAM,WAAW,kBAAkB;IACjC,oEAAoE;IACpE,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,wCAAwC;IACxC,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAE1B,aAAa,CAAC,GAAG,EAAE,uBAAuB,GAAG,OAAO,CAAC,kBAAkB,EAAE,GAAG,IAAI,CAAC,CAAC;IAElF,wEAAwE;IACxE,mBAAmB,CAAC,CAAC,GAAG,EAAE,uBAAuB,GAAG,OAAO,CAAC;IAE5D,gEAAgE;IAChE,mBAAmB,CAAC,CAClB,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,SAAS,EAAE,EACpB,QAAQ,EAAE,MAAM,GACf,SAAS,EAAE,GAAG,IAAI,CAAC;CACvB"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { Adapter, Plugin,
|
|
2
|
-
export declare class
|
|
1
|
+
import { Adapter, Plugin, Endpoint, SendOptions, Message } from "@zhin.js/core";
|
|
2
|
+
export declare class ProcessEndpoint implements Endpoint<{
|
|
3
3
|
owner?: string;
|
|
4
4
|
}, {
|
|
5
5
|
content: string;
|
|
@@ -31,9 +31,10 @@ export declare class ProcessBot implements Bot<{
|
|
|
31
31
|
$connect(): Promise<void>;
|
|
32
32
|
$disconnect(): Promise<void>;
|
|
33
33
|
}
|
|
34
|
-
export declare class ProcessAdapter extends Adapter<
|
|
34
|
+
export declare class ProcessAdapter extends Adapter<ProcessEndpoint> {
|
|
35
|
+
static readonly capabilities: readonly ["inbound", "outbound"];
|
|
35
36
|
constructor(plugin: Plugin);
|
|
36
|
-
|
|
37
|
+
createEndpoint(config: Adapter.EndpointConfig<ProcessEndpoint>): ProcessEndpoint;
|
|
37
38
|
}
|
|
38
39
|
declare module '../adapter.js' {
|
|
39
40
|
interface Adapters {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"adapter-process.d.ts","sourceRoot":"","sources":["../../src/built/adapter-process.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,
|
|
1
|
+
{"version":3,"file":"adapter-process.d.ts","sourceRoot":"","sources":["../../src/built/adapter-process.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAe,WAAW,EAAe,OAAO,EAAW,MAAM,eAAe,CAAC;AAGnH,qBAAa,eAAgB,YAAW,QAAQ,CAAC;IAAE,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,EAAC;IAAC,OAAO,EAAC,MAAM,CAAC;IAAA,EAAE,EAAC,MAAM,CAAA;CAAC,CAAC;;IAOxE,OAAO,EAAE,cAAc;IAAS,OAAO,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE;IAN9E,GAAG,SAAgB;IACnB,IAAI,MAAM,qCAET;IACD,UAAU,UAAO;gBAEE,OAAO,EAAE,cAAc,EAAS,OAAO,GAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAA;KAA0B;IAGtG,YAAY,CAAC,KAAK,EAAE,MAAM;IAMpB,OAAO;IAEP,UAAU;IAEhB,cAAc,CAAC,KAAK,EAAE;QAAC,OAAO,EAAC,MAAM,CAAC;QAAA,EAAE,EAAC,MAAM,CAAA;KAAC,GAAG,OAAO,CAAC;QAAC,OAAO,EAAC,MAAM,CAAC;QAAA,EAAE,EAAC,MAAM,CAAA;KAAC,CAAC;IAgChF,cAAc,CAAC,EAAE,EAAE,MAAM;IAEzB,YAAY,CAAC,OAAO,EAAE,WAAW;IAGjC,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAIzB,WAAW;CAIpB;AACD,qBAAa,cAAe,SAAQ,OAAO,CAAC,eAAe,CAAC;IACxD,gBAAyB,YAAY,mCAAoC;gBAE7D,MAAM,EAAE,MAAM;IAI1B,cAAc,CAAC,MAAM,EAAE,OAAO,CAAC,cAAc,CAAC,eAAe,CAAC,GAAG,eAAe;CAGnF;AACD,OAAO,QAAQ,eAAe,CAAA;IAC1B,UAAU,QAAQ;QACd,OAAO,EAAC,cAAc,CAAA;KACzB;CACJ"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Adapter, Message } from "@zhin.js/core";
|
|
2
2
|
import { bindStdin, runtimePid, runtimeUser } from "./runtime-io.js";
|
|
3
|
-
export class
|
|
3
|
+
export class ProcessEndpoint {
|
|
4
4
|
adapter;
|
|
5
5
|
$config;
|
|
6
6
|
$id = runtimePid();
|
|
@@ -28,7 +28,7 @@ export class ProcessBot {
|
|
|
28
28
|
const base = {
|
|
29
29
|
$id: `${event.ts}`,
|
|
30
30
|
$adapter: 'process',
|
|
31
|
-
$
|
|
31
|
+
$endpoint: runtimePid(),
|
|
32
32
|
$sender: {
|
|
33
33
|
id: runtimeUser(),
|
|
34
34
|
name: runtimeUser(),
|
|
@@ -47,7 +47,7 @@ export class ProcessBot {
|
|
|
47
47
|
$reply: async (content) => {
|
|
48
48
|
return await this.adapter.sendMessage({
|
|
49
49
|
context: 'process',
|
|
50
|
-
|
|
50
|
+
endpoint: base.$endpoint,
|
|
51
51
|
content,
|
|
52
52
|
id: base.$sender.id,
|
|
53
53
|
type: base.$channel.type,
|
|
@@ -71,11 +71,12 @@ export class ProcessBot {
|
|
|
71
71
|
}
|
|
72
72
|
}
|
|
73
73
|
export class ProcessAdapter extends Adapter {
|
|
74
|
+
static capabilities = ['inbound', 'outbound'];
|
|
74
75
|
constructor(plugin) {
|
|
75
76
|
super(plugin, 'process', [{ owner: runtimePid() }]);
|
|
76
77
|
}
|
|
77
|
-
|
|
78
|
-
return new
|
|
78
|
+
createEndpoint(config) {
|
|
79
|
+
return new ProcessEndpoint(this, config);
|
|
79
80
|
}
|
|
80
81
|
}
|
|
81
82
|
//# sourceMappingURL=adapter-process.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"adapter-process.js","sourceRoot":"","sources":["../../src/built/adapter-process.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,
|
|
1
|
+
{"version":3,"file":"adapter-process.js","sourceRoot":"","sources":["../../src/built/adapter-process.ts"],"names":[],"mappings":"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"}
|
|
@@ -48,7 +48,7 @@ declare module '../plugin.js' {
|
|
|
48
48
|
export declare class AgentPresetFeature extends Feature<AgentPreset> {
|
|
49
49
|
#private;
|
|
50
50
|
readonly name: "agentPreset";
|
|
51
|
-
readonly icon = "
|
|
51
|
+
readonly icon = "Endpoint";
|
|
52
52
|
readonly desc = "Agent \u9884\u8BBE";
|
|
53
53
|
readonly byName: Map<string, AgentPreset>;
|
|
54
54
|
add(preset: AgentPreset, pluginName: string): () => void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-preset.d.ts","sourceRoot":"","sources":["../../src/built/agent-preset.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC5D,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAMxC;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,iBAAiB;IACjB,IAAI,EAAE,MAAM,CAAC;IAEb,8BAA8B;IAC9B,WAAW,EAAE,MAAM,CAAC;IAEpB,wCAAwC;IACxC,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB,cAAc;IACd,KAAK,CAAC,EAAE,IAAI,EAAE,CAAC;IAEf,gCAAgC;IAChC,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IAEpB,WAAW;IACX,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAEhB,YAAY;IACZ,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,oBAAoB;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,iBAAiB;IACjB,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB,qBAAqB;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB,yBAAyB;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAMD,OAAO,QAAQ,cAAc,CAAC;IAC5B,UAAU,MAAM,CAAC;QACf,UAAU,QAAQ;YAChB,WAAW,EAAE,kBAAkB,CAAC;SACjC;KACF;CACF;AAED,qBAAa,kBAAmB,SAAQ,OAAO,CAAC,WAAW,CAAC;;IAC1D,QAAQ,CAAC,IAAI,EAAG,aAAa,CAAU;IACvC,QAAQ,CAAC,IAAI,
|
|
1
|
+
{"version":3,"file":"agent-preset.d.ts","sourceRoot":"","sources":["../../src/built/agent-preset.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC5D,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAMxC;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,iBAAiB;IACjB,IAAI,EAAE,MAAM,CAAC;IAEb,8BAA8B;IAC9B,WAAW,EAAE,MAAM,CAAC;IAEpB,wCAAwC;IACxC,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB,cAAc;IACd,KAAK,CAAC,EAAE,IAAI,EAAE,CAAC;IAEf,gCAAgC;IAChC,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IAEpB,WAAW;IACX,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAEhB,YAAY;IACZ,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,oBAAoB;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,iBAAiB;IACjB,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB,qBAAqB;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB,yBAAyB;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAMD,OAAO,QAAQ,cAAc,CAAC;IAC5B,UAAU,MAAM,CAAC;QACf,UAAU,QAAQ;YAChB,WAAW,EAAE,kBAAkB,CAAC;SACjC;KACF;CACF;AAED,qBAAa,kBAAmB,SAAQ,OAAO,CAAC,WAAW,CAAC;;IAC1D,QAAQ,CAAC,IAAI,EAAG,aAAa,CAAU;IACvC,QAAQ,CAAC,IAAI,cAAc;IAC3B,QAAQ,CAAC,IAAI,wBAAc;IAE3B,QAAQ,CAAC,MAAM,2BAAkC;IAEjD,GAAG,CAAC,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,IAAI;IAKxD,MAAM,CAAC,MAAM,EAAE,WAAW,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO;IAKzD,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS;IAI1C,uCAAuC;IACvC,OAAO,IAAI,IAAI;IAIf,MAAM,IAAI,WAAW,EAAE;IAIvB,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,WAAW,EAAE;IAwBvE,MAAM,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,WAAW;CAiBzC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-preset.js","sourceRoot":"","sources":["../../src/built/agent-preset.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,OAAO,EAAoB,MAAM,iBAAiB,CAAC;AAyD5D,MAAM,OAAO,kBAAmB,SAAQ,OAAoB;IACjD,IAAI,GAAG,aAAsB,CAAC;IAC9B,IAAI,GAAG,
|
|
1
|
+
{"version":3,"file":"agent-preset.js","sourceRoot":"","sources":["../../src/built/agent-preset.ts"],"names":[],"mappings":"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"}
|
|
@@ -49,8 +49,8 @@ export interface AITriggerResult {
|
|
|
49
49
|
}
|
|
50
50
|
/** shouldTriggerAI 可选参数(如适配器提供的平台 @ ID) */
|
|
51
51
|
export interface AITriggerOptions {
|
|
52
|
-
/** 用于 @ 匹配的
|
|
53
|
-
|
|
52
|
+
/** 用于 @ 匹配的 Endpoint 标识符(默认仅 message.$endpoint) */
|
|
53
|
+
endpointAtIds?: string[];
|
|
54
54
|
}
|
|
55
55
|
/** 发送者角色解析结果 */
|
|
56
56
|
export interface SenderRolesResult {
|
|
@@ -59,13 +59,13 @@ export interface SenderRolesResult {
|
|
|
59
59
|
}
|
|
60
60
|
export declare const DEFAULT_AI_TRIGGER_CONFIG: Required<AITriggerConfig>;
|
|
61
61
|
/**
|
|
62
|
-
* 收集用于 @ 匹配的
|
|
62
|
+
* 收集用于 @ 匹配的 Endpoint 标识符
|
|
63
63
|
*/
|
|
64
|
-
export declare function
|
|
64
|
+
export declare function collectEndpointAtIds<T extends object>(message: Message<T>, extraIds?: string[]): string[];
|
|
65
65
|
/**
|
|
66
|
-
* 检查消息是否 @
|
|
66
|
+
* 检查消息是否 @ 了 Endpoint
|
|
67
67
|
*/
|
|
68
|
-
export declare function
|
|
68
|
+
export declare function isAtEndpoint<T extends object>(message: Message<T>, endpointAtIds?: string[]): boolean;
|
|
69
69
|
/**
|
|
70
70
|
* 提取消息文本内容(保留富媒体信息)
|
|
71
71
|
* 使用 segment.toString 将 MessageElement 转为 XML 格式
|
|
@@ -77,19 +77,19 @@ export declare function extractTextContent<T extends object>(message: Message<T>
|
|
|
77
77
|
*/
|
|
78
78
|
export declare function parseRichMediaContent(content: string): MessageElement[];
|
|
79
79
|
/**
|
|
80
|
-
* 移除 @
|
|
80
|
+
* 移除 @ Endpoint 的部分
|
|
81
81
|
*/
|
|
82
|
-
export declare function
|
|
83
|
-
/**
|
|
84
|
-
export interface
|
|
82
|
+
export declare function removeAtEndpoint<T extends object>(message: Message<T>, endpointAtIds?: string[]): MessageElement[];
|
|
83
|
+
/** Endpoint 配置(adapter endpoints[].$config) */
|
|
84
|
+
export interface EndpointConfigRoles {
|
|
85
85
|
master?: unknown;
|
|
86
86
|
trusted?: unknown;
|
|
87
87
|
}
|
|
88
88
|
/**
|
|
89
|
-
* 解析发送者角色集合(IM 群角色 + trigger +
|
|
89
|
+
* 解析发送者角色集合(IM 群角色 + trigger + endpoints[].$config)
|
|
90
90
|
*/
|
|
91
|
-
export declare function resolveSenderRoles<T extends object>(message: Message<T>, config: AITriggerConfig,
|
|
92
|
-
/** 从 IM 消息生成 sessionId(platform:
|
|
91
|
+
export declare function resolveSenderRoles<T extends object>(message: Message<T>, config: AITriggerConfig, endpointConfig?: EndpointConfigRoles | Record<string, unknown> | null): SenderRolesResult;
|
|
92
|
+
/** 从 IM 消息生成 sessionId(platform:endpointId:type:sceneId) */
|
|
93
93
|
export declare function resolveIMSessionIdFromMessage<T extends object>(message: Message<T>): string;
|
|
94
94
|
/**
|
|
95
95
|
* 检查消息是否应该触发 AI
|