@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.
Files changed (159) hide show
  1. package/dist/cli/__tests__/progress.test.d.ts +5 -0
  2. package/dist/cli/__tests__/progress.test.d.ts.map +1 -0
  3. package/dist/cli/__tests__/progress.test.js +212 -0
  4. package/dist/cli/__tests__/progress.test.js.map +1 -0
  5. package/dist/cli/__tests__/signal-handler.test.d.ts +5 -0
  6. package/dist/cli/__tests__/signal-handler.test.d.ts.map +1 -0
  7. package/dist/cli/__tests__/signal-handler.test.js +99 -0
  8. package/dist/cli/__tests__/signal-handler.test.js.map +1 -0
  9. package/dist/cli/__tests__/summary.test.d.ts +5 -0
  10. package/dist/cli/__tests__/summary.test.d.ts.map +1 -0
  11. package/dist/cli/__tests__/summary.test.js +242 -0
  12. package/dist/cli/__tests__/summary.test.js.map +1 -0
  13. package/dist/cli/index.d.ts +10 -0
  14. package/dist/cli/index.d.ts.map +1 -0
  15. package/dist/cli/index.js +10 -0
  16. package/dist/cli/index.js.map +1 -0
  17. package/dist/cli/progress.d.ts +86 -0
  18. package/dist/cli/progress.d.ts.map +1 -0
  19. package/dist/cli/progress.js +205 -0
  20. package/dist/cli/progress.js.map +1 -0
  21. package/dist/cli/prompts.d.ts +49 -0
  22. package/dist/cli/prompts.d.ts.map +1 -0
  23. package/dist/cli/prompts.js +266 -0
  24. package/dist/cli/prompts.js.map +1 -0
  25. package/dist/cli/signal-handler.d.ts +63 -0
  26. package/dist/cli/signal-handler.d.ts.map +1 -0
  27. package/dist/cli/signal-handler.js +165 -0
  28. package/dist/cli/signal-handler.js.map +1 -0
  29. package/dist/cli/summary.d.ts +33 -0
  30. package/dist/cli/summary.d.ts.map +1 -0
  31. package/dist/cli/summary.js +296 -0
  32. package/dist/cli/summary.js.map +1 -0
  33. package/dist/cli.js +7 -1
  34. package/dist/cli.js.map +1 -1
  35. package/dist/commands/migrate.d.ts +18 -4
  36. package/dist/commands/migrate.d.ts.map +1 -1
  37. package/dist/commands/migrate.js +324 -163
  38. package/dist/commands/migrate.js.map +1 -1
  39. package/dist/migrate/__tests__/capabilities.test.d.ts +7 -0
  40. package/dist/migrate/__tests__/capabilities.test.d.ts.map +1 -0
  41. package/dist/migrate/__tests__/capabilities.test.js +90 -0
  42. package/dist/migrate/__tests__/capabilities.test.js.map +1 -0
  43. package/dist/migrate/__tests__/chatgpt-loader.test.d.ts +7 -0
  44. package/dist/migrate/__tests__/chatgpt-loader.test.d.ts.map +1 -0
  45. package/dist/migrate/__tests__/chatgpt-loader.test.js +889 -0
  46. package/dist/migrate/__tests__/chatgpt-loader.test.js.map +1 -0
  47. package/dist/migrate/__tests__/claude-loader.test.d.ts +7 -0
  48. package/dist/migrate/__tests__/claude-loader.test.d.ts.map +1 -0
  49. package/dist/migrate/__tests__/claude-loader.test.js +544 -0
  50. package/dist/migrate/__tests__/claude-loader.test.js.map +1 -0
  51. package/dist/migrate/__tests__/edge-cases.test.d.ts +7 -0
  52. package/dist/migrate/__tests__/edge-cases.test.d.ts.map +1 -0
  53. package/dist/migrate/__tests__/edge-cases.test.js +787 -0
  54. package/dist/migrate/__tests__/edge-cases.test.js.map +1 -0
  55. package/dist/migrate/__tests__/error-recovery.test.d.ts +7 -0
  56. package/dist/migrate/__tests__/error-recovery.test.d.ts.map +1 -0
  57. package/dist/migrate/__tests__/error-recovery.test.js +461 -0
  58. package/dist/migrate/__tests__/error-recovery.test.js.map +1 -0
  59. package/dist/migrate/__tests__/integration.test.d.ts +7 -0
  60. package/dist/migrate/__tests__/integration.test.d.ts.map +1 -0
  61. package/dist/migrate/__tests__/integration.test.js +536 -0
  62. package/dist/migrate/__tests__/integration.test.js.map +1 -0
  63. package/dist/migrate/__tests__/orchestrator.test.d.ts +8 -0
  64. package/dist/migrate/__tests__/orchestrator.test.d.ts.map +1 -0
  65. package/dist/migrate/__tests__/orchestrator.test.js +355 -0
  66. package/dist/migrate/__tests__/orchestrator.test.js.map +1 -0
  67. package/dist/migrate/__tests__/performance.test.d.ts +7 -0
  68. package/dist/migrate/__tests__/performance.test.d.ts.map +1 -0
  69. package/dist/migrate/__tests__/performance.test.js +478 -0
  70. package/dist/migrate/__tests__/performance.test.js.map +1 -0
  71. package/dist/migrate/__tests__/registry.test.d.ts +7 -0
  72. package/dist/migrate/__tests__/registry.test.d.ts.map +1 -0
  73. package/dist/migrate/__tests__/registry.test.js +167 -0
  74. package/dist/migrate/__tests__/registry.test.js.map +1 -0
  75. package/dist/migrate/compatibility.d.ts +47 -0
  76. package/dist/migrate/compatibility.d.ts.map +1 -0
  77. package/dist/migrate/compatibility.js +468 -0
  78. package/dist/migrate/compatibility.js.map +1 -0
  79. package/dist/migrate/extractors/__tests__/chatgpt.test.d.ts +12 -0
  80. package/dist/migrate/extractors/__tests__/chatgpt.test.d.ts.map +1 -0
  81. package/dist/migrate/extractors/__tests__/chatgpt.test.js +522 -0
  82. package/dist/migrate/extractors/__tests__/chatgpt.test.js.map +1 -0
  83. package/dist/migrate/extractors/__tests__/claude.test.d.ts +12 -0
  84. package/dist/migrate/extractors/__tests__/claude.test.d.ts.map +1 -0
  85. package/dist/migrate/extractors/__tests__/claude.test.js +789 -0
  86. package/dist/migrate/extractors/__tests__/claude.test.js.map +1 -0
  87. package/dist/migrate/extractors/chatgpt.d.ts +70 -0
  88. package/dist/migrate/extractors/chatgpt.d.ts.map +1 -0
  89. package/dist/migrate/extractors/chatgpt.js +791 -0
  90. package/dist/migrate/extractors/chatgpt.js.map +1 -0
  91. package/dist/migrate/extractors/claude.d.ts +69 -0
  92. package/dist/migrate/extractors/claude.d.ts.map +1 -0
  93. package/dist/migrate/extractors/claude.js +1136 -0
  94. package/dist/migrate/extractors/claude.js.map +1 -0
  95. package/dist/migrate/extractors/registry.js +6 -4
  96. package/dist/migrate/extractors/registry.js.map +1 -1
  97. package/dist/migrate/index.d.ts +6 -1
  98. package/dist/migrate/index.d.ts.map +1 -1
  99. package/dist/migrate/index.js +12 -1
  100. package/dist/migrate/index.js.map +1 -1
  101. package/dist/migrate/loaders/chatgpt.d.ts +72 -0
  102. package/dist/migrate/loaders/chatgpt.d.ts.map +1 -0
  103. package/dist/migrate/loaders/chatgpt.js +691 -0
  104. package/dist/migrate/loaders/chatgpt.js.map +1 -0
  105. package/dist/migrate/loaders/claude.d.ts +61 -0
  106. package/dist/migrate/loaders/claude.d.ts.map +1 -0
  107. package/dist/migrate/loaders/claude.js +433 -0
  108. package/dist/migrate/loaders/claude.js.map +1 -0
  109. package/dist/migrate/loaders/registry.js +6 -4
  110. package/dist/migrate/loaders/registry.js.map +1 -1
  111. package/dist/migrate/orchestrator.d.ts +75 -1
  112. package/dist/migrate/orchestrator.d.ts.map +1 -1
  113. package/dist/migrate/orchestrator.js +215 -19
  114. package/dist/migrate/orchestrator.js.map +1 -1
  115. package/dist/migrate/testing/index.d.ts +28 -0
  116. package/dist/migrate/testing/index.d.ts.map +1 -0
  117. package/dist/migrate/testing/index.js +55 -0
  118. package/dist/migrate/testing/index.js.map +1 -0
  119. package/dist/migrate/testing/mock-extractor.d.ts +30 -0
  120. package/dist/migrate/testing/mock-extractor.d.ts.map +1 -0
  121. package/dist/migrate/testing/mock-extractor.js +137 -0
  122. package/dist/migrate/testing/mock-extractor.js.map +1 -0
  123. package/dist/migrate/testing/mock-loader.d.ts +36 -0
  124. package/dist/migrate/testing/mock-loader.d.ts.map +1 -0
  125. package/dist/migrate/testing/mock-loader.js +81 -0
  126. package/dist/migrate/testing/mock-loader.js.map +1 -0
  127. package/dist/migrate/testing/mock-transformer.d.ts +26 -0
  128. package/dist/migrate/testing/mock-transformer.d.ts.map +1 -0
  129. package/dist/migrate/testing/mock-transformer.js +185 -0
  130. package/dist/migrate/testing/mock-transformer.js.map +1 -0
  131. package/dist/migrate/transformers/__tests__/chatgpt-to-claude.test.d.ts +5 -0
  132. package/dist/migrate/transformers/__tests__/chatgpt-to-claude.test.d.ts.map +1 -0
  133. package/dist/migrate/transformers/__tests__/chatgpt-to-claude.test.js +333 -0
  134. package/dist/migrate/transformers/__tests__/chatgpt-to-claude.test.js.map +1 -0
  135. package/dist/migrate/transformers/__tests__/claude-to-chatgpt.test.d.ts +5 -0
  136. package/dist/migrate/transformers/__tests__/claude-to-chatgpt.test.d.ts.map +1 -0
  137. package/dist/migrate/transformers/__tests__/claude-to-chatgpt.test.js +333 -0
  138. package/dist/migrate/transformers/__tests__/claude-to-chatgpt.test.js.map +1 -0
  139. package/dist/migrate/transformers/__tests__/rules.test.d.ts +5 -0
  140. package/dist/migrate/transformers/__tests__/rules.test.d.ts.map +1 -0
  141. package/dist/migrate/transformers/__tests__/rules.test.js +375 -0
  142. package/dist/migrate/transformers/__tests__/rules.test.js.map +1 -0
  143. package/dist/migrate/transformers/chatgpt-to-claude.d.ts +40 -0
  144. package/dist/migrate/transformers/chatgpt-to-claude.d.ts.map +1 -0
  145. package/dist/migrate/transformers/chatgpt-to-claude.js +443 -0
  146. package/dist/migrate/transformers/chatgpt-to-claude.js.map +1 -0
  147. package/dist/migrate/transformers/claude-to-chatgpt.d.ts +41 -0
  148. package/dist/migrate/transformers/claude-to-chatgpt.d.ts.map +1 -0
  149. package/dist/migrate/transformers/claude-to-chatgpt.js +532 -0
  150. package/dist/migrate/transformers/claude-to-chatgpt.js.map +1 -0
  151. package/dist/migrate/transformers/registry.js +6 -4
  152. package/dist/migrate/transformers/registry.js.map +1 -1
  153. package/dist/migrate/transformers/rules.d.ts +168 -0
  154. package/dist/migrate/transformers/rules.d.ts.map +1 -0
  155. package/dist/migrate/transformers/rules.js +487 -0
  156. package/dist/migrate/transformers/rules.js.map +1 -0
  157. package/dist/migrate/types.d.ts +2 -0
  158. package/dist/migrate/types.d.ts.map +1 -1
  159. package/package.json +7 -2
