@houtini/lm 1.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 (260) hide show
  1. package/CHANGELOG.md +273 -0
  2. package/LICENSE +21 -0
  3. package/README.md +203 -0
  4. package/dist/cache/analysis-cache.d.ts +33 -0
  5. package/dist/cache/analysis-cache.d.ts.map +1 -0
  6. package/dist/cache/analysis-cache.js +56 -0
  7. package/dist/cache/analysis-cache.js.map +1 -0
  8. package/dist/cache/cache-manager.d.ts +29 -0
  9. package/dist/cache/cache-manager.d.ts.map +1 -0
  10. package/dist/cache/cache-manager.js +85 -0
  11. package/dist/cache/cache-manager.js.map +1 -0
  12. package/dist/cache/index.d.ts +16 -0
  13. package/dist/cache/index.d.ts.map +1 -0
  14. package/dist/cache/index.js +17 -0
  15. package/dist/cache/index.js.map +1 -0
  16. package/dist/cache/prompt-cache.d.ts +33 -0
  17. package/dist/cache/prompt-cache.d.ts.map +1 -0
  18. package/dist/cache/prompt-cache.js +61 -0
  19. package/dist/cache/prompt-cache.js.map +1 -0
  20. package/dist/config.d.ts +43 -0
  21. package/dist/config.d.ts.map +1 -0
  22. package/dist/config.js +70 -0
  23. package/dist/config.js.map +1 -0
  24. package/dist/core/ThreeStagePromptManager.d.ts +39 -0
  25. package/dist/core/ThreeStagePromptManager.d.ts.map +1 -0
  26. package/dist/core/ThreeStagePromptManager.js +176 -0
  27. package/dist/core/ThreeStagePromptManager.js.map +1 -0
  28. package/dist/index.d.ts +6 -0
  29. package/dist/index.d.ts.map +1 -0
  30. package/dist/index.js +230 -0
  31. package/dist/index.js.map +1 -0
  32. package/dist/plugins/base-plugin.d.ts +47 -0
  33. package/dist/plugins/base-plugin.d.ts.map +1 -0
  34. package/dist/plugins/base-plugin.js +90 -0
  35. package/dist/plugins/base-plugin.js.map +1 -0
  36. package/dist/plugins/index.d.ts +58 -0
  37. package/dist/plugins/index.d.ts.map +1 -0
  38. package/dist/plugins/index.js +161 -0
  39. package/dist/plugins/index.js.map +1 -0
  40. package/dist/plugins/types.d.ts +5 -0
  41. package/dist/plugins/types.d.ts.map +1 -0
  42. package/dist/plugins/types.js +5 -0
  43. package/dist/plugins/types.js.map +1 -0
  44. package/dist/prompts/analyze/code-quality.d.ts +116 -0
  45. package/dist/prompts/analyze/code-quality.d.ts.map +1 -0
  46. package/dist/prompts/analyze/code-quality.js +433 -0
  47. package/dist/prompts/analyze/code-quality.js.map +1 -0
  48. package/dist/prompts/analyze/compare-integration.d.ts +130 -0
  49. package/dist/prompts/analyze/compare-integration.d.ts.map +1 -0
  50. package/dist/prompts/analyze/compare-integration.js +543 -0
  51. package/dist/prompts/analyze/compare-integration.js.map +1 -0
  52. package/dist/prompts/analyze/count-files.d.ts +109 -0
  53. package/dist/prompts/analyze/count-files.d.ts.map +1 -0
  54. package/dist/prompts/analyze/count-files.js +399 -0
  55. package/dist/prompts/analyze/count-files.js.map +1 -0
  56. package/dist/prompts/analyze/database-queries.d.ts +156 -0
  57. package/dist/prompts/analyze/database-queries.d.ts.map +1 -0
  58. package/dist/prompts/analyze/database-queries.js +759 -0
  59. package/dist/prompts/analyze/database-queries.js.map +1 -0
  60. package/dist/prompts/analyze/dependencies.d.ts +97 -0
  61. package/dist/prompts/analyze/dependencies.d.ts.map +1 -0
  62. package/dist/prompts/analyze/dependencies.js +333 -0
  63. package/dist/prompts/analyze/dependencies.js.map +1 -0
  64. package/dist/prompts/analyze/diff-signatures.d.ts +139 -0
  65. package/dist/prompts/analyze/diff-signatures.d.ts.map +1 -0
  66. package/dist/prompts/analyze/diff-signatures.js +702 -0
  67. package/dist/prompts/analyze/diff-signatures.js.map +1 -0
  68. package/dist/prompts/analyze/find-patterns.d.ts +128 -0
  69. package/dist/prompts/analyze/find-patterns.d.ts.map +1 -0
  70. package/dist/prompts/analyze/find-patterns.js +520 -0
  71. package/dist/prompts/analyze/find-patterns.js.map +1 -0
  72. package/dist/prompts/analyze/find-unused-css.d.ts +151 -0
  73. package/dist/prompts/analyze/find-unused-css.d.ts.map +1 -0
  74. package/dist/prompts/analyze/find-unused-css.js +754 -0
  75. package/dist/prompts/analyze/find-unused-css.js.map +1 -0
  76. package/dist/prompts/analyze/n8n-workflow.d.ts +137 -0
  77. package/dist/prompts/analyze/n8n-workflow.d.ts.map +1 -0
  78. package/dist/prompts/analyze/n8n-workflow.js +529 -0
  79. package/dist/prompts/analyze/n8n-workflow.js.map +1 -0
  80. package/dist/prompts/analyze/project-structure.d.ts +126 -0
  81. package/dist/prompts/analyze/project-structure.d.ts.map +1 -0
  82. package/dist/prompts/analyze/project-structure.js +569 -0
  83. package/dist/prompts/analyze/project-structure.js.map +1 -0
  84. package/dist/prompts/analyze/security-audit.d.ts +142 -0
  85. package/dist/prompts/analyze/security-audit.d.ts.map +1 -0
  86. package/dist/prompts/analyze/security-audit.js +637 -0
  87. package/dist/prompts/analyze/security-audit.js.map +1 -0
  88. package/dist/prompts/analyze/single-file.d.ts +162 -0
  89. package/dist/prompts/analyze/single-file.d.ts.map +1 -0
  90. package/dist/prompts/analyze/single-file.js +665 -0
  91. package/dist/prompts/analyze/single-file.js.map +1 -0
  92. package/dist/prompts/analyze/trace-execution.d.ts +126 -0
  93. package/dist/prompts/analyze/trace-execution.d.ts.map +1 -0
  94. package/dist/prompts/analyze/trace-execution.js +609 -0
  95. package/dist/prompts/analyze/trace-execution.js.map +1 -0
  96. package/dist/prompts/analyze/wordpress-plugin-audit.d.ts +116 -0
  97. package/dist/prompts/analyze/wordpress-plugin-audit.d.ts.map +1 -0
  98. package/dist/prompts/analyze/wordpress-plugin-audit.js +454 -0
  99. package/dist/prompts/analyze/wordpress-plugin-audit.js.map +1 -0
  100. package/dist/prompts/analyze/wordpress-security.d.ts +146 -0
  101. package/dist/prompts/analyze/wordpress-security.d.ts.map +1 -0
  102. package/dist/prompts/analyze/wordpress-security.js +698 -0
  103. package/dist/prompts/analyze/wordpress-security.js.map +1 -0
  104. package/dist/prompts/analyze/wordpress-theme-audit.d.ts +114 -0
  105. package/dist/prompts/analyze/wordpress-theme-audit.d.ts.map +1 -0
  106. package/dist/prompts/analyze/wordpress-theme-audit.js +538 -0
  107. package/dist/prompts/analyze/wordpress-theme-audit.js.map +1 -0
  108. package/dist/prompts/custom/custom-prompt.d.ts +135 -0
  109. package/dist/prompts/custom/custom-prompt.d.ts.map +1 -0
  110. package/dist/prompts/custom/custom-prompt.js +419 -0
  111. package/dist/prompts/custom/custom-prompt.js.map +1 -0
  112. package/dist/prompts/fun/arcade-game.d.ts +152 -0
  113. package/dist/prompts/fun/arcade-game.d.ts.map +1 -0
  114. package/dist/prompts/fun/arcade-game.js +653 -0
  115. package/dist/prompts/fun/arcade-game.js.map +1 -0
  116. package/dist/prompts/fun/create_text_adventure.d.ts +100 -0
  117. package/dist/prompts/fun/create_text_adventure.d.ts.map +1 -0
  118. package/dist/prompts/fun/create_text_adventure.js +397 -0
  119. package/dist/prompts/fun/create_text_adventure.js.map +1 -0
  120. package/dist/prompts/fun/css-art-generator.d.ts +168 -0
  121. package/dist/prompts/fun/css-art-generator.d.ts.map +1 -0
  122. package/dist/prompts/fun/css-art-generator.js +827 -0
  123. package/dist/prompts/fun/css-art-generator.js.map +1 -0
  124. package/dist/prompts/generate/project-documentation.d.ts +137 -0
  125. package/dist/prompts/generate/project-documentation.d.ts.map +1 -0
  126. package/dist/prompts/generate/project-documentation.js +666 -0
  127. package/dist/prompts/generate/project-documentation.js.map +1 -0
  128. package/dist/prompts/generate/refactoring.d.ts +164 -0
  129. package/dist/prompts/generate/refactoring.d.ts.map +1 -0
  130. package/dist/prompts/generate/refactoring.js +621 -0
  131. package/dist/prompts/generate/refactoring.js.map +1 -0
  132. package/dist/prompts/generate/responsive-component.d.ts +147 -0
  133. package/dist/prompts/generate/responsive-component.d.ts.map +1 -0
  134. package/dist/prompts/generate/responsive-component.js +955 -0
  135. package/dist/prompts/generate/responsive-component.js.map +1 -0
  136. package/dist/prompts/generate/typescript-conversion.d.ts +144 -0
  137. package/dist/prompts/generate/typescript-conversion.d.ts.map +1 -0
  138. package/dist/prompts/generate/typescript-conversion.js +527 -0
  139. package/dist/prompts/generate/typescript-conversion.js.map +1 -0
  140. package/dist/prompts/generate/unit-tests.d.ts +139 -0
  141. package/dist/prompts/generate/unit-tests.d.ts.map +1 -0
  142. package/dist/prompts/generate/unit-tests.js +578 -0
  143. package/dist/prompts/generate/unit-tests.js.map +1 -0
  144. package/dist/prompts/generate/wordpress-plugin.d.ts +179 -0
  145. package/dist/prompts/generate/wordpress-plugin.d.ts.map +1 -0
  146. package/dist/prompts/generate/wordpress-plugin.js +763 -0
  147. package/dist/prompts/generate/wordpress-plugin.js.map +1 -0
  148. package/dist/prompts/generate/wordpress-theme-from-static.d.ts +177 -0
  149. package/dist/prompts/generate/wordpress-theme-from-static.d.ts.map +1 -0
  150. package/dist/prompts/generate/wordpress-theme-from-static.js +695 -0
  151. package/dist/prompts/generate/wordpress-theme-from-static.js.map +1 -0
  152. package/dist/prompts/shared/cache-manager.d.ts +45 -0
  153. package/dist/prompts/shared/cache-manager.d.ts.map +1 -0
  154. package/dist/prompts/shared/cache-manager.js +129 -0
  155. package/dist/prompts/shared/cache-manager.js.map +1 -0
  156. package/dist/prompts/shared/helpers.d.ts +39 -0
  157. package/dist/prompts/shared/helpers.d.ts.map +1 -0
  158. package/dist/prompts/shared/helpers.js +151 -0
  159. package/dist/prompts/shared/helpers.js.map +1 -0
  160. package/dist/prompts/shared/templates.d.ts +35 -0
  161. package/dist/prompts/shared/templates.d.ts.map +1 -0
  162. package/dist/prompts/shared/templates.js +77 -0
  163. package/dist/prompts/shared/templates.js.map +1 -0
  164. package/dist/prompts/shared/types.d.ts +112 -0
  165. package/dist/prompts/shared/types.d.ts.map +1 -0
  166. package/dist/prompts/shared/types.js +5 -0
  167. package/dist/prompts/shared/types.js.map +1 -0
  168. package/dist/prompts/system/find-unused-files.d.ts +106 -0
  169. package/dist/prompts/system/find-unused-files.d.ts.map +1 -0
  170. package/dist/prompts/system/find-unused-files.js +353 -0
  171. package/dist/prompts/system/find-unused-files.js.map +1 -0
  172. package/dist/security/index.d.ts +39 -0
  173. package/dist/security/index.d.ts.map +1 -0
  174. package/dist/security/index.js +46 -0
  175. package/dist/security/index.js.map +1 -0
  176. package/dist/security/integration-helpers.d.ts +121 -0
  177. package/dist/security/integration-helpers.d.ts.map +1 -0
  178. package/dist/security/integration-helpers.js +190 -0
  179. package/dist/security/integration-helpers.js.map +1 -0
  180. package/dist/security/output-encoder.d.ts +94 -0
  181. package/dist/security/output-encoder.d.ts.map +1 -0
  182. package/dist/security/output-encoder.js +295 -0
  183. package/dist/security/output-encoder.js.map +1 -0
  184. package/dist/security/prompt-injection-guard.d.ts +59 -0
  185. package/dist/security/prompt-injection-guard.d.ts.map +1 -0
  186. package/dist/security/prompt-injection-guard.js +249 -0
  187. package/dist/security/prompt-injection-guard.js.map +1 -0
  188. package/dist/security/sanitisation.d.ts +67 -0
  189. package/dist/security/sanitisation.d.ts.map +1 -0
  190. package/dist/security/sanitisation.js +398 -0
  191. package/dist/security/sanitisation.js.map +1 -0
  192. package/dist/security/security-service.d.ts +103 -0
  193. package/dist/security/security-service.d.ts.map +1 -0
  194. package/dist/security/security-service.js +303 -0
  195. package/dist/security/security-service.js.map +1 -0
  196. package/dist/security-config.d.ts +45 -0
  197. package/dist/security-config.d.ts.map +1 -0
  198. package/dist/security-config.js +63 -0
  199. package/dist/security-config.js.map +1 -0
  200. package/dist/system/function-list.d.ts +61 -0
  201. package/dist/system/function-list.d.ts.map +1 -0
  202. package/dist/system/function-list.js +111 -0
  203. package/dist/system/function-list.js.map +1 -0
  204. package/dist/system/function-registry.d.ts +23 -0
  205. package/dist/system/function-registry.d.ts.map +1 -0
  206. package/dist/system/function-registry.js +136 -0
  207. package/dist/system/function-registry.js.map +1 -0
  208. package/dist/system/health-check.d.ts +33 -0
  209. package/dist/system/health-check.d.ts.map +1 -0
  210. package/dist/system/health-check.js +98 -0
  211. package/dist/system/health-check.js.map +1 -0
  212. package/dist/system/path-resolver.d.ts +55 -0
  213. package/dist/system/path-resolver.d.ts.map +1 -0
  214. package/dist/system/path-resolver.js +90 -0
  215. package/dist/system/path-resolver.js.map +1 -0
  216. package/dist/templates/plugin-template.d.ts +121 -0
  217. package/dist/templates/plugin-template.d.ts.map +1 -0
  218. package/dist/templates/plugin-template.js +450 -0
  219. package/dist/templates/plugin-template.js.map +1 -0
  220. package/dist/types/chunking-types.d.ts +88 -0
  221. package/dist/types/chunking-types.d.ts.map +1 -0
  222. package/dist/types/chunking-types.js +18 -0
  223. package/dist/types/chunking-types.js.map +1 -0
  224. package/dist/types/prompt-stages.d.ts +42 -0
  225. package/dist/types/prompt-stages.d.ts.map +1 -0
  226. package/dist/types/prompt-stages.js +6 -0
  227. package/dist/types/prompt-stages.js.map +1 -0
  228. package/dist/types.d.ts +46 -0
  229. package/dist/types.d.ts.map +1 -0
  230. package/dist/types.js +6 -0
  231. package/dist/types.js.map +1 -0
  232. package/dist/utils/css-parser.d.ts +26 -0
  233. package/dist/utils/css-parser.d.ts.map +1 -0
  234. package/dist/utils/css-parser.js +117 -0
  235. package/dist/utils/css-parser.js.map +1 -0
  236. package/dist/utils/path-resolver.d.ts +13 -0
  237. package/dist/utils/path-resolver.d.ts.map +1 -0
  238. package/dist/utils/path-resolver.js +78 -0
  239. package/dist/utils/path-resolver.js.map +1 -0
  240. package/dist/utils/plugin-utilities.d.ts +171 -0
  241. package/dist/utils/plugin-utilities.d.ts.map +1 -0
  242. package/dist/utils/plugin-utilities.js +221 -0
  243. package/dist/utils/plugin-utilities.js.map +1 -0
  244. package/dist/utils/streamHandler.d.ts +3 -0
  245. package/dist/utils/streamHandler.d.ts.map +1 -0
  246. package/dist/utils/streamHandler.js +137 -0
  247. package/dist/utils/streamHandler.js.map +1 -0
  248. package/dist/validation/output-validator.d.ts +136 -0
  249. package/dist/validation/output-validator.d.ts.map +1 -0
  250. package/dist/validation/output-validator.js +262 -0
  251. package/dist/validation/output-validator.js.map +1 -0
  252. package/dist/validation/response-factory.d.ts +44 -0
  253. package/dist/validation/response-factory.d.ts.map +1 -0
  254. package/dist/validation/response-factory.js +202 -0
  255. package/dist/validation/response-factory.js.map +1 -0
  256. package/dist/validation/schemas.d.ts +519 -0
  257. package/dist/validation/schemas.d.ts.map +1 -0
  258. package/dist/validation/schemas.js +6 -0
  259. package/dist/validation/schemas.js.map +1 -0
  260. package/package.json +72 -0
