@kernlang/review 3.1.5 → 3.1.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (156) hide show
  1. package/LICENSE +17 -0
  2. package/dist/cache.d.ts +1 -1
  3. package/dist/cache.js +5 -3
  4. package/dist/cache.js.map +1 -1
  5. package/dist/call-graph.d.ts +63 -0
  6. package/dist/call-graph.js +380 -0
  7. package/dist/call-graph.js.map +1 -0
  8. package/dist/concept-rules/boundary-mutation.d.ts +1 -1
  9. package/dist/concept-rules/boundary-mutation.js.map +1 -1
  10. package/dist/concept-rules/ignored-error.d.ts +1 -1
  11. package/dist/concept-rules/ignored-error.js.map +1 -1
  12. package/dist/concept-rules/illegal-dependency.d.ts +1 -1
  13. package/dist/concept-rules/illegal-dependency.js.map +1 -1
  14. package/dist/concept-rules/index.js +1 -6
  15. package/dist/concept-rules/index.js.map +1 -1
  16. package/dist/concept-rules/unguarded-effect.d.ts +1 -1
  17. package/dist/concept-rules/unguarded-effect.js.map +1 -1
  18. package/dist/concept-rules/unrecovered-effect.d.ts +1 -1
  19. package/dist/concept-rules/unrecovered-effect.js +2 -1
  20. package/dist/concept-rules/unrecovered-effect.js.map +1 -1
  21. package/dist/confidence.js +12 -8
  22. package/dist/confidence.js.map +1 -1
  23. package/dist/differ.js +3 -7
  24. package/dist/differ.js.map +1 -1
  25. package/dist/external-tools.js +5 -6
  26. package/dist/external-tools.js.map +1 -1
  27. package/dist/file-context.d.ts +21 -0
  28. package/dist/file-context.js +234 -0
  29. package/dist/file-context.js.map +1 -0
  30. package/dist/file-role.js +14 -7
  31. package/dist/file-role.js.map +1 -1
  32. package/dist/graph.d.ts +1 -1
  33. package/dist/graph.js +24 -16
  34. package/dist/graph.js.map +1 -1
  35. package/dist/index.d.ts +44 -35
  36. package/dist/index.js +221 -68
  37. package/dist/index.js.map +1 -1
  38. package/dist/inferrer.d.ts +8 -2
  39. package/dist/inferrer.js +80 -47
  40. package/dist/inferrer.js.map +1 -1
  41. package/dist/kern-lint.d.ts +3 -4
  42. package/dist/kern-lint.js +7 -5
  43. package/dist/kern-lint.js.map +1 -1
  44. package/dist/llm-bridge.d.ts +23 -7
  45. package/dist/llm-bridge.js +267 -31
  46. package/dist/llm-bridge.js.map +1 -1
  47. package/dist/llm-review.d.ts +16 -2
  48. package/dist/llm-review.js +240 -35
  49. package/dist/llm-review.js.map +1 -1
  50. package/dist/mappers/ts-concepts.d.ts +1 -1
  51. package/dist/mappers/ts-concepts.js +303 -32
  52. package/dist/mappers/ts-concepts.js.map +1 -1
  53. package/dist/norm-miner.d.ts +31 -0
  54. package/dist/norm-miner.js +119 -0
  55. package/dist/norm-miner.js.map +1 -0
  56. package/dist/obligations.d.ts +63 -0
  57. package/dist/obligations.js +158 -0
  58. package/dist/obligations.js.map +1 -0
  59. package/dist/quality-rules.d.ts +3 -3
  60. package/dist/quality-rules.js +4 -2
  61. package/dist/quality-rules.js.map +1 -1
  62. package/dist/reporter.d.ts +7 -2
  63. package/dist/reporter.js +82 -51
  64. package/dist/reporter.js.map +1 -1
  65. package/dist/rule-eval.d.ts +1 -2
  66. package/dist/rule-eval.js +5 -9
  67. package/dist/rule-eval.js.map +1 -1
  68. package/dist/rule-loader.js +16 -14
  69. package/dist/rule-loader.js.map +1 -1
  70. package/dist/rules/base.js +153 -69
  71. package/dist/rules/base.js.map +1 -1
  72. package/dist/rules/cli.d.ts +7 -0
  73. package/dist/rules/cli.js +99 -0
  74. package/dist/rules/cli.js.map +1 -0
  75. package/dist/rules/confidence.d.ts +1 -1
  76. package/dist/rules/confidence.js +5 -5
  77. package/dist/rules/confidence.js.map +1 -1
  78. package/dist/rules/dead-code.d.ts +10 -0
  79. package/dist/rules/dead-code.js +75 -0
  80. package/dist/rules/dead-code.js.map +1 -0
  81. package/dist/rules/dead-logic.js +35 -31
  82. package/dist/rules/dead-logic.js.map +1 -1
  83. package/dist/rules/express.d.ts +2 -1
  84. package/dist/rules/express.js +380 -126
  85. package/dist/rules/express.js.map +1 -1
  86. package/dist/rules/fastapi.d.ts +10 -0
  87. package/dist/rules/fastapi.js +183 -0
  88. package/dist/rules/fastapi.js.map +1 -0
  89. package/dist/rules/ground-layer.js +3 -3
  90. package/dist/rules/ground-layer.js.map +1 -1
  91. package/dist/rules/index.d.ts +5 -1
  92. package/dist/rules/index.js +602 -84
  93. package/dist/rules/index.js.map +1 -1
  94. package/dist/rules/ink.d.ts +8 -0
  95. package/dist/rules/ink.js +88 -0
  96. package/dist/rules/ink.js.map +1 -0
  97. package/dist/rules/kern-source.js +202 -63
  98. package/dist/rules/kern-source.js.map +1 -1
  99. package/dist/rules/nextjs.js +88 -33
  100. package/dist/rules/nextjs.js.map +1 -1
  101. package/dist/rules/null-safety.js +52 -26
  102. package/dist/rules/null-safety.js.map +1 -1
  103. package/dist/rules/nuxt.js +24 -29
  104. package/dist/rules/nuxt.js.map +1 -1
  105. package/dist/rules/react.js +355 -69
  106. package/dist/rules/react.js.map +1 -1
  107. package/dist/rules/security-v2.js +71 -57
  108. package/dist/rules/security-v2.js.map +1 -1
  109. package/dist/rules/security-v3.js.map +1 -1
  110. package/dist/rules/security-v4.js +54 -27
  111. package/dist/rules/security-v4.js.map +1 -1
  112. package/dist/rules/security.js +35 -5
  113. package/dist/rules/security.js.map +1 -1
  114. package/dist/rules/terminal.d.ts +8 -0
  115. package/dist/rules/terminal.js +139 -0
  116. package/dist/rules/terminal.js.map +1 -0
  117. package/dist/rules/vue.js +162 -107
  118. package/dist/rules/vue.js.map +1 -1
  119. package/dist/semantic-diff.d.ts +52 -0
  120. package/dist/semantic-diff.js +342 -0
  121. package/dist/semantic-diff.js.map +1 -0
  122. package/dist/spec-checker.js +11 -10
  123. package/dist/spec-checker.js.map +1 -1
  124. package/dist/suppression/apply-suppression.d.ts +2 -3
  125. package/dist/suppression/apply-suppression.js +3 -3
  126. package/dist/suppression/apply-suppression.js.map +1 -1
  127. package/dist/suppression/index.d.ts +2 -2
  128. package/dist/suppression/index.js +1 -1
  129. package/dist/suppression/index.js.map +1 -1
  130. package/dist/suppression/parse-directives.d.ts +1 -1
  131. package/dist/suppression/parse-directives.js +9 -4
  132. package/dist/suppression/parse-directives.js.map +1 -1
  133. package/dist/taint-ast.d.ts +20 -0
  134. package/dist/taint-ast.js +427 -0
  135. package/dist/taint-ast.js.map +1 -0
  136. package/dist/taint-crossfile.d.ts +28 -0
  137. package/dist/taint-crossfile.js +174 -0
  138. package/dist/taint-crossfile.js.map +1 -0
  139. package/dist/taint-findings.d.ts +17 -0
  140. package/dist/taint-findings.js +131 -0
  141. package/dist/taint-findings.js.map +1 -0
  142. package/dist/taint-regex.d.ts +61 -0
  143. package/dist/taint-regex.js +379 -0
  144. package/dist/taint-regex.js.map +1 -0
  145. package/dist/taint-types.d.ts +128 -0
  146. package/dist/taint-types.js +174 -0
  147. package/dist/taint-types.js.map +1 -0
  148. package/dist/taint.d.ts +13 -107
  149. package/dist/taint.js +16 -1067
  150. package/dist/taint.js.map +1 -1
  151. package/dist/template-detector.d.ts +2 -2
  152. package/dist/template-detector.js +11 -16
  153. package/dist/template-detector.js.map +1 -1
  154. package/dist/types.d.ts +35 -0
  155. package/dist/types.js.map +1 -1
  156. package/package.json +3 -3
