@savestate/cli 0.6.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__/claude-loader.test.d.ts +7 -0
- package/dist/migrate/__tests__/claude-loader.test.d.ts.map +1 -0
- package/dist/migrate/__tests__/claude-loader.test.js +544 -0
- package/dist/migrate/__tests__/claude-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__/orchestrator.test.d.ts +8 -0
- package/dist/migrate/__tests__/orchestrator.test.d.ts.map +1 -0
- package/dist/migrate/__tests__/orchestrator.test.js +355 -0
- package/dist/migrate/__tests__/orchestrator.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__/chatgpt.test.d.ts +12 -0
- package/dist/migrate/extractors/__tests__/chatgpt.test.d.ts.map +1 -0
- package/dist/migrate/extractors/__tests__/chatgpt.test.js +522 -0
- package/dist/migrate/extractors/__tests__/chatgpt.test.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/chatgpt.d.ts +70 -0
- package/dist/migrate/extractors/chatgpt.d.ts.map +1 -0
- package/dist/migrate/extractors/chatgpt.js +791 -0
- package/dist/migrate/extractors/chatgpt.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 +6 -4
- package/dist/migrate/extractors/registry.js.map +1 -1
- package/dist/migrate/index.d.ts +6 -1
- package/dist/migrate/index.d.ts.map +1 -1
- package/dist/migrate/index.js +12 -1
- package/dist/migrate/index.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/claude.d.ts +61 -0
- package/dist/migrate/loaders/claude.d.ts.map +1 -0
- package/dist/migrate/loaders/claude.js +433 -0
- package/dist/migrate/loaders/claude.js.map +1 -0
- package/dist/migrate/loaders/registry.js +6 -4
- package/dist/migrate/loaders/registry.js.map +1 -1
- package/dist/migrate/orchestrator.d.ts +75 -1
- package/dist/migrate/orchestrator.d.ts.map +1 -1
- package/dist/migrate/orchestrator.js +215 -19
- package/dist/migrate/orchestrator.js.map +1 -1
- package/dist/migrate/testing/index.d.ts +28 -0
- package/dist/migrate/testing/index.d.ts.map +1 -0
- package/dist/migrate/testing/index.js +55 -0
- package/dist/migrate/testing/index.js.map +1 -0
- package/dist/migrate/testing/mock-extractor.d.ts +30 -0
- package/dist/migrate/testing/mock-extractor.d.ts.map +1 -0
- package/dist/migrate/testing/mock-extractor.js +137 -0
- package/dist/migrate/testing/mock-extractor.js.map +1 -0
- package/dist/migrate/testing/mock-loader.d.ts +36 -0
- package/dist/migrate/testing/mock-loader.d.ts.map +1 -0
- package/dist/migrate/testing/mock-loader.js +81 -0
- package/dist/migrate/testing/mock-loader.js.map +1 -0
- package/dist/migrate/testing/mock-transformer.d.ts +26 -0
- package/dist/migrate/testing/mock-transformer.d.ts.map +1 -0
- package/dist/migrate/testing/mock-transformer.js +185 -0
- package/dist/migrate/testing/mock-transformer.js.map +1 -0
- package/dist/migrate/transformers/__tests__/chatgpt-to-claude.test.d.ts +5 -0
- package/dist/migrate/transformers/__tests__/chatgpt-to-claude.test.d.ts.map +1 -0
- package/dist/migrate/transformers/__tests__/chatgpt-to-claude.test.js +333 -0
- package/dist/migrate/transformers/__tests__/chatgpt-to-claude.test.js.map +1 -0
- package/dist/migrate/transformers/__tests__/claude-to-chatgpt.test.d.ts +5 -0
- package/dist/migrate/transformers/__tests__/claude-to-chatgpt.test.d.ts.map +1 -0
- package/dist/migrate/transformers/__tests__/claude-to-chatgpt.test.js +333 -0
- package/dist/migrate/transformers/__tests__/claude-to-chatgpt.test.js.map +1 -0
- package/dist/migrate/transformers/__tests__/rules.test.d.ts +5 -0
- package/dist/migrate/transformers/__tests__/rules.test.d.ts.map +1 -0
- package/dist/migrate/transformers/__tests__/rules.test.js +375 -0
- package/dist/migrate/transformers/__tests__/rules.test.js.map +1 -0
- package/dist/migrate/transformers/chatgpt-to-claude.d.ts +40 -0
- package/dist/migrate/transformers/chatgpt-to-claude.d.ts.map +1 -0
- package/dist/migrate/transformers/chatgpt-to-claude.js +443 -0
- package/dist/migrate/transformers/chatgpt-to-claude.js.map +1 -0
- package/dist/migrate/transformers/claude-to-chatgpt.d.ts +41 -0
- package/dist/migrate/transformers/claude-to-chatgpt.d.ts.map +1 -0
- package/dist/migrate/transformers/claude-to-chatgpt.js +532 -0
- package/dist/migrate/transformers/claude-to-chatgpt.js.map +1 -0
- package/dist/migrate/transformers/registry.js +6 -4
- package/dist/migrate/transformers/registry.js.map +1 -1
- package/dist/migrate/transformers/rules.d.ts +168 -0
- package/dist/migrate/transformers/rules.d.ts.map +1 -0
- package/dist/migrate/transformers/rules.js +487 -0
- package/dist/migrate/transformers/rules.js.map +1 -0
- package/dist/migrate/types.d.ts +2 -0
- package/dist/migrate/types.d.ts.map +1 -1
- package/package.json +7 -2
|
@@ -0,0 +1,333 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tests for ChatGPT → Claude Transformer
|
|
3
|
+
*/
|
|
4
|
+
import { describe, it, expect, vi } from 'vitest';
|
|
5
|
+
import { ChatGPTToClaudeTransformer } from '../chatgpt-to-claude.js';
|
|
6
|
+
// ─── Test Fixtures ───────────────────────────────────────────
|
|
7
|
+
function createChatGPTBundle(overrides = {}) {
|
|
8
|
+
return {
|
|
9
|
+
version: '1.0',
|
|
10
|
+
id: 'test-chatgpt-bundle',
|
|
11
|
+
source: {
|
|
12
|
+
platform: 'chatgpt',
|
|
13
|
+
extractedAt: '2024-01-15T10:00:00Z',
|
|
14
|
+
extractorVersion: '1.0.0',
|
|
15
|
+
},
|
|
16
|
+
contents: {
|
|
17
|
+
instructions: {
|
|
18
|
+
content: '## About Me\nI am a developer.\n\n## How ChatGPT Should Respond\nBe concise.',
|
|
19
|
+
length: 70,
|
|
20
|
+
},
|
|
21
|
+
memories: {
|
|
22
|
+
entries: [
|
|
23
|
+
{ id: 'm1', content: 'User prefers TypeScript', createdAt: '2024-01-01' },
|
|
24
|
+
{ id: 'm2', content: 'User works on web apps', createdAt: '2024-01-02' },
|
|
25
|
+
],
|
|
26
|
+
count: 2,
|
|
27
|
+
},
|
|
28
|
+
conversations: {
|
|
29
|
+
path: 'conversations/',
|
|
30
|
+
count: 5,
|
|
31
|
+
messageCount: 100,
|
|
32
|
+
summaries: [
|
|
33
|
+
{
|
|
34
|
+
id: 'c1',
|
|
35
|
+
title: 'Project Planning',
|
|
36
|
+
messageCount: 20,
|
|
37
|
+
createdAt: '2024-01-10',
|
|
38
|
+
updatedAt: '2024-01-10',
|
|
39
|
+
keyPoints: ['Decided on React', 'Will use TypeScript'],
|
|
40
|
+
},
|
|
41
|
+
],
|
|
42
|
+
},
|
|
43
|
+
files: {
|
|
44
|
+
files: [
|
|
45
|
+
{
|
|
46
|
+
id: 'f1',
|
|
47
|
+
filename: 'readme.md',
|
|
48
|
+
mimeType: 'text/markdown',
|
|
49
|
+
size: 1024,
|
|
50
|
+
path: 'files/readme.md',
|
|
51
|
+
},
|
|
52
|
+
],
|
|
53
|
+
count: 1,
|
|
54
|
+
totalSize: 1024,
|
|
55
|
+
},
|
|
56
|
+
customBots: {
|
|
57
|
+
bots: [
|
|
58
|
+
{
|
|
59
|
+
id: 'gpt1',
|
|
60
|
+
name: 'Code Helper',
|
|
61
|
+
description: 'Helps with code',
|
|
62
|
+
instructions: 'You assist with coding tasks.',
|
|
63
|
+
capabilities: ['code_interpreter'],
|
|
64
|
+
createdAt: '2024-01-01',
|
|
65
|
+
},
|
|
66
|
+
],
|
|
67
|
+
count: 1,
|
|
68
|
+
},
|
|
69
|
+
...overrides,
|
|
70
|
+
},
|
|
71
|
+
metadata: {
|
|
72
|
+
totalItems: 10,
|
|
73
|
+
itemCounts: {
|
|
74
|
+
instructions: 1,
|
|
75
|
+
memories: 2,
|
|
76
|
+
conversations: 5,
|
|
77
|
+
files: 1,
|
|
78
|
+
customBots: 1,
|
|
79
|
+
},
|
|
80
|
+
warnings: [],
|
|
81
|
+
errors: [],
|
|
82
|
+
},
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
const defaultTransformOptions = {
|
|
86
|
+
overflowStrategy: 'truncate',
|
|
87
|
+
onProgress: vi.fn(),
|
|
88
|
+
};
|
|
89
|
+
// ─── Transformer Properties ──────────────────────────────────
|
|
90
|
+
describe('ChatGPTToClaudeTransformer', () => {
|
|
91
|
+
describe('properties', () => {
|
|
92
|
+
it('has correct source and target platforms', () => {
|
|
93
|
+
const transformer = new ChatGPTToClaudeTransformer();
|
|
94
|
+
expect(transformer.source).toBe('chatgpt');
|
|
95
|
+
expect(transformer.target).toBe('claude');
|
|
96
|
+
expect(transformer.version).toBe('1.0.0');
|
|
97
|
+
});
|
|
98
|
+
});
|
|
99
|
+
// ─── Analysis ────────────────────────────────────────────
|
|
100
|
+
describe('analyze', () => {
|
|
101
|
+
it('returns compatibility report for valid bundle', async () => {
|
|
102
|
+
const transformer = new ChatGPTToClaudeTransformer();
|
|
103
|
+
const bundle = createChatGPTBundle();
|
|
104
|
+
const report = await transformer.analyze(bundle);
|
|
105
|
+
expect(report.source).toBe('chatgpt');
|
|
106
|
+
expect(report.target).toBe('claude');
|
|
107
|
+
expect(report.summary.total).toBeGreaterThan(0);
|
|
108
|
+
expect(report.generatedAt).toBeDefined();
|
|
109
|
+
});
|
|
110
|
+
it('marks short instructions as perfect', async () => {
|
|
111
|
+
const transformer = new ChatGPTToClaudeTransformer();
|
|
112
|
+
const bundle = createChatGPTBundle({
|
|
113
|
+
instructions: { content: 'Short instructions', length: 20 },
|
|
114
|
+
});
|
|
115
|
+
const report = await transformer.analyze(bundle);
|
|
116
|
+
const instructionItem = report.items.find((i) => i.type === 'instructions');
|
|
117
|
+
expect(instructionItem?.status).toBe('perfect');
|
|
118
|
+
});
|
|
119
|
+
it('marks long instructions as adapted', async () => {
|
|
120
|
+
const transformer = new ChatGPTToClaudeTransformer();
|
|
121
|
+
const bundle = createChatGPTBundle({
|
|
122
|
+
instructions: { content: 'A'.repeat(10000), length: 10000 },
|
|
123
|
+
});
|
|
124
|
+
const report = await transformer.analyze(bundle);
|
|
125
|
+
const instructionItem = report.items.find((i) => i.type === 'instructions');
|
|
126
|
+
expect(instructionItem?.status).toBe('adapted');
|
|
127
|
+
});
|
|
128
|
+
it('marks memories as adapted (Claude uses docs)', async () => {
|
|
129
|
+
const transformer = new ChatGPTToClaudeTransformer();
|
|
130
|
+
const bundle = createChatGPTBundle();
|
|
131
|
+
const report = await transformer.analyze(bundle);
|
|
132
|
+
const memoryItem = report.items.find((i) => i.type === 'memory');
|
|
133
|
+
expect(memoryItem?.status).toBe('adapted');
|
|
134
|
+
expect(memoryItem?.action).toContain('document');
|
|
135
|
+
});
|
|
136
|
+
it('marks oversized files as incompatible', async () => {
|
|
137
|
+
const transformer = new ChatGPTToClaudeTransformer();
|
|
138
|
+
const bundle = createChatGPTBundle({
|
|
139
|
+
files: {
|
|
140
|
+
files: [
|
|
141
|
+
{
|
|
142
|
+
id: 'big',
|
|
143
|
+
filename: 'huge.zip',
|
|
144
|
+
mimeType: 'application/zip',
|
|
145
|
+
size: 100 * 1024 * 1024, // 100MB, over Claude's 32MB limit
|
|
146
|
+
path: 'files/huge.zip',
|
|
147
|
+
},
|
|
148
|
+
],
|
|
149
|
+
count: 1,
|
|
150
|
+
totalSize: 100 * 1024 * 1024,
|
|
151
|
+
},
|
|
152
|
+
});
|
|
153
|
+
const report = await transformer.analyze(bundle);
|
|
154
|
+
const fileItem = report.items.find((i) => i.type === 'file' && i.status === 'incompatible');
|
|
155
|
+
expect(fileItem).toBeDefined();
|
|
156
|
+
expect(fileItem?.reason).toContain('exceeds');
|
|
157
|
+
});
|
|
158
|
+
it('provides helpful recommendations', async () => {
|
|
159
|
+
const transformer = new ChatGPTToClaudeTransformer();
|
|
160
|
+
const bundle = createChatGPTBundle({
|
|
161
|
+
instructions: { content: 'Short', length: 5 },
|
|
162
|
+
});
|
|
163
|
+
const report = await transformer.analyze(bundle);
|
|
164
|
+
expect(report.recommendations.some((r) => r.includes('longer system prompts'))).toBe(true);
|
|
165
|
+
});
|
|
166
|
+
it('calculates feasibility based on compatibility', async () => {
|
|
167
|
+
const transformer = new ChatGPTToClaudeTransformer();
|
|
168
|
+
// Easy case - all perfect
|
|
169
|
+
const easyBundle = createChatGPTBundle({
|
|
170
|
+
instructions: { content: 'Short', length: 5 },
|
|
171
|
+
memories: undefined,
|
|
172
|
+
customBots: undefined,
|
|
173
|
+
});
|
|
174
|
+
const easyReport = await transformer.analyze(easyBundle);
|
|
175
|
+
expect(['easy', 'moderate']).toContain(easyReport.feasibility);
|
|
176
|
+
// Complex case - lots of adaptations
|
|
177
|
+
const complexBundle = createChatGPTBundle({
|
|
178
|
+
instructions: { content: 'A'.repeat(10000), length: 10000 },
|
|
179
|
+
files: {
|
|
180
|
+
files: [
|
|
181
|
+
{ id: '1', filename: 'huge.zip', mimeType: 'application/zip', size: 100 * 1024 * 1024, path: '' },
|
|
182
|
+
],
|
|
183
|
+
count: 1,
|
|
184
|
+
totalSize: 100 * 1024 * 1024,
|
|
185
|
+
},
|
|
186
|
+
});
|
|
187
|
+
const complexReport = await transformer.analyze(complexBundle);
|
|
188
|
+
expect(['moderate', 'complex', 'partial']).toContain(complexReport.feasibility);
|
|
189
|
+
});
|
|
190
|
+
});
|
|
191
|
+
// ─── Transformation ──────────────────────────────────────
|
|
192
|
+
describe('transform', () => {
|
|
193
|
+
it('transforms valid ChatGPT bundle to Claude format', async () => {
|
|
194
|
+
const transformer = new ChatGPTToClaudeTransformer();
|
|
195
|
+
const bundle = createChatGPTBundle();
|
|
196
|
+
const result = await transformer.transform(bundle, defaultTransformOptions);
|
|
197
|
+
expect(result.target?.platform).toBe('claude');
|
|
198
|
+
expect(result.target?.transformerVersion).toBe('1.0.0');
|
|
199
|
+
expect(result.target?.transformedAt).toBeDefined();
|
|
200
|
+
});
|
|
201
|
+
it('rejects non-ChatGPT bundles', async () => {
|
|
202
|
+
const transformer = new ChatGPTToClaudeTransformer();
|
|
203
|
+
const bundle = createChatGPTBundle();
|
|
204
|
+
bundle.source.platform = 'claude';
|
|
205
|
+
await expect(transformer.transform(bundle, defaultTransformOptions)).rejects.toThrow('Expected ChatGPT bundle');
|
|
206
|
+
});
|
|
207
|
+
it('converts ChatGPT instructions to Claude system prompt format', async () => {
|
|
208
|
+
const transformer = new ChatGPTToClaudeTransformer();
|
|
209
|
+
const bundle = createChatGPTBundle({
|
|
210
|
+
instructions: {
|
|
211
|
+
content: '## About Me\nI am a developer.\n\n## How ChatGPT Should Respond\nBe helpful.',
|
|
212
|
+
length: 65,
|
|
213
|
+
},
|
|
214
|
+
});
|
|
215
|
+
const result = await transformer.transform(bundle, defaultTransformOptions);
|
|
216
|
+
expect(result.contents.instructions?.content).toContain('User Context');
|
|
217
|
+
expect(result.contents.instructions?.content).toContain('Response Guidelines');
|
|
218
|
+
});
|
|
219
|
+
it('truncates oversized instructions with truncate strategy', async () => {
|
|
220
|
+
const transformer = new ChatGPTToClaudeTransformer();
|
|
221
|
+
const bundle = createChatGPTBundle({
|
|
222
|
+
instructions: { content: 'A'.repeat(10000), length: 10000 },
|
|
223
|
+
});
|
|
224
|
+
const result = await transformer.transform(bundle, {
|
|
225
|
+
...defaultTransformOptions,
|
|
226
|
+
overflowStrategy: 'truncate',
|
|
227
|
+
});
|
|
228
|
+
expect(result.contents.instructions.length).toBeLessThanOrEqual(8000);
|
|
229
|
+
expect(result.metadata.warnings.length).toBeGreaterThan(0);
|
|
230
|
+
});
|
|
231
|
+
it('throws with error strategy on overflow', async () => {
|
|
232
|
+
const transformer = new ChatGPTToClaudeTransformer();
|
|
233
|
+
const bundle = createChatGPTBundle({
|
|
234
|
+
instructions: { content: 'A'.repeat(10000), length: 10000 },
|
|
235
|
+
});
|
|
236
|
+
await expect(transformer.transform(bundle, {
|
|
237
|
+
...defaultTransformOptions,
|
|
238
|
+
overflowStrategy: 'error',
|
|
239
|
+
})).rejects.toThrow('exceed limit');
|
|
240
|
+
});
|
|
241
|
+
it('preserves memories with category tagging', async () => {
|
|
242
|
+
const transformer = new ChatGPTToClaudeTransformer();
|
|
243
|
+
const bundle = createChatGPTBundle();
|
|
244
|
+
const result = await transformer.transform(bundle, defaultTransformOptions);
|
|
245
|
+
expect(result.contents.memories).toBeDefined();
|
|
246
|
+
expect(result.contents.memories.count).toBe(2);
|
|
247
|
+
});
|
|
248
|
+
it('warns about large memory counts', async () => {
|
|
249
|
+
const transformer = new ChatGPTToClaudeTransformer();
|
|
250
|
+
const bundle = createChatGPTBundle({
|
|
251
|
+
memories: {
|
|
252
|
+
entries: Array.from({ length: 60 }, (_, i) => ({
|
|
253
|
+
id: `m${i}`,
|
|
254
|
+
content: `Memory ${i}`,
|
|
255
|
+
createdAt: '2024-01-01',
|
|
256
|
+
})),
|
|
257
|
+
count: 60,
|
|
258
|
+
},
|
|
259
|
+
});
|
|
260
|
+
const result = await transformer.transform(bundle, defaultTransformOptions);
|
|
261
|
+
expect(result.metadata.warnings.some((w) => w.includes('Large number of memories'))).toBe(true);
|
|
262
|
+
});
|
|
263
|
+
it('filters out oversized files', async () => {
|
|
264
|
+
const transformer = new ChatGPTToClaudeTransformer();
|
|
265
|
+
const bundle = createChatGPTBundle({
|
|
266
|
+
files: {
|
|
267
|
+
files: [
|
|
268
|
+
{ id: '1', filename: 'small.txt', mimeType: 'text/plain', size: 1024, path: 'files/small.txt' },
|
|
269
|
+
{ id: '2', filename: 'huge.zip', mimeType: 'application/zip', size: 100 * 1024 * 1024, path: 'files/huge.zip' },
|
|
270
|
+
],
|
|
271
|
+
count: 2,
|
|
272
|
+
totalSize: 100 * 1024 * 1024 + 1024,
|
|
273
|
+
},
|
|
274
|
+
});
|
|
275
|
+
const result = await transformer.transform(bundle, defaultTransformOptions);
|
|
276
|
+
expect(result.contents.files.count).toBe(1);
|
|
277
|
+
expect(result.contents.files.files[0].filename).toBe('small.txt');
|
|
278
|
+
expect(result.metadata.warnings.some((w) => w.includes('huge.zip'))).toBe(true);
|
|
279
|
+
});
|
|
280
|
+
it('maps GPTs to project configurations', async () => {
|
|
281
|
+
const transformer = new ChatGPTToClaudeTransformer();
|
|
282
|
+
const bundle = createChatGPTBundle();
|
|
283
|
+
const result = await transformer.transform(bundle, defaultTransformOptions);
|
|
284
|
+
expect(result.contents.customBots).toBeDefined();
|
|
285
|
+
expect(result.contents.customBots.count).toBe(1);
|
|
286
|
+
});
|
|
287
|
+
it('warns about multiple GPTs', async () => {
|
|
288
|
+
const transformer = new ChatGPTToClaudeTransformer();
|
|
289
|
+
const bundle = createChatGPTBundle({
|
|
290
|
+
customBots: {
|
|
291
|
+
bots: [
|
|
292
|
+
{ id: '1', name: 'GPT 1', instructions: 'First', createdAt: '2024-01-01' },
|
|
293
|
+
{ id: '2', name: 'GPT 2', instructions: 'Second', createdAt: '2024-01-01' },
|
|
294
|
+
],
|
|
295
|
+
count: 2,
|
|
296
|
+
},
|
|
297
|
+
});
|
|
298
|
+
const result = await transformer.transform(bundle, defaultTransformOptions);
|
|
299
|
+
expect(result.metadata.warnings.some((w) => w.includes('2 GPTs'))).toBe(true);
|
|
300
|
+
});
|
|
301
|
+
it('calls progress callback during transformation', async () => {
|
|
302
|
+
const transformer = new ChatGPTToClaudeTransformer();
|
|
303
|
+
const bundle = createChatGPTBundle();
|
|
304
|
+
const onProgress = vi.fn();
|
|
305
|
+
await transformer.transform(bundle, { ...defaultTransformOptions, onProgress });
|
|
306
|
+
expect(onProgress).toHaveBeenCalled();
|
|
307
|
+
// Check that progress reaches 100%
|
|
308
|
+
expect(onProgress).toHaveBeenCalledWith(1.0, expect.any(String));
|
|
309
|
+
});
|
|
310
|
+
it('preserves extras from source bundle', async () => {
|
|
311
|
+
const transformer = new ChatGPTToClaudeTransformer();
|
|
312
|
+
const bundle = createChatGPTBundle();
|
|
313
|
+
bundle.contents.extras = { customData: 'preserved' };
|
|
314
|
+
const result = await transformer.transform(bundle, defaultTransformOptions);
|
|
315
|
+
expect(result.contents.extras?.customData).toBe('preserved');
|
|
316
|
+
});
|
|
317
|
+
it('handles empty bundle contents gracefully', async () => {
|
|
318
|
+
const transformer = new ChatGPTToClaudeTransformer();
|
|
319
|
+
const bundle = createChatGPTBundle({
|
|
320
|
+
instructions: undefined,
|
|
321
|
+
memories: undefined,
|
|
322
|
+
conversations: undefined,
|
|
323
|
+
files: undefined,
|
|
324
|
+
customBots: undefined,
|
|
325
|
+
});
|
|
326
|
+
const result = await transformer.transform(bundle, defaultTransformOptions);
|
|
327
|
+
expect(result.target?.platform).toBe('claude');
|
|
328
|
+
expect(result.contents.instructions).toBeUndefined();
|
|
329
|
+
expect(result.contents.memories).toBeUndefined();
|
|
330
|
+
});
|
|
331
|
+
});
|
|
332
|
+
});
|
|
333
|
+
//# sourceMappingURL=chatgpt-to-claude.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chatgpt-to-claude.test.js","sourceRoot":"","sources":["../../../../src/migrate/transformers/__tests__/chatgpt-to-claude.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"claude-to-chatgpt.test.d.ts","sourceRoot":"","sources":["../../../../src/migrate/transformers/__tests__/claude-to-chatgpt.test.ts"],"names":[],"mappings":"AAAA;;GAEG"}
|