@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 +0,0 @@
1
- {"version":3,"file":"count-files.d.ts","sourceRoot":"","sources":["../../../src/prompts/analyze/count-files.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;AAa5D,qBAAa,kBAAmB,SAAQ,UAAW,YAAW,aAAa;IACzE,IAAI,SAAiB;IACrB,QAAQ,EAAG,SAAS,CAAU;IAC9B,WAAW,SAAkG;IAG7G,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAqDR;IAEF,OAAO,CAAC,aAAa,CAAsB;IAC3C,OAAO,CAAC,iBAAiB,CAA2B;;IAO9C,OAAO,CAAC,MAAM,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG;IAyBzC;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAe1B;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAa1B;;OAEG;YACW,yBAAyB;IA4CvC;;OAEG;YACW,wBAAwB;IA4CtC;;OAEG;IACH,OAAO,CAAC,yBAAyB;IA0DjC;;OAEG;IACH,OAAO,CAAC,wBAAwB;IAmEhC;;;OAGG;IACH,eAAe,CAAC,MAAM,EAAE,GAAG,GAAG,YAAY;YAW5B,qBAAqB;YASrB,wBAAwB;YA0CxB,qBAAqB;IAcnC,OAAO,CAAC,iBAAiB;IAUzB,OAAO,CAAC,gBAAgB;IASxB,OAAO,CAAC,uBAAuB;IAoB/B,OAAO,CAAC,gBAAgB;CAKzB;AAED,eAAe,kBAAkB,CAAC"}
@@ -1,403 +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 { readFileContent } from '../shared/helpers.js';
13
- import { ModelSetup, ResponseProcessor, ParameterValidator, ErrorHandler, MultiFileAnalysis, TokenCalculator } from '../../utils/plugin-utilities.js';
14
- import { getAnalysisCache } from '../../cache/index.js';
15
- export class CountFilesAnalyzer extends BasePlugin {
16
- constructor() {
17
- super();
18
- this.name = 'count_files';
19
- this.category = 'analyze';
20
- this.description = 'Analyze directory structure and generate markdown directory tree with file and folder counts';
21
- // Universal parameter set - supports both single and multi-file scenarios
22
- this.parameters = {
23
- // Single-file parameters
24
- code: {
25
- type: 'string',
26
- description: 'The code to analyze (for single-file analysis)',
27
- required: false
28
- },
29
- filePath: {
30
- type: 'string',
31
- description: 'Path to single file to analyze',
32
- required: false
33
- },
34
- // Multi-file parameters
35
- projectPath: {
36
- type: 'string',
37
- description: 'Path to directory root to analyze',
38
- required: false
39
- },
40
- files: {
41
- type: 'array',
42
- description: 'Array of specific file paths (for multi-file analysis)',
43
- required: false,
44
- items: { type: 'string' }
45
- },
46
- maxDepth: {
47
- type: 'number',
48
- description: 'Maximum directory depth for discovery (1-10)',
49
- required: false,
50
- default: 5
51
- },
52
- // Universal parameters
53
- language: {
54
- type: 'string',
55
- description: 'Programming language',
56
- required: false,
57
- default: 'javascript'
58
- },
59
- analysisDepth: {
60
- type: 'string',
61
- description: 'Level of analysis detail',
62
- enum: ['basic', 'detailed', 'comprehensive'],
63
- default: 'detailed',
64
- required: false
65
- },
66
- analysisType: {
67
- type: 'string',
68
- description: 'Type of analysis to perform',
69
- enum: ['structure', 'counts', 'comprehensive'],
70
- default: 'comprehensive',
71
- required: false
72
- }
73
- };
74
- this.analysisCache = getAnalysisCache();
75
- this.multiFileAnalysis = new MultiFileAnalysis();
76
- // Cache and analysis utilities are initialized above
77
- }
78
- async execute(params, llmClient) {
79
- return await withSecurity(this, params, llmClient, async (secureParams) => {
80
- try {
81
- // 1. Auto-detect analysis mode based on parameters
82
- const analysisMode = this.detectAnalysisMode(secureParams);
83
- // 2. Validate parameters based on detected mode
84
- this.validateParameters(secureParams, analysisMode);
85
- // 3. Setup model
86
- const { model, contextLength } = await ModelSetup.getReadyModel(llmClient);
87
- // 4. Route to appropriate analysis method
88
- if (analysisMode === 'single-file') {
89
- return await this.executeSingleFileAnalysis(secureParams, model, contextLength);
90
- }
91
- else {
92
- return await this.executeMultiFileAnalysis(secureParams, model, contextLength);
93
- }
94
- }
95
- catch (error) {
96
- return ErrorHandler.createExecutionError('count_files', error);
97
- }
98
- });
99
- }
100
- /**
101
- * Auto-detect whether this is single-file or multi-file analysis
102
- */
103
- detectAnalysisMode(params) {
104
- // Single-file indicators take priority (avoids default parameter issues)
105
- if (params.code || params.filePath) {
106
- return 'single-file';
107
- }
108
- // Multi-file indicators
109
- if (params.projectPath || params.files) {
110
- return 'multi-file';
111
- }
112
- // Default to multi-file for directory counting
113
- return 'multi-file';
114
- }
115
- /**
116
- * Validate parameters based on detected analysis mode
117
- */
118
- validateParameters(params, mode) {
119
- if (mode === 'single-file') {
120
- ParameterValidator.validateCodeOrFile(params);
121
- }
122
- else {
123
- ParameterValidator.validateProjectPath(params);
124
- ParameterValidator.validateDepth(params);
125
- }
126
- // Universal validations
127
- ParameterValidator.validateEnum(params, 'analysisType', ['structure', 'counts', 'comprehensive']);
128
- ParameterValidator.validateEnum(params, 'analysisDepth', ['basic', 'detailed', 'comprehensive']);
129
- }
130
- /**
131
- * Execute single-file analysis
132
- */
133
- async executeSingleFileAnalysis(params, model, contextLength) {
134
- // Process single file input
135
- let codeToAnalyze = params.code;
136
- if (params.filePath) {
137
- codeToAnalyze = await readFileContent(params.filePath);
138
- }
139
- // Generate prompt stages for single file
140
- const promptStages = this.getSingleFilePromptStages({
141
- ...params,
142
- code: codeToAnalyze
143
- });
144
- // Execute with appropriate method
145
- const promptManager = new ThreeStagePromptManager();
146
- const needsChunking = TokenCalculator.needsChunking(promptStages, contextLength);
147
- if (needsChunking) {
148
- const chunkSize = TokenCalculator.calculateOptimalChunkSize(promptStages, contextLength);
149
- const dataChunks = promptManager.chunkDataPayload(promptStages.dataPayload, chunkSize);
150
- const conversation = promptManager.createChunkedConversation(promptStages, dataChunks);
151
- const messages = [
152
- conversation.systemMessage,
153
- ...conversation.dataMessages,
154
- conversation.analysisMessage
155
- ];
156
- return await ResponseProcessor.executeChunked(messages, model, contextLength, 'count_files', 'single');
157
- }
158
- else {
159
- return await ResponseProcessor.executeDirect(promptStages, model, contextLength, 'count_files');
160
- }
161
- }
162
- /**
163
- * Execute multi-file analysis
164
- */
165
- async executeMultiFileAnalysis(params, model, contextLength) {
166
- // Discover files
167
- let filesToAnalyze = params.files ||
168
- await this.discoverRelevantFiles(params.projectPath, params.maxDepth, params.analysisType);
169
- // Perform multi-file analysis with caching
170
- const analysisResult = await this.performMultiFileAnalysis(filesToAnalyze, params, model, contextLength);
171
- // Generate prompt stages for multi-file
172
- const promptStages = this.getMultiFilePromptStages({
173
- ...params,
174
- analysisResult,
175
- fileCount: filesToAnalyze.length
176
- });
177
- // Always use chunking for multi-file
178
- const promptManager = new ThreeStagePromptManager();
179
- const chunkSize = TokenCalculator.calculateOptimalChunkSize(promptStages, contextLength);
180
- const dataChunks = promptManager.chunkDataPayload(promptStages.dataPayload, chunkSize);
181
- const conversation = promptManager.createChunkedConversation(promptStages, dataChunks);
182
- const messages = [
183
- conversation.systemMessage,
184
- ...conversation.dataMessages,
185
- conversation.analysisMessage
186
- ];
187
- return await ResponseProcessor.executeChunked(messages, model, contextLength, 'count_files', 'multifile');
188
- }
189
- /**
190
- * Implement single-file prompt stages for file analysis
191
- */
192
- getSingleFilePromptStages(params) {
193
- const { code, language, analysisDepth, analysisType } = params;
194
- const systemAndContext = `You are an expert file structure analyst specializing in ${analysisDepth} ${analysisType} analysis.
195
-
196
- Analysis Context:
197
- - Language: ${language}
198
- - Analysis Depth: ${analysisDepth}
199
- - Analysis Type: ${analysisType}
200
- - Mode: Single File Analysis
201
-
202
- Your task is to analyze the provided file content and provide insights about its structure, size, and characteristics in markdown format.`;
203
- const dataPayload = `File content to analyze:
204
-
205
- \`\`\`${language}
206
- ${code}
207
- \`\`\``;
208
- const outputInstructions = `Provide a comprehensive analysis of this individual file:
209
-
210
- **File Overview:**
211
- - Brief summary of what this file contains and its purpose
212
- - File type and primary language
213
- - Approximate file size and lines of code
214
- - Role within the project structure
215
-
216
- **File Characteristics:**
217
- - **File Type**: Primary classification (component, utility, configuration, etc.)
218
- - **Lines of Code**: Estimated line count
219
- - **File Size**: Approximate size description
220
- - **Language**: Programming language and any frameworks used
221
- - **Complexity**: Assessment of file complexity (low/medium/high)
222
-
223
- **Code Structure Analysis:**
224
- - **Functions**: List of key functions and their purposes
225
- - **Classes**: Any classes defined and their roles
226
- - **Imports**: External dependencies and modules used
227
- - **Exports**: What this file makes available to other modules
228
- - **Constants & Variables**: Key configuration or data definitions
229
-
230
- **File-Specific Recommendations:**
231
- - Suggestions for improving this specific file
232
- - Code quality improvements
233
- - Structure or organization enhancements
234
- - Performance or maintainability considerations
235
-
236
- **Context Within Project:**
237
- - How this file fits into the overall project architecture
238
- - Dependencies on other files
239
- - Files that depend on this one
240
- - Potential impact of changes to this file
241
-
242
- Focus on providing actionable insights specific to this individual file while considering its role in the broader project context.`;
243
- return { systemAndContext, dataPayload, outputInstructions };
244
- }
245
- /**
246
- * Implement multi-file prompt stages for directory structure analysis
247
- */
248
- getMultiFilePromptStages(params) {
249
- const { analysisResult, analysisType, analysisDepth, fileCount } = params;
250
- const systemAndContext = `You are an expert directory structure analyst specializing in ${analysisDepth} ${analysisType} analysis.
251
-
252
- Analysis Context:
253
- - Analysis Type: ${analysisType}
254
- - Analysis Depth: ${analysisDepth}
255
- - Files Analyzed: ${fileCount}
256
- - Mode: Directory Structure Analysis
257
-
258
- Your task is to create a comprehensive markdown directory tree structure showing files and folders with counts and statistics.`;
259
- const dataPayload = `Directory analysis results:
260
-
261
- ${JSON.stringify(analysisResult, null, 2)}`;
262
- const outputInstructions = `Create a comprehensive directory structure analysis and markdown tree representation:
263
-
264
- **PROJECT OVERVIEW:**
265
- - **Total Files Analyzed**: ${fileCount} files
266
- - **Project Summary**: Brief description of the project's structure and organization
267
- - **Overall Assessment**: How well-organized and structured the project appears to be
268
-
269
- **DIRECTORY TREE STRUCTURE:**
270
- Create a detailed markdown representation of the directory tree showing:
271
- - All directories and subdirectories with proper indentation
272
- - File counts per directory
273
- - File types and extensions
274
- - Total file and directory counts
275
- - Key organizational patterns
276
-
277
- **STATISTICAL ANALYSIS:**
278
- - **File Type Distribution**: Breakdown by programming languages and file types
279
- - **Directory Size Analysis**: Which directories contain the most files
280
- - **Largest Files**: Notable large files and their purposes
281
- - **File Organization Patterns**: How files are grouped and organized
282
-
283
- **STRUCTURAL INSIGHTS:**
284
- - **Architecture Patterns**: What architectural patterns are evident from the structure
285
- - **Separation of Concerns**: How well different types of files are organized
286
- - **Project Type**: Assessment of what type of project this appears to be
287
- - **Development Stage**: Whether structure suggests early development, mature project, etc.
288
-
289
- **PROJECT ORGANIZATION RECOMMENDATIONS:**
290
- - **Structure Improvements**: Suggestions for better file organization
291
- - **Missing Directories**: Standard directories that might be beneficial
292
- - **File Naming**: Assessment of file naming conventions
293
- - **Refactoring Opportunities**: Structural improvements that could help maintainability
294
-
295
- **TECHNICAL ANALYSIS:**
296
- - **Build System**: Evidence of build tools, configuration files, package managers
297
- - **Development Workflow**: Testing, documentation, deployment file presence
298
- - **Dependencies**: Package files, lock files, dependency management
299
- - **Configuration**: Environment files, settings, configuration patterns
300
-
301
- **MAINTENANCE & SCALABILITY:**
302
- - **Code Organization**: How well the structure will scale with project growth
303
- - **Team Collaboration**: Structure conducive to multiple developers
304
- - **Documentation**: Presence and organization of documentation files
305
- - **Testing**: Test file organization and coverage structure
306
-
307
- Present this analysis in a clear, hierarchical format that helps developers understand both the current structure and opportunities for improvement.`;
308
- return { systemAndContext, dataPayload, outputInstructions };
309
- }
310
- /**
311
- * Implement for backwards compatibility
312
- * The system still expects this method, so we intelligently route to the appropriate stages
313
- */
314
- getPromptStages(params) {
315
- const mode = this.detectAnalysisMode(params);
316
- if (mode === 'single-file') {
317
- return this.getSingleFilePromptStages(params);
318
- }
319
- else {
320
- return this.getMultiFilePromptStages(params);
321
- }
322
- }
323
- // Multi-file helper methods
324
- async discoverRelevantFiles(projectPath, maxDepth, analysisType) {
325
- const extensions = this.getFileExtensions(analysisType);
326
- return await this.multiFileAnalysis.discoverFiles(projectPath, extensions, maxDepth);
327
- }
328
- async performMultiFileAnalysis(files, params, model, contextLength) {
329
- const cacheKey = this.analysisCache.generateKey('count_files', params, files);
330
- const cached = await this.analysisCache.get(cacheKey);
331
- if (cached)
332
- return cached;
333
- const fileAnalysisResults = await this.multiFileAnalysis.analyzeBatch(files, (file) => this.analyzeIndividualFile(file, params, model), contextLength);
334
- // Aggregate results into proper analysis result format
335
- const aggregatedResult = {
336
- summary: `Directory structure analysis of ${files.length} files`,
337
- findings: fileAnalysisResults,
338
- data: {
339
- fileCount: files.length,
340
- totalSize: fileAnalysisResults.reduce((sum, result) => sum + (result.size || 0), 0),
341
- filesByType: this.groupFilesByType(fileAnalysisResults),
342
- directoryStructure: this.buildDirectoryStructure(files)
343
- }
344
- };
345
- await this.analysisCache.cacheAnalysis(cacheKey, aggregatedResult, {
346
- modelUsed: model.identifier || 'unknown',
347
- executionTime: Date.now() - Date.now(), // TODO: Track actual execution time
348
- timestamp: new Date().toISOString()
349
- });
350
- return aggregatedResult;
351
- }
352
- async analyzeIndividualFile(file, params, model) {
353
- const content = await import('fs/promises').then(fs => fs.readFile(file, 'utf-8'));
354
- const stats = await import('fs/promises').then(fs => fs.stat(file));
355
- return {
356
- filePath: file,
357
- size: content.length,
358
- lines: content.split('\n').length,
359
- extension: file.split('.').pop() || '',
360
- isDirectory: stats.isDirectory(),
361
- modified: stats.mtime
362
- };
363
- }
364
- getFileExtensions(analysisType) {
365
- const extensionMap = {
366
- 'structure': ['.js', '.ts', '.jsx', '.tsx', '.php', '.py', '.java', '.cs', '.cpp', '.h', '.css', '.html', '.md', '.json', '.xml', '.yml', '.yaml'], // Common file types for structure analysis
367
- 'counts': ['.js', '.ts', '.jsx', '.tsx', '.php', '.py', '.java', '.cs', '.cpp', '.h', '.css', '.html', '.md', '.json', '.xml', '.yml', '.yaml'], // Same for counting
368
- 'comprehensive': ['.js', '.ts', '.jsx', '.tsx', '.php', '.py', '.java', '.cs', '.cpp', '.h', '.css', '.html', '.md', '.json', '.xml', '.yml', '.yaml'] // Comprehensive analysis
369
- };
370
- return extensionMap[analysisType] || extensionMap.comprehensive;
371
- }
372
- groupFilesByType(results) {
373
- const grouped = {};
374
- results.forEach(result => {
375
- const ext = result.extension || 'no-extension';
376
- grouped[ext] = (grouped[ext] || 0) + 1;
377
- });
378
- return grouped;
379
- }
380
- buildDirectoryStructure(files) {
381
- const structure = {};
382
- files.forEach(file => {
383
- const parts = file.split('/');
384
- let current = structure;
385
- parts.forEach((part, index) => {
386
- if (!current[part]) {
387
- current[part] = index === parts.length - 1 ? null : {};
388
- }
389
- if (current[part] !== null) {
390
- current = current[part];
391
- }
392
- });
393
- });
394
- return structure;
395
- }
396
- generateCacheKey(files, params) {
397
- const fileHash = files.join('|');
398
- const paramHash = JSON.stringify(params);
399
- return `${fileHash}_${paramHash}`.substring(0, 64);
400
- }
401
- }
402
- export default CountFilesAnalyzer;
403
- //# sourceMappingURL=count-files.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"count-files.js","sourceRoot":"","sources":["../../../src/prompts/analyze/count-files.ts"],"names":[],"mappings":"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"}
@@ -1,156 +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 DatabaseQueryAnalyzer extends BasePlugin implements IPromptPlugin {
13
- name: string;
14
- category: "analyze";
15
- description: string;
16
- parameters: {
17
- code: {
18
- type: "string";
19
- description: string;
20
- required: boolean;
21
- };
22
- filePath: {
23
- type: "string";
24
- description: string;
25
- required: boolean;
26
- };
27
- projectPath: {
28
- type: "string";
29
- description: string;
30
- required: boolean;
31
- };
32
- files: {
33
- type: "array";
34
- description: string;
35
- required: boolean;
36
- items: {
37
- type: "string";
38
- };
39
- };
40
- maxDepth: {
41
- type: "number";
42
- description: string;
43
- required: boolean;
44
- default: number;
45
- };
46
- language: {
47
- type: "string";
48
- description: string;
49
- required: boolean;
50
- default: string;
51
- };
52
- analysisDepth: {
53
- type: "string";
54
- description: string;
55
- enum: string[];
56
- default: string;
57
- required: boolean;
58
- };
59
- analysisType: {
60
- type: "string";
61
- description: string;
62
- enum: string[];
63
- default: string;
64
- required: boolean;
65
- };
66
- context: {
67
- type: "object";
68
- description: string;
69
- required: boolean;
70
- properties: {
71
- database: {
72
- type: "string";
73
- enum: string[];
74
- description: string;
75
- };
76
- framework: {
77
- type: "string";
78
- enum: string[];
79
- description: string;
80
- };
81
- orm: {
82
- type: "string";
83
- enum: string[];
84
- description: string;
85
- };
86
- environment: {
87
- type: "string";
88
- enum: string[];
89
- description: string;
90
- };
91
- };
92
- };
93
- };
94
- private analysisCache;
95
- private multiFileAnalysis;
96
- constructor();
97
- execute(params: any, llmClient: any): Promise<any>;
98
- /**
99
- * Auto-detect whether this is single-file or multi-file analysis
100
- */
101
- private detectAnalysisMode;
102
- /**
103
- * Validate parameters based on detected analysis mode
104
- */
105
- private validateParameters;
106
- /**
107
- * Execute single-file analysis
108
- */
109
- private executeSingleFileAnalysis;
110
- /**
111
- * Execute multi-file analysis
112
- */
113
- private executeMultiFileAnalysis;
114
- /**
115
- * Database Query Analysis - Single File Expert Analysis
116
- */
117
- private getSingleFilePromptStages;
118
- /**
119
- * Multi-file database analysis for project-wide query patterns
120
- */
121
- private getMultiFilePromptStages;
122
- /**
123
- * Backwards compatibility method
124
- */
125
- getPromptStages(params: any): PromptStages;
126
- private discoverRelevantFiles;
127
- private performMultiFileAnalysis;
128
- private analyzeIndividualFile;
129
- /**
130
- * Extract database queries from code using patterns for different languages/frameworks
131
- */
132
- private extractDatabaseQueries;
133
- private getQueryContext;
134
- private getQueryType;
135
- private detectQueryFramework;
136
- private countDatabaseCalls;
137
- private identifySecurityRisks;
138
- private identifyPerformanceIssues;
139
- private analyzeDatabasePatterns;
140
- private aggregateQueryAnalysis;
141
- private aggregateSecurityFindings;
142
- private aggregatePerformanceFindings;
143
- private calculateRiskLevel;
144
- private identifyDatabaseFrameworks;
145
- private aggregateQueryTypes;
146
- private groupBy;
147
- private countOccurrences;
148
- private getFileExtensions;
149
- /**
150
- * Database and framework-specific expert instructions
151
- */
152
- private getDatabaseSpecificInstructions;
153
- private generateCacheKey;
154
- }
155
- export default DatabaseQueryAnalyzer;
156
- //# sourceMappingURL=database-queries.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"database-queries.d.ts","sourceRoot":"","sources":["../../../src/prompts/analyze/database-queries.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,qBAAsB,SAAQ,UAAW,YAAW,aAAa;IAC5E,IAAI,SAA8B;IAClC,QAAQ,EAAG,SAAS,CAAU;IAC9B,WAAW,SAA6G;IAGxH,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAkFR;IAEF,OAAO,CAAC,aAAa,CAAsB;IAC3C,OAAO,CAAC,iBAAiB,CAA2B;;IAO9C,OAAO,CAAC,MAAM,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG;IAyBzC;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAe1B;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAa1B;;OAEG;YACW,yBAAyB;IAgDvC;;OAEG;YACW,wBAAwB;IA4CtC;;OAEG;IACH,OAAO,CAAC,yBAAyB;IAwJjC;;OAEG;IACH,OAAO,CAAC,wBAAwB;IAyEhC;;OAEG;IACH,eAAe,CAAC,MAAM,EAAE,GAAG,GAAG,YAAY;YAW5B,qBAAqB;YASrB,wBAAwB;YA8CxB,qBAAqB;IAsBnC;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAkD9B,OAAO,CAAC,eAAe;IAOvB,OAAO,CAAC,YAAY;IAQpB,OAAO,CAAC,oBAAoB;IAO5B,OAAO,CAAC,kBAAkB;IAgB1B,OAAO,CAAC,qBAAqB;IAuB7B,OAAO,CAAC,yBAAyB;IAwBjC,OAAO,CAAC,uBAAuB;IAQ/B,OAAO,CAAC,sBAAsB;IAS9B,OAAO,CAAC,yBAAyB;IAQjC,OAAO,CAAC,4BAA4B;IAQpC,OAAO,CAAC,kBAAkB;IAO1B,OAAO,CAAC,0BAA0B;IAYlC,OAAO,CAAC,mBAAmB;IAY3B,OAAO,CAAC,OAAO;IAQf,OAAO,CAAC,gBAAgB;IAOxB,OAAO,CAAC,iBAAiB;IAWzB;;OAEG;IACH,OAAO,CAAC,+BAA+B;IA6CvC,OAAO,CAAC,gBAAgB;CAKzB;AAED,eAAe,qBAAqB,CAAC"}