@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,540 +0,0 @@
1
- /**
2
- * WordPress Theme Comprehensive Auditor - Modern v4.3
3
- *
4
- * Chains multiple analysis steps for comprehensive WordPress theme audit
5
- * Covers theme-specific security, performance, accessibility, and code quality
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 { ModelSetup, ResponseProcessor, ParameterValidator, ErrorHandler, MultiFileAnalysis, TokenCalculator } from '../../utils/plugin-utilities.js';
11
- import { getAnalysisCache } from '../../cache/index.js';
12
- export class WordPressThemeAuditor extends BasePlugin {
13
- constructor() {
14
- super();
15
- this.name = 'audit_wordpress_theme';
16
- this.category = 'analyze';
17
- this.description = 'Comprehensive WordPress theme audit - chains multiple analysis steps for security, performance, accessibility, SEO, and code quality';
18
- this.parameters = {
19
- // Multi-file parameters (primary mode for theme audit)
20
- projectPath: {
21
- type: 'string',
22
- description: 'Path to WordPress theme root directory',
23
- required: true
24
- },
25
- // Analysis configuration
26
- auditDepth: {
27
- type: 'string',
28
- description: 'Depth of audit analysis',
29
- enum: ['basic', 'detailed', 'comprehensive'],
30
- default: 'comprehensive',
31
- required: false
32
- },
33
- auditType: {
34
- type: 'string',
35
- description: 'Type of audit focus',
36
- enum: ['security', 'performance', 'accessibility', 'seo', 'quality', 'full-audit'],
37
- default: 'full-audit',
38
- required: false
39
- },
40
- // Theme-specific analysis steps
41
- includeSteps: {
42
- type: 'array',
43
- description: 'Analysis steps to include in theme audit',
44
- required: false,
45
- items: { type: 'string' },
46
- default: ['structure', 'security', 'performance', 'accessibility', 'quality', 'seo']
47
- },
48
- maxDepth: {
49
- type: 'number',
50
- description: 'Maximum directory depth for analysis (1-5)',
51
- required: false,
52
- default: 4
53
- },
54
- // WordPress-specific context
55
- wpVersion: {
56
- type: 'string',
57
- description: 'Target WordPress version for compatibility checks',
58
- required: false,
59
- default: '6.4'
60
- },
61
- phpVersion: {
62
- type: 'string',
63
- description: 'Target PHP version for compatibility checks',
64
- required: false,
65
- default: '8.0'
66
- },
67
- // Theme-specific options
68
- themeType: {
69
- type: 'string',
70
- description: 'Type of WordPress theme',
71
- enum: ['classic', 'block', 'hybrid'],
72
- default: 'classic',
73
- required: false
74
- },
75
- checkAccessibility: {
76
- type: 'boolean',
77
- description: 'Include detailed accessibility audit',
78
- default: true,
79
- required: false
80
- }
81
- };
82
- this.analysisCache = getAnalysisCache();
83
- this.multiFileAnalysis = new MultiFileAnalysis();
84
- }
85
- async execute(params, llmClient) {
86
- return await withSecurity(this, params, llmClient, async (secureParams) => {
87
- try {
88
- // 1. Validate WordPress theme structure
89
- this.validateWordPressTheme(secureParams);
90
- // 2. Setup model
91
- const { model, contextLength } = await ModelSetup.getReadyModel(llmClient);
92
- // 3. Execute chained theme analysis workflow
93
- return await this.executeChainedThemeAnalysis(secureParams, llmClient, model, contextLength);
94
- }
95
- catch (error) {
96
- return ErrorHandler.createExecutionError('audit_wordpress_theme', error);
97
- }
98
- });
99
- }
100
- /**
101
- * Validate WordPress theme structure
102
- */
103
- validateWordPressTheme(params) {
104
- ParameterValidator.validateProjectPath(params);
105
- ParameterValidator.validateDepth(params);
106
- ParameterValidator.validateEnum(params, 'auditType', ['security', 'performance', 'accessibility', 'seo', 'quality', 'full-audit']);
107
- ParameterValidator.validateEnum(params, 'auditDepth', ['basic', 'detailed', 'comprehensive']);
108
- ParameterValidator.validateEnum(params, 'themeType', ['classic', 'block', 'hybrid']);
109
- }
110
- /**
111
- * Execute the chained theme analysis workflow
112
- */
113
- async executeChainedThemeAnalysis(params, llmClient, model, contextLength) {
114
- const auditSteps = params.includeSteps || ['structure', 'security', 'performance', 'accessibility', 'quality', 'seo'];
115
- const results = {};
116
- const stepExecutionLog = [];
117
- try {
118
- stepExecutionLog.push(`Starting WordPress theme audit with ${auditSteps.length} steps`);
119
- stepExecutionLog.push(`Theme type: ${params.themeType || 'classic'}`);
120
- // Step 1: Theme Structure Overview
121
- if (auditSteps.includes('structure')) {
122
- stepExecutionLog.push('Executing: Theme structure analysis');
123
- results.structure = await this.runAnalysisStep('count_files', {
124
- projectPath: params.projectPath,
125
- analysisType: 'comprehensive',
126
- maxDepth: params.maxDepth
127
- }, llmClient);
128
- stepExecutionLog.push(`Structure analysis: ${results.structure.success ? 'SUCCESS' : 'FAILED'}`);
129
- }
130
- // Step 2: WordPress Theme Security Audit
131
- if (auditSteps.includes('security')) {
132
- stepExecutionLog.push('Executing: WordPress theme security analysis');
133
- results.security = await this.runAnalysisStep('analyze_wordpress_security', {
134
- projectPath: params.projectPath,
135
- wpType: 'theme',
136
- wpVersion: params.wpVersion,
137
- analysisType: 'comprehensive',
138
- includeOwaspTop10: true
139
- }, llmClient);
140
- stepExecutionLog.push(`Security analysis: ${results.security.success ? 'SUCCESS' : 'FAILED'}`);
141
- }
142
- // Step 3: Performance Analysis (theme-specific)
143
- if (auditSteps.includes('performance')) {
144
- stepExecutionLog.push('Executing: Theme performance analysis');
145
- results.performance = await this.runAnalysisStep('analyze_code_quality', {
146
- projectPath: params.projectPath,
147
- analysisType: 'performance',
148
- language: 'php',
149
- context: {
150
- projectType: 'wordpress-theme',
151
- themeType: params.themeType,
152
- focusAreas: ['performance', 'optimization']
153
- }
154
- }, llmClient);
155
- stepExecutionLog.push(`Performance analysis: ${results.performance.success ? 'SUCCESS' : 'FAILED'}`);
156
- }
157
- // Step 4: Accessibility Audit
158
- if (auditSteps.includes('accessibility') && params.checkAccessibility) {
159
- stepExecutionLog.push('Executing: Accessibility analysis');
160
- results.accessibility = await this.runAnalysisStep('analyze_single_file', {
161
- projectPath: params.projectPath,
162
- analysisType: 'comprehensive',
163
- context: {
164
- projectType: 'wordpress-theme',
165
- focusAreas: ['accessibility', 'wcag', 'semantic-html'],
166
- standards: ['WCAG 2.1 AA', 'Section 508']
167
- }
168
- }, llmClient);
169
- stepExecutionLog.push(`Accessibility analysis: ${results.accessibility.success ? 'SUCCESS' : 'FAILED'}`);
170
- }
171
- // Step 5: Code Quality Assessment
172
- if (auditSteps.includes('quality')) {
173
- stepExecutionLog.push('Executing: Code quality analysis');
174
- results.quality = await this.runAnalysisStep('analyze_code_quality', {
175
- projectPath: params.projectPath,
176
- analysisType: 'comprehensive',
177
- language: 'php',
178
- context: { projectType: 'wordpress-theme' }
179
- }, llmClient);
180
- stepExecutionLog.push(`Quality analysis: ${results.quality.success ? 'SUCCESS' : 'FAILED'}`);
181
- }
182
- // Step 6: SEO Analysis
183
- if (auditSteps.includes('seo')) {
184
- stepExecutionLog.push('Executing: SEO structure analysis');
185
- results.seo = await this.runAnalysisStep('analyze_single_file', {
186
- projectPath: params.projectPath,
187
- analysisType: 'comprehensive',
188
- context: {
189
- projectType: 'wordpress-theme',
190
- focusAreas: ['seo', 'structured-data', 'meta-tags', 'performance']
191
- }
192
- }, llmClient);
193
- stepExecutionLog.push(`SEO analysis: ${results.seo.success ? 'SUCCESS' : 'FAILED'}`);
194
- }
195
- // Step 7: Database Query Analysis (if applicable)
196
- if (auditSteps.includes('database')) {
197
- stepExecutionLog.push('Executing: Database query analysis');
198
- results.database = await this.runAnalysisStep('analyze_database_queries', {
199
- projectPath: params.projectPath,
200
- analysisType: 'comprehensive',
201
- context: { projectType: 'wordpress-theme' }
202
- }, llmClient);
203
- stepExecutionLog.push(`Database analysis: ${results.database.success ? 'SUCCESS' : 'FAILED'}`);
204
- }
205
- // Step 8: Synthesize all results
206
- stepExecutionLog.push('Synthesizing comprehensive theme audit report');
207
- const synthesizedResults = await this.synthesizeThemeAuditResults({
208
- ...results,
209
- executionLog: stepExecutionLog,
210
- completedSteps: auditSteps.filter(step => results[step]?.success),
211
- failedSteps: auditSteps.filter(step => results[step]?.success === false)
212
- }, params, model, contextLength);
213
- stepExecutionLog.push('Theme audit synthesis: COMPLETED');
214
- return synthesizedResults;
215
- }
216
- catch (error) {
217
- stepExecutionLog.push(`Theme audit failed: ${error.message}`);
218
- return ErrorHandler.createExecutionError('audit_wordpress_theme', error);
219
- }
220
- }
221
- /**
222
- * Run individual analysis step by calling other MCP functions
223
- */
224
- async runAnalysisStep(functionName, stepParams, llmClient) {
225
- try {
226
- // Check cache first
227
- const cacheKey = this.analysisCache.generateKey(functionName, stepParams, []);
228
- const cached = await this.analysisCache.get(cacheKey);
229
- if (cached)
230
- return cached;
231
- // Import the plugin loader to call other MCP functions
232
- const { PluginRegistry } = await import('../../plugins/index.js');
233
- const pluginLoader = PluginRegistry.getInstance();
234
- // Execute the specific analysis function
235
- let result;
236
- try {
237
- result = await pluginLoader.executePlugin(functionName, stepParams, llmClient);
238
- // Wrap successful results
239
- const wrappedResult = {
240
- stepName: functionName,
241
- parameters: stepParams,
242
- status: 'completed',
243
- timestamp: new Date().toISOString(),
244
- data: result.data || result,
245
- summary: `Completed ${functionName} analysis`,
246
- success: true
247
- };
248
- // Cache the result
249
- await this.analysisCache.cacheAnalysis(cacheKey, wrappedResult, {
250
- modelUsed: result.modelUsed || 'unknown',
251
- executionTime: result.executionTimeMs || 0,
252
- timestamp: new Date().toISOString()
253
- });
254
- return wrappedResult;
255
- }
256
- catch (pluginError) {
257
- // If the plugin doesn't exist or fails, return error result
258
- const errorResult = {
259
- stepName: functionName,
260
- status: 'failed',
261
- error: pluginError.message,
262
- timestamp: new Date().toISOString(),
263
- summary: `Failed ${functionName} analysis`,
264
- success: false
265
- };
266
- return errorResult;
267
- }
268
- }
269
- catch (error) {
270
- return {
271
- stepName: functionName,
272
- status: 'system-error',
273
- error: error.message,
274
- timestamp: new Date().toISOString(),
275
- summary: 'System error during analysis',
276
- success: false
277
- };
278
- }
279
- }
280
- /**
281
- * Synthesize all theme audit results into comprehensive report
282
- */
283
- async synthesizeThemeAuditResults(results, params, model, contextLength) {
284
- // Generate final synthesis prompt stages
285
- const promptStages = this.getMultiFilePromptStages({
286
- ...params,
287
- analysisResult: results,
288
- stepCount: Object.keys(results).length
289
- });
290
- // Always use chunking for comprehensive synthesis
291
- const promptManager = new ThreeStagePromptManager();
292
- const chunkSize = TokenCalculator.calculateOptimalChunkSize(promptStages, contextLength);
293
- const dataChunks = promptManager.chunkDataPayload(promptStages.dataPayload, chunkSize);
294
- const conversation = promptManager.createChunkedConversation(promptStages, dataChunks);
295
- const messages = [
296
- conversation.systemMessage,
297
- ...conversation.dataMessages,
298
- conversation.analysisMessage
299
- ];
300
- return await ResponseProcessor.executeChunked(messages, model, contextLength, 'audit_wordpress_theme', 'multifile');
301
- }
302
- /**
303
- * Single-file mode not applicable for theme audit
304
- */
305
- getSingleFilePromptStages(params) {
306
- const systemAndContext = `WordPress Theme Auditor - Single File Mode
307
-
308
- This mode is not recommended for WordPress theme audits.
309
- Use multi-file mode with projectPath parameter for comprehensive theme analysis.`;
310
- const dataPayload = `Single file analysis not supported for WordPress theme audits.
311
- Please use projectPath parameter to analyze the entire theme structure.`;
312
- const outputInstructions = `{
313
- "error": "Single file mode not supported for WordPress theme audits",
314
- "recommendation": "Use projectPath parameter for comprehensive theme analysis"
315
- }`;
316
- return { systemAndContext, dataPayload, outputInstructions };
317
- }
318
- /**
319
- * Multi-file prompt stages for comprehensive theme audit synthesis
320
- */
321
- getMultiFilePromptStages(params) {
322
- const { analysisResult, auditType, auditDepth, wpVersion, phpVersion, themeType, stepCount } = params;
323
- const systemAndContext = `You are a senior WordPress theme developer and security expert with 15+ years of experience auditing enterprise WordPress themes for performance, accessibility, and security.
324
-
325
- **THEME AUDIT CONTEXT:**
326
- - Audit Type: ${auditType}
327
- - Audit Depth: ${auditDepth}
328
- - Analysis Steps Completed: ${stepCount}
329
- - Theme Type: ${themeType}
330
- - Target WordPress Version: ${wpVersion}
331
- - Target PHP Version: ${phpVersion}
332
-
333
- **YOUR EXPERTISE:**
334
- You are internationally recognized for:
335
- - WordPress theme security auditing and vulnerability assessment
336
- - Frontend performance optimization for WordPress themes
337
- - Accessibility compliance (WCAG 2.1 AA, Section 508)
338
- - SEO optimization and Core Web Vitals improvement
339
- - Theme architecture and template hierarchy mastery
340
- - WordPress.org theme repository review standards
341
-
342
- **THEME-SPECIFIC AUDIT METHODOLOGY:**
343
- 1. **Security Assessment**: Template injection, XSS, CSRF, data sanitization
344
- 2. **Performance Analysis**: Asset loading, image optimization, caching strategies
345
- 3. **Accessibility Review**: ARIA labels, keyboard navigation, screen reader support
346
- 4. **SEO Optimization**: Structured data, meta tags, page speed, mobile responsiveness
347
- 5. **Code Quality**: WordPress Coding Standards, template hierarchy compliance
348
- 6. **Architecture Review**: Child theme compatibility, customizer integration
349
-
350
- **CRITICAL THEME FOCUS AREAS:**
351
- - Template security: Proper escaping and sanitization in templates
352
- - Asset optimization: CSS/JS minification, critical path optimization
353
- - Accessibility compliance: Color contrast, focus management, semantic HTML
354
- - SEO implementation: Schema markup, Open Graph, Twitter Cards
355
- - Performance bottlenecks: Render-blocking resources, unused CSS
356
- - WordPress integration: Proper enqueueing, theme supports, customizer
357
- - Cross-browser compatibility and responsive design
358
- - Template hierarchy compliance and hook usage`;
359
- const dataPayload = `**COMPREHENSIVE THEME AUDIT RESULTS:**
360
-
361
- ${JSON.stringify(analysisResult, null, 2)}`;
362
- const outputInstructions = `**PROVIDE COMPREHENSIVE WORDPRESS THEME AUDIT REPORT:**
363
-
364
- {
365
- "executiveSummary": {
366
- "overallRating": "critical|high-risk|medium-risk|low-risk|excellent",
367
- "themeReadiness": "production-ready|needs-fixes|major-issues|not-ready",
368
- "primaryConcerns": ["concern1", "concern2", "concern3"],
369
- "strengths": ["strength1", "strength2"],
370
- "timeToFix": "immediate|1-2 days|1 week|2+ weeks",
371
- "wpOrgCompliance": "compliant|minor-issues|major-issues|non-compliant"
372
- },
373
-
374
- "securityAssessment": {
375
- "criticalVulnerabilities": [
376
- {
377
- "type": "XSS|CSRF|Template Injection|Data Exposure",
378
- "severity": "critical|high|medium|low",
379
- "location": "specific template and line",
380
- "description": "detailed vulnerability description",
381
- "exploit": "how this could be exploited in theme context",
382
- "fix": "specific theme security fix with code example"
383
- }
384
- ],
385
- "templateSecurity": {
386
- "escaping": "proper|inconsistent|missing",
387
- "sanitization": "proper|inconsistent|missing",
388
- "authorization": "proper|inconsistent|missing"
389
- },
390
- "securityScore": "A|B|C|D|F"
391
- },
392
-
393
- "performanceAssessment": {
394
- "coreWebVitals": {
395
- "lcp": "good|needs-improvement|poor",
396
- "fid": "good|needs-improvement|poor",
397
- "cls": "good|needs-improvement|poor"
398
- },
399
- "assetOptimization": {
400
- "css": "optimized|needs-optimization|poor",
401
- "javascript": "optimized|needs-optimization|poor",
402
- "images": "optimized|needs-optimization|poor"
403
- },
404
- "performanceIssues": [
405
- {
406
- "type": "Render Blocking|Unused CSS|Large Images|Slow Queries",
407
- "severity": "critical|high|medium|low",
408
- "location": "specific file or template",
409
- "impact": "performance impact description",
410
- "optimization": "specific optimization recommendation"
411
- }
412
- ],
413
- "performanceScore": "A|B|C|D|F"
414
- },
415
-
416
- "accessibilityAssessment": {
417
- "wcagCompliance": {
418
- "level": "AA|A|Non-compliant",
419
- "score": "A|B|C|D|F"
420
- },
421
- "accessibilityIssues": [
422
- {
423
- "type": "Color Contrast|Keyboard Navigation|Screen Reader|ARIA|Focus Management",
424
- "severity": "critical|high|medium|low",
425
- "location": "specific template or component",
426
- "wcagCriterion": "1.4.3|2.1.1|4.1.2|etc",
427
- "fix": "specific accessibility fix with code example"
428
- }
429
- ],
430
- "keyboardNavigation": "full|partial|broken",
431
- "screenReaderSupport": "excellent|good|poor"
432
- },
433
-
434
- "seoAssessment": {
435
- "technicalSeo": {
436
- "structuredData": "implemented|partial|missing",
437
- "metaTags": "complete|incomplete|missing",
438
- "performance": "fast|average|slow"
439
- },
440
- "seoIssues": [
441
- {
442
- "type": "Missing Meta|No Structured Data|Slow Loading|Poor Mobile",
443
- "severity": "high|medium|low",
444
- "impact": "SEO impact description",
445
- "recommendation": "specific SEO improvement"
446
- }
447
- ],
448
- "seoScore": "A|B|C|D|F"
449
- },
450
-
451
- "codeQualityAssessment": {
452
- "wordpressStandards": {
453
- "phpCompliance": "high|medium|low",
454
- "cssCompliance": "high|medium|low",
455
- "jsCompliance": "high|medium|low"
456
- },
457
- "themeStructure": {
458
- "templateHierarchy": "proper|issues|broken",
459
- "childThemeSupport": "excellent|good|poor",
460
- "customizerIntegration": "complete|partial|missing"
461
- },
462
- "qualityScore": "A|B|C|D|F"
463
- },
464
-
465
- "actionPlan": {
466
- "immediate": [
467
- {
468
- "priority": 1,
469
- "task": "fix critical security vulnerability",
470
- "category": "security|performance|accessibility|seo|quality",
471
- "estimatedTime": "2 hours",
472
- "risk": "critical|high|medium|low"
473
- }
474
- ],
475
- "shortTerm": [
476
- {
477
- "priority": 2,
478
- "task": "optimize Core Web Vitals",
479
- "category": "performance",
480
- "estimatedTime": "4 hours",
481
- "risk": "medium"
482
- }
483
- ],
484
- "longTerm": [
485
- {
486
- "priority": 3,
487
- "task": "improve accessibility compliance",
488
- "category": "accessibility",
489
- "estimatedTime": "2 days",
490
- "risk": "low"
491
- }
492
- ]
493
- },
494
-
495
- "complianceReport": {
496
- "wordpressOrgReady": true,
497
- "accessibilityCompliant": true,
498
- "performanceOptimized": false,
499
- "issuesBlocking": ["issue1", "issue2"],
500
- "recommendationsForSubmission": ["recommendation1", "recommendation2"]
501
- }
502
- }
503
-
504
- **REQUIREMENTS:**
505
- - Provide specific template file names and line numbers for all issues
506
- - Include code examples for theme-specific fixes where applicable
507
- - Prioritize findings by user impact and compliance requirements
508
- - Focus on WordPress theme-specific best practices and standards
509
- - Ensure all recommendations are testable and implementable
510
- - Consider theme type (classic vs block) in recommendations`;
511
- return { systemAndContext, dataPayload, outputInstructions };
512
- }
513
- /**
514
- * Backwards compatibility method
515
- */
516
- getPromptStages(params) {
517
- return this.getMultiFilePromptStages(params);
518
- }
519
- // Unused methods for theme audit workflow
520
- async discoverRelevantFiles(projectPath, maxDepth, analysisType) {
521
- const extensions = ['.php', '.css', '.js', '.json', '.xml', '.txt', '.md', '.scss', '.sass'];
522
- return await this.multiFileAnalysis.discoverFiles(projectPath, extensions, maxDepth);
523
- }
524
- async performMultiFileAnalysis(files, params, model, contextLength) {
525
- return {};
526
- }
527
- async analyzeIndividualFile(file, params, model) {
528
- return {};
529
- }
530
- getFileExtensions(analysisType) {
531
- return ['.php', '.css', '.js', '.json', '.xml', '.txt', '.md', '.scss', '.sass'];
532
- }
533
- generateCacheKey(files, params) {
534
- const fileHash = files.join('|');
535
- const paramHash = JSON.stringify(params);
536
- return `${fileHash}_${paramHash}`.substring(0, 64);
537
- }
538
- }
539
- export default WordPressThemeAuditor;
540
- //# sourceMappingURL=wordpress-theme-audit.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"wordpress-theme-audit.js","sourceRoot":"","sources":["../../../src/prompts/analyze/wordpress-theme-audit.ts"],"names":[],"mappings":"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"}