@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,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"}
|