ysk-server-core 1.1.0 → 1.1.10

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.
Files changed (114) hide show
  1. package/dist/agents/probe.d.ts +2 -0
  2. package/dist/agents/probe.d.ts.map +1 -1
  3. package/dist/agents/probe.js +58 -1
  4. package/dist/agents/probe.js.map +1 -1
  5. package/dist/hosting/backup-cron.d.ts +25 -1
  6. package/dist/hosting/backup-cron.d.ts.map +1 -1
  7. package/dist/hosting/backup-cron.js +232 -4
  8. package/dist/hosting/backup-cron.js.map +1 -1
  9. package/dist/hosting/cdn/fan-out.d.ts.map +1 -1
  10. package/dist/hosting/cdn/fan-out.js +8 -1
  11. package/dist/hosting/cdn/fan-out.js.map +1 -1
  12. package/dist/hosting/cdn/sites.d.ts +2 -0
  13. package/dist/hosting/cdn/sites.d.ts.map +1 -1
  14. package/dist/hosting/cdn/sites.js +5 -1
  15. package/dist/hosting/cdn/sites.js.map +1 -1
  16. package/dist/hosting/db-service-config.d.ts +12 -0
  17. package/dist/hosting/db-service-config.d.ts.map +1 -1
  18. package/dist/hosting/db-service-config.js +40 -0
  19. package/dist/hosting/db-service-config.js.map +1 -1
  20. package/dist/hosting/dns-health.d.ts.map +1 -1
  21. package/dist/hosting/dns-health.js +11 -9
  22. package/dist/hosting/dns-health.js.map +1 -1
  23. package/dist/hosting/dns-lookup.d.ts.map +1 -1
  24. package/dist/hosting/dns-lookup.js +11 -0
  25. package/dist/hosting/dns-lookup.js.map +1 -1
  26. package/dist/hosting/docker/parse.d.ts +1 -0
  27. package/dist/hosting/docker/parse.d.ts.map +1 -1
  28. package/dist/hosting/docker/parse.js +22 -2
  29. package/dist/hosting/docker/parse.js.map +1 -1
  30. package/dist/hosting/ftps-service.d.ts +20 -0
  31. package/dist/hosting/ftps-service.d.ts.map +1 -1
  32. package/dist/hosting/ftps-service.js +63 -2
  33. package/dist/hosting/ftps-service.js.map +1 -1
  34. package/dist/hosting/host-migrate/inventory.d.ts.map +1 -1
  35. package/dist/hosting/host-migrate/inventory.js +8 -1
  36. package/dist/hosting/host-migrate/inventory.js.map +1 -1
  37. package/dist/hosting/leftover-apply.d.ts +16 -0
  38. package/dist/hosting/leftover-apply.d.ts.map +1 -1
  39. package/dist/hosting/leftover-apply.js +98 -1
  40. package/dist/hosting/leftover-apply.js.map +1 -1
  41. package/dist/hosting/leftover-probe.d.ts +3 -1
  42. package/dist/hosting/leftover-probe.d.ts.map +1 -1
  43. package/dist/hosting/leftover-probe.js +21 -2
  44. package/dist/hosting/leftover-probe.js.map +1 -1
  45. package/dist/hosting/nginx-sync.d.ts +1 -0
  46. package/dist/hosting/nginx-sync.d.ts.map +1 -1
  47. package/dist/hosting/nginx-sync.js +1 -1
  48. package/dist/hosting/nginx-sync.js.map +1 -1
  49. package/dist/hosting/rebuild.d.ts +1 -0
  50. package/dist/hosting/rebuild.d.ts.map +1 -1
  51. package/dist/hosting/rebuild.js +4 -2
  52. package/dist/hosting/rebuild.js.map +1 -1
  53. package/dist/hosting/service-console.d.ts +1 -1
  54. package/dist/hosting/service-console.d.ts.map +1 -1
  55. package/dist/hosting/service-console.js +2 -2
  56. package/dist/hosting/service-console.js.map +1 -1
  57. package/dist/hosting/software-install.d.ts +4 -0
  58. package/dist/hosting/software-install.d.ts.map +1 -1
  59. package/dist/hosting/software-install.js +21 -0
  60. package/dist/hosting/software-install.js.map +1 -1
  61. package/dist/hosting/validators/adapters/avax.d.ts.map +1 -1
  62. package/dist/hosting/validators/adapters/avax.js +0 -1
  63. package/dist/hosting/validators/adapters/avax.js.map +1 -1
  64. package/dist/hosting/validators/compose-runner.d.ts +8 -0
  65. package/dist/hosting/validators/compose-runner.d.ts.map +1 -1
  66. package/dist/hosting/validators/compose-runner.js +24 -4
  67. package/dist/hosting/validators/compose-runner.js.map +1 -1
  68. package/dist/hosting/validators/disk.d.ts +9 -0
  69. package/dist/hosting/validators/disk.d.ts.map +1 -1
  70. package/dist/hosting/validators/disk.js +106 -4
  71. package/dist/hosting/validators/disk.js.map +1 -1
  72. package/dist/hosting/validators/extras.d.ts +5 -0
  73. package/dist/hosting/validators/extras.d.ts.map +1 -1
  74. package/dist/hosting/validators/extras.js +21 -0
  75. package/dist/hosting/validators/extras.js.map +1 -1
  76. package/dist/hosting/validators/index.d.ts +2 -0
  77. package/dist/hosting/validators/index.d.ts.map +1 -1
  78. package/dist/hosting/validators/index.js +2 -0
  79. package/dist/hosting/validators/index.js.map +1 -1
  80. package/dist/hosting/validators/manager.d.ts +1 -0
  81. package/dist/hosting/validators/manager.d.ts.map +1 -1
  82. package/dist/hosting/validators/manager.js +22 -14
  83. package/dist/hosting/validators/manager.js.map +1 -1
  84. package/dist/hosting/validators/runtime-status.d.ts +13 -0
  85. package/dist/hosting/validators/runtime-status.d.ts.map +1 -0
  86. package/dist/hosting/validators/runtime-status.js +19 -0
  87. package/dist/hosting/validators/runtime-status.js.map +1 -0
  88. package/dist/hosting/validators/software-catalog.d.ts +24 -0
  89. package/dist/hosting/validators/software-catalog.d.ts.map +1 -0
  90. package/dist/hosting/validators/software-catalog.js +125 -0
  91. package/dist/hosting/validators/software-catalog.js.map +1 -0
  92. package/dist/hosting/vnc/hostname-hosts.d.ts +28 -0
  93. package/dist/hosting/vnc/hostname-hosts.d.ts.map +1 -0
  94. package/dist/hosting/vnc/hostname-hosts.js +177 -0
  95. package/dist/hosting/vnc/hostname-hosts.js.map +1 -0
  96. package/dist/hosting/vnc/index.d.ts +1 -0
  97. package/dist/hosting/vnc/index.d.ts.map +1 -1
  98. package/dist/hosting/vnc/index.js +1 -0
  99. package/dist/hosting/vnc/index.js.map +1 -1
  100. package/dist/hosting/vnc/service.d.ts.map +1 -1
  101. package/dist/hosting/vnc/service.js +32 -0
  102. package/dist/hosting/vnc/service.js.map +1 -1
  103. package/dist/hosting/vnc/types.d.ts +3 -0
  104. package/dist/hosting/vnc/types.d.ts.map +1 -1
  105. package/dist/hosting/vnc/types.js.map +1 -1
  106. package/dist/update/self-update-apply.d.ts +4 -0
  107. package/dist/update/self-update-apply.d.ts.map +1 -1
  108. package/dist/update/self-update-apply.js +7 -18
  109. package/dist/update/self-update-apply.js.map +1 -1
  110. package/dist/update/self-update-overlay.d.ts +5 -0
  111. package/dist/update/self-update-overlay.d.ts.map +1 -1
  112. package/dist/update/self-update-overlay.js +17 -0
  113. package/dist/update/self-update-overlay.js.map +1 -1
  114. package/package.json +10 -11
