driftdetect 0.9.39 → 0.9.41

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/dist/bin/drift.js CHANGED
@@ -8,7 +8,7 @@
8
8
  * @requirements 29.1
9
9
  */
10
10
  import { Command } from 'commander';
11
- import { initCommand, scanCommand, checkCommand, statusCommand, approveCommand, ignoreCommand, reportCommand, exportCommand, whereCommand, filesCommand, watchCommand, dashboardCommand, trendsCommand, parserCommand, dnaCommand, boundariesCommand, callgraphCommand, projectsCommand, skillsCommand, migrateStorageCommand, wrappersCommand, createTestTopologyCommand, createCouplingCommand, createErrorHandlingCommand, createSimulateCommand, createConstraintsCommand, createWpfCommand, createGoCommand, createRustCommand, createCppCommand, createTsCommand, createPyCommand, createJavaCommand, createPhpCommand, envCommand, constantsCommand, licenseCommand, createGateCommand, contextCommand, telemetryCommand, auditCommand, nextStepsCommand, troubleshootCommand, } from '../commands/index.js';
11
+ import { initCommand, scanCommand, checkCommand, statusCommand, approveCommand, ignoreCommand, reportCommand, exportCommand, whereCommand, filesCommand, watchCommand, dashboardCommand, trendsCommand, parserCommand, dnaCommand, boundariesCommand, callgraphCommand, projectsCommand, skillsCommand, migrateStorageCommand, wrappersCommand, createTestTopologyCommand, createCouplingCommand, createErrorHandlingCommand, createSimulateCommand, createConstraintsCommand, createWpfCommand, createGoCommand, createRustCommand, createCppCommand, createTsCommand, createPyCommand, createJavaCommand, createPhpCommand, envCommand, constantsCommand, licenseCommand, createGateCommand, contextCommand, telemetryCommand, auditCommand, nextStepsCommand, troubleshootCommand, createMemoryCommand, setupCommand, backupCommand, } from '../commands/index.js';
12
12
  import { VERSION } from '../index.js';
