@aiready/pattern-detect 0.6.1 → 0.7.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/dist/cli.js CHANGED
@@ -446,7 +446,7 @@ var import_fs = require("fs");
446
446
  var import_path = require("path");
447
447
  var import_core3 = require("@aiready/core");
448
448
  var program = new import_commander.Command();
449
- program.name("aiready-patterns").description("Detect duplicate patterns in your codebase").version("0.1.0").addHelpText("after", "\nCONFIGURATION:\n Supports config files: aiready.json, aiready.config.json, .aiready.json, .aireadyrc.json, aiready.config.js, .aireadyrc.js\n CLI options override config file settings").argument("<directory>", "Directory to analyze").option("-s, --similarity <number>", "Minimum similarity score (0-1)", "0.40").option("-l, --min-lines <number>", "Minimum lines to consider", "5").option("--batch-size <number>", "Batch size for comparisons", "100").option("--no-approx", "Disable approximate candidate selection (faster on small repos, slower on large)").option("--min-shared-tokens <number>", "Minimum shared tokens to consider a candidate", "8").option("--max-candidates <number>", "Maximum candidates per block", "100").option("--no-stream-results", "Disable incremental output (default: enabled)").option("--include <patterns>", "File patterns to include (comma-separated)").option("--exclude <patterns>", "File patterns to exclude (comma-separated)").option("--severity <level>", "Filter by severity: critical|high|medium|all", "all").option("--include-tests", "Include test files in analysis (excluded by default)").option(
449
+ program.name("aiready-patterns").description("Detect duplicate patterns in your codebase").version("0.1.0").addHelpText("after", "\nCONFIGURATION:\n Supports config files: aiready.json, aiready.config.json, .aiready.json, .aireadyrc.json, aiready.config.js, .aireadyrc.js\n CLI options override config file settings").argument("<directory>", "Directory to analyze").option("-s, --similarity <number>", "Minimum similarity score (0-1)").option("-l, --min-lines <number>", "Minimum lines to consider").option("--batch-size <number>", "Batch size for comparisons").option("--no-approx", "Disable approximate candidate selection (faster on small repos, slower on large)").option("--min-shared-tokens <number>", "Minimum shared tokens to consider a candidate").option("--max-candidates <number>", "Maximum candidates per block").option("--no-stream-results", "Disable incremental output (default: enabled)").option("--include <patterns>", "File patterns to include (comma-separated)").option("--exclude <patterns>", "File patterns to exclude (comma-separated)").option("--severity <level>", "Filter by severity: critical|high|medium|all").option("--include-tests", "Include test files in analysis (excluded by default)").option("--max-results <number>", "Maximum number of results to show in console output").option(
450
450
  "-o, --output <format>",
451
451
  "Output format: console, json, html",
452
452
  "console"
@@ -465,7 +465,8 @@ program.name("aiready-patterns").description("Detect duplicate patterns in your
465
465
  include: void 0,
466
466
  exclude: void 0,
467
467
  severity: "all",
468
- includeTests: false
468
+ includeTests: false,
469
+ maxResults: 10
469
470
  };
470
471
  const mergedConfig = (0, import_core3.mergeConfigWithDefaults)(config, defaults);
471
472
  const finalOptions = {
@@ -481,7 +482,8 @@ program.name("aiready-patterns").description("Detect duplicate patterns in your
481
482
  include: options.include?.split(",") || mergedConfig.include,
482
483
  exclude: options.exclude?.split(",") || mergedConfig.exclude,
483
484
  severity: options.severity || mergedConfig.severity,
484
- includeTests: options.includeTests || mergedConfig.includeTests
485
+ includeTests: options.includeTests || mergedConfig.includeTests,
486
+ maxResults: options.maxResults ? parseInt(options.maxResults) : mergedConfig.maxResults
485
487
  };
486
488
  if (!finalOptions.includeTests) {
487
489
  const testPatterns = [
@@ -582,7 +584,7 @@ program.name("aiready-patterns").description("Detect duplicate patterns in your
582
584
  const threshold = severityThresholds[finalOptions.severity] || 0.4;
583
585
  filteredDuplicates = rawDuplicates.filter((dup) => dup.similarity >= threshold);
584
586
  }
585
- const topDuplicates = filteredDuplicates.sort((a, b) => b.similarity - a.similarity).slice(0, 10);
587
+ const topDuplicates = filteredDuplicates.sort((a, b) => b.similarity - a.similarity).slice(0, finalOptions.maxResults);
586
588
  topDuplicates.forEach((dup, idx) => {
587
589
  const severity = dup.similarity > 0.95 ? "CRITICAL" : dup.similarity > 0.9 ? "HIGH" : "MEDIUM";
588
590
  const severityIcon = dup.similarity > 0.95 ? "\u{1F534}" : dup.similarity > 0.9 ? "\u{1F7E1}" : "\u{1F535}";
package/dist/cli.mjs CHANGED
@@ -12,7 +12,7 @@ import { writeFileSync } from "fs";
12
12
  import { join } from "path";
13
13
  import { loadConfig, mergeConfigWithDefaults } from "@aiready/core";
14
14
  var program = new Command();
15
- program.name("aiready-patterns").description("Detect duplicate patterns in your codebase").version("0.1.0").addHelpText("after", "\nCONFIGURATION:\n Supports config files: aiready.json, aiready.config.json, .aiready.json, .aireadyrc.json, aiready.config.js, .aireadyrc.js\n CLI options override config file settings").argument("<directory>", "Directory to analyze").option("-s, --similarity <number>", "Minimum similarity score (0-1)", "0.40").option("-l, --min-lines <number>", "Minimum lines to consider", "5").option("--batch-size <number>", "Batch size for comparisons", "100").option("--no-approx", "Disable approximate candidate selection (faster on small repos, slower on large)").option("--min-shared-tokens <number>", "Minimum shared tokens to consider a candidate", "8").option("--max-candidates <number>", "Maximum candidates per block", "100").option("--no-stream-results", "Disable incremental output (default: enabled)").option("--include <patterns>", "File patterns to include (comma-separated)").option("--exclude <patterns>", "File patterns to exclude (comma-separated)").option("--severity <level>", "Filter by severity: critical|high|medium|all", "all").option("--include-tests", "Include test files in analysis (excluded by default)").option(
15
+ program.name("aiready-patterns").description("Detect duplicate patterns in your codebase").version("0.1.0").addHelpText("after", "\nCONFIGURATION:\n Supports config files: aiready.json, aiready.config.json, .aiready.json, .aireadyrc.json, aiready.config.js, .aireadyrc.js\n CLI options override config file settings").argument("<directory>", "Directory to analyze").option("-s, --similarity <number>", "Minimum similarity score (0-1)").option("-l, --min-lines <number>", "Minimum lines to consider").option("--batch-size <number>", "Batch size for comparisons").option("--no-approx", "Disable approximate candidate selection (faster on small repos, slower on large)").option("--min-shared-tokens <number>", "Minimum shared tokens to consider a candidate").option("--max-candidates <number>", "Maximum candidates per block").option("--no-stream-results", "Disable incremental output (default: enabled)").option("--include <patterns>", "File patterns to include (comma-separated)").option("--exclude <patterns>", "File patterns to exclude (comma-separated)").option("--severity <level>", "Filter by severity: critical|high|medium|all").option("--include-tests", "Include test files in analysis (excluded by default)").option("--max-results <number>", "Maximum number of results to show in console output").option(
16
16
  "-o, --output <format>",
17
17
  "Output format: console, json, html",
18
18
  "console"
@@ -31,7 +31,8 @@ program.name("aiready-patterns").description("Detect duplicate patterns in your
31
31
  include: void 0,
32
32
  exclude: void 0,
33
33
  severity: "all",
34
- includeTests: false
34
+ includeTests: false,
35
+ maxResults: 10
35
36
  };
36
37
  const mergedConfig = mergeConfigWithDefaults(config, defaults);
37
38
  const finalOptions = {
@@ -47,7 +48,8 @@ program.name("aiready-patterns").description("Detect duplicate patterns in your
47
48
  include: options.include?.split(",") || mergedConfig.include,
48
49
  exclude: options.exclude?.split(",") || mergedConfig.exclude,
49
50
  severity: options.severity || mergedConfig.severity,
50
- includeTests: options.includeTests || mergedConfig.includeTests
51
+ includeTests: options.includeTests || mergedConfig.includeTests,
52
+ maxResults: options.maxResults ? parseInt(options.maxResults) : mergedConfig.maxResults
51
53
  };
52
54
  if (!finalOptions.includeTests) {
53
55
  const testPatterns = [
@@ -148,7 +150,7 @@ program.name("aiready-patterns").description("Detect duplicate patterns in your
148
150
  const threshold = severityThresholds[finalOptions.severity] || 0.4;
149
151
  filteredDuplicates = rawDuplicates.filter((dup) => dup.similarity >= threshold);
150
152
  }
151
- const topDuplicates = filteredDuplicates.sort((a, b) => b.similarity - a.similarity).slice(0, 10);
153
+ const topDuplicates = filteredDuplicates.sort((a, b) => b.similarity - a.similarity).slice(0, finalOptions.maxResults);
152
154
  topDuplicates.forEach((dup, idx) => {
153
155
  const severity = dup.similarity > 0.95 ? "CRITICAL" : dup.similarity > 0.9 ? "HIGH" : "MEDIUM";
154
156
  const severityIcon = dup.similarity > 0.95 ? "\u{1F534}" : dup.similarity > 0.9 ? "\u{1F7E1}" : "\u{1F535}";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aiready/pattern-detect",
3
- "version": "0.6.1",
3
+ "version": "0.7.0",
4
4
  "description": "Semantic duplicate pattern detection for AI-generated code - finds similar implementations that waste AI context tokens",
5
5
  "main": "./dist/index.js",
6
6
  "module": "./dist/index.mjs",
@@ -45,7 +45,7 @@
45
45
  "dependencies": {
46
46
  "commander": "^14.0.0",
47
47
  "chalk": "^5.3.0",
48
- "@aiready/core": "0.2.5"
48
+ "@aiready/core": "0.3.0"
49
49
  },
50
50
  "devDependencies": {
51
51
  "tsup": "^8.3.5",