@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.
- package/dist/cli/__tests__/progress.test.d.ts +5 -0
- package/dist/cli/__tests__/progress.test.d.ts.map +1 -0
- package/dist/cli/__tests__/progress.test.js +212 -0
- package/dist/cli/__tests__/progress.test.js.map +1 -0
- package/dist/cli/__tests__/signal-handler.test.d.ts +5 -0
- package/dist/cli/__tests__/signal-handler.test.d.ts.map +1 -0
- package/dist/cli/__tests__/signal-handler.test.js +99 -0
- package/dist/cli/__tests__/signal-handler.test.js.map +1 -0
- package/dist/cli/__tests__/summary.test.d.ts +5 -0
- package/dist/cli/__tests__/summary.test.d.ts.map +1 -0
- package/dist/cli/__tests__/summary.test.js +242 -0
- package/dist/cli/__tests__/summary.test.js.map +1 -0
- package/dist/cli/index.d.ts +10 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +10 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/progress.d.ts +86 -0
- package/dist/cli/progress.d.ts.map +1 -0
- package/dist/cli/progress.js +205 -0
- package/dist/cli/progress.js.map +1 -0
- package/dist/cli/prompts.d.ts +49 -0
- package/dist/cli/prompts.d.ts.map +1 -0
- package/dist/cli/prompts.js +266 -0
- package/dist/cli/prompts.js.map +1 -0
- package/dist/cli/signal-handler.d.ts +63 -0
- package/dist/cli/signal-handler.d.ts.map +1 -0
- package/dist/cli/signal-handler.js +165 -0
- package/dist/cli/signal-handler.js.map +1 -0
- package/dist/cli/summary.d.ts +33 -0
- package/dist/cli/summary.d.ts.map +1 -0
- package/dist/cli/summary.js +296 -0
- package/dist/cli/summary.js.map +1 -0
- package/dist/cli.js +7 -1
- package/dist/cli.js.map +1 -1
- package/dist/commands/migrate.d.ts +18 -4
- package/dist/commands/migrate.d.ts.map +1 -1
- package/dist/commands/migrate.js +324 -163
- package/dist/commands/migrate.js.map +1 -1
- package/dist/migrate/__tests__/capabilities.test.d.ts +7 -0
- package/dist/migrate/__tests__/capabilities.test.d.ts.map +1 -0
- package/dist/migrate/__tests__/capabilities.test.js +90 -0
- package/dist/migrate/__tests__/capabilities.test.js.map +1 -0
- package/dist/migrate/__tests__/chatgpt-loader.test.d.ts +7 -0
- package/dist/migrate/__tests__/chatgpt-loader.test.d.ts.map +1 -0
- package/dist/migrate/__tests__/chatgpt-loader.test.js +889 -0
- package/dist/migrate/__tests__/chatgpt-loader.test.js.map +1 -0
- package/dist/migrate/__tests__/edge-cases.test.d.ts +7 -0
- package/dist/migrate/__tests__/edge-cases.test.d.ts.map +1 -0
- package/dist/migrate/__tests__/edge-cases.test.js +787 -0
- package/dist/migrate/__tests__/edge-cases.test.js.map +1 -0
- package/dist/migrate/__tests__/error-recovery.test.d.ts +7 -0
- package/dist/migrate/__tests__/error-recovery.test.d.ts.map +1 -0
- package/dist/migrate/__tests__/error-recovery.test.js +461 -0
- package/dist/migrate/__tests__/error-recovery.test.js.map +1 -0
- package/dist/migrate/__tests__/integration.test.d.ts +7 -0
- package/dist/migrate/__tests__/integration.test.d.ts.map +1 -0
- package/dist/migrate/__tests__/integration.test.js +536 -0
- package/dist/migrate/__tests__/integration.test.js.map +1 -0
- package/dist/migrate/__tests__/performance.test.d.ts +7 -0
- package/dist/migrate/__tests__/performance.test.d.ts.map +1 -0
- package/dist/migrate/__tests__/performance.test.js +478 -0
- package/dist/migrate/__tests__/performance.test.js.map +1 -0
- package/dist/migrate/__tests__/registry.test.d.ts +7 -0
- package/dist/migrate/__tests__/registry.test.d.ts.map +1 -0
- package/dist/migrate/__tests__/registry.test.js +167 -0
- package/dist/migrate/__tests__/registry.test.js.map +1 -0
- package/dist/migrate/compatibility.d.ts +47 -0
- package/dist/migrate/compatibility.d.ts.map +1 -0
- package/dist/migrate/compatibility.js +468 -0
- package/dist/migrate/compatibility.js.map +1 -0
- package/dist/migrate/extractors/__tests__/claude.test.d.ts +12 -0
- package/dist/migrate/extractors/__tests__/claude.test.d.ts.map +1 -0
- package/dist/migrate/extractors/__tests__/claude.test.js +789 -0
- package/dist/migrate/extractors/__tests__/claude.test.js.map +1 -0
- package/dist/migrate/extractors/claude.d.ts +69 -0
- package/dist/migrate/extractors/claude.d.ts.map +1 -0
- package/dist/migrate/extractors/claude.js +1136 -0
- package/dist/migrate/extractors/claude.js.map +1 -0
- package/dist/migrate/extractors/registry.js +3 -2
- package/dist/migrate/extractors/registry.js.map +1 -1
- package/dist/migrate/loaders/chatgpt.d.ts +72 -0
- package/dist/migrate/loaders/chatgpt.d.ts.map +1 -0
- package/dist/migrate/loaders/chatgpt.js +691 -0
- package/dist/migrate/loaders/chatgpt.js.map +1 -0
- package/dist/migrate/loaders/registry.js +3 -2
- package/dist/migrate/loaders/registry.js.map +1 -1
- package/dist/migrate/types.d.ts +2 -0
- package/dist/migrate/types.d.ts.map +1 -1
- package/package.json +2 -1
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Signal Handler
|
|
3
|
+
*
|
|
4
|
+
* Graceful handling of Ctrl+C (SIGINT) and other signals.
|
|
5
|
+
* Ensures cleanup happens and migrations can be resumed.
|
|
6
|
+
*/
|
|
7
|
+
import type { MigrationOrchestrator } from '../migrate/index.js';
|
|
8
|
+
export interface SignalHandlerOptions {
|
|
9
|
+
/** Orchestrator to save state on interrupt */
|
|
10
|
+
orchestrator?: MigrationOrchestrator;
|
|
11
|
+
/** Custom cleanup function */
|
|
12
|
+
cleanup?: () => Promise<void>;
|
|
13
|
+
/** Message to show on interrupt */
|
|
14
|
+
message?: string;
|
|
15
|
+
/** Whether to show resume hint */
|
|
16
|
+
showResumeHint?: boolean;
|
|
17
|
+
}
|
|
18
|
+
export declare class SignalHandler {
|
|
19
|
+
private orchestrator?;
|
|
20
|
+
private cleanup?;
|
|
21
|
+
private message;
|
|
22
|
+
private showResumeHint;
|
|
23
|
+
private isHandling;
|
|
24
|
+
private interruptCount;
|
|
25
|
+
constructor(options?: SignalHandlerOptions);
|
|
26
|
+
/**
|
|
27
|
+
* Register signal handlers
|
|
28
|
+
*/
|
|
29
|
+
register(): void;
|
|
30
|
+
/**
|
|
31
|
+
* Unregister signal handlers
|
|
32
|
+
*/
|
|
33
|
+
unregister(): void;
|
|
34
|
+
/**
|
|
35
|
+
* Update the orchestrator reference
|
|
36
|
+
*/
|
|
37
|
+
setOrchestrator(orchestrator: MigrationOrchestrator): void;
|
|
38
|
+
/**
|
|
39
|
+
* Handle SIGINT/SIGTERM
|
|
40
|
+
*/
|
|
41
|
+
private handleInterrupt;
|
|
42
|
+
/**
|
|
43
|
+
* Handle uncaught exceptions
|
|
44
|
+
*/
|
|
45
|
+
private handleUncaughtError;
|
|
46
|
+
/**
|
|
47
|
+
* Handle unhandled promise rejections
|
|
48
|
+
*/
|
|
49
|
+
private handleUnhandledRejection;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Setup global signal handling
|
|
53
|
+
*/
|
|
54
|
+
export declare function setupSignalHandler(options?: SignalHandlerOptions): SignalHandler;
|
|
55
|
+
/**
|
|
56
|
+
* Get the current signal handler
|
|
57
|
+
*/
|
|
58
|
+
export declare function getSignalHandler(): SignalHandler | null;
|
|
59
|
+
/**
|
|
60
|
+
* Cleanup signal handling
|
|
61
|
+
*/
|
|
62
|
+
export declare function cleanupSignalHandler(): void;
|
|
63
|
+
//# sourceMappingURL=signal-handler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"signal-handler.d.ts","sourceRoot":"","sources":["../../src/cli/signal-handler.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAIjE,MAAM,WAAW,oBAAoB;IACnC,8CAA8C;IAC9C,YAAY,CAAC,EAAE,qBAAqB,CAAC;IACrC,8BAA8B;IAC9B,OAAO,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9B,mCAAmC;IACnC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,kCAAkC;IAClC,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAID,qBAAa,aAAa;IACxB,OAAO,CAAC,YAAY,CAAC,CAAwB;IAC7C,OAAO,CAAC,OAAO,CAAC,CAAsB;IACtC,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,cAAc,CAAU;IAChC,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,cAAc,CAAK;gBAEf,OAAO,GAAE,oBAAyB;IAO9C;;OAEG;IACH,QAAQ,IAAI,IAAI;IAShB;;OAEG;IACH,UAAU,IAAI,IAAI;IAOlB;;OAEG;IACH,eAAe,CAAC,YAAY,EAAE,qBAAqB,GAAG,IAAI;IAI1D;;OAEG;IACH,OAAO,CAAC,eAAe,CAyDrB;IAEF;;OAEG;IACH,OAAO,CAAC,mBAAmB,CA0BzB;IAEF;;OAEG;IACH,OAAO,CAAC,wBAAwB,CAG9B;CACH;AAMD;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,GAAE,oBAAyB,GAAG,aAAa,CAQpF;AAED;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,aAAa,GAAG,IAAI,CAEvD;AAED;;GAEG;AACH,wBAAgB,oBAAoB,IAAI,IAAI,CAK3C"}
|
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Signal Handler
|
|
3
|
+
*
|
|
4
|
+
* Graceful handling of Ctrl+C (SIGINT) and other signals.
|
|
5
|
+
* Ensures cleanup happens and migrations can be resumed.
|
|
6
|
+
*/
|
|
7
|
+
import chalk from 'chalk';
|
|
8
|
+
// ─── Signal Handler Class ────────────────────────────────────
|
|
9
|
+
export class SignalHandler {
|
|
10
|
+
orchestrator;
|
|
11
|
+
cleanup;
|
|
12
|
+
message;
|
|
13
|
+
showResumeHint;
|
|
14
|
+
isHandling = false;
|
|
15
|
+
interruptCount = 0;
|
|
16
|
+
constructor(options = {}) {
|
|
17
|
+
this.orchestrator = options.orchestrator;
|
|
18
|
+
this.cleanup = options.cleanup;
|
|
19
|
+
this.message = options.message ?? 'Migration interrupted.';
|
|
20
|
+
this.showResumeHint = options.showResumeHint ?? true;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Register signal handlers
|
|
24
|
+
*/
|
|
25
|
+
register() {
|
|
26
|
+
process.on('SIGINT', this.handleInterrupt);
|
|
27
|
+
process.on('SIGTERM', this.handleInterrupt);
|
|
28
|
+
// Handle uncaught errors
|
|
29
|
+
process.on('uncaughtException', this.handleUncaughtError);
|
|
30
|
+
process.on('unhandledRejection', this.handleUnhandledRejection);
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Unregister signal handlers
|
|
34
|
+
*/
|
|
35
|
+
unregister() {
|
|
36
|
+
process.off('SIGINT', this.handleInterrupt);
|
|
37
|
+
process.off('SIGTERM', this.handleInterrupt);
|
|
38
|
+
process.off('uncaughtException', this.handleUncaughtError);
|
|
39
|
+
process.off('unhandledRejection', this.handleUnhandledRejection);
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Update the orchestrator reference
|
|
43
|
+
*/
|
|
44
|
+
setOrchestrator(orchestrator) {
|
|
45
|
+
this.orchestrator = orchestrator;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Handle SIGINT/SIGTERM
|
|
49
|
+
*/
|
|
50
|
+
handleInterrupt = async () => {
|
|
51
|
+
this.interruptCount++;
|
|
52
|
+
// Force exit on second interrupt
|
|
53
|
+
if (this.interruptCount > 1) {
|
|
54
|
+
console.log();
|
|
55
|
+
console.log(chalk.red('Force quit.'));
|
|
56
|
+
process.exit(1);
|
|
57
|
+
}
|
|
58
|
+
// Prevent concurrent handling
|
|
59
|
+
if (this.isHandling) {
|
|
60
|
+
return;
|
|
61
|
+
}
|
|
62
|
+
this.isHandling = true;
|
|
63
|
+
console.log();
|
|
64
|
+
console.log();
|
|
65
|
+
console.log(chalk.yellow.bold('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━'));
|
|
66
|
+
console.log(chalk.yellow.bold(' ⏸ Migration Interrupted'));
|
|
67
|
+
console.log(chalk.yellow.bold('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━'));
|
|
68
|
+
console.log();
|
|
69
|
+
// Save state if we have an orchestrator
|
|
70
|
+
if (this.orchestrator) {
|
|
71
|
+
const state = this.orchestrator.getState();
|
|
72
|
+
console.log(chalk.yellow(` ${this.message}`));
|
|
73
|
+
console.log();
|
|
74
|
+
console.log(chalk.white(` Phase: ${state.phase}`));
|
|
75
|
+
console.log(chalk.white(` Progress: ${Math.round(state.progress)}%`));
|
|
76
|
+
console.log();
|
|
77
|
+
if (this.showResumeHint) {
|
|
78
|
+
console.log(chalk.dim(` Your progress has been saved.`));
|
|
79
|
+
console.log(chalk.dim(` Resume with: ${chalk.cyan('savestate migrate --resume')}`));
|
|
80
|
+
console.log(chalk.dim(` Migration ID: ${state.id}`));
|
|
81
|
+
console.log();
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
// Run custom cleanup
|
|
85
|
+
if (this.cleanup) {
|
|
86
|
+
try {
|
|
87
|
+
console.log(chalk.dim(' Cleaning up...'));
|
|
88
|
+
await this.cleanup();
|
|
89
|
+
}
|
|
90
|
+
catch (error) {
|
|
91
|
+
console.log(chalk.red(` Cleanup error: ${error}`));
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
console.log(chalk.dim(' Press Ctrl+C again to force quit.'));
|
|
95
|
+
console.log();
|
|
96
|
+
// Exit gracefully
|
|
97
|
+
setTimeout(() => {
|
|
98
|
+
process.exit(130); // 128 + SIGINT(2)
|
|
99
|
+
}, 100);
|
|
100
|
+
};
|
|
101
|
+
/**
|
|
102
|
+
* Handle uncaught exceptions
|
|
103
|
+
*/
|
|
104
|
+
handleUncaughtError = async (error) => {
|
|
105
|
+
console.error();
|
|
106
|
+
console.error(chalk.red.bold('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━'));
|
|
107
|
+
console.error(chalk.red.bold(' ✗ Unexpected Error'));
|
|
108
|
+
console.error(chalk.red.bold('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━'));
|
|
109
|
+
console.error();
|
|
110
|
+
console.error(chalk.red(` ${error.message}`));
|
|
111
|
+
console.error();
|
|
112
|
+
if (this.orchestrator && this.showResumeHint) {
|
|
113
|
+
const state = this.orchestrator.getState();
|
|
114
|
+
console.error(chalk.dim(` Migration state saved. Resume with:`));
|
|
115
|
+
console.error(chalk.dim(` savestate migrate --resume`));
|
|
116
|
+
console.error(chalk.dim(` Migration ID: ${state.id}`));
|
|
117
|
+
console.error();
|
|
118
|
+
}
|
|
119
|
+
if (this.cleanup) {
|
|
120
|
+
try {
|
|
121
|
+
await this.cleanup();
|
|
122
|
+
}
|
|
123
|
+
catch {
|
|
124
|
+
// Ignore cleanup errors during crash
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
process.exit(1);
|
|
128
|
+
};
|
|
129
|
+
/**
|
|
130
|
+
* Handle unhandled promise rejections
|
|
131
|
+
*/
|
|
132
|
+
handleUnhandledRejection = (reason) => {
|
|
133
|
+
const error = reason instanceof Error ? reason : new Error(String(reason));
|
|
134
|
+
this.handleUncaughtError(error);
|
|
135
|
+
};
|
|
136
|
+
}
|
|
137
|
+
// ─── Convenience Function ────────────────────────────────────
|
|
138
|
+
let globalHandler = null;
|
|
139
|
+
/**
|
|
140
|
+
* Setup global signal handling
|
|
141
|
+
*/
|
|
142
|
+
export function setupSignalHandler(options = {}) {
|
|
143
|
+
if (globalHandler) {
|
|
144
|
+
globalHandler.unregister();
|
|
145
|
+
}
|
|
146
|
+
globalHandler = new SignalHandler(options);
|
|
147
|
+
globalHandler.register();
|
|
148
|
+
return globalHandler;
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* Get the current signal handler
|
|
152
|
+
*/
|
|
153
|
+
export function getSignalHandler() {
|
|
154
|
+
return globalHandler;
|
|
155
|
+
}
|
|
156
|
+
/**
|
|
157
|
+
* Cleanup signal handling
|
|
158
|
+
*/
|
|
159
|
+
export function cleanupSignalHandler() {
|
|
160
|
+
if (globalHandler) {
|
|
161
|
+
globalHandler.unregister();
|
|
162
|
+
globalHandler = null;
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
//# sourceMappingURL=signal-handler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"signal-handler.js","sourceRoot":"","sources":["../../src/cli/signal-handler.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Migration Summary Display
|
|
3
|
+
*
|
|
4
|
+
* Formats and displays migration results and compatibility reports.
|
|
5
|
+
*/
|
|
6
|
+
import type { LoadResult, CompatibilityReport, MigrationState } from '../migrate/types.js';
|
|
7
|
+
export interface SummaryOptions {
|
|
8
|
+
/** Disable colors */
|
|
9
|
+
noColor?: boolean;
|
|
10
|
+
/** Show detailed breakdown */
|
|
11
|
+
detailed?: boolean;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Display migration success summary
|
|
15
|
+
*/
|
|
16
|
+
export declare function showMigrationSummary(state: MigrationState, result: LoadResult, options?: SummaryOptions): void;
|
|
17
|
+
/**
|
|
18
|
+
* Display dry-run compatibility report
|
|
19
|
+
*/
|
|
20
|
+
export declare function showCompatibilityReport(report: CompatibilityReport, options?: SummaryOptions): void;
|
|
21
|
+
/**
|
|
22
|
+
* Display review mode - items needing attention
|
|
23
|
+
*/
|
|
24
|
+
export declare function showReviewItems(report: CompatibilityReport, options?: SummaryOptions): void;
|
|
25
|
+
/**
|
|
26
|
+
* Display migration resume information
|
|
27
|
+
*/
|
|
28
|
+
export declare function showResumableMigrations(migrations: MigrationState[]): void;
|
|
29
|
+
/**
|
|
30
|
+
* Display failed migration details
|
|
31
|
+
*/
|
|
32
|
+
export declare function showFailedMigration(state: MigrationState, options?: SummaryOptions): void;
|
|
33
|
+
//# sourceMappingURL=summary.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"summary.d.ts","sourceRoot":"","sources":["../../src/cli/summary.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EACV,UAAU,EACV,mBAAmB,EAEnB,cAAc,EAEf,MAAM,qBAAqB,CAAC;AAK7B,MAAM,WAAW,cAAc;IAC7B,qBAAqB;IACrB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,8BAA8B;IAC9B,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAaD;;GAEG;AACH,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,cAAc,EACrB,MAAM,EAAE,UAAU,EAClB,OAAO,GAAE,cAAmB,GAC3B,IAAI,CAoEN;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,mBAAmB,EAC3B,OAAO,GAAE,cAAmB,GAC3B,IAAI,CA8DN;AAED;;GAEG;AACH,wBAAgB,eAAe,CAC7B,MAAM,EAAE,mBAAmB,EAC3B,OAAO,GAAE,cAAmB,GAC3B,IAAI,CAsDN;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,UAAU,EAAE,cAAc,EAAE,GAAG,IAAI,CAgC1E;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,cAAc,EACrB,OAAO,GAAE,cAAmB,GAC3B,IAAI,CAmBN"}
|
|
@@ -0,0 +1,296 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Migration Summary Display
|
|
3
|
+
*
|
|
4
|
+
* Formats and displays migration results and compatibility reports.
|
|
5
|
+
*/
|
|
6
|
+
import chalk from 'chalk';
|
|
7
|
+
// ─── Platform Names ──────────────────────────────────────────
|
|
8
|
+
const PLATFORM_NAMES = {
|
|
9
|
+
chatgpt: 'ChatGPT',
|
|
10
|
+
claude: 'Claude',
|
|
11
|
+
gemini: 'Gemini',
|
|
12
|
+
copilot: 'Microsoft Copilot',
|
|
13
|
+
};
|
|
14
|
+
// ─── Summary Functions ───────────────────────────────────────
|
|
15
|
+
/**
|
|
16
|
+
* Display migration success summary
|
|
17
|
+
*/
|
|
18
|
+
export function showMigrationSummary(state, result, options = {}) {
|
|
19
|
+
const sourceName = PLATFORM_NAMES[state.source] || state.source;
|
|
20
|
+
const targetName = PLATFORM_NAMES[state.target] || state.target;
|
|
21
|
+
console.log();
|
|
22
|
+
console.log(chalk.green.bold('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━'));
|
|
23
|
+
console.log(chalk.green.bold(' ✓ Migration Complete'));
|
|
24
|
+
console.log(chalk.green.bold('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━'));
|
|
25
|
+
console.log();
|
|
26
|
+
// Migration path
|
|
27
|
+
console.log(` ${chalk.white('From:')} ${chalk.cyan(sourceName)}`);
|
|
28
|
+
console.log(` ${chalk.white('To:')} ${chalk.cyan(targetName)}`);
|
|
29
|
+
console.log();
|
|
30
|
+
// What was created
|
|
31
|
+
console.log(chalk.white.bold(' Created:'));
|
|
32
|
+
if (result.loaded.instructions) {
|
|
33
|
+
console.log(` ${chalk.green('✓')} Custom Instructions`);
|
|
34
|
+
}
|
|
35
|
+
if (result.loaded.memories > 0) {
|
|
36
|
+
console.log(` ${chalk.green('✓')} ${result.loaded.memories} memories`);
|
|
37
|
+
}
|
|
38
|
+
if (result.loaded.files > 0) {
|
|
39
|
+
console.log(` ${chalk.green('✓')} ${result.loaded.files} files`);
|
|
40
|
+
}
|
|
41
|
+
if (result.loaded.customBots > 0) {
|
|
42
|
+
console.log(` ${chalk.green('✓')} ${result.loaded.customBots} custom bots`);
|
|
43
|
+
}
|
|
44
|
+
console.log();
|
|
45
|
+
// Created resources
|
|
46
|
+
if (result.created?.projectId) {
|
|
47
|
+
console.log(chalk.white.bold(' Resources:'));
|
|
48
|
+
console.log(` Project ID: ${chalk.cyan(result.created.projectId)}`);
|
|
49
|
+
if (result.created.projectUrl) {
|
|
50
|
+
console.log(` URL: ${chalk.cyan(result.created.projectUrl)}`);
|
|
51
|
+
}
|
|
52
|
+
console.log();
|
|
53
|
+
}
|
|
54
|
+
// Warnings
|
|
55
|
+
if (result.warnings.length > 0) {
|
|
56
|
+
console.log(chalk.yellow.bold(' Warnings:'));
|
|
57
|
+
result.warnings.forEach((w) => {
|
|
58
|
+
console.log(` ${chalk.yellow('⚠')} ${w}`);
|
|
59
|
+
});
|
|
60
|
+
console.log();
|
|
61
|
+
}
|
|
62
|
+
// Manual steps
|
|
63
|
+
if (result.manualSteps && result.manualSteps.length > 0) {
|
|
64
|
+
console.log(chalk.blue.bold(' Manual Steps Required:'));
|
|
65
|
+
result.manualSteps.forEach((step, i) => {
|
|
66
|
+
console.log(` ${i + 1}. ${step}`);
|
|
67
|
+
});
|
|
68
|
+
console.log();
|
|
69
|
+
}
|
|
70
|
+
// Migration ID for reference
|
|
71
|
+
console.log(chalk.dim(` Migration ID: ${state.id}`));
|
|
72
|
+
console.log(chalk.dim(` You can restore again with: savestate restore --to <platform>`));
|
|
73
|
+
console.log();
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Display dry-run compatibility report
|
|
77
|
+
*/
|
|
78
|
+
export function showCompatibilityReport(report, options = {}) {
|
|
79
|
+
const sourceName = PLATFORM_NAMES[report.source] || report.source;
|
|
80
|
+
const targetName = PLATFORM_NAMES[report.target] || report.target;
|
|
81
|
+
console.log();
|
|
82
|
+
console.log(chalk.cyan.bold('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━'));
|
|
83
|
+
console.log(chalk.cyan.bold(' 📋 Compatibility Report (Dry Run)'));
|
|
84
|
+
console.log(chalk.cyan.bold('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━'));
|
|
85
|
+
console.log();
|
|
86
|
+
// Migration path
|
|
87
|
+
console.log(` ${chalk.white('From:')} ${chalk.cyan(sourceName)}`);
|
|
88
|
+
console.log(` ${chalk.white('To:')} ${chalk.cyan(targetName)}`);
|
|
89
|
+
console.log();
|
|
90
|
+
// Summary box
|
|
91
|
+
console.log(chalk.white.bold(' Summary:'));
|
|
92
|
+
console.log(` ${chalk.green('✓')} ${report.summary.perfect} items will transfer perfectly`);
|
|
93
|
+
console.log(` ${chalk.yellow('⚠')} ${report.summary.adapted} items require adaptation`);
|
|
94
|
+
console.log(` ${chalk.red('✗')} ${report.summary.incompatible} items cannot be migrated`);
|
|
95
|
+
console.log();
|
|
96
|
+
// Group items by type
|
|
97
|
+
if (options.detailed !== false) {
|
|
98
|
+
const grouped = groupItemsByType(report.items);
|
|
99
|
+
for (const [type, items] of Object.entries(grouped)) {
|
|
100
|
+
const typeName = formatTypeName(type);
|
|
101
|
+
console.log(chalk.white.bold(` ${typeName}:`));
|
|
102
|
+
items.forEach((item) => {
|
|
103
|
+
const symbol = getStatusSymbol(item.status);
|
|
104
|
+
const color = getStatusColor(item.status);
|
|
105
|
+
console.log(` ${color(symbol)} ${item.name}`);
|
|
106
|
+
console.log(chalk.dim(` ${item.reason}`));
|
|
107
|
+
if (item.action) {
|
|
108
|
+
console.log(chalk.dim(` → ${item.action}`));
|
|
109
|
+
}
|
|
110
|
+
});
|
|
111
|
+
console.log();
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
// Recommendations
|
|
115
|
+
if (report.recommendations.length > 0) {
|
|
116
|
+
console.log(chalk.white.bold(' Recommendations:'));
|
|
117
|
+
report.recommendations.forEach((rec, i) => {
|
|
118
|
+
console.log(` ${i + 1}. ${rec}`);
|
|
119
|
+
});
|
|
120
|
+
console.log();
|
|
121
|
+
}
|
|
122
|
+
// Feasibility
|
|
123
|
+
console.log(` ${chalk.white('Feasibility:')} ${formatFeasibility(report.feasibility)}`);
|
|
124
|
+
console.log();
|
|
125
|
+
// Dry run notice
|
|
126
|
+
console.log(chalk.cyan.bold(' ─────────────────────────────────────────────────────'));
|
|
127
|
+
console.log(chalk.cyan(' This was a dry run. No changes were made.'));
|
|
128
|
+
console.log(chalk.cyan(' Remove --dry-run to perform the actual migration.'));
|
|
129
|
+
console.log(chalk.cyan.bold(' ─────────────────────────────────────────────────────'));
|
|
130
|
+
console.log();
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* Display review mode - items needing attention
|
|
134
|
+
*/
|
|
135
|
+
export function showReviewItems(report, options = {}) {
|
|
136
|
+
const needsAttention = report.items.filter((item) => item.status === 'adapted' || item.status === 'incompatible');
|
|
137
|
+
if (needsAttention.length === 0) {
|
|
138
|
+
console.log();
|
|
139
|
+
console.log(chalk.green.bold(' ✓ All items transfer perfectly!'));
|
|
140
|
+
console.log(chalk.green(' No manual review needed.'));
|
|
141
|
+
console.log();
|
|
142
|
+
return;
|
|
143
|
+
}
|
|
144
|
+
console.log();
|
|
145
|
+
console.log(chalk.yellow.bold('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━'));
|
|
146
|
+
console.log(chalk.yellow.bold(' ⚠ Items Requiring Review'));
|
|
147
|
+
console.log(chalk.yellow.bold('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━'));
|
|
148
|
+
console.log();
|
|
149
|
+
// Show adapted items
|
|
150
|
+
const adapted = needsAttention.filter((i) => i.status === 'adapted');
|
|
151
|
+
if (adapted.length > 0) {
|
|
152
|
+
console.log(chalk.yellow.bold(' Adapted Items:'));
|
|
153
|
+
console.log(chalk.dim(' These items will be transformed to fit the target platform.'));
|
|
154
|
+
console.log();
|
|
155
|
+
adapted.forEach((item, i) => {
|
|
156
|
+
console.log(` ${chalk.yellow(`${i + 1}.`)} ${chalk.white.bold(item.name)}`);
|
|
157
|
+
console.log(` Type: ${formatTypeName(item.type)}`);
|
|
158
|
+
console.log(` Issue: ${item.reason}`);
|
|
159
|
+
if (item.action) {
|
|
160
|
+
console.log(` Action: ${chalk.cyan(item.action)}`);
|
|
161
|
+
}
|
|
162
|
+
console.log();
|
|
163
|
+
});
|
|
164
|
+
}
|
|
165
|
+
// Show incompatible items
|
|
166
|
+
const incompatible = needsAttention.filter((i) => i.status === 'incompatible');
|
|
167
|
+
if (incompatible.length > 0) {
|
|
168
|
+
console.log(chalk.red.bold(' Incompatible Items:'));
|
|
169
|
+
console.log(chalk.dim(' These items cannot be migrated.'));
|
|
170
|
+
console.log();
|
|
171
|
+
incompatible.forEach((item, i) => {
|
|
172
|
+
console.log(` ${chalk.red(`${i + 1}.`)} ${chalk.white.bold(item.name)}`);
|
|
173
|
+
console.log(` Type: ${formatTypeName(item.type)}`);
|
|
174
|
+
console.log(` Reason: ${item.reason}`);
|
|
175
|
+
if (item.action) {
|
|
176
|
+
console.log(` Alternative: ${chalk.cyan(item.action)}`);
|
|
177
|
+
}
|
|
178
|
+
console.log();
|
|
179
|
+
});
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
/**
|
|
183
|
+
* Display migration resume information
|
|
184
|
+
*/
|
|
185
|
+
export function showResumableMigrations(migrations) {
|
|
186
|
+
const resumable = migrations.filter((m) => m.phase !== 'complete' && m.phase !== 'failed');
|
|
187
|
+
if (resumable.length === 0) {
|
|
188
|
+
console.log();
|
|
189
|
+
console.log(chalk.dim(' No interrupted migrations found.'));
|
|
190
|
+
console.log();
|
|
191
|
+
return;
|
|
192
|
+
}
|
|
193
|
+
console.log();
|
|
194
|
+
console.log(chalk.yellow.bold('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━'));
|
|
195
|
+
console.log(chalk.yellow.bold(' ⟳ Interrupted Migrations'));
|
|
196
|
+
console.log(chalk.yellow.bold('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━'));
|
|
197
|
+
console.log();
|
|
198
|
+
resumable.forEach((m, i) => {
|
|
199
|
+
const sourceName = PLATFORM_NAMES[m.source] || m.source;
|
|
200
|
+
const targetName = PLATFORM_NAMES[m.target] || m.target;
|
|
201
|
+
const started = new Date(m.startedAt).toLocaleString();
|
|
202
|
+
console.log(` ${i + 1}. ${chalk.cyan(m.id)}`);
|
|
203
|
+
console.log(` ${sourceName} → ${targetName}`);
|
|
204
|
+
console.log(` Phase: ${formatPhase(m.phase)} (${Math.round(m.progress)}%)`);
|
|
205
|
+
console.log(` Started: ${started}`);
|
|
206
|
+
console.log();
|
|
207
|
+
});
|
|
208
|
+
console.log(chalk.dim(' Resume with: savestate migrate --resume'));
|
|
209
|
+
console.log();
|
|
210
|
+
}
|
|
211
|
+
/**
|
|
212
|
+
* Display failed migration details
|
|
213
|
+
*/
|
|
214
|
+
export function showFailedMigration(state, options = {}) {
|
|
215
|
+
console.log();
|
|
216
|
+
console.log(chalk.red.bold('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━'));
|
|
217
|
+
console.log(chalk.red.bold(' ✗ Migration Failed'));
|
|
218
|
+
console.log(chalk.red.bold('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━'));
|
|
219
|
+
console.log();
|
|
220
|
+
console.log(` ${chalk.white('Phase:')} ${formatPhase(state.phase)}`);
|
|
221
|
+
console.log(` ${chalk.white('Error:')} ${chalk.red(state.error || 'Unknown error')}`);
|
|
222
|
+
console.log();
|
|
223
|
+
console.log(chalk.white.bold(' Options:'));
|
|
224
|
+
console.log(` 1. ${chalk.cyan('savestate migrate --resume')} - Retry from last checkpoint`);
|
|
225
|
+
console.log(` 2. Check authentication and permissions`);
|
|
226
|
+
console.log(` 3. Try with ${chalk.cyan('--dry-run')} to see compatibility issues`);
|
|
227
|
+
console.log();
|
|
228
|
+
console.log(chalk.dim(` Migration ID: ${state.id}`));
|
|
229
|
+
console.log();
|
|
230
|
+
}
|
|
231
|
+
// ─── Helper Functions ────────────────────────────────────────
|
|
232
|
+
function groupItemsByType(items) {
|
|
233
|
+
return items.reduce((groups, item) => {
|
|
234
|
+
const type = item.type;
|
|
235
|
+
if (!groups[type]) {
|
|
236
|
+
groups[type] = [];
|
|
237
|
+
}
|
|
238
|
+
groups[type].push(item);
|
|
239
|
+
return groups;
|
|
240
|
+
}, {});
|
|
241
|
+
}
|
|
242
|
+
function formatTypeName(type) {
|
|
243
|
+
const names = {
|
|
244
|
+
instructions: 'Custom Instructions',
|
|
245
|
+
memory: 'Memories',
|
|
246
|
+
conversation: 'Conversations',
|
|
247
|
+
file: 'Files',
|
|
248
|
+
customBot: 'Custom Bots/GPTs',
|
|
249
|
+
feature: 'Features/Capabilities',
|
|
250
|
+
};
|
|
251
|
+
return names[type] || type;
|
|
252
|
+
}
|
|
253
|
+
function getStatusSymbol(status) {
|
|
254
|
+
switch (status) {
|
|
255
|
+
case 'perfect':
|
|
256
|
+
return '✓';
|
|
257
|
+
case 'adapted':
|
|
258
|
+
return '⚠';
|
|
259
|
+
case 'incompatible':
|
|
260
|
+
return '✗';
|
|
261
|
+
}
|
|
262
|
+
}
|
|
263
|
+
function getStatusColor(status) {
|
|
264
|
+
switch (status) {
|
|
265
|
+
case 'perfect':
|
|
266
|
+
return chalk.green;
|
|
267
|
+
case 'adapted':
|
|
268
|
+
return chalk.yellow;
|
|
269
|
+
case 'incompatible':
|
|
270
|
+
return chalk.red;
|
|
271
|
+
}
|
|
272
|
+
}
|
|
273
|
+
function formatFeasibility(feasibility) {
|
|
274
|
+
switch (feasibility) {
|
|
275
|
+
case 'easy':
|
|
276
|
+
return chalk.green('Easy - Most items transfer cleanly');
|
|
277
|
+
case 'moderate':
|
|
278
|
+
return chalk.yellow('Moderate - Some items need adaptation');
|
|
279
|
+
case 'complex':
|
|
280
|
+
return chalk.yellow('Complex - Significant adaptation required');
|
|
281
|
+
case 'partial':
|
|
282
|
+
return chalk.red('Partial - Some items cannot be migrated');
|
|
283
|
+
}
|
|
284
|
+
}
|
|
285
|
+
function formatPhase(phase) {
|
|
286
|
+
const phases = {
|
|
287
|
+
pending: chalk.dim('Pending'),
|
|
288
|
+
extracting: chalk.blue('Extracting'),
|
|
289
|
+
transforming: chalk.yellow('Transforming'),
|
|
290
|
+
loading: chalk.magenta('Loading'),
|
|
291
|
+
complete: chalk.green('Complete'),
|
|
292
|
+
failed: chalk.red('Failed'),
|
|
293
|
+
};
|
|
294
|
+
return phases[phase] || phase;
|
|
295
|
+
}
|
|
296
|
+
//# sourceMappingURL=summary.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"summary.js","sourceRoot":"","sources":["../../src/cli/summary.ts"],"names":[],"mappings":"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"}
|
package/dist/cli.js
CHANGED
|
@@ -110,8 +110,14 @@ program
|
|
|
110
110
|
.option('-f, --from <platform>', 'Source platform to migrate from')
|
|
111
111
|
.option('-t, --to <platform>', 'Target platform to migrate to')
|
|
112
112
|
.option('-s, --snapshot <id>', 'Use existing snapshot instead of creating new one')
|
|
113
|
-
.option('--dry-run', 'Show
|
|
113
|
+
.option('--dry-run', 'Show compatibility report without making changes')
|
|
114
|
+
.option('--review', 'Inspect items needing manual attention')
|
|
115
|
+
.option('--resume', 'Resume an interrupted migration')
|
|
116
|
+
.option('-i, --include <types>', 'Only migrate specific types (instructions,memories,conversations,files,customBots)')
|
|
114
117
|
.option('-l, --list', 'List available platforms and their capabilities')
|
|
118
|
+
.option('--no-color', 'Disable colorized output')
|
|
119
|
+
.option('--force', 'Skip confirmation prompts')
|
|
120
|
+
.option('-v, --verbose', 'Show detailed progress')
|
|
115
121
|
.action(migrateCommand);
|
|
116
122
|
// ─── savestate cloud ─────────────────────────────────────────
|
|
117
123
|
import { cloudCommand } from './commands/cloud.js';
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|