@houtini/lm 1.0.13 → 2.0.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 (262) hide show
  1. package/dist/index.d.ts +5 -3
  2. package/dist/index.js +142 -213
  3. package/dist/index.js.map +1 -1
  4. package/package.json +10 -33
  5. package/CHANGELOG.md +0 -282
  6. package/dist/cache/analysis-cache.d.ts +0 -33
  7. package/dist/cache/analysis-cache.d.ts.map +0 -1
  8. package/dist/cache/analysis-cache.js +0 -56
  9. package/dist/cache/analysis-cache.js.map +0 -1
  10. package/dist/cache/cache-manager.d.ts +0 -29
  11. package/dist/cache/cache-manager.d.ts.map +0 -1
  12. package/dist/cache/cache-manager.js +0 -85
  13. package/dist/cache/cache-manager.js.map +0 -1
  14. package/dist/cache/index.d.ts +0 -16
  15. package/dist/cache/index.d.ts.map +0 -1
  16. package/dist/cache/index.js +0 -17
  17. package/dist/cache/index.js.map +0 -1
  18. package/dist/cache/prompt-cache.d.ts +0 -33
  19. package/dist/cache/prompt-cache.d.ts.map +0 -1
  20. package/dist/cache/prompt-cache.js +0 -61
  21. package/dist/cache/prompt-cache.js.map +0 -1
  22. package/dist/config.d.ts +0 -41
  23. package/dist/config.d.ts.map +0 -1
  24. package/dist/config.js +0 -71
  25. package/dist/config.js.map +0 -1
  26. package/dist/core/ThreeStagePromptManager.d.ts +0 -23
  27. package/dist/core/ThreeStagePromptManager.d.ts.map +0 -1
  28. package/dist/core/ThreeStagePromptManager.js +0 -118
  29. package/dist/core/ThreeStagePromptManager.js.map +0 -1
  30. package/dist/index.d.ts.map +0 -1
  31. package/dist/plugins/base-plugin.d.ts +0 -55
  32. package/dist/plugins/base-plugin.d.ts.map +0 -1
  33. package/dist/plugins/base-plugin.js +0 -120
  34. package/dist/plugins/base-plugin.js.map +0 -1
  35. package/dist/plugins/index.d.ts +0 -58
  36. package/dist/plugins/index.d.ts.map +0 -1
  37. package/dist/plugins/index.js +0 -162
  38. package/dist/plugins/index.js.map +0 -1
  39. package/dist/plugins/types.d.ts +0 -5
  40. package/dist/plugins/types.d.ts.map +0 -1
  41. package/dist/plugins/types.js +0 -5
  42. package/dist/plugins/types.js.map +0 -1
  43. package/dist/prompts/analyze/code-quality.d.ts +0 -116
  44. package/dist/prompts/analyze/code-quality.d.ts.map +0 -1
  45. package/dist/prompts/analyze/code-quality.js +0 -437
  46. package/dist/prompts/analyze/code-quality.js.map +0 -1
  47. package/dist/prompts/analyze/compare-integration.d.ts +0 -130
  48. package/dist/prompts/analyze/compare-integration.d.ts.map +0 -1
  49. package/dist/prompts/analyze/compare-integration.js +0 -547
  50. package/dist/prompts/analyze/compare-integration.js.map +0 -1
  51. package/dist/prompts/analyze/count-files.d.ts +0 -109
  52. package/dist/prompts/analyze/count-files.d.ts.map +0 -1
  53. package/dist/prompts/analyze/count-files.js +0 -403
  54. package/dist/prompts/analyze/count-files.js.map +0 -1
  55. package/dist/prompts/analyze/database-queries.d.ts +0 -156
  56. package/dist/prompts/analyze/database-queries.d.ts.map +0 -1
  57. package/dist/prompts/analyze/database-queries.js +0 -763
  58. package/dist/prompts/analyze/database-queries.js.map +0 -1
  59. package/dist/prompts/analyze/dependencies.d.ts +0 -97
  60. package/dist/prompts/analyze/dependencies.d.ts.map +0 -1
  61. package/dist/prompts/analyze/dependencies.js +0 -337
  62. package/dist/prompts/analyze/dependencies.js.map +0 -1
  63. package/dist/prompts/analyze/diff-signatures.d.ts +0 -139
  64. package/dist/prompts/analyze/diff-signatures.d.ts.map +0 -1
  65. package/dist/prompts/analyze/diff-signatures.js +0 -708
  66. package/dist/prompts/analyze/diff-signatures.js.map +0 -1
  67. package/dist/prompts/analyze/find-patterns.d.ts +0 -128
  68. package/dist/prompts/analyze/find-patterns.d.ts.map +0 -1
  69. package/dist/prompts/analyze/find-patterns.js +0 -524
  70. package/dist/prompts/analyze/find-patterns.js.map +0 -1
  71. package/dist/prompts/analyze/find-unused-css.d.ts +0 -151
  72. package/dist/prompts/analyze/find-unused-css.d.ts.map +0 -1
  73. package/dist/prompts/analyze/find-unused-css.js +0 -760
  74. package/dist/prompts/analyze/find-unused-css.js.map +0 -1
  75. package/dist/prompts/analyze/n8n-workflow.d.ts +0 -137
  76. package/dist/prompts/analyze/n8n-workflow.d.ts.map +0 -1
  77. package/dist/prompts/analyze/n8n-workflow.js +0 -533
  78. package/dist/prompts/analyze/n8n-workflow.js.map +0 -1
  79. package/dist/prompts/analyze/project-structure.d.ts +0 -126
  80. package/dist/prompts/analyze/project-structure.d.ts.map +0 -1
  81. package/dist/prompts/analyze/project-structure.js +0 -573
  82. package/dist/prompts/analyze/project-structure.js.map +0 -1
  83. package/dist/prompts/analyze/security-audit.d.ts +0 -142
  84. package/dist/prompts/analyze/security-audit.d.ts.map +0 -1
  85. package/dist/prompts/analyze/security-audit.js +0 -641
  86. package/dist/prompts/analyze/security-audit.js.map +0 -1
  87. package/dist/prompts/analyze/single-file.d.ts +0 -162
  88. package/dist/prompts/analyze/single-file.d.ts.map +0 -1
  89. package/dist/prompts/analyze/single-file.js +0 -669
  90. package/dist/prompts/analyze/single-file.js.map +0 -1
  91. package/dist/prompts/analyze/trace-execution.d.ts +0 -126
  92. package/dist/prompts/analyze/trace-execution.d.ts.map +0 -1
  93. package/dist/prompts/analyze/trace-execution.js +0 -613
  94. package/dist/prompts/analyze/trace-execution.js.map +0 -1
  95. package/dist/prompts/analyze/wordpress-plugin-audit.d.ts +0 -116
  96. package/dist/prompts/analyze/wordpress-plugin-audit.d.ts.map +0 -1
  97. package/dist/prompts/analyze/wordpress-plugin-audit.js +0 -456
  98. package/dist/prompts/analyze/wordpress-plugin-audit.js.map +0 -1
  99. package/dist/prompts/analyze/wordpress-plugin-readiness.d.ts +0 -103
  100. package/dist/prompts/analyze/wordpress-plugin-readiness.d.ts.map +0 -1
  101. package/dist/prompts/analyze/wordpress-plugin-readiness.js +0 -506
  102. package/dist/prompts/analyze/wordpress-plugin-readiness.js.map +0 -1
  103. package/dist/prompts/analyze/wordpress-security.d.ts +0 -146
  104. package/dist/prompts/analyze/wordpress-security.d.ts.map +0 -1
  105. package/dist/prompts/analyze/wordpress-security.js +0 -702
  106. package/dist/prompts/analyze/wordpress-security.js.map +0 -1
  107. package/dist/prompts/analyze/wordpress-theme-audit.d.ts +0 -114
  108. package/dist/prompts/analyze/wordpress-theme-audit.d.ts.map +0 -1
  109. package/dist/prompts/analyze/wordpress-theme-audit.js +0 -540
  110. package/dist/prompts/analyze/wordpress-theme-audit.js.map +0 -1
  111. package/dist/prompts/custom/custom-prompt.d.ts +0 -135
  112. package/dist/prompts/custom/custom-prompt.d.ts.map +0 -1
  113. package/dist/prompts/custom/custom-prompt.js +0 -421
  114. package/dist/prompts/custom/custom-prompt.js.map +0 -1
  115. package/dist/prompts/fun/arcade-game.d.ts +0 -152
  116. package/dist/prompts/fun/arcade-game.d.ts.map +0 -1
  117. package/dist/prompts/fun/arcade-game.js +0 -657
  118. package/dist/prompts/fun/arcade-game.js.map +0 -1
  119. package/dist/prompts/fun/create_text_adventure.d.ts +0 -100
  120. package/dist/prompts/fun/create_text_adventure.d.ts.map +0 -1
  121. package/dist/prompts/fun/create_text_adventure.js +0 -401
  122. package/dist/prompts/fun/create_text_adventure.js.map +0 -1
  123. package/dist/prompts/fun/css-art-generator.d.ts +0 -168
  124. package/dist/prompts/fun/css-art-generator.d.ts.map +0 -1
  125. package/dist/prompts/fun/css-art-generator.js +0 -831
  126. package/dist/prompts/fun/css-art-generator.js.map +0 -1
  127. package/dist/prompts/generate/project-documentation.d.ts +0 -137
  128. package/dist/prompts/generate/project-documentation.d.ts.map +0 -1
  129. package/dist/prompts/generate/project-documentation.js +0 -670
  130. package/dist/prompts/generate/project-documentation.js.map +0 -1
  131. package/dist/prompts/generate/refactoring.d.ts +0 -164
  132. package/dist/prompts/generate/refactoring.d.ts.map +0 -1
  133. package/dist/prompts/generate/refactoring.js +0 -625
  134. package/dist/prompts/generate/refactoring.js.map +0 -1
  135. package/dist/prompts/generate/responsive-component.d.ts +0 -147
  136. package/dist/prompts/generate/responsive-component.d.ts.map +0 -1
  137. package/dist/prompts/generate/responsive-component.js +0 -957
  138. package/dist/prompts/generate/responsive-component.js.map +0 -1
  139. package/dist/prompts/generate/typescript-conversion.d.ts +0 -144
  140. package/dist/prompts/generate/typescript-conversion.d.ts.map +0 -1
  141. package/dist/prompts/generate/typescript-conversion.js +0 -531
  142. package/dist/prompts/generate/typescript-conversion.js.map +0 -1
  143. package/dist/prompts/generate/unit-tests.d.ts +0 -139
  144. package/dist/prompts/generate/unit-tests.d.ts.map +0 -1
  145. package/dist/prompts/generate/unit-tests.js +0 -582
  146. package/dist/prompts/generate/unit-tests.js.map +0 -1
  147. package/dist/prompts/generate/wordpress-plugin.d.ts +0 -179
  148. package/dist/prompts/generate/wordpress-plugin.d.ts.map +0 -1
  149. package/dist/prompts/generate/wordpress-plugin.js +0 -767
  150. package/dist/prompts/generate/wordpress-plugin.js.map +0 -1
  151. package/dist/prompts/generate/wordpress-theme-from-static.d.ts +0 -177
  152. package/dist/prompts/generate/wordpress-theme-from-static.d.ts.map +0 -1
  153. package/dist/prompts/generate/wordpress-theme-from-static.js +0 -699
  154. package/dist/prompts/generate/wordpress-theme-from-static.js.map +0 -1
  155. package/dist/prompts/shared/cache-manager.d.ts +0 -45
  156. package/dist/prompts/shared/cache-manager.d.ts.map +0 -1
  157. package/dist/prompts/shared/cache-manager.js +0 -129
  158. package/dist/prompts/shared/cache-manager.js.map +0 -1
  159. package/dist/prompts/shared/helpers.d.ts +0 -39
  160. package/dist/prompts/shared/helpers.d.ts.map +0 -1
  161. package/dist/prompts/shared/helpers.js +0 -151
  162. package/dist/prompts/shared/helpers.js.map +0 -1
  163. package/dist/prompts/shared/templates.d.ts +0 -35
  164. package/dist/prompts/shared/templates.d.ts.map +0 -1
  165. package/dist/prompts/shared/templates.js +0 -77
  166. package/dist/prompts/shared/templates.js.map +0 -1
  167. package/dist/prompts/shared/types.d.ts +0 -112
  168. package/dist/prompts/shared/types.d.ts.map +0 -1
  169. package/dist/prompts/shared/types.js +0 -5
  170. package/dist/prompts/shared/types.js.map +0 -1
  171. package/dist/prompts/system/find-unused-files.d.ts +0 -106
  172. package/dist/prompts/system/find-unused-files.d.ts.map +0 -1
  173. package/dist/prompts/system/find-unused-files.js +0 -357
  174. package/dist/prompts/system/find-unused-files.js.map +0 -1
  175. package/dist/security/index.d.ts +0 -39
  176. package/dist/security/index.d.ts.map +0 -1
  177. package/dist/security/index.js +0 -46
  178. package/dist/security/index.js.map +0 -1
  179. package/dist/security/integration-helpers.d.ts +0 -121
  180. package/dist/security/integration-helpers.d.ts.map +0 -1
  181. package/dist/security/integration-helpers.js +0 -190
  182. package/dist/security/integration-helpers.js.map +0 -1
  183. package/dist/security/output-encoder.d.ts +0 -94
  184. package/dist/security/output-encoder.d.ts.map +0 -1
  185. package/dist/security/output-encoder.js +0 -295
  186. package/dist/security/output-encoder.js.map +0 -1
  187. package/dist/security/prompt-injection-guard.d.ts +0 -59
  188. package/dist/security/prompt-injection-guard.d.ts.map +0 -1
  189. package/dist/security/prompt-injection-guard.js +0 -249
  190. package/dist/security/prompt-injection-guard.js.map +0 -1
  191. package/dist/security/sanitisation.d.ts +0 -67
  192. package/dist/security/sanitisation.d.ts.map +0 -1
  193. package/dist/security/sanitisation.js +0 -398
  194. package/dist/security/sanitisation.js.map +0 -1
  195. package/dist/security/security-service.d.ts +0 -103
  196. package/dist/security/security-service.d.ts.map +0 -1
  197. package/dist/security/security-service.js +0 -303
  198. package/dist/security/security-service.js.map +0 -1
  199. package/dist/security-config.d.ts +0 -45
  200. package/dist/security-config.d.ts.map +0 -1
  201. package/dist/security-config.js +0 -63
  202. package/dist/security-config.js.map +0 -1
  203. package/dist/system/function-list.d.ts +0 -61
  204. package/dist/system/function-list.d.ts.map +0 -1
  205. package/dist/system/function-list.js +0 -111
  206. package/dist/system/function-list.js.map +0 -1
  207. package/dist/system/function-registry.d.ts +0 -23
  208. package/dist/system/function-registry.d.ts.map +0 -1
  209. package/dist/system/function-registry.js +0 -136
  210. package/dist/system/function-registry.js.map +0 -1
  211. package/dist/system/health-check.d.ts +0 -33
  212. package/dist/system/health-check.d.ts.map +0 -1
  213. package/dist/system/health-check.js +0 -98
  214. package/dist/system/health-check.js.map +0 -1
  215. package/dist/system/path-resolver.d.ts +0 -55
  216. package/dist/system/path-resolver.d.ts.map +0 -1
  217. package/dist/system/path-resolver.js +0 -90
  218. package/dist/system/path-resolver.js.map +0 -1
  219. package/dist/templates/plugin-template.d.ts +0 -121
  220. package/dist/templates/plugin-template.d.ts.map +0 -1
  221. package/dist/templates/plugin-template.js +0 -454
  222. package/dist/templates/plugin-template.js.map +0 -1
  223. package/dist/types/chunking-types.d.ts +0 -88
  224. package/dist/types/chunking-types.d.ts.map +0 -1
  225. package/dist/types/chunking-types.js +0 -18
  226. package/dist/types/chunking-types.js.map +0 -1
  227. package/dist/types/prompt-stages.d.ts +0 -30
  228. package/dist/types/prompt-stages.d.ts.map +0 -1
  229. package/dist/types/prompt-stages.js +0 -6
  230. package/dist/types/prompt-stages.js.map +0 -1
  231. package/dist/types.d.ts +0 -45
  232. package/dist/types.d.ts.map +0 -1
  233. package/dist/types.js +0 -6
  234. package/dist/types.js.map +0 -1
  235. package/dist/utils/css-parser.d.ts +0 -26
  236. package/dist/utils/css-parser.d.ts.map +0 -1
  237. package/dist/utils/css-parser.js +0 -117
  238. package/dist/utils/css-parser.js.map +0 -1
  239. package/dist/utils/path-resolver.d.ts +0 -13
  240. package/dist/utils/path-resolver.d.ts.map +0 -1
  241. package/dist/utils/path-resolver.js +0 -78
  242. package/dist/utils/path-resolver.js.map +0 -1
  243. package/dist/utils/plugin-utilities.d.ts +0 -176
  244. package/dist/utils/plugin-utilities.d.ts.map +0 -1
  245. package/dist/utils/plugin-utilities.js +0 -269
  246. package/dist/utils/plugin-utilities.js.map +0 -1
  247. package/dist/utils/streamHandler.d.ts +0 -3
  248. package/dist/utils/streamHandler.d.ts.map +0 -1
  249. package/dist/utils/streamHandler.js +0 -137
  250. package/dist/utils/streamHandler.js.map +0 -1
  251. package/dist/validation/output-validator.d.ts +0 -136
  252. package/dist/validation/output-validator.d.ts.map +0 -1
  253. package/dist/validation/output-validator.js +0 -262
  254. package/dist/validation/output-validator.js.map +0 -1
  255. package/dist/validation/response-factory.d.ts +0 -44
  256. package/dist/validation/response-factory.d.ts.map +0 -1
  257. package/dist/validation/response-factory.js +0 -202
  258. package/dist/validation/response-factory.js.map +0 -1
  259. package/dist/validation/schemas.d.ts +0 -519
  260. package/dist/validation/schemas.d.ts.map +0 -1
  261. package/dist/validation/schemas.js +0 -6
  262. package/dist/validation/schemas.js.map +0 -1
