@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,533 +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 N8nWorkflowAnalyzer extends BasePlugin {
16
- constructor() {
17
- super();
18
- this.name = 'analyze_n8n_workflow';
19
- this.category = 'analyze';
20
- this.description = 'Analyze and optimize n8n workflow JSON for efficiency, error handling, and best practices';
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 project root (for multi-file analysis)',
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
- default: 3
51
- },
52
- // n8n-specific parameters
53
- workflow: {
54
- type: 'object',
55
- description: 'n8n workflow JSON object',
56
- required: false
57
- },
58
- optimizationFocus: {
59
- type: 'string',
60
- description: 'Primary optimization focus',
61
- enum: ['performance', 'error-handling', 'maintainability', 'all'],
62
- default: 'all',
63
- required: false
64
- },
65
- includeCredentialCheck: {
66
- type: 'boolean',
67
- description: 'Check for exposed credentials',
68
- default: true,
69
- required: false
70
- },
71
- suggestAlternativeNodes: {
72
- type: 'boolean',
73
- description: 'Suggest alternative node configurations',
74
- default: true,
75
- required: false
76
- },
77
- // Universal parameters
78
- language: {
79
- type: 'string',
80
- description: 'Programming language',
81
- required: false,
82
- default: 'javascript'
83
- },
84
- analysisDepth: {
85
- type: 'string',
86
- description: 'Level of analysis detail',
87
- enum: ['basic', 'detailed', 'comprehensive'],
88
- default: 'detailed',
89
- required: false
90
- },
91
- analysisType: {
92
- type: 'string',
93
- description: 'Type of analysis to perform',
94
- enum: ['workflow', 'security', 'comprehensive'],
95
- default: 'comprehensive',
96
- required: false
97
- }
98
- };
99
- this.analysisCache = getAnalysisCache();
100
- this.multiFileAnalysis = new MultiFileAnalysis();
101
- // Cache and analysis utilities are initialized above
102
- }
103
- async execute(params, llmClient) {
104
- return await withSecurity(this, params, llmClient, async (secureParams) => {
105
- try {
106
- // 1. Auto-detect analysis mode based on parameters
107
- const analysisMode = this.detectAnalysisMode(secureParams);
108
- // 2. Validate parameters based on detected mode
109
- this.validateParameters(secureParams, analysisMode);
110
- // 3. Setup model
111
- const { model, contextLength } = await ModelSetup.getReadyModel(llmClient);
112
- // 4. Route to appropriate analysis method
113
- if (analysisMode === 'single-file') {
114
- return await this.executeSingleFileAnalysis(secureParams, model, contextLength);
115
- }
116
- else {
117
- return await this.executeMultiFileAnalysis(secureParams, model, contextLength);
118
- }
119
- }
120
- catch (error) {
121
- return ErrorHandler.createExecutionError('analyze_n8n_workflow', error);
122
- }
123
- });
124
- }
125
- /**
126
- * Auto-detect whether this is single-file or multi-file analysis
127
- */
128
- detectAnalysisMode(params) {
129
- // n8n workflow object indicates single-file analysis
130
- if (params.workflow) {
131
- return 'single-file';
132
- }
133
- // Multi-file indicators
134
- if (params.projectPath || params.files || params.maxDepth !== undefined) {
135
- return 'multi-file';
136
- }
137
- // Single-file indicators
138
- if (params.code || params.filePath) {
139
- return 'single-file';
140
- }
141
- // Default to single-file for n8n workflow analysis
142
- return 'single-file';
143
- }
144
- /**
145
- * Validate parameters based on detected analysis mode
146
- */
147
- validateParameters(params, mode) {
148
- if (mode === 'single-file') {
149
- // For n8n, either workflow object, code, or filePath is required
150
- if (!params.workflow && !params.code && !params.filePath) {
151
- throw new Error('Either workflow object, code, or filePath is required for n8n workflow analysis');
152
- }
153
- }
154
- else {
155
- ParameterValidator.validateProjectPath(params);
156
- ParameterValidator.validateDepth(params);
157
- }
158
- // Universal validations
159
- ParameterValidator.validateEnum(params, 'analysisType', ['workflow', 'security', 'comprehensive']);
160
- ParameterValidator.validateEnum(params, 'analysisDepth', ['basic', 'detailed', 'comprehensive']);
161
- ParameterValidator.validateEnum(params, 'optimizationFocus', ['performance', 'error-handling', 'maintainability', 'all']);
162
- }
163
- /**
164
- * Execute single-file analysis
165
- */
166
- async executeSingleFileAnalysis(params, model, contextLength) {
167
- // Process workflow input - could be direct workflow object, code string, or file
168
- let workflowToAnalyze;
169
- if (params.workflow) {
170
- workflowToAnalyze = params.workflow;
171
- }
172
- else if (params.filePath) {
173
- const fileContent = await readFileContent(params.filePath);
174
- try {
175
- workflowToAnalyze = JSON.parse(fileContent);
176
- }
177
- catch (error) {
178
- throw new Error('Failed to parse workflow JSON from file');
179
- }
180
- }
181
- else if (params.code) {
182
- try {
183
- workflowToAnalyze = JSON.parse(params.code);
184
- }
185
- catch (error) {
186
- throw new Error('Failed to parse workflow JSON from code parameter');
187
- }
188
- }
189
- // Generate prompt stages for single workflow
190
- const promptStages = this.getSingleFilePromptStages({
191
- ...params,
192
- workflow: workflowToAnalyze
193
- });
194
- // Execute with appropriate method
195
- const promptManager = new ThreeStagePromptManager();
196
- const needsChunking = TokenCalculator.needsChunking(promptStages, contextLength);
197
- if (needsChunking) {
198
- const chunkSize = TokenCalculator.calculateOptimalChunkSize(promptStages, contextLength);
199
- const dataChunks = promptManager.chunkDataPayload(promptStages.dataPayload, chunkSize);
200
- const conversation = promptManager.createChunkedConversation(promptStages, dataChunks);
201
- const messages = [
202
- conversation.systemMessage,
203
- ...conversation.dataMessages,
204
- conversation.analysisMessage
205
- ];
206
- return await ResponseProcessor.executeChunked(messages, model, contextLength, 'analyze_n8n_workflow', 'single');
207
- }
208
- else {
209
- return await ResponseProcessor.executeDirect(promptStages, model, contextLength, 'analyze_n8n_workflow');
210
- }
211
- }
212
- /**
213
- * Execute multi-file analysis
214
- */
215
- async executeMultiFileAnalysis(params, model, contextLength) {
216
- // Discover files
217
- let filesToAnalyze = params.files ||
218
- await this.discoverRelevantFiles(params.projectPath, params.maxDepth, params.analysisType);
219
- // Perform multi-file analysis with caching
220
- const analysisResult = await this.performMultiFileAnalysis(filesToAnalyze, params, model, contextLength);
221
- // Generate prompt stages for multi-file
222
- const promptStages = this.getMultiFilePromptStages({
223
- ...params,
224
- analysisResult,
225
- fileCount: filesToAnalyze.length
226
- });
227
- // Always use chunking for multi-file
228
- const promptManager = new ThreeStagePromptManager();
229
- const chunkSize = TokenCalculator.calculateOptimalChunkSize(promptStages, contextLength);
230
- const dataChunks = promptManager.chunkDataPayload(promptStages.dataPayload, chunkSize);
231
- const conversation = promptManager.createChunkedConversation(promptStages, dataChunks);
232
- const messages = [
233
- conversation.systemMessage,
234
- ...conversation.dataMessages,
235
- conversation.analysisMessage
236
- ];
237
- return await ResponseProcessor.executeChunked(messages, model, contextLength, 'analyze_n8n_workflow', 'multifile');
238
- }
239
- /**
240
- * Implement n8n workflow single-file prompt stages
241
- */
242
- getSingleFilePromptStages(params) {
243
- const { workflow, optimizationFocus, includeCredentialCheck, suggestAlternativeNodes, analysisDepth } = params;
244
- const systemAndContext = `You are an expert n8n workflow optimization specialist with extensive experience in automation, API integration, and workflow efficiency.
245
-
246
- Analysis Context:
247
- - Optimization Focus: ${optimizationFocus}
248
- - Analysis Depth: ${analysisDepth}
249
- - Include Credential Check: ${includeCredentialCheck}
250
- - Suggest Alternative Nodes: ${suggestAlternativeNodes}
251
- - Mode: Single Workflow Analysis
252
-
253
- Your expertise covers:
254
- - n8n node configurations and best practices
255
- - API optimization and rate limiting strategies
256
- - Error handling and workflow resilience
257
- - Performance optimization and parallel processing
258
- - Security assessment for automation workflows
259
- - Workflow maintainability and organization
260
-
261
- Your task is to provide comprehensive analysis and actionable optimization recommendations for this n8n workflow.`;
262
- const dataPayload = `n8n Workflow to Analyze:
263
-
264
- \`\`\`json
265
- ${JSON.stringify(workflow, null, 2)}
266
- \`\`\``;
267
- const outputInstructions = `Analyze this n8n workflow and provide a comprehensive optimization report in the following structured format:
268
-
269
- ## Workflow Analysis Summary
270
- - Overall complexity assessment (node count: ${workflow?.nodes?.length || 0})
271
- - Flow efficiency rating
272
- - Primary optimization opportunities identified
273
-
274
- ## Detailed Analysis
275
-
276
- ### 1. Efficiency Issues
277
- - Redundant nodes or operations
278
- - Duplicate API calls that could be consolidated
279
- - Unnecessary data transformations
280
- - Node consolidation opportunities
281
-
282
- ### 2. Error Handling Review
283
- - Missing error handling (Error Trigger nodes)
284
- - Proper try-catch pattern implementation
285
- - Retry configurations and strategies
286
- - Error notification setup
287
-
288
- ### 3. Performance Optimization
289
- - Bottlenecks and synchronous operations
290
- - Parallel processing opportunities
291
- - API rate limiting considerations
292
- - Memory usage with large datasets
293
-
294
- ${includeCredentialCheck ? `
295
- ### 4. Security Assessment
296
- - Exposed credentials or API keys in node configurations
297
- - Sensitive data in logs or outputs
298
- - Webhook authentication security
299
- - Input sanitization validation
300
- ` : ''}
301
-
302
- ### 5. Maintainability Improvements
303
- - Node naming conventions and clarity
304
- - Workflow organization and logical grouping
305
- - Sub-workflow opportunities for reusability
306
- - Documentation completeness
307
-
308
- ${suggestAlternativeNodes ? `
309
- ### 6. Alternative Node Suggestions
310
- - More efficient node alternatives for current setup
311
- - Built-in vs custom code node recommendations
312
- - Community node suggestions for better functionality
313
- - Simpler implementation approaches
314
- ` : ''}
315
-
316
- ## Implementation Recommendations
317
- 1. **Priority Changes** (high impact, low effort first)
318
- 2. **Performance Improvements** with expected metrics
319
- 3. **Step-by-step Implementation Guide**
320
- 4. **Risk Assessment** for proposed changes
321
-
322
- ## Optimized Workflow Structure
323
- Provide specific suggestions for structural improvements to the workflow design.
324
-
325
- ${this.getOptimizationFocusInstructions(optimizationFocus)}
326
-
327
- **Important**: Reference specific node names and IDs from the workflow. Provide actionable recommendations with clear business impact and implementation steps.`;
328
- return { systemAndContext, dataPayload, outputInstructions };
329
- }
330
- /**
331
- * Implement multi-file n8n workflow analysis (for multiple workflow files)
332
- */
333
- getMultiFilePromptStages(params) {
334
- const { analysisResult, analysisType, analysisDepth, fileCount, optimizationFocus } = params;
335
- const systemAndContext = `You are an expert n8n workflow architect specializing in ${analysisDepth} ${analysisType} analysis across multiple workflows.
336
-
337
- Analysis Context:
338
- - Analysis Type: ${analysisType}
339
- - Analysis Depth: ${analysisDepth}
340
- - Workflows Analyzed: ${fileCount}
341
- - Optimization Focus: ${optimizationFocus}
342
- - Mode: Multi-Workflow Analysis
343
-
344
- Your task is to provide comprehensive cross-workflow insights, identify shared patterns, and suggest architectural improvements across the entire n8n workflow collection.`;
345
- const dataPayload = `Multi-workflow analysis results:
346
-
347
- ${JSON.stringify(analysisResult, null, 2)}`;
348
- const outputInstructions = `Provide comprehensive multi-workflow analysis in the following structured format:
349
-
350
- ## Multi-Workflow Summary
351
- Overall analysis of ${fileCount} n8n workflows with architectural recommendations
352
-
353
- ## Cross-Workflow Findings
354
- ### Shared Patterns & Duplications
355
- - Common node configurations that could be standardized
356
- - Duplicate API calls across workflows
357
- - Shared data processing patterns
358
- - Common error handling approaches
359
-
360
- ### Integration Opportunities
361
- - Workflows that could be combined or share sub-workflows
362
- - Common triggers or data sources
363
- - Shared credential management opportunities
364
- - Cross-workflow dependencies and data flow
365
-
366
- ### Architectural Improvements
367
- - Workflow organization and naming conventions
368
- - Sub-workflow extraction opportunities
369
- - Shared utility workflow recommendations
370
- - Common variable and environment management
371
-
372
- ## Performance & Efficiency Analysis
373
- - Resource usage across workflows
374
- - Bottlenecks affecting multiple workflows
375
- - Optimization opportunities with compound benefits
376
- - Scaling considerations for the workflow collection
377
-
378
- ## Recommendations
379
- ### Immediate Actions
380
- 1. High-impact standardizations
381
- 2. Duplicate elimination priorities
382
- 3. Quick performance wins
383
-
384
- ### Strategic Improvements
385
- 1. Architectural restructuring suggestions
386
- 2. Long-term maintainability enhancements
387
- 3. Scalability preparations
388
-
389
- ### Implementation Roadmap
390
- Step-by-step approach for optimizing the entire workflow ecosystem
391
-
392
- Focus on ${optimizationFocus} aspects and provide specific, actionable recommendations for managing multiple n8n workflows effectively.`;
393
- return { systemAndContext, dataPayload, outputInstructions };
394
- }
395
- /**
396
- * Get focus-specific additional instructions
397
- */
398
- getOptimizationFocusInstructions(focus) {
399
- const instructions = {
400
- 'performance': `
401
- **Performance Focus Instructions:**
402
- - Prioritize execution speed improvements and resource optimization
403
- - Identify memory usage patterns and optimization opportunities
404
- - Focus heavily on API call efficiency and caching strategies
405
- - Suggest parallel processing configurations where beneficial
406
- - Provide specific performance metrics estimates and benchmarks`,
407
- 'error-handling': `
408
- **Error Handling Focus Instructions:**
409
- - Examine every potential failure point in the workflow
410
- - Recommend comprehensive error recovery and resilience strategies
411
- - Suggest proper retry logic configurations with exponential backoff
412
- - Focus extensively on workflow reliability and fault tolerance
413
- - Include detailed alerting, monitoring, and notification recommendations`,
414
- 'maintainability': `
415
- **Maintainability Focus Instructions:**
416
- - Assess workflow complexity and readability thoroughly
417
- - Review workflow organization, structure, and documentation
418
- - Focus on long-term maintenance and team collaboration aspects
419
- - Suggest modularization and reusability opportunities
420
- - Consider upgrade paths and version management implications`,
421
- 'all': `
422
- **Comprehensive Analysis Instructions:**
423
- - Balance all aspects: performance, reliability, maintainability, and security
424
- - Prioritize recommendations by impact, implementation effort, and business value
425
- - Consider scalability, future requirements, and growth scenarios
426
- - Provide holistic optimization strategy with clear implementation phases`
427
- };
428
- return instructions[focus] || instructions.all;
429
- }
430
- /**
431
- * Implement for backwards compatibility
432
- * The system still expects this method, so we intelligently route to the appropriate stages
433
- */
434
- getPromptStages(params) {
435
- const mode = this.detectAnalysisMode(params);
436
- if (mode === 'single-file') {
437
- return this.getSingleFilePromptStages(params);
438
- }
439
- else {
440
- return this.getMultiFilePromptStages(params);
441
- }
442
- }
443
- // Multi-file helper methods
444
- async discoverRelevantFiles(projectPath, maxDepth, analysisType) {
445
- const extensions = this.getFileExtensions(analysisType);
446
- return await this.multiFileAnalysis.discoverFiles(projectPath, extensions, maxDepth);
447
- }
448
- async performMultiFileAnalysis(files, params, model, contextLength) {
449
- const cacheKey = this.analysisCache.generateKey('analyze_n8n_workflow', params, files);
450
- const cached = await this.analysisCache.get(cacheKey);
451
- if (cached)
452
- return cached;
453
- const fileAnalysisResults = await this.multiFileAnalysis.analyzeBatch(files, (file) => this.analyzeIndividualFile(file, params, model), contextLength);
454
- // Aggregate results into n8n-specific analysis format
455
- const aggregatedResult = {
456
- summary: `n8n workflow analysis of ${files.length} workflow files`,
457
- findings: fileAnalysisResults,
458
- data: {
459
- workflowCount: files.length,
460
- totalNodes: fileAnalysisResults.reduce((sum, result) => sum + (result.nodeCount || 0), 0),
461
- commonPatterns: this.identifyCommonPatterns(fileAnalysisResults),
462
- sharedTriggers: this.identifySharedTriggers(fileAnalysisResults)
463
- }
464
- };
465
- await this.analysisCache.cacheAnalysis(cacheKey, aggregatedResult, {
466
- modelUsed: model.identifier || 'unknown',
467
- executionTime: Date.now() - Date.now(), // TODO: Track actual execution time
468
- timestamp: new Date().toISOString()
469
- });
470
- return aggregatedResult;
471
- }
472
- async analyzeIndividualFile(file, params, model) {
473
- const content = await import('fs/promises').then(fs => fs.readFile(file, 'utf-8'));
474
- try {
475
- const workflow = JSON.parse(content);
476
- return {
477
- filePath: file,
478
- size: content.length,
479
- nodeCount: workflow.nodes?.length || 0,
480
- connections: workflow.connections ? Object.keys(workflow.connections).length : 0,
481
- triggers: workflow.nodes?.filter((node) => node.type?.includes('trigger')) || [],
482
- hasCredentials: workflow.nodes?.some((node) => node.credentials) || false
483
- };
484
- }
485
- catch (error) {
486
- return {
487
- filePath: file,
488
- size: content.length,
489
- error: 'Invalid JSON workflow file'
490
- };
491
- }
492
- }
493
- getFileExtensions(analysisType) {
494
- const extensionMap = {
495
- 'workflow': ['.json'], // n8n workflows are JSON files
496
- 'security': ['.json'], // Same for security analysis
497
- 'comprehensive': ['.json'] // Comprehensive analysis of JSON workflows
498
- };
499
- return extensionMap[analysisType] || extensionMap.comprehensive;
500
- }
501
- identifyCommonPatterns(results) {
502
- // Analyze common node patterns across workflows
503
- const nodeTypes = {};
504
- results.forEach(result => {
505
- if (result.triggers) {
506
- result.triggers.forEach((trigger) => {
507
- nodeTypes[trigger.type] = (nodeTypes[trigger.type] || 0) + 1;
508
- });
509
- }
510
- });
511
- return Object.entries(nodeTypes)
512
- .filter(([_, count]) => count > 1)
513
- .map(([type, count]) => `${type} (used in ${count} workflows)`);
514
- }
515
- identifySharedTriggers(results) {
516
- const triggers = new Set();
517
- results.forEach(result => {
518
- if (result.triggers) {
519
- result.triggers.forEach((trigger) => {
520
- triggers.add(trigger.type);
521
- });
522
- }
523
- });
524
- return Array.from(triggers);
525
- }
526
- generateCacheKey(files, params) {
527
- const fileHash = files.join('|');
528
- const paramHash = JSON.stringify(params);
529
- return `${fileHash}_${paramHash}`.substring(0, 64);
530
- }
531
- }
532
- export default N8nWorkflowAnalyzer;
533
- //# sourceMappingURL=n8n-workflow.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"n8n-workflow.js","sourceRoot":"","sources":["../../../src/prompts/analyze/n8n-workflow.ts"],"names":[],"mappings":"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"}
@@ -1,126 +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 ProjectStructureAnalyzer 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
- focusAreas: {
67
- type: "array";
68
- description: string;
69
- required: boolean;
70
- default: any[];
71
- items: {
72
- type: "string";
73
- };
74
- };
75
- };
76
- private analysisCache;
77
- private multiFileAnalysis;
78
- constructor();
79
- execute(params: any, llmClient: any): Promise<any>;
80
- /**
81
- * Auto-detect whether this is single-file or multi-file analysis
82
- */
83
- private detectAnalysisMode;
84
- /**
85
- * Validate parameters based on detected analysis mode
86
- */
87
- private validateParameters;
88
- /**
89
- * Execute single-file analysis
90
- */
91
- private executeSingleFileAnalysis;
92
- /**
93
- * Execute multi-file analysis
94
- */
95
- private executeMultiFileAnalysis;
96
- /**
97
- * Single-file structure analysis - focuses on file's role in larger architecture
98
- */
99
- private getSingleFilePromptStages;
100
- /**
101
- * Multi-file project structure analysis - comprehensive architectural overview
102
- */
103
- private getMultiFilePromptStages;
104
- /**
105
- * Backwards compatibility method
106
- */
107
- getPromptStages(params: any): PromptStages;
108
- private discoverRelevantFiles;
109
- private performMultiFileAnalysis;
110
- private analyzeIndividualFile;
111
- private getFileExtensions;
112
- private analyzeFileTypes;
113
- private analyzeDirectoryStructure;
114
- private calculateComplexityMetrics;
115
- private identifyOrganizationPatterns;
116
- private analyzeDependencyStructure;
117
- private isConfigFile;
118
- private isTestFile;
119
- private countFunctions;
120
- private countImports;
121
- private countExports;
122
- private calculateVariance;
123
- private generateCacheKey;
124
- }
125
- export default ProjectStructureAnalyzer;
126
- //# sourceMappingURL=project-structure.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"project-structure.d.ts","sourceRoot":"","sources":["../../../src/prompts/analyze/project-structure.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,wBAAyB,SAAQ,UAAW,YAAW,aAAa;IAC/E,IAAI,SAA+B;IACnC,QAAQ,EAAG,SAAS,CAAU;IAC9B,WAAW,SAAmG;IAG9G,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MA4DR;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;IAmEjC;;OAEG;IACH,OAAO,CAAC,wBAAwB;IAmGhC;;OAEG;IACH,eAAe,CAAC,MAAM,EAAE,GAAG,GAAG,YAAY;YAW5B,qBAAqB;YASrB,wBAAwB;YAqDxB,qBAAqB;IAuBnC,OAAO,CAAC,iBAAiB;IAWzB,OAAO,CAAC,gBAAgB;IASxB,OAAO,CAAC,yBAAyB;IAsBjC,OAAO,CAAC,0BAA0B;IAYlC,OAAO,CAAC,4BAA4B;IAcpC,OAAO,CAAC,0BAA0B;IAgBlC,OAAO,CAAC,YAAY;IAKpB,OAAO,CAAC,UAAU;IAKlB,OAAO,CAAC,cAAc;IAgBtB,OAAO,CAAC,YAAY;IAapB,OAAO,CAAC,YAAY;IAapB,OAAO,CAAC,iBAAiB;IAOzB,OAAO,CAAC,gBAAgB;CAKzB;AAED,eAAe,wBAAwB,CAAC"}