@whispering233/ai-editor-server 0.0.7 → 0.0.8

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/backup.js CHANGED
@@ -1,24 +1,27 @@
1
- // 自动备份与恢复(B2.2,决策 27)
1
+ // 自动备份与恢复(B2.2 决策 27 + B2.5 决策 28 + B2.6 决策 29
2
2
  //
3
- // 单一事实来源:doc/design/decisions.md 决策 27、doc/api/endpoints.md「备份管理」节。
3
+ // 单一事实来源:doc/design/decisions.md 决策 27/28/29、doc/api/endpoints.md「备份管理」节。
4
4
  // 职责:
5
- // - 备份管道:三文件 + wal_checkpoint → .backups/<YYYYMMDD-HHmmss>.zip(复用 E1 打包)
6
- // - 保留策略:每项目保留最近 MAX_BACKUPS_PER_PROJECT 份,超出删除最旧(含覆盖前快照)
5
+ // - 备份管道:三文件 + wal_checkpoint → .backups/<YYYYMMDD-HHmmssSSS>[-<kind>][-<名称>].zip
6
+ // (复用 E1 打包;决策 28 毫秒精度;决策 29 kind 段:手动备份落 -m[-<名称>]、
7
+ // 自动备份/覆盖前快照纯时间戳、重命名后自动备份落 -a-<名称>)
8
+ // - 保留策略:每项目保留最近 MAX_BACKUPS_PER_PROJECT 份,超出删除最旧(含覆盖前快照;
9
+ // 新旧格式文件名均参与——parseBackupFileName 兼容解析)
7
10
  // - 自动定时器:跟随当前项目生命周期(middleware/project.ts setCurrentProject 挂载启停),
8
- // 有变更才备份(三文件 mtime 与 .backups/ 最新备份时间比较,无状态、服务重启不丢)
11
+ // 有变更才备份(三文件 + data.db-wal 伴生文件 mtime 与 .backups/ 最新备份时间比较,
12
+ // 无状态、服务重启不丢;F2:WAL 模式写只刷新 -wal,补查避免漏检 data.db 变更)
9
13
  // - 备份包校验(restore 与 import 共用):zip 解析/白名单/三文件齐全/顶层契约/
10
14
  // data.db user_version 三态分流(E4/E5,绝不静默重建)
11
15
  // - restore:fileName 白名单 → 覆盖前自动快照 → 校验 → 原子替换三文件
16
+ // - rename:只改名称段(时间戳与 kind 保持,决策 29)
12
17
  //
13
18
  // 依赖方向:本模块不依赖 middleware(避免循环依赖——定时器持有所调度项目引用,
14
19
  // 由 setCurrentProject 显式启停);仅 import type ProjectContext(类型擦除)。
15
- import { existsSync, mkdirSync, readdirSync, readFileSync, renameSync, statSync, unlinkSync, writeFileSync } from "node:fs";
16
- import { closeSync, fsyncSync, openSync } from "node:fs";
17
- import { mkdtempSync, rmSync } from "node:fs";
20
+ import { closeSync, existsSync, fsyncSync, mkdirSync, mkdtempSync, openSync, readdirSync, readFileSync, renameSync, rmSync, statSync, unlinkSync, writeFileSync } from "node:fs";
18
21
  import { tmpdir } from "node:os";
19
22
  import { basename, dirname, join } from "node:path";
20
23
  import { Unzip, UnzipInflate, zipSync } from "fflate";
21
- import { BACKUP_FREQUENCIES, DEFAULT_BACKUP_FREQUENCY_MINUTES, formatBackupFileName, MAX_BACKUPS_PER_PROJECT, parseBackupFileName } from "@whispering233/ai-editor-shared";
24
+ import { BACKUP_FREQUENCIES, DEFAULT_BACKUP_FREQUENCY_MINUTES, formatBackupFileName, MAX_BACKUPS_PER_PROJECT, MAX_BACKUP_NAME_LENGTH, parseBackupFileName, sanitizeBackupName } from "@whispering233/ai-editor-shared";
22
25
  import { PROJECT_EXPORT_FILE_NAMES } from "@whispering233/ai-editor-shared/schemas";
