eslint-plugin-llm-core-mcp 0.26.0 → 0.27.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/README.md +31 -3
- package/dist/server.d.ts +1 -0
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +4 -1
- package/dist/server.js.map +1 -1
- package/dist/tools/lint-file.d.ts +6 -0
- package/dist/tools/lint-file.d.ts.map +1 -1
- package/dist/tools/lint-file.js +103 -9
- package/dist/tools/lint-file.js.map +1 -1
- package/package.json +3 -3
package/README.md
CHANGED
|
@@ -27,9 +27,37 @@ Register the server with an MCP-capable client using `npx`:
|
|
|
27
27
|
}
|
|
28
28
|
```
|
|
29
29
|
|
|
30
|
-
`lint_file` uses the project ESLint configuration it discovers from the
|
|
31
|
-
path.
|
|
32
|
-
|
|
30
|
+
`lint_file` first uses the project ESLint configuration it discovers from the
|
|
31
|
+
target path. Project configuration always takes precedence, and project-config
|
|
32
|
+
findings are labeled with `source: "project-config"`.
|
|
33
|
+
|
|
34
|
+
## Optional Zero-Config Fallback
|
|
35
|
+
|
|
36
|
+
Repos without an ESLint config can opt in to a transient fallback config:
|
|
37
|
+
|
|
38
|
+
```json
|
|
39
|
+
{
|
|
40
|
+
"mcpServers": {
|
|
41
|
+
"llm-core": {
|
|
42
|
+
"command": "npx",
|
|
43
|
+
"args": ["-y", "eslint-plugin-llm-core-mcp"],
|
|
44
|
+
"env": {
|
|
45
|
+
"LLM_CORE_MCP_ENABLE_FALLBACK": "1"
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
Fallback mode only runs when no project ESLint config is discoverable. It uses
|
|
53
|
+
the bundled `eslint-plugin-llm-core` recommended config and TypeScript parser,
|
|
54
|
+
returns findings labeled with `source: "fallback"`, and remains read-only: it
|
|
55
|
+
does not write files, create config files, enable autofix, or create an ESLint
|
|
56
|
+
cache.
|
|
57
|
+
|
|
58
|
+
Tradeoff: fallback findings may include rules the target project has not opted
|
|
59
|
+
into. Install and configure `eslint-plugin-llm-core` in the project when you need
|
|
60
|
+
findings to match CI/editor lint exactly.
|
|
33
61
|
|
|
34
62
|
## Manual Smoke Check
|
|
35
63
|
|
package/dist/server.d.ts
CHANGED
|
@@ -3,4 +3,5 @@ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
|
3
3
|
export declare const server: McpServer;
|
|
4
4
|
export declare function startServer(): Promise<void>;
|
|
5
5
|
export declare function isDirectRun(entryPoint?: string, moduleUrl?: string): boolean;
|
|
6
|
+
export declare function isFallbackEnabledFromEnv(env?: Record<string, string | undefined>): boolean;
|
|
6
7
|
//# sourceMappingURL=server.d.ts.map
|
package/dist/server.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAcpE,eAAO,MAAM,MAAM,WAGjB,CAAC;AASH,wBAAsB,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC,CAGjD;AAUD,wBAAgB,WAAW,CACzB,UAAU,SAAkB,EAC5B,SAAS,SAAkB,GAC1B,OAAO,CAST"}
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAcpE,eAAO,MAAM,MAAM,WAGjB,CAAC;AASH,wBAAsB,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC,CAGjD;AAUD,wBAAgB,WAAW,CACzB,UAAU,SAAkB,EAC5B,SAAS,SAAkB,GAC1B,OAAO,CAST;AAED,wBAAgB,wBAAwB,CACtC,GAAG,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAe,GACpD,OAAO,CAET"}
|
package/dist/server.js
CHANGED
|
@@ -16,7 +16,7 @@ export const server = new McpServer({
|
|
|
16
16
|
});
|
|
17
17
|
// Tools
|
|
18
18
|
registerGetActiveInstructions(server);
|
|
19
|
-
registerLintFile(server);
|
|
19
|
+
registerLintFile(server, { fallbackEnabled: isFallbackEnabledFromEnv() });
|
|
20
20
|
// Resources
|
|
21
21
|
registerRuleResources(server);
|
|
22
22
|
export async function startServer() {
|
|
@@ -38,6 +38,9 @@ export function isDirectRun(entryPoint = process.argv[1], moduleUrl = import.met
|
|
|
38
38
|
return (realPathOrResolved(entryPoint) ===
|
|
39
39
|
realPathOrResolved(fileURLToPath(moduleUrl)));
|
|
40
40
|
}
|
|
41
|
+
export function isFallbackEnabledFromEnv(env = process.env) {
|
|
42
|
+
return env.LLM_CORE_MCP_ENABLE_FALLBACK === "1";
|
|
43
|
+
}
|
|
41
44
|
// Only start when run directly (not imported in tests).
|
|
42
45
|
if (isDirectRun()) {
|
|
43
46
|
startServer().catch((err) => {
|
package/dist/server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,6BAA6B,EAAE,MAAM,oCAAoC,CAAC;AACnF,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAExD,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAE/C,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,iBAAiB,CAAwB,CAAC;AAEtE,MAAM,CAAC,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC;IAClC,IAAI,EAAE,4BAA4B;IAClC,OAAO;CACR,CAAC,CAAC;AAEH,QAAQ;AACR,6BAA6B,CAAC,MAAM,CAAC,CAAC;AACtC,gBAAgB,CAAC,MAAM,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,6BAA6B,EAAE,MAAM,oCAAoC,CAAC;AACnF,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAExD,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAE/C,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,iBAAiB,CAAwB,CAAC;AAEtE,MAAM,CAAC,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC;IAClC,IAAI,EAAE,4BAA4B;IAClC,OAAO;CACR,CAAC,CAAC;AAEH,QAAQ;AACR,6BAA6B,CAAC,MAAM,CAAC,CAAC;AACtC,gBAAgB,CAAC,MAAM,EAAE,EAAE,eAAe,EAAE,wBAAwB,EAAE,EAAE,CAAC,CAAC;AAE1E,YAAY;AACZ,qBAAqB,CAAC,MAAM,CAAC,CAAC;AAE9B,MAAM,CAAC,KAAK,UAAU,WAAW;IAC/B,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;IAC7C,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;AAClC,CAAC;AAED,SAAS,kBAAkB,CAAC,QAAgB;IAC1C,IAAI,CAAC;QACH,OAAO,YAAY,CAAC,QAAQ,CAAC,CAAC;IAChC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAChC,CAAC;AACH,CAAC;AAED,MAAM,UAAU,WAAW,CACzB,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAC5B,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG;IAE3B,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,CACL,kBAAkB,CAAC,UAAU,CAAC;QAC9B,kBAAkB,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,CAC7C,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,wBAAwB,CACtC,MAA0C,OAAO,CAAC,GAAG;IAErD,OAAO,GAAG,CAAC,4BAA4B,KAAK,GAAG,CAAC;AAClD,CAAC;AAED,wDAAwD;AACxD,IAAI,WAAW,EAAE,EAAE,CAAC;IAClB,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC,GAAY,EAAE,EAAE;QACnC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACnB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -13,6 +13,12 @@ export interface LintFileOptions {
|
|
|
13
13
|
* {@link DEFAULT_MAX_FILES}.
|
|
14
14
|
*/
|
|
15
15
|
maxFiles?: number;
|
|
16
|
+
/**
|
|
17
|
+
* Enables a transient zero-config fallback when no project ESLint config is
|
|
18
|
+
* discoverable. Disabled by default so v1 project-config behavior remains the
|
|
19
|
+
* default contract.
|
|
20
|
+
*/
|
|
21
|
+
fallbackEnabled?: boolean;
|
|
16
22
|
}
|
|
17
23
|
export declare function registerLintFile(server: McpServer, options?: LintFileOptions): void;
|
|
18
24
|
//# sourceMappingURL=lint-file.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lint-file.d.ts","sourceRoot":"","sources":["../../src/tools/lint-file.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"lint-file.d.ts","sourceRoot":"","sources":["../../src/tools/lint-file.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AA8GzE;;;;GAIG;AACH,MAAM,WAAW,eAAe;IAC9B,gEAAgE;IAChE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;;OAIG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AA4MD,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,SAAS,EACjB,OAAO,GAAE,eAAoB,GAC5B,IAAI,CA8HN"}
|
package/dist/tools/lint-file.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import path from "node:path";
|
|
2
2
|
import { readdir, realpath, stat } from "node:fs/promises";
|
|
3
3
|
import { loadESLint } from "eslint";
|
|
4
|
+
import tsParser from "@typescript-eslint/parser";
|
|
4
5
|
import { z } from "zod";
|
|
5
6
|
// ESM importing the CJS plugin's ./instructions subpath via interop.
|
|
6
7
|
import { getRuleInstruction } from "eslint-plugin-llm-core/instructions";
|
|
@@ -30,9 +31,9 @@ const SKIPPED_DIRECTORIES = new Set([
|
|
|
30
31
|
const NO_CONFIG_MESSAGE = [
|
|
31
32
|
"No ESLint configuration was discovered for this path.",
|
|
32
33
|
"",
|
|
33
|
-
"lint_file lints using your project's own ESLint config
|
|
34
|
-
"
|
|
35
|
-
"
|
|
34
|
+
"lint_file lints using your project's own ESLint config by default. To use",
|
|
35
|
+
"project-config findings, install and configure eslint-plugin-llm-core in",
|
|
36
|
+
"your project:",
|
|
36
37
|
"",
|
|
37
38
|
" npm install --save-dev eslint eslint-plugin-llm-core",
|
|
38
39
|
"",
|
|
@@ -40,6 +41,9 @@ const NO_CONFIG_MESSAGE = [
|
|
|
40
41
|
"",
|
|
41
42
|
' import llmCore from "eslint-plugin-llm-core";',
|
|
42
43
|
" export default [...llmCore.configs.recommended];",
|
|
44
|
+
"",
|
|
45
|
+
"Alternatively, start the MCP server with LLM_CORE_MCP_ENABLE_FALLBACK=1 to",
|
|
46
|
+
'enable read-only fallback findings labeled with source: "fallback".',
|
|
43
47
|
].join("\n");
|
|
44
48
|
function isNoConfigError(error) {
|
|
45
49
|
const maybeEslintError = error;
|
|
@@ -88,12 +92,74 @@ const inputSchema = {
|
|
|
88
92
|
.string()
|
|
89
93
|
.describe("Path to a file or directory to lint, within the project root"),
|
|
90
94
|
};
|
|
91
|
-
async function
|
|
95
|
+
async function newFlatESLint(opts) {
|
|
92
96
|
// ESLint's exported types do not surface the flat-config overload; the cast
|
|
93
97
|
// matches the runtime shape (mirrors src/instructions/config-resolver.ts).
|
|
94
98
|
const loadFlatESLint = loadESLint;
|
|
95
99
|
const ESLint = await loadFlatESLint({ useFlatConfig: true });
|
|
96
|
-
return new ESLint(
|
|
100
|
+
return new ESLint(opts);
|
|
101
|
+
}
|
|
102
|
+
async function createFlatESLint(cwd) {
|
|
103
|
+
return newFlatESLint({ cwd });
|
|
104
|
+
}
|
|
105
|
+
async function createFallbackESLint(cwd) {
|
|
106
|
+
return newFlatESLint({
|
|
107
|
+
cwd,
|
|
108
|
+
overrideConfigFile: true,
|
|
109
|
+
overrideConfig: createFallbackConfig(),
|
|
110
|
+
});
|
|
111
|
+
}
|
|
112
|
+
function createFallbackConfig() {
|
|
113
|
+
const llmPlugin = plugin;
|
|
114
|
+
const recommended = llmPlugin.configs.recommended ?? [];
|
|
115
|
+
const recommendedRules = recommended[0]?.rules;
|
|
116
|
+
return [
|
|
117
|
+
{
|
|
118
|
+
ignores: [
|
|
119
|
+
"**/node_modules/**",
|
|
120
|
+
"**/.git/**",
|
|
121
|
+
"**/dist/**",
|
|
122
|
+
"**/coverage/**",
|
|
123
|
+
],
|
|
124
|
+
},
|
|
125
|
+
{
|
|
126
|
+
files: ["**/*.ts", "**/*.tsx"],
|
|
127
|
+
languageOptions: {
|
|
128
|
+
parser: tsParser,
|
|
129
|
+
parserOptions: {
|
|
130
|
+
ecmaVersion: "latest",
|
|
131
|
+
sourceType: "module",
|
|
132
|
+
},
|
|
133
|
+
},
|
|
134
|
+
},
|
|
135
|
+
{
|
|
136
|
+
files: ["**/*.js", "**/*.mjs"],
|
|
137
|
+
languageOptions: {
|
|
138
|
+
ecmaVersion: "latest",
|
|
139
|
+
sourceType: "module",
|
|
140
|
+
},
|
|
141
|
+
},
|
|
142
|
+
{
|
|
143
|
+
files: ["**/*.jsx"],
|
|
144
|
+
plugins: { "llm-core": plugin },
|
|
145
|
+
rules: recommendedRules,
|
|
146
|
+
languageOptions: {
|
|
147
|
+
ecmaVersion: "latest",
|
|
148
|
+
sourceType: "module",
|
|
149
|
+
parserOptions: {
|
|
150
|
+
ecmaFeatures: { jsx: true },
|
|
151
|
+
},
|
|
152
|
+
},
|
|
153
|
+
},
|
|
154
|
+
{
|
|
155
|
+
files: ["**/*.cjs"],
|
|
156
|
+
languageOptions: {
|
|
157
|
+
ecmaVersion: "latest",
|
|
158
|
+
sourceType: "commonjs",
|
|
159
|
+
},
|
|
160
|
+
},
|
|
161
|
+
...recommended,
|
|
162
|
+
];
|
|
97
163
|
}
|
|
98
164
|
function isPlainObject(value) {
|
|
99
165
|
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
@@ -119,7 +185,7 @@ function resolveRuleOptions(ruleId, configEntry) {
|
|
|
119
185
|
}
|
|
120
186
|
return { ...defaults };
|
|
121
187
|
}
|
|
122
|
-
async function toViolations(results, eslint) {
|
|
188
|
+
async function toViolations(results, eslint, source) {
|
|
123
189
|
const violations = [];
|
|
124
190
|
for (const result of results) {
|
|
125
191
|
const hasLlmCore = result.messages.some((m) => m.ruleId?.startsWith(LLM_CORE_PREFIX));
|
|
@@ -141,6 +207,7 @@ async function toViolations(results, eslint) {
|
|
|
141
207
|
severity: message.severity,
|
|
142
208
|
message: message.message,
|
|
143
209
|
instruction: getRuleInstruction(ruleId, options),
|
|
210
|
+
source,
|
|
144
211
|
});
|
|
145
212
|
}
|
|
146
213
|
}
|
|
@@ -149,10 +216,12 @@ async function toViolations(results, eslint) {
|
|
|
149
216
|
export function registerLintFile(server, options = {}) {
|
|
150
217
|
const projectRoot = path.resolve(options.projectRoot ?? process.cwd());
|
|
151
218
|
const maxFiles = options.maxFiles ?? DEFAULT_MAX_FILES;
|
|
219
|
+
const fallbackEnabled = options.fallbackEnabled === true;
|
|
152
220
|
server.registerTool("lint_file", {
|
|
153
221
|
title: "Lint a File for llm-core Violations",
|
|
154
|
-
description: "Lints a file (or directory) with the project's own ESLint config
|
|
155
|
-
"
|
|
222
|
+
description: "Lints a file (or directory) with the project's own ESLint config, " +
|
|
223
|
+
"or the opt-in read-only fallback when no config is found, and returns " +
|
|
224
|
+
"each eslint-plugin-llm-core violation with its what/why/how-to-fix " +
|
|
156
225
|
"instruction attached. Call after editing a file to self-correct.",
|
|
157
226
|
inputSchema,
|
|
158
227
|
}, async ({ path: targetPath }) => {
|
|
@@ -208,14 +277,39 @@ export function registerLintFile(server, options = {}) {
|
|
|
208
277
|
}
|
|
209
278
|
catch (error) {
|
|
210
279
|
if (isNoConfigError(error)) {
|
|
280
|
+
if (fallbackEnabled) {
|
|
281
|
+
const fallbackEslint = await createFallbackESLint(projectRoot);
|
|
282
|
+
const fallbackResults = await fallbackEslint.lintFiles([
|
|
283
|
+
absoluteTarget,
|
|
284
|
+
]);
|
|
285
|
+
const source = "fallback";
|
|
286
|
+
const violations = await toViolations(fallbackResults, fallbackEslint, source);
|
|
287
|
+
return {
|
|
288
|
+
structuredContent: {
|
|
289
|
+
source,
|
|
290
|
+
violationCount: violations.length,
|
|
291
|
+
},
|
|
292
|
+
content: [
|
|
293
|
+
{
|
|
294
|
+
type: "text",
|
|
295
|
+
text: JSON.stringify(violations, null, 2),
|
|
296
|
+
},
|
|
297
|
+
],
|
|
298
|
+
};
|
|
299
|
+
}
|
|
211
300
|
return {
|
|
212
301
|
content: [{ type: "text", text: NO_CONFIG_MESSAGE }],
|
|
213
302
|
};
|
|
214
303
|
}
|
|
215
304
|
throw error;
|
|
216
305
|
}
|
|
217
|
-
const
|
|
306
|
+
const source = "project-config";
|
|
307
|
+
const violations = await toViolations(results, eslint, source);
|
|
218
308
|
return {
|
|
309
|
+
structuredContent: {
|
|
310
|
+
source,
|
|
311
|
+
violationCount: violations.length,
|
|
312
|
+
},
|
|
219
313
|
content: [
|
|
220
314
|
{ type: "text", text: JSON.stringify(violations, null, 2) },
|
|
221
315
|
],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lint-file.js","sourceRoot":"","sources":["../../src/tools/lint-file.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AACpC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,qEAAqE;AACrE,OAAO,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;AACzE,+EAA+E;AAC/E,gFAAgF;AAChF,uEAAuE;AACvE,OAAO,MAAM,MAAM,wBAAwB,CAAC;AAE5C,MAAM,eAAe,GAAG,WAAW,CAAC;AAEpC,+EAA+E;AAC/E,MAAM,iBAAiB,GAAG,GAAG,CAAC;AAE9B,+EAA+E;AAC/E,MAAM,mBAAmB,GAAG,IAAI,GAAG,CAAC;IAClC,KAAK;IACL,MAAM;IACN,KAAK;IACL,MAAM;IACN,MAAM;IACN,MAAM;CACP,CAAC,CAAC;AAEH,gFAAgF;AAChF,MAAM,mBAAmB,GAAG,IAAI,GAAG,CAAC;IAClC,cAAc;IACd,MAAM;IACN,MAAM;IACN,UAAU;CACX,CAAC,CAAC;AAEH,MAAM,iBAAiB,GAAG;IACxB,uDAAuD;IACvD,EAAE;IACF,2EAA2E;IAC3E,
|
|
1
|
+
{"version":3,"file":"lint-file.js","sourceRoot":"","sources":["../../src/tools/lint-file.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "eslint-plugin-llm-core-mcp",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.27.0",
|
|
4
4
|
"description": "MCP server for just-in-time linting guidance from eslint-plugin-llm-core",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
@@ -42,11 +42,11 @@
|
|
|
42
42
|
"@modelcontextprotocol/sdk": "^1.29.0",
|
|
43
43
|
"@typescript-eslint/parser": "^8.0.0",
|
|
44
44
|
"eslint": "^10.1.0",
|
|
45
|
-
"eslint-plugin-llm-core": "0.
|
|
45
|
+
"eslint-plugin-llm-core": "0.27.0",
|
|
46
46
|
"zod": "^3.23.0"
|
|
47
47
|
},
|
|
48
48
|
"devDependencies": {
|
|
49
|
-
"@types/node": "^
|
|
49
|
+
"@types/node": "^26.0.1",
|
|
50
50
|
"tsx": "^4.21.0",
|
|
51
51
|
"typescript": "^6.0.2",
|
|
52
52
|
"vitest": "^4.1.2"
|