@snapback/cli 1.0.2 → 1.0.4

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 (42) hide show
  1. package/dist/SkippedTestDetector-B3JZUE5G.js +5 -0
  2. package/dist/{SkippedTestDetector-JY4EF5BN.js.map → SkippedTestDetector-B3JZUE5G.js.map} +1 -1
  3. package/dist/{analysis-B4NVULM4.js → analysis-Z53F5FT2.js} +6 -5
  4. package/dist/{analysis-B4NVULM4.js.map → analysis-Z53F5FT2.js.map} +1 -1
  5. package/dist/{chunk-BCIXMIPW.js → chunk-6MR2TINI.js} +4 -3
  6. package/dist/chunk-6MR2TINI.js.map +1 -0
  7. package/dist/{chunk-WCQVDF3K.js → chunk-BW7RALUZ.js} +3 -2
  8. package/dist/{chunk-WCQVDF3K.js.map → chunk-BW7RALUZ.js.map} +1 -1
  9. package/dist/{chunk-VSJ33PLA.js → chunk-G7QXHNGB.js} +5 -4
  10. package/dist/chunk-G7QXHNGB.js.map +1 -0
  11. package/dist/{chunk-MTQ6ESQR.js → chunk-ISVRGBWT.js} +6 -5
  12. package/dist/chunk-ISVRGBWT.js.map +1 -0
  13. package/dist/{chunk-KSPLKCVF.js → chunk-NKBZIXCN.js} +7 -6
  14. package/dist/chunk-NKBZIXCN.js.map +1 -0
  15. package/dist/{chunk-RU7BOXR3.js → chunk-P2F6HU3P.js} +4 -3
  16. package/dist/chunk-P2F6HU3P.js.map +1 -0
  17. package/dist/{chunk-BJS6XH2V.js → chunk-QAKFE3NE.js} +4 -3
  18. package/dist/chunk-QAKFE3NE.js.map +1 -0
  19. package/dist/{chunk-WALLF2AH.js → chunk-YOVA65PS.js} +4 -3
  20. package/dist/chunk-YOVA65PS.js.map +1 -0
  21. package/dist/{dist-FBRR6YHP.js → dist-7UKXVKH3.js} +5 -4
  22. package/dist/{dist-7GPVXUEA.js.map → dist-7UKXVKH3.js.map} +1 -1
  23. package/dist/{dist-7GPVXUEA.js → dist-JX77JABV.js} +5 -4
  24. package/dist/{dist-DVM64QIS.js.map → dist-JX77JABV.js.map} +1 -1
  25. package/dist/{dist-DVM64QIS.js → dist-WKLJSPJT.js} +8 -7
  26. package/dist/{dist-FBRR6YHP.js.map → dist-WKLJSPJT.js.map} +1 -1
  27. package/dist/index.js +19 -18
  28. package/dist/index.js.map +1 -1
  29. package/dist/{secure-credentials-YKZHAZNB.js → secure-credentials-6UMEU22H.js} +4 -3
  30. package/dist/secure-credentials-6UMEU22H.js.map +1 -0
  31. package/dist/{snapback-dir-4QRR2IPV.js → snapback-dir-T3CRQRY6.js} +6 -5
  32. package/dist/{snapback-dir-4QRR2IPV.js.map → snapback-dir-T3CRQRY6.js.map} +1 -1
  33. package/package.json +5 -4
  34. package/dist/SkippedTestDetector-JY4EF5BN.js +0 -4
  35. package/dist/chunk-BCIXMIPW.js.map +0 -1
  36. package/dist/chunk-BJS6XH2V.js.map +0 -1
  37. package/dist/chunk-KSPLKCVF.js.map +0 -1
  38. package/dist/chunk-MTQ6ESQR.js.map +0 -1
  39. package/dist/chunk-RU7BOXR3.js.map +0 -1
  40. package/dist/chunk-VSJ33PLA.js.map +0 -1
  41. package/dist/chunk-WALLF2AH.js.map +0 -1
  42. package/dist/secure-credentials-YKZHAZNB.js.map +0 -1
@@ -0,0 +1,5 @@
1
+ #!/usr/bin/env node
2
+ export { analyzeSkippedTests, detectSkippedTests, getSkippedTestSummary } from './chunk-QAKFE3NE.js';
3
+ import './chunk-BW7RALUZ.js';
4
+ //# sourceMappingURL=SkippedTestDetector-B3JZUE5G.js.map
5
+ //# sourceMappingURL=SkippedTestDetector-B3JZUE5G.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":[],"names":[],"mappings":"","file":"SkippedTestDetector-JY4EF5BN.js"}
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"SkippedTestDetector-B3JZUE5G.js"}
@@ -1,5 +1,6 @@
1
- export { ChangeImpactAnalyzer, CompletenessAnalyzer, SecurityAnalyzer, SyntaxAnalyzer, checkFilesForOrphanStatus, createChangeImpactAnalyzer, detectOrphans, filterOrphansToFiles, runStaticAnalysis } from './chunk-VSJ33PLA.js';
2
- export { analyzeSkippedTests, detectSkippedTests, getSkippedTestSummary } from './chunk-BJS6XH2V.js';
3
- import './chunk-WCQVDF3K.js';
4
- //# sourceMappingURL=analysis-B4NVULM4.js.map
5
- //# sourceMappingURL=analysis-B4NVULM4.js.map
1
+ #!/usr/bin/env node
2
+ export { ChangeImpactAnalyzer, CompletenessAnalyzer, SecurityAnalyzer, SyntaxAnalyzer, checkFilesForOrphanStatus, createChangeImpactAnalyzer, detectOrphans, filterOrphansToFiles, runStaticAnalysis } from './chunk-G7QXHNGB.js';
3
+ export { analyzeSkippedTests, detectSkippedTests, getSkippedTestSummary } from './chunk-QAKFE3NE.js';
4
+ import './chunk-BW7RALUZ.js';
5
+ //# sourceMappingURL=analysis-Z53F5FT2.js.map
6
+ //# sourceMappingURL=analysis-Z53F5FT2.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":[],"names":[],"mappings":"","file":"analysis-B4NVULM4.js"}
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"analysis-Z53F5FT2.js"}
@@ -1,4 +1,5 @@
1
- import { __name } from './chunk-WCQVDF3K.js';
1
+ #!/usr/bin/env node
2
+ import { __name } from './chunk-BW7RALUZ.js';
2
3
  import { nanoid } from 'nanoid';
3
4
 
