@aalis/plugin-tool-session 0.14.1 → 0.16.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 +1 -1
- package/dist/index.d.ts +3 -6
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +48 -567
- package/dist/index.js.map +1 -1
- package/dist/locales/en.d.ts +15 -0
- package/dist/locales/en.d.ts.map +1 -0
- package/dist/locales/en.js +15 -0
- package/dist/locales/en.js.map +1 -0
- package/dist/texts.d.ts +29 -0
- package/dist/texts.d.ts.map +1 -0
- package/dist/texts.js +23 -0
- package/dist/texts.js.map +1 -0
- package/package.json +12 -19
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# @aalis/plugin-tool-session
|
|
2
2
|
|
|
3
|
-
会话历史读取工具。提供 `session_get_history` 工具与 `session-history` 服务,按 Aalis sessionId
|
|
3
|
+
会话历史读取工具。提供 `session_get_history` 工具与 `session-history` 服务,按 Aalis sessionId 读取指定会话最近若干条消息,能读哪些会话按会话管理的跨会话规则。
|
|
4
4
|
|
|
5
5
|
详见 [docs/plugins/plugin-tool-session.md](../../docs/plugins/plugin-tool-session.md)。
|
|
6
6
|
|
package/dist/index.d.ts
CHANGED
|
@@ -25,15 +25,12 @@ export declare function resolveTimeRange(args: {
|
|
|
25
25
|
} | null;
|
|
26
26
|
declare const _default: import("@aalis/core").PluginDefinition<{
|
|
27
27
|
tools: import("@aalis/core").OptionalUse<import("@aalis/api-tools").ToolService, import("@aalis/api-tools").BoundTools>;
|
|
28
|
-
events: import("@aalis/core").ServiceDescriptor<(identity: symbol) => import("@aalis/core").Events, import("@aalis/core").Events>;
|
|
29
|
-
hooks: import("@aalis/core").ServiceDescriptor<import("@aalis/api-hooks").HookRegistry, import("@aalis/api-hooks").Hooks>;
|
|
30
28
|
logger: import("@aalis/core").ServiceDescriptor<(identity: symbol) => import("@aalis/core").Logger, import("@aalis/core").Logger>;
|
|
31
29
|
config: import("@aalis/core").ServiceDescriptor<(identity: symbol) => Readonly<Record<string, unknown>>, Readonly<Record<string, unknown>>>;
|
|
32
30
|
provide: import("@aalis/core").ServiceDescriptor<(identity: symbol) => import("@aalis/core").Provide, import("@aalis/core").Provide>;
|
|
33
|
-
memory: import("@aalis/core").OptionalUse<import("@aalis/api-memory").MemoryService, import("@aalis/
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
flowControl: import("@aalis/core").OptionalUse<import("@aalis/api-flow-control").FlowControlService, import("@aalis/core").ServiceRef<import("@aalis/api-flow-control").FlowControlService>>;
|
|
31
|
+
memory: import("@aalis/core").OptionalUse<import("@aalis/api-memory").MemoryService, import("@aalis/api-memory").MemoryService>;
|
|
32
|
+
/** 能不能读目标会话按它的规则判(takeFrom);不在时只能读当前会话 */
|
|
33
|
+
sessionManager: import("@aalis/core").OptionalUse<import("@aalis/api-session-manager").SessionManagerService, import("@aalis/api-session-manager").SessionManagerService>;
|
|
37
34
|
}>;
|
|
38
35
|
export default _default;
|
|
39
36
|
//# 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":"AAyDA;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAc5D;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE;IAAE,cAAc,CAAC,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,EACpE,GAAG,EAAE,MAAM,GACV;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAmC7D;;;;;;;IApFC,0CAA0C;;;AAmS5C,wBAyBG"}
|
package/dist/index.js
CHANGED
|
@@ -1,142 +1,43 @@
|
|
|
1
|
-
import { flowControl } from '@aalis/api-flow-control';
|
|
2
|
-
import { hooks } from '@aalis/api-hooks';
|
|
3
1
|
import { memory } from '@aalis/api-memory';
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import { sessionHistory, } from '@aalis/api-session-history';
|
|
2
|
+
import { sessionHistory } from '@aalis/api-session-history';
|
|
3
|
+
import { sessionManager, takeFrom } from '@aalis/api-session-manager';
|
|
7
4
|
import { tools } from '@aalis/api-tools';
|
|
8
|
-
import { config, definePlugin,
|
|
5
|
+
import { config, definePlugin, logger, optional, provide } from '@aalis/core';
|
|
9
6
|
import { defineConfig, parseConfig } from '@aalis/schema-config';
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
// 该会话之后由下一条不带 proactiveDepth 的入站消息(真人消息、idle/interval 自动触发都算)
|
|
14
|
-
// 驱动的回合不受影响。
|
|
15
|
-
const PROACTIVE_DEPTH_MAX = 1;
|
|
16
|
-
// ===== 跨会话委派:近期派发记录(提醒型,不硬挡) =====
|
|
17
|
-
// 记录每个 (target_session_id, task) 最近一次派发状态。
|
|
18
|
-
// 下一次同目标派发时,在拼装给 target agent 的 task 前注入 META 提醒,
|
|
19
|
-
// 让 target agent 自主判断是否需要重发。不防止派发本身。
|
|
20
|
-
const RECENT_DELEGATION_TTL_MS = 60 * 1000;
|
|
21
|
-
const RECENT_DELEGATION_MAX = 256; // 防止无限增长
|
|
22
|
-
function recentDelegationKey(targetSessionId, taskHash) {
|
|
23
|
-
return `${targetSessionId}::${taskHash}`;
|
|
24
|
-
}
|
|
25
|
-
function hashTask(task) {
|
|
26
|
-
// djb2 (xor variant):非密码学,零依赖,仅用于 60s 内区分 task 文本
|
|
27
|
-
const s = task.trim();
|
|
28
|
-
let h = 5381;
|
|
29
|
-
for (let i = 0; i < s.length; i++) {
|
|
30
|
-
h = (((h << 5) + h) ^ s.charCodeAt(i)) | 0;
|
|
31
|
-
}
|
|
32
|
-
return (h >>> 0).toString(16).padStart(8, '0');
|
|
33
|
-
}
|
|
34
|
-
function pruneRecentDelegations(store, now) {
|
|
35
|
-
for (const [key, entry] of store) {
|
|
36
|
-
if (entry.expiresAt <= now)
|
|
37
|
-
store.delete(key);
|
|
38
|
-
}
|
|
39
|
-
// 超上限时删最早的
|
|
40
|
-
if (store.size > RECENT_DELEGATION_MAX) {
|
|
41
|
-
const oldest = [...store.entries()].sort((a, b) => a[1].firedAt - b[1].firedAt);
|
|
42
|
-
for (let i = 0; i < oldest.length - RECENT_DELEGATION_MAX; i++) {
|
|
43
|
-
store.delete(oldest[i][0]);
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
function findRecentDelegationsForTarget(store, targetSessionId, now) {
|
|
48
|
-
const prefix = `${targetSessionId}::`;
|
|
49
|
-
const list = [];
|
|
50
|
-
for (const [key, entry] of store) {
|
|
51
|
-
if (entry.expiresAt <= now)
|
|
52
|
-
continue;
|
|
53
|
-
if (!key.startsWith(prefix))
|
|
54
|
-
continue;
|
|
55
|
-
list.push(entry);
|
|
56
|
-
}
|
|
57
|
-
list.sort((a, b) => b.firedAt - a.firedAt);
|
|
58
|
-
return list;
|
|
59
|
-
}
|
|
60
|
-
function buildDelegationMetaBlock(sourceSessionId, task, recents, now) {
|
|
61
|
-
const lines = [];
|
|
62
|
-
lines.push('[跨会话委派 META]');
|
|
63
|
-
lines.push(`· 来源会话:${sourceSessionId}`);
|
|
64
|
-
lines.push('· 提醒:你本轮的对外回复内容会原样发送到当前会话所在平台(群/私聊/...)。');
|
|
65
|
-
lines.push('· 生成回复前请先回看你最近 history:若你认为本任务已经完成、或本轮要写的内容与上一条对外回复实质重复,');
|
|
66
|
-
lines.push(' 请输出空回复(不再对外发送),按你所属 persona / output 约定填写必要的内部状态字段即可。');
|
|
67
|
-
if (recents.length > 0) {
|
|
68
|
-
lines.push(`· 检测:60s 内本目标会话 已收到 ${recents.length} 次同/近期任务。最近的:`);
|
|
69
|
-
for (let i = 0; i < Math.min(recents.length, 3); i++) {
|
|
70
|
-
const r = recents[i];
|
|
71
|
-
const ageSec = Math.round((now - r.firedAt) / 1000);
|
|
72
|
-
const reply = r.lastReplyPreview ? ` reply="${r.lastReplyPreview}"` : '';
|
|
73
|
-
lines.push(` - ${ageSec}s 前 · from=${r.sourceSessionId} · status=${r.status}${reply} · task="${r.taskPreview}"`);
|
|
74
|
-
}
|
|
75
|
-
lines.push(' 若确认重复,请依上面提醒处理。');
|
|
76
|
-
}
|
|
77
|
-
lines.push('[任务正文]');
|
|
78
|
-
lines.push(task);
|
|
79
|
-
return lines.join('\n');
|
|
80
|
-
}
|
|
7
|
+
import { toSource } from '@aalis/schema-i18n';
|
|
8
|
+
import { CONTROL_KINDS } from '@aalis/schema-message';
|
|
9
|
+
import { t } from './texts.js';
|
|
81
10
|
// ===== 插件元数据与能力声明 =====
|
|
82
11
|
const configSchema = defineConfig({
|
|
83
|
-
enabled: { type: 'boolean', label: '
|
|
12
|
+
enabled: { type: 'boolean', label: t('enabledLabel'), default: true, onInvalid: 'error' },
|
|
84
13
|
maxLimit: {
|
|
85
14
|
type: 'number',
|
|
86
|
-
label: '
|
|
15
|
+
label: t('maxLimitLabel'),
|
|
87
16
|
default: 100,
|
|
88
|
-
description: '
|
|
17
|
+
description: t('maxLimitDescription'),
|
|
89
18
|
},
|
|
90
19
|
defaultLimit: {
|
|
91
20
|
type: 'number',
|
|
92
|
-
label: '
|
|
21
|
+
label: t('defaultLimitLabel'),
|
|
93
22
|
default: 20,
|
|
94
|
-
description: '
|
|
95
|
-
},
|
|
96
|
-
scope: {
|
|
97
|
-
type: 'select',
|
|
98
|
-
label: '允许读取范围',
|
|
99
|
-
default: 'platform',
|
|
100
|
-
onInvalid: 'error',
|
|
101
|
-
options: [
|
|
102
|
-
{ label: '仅当前会话', value: 'current' },
|
|
103
|
-
{ label: '同平台会话', value: 'platform' },
|
|
104
|
-
{ label: '全部会话', value: 'all' },
|
|
105
|
-
],
|
|
23
|
+
description: t('defaultLimitDescription'),
|
|
106
24
|
},
|
|
107
|
-
includeArchivedDefault: { type: 'boolean', label: '
|
|
25
|
+
includeArchivedDefault: { type: 'boolean', label: t('includeArchivedDefaultLabel'), default: false },
|
|
108
26
|
perMessageMaxChars: {
|
|
109
27
|
type: 'number',
|
|
110
|
-
label: '
|
|
28
|
+
label: t('perMessageMaxCharsLabel'),
|
|
111
29
|
default: 0,
|
|
112
|
-
description: '
|
|
113
|
-
},
|
|
114
|
-
crossSessionEnabled: {
|
|
115
|
-
type: 'boolean',
|
|
116
|
-
label: '启用跨会话委派 (delegate_to_session / list_known_sessions)',
|
|
117
|
-
default: true,
|
|
118
|
-
onInvalid: 'error',
|
|
119
|
-
description: '允许 agent 列出其他活跃会话并向其派发任务(如私聊→群聊、跨平台委派)。受 proactive-depth 与流控禁言/限速保护;限速只对 flow-control 作用域内的会话生效(默认 *:group)。',
|
|
120
|
-
},
|
|
121
|
-
crossSessionDefaultTimeoutSec: {
|
|
122
|
-
type: 'number',
|
|
123
|
-
label: '跨会话委派默认等待秒数',
|
|
124
|
-
default: 60,
|
|
125
|
-
description: 'delegate_to_session 在未显式指定 timeout_seconds 时使用的等待上限。',
|
|
30
|
+
description: t('perMessageMaxCharsDescription'),
|
|
126
31
|
},
|
|
127
32
|
});
|
|
128
33
|
const uses = {
|
|
129
34
|
tools: optional(tools),
|
|
130
|
-
events,
|
|
131
|
-
hooks,
|
|
132
35
|
logger,
|
|
133
36
|
config,
|
|
134
37
|
provide,
|
|
135
38
|
memory: optional(memory),
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
// 委派闸门:目标会话禁言中或限速已满即拒绝;缺席时不设闸
|
|
139
|
-
flowControl: optional(flowControl),
|
|
39
|
+
/** 能不能读目标会话按它的规则判(takeFrom);不在时只能读当前会话 */
|
|
40
|
+
sessionManager: optional(sessionManager),
|
|
140
41
|
};
|
|
141
42
|
/** 无原生区间查询的后端:区间检索退回扫描历史的最大条数(best-effort 上界,防 OOM) */
|
|
142
43
|
const RANGE_FALLBACK_SCAN = 5000;
|
|
@@ -207,9 +108,8 @@ export function resolveTimeRange(args, now) {
|
|
|
207
108
|
}
|
|
208
109
|
return null;
|
|
209
110
|
}
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
}
|
|
111
|
+
/** 交给模型的历史不含事件标记(CONTROL_KINDS,如压缩分隔线、指令的回复):它们不是对话内容 */
|
|
112
|
+
const isSaid = (message) => !CONTROL_KINDS.includes(message.kind ?? '');
|
|
213
113
|
function formatHistoryMessage(message, index, perMessageMaxChars) {
|
|
214
114
|
const text = typeof message.content === 'string'
|
|
215
115
|
? message.content
|
|
@@ -228,57 +128,19 @@ function formatHistoryMessage(message, index, perMessageMaxChars) {
|
|
|
228
128
|
metadata: message.metadata ?? undefined,
|
|
229
129
|
};
|
|
230
130
|
}
|
|
231
|
-
function
|
|
232
|
-
// 0. scope 粗筛
|
|
233
|
-
if (targetSessionId === currentSessionId) {
|
|
234
|
-
// 同会话仍允许平台 checker 表态(防御性)
|
|
235
|
-
}
|
|
236
|
-
else if (scope === 'current') {
|
|
237
|
-
return { ok: false, reason: '当前配置仅允许读取当前会话历史' };
|
|
238
|
-
}
|
|
239
|
-
else if (scope === 'platform') {
|
|
240
|
-
const current = currentPlatform || parsePlatform(currentSessionId);
|
|
241
|
-
const target = parsePlatform(targetSessionId);
|
|
242
|
-
if (!current || !target || current !== target) {
|
|
243
|
-
return {
|
|
244
|
-
ok: false,
|
|
245
|
-
reason: `当前配置仅允许读取同平台会话历史(当前=${current || 'unknown'}, 目标=${target || 'unknown'})`,
|
|
246
|
-
};
|
|
247
|
-
}
|
|
248
|
-
}
|
|
249
|
-
// scope === 'all' 直接走 checker 链
|
|
250
|
-
// 1. 找匹配目标 platform 的 checker,any-deny 短路;无匹配 checker 默认通过
|
|
251
|
-
const targetPlatform = parsePlatform(targetSessionId);
|
|
252
|
-
const matched = checkers.filter(c => c.platform === targetPlatform);
|
|
253
|
-
for (const checker of matched) {
|
|
254
|
-
const verdict = checker.check({ currentSessionId, targetSessionId, callCtx });
|
|
255
|
-
if (verdict?.decision === 'deny') {
|
|
256
|
-
return { ok: false, reason: verdict.reason || `平台 ${targetPlatform} 拒绝此次跨会话访问` };
|
|
257
|
-
}
|
|
258
|
-
}
|
|
259
|
-
return { ok: true };
|
|
260
|
-
}
|
|
261
|
-
function createSessionHistoryService({ memory, logger }, cfg) {
|
|
262
|
-
const checkers = [];
|
|
131
|
+
function createSessionHistoryService({ memory, logger, sessionManager }, cfg) {
|
|
263
132
|
return {
|
|
264
|
-
registerAccessChecker(checker) {
|
|
265
|
-
checkers.push(checker);
|
|
266
|
-
return () => {
|
|
267
|
-
const idx = checkers.indexOf(checker);
|
|
268
|
-
if (idx >= 0)
|
|
269
|
-
checkers.splice(idx, 1);
|
|
270
|
-
};
|
|
271
|
-
},
|
|
272
133
|
async getHistory(options, callCtx) {
|
|
273
|
-
|
|
274
|
-
if (!store)
|
|
134
|
+
if (!memory.present)
|
|
275
135
|
return { error: 'memory 服务不可用' };
|
|
136
|
+
const store = memory.use;
|
|
276
137
|
const targetSessionId = String(options.sessionId ?? '').trim();
|
|
277
138
|
if (!targetSessionId)
|
|
278
139
|
return { error: 'sessionId 不能为空' };
|
|
279
|
-
|
|
140
|
+
// 逐个参与者过会话管理的规则:有人过不了(某个参与者自己私聊里的)时发一道参与者审批,由过得了的人批
|
|
141
|
+
const verdict = await callCtx.approveFor(who => takeFrom(sessionManager, callCtx.sessionId, targetSessionId, who));
|
|
280
142
|
if (!verdict.ok)
|
|
281
|
-
return { error: verdict.reason };
|
|
143
|
+
return { error: toSource(verdict.reason) };
|
|
282
144
|
const limit = Math.max(1, Math.min(cfg.maxLimit, Math.floor(Number(options.limit) || cfg.defaultLimit)));
|
|
283
145
|
const includeArchived = typeof options.includeArchived === 'boolean' ? options.includeArchived : cfg.includeArchivedDefault;
|
|
284
146
|
// 区间检索模式:给定 sinceTs / untilTs 任一即进入。区间查询天然含归档(含完整记录),
|
|
@@ -312,8 +174,9 @@ function createSessionHistoryService({ memory, logger }, cfg) {
|
|
|
312
174
|
// 区间查询按时间升序返回。窗口内超过 limit 时取**最早**的 limit 条(按阅读顺序、与「区间」语义一致),
|
|
313
175
|
// 并以 truncated 明示「窗口内还有更多、请缩小窗口」——不再静默丢弃。
|
|
314
176
|
// 注意:原生区间后端通常有约 500 条的硬上限,极大窗口可能在后端那步就已截断,故 truncated 为保守信号。
|
|
315
|
-
const
|
|
316
|
-
const
|
|
177
|
+
const said = ranged.filter(isSaid);
|
|
178
|
+
const sliced = said.slice(0, limit);
|
|
179
|
+
const truncated = said.length > sliced.length;
|
|
317
180
|
const result = {
|
|
318
181
|
ok: true,
|
|
319
182
|
sessionId: targetSessionId,
|
|
@@ -326,34 +189,40 @@ function createSessionHistoryService({ memory, logger }, cfg) {
|
|
|
326
189
|
};
|
|
327
190
|
return result;
|
|
328
191
|
}
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
192
|
+
// 多读一倍再去掉事件标记,取最后 limit 条;还是凑不满时写明略去了几条非对话记录
|
|
193
|
+
const read = includeArchived && store.getFullHistory
|
|
194
|
+
? await store.getFullHistory(targetSessionId, limit * 2)
|
|
195
|
+
: await store.getHistory(targetSessionId, limit * 2);
|
|
196
|
+
const said = read.filter(isSaid);
|
|
197
|
+
const history = said.slice(-limit);
|
|
198
|
+
const omitted = history.length < limit ? read.length - said.length : 0;
|
|
332
199
|
const result = {
|
|
333
200
|
ok: true,
|
|
334
201
|
sessionId: targetSessionId,
|
|
335
202
|
count: history.length,
|
|
336
203
|
limit,
|
|
337
204
|
includeArchived: includeArchived && !!store.getFullHistory,
|
|
205
|
+
...(omitted > 0 ? { omittedNonConversation: omitted } : {}),
|
|
338
206
|
messages: history.map((message, index) => formatHistoryMessage(message, index + 1, cfg.perMessageMaxChars)),
|
|
339
207
|
};
|
|
340
208
|
return result;
|
|
341
209
|
}
|
|
342
210
|
catch (err) {
|
|
343
211
|
const message = err instanceof Error ? err.message : String(err);
|
|
344
|
-
logger.warn(`session-history 读取失败 (${targetSessionId}): ${message}`);
|
|
212
|
+
logger.use.warn(`session-history 读取失败 (${targetSessionId}): ${message}`);
|
|
345
213
|
return { error: `读取会话历史失败: ${message}` };
|
|
346
214
|
}
|
|
347
215
|
},
|
|
348
216
|
};
|
|
349
217
|
}
|
|
350
218
|
function registerSessionHistoryTools({ tools, logger }, historyService, cfg) {
|
|
351
|
-
tools.registerGroup({
|
|
219
|
+
tools.use.registerGroup({
|
|
352
220
|
name: 'session-history',
|
|
353
|
-
label: '
|
|
221
|
+
label: t('sessionHistory'),
|
|
222
|
+
summary: t('groupSummary'),
|
|
354
223
|
description: '按 Aalis sessionId 读取近期会话历史,用于核实跨会话上下文',
|
|
355
224
|
});
|
|
356
|
-
tools.register({
|
|
225
|
+
tools.use.register({
|
|
357
226
|
groups: ['session-history'],
|
|
358
227
|
definition: {
|
|
359
228
|
type: 'function',
|
|
@@ -362,12 +231,13 @@ function registerSessionHistoryTools({ tools, logger }, historyService, cfg) {
|
|
|
362
231
|
description: [
|
|
363
232
|
'按 Aalis sessionId 读取指定会话的消息。',
|
|
364
233
|
'两种模式:',
|
|
365
|
-
'①【条数】默认——读最近若干条(limit
|
|
234
|
+
'①【条数】默认——读最近若干条(limit 控制),不含指令回复等非对话记录;',
|
|
235
|
+
' 凑不满又略去了这类记录时,结果带 omittedNonConversation(略去的条数)。',
|
|
366
236
|
'②【时间区间】给定 within_minutes(最近 N 分钟)或 since/until(绝对区间)时启用——',
|
|
367
237
|
' 取该会话落在区间内的消息(含归档完整记录),按时间正序返回最早的 limit 条;',
|
|
368
238
|
' 窗口内更多时结果带 truncated:true(请缩小时间窗再查)。',
|
|
369
239
|
'适合在用户明确提到另一个会话、需要核实原文上下文、或要查「某段时间里聊了什么」时使用。',
|
|
370
|
-
'
|
|
240
|
+
'能读哪些会话按会话管理的跨会话规则(默认同平台、不读别人的私聊);不要把它当作全局搜索工具,语义检索请用 memory_recall。',
|
|
371
241
|
].join('\n'),
|
|
372
242
|
parameters: {
|
|
373
243
|
type: 'object',
|
|
@@ -399,7 +269,7 @@ function registerSessionHistoryTools({ tools, logger }, historyService, cfg) {
|
|
|
399
269
|
},
|
|
400
270
|
},
|
|
401
271
|
},
|
|
402
|
-
//
|
|
272
|
+
// 读=信息暴露向量(可含跨会话日志/记忆),等级 1 起可用,挡住 0 级;不弹确认
|
|
403
273
|
risk: 'sensitive',
|
|
404
274
|
handler: async (args, callCtx) => {
|
|
405
275
|
const targetSessionId = String(args.session_id ?? '').trim();
|
|
@@ -418,419 +288,30 @@ function registerSessionHistoryTools({ tools, logger }, historyService, cfg) {
|
|
|
418
288
|
return JSON.stringify(result);
|
|
419
289
|
},
|
|
420
290
|
});
|
|
421
|
-
logger.info('会话历史读取工具已注册');
|
|
422
|
-
}
|
|
423
|
-
/**
|
|
424
|
-
* 登记「当前回合由深度 N 的委派消息驱动」。
|
|
425
|
-
*
|
|
426
|
-
* 登记点在 `agent:input:before`——回合真正开始的那一刻,且是所有投递方式的汇合处:
|
|
427
|
-
* 经 `inbound:message` 事件进来的和直接调 `gateway.ingressMessage()` 的都要过这道钩子,
|
|
428
|
-
* 登记因而必然早于本回合的任何工具调用。
|
|
429
|
-
*
|
|
430
|
-
* 入站即写、回合结束(`agent:turn:after`)即清;下一条不带 proactiveDepth 的入站消息
|
|
431
|
-
* (真人消息、idle/interval 自动触发都算)会覆盖清除该会话的登记,所以即使某轮没等到
|
|
432
|
-
* turn:after(被中间件吞、进程重启前残留),这样的下一条消息也能立刻解锁——无需任何超时兜底。
|
|
433
|
-
*
|
|
434
|
-
* 锁按 sessionId 记,是「会话近似回合」:同会话不同 source 的并行回合共用同一把锁,
|
|
435
|
-
* 后开始的那个会覆盖前一个的登记、先结束的那个会替所有人解锁。
|
|
436
|
-
*/
|
|
437
|
-
function trackProactiveTurnDepth(hooks, turnProactiveDepth) {
|
|
438
|
-
hooks.middleware('agent:input:before', async (data, next) => {
|
|
439
|
-
const depth = typeof data.message.proactiveDepth === 'number' ? data.message.proactiveDepth : 0;
|
|
440
|
-
if (depth > 0)
|
|
441
|
-
turnProactiveDepth.set(data.message.sessionId, depth);
|
|
442
|
-
else
|
|
443
|
-
turnProactiveDepth.delete(data.message.sessionId);
|
|
444
|
-
await next();
|
|
445
|
-
});
|
|
446
|
-
hooks.middleware('agent:turn:after', async (data, next) => {
|
|
447
|
-
await next();
|
|
448
|
-
turnProactiveDepth.delete(data.sessionId);
|
|
449
|
-
});
|
|
450
|
-
}
|
|
451
|
-
function registerCrossSessionTools(caps, cfg) {
|
|
452
|
-
const { tools, logger, events, hooks, memory, platform, persona, flowControl } = caps;
|
|
453
|
-
/**
|
|
454
|
-
* sessionId → 该会话当前回合的入站消息所带 proactiveDepth(非委派回合不在表内)。
|
|
455
|
-
* 随这次激活存亡:锁由本次激活的 `agent:input:before` 中间件写入、由本次激活注册的工具读取,
|
|
456
|
-
* 插件重载后旧锁必须一并消失,否则新激活会拿着没有对应回合的残留锁拒绝委派。
|
|
457
|
-
*/
|
|
458
|
-
const turnProactiveDepth = new Map();
|
|
459
|
-
/** (目标会话, task) → 最近一次派发状态;同样随激活存亡(60s 提醒窗,跨重载无保留价值) */
|
|
460
|
-
const recentDelegations = new Map();
|
|
461
|
-
trackProactiveTurnDepth(hooks, turnProactiveDepth);
|
|
462
|
-
tools.registerGroup({
|
|
463
|
-
name: 'session-delegate',
|
|
464
|
-
label: '跨会话派发',
|
|
465
|
-
description: '向已存在的其他会话(如另一个群、另一个 QQ 好友、另一个平台)派发任务并可选等待结果。',
|
|
466
|
-
});
|
|
467
|
-
// ---- list_known_sessions ----
|
|
468
|
-
// 列出最近活跃的会话(按平台/最近活跃时间),供 agent 在 delegate 前发现可派发目标,
|
|
469
|
-
// 避免凭空拼接 sessionId 出错。基于 memory 的 getRecentMessagesAcrossSessions 能力。
|
|
470
|
-
tools.register({
|
|
471
|
-
groups: ['session-delegate'],
|
|
472
|
-
definition: {
|
|
473
|
-
type: 'function',
|
|
474
|
-
function: {
|
|
475
|
-
name: 'list_known_sessions',
|
|
476
|
-
description: [
|
|
477
|
-
'列出 agent 最近活跃过的会话,按最近活动时间倒序返回,用于 delegate_to_session 之前发现目标 sessionId。',
|
|
478
|
-
'',
|
|
479
|
-
'【返回字段】',
|
|
480
|
-
'- session_id:完整 sessionId(可直接用于 delegate_to_session 的 target_session_id)',
|
|
481
|
-
'- platform:所属平台(如 onebot / webui / scheduler)',
|
|
482
|
-
'- last_activity_ts:最近一条消息的时间戳(毫秒)',
|
|
483
|
-
'- preview:最近一条消息的内容预览(截断到 80 字)',
|
|
484
|
-
'',
|
|
485
|
-
'【注意】',
|
|
486
|
-
'- 仅返回 memory 中存在历史的会话;从未对话过的群/好友需要用平台专属工具(如 onebot_get_group_list)查询。',
|
|
487
|
-
'- 默认排除当前会话本身。',
|
|
488
|
-
].join('\n'),
|
|
489
|
-
parameters: {
|
|
490
|
-
type: 'object',
|
|
491
|
-
properties: {
|
|
492
|
-
limit: {
|
|
493
|
-
type: 'number',
|
|
494
|
-
description: '最大返回会话数(默认 20,最大 100)',
|
|
495
|
-
},
|
|
496
|
-
platform: {
|
|
497
|
-
type: 'string',
|
|
498
|
-
description: '仅返回指定平台的会话(如 "onebot");省略则不限平台',
|
|
499
|
-
},
|
|
500
|
-
since_hours: {
|
|
501
|
-
type: 'number',
|
|
502
|
-
description: '仅返回最近 N 小时内有活动的会话(默认 168 小时 = 7 天)',
|
|
503
|
-
},
|
|
504
|
-
},
|
|
505
|
-
required: [],
|
|
506
|
-
additionalProperties: false,
|
|
507
|
-
},
|
|
508
|
-
},
|
|
509
|
-
},
|
|
510
|
-
handler: async (args, callCtx) => {
|
|
511
|
-
const store = memory.current;
|
|
512
|
-
if (!store?.getRecentMessagesAcrossSessions) {
|
|
513
|
-
return JSON.stringify({
|
|
514
|
-
error: '当前 memory 服务不支持 getRecentMessagesAcrossSessions 能力',
|
|
515
|
-
});
|
|
516
|
-
}
|
|
517
|
-
const limit = Math.min(100, Math.max(1, Number(args.limit) || 20));
|
|
518
|
-
const sinceHours = Number.isFinite(Number(args.since_hours)) && Number(args.since_hours) > 0 ? Number(args.since_hours) : 168;
|
|
519
|
-
const platformFilter = typeof args.platform === 'string' && args.platform.trim().length > 0 ? args.platform.trim() : undefined;
|
|
520
|
-
const sinceTs = Date.now() - sinceHours * 3600 * 1000;
|
|
521
|
-
// 多取一些消息再按 session 聚合,确保 limit 个会话能凑齐
|
|
522
|
-
const records = await store.getRecentMessagesAcrossSessions({
|
|
523
|
-
limit: Math.max(limit * 10, 200),
|
|
524
|
-
sinceTs,
|
|
525
|
-
platform: platformFilter,
|
|
526
|
-
excludeSessionIds: callCtx.sessionId ? [callCtx.sessionId] : undefined,
|
|
527
|
-
roles: ['user', 'assistant'],
|
|
528
|
-
});
|
|
529
|
-
const bySession = new Map();
|
|
530
|
-
for (const rec of records) {
|
|
531
|
-
const ts = rec.message.timestamp ?? 0;
|
|
532
|
-
const existing = bySession.get(rec.sessionId);
|
|
533
|
-
if (!existing || ts > existing.lastTs) {
|
|
534
|
-
const content = typeof rec.message.content === 'string' ? rec.message.content : '';
|
|
535
|
-
const preview = content.length > 80 ? `${content.slice(0, 80)}...` : content;
|
|
536
|
-
const platformName = rec.message.metadata?.platform != null
|
|
537
|
-
? String(rec.message.metadata.platform)
|
|
538
|
-
: rec.sessionId.split(':')[0] || undefined;
|
|
539
|
-
bySession.set(rec.sessionId, {
|
|
540
|
-
sessionId: rec.sessionId,
|
|
541
|
-
platform: platformName,
|
|
542
|
-
lastTs: ts,
|
|
543
|
-
preview,
|
|
544
|
-
});
|
|
545
|
-
}
|
|
546
|
-
}
|
|
547
|
-
const items = [...bySession.values()]
|
|
548
|
-
.sort((a, b) => b.lastTs - a.lastTs)
|
|
549
|
-
.slice(0, limit)
|
|
550
|
-
.map(s => ({
|
|
551
|
-
session_id: s.sessionId,
|
|
552
|
-
platform: s.platform,
|
|
553
|
-
last_activity_ts: s.lastTs,
|
|
554
|
-
preview: s.preview,
|
|
555
|
-
}));
|
|
556
|
-
return JSON.stringify({
|
|
557
|
-
count: items.length,
|
|
558
|
-
since_hours: sinceHours,
|
|
559
|
-
sessions: items,
|
|
560
|
-
});
|
|
561
|
-
},
|
|
562
|
-
});
|
|
563
|
-
// ---- delegate_to_session ----
|
|
564
|
-
// 向已存在的目标会话派发一次任务,目标会话的 agent 在自己原本的人设/记忆/工具集下完整推理;
|
|
565
|
-
// 与 create_subtask 不同:目标不是新建的"子会话",而是任意已知 sessionId(如群聊、私聊、跨平台)。
|
|
566
|
-
tools.register({
|
|
567
|
-
groups: ['session-delegate'],
|
|
568
|
-
definition: {
|
|
569
|
-
type: 'function',
|
|
570
|
-
function: {
|
|
571
|
-
name: 'delegate_to_session',
|
|
572
|
-
description: [
|
|
573
|
-
'向指定的目标会话(target_session_id)派发一次任务,目标会话的 agent 会在它自己的人设、记忆、工具集、',
|
|
574
|
-
'平台环境下自主完成一次完整推理(可能调用工具、分多段回复等)。',
|
|
575
|
-
'',
|
|
576
|
-
'【典型使用场景】',
|
|
577
|
-
'- 你在私聊里被要求"去 xx 群禁言 yyy":群管理类工具只能在群聊会话内调用,',
|
|
578
|
-
' 此时应 delegate 到该群 sessionId,让群里的 agent 执行 onebot_group_ban。',
|
|
579
|
-
'- 跨平台转告:把消息从 webui 转告到某个 QQ 群。',
|
|
580
|
-
'- 主动联系某位好友 / 在某个群发布公告。',
|
|
581
|
-
'',
|
|
582
|
-
'【与 create_subtask 区别】',
|
|
583
|
-
'- create_subtask:新建一个"子会话"分支,状态独立、有 parent/child 关系,用于把当前任务拆分成并行子任务。',
|
|
584
|
-
'- delegate_to_session:目标是已经存在(或将以平台身份存在)的会话,没有 parent/child 关系,',
|
|
585
|
-
' 对目标会话来说就像收到一条"主动消息"。',
|
|
586
|
-
'',
|
|
587
|
-
'【sessionId 怎么拿】',
|
|
588
|
-
'- OneBot 群/私聊:onebot:<selfId>:group:<群号> 或 onebot:<selfId>:private:<QQ号>,',
|
|
589
|
-
' 也可先调用 onebot_resolve_session_id 转换。',
|
|
590
|
-
'- 其他平台:参考各平台 adapter 的 sessionId 约定。',
|
|
591
|
-
'',
|
|
592
|
-
'【安全限制】',
|
|
593
|
-
'- 防雪崩:委派消息驱动的那一个回合内禁止再委派(A→B 允许,B 处理这条委派时不能再 delegate);',
|
|
594
|
-
' 回合结束即解除,该会话之后由下一条不带 proactiveDepth 的入站消息',
|
|
595
|
-
' (真人消息、idle/interval 自动触发都算)驱动的回合不受影响。',
|
|
596
|
-
'- 流控约束:目标会话受流控禁言与限速约束,禁言期内或限速窗口已满时委派会被拒绝。',
|
|
597
|
-
'- 自委派被禁止:target_session_id 不能等于当前 sessionId。',
|
|
598
|
-
'',
|
|
599
|
-
'【wait_for_result】',
|
|
600
|
-
'- true(默认):同步等待目标 agent 完成一轮回复,把对方 reply 文本返回给你,最长等 timeout_seconds 秒。',
|
|
601
|
-
'- false:fire-and-forget,立刻返回"已派发",不阻塞当前会话。',
|
|
602
|
-
'',
|
|
603
|
-
'【fire-and-forget 时延 / 重复派发提醒】',
|
|
604
|
-
'- fire-and-forget 模式下,目标会话从被派发到真正对外发送通常需要 5~30 秒(大群历史多、目标 agent 多轮工具迭代会更慢)。',
|
|
605
|
-
'- 用户口头说"没收到"不等于目标真的没发;先用 onebot_get_session_history(或对应平台的 history 工具)',
|
|
606
|
-
' 查目标 sessionId 最近一条 role=assistant 输出,结合该会话所用 persona/output 约定判断是否已发出。',
|
|
607
|
-
'- 系统会在 60 秒内追踪同一 target_session_id 的多次派发,并在派发给目标 agent 的 task 前注入 META 块;',
|
|
608
|
-
' 目标 agent 可识别 META 后选择不重发(输出空回复)。但 META 是"提醒"非硬性拦截:',
|
|
609
|
-
' 调用方仍应避免短时间内对同一目标重复派发同一任务。',
|
|
610
|
-
'',
|
|
611
|
-
'【返回值字段】',
|
|
612
|
-
'- outcome: replied / silent / aborted。silent 表示目标 agent 本轮 reply 为空(可能在执行工具未发文本、',
|
|
613
|
-
' 或被中间件吞掉、或目标策略层主动静默);reply="" 不代表任务一定已完成。',
|
|
614
|
-
'- reply: 目标 agent 真正对外发出的可见文本(可能为空)。',
|
|
615
|
-
'- personaState: 可选字段。若目标会话挂载了 persona 且本轮产出结构化状态,则附带,用于辅助判断;',
|
|
616
|
-
' 不挂载或未产出时不出现,不要假设它一定存在。',
|
|
617
|
-
].join('\n'),
|
|
618
|
-
parameters: {
|
|
619
|
-
type: 'object',
|
|
620
|
-
properties: {
|
|
621
|
-
target_session_id: {
|
|
622
|
-
type: 'string',
|
|
623
|
-
description: '目标会话完整 sessionId(如 "onebot:10000:group:20002")',
|
|
624
|
-
},
|
|
625
|
-
task: {
|
|
626
|
-
type: 'string',
|
|
627
|
-
description: '给目标会话 agent 的任务说明。注意这不是要原样发出的文本,而是"该做什么/该说什么"的指令,' +
|
|
628
|
-
'目标 agent 会按自己的风格、记忆、工具集组织措辞和动作。',
|
|
629
|
-
},
|
|
630
|
-
wait_for_result: {
|
|
631
|
-
type: 'boolean',
|
|
632
|
-
description: '是否同步等待目标 agent 完成本轮回复并把内容返回。默认 true。',
|
|
633
|
-
},
|
|
634
|
-
timeout_seconds: {
|
|
635
|
-
type: 'number',
|
|
636
|
-
description: `wait_for_result=true 时的等待上限,默认 ${cfg.crossSessionDefaultTimeoutSec} 秒,最大 300 秒。`,
|
|
637
|
-
},
|
|
638
|
-
},
|
|
639
|
-
required: ['target_session_id', 'task'],
|
|
640
|
-
additionalProperties: false,
|
|
641
|
-
},
|
|
642
|
-
},
|
|
643
|
-
},
|
|
644
|
-
handler: async (args, callCtx) => {
|
|
645
|
-
const targetSessionId = String(args.target_session_id ?? '').trim();
|
|
646
|
-
const task = String(args.task ?? '');
|
|
647
|
-
const waitForResult = args.wait_for_result === undefined ? true : args.wait_for_result === true;
|
|
648
|
-
const requestedTimeoutSec = Number(args.timeout_seconds);
|
|
649
|
-
const timeoutSec = Number.isFinite(requestedTimeoutSec) && requestedTimeoutSec > 0
|
|
650
|
-
? Math.min(300, requestedTimeoutSec)
|
|
651
|
-
: cfg.crossSessionDefaultTimeoutSec;
|
|
652
|
-
const timeoutMs = Math.max(1000, timeoutSec * 1000);
|
|
653
|
-
if (!targetSessionId)
|
|
654
|
-
return JSON.stringify({ error: 'target_session_id 不能为空' });
|
|
655
|
-
if (!task.trim())
|
|
656
|
-
return JSON.stringify({ error: 'task 不能为空' });
|
|
657
|
-
if (targetSessionId === callCtx.sessionId) {
|
|
658
|
-
return JSON.stringify({ error: 'target_session_id 不能等于当前会话;如需自我追问请直接生成下一轮回复。' });
|
|
659
|
-
}
|
|
660
|
-
// 防雪崩:只看「本回合是不是委派消息驱动的」。深度随消息走,回合结束即解除。
|
|
661
|
-
const currentDepth = turnProactiveDepth.get(callCtx.sessionId) ?? 0;
|
|
662
|
-
if (currentDepth >= PROACTIVE_DEPTH_MAX) {
|
|
663
|
-
return JSON.stringify({ error: '本回合由委派消息驱动,不能再委派' });
|
|
664
|
-
}
|
|
665
|
-
const targetDepth = currentDepth + 1;
|
|
666
|
-
// 流控硬闸:只检不记。限速按目标会话的真实回复计(flow-control 监听 outbound:message),
|
|
667
|
-
// 派发到回复落地之间对同一目标的突发委派不占槽,可能越过限速。
|
|
668
|
-
const flow = flowControl.current;
|
|
669
|
-
if (flow?.isMuted(targetSessionId)) {
|
|
670
|
-
return JSON.stringify({ error: '委派被拒:目标会话处于禁言期' });
|
|
671
|
-
}
|
|
672
|
-
if (flow?.isRateLimited(targetSessionId)) {
|
|
673
|
-
return JSON.stringify({ error: '委派被拒:目标会话已达流控限速上限' });
|
|
674
|
-
}
|
|
675
|
-
const platformName = (await resolvePlatformBySession(platform, targetSessionId, logger))?.platform;
|
|
676
|
-
// ===== 注入 META 提示(提醒型,不挡派发) =====
|
|
677
|
-
const now = Date.now();
|
|
678
|
-
pruneRecentDelegations(recentDelegations, now);
|
|
679
|
-
const taskHash = hashTask(task);
|
|
680
|
-
const dedupKey = recentDelegationKey(targetSessionId, taskHash);
|
|
681
|
-
const recents = findRecentDelegationsForTarget(recentDelegations, targetSessionId, now);
|
|
682
|
-
const taskWithMeta = buildDelegationMetaBlock(callCtx.sessionId, task, recents, now);
|
|
683
|
-
const entry = {
|
|
684
|
-
firedAt: now,
|
|
685
|
-
expiresAt: now + RECENT_DELEGATION_TTL_MS,
|
|
686
|
-
sourceSessionId: callCtx.sessionId,
|
|
687
|
-
taskPreview: task.length > 80 ? `${task.slice(0, 80)}...` : task,
|
|
688
|
-
status: waitForResult ? 'pending' : 'fired-no-wait',
|
|
689
|
-
};
|
|
690
|
-
recentDelegations.set(dedupKey, entry);
|
|
691
|
-
if (recents.length > 0) {
|
|
692
|
-
logger.info(`[delegate] META 提醒已注入:${targetSessionId} 在 60s 内已收到 ${recents.length} 次同/近期任务`);
|
|
693
|
-
}
|
|
694
|
-
const incoming = {
|
|
695
|
-
content: taskWithMeta,
|
|
696
|
-
sessionId: targetSessionId,
|
|
697
|
-
platform: platformName ?? callCtx.platform ?? 'internal',
|
|
698
|
-
source: `proactive:from:${callCtx.sessionId}`,
|
|
699
|
-
triggerType: 'proactive',
|
|
700
|
-
// 深度随消息走:目标会话处理这条消息的那一个回合内不能再委派
|
|
701
|
-
proactiveDepth: targetDepth,
|
|
702
|
-
};
|
|
703
|
-
// 授权身份透传(schema-message 的 actor 契约):authority 按发起者 (platform, userId)
|
|
704
|
-
// 实时查等级——权限跟人走。优先 callCtx.actor(本回合已在代人执行时链式传递),
|
|
705
|
-
// 否则用物理身份。只透传不发明:强制从 callCtx snapshot、绝不从 args 读
|
|
706
|
-
// (防 LLM 指定身份提权,同 scheduler 范式);callCtx 匿名则目标同样匿名。
|
|
707
|
-
const delegateActor = callCtx.actor ??
|
|
708
|
-
(callCtx.platform && callCtx.userId ? { platform: callCtx.platform, userId: callCtx.userId } : undefined);
|
|
709
|
-
if (delegateActor)
|
|
710
|
-
incoming.actor = delegateActor;
|
|
711
|
-
const taskPreview = task.length > 80 ? `${task.slice(0, 80)}... (+${task.length - 80}字,全文已完整传递给目标会话)` : task;
|
|
712
|
-
logger.info(`[delegate] from=${callCtx.sessionId} -> ${targetSessionId} depth=${targetDepth} wait=${waitForResult} task="${taskPreview}"`);
|
|
713
|
-
if (!waitForResult) {
|
|
714
|
-
events.emit('inbound:message', incoming).catch(err => {
|
|
715
|
-
logger.warn(`[delegate] 派发失败 (${targetSessionId}): ${err}`);
|
|
716
|
-
});
|
|
717
|
-
logger.info(`[delegate] return -> ${callCtx.sessionId} wait=false (fire-and-forget)`);
|
|
718
|
-
return JSON.stringify({
|
|
719
|
-
delegated: true,
|
|
720
|
-
targetSessionId,
|
|
721
|
-
wait: false,
|
|
722
|
-
depth: `${targetDepth}/${PROACTIVE_DEPTH_MAX}`,
|
|
723
|
-
message: '已派发,不等待目标会话结果',
|
|
724
|
-
});
|
|
725
|
-
}
|
|
726
|
-
// wait_for_result=true:在派发前注册 agent:turn:after 监听,捕获目标 sessionId 的首条 reply
|
|
727
|
-
let captured;
|
|
728
|
-
let resolveWait;
|
|
729
|
-
const waitPromise = new Promise(resolve => {
|
|
730
|
-
resolveWait = resolve;
|
|
731
|
-
});
|
|
732
|
-
const dispose = hooks.middleware('agent:turn:after', async (data, next) => {
|
|
733
|
-
await next();
|
|
734
|
-
if (captured)
|
|
735
|
-
return;
|
|
736
|
-
// 只认本次委派那条 incoming:同一目标会话上并发的真实用户消息 source 不同,不会被误当委派结果。
|
|
737
|
-
// 残留边角——同一源会话对同一目标并发多次委派会共享 source,此处不细分(需关联 id,超出当前范围)。
|
|
738
|
-
if (data.sessionId !== targetSessionId || data.message?.source !== incoming.source)
|
|
739
|
-
return;
|
|
740
|
-
captured = { reply: data.reply ?? '', outcome: data.outcome };
|
|
741
|
-
resolveWait?.();
|
|
742
|
-
});
|
|
743
|
-
const timeoutHandle = setTimeout(() => resolveWait?.(), timeoutMs);
|
|
744
|
-
try {
|
|
745
|
-
await events.emit('inbound:message', incoming);
|
|
746
|
-
await waitPromise;
|
|
747
|
-
}
|
|
748
|
-
finally {
|
|
749
|
-
clearTimeout(timeoutHandle);
|
|
750
|
-
dispose();
|
|
751
|
-
}
|
|
752
|
-
if (!captured) {
|
|
753
|
-
logger.warn(`[delegate] return -> ${callCtx.sessionId} timedOut=true wait=${timeoutSec}s (未捕获 agent:turn:after)`);
|
|
754
|
-
return JSON.stringify({
|
|
755
|
-
delegated: true,
|
|
756
|
-
targetSessionId,
|
|
757
|
-
wait: true,
|
|
758
|
-
timedOut: true,
|
|
759
|
-
depth: `${targetDepth}/${PROACTIVE_DEPTH_MAX}`,
|
|
760
|
-
message: `已派发但在 ${timeoutSec}s 内未捕获 agent:turn:after(目标可能仍在执行或被中间件 swallow)`,
|
|
761
|
-
});
|
|
762
|
-
}
|
|
763
|
-
// 更新 recentDelegations entry:写入回复结果,供后续重复派发提醒展示
|
|
764
|
-
const entryAfter = recentDelegations.get(dedupKey);
|
|
765
|
-
if (entryAfter) {
|
|
766
|
-
entryAfter.status = 'replied';
|
|
767
|
-
const r = captured.reply ?? '';
|
|
768
|
-
entryAfter.lastReplyPreview =
|
|
769
|
-
r.length > 60 ? `${r.slice(0, 60).replace(/\n/g, ' ')}...` : r.replace(/\n/g, ' ');
|
|
770
|
-
}
|
|
771
|
-
const replyTruncated = captured.reply.length > 2000
|
|
772
|
-
? `${captured.reply.slice(0, 2000)}\n...[已截断, 原长 ${captured.reply.length} 字]`
|
|
773
|
-
: captured.reply;
|
|
774
|
-
// 可选附加:若目标会话挂载了 persona service 且本轮产出结构化状态,附带返回;
|
|
775
|
-
// 不挂载或未产出时不放该字段,避免上游对「persona 一定存在」做假设。
|
|
776
|
-
let personaState;
|
|
777
|
-
try {
|
|
778
|
-
const state = persona.current?.getSessionState?.(targetSessionId);
|
|
779
|
-
if (state && Object.keys(state).length > 0) {
|
|
780
|
-
personaState = state;
|
|
781
|
-
}
|
|
782
|
-
}
|
|
783
|
-
catch {
|
|
784
|
-
// service 未启用 / 未提供接口,静默忽略
|
|
785
|
-
}
|
|
786
|
-
const payload = {
|
|
787
|
-
delegated: true,
|
|
788
|
-
targetSessionId,
|
|
789
|
-
wait: true,
|
|
790
|
-
timedOut: false,
|
|
791
|
-
outcome: captured.outcome,
|
|
792
|
-
reply: replyTruncated,
|
|
793
|
-
depth: `${targetDepth}/${PROACTIVE_DEPTH_MAX}`,
|
|
794
|
-
};
|
|
795
|
-
if (personaState)
|
|
796
|
-
payload.personaState = personaState;
|
|
797
|
-
const replyPreview = captured.reply.length === 0
|
|
798
|
-
? '<空>'
|
|
799
|
-
: captured.reply.length > 60
|
|
800
|
-
? `"${captured.reply.slice(0, 60).replace(/\n/g, ' ')}..." (+${captured.reply.length - 60}字)`
|
|
801
|
-
: `"${captured.reply.replace(/\n/g, ' ')}"`;
|
|
802
|
-
logger.info(`[delegate] return -> ${callCtx.sessionId} outcome=${captured.outcome} reply=${replyPreview}${personaState ? ' personaState=yes' : ''}`);
|
|
803
|
-
return JSON.stringify(payload);
|
|
804
|
-
},
|
|
805
|
-
});
|
|
806
|
-
logger.info('跨会话协作工具已注册');
|
|
291
|
+
logger.use.info('会话历史读取工具已注册');
|
|
807
292
|
}
|
|
808
293
|
// ===== 插件入口 =====
|
|
809
294
|
export default definePlugin({
|
|
810
295
|
name: '@aalis/plugin-tool-session',
|
|
811
|
-
displayName: '
|
|
296
|
+
displayName: t('displayName'),
|
|
812
297
|
subsystem: 'session',
|
|
813
298
|
configSchema,
|
|
814
299
|
provides: [sessionHistory],
|
|
815
300
|
uses,
|
|
816
301
|
apply(caps) {
|
|
817
|
-
const parsed = parseConfig(configSchema, caps.config, caps.logger);
|
|
302
|
+
const parsed = parseConfig(configSchema, caps.config.use, caps.logger.use);
|
|
818
303
|
const maxLimit = Math.max(1, Math.min(1000, parsed.maxLimit || configSchema.maxLimit.default));
|
|
819
304
|
const cfg = {
|
|
820
305
|
...parsed,
|
|
821
306
|
maxLimit,
|
|
822
307
|
defaultLimit: Math.min(Math.max(1, Math.floor(parsed.defaultLimit || configSchema.defaultLimit.default)), maxLimit),
|
|
823
308
|
perMessageMaxChars: Math.max(0, parsed.perMessageMaxChars),
|
|
824
|
-
crossSessionDefaultTimeoutSec: parsed.crossSessionDefaultTimeoutSec || configSchema.crossSessionDefaultTimeoutSec.default,
|
|
825
309
|
};
|
|
826
310
|
if (!cfg.enabled)
|
|
827
311
|
return;
|
|
828
312
|
const historyService = createSessionHistoryService(caps, cfg);
|
|
829
|
-
caps.provide(sessionHistory, historyService, { label: '
|
|
313
|
+
caps.provide.use(sessionHistory, historyService, { label: t('sessionHistory') });
|
|
830
314
|
registerSessionHistoryTools(caps, historyService, cfg);
|
|
831
|
-
if (cfg.crossSessionEnabled) {
|
|
832
|
-
registerCrossSessionTools(caps, cfg);
|
|
833
|
-
}
|
|
834
315
|
},
|
|
835
316
|
});
|
|
836
317
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACzC,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC3C,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,wBAAwB,EAAE,MAAM,qBAAqB,CAAC;AACzE,OAAO,EAKL,cAAc,GACf,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAwB,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAC/D,OAAO,EAAgB,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AACpG,OAAO,EAAiB,YAAY,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAGhF,4BAA4B;AAC5B,kEAAkE;AAClE,iDAAiD;AACjD,8DAA8D;AAC9D,aAAa;AACb,MAAM,mBAAmB,GAAG,CAAC,CAAC;AAE9B,oCAAoC;AACpC,2CAA2C;AAC3C,kDAAkD;AAClD,qCAAqC;AACrC,MAAM,wBAAwB,GAAG,EAAE,GAAG,IAAI,CAAC;AAC3C,MAAM,qBAAqB,GAAG,GAAG,CAAC,CAAC,SAAS;AAW5C,SAAS,mBAAmB,CAAC,eAAuB,EAAE,QAAgB;IACpE,OAAO,GAAG,eAAe,KAAK,QAAQ,EAAE,CAAC;AAC3C,CAAC;AAED,SAAS,QAAQ,CAAC,IAAY;IAC5B,kDAAkD;IAClD,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;IACtB,IAAI,CAAC,GAAG,IAAI,CAAC;IACb,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAClC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IAC7C,CAAC;IACD,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;AACjD,CAAC;AAED,SAAS,sBAAsB,CAAC,KAAwB,EAAE,GAAW;IACnE,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,KAAK,EAAE,CAAC;QACjC,IAAI,KAAK,CAAC,SAAS,IAAI,GAAG;YAAE,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAChD,CAAC;IACD,WAAW;IACX,IAAI,KAAK,CAAC,IAAI,GAAG,qBAAqB,EAAE,CAAC;QACvC,MAAM,MAAM,GAAG,CAAC,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;QAChF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,GAAG,qBAAqB,EAAE,CAAC,EAAE,EAAE,CAAC;YAC/D,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC7B,CAAC;IACH,CAAC;AACH,CAAC;AAED,SAAS,8BAA8B,CACrC,KAAwB,EACxB,eAAuB,EACvB,GAAW;IAEX,MAAM,MAAM,GAAG,GAAG,eAAe,IAAI,CAAC;IACtC,MAAM,IAAI,GAA4B,EAAE,CAAC;IACzC,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,KAAK,EAAE,CAAC;QACjC,IAAI,KAAK,CAAC,SAAS,IAAI,GAAG;YAAE,SAAS;QACrC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC;YAAE,SAAS;QACtC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACnB,CAAC;IACD,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC;IAC3C,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,wBAAwB,CAC/B,eAAuB,EACvB,IAAY,EACZ,OAAgC,EAChC,GAAW;IAEX,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IAC3B,KAAK,CAAC,IAAI,CAAC,UAAU,eAAe,EAAE,CAAC,CAAC;IACxC,KAAK,CAAC,IAAI,CAAC,0CAA0C,CAAC,CAAC;IACvD,KAAK,CAAC,IAAI,CAAC,0DAA0D,CAAC,CAAC;IACvE,KAAK,CAAC,IAAI,CAAC,yDAAyD,CAAC,CAAC;IACtE,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvB,KAAK,CAAC,IAAI,CAAC,uBAAuB,OAAO,CAAC,MAAM,eAAe,CAAC,CAAC;QACjE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YACrD,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;YACrB,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC;YACpD,MAAM,KAAK,GAAG,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,gBAAgB,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;YACzE,KAAK,CAAC,IAAI,CACR,OAAO,MAAM,cAAc,CAAC,CAAC,eAAe,aAAa,CAAC,CAAC,MAAM,GAAG,KAAK,YAAY,CAAC,CAAC,WAAW,GAAG,CACtG,CAAC;QACJ,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;IAClC,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACrB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACjB,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,yBAAyB;AAEzB,MAAM,YAAY,GAAG,YAAY,CAAC;IAChC,OAAO,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE;IACpF,QAAQ,EAAE;QACR,IAAI,EAAE,QAAQ;QACd,KAAK,EAAE,UAAU;QACjB,OAAO,EAAE,GAAG;QACZ,WAAW,EAAE,kEAAkE;KAChF;IACD,YAAY,EAAE;QACZ,IAAI,EAAE,QAAQ;QACd,KAAK,EAAE,wBAAwB;QAC/B,OAAO,EAAE,EAAE;QACX,WAAW,EAAE,kDAAkD;KAChE;IACD,KAAK,EAAE;QACL,IAAI,EAAE,QAAQ;QACd,KAAK,EAAE,QAAQ;QACf,OAAO,EAAE,UAAU;QACnB,SAAS,EAAE,OAAO;QAClB,OAAO,EAAE;YACP,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE;YACpC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE;YACrC,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE;SAChC;KACF;IACD,sBAAsB,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,KAAK,EAAE;IAC/E,kBAAkB,EAAE;QAClB,IAAI,EAAE,QAAQ;QACd,KAAK,EAAE,UAAU;QACjB,OAAO,EAAE,CAAC;QACV,WAAW,EAAE,qDAAqD;KACnE;IACD,mBAAmB,EAAE;QACnB,IAAI,EAAE,SAAS;QACf,KAAK,EAAE,qDAAqD;QAC5D,OAAO,EAAE,IAAI;QACb,SAAS,EAAE,OAAO;QAClB,WAAW,EACT,8GAA8G;KACjH;IACD,6BAA6B,EAAE;QAC7B,IAAI,EAAE,QAAQ;QACd,KAAK,EAAE,aAAa;QACpB,OAAO,EAAE,EAAE;QACX,WAAW,EAAE,sDAAsD;KACpE;CACF,CAAC,CAAC;AAEH,MAAM,IAAI,GAAG;IACX,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC;IACtB,MAAM;IACN,KAAK;IACL,MAAM;IACN,MAAM;IACN,OAAO;IACP,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC;IACxB,QAAQ,EAAE,QAAQ,CAAC,QAAQ,CAAC;IAC5B,OAAO,EAAE,QAAQ,CAAC,OAAO,CAAC;IAC1B,8BAA8B;IAC9B,WAAW,EAAE,QAAQ,CAAC,WAAW,CAAC;CACnC,CAAC;AAaF,uDAAuD;AACvD,MAAM,mBAAmB,GAAG,IAAI,CAAC;AAEjC,2EAA2E;AAE3E;;;;;;GAMG;AACH,MAAM,UAAU,cAAc,CAAC,KAAc;IAC3C,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,KAAK,EAAE;QAAE,OAAO,IAAI,CAAC;IAC/C,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;IAC5E,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;QAC7B,IAAI,OAAO,KAAK,EAAE;YAAE,OAAO,IAAI,CAAC;QAChC,IAAI,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;YAC1B,MAAM,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;YAC1B,OAAO,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QACvC,CAAC;QACD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACnC,OAAO,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC;IAC9C,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,gBAAgB,CAC9B,IAAoE,EACpE,GAAW;IAEX,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,IAAI,IAAI,IAAI,IAAI,CAAC,KAAK,KAAK,EAAE,CAAC;IACzD,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,IAAI,IAAI,IAAI,IAAI,CAAC,KAAK,KAAK,EAAE,CAAC;IACzD,MAAM,SAAS,GAAG,IAAI,CAAC,cAAc,IAAI,IAAI,IAAI,IAAI,CAAC,cAAc,KAAK,EAAE,CAAC;IAE5E,IAAI,QAAQ,IAAI,QAAQ,EAAE,CAAC;QACzB,IAAI,MAAM,GAAG,CAAC,CAAC;QACf,IAAI,QAAQ,EAAE,CAAC;YACb,MAAM,MAAM,GAAG,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC1C,IAAI,MAAM,IAAI,IAAI,EAAE,CAAC;gBACnB,OAAO,EAAE,KAAK,EAAE,iBAAiB,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,sBAAsB,EAAE,CAAC;YAC9E,CAAC;YACD,MAAM,GAAG,MAAM,CAAC;QAClB,CAAC;QACD,IAAI,IAAI,GAAG,GAAG,CAAC;QACf,IAAI,QAAQ,EAAE,CAAC;YACb,MAAM,MAAM,GAAG,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC1C,IAAI,MAAM,IAAI,IAAI,EAAE,CAAC;gBACnB,OAAO,EAAE,KAAK,EAAE,iBAAiB,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,sBAAsB,EAAE,CAAC;YAC9E,CAAC;YACD,IAAI,GAAG,MAAM,CAAC;QAChB,CAAC;QACD,IAAI,MAAM,GAAG,IAAI;YAAE,OAAO,EAAE,KAAK,EAAE,kBAAkB,EAAE,CAAC;QACxD,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;IAC1B,CAAC;IAED,IAAI,SAAS,EAAE,CAAC;QACd,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAC5C,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,OAAO,IAAI,CAAC,EAAE,CAAC;YAC9C,OAAO,EAAE,KAAK,EAAE,wBAAwB,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,EAAE,EAAE,CAAC;QAC1E,CAAC;QACD,OAAO,EAAE,MAAM,EAAE,GAAG,GAAG,OAAO,GAAG,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC;IACvD,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,aAAa,CAAC,SAAiB;IACtC,OAAO,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;AACvC,CAAC;AAED,SAAS,oBAAoB,CAAC,OAAgB,EAAE,KAAa,EAAE,kBAA0B;IACvF,MAAM,IAAI,GACR,OAAO,OAAO,CAAC,OAAO,KAAK,QAAQ;QACjC,CAAC,CAAC,OAAO,CAAC,OAAO;QACjB,CAAC,CAAC,OAAO,CAAC,OAAO,IAAI,IAAI;YACvB,CAAC,CAAC,EAAE;YACJ,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IACxC,MAAM,OAAO,GACX,kBAAkB,GAAG,CAAC,IAAI,IAAI,CAAC,MAAM,GAAG,kBAAkB;QACxD,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,kBAAkB,CAAC,YAAY,IAAI,CAAC,MAAM,GAAG,kBAAkB,UAAU;QAC5F,CAAC,CAAC,IAAI,CAAC;IACX,OAAO;QACL,KAAK;QACL,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,OAAO;QACP,SAAS,EAAE,OAAO,CAAC,SAAS,IAAI,IAAI;QACpC,IAAI,EAAE,OAAO,CAAC,IAAI,IAAI,IAAI;QAC1B,QAAQ,EAAE,OAAO,CAAC,QAAQ,IAAI,SAAS;KACxC,CAAC;AACJ,CAAC;AAED,SAAS,qBAAqB,CAC5B,gBAAwB,EACxB,eAAuB,EACvB,eAAmC,EACnC,KAAqC,EACrC,QAAkC,EAClC,OAAwB;IAExB,cAAc;IACd,IAAI,eAAe,KAAK,gBAAgB,EAAE,CAAC;QACzC,2BAA2B;IAC7B,CAAC;SAAM,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QAC/B,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,iBAAiB,EAAE,CAAC;IAClD,CAAC;SAAM,IAAI,KAAK,KAAK,UAAU,EAAE,CAAC;QAChC,MAAM,OAAO,GAAG,eAAe,IAAI,aAAa,CAAC,gBAAgB,CAAC,CAAC;QACnE,MAAM,MAAM,GAAG,aAAa,CAAC,eAAe,CAAC,CAAC;QAC9C,IAAI,CAAC,OAAO,IAAI,CAAC,MAAM,IAAI,OAAO,KAAK,MAAM,EAAE,CAAC;YAC9C,OAAO;gBACL,EAAE,EAAE,KAAK;gBACT,MAAM,EAAE,uBAAuB,OAAO,IAAI,SAAS,QAAQ,MAAM,IAAI,SAAS,GAAG;aAClF,CAAC;QACJ,CAAC;IACH,CAAC;IACD,gCAAgC;IAEhC,2DAA2D;IAC3D,MAAM,cAAc,GAAG,aAAa,CAAC,eAAe,CAAC,CAAC;IACtD,MAAM,OAAO,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,cAAc,CAAC,CAAC;IACpE,KAAK,MAAM,OAAO,IAAI,OAAO,EAAE,CAAC;QAC9B,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,EAAE,gBAAgB,EAAE,eAAe,EAAE,OAAO,EAAE,CAAC,CAAC;QAC9E,IAAI,OAAO,EAAE,QAAQ,KAAK,MAAM,EAAE,CAAC;YACjC,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,IAAI,MAAM,cAAc,YAAY,EAAE,CAAC;QACnF,CAAC;IACH,CAAC;IACD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;AACtB,CAAC;AAED,SAAS,2BAA2B,CAAC,EAAE,MAAM,EAAE,MAAM,EAAe,EAAE,GAAiB;IACrF,MAAM,QAAQ,GAAoB,EAAE,CAAC;IAErC,OAAO;QACL,qBAAqB,CAAC,OAAsB;YAC1C,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACvB,OAAO,GAAG,EAAE;gBACV,MAAM,GAAG,GAAG,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;gBACtC,IAAI,GAAG,IAAI,CAAC;oBAAE,QAAQ,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;YACxC,CAAC,CAAC;QACJ,CAAC;QAED,KAAK,CAAC,UAAU,CAAC,OAAO,EAAE,OAAO;YAC/B,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC;YAC7B,IAAI,CAAC,KAAK;gBAAE,OAAO,EAAE,KAAK,EAAE,cAAc,EAAE,CAAC;YAE7C,MAAM,eAAe,GAAG,MAAM,CAAC,OAAO,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;YAC/D,IAAI,CAAC,eAAe;gBAAE,OAAO,EAAE,KAAK,EAAE,gBAAgB,EAAE,CAAC;YAEzD,MAAM,OAAO,GAAG,qBAAqB,CACnC,OAAO,CAAC,SAAS,EACjB,eAAe,EACf,OAAO,CAAC,QAAQ,EAChB,GAAG,CAAC,KAAK,EACT,QAAQ,EACR,OAAO,CACR,CAAC;YACF,IAAI,CAAC,OAAO,CAAC,EAAE;gBAAE,OAAO,EAAE,KAAK,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC;YAElD,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YACzG,MAAM,eAAe,GACnB,OAAO,OAAO,CAAC,eAAe,KAAK,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,GAAG,CAAC,sBAAsB,CAAC;YAEtG,sDAAsD;YACtD,6DAA6D;YAC7D,MAAM,QAAQ,GAAG,OAAO,OAAO,CAAC,OAAO,KAAK,QAAQ,IAAI,OAAO,OAAO,CAAC,OAAO,KAAK,QAAQ,CAAC;YAE5F,IAAI,CAAC;gBACH,IAAI,QAAQ,EAAE,CAAC;oBACb,MAAM,MAAM,GAAG,OAAO,OAAO,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;oBACzE,MAAM,IAAI,GAAG,OAAO,OAAO,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;oBAChF,IAAI,MAAiB,CAAC;oBACtB,kEAAkE;oBAClE,IAAI,gBAAgB,GAAG,IAAI,CAAC;oBAC5B,IAAI,KAAK,CAAC,yBAAyB,EAAE,CAAC;wBACpC,MAAM,GAAG,MAAM,KAAK,CAAC,yBAAyB,CAAC,eAAe,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;oBAChF,CAAC;yBAAM,CAAC;wBACN,wDAAwD;wBACxD,IAAI,IAAe,CAAC;wBACpB,IAAI,KAAK,CAAC,cAAc,EAAE,CAAC;4BACzB,IAAI,GAAG,MAAM,KAAK,CAAC,cAAc,CAAC,eAAe,EAAE,mBAAmB,CAAC,CAAC;wBAC1E,CAAC;6BAAM,CAAC;4BACN,IAAI,GAAG,MAAM,KAAK,CAAC,UAAU,CAAC,eAAe,EAAE,mBAAmB,CAAC,CAAC;4BACpE,gBAAgB,GAAG,KAAK,CAAC,CAAC,uBAAuB;wBACnD,CAAC;wBACD,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE;4BACvB,MAAM,EAAE,GAAG,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC;4BAC5B,OAAO,EAAE,IAAI,MAAM,IAAI,EAAE,IAAI,IAAI,CAAC;wBACpC,CAAC,CAAC,CAAC;oBACL,CAAC;oBACD,8DAA8D;oBAC9D,0CAA0C;oBAC1C,6DAA6D;oBAC7D,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;oBACtC,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;oBAChD,MAAM,MAAM,GAAyB;wBACnC,EAAE,EAAE,IAAI;wBACR,SAAS,EAAE,eAAe;wBAC1B,KAAK,EAAE,MAAM,CAAC,MAAM;wBACpB,KAAK;wBACL,eAAe,EAAE,gBAAgB;wBACjC,KAAK,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;wBACvB,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;wBACzC,QAAQ,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,CAAC,oBAAoB,CAAC,OAAO,EAAE,KAAK,GAAG,CAAC,EAAE,GAAG,CAAC,kBAAkB,CAAC,CAAC;qBAC3G,CAAC;oBACF,OAAO,MAAM,CAAC;gBAChB,CAAC;gBAED,MAAM,OAAO,GACX,eAAe,IAAI,KAAK,CAAC,cAAc;oBACrC,CAAC,CAAC,MAAM,KAAK,CAAC,cAAc,CAAC,eAAe,EAAE,KAAK,CAAC;oBACpD,CAAC,CAAC,MAAM,KAAK,CAAC,UAAU,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC;gBACrD,MAAM,MAAM,GAAyB;oBACnC,EAAE,EAAE,IAAI;oBACR,SAAS,EAAE,eAAe;oBAC1B,KAAK,EAAE,OAAO,CAAC,MAAM;oBACrB,KAAK;oBACL,eAAe,EAAE,eAAe,IAAI,CAAC,CAAC,KAAK,CAAC,cAAc;oBAC1D,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,CAAC,oBAAoB,CAAC,OAAO,EAAE,KAAK,GAAG,CAAC,EAAE,GAAG,CAAC,kBAAkB,CAAC,CAAC;iBAC5G,CAAC;gBACF,OAAO,MAAM,CAAC;YAChB,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gBACjE,MAAM,CAAC,IAAI,CAAC,yBAAyB,eAAe,MAAM,OAAO,EAAE,CAAC,CAAC;gBACrE,OAAO,EAAE,KAAK,EAAE,aAAa,OAAO,EAAE,EAAE,CAAC;YAC3C,CAAC;QACH,CAAC;KACF,CAAC;AACJ,CAAC;AAED,SAAS,2BAA2B,CAClC,EAAE,KAAK,EAAE,MAAM,EAAmB,EAClC,cAAqC,EACrC,GAAiB;IAEjB,KAAK,CAAC,aAAa,CAAC;QAClB,IAAI,EAAE,iBAAiB;QACvB,KAAK,EAAE,QAAQ;QACf,WAAW,EAAE,uCAAuC;KACrD,CAAC,CAAC;IAEH,KAAK,CAAC,QAAQ,CAAC;QACb,MAAM,EAAE,CAAC,iBAAiB,CAAC;QAC3B,UAAU,EAAE;YACV,IAAI,EAAE,UAAU;YAChB,QAAQ,EAAE;gBACR,IAAI,EAAE,qBAAqB;gBAC3B,WAAW,EAAE;oBACX,8BAA8B;oBAC9B,OAAO;oBACP,4BAA4B;oBAC5B,2DAA2D;oBAC3D,6CAA6C;oBAC7C,uCAAuC;oBACvC,6CAA6C;oBAC7C,oDAAoD;iBACrD,CAAC,IAAI,CAAC,IAAI,CAAC;gBACZ,UAAU,EAAE;oBACV,IAAI,EAAE,QAAQ;oBACd,UAAU,EAAE;wBACV,UAAU,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,gDAAgD,EAAE;wBAC7F,KAAK,EAAE;4BACL,IAAI,EAAE,QAAQ;4BACd,WAAW,EAAE,yBAAyB,GAAG,CAAC,YAAY,OAAO,GAAG,CAAC,QAAQ,EAAE;yBAC5E;wBACD,gBAAgB,EAAE;4BAChB,IAAI,EAAE,SAAS;4BACf,WAAW,EAAE,uCAAuC;yBACrD;wBACD,cAAc,EAAE;4BACd,IAAI,EAAE,QAAQ;4BACd,WAAW,EAAE,yCAAyC;yBACvD;wBACD,KAAK,EAAE;4BACL,IAAI,EAAE,QAAQ;4BACd,WAAW,EACT,uEAAuE;yBAC1E;wBACD,KAAK,EAAE;4BACL,IAAI,EAAE,QAAQ;4BACd,WAAW,EAAE,oCAAoC;yBAClD;qBACF;oBACD,QAAQ,EAAE,CAAC,YAAY,CAAC;oBACxB,oBAAoB,EAAE,KAAK;iBAC5B;aACF;SACF;QACD,yCAAyC;QACzC,IAAI,EAAE,WAAW;QACjB,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE;YAC/B,MAAM,eAAe,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;YAC7D,IAAI,CAAC,eAAe;gBAAE,OAAO,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,iBAAiB,EAAE,CAAC,CAAC;YAC1E,MAAM,KAAK,GAAG,gBAAgB,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;YACjD,IAAI,KAAK,IAAI,OAAO,IAAI,KAAK;gBAAE,OAAO,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC;YAC7E,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,UAAU,CAC5C;gBACE,SAAS,EAAE,eAAe;gBAC1B,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,SAAS;gBACtC,eAAe,EAAE,OAAO,IAAI,CAAC,gBAAgB,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,SAAS;gBAC/F,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS;gBACzC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS;aACxC,EACD,OAAO,CACR,CAAC;YACF,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QAChC,CAAC;KACF,CAAC,CAAC;IAEH,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;AAC7B,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,SAAS,uBAAuB,CAAC,KAAoB,EAAE,kBAAuC;IAC5F,KAAK,CAAC,UAAU,CAAC,oBAAoB,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE;QAC1D,MAAM,KAAK,GAAG,OAAO,IAAI,CAAC,OAAO,CAAC,cAAc,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;QAChG,IAAI,KAAK,GAAG,CAAC;YAAE,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;;YAChE,kBAAkB,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QACvD,MAAM,IAAI,EAAE,CAAC;IACf,CAAC,CAAC,CAAC;IACH,KAAK,CAAC,UAAU,CAAC,kBAAkB,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE;QACxD,MAAM,IAAI,EAAE,CAAC;QACb,kBAAkB,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC5C,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,yBAAyB,CAAC,IAAsB,EAAE,GAAiB;IAC1E,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,WAAW,EAAE,GAAG,IAAI,CAAC;IAEtF;;;;OAIG;IACH,MAAM,kBAAkB,GAAG,IAAI,GAAG,EAAkB,CAAC;IACrD,wDAAwD;IACxD,MAAM,iBAAiB,GAAsB,IAAI,GAAG,EAAE,CAAC;IAEvD,uBAAuB,CAAC,KAAK,EAAE,kBAAkB,CAAC,CAAC;IAEnD,KAAK,CAAC,aAAa,CAAC;QAClB,IAAI,EAAE,kBAAkB;QACxB,KAAK,EAAE,OAAO;QACd,WAAW,EAAE,8CAA8C;KAC5D,CAAC,CAAC;IAEH,gCAAgC;IAChC,qDAAqD;IACrD,sEAAsE;IACtE,KAAK,CAAC,QAAQ,CAAC;QACb,MAAM,EAAE,CAAC,kBAAkB,CAAC;QAC5B,UAAU,EAAE;YACV,IAAI,EAAE,UAAU;YAChB,QAAQ,EAAE;gBACR,IAAI,EAAE,qBAAqB;gBAC3B,WAAW,EAAE;oBACX,wEAAwE;oBACxE,EAAE;oBACF,QAAQ;oBACR,0EAA0E;oBAC1E,+CAA+C;oBAC/C,mCAAmC;oBACnC,iCAAiC;oBACjC,EAAE;oBACF,MAAM;oBACN,uEAAuE;oBACvE,eAAe;iBAChB,CAAC,IAAI,CAAC,IAAI,CAAC;gBACZ,UAAU,EAAE;oBACV,IAAI,EAAE,QAAQ;oBACd,UAAU,EAAE;wBACV,KAAK,EAAE;4BACL,IAAI,EAAE,QAAQ;4BACd,WAAW,EAAE,uBAAuB;yBACrC;wBACD,QAAQ,EAAE;4BACR,IAAI,EAAE,QAAQ;4BACd,WAAW,EAAE,gCAAgC;yBAC9C;wBACD,WAAW,EAAE;4BACX,IAAI,EAAE,QAAQ;4BACd,WAAW,EAAE,oCAAoC;yBAClD;qBACF;oBACD,QAAQ,EAAE,EAAE;oBACZ,oBAAoB,EAAE,KAAK;iBAC5B;aACF;SACF;QACD,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE;YAC/B,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC;YAC7B,IAAI,CAAC,KAAK,EAAE,+BAA+B,EAAE,CAAC;gBAC5C,OAAO,IAAI,CAAC,SAAS,CAAC;oBACpB,KAAK,EAAE,oDAAoD;iBAC5D,CAAC,CAAC;YACL,CAAC;YACD,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;YACnE,MAAM,UAAU,GACd,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;YAC7G,MAAM,cAAc,GAClB,OAAO,IAAI,CAAC,QAAQ,KAAK,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;YAC1G,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,UAAU,GAAG,IAAI,GAAG,IAAI,CAAC;YAEtD,sCAAsC;YACtC,MAAM,OAAO,GAAG,MAAM,KAAK,CAAC,+BAA+B,CAAC;gBAC1D,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,EAAE,EAAE,GAAG,CAAC;gBAChC,OAAO;gBACP,QAAQ,EAAE,cAAc;gBACxB,iBAAiB,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS;gBACtE,KAAK,EAAE,CAAC,MAAM,EAAE,WAAW,CAAC;aAC7B,CAAC,CAAC;YAEH,MAAM,SAAS,GAAG,IAAI,GAAG,EAAqF,CAAC;YAC/G,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;gBAC1B,MAAM,EAAE,GAAG,GAAG,CAAC,OAAO,CAAC,SAAS,IAAI,CAAC,CAAC;gBACtC,MAAM,QAAQ,GAAG,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;gBAC9C,IAAI,CAAC,QAAQ,IAAI,EAAE,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC;oBACtC,MAAM,OAAO,GAAG,OAAO,GAAG,CAAC,OAAO,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;oBACnF,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC;oBAC7E,MAAM,YAAY,GACf,GAAG,CAAC,OAAO,CAAC,QAAgD,EAAE,QAAQ,IAAI,IAAI;wBAC7E,CAAC,CAAC,MAAM,CAAE,GAAG,CAAC,OAAO,CAAC,QAAoC,CAAC,QAAQ,CAAC;wBACpE,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC;oBAC/C,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS,EAAE;wBAC3B,SAAS,EAAE,GAAG,CAAC,SAAS;wBACxB,QAAQ,EAAE,YAAY;wBACtB,MAAM,EAAE,EAAE;wBACV,OAAO;qBACR,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;YAED,MAAM,KAAK,GAAG,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC;iBAClC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC;iBACnC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC;iBACf,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;gBACT,UAAU,EAAE,CAAC,CAAC,SAAS;gBACvB,QAAQ,EAAE,CAAC,CAAC,QAAQ;gBACpB,gBAAgB,EAAE,CAAC,CAAC,MAAM;gBAC1B,OAAO,EAAE,CAAC,CAAC,OAAO;aACnB,CAAC,CAAC,CAAC;YAEN,OAAO,IAAI,CAAC,SAAS,CAAC;gBACpB,KAAK,EAAE,KAAK,CAAC,MAAM;gBACnB,WAAW,EAAE,UAAU;gBACvB,QAAQ,EAAE,KAAK;aAChB,CAAC,CAAC;QACL,CAAC;KACF,CAAC,CAAC;IAEH,gCAAgC;IAChC,oDAAoD;IACpD,iEAAiE;IACjE,KAAK,CAAC,QAAQ,CAAC;QACb,MAAM,EAAE,CAAC,kBAAkB,CAAC;QAC5B,UAAU,EAAE;YACV,IAAI,EAAE,UAAU;YAChB,QAAQ,EAAE;gBACR,IAAI,EAAE,qBAAqB;gBAC3B,WAAW,EAAE;oBACX,gEAAgE;oBAChE,iCAAiC;oBACjC,EAAE;oBACF,UAAU;oBACV,4CAA4C;oBAC5C,8DAA8D;oBAC9D,gCAAgC;oBAChC,wBAAwB;oBACxB,EAAE;oBACF,uBAAuB;oBACvB,sEAAsE;oBACtE,iEAAiE;oBACjE,wBAAwB;oBACxB,EAAE;oBACF,iBAAiB;oBACjB,2EAA2E;oBAC3E,uCAAuC;oBACvC,sCAAsC;oBACtC,EAAE;oBACF,QAAQ;oBACR,yDAAyD;oBACzD,4CAA4C;oBAC5C,yCAAyC;oBACzC,2CAA2C;oBAC3C,8CAA8C;oBAC9C,EAAE;oBACF,mBAAmB;oBACnB,wEAAwE;oBACxE,4CAA4C;oBAC5C,EAAE;oBACF,+BAA+B;oBAC/B,6EAA6E;oBAC7E,wEAAwE;oBACxE,0EAA0E;oBAC1E,2EAA2E;oBAC3E,sDAAsD;oBACtD,6BAA6B;oBAC7B,EAAE;oBACF,SAAS;oBACT,kFAAkF;oBAClF,4CAA4C;oBAC5C,sCAAsC;oBACtC,8DAA8D;oBAC9D,0BAA0B;iBAC3B,CAAC,IAAI,CAAC,IAAI,CAAC;gBACZ,UAAU,EAAE;oBACV,IAAI,EAAE,QAAQ;oBACd,UAAU,EAAE;wBACV,iBAAiB,EAAE;4BACjB,IAAI,EAAE,QAAQ;4BACd,WAAW,EAAE,gDAAgD;yBAC9D;wBACD,IAAI,EAAE;4BACJ,IAAI,EAAE,QAAQ;4BACd,WAAW,EACT,mDAAmD;gCACnD,iCAAiC;yBACpC;wBACD,eAAe,EAAE;4BACf,IAAI,EAAE,SAAS;4BACf,WAAW,EAAE,sCAAsC;yBACpD;wBACD,eAAe,EAAE;4BACf,IAAI,EAAE,QAAQ;4BACd,WAAW,EAAE,kCAAkC,GAAG,CAAC,6BAA6B,cAAc;yBAC/F;qBACF;oBACD,QAAQ,EAAE,CAAC,mBAAmB,EAAE,MAAM,CAAC;oBACvC,oBAAoB,EAAE,KAAK;iBAC5B;aACF;SACF;QACD,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE;YAC/B,MAAM,eAAe,GAAG,MAAM,CAAC,IAAI,CAAC,iBAAiB,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;YACpE,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;YACrC,MAAM,aAAa,GAAG,IAAI,CAAC,eAAe,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,eAAe,KAAK,IAAI,CAAC;YAChG,MAAM,mBAAmB,GAAG,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;YACzD,MAAM,UAAU,GACd,MAAM,CAAC,QAAQ,CAAC,mBAAmB,CAAC,IAAI,mBAAmB,GAAG,CAAC;gBAC7D,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,mBAAmB,CAAC;gBACpC,CAAC,CAAC,GAAG,CAAC,6BAA6B,CAAC;YACxC,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,UAAU,GAAG,IAAI,CAAC,CAAC;YAEpD,IAAI,CAAC,eAAe;gBAAE,OAAO,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,wBAAwB,EAAE,CAAC,CAAC;YACjF,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;gBAAE,OAAO,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC,CAAC;YAChE,IAAI,eAAe,KAAK,OAAO,CAAC,SAAS,EAAE,CAAC;gBAC1C,OAAO,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,8CAA8C,EAAE,CAAC,CAAC;YACnF,CAAC;YAED,wCAAwC;YACxC,MAAM,YAAY,GAAG,kBAAkB,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;YACpE,IAAI,YAAY,IAAI,mBAAmB,EAAE,CAAC;gBACxC,OAAO,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,kBAAkB,EAAE,CAAC,CAAC;YACvD,CAAC;YACD,MAAM,WAAW,GAAG,YAAY,GAAG,CAAC,CAAC;YAErC,6DAA6D;YAC7D,iCAAiC;YACjC,MAAM,IAAI,GAAG,WAAW,CAAC,OAAO,CAAC;YACjC,IAAI,IAAI,EAAE,OAAO,CAAC,eAAe,CAAC,EAAE,CAAC;gBACnC,OAAO,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,gBAAgB,EAAE,CAAC,CAAC;YACrD,CAAC;YACD,IAAI,IAAI,EAAE,aAAa,CAAC,eAAe,CAAC,EAAE,CAAC;gBACzC,OAAO,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,mBAAmB,EAAE,CAAC,CAAC;YACxD,CAAC;YAED,MAAM,YAAY,GAAG,CAAC,MAAM,wBAAwB,CAAC,QAAQ,EAAE,eAAe,EAAE,MAAM,CAAC,CAAC,EAAE,QAAQ,CAAC;YAEnG,mCAAmC;YACnC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YACvB,sBAAsB,CAAC,iBAAiB,EAAE,GAAG,CAAC,CAAC;YAC/C,MAAM,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;YAChC,MAAM,QAAQ,GAAG,mBAAmB,CAAC,eAAe,EAAE,QAAQ,CAAC,CAAC;YAChE,MAAM,OAAO,GAAG,8BAA8B,CAAC,iBAAiB,EAAE,eAAe,EAAE,GAAG,CAAC,CAAC;YACxF,MAAM,YAAY,GAAG,wBAAwB,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC;YACrF,MAAM,KAAK,GAA0B;gBACnC,OAAO,EAAE,GAAG;gBACZ,SAAS,EAAE,GAAG,GAAG,wBAAwB;gBACzC,eAAe,EAAE,OAAO,CAAC,SAAS;gBAClC,WAAW,EAAE,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI;gBAChE,MAAM,EAAE,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,eAAe;aACpD,CAAC;YACF,iBAAiB,CAAC,GAAG,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;YACvC,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACvB,MAAM,CAAC,IAAI,CAAC,yBAAyB,eAAe,eAAe,OAAO,CAAC,MAAM,UAAU,CAAC,CAAC;YAC/F,CAAC;YAED,MAAM,QAAQ,GAAoB;gBAChC,OAAO,EAAE,YAAY;gBACrB,SAAS,EAAE,eAAe;gBAC1B,QAAQ,EAAE,YAAY,IAAI,OAAO,CAAC,QAAQ,IAAI,UAAU;gBACxD,MAAM,EAAE,kBAAkB,OAAO,CAAC,SAAS,EAAE;gBAC7C,WAAW,EAAE,WAAW;gBACxB,gCAAgC;gBAChC,cAAc,EAAE,WAAW;aAC5B,CAAC;YACF,sEAAsE;YACtE,iDAAiD;YACjD,iDAAiD;YACjD,mDAAmD;YACnD,MAAM,aAAa,GACjB,OAAO,CAAC,KAAK;gBACb,CAAC,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;YAC5G,IAAI,aAAa;gBAAE,QAAQ,CAAC,KAAK,GAAG,aAAa,CAAC;YAElD,MAAM,WAAW,GACf,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,SAAS,IAAI,CAAC,MAAM,GAAG,EAAE,iBAAiB,CAAC,CAAC,CAAC,IAAI,CAAC;YAC3F,MAAM,CAAC,IAAI,CACT,mBAAmB,OAAO,CAAC,SAAS,OAAO,eAAe,UAAU,WAAW,SAAS,aAAa,UAAU,WAAW,GAAG,CAC9H,CAAC;YAEF,IAAI,CAAC,aAAa,EAAE,CAAC;gBACnB,MAAM,CAAC,IAAI,CAAC,iBAAiB,EAAE,QAAQ,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;oBACnD,MAAM,CAAC,IAAI,CAAC,oBAAoB,eAAe,MAAM,GAAG,EAAE,CAAC,CAAC;gBAC9D,CAAC,CAAC,CAAC;gBACH,MAAM,CAAC,IAAI,CAAC,wBAAwB,OAAO,CAAC,SAAS,+BAA+B,CAAC,CAAC;gBACtF,OAAO,IAAI,CAAC,SAAS,CAAC;oBACpB,SAAS,EAAE,IAAI;oBACf,eAAe;oBACf,IAAI,EAAE,KAAK;oBACX,KAAK,EAAE,GAAG,WAAW,IAAI,mBAAmB,EAAE;oBAC9C,OAAO,EAAE,eAAe;iBACzB,CAAC,CAAC;YACL,CAAC;YAED,2EAA2E;YAC3E,IAAI,QAAwD,CAAC;YAC7D,IAAI,WAAqC,CAAC;YAC1C,MAAM,WAAW,GAAG,IAAI,OAAO,CAAO,OAAO,CAAC,EAAE;gBAC9C,WAAW,GAAG,OAAO,CAAC;YACxB,CAAC,CAAC,CAAC;YACH,MAAM,OAAO,GAAG,KAAK,CAAC,UAAU,CAAC,kBAAkB,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE;gBACxE,MAAM,IAAI,EAAE,CAAC;gBACb,IAAI,QAAQ;oBAAE,OAAO;gBACrB,0DAA0D;gBAC1D,yDAAyD;gBACzD,IAAI,IAAI,CAAC,SAAS,KAAK,eAAe,IAAI,IAAI,CAAC,OAAO,EAAE,MAAM,KAAK,QAAQ,CAAC,MAAM;oBAAE,OAAO;gBAC3F,QAAQ,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC;gBAC9D,WAAW,EAAE,EAAE,CAAC;YAClB,CAAC,CAAC,CAAC;YAEH,MAAM,aAAa,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE,EAAE,EAAE,SAAS,CAAC,CAAC;YACnE,IAAI,CAAC;gBACH,MAAM,MAAM,CAAC,IAAI,CAAC,iBAAiB,EAAE,QAAQ,CAAC,CAAC;gBAC/C,MAAM,WAAW,CAAC;YACpB,CAAC;oBAAS,CAAC;gBACT,YAAY,CAAC,aAAa,CAAC,CAAC;gBAC5B,OAAO,EAAE,CAAC;YACZ,CAAC;YAED,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACd,MAAM,CAAC,IAAI,CACT,wBAAwB,OAAO,CAAC,SAAS,uBAAuB,UAAU,0BAA0B,CACrG,CAAC;gBACF,OAAO,IAAI,CAAC,SAAS,CAAC;oBACpB,SAAS,EAAE,IAAI;oBACf,eAAe;oBACf,IAAI,EAAE,IAAI;oBACV,QAAQ,EAAE,IAAI;oBACd,KAAK,EAAE,GAAG,WAAW,IAAI,mBAAmB,EAAE;oBAC9C,OAAO,EAAE,SAAS,UAAU,gDAAgD;iBAC7E,CAAC,CAAC;YACL,CAAC;YACD,gDAAgD;YAChD,MAAM,UAAU,GAAG,iBAAiB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YACnD,IAAI,UAAU,EAAE,CAAC;gBACf,UAAU,CAAC,MAAM,GAAG,SAAS,CAAC;gBAC9B,MAAM,CAAC,GAAG,QAAQ,CAAC,KAAK,IAAI,EAAE,CAAC;gBAC/B,UAAU,CAAC,gBAAgB;oBACzB,CAAC,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;YACvF,CAAC;YACD,MAAM,cAAc,GAClB,QAAQ,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI;gBAC1B,CAAC,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,iBAAiB,QAAQ,CAAC,KAAK,CAAC,MAAM,KAAK;gBAC7E,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC;YAErB,iDAAiD;YACjD,wCAAwC;YACxC,IAAI,YAAiD,CAAC;YACtD,IAAI,CAAC;gBACH,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,EAAE,eAAe,EAAE,CAAC,eAAe,CAAC,CAAC;gBAClE,IAAI,KAAK,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAC3C,YAAY,GAAG,KAAK,CAAC;gBACvB,CAAC;YACH,CAAC;YAAC,MAAM,CAAC;gBACP,2BAA2B;YAC7B,CAAC;YAED,MAAM,OAAO,GAA4B;gBACvC,SAAS,EAAE,IAAI;gBACf,eAAe;gBACf,IAAI,EAAE,IAAI;gBACV,QAAQ,EAAE,KAAK;gBACf,OAAO,EAAE,QAAQ,CAAC,OAAO;gBACzB,KAAK,EAAE,cAAc;gBACrB,KAAK,EAAE,GAAG,WAAW,IAAI,mBAAmB,EAAE;aAC/C,CAAC;YACF,IAAI,YAAY;gBAAE,OAAO,CAAC,YAAY,GAAG,YAAY,CAAC;YAEtD,MAAM,YAAY,GAChB,QAAQ,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC;gBACzB,CAAC,CAAC,KAAK;gBACP,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,GAAG,EAAE;oBAC1B,CAAC,CAAC,IAAI,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,UAAU,QAAQ,CAAC,KAAK,CAAC,MAAM,GAAG,EAAE,IAAI;oBAC7F,CAAC,CAAC,IAAI,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,GAAG,CAAC;YAClD,MAAM,CAAC,IAAI,CACT,wBAAwB,OAAO,CAAC,SAAS,YAAY,QAAQ,CAAC,OAAO,UAAU,YAAY,GAAG,YAAY,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,EAAE,EAAE,CACxI,CAAC;YACF,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;QACjC,CAAC;KACF,CAAC,CAAC;IAEH,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AAC5B,CAAC;AAED,mBAAmB;AAEnB,eAAe,YAAY,CAAC;IAC1B,IAAI,EAAE,4BAA4B;IAClC,WAAW,EAAE,MAAM;IACnB,SAAS,EAAE,SAAS;IACpB,YAAY;IACZ,QAAQ,EAAE,CAAC,cAAc,CAAC;IAC1B,IAAI;IACJ,KAAK,CAAC,IAAI;QACR,MAAM,MAAM,GAAG,WAAW,CAAC,YAAY,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QACnE,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,QAAQ,IAAI,YAAY,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;QAC/F,MAAM,GAAG,GAAiB;YACxB,GAAG,MAAM;YACT,QAAQ;YACR,YAAY,EAAE,IAAI,CAAC,GAAG,CACpB,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,YAAY,IAAI,YAAY,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,EACjF,QAAQ,CACT;YACD,kBAAkB,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,kBAAkB,CAAC;YAC1D,6BAA6B,EAC3B,MAAM,CAAC,6BAA6B,IAAI,YAAY,CAAC,6BAA6B,CAAC,OAAO;SAC7F,CAAC;QACF,IAAI,CAAC,GAAG,CAAC,OAAO;YAAE,OAAO;QAEzB,MAAM,cAAc,GAAG,2BAA2B,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QAC9D,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,cAAc,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;QAClE,2BAA2B,CAAC,IAAI,EAAE,cAAc,EAAE,GAAG,CAAC,CAAC;QAEvD,IAAI,GAAG,CAAC,mBAAmB,EAAE,CAAC;YAC5B,yBAAyB,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QACvC,CAAC;IACH,CAAC;CACF,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
declare const _default: {
|
|
2
|
+
readonly displayName: "Session tools";
|
|
3
|
+
readonly sessionHistory: "Session history reading";
|
|
4
|
+
readonly groupSummary: "Read recent session history by Aalis sessionId to verify cross-session context";
|
|
5
|
+
readonly enabledLabel: "Enable the session history reading tool";
|
|
6
|
+
readonly maxLimitLabel: "Max messages per read";
|
|
7
|
+
readonly maxLimitDescription: "Hard upper limit of what session_get_history can return at once; a limit above it passed by the LLM is capped. 50 to 200 is recommended.";
|
|
8
|
+
readonly defaultLimitLabel: "Default messages per read (when the LLM passes no limit)";
|
|
9
|
+
readonly defaultLimitDescription: "Cannot exceed maxLimit. Raising it lets the agent passively get more context, at the cost of token budget.";
|
|
10
|
+
readonly includeArchivedDefaultLabel: "Include archived messages by default";
|
|
11
|
+
readonly perMessageMaxCharsLabel: "Per-message truncation length";
|
|
12
|
+
readonly perMessageMaxCharsDescription: "Character limit of each history message returned to the LLM; 0 = no truncation (recommended). Anything beyond it is cut off with a note of how many characters were not shown.";
|
|
13
|
+
};
|
|
14
|
+
export default _default;
|
|
15
|
+
//# sourceMappingURL=en.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"en.d.ts","sourceRoot":"","sources":["../../src/locales/en.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAGA,wBAeG"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { defineLocale } from '@aalis/schema-i18n';
|
|
2
|
+
export default defineLocale()({
|
|
3
|
+
displayName: 'Session tools',
|
|
4
|
+
sessionHistory: 'Session history reading',
|
|
5
|
+
groupSummary: 'Read recent session history by Aalis sessionId to verify cross-session context',
|
|
6
|
+
enabledLabel: 'Enable the session history reading tool',
|
|
7
|
+
maxLimitLabel: 'Max messages per read',
|
|
8
|
+
maxLimitDescription: 'Hard upper limit of what session_get_history can return at once; a limit above it passed by the LLM is capped. 50 to 200 is recommended.',
|
|
9
|
+
defaultLimitLabel: 'Default messages per read (when the LLM passes no limit)',
|
|
10
|
+
defaultLimitDescription: 'Cannot exceed maxLimit. Raising it lets the agent passively get more context, at the cost of token budget.',
|
|
11
|
+
includeArchivedDefaultLabel: 'Include archived messages by default',
|
|
12
|
+
perMessageMaxCharsLabel: 'Per-message truncation length',
|
|
13
|
+
perMessageMaxCharsDescription: 'Character limit of each history message returned to the LLM; 0 = no truncation (recommended). Anything beyond it is cut off with a note of how many characters were not shown.',
|
|
14
|
+
});
|
|
15
|
+
//# sourceMappingURL=en.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"en.js","sourceRoot":"","sources":["../../src/locales/en.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAGlD,eAAe,YAAY,EAAU,CAAC;IACpC,WAAW,EAAE,eAAe;IAC5B,cAAc,EAAE,yBAAyB;IACzC,YAAY,EAAE,gFAAgF;IAC9F,YAAY,EAAE,yCAAyC;IACvD,aAAa,EAAE,uBAAuB;IACtC,mBAAmB,EACjB,0IAA0I;IAC5I,iBAAiB,EAAE,0DAA0D;IAC7E,uBAAuB,EACrB,4GAA4G;IAC9G,2BAA2B,EAAE,sCAAsC;IACnE,uBAAuB,EAAE,+BAA+B;IACxD,6BAA6B,EAC3B,gLAAgL;CACnL,CAAC,CAAC"}
|
package/dist/texts.d.ts
ADDED
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
declare const SOURCE: {
|
|
2
|
+
readonly displayName: "会话工具";
|
|
3
|
+
readonly sessionHistory: "会话历史读取";
|
|
4
|
+
readonly groupSummary: "按 Aalis sessionId 读取近期会话历史,用于核实跨会话上下文";
|
|
5
|
+
readonly enabledLabel: "启用会话历史读取工具";
|
|
6
|
+
readonly maxLimitLabel: "单次最多读取条数";
|
|
7
|
+
readonly maxLimitDescription: "session_get_history 一次能返回的硬上限;LLM 传入 limit 超过此值会被 cap。建议 50~200。";
|
|
8
|
+
readonly defaultLimitLabel: "默认读取条数(LLM 不传 limit 时)";
|
|
9
|
+
readonly defaultLimitDescription: "不能超过 maxLimit。调高可让 agent 被动获取更多上下文,代价是 token 预算。";
|
|
10
|
+
readonly includeArchivedDefaultLabel: "默认包含已归档消息";
|
|
11
|
+
readonly perMessageMaxCharsLabel: "每条消息截断字数";
|
|
12
|
+
readonly perMessageMaxCharsDescription: "返给 LLM 的每条历史消息的字符上限;0 = 不截断(推荐)。超出会以「剩余 N 字符未展示」明示。";
|
|
13
|
+
};
|
|
14
|
+
export type Source = typeof SOURCE;
|
|
15
|
+
export declare const t: import("@aalis/schema-i18n").TextFactory<{
|
|
16
|
+
readonly displayName: "会话工具";
|
|
17
|
+
readonly sessionHistory: "会话历史读取";
|
|
18
|
+
readonly groupSummary: "按 Aalis sessionId 读取近期会话历史,用于核实跨会话上下文";
|
|
19
|
+
readonly enabledLabel: "启用会话历史读取工具";
|
|
20
|
+
readonly maxLimitLabel: "单次最多读取条数";
|
|
21
|
+
readonly maxLimitDescription: "session_get_history 一次能返回的硬上限;LLM 传入 limit 超过此值会被 cap。建议 50~200。";
|
|
22
|
+
readonly defaultLimitLabel: "默认读取条数(LLM 不传 limit 时)";
|
|
23
|
+
readonly defaultLimitDescription: "不能超过 maxLimit。调高可让 agent 被动获取更多上下文,代价是 token 预算。";
|
|
24
|
+
readonly includeArchivedDefaultLabel: "默认包含已归档消息";
|
|
25
|
+
readonly perMessageMaxCharsLabel: "每条消息截断字数";
|
|
26
|
+
readonly perMessageMaxCharsDescription: "返给 LLM 的每条历史消息的字符上限;0 = 不截断(推荐)。超出会以「剩余 N 字符未展示」明示。";
|
|
27
|
+
}>;
|
|
28
|
+
export {};
|
|
29
|
+
//# sourceMappingURL=texts.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"texts.d.ts","sourceRoot":"","sources":["../src/texts.ts"],"names":[],"mappings":"AAIA,QAAA,MAAM,MAAM;;;;;;;;;;;;CAaF,CAAC;AACX,MAAM,MAAM,MAAM,GAAG,OAAO,MAAM,CAAC;AAEnC,eAAO,MAAM,CAAC;;;;;;;;;;;;EAKZ,CAAC"}
|
package/dist/texts.js
ADDED
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
// 本插件自己的原文字典:显示名、配置项,会话历史读取服务的显示名(同为工具分组名)与分组概述
|
|
2
|
+
import { defineTexts } from '@aalis/schema-i18n';
|
|
3
|
+
import en from './locales/en.js';
|
|
4
|
+
const SOURCE = {
|
|
5
|
+
displayName: '会话工具',
|
|
6
|
+
sessionHistory: '会话历史读取',
|
|
7
|
+
groupSummary: '按 Aalis sessionId 读取近期会话历史,用于核实跨会话上下文',
|
|
8
|
+
enabledLabel: '启用会话历史读取工具',
|
|
9
|
+
maxLimitLabel: '单次最多读取条数',
|
|
10
|
+
maxLimitDescription: 'session_get_history 一次能返回的硬上限;LLM 传入 limit 超过此值会被 cap。建议 50~200。',
|
|
11
|
+
defaultLimitLabel: '默认读取条数(LLM 不传 limit 时)',
|
|
12
|
+
defaultLimitDescription: '不能超过 maxLimit。调高可让 agent 被动获取更多上下文,代价是 token 预算。',
|
|
13
|
+
includeArchivedDefaultLabel: '默认包含已归档消息',
|
|
14
|
+
perMessageMaxCharsLabel: '每条消息截断字数',
|
|
15
|
+
perMessageMaxCharsDescription: '返给 LLM 的每条历史消息的字符上限;0 = 不截断(推荐)。超出会以「剩余 N 字符未展示」明示。',
|
|
16
|
+
};
|
|
17
|
+
export const t = defineTexts({
|
|
18
|
+
ns: '@aalis/plugin-tool-session',
|
|
19
|
+
language: 'zh-CN',
|
|
20
|
+
source: SOURCE,
|
|
21
|
+
locales: { en },
|
|
22
|
+
});
|
|
23
|
+
//# sourceMappingURL=texts.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"texts.js","sourceRoot":"","sources":["../src/texts.ts"],"names":[],"mappings":"AAAA,gDAAgD;AAChD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAEjC,MAAM,MAAM,GAAG;IACb,WAAW,EAAE,MAAM;IACnB,cAAc,EAAE,QAAQ;IACxB,YAAY,EAAE,uCAAuC;IACrD,YAAY,EAAE,YAAY;IAC1B,aAAa,EAAE,UAAU;IACzB,mBAAmB,EAAE,kEAAkE;IACvF,iBAAiB,EAAE,wBAAwB;IAC3C,uBAAuB,EAAE,kDAAkD;IAC3E,2BAA2B,EAAE,WAAW;IACxC,uBAAuB,EAAE,UAAU;IACnC,6BAA6B,EAC3B,qDAAqD;CAC/C,CAAC;AAGX,MAAM,CAAC,MAAM,CAAC,GAAG,WAAW,CAAC;IAC3B,EAAE,EAAE,4BAA4B;IAChC,QAAQ,EAAE,OAAO;IACjB,MAAM,EAAE,MAAM;IACd,OAAO,EAAE,EAAE,EAAE,EAAE;CAChB,CAAC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aalis/plugin-tool-session",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.16.0",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
"url": "https://github.com/AalisLabs/Aalis/issues"
|
|
13
13
|
},
|
|
14
14
|
"homepage": "https://github.com/AalisLabs/Aalis#readme",
|
|
15
|
-
"description": "
|
|
15
|
+
"description": "会话工具:按 sessionId 读取会话历史,提供 session_get_history 工具与 session-history 服务",
|
|
16
16
|
"type": "module",
|
|
17
17
|
"keywords": [
|
|
18
18
|
"aalis",
|
|
@@ -24,41 +24,34 @@
|
|
|
24
24
|
"dist"
|
|
25
25
|
],
|
|
26
26
|
"dependencies": {
|
|
27
|
-
"@aalis/schema-config": ">=0.
|
|
28
|
-
"@aalis/api-
|
|
29
|
-
"@aalis/api-
|
|
30
|
-
"@aalis/api-
|
|
31
|
-
"@aalis/api-
|
|
32
|
-
"@aalis/
|
|
33
|
-
"@aalis/
|
|
34
|
-
"@aalis/api-hooks": ">=0.1.0 <1.0.0"
|
|
27
|
+
"@aalis/schema-config": ">=0.16.0 <1.0.0",
|
|
28
|
+
"@aalis/api-memory": ">=0.9.0 <1.0.0",
|
|
29
|
+
"@aalis/api-session-history": ">=0.3.0 <1.0.0",
|
|
30
|
+
"@aalis/api-session-manager": ">=0.12.0 <1.0.0",
|
|
31
|
+
"@aalis/api-tools": ">=0.12.0 <1.0.0",
|
|
32
|
+
"@aalis/schema-message": ">=0.11.0 <1.0.0",
|
|
33
|
+
"@aalis/schema-i18n": ">=0.1.0 <1.0.0"
|
|
35
34
|
},
|
|
36
35
|
"devDependencies": {
|
|
37
36
|
"@types/node": "^22.0.0",
|
|
38
37
|
"typescript": "^5.7.0",
|
|
39
|
-
"@aalis/core": "0.
|
|
40
|
-
"@aalis/schema-message": "0.9.1",
|
|
41
|
-
"@aalis/api-agent": "0.9.1"
|
|
38
|
+
"@aalis/core": "0.21.0"
|
|
42
39
|
},
|
|
43
40
|
"peerDependencies": {
|
|
44
|
-
"@aalis/core": ">=0.
|
|
41
|
+
"@aalis/core": ">=0.21.0 <1.0.0"
|
|
45
42
|
},
|
|
46
43
|
"aalis": {
|
|
47
44
|
"service": {
|
|
48
45
|
"optional": [
|
|
49
46
|
"tools",
|
|
50
47
|
"memory",
|
|
51
|
-
"
|
|
52
|
-
"persona",
|
|
53
|
-
"flow-control"
|
|
48
|
+
"session-manager"
|
|
54
49
|
],
|
|
55
50
|
"provides": [
|
|
56
51
|
"session-history"
|
|
57
52
|
],
|
|
58
53
|
"required": [
|
|
59
54
|
"config",
|
|
60
|
-
"events",
|
|
61
|
-
"hooks",
|
|
62
55
|
"logger",
|
|
63
56
|
"provide"
|
|
64
57
|
]
|