@houtini/lm 1.0.12 → 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 (263) hide show
  1. package/README.md +5 -6
  2. package/dist/index.d.ts +5 -3
  3. package/dist/index.js +142 -213
  4. package/dist/index.js.map +1 -1
  5. package/package.json +10 -33
  6. package/CHANGELOG.md +0 -282
  7. package/dist/cache/analysis-cache.d.ts +0 -33
  8. package/dist/cache/analysis-cache.d.ts.map +0 -1
  9. package/dist/cache/analysis-cache.js +0 -56
  10. package/dist/cache/analysis-cache.js.map +0 -1
  11. package/dist/cache/cache-manager.d.ts +0 -29
  12. package/dist/cache/cache-manager.d.ts.map +0 -1
  13. package/dist/cache/cache-manager.js +0 -85
  14. package/dist/cache/cache-manager.js.map +0 -1
  15. package/dist/cache/index.d.ts +0 -16
  16. package/dist/cache/index.d.ts.map +0 -1
  17. package/dist/cache/index.js +0 -17
  18. package/dist/cache/index.js.map +0 -1
  19. package/dist/cache/prompt-cache.d.ts +0 -33
  20. package/dist/cache/prompt-cache.d.ts.map +0 -1
  21. package/dist/cache/prompt-cache.js +0 -61
  22. package/dist/cache/prompt-cache.js.map +0 -1
  23. package/dist/config.d.ts +0 -41
  24. package/dist/config.d.ts.map +0 -1
  25. package/dist/config.js +0 -71
  26. package/dist/config.js.map +0 -1
  27. package/dist/core/ThreeStagePromptManager.d.ts +0 -23
  28. package/dist/core/ThreeStagePromptManager.d.ts.map +0 -1
  29. package/dist/core/ThreeStagePromptManager.js +0 -118
  30. package/dist/core/ThreeStagePromptManager.js.map +0 -1
  31. package/dist/index.d.ts.map +0 -1
  32. package/dist/plugins/base-plugin.d.ts +0 -55
  33. package/dist/plugins/base-plugin.d.ts.map +0 -1
  34. package/dist/plugins/base-plugin.js +0 -120
  35. package/dist/plugins/base-plugin.js.map +0 -1
  36. package/dist/plugins/index.d.ts +0 -58
  37. package/dist/plugins/index.d.ts.map +0 -1
  38. package/dist/plugins/index.js +0 -162
  39. package/dist/plugins/index.js.map +0 -1
  40. package/dist/plugins/types.d.ts +0 -5
  41. package/dist/plugins/types.d.ts.map +0 -1
  42. package/dist/plugins/types.js +0 -5
  43. package/dist/plugins/types.js.map +0 -1
  44. package/dist/prompts/analyze/code-quality.d.ts +0 -116
  45. package/dist/prompts/analyze/code-quality.d.ts.map +0 -1
  46. package/dist/prompts/analyze/code-quality.js +0 -437
  47. package/dist/prompts/analyze/code-quality.js.map +0 -1
  48. package/dist/prompts/analyze/compare-integration.d.ts +0 -130
  49. package/dist/prompts/analyze/compare-integration.d.ts.map +0 -1
  50. package/dist/prompts/analyze/compare-integration.js +0 -547
  51. package/dist/prompts/analyze/compare-integration.js.map +0 -1
  52. package/dist/prompts/analyze/count-files.d.ts +0 -109
  53. package/dist/prompts/analyze/count-files.d.ts.map +0 -1
  54. package/dist/prompts/analyze/count-files.js +0 -403
  55. package/dist/prompts/analyze/count-files.js.map +0 -1
  56. package/dist/prompts/analyze/database-queries.d.ts +0 -156
  57. package/dist/prompts/analyze/database-queries.d.ts.map +0 -1
  58. package/dist/prompts/analyze/database-queries.js +0 -763
  59. package/dist/prompts/analyze/database-queries.js.map +0 -1
  60. package/dist/prompts/analyze/dependencies.d.ts +0 -97
  61. package/dist/prompts/analyze/dependencies.d.ts.map +0 -1
  62. package/dist/prompts/analyze/dependencies.js +0 -337
  63. package/dist/prompts/analyze/dependencies.js.map +0 -1
  64. package/dist/prompts/analyze/diff-signatures.d.ts +0 -139
  65. package/dist/prompts/analyze/diff-signatures.d.ts.map +0 -1
  66. package/dist/prompts/analyze/diff-signatures.js +0 -708
  67. package/dist/prompts/analyze/diff-signatures.js.map +0 -1
  68. package/dist/prompts/analyze/find-patterns.d.ts +0 -128
  69. package/dist/prompts/analyze/find-patterns.d.ts.map +0 -1
  70. package/dist/prompts/analyze/find-patterns.js +0 -524
  71. package/dist/prompts/analyze/find-patterns.js.map +0 -1
  72. package/dist/prompts/analyze/find-unused-css.d.ts +0 -151
  73. package/dist/prompts/analyze/find-unused-css.d.ts.map +0 -1
  74. package/dist/prompts/analyze/find-unused-css.js +0 -760
  75. package/dist/prompts/analyze/find-unused-css.js.map +0 -1
  76. package/dist/prompts/analyze/n8n-workflow.d.ts +0 -137
  77. package/dist/prompts/analyze/n8n-workflow.d.ts.map +0 -1
  78. package/dist/prompts/analyze/n8n-workflow.js +0 -533
  79. package/dist/prompts/analyze/n8n-workflow.js.map +0 -1
  80. package/dist/prompts/analyze/project-structure.d.ts +0 -126
  81. package/dist/prompts/analyze/project-structure.d.ts.map +0 -1
  82. package/dist/prompts/analyze/project-structure.js +0 -573
  83. package/dist/prompts/analyze/project-structure.js.map +0 -1
  84. package/dist/prompts/analyze/security-audit.d.ts +0 -142
  85. package/dist/prompts/analyze/security-audit.d.ts.map +0 -1
  86. package/dist/prompts/analyze/security-audit.js +0 -641
  87. package/dist/prompts/analyze/security-audit.js.map +0 -1
  88. package/dist/prompts/analyze/single-file.d.ts +0 -162
  89. package/dist/prompts/analyze/single-file.d.ts.map +0 -1
  90. package/dist/prompts/analyze/single-file.js +0 -669
  91. package/dist/prompts/analyze/single-file.js.map +0 -1
  92. package/dist/prompts/analyze/trace-execution.d.ts +0 -126
  93. package/dist/prompts/analyze/trace-execution.d.ts.map +0 -1
  94. package/dist/prompts/analyze/trace-execution.js +0 -613
  95. package/dist/prompts/analyze/trace-execution.js.map +0 -1
  96. package/dist/prompts/analyze/wordpress-plugin-audit.d.ts +0 -116
  97. package/dist/prompts/analyze/wordpress-plugin-audit.d.ts.map +0 -1
  98. package/dist/prompts/analyze/wordpress-plugin-audit.js +0 -456
  99. package/dist/prompts/analyze/wordpress-plugin-audit.js.map +0 -1
  100. package/dist/prompts/analyze/wordpress-plugin-readiness.d.ts +0 -103
  101. package/dist/prompts/analyze/wordpress-plugin-readiness.d.ts.map +0 -1
  102. package/dist/prompts/analyze/wordpress-plugin-readiness.js +0 -506
  103. package/dist/prompts/analyze/wordpress-plugin-readiness.js.map +0 -1
  104. package/dist/prompts/analyze/wordpress-security.d.ts +0 -146
  105. package/dist/prompts/analyze/wordpress-security.d.ts.map +0 -1
  106. package/dist/prompts/analyze/wordpress-security.js +0 -702
  107. package/dist/prompts/analyze/wordpress-security.js.map +0 -1
  108. package/dist/prompts/analyze/wordpress-theme-audit.d.ts +0 -114
  109. package/dist/prompts/analyze/wordpress-theme-audit.d.ts.map +0 -1
  110. package/dist/prompts/analyze/wordpress-theme-audit.js +0 -540
  111. package/dist/prompts/analyze/wordpress-theme-audit.js.map +0 -1
  112. package/dist/prompts/custom/custom-prompt.d.ts +0 -135
  113. package/dist/prompts/custom/custom-prompt.d.ts.map +0 -1
  114. package/dist/prompts/custom/custom-prompt.js +0 -421
  115. package/dist/prompts/custom/custom-prompt.js.map +0 -1
  116. package/dist/prompts/fun/arcade-game.d.ts +0 -152
  117. package/dist/prompts/fun/arcade-game.d.ts.map +0 -1
  118. package/dist/prompts/fun/arcade-game.js +0 -657
  119. package/dist/prompts/fun/arcade-game.js.map +0 -1
  120. package/dist/prompts/fun/create_text_adventure.d.ts +0 -100
  121. package/dist/prompts/fun/create_text_adventure.d.ts.map +0 -1
  122. package/dist/prompts/fun/create_text_adventure.js +0 -401
  123. package/dist/prompts/fun/create_text_adventure.js.map +0 -1
  124. package/dist/prompts/fun/css-art-generator.d.ts +0 -168
  125. package/dist/prompts/fun/css-art-generator.d.ts.map +0 -1
  126. package/dist/prompts/fun/css-art-generator.js +0 -831
  127. package/dist/prompts/fun/css-art-generator.js.map +0 -1
  128. package/dist/prompts/generate/project-documentation.d.ts +0 -137
  129. package/dist/prompts/generate/project-documentation.d.ts.map +0 -1
  130. package/dist/prompts/generate/project-documentation.js +0 -670
  131. package/dist/prompts/generate/project-documentation.js.map +0 -1
  132. package/dist/prompts/generate/refactoring.d.ts +0 -164
  133. package/dist/prompts/generate/refactoring.d.ts.map +0 -1
  134. package/dist/prompts/generate/refactoring.js +0 -625
  135. package/dist/prompts/generate/refactoring.js.map +0 -1
  136. package/dist/prompts/generate/responsive-component.d.ts +0 -147
  137. package/dist/prompts/generate/responsive-component.d.ts.map +0 -1
  138. package/dist/prompts/generate/responsive-component.js +0 -957
  139. package/dist/prompts/generate/responsive-component.js.map +0 -1
  140. package/dist/prompts/generate/typescript-conversion.d.ts +0 -144
  141. package/dist/prompts/generate/typescript-conversion.d.ts.map +0 -1
  142. package/dist/prompts/generate/typescript-conversion.js +0 -531
  143. package/dist/prompts/generate/typescript-conversion.js.map +0 -1
  144. package/dist/prompts/generate/unit-tests.d.ts +0 -139
  145. package/dist/prompts/generate/unit-tests.d.ts.map +0 -1
  146. package/dist/prompts/generate/unit-tests.js +0 -582
  147. package/dist/prompts/generate/unit-tests.js.map +0 -1
  148. package/dist/prompts/generate/wordpress-plugin.d.ts +0 -179
  149. package/dist/prompts/generate/wordpress-plugin.d.ts.map +0 -1
  150. package/dist/prompts/generate/wordpress-plugin.js +0 -767
  151. package/dist/prompts/generate/wordpress-plugin.js.map +0 -1
  152. package/dist/prompts/generate/wordpress-theme-from-static.d.ts +0 -177
  153. package/dist/prompts/generate/wordpress-theme-from-static.d.ts.map +0 -1
  154. package/dist/prompts/generate/wordpress-theme-from-static.js +0 -699
  155. package/dist/prompts/generate/wordpress-theme-from-static.js.map +0 -1
  156. package/dist/prompts/shared/cache-manager.d.ts +0 -45
  157. package/dist/prompts/shared/cache-manager.d.ts.map +0 -1
  158. package/dist/prompts/shared/cache-manager.js +0 -129
  159. package/dist/prompts/shared/cache-manager.js.map +0 -1
  160. package/dist/prompts/shared/helpers.d.ts +0 -39
  161. package/dist/prompts/shared/helpers.d.ts.map +0 -1
  162. package/dist/prompts/shared/helpers.js +0 -151
  163. package/dist/prompts/shared/helpers.js.map +0 -1
  164. package/dist/prompts/shared/templates.d.ts +0 -35
  165. package/dist/prompts/shared/templates.d.ts.map +0 -1
  166. package/dist/prompts/shared/templates.js +0 -77
  167. package/dist/prompts/shared/templates.js.map +0 -1
  168. package/dist/prompts/shared/types.d.ts +0 -112
  169. package/dist/prompts/shared/types.d.ts.map +0 -1
  170. package/dist/prompts/shared/types.js +0 -5
  171. package/dist/prompts/shared/types.js.map +0 -1
  172. package/dist/prompts/system/find-unused-files.d.ts +0 -106
  173. package/dist/prompts/system/find-unused-files.d.ts.map +0 -1
  174. package/dist/prompts/system/find-unused-files.js +0 -357
  175. package/dist/prompts/system/find-unused-files.js.map +0 -1
  176. package/dist/security/index.d.ts +0 -39
  177. package/dist/security/index.d.ts.map +0 -1
  178. package/dist/security/index.js +0 -46
  179. package/dist/security/index.js.map +0 -1
  180. package/dist/security/integration-helpers.d.ts +0 -121
  181. package/dist/security/integration-helpers.d.ts.map +0 -1
  182. package/dist/security/integration-helpers.js +0 -190
  183. package/dist/security/integration-helpers.js.map +0 -1
  184. package/dist/security/output-encoder.d.ts +0 -94
  185. package/dist/security/output-encoder.d.ts.map +0 -1
  186. package/dist/security/output-encoder.js +0 -295
  187. package/dist/security/output-encoder.js.map +0 -1
  188. package/dist/security/prompt-injection-guard.d.ts +0 -59
  189. package/dist/security/prompt-injection-guard.d.ts.map +0 -1
  190. package/dist/security/prompt-injection-guard.js +0 -249
  191. package/dist/security/prompt-injection-guard.js.map +0 -1
  192. package/dist/security/sanitisation.d.ts +0 -67
  193. package/dist/security/sanitisation.d.ts.map +0 -1
  194. package/dist/security/sanitisation.js +0 -398
  195. package/dist/security/sanitisation.js.map +0 -1
  196. package/dist/security/security-service.d.ts +0 -103
  197. package/dist/security/security-service.d.ts.map +0 -1
  198. package/dist/security/security-service.js +0 -303
  199. package/dist/security/security-service.js.map +0 -1
  200. package/dist/security-config.d.ts +0 -45
  201. package/dist/security-config.d.ts.map +0 -1
  202. package/dist/security-config.js +0 -63
  203. package/dist/security-config.js.map +0 -1
  204. package/dist/system/function-list.d.ts +0 -61
  205. package/dist/system/function-list.d.ts.map +0 -1
  206. package/dist/system/function-list.js +0 -111
  207. package/dist/system/function-list.js.map +0 -1
  208. package/dist/system/function-registry.d.ts +0 -23
  209. package/dist/system/function-registry.d.ts.map +0 -1
  210. package/dist/system/function-registry.js +0 -136
  211. package/dist/system/function-registry.js.map +0 -1
  212. package/dist/system/health-check.d.ts +0 -33
  213. package/dist/system/health-check.d.ts.map +0 -1
  214. package/dist/system/health-check.js +0 -98
  215. package/dist/system/health-check.js.map +0 -1
  216. package/dist/system/path-resolver.d.ts +0 -55
  217. package/dist/system/path-resolver.d.ts.map +0 -1
  218. package/dist/system/path-resolver.js +0 -90
  219. package/dist/system/path-resolver.js.map +0 -1
  220. package/dist/templates/plugin-template.d.ts +0 -121
  221. package/dist/templates/plugin-template.d.ts.map +0 -1
  222. package/dist/templates/plugin-template.js +0 -454
  223. package/dist/templates/plugin-template.js.map +0 -1
  224. package/dist/types/chunking-types.d.ts +0 -88
  225. package/dist/types/chunking-types.d.ts.map +0 -1
  226. package/dist/types/chunking-types.js +0 -18
  227. package/dist/types/chunking-types.js.map +0 -1
  228. package/dist/types/prompt-stages.d.ts +0 -30
  229. package/dist/types/prompt-stages.d.ts.map +0 -1
  230. package/dist/types/prompt-stages.js +0 -6
  231. package/dist/types/prompt-stages.js.map +0 -1
  232. package/dist/types.d.ts +0 -45
  233. package/dist/types.d.ts.map +0 -1
  234. package/dist/types.js +0 -6
  235. package/dist/types.js.map +0 -1
  236. package/dist/utils/css-parser.d.ts +0 -26
  237. package/dist/utils/css-parser.d.ts.map +0 -1
  238. package/dist/utils/css-parser.js +0 -117
  239. package/dist/utils/css-parser.js.map +0 -1
  240. package/dist/utils/path-resolver.d.ts +0 -13
  241. package/dist/utils/path-resolver.d.ts.map +0 -1
  242. package/dist/utils/path-resolver.js +0 -78
  243. package/dist/utils/path-resolver.js.map +0 -1
  244. package/dist/utils/plugin-utilities.d.ts +0 -176
  245. package/dist/utils/plugin-utilities.d.ts.map +0 -1
  246. package/dist/utils/plugin-utilities.js +0 -269
  247. package/dist/utils/plugin-utilities.js.map +0 -1
  248. package/dist/utils/streamHandler.d.ts +0 -3
  249. package/dist/utils/streamHandler.d.ts.map +0 -1
  250. package/dist/utils/streamHandler.js +0 -137
  251. package/dist/utils/streamHandler.js.map +0 -1
  252. package/dist/validation/output-validator.d.ts +0 -136
  253. package/dist/validation/output-validator.d.ts.map +0 -1
  254. package/dist/validation/output-validator.js +0 -262
  255. package/dist/validation/output-validator.js.map +0 -1
  256. package/dist/validation/response-factory.d.ts +0 -44
  257. package/dist/validation/response-factory.d.ts.map +0 -1
  258. package/dist/validation/response-factory.js +0 -202
  259. package/dist/validation/response-factory.js.map +0 -1
  260. package/dist/validation/schemas.d.ts +0 -519
  261. package/dist/validation/schemas.d.ts.map +0 -1
  262. package/dist/validation/schemas.js +0 -6
  263. 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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"}