ownkey 0.6.0 → 0.7.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/README.md +41 -3
- package/dist/commands/apply.d.ts.map +1 -1
- package/dist/commands/apply.js +63 -14
- package/dist/commands/apply.js.map +1 -1
- package/dist/commands/suggest.d.ts.map +1 -1
- package/dist/commands/suggest.js +6 -0
- package/dist/commands/suggest.js.map +1 -1
- package/dist/commands/undo.d.ts +3 -0
- package/dist/commands/undo.d.ts.map +1 -0
- package/dist/commands/undo.js +197 -0
- package/dist/commands/undo.js.map +1 -0
- package/dist/core/apply/engine.d.ts +36 -0
- package/dist/core/apply/engine.d.ts.map +1 -0
- package/dist/core/apply/engine.js +179 -0
- package/dist/core/apply/engine.js.map +1 -0
- package/dist/core/apply/index.d.ts +3 -0
- package/dist/core/apply/index.d.ts.map +1 -0
- package/dist/core/apply/index.js +3 -0
- package/dist/core/apply/index.js.map +1 -0
- package/dist/core/apply/interactive.d.ts +53 -0
- package/dist/core/apply/interactive.d.ts.map +1 -0
- package/dist/core/apply/interactive.js +188 -0
- package/dist/core/apply/interactive.js.map +1 -0
- package/dist/core/backup/index.d.ts +2 -0
- package/dist/core/backup/index.d.ts.map +1 -0
- package/dist/core/backup/index.js +2 -0
- package/dist/core/backup/index.js.map +1 -0
- package/dist/core/backup/manager.d.ts +49 -0
- package/dist/core/backup/manager.d.ts.map +1 -0
- package/dist/core/backup/manager.js +133 -0
- package/dist/core/backup/manager.js.map +1 -0
- package/dist/core/diff/applier.d.ts +22 -0
- package/dist/core/diff/applier.d.ts.map +1 -0
- package/dist/core/diff/applier.js +98 -0
- package/dist/core/diff/applier.js.map +1 -0
- package/dist/core/diff/index.d.ts +4 -0
- package/dist/core/diff/index.d.ts.map +1 -0
- package/dist/core/diff/index.js +4 -0
- package/dist/core/diff/index.js.map +1 -0
- package/dist/core/diff/parser.d.ts +32 -0
- package/dist/core/diff/parser.d.ts.map +1 -0
- package/dist/core/diff/parser.js +108 -0
- package/dist/core/diff/parser.js.map +1 -0
- package/dist/core/diff/validator.d.ts +21 -0
- package/dist/core/diff/validator.d.ts.map +1 -0
- package/dist/core/diff/validator.js +86 -0
- package/dist/core/diff/validator.js.map +1 -0
- package/dist/db/client.d.ts +2 -0
- package/dist/db/client.d.ts.map +1 -1
- package/dist/db/client.js +3 -0
- package/dist/db/client.js.map +1 -1
- package/dist/db/migrations/002_applies.sql +32 -0
- package/dist/index.js +3 -1
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
|
|
19
19
|
---
|
|
20
20
|
|
|
21
|
-
> ✨ **v0.
|
|
21
|
+
> ✨ **v0.7.0** - Apply System! Auto-fix code with AI suggestions, automatic backups, and rollback support.
|
|
22
22
|
|
|
23
23
|
## 🚀 Quick Start
|
|
24
24
|
|
|
@@ -35,6 +35,9 @@ ownkey config --provider anthropic --api-key YOUR_ANTHROPIC_KEY
|
|
|
35
35
|
|
|
36
36
|
# Analyze your codebase
|
|
37
37
|
ownkey suggest .
|
|
38
|
+
|
|
39
|
+
# Apply AI suggestions to fix code
|
|
40
|
+
ownkey apply <suggestion-id>
|
|
38
41
|
```
|
|
39
42
|
|
|
40
43
|
**Get API Keys:**
|
|
@@ -57,6 +60,9 @@ Your code never leaves your machine - all analysis is local
|
|
|
57
60
|
### 💾 Optional Cloud Sync
|
|
58
61
|
Store history in your own Supabase database
|
|
59
62
|
|
|
63
|
+
### 🔧 Auto-Fix Code
|
|
64
|
+
Apply AI suggestions with automatic backups
|
|
65
|
+
|
|
60
66
|
</td>
|
|
61
67
|
<td width="50%">
|
|
62
68
|
|
|
@@ -69,6 +75,9 @@ Respects .gitignore and custom patterns
|
|
|
69
75
|
### 🎯 15+ AI Models
|
|
70
76
|
GPT-4, Claude Opus 4.5, Gemini 2.5, and more
|
|
71
77
|
|
|
78
|
+
### ↩️ Rollback Support
|
|
79
|
+
Undo any applied changes instantly
|
|
80
|
+
|
|
72
81
|
</td>
|
|
73
82
|
</tr>
|
|
74
83
|
</table>
|
|
@@ -82,9 +91,9 @@ GPT-4, Claude Opus 4.5, Gemini 2.5, and more
|
|
|
82
91
|
| **🟢 Google Gemini** | ✅ **Available** | Gemini 2.5 Pro, Flash, 2.0 | [Get Key](https://aistudio.google.com/app/apikey) |
|
|
83
92
|
| **🔵 OpenAI** | ✅ **Available** | GPT-4 Turbo, GPT-4, GPT-3.5 | [Get Key](https://platform.openai.com/api-keys) |
|
|
84
93
|
| **🟣 Anthropic** | ✅ **Available** | Claude Opus 4.5, Sonnet 4.5, Haiku 4.5 | [Get Key](https://console.anthropic.com/) |
|
|
85
|
-
| **🟠 Ollama** | 🔜 Coming Soon | Any local model | v0.
|
|
94
|
+
| **🟠 Ollama** | 🔜 Coming Soon | Any local model | v0.8.0 |
|
|
86
95
|
|
|
87
|
-
**New in v0.
|
|
96
|
+
**New in v0.7.0:** Apply System with automatic backups and rollback!
|
|
88
97
|
|
|
89
98
|
</div>
|
|
90
99
|
|
|
@@ -181,6 +190,35 @@ ownkey suggest --local-only # Skip database storage
|
|
|
181
190
|
Total suggestions: 12
|
|
182
191
|
```
|
|
183
192
|
|
|
193
|
+
### `ownkey apply <suggestion-id>` *(New in v0.7.0)*
|
|
194
|
+
|
|
195
|
+
Apply an AI-generated suggestion to your code with automatic backups.
|
|
196
|
+
|
|
197
|
+
```bash
|
|
198
|
+
ownkey apply abc123 # Interactive mode (default)
|
|
199
|
+
ownkey apply abc123 --auto # Auto-apply without confirmation
|
|
200
|
+
ownkey apply abc123 --dry-run # Preview changes without applying
|
|
201
|
+
ownkey apply abc123 --force # Apply even if validation fails
|
|
202
|
+
ownkey apply abc123 --no-backup # Skip backup (not recommended)
|
|
203
|
+
```
|
|
204
|
+
|
|
205
|
+
**Features:**
|
|
206
|
+
- ✅ Automatic backups before applying
|
|
207
|
+
- ✅ Interactive confirmation with diff preview
|
|
208
|
+
- ✅ Validation to prevent conflicts
|
|
209
|
+
- ✅ Automatic rollback on failure
|
|
210
|
+
|
|
211
|
+
### `ownkey undo [backup-id]` *(New in v0.7.0)*
|
|
212
|
+
|
|
213
|
+
Undo a previously applied suggestion and restore from backup.
|
|
214
|
+
|
|
215
|
+
```bash
|
|
216
|
+
ownkey undo # Interactive - choose from list
|
|
217
|
+
ownkey undo abc123 # Undo specific backup
|
|
218
|
+
ownkey undo --list # List recent applies
|
|
219
|
+
ownkey undo --all # Undo all applies from today
|
|
220
|
+
```
|
|
221
|
+
|
|
184
222
|
### `ownkey apply <id>` *(Coming in v0.7.0)*
|
|
185
223
|
|
|
186
224
|
Apply a suggestion to your code.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"apply.d.ts","sourceRoot":"","sources":["../../src/commands/apply.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"apply.d.ts","sourceRoot":"","sources":["../../src/commands/apply.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKpC,eAAO,MAAM,YAAY,SAgCnB,CAAC"}
|
package/dist/commands/apply.js
CHANGED
|
@@ -1,26 +1,75 @@
|
|
|
1
1
|
import { Command } from 'commander';
|
|
2
|
+
import { ApplyEngine, InteractiveMode } from '../core/apply/index.js';
|
|
2
3
|
import { logger } from '../utils/logger.js';
|
|
3
4
|
import chalk from 'chalk';
|
|
4
5
|
export const applyCommand = new Command('apply')
|
|
5
|
-
.description('Apply
|
|
6
|
-
.argument('
|
|
7
|
-
.option('--
|
|
8
|
-
.
|
|
6
|
+
.description('Apply an AI-generated suggestion to your code')
|
|
7
|
+
.argument('[suggestion-id]', 'Suggestion ID to apply')
|
|
8
|
+
.option('--auto', 'Apply without confirmation')
|
|
9
|
+
.option('--dry-run', 'Show what would change without applying')
|
|
10
|
+
.option('--force', 'Apply even if validation fails')
|
|
11
|
+
.option('--no-backup', 'Skip creating backup (not recommended)')
|
|
12
|
+
.option('--all', 'Apply all pending suggestions')
|
|
13
|
+
.option('--severity <level>', 'Apply only suggestions of this severity (critical, high, medium, low)')
|
|
14
|
+
.action(async (suggestionId, options) => {
|
|
9
15
|
try {
|
|
10
|
-
|
|
11
|
-
//
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
16
|
+
const engine = new ApplyEngine();
|
|
17
|
+
// Apply all mode
|
|
18
|
+
if (options.all) {
|
|
19
|
+
logger.error('--all mode not yet implemented');
|
|
20
|
+
process.exit(1);
|
|
21
|
+
}
|
|
22
|
+
// Need suggestion ID
|
|
23
|
+
if (!suggestionId) {
|
|
24
|
+
logger.error('Suggestion ID required. Usage: ownkey apply <suggestion-id>');
|
|
25
|
+
console.log(chalk.cyan('\nTip: Run "ownkey suggest ." first to generate suggestions\n'));
|
|
26
|
+
process.exit(1);
|
|
27
|
+
}
|
|
28
|
+
// Apply single suggestion
|
|
29
|
+
await applySuggestion(engine, suggestionId, options);
|
|
20
30
|
}
|
|
21
31
|
catch (error) {
|
|
22
32
|
logger.error('Apply failed', error);
|
|
23
33
|
process.exit(1);
|
|
24
34
|
}
|
|
25
35
|
});
|
|
36
|
+
/**
|
|
37
|
+
* Apply a single suggestion
|
|
38
|
+
*/
|
|
39
|
+
async function applySuggestion(engine, suggestionId, options) {
|
|
40
|
+
const applyOptions = {
|
|
41
|
+
dryRun: options.dryRun || false,
|
|
42
|
+
force: options.force || false,
|
|
43
|
+
createBackup: options.backup !== false,
|
|
44
|
+
interactive: !options.auto,
|
|
45
|
+
};
|
|
46
|
+
// Dry run mode
|
|
47
|
+
if (applyOptions.dryRun) {
|
|
48
|
+
console.log(chalk.bold.cyan('\n🔍 Dry Run Mode - No changes will be made\n'));
|
|
49
|
+
}
|
|
50
|
+
// Apply
|
|
51
|
+
const result = await engine.applySuggestion(suggestionId, applyOptions);
|
|
52
|
+
// Show warnings
|
|
53
|
+
if (result.warnings && result.warnings.length > 0) {
|
|
54
|
+
InteractiveMode.showWarnings(result.warnings);
|
|
55
|
+
}
|
|
56
|
+
// Handle result
|
|
57
|
+
if (result.success) {
|
|
58
|
+
if (applyOptions.dryRun) {
|
|
59
|
+
console.log(chalk.green('\n✓ Dry run completed successfully'));
|
|
60
|
+
console.log(chalk.gray(` ${result.filesModified.length} file(s) would be modified:\n`));
|
|
61
|
+
for (const file of result.filesModified) {
|
|
62
|
+
console.log(chalk.gray(` - ${file}`));
|
|
63
|
+
}
|
|
64
|
+
console.log();
|
|
65
|
+
}
|
|
66
|
+
else {
|
|
67
|
+
InteractiveMode.showSuccess(result.filesModified.length, result.backupId);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
else {
|
|
71
|
+
InteractiveMode.showError(result.error || 'Unknown error');
|
|
72
|
+
process.exit(1);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
26
75
|
//# sourceMappingURL=apply.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"apply.js","sourceRoot":"","sources":["../../src/commands/apply.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,MAAM,CAAC,MAAM,YAAY,GAAG,IAAI,OAAO,CAAC,OAAO,CAAC;KAC3C,WAAW,CAAC,
|
|
1
|
+
{"version":3,"file":"apply.js","sourceRoot":"","sources":["../../src/commands/apply.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"suggest.d.ts","sourceRoot":"","sources":["../../src/commands/suggest.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAWpC,eAAO,MAAM,cAAc,
|
|
1
|
+
{"version":3,"file":"suggest.d.ts","sourceRoot":"","sources":["../../src/commands/suggest.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAWpC,eAAO,MAAM,cAAc,SAoJrB,CAAC"}
|
package/dist/commands/suggest.js
CHANGED
|
@@ -122,5 +122,11 @@ export const suggestCommand = new Command('suggest')
|
|
|
122
122
|
logger.error('Suggest failed', error);
|
|
123
123
|
process.exit(1);
|
|
124
124
|
}
|
|
125
|
+
finally {
|
|
126
|
+
// Close database connection to prevent UV handle errors
|
|
127
|
+
if (dbClient.isConnected()) {
|
|
128
|
+
await dbClient.disconnect();
|
|
129
|
+
}
|
|
130
|
+
}
|
|
125
131
|
});
|
|
126
132
|
//# sourceMappingURL=suggest.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"suggest.js","sourceRoot":"","sources":["../../src/commands/suggest.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"suggest.js","sourceRoot":"","sources":["../../src/commands/suggest.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"undo.d.ts","sourceRoot":"","sources":["../../src/commands/undo.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAOpC,eAAO,MAAM,WAAW,SAiClB,CAAC"}
|
|
@@ -0,0 +1,197 @@
|
|
|
1
|
+
import { Command } from 'commander';
|
|
2
|
+
import { BackupManager } from '../core/backup/index.js';
|
|
3
|
+
import { dbClient } from '../db/client.js';
|
|
4
|
+
import { logger } from '../utils/logger.js';
|
|
5
|
+
import chalk from 'chalk';
|
|
6
|
+
import inquirer from 'inquirer';
|
|
7
|
+
export const undoCommand = new Command('undo')
|
|
8
|
+
.description('Undo a previously applied suggestion')
|
|
9
|
+
.argument('[backup-id]', 'Backup ID to restore (optional)')
|
|
10
|
+
.option('--list', 'List recent applies')
|
|
11
|
+
.option('--all', 'Undo all applies from today')
|
|
12
|
+
.action(async (backupId, options) => {
|
|
13
|
+
try {
|
|
14
|
+
const backupManager = new BackupManager();
|
|
15
|
+
// List mode
|
|
16
|
+
if (options.list) {
|
|
17
|
+
await listRecentApplies(backupManager);
|
|
18
|
+
return;
|
|
19
|
+
}
|
|
20
|
+
// Undo all mode
|
|
21
|
+
if (options.all) {
|
|
22
|
+
await undoAllToday(backupManager);
|
|
23
|
+
return;
|
|
24
|
+
}
|
|
25
|
+
// Undo specific backup
|
|
26
|
+
if (backupId) {
|
|
27
|
+
await undoBackup(backupManager, backupId);
|
|
28
|
+
return;
|
|
29
|
+
}
|
|
30
|
+
// Interactive mode - show list and let user choose
|
|
31
|
+
await interactiveUndo(backupManager);
|
|
32
|
+
}
|
|
33
|
+
catch (error) {
|
|
34
|
+
logger.error('Undo failed', error);
|
|
35
|
+
process.exit(1);
|
|
36
|
+
}
|
|
37
|
+
});
|
|
38
|
+
/**
|
|
39
|
+
* List recent applies
|
|
40
|
+
*/
|
|
41
|
+
async function listRecentApplies(backupManager) {
|
|
42
|
+
console.log(chalk.bold('\n📋 Recent Applies:\n'));
|
|
43
|
+
const backups = await backupManager.listBackups();
|
|
44
|
+
if (backups.length === 0) {
|
|
45
|
+
console.log(chalk.gray(' No backups found.\n'));
|
|
46
|
+
return;
|
|
47
|
+
}
|
|
48
|
+
for (const backup of backups.slice(0, 10)) {
|
|
49
|
+
const timeAgo = getTimeAgo(backup.timestamp);
|
|
50
|
+
console.log(` ${chalk.cyan(backup.id)} - ${chalk.gray(timeAgo)} - ${backup.fileCount} file(s)`);
|
|
51
|
+
}
|
|
52
|
+
console.log(chalk.gray(`\n Total: ${backups.length} backup(s)`));
|
|
53
|
+
console.log(chalk.cyan('\n To undo: ownkey undo <backup-id>\n'));
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Undo a specific backup
|
|
57
|
+
*/
|
|
58
|
+
async function undoBackup(backupManager, backupId) {
|
|
59
|
+
logger.info(`Undoing backup: ${backupId}`);
|
|
60
|
+
// Get backup metadata
|
|
61
|
+
const metadata = await backupManager.getBackupMetadata(backupId);
|
|
62
|
+
if (!metadata) {
|
|
63
|
+
logger.error(`Backup not found: ${backupId}`);
|
|
64
|
+
process.exit(1);
|
|
65
|
+
}
|
|
66
|
+
// Show what will be restored
|
|
67
|
+
console.log(chalk.bold(`\n🔄 Restoring from backup: ${chalk.cyan(backupId)}\n`));
|
|
68
|
+
console.log(` Files to restore: ${chalk.yellow(metadata.files.length)}`);
|
|
69
|
+
for (const file of metadata.files) {
|
|
70
|
+
console.log(chalk.gray(` - ${file}`));
|
|
71
|
+
}
|
|
72
|
+
// Confirm
|
|
73
|
+
const { confirm } = await inquirer.prompt([
|
|
74
|
+
{
|
|
75
|
+
type: 'confirm',
|
|
76
|
+
name: 'confirm',
|
|
77
|
+
message: 'Are you sure you want to restore these files?',
|
|
78
|
+
default: false,
|
|
79
|
+
},
|
|
80
|
+
]);
|
|
81
|
+
if (!confirm) {
|
|
82
|
+
console.log(chalk.yellow('\n Undo cancelled.\n'));
|
|
83
|
+
return;
|
|
84
|
+
}
|
|
85
|
+
// Restore
|
|
86
|
+
await backupManager.restore(backupId);
|
|
87
|
+
// Update database if connected
|
|
88
|
+
if (dbClient.isConnected()) {
|
|
89
|
+
await markAsRolledBack(backupId);
|
|
90
|
+
}
|
|
91
|
+
logger.success('Files restored successfully!');
|
|
92
|
+
console.log(chalk.green(`\n✓ Restored ${metadata.files.length} file(s) from backup\n`));
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Undo all applies from today
|
|
96
|
+
*/
|
|
97
|
+
async function undoAllToday(backupManager) {
|
|
98
|
+
const backups = await backupManager.listBackups();
|
|
99
|
+
const today = new Date();
|
|
100
|
+
today.setHours(0, 0, 0, 0);
|
|
101
|
+
const todayBackups = backups.filter((b) => {
|
|
102
|
+
const backupDate = new Date(b.timestamp);
|
|
103
|
+
backupDate.setHours(0, 0, 0, 0);
|
|
104
|
+
return backupDate.getTime() === today.getTime();
|
|
105
|
+
});
|
|
106
|
+
if (todayBackups.length === 0) {
|
|
107
|
+
console.log(chalk.yellow('\n No applies found from today.\n'));
|
|
108
|
+
return;
|
|
109
|
+
}
|
|
110
|
+
console.log(chalk.bold(`\n🔄 Found ${todayBackups.length} apply(ies) from today:\n`));
|
|
111
|
+
for (const backup of todayBackups) {
|
|
112
|
+
console.log(` ${chalk.cyan(backup.id)} - ${backup.fileCount} file(s)`);
|
|
113
|
+
}
|
|
114
|
+
const { confirm } = await inquirer.prompt([
|
|
115
|
+
{
|
|
116
|
+
type: 'confirm',
|
|
117
|
+
name: 'confirm',
|
|
118
|
+
message: `Undo all ${todayBackups.length} apply(ies)?`,
|
|
119
|
+
default: false,
|
|
120
|
+
},
|
|
121
|
+
]);
|
|
122
|
+
if (!confirm) {
|
|
123
|
+
console.log(chalk.yellow('\n Undo cancelled.\n'));
|
|
124
|
+
return;
|
|
125
|
+
}
|
|
126
|
+
// Restore in reverse order (newest first)
|
|
127
|
+
for (const backup of todayBackups) {
|
|
128
|
+
console.log(chalk.gray(`\n Restoring ${backup.id}...`));
|
|
129
|
+
await backupManager.restore(backup.id);
|
|
130
|
+
if (dbClient.isConnected()) {
|
|
131
|
+
await markAsRolledBack(backup.id);
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
logger.success(`Restored ${todayBackups.length} backup(s)`);
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* Interactive undo - let user choose from list
|
|
138
|
+
*/
|
|
139
|
+
async function interactiveUndo(backupManager) {
|
|
140
|
+
const backups = await backupManager.listBackups();
|
|
141
|
+
if (backups.length === 0) {
|
|
142
|
+
console.log(chalk.yellow('\n No backups found.\n'));
|
|
143
|
+
return;
|
|
144
|
+
}
|
|
145
|
+
console.log(chalk.bold('\n📋 Select backup to restore:\n'));
|
|
146
|
+
const choices = backups.slice(0, 10).map((backup) => ({
|
|
147
|
+
name: `${backup.id} - ${getTimeAgo(backup.timestamp)} - ${backup.fileCount} file(s)`,
|
|
148
|
+
value: backup.id,
|
|
149
|
+
}));
|
|
150
|
+
choices.push({ name: chalk.gray('Cancel'), value: 'cancel' });
|
|
151
|
+
const { selected } = await inquirer.prompt([
|
|
152
|
+
{
|
|
153
|
+
type: 'list',
|
|
154
|
+
name: 'selected',
|
|
155
|
+
message: 'Choose backup to restore:',
|
|
156
|
+
choices,
|
|
157
|
+
},
|
|
158
|
+
]);
|
|
159
|
+
if (selected === 'cancel') {
|
|
160
|
+
console.log(chalk.yellow('\n Undo cancelled.\n'));
|
|
161
|
+
return;
|
|
162
|
+
}
|
|
163
|
+
await undoBackup(backupManager, selected);
|
|
164
|
+
}
|
|
165
|
+
/**
|
|
166
|
+
* Mark apply as rolled back in database
|
|
167
|
+
*/
|
|
168
|
+
async function markAsRolledBack(backupId) {
|
|
169
|
+
const sql = dbClient.getClient();
|
|
170
|
+
if (!sql) {
|
|
171
|
+
return;
|
|
172
|
+
}
|
|
173
|
+
await sql `
|
|
174
|
+
UPDATE applies
|
|
175
|
+
SET status = 'rolled_back'
|
|
176
|
+
WHERE backup_id = ${backupId}
|
|
177
|
+
`;
|
|
178
|
+
}
|
|
179
|
+
/**
|
|
180
|
+
* Get human-readable time ago
|
|
181
|
+
*/
|
|
182
|
+
function getTimeAgo(date) {
|
|
183
|
+
const now = new Date();
|
|
184
|
+
const diff = now.getTime() - new Date(date).getTime();
|
|
185
|
+
const seconds = Math.floor(diff / 1000);
|
|
186
|
+
const minutes = Math.floor(seconds / 60);
|
|
187
|
+
const hours = Math.floor(minutes / 60);
|
|
188
|
+
const days = Math.floor(hours / 24);
|
|
189
|
+
if (days > 0)
|
|
190
|
+
return `${days}d ago`;
|
|
191
|
+
if (hours > 0)
|
|
192
|
+
return `${hours}h ago`;
|
|
193
|
+
if (minutes > 0)
|
|
194
|
+
return `${minutes}m ago`;
|
|
195
|
+
return 'just now';
|
|
196
|
+
}
|
|
197
|
+
//# sourceMappingURL=undo.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"undo.js","sourceRoot":"","sources":["../../src/commands/undo.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { BackupManager } from '../backup/index.js';
|
|
2
|
+
export interface ApplyOptions {
|
|
3
|
+
dryRun?: boolean;
|
|
4
|
+
force?: boolean;
|
|
5
|
+
createBackup?: boolean;
|
|
6
|
+
interactive?: boolean;
|
|
7
|
+
}
|
|
8
|
+
export interface ApplyEngineResult {
|
|
9
|
+
success: boolean;
|
|
10
|
+
suggestionId: string;
|
|
11
|
+
filesModified: string[];
|
|
12
|
+
backupId?: string;
|
|
13
|
+
error?: string;
|
|
14
|
+
warnings?: string[];
|
|
15
|
+
}
|
|
16
|
+
export declare class ApplyEngine {
|
|
17
|
+
private backupManager;
|
|
18
|
+
constructor();
|
|
19
|
+
/**
|
|
20
|
+
* Apply a suggestion to the codebase
|
|
21
|
+
*/
|
|
22
|
+
applySuggestion(suggestionId: string, options?: ApplyOptions): Promise<ApplyEngineResult>;
|
|
23
|
+
/**
|
|
24
|
+
* Load suggestion from database
|
|
25
|
+
*/
|
|
26
|
+
private loadSuggestion;
|
|
27
|
+
/**
|
|
28
|
+
* Record apply operation in database
|
|
29
|
+
*/
|
|
30
|
+
private recordApply;
|
|
31
|
+
/**
|
|
32
|
+
* Get backup manager instance
|
|
33
|
+
*/
|
|
34
|
+
getBackupManager(): BackupManager;
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=engine.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../../../src/core/apply/engine.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAKnD,MAAM,WAAW,YAAY;IACzB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,WAAW,CAAC,EAAE,OAAO,CAAC;CACzB;AAED,MAAM,WAAW,iBAAiB;IAC9B,OAAO,EAAE,OAAO,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;CACvB;AAED,qBAAa,WAAW;IACpB,OAAO,CAAC,aAAa,CAAgB;;IAMrC;;OAEG;IACG,eAAe,CACjB,YAAY,EAAE,MAAM,EACpB,OAAO,GAAE,YAAiB,GAC3B,OAAO,CAAC,iBAAiB,CAAC;IAuI7B;;OAEG;YACW,cAAc;IAqB5B;;OAEG;YACW,WAAW;IA6BzB;;OAEG;IACH,gBAAgB,IAAI,aAAa;CAGpC"}
|