@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.
- package/CHANGELOG.md +273 -0
- package/LICENSE +21 -0
- package/README.md +203 -0
- package/dist/cache/analysis-cache.d.ts +33 -0
- package/dist/cache/analysis-cache.d.ts.map +1 -0
- package/dist/cache/analysis-cache.js +56 -0
- package/dist/cache/analysis-cache.js.map +1 -0
- package/dist/cache/cache-manager.d.ts +29 -0
- package/dist/cache/cache-manager.d.ts.map +1 -0
- package/dist/cache/cache-manager.js +85 -0
- package/dist/cache/cache-manager.js.map +1 -0
- package/dist/cache/index.d.ts +16 -0
- package/dist/cache/index.d.ts.map +1 -0
- package/dist/cache/index.js +17 -0
- package/dist/cache/index.js.map +1 -0
- package/dist/cache/prompt-cache.d.ts +33 -0
- package/dist/cache/prompt-cache.d.ts.map +1 -0
- package/dist/cache/prompt-cache.js +61 -0
- package/dist/cache/prompt-cache.js.map +1 -0
- package/dist/config.d.ts +43 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +70 -0
- package/dist/config.js.map +1 -0
- package/dist/core/ThreeStagePromptManager.d.ts +39 -0
- package/dist/core/ThreeStagePromptManager.d.ts.map +1 -0
- package/dist/core/ThreeStagePromptManager.js +176 -0
- package/dist/core/ThreeStagePromptManager.js.map +1 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +230 -0
- package/dist/index.js.map +1 -0
- package/dist/plugins/base-plugin.d.ts +47 -0
- package/dist/plugins/base-plugin.d.ts.map +1 -0
- package/dist/plugins/base-plugin.js +90 -0
- package/dist/plugins/base-plugin.js.map +1 -0
- package/dist/plugins/index.d.ts +58 -0
- package/dist/plugins/index.d.ts.map +1 -0
- package/dist/plugins/index.js +161 -0
- package/dist/plugins/index.js.map +1 -0
- package/dist/plugins/types.d.ts +5 -0
- package/dist/plugins/types.d.ts.map +1 -0
- package/dist/plugins/types.js +5 -0
- package/dist/plugins/types.js.map +1 -0
- package/dist/prompts/analyze/code-quality.d.ts +116 -0
- package/dist/prompts/analyze/code-quality.d.ts.map +1 -0
- package/dist/prompts/analyze/code-quality.js +433 -0
- package/dist/prompts/analyze/code-quality.js.map +1 -0
- package/dist/prompts/analyze/compare-integration.d.ts +130 -0
- package/dist/prompts/analyze/compare-integration.d.ts.map +1 -0
- package/dist/prompts/analyze/compare-integration.js +543 -0
- package/dist/prompts/analyze/compare-integration.js.map +1 -0
- package/dist/prompts/analyze/count-files.d.ts +109 -0
- package/dist/prompts/analyze/count-files.d.ts.map +1 -0
- package/dist/prompts/analyze/count-files.js +399 -0
- package/dist/prompts/analyze/count-files.js.map +1 -0
- package/dist/prompts/analyze/database-queries.d.ts +156 -0
- package/dist/prompts/analyze/database-queries.d.ts.map +1 -0
- package/dist/prompts/analyze/database-queries.js +759 -0
- package/dist/prompts/analyze/database-queries.js.map +1 -0
- package/dist/prompts/analyze/dependencies.d.ts +97 -0
- package/dist/prompts/analyze/dependencies.d.ts.map +1 -0
- package/dist/prompts/analyze/dependencies.js +333 -0
- package/dist/prompts/analyze/dependencies.js.map +1 -0
- package/dist/prompts/analyze/diff-signatures.d.ts +139 -0
- package/dist/prompts/analyze/diff-signatures.d.ts.map +1 -0
- package/dist/prompts/analyze/diff-signatures.js +702 -0
- package/dist/prompts/analyze/diff-signatures.js.map +1 -0
- package/dist/prompts/analyze/find-patterns.d.ts +128 -0
- package/dist/prompts/analyze/find-patterns.d.ts.map +1 -0
- package/dist/prompts/analyze/find-patterns.js +520 -0
- package/dist/prompts/analyze/find-patterns.js.map +1 -0
- package/dist/prompts/analyze/find-unused-css.d.ts +151 -0
- package/dist/prompts/analyze/find-unused-css.d.ts.map +1 -0
- package/dist/prompts/analyze/find-unused-css.js +754 -0
- package/dist/prompts/analyze/find-unused-css.js.map +1 -0
- package/dist/prompts/analyze/n8n-workflow.d.ts +137 -0
- package/dist/prompts/analyze/n8n-workflow.d.ts.map +1 -0
- package/dist/prompts/analyze/n8n-workflow.js +529 -0
- package/dist/prompts/analyze/n8n-workflow.js.map +1 -0
- package/dist/prompts/analyze/project-structure.d.ts +126 -0
- package/dist/prompts/analyze/project-structure.d.ts.map +1 -0
- package/dist/prompts/analyze/project-structure.js +569 -0
- package/dist/prompts/analyze/project-structure.js.map +1 -0
- package/dist/prompts/analyze/security-audit.d.ts +142 -0
- package/dist/prompts/analyze/security-audit.d.ts.map +1 -0
- package/dist/prompts/analyze/security-audit.js +637 -0
- package/dist/prompts/analyze/security-audit.js.map +1 -0
- package/dist/prompts/analyze/single-file.d.ts +162 -0
- package/dist/prompts/analyze/single-file.d.ts.map +1 -0
- package/dist/prompts/analyze/single-file.js +665 -0
- package/dist/prompts/analyze/single-file.js.map +1 -0
- package/dist/prompts/analyze/trace-execution.d.ts +126 -0
- package/dist/prompts/analyze/trace-execution.d.ts.map +1 -0
- package/dist/prompts/analyze/trace-execution.js +609 -0
- package/dist/prompts/analyze/trace-execution.js.map +1 -0
- package/dist/prompts/analyze/wordpress-plugin-audit.d.ts +116 -0
- package/dist/prompts/analyze/wordpress-plugin-audit.d.ts.map +1 -0
- package/dist/prompts/analyze/wordpress-plugin-audit.js +454 -0
- package/dist/prompts/analyze/wordpress-plugin-audit.js.map +1 -0
- package/dist/prompts/analyze/wordpress-security.d.ts +146 -0
- package/dist/prompts/analyze/wordpress-security.d.ts.map +1 -0
- package/dist/prompts/analyze/wordpress-security.js +698 -0
- package/dist/prompts/analyze/wordpress-security.js.map +1 -0
- package/dist/prompts/analyze/wordpress-theme-audit.d.ts +114 -0
- package/dist/prompts/analyze/wordpress-theme-audit.d.ts.map +1 -0
- package/dist/prompts/analyze/wordpress-theme-audit.js +538 -0
- package/dist/prompts/analyze/wordpress-theme-audit.js.map +1 -0
- package/dist/prompts/custom/custom-prompt.d.ts +135 -0
- package/dist/prompts/custom/custom-prompt.d.ts.map +1 -0
- package/dist/prompts/custom/custom-prompt.js +419 -0
- package/dist/prompts/custom/custom-prompt.js.map +1 -0
- package/dist/prompts/fun/arcade-game.d.ts +152 -0
- package/dist/prompts/fun/arcade-game.d.ts.map +1 -0
- package/dist/prompts/fun/arcade-game.js +653 -0
- package/dist/prompts/fun/arcade-game.js.map +1 -0
- package/dist/prompts/fun/create_text_adventure.d.ts +100 -0
- package/dist/prompts/fun/create_text_adventure.d.ts.map +1 -0
- package/dist/prompts/fun/create_text_adventure.js +397 -0
- package/dist/prompts/fun/create_text_adventure.js.map +1 -0
- package/dist/prompts/fun/css-art-generator.d.ts +168 -0
- package/dist/prompts/fun/css-art-generator.d.ts.map +1 -0
- package/dist/prompts/fun/css-art-generator.js +827 -0
- package/dist/prompts/fun/css-art-generator.js.map +1 -0
- package/dist/prompts/generate/project-documentation.d.ts +137 -0
- package/dist/prompts/generate/project-documentation.d.ts.map +1 -0
- package/dist/prompts/generate/project-documentation.js +666 -0
- package/dist/prompts/generate/project-documentation.js.map +1 -0
- package/dist/prompts/generate/refactoring.d.ts +164 -0
- package/dist/prompts/generate/refactoring.d.ts.map +1 -0
- package/dist/prompts/generate/refactoring.js +621 -0
- package/dist/prompts/generate/refactoring.js.map +1 -0
- package/dist/prompts/generate/responsive-component.d.ts +147 -0
- package/dist/prompts/generate/responsive-component.d.ts.map +1 -0
- package/dist/prompts/generate/responsive-component.js +955 -0
- package/dist/prompts/generate/responsive-component.js.map +1 -0
- package/dist/prompts/generate/typescript-conversion.d.ts +144 -0
- package/dist/prompts/generate/typescript-conversion.d.ts.map +1 -0
- package/dist/prompts/generate/typescript-conversion.js +527 -0
- package/dist/prompts/generate/typescript-conversion.js.map +1 -0
- package/dist/prompts/generate/unit-tests.d.ts +139 -0
- package/dist/prompts/generate/unit-tests.d.ts.map +1 -0
- package/dist/prompts/generate/unit-tests.js +578 -0
- package/dist/prompts/generate/unit-tests.js.map +1 -0
- package/dist/prompts/generate/wordpress-plugin.d.ts +179 -0
- package/dist/prompts/generate/wordpress-plugin.d.ts.map +1 -0
- package/dist/prompts/generate/wordpress-plugin.js +763 -0
- package/dist/prompts/generate/wordpress-plugin.js.map +1 -0
- package/dist/prompts/generate/wordpress-theme-from-static.d.ts +177 -0
- package/dist/prompts/generate/wordpress-theme-from-static.d.ts.map +1 -0
- package/dist/prompts/generate/wordpress-theme-from-static.js +695 -0
- package/dist/prompts/generate/wordpress-theme-from-static.js.map +1 -0
- package/dist/prompts/shared/cache-manager.d.ts +45 -0
- package/dist/prompts/shared/cache-manager.d.ts.map +1 -0
- package/dist/prompts/shared/cache-manager.js +129 -0
- package/dist/prompts/shared/cache-manager.js.map +1 -0
- package/dist/prompts/shared/helpers.d.ts +39 -0
- package/dist/prompts/shared/helpers.d.ts.map +1 -0
- package/dist/prompts/shared/helpers.js +151 -0
- package/dist/prompts/shared/helpers.js.map +1 -0
- package/dist/prompts/shared/templates.d.ts +35 -0
- package/dist/prompts/shared/templates.d.ts.map +1 -0
- package/dist/prompts/shared/templates.js +77 -0
- package/dist/prompts/shared/templates.js.map +1 -0
- package/dist/prompts/shared/types.d.ts +112 -0
- package/dist/prompts/shared/types.d.ts.map +1 -0
- package/dist/prompts/shared/types.js +5 -0
- package/dist/prompts/shared/types.js.map +1 -0
- package/dist/prompts/system/find-unused-files.d.ts +106 -0
- package/dist/prompts/system/find-unused-files.d.ts.map +1 -0
- package/dist/prompts/system/find-unused-files.js +353 -0
- package/dist/prompts/system/find-unused-files.js.map +1 -0
- package/dist/security/index.d.ts +39 -0
- package/dist/security/index.d.ts.map +1 -0
- package/dist/security/index.js +46 -0
- package/dist/security/index.js.map +1 -0
- package/dist/security/integration-helpers.d.ts +121 -0
- package/dist/security/integration-helpers.d.ts.map +1 -0
- package/dist/security/integration-helpers.js +190 -0
- package/dist/security/integration-helpers.js.map +1 -0
- package/dist/security/output-encoder.d.ts +94 -0
- package/dist/security/output-encoder.d.ts.map +1 -0
- package/dist/security/output-encoder.js +295 -0
- package/dist/security/output-encoder.js.map +1 -0
- package/dist/security/prompt-injection-guard.d.ts +59 -0
- package/dist/security/prompt-injection-guard.d.ts.map +1 -0
- package/dist/security/prompt-injection-guard.js +249 -0
- package/dist/security/prompt-injection-guard.js.map +1 -0
- package/dist/security/sanitisation.d.ts +67 -0
- package/dist/security/sanitisation.d.ts.map +1 -0
- package/dist/security/sanitisation.js +398 -0
- package/dist/security/sanitisation.js.map +1 -0
- package/dist/security/security-service.d.ts +103 -0
- package/dist/security/security-service.d.ts.map +1 -0
- package/dist/security/security-service.js +303 -0
- package/dist/security/security-service.js.map +1 -0
- package/dist/security-config.d.ts +45 -0
- package/dist/security-config.d.ts.map +1 -0
- package/dist/security-config.js +63 -0
- package/dist/security-config.js.map +1 -0
- package/dist/system/function-list.d.ts +61 -0
- package/dist/system/function-list.d.ts.map +1 -0
- package/dist/system/function-list.js +111 -0
- package/dist/system/function-list.js.map +1 -0
- package/dist/system/function-registry.d.ts +23 -0
- package/dist/system/function-registry.d.ts.map +1 -0
- package/dist/system/function-registry.js +136 -0
- package/dist/system/function-registry.js.map +1 -0
- package/dist/system/health-check.d.ts +33 -0
- package/dist/system/health-check.d.ts.map +1 -0
- package/dist/system/health-check.js +98 -0
- package/dist/system/health-check.js.map +1 -0
- package/dist/system/path-resolver.d.ts +55 -0
- package/dist/system/path-resolver.d.ts.map +1 -0
- package/dist/system/path-resolver.js +90 -0
- package/dist/system/path-resolver.js.map +1 -0
- package/dist/templates/plugin-template.d.ts +121 -0
- package/dist/templates/plugin-template.d.ts.map +1 -0
- package/dist/templates/plugin-template.js +450 -0
- package/dist/templates/plugin-template.js.map +1 -0
- package/dist/types/chunking-types.d.ts +88 -0
- package/dist/types/chunking-types.d.ts.map +1 -0
- package/dist/types/chunking-types.js +18 -0
- package/dist/types/chunking-types.js.map +1 -0
- package/dist/types/prompt-stages.d.ts +42 -0
- package/dist/types/prompt-stages.d.ts.map +1 -0
- package/dist/types/prompt-stages.js +6 -0
- package/dist/types/prompt-stages.js.map +1 -0
- package/dist/types.d.ts +46 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +6 -0
- package/dist/types.js.map +1 -0
- package/dist/utils/css-parser.d.ts +26 -0
- package/dist/utils/css-parser.d.ts.map +1 -0
- package/dist/utils/css-parser.js +117 -0
- package/dist/utils/css-parser.js.map +1 -0
- package/dist/utils/path-resolver.d.ts +13 -0
- package/dist/utils/path-resolver.d.ts.map +1 -0
- package/dist/utils/path-resolver.js +78 -0
- package/dist/utils/path-resolver.js.map +1 -0
- package/dist/utils/plugin-utilities.d.ts +171 -0
- package/dist/utils/plugin-utilities.d.ts.map +1 -0
- package/dist/utils/plugin-utilities.js +221 -0
- package/dist/utils/plugin-utilities.js.map +1 -0
- package/dist/utils/streamHandler.d.ts +3 -0
- package/dist/utils/streamHandler.d.ts.map +1 -0
- package/dist/utils/streamHandler.js +137 -0
- package/dist/utils/streamHandler.js.map +1 -0
- package/dist/validation/output-validator.d.ts +136 -0
- package/dist/validation/output-validator.d.ts.map +1 -0
- package/dist/validation/output-validator.js +262 -0
- package/dist/validation/output-validator.js.map +1 -0
- package/dist/validation/response-factory.d.ts +44 -0
- package/dist/validation/response-factory.d.ts.map +1 -0
- package/dist/validation/response-factory.js +202 -0
- package/dist/validation/response-factory.js.map +1 -0
- package/dist/validation/schemas.d.ts +519 -0
- package/dist/validation/schemas.d.ts.map +1 -0
- package/dist/validation/schemas.js +6 -0
- package/dist/validation/schemas.js.map +1 -0
- package/package.json +72 -0
package/dist/types.d.ts
ADDED
|
@@ -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 @@
|
|
|
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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"}
|