camouf 0.8.0 → 0.10.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 +8 -3
- package/dist/cli/commands/init.js +3 -3
- package/dist/cli/version.d.ts +1 -1
- package/dist/cli/version.d.ts.map +1 -1
- package/dist/cli/version.js +1 -1
- package/dist/cli/version.js.map +1 -1
- package/dist/core/rules/builtin/async-discrepancies.rule.d.ts +63 -0
- package/dist/core/rules/builtin/async-discrepancies.rule.d.ts.map +1 -0
- package/dist/core/rules/builtin/async-discrepancies.rule.js +452 -0
- package/dist/core/rules/builtin/async-discrepancies.rule.js.map +1 -0
- package/dist/core/rules/rule-engine.d.ts.map +1 -1
- package/dist/core/rules/rule-engine.js +2 -0
- package/dist/core/rules/rule-engine.js.map +1 -1
- package/dist/mcp/index.js +1 -1
- package/dist/mcp/tools/fix.d.ts.map +1 -1
- package/dist/mcp/tools/fix.js +19 -0
- package/dist/mcp/tools/fix.js.map +1 -1
- package/dist/testing/index.js +1 -1
- package/dist/testing/index.js.map +1 -1
- package/dist/types/config.types.d.ts +2 -0
- package/dist/types/config.types.d.ts.map +1 -1
- package/dist/types/config.types.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -106,7 +106,7 @@ npx camouf fix --id sig-001 # Fix a specific mismatch
|
|
|
106
106
|
|
|
107
107
|
## Features
|
|
108
108
|
|
|
109
|
-
- **
|
|
109
|
+
- **19 Built-in Rules**: AI-specific and architecture validation rules
|
|
110
110
|
- **Function/Field Matching**: Fuzzy matching to detect AI naming drift
|
|
111
111
|
- **Circular Dependency Detection**: Find and break dependency cycles
|
|
112
112
|
- **Real-time Watch Mode**: Continuous architecture monitoring
|
|
@@ -157,7 +157,7 @@ Running `npx camouf` or `npx camouf help` displays the full interactive help:
|
|
|
157
157
|
██║ ███████║██╔████╔██║██║ ██║██║ ██║█████╗
|
|
158
158
|
██║ ██╔══██║██║╚██╔╝██║██║ ██║██║ ██║██╔══╝
|
|
159
159
|
╚██████╗██║ ██║██║ ╚═╝ ██║╚██████╔╝╚██████╔╝██║
|
|
160
|
-
╚═════╝╚═╝ ╚═╝╚═╝ ╚═╝ ╚═════╝ ╚═════╝ ╚═╝ v0.
|
|
160
|
+
╚═════╝╚═╝ ╚═╝╚═╝ ╚═╝ ╚═════╝ ╚═════╝ ╚═╝ v0.10.0
|
|
161
161
|
|
|
162
162
|
Architecture guardrails for AI-generated code
|
|
163
163
|
|
|
@@ -234,7 +234,7 @@ Running `npx camouf` or `npx camouf help` displays the full interactive help:
|
|
|
234
234
|
|
|
235
235
|
AI Safety: ai-hallucinated-imports, inconsistent-casing,
|
|
236
236
|
orphaned-functions, phantom-type-references,
|
|
237
|
-
context-drift-patterns
|
|
237
|
+
context-drift-patterns, async-discrepancies
|
|
238
238
|
Architecture: layer-dependencies, circular-dependencies,
|
|
239
239
|
function-signature-matching, contract-mismatch
|
|
240
240
|
Code Quality: type-safety, performance-antipatterns,
|
|
@@ -306,6 +306,8 @@ npm install --save-dev camouf-plugin-react
|
|
|
306
306
|
|
|
307
307
|
Camouf exposes an **MCP (Model Context Protocol) server** that allows AI agents like Claude, Cursor, and Copilot to validate their own code **before proposing it to you**.
|
|
308
308
|
|
|
309
|
+
> **Full tutorial:** [Using Camouf with AI Agents (MCP Tutorial)](docs/mcp-agent-tutorial.md) -- setup, real-time streaming, multi-agent collaboration, and the validate-fix-revalidate loop.
|
|
310
|
+
|
|
309
311
|
### Start MCP Server
|
|
310
312
|
|
|
311
313
|
```bash
|
|
@@ -370,7 +372,9 @@ This creates a **feedback loop** where AI catches its own mistakes before you se
|
|
|
370
372
|
- [Getting Started](docs/getting-started.md)
|
|
371
373
|
- [Creating Plugins](docs/creating-plugins.md)
|
|
372
374
|
- [AI Agent Challenges](docs/ai-agent-challenges.md)
|
|
375
|
+
- [MCP Agent Tutorial](docs/mcp-agent-tutorial.md)
|
|
373
376
|
- [Configuring Rules](docs/configuring-rules.md)
|
|
377
|
+
- [Async Discrepancies Guide](docs/async-discrepancies.md)
|
|
374
378
|
- [CI/CD Integration](docs/ci-cd-integration.md)
|
|
375
379
|
- [Changelog](CHANGELOG.md)
|
|
376
380
|
|
|
@@ -492,6 +496,7 @@ These rules catch mistakes that AI coding assistants commonly make:
|
|
|
492
496
|
| `phantom-type-references` | Catches references to types that don't exist | `warn` |
|
|
493
497
|
| `inconsistent-casing` | Detects mixing of camelCase/snake_case in the same codebase | `warn` |
|
|
494
498
|
| `orphaned-functions` | Finds functions declared but never called anywhere | `warn` |
|
|
499
|
+
| `async-discrepancies` | Detects async/await misuse: floating promises, unnecessary async, mixed patterns | `warn` |
|
|
495
500
|
|
|
496
501
|
> **See examples:** Check `test-fixtures/ai-errors/` in the repository for concrete examples of what each rule catches.
|
|
497
502
|
|
|
@@ -343,10 +343,10 @@ async function scaffoldPlugin(options) {
|
|
|
343
343
|
keywords: ['camouf', 'camouf-plugin', 'architecture', 'static-analysis'],
|
|
344
344
|
license: 'MIT',
|
|
345
345
|
peerDependencies: {
|
|
346
|
-
camouf: '>=0.
|
|
346
|
+
camouf: '>=0.9.0',
|
|
347
347
|
},
|
|
348
348
|
devDependencies: {
|
|
349
|
-
camouf: '^0.
|
|
349
|
+
camouf: '^0.9.0',
|
|
350
350
|
typescript: '^5.3.0',
|
|
351
351
|
},
|
|
352
352
|
files: ['dist', 'README.md'],
|
|
@@ -385,7 +385,7 @@ const plugin: CamoufPlugin = {
|
|
|
385
385
|
version: '0.1.0',
|
|
386
386
|
description: '${pluginDescription}',
|
|
387
387
|
author: '',
|
|
388
|
-
camoufVersion: '>=0.
|
|
388
|
+
camoufVersion: '>=0.9.0',
|
|
389
389
|
},
|
|
390
390
|
rules: [new ${className}()],
|
|
391
391
|
};
|
package/dist/cli/version.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Version and metadata for Camouf CLI
|
|
3
3
|
*/
|
|
4
|
-
export declare const version = "0.
|
|
4
|
+
export declare const version = "0.10.0";
|
|
5
5
|
export declare const name = "camouf";
|
|
6
6
|
export declare const description = "Architecture guardrails for AI-generated code";
|
|
7
7
|
export declare const metadata: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../../src/cli/version.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,eAAO,MAAM,OAAO,
|
|
1
|
+
{"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../../src/cli/version.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,eAAO,MAAM,OAAO,WAAW,CAAC;AAChC,eAAO,MAAM,IAAI,WAAW,CAAC;AAC7B,eAAO,MAAM,WAAW,kDAAkD,CAAC;AAE3E,eAAO,MAAM,QAAQ;;;;;;;;CAQpB,CAAC"}
|
package/dist/cli/version.js
CHANGED
package/dist/cli/version.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/cli/version.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,CAAC,MAAM,OAAO,GAAG,
|
|
1
|
+
{"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/cli/version.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,CAAC,MAAM,OAAO,GAAG,QAAQ,CAAC;AAChC,MAAM,CAAC,MAAM,IAAI,GAAG,QAAQ,CAAC;AAC7B,MAAM,CAAC,MAAM,WAAW,GAAG,+CAA+C,CAAC;AAE3E,MAAM,CAAC,MAAM,QAAQ,GAAG;IACtB,IAAI;IACJ,OAAO;IACP,WAAW;IACX,QAAQ,EAAE,oCAAoC;IAC9C,UAAU,EAAE,oCAAoC;IAChD,MAAM,EAAE,SAAS;IACjB,OAAO,EAAE,YAAY;CACtB,CAAC"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Async Discrepancies Rule
|
|
3
|
+
*
|
|
4
|
+
* Detects async/await misuse patterns commonly introduced by AI coding assistants.
|
|
5
|
+
* These discrepancies arise when AI agents lose context about whether a function
|
|
6
|
+
* is synchronous or asynchronous, leading to subtle runtime bugs.
|
|
7
|
+
*
|
|
8
|
+
* Detections:
|
|
9
|
+
* 1. Missing `await` on async function calls
|
|
10
|
+
* 2. `async` functions that never use `await` (unnecessary async)
|
|
11
|
+
* 3. Async/sync signature drift between declaration and usage
|
|
12
|
+
* 4. Floating promises (async calls without await or .then/.catch)
|
|
13
|
+
* 5. `await` on non-async/non-promise expressions
|
|
14
|
+
* 6. Mixed async patterns (mixing callbacks with async/await)
|
|
15
|
+
*/
|
|
16
|
+
import { IRule, RuleContext, RuleConfig, RuleResult, RuleCategory, RuleDocumentation } from '../rule.interface.js';
|
|
17
|
+
interface AsyncDiscrepanciesConfig extends RuleConfig {
|
|
18
|
+
/** Check for missing await on async calls */
|
|
19
|
+
checkMissingAwait?: boolean;
|
|
20
|
+
/** Check for unnecessary async keywords */
|
|
21
|
+
checkUnnecessaryAsync?: boolean;
|
|
22
|
+
/** Check for floating promises (unawaited async calls) */
|
|
23
|
+
checkFloatingPromises?: boolean;
|
|
24
|
+
/** Check for await on non-promise values */
|
|
25
|
+
checkAwaitNonPromise?: boolean;
|
|
26
|
+
/** Check for mixed async patterns (callbacks + async/await) */
|
|
27
|
+
checkMixedPatterns?: boolean;
|
|
28
|
+
/** File extensions to analyze */
|
|
29
|
+
includeExtensions?: string[];
|
|
30
|
+
/** Ignore patterns for function names */
|
|
31
|
+
ignorePatterns?: string[];
|
|
32
|
+
}
|
|
33
|
+
export declare class AsyncDiscrepanciesRule implements IRule {
|
|
34
|
+
readonly id = "async-discrepancies";
|
|
35
|
+
readonly name = "Async Discrepancies Detection";
|
|
36
|
+
readonly description = "Detects async/await misuse patterns commonly introduced by AI coding assistants";
|
|
37
|
+
readonly severity: "warning";
|
|
38
|
+
readonly tags: string[];
|
|
39
|
+
readonly category: RuleCategory;
|
|
40
|
+
readonly supportsIncremental = true;
|
|
41
|
+
readonly defaultSeverity: "warning";
|
|
42
|
+
private config;
|
|
43
|
+
private violationCounter;
|
|
44
|
+
/** Known async functions discovered across the project */
|
|
45
|
+
private knownAsyncFunctions;
|
|
46
|
+
configure(options: Partial<AsyncDiscrepanciesConfig>): void;
|
|
47
|
+
check(context: RuleContext): Promise<RuleResult>;
|
|
48
|
+
checkFile(filePath: string, context: RuleContext): Promise<RuleResult>;
|
|
49
|
+
getDocumentation(): RuleDocumentation;
|
|
50
|
+
private collectAsyncFunctions;
|
|
51
|
+
private buildAsyncFunctionInfo;
|
|
52
|
+
private checkUnnecessaryAsyncFunctions;
|
|
53
|
+
private checkFloatingPromisesAndMissingAwait;
|
|
54
|
+
private checkAwaitOnNonPromise;
|
|
55
|
+
private checkMixedAsyncPatterns;
|
|
56
|
+
private reportMixedPatterns;
|
|
57
|
+
private shouldAnalyzeFile;
|
|
58
|
+
private shouldIgnoreFunction;
|
|
59
|
+
private escapeRegex;
|
|
60
|
+
private createViolation;
|
|
61
|
+
}
|
|
62
|
+
export {};
|
|
63
|
+
//# sourceMappingURL=async-discrepancies.rule.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"async-discrepancies.rule.d.ts","sourceRoot":"","sources":["../../../../src/core/rules/builtin/async-discrepancies.rule.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,UAAU,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAGnH,UAAU,wBAAyB,SAAQ,UAAU;IACnD,6CAA6C;IAC7C,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,2CAA2C;IAC3C,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,0DAA0D;IAC1D,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,4CAA4C;IAC5C,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,+DAA+D;IAC/D,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,iCAAiC;IACjC,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC7B,yCAAyC;IACzC,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;CAC3B;AAuBD,qBAAa,sBAAuB,YAAW,KAAK;IAClD,QAAQ,CAAC,EAAE,yBAAyB;IACpC,QAAQ,CAAC,IAAI,mCAAmC;IAChD,QAAQ,CAAC,WAAW,qFAAqF;IACzG,QAAQ,CAAC,QAAQ,EAAG,SAAS,CAAU;IACvC,QAAQ,CAAC,IAAI,WAAqD;IAClE,QAAQ,CAAC,QAAQ,EAAE,YAAY,CAAiB;IAChD,QAAQ,CAAC,mBAAmB,QAAQ;IACpC,QAAQ,CAAC,eAAe,EAAG,SAAS,CAAU;IAE9C,OAAO,CAAC,MAAM,CAiBZ;IAEF,OAAO,CAAC,gBAAgB,CAAK;IAE7B,0DAA0D;IAC1D,OAAO,CAAC,mBAAmB,CAAwC;IAEnE,SAAS,CAAC,OAAO,EAAE,OAAO,CAAC,wBAAwB,CAAC,GAAG,IAAI;IAIrD,KAAK,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC;IA4ChD,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC;IAK5E,gBAAgB,IAAI,iBAAiB;IAuErC,OAAO,CAAC,qBAAqB;IAuC7B,OAAO,CAAC,sBAAsB;IA4D9B,OAAO,CAAC,8BAA8B;IAwBtC,OAAO,CAAC,oCAAoC;IA0G5C,OAAO,CAAC,sBAAsB;IA2C9B,OAAO,CAAC,uBAAuB;IAiE/B,OAAO,CAAC,mBAAmB;IAiC3B,OAAO,CAAC,iBAAiB;IAKzB,OAAO,CAAC,oBAAoB;IAK5B,OAAO,CAAC,WAAW;IAInB,OAAO,CAAC,eAAe;CAkBxB"}
|
|
@@ -0,0 +1,452 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Async Discrepancies Rule
|
|
3
|
+
*
|
|
4
|
+
* Detects async/await misuse patterns commonly introduced by AI coding assistants.
|
|
5
|
+
* These discrepancies arise when AI agents lose context about whether a function
|
|
6
|
+
* is synchronous or asynchronous, leading to subtle runtime bugs.
|
|
7
|
+
*
|
|
8
|
+
* Detections:
|
|
9
|
+
* 1. Missing `await` on async function calls
|
|
10
|
+
* 2. `async` functions that never use `await` (unnecessary async)
|
|
11
|
+
* 3. Async/sync signature drift between declaration and usage
|
|
12
|
+
* 4. Floating promises (async calls without await or .then/.catch)
|
|
13
|
+
* 5. `await` on non-async/non-promise expressions
|
|
14
|
+
* 6. Mixed async patterns (mixing callbacks with async/await)
|
|
15
|
+
*/
|
|
16
|
+
export class AsyncDiscrepanciesRule {
|
|
17
|
+
id = 'async-discrepancies';
|
|
18
|
+
name = 'Async Discrepancies Detection';
|
|
19
|
+
description = 'Detects async/await misuse patterns commonly introduced by AI coding assistants';
|
|
20
|
+
severity = 'warning';
|
|
21
|
+
tags = ['ai-safety', 'async', 'promises', 'correctness'];
|
|
22
|
+
category = 'ai-specific';
|
|
23
|
+
supportsIncremental = true;
|
|
24
|
+
defaultSeverity = 'warning';
|
|
25
|
+
config = {
|
|
26
|
+
enabled: true,
|
|
27
|
+
severity: 'warning',
|
|
28
|
+
checkMissingAwait: true,
|
|
29
|
+
checkUnnecessaryAsync: true,
|
|
30
|
+
checkFloatingPromises: true,
|
|
31
|
+
checkAwaitNonPromise: true,
|
|
32
|
+
checkMixedPatterns: true,
|
|
33
|
+
includeExtensions: ['.ts', '.tsx', '.js', '.jsx'],
|
|
34
|
+
ignorePatterns: [
|
|
35
|
+
'^_', // Private/internal
|
|
36
|
+
'^main$', // Entry points
|
|
37
|
+
'^bootstrap$', // Bootstrap functions
|
|
38
|
+
'Middleware$', // Middleware (often async by convention)
|
|
39
|
+
'Handler$', // Handlers (often async by convention)
|
|
40
|
+
'Controller$', // Controllers
|
|
41
|
+
],
|
|
42
|
+
};
|
|
43
|
+
violationCounter = 0;
|
|
44
|
+
/** Known async functions discovered across the project */
|
|
45
|
+
knownAsyncFunctions = new Map();
|
|
46
|
+
configure(options) {
|
|
47
|
+
this.config = { ...this.config, ...options };
|
|
48
|
+
}
|
|
49
|
+
async check(context) {
|
|
50
|
+
const violations = [];
|
|
51
|
+
this.violationCounter = 0;
|
|
52
|
+
this.knownAsyncFunctions.clear();
|
|
53
|
+
const fileContents = [];
|
|
54
|
+
// First pass: collect all async function declarations
|
|
55
|
+
for (const nodeId of context.graph.nodes()) {
|
|
56
|
+
const node = context.getNodeData(nodeId);
|
|
57
|
+
if (!node)
|
|
58
|
+
continue;
|
|
59
|
+
const filePath = node.data.relativePath;
|
|
60
|
+
if (!this.shouldAnalyzeFile(filePath))
|
|
61
|
+
continue;
|
|
62
|
+
const content = context.fileContents?.get(filePath);
|
|
63
|
+
if (!content)
|
|
64
|
+
continue;
|
|
65
|
+
fileContents.push({ filePath, content });
|
|
66
|
+
this.collectAsyncFunctions(filePath, content);
|
|
67
|
+
}
|
|
68
|
+
// Second pass: detect discrepancies
|
|
69
|
+
for (const { filePath, content } of fileContents) {
|
|
70
|
+
if (this.config.checkUnnecessaryAsync) {
|
|
71
|
+
this.checkUnnecessaryAsyncFunctions(filePath, content, violations);
|
|
72
|
+
}
|
|
73
|
+
if (this.config.checkFloatingPromises || this.config.checkMissingAwait) {
|
|
74
|
+
this.checkFloatingPromisesAndMissingAwait(filePath, content, violations);
|
|
75
|
+
}
|
|
76
|
+
if (this.config.checkAwaitNonPromise) {
|
|
77
|
+
this.checkAwaitOnNonPromise(filePath, content, violations);
|
|
78
|
+
}
|
|
79
|
+
if (this.config.checkMixedPatterns) {
|
|
80
|
+
this.checkMixedAsyncPatterns(filePath, content, violations);
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
return { violations };
|
|
84
|
+
}
|
|
85
|
+
async checkFile(filePath, context) {
|
|
86
|
+
// For incremental checks, run the full check (we need cross-file context)
|
|
87
|
+
return this.check(context);
|
|
88
|
+
}
|
|
89
|
+
getDocumentation() {
|
|
90
|
+
return {
|
|
91
|
+
summary: this.description,
|
|
92
|
+
details: `This rule detects async/await discrepancies that AI coding assistants commonly introduce
|
|
93
|
+
when they lose context about function signatures. These bugs are particularly insidious because
|
|
94
|
+
they often don't cause immediate errors but lead to race conditions, unhandled promise rejections,
|
|
95
|
+
and subtle data corruption.`,
|
|
96
|
+
examples: [
|
|
97
|
+
{
|
|
98
|
+
title: 'Unnecessary async function',
|
|
99
|
+
bad: `async function getUser(id: string) {
|
|
100
|
+
return users.find(u => u.id === id); // No await needed
|
|
101
|
+
}`,
|
|
102
|
+
good: `function getUser(id: string) {
|
|
103
|
+
return users.find(u => u.id === id);
|
|
104
|
+
}`,
|
|
105
|
+
explanation: 'Function marked as async but never uses await. This wraps the return value in an unnecessary Promise.',
|
|
106
|
+
},
|
|
107
|
+
{
|
|
108
|
+
title: 'Missing await on async call',
|
|
109
|
+
bad: `async function processOrder(orderId: string) {
|
|
110
|
+
const order = getOrderById(orderId); // Missing await!
|
|
111
|
+
console.log(order.status); // order is a Promise, not the actual value
|
|
112
|
+
}`,
|
|
113
|
+
good: `async function processOrder(orderId: string) {
|
|
114
|
+
const order = await getOrderById(orderId);
|
|
115
|
+
console.log(order.status);
|
|
116
|
+
}`,
|
|
117
|
+
explanation: 'Calling an async function without await returns a Promise instead of the resolved value.',
|
|
118
|
+
},
|
|
119
|
+
{
|
|
120
|
+
title: 'Floating promise',
|
|
121
|
+
bad: `function handleRequest(req: Request) {
|
|
122
|
+
saveToDatabase(req.body); // Floating promise - errors silently swallowed
|
|
123
|
+
return { success: true };
|
|
124
|
+
}`,
|
|
125
|
+
good: `async function handleRequest(req: Request) {
|
|
126
|
+
await saveToDatabase(req.body);
|
|
127
|
+
return { success: true };
|
|
128
|
+
}`,
|
|
129
|
+
explanation: 'Async function called without await, .then(), or .catch() — errors will be silently lost.',
|
|
130
|
+
},
|
|
131
|
+
{
|
|
132
|
+
title: 'Mixed async patterns',
|
|
133
|
+
bad: `async function fetchData() {
|
|
134
|
+
const result = await fetch('/api/data');
|
|
135
|
+
result.json().then(data => {
|
|
136
|
+
processData(data); // Mixing await with .then()
|
|
137
|
+
});
|
|
138
|
+
}`,
|
|
139
|
+
good: `async function fetchData() {
|
|
140
|
+
const result = await fetch('/api/data');
|
|
141
|
+
const data = await result.json();
|
|
142
|
+
processData(data);
|
|
143
|
+
}`,
|
|
144
|
+
explanation: 'Mixing await and .then() in the same function creates confusing control flow.',
|
|
145
|
+
},
|
|
146
|
+
],
|
|
147
|
+
options: [
|
|
148
|
+
{ name: 'checkMissingAwait', type: 'boolean', description: 'Check for missing await on async function calls', default: true },
|
|
149
|
+
{ name: 'checkUnnecessaryAsync', type: 'boolean', description: 'Detect async functions that never use await', default: true },
|
|
150
|
+
{ name: 'checkFloatingPromises', type: 'boolean', description: 'Detect unawaited async calls (floating promises)', default: true },
|
|
151
|
+
{ name: 'checkAwaitNonPromise', type: 'boolean', description: 'Detect await on values that are not Promises', default: true },
|
|
152
|
+
{ name: 'checkMixedPatterns', type: 'boolean', description: 'Detect mixing of callbacks with async/await', default: true },
|
|
153
|
+
],
|
|
154
|
+
relatedRules: ['function-signature-matching', 'performance-antipatterns'],
|
|
155
|
+
};
|
|
156
|
+
}
|
|
157
|
+
// ─── Detection: Collect async function declarations ─────────────────
|
|
158
|
+
collectAsyncFunctions(filePath, content) {
|
|
159
|
+
const lines = content.split('\n');
|
|
160
|
+
for (let i = 0; i < lines.length; i++) {
|
|
161
|
+
const line = lines[i];
|
|
162
|
+
// Match: async function name(...)
|
|
163
|
+
const asyncFnMatch = line.match(/\basync\s+function\s+(\w+)\s*\(/);
|
|
164
|
+
if (asyncFnMatch) {
|
|
165
|
+
const info = this.buildAsyncFunctionInfo(asyncFnMatch[1], filePath, i, lines);
|
|
166
|
+
if (info)
|
|
167
|
+
this.knownAsyncFunctions.set(info.name, info);
|
|
168
|
+
continue;
|
|
169
|
+
}
|
|
170
|
+
// Match: export async function name(...)
|
|
171
|
+
const exportAsyncFnMatch = line.match(/\bexport\s+(?:default\s+)?async\s+function\s+(\w+)\s*\(/);
|
|
172
|
+
if (exportAsyncFnMatch) {
|
|
173
|
+
const info = this.buildAsyncFunctionInfo(exportAsyncFnMatch[1], filePath, i, lines);
|
|
174
|
+
if (info)
|
|
175
|
+
this.knownAsyncFunctions.set(info.name, info);
|
|
176
|
+
continue;
|
|
177
|
+
}
|
|
178
|
+
// Match: const name = async (...) => or const name = async function(...)
|
|
179
|
+
const arrowAsyncMatch = line.match(/\b(?:const|let|var)\s+(\w+)\s*=\s*async\s/);
|
|
180
|
+
if (arrowAsyncMatch) {
|
|
181
|
+
const info = this.buildAsyncFunctionInfo(arrowAsyncMatch[1], filePath, i, lines);
|
|
182
|
+
if (info)
|
|
183
|
+
this.knownAsyncFunctions.set(info.name, info);
|
|
184
|
+
continue;
|
|
185
|
+
}
|
|
186
|
+
// Match: async methodName(...) inside a class
|
|
187
|
+
const asyncMethodMatch = line.match(/^\s+(?:public\s+|private\s+|protected\s+)?(?:static\s+)?async\s+(\w+)\s*\(/);
|
|
188
|
+
if (asyncMethodMatch && asyncMethodMatch[1] !== 'function') {
|
|
189
|
+
const info = this.buildAsyncFunctionInfo(asyncMethodMatch[1], filePath, i, lines);
|
|
190
|
+
if (info)
|
|
191
|
+
this.knownAsyncFunctions.set(info.name, info);
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
buildAsyncFunctionInfo(name, filePath, startLine, lines) {
|
|
196
|
+
// Find the function body boundaries
|
|
197
|
+
let braceCount = 0;
|
|
198
|
+
let bodyStartLine = startLine;
|
|
199
|
+
let bodyEndLine = startLine;
|
|
200
|
+
let foundBody = false;
|
|
201
|
+
let hasAwaitInBody = false;
|
|
202
|
+
let returnsPromise = false;
|
|
203
|
+
for (let i = startLine; i < lines.length; i++) {
|
|
204
|
+
const line = lines[i];
|
|
205
|
+
// Check return type annotation for Promise
|
|
206
|
+
if (i === startLine || i === startLine + 1) {
|
|
207
|
+
if (/:\s*Promise\s*</.test(line)) {
|
|
208
|
+
returnsPromise = true;
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
const openBraces = (line.match(/{/g) || []).length;
|
|
212
|
+
const closeBraces = (line.match(/}/g) || []).length;
|
|
213
|
+
if (openBraces > 0 && !foundBody) {
|
|
214
|
+
foundBody = true;
|
|
215
|
+
bodyStartLine = i;
|
|
216
|
+
}
|
|
217
|
+
braceCount += openBraces - closeBraces;
|
|
218
|
+
// Check for await usage in the body
|
|
219
|
+
if (foundBody && /\bawait\s/.test(line)) {
|
|
220
|
+
hasAwaitInBody = true;
|
|
221
|
+
}
|
|
222
|
+
if (foundBody && braceCount <= 0) {
|
|
223
|
+
bodyEndLine = i;
|
|
224
|
+
break;
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
if (!foundBody)
|
|
228
|
+
return null;
|
|
229
|
+
return {
|
|
230
|
+
name,
|
|
231
|
+
file: filePath,
|
|
232
|
+
line: startLine + 1,
|
|
233
|
+
hasAwaitInBody,
|
|
234
|
+
returnsPromise,
|
|
235
|
+
bodyStartLine: bodyStartLine + 1,
|
|
236
|
+
bodyEndLine: bodyEndLine + 1,
|
|
237
|
+
};
|
|
238
|
+
}
|
|
239
|
+
// ─── Detection 1: Unnecessary async functions ──────────────────────
|
|
240
|
+
checkUnnecessaryAsyncFunctions(filePath, _content, violations) {
|
|
241
|
+
for (const [name, info] of this.knownAsyncFunctions) {
|
|
242
|
+
if (info.file !== filePath)
|
|
243
|
+
continue;
|
|
244
|
+
if (this.shouldIgnoreFunction(name))
|
|
245
|
+
continue;
|
|
246
|
+
// async function that never uses await and doesn't explicitly return Promise
|
|
247
|
+
if (!info.hasAwaitInBody && !info.returnsPromise) {
|
|
248
|
+
violations.push(this.createViolation(filePath, `Function '${name}' is declared async but never uses 'await'`, info.line, `Remove the 'async' keyword if the function doesn't need to await any asynchronous operations. ` +
|
|
249
|
+
`Unnecessary async wraps the return value in a Promise, adding overhead and misleading callers.`));
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
// ─── Detection 2: Floating promises & missing await ────────────────
|
|
254
|
+
checkFloatingPromisesAndMissingAwait(filePath, content, violations) {
|
|
255
|
+
const lines = content.split('\n');
|
|
256
|
+
// Build set of known async function names for this project
|
|
257
|
+
const asyncFunctionNames = new Set();
|
|
258
|
+
for (const [name] of this.knownAsyncFunctions) {
|
|
259
|
+
asyncFunctionNames.add(name);
|
|
260
|
+
}
|
|
261
|
+
// Also add common async APIs
|
|
262
|
+
const commonAsyncApis = new Set([
|
|
263
|
+
'fetch', 'axios', 'request',
|
|
264
|
+
'readFile', 'writeFile', 'readdir', 'mkdir', 'unlink', 'stat',
|
|
265
|
+
'findOne', 'findMany', 'findById', 'findAll',
|
|
266
|
+
'create', 'update', 'delete', 'save', 'remove',
|
|
267
|
+
'query', 'execute', 'transaction',
|
|
268
|
+
'connect', 'disconnect', 'close',
|
|
269
|
+
'send', 'sendMail', 'publish', 'subscribe',
|
|
270
|
+
]);
|
|
271
|
+
// Track whether we're inside an async function
|
|
272
|
+
let inAsyncFunction = false;
|
|
273
|
+
let asyncBraceDepth = 0;
|
|
274
|
+
let braceCount = 0;
|
|
275
|
+
for (let i = 0; i < lines.length; i++) {
|
|
276
|
+
const line = lines[i];
|
|
277
|
+
const trimmed = line.trim();
|
|
278
|
+
// Skip comments and empty lines
|
|
279
|
+
if (trimmed.startsWith('//') || trimmed.startsWith('*') || trimmed.startsWith('/*') || trimmed === '') {
|
|
280
|
+
continue;
|
|
281
|
+
}
|
|
282
|
+
// Track async function scope
|
|
283
|
+
if (/\basync\s+(function\s+\w+|(\w+)\s*=\s*async|\w+\s*\()/.test(line) ||
|
|
284
|
+
/\basync\s+\w+\s*\(/.test(line)) {
|
|
285
|
+
inAsyncFunction = true;
|
|
286
|
+
asyncBraceDepth = braceCount;
|
|
287
|
+
}
|
|
288
|
+
const openBraces = (line.match(/{/g) || []).length;
|
|
289
|
+
const closeBraces = (line.match(/}/g) || []).length;
|
|
290
|
+
braceCount += openBraces - closeBraces;
|
|
291
|
+
if (inAsyncFunction && braceCount <= asyncBraceDepth) {
|
|
292
|
+
inAsyncFunction = false;
|
|
293
|
+
}
|
|
294
|
+
// Look for function calls that are known async but not awaited
|
|
295
|
+
for (const asyncName of asyncFunctionNames) {
|
|
296
|
+
// Pattern: bare call statement — functionName(...) not preceded by await, return, or assignment
|
|
297
|
+
const callPattern = new RegExp(`(?<!\\bawait\\s)(?<!\\breturn\\s)(?<!=\\s)(?<!\\bvoid\\s)\\b${this.escapeRegex(asyncName)}\\s*\\(`, 'g');
|
|
298
|
+
if (callPattern.test(trimmed)) {
|
|
299
|
+
// Make sure it's a standalone statement (not part of assignment or return)
|
|
300
|
+
const isAssigned = /(?:const|let|var|=)\s*.*\b/.test(trimmed.split(asyncName)[0] || '');
|
|
301
|
+
const isReturned = trimmed.startsWith('return ');
|
|
302
|
+
const isAwaited = new RegExp(`\\bawait\\s+.*\\b${this.escapeRegex(asyncName)}`).test(trimmed);
|
|
303
|
+
const isChained = new RegExp(`${this.escapeRegex(asyncName)}\\s*\\([^)]*\\)\\s*\\.\\s*(then|catch|finally)\\b`).test(trimmed);
|
|
304
|
+
const isVoid = trimmed.startsWith('void ');
|
|
305
|
+
if (!isAssigned && !isReturned && !isAwaited && !isChained && !isVoid) {
|
|
306
|
+
violations.push(this.createViolation(filePath, `Async function '${asyncName}()' called without 'await', '.then()', or error handling — floating promise`, i + 1, inAsyncFunction
|
|
307
|
+
? `Add 'await' before '${asyncName}()' to properly handle its result and errors.`
|
|
308
|
+
: `Either await this call inside an async function, or chain '.then().catch()' to handle the promise.`));
|
|
309
|
+
}
|
|
310
|
+
}
|
|
311
|
+
}
|
|
312
|
+
// Check for common async API calls without await in async functions
|
|
313
|
+
if (inAsyncFunction) {
|
|
314
|
+
for (const apiName of commonAsyncApis) {
|
|
315
|
+
// More conservative: only flag when it looks like a standalone statement
|
|
316
|
+
const stmtPattern = new RegExp(`^\\s*(?:\\w+\\.)?${this.escapeRegex(apiName)}\\s*\\(`);
|
|
317
|
+
if (stmtPattern.test(trimmed)) {
|
|
318
|
+
const isAwaited = new RegExp(`\\bawait\\b`).test(trimmed);
|
|
319
|
+
const isAssigned = /(?:const|let|var)\s+\w+\s*=/.test(trimmed);
|
|
320
|
+
const isReturned = trimmed.startsWith('return ');
|
|
321
|
+
const isChained = /\)\s*\.\s*(then|catch|finally)\b/.test(trimmed);
|
|
322
|
+
if (!isAwaited && !isAssigned && !isReturned && !isChained) {
|
|
323
|
+
violations.push(this.createViolation(filePath, `Potential floating promise: '${apiName}()' called without 'await' in async function`, i + 1, `Add 'await' before '${apiName}()' to ensure proper execution order and error propagation.`));
|
|
324
|
+
}
|
|
325
|
+
}
|
|
326
|
+
}
|
|
327
|
+
}
|
|
328
|
+
}
|
|
329
|
+
}
|
|
330
|
+
// ─── Detection 3: await on non-promise values ──────────────────────
|
|
331
|
+
checkAwaitOnNonPromise(filePath, content, violations) {
|
|
332
|
+
const lines = content.split('\n');
|
|
333
|
+
// Patterns that are clearly not promises
|
|
334
|
+
const nonPromisePatterns = [
|
|
335
|
+
// await on literal values
|
|
336
|
+
/\bawait\s+(['"`])/, // await "string", await `template`
|
|
337
|
+
/\bawait\s+\d+/, // await 42
|
|
338
|
+
/\bawait\s+(true|false|null|undefined)\b/, // await true/false/null/undefined
|
|
339
|
+
/\bawait\s+\[(?!\s*\.\.\.)(?!.*Promise)/, // await [array] (not Promise.all style)
|
|
340
|
+
/\bawait\s+{\s*\w+/, // await {object}
|
|
341
|
+
];
|
|
342
|
+
for (let i = 0; i < lines.length; i++) {
|
|
343
|
+
const line = lines[i];
|
|
344
|
+
const trimmed = line.trim();
|
|
345
|
+
// Skip comments
|
|
346
|
+
if (trimmed.startsWith('//') || trimmed.startsWith('*') || trimmed.startsWith('/*')) {
|
|
347
|
+
continue;
|
|
348
|
+
}
|
|
349
|
+
for (const pattern of nonPromisePatterns) {
|
|
350
|
+
if (pattern.test(trimmed)) {
|
|
351
|
+
violations.push(this.createViolation(filePath, `Suspicious 'await' on a value that is likely not a Promise`, i + 1, `'await' on non-Promise values is unnecessary and may indicate AI-generated code that ` +
|
|
352
|
+
`confused sync and async APIs. Remove 'await' if the expression doesn't return a Promise.`));
|
|
353
|
+
break;
|
|
354
|
+
}
|
|
355
|
+
}
|
|
356
|
+
}
|
|
357
|
+
}
|
|
358
|
+
// ─── Detection 4: Mixed async patterns ─────────────────────────────
|
|
359
|
+
checkMixedAsyncPatterns(filePath, content, violations) {
|
|
360
|
+
const lines = content.split('\n');
|
|
361
|
+
// Track function scopes to detect mixing
|
|
362
|
+
let inAsyncFunction = false;
|
|
363
|
+
let asyncFuncStartLine = 0;
|
|
364
|
+
let asyncBraceDepth = 0;
|
|
365
|
+
let braceCount = 0;
|
|
366
|
+
let hasAwait = false;
|
|
367
|
+
let hasThenCatch = false;
|
|
368
|
+
let hasCallback = false;
|
|
369
|
+
let thenLine = 0;
|
|
370
|
+
let callbackLine = 0;
|
|
371
|
+
for (let i = 0; i < lines.length; i++) {
|
|
372
|
+
const line = lines[i];
|
|
373
|
+
const trimmed = line.trim();
|
|
374
|
+
// Detect async function start
|
|
375
|
+
if (/\basync\s+(?:function\s+\w+|\w+\s*=\s*async|\(\s*\w)|\basync\s+\w+\s*\(/.test(line)) {
|
|
376
|
+
// Report previous function if mixed
|
|
377
|
+
if (inAsyncFunction) {
|
|
378
|
+
this.reportMixedPatterns(filePath, asyncFuncStartLine, hasAwait, hasThenCatch, hasCallback, thenLine, callbackLine, violations);
|
|
379
|
+
}
|
|
380
|
+
inAsyncFunction = true;
|
|
381
|
+
asyncFuncStartLine = i + 1;
|
|
382
|
+
asyncBraceDepth = braceCount;
|
|
383
|
+
hasAwait = false;
|
|
384
|
+
hasThenCatch = false;
|
|
385
|
+
hasCallback = false;
|
|
386
|
+
thenLine = 0;
|
|
387
|
+
callbackLine = 0;
|
|
388
|
+
}
|
|
389
|
+
const openBraces = (line.match(/{/g) || []).length;
|
|
390
|
+
const closeBraces = (line.match(/}/g) || []).length;
|
|
391
|
+
braceCount += openBraces - closeBraces;
|
|
392
|
+
if (inAsyncFunction) {
|
|
393
|
+
if (/\bawait\s/.test(trimmed))
|
|
394
|
+
hasAwait = true;
|
|
395
|
+
if (/\.\s*then\s*\(/.test(trimmed)) {
|
|
396
|
+
hasThenCatch = true;
|
|
397
|
+
thenLine = i + 1;
|
|
398
|
+
}
|
|
399
|
+
// Detect callback patterns: function(err, result) or (err, data) =>
|
|
400
|
+
if (/\(err(?:or)?\s*,\s*\w+\)\s*(?:=>|{)/.test(trimmed) ||
|
|
401
|
+
/function\s*\(\s*err(?:or)?\s*,/.test(trimmed)) {
|
|
402
|
+
hasCallback = true;
|
|
403
|
+
callbackLine = i + 1;
|
|
404
|
+
}
|
|
405
|
+
}
|
|
406
|
+
if (inAsyncFunction && braceCount <= asyncBraceDepth) {
|
|
407
|
+
this.reportMixedPatterns(filePath, asyncFuncStartLine, hasAwait, hasThenCatch, hasCallback, thenLine, callbackLine, violations);
|
|
408
|
+
inAsyncFunction = false;
|
|
409
|
+
}
|
|
410
|
+
}
|
|
411
|
+
// Handle last function
|
|
412
|
+
if (inAsyncFunction) {
|
|
413
|
+
this.reportMixedPatterns(filePath, asyncFuncStartLine, hasAwait, hasThenCatch, hasCallback, thenLine, callbackLine, violations);
|
|
414
|
+
}
|
|
415
|
+
}
|
|
416
|
+
reportMixedPatterns(filePath, funcStartLine, hasAwait, hasThenCatch, hasCallback, thenLine, callbackLine, violations) {
|
|
417
|
+
if (hasAwait && hasThenCatch) {
|
|
418
|
+
violations.push(this.createViolation(filePath, `Mixed async patterns: function uses both 'await' and '.then()' chains`, thenLine || funcStartLine, `Convert '.then()' chains to 'await' for consistent async style. ` +
|
|
419
|
+
`Mixing patterns makes control flow harder to follow and may indicate AI-generated code drift.`));
|
|
420
|
+
}
|
|
421
|
+
if (hasAwait && hasCallback) {
|
|
422
|
+
violations.push(this.createViolation(filePath, `Mixed async patterns: function uses both 'await' and error-first callbacks`, callbackLine || funcStartLine, `Convert callback-style code to async/await using 'util.promisify()' or manual Promise wrapping. ` +
|
|
423
|
+
`Mixing callbacks with async/await often indicates AI context confusion.`));
|
|
424
|
+
}
|
|
425
|
+
}
|
|
426
|
+
// ─── Helpers ───────────────────────────────────────────────────────
|
|
427
|
+
shouldAnalyzeFile(filePath) {
|
|
428
|
+
const extensions = this.config.includeExtensions || ['.ts', '.tsx', '.js', '.jsx'];
|
|
429
|
+
return extensions.some(ext => filePath.endsWith(ext));
|
|
430
|
+
}
|
|
431
|
+
shouldIgnoreFunction(name) {
|
|
432
|
+
const patterns = this.config.ignorePatterns || [];
|
|
433
|
+
return patterns.some(pattern => new RegExp(pattern).test(name));
|
|
434
|
+
}
|
|
435
|
+
escapeRegex(str) {
|
|
436
|
+
return str.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
|
|
437
|
+
}
|
|
438
|
+
createViolation(file, message, line, suggestion) {
|
|
439
|
+
this.violationCounter++;
|
|
440
|
+
return {
|
|
441
|
+
id: `async-discrepancies-${this.violationCounter}`,
|
|
442
|
+
ruleId: this.id,
|
|
443
|
+
ruleName: this.name,
|
|
444
|
+
severity: this.config.severity || 'warning',
|
|
445
|
+
message,
|
|
446
|
+
file,
|
|
447
|
+
line,
|
|
448
|
+
suggestion,
|
|
449
|
+
};
|
|
450
|
+
}
|
|
451
|
+
}
|
|
452
|
+
//# sourceMappingURL=async-discrepancies.rule.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"async-discrepancies.rule.js","sourceRoot":"","sources":["../../../../src/core/rules/builtin/async-discrepancies.rule.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rule-engine.d.ts","sourceRoot":"","sources":["../../../src/core/rules/rule-engine.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,YAAY,EAA8B,MAAM,6BAA6B,CAAC;AACvF,OAAO,EAAE,SAAS,EAAqB,MAAM,2BAA2B,CAAC;AACzE,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAEhE,OAAO,EAAE,KAAK,EAA2B,MAAM,qBAAqB,CAAC;AACrE,OAAO,EAAE,YAAY,EAAsB,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"rule-engine.d.ts","sourceRoot":"","sources":["../../../src/core/rules/rule-engine.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,YAAY,EAA8B,MAAM,6BAA6B,CAAC;AACvF,OAAO,EAAE,SAAS,EAAqB,MAAM,2BAA2B,CAAC;AACzE,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAEhE,OAAO,EAAE,KAAK,EAA2B,MAAM,qBAAqB,CAAC;AACrE,OAAO,EAAE,YAAY,EAAsB,MAAM,6BAA6B,CAAC;AAuB/E,qBAAa,UAAU;IACrB,OAAO,CAAC,MAAM,CAAe;IAC7B,OAAO,CAAC,KAAK,CAAiC;IAC9C,OAAO,CAAC,YAAY,CAA0B;IAC9C,OAAO,CAAC,YAAY,CAA6B;gBAErC,MAAM,EAAE,YAAY;IAKhC;;OAEG;IACG,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAuBvD;;OAEG;IACH,eAAe,IAAI,YAAY,GAAG,IAAI;IAItC;;OAEG;IACH,OAAO,CAAC,eAAe;IAwCvB;;OAEG;IACH,YAAY,CAAC,IAAI,EAAE,KAAK,GAAG,IAAI;IAI/B;;OAEG;IACH,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAKpC;;OAEG;IACH,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAMhC;;OAEG;IACH,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAIjC;;OAEG;IACH,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI;IAWpC;;OAEG;IACG,QAAQ,CAAC,KAAK,EAAE,eAAe,EAAE,YAAY,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IA4BhG;;OAEG;IACG,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,eAAe,EAAE,YAAY,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IA8BtH;;OAEG;IACG,OAAO,CAAC,UAAU,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;IAmBvD;;OAEG;IACH,QAAQ,IAAI,KAAK,EAAE;IAInB;;OAEG;IACH,eAAe,IAAI,KAAK,EAAE;IAM1B;;OAEG;IACH,OAAO,CAAC,aAAa;IAarB;;OAEG;IACH,OAAO,CAAC,aAAa;IAMrB;;OAEG;IACH,OAAO,CAAC,eAAe;CASxB"}
|
|
@@ -24,6 +24,7 @@ import { FunctionSignatureMatchingRule } from './builtin/function-signature-matc
|
|
|
24
24
|
import { HardcodedSecretsRule } from './builtin/hardcoded-secrets.rule.js';
|
|
25
25
|
import { InconsistentCasingRule } from './builtin/inconsistent-casing.rule.js';
|
|
26
26
|
import { OrphanedFunctionsRule } from './builtin/orphaned-functions.rule.js';
|
|
27
|
+
import { AsyncDiscrepanciesRule } from './builtin/async-discrepancies.rule.js';
|
|
27
28
|
export class RuleEngine {
|
|
28
29
|
config;
|
|
29
30
|
rules = new Map();
|
|
@@ -85,6 +86,7 @@ export class RuleEngine {
|
|
|
85
86
|
new HardcodedSecretsRule(),
|
|
86
87
|
new InconsistentCasingRule(),
|
|
87
88
|
new OrphanedFunctionsRule(),
|
|
89
|
+
new AsyncDiscrepanciesRule(),
|
|
88
90
|
];
|
|
89
91
|
for (const rule of builtinRules) {
|
|
90
92
|
this.registerRule(rule);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rule-engine.js","sourceRoot":"","sources":["../../../src/core/rules/rule-engine.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAEtC,OAAO,EAAgB,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AAE/E,wBAAwB;AACxB,OAAO,EAAE,yBAAyB,EAAE,MAAM,2CAA2C,CAAC;AACtF,OAAO,EAAE,wBAAwB,EAAE,MAAM,0CAA0C,CAAC;AACpF,OAAO,EAAE,yBAAyB,EAAE,MAAM,2CAA2C,CAAC;AACtF,OAAO,EAAE,qBAAqB,EAAE,MAAM,sCAAsC,CAAC;AAC7E,OAAO,EAAE,wBAAwB,EAAE,MAAM,yCAAyC,CAAC;AACnF,OAAO,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAC;AAC3E,OAAO,EAAE,2BAA2B,EAAE,MAAM,4CAA4C,CAAC;AACzF,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAC/D,OAAO,EAAE,qBAAqB,EAAE,MAAM,uCAAuC,CAAC;AAC9E,OAAO,EAAE,2BAA2B,EAAE,MAAM,4CAA4C,CAAC;AACzF,OAAO,EAAE,0BAA0B,EAAE,MAAM,kCAAkC,CAAC;AAC9E,OAAO,EAAE,mBAAmB,EAAE,MAAM,oCAAoC,CAAC;AACzE,OAAO,EAAE,sBAAsB,EAAE,MAAM,uCAAuC,CAAC;AAC/E,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AACrE,OAAO,EAAE,6BAA6B,EAAE,MAAM,+CAA+C,CAAC;AAC9F,OAAO,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAC;AAC3E,OAAO,EAAE,sBAAsB,EAAE,MAAM,uCAAuC,CAAC;AAC/E,OAAO,EAAE,qBAAqB,EAAE,MAAM,sCAAsC,CAAC;
|
|
1
|
+
{"version":3,"file":"rule-engine.js","sourceRoot":"","sources":["../../../src/core/rules/rule-engine.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAEtC,OAAO,EAAgB,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AAE/E,wBAAwB;AACxB,OAAO,EAAE,yBAAyB,EAAE,MAAM,2CAA2C,CAAC;AACtF,OAAO,EAAE,wBAAwB,EAAE,MAAM,0CAA0C,CAAC;AACpF,OAAO,EAAE,yBAAyB,EAAE,MAAM,2CAA2C,CAAC;AACtF,OAAO,EAAE,qBAAqB,EAAE,MAAM,sCAAsC,CAAC;AAC7E,OAAO,EAAE,wBAAwB,EAAE,MAAM,yCAAyC,CAAC;AACnF,OAAO,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAC;AAC3E,OAAO,EAAE,2BAA2B,EAAE,MAAM,4CAA4C,CAAC;AACzF,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAC/D,OAAO,EAAE,qBAAqB,EAAE,MAAM,uCAAuC,CAAC;AAC9E,OAAO,EAAE,2BAA2B,EAAE,MAAM,4CAA4C,CAAC;AACzF,OAAO,EAAE,0BAA0B,EAAE,MAAM,kCAAkC,CAAC;AAC9E,OAAO,EAAE,mBAAmB,EAAE,MAAM,oCAAoC,CAAC;AACzE,OAAO,EAAE,sBAAsB,EAAE,MAAM,uCAAuC,CAAC;AAC/E,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AACrE,OAAO,EAAE,6BAA6B,EAAE,MAAM,+CAA+C,CAAC;AAC9F,OAAO,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAC;AAC3E,OAAO,EAAE,sBAAsB,EAAE,MAAM,uCAAuC,CAAC;AAC/E,OAAO,EAAE,qBAAqB,EAAE,MAAM,sCAAsC,CAAC;AAC7E,OAAO,EAAE,sBAAsB,EAAE,MAAM,uCAAuC,CAAC;AAE/E,MAAM,OAAO,UAAU;IACb,MAAM,CAAe;IACrB,KAAK,GAAuB,IAAI,GAAG,EAAE,CAAC;IACtC,YAAY,GAAgB,IAAI,GAAG,EAAE,CAAC;IACtC,YAAY,GAAwB,IAAI,CAAC;IAEjD,YAAY,MAAoB;QAC9B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,eAAe,EAAE,CAAC;IACzB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,iBAAiB,CAAC,OAAe;QACrC,MAAM,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;QAC1C,IAAI,CAAC,aAAa,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACjD,OAAO;QACT,CAAC;QAED,IAAI,CAAC,YAAY,GAAG,kBAAkB,CAAC,OAAO,CAAC,CAAC;QAChD,MAAM,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;QAEnD,8BAA8B;QAC9B,MAAM,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC;QACjD,KAAK,MAAM,IAAI,IAAI,WAAW,EAAE,CAAC;YAC/B,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;YACxB,6DAA6D;YAC7D,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACxD,IAAI,IAAI,CAAC,aAAa,CAAC,UAAU,IAAI,MAAM,CAAC,EAAE,CAAC;gBAC7C,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACjC,CAAC;QACH,CAAC;QAED,MAAM,CAAC,IAAI,CAAC,UAAU,WAAW,CAAC,MAAM,qBAAqB,CAAC,CAAC;IACjE,CAAC;IAED;;OAEG;IACH,eAAe;QACb,OAAO,IAAI,CAAC,YAAY,CAAC;IAC3B,CAAC;IAED;;OAEG;IACK,eAAe;QACrB,0BAA0B;QAC1B,MAAM,YAAY,GAAY;YAC5B,IAAI,yBAAyB,EAAE;YAC/B,IAAI,wBAAwB,EAAE;YAC9B,IAAI,yBAAyB,EAAE;YAC/B,IAAI,qBAAqB,EAAE;YAC3B,IAAI,wBAAwB,EAAE;YAC9B,IAAI,oBAAoB,EAAE;YAC1B,IAAI,2BAA2B,EAAE;YACjC,IAAI,cAAc,EAAE;YACpB,IAAI,qBAAqB,EAAE;YAC3B,IAAI,2BAA2B,EAAE;YACjC,IAAI,0BAA0B,EAAE;YAChC,IAAI,mBAAmB,EAAE;YACzB,IAAI,sBAAsB,EAAE;YAC5B,IAAI,iBAAiB,EAAE;YACvB,IAAI,6BAA6B,EAAE;YACnC,IAAI,oBAAoB,EAAE;YAC1B,IAAI,sBAAsB,EAAE;YAC5B,IAAI,qBAAqB,EAAE;YAC3B,IAAI,sBAAsB,EAAE;SAC7B,CAAC;QAEF,KAAK,MAAM,IAAI,IAAI,YAAY,EAAE,CAAC;YAChC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;QAC1B,CAAC;QAED,sCAAsC;QACtC,MAAM,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,OAAO,IAAI,EAAE,CAAC;QAEvD,KAAK,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE,CAAC;YAC5D,IAAI,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC9B,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YAChC,CAAC;QACH,CAAC;QAED,MAAM,CAAC,KAAK,CAAC,eAAe,IAAI,CAAC,KAAK,CAAC,IAAI,WAAW,IAAI,CAAC,YAAY,CAAC,IAAI,UAAU,CAAC,CAAC;IAC1F,CAAC;IAED;;OAEG;IACH,YAAY,CAAC,IAAW;QACtB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;IAChC,CAAC;IAED;;OAEG;IACH,cAAc,CAAC,MAAc;QAC3B,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAC1B,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IACnC,CAAC;IAED;;OAEG;IACH,UAAU,CAAC,MAAc;QACvB,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;YAC3B,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAChC,CAAC;IACH,CAAC;IAED;;OAEG;IACH,WAAW,CAAC,MAAc;QACxB,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IACnC,CAAC;IAED;;OAEG;IACH,WAAW,CAAC,OAAiB;QAC3B,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC;QAC1B,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC7B,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC3B,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YAChC,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,IAAI,CAAC,SAAS,MAAM,aAAa,CAAC,CAAC;YAC5C,CAAC;QACH,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,QAAQ,CAAC,KAAsB,EAAE,YAAkC;QACvE,MAAM,UAAU,GAAgB,EAAE,CAAC;QACnC,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,SAAS,EAAE,YAAY,CAAC,CAAC;QAEnE,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACvC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YACpC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK;gBAAE,SAAS;YAEnC,IAAI,CAAC;gBACH,MAAM,CAAC,KAAK,CAAC,iBAAiB,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;gBAC3C,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;gBAEzC,IAAI,MAAM,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACjC,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;oBAC9C,MAAM,mBAAmB,GAAG,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;wBACtD,GAAG,CAAC;wBACJ,QAAQ;qBACT,CAAC,CAAC,CAAC;oBACJ,UAAU,CAAC,IAAI,CAAC,GAAG,mBAAmB,CAAC,CAAC;gBAC1C,CAAC;YACH,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,CAAC,KAAK,CAAC,SAAS,MAAM,aAAc,KAAe,CAAC,OAAO,EAAE,CAAC,CAAC;YACvE,CAAC;QACH,CAAC;QAED,OAAO,UAAU,CAAC;IACpB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,YAAY,CAAC,QAAgB,EAAE,KAAsB,EAAE,YAAkC;QAC7F,MAAM,UAAU,GAAgB,EAAE,CAAC;QACnC,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC;QAElE,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACvC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YACpC,IAAI,CAAC,IAAI;gBAAE,SAAS;YAEpB,uDAAuD;YACvD,IAAI,CAAC,IAAI,CAAC,mBAAmB,IAAI,CAAC,IAAI,CAAC,SAAS;gBAAE,SAAS;YAE3D,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;gBAEvD,IAAI,MAAM,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACjC,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;oBAC9C,MAAM,mBAAmB,GAAG,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;wBACtD,GAAG,CAAC;wBACJ,QAAQ;qBACT,CAAC,CAAC,CAAC;oBACJ,UAAU,CAAC,IAAI,CAAC,GAAG,mBAAmB,CAAC,CAAC;gBAC1C,CAAC;YACH,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,CAAC,KAAK,CAAC,SAAS,MAAM,qBAAqB,QAAQ,KAAM,KAAe,CAAC,OAAO,EAAE,CAAC,CAAC;YAC5F,CAAC;QACH,CAAC;QAED,OAAO,UAAU,CAAC;IACpB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,OAAO,CAAC,UAAuB;QACnC,IAAI,UAAU,GAAG,CAAC,CAAC;QAEnB,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;YACnC,IAAI,CAAC,SAAS,CAAC,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG;gBAAE,SAAS;YAEnD,IAAI,CAAC;gBACH,gBAAgB;gBAChB,uDAAuD;gBACvD,UAAU,EAAE,CAAC;gBACb,MAAM,CAAC,KAAK,CAAC,oBAAoB,SAAS,CAAC,OAAO,EAAE,CAAC,CAAC;YACxD,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,CAAC,IAAI,CAAC,uBAAuB,SAAS,CAAC,OAAO,EAAE,CAAC,CAAC;YAC1D,CAAC;QACH,CAAC;QAED,OAAO,UAAU,CAAC;IACpB,CAAC;IAED;;OAEG;IACH,QAAQ;QACN,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;IACzC,CAAC;IAED;;OAEG;IACH,eAAe;QACb,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC;aACjC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;aAC7B,MAAM,CAAC,CAAC,IAAI,EAAiB,EAAE,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC;IACzD,CAAC;IAED;;OAEG;IACK,aAAa,CAAC,KAAsB,EAAE,SAAkB,EAAE,YAAkC;QAClG,OAAO;YACL,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,KAAK;YACL,SAAS;YACT,YAAY;YACZ,WAAW,EAAE,CAAC,EAAU,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;YAC3C,WAAW,EAAE,CAAC,MAAc,EAAE,MAAc,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC;YAC3E,gBAAgB,EAAE,CAAC,EAAU,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE;YACzD,gBAAgB,EAAE,CAAC,EAAU,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE;SAC3D,CAAC;IACJ,CAAC;IAED;;OAEG;IACK,aAAa,CAAC,KAA4B;QAChD,IAAI,CAAC,KAAK,IAAI,KAAK,KAAK,KAAK;YAAE,OAAO,KAAK,CAAC;QAC5C,IAAI,OAAO,KAAK,KAAK,QAAQ;YAAE,OAAO,IAAI,CAAC;QAC3C,OAAQ,KAAyB,CAAC,KAAK,KAAK,KAAK,CAAC;IACpD,CAAC;IAED;;OAEG;IACK,eAAe,CAAC,MAAc;QACpC,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,CAAC,MAAgD,CAAC,CAAC;QAE7F,IAAI,CAAC,KAAK;YAAE,OAAO,SAAS,CAAC;QAC7B,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC9B,OAAO,KAAK,KAAK,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;QACjD,CAAC;QACD,OAAQ,KAAyB,CAAC,KAAK,KAAK,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;IAC5E,CAAC;CACF"}
|
package/dist/mcp/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fix.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/fix.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,oCAAoC,CAAC;AAE1D;;GAEG;AACH,eAAO,MAAM,UAAU,EAAE,IAiCxB,CAAC;AAuBF;;GAEG;AACH,wBAAsB,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC;IACpE,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAChD,CAAC,CAmCD;
|
|
1
|
+
{"version":3,"file":"fix.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/fix.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,oCAAoC,CAAC;AAE1D;;GAEG;AACH,eAAO,MAAM,UAAU,EAAE,IAiCxB,CAAC;AAuBF;;GAEG;AACH,wBAAsB,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC;IACpE,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAChD,CAAC,CAmCD;AA+ND;;GAEG;AACH,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAG1B,CAAC"}
|
package/dist/mcp/tools/fix.js
CHANGED
|
@@ -136,6 +136,25 @@ function getRuleSpecificFix(ruleId) {
|
|
|
136
136
|
explanation: 'Context drift occurs when AI loses track of established naming and introduces different names for the same concepts.',
|
|
137
137
|
prevention: 'When generating new code, first query existing types with similar purpose. Reuse established naming.',
|
|
138
138
|
},
|
|
139
|
+
'function-signature-matching': {
|
|
140
|
+
fixType: 'code_change',
|
|
141
|
+
priority: 'high',
|
|
142
|
+
defaultDescription: 'Fix function name, parameter names, or parameter count to match shared contract',
|
|
143
|
+
steps: [
|
|
144
|
+
'Read the canonical function signature from the shared/types directory',
|
|
145
|
+
'For function-name mismatches: rename the function to match the shared contract exactly',
|
|
146
|
+
'For parameter-name mismatches: rename the parameter to match',
|
|
147
|
+
'For parameter-count mismatches: add the missing parameters with appropriate values from context',
|
|
148
|
+
'Update all call sites that reference the renamed function/parameter',
|
|
149
|
+
'Re-validate with camouf_validate to confirm the fix',
|
|
150
|
+
],
|
|
151
|
+
alternatives: [
|
|
152
|
+
{ description: 'If the shared contract is wrong, update the shared type instead and make all implementations match' },
|
|
153
|
+
{ description: 'For parameter-count mismatch, make the extra parameter optional in the shared contract if it is truly optional' },
|
|
154
|
+
],
|
|
155
|
+
explanation: 'AI agents with limited context windows often remember function names approximately but not exactly. This causes runtime errors when the client calls getUser() but the server defined getUserById(). Parameter count mismatches (e.g., cancelOrder(id) vs cancelOrder(id, reason)) mean the caller is not providing all required data.',
|
|
156
|
+
prevention: 'Before calling or implementing any function, read the shared contract file. Use camouf_analyze with focus="types" to see all canonical signatures. Copy the exact name and full parameter list.',
|
|
157
|
+
},
|
|
139
158
|
'phantom-type-references': {
|
|
140
159
|
fixType: 'code_change',
|
|
141
160
|
priority: 'high',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fix.js","sourceRoot":"","sources":["../../../src/mcp/tools/fix.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"fix.js","sourceRoot":"","sources":["../../../src/mcp/tools/fix.ts"],"names":[],"mappings":"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"}
|
package/dist/testing/index.js
CHANGED
|
@@ -89,7 +89,7 @@ function resolveRelative(sourceFile, importPath) {
|
|
|
89
89
|
parts.push(part);
|
|
90
90
|
}
|
|
91
91
|
}
|
|
92
|
-
|
|
92
|
+
const resolved = parts.join('/');
|
|
93
93
|
// Try to match against known file extensions
|
|
94
94
|
const extensions = ['.ts', '.tsx', '.js', '.jsx', '.py', '.java', '.go', '.rs'];
|
|
95
95
|
for (const ext of extensions) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/testing/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/testing/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -100,6 +100,8 @@ export interface BuiltinRulesConfig {
|
|
|
100
100
|
'hardcoded-secrets'?: RuleLevel;
|
|
101
101
|
/** Function signature matching across boundaries */
|
|
102
102
|
'function-signature-matching'?: RuleLevel;
|
|
103
|
+
/** Async/await discrepancies detection */
|
|
104
|
+
'async-discrepancies'?: RuleLevel;
|
|
103
105
|
}
|
|
104
106
|
export type RuleLevel = 'off' | 'warn' | 'error' | RuleLevelConfig;
|
|
105
107
|
export interface RuleLevelConfig {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.types.d.ts","sourceRoot":"","sources":["../../src/types/config.types.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"config.types.d.ts","sourceRoot":"","sources":["../../src/types/config.types.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.types.js","sourceRoot":"","sources":["../../src/types/config.types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;
|
|
1
|
+
{"version":3,"file":"config.types.js","sourceRoot":"","sources":["../../src/types/config.types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAmQH;;GAEG;AACH,MAAM,CAAC,MAAM,aAAa,GAA0B;IAClD,SAAS,EAAE,CAAC,YAAY,EAAE,YAAY,CAAC;IACvC,QAAQ,EAAE;QACR,OAAO,EAAE,CAAC,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,CAAC;QACvD,OAAO,EAAE;YACP,oBAAoB;YACpB,YAAY;YACZ,aAAa;YACb,YAAY;YACZ,gBAAgB;SACjB;KACF;IACD,KAAK,EAAE;QACL,OAAO,EAAE;YACP,oBAAoB,EAAE,OAAO;YAC7B,uBAAuB,EAAE,MAAM;YAC/B,0BAA0B,EAAE,MAAM;YAClC,aAAa,EAAE,MAAM;SACtB;KACF;IACD,QAAQ,EAAE;QACR,KAAK,EAAE,IAAI;QACX,UAAU,EAAE,CAAC;KACd;CACF,CAAC"}
|