23
26
  import { closeDatabase, checkpointWal, DATA_DB_FILE_NAME, ensureSchemaCompatible, getUserVersion, hasMigrationPath, migrateChatMessagesProject, openDatabase, OUTLINE_FILE_NAME, PROJECT_FILE_NAME, readProjectFile, SCHEMA_VERSION, } from "@whispering233/ai-editor-db";
24
27
  import { HttpError } from "./middleware/error.js";
@@ -28,13 +31,27 @@ export const BACKUPS_DIR_NAME = ".backups";
28
31
  const MAX_UNZIP_BUDGET = 200 * 1024 * 1024;
29
32
  /**
30
33
  * mtime 变更判定容差(毫秒):备份管道内 wal_checkpoint 会把 WAL 合并回 data.db 主文件,
31
- * 其 mtime 刷新到「备份时刻」(毫秒精度),而上次备份时刻来自备份文件名(秒精度截断)——
32
- * 若用严格 `mtime > lastBackupAt` 判定,checkpoint 后的 data.db mtime 恒晚于文件名秒时间,
33
- * 每轮 tick 都会误判「有变更」产生自激垃圾备份。加 1s 容差:备份后三文件 mtime 落在
34
- * [备份时刻秒, 备份时刻秒+1s) 内一律视为「已包含在本次备份中」;最小 tick 5 分钟,
34
+ * 其 mtime 刷新到「备份时刻」(毫秒精度)。决策 28 起文件名时间戳为毫秒精度,
35
+ * 文件名截断误差已消除——但容差**保留 1s**:粗粒度 mtime 文件系统(如 FAT/exFAT 2s 粒度)
36
+ * 下,严格 `mtime > lastBackupAt` 仍可能误判,1s 容差是必要防御;最小 tick 5 分钟,
35
37
  * 用户变更必然超出容差窗口。
36
38
  */
37
39
  const BACKUP_CHANGE_TOLERANCE_MS = 1000;
40
+ /**
41
+ * 备份文件名白名单校验(renameBackup / restoreBackup 共用,防路径穿越):
42
+ * parseBackupFileName 全格式校验(时间戳部分 ^$ 锚定纯数字 + 名称部分拒绝 /\\,
43
+ * 天然防路径分隔符与 `..` 穿越;含旧格式兼容解析);非法 → 400 VALIDATION_ERROR(文案统一)。
44
+ *
45
+ * @returns 解析结果(校验通过即返回非 null——调用方直接取 time/kind/name,免二次解析)
46
+ * @throws HttpError 400 VALIDATION_ERROR(文件名格式非法)
47
+ */
48
+ function assertBackupFileNameFormat(fileName) {
49
+ const parsed = parseBackupFileName(fileName);
50
+ if (parsed === null) {
51
+ throw new HttpError(400, "VALIDATION_ERROR", `备份文件名格式非法(仅接受 <YYYYMMDD-HHmmssSSS>[-<kind>][-<名称>].zip 时间戳格式): ${fileName}`);
52
+ }
53
+ return parsed;
54
+ }
38
55
  // ============ 备份管道(复用 E1 打包,避免复制) ============
39
56
  /**
40
57
  * 打包当前项目三文件为 zip(E1 export 同款管道):
@@ -52,33 +69,145 @@ export function createBackupZip(project) {
52
69
  }, { level: 6 });
53
70
  }
54
71
  /**
55
- * 生成不冲突的备份文件名:`<YYYYMMDD-HHmmss>.zip`(shared formatBackupFileName)。
72
+ * 生成不冲突的备份文件名:`<YYYYMMDD-HHmmssSSS>[-<kind>][-<名称>].zip`(决策 28 毫秒精度 +
73
+ * 决策 29 kind 段;shared formatBackupFileName;kind 缺省 auto——纯时间戳;带自定义名称 →
74
+ * `-a-<名称>`(auto)/ `-m-<名称>`(manual))。
75
+ *
76
+ * 同毫秒冲突(如「立即备份 + restore 覆盖前快照」连续触发,理论罕见)处理:
77
+ * 时间戳 +1 毫秒循环去重,**保持 <YYYYMMDD-HHmmssSSS>[-<kind>][-<名称>].zip 格式契约**——
78
+ * parseBackupFileName 解析与 restore 白名单校验不受影响。
56
79
  *
57
- * 同秒冲突(如「立即备份 + restore 覆盖前快照」连续触发)处理:时间戳 +1 秒循环去重,
58
- * **保持 <YYYYMMDD-HHmmss>.zip 格式契约**——不追加毫秒/后缀(那会破坏
59
- * parseBackupFileName 解析与 restore 白名单校验),加 1 秒后文件名仍合法且排序位置正确。
80
+ * @returns { fileName, date }——date 为最终去重后的时间戳(与 fileName 时间戳段一致,
81
+ * 调用方直接用于构造 createdAt,免 parse 回读)
60
82
  */