@@ -0,0 +1,609 @@
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 } from '../../utils/plugin-utilities.js';
14
+ import { getAnalysisCache } from '../../cache/index.js';
15
+ export class ExecutionPathTracer extends BasePlugin {
16
+ constructor() {
17
+ super();
18
+ this.name = 'trace_execution_path';
19
+ this.category = 'analyze';
20
+ this.description = 'Trace execution path through multiple files starting from an entry point. Shows complete call flow with intelligent analysis and architectural insights.';
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
+ // Execution tracing specific parameters
53
+ entryPoint: {
54
+ type: 'string',
55
+ description: 'Entry point like ClassName::methodName or functionName',
56
+ required: true
57
+ },
58
+ traceDepth: {
59
+ type: 'number',
60
+ description: 'Maximum depth to trace (1-10)',
61
+ required: false,
62
+ default: 5
63
+ },
64
+ showParameters: {
65
+ type: 'boolean',
66
+ description: 'Include parameter information in trace',
67
+ required: false,
68
+ default: false
69
+ },
70
+ // Universal parameters
71
+ language: {
72
+ type: 'string',
73
+ description: 'Programming language',
74
+ required: false,
75
+ default: 'javascript'
76
+ },
77
+ analysisDepth: {
78
+ type: 'string',
79
+ description: 'Level of analysis detail',
80
+ enum: ['basic', 'detailed', 'comprehensive'],
81
+ default: 'detailed',
82
+ required: false
83
+ },
84
+ analysisType: {
85
+ type: 'string',
86
+ description: 'Type of analysis to perform',
87
+ enum: ['execution-flow', 'call-graph', 'comprehensive'],
88
+ default: 'comprehensive',
89
+ required: false
90
+ }
91
+ };
92
+ this.analysisCache = getAnalysisCache();
93
+ this.multiFileAnalysis = new MultiFileAnalysis();
94
+ // Cache and analysis utilities are initialized above
95
+ }
96
+ async execute(params, llmClient) {
97
+ return await withSecurity(this, params, llmClient, async (secureParams) => {
98
+ try {
99
+ // 1. Auto-detect analysis mode based on parameters
100
+ const analysisMode = this.detectAnalysisMode(secureParams);
101
+ // 2. Validate parameters based on detected mode
102
+ this.validateParameters(secureParams, analysisMode);
103
+ // 3. Setup model
104
+ const { model, contextLength } = await ModelSetup.getReadyModel(llmClient);
105
+ // 4. Route to appropriate analysis method
106
+ if (analysisMode === 'single-file') {
107
+ return await this.executeSingleFileAnalysis(secureParams, model, contextLength);
108
+ }
109
+ else {
110
+ return await this.executeMultiFileAnalysis(secureParams, model, contextLength);
111
+ }
112
+ }
113
+ catch (error) {
114
+ return ErrorHandler.createExecutionError('trace_execution_path', error);
115
+ }
116
+ });
117
+ }
118
+ /**
119
+ * Auto-detect whether this is single-file or multi-file analysis
120
+ */
121
+ detectAnalysisMode(params) {
122
+ // Single-file indicators take priority (avoids default parameter issues)
123
+ if (params.code || params.filePath) {
124
+ return 'single-file';
125
+ }
126
+ // Multi-file indicators
127
+ if (params.projectPath || params.files) {
128
+ return 'multi-file';
129
+ }
130
+ // Default to multi-file for execution tracing (usually spans multiple files)
131
+ return 'multi-file';
132
+ }
133
+ /**
134
+ * Validate parameters based on detected analysis mode
135
+ */
136
+ validateParameters(params, mode) {
137
+ if (mode === 'single-file') {
138
+ ParameterValidator.validateCodeOrFile(params);
139
+ }
140
+ else {
141
+ ParameterValidator.validateProjectPath(params);
142
+ ParameterValidator.validateDepth(params, 1, 5);
143
+ }
144
+ // Execution tracing specific validations
145
+ if (!params.entryPoint || typeof params.entryPoint !== 'string') {
146
+ throw new Error('Entry point is required and must be a string (e.g., "ClassName::methodName" or "functionName")');
147
+ }
148
+ // Validate trace depth
149
+ if (params.traceDepth && (params.traceDepth < 1 || params.traceDepth > 10)) {
150
+ throw new Error('Trace depth must be between 1 and 10');
151
+ }
152
+ // Universal validations
153
+ ParameterValidator.validateEnum(params, 'analysisType', ['execution-flow', 'call-graph', 'comprehensive']);
154
+ ParameterValidator.validateEnum(params, 'analysisDepth', ['basic', 'detailed', 'comprehensive']);
155
+ }
156
+ /**
157
+ * Execute single-file analysis
158
+ */
159
+ async executeSingleFileAnalysis(params, model, contextLength) {
160
+ // Process single file input
161
+ let codeToAnalyze = params.code;
162
+ if (params.filePath) {
163
+ codeToAnalyze = await readFileContent(params.filePath);
164
+ }
165
+ // Generate prompt stages for single file
166
+ const promptStages = this.getSingleFilePromptStages({
167
+ ...params,
168
+ code: codeToAnalyze
169
+ });
170
+ // Execute with appropriate method
171
+ const promptManager = new ThreeStagePromptManager(contextLength);
172
+ const needsChunking = promptManager.needsChunking(promptStages);
173
+ if (needsChunking) {
174
+ const conversation = promptManager.createChunkedConversation(promptStages);
175
+ const messages = [
176
+ conversation.systemMessage,
177
+ ...conversation.dataMessages,
178
+ conversation.analysisMessage
179
+ ];
180
+ return await ResponseProcessor.executeChunked(messages, model, contextLength, 'trace_execution_path', 'single');
181
+ }
182
+ else {
183
+ return await ResponseProcessor.executeDirect(promptStages, model, contextLength, 'trace_execution_path');
184
+ }
185
+ }
186
+ /**
187
+ * Execute multi-file analysis
188
+ */
189
+ async executeMultiFileAnalysis(params, model, contextLength) {
190
+ // Discover files
191
+ let filesToAnalyze = params.files ||
192
+ await this.discoverRelevantFiles(params.projectPath, params.maxDepth, params.analysisType);
193
+ // Perform multi-file analysis with caching
194
+ const analysisResult = await this.performMultiFileAnalysis(filesToAnalyze, params, model, contextLength);
195
+ // Generate prompt stages for multi-file
196
+ const promptStages = this.getMultiFilePromptStages({
197
+ ...params,
198
+ analysisResult,
199
+ fileCount: filesToAnalyze.length
200
+ });
201
+ // Always use chunking for multi-file
202
+ const promptManager = new ThreeStagePromptManager(contextLength);
203
+ const conversation = promptManager.createChunkedConversation(promptStages);
204
+ const messages = [
205
+ conversation.systemMessage,
206
+ ...conversation.dataMessages,
207
+ conversation.analysisMessage
208
+ ];
209
+ return await ResponseProcessor.executeChunked(messages, model, contextLength, 'trace_execution_path', 'multifile');
210
+ }
211
+ /**
212
+ * Single-file execution tracing prompt stages
213
+ */
214
+ getSingleFilePromptStages(params) {
215
+ const { code, language, analysisDepth, analysisType, entryPoint, traceDepth, showParameters } = params;
216
+ const systemAndContext = `You are an expert execution flow analyst and senior software architect specializing in ${analysisDepth} ${analysisType} analysis.
217
+
218
+ Your expertise spans 15+ years in software architecture, debugging, performance optimization, and code analysis across multiple programming languages and paradigms.
219
+
220
+ Analysis Context:
221
+ - Language: ${language}
222
+ - Analysis Depth: ${analysisDepth}
223
+ - Analysis Type: ${analysisType}
224
+ - Entry Point: ${entryPoint}
225
+ - Trace Depth: ${traceDepth} levels
226
+ - Parameter Details: ${showParameters ? 'Include full method signatures and parameters' : 'Focus on method names and call flow'}
227
+ - Mode: Single File Execution Analysis
228
+
229
+ CORE COMPETENCIES:
230
+ - Execution flow tracing and call graph analysis
231
+ - Performance bottleneck identification
232
+ - Architecture pattern recognition
233
+ - Cross-cutting concern analysis
234
+ - Error handling pathway evaluation
235
+ - Code quality and maintainability assessment
236
+
237
+ Your task is to trace the execution path starting from the specified entry point within this single file, providing deep architectural insights and actionable recommendations for optimization and improvement.`;
238
+ const dataPayload = `Code to analyze for execution tracing:
239
+
240
+ Entry Point: ${entryPoint}
241
+
242
+ \`\`\`${language}
243
+ ${code}
244
+ \`\`\``;
245
+ const outputInstructions = `EXECUTION TRACING ANALYSIS - SINGLE FILE
246
+
247
+ Perform comprehensive execution flow analysis starting from: **${entryPoint}**
248
+
249
+ ## 1. ENTRY POINT VALIDATION
250
+ - Locate the exact entry point in the provided code
251
+ - Verify the entry point signature and accessibility
252
+ - Note the initial execution context (function, method, closure scope)
253
+
254
+ ## 2. EXECUTION FLOW TRACING
255
+ Trace the execution path step-by-step up to ${traceDepth} levels deep:
256
+
257
+ **Flow Visualization:**
258
+ \`\`\`
259
+ ${entryPoint}
260
+ ├─> Step 1: [Line X] FunctionCall${showParameters ? '(param1: type, param2: type)' : '()'}
261
+ │ ├─> Step 1.1: [Line Y] SubFunction${showParameters ? '(args)' : ''}
262
+ │ │ └─> Step 1.1.1: [Line Z] DeeperCall
263
+ │ └─> Step 1.2: [Line A] ConditionalBranch
264
+ ├─> Step 2: [Line B] NextOperation
265
+ └─> Step 3: [Line C] FinalStep
266
+ \`\`\`
267
+
268
+ ${showParameters ? '**Include for each step:**\n- Full method signatures with parameter types\n- Actual arguments passed at each call site\n- Parameter transformations and validations' : '**Include for each step:**\n- Method/function names and line numbers\n- Conditional branches that affect flow\n- Loop iterations and recursive patterns'}
269
+
270
+ ## 3. EXECUTION ANALYSIS
271
+
272
+ **Control Flow Patterns:**
273
+ - Conditional branches and their impact
274
+ - Loop structures and iteration patterns
275
+ - Exception handling and error paths
276
+ - Asynchronous operations and callbacks
277
+
278
+ **Data Flow Analysis:**
279
+ - Variable mutations throughout execution
280
+ - Parameter passing and transformation
281
+ - Return value propagation
282
+ - Side effects and state changes
283
+
284
+ ## 4. PERFORMANCE INSIGHTS
285
+
286
+ **Execution Characteristics:**
287
+ - Computational complexity assessment
288
+ - Potential performance bottlenecks
289
+ - Resource usage patterns
290
+ - Scalability considerations
291
+
292
+ **Optimization Opportunities:**
293
+ - Redundant operations identification
294
+ - Caching potential
295
+ - Algorithm improvement suggestions
296
+ - Resource management optimizations
297
+
298
+ ## 5. ARCHITECTURE QUALITY ASSESSMENT
299
+
300
+ **Code Structure Analysis:**
301
+ - Single Responsibility Principle adherence
302
+ - Function/method length and complexity
303
+ - Coupling and cohesion evaluation
304
+ - Design pattern usage
305
+
306
+ **Maintainability Factors:**
307
+ - Code readability and clarity
308
+ - Error handling robustness
309
+ - Documentation coverage
310
+ - Testing considerations
311
+
312
+ ## 6. ACTIONABLE RECOMMENDATIONS
313
+
314
+ **Immediate Improvements:**
315
+ 1. [Specific, implementable suggestions]
316
+ 2. [Performance optimizations]
317
+ 3. [Code quality enhancements]
318
+
319
+ **Strategic Refactoring Opportunities:**
320
+ 1. [Architectural improvements]
321
+ 2. [Design pattern implementations]
322
+ 3. [Long-term maintainability enhancements]
323
+
324
+ ## 7. EXECUTION SUMMARY
325
+
326
+ Provide a concise summary:
327
+ - **Total execution steps**: [count]
328
+ - **Maximum depth reached**: [level]
329
+ - **Conditional branches**: [count]
330
+ - **Performance rating**: [Excellent/Good/Fair/Poor]
331
+ - **Maintainability score**: [1-10 with rationale]
332
+ - **Critical issues found**: [count and brief list]
333
+
334
+ Focus on providing practical, actionable insights that help developers understand, debug, and optimize their code execution paths.`;
335
+ return { systemAndContext, dataPayload, outputInstructions };
336
+ }
337
+ /**
338
+ * Multi-file execution tracing prompt stages
339
+ */
340
+ getMultiFilePromptStages(params) {
341
+ const { analysisResult, analysisType, analysisDepth, fileCount, entryPoint, traceDepth, showParameters } = params;
342
+ const systemAndContext = `You are a senior software architect and execution flow expert specializing in ${analysisDepth} multi-file ${analysisType} analysis.
343
+
344
+ With 15+ years of experience in complex system architecture, you excel at:
345
+ - Cross-file execution tracing and dependency analysis
346
+ - Large-scale system performance optimization
347
+ - Architecture pattern identification across codebases
348
+ - Inter-module communication analysis
349
+ - System bottleneck detection and resolution
350
+
351
+ Analysis Context:
352
+ - Analysis Type: ${analysisType}
353
+ - Analysis Depth: ${analysisDepth}
354
+ - Files Analyzed: ${fileCount}
355
+ - Entry Point: ${entryPoint}
356
+ - Trace Depth: ${traceDepth} levels
357
+ - Parameter Analysis: ${showParameters ? 'Include detailed signatures and data flow' : 'Focus on call patterns and structure'}
358
+ - Mode: Multi-File Cross-System Analysis
359
+
360
+ ADVANCED CAPABILITIES:
361
+ - Cross-file execution path mapping
362
+ - Inter-module dependency analysis
363
+ - System-wide performance profiling
364
+ - Architecture anti-pattern detection
365
+ - Scalability and maintainability assessment
366
+ - Integration point vulnerability analysis
367
+
368
+ Your task is to trace execution flow across multiple files, providing strategic architectural insights and comprehensive system-level recommendations.`;
369
+ const dataPayload = `Multi-file execution analysis results for entry point: ${entryPoint}
370
+
371
+ ${JSON.stringify(analysisResult, null, 2)}`;
372
+ const outputInstructions = `MULTI-FILE EXECUTION TRACING ANALYSIS
373
+
374
+ Perform comprehensive cross-file execution flow analysis starting from: **${entryPoint}**
375
+
376
+ ## 1. CROSS-FILE ENTRY POINT ANALYSIS
377
+ - **Entry Point Location**: [File:Line] or analysis of likely location
378
+ - **Initial Context**: [Module/Class/Namespace]
379
+ - **Accessibility**: [Public/Private/Protected/Internal]
380
+ - **Dependencies**: [Immediate imports/requires needed]
381
+
382
+ ## 2. CROSS-FILE EXECUTION TRACE
383
+
384
+ **System-Wide Execution Flow:**
385
+ \`\`\`
386
+ ${entryPoint} [EntryFile.ext:line]
387
+ ├─> FileA.method1() [FileA.ext:line]
388
+ │ ├─> FileB.helper() [FileB.ext:line]
389
+ │ │ └─> FileC.utility() [FileC.ext:line]
390
+ │ └─> FileA.validation() [FileA.ext:line]
391
+ ├─> FileD.process() [FileD.ext:line]
392
+ │ ├─> FileE.transform() [FileE.ext:line]
393
+ │ └─> FileF.save() [FileF.ext:line]
394
+ └─> FileA.cleanup() [FileA.ext:line]
395
+ \`\`\`
396
+
397
+ **File Transition Analysis:**
398
+ For each cross-file call, detail:
399
+ ${showParameters ? '- Full method signatures and parameter mappings\n- Data transformation between files\n- Interface contract compliance\n- Error propagation patterns' : '- Method names and call patterns\n- File-to-file dependencies\n- Interface boundaries\n- Error handling chains'}
400
+
401
+ ## 3. SYSTEM ARCHITECTURE ANALYSIS
402
+
403
+ **Module Interaction Patterns:**
404
+ - **Coupling Analysis**: [Tight/Loose coupling assessment]
405
+ - **Cohesion Evaluation**: [High/Medium/Low cohesion ratings]
406
+ - **Dependency Direction**: [Proper/Circular/Inverted dependencies]
407
+ - **Interface Quality**: [Clean/Complex/Inconsistent interfaces]
408
+
409
+ **Cross-File Communication:**
410
+ - **Data Flow Patterns**: [How data moves between files]
411
+ - **Error Propagation**: [How errors bubble through the system]
412
+ - **State Management**: [Shared state and mutation patterns]
413
+ - **Resource Sharing**: [Database connections, file handles, etc.]
414
+
415
+ ## 4. PERFORMANCE & SCALABILITY ASSESSMENT
416
+
417
+ **System-Level Performance:**
418
+ - **Cross-File Call Overhead**: [Network/I/O/Memory implications]
419
+ - **Data Transfer Efficiency**: [Serialization, caching opportunities]
420
+ - **Bottleneck Identification**: [Files/methods with highest call frequency]
421
+ - **Scalability Constraints**: [System limits and growth barriers]
422
+
423
+ **Resource Usage Analysis:**
424
+ - **Memory Footprint**: [Object lifecycle across files]
425
+ - **I/O Operations**: [File/database/network access patterns]
426
+ - **CPU Utilization**: [Computational hotspots]
427
+ - **Concurrency Considerations**: [Thread safety, async patterns]
428
+
429
+ ## 5. ARCHITECTURE QUALITY & PATTERNS
430
+
431
+ **Design Patterns Detected:**
432
+ - **Structural Patterns**: [MVC, Layered Architecture, etc.]
433
+ - **Behavioral Patterns**: [Observer, Command, Strategy, etc.]
434
+ - **Integration Patterns**: [Facade, Adapter, Proxy, etc.]
435
+
436
+ **Architecture Anti-Patterns:**
437
+ - **God Object**: [Files/classes with too many responsibilities]
438
+ - **Circular Dependencies**: [Problematic dependency cycles]
439
+ - **Tight Coupling**: [Hard-to-change interdependencies]
440
+ - **Inappropriate Intimacy**: [Classes knowing too much about each other]
441
+
442
+ ## 6. CRITICAL SYSTEM ANALYSIS
443
+
444
+ **Potential Issues Found:**
445
+ - **Missing Error Handling**: [Unhandled exceptions across file boundaries]
446
+ - **Resource Leaks**: [Unclosed connections, memory leaks]
447
+ - **Security Vulnerabilities**: [Input validation gaps, injection points]
448
+ - **Concurrency Issues**: [Race conditions, deadlock potential]
449
+
450
+ **Integration Weaknesses:**
451
+ - **Fragile Interfaces**: [Brittle contracts between modules]
452
+ - **Single Points of Failure**: [Critical system dependencies]
453
+ - **Data Consistency**: [State synchronization problems]
454
+ - **Version Compatibility**: [API mismatch risks]
455
+
456
+ ## 7. STRATEGIC RECOMMENDATIONS
457
+
458
+ **Immediate Actions (High Priority):**
459
+ 1. **Critical Fixes**: [Security/performance/stability issues]
460
+ 2. **Quick Wins**: [Low-effort, high-impact improvements]
461
+ 3. **Risk Mitigation**: [Address single points of failure]
462
+
463
+ **Medium-Term Improvements:**
464
+ 1. **Architecture Refactoring**: [Module restructuring opportunities]
465
+ 2. **Performance Optimization**: [System-wide efficiency improvements]
466
+ 3. **Interface Cleanup**: [API standardization and improvement]
467
+
468
+ **Long-Term Strategic Initiatives:**
469
+ 1. **Scalability Enhancements**: [Prepare for growth]
470
+ 2. **Maintainability Improvements**: [Reduce technical debt]
471
+ 3. **Technology Modernization**: [Upgrade opportunities]
472
+
473
+ ## 8. EXECUTION FLOW SUMMARY
474
+
475
+ **System Execution Characteristics:**
476
+ - **Total Files Involved**: ${fileCount}
477
+ - **Cross-File Transitions**: [count]
478
+ - **Maximum Execution Depth**: [level reached]
479
+ - **Circular Dependencies**: [count and severity]
480
+ - **Performance Bottlenecks**: [top 3 critical areas]
481
+
482
+ **System Health Assessment:**
483
+ - **Architecture Quality**: [Excellent/Good/Fair/Poor]
484
+ - **Maintainability Score**: [1-10 with detailed rationale]
485
+ - **Scalability Rating**: [High/Medium/Low with constraints]
486
+ - **Security Posture**: [Strong/Adequate/Weak with specific concerns]
487
+
488
+ **Next Steps Priority Matrix:**
489
+ | Priority | Action Item | Impact | Effort | Timeline |
490
+ |----------|-------------|---------|--------|----------|
491
+ | High | [Action] | High | Low | Week 1 |
492
+ | Medium | [Action] | Medium | Medium | Month 1 |
493
+ | Low | [Action] | High | High | Quarter |
494
+
495
+ Focus on providing strategic, system-level insights that help architects and senior developers understand the holistic execution patterns and make informed decisions about system evolution and optimization.`;
496
+ return { systemAndContext, dataPayload, outputInstructions };
497
+ }
498
+ /**
499
+ * Implement for backwards compatibility
500
+ * The system still expects this method, so we intelligently route to the appropriate stages
501
+ */
502
+ getPromptStages(params) {
503
+ const mode = this.detectAnalysisMode(params);
504
+ if (mode === 'single-file') {
505
+ return this.getSingleFilePromptStages(params);
506
+ }
507
+ else {
508
+ return this.getMultiFilePromptStages(params);
509
+ }
510
+ }
511
+ // Multi-file helper methods
512
+ async discoverRelevantFiles(projectPath, maxDepth, analysisType) {
513
+ const extensions = this.getFileExtensions(analysisType);
514
+ return await this.multiFileAnalysis.discoverFiles(projectPath, extensions, maxDepth);
515
+ }
516
+ async performMultiFileAnalysis(files, params, model, contextLength) {
517
+ const cacheKey = this.analysisCache.generateKey('trace_execution_path', params, files);
518
+ const cached = await this.analysisCache.get(cacheKey);
519
+ if (cached)
520
+ return cached;
521
+ const fileAnalysisResults = await this.multiFileAnalysis.analyzeBatch(files, (file) => this.analyzeIndividualFile(file, params, model), contextLength);
522
+ // Aggregate results into proper analysis result format
523
+ const aggregatedResult = {
524
+ summary: `Cross-file execution analysis of ${files.length} files for entry point: ${params.entryPoint}`,
525
+ findings: fileAnalysisResults,
526
+ data: {
527
+ entryPoint: params.entryPoint,
528
+ traceDepth: params.traceDepth,
529
+ fileCount: files.length,
530
+ totalSize: fileAnalysisResults.reduce((sum, result) => sum + (result.size || 0), 0),
531
+ entryPointInfo: this.parseEntryPoint(params.entryPoint),
532
+ crossFileTransitions: this.identifyPotentialTransitions(fileAnalysisResults, params.entryPoint)
533
+ }
534
+ };
535
+ await this.analysisCache.cacheAnalysis(cacheKey, aggregatedResult, {
536
+ modelUsed: model.identifier || 'unknown',
537
+ executionTime: Date.now() - Date.now(), // TODO: Track actual execution time
538
+ timestamp: new Date().toISOString()
539
+ });
540
+ return aggregatedResult;
541
+ }
542
+ async analyzeIndividualFile(file, params, model) {
543
+ const content = await import('fs/promises').then(fs => fs.readFile(file, 'utf-8'));
544
+ const stats = await import('fs/promises').then(fs => fs.stat(file));
545
+ return {
546
+ filePath: file,
547
+ size: content.length,
548
+ lines: content.split('\n').length,
549
+ extension: file.split('.').pop() || '',
550
+ modified: stats.mtime,
551
+ hasEntryPoint: content.includes(params.entryPoint.split('::').pop() || params.entryPoint),
552
+ functionCount: (content.match(/function\s+\w+/g) || []).length,
553
+ classCount: (content.match(/class\s+\w+/g) || []).length
554
+ };
555
+ }
556
+ getFileExtensions(analysisType) {
557
+ const extensionMap = {
558
+ 'execution-flow': ['.js', '.ts', '.jsx', '.tsx', '.php', '.py', '.java', '.cs', '.cpp', '.c', '.h'],
559
+ 'call-graph': ['.js', '.ts', '.jsx', '.tsx', '.php', '.py', '.java', '.cs', '.cpp', '.c', '.h'],
560
+ 'comprehensive': ['.js', '.ts', '.jsx', '.tsx', '.php', '.py', '.java', '.cs', '.cpp', '.c', '.h', '.rb', '.go', '.rs']
561
+ };
562
+ return extensionMap[analysisType] || extensionMap.comprehensive;
563
+ }
564
+ parseEntryPoint(entryPoint) {
565
+ // Parse different entry point formats
566
+ const doubleColonMatch = entryPoint.match(/^([^:]+)::(.+)$/);
567
+ if (doubleColonMatch) {
568
+ return {
569
+ type: 'class_method',
570
+ className: doubleColonMatch[1],
571
+ methodName: doubleColonMatch[2]
572
+ };
573
+ }
574
+ const dotMatch = entryPoint.match(/^([^.]+)\.(.+)$/);
575
+ if (dotMatch) {
576
+ return {
577
+ type: 'qualified',
578
+ namespace: dotMatch[1],
579
+ name: dotMatch[2]
580
+ };
581
+ }
582
+ return {
583
+ type: 'function',
584
+ functionName: entryPoint
585
+ };
586
+ }
587
+ identifyPotentialTransitions(fileAnalysisResults, entryPoint) {
588
+ // Identify files that might have cross-file calls based on content analysis
589
+ const transitions = [];
590
+ const entryPointName = entryPoint.split('::').pop() || entryPoint;
591
+ fileAnalysisResults.forEach(file => {
592
+ if (file.hasEntryPoint) {
593
+ transitions.push({
594
+ file: file.filePath,
595
+ type: 'entry_point_location',
596
+ confidence: 'high'
597
+ });
598
+ }
599
+ });
600
+ return transitions;
601
+ }
602
+ generateCacheKey(files, params) {
603
+ const fileHash = files.join('|');
604
+ const paramHash = JSON.stringify(params);
605
+ return `${fileHash}_${paramHash}`.substring(0, 64);
606
+ }
607
+ }
608
+ export default ExecutionPathTracer;
609
+ //# sourceMappingURL=trace-execution.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trace-execution.js","sourceRoot":"","sources":["../../../src/prompts/analyze/trace-execution.ts"],"names":[],"mappings":"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"}