@@ -0,0 +1,532 @@
1
+ /**
2
+ * Claude → ChatGPT Transformer
3
+ *
4
+ * Transforms a MigrationBundle from Claude format to ChatGPT format.
5
+ *
6
+ * Transformation Mappings:
7
+ * | Source (Claude) | Target (ChatGPT) | Method |
8
+ * |------------------------|-----------------------|----------------------------------|
9
+ * | System Prompt | Custom Instructions | Truncate/prioritize if >1500ch |
10
+ * | Project Knowledge | Memories + Files | Split into discrete entries |
11
+ * | Artifacts | Files | Export as documents |
12
+ * | Projects | (Manual) | Generate GPT config suggestions |
13
+ */
14
+ import { basename } from 'node:path';
15
+ import { getPlatformCapabilities } from '../capabilities.js';
16
+ import { intelligentTruncate, convertClaudeInstructionsToChatGPT, splitContent, validateBundleForTarget, } from './rules.js';
17
+ // ─── Claude to ChatGPT Transformer ───────────────────────────
18
+ export class ClaudeToChatGPTTransformer {
19
+ source = 'claude';
20
+ target = 'chatgpt';
21
+ version = '1.0.0';
22
+ progress = 0;
23
+ /**
24
+ * Analyze the bundle for compatibility without transforming.
25
+ */
26
+ async analyze(bundle) {
27
+ const items = [];
28
+ const recommendations = [];
29
+ const targetCaps = getPlatformCapabilities('chatgpt');
30
+ let perfect = 0;
31
+ let adapted = 0;
32
+ let incompatible = 0;
33
+ // Analyze instructions (system prompt → custom instructions)
34
+ if (bundle.contents.instructions) {
35
+ const item = this.analyzeInstructions(bundle.contents.instructions, targetCaps.instructionLimit);
36
+ items.push(item);
37
+ if (item.status === 'perfect')
38
+ perfect++;
39
+ else if (item.status === 'adapted')
40
+ adapted++;
41
+ else
42
+ incompatible++;
43
+ }
44
+ // Analyze memories/knowledge documents
45
+ if (bundle.contents.memories && bundle.contents.memories.count > 0) {
46
+ const item = this.analyzeMemories(bundle.contents.memories, targetCaps.memoryLimit);
47
+ items.push(item);
48
+ if (item.status === 'perfect')
49
+ perfect++;
50
+ else if (item.status === 'adapted')
51
+ adapted++;
52
+ else
53
+ incompatible++;
54
+ }
55
+ // Analyze conversations
56
+ if (bundle.contents.conversations && bundle.contents.conversations.count > 0) {
57
+ const item = this.analyzeConversations(bundle.contents.conversations);
58
+ items.push(item);
59
+ if (item.status === 'perfect')
60
+ perfect++;
61
+ else if (item.status === 'adapted')
62
+ adapted++;
63
+ else
64
+ incompatible++;
65
+ }
66
+ // Analyze files (including artifacts)
67
+ if (bundle.contents.files && bundle.contents.files.count > 0) {
68
+ const fileItems = this.analyzeFiles(bundle.contents.files, targetCaps.fileSizeLimit);
69
+ for (const item of fileItems) {
70
+ items.push(item);
71
+ if (item.status === 'perfect')
72
+ perfect++;
73
+ else if (item.status === 'adapted')
74
+ adapted++;
75
+ else
76
+ incompatible++;
77
+ }
78
+ }
79
+ // Analyze projects (Claude doesn't have custom bots, but may have project configs)
80
+ if (bundle.contents.customBots && bundle.contents.customBots.count > 0) {
81
+ const item = this.analyzeProjects(bundle.contents.customBots);
82
+ items.push(item);
83
+ if (item.status === 'perfect')
84
+ perfect++;
85
+ else if (item.status === 'adapted')
86
+ adapted++;
87
+ else
88
+ incompatible++;
89
+ }
90
+ // Generate recommendations
91
+ if (bundle.contents.instructions && bundle.contents.instructions.length > 1500) {
92
+ recommendations.push('System prompt exceeds ChatGPT\'s 1500 character limit. Content will be prioritized and some may be lost.');
93
+ recommendations.push('Consider creating a custom GPT for longer instructions, or store additional context as memories.');
94
+ }
95
+ if (adapted > 0) {
96
+ recommendations.push('Review adapted items after migration to ensure content meets expectations');
97
+ }
98
+ // Determine feasibility
99
+ const total = perfect + adapted + incompatible;
100
+ let feasibility;
101
+ if (incompatible === 0 && adapted === 0) {
102
+ feasibility = 'easy';
103
+ }
104
+ else if (incompatible === 0 && adapted <= total / 3) {
105
+ feasibility = 'moderate';
106
+ }
107
+ else if (incompatible <= total / 4) {
108
+ feasibility = 'complex';
109
+ }
110
+ else {
111
+ feasibility = 'partial';
112
+ }
113
+ return {
114
+ source: 'claude',
115
+ target: 'chatgpt',
116
+ generatedAt: new Date().toISOString(),
117
+ summary: { perfect, adapted, incompatible, total },
118
+ items,
119
+ recommendations,
120
+ feasibility,
121
+ };
122
+ }
123
+ /**
124
+ * Transform the bundle for ChatGPT.
125
+ */
126
+ async transform(bundle, options) {
127
+ this.progress = 0;
128
+ // Validate source
129
+ if (bundle.source.platform !== 'claude') {
130
+ throw new Error(`Expected Claude bundle, got ${bundle.source.platform}`);
131
+ }
132
+ // Validate target compatibility
133
+ const validation = validateBundleForTarget(bundle, 'chatgpt');
134
+ if (!validation.valid) {
135
+ throw new Error(`Bundle validation failed: ${validation.errors.join(', ')}`);
136
+ }
137
+ const targetCaps = getPlatformCapabilities('chatgpt');
138
+ const warnings = [...validation.warnings, ...bundle.metadata.warnings];
139
+ const errors = [...bundle.metadata.errors];
140
+ // Start transformation
141
+ options.onProgress?.(0.05, 'Starting Claude → ChatGPT transformation...');
142
+ // Transform instructions (system prompt → custom instructions) (25%)
143
+ let transformedInstructions;
144
+ let instructionOverflow;
145
+ if (bundle.contents.instructions) {
146
+ options.onProgress?.(0.1, 'Converting system prompt to custom instructions...');
147
+ const result = await this.transformInstructions(bundle.contents.instructions, targetCaps.instructionLimit, options.overflowStrategy);
148
+ transformedInstructions = result.instructions;
149
+ instructionOverflow = result.overflow;
150
+ if (result.warning)
151
+ warnings.push(result.warning);
152
+ }
153
+ this.progress = 25;
154
+ options.onProgress?.(0.25, 'Instructions converted');
155
+ // Transform memories (may need to split large documents) (50%)
156
+ let transformedMemories;
157
+ if (bundle.contents.memories && bundle.contents.memories.count > 0) {
158
+ options.onProgress?.(0.35, 'Converting knowledge to memories...');
159
+ const result = this.transformMemories(bundle.contents.memories, targetCaps.memoryLimit, instructionOverflow);
160
+ transformedMemories = result.memories;
161
+ if (result.warnings.length > 0)
162
+ warnings.push(...result.warnings);
163
+ }
164
+ else if (instructionOverflow) {
165
+ // If we have overflow from instructions but no memories, create memories for the overflow
166
+ options.onProgress?.(0.35, 'Creating memories for instruction overflow...');
167
+ const result = this.createMemoriesFromOverflow(instructionOverflow, targetCaps.memoryLimit);
168
+ transformedMemories = result.memories;
169
+ if (result.warning)
170
+ warnings.push(result.warning);
171
+ }
172
+ this.progress = 50;
173
+ options.onProgress?.(0.5, 'Memories processed');
174
+ // Transform conversations (limited support) (65%)
175
+ let transformedConversations;
176
+ if (bundle.contents.conversations) {
177
+ options.onProgress?.(0.55, 'Processing conversations...');
178
+ const result = this.transformConversations(bundle.contents.conversations);
179
+ transformedConversations = result.conversations;
180
+ if (result.warning)
181
+ warnings.push(result.warning);
182
+ }
183
+ this.progress = 65;
184
+ options.onProgress?.(0.65, 'Conversations processed');
185
+ // Transform files (including artifacts) (85%)
186
+ let transformedFiles;
187
+ if (bundle.contents.files && bundle.contents.files.count > 0) {
188
+ options.onProgress?.(0.75, 'Processing files and artifacts...');
189
+ const result = this.transformFiles(bundle.contents.files, targetCaps.fileSizeLimit);
190
+ transformedFiles = result.files;
191
+ if (result.warnings.length > 0)
192
+ warnings.push(...result.warnings);
193
+ }
194
+ this.progress = 85;
195
+ options.onProgress?.(0.85, 'Files processed');
196
+ // Transform projects to GPT suggestions (100%)
197
+ let transformedBots;
198
+ if (bundle.contents.customBots && bundle.contents.customBots.count > 0) {
199
+ options.onProgress?.(0.95, 'Generating GPT configuration suggestions...');
200
+ const result = this.transformProjects(bundle.contents.customBots);
201
+ transformedBots = result.bots;
202
+ if (result.warning)
203
+ warnings.push(result.warning);
204
+ }
205
+ this.progress = 100;
206
+ options.onProgress?.(1.0, 'Transformation complete');
207
+ // Build transformed bundle
208
+ const transformed = {
209
+ ...bundle,
210
+ target: {
211
+ platform: 'chatgpt',
212
+ transformedAt: new Date().toISOString(),
213
+ transformerVersion: this.version,
214
+ },
215
+ contents: {
216
+ instructions: transformedInstructions,
217
+ memories: transformedMemories,
218
+ conversations: transformedConversations,
219
+ files: transformedFiles,
220
+ customBots: transformedBots,
221
+ extras: {
222
+ ...bundle.contents.extras,
223
+ // Store instruction overflow for reference
224
+ instructionOverflow: instructionOverflow ? { content: instructionOverflow } : undefined,
225
+ },
226
+ },
227
+ metadata: {
228
+ ...bundle.metadata,
229
+ warnings,
230
+ errors,
231
+ },
232
+ };
233
+ return transformed;
234
+ }
235
+ // ─── Analysis Helpers ────────────────────────────────────
236
+ analyzeInstructions(instructions, limit) {
237
+ const len = instructions.length;
238
+ if (len <= limit) {
239
+ return {
240
+ type: 'instructions',
241
+ name: 'System Prompt → Custom Instructions',
242
+ status: 'perfect',
243
+ reason: `Within ChatGPT's ${limit} character limit (${len} chars)`,
244
+ };
245
+ }
246
+ const overflowAmount = len - limit;
247
+ const overflowPercent = Math.round((overflowAmount / len) * 100);
248
+ return {
249
+ type: 'instructions',
250
+ name: 'System Prompt → Custom Instructions',
251
+ status: 'adapted',
252
+ reason: `Exceeds ChatGPT's limit by ${overflowAmount} chars (${overflowPercent}% overflow)`,
253
+ action: 'Content will be prioritized; overflow may be converted to memories',
254
+ sourceRef: `instructions:${len}`,
255
+ };
256
+ }
257
+ analyzeMemories(memories, limit) {
258
+ const count = memories.count;
259
+ if (count <= limit) {
260
+ return {
261
+ type: 'memory',
262
+ name: 'Project Knowledge → Memories',
263
+ status: 'perfect',
264
+ reason: `${count} entries within ChatGPT's ${limit} memory limit`,
265
+ };
266
+ }
267
+ return {
268
+ type: 'memory',
269
+ name: 'Project Knowledge → Memories',
270
+ status: 'adapted',
271
+ reason: `${count} entries exceed ChatGPT's ${limit} memory limit`,
272
+ action: `Most recent/important ${limit} memories will be kept; rest saved as files`,
273
+ sourceRef: `memories:${count}`,
274
+ };
275
+ }
276
+ analyzeConversations(conversations) {
277
+ return {
278
+ type: 'conversation',
279
+ name: 'Conversation History',
280
+ status: 'adapted',
281
+ reason: 'ChatGPT conversation import not supported via API',
282
+ action: 'Conversation history will be preserved in bundle for reference only',
283
+ sourceRef: `conversations:${conversations.count}`,
284
+ };
285
+ }
286
+ analyzeFiles(files, sizeLimit) {
287
+ const items = [];
288
+ let perfectCount = 0;
289
+ let oversizedCount = 0;
290
+ for (const file of files.files) {
291
+ if (file.size <= sizeLimit) {
292
+ perfectCount++;
293
+ }
294
+ else {
295
+ oversizedCount++;
296
+ items.push({
297
+ type: 'file',
298
+ name: basename(file.filename),
299
+ status: 'incompatible',
300
+ reason: `File size (${Math.round(file.size / 1024 / 1024)}MB) exceeds ChatGPT's ${Math.round(sizeLimit / 1024 / 1024)}MB limit`,
301
+ sourceRef: `file:${file.id}`,
302
+ });
303
+ }
304
+ }
305
+ if (perfectCount > 0) {
306
+ items.unshift({
307
+ type: 'file',
308
+ name: `${perfectCount} Files (including Artifacts)`,
309
+ status: 'perfect',
310
+ reason: `${perfectCount} files within ChatGPT's size limit`,
311
+ });
312
+ }
313
+ return items;
314
+ }
315
+ analyzeProjects(bots) {
316
+ return {
317
+ type: 'customBot',
318
+ name: 'Claude Projects → GPT Configs',
319
+ status: 'adapted',
320
+ reason: 'Custom GPTs require manual creation through ChatGPT interface',
321
+ action: `${bots.count} project configuration${bots.count > 1 ? 's' : ''} will be exported as GPT creation guides`,
322
+ sourceRef: `projects:${bots.count}`,
323
+ };
324
+ }
325
+ // ─── Transformation Helpers ──────────────────────────────
326
+ async transformInstructions(instructions, limit, overflowStrategy) {
327
+ const content = instructions.content;
328
+ // Check error strategy first
329
+ if (content.length > limit && overflowStrategy === 'error') {
330
+ throw new Error(`Instructions exceed limit (${content.length} > ${limit}) and overflow strategy is 'error'`);
331
+ }
332
+ if (content.length <= limit) {
333
+ // Still convert format even if within limit
334
+ const { aboutUser, aboutModel } = convertClaudeInstructionsToChatGPT(content, limit);
335
+ let finalContent;
336
+ if (aboutUser && aboutModel) {
337
+ finalContent = `## About Me\n${aboutUser}\n\n## How ChatGPT Should Respond\n${aboutModel}`;
338
+ }
339
+ else if (aboutUser) {
340
+ finalContent = `## About Me\n${aboutUser}`;
341
+ }
342
+ else if (aboutModel) {
343
+ finalContent = `## How ChatGPT Should Respond\n${aboutModel}`;
344
+ }
345
+ else {
346
+ finalContent = content;
347
+ }
348
+ return {
349
+ instructions: {
350
+ content: finalContent,
351
+ length: finalContent.length,
352
+ sections: instructions.sections,
353
+ },
354
+ };
355
+ }
356
+ // Convert Claude format to ChatGPT format
357
+ const { aboutUser, aboutModel, overflow } = convertClaudeInstructionsToChatGPT(content, limit);
358
+ // Combine for ChatGPT custom instructions format
359
+ let finalContent;
360
+ if (aboutUser && aboutModel) {
361
+ finalContent = `## About Me\n${aboutUser}\n\n## How ChatGPT Should Respond\n${aboutModel}`;
362
+ }
363
+ else if (aboutUser) {
364
+ finalContent = `## About Me\n${aboutUser}`;
365
+ }
366
+ else if (aboutModel) {
367
+ finalContent = `## How ChatGPT Should Respond\n${aboutModel}`;
368
+ }
369
+ else {
370
+ finalContent = content.substring(0, limit);
371
+ }
372
+ // Additional truncation if still over limit
373
+ if (finalContent.length > limit) {
374
+ switch (overflowStrategy) {
375
+ case 'truncate': {
376
+ const result = intelligentTruncate(finalContent, limit);
377
+ finalContent = result.content || finalContent.substring(0, limit);
378
+ break;
379
+ }
380
+ case 'summarize':
381
+ case 'split': {
382
+ // Can't really split system instructions, so fall back to truncate
383
+ const result = intelligentTruncate(finalContent, limit);
384
+ finalContent = result.content || finalContent.substring(0, limit);
385
+ break;
386
+ }
387
+ case 'error':
388
+ // Already handled above
389
+ break;
390
+ }
391
+ }
392
+ const warning = overflow
393
+ ? `System prompt exceeded limit. ${overflow.length} characters stored as overflow.`
394
+ : undefined;
395
+ return {
396
+ instructions: {
397
+ content: finalContent,
398
+ length: finalContent.length,
399
+ sections: instructions.sections,
400
+ },
401
+ overflow,
402
+ warning,
403
+ };
404
+ }
405
+ transformMemories(memories, limit, instructionOverflow) {
406
+ const warnings = [];
407
+ let entries = [...memories.entries];
408
+ // Add instruction overflow as memories if present
409
+ if (instructionOverflow) {
410
+ const overflowMemories = this.createMemoryEntriesFromText(instructionOverflow, 'Instruction Context');
411
+ entries = [...overflowMemories, ...entries];
412
+ warnings.push(`${overflowMemories.length} memories created from instruction overflow`);
413
+ }
414
+ // Respect memory limit
415
+ if (entries.length > limit) {
416
+ // Prioritize: instruction overflow first, then most recent
417
+ const kept = entries.slice(0, limit);
418
+ const dropped = entries.length - limit;
419
+ warnings.push(`Memory limit exceeded. ${dropped} entries dropped (keeping ${limit} most important).`);
420
+ entries = kept;
421
+ }
422
+ // Ensure each entry fits within ChatGPT's per-memory limit (500 chars)
423
+ const perMemoryLimit = 500;
424
+ const processedEntries = [];
425
+ for (const entry of entries) {
426
+ if (entry.content.length <= perMemoryLimit) {
427
+ processedEntries.push(entry);
428
+ }
429
+ else {
430
+ // Split long entries
431
+ const chunks = splitContent(entry.content, perMemoryLimit - 50); // Leave room for context
432
+ for (let i = 0; i < chunks.length; i++) {
433
+ processedEntries.push({
434
+ ...entry,
435
+ id: `${entry.id}_part${i + 1}`,
436
+ content: chunks.length > 1 ? `[Part ${i + 1}/${chunks.length}] ${chunks[i]}` : chunks[i],
437
+ });
438
+ }
439
+ }
440
+ }
441
+ // Re-check limit after splitting
442
+ const finalEntries = processedEntries.length > limit ? processedEntries.slice(0, limit) : processedEntries;
443
+ if (processedEntries.length > limit) {
444
+ warnings.push(`After splitting long entries, ${processedEntries.length - limit} additional entries were dropped`);
445
+ }
446
+ return {
447
+ memories: {
448
+ entries: finalEntries,
449
+ count: finalEntries.length,
450
+ },
451
+ warnings,
452
+ };
453
+ }
454
+ createMemoriesFromOverflow(overflow, limit) {
455
+ const entries = this.createMemoryEntriesFromText(overflow, 'System Context');
456
+ const finalEntries = entries.slice(0, limit);
457
+ return {
458
+ memories: {
459
+ entries: finalEntries,
460
+ count: finalEntries.length,
461
+ },
462
+ warning: entries.length > limit
463
+ ? `${entries.length - limit} overflow memories dropped due to limit`
464
+ : undefined,
465
+ };
466
+ }
467
+ createMemoryEntriesFromText(text, category) {
468
+ const entries = [];
469
+ const timestamp = new Date().toISOString();
470
+ // Try to split by paragraphs first
471
+ const paragraphs = text.split(/\n\n+/).filter((p) => p.trim());
472
+ for (let i = 0; i < paragraphs.length; i++) {
473
+ const para = paragraphs[i].trim();
474
+ if (para.length > 0) {
475
+ entries.push({
476
+ id: `overflow_${i + 1}_${Date.now()}`,
477
+ content: para,
478
+ createdAt: timestamp,
479
+ category,
480
+ source: 'claude-migration',
481
+ });
482
+ }
483
+ }
484
+ return entries;
485
+ }
486
+ transformConversations(conversations) {
487
+ // Conversations can't be imported to ChatGPT via API
488
+ // Just preserve the data for reference
489
+ return {
490
+ conversations,
491
+ warning: 'Conversation history preserved but cannot be automatically imported to ChatGPT',
492
+ };
493
+ }
494
+ transformFiles(files, sizeLimit) {
495
+ const warnings = [];
496
+ const validFiles = files.files.filter((f) => {
497
+ if (f.size > sizeLimit) {
498
+ warnings.push(`File "${basename(f.filename)}" (${Math.round(f.size / 1024 / 1024)}MB) exceeds ChatGPT's limit and will be skipped`);
499
+ return false;
500
+ }
501
+ return true;
502
+ });
503
+ return {
504
+ files: {
505
+ files: validFiles.map((f) => ({
506
+ ...f,
507
+ filename: basename(f.filename),
508
+ })),
509
+ count: validFiles.length,
510
+ totalSize: validFiles.reduce((sum, f) => sum + f.size, 0),
511
+ },
512
+ warnings,
513
+ };
514
+ }
515
+ transformProjects(bots) {
516
+ // Claude projects → GPT configuration suggestions
517
+ // The actual GPT creation must be done manually
518
+ const transformedBots = bots.bots.map((project) => ({
519
+ ...project,
520
+ // Add note about manual creation
521
+ description: `[Migrate to GPT] ${project.description || project.name}\n\nInstructions:\n${project.instructions.substring(0, 500)}${project.instructions.length > 500 ? '...' : ''}`,
522
+ }));
523
+ return {
524
+ bots: {
525
+ bots: transformedBots,
526
+ count: transformedBots.length,
527
+ },
528
+ warning: `${bots.count} Claude project${bots.count > 1 ? 's' : ''} exported as GPT configuration guides. Manual GPT creation required.`,
529
+ };
530
+ }
531
+ }
532
+ //# sourceMappingURL=claude-to-chatgpt.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claude-to-chatgpt.js","sourceRoot":"","sources":["../../../src/migrate/transformers/claude-to-chatgpt.ts"],"names":[],"mappings":"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"}
@@ -40,8 +40,10 @@ export function hasTransformer(source, target) {
40
40
  return transformers.has(transformerKey(source, target));
41
41
  }