4
5
  function generateId(prefix) {
@@ -22,5 +23,5 @@ function generateSnapshotId(description) {
22
23
  __name(generateSnapshotId, "generateSnapshotId");
23
24
 
24
25
  export { generateId, generateSnapshotId };
25
- //# sourceMappingURL=chunk-BCIXMIPW.js.map
26
- //# sourceMappingURL=chunk-BCIXMIPW.js.map
26
+ //# sourceMappingURL=chunk-6MR2TINI.js.map
27
+ //# sourceMappingURL=chunk-6MR2TINI.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../packages/contracts/dist/id-generator.js"],"names":["generateId","prefix","id","nanoid","slugify","description","maxLength","toLowerCase","trim","replace","slice","generateSnapshotId","length","slug","Date","now"],"mappings":";;;;AAMO,SAASA,WAAWC,MAAAA,EAAM;AAC7B,EAAA,MAAMC,KAAKC,MAAAA,EAAAA;AACX,EAAA,OAAOF,MAAAA,GAAS,CAAA,EAAGA,MAAAA,CAAAA,CAAAA,EAAUC,EAAAA,CAAAA,CAAAA,GAAOA,EAAAA;AACxC;AAHgBF,MAAAA,CAAAA,UAAAA,EAAAA,YAAAA,CAAAA;AAQhB,SAASI,OAAAA,CAAQC,WAAAA,EAAaC,SAAAA,GAAY,EAAA,EAAE;AACxC,EAAA,OAAOD,WAAAA,CACFE,aAAW,CACXC,IAAAA,GACAC,OAAAA,CAAQ,eAAA,EAAiB,EAAA,CAAA,CACzBA,OAAAA,CAAQ,MAAA,EAAQ,GAAA,CAAA,CAChBA,OAAAA,CAAQ,KAAA,EAAO,GAAA,CAAA,CACfA,OAAAA,CAAQ,UAAU,EAAA,CAAA,CAClBC,KAAAA,CAAM,CAAA,EAAGJ,SAAAA,CAAAA;AAClB;AATSF,MAAAA,CAAAA,OAAAA,EAAAA,SAAAA,CAAAA;AAiBF,SAASO,mBAAmBN,WAAAA,EAAW;AAC1C,EAAA,IAAIA,WAAAA,IAAeA,WAAAA,CAAYO,MAAAA,GAAS,CAAA,EAAG;AACvC,IAAA,MAAMC,IAAAA,GAAOT,QAAQC,WAAAA,CAAAA;AACrB,IAAA,IAAIQ,IAAAA,CAAKD,SAAS,CAAA,EAAG;AACjB,MAAA,OAAO,CAAA,SAAA,EAAYC,IAAAA,CAAAA,CAAAA,EAAQC,IAAAA,CAAKC,KAAG,CAAA,CAAA,EAAMZ,MAAAA,CAAO,CAAA,CAAA,CAAA,CAAA;AACpD,IAAA;AACJ,EAAA;AACA,EAAA,OAAO,YAAYW,IAAAA,CAAKC,GAAAA,EAAG,CAAA,CAAA,EAAMZ,MAAAA,CAAO,CAAA,CAAA,CAAA,CAAA;AAC5C;AARgBQ,MAAAA,CAAAA,kBAAAA,EAAAA,oBAAAA,CAAAA","file":"chunk-6MR2TINI.js","sourcesContent":["import { nanoid } from \"nanoid\";\n/**\n * Generate a unique ID with optional prefix\n * @param prefix Optional prefix for the ID (e.g., 'user', 'session')\n * @returns Unique ID string\n */\nexport function generateId(prefix) {\n const id = nanoid();\n return prefix ? `${prefix}-${id}` : id;\n}\n/**\n * Slugify a description for use in snapshot IDs\n * Converts \"Before fixing auth flow\" to \"before-fixing-auth-flow\"\n */\nfunction slugify(description, maxLength = 30) {\n return description\n .toLowerCase()\n .trim()\n .replace(/[^a-z0-9\\s-]/g, \"\") // Remove non-alphanumeric\n .replace(/\\s+/g, \"-\") // Spaces to hyphens\n .replace(/-+/g, \"-\") // Collapse hyphens\n .replace(/^-|-$/g, \"\") // Trim hyphens\n .slice(0, maxLength);\n}\n/**\n * Generate a snapshot ID in the standard format\n * Format with description: snapshot-<slug>-<timestamp>-<random>\n * Format without: snapshot-<timestamp>-<random>\n * @param description Optional human-readable description\n * @returns Snapshot ID string\n */\nexport function generateSnapshotId(description) {\n if (description && description.length > 0) {\n const slug = slugify(description);\n if (slug.length > 0) {\n return `snapshot-${slug}-${Date.now()}-${nanoid(9)}`;\n }\n }\n return `snapshot-${Date.now()}-${nanoid(9)}`;\n}\n"]}
@@ -1,3 +1,4 @@
1
+ #!/usr/bin/env node
1
2
  var __defProp = Object.defineProperty;
2
3
  var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
3
4
  var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require : typeof Proxy !== "undefined" ? new Proxy(x, {
@@ -8,5 +9,5 @@ var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require
8
9
  });
9
10
 
10
11
  export { __name, __require };
11
- //# sourceMappingURL=chunk-WCQVDF3K.js.map
12
- //# sourceMappingURL=chunk-WCQVDF3K.js.map
12
+ //# sourceMappingURL=chunk-BW7RALUZ.js.map
13
+ //# sourceMappingURL=chunk-BW7RALUZ.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":[],"names":[],"mappings":"","file":"chunk-WCQVDF3K.js"}
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"chunk-BW7RALUZ.js"}
@@ -1,4 +1,5 @@
1
- import { __name } from './chunk-WCQVDF3K.js';
1
+ #!/usr/bin/env node
2
+ import { __name } from './chunk-BW7RALUZ.js';
2
3
  import * as eslintParser from '@typescript-eslint/parser';
3
4
  import { parse } from '@babel/parser';
4
5
  import traverse from '@babel/traverse';
@@ -1349,7 +1350,7 @@ async function runStaticAnalysis(files, _workspaceRoot, options = {}) {
1349
1350
  };
1350
1351
  if (!options.skipTestDetection) {
1351
1352
  try {
1352
- const { analyzeSkippedTests: analyzeSkippedTests2 } = await import('./SkippedTestDetector-JY4EF5BN.js');
1353
+ const { analyzeSkippedTests: analyzeSkippedTests2 } = await import('./SkippedTestDetector-B3JZUE5G.js');
1353
1354
  const testResults = analyzeSkippedTests2(files);
1354
1355
  for (const testResult of testResults) {
1355
1356
  if (!testResult.parsed && testResult.error) {
@@ -1376,5 +1377,5 @@ async function runStaticAnalysis(files, _workspaceRoot, options = {}) {
1376
1377
  __name(runStaticAnalysis, "runStaticAnalysis");
1377
1378
 
1378
1379
  export { ChangeImpactAnalyzer, CompletenessAnalyzer, SecurityAnalyzer, SyntaxAnalyzer, checkFilesForOrphanStatus, createChangeImpactAnalyzer, detectOrphans, filterOrphansToFiles, runStaticAnalysis };
1379
- //# sourceMappingURL=chunk-VSJ33PLA.js.map
1380
- //# sourceMappingURL=chunk-VSJ33PLA.js.map
1380
+ //# sourceMappingURL=chunk-G7QXHNGB.js.map
1381
+ //# sourceMappingURL=chunk-G7QXHNGB.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../packages/core/dist/analysis/ast/SyntaxAnalyzer.js","../../../packages/core/dist/analysis/completeness/CompletenessAnalyzer.js","../../../packages/core/dist/analysis/impact/ChangeImpactAnalyzer.js","../../../packages/core/dist/analysis/security/SecurityAnalyzer.js","../../../packages/core/dist/analysis/static/OrphanDetector.js","../../../packages/core/dist/analysis/static/index.js"],"names":["SyntaxAnalyzer","id","name","filePatterns","analyze","context","startTime","performance","now","issues","filesAnalyzed","nodesVisited","parseErrors","file","content","contents","shouldAnalyzeFile","ast","parse","sourceType","ecmaFeatures","jsx","endsWith","ecmaVersion","errorOnUnknownASTType","countNodes","checkSyntaxPatterns","error","parseError","extractParseError","push","message","line","severity","type","column","fix","analyzer","success","coverage","Math","max","files","length","duration","metadata","shouldRun","some","f","ext","split","pop","toLowerCase","includes","Error","match","Number","parseInt","String","node","count","key","Object","keys","value","Array","isArray","item","lines","i","lineNum","indexOf","snippet","trim","test","assignMatch","CompletenessAnalyzer","todoPatterns","placeholderPatterns","parserOptions","plugins","errorRecovery","checkTodoComments","checkPlaceholderPatterns","getPluginsForFile","result","analyzeAST","patternsChecked","pattern","lastIndex","todoContent","slice","_content","traverse","enter","CatchClause","path","body","loc","start","stmt","FunctionDeclaration","funcName","ClassMethod","abstract","kind","methodName","ArrowFunctionExpression","parent","varName","CallExpression","callee","object","property","firstArg","arguments","msg","EXPORT_PATTERNS","PERFORMANCE_PATTERNS","risk","TEST_FILE_PATTERNS","ChangeImpactAnalyzer","workspaceRoot","dependencyGraph","Map","reverseDependencyGraph","p","RegExp","replace","Date","buildDependencyGraph","get","breakingChanges","detectBreakingChanges","bc","symbol","toUpperCase","description","migration","perfImpacts","detectPerformanceImpacts","pi","component","recommendation","affectedTests","findAffectedTests","getFullImpact","performanceImpacts","dependentFiles","recommendations","tests","breaks","perfs","deps","findDependentFiles","impactScore","calculateImpactScore","dedupeItems","clear","imports","extractImports","set","imp","existing","fromFile","importRegex","requireRegex","exec","importPath","resolveImportPath","startsWith","dir","dirname","extensions","resolved","relPath","relative","fileName","basename","directTestPatterns","reason","level","importers","importer","isTestFile","regex","source","flags","symbolName","interfaceRegex","interfaceName","impacts","getPerformanceRecommendation","dependents","visited","Set","current","depth","has","add","score","min","filter","items","seen","createChangeImpactAnalyzer","SecurityAnalyzer","fileIssues","fileContext","isDaemon","hasSignalHandler","isStaticString","MemberExpression","parentPath","isCallExpression","pathMethods","isStaticPath","NewExpression","JSXAttribute","VariableDeclarator","init","checkForHardcodedSecret","ClassProperty","Program","exit","expressions","every","arg","secretIndicators","s","valueStr","DEFAULT_OPTIONS","fileExtensions","excludePatterns","detectOrphans","entryPoint","options","mergedOptions","madgeModule","madge","default","excludeRegExp","map","regexPattern","tsConfig","tsConfigPath","detectiveOptions","ts","skipTypeImports","orphans","allFiles","obj","totalFiles","filterOrphansToFiles","orphanResult","targetFiles","targetSet","orphan","normalizedOrphan","t","checkFilesForOrphanStatus","baseDir","runStaticAnalysis","_workspaceRoot","skippedTests","orphanedFiles","errors","skipTestDetection","analyzeSkippedTests","testResults","testResult","parsed","skipped","skipOrphanDetection"],"mappings":"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","file":"chunk-G7QXHNGB.js","sourcesContent":["/**\n * Syntax Analyzer\n *\n * Uses @typescript-eslint/parser for real AST-based syntax validation.\n * Replaces bracket counting with proper parsing.\n *\n * @module analysis/ast/SyntaxAnalyzer\n */\nimport * as eslintParser from \"@typescript-eslint/parser\";\n/**\n * AST-based syntax analyzer using @typescript-eslint/parser\n */\nexport class SyntaxAnalyzer {\n id = \"syntax\";\n name = \"Syntax Analysis\";\n filePatterns = [\"*.ts\", \"*.tsx\", \"*.js\", \"*.jsx\"];\n async analyze(context) {\n const startTime = performance.now();\n const issues = [];\n let filesAnalyzed = 0;\n let nodesVisited = 0;\n const parseErrors = [];\n for (const [file, content] of context.contents) {\n if (!this.shouldAnalyzeFile(file))\n continue;\n filesAnalyzed++;\n try {\n // Parse with @typescript-eslint/parser\n const ast = eslintParser.parse(content, {\n sourceType: \"module\",\n ecmaFeatures: {\n jsx: file.endsWith(\".tsx\") || file.endsWith(\".jsx\"),\n },\n ecmaVersion: \"latest\",\n // Error recovery mode to get partial AST even with errors\n errorOnUnknownASTType: false,\n });\n // Count nodes for coverage metric\n nodesVisited += this.countNodes(ast);\n // Check for syntax issues that the parser didn't catch but still parsed\n this.checkSyntaxPatterns(content, file, issues);\n }\n catch (error) {\n // Parse error - this is a real syntax issue\n const parseError = this.extractParseError(error);\n parseErrors.push(`${file}: ${parseError.message}`);\n issues.push({\n id: `syntax/parse-error/${file}/${parseError.line}`,\n severity: \"critical\",\n type: \"SYNTAX_ERROR\",\n message: parseError.message,\n file,\n line: parseError.line,\n column: parseError.column,\n fix: \"Fix the syntax error to allow parsing\",\n });\n }\n }\n return {\n analyzer: this.id,\n success: true,\n issues,\n coverage: filesAnalyzed / Math.max(context.files.length, 1),\n duration: performance.now() - startTime,\n metadata: {\n filesAnalyzed,\n nodesVisited,\n parseErrors,\n },\n };\n }\n shouldRun(context) {\n return context.files.some((f) => this.shouldAnalyzeFile(f));\n }\n shouldAnalyzeFile(file) {\n const ext = file.split(\".\").pop()?.toLowerCase();\n return [\"ts\", \"tsx\", \"js\", \"jsx\"].includes(ext || \"\");\n }\n /**\n * Extract parse error information from parser exception\n */\n extractParseError(error) {\n if (error instanceof Error) {\n // @typescript-eslint/parser errors have line/column info\n const match = error.message.match(/\\((\\d+):(\\d+)\\)/);\n if (match) {\n return {\n message: error.message,\n line: Number.parseInt(match[1], 10),\n column: Number.parseInt(match[2], 10),\n };\n }\n return {\n message: error.message,\n line: 1,\n column: 1,\n };\n }\n return {\n message: String(error),\n line: 1,\n column: 1,\n };\n }\n /**\n * Count AST nodes for coverage metrics\n */\n countNodes(node) {\n if (!node || typeof node !== \"object\")\n return 0;\n let count = 1;\n for (const key of Object.keys(node)) {\n const value = node[key];\n if (Array.isArray(value)) {\n for (const item of value) {\n count += this.countNodes(item);\n }\n }\n else if (value && typeof value === \"object\" && \"type\" in value) {\n count += this.countNodes(value);\n }\n }\n return count;\n }\n /**\n * Check for additional syntax patterns that may indicate issues\n */\n checkSyntaxPatterns(content, file, issues) {\n const lines = content.split(\"\\n\");\n for (let i = 0; i < lines.length; i++) {\n const line = lines[i];\n const lineNum = i + 1;\n // Check for double semicolons\n if (line.includes(\";;\")) {\n issues.push({\n id: `syntax/double-semicolon/${file}/${lineNum}`,\n severity: \"low\",\n type: \"SYNTAX_WARNING\",\n message: \"Double semicolon detected\",\n file,\n line: lineNum,\n column: line.indexOf(\";;\") + 1,\n fix: \"Remove extra semicolon\",\n snippet: line.trim(),\n });\n }\n // Check for console.assert with empty second argument\n if (/console\\.assert\\([^,]+,\\s*\\)/.test(line)) {\n issues.push({\n id: `syntax/empty-assert/${file}/${lineNum}`,\n severity: \"medium\",\n type: \"SYNTAX_WARNING\",\n message: \"console.assert with empty message\",\n file,\n line: lineNum,\n fix: \"Add assertion message for debugging\",\n snippet: line.trim(),\n });\n }\n // Check for likely typos: = instead of === in conditions\n if (/if\\s*\\([^=]*=\\s*[^=]/.test(line) && !/if\\s*\\([^=]*[=!]==/.test(line)) {\n // Only warn if it looks like an assignment in a condition\n const assignMatch = line.match(/if\\s*\\(\\s*(\\w+)\\s*=\\s*[^=]/);\n if (assignMatch) {\n issues.push({\n id: `syntax/assignment-in-condition/${file}/${lineNum}`,\n severity: \"medium\",\n type: \"SYNTAX_WARNING\",\n message: \"Possible assignment in condition (did you mean ===?)\",\n file,\n line: lineNum,\n fix: \"Use === for comparison, or wrap in extra parentheses if intentional\",\n snippet: line.trim(),\n });\n }\n }\n }\n }\n}\n","/**\n * Completeness Analyzer\n *\n * Detects incomplete implementations: TODO comments, empty catch blocks,\n * NotImplementedError, empty function bodies, placeholder code.\n *\n * Uses @babel/parser + @babel/traverse for AST-based detection.\n *\n * @module analysis/completeness/CompletenessAnalyzer\n */\nimport { parse } from \"@babel/parser\";\nimport traverse from \"@babel/traverse\";\n/**\n * AST-based completeness analyzer\n */\nexport class CompletenessAnalyzer {\n id = \"completeness\";\n name = \"Completeness Detection\";\n filePatterns = [\"*.ts\", \"*.tsx\", \"*.js\", \"*.jsx\"];\n todoPatterns = [\n /\\/\\/\\s*TODO\\b/gi,\n /\\/\\/\\s*FIXME\\b/gi,\n /\\/\\/\\s*XXX\\b/gi,\n /\\/\\/\\s*HACK\\b/gi,\n /\\/\\*\\s*TODO\\b/gi,\n /\\/\\*\\s*FIXME\\b/gi,\n ];\n placeholderPatterns = [\n /throw\\s+new\\s+Error\\s*\\(\\s*['\"`].*not\\s*implemented.*['\"`]\\s*\\)/gi,\n /throw\\s+new\\s+Error\\s*\\(\\s*['\"`]TODO.*['\"`]\\s*\\)/gi,\n /NotImplementedError/gi,\n /throw\\s+new\\s+Error\\s*\\(\\s*['\"`]STUB['\"`]\\s*\\)/gi,\n ];\n parserOptions = {\n sourceType: \"module\",\n plugins: [\"typescript\", \"jsx\"],\n errorRecovery: true,\n };\n async analyze(context) {\n const startTime = performance.now();\n const issues = [];\n let filesAnalyzed = 0;\n let nodesVisited = 0;\n const parseErrors = [];\n for (const [file, content] of context.contents) {\n if (!this.shouldAnalyzeFile(file))\n continue;\n filesAnalyzed++;\n // Line-based detection for comments\n this.checkTodoComments(content, file, issues);\n this.checkPlaceholderPatterns(content, file, issues);\n // AST-based detection for structural issues\n try {\n const ast = parse(content, {\n ...this.parserOptions,\n plugins: this.getPluginsForFile(file),\n });\n const result = this.analyzeAST(ast, content, file);\n issues.push(...result.issues);\n nodesVisited += result.nodesVisited;\n }\n catch (error) {\n parseErrors.push(`${file}: ${error instanceof Error ? error.message : String(error)}`);\n // Parsing errors are handled by SyntaxAnalyzer, don't duplicate\n }\n }\n return {\n analyzer: this.id,\n success: true,\n issues,\n coverage: filesAnalyzed / Math.max(context.files.length, 1),\n duration: performance.now() - startTime,\n metadata: {\n filesAnalyzed,\n nodesVisited,\n patternsChecked: [\"TODO\", \"FIXME\", \"EMPTY_CATCH\", \"EMPTY_FUNCTION\", \"NOT_IMPLEMENTED\", \"PLACEHOLDER\"],\n parseErrors,\n },\n };\n }\n shouldRun(context) {\n return context.files.some((f) => this.shouldAnalyzeFile(f));\n }\n shouldAnalyzeFile(file) {\n const ext = file.split(\".\").pop()?.toLowerCase();\n return [\"ts\", \"tsx\", \"js\", \"jsx\"].includes(ext || \"\");\n }\n getPluginsForFile(file) {\n const plugins = [\"typescript\"];\n if (file.endsWith(\".tsx\") || file.endsWith(\".jsx\")) {\n plugins.push(\"jsx\");\n }\n return plugins;\n }\n /**\n * Check for TODO/FIXME comments\n */\n checkTodoComments(content, file, issues) {\n const lines = content.split(\"\\n\");\n for (let i = 0; i < lines.length; i++) {\n const line = lines[i];\n const lineNum = i + 1;\n for (const pattern of this.todoPatterns) {\n // Reset lastIndex for global patterns\n pattern.lastIndex = 0;\n if (pattern.test(line)) {\n // Extract the TODO content\n const todoContent = line.trim().slice(0, 100);\n issues.push({\n id: `completeness/todo/${file}/${lineNum}`,\n severity: \"medium\",\n type: \"INCOMPLETE_IMPLEMENTATION\",\n message: `TODO/FIXME: ${todoContent}`,\n file,\n line: lineNum,\n snippet: todoContent,\n });\n break; // Only report once per line\n }\n }\n }\n }\n /**\n * Check for placeholder/stub patterns\n */\n checkPlaceholderPatterns(content, file, issues) {\n const lines = content.split(\"\\n\");\n for (let i = 0; i < lines.length; i++) {\n const line = lines[i];\n const lineNum = i + 1;\n for (const pattern of this.placeholderPatterns) {\n pattern.lastIndex = 0;\n if (pattern.test(line)) {\n issues.push({\n id: `completeness/placeholder/${file}/${lineNum}`,\n severity: \"high\",\n type: \"INCOMPLETE_IMPLEMENTATION\",\n message: 'Placeholder implementation: \"not implemented\" or similar',\n file,\n line: lineNum,\n fix: \"Implement the functionality or remove the placeholder\",\n snippet: line.trim().slice(0, 100),\n });\n break;\n }\n }\n }\n }\n /**\n * AST-based detection of empty/incomplete code\n */\n analyzeAST(ast, _content, file) {\n const issues = [];\n let nodesVisited = 0;\n traverse(ast, {\n enter() {\n nodesVisited++;\n },\n // Empty catch blocks\n CatchClause: (path) => {\n const body = path.node.body;\n if (body.body.length === 0) {\n issues.push({\n id: `completeness/empty-catch/${file}/${path.node.loc?.start.line}`,\n severity: \"medium\",\n type: \"INCOMPLETE_IMPLEMENTATION\",\n message: \"Empty catch block - errors silently swallowed\",\n file,\n line: path.node.loc?.start.line,\n fix: \"Add error handling, rethrow, or log the error\",\n });\n }\n else if (body.body.length === 1) {\n // Check for comment-only catch blocks\n const stmt = body.body[0];\n if (stmt.type === \"EmptyStatement\") {\n issues.push({\n id: `completeness/empty-catch/${file}/${path.node.loc?.start.line}`,\n severity: \"medium\",\n type: \"INCOMPLETE_IMPLEMENTATION\",\n message: \"Catch block contains only empty statement\",\n file,\n line: path.node.loc?.start.line,\n fix: \"Add proper error handling\",\n });\n }\n }\n },\n // Empty function bodies (excluding type declarations and interface methods)\n FunctionDeclaration: (path) => {\n if (path.node.body.body.length === 0) {\n const funcName = path.node.id?.name || \"anonymous\";\n // Skip if it's likely a stub for interface implementation\n const hasOverrideDecorator = false; // Would need to check decorators\n if (!hasOverrideDecorator) {\n issues.push({\n id: `completeness/empty-fn/${file}/${path.node.loc?.start.line}`,\n severity: \"medium\",\n type: \"INCOMPLETE_IMPLEMENTATION\",\n message: `Empty function body: ${funcName}()`,\n file,\n line: path.node.loc?.start.line,\n fix: \"Implement the function or mark as abstract/stub if intentional\",\n });\n }\n }\n },\n // Empty method bodies\n ClassMethod: (path) => {\n // Skip abstract methods, getters with explicit return, etc.\n if (path.node.abstract)\n return;\n if (path.node.kind === \"get\" || path.node.kind === \"set\")\n return;\n const body = path.node.body;\n if (body && body.body.length === 0) {\n const methodName = path.node.key.type === \"Identifier\" ? path.node.key.name : \"anonymous\";\n // Skip constructor with only super() call\n if (methodName === \"constructor\")\n return;\n issues.push({\n id: `completeness/empty-method/${file}/${path.node.loc?.start.line}`,\n severity: \"medium\",\n type: \"INCOMPLETE_IMPLEMENTATION\",\n message: `Empty method body: ${methodName}()`,\n file,\n line: path.node.loc?.start.line,\n fix: \"Implement the method or mark as abstract if intentional\",\n });\n }\n },\n // Arrow functions that just throw or are empty (might be intentional)\n ArrowFunctionExpression: (path) => {\n const body = path.node.body;\n // Check if it's a block body that's empty\n if (body.type === \"BlockStatement\" && body.body.length === 0) {\n // Only warn if it's assigned to a variable (likely meant to be implemented)\n const parent = path.parent;\n if (parent.type === \"VariableDeclarator\") {\n const varName = parent.id.type === \"Identifier\" ? parent.id.name : \"anonymous\";\n issues.push({\n id: `completeness/empty-arrow/${file}/${path.node.loc?.start.line}`,\n severity: \"low\",\n type: \"INCOMPLETE_IMPLEMENTATION\",\n message: `Empty arrow function: ${varName}`,\n file,\n line: path.node.loc?.start.line,\n fix: \"Implement the function or use () => {} if intentionally empty\",\n });\n }\n }\n },\n // Check for console.log that might be debug code\n CallExpression: (path) => {\n const callee = path.node.callee;\n if (callee.type === \"MemberExpression\" &&\n callee.object.type === \"Identifier\" &&\n callee.object.name === \"console\" &&\n callee.property.type === \"Identifier\" &&\n callee.property.name === \"log\") {\n // Check if it looks like debug code\n const firstArg = path.node.arguments[0];\n if (firstArg && firstArg.type === \"StringLiteral\") {\n const msg = firstArg.value.toLowerCase();\n if (msg.includes(\"debug\") ||\n msg.includes(\"test\") ||\n msg.includes(\"todo\") ||\n msg.includes(\"remove\")) {\n issues.push({\n id: `completeness/debug-log/${file}/${path.node.loc?.start.line}`,\n severity: \"low\",\n type: \"DEBUG_CODE\",\n message: `Debug console.log left in code: \"${firstArg.value.slice(0, 50)}\"`,\n file,\n line: path.node.loc?.start.line,\n fix: \"Remove debug logging before commit\",\n });\n }\n }\n }\n },\n });\n return { issues, nodesVisited };\n }\n}\n","/**\n * ChangeImpactAnalyzer\n *\n * Predicts the impact of code changes across the codebase:\n * - Affected tests (which tests might fail)\n * - Breaking changes (API/interface changes)\n * - Performance implications (hot path modifications)\n * - Dependency ripple effects\n *\n * @module analysis/impact/ChangeImpactAnalyzer\n */\nimport { basename, dirname, relative } from \"node:path\";\n// =============================================================================\n// Pattern Matchers\n// =============================================================================\n/**\n * Patterns that indicate exported API\n */\nconst EXPORT_PATTERNS = [\n /export\\s+(const|function|class|interface|type|enum)\\s+(\\w+)/g,\n /export\\s+default\\s+(function|class)?\\s*(\\w+)?/g,\n /export\\s+\\{([^}]+)\\}/g,\n];\n/**\n * Patterns that indicate function signatures\n */\nconst _SIGNATURE_PATTERNS = [\n // Function with parameters\n /(?:async\\s+)?function\\s+(\\w+)\\s*\\(([^)]*)\\)/g,\n // Arrow function\n /(?:const|let)\\s+(\\w+)\\s*=\\s*(?:async\\s*)?\\(([^)]*)\\)\\s*(?::\\s*\\w+)?\\s*=>/g,\n // Method in class\n /(?:public|private|protected)?\\s*(?:async\\s+)?(\\w+)\\s*\\(([^)]*)\\)/g,\n];\n/**\n * Patterns indicating performance-sensitive code\n */\nconst PERFORMANCE_PATTERNS = [\n { pattern: /\\.forEach\\s*\\(/g, type: \"computation\", risk: \"low\" },\n { pattern: /for\\s*\\(\\s*let\\s+\\w+\\s*=\\s*0/g, type: \"computation\", risk: \"low\" },\n { pattern: /while\\s*\\(/g, type: \"computation\", risk: \"medium\" },\n { pattern: /async\\s+function|await\\s+/g, type: \"io\", risk: \"medium\" },\n { pattern: /new\\s+(Map|Set|Array)\\s*\\(/g, type: \"memory\", risk: \"low\" },\n { pattern: /JSON\\.(parse|stringify)/g, type: \"computation\", risk: \"medium\" },\n { pattern: /readFileSync|writeFileSync/g, type: \"io\", risk: \"high\" },\n { pattern: /spawn|exec\\s*\\(/g, type: \"io\", risk: \"high\" },\n { pattern: /import\\s*\\(/g, type: \"bundle\", risk: \"low\" },\n { pattern: /require\\s*\\(/g, type: \"bundle\", risk: \"medium\" },\n];\n/**\n * File patterns that indicate test files\n */\nconst TEST_FILE_PATTERNS = [/\\.test\\.[tj]sx?$/, /\\.spec\\.[tj]sx?$/, /__tests__\\//, /test\\//, /tests\\//];\n// =============================================================================\n// ChangeImpactAnalyzer\n// =============================================================================\nexport class ChangeImpactAnalyzer {\n id = \"change-impact\";\n name = \"Change Impact Analyzer\";\n filePatterns = [\"**/*.ts\", \"**/*.tsx\", \"**/*.js\", \"**/*.jsx\"];\n workspaceRoot;\n dependencyGraph = new Map();\n reverseDependencyGraph = new Map();\n constructor(workspaceRoot) {\n this.workspaceRoot = workspaceRoot;\n }\n /**\n * Check if this analyzer should run\n */\n shouldRun(context) {\n return context.files.some((f) => this.filePatterns.some((p) => new RegExp(p.replace(/\\*/g, \".*\")).test(f)));\n }\n /**\n * Run impact analysis\n */\n async analyze(context) {\n const start = Date.now();\n const issues = [];\n try {\n // Build dependency graph from context\n await this.buildDependencyGraph(context);\n // Analyze each file\n for (const file of context.files) {\n const content = context.contents.get(file);\n if (!content) {\n continue;\n }\n // Detect breaking changes\n const breakingChanges = this.detectBreakingChanges(content, file);\n for (const bc of breakingChanges) {\n issues.push({\n id: `impact/breaking/${bc.type}/${file}/${bc.symbol}`,\n severity: bc.severity,\n type: `BREAKING_${bc.type.toUpperCase()}`,\n message: bc.description,\n file,\n fix: bc.migration,\n });\n }\n // Detect performance impacts\n const perfImpacts = this.detectPerformanceImpacts(content, file);\n for (const pi of perfImpacts) {\n if (pi.risk === \"high\" || pi.risk === \"critical\") {\n issues.push({\n id: `impact/perf/${pi.type}/${file}/${pi.component}`,\n severity: pi.risk === \"critical\" ? \"critical\" : \"high\",\n type: `PERF_${pi.type.toUpperCase()}`,\n message: pi.description,\n file,\n fix: pi.recommendation,\n });\n }\n }\n // Check for affected tests\n const affectedTests = this.findAffectedTests(file);\n if (affectedTests.length > 5) {\n issues.push({\n id: `impact/tests/${file}`,\n severity: \"medium\",\n type: \"HIGH_TEST_IMPACT\",\n message: `Change affects ${affectedTests.length} test files - consider running full test suite`,\n file,\n });\n }\n }\n return {\n analyzer: this.id,\n success: true,\n issues,\n coverage: 1,\n duration: Date.now() - start,\n metadata: {\n filesAnalyzed: context.files.length,\n },\n };\n }\n catch (error) {\n return {\n analyzer: this.id,\n success: false,\n issues: [\n {\n id: \"impact/error\",\n severity: \"high\",\n type: \"ANALYSIS_ERROR\",\n message: error instanceof Error ? error.message : String(error),\n },\n ],\n coverage: 0,\n duration: Date.now() - start,\n };\n }\n }\n /**\n * Get full impact analysis (more detailed than standard analyze)\n */\n async getFullImpact(files, contents) {\n const start = Date.now();\n // Build context\n const context = {\n workspaceRoot: this.workspaceRoot,\n files,\n contents,\n };\n await this.buildDependencyGraph(context);\n const affectedTests = [];\n const breakingChanges = [];\n const performanceImpacts = [];\n const dependentFiles = [];\n const recommendations = [];\n for (const file of files) {\n const content = contents.get(file) || \"\";\n // Find affected tests\n const tests = this.findAffectedTests(file);\n affectedTests.push(...tests);\n // Detect breaking changes\n const breaks = this.detectBreakingChanges(content, file);\n breakingChanges.push(...breaks);\n // Detect performance impacts\n const perfs = this.detectPerformanceImpacts(content, file);\n performanceImpacts.push(...perfs);\n // Find dependent files\n const deps = this.findDependentFiles(file);\n dependentFiles.push(...deps);\n }\n // Calculate impact score\n const impactScore = this.calculateImpactScore(affectedTests, breakingChanges, performanceImpacts, dependentFiles);\n // Generate recommendations\n if (breakingChanges.length > 0) {\n recommendations.push(`⚠️ ${breakingChanges.length} breaking change(s) detected - update dependent code`);\n }\n if (affectedTests.length > 10) {\n recommendations.push(`🧪 Run full test suite - ${affectedTests.length} tests potentially affected`);\n }\n if (performanceImpacts.some((p) => p.risk === \"high\" || p.risk === \"critical\")) {\n recommendations.push(\"⚡ Performance-sensitive code modified - run benchmarks\");\n }\n if (dependentFiles.length > 20) {\n recommendations.push(\"🔗 High ripple effect - consider incremental rollout\");\n }\n return {\n filesAnalyzed: files.length,\n affectedTests: this.dedupeItems(affectedTests),\n breakingChanges,\n performanceImpacts,\n dependentFiles: this.dedupeItems(dependentFiles),\n impactScore,\n recommendations,\n duration: Date.now() - start,\n };\n }\n // =========================================================================\n // Private Methods\n // =========================================================================\n /**\n * Build dependency graph from file contents\n */\n async buildDependencyGraph(context) {\n this.dependencyGraph.clear();\n this.reverseDependencyGraph.clear();\n for (const file of context.files) {\n const content = context.contents.get(file);\n if (!content) {\n continue;\n }\n const imports = this.extractImports(content, file);\n this.dependencyGraph.set(file, imports);\n // Build reverse graph\n for (const imp of imports) {\n const existing = this.reverseDependencyGraph.get(imp) || [];\n existing.push(file);\n this.reverseDependencyGraph.set(imp, existing);\n }\n }\n }\n /**\n * Extract import statements from file content\n */\n extractImports(content, fromFile) {\n const imports = [];\n const importRegex = /import\\s+(?:.*?\\s+from\\s+)?['\"]([^'\"]+)['\"]/g;\n const requireRegex = /require\\s*\\(['\"]([^'\"]+)['\"]\\)/g;\n let match;\n while ((match = importRegex.exec(content)) !== null) {\n const importPath = this.resolveImportPath(match[1], fromFile);\n if (importPath) {\n imports.push(importPath);\n }\n }\n while ((match = requireRegex.exec(content)) !== null) {\n const importPath = this.resolveImportPath(match[1], fromFile);\n if (importPath) {\n imports.push(importPath);\n }\n }\n return imports;\n }\n /**\n * Resolve import path to absolute file path\n */\n resolveImportPath(importPath, fromFile) {\n // Skip external packages\n if (!importPath.startsWith(\".\") && !importPath.startsWith(\"/\")) {\n return null;\n }\n const dir = dirname(fromFile);\n const extensions = [\".ts\", \".tsx\", \".js\", \".jsx\", \"/index.ts\", \"/index.tsx\", \"/index.js\"];\n for (const ext of extensions) {\n const resolved = `${dir}/${importPath}${ext}`.replace(/\\/\\.\\//g, \"/\");\n return resolved;\n }\n return null;\n }\n /**\n * Find test files that might be affected by a change\n */\n findAffectedTests(file) {\n const tests = [];\n const relPath = relative(this.workspaceRoot, file);\n const fileName = basename(file).replace(/\\.[tj]sx?$/, \"\");\n // Direct test files for this source\n const directTestPatterns = [\n `${fileName}.test.ts`,\n `${fileName}.test.tsx`,\n `${fileName}.spec.ts`,\n `${fileName}.spec.tsx`,\n `__tests__/${fileName}.test.ts`,\n `__tests__/${fileName}.test.tsx`,\n ];\n for (const pattern of directTestPatterns) {\n tests.push({\n path: pattern,\n reason: \"Direct test file for changed source\",\n level: \"high\",\n });\n }\n // Files that import this file might have tests\n const importers = this.reverseDependencyGraph.get(file) || [];\n for (const importer of importers) {\n if (this.isTestFile(importer)) {\n tests.push({\n path: relative(this.workspaceRoot, importer),\n reason: \"Test file imports changed module\",\n level: \"medium\",\n });\n }\n }\n // Integration tests if this is a core module\n if (relPath.includes(\"/core/\") || relPath.includes(\"/services/\")) {\n tests.push({\n path: \"**/*.integration.test.ts\",\n reason: \"Core module change may affect integration tests\",\n level: \"low\",\n });\n }\n return tests;\n }\n /**\n * Check if a file is a test file\n */\n isTestFile(file) {\n return TEST_FILE_PATTERNS.some((p) => p.test(file));\n }\n /**\n * Detect breaking changes in content\n */\n detectBreakingChanges(content, file) {\n const breaks = [];\n // Check for exported symbols\n for (const pattern of EXPORT_PATTERNS) {\n const regex = new RegExp(pattern.source, pattern.flags);\n let match;\n while ((match = regex.exec(content)) !== null) {\n const symbolName = match[2] || match[1];\n if (symbolName) {\n // Check if this is a potential breaking change\n // (In a real implementation, we'd compare with previous version)\n breaks.push({\n type: \"export\",\n symbol: symbolName,\n file,\n description: `Exported symbol '${symbolName}' may have changed`,\n severity: \"medium\",\n migration: `Verify consumers of '${symbolName}' are updated`,\n });\n }\n }\n }\n // Check for interface/type changes\n const interfaceRegex = /(?:export\\s+)?interface\\s+(\\w+)\\s*\\{([^}]+)\\}/g;\n let match;\n while ((match = interfaceRegex.exec(content)) !== null) {\n const interfaceName = match[1];\n const body = match[2];\n // Check for optional vs required changes (simplified)\n if (body.includes(\"?:\") || body.includes(\": \")) {\n breaks.push({\n type: \"type\",\n symbol: interfaceName,\n file,\n description: `Interface '${interfaceName}' definition changed`,\n severity: \"medium\",\n });\n }\n }\n return breaks;\n }\n /**\n * Detect performance-sensitive code changes\n */\n detectPerformanceImpacts(content, file) {\n const impacts = [];\n for (const { pattern, type, risk } of PERFORMANCE_PATTERNS) {\n const regex = new RegExp(pattern.source, pattern.flags);\n let match;\n while ((match = regex.exec(content)) !== null) {\n impacts.push({\n type,\n description: `${type} operation detected: ${match[0]}`,\n risk,\n component: basename(file),\n recommendation: this.getPerformanceRecommendation(type),\n });\n }\n }\n return impacts;\n }\n /**\n * Get recommendation for performance issue type\n */\n getPerformanceRecommendation(type) {\n switch (type) {\n case \"hotpath\":\n return \"Consider memoization or caching for hot paths\";\n case \"memory\":\n return \"Monitor memory usage, consider object pooling\";\n case \"io\":\n return \"Use async operations, consider batching\";\n case \"computation\":\n return \"Profile for bottlenecks, consider Web Workers\";\n case \"bundle\":\n return \"Use dynamic imports for code splitting\";\n default:\n return \"Profile before optimizing\";\n }\n }\n /**\n * Find files that depend on changed file\n */\n findDependentFiles(file) {\n const dependents = [];\n const visited = new Set();\n const traverse = (current, depth) => {\n if (visited.has(current) || depth > 3) {\n return;\n }\n visited.add(current);\n const importers = this.reverseDependencyGraph.get(current) || [];\n for (const importer of importers) {\n dependents.push({\n path: relative(this.workspaceRoot, importer),\n reason: depth === 0 ? \"Directly imports changed file\" : `Transitive dependency (depth ${depth})`,\n level: depth === 0 ? \"high\" : depth === 1 ? \"medium\" : \"low\",\n });\n traverse(importer, depth + 1);\n }\n };\n traverse(file, 0);\n return dependents;\n }\n /**\n * Calculate overall impact score\n */\n calculateImpactScore(tests, breaks, perfs, deps) {\n let score = 0;\n // Weight by category\n score += Math.min(tests.length * 0.05, 0.25);\n score += Math.min(breaks.length * 0.15, 0.35);\n score += Math.min(perfs.filter((p) => p.risk === \"high\").length * 0.1, 0.2);\n score += Math.min(deps.length * 0.02, 0.2);\n return Math.min(score, 1);\n }\n /**\n * Deduplicate impact items\n */\n dedupeItems(items) {\n const seen = new Set();\n return items.filter((item) => {\n if (seen.has(item.path)) {\n return false;\n }\n seen.add(item.path);\n return true;\n });\n }\n}\n// =============================================================================\n// Factory\n// =============================================================================\n/**\n * Create ChangeImpactAnalyzer instance\n */\nexport function createChangeImpactAnalyzer(workspaceRoot) {\n return new ChangeImpactAnalyzer(workspaceRoot);\n}\n","/**\n * Security Analyzer\n *\n * Uses @babel/parser + @babel/traverse for AST-based security analysis.\n * Detects eval, path traversal, missing signal handlers, and other security issues.\n *\n * @module analysis/security/SecurityAnalyzer\n */\nimport { parse } from \"@babel/parser\";\nimport traverse from \"@babel/traverse\";\n/**\n * AST-based security analyzer using Babel\n */\nexport class SecurityAnalyzer {\n id = \"security\";\n name = \"Security Analysis\";\n filePatterns = [\"*.ts\", \"*.tsx\", \"*.js\", \"*.jsx\"];\n parserOptions = {\n sourceType: \"module\",\n plugins: [\"typescript\", \"jsx\"],\n errorRecovery: true,\n };\n async analyze(context) {\n const startTime = performance.now();\n const issues = [];\n let filesAnalyzed = 0;\n let nodesVisited = 0;\n const parseErrors = [];\n for (const [file, content] of context.contents) {\n if (!this.shouldAnalyzeFile(file))\n continue;\n filesAnalyzed++;\n try {\n const ast = parse(content, {\n ...this.parserOptions,\n plugins: this.getPluginsForFile(file),\n });\n const fileIssues = this.analyzeAST(ast, content, file);\n issues.push(...fileIssues.issues);\n nodesVisited += fileIssues.nodesVisited;\n }\n catch (error) {\n parseErrors.push(`${file}: ${error instanceof Error ? error.message : String(error)}`);\n issues.push({\n id: `security/parse-error/${file}`,\n severity: \"info\",\n type: \"PARSE_ERROR\",\n message: `Could not parse for security analysis: ${error instanceof Error ? error.message : String(error)}`,\n file,\n });\n }\n }\n return {\n analyzer: this.id,\n success: true,\n issues,\n coverage: filesAnalyzed / Math.max(context.files.length, 1),\n duration: performance.now() - startTime,\n metadata: {\n filesAnalyzed,\n nodesVisited,\n patternsChecked: [\n \"UNSAFE_EVAL\",\n \"PATH_TRAVERSAL\",\n \"MISSING_SIGNAL_HANDLER\",\n \"COMMAND_INJECTION\",\n \"SQL_INJECTION\",\n \"XSS_RISK\",\n \"HARDCODED_SECRET\",\n \"UNSAFE_REGEX\",\n ],\n parseErrors,\n },\n };\n }\n shouldRun(context) {\n return context.files.some((f) => this.shouldAnalyzeFile(f));\n }\n shouldAnalyzeFile(file) {\n const ext = file.split(\".\").pop()?.toLowerCase();\n return [\"ts\", \"tsx\", \"js\", \"jsx\"].includes(ext || \"\");\n }\n getPluginsForFile(file) {\n const plugins = [\"typescript\"];\n if (file.endsWith(\".tsx\") || file.endsWith(\".jsx\")) {\n plugins.push(\"jsx\");\n }\n return plugins;\n }\n /**\n * Analyze AST for security issues\n */\n analyzeAST(ast, content, file) {\n const issues = [];\n let nodesVisited = 0;\n // Track context for daemon/server detection\n const fileContext = {\n isDaemon: false,\n hasSignalHandler: false,\n hasSocketPermissions: false,\n hasBufferLimits: false,\n };\n // Pre-scan content for daemon indicators\n fileContext.isDaemon =\n content.includes(\".listen(\") ||\n file.includes(\"daemon\") ||\n file.includes(\"server\") ||\n file.includes(\"worker\");\n traverse(ast, {\n enter() {\n nodesVisited++;\n },\n // Detect eval()\n CallExpression: (path) => {\n const callee = path.node.callee;\n // eval() detection\n if (callee.type === \"Identifier\" && callee.name === \"eval\") {\n issues.push({\n id: `security/eval/${file}/${path.node.loc?.start.line}`,\n severity: \"critical\",\n type: \"UNSAFE_EVAL\",\n message: \"eval() allows arbitrary code execution\",\n file,\n line: path.node.loc?.start.line,\n column: path.node.loc?.start.column,\n fix: \"Use JSON.parse() for data or refactor logic to avoid eval\",\n });\n }\n // new Function() detection\n if (callee.type === \"Identifier\" && callee.name === \"Function\") {\n issues.push({\n id: `security/function-constructor/${file}/${path.node.loc?.start.line}`,\n severity: \"critical\",\n type: \"UNSAFE_EVAL\",\n message: \"new Function() is equivalent to eval() and allows arbitrary code execution\",\n file,\n line: path.node.loc?.start.line,\n column: path.node.loc?.start.column,\n fix: \"Refactor to avoid dynamic code generation\",\n });\n }\n // setTimeout/setInterval with string (like eval)\n if (callee.type === \"Identifier\" && (callee.name === \"setTimeout\" || callee.name === \"setInterval\")) {\n const firstArg = path.node.arguments[0];\n if (firstArg && firstArg.type === \"StringLiteral\") {\n issues.push({\n id: `security/string-timer/${file}/${path.node.loc?.start.line}`,\n severity: \"high\",\n type: \"UNSAFE_EVAL\",\n message: `${callee.name} with string argument executes code like eval()`,\n file,\n line: path.node.loc?.start.line,\n fix: \"Pass a function instead of a string\",\n });\n }\n }\n // exec/execSync (command injection risk)\n if (callee.type === \"Identifier\" && (callee.name === \"exec\" || callee.name === \"execSync\")) {\n const firstArg = path.node.arguments[0];\n if (firstArg && !this.isStaticString(firstArg)) {\n issues.push({\n id: `security/command-injection/${file}/${path.node.loc?.start.line}`,\n severity: \"high\",\n type: \"COMMAND_INJECTION\",\n message: \"exec with dynamic command - potential command injection\",\n file,\n line: path.node.loc?.start.line,\n fix: \"Validate/sanitize input or use execFile with explicit arguments\",\n });\n }\n }\n // Signal handler detection for daemons\n if (callee.type === \"MemberExpression\" &&\n callee.object.type === \"Identifier\" &&\n callee.object.name === \"process\" &&\n callee.property.type === \"Identifier\" &&\n callee.property.name === \"on\") {\n const firstArg = path.node.arguments[0];\n if (firstArg && firstArg.type === \"StringLiteral\") {\n if (firstArg.value === \"SIGTERM\" || firstArg.value === \"SIGINT\") {\n fileContext.hasSignalHandler = true;\n }\n }\n }\n },\n // Detect fs operations with dynamic paths\n MemberExpression: (path) => {\n const node = path.node;\n if (node.object.type === \"Identifier\" && (node.object.name === \"fs\" || node.object.name === \"fsp\")) {\n const parent = path.parentPath;\n if (parent.isCallExpression()) {\n const methodName = node.property.type === \"Identifier\"\n ? node.property.name\n : node.property.value;\n // fs operations that take paths\n const pathMethods = [\n \"readFile\",\n \"readFileSync\",\n \"writeFile\",\n \"writeFileSync\",\n \"readdir\",\n \"readdirSync\",\n \"stat\",\n \"statSync\",\n \"unlink\",\n \"unlinkSync\",\n \"mkdir\",\n \"mkdirSync\",\n \"rmdir\",\n \"rmdirSync\",\n \"access\",\n \"accessSync\",\n ];\n if (pathMethods.includes(methodName)) {\n const firstArg = parent.node.arguments[0];\n if (firstArg && !this.isStaticPath(firstArg)) {\n issues.push({\n id: `security/path-traversal/${file}/${path.node.loc?.start.line}`,\n severity: \"high\",\n type: \"PATH_TRAVERSAL\",\n message: `fs.${methodName} with dynamic path - potential path traversal`,\n file,\n line: path.node.loc?.start.line,\n fix: \"Validate paths against workspace root before use\",\n });\n }\n }\n }\n }\n },\n // Check for dangerous regex patterns\n NewExpression: (path) => {\n if (path.node.callee.type === \"Identifier\" && path.node.callee.name === \"RegExp\") {\n const firstArg = path.node.arguments[0];\n if (firstArg && !this.isStaticString(firstArg)) {\n issues.push({\n id: `security/unsafe-regex/${file}/${path.node.loc?.start.line}`,\n severity: \"medium\",\n type: \"UNSAFE_REGEX\",\n message: \"Dynamic RegExp - potential ReDoS or injection vulnerability\",\n file,\n line: path.node.loc?.start.line,\n fix: \"Use static regex patterns or validate input\",\n });\n }\n }\n },\n // Check for innerHTML/dangerouslySetInnerHTML (XSS)\n JSXAttribute: (path) => {\n const name = path.node.name;\n if (name.type === \"JSXIdentifier\" && name.name === \"dangerouslySetInnerHTML\") {\n issues.push({\n id: `security/xss-risk/${file}/${path.node.loc?.start.line}`,\n severity: \"high\",\n type: \"XSS_RISK\",\n message: \"dangerouslySetInnerHTML can lead to XSS if content is not sanitized\",\n file,\n line: path.node.loc?.start.line,\n fix: \"Sanitize HTML content before rendering or avoid using dangerouslySetInnerHTML\",\n });\n }\n },\n // Check for hardcoded secrets in variable declarations\n VariableDeclarator: (path) => {\n const id = path.node.id;\n const init = path.node.init;\n if (id.type === \"Identifier\" && init) {\n this.checkForHardcodedSecret(id.name, init, file, path.node.loc?.start.line, issues);\n }\n },\n // Check for hardcoded secrets in class properties\n ClassProperty: (path) => {\n const key = path.node.key;\n const value = path.node.value;\n if (key.type === \"Identifier\" && value) {\n this.checkForHardcodedSecret(key.name, value, file, path.node.loc?.start.line, issues);\n }\n },\n // After traversal is complete, check daemon-specific patterns\n Program: {\n exit: () => {\n if (fileContext.isDaemon && !fileContext.hasSignalHandler) {\n issues.push({\n id: `security/signal-handler/${file}`,\n severity: \"high\",\n type: \"MISSING_SIGNAL_HANDLER\",\n message: \"Daemon/server missing signal handlers (SIGTERM/SIGINT)\",\n file,\n fix: \"Add process.on('SIGTERM', gracefulShutdown) for clean shutdown\",\n });\n }\n },\n },\n });\n return { issues, nodesVisited };\n }\n /**\n * Check if expression is a static string (safe)\n */\n isStaticString(node) {\n if (node.type === \"StringLiteral\")\n return true;\n if (node.type === \"TemplateLiteral\" && node.expressions.length === 0)\n return true;\n return false;\n }\n /**\n * Check if expression is a static path (safe)\n */\n isStaticPath(node) {\n // Static string literal\n if (node.type === \"StringLiteral\")\n return true;\n // Template literal with no interpolation\n if (node.type === \"TemplateLiteral\" && node.expressions.length === 0)\n return true;\n // path.join(__dirname, 'static') is somewhat safe\n if (node.type === \"CallExpression\") {\n const callee = node.callee;\n if (callee.type === \"MemberExpression\" &&\n callee.object.type === \"Identifier\" &&\n callee.object.name === \"path\" &&\n callee.property.type === \"Identifier\" &&\n callee.property.name === \"join\") {\n // Check if all arguments are static or __dirname\n return node.arguments.every((arg) => {\n if (arg.type === \"StringLiteral\")\n return true;\n if (arg.type === \"Identifier\" && (arg.name === \"__dirname\" || arg.name === \"__filename\"))\n return true;\n return false;\n });\n }\n }\n return false;\n }\n /**\n * Check if a value looks like a hardcoded secret\n */\n checkForHardcodedSecret(name, value, file, line, issues) {\n if (!value) {\n return;\n }\n const varName = name.toLowerCase();\n const secretIndicators = [\"apikey\", \"api_key\", \"secret\", \"password\", \"token\", \"credential\", \"auth\", \"key\"];\n if (secretIndicators.some((s) => varName.includes(s))) {\n if (value.type === \"StringLiteral\" && value.value.length > 8) {\n // Skip obvious placeholders\n const valueStr = value.value.toLowerCase();\n if (!valueStr.includes(\"placeholder\") &&\n !valueStr.includes(\"example\") &&\n !valueStr.includes(\"xxx\") &&\n !valueStr.includes(\"todo\") &&\n !valueStr.includes(\"your_\") &&\n !valueStr.includes(\"env.\")) {\n issues.push({\n id: `security/hardcoded-secret/${file}/${line}`,\n severity: \"critical\",\n type: \"HARDCODED_SECRET\",\n message: `Possible hardcoded secret in \"${name}\"`,\n file,\n line,\n fix: \"Use environment variables for secrets\",\n });\n }\n }\n }\n }\n}\n","/**\n * Orphan File Detector\n *\n * Uses madge to detect orphaned files (files with no dependents).\n * These are potential dead code that may be safe to delete.\n *\n * Note: madge is a dev dependency, so this module handles the case\n * where it's not available gracefully.\n *\n * @module analysis/static/OrphanDetector\n */\nconst DEFAULT_OPTIONS = {\n fileExtensions: [\"ts\", \"tsx\", \"js\", \"jsx\"],\n excludePatterns: [\n \"node_modules\",\n \"dist\",\n \".next\",\n \"coverage\",\n \"**/*.test.*\",\n \"**/*.spec.*\",\n \"**/__tests__/**\",\n \"**/__mocks__/**\",\n ],\n};\n/**\n * Detect orphaned files in a directory\n *\n * @param entryPoint - Entry file or directory to analyze\n * @param options - Detection options\n * @returns Detection result with orphan list\n *\n * @example\n * ```typescript\n * const result = await detectOrphans(\"src/index.ts\", {\n * fileExtensions: [\"ts\", \"tsx\"],\n * excludePatterns: [\"node_modules\", \"dist\"]\n * });\n *\n * if (result.success && result.orphans.length > 0) {\n * console.log(\"Potential dead code:\", result.orphans);\n * }\n * ```\n */\nexport async function detectOrphans(entryPoint, options = {}) {\n const startTime = Date.now();\n const mergedOptions = { ...DEFAULT_OPTIONS, ...options };\n try {\n // Dynamic import madge - it's a dev dependency\n const madgeModule = await import(\"madge\");\n const madge = madgeModule.default || madgeModule;\n const result = await madge(entryPoint, {\n fileExtensions: mergedOptions.fileExtensions,\n excludeRegExp: mergedOptions.excludePatterns.map((p) => {\n // Convert glob patterns to regex\n const regexPattern = p.replace(/\\*\\*/g, \".*\").replace(/\\*/g, \"[^/]*\").replace(/\\./g, \"\\\\.\");\n return new RegExp(regexPattern);\n }),\n tsConfig: mergedOptions.tsConfigPath,\n detectiveOptions: {\n ts: {\n skipTypeImports: true,\n },\n },\n });\n const orphans = result.orphans();\n const allFiles = Object.keys(result.obj());\n return {\n orphans,\n totalFiles: allFiles.length,\n success: true,\n duration: Date.now() - startTime,\n };\n }\n catch (error) {\n return {\n orphans: [],\n totalFiles: 0,\n success: false,\n error: error instanceof Error ? error.message : String(error),\n duration: Date.now() - startTime,\n };\n }\n}\n/**\n * Filter orphans to only include files from a specific list\n *\n * Useful for focusing on files the AI agent plans to modify.\n *\n * @param orphanResult - Result from detectOrphans\n * @param targetFiles - Files to filter to\n * @returns Filtered orphan list\n */\nexport function filterOrphansToFiles(orphanResult, targetFiles) {\n if (!orphanResult.success) {\n return [];\n }\n const targetSet = new Set(targetFiles.map((f) => f.replace(/\\\\/g, \"/\")));\n return orphanResult.orphans.filter((orphan) => {\n const normalizedOrphan = orphan.replace(/\\\\/g, \"/\");\n return targetSet.has(normalizedOrphan) || targetFiles.some((t) => normalizedOrphan.endsWith(t));\n });\n}\n/**\n * Check if specific files are orphans\n *\n * More efficient than full orphan detection when you only care\n * about specific files.\n *\n * @param files - Files to check\n * @param workspaceRoot - Workspace root directory\n * @returns Which of the provided files are orphans\n */\nexport async function checkFilesForOrphanStatus(files, workspaceRoot) {\n // For efficiency, we analyze the whole workspace once\n // then filter to the requested files\n const result = await detectOrphans(workspaceRoot, {\n baseDir: workspaceRoot,\n });\n if (!result.success) {\n return { orphans: [], success: false, error: result.error };\n }\n const orphans = filterOrphansToFiles(result, files);\n return { orphans, success: true };\n}\n","/**\n * Static Analysis Module\n *\n * Lightweight static analysis tools for AI agent assistance.\n * These tools help agents identify issues upfront, saving exploration tokens.\n *\n * Features:\n * - Skipped test detection (describe.skip, it.skip, test.skip)\n * - Orphaned file detection (dead code candidates)\n *\n * @module analysis/static\n */\n// Circular Dependency Detection\nexport { detectCircular, detectCircularInMonorepo, formatCycles, summarizeCircular, } from \"./CircularDetector.js\";\n// Orphan Detection\nexport { checkFilesForOrphanStatus, detectOrphans, filterOrphansToFiles, } from \"./OrphanDetector.js\";\n// Skipped Test Detection\nexport { analyzeSkippedTests, detectSkippedTests, getSkippedTestSummary, } from \"./SkippedTestDetector.js\";\n/**\n * Run lightweight static analysis on target files\n *\n * This is designed to be fast enough to run in begin_task\n * without significantly impacting latency.\n *\n * @param files - Files to analyze (map of path to content)\n * @param workspaceRoot - Workspace root for orphan detection\n * @param options - Analysis options\n * @returns Combined analysis result\n */\nexport async function runStaticAnalysis(files, _workspaceRoot, options = {}) {\n const startTime = Date.now();\n const result = {\n skippedTests: [],\n orphanedFiles: [],\n duration: 0,\n success: true,\n errors: [],\n };\n // 1. Detect skipped tests (fast - just AST parsing)\n if (!options.skipTestDetection) {\n try {\n const { analyzeSkippedTests } = await import(\"./SkippedTestDetector.js\");\n const testResults = analyzeSkippedTests(files);\n for (const testResult of testResults) {\n if (!testResult.parsed && testResult.error) {\n result.errors.push(`Parse error in ${testResult.file}: ${testResult.error}`);\n }\n for (const skipped of testResult.skipped) {\n result.skippedTests.push({\n file: skipped.file,\n type: skipped.type,\n name: skipped.name,\n line: skipped.line,\n });\n }\n }\n }\n catch (error) {\n result.errors.push(`Skipped test detection failed: ${error instanceof Error ? error.message : String(error)}`);\n }\n }\n // 2. Orphan detection is disabled by default in begin_task\n // because it requires analyzing the full dependency graph\n // which can be slow for large codebases (500ms+)\n // Enable with options.skipOrphanDetection = false\n if (!options.skipOrphanDetection) {\n // Orphan detection is expensive - skip by default\n // Will be enabled in a future version with caching\n }\n result.duration = Date.now() - startTime;\n result.success = result.errors.length === 0;\n return result;\n}\n"]}
@@ -1,6 +1,7 @@
1
- import { generateId } from './chunk-BCIXMIPW.js';
2
- import { detectSkippedTests } from './chunk-BJS6XH2V.js';
3
- import { __name, __require } from './chunk-WCQVDF3K.js';
1
+ #!/usr/bin/env node
2
+ import { generateId } from './chunk-6MR2TINI.js';
3
+ import { detectSkippedTests } from './chunk-QAKFE3NE.js';
4
+ import { __name, __require } from './chunk-BW7RALUZ.js';
4
5
  import { z } from 'zod';
5
6
  import { createHash, randomUUID } from 'crypto';
6
7
  import 'eventemitter2';
@@ -16218,5 +16219,5 @@ var DEFAULT_FRAGILITY_CONFIG = {
16218
16219
  };
16219
16220
 
16220
16221
  export { AdvisoryEngine, ArchitectureLayer, CALIBRATION_THRESHOLDS, CODE_SYNONYMS, CONFIDENCE_THRESHOLDS, Composer, ConfidenceCalculator, ConfidenceCalculator2, ConfigStore, ConsecutiveModificationRule, ContextEngine, CriticalValidationError, DEFAULT_ADVISORY_CONFIG, DEFAULT_BUDGET_CONFIG, DEFAULT_FRAGILITY_CONFIG, DEFAULT_SESSION_LIMITS, DEFAULT_THRESHOLD_ADJUSTMENTS, DependencyLayer, FragileFileRule, GapAnalyzer, GenericSuggestionsRule, HybridRetriever, ISSUE_THRESHOLDS, Intelligence, IntelligenceConfigSchema, KnowledgeStore, LearningEngine, LoopDetectionRule, LoopDetector, MockDetector, PROMOTION_THRESHOLDS, PatternDetector, PerformanceLayer, PhantomDependencyDetector, PolicyEngine, QUERY_TYPE_KEYWORDS, RECENCY_HALF_LIFE_DAYS, SOURCE_TYPE_WEIGHTS, STATUS_PENALTIES, SarifFormatter, SecretDetector, SecurityLayer, SemanticRetriever, SessionManager, SkippedTestRule, SyntaxLayer, TestLayer, TypeLayer, ValidationError, ValidationPipeline, ViolationHistoryRule, ViolationTracker, WorkspaceProfiler, apiPatterns, appendJsonl, appendJsonlAsync, astroConfig, authPatterns, batchRerankingScores, calculateComplexity, calculateHistoricalBoost, calculateMetadataBoost, calculateRerankingScore, classifyQuery, cosineSimilarity, createBuiltInMatchers, createComposer, createDefaultWorkspace, createSnapshotStorage, daemonPatterns, detectFrameworks, detectPrimaryFramework, errorHandlingMatchers, evaluate, expandQuery, expressConfig, generateCacheKey, generateId2 as generateId, getAllFrameworks, getConfidenceLevel, getEmbedding, getFramework, getFrameworksByCategory, getRetrievalStrategy, getWeightsForType, isValidFramework, loadJsonl, loadPolicyConfig, nestjsConfig, nextjsConfig, performanceMatchers, preloadEmbeddings, reactViteConfig, securityMatchers, testingMatchers, validateWeights, writeJsonl };
16221
- //# sourceMappingURL=chunk-MTQ6ESQR.js.map
16222
- //# sourceMappingURL=chunk-MTQ6ESQR.js.map
16222
+ //# sourceMappingURL=chunk-ISVRGBWT.js.map
16223
+ //# sourceMappingURL=chunk-ISVRGBWT.js.map