@@ -1,531 +0,0 @@
1
- /**
2
- * TypeScript Conversion Plugin - Modern v4.3 Universal Template
3
- *
4
- * Converts JavaScript code to TypeScript with comprehensive type annotations
5
- * Supports both individual files and entire projects
6
- */
7
- import { BasePlugin } from '../../plugins/base-plugin.js';
8
- import { ThreeStagePromptManager } from '../../core/ThreeStagePromptManager.js';
9
- import { withSecurity } from '../../security/integration-helpers.js';
10
- import { readFileContent } from '../shared/helpers.js';
11
- import { ModelSetup, ResponseProcessor, ParameterValidator, ErrorHandler, MultiFileAnalysis, TokenCalculator } from '../../utils/plugin-utilities.js';
12
- import { getAnalysisCache } from '../../cache/index.js';
13
- // Common Node.js modules - Use these instead of require()
14
- import { basename, extname, relative } from 'path';
15
- export class TypeScriptConverter extends BasePlugin {
16
- constructor() {
17
- super();
18
- this.name = 'convert_to_typescript';
19
- this.category = 'generate';
20
- this.description = 'Convert JavaScript code to TypeScript with comprehensive type annotations and modern best practices';
21
- // Universal parameter set - supports both single and multi-file scenarios
22
- this.parameters = {
23
- // Single-file parameters
24
- code: {
25
- type: 'string',
26
- description: 'JavaScript code to convert (for single-file conversion)',
27
- required: false
28
- },
29
- filePath: {
30
- type: 'string',
31
- description: 'Path to single JavaScript file to convert',
32
- required: false
33
- },
34
- // Multi-file parameters
35
- projectPath: {
36
- type: 'string',
37
- description: 'Path to project root (for multi-file conversion)',
38
- required: false
39
- },
40
- files: {
41
- type: 'array',
42
- description: 'Array of specific JavaScript file paths to convert',
43
- required: false,
44
- items: { type: 'string' }
45
- },
46
- maxDepth: {
47
- type: 'number',
48
- description: 'Maximum directory depth for multi-file discovery (1-5)',
49
- required: false,
50
- default: 3
51
- },
52
- // TypeScript configuration parameters
53
- strict: {
54
- type: 'boolean',
55
- description: 'Use strict TypeScript mode',
56
- required: false,
57
- default: true
58
- },
59
- target: {
60
- type: 'string',
61
- description: 'TypeScript compilation target',
62
- required: false,
63
- default: 'ES2020'
64
- },
65
- module: {
66
- type: 'string',
67
- description: 'Module system',
68
- required: false,
69
- default: 'ESNext'
70
- },
71
- preserveComments: {
72
- type: 'boolean',
73
- description: 'Preserve original comments and add TSDoc',
74
- required: false,
75
- default: true
76
- },
77
- addTypeGuards: {
78
- type: 'boolean',
79
- description: 'Add type guard functions for runtime type checking',
80
- required: false,
81
- default: true
82
- },
83
- useInterfaces: {
84
- type: 'boolean',
85
- description: 'Prefer interfaces over type aliases',
86
- required: false,
87
- default: true
88
- },
89
- useEnums: {
90
- type: 'boolean',
91
- description: 'Use enums for fixed value sets',
92
- required: false,
93
- default: true
94
- },
95
- analysisDepth: {
96
- type: 'string',
97
- description: 'Level of conversion detail',
98
- enum: ['basic', 'detailed', 'comprehensive'],
99
- default: 'comprehensive',
100
- required: false
101
- },
102
- analysisType: {
103
- type: 'string',
104
- description: 'Type of conversion to perform',
105
- enum: ['type-safety', 'modern-features', 'comprehensive'],
106
- default: 'comprehensive',
107
- required: false
108
- }
109
- };
110
- this.analysisCache = getAnalysisCache();
111
- this.multiFileAnalysis = new MultiFileAnalysis();
112
- // Cache and analysis utilities are initialized above
113
- }
114
- async execute(params, llmClient) {
115
- return await withSecurity(this, params, llmClient, async (secureParams) => {
116
- try {
117
- // 1. Auto-detect analysis mode based on parameters
118
- const analysisMode = this.detectAnalysisMode(secureParams);
119
- // 2. Validate parameters based on detected mode
120
- this.validateParameters(secureParams, analysisMode);
121
- // 3. Setup model
122
- const { model, contextLength } = await ModelSetup.getReadyModel(llmClient);
123
- // 4. Route to appropriate analysis method
124
- if (analysisMode === 'single-file') {
125
- return await this.executeSingleFileAnalysis(secureParams, model, contextLength);
126
- }
127
- else {
128
- return await this.executeMultiFileAnalysis(secureParams, model, contextLength);
129
- }
130
- }
131
- catch (error) {
132
- return ErrorHandler.createExecutionError('convert_to_typescript', error);
133
- }
134
- });
135
- }
136
- /**
137
- * Auto-detect whether this is single-file or multi-file conversion
138
- */
139
- detectAnalysisMode(params) {
140
- // Single-file indicators take priority (JavaScript conversion is often file-by-file)
141
- if (params.code || params.filePath) {
142
- return 'single-file';
143
- }
144
- // Multi-file indicators
145
- if (params.projectPath || params.files) {
146
- return 'multi-file';
147
- }
148
- // Default to single-file for TypeScript conversion (most common use case)
149
- return 'single-file';
150
- }
151
- /**
152
- * Validate parameters based on detected analysis mode
153
- */
154
- validateParameters(params, mode) {
155
- if (mode === 'single-file') {
156
- ParameterValidator.validateCodeOrFile(params);
157
- }
158
- else {
159
- ParameterValidator.validateProjectPath(params);
160
- ParameterValidator.validateDepth(params);
161
- }
162
- // Universal validations
163
- ParameterValidator.validateEnum(params, 'analysisType', ['type-safety', 'modern-features', 'comprehensive']);
164
- ParameterValidator.validateEnum(params, 'analysisDepth', ['basic', 'detailed', 'comprehensive']);
165
- }
166
- /**
167
- * Execute single-file analysis
168
- */
169
- async executeSingleFileAnalysis(params, model, contextLength) {
170
- // Process single file input
171
- let codeToAnalyze = params.code;
172
- if (params.filePath) {
173
- codeToAnalyze = await readFileContent(params.filePath);
174
- }
175
- // Generate prompt stages for single file
176
- const promptStages = this.getSingleFilePromptStages({
177
- ...params,
178
- code: codeToAnalyze
179
- });
180
- // Execute with appropriate method
181
- const promptManager = new ThreeStagePromptManager();
182
- const needsChunking = TokenCalculator.needsChunking(promptStages, contextLength);
183
- if (needsChunking) {
184
- const chunkSize = TokenCalculator.calculateOptimalChunkSize(promptStages, contextLength);
185
- const dataChunks = promptManager.chunkDataPayload(promptStages.dataPayload, chunkSize);
186
- const conversation = promptManager.createChunkedConversation(promptStages, dataChunks);
187
- const messages = [
188
- conversation.systemMessage,
189
- ...conversation.dataMessages,
190
- conversation.analysisMessage
191
- ];
192
- return await ResponseProcessor.executeChunked(messages, model, contextLength, 'convert_to_typescript', 'single');
193
- }
194
- else {
195
- return await ResponseProcessor.executeDirect(promptStages, model, contextLength, 'convert_to_typescript');
196
- }
197
- }
198
- /**
199
- * Execute multi-file analysis
200
- */
201
- async executeMultiFileAnalysis(params, model, contextLength) {
202
- // Discover files
203
- let filesToAnalyze = params.files ||
204
- await this.discoverRelevantFiles(params.projectPath, params.maxDepth, params.analysisType);
205
- // Perform multi-file analysis with caching
206
- const analysisResult = await this.performMultiFileAnalysis(filesToAnalyze, params, model, contextLength);
207
- // Generate prompt stages for multi-file
208
- const promptStages = this.getMultiFilePromptStages({
209
- ...params,
210
- analysisResult,
211
- fileCount: filesToAnalyze.length
212
- });
213
- // Always use chunking for multi-file
214
- const promptManager = new ThreeStagePromptManager();
215
- const chunkSize = TokenCalculator.calculateOptimalChunkSize(promptStages, contextLength);
216
- const dataChunks = promptManager.chunkDataPayload(promptStages.dataPayload, chunkSize);
217
- const conversation = promptManager.createChunkedConversation(promptStages, dataChunks);
218
- const messages = [
219
- conversation.systemMessage,
220
- ...conversation.dataMessages,
221
- conversation.analysisMessage
222
- ];
223
- return await ResponseProcessor.executeChunked(messages, model, contextLength, 'convert_to_typescript', 'multifile');
224
- }
225
- /**
226
- * Single-file TypeScript conversion prompt stages
227
- */
228
- getSingleFilePromptStages(params) {
229
- const { code, analysisDepth, analysisType, strict = true, target = 'ES2020', module = 'ESNext', preserveComments = true, addTypeGuards = true, useInterfaces = true, useEnums = true } = params;
230
- const systemAndContext = `You are a world-class TypeScript expert and JavaScript modernization specialist with deep expertise in type system design and code transformation.
231
-
232
- **Your Mission**: Transform JavaScript code into production-ready TypeScript that eliminates runtime errors, improves developer experience, and leverages modern language features.
233
-
234
- **Conversion Configuration**:
235
- - Strictness Level: ${strict ? 'Strict (zero any types)' : 'Relaxed (minimal any usage)'}
236
- - Target: ${target}
237
- - Module System: ${module}
238
- - Analysis Depth: ${analysisDepth}
239
- - Analysis Type: ${analysisType}
240
- - Preserve Comments: ${preserveComments}
241
- - Add Type Guards: ${addTypeGuards}
242
- - Use Interfaces: ${useInterfaces}
243
- - Use Enums: ${useEnums}
244
-
245
- **Core Principles**:
246
- 1. **Type Safety First**: Every variable, parameter, and return value must be properly typed
247
- 2. **Modern TypeScript**: Use latest language features (4.5+) for maximum expressiveness
248
- 3. **Runtime Identical**: Converted code must have identical runtime behavior
249
- 4. **Developer Experience**: Types should make the code easier to understand and maintain
250
- 5. **Performance Conscious**: Use efficient TypeScript patterns that compile to optimal JavaScript`;
251
- const dataPayload = `JavaScript code to convert to TypeScript:
252
-
253
- \`\`\`javascript
254
- ${code}
255
- \`\`\``;
256
- const outputInstructions = `**Convert this JavaScript to TypeScript following these expert guidelines:**
257
-
258
- ## Type System Design
259
- - **Explicit Types Everywhere**: Add comprehensive type annotations to all functions, variables, and object shapes
260
- - **Smart Type Inference**: Use TypeScript's inference where it improves readability without sacrificing clarity
261
- - **Union Types & Discriminated Unions**: Use union types for flexible APIs and discriminated unions for state management
262
- - **Generic Programming**: Implement generics for reusable, type-safe components and utilities
263
- ${useInterfaces ? '- **Interface-First**: Create interfaces for all object shapes, extending and composing as needed' : '- **Type Aliases**: Use type aliases for object shapes and complex types'}
264
- ${useEnums ? '- **Enums for Constants**: Use const enums for performance and regular enums for runtime introspection' : '- **String Literals**: Use string literal unions instead of enums'}
265
-
266
- ## Modern TypeScript Features
267
- - **Utility Types**: Leverage Partial, Required, Pick, Omit, Record, etc. for type manipulation
268
- - **Template Literal Types**: Use template literals for strongly-typed string patterns
269
- - **Conditional Types**: Implement conditional types for complex type relationships
270
- ${addTypeGuards ? '- **Type Guards**: Create custom type guards for runtime type safety' : '- **Type Assertions**: Use type assertions judiciously where type guards aren\'t needed'}
271
- - **Const Assertions**: Use \`as const\` for immutable data and precise literal types
272
- - **Module Imports**: Convert require() to modern ES6 imports with proper type imports
273
-
274
- ## Code Quality Enhancements
275
- - **Error Handling**: Type Error objects and Promise rejections properly
276
- - **Async/Await**: Ensure proper typing of async functions and their return types
277
- - **Event Handling**: Type event handlers and DOM interactions correctly
278
- - **API Responses**: Create strong types for external API responses and internal data structures
279
- ${preserveComments ? '- **Documentation**: Preserve original comments and add TSDoc for public APIs' : '- **Essential Comments**: Keep only essential comments for complex logic'}
280
-
281
- ## Configuration Integration
282
- - **tsconfig.json**: The code should work with strict TypeScript compiler settings
283
- - **Import Resolution**: Use proper module resolution for the ${module} module system
284
- - **Target Compatibility**: Code should compile cleanly to ${target}
285
-
286
- **Output Format:**
287
- \`\`\`typescript
288
- // Converted TypeScript code here
289
- // Include all necessary type definitions
290
- // Add comprehensive type annotations
291
- // Implement modern TypeScript patterns
292
- \`\`\`
293
-
294
- **Include after the code:**
295
-
296
- ### Type Safety Improvements
297
- - List specific bugs this typing would catch at compile time
298
- - Explain how types improve maintainability and refactoring
299
-
300
- ### Migration Notes
301
- - Any potential breaking changes during conversion
302
- - Recommended IDE setup for optimal development experience
303
-
304
- ### Performance Considerations
305
- - TypeScript patterns used that optimize for runtime performance
306
- - Compile-time vs runtime trade-offs made`;
307
- return { systemAndContext, dataPayload, outputInstructions };
308
- }
309
- /**
310
- * Multi-file TypeScript conversion prompt stages
311
- */
312
- getMultiFilePromptStages(params) {
313
- const { analysisResult, analysisType, analysisDepth, fileCount } = params;
314
- const systemAndContext = `You are a senior TypeScript architect specializing in large-scale JavaScript to TypeScript migrations and codebase modernization.
315
-
316
- **Your Mission**: Orchestrate a comprehensive TypeScript conversion across ${fileCount} files, ensuring type consistency, shared interfaces, and optimal module boundaries.
317
-
318
- **Migration Context**:
319
- - Analysis Type: ${analysisType}
320
- - Analysis Depth: ${analysisDepth}
321
- - Files to Convert: ${fileCount}
322
- - Mode: Multi-File Project Conversion
323
-
324
- **Architectural Considerations**:
325
- 1. **Shared Type Definitions**: Identify common types that should be extracted to shared modules
326
- 2. **Module Boundaries**: Optimize imports/exports for type safety and tree-shaking
327
- 3. **Dependency Resolution**: Handle circular dependencies and complex import chains
328
- 4. **Type Propagation**: Ensure types flow correctly through the entire application
329
- 5. **Migration Strategy**: Provide a phased conversion approach for minimal disruption`;
330
- const dataPayload = `Multi-file JavaScript analysis results:
331
-
332
- ${JSON.stringify(analysisResult, null, 2)}`;
333
- const outputInstructions = `**Provide a comprehensive multi-file TypeScript conversion strategy:**
334
-
335
- ## Conversion Strategy
336
- ### Phase 1: Foundation Types
337
- - Extract shared interfaces and types to dedicated modules
338
- - Create base types for common patterns across files
339
- - Establish typing conventions for the codebase
340
-
341
- ### Phase 2: File-by-File Conversion
342
- - Prioritized conversion order based on dependency graph
343
- - Individual file conversion recommendations
344
- - Import/export updates needed
345
-
346
- ### Phase 3: Integration & Optimization
347
- - Cross-file type validation
348
- - Shared utility type creation
349
- - Performance optimization through type structure
350
-
351
- ## Shared Type Architecture
352
- \`\`\`typescript
353
- // Example: types/shared.ts
354
- export interface CommonDataStructure {
355
- // Shared interfaces identified across files
356
- }
357
-
358
- // Example: types/api.ts
359
- export interface APIResponse<T> {
360
- // Common API response pattern
361
- }
362
- \`\`\`
363
-
364
- ## File Conversion Recommendations
365
- ${analysisResult.findings?.slice(0, 5).map((file) => `
366
- ### ${file.fileName}
367
- - **Conversion Priority**: High/Medium/Low
368
- - **Key Types Needed**: [List main interfaces/types]
369
- - **Dependencies**: Files that must be converted first
370
- - **Challenges**: Specific TypeScript issues to address
371
- `).join('') || 'Analysis results will determine specific file recommendations'}
372
-
373
- ## Project Configuration
374
- ### Recommended tsconfig.json
375
- \`\`\`json
376
- {
377
- "compilerOptions": {
378
- "target": "${params.target || 'ES2020'}",
379
- "module": "${params.module || 'ESNext'}",
380
- "strict": ${params.strict !== false},
381
- // Additional recommended settings
382
- }
383
- }
384
- \`\`\`
385
-
386
- ## Migration Timeline
387
- - **Week 1**: Foundation types and core utilities
388
- - **Week 2-3**: Main application files (dependency order)
389
- - **Week 4**: Integration testing and type refinement
390
-
391
- ## Risk Mitigation
392
- - Breaking changes and their workarounds
393
- - Testing strategy during conversion
394
- - Rollback procedures if needed`;
395
- return { systemAndContext, dataPayload, outputInstructions };
396
- }
397
- /**
398
- * Backwards compatibility routing
399
- */
400
- getPromptStages(params) {
401
- const mode = this.detectAnalysisMode(params);
402
- if (mode === 'single-file') {
403
- return this.getSingleFilePromptStages(params);
404
- }
405
- else {
406
- return this.getMultiFilePromptStages(params);
407
- }
408
- }
409
- // Multi-file helper methods
410
- async discoverRelevantFiles(projectPath, maxDepth, analysisType) {
411
- const extensions = this.getFileExtensions(analysisType);
412
- return await this.multiFileAnalysis.discoverFiles(projectPath, extensions, maxDepth);
413
- }
414
- async performMultiFileAnalysis(files, params, model, contextLength) {
415
- const cacheKey = this.analysisCache.generateKey('convert_to_typescript', params, files);
416
- const cached = await this.analysisCache.get(cacheKey);
417
- if (cached)
418
- return cached;
419
- const fileAnalysisResults = await this.multiFileAnalysis.analyzeBatch(files, (file) => this.analyzeIndividualFile(file, params, model), contextLength);
420
- // Aggregate results into proper analysis result format
421
- const aggregatedResult = {
422
- summary: `TypeScript conversion analysis of ${files.length} JavaScript files`,
423
- findings: fileAnalysisResults,
424
- data: {
425
- fileCount: files.length,
426
- totalSize: fileAnalysisResults.reduce((sum, result) => sum + (result.size || 0), 0),
427
- jsFilesByType: this.categorizeJavaScriptFiles(fileAnalysisResults),
428
- conversionComplexity: this.assessConversionComplexity(fileAnalysisResults)
429
- }
430
- };
431
- await this.analysisCache.cacheAnalysis(cacheKey, aggregatedResult, {
432
- modelUsed: model.identifier || 'unknown',
433
- executionTime: Date.now() - Date.now(), // TODO: Track actual execution time
434
- timestamp: new Date().toISOString()
435
- });
436
- return aggregatedResult;
437
- }
438
- async analyzeIndividualFile(file, params, model) {
439
- const content = await import('fs/promises').then(fs => fs.readFile(file, 'utf-8'));
440
- const stats = await import('fs/promises').then(fs => fs.stat(file));
441
- return {
442
- filePath: file,
443
- fileName: basename(file),
444
- size: content.length,
445
- lines: content.split('\n').length,
446
- extension: extname(file),
447
- relativePath: relative(params.projectPath || '', file),
448
- hasJSDoc: content.includes('/**'),
449
- usesModernJS: this.detectModernJSFeatures(content),
450
- complexityScore: this.calculateComplexity(content)
451
- };
452
- }
453
- getFileExtensions(analysisType) {
454
- const extensionMap = {
455
- 'type-safety': ['.js', '.jsx'], // Focus on JavaScript files needing type safety
456
- 'modern-features': ['.js', '.jsx', '.mjs'], // Include modern JS variants
457
- 'comprehensive': ['.js', '.jsx', '.mjs', '.cjs'] // All JavaScript file types
458
- };
459
- return extensionMap[analysisType] || extensionMap.comprehensive;
460
- }
461
- categorizeJavaScriptFiles(results) {
462
- const categories = {
463
- 'components': 0,
464
- 'utilities': 0,
465
- 'services': 0,
466
- 'types': 0,
467
- 'tests': 0,
468
- 'config': 0,
469
- 'other': 0
470
- };
471
- results.forEach(result => {
472
- const path = result.fileName.toLowerCase();
473
- if (path.includes('component') || path.includes('jsx'))
474
- categories.components++;
475
- else if (path.includes('util') || path.includes('helper'))
476
- categories.utilities++;
477
- else if (path.includes('service') || path.includes('api'))
478
- categories.services++;
479
- else if (path.includes('type') || path.includes('interface'))
480
- categories.types++;
481
- else if (path.includes('test') || path.includes('spec'))
482
- categories.tests++;
483
- else if (path.includes('config') || path.includes('settings'))
484
- categories.config++;
485
- else
486
- categories.other++;
487
- });
488
- return categories;
489
- }
490
- assessConversionComplexity(results) {
491
- const avgComplexity = results.reduce((sum, result) => sum + (result.complexityScore || 0), 0) / results.length;
492
- if (avgComplexity > 0.8)
493
- return 'High - Complex patterns, extensive refactoring needed';
494
- if (avgComplexity > 0.5)
495
- return 'Medium - Moderate complexity, standard conversion';
496
- return 'Low - Straightforward conversion, minimal challenges';
497
- }
498
- detectModernJSFeatures(content) {
499
- const modernFeatures = [
500
- 'const ', 'let ', '=>', 'async ', 'await ', 'import ', 'export ',
501
- 'class ', '...', 'template literal', 'destructuring'
502
- ];
503
- return modernFeatures.some(feature => content.includes(feature));
504
- }
505
- calculateComplexity(content) {
506
- // Simple complexity scoring based on various JavaScript patterns
507
- const complexPatterns = [
508
- /function\s*\(/g,
509
- /=>/g,
510
- /if\s*\(/g,
511
- /for\s*\(/g,
512
- /while\s*\(/g,
513
- /try\s*{/g,
514
- /catch\s*\(/g,
515
- /switch\s*\(/g
516
- ];
517
- const totalPatterns = complexPatterns.reduce((sum, pattern) => {
518
- return sum + (content.match(pattern) || []).length;
519
- }, 0);
520
- // Normalize by file size (rough complexity per line)
521
- const lines = content.split('\n').length;
522
- return Math.min(totalPatterns / lines, 1);
523
- }
524
- generateCacheKey(files, params) {
525
- const fileHash = files.join('|');
526
- const paramHash = JSON.stringify(params);
527
- return `${fileHash}_${paramHash}`.substring(0, 64);
528
- }
529
- }
530
- export default TypeScriptConverter;
531
- //# sourceMappingURL=typescript-conversion.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"typescript-conversion.js","sourceRoot":"","sources":["../../../src/prompts/generate/typescript-conversion.ts"],"names":[],"mappings":"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"}