codeslick-cli 1.4.0 → 1.4.1

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 (138) hide show
  1. package/dist/packages/cli/src/commands/scan.d.ts.map +1 -1
  2. package/dist/packages/cli/src/commands/scan.js +7 -3
  3. package/dist/packages/cli/src/commands/scan.js.map +1 -1
  4. package/dist/packages/cli/src/reporters/cli-reporter.d.ts +11 -0
  5. package/dist/packages/cli/src/reporters/cli-reporter.d.ts.map +1 -1
  6. package/dist/packages/cli/src/reporters/cli-reporter.js +150 -45
  7. package/dist/packages/cli/src/reporters/cli-reporter.js.map +1 -1
  8. package/dist/packages/cli/src/scanner/local-scanner.d.ts +2 -2
  9. package/dist/packages/cli/src/scanner/local-scanner.d.ts.map +1 -1
  10. package/dist/packages/cli/src/scanner/local-scanner.js +40 -9
  11. package/dist/packages/cli/src/scanner/local-scanner.js.map +1 -1
  12. package/dist/src/lib/analyzers/go-analyzer.d.ts +12 -0
  13. package/dist/src/lib/analyzers/go-analyzer.d.ts.map +1 -1
  14. package/dist/src/lib/analyzers/go-analyzer.js +113 -0
  15. package/dist/src/lib/analyzers/go-analyzer.js.map +1 -1
  16. package/dist/src/lib/analyzers/iac/pii-detector.d.ts +27 -0
  17. package/dist/src/lib/analyzers/iac/pii-detector.d.ts.map +1 -0
  18. package/dist/src/lib/analyzers/iac/pii-detector.js +199 -0
  19. package/dist/src/lib/analyzers/iac/pii-detector.js.map +1 -0
  20. package/dist/src/lib/analyzers/iac/pii-patterns.d.ts +43 -0
  21. package/dist/src/lib/analyzers/iac/pii-patterns.d.ts.map +1 -0
  22. package/dist/src/lib/analyzers/iac/pii-patterns.js +228 -0
  23. package/dist/src/lib/analyzers/iac/pii-patterns.js.map +1 -0
  24. package/dist/src/lib/analyzers/java-analyzer.d.ts +5 -0
  25. package/dist/src/lib/analyzers/java-analyzer.d.ts.map +1 -1
  26. package/dist/src/lib/analyzers/java-analyzer.js +51 -0
  27. package/dist/src/lib/analyzers/java-analyzer.js.map +1 -1
  28. package/dist/src/lib/analyzers/javascript/quality-checks/ai-hallucinations.d.ts +8 -4
  29. package/dist/src/lib/analyzers/javascript/quality-checks/ai-hallucinations.d.ts.map +1 -1
  30. package/dist/src/lib/analyzers/javascript/quality-checks/ai-hallucinations.js +109 -13
  31. package/dist/src/lib/analyzers/javascript/quality-checks/ai-hallucinations.js.map +1 -1
  32. package/dist/src/lib/analyzers/javascript/quality-checks/reference-errors.d.ts.map +1 -1
  33. package/dist/src/lib/analyzers/javascript/quality-checks/reference-errors.js +7 -8
  34. package/dist/src/lib/analyzers/javascript/quality-checks/reference-errors.js.map +1 -1
  35. package/dist/src/lib/analyzers/javascript-analyzer.d.ts.map +1 -1
  36. package/dist/src/lib/analyzers/javascript-analyzer.js +16 -12
  37. package/dist/src/lib/analyzers/javascript-analyzer.js.map +1 -1
  38. package/dist/src/lib/analyzers/kubernetes/checks/network-security.d.ts +33 -0
  39. package/dist/src/lib/analyzers/kubernetes/checks/network-security.d.ts.map +1 -0
  40. package/dist/src/lib/analyzers/kubernetes/checks/network-security.js +184 -0
  41. package/dist/src/lib/analyzers/kubernetes/checks/network-security.js.map +1 -0
  42. package/dist/src/lib/analyzers/kubernetes/checks/pod-security.d.ts +60 -0
  43. package/dist/src/lib/analyzers/kubernetes/checks/pod-security.d.ts.map +1 -0
  44. package/dist/src/lib/analyzers/kubernetes/checks/pod-security.js +418 -0
  45. package/dist/src/lib/analyzers/kubernetes/checks/pod-security.js.map +1 -0
  46. package/dist/src/lib/analyzers/kubernetes/checks/rbac-security.d.ts +44 -0
  47. package/dist/src/lib/analyzers/kubernetes/checks/rbac-security.d.ts.map +1 -0
  48. package/dist/src/lib/analyzers/kubernetes/checks/rbac-security.js +275 -0
  49. package/dist/src/lib/analyzers/kubernetes/checks/rbac-security.js.map +1 -0
  50. package/dist/src/lib/analyzers/kubernetes/checks/resource-management.d.ts +32 -0
  51. package/dist/src/lib/analyzers/kubernetes/checks/resource-management.d.ts.map +1 -0
  52. package/dist/src/lib/analyzers/kubernetes/checks/resource-management.js +176 -0
  53. package/dist/src/lib/analyzers/kubernetes/checks/resource-management.js.map +1 -0
  54. package/dist/src/lib/analyzers/kubernetes/checks/secrets-management.d.ts +38 -0
  55. package/dist/src/lib/analyzers/kubernetes/checks/secrets-management.d.ts.map +1 -0
  56. package/dist/src/lib/analyzers/kubernetes/checks/secrets-management.js +266 -0
  57. package/dist/src/lib/analyzers/kubernetes/checks/secrets-management.js.map +1 -0
  58. package/dist/src/lib/analyzers/kubernetes/checks/service-security.d.ts +26 -0
  59. package/dist/src/lib/analyzers/kubernetes/checks/service-security.d.ts.map +1 -0
  60. package/dist/src/lib/analyzers/kubernetes/checks/service-security.js +120 -0
  61. package/dist/src/lib/analyzers/kubernetes/checks/service-security.js.map +1 -0
  62. package/dist/src/lib/analyzers/kubernetes/parser.d.ts +74 -0
  63. package/dist/src/lib/analyzers/kubernetes/parser.d.ts.map +1 -0
  64. package/dist/src/lib/analyzers/kubernetes/parser.js +233 -0
  65. package/dist/src/lib/analyzers/kubernetes/parser.js.map +1 -0
  66. package/dist/src/lib/analyzers/kubernetes/pii-detector.d.ts +34 -0
  67. package/dist/src/lib/analyzers/kubernetes/pii-detector.d.ts.map +1 -0
  68. package/dist/src/lib/analyzers/kubernetes/pii-detector.js +182 -0
  69. package/dist/src/lib/analyzers/kubernetes/pii-detector.js.map +1 -0
  70. package/dist/src/lib/analyzers/kubernetes/types.d.ts +266 -0
  71. package/dist/src/lib/analyzers/kubernetes/types.d.ts.map +1 -0
  72. package/dist/src/lib/analyzers/kubernetes/types.js +77 -0
  73. package/dist/src/lib/analyzers/kubernetes/types.js.map +1 -0
  74. package/dist/src/lib/analyzers/kubernetes-analyzer.d.ts +93 -0
  75. package/dist/src/lib/analyzers/kubernetes-analyzer.d.ts.map +1 -0
  76. package/dist/src/lib/analyzers/kubernetes-analyzer.js +215 -0
  77. package/dist/src/lib/analyzers/kubernetes-analyzer.js.map +1 -0
  78. package/dist/src/lib/analyzers/python-analyzer.d.ts.map +1 -1
  79. package/dist/src/lib/analyzers/python-analyzer.js +32 -48
  80. package/dist/src/lib/analyzers/python-analyzer.js.map +1 -1
  81. package/dist/src/lib/analyzers/secrets/patterns/api-keys/ai-providers.d.ts +1 -1
  82. package/dist/src/lib/analyzers/secrets/patterns/api-keys/ai-providers.d.ts.map +1 -1
  83. package/dist/src/lib/analyzers/secrets/patterns/api-keys/aws.d.ts +1 -1
  84. package/dist/src/lib/analyzers/secrets/patterns/api-keys/aws.d.ts.map +1 -1
  85. package/dist/src/lib/analyzers/secrets/patterns/api-keys/cloud-providers.d.ts +1 -1
  86. package/dist/src/lib/analyzers/secrets/patterns/api-keys/cloud-providers.d.ts.map +1 -1
  87. package/dist/src/lib/analyzers/secrets/patterns/api-keys/communication.d.ts +1 -1
  88. package/dist/src/lib/analyzers/secrets/patterns/api-keys/communication.d.ts.map +1 -1
  89. package/dist/src/lib/analyzers/secrets/patterns/api-keys/generic.d.ts +1 -1
  90. package/dist/src/lib/analyzers/secrets/patterns/api-keys/generic.d.ts.map +1 -1
  91. package/dist/src/lib/analyzers/secrets/patterns/api-keys/github.d.ts +1 -1
  92. package/dist/src/lib/analyzers/secrets/patterns/api-keys/github.d.ts.map +1 -1
  93. package/dist/src/lib/analyzers/secrets/patterns/api-keys/stripe.d.ts +1 -1
  94. package/dist/src/lib/analyzers/secrets/patterns/api-keys/stripe.d.ts.map +1 -1
  95. package/dist/src/lib/analyzers/secrets/patterns/api-keys.d.ts +1 -1
  96. package/dist/src/lib/analyzers/secrets/patterns/api-keys.d.ts.map +1 -1
  97. package/dist/src/lib/analyzers/secrets/patterns/credentials.d.ts +1 -1
  98. package/dist/src/lib/analyzers/secrets/patterns/credentials.d.ts.map +1 -1
  99. package/dist/src/lib/analyzers/secrets/patterns/private-keys.d.ts +1 -1
  100. package/dist/src/lib/analyzers/secrets/patterns/private-keys.d.ts.map +1 -1
  101. package/dist/src/lib/analyzers/secrets/patterns/tokens.d.ts +1 -1
  102. package/dist/src/lib/analyzers/secrets/patterns/tokens.d.ts.map +1 -1
  103. package/dist/src/lib/analyzers/secrets/secrets-analyzer.d.ts +2 -32
  104. package/dist/src/lib/analyzers/secrets/secrets-analyzer.d.ts.map +1 -1
  105. package/dist/src/lib/analyzers/secrets/secrets-analyzer.js.map +1 -1
  106. package/dist/src/lib/analyzers/secrets/types.d.ts +40 -0
  107. package/dist/src/lib/analyzers/secrets/types.d.ts.map +1 -0
  108. package/dist/src/lib/analyzers/secrets/types.js +10 -0
  109. package/dist/src/lib/analyzers/secrets/types.js.map +1 -0
  110. package/dist/src/lib/analyzers/terraform-analyzer.d.ts +1 -0
  111. package/dist/src/lib/analyzers/terraform-analyzer.d.ts.map +1 -1
  112. package/dist/src/lib/analyzers/terraform-analyzer.js +28 -0
  113. package/dist/src/lib/analyzers/terraform-analyzer.js.map +1 -1
  114. package/dist/src/lib/analyzers/typescript-analyzer.d.ts +5 -0
  115. package/dist/src/lib/analyzers/typescript-analyzer.d.ts.map +1 -1
  116. package/dist/src/lib/analyzers/typescript-analyzer.js +76 -0
  117. package/dist/src/lib/analyzers/typescript-analyzer.js.map +1 -1
  118. package/dist/src/lib/analyzers/utils/false-positive-filter.d.ts +27 -0
  119. package/dist/src/lib/analyzers/utils/false-positive-filter.d.ts.map +1 -0
  120. package/dist/src/lib/analyzers/utils/false-positive-filter.js +176 -0
  121. package/dist/src/lib/analyzers/utils/false-positive-filter.js.map +1 -0
  122. package/dist/src/lib/security/epss-service.d.ts.map +1 -1
  123. package/dist/src/lib/security/epss-service.js +27 -8
  124. package/dist/src/lib/security/epss-service.js.map +1 -1
  125. package/dist/src/lib/security/severity-scoring.d.ts.map +1 -1
  126. package/dist/src/lib/security/severity-scoring.js +24 -0
  127. package/dist/src/lib/security/severity-scoring.js.map +1 -1
  128. package/dist/src/lib/types/index.d.ts +3 -3
  129. package/dist/src/lib/types/index.d.ts.map +1 -1
  130. package/dist/src/lib/utils/ignore-patterns.d.ts +60 -0
  131. package/dist/src/lib/utils/ignore-patterns.d.ts.map +1 -0
  132. package/dist/src/lib/utils/ignore-patterns.js +212 -0
  133. package/dist/src/lib/utils/ignore-patterns.js.map +1 -0
  134. package/package.json +1 -1
  135. package/src/commands/scan.ts +7 -3
  136. package/src/reporters/cli-reporter.ts +174 -48
  137. package/src/scanner/local-scanner.ts +54 -10
  138. package/tsconfig.tsbuildinfo +0 -1
