@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,46 @@
1
+ /**
2
+ * Core Types for Houtini LM MCP Server v1.0
3
+ * Modern plugin architecture - no legacy prompt handling
4
+ */
5
+ export interface Config {
6
+ lmStudioUrl: string;
7
+ modelName: string;
8
+ temperature: number;
9
+ maxTokens: number;
10
+ topP: number;
11
+ timeout: number;
12
+ maxFileSize: number;
13
+ supportedFileTypes: string[];
14
+ security?: {
15
+ enableSanitisation: boolean;
16
+ enableInjectionDetection: boolean;
17
+ enableOutputEncoding: boolean;
18
+ injectionThreshold: number;
19
+ allowedDirectories: string[];
20
+ maxInputSize: Record<string, number>;
21
+ };
22
+ }
23
+ /**
24
+ * LM Studio Client Configuration
25
+ */
26
+ export interface LMStudioConfig {
27
+ baseUrl: string;
28
+ timeout?: number;
29
+ }
30
+ /**
31
+ * Plugin execution context
32
+ */
33
+ export interface PluginContext {
34
+ modelUsed?: string;
35
+ executionTimeMs?: number;
36
+ contextLength?: number;
37
+ }
38
+ /**
39
+ * Security validation result
40
+ */
41
+ export interface SecurityResult {
42
+ blocked: boolean;
43
+ sanitised: any;
44
+ warnings: string[];
45
+ }
46
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,WAAW,MAAM;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,kBAAkB,EAAE,MAAM,EAAE,CAAC;IAC7B,QAAQ,CAAC,EAAE;QACT,kBAAkB,EAAE,OAAO,CAAC;QAC5B,wBAAwB,EAAE,OAAO,CAAC;QAClC,oBAAoB,EAAE,OAAO,CAAC;QAC9B,kBAAkB,EAAE,MAAM,CAAC;QAC3B,kBAAkB,EAAE,MAAM,EAAE,CAAC;QAC7B,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;KACtC,CAAC;CACH;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,GAAG,CAAC;IACf,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB"}
package/dist/types.js ADDED
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Core Types for Houtini LM MCP Server v1.0
3
+ * Modern plugin architecture - no legacy prompt handling
4
+ */
5
+ export {};
6
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;GAGG"}
@@ -0,0 +1,26 @@
1
+ export interface SimpleSelector {
2
+ selector: string;
3
+ file: string;
4
+ line?: number;
5
+ mediaQuery?: string;
6
+ }
7
+ export declare class CssParser {
8
+ /**
9
+ * Extract all CSS selectors from content with basic metadata
10
+ */
11
+ static extractSelectors(cssContent: string, fileName?: string): SimpleSelector[];
12
+ /**
13
+ * Fallback simple selector extraction using regex
14
+ */
15
+ private static extractSelectorsSimple;
16
+ /**
17
+ * Get CSS file size in KB for reporting
18
+ */
19
+ static getFileSizeKB(cssContent: string): number;
20
+ /**
21
+ * Basic framework detection (just names, let LLM do the analysis)
22
+ */
23
+ static detectBasicFrameworks(cssContent: string): string[];
24
+ }
25
+ export default CssParser;
26
+ //# sourceMappingURL=css-parser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"css-parser.d.ts","sourceRoot":"","sources":["../../src/utils/css-parser.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,qBAAa,SAAS;IAEpB;;OAEG;IACH,MAAM,CAAC,gBAAgB,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,GAAE,MAAW,GAAG,cAAc,EAAE;IA0DpF;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,sBAAsB;IAiCrC;;OAEG;IACH,MAAM,CAAC,aAAa,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM;IAIhD;;OAEG;IACH,MAAM,CAAC,qBAAqB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,EAAE;CAqB3D;AAED,eAAe,SAAS,CAAC"}
@@ -0,0 +1,117 @@
1
+ import * as csstree from 'css-tree';
2
+ export class CssParser {
3
+ /**
4
+ * Extract all CSS selectors from content with basic metadata
5
+ */
6
+ static extractSelectors(cssContent, fileName = '') {
7
+ const selectors = [];
8
+ try {
9
+ const ast = csstree.parse(cssContent, {
10
+ onParseError: (error) => {
11
+ console.warn(`CSS parse warning in ${fileName}: ${error.message}`);
12
+ }
13
+ });
14
+ csstree.walk(ast, (node, item, list) => {
15
+ if (node.type === 'Rule') {
16
+ const selectorList = node.prelude;
17
+ if (selectorList && selectorList.type === 'SelectorList') {
18
+ selectorList.children.forEach((selector) => {
19
+ const selectorText = csstree.generate(selector);
20
+ selectors.push({
21
+ selector: selectorText,
22
+ file: fileName,
23
+ line: node.loc?.start.line
24
+ });
25
+ });
26
+ }
27
+ }
28
+ // Handle @media rules
29
+ if (node.type === 'Atrule' && node.name === 'media') {
30
+ const mediaQuery = csstree.generate(node.prelude);
31
+ if (node.block) {
32
+ csstree.walk(node.block, (innerNode) => {
33
+ if (innerNode.type === 'Rule') {
34
+ const selectorList = innerNode.prelude;
35
+ if (selectorList && selectorList.type === 'SelectorList') {
36
+ selectorList.children.forEach((selector) => {
37
+ const selectorText = csstree.generate(selector);
38
+ selectors.push({
39
+ selector: selectorText,
40
+ file: fileName,
41
+ line: innerNode.loc?.start.line,
42
+ mediaQuery: mediaQuery
43
+ });
44
+ });
45
+ }
46
+ }
47
+ });
48
+ }
49
+ }
50
+ });
51
+ }
52
+ catch (error) {
53
+ console.warn(`Failed to parse CSS in ${fileName}: ${error}`);
54
+ // Fallback to simple regex parsing
55
+ return this.extractSelectorsSimple(cssContent, fileName);
56
+ }
57
+ return selectors;
58
+ }
59
+ /**
60
+ * Fallback simple selector extraction using regex
61
+ */
62
+ static extractSelectorsSimple(css, fileName) {
63
+ const selectors = [];
64
+ // Remove comments and clean up
65
+ css = css.replace(/\/\*[\s\S]*?\*\//g, '');
66
+ // Simple rule matching
67
+ const ruleRegex = /([^{}]+)\s*{[^{}]*}/g;
68
+ let match;
69
+ let lineNumber = 1;
70
+ while ((match = ruleRegex.exec(css)) !== null) {
71
+ const selectorPart = match[1].trim();
72
+ if (selectorPart && !selectorPart.startsWith('@')) {
73
+ const multiSelectors = selectorPart.split(',');
74
+ multiSelectors.forEach(sel => {
75
+ const trimmed = sel.trim();
76
+ if (trimmed) {
77
+ selectors.push({
78
+ selector: trimmed,
79
+ file: fileName,
80
+ line: lineNumber
81
+ });
82
+ }
83
+ });
84
+ }
85
+ // Rough line counting
86
+ lineNumber += (match[0].match(/\n/g) || []).length;
87
+ }
88
+ return selectors;
89
+ }
90
+ /**
91
+ * Get CSS file size in KB for reporting
92
+ */
93
+ static getFileSizeKB(cssContent) {
94
+ return Math.round(Buffer.byteLength(cssContent, 'utf8') / 1024);
95
+ }
96
+ /**
97
+ * Basic framework detection (just names, let LLM do the analysis)
98
+ */
99
+ static detectBasicFrameworks(cssContent) {
100
+ const frameworks = [];
101
+ if (/\.(btn|col|row|container|d-|text-|bg-|border-)/g.test(cssContent)) {
102
+ frameworks.push('Bootstrap');
103
+ }
104
+ if (/@tailwind|@apply|\.(w-|h-|p-|m-|flex|grid)/g.test(cssContent)) {
105
+ frameworks.push('Tailwind');
106
+ }
107
+ if (/\.(wp-|block-|aligncenter|alignleft|sticky)/g.test(cssContent)) {
108
+ frameworks.push('WordPress');
109
+ }
110
+ if (/\.(foundation|grid-|cell|grid-x)/g.test(cssContent)) {
111
+ frameworks.push('Foundation');
112
+ }
113
+ return frameworks;
114
+ }
115
+ }
116
+ export default CssParser;
117
+ //# sourceMappingURL=css-parser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"css-parser.js","sourceRoot":"","sources":["../../src/utils/css-parser.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Analyze a path for MCP usage and provide intelligent suggestions
3
+ */
4
+ export declare function analyzePathForMCP(path: string): Promise<any>;
5
+ /**
6
+ * Enhanced validation helper with path intelligence
7
+ */
8
+ export declare function validatePathWithHints(params: any, pathParam: 'filePath' | 'projectPath'): Promise<any>;
9
+ /**
10
+ * Smart path suggestion helper
11
+ */
12
+ export declare function suggestParameterForPath(pathString: string): 'filePath' | 'projectPath';
13
+ //# sourceMappingURL=path-resolver.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"path-resolver.d.ts","sourceRoot":"","sources":["../../src/utils/path-resolver.ts"],"names":[],"mappings":"AAGA;;GAEG;AACH,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,MAAM,gBAkCnD;AAED;;GAEG;AACH,wBAAsB,qBAAqB,CAAC,MAAM,EAAE,GAAG,EAAE,SAAS,EAAE,UAAU,GAAG,aAAa,gBA0B7F;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,UAAU,EAAE,MAAM,GAAG,UAAU,GAAG,aAAa,CAgBtF"}
@@ -0,0 +1,78 @@
1
+ import { stat } from 'fs/promises';
2
+ import { extname, basename } from 'path';
3
+ /**
4
+ * Analyze a path for MCP usage and provide intelligent suggestions
5
+ */
6
+ export async function analyzePathForMCP(path) {
7
+ try {
8
+ const stats = await stat(path);
9
+ const result = {
10
+ exists: true,
11
+ type: stats.isDirectory() ? 'directory' : 'file',
12
+ suggestedParameter: stats.isDirectory() ? 'projectPath' : 'filePath',
13
+ size: stats.size,
14
+ canRead: true,
15
+ lastModified: stats.mtime,
16
+ extension: stats.isFile() ? extname(path) : null,
17
+ basename: basename(path)
18
+ };
19
+ // Add helpful hints based on analysis
20
+ if (stats.isDirectory()) {
21
+ result.hint = `This is a directory. Use 'projectPath' parameter for multi-file analysis.`;
22
+ }
23
+ else {
24
+ result.hint = `This is a file (${result.extension || 'no extension'}). Use 'filePath' parameter for single-file analysis.`;
25
+ }
26
+ return result;
27
+ }
28
+ catch (error) {
29
+ return {
30
+ exists: false,
31
+ type: 'unknown',
32
+ error: error.message,
33
+ suggestedParameter: 'filePath', // default guess
34
+ hint: `Path not found or inaccessible. Check the path exists and you have permissions.`,
35
+ canRead: false
36
+ };
37
+ }
38
+ }
39
+ /**
40
+ * Enhanced validation helper with path intelligence
41
+ */
42
+ export async function validatePathWithHints(params, pathParam) {
43
+ const path = params[pathParam];
44
+ if (!path)
45
+ return null;
46
+ const analysis = await analyzePathForMCP(path);
47
+ if (!analysis.exists) {
48
+ throw new Error(`Path not found: ${path}. ${analysis.hint}`);
49
+ }
50
+ // Check for parameter mismatch
51
+ if (pathParam === 'filePath' && analysis.type === 'directory') {
52
+ throw new Error(`Parameter mismatch: '${path}' is a directory, but you used 'filePath'. ` +
53
+ `Try using 'projectPath' instead for directory analysis.`);
54
+ }
55
+ if (pathParam === 'projectPath' && analysis.type === 'file') {
56
+ throw new Error(`Parameter mismatch: '${path}' is a file, but you used 'projectPath'. ` +
57
+ `Try using 'filePath' instead for single-file analysis.`);
58
+ }
59
+ return analysis;
60
+ }
61
+ /**
62
+ * Smart path suggestion helper
63
+ */
64
+ export function suggestParameterForPath(pathString) {
65
+ // Quick heuristics before filesystem check
66
+ const hasExtension = extname(pathString).length > 0;
67
+ const endsWithSrc = pathString.endsWith('src') || pathString.endsWith('src/');
68
+ const containsWildcard = pathString.includes('*');
69
+ if (containsWildcard || endsWithSrc) {
70
+ return 'projectPath';
71
+ }
72
+ if (hasExtension) {
73
+ return 'filePath';
74
+ }
75
+ // Default to projectPath for ambiguous cases
76
+ return 'projectPath';
77
+ }
78
+ //# sourceMappingURL=path-resolver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"path-resolver.js","sourceRoot":"","sources":["../../src/utils/path-resolver.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,171 @@
1
+ /**
2
+ * Plugin Execution Utilities - Modern v4.2
3
+ *
4
+ * Shared utilities to reduce code duplication across plugins
5
+ * Common patterns for model setup, token calculation, and response processing
6
+ */
7
+ import { PromptStages } from '../types/prompt-stages.js';
8
+ /**
9
+ * Model setup and validation utility
10
+ * Handles common model loading and context length detection
11
+ */
12
+ export declare class ModelSetup {
13
+ static getReadyModel(llmClient: any): Promise<{
14
+ model: any;
15
+ contextLength: number;
16
+ }>;
17
+ }
18
+ /**
19
+ * Dynamic token calculation utility
20
+ * Calculates optimal maxTokens based on content size and context window
21
+ */
22
+ export declare class TokenCalculator {
23
+ /**
24
+ * Calculate optimal maxTokens for single-stage execution
25
+ */
26
+ static calculateForDirect(stages: PromptStages, contextLength: number, options?: {
27
+ minTokens?: number;
28
+ maxTokens?: number;
29
+ bufferTokens?: number;
30
+ }): number;
31
+ /**
32
+ * Calculate optimal maxTokens for chunked execution
33
+ */
34
+ static calculateForChunked(messages: Array<{
35
+ content: string;
36
+ }>, contextLength: number, options?: {
37
+ minTokens?: number;
38
+ maxTokens?: number;
39
+ bufferTokens?: number;
40
+ }): number;
41
+ /**
42
+ * Calculate optimal maxTokens for multi-file analysis
43
+ */
44
+ static calculateForMultiFile(messages: Array<{
45
+ content: string;
46
+ }>, contextLength: number, options?: {
47
+ minTokens?: number;
48
+ maxTokens?: number;
49
+ bufferTokens?: number;
50
+ }): number;
51
+ }
52
+ /**
53
+ * LM Studio response processing utility
54
+ * Handles streaming response collection with consistent patterns
55
+ */
56
+ export declare class ResponseProcessor {
57
+ /**
58
+ * Stream and collect response from LM Studio model
59
+ */
60
+ static collectStreamingResponse(prediction: AsyncIterable<any>): Promise<string>;
61
+ /**
62
+ * Execute direct model call with standard settings
63
+ */
64
+ static executeDirect(stages: PromptStages, model: any, contextLength: number, functionName: string, options?: {
65
+ temperature?: number;
66
+ tokenOptions?: {
67
+ minTokens?: number;
68
+ maxTokens?: number;
69
+ bufferTokens?: number;
70
+ };
71
+ }): Promise<any>;
72
+ /**
73
+ * Execute chunked model call with standard settings
74
+ */
75
+ static executeChunked(messages: Array<{
76
+ role: string;
77
+ content: string;
78
+ }>, model: any, contextLength: number, functionName: string, analysisType?: 'single' | 'multifile', options?: {
79
+ temperature?: number;
80
+ tokenOptions?: {
81
+ minTokens?: number;
82
+ maxTokens?: number;
83
+ bufferTokens?: number;
84
+ };
85
+ }): Promise<any>;
86
+ }
87
+ /**
88
+ * Common parameter validation utility
89
+ * Standard validation patterns used across plugins
90
+ */
91
+ export declare class ParameterValidator {
92
+ /**
93
+ * Validate code/filePath parameter pattern
94
+ */
95
+ static validateCodeOrFile(params: any, parameterName?: string): void;
96
+ /**
97
+ * Validate project path for multi-file operations
98
+ */
99
+ static validateProjectPath(params: any): void;
100
+ /**
101
+ * Validate depth parameter range
102
+ */
103
+ static validateDepth(params: any, min?: number, max?: number): void;
104
+ /**
105
+ * Validate enum parameter
106
+ */
107
+ static validateEnum(params: any, paramName: string, allowedValues: string[]): void;
108
+ }
109
+ /**
110
+ * Error response utility
111
+ * Consistent error handling patterns
112
+ */
113
+ export declare class ErrorHandler {
114
+ /**
115
+ * Create standardized error response
116
+ */
117
+ static createExecutionError(functionName: string, error: any, operation?: string): {
118
+ success: boolean;
119
+ timestamp: string;
120
+ modelUsed: string;
121
+ executionTimeMs: number;
122
+ error: {
123
+ code: string;
124
+ message: string;
125
+ details: any;
126
+ };
127
+ };
128
+ /**
129
+ * Create parameter validation error response
130
+ */
131
+ static createValidationError(functionName: string, error: any): {
132
+ success: boolean;
133
+ timestamp: string;
134
+ modelUsed: string;
135
+ executionTimeMs: number;
136
+ error: {
137
+ code: string;
138
+ message: string;
139
+ details: any;
140
+ };
141
+ };
142
+ /**
143
+ * Create model error response
144
+ */
145
+ static createModelError(functionName: string, error: any): {
146
+ success: boolean;
147
+ timestamp: string;
148
+ modelUsed: string;
149
+ executionTimeMs: number;
150
+ error: {
151
+ code: string;
152
+ message: string;
153
+ details: any;
154
+ };
155
+ };
156
+ }
157
+ /**
158
+ * Multi-file analysis utility
159
+ * Handles file discovery, batching, and processing for cross-file analysis
160
+ */
161
+ export declare class MultiFileAnalysis {
162
+ /**
163
+ * Discover files in a project directory with filtering
164
+ */
165
+ discoverFiles(projectPath: string, extensions: string[], maxDepth?: number): Promise<string[]>;
166
+ /**
167
+ * Process files in batches with a callback function
168
+ */
169
+ analyzeBatch<T>(files: string[], analyzeFunction: (file: string) => Promise<T>, contextLength: number, batchSize?: number): Promise<T[]>;
170
+ }
171
+ //# sourceMappingURL=plugin-utilities.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin-utilities.d.ts","sourceRoot":"","sources":["../../src/utils/plugin-utilities.ts"],"names":[],"mappings":"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"}