@@ -22,6 +22,8 @@ export declare function probeAllAgentRuntimes(host: HostExecutor): Promise<Agent
22
22
  * Resolve first available binary for a kind (HostSoftwareProbe PATH rules).
23
23
  */
24
24
  export declare function resolveAgentBinary(kind: AgentRuntimeKind | string, host: HostExecutor): Promise<string | undefined>;
25
+ /** True when activating has lasted >5m, is crash-looping, or systemd already auto-restarts. */
26
+ export declare function activatingLooksStuck(show: Record<string, string>, now?: number): boolean;
25
27
  /**
26
28
  * Probe a single runtime: install path, optional binary, systemd unit.
27
29
  */
@@ -1 +1 @@
1
- {"version":3,"file":"probe.d.ts","sourceRoot":"","sources":["../../src/agents/probe.ts"],"names":[],"mappings":"AACA;;GAEG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAC3E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAIxD,MAAM,WAAW,iBAAkB,SAAQ,eAAe;IACxD,UAAU,EAAE,OAAO,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,oCAAoC;IACpC,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,wBAAsB,qBAAqB,CAAC,IAAI,EAAE,YAAY,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAO5F;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CACtC,IAAI,EAAE,gBAAgB,GAAG,MAAM,EAC/B,IAAI,EAAE,YAAY,GACjB,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAe7B;AAED;;GAEG;AACH,wBAAsB,iBAAiB,CACrC,IAAI,EAAE,gBAAgB,GAAG,MAAM,EAC/B,IAAI,EAAE,YAAY,GACjB,OAAO,CAAC,iBAAiB,CAAC,CA6C5B;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE;IAC3C,IAAI,EAAE,gBAAgB,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,8DAA8D;IAC9D,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,8BAA8B;IAC9B,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;CACvB,GAAG,MAAM,CAmCT"}
1
+ {"version":3,"file":"probe.d.ts","sourceRoot":"","sources":["../../src/agents/probe.ts"],"names":[],"mappings":"AACA;;GAEG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAC3E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAIxD,MAAM,WAAW,iBAAkB,SAAQ,eAAe;IACxD,UAAU,EAAE,OAAO,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,oCAAoC;IACpC,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,wBAAsB,qBAAqB,CAAC,IAAI,EAAE,YAAY,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAO5F;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CACtC,IAAI,EAAE,gBAAgB,GAAG,MAAM,EAC/B,IAAI,EAAE,YAAY,GACjB,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAe7B;AAcD,+FAA+F;AAC/F,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC5B,GAAG,SAAa,GACf,OAAO,CAWT;AA0BD;;GAEG;AACH,wBAAsB,iBAAiB,CACrC,IAAI,EAAE,gBAAgB,GAAG,MAAM,EAC/B,IAAI,EAAE,YAAY,GACjB,OAAO,CAAC,iBAAiB,CAAC,CAoD5B;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE;IAC3C,IAAI,EAAE,gBAAgB,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,8DAA8D;IAC9D,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,8BAA8B;IAC9B,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;CACvB,GAAG,MAAM,CAmCT"}
@@ -33,6 +33,54 @@ export async function resolveAgentBinary(kind, host) {
33
33
  }