@@ -9,7 +9,7 @@
9
9
  * - No API calls required (fully offline)
10
10
  * - Fast scanning (<3s for 10 files)
11
11
  * - Same analysis engine as GitHub App and WebTool
12
- * - Supports JavaScript, TypeScript, Python, Java, Go, Terraform
12
+ * - Supports JavaScript, TypeScript, Python, Java, Go, Terraform, Kubernetes
13
13
  *
14
14
  * @module packages/cli/src/scanner/local-scanner
15
15
  */
@@ -55,6 +55,7 @@ exports.scanFiles = scanFiles;
55
55
  exports.exceedsThreshold = exceedsThreshold;
56
56
  const promises_1 = require("fs/promises");
57
57
  const path_1 = require("path");
58
+ const ignore_patterns_1 = require("../../../../src/lib/utils/ignore-patterns");
58
59
  /**
59
60
  * Detect programming language from file extension
60
61
  */
@@ -78,6 +79,9 @@ function detectLanguage(filePath) {
78
79
  if (ext.endsWith('.tf') || ext.endsWith('.tfvars')) {
79
80
  return 'terraform';
80
81
  }
82
+ if (ext.endsWith('.yaml') || ext.endsWith('.yml')) {
83
+ return 'kubernetes';
84
+ }
81
85
  return null;
82
86
  }
