@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,262 +0,0 @@
1
- /**
2
- * Output Validation System for Houtini LM MCP
3
- * Centralized validation and formatting for all function outputs
4
- * Based on Functional Specification v4.0
5
- */
6
- /**
7
- * Central Output Validator Class
8
- * All functions should use this to ensure consistent output format
9
- */
10
- export class OutputValidator {
11
- /**
12
- * Create a successful analysis response
13
- */
14
- static createAnalyzeResponse(data, modelUsed, executionTimeMs) {
15
- return {
16
- success: true,
17
- timestamp: new Date().toISOString(),
18
- modelUsed,
19
- executionTimeMs: executionTimeMs || (Date.now() - this.startTime),
20
- data
21
- };
22
- }
23
- /**
24
- * Create a successful generation response
25
- */
26
- static createGenerateResponse(data, modelUsed, executionTimeMs) {
27
- return {
28
- success: true,
29
- timestamp: new Date().toISOString(),
30
- modelUsed,
31
- executionTimeMs: executionTimeMs || (Date.now() - this.startTime),
32
- data
33
- };
34
- }
35
- /**
36
- * Create a successful multi-file response
37
- */
38
- static createMultiFileResponse(data, modelUsed, executionTimeMs) {
39
- return {
40
- success: true,
41
- timestamp: new Date().toISOString(),
42
- modelUsed,
43
- executionTimeMs: executionTimeMs || (Date.now() - this.startTime),
44
- data
45
- };
46
- }
47
- /**
48
- * Create a successful system response
49
- */
50
- static createSystemResponse(data, modelUsed = 'system', executionTimeMs) {
51
- return {
52
- success: true,
53
- timestamp: new Date().toISOString(),
54
- modelUsed,
55
- executionTimeMs: executionTimeMs || (Date.now() - this.startTime),
56
- data
57
- };
58
- }
59
- /**
60
- * Create an error response (for any function type)
61
- */
62
- static createErrorResponse(errorCode, errorMessage, details, modelUsed = 'unknown', executionTimeMs) {
63
- return {
64
- success: false,
65
- timestamp: new Date().toISOString(),
66
- modelUsed,
67
- executionTimeMs: executionTimeMs || (Date.now() - this.startTime),
68
- error: {
69
- code: errorCode,
70
- message: errorMessage,
71
- details
72
- }
73
- };
74
- }
75
- /**
76
- * Validate that a response matches the expected schema
77
- */
78
- static validateResponse(response, expectedType) {
79
- // Basic structure validation
80
- if (!response || typeof response !== 'object') {
81
- return false;
82
- }
83
- // Required base fields
84
- const requiredFields = ['success', 'timestamp', 'modelUsed', 'executionTimeMs'];
85
- for (const field of requiredFields) {
86
- if (!(field in response)) {
87
- return false;
88
- }
89
- }
90
- // Type-specific validation
91
- if (response.success && !response.data) {
92
- return false;
93
- }
94
- if (!response.success && !response.error) {
95
- return false;
96
- }
97
- return true;
98
- }
99
- /**
100
- * Set execution start time for timing calculations
101
- */
102
- static setStartTime() {
103
- this.startTime = Date.now();
104
- }
105
- /**
106
- * Get execution time since start
107
- */
108
- static getExecutionTime() {
109
- return Date.now() - this.startTime;
110
- }
111
- }
112
- OutputValidator.startTime = Date.now();
113
- /**
114
- * Standardize error codes
115
- */
116
- OutputValidator.ErrorCodes = {
117
- INVALID_INPUT: 'INVALID_INPUT',
118
- FILE_NOT_FOUND: 'FILE_NOT_FOUND',
119
- MODEL_ERROR: 'MODEL_ERROR',
120
- PARSING_ERROR: 'PARSING_ERROR',
121
- VALIDATION_ERROR: 'VALIDATION_ERROR',
122
- TIMEOUT: 'TIMEOUT',
123
- SYSTEM_ERROR: 'SYSTEM_ERROR'
124
- };
125
- // Export specific response parsers for each function category
126
- export class AnalysisOutputParser {
127
- /**
128
- * Parse LLM response into structured analysis data
129
- */
130
- static parseAnalysisResponse(llmResponse, functionName) {
131
- try {
132
- // Try to parse as JSON first
133
- const parsed = JSON.parse(llmResponse);
134
- return this.validateAndNormalizeAnalysis(parsed, functionName);
135
- }
136
- catch {
137
- // If not JSON, parse as structured text
138
- return this.parseStructuredText(llmResponse, functionName);
139
- }
140
- }
141
- static validateAndNormalizeAnalysis(parsed, functionName) {
142
- // Default structure
143
- const data = {
144
- summary: '',
145
- findings: [],
146
- suggestions: [],
147
- metadata: {}
148
- };
149
- // Extract summary
150
- if (parsed.summary || parsed.analysis) {
151
- data.summary = parsed.summary || parsed.analysis;
152
- }
153
- // Extract findings
154
- if (Array.isArray(parsed.findings)) {
155
- data.findings = parsed.findings.map(this.normalizeFinding);
156
- }
157
- else if (Array.isArray(parsed.issues)) {
158
- data.findings = parsed.issues.map(this.normalizeFinding);
159
- }
160
- // Extract suggestions
161
- if (Array.isArray(parsed.suggestions)) {
162
- data.suggestions = parsed.suggestions;
163
- }
164
- else if (Array.isArray(parsed.recommendations)) {
165
- data.suggestions = parsed.recommendations;
166
- }
167
- // Function-specific parsing
168
- if (functionName === 'analyze_single_file') {
169
- data.metadata = {
170
- structure: parsed.structure || {},
171
- metrics: parsed.metrics || {},
172
- patterns: parsed.patterns || []
173
- };
174
- }
175
- return data;
176
- }
177
- static parseStructuredText(text, functionName) {
178
- // Parse structured text responses (fallback)
179
- const sections = text.split(/\n\n+/);
180
- return {
181
- summary: sections[0] || text.substring(0, 200),
182
- findings: this.extractFindings(text),
183
- suggestions: this.extractSuggestions(text),
184
- metadata: { rawResponse: text }
185
- };
186
- }
187
- static normalizeFinding(finding) {
188
- return {
189
- type: finding.type || 'info',
190
- severity: finding.severity || 'medium',
191
- message: finding.message || finding.description || '',
192
- location: finding.location,
193
- recommendation: finding.recommendation || finding.fix
194
- };
195
- }
196
- static extractFindings(text) {
197
- const findings = [];
198
- // Simple regex-based extraction for common patterns
199
- const issuePatterns = [
200
- /(?:issue|problem|error):\s*(.+)/gi,
201
- /(?:warning|caution):\s*(.+)/gi,
202
- /(?:suggestion|improvement):\s*(.+)/gi
203
- ];
204
- for (const pattern of issuePatterns) {
205
- const matches = text.matchAll(pattern);
206
- for (const match of matches) {
207
- findings.push({
208
- type: 'issue',
209
- severity: 'medium',
210
- message: match[1].trim()
211
- });
212
- }
213
- }
214
- return findings;
215
- }
216
- static extractSuggestions(text) {
217
- const suggestions = [];
218
- const suggestionPatterns = [
219
- /(?:recommend|suggest)(?:ation)?:\s*(.+)/gi,
220
- /(?:consider|try):\s*(.+)/gi
221
- ];
222
- for (const pattern of suggestionPatterns) {
223
- const matches = text.matchAll(pattern);
224
- for (const match of matches) {
225
- suggestions.push(match[1].trim());
226
- }
227
- }
228
- return suggestions;
229
- }
230
- }
231
- export class GenerationOutputParser {
232
- /**
233
- * Parse LLM response into structured generation data
234
- */
235
- static parseGenerationResponse(llmResponse, functionName, language) {
236
- const lines = llmResponse.split('\n').length;
237
- return {
238
- content: llmResponse,
239
- metadata: {
240
- type: this.getContentType(functionName),
241
- language: language || 'javascript',
242
- framework: 'auto-detected'
243
- },
244
- statistics: {
245
- linesGenerated: lines,
246
- tokensUsed: Math.floor(llmResponse.length / 4) // Rough estimate
247
- }
248
- };
249
- }
250
- static getContentType(functionName) {
251
- const typeMap = {
252
- 'generate_unit_tests': 'test-code',
253
- 'generate_documentation': 'documentation',
254
- 'generate_wordpress_plugin': 'plugin-code',
255
- 'generate_responsive_component': 'component-code',
256
- 'convert_to_typescript': 'typescript-code',
257
- 'suggest_refactoring': 'refactored-code'
258
- };
259
- return typeMap[functionName] || 'generated-content';
260
- }
261
- }
262
- //# sourceMappingURL=output-validator.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"output-validator.js","sourceRoot":"","sources":["../../src/validation/output-validator.ts"],"names":[],"mappings":"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"}
@@ -1,44 +0,0 @@
1
- /**
2
- * Response Factory for Houtini LM MCP Functions
3
- * Makes it incredibly easy to create correctly formatted responses
4
- * Usage: ResponseFactory.createAnalyzeSingleFileResponse(data, modelId)
5
- */
6
- import { FunctionName, FunctionResponse, AnalyzeSingleFileResponse, SecurityAuditResponse, GenerateUnitTestsResponse, GenerateDocumentationResponse, HealthCheckResponse } from './schemas.js';
7
- export declare class ResponseFactory {
8
- private static startTime;
9
- /**
10
- * Set execution start time
11
- */
12
- static setStartTime(): void;
13
- /**
14
- * Get execution time since start
15
- */
16
- private static getExecutionTime;
17
- static createAnalyzeSingleFileResponse(summary: string, structure: AnalyzeSingleFileResponse['data']['structure'], metrics: AnalyzeSingleFileResponse['data']['metrics'], findings: AnalyzeSingleFileResponse['data']['findings'], patterns: string[], suggestions: string[], modelUsed: string): AnalyzeSingleFileResponse;
18
- static createSecurityAuditResponse(summary: SecurityAuditResponse['data']['summary'], vulnerabilities: SecurityAuditResponse['data']['vulnerabilities'], recommendations: string[], passedChecks: string[], dependencies: SecurityAuditResponse['data']['dependencies'] | undefined, modelUsed: string): SecurityAuditResponse;
19
- static createGenerateUnitTestsResponse(tests: string, coverage: GenerateUnitTestsResponse['data']['coverage'], testCount: number, testTypes: GenerateUnitTestsResponse['data']['testTypes'], mocks: string[], setupRequired: string[], modelUsed: string): GenerateUnitTestsResponse;
20
- static createGenerateDocumentationResponse(documentation: string, sections: GenerateDocumentationResponse['data']['sections'], metadata: GenerateDocumentationResponse['data']['metadata'], modelUsed: string): GenerateDocumentationResponse;
21
- static createSystemResponse(data: {
22
- status: string;
23
- details: Record<string, any>;
24
- }, modelUsed?: string, executionTimeMs?: number): any;
25
- static createHealthCheckResponse(status: "healthy" | "unhealthy", connection: "established" | "failed", lmStudioUrl: string, error?: string, suggestion?: string, details?: HealthCheckResponse['data']['details'], contextLength?: number): HealthCheckResponse;
26
- static createErrorResponse(functionName: FunctionName, errorCode: string, errorMessage: string, details?: any, modelUsed?: string): {
27
- success: boolean;
28
- timestamp: string;
29
- modelUsed: string;
30
- executionTimeMs: number;
31
- error: {
32
- code: string;
33
- message: string;
34
- details: any;
35
- };
36
- };
37
- /**
38
- * Universal response parser for all MCP functions
39
- * Works with the universal template architecture - no function-specific switch statements needed!
40
- */
41
- static parseAndCreateResponse<T extends FunctionName>(functionName: T, llmResponse: string, modelUsed: string, additionalData?: any): FunctionResponse<T>;
42
- private static parseHealthCheck;
43
- }
44
- //# sourceMappingURL=response-factory.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"response-factory.d.ts","sourceRoot":"","sources":["../../src/validation/response-factory.ts"],"names":[],"mappings":"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"}
@@ -1,202 +0,0 @@
1
- /**
2
- * Response Factory for Houtini LM MCP Functions
3
- * Makes it incredibly easy to create correctly formatted responses
4
- * Usage: ResponseFactory.createAnalyzeSingleFileResponse(data, modelId)
5
- */
6
- import { OutputValidator } from './output-validator.js';
7
- export class ResponseFactory {
8
- /**
9
- * Set execution start time
10
- */
11
- static setStartTime() {
12
- this.startTime = Date.now();
13
- }
14
- /**
15
- * Get execution time since start
16
- */
17
- static getExecutionTime() {
18
- return Date.now() - this.startTime;
19
- }
20
- // ====================
21
- // ANALYSIS FUNCTIONS
22
- // ====================
23
- static createAnalyzeSingleFileResponse(summary, structure, metrics, findings, patterns, suggestions, modelUsed) {
24
- return {
25
- success: true,
26
- timestamp: new Date().toISOString(),
27
- modelUsed,
28
- executionTimeMs: this.getExecutionTime(),
29
- data: {
30
- summary,
31
- structure,
32
- metrics,
33
- findings,
34
- patterns,
35
- suggestions
36
- }
37
- };
38
- }
39
- static createSecurityAuditResponse(summary, vulnerabilities, recommendations, passedChecks, dependencies, modelUsed) {
40
- return {
41
- success: true,
42
- timestamp: new Date().toISOString(),
43
- modelUsed,
44
- executionTimeMs: this.getExecutionTime(),
45
- data: {
46
- summary,
47
- vulnerabilities,
48
- dependencies,
49
- recommendations,
50
- passedChecks
51
- }
52
- };
53
- }
54
- // ====================
55
- // GENERATION FUNCTIONS
56
- // ====================
57
- static createGenerateUnitTestsResponse(tests, coverage, testCount, testTypes, mocks, setupRequired, modelUsed) {
58
- return {
59
- success: true,
60
- timestamp: new Date().toISOString(),
61
- modelUsed,
62
- executionTimeMs: this.getExecutionTime(),
63
- data: {
64
- tests,
65
- coverage,
66
- testCount,
67
- testTypes,
68
- mocks,
69
- setupRequired
70
- }
71
- };
72
- }
73
- static createGenerateDocumentationResponse(documentation, sections, metadata, modelUsed) {
74
- return {
75
- success: true,
76
- timestamp: new Date().toISOString(),
77
- modelUsed,
78
- executionTimeMs: this.getExecutionTime(),
79
- data: {
80
- documentation,
81
- sections,
82
- metadata
83
- }
84
- };
85
- }
86
- // ====================
87
- // SYSTEM FUNCTIONS
88
- // ====================
89
- static createSystemResponse(data, modelUsed = 'system', executionTimeMs) {
90
- return {
91
- success: true,
92
- timestamp: new Date().toISOString(),
93
- modelUsed,
94
- executionTimeMs: executionTimeMs || this.getExecutionTime(),
95
- data
96
- };
97
- }
98
- static createHealthCheckResponse(status, connection, lmStudioUrl, error, suggestion, details, contextLength) {
99
- return {
100
- success: status === "healthy",
101
- timestamp: new Date().toISOString(),
102
- modelUsed: details?.activeModel?.identifier || 'none',
103
- executionTimeMs: this.getExecutionTime(),
104
- data: {
105
- status,
106
- connection,
107
- lmStudioUrl,
108
- timestamp: new Date().toISOString(),
109
- error,
110
- suggestion,
111
- contextLength,
112
- details
113
- }
114
- };
115
- }
116
- // ====================
117
- // ERROR RESPONSES
118
- // ====================
119
- static createErrorResponse(functionName, errorCode, errorMessage, details, modelUsed = 'unknown') {
120
- return {
121
- success: false,
122
- timestamp: new Date().toISOString(),
123
- modelUsed,
124
- executionTimeMs: this.getExecutionTime(),
125
- error: {
126
- code: errorCode,
127
- message: errorMessage,
128
- details
129
- }
130
- };
131
- }
132
- // ====================
133
- // SMART PARSING HELPERS
134
- // ====================
135
- /**
136
- * Universal response parser for all MCP functions
137
- * Works with the universal template architecture - no function-specific switch statements needed!
138
- */
139
- static parseAndCreateResponse(functionName, llmResponse, modelUsed, additionalData = {}) {
140
- this.setStartTime();
141
- try {
142
- // Handle special case for health_check which needs additionalData
143
- if (functionName === 'health_check') {
144
- return this.parseHealthCheck(llmResponse, modelUsed, additionalData);
145
- }
146
- // Universal JSON parsing with markdown code block handling
147
- let parsed;
148
- try {
149
- // Strip markdown JSON code blocks if present
150
- let cleanedResponse = llmResponse.trim();
151
- if (cleanedResponse.startsWith('```json') && cleanedResponse.endsWith('```')) {
152
- cleanedResponse = cleanedResponse.slice(7, -3).trim();
153
- }
154
- else if (cleanedResponse.startsWith('```') && cleanedResponse.endsWith('```')) {
155
- // Handle generic code blocks that might contain JSON
156
- cleanedResponse = cleanedResponse.slice(3, -3).trim();
157
- }
158
- parsed = JSON.parse(cleanedResponse);
159
- // If it's valid JSON, return it properly structured
160
- return {
161
- success: true,
162
- timestamp: new Date().toISOString(),
163
- modelUsed,
164
- executionTimeMs: this.getExecutionTime(),
165
- data: parsed
166
- };
167
- }
168
- catch {
169
- // If not JSON, fall back to content wrapping
170
- return {
171
- success: true,
172
- timestamp: new Date().toISOString(),
173
- modelUsed,
174
- executionTimeMs: this.getExecutionTime(),
175
- data: {
176
- content: llmResponse,
177
- metadata: {
178
- functionName,
179
- parsedAt: new Date().toISOString(),
180
- responseLength: llmResponse.length
181
- }
182
- }
183
- };
184
- }
185
- }
186
- catch (error) {
187
- return this.createErrorResponse(functionName, OutputValidator.ErrorCodes.PARSING_ERROR, `Failed to parse LLM response: ${error.message}`, { originalResponse: llmResponse.substring(0, 500) }, modelUsed);
188
- }
189
- }
190
- // ====================
191
- // HEALTH CHECK SPECIAL CASE
192
- // ====================
193
- // HEALTH CHECK SPECIAL CASE
194
- // ====================
195
- static parseHealthCheck(llmResponse, modelUsed, additionalData) {
196
- // health_check is a special case - it doesn't return JSON from LLM,
197
- // but instead gets structured data from additionalData
198
- return this.createHealthCheckResponse(additionalData.status || 'healthy', additionalData.connection || 'established', additionalData.lmStudioUrl || 'ws://localhost:1234', additionalData.error, additionalData.suggestion, additionalData.details);
199
- }
200
- }
201
- ResponseFactory.startTime = Date.now();
202
- //# sourceMappingURL=response-factory.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"response-factory.js","sourceRoot":"","sources":["../../src/validation/response-factory.ts"],"names":[],"mappings":"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"}