13
13
  /**
14
14
  * Create and configure the main CLI program
@@ -83,9 +83,17 @@ function createProgram() {
83
83
  // User Guidance Commands
84
84
  program.addCommand(nextStepsCommand);
85
85
  program.addCommand(troubleshootCommand);
86
+ // Cortex V2 Memory Management
87
+ program.addCommand(createMemoryCommand());
88
+ // Unified Setup Wizard (guided onboarding)
89
+ program.addCommand(setupCommand);
90
+ // Backup & Restore (enterprise data safety)
91
+ program.addCommand(backupCommand);
86
92
  // Add help examples
87
93
  program.addHelpText('after', `
88
94
  Examples:
95
+ $ drift setup Guided setup wizard (recommended for new users)
96
+ $ drift setup -y Quick setup with recommended defaults
89
97
  $ drift init Initialize Drift in current directory
90
98
  $ drift init --from-scaffold Initialize with Cheatcode2026 presets
91
99
  $ drift scan Scan codebase for patterns
@@ -178,6 +186,28 @@ Examples:
178
186
  $ drift next-steps -v Show all recommendations with reasons
179
187
  $ drift troubleshoot Diagnose common issues
180
188
  $ drift troubleshoot -v Show all issues including info-level
189
+ $ drift memory init Initialize the memory system
190
+ $ drift memory status Show memory system status
191
+ $ drift memory add tribal "..." Add tribal knowledge
192
+ $ drift memory add procedural "..." Add a procedure
193
+ $ drift memory list List all memories
194
+ $ drift memory list -t tribal List tribal memories only
195
+ $ drift memory show <id> Show memory details
196
+ $ drift memory search "auth" Search memories
197
+ $ drift memory learn -o "..." -f "..." Learn from a correction
198
+ $ drift memory feedback <id> confirm Confirm a memory is accurate
199
+ $ drift memory validate Validate and heal memories
200
+ $ drift memory consolidate Consolidate episodic memories
201
+ $ drift memory warnings Show active warnings
202
+ $ drift memory why "auth" Get context for a task
203
+ $ drift memory export out.json Export memories
204
+ $ drift memory import in.json Import memories
205
+ $ drift memory health Get health report
206
+ $ drift backup List all backups
207
+ $ drift backup create Create a backup
208
+ $ drift backup restore <id> Restore from a backup
209
+ $ drift backup delete <id> Delete a backup (requires typing DELETE)
210
+ $ drift backup info <id> Show backup details
181
211
 
182
212
  Documentation:
183
213
  https://github.com/drift/drift
@@ -1 +1 @@
1
- {"version":3,"file":"drift.js","sourceRoot":"","sources":["../../src/bin/drift.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"drift.js","sourceRoot":"","sources":["../../src/bin/drift.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Backup Command - drift backup
3
+ *
4
+ * Enterprise-grade backup and restore for .drift data.
5
+ * Ensures data safety during version upgrades and migrations.
6
+ *
7
+ * Commands:
8
+ * - drift backup create - Create a backup
9
+ * - drift backup list - List all backups
10
+ * - drift backup restore - Restore from a backup
11
+ * - drift backup delete - Delete a backup (requires confirmation)
12
+ * - drift backup info - Show backup details
13
+ */
14
+ import { Command } from 'commander';
15
+ export declare const backupCommand: Command;
16
+ //# sourceMappingURL=backup.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"backup.d.ts","sourceRoot":"","sources":["../../src/commands/backup.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAGH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAmapC,eAAO,MAAM,aAAa,SAqCvB,CAAC"}
@@ -0,0 +1,377 @@
1
+ /**
2
+ * Backup Command - drift backup
3
+ *
4
+ * Enterprise-grade backup and restore for .drift data.
5
+ * Ensures data safety during version upgrades and migrations.
6
+ *
7
+ * Commands:
8
+ * - drift backup create - Create a backup
9
+ * - drift backup list - List all backups
10
+ * - drift backup restore - Restore from a backup
11
+ * - drift backup delete - Delete a backup (requires confirmation)
12
+ * - drift backup info - Show backup details
13
+ */
14
+ import chalk from 'chalk';
15
+ import { Command } from 'commander';
16
+ import { createWorkspaceManager, } from 'driftdetect-core';
17
+ import { confirmPrompt, selectPrompt, inputPrompt } from '../ui/prompts.js';
18
+ import { createSpinner, status } from '../ui/spinner.js';
19
+ import { VERSION } from '../index.js';
20
+ // ============================================================================
21
+ // Formatters
22
+ // ============================================================================
23
+ function formatSize(bytes) {
24
+ if (bytes < 1024)
25
+ return `${bytes} B`;
26
+ if (bytes < 1024 * 1024)
27
+ return `${(bytes / 1024).toFixed(1)} KB`;
28
+ return `${(bytes / (1024 * 1024)).toFixed(1)} MB`;
29
+ }
30
+ function formatDate(isoDate) {
31
+ const date = new Date(isoDate);
32
+ return date.toLocaleString();
33
+ }
34
+ function formatRelativeDate(isoDate) {
35
+ const date = new Date(isoDate);
36
+ const now = new Date();
37
+ const diffMs = now.getTime() - date.getTime();
38
+ const diffMins = Math.floor(diffMs / (1000 * 60));
39
+ const diffHours = Math.floor(diffMs / (1000 * 60 * 60));
40
+ const diffDays = Math.floor(diffMs / (1000 * 60 * 60 * 24));
41
+ if (diffMins < 1)
42
+ return 'just now';
43
+ if (diffMins < 60)
44
+ return `${diffMins} min ago`;
45
+ if (diffHours < 24)
46
+ return `${diffHours} hours ago`;
47
+ if (diffDays < 7)
48
+ return `${diffDays} days ago`;
49
+ return formatDate(isoDate);
50
+ }
51
+ function formatReason(reason) {
52
+ const labels = {
53
+ version_upgrade: '🔄 Version Upgrade',
54
+ schema_migration: '📦 Schema Migration',
55
+ user_requested: '👤 User Requested',
56
+ pre_destructive_operation: '⚠️ Pre-Destructive',
57
+ scheduled: '⏰ Scheduled',
58
+ auto_save: '💾 Auto Save',
59
+ };
60
+ return labels[reason] ?? reason;
61
+ }
62
+ async function createAction(options) {
63
+ const cwd = process.cwd();
64
+ const manager = createWorkspaceManager(cwd);
65
+ const format = options.format ?? 'text';
66
+ const spinner = format === 'text' ? createSpinner('Creating backup...') : null;
67
+ spinner?.start();
68
+ try {
69
+ await manager.initialize({ driftVersion: VERSION });
70
+ const reason = (options.reason ?? 'user_requested');
71
+ const result = await manager.createBackup(reason);
72
+ spinner?.stop();
73
+ if (result.success) {
74
+ if (format === 'json') {
75
+ console.log(JSON.stringify({
76
+ success: true,
77
+ backupId: result.backupId,
78
+ path: result.backupPath,
79
+ size: result.metadata.sizeBytes,
80
+ files: result.metadata.files.length,
81
+ checksum: result.metadata.checksum,
82
+ }));
83
+ return;
84
+ }
85
+ spinner?.succeed(`Backup created: ${chalk.cyan(result.backupId)}`);
86
+ console.log();
87
+ console.log(chalk.gray(` Path: ${result.backupPath}`));
88
+ console.log(chalk.gray(` Size: ${formatSize(result.metadata.sizeBytes)}`));
89
+ console.log(chalk.gray(` Files: ${result.metadata.files.length}`));
90
+ console.log(chalk.gray(` Checksum: ${result.metadata.checksum.slice(0, 16)}...`));
91
+ console.log();
92
+ }
93
+ else {
94
+ if (format === 'json') {
95
+ console.log(JSON.stringify({ success: false, error: result.error }));
96
+ return;
97
+ }
98
+ spinner?.fail(`Backup failed: ${result.error}`);
99
+ }
100
+ }
101
+ catch (error) {
102
+ spinner?.stop();
103
+ if (format === 'json') {
104
+ console.log(JSON.stringify({ success: false, error: error.message }));
105
+ return;
106
+ }
107
+ spinner?.fail(`Backup failed: ${error.message}`);
108
+ }
109
+ }
110
+ async function listAction(options) {
111
+ const cwd = process.cwd();
112
+ const manager = createWorkspaceManager(cwd);
113
+ try {
114
+ await manager.initialize({ skipMigration: true });
115
+ const backups = await manager.listBackups();
116
+ if (options.json) {
117
+ console.log(JSON.stringify(backups, null, 2));
118
+ return;
119
+ }
120
+ if (backups.length === 0) {
121
+ console.log();
122
+ console.log(chalk.yellow('No backups found.'));
123
+ console.log(chalk.gray('Run `drift backup create` to create one.'));
124
+ console.log();
125
+ return;
126
+ }
127
+ const limit = options.limit ? parseInt(options.limit, 10) : backups.length;
128
+ const displayBackups = backups.slice(0, limit);
129
+ console.log();
130
+ console.log(chalk.bold(`📦 Backups (${backups.length} total)`));
131
+ console.log();
132
+ // Table header
133
+ console.log(chalk.gray(' ' +
134
+ 'ID'.padEnd(10) +
135
+ 'Created'.padEnd(18) +
136
+ 'Reason'.padEnd(22) +
137
+ 'Size'.padEnd(10) +
138
+ 'Version'));
139
+ console.log(chalk.gray(' ' + '─'.repeat(75)));
140
+ for (const backup of displayBackups) {
141
+ console.log(' ' +
142
+ chalk.cyan(backup.id.padEnd(10)) +
143
+ chalk.gray(formatRelativeDate(backup.createdAt).padEnd(18)) +
144
+ formatReason(backup.reason).padEnd(22) +
145
+ chalk.white(formatSize(backup.sizeBytes).padEnd(10)) +
146
+ chalk.gray(backup.driftVersion));
147
+ }
148
+ console.log();
149
+ if (backups.length > limit) {
150
+ console.log(chalk.gray(` ... and ${backups.length - limit} more. Use --limit to see more.`));
151
+ console.log();
152
+ }
153
+ }
154
+ catch (error) {
155
+ status.error(`Failed to list backups: ${error.message}`);
156
+ }
157
+ }
158
+ // ============================================================================
159
+ // Restore Command
160
+ // ============================================================================
161
+ async function restoreAction(backupId) {
162
+ const cwd = process.cwd();
163
+ const manager = createWorkspaceManager(cwd);
164
+ try {
165
+ await manager.initialize({ skipMigration: true });
166
+ const backups = await manager.listBackups();
167
+ if (backups.length === 0) {
168
+ status.error('No backups available');
169
+ return;
170
+ }
171
+ let targetBackup;
172
+ if (backupId) {
173
+ targetBackup = backups.find(b => b.id === backupId);
174
+ if (!targetBackup) {
175
+ status.error(`Backup not found: ${backupId}`);
176
+ return;
177
+ }
178
+ }
179
+ else {
180
+ // Interactive selection
181
+ const choices = backups.map(b => ({
182
+ name: `${b.id} - ${formatRelativeDate(b.createdAt)} - ${formatReason(b.reason)} (${formatSize(b.sizeBytes)})`,
183
+ value: b.id,
184
+ }));
185
+ const selectedId = await selectPrompt('Select backup to restore:', choices);
186
+ targetBackup = backups.find(b => b.id === selectedId);
187
+ }
188
+ if (!targetBackup) {
189
+ status.error('Backup not found');
190
+ return;
191
+ }
192
+ // Confirm restore
193
+ console.log();
194
+ console.log(chalk.yellow('⚠️ This will replace your current .drift data with the backup.'));
195
+ console.log(chalk.gray(` A backup of the current state will be created first.`));
196
+ console.log();
197
+ const confirmed = await confirmPrompt(`Restore from backup ${targetBackup.id}?`, false);
198
+ if (!confirmed) {
199
+ status.info('Cancelled');
200
+ return;
201
+ }
202
+ const spinner = createSpinner('Restoring backup...');
203
+ spinner.start();
204
+ const result = await manager.restore(targetBackup.id);
205
+ if (result.success) {
206
+ spinner.succeed(`Restored ${result.filesRestored} files from backup`);
207
+ console.log(chalk.gray(` From: ${result.restoredFrom}`));
208
+ }
209
+ else {
210
+ spinner.fail(`Restore failed: ${result.error}`);
211
+ }
212
+ }
213
+ catch (error) {
214
+ status.error(`Restore failed: ${error.message}`);
215
+ }
216
+ }
217
+ // ============================================================================
218
+ // Delete Command
219
+ // ============================================================================
220
+ async function deleteAction(backupId) {
221
+ const cwd = process.cwd();
222
+ const manager = createWorkspaceManager(cwd);
223
+ try {
224
+ await manager.initialize({ skipMigration: true });
225
+ const backups = await manager.listBackups();
226
+ if (backups.length === 0) {
227
+ status.error('No backups available');
228
+ return;
229
+ }
230
+ let targetBackup;
231
+ if (backupId) {
232
+ targetBackup = backups.find(b => b.id === backupId);
233
+ if (!targetBackup) {
234
+ status.error(`Backup not found: ${backupId}`);
235
+ return;
236
+ }
237
+ }
238
+ else {
239
+ // Interactive selection
240
+ const choices = backups.map(b => ({
241
+ name: `${b.id} - ${formatRelativeDate(b.createdAt)} - ${formatReason(b.reason)}`,
242
+ value: b.id,
243
+ }));
244
+ const selectedId = await selectPrompt('Select backup to delete:', choices);
245
+ targetBackup = backups.find(b => b.id === selectedId);
246
+ }
247
+ if (!targetBackup) {
248
+ status.error('Backup not found');
249
+ return;
250
+ }
251
+ // Require explicit confirmation
252
+ console.log();
253
+ console.log(chalk.red('⚠️ This action is irreversible!'));
254
+ console.log(chalk.gray(` Backup: ${targetBackup.id}`));
255
+ console.log(chalk.gray(` Created: ${formatDate(targetBackup.createdAt)}`));
256
+ console.log(chalk.gray(` Size: ${formatSize(targetBackup.sizeBytes)}`));
257
+ console.log();
258
+ const confirmation = await inputPrompt('Type DELETE to confirm deletion:', '');
259
+ if (confirmation !== 'DELETE') {
260
+ status.info('Deletion cancelled (confirmation token not provided)');
261
+ return;
262
+ }
263
+ const spinner = createSpinner('Deleting backup...');
264
+ spinner.start();
265
+ const success = await manager.deleteBackup(targetBackup.id, 'DELETE');
266
+ if (success) {
267
+ spinner.succeed(`Deleted backup ${targetBackup.id}`);
268
+ }
269
+ else {
270
+ spinner.fail('Failed to delete backup');
271
+ }
272
+ }
273
+ catch (error) {
274
+ status.error(`Delete failed: ${error.message}`);
275
+ }
276
+ }
277
+ async function infoAction(backupId, options) {
278
+ const cwd = process.cwd();
279
+ const manager = createWorkspaceManager(cwd);
280
+ const format = options?.format ?? 'text';
281
+ try {
282
+ await manager.initialize({ skipMigration: true });
283
+ const backups = await manager.listBackups();
284
+ if (backups.length === 0) {
285
+ if (format === 'json') {
286
+ console.log(JSON.stringify({ error: 'No backups available' }));
287
+ return;
288
+ }
289
+ status.error('No backups available');
290
+ return;
291
+ }
292
+ let targetBackup;
293
+ if (backupId) {
294
+ targetBackup = backups.find(b => b.id === backupId);
295
+ }
296
+ else {
297
+ // Show most recent
298
+ targetBackup = backups[0];
299
+ }
300
+ if (!targetBackup) {
301
+ if (format === 'json') {
302
+ console.log(JSON.stringify({ error: `Backup not found: ${backupId}` }));
303
+ return;
304
+ }
305
+ status.error(`Backup not found: ${backupId}`);
306
+ return;
307
+ }
308
+ if (format === 'json') {
309
+ console.log(JSON.stringify(targetBackup, null, 2));
310
+ return;
311
+ }
312
+ console.log();
313
+ console.log(chalk.bold(`📦 Backup: ${targetBackup.id}`));
314
+ console.log();
315
+ console.log(chalk.gray(' Created: ') + formatDate(targetBackup.createdAt));
316
+ console.log(chalk.gray(' Reason: ') + formatReason(targetBackup.reason));
317
+ console.log(chalk.gray(' Size: ') + formatSize(targetBackup.sizeBytes));
318
+ console.log(chalk.gray(' Drift Version: ') + targetBackup.driftVersion);
319
+ console.log(chalk.gray(' Schema: ') + targetBackup.schemaVersion);
320
+ console.log(chalk.gray(' Compressed: ') + (targetBackup.compressed ? 'Yes' : 'No'));
321
+ console.log(chalk.gray(' Checksum: ') + targetBackup.checksum);
322
+ console.log(chalk.gray(' Project: ') + targetBackup.projectName);
323
+ console.log(chalk.gray(' Original Path: ') + targetBackup.originalPath);
324
+ console.log();
325
+ console.log(chalk.gray(` Files (${targetBackup.files.length}):`));
326
+ const maxFiles = 10;
327
+ const displayFiles = targetBackup.files.slice(0, maxFiles);
328
+ for (const file of displayFiles) {
329
+ console.log(chalk.gray(` - ${file}`));
330
+ }
331
+ if (targetBackup.files.length > maxFiles) {
332
+ console.log(chalk.gray(` ... and ${targetBackup.files.length - maxFiles} more`));
333
+ }
334
+ console.log();
335
+ }
336
+ catch (error) {
337
+ if (format === 'json') {
338
+ console.log(JSON.stringify({ error: error.message }));
339
+ return;
340
+ }
341
+ status.error(`Failed to get backup info: ${error.message}`);
342
+ }
343
+ }
344
+ // ============================================================================
345
+ // Command Registration
346
+ // ============================================================================
347
+ export const backupCommand = new Command('backup')
348
+ .description('Manage .drift backups')
349
+ .addCommand(new Command('create')
350
+ .description('Create a backup of .drift data')
351
+ .option('-r, --reason <reason>', 'Backup reason (user_requested, scheduled)')
352
+ .option('--format <format>', 'Output format (text, json)', 'text')
353
+ .action(createAction))
354
+ .addCommand(new Command('list')
355
+ .alias('ls')
356
+ .description('List all backups')
357
+ .option('--json', 'Output as JSON')
358
+ .option('--format <format>', 'Output format (text, json)', 'text')
359
+ .option('-l, --limit <n>', 'Limit number of backups shown')
360
+ .action((opts) => listAction({ ...opts, json: opts.json || opts.format === 'json' })))
361
+ .addCommand(new Command('restore')
362
+ .description('Restore from a backup')
363
+ .argument('[backup-id]', 'Backup ID to restore')
364
+ .action(restoreAction))
365
+ .addCommand(new Command('delete')
366
+ .alias('rm')
367
+ .description('Delete a backup (requires typing DELETE)')
368
+ .argument('[backup-id]', 'Backup ID to delete')
369
+ .action(deleteAction))
370
+ .addCommand(new Command('info')
371
+ .description('Show backup details')
372
+ .argument('[backup-id]', 'Backup ID (default: most recent)')
373
+ .option('--format <format>', 'Output format (text, json)', 'text')
374
+ .action(infoAction));
375
+ // Default action (list)
376
+ backupCommand.action(listAction);
377
+ //# sourceMappingURL=backup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"backup.js","sourceRoot":"","sources":["../../src/commands/backup.ts"],"names":[],"mappings":"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"}
@@ -47,4 +47,7 @@ export { telemetryCommand } from './telemetry.js';
47
47
  export { auditCommand } from './audit.js';
