@savestate/cli 0.7.0 → 0.8.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.
Files changed (89) hide show
  1. package/dist/cli/__tests__/progress.test.d.ts +5 -0
  2. package/dist/cli/__tests__/progress.test.d.ts.map +1 -0
  3. package/dist/cli/__tests__/progress.test.js +212 -0
  4. package/dist/cli/__tests__/progress.test.js.map +1 -0
  5. package/dist/cli/__tests__/signal-handler.test.d.ts +5 -0
  6. package/dist/cli/__tests__/signal-handler.test.d.ts.map +1 -0
  7. package/dist/cli/__tests__/signal-handler.test.js +99 -0
  8. package/dist/cli/__tests__/signal-handler.test.js.map +1 -0
  9. package/dist/cli/__tests__/summary.test.d.ts +5 -0
  10. package/dist/cli/__tests__/summary.test.d.ts.map +1 -0
  11. package/dist/cli/__tests__/summary.test.js +242 -0
  12. package/dist/cli/__tests__/summary.test.js.map +1 -0
  13. package/dist/cli/index.d.ts +10 -0
  14. package/dist/cli/index.d.ts.map +1 -0
  15. package/dist/cli/index.js +10 -0
  16. package/dist/cli/index.js.map +1 -0
  17. package/dist/cli/progress.d.ts +86 -0
  18. package/dist/cli/progress.d.ts.map +1 -0
  19. package/dist/cli/progress.js +205 -0
  20. package/dist/cli/progress.js.map +1 -0
  21. package/dist/cli/prompts.d.ts +49 -0
  22. package/dist/cli/prompts.d.ts.map +1 -0
  23. package/dist/cli/prompts.js +266 -0
  24. package/dist/cli/prompts.js.map +1 -0
  25. package/dist/cli/signal-handler.d.ts +63 -0
  26. package/dist/cli/signal-handler.d.ts.map +1 -0
  27. package/dist/cli/signal-handler.js +165 -0
  28. package/dist/cli/signal-handler.js.map +1 -0
  29. package/dist/cli/summary.d.ts +33 -0
  30. package/dist/cli/summary.d.ts.map +1 -0
  31. package/dist/cli/summary.js +296 -0
  32. package/dist/cli/summary.js.map +1 -0
  33. package/dist/cli.js +7 -1
  34. package/dist/cli.js.map +1 -1
  35. package/dist/commands/migrate.d.ts +18 -4
  36. package/dist/commands/migrate.d.ts.map +1 -1
  37. package/dist/commands/migrate.js +324 -163
  38. package/dist/commands/migrate.js.map +1 -1
  39. package/dist/migrate/__tests__/capabilities.test.d.ts +7 -0
  40. package/dist/migrate/__tests__/capabilities.test.d.ts.map +1 -0
  41. package/dist/migrate/__tests__/capabilities.test.js +90 -0
  42. package/dist/migrate/__tests__/capabilities.test.js.map +1 -0
  43. package/dist/migrate/__tests__/chatgpt-loader.test.d.ts +7 -0
  44. package/dist/migrate/__tests__/chatgpt-loader.test.d.ts.map +1 -0
  45. package/dist/migrate/__tests__/chatgpt-loader.test.js +889 -0
  46. package/dist/migrate/__tests__/chatgpt-loader.test.js.map +1 -0
  47. package/dist/migrate/__tests__/edge-cases.test.d.ts +7 -0
  48. package/dist/migrate/__tests__/edge-cases.test.d.ts.map +1 -0
  49. package/dist/migrate/__tests__/edge-cases.test.js +787 -0
  50. package/dist/migrate/__tests__/edge-cases.test.js.map +1 -0
  51. package/dist/migrate/__tests__/error-recovery.test.d.ts +7 -0
  52. package/dist/migrate/__tests__/error-recovery.test.d.ts.map +1 -0
  53. package/dist/migrate/__tests__/error-recovery.test.js +461 -0
  54. package/dist/migrate/__tests__/error-recovery.test.js.map +1 -0
  55. package/dist/migrate/__tests__/integration.test.d.ts +7 -0
  56. package/dist/migrate/__tests__/integration.test.d.ts.map +1 -0
  57. package/dist/migrate/__tests__/integration.test.js +536 -0
  58. package/dist/migrate/__tests__/integration.test.js.map +1 -0
  59. package/dist/migrate/__tests__/performance.test.d.ts +7 -0
  60. package/dist/migrate/__tests__/performance.test.d.ts.map +1 -0
  61. package/dist/migrate/__tests__/performance.test.js +478 -0
  62. package/dist/migrate/__tests__/performance.test.js.map +1 -0
  63. package/dist/migrate/__tests__/registry.test.d.ts +7 -0
  64. package/dist/migrate/__tests__/registry.test.d.ts.map +1 -0
  65. package/dist/migrate/__tests__/registry.test.js +167 -0
  66. package/dist/migrate/__tests__/registry.test.js.map +1 -0
  67. package/dist/migrate/compatibility.d.ts +47 -0
  68. package/dist/migrate/compatibility.d.ts.map +1 -0
  69. package/dist/migrate/compatibility.js +468 -0
  70. package/dist/migrate/compatibility.js.map +1 -0
  71. package/dist/migrate/extractors/__tests__/claude.test.d.ts +12 -0
  72. package/dist/migrate/extractors/__tests__/claude.test.d.ts.map +1 -0
  73. package/dist/migrate/extractors/__tests__/claude.test.js +789 -0
  74. package/dist/migrate/extractors/__tests__/claude.test.js.map +1 -0
  75. package/dist/migrate/extractors/claude.d.ts +69 -0
  76. package/dist/migrate/extractors/claude.d.ts.map +1 -0
  77. package/dist/migrate/extractors/claude.js +1136 -0
  78. package/dist/migrate/extractors/claude.js.map +1 -0
  79. package/dist/migrate/extractors/registry.js +3 -2
  80. package/dist/migrate/extractors/registry.js.map +1 -1
  81. package/dist/migrate/loaders/chatgpt.d.ts +72 -0
  82. package/dist/migrate/loaders/chatgpt.d.ts.map +1 -0
  83. package/dist/migrate/loaders/chatgpt.js +691 -0
  84. package/dist/migrate/loaders/chatgpt.js.map +1 -0
  85. package/dist/migrate/loaders/registry.js +3 -2
  86. package/dist/migrate/loaders/registry.js.map +1 -1
  87. package/dist/migrate/types.d.ts +2 -0
  88. package/dist/migrate/types.d.ts.map +1 -1
  89. package/package.json +2 -1