83
87
  /**
@@ -137,9 +141,25 @@ async function scanFile(filePath, config = {}) {
137
141
  if (!language) {
138
142
  return null; // Unsupported file type
139
143
  }
140
- // Check exclusions
144
+ // Check .codeslickignore patterns (from file at project root)
145
+ if ((0, ignore_patterns_1.shouldIgnoreFile)(filePath)) {
146
+ return null; // File excluded by .codeslickignore
147
+ }
148
+ // Check if file is analyzer implementation (contains detection patterns, not vulnerabilities)
149
+ if ((0, ignore_patterns_1.isAnalyzerImplementation)(filePath)) {
150
+ return null; // Analyzer implementation file excluded
151
+ }
152
+ // Check if file is educational/example content (may have intentional vulnerabilities)
153
+ if ((0, ignore_patterns_1.isEducationalContent)(filePath)) {
154
+ return null; // Educational content excluded
155
+ }
156
+ // Check if file is a test file (may have intentional vulnerabilities)
157
+ if ((0, ignore_patterns_1.isTestFile)(filePath)) {
158
+ return null; // Test file excluded
159
+ }
160
+ // Check command-line exclusions (backward compatibility)
141
161
  if (config.exclude && shouldExclude(filePath, config.exclude)) {
142
- return null; // File excluded by pattern
162
+ return null; // File excluded by CLI pattern
143
163
  }
144
164
  // Read file content
145
165
  const code = await (0, promises_1.readFile)(filePath, 'utf-8');
@@ -184,6 +204,12 @@ async function scanFile(filePath, config = {}) {
184
204
  result = await analyzer.analyze({ code, filename: filePath, options: analyzerOptions });
185
205
  break;
186
206
  }
207
+ case 'kubernetes': {
208
+ const { KubernetesAnalyzer } = await Promise.resolve().then(() => __importStar(require('../../../../src/lib/analyzers/kubernetes-analyzer')));
209
+ const analyzer = new KubernetesAnalyzer();
210
+ result = await analyzer.analyze({ code, filename: filePath, options: analyzerOptions });
211
+ break;
212
+ }
187
213
  default:
188
214
  return null;
189
215
  }
@@ -220,11 +246,16 @@ async function scanFiles(filePaths, config = {}) {
220
246
  const otherFiles = [];
221
247
  for (const filePath of filePaths) {
222
248
  const language = detectLanguage(filePath);
249
+ // Check all exclusion rules before categorizing
250
+ if ((0, ignore_patterns_1.shouldIgnoreFile)(filePath) ||
251
+ (0, ignore_patterns_1.isAnalyzerImplementation)(filePath) ||
252
+ (0, ignore_patterns_1.isEducationalContent)(filePath) ||
253
+ (0, ignore_patterns_1.isTestFile)(filePath) ||
254
+ (config.exclude && shouldExclude(filePath, config.exclude))) {
255
+ continue; // Skip this file
256
+ }
223
257
  if (language === 'typescript') {
224
- // Check exclusions before adding to batch
225
- if (!config.exclude || !shouldExclude(filePath, config.exclude)) {
226
- tsFiles.push(filePath);
227
- }
258
+ tsFiles.push(filePath);
228
259
  }
229
260
  else if (language) {
230
261
  otherFiles.push(filePath);
@@ -255,8 +286,8 @@ async function scanFiles(filePaths, config = {}) {
255
286
  async function scanTypeScriptBatch(filePaths, _config = {}) {
256
287
  const { readFile } = await Promise.resolve().then(() => __importStar(require('fs/promises')));
257
288
  const { relative } = await Promise.resolve().then(() => __importStar(require('path')));
258
- // Import batch diagnostics function
259
- const { getBatchTypeScriptDiagnostics, convertDiagnosticsToIssues } = await Promise.resolve().then(() => __importStar(require('../../../../src/lib/analyzers/typescript/type-checker')));
289
+ // Import batch diagnostics function from @codeslick/ast-utils package
290
+ const { getBatchTypeScriptDiagnostics, convertDiagnosticsToIssues } = await Promise.resolve().then(() => __importStar(require('@codeslick/ast-utils')));
260
291
  // Get batch diagnostics for all TypeScript files at once
261
292
  const batchResult = getBatchTypeScriptDiagnostics(filePaths);
262
293
  // Import TypeScript analyzer for security checks (runs separately)
@@ -1 +1 @@
1
- {"version":3,"file":"local-scanner.js","sourceRoot":"","sources":["../../../../../src/scanner/local-scanner.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"local-scanner.js","sourceRoot":"","sources":["../../../../../src/scanner/local-scanner.ts"],"names":[],"mappings":"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"}
@@ -44,6 +44,18 @@ export declare class GoAnalyzer implements ICodeAnalyzer {
44
44
  private analyzePerformance;
45
45
  private analyzeSecurity;
46
46
  private calculateMetrics;
47
+ /**
48
+ * Phase 1.5 Week 7: AI Hallucination Detection (TIER 1)
49
+ *
50
+ * Detects individual method/property hallucinations from other languages (JS, Python, Java)
51
+ * These are SYNTAX ERRORS that should be highlighted individually in the editor.
52
+ *
53
+ * TIER 1 (syntax errors) → Individual `lineErrors` for Monaco editor highlighting
54
+ * TIER 2 (code smells) → Aggregated `checkAIGeneratedCode()` with OWASP mapping
55
+ *
56
+ * @see docs/features/AI_HALLUCINATION_DETECTION.md
57
+ */
58
+ private detectAIHallucinations;
47
59
  /**
48
60
  * Detect if code is likely production code based on file path
49
61
  * Feature 1 Phase 1: Environment context for smart triage
@@ -1 +1 @@
1
- {"version":3,"file":"go-analyzer.d.ts","sourceRoot":"","sources":["../../../../../../src/lib/analyzers/go-analyzer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAEH,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,cAAc,EAAoC,MAAM,SAAS,CAAC;AACzG,OAAO,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAgB7C,qBAAa,UAAW,YAAW,aAAa;IAC9C,SAAgB,QAAQ,EAAE,iBAAiB,CAAQ;IAE7C,OAAO,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO,CAAC,cAAc,CAAC;IA6CtD,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAoBpD,eAAe;;;;;IAQf,OAAO,CAAC,aAAa;IA4DrB,OAAO,CAAC,cAAc;IAyBtB,OAAO,CAAC,kBAAkB;IAO1B,OAAO,CAAC,eAAe;IA8CvB,OAAO,CAAC,gBAAgB;IA4BxB;;;OAGG;IACH,OAAO,CAAC,uBAAuB;CA8BhC"}
1
+ {"version":3,"file":"go-analyzer.d.ts","sourceRoot":"","sources":["../../../../../../src/lib/analyzers/go-analyzer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAEH,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,cAAc,EAAoC,MAAM,SAAS,CAAC;AACzG,OAAO,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAiB7C,qBAAa,UAAW,YAAW,aAAa;IAC9C,SAAgB,QAAQ,EAAE,iBAAiB,CAAQ;IAE7C,OAAO,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO,CAAC,cAAc,CAAC;IAmDtD,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAoBpD,eAAe;;;;;IAQf,OAAO,CAAC,aAAa;IA+DrB,OAAO,CAAC,cAAc;IAyBtB,OAAO,CAAC,kBAAkB;IAO1B,OAAO,CAAC,eAAe;IA8CvB,OAAO,CAAC,gBAAgB;IA4BxB;;;;;;;;;;OAUG;IACH,OAAO,CAAC,sBAAsB;IAkH9B;;;OAGG;IACH,OAAO,CAAC,uBAAuB;CA8BhC"}
@@ -45,6 +45,7 @@ const ai_generated_code_1 = require("./go/security-checks/ai-generated-code");
45
45
  const enhanced_supply_chain_1 = require("./go/security-checks/enhanced-supply-chain");
46
46
  const code_quality_1 = require("./go/quality-checks/code-quality");
47
47
  const triage_service_1 = require("../security/triage-service");
48
+ const ignore_patterns_1 = require("../utils/ignore-patterns");
48
49
  class GoAnalyzer {
49
50
  constructor() {
50
51
  this.language = 'go';
@@ -66,6 +67,8 @@ class GoAnalyzer {
66
67
  // Phase 1.5: Secrets Detection
67
68
  const secretsAnalyzer = (0, secrets_analyzer_1.createSecretsAnalyzer)();
68
69
  result.security.vulnerabilities.push(...secretsAnalyzer.analyzeCode(input.code, input.filename || 'unknown.go', 'go'));
70
+ // Filter suppressed vulnerabilities (inline comments: // codeslick-ignore-next-line)
71
+ result.security.vulnerabilities = (0, ignore_patterns_1.filterSuppressedVulnerabilities)(input.code, result.security.vulnerabilities);
69
72
  // Feature 1 Phase 1: Smart Triage with EPSS scoring
70
73
  // Enhance vulnerabilities with priority scores and exploit predictions
71
74
  try {
@@ -162,6 +165,8 @@ class GoAnalyzer {
162
165
  });
163
166
  }
164
167
  });
168
+ // Phase 1.5 Week 7: AI Hallucination Detection (TIER 1 - Individual line highlights)
169
+ this.detectAIHallucinations(code, lineErrors);
165
170
  result.syntax.lineErrors = lineErrors;
166
171
  result.syntax.valid = lineErrors.length === 0;
167
172
  if (!result.syntax.valid) {
@@ -249,6 +254,114 @@ class GoAnalyzer {
249
254
  functions: functionCount
250
255
  };
251
256
  }
257
+ /**
258
+ * Phase 1.5 Week 7: AI Hallucination Detection (TIER 1)
259
+ *
260
+ * Detects individual method/property hallucinations from other languages (JS, Python, Java)
261
+ * These are SYNTAX ERRORS that should be highlighted individually in the editor.
262
+ *
263
+ * TIER 1 (syntax errors) → Individual `lineErrors` for Monaco editor highlighting
264
+ * TIER 2 (code smells) → Aggregated `checkAIGeneratedCode()` with OWASP mapping
265
+ *
266
+ * @see docs/features/AI_HALLUCINATION_DETECTION.md
267
+ */
268
+ detectAIHallucinations(code, lineErrors) {
269
+ const hallucinationMap = new Map([
270
+ // JavaScript influence (method hallucinations)
271
+ ['toUpperCase', { description: 'Non-existent method (JavaScript influence)', correct: 'strings.ToUpper()' }],
272
+ ['toLowerCase', { description: 'Non-existent method (JavaScript influence)', correct: 'strings.ToLower()' }],
273
+ ['indexOf', { description: 'Non-existent method (JavaScript influence)', correct: 'strings.Index()' }],
274
+ ['charAt', { description: 'Non-existent method (JavaScript influence)', correct: 'string[index]' }],
275
+ ['substring', { description: 'Non-existent method (JavaScript influence)', correct: 'string[start:end]' }],
276
+ ['push', { description: 'Non-existent method (JavaScript influence)', correct: 'append(slice, value)' }],
277
+ ['pop', { description: 'Non-existent method (JavaScript influence)', correct: 'slice[:len(slice)-1]' }],
278
+ ['shift', { description: 'Non-existent method (JavaScript influence)', correct: 'slice[1:]' }],
279
+ ['unshift', { description: 'Non-existent method (JavaScript influence)', correct: 'append([]T{value}, slice...)' }],
280
+ ['splice', { description: 'Non-existent method (JavaScript influence)', correct: 'append(slice[:i], slice[j:]...)' }],
281
+ ['slice', { description: 'Non-existent method (JavaScript influence)', correct: 'slice[start:end]' }],
282
+ ['trim', { description: 'Non-existent method (JavaScript influence)', correct: 'strings.TrimSpace()' }],
283
+ ['split', { description: 'Non-existent method (JavaScript influence)', correct: 'strings.Split()' }],
284
+ ['join', { description: 'Non-existent method (JavaScript influence)', correct: 'strings.Join()' }],
285
+ ['replace', { description: 'Non-existent method (JavaScript influence)', correct: 'strings.Replace()' }],
286
+ ['match', { description: 'Non-existent method (JavaScript influence)', correct: 'regexp.MatchString()' }],
287
+ // Python influence (method hallucinations)
288
+ ['upper', { description: 'Non-existent method (Python influence)', correct: 'strings.ToUpper()' }],
289
+ ['lower', { description: 'Non-existent method (Python influence)', correct: 'strings.ToLower()' }],
290
+ ['append', { description: 'Non-existent method (Python influence)', correct: 'append() function' }],
291
+ ['extend', { description: 'Non-existent method (Python influence)', correct: 'append(slice, otherSlice...)' }],
292
+ ['insert', { description: 'Non-existent method (Python influence)', correct: 'Use append() with slicing' }],
293
+ ['remove', { description: 'Non-existent method (Python influence)', correct: 'Use slicing or copy()' }],
294
+ ['clear', { description: 'Non-existent method (Python influence)', correct: 'slice = slice[:0]' }],
295
+ ['index', { description: 'Non-existent method (Python influence)', correct: 'Use loop or strings.Index()' }],
296
+ ['count', { description: 'Non-existent method (Python influence)', correct: 'strings.Count()' }],
297
+ ['sort', { description: 'Non-existent method (Python influence)', correct: 'sort.Strings() or sort.Slice()' }],
298
+ ['reverse', { description: 'Non-existent method (Python influence)', correct: 'Manual loop or custom function' }],
299
+ ['copy', { description: 'Non-existent method (Python influence)', correct: 'copy() function' }],
300
+ // Non-existent methods (common hallucinations)
301
+ ['contains', { description: 'Non-existent method', correct: 'strings.Contains() for strings' }],
302
+ ['isEmpty', { description: 'Non-existent method', correct: 'len(x) == 0' }],
303
+ ['length', { description: 'Non-existent method', correct: 'len() function' }],
304
+ ['get', { description: 'Non-existent method', correct: 'map[key] or slice[index]' }],
305
+ ['set', { description: 'Non-existent method', correct: 'map[key] = value' }],
306
+ ['has', { description: 'Non-existent method', correct: '_, ok := map[key]' }],
307
+ ['delete', { description: 'Non-existent method', correct: 'delete() function for maps' }],
308
+ ['keys', { description: 'Non-existent method', correct: 'Loop over map keys' }],
309
+ ['values', { description: 'Non-existent method', correct: 'Loop over map values' }],
310
+ ['entries', { description: 'Non-existent method', correct: 'Loop over map key-value pairs' }],
311
+ // Framework-specific (Gin/Echo HTTP methods - case sensitivity)
312
+ ['Get', { description: 'Case error (should be uppercase)', correct: '.GET() for Gin/Echo routes' }],
313
+ ['Post', { description: 'Case error (should be uppercase)', correct: '.POST() for Gin/Echo routes' }],
314
+ ['Put', { description: 'Case error (should be uppercase)', correct: '.PUT() for Gin/Echo routes' }],
315
+ ['Delete', { description: 'Case error (should be uppercase)', correct: '.DELETE() for Gin/Echo routes' }],
316
+ ]);
317
+ const lines = code.split('\n');
318
+ lines.forEach((line, index) => {
319
+ const lineNumber = index + 1;
320
+ const trimmed = line.trim();
321
+ // Skip empty lines, comments, and package/import statements
322
+ if (!trimmed || trimmed.startsWith('//') || trimmed.startsWith('/*') ||
323
+ trimmed.startsWith('package ') || trimmed.startsWith('import ')) {
324
+ return;
325
+ }
326
+ // Remove inline comments for accurate detection
327
+ const lineWithoutComments = trimmed.split('//')[0];
328
+ // Detect method hallucinations: .method(
329
+ const methodMatches = lineWithoutComments.matchAll(/\.(\w+)\s*\(/g);
330
+ for (const match of methodMatches) {
331
+ const method = match[1];
332
+ const pattern = hallucinationMap.get(method);
333
+ if (pattern) {
334
+ // Check if this error already exists for this line (avoid duplicates)
335
+ const existingError = lineErrors.find(e => e.line === lineNumber && e.error.includes(`.${method}(`));
336
+ if (!existingError) {
337
+ lineErrors.push({
338
+ line: lineNumber,
339
+ error: `AI Hallucination: .${method}() - ${pattern.description}`,
340
+ suggestion: `Correct usage: ${pattern.correct}`,
341
+ severity: 'error'
342
+ });
343
+ }
344
+ }
345
+ }
346
+ // Detect property hallucinations: .property (no parentheses)
347
+ // Only check for specific properties that are commonly hallucinated
348
+ const propertyHallucinations = ['length', 'size'];
349
+ for (const prop of propertyHallucinations) {
350
+ const propertyRegex = new RegExp(`\\.${prop}(?!\\s*\\()`, 'g');
351
+ if (propertyRegex.test(lineWithoutComments)) {
352
+ const existingError = lineErrors.find(e => e.line === lineNumber && e.error.includes(`.${prop}`));
353
+ if (!existingError) {
354
+ lineErrors.push({
355
+ line: lineNumber,
356
+ error: `AI Hallucination: .${prop} - Property access (should use len() function)`,
357
+ suggestion: 'Correct usage: len(collection)',
358
+ severity: 'error'
359
+ });
360
+ }
361
+ }
362
+ }
363
+ });
364
+ }
252
365
  /**
253
366
  * Detect if code is likely production code based on file path
254
367
  * Feature 1 Phase 1: Environment context for smart triage
@@ -1 +1 @@
1
- {"version":3,"file":"go-analyzer.js","sourceRoot":"","sources":["../../../../../../src/lib/analyzers/go-analyzer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"go-analyzer.js","sourceRoot":"","sources":["../../../../../../src/lib/analyzers/go-analyzer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ /**
2
+ * PII Detection for Infrastructure as Code (IaC)
3
+ *
4
+ * Scans Terraform (and future Kubernetes/CloudFormation) files for hardcoded
5
+ * Personally Identifiable Information (PII) that violates GDPR/HIPAA compliance.
6
+ *
7
+ * Strategic Value: Closes competitive gap with Precogs.ai, applies to all IaC languages.
8
+ */
9
+ import { SecurityVulnerability } from '../types';
10
+ import type { TerraformResource, TerraformBlock } from '../terraform/types';
11
+ /**
12
+ * Check Terraform resources for PII in attributes
13
+ */
14
+ export declare function checkResourcePII(resource: TerraformResource): SecurityVulnerability[];
15
+ /**
16
+ * Check Terraform variables for PII in default values
17
+ */
18
+ export declare function checkVariablePII(variable: TerraformBlock): SecurityVulnerability[];
19
+ /**
20
+ * Check Terraform locals for PII in values
21
+ */
22
+ export declare function checkLocalsPII(locals: TerraformBlock): SecurityVulnerability[];
23
+ /**
24
+ * Check Terraform outputs for PII exposure
25
+ */
26
+ export declare function checkOutputPII(output: TerraformBlock): SecurityVulnerability[];
27
+ //# sourceMappingURL=pii-detector.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pii-detector.d.ts","sourceRoot":"","sources":["../../../../../../../src/lib/analyzers/iac/pii-detector.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAC;AACjD,OAAO,KAAK,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAgF5E;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,iBAAiB,GAAG,qBAAqB,EAAE,CAgDrF;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,cAAc,GAAG,qBAAqB,EAAE,CAuBlF;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,cAAc,GAAG,qBAAqB,EAAE,CAyB9E;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,cAAc,GAAG,qBAAqB,EAAE,CAuB9E"}
@@ -0,0 +1,199 @@
1
+ "use strict";
2
+ /**
3
+ * PII Detection for Infrastructure as Code (IaC)
4
+ *
5
+ * Scans Terraform (and future Kubernetes/CloudFormation) files for hardcoded
6
+ * Personally Identifiable Information (PII) that violates GDPR/HIPAA compliance.
7
+ *
8
+ * Strategic Value: Closes competitive gap with Precogs.ai, applies to all IaC languages.
9
+ */
10
+ Object.defineProperty(exports, "__esModule", { value: true });
11
+ exports.checkResourcePII = checkResourcePII;
12
+ exports.checkVariablePII = checkVariablePII;
13
+ exports.checkLocalsPII = checkLocalsPII;
14
+ exports.checkOutputPII = checkOutputPII;
15
+ const pii_patterns_1 = require("./pii-patterns");
16
+ /**
17
+ * Scan text content for PII patterns
18
+ * @param text - Text to scan (attribute value, tag, variable default, etc.)
19
+ * @param context - Context info (resource name, attribute path, line number)
20
+ * @returns Array of vulnerabilities found
21
+ */
22
+ function scanTextForPII(text, context) {
23
+ const vulnerabilities = [];
24
+ // Check each PII pattern
25
+ for (const [type, pattern] of Object.entries(pii_patterns_1.PII_PATTERNS)) {
26
+ const matches = text.matchAll(pattern.regex);
27
+ for (const match of matches) {
28
+ const matchedText = match[0];
29
+ // Check if match should be excluded
30
+ if ((0, pii_patterns_1.shouldExcludeMatch)(matchedText, pattern)) {
31
+ continue;
32
+ }
33
+ // Validate if pattern has custom validation function
34
+ if (pattern.validate && !pattern.validate(matchedText)) {
35
+ continue;
36
+ }
37
+ vulnerabilities.push((0, pii_patterns_1.createPIIVulnerability)(type, pattern, matchedText, context));
38
+ }
39
+ }
40
+ return vulnerabilities;
41
+ }
42
+ /**
43
+ * Recursively scan nested objects for PII
44
+ */
45
+ function scanNestedObject(obj, context) {
46
+ const vulnerabilities = [];
47
+ if (typeof obj === 'string') {
48
+ vulnerabilities.push(...scanTextForPII(obj, context));
49
+ }
50
+ else if (Array.isArray(obj)) {
51
+ obj.forEach((item, index) => {
52
+ vulnerabilities.push(...scanNestedObject(item, {
53
+ ...context,
54
+ attributePath: `${context.attributePath}[${index}]`,
55
+ }));
56
+ });
57
+ }
58
+ else if (obj && typeof obj === 'object') {
59
+ Object.entries(obj).forEach(([key, value]) => {
60
+ vulnerabilities.push(...scanNestedObject(value, {
61
+ ...context,
62
+ attributePath: `${context.attributePath}.${key}`,
63
+ }));
64
+ });
65
+ }
66
+ return vulnerabilities;
67
+ }
68
+ /**
69
+ * Check Terraform resources for PII in attributes
70
+ */
71
+ function checkResourcePII(resource) {
72
+ const vulnerabilities = [];
73
+ // Scan ALL attributes recursively (not just predefined list)
74
+ // This catches PII in any attribute location
75
+ for (const [key, value] of Object.entries(resource.attributes)) {
76
+ if (typeof value === 'string') {
77
+ const found = scanTextForPII(value, {
78
+ resourceName: resource.resourceName,
79
+ attributePath: key,
80
+ line: resource.startLine,
81
+ });
82
+ vulnerabilities.push(...found);
83
+ }
84
+ else if (value && typeof value === 'object') {
85
+ // Scan nested objects (tags, environment vars, metadata)
86
+ const found = scanNestedObject(value, {
87
+ resourceName: resource.resourceName,
88
+ attributePath: key,
89
+ line: resource.startLine,
90
+ });
91
+ vulnerabilities.push(...found);
92
+ }
93
+ }
94
+ // Also scan nested blocks
95
+ if (resource.blocks) {
96
+ for (const block of resource.blocks) {
97
+ for (const [key, value] of Object.entries(block.attributes)) {
98
+ if (typeof value === 'string') {
99
+ const found = scanTextForPII(value, {
100
+ resourceName: resource.resourceName,
101
+ attributePath: `${block.type}.${key}`,
102
+ line: block.startLine,
103
+ });
104
+ vulnerabilities.push(...found);
105
+ }
106
+ else if (value && typeof value === 'object') {
107
+ const found = scanNestedObject(value, {
108
+ resourceName: resource.resourceName,
109
+ attributePath: `${block.type}.${key}`,
110
+ line: block.startLine,
111
+ });
112
+ vulnerabilities.push(...found);
113
+ }
114
+ }
115
+ }
116
+ }
117
+ return vulnerabilities;
118
+ }
119
+ /**
120
+ * Check Terraform variables for PII in default values
121
+ */
122
+ function checkVariablePII(variable) {
123
+ if (variable.type !== 'variable')
124
+ return [];
125
+ const defaultValue = variable.attributes.default;
126
+ if (!defaultValue)
127
+ return [];
128
+ const variableName = variable.labels[0] || 'unknown';
129
+ if (typeof defaultValue === 'string') {
130
+ return scanTextForPII(defaultValue, {
131
+ resourceName: 'variable',
132
+ attributePath: `${variableName}.default`,
133
+ line: variable.startLine,
134
+ });
135
+ }
136
+ else if (typeof defaultValue === 'object') {
137
+ return scanNestedObject(defaultValue, {
138
+ resourceName: 'variable',
139
+ attributePath: `${variableName}.default`,
140
+ line: variable.startLine,
141
+ });
142
+ }
143
+ return [];
144
+ }
145
+ /**
146
+ * Check Terraform locals for PII in values
147
+ */
148
+ function checkLocalsPII(locals) {
149
+ if (locals.type !== 'locals')
150
+ return [];
151
+ const vulnerabilities = [];
152
+ // Scan all local variable definitions
153
+ for (const [key, value] of Object.entries(locals.attributes)) {
154
+ if (typeof value === 'string') {
155
+ const found = scanTextForPII(value, {
156
+ resourceName: 'locals',
157
+ attributePath: key,
158
+ line: locals.startLine,
159
+ });
160
+ vulnerabilities.push(...found);
161
+ }
162
+ else if (typeof value === 'object') {
163
+ const found = scanNestedObject(value, {
164
+ resourceName: 'locals',
165
+ attributePath: key,
166
+ line: locals.startLine,
167
+ });
168
+ vulnerabilities.push(...found);
169
+ }
170
+ }
171
+ return vulnerabilities;
172
+ }
173
+ /**
174
+ * Check Terraform outputs for PII exposure
175
+ */
176
+ function checkOutputPII(output) {
177
+ if (output.type !== 'output')
178
+ return [];
179
+ const value = output.attributes.value;
180
+ if (!value)
181
+ return [];
182
+ const outputName = output.labels[0] || 'unknown';
183
+ if (typeof value === 'string') {
184
+ return scanTextForPII(value, {
185
+ resourceName: 'output',
186
+ attributePath: `${outputName}.value`,
187
+ line: output.startLine,
188
+ });
189
+ }
190
+ else if (typeof value === 'object') {
191
+ return scanNestedObject(value, {
192
+ resourceName: 'output',
193
+ attributePath: `${outputName}.value`,
194
+ line: output.startLine,
195
+ });
196
+ }
197
+ return [];
198
+ }
199
+ //# sourceMappingURL=pii-detector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pii-detector.js","sourceRoot":"","sources":["../../../../../../../src/lib/analyzers/iac/pii-detector.ts"],"names":[],"mappings":"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"}