@aalis/plugin-session-manager 0.11.0 → 0.13.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/index.d.ts CHANGED
@@ -1,21 +1,33 @@
1
- import type { SessionConfig } from '@aalis/api-session-manager';
2
- import type { Context, PluginModule } from '@aalis/core';
3
- import type { ConfigSchema } from '@aalis/schema-config';
4
- export type { PlatformProfile, SessionConfig, SessionInfo, SessionManagerService, SessionTreeNode, } from '@aalis/api-session-manager';
5
- export declare const name = "@aalis/plugin-session-manager";
6
- export declare const displayName = "\u4F1A\u8BDD\u7BA1\u7406";
7
- export declare const subsystem = "session";
8
- export declare const inject: {
9
- required: readonly ["memory"];
10
- optional: readonly ["agent", "platform", "persona", "llm"];
11
- };
12
- export declare const provides: string[];
13
- export declare const configSchema: ConfigSchema;
1
+ import { type MemoryService } from '@aalis/api-memory';
2
+ import { type SessionConfig } from '@aalis/api-session-manager';
14
3
  /**
15
4
  * WebUI 传来的会话配置补丁:JSON 带不了 undefined,前端用 null 表示「删除该键、恢复继承」。
16
5
  * updateSession 是合并语义,键置为 undefined 即从生效配置里消失(resolveConfig 会 strip)。
17
6
  */
18
7
  export declare function normalizeSessionConfigPatch(patch: unknown): Partial<SessionConfig>;