42
42
  // ─── Register Built-in Transformers ──────────────────────────
43
- // ChatGPT Claude will be registered in #26
44
- // registerTransformer('chatgpt', 'claude', () => new ChatGPTToClaudeTransformer());
45
- // ClaudeChatGPT will be registered in #26
46
- // registerTransformer('claude', 'chatgpt', () => new ClaudeToChatGPTTransformer());
43
+ import { ChatGPTToClaudeTransformer } from './chatgpt-to-claude.js';
44
+ import { ClaudeToChatGPTTransformer } from './claude-to-chatgpt.js';
45
+ // ChatGPTClaude transformer
46
+ registerTransformer('chatgpt', 'claude', () => new ChatGPTToClaudeTransformer());
47
+ // Claude → ChatGPT transformer
48
+ registerTransformer('claude', 'chatgpt', () => new ClaudeToChatGPTTransformer());
47
49
  //# sourceMappingURL=registry.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../../src/migrate/transformers/registry.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,MAAM,YAAY,GAAG,IAAI,GAAG,EAA6B,CAAC;AAE1D;;GAEG;AACH,SAAS,cAAc,CAAC,MAAgB,EAAE,MAAgB;IACxD,OAAO,GAAG,MAAM,IAAI,MAAM,EAAE,CAAC;AAC/B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,mBAAmB,CACjC,MAAgB,EAChB,MAAgB,EAChB,OAA0B;IAE1B,YAAY,CAAC,GAAG,CAAC,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,CAAC,CAAC;AAC5D,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,MAAgB,EAAE,MAAgB;IAC/D,MAAM,OAAO,GAAG,YAAY,CAAC,GAAG,CAAC,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IACjE,OAAO,OAAO,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;AACpC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB;IAC9B,OAAO,CAAC,GAAG,YAAY,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;QAC1C,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAyB,CAAC;QAChE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;IAC5B,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,MAAgB,EAAE,MAAgB;IAC/D,OAAO,YAAY,CAAC,GAAG,CAAC,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;AAC1D,CAAC;AAED,gEAAgE;AAEhE,6CAA6C;AAC7C,oFAAoF;AAEpF,6CAA6C;AAC7C,oFAAoF"}
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../../src/migrate/transformers/registry.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,MAAM,YAAY,GAAG,IAAI,GAAG,EAA6B,CAAC;AAE1D;;GAEG;AACH,SAAS,cAAc,CAAC,MAAgB,EAAE,MAAgB;IACxD,OAAO,GAAG,MAAM,IAAI,MAAM,EAAE,CAAC;AAC/B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,mBAAmB,CACjC,MAAgB,EAChB,MAAgB,EAChB,OAA0B;IAE1B,YAAY,CAAC,GAAG,CAAC,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,CAAC,CAAC;AAC5D,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,MAAgB,EAAE,MAAgB;IAC/D,MAAM,OAAO,GAAG,YAAY,CAAC,GAAG,CAAC,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IACjE,OAAO,OAAO,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;AACpC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB;IAC9B,OAAO,CAAC,GAAG,YAAY,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;QAC1C,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAyB,CAAC;QAChE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;IAC5B,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,MAAgB,EAAE,MAAgB;IAC/D,OAAO,YAAY,CAAC,GAAG,CAAC,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;AAC1D,CAAC;AAED,gEAAgE;AAEhE,OAAO,EAAE,0BAA0B,EAAE,MAAM,wBAAwB,CAAC;AACpE,OAAO,EAAE,0BAA0B,EAAE,MAAM,wBAAwB,CAAC;AAEpE,+BAA+B;AAC/B,mBAAmB,CAAC,SAAS,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,IAAI,0BAA0B,EAAE,CAAC,CAAC;AAEjF,+BAA+B;AAC/B,mBAAmB,CAAC,QAAQ,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC,IAAI,0BAA0B,EAAE,CAAC,CAAC"}