camouf 0.9.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 CHANGED
@@ -106,7 +106,7 @@ npx camouf fix --id sig-001 # Fix a specific mismatch
106
106
 
107
107
  ## Features
108
108
 
109
- - **18 Built-in Rules**: AI-specific and architecture validation rules
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.8.0
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,
@@ -374,6 +374,7 @@ This creates a **feedback loop** where AI catches its own mistakes before you se
374
374
  - [AI Agent Challenges](docs/ai-agent-challenges.md)
375
375
  - [MCP Agent Tutorial](docs/mcp-agent-tutorial.md)
376
376
  - [Configuring Rules](docs/configuring-rules.md)
377
+ - [Async Discrepancies Guide](docs/async-discrepancies.md)
377
378
  - [CI/CD Integration](docs/ci-cd-integration.md)
378
379
  - [Changelog](CHANGELOG.md)
379
380
 
@@ -495,6 +496,7 @@ These rules catch mistakes that AI coding assistants commonly make:
495
496
  | `phantom-type-references` | Catches references to types that don't exist | `warn` |
496
497
  | `inconsistent-casing` | Detects mixing of camelCase/snake_case in the same codebase | `warn` |
497
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` |
498
500
 
499
501
  > **See examples:** Check `test-fixtures/ai-errors/` in the repository for concrete examples of what each rule catches.
500
502
 
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Version and metadata for Camouf CLI
3
3
  */
4
- export declare const version = "0.9.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,UAAU,CAAC;AAC/B,eAAO,MAAM,IAAI,WAAW,CAAC;AAC7B,eAAO,MAAM,WAAW,kDAAkD,CAAC;AAE3E,eAAO,MAAM,QAAQ;;;;;;;;CAQpB,CAAC"}
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"}
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Version and metadata for Camouf CLI
3
3
  */
4
- export const version = '0.9.0';
4
+ export const version = '0.10.0';
5
5
  export const name = 'camouf';
6
6
  export const description = 'Architecture guardrails for AI-generated code';
7
7
  export const metadata = {
@@ -1 +1 @@
1
- {"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/cli/version.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,CAAC,MAAM,OAAO,GAAG,OAAO,CAAC;AAC/B,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"}
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;AAsB/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;IAuCvB;;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"}
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":"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"}
1
+ {"version":3,"file":"rule-engine.js","sourceRoot":"","sources":["../../../src/core/rules/rule-engine.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;AAgQH;;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"}
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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "camouf",
3
- "version": "0.9.0",
3
+ "version": "0.10.0",
4
4
  "description": "Architecture guardrails for AI-generated code - catches the mistakes AI coding assistants make",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",