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