@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,468 @@
1
+ /**
2
+ * Compatibility Report Generator
3
+ *
4
+ * Analyzes source data against target platform capabilities and generates
5
+ * a detailed compatibility report showing what will/won't transfer cleanly.
6
+ *
7
+ * Categories:
8
+ * - ✓ Perfect: Transfers without modification
9
+ * - ⚠ Adapted: Requires adaptation/reformatting
10
+ * - ✗ Incompatible: Cannot be migrated
11
+ */
12
+ import { PLATFORM_CAPABILITIES } from './capabilities.js';
13
+ // ─── Platform Names ──────────────────────────────────────────
14
+ const PLATFORM_NAMES = {
15
+ chatgpt: 'ChatGPT',
16
+ claude: 'Claude',
17
+ gemini: 'Gemini',
18
+ copilot: 'Microsoft Copilot',
19
+ };
20
+ const FEATURE_COMPATIBILITY = [
21
+ {
22
+ sourceFeature: 'dalle',
23
+ targetPlatforms: {
24
+ claude: 'incompatible',
25
+ gemini: 'adapted',
26
+ copilot: 'adapted',
27
+ },
28
+ alternatives: {
29
+ claude: 'Use MCP image generation tools',
30
+ gemini: 'Use Imagen integration',
31
+ copilot: 'Use DALL-E via Bing',
32
+ },
33
+ },
34
+ {
35
+ sourceFeature: 'code_interpreter',
36
+ targetPlatforms: {
37
+ claude: 'adapted',
38
+ gemini: 'incompatible',
39
+ copilot: 'incompatible',
40
+ },
41
+ adaptationNote: 'Claude uses Artifacts for code execution',
42
+ alternatives: {
43
+ claude: 'Use Claude Artifacts',
44
+ },
45
+ },
46
+ {
47
+ sourceFeature: 'browsing',
48
+ targetPlatforms: {
49
+ claude: 'adapted',
50
+ gemini: 'compatible',
51
+ copilot: 'compatible',
52
+ },
53
+ adaptationNote: 'Claude web browsing works differently',
54
+ },
55
+ {
56
+ sourceFeature: 'plugins',
57
+ targetPlatforms: {
58
+ claude: 'adapted',
59
+ gemini: 'incompatible',
60
+ copilot: 'incompatible',
61
+ },
62
+ adaptationNote: 'Claude uses MCP for external integrations',
63
+ alternatives: {
64
+ claude: 'See Claude MCP alternatives',
65
+ },
66
+ },
67
+ ];
68
+ // ─── Compatibility Analyzer Class ────────────────────────────
69
+ export class CompatibilityAnalyzer {
70
+ source;
71
+ target;
72
+ sourceCapabilities;
73
+ targetCapabilities;
74
+ constructor(source, target) {
75
+ this.source = source;
76
+ this.target = target;
77
+ this.sourceCapabilities = PLATFORM_CAPABILITIES[source];
78
+ this.targetCapabilities = PLATFORM_CAPABILITIES[target];
79
+ }
80
+ /**
81
+ * Analyze a migration bundle and generate a compatibility report.
82
+ */
83
+ async analyze(bundle) {
84
+ const items = [];
85
+ // Analyze each content type
86
+ if (bundle.contents.instructions) {
87
+ items.push(...this.analyzeInstructions(bundle.contents.instructions));
88
+ }
89
+ if (bundle.contents.memories) {
90
+ items.push(...this.analyzeMemories(bundle.contents.memories));
91
+ }
92
+ if (bundle.contents.conversations) {
93
+ items.push(...this.analyzeConversations(bundle.contents.conversations));
94
+ }
95
+ if (bundle.contents.files) {
96
+ items.push(...this.analyzeFiles(bundle.contents.files));
97
+ }
98
+ if (bundle.contents.customBots) {
99
+ items.push(...this.analyzeCustomBots(bundle.contents.customBots));
100
+ }
101
+ // Calculate summary
102
+ const summary = {
103
+ perfect: items.filter((i) => i.status === 'perfect').length,
104
+ adapted: items.filter((i) => i.status === 'adapted').length,
105
+ incompatible: items.filter((i) => i.status === 'incompatible').length,
106
+ total: items.length,
107
+ };
108
+ // Generate recommendations
109
+ const recommendations = generateRecommendations(items, this.source, this.target);
110
+ // Determine feasibility
111
+ const feasibility = this.calculateFeasibility(summary);
112
+ return {
113
+ source: this.source,
114
+ target: this.target,
115
+ generatedAt: new Date().toISOString(),
116
+ summary,
117
+ items,
118
+ recommendations,
119
+ feasibility,
120
+ };
121
+ }
122
+ analyzeInstructions(instructions) {
123
+ const items = [];
124
+ const targetLimit = this.targetCapabilities.instructionLimit;
125
+ if (instructions.length <= targetLimit) {
126
+ items.push({
127
+ type: 'instructions',
128
+ name: 'Custom Instructions',
129
+ status: 'perfect',
130
+ reason: 'Will transfer without modification',
131
+ sourceRef: 'instructions',
132
+ });
133
+ }
134
+ else {
135
+ items.push({
136
+ type: 'instructions',
137
+ name: 'Custom Instructions',
138
+ status: 'adapted',
139
+ reason: `Content exceeds ${PLATFORM_NAMES[this.target]} limit (${instructions.length}/${targetLimit} chars)`,
140
+ action: 'Content will be summarized or split',
141
+ sourceRef: 'instructions',
142
+ });
143
+ }
144
+ // Check for platform-specific formatting
145
+ if (this.target === 'claude' && instructions.content.includes('```')) {
146
+ // Claude prefers XML for structured instructions
147
+ items.push({
148
+ type: 'instructions',
149
+ name: 'Response Format Rules',
150
+ status: 'adapted',
151
+ reason: 'Claude uses XML tags for structured formatting',
152
+ action: 'Markdown blocks will be converted to XML format',
153
+ });
154
+ }
155
+ return items;
156
+ }
157
+ analyzeMemories(memories) {
158
+ const items = [];
159
+ if (memories.count === 0) {
160
+ return items;
161
+ }
162
+ // Claude doesn't have explicit memories - uses project knowledge
163
+ if (this.target === 'claude') {
164
+ items.push({
165
+ type: 'memory',
166
+ name: `Memory Entries (${memories.count} entries)`,
167
+ status: 'adapted',
168
+ reason: 'Claude uses project knowledge instead of explicit memories',
169
+ action: 'Memories will be converted to project knowledge files',
170
+ sourceRef: 'memories',
171
+ });
172
+ }
173
+ else if (this.targetCapabilities.hasMemory) {
174
+ const targetLimit = this.targetCapabilities.memoryLimit || Infinity;
175
+ if (memories.count <= targetLimit) {
176
+ items.push({
177
+ type: 'memory',
178
+ name: `Memory Entries (${memories.count} entries)`,
179
+ status: 'perfect',
180
+ reason: 'Will transfer as native memories',
181
+ sourceRef: 'memories',
182
+ });
183
+ }
184
+ else {
185
+ items.push({
186
+ type: 'memory',
187
+ name: `Memory Entries (${memories.count} entries)`,
188
+ status: 'adapted',
189
+ reason: `Exceeds memory limit (${memories.count}/${targetLimit})`,
190
+ action: 'Oldest memories will be consolidated',
191
+ sourceRef: 'memories',
192
+ });
193
+ }
194
+ }
195
+ else {
196
+ items.push({
197
+ type: 'memory',
198
+ name: `Memory Entries (${memories.count} entries)`,
199
+ status: 'adapted',
200
+ reason: `${PLATFORM_NAMES[this.target]} doesn't support explicit memories`,
201
+ action: 'Memories will be included in system instructions',
202
+ sourceRef: 'memories',
203
+ });
204
+ }
205
+ return items;
206
+ }
207
+ analyzeConversations(conversations) {
208
+ const items = [];
209
+ if (conversations.count === 0) {
210
+ return items;
211
+ }
212
+ // Conversations generally can't be imported, only preserved
213
+ items.push({
214
+ type: 'conversation',
215
+ name: `Conversations (${conversations.count} chats, ${conversations.messageCount} messages)`,
216
+ status: 'adapted',
217
+ reason: 'Conversation history is preserved but cannot be imported as active chats',
218
+ action: 'Conversations will be archived in your snapshot',
219
+ sourceRef: 'conversations',
220
+ });
221
+ return items;
222
+ }
223
+ analyzeFiles(files) {
224
+ const items = [];
225
+ if (files.count === 0) {
226
+ return items;
227
+ }
228
+ const targetLimit = this.targetCapabilities.fileSizeLimit || Infinity;
229
+ for (const file of files.files) {
230
+ if (file.size > targetLimit) {
231
+ items.push({
232
+ type: 'file',
233
+ name: file.filename,
234
+ status: file.size > targetLimit * 2 ? 'incompatible' : 'adapted',
235
+ reason: `File size (${formatBytes(file.size)}) exceeds ${PLATFORM_NAMES[this.target]} limit (${formatBytes(targetLimit)})`,
236
+ action: file.size > targetLimit * 2 ? 'File cannot be migrated' : 'File may need to be compressed or split',
237
+ sourceRef: `files/${file.id}`,
238
+ });
239
+ }
240
+ else {
241
+ items.push({
242
+ type: 'file',
243
+ name: file.filename,
244
+ status: 'perfect',
245
+ reason: 'Will transfer without modification',
246
+ sourceRef: `files/${file.id}`,
247
+ });
248
+ }
249
+ }
250
+ return items;
251
+ }
252
+ analyzeCustomBots(customBots) {
253
+ const items = [];
254
+ for (const bot of customBots.bots) {
255
+ // Analyze bot instructions
256
+ if (bot.instructions.length <= this.targetCapabilities.instructionLimit) {
257
+ items.push({
258
+ type: 'customBot',
259
+ name: bot.name,
260
+ status: 'perfect',
261
+ reason: 'Bot configuration will transfer',
262
+ sourceRef: `customBots/${bot.id}`,
263
+ });
264
+ }
265
+ else {
266
+ items.push({
267
+ type: 'customBot',
268
+ name: bot.name,
269
+ status: 'adapted',
270
+ reason: 'Bot instructions exceed target limit',
271
+ action: 'Instructions will be summarized',
272
+ sourceRef: `customBots/${bot.id}`,
273
+ });
274
+ }
275
+ // Analyze capabilities
276
+ if (bot.capabilities) {
277
+ for (const capability of bot.capabilities) {
278
+ const featureCompat = FEATURE_COMPATIBILITY.find((f) => f.sourceFeature === capability);
279
+ if (featureCompat) {
280
+ const status = featureCompat.targetPlatforms[this.target] || 'incompatible';
281
+ const featureName = capability === 'dalle' ? 'DALL-E Integration' :
282
+ capability === 'code_interpreter' ? 'Code Interpreter' :
283
+ capability === 'browsing' ? 'Web Browsing' :
284
+ capability === 'plugins' ? 'ChatGPT Plugins' : capability;
285
+ items.push({
286
+ type: 'feature',
287
+ name: featureName,
288
+ status: status,
289
+ reason: status === 'incompatible'
290
+ ? `Not available in ${PLATFORM_NAMES[this.target]}`
291
+ : featureCompat.adaptationNote || 'Works differently in target',
292
+ action: featureCompat.alternatives?.[this.target],
293
+ sourceRef: `customBots/${bot.id}/capabilities/${capability}`,
294
+ });
295
+ }
296
+ }
297
+ }
298
+ }
299
+ return items;
300
+ }
301
+ calculateFeasibility(summary) {
302
+ if (summary.total === 0) {
303
+ return 'easy';
304
+ }
305
+ const perfectRatio = summary.perfect / summary.total;
306
+ const incompatibleRatio = summary.incompatible / summary.total;
307
+ if (incompatibleRatio > 0.3) {
308
+ return 'partial';
309
+ }
310
+ if (incompatibleRatio > 0.1 || perfectRatio < 0.5) {
311
+ return 'complex';
312
+ }
313
+ if (perfectRatio > 0.8) {
314
+ return 'easy';
315
+ }
316
+ return 'moderate';
317
+ }
318
+ }
319
+ // ─── Recommendations Engine ──────────────────────────────────
320
+ export function generateRecommendations(items, source, target) {
321
+ const recommendations = [];
322
+ const adaptedItems = items.filter((i) => i.status === 'adapted');
323
+ const incompatibleItems = items.filter((i) => i.status === 'incompatible');
324
+ // General recommendations
325
+ if (adaptedItems.length > 0) {
326
+ recommendations.push('Review adapted items before finalizing migration');
327
+ }
328
+ // Plugin/capability recommendations
329
+ const hasPluginIssues = items.some((i) => i.type === 'feature' &&
330
+ (i.name.toLowerCase().includes('plugin') || i.name.toLowerCase().includes('dall-e')));
331
+ if (hasPluginIssues && target === 'claude') {
332
+ recommendations.push('Your ChatGPT plugins won\'t transfer - see Claude MCP alternatives');
333
+ }
334
+ // Memory recommendations
335
+ const memoryItem = items.find((i) => i.type === 'memory');
336
+ if (memoryItem?.status === 'adapted' && target === 'claude') {
337
+ recommendations.push('Memories will be converted to project knowledge - review the mapping');
338
+ }
339
+ // Instruction recommendations
340
+ const instructionItem = items.find((i) => i.type === 'instructions');
341
+ if (instructionItem?.status === 'adapted') {
342
+ recommendations.push('Review and approve the instruction reformatting');
343
+ }
344
+ // File recommendations
345
+ const largeFiles = items.filter((i) => i.type === 'file' && i.status !== 'perfect');
346
+ if (largeFiles.length > 0) {
347
+ recommendations.push(`${largeFiles.length} file(s) may need manual handling due to size limits`);
348
+ }
349
+ // Incompatible feature recommendations
350
+ if (incompatibleItems.length > 0) {
351
+ const alternatives = incompatibleItems
352
+ .filter((i) => i.action)
353
+ .map((i) => i.action);
354
+ if (alternatives.length > 0) {
355
+ recommendations.push(...new Set(alternatives)); // Deduplicate
356
+ }
357
+ }
358
+ return recommendations;
359
+ }
360
+ // ─── Report Formatters ───────────────────────────────────────
361
+ export function formatReport(report) {
362
+ const lines = [];
363
+ const sourceName = PLATFORM_NAMES[report.source] || report.source;
364
+ const targetName = PLATFORM_NAMES[report.target] || report.target;
365
+ // Header
366
+ lines.push('╭─────────────────────────────────────────────────────────────╮');
367
+ lines.push(`│ Migration: ${sourceName} → ${targetName}`.padEnd(62) + '│');
368
+ lines.push('├─────────────────────────────────────────────────────────────┤');
369
+ lines.push(`│ ✓ ${report.summary.perfect} items will transfer perfectly`.padEnd(62) + '│');
370
+ lines.push(`│ ⚠ ${report.summary.adapted} items require adaptation`.padEnd(62) + '│');
371
+ lines.push(`│ ✗ ${report.summary.incompatible} items cannot be migrated`.padEnd(62) + '│');
372
+ lines.push('╰─────────────────────────────────────────────────────────────╯');
373
+ lines.push('');
374
+ // Group items by type
375
+ const groupedItems = groupItemsByType(report.items);
376
+ for (const [type, items] of Object.entries(groupedItems)) {
377
+ const typeName = formatTypeName(type);
378
+ lines.push(typeName);
379
+ for (let i = 0; i < items.length; i++) {
380
+ const item = items[i];
381
+ const isLast = i === items.length - 1;
382
+ const prefix = isLast ? ' └─' : ' ├─';
383
+ const symbol = getStatusSymbol(item.status);
384
+ lines.push(`${prefix} ${symbol} ${item.name} (${item.reason})`);
385
+ }
386
+ lines.push('');
387
+ }
388
+ // Recommendations
389
+ if (report.recommendations.length > 0) {
390
+ lines.push('Recommendations:');
391
+ report.recommendations.forEach((rec, i) => {
392
+ lines.push(` ${i + 1}. ${rec}`);
393
+ });
394
+ lines.push('');
395
+ }
396
+ // Feasibility
397
+ lines.push(`Feasibility: ${formatFeasibility(report.feasibility)}`);
398
+ return lines.join('\n');
399
+ }
400
+ export function formatReportJson(report) {
401
+ return JSON.stringify(report, null, 2);
402
+ }
403
+ // ─── Convenience Function ────────────────────────────────────
404
+ export async function analyzeCompatibility(bundle, target, options) {
405
+ const source = bundle.source.platform;
406
+ const analyzer = new CompatibilityAnalyzer(source, target);
407
+ return analyzer.analyze(bundle);
408
+ }
409
+ // ─── Helper Functions ────────────────────────────────────────
410
+ function formatBytes(bytes) {
411
+ if (bytes < 1024)
412
+ return `${bytes} B`;
413
+ if (bytes < 1024 * 1024)
414
+ return `${(bytes / 1024).toFixed(1)} KB`;
415
+ if (bytes < 1024 * 1024 * 1024)
416
+ return `${(bytes / (1024 * 1024)).toFixed(1)} MB`;
417
+ return `${(bytes / (1024 * 1024 * 1024)).toFixed(1)} GB`;
418
+ }
419
+ function getStatusSymbol(status) {
420
+ switch (status) {
421
+ case 'perfect':
422
+ return '✓';
423
+ case 'adapted':
424
+ return '⚠';
425
+ case 'incompatible':
426
+ return '✗';
427
+ }
428
+ }
429
+ function formatTypeName(type) {
430
+ const names = {
431
+ instructions: 'Custom Instructions',
432
+ memory: 'Memories',
433
+ conversation: 'Conversations',
434
+ file: 'Files',
435
+ customBot: 'Custom Bots/GPTs',
436
+ feature: 'Features/Capabilities',
437
+ };
438
+ return names[type] || type;
439
+ }
440
+ function formatFeasibility(feasibility) {
441
+ switch (feasibility) {
442
+ case 'easy':
443
+ return '✓ Easy - Most items transfer cleanly';
444
+ case 'moderate':
445
+ return '⚠ Moderate - Some items need adaptation';
446
+ case 'complex':
447
+ return '⚠ Complex - Significant adaptation required';
448
+ case 'partial':
449
+ return '✗ Partial - Some items cannot be migrated';
450
+ }
451
+ }
452
+ function groupItemsByType(items) {
453
+ return items.reduce((groups, item) => {
454
+ const type = item.type;
455
+ if (!groups[type]) {
456
+ groups[type] = [];
457
+ }
458
+ groups[type].push(item);
459
+ return groups;
460
+ }, {});
461
+ }
462
+ export async function compatibilityCommand(options) {
463
+ // This would be integrated with the CLI framework
464
+ // For now, we export it for integration
465
+ console.log('Compatibility analysis command');
466
+ console.log('Options:', options);
467
+ }
468
+ //# sourceMappingURL=compatibility.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compatibility.js","sourceRoot":"","sources":["../../src/migrate/compatibility.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * ChatGPT Extractor Tests
3
+ *
4
+ * Tests for extracting data from ChatGPT:
5
+ * - Custom instructions
6
+ * - Memory entries
7
+ * - Conversation history
8
+ * - Files/attachments
9
+ * - Custom GPTs
10
+ */
11
+ export {};
12
+ //# sourceMappingURL=chatgpt.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chatgpt.test.d.ts","sourceRoot":"","sources":["../../../../src/migrate/extractors/__tests__/chatgpt.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG"}