19
- export declare const actions: PluginModule['actions'];
20
- export declare function apply(ctx: Context, config: Record<string, unknown>): Promise<void>;
8
+ declare const _default: import("@aalis/core").PluginDefinition<{
9
+ /** 会话档案与消息历史的唯一落点:没有 memory 就没有会话管理 */
10
+ memory: import("@aalis/core").ServiceDescriptor<MemoryService, import("@aalis/core").ServiceRef<MemoryService>>;
11
+ /**
12
+ * 本插件不调用 agent 的方法;声明它是为了 agent:* 钩子的键类型。
13
+ * 第一方栈由 core 关停编排(optional 环成员先全部 drain)与 `agent:turn:after` 收口;
14
+ * 此处 onDrain 兜的是未装 agent 或钩子未挂上的路径。
15
+ */
16
+ agent: import("@aalis/core").OptionalUse<import("@aalis/api-agent").AgentService, import("@aalis/api-agent").BoundAgent>;
17
+ /** 自动标题的模型来源;没有 LLM 时退回用户消息首段 */
18
+ llm: import("@aalis/core").OptionalUse<import("@aalis/api-llm").LLMModel, import("@aalis/core").ServiceRef<import("@aalis/api-llm").LLMModel>>;
19
+ /** 下列三项只供 WebUI 下拉框枚举选项,缺席即空列表 */
20
+ persona: import("@aalis/core").OptionalUse<import("@aalis/api-persona").PersonaService, import("@aalis/core").ServiceRef<import("@aalis/api-persona").PersonaService>>;
21
+ platform: import("@aalis/core").OptionalUse<import("@aalis/api-platform").PlatformAdapter, import("@aalis/core").ServiceRef<import("@aalis/api-platform").PlatformAdapter>>;
22
+ tools: import("@aalis/core").OptionalUse<import("@aalis/api-tools").ToolService, import("@aalis/api-tools").BoundTools>;
23
+ /** 页面与页面动作的登记口;无 WebUI 时会话管理照常在后台运行 */
24
+ webui: import("@aalis/core").OptionalUse<import("@aalis/api-webui").WebUIService, import("@aalis/api-webui").BoundWebui>;
25
+ events: import("@aalis/core").ServiceDescriptor<(identity: symbol) => import("@aalis/core").Events, import("@aalis/core").Events>;
26
+ hooks: import("@aalis/core").ServiceDescriptor<import("@aalis/api-hooks").HookRegistry, import("@aalis/api-hooks").Hooks>;
27
+ lifecycle: import("@aalis/core").ServiceDescriptor<(identity: symbol) => import("@aalis/core").LifecycleCap, import("@aalis/core").LifecycleCap>;
28
+ logger: import("@aalis/core").ServiceDescriptor<(identity: symbol) => import("@aalis/core").Logger, import("@aalis/core").Logger>;
29
+ config: import("@aalis/core").ServiceDescriptor<(identity: symbol) => Readonly<Record<string, unknown>>, Readonly<Record<string, unknown>>>;
30
+ provide: import("@aalis/core").ServiceDescriptor<(identity: symbol) => import("@aalis/core").Provide, import("@aalis/core").Provide>;
31
+ }>;
32
+ export default _default;
21
33
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAEV,aAAa,EAId,MAAM,4BAA4B,CAAC;AAIpC,OAAO,KAAK,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AACzD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAGzD,YAAY,EACV,eAAe,EACf,aAAa,EACb,WAAW,EACX,qBAAqB,EACrB,eAAe,GAChB,MAAM,4BAA4B,CAAC;AAIpC,eAAO,MAAM,IAAI,kCAAkC,CAAC;AACpD,eAAO,MAAM,WAAW,6BAAS,CAAC;AAClC,eAAO,MAAM,SAAS,YAAY,CAAC;AACnC,eAAO,MAAM,MAAM;;;CAGlB,CAAC;AACF,eAAO,MAAM,QAAQ,UAAsB,CAAC;AAE5C,eAAO,MAAM,YAAY,EAAE,YAsE1B,CAAC;AAeF;;;GAGG;AACH,wBAAgB,2BAA2B,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,aAAa,CAAC,CAKlF;AAcD,eAAO,MAAM,OAAO,EAAE,YAAY,CAAC,SAAS,CA8N3C,CAAC;AA0lBF,wBAAsB,KAAK,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CA+FxF"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,aAAa,EAA2B,MAAM,mBAAmB,CAAC;AAGhF,OAAO,EAEL,KAAK,aAAa,EAKnB,MAAM,4BAA4B,CAAC;AAqFpC;;;GAGG;AACH,wBAAgB,2BAA2B,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,aAAa,CAAC,CAKlF;;IA20BC,uCAAuC;;IAEvC;;;;OAIG;;IAEH,iCAAiC;;IAEjC,kCAAkC;;;;IAIlC,uCAAuC;;;;;;;;;AAWzC,wBAQG"}
package/dist/index.js CHANGED
@@ -1,15 +1,14 @@
1
- import { listLLMModels, resolveLLMModel } from '@aalis/api-llm';
2
- import { useWebuiService } from '@aalis/api-webui';
3
- // ===== 插件元数据 =====
4
- export const name = '@aalis/plugin-session-manager';
5
- export const displayName = '会话管理';
6
- export const subsystem = 'session';
7
- export const inject = {
8
- required: ['memory'],
9
- optional: ['agent', 'platform', 'persona', 'llm'],
10
- };
11
- export const provides = ['session-manager'];
12
- export const configSchema = {
1
+ import { agent } from '@aalis/api-agent';
2
+ import { hooks } from '@aalis/api-hooks';
3
+ import { listLLMModels, llm, resolveLLMModel } from '@aalis/api-llm';
4
+ import { memory } from '@aalis/api-memory';
5
+ import { persona } from '@aalis/api-persona';
6
+ import { getPlatformNames, platform } from '@aalis/api-platform';
7
+ import { sessionManager, } from '@aalis/api-session-manager';
8
+ import { tools } from '@aalis/api-tools';
9
+ import { webuiServer } from '@aalis/api-webui';
10
+ import { config, definePlugin, events, lifecycle, logger, optional, provide } from '@aalis/core';
11
+ const configSchema = {
13
12
  defaults: {
14
13
  label: '全局默认配置',
15
14
  description: '所有平台共享的最低层默认配置(platform profile 之下的 fallback)。LLM 默认模型由各 agent 插件通过 ServicePreference 锁定,不再在此配置;本节仅保留 persona 等通用默认。',
@@ -100,249 +99,11 @@ const webuiPages = [
100
99
  renderer: 'sessions',
101
100
  },
102
101
  ];
103
- // ===== Actions =====
104
- export const actions = {
105
- async listSessions(ctx) {
106
- const sm = ctx.getService('session-manager');
107
- if (!sm)
108
- return [];
109
- const sessions = sm.listSessions();
110
- return sessions.map(s => ({
111
- ...s,
112
- displayTitle: s.title || s.name,
113
- configSummary: formatConfigSummary(s.config),
114
- childCount: s.children.length,
115
- }));
116
- },
117
- async createSession(ctx, args) {
118
- const sm = ctx.getService('session-manager');
119
- if (!sm)
120
- throw new Error('session-manager 服务不可用');
121
- const parentId = args.parentId || undefined;
122
- // 新建会话时复制当前生效配置,而非留空继承
123
- let config = args.config || {};
124
- if (Object.keys(config).length === 0) {
125
- if (parentId) {
126
- // 子会话:复制父会话的 resolved config
127
- config = { ...sm.resolveConfig(parentId, 'webui') };
128
- }
129
- else {
130
- // 根会话:复制 webui 平台 profile 作为初始配置
131
- const profiles = sm.getPlatformProfiles();
132
- if (profiles.webui)
133
- config = { ...profiles.webui };
134
- }
135
- }
136
- const session = await sm.createSession({
137
- name: args.name ||
138
- `会话 ${new Date().toLocaleString('zh-CN', { month: '2-digit', day: '2-digit', hour: '2-digit', minute: '2-digit' })}`,
139
- parentId,
140
- config,
141
- createdBy: 'user',
142
- // 新建的空会话尚未发生任何对话,初始为 'waiting'(等待中)而非 'active'(进行中)。
143
- // 否则侧栏新建的会话会一直显示"进行中"——直到首条消息触发 inbound→active→turn:after→completed。
144
- status: 'waiting',
145
- });
146
- return session;
147
- },
148
- async deleteSession(ctx, args) {
149
- const sm = ctx.getService('session-manager');
150
- if (!sm)
151
- throw new Error('session-manager 服务不可用');
152
- const id = args.id;
153
- if (!id)
154
- throw new Error('缺少会话 ID');
155
- await sm.deleteSession(id);
156
- return { success: true };
157
- },
158
- async updateSessionConfig(ctx, args) {
159
- const sm = ctx.getService('session-manager');
160
- if (!sm)
161
- throw new Error('session-manager 服务不可用');
162
- const id = args.id;
163
- if (!id)
164
- throw new Error('缺少会话 ID');
165
- const session = await sm.updateSession(id, { config: normalizeSessionConfigPatch(args.config) });
166
- return session;
167
- },
168
- async getSessionHistory(ctx, args) {
169
- const memory = ctx.getService('memory');
170
- if (!memory)
171
- throw new Error('memory 服务不可用');
172
- const sessionId = args.sessionId;
173
- if (!sessionId)
174
- throw new Error('缺少 sessionId');
175
- const limit = args.limit || 100;
176
- const history = await memory.getHistory(sessionId, limit);
177
- return { sessionId, messages: history };
178
- },
179
- /** 批量归档会话 */
180
- async batchArchive(ctx, args) {
181
- const sm = ctx.getService('session-manager');
182
- if (!sm)
183
- throw new Error('session-manager 服务不可用');
184
- const ids = args.ids;
185
- if (!Array.isArray(ids) || ids.length === 0)
186
- throw new Error('缺少会话 ID 列表');
187
- let count = 0;
188
- for (const id of ids) {
189
- try {
190
- await sm.updateSession(id, { status: 'archived' });
191
- count++;
192
- }
193
- catch {
194
- /* skip */
195
- }
196
- }
197
- return { success: true, count };
198
- },
199
- /** 批量删除会话 */
200
- async batchDelete(ctx, args) {
201
- const sm = ctx.getService('session-manager');
202
- if (!sm)
203
- throw new Error('session-manager 服务不可用');
204
- const ids = args.ids;
205
- if (!Array.isArray(ids) || ids.length === 0)
206
- throw new Error('缺少会话 ID 列表');
207
- let count = 0;
208
- for (const id of ids) {
209
- try {
210
- await sm.deleteSession(id);
211
- count++;
212
- }
213
- catch {
214
- /* skip */
215
- }
216
- }
217
- return { success: true, count };
218
- },
219
- async getSessionTree(ctx) {
220
- const sm = ctx.getService('session-manager');
221
- if (!sm)
222
- return [];
223
- return sm.getTree();
224
- },
225
- /** 获取可选项列表(供前端下拉框使用) */
226
- async getConfigOptions(ctx) {
227
- // 可用人设列表
228
- const persona = ctx.getService('persona');
229
- const personas = persona?.listModels ? await persona.listModels() : [];
230
- // 可用 LLM 模型列表(枚举所有 chat-capable entry)
231
- let models = [];
232
- try {
233
- const entries = listLLMModels(ctx, { caps: ['chat'] });
234
- models = entries.map(e => ({
235
- id: e.instance.id,
236
- capabilities: [...e.instance.capabilities],
237
- provider: e.instance.providerId,
238
- contextId: e.contextId,
239
- }));
240
- }
241
- catch {
242
- /* llm 服务不可用 */
243
- }
244
- // 工具分组列表
245
- let toolGroups = [];
246
- try {
247
- const tools = ctx.getService('tools');
248
- if (tools)
249
- toolGroups = tools.getGroups().map(g => ({ name: g.name, label: g.label }));
250
- }
251
- catch {
252
- /* tools 服务不可用 */
253
- }
254
- // 已注册平台列表
255
- const platforms = [];
256
- try {
257
- const allPlatforms = ctx.getAllServices('platform');
258
- for (const p of allPlatforms) {
259
- if (p.instance.platform && !platforms.includes(p.instance.platform)) {
260
- platforms.push(p.instance.platform);
261
- }
262
- }
263
- }
264
- catch {
265
- /* platform 服务不可用 */
266
- }
267
- // 平台 profiles
268
- const sm = ctx.getService('session-manager');
269
- const profiles = sm?.getPlatformProfiles() ?? {};
270
- return { personas, models, toolGroups, platforms, profiles };
271
- },
272
- /** 获取指定会话的最终生效配置(合并所有层级后的结果) */
273
- async getResolvedConfig(ctx, args) {
274
- const sm = ctx.getService('session-manager');
275
- if (!sm)
276
- throw new Error('session-manager 服务不可用');
277
- const sessionId = args.sessionId;
278
- if (!sessionId)
279
- throw new Error('缺少 sessionId');
280
- const platform = args.platform;
281
- return sm.resolveConfig(sessionId, platform);
282
- },
283
- /**
284
- * 获取「继承默认」——不含 session 自身 config,只算 platform profile + 父 sessionDefaults。
285
- * WebUI 「继承 (xxx)」提示用这个,避免显示用户自己的覆盖值。
286
- */
287
- async getInheritedDefaults(ctx, args) {
288
- const sm = ctx.getService('session-manager');
289
- if (!sm)
290
- throw new Error('session-manager 服务不可用');
291
- const sessionId = args.sessionId;
292
- if (!sessionId)
293
- throw new Error('缺少 sessionId');
294
- const platform = args.platform;
295
- return sm.resolveInheritedDefaults(sessionId, platform);
296
- },
297
- /** 获取会话详情(含完整消息历史,包括已归档消息) */
298
- async getSessionDetail(ctx, args) {
299
- const sm = ctx.getService('session-manager');
300
- const memory = ctx.getService('memory');
301
- if (!sm || !memory)
302
- throw new Error('服务不可用');
303
- const id = args.id;
304
- if (!id)
305
- throw new Error('缺少会话 ID');
306
- const session = sm.getSession(id);
307
- if (!session)
308
- throw new Error(`会话不存在: ${id}`);
309
- const limit = args.limit || 200;
310
- // 优先使用 getFullHistory(含已归档消息),确保 UI 能看到完整对话
311
- const messages = memory.getFullHistory
312
- ? await memory.getFullHistory(id, limit)
313
- : await memory.getHistory(id, limit);
314
- return { session, messages };
315
- },
316
- /** 手动重命名会话标题 */
317
- async renameSession(ctx, args) {
318
- const sm = ctx.getService('session-manager');
319
- if (!sm)
320
- throw new Error('session-manager 服务不可用');
321
- const id = args.id;
322
- const title = args.title;
323
- if (!id || !title)
324
- throw new Error('缺少 id 或 title');
325
- await sm.updateSessionTitle(id, title);
326
- return { success: true };
327
- },
328
- /** 归档子会话(父已不再需要) */
329
- async archiveSession(ctx, args) {
330
- const sm = ctx.getService('session-manager');
331
- if (!sm)
332
- throw new Error('session-manager 服务不可用');
333
- const id = args.id;
334
- if (!id)
335
- throw new Error('缺少会话 ID');
336
- await archiveRecursively(sm, id);
337
- return { success: true };
338
- },
339
- };
340
102
  // ===== 辅助函数 =====
341
103
  /**
342
104
  * 递归归档:先归档所有子会话再归档自己。
343
105
  *
344
- * 不能写成 action 里的 `this.archiveSession(...)` —— webui-server 是把函数从 actions 对象里
345
- * 取出来单独调用的(this === undefined),一旦有子会话就抛 TypeError 且父会话也没归档。
106
+ * 写成自由函数而非方法:页面动作是被单独取出调用的(没有 receiver),递归不能依赖 this。
346
107
  */
347
108
  async function archiveRecursively(sm, id) {
348
109
  const session = sm.getSession(id);
@@ -366,45 +127,82 @@ function formatConfigSummary(config) {
366
127
  parts.push(`persona:${config.persona}`);
367
128
  return parts.join(', ') || '(默认)';
368
129
  }
369
- // ===== SessionManager 实现 =====
370
130
  class SessionManager {
371
131
  sessions = new Map();
372
- ctx;
132
+ caps;
373
133
  persistTimer = null;
374
134
  dirty = false;
135
+ /**
136
+ * 本进程显式删除、尚未落盘的会话(墓碑)。persist 写全量快照,但只删这些键,不按「后端有、内存无」清扫:
137
+ * 后端里还可能有本进程没读到的会话,按差集清扫会把它们当孤儿删掉。每条墓碑带令牌,提交成功后只清掉
138
+ * 提交时那一版,提交期间再删的保留到下一次。换后端时墓碑随旧表一起作废。
139
+ */
140
+ deleted = new Map();
141
+ /**
142
+ * 会话表所在的 memory 实例:跟随 memory 胜者。换人时先把旧表的未落盘变更写回旧实例,再从新实例读表整体替换
143
+ * (换后端即换库,不跨后端合并)。新表加载完成前仍指向旧实例,落盘不会把旧表写进新后端;加载窗口里的改动
144
+ * 在换表时写回旧实例。读表失败时为 undefined:空表不能当作权威,否则落盘会用新建的空白记录覆盖后端原记录。
145
+ */
146
+ store;
147
+ /** 最近一次挂接的加载;apply 等它完成再对外提供服务 */
148
+ loading = Promise.resolve();
375
149
  /** 平台 → 默认 SessionConfig 模板 */
376
150
  platformProfiles = new Map();
377
151
  /** 全局默认配置(platform profile 之下的最低层 fallback) */
378
152
  defaults = {};
379
- constructor(ctx) {
380
- this.ctx = ctx;
153
+ constructor(caps) {
154
+ this.caps = caps;
381
155
  }
382
156
  /**
383
- * memory provider 每次惰性查询:ServiceRegistry.get 返回的是裸 entry.instance,
384
- * 缓存到 field 在 provider 重载后会失效。每次调用走 getService 让 provider 切换
385
- * 后自然跟随,无需级联 bounce 本插件。
157
+ * 消息历史类操作(清空、读历史)用当前胜者:新消息写在当前胜者里。每次惰性查询,provider 切换后自然跟随。
158
+ * 会话表另经 {@link store} 跟随,见 {@link attach}。
386
159
  */
387
160
  get memory() {
388
- const m = this.ctx.getService('memory');
161
+ const m = this.caps.memory.current;
389
162
  if (!m)
390
163
  throw new Error('session-manager 需要 memory 服务');
391
164
  return m;
392
165
  }
393
- /** 从 memory 元数据加载持久化会话列表 */
394
- async load() {
166
+ /**
167
+ * memory 胜者的 follow 挂接:从这个实例读会话表并整体替换内存里的这份。
168
+ * 返回的清理在换人或关闭时执行:等本次加载落定,再把未落盘的变更写回这个实例。
169
+ */
170
+ attach(instance) {
171
+ this.loading = this.load(instance);
172
+ return async () => {
173
+ await this.loading;
174
+ if (this.persistTimer) {
175
+ clearTimeout(this.persistTimer);
176
+ this.persistTimer = null;
177
+ }
178
+ await this.persist().catch(err => this.caps.logger.warn('换后端前落盘会话失败:', err));
179
+ };
180
+ }
181
+ /** 从 memory 元数据加载持久化会话列表,加载完成后以它为会话表与落盘目标;读表失败时会话表为空且不落盘 */
182
+ async load(instance) {
183
+ let sessions = new Map();
395
184
  try {
396
- const entries = await this.memory.listMetadata(METADATA_NAMESPACE);
397
- for (const { key, data } of entries) {
185
+ for (const { key, data } of await instance.listMetadata(METADATA_NAMESPACE)) {
398
186
  const info = data;
399
- if (info && info.id === key) {
400
- this.sessions.set(key, info);
401
- }
187
+ if (info && info.id === key)
188
+ sessions.set(key, info);
402
189
  }
403
- this.ctx.logger.info(`已加载 ${this.sessions.size} 个会话`);
404
190
  }
405
191
  catch (err) {
406
- this.ctx.logger.warn('加载会话数据失败:', err);
407
- }
192
+ sessions = undefined;
193
+ this.caps.logger.error('加载会话数据失败,在这个后端上的会话改动不落盘(以免覆盖原有记录):', err);
194
+ }
195
+ // 加载窗口里旧表的改动:落盘目标此前仍是旧实例,换表前取快照,换表后写回
196
+ const previous = this.store;
197
+ const pending = previous && this.dirty ? this.snapshot().ops : undefined;
198
+ this.sessions = sessions ?? new Map();
199
+ this.deleted.clear();
200
+ this.dirty = false;
201
+ this.store = sessions ? instance : undefined;
202
+ if (sessions)
203
+ this.caps.logger.info(`已加载 ${sessions.size} 个会话`);
204
+ if (previous && pending)
205
+ await previous.commitMetadata(pending).catch(err => this.caps.logger.warn('换后端时写回旧后端失败:', err));
408
206
  }
409
207
  /** 标记需要持久化并延迟刷盘 */
410
208
  markDirty() {
@@ -412,46 +210,53 @@ class SessionManager {
412
210
  if (!this.persistTimer) {
413
211
  this.persistTimer = setTimeout(() => {
414
212
  this.persistTimer = null;
415
- this.persist().catch(err => this.ctx.logger.warn('持久化会话失败:', err));
213
+ this.persist().catch(err => this.caps.logger.warn('持久化会话失败:', err));
416
214
  }, 1000);
417
215
  }
418
216
  }
419
217
  /**
420
218
  * 持久化到 memory metadata —— **一次批量提交**。
421
219
  *
422
- * 旧写法是「逐条 saveMetadata + 全表扫逐个 deleteMetadata」,而 `dirty` 在开头就被置 false:
220
+ * 逐条 saveMetadata + 全表扫逐个 deleteMetadata 的写法配上开头就置 false 的 `dirty`:
423
221
  * 任何一条抛错就停在半新半旧,且下一次 debounce 不会重试。
424
222
  *
425
- * 改成整批提交后,**原子性按后端分档**(见 api-memory 契约):sqlite/inmemory 真事务,
223
+ * 整批提交的**原子性按后端分档**(见 api-memory 契约):sqlite/inmemory 真事务,
426
224
  * mongodb 只保证按序执行遇错即停,仍可能停在半新半旧。本场景对此免疫,靠的不是原子性
427
- * 而是**幂等 + 可重试**:每次写的是全量快照(不是增量),失败时 dirty 复位,下一次
428
- * markDirty 会把完整状态重写一遍并重扫孤儿,前一次的半成品被整体覆盖。
225
+ * 而是**幂等 + 可重试**:每次写的是全量快照(不是增量),删除只针对墓碑;失败时 dirty 复位、
226
+ * 墓碑保留,下一次 markDirty 会把完整状态重写一遍,前一次的半成品被整体覆盖。
429
227
  */
430
228
  async persist() {
431
- if (!this.dirty)
229
+ const target = this.store;
230
+ if (!this.dirty || !target)
432
231
  return;
433
232
  this.dirty = false;
233
+ const { ops, tombstones } = this.snapshot();
234
+ try {
235
+ // 写入目标取落盘开始时的会话表所在实例:换人窗口里当前胜者可能已是新后端,旧表不能写过去
236
+ await target.commitMetadata(ops);
237
+ for (const [key, token] of tombstones)
238
+ if (this.deleted.get(key) === token)
239
+ this.deleted.delete(key);
240
+ }
241
+ catch (err) {
242
+ this.dirty = true; // 失败要能重试,否则这批变更永远落不了盘
243
+ throw err;
244
+ }
245
+ }
246
+ /** 会话表的全量快照:每个会话一条 put,墓碑各一条 del */
247
+ snapshot() {
434
248
  const ops = [...this.sessions].map(([id, info]) => ({
435
249
  op: 'put',
436
250
  namespace: METADATA_NAMESPACE,
437
251
  key: id,
438
252
  data: info,
439
253
  }));
440
- try {
441
- // 清理孤儿:元数据里有、内存里没有的记录,与上面的写入同批提交。
442
- // **这一句必须在 try 内**:它同样会抛(provider bounce 窗口里 `this.memory` getter 就会),
443
- // 而 dirty 已在上面置 false —— 落在外面就等于「这批变更丢了且永不重试」,正是本方法
444
- // 要消灭的那个病。
445
- for (const { key } of await this.memory.listMetadata(METADATA_NAMESPACE)) {
446
- if (!this.sessions.has(key))
447
- ops.push({ op: 'del', namespace: METADATA_NAMESPACE, key });
448
- }
449
- await this.memory.commitMetadata(ops);
450
- }
451
- catch (err) {
452
- this.dirty = true; // 失败要能重试,否则这批变更永远落不了盘
453
- throw err;
254
+ const tombstones = [...this.deleted];
255
+ for (const [key] of tombstones) {
256
+ if (!this.sessions.has(key))
257
+ ops.push({ op: 'del', namespace: METADATA_NAMESPACE, key });
454
258
  }
259
+ return { ops, tombstones };
455
260
  }
456
261
  /**
457
262
  * 按精确 id 幂等 upsert:命中走 updateSession(合并 config + emit `session:updated`),
@@ -482,8 +287,8 @@ class SessionManager {
482
287
  };
483
288
  this.sessions.set(id, session);
484
289
  this.markDirty();
485
- await this.ctx.emit('session:created', session);
486
- this.ctx.logger.info(`会话建档(ensure): ${session.name} (${id})`);
290
+ await this.caps.events.emit('session:created', session);
291
+ this.caps.logger.info(`会话建档(ensure): ${session.name} (${id})`);
487
292
  return session;
488
293
  }
489
294
  // ---- CRUD ----
@@ -517,8 +322,8 @@ class SessionManager {
517
322
  }
518
323
  }
519
324
  this.markDirty();
520
- await this.ctx.emit('session:created', session);
521
- this.ctx.logger.info(`会话创建: ${session.name} (${id})`);
325
+ await this.caps.events.emit('session:created', session);
326
+ this.caps.logger.info(`会话创建: ${session.name} (${id})`);
522
327
  return session;
523
328
  }
524
329
  getSession(id) {
@@ -557,7 +362,7 @@ class SessionManager {
557
362
  }
558
363
  session.updatedAt = Date.now();
559
364
  this.markDirty();
560
- await this.ctx.emit('session:updated', session);
365
+ await this.caps.events.emit('session:updated', session);
561
366
  return session;
562
367
  }
563
368
  async deleteSession(id) {
@@ -577,10 +382,11 @@ class SessionManager {
577
382
  }
578
383
  }
579
384
  this.sessions.delete(id);
385
+ this.deleted.set(id, Symbol(id));
580
386
  await this.clearDeletedSessionData(id);
581
387
  this.markDirty();
582
- await this.ctx.emit('session:deleted', id);
583
- this.ctx.logger.info(`会话删除: ${session.name} (${id})`);
388
+ await this.caps.events.emit('session:deleted', id);
389
+ this.caps.logger.info(`会话删除: ${session.name} (${id})`);
584
390
  }
585
391
  async clearDeletedSessionData(id) {
586
392
  const clearData = {
@@ -588,7 +394,7 @@ class SessionManager {
588
394
  sessionId: id,
589
395
  results: [],
590
396
  };
591
- await this.ctx.runHook('memory:clear', clearData, async () => {
397
+ await this.caps.hooks.run('memory:clear', clearData, async () => {
592
398
  try {
593
399
  await this.memory.clearSession(id);
594
400
  clearData.results.push({ source: 'memory', success: true, message: '会话消息历史已清空' });
@@ -600,7 +406,7 @@ class SessionManager {
600
406
  });
601
407
  const failed = clearData.results.filter(r => !r.success);
602
408
  if (failed.length > 0) {
603
- this.ctx.logger.warn(`会话数据清理存在失败项 [${id}]: ${failed.map(r => `${r.source}: ${r.message}`).join('; ')}`);
409
+ this.caps.logger.warn(`会话数据清理存在失败项 [${id}]: ${failed.map(r => `${r.source}: ${r.message}`).join('; ')}`);
604
410
  }
605
411
  }
606
412
  // ---- 树形操作 ----
@@ -645,8 +451,8 @@ class SessionManager {
645
451
  session.updatedAt = Date.now();
646
452
  this.markDirty();
647
453
  // 发事件通知(wait_subtasks 通过事件驱动感知完成)
648
- await this.ctx.emit('session:completed', session);
649
- this.ctx.logger.info(`会话完成: ${session.name} (${id})${result ? ` - ${result.slice(0, 100)}` : ''}`);
454
+ await this.caps.events.emit('session:completed', session);
455
+ this.caps.logger.info(`会话完成: ${session.name} (${id})${result ? ` - ${result.slice(0, 100)}` : ''}`);
650
456
  }
651
457
  // ---- 标题管理 ----
652
458
  async generateTitle(sessionId, userMessage) {
@@ -656,13 +462,13 @@ class SessionManager {
656
462
  // 已有标题则跳过
657
463
  if (session.title)
658
464
  return session.title;
659
- const entry = resolveLLMModel(this.ctx, undefined, ['chat']);
465
+ const entry = resolveLLMModel(this.caps.llm, undefined, ['chat']);
660
466
  if (!entry) {
661
- this.ctx.logger.warn(`无可用 LLM,无法生成标题: ${sessionId}`);
467
+ this.caps.logger.warn(`无可用 LLM,无法生成标题: ${sessionId}`);
662
468
  return undefined;
663
469
  }
664
- this.ctx.logger.debug(`标题生成使用 LLM: ${entry.contextId}`);
665
- const llm = entry.instance;
470
+ this.caps.logger.debug(`标题生成使用 LLM: ${entry.contextId}`);
471
+ const model = entry.instance;
666
472
  // 优先使用直接传入的用户消息;否则从历史获取
667
473
  let contextStr;
668
474
  if (userMessage?.trim()) {
@@ -682,7 +488,7 @@ class SessionManager {
682
488
  return undefined;
683
489
  let title;
684
490
  try {
685
- const resp = await llm.chat({
491
+ const resp = await model.chat({
686
492
  messages: [
687
493
  {
688
494
  role: 'system',
@@ -697,23 +503,23 @@ class SessionManager {
697
503
  });
698
504
  title = (resp.content || '').trim().slice(0, 50);
699
505
  if (!title) {
700
- this.ctx.logger.warn(`会话标题 LLM 返回空内容: ${sessionId} (resp.content=${JSON.stringify(resp.content)}, reasoning=${(resp.reasoningContent ?? '').length}字)`);
506
+ this.caps.logger.warn(`会话标题 LLM 返回空内容: ${sessionId} (resp.content=${JSON.stringify(resp.content)}, reasoning=${(resp.reasoningContent ?? '').length}字)`);
701
507
  }
702
508
  }
703
509
  catch (err) {
704
- this.ctx.logger.warn(`自动生成标题失败 [${sessionId}]:`, err);
510
+ this.caps.logger.warn(`自动生成标题失败 [${sessionId}]:`, err);
705
511
  }
706
512
  // 兜底:LLM 失败或返回空时,用用户消息首段作为临时标题,避免会话永远没有标题
707
513
  if (!title && userMessage?.trim()) {
708
514
  title = userMessage.trim().replace(/\s+/g, ' ').slice(0, 20);
709
- this.ctx.logger.info(`使用用户消息兜底生成标题: ${sessionId} -> ${title}`);
515
+ this.caps.logger.info(`使用用户消息兜底生成标题: ${sessionId} -> ${title}`);
710
516
  }
711
517
  if (title) {
712
518
  session.title = title;
713
519
  session.updatedAt = Date.now();
714
520
  this.markDirty();
715
- await this.ctx.emit('session:updated', session);
716
- this.ctx.logger.info(`会话标题已生成: [${sessionId}] ${title}`);
521
+ await this.caps.events.emit('session:updated', session);
522
+ this.caps.logger.info(`会话标题已生成: [${sessionId}] ${title}`);
717
523
  return title;
718
524
  }
719
525
  return undefined;
@@ -725,7 +531,7 @@ class SessionManager {
725
531
  session.title = title;
726
532
  session.updatedAt = Date.now();
727
533
  this.markDirty();
728
- await this.ctx.emit('session:updated', session);
534
+ await this.caps.events.emit('session:updated', session);
729
535
  }
730
536
  // ---- 配置解析 ----
731
537
  /**
@@ -738,25 +544,11 @@ class SessionManager {
738
544
  * 4. 全局 defaults(最低)
739
545
  */
740
546
  resolveConfig(sessionId, platform) {
547
+ // 2-4 层即「继承默认」
548
+ const result = this.resolveInheritedDefaults(sessionId, platform);
741
549
  const session = this.sessions.get(sessionId);
742
- const result = {};
743
- // 4. 全局 defaults(最低优先级)
744
- Object.assign(result, stripUndefined(this.defaults));
745
- // 3. 平台 profile —— 无论 session 是否存在都应用
746
- if (platform) {
747
- const profile = this.platformProfiles.get(platform);
748
- if (profile)
749
- Object.assign(result, stripDefaults(profile));
750
- }
751
550
  if (!session)
752
551
  return result;
753
- // 2. 父会话 sessionDefaults
754
- if (session.parentId) {
755
- const parent = this.sessions.get(session.parentId);
756
- if (parent?.config?.sessionDefaults) {
757
- Object.assign(result, stripUndefined(parent.config.sessionDefaults));
758
- }
759
- }
760
552
  // 1. 会话自身 config(最高优先级)
761
553
  Object.assign(result, stripUndefined(session.config));
762
554
  // 移除 sessionDefaults(不传递到消费方)
@@ -776,7 +568,7 @@ class SessionManager {
776
568
  if (platform) {
777
569
  const profile = this.platformProfiles.get(platform);
778
570
  if (profile)
779
- Object.assign(result, stripDefaults(profile));
571
+ Object.assign(result, stripUndefined(profile));
780
572
  }
781
573
  // 1. 父会话 sessionDefaults(最高,覆盖 profile/defaults)
782
574
  const session = this.sessions.get(sessionId);
@@ -802,7 +594,7 @@ class SessionManager {
802
594
  next.persona = r.persona;
803
595
  this.defaults = next;
804
596
  if (Object.keys(next).length > 0) {
805
- this.ctx.logger.info(`已加载全局 defaults: ${Object.keys(next).join(', ')}`);
597
+ this.caps.logger.info(`已加载全局 defaults: ${Object.keys(next).join(', ')}`);
806
598
  }
807
599
  }
808
600
  getPlatformProfiles() {
@@ -840,8 +632,36 @@ class SessionManager {
840
632
  this.platformProfiles.set(entry.platform, profile);
841
633
  }
842
634
  if (this.platformProfiles.size > 0) {
843
- this.ctx.logger.info(`已加载 ${this.platformProfiles.size} 个平台配置模板: ${[...this.platformProfiles.keys()].join(', ')}`);
635
+ this.caps.logger.info(`已加载 ${this.platformProfiles.size} 个平台配置模板: ${[...this.platformProfiles.keys()].join(', ')}`);
636
+ }
637
+ }
638
+ /**
639
+ * 关停收尾:仍 `active` 的会话立即收口并落盘。
640
+ *
641
+ * 枚举没有 interrupted:回合结束(含用户停止 / abort)既有收口就是 `completed`,
642
+ * 关停打断在飞回合与那条路径同义,沿用同一状态,不新造值。
643
+ * waiting / completed / error / archived 不是在飞,原样保留。
644
+ *
645
+ * 第一方栈由 core 关停编排(optional 环成员先全部 drain)与 `agent:turn:after` 收口;
646
+ * 此处兜的是未装 agent 或钩子未挂上的路径。
647
+ * persist 也在这里立刻刷,不走 1s debounce——onDispose 的 shutdown 仍会再刷一次。
648
+ */
649
+ async settleActiveOnDrain() {
650
+ let closed = 0;
651
+ for (const session of this.sessions.values()) {
652
+ if (session.status !== 'active')
653
+ continue;
654
+ session.status = 'completed';
655
+ session.updatedAt = Date.now();
656
+ closed++;
844
657
  }
658
+ if (closed > 0)
659
+ this.dirty = true;
660
+ if (this.persistTimer) {
661
+ clearTimeout(this.persistTimer);
662
+ this.persistTimer = null;
663
+ }
664
+ await this.persist();
845
665
  }
846
666
  /** 强制持久化并清理定时器 */
847
667
  async shutdown() {
@@ -874,32 +694,230 @@ function stripUndefined(obj) {
874
694
  }
875
695
  return result;
876
696
  }
877
- /** stripDefaults 与 stripUndefined 功能相同 —— 只保留有值的字段 */
878
- const stripDefaults = stripUndefined;
697
+ /**
698
+ * 页面动作全是 apply 里的闭包:直接用这次激活的 manager 与能力,
699
+ * 登记随激活存亡(插件不在,WebUI 就调不到这些方法)。
700
+ */
701
+ function registerSessionActions(caps, manager) {
702
+ const { webui, memory, persona, llm, tools, platform } = caps;
703
+ webui.registerAction('listSessions', async () => manager.listSessions().map(s => ({
704
+ ...s,
705
+ displayTitle: s.title || s.name,
706
+ configSummary: formatConfigSummary(s.config),
707
+ childCount: s.children.length,
708
+ })));
709
+ webui.registerAction('createSession', async (args) => {
710
+ const parentId = args.parentId || undefined;
711
+ // 新建会话时复制当前生效配置,而非留空继承
712
+ let config = args.config || {};
713
+ if (Object.keys(config).length === 0) {
714
+ if (parentId) {
715
+ // 子会话:复制父会话的 resolved config
716
+ config = { ...manager.resolveConfig(parentId, 'webui') };
717
+ }
718
+ else {
719
+ // 根会话:复制 webui 平台 profile 作为初始配置
720
+ const profiles = manager.getPlatformProfiles();
721
+ if (profiles.webui)
722
+ config = { ...profiles.webui };
723
+ }
724
+ }
725
+ return manager.createSession({
726
+ name: args.name ||
727
+ `会话 ${new Date().toLocaleString('zh-CN', { month: '2-digit', day: '2-digit', hour: '2-digit', minute: '2-digit' })}`,
728
+ parentId,
729
+ config,
730
+ createdBy: 'user',
731
+ // 新建的空会话尚未发生任何对话,初始为 'waiting'(等待中)而非 'active'(进行中)。
732
+ // 否则侧栏新建的会话会一直显示"进行中"——直到首条消息触发 inbound→active→turn:after→completed。
733
+ status: 'waiting',
734
+ });
735
+ });
736
+ webui.registerAction('deleteSession', async (args) => {
737
+ const id = args.id;
738
+ if (!id)
739
+ throw new Error('缺少会话 ID');
740
+ await manager.deleteSession(id);
741
+ return { success: true };
742
+ });
743
+ webui.registerAction('updateSessionConfig', async (args) => {
744
+ const id = args.id;
745
+ if (!id)
746
+ throw new Error('缺少会话 ID');
747
+ return manager.updateSession(id, { config: normalizeSessionConfigPatch(args.config) });
748
+ });
749
+ webui.registerAction('getSessionHistory', async (args) => {
750
+ const store = memory.current;
751
+ if (!store)
752
+ throw new Error('memory 服务不可用');
753
+ const sessionId = args.sessionId;
754
+ if (!sessionId)
755
+ throw new Error('缺少 sessionId');
756
+ const limit = args.limit || 100;
757
+ const history = await store.getHistory(sessionId, limit);
758
+ return { sessionId, messages: history };
759
+ });
760
+ /** 批量归档会话 */
761
+ webui.registerAction('batchArchive', async (args) => {
762
+ const ids = args.ids;
763
+ if (!Array.isArray(ids) || ids.length === 0)
764
+ throw new Error('缺少会话 ID 列表');
765
+ let count = 0;
766
+ for (const id of ids) {
767
+ try {
768
+ await manager.updateSession(id, { status: 'archived' });
769
+ count++;
770
+ }
771
+ catch {
772
+ /* skip */
773
+ }
774
+ }
775
+ return { success: true, count };
776
+ });
777
+ /** 批量删除会话 */
778
+ webui.registerAction('batchDelete', async (args) => {
779
+ const ids = args.ids;
780
+ if (!Array.isArray(ids) || ids.length === 0)
781
+ throw new Error('缺少会话 ID 列表');
782
+ let count = 0;
783
+ for (const id of ids) {
784
+ try {
785
+ await manager.deleteSession(id);
786
+ count++;
787
+ }
788
+ catch {
789
+ /* skip */
790
+ }
791
+ }
792
+ return { success: true, count };
793
+ });
794
+ webui.registerAction('getSessionTree', async () => manager.getTree());
795
+ /** 获取可选项列表(供前端下拉框使用) */
796
+ webui.registerAction('getConfigOptions', async () => {
797
+ // 可用人设列表
798
+ const personaService = persona.current;
799
+ const personas = personaService?.listModels ? await personaService.listModels() : [];
800
+ // 可用 LLM 模型列表(枚举所有 chat-capable entry)
801
+ const models = listLLMModels(llm, { caps: ['chat'] }).map(e => ({
802
+ id: e.instance.id,
803
+ capabilities: [...e.instance.capabilities],
804
+ provider: e.instance.providerId,
805
+ contextId: e.contextId,
806
+ }));
807
+ // 工具分组列表
808
+ const toolGroups = tools.current?.getGroups().map(g => ({ name: g.name, label: g.label })) ?? [];
809
+ // 已注册平台列表
810
+ const platforms = getPlatformNames(platform);
811
+ return { personas, models, toolGroups, platforms, profiles: manager.getPlatformProfiles() };
812
+ });
813
+ /** 获取指定会话的最终生效配置(合并所有层级后的结果) */
814
+ webui.registerAction('getResolvedConfig', async (args) => {
815
+ const sessionId = args.sessionId;
816
+ if (!sessionId)
817
+ throw new Error('缺少 sessionId');
818
+ return manager.resolveConfig(sessionId, args.platform);
819
+ });
820
+ /**
821
+ * 获取「继承默认」——不含 session 自身 config,只算 platform profile + 父 sessionDefaults。
822
+ * WebUI 「继承 (xxx)」提示用这个,避免显示用户自己的覆盖值。
823
+ */
824
+ webui.registerAction('getInheritedDefaults', async (args) => {
825
+ const sessionId = args.sessionId;
826
+ if (!sessionId)
827
+ throw new Error('缺少 sessionId');
828
+ return manager.resolveInheritedDefaults(sessionId, args.platform);
829
+ });
830
+ /** 获取会话详情(含完整消息历史,包括已归档消息) */
831
+ webui.registerAction('getSessionDetail', async (args) => {
832
+ const store = memory.current;
833
+ if (!store)
834
+ throw new Error('memory 服务不可用');
835
+ const id = args.id;
836
+ if (!id)
837
+ throw new Error('缺少会话 ID');
838
+ const session = manager.getSession(id);
839
+ if (!session)
840
+ throw new Error(`会话不存在: ${id}`);
841
+ const limit = args.limit || 200;
842
+ // 优先使用 getFullHistory(含已归档消息),确保 UI 能看到完整对话
843
+ const messages = store.getFullHistory ? await store.getFullHistory(id, limit) : await store.getHistory(id, limit);
844
+ return { session, messages };
845
+ });
846
+ /** 手动重命名会话标题 */
847
+ webui.registerAction('renameSession', async (args) => {
848
+ const id = args.id;
849
+ const title = args.title;
850
+ if (!id || !title)
851
+ throw new Error('缺少 id 或 title');
852
+ await manager.updateSessionTitle(id, title);
853
+ return { success: true };
854
+ });
855
+ /** 归档子会话(父已不再需要) */
856
+ webui.registerAction('archiveSession', async (args) => {
857
+ const id = args.id;
858
+ if (!id)
859
+ throw new Error('缺少会话 ID');
860
+ await archiveRecursively(manager, id);
861
+ return { success: true };
862
+ });
863
+ }
879
864
  // ===== 插件入口 =====
880
- export async function apply(ctx, config) {
865
+ const uses = {
866
+ /** 会话档案与消息历史的唯一落点:没有 memory 就没有会话管理 */
867
+ memory,
868
+ /**
869
+ * 本插件不调用 agent 的方法;声明它是为了 agent:* 钩子的键类型。
870
+ * 第一方栈由 core 关停编排(optional 环成员先全部 drain)与 `agent:turn:after` 收口;
871
+ * 此处 onDrain 兜的是未装 agent 或钩子未挂上的路径。
872
+ */
873
+ agent: optional(agent),
874
+ /** 自动标题的模型来源;没有 LLM 时退回用户消息首段 */
875
+ llm: optional(llm),
876
+ /** 下列三项只供 WebUI 下拉框枚举选项,缺席即空列表 */
877
+ persona: optional(persona),
878
+ platform: optional(platform),
879
+ tools: optional(tools),
880
+ /** 页面与页面动作的登记口;无 WebUI 时会话管理照常在后台运行 */
881
+ webui: optional(webuiServer),
882
+ events,
883
+ hooks,
884
+ lifecycle,
885
+ logger,
886
+ config,
887
+ provide,
888
+ };
889
+ export default definePlugin({
890
+ name: '@aalis/plugin-session-manager',
891
+ displayName: '会话管理',
892
+ subsystem: 'session',
893
+ configSchema,
894
+ provides: [sessionManager],
895
+ uses,
896
+ apply: run,
897
+ });
898
+ async function run(caps) {
899
+ const { memory, webui, events, hooks, lifecycle, logger, provide } = caps;
881
900
  // 注册 WebUI 页面
882
- const webui = useWebuiService(ctx);
883
901
  for (const page of webuiPages)
884
902
  webui.registerPage(page);
885
- if (ctx.getService('memory') === undefined) {
886
- ctx.logger.error('memory 服务不可用,会话管理无法启动');
903
+ if (memory.current === undefined) {
904
+ logger.error('memory 服务不可用,会话管理无法启动');
887
905
  return;
888
906
  }
889
- const manager = new SessionManager(ctx);
890
- // 从持久化存储加载
891
- await manager.load();
907
+ const manager = new SessionManager(caps);
908
+ // 会话表跟随 memory 胜者:首次挂接即加载;运行中胜者换人时先写回旧后端再读新后端
909
+ memory.follow(instance => manager.attach(instance));
910
+ await manager.loading;
892
911
  // 加载平台 profiles
893
- manager.loadPlatformProfiles(config.platformProfiles);
912
+ manager.loadPlatformProfiles(caps.config.platformProfiles);
894
913
  // 加载全局 defaults
895
- manager.loadDefaults(config.defaults);
914
+ manager.loadDefaults(caps.config.defaults);
896
915
  // 注册服务
897
- ctx.provide('session-manager', manager, {
898
- label: '会话管理',
899
- });
916
+ provide(sessionManager, manager, { label: '会话管理' });
917
+ registerSessionActions(caps, manager);
900
918
  // ===== 会话状态自治管理 =====
901
919
  // 监听消息事件,自动维护会话状态(从 Agent 职责中迁出)
902
- ctx.on('inbound:message', (msg) => {
920
+ events.on('inbound:message', (msg) => {
903
921
  if (!msg.sessionId)
904
922
  return;
905
923
  const session = manager.getSession(msg.sessionId);
@@ -907,11 +925,11 @@ export async function apply(ctx, config) {
907
925
  manager.updateSession(msg.sessionId, { status: 'active' }).catch(() => { });
908
926
  }
909
927
  });
910
- ctx.on('outbound:message', (msg) => {
928
+ events.on('outbound:message', (msg) => {
911
929
  if (!msg.sessionId)
912
930
  return;
913
931
  const session = manager.getSession(msg.sessionId);
914
- // 子会话(有 parentId)由 plugin-session-tools 的 agent:turn:after 中间件负责完成并提取 result
932
+ // 子会话(有 parentId)由 plugin-subtask 的 agent:turn:after 中间件负责完成并提取 result
915
933
  if (session && session.status === 'active' && !session.parentId) {
916
934
  manager.updateSession(msg.sessionId, { status: 'completed' }).catch(() => { });
917
935
  }
@@ -920,12 +938,12 @@ export async function apply(ctx, config) {
920
938
  // 上面的 outbound:message 只覆盖"产生了回复"的情形——用户中途停止生成(aborted)或
921
939
  // 空回复(silent)时不发 outbound:message,会话会永远停在 'active'(即"进行中")。
922
940
  // 这里订阅生命周期钩子作幂等互补,确保任何回合结束都把根会话收口为 'completed'。
923
- ctx.middleware('agent:turn:after', async (data, next) => {
941
+ hooks.middleware('agent:turn:after', async (data, next) => {
924
942
  await next();
925
943
  if (!data.sessionId)
926
944
  return;
927
945
  const session = manager.getSession(data.sessionId);
928
- // 子会话由 plugin-session-tools 负责完成并回传 result,这里只收口根会话。
946
+ // 子会话由 plugin-subtask 负责完成并回传 result,这里只收口根会话。
929
947
  if (session && session.status === 'active' && !session.parentId) {
930
948
  manager.updateSession(data.sessionId, { status: 'completed' }).catch(() => { });
931
949
  }
@@ -935,10 +953,10 @@ export async function apply(ctx, config) {
935
953
  // 仅对 webui / cli 等用户交互平台生效,onebot 等外部平台不生成标题
936
954
  const TITLE_PLATFORMS = new Set(['webui', 'cli']);
937
955
  const titleGenerating = new Set();
938
- ctx.on('inbound:message', (msg) => {
956
+ events.on('inbound:message', (msg) => {
939
957
  const { sessionId, platform } = msg;
940
958
  if (!sessionId) {
941
- ctx.logger.debug('标题生成跳过: 缺少 sessionId');
959
+ logger.debug('标题生成跳过: 缺少 sessionId');
942
960
  return;
943
961
  }
944
962
  if (titleGenerating.has(sessionId))
@@ -952,20 +970,24 @@ export async function apply(ctx, config) {
952
970
  if (session && (session.title || session.parentId))
953
971
  return;
954
972
  titleGenerating.add(sessionId);
955
- ctx.logger.info(`开始生成会话标题: ${sessionId} (platform=${platform})`);
973
+ logger.info(`开始生成会话标题: ${sessionId} (platform=${platform})`);
956
974
  // 平台派生会话(cli-default 等)从不经 createSession 预建,缺档是常态:先兜底建档再生成
957
975
  // 标题(与 createChildSession 同路),否则这些平台永远没有标题、且每条消息告警一次。
958
976
  // 异步生成,不阻塞消息处理;直接传入用户消息避免依赖历史
959
977
  (session ? Promise.resolve() : manager.ensureSession(sessionId).then(() => undefined))
960
978
  .then(() => manager.generateTitle(sessionId, msg.content))
961
- .catch(err => ctx.logger.warn('标题生成失败:', err))
979
+ .catch(err => logger.warn('标题生成失败:', err))
962
980
  .finally(() => titleGenerating.delete(sessionId));
963
981
  });
964
- // 持久化走 onDispose:覆盖停机与 bounce / unload / updatePluginConfig 等全部
965
- // 拆卸路径(旧 app:stopping 只在全局停机触发,热重载即丢会话元数据)。
966
- // 异步收尾由编排层的 disposeAsync 等待完成;拓扑逆序保证此时 memory 提供者
967
- // 尚未关闭。shutdown() 幂等:清 timer + 置 dirty + 落盘。
968
- ctx.onDispose(() => manager.shutdown());
969
- ctx.logger.info('会话管理服务已启用');
982
+ // 关停收尾:仍 active 的会话在 onDrain 收口并落盘。
983
+ // 第一方栈由 core 关停编排(optional 环成员先全部 drain)与 agent:turn:after 收口;
984
+ // 此处兜的是未装 agent 或钩子未挂上的路径。
985
+ // 持久化仍走 onDispose:覆盖 bounce / unload / updateConfig 等全部拆卸路径
986
+ // (只在全局停机触发的话,热重载即丢会话元数据)。
987
+ // 异步收尾由编排层的 disposeAsync 等待完成;app.stop() 的拓扑逆序保证此时 memory 提供者
988
+ // 尚未关闭,单独热重载/禁用 memory 提供者时无此保证。shutdown() 幂等:清 timer + 置 dirty + 落盘。
989
+ lifecycle.onDrain(() => manager.settleActiveOnDrain(), '收口在飞会话');
990
+ lifecycle.onDispose(() => manager.shutdown());
991
+ logger.info('会话管理服务已启用');
970
992
  }
971
993
  //# 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":"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"}
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-session-manager",
3
- "version": "0.11.0",
3
+ "version": "0.13.0",
4
4
  "license": "MIT",
5
5
  "repository": {
6
6
  "type": "git",
@@ -24,34 +24,44 @@
24
24
  "dist"
25
25
  ],
26
26
  "dependencies": {
27
- "@aalis/schema-config": ">=0.9.0 <1.0.0",
28
- "@aalis/api-llm": ">=0.9.0 <1.0.0",
29
- "@aalis/api-session-manager": ">=0.8.0 <1.0.0",
30
- "@aalis/api-webui": ">=0.9.0 <1.0.0"
27
+ "@aalis/schema-config": ">=0.13.0 <1.0.0",
28
+ "@aalis/api-agent": ">=0.9.0 <1.0.0",
29
+ "@aalis/api-llm": ">=0.12.0 <1.0.0",
30
+ "@aalis/api-memory": ">=0.7.0 <1.0.0",
31
+ "@aalis/api-persona": ">=0.8.0 <1.0.0",
32
+ "@aalis/api-platform": ">=0.8.0 <1.0.0",
33
+ "@aalis/api-session-manager": ">=0.10.0 <1.0.0",
34
+ "@aalis/api-tools": ">=0.10.0 <1.0.0",
35
+ "@aalis/api-webui": ">=0.11.0 <1.0.0",
36
+ "@aalis/api-hooks": ">=0.1.0 <1.0.0"
31
37
  },
32
38
  "devDependencies": {
33
39
  "@types/node": "^22.0.0",
34
40
  "typescript": "^5.7.0",
35
- "@aalis/api-agent": "0.7.1",
36
- "@aalis/core": "0.12.1",
37
- "@aalis/api-memory": "0.5.1",
38
- "@aalis/schema-message": "0.8.1",
39
- "@aalis/api-persona": "0.6.0",
40
- "@aalis/api-tools": "0.8.1"
41
+ "@aalis/core": "0.18.0",
42
+ "@aalis/schema-message": "0.9.0"
41
43
  },
42
44
  "peerDependencies": {
43
- "@aalis/core": ">=0.11.0 <1.0.0"
45
+ "@aalis/core": ">=0.18.0 <1.0.0"
44
46
  },
45
47
  "aalis": {
46
48
  "service": {
47
49
  "required": [
48
- "memory"
50
+ "config",
51
+ "events",
52
+ "hooks",
53
+ "lifecycle",
54
+ "logger",
55
+ "memory",
56
+ "provide"
49
57
  ],
50
58
  "optional": [
51
59
  "agent",
52
- "platform",
60
+ "llm",
53
61
  "persona",
54
- "llm"
62
+ "platform",
63
+ "tools",
64
+ "webui-server"
55
65
  ],
56
66
  "provides": [
57
67
  "session-manager"