@@ -89,7 +89,9 @@ function indirectPromptInjection(ctx) {
89
89
  const sanitizeBefore = new RegExp(`(?:sanitize\\w*|escape\\w*|cleanForPrompt)\\s*\\(\\s*${ev}`).test(bodyText);
90
90
  if (sanitizeWraps || sanitizeBefore)
91
91
  continue;
92
- findings.push(finding('indirect-prompt-injection', 'warning', 'bug', `DB result '${varName}' from ${callText.substring(0, 40)} used in LLM prompt without sanitization — indirect injection risk`, ctx.filePath, call.getStartLineNumber(), { suggestion: 'Sanitize DB-sourced content before embedding in LLM prompts — stored data may contain injection payloads' }));
92
+ findings.push(finding('indirect-prompt-injection', 'warning', 'bug', `DB result '${varName}' from ${callText.substring(0, 40)} used in LLM prompt without sanitization — indirect injection risk`, ctx.filePath, call.getStartLineNumber(), {
93
+ suggestion: 'Sanitize DB-sourced content before embedding in LLM prompts — stored data may contain injection payloads',
94
+ }));
93
95
  }
94
96
  return findings;
95
97
  }
@@ -136,12 +138,17 @@ function llmOutputExecution(ctx) {
136
138
  // Check call expressions that are exec sinks
137
139
  for (const call of ctx.sourceFile.getDescendantsOfKind(SyntaxKind.CallExpression)) {
138
140
  const calleeText = call.getExpression().getText();
139
- if (!EXEC_SINKS.test(calleeText + '('))
141
+ if (!EXEC_SINKS.test(`${calleeText}(`))
140
142
  continue;
141
- const argsText = call.getArguments().map(a => a.getText()).join(' ');
143
+ const argsText = call
144
+ .getArguments()
145
+ .map((a) => a.getText())
146
+ .join(' ');
142
147
  for (const v of llmVars) {
143
148
  if (new RegExp(`\\b${v}\\b`).test(argsText)) {
144
- findings.push(finding('llm-output-execution', 'error', 'bug', `LLM output '${v}' passed to ${calleeText}() — arbitrary code execution risk`, ctx.filePath, call.getStartLineNumber(), { suggestion: 'Never execute LLM output directly. Validate against an allowlist or use a sandboxed interpreter' }));
149
+ findings.push(finding('llm-output-execution', 'error', 'bug', `LLM output '${v}' passed to ${calleeText}() — arbitrary code execution risk`, ctx.filePath, call.getStartLineNumber(), {
150
+ suggestion: 'Never execute LLM output directly. Validate against an allowlist or use a sandboxed interpreter',
151
+ }));
145
152
  break;
146
153
  }
147
154
  }
@@ -150,7 +157,10 @@ function llmOutputExecution(ctx) {
150
157
  for (const newExpr of ctx.sourceFile.getDescendantsOfKind(SyntaxKind.NewExpression)) {
151
158
  if (newExpr.getExpression().getText() !== 'Function')
152
159
  continue;
153
- const argsText = newExpr.getArguments().map(a => a.getText()).join(' ');
160
+ const argsText = newExpr
161
+ .getArguments()
162
+ .map((a) => a.getText())
163
+ .join(' ');
154
164
  for (const v of llmVars) {
155
165
  if (new RegExp(`\\b${v}\\b`).test(argsText)) {
156
166
  findings.push(finding('llm-output-execution', 'error', 'bug', `LLM output '${v}' passed to new Function() — arbitrary code execution risk`, ctx.filePath, newExpr.getStartLineNumber(), { suggestion: 'Never execute LLM output. Use a sandboxed interpreter or validate against an allowlist' }));
@@ -189,7 +199,7 @@ function systemPromptLeakage(ctx) {
189
199
  const args = call.getArguments();
190
200
  if (args.length === 0)
191
201
  continue;
192
- const argText = args.map(a => a.getText()).join(' ');
202
+ const argText = args.map((a) => a.getText()).join(' ');
193
203
  if (!SYSTEM_PROMPT_VARS.test(argText))
194
204
  continue;
195
205
  if (isRes) {
@@ -290,7 +300,9 @@ function ragPoisoning(ctx) {
290
300
  }
291
301
  if (sanitized)
292
302
  continue;
293
- findings.push(finding('rag-poisoning', 'warning', 'bug', `Retrieval result '${varName}' from ${callText.substring(0, 40)} embedded in prompt without sanitization — RAG poisoning risk`, ctx.filePath, call.getStartLineNumber(), { suggestion: 'Sanitize retrieved content before embedding in prompts — indexed documents may contain injection payloads' }));
303
+ findings.push(finding('rag-poisoning', 'warning', 'bug', `Retrieval result '${varName}' from ${callText.substring(0, 40)} embedded in prompt without sanitization — RAG poisoning risk`, ctx.filePath, call.getStartLineNumber(), {
304
+ suggestion: 'Sanitize retrieved content before embedding in prompts — indexed documents may contain injection payloads',
305
+ }));
294
306
  }
295
307
  return findings;
296
308
  }
@@ -322,8 +334,7 @@ function toolCallingManipulation(ctx) {
322
334
  continue;
323
335
  const valueText = pa.getInitializer()?.getText() || '';
324
336
  // Check direct user input OR aliased user input (const tool = req.body.tool → tool)
325
- const isUserInput = USER_INPUT_PATTERNS.test(valueText) ||
326
- /\b(userInput|input|query|message)\b/.test(valueText);
337
+ const isUserInput = USER_INPUT_PATTERNS.test(valueText) || /\b(userInput|input|query|message)\b/.test(valueText);
327
338
  // Also check if value is a variable that was assigned from user input
328
339
  let isAliasedInput = false;
329
340
  if (!isUserInput) {
@@ -360,8 +371,7 @@ function toolCallingManipulation(ctx) {
360
371
  continue;
361
372
  const forBody = forOf.getStatement().getText();
362
373
  // Is there an execute/call pattern using the loop variable's .name?
363
- if (/\b(execute|call|invoke|run|dispatch)\w*\s?\(/i.test(forBody) &&
364
- /\.name\b|\.function\b/.test(forBody)) {
374
+ if (/\b(execute|call|invoke|run|dispatch)\w*\s?\(/i.test(forBody) && /\.name\b|\.function\b/.test(forBody)) {
365
375
  // Check if there's an allowlist/validation on the tool NAME before execution
366
376
  if (!/allowlist\w*\.has\s?\(\s?\w+\.name|whitelist\w*\.has\s?\(\s?\w+\.name|allowed\w*\.includes\s?\(\s?\w+\.name|validTools\w*\.has\s?\(\s?\w+\.name/.test(forBody)) {
367
377
  findings.push(finding('tool-calling-manipulation', 'error', 'bug', `LLM-returned tool calls executed without allowlist validation — attacker can invoke arbitrary tools via prompt injection`, ctx.filePath, forOf.getStartLineNumber(), { suggestion: 'Validate tool names against a fixed allowlist before executing LLM-returned tool_calls' }));
@@ -373,9 +383,11 @@ function toolCallingManipulation(ctx) {
373
383
  const calleeText = call.getExpression().getText();
374
384
  if (!/tool_calls\.forEach|toolCalls\.forEach|function_calls\.forEach/.test(calleeText))
375
385
  continue;
376
- const argsText = call.getArguments().map(a => a.getText()).join(' ');
377
- if (/\b(execute|call|invoke|run|dispatch)\w*\s?\(/i.test(argsText) &&
378
- /\.name\b|\.function\b/.test(argsText)) {
386
+ const argsText = call
387
+ .getArguments()
388
+ .map((a) => a.getText())
389
+ .join(' ');
390
+ if (/\b(execute|call|invoke|run|dispatch)\w*\s?\(/i.test(argsText) && /\.name\b|\.function\b/.test(argsText)) {
379
391
  if (!/allowlist\w*\.has\s?\(\s?\w+\.name|whitelist\w*\.has\s?\(\s?\w+\.name|allowed\w*\.includes\s?\(\s?\w+\.name|validTools\w*\.has\s?\(\s?\w+\.name/.test(argsText)) {
380
392
  findings.push(finding('tool-calling-manipulation', 'error', 'bug', `LLM-returned tool calls executed without allowlist validation — attacker can invoke arbitrary tools via prompt injection`, ctx.filePath, call.getStartLineNumber(), { suggestion: 'Validate tool names against a fixed allowlist before executing LLM-returned tool_calls' }));
381
393
  }
@@ -400,7 +412,7 @@ function encodingBypass(ctx) {
400
412
  continue;
401
413
  // Find what variable it's assigned to
402
414
  let varName = '';
403
- let parent = call.getParent();
415
+ const parent = call.getParent();
404
416
  if (parent?.getKind() === SyntaxKind.VariableDeclaration) {
405
417
  varName = parent.getName();
406
418
  }
@@ -420,9 +432,14 @@ function encodingBypass(ctx) {
420
432
  // Re-sanitized after decode?
421
433
  if (new RegExp(`sanitize\\w*\\s*\\(\\s*${varName}|escape\\w*\\s*\\(\\s*${varName}`).test(bodyText))
422
434
  continue;
423
- const decodeFn = callText.includes('atob') ? 'atob()' :
424
- callText.includes('Buffer.from') ? 'Buffer.from()' : 'decodeURIComponent()';
425
- findings.push(finding('encoding-bypass', 'warning', 'bug', `Decoded content '${varName}' from ${decodeFn} used in prompt without re-sanitization — encoding bypass risk`, ctx.filePath, call.getStartLineNumber(), { suggestion: 'Sanitize decoded content before embedding in prompts — base64/hex encoding can bypass input filters' }));
435
+ const decodeFn = callText.includes('atob')
436
+ ? 'atob()'
437
+ : callText.includes('Buffer.from')
438
+ ? 'Buffer.from()'
439
+ : 'decodeURIComponent()';
440
+ findings.push(finding('encoding-bypass', 'warning', 'bug', `Decoded content '${varName}' from ${decodeFn} used in prompt without re-sanitization — encoding bypass risk`, ctx.filePath, call.getStartLineNumber(), {
441
+ suggestion: 'Sanitize decoded content before embedding in prompts — base64/hex encoding can bypass input filters',
442
+ }));
426
443
  }
427
444
  return findings;
428
445
  }
@@ -461,7 +478,9 @@ function delimiterInjection(ctx) {
461
478
  const isUserControlled = USER_INPUT_PATTERNS.test(exprText) ||
462
479
  /^(question|userInput|userMessage|message|input|query|caption|instruction)\b/.test(exprText);
463
480
  if (isUserControlled) {
464
- findings.push(finding('delimiter-injection', 'warning', 'bug', `User input '${exprText.substring(0, 50)}' in delimiter-structured prompt without stripping — delimiter injection risk`, ctx.filePath, template.getStartLineNumber(), { suggestion: 'Strip or escape delimiters (```, ---, ###, XML tags) from user input before embedding in structured prompts' }));
481
+ findings.push(finding('delimiter-injection', 'warning', 'bug', `User input '${exprText.substring(0, 50)}' in delimiter-structured prompt without stripping — delimiter injection risk`, ctx.filePath, template.getStartLineNumber(), {
482
+ suggestion: 'Strip or escape delimiters (```, ---, ###, XML tags) from user input before embedding in structured prompts',
483
+ }));
465
484
  break;
466
485
  }
467
486
  }
@@ -605,20 +624,24 @@ function jsonOutputManipulation(ctx) {
605
624
  continue;
606
625
  // Find what variable the parsed result is assigned to
607
626
  let parsedVar = '';
608
- let parent = call.getParent();
627
+ const parent = call.getParent();
609
628
  if (parent?.getKind() === SyntaxKind.VariableDeclaration) {
610
629
  parsedVar = parent.getName();
611
630
  }
612
- // Check if schema validation follows (exclude JSON.parse itself from matches)
631
+ // Check if schema validation follows THIS specific JSON.parse call
613
632
  const fnBody = call.getFirstAncestorByKind(SyntaxKind.Block);
614
633
  if (!fnBody)
615
634
  continue;
616
- const parseIdx = fnBody.getText().indexOf('JSON.parse');
617
- const bodyAfterParse = fnBody.getText().slice(parseIdx);
635
+ // Use the call's position relative to the block, not indexOf (which finds the first occurrence)
636
+ const callOffset = call.getStart() - fnBody.getStart();
637
+ const bodyAfterParse = fnBody.getText().slice(callOffset);
618
638
  // Remove the JSON.parse call itself to avoid false positive on .parse()
619
639
  const bodyAfterParseCall = bodyAfterParse.replace(/JSON\.parse\s*\([^)]*\)/, '');
620
- const hasValidation = VALIDATION_CALL.test(bodyAfterParseCall) &&
621
- (parsedVar ? new RegExp(`\\b${parsedVar}\\b`).test(bodyAfterParseCall) : true);
640
+ // Only suppress if parsedVar is known AND validated — empty parsedVar means we can't
641
+ // verify which variable is being validated, so don't assume validation
642
+ const hasValidation = parsedVar !== '' &&
643
+ VALIDATION_CALL.test(bodyAfterParseCall) &&
644
+ new RegExp(`\\b${parsedVar}\\b`).test(bodyAfterParseCall);
622
645
  if (hasValidation)
623
646
  continue;
624
647
  findings.push(finding('json-output-manipulation', 'warning', 'bug', `JSON.parse on LLM output '${matchedVar}' without schema validation — output may contain injected keys`, ctx.filePath, call.getStartLineNumber(), { suggestion: 'Validate parsed LLM output with zod/joi/.parse() before using in application logic' }));
@@ -648,7 +671,9 @@ function missingOutputValidation(ctx) {
648
671
  return findings;
649
672
  for (const [varName, declLine] of llmVars) {
650
673
  // Check if this variable is validated before use
651
- const fnBody = ctx.sourceFile.getDescendantsOfKind(SyntaxKind.Block).find(b => b.getStartLineNumber() <= declLine && b.getEndLineNumber() >= declLine);
674
+ const fnBody = ctx.sourceFile
675
+ .getDescendantsOfKind(SyntaxKind.Block)
676
+ .find((b) => b.getStartLineNumber() <= declLine && b.getEndLineNumber() >= declLine);
652
677
  if (!fnBody)
653
678
  continue;
654
679
  const bodyText = fnBody.getText();
@@ -668,7 +693,9 @@ function missingOutputValidation(ctx) {
668
693
  continue;
669
694
  if (!usedInCondition && !usedInReturn && !usedAsArg)
670
695
  continue;
671
- findings.push(finding('missing-output-validation', 'warning', 'bug', `LLM response '${varName}' used in application logic without validation`, ctx.filePath, declLine, { suggestion: 'Validate LLM output with a schema before using in conditionals, returns, or function arguments' }));
696
+ findings.push(finding('missing-output-validation', 'warning', 'bug', `LLM response '${varName}' used in application logic without validation`, ctx.filePath, declLine, {
697
+ suggestion: 'Validate LLM output with a schema before using in conditionals, returns, or function arguments',
698
+ }));
672
699
  }
673
700
  return findings;
674
701
  }
@@ -1 +1 @@
1
- {"version":3,"file":"security-v4.js","sourceRoot":"","sources":["../../src/rules/security-v4.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"security-v4.js","sourceRoot":"","sources":["../../src/rules/security-v4.ts"],"names":[],"mappings":"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"}
@@ -83,13 +83,43 @@ function hardcodedSecret(ctx) {
83
83
  // Skip if it's clearly an env reference placeholder
84
84
  if (value.startsWith('process.env') || value === '' || value === 'TODO' || value === 'CHANGE_ME')
85
85
  continue;
86
- findings.push(finding('hardcoded-secret', 'error', 'bug', `Hardcoded secret in '${varName}' — use environment variables`, ctx.filePath, stmt.getStartLineNumber(), { suggestion: `Replace with process.env.${varName.toUpperCase()} or a secret manager` }));
86
+ const envVar = varName.toUpperCase().replace(/[^A-Z0-9_]/g, '_');
87
+ findings.push(finding('hardcoded-secret', 'error', 'bug', `Hardcoded secret in '${varName}' — use environment variables`, ctx.filePath, stmt.getStartLineNumber(), {
88
+ suggestion: `Replace with process.env.${envVar} or a secret manager`,
89
+ autofix: {
90
+ type: 'replace',
91
+ span: {
92
+ file: ctx.filePath,
93
+ startLine: init.getStartLineNumber(),
94
+ startCol: init.getStart() - ctx.sourceFile.getFullText().lastIndexOf('\n', init.getStart()),
95
+ endLine: init.getEndLineNumber(),
96
+ endCol: init.getEnd() - ctx.sourceFile.getFullText().lastIndexOf('\n', init.getEnd() - 1),
97
+ },
98
+ replacement: `process.env.${envVar}`,
99
+ description: `Replace hardcoded secret with process.env.${envVar}`,
100
+ },
101
+ }));
87
102
  continue;
88
103
  }
89
104
  // Check if value matches known secret patterns
90
105
  for (const { pattern, label } of SECRET_PATTERNS) {
91
106
  if (pattern.test(value)) {
92
- findings.push(finding('hardcoded-secret', 'error', 'bug', `Hardcoded ${label} detected in '${varName}' — use environment variables`, ctx.filePath, stmt.getStartLineNumber(), { suggestion: `Move to .env file and use process.env.${varName.toUpperCase()}` }));
107
+ const envKey = varName.toUpperCase().replace(/[^A-Z0-9_]/g, '_');
108
+ findings.push(finding('hardcoded-secret', 'error', 'bug', `Hardcoded ${label} detected in '${varName}' — use environment variables`, ctx.filePath, stmt.getStartLineNumber(), {
109
+ suggestion: `Move to .env file and use process.env.${envKey}`,
110
+ autofix: {
111
+ type: 'replace',
112
+ span: {
113
+ file: ctx.filePath,
114
+ startLine: init.getStartLineNumber(),
115
+ startCol: init.getStart() - ctx.sourceFile.getFullText().lastIndexOf('\n', init.getStart()),
116
+ endLine: init.getEndLineNumber(),
117
+ endCol: init.getEnd() - ctx.sourceFile.getFullText().lastIndexOf('\n', init.getEnd() - 1),
118
+ },
119
+ replacement: `process.env.${envKey}`,
120
+ description: `Replace hardcoded ${label} with process.env.${envKey}`,
121
+ },
122
+ }));
93
123
  break;
94
124
  }
95
125
  }
@@ -207,11 +237,11 @@ function corsWildcard(ctx) {
207
237
  const init = pa.getInitializer();
208
238
  if (init && init.getKind() === SyntaxKind.StringLiteral) {
209
239
  if (init.getLiteralValue() === '*') {
210
- findings.push(finding('cors-wildcard', 'warning', 'bug', "cors origin: '*' allows any domain — restrict in production", ctx.filePath, call.getStartLineNumber(), { suggestion: "Set origin to specific domains or a validation function" }));
240
+ findings.push(finding('cors-wildcard', 'warning', 'bug', "cors origin: '*' allows any domain — restrict in production", ctx.filePath, call.getStartLineNumber(), { suggestion: 'Set origin to specific domains or a validation function' }));
211
241
  }
212
242
  }
213
243
  if (init && init.getKind() === SyntaxKind.TrueKeyword) {
214
- findings.push(finding('cors-wildcard', 'warning', 'bug', 'cors origin: true reflects any origin — restrict in production', ctx.filePath, call.getStartLineNumber(), { suggestion: "Set origin to specific domains or a validation function" }));
244
+ findings.push(finding('cors-wildcard', 'warning', 'bug', 'cors origin: true reflects any origin — restrict in production', ctx.filePath, call.getStartLineNumber(), { suggestion: 'Set origin to specific domains or a validation function' }));
215
245
  }
216
246
  }
217
247
  }
@@ -245,7 +275,7 @@ function helmetMissing(ctx) {
245
275
  }
246
276
  }
247
277
  if (!hasHelmet) {
248
- findings.push(finding('helmet-missing', 'warning', 'bug', 'Express app without helmet — missing security headers (CSP, HSTS, X-Frame-Options)', ctx.filePath, appLine, { suggestion: "npm install helmet && app.use(helmet())" }));
278
+ findings.push(finding('helmet-missing', 'warning', 'bug', 'Express app without helmet — missing security headers (CSP, HSTS, X-Frame-Options)', ctx.filePath, appLine, { suggestion: 'npm install helmet && app.use(helmet())' }));
249
279
  }
250
280
  return findings;
251
281
  }
@@ -1 +1 @@
1
- {"version":3,"file":"security.js","sourceRoot":"","sources":["../../src/rules/security.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"security.js","sourceRoot":"","sources":["../../src/rules/security.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Terminal review rules — active when target = terminal.
3
+ *
4
+ * Focused on interactive ANSI / readline terminal apps.
5
+ * Codex base rules + Claude extras (signal-handler, cursor-restore, unthrottled-render).
6
+ */
7
+ import type { ReviewRule } from '../types.js';
8
+ export declare const terminalRules: ReviewRule[];
@@ -0,0 +1,139 @@
1
+ /**
2
+ * Terminal review rules — active when target = terminal.
3
+ *
4
+ * Focused on interactive ANSI / readline terminal apps.
5
+ * Codex base rules + Claude extras (signal-handler, cursor-restore, unthrottled-render).
6
+ */
7
+ import { finding } from './utils.js';
8
+ function lineForIndex(text, index) {
9
+ return text.slice(0, index).split('\n').length;
10
+ }
11
+ function matchLine(text, pattern) {
12
+ const match = pattern.exec(text);
13
+ return match ? lineForIndex(text, match.index) : null;
14
+ }
15
+ // ── Rule: terminal-missing-tty-guard (Codex) ────────────────────────────
16
+ function missingTtyGuard(ctx) {
17
+ const fullText = ctx.sourceFile.getFullText();
18
+ const interactivePattern = /\b(?:readline\.)?createInterface\s*\(|\b(?:process\.)?stdin\.setRawMode\s*\(\s*true|\b(?:process\.)?stdout\.(?:write|clearLine|cursorTo|clearScreenDown)\s*\(|\?1049h|\x1b\[|\u001b\[/;
19
+ if (!interactivePattern.test(fullText))
20
+ return [];
21
+ if (/\b(?:process\.)?(?:stdout|stdin)\.isTTY\b|\btty\.isatty\s*\(/.test(fullText))
22
+ return [];
23
+ const line = matchLine(fullText, interactivePattern) ?? 1;
24
+ return [
25
+ finding('terminal-missing-tty-guard', 'warning', 'bug', 'Interactive terminal code runs without a TTY guard — pipes and non-interactive shells will render incorrectly', ctx.filePath, line, 1, {
26
+ suggestion: 'Guard interactive paths with process.stdout.isTTY / process.stdin.isTTY before enabling ANSI UI features',
27
+ }),
28
+ ];
29
+ }
30
+ // ── Rule: terminal-raw-mode-no-restore (Codex) ──────────────────────────
31
+ function rawModeNoRestore(ctx) {
32
+ const fullText = ctx.sourceFile.getFullText();
33
+ const enable = /\.setRawMode\s*\(\s*true\s*\)/g;
34
+ if (!enable.test(fullText))
35
+ return [];
36
+ if (/\.setRawMode\s*\(\s*false\s*\)/.test(fullText))
37
+ return [];
38
+ enable.lastIndex = 0;
39
+ const match = enable.exec(fullText);
40
+ const line = match ? lineForIndex(fullText, match.index) : 1;
41
+ return [
42
+ finding('terminal-raw-mode-no-restore', 'error', 'bug', 'stdin raw mode is enabled without restoring it — the shell can be left in a broken state after exit', ctx.filePath, line, 1, { suggestion: 'Restore raw mode in cleanup handlers with process.stdin.setRawMode(false)' }),
43
+ ];
44
+ }
45
+ // ── Rule: terminal-readline-no-close (Codex) ────────────────────────────
46
+ function readlineNoClose(ctx) {
47
+ const findings = [];
48
+ const fullText = ctx.sourceFile.getFullText();
49
+ const decl = /\b(?:const|let|var)\s+(\w+)\s*=\s*(?:readline\.)?createInterface\s*\(/g;
50
+ let match;
51
+ while ((match = decl.exec(fullText)) !== null) {
52
+ const name = match[1];
53
+ const closePattern = new RegExp(`\\b${name}\\.close\\s*\\(`);
54
+ if (closePattern.test(fullText))
55
+ continue;
56
+ findings.push(finding('terminal-readline-no-close', 'warning', 'bug', `Readline interface '${name}' is never closed — stdin can remain open and keep the process hanging`, ctx.filePath, lineForIndex(fullText, match.index), 1, { suggestion: `Call ${name}.close() in completion and shutdown paths` }));
57
+ }
58
+ return findings;
59
+ }
60
+ // ── Rule: terminal-alt-screen-no-restore (Codex) ────────────────────────
61
+ function altScreenNoRestore(ctx) {
62
+ const fullText = ctx.sourceFile.getFullText();
63
+ const enter = /\?1049h|\?47h/g;
64
+ if (!enter.test(fullText))
65
+ return [];
66
+ if (/\?1049l|\?47l/.test(fullText))
67
+ return [];
68
+ enter.lastIndex = 0;
69
+ const match = enter.exec(fullText);
70
+ const line = match ? lineForIndex(fullText, match.index) : 1;
71
+ return [
72
+ finding('terminal-alt-screen-no-restore', 'warning', 'bug', 'Terminal app enters the alternate screen without restoring it on exit — users can be left in a blank session', ctx.filePath, line, 1, { suggestion: 'Emit the matching ?1049l / ?47l escape sequence during shutdown and signal cleanup' }),
73
+ ];
74
+ }
75
+ // ── Rule: terminal-missing-signal-handler (Claude) ──────────────────────
76
+ function missingSignalHandler(ctx) {
77
+ const fullText = ctx.sourceFile.getFullText();
78
+ // Only check files that do terminal-specific work
79
+ const isTerminal = /\b(setRawMode|cursorTo|clearLine|moveCursor|createInterface|blessed|inquirer|ora|chalk\.)\b/.test(fullText);
80
+ if (!isTerminal)
81
+ return [];
82
+ const hasSigint = /process\.on\s*\(\s*['"`]SIGINT['"`]/.test(fullText);
83
+ const hasSigterm = /process\.on\s*\(\s*['"`]SIGTERM['"`]/.test(fullText);
84
+ if (!hasSigint && !hasSigterm) {
85
+ const termMatch = fullText.match(/\b(setRawMode|cursorTo|clearLine|moveCursor|createInterface)\b/);
86
+ const line = termMatch ? lineForIndex(fullText, termMatch.index) : 1;
87
+ return [
88
+ finding('terminal-missing-signal-handler', 'warning', 'pattern', 'Terminal app has no SIGINT/SIGTERM handler — cleanup code may not run on Ctrl+C', ctx.filePath, line, 1, { suggestion: 'Add process.on("SIGINT", () => { cleanup(); process.exit(130); })' }),
89
+ ];
90
+ }
91
+ return [];
92
+ }
93
+ // ── Rule: terminal-cursor-not-restored (Claude) ─────────────────────────
94
+ function cursorNotRestored(ctx) {
95
+ const fullText = ctx.sourceFile.getFullText();
96
+ const hidesCursor = /\\(?:x1[Bb]|u001[Bb]|e|033)\[\?25l/.test(fullText) ||
97
+ fullText.includes('cursor(false)') ||
98
+ fullText.includes('hideCursor') ||
99
+ fullText.includes('cursor.hide');
100
+ if (!hidesCursor)
101
+ return [];
102
+ const restoresCursor = /\\(?:x1[Bb]|u001[Bb]|e|033)\[\?25h/.test(fullText) ||
103
+ fullText.includes('cursor(true)') ||
104
+ fullText.includes('showCursor') ||
105
+ fullText.includes('cursor.show');
106
+ if (!restoresCursor) {
107
+ const match = fullText.match(/(?:hideCursor|cursor\.hide|cursor\(false\)|\?\s*25\s*l)/);
108
+ const line = match ? lineForIndex(fullText, match.index) : 1;
109
+ return [
110
+ finding('terminal-cursor-not-restored', 'warning', 'bug', 'Cursor hidden without restore — cursor will stay invisible after exit', ctx.filePath, line, 1, { suggestion: 'Add process.on("exit", () => process.stdout.write("\\x1B[?25h"))' }),
111
+ ];
112
+ }
113
+ return [];
114
+ }
115
+ // ── Rule: terminal-unthrottled-render (Claude) ──────────────────────────
116
+ function unthrottledRender(ctx) {
117
+ const findings = [];
118
+ const fullText = ctx.sourceFile.getFullText();
119
+ const intervalRegex = /setInterval\s*\([^,]+,\s*(\d+)\s*\)/g;
120
+ let match;
121
+ while ((match = intervalRegex.exec(fullText)) !== null) {
122
+ const ms = parseInt(match[1], 10);
123
+ if (ms < 16) {
124
+ const line = lineForIndex(fullText, match.index);
125
+ findings.push(finding('terminal-unthrottled-render', 'warning', 'pattern', `setInterval at ${ms}ms (>${Math.round(1000 / ms)}fps) — excessive terminal redraws cause flicker`, ctx.filePath, line, 1, { suggestion: 'Use ≥16ms (60fps) for smooth terminal rendering without excess CPU' }));
126
+ }
127
+ }
128
+ return findings;
129
+ }
130
+ export const terminalRules = [
131
+ missingTtyGuard,
132
+ rawModeNoRestore,
133
+ readlineNoClose,
134
+ altScreenNoRestore,
135
+ missingSignalHandler,
136
+ cursorNotRestored,
137
+ unthrottledRender,
138
+ ];
139
+ //# sourceMappingURL=terminal.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"terminal.js","sourceRoot":"","sources":["../../src/rules/terminal.ts"],"names":[],"mappings":"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"}