@aalis/plugin-checkpoint 0.14.0 → 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/dist/service.js CHANGED
@@ -1,21 +1,52 @@
1
+ import { AsyncLocalStorage } from 'node:async_hooks';
1
2
  import { isStorageNotFound, isStorageUri } from '@aalis/api-storage';
3
+ import { configError } from '@aalis/schema-config';
4
+ import { textOf, toSource } from '@aalis/schema-i18n';
5
+ import { WellKnownMetadataKeys } from '@aalis/schema-message';
2
6
  import { configSchema } from './config.js';
3
- /** 不记账的根类型:多会话/多平台共享写入区(data、pluginData、logs)与回合结束前就清掉的临时目录(tmp)。 */
4
- const UNPROTECTED_ROOT_KINDS = new Set(['data', 'tmp', 'pluginData', 'logs']);
7
+ import { t } from './texts.js';
5
8
  /**
6
- * 实现
9
+ * 不记账的根类型:多会话/多平台共享写入区(data、pluginData、logs)、回合结束前就清掉的临时目录与缓存(tmp、cache),
10
+ * 白纸根(paper:枢纽在任意会话的回合进行中写入远端成品,记进那一轮的话回滚会删掉无关的成品),
11
+ * 公开根(public:发布服务在审核结束、裁决与撤下时写删已发布的作品,同样不属于当时进行中的回合),
12
+ * 以及 self 下的人设卡、技能、编排定义根(self):现在任何会话都能经工具写技能、人设,写入没有会话归属,
13
+ * 与 data 同理不记账;等访问层限定只有 owner 的干净线程能写 self 之后,再按计划书给它记账。
14
+ */
15
+ const UNPROTECTED_ROOT_KINDS = new Set([
16
+ 'data',
17
+ 'tmp',
18
+ 'cache',
19
+ 'pluginData',
20
+ 'logs',
21
+ 'paper',
22
+ 'public',
23
+ 'self',
24
+ ]);
25
+ /**
26
+ * Checkpoint 服务实现
27
+ *
28
+ * 在一轮对话期间记录受控存储中的写入/删除/重命名操作(data / tmp / cache / pluginData /
29
+ * logs / paper / public / self 这几类共享根、临时根、白纸根、公开根与 self 根除外,见 beforeMutate),
30
+ * 在改动发生前自动备份原始文件内容,使用户可以一键回滚整轮操作。
31
+ *
32
+ * 协作模型:
33
+ * - plugin-storage-local 在执行 writeFile/delete/rename 之前先探测 checkpoint 服务,
34
+ * 在场就调它的 `beforeMutate(...)` 留一次快照机会。
35
+ * - 本插件在 `agent:turn:before` 里用 agent 给的 turnId 把这一轮包进 `runTurn`:回合的异步上下文里发生的改动
36
+ * 记进这一轮,回合跑完(含被下游拦下、出错)即提交。
37
+ * - 命令与外部工具的副作用不经存储,不在本服务保护范围内(回滚对话框写明)。
7
38
  */