34
34
  return undefined;
35
35
  }
36
+ const ACTIVATING_STUCK_MS = 5 * 60_000;
37
+ function parseSystemctlShow(stdout) {
38
+ const out = {};
39
+ for (const line of String(stdout || '').split('\n')) {
40
+ const i = line.indexOf('=');
41
+ if (i <= 0)
42
+ continue;
43
+ out[line.slice(0, i)] = line.slice(i + 1).trim();
44
+ }
45
+ return out;
46
+ }
47
+ /** True when activating has lasted >5m, is crash-looping, or systemd already auto-restarts. */
48
+ export function activatingLooksStuck(show, now = Date.now()) {
49
+ const sub = (show.SubState || '').toLowerCase();
50
+ if (sub === 'auto-restart' || sub === 'failed' || sub === 'dead')
51
+ return true;
52
+ const restarts = Number(show.NRestarts || '0');
53
+ if (Number.isFinite(restarts) && restarts > 0)
54
+ return true;
55
+ const usec = Number(show.ActiveEnterTimestampUSec || show.StateChangeTimestampUSec || '0');
56
+ if (Number.isFinite(usec) && usec > 1_000_000) {
57
+ // systemd *TimestampUSec is microseconds since the CLOCK_REALTIME epoch
58
+ if (now - usec / 1000 > ACTIVATING_STUCK_MS)
59
+ return true;
60
+ }
61
+ return false;
62
+ }
63
+ async function isActivatingStuck(host, unitName) {
64
+ try {
65
+ const r = await host.runCommand([
66
+ 'systemctl',
67
+ 'show',
68
+ unitName,
69
+ '-p',
70
+ 'ActiveEnterTimestampUSec',
71
+ '-p',
72
+ 'StateChangeTimestampUSec',
73
+ '-p',
74
+ 'NRestarts',
75
+ '-p',
76
+ 'SubState',
77
+ ], { timeoutMs: 5_000 });
78
+ return activatingLooksStuck(parseSystemctlShow(r.stdout || r.stderr || ''));
79
+ }
80
+ catch {
81
+ return false;
82
+ }
83
+ }
36
84
  /**
37
85
  * Probe a single runtime: install path, optional binary, systemd unit.
38
86
  */
