@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 Claude → ChatGPT Transformer
|
|
3
|
+
*/
|
|
4
|
+
import { describe, it, expect, vi } from 'vitest';
|
|
5
|
+
import { ClaudeToChatGPTTransformer } from '../claude-to-chatgpt.js';
|
|
6
|
+
// ─── Test Fixtures ───────────────────────────────────────────
|
|
7
|
+
function createClaudeBundle(overrides = {}) {
|
|
8
|
+
return {
|
|
9
|
+
version: '1.0',
|
|
10
|
+
id: 'test-claude-bundle',
|
|
11
|
+
source: {
|
|
12
|
+
platform: 'claude',
|
|
13
|
+
extractedAt: '2024-01-15T10:00:00Z',
|
|
14
|
+
extractorVersion: '1.0.0',
|
|
15
|
+
},
|
|
16
|
+
contents: {
|
|
17
|
+
instructions: {
|
|
18
|
+
content: `# User Context
|
|
19
|
+
I am a senior software engineer working on enterprise applications.
|
|
20
|
+
|
|
21
|
+
# Response Guidelines
|
|
22
|
+
Be precise and technical. Use code examples when helpful.`,
|
|
23
|
+
length: 150,
|
|
24
|
+
},
|
|
25
|
+
memories: {
|
|
26
|
+
entries: [
|
|
27
|
+
{ id: 'm1', content: 'User prefers TypeScript over JavaScript', createdAt: '2024-01-01', category: 'Preferences' },
|
|
28
|
+
{ id: 'm2', content: 'User works on a team of 10 developers', createdAt: '2024-01-02', category: 'Work' },
|
|
29
|
+
],
|
|
30
|
+
count: 2,
|
|
31
|
+
},
|
|
32
|
+
conversations: {
|
|
33
|
+
path: 'conversations/',
|
|
34
|
+
count: 3,
|
|
35
|
+
messageCount: 50,
|
|
36
|
+
summaries: [
|
|
37
|
+
{
|
|
38
|
+
id: 'c1',
|
|
39
|
+
title: 'Architecture Review',
|
|
40
|
+
messageCount: 15,
|
|
41
|
+
createdAt: '2024-01-10',
|
|
42
|
+
updatedAt: '2024-01-10',
|
|
43
|
+
keyPoints: ['Chose microservices architecture', 'Will use Kubernetes'],
|
|
44
|
+
},
|
|
45
|
+
],
|
|
46
|
+
},
|
|
47
|
+
files: {
|
|
48
|
+
files: [
|
|
49
|
+
{
|
|
50
|
+
id: 'f1',
|
|
51
|
+
filename: 'architecture.md',
|
|
52
|
+
mimeType: 'text/markdown',
|
|
53
|
+
size: 2048,
|
|
54
|
+
path: 'files/architecture.md',
|
|
55
|
+
},
|
|
56
|
+
],
|
|
57
|
+
count: 1,
|
|
58
|
+
totalSize: 2048,
|
|
59
|
+
},
|
|
60
|
+
customBots: {
|
|
61
|
+
bots: [
|
|
62
|
+
{
|
|
63
|
+
id: 'proj1',
|
|
64
|
+
name: 'Backend Project',
|
|
65
|
+
description: 'Project for backend development',
|
|
66
|
+
instructions: 'Assist with Node.js backend development.',
|
|
67
|
+
createdAt: '2024-01-01',
|
|
68
|
+
},
|
|
69
|
+
],
|
|
70
|
+
count: 1,
|
|
71
|
+
},
|
|
72
|
+
...overrides,
|
|
73
|
+
},
|
|
74
|
+
metadata: {
|
|
75
|
+
totalItems: 8,
|
|
76
|
+
itemCounts: {
|
|
77
|
+
instructions: 1,
|
|
78
|
+
memories: 2,
|
|
79
|
+
conversations: 3,
|
|
80
|
+
files: 1,
|
|
81
|
+
customBots: 1,
|
|
82
|
+
},
|
|
83
|
+
warnings: [],
|
|
84
|
+
errors: [],
|
|
85
|
+
},
|
|
86
|
+
};
|
|
87
|
+
}
|
|
88
|
+
const defaultTransformOptions = {
|
|
89
|
+
overflowStrategy: 'truncate',
|
|
90
|
+
onProgress: vi.fn(),
|
|
91
|
+
};
|
|
92
|
+
// ─── Transformer Properties ──────────────────────────────────
|
|
93
|
+
describe('ClaudeToChatGPTTransformer', () => {
|
|
94
|
+
describe('properties', () => {
|
|
95
|
+
it('has correct source and target platforms', () => {
|
|
96
|
+
const transformer = new ClaudeToChatGPTTransformer();
|
|
97
|
+
expect(transformer.source).toBe('claude');
|
|
98
|
+
expect(transformer.target).toBe('chatgpt');
|
|
99
|
+
expect(transformer.version).toBe('1.0.0');
|
|
100
|
+
});
|
|
101
|
+
});
|
|
102
|
+
// ─── Analysis ────────────────────────────────────────────
|
|
103
|
+
describe('analyze', () => {
|
|
104
|
+
it('returns compatibility report for valid bundle', async () => {
|
|
105
|
+
const transformer = new ClaudeToChatGPTTransformer();
|
|
106
|
+
const bundle = createClaudeBundle();
|
|
107
|
+
const report = await transformer.analyze(bundle);
|
|
108
|
+
expect(report.source).toBe('claude');
|
|
109
|
+
expect(report.target).toBe('chatgpt');
|
|
110
|
+
expect(report.summary.total).toBeGreaterThan(0);
|
|
111
|
+
});
|
|
112
|
+
it('marks short system prompt as perfect', async () => {
|
|
113
|
+
const transformer = new ClaudeToChatGPTTransformer();
|
|
114
|
+
const bundle = createClaudeBundle({
|
|
115
|
+
instructions: { content: 'Be helpful and concise.', length: 25 },
|
|
116
|
+
});
|
|
117
|
+
const report = await transformer.analyze(bundle);
|
|
118
|
+
const item = report.items.find((i) => i.type === 'instructions');
|
|
119
|
+
expect(item?.status).toBe('perfect');
|
|
120
|
+
});
|
|
121
|
+
it('marks long system prompt as adapted', async () => {
|
|
122
|
+
const transformer = new ClaudeToChatGPTTransformer();
|
|
123
|
+
const bundle = createClaudeBundle({
|
|
124
|
+
instructions: { content: 'A'.repeat(2000), length: 2000 },
|
|
125
|
+
});
|
|
126
|
+
const report = await transformer.analyze(bundle);
|
|
127
|
+
const item = report.items.find((i) => i.type === 'instructions');
|
|
128
|
+
expect(item?.status).toBe('adapted');
|
|
129
|
+
expect(item?.reason).toContain('overflow');
|
|
130
|
+
});
|
|
131
|
+
it('marks memories within limit as perfect', async () => {
|
|
132
|
+
const transformer = new ClaudeToChatGPTTransformer();
|
|
133
|
+
const bundle = createClaudeBundle({
|
|
134
|
+
memories: {
|
|
135
|
+
entries: Array.from({ length: 50 }, (_, i) => ({
|
|
136
|
+
id: `m${i}`,
|
|
137
|
+
content: `Memory ${i}`,
|
|
138
|
+
createdAt: '2024-01-01',
|
|
139
|
+
})),
|
|
140
|
+
count: 50,
|
|
141
|
+
},
|
|
142
|
+
});
|
|
143
|
+
const report = await transformer.analyze(bundle);
|
|
144
|
+
const item = report.items.find((i) => i.type === 'memory');
|
|
145
|
+
expect(item?.status).toBe('perfect');
|
|
146
|
+
});
|
|
147
|
+
it('marks memories exceeding limit as adapted', async () => {
|
|
148
|
+
const transformer = new ClaudeToChatGPTTransformer();
|
|
149
|
+
const bundle = createClaudeBundle({
|
|
150
|
+
memories: {
|
|
151
|
+
entries: Array.from({ length: 150 }, (_, i) => ({
|
|
152
|
+
id: `m${i}`,
|
|
153
|
+
content: `Memory ${i}`,
|
|
154
|
+
createdAt: '2024-01-01',
|
|
155
|
+
})),
|
|
156
|
+
count: 150,
|
|
157
|
+
},
|
|
158
|
+
});
|
|
159
|
+
const report = await transformer.analyze(bundle);
|
|
160
|
+
const item = report.items.find((i) => i.type === 'memory');
|
|
161
|
+
expect(item?.status).toBe('adapted');
|
|
162
|
+
});
|
|
163
|
+
it('marks conversations as adapted (no import support)', async () => {
|
|
164
|
+
const transformer = new ClaudeToChatGPTTransformer();
|
|
165
|
+
const bundle = createClaudeBundle();
|
|
166
|
+
const report = await transformer.analyze(bundle);
|
|
167
|
+
const item = report.items.find((i) => i.type === 'conversation');
|
|
168
|
+
expect(item?.status).toBe('adapted');
|
|
169
|
+
expect(item?.reason).toContain('not supported');
|
|
170
|
+
});
|
|
171
|
+
it('provides recommendations for long system prompts', async () => {
|
|
172
|
+
const transformer = new ClaudeToChatGPTTransformer();
|
|
173
|
+
const bundle = createClaudeBundle({
|
|
174
|
+
instructions: { content: 'A'.repeat(2000), length: 2000 },
|
|
175
|
+
});
|
|
176
|
+
const report = await transformer.analyze(bundle);
|
|
177
|
+
expect(report.recommendations.some((r) => r.includes('1500'))).toBe(true);
|
|
178
|
+
expect(report.recommendations.some((r) => r.includes('GPT'))).toBe(true);
|
|
179
|
+
});
|
|
180
|
+
});
|
|
181
|
+
// ─── Transformation ──────────────────────────────────────
|
|
182
|
+
describe('transform', () => {
|
|
183
|
+
it('transforms valid Claude bundle to ChatGPT format', async () => {
|
|
184
|
+
const transformer = new ClaudeToChatGPTTransformer();
|
|
185
|
+
const bundle = createClaudeBundle();
|
|
186
|
+
const result = await transformer.transform(bundle, defaultTransformOptions);
|
|
187
|
+
expect(result.target?.platform).toBe('chatgpt');
|
|
188
|
+
expect(result.target?.transformerVersion).toBe('1.0.0');
|
|
189
|
+
});
|
|
190
|
+
it('rejects non-Claude bundles', async () => {
|
|
191
|
+
const transformer = new ClaudeToChatGPTTransformer();
|
|
192
|
+
const bundle = createClaudeBundle();
|
|
193
|
+
bundle.source.platform = 'chatgpt';
|
|
194
|
+
await expect(transformer.transform(bundle, defaultTransformOptions)).rejects.toThrow('Expected Claude bundle');
|
|
195
|
+
});
|
|
196
|
+
it('converts system prompt to ChatGPT custom instructions format', async () => {
|
|
197
|
+
const transformer = new ClaudeToChatGPTTransformer();
|
|
198
|
+
const bundle = createClaudeBundle();
|
|
199
|
+
const result = await transformer.transform(bundle, defaultTransformOptions);
|
|
200
|
+
const content = result.contents.instructions?.content || '';
|
|
201
|
+
expect(content).toContain('About Me');
|
|
202
|
+
expect(content).toContain('How ChatGPT Should Respond');
|
|
203
|
+
});
|
|
204
|
+
it('truncates oversized system prompt', async () => {
|
|
205
|
+
const transformer = new ClaudeToChatGPTTransformer();
|
|
206
|
+
const bundle = createClaudeBundle({
|
|
207
|
+
instructions: { content: 'A'.repeat(3000), length: 3000 },
|
|
208
|
+
});
|
|
209
|
+
const result = await transformer.transform(bundle, defaultTransformOptions);
|
|
210
|
+
expect(result.contents.instructions.length).toBeLessThanOrEqual(1500);
|
|
211
|
+
});
|
|
212
|
+
it('stores instruction overflow for reference', async () => {
|
|
213
|
+
const transformer = new ClaudeToChatGPTTransformer();
|
|
214
|
+
const bundle = createClaudeBundle({
|
|
215
|
+
instructions: { content: 'A'.repeat(3000), length: 3000 },
|
|
216
|
+
});
|
|
217
|
+
const result = await transformer.transform(bundle, defaultTransformOptions);
|
|
218
|
+
expect(result.contents.extras?.instructionOverflow).toBeDefined();
|
|
219
|
+
});
|
|
220
|
+
it('creates memories from instruction overflow when no memories exist', async () => {
|
|
221
|
+
const transformer = new ClaudeToChatGPTTransformer();
|
|
222
|
+
const bundle = createClaudeBundle({
|
|
223
|
+
instructions: { content: 'Important context. '.repeat(100), length: 1900 },
|
|
224
|
+
memories: undefined,
|
|
225
|
+
});
|
|
226
|
+
const result = await transformer.transform(bundle, defaultTransformOptions);
|
|
227
|
+
expect(result.contents.memories).toBeDefined();
|
|
228
|
+
expect(result.contents.memories.count).toBeGreaterThan(0);
|
|
229
|
+
});
|
|
230
|
+
it('respects memory limit', async () => {
|
|
231
|
+
const transformer = new ClaudeToChatGPTTransformer();
|
|
232
|
+
const bundle = createClaudeBundle({
|
|
233
|
+
memories: {
|
|
234
|
+
entries: Array.from({ length: 150 }, (_, i) => ({
|
|
235
|
+
id: `m${i}`,
|
|
236
|
+
content: `Memory ${i}`,
|
|
237
|
+
createdAt: '2024-01-01',
|
|
238
|
+
})),
|
|
239
|
+
count: 150,
|
|
240
|
+
},
|
|
241
|
+
});
|
|
242
|
+
const result = await transformer.transform(bundle, defaultTransformOptions);
|
|
243
|
+
expect(result.contents.memories.count).toBeLessThanOrEqual(100);
|
|
244
|
+
expect(result.metadata.warnings.some((w) => w.includes('Memory limit'))).toBe(true);
|
|
245
|
+
});
|
|
246
|
+
it('splits long memory entries', async () => {
|
|
247
|
+
const transformer = new ClaudeToChatGPTTransformer();
|
|
248
|
+
const longContent = 'A'.repeat(800); // Over 500 char per-memory limit
|
|
249
|
+
const bundle = createClaudeBundle({
|
|
250
|
+
memories: {
|
|
251
|
+
entries: [
|
|
252
|
+
{ id: 'm1', content: longContent, createdAt: '2024-01-01' },
|
|
253
|
+
],
|
|
254
|
+
count: 1,
|
|
255
|
+
},
|
|
256
|
+
});
|
|
257
|
+
const result = await transformer.transform(bundle, defaultTransformOptions);
|
|
258
|
+
// Should be split into multiple entries
|
|
259
|
+
expect(result.contents.memories.count).toBeGreaterThan(1);
|
|
260
|
+
expect(result.contents.memories.entries[0].content).toContain('[Part 1/');
|
|
261
|
+
});
|
|
262
|
+
it('preserves conversation data as reference', async () => {
|
|
263
|
+
const transformer = new ClaudeToChatGPTTransformer();
|
|
264
|
+
const bundle = createClaudeBundle();
|
|
265
|
+
const result = await transformer.transform(bundle, defaultTransformOptions);
|
|
266
|
+
expect(result.contents.conversations).toBeDefined();
|
|
267
|
+
expect(result.contents.conversations.count).toBe(3);
|
|
268
|
+
expect(result.metadata.warnings.some((w) => w.includes('cannot be automatically imported'))).toBe(true);
|
|
269
|
+
});
|
|
270
|
+
it('filters oversized files', async () => {
|
|
271
|
+
const transformer = new ClaudeToChatGPTTransformer();
|
|
272
|
+
const bundle = createClaudeBundle({
|
|
273
|
+
files: {
|
|
274
|
+
files: [
|
|
275
|
+
{ id: '1', filename: 'small.txt', mimeType: 'text/plain', size: 1024, path: '' },
|
|
276
|
+
{ id: '2', filename: 'huge.zip', mimeType: 'application/zip', size: 600 * 1024 * 1024, path: '' },
|
|
277
|
+
],
|
|
278
|
+
count: 2,
|
|
279
|
+
totalSize: 600 * 1024 * 1024,
|
|
280
|
+
},
|
|
281
|
+
});
|
|
282
|
+
const result = await transformer.transform(bundle, defaultTransformOptions);
|
|
283
|
+
expect(result.contents.files.count).toBe(1);
|
|
284
|
+
expect(result.contents.files.files[0].filename).toBe('small.txt');
|
|
285
|
+
});
|
|
286
|
+
it('transforms projects to GPT config suggestions', async () => {
|
|
287
|
+
const transformer = new ClaudeToChatGPTTransformer();
|
|
288
|
+
const bundle = createClaudeBundle();
|
|
289
|
+
const result = await transformer.transform(bundle, defaultTransformOptions);
|
|
290
|
+
expect(result.contents.customBots).toBeDefined();
|
|
291
|
+
expect(result.contents.customBots.bots[0].description).toContain('Migrate to GPT');
|
|
292
|
+
expect(result.metadata.warnings.some((w) => w.includes('Manual GPT creation'))).toBe(true);
|
|
293
|
+
});
|
|
294
|
+
it('calls progress callback during transformation', async () => {
|
|
295
|
+
const transformer = new ClaudeToChatGPTTransformer();
|
|
296
|
+
const bundle = createClaudeBundle();
|
|
297
|
+
const onProgress = vi.fn();
|
|
298
|
+
await transformer.transform(bundle, { ...defaultTransformOptions, onProgress });
|
|
299
|
+
expect(onProgress).toHaveBeenCalled();
|
|
300
|
+
expect(onProgress).toHaveBeenCalledWith(1.0, expect.any(String));
|
|
301
|
+
});
|
|
302
|
+
it('throws with error strategy on overflow', async () => {
|
|
303
|
+
const transformer = new ClaudeToChatGPTTransformer();
|
|
304
|
+
const bundle = createClaudeBundle({
|
|
305
|
+
instructions: { content: 'A'.repeat(3000), length: 3000 },
|
|
306
|
+
});
|
|
307
|
+
await expect(transformer.transform(bundle, {
|
|
308
|
+
...defaultTransformOptions,
|
|
309
|
+
overflowStrategy: 'error',
|
|
310
|
+
})).rejects.toThrow('exceed limit');
|
|
311
|
+
});
|
|
312
|
+
it('handles empty bundle gracefully', async () => {
|
|
313
|
+
const transformer = new ClaudeToChatGPTTransformer();
|
|
314
|
+
const bundle = createClaudeBundle({
|
|
315
|
+
instructions: undefined,
|
|
316
|
+
memories: undefined,
|
|
317
|
+
conversations: undefined,
|
|
318
|
+
files: undefined,
|
|
319
|
+
customBots: undefined,
|
|
320
|
+
});
|
|
321
|
+
const result = await transformer.transform(bundle, defaultTransformOptions);
|
|
322
|
+
expect(result.target?.platform).toBe('chatgpt');
|
|
323
|
+
});
|
|
324
|
+
it('preserves existing extras', async () => {
|
|
325
|
+
const transformer = new ClaudeToChatGPTTransformer();
|
|
326
|
+
const bundle = createClaudeBundle();
|
|
327
|
+
bundle.contents.extras = { customField: 'value' };
|
|
328
|
+
const result = await transformer.transform(bundle, defaultTransformOptions);
|
|
329
|
+
expect(result.contents.extras?.customField).toBe('value');
|
|
330
|
+
});
|
|
331
|
+
});
|
|
332
|
+
});
|
|
333
|
+
//# sourceMappingURL=claude-to-chatgpt.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"claude-to-chatgpt.test.js","sourceRoot":"","sources":["../../../../src/migrate/transformers/__tests__/claude-to-chatgpt.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rules.test.d.ts","sourceRoot":"","sources":["../../../../src/migrate/transformers/__tests__/rules.test.ts"],"names":[],"mappings":"AAAA;;GAEG"}
|