dsh-config-manager 0.1.48 → 0.1.49

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.
@@ -49,6 +49,13 @@ export interface RestoreOptions {
49
49
  ok: boolean;
50
50
  message?: string;
51
51
  }>;
52
+ /** 每项动作执行回调(宿主路由埋点:更新 RunRegistry 进度;index/1-based、total=计划动作数、
53
+ * detail=动作描述。dry-run/planRestore 不触发) */
54
+ onAction?: (info: {
55
+ index: number;
56
+ total: number;
57
+ detail: string;
58
+ }) => void;
52
59
  /** 消息翻译器(缺省 zh;宿主按 DSH 应用语言注入) */
53
60
  msg?: MsgFunc;
54
61
  }
@@ -396,7 +396,11 @@ export async function restore(opts) {
396
396
  skipped: [],
397
397
  };
398
398
  let seq = 0;
399
+ const total = plan.actions.length;
400
+ let actionIndex = 0;
399
401
  for (const action of plan.actions) {
402
+ actionIndex += 1;
403
+ opts.onAction?.({ index: actionIndex, total, detail: action.description });
400
404
  try {
401
405
  switch (action.kind) {
402
406
  case 'hostFileRestore': {
@@ -1 +1 @@
1
- {"version":3,"file":"restore.js","sourceRoot":"","sources":["../../src/core/restore.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"restore.js","sourceRoot":"","sources":["../../src/core/restore.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import type { MsgFunc } from './messages.ts';
2
- /** run 类型:导出 / 导入 / 自动同步 / 一键同步逐项应用 / 定时备份。 */
3
- export type RunKind = 'export' | 'import' | 'autosync' | 'sync-apply' | 'backup-schedule';
2
+ /** run 类型:导出 / 导入 / 自动同步 / 一键同步逐项应用 / 定时备份 / 快照恢复。 */
3
+ export type RunKind = 'export' | 'import' | 'autosync' | 'sync-apply' | 'backup-schedule' | 'restore';
4
4
  /** run 状态:进行中 / 完成 / 失败。 */
5
5
  export type RunStatus = 'running' | 'done' | 'failed';
6
6
  /** 单个 run 的实时状态(/progress 返回体;纯 JSON 可序列化)。 */
@@ -61,9 +61,16 @@ export declare class RunRegistry {
61
61
  register(kind: RunKind): RunState;
62
62
  /** 更新进度;run 不存在返回 undefined;已完成/失败后的晚到更新被忽略(防御异步回调竞态)。 */
63
63
  update(runId: string, patch: Partial<Pick<RunState, 'section' | 'sectionTotal' | 'item' | 'itemTotal' | 'detail'>>): RunState | undefined;
64
- /** 追加一行执行日志(导入逐计划项操作 / 子进程命令);run 不存在返回 undefined,
64
+ /**
65
+ * 追加一行执行日志(导入逐计划项操作 / 子进程命令);run 不存在返回 undefined,
65
66
  * 已完成/失败后的晚到追加被忽略(防御异步回调竞态)。行数封顶 MAX_RUN_LOG_LINES,
66
- * 超限时截断保留最新行。 */
67
+ * 超限时截断保留最新行。
68
+ *
69
+ * **不可变写入(性能正确性关键)**:每次 append 生成新数组(push + splice 会原地
70
+ * mutation —— /progress 轮询返回的 RunState.log 与浏览器侧 store 共享同一引用,
71
+ * 行数封顶后长度恒定,React memo 按引用/长度比较将无法感知新行,日志面板冻结)。
72
+ * 调用方(mapRunProgress → ImportLogPanel)据此以「数组引用变化」判断有新输出。
73
+ */
67
74
  appendLog(runId: string, line: string): RunState | undefined;
68
75
  /** 读单个 run;超过保留期或不存在返回 undefined。 */
69
76
  get(runId: string): RunState | undefined;
@@ -34,7 +34,9 @@ export class RunConflictError extends Error {
34
34
  ? '一键同步已在进行中'
35
35
  : kind === 'backup-schedule'
36
36
  ? '定时备份已在进行中'
37
- : msg('run.conflict.import', { runId }));
37
+ : kind === 'restore'
38
+ ? '快照恢复已在进行中(请等待当前恢复完成)'
39
+ : msg('run.conflict.import', { runId }));
38
40
  this.name = 'RunConflictError';
39
41
  this.runId = runId;
40
42
  }
@@ -89,19 +91,24 @@ export class RunRegistry {
89
91
  Object.assign(run, patch, { updatedAt: this.now() });
90
92
  return { ...run };
91
93
  }
92
- /** 追加一行执行日志(导入逐计划项操作 / 子进程命令);run 不存在返回 undefined,
94
+ /**
95
+ * 追加一行执行日志(导入逐计划项操作 / 子进程命令);run 不存在返回 undefined,
93
96
  * 已完成/失败后的晚到追加被忽略(防御异步回调竞态)。行数封顶 MAX_RUN_LOG_LINES,
94
- * 超限时截断保留最新行。 */
97
+ * 超限时截断保留最新行。
98
+ *
99
+ * **不可变写入(性能正确性关键)**:每次 append 生成新数组(push + splice 会原地
100
+ * mutation —— /progress 轮询返回的 RunState.log 与浏览器侧 store 共享同一引用,
101
+ * 行数封顶后长度恒定,React memo 按引用/长度比较将无法感知新行,日志面板冻结)。
102
+ * 调用方(mapRunProgress → ImportLogPanel)据此以「数组引用变化」判断有新输出。
103
+ */
95
104
  appendLog(runId, line) {
96
105
  const run = this.runs.get(runId);
97
106
  if (run === undefined)
98
107
  return undefined;
99
108
  if (run.status !== 'running')
100
109
  return { ...run };
101
- run.log.push(line);
102
- if (run.log.length > MAX_RUN_LOG_LINES) {
103
- run.log.splice(0, run.log.length - MAX_RUN_LOG_LINES);
104
- }
110
+ // 不可变追加:保留最新 MAX_RUN_LOG_LINES 行(slice(-(MAX-1)) 在长度不足时取全量)
111
+ run.log = [...run.log.slice(-(MAX_RUN_LOG_LINES - 1)), line];
105
112
  run.updatedAt = this.now();
106
113
  return { ...run };
107
114
  }
@@ -1 +1 @@
1
- {"version":3,"file":"run-registry.js","sourceRoot":"","sources":["../../src/core/run-registry.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"run-registry.js","sourceRoot":"","sources":["../../src/core/run-registry.ts"],"names":[],"mappings":"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"}
package/lib/index.d.ts CHANGED
@@ -201,8 +201,14 @@ export interface RestoreExecutor {
201
201
  /**
202
202
  * 按计划执行恢复动作(纯执行器;逐项 try/catch 不拖垮其余),
203
203
  * 返回与 CLI 一致的诚实报告。顺序 = 计划顺序(整文件 → 插件 → file 补偿)。
204
+ * @param onAction - 每项动作执行回调(宿主路由埋点:更新 RunRegistry 进度;
205
+ * index/1-based、total=计划动作数、detail=动作描述)
204
206
  */
205
- export declare function executeRestorePlan(plan: RestorePlan, exec: RestoreExecutor): Promise<RestoreReport>;
207
+ export declare function executeRestorePlan(plan: RestorePlan, exec: RestoreExecutor, onAction?: (info: {
208
+ index: number;
209
+ total: number;
210
+ detail: string;
211
+ }) => void): Promise<RestoreReport>;
206
212
  /**
207
213
  * Mount the config-manager engine: host context, adapters, and the
208
214
  * /api/dsh-config-manager routes (when a webServer is present).
package/lib/index.js CHANGED
@@ -96,7 +96,7 @@ export const name = 'config-manager';
96
96
  /** Services required before the engine can mount (present in every profile). */
97
97
  export const inject = ['settings', 'credentials'];
98
98
  /** Plugin version, kept in sync with package.json ("version"). */
99
- const PLUGIN_VERSION = '0.1.48';
99
+ const PLUGIN_VERSION = '0.1.49';
100
100
  /** Plugin own package name — excluded from its own exported plugins list. */
101
101
  const PLUGIN_NAME = 'dsh-config-manager';
102
102
  /**
@@ -1019,8 +1019,10 @@ export function buildRestoreBody(body) {
1019
1019
  /**
1020
1020
  * 按计划执行恢复动作(纯执行器;逐项 try/catch 不拖垮其余),
1021
1021
  * 返回与 CLI 一致的诚实报告。顺序 = 计划顺序(整文件 → 插件 → file 补偿)。
1022
+ * @param onAction - 每项动作执行回调(宿主路由埋点:更新 RunRegistry 进度;
1023
+ * index/1-based、total=计划动作数、detail=动作描述)
1022
1024
  */
1023
- export async function executeRestorePlan(plan, exec) {
1025
+ export async function executeRestorePlan(plan, exec, onAction) {
1024
1026
  const report = {
1025
1027
  snapshotId: plan.snapshotId,
1026
1028
  restored: [],
@@ -1029,7 +1031,11 @@ export async function executeRestorePlan(plan, exec) {
1029
1031
  failed: [],
1030
1032
  skipped: [],
1031
1033
  };
1034
+ const total = plan.actions.length;
1035
+ let index = 0;
1032
1036
  for (const action of plan.actions) {
1037
+ index += 1;
1038
+ onAction?.({ index, total, detail: action.description });
1033
1039
  try {
1034
1040
  switch (action.kind) {
1035
1041
  case 'hostFileRestore':
@@ -1898,6 +1904,13 @@ function makeRoutes(deps) {
1898
1904
  // M4:快照恢复。dryRun=true 只返回动作计划(planRestore,零写入);
1899
1905
  // 真实执行 = 计划 → 宿主执行器(ctx.fs 整文件/文件还原 + runDshPlugin 卸载插件)
1900
1906
  // → 与 CLI 一致的诚实报告 { restored/removedPlugins/manualHints/failed/skipped }。
1907
+ //
1908
+ // **并发防护(P1-1)**:真实执行(dryRun=false)经 runs.register('restore') 登记——
1909
+ // 同 kind 已有 running 时抛 RunConflictError → 409 拒绝。这是宿主侧的权威防重
1910
+ // (前端 loading 只是 UX):即使两个 tab / 刷新后重复点击,同一时刻至多一个
1911
+ // restore 在执行(不同快照并发恢复会交错写文件,同快照并发会互相覆盖
1912
+ // pre-restore 双保险备份,都是真实数据风险)。进度经 onAction 埋点更新
1913
+ // RunRegistry(/progress 轮询 + /runs 刷新恢复可见);响应含 runId。
1901
1914
  {
1902
1915
  kind: 'exact',
1903
1916
  path: API.restore,
@@ -1921,12 +1934,40 @@ function makeRoutes(deps) {
1921
1934
  };
1922
1935
  try {
1923
1936
  if (dryRun) {
1937
+ // dry-run 零写入、只读探测:不登记 run(并发 dry-run 无害)
1924
1938
  writeJson(res, 200, { dryRun: true, plan: await planRestore(restoreOpts) });
1925
1939
  return;
1926
1940
  }
1927
- const plan = await planRestore(restoreOpts);
1928
- const report = await executeRestorePlan(plan, makeRestoreExecutor(snapshotDir, host, host.profile));
1929
- writeJson(res, 200, { dryRun: false, report });
1941
+ // 真实执行:先登记 run(同 kind running → 409 拒绝重复恢复)
1942
+ let run;
1943
+ try {
1944
+ run = runs.register('restore');
1945
+ }
1946
+ catch (error) {
1947
+ writeJson(res, 409, { error: error instanceof Error ? error.message : String(error) });
1948
+ return;
1949
+ }
1950
+ const runId = run.runId;
1951
+ try {
1952
+ const plan = await planRestore(restoreOpts);
1953
+ const report = await executeRestorePlan(plan, makeRestoreExecutor(snapshotDir, host, host.profile),
1954
+ // m1 埋点:每执行一个恢复动作实时更新 run 状态(/progress 轮询可见)
1955
+ (info) => {
1956
+ runs.update(runId, {
1957
+ section: 'restore',
1958
+ item: info.index,
1959
+ itemTotal: info.total,
1960
+ detail: info.detail,
1961
+ });
1962
+ });
1963
+ runs.finish(runId, report);
1964
+ writeJson(res, 200, { dryRun: false, report, runId });
1965
+ }
1966
+ catch (error) {
1967
+ const message = error instanceof Error ? error.message : String(error);
1968
+ runs.fail(runId, message);
1969
+ writeJson(res, 400, { error: message, runId });
1970
+ }
1930
1971
  }
1931
1972
  catch (error) {
1932
1973
  writeJson(res, 400, { error: error instanceof Error ? error.message : String(error) });
@@ -1936,11 +1977,15 @@ function makeRoutes(deps) {
1936
1977
  // -------------------------------------------------- backup-schedule
1937
1978
  // 定时全量备份设置(GET 读 / PUT 存 sync/backup-schedule.json;无敏感字段):
1938
1979
  // 保存后重排调度器(reload);恒不含 secret、不加密(与自动同步同语义)。
1980
+ // 与全仓一致:每个方法分支都过 loopback fence(guard)——其他 /api/dsh-config-manager/*
1981
+ // 路由全部首行 guard,新增路由不得遗漏(安全不变量:仅 loopback + 同源可访问)。
1939
1982
  {
1940
1983
  kind: 'exact',
1941
1984
  path: API.backupSchedule,
1942
1985
  handler: async (req, res) => {
1943
1986
  if (req.method === 'GET') {
1987
+ if (!guard(req, res, 'GET'))
1988
+ return;
1944
1989
  try {
1945
1990
  writeJson(res, 200, { schedule: await readBackupSchedule(syncDir) });
1946
1991
  }
@@ -1950,6 +1995,8 @@ function makeRoutes(deps) {
1950
1995
  return;
1951
1996
  }
1952
1997
  if (req.method === 'PUT') {
1998
+ if (!guard(req, res, 'PUT'))
1999
+ return;
1953
2000
  try {
1954
2001
  const body = await readJsonBody(req);
1955
2002
  const parsed = validateBackupScheduleDraft(body);
@@ -1974,14 +2021,13 @@ function makeRoutes(deps) {
1974
2021
  // ------------------------------------------------- backup-schedule/run
1975
2022
  // 立即执行一次全量备份(复用 BackupScheduler.runOnce,同一时刻防重):
1976
2023
  // 返回执行结果(status/zip/skipReason/error)+ 最新配置(含 lastRun 状态)。
2024
+ // 同全仓:loopback fence(guard)——远程调用方不得触发宿主写盘操作。
1977
2025
  {
1978
2026
  kind: 'exact',
1979
2027
  path: API.backupScheduleRun,
1980
2028
  handler: async (req, res) => {
1981
- if (req.method !== 'POST') {
1982
- writeJson(res, 405, { error: `method ${req.method} not allowed` });
2029
+ if (!guard(req, res, 'POST'))
1983
2030
  return;
1984
- }
1985
2031
  try {
1986
2032
  const run = await backupScheduler.runOnce();
1987
2033
  const schedule = await readBackupSchedule(syncDir);