@@ -59,12 +107,21 @@ export async function probeAgentRuntime(kind, host) {
59
107
  notes.push(tl('notes.auto.n0519'));
60
108
  let status = 'unknown';
61
109
  if (unitActive === 'active') {
62
- // active unit with only placeholder is still "running" but probe notes honesty
63
110
  status = 'running';
64
111
  if (!binaryPath) {
65
112
  notes.push(tl('notes.auto.n1431'));
66
113
  }
67
114
  }
115
+ else if (unitActive === 'activating' || unitActive === 'reloading') {
116
+ status = 'activating';
117
+ if (await isActivatingStuck(host, unitName)) {
118
+ status = 'failed';
119
+ notes.push(tl('notes.agents.activatingStuck'));
120
+ }
121
+ }
122
+ else if (unitActive === 'failed') {
123
+ status = 'failed';
124
+ }
68
125
  else if (pathExists || binaryPath)
69
126
  status = 'stopped';
70
127
  else
@@ -1 +1 @@
1
- {"version":3,"file":"probe.js","sourceRoot":"","sources":["../../src/agents/probe.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"probe.js","sourceRoot":"","sources":["../../src/agents/probe.ts"],"names":[],"mappings":"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"}
@@ -115,10 +115,34 @@ export declare function restoreProjectBackup(input: {
115
115
  */
116
116
  targetDir?: string;
117
117
  }): Promise<BackupResult>;
118
- /** Delete one managed backup archive (path constrained). */
118
+ export declare const BACKUP_TRASH_DAYS = 7;
119
+ export declare const BACKUP_TRASH_RETENTION_MS: number;
120
+ export type BackupTrashItem = BackupListItem & {
121
+ deletedAt: string;
122
+ expiresAt: string;
123
+ trashName: string;
124
+ };
125
+ export declare function purgeExpiredBackupTrash(dataDir: string, nowMs?: number): number;
126
+ export declare function listBackupTrash(dataDir: string, nowMs?: number): BackupTrashItem[];
127
+ /** Move one managed backup into the 7-day trash (path constrained). */
119
128
  export declare function deleteProjectBackup(dataDir: string, projectId: string, archiveName: string): {
120
129
  ok: boolean;
121
130
  notes: string[];
131
+ trashed?: boolean;
132
+ expiresAt?: string;
133
+ };
134
+ export declare function restoreBackupTrash(dataDir: string, projectId: string, trashName: string): {
135
+ ok: boolean;
136
+ notes: string[];
137
+ };
138
+ export declare function purgeBackupTrash(dataDir: string, projectId: string, trashName: string): {
139
+ ok: boolean;
140
+ notes: string[];
141
+ };
142
+ export declare function emptyBackupTrash(dataDir: string): {
143
+ ok: boolean;
144
+ notes: string[];
145
+ purged: number;
122
146
  };
123
147
  /** Resolve a managed backup path for download (path constrained). */
124
148
  export declare function resolveBackupDownloadPath(dataDir: string, projectId: string, archiveName: string): {
@@ -1 +1 @@
1
- {"version":3,"file":"backup-cron.d.ts","sourceRoot":"","sources":["../../src/hosting/backup-cron.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"backup-cron.d.ts","sourceRoot":"","sources":["../../src/hosting/backup-cron.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Real backup (tar) and cron job management under dataDir.
3
3
  */
4
- import { existsSync, mkdirSync, readdirSync, writeFileSync, readFileSync, statSync, unlinkSync } from 'node:fs';
4
+ import { existsSync, mkdirSync, readdirSync, writeFileSync, readFileSync, renameSync, copyFileSync, statSync, unlinkSync } from 'node:fs';
5
5
  import { join, resolve, sep } from 'node:path';
6
6
  import { randomUUID } from 'node:crypto';
7
7
  import { ErrorCodes, YskError, tl } from 'ysk-server-shared';
@@ -37,6 +37,8 @@ export function listBackups(dataDir) {
37
37
  return [];
38
38
  const out = [];
39
39
  for (const projectId of readdirSync(root)) {
40
+ if (projectId === '.trash' || projectId.startsWith('.'))
41
+ continue;
40
42
  const dir = join(root, projectId);
41
43
  try {
42
44
  if (!statSync(dir).isDirectory())
@@ -469,8 +471,144 @@ async function chownAfterRestore(input) {
469
471
  ? [tl('notes.auto.t0337', { v0: (u), v1: (g), v2: (input.homeDir) })]
470
472
  : [tl('notes.tpl.chownFailed', { detail: (r.stderr || r.stdout).slice(0, 120) })];
471
473
  }
472
- /** Delete one managed backup archive (path constrained). */
474
+ export const BACKUP_TRASH_DAYS = 7;
475
+ export const BACKUP_TRASH_RETENTION_MS = BACKUP_TRASH_DAYS * 24 * 60 * 60 * 1000;
476
+ const TRASH_DIR = '.trash';
477
+ function trashRoot(dataDir) {
478
+ return resolve(join(dataDir, 'backups', TRASH_DIR));
479
+ }
480
+ function resolveTrashArchive(dataDir, projectId, archiveName) {
481
+ const id = String(projectId ?? '')
482
+ .replace(/[^a-zA-Z0-9_-]/g, '')
483
+ .slice(0, 80);
484
+ if (!id)
485
+ return { ok: false, notes: [tl('notes.auto.n1115')] };
486
+ const safeName = String(archiveName ?? '')
487
+ .replace(/[/\\]/g, '')
488
+ .replace(/\0/g, '');
489
+ if (!safeName.endsWith('.tar.gz') || safeName.includes('..')) {
490
+ return { ok: false, notes: [tl('notes.auto.n1116')] };
491
+ }
492
+ const root = resolve(join(trashRoot(dataDir), id));
493
+ const archivePath = resolve(join(root, safeName));
494
+ const rootPrefix = root.endsWith(sep) ? root : root + sep;
495
+ if (archivePath !== root && !archivePath.startsWith(rootPrefix)) {
496
+ return { ok: false, notes: [tl('notes.auto.n1460')] };
497
+ }
498
+ return { ok: true, root, path: archivePath, name: safeName, metaPath: `${archivePath}.json` };
499
+ }
500
+ function moveFile(src, dest) {
501
+ try {
502
+ renameSync(src, dest);
503
+ }
504
+ catch {
505
+ copyFileSync(src, dest);
506
+ unlinkSync(src);
507
+ }
508
+ }
509
+ function writeTrashMeta(metaPath, meta) {
510
+ writeFileSync(metaPath, JSON.stringify(meta), 'utf8');
511
+ }
512
+ function readTrashMeta(metaPath, fallback) {
513
+ try {
514
+ const parsed = JSON.parse(readFileSync(metaPath, 'utf8'));
515
+ if (parsed.deletedAt && parsed.originalName) {
516
+ return {
517
+ deletedAt: String(parsed.deletedAt),
518
+ originalName: String(parsed.originalName),
519
+ bytes: Number(parsed.bytes) || fallback.bytes,
520
+ projectId: String(parsed.projectId || fallback.projectId),
521
+ };
522
+ }
523
+ }
524
+ catch {
525
+ /* use fallback */
526
+ }
527
+ return fallback;
528
+ }
529
+ export function purgeExpiredBackupTrash(dataDir, nowMs = Date.now()) {
530
+ const root = trashRoot(dataDir);
531
+ if (!existsSync(root))
532
+ return 0;
533
+ let n = 0;
534
+ for (const projectId of readdirSync(root)) {
535
+ const dir = join(root, projectId);
536
+ try {
537
+ if (!statSync(dir).isDirectory())
538
+ continue;
539
+ for (const name of readdirSync(dir).filter((f) => f.endsWith('.tar.gz'))) {
540
+ const path = join(dir, name);
541
+ const metaPath = `${path}.json`;
542
+ const st = statSync(path);
543
+ const meta = readTrashMeta(metaPath, {
544
+ deletedAt: st.mtime.toISOString(),
545
+ originalName: name,
546
+ bytes: st.size,
547
+ projectId,
548
+ });
549
+ const deletedMs = Date.parse(meta.deletedAt);
550
+ if (!Number.isFinite(deletedMs) || nowMs - deletedMs < BACKUP_TRASH_RETENTION_MS)
551
+ continue;
552
+ try {
553
+ unlinkSync(path);
554
+ if (existsSync(metaPath))
555
+ unlinkSync(metaPath);
556
+ n += 1;
557
+ }
558
+ catch {
559
+ /* keep */
560
+ }
561
+ }
562
+ }
563
+ catch {
564
+ /* skip */
565
+ }
566
+ }
567
+ return n;
568
+ }
569
+ export function listBackupTrash(dataDir, nowMs = Date.now()) {
570
+ purgeExpiredBackupTrash(dataDir, nowMs);
571
+ const root = trashRoot(dataDir);
572
+ if (!existsSync(root))
573
+ return [];
574
+ const out = [];
575
+ for (const projectId of readdirSync(root)) {
576
+ const dir = join(root, projectId);
577
+ try {
578
+ if (!statSync(dir).isDirectory())
579
+ continue;
580
+ for (const name of readdirSync(dir).filter((f) => f.endsWith('.tar.gz'))) {
581
+ const path = join(dir, name);
582
+ const st = statSync(path);
583
+ const meta = readTrashMeta(`${path}.json`, {
584
+ deletedAt: st.mtime.toISOString(),
585
+ originalName: name,
586
+ bytes: st.size,
587
+ projectId,
588
+ });
589
+ const deletedMs = Date.parse(meta.deletedAt);
590
+ const expiresAt = new Date((Number.isFinite(deletedMs) ? deletedMs : st.mtimeMs) + BACKUP_TRASH_RETENTION_MS).toISOString();
591
+ out.push({
592
+ projectId,
593
+ name: meta.originalName,
594
+ trashName: name,
595
+ path,
596
+ bytes: st.size,
597
+ mtime: st.mtime.toISOString(),
598
+ deletedAt: meta.deletedAt,
599
+ expiresAt,
600
+ });
601
+ }
602
+ }
603
+ catch {
604
+ /* skip */
605
+ }
606
+ }
607
+ return out.sort((a, b) => (a.deletedAt < b.deletedAt ? 1 : -1));
608
+ }
609
+ /** Move one managed backup into the 7-day trash (path constrained). */
473
610
  export function deleteProjectBackup(dataDir, projectId, archiveName) {
611
+ purgeExpiredBackupTrash(dataDir);
474
612
  const resolved = resolveManagedBackupArchive(dataDir, projectId, archiveName);
475
613
  if (!resolved.ok)
476
614
  return { ok: false, notes: resolved.notes };
@@ -478,13 +616,103 @@ export function deleteProjectBackup(dataDir, projectId, archiveName) {
478
616
  return { ok: false, notes: [tl('notes.backup.fileNotFound')] };
479
617
  }
480
618
  try {
481
- unlinkSync(resolved.path);
482
- return { ok: true, notes: [tl('notes.tpl.deleted', { name: resolved.name })] };
619
+ const st = statSync(resolved.path);
620
+ let trashName = resolved.name;
621
+ let dest = resolveTrashArchive(dataDir, projectId, trashName);
622
+ if (!dest.ok)
623
+ return { ok: false, notes: dest.notes };
624
+ if (existsSync(dest.path)) {
625
+ const stamp = new Date().toISOString().replace(/[:.]/g, '-');
626
+ trashName = resolved.name.replace(/\.tar\.gz$/i, `-${stamp}.tar.gz`);
627
+ dest = resolveTrashArchive(dataDir, projectId, trashName);
628
+ if (!dest.ok)
629
+ return { ok: false, notes: dest.notes };
630
+ }
631
+ mkdirSync(dest.root, { recursive: true });
632
+ moveFile(resolved.path, dest.path);
633
+ const deletedAt = new Date().toISOString();
634
+ writeTrashMeta(dest.metaPath, {
635
+ deletedAt,
636
+ originalName: resolved.name,
637
+ bytes: st.size,
638
+ projectId,
639
+ });
640
+ const expiresAt = new Date(Date.parse(deletedAt) + BACKUP_TRASH_RETENTION_MS).toISOString();
641
+ return {
642
+ ok: true,
643
+ trashed: true,
644
+ expiresAt,
645
+ notes: [tl('notes.backup.movedToTrash', { name: resolved.name, days: BACKUP_TRASH_DAYS })],
646
+ };
647
+ }
648
+ catch (e) {
649
+ return { ok: false, notes: [e instanceof Error ? e.message : String(e)] };
650
+ }
651
+ }
652
+ export function restoreBackupTrash(dataDir, projectId, trashName) {
653
+ const dest = resolveTrashArchive(dataDir, projectId, trashName);
654
+ if (!dest.ok)
655
+ return { ok: false, notes: dest.notes };
656
+ if (!existsSync(dest.path)) {
657
+ return { ok: false, notes: [tl('notes.backup.fileNotFound')] };
658
+ }
659
+ const meta = readTrashMeta(dest.metaPath, {
660
+ deletedAt: new Date().toISOString(),
661
+ originalName: dest.name,
662
+ bytes: 0,
663
+ projectId,
664
+ });
665
+ const live = resolveManagedBackupArchive(dataDir, projectId, meta.originalName);
666
+ if (!live.ok)
667
+ return { ok: false, notes: live.notes };
668
+ if (existsSync(live.path)) {
669
+ return { ok: false, notes: [tl('notes.backup.restoreNameExists', { name: meta.originalName })] };
670
+ }
671
+ try {
672
+ mkdirSync(live.root, { recursive: true });
673
+ moveFile(dest.path, live.path);
674
+ if (existsSync(dest.metaPath))
675
+ unlinkSync(dest.metaPath);
676
+ return { ok: true, notes: [tl('notes.backup.restoredFromTrash', { name: meta.originalName })] };
483
677
  }
484
678
  catch (e) {
485
679
  return { ok: false, notes: [e instanceof Error ? e.message : String(e)] };
486
680
  }
487
681
  }
682
+ export function purgeBackupTrash(dataDir, projectId, trashName) {
683
+ const dest = resolveTrashArchive(dataDir, projectId, trashName);
684
+ if (!dest.ok)
685
+ return { ok: false, notes: dest.notes };
686
+ if (!existsSync(dest.path)) {
687
+ return { ok: false, notes: [tl('notes.backup.fileNotFound')] };
688
+ }
689
+ try {
690
+ unlinkSync(dest.path);
691
+ if (existsSync(dest.metaPath))
692
+ unlinkSync(dest.metaPath);
693
+ return { ok: true, notes: [tl('notes.tpl.deleted', { name: dest.name })] };
694
+ }
695
+ catch (e) {
696
+ return { ok: false, notes: [e instanceof Error ? e.message : String(e)] };
697
+ }
698
+ }
699
+ export function emptyBackupTrash(dataDir) {
700
+ const items = listBackupTrash(dataDir);
701
+ let purged = 0;
702
+ const notes = [];
703
+ for (const item of items) {
704
+ const r = purgeBackupTrash(dataDir, item.projectId, item.trashName);
705
+ if (r.ok)
706
+ purged += 1;
707
+ else
708
+ notes.push(...r.notes);
709
+ }
710
+ return {
711
+ ok: notes.length === 0,
712
+ purged,
713
+ notes: notes.length ? notes : [tl('notes.backup.trashEmptied', { n: purged })],
714
+ };
715
+ }
488
716
  /** Resolve a managed backup path for download (path constrained). */
489
717
  export function resolveBackupDownloadPath(dataDir, projectId, archiveName) {
490
718
  const resolved = resolveManagedBackupArchive(dataDir, projectId, archiveName);