@@ -7,15 +7,29 @@
7
7
  * - OpenAI Assistants → Clawdbot
8
8
  * - etc.
9
9
  *
10
- * This is a guided wizard with clear explanations.
10
+ * Features:
11
+ * - Interactive prompts for source/destination selection
12
+ * - Progress bars for each phase
13
+ * - --dry-run mode (compatibility report only)
14
+ * - --review mode (inspect items needing attention)
15
+ * - --resume for interrupted migrations
16
+ * - Confirmation prompts before destructive actions
17
+ * - Post-migration summary
18
+ * - Graceful Ctrl+C handling
19
+ * - Colorized output with --no-color fallback
11
20
  */
12
- interface MigrateOptions {
21
+ export interface MigrateCommandOptions {
13
22
  from?: string;
14
23
  to?: string;
15
24
  snapshot?: string;
16
25
  dryRun?: boolean;
17
26
  list?: boolean;
27
+ resume?: boolean;
28
+ review?: boolean;
29
+ include?: string;
30
+ noColor?: boolean;
31
+ force?: boolean;
32
+ verbose?: boolean;
18
33
  }
19
- export declare function migrateCommand(options: MigrateOptions): Promise<void>;
20
- export {};
34
+ export declare function migrateCommand(options: MigrateCommandOptions): Promise<void>;
21
35
  //# sourceMappingURL=migrate.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"migrate.d.ts","sourceRoot":"","sources":["../../src/commands/migrate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAYH,UAAU,cAAc;IACtB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAYD,wBAAsB,cAAc,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CA4L3E"}
1
+ {"version":3,"file":"migrate.d.ts","sourceRoot":"","sources":["../../src/commands/migrate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AA0BH,MAAM,WAAW,qBAAqB;IACpC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAID,wBAAsB,cAAc,CAAC,OAAO,EAAE,qBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC,CA6ClF"}
@@ -7,212 +7,373 @@
7
7
  * - OpenAI Assistants → Clawdbot
8
8
  * - etc.
9
9
  *
10
- * This is a guided wizard with clear explanations.
10
+ * Features:
11
+ * - Interactive prompts for source/destination selection
12
+ * - Progress bars for each phase
13
+ * - --dry-run mode (compatibility report only)
14
+ * - --review mode (inspect items needing attention)
15
+ * - --resume for interrupted migrations
16
+ * - Confirmation prompts before destructive actions
17
+ * - Post-migration summary
18
+ * - Graceful Ctrl+C handling
19
+ * - Colorized output with --no-color fallback
11
20
  */
12
21
  import chalk from 'chalk';
13
- import ora from 'ora';
14
- import * as readline from 'node:readline';
15
- import { isInitialized, loadConfig } from '../config.js';
16
- import { getAdapter, listAdapters } from '../adapters/registry.js';
17
- import { createSnapshot } from '../snapshot.js';
18
- import { restoreSnapshot } from '../restore.js';
19
- import { resolveStorage } from '../storage/resolve.js';
20
- import { getPassphrase } from '../passphrase.js';
21
- // Platform migration capabilities (what each platform can do)
22
- const PLATFORM_INFO = {
23
- 'clawdbot': { extract: true, restore: true },
24
- 'claude-code': { extract: true, restore: true },
25
- 'openai-assistants': { extract: true, restore: true },
26
- 'chatgpt': { extract: true, restore: false, note: 'Memory/instructions only' },
27
- 'claude-web': { extract: true, restore: false, note: 'Memory/projects only' },
28
- 'gemini': { extract: true, restore: false, note: 'Limited restore' },
29
- };
22
+ import { isInitialized } from '../config.js';
23
+ import { MigrationOrchestrator, PLATFORM_CAPABILITIES, getPlatformCapabilities } from '../migrate/index.js';
24
+ import { select, selectSourcePlatform, selectTargetPlatform, confirm, setColorsEnabled, } from '../cli/prompts.js';
25
+ import { ProgressDisplay, warning, error, info } from '../cli/progress.js';
26
+ import { showMigrationSummary, showCompatibilityReport, showReviewItems, showResumableMigrations, showFailedMigration, } from '../cli/summary.js';
27
+ import { setupSignalHandler, cleanupSignalHandler } from '../cli/signal-handler.js';
28
+ // ─── Main Command ────────────────────────────────────────────
30
29
  export async function migrateCommand(options) {
31
- console.log();
32
- console.log(chalk.cyan.bold('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━'));
33
- console.log(chalk.cyan.bold(' ⏸ SaveState Migration Wizard'));
34
- console.log(chalk.cyan.bold('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━'));
35
- console.log();
30
+ // Handle --no-color flag
31
+ if (options.noColor) {
32
+ setColorsEnabled(false);
33
+ chalk.level = 0;
34
+ }
35
+ // Show header
36
+ showHeader();
37
+ // Handle --list: show available platforms
36
38
  if (options.list) {
37
39
  showPlatforms();
38
40
  return;
39
41
  }
42
+ // Handle --resume: resume interrupted migrations
43
+ if (options.resume) {
44
+ await handleResume(options);
45
+ return;
46
+ }
47
+ // Check initialization
40
48
  if (!isInitialized()) {
41
- console.log(chalk.red('SaveState not initialized. Run `savestate init` first.'));
49
+ error('SaveState not initialized. Run `savestate init` first.');
42
50
  process.exit(1);
43
51
  }
44
- const config = await loadConfig();
45
- const storage = resolveStorage(config);
46
- // Interactive mode if not all options provided
47
- if (!options.from || !options.to) {
52
+ // Determine source and target platforms
53
+ const { source, target } = await determinePlatforms(options);
54
+ // Handle --review: show what needs attention without migrating
55
+ if (options.review) {
56
+ await handleReview(source, target, options);
57
+ return;
58
+ }
59
+ // Handle --dry-run: show compatibility report without migrating
60
+ if (options.dryRun) {
61
+ await handleDryRun(source, target, options);
62
+ return;
63
+ }
64
+ // Run full migration
65
+ await runMigration(source, target, options);
66
+ }
67
+ // ─── Platform Selection ──────────────────────────────────────
68
+ async function determinePlatforms(options) {
69
+ let source;
70
+ let target;
71
+ // Interactive mode if platforms not provided
72
+ if (!options.from) {
48
73
  console.log(chalk.white('This wizard helps you migrate your AI identity between platforms.'));
49
74
  console.log(chalk.dim('Your data will be encrypted throughout the process.'));
50
75
  console.log();
51
- showPlatforms();
76
+ source = await selectSourcePlatform();
52
77
  }
53
- const rl = readline.createInterface({
54
- input: process.stdin,
55
- output: process.stdout,
56
- });
57
- const ask = (question) => {
58
- return new Promise(resolve => {
59
- rl.question(chalk.cyan(question), answer => resolve(answer.trim()));
78
+ else {
79
+ source = validatePlatform(options.from, 'source');
80
+ }
81
+ if (!options.to) {
82
+ target = await selectTargetPlatform(source);
83
+ }
84
+ else {
85
+ target = validatePlatform(options.to, 'target');
86
+ }
87
+ // Validate source != target
88
+ if (source === target) {
89
+ error('Source and target platforms cannot be the same.');
90
+ process.exit(1);
91
+ }
92
+ return { source, target };
93
+ }
94
+ function validatePlatform(id, type) {
95
+ const platforms = Object.keys(PLATFORM_CAPABILITIES);
96
+ if (!platforms.includes(id)) {
97
+ error(`Unknown ${type} platform: ${id}`);
98
+ console.log(chalk.dim(`Available: ${platforms.join(', ')}`));
99
+ process.exit(1);
100
+ }
101
+ return id;
102
+ }
103
+ // ─── Dry Run Mode ────────────────────────────────────────────
104
+ async function handleDryRun(source, target, options) {
105
+ const progress = new ProgressDisplay({ noColor: options.noColor, verbose: options.verbose });
106
+ try {
107
+ // Create orchestrator
108
+ const orchestrator = new MigrationOrchestrator(source, target, {
109
+ dryRun: true,
110
+ include: parseInclude(options.include),
60
111
  });
61
- };
112
+ // Setup signal handler
113
+ const handler = setupSignalHandler({ orchestrator, showResumeHint: false });
114
+ handler.setOrchestrator(orchestrator);
115
+ // Subscribe to events
116
+ orchestrator.on(progress.handleEvent);
117
+ // Run analysis
118
+ progress.startPhase('extracting', 'Analyzing source platform...');
119
+ const report = await orchestrator.analyze();
120
+ progress.completePhase('extracting', 'Analysis complete');
121
+ // Show compatibility report
122
+ showCompatibilityReport(report, { noColor: options.noColor });
123
+ // Cleanup
124
+ await orchestrator.cleanup();
125
+ cleanupSignalHandler();
126
+ }
127
+ catch (err) {
128
+ progress.stop();
129
+ error(err instanceof Error ? err.message : String(err));
130
+ process.exit(1);
131
+ }
132
+ }
133
+ // ─── Review Mode ─────────────────────────────────────────────
134
+ async function handleReview(source, target, options) {
135
+ const progress = new ProgressDisplay({ noColor: options.noColor, verbose: options.verbose });
62
136
  try {
63
- // Step 1: Select source platform
64
- let sourceId = options.from;
65
- if (!sourceId) {
66
- sourceId = await ask('Source platform (migrate FROM): ');
67
- }
68
- const sourceAdapter = getAdapter(sourceId);
69
- if (!sourceAdapter) {
70
- console.log(chalk.red(`\n✗ Unknown platform: ${sourceId}`));
71
- console.log(chalk.dim(` Available: ${listAdapters().join(', ')}`));
72
- process.exit(1);
73
- }
74
- const sourceInfo = PLATFORM_INFO[sourceId];
75
- if (!sourceInfo?.extract) {
76
- console.log(chalk.red(`\n✗ ${sourceAdapter.name} doesn't support extraction`));
77
- process.exit(1);
137
+ // Create orchestrator
138
+ const orchestrator = new MigrationOrchestrator(source, target, {
139
+ dryRun: true,
140
+ include: parseInclude(options.include),
141
+ });
142
+ // Setup signal handler
143
+ const handler = setupSignalHandler({ orchestrator, showResumeHint: false });
144
+ handler.setOrchestrator(orchestrator);
145
+ // Subscribe to events
146
+ orchestrator.on(progress.handleEvent);
147
+ // Run analysis
148
+ progress.startPhase('extracting', 'Analyzing migration...');
149
+ const report = await orchestrator.analyze();
150
+ progress.completePhase('extracting', 'Analysis complete');
151
+ // Show review items
152
+ showReviewItems(report, { noColor: options.noColor });
153
+ // Cleanup
154
+ await orchestrator.cleanup();
155
+ cleanupSignalHandler();
156
+ }
157
+ catch (err) {
158
+ progress.stop();
159
+ error(err instanceof Error ? err.message : String(err));
160
+ process.exit(1);
161
+ }
162
+ }
163
+ // ─── Resume Mode ─────────────────────────────────────────────
164
+ async function handleResume(options) {
165
+ try {
166
+ // List available migrations
167
+ const migrations = await MigrationOrchestrator.listMigrations();
168
+ const resumable = migrations.filter((m) => m.phase !== 'complete' && m.phase !== 'failed');
169
+ if (resumable.length === 0) {
170
+ info('No interrupted migrations found.');
171
+ console.log(chalk.dim('Start a new migration with: savestate migrate --from <platform> --to <platform>'));
172
+ return;
78
173
  }
79
- // Step 2: Select target platform
80
- let targetId = options.to;
81
- if (!targetId) {
82
- targetId = await ask('Target platform (migrate TO): ');
174
+ // Show resumable migrations
175
+ showResumableMigrations(migrations);
176
+ // If only one, ask to resume it
177
+ let migrationId;
178
+ if (resumable.length === 1) {
179
+ const shouldResume = await confirm(`Resume migration ${resumable[0].id}?`, true);
180
+ if (!shouldResume) {
181
+ console.log(chalk.dim('Migration cancelled.'));
182
+ return;
183
+ }
184
+ migrationId = resumable[0].id;
83
185
  }
84
- const targetAdapter = getAdapter(targetId);
85
- if (!targetAdapter) {
86
- console.log(chalk.red(`\n✗ Unknown platform: ${targetId}`));
87
- process.exit(1);
186
+ else {
187
+ // Let user select
188
+ const selectOptions = resumable.map((m) => ({
189
+ value: m.id,
190
+ label: m.id,
191
+ description: `${m.source} → ${m.target} (${Math.round(m.progress)}%)`,
192
+ }));
193
+ migrationId = await select('Select migration to resume:', selectOptions);
88
194
  }
89
- const targetInfo = PLATFORM_INFO[targetId];
90
- if (!targetInfo?.restore) {
91
- console.log(chalk.yellow(`\n⚠ ${targetAdapter.name} has limited restore support`));
92
- if (targetInfo?.note) {
93
- console.log(chalk.dim(` ${targetInfo.note}`));
94
- }
95
- const proceed = await ask('Continue anyway? (yes/no): ');
96
- if (proceed.toLowerCase() !== 'yes' && proceed.toLowerCase() !== 'y') {
195
+ // Resume the migration
196
+ const orchestrator = await MigrationOrchestrator.resume(migrationId);
197
+ const progress = new ProgressDisplay({ noColor: options.noColor, verbose: options.verbose });
198
+ // Setup signal handler
199
+ const handler = setupSignalHandler({ orchestrator });
200
+ handler.setOrchestrator(orchestrator);
201
+ // Subscribe to events
202
+ orchestrator.on(progress.handleEvent);
203
+ info(`Resuming migration ${migrationId}...`);
204
+ console.log();
205
+ const result = await orchestrator.continue();
206
+ const state = orchestrator.getState();
207
+ // Show summary
208
+ showMigrationSummary(state, result, { noColor: options.noColor });
209
+ cleanupSignalHandler();
210
+ }
211
+ catch (err) {
212
+ error(err instanceof Error ? err.message : String(err));
213
+ process.exit(1);
214
+ }
215
+ }
216
+ // ─── Full Migration ──────────────────────────────────────────
217
+ async function runMigration(source, target, options) {
218
+ const progress = new ProgressDisplay({ noColor: options.noColor, verbose: options.verbose });
219
+ try {
220
+ // Show migration plan
221
+ await showMigrationPlan(source, target, options);
222
+ // Confirm before proceeding (unless --force)
223
+ if (!options.force) {
224
+ console.log();
225
+ const proceed = await confirm('Proceed with migration?', true);
226
+ if (!proceed) {
97
227
  console.log(chalk.yellow('\nMigration cancelled.'));
98
- rl.close();
99
228
  return;
100
229
  }
101
230
  }
102
231
  console.log();
103
- console.log(chalk.white.bold('Migration Plan:'));
104
- console.log();
105
- console.log(` ${chalk.cyan('From:')} ${sourceAdapter.name}`);
106
- console.log(` ${chalk.cyan('To:')} ${targetAdapter.name}`);
107
- console.log();
108
- // Show what will be migrated
109
- console.log(chalk.white.bold('What will be migrated:'));
110
- console.log();
111
- console.log(` ${chalk.green('✓')} Identity (personality, instructions, system prompts)`);
112
- console.log(` ${chalk.green('✓')} Memory (learned facts, preferences)`);
113
- console.log(` ${chalk.green('✓')} Configuration (settings, tool configs)`);
114
- if (sourceId === 'chatgpt' || sourceId === 'claude-web') {
115
- console.log(` ${chalk.yellow('⚠')} Conversations ${chalk.dim('(preserved in snapshot, may not import to target)')}`);
232
+ // Create orchestrator
233
+ const migrationOptions = {
234
+ include: parseInclude(options.include),
235
+ dryRun: false,
236
+ };
237
+ const orchestrator = new MigrationOrchestrator(source, target, migrationOptions);
238
+ // Setup signal handler
239
+ const handler = setupSignalHandler({ orchestrator });
240
+ handler.setOrchestrator(orchestrator);
241
+ // Subscribe to events
242
+ orchestrator.on(progress.handleEvent);
243
+ // Run the migration
244
+ const result = await orchestrator.run();
245
+ const state = orchestrator.getState();
246
+ // Show summary based on result
247
+ if (result.success) {
248
+ showMigrationSummary(state, result, { noColor: options.noColor });
116
249
  }
117
250
  else {
118
- console.log(` ${chalk.green('✓')} Conversations (if supported by target)`);
251
+ showFailedMigration(state, { noColor: options.noColor });
119
252
  }
120
- console.log();
121
- // Specific migration notes
122
- if (sourceId === 'chatgpt') {
123
- console.log(chalk.yellow.bold('Note for ChatGPT migration:'));
124
- console.log(chalk.yellow(' Your ChatGPT memories and custom instructions will be exported.'));
125
- console.log(chalk.yellow(' Conversation history is preserved but may not import elsewhere.'));
126
- console.log();
253
+ cleanupSignalHandler();
254
+ if (!result.success) {
255
+ process.exit(1);
127
256
  }
128
- if (options.dryRun) {
129
- console.log(chalk.cyan.bold('DRY RUN — no changes will be made'));
130
- console.log();
131
- rl.close();
132
- return;
257
+ }
258
+ catch (err) {
259
+ progress.stop();
260
+ cleanupSignalHandler();
261
+ error(err instanceof Error ? err.message : String(err));
262
+ process.exit(1);
263
+ }
264
+ }
265
+ // ─── Migration Plan Display ──────────────────────────────────
266
+ async function showMigrationPlan(source, target, options) {
267
+ const sourceCap = getPlatformCapabilities(source);
268
+ const targetCap = getPlatformCapabilities(target);
269
+ console.log();
270
+ console.log(chalk.white.bold('Migration Plan:'));
271
+ console.log();
272
+ console.log(` ${chalk.cyan('From:')} ${sourceCap.name}`);
273
+ console.log(` ${chalk.cyan('To:')} ${targetCap.name}`);
274
+ console.log();
275
+ // Show what will be migrated
276
+ console.log(chalk.white.bold('What will be migrated:'));
277
+ console.log();
278
+ const include = parseInclude(options.include);
279
+ // Instructions
280
+ if (!include || include.includes('instructions')) {
281
+ console.log(` ${chalk.green('✓')} Identity (personality, instructions, system prompts)`);
282
+ }
283
+ // Memories
284
+ if (!include || include.includes('memories')) {
285
+ if (sourceCap.hasMemory && targetCap.hasMemory) {
286
+ console.log(` ${chalk.green('✓')} Memory (learned facts, preferences)`);
133
287
  }
134
- // Confirm
135
- const confirm = await ask('Proceed with migration? (yes/no): ');
136
- if (confirm.toLowerCase() !== 'yes' && confirm.toLowerCase() !== 'y') {
137
- console.log(chalk.yellow('\nMigration cancelled.'));
138
- rl.close();
139
- return;
288
+ else if (sourceCap.hasMemory) {
289
+ console.log(` ${chalk.yellow('⚠')} Memory ${chalk.dim('(adapted for ' + targetCap.name + ')')}`);
140
290
  }
141
- console.log();
142
- // Step 4: Get passphrase
143
- const passphrase = await getPassphrase();
144
- // Step 5: Create snapshot from source
145
- const spinner1 = ora(`Extracting from ${sourceAdapter.name}...`).start();
146
- let snapshotId = options.snapshot;
147
- if (!snapshotId) {
148
- try {
149
- const result = await createSnapshot(sourceAdapter, storage, passphrase, {
150
- label: `migration-from-${sourceId}`,
151
- tags: ['migration', `from:${sourceId}`, `to:${targetId}`],
152
- });
153
- snapshotId = result.snapshot.manifest.id;
154
- spinner1.succeed(`Snapshot created: ${chalk.cyan(snapshotId)}`);
155
- }
156
- catch (err) {
157
- spinner1.fail('Failed to create snapshot');
158
- console.error(chalk.red(err instanceof Error ? err.message : String(err)));
159
- process.exit(1);
160
- }
291
+ }
292
+ // Files
293
+ if (!include || include.includes('files')) {
294
+ if (sourceCap.hasFiles && targetCap.hasFiles) {
295
+ console.log(` ${chalk.green('✓')} Files (uploaded documents)`);
161
296
  }
162
- else {
163
- spinner1.succeed(`Using existing snapshot: ${chalk.cyan(snapshotId)}`);
297
+ else if (sourceCap.hasFiles) {
298
+ console.log(` ${chalk.yellow('⚠')} Files ${chalk.dim('(limited support in ' + targetCap.name + ')')}`);
164
299
  }
165
- // Step 6: Restore to target
166
- const spinner2 = ora(`Restoring to ${targetAdapter.name}...`).start();
167
- try {
168
- await restoreSnapshot(snapshotId, targetAdapter, storage, passphrase);
169
- spinner2.succeed(`Migration complete!`);
300
+ }
301
+ // Conversations
302
+ if (!include || include.includes('conversations')) {
303
+ if (sourceCap.hasConversations) {
304
+ console.log(` ${chalk.yellow('⚠')} Conversations ${chalk.dim('(preserved but may not import)')}`);
170
305
  }
171
- catch (err) {
172
- spinner2.fail('Failed to restore');
173
- console.error(chalk.red(err instanceof Error ? err.message : String(err)));
174
- console.log();
175
- console.log(chalk.dim(`Your snapshot is preserved: ${snapshotId}`));
176
- console.log(chalk.dim(`You can retry with: savestate restore ${snapshotId} --to ${targetId}`));
177
- process.exit(1);
306
+ }
307
+ // Custom bots
308
+ if (!include || include.includes('customBots')) {
309
+ if (sourceCap.hasCustomBots && targetCap.hasProjects) {
310
+ console.log(` ${chalk.green('✓')} Custom Bots / GPTs → Projects`);
178
311
  }
179
- // Success
180
- console.log();
181
- console.log(chalk.green.bold('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━'));
182
- console.log(chalk.green.bold(' ✓ Migration Successful!'));
183
- console.log(chalk.green.bold('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━'));
184
- console.log();
185
- console.log(` Your AI identity has been migrated from ${chalk.cyan(sourceAdapter.name)}`);
186
- console.log(` to ${chalk.cyan(targetAdapter.name)}.`);
187
- console.log();
188
- console.log(chalk.dim(` Snapshot preserved: ${snapshotId}`));
189
- console.log(chalk.dim(` You can restore again anytime with:`));
190
- console.log(chalk.dim(` savestate restore ${snapshotId} --to <platform>`));
312
+ else if (sourceCap.hasCustomBots) {
313
+ console.log(` ${chalk.yellow('⚠')} Custom Bots ${chalk.dim('(converted to instructions)')}`);
314
+ }
315
+ }
316
+ console.log();
317
+ // Platform-specific notes
318
+ if (source === 'chatgpt') {
319
+ console.log(chalk.yellow.bold('Note for ChatGPT migration:'));
320
+ console.log(chalk.yellow(' Your ChatGPT memories and custom instructions will be exported.'));
321
+ console.log(chalk.yellow(' Conversation history is preserved but may not import elsewhere.'));
191
322
  console.log();
192
323
  }
193
- finally {
194
- rl.close();
324
+ if (target === 'claude') {
325
+ console.log(chalk.blue.bold('Note for Claude target:'));
326
+ console.log(chalk.blue(' Memories will be converted to project knowledge files.'));
327
+ console.log(chalk.blue(' Custom GPTs will become Claude Projects with artifacts.'));
328
+ console.log();
195
329
  }
196
330
  }
331
+ // ─── Platform List ───────────────────────────────────────────
197
332
  function showPlatforms() {
198
333
  console.log(chalk.white.bold('Available Platforms:'));
199
334
  console.log();
200
- const adapterIds = listAdapters();
201
- adapterIds.forEach(id => {
202
- const adapter = getAdapter(id);
203
- if (!adapter)
204
- return;
205
- const info = PLATFORM_INFO[id] || { extract: true, restore: true };
206
- const extract = info.extract ? chalk.green('✓') : chalk.red('✗');
207
- const restore = info.restore ? chalk.green('') : chalk.yellow('⚠');
208
- let line = ` ${chalk.white(id.padEnd(20))} ${extract} extract ${restore} restore`;
209
- if (info.note) {
210
- line += chalk.dim(` (${info.note})`);
211
- }
212
- console.log(line);
335
+ Object.entries(PLATFORM_CAPABILITIES).forEach(([id, cap]) => {
336
+ const features = [];
337
+ if (cap.hasMemory)
338
+ features.push('memories');
339
+ if (cap.hasFiles)
340
+ features.push('files');
341
+ if (cap.hasProjects)
342
+ features.push('projects');
343
+ if (cap.hasConversations)
344
+ features.push('conversations');
345
+ if (cap.hasCustomBots)
346
+ features.push('custom bots');
347
+ console.log(` ${chalk.cyan(id.padEnd(12))} ${cap.name}`);
348
+ console.log(` ${' '.repeat(12)} ${chalk.dim(features.join(', '))}`);
349
+ console.log();
213
350
  });
351
+ console.log(chalk.dim('Use: savestate migrate --from <platform> --to <platform>'));
352
+ console.log();
353
+ }
354
+ // ─── Header ──────────────────────────────────────────────────
355
+ function showHeader() {
214
356
  console.log();
215
- console.log(chalk.dim('Legend: ✓ = full support, ⚠ = partial/limited, ✗ = not supported'));
357
+ console.log(chalk.cyan.bold('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━'));
358
+ console.log(chalk.cyan.bold(' ⏸ SaveState Migration Wizard'));
359
+ console.log(chalk.cyan.bold('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━'));
216
360
  console.log();
217
361
  }
362
+ // ─── Helpers ─────────────────────────────────────────────────
363
+ function parseInclude(include) {
364
+ if (!include)
365
+ return undefined;
366
+ const valid = ['instructions', 'memories', 'conversations', 'files', 'customBots'];
367
+ const items = include.split(',').map((s) => s.trim());
368
+ const result = [];
369
+ for (const item of items) {
370
+ if (valid.includes(item)) {
371
+ result.push(item);
372
+ }
373
+ else {
374
+ warning(`Unknown content type: ${item}`);
375
+ }
376
+ }
377
+ return result.length > 0 ? result : undefined;
378
+ }
218
379
  //# sourceMappingURL=migrate.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"migrate.js","sourceRoot":"","sources":["../../src/commands/migrate.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"migrate.js","sourceRoot":"","sources":["../../src/commands/migrate.ts"],"names":[],"mappings":"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"}