@aalis/plugin-trigger-policy 0.10.1 → 0.12.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/dist/detector.d.ts +14 -5
- package/dist/detector.d.ts.map +1 -1
- package/dist/detector.js +16 -16
- package/dist/detector.js.map +1 -1
- package/dist/index.d.ts +13 -17
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +46 -27
- package/dist/index.js.map +1 -1
- package/package.json +14 -10
package/dist/detector.d.ts
CHANGED
|
@@ -1,9 +1,18 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { PersonaService } from '@aalis/api-persona';
|
|
2
|
+
import type { ServiceRef } from '@aalis/core';
|
|
2
3
|
import type { TriggerPolicyConfig } from './config.js';
|
|
3
|
-
/**
|
|
4
|
+
/** 名字检测只在调用的那一刻读当前 persona 提供者,不建立跟随状态,因此只需要这一面 */
|
|
5
|
+
export type PersonaRef = Pick<ServiceRef<PersonaService>, 'current'>;
|
|
6
|
+
/**
|
|
7
|
+
* @ 检测:只认 `<at self>` 标记。
|
|
8
|
+
*
|
|
9
|
+
* OneBot 的字符串消息格式(含 `[CQ:at,…]`)由 adapter 入站规范化成消息段,再经
|
|
10
|
+
* segmentsToText 渲染成 `<at self id="…">`,CQ 码不会流到这里。其它平台适配器若要支持
|
|
11
|
+
* @ 判定,须同样把提及渲染成 `<at self …>`——本函数只认这一种文法。
|
|
12
|
+
*/
|
|
4
13
|
export declare function checkImmediateMention(content: string): boolean;
|
|
5
|
-
export declare function getBotNames(
|
|
14
|
+
export declare function getBotNames(persona: PersonaRef, cfg: TriggerPolicyConfig): string[];
|
|
6
15
|
export declare function checkNameMention(content: string, names: string[]): boolean;
|
|
7
|
-
export declare function checkImmediateTrigger(
|
|
8
|
-
export declare function checkMuteKeyword(
|
|
16
|
+
export declare function checkImmediateTrigger(persona: PersonaRef, cfg: TriggerPolicyConfig, content: string): boolean;
|
|
17
|
+
export declare function checkMuteKeyword(cfg: TriggerPolicyConfig, content: string): boolean;
|
|
9
18
|
//# sourceMappingURL=detector.d.ts.map
|
package/dist/detector.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"detector.d.ts","sourceRoot":"","sources":["../src/detector.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"detector.d.ts","sourceRoot":"","sources":["../src/detector.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAKvD,mDAAmD;AACnD,MAAM,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,EAAE,SAAS,CAAC,CAAC;AAErE;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAE9D;AAED,wBAAgB,WAAW,CAAC,OAAO,EAAE,UAAU,EAAE,GAAG,EAAE,mBAAmB,GAAG,MAAM,EAAE,CAYnF;AAED,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAK1E;AAED,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,UAAU,EAAE,GAAG,EAAE,mBAAmB,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAI7G;AAED,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,mBAAmB,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAKnF"}
|
package/dist/detector.js
CHANGED
|
@@ -1,21 +1,21 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
/**
|
|
2
|
+
* @ 检测:只认 `<at self>` 标记。
|
|
3
|
+
*
|
|
4
|
+
* OneBot 的字符串消息格式(含 `[CQ:at,…]`)由 adapter 入站规范化成消息段,再经
|
|
5
|
+
* segmentsToText 渲染成 `<at self id="…">`,CQ 码不会流到这里。其它平台适配器若要支持
|
|
6
|
+
* @ 判定,须同样把提及渲染成 `<at self …>`——本函数只认这一种文法。
|
|
7
|
+
*/
|
|
4
8
|
export function checkImmediateMention(content) {
|
|
5
|
-
|
|
6
|
-
return true;
|
|
7
|
-
if (/\[CQ:at,qq=\d+\]/.test(content))
|
|
8
|
-
return true;
|
|
9
|
-
return false;
|
|
9
|
+
return /<at self[\s>][\s\S]*?<\/at>/.test(content);
|
|
10
10
|
}
|
|
11
|
-
export function getBotNames(
|
|
11
|
+
export function getBotNames(persona, cfg) {
|
|
12
12
|
const names = [...cfg.triggerNames];
|
|
13
|
-
const
|
|
14
|
-
if (
|
|
15
|
-
const personaName =
|
|
13
|
+
const service = persona.current;
|
|
14
|
+
if (service) {
|
|
15
|
+
const personaName = service.getPersonaName?.();
|
|
16
16
|
if (personaName && !names.includes(personaName))
|
|
17
17
|
names.push(personaName);
|
|
18
|
-
const nicks =
|
|
18
|
+
const nicks = service.getNickNames?.() ?? [];
|
|
19
19
|
for (const n of nicks) {
|
|
20
20
|
if (n && !names.includes(n))
|
|
21
21
|
names.push(n);
|
|
@@ -30,14 +30,14 @@ export function checkNameMention(content, names) {
|
|
|
30
30
|
}
|
|
31
31
|
return false;
|
|
32
32
|
}
|
|
33
|
-
export function checkImmediateTrigger(
|
|
33
|
+
export function checkImmediateTrigger(persona, cfg, content) {
|
|
34
34
|
if (cfg.triggerOnAt && checkImmediateMention(content))
|
|
35
35
|
return true;
|
|
36
|
-
if (checkNameMention(content, getBotNames(
|
|
36
|
+
if (checkNameMention(content, getBotNames(persona, cfg)))
|
|
37
37
|
return true;
|
|
38
38
|
return false;
|
|
39
39
|
}
|
|
40
|
-
export function checkMuteKeyword(
|
|
40
|
+
export function checkMuteKeyword(cfg, content) {
|
|
41
41
|
for (const kw of cfg.muteKeywords) {
|
|
42
42
|
if (content.includes(kw))
|
|
43
43
|
return true;
|
package/dist/detector.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"detector.js","sourceRoot":"","sources":["../src/detector.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"detector.js","sourceRoot":"","sources":["../src/detector.ts"],"names":[],"mappings":"AAUA;;;;;;GAMG;AACH,MAAM,UAAU,qBAAqB,CAAC,OAAe;IACnD,OAAO,6BAA6B,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACrD,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,OAAmB,EAAE,GAAwB;IACvE,MAAM,KAAK,GAAG,CAAC,GAAG,GAAG,CAAC,YAAY,CAAC,CAAC;IACpC,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IAChC,IAAI,OAAO,EAAE,CAAC;QACZ,MAAM,WAAW,GAAG,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC;QAC/C,IAAI,WAAW,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC;YAAE,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACzE,MAAM,KAAK,GAAG,OAAO,CAAC,YAAY,EAAE,EAAE,IAAI,EAAE,CAAC;QAC7C,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;YACtB,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;gBAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC7C,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,OAAe,EAAE,KAAe;IAC/D,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,IAAI,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC;YAAE,OAAO,IAAI,CAAC;IAClD,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,OAAmB,EAAE,GAAwB,EAAE,OAAe;IAClG,IAAI,GAAG,CAAC,WAAW,IAAI,qBAAqB,CAAC,OAAO,CAAC;QAAE,OAAO,IAAI,CAAC;IACnE,IAAI,gBAAgB,CAAC,OAAO,EAAE,WAAW,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IACtE,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,GAAwB,EAAE,OAAe;IACxE,KAAK,MAAM,EAAE,IAAI,GAAG,CAAC,YAAY,EAAE,CAAC;QAClC,IAAI,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;YAAE,OAAO,IAAI,CAAC;IACxC,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,21 +1,17 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
import type { ConfigSchema } from '@aalis/schema-config';
|
|
1
|
+
import type { TriggerPolicyService } from './types.js';
|
|
3
2
|
export type { TriggerDecision, TriggerKind, TriggerPolicyService } from './types.js';
|
|
4
3
|
import { type TriggerPolicyConfig } from './config.js';
|
|
5
|
-
export declare const
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
4
|
+
export declare const triggerPolicy: import("@aalis/core").ServiceDescriptor<TriggerPolicyService, import("@aalis/core").ServiceRef<TriggerPolicyService>>;
|
|
5
|
+
declare const _default: import("@aalis/core").PluginDefinition<{
|
|
6
|
+
logger: import("@aalis/core").ServiceDescriptor<(identity: symbol) => import("@aalis/core").Logger, import("@aalis/core").Logger>;
|
|
7
|
+
hooks: import("@aalis/core").ServiceDescriptor<(identity: symbol) => import("@aalis/core").Hooks, import("@aalis/core").Hooks>;
|
|
8
|
+
config: import("@aalis/core").ServiceDescriptor<(identity: symbol) => Readonly<Record<string, unknown>>, Readonly<Record<string, unknown>>>;
|
|
9
|
+
provide: import("@aalis/core").ServiceDescriptor<(identity: symbol) => import("@aalis/core").Provide, import("@aalis/core").Provide>;
|
|
10
|
+
gateway: import("@aalis/core").ServiceDescriptor<import("@aalis/api-gateway").GatewayService, import("@aalis/core").ServiceRef<import("@aalis/api-gateway").GatewayService>>;
|
|
11
|
+
flowControl: import("@aalis/core/dist/composition/descriptors.js").OptionalUse<import("@aalis/api-flow-control").FlowControlService, import("@aalis/core").ServiceRef<import("@aalis/api-flow-control").FlowControlService>>;
|
|
12
|
+
persona: import("@aalis/core/dist/composition/descriptors.js").OptionalUse<import("@aalis/api-persona").PersonaService, import("@aalis/core").ServiceRef<import("@aalis/api-persona").PersonaService>>;
|
|
13
|
+
messageArchive: import("@aalis/core/dist/composition/descriptors.js").OptionalUse<import("@aalis/api-message-archive").MessageArchiveService, import("@aalis/core").ServiceRef<import("@aalis/api-message-archive").MessageArchiveService>>;
|
|
14
|
+
}>;
|
|
15
|
+
export default _default;
|
|
15
16
|
export type { TriggerPolicyConfig };
|
|
16
|
-
declare module '@aalis/core' {
|
|
17
|
-
interface ServiceTypeMap {
|
|
18
|
-
'trigger-policy': import('./types.js').TriggerPolicyService;
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
17
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAmB,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAExE,YAAY,EAAE,eAAe,EAAE,WAAW,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAErF,OAAO,EAKL,KAAK,mBAAmB,EACzB,MAAM,aAAa,CAAC;AAsErB,eAAO,MAAM,aAAa,uHAAwD,CAAC;;;;;;;;;;;AAiBnF,wBAQG;AA0JH,YAAY,EAAE,mBAAmB,EAAE,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,17 +1,13 @@
|
|
|
1
|
+
import { flowControl } from '@aalis/api-flow-control';
|
|
2
|
+
import { gateway, INBOUND_PHASE } from '@aalis/api-gateway';
|
|
3
|
+
import { messageArchive } from '@aalis/api-message-archive';
|
|
4
|
+
import { persona } from '@aalis/api-persona';
|
|
5
|
+
import { config, definePlugin, defineService, hooks, logger, optional, provide } from '@aalis/core';
|
|
1
6
|
import { selfInitiatedActor, WellKnownNoticeTypes } from '@aalis/schema-message';
|
|
2
|
-
import { INBOUND_PHASE } from '@aalis/api-gateway';
|
|
3
7
|
import { defaultTriggerPolicyConfig, isScopeEnabled, resolveEffectiveConfig, resolveTriggerPolicyConfig, } from './config.js';
|
|
4
8
|
import { checkImmediateTrigger, checkMuteKeyword, getBotNames } from './detector.js';
|
|
5
9
|
// ----- 元数据 -----
|
|
6
|
-
|
|
7
|
-
export const displayName = '触发策略';
|
|
8
|
-
export const subsystem = 'scheduler';
|
|
9
|
-
export const provides = ['trigger-policy'];
|
|
10
|
-
export const inject = {
|
|
11
|
-
required: ['gateway'],
|
|
12
|
-
optional: ['flow-control', 'persona', 'message-archive'],
|
|
13
|
-
};
|
|
14
|
-
export const configSchema = {
|
|
10
|
+
const configSchema = {
|
|
15
11
|
scopes: {
|
|
16
12
|
type: 'multiselect',
|
|
17
13
|
label: '生效作用域',
|
|
@@ -73,9 +69,32 @@ export const configSchema = {
|
|
|
73
69
|
},
|
|
74
70
|
},
|
|
75
71
|
};
|
|
72
|
+
// ----- 服务描述符(按激活绑定;调用型:绑定接口是 ServiceRef)-----
|
|
73
|
+
export const triggerPolicy = defineService('trigger-policy');
|
|
76
74
|
// ----- 入口 -----
|
|
77
|
-
|
|
78
|
-
|
|
75
|
+
const uses = {
|
|
76
|
+
logger,
|
|
77
|
+
hooks,
|
|
78
|
+
config,
|
|
79
|
+
provide,
|
|
80
|
+
gateway,
|
|
81
|
+
// 缺席时按"无状态即放行"评估;归档缺席则被吞掉的消息不进档,判定照常
|
|
82
|
+
flowControl: optional(flowControl),
|
|
83
|
+
persona: optional(persona),
|
|
84
|
+
messageArchive: optional(messageArchive),
|
|
85
|
+
};
|
|
86
|
+
export default definePlugin({
|
|
87
|
+
name: '@aalis/plugin-trigger-policy',
|
|
88
|
+
displayName: '触发策略',
|
|
89
|
+
subsystem: 'scheduler',
|
|
90
|
+
configSchema,
|
|
91
|
+
provides: [triggerPolicy],
|
|
92
|
+
uses,
|
|
93
|
+
apply: run,
|
|
94
|
+
});
|
|
95
|
+
function run(caps) {
|
|
96
|
+
const { logger, hooks, provide, persona, flowControl, messageArchive } = caps;
|
|
97
|
+
const cfg = resolveTriggerPolicyConfig(caps.config);
|
|
79
98
|
/** 从 IncomingMessage 派生 per-scope override 用的 targetId(群=groupId / 私=userId / 其他=空) */
|
|
80
99
|
function extractTargetId(message) {
|
|
81
100
|
if (message.sessionType === 'group')
|
|
@@ -86,14 +105,14 @@ export function apply(ctx, raw) {
|
|
|
86
105
|
}
|
|
87
106
|
/** 把"被策略吞掉"的入站消息归档(与 flow-control 的 shadow 归档对齐) */
|
|
88
107
|
async function shadowArchive(message) {
|
|
89
|
-
const archive =
|
|
108
|
+
const archive = messageArchive.current;
|
|
90
109
|
if (!archive)
|
|
91
110
|
return;
|
|
92
111
|
try {
|
|
93
112
|
await archive.archiveIncoming(message);
|
|
94
113
|
}
|
|
95
114
|
catch (err) {
|
|
96
|
-
|
|
115
|
+
logger.warn(`[trigger] shadow 归档失败: ${err}`);
|
|
97
116
|
}
|
|
98
117
|
}
|
|
99
118
|
const service = {
|
|
@@ -116,10 +135,10 @@ export function apply(ctx, raw) {
|
|
|
116
135
|
return { kind: 'immediate', reason: 'poke notice' };
|
|
117
136
|
}
|
|
118
137
|
}
|
|
119
|
-
else if (checkImmediateTrigger(
|
|
138
|
+
else if (checkImmediateTrigger(persona, eff, message.content)) {
|
|
120
139
|
return { kind: 'immediate', reason: '@/name match' };
|
|
121
140
|
}
|
|
122
|
-
const flow =
|
|
141
|
+
const flow = flowControl.current;
|
|
123
142
|
const snap = flow?.getStateSnapshot(message.sessionId);
|
|
124
143
|
if (!snap) {
|
|
125
144
|
return { kind: 'interval', reason: 'no flow state, default-pass' };
|
|
@@ -143,25 +162,25 @@ export function apply(ctx, raw) {
|
|
|
143
162
|
: { kind: 'swallow', reason: 'below threshold' };
|
|
144
163
|
},
|
|
145
164
|
getBotNames() {
|
|
146
|
-
return getBotNames(
|
|
165
|
+
return getBotNames(persona, cfg);
|
|
147
166
|
},
|
|
148
167
|
detectMuteKeyword(content) {
|
|
149
|
-
return checkMuteKeyword(
|
|
168
|
+
return checkMuteKeyword(cfg, content);
|
|
150
169
|
},
|
|
151
170
|
};
|
|
152
|
-
|
|
153
|
-
|
|
171
|
+
provide(triggerPolicy, service);
|
|
172
|
+
logger.info(`[trigger] 已启用 (模式=${cfg.intervalMode}, @提及=${cfg.triggerOnAt}, ` +
|
|
154
173
|
`别名=${cfg.triggerNames.length}, mute关键词=${cfg.muteKeywords.length}, ` +
|
|
155
174
|
`mute时长=${cfg.muteTimeSeconds}s, scopes=${cfg.scopes.join('|') || '<空>'}, ` +
|
|
156
175
|
`overrides=${cfg.overrides.length})`);
|
|
157
176
|
// ===== inbound:trigger 相位:触发判定 =====
|
|
158
177
|
// 由 plugin-gateway 在 inbound:flow 之后、inbound:dispatch 之前触发。
|
|
159
178
|
// 进入本相位意味着已通过冷却/限速闸门。
|
|
160
|
-
|
|
179
|
+
hooks.middleware(INBOUND_PHASE.TRIGGER, async (data, next) => {
|
|
161
180
|
const { message } = data;
|
|
162
181
|
if (message.source === 'idle-trigger')
|
|
163
182
|
return next(); // 内部注入跳过策略
|
|
164
|
-
const flow =
|
|
183
|
+
const flow = flowControl.current;
|
|
165
184
|
const tid = extractTargetId(message);
|
|
166
185
|
// 不在触发策略作用域内(默认 *:group):直接放行。
|
|
167
186
|
// 必须在 mute 检查之前进行,否则 QQ 群的 mute 关键词会泄漏到 WebUI/私聊等不在 scope 内的会话。
|
|
@@ -170,8 +189,8 @@ export function apply(ctx, raw) {
|
|
|
170
189
|
}
|
|
171
190
|
const eff = resolveEffectiveConfig(cfg, message.platform, message.sessionType, tid);
|
|
172
191
|
// mute 关键词命中:设置自禁言并 swallow
|
|
173
|
-
if (checkMuteKeyword(
|
|
174
|
-
|
|
192
|
+
if (checkMuteKeyword(eff, message.content)) {
|
|
193
|
+
logger.info(`[trigger] mute 关键词命中 → swallow + setMuted(${eff.muteTimeSeconds}s): ${message.sessionId}`);
|
|
175
194
|
flow?.setMuted(message.sessionId, eff.muteTimeSeconds);
|
|
176
195
|
// 与 dev OneBot ChatFlow 一致:设置自禁言后调度一次 idle,
|
|
177
196
|
// 让禁言结束附近能正常进入「长期静默→主动招呼」路径。
|
|
@@ -184,7 +203,7 @@ export function apply(ctx, raw) {
|
|
|
184
203
|
decision = service.decide(message);
|
|
185
204
|
}
|
|
186
205
|
catch (err) {
|
|
187
|
-
|
|
206
|
+
logger.warn(`[trigger] decide() 异常,默认放行: ${err}`);
|
|
188
207
|
await next();
|
|
189
208
|
return;
|
|
190
209
|
}
|
|
@@ -196,7 +215,7 @@ export function apply(ctx, raw) {
|
|
|
196
215
|
? `计数=${snap.messageCount}/${snap.fixedInterval} | 指数=${snap.activityScore.toFixed(3)} (阈值=${(threshold ?? 0).toFixed(3)})`
|
|
197
216
|
: '无 flow 状态';
|
|
198
217
|
if (decision.kind === 'immediate' || decision.kind === 'interval') {
|
|
199
|
-
|
|
218
|
+
logger.debug(`[trigger] ${decision.kind} → 触发 | session=${message.sessionId} | ${stateStr} | ${decision.reason}`);
|
|
200
219
|
flow?.recordTriggered(message.sessionId);
|
|
201
220
|
message.triggerType = decision.kind;
|
|
202
221
|
// interval 回合无主发言者:授权身份回填为无主体,不让「恰好撞阈值的那个人」
|
|
@@ -210,7 +229,7 @@ export function apply(ctx, raw) {
|
|
|
210
229
|
return;
|
|
211
230
|
}
|
|
212
231
|
// swallow
|
|
213
|
-
|
|
232
|
+
logger.debug(`[trigger] 未触发 → 吞噬 | session=${message.sessionId} | ${stateStr} | ${decision.reason}`);
|
|
214
233
|
await shadowArchive(message);
|
|
215
234
|
// flow-control 已在前置中调度 idle,无需重复
|
|
216
235
|
});
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aalis/plugin-trigger-policy",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.12.0",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -24,26 +24,30 @@
|
|
|
24
24
|
"dist"
|
|
25
25
|
],
|
|
26
26
|
"dependencies": {
|
|
27
|
-
"@aalis/schema-config": ">=0.
|
|
28
|
-
"@aalis/api-
|
|
27
|
+
"@aalis/schema-config": ">=0.12.0 <1.0.0",
|
|
28
|
+
"@aalis/api-flow-control": ">=0.6.0 <1.0.0",
|
|
29
|
+
"@aalis/api-gateway": ">=0.6.0 <1.0.0",
|
|
30
|
+
"@aalis/api-message-archive": ">=0.6.0 <1.0.0",
|
|
31
|
+
"@aalis/api-persona": ">=0.7.0 <1.0.0",
|
|
29
32
|
"@aalis/schema-message": ">=0.8.0 <1.0.0"
|
|
30
33
|
},
|
|
31
34
|
"devDependencies": {
|
|
32
35
|
"@types/node": "^22.0.0",
|
|
33
36
|
"typescript": "^5.7.0",
|
|
34
|
-
"@aalis/core": "0.
|
|
35
|
-
"@aalis/api-
|
|
36
|
-
"@aalis/api-message-archive": "0.5.0",
|
|
37
|
-
"@aalis/api-persona": "0.6.0",
|
|
38
|
-
"@aalis/api-webui": "0.9.1"
|
|
37
|
+
"@aalis/core": "0.17.0",
|
|
38
|
+
"@aalis/api-webui": "0.10.0"
|
|
39
39
|
},
|
|
40
40
|
"peerDependencies": {
|
|
41
|
-
"@aalis/core": ">=0.
|
|
41
|
+
"@aalis/core": ">=0.17.0 <1.0.0"
|
|
42
42
|
},
|
|
43
43
|
"aalis": {
|
|
44
44
|
"service": {
|
|
45
45
|
"required": [
|
|
46
|
-
"
|
|
46
|
+
"config",
|
|
47
|
+
"gateway",
|
|
48
|
+
"hooks",
|
|
49
|
+
"logger",
|
|
50
|
+
"provide"
|
|
47
51
|
],
|
|
48
52
|
"optional": [
|
|
49
53
|
"flow-control",
|