ownkey 0.8.0 → 1.0.1

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 (91) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +86 -208
  3. package/dist/ai/factory.js +2 -2
  4. package/dist/ai/factory.js.map +1 -1
  5. package/dist/ai/gemini.d.ts.map +1 -1
  6. package/dist/ai/gemini.js +13 -3
  7. package/dist/ai/gemini.js.map +1 -1
  8. package/dist/ai/ollama.d.ts +0 -2
  9. package/dist/ai/ollama.d.ts.map +1 -1
  10. package/dist/ai/ollama.js +20 -93
  11. package/dist/ai/ollama.js.map +1 -1
  12. package/dist/ai/openai.d.ts +4 -1
  13. package/dist/ai/openai.d.ts.map +1 -1
  14. package/dist/ai/openai.js +7 -3
  15. package/dist/ai/openai.js.map +1 -1
  16. package/dist/ai/provider.d.ts +4 -0
  17. package/dist/ai/provider.d.ts.map +1 -1
  18. package/dist/ai/provider.js +80 -47
  19. package/dist/ai/provider.js.map +1 -1
  20. package/dist/commands/apply.d.ts.map +1 -1
  21. package/dist/commands/apply.js +82 -47
  22. package/dist/commands/apply.js.map +1 -1
  23. package/dist/commands/config.d.ts.map +1 -1
  24. package/dist/commands/config.js +249 -101
  25. package/dist/commands/config.js.map +1 -1
  26. package/dist/commands/suggest.d.ts.map +1 -1
  27. package/dist/commands/suggest.js +63 -19
  28. package/dist/commands/suggest.js.map +1 -1
  29. package/dist/commands/undo.d.ts.map +1 -1
  30. package/dist/commands/undo.js +35 -25
  31. package/dist/commands/undo.js.map +1 -1
  32. package/dist/config/keychain.d.ts.map +1 -1
  33. package/dist/config/keychain.js +5 -1
  34. package/dist/config/keychain.js.map +1 -1
  35. package/dist/config/manager.d.ts +15 -2
  36. package/dist/config/manager.d.ts.map +1 -1
  37. package/dist/config/manager.js +42 -13
  38. package/dist/config/manager.js.map +1 -1
  39. package/dist/core/apply/engine.d.ts +19 -12
  40. package/dist/core/apply/engine.d.ts.map +1 -1
  41. package/dist/core/apply/engine.js +162 -134
  42. package/dist/core/apply/engine.js.map +1 -1
  43. package/dist/core/apply/index.d.ts +4 -2
  44. package/dist/core/apply/index.d.ts.map +1 -1
  45. package/dist/core/apply/index.js.map +1 -1
  46. package/dist/core/apply/interactive.d.ts +1 -1
  47. package/dist/core/apply/interactive.d.ts.map +1 -1
  48. package/dist/core/apply/interactive.js.map +1 -1
  49. package/dist/core/backup/index.d.ts +2 -1
  50. package/dist/core/backup/index.d.ts.map +1 -1
  51. package/dist/core/backup/index.js.map +1 -1
  52. package/dist/core/backup/manager.d.ts +6 -1
  53. package/dist/core/backup/manager.d.ts.map +1 -1
  54. package/dist/core/backup/manager.js +26 -18
  55. package/dist/core/backup/manager.js.map +1 -1
  56. package/dist/core/diff/applier.d.ts +23 -8
  57. package/dist/core/diff/applier.d.ts.map +1 -1
  58. package/dist/core/diff/applier.js +85 -80
  59. package/dist/core/diff/applier.js.map +1 -1
  60. package/dist/core/diff/index.d.ts +6 -3
  61. package/dist/core/diff/index.d.ts.map +1 -1
  62. package/dist/core/diff/index.js.map +1 -1
  63. package/dist/core/diff/parser.d.ts +2 -0
  64. package/dist/core/diff/parser.d.ts.map +1 -1
  65. package/dist/core/diff/parser.js +15 -5
  66. package/dist/core/diff/parser.js.map +1 -1
  67. package/dist/core/diff/validator.d.ts +3 -8
  68. package/dist/core/diff/validator.d.ts.map +1 -1
  69. package/dist/core/diff/validator.js +13 -71
  70. package/dist/core/diff/validator.js.map +1 -1
  71. package/dist/db/client.d.ts +10 -1
  72. package/dist/db/client.d.ts.map +1 -1
  73. package/dist/db/client.js +69 -87
  74. package/dist/db/client.js.map +1 -1
  75. package/dist/db/migrations/001_init.sql +80 -80
  76. package/dist/db/migrations/002_applies.sql +33 -32
  77. package/dist/index.js +13 -20
  78. package/dist/index.js.map +1 -1
  79. package/dist/storage/local.d.ts +83 -0
  80. package/dist/storage/local.d.ts.map +1 -0
  81. package/dist/storage/local.js +198 -0
  82. package/dist/storage/local.js.map +1 -0
  83. package/dist/types/index.d.ts +7 -0
  84. package/dist/types/index.d.ts.map +1 -1
  85. package/dist/types/index.js +1 -0
  86. package/dist/types/index.js.map +1 -1
  87. package/dist/utils/severity.d.ts +6 -0
  88. package/dist/utils/severity.d.ts.map +1 -0
  89. package/dist/utils/severity.js +19 -0
  90. package/dist/utils/severity.js.map +1 -0
  91. package/package.json +72 -72
