@wundr.io/cli 1.0.0 ā 1.0.3
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 +696 -280
- package/dist/ai/ai-service.d.ts +2 -2
- package/dist/ai/ai-service.d.ts.map +1 -1
- package/dist/ai/ai-service.js +1 -1
- package/dist/ai/ai-service.js.map +1 -1
- package/dist/ai/claude-client.d.ts.map +1 -1
- package/dist/ai/claude-client.js +2 -1
- package/dist/ai/claude-client.js.map +1 -1
- package/dist/ai/conversation-manager.d.ts +2 -2
- package/dist/ai/conversation-manager.d.ts.map +1 -1
- package/dist/ai/conversation-manager.js +5 -3
- package/dist/ai/conversation-manager.js.map +1 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +32 -13
- package/dist/cli.js.map +1 -1
- package/dist/commands/ai.d.ts +3 -3
- package/dist/commands/ai.d.ts.map +1 -1
- package/dist/commands/ai.js +2 -2
- package/dist/commands/ai.js.map +1 -1
- package/dist/commands/alignment.d.ts +78 -0
- package/dist/commands/alignment.d.ts.map +1 -0
- package/dist/commands/alignment.js +817 -0
- package/dist/commands/alignment.js.map +1 -0
- package/dist/commands/analyze-optimized.d.ts.map +1 -1
- package/dist/commands/analyze-optimized.js +9 -6
- package/dist/commands/analyze-optimized.js.map +1 -1
- package/dist/commands/analyze.d.ts +3 -3
- package/dist/commands/analyze.d.ts.map +1 -1
- package/dist/commands/analyze.js +2 -2
- package/dist/commands/analyze.js.map +1 -1
- package/dist/commands/batch.d.ts +3 -3
- package/dist/commands/batch.d.ts.map +1 -1
- package/dist/commands/batch.js +7 -7
- package/dist/commands/batch.js.map +1 -1
- package/dist/commands/chat.d.ts +3 -3
- package/dist/commands/chat.d.ts.map +1 -1
- package/dist/commands/chat.js +3 -3
- package/dist/commands/chat.js.map +1 -1
- package/dist/commands/claude-init.d.ts +1 -1
- package/dist/commands/claude-init.d.ts.map +1 -1
- package/dist/commands/claude-init.js +11 -7
- package/dist/commands/claude-init.js.map +1 -1
- package/dist/commands/claude-setup.d.ts +88 -1
- package/dist/commands/claude-setup.d.ts.map +1 -1
- package/dist/commands/claude-setup.js +549 -46
- package/dist/commands/claude-setup.js.map +1 -1
- package/dist/commands/computer-setup-commands.d.ts +17 -3
- package/dist/commands/computer-setup-commands.d.ts.map +1 -1
- package/dist/commands/computer-setup-commands.js +145 -3
- package/dist/commands/computer-setup-commands.js.map +1 -1
- package/dist/commands/computer-setup.d.ts.map +1 -1
- package/dist/commands/computer-setup.js +372 -4
- package/dist/commands/computer-setup.js.map +1 -1
- package/dist/commands/create-command.d.ts.map +1 -1
- package/dist/commands/create-command.js +3 -3
- package/dist/commands/create-command.js.map +1 -1
- package/dist/commands/create.d.ts +3 -3
- package/dist/commands/create.d.ts.map +1 -1
- package/dist/commands/create.js +3 -3
- package/dist/commands/create.js.map +1 -1
- package/dist/commands/dashboard.d.ts +3 -3
- package/dist/commands/dashboard.d.ts.map +1 -1
- package/dist/commands/dashboard.js +4 -3
- package/dist/commands/dashboard.js.map +1 -1
- package/dist/commands/govern.d.ts +3 -3
- package/dist/commands/govern.d.ts.map +1 -1
- package/dist/commands/govern.js +4 -3
- package/dist/commands/govern.js.map +1 -1
- package/dist/commands/governance.d.ts +17 -0
- package/dist/commands/governance.d.ts.map +1 -0
- package/dist/commands/governance.js +703 -0
- package/dist/commands/governance.js.map +1 -0
- package/dist/commands/guardian.d.ts +20 -0
- package/dist/commands/guardian.d.ts.map +1 -0
- package/dist/commands/guardian.js +597 -0
- package/dist/commands/guardian.js.map +1 -0
- package/dist/commands/init.d.ts +7 -3
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +71 -5
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/performance-optimizer.d.ts +2 -2
- package/dist/commands/performance-optimizer.d.ts.map +1 -1
- package/dist/commands/performance-optimizer.js +8 -7
- package/dist/commands/performance-optimizer.js.map +1 -1
- package/dist/commands/plugins.d.ts +3 -3
- package/dist/commands/plugins.d.ts.map +1 -1
- package/dist/commands/plugins.js +2 -2
- package/dist/commands/plugins.js.map +1 -1
- package/dist/commands/rag.d.ts +7 -0
- package/dist/commands/rag.d.ts.map +1 -0
- package/dist/commands/rag.js +748 -0
- package/dist/commands/rag.js.map +1 -0
- package/dist/commands/session.d.ts +41 -0
- package/dist/commands/session.d.ts.map +1 -0
- package/dist/commands/session.js +441 -0
- package/dist/commands/session.js.map +1 -0
- package/dist/commands/setup.d.ts +3 -3
- package/dist/commands/setup.d.ts.map +1 -1
- package/dist/commands/setup.js +1 -3
- package/dist/commands/setup.js.map +1 -1
- package/dist/commands/test-init.d.ts.map +1 -1
- package/dist/commands/test-init.js +2 -2
- package/dist/commands/test-init.js.map +1 -1
- package/dist/commands/test.d.ts.map +1 -1
- package/dist/commands/test.js +2 -2
- package/dist/commands/test.js.map +1 -1
- package/dist/commands/vp.d.ts +7 -0
- package/dist/commands/vp.d.ts.map +1 -0
- package/dist/commands/vp.js +571 -0
- package/dist/commands/vp.js.map +1 -0
- package/dist/commands/watch.d.ts +3 -3
- package/dist/commands/watch.d.ts.map +1 -1
- package/dist/commands/watch.js +10 -7
- package/dist/commands/watch.js.map +1 -1
- package/dist/commands/worktree.d.ts +63 -0
- package/dist/commands/worktree.d.ts.map +1 -0
- package/dist/commands/worktree.js +774 -0
- package/dist/commands/worktree.js.map +1 -0
- package/dist/context/context-manager.d.ts +1 -1
- package/dist/context/context-manager.d.ts.map +1 -1
- package/dist/context/context-manager.js +1 -1
- package/dist/context/context-manager.js.map +1 -1
- package/dist/context/session-manager.d.ts +2 -2
- package/dist/context/session-manager.d.ts.map +1 -1
- package/dist/context/session-manager.js +9 -5
- package/dist/context/session-manager.js.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/interactive/interactive-mode.d.ts +2 -2
- package/dist/interactive/interactive-mode.d.ts.map +1 -1
- package/dist/interactive/interactive-mode.js +6 -4
- package/dist/interactive/interactive-mode.js.map +1 -1
- package/dist/nlp/command-mapper.d.ts +1 -1
- package/dist/nlp/command-mapper.d.ts.map +1 -1
- package/dist/nlp/command-mapper.js +3 -2
- package/dist/nlp/command-mapper.js.map +1 -1
- package/dist/nlp/command-parser.d.ts +1 -1
- package/dist/nlp/command-parser.d.ts.map +1 -1
- package/dist/nlp/command-parser.js +2 -1
- package/dist/nlp/command-parser.js.map +1 -1
- package/dist/nlp/intent-parser.d.ts +1 -1
- package/dist/nlp/intent-parser.d.ts.map +1 -1
- package/dist/nlp/intent-parser.js +14 -9
- package/dist/nlp/intent-parser.js.map +1 -1
- package/dist/plugins/plugin-manager.d.ts +2 -2
- package/dist/plugins/plugin-manager.d.ts.map +1 -1
- package/dist/plugins/plugin-manager.js +3 -3
- package/dist/plugins/plugin-manager.js.map +1 -1
- package/dist/types/index.d.ts +1 -1
- package/dist/types/index.d.ts.map +1 -1
- package/dist/utils/backup-rollback-manager.d.ts +72 -0
- package/dist/utils/backup-rollback-manager.d.ts.map +1 -0
- package/dist/utils/backup-rollback-manager.js +289 -0
- package/dist/utils/backup-rollback-manager.js.map +1 -0
- package/dist/utils/claude-config-installer.d.ts +94 -0
- package/dist/utils/claude-config-installer.d.ts.map +1 -0
- package/dist/utils/claude-config-installer.js +628 -0
- package/dist/utils/claude-config-installer.js.map +1 -0
- package/dist/utils/config-manager.d.ts +1 -1
- package/dist/utils/config-manager.d.ts.map +1 -1
- package/dist/utils/config-manager.js +5 -5
- package/dist/utils/config-manager.js.map +1 -1
- package/dist/utils/error-handler.d.ts +1 -1
- package/dist/utils/error-handler.d.ts.map +1 -1
- package/dist/utils/error-handler.js.map +1 -1
- package/dist/utils/logger.d.ts +1 -1
- package/dist/utils/logger.d.ts.map +1 -1
- package/dist/utils/logger.js +22 -11
- package/dist/utils/logger.js.map +1 -1
- package/package.json +26 -7
- package/src/ai/ai-service.ts +22 -19
- package/src/ai/claude-client.ts +20 -16
- package/src/ai/conversation-manager.ts +37 -30
- package/src/cli.ts +42 -13
- package/src/commands/ai.ts +59 -57
- package/src/commands/alignment.ts +1212 -0
- package/src/commands/analyze-optimized.ts +70 -62
- package/src/commands/analyze.ts +22 -20
- package/src/commands/batch.ts +41 -38
- package/src/commands/chat.ts +37 -34
- package/src/commands/claude-init.ts +38 -30
- package/src/commands/claude-setup.ts +692 -97
- package/src/commands/computer-setup-commands.ts +203 -37
- package/src/commands/computer-setup.ts +474 -4
- package/src/commands/create-command.ts +7 -7
- package/src/commands/create.ts +36 -33
- package/src/commands/dashboard.ts +33 -28
- package/src/commands/govern.ts +34 -29
- package/src/commands/governance.ts +1005 -0
- package/src/commands/guardian.ts +887 -0
- package/src/commands/init.ts +112 -22
- package/src/commands/performance-optimizer.ts +48 -42
- package/src/commands/plugins.ts +35 -32
- package/src/commands/project-update.ts +1053 -0
- package/src/commands/rag.ts +904 -0
- package/src/commands/session.ts +631 -0
- package/src/commands/setup.ts +35 -31
- package/src/commands/test-init.ts +6 -5
- package/src/commands/test.ts +7 -6
- package/src/commands/vp.ts +762 -0
- package/src/commands/watch.ts +44 -33
- package/src/commands/worktree.ts +1057 -0
- package/src/context/context-manager.ts +15 -12
- package/src/context/session-manager.ts +51 -40
- package/src/index.ts +7 -6
- package/src/interactive/interactive-mode.ts +25 -18
- package/src/lib/conflict-resolution.ts +28 -0
- package/src/lib/merge-strategy.ts +28 -0
- package/src/lib/safety-mechanisms.ts +47 -0
- package/src/lib/state-detection.ts +28 -0
- package/src/nlp/command-mapper.ts +35 -30
- package/src/nlp/command-parser.ts +20 -17
- package/src/nlp/intent-classifier.ts +7 -7
- package/src/nlp/intent-parser.ts +61 -49
- package/src/plugins/plugin-manager.ts +27 -23
- package/src/tests/computer-setup-integration.test.ts +439 -0
- package/src/types/index.ts +1 -1
- package/src/types/modules.d.ts +1 -0
- package/src/utils/backup-rollback-manager.ts +363 -0
- package/src/utils/claude-config-installer.ts +734 -0
- package/src/utils/config-manager.ts +12 -9
- package/src/utils/error-handler.ts +5 -3
- package/src/utils/logger.ts +35 -12
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Backup and Rollback Manager
|
|
3
|
+
* Handles backup creation and restoration for configuration files
|
|
4
|
+
*/
|
|
5
|
+
export interface BackupMetadata {
|
|
6
|
+
timestamp: string;
|
|
7
|
+
backupId: string;
|
|
8
|
+
files: BackupFile[];
|
|
9
|
+
reason: string;
|
|
10
|
+
success: boolean;
|
|
11
|
+
}
|
|
12
|
+
export interface BackupFile {
|
|
13
|
+
originalPath: string;
|
|
14
|
+
backupPath: string;
|
|
15
|
+
size: number;
|
|
16
|
+
checksum?: string;
|
|
17
|
+
}
|
|
18
|
+
export interface RollbackOptions {
|
|
19
|
+
backupId?: string;
|
|
20
|
+
dryRun?: boolean;
|
|
21
|
+
verbose?: boolean;
|
|
22
|
+
}
|
|
23
|
+
export declare class BackupRollbackManager {
|
|
24
|
+
private backupDir;
|
|
25
|
+
private metadataFile;
|
|
26
|
+
private homeDir;
|
|
27
|
+
constructor(backupDir?: string);
|
|
28
|
+
/**
|
|
29
|
+
* Initialize backup directory structure
|
|
30
|
+
*/
|
|
31
|
+
initialize(): Promise<void>;
|
|
32
|
+
/**
|
|
33
|
+
* Create backup of specified files
|
|
34
|
+
*/
|
|
35
|
+
createBackup(files: string[], reason?: string): Promise<BackupMetadata>;
|
|
36
|
+
/**
|
|
37
|
+
* Restore from backup
|
|
38
|
+
*/
|
|
39
|
+
rollback(options?: RollbackOptions): Promise<boolean>;
|
|
40
|
+
/**
|
|
41
|
+
* List all backups
|
|
42
|
+
*/
|
|
43
|
+
listBackups(): Promise<BackupMetadata[]>;
|
|
44
|
+
/**
|
|
45
|
+
* Get specific backup metadata
|
|
46
|
+
*/
|
|
47
|
+
getBackupMetadata(backupId: string): Promise<BackupMetadata | null>;
|
|
48
|
+
/**
|
|
49
|
+
* Get latest successful backup
|
|
50
|
+
*/
|
|
51
|
+
getLatestBackup(): Promise<BackupMetadata | null>;
|
|
52
|
+
/**
|
|
53
|
+
* Delete old backups
|
|
54
|
+
*/
|
|
55
|
+
cleanupOldBackups(retainCount?: number): Promise<void>;
|
|
56
|
+
/**
|
|
57
|
+
* Verify backup integrity
|
|
58
|
+
*/
|
|
59
|
+
verifyBackup(backupId: string): Promise<boolean>;
|
|
60
|
+
/**
|
|
61
|
+
* Private helper methods
|
|
62
|
+
*/
|
|
63
|
+
private generateBackupId;
|
|
64
|
+
private expandPath;
|
|
65
|
+
private getRelativePath;
|
|
66
|
+
private saveMetadata;
|
|
67
|
+
/**
|
|
68
|
+
* Display backup information
|
|
69
|
+
*/
|
|
70
|
+
displayBackupInfo(metadata: BackupMetadata): void;
|
|
71
|
+
}
|
|
72
|
+
//# sourceMappingURL=backup-rollback-manager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"backup-rollback-manager.d.ts","sourceRoot":"","sources":["../../src/utils/backup-rollback-manager.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAUH,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,UAAU,EAAE,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,UAAU;IACzB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,qBAAa,qBAAqB;IAChC,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,OAAO,CAAS;gBAEZ,SAAS,CAAC,EAAE,MAAM;IAO9B;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAejC;;OAEG;IACG,YAAY,CAChB,KAAK,EAAE,MAAM,EAAE,EACf,MAAM,GAAE,MAAwB,GAC/B,OAAO,CAAC,cAAc,CAAC;IA0E1B;;OAEG;IACG,QAAQ,CAAC,OAAO,GAAE,eAAoB,GAAG,OAAO,CAAC,OAAO,CAAC;IAwE/D;;OAEG;IACG,WAAW,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;IAa9C;;OAEG;IACG,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC;IAKzE;;OAEG;IACG,eAAe,IAAI,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC;IAKvD;;OAEG;IACG,iBAAiB,CAAC,WAAW,GAAE,MAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAiC/D;;OAEG;IACG,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAoBtD;;OAEG;IAEH,OAAO,CAAC,gBAAgB;IAKxB,OAAO,CAAC,UAAU;IAOlB,OAAO,CAAC,eAAe;YAST,YAAY;IAM1B;;OAEG;IACH,iBAAiB,CAAC,QAAQ,EAAE,cAAc,GAAG,IAAI;CAkBlD"}
|
|
@@ -0,0 +1,289 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Backup and Rollback Manager
|
|
4
|
+
* Handles backup creation and restoration for configuration files
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.BackupRollbackManager = void 0;
|
|
8
|
+
const tslib_1 = require("tslib");
|
|
9
|
+
const fs_1 = require("fs");
|
|
10
|
+
const fs = tslib_1.__importStar(require("fs/promises"));
|
|
11
|
+
const path = tslib_1.__importStar(require("path"));
|
|
12
|
+
const chalk_1 = tslib_1.__importDefault(require("chalk"));
|
|
13
|
+
const logger_1 = require("./logger");
|
|
14
|
+
class BackupRollbackManager {
|
|
15
|
+
backupDir;
|
|
16
|
+
metadataFile;
|
|
17
|
+
homeDir;
|
|
18
|
+
constructor(backupDir) {
|
|
19
|
+
this.homeDir = process.env.HOME || process.env.USERPROFILE || '';
|
|
20
|
+
this.backupDir =
|
|
21
|
+
backupDir || path.join(this.homeDir, '.wundr', 'backups');
|
|
22
|
+
this.metadataFile = path.join(this.backupDir, 'metadata.json');
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Initialize backup directory structure
|
|
26
|
+
*/
|
|
27
|
+
async initialize() {
|
|
28
|
+
try {
|
|
29
|
+
await fs.mkdir(this.backupDir, { recursive: true });
|
|
30
|
+
if (!(0, fs_1.existsSync)(this.metadataFile)) {
|
|
31
|
+
await fs.writeFile(this.metadataFile, JSON.stringify([], null, 2));
|
|
32
|
+
}
|
|
33
|
+
logger_1.logger.info('Backup manager initialized', { backupDir: this.backupDir });
|
|
34
|
+
}
|
|
35
|
+
catch (error) {
|
|
36
|
+
logger_1.logger.error('Failed to initialize backup manager', error);
|
|
37
|
+
throw error;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Create backup of specified files
|
|
42
|
+
*/
|
|
43
|
+
async createBackup(files, reason = 'Manual backup') {
|
|
44
|
+
const backupId = this.generateBackupId();
|
|
45
|
+
const timestamp = new Date().toISOString();
|
|
46
|
+
const backupPath = path.join(this.backupDir, backupId);
|
|
47
|
+
logger_1.logger.info('Creating backup', { backupId, files: files.length, reason });
|
|
48
|
+
try {
|
|
49
|
+
await fs.mkdir(backupPath, { recursive: true });
|
|
50
|
+
const backupFiles = [];
|
|
51
|
+
for (const filePath of files) {
|
|
52
|
+
const expandedPath = this.expandPath(filePath);
|
|
53
|
+
if (!(0, fs_1.existsSync)(expandedPath)) {
|
|
54
|
+
logger_1.logger.warn('File not found, skipping', { file: expandedPath });
|
|
55
|
+
continue;
|
|
56
|
+
}
|
|
57
|
+
const stats = await fs.stat(expandedPath);
|
|
58
|
+
const relativePath = this.getRelativePath(expandedPath);
|
|
59
|
+
const backupFilePath = path.join(backupPath, relativePath);
|
|
60
|
+
// Create directory structure
|
|
61
|
+
await fs.mkdir(path.dirname(backupFilePath), { recursive: true });
|
|
62
|
+
// Copy file
|
|
63
|
+
await fs.copyFile(expandedPath, backupFilePath);
|
|
64
|
+
backupFiles.push({
|
|
65
|
+
originalPath: expandedPath,
|
|
66
|
+
backupPath: backupFilePath,
|
|
67
|
+
size: stats.size,
|
|
68
|
+
});
|
|
69
|
+
logger_1.logger.info('Backed up file', {
|
|
70
|
+
original: expandedPath,
|
|
71
|
+
backup: backupFilePath,
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
const metadata = {
|
|
75
|
+
timestamp,
|
|
76
|
+
backupId,
|
|
77
|
+
files: backupFiles,
|
|
78
|
+
reason,
|
|
79
|
+
success: true,
|
|
80
|
+
};
|
|
81
|
+
await this.saveMetadata(metadata);
|
|
82
|
+
logger_1.logger.info('Backup created successfully', {
|
|
83
|
+
backupId,
|
|
84
|
+
filesBackedUp: backupFiles.length,
|
|
85
|
+
});
|
|
86
|
+
return metadata;
|
|
87
|
+
}
|
|
88
|
+
catch (error) {
|
|
89
|
+
logger_1.logger.error('Backup failed', error);
|
|
90
|
+
const metadata = {
|
|
91
|
+
timestamp,
|
|
92
|
+
backupId,
|
|
93
|
+
files: [],
|
|
94
|
+
reason,
|
|
95
|
+
success: false,
|
|
96
|
+
};
|
|
97
|
+
await this.saveMetadata(metadata);
|
|
98
|
+
throw error;
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Restore from backup
|
|
103
|
+
*/
|
|
104
|
+
async rollback(options = {}) {
|
|
105
|
+
const { backupId, dryRun = false, verbose = false } = options;
|
|
106
|
+
try {
|
|
107
|
+
const metadata = backupId
|
|
108
|
+
? await this.getBackupMetadata(backupId)
|
|
109
|
+
: await this.getLatestBackup();
|
|
110
|
+
if (!metadata) {
|
|
111
|
+
logger_1.logger.error('No backup found to restore');
|
|
112
|
+
return false;
|
|
113
|
+
}
|
|
114
|
+
logger_1.logger.info('Rolling back', {
|
|
115
|
+
backupId: metadata.backupId,
|
|
116
|
+
dryRun,
|
|
117
|
+
files: metadata.files.length,
|
|
118
|
+
});
|
|
119
|
+
if (dryRun) {
|
|
120
|
+
console.log(chalk_1.default.yellow('\nš DRY RUN - No files will be modified\n'));
|
|
121
|
+
console.log(chalk_1.default.cyan('Files that would be restored:'));
|
|
122
|
+
metadata.files.forEach(file => {
|
|
123
|
+
console.log(chalk_1.default.white(` ${file.originalPath}`));
|
|
124
|
+
if (verbose) {
|
|
125
|
+
console.log(chalk_1.default.gray(` ā ${file.backupPath}`));
|
|
126
|
+
}
|
|
127
|
+
});
|
|
128
|
+
return true;
|
|
129
|
+
}
|
|
130
|
+
const restoredFiles = [];
|
|
131
|
+
const failedFiles = [];
|
|
132
|
+
for (const file of metadata.files) {
|
|
133
|
+
try {
|
|
134
|
+
// Create directory structure
|
|
135
|
+
await fs.mkdir(path.dirname(file.originalPath), {
|
|
136
|
+
recursive: true,
|
|
137
|
+
});
|
|
138
|
+
// Restore file
|
|
139
|
+
await fs.copyFile(file.backupPath, file.originalPath);
|
|
140
|
+
restoredFiles.push(file.originalPath);
|
|
141
|
+
logger_1.logger.info('Restored file', { file: file.originalPath });
|
|
142
|
+
}
|
|
143
|
+
catch (error) {
|
|
144
|
+
logger_1.logger.error('Failed to restore file', {
|
|
145
|
+
file: file.originalPath,
|
|
146
|
+
error,
|
|
147
|
+
});
|
|
148
|
+
failedFiles.push(file.originalPath);
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
console.log(chalk_1.default.green(`\nā
Restored ${restoredFiles.length} files`));
|
|
152
|
+
if (failedFiles.length > 0) {
|
|
153
|
+
console.log(chalk_1.default.red(`ā Failed to restore ${failedFiles.length} files`));
|
|
154
|
+
failedFiles.forEach(file => {
|
|
155
|
+
console.log(chalk_1.default.red(` - ${file}`));
|
|
156
|
+
});
|
|
157
|
+
return false;
|
|
158
|
+
}
|
|
159
|
+
return true;
|
|
160
|
+
}
|
|
161
|
+
catch (error) {
|
|
162
|
+
logger_1.logger.error('Rollback failed', error);
|
|
163
|
+
return false;
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
/**
|
|
167
|
+
* List all backups
|
|
168
|
+
*/
|
|
169
|
+
async listBackups() {
|
|
170
|
+
try {
|
|
171
|
+
const content = await fs.readFile(this.metadataFile, 'utf-8');
|
|
172
|
+
const backups = JSON.parse(content);
|
|
173
|
+
return backups.sort((a, b) => new Date(b.timestamp).getTime() - new Date(a.timestamp).getTime());
|
|
174
|
+
}
|
|
175
|
+
catch (error) {
|
|
176
|
+
logger_1.logger.error('Failed to list backups', error);
|
|
177
|
+
return [];
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
/**
|
|
181
|
+
* Get specific backup metadata
|
|
182
|
+
*/
|
|
183
|
+
async getBackupMetadata(backupId) {
|
|
184
|
+
const backups = await this.listBackups();
|
|
185
|
+
return backups.find(b => b.backupId === backupId) || null;
|
|
186
|
+
}
|
|
187
|
+
/**
|
|
188
|
+
* Get latest successful backup
|
|
189
|
+
*/
|
|
190
|
+
async getLatestBackup() {
|
|
191
|
+
const backups = await this.listBackups();
|
|
192
|
+
return backups.find(b => b.success) || null;
|
|
193
|
+
}
|
|
194
|
+
/**
|
|
195
|
+
* Delete old backups
|
|
196
|
+
*/
|
|
197
|
+
async cleanupOldBackups(retainCount = 5) {
|
|
198
|
+
const backups = await this.listBackups();
|
|
199
|
+
if (backups.length <= retainCount) {
|
|
200
|
+
logger_1.logger.info('No backups to clean up', {
|
|
201
|
+
current: backups.length,
|
|
202
|
+
retain: retainCount,
|
|
203
|
+
});
|
|
204
|
+
return;
|
|
205
|
+
}
|
|
206
|
+
const toDelete = backups.slice(retainCount);
|
|
207
|
+
logger_1.logger.info('Cleaning up old backups', { count: toDelete.length });
|
|
208
|
+
for (const backup of toDelete) {
|
|
209
|
+
try {
|
|
210
|
+
const backupPath = path.join(this.backupDir, backup.backupId);
|
|
211
|
+
await fs.rm(backupPath, { recursive: true, force: true });
|
|
212
|
+
logger_1.logger.info('Deleted backup', { backupId: backup.backupId });
|
|
213
|
+
}
|
|
214
|
+
catch (error) {
|
|
215
|
+
logger_1.logger.error('Failed to delete backup', {
|
|
216
|
+
backupId: backup.backupId,
|
|
217
|
+
error,
|
|
218
|
+
});
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
// Update metadata
|
|
222
|
+
const remaining = backups.slice(0, retainCount);
|
|
223
|
+
await fs.writeFile(this.metadataFile, JSON.stringify(remaining, null, 2));
|
|
224
|
+
}
|
|
225
|
+
/**
|
|
226
|
+
* Verify backup integrity
|
|
227
|
+
*/
|
|
228
|
+
async verifyBackup(backupId) {
|
|
229
|
+
const metadata = await this.getBackupMetadata(backupId);
|
|
230
|
+
if (!metadata) {
|
|
231
|
+
logger_1.logger.error('Backup not found', { backupId });
|
|
232
|
+
return false;
|
|
233
|
+
}
|
|
234
|
+
let valid = true;
|
|
235
|
+
for (const file of metadata.files) {
|
|
236
|
+
if (!(0, fs_1.existsSync)(file.backupPath)) {
|
|
237
|
+
logger_1.logger.error('Backup file missing', { file: file.backupPath });
|
|
238
|
+
valid = false;
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
return valid;
|
|
242
|
+
}
|
|
243
|
+
/**
|
|
244
|
+
* Private helper methods
|
|
245
|
+
*/
|
|
246
|
+
generateBackupId() {
|
|
247
|
+
const timestamp = new Date().toISOString().replace(/[:.]/g, '-');
|
|
248
|
+
return `backup-${timestamp}`;
|
|
249
|
+
}
|
|
250
|
+
expandPath(filePath) {
|
|
251
|
+
if (filePath.startsWith('~/')) {
|
|
252
|
+
return path.join(this.homeDir, filePath.slice(2));
|
|
253
|
+
}
|
|
254
|
+
return filePath;
|
|
255
|
+
}
|
|
256
|
+
getRelativePath(absolutePath) {
|
|
257
|
+
// Create relative path from home directory
|
|
258
|
+
if (absolutePath.startsWith(this.homeDir)) {
|
|
259
|
+
return path.relative(this.homeDir, absolutePath);
|
|
260
|
+
}
|
|
261
|
+
// For absolute paths outside home, use full path structure
|
|
262
|
+
return absolutePath.replace(/^\//, '');
|
|
263
|
+
}
|
|
264
|
+
async saveMetadata(metadata) {
|
|
265
|
+
const backups = await this.listBackups();
|
|
266
|
+
backups.unshift(metadata);
|
|
267
|
+
await fs.writeFile(this.metadataFile, JSON.stringify(backups, null, 2));
|
|
268
|
+
}
|
|
269
|
+
/**
|
|
270
|
+
* Display backup information
|
|
271
|
+
*/
|
|
272
|
+
displayBackupInfo(metadata) {
|
|
273
|
+
console.log(chalk_1.default.cyan('\nš¦ Backup Information\n'));
|
|
274
|
+
console.log(chalk_1.default.white('Backup ID:'), chalk_1.default.green(metadata.backupId));
|
|
275
|
+
console.log(chalk_1.default.white('Timestamp:'), chalk_1.default.gray(metadata.timestamp));
|
|
276
|
+
console.log(chalk_1.default.white('Reason:'), chalk_1.default.gray(metadata.reason));
|
|
277
|
+
console.log(chalk_1.default.white('Status:'), metadata.success ? chalk_1.default.green('Success') : chalk_1.default.red('Failed'));
|
|
278
|
+
console.log(chalk_1.default.white('Files:'), chalk_1.default.cyan(metadata.files.length));
|
|
279
|
+
if (metadata.files.length > 0) {
|
|
280
|
+
console.log(chalk_1.default.cyan('\nBacked up files:'));
|
|
281
|
+
metadata.files.forEach(file => {
|
|
282
|
+
const size = (file.size / 1024).toFixed(2);
|
|
283
|
+
console.log(chalk_1.default.gray(` ⢠${file.originalPath} (${size} KB)`));
|
|
284
|
+
});
|
|
285
|
+
}
|
|
286
|
+
}
|
|
287
|
+
}
|
|
288
|
+
exports.BackupRollbackManager = BackupRollbackManager;
|
|
289
|
+
//# sourceMappingURL=backup-rollback-manager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"backup-rollback-manager.js","sourceRoot":"","sources":["../../src/utils/backup-rollback-manager.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;;AAEH,2BAAgC;AAChC,wDAAkC;AAClC,mDAA6B;AAE7B,0DAA0B;AAE1B,qCAAkC;AAuBlC,MAAa,qBAAqB;IACxB,SAAS,CAAS;IAClB,YAAY,CAAS;IACrB,OAAO,CAAS;IAExB,YAAY,SAAkB;QAC5B,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,EAAE,CAAC;QACjE,IAAI,CAAC,SAAS;YACZ,SAAS,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;QAC5D,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,eAAe,CAAC,CAAC;IACjE,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,UAAU;QACd,IAAI,CAAC;YACH,MAAM,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YAEpD,IAAI,CAAC,IAAA,eAAU,EAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC;gBACnC,MAAM,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;YACrE,CAAC;YAED,eAAM,CAAC,IAAI,CAAC,4BAA4B,EAAE,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;QAC3E,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,eAAM,CAAC,KAAK,CAAC,qCAAqC,EAAE,KAAK,CAAC,CAAC;YAC3D,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,YAAY,CAChB,KAAe,EACf,SAAiB,eAAe;QAEhC,MAAM,QAAQ,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACzC,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QAC3C,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;QAEvD,eAAM,CAAC,IAAI,CAAC,iBAAiB,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;QAE1E,IAAI,CAAC;YACH,MAAM,EAAE,CAAC,KAAK,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YAEhD,MAAM,WAAW,GAAiB,EAAE,CAAC;YAErC,KAAK,MAAM,QAAQ,IAAI,KAAK,EAAE,CAAC;gBAC7B,MAAM,YAAY,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;gBAE/C,IAAI,CAAC,IAAA,eAAU,EAAC,YAAY,CAAC,EAAE,CAAC;oBAC9B,eAAM,CAAC,IAAI,CAAC,0BAA0B,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC;oBAChE,SAAS;gBACX,CAAC;gBAED,MAAM,KAAK,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;gBAC1C,MAAM,YAAY,GAAG,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC;gBACxD,MAAM,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;gBAE3D,6BAA6B;gBAC7B,MAAM,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;gBAElE,YAAY;gBACZ,MAAM,EAAE,CAAC,QAAQ,CAAC,YAAY,EAAE,cAAc,CAAC,CAAC;gBAEhD,WAAW,CAAC,IAAI,CAAC;oBACf,YAAY,EAAE,YAAY;oBAC1B,UAAU,EAAE,cAAc;oBAC1B,IAAI,EAAE,KAAK,CAAC,IAAI;iBACjB,CAAC,CAAC;gBAEH,eAAM,CAAC,IAAI,CAAC,gBAAgB,EAAE;oBAC5B,QAAQ,EAAE,YAAY;oBACtB,MAAM,EAAE,cAAc;iBACvB,CAAC,CAAC;YACL,CAAC;YAED,MAAM,QAAQ,GAAmB;gBAC/B,SAAS;gBACT,QAAQ;gBACR,KAAK,EAAE,WAAW;gBAClB,MAAM;gBACN,OAAO,EAAE,IAAI;aACd,CAAC;YAEF,MAAM,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;YAElC,eAAM,CAAC,IAAI,CAAC,6BAA6B,EAAE;gBACzC,QAAQ;gBACR,aAAa,EAAE,WAAW,CAAC,MAAM;aAClC,CAAC,CAAC;YAEH,OAAO,QAAQ,CAAC;QAClB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,eAAM,CAAC,KAAK,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC;YAErC,MAAM,QAAQ,GAAmB;gBAC/B,SAAS;gBACT,QAAQ;gBACR,KAAK,EAAE,EAAE;gBACT,MAAM;gBACN,OAAO,EAAE,KAAK;aACf,CAAC;YAEF,MAAM,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;YAClC,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,QAAQ,CAAC,UAA2B,EAAE;QAC1C,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,KAAK,EAAE,OAAO,GAAG,KAAK,EAAE,GAAG,OAAO,CAAC;QAE9D,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,QAAQ;gBACvB,CAAC,CAAC,MAAM,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC;gBACxC,CAAC,CAAC,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC;YAEjC,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACd,eAAM,CAAC,KAAK,CAAC,4BAA4B,CAAC,CAAC;gBAC3C,OAAO,KAAK,CAAC;YACf,CAAC;YAED,eAAM,CAAC,IAAI,CAAC,cAAc,EAAE;gBAC1B,QAAQ,EAAE,QAAQ,CAAC,QAAQ;gBAC3B,MAAM;gBACN,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC,MAAM;aAC7B,CAAC,CAAC;YAEH,IAAI,MAAM,EAAE,CAAC;gBACX,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,MAAM,CAAC,4CAA4C,CAAC,CAAC,CAAC;gBACxE,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAC,CAAC;gBACzD,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;oBAC5B,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC;oBACnD,IAAI,OAAO,EAAE,CAAC;wBACZ,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;oBACtD,CAAC;gBACH,CAAC,CAAC,CAAC;gBACH,OAAO,IAAI,CAAC;YACd,CAAC;YAED,MAAM,aAAa,GAAa,EAAE,CAAC;YACnC,MAAM,WAAW,GAAa,EAAE,CAAC;YAEjC,KAAK,MAAM,IAAI,IAAI,QAAQ,CAAC,KAAK,EAAE,CAAC;gBAClC,IAAI,CAAC;oBACH,6BAA6B;oBAC7B,MAAM,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE;wBAC9C,SAAS,EAAE,IAAI;qBAChB,CAAC,CAAC;oBAEH,eAAe;oBACf,MAAM,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;oBACtD,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;oBAEtC,eAAM,CAAC,IAAI,CAAC,eAAe,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;gBAC5D,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,eAAM,CAAC,KAAK,CAAC,wBAAwB,EAAE;wBACrC,IAAI,EAAE,IAAI,CAAC,YAAY;wBACvB,KAAK;qBACN,CAAC,CAAC;oBACH,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;gBACtC,CAAC;YACH,CAAC;YAED,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,KAAK,CAAC,gBAAgB,aAAa,CAAC,MAAM,QAAQ,CAAC,CAAC,CAAC;YAEvE,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC3B,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,GAAG,CAAC,uBAAuB,WAAW,CAAC,MAAM,QAAQ,CAAC,CAAC,CAAC;gBAC1E,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;oBACzB,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,CAAC;gBACxC,CAAC,CAAC,CAAC;gBACH,OAAO,KAAK,CAAC;YACf,CAAC;YAED,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,eAAM,CAAC,KAAK,CAAC,iBAAiB,EAAE,KAAK,CAAC,CAAC;YACvC,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,WAAW;QACf,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;YAC9D,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAqB,CAAC;YACxD,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAC3B,IAAI,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,CAClE,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,eAAM,CAAC,KAAK,CAAC,wBAAwB,EAAE,KAAK,CAAC,CAAC;YAC9C,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,iBAAiB,CAAC,QAAgB;QACtC,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;QACzC,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,IAAI,IAAI,CAAC;IAC5D,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,eAAe;QACnB,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;QACzC,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC;IAC9C,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,iBAAiB,CAAC,cAAsB,CAAC;QAC7C,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;QAEzC,IAAI,OAAO,CAAC,MAAM,IAAI,WAAW,EAAE,CAAC;YAClC,eAAM,CAAC,IAAI,CAAC,wBAAwB,EAAE;gBACpC,OAAO,EAAE,OAAO,CAAC,MAAM;gBACvB,MAAM,EAAE,WAAW;aACpB,CAAC,CAAC;YACH,OAAO;QACT,CAAC;QAED,MAAM,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QAE5C,eAAM,CAAC,IAAI,CAAC,yBAAyB,EAAE,EAAE,KAAK,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;QAEnE,KAAK,MAAM,MAAM,IAAI,QAAQ,EAAE,CAAC;YAC9B,IAAI,CAAC;gBACH,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;gBAC9D,MAAM,EAAE,CAAC,EAAE,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;gBAC1D,eAAM,CAAC,IAAI,CAAC,gBAAgB,EAAE,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;YAC/D,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,eAAM,CAAC,KAAK,CAAC,yBAAyB,EAAE;oBACtC,QAAQ,EAAE,MAAM,CAAC,QAAQ;oBACzB,KAAK;iBACN,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,kBAAkB;QAClB,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC;QAChD,MAAM,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IAC5E,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,YAAY,CAAC,QAAgB;QACjC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC;QAExD,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,eAAM,CAAC,KAAK,CAAC,kBAAkB,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC;YAC/C,OAAO,KAAK,CAAC;QACf,CAAC;QAED,IAAI,KAAK,GAAG,IAAI,CAAC;QAEjB,KAAK,MAAM,IAAI,IAAI,QAAQ,CAAC,KAAK,EAAE,CAAC;YAClC,IAAI,CAAC,IAAA,eAAU,EAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;gBACjC,eAAM,CAAC,KAAK,CAAC,qBAAqB,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;gBAC/D,KAAK,GAAG,KAAK,CAAC;YAChB,CAAC;QACH,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;OAEG;IAEK,gBAAgB;QACtB,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QACjE,OAAO,UAAU,SAAS,EAAE,CAAC;IAC/B,CAAC;IAEO,UAAU,CAAC,QAAgB;QACjC,IAAI,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YAC9B,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QACpD,CAAC;QACD,OAAO,QAAQ,CAAC;IAClB,CAAC;IAEO,eAAe,CAAC,YAAoB;QAC1C,2CAA2C;QAC3C,IAAI,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;YAC1C,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;QACnD,CAAC;QACD,2DAA2D;QAC3D,OAAO,YAAY,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IACzC,CAAC;IAEO,KAAK,CAAC,YAAY,CAAC,QAAwB;QACjD,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;QACzC,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAC1B,MAAM,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IAC1E,CAAC;IAED;;OAEG;IACH,iBAAiB,CAAC,QAAwB;QACxC,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC,CAAC;QACrD,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE,eAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;QACvE,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE,eAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC;QACvE,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,eAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;QACjE,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,KAAK,CAAC,SAAS,CAAC,EAChC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,eAAK,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,eAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAChE,CAAC;QACF,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,eAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;QAEtE,IAAI,QAAQ,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC9B,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC;YAC9C,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;gBAC5B,MAAM,IAAI,GAAG,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;gBAC3C,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,YAAY,KAAK,IAAI,MAAM,CAAC,CAAC,CAAC;YACnE,CAAC,CAAC,CAAC;QACL,CAAC;IACH,CAAC;CACF;AAxUD,sDAwUC"}
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Claude Code Configuration Installer
|
|
3
|
+
* Handles installation of CLAUDE.md, hooks, conventions, and agent templates
|
|
4
|
+
*/
|
|
5
|
+
export interface ClaudeConfigOptions {
|
|
6
|
+
claudeDir?: string;
|
|
7
|
+
sourceDir?: string;
|
|
8
|
+
dryRun?: boolean;
|
|
9
|
+
skipBackup?: boolean;
|
|
10
|
+
overwrite?: boolean;
|
|
11
|
+
verbose?: boolean;
|
|
12
|
+
}
|
|
13
|
+
export interface InstallResult {
|
|
14
|
+
success: boolean;
|
|
15
|
+
installed: string[];
|
|
16
|
+
skipped: string[];
|
|
17
|
+
errors: Array<{
|
|
18
|
+
file: string;
|
|
19
|
+
error: string;
|
|
20
|
+
}>;
|
|
21
|
+
backupId?: string;
|
|
22
|
+
}
|
|
23
|
+
export declare class ClaudeConfigInstaller {
|
|
24
|
+
private claudeDir;
|
|
25
|
+
private sourceDir;
|
|
26
|
+
private backupManager;
|
|
27
|
+
private homeDir;
|
|
28
|
+
constructor(options?: ClaudeConfigOptions);
|
|
29
|
+
/**
|
|
30
|
+
* Initialize installer
|
|
31
|
+
*/
|
|
32
|
+
initialize(): Promise<void>;
|
|
33
|
+
/**
|
|
34
|
+
* Install all Claude Code configurations
|
|
35
|
+
*/
|
|
36
|
+
install(options?: ClaudeConfigOptions): Promise<InstallResult>;
|
|
37
|
+
/**
|
|
38
|
+
* Install enhanced CLAUDE.md to ~/.claude/
|
|
39
|
+
*/
|
|
40
|
+
private installClaudeMd;
|
|
41
|
+
/**
|
|
42
|
+
* Install hooks configuration
|
|
43
|
+
*/
|
|
44
|
+
private installHooks;
|
|
45
|
+
/**
|
|
46
|
+
* Install conventions
|
|
47
|
+
*/
|
|
48
|
+
private installConventions;
|
|
49
|
+
/**
|
|
50
|
+
* Install agent templates
|
|
51
|
+
*/
|
|
52
|
+
private installAgentTemplates;
|
|
53
|
+
/**
|
|
54
|
+
* Install git-worktree workflows
|
|
55
|
+
*/
|
|
56
|
+
private installGitWorktreeWorkflows;
|
|
57
|
+
/**
|
|
58
|
+
* Install validation scripts
|
|
59
|
+
*/
|
|
60
|
+
private installValidationScripts;
|
|
61
|
+
/**
|
|
62
|
+
* Create directory structure
|
|
63
|
+
*/
|
|
64
|
+
private createDirectoryStructure;
|
|
65
|
+
/**
|
|
66
|
+
* Get existing config files for backup
|
|
67
|
+
*/
|
|
68
|
+
private getExistingConfigFiles;
|
|
69
|
+
/**
|
|
70
|
+
* Generate hooks configuration files
|
|
71
|
+
*/
|
|
72
|
+
private generateHooksConfig;
|
|
73
|
+
/**
|
|
74
|
+
* Generate conventions configuration
|
|
75
|
+
*/
|
|
76
|
+
private generateConventions;
|
|
77
|
+
/**
|
|
78
|
+
* Generate agent templates
|
|
79
|
+
*/
|
|
80
|
+
private generateAgentTemplates;
|
|
81
|
+
/**
|
|
82
|
+
* Generate git-worktree workflows
|
|
83
|
+
*/
|
|
84
|
+
private generateGitWorktreeWorkflows;
|
|
85
|
+
/**
|
|
86
|
+
* Generate validation scripts
|
|
87
|
+
*/
|
|
88
|
+
private generateValidationScripts;
|
|
89
|
+
/**
|
|
90
|
+
* Display installation summary
|
|
91
|
+
*/
|
|
92
|
+
private displayInstallSummary;
|
|
93
|
+
}
|
|
94
|
+
//# sourceMappingURL=claude-config-installer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"claude-config-installer.d.ts","sourceRoot":"","sources":["../../src/utils/claude-config-installer.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAYH,MAAM,WAAW,mBAAmB;IAClC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,MAAM,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC/C,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,qBAAa,qBAAqB;IAChC,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,aAAa,CAAwB;IAC7C,OAAO,CAAC,OAAO,CAAS;gBAEZ,OAAO,GAAE,mBAAwB;IAO7C;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAOjC;;OAEG;IACG,OAAO,CAAC,OAAO,GAAE,mBAAwB,GAAG,OAAO,CAAC,aAAa,CAAC;IA6DxE;;OAEG;YACW,eAAe;IA6C7B;;OAEG;YACW,YAAY;IA0C1B;;OAEG;YACW,kBAAkB;IAqChC;;OAEG;YACW,qBAAqB;IAyCnC;;OAEG;YACW,2BAA2B;IAyCzC;;OAEG;YACW,wBAAwB;IA0CtC;;OAEG;YACW,wBAAwB;IAetC;;OAEG;YACW,sBAAsB;IAgBpC;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAoC3B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAkC3B;;OAEG;IACH,OAAO,CAAC,sBAAsB;IA6C9B;;OAEG;IACH,OAAO,CAAC,4BAA4B;IAiDpC;;OAEG;IACH,OAAO,CAAC,yBAAyB;IAgFjC;;OAEG;IACH,OAAO,CAAC,qBAAqB;CAiD9B"}
|