@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,116 +0,0 @@
1
- /**
2
- * Plugin Template - Modern v4.2 (Single Source of Truth)
3
- *
4
- * Universal template that intelligently handles both single-file and multi-file analysis
5
- * Automatically detects analysis type based on provided parameters
6
- *
7
- * Copy this template for creating any new plugin - it adapts to your needs
8
- */
9
- import { BasePlugin } from '../../plugins/base-plugin.js';
10
- import { IPromptPlugin } from '../shared/types.js';
11
- import { PromptStages } from '../../types/prompt-stages.js';
12
- export declare class WordPressPluginAuditor extends BasePlugin implements IPromptPlugin {
13
- name: string;
14
- category: "analyze";
15
- description: string;
16
- parameters: {
17
- projectPath: {
18
- type: "string";
19
- description: string;
20
- required: boolean;
21
- };
22
- auditDepth: {
23
- type: "string";
24
- description: string;
25
- enum: string[];
26
- default: string;
27
- required: boolean;
28
- };
29
- auditType: {
30
- type: "string";
31
- description: string;
32
- enum: string[];
33
- default: string;
34
- required: boolean;
35
- };
36
- includeSteps: {
37
- type: "array";
38
- description: string;
39
- required: boolean;
40
- items: {
41
- type: "string";
42
- };
43
- default: string[];
44
- };
45
- maxDepth: {
46
- type: "number";
47
- description: string;
48
- required: boolean;
49
- default: number;
50
- };
51
- wpVersion: {
52
- type: "string";
53
- description: string;
54
- required: boolean;
55
- default: string;
56
- };
57
- phpVersion: {
58
- type: "string";
59
- description: string;
60
- required: boolean;
61
- default: string;
62
- };
63
- };
64
- private analysisCache;
65
- private multiFileAnalysis;
66
- private chainedResults;
67
- constructor();
68
- execute(params: any, llmClient: any): Promise<any>;
69
- /**
70
- * Validate WordPress plugin structure
71
- */
72
- private validateWordPressPlugin;
73
- /**
74
- * Execute the chained analysis workflow
75
- */
76
- private executeChainedAnalysis;
77
- /**
78
- * Run individual analysis step by calling other MCP functions
79
- */
80
- private runAnalysisStep;
81
- /**
82
- * Synthesize all audit results into comprehensive report
83
- */
84
- private synthesizeAuditResults;
85
- /**
86
- * Single-file mode not applicable for plugin audit
87
- */
88
- private getSingleFilePromptStages;
89
- /**
90
- * Multi-file prompt stages for comprehensive audit synthesis
91
- */
92
- private getMultiFilePromptStages;
93
- /**
94
- * Backwards compatibility method
95
- */
96
- getPromptStages(params: any): PromptStages;
97
- /**
98
- * Not used in plugin audit workflow
99
- */
100
- private discoverRelevantFiles;
101
- /**
102
- * Not used in chained analysis workflow
103
- */
104
- private performMultiFileAnalysis;
105
- /**
106
- * Not used in chained analysis workflow
107
- */
108
- private analyzeIndividualFile;
109
- /**
110
- * WordPress plugin file extensions
111
- */
112
- private getFileExtensions;
113
- private generateCacheKey;
114
- }
115
- export default WordPressPluginAuditor;
116
- //# sourceMappingURL=wordpress-plugin-audit.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"wordpress-plugin-audit.d.ts","sourceRoot":"","sources":["../../../src/prompts/analyze/wordpress-plugin-audit.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEnD,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAiB5D,qBAAa,sBAAuB,SAAQ,UAAW,YAAW,aAAa;IAC7E,IAAI,SAA4B;IAChC,QAAQ,EAAG,SAAS,CAAU;IAC9B,WAAW,SAAqI;IAGhJ,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAqDR;IAEF,OAAO,CAAC,aAAa,CAAsB;IAC3C,OAAO,CAAC,iBAAiB,CAA2B;IACpD,OAAO,CAAC,cAAc,CAA+B;;IAO/C,OAAO,CAAC,MAAM,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG;IAkBzC;;OAEG;IACH,OAAO,CAAC,uBAAuB;IAO/B;;OAEG;YACW,sBAAsB;IAoFpC;;OAEG;YACW,eAAe;IA4D7B;;OAEG;YACW,sBAAsB;IA4BpC;;OAEG;IACH,OAAO,CAAC,yBAAyB;IAiBjC;;OAEG;IACH,OAAO,CAAC,wBAAwB;IAmJhC;;OAEG;IACH,eAAe,CAAC,MAAM,EAAE,GAAG,GAAG,YAAY;IAI1C;;OAEG;YACW,qBAAqB;IAKnC;;OAEG;YACW,wBAAwB;IAItC;;OAEG;YACW,qBAAqB;IAInC;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAIzB,OAAO,CAAC,gBAAgB;CAKzB;AAED,eAAe,sBAAsB,CAAC"}
@@ -1,456 +0,0 @@
1
- /**
2
- * Plugin Template - Modern v4.2 (Single Source of Truth)
3
- *
4
- * Universal template that intelligently handles both single-file and multi-file analysis
5
- * Automatically detects analysis type based on provided parameters
6
- *
7
- * Copy this template for creating any new plugin - it adapts to your needs
8
- */
9
- import { BasePlugin } from '../../plugins/base-plugin.js';
10
- import { ThreeStagePromptManager } from '../../core/ThreeStagePromptManager.js';
11
- import { withSecurity } from '../../security/integration-helpers.js';
12
- import { ModelSetup, ResponseProcessor, ParameterValidator, ErrorHandler, MultiFileAnalysis, TokenCalculator } from '../../utils/plugin-utilities.js';
13
- import { getAnalysisCache } from '../../cache/index.js';
14
- export class WordPressPluginAuditor extends BasePlugin {
15
- constructor() {
16
- super();
17
- this.name = 'audit_wordpress_plugin';
18
- this.category = 'analyze';
19
- this.description = 'Comprehensive WordPress plugin audit - chains multiple analysis steps for security, performance, dependencies, and code quality';
20
- // Universal parameter set - supports both single and multi-file scenarios
21
- this.parameters = {
22
- // Multi-file parameters (primary mode for plugin audit)
23
- projectPath: {
24
- type: 'string',
25
- description: 'Path to WordPress plugin root directory',
26
- required: true
27
- },
28
- // Analysis configuration
29
- auditDepth: {
30
- type: 'string',
31
- description: 'Depth of audit analysis',
32
- enum: ['basic', 'detailed', 'comprehensive'],
33
- default: 'comprehensive',
34
- required: false
35
- },
36
- auditType: {
37
- type: 'string',
38
- description: 'Type of audit focus',
39
- enum: ['security', 'performance', 'quality', 'full-audit'],
40
- default: 'full-audit',
41
- required: false
42
- },
43
- // Analysis step configuration
44
- includeSteps: {
45
- type: 'array',
46
- description: 'Analysis steps to include in audit',
47
- required: false,
48
- items: { type: 'string' },
49
- default: ['structure', 'dependencies', 'security', 'database', 'quality']
50
- },
51
- maxDepth: {
52
- type: 'number',
53
- description: 'Maximum directory depth for analysis (1-5)',
54
- required: false,
55
- default: 4
56
- },
57
- // WordPress-specific context
58
- wpVersion: {
59
- type: 'string',
60
- description: 'Target WordPress version for compatibility checks',
61
- required: false,
62
- default: '6.4'
63
- },
64
- phpVersion: {
65
- type: 'string',
66
- description: 'Target PHP version for compatibility checks',
67
- required: false,
68
- default: '8.0'
69
- }
70
- };
71
- this.analysisCache = getAnalysisCache();
72
- this.multiFileAnalysis = new MultiFileAnalysis();
73
- this.chainedResults = new Map();
74
- // Cache and analysis utilities are initialized above
75
- }
76
- async execute(params, llmClient) {
77
- return await withSecurity(this, params, llmClient, async (secureParams) => {
78
- try {
79
- // 1. Validate WordPress plugin structure
80
- this.validateWordPressPlugin(secureParams);
81
- // 2. Setup model
82
- const { model, contextLength } = await ModelSetup.getReadyModel(llmClient);
83
- // 3. Execute chained analysis workflow
84
- return await this.executeChainedAnalysis(secureParams, llmClient, model, contextLength);
85
- }
86
- catch (error) {
87
- return ErrorHandler.createExecutionError('audit_wordpress_plugin', error);
88
- }
89
- });
90
- }
91
- /**
92
- * Validate WordPress plugin structure
93
- */
94
- validateWordPressPlugin(params) {
95
- ParameterValidator.validateProjectPath(params);
96
- ParameterValidator.validateDepth(params);
97
- ParameterValidator.validateEnum(params, 'auditType', ['security', 'performance', 'quality', 'full-audit']);
98
- ParameterValidator.validateEnum(params, 'auditDepth', ['basic', 'detailed', 'comprehensive']);
99
- }
100
- /**
101
- * Execute the chained analysis workflow
102
- */
103
- async executeChainedAnalysis(params, llmClient, model, contextLength) {
104
- const auditSteps = params.includeSteps || ['structure', 'dependencies', 'security', 'database', 'quality'];
105
- const results = {};
106
- const stepExecutionLog = [];
107
- try {
108
- stepExecutionLog.push(`Starting WordPress plugin audit with ${auditSteps.length} steps`);
109
- // Step 1: Project Structure Overview
110
- if (auditSteps.includes('structure')) {
111
- stepExecutionLog.push('Executing: Project structure analysis');
112
- results.structure = await this.runAnalysisStep('count_files', {
113
- projectPath: params.projectPath,
114
- analysisType: 'comprehensive',
115
- maxDepth: params.maxDepth
116
- }, llmClient);
117
- stepExecutionLog.push(`Structure analysis: ${results.structure.success ? 'SUCCESS' : 'FAILED'}`);
118
- }
119
- // Step 2: Dependencies Analysis
120
- if (auditSteps.includes('dependencies')) {
121
- stepExecutionLog.push('Executing: Dependencies analysis');
122
- results.dependencies = await this.runAnalysisStep('analyze_dependencies', {
123
- projectPath: params.projectPath,
124
- analysisType: 'comprehensive',
125
- includePackageJson: true,
126
- checkDevDependencies: false
127
- }, llmClient);
128
- stepExecutionLog.push(`Dependencies analysis: ${results.dependencies.success ? 'SUCCESS' : 'FAILED'}`);
129
- }
130
- // Step 3: WordPress Security Audit
131
- if (auditSteps.includes('security')) {
132
- stepExecutionLog.push('Executing: WordPress security analysis');
133
- results.security = await this.runAnalysisStep('analyze_wordpress_security', {
134
- projectPath: params.projectPath,
135
- wpType: 'plugin',
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 4: Database Query Analysis
143
- if (auditSteps.includes('database')) {
144
- stepExecutionLog.push('Executing: Database query analysis');
145
- results.database = await this.runAnalysisStep('analyze_database_queries', {
146
- projectPath: params.projectPath,
147
- analysisType: 'comprehensive',
148
- context: { projectType: 'wordpress-plugin' }
149
- }, llmClient);
150
- stepExecutionLog.push(`Database analysis: ${results.database.success ? 'SUCCESS' : 'FAILED'}`);
151
- }
152
- // Step 5: Code Quality Assessment
153
- if (auditSteps.includes('quality')) {
154
- stepExecutionLog.push('Executing: Code quality analysis');
155
- results.quality = await this.runAnalysisStep('analyze_code_quality', {
156
- projectPath: params.projectPath,
157
- analysisType: 'comprehensive',
158
- language: 'php'
159
- }, llmClient);
160
- stepExecutionLog.push(`Quality analysis: ${results.quality.success ? 'SUCCESS' : 'FAILED'}`);
161
- }
162
- // Step 6: Synthesize all results
163
- stepExecutionLog.push('Synthesizing comprehensive audit report');
164
- const synthesizedResults = await this.synthesizeAuditResults({
165
- ...results,
166
- executionLog: stepExecutionLog,
167
- completedSteps: auditSteps.filter(step => results[step]?.success),
168
- failedSteps: auditSteps.filter(step => results[step]?.success === false)
169
- }, params, model, contextLength);
170
- stepExecutionLog.push('Audit synthesis: COMPLETED');
171
- return synthesizedResults;
172
- }
173
- catch (error) {
174
- stepExecutionLog.push(`Audit failed: ${error.message}`);
175
- return ErrorHandler.createExecutionError('audit_wordpress_plugin', error);
176
- }
177
- }
178
- /**
179
- * Run individual analysis step by calling other MCP functions
180
- */
181
- async runAnalysisStep(functionName, stepParams, llmClient) {
182
- try {
183
- // Check cache first
184
- const cacheKey = this.analysisCache.generateKey(functionName, stepParams, []);
185
- const cached = await this.analysisCache.get(cacheKey);
186
- if (cached)
187
- return cached;
188
- // Import the plugin loader to call other MCP functions
189
- const { PluginRegistry } = await import('../../plugins/index.js');
190
- const pluginLoader = PluginRegistry.getInstance();
191
- // Execute the specific analysis function
192
- let result;
193
- try {
194
- result = await pluginLoader.executePlugin(functionName, stepParams, llmClient);
195
- // Wrap successful results
196
- const wrappedResult = {
197
- stepName: functionName,
198
- parameters: stepParams,
199
- status: 'completed',
200
- timestamp: new Date().toISOString(),
201
- data: result.data || result,
202
- summary: `Completed ${functionName} analysis`,
203
- success: true
204
- };
205
- // Cache the result
206
- await this.analysisCache.cacheAnalysis(cacheKey, wrappedResult, {
207
- modelUsed: result.modelUsed || 'unknown',
208
- executionTime: result.executionTimeMs || 0,
209
- timestamp: new Date().toISOString()
210
- });
211
- return wrappedResult;
212
- }
213
- catch (pluginError) {
214
- // If the plugin doesn't exist or fails, return error result
215
- const errorResult = {
216
- stepName: functionName,
217
- status: 'failed',
218
- error: pluginError.message,
219
- timestamp: new Date().toISOString(),
220
- success: false
221
- };
222
- return errorResult;
223
- }
224
- }
225
- catch (error) {
226
- return {
227
- stepName: functionName,
228
- status: 'system-error',
229
- error: error.message,
230
- timestamp: new Date().toISOString(),
231
- success: false
232
- };
233
- }
234
- }
235
- /**
236
- * Synthesize all audit results into comprehensive report
237
- */
238
- async synthesizeAuditResults(results, params, model, contextLength) {
239
- // Generate final synthesis prompt stages
240
- const promptStages = this.getMultiFilePromptStages({
241
- ...params,
242
- analysisResult: results,
243
- stepCount: Object.keys(results).length
244
- });
245
- // Always use chunking for comprehensive synthesis
246
- const promptManager = new ThreeStagePromptManager();
247
- const chunkSize = TokenCalculator.calculateOptimalChunkSize(promptStages, contextLength);
248
- const dataChunks = promptManager.chunkDataPayload(promptStages.dataPayload, chunkSize);
249
- const conversation = promptManager.createChunkedConversation(promptStages, dataChunks);
250
- const messages = [
251
- conversation.systemMessage,
252
- ...conversation.dataMessages,
253
- conversation.analysisMessage
254
- ];
255
- return await ResponseProcessor.executeChunked(messages, model, contextLength, 'audit_wordpress_plugin', 'multifile');
256
- }
257
- /**
258
- * Single-file mode not applicable for plugin audit
259
- */
260
- getSingleFilePromptStages(params) {
261
- const systemAndContext = `WordPress Plugin Auditor - Single File Mode
262
-
263
- This mode is not recommended for WordPress plugin audits.
264
- Use multi-file mode with projectPath parameter for comprehensive plugin analysis.`;
265
- const dataPayload = `Single file analysis not supported for WordPress plugin audits.
266
- Please use projectPath parameter to analyze the entire plugin structure.`;
267
- const outputInstructions = `{
268
- "error": "Single file mode not supported for WordPress plugin audits",
269
- "recommendation": "Use projectPath parameter for comprehensive plugin analysis"
270
- }`;
271
- return { systemAndContext, dataPayload, outputInstructions };
272
- }
273
- /**
274
- * Multi-file prompt stages for comprehensive audit synthesis
275
- */
276
- getMultiFilePromptStages(params) {
277
- const { analysisResult, auditType, auditDepth, wpVersion, phpVersion, stepCount } = params;
278
- const systemAndContext = `You are a senior WordPress plugin security and performance expert with 15+ years of experience auditing enterprise WordPress installations.
279
-
280
- **AUDIT CONTEXT:**
281
- - Audit Type: ${auditType}
282
- - Audit Depth: ${auditDepth}
283
- - Analysis Steps Completed: ${stepCount}
284
- - Target WordPress Version: ${wpVersion}
285
- - Target PHP Version: ${phpVersion}
286
- - Plugin Type: WordPress Plugin
287
-
288
- **YOUR EXPERTISE:**
289
- You are internationally recognized for:
290
- - WordPress plugin security auditing and penetration testing
291
- - Performance optimization for high-traffic WordPress sites
292
- - Code quality assessment for WordPress.org repository submissions
293
- - Database optimization and query performance analysis
294
- - Dependency management and conflict resolution
295
-
296
- **AUDIT METHODOLOGY:**
297
- 1. **Security Assessment**: OWASP Top 10, WordPress-specific vulnerabilities
298
- 2. **Performance Analysis**: Database queries, caching, resource usage
299
- 3. **Code Quality Review**: WordPress Coding Standards, best practices
300
- 4. **Dependency Analysis**: Plugin conflicts, version compatibility
301
- 5. **Architecture Review**: Plugin structure, hooks usage, extensibility
302
-
303
- **CRITICAL FOCUS AREAS:**
304
- - SQL injection vulnerabilities in custom queries
305
- - XSS vulnerabilities in admin interfaces and frontend output
306
- - CSRF protection through nonces validation
307
- - Capability and permission checks
308
- - Data sanitization and validation
309
- - Performance bottlenecks in database queries
310
- - Unused code and dependencies
311
- - WordPress API compliance and best practices`;
312
- const dataPayload = `**COMPREHENSIVE AUDIT RESULTS:**
313
-
314
- ${JSON.stringify(analysisResult, null, 2)}`;
315
- const outputInstructions = `**PROVIDE COMPREHENSIVE WORDPRESS PLUGIN AUDIT REPORT:**
316
-
317
- {
318
- "executiveSummary": {
319
- "overallRating": "critical|high-risk|medium-risk|low-risk|excellent",
320
- "primaryConcerns": ["concern1", "concern2", "concern3"],
321
- "strengths": ["strength1", "strength2"],
322
- "recommendedActions": ["action1", "action2"],
323
- "timeToFix": "immediate|1-2 days|1 week|2+ weeks"
324
- },
325
-
326
- "securityAssessment": {
327
- "criticalVulnerabilities": [
328
- {
329
- "type": "SQL Injection|XSS|CSRF|Authentication Bypass",
330
- "severity": "critical|high|medium|low",
331
- "location": "specific file and line",
332
- "description": "detailed vulnerability description",
333
- "exploit": "how this could be exploited",
334
- "fix": "specific fix with code example"
335
- }
336
- ],
337
- "securityScore": "A|B|C|D|F",
338
- "complianceIssues": ["OWASP issue 1", "WordPress security issue 2"]
339
- },
340
-
341
- "performanceAssessment": {
342
- "databaseIssues": [
343
- {
344
- "type": "N+1 Query|Missing Index|Inefficient Query|Direct SQL",
345
- "severity": "critical|high|medium|low",
346
- "location": "file and function",
347
- "impact": "performance impact description",
348
- "optimization": "specific optimization recommendation"
349
- }
350
- ],
351
- "performanceScore": "A|B|C|D|F",
352
- "bottlenecks": ["bottleneck1", "bottleneck2"],
353
- "optimizations": ["optimization1", "optimization2"]
354
- },
355
-
356
- "codeQualityAssessment": {
357
- "wordpressStandards": {
358
- "compliance": "high|medium|low",
359
- "violations": ["violation1", "violation2"],
360
- "score": "A|B|C|D|F"
361
- },
362
- "maintainability": {
363
- "score": "high|medium|low",
364
- "issues": ["issue1", "issue2"],
365
- "improvements": ["improvement1", "improvement2"]
366
- }
367
- },
368
-
369
- "dependencyAssessment": {
370
- "unusedCode": ["unused file 1", "unused function 2"],
371
- "conflicts": ["potential conflict 1"],
372
- "outdatedDependencies": ["dependency1", "dependency2"],
373
- "recommendations": ["remove unused X", "update Y to version Z"]
374
- },
375
-
376
- "actionPlan": {
377
- "immediate": [
378
- {
379
- "priority": 1,
380
- "task": "fix critical security vulnerability",
381
- "estimatedTime": "2 hours",
382
- "risk": "critical"
383
- }
384
- ],
385
- "shortTerm": [
386
- {
387
- "priority": 2,
388
- "task": "optimize database queries",
389
- "estimatedTime": "4 hours",
390
- "risk": "medium"
391
- }
392
- ],
393
- "longTerm": [
394
- {
395
- "priority": 3,
396
- "task": "refactor architecture",
397
- "estimatedTime": "2 days",
398
- "risk": "low"
399
- }
400
- ]
401
- },
402
-
403
- "complianceReport": {
404
- "wordpressOrgReady": true,
405
- "issuesBlocking": ["issue1", "issue2"],
406
- "recommendationsForSubmission": ["recommendation1", "recommendation2"]
407
- }
408
- }
409
-
410
- **REQUIREMENTS:**
411
- - Provide specific file names and line numbers for all issues
412
- - Include code examples for fixes where applicable
413
- - Prioritize findings by business impact and security risk
414
- - Ensure all recommendations are actionable and testable
415
- - Focus on WordPress-specific best practices and security guidelines`;
416
- return { systemAndContext, dataPayload, outputInstructions };
417
- }
418
- /**
419
- * Backwards compatibility method
420
- */
421
- getPromptStages(params) {
422
- return this.getMultiFilePromptStages(params);
423
- }
424
- /**
425
- * Not used in plugin audit workflow
426
- */
427
- async discoverRelevantFiles(projectPath, maxDepth, analysisType) {
428
- const extensions = ['.php', '.js', '.css', '.json', '.xml', '.txt', '.md'];
429
- return await this.multiFileAnalysis.discoverFiles(projectPath, extensions, maxDepth);
430
- }
431
- /**
432
- * Not used in chained analysis workflow
433
- */
434
- async performMultiFileAnalysis(files, params, model, contextLength) {
435
- return {};
436
- }
437
- /**
438
- * Not used in chained analysis workflow
439
- */
440
- async analyzeIndividualFile(file, params, model) {
441
- return {};
442
- }
443
- /**
444
- * WordPress plugin file extensions
445
- */
446
- getFileExtensions(analysisType) {
447
- return ['.php', '.js', '.css', '.json', '.xml', '.txt', '.md', '.yml', '.yaml'];
448
- }
449
- generateCacheKey(files, params) {
450
- const fileHash = files.join('|');
451
- const paramHash = JSON.stringify(params);
452
- return `${fileHash}_${paramHash}`.substring(0, 64);
453
- }
454
- }
455
- export default WordPressPluginAuditor;
456
- //# sourceMappingURL=wordpress-plugin-audit.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"wordpress-plugin-audit.js","sourceRoot":"","sources":["../../../src/prompts/analyze/wordpress-plugin-audit.ts"],"names":[],"mappings":"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"}