@@ -1,177 +1,205 @@
1
- import { DiffParser, DiffValidator, DiffApplier } from '../diff/index.js';
1
+ import { DiffParser, DiffApplier } from '../diff/index.js';
2
2
  import { BackupManager } from '../backup/index.js';
3
+ import { InteractiveMode } from './interactive.js';
3
4
  import { dbClient } from '../../db/client.js';
4
5
  import { logger } from '../../utils/logger.js';
5
- import { join } from 'path';
6
+ import { localStorage } from '../../storage/local.js';
7
+ import { readFile, writeFile, mkdir } from 'fs/promises';
8
+ import { existsSync, statSync } from 'fs';
9
+ import { dirname, isAbsolute, relative, resolve } from 'path';
10
+ const UUID_RE = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;
6
11
  export class ApplyEngine {
7
12
  backupManager;
8
- constructor() {
9
- this.backupManager = new BackupManager();
13
+ constructor(backupManager) {
14
+ this.backupManager = backupManager ?? new BackupManager();
10
15
  }
11
- /**
12
- * Apply a suggestion to the codebase
13
- */
14
16
  async applySuggestion(suggestionId, options = {}) {
15
- const { dryRun = false, force = false, createBackup = true, } = options;
17
+ const { dryRun = false, force = false, createBackup = true, interactive = false } = options;
18
+ const fail = (error, warnings = []) => ({
19
+ success: false,
20
+ suggestionId,
21
+ filesModified: [],
22
+ error,
23
+ warnings,
24
+ });
16
25
  try {
17
- logger.verbose(`Applying suggestion: ${suggestionId}`);
18
- // 1. Load suggestion from database
26
+ // 1. Load
19
27
  const suggestion = await this.loadSuggestion(suggestionId);
20
28
  if (!suggestion) {
21
- return {
22
- success: false,
23
- suggestionId,
24
- filesModified: [],
25
- error: 'Suggestion not found',
26
- };
29
+ return fail(`Suggestion not found: ${suggestionId}. Run "ownkey apply" to list available IDs.`);
30
+ }
31
+ if (!suggestion.diff.trim()) {
32
+ return fail('This suggestion has no code change attached (the model gave advice only), so there is nothing to apply.');
27
33
  }
28
- // 2. Parse diff
29
- logger.verbose('Parsing diff...');
30
- const diffs = DiffParser.parse(suggestion.diff);
34
+ if (suggestion.appliedAt && !dryRun && !force) {
35
+ return fail(`Already applied${suggestion.backupId ? ` (undo with: ownkey undo ${suggestion.backupId})` : ''}. Use --force to try again.`);
36
+ }
37
+ // 2. Parse
38
+ const diffs = DiffParser.parse(suggestion.diff).filter((d) => d.hunks.length > 0);
31
39
  if (diffs.length === 0) {
32
- return {
33
- success: false,
34
- suggestionId,
35
- filesModified: [],
36
- error: 'No valid diff found in suggestion',
37
- };
40
+ return fail('The suggestion diff could not be parsed as a unified diff');
41
+ }
42
+ // 3. Resolve paths against the project the suggestion was generated for
43
+ const root = this.resolveRoot(suggestion.projectPath);
44
+ const warnings = [];
45
+ const planned = [];
46
+ const errors = [];
47
+ for (const diff of diffs) {
48
+ let relPath = diff.filePath;
49
+ // Fall back to the suggestion's filePath when the diff header path does not exist
50
+ if (diffs.length === 1 &&
51
+ suggestion.filePath &&
52
+ diff.oldPath !== '/dev/null' &&
53
+ !existsSync(resolve(root, relPath)) &&
54
+ existsSync(resolve(root, suggestion.filePath))) {
55
+ relPath = suggestion.filePath;
56
+ }
57
+ const absPath = resolve(root, relPath);
58
+ const rel = relative(root, absPath);
59
+ if (rel.startsWith('..') || isAbsolute(rel)) {
60
+ errors.push(`Refusing to modify a file outside the project: ${relPath}`);
61
+ continue;
62
+ }
63
+ const exists = existsSync(absPath);
64
+ if (!exists && diff.oldPath !== '/dev/null' && diff.hunks.some((h) => h.oldLines > 0)) {
65
+ errors.push(`File not found: ${rel}`);
66
+ continue;
67
+ }
68
+ const original = exists ? await readFile(absPath, 'utf-8') : null;
69
+ const result = DiffApplier.applyToContent(original, diff);
70
+ warnings.push(...result.warnings.map((w) => `${rel}: ${w}`));
71
+ if (!result.ok) {
72
+ errors.push(...result.errors.map((e) => `${rel}: ${e}`));
73
+ continue;
74
+ }
75
+ planned.push({ diff, absPath, relPath: rel, newContent: result.content });
76
+ }
77
+ if (errors.length > 0 && (!force || planned.length === 0)) {
78
+ return fail(`Cannot apply: ${errors.join('; ')}`, warnings);
38
79
  }
39
- // 3. Validate all diffs
40
- logger.verbose('Validating changes...');
41
- const validationResults = await Promise.all(diffs.map((diff) => {
42
- const filePath = join(process.cwd(), diff.filePath);
43
- return DiffValidator.validate(diff, filePath);
44
- }));
45
- const allValid = validationResults.every((r) => r.valid);
46
- const warnings = validationResults.flatMap((r) => r.warnings);
47
- if (!allValid && !force) {
48
- const errors = validationResults.flatMap((r) => r.errors);
49
- return {
50
- success: false,
51
- suggestionId,
52
- filesModified: [],
53
- error: `Validation failed: ${errors.join(', ')}`,
54
- warnings,
55
- };
80
+ if (errors.length > 0) {
81
+ warnings.push(...errors.map((e) => `Skipped (--force): ${e}`));
56
82
  }
57
- // 4. Dry run mode - just show what would change
83
+ // 4. Dry run: show the change, write nothing
58
84
  if (dryRun) {
59
- logger.info('Dry run mode - no changes will be made');
60
- return {
61
- success: true,
62
- suggestionId,
63
- filesModified: diffs.map((d) => d.filePath),
64
- warnings,
65
- };
85
+ for (const change of planned)
86
+ InteractiveMode.showFullDiff(change.diff);
87
+ return { success: true, suggestionId, filesModified: planned.map((p) => p.relPath), warnings };
66
88
  }
67
- // 5. Create backup
89
+ // 5. Interactive confirmation
90
+ let toWrite = planned;
91
+ if (interactive) {
92
+ if (!process.stdin.isTTY) {
93
+ return fail('No terminal to confirm in. Re-run with --auto to apply, or --dry-run to preview.', warnings);
94
+ }
95
+ toWrite = [];
96
+ for (const change of planned) {
97
+ const answer = await InteractiveMode.confirmApply(change.diff, { showFullDiff: true });
98
+ if (answer.skipAll) {
99
+ return { success: false, suggestionId, filesModified: [], warnings, skipped: true, quit: true, error: 'Cancelled' };
100
+ }
101
+ if (answer.confirmed)
102
+ toWrite.push(change);
103
+ }
104
+ if (toWrite.length === 0) {
105
+ return { success: false, suggestionId, filesModified: [], warnings, skipped: true, error: 'Skipped' };
106
+ }
107
+ }
108
+ // 6. Backup
68
109
  let backupId;
69
110
  if (createBackup) {
70
- logger.verbose('Creating backup...');
71
- const filesToBackup = diffs.map((d) => join(process.cwd(), d.filePath));
72
- backupId = await this.backupManager.createBackup(filesToBackup, `apply-${suggestionId}`);
111
+ backupId = await this.backupManager.createBackup(toWrite.map((c) => c.absPath), `apply-${suggestionId}`, root);
73
112
  logger.verbose(`Backup created: ${backupId}`);
74
113
  }
75
- // 6. Apply changes
76
- logger.verbose('Applying changes...');
114
+ // 7. Write, rolling back on any failure
77
115
  const filesModified = [];
78
- const applyErrors = [];
79
- for (const diff of diffs) {
80
- const filePath = join(process.cwd(), diff.filePath);
81
- const result = await DiffApplier.apply(diff, filePath);
82
- if (result.success) {
83
- filesModified.push(result.filePath);
84
- logger.verbose(`Applied changes to ${result.filePath}`);
116
+ try {
117
+ for (const change of toWrite) {
118
+ await mkdir(dirname(change.absPath), { recursive: true });
119
+ await writeFile(change.absPath, change.newContent, 'utf-8');
120
+ filesModified.push(change.relPath);
85
121
  }
86
- else {
87
- applyErrors.push(result.error || 'Unknown error');
88
- logger.error(`Failed to apply changes to ${result.filePath}: ${result.error}`);
122
+ }
123
+ catch (error) {
124
+ if (backupId) {
125
+ logger.warn('Write failed, restoring backup...');
126
+ await this.backupManager.restore(backupId);
89
127
  }
128
+ return fail(`Write failed: ${error.message}`, warnings);
90
129
  }
91
- // 7. If any apply failed, rollback
92
- if (applyErrors.length > 0 && backupId) {
93
- logger.warn('Some changes failed, rolling back...');
94
- await this.backupManager.restore(backupId);
95
- return {
96
- success: false,
97
- suggestionId,
98
- filesModified: [],
99
- backupId,
100
- error: `Apply failed: ${applyErrors.join(', ')}`,
101
- warnings,
102
- };
130
+ // 8. Record
131
+ if (suggestion.localId) {
132
+ await localStorage
133
+ .updateSuggestion(suggestion.localId, { appliedAt: new Date().toISOString(), backupId })
134
+ .catch(() => undefined);
103
135
  }
104
- // 8. Record apply in database
105
- if (dbClient.isConnected()) {
106
- await this.recordApply(suggestionId, filesModified, backupId);
136
+ if (dbClient.isConnected() && suggestion.dbId) {
137
+ await this.recordApply(suggestion.dbId, filesModified, backupId).catch((error) => logger.verbose(`Could not record apply in database: ${error.message}`));
107
138
  }
108
- logger.success(`Successfully applied suggestion ${suggestionId}`);
109
- return {
110
- success: true,
111
- suggestionId,
112
- filesModified,
113
- backupId,
114
- warnings,
115
- };
139
+ return { success: true, suggestionId, filesModified, backupId, warnings };
116
140
  }
117
141
  catch (error) {
118
- logger.error('Apply engine error:', error);
119
- return {
120
- success: false,
121
- suggestionId,
122
- filesModified: [],
123
- error: error.message,
124
- };
142
+ logger.debug(`Apply engine error: ${error.stack}`);
143
+ return fail(error.message);
125
144
  }
126
145
  }
146
+ resolveRoot(projectPath) {
147
+ if (projectPath && existsSync(projectPath) && statSync(projectPath).isDirectory()) {
148
+ return projectPath;
149
+ }
150
+ if (projectPath && existsSync(projectPath)) {
151
+ return dirname(projectPath); // suggest was run on a single file
152
+ }
153
+ return process.cwd();
154
+ }
127
155
  /**
128
- * Load suggestion from database
156
+ * Load a suggestion from local storage (always written by suggest) or the optional database.
129
157
  */
130
158
  async loadSuggestion(suggestionId) {
131
- if (!dbClient.isConnected()) {
132
- throw new Error('Database not connected. Cannot load suggestion.');
133
- }
134
- const sql = dbClient.getClient();
135
- if (!sql) {
136
- return null;
159
+ const stored = await localStorage.loadSuggestion(suggestionId).catch(() => null);
160
+ if (stored) {
161
+ return {
162
+ id: stored.id,
163
+ diff: stored.diff || '',
164
+ filePath: stored.filePath,
165
+ projectPath: stored.projectPath,
166
+ localId: stored.id,
167
+ dbId: stored.dbId,
168
+ appliedAt: stored.appliedAt,
169
+ backupId: stored.backupId,
170
+ };
137
171
  }
138
- const results = await sql `
139
- SELECT diff FROM suggestions WHERE id = ${suggestionId}
140
- `;
141
- if (results.length === 0) {
142
- return null;
172
+ if (dbClient.isConnected() && UUID_RE.test(suggestionId)) {
173
+ const sql = dbClient.getClient();
174
+ if (sql) {
175
+ const rows = await sql `
176
+ SELECT s.id, s.diff, s.file_path, p.root_path
177
+ FROM suggestions s JOIN projects p ON p.id = s.project_id
178
+ WHERE s.id = ${suggestionId}
179
+ `;
180
+ if (rows.length > 0) {
181
+ const row = rows[0];
182
+ return {
183
+ id: row.id,
184
+ diff: row.diff || '',
185
+ filePath: row.file_path,
186
+ projectPath: row.root_path,
187
+ dbId: row.id,
188
+ };
189
+ }
190
+ }
143
191
  }
144
- return results[0];
192
+ return null;
145
193
  }
146
- /**
147
- * Record apply operation in database
148
- */
149
- async recordApply(suggestionId, filesModified, backupId) {
194
+ async recordApply(dbSuggestionId, filesModified, backupId) {
150
195
  const sql = dbClient.getClient();
151
- if (!sql) {
196
+ if (!sql)
152
197
  return;
153
- }
154
- await sql `
155
- INSERT INTO applies (
156
- id,
157
- suggestion_id,
158
- files_modified,
159
- backup_id,
160
- applied_at,
161
- status
162
- ) VALUES (
163
- gen_random_uuid(),
164
- ${suggestionId},
165
- ${JSON.stringify(filesModified)},
166
- ${backupId || null},
167
- NOW(),
168
- 'success'
169
- )
198
+ await sql `
199
+ INSERT INTO applies (id, suggestion_id, files_modified, backup_id, applied_at, status)
200
+ VALUES (gen_random_uuid(), ${dbSuggestionId}, ${JSON.stringify(filesModified)}::jsonb, ${backupId || null}, NOW(), 'success')
170
201
  `;
171
202
  }
172
- /**
173
- * Get backup manager instance
174
- */
175
203
  getBackupManager() {
176
204
  return this.backupManager;
177
205
  }
@@ -1 +1 @@
1
- {"version":3,"file":"engine.js","sourceRoot":"","sources":["../../../src/core/apply/engine.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC1E,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAC/C,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAkB5B,MAAM,OAAO,WAAW;IACZ,aAAa,CAAgB;IAErC;QACI,IAAI,CAAC,aAAa,GAAG,IAAI,aAAa,EAAE,CAAC;IAC7C,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,eAAe,CACjB,YAAoB,EACpB,UAAwB,EAAE;QAE1B,MAAM,EACF,MAAM,GAAG,KAAK,EACd,KAAK,GAAG,KAAK,EACb,YAAY,GAAG,IAAI,GACtB,GAAG,OAAO,CAAC;QAEZ,IAAI,CAAC;YACD,MAAM,CAAC,OAAO,CAAC,wBAAwB,YAAY,EAAE,CAAC,CAAC;YAEvD,mCAAmC;YACnC,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC;YAC3D,IAAI,CAAC,UAAU,EAAE,CAAC;gBACd,OAAO;oBACH,OAAO,EAAE,KAAK;oBACd,YAAY;oBACZ,aAAa,EAAE,EAAE;oBACjB,KAAK,EAAE,sBAAsB;iBAChC,CAAC;YACN,CAAC;YAED,gBAAgB;YAChB,MAAM,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC;YAClC,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;YAChD,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACrB,OAAO;oBACH,OAAO,EAAE,KAAK;oBACd,YAAY;oBACZ,aAAa,EAAE,EAAE;oBACjB,KAAK,EAAE,mCAAmC;iBAC7C,CAAC;YACN,CAAC;YAED,wBAAwB;YACxB,MAAM,CAAC,OAAO,CAAC,uBAAuB,CAAC,CAAC;YACxC,MAAM,iBAAiB,GAAG,MAAM,OAAO,CAAC,GAAG,CACvC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;gBACf,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;gBACpD,OAAO,aAAa,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;YAClD,CAAC,CAAC,CACL,CAAC;YAEF,MAAM,QAAQ,GAAG,iBAAiB,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;YACzD,MAAM,QAAQ,GAAG,iBAAiB,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;YAE9D,IAAI,CAAC,QAAQ,IAAI,CAAC,KAAK,EAAE,CAAC;gBACtB,MAAM,MAAM,GAAG,iBAAiB,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;gBAC1D,OAAO;oBACH,OAAO,EAAE,KAAK;oBACd,YAAY;oBACZ,aAAa,EAAE,EAAE;oBACjB,KAAK,EAAE,sBAAsB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;oBAChD,QAAQ;iBACX,CAAC;YACN,CAAC;YAED,gDAAgD;YAChD,IAAI,MAAM,EAAE,CAAC;gBACT,MAAM,CAAC,IAAI,CAAC,wCAAwC,CAAC,CAAC;gBACtD,OAAO;oBACH,OAAO,EAAE,IAAI;oBACb,YAAY;oBACZ,aAAa,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC;oBAC3C,QAAQ;iBACX,CAAC;YACN,CAAC;YAED,mBAAmB;YACnB,IAAI,QAA4B,CAAC;YACjC,IAAI,YAAY,EAAE,CAAC;gBACf,MAAM,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC;gBACrC,MAAM,aAAa,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;gBACxE,QAAQ,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,YAAY,CAC5C,aAAa,EACb,SAAS,YAAY,EAAE,CAC1B,CAAC;gBACF,MAAM,CAAC,OAAO,CAAC,mBAAmB,QAAQ,EAAE,CAAC,CAAC;YAClD,CAAC;YAED,mBAAmB;YACnB,MAAM,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC;YACtC,MAAM,aAAa,GAAa,EAAE,CAAC;YACnC,MAAM,WAAW,GAAa,EAAE,CAAC;YAEjC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBACvB,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;gBACpD,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,KAAK,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;gBAEvD,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;oBACjB,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;oBACpC,MAAM,CAAC,OAAO,CAAC,sBAAsB,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;gBAC5D,CAAC;qBAAM,CAAC;oBACJ,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,eAAe,CAAC,CAAC;oBAClD,MAAM,CAAC,KAAK,CAAC,8BAA8B,MAAM,CAAC,QAAQ,KAAK,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;gBACnF,CAAC;YACL,CAAC;YAED,mCAAmC;YACnC,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,IAAI,QAAQ,EAAE,CAAC;gBACrC,MAAM,CAAC,IAAI,CAAC,sCAAsC,CAAC,CAAC;gBACpD,MAAM,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;gBAC3C,OAAO;oBACH,OAAO,EAAE,KAAK;oBACd,YAAY;oBACZ,aAAa,EAAE,EAAE;oBACjB,QAAQ;oBACR,KAAK,EAAE,iBAAiB,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;oBAChD,QAAQ;iBACX,CAAC;YACN,CAAC;YAED,8BAA8B;YAC9B,IAAI,QAAQ,CAAC,WAAW,EAAE,EAAE,CAAC;gBACzB,MAAM,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE,aAAa,EAAE,QAAQ,CAAC,CAAC;YAClE,CAAC;YAED,MAAM,CAAC,OAAO,CAAC,mCAAmC,YAAY,EAAE,CAAC,CAAC;YAClE,OAAO;gBACH,OAAO,EAAE,IAAI;gBACb,YAAY;gBACZ,aAAa;gBACb,QAAQ;gBACR,QAAQ;aACX,CAAC;QACN,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,MAAM,CAAC,KAAK,CAAC,qBAAqB,EAAE,KAAc,CAAC,CAAC;YACpD,OAAO;gBACH,OAAO,EAAE,KAAK;gBACd,YAAY;gBACZ,aAAa,EAAE,EAAE;gBACjB,KAAK,EAAG,KAAe,CAAC,OAAO;aAClC,CAAC;QACN,CAAC;IACL,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,cAAc,CAAC,YAAoB;QAC7C,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,EAAE,CAAC;YAC1B,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;QACvE,CAAC;QAED,MAAM,GAAG,GAAG,QAAQ,CAAC,SAAS,EAAE,CAAC;QACjC,IAAI,CAAC,GAAG,EAAE,CAAC;YACP,OAAO,IAAI,CAAC;QAChB,CAAC;QAED,MAAM,OAAO,GAAG,MAAM,GAAG,CAAA;sDACqB,YAAY;SACzD,CAAC;QAEF,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvB,OAAO,IAAI,CAAC;QAChB,CAAC;QAED,OAAO,OAAO,CAAC,CAAC,CAAqB,CAAC;IAC1C,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,WAAW,CACrB,YAAoB,EACpB,aAAuB,EACvB,QAAiB;QAEjB,MAAM,GAAG,GAAG,QAAQ,CAAC,SAAS,EAAE,CAAC;QACjC,IAAI,CAAC,GAAG,EAAE,CAAC;YACP,OAAO;QACX,CAAC;QAED,MAAM,GAAG,CAAA;;;;;;;;;;kBAUC,YAAY;kBACZ,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC;kBAC7B,QAAQ,IAAI,IAAI;;;;SAIzB,CAAC;IACN,CAAC;IAED;;OAEG;IACH,gBAAgB;QACZ,OAAO,IAAI,CAAC,aAAa,CAAC;IAC9B,CAAC;CACJ"}
1
+ {"version":3,"file":"engine.js","sourceRoot":"","sources":["../../../src/core/apply/engine.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,5 @@
1
- export { ApplyEngine, ApplyOptions, ApplyEngineResult } from './engine.js';
2
- export { InteractiveMode, InteractiveOptions, InteractiveResult } from './interactive.js';
1
+ export { ApplyEngine } from './engine.js';
2
+ export type { ApplyOptions, ApplyEngineResult } from './engine.js';
3
+ export { InteractiveMode } from './interactive.js';
4
+ export type { InteractiveOptions, InteractiveResult } from './interactive.js';
3
5
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/apply/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAC3E,OAAO,EAAE,eAAe,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/apply/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,YAAY,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AACnE,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,YAAY,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/apply/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAmC,MAAM,aAAa,CAAC;AAC3E,OAAO,EAAE,eAAe,EAAyC,MAAM,kBAAkB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/apply/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE1C,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC"}
@@ -20,7 +20,7 @@ export declare class InteractiveMode {
20
20
  /**
21
21
  * Show full diff with syntax highlighting
22
22
  */
23
- private static showFullDiff;
23
+ static showFullDiff(diff: ParsedDiff): void;
24
24
  /**
25
25
  * Print a single change line with color
26
26
  */
@@ -1 +1 @@
1
- {"version":3,"file":"interactive.d.ts","sourceRoot":"","sources":["../../../src/core/apply/interactive.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C,MAAM,WAAW,kBAAkB;IAC/B,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,YAAY,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED,MAAM,WAAW,iBAAiB;IAC9B,SAAS,EAAE,OAAO,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,OAAO,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,qBAAa,eAAe;IACxB;;OAEG;WACU,YAAY,CACrB,IAAI,EAAE,UAAU,EAChB,OAAO,GAAE,kBAAuB,GACjC,OAAO,CAAC,iBAAiB,CAAC;IAmD7B;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,WAAW;IA+B1B;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,YAAY;IAkB3B;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,WAAW;IAgB1B;;OAEG;mBACkB,WAAW;IA+BhC;;OAEG;IACH,MAAM,CAAC,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI;IAS3E;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,iBAAiB;IAUhC;;OAEG;IACH,MAAM,CAAC,WAAW,CAAC,aAAa,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI;IAUlE;;OAEG;IACH,MAAM,CAAC,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAKrC;;OAEG;IACH,MAAM,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,IAAI;CAShD"}
1
+ {"version":3,"file":"interactive.d.ts","sourceRoot":"","sources":["../../../src/core/apply/interactive.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C,MAAM,WAAW,kBAAkB;IAC/B,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,YAAY,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED,MAAM,WAAW,iBAAiB;IAC9B,SAAS,EAAE,OAAO,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,OAAO,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,qBAAa,eAAe;IACxB;;OAEG;WACU,YAAY,CACrB,IAAI,EAAE,UAAU,EAChB,OAAO,GAAE,kBAAuB,GACjC,OAAO,CAAC,iBAAiB,CAAC;IAmD7B;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,WAAW;IA+B1B;;OAEG;IACH,MAAM,CAAC,YAAY,CAAC,IAAI,EAAE,UAAU,GAAG,IAAI;IAkB3C;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,WAAW;IAgB1B;;OAEG;mBACkB,WAAW;IA+BhC;;OAEG;IACH,MAAM,CAAC,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI;IAS3E;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,iBAAiB;IAUhC;;OAEG;IACH,MAAM,CAAC,WAAW,CAAC,aAAa,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI;IAUlE;;OAEG;IACH,MAAM,CAAC,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAKrC;;OAEG;IACH,MAAM,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,IAAI;CAShD"}
@@ -1 +1 @@
1
- {"version":3,"file":"interactive.js","sourceRoot":"","sources":["../../../src/core/apply/interactive.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"interactive.js","sourceRoot":"","sources":["../../../src/core/apply/interactive.ts"],"names":[],"mappings":"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"}
@@ -1,2 +1,3 @@
1
- export { BackupManager, BackupMetadata, BackupInfo } from './manager.js';
1
+ export { BackupManager } from './manager.js';
2
+ export type { BackupMetadata, BackupInfo } from './manager.js';
2
3
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/backup/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/backup/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,YAAY,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/backup/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAA8B,MAAM,cAAc,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/backup/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC"}
@@ -1,8 +1,13 @@
1
1
  export interface BackupMetadata {
2
2
  id: string;
3
3
  timestamp: Date;
4
+ /** Paths relative to `root` that existed and were copied */
4
5
  files: string[];
5
6
  reason: string;
7
+ /** Project root the paths are relative to (older backups: the cwd at restore time) */
8
+ root?: string;
9
+ /** Paths relative to `root` that did not exist before the apply; undo deletes them */
10
+ created?: string[];
6
11
  }
7
12
  export interface BackupInfo {
8
13
  id: string;
@@ -16,7 +21,7 @@ export declare class BackupManager {
16
21
  /**
17
22
  * Create a backup of files before applying changes
18
23
  */
19
- createBackup(files: string[], reason?: string): Promise<string>;
24
+ createBackup(files: string[], reason?: string, root?: string): Promise<string>;
20
25
  /**
21
26
  * List all available backups
22
27
  */
@@ -1 +1 @@
1
- {"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../../src/core/backup/manager.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,cAAc;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,IAAI,CAAC;IAChB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,UAAU;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,IAAI,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;CAClB;AAED,qBAAa,aAAa;IACtB,OAAO,CAAC,SAAS,CAAS;gBAEd,SAAS,CAAC,EAAE,MAAM;IAI9B;;OAEG;IACG,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,MAAM,GAAE,MAAgB,GAAG,OAAO,CAAC,MAAM,CAAC;IAsC9E;;OAEG;IACG,WAAW,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;IAyB1C;;OAEG;IACG,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC;IAUzE;;OAEG;IACG,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAuBhE;;OAEG;IACG,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAOnD;;OAEG;IACG,eAAe,CAAC,IAAI,GAAE,MAAW,GAAG,OAAO,CAAC,MAAM,CAAC;IAezD;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAMxB;;OAEG;IACH,YAAY,IAAI,MAAM;CAGzB"}
1
+ {"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../../src/core/backup/manager.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,cAAc;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,IAAI,CAAC;IAChB,4DAA4D;IAC5D,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,sFAAsF;IACtF,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,sFAAsF;IACtF,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;CACtB;AAED,MAAM,WAAW,UAAU;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,IAAI,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;CAClB;AAED,qBAAa,aAAa;IACtB,OAAO,CAAC,SAAS,CAAS;gBAEd,SAAS,CAAC,EAAE,MAAM;IAI9B;;OAEG;IACG,YAAY,CACd,KAAK,EAAE,MAAM,EAAE,EACf,MAAM,GAAE,MAAgB,EACxB,IAAI,GAAE,MAAsB,GAC7B,OAAO,CAAC,MAAM,CAAC;IAiClB;;OAEG;IACG,WAAW,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;IAyB1C;;OAEG;IACG,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC;IAUzE;;OAEG;IACG,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IA2BhE;;OAEG;IACG,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAOnD;;OAEG;IACG,eAAe,CAAC,IAAI,GAAE,MAAW,GAAG,OAAO,CAAC,MAAM,CAAC;IAezD;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAMxB;;OAEG;IACH,YAAY,IAAI,MAAM;CAGzB"}
@@ -1,5 +1,5 @@
1
1
  import { mkdir, copyFile, readdir, rm, readFile, writeFile } from 'fs/promises';
2
- import { join, dirname, relative } from 'path';
2
+ import { join, dirname, relative, resolve } from 'path';
3
3
  import { homedir } from 'os';
4
4
  import { existsSync } from 'fs';
5
5
  export class BackupManager {
@@ -10,28 +10,31 @@ export class BackupManager {
10
10
  /**
11
11
  * Create a backup of files before applying changes
12
12
  */
13
- async createBackup(files, reason = 'apply') {
13
+ async createBackup(files, reason = 'apply', root = process.cwd()) {
14
14
  const backupId = this.generateBackupId();
15
15
  const backupPath = join(this.backupDir, backupId);
16
- // Create backup directory
17
16
  await mkdir(backupPath, { recursive: true });
18
- // Copy each file
19
17
  const copiedFiles = [];
18
+ const createdFiles = [];
20
19
  for (const file of files) {
21
- const relativePath = relative(process.cwd(), file);
22
- const targetPath = join(backupPath, relativePath);
23
- // Create parent directories
20
+ const relativePath = relative(root, resolve(root, file));
21
+ if (!existsSync(file)) {
22
+ // New file: nothing to copy, remember it so undo can remove it
23
+ createdFiles.push(relativePath);
24
+ continue;
25
+ }
26
+ const targetPath = join(backupPath, 'files', relativePath);
24
27
  await mkdir(dirname(targetPath), { recursive: true });
25
- // Copy file
26
28
  await copyFile(file, targetPath);
27
29
  copiedFiles.push(relativePath);
28
30
  }
29
- // Save metadata
30
31
  const metadata = {
31
32
  id: backupId,
32
33
  timestamp: new Date(),
33
34
  files: copiedFiles,
35
+ created: createdFiles,
34
36
  reason,
37
+ root,
35
38
  };
36
39
  await writeFile(join(backupPath, 'metadata.json'), JSON.stringify(metadata, null, 2), 'utf-8');
37
40
  return backupId;
@@ -52,7 +55,7 @@ export class BackupManager {
52
55
  backups.push({
53
56
  id: metadata.id,
54
57
  timestamp: new Date(metadata.timestamp),
55
- fileCount: metadata.files.length,
58
+ fileCount: metadata.files.length + (metadata.created?.length ?? 0),
56
59
  reason: metadata.reason,
57
60
  });
58
61
  }
@@ -80,17 +83,22 @@ export class BackupManager {
80
83
  throw new Error(`Backup not found: ${backupId}`);
81
84
  }
82
85
  const backupPath = join(this.backupDir, backupId);
83
- const filesToRestore = files || metadata.files;
84
- for (const file of filesToRestore) {
85
- const sourcePath = join(backupPath, file);
86
- const targetPath = join(process.cwd(), file);
86
+ const root = metadata.root || process.cwd();
87
+ // v1.0.0 backups stored files at the top level; v1.0.1+ under files/
88
+ const storeDir = existsSync(join(backupPath, 'files')) ? join(backupPath, 'files') : backupPath;
89
+ for (const file of files || metadata.files) {
90
+ const sourcePath = join(storeDir, file);
91
+ const targetPath = join(root, file);
87
92
  if (existsSync(sourcePath)) {
88
- // Create parent directories
89
93
  await mkdir(dirname(targetPath), { recursive: true });
90
- // Restore file
91
94
  await copyFile(sourcePath, targetPath);
92
95
  }
93
96
  }
97
+ if (!files) {
98
+ for (const file of metadata.created || []) {
99
+ await rm(join(root, file), { force: true });
100
+ }
101
+ }
94
102
  }
95
103
  /**
96
104
  * Delete a backup
@@ -120,8 +128,8 @@ export class BackupManager {
120
128
  */
121
129
  generateBackupId() {
122
130
  const now = new Date();
123
- const timestamp = now.toISOString().replace(/[:.]/g, '-').slice(0, -5);
124
- return timestamp;
131
+ const timestamp = now.toISOString().replace(/[:.]/g, '-').slice(0, -1);
132
+ return existsSync(join(this.backupDir, timestamp)) ? `${timestamp}-${Math.random().toString(36).slice(2, 6)}` : timestamp;
125
133
  }
126
134
  /**
127
135
  * Get backup directory path