@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,536 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Integration Tests for Migration Wizard
|
|
3
|
+
*
|
|
4
|
+
* Tests complete migration paths between platforms with realistic data.
|
|
5
|
+
*/
|
|
6
|
+
import { describe, it, expect, beforeEach, afterEach } from 'vitest';
|
|
7
|
+
import { existsSync } from 'node:fs';
|
|
8
|
+
import { rm, mkdir } from 'node:fs/promises';
|
|
9
|
+
import { join } from 'node:path';
|
|
10
|
+
import { tmpdir } from 'node:os';
|
|
11
|
+
import { MigrationOrchestrator } from '../orchestrator.js';
|
|
12
|
+
import { registerMockPlugins } from '../testing/index.js';
|
|
13
|
+
import { ChatGPTToClaudeTransformer } from '../transformers/chatgpt-to-claude.js';
|
|
14
|
+
import { ClaudeToChatGPTTransformer } from '../transformers/claude-to-chatgpt.js';
|
|
15
|
+
import { registerTransformer } from '../transformers/registry.js';
|
|
16
|
+
describe('Integration Tests', () => {
|
|
17
|
+
let testWorkDir;
|
|
18
|
+
beforeEach(async () => {
|
|
19
|
+
testWorkDir = join(tmpdir(), `savestate-integration-${Date.now()}-${Math.random().toString(36).slice(2)}`);
|
|
20
|
+
await mkdir(testWorkDir, { recursive: true });
|
|
21
|
+
});
|
|
22
|
+
afterEach(async () => {
|
|
23
|
+
if (existsSync(testWorkDir)) {
|
|
24
|
+
await rm(testWorkDir, { recursive: true, force: true });
|
|
25
|
+
}
|
|
26
|
+
});
|
|
27
|
+
describe('ChatGPT → Claude Full Migration', () => {
|
|
28
|
+
it('should migrate typical user data from ChatGPT to Claude', async () => {
|
|
29
|
+
// Create realistic ChatGPT data
|
|
30
|
+
const typicalUserBundle = {
|
|
31
|
+
version: '1.0',
|
|
32
|
+
id: 'bundle_chatgpt_typical',
|
|
33
|
+
source: {
|
|
34
|
+
platform: 'chatgpt',
|
|
35
|
+
extractedAt: new Date().toISOString(),
|
|
36
|
+
accountId: 'user_12345',
|
|
37
|
+
extractorVersion: '1.0.0',
|
|
38
|
+
},
|
|
39
|
+
contents: {
|
|
40
|
+
instructions: {
|
|
41
|
+
content: `## About Me
|
|
42
|
+
I am a software developer working on web applications. I prefer TypeScript and React.
|
|
43
|
+
I live in San Francisco and work remotely.
|
|
44
|
+
|
|
45
|
+
## How ChatGPT Should Respond
|
|
46
|
+
Be concise but thorough. Use code examples when helpful.
|
|
47
|
+
Always explain the reasoning behind suggestions.
|
|
48
|
+
Format code with proper indentation.`,
|
|
49
|
+
length: 300,
|
|
50
|
+
sections: [
|
|
51
|
+
{ title: 'About Me', content: 'Software developer...', priority: 'high' },
|
|
52
|
+
{ title: 'Response Style', content: 'Be concise...', priority: 'medium' },
|
|
53
|
+
],
|
|
54
|
+
},
|
|
55
|
+
memories: {
|
|
56
|
+
entries: [
|
|
57
|
+
{
|
|
58
|
+
id: 'mem_1',
|
|
59
|
+
content: 'User prefers TypeScript over JavaScript',
|
|
60
|
+
createdAt: '2024-01-15T10:00:00Z',
|
|
61
|
+
category: 'preferences',
|
|
62
|
+
},
|
|
63
|
+
{
|
|
64
|
+
id: 'mem_2',
|
|
65
|
+
content: 'User is building a Next.js e-commerce platform',
|
|
66
|
+
createdAt: '2024-01-20T14:30:00Z',
|
|
67
|
+
category: 'projects',
|
|
68
|
+
},
|
|
69
|
+
{
|
|
70
|
+
id: 'mem_3',
|
|
71
|
+
content: 'User timezone is PST (UTC-8)',
|
|
72
|
+
createdAt: '2024-02-01T09:00:00Z',
|
|
73
|
+
category: 'context',
|
|
74
|
+
},
|
|
75
|
+
],
|
|
76
|
+
count: 3,
|
|
77
|
+
},
|
|
78
|
+
conversations: {
|
|
79
|
+
path: 'conversations/',
|
|
80
|
+
count: 15,
|
|
81
|
+
messageCount: 150,
|
|
82
|
+
summaries: [
|
|
83
|
+
{
|
|
84
|
+
id: 'conv_1',
|
|
85
|
+
title: 'React State Management',
|
|
86
|
+
messageCount: 25,
|
|
87
|
+
createdAt: '2024-01-10T10:00:00Z',
|
|
88
|
+
updatedAt: '2024-01-10T12:00:00Z',
|
|
89
|
+
keyPoints: ['Decided to use Zustand for state management'],
|
|
90
|
+
},
|
|
91
|
+
{
|
|
92
|
+
id: 'conv_2',
|
|
93
|
+
title: 'Database Design',
|
|
94
|
+
messageCount: 40,
|
|
95
|
+
createdAt: '2024-01-12T09:00:00Z',
|
|
96
|
+
updatedAt: '2024-01-12T16:00:00Z',
|
|
97
|
+
keyPoints: ['Using Prisma with PostgreSQL'],
|
|
98
|
+
},
|
|
99
|
+
],
|
|
100
|
+
},
|
|
101
|
+
files: {
|
|
102
|
+
files: [
|
|
103
|
+
{
|
|
104
|
+
id: 'file_1',
|
|
105
|
+
filename: 'schema.prisma',
|
|
106
|
+
mimeType: 'text/plain',
|
|
107
|
+
size: 4096,
|
|
108
|
+
path: 'files/schema.prisma',
|
|
109
|
+
},
|
|
110
|
+
{
|
|
111
|
+
id: 'file_2',
|
|
112
|
+
filename: 'api-docs.pdf',
|
|
113
|
+
mimeType: 'application/pdf',
|
|
114
|
+
size: 524288,
|
|
115
|
+
path: 'files/api-docs.pdf',
|
|
116
|
+
},
|
|
117
|
+
],
|
|
118
|
+
count: 2,
|
|
119
|
+
totalSize: 528384,
|
|
120
|
+
},
|
|
121
|
+
customBots: {
|
|
122
|
+
bots: [
|
|
123
|
+
{
|
|
124
|
+
id: 'gpt_1',
|
|
125
|
+
name: 'Code Reviewer',
|
|
126
|
+
description: 'Reviews code for best practices',
|
|
127
|
+
instructions: 'You are a senior code reviewer...',
|
|
128
|
+
capabilities: ['code_interpreter'],
|
|
129
|
+
createdAt: '2024-01-05T10:00:00Z',
|
|
130
|
+
},
|
|
131
|
+
],
|
|
132
|
+
count: 1,
|
|
133
|
+
},
|
|
134
|
+
},
|
|
135
|
+
metadata: {
|
|
136
|
+
totalItems: 22,
|
|
137
|
+
itemCounts: {
|
|
138
|
+
instructions: 1,
|
|
139
|
+
memories: 3,
|
|
140
|
+
conversations: 15,
|
|
141
|
+
files: 2,
|
|
142
|
+
customBots: 1,
|
|
143
|
+
},
|
|
144
|
+
warnings: [],
|
|
145
|
+
errors: [],
|
|
146
|
+
},
|
|
147
|
+
};
|
|
148
|
+
// Register mock extractor with this bundle
|
|
149
|
+
const { loaders } = registerMockPlugins({
|
|
150
|
+
extractors: {
|
|
151
|
+
chatgpt: { customBundle: typicalUserBundle },
|
|
152
|
+
},
|
|
153
|
+
});
|
|
154
|
+
// Also register the real ChatGPT→Claude transformer
|
|
155
|
+
registerTransformer('chatgpt', 'claude', () => new ChatGPTToClaudeTransformer());
|
|
156
|
+
const orchestrator = new MigrationOrchestrator('chatgpt', 'claude', {
|
|
157
|
+
workDir: join(testWorkDir, 'migration-chatgpt-claude'),
|
|
158
|
+
});
|
|
159
|
+
const events = [];
|
|
160
|
+
orchestrator.on((e) => events.push(e));
|
|
161
|
+
const result = await orchestrator.run();
|
|
162
|
+
// Verify success
|
|
163
|
+
expect(result.success).toBe(true);
|
|
164
|
+
expect(result.loaded.instructions).toBe(true);
|
|
165
|
+
expect(result.loaded.memories).toBeGreaterThan(0);
|
|
166
|
+
expect(result.loaded.files).toBe(2);
|
|
167
|
+
// Verify state
|
|
168
|
+
const state = orchestrator.getState();
|
|
169
|
+
expect(state.phase).toBe('complete');
|
|
170
|
+
expect(state.checkpoints.length).toBe(3);
|
|
171
|
+
// Verify the bundle was transformed correctly
|
|
172
|
+
const bundle = orchestrator.getBundle();
|
|
173
|
+
expect(bundle?.target?.platform).toBe('claude');
|
|
174
|
+
expect(bundle?.contents.instructions).toBeDefined();
|
|
175
|
+
// Verify phase events
|
|
176
|
+
const phaseStarts = events.filter((e) => e.type === 'phase:start');
|
|
177
|
+
expect(phaseStarts.length).toBe(3);
|
|
178
|
+
});
|
|
179
|
+
it('should preserve custom bot configurations during migration', async () => {
|
|
180
|
+
const bundleWithMultipleGPTs = {
|
|
181
|
+
version: '1.0',
|
|
182
|
+
id: 'bundle_gpts',
|
|
183
|
+
source: {
|
|
184
|
+
platform: 'chatgpt',
|
|
185
|
+
extractedAt: new Date().toISOString(),
|
|
186
|
+
extractorVersion: '1.0.0',
|
|
187
|
+
},
|
|
188
|
+
contents: {
|
|
189
|
+
customBots: {
|
|
190
|
+
bots: [
|
|
191
|
+
{
|
|
192
|
+
id: 'gpt_writer',
|
|
193
|
+
name: 'Creative Writer',
|
|
194
|
+
description: 'Helps with creative writing',
|
|
195
|
+
instructions: 'You are a creative writing assistant. Help with stories, poems, and creative content.',
|
|
196
|
+
capabilities: ['browsing'],
|
|
197
|
+
createdAt: '2024-01-01T10:00:00Z',
|
|
198
|
+
},
|
|
199
|
+
{
|
|
200
|
+
id: 'gpt_data',
|
|
201
|
+
name: 'Data Analyst',
|
|
202
|
+
description: 'Analyzes data and creates visualizations',
|
|
203
|
+
instructions: 'You are a data analyst. Process data, create charts, and provide insights.',
|
|
204
|
+
capabilities: ['code_interpreter'],
|
|
205
|
+
createdAt: '2024-01-02T10:00:00Z',
|
|
206
|
+
},
|
|
207
|
+
],
|
|
208
|
+
count: 2,
|
|
209
|
+
},
|
|
210
|
+
},
|
|
211
|
+
metadata: {
|
|
212
|
+
totalItems: 2,
|
|
213
|
+
itemCounts: {
|
|
214
|
+
instructions: 0,
|
|
215
|
+
memories: 0,
|
|
216
|
+
conversations: 0,
|
|
217
|
+
files: 0,
|
|
218
|
+
customBots: 2,
|
|
219
|
+
},
|
|
220
|
+
warnings: [],
|
|
221
|
+
errors: [],
|
|
222
|
+
},
|
|
223
|
+
};
|
|
224
|
+
registerMockPlugins({
|
|
225
|
+
extractors: { chatgpt: { customBundle: bundleWithMultipleGPTs } },
|
|
226
|
+
});
|
|
227
|
+
registerTransformer('chatgpt', 'claude', () => new ChatGPTToClaudeTransformer());
|
|
228
|
+
const orchestrator = new MigrationOrchestrator('chatgpt', 'claude', {
|
|
229
|
+
workDir: join(testWorkDir, 'migration-gpts'),
|
|
230
|
+
});
|
|
231
|
+
const result = await orchestrator.run();
|
|
232
|
+
expect(result.success).toBe(true);
|
|
233
|
+
expect(result.loaded.customBots).toBe(2);
|
|
234
|
+
const bundle = orchestrator.getBundle();
|
|
235
|
+
expect(bundle?.contents.customBots?.count).toBe(2);
|
|
236
|
+
});
|
|
237
|
+
});
|
|
238
|
+
describe('Claude → ChatGPT Full Migration', () => {
|
|
239
|
+
it('should migrate typical user data from Claude to ChatGPT', async () => {
|
|
240
|
+
const claudeBundle = {
|
|
241
|
+
version: '1.0',
|
|
242
|
+
id: 'bundle_claude_typical',
|
|
243
|
+
source: {
|
|
244
|
+
platform: 'claude',
|
|
245
|
+
extractedAt: new Date().toISOString(),
|
|
246
|
+
accountId: 'org_abc123',
|
|
247
|
+
extractorVersion: '1.0.0',
|
|
248
|
+
},
|
|
249
|
+
contents: {
|
|
250
|
+
instructions: {
|
|
251
|
+
content: `You are assisting a product manager at a tech startup.
|
|
252
|
+
|
|
253
|
+
Key context:
|
|
254
|
+
- The user manages a team of 5 engineers
|
|
255
|
+
- Main product is a B2B SaaS platform
|
|
256
|
+
- Currently in Series A funding stage
|
|
257
|
+
|
|
258
|
+
Response guidelines:
|
|
259
|
+
- Be direct and action-oriented
|
|
260
|
+
- Use bullet points for clarity
|
|
261
|
+
- Consider business impact in suggestions`,
|
|
262
|
+
length: 350,
|
|
263
|
+
},
|
|
264
|
+
memories: {
|
|
265
|
+
entries: [
|
|
266
|
+
{
|
|
267
|
+
id: 'claude_mem_1',
|
|
268
|
+
content: 'User manages product roadmap quarterly',
|
|
269
|
+
createdAt: '2024-02-01T10:00:00Z',
|
|
270
|
+
},
|
|
271
|
+
{
|
|
272
|
+
id: 'claude_mem_2',
|
|
273
|
+
content: 'Team uses Jira for project tracking',
|
|
274
|
+
createdAt: '2024-02-05T14:00:00Z',
|
|
275
|
+
},
|
|
276
|
+
],
|
|
277
|
+
count: 2,
|
|
278
|
+
},
|
|
279
|
+
files: {
|
|
280
|
+
files: [
|
|
281
|
+
{
|
|
282
|
+
id: 'claude_file_1',
|
|
283
|
+
filename: 'roadmap-q1.md',
|
|
284
|
+
mimeType: 'text/markdown',
|
|
285
|
+
size: 8192,
|
|
286
|
+
path: 'files/roadmap-q1.md',
|
|
287
|
+
},
|
|
288
|
+
],
|
|
289
|
+
count: 1,
|
|
290
|
+
totalSize: 8192,
|
|
291
|
+
},
|
|
292
|
+
},
|
|
293
|
+
metadata: {
|
|
294
|
+
totalItems: 4,
|
|
295
|
+
itemCounts: {
|
|
296
|
+
instructions: 1,
|
|
297
|
+
memories: 2,
|
|
298
|
+
conversations: 0,
|
|
299
|
+
files: 1,
|
|
300
|
+
customBots: 0,
|
|
301
|
+
},
|
|
302
|
+
warnings: [],
|
|
303
|
+
errors: [],
|
|
304
|
+
},
|
|
305
|
+
};
|
|
306
|
+
registerMockPlugins({
|
|
307
|
+
extractors: { claude: { customBundle: claudeBundle } },
|
|
308
|
+
});
|
|
309
|
+
registerTransformer('claude', 'chatgpt', () => new ClaudeToChatGPTTransformer());
|
|
310
|
+
const orchestrator = new MigrationOrchestrator('claude', 'chatgpt', {
|
|
311
|
+
workDir: join(testWorkDir, 'migration-claude-chatgpt'),
|
|
312
|
+
});
|
|
313
|
+
const result = await orchestrator.run();
|
|
314
|
+
expect(result.success).toBe(true);
|
|
315
|
+
expect(result.loaded.instructions).toBe(true);
|
|
316
|
+
expect(result.loaded.memories).toBe(2);
|
|
317
|
+
expect(result.loaded.files).toBe(1);
|
|
318
|
+
const bundle = orchestrator.getBundle();
|
|
319
|
+
expect(bundle?.target?.platform).toBe('chatgpt');
|
|
320
|
+
});
|
|
321
|
+
it('should handle Claude projects mapped to ChatGPT', async () => {
|
|
322
|
+
const claudeWithProjects = {
|
|
323
|
+
version: '1.0',
|
|
324
|
+
id: 'bundle_claude_projects',
|
|
325
|
+
source: {
|
|
326
|
+
platform: 'claude',
|
|
327
|
+
extractedAt: new Date().toISOString(),
|
|
328
|
+
extractorVersion: '1.0.0',
|
|
329
|
+
},
|
|
330
|
+
contents: {
|
|
331
|
+
customBots: {
|
|
332
|
+
bots: [
|
|
333
|
+
{
|
|
334
|
+
id: 'proj_research',
|
|
335
|
+
name: 'Research Assistant',
|
|
336
|
+
description: 'Helps with academic research',
|
|
337
|
+
instructions: 'Focus on peer-reviewed sources and citations',
|
|
338
|
+
createdAt: '2024-01-15T10:00:00Z',
|
|
339
|
+
},
|
|
340
|
+
],
|
|
341
|
+
count: 1,
|
|
342
|
+
},
|
|
343
|
+
},
|
|
344
|
+
metadata: {
|
|
345
|
+
totalItems: 1,
|
|
346
|
+
itemCounts: {
|
|
347
|
+
instructions: 0,
|
|
348
|
+
memories: 0,
|
|
349
|
+
conversations: 0,
|
|
350
|
+
files: 0,
|
|
351
|
+
customBots: 1,
|
|
352
|
+
},
|
|
353
|
+
warnings: [],
|
|
354
|
+
errors: [],
|
|
355
|
+
},
|
|
356
|
+
};
|
|
357
|
+
registerMockPlugins({
|
|
358
|
+
extractors: { claude: { customBundle: claudeWithProjects } },
|
|
359
|
+
});
|
|
360
|
+
registerTransformer('claude', 'chatgpt', () => new ClaudeToChatGPTTransformer());
|
|
361
|
+
const orchestrator = new MigrationOrchestrator('claude', 'chatgpt', {
|
|
362
|
+
workDir: join(testWorkDir, 'migration-projects'),
|
|
363
|
+
});
|
|
364
|
+
const result = await orchestrator.run();
|
|
365
|
+
expect(result.success).toBe(true);
|
|
366
|
+
});
|
|
367
|
+
});
|
|
368
|
+
describe('Dry Run Mode', () => {
|
|
369
|
+
it('should show accurate compatibility report in dry run', async () => {
|
|
370
|
+
const bundleWithMixedCompatibility = {
|
|
371
|
+
version: '1.0',
|
|
372
|
+
id: 'bundle_mixed',
|
|
373
|
+
source: {
|
|
374
|
+
platform: 'chatgpt',
|
|
375
|
+
extractedAt: new Date().toISOString(),
|
|
376
|
+
extractorVersion: '1.0.0',
|
|
377
|
+
},
|
|
378
|
+
contents: {
|
|
379
|
+
instructions: {
|
|
380
|
+
content: 'A'.repeat(10000), // Long instructions that will need adaptation
|
|
381
|
+
length: 10000,
|
|
382
|
+
},
|
|
383
|
+
memories: {
|
|
384
|
+
entries: Array.from({ length: 25 }, (_, i) => ({
|
|
385
|
+
id: `mem_${i}`,
|
|
386
|
+
content: `Memory entry ${i}`,
|
|
387
|
+
createdAt: new Date().toISOString(),
|
|
388
|
+
})),
|
|
389
|
+
count: 25,
|
|
390
|
+
},
|
|
391
|
+
files: {
|
|
392
|
+
files: [
|
|
393
|
+
{
|
|
394
|
+
id: 'large_file',
|
|
395
|
+
filename: 'huge-dataset.csv',
|
|
396
|
+
mimeType: 'text/csv',
|
|
397
|
+
size: 100 * 1024 * 1024, // 100MB - exceeds Claude's limit
|
|
398
|
+
path: 'files/huge-dataset.csv',
|
|
399
|
+
},
|
|
400
|
+
{
|
|
401
|
+
id: 'normal_file',
|
|
402
|
+
filename: 'readme.md',
|
|
403
|
+
mimeType: 'text/markdown',
|
|
404
|
+
size: 1024,
|
|
405
|
+
path: 'files/readme.md',
|
|
406
|
+
},
|
|
407
|
+
],
|
|
408
|
+
count: 2,
|
|
409
|
+
totalSize: 100 * 1024 * 1024 + 1024,
|
|
410
|
+
},
|
|
411
|
+
},
|
|
412
|
+
metadata: {
|
|
413
|
+
totalItems: 28,
|
|
414
|
+
itemCounts: {
|
|
415
|
+
instructions: 1,
|
|
416
|
+
memories: 25,
|
|
417
|
+
conversations: 0,
|
|
418
|
+
files: 2,
|
|
419
|
+
customBots: 0,
|
|
420
|
+
},
|
|
421
|
+
warnings: [],
|
|
422
|
+
errors: [],
|
|
423
|
+
},
|
|
424
|
+
};
|
|
425
|
+
registerMockPlugins({
|
|
426
|
+
extractors: { chatgpt: { customBundle: bundleWithMixedCompatibility } },
|
|
427
|
+
});
|
|
428
|
+
registerTransformer('chatgpt', 'claude', () => new ChatGPTToClaudeTransformer());
|
|
429
|
+
const orchestrator = new MigrationOrchestrator('chatgpt', 'claude', {
|
|
430
|
+
workDir: join(testWorkDir, 'migration-dry-run'),
|
|
431
|
+
dryRun: true,
|
|
432
|
+
});
|
|
433
|
+
// First get the compatibility report
|
|
434
|
+
const report = await orchestrator.analyze();
|
|
435
|
+
expect(report.source).toBe('chatgpt');
|
|
436
|
+
expect(report.target).toBe('claude');
|
|
437
|
+
expect(report.summary.total).toBeGreaterThan(0);
|
|
438
|
+
expect(report.items.some((i) => i.status === 'adapted')).toBe(true);
|
|
439
|
+
expect(report.items.some((i) => i.status === 'incompatible')).toBe(true);
|
|
440
|
+
expect(report.recommendations.length).toBeGreaterThan(0);
|
|
441
|
+
// Now run the dry migration
|
|
442
|
+
const result = await orchestrator.run();
|
|
443
|
+
expect(result.success).toBe(true);
|
|
444
|
+
expect(result.warnings).toContain('Dry run - no changes made');
|
|
445
|
+
});
|
|
446
|
+
it('should not create any resources in dry run mode', async () => {
|
|
447
|
+
registerMockPlugins();
|
|
448
|
+
const orchestrator = new MigrationOrchestrator('chatgpt', 'claude', {
|
|
449
|
+
workDir: join(testWorkDir, 'migration-dry-run-resources'),
|
|
450
|
+
dryRun: true,
|
|
451
|
+
});
|
|
452
|
+
const result = await orchestrator.run();
|
|
453
|
+
expect(result.success).toBe(true);
|
|
454
|
+
expect(result.created).toBeUndefined();
|
|
455
|
+
});
|
|
456
|
+
});
|
|
457
|
+
describe('Bidirectional Migration', () => {
|
|
458
|
+
it('should support round-trip migration ChatGPT → Claude → ChatGPT', async () => {
|
|
459
|
+
const originalBundle = {
|
|
460
|
+
version: '1.0',
|
|
461
|
+
id: 'bundle_roundtrip',
|
|
462
|
+
source: {
|
|
463
|
+
platform: 'chatgpt',
|
|
464
|
+
extractedAt: new Date().toISOString(),
|
|
465
|
+
extractorVersion: '1.0.0',
|
|
466
|
+
},
|
|
467
|
+
contents: {
|
|
468
|
+
instructions: {
|
|
469
|
+
content: 'I am a helpful assistant for a software engineer.',
|
|
470
|
+
length: 50,
|
|
471
|
+
},
|
|
472
|
+
memories: {
|
|
473
|
+
entries: [
|
|
474
|
+
{
|
|
475
|
+
id: 'mem_rt',
|
|
476
|
+
content: 'User prefers detailed explanations',
|
|
477
|
+
createdAt: new Date().toISOString(),
|
|
478
|
+
},
|
|
479
|
+
],
|
|
480
|
+
count: 1,
|
|
481
|
+
},
|
|
482
|
+
},
|
|
483
|
+
metadata: {
|
|
484
|
+
totalItems: 2,
|
|
485
|
+
itemCounts: {
|
|
486
|
+
instructions: 1,
|
|
487
|
+
memories: 1,
|
|
488
|
+
conversations: 0,
|
|
489
|
+
files: 0,
|
|
490
|
+
customBots: 0,
|
|
491
|
+
},
|
|
492
|
+
warnings: [],
|
|
493
|
+
errors: [],
|
|
494
|
+
},
|
|
495
|
+
};
|
|
496
|
+
// First migration: ChatGPT → Claude
|
|
497
|
+
registerMockPlugins({
|
|
498
|
+
extractors: { chatgpt: { customBundle: originalBundle } },
|
|
499
|
+
});
|
|
500
|
+
registerTransformer('chatgpt', 'claude', () => new ChatGPTToClaudeTransformer());
|
|
501
|
+
registerTransformer('claude', 'chatgpt', () => new ClaudeToChatGPTTransformer());
|
|
502
|
+
const orchestrator1 = new MigrationOrchestrator('chatgpt', 'claude', {
|
|
503
|
+
workDir: join(testWorkDir, 'migration-roundtrip-1'),
|
|
504
|
+
});
|
|
505
|
+
const result1 = await orchestrator1.run();
|
|
506
|
+
expect(result1.success).toBe(true);
|
|
507
|
+
const claudeBundle = orchestrator1.getBundle();
|
|
508
|
+
expect(claudeBundle.target?.platform).toBe('claude');
|
|
509
|
+
// Second migration: Claude → ChatGPT (using the transformed bundle)
|
|
510
|
+
registerMockPlugins({
|
|
511
|
+
extractors: {
|
|
512
|
+
claude: {
|
|
513
|
+
customBundle: {
|
|
514
|
+
...claudeBundle,
|
|
515
|
+
source: {
|
|
516
|
+
platform: 'claude',
|
|
517
|
+
extractedAt: new Date().toISOString(),
|
|
518
|
+
extractorVersion: '1.0.0',
|
|
519
|
+
},
|
|
520
|
+
},
|
|
521
|
+
},
|
|
522
|
+
},
|
|
523
|
+
});
|
|
524
|
+
const orchestrator2 = new MigrationOrchestrator('claude', 'chatgpt', {
|
|
525
|
+
workDir: join(testWorkDir, 'migration-roundtrip-2'),
|
|
526
|
+
});
|
|
527
|
+
const result2 = await orchestrator2.run();
|
|
528
|
+
expect(result2.success).toBe(true);
|
|
529
|
+
const finalBundle = orchestrator2.getBundle();
|
|
530
|
+
expect(finalBundle.target?.platform).toBe('chatgpt');
|
|
531
|
+
// Core data should be preserved
|
|
532
|
+
expect(finalBundle.contents.instructions).toBeDefined();
|
|
533
|
+
});
|
|
534
|
+
});
|
|
535
|
+
});
|
|
536
|
+
//# sourceMappingURL=integration.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"integration.test.js","sourceRoot":"","sources":["../../../src/migrate/__tests__/integration.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"performance.test.d.ts","sourceRoot":"","sources":["../../../src/migrate/__tests__/performance.test.ts"],"names":[],"mappings":"AAAA;;;;GAIG"}
|