@houtini/lm 1.0.13 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (262) hide show
  1. package/dist/index.d.ts +5 -3
  2. package/dist/index.js +142 -213
  3. package/dist/index.js.map +1 -1
  4. package/package.json +10 -33
  5. package/CHANGELOG.md +0 -282
  6. package/dist/cache/analysis-cache.d.ts +0 -33
  7. package/dist/cache/analysis-cache.d.ts.map +0 -1
  8. package/dist/cache/analysis-cache.js +0 -56
  9. package/dist/cache/analysis-cache.js.map +0 -1
  10. package/dist/cache/cache-manager.d.ts +0 -29
  11. package/dist/cache/cache-manager.d.ts.map +0 -1
  12. package/dist/cache/cache-manager.js +0 -85
  13. package/dist/cache/cache-manager.js.map +0 -1
  14. package/dist/cache/index.d.ts +0 -16
  15. package/dist/cache/index.d.ts.map +0 -1
  16. package/dist/cache/index.js +0 -17
  17. package/dist/cache/index.js.map +0 -1
  18. package/dist/cache/prompt-cache.d.ts +0 -33
  19. package/dist/cache/prompt-cache.d.ts.map +0 -1
  20. package/dist/cache/prompt-cache.js +0 -61
  21. package/dist/cache/prompt-cache.js.map +0 -1
  22. package/dist/config.d.ts +0 -41
  23. package/dist/config.d.ts.map +0 -1
  24. package/dist/config.js +0 -71
  25. package/dist/config.js.map +0 -1
  26. package/dist/core/ThreeStagePromptManager.d.ts +0 -23
  27. package/dist/core/ThreeStagePromptManager.d.ts.map +0 -1
  28. package/dist/core/ThreeStagePromptManager.js +0 -118
  29. package/dist/core/ThreeStagePromptManager.js.map +0 -1
  30. package/dist/index.d.ts.map +0 -1
  31. package/dist/plugins/base-plugin.d.ts +0 -55
  32. package/dist/plugins/base-plugin.d.ts.map +0 -1
  33. package/dist/plugins/base-plugin.js +0 -120
  34. package/dist/plugins/base-plugin.js.map +0 -1
  35. package/dist/plugins/index.d.ts +0 -58
  36. package/dist/plugins/index.d.ts.map +0 -1
  37. package/dist/plugins/index.js +0 -162
  38. package/dist/plugins/index.js.map +0 -1
  39. package/dist/plugins/types.d.ts +0 -5
  40. package/dist/plugins/types.d.ts.map +0 -1
  41. package/dist/plugins/types.js +0 -5
  42. package/dist/plugins/types.js.map +0 -1
  43. package/dist/prompts/analyze/code-quality.d.ts +0 -116
  44. package/dist/prompts/analyze/code-quality.d.ts.map +0 -1
  45. package/dist/prompts/analyze/code-quality.js +0 -437
  46. package/dist/prompts/analyze/code-quality.js.map +0 -1
  47. package/dist/prompts/analyze/compare-integration.d.ts +0 -130
  48. package/dist/prompts/analyze/compare-integration.d.ts.map +0 -1
  49. package/dist/prompts/analyze/compare-integration.js +0 -547
  50. package/dist/prompts/analyze/compare-integration.js.map +0 -1
  51. package/dist/prompts/analyze/count-files.d.ts +0 -109
  52. package/dist/prompts/analyze/count-files.d.ts.map +0 -1
  53. package/dist/prompts/analyze/count-files.js +0 -403
  54. package/dist/prompts/analyze/count-files.js.map +0 -1
  55. package/dist/prompts/analyze/database-queries.d.ts +0 -156
  56. package/dist/prompts/analyze/database-queries.d.ts.map +0 -1
  57. package/dist/prompts/analyze/database-queries.js +0 -763
  58. package/dist/prompts/analyze/database-queries.js.map +0 -1
  59. package/dist/prompts/analyze/dependencies.d.ts +0 -97
  60. package/dist/prompts/analyze/dependencies.d.ts.map +0 -1
  61. package/dist/prompts/analyze/dependencies.js +0 -337
  62. package/dist/prompts/analyze/dependencies.js.map +0 -1
  63. package/dist/prompts/analyze/diff-signatures.d.ts +0 -139
  64. package/dist/prompts/analyze/diff-signatures.d.ts.map +0 -1
  65. package/dist/prompts/analyze/diff-signatures.js +0 -708
  66. package/dist/prompts/analyze/diff-signatures.js.map +0 -1
  67. package/dist/prompts/analyze/find-patterns.d.ts +0 -128
  68. package/dist/prompts/analyze/find-patterns.d.ts.map +0 -1
  69. package/dist/prompts/analyze/find-patterns.js +0 -524
  70. package/dist/prompts/analyze/find-patterns.js.map +0 -1
  71. package/dist/prompts/analyze/find-unused-css.d.ts +0 -151
  72. package/dist/prompts/analyze/find-unused-css.d.ts.map +0 -1
  73. package/dist/prompts/analyze/find-unused-css.js +0 -760
  74. package/dist/prompts/analyze/find-unused-css.js.map +0 -1
  75. package/dist/prompts/analyze/n8n-workflow.d.ts +0 -137
  76. package/dist/prompts/analyze/n8n-workflow.d.ts.map +0 -1
  77. package/dist/prompts/analyze/n8n-workflow.js +0 -533
  78. package/dist/prompts/analyze/n8n-workflow.js.map +0 -1
  79. package/dist/prompts/analyze/project-structure.d.ts +0 -126
  80. package/dist/prompts/analyze/project-structure.d.ts.map +0 -1
  81. package/dist/prompts/analyze/project-structure.js +0 -573
  82. package/dist/prompts/analyze/project-structure.js.map +0 -1
  83. package/dist/prompts/analyze/security-audit.d.ts +0 -142
  84. package/dist/prompts/analyze/security-audit.d.ts.map +0 -1
  85. package/dist/prompts/analyze/security-audit.js +0 -641
  86. package/dist/prompts/analyze/security-audit.js.map +0 -1
  87. package/dist/prompts/analyze/single-file.d.ts +0 -162
  88. package/dist/prompts/analyze/single-file.d.ts.map +0 -1
  89. package/dist/prompts/analyze/single-file.js +0 -669
  90. package/dist/prompts/analyze/single-file.js.map +0 -1
  91. package/dist/prompts/analyze/trace-execution.d.ts +0 -126
  92. package/dist/prompts/analyze/trace-execution.d.ts.map +0 -1
  93. package/dist/prompts/analyze/trace-execution.js +0 -613
  94. package/dist/prompts/analyze/trace-execution.js.map +0 -1
  95. package/dist/prompts/analyze/wordpress-plugin-audit.d.ts +0 -116
  96. package/dist/prompts/analyze/wordpress-plugin-audit.d.ts.map +0 -1
  97. package/dist/prompts/analyze/wordpress-plugin-audit.js +0 -456
  98. package/dist/prompts/analyze/wordpress-plugin-audit.js.map +0 -1
  99. package/dist/prompts/analyze/wordpress-plugin-readiness.d.ts +0 -103
  100. package/dist/prompts/analyze/wordpress-plugin-readiness.d.ts.map +0 -1
  101. package/dist/prompts/analyze/wordpress-plugin-readiness.js +0 -506
  102. package/dist/prompts/analyze/wordpress-plugin-readiness.js.map +0 -1
  103. package/dist/prompts/analyze/wordpress-security.d.ts +0 -146
  104. package/dist/prompts/analyze/wordpress-security.d.ts.map +0 -1
  105. package/dist/prompts/analyze/wordpress-security.js +0 -702
  106. package/dist/prompts/analyze/wordpress-security.js.map +0 -1
  107. package/dist/prompts/analyze/wordpress-theme-audit.d.ts +0 -114
  108. package/dist/prompts/analyze/wordpress-theme-audit.d.ts.map +0 -1
  109. package/dist/prompts/analyze/wordpress-theme-audit.js +0 -540
  110. package/dist/prompts/analyze/wordpress-theme-audit.js.map +0 -1
  111. package/dist/prompts/custom/custom-prompt.d.ts +0 -135
  112. package/dist/prompts/custom/custom-prompt.d.ts.map +0 -1
  113. package/dist/prompts/custom/custom-prompt.js +0 -421
  114. package/dist/prompts/custom/custom-prompt.js.map +0 -1
  115. package/dist/prompts/fun/arcade-game.d.ts +0 -152
  116. package/dist/prompts/fun/arcade-game.d.ts.map +0 -1
  117. package/dist/prompts/fun/arcade-game.js +0 -657
  118. package/dist/prompts/fun/arcade-game.js.map +0 -1
  119. package/dist/prompts/fun/create_text_adventure.d.ts +0 -100
  120. package/dist/prompts/fun/create_text_adventure.d.ts.map +0 -1
  121. package/dist/prompts/fun/create_text_adventure.js +0 -401
  122. package/dist/prompts/fun/create_text_adventure.js.map +0 -1
  123. package/dist/prompts/fun/css-art-generator.d.ts +0 -168
  124. package/dist/prompts/fun/css-art-generator.d.ts.map +0 -1
  125. package/dist/prompts/fun/css-art-generator.js +0 -831
  126. package/dist/prompts/fun/css-art-generator.js.map +0 -1
  127. package/dist/prompts/generate/project-documentation.d.ts +0 -137
  128. package/dist/prompts/generate/project-documentation.d.ts.map +0 -1
  129. package/dist/prompts/generate/project-documentation.js +0 -670
  130. package/dist/prompts/generate/project-documentation.js.map +0 -1
  131. package/dist/prompts/generate/refactoring.d.ts +0 -164
  132. package/dist/prompts/generate/refactoring.d.ts.map +0 -1
  133. package/dist/prompts/generate/refactoring.js +0 -625
  134. package/dist/prompts/generate/refactoring.js.map +0 -1
  135. package/dist/prompts/generate/responsive-component.d.ts +0 -147
  136. package/dist/prompts/generate/responsive-component.d.ts.map +0 -1
  137. package/dist/prompts/generate/responsive-component.js +0 -957
  138. package/dist/prompts/generate/responsive-component.js.map +0 -1
  139. package/dist/prompts/generate/typescript-conversion.d.ts +0 -144
  140. package/dist/prompts/generate/typescript-conversion.d.ts.map +0 -1
  141. package/dist/prompts/generate/typescript-conversion.js +0 -531
  142. package/dist/prompts/generate/typescript-conversion.js.map +0 -1
  143. package/dist/prompts/generate/unit-tests.d.ts +0 -139
  144. package/dist/prompts/generate/unit-tests.d.ts.map +0 -1
  145. package/dist/prompts/generate/unit-tests.js +0 -582
  146. package/dist/prompts/generate/unit-tests.js.map +0 -1
  147. package/dist/prompts/generate/wordpress-plugin.d.ts +0 -179
  148. package/dist/prompts/generate/wordpress-plugin.d.ts.map +0 -1
  149. package/dist/prompts/generate/wordpress-plugin.js +0 -767
  150. package/dist/prompts/generate/wordpress-plugin.js.map +0 -1
  151. package/dist/prompts/generate/wordpress-theme-from-static.d.ts +0 -177
  152. package/dist/prompts/generate/wordpress-theme-from-static.d.ts.map +0 -1
  153. package/dist/prompts/generate/wordpress-theme-from-static.js +0 -699
  154. package/dist/prompts/generate/wordpress-theme-from-static.js.map +0 -1
  155. package/dist/prompts/shared/cache-manager.d.ts +0 -45
  156. package/dist/prompts/shared/cache-manager.d.ts.map +0 -1
  157. package/dist/prompts/shared/cache-manager.js +0 -129
  158. package/dist/prompts/shared/cache-manager.js.map +0 -1
  159. package/dist/prompts/shared/helpers.d.ts +0 -39
  160. package/dist/prompts/shared/helpers.d.ts.map +0 -1
  161. package/dist/prompts/shared/helpers.js +0 -151
  162. package/dist/prompts/shared/helpers.js.map +0 -1
  163. package/dist/prompts/shared/templates.d.ts +0 -35
  164. package/dist/prompts/shared/templates.d.ts.map +0 -1
  165. package/dist/prompts/shared/templates.js +0 -77
  166. package/dist/prompts/shared/templates.js.map +0 -1
  167. package/dist/prompts/shared/types.d.ts +0 -112
  168. package/dist/prompts/shared/types.d.ts.map +0 -1
  169. package/dist/prompts/shared/types.js +0 -5
  170. package/dist/prompts/shared/types.js.map +0 -1
  171. package/dist/prompts/system/find-unused-files.d.ts +0 -106
  172. package/dist/prompts/system/find-unused-files.d.ts.map +0 -1
  173. package/dist/prompts/system/find-unused-files.js +0 -357
  174. package/dist/prompts/system/find-unused-files.js.map +0 -1
  175. package/dist/security/index.d.ts +0 -39
  176. package/dist/security/index.d.ts.map +0 -1
  177. package/dist/security/index.js +0 -46
  178. package/dist/security/index.js.map +0 -1
  179. package/dist/security/integration-helpers.d.ts +0 -121
  180. package/dist/security/integration-helpers.d.ts.map +0 -1
  181. package/dist/security/integration-helpers.js +0 -190
  182. package/dist/security/integration-helpers.js.map +0 -1
  183. package/dist/security/output-encoder.d.ts +0 -94
  184. package/dist/security/output-encoder.d.ts.map +0 -1
  185. package/dist/security/output-encoder.js +0 -295
  186. package/dist/security/output-encoder.js.map +0 -1
  187. package/dist/security/prompt-injection-guard.d.ts +0 -59
  188. package/dist/security/prompt-injection-guard.d.ts.map +0 -1
  189. package/dist/security/prompt-injection-guard.js +0 -249
  190. package/dist/security/prompt-injection-guard.js.map +0 -1
  191. package/dist/security/sanitisation.d.ts +0 -67
  192. package/dist/security/sanitisation.d.ts.map +0 -1
  193. package/dist/security/sanitisation.js +0 -398
  194. package/dist/security/sanitisation.js.map +0 -1
  195. package/dist/security/security-service.d.ts +0 -103
  196. package/dist/security/security-service.d.ts.map +0 -1
  197. package/dist/security/security-service.js +0 -303
  198. package/dist/security/security-service.js.map +0 -1
  199. package/dist/security-config.d.ts +0 -45
  200. package/dist/security-config.d.ts.map +0 -1
  201. package/dist/security-config.js +0 -63
  202. package/dist/security-config.js.map +0 -1
  203. package/dist/system/function-list.d.ts +0 -61
  204. package/dist/system/function-list.d.ts.map +0 -1
  205. package/dist/system/function-list.js +0 -111
  206. package/dist/system/function-list.js.map +0 -1
  207. package/dist/system/function-registry.d.ts +0 -23
  208. package/dist/system/function-registry.d.ts.map +0 -1
  209. package/dist/system/function-registry.js +0 -136
  210. package/dist/system/function-registry.js.map +0 -1
  211. package/dist/system/health-check.d.ts +0 -33
  212. package/dist/system/health-check.d.ts.map +0 -1
  213. package/dist/system/health-check.js +0 -98
  214. package/dist/system/health-check.js.map +0 -1
  215. package/dist/system/path-resolver.d.ts +0 -55
  216. package/dist/system/path-resolver.d.ts.map +0 -1
  217. package/dist/system/path-resolver.js +0 -90
  218. package/dist/system/path-resolver.js.map +0 -1
  219. package/dist/templates/plugin-template.d.ts +0 -121
  220. package/dist/templates/plugin-template.d.ts.map +0 -1
  221. package/dist/templates/plugin-template.js +0 -454
  222. package/dist/templates/plugin-template.js.map +0 -1
  223. package/dist/types/chunking-types.d.ts +0 -88
  224. package/dist/types/chunking-types.d.ts.map +0 -1
  225. package/dist/types/chunking-types.js +0 -18
  226. package/dist/types/chunking-types.js.map +0 -1
  227. package/dist/types/prompt-stages.d.ts +0 -30
  228. package/dist/types/prompt-stages.d.ts.map +0 -1
  229. package/dist/types/prompt-stages.js +0 -6
  230. package/dist/types/prompt-stages.js.map +0 -1
  231. package/dist/types.d.ts +0 -45
  232. package/dist/types.d.ts.map +0 -1
  233. package/dist/types.js +0 -6
  234. package/dist/types.js.map +0 -1
  235. package/dist/utils/css-parser.d.ts +0 -26
  236. package/dist/utils/css-parser.d.ts.map +0 -1
  237. package/dist/utils/css-parser.js +0 -117
  238. package/dist/utils/css-parser.js.map +0 -1
  239. package/dist/utils/path-resolver.d.ts +0 -13
  240. package/dist/utils/path-resolver.d.ts.map +0 -1
  241. package/dist/utils/path-resolver.js +0 -78
  242. package/dist/utils/path-resolver.js.map +0 -1
  243. package/dist/utils/plugin-utilities.d.ts +0 -176
  244. package/dist/utils/plugin-utilities.d.ts.map +0 -1
  245. package/dist/utils/plugin-utilities.js +0 -269
  246. package/dist/utils/plugin-utilities.js.map +0 -1
  247. package/dist/utils/streamHandler.d.ts +0 -3
  248. package/dist/utils/streamHandler.d.ts.map +0 -1
  249. package/dist/utils/streamHandler.js +0 -137
  250. package/dist/utils/streamHandler.js.map +0 -1
  251. package/dist/validation/output-validator.d.ts +0 -136
  252. package/dist/validation/output-validator.d.ts.map +0 -1
  253. package/dist/validation/output-validator.js +0 -262
  254. package/dist/validation/output-validator.js.map +0 -1
  255. package/dist/validation/response-factory.d.ts +0 -44
  256. package/dist/validation/response-factory.d.ts.map +0 -1
  257. package/dist/validation/response-factory.js +0 -202
  258. package/dist/validation/response-factory.js.map +0 -1
  259. package/dist/validation/schemas.d.ts +0 -519
  260. package/dist/validation/schemas.d.ts.map +0 -1
  261. package/dist/validation/schemas.js +0 -6
  262. package/dist/validation/schemas.js.map +0 -1