48
48
  export { nextStepsCommand } from './next-steps.js';
49
49
  export { troubleshootCommand } from './troubleshoot.js';
50
+ export { createMemoryCommand } from './memory.js';
51
+ export { setupCommand } from './setup.js';
52
+ export { backupCommand } from './backup.js';
50
53
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/commands/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,eAAe,IAAI,YAAY,EAAE,MAAM,YAAY,CAAC;AAC7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAGhD,OAAO,EAAE,yBAAyB,EAAE,MAAM,oBAAoB,CAAC;AAC/D,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AACtD,OAAO,EAAE,0BAA0B,EAAE,MAAM,qBAAqB,CAAC;AACjE,OAAO,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,EAAE,wBAAwB,EAAE,MAAM,kBAAkB,CAAC;AAG5D,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AAGtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAG5C,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAG1C,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAG9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAG5C,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAG1C,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAG1C,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAG9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAG5C,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAGtC,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAGlD,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAG9C,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAG9C,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAG9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAGlD,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAG1C,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/commands/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,eAAe,IAAI,YAAY,EAAE,MAAM,YAAY,CAAC;AAC7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAGhD,OAAO,EAAE,yBAAyB,EAAE,MAAM,oBAAoB,CAAC;AAC/D,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AACtD,OAAO,EAAE,0BAA0B,EAAE,MAAM,qBAAqB,CAAC;AACjE,OAAO,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,EAAE,wBAAwB,EAAE,MAAM,kBAAkB,CAAC;AAG5D,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AAGtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAG5C,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAG1C,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAG9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAG5C,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAG1C,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAG1C,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAG9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAG5C,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAGtC,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAGlD,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAG9C,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAG9C,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAG9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAGlD,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAG1C,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAGxD,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAGlD,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAG1C,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC"}
@@ -65,4 +65,10 @@ export { auditCommand } from './audit.js';
65
65
  // User Guidance Commands