8
39
  export class CheckpointServiceImpl {
9
40
  cfg;
10
41
  logger;
11
42
  storage;
12
43
  /**
13
- * 每会话独立的活跃回合(跨会话并发互不串台)。
14
- * 每项含:清单 + 本回合已快照 uri 集合(去重) + blob 文件计数器。
44
+ * 进行中的回合,按 turnId 记。几轮可以同时在跑(不同会话的回合并发),
45
+ * 改动按写入时所在的异步上下文归属到其中一轮,见 {@link scope}。
15
46
  */
16
47
  turns = new Map();
17
- /** 回滚正在处理的 URI:回滚自身的写/删/移经 storage 写前钩子回到 beforeMutate,不得记进任何活跃回合 */
18
- rollingBack = new Set();
48
+ /** 回合的异步上下文:runTurn 里跑的一切(钩子、工具、它们触发的存储写入)都带着这一轮 */
49
+ scope = new AsyncLocalStorage();
19
50
  /** 读失败的告警记录:位置(会话目录或 manifest URI)→ 已告警过的原因 */
20
51
  readFailures = new Map();
21
52
  constructor(cfg, logger, storage) {
@@ -24,27 +55,29 @@ export class CheckpointServiceImpl {
24
55
  this.storage = storage;
25
56
  }
26
57
  // ──────────── 生命周期 ────────────
27
- beginTurn(sessionId) {
28
- // 同会话已有未结束回合(异常未 endTurn / abort 重开)→ 先提交它避免遗失(仅影响本会话,不碰其它)
29
- const prev = this.turns.get(sessionId);
30
- if (prev) {
31
- this.turns.delete(sessionId);
32
- this.commitTurn(prev).catch(err => this.logger.warn(`finalize 旧回合失败: ${err.message}`));
33
- }
34
- const turnId = crypto.randomUUID();
35
- this.turns.set(sessionId, {
58
+ /**
59
+ * 在一轮里跑 fn:fn 的异步上下文里发生的存储改动记进这一轮,fn 结束(含抛错)即提交。
60
+ * 开始与结束在同一次调用里配对,同一会话并发的几轮互不结束对方。提交失败只告警:回复已经发出,
61
+ * 这一轮只是不能回滚。
62
+ */
63
+ async runTurn(turnId, sessionId, fn) {
64
+ const turn = {
36
65
  manifest: { turnId, sessionId, startedAt: Date.now(), files: [] },
37
66
  snapshotted: new Set(),
38
67
  blobIndex: 0,
39
- });
68
+ };
69
+ this.turns.set(turnId, turn);
40
70
  this.logger.debug(`checkpoint 回合开始 ${sessionId} turn=${turnId}`);
41
- }
42
- async endTurn(sessionId) {
43
- const turn = this.turns.get(sessionId);
44
- if (!turn)
45
- return;
46
- this.turns.delete(sessionId);
47
- await this.commitTurn(turn);
71
+ try {
72
+ return await this.scope.run(turn, fn);
73
+ }
74
+ finally {
75
+ // flushAll 可能已经提交过它(拆卸时回合还在跑)
76
+ if (this.turns.get(turnId) === turn) {
77
+ this.turns.delete(turnId);
78
+ await this.commitTurn(turn).catch(err => this.logger.warn(`checkpoint 提交回合失败: ${err.message}`));
79
+ }
80
+ }
48
81
  }
49
82
  /** 进程退出前提交所有活跃回合,避免未结束回合丢失。 */
50
83
  async flushAll() {
@@ -54,17 +87,22 @@ export class CheckpointServiceImpl {
54
87
  await this.commitTurn(turn).catch(err => this.logger.warn(`flush 回合失败: ${err.message}`));
55
88
  }
56
89
  }
57
- /** 提交一个回合:补 endedAt + 抓消息时间戳 + 落盘 manifest + 触发 GC。无改动则跳过。 */
90
+ /**
91
+ * 提交一个回合:补 endedAt + 抓消息时间戳 + 落盘 manifest + 触发 GC。无改动则跳过。
92
+ * 消息只记时间窗里属于这一轮的:元数据的回合 id 是这一轮的(输入、工具调用组、回复、带回合 id 的出站记录与投递失败记录,
93
+ * 经工具发出的也带它)。同一时间窗里别的来源的输入与别的回合的产出不记,回滚时不连带删掉
94
+ */
58
95
  async commitTurn(turn) {
59
96
  const m = turn.manifest;
60
97
  m.endedAt = Date.now();
61
98
  // 在持久化前抓取本轮对话的消息时间戳(供 rollbackWithChat 使用);即使无文件改动,只要有消息就持久化
62
- const memory = this._memory?.current;
99
+ const memory = this._memory?.present ? this._memory.use : undefined;
63
100
  if (memory && typeof memory.getMessagesBySessionRange === 'function') {
64
101
  try {
65
102
  // 宽松边界 200ms,用于容纳 archiveIncoming/saveMessage 时钟偏差
66
103
  const msgs = await memory.getMessagesBySessionRange(m.sessionId, m.startedAt - 200, m.endedAt + 200);
67
- m.messageTimestamps = msgs.map(msg => msg.timestamp).filter((t) => typeof t === 'number');
104
+ const ours = msgs.filter(({ metadata }) => metadata?.[WellKnownMetadataKeys.TurnId] === m.turnId);
105
+ m.messageTimestamps = ours.map(msg => msg.timestamp).filter((t) => typeof t === 'number');
68
106
  }
69
107
  catch (err) {
70
108
  this.logger.warn(`抓取本轮消息时间戳失败: ${err.message}`);
@@ -77,47 +115,39 @@ export class CheckpointServiceImpl {
77
115
  const turnDir = this.turnDir(m.sessionId, m.turnId);
78
116
  await this.storage.writeFile(joinUri(turnDir, 'manifest.json'), JSON.stringify(m, null, 2));
79
117
  this.logger.info(`checkpoint 回合提交 turn=${m.turnId} 文件数=${m.files.length}`);
80
- this.gc().catch(err => this.logger.warn(`checkpoint GC 失败: ${err.message}`));
81
- }
82
- /** 标记某会话当前回合调用过 exec / exec_background / run_* 等命令类工具,UI 端会提示「部分未保护」 */
83
- markExecUsed(sessionId) {
84
- const turn = this.turns.get(sessionId);
85
- if (turn)
86
- turn.manifest.execUsed = true;
118
+ this.gc(m.sessionId).catch(err => this.logger.warn(`checkpoint GC 失败: ${err.message}`));
87
119
  }
88
120
  // ──────────── beforeMutate ────────────
89
- isActive() {
90
- return this.turns.size > 0;
91
- }
92
121
  async beforeMutate(uri, op, loadOriginal, toUri) {
122
+ // 只记进写入所在的那一轮:异步上下文带着的回合还没结束才算。回合外的改动(WebUI 发起的回滚、别的插件在后台的写入)
123
+ // 不属于任何一轮;回合里起的异步任务在回合提交之后才写入的仍带着这一轮的上下文,改动也已不属于任何一轮。存储每次写入
124
+ // 都会调到这里,这些写入先在这一步返回
125
+ const turn = this.scope.getStore();
126
+ if (!turn || this.turns.get(turn.manifest.turnId) !== turn)
127
+ return;
93
128
  // 自身根下的写入(blob / manifest)不快照:storage 的写前钩子会把它们递归送回这里,
94
129
  // 而 blob 此刻在磁盘上尚不存在 → 会给自己记一条 write-new 假账,且排在真实条目之前,
95
130
  // 回滚时先删备份再读同一 blob → ENOENT,覆盖/删除类恢复必败。
96
131
  if (this.isOwnUri(uri))
97
132
  return;
98
133
  // data / pluginData / logs 是多会话、多平台共享的写入区:既有别处落盘的附件与插件状态,也有本回合自己
99
- // 经工具产生的 skill / persona / 图片,storage 写入没有会话归属、无法分辨——记进本回合,回滚就会误删
100
- // 别人刚落盘的文件、把插件状态写回旧版,故整根不记账(这些改动不可回滚);tmp 是回合结束前就清掉的
101
- // 临时目录,记账只会让回滚必报 ENOENT。其余根(workspace 与用户自建的 custom 等)照常记账。
134
+ // 经工具产生的图片,回滚这些会误删别人刚落盘的文件、把插件状态写回旧版,故整根不记账(这些改动不可回滚);
135
+ // self 根(skill / persona / 编排定义)现在任何会话都能写,同理不记账;
136
+ // tmp、cache 是回合结束前就清掉的临时目录与缓存,记账只会让回滚必报 ENOENT;paper 是白纸根,枢纽在任意会话的回合进行中写入远端成品,
137
+ // public 是公开根,发布服务在审核结束、裁决与撤下时写删已发布的作品,这些写入都不属于那一轮。
138
+ // 其余根(workspace 与用户自建的 custom 等)照常记账。
102
139
  if (this.isUnprotectedRootUri(uri))
103
140
  return;
104
- // 回滚自身的改动不是任何回合的改动:记进其它会话的活跃回合,那边一回滚就把这次回滚再撤掉
105
- if (this.rollingBack.has(uri))
106
- return;
107
141
  // 去重按 uri,但 rename 不能因此被吞掉:同一回合里「先 write/改写 f,再把 f 移走」时,
108
142
  // f 已快照过 → 移动整条不入账 → 回滚照 write 条目去写/删源端(ENOENT),文件还留在目标端。
109
- // 对这些回合补记一条不带 blob 的 rename(内容已由更早的条目备份,不重复备份):
143
+ // 对这种回合补记一条不带 blob 的 rename(内容已由更早的条目备份,不重复备份):
110
144
  // LIFO 回滚先由它把目标移回源端,再由更早的 write/write-new 条目恢复原文或删除。
111
- const renameOnly = op === 'rename' && toUri ? [...this.turns.values()].filter(t => t.snapshotted.has(uri)) : [];
112
- for (const t of renameOnly)
113
- t.manifest.files.push({ uri, action: 'rename', toUri });
114
- // 跨会话并发:把快照记进所有「本回合尚未对该 uri 快照过」的活跃回合。单回合=常态、零变化;
115
- // 并发多回合无法精确判断是哪个 run 改的 → 保守地都备份(宁可冗余、不丢保护)。
116
- const targets = [...this.turns.values()].filter(t => !t.snapshotted.has(uri));
117
- if (targets.length === 0)
118
- return; // 回合外,或都已补记/快照过
119
- for (const t of targets)
120
- t.snapshotted.add(uri);
145
+ if (turn.snapshotted.has(uri)) {
146
+ if (op === 'rename' && toUri)
147
+ turn.manifest.files.push({ uri, action: 'rename', toUri });
148
+ return;
149
+ }
150
+ turn.snapshotted.add(uri);
121
151
  let original = null;
122
152
  // 「读不出来」必须与「本就不存在」区分:前者记成 write-new 的话,回滚会把一个回合
123
153
  // 开始前就存在、且没有备份的文件直接删掉(rollback 的 write-new 分支无条件删除)。
@@ -129,53 +159,64 @@ export class CheckpointServiceImpl {
129
159
  loadFailed = true;
130
160
  this.logger.warn(`checkpoint 加载原文件失败 ${uri}: ${err.message}`);
131
161
  }
132
- for (const t of targets) {
133
- // 情况 1:write 且原文件不存在 → 标记为新创建(回滚时需要删除);
134
- // 情况 2:delete/rename 拿不到内容(目录,或读取失败)→ 仍要记一条:
135
- // 否则目录递归删除零记录,UI 却照样渲染「回滚本轮对话(含文件)」并报回滚完成。
136
- // rename 有 toUri 时回滚仍能原路移回;delete 则如实标为不可回滚。
137
- if (!original) {
138
- if (op === 'write' && !loadFailed) {
139
- t.manifest.files.push({ uri, action: 'write-new' });
140
- }
141
- else {
142
- // 读取失败的 write 记成 'write' + skipped:回滚时落到 skipped 分支如实报
143
- // 「不可回滚」并计入 errors,而不是当作本回合新建删掉。
144
- t.manifest.files.push({
145
- uri,
146
- action: op,
147
- toUri,
148
- skipped: loadFailed ? '未快照(原文件读取失败,不可回滚)' : '未快照(目录或读取失败)',
149
- });
150
- }
151
- continue;
162
+ // 情况 1:write 且原文件不存在 → 标记为新创建(回滚时需要删除);
163
+ // 情况 2:delete/rename 拿不到内容(目录,或读取失败)→ 仍要记一条:
164
+ // 否则目录递归删除零记录,UI 却照样渲染「回滚本轮对话(含文件)」并报回滚完成。
165
+ // rename 有 toUri 时回滚仍能原路移回;delete 则如实标为不可回滚。
166
+ if (!original) {
167
+ if (op === 'write' && !loadFailed) {
168
+ turn.manifest.files.push({ uri, action: 'write-new' });
152
169
  }
153
- // 情况 3:过大 → 跳过快照但记录为「skipped」
154
- if (original.size > this.cfg.maxFileSize) {
155
- t.manifest.files.push({
170
+ else {
171
+ // 读取失败的 write 记成 'write' + skipped:回滚时落到 skipped 分支如实报
172
+ // 「不可回滚」并计入 errors,而不是当作本回合新建删掉。
173
+ turn.manifest.files.push({
156
174
  uri,
157
175
  action: op,
158
176
  toUri,
159
- originalSize: original.size,
160
- skipped: `文件过大 (${original.size} > ${this.cfg.maxFileSize})`,
177
+ skipped: loadFailed ? t('notSnapshotUnreadable') : t('notSnapshotDirectory'),
161
178
  });
162
- continue;
163
179
  }
164
- // 情况 4:正常快照(每个活跃回合各存一份 blob 到自己的 turn 目录)
165
- const blobName = `${t.blobIndex++}.bin`;
166
- const turnDir = this.turnDir(t.manifest.sessionId, t.manifest.turnId);
167
- await this.storage.writeFile(joinUri(turnDir, `blobs/${blobName}`), original.data);
168
- t.manifest.files.push({
180
+ return;
181
+ }
182
+ // 情况 3:过大 → 跳过快照但记录为「skipped」
183
+ if (original.size > this.cfg.maxFileSize) {
184
+ turn.manifest.files.push({
169
185
  uri,
170
186
  action: op,
171
187
  toUri,
172
188
  originalSize: original.size,
173
- blob: blobName,
189
+ skipped: t('tooLarge', { size: original.size, max: this.cfg.maxFileSize }),
174
190
  });
191
+ return;
175
192
  }
193
+ // 情况 4:正常快照
194
+ const blobName = `${turn.blobIndex++}.bin`;
195
+ const turnDir = this.turnDir(turn.manifest.sessionId, turn.manifest.turnId);
196
+ await this.storage.writeFile(joinUri(turnDir, `blobs/${blobName}`), original.data);
197
+ turn.manifest.files.push({
198
+ uri,
199
+ action: op,
200
+ toUri,
201
+ originalSize: original.size,
202
+ blob: blobName,
203
+ });
176
204
  }
177
205
  // ──────────── 查询 ────────────
178
206
  async listTurns(sessionId) {
207
+ const summaries = (await this.manifests(sessionId)).map(manifest => ({
208
+ turnId: manifest.turnId,
209
+ sessionId: manifest.sessionId,
210
+ startedAt: manifest.startedAt,
211
+ endedAt: manifest.endedAt,
212
+ fileCount: manifest.files.length,
213
+ filesPreview: manifest.files.slice(0, 3).map(f => f.uri),
214
+ }));
215
+ summaries.sort((a, b) => b.startedAt - a.startedAt);
216
+ return summaries;
217
+ }
218
+ /** 某会话已提交回合的清单,读不出来的回合跳过(并留痕) */
219
+ async manifests(sessionId) {
179
220
  const sessionDir = joinUri(this.cfg.rootUri, encodeSegment(sessionId));
180
221
  let entries;
181
222
  try {
@@ -188,23 +229,13 @@ export class CheckpointServiceImpl {
188
229
  return [];
189
230
  }
190
231
  this.readFailures.delete(sessionDir);
191
- const summaries = [];
232
+ const manifests = [];
192
233
  for (const turnId of entries) {
193
234
  const manifest = await this.getManifest(sessionId, turnId);
194
- if (!manifest)
195
- continue;
196
- summaries.push({
197
- turnId: manifest.turnId,
198
- sessionId: manifest.sessionId,
199
- startedAt: manifest.startedAt,
200
- endedAt: manifest.endedAt,
201
- fileCount: manifest.files.length,
202
- execUsed: manifest.execUsed,
203
- filesPreview: manifest.files.slice(0, 3).map(f => f.uri),
204
- });
235
+ if (manifest)
236
+ manifests.push(manifest);
205
237
  }
206
- summaries.sort((a, b) => b.startedAt - a.startedAt);
207
- return summaries;
238
+ return manifests;
208
239
  }
209
240
  async getManifest(sessionId, turnId) {
210
241
  const uri = joinUri(this.turnDir(sessionId, turnId), 'manifest.json');
@@ -215,14 +246,14 @@ export class CheckpointServiceImpl {
215
246
  return manifest;
216
247
  }
217
248
  catch (err) {
218
- // 不向上抛:listTurns 逐个读,一个坏 manifest 不能拖垮整张列表。读失败与损坏要留痕
249
+ // 不向上抛:回滚算 alsoChangedBy 时 manifests() 逐个读全会话的清单,一个坏 manifest 不能拖垮回滚。读失败与损坏要留痕
219
250
  this.readFailed(uri, '读取 manifest 失败', err);
220
251
  return null;
221
252
  }
222
253
  }
223
254
  /**
224
- * 读失败留痕:「不存在」不算失败;其它原因告警,但同一位置同一原因只记一次——WebUI 每次消息变化都会列回合,
225
- * storage 不在线或 manifest 损坏时不能每条消息记一条。读通(或确认不存在)即清掉记录,之后再失败会再记。
255
+ * 读失败留痕:「不存在」不算失败;其它原因告警,但同一位置同一原因只记一次——每次回滚都要读这个会话的全部清单,
256
+ * storage 不在线或 manifest 损坏时不能每次都记一条。读通(或确认不存在)即清掉记录,之后再失败会再记。
226
257
  */
227
258
  readFailed(location, what, err) {
228
259
  if (isStorageNotFound(err)) {
@@ -239,17 +270,26 @@ export class CheckpointServiceImpl {
239
270
  async rollback(sessionId, turnId) {
240
271
  const manifest = await this.getManifest(sessionId, turnId);
241
272
  if (!manifest) {
242
- return { ok: false, restored: [], deleted: [], errors: [{ uri: '', reason: 'checkpoint 不存在' }] };
273
+ return {
274
+ ok: false,
275
+ restored: [],
276
+ deleted: [],
277
+ errors: [{ uri: '', reason: t('noCheckpoint') }],
278
+ alsoChangedBy: [],
279
+ };
243
280
  }
244
- const result = { ok: true, restored: [], deleted: [], errors: [] };
281
+ const result = {
282
+ ok: true,
283
+ restored: [],
284
+ deleted: [],
285
+ errors: [],
286
+ alsoChangedBy: await this.alsoChangedBy(manifest),
287
+ };
245
288
  const turnDir = this.turnDir(sessionId, turnId);
246
289
  // 逆序撤销(LIFO):同回合内后发生的改动先回退,否则先前条目的复原会被后来条目再次覆盖。
247
290
  // 例:`move a.txt -> b.txt` 后又改写 b.txt,正序回滚先把 b 移回 a,再把 b 的快照写回,
248
291
  // b.txt 又冒出来;逆序则先把 b 还原成改写前内容,再整体移回 a,磁盘回到回合开始的样子。
249
292
  for (const file of [...manifest.files].reverse()) {
250
- this.rollingBack.add(file.uri);
251
- if (file.toUri)
252
- this.rollingBack.add(file.toUri);
253
293
  try {
254
294
  if (file.action === 'write-new') {
255
295
  // 新创建的文件 → 删除。已不存在即期望状态已达成(本回合新建后又删掉:delete 条目被按 URI
@@ -283,9 +323,9 @@ export class CheckpointServiceImpl {
283
323
  result.deleted.push(file.toUri);
284
324
  }
285
325
  catch (delErr) {
286
- const reason = delErr.message ?? String(delErr);
326
+ const reason = textOf(delErr);
287
327
  if (isStorageNotFound(delErr)) {
288
- this.logger.debug(`回滚善后:目标 ${file.toUri} 已不在,跳过删除: ${reason}`);
328
+ this.logger.debug(`回滚善后:目标 ${file.toUri} 已不在,跳过删除: ${toSource(reason)}`);
289
329
  }
290
330
  else {
291
331
  result.errors.push({ uri: file.toUri, reason });
@@ -304,18 +344,29 @@ export class CheckpointServiceImpl {
304
344
  }
305
345
  }
306
346
  catch (err) {
307
- result.errors.push({ uri: file.uri, reason: err.message });
308
- }
309
- finally {
310
- this.rollingBack.delete(file.uri);
311
- if (file.toUri)
312
- this.rollingBack.delete(file.toUri);
347
+ result.errors.push({ uri: file.uri, reason: textOf(err) });
313
348
  }
314
349
  }
315
350
  if (result.errors.length > 0)
316
351
  result.ok = false;
317
352
  return result;
318
353
  }
354
+ /**
355
+ * 这一轮改过、同一会话里另有回合也改过的文件(含移动的目标端),见 RollbackResult.alsoChangedBy。
356
+ * 在这一轮开始前就已结束的回合不算;已提交的与还在跑的回合都算。时间戳只到毫秒,结束与开始落在同一毫秒的
357
+ * 分不出先后,按算处理:多列一轮只是多一句如实的提示,漏列会让回滚悄悄撤掉别人的改动。
358
+ */
359
+ async alsoChangedBy(target) {
360
+ const touched = (m) => new Set(m.files.flatMap(f => (f.toUri ? [f.uri, f.toUri] : [f.uri])));
361
+ const running = [...this.turns.values()].map(t => t.manifest).filter(m => m.sessionId === target.sessionId);
362
+ const others = [...(await this.manifests(target.sessionId)), ...running]
363
+ .filter(m => m.turnId !== target.turnId && !(m.endedAt !== undefined && m.endedAt < target.startedAt))
364
+ .sort((a, b) => a.startedAt - b.startedAt)
365
+ .map(m => ({ turnId: m.turnId, uris: touched(m) }));
366
+ return [...touched(target)]
367
+ .map(uri => ({ uri, turnIds: others.filter(o => o.uris.has(uri)).map(o => o.turnId) }))
368
+ .filter(entry => entry.turnIds.length > 0);
369
+ }
319
370
  // ──────────── 聊天回滚依赖注入 ────────────
320
371
  _memory;
321
372
  _emitMessagesDeleted;
@@ -333,7 +384,8 @@ export class CheckpointServiceImpl {
333
384
  ok: false,
334
385
  restored: [],
335
386
  deleted: [],
336
- errors: [{ uri: '', reason: 'checkpoint 不存在' }],
387
+ errors: [{ uri: '', reason: t('noCheckpoint') }],
388
+ alsoChangedBy: [],
337
389
  deletedMessages: 0,
338
390
  chatDeleted: false,
339
391
  };
@@ -351,9 +403,9 @@ export class CheckpointServiceImpl {
351
403
  result.chatDeleted = true;
352
404
  return result;
353
405
  }
354
- const memory = this._memory?.current;
406
+ const memory = this._memory?.present ? this._memory.use : undefined;
355
407
  if (!memory || typeof memory.deleteMessagesByTimestamps !== 'function') {
356
- result.errors.push({ uri: '', reason: '当前 memory 后端不支持 deleteMessagesByTimestamps' });
408
+ result.errors.push({ uri: '', reason: t('noDeleteByTimestamps') });
357
409
  result.ok = false;
358
410
  return result;
359
411
  }
@@ -362,7 +414,7 @@ export class CheckpointServiceImpl {
362
414
  result.chatDeleted = true;
363
415
  }
364
416
  catch (err) {
365
- result.errors.push({ uri: '', reason: `删除消息失败: ${err.message}` });
417
+ result.errors.push({ uri: '', reason: t('deleteMessagesFailed', { error: textOf(err) }) });
366
418
  result.ok = false;
367
419
  return result;
368
420
  }
@@ -383,7 +435,22 @@ export class CheckpointServiceImpl {
383
435
  return result;
384
436
  }
385
437
  // ──────────── GC ────────────
386
- async gc() {
438
+ /** 提交回合后清理:这个会话超出 keepTurns 的最旧回合连同备份删掉;会话目录超出 keepSessions 时删最旧的会话 */
439
+ async gc(sessionId) {
440
+ if (this.cfg.keepTurns > 0) {
441
+ // 只数已提交的回合(有清单的),还在跑的回合目录里只有备份、没有清单,不算也不删。每次提交都读一遍这个会话的清单
442
+ // (最多 keepTurns + 1 份),GC 在提交后异步跑,不拖回合
443
+ for (const turn of (await this.listTurns(sessionId)).slice(this.cfg.keepTurns)) {
444
+ try {
445
+ await this.storage.delete(this.turnDir(sessionId, turn.turnId));
446
+ }
447
+ catch (err) {
448
+ // 同一会话的几次清理撞在一起时可能删同一个回合,已不在就是删过了
449
+ if (!isStorageNotFound(err))
450
+ this.logger.warn(`GC 删除回合 ${turn.turnId} 失败: ${err.message}`);
451
+ }
452
+ }
453
+ }
387
454
  if (this.cfg.keepSessions <= 0)
388
455
  return;
389
456
  let sessions;
@@ -497,7 +564,7 @@ export function normalizeConfig(cfg) {
497
564
  rootUri: resolveRootUri(cfg.rootDir),
498
565
  maxFileSize: Math.max(1024, cfg.maxFileSize),
499
566
  keepSessions: Math.max(0, Math.floor(cfg.keepSessions)),
500
- scopes: cfg.scopes.filter(s => s.trim() !== ''),
567
+ keepTurns: Math.max(0, Math.floor(cfg.keepTurns)),
501
568
  };
502
569
  }
503
570
  /** rootDir 只接受 storage URI;留空使用默认值,非 URI 在副作用前拒绝。 */
@@ -506,7 +573,7 @@ function resolveRootUri(input) {
506
573
  if (!s)
507
574
  return configSchema.rootDir.default;
508
575
  if (!isStorageUri(s)) {
509
- throw new Error('plugin-checkpoint 配置错误: rootDir 不是 storage URI,请写成 <根名>:/<路径>');
576
+ throw configError(t('rootDirNotUri'));
510
577
  }
511
578
  return s;
512
579
  }
@@ -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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"}