@@ -1,524 +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 PatternFinderPlugin extends BasePlugin {
16
- constructor() {
17
- super();
18
- this.name = 'find_pattern_usage';
19
- this.category = 'analyze';
20
- this.description = 'Find usage of specific patterns across multiple files in a project. Supports regex patterns with intelligent context analysis.';
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: 'Absolute path to project root directory',
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 multi-file discovery (1-5)',
49
- required: false
50
- },
51
- // Pattern-specific parameters
52
- patterns: {
53
- type: 'array',
54
- description: 'Patterns to search for (regex supported)',
55
- required: true,
56
- items: { type: 'string' }
57
- },
58
- includeContext: {
59
- type: 'number',
60
- description: 'Number of context lines to include (0-10)',
61
- required: false,
62
- default: 3
63
- },
64
- // Universal parameters
65
- language: {
66
- type: 'string',
67
- description: 'Programming language',
68
- required: false,
69
- default: 'javascript'
70
- },
71
- analysisDepth: {
72
- type: 'string',
73
- description: 'Level of analysis detail',
74
- enum: ['basic', 'detailed', 'comprehensive'],
75
- default: 'detailed',
76
- required: false
77
- },
78
- analysisType: {
79
- type: 'string',
80
- description: 'Type of analysis to perform',
81
- enum: ['patterns', 'security', 'comprehensive'],
82
- default: 'comprehensive',
83
- required: false
84
- }
85
- };
86
- this.analysisCache = getAnalysisCache();
87
- this.multiFileAnalysis = new MultiFileAnalysis();
88
- // Cache and analysis utilities are initialized above
89
- }
90
- async execute(params, llmClient) {
91
- return await withSecurity(this, params, llmClient, async (secureParams) => {
92
- try {
93
- // 1. Auto-detect analysis mode based on parameters
94
- const analysisMode = this.detectAnalysisMode(secureParams);
95
- // 2. Validate parameters based on detected mode
96
- this.validateParameters(secureParams, analysisMode);
97
- // 3. Setup model
98
- const { model, contextLength } = await ModelSetup.getReadyModel(llmClient);
99
- // 4. Route to appropriate analysis method
100
- if (analysisMode === 'single-file') {
101
- return await this.executeSingleFileAnalysis(secureParams, model, contextLength);
102
- }
103
- else {
104
- return await this.executeMultiFileAnalysis(secureParams, model, contextLength);
105
- }
106
- }
107
- catch (error) {
108
- return ErrorHandler.createExecutionError('find_pattern_usage', error);
109
- }
110
- });
111
- }
112
- /**
113
- * Auto-detect whether this is single-file or multi-file analysis
114
- */
115
- detectAnalysisMode(params) {
116
- // Single-file indicators take priority (avoids default parameter issues)
117
- if (params.code || params.filePath) {
118
- return 'single-file';
119
- }
120
- // Multi-file indicators
121
- if (params.projectPath || params.files) {
122
- return 'multi-file';
123
- }
124
- // Default to multi-file for pattern finding (usually project-wide)
125
- return 'multi-file';
126
- }
127
- /**
128
- * Validate parameters based on detected analysis mode
129
- */
130
- validateParameters(params, mode) {
131
- // Validate patterns (required for both modes)
132
- if (!params.patterns || !Array.isArray(params.patterns) || params.patterns.length === 0) {
133
- throw new Error('patterns parameter is required and must be a non-empty array');
134
- }
135
- if (mode === 'single-file') {
136
- ParameterValidator.validateCodeOrFile(params);
137
- }
138
- else {
139
- ParameterValidator.validateProjectPath(params);
140
- ParameterValidator.validateDepth(params, 1, 5);
141
- }
142
- // Universal validations
143
- ParameterValidator.validateEnum(params, 'analysisType', ['patterns', 'security', 'comprehensive']);
144
- ParameterValidator.validateEnum(params, 'analysisDepth', ['basic', 'detailed', 'comprehensive']);
145
- // Validate context lines
146
- if (params.includeContext !== undefined) {
147
- const context = parseInt(params.includeContext);
148
- if (isNaN(context) || context < 0 || context > 10) {
149
- throw new Error('includeContext must be a number between 0 and 10');
150
- }
151
- }
152
- }
153
- /**
154
- * Execute single-file analysis
155
- */
156
- async executeSingleFileAnalysis(params, model, contextLength) {
157
- // Process single file input
158
- let codeToAnalyze = params.code;
159
- if (params.filePath) {
160
- codeToAnalyze = await readFileContent(params.filePath);
161
- }
162
- // Search patterns in the single file
163
- const patternMatches = this.searchPatternsInCode(codeToAnalyze, params.patterns, params.includeContext || 3);
164
- // Generate prompt stages for single file
165
- const promptStages = this.getSingleFilePromptStages({
166
- ...params,
167
- code: codeToAnalyze,
168
- patternMatches
169
- });
170
- // Execute with appropriate method
171
- const promptManager = new ThreeStagePromptManager();
172
- const needsChunking = TokenCalculator.needsChunking(promptStages, contextLength);
173
- if (needsChunking) {
174
- const chunkSize = TokenCalculator.calculateOptimalChunkSize(promptStages, contextLength);
175
- const dataChunks = promptManager.chunkDataPayload(promptStages.dataPayload, chunkSize);
176
- const conversation = promptManager.createChunkedConversation(promptStages, dataChunks);
177
- const messages = [
178
- conversation.systemMessage,
179
- ...conversation.dataMessages,
180
- conversation.analysisMessage
181
- ];
182
- return await ResponseProcessor.executeChunked(messages, model, contextLength, 'find_pattern_usage', 'single');
183
- }
184
- else {
185
- return await ResponseProcessor.executeDirect(promptStages, model, contextLength, 'find_pattern_usage');
186
- }
187
- }
188
- /**
189
- * Execute multi-file analysis
190
- */
191
- async executeMultiFileAnalysis(params, model, contextLength) {
192
- // Discover files
193
- let filesToAnalyze = params.files ||
194
- await this.discoverRelevantFiles(params.projectPath, params.maxDepth, params.analysisType);
195
- // Perform multi-file analysis with caching
196
- const analysisResult = await this.performMultiFileAnalysis(filesToAnalyze, params, model, contextLength);
197
- // Generate prompt stages for multi-file
198
- const promptStages = this.getMultiFilePromptStages({
199
- ...params,
200
- analysisResult,
201
- fileCount: filesToAnalyze.length
202
- });
203
- // Always use chunking for multi-file
204
- const promptManager = new ThreeStagePromptManager();
205
- const chunkSize = TokenCalculator.calculateOptimalChunkSize(promptStages, contextLength);
206
- const dataChunks = promptManager.chunkDataPayload(promptStages.dataPayload, chunkSize);
207
- const conversation = promptManager.createChunkedConversation(promptStages, dataChunks);
208
- const messages = [
209
- conversation.systemMessage,
210
- ...conversation.dataMessages,
211
- conversation.analysisMessage
212
- ];
213
- return await ResponseProcessor.executeChunked(messages, model, contextLength, 'find_pattern_usage', 'multifile');
214
- }
215
- /**
216
- * Search patterns in single code block
217
- */
218
- searchPatternsInCode(code, patterns, contextLines) {
219
- const lines = code.split('\n');
220
- const matches = [];
221
- patterns.forEach(pattern => {
222
- lines.forEach((line, lineIndex) => {
223
- try {
224
- // Try regex first
225
- const regex = new RegExp(pattern, 'gi');
226
- let match;
227
- while ((match = regex.exec(line)) !== null) {
228
- matches.push({
229
- pattern,
230
- line: lineIndex + 1,
231
- column: match.index + 1,
232
- match: match[0],
233
- context: this.getContextLines(lines, lineIndex, contextLines)
234
- });
235
- }
236
- }
237
- catch {
238
- // Fallback to literal search
239
- const index = line.toLowerCase().indexOf(pattern.toLowerCase());
240
- if (index !== -1) {
241
- matches.push({
242
- pattern,
243
- line: lineIndex + 1,
244
- column: index + 1,
245
- match: pattern,
246
- context: this.getContextLines(lines, lineIndex, contextLines)
247
- });
248
- }
249
- }
250
- });
251
- });
252
- return {
253
- totalMatches: matches.length,
254
- patterns: patterns,
255
- matches
256
- };
257
- }
258
- /**
259
- * Get context lines around a match
260
- */
261
- getContextLines(lines, matchLineIndex, contextSize) {
262
- const start = Math.max(0, matchLineIndex - contextSize);
263
- const end = Math.min(lines.length - 1, matchLineIndex + contextSize);
264
- const contextLines = [];
265
- for (let i = start; i <= end; i++) {
266
- const prefix = i === matchLineIndex ? '>>> ' : ' ';
267
- contextLines.push(`${prefix}${i + 1}: ${lines[i]}`);
268
- }
269
- return contextLines;
270
- }
271
- /**
272
- * Single-file pattern analysis prompt
273
- */
274
- getSingleFilePromptStages(params) {
275
- const { patterns, patternMatches, analysisDepth, analysisType, filePath } = params;
276
- const systemAndContext = `You are an expert code pattern analyst specializing in ${analysisDepth} ${analysisType} analysis.
277
-
278
- **Your Expertise:**
279
- - Advanced pattern recognition and usage analysis
280
- - Code quality assessment and security implications
281
- - Refactoring opportunities identification
282
- - Best practices for pattern implementation
283
-
284
- **Analysis Context:**
285
- - File: ${filePath || 'Code block'}
286
- - Patterns searched: ${patterns.length}
287
- - Total matches found: ${patternMatches.totalMatches}
288
- - Analysis depth: ${analysisDepth}
289
- - Focus: ${analysisType} analysis
290
-
291
- **Your Mission:**
292
- Provide expert analysis of how the specified patterns are used in this code, identifying usage quality, potential issues, and improvement opportunities.`;
293
- const dataPayload = `**PATTERN SEARCH RESULTS:**
294
-
295
- Patterns searched: ${patterns.map((p) => `"${p}"`).join(', ')}
296
- Total matches found: ${patternMatches.totalMatches}
297
-
298
- ${patternMatches.matches.length === 0 ?
299
- 'No matches found for the specified patterns.' :
300
- patternMatches.matches.map((match, index) => `
301
- **Match ${index + 1}:**
302
- - Pattern: "${match.pattern}"
303
- - Location: Line ${match.line}, Column ${match.column}
304
- - Matched text: "${match.match}"
305
-
306
- Context:
307
- ${match.context.join('\n')}
308
- `).join('\n')}`;
309
- const outputInstructions = `**PROVIDE COMPREHENSIVE PATTERN ANALYSIS:**
310
-
311
- ## Pattern Usage Summary
312
- Brief overview of what patterns were found and their primary usage
313
-
314
- ## Detailed Pattern Analysis
315
- For each pattern found:
316
- - **Pattern**: "${patterns[0]}" (example)
317
- - **Occurrences**: [count]
318
- - **Usage Context**: [how it's being used]
319
- - **Quality Assessment**: [good/problematic/needs improvement]
320
- - **Security Implications**: [if any]
321
-
322
- ## Code Quality Findings
323
- ### ✅ Good Practices Observed
324
- - [List positive pattern usage]
325
-
326
- ### ⚠️ Issues Identified
327
- - [List problematic usage with severity]
328
-
329
- ### 🔒 Security Considerations
330
- - [Any security-related findings from pattern usage]
331
-
332
- ## Improvement Recommendations
333
- 1. **Immediate Actions**
334
- - [High priority fixes or improvements]
335
-
336
- 2. **Code Enhancement Suggestions**
337
- - [Ways to improve pattern usage]
338
-
339
- 3. **Best Practice Guidelines**
340
- - [Recommendations for optimal pattern implementation]
341
-
342
- ## Conclusion
343
- Overall assessment and next steps for pattern optimization in this code.`;
344
- return { systemAndContext, dataPayload, outputInstructions };
345
- }
346
- /**
347
- * Multi-file pattern analysis prompt - optimized for comprehensive project analysis
348
- */
349
- getMultiFilePromptStages(params) {
350
- const { patterns, analysisResult, analysisType, analysisDepth, fileCount } = params;
351
- const systemAndContext = `You are a senior software architect and code quality expert specializing in ${analysisDepth} ${analysisType} pattern analysis across large codebases.
352
-
353
- **Your Expert Capabilities:**
354
- - Cross-file pattern usage analysis and architectural implications
355
- - Security vulnerability identification through pattern analysis
356
- - Code maintainability and refactoring opportunity assessment
357
- - Team coding standards and consistency evaluation
358
- - Performance implications of pattern distribution
359
-
360
- **Project Analysis Context:**
361
- - Project scope: ${fileCount} files analyzed
362
- - Patterns searched: ${patterns.length} distinct patterns
363
- - Analysis focus: ${analysisType} analysis
364
- - Analysis depth: ${analysisDepth}
365
-
366
- **Strategic Mission:**
367
- Provide executive-level insights on pattern usage across the entire codebase, identifying architectural strengths, risks, and strategic improvement opportunities that will enhance code quality, security, and maintainability.`;
368
- const dataPayload = `**COMPREHENSIVE PROJECT PATTERN ANALYSIS:**
369
-
370
- ${JSON.stringify(analysisResult, null, 2)}`;
371
- const outputInstructions = `**DELIVER STRATEGIC PATTERN ANALYSIS REPORT:**
372
-
373
- # Executive Summary
374
- ## Key Findings
375
- - Most critical pattern usage issues discovered
376
- - Primary architectural insights
377
- - Strategic recommendations priority
378
-
379
- ## Risk Assessment
380
- - **High Risk**: [Critical issues requiring immediate attention]
381
- - **Medium Risk**: [Important issues for next sprint]
382
- - **Low Risk**: [Long-term improvements]
383
-
384
- # Detailed Pattern Analysis
385
-
386
- ## Pattern Distribution Map
387
- For each pattern searched:
388
- - **Pattern**: "${patterns[0]}" (example)
389
- - **Total Occurrences**: [count across all files]
390
- - **File Distribution**: [how spread across codebase]
391
- - **Hotspots**: [files/modules with heavy usage]
392
- - **Usage Consistency**: [consistent vs. varied implementations]
393
-
394
- ## Architectural Insights
395
- ### Code Organization Quality
396
- - How patterns reveal architectural decisions
397
- - Consistency of implementation approaches
398
- - Module coupling implications
399
-
400
- ### Design Pattern Assessment
401
- - Appropriate use of design patterns
402
- - Anti-patterns discovered
403
- - Missing abstractions opportunities
404
-
405
- ## Security & Quality Analysis
406
- ### 🔒 Security Implications
407
- - Pattern usage that creates vulnerabilities
408
- - Input validation consistency
409
- - Authentication/authorization pattern usage
410
-
411
- ### 🏗️ Code Quality Impact
412
- - Pattern usage affecting maintainability
413
- - Technical debt indicators
414
- - Testing implications of pattern choices
415
-
416
- ## Strategic Recommendations
417
-
418
- ### 1. Immediate Actions (This Sprint)
419
- - [Critical fixes needed now]
420
- - [Security vulnerabilities to address]
421
-
422
- ### 2. Architectural Improvements (Next Quarter)
423
- - [Refactoring opportunities for better pattern usage]
424
- - [Consolidation of duplicate pattern implementations]
425
-
426
- ### 3. Long-term Strategy (6-12 months)
427
- - [Team training on proper pattern usage]
428
- - [Code standards establishment]
429
- - [Tooling to enforce pattern consistency]
430
-
431
- ## Implementation Roadmap
432
- 1. **Week 1-2**: Address critical security findings
433
- 2. **Month 1**: Implement high-impact refactoring
434
- 3. **Quarter 1**: Establish team standards and tooling
435
- 4. **Ongoing**: Monitor pattern usage evolution
436
-
437
- # Conclusion
438
- **Bottom Line**: [Most important takeaway for technical leadership]
439
- **Success Metrics**: [How to measure improvement]
440
- **Next Steps**: [Specific actions to begin immediately]`;
441
- return { systemAndContext, dataPayload, outputInstructions };
442
- }
443
- /**
444
- * Implement for backwards compatibility
445
- * The system still expects this method, so we intelligently route to the appropriate stages
446
- */
447
- getPromptStages(params) {
448
- const mode = this.detectAnalysisMode(params);
449
- if (mode === 'single-file') {
450
- return this.getSingleFilePromptStages(params);
451
- }
452
- else {
453
- return this.getMultiFilePromptStages(params);
454
- }
455
- }
456
- // Multi-file helper methods
457
- async discoverRelevantFiles(projectPath, maxDepth, analysisType) {
458
- const extensions = this.getFileExtensions(analysisType);
459
- return await this.multiFileAnalysis.discoverFiles(projectPath, extensions, maxDepth);
460
- }
461
- async performMultiFileAnalysis(files, params, model, contextLength) {
462
- const cacheKey = this.analysisCache.generateKey('find_pattern_usage', params, files);
463
- const cached = await this.analysisCache.get(cacheKey);
464
- if (cached)
465
- return cached;
466
- const fileAnalysisResults = await this.multiFileAnalysis.analyzeBatch(files, (file) => this.analyzeIndividualFile(file, params, model), contextLength);
467
- // Aggregate results into proper analysis result format
468
- const aggregatedResult = {
469
- summary: `Pattern analysis across ${files.length} files`,
470
- patterns: params.patterns,
471
- totalFiles: files.length,
472
- findings: fileAnalysisResults,
473
- statistics: {
474
- filesWithMatches: fileAnalysisResults.filter((r) => r.matches && r.matches.length > 0).length,
475
- totalMatches: fileAnalysisResults.reduce((sum, r) => sum + (r.matches?.length || 0), 0),
476
- patternsFound: [...new Set(fileAnalysisResults.flatMap((r) => r.matches?.map((m) => m.pattern) || []))]
477
- }
478
- };
479
- await this.analysisCache.cacheAnalysis(cacheKey, aggregatedResult, {
480
- modelUsed: model.identifier || 'unknown',
481
- executionTime: Date.now() - Date.now(), // TODO: Track actual execution time
482
- timestamp: new Date().toISOString()
483
- });
484
- return aggregatedResult;
485
- }
486
- async analyzeIndividualFile(file, params, model) {
487
- try {
488
- const content = await import('fs/promises').then(fs => fs.readFile(file, 'utf-8'));
489
- const patternMatches = this.searchPatternsInCode(content, params.patterns, params.includeContext || 3);
490
- return {
491
- filePath: file,
492
- size: content.length,
493
- lines: content.split('\n').length,
494
- matches: patternMatches.matches,
495
- totalMatches: patternMatches.totalMatches
496
- };
497
- }
498
- catch (error) {
499
- return {
500
- filePath: file,
501
- size: 0,
502
- lines: 0,
503
- matches: [],
504
- totalMatches: 0,
505
- error: 'Could not read file'
506
- };
507
- }
508
- }
509
- getFileExtensions(analysisType) {
510
- const extensionMap = {
511
- 'patterns': ['.js', '.ts', '.jsx', '.tsx', '.php', '.py', '.java', '.cs', '.cpp', '.c', '.h', '.rb', '.go', '.swift'],
512
- 'security': ['.js', '.ts', '.jsx', '.tsx', '.php', '.py', '.java', '.cs'], // Focus on web/app languages for security
513
- 'comprehensive': ['.js', '.ts', '.jsx', '.tsx', '.php', '.py', '.java', '.cs', '.cpp', '.c', '.h', '.rb', '.go', '.swift', '.kt', '.rs']
514
- };
515
- return extensionMap[analysisType] || extensionMap.comprehensive;
516
- }
517
- generateCacheKey(files, params) {
518
- const fileHash = files.join('|');
519
- const paramHash = JSON.stringify(params);
520
- return `${fileHash}_${paramHash}`.substring(0, 64);
521
- }
522
- }
523
- export default PatternFinderPlugin;
524
- //# sourceMappingURL=find-patterns.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"find-patterns.js","sourceRoot":"","sources":["../../../src/prompts/analyze/find-patterns.ts"],"names":[],"mappings":"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"}