66
66
  export { nextStepsCommand } from './next-steps.js';
67
67
  export { troubleshootCommand } from './troubleshoot.js';
68
+ // Cortex V2 Memory Management
69
+ export { createMemoryCommand } from './memory.js';
70
+ // Unified Setup Wizard
71
+ export { setupCommand } from './setup.js';
72
+ // Backup & Restore
73
+ export { backupCommand } from './backup.js';
68
74
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/commands/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/commands/index.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAOH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAMpC,MAAM,WAAW,WAAW;IAC1B,6CAA6C;IAC7C,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,+BAA+B;IAC/B,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,4BAA4B;IAC5B,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAgcD,eAAO,MAAM,WAAW,SAKH,CAAC"}
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAOH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAMpC,MAAM,WAAW,WAAW;IAC1B,6CAA6C;IAC7C,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,+BAA+B;IAC/B,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,4BAA4B;IAC5B,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AA+cD,eAAO,MAAM,WAAW,SAKH,CAAC"}
@@ -316,15 +316,32 @@ async function initAction(options) {
316
316
  if (!options.yes) {
317
317
  initOpts = await promptInitOptions();
318
318
  }
319
- // Run initial scan if requested
319
+ // Guide user to next steps
320
+ console.log();
320
321
  if (initOpts.scanNow) {
321
- console.log();
322
- console.log(chalk.gray('To run an initial scan, use:'));
323
- console.log(chalk.cyan(' drift scan'));
322
+ if (initOpts.autoApprove) {
323
+ console.log(chalk.gray('To scan and auto-approve high-confidence patterns:'));
324
+ console.log(chalk.cyan(' drift scan'));
325
+ console.log(chalk.cyan(' drift approve --auto'));
326
+ console.log();
327
+ console.log(chalk.gray('Or use the guided setup wizard:'));
328
+ console.log(chalk.cyan(' drift setup'));
329
+ }
330
+ else {
331
+ console.log(chalk.gray('To run an initial scan, use:'));
332
+ console.log(chalk.cyan(' drift scan'));
333
+ console.log();
334
+ console.log(chalk.gray('Or use the guided setup wizard (recommended):'));
335
+ console.log(chalk.cyan(' drift setup'));
336
+ }
324
337
  console.log();
325
338
  console.log(chalk.gray('To check for violations:'));
326
339
  console.log(chalk.cyan(' drift check'));
327
340
  }
341
+ else {
342
+ console.log(chalk.gray('When ready, use the guided setup wizard:'));
343
+ console.log(chalk.cyan(' drift setup'));
344
+ }
328
345
  // Summary
329
346
  console.log();
330
347
  status.success('Drift initialized successfully!');