61
- function uniqueBackupFileName(backupsDir, date) {
62
- let name = formatBackupFileName(date);
63
- while (existsSync(join(backupsDir, name))) {
64
- date = new Date(date.getTime() + 1000);
65
- name = formatBackupFileName(date);
83
+ function uniqueBackupFileName(backupsDir, date, opts) {
84
+ const kind = opts?.kind ?? "auto";
85
+ const name = opts?.name;
86
+ let fileName = formatBackupFileName(date, { kind, name });
87
+ while (existsSync(join(backupsDir, fileName))) {
88
+ date = new Date(date.getTime() + 1);
89
+ fileName = formatBackupFileName(date, { kind, name });
66
90
  }
67
- return name;
91
+ return { fileName, date };
68
92
  }
69
93
  /**
70
94
  * 立即备份当前项目(手动触发 / 自动定时器 / restore 覆盖前快照共用):
71
- * 打包 → 写入 .backups/<时间戳>.zip(同秒去重)→ 触发保留策略清理(失败不阻塞)。
95
+ * 打包 → 写入 .backups/<时间戳>[-<kind>][-<名称>].zip(毫秒精度;同毫秒 +1ms 去重)→
96
+ * 触发保留策略清理(失败不阻塞)。
72
97
  * 写盘失败向上抛(errorHandler → 500 INTERNAL_ERROR,endpoints.md POST /backup 语义)。
98
+ *
99
+ * @param opts.kind 备份类型(决策 29,缺省 "auto"):手动触发传 "manual"(文件名落 -m 段);
100
+ * 自动备份/覆盖前快照不传(auto,纯时间戳)
101
+ * @param opts.name 手动备份自定义名称(决策 28,仅带名称的手动/重命名场景传入):
102
+ * sanitizeBackupName 是名称校验/规范化**唯一执行点**——非法(含路径分隔符/超长/纯点)→
103
+ * 400 VALIDATION_ERROR;自动备份/覆盖前快照不传 name,文件名保持纯时间戳。
104
+ * 注意:name 仅在 opts.name !== undefined 且 sanitize 通过后传入 formatBackupFileName。
73
105
  */
74
- export function writeBackup(project) {
106
+ export function writeBackup(project, opts) {
107
+ const kind = opts?.kind ?? "auto";
108
+ let name;
109
+ if (opts?.name !== undefined) {
110
+ const sanitized = sanitizeBackupName(opts.name);
111
+ if (sanitized === null) {
112
+ throw new HttpError(400, "VALIDATION_ERROR", `备份名称非法(trim 后 1-${MAX_BACKUP_NAME_LENGTH} 字符,禁路径分隔符/保留字符/控制字符/纯点)`);
113
+ }
114
+ name = sanitized;
115
+ }
75
116
  const zip = createBackupZip(project);
76
117
  const backupsDir = join(project.root, BACKUPS_DIR_NAME);
77
118
  mkdirSync(backupsDir, { recursive: true });
78
- const fileName = uniqueBackupFileName(backupsDir, new Date());
119
+ const { fileName, date } = uniqueBackupFileName(backupsDir, new Date(), { kind, name });
79
120
  writeFileSync(join(backupsDir, fileName), zip); // 失败抛错 → 500(不产出半截备份)
80
121
  pruneBackups(backupsDir); // 清理失败仅记日志,不阻塞备份主流程
81
- return { fileName, size: zip.length, createdAt: toIso(parseBackupFileName(fileName)) };
122
+ return {
123
+ fileName,
124
+ size: zip.length,
125
+ createdAt: toIso(date), // date = 最终去重后的时间戳,与 fileName 时间戳段一致(决策 27 无状态语义)
126
+ kind,
127
+ ...(name !== undefined ? { name } : {}),
128
+ };
129
+ }
130
+ /**
131
+ * 重命名备份(POST /project/backup/rename,决策 29):**只改名称段**,时间戳与 kind 保持。
132
+ *
133
+ * 契约:
134
+ * 1. fileName 白名单校验:仅接受 parseBackupFileName 可解析的时间戳格式
135
+ * `<YYYYMMDD-HHmmssSSS>[-<kind>][-<名称>].zip`(含旧格式兼容,^$ 锚定 + 名称部分拒绝 /\\,
136
+ * 天然防路径分隔符与 `..` 穿越)→ 非法 400 VALIDATION_ERROR
137
+ * 2. 文件不存在 → 404 VALIDATION_ERROR
138
+ * 3. 新名称解析(决策 29):请求未传 name → 清除名称段;传空串/纯空白 → 清除名称段;
139
+ * 非空 → sanitizeBackupName 规范化(非法 → 400 VALIDATION_ERROR,文案同 writeBackup)
140
+ * 4. 新文件名 = formatBackupFileName(parsed.time, { kind: parsed.kind, name: 新名称 })——
141
+ * kind 不随重命名改变(auto 重命名后仍落 -a- 段、manual 仍落 -m- 段)
142
+ * 5. 幂等:新文件名 === 原文件名(如重命名为相同名称)→ 不移动文件,直接返回当前条目
143
+ * (重新 stat 取 size;stat 失败 → 404「备份不存在」)
144
+ * 6. **目标冲突防御(oracle P1-1,决策 29)**:新文件名已存在(≠ 原文件)→ 409
145
+ * BACKUP_TARGET_EXISTS——POSIX rename 目标存在时静默替换,可达路径:旧秒级改名后毫秒补
146
+ * 000 撞上毫秒为 0 的自动备份、同毫秒双 manual(T-m.zip + T-m-X.zip)清名覆盖;显式拒绝
147
+ * 7. renameSync 同目录原子改名(失败向上抛 → 500);改名后统一 stat 取 size
148
+ * (改名瞬间被删等竞态 → 404「备份不存在」)
149
+ *
150
+ * @throws HttpError 400(文件名非法/名称非法)、404(备份不存在)、409 BACKUP_TARGET_EXISTS
151
+ */
152
+ export function renameBackup(project, fileName, name) {
153
+ // 1. 白名单校验(assertBackupFileNameFormat:parseBackupFileName 全格式校验,防路径穿越;
154
+ // 非法 → 400;返回解析结果直接取 time/kind)
155
+ const parsed = assertBackupFileNameFormat(fileName);
156
+ const backupsDir = join(project.root, BACKUPS_DIR_NAME);
157
+ if (!existsSync(join(backupsDir, fileName))) {
158
+ throw new HttpError(404, "VALIDATION_ERROR", `备份不存在: ${fileName}`);
159
+ }
160
+ // 2. 新名称解析:请求未传 name → 清除名称;传空串/纯空白 → 清除名称(sanitize null 且 trim 空);
161
+ // 非空 → sanitize 规范化(null 且 trim 非空 → 400,文案同 writeBackup)
162
+ let nextName;
163
+ if (name !== undefined) {
164
+ const sanitized = sanitizeBackupName(name);
165
+ if (sanitized === null && name.trim() !== "") {
166
+ throw new HttpError(400, "VALIDATION_ERROR", `备份名称非法(trim 后 1-${MAX_BACKUP_NAME_LENGTH} 字符,禁路径分隔符/保留字符/控制字符/纯点)`);
167
+ }
168
+ if (sanitized !== null)
169
+ nextName = sanitized;
170
+ }
171
+ // 3. 新文件名(时间戳与 kind 保持原备份——kind 不随重命名改变,决策 29)
172
+ const newFileName = formatBackupFileName(parsed.time, { kind: parsed.kind, name: nextName });
173
+ // 4. 幂等:名称未变 → 不移动文件,返回当前条目(重新 stat 取 size;读不到 → 404)
174
+ if (newFileName === fileName) {
175
+ try {
176
+ return {
177
+ fileName,
178
+ size: statSync(join(backupsDir, fileName)).size,
179
+ createdAt: toIso(parsed.time),
180
+ kind: parsed.kind,
181
+ ...(nextName !== undefined ? { name: nextName } : {}),
182
+ };
183
+ }
184
+ catch {
185
+ throw new HttpError(404, "VALIDATION_ERROR", `备份不存在: ${fileName}`);
186
+ }
187
+ }
188
+ // 5. 目标冲突防御(oracle P1-1,决策 29):POSIX rename 目标存在时静默替换(数据丢失风险)——
189
+ // 可达路径:旧秒级改名后毫秒补 000 撞上毫秒为 0 的自动备份、同毫秒双 manual 清名覆盖等;
190
+ // 显式 409 拒绝。幂等分支(target === fileName)已在第 4 步提前返回,此处必然 target ≠ fileName。
191
+ if (existsSync(join(backupsDir, newFileName))) {
192
+ throw new HttpError(409, "BACKUP_TARGET_EXISTS", `目标备份文件名已存在: ${newFileName}`);
193
+ }
194
+ // 6. 同目录原子改名(失败向上抛 → 500 INTERNAL_ERROR)
195
+ renameSync(join(backupsDir, fileName), join(backupsDir, newFileName));
196
+ // 7. 改名后统一 stat 取 size(改名瞬间文件被删等竞态 → 404「备份不存在」)
197
+ let size;
198
+ try {
199
+ size = statSync(join(backupsDir, newFileName)).size;
200
+ }
201
+ catch {
202
+ throw new HttpError(404, "VALIDATION_ERROR", `备份不存在: ${fileName}`);
203
+ }
204
+ return {
205
+ fileName: newFileName,
206
+ size,
207
+ createdAt: toIso(parsed.time),
208
+ kind: parsed.kind,
209
+ ...(nextName !== undefined ? { name: nextName } : {}),
210
+ };
82
211
  }
83
212
  /**
84
213
  * 保留策略(决策 27):每项目保留最近 MAX_BACKUPS_PER_PROJECT 份,超出删除最旧。
@@ -94,8 +223,11 @@ export function pruneBackups(backupsDir) {
94
223
  return; // 目录不存在 → 无事可做
95
224
  }
96
225
  const parsed = files
97
- .map((f) => ({ fileName: f, time: parseBackupFileName(f) }))
98
- .filter((x) => x.time !== null)
226
+ .map((f) => {
227
+ const p = parseBackupFileName(f);
228
+ return p === null ? null : { fileName: f, time: p.time };
229
+ })
230
+ .filter((x) => x !== null)
99
231
  .sort((a, b) => b.time.getTime() - a.time.getTime()); // 最新在前
100
232
  for (const extra of parsed.slice(MAX_BACKUPS_PER_PROJECT)) {
101
233
  try {
@@ -118,11 +250,17 @@ export function listBackups(project) {
118
250
  }
119
251
  return files
120
252
  .map((f) => {
121
- const time = parseBackupFileName(f);
122
- if (time === null)
253
+ const parsed = parseBackupFileName(f);
254
+ if (parsed === null)
123
255
  return null; // 非法文件名(手工放入等)不展示
124
256
  try {
125
- return { fileName: f, size: statSync(join(backupsDir, f)).size, createdAt: toIso(time) };
257
+ return {
258
+ fileName: f,
259
+ size: statSync(join(backupsDir, f)).size,
260
+ createdAt: toIso(parsed.time),
261
+ kind: parsed.kind,
262
+ ...(parsed.name !== undefined ? { name: parsed.name } : {}),
263
+ };
126
264
  }
127
265
  catch {
128
266
  return null; // 列表读取瞬间被删(竞态)→ 跳过
@@ -329,16 +467,20 @@ function latestBackupTime(backupsDir) {
329
467
  }
330
468
  let latest = null;
331
469
  for (const f of files) {
332
- const t = parseBackupFileName(f);
333
- if (t !== null && (latest === null || t.getTime() > latest.getTime()))
334
- latest = t;
470
+ const p = parseBackupFileName(f);
471
+ if (p !== null && (latest === null || p.time.getTime() > latest.getTime()))
472
+ latest = p.time;
335
473
  }
336
474
  return latest;
337
475
  }
338
476
  /**
339
- * 三文件是否在 since 之后有变更(决策 27「任一 mtime 晚于上次备份时刻」):
340
- * 任一文件 mtime > since + 容差 → 有变更;文件缺失 → 视为有变更(防御:不静默跳过,
341
- * 让备份管道报错暴露损坏);mtime 判定见 BACKUP_CHANGE_TOLERANCE_MS 注释。
477
+ * 三文件 + data.db-wal 伴生文件是否在 since 之后有变更(决策 27「任一 mtime 晚于
478
+ * 上次备份时刻」;F2 修订:data.db WAL 模式运行,普通写事务只追加 -wal 伴生文件、
479
+ * 主文件 mtime 不变,故 data.db-wal 一并纳入判定):
480
+ * 任一文件 mtime > since + 容差 → 有变更;**主文件缺失 → 视为有变更**(防御:不静默
481
+ * 跳过,让备份管道报错暴露损坏);**data.db-wal 缺失 ≠ 变更**(无未 checkpoint 的写,
482
+ * 属正常状态,跳过——与主文件缺失语义不同,否则每次 tick 都误备份,产生垃圾备份);
483
+ * mtime 判定见 BACKUP_CHANGE_TOLERANCE_MS 注释。
342
484
  */
343
485
  function hasFileChangesSince(project, since) {
344
486
  const limit = since.getTime() + BACKUP_CHANGE_TOLERANCE_MS;
@@ -351,6 +493,18 @@ function hasFileChangesSince(project, since) {
351
493
  return true;
352
494
  }
353
495
  }
496
+ // data.db-wal 伴生文件(F2):wal 存在且 mtime 晚于 limit → 有变更;
497
+ // wal 缺失(ENOENT)= 无未 checkpoint 的写,属正常状态,不视为变更;其余错误仍防御
498
+ // 视为有变更(与主文件缺失语义一致)
499
+ const walPath = join(project.root, `${DATA_DB_FILE_NAME}-wal`);
500
+ try {
501
+ if (statSync(walPath).mtimeMs > limit)
502
+ return true;
503
+ }
504
+ catch (err) {
505
+ if (err.code !== "ENOENT")
506
+ return true;
507
+ }
354
508
  return false;
355
509
  }
356
510
  /**
@@ -358,8 +512,9 @@ function hasFileChangesSince(project, since) {
358
512
  *
359
513
  * 1. 频率判定:关闭(null/0/非枚举)→ 直接返回 false(决策 27:null/0 = 关闭;
360
514
  * B2.1 疑问裁决 2:读侧非枚举值按关闭处理,不开启自动备份)
361
- * 2. 变更判定:`.backups/` 为空(无上次备份时刻)→ 需要备份;否则三文件 mtime
362
- * 均早于「上次备份时刻 + 容差」→ 跳过(无变更不产生垃圾备份,决策 27)
515
+ * 2. 变更判定:`.backups/` 为空(无上次备份时刻)→ 需要备份;否则三文件 +
516
+ * data.db-wal 伴生文件(F2:WAL 模式写只刷新 -wal)mtime 均早于
517
+ * 「上次备份时刻 + 容差」→ 跳过(无变更不产生垃圾备份,决策 27)
363
518
  * 3. 有变更 → writeBackup(含保留策略清理)
364
519
  *
365
520
  * @returns 本次是否生成了备份
@@ -377,8 +532,6 @@ export function maybeAutoBackup(project) {
377
532
  // ============ 定时器调度(跟随当前项目生命周期,middleware setCurrentProject 挂载) ============
378
533
  /** 当前排程的定时器句柄(null = 未排程/已停止) */
379
534
  let backupTimer = null;
380
- /** 定时器当前服务的项目(stop 时清空;restore 替换 config/db 后同一引用仍有效) */
381
- let scheduledProject = null;
382
535
  /**
383
536
  * 启动/重启自动备份调度(open/切换项目时调用;restore 后频率可能变化也调用):
384
537
  * 按当前项目频率 setTimeout 链——每 tick 检查「有变更才备份」后按最新频率重新排程
@@ -387,7 +540,6 @@ let scheduledProject = null;
387
540
  */
388
541
  export function startAutoBackup(project) {
389
542
  stopAutoBackup();
390
- scheduledProject = project;
391
543
  scheduleNext(project);
392
544
  }
393
545
  /** 停止自动备份调度(close 项目/服务关闭时调用;幂等) */
@@ -396,7 +548,6 @@ export function stopAutoBackup() {
396
548
  clearTimeout(backupTimer);
397
549
  backupTimer = null;
398
550
  }
399
- scheduledProject = null;
400
551
  }
401
552
  /** 按项目当前频率排程下一次检查;频率关闭 → 不排程 */
402
553
  function scheduleNext(project) {
@@ -416,10 +567,6 @@ function scheduleNext(project) {
416
567
  // unref:定时器不阻止进程退出(测试/服务关闭后无残留句柄)
417
568
  backupTimer.unref?.();
418
569
  }
419
- /** 当前被定时器服务的项目(测试用;null = 未排程) */
420
- export function getScheduledProject() {
421
- return scheduledProject;
422
- }
423
570
  // ============ 恢复(restore:白名单 → 快照 → 校验 → 原子替换) ============
424
571
  // ============ 覆盖恢复共享管道(restore / import 覆盖 / 新书导入共用,B2.3 提取) ============
425
572
  /**
@@ -581,9 +728,10 @@ function writeFileAtomic(filePath, data) {
581
728
  /**
582
729
  * 从备份恢复当前项目(POST /project/backup/restore,决策 27):
583
730
  *
584
- * 1. fileName 白名单校验:仅允许 `.backups/` `<YYYYMMDD-HHmmss>.zip` 格式
585
- * (shared parseBackupFileName,^$ 锚定天然拒绝路径分隔符/`..`,防路径穿越);
586
- * 格式合法但文件不存在 404
731
+ * 1. fileName 白名单校验:仅允许 `.backups/` 下时间戳格式(决策 28/29 兼容四类:
732
+ * `<YYYYMMDD-HHmmssSSS>[-<kind>][-<名称>].zip` 毫秒级(含 kind 段)/ `<YYYYMMDD-HHmmssSSS>-<名称>.zip`
733
+ * 旧带名称 / 旧秒级 `<YYYYMMDD-HHmmss>.zip`——shared parseBackupFileName,^$ 锚定 + 名称部分
734
+ * 拒绝 /\\,天然防路径分隔符与 `..` 穿越);格式合法但文件不存在 → 404
587
735
  * 2. **覆盖前自动快照**:当前三文件打包为快照存入 .backups/(复用备份管道,
588
736
  * 就是普通备份文件,自然参与保留策略——后悔药,决策 27)
589
737
  * 3. 备份包校验(validateBackupPackage:zip/白名单/契约/user_version 三态,
@@ -597,10 +745,9 @@ function writeFileAtomic(filePath, data) {
597
745
  * @throws HttpError 400(文件名非法/坏包)、404(备份不存在)、409 SCHEMA_VERSION_MISMATCH
598
746
  */
599
747
  export function restoreBackup(project, fileName) {
600
- // 1. 白名单校验(parseBackupFileName 全格式校验,防路径穿越)
601
- if (parseBackupFileName(fileName) === null) {
602
- throw new HttpError(400, "VALIDATION_ERROR", `备份文件名格式非法(仅接受 <YYYYMMDD-HHmmss>.zip): ${fileName}`);
603
- }
748
+ // 1. 白名单校验(assertBackupFileNameFormat:parseBackupFileName 全格式校验,防路径穿越;
749
+ // 决策 28/29 兼容毫秒级/带 kind 段/旧带名称/旧秒级文件名)
750
+ assertBackupFileNameFormat(fileName);
604
751
  const backupPath = join(project.root, BACKUPS_DIR_NAME, fileName);
605
752
  if (!existsSync(backupPath)) {
606
753
  throw new HttpError(404, "VALIDATION_ERROR", `备份不存在: ${fileName}`);
@@ -1 +1 @@
1
- {"version":3,"file":"backup.js","sourceRoot":"","sources":["../src/backup.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"backup.js","sourceRoot":"","sources":["../src/backup.ts"],"names":[],"mappings":"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"}
@@ -14,7 +14,7 @@ export declare const SESSION_HISTORY_MAX_MESSAGES = 2000;
14
14
  /**
15
15
  * 单个工具 argsSchema(zod)→ OpenAI 兼容 JSON Schema(LLMToolDefinition.parameters)。
16
16
  * 方案:**zod 4 内置 toJSONSchema**(`import { toJSONSchema } from "zod"`,v4.4+ 自带,
17
- * 无新增依赖)——32 个工具参数均为简单对象 + string/enum/array/record/literal/union 字段,
17
+ * 无新增依赖)——33 个工具参数均为简单对象 + string/enum/array/record/literal/union 字段,
18
18
  * 内置转换全覆盖且输出 draft 2020-12 合法 schema(`.strict()` → additionalProperties:false、
19
19
  * `.refine()` 仅影响校验不改变类型 schema、`z.record` → propertyNames 形态)。
20
20
  * 仅剥离顶层 `$schema` 关键字——OpenAI 兼容端点(含 DeepSeek)对 parameters 内未知关键字
@@ -23,7 +23,7 @@ export declare const SESSION_HISTORY_MAX_MESSAGES = 2000;
23
23
  export declare function zodArgsToJsonSchema(schema: z.ZodTypeAny): Record<string, unknown>;
24
24
  /**
25
25
  * registry 工具定义 → LLM function calling 工具定义(决策点:只转换 AUTO + PROPOSAL 权限的
26
- * 32 个工具——listTools 已不注册执行类(S6.7 核心设计原则「AI 只能提案不能直接写」),
26
+ * 33 个工具——listTools 已不注册执行类(S6.7 核心设计原则「AI 只能提案不能直接写」),
27
27
  * 此处权限过滤为双保险:未来误注册执行类工具也不会暴露给模型)。
28
28
  */
29
29
  export declare function toLLMToolDefinitions(defs: readonly ToolDefinition[]): LLMToolDefinition[];
@@ -16,7 +16,7 @@
16
16
  // 六类事件 + turn_start——本文件只转 SSE 帧、不产生事件)
17
17
  // - S7.4 executor.ts(createToolDispatcher 真实现;提案仓 defaultProposalStore)
18
18
  // - S6.1 llm client.ts(chatStream:tools 需 OpenAI function schema 格式)
19
- // - S6.3-S6.6 registry.ts(listTools 32 个 AUTO+PROPOSAL 工具;执行类不注册不暴露——
19
+ // - S6.3-S6.6 registry.ts(listTools 33 个 AUTO+PROPOSAL 工具;执行类不注册不暴露——
20
20
  // 本文件 zod schema → JSON Schema 转换,zod 4 内置 toJSONSchema,无新依赖)
21
21
  //
22
22
  // 语义约定:
@@ -52,7 +52,7 @@ export const SESSION_HISTORY_MAX_MESSAGES = 2000;
52
52
  /**
53
53
  * 单个工具 argsSchema(zod)→ OpenAI 兼容 JSON Schema(LLMToolDefinition.parameters)。
54
54
  * 方案:**zod 4 内置 toJSONSchema**(`import { toJSONSchema } from "zod"`,v4.4+ 自带,
55
- * 无新增依赖)——32 个工具参数均为简单对象 + string/enum/array/record/literal/union 字段,
55
+ * 无新增依赖)——33 个工具参数均为简单对象 + string/enum/array/record/literal/union 字段,
56
56
  * 内置转换全覆盖且输出 draft 2020-12 合法 schema(`.strict()` → additionalProperties:false、
57
57
  * `.refine()` 仅影响校验不改变类型 schema、`z.record` → propertyNames 形态)。
58
58
  * 仅剥离顶层 `$schema` 关键字——OpenAI 兼容端点(含 DeepSeek)对 parameters 内未知关键字
@@ -65,7 +65,7 @@ export function zodArgsToJsonSchema(schema) {
65
65
  }
66
66
  /**
67
67
  * registry 工具定义 → LLM function calling 工具定义(决策点:只转换 AUTO + PROPOSAL 权限的
68
- * 32 个工具——listTools 已不注册执行类(S6.7 核心设计原则「AI 只能提案不能直接写」),
68
+ * 33 个工具——listTools 已不注册执行类(S6.7 核心设计原则「AI 只能提案不能直接写」),
69
69
  * 此处权限过滤为双保险:未来误注册执行类工具也不会暴露给模型)。
70
70
  */
71
71
  export function toLLMToolDefinitions(defs) {
@@ -1 +1 @@
1
- {"version":3,"file":"entity.d.ts","sourceRoot":"","sources":["../../src/routes/entity.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAE5B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAKlE,wCAAwC;AACxC,eAAO,MAAM,YAAY,4EAAa,CAAC;AAEvC,iEAAiE;AACjE,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,CAMvD"}
1
+ {"version":3,"file":"entity.d.ts","sourceRoot":"","sources":["../../src/routes/entity.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAiB5B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAMlE,wCAAwC;AACxC,eAAO,MAAM,YAAY,4EAAa,CAAC;AAEvC,iEAAiE;AACjE,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,CAMvD"}