@aalis/plugin-checkpoint 0.11.1 → 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 +23 -24
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +81 -107
- package/dist/index.js.map +1 -1
- package/dist/service.d.ts +14 -11
- package/dist/service.d.ts.map +1 -1
- package/dist/service.js +54 -49
- package/dist/service.js.map +1 -1
- package/package.json +19 -8
package/dist/index.d.ts
CHANGED
|
@@ -1,26 +1,25 @@
|
|
|
1
|
-
import
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
1
|
+
import { type CheckpointService } from './service.js';
|
|
2
|
+
export declare const checkpoint: import("@aalis/core").ServiceDescriptor<CheckpointService, import("@aalis/core").ServiceRef<CheckpointService>>;
|
|
3
|
+
declare const _default: import("@aalis/core").PluginDefinition<{
|
|
4
|
+
/**
|
|
5
|
+
* storage 是硬依赖:本插件的快照/manifest 全部经 storage 落盘。
|
|
6
|
+
*
|
|
7
|
+
* 声明成 required 同时决定关停次序:storage 排在本插件之后退场,onDispose 里的 flushAll 才写得动。
|
|
8
|
+
* 该保证只在 app.stop() 的整体拓扑逆序成立;单独禁用/热重载 storage 时 flushAll 会落空
|
|
9
|
+
* (回合 blob 在写点已落盘,丢的只是在飞回合的 manifest)。
|
|
10
|
+
*/
|
|
11
|
+
storage: import("@aalis/core").ServiceDescriptor<import("@aalis/api-storage").StorageService, import("@aalis/core").ServiceRef<import("@aalis/api-storage").StorageService>>;
|
|
12
|
+
/** 只有「回滚整轮对话」用得到(抓消息时间戳、删消息);没有 memory 也能做纯文件回滚 */
|
|
13
|
+
memory: import("@aalis/core").OptionalUse<import("@aalis/api-memory").MemoryService, import("@aalis/core").ServiceRef<import("@aalis/api-memory").MemoryService>>;
|
|
14
|
+
/** 页面动作的登记口;无 WebUI 时本插件照常在后台记账 */
|
|
15
|
+
webui: import("@aalis/core").OptionalUse<import("@aalis/api-webui").WebUIService, import("@aalis/api-webui").BoundWebui>;
|
|
16
|
+
events: import("@aalis/core").ServiceDescriptor<(identity: symbol) => import("@aalis/core").Events, import("@aalis/core").Events>;
|
|
17
|
+
hooks: import("@aalis/core").ServiceDescriptor<import("@aalis/api-hooks").HookRegistry, import("@aalis/api-hooks").Hooks>;
|
|
18
|
+
lifecycle: import("@aalis/core").ServiceDescriptor<(identity: symbol) => import("@aalis/core").LifecycleCap, import("@aalis/core").LifecycleCap>;
|
|
19
|
+
logger: import("@aalis/core").ServiceDescriptor<(identity: symbol) => import("@aalis/core").Logger, import("@aalis/core").Logger>;
|
|
20
|
+
config: import("@aalis/core").ServiceDescriptor<(identity: symbol) => Readonly<Record<string, unknown>>, Readonly<Record<string, unknown>>>;
|
|
21
|
+
provide: import("@aalis/core").ServiceDescriptor<(identity: symbol) => import("@aalis/core").Provide, import("@aalis/core").Provide>;
|
|
22
|
+
}>;
|
|
23
|
+
export default _default;
|
|
20
24
|
export type { CheckpointFileRecord, CheckpointService, RollbackResult, RollbackWithChatResult, TurnManifest, TurnSummary, } from './service.js';
|
|
21
|
-
declare module '@aalis/core' {
|
|
22
|
-
interface ServiceTypeMap {
|
|
23
|
-
checkpoint: import('./service.js').CheckpointService;
|
|
24
|
-
}
|
|
25
|
-
}
|
|
26
25
|
//# 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":"AAiBA,OAAO,EAAE,KAAK,iBAAiB,EAAwC,MAAM,cAAc,CAAC;AA0C5F,eAAO,MAAM,UAAU,iHAAiD,CAAC;;IAGvE;;;;;;OAMG;;IAEH,mDAAmD;;IAEnD,mCAAmC;;;;;;;;;AAWrC,wBAQG;AA0IH,YAAY,EACV,oBAAoB,EACpB,iBAAiB,EACjB,cAAc,EACd,sBAAsB,EACtB,YAAY,EACZ,WAAW,GACZ,MAAM,cAAc,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,27 +1,17 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { hooks } from '@aalis/api-hooks';
|
|
2
|
+
import { memory } from '@aalis/api-memory';
|
|
3
|
+
import { createStorageGateway, storage } from '@aalis/api-storage';
|
|
4
|
+
import { webuiServer } from '@aalis/api-webui';
|
|
5
|
+
import { config, definePlugin, defineService, events, lifecycle, logger, optional, provide, } from '@aalis/core';
|
|
2
6
|
import { CheckpointServiceImpl, resolveConfig } from './service.js';
|
|
3
7
|
// ════════════════════════════════════════════════════════════
|
|
4
8
|
// plugin-checkpoint — 文件操作快照与回滚
|
|
5
9
|
// ════════════════════════════════════════════════════════════
|
|
6
|
-
|
|
7
|
-
export const displayName = '回滚检查点';
|
|
8
|
-
export const subsystem = 'scheduler';
|
|
9
|
-
export const provides = ['checkpoint'];
|
|
10
|
-
/**
|
|
11
|
-
* storage 是硬依赖:本插件的快照/manifest 全部经 storage 落盘。
|
|
12
|
-
*
|
|
13
|
-
* 不声明的话 topoSortByDeps 只按 requiredDeps 建边、两者 inDegree 均为 0,拆卸序退化成
|
|
14
|
-
* 注册序的逆序——storage 可能先于 checkpoint 被 retire,于是 onDispose 里的 flushAll 调
|
|
15
|
-
* storage.writeFile 时 entry 已被摘除,在飞回合的 manifest 落不了盘。
|
|
16
|
-
*/
|
|
17
|
-
export const inject = {
|
|
18
|
-
required: ['storage'],
|
|
19
|
-
};
|
|
20
|
-
export const configSchema = {
|
|
10
|
+
const configSchema = {
|
|
21
11
|
rootDir: {
|
|
22
12
|
type: 'string',
|
|
23
13
|
label: '存储目录',
|
|
24
|
-
description: '存储 URI(默认 data:/checkpoints
|
|
14
|
+
description: '存储 URI(默认 data:/checkpoints)。所有 checkpoint blob 和 manifest 写入此位置。',
|
|
25
15
|
default: 'data:/checkpoints',
|
|
26
16
|
},
|
|
27
17
|
maxFileSize: {
|
|
@@ -50,112 +40,96 @@ export const configSchema = {
|
|
|
50
40
|
default: ['webui:*'],
|
|
51
41
|
},
|
|
52
42
|
};
|
|
53
|
-
//
|
|
54
|
-
export const
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
43
|
+
// ----- 服务描述符(按激活绑定;调用型:绑定接口是 ServiceRef)-----
|
|
44
|
+
export const checkpoint = defineService('checkpoint');
|
|
45
|
+
const uses = {
|
|
46
|
+
/**
|
|
47
|
+
* storage 是硬依赖:本插件的快照/manifest 全部经 storage 落盘。
|
|
48
|
+
*
|
|
49
|
+
* 声明成 required 同时决定关停次序:storage 排在本插件之后退场,onDispose 里的 flushAll 才写得动。
|
|
50
|
+
* 该保证只在 app.stop() 的整体拓扑逆序成立;单独禁用/热重载 storage 时 flushAll 会落空
|
|
51
|
+
* (回合 blob 在写点已落盘,丢的只是在飞回合的 manifest)。
|
|
52
|
+
*/
|
|
53
|
+
storage,
|
|
54
|
+
/** 只有「回滚整轮对话」用得到(抓消息时间戳、删消息);没有 memory 也能做纯文件回滚 */
|
|
55
|
+
memory: optional(memory),
|
|
56
|
+
/** 页面动作的登记口;无 WebUI 时本插件照常在后台记账 */
|
|
57
|
+
webui: optional(webuiServer),
|
|
58
|
+
events,
|
|
59
|
+
hooks,
|
|
60
|
+
lifecycle,
|
|
61
|
+
logger,
|
|
62
|
+
config,
|
|
63
|
+
provide,
|
|
64
|
+
};
|
|
65
|
+
export default definePlugin({
|
|
66
|
+
name: '@aalis/plugin-checkpoint',
|
|
67
|
+
displayName: '回滚检查点',
|
|
68
|
+
subsystem: 'scheduler',
|
|
69
|
+
configSchema,
|
|
70
|
+
provides: [checkpoint],
|
|
71
|
+
uses,
|
|
72
|
+
apply: run,
|
|
73
|
+
});
|
|
74
|
+
function run(caps) {
|
|
75
|
+
const { storage, memory, webui, events, hooks, lifecycle, provide } = caps;
|
|
76
|
+
/** 服务内部的 commitTurn / gc / flush 都写这个 source,日志页按 `…:checkpoint` 归组 */
|
|
77
|
+
const logger = caps.logger.child('checkpoint');
|
|
78
|
+
const cfg = resolveConfig(caps.config);
|
|
79
|
+
const gateway = createStorageGateway(storage);
|
|
80
|
+
const service = new CheckpointServiceImpl(cfg, logger, gateway);
|
|
81
|
+
provide(checkpoint, service);
|
|
82
|
+
// 注入 chat 回滚所需依赖:memory 引用(每次调用解析当前提供者)+ 事件发出器
|
|
83
|
+
service.setChatRollbackDeps({
|
|
84
|
+
memory,
|
|
85
|
+
emitMessagesDeleted: (sessionId, timestamps) => {
|
|
86
|
+
events
|
|
87
|
+
.emit('memory:messages-deleted', { sessionId, timestamps })
|
|
88
|
+
.catch(err => logger.debug(`emit memory:messages-deleted 失败: ${err.message}`));
|
|
89
|
+
},
|
|
90
|
+
emitHistoryChanged: sessionId => {
|
|
91
|
+
events
|
|
92
|
+
.emit('history:changed', { sessionId })
|
|
93
|
+
.catch(err => logger.debug(`emit history:changed 失败: ${err.message}`));
|
|
94
|
+
},
|
|
95
|
+
});
|
|
96
|
+
// ──────────── 页面动作(供 WebUI 调用)────────────
|
|
97
|
+
webui.registerAction('listTurns', async (args) => {
|
|
59
98
|
const sessionId = args.sessionId ?? '';
|
|
60
99
|
if (!sessionId)
|
|
61
100
|
return { error: '缺少 sessionId' };
|
|
62
|
-
return
|
|
63
|
-
}
|
|
64
|
-
async getManifest(
|
|
65
|
-
|
|
66
|
-
if (!svc)
|
|
67
|
-
return null;
|
|
68
|
-
const sessionId = args.sessionId;
|
|
69
|
-
const turnId = args.turnId;
|
|
70
|
-
return svc.getManifest(sessionId, turnId);
|
|
71
|
-
},
|
|
72
|
-
async rollback(ctx, args) {
|
|
73
|
-
const svc = ctx.getService('checkpoint');
|
|
74
|
-
if (!svc)
|
|
75
|
-
return { ok: false, errors: [{ uri: '', reason: 'checkpoint 服务未启用' }] };
|
|
101
|
+
return service.listTurns(sessionId);
|
|
102
|
+
});
|
|
103
|
+
webui.registerAction('getManifest', async (args) => service.getManifest(args.sessionId, args.turnId));
|
|
104
|
+
webui.registerAction('rollback', async (args) => {
|
|
76
105
|
const sessionId = args.sessionId;
|
|
77
106
|
const turnId = args.turnId;
|
|
78
107
|
if (!sessionId || !turnId)
|
|
79
108
|
return { ok: false, errors: [{ uri: '', reason: '缺少 sessionId 或 turnId' }] };
|
|
80
|
-
return
|
|
81
|
-
}
|
|
82
|
-
async
|
|
83
|
-
const svc = ctx.getService('checkpoint');
|
|
84
|
-
if (!svc)
|
|
85
|
-
return {
|
|
86
|
-
ok: false,
|
|
87
|
-
errors: [{ uri: '', reason: 'checkpoint 服务未启用' }],
|
|
88
|
-
deletedMessages: 0,
|
|
89
|
-
chatDeleted: false,
|
|
90
|
-
};
|
|
109
|
+
return service.rollback(sessionId, turnId);
|
|
110
|
+
});
|
|
111
|
+
webui.registerAction('rollbackWithChat', async (args) => {
|
|
91
112
|
const sessionId = args.sessionId;
|
|
92
113
|
const turnId = args.turnId;
|
|
93
|
-
if (!sessionId || !turnId)
|
|
114
|
+
if (!sessionId || !turnId) {
|
|
94
115
|
return {
|
|
95
116
|
ok: false,
|
|
96
117
|
errors: [{ uri: '', reason: '缺少 sessionId 或 turnId' }],
|
|
97
118
|
deletedMessages: 0,
|
|
98
119
|
chatDeleted: false,
|
|
99
120
|
};
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
};
|
|
103
|
-
// ──────────── 插件入口 ────────────
|
|
104
|
-
export async function apply(ctx, rawConfig) {
|
|
105
|
-
const config = resolveConfig(rawConfig);
|
|
106
|
-
const logger = ctx.logger.child('checkpoint');
|
|
107
|
-
const storage = createStorageGateway(ctx);
|
|
108
|
-
const service = new CheckpointServiceImpl(config, logger, storage);
|
|
109
|
-
ctx.provide('checkpoint', service);
|
|
110
|
-
// 注入回滚后端:通过 storage gateway helper 按 URI 路由到各 root
|
|
111
|
-
// 在 apply 阶段,storage 可能还没注册;gateway 本身是闭包,调用时才枚举 entry
|
|
112
|
-
service.setBackend(async (uri, data) => {
|
|
113
|
-
if (ctx.getAllServices('storage').length === 0)
|
|
114
|
-
throw new Error('storage 服务不可用');
|
|
115
|
-
await storage.writeFile(uri, data);
|
|
116
|
-
}, async (uri) => {
|
|
117
|
-
if (ctx.getAllServices('storage').length === 0)
|
|
118
|
-
throw new Error('storage 服务不可用');
|
|
119
|
-
await storage.delete(uri);
|
|
120
|
-
}, async (fromUri, toUri) => {
|
|
121
|
-
if (ctx.getAllServices('storage').length === 0)
|
|
122
|
-
throw new Error('storage 服务不可用');
|
|
123
|
-
if (!storage.move)
|
|
124
|
-
throw new Error('storage 不支持 move');
|
|
125
|
-
await storage.move(fromUri, toUri);
|
|
126
|
-
});
|
|
127
|
-
// 注入 chat 回滚所需依赖:memory + 事件发出器(懒解析 memory,但事件发出器立即可用)
|
|
128
|
-
const memoryProxy = new Proxy({}, {
|
|
129
|
-
get(_t, prop) {
|
|
130
|
-
const m = ctx.getService('memory');
|
|
131
|
-
if (!m)
|
|
132
|
-
return undefined;
|
|
133
|
-
const v = m[prop];
|
|
134
|
-
return typeof v === 'function' ? v.bind(m) : v;
|
|
135
|
-
},
|
|
136
|
-
});
|
|
137
|
-
service.setChatRollbackDeps({
|
|
138
|
-
memory: memoryProxy,
|
|
139
|
-
emitMessagesDeleted: (sessionId, timestamps) => {
|
|
140
|
-
ctx
|
|
141
|
-
.emit('memory:messages-deleted', { sessionId, timestamps })
|
|
142
|
-
.catch(err => logger.debug(`emit memory:messages-deleted 失败: ${err.message}`));
|
|
143
|
-
},
|
|
144
|
-
emitHistoryChanged: sessionId => {
|
|
145
|
-
ctx
|
|
146
|
-
.emit('history:changed', { sessionId })
|
|
147
|
-
.catch(err => logger.debug(`emit history:changed 失败: ${err.message}`));
|
|
148
|
-
},
|
|
121
|
+
}
|
|
122
|
+
return service.rollbackWithChat(sessionId, turnId);
|
|
149
123
|
});
|
|
150
124
|
// ──────────── 回合生命周期 ────────────
|
|
151
125
|
// agent:input:before:一次 LLM 回合开始(一个用户消息进来)
|
|
152
126
|
// 仅对配置 scopes 匹配的会话参与回合生命周期,避免 onebot 等聊天平台为每条消息都创建空 checkpoint。
|
|
153
127
|
const isScopeEnabled = (platform, sessionType) => {
|
|
154
|
-
if (
|
|
128
|
+
if (cfg.scopes.length === 0)
|
|
155
129
|
return false;
|
|
156
130
|
const p = platform ?? '';
|
|
157
131
|
const t = sessionType ?? '';
|
|
158
|
-
for (const raw of
|
|
132
|
+
for (const raw of cfg.scopes) {
|
|
159
133
|
const [sp = '*', st = '*'] = raw.includes(':') ? raw.split(':', 2) : [raw, '*'];
|
|
160
134
|
const platOk = sp === '*' || sp === '' || sp === p;
|
|
161
135
|
const typeOk = st === '*' || st === '' || st === t;
|
|
@@ -164,20 +138,20 @@ export async function apply(ctx, rawConfig) {
|
|
|
164
138
|
}
|
|
165
139
|
return false;
|
|
166
140
|
};
|
|
167
|
-
|
|
141
|
+
hooks.middleware('agent:input:before', async (data, next) => {
|
|
168
142
|
if (isScopeEnabled(data.message.platform, data.message.sessionType)) {
|
|
169
143
|
service.beginTurn(data.message.sessionId);
|
|
170
144
|
}
|
|
171
145
|
await next();
|
|
172
146
|
});
|
|
173
147
|
// agent:turn:after:回合结束(按 sessionId 提交该会话回合;无对应回合则直接 return)
|
|
174
|
-
|
|
148
|
+
hooks.middleware('agent:turn:after', async (data, next) => {
|
|
175
149
|
await next();
|
|
176
150
|
await service.endTurn(data.sessionId);
|
|
177
151
|
});
|
|
178
152
|
// 监听命令类工具调用,给该会话当前 turn 打 execUsed 标记(UI 显示 "部分未保护"):
|
|
179
153
|
// 这些工具的副作用(子进程改磁盘、装包、起服务)不经 storage,快照覆盖不到。
|
|
180
|
-
|
|
154
|
+
hooks.middleware('agent:tool:before', async (data, next) => {
|
|
181
155
|
const name = data.name;
|
|
182
156
|
if (name === 'exec' || name === 'exec_background' || name.startsWith('run_')) {
|
|
183
157
|
service.markExecUsed(data.toolCallContext.sessionId);
|
|
@@ -186,8 +160,8 @@ export async function apply(ctx, rawConfig) {
|
|
|
186
160
|
});
|
|
187
161
|
// ──────────── 参与统一的 memory:clear ────────────
|
|
188
162
|
// /clear 与 session-manager.deleteSession 都通过 memory:clear hook 编排,
|
|
189
|
-
//
|
|
190
|
-
|
|
163
|
+
// 不监听的话 checkpoint 目录无人清理,长期泄漏。
|
|
164
|
+
hooks.middleware('memory:clear', async (data, next) => {
|
|
191
165
|
if (data.types && !data.types.includes('checkpoint')) {
|
|
192
166
|
await next();
|
|
193
167
|
return;
|
|
@@ -217,7 +191,7 @@ export async function apply(ctx, rawConfig) {
|
|
|
217
191
|
await next();
|
|
218
192
|
});
|
|
219
193
|
// 进程退出前提交所有未结束的活跃回合,避免崩溃/重载时丢失(per-session 化后不再有"任意新回合 flush 旧回合"的兜底)
|
|
220
|
-
|
|
221
|
-
logger.info(`checkpoint 服务就绪 rootUri=${
|
|
194
|
+
lifecycle.onDispose(() => service.flushAll());
|
|
195
|
+
logger.info(`checkpoint 服务就绪 rootUri=${cfg.rootUri} maxFileSize=${cfg.maxFileSize} scopes=${cfg.scopes.join('|') || '<空>'}`);
|
|
222
196
|
}
|
|
223
197
|
//# 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":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/service.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { MemoryService } from '@aalis/api-memory';
|
|
2
2
|
import { type StorageService } from '@aalis/api-storage';
|
|
3
|
-
import type { Logger } from '@aalis/core';
|
|
3
|
+
import type { Logger, ServiceRef } from '@aalis/core';
|
|
4
4
|
/**
|
|
5
5
|
* Checkpoint 服务
|
|
6
6
|
*
|
|
@@ -9,8 +9,8 @@ import type { Logger } from '@aalis/core';
|
|
|
9
9
|
* 在改动发生前自动备份原始文件内容,使用户可以从 WebUI 一键回滚整轮操作。
|
|
10
10
|
*
|
|
11
11
|
* 协作模型:
|
|
12
|
-
* - plugin-storage-local 在执行 writeFile/delete/rename
|
|
13
|
-
* `
|
|
12
|
+
* - plugin-storage-local 在执行 writeFile/delete/rename 之前先探测 checkpoint 服务,
|
|
13
|
+
* 在场就调它的 `beforeMutate(...)` 留一次快照机会。
|
|
14
14
|
* - 本服务通过 hooks `agent:input:before` / `agent:turn:after` 维护「当前回合」状态。
|
|
15
15
|
* - exec / exec_background / run_* 等命令类工具直接调用系统命令,不在本服务保护范围内
|
|
16
16
|
* (前端 UI 标注「未保护」)。
|
|
@@ -47,7 +47,7 @@ export interface CheckpointFileRecord {
|
|
|
47
47
|
uri: string;
|
|
48
48
|
/** write=覆盖已有, write-new=新创建, delete=删除, rename=重命名 */
|
|
49
49
|
action: 'write' | 'write-new' | 'delete' | 'rename';
|
|
50
|
-
/** rename 的目标 URI
|
|
50
|
+
/** rename 的目标 URI(回滚时原路移回;调用方未传 toUri 时缺省) */
|
|
51
51
|
toUri?: string;
|
|
52
52
|
/** 原始大小(如果有快照) */
|
|
53
53
|
originalSize?: number;
|
|
@@ -111,8 +111,10 @@ export declare class CheckpointServiceImpl implements CheckpointService {
|
|
|
111
111
|
private turns;
|
|
112
112
|
/** 回滚正在处理的 URI:回滚自身的写/删/移经 storage 写前钩子回到 beforeMutate,不得记进任何活跃回合 */
|
|
113
113
|
private readonly rollingBack;
|
|
114
|
+
/** 读失败的告警记录:位置(会话目录或 manifest URI)→ 已告警过的原因 */
|
|
115
|
+
private readonly readFailures;
|
|
114
116
|
constructor(cfg: ServiceConfig, logger: Logger, storage: StorageService);
|
|
115
|
-
beginTurn(sessionId: string):
|
|
117
|
+
beginTurn(sessionId: string): void;
|
|
116
118
|
endTurn(sessionId: string): Promise<void>;
|
|
117
119
|
/** 进程退出前提交所有活跃回合,避免未结束回合丢失。 */
|
|
118
120
|
flushAll(): Promise<void>;
|
|
@@ -127,17 +129,18 @@ export declare class CheckpointServiceImpl implements CheckpointService {
|
|
|
127
129
|
} | null>, toUri?: string): Promise<void>;
|
|
128
130
|
listTurns(sessionId: string): Promise<TurnSummary[]>;
|
|
129
131
|
getManifest(sessionId: string, turnId: string): Promise<TurnManifest | null>;
|
|
132
|
+
/**
|
|
133
|
+
* 读失败留痕:「不存在」不算失败;其它原因告警,但同一位置同一原因只记一次——WebUI 每次消息变化都会列回合,
|
|
134
|
+
* storage 不在线或 manifest 损坏时不能每条消息记一条。读通(或确认不存在)即清掉记录,之后再失败会再记。
|
|
135
|
+
*/
|
|
136
|
+
private readFailed;
|
|
130
137
|
rollback(sessionId: string, turnId: string): Promise<RollbackResult>;
|
|
131
|
-
private _backendWrite?;
|
|
132
|
-
private _backendDelete?;
|
|
133
|
-
private _backendMove?;
|
|
134
138
|
private _memory?;
|
|
135
139
|
private _emitMessagesDeleted?;
|
|
136
140
|
private _emitHistoryChanged?;
|
|
137
|
-
|
|
138
|
-
/** 注入聊天回滚所需的依赖:memory 服务 + 事件发出器 */
|
|
141
|
+
/** 注入聊天回滚所需的依赖:memory 引用(每次用时解析当前提供者)+ 事件发出器 */
|
|
139
142
|
setChatRollbackDeps(deps: {
|
|
140
|
-
memory: MemoryService
|
|
143
|
+
memory: ServiceRef<MemoryService>;
|
|
141
144
|
emitMessagesDeleted: (sessionId: string, timestamps: number[]) => void;
|
|
142
145
|
emitHistoryChanged: (sessionId: string) => void;
|
|
143
146
|
}): void;
|
package/dist/service.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../src/service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,
|
|
1
|
+
{"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../src/service.ts"],"names":[],"mappings":"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"}
|
package/dist/service.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { isStorageNotFound, isStorageUri } from '@aalis/api-storage';
|
|
2
2
|
/** 不记账的根类型:多会话/多平台共享写入区(data、pluginData、logs)与回合结束前就清掉的临时目录(tmp)。 */
|
|
3
3
|
const UNPROTECTED_ROOT_KINDS = new Set(['data', 'tmp', 'pluginData', 'logs']);
|
|
4
4
|
/**
|
|
@@ -15,6 +15,8 @@ export class CheckpointServiceImpl {
|
|
|
15
15
|
turns = new Map();
|
|
16
16
|
/** 回滚正在处理的 URI:回滚自身的写/删/移经 storage 写前钩子回到 beforeMutate,不得记进任何活跃回合 */
|
|
17
17
|
rollingBack = new Set();
|
|
18
|
+
/** 读失败的告警记录:位置(会话目录或 manifest URI)→ 已告警过的原因 */
|
|
19
|
+
readFailures = new Map();
|
|
18
20
|
constructor(cfg, logger, storage) {
|
|
19
21
|
this.cfg = cfg;
|
|
20
22
|
this.logger = logger;
|
|
@@ -35,7 +37,6 @@ export class CheckpointServiceImpl {
|
|
|
35
37
|
blobIndex: 0,
|
|
36
38
|
});
|
|
37
39
|
this.logger.debug(`checkpoint 回合开始 ${sessionId} turn=${turnId}`);
|
|
38
|
-
return turnId;
|
|
39
40
|
}
|
|
40
41
|
async endTurn(sessionId) {
|
|
41
42
|
const turn = this.turns.get(sessionId);
|
|
@@ -57,10 +58,11 @@ export class CheckpointServiceImpl {
|
|
|
57
58
|
const m = turn.manifest;
|
|
58
59
|
m.endedAt = Date.now();
|
|
59
60
|
// 在持久化前抓取本轮对话的消息时间戳(供 rollbackWithChat 使用);即使无文件改动,只要有消息就持久化
|
|
60
|
-
|
|
61
|
+
const memory = this._memory?.current;
|
|
62
|
+
if (memory && typeof memory.getMessagesBySessionRange === 'function') {
|
|
61
63
|
try {
|
|
62
64
|
// 宽松边界 200ms,用于容纳 archiveIncoming/saveMessage 时钟偏差
|
|
63
|
-
const msgs = await
|
|
65
|
+
const msgs = await memory.getMessagesBySessionRange(m.sessionId, m.startedAt - 200, m.endedAt + 200);
|
|
64
66
|
m.messageTimestamps = msgs.map(msg => msg.timestamp).filter((t) => typeof t === 'number');
|
|
65
67
|
}
|
|
66
68
|
catch (err) {
|
|
@@ -151,7 +153,7 @@ export class CheckpointServiceImpl {
|
|
|
151
153
|
if (original.size > this.cfg.maxFileSize) {
|
|
152
154
|
t.manifest.files.push({
|
|
153
155
|
uri,
|
|
154
|
-
action: op
|
|
156
|
+
action: op,
|
|
155
157
|
toUri,
|
|
156
158
|
originalSize: original.size,
|
|
157
159
|
skipped: `文件过大 (${original.size} > ${this.cfg.maxFileSize})`,
|
|
@@ -164,7 +166,7 @@ export class CheckpointServiceImpl {
|
|
|
164
166
|
await this.storage.writeFile(joinUri(turnDir, `blobs/${blobName}`), original.data);
|
|
165
167
|
t.manifest.files.push({
|
|
166
168
|
uri,
|
|
167
|
-
action: op
|
|
169
|
+
action: op,
|
|
168
170
|
toUri,
|
|
169
171
|
originalSize: original.size,
|
|
170
172
|
blob: blobName,
|
|
@@ -179,9 +181,12 @@ export class CheckpointServiceImpl {
|
|
|
179
181
|
const listed = await this.storage.list(sessionDir);
|
|
180
182
|
entries = listed.entries.filter(e => e.isDirectory).map(e => e.name);
|
|
181
183
|
}
|
|
182
|
-
catch {
|
|
184
|
+
catch (err) {
|
|
185
|
+
// 目录不存在即该会话还没有检查点;其它失败(storage 不在线、权限被拒)要留痕,不能静默成空列表
|
|
186
|
+
this.readFailed(sessionDir, '列出回合失败', err);
|
|
183
187
|
return [];
|
|
184
188
|
}
|
|
189
|
+
this.readFailures.delete(sessionDir);
|
|
185
190
|
const summaries = [];
|
|
186
191
|
for (const turnId of entries) {
|
|
187
192
|
const manifest = await this.getManifest(sessionId, turnId);
|
|
@@ -205,28 +210,37 @@ export class CheckpointServiceImpl {
|
|
|
205
210
|
try {
|
|
206
211
|
const raw = await this.storage.readFile(uri, 'utf-8');
|
|
207
212
|
const manifest = JSON.parse(String(raw));
|
|
208
|
-
|
|
209
|
-
// 更不能让回滚去删自己的备份 —— 在唯一的读入口就滤掉,下游(listTurns / rollback)不必各自设防。
|
|
210
|
-
// 不记账的根(data / tmp 等,见 beforeMutate)在升级前写下的条目同样滤掉:否则老回合的回滚照样删别处落盘的文件。
|
|
211
|
-
manifest.files = (manifest.files ?? []).filter(f => !this.isOwnUri(f.uri) && !this.isUnprotectedRootUri(f.uri));
|
|
213
|
+
this.readFailures.delete(uri);
|
|
212
214
|
return manifest;
|
|
213
215
|
}
|
|
214
|
-
catch {
|
|
216
|
+
catch (err) {
|
|
217
|
+
// 不向上抛:listTurns 逐个读,一个坏 manifest 不能拖垮整张列表。读失败与损坏要留痕
|
|
218
|
+
this.readFailed(uri, '读取 manifest 失败', err);
|
|
215
219
|
return null;
|
|
216
220
|
}
|
|
217
221
|
}
|
|
222
|
+
/**
|
|
223
|
+
* 读失败留痕:「不存在」不算失败;其它原因告警,但同一位置同一原因只记一次——WebUI 每次消息变化都会列回合,
|
|
224
|
+
* storage 不在线或 manifest 损坏时不能每条消息记一条。读通(或确认不存在)即清掉记录,之后再失败会再记。
|
|
225
|
+
*/
|
|
226
|
+
readFailed(location, what, err) {
|
|
227
|
+
if (isStorageNotFound(err)) {
|
|
228
|
+
this.readFailures.delete(location);
|
|
229
|
+
return;
|
|
230
|
+
}
|
|
231
|
+
const reason = err instanceof Error ? err.message : String(err);
|
|
232
|
+
if (this.readFailures.get(location) === reason)
|
|
233
|
+
return;
|
|
234
|
+
this.readFailures.set(location, reason);
|
|
235
|
+
this.logger.warn(`checkpoint ${what} ${location}: ${reason}`);
|
|
236
|
+
}
|
|
218
237
|
// ──────────── 回滚 ────────────
|
|
219
238
|
async rollback(sessionId, turnId) {
|
|
220
239
|
const manifest = await this.getManifest(sessionId, turnId);
|
|
221
240
|
if (!manifest) {
|
|
222
241
|
return { ok: false, restored: [], deleted: [], errors: [{ uri: '', reason: 'checkpoint 不存在' }] };
|
|
223
242
|
}
|
|
224
|
-
// 通过 storage service 来执行回滚操作,避免直接绕过权限
|
|
225
|
-
// 此处通过模块外部注入 writeBack/deleteBack 函数
|
|
226
243
|
const result = { ok: true, restored: [], deleted: [], errors: [] };
|
|
227
|
-
if (!this._backendWrite || !this._backendDelete) {
|
|
228
|
-
return { ok: false, restored: [], deleted: [], errors: [{ uri: '', reason: '回滚后端未注入' }] };
|
|
229
|
-
}
|
|
230
244
|
const turnDir = this.turnDir(sessionId, turnId);
|
|
231
245
|
// 逆序撤销(LIFO):同回合内后发生的改动先回退,否则先前条目的复原会被后来条目再次覆盖。
|
|
232
246
|
// 例:`move a.txt -> b.txt` 后又改写 b.txt,正序回滚先把 b 移回 a,再把 b 的快照写回,
|
|
@@ -240,38 +254,36 @@ export class CheckpointServiceImpl {
|
|
|
240
254
|
// 新创建的文件 → 删除。已不存在即期望状态已达成(本回合新建后又删掉:delete 条目被按 URI
|
|
241
255
|
// 去重吞掉,只剩这条 write-new),不算失败。
|
|
242
256
|
try {
|
|
243
|
-
await this.
|
|
257
|
+
await this.storage.delete(file.uri);
|
|
244
258
|
result.deleted.push(file.uri);
|
|
245
259
|
}
|
|
246
260
|
catch (delErr) {
|
|
247
|
-
if (!
|
|
261
|
+
if (!isStorageNotFound(delErr))
|
|
248
262
|
throw delErr;
|
|
249
263
|
}
|
|
250
264
|
}
|
|
251
265
|
else if (file.action === 'rename' && file.toUri) {
|
|
252
266
|
// 改名/移动 → 优先原路移回:目录与超限大文件也能复原,且不会在目标端留一份重复。
|
|
253
|
-
//
|
|
267
|
+
// 移不动(目标已被占、后端 move 失败等)才回落到「写回源端 + 删目标」。
|
|
254
268
|
try {
|
|
255
|
-
|
|
256
|
-
throw new Error('回滚 move 后端未注入');
|
|
257
|
-
await this._backendMove(file.toUri, file.uri);
|
|
269
|
+
await this.storage.move(file.toUri, file.uri);
|
|
258
270
|
result.restored.push(file.uri);
|
|
259
271
|
}
|
|
260
272
|
catch (moveErr) {
|
|
261
273
|
if (!file.blob)
|
|
262
274
|
throw moveErr;
|
|
263
275
|
const data = await this.storage.readFile(joinUri(turnDir, `blobs/${file.blob}`));
|
|
264
|
-
await this.
|
|
276
|
+
await this.storage.writeFile(file.uri, Buffer.from(data));
|
|
265
277
|
result.restored.push(file.uri);
|
|
266
278
|
// 源端复原即算成功;删目标是善后动作,单独 try:目标已不在(ENOENT——重复回滚、
|
|
267
279
|
// 别处已清)就是期望状态,才忽略;其它失败(权限被拒等)如实入 errors,也不谎报 deleted。
|
|
268
280
|
try {
|
|
269
|
-
await this.
|
|
281
|
+
await this.storage.delete(file.toUri);
|
|
270
282
|
result.deleted.push(file.toUri);
|
|
271
283
|
}
|
|
272
284
|
catch (delErr) {
|
|
273
285
|
const reason = delErr.message ?? String(delErr);
|
|
274
|
-
if (
|
|
286
|
+
if (isStorageNotFound(delErr)) {
|
|
275
287
|
this.logger.debug(`回滚善后:目标 ${file.toUri} 已不在,跳过删除: ${reason}`);
|
|
276
288
|
}
|
|
277
289
|
else {
|
|
@@ -286,7 +298,7 @@ export class CheckpointServiceImpl {
|
|
|
286
298
|
}
|
|
287
299
|
else if (file.blob) {
|
|
288
300
|
const data = await this.storage.readFile(joinUri(turnDir, `blobs/${file.blob}`));
|
|
289
|
-
await this.
|
|
301
|
+
await this.storage.writeFile(file.uri, Buffer.from(data));
|
|
290
302
|
result.restored.push(file.uri);
|
|
291
303
|
}
|
|
292
304
|
}
|
|
@@ -303,19 +315,11 @@ export class CheckpointServiceImpl {
|
|
|
303
315
|
result.ok = false;
|
|
304
316
|
return result;
|
|
305
317
|
}
|
|
306
|
-
// ────────────
|
|
307
|
-
_backendWrite;
|
|
308
|
-
_backendDelete;
|
|
309
|
-
_backendMove;
|
|
318
|
+
// ──────────── 聊天回滚依赖注入 ────────────
|
|
310
319
|
_memory;
|
|
311
320
|
_emitMessagesDeleted;
|
|
312
321
|
_emitHistoryChanged;
|
|
313
|
-
|
|
314
|
-
this._backendWrite = write;
|
|
315
|
-
this._backendDelete = del;
|
|
316
|
-
this._backendMove = move;
|
|
317
|
-
}
|
|
318
|
-
/** 注入聊天回滚所需的依赖:memory 服务 + 事件发出器 */
|
|
322
|
+
/** 注入聊天回滚所需的依赖:memory 引用(每次用时解析当前提供者)+ 事件发出器 */
|
|
319
323
|
setChatRollbackDeps(deps) {
|
|
320
324
|
this._memory = deps.memory;
|
|
321
325
|
this._emitMessagesDeleted = deps.emitMessagesDeleted;
|
|
@@ -346,13 +350,14 @@ export class CheckpointServiceImpl {
|
|
|
346
350
|
result.chatDeleted = true;
|
|
347
351
|
return result;
|
|
348
352
|
}
|
|
349
|
-
|
|
353
|
+
const memory = this._memory?.current;
|
|
354
|
+
if (!memory || typeof memory.deleteMessagesByTimestamps !== 'function') {
|
|
350
355
|
result.errors.push({ uri: '', reason: '当前 memory 后端不支持 deleteMessagesByTimestamps' });
|
|
351
356
|
result.ok = false;
|
|
352
357
|
return result;
|
|
353
358
|
}
|
|
354
359
|
try {
|
|
355
|
-
result.deletedMessages = await
|
|
360
|
+
result.deletedMessages = await memory.deleteMessagesByTimestamps(sessionId, timestamps);
|
|
356
361
|
result.chatDeleted = true;
|
|
357
362
|
}
|
|
358
363
|
catch (err) {
|
|
@@ -478,11 +483,6 @@ export class CheckpointServiceImpl {
|
|
|
478
483
|
}
|
|
479
484
|
}
|
|
480
485
|
}
|
|
481
|
-
/** 「文件/目录已不存在」判据:优先看 errno code,再退回错误文案(storage 后端不保证带 code)。 */
|
|
482
|
-
function isNotFoundError(err) {
|
|
483
|
-
const e = err;
|
|
484
|
-
return e?.code === 'ENOENT' || /ENOENT|不存在|not found/i.test(e?.message ?? String(err));
|
|
485
|
-
}
|
|
486
486
|
function joinUri(base, rel) {
|
|
487
487
|
const b = base.endsWith('/') ? base : `${base}/`;
|
|
488
488
|
return `${b}${rel.replace(/^\/+/, '')}`;
|
|
@@ -492,7 +492,6 @@ function encodeSegment(s) {
|
|
|
492
492
|
return s.replace(/[^A-Za-z0-9._-]/g, c => `_${c.charCodeAt(0).toString(16)}`);
|
|
493
493
|
}
|
|
494
494
|
export function resolveConfig(raw) {
|
|
495
|
-
const rootInput = typeof raw.rootDir === 'string' ? raw.rootDir : 'data:/checkpoints';
|
|
496
495
|
const rawScopes = raw.scopes;
|
|
497
496
|
const scopes = Array.isArray(rawScopes)
|
|
498
497
|
? rawScopes.filter((x) => typeof x === 'string' && x.length > 0)
|
|
@@ -503,14 +502,20 @@ export function resolveConfig(raw) {
|
|
|
503
502
|
.filter(Boolean)
|
|
504
503
|
: ['webui:*'];
|
|
505
504
|
return {
|
|
506
|
-
rootUri:
|
|
505
|
+
rootUri: resolveRootUri(raw.rootDir),
|
|
507
506
|
maxFileSize: typeof raw.maxFileSize === 'number' ? Math.max(1024, raw.maxFileSize) : 10 * 1024 * 1024,
|
|
508
507
|
keepSessions: typeof raw.keepSessions === 'number' ? Math.max(0, Math.floor(raw.keepSessions)) : 20,
|
|
509
508
|
scopes,
|
|
510
509
|
};
|
|
511
510
|
}
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
|
|
511
|
+
/** rootDir 只接受 storage URI;未设、留空或非字符串用默认值,其它写法(如相对路径 data/checkpoints)拒绝激活。 */
|
|
512
|
+
function resolveRootUri(input) {
|
|
513
|
+
const s = typeof input === 'string' ? input.trim() : '';
|
|
514
|
+
if (!s)
|
|
515
|
+
return 'data:/checkpoints';
|
|
516
|
+
if (!isStorageUri(s)) {
|
|
517
|
+
throw new Error(`plugin-checkpoint 配置错误: rootDir="${s}" 不是 storage URI,请写成 <根名>:/<路径>(如 data:/checkpoints),或删掉该键使用默认值`);
|
|
518
|
+
}
|
|
519
|
+
return s;
|
|
515
520
|
}
|
|
516
521
|
//# sourceMappingURL=service.js.map
|
package/dist/service.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"service.js","sourceRoot":"","sources":["../src/service.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"service.js","sourceRoot":"","sources":["../src/service.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aalis/plugin-checkpoint",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.13.0",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -24,25 +24,36 @@
|
|
|
24
24
|
"dist"
|
|
25
25
|
],
|
|
26
26
|
"dependencies": {
|
|
27
|
-
"@aalis/schema-config": ">=0.
|
|
28
|
-
"@aalis/api-memory": ">=0.
|
|
29
|
-
"@aalis/api-storage": ">=0.
|
|
27
|
+
"@aalis/schema-config": ">=0.13.0 <1.0.0",
|
|
28
|
+
"@aalis/api-memory": ">=0.7.0 <1.0.0",
|
|
29
|
+
"@aalis/api-storage": ">=0.7.0 <1.0.0",
|
|
30
|
+
"@aalis/api-webui": ">=0.11.0 <1.0.0",
|
|
31
|
+
"@aalis/api-hooks": ">=0.1.0 <1.0.0"
|
|
30
32
|
},
|
|
31
33
|
"devDependencies": {
|
|
32
34
|
"@types/node": "^22.0.0",
|
|
33
35
|
"typescript": "^5.7.0",
|
|
34
|
-
"@aalis/core": "0.
|
|
35
|
-
"@aalis/api-agent": "0.
|
|
36
|
-
"@aalis/api-webui": "0.9.2"
|
|
36
|
+
"@aalis/core": "0.18.0",
|
|
37
|
+
"@aalis/api-agent": "0.9.0"
|
|
37
38
|
},
|
|
38
39
|
"peerDependencies": {
|
|
39
|
-
"@aalis/core": ">=0.
|
|
40
|
+
"@aalis/core": ">=0.18.0 <1.0.0"
|
|
40
41
|
},
|
|
41
42
|
"aalis": {
|
|
42
43
|
"service": {
|
|
43
44
|
"required": [
|
|
45
|
+
"config",
|
|
46
|
+
"events",
|
|
47
|
+
"hooks",
|
|
48
|
+
"lifecycle",
|
|
49
|
+
"logger",
|
|
50
|
+
"provide",
|
|
44
51
|
"storage"
|
|
45
52
|
],
|
|
53
|
+
"optional": [
|
|
54
|
+
"memory",
|
|
55
|
+
"webui-server"
|
|
56
|
+
],
|
|
46
57
|
"provides": [
|
|
47
58
|
"checkpoint"
|
|
48
59
|
]
|