@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,137 @@
1
+ /**
2
+ * Mock Extractor for Testing
3
+ *
4
+ * Simulates extracting data from a platform for testing the orchestrator.
5
+ */
6
+ import { randomBytes } from 'node:crypto';
7
+ export class MockExtractor {
8
+ platform;
9
+ version = '1.0.0-mock';
10
+ options;
11
+ progress = 0;
12
+ constructor(platform, options = {}) {
13
+ this.platform = platform;
14
+ this.options = options;
15
+ }
16
+ async canExtract() {
17
+ return this.options.canExtractResult ?? true;
18
+ }
19
+ async extract(options) {
20
+ this.progress = 0;
21
+ // Simulate delay
22
+ if (this.options.delayMs) {
23
+ const steps = 10;
24
+ const stepDelay = this.options.delayMs / steps;
25
+ for (let i = 0; i < steps; i++) {
26
+ await new Promise((r) => setTimeout(r, stepDelay));
27
+ this.progress = ((i + 1) / steps) * 100;
28
+ options.onProgress?.(this.progress / 100, `Extracting step ${i + 1}/${steps}`);
29
+ }
30
+ }
31
+ // Simulate failure
32
+ if (this.options.shouldFail) {
33
+ throw new Error(this.options.failureMessage ?? 'Mock extraction failed');
34
+ }
35
+ // Return custom bundle or generate a mock one
36
+ if (this.options.customBundle) {
37
+ return this.options.customBundle;
38
+ }
39
+ return this.generateMockBundle();
40
+ }
41
+ getProgress() {
42
+ return this.progress;
43
+ }
44
+ generateMockBundle() {
45
+ const bundleId = `bundle_${randomBytes(8).toString('hex')}`;
46
+ return {
47
+ version: '1.0',
48
+ id: bundleId,
49
+ source: {
50
+ platform: this.platform,
51
+ extractedAt: new Date().toISOString(),
52
+ accountId: 'mock-account-123',
53
+ extractorVersion: this.version,
54
+ },
55
+ contents: {
56
+ instructions: {
57
+ content: `Mock instructions from ${this.platform}.\n\nThis is a test instruction set with multiple paragraphs.\n\nIt includes guidance on how the AI should behave.`,
58
+ length: 150,
59
+ sections: [
60
+ { title: 'Identity', content: 'I am a helpful assistant', priority: 'high' },
61
+ { title: 'Guidelines', content: 'Be helpful, accurate, and safe', priority: 'medium' },
62
+ ],
63
+ },
64
+ memories: {
65
+ entries: [
66
+ {
67
+ id: 'mem_1',
68
+ content: 'User prefers concise responses',
69
+ createdAt: new Date().toISOString(),
70
+ category: 'preferences',
71
+ },
72
+ {
73
+ id: 'mem_2',
74
+ content: 'User is a software developer',
75
+ createdAt: new Date().toISOString(),
76
+ category: 'context',
77
+ },
78
+ {
79
+ id: 'mem_3',
80
+ content: 'User lives in New York',
81
+ createdAt: new Date().toISOString(),
82
+ category: 'context',
83
+ },
84
+ ],
85
+ count: 3,
86
+ },
87
+ conversations: {
88
+ path: 'conversations/',
89
+ count: 5,
90
+ messageCount: 42,
91
+ summaries: [
92
+ {
93
+ id: 'conv_1',
94
+ title: 'Project Discussion',
95
+ messageCount: 12,
96
+ createdAt: new Date().toISOString(),
97
+ updatedAt: new Date().toISOString(),
98
+ },
99
+ {
100
+ id: 'conv_2',
101
+ title: 'Code Review',
102
+ messageCount: 30,
103
+ createdAt: new Date().toISOString(),
104
+ updatedAt: new Date().toISOString(),
105
+ },
106
+ ],
107
+ },
108
+ files: {
109
+ files: [
110
+ {
111
+ id: 'file_1',
112
+ filename: 'project-notes.md',
113
+ mimeType: 'text/markdown',
114
+ size: 2048,
115
+ path: 'files/project-notes.md',
116
+ },
117
+ ],
118
+ count: 1,
119
+ totalSize: 2048,
120
+ },
121
+ },
122
+ metadata: {
123
+ totalItems: 10,
124
+ itemCounts: {
125
+ instructions: 1,
126
+ memories: 3,
127
+ conversations: 5,
128
+ files: 1,
129
+ customBots: 0,
130
+ },
131
+ warnings: [],
132
+ errors: [],
133
+ },
134
+ };
135
+ }
136
+ }
137
+ //# sourceMappingURL=mock-extractor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mock-extractor.js","sourceRoot":"","sources":["../../../src/migrate/testing/mock-extractor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,36 @@
1
+ /**
2
+ * Mock Loader for Testing
3
+ *
4
+ * Simulates loading data to a platform for testing the orchestrator.
5
+ */
6
+ import type { Platform, Loader, LoadOptions, LoadResult, MigrationBundle } from '../types.js';
7
+ export interface MockLoaderOptions {
8
+ /** Simulate failure */
9
+ shouldFail?: boolean;
10
+ /** Failure message */
11
+ failureMessage?: string;
12
+ /** Delay loading by N ms */
13
+ delayMs?: number;
14
+ /** Custom load result */
15
+ customResult?: LoadResult;
16
+ /** Whether canLoad returns true */
17
+ canLoadResult?: boolean;
18
+ /** Simulate partial failure */
19
+ partialFailure?: {
20
+ memories?: boolean;
21
+ files?: boolean;
22
+ };
23
+ }
24
+ export declare class MockLoader implements Loader {
25
+ readonly platform: Platform;
26
+ readonly version = "1.0.0-mock";
27
+ private options;
28
+ private progress;
29
+ /** Track what was loaded for testing assertions */
30
+ loadedBundles: MigrationBundle[];
31
+ constructor(platform: Platform, options?: MockLoaderOptions);
32
+ canLoad(): Promise<boolean>;
33
+ load(bundle: MigrationBundle, options: LoadOptions): Promise<LoadResult>;
34
+ getProgress(): number;
35
+ }
36
+ //# sourceMappingURL=mock-loader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mock-loader.d.ts","sourceRoot":"","sources":["../../../src/migrate/testing/mock-loader.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EACV,QAAQ,EACR,MAAM,EACN,WAAW,EACX,UAAU,EACV,eAAe,EAChB,MAAM,aAAa,CAAC;AAGrB,MAAM,WAAW,iBAAiB;IAChC,uBAAuB;IACvB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,sBAAsB;IACtB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,4BAA4B;IAC5B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,yBAAyB;IACzB,YAAY,CAAC,EAAE,UAAU,CAAC;IAC1B,mCAAmC;IACnC,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,+BAA+B;IAC/B,cAAc,CAAC,EAAE;QACf,QAAQ,CAAC,EAAE,OAAO,CAAC;QACnB,KAAK,CAAC,EAAE,OAAO,CAAC;KACjB,CAAC;CACH;AAED,qBAAa,UAAW,YAAW,MAAM;IACvC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAC5B,QAAQ,CAAC,OAAO,gBAAgB;IAEhC,OAAO,CAAC,OAAO,CAAoB;IACnC,OAAO,CAAC,QAAQ,CAAK;IAErB,mDAAmD;IAC5C,aAAa,EAAE,eAAe,EAAE,CAAM;gBAEjC,QAAQ,EAAE,QAAQ,EAAE,OAAO,GAAE,iBAAsB;IAKzD,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC;IAI3B,IAAI,CAAC,MAAM,EAAE,eAAe,EAAE,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC;IAkE9E,WAAW,IAAI,MAAM;CAGtB"}
@@ -0,0 +1,81 @@
1
+ /**
2
+ * Mock Loader for Testing
3
+ *
4
+ * Simulates loading data to a platform for testing the orchestrator.
5
+ */
6
+ import { randomBytes } from 'node:crypto';
7
+ export class MockLoader {
8
+ platform;
9
+ version = '1.0.0-mock';
10
+ options;
11
+ progress = 0;
12
+ /** Track what was loaded for testing assertions */
13
+ loadedBundles = [];
14
+ constructor(platform, options = {}) {
15
+ this.platform = platform;
16
+ this.options = options;
17
+ }
18
+ async canLoad() {
19
+ return this.options.canLoadResult ?? true;
20
+ }
21
+ async load(bundle, options) {
22
+ this.progress = 0;
23
+ // Simulate delay
24
+ if (this.options.delayMs) {
25
+ const steps = 10;
26
+ const stepDelay = this.options.delayMs / steps;
27
+ for (let i = 0; i < steps; i++) {
28
+ await new Promise((r) => setTimeout(r, stepDelay));
29
+ this.progress = ((i + 1) / steps) * 100;
30
+ options.onProgress?.(this.progress / 100, `Loading step ${i + 1}/${steps}`);
31
+ }
32
+ }
33
+ // Simulate failure
34
+ if (this.options.shouldFail) {
35
+ throw new Error(this.options.failureMessage ?? 'Mock load failed');
36
+ }
37
+ // Return custom result if provided
38
+ if (this.options.customResult) {
39
+ return this.options.customResult;
40
+ }
41
+ // Track loaded bundle for testing
42
+ this.loadedBundles.push(bundle);
43
+ const warnings = [];
44
+ const errors = [];
45
+ // Calculate what was loaded
46
+ let memoriesLoaded = bundle.contents.memories?.count ?? 0;
47
+ let filesLoaded = bundle.contents.files?.count ?? 0;
48
+ // Simulate partial failure
49
+ if (this.options.partialFailure?.memories) {
50
+ memoriesLoaded = Math.floor(memoriesLoaded / 2);
51
+ warnings.push('Some memories failed to load');
52
+ }
53
+ if (this.options.partialFailure?.files) {
54
+ filesLoaded = 0;
55
+ errors.push('File upload failed');
56
+ }
57
+ const projectId = `proj_${randomBytes(6).toString('hex')}`;
58
+ return {
59
+ success: true,
60
+ loaded: {
61
+ instructions: !!bundle.contents.instructions,
62
+ memories: memoriesLoaded,
63
+ files: filesLoaded,
64
+ customBots: bundle.contents.customBots?.count ?? 0,
65
+ },
66
+ created: {
67
+ projectId,
68
+ projectUrl: `https://mock.${this.platform}.com/projects/${projectId}`,
69
+ },
70
+ warnings,
71
+ errors,
72
+ manualSteps: bundle.contents.customBots
73
+ ? ['Custom bots may require manual configuration']
74
+ : undefined,
75
+ };
76
+ }
77
+ getProgress() {
78
+ return this.progress;
79
+ }
80
+ }
81
+ //# sourceMappingURL=mock-loader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mock-loader.js","sourceRoot":"","sources":["../../../src/migrate/testing/mock-loader.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ /**
2
+ * Mock Transformer for Testing
3
+ *
4
+ * Simulates transforming data between platforms for testing the orchestrator.
5
+ */
6
+ import type { Platform, Transformer, TransformOptions, MigrationBundle, CompatibilityReport } from '../types.js';
7
+ export interface MockTransformerOptions {
8
+ /** Simulate failure */
9
+ shouldFail?: boolean;
10
+ /** Failure message */
11
+ failureMessage?: string;
12
+ /** Delay transformation by N ms */
13
+ delayMs?: number;
14
+ /** Custom compatibility report */
15
+ customReport?: CompatibilityReport;
16
+ }
17
+ export declare class MockTransformer implements Transformer {
18
+ readonly source: Platform;
19
+ readonly target: Platform;
20
+ readonly version = "1.0.0-mock";
21
+ private options;
22
+ constructor(source: Platform, target: Platform, options?: MockTransformerOptions);
23
+ analyze(bundle: MigrationBundle): Promise<CompatibilityReport>;
24
+ transform(bundle: MigrationBundle, options: TransformOptions): Promise<MigrationBundle>;
25
+ }
26
+ //# sourceMappingURL=mock-transformer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mock-transformer.d.ts","sourceRoot":"","sources":["../../../src/migrate/testing/mock-transformer.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EACV,QAAQ,EACR,WAAW,EACX,gBAAgB,EAChB,eAAe,EACf,mBAAmB,EAEpB,MAAM,aAAa,CAAC;AAGrB,MAAM,WAAW,sBAAsB;IACrC,uBAAuB;IACvB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,sBAAsB;IACtB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,mCAAmC;IACnC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,kCAAkC;IAClC,YAAY,CAAC,EAAE,mBAAmB,CAAC;CACpC;AAED,qBAAa,eAAgB,YAAW,WAAW;IACjD,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC;IAC1B,QAAQ,CAAC,OAAO,gBAAgB;IAEhC,OAAO,CAAC,OAAO,CAAyB;gBAE5B,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,GAAE,sBAA2B;IAM9E,OAAO,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAmH9D,SAAS,CACb,MAAM,EAAE,eAAe,EACvB,OAAO,EAAE,gBAAgB,GACxB,OAAO,CAAC,eAAe,CAAC;CA6D5B"}
@@ -0,0 +1,185 @@
1
+ /**
2
+ * Mock Transformer for Testing
3
+ *
4
+ * Simulates transforming data between platforms for testing the orchestrator.
5
+ */
6
+ import { getPlatformCapabilities } from '../capabilities.js';
7
+ export class MockTransformer {
8
+ source;
9
+ target;
10
+ version = '1.0.0-mock';
11
+ options;
12
+ constructor(source, target, options = {}) {
13
+ this.source = source;
14
+ this.target = target;
15
+ this.options = options;
16
+ }
17
+ async analyze(bundle) {
18
+ if (this.options.customReport) {
19
+ return this.options.customReport;
20
+ }
21
+ const sourceCaps = getPlatformCapabilities(this.source);
22
+ const targetCaps = getPlatformCapabilities(this.target);
23
+ const items = [];
24
+ let perfect = 0;
25
+ let adapted = 0;
26
+ let incompatible = 0;
27
+ // Analyze instructions
28
+ if (bundle.contents.instructions) {
29
+ const length = bundle.contents.instructions.length;
30
+ if (length <= targetCaps.instructionLimit) {
31
+ items.push({
32
+ type: 'instructions',
33
+ name: 'System Instructions',
34
+ status: 'perfect',
35
+ reason: `Within ${targetCaps.name}'s limit of ${targetCaps.instructionLimit} characters`,
36
+ });
37
+ perfect++;
38
+ }
39
+ else {
40
+ items.push({
41
+ type: 'instructions',
42
+ name: 'System Instructions',
43
+ status: 'adapted',
44
+ reason: `Exceeds ${targetCaps.name}'s limit (${length} > ${targetCaps.instructionLimit})`,
45
+ action: 'Will be summarized or truncated',
46
+ });
47
+ adapted++;
48
+ }
49
+ }
50
+ // Analyze memories
51
+ if (bundle.contents.memories && bundle.contents.memories.count > 0) {
52
+ if (targetCaps.hasMemory) {
53
+ const limit = targetCaps.memoryLimit ?? Infinity;
54
+ if (bundle.contents.memories.count <= limit) {
55
+ items.push({
56
+ type: 'memory',
57
+ name: 'Memory Entries',
58
+ status: 'perfect',
59
+ reason: `All ${bundle.contents.memories.count} memories can be migrated`,
60
+ });
61
+ perfect++;
62
+ }
63
+ else {
64
+ items.push({
65
+ type: 'memory',
66
+ name: 'Memory Entries',
67
+ status: 'adapted',
68
+ reason: `${bundle.contents.memories.count} memories exceeds limit of ${limit}`,
69
+ action: 'Most important memories will be selected',
70
+ });
71
+ adapted++;
72
+ }
73
+ }
74
+ else {
75
+ items.push({
76
+ type: 'memory',
77
+ name: 'Memory Entries',
78
+ status: 'adapted',
79
+ reason: `${targetCaps.name} doesn't support explicit memories`,
80
+ action: 'Will be converted to knowledge documents',
81
+ });
82
+ adapted++;
83
+ }
84
+ }
85
+ // Analyze files
86
+ if (bundle.contents.files && bundle.contents.files.count > 0) {
87
+ if (targetCaps.hasFiles) {
88
+ items.push({
89
+ type: 'file',
90
+ name: 'Uploaded Files',
91
+ status: 'perfect',
92
+ reason: `All ${bundle.contents.files.count} files can be migrated`,
93
+ });
94
+ perfect++;
95
+ }
96
+ else {
97
+ items.push({
98
+ type: 'file',
99
+ name: 'Uploaded Files',
100
+ status: 'incompatible',
101
+ reason: `${targetCaps.name} doesn't support file uploads`,
102
+ });
103
+ incompatible++;
104
+ }
105
+ }
106
+ const total = perfect + adapted + incompatible;
107
+ let feasibility;
108
+ if (incompatible === 0 && adapted === 0) {
109
+ feasibility = 'easy';
110
+ }
111
+ else if (incompatible === 0) {
112
+ feasibility = 'moderate';
113
+ }
114
+ else if (incompatible < total / 2) {
115
+ feasibility = 'complex';
116
+ }
117
+ else {
118
+ feasibility = 'partial';
119
+ }
120
+ return {
121
+ source: this.source,
122
+ target: this.target,
123
+ generatedAt: new Date().toISOString(),
124
+ summary: { perfect, adapted, incompatible, total },
125
+ items,
126
+ recommendations: adapted > 0 ? ['Review adapted items before migration'] : [],
127
+ feasibility,
128
+ };
129
+ }
130
+ async transform(bundle, options) {
131
+ // Simulate delay
132
+ if (this.options.delayMs) {
133
+ const steps = 10;
134
+ const stepDelay = this.options.delayMs / steps;
135
+ for (let i = 0; i < steps; i++) {
136
+ await new Promise((r) => setTimeout(r, stepDelay));
137
+ options.onProgress?.(((i + 1) / steps) * 100, `Transforming step ${i + 1}/${steps}`);
138
+ }
139
+ }
140
+ // Simulate failure
141
+ if (this.options.shouldFail) {
142
+ throw new Error(this.options.failureMessage ?? 'Mock transformation failed');
143
+ }
144
+ const targetCaps = getPlatformCapabilities(this.target);
145
+ // Create transformed bundle
146
+ const transformed = {
147
+ ...bundle,
148
+ target: {
149
+ platform: this.target,
150
+ transformedAt: new Date().toISOString(),
151
+ transformerVersion: this.version,
152
+ },
153
+ contents: { ...bundle.contents },
154
+ };
155
+ // Apply transformations based on target capabilities
156
+ if (transformed.contents.instructions) {
157
+ const content = transformed.contents.instructions.content;
158
+ if (content.length > targetCaps.instructionLimit) {
159
+ if (options.overflowStrategy === 'truncate') {
160
+ transformed.contents.instructions = {
161
+ ...transformed.contents.instructions,
162
+ content: content.substring(0, targetCaps.instructionLimit - 3) + '...',
163
+ length: targetCaps.instructionLimit,
164
+ };
165
+ }
166
+ else if (options.overflowStrategy === 'summarize') {
167
+ // Mock summarization - just truncate with a note
168
+ transformed.contents.instructions = {
169
+ ...transformed.contents.instructions,
170
+ content: `[Summarized for ${targetCaps.name}]\n\n` +
171
+ content.substring(0, targetCaps.instructionLimit - 50),
172
+ length: targetCaps.instructionLimit,
173
+ };
174
+ }
175
+ }
176
+ }
177
+ // Handle memories if target doesn't support them
178
+ if (!targetCaps.hasMemory && transformed.contents.memories) {
179
+ // Convert memories to knowledge format (mock)
180
+ transformed.metadata.warnings.push(`Converted ${transformed.contents.memories.count} memories to knowledge documents`);
181
+ }
182
+ return transformed;
183
+ }
184
+ }
185
+ //# sourceMappingURL=mock-transformer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mock-transformer.js","sourceRoot":"","sources":["../../../src/migrate/testing/mock-transformer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Tests for ChatGPT → Claude Transformer
3
+ */
4
+ export {};
5
+ //# sourceMappingURL=chatgpt-to-claude.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chatgpt-to-claude.test.d.ts","sourceRoot":"","sources":["../../../../src/migrate/transformers/__tests__/chatgpt-to-claude.test.ts"],"names":[],"mappings":"AAAA;;GAEG"}