@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 @@
1
+ {"version":3,"file":"chatgpt-loader.test.js","sourceRoot":"","sources":["../../../src/migrate/__tests__/chatgpt-loader.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Claude Loader Tests
3
+ *
4
+ * Tests for the Claude Projects loader implementation.
5
+ */
6
+ export {};
7
+ //# sourceMappingURL=claude-loader.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claude-loader.test.d.ts","sourceRoot":"","sources":["../../../src/migrate/__tests__/claude-loader.test.ts"],"names":[],"mappings":"AAAA;;;;GAIG"}
@@ -0,0 +1,544 @@
1
+ /**
2
+ * Claude Loader Tests
3
+ *
4
+ * Tests for the Claude Projects loader implementation.
5
+ */
6
+ import { describe, it, expect, beforeEach, afterEach, vi } from 'vitest';
7
+ import { mkdir, writeFile, rm } from 'node:fs/promises';
8
+ import { existsSync } from 'node:fs';
9
+ import { join } from 'node:path';
10
+ import { tmpdir } from 'node:os';
11
+ import { ClaudeLoader } from '../loaders/claude.js';
12
+ // Mock fetch globally
13
+ const mockFetch = vi.fn();
14
+ global.fetch = mockFetch;
15
+ describe('ClaudeLoader', () => {
16
+ let testWorkDir;
17
+ let loader;
18
+ // Helper to create a test bundle
19
+ function createTestBundle(overrides = {}) {
20
+ return {
21
+ version: '1.0',
22
+ id: 'test-bundle-123',
23
+ source: {
24
+ platform: 'chatgpt',
25
+ extractedAt: '2026-02-07T10:00:00Z',
26
+ extractorVersion: '1.0.0',
27
+ },
28
+ target: {
29
+ platform: 'claude',
30
+ transformedAt: '2026-02-07T11:00:00Z',
31
+ transformerVersion: '1.0.0',
32
+ },
33
+ contents: {
34
+ instructions: {
35
+ content: 'You are a helpful assistant. Be concise and accurate.',
36
+ length: 49,
37
+ },
38
+ memories: {
39
+ entries: [
40
+ { id: 'm1', content: 'User prefers dark mode', createdAt: '2026-01-01T00:00:00Z', category: 'Preferences' },
41
+ { id: 'm2', content: 'User works in tech industry', createdAt: '2026-01-02T00:00:00Z', category: 'Work' },
42
+ { id: 'm3', content: 'User likes TypeScript', createdAt: '2026-01-03T00:00:00Z', category: 'Preferences' },
43
+ ],
44
+ count: 3,
45
+ },
46
+ ...overrides.contents,
47
+ },
48
+ metadata: {
49
+ totalItems: 4,
50
+ itemCounts: {
51
+ instructions: 1,
52
+ memories: 3,
53
+ conversations: 0,
54
+ files: 0,
55
+ customBots: 0,
56
+ },
57
+ warnings: [],
58
+ errors: [],
59
+ ...overrides.metadata,
60
+ },
61
+ ...overrides,
62
+ };
63
+ }
64
+ // Helper to mock successful API responses
65
+ function mockApiSuccess() {
66
+ mockFetch.mockImplementation(async (url, options) => {
67
+ const path = new URL(url).pathname;
68
+ const method = options.method || 'GET';
69
+ // Create project
70
+ if (method === 'POST' && path === '/v1/projects') {
71
+ return new Response(JSON.stringify({
72
+ id: 'proj_test123',
73
+ name: 'Test Project',
74
+ created_at: '2026-02-07T12:00:00Z',
75
+ updated_at: '2026-02-07T12:00:00Z',
76
+ }), { status: 200, headers: { 'Content-Type': 'application/json' } });
77
+ }
78
+ // Update project prompt
79
+ if (method === 'PUT' && path.match(/\/v1\/projects\/[^/]+$/)) {
80
+ return new Response(JSON.stringify({ success: true }), {
81
+ status: 200,
82
+ headers: { 'Content-Type': 'application/json' },
83
+ });
84
+ }
85
+ // Create document
86
+ if (method === 'POST' && path.match(/\/v1\/projects\/[^/]+\/docs$/)) {
87
+ return new Response(JSON.stringify({
88
+ id: `doc_${Date.now()}`,
89
+ name: 'test.md',
90
+ content: 'test',
91
+ created_at: '2026-02-07T12:00:00Z',
92
+ updated_at: '2026-02-07T12:00:00Z',
93
+ }), { status: 200, headers: { 'Content-Type': 'application/json' } });
94
+ }
95
+ // Upload file
96
+ if (method === 'POST' && path.match(/\/v1\/projects\/[^/]+\/files$/)) {
97
+ return new Response(JSON.stringify({
98
+ id: `file_${Date.now()}`,
99
+ name: 'test.txt',
100
+ content_type: 'text/plain',
101
+ size: 100,
102
+ created_at: '2026-02-07T12:00:00Z',
103
+ }), { status: 200, headers: { 'Content-Type': 'application/json' } });
104
+ }
105
+ // Delete project
106
+ if (method === 'DELETE' && path.match(/\/v1\/projects\/[^/]+$/)) {
107
+ return new Response(null, { status: 204 });
108
+ }
109
+ return new Response(JSON.stringify({ error: { message: 'Not found' } }), { status: 404 });
110
+ });
111
+ }
112
+ beforeEach(async () => {
113
+ testWorkDir = join(tmpdir(), `claude-loader-test-${Date.now()}-${Math.random().toString(36).slice(2)}`);
114
+ await mkdir(testWorkDir, { recursive: true });
115
+ mockFetch.mockReset();
116
+ loader = new ClaudeLoader({
117
+ apiKey: 'test-api-key',
118
+ baseUrl: 'https://api.anthropic.com',
119
+ });
120
+ });
121
+ afterEach(async () => {
122
+ if (existsSync(testWorkDir)) {
123
+ await rm(testWorkDir, { recursive: true, force: true });
124
+ }
125
+ });
126
+ describe('canLoad', () => {
127
+ it('should return true when API key is set', async () => {
128
+ const result = await loader.canLoad();
129
+ expect(result).toBe(true);
130
+ });
131
+ it('should return false when API key is missing', async () => {
132
+ const loaderNoKey = new ClaudeLoader({ apiKey: '' });
133
+ const result = await loaderNoKey.canLoad();
134
+ expect(result).toBe(false);
135
+ });
136
+ });
137
+ describe('load - success cases', () => {
138
+ it('should create a Claude project with all components', async () => {
139
+ mockApiSuccess();
140
+ const bundle = createTestBundle();
141
+ const result = await loader.load(bundle, {
142
+ projectName: 'Test Migration',
143
+ });
144
+ expect(result.success).toBe(true);
145
+ expect(result.loaded.instructions).toBe(true);
146
+ expect(result.loaded.memories).toBe(3);
147
+ expect(result.created?.projectId).toBe('proj_test123');
148
+ expect(result.created?.projectUrl).toContain('proj_test123');
149
+ expect(result.errors).toHaveLength(0);
150
+ });
151
+ it('should set system prompt from instructions', async () => {
152
+ mockApiSuccess();
153
+ const bundle = createTestBundle();
154
+ await loader.load(bundle, {});
155
+ // Verify PUT request was made to update project prompt
156
+ const putCalls = mockFetch.mock.calls.filter((call) => {
157
+ const [url, opts] = call;
158
+ return opts.method === 'PUT' && url.includes('/v1/projects/');
159
+ });
160
+ expect(putCalls.length).toBe(1);
161
+ const [, opts] = putCalls[0];
162
+ const body = JSON.parse(opts.body);
163
+ expect(body.prompt_template).toBe(bundle.contents.instructions?.content);
164
+ });
165
+ it('should create memories document with formatted content', async () => {
166
+ mockApiSuccess();
167
+ const bundle = createTestBundle();
168
+ await loader.load(bundle, {});
169
+ // Verify POST request was made to create document
170
+ const docCalls = mockFetch.mock.calls.filter((call) => {
171
+ const [url, opts] = call;
172
+ return opts.method === 'POST' && url.includes('/docs');
173
+ });
174
+ expect(docCalls.length).toBeGreaterThanOrEqual(1);
175
+ const [, opts] = docCalls[0];
176
+ const body = JSON.parse(opts.body);
177
+ expect(body.name).toBe('memories.md');
178
+ expect(body.content).toContain('Migrated Memories');
179
+ expect(body.content).toContain('User prefers dark mode');
180
+ });
181
+ it('should handle bundle without instructions', async () => {
182
+ mockApiSuccess();
183
+ const bundle = createTestBundle({
184
+ contents: {
185
+ memories: {
186
+ entries: [{ id: 'm1', content: 'Test memory', createdAt: '2026-01-01T00:00:00Z' }],
187
+ count: 1,
188
+ },
189
+ },
190
+ });
191
+ const result = await loader.load(bundle, {});
192
+ expect(result.success).toBe(true);
193
+ expect(result.loaded.instructions).toBe(false);
194
+ expect(result.loaded.memories).toBe(1);
195
+ });
196
+ it('should handle bundle without memories', async () => {
197
+ mockApiSuccess();
198
+ const bundle = createTestBundle({
199
+ contents: {
200
+ instructions: { content: 'Test instructions', length: 17 },
201
+ },
202
+ });
203
+ const result = await loader.load(bundle, {});
204
+ expect(result.success).toBe(true);
205
+ expect(result.loaded.instructions).toBe(true);
206
+ expect(result.loaded.memories).toBe(0);
207
+ });
208
+ it('should track progress during load', async () => {
209
+ mockApiSuccess();
210
+ const bundle = createTestBundle();
211
+ const progressUpdates = [];
212
+ await loader.load(bundle, {
213
+ onProgress: (progress, message) => {
214
+ progressUpdates.push({ progress, message });
215
+ },
216
+ });
217
+ expect(progressUpdates.length).toBeGreaterThan(0);
218
+ // Progress should increase monotonically
219
+ let lastProgress = 0;
220
+ for (const update of progressUpdates) {
221
+ expect(update.progress).toBeGreaterThanOrEqual(lastProgress);
222
+ lastProgress = update.progress;
223
+ }
224
+ // Should reach 100%
225
+ expect(progressUpdates[progressUpdates.length - 1].progress).toBe(1.0);
226
+ });
227
+ });
228
+ describe('load - file uploads', () => {
229
+ it('should upload files to project', async () => {
230
+ mockApiSuccess();
231
+ // Create a test file
232
+ const testFilePath = join(testWorkDir, 'test-document.txt');
233
+ await writeFile(testFilePath, 'Hello, this is test content');
234
+ const bundle = createTestBundle({
235
+ contents: {
236
+ instructions: { content: 'Test', length: 4 },
237
+ files: {
238
+ files: [
239
+ {
240
+ id: 'f1',
241
+ filename: 'test-document.txt',
242
+ mimeType: 'text/plain',
243
+ size: 27,
244
+ path: testFilePath,
245
+ },
246
+ ],
247
+ count: 1,
248
+ totalSize: 27,
249
+ },
250
+ },
251
+ });
252
+ const result = await loader.load(bundle, {});
253
+ expect(result.success).toBe(true);
254
+ expect(result.loaded.files).toBe(1);
255
+ // Verify file upload was called
256
+ const fileCalls = mockFetch.mock.calls.filter((call) => {
257
+ const [url] = call;
258
+ return url.includes('/files');
259
+ });
260
+ expect(fileCalls.length).toBe(1);
261
+ });
262
+ it('should skip files exceeding size limit', async () => {
263
+ mockApiSuccess();
264
+ const testFilePath = join(testWorkDir, 'large-file.txt');
265
+ await writeFile(testFilePath, 'x'.repeat(100));
266
+ const bundle = createTestBundle({
267
+ contents: {
268
+ instructions: { content: 'Test', length: 4 },
269
+ files: {
270
+ files: [
271
+ {
272
+ id: 'f1',
273
+ filename: 'large-file.txt',
274
+ mimeType: 'text/plain',
275
+ size: 50 * 1024 * 1024, // 50MB (exceeds 32MB limit)
276
+ path: testFilePath,
277
+ },
278
+ ],
279
+ count: 1,
280
+ totalSize: 50 * 1024 * 1024,
281
+ },
282
+ },
283
+ });
284
+ const result = await loader.load(bundle, {});
285
+ expect(result.success).toBe(true);
286
+ expect(result.loaded.files).toBe(0);
287
+ expect(result.warnings).toContainEqual(expect.stringContaining('exceeds size limit'));
288
+ });
289
+ it('should warn about missing files', async () => {
290
+ mockApiSuccess();
291
+ const bundle = createTestBundle({
292
+ contents: {
293
+ instructions: { content: 'Test', length: 4 },
294
+ files: {
295
+ files: [
296
+ {
297
+ id: 'f1',
298
+ filename: 'missing-file.txt',
299
+ mimeType: 'text/plain',
300
+ size: 100,
301
+ path: '/nonexistent/missing-file.txt',
302
+ },
303
+ ],
304
+ count: 1,
305
+ totalSize: 100,
306
+ },
307
+ },
308
+ });
309
+ const result = await loader.load(bundle, {});
310
+ expect(result.success).toBe(true);
311
+ expect(result.loaded.files).toBe(0);
312
+ expect(result.warnings).toContainEqual(expect.stringContaining('not found'));
313
+ });
314
+ });
315
+ describe('load - context summary', () => {
316
+ it('should create context summary from conversation summaries', async () => {
317
+ mockApiSuccess();
318
+ const bundle = createTestBundle({
319
+ contents: {
320
+ instructions: { content: 'Test', length: 4 },
321
+ conversations: {
322
+ path: '/conversations',
323
+ count: 2,
324
+ messageCount: 100,
325
+ summaries: [
326
+ {
327
+ id: 'c1',
328
+ title: 'Project Discussion',
329
+ messageCount: 50,
330
+ createdAt: '2026-01-01T00:00:00Z',
331
+ updatedAt: '2026-01-02T00:00:00Z',
332
+ keyPoints: ['Decided to use TypeScript', 'Agreed on weekly meetings'],
333
+ },
334
+ {
335
+ id: 'c2',
336
+ title: 'Code Review',
337
+ messageCount: 50,
338
+ createdAt: '2026-01-03T00:00:00Z',
339
+ updatedAt: '2026-01-04T00:00:00Z',
340
+ keyPoints: ['Need more tests', 'Consider refactoring auth module'],
341
+ },
342
+ ],
343
+ },
344
+ },
345
+ });
346
+ await loader.load(bundle, {});
347
+ // Verify context summary document was created
348
+ const docCalls = mockFetch.mock.calls.filter((call) => {
349
+ const [url, opts] = call;
350
+ return opts.method === 'POST' && url.includes('/docs');
351
+ });
352
+ const contextDocCall = docCalls.find((call) => {
353
+ const [, opts] = call;
354
+ const body = JSON.parse(opts.body);
355
+ return body.name === 'context-summary.md';
356
+ });
357
+ expect(contextDocCall).toBeDefined();
358
+ const [, contextOpts] = contextDocCall;
359
+ const body = JSON.parse(contextOpts.body);
360
+ expect(body.content).toContain('Conversation Context Summary');
361
+ expect(body.content).toContain('Decided to use TypeScript');
362
+ });
363
+ });
364
+ describe('load - dry run', () => {
365
+ it('should not make API calls in dry run mode', async () => {
366
+ const bundle = createTestBundle();
367
+ const result = await loader.load(bundle, { dryRun: true });
368
+ expect(result.success).toBe(true);
369
+ expect(result.warnings).toContain('Dry run - no changes made');
370
+ expect(mockFetch).not.toHaveBeenCalled();
371
+ });
372
+ it('should report potential issues in dry run', async () => {
373
+ const bundle = createTestBundle({
374
+ contents: {
375
+ instructions: { content: 'x'.repeat(10000), length: 10000 }, // Exceeds 8000 char limit
376
+ },
377
+ });
378
+ const result = await loader.load(bundle, { dryRun: true });
379
+ expect(result.warnings).toContainEqual(expect.stringContaining('would be truncated'));
380
+ });
381
+ });
382
+ describe('load - error handling', () => {
383
+ it('should handle API errors gracefully', async () => {
384
+ mockFetch.mockResolvedValueOnce(new Response(JSON.stringify({ error: { message: 'Invalid API key' } }), {
385
+ status: 401,
386
+ }));
387
+ const bundle = createTestBundle();
388
+ const result = await loader.load(bundle, {});
389
+ expect(result.success).toBe(false);
390
+ expect(result.errors).toContainEqual(expect.stringContaining('Invalid API key'));
391
+ });
392
+ it('should return partial results on mid-load failure', async () => {
393
+ // First call succeeds (create project)
394
+ mockFetch
395
+ .mockResolvedValueOnce(new Response(JSON.stringify({
396
+ id: 'proj_partial',
397
+ name: 'Partial Project',
398
+ created_at: '2026-02-07T12:00:00Z',
399
+ updated_at: '2026-02-07T12:00:00Z',
400
+ }), { status: 200, headers: { 'Content-Type': 'application/json' } }))
401
+ // Second call fails (set prompt)
402
+ .mockResolvedValueOnce(new Response(JSON.stringify({ error: { message: 'Server error' } }), {
403
+ status: 500,
404
+ }));
405
+ const bundle = createTestBundle();
406
+ const result = await loader.load(bundle, {});
407
+ expect(result.success).toBe(false);
408
+ expect(result.created?.projectId).toBe('proj_partial');
409
+ expect(result.loaded.instructions).toBe(false);
410
+ });
411
+ it('should retry on rate limit errors', async () => {
412
+ let callCount = 0;
413
+ mockFetch.mockImplementation(async () => {
414
+ callCount++;
415
+ if (callCount === 1) {
416
+ return new Response(JSON.stringify({ error: { message: 'Rate limited' } }), {
417
+ status: 429,
418
+ headers: { 'retry-after': '0' }, // Immediate retry for test
419
+ });
420
+ }
421
+ return new Response(JSON.stringify({
422
+ id: 'proj_retry',
423
+ name: 'Retry Project',
424
+ created_at: '2026-02-07T12:00:00Z',
425
+ updated_at: '2026-02-07T12:00:00Z',
426
+ }), { status: 200, headers: { 'Content-Type': 'application/json' } });
427
+ });
428
+ const bundle = createTestBundle({
429
+ contents: {
430
+ instructions: { content: 'Test', length: 4 },
431
+ },
432
+ });
433
+ // Use minimal bundle to reduce API calls
434
+ bundle.contents.memories = undefined;
435
+ const loaderWithRetry = new ClaudeLoader({
436
+ apiKey: 'test-key',
437
+ retryDelayMs: 10, // Fast retries for test
438
+ });
439
+ const result = await loaderWithRetry.load(bundle, {});
440
+ expect(result.success).toBe(true);
441
+ expect(callCount).toBeGreaterThan(1);
442
+ });
443
+ });
444
+ describe('load - bundle validation', () => {
445
+ it('should reject bundles not transformed for Claude', async () => {
446
+ const bundle = createTestBundle({
447
+ target: {
448
+ platform: 'chatgpt',
449
+ transformedAt: '2026-02-07T11:00:00Z',
450
+ transformerVersion: '1.0.0',
451
+ },
452
+ });
453
+ await expect(loader.load(bundle, {})).rejects.toThrow('not transformed for Claude');
454
+ });
455
+ });
456
+ describe('load - custom bots handling', () => {
457
+ it('should add manual steps when custom bots are present', async () => {
458
+ mockApiSuccess();
459
+ const bundle = createTestBundle({
460
+ contents: {
461
+ instructions: { content: 'Test', length: 4 },
462
+ customBots: {
463
+ bots: [
464
+ {
465
+ id: 'gpt1',
466
+ name: 'My Custom GPT',
467
+ instructions: 'Be helpful',
468
+ createdAt: '2026-01-01T00:00:00Z',
469
+ },
470
+ ],
471
+ count: 1,
472
+ },
473
+ },
474
+ });
475
+ const result = await loader.load(bundle, {});
476
+ expect(result.success).toBe(true);
477
+ expect(result.loaded.customBots).toBe(0);
478
+ expect(result.manualSteps).toBeDefined();
479
+ expect(result.manualSteps).toContainEqual(expect.stringContaining('custom bots'));
480
+ });
481
+ });
482
+ describe('load state management', () => {
483
+ it('should track and expose load state for checkpointing', async () => {
484
+ mockApiSuccess();
485
+ const bundle = createTestBundle();
486
+ await loader.load(bundle, {});
487
+ const state = loader.getLoadState();
488
+ expect(state.projectId).toBe('proj_test123');
489
+ expect(state.instructionsLoaded).toBe(true);
490
+ expect(state.memoriesDocId).toBeDefined();
491
+ });
492
+ it('should allow setting load state for resume', async () => {
493
+ const previousState = {
494
+ projectId: 'proj_resume',
495
+ instructionsLoaded: true,
496
+ memoriesDocId: 'doc_123',
497
+ contextDocId: undefined,
498
+ uploadedFileIds: ['file_1', 'file_2'],
499
+ uploadedFilenames: ['a.txt', 'b.txt'],
500
+ lastFileIndex: 1,
501
+ };
502
+ loader.setLoadState(previousState);
503
+ const state = loader.getLoadState();
504
+ expect(state.projectId).toBe('proj_resume');
505
+ expect(state.uploadedFileIds).toEqual(['file_1', 'file_2']);
506
+ expect(state.lastFileIndex).toBe(1);
507
+ });
508
+ });
509
+ describe('getProgress', () => {
510
+ it('should return current progress', async () => {
511
+ mockApiSuccess();
512
+ const bundle = createTestBundle();
513
+ // Before load
514
+ expect(loader.getProgress()).toBe(0);
515
+ await loader.load(bundle, {});
516
+ // After load
517
+ expect(loader.getProgress()).toBe(100);
518
+ });
519
+ });
520
+ describe('instructions truncation', () => {
521
+ it('should truncate instructions exceeding limit and warn', async () => {
522
+ mockApiSuccess();
523
+ const longInstructions = 'x'.repeat(10000); // Exceeds 8000 char limit
524
+ const bundle = createTestBundle({
525
+ contents: {
526
+ instructions: { content: longInstructions, length: 10000 },
527
+ },
528
+ });
529
+ const result = await loader.load(bundle, {});
530
+ expect(result.success).toBe(true);
531
+ expect(result.warnings).toContainEqual(expect.stringContaining('truncated'));
532
+ // Verify truncated content was sent
533
+ const putCalls = mockFetch.mock.calls.filter((call) => {
534
+ const [url, opts] = call;
535
+ return opts.method === 'PUT' && url.includes('/v1/projects/');
536
+ });
537
+ expect(putCalls.length).toBe(1);
538
+ const [, opts] = putCalls[0];
539
+ const body = JSON.parse(opts.body);
540
+ expect(body.prompt_template.length).toBe(8000);
541
+ });
542
+ });
543
+ });
544
+ //# sourceMappingURL=claude-loader.test.js.map