@houtini/lm 1.0.13 → 2.0.1

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