@codeledger/cli 0.6.7 → 0.6.8

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 (111) hide show
  1. package/dist/architecture-graph/dependency-scanner.d.ts +16 -0
  2. package/dist/architecture-graph/dependency-scanner.d.ts.map +1 -0
  3. package/dist/architecture-graph/dependency-scanner.js +96 -0
  4. package/dist/architecture-graph/dependency-scanner.js.map +1 -0
  5. package/dist/architecture-graph/graph-builder.d.ts +70 -0
  6. package/dist/architecture-graph/graph-builder.d.ts.map +1 -0
  7. package/dist/architecture-graph/graph-builder.js +231 -0
  8. package/dist/architecture-graph/graph-builder.js.map +1 -0
  9. package/dist/architecture-graph/index.d.ts +4 -0
  10. package/dist/architecture-graph/index.d.ts.map +1 -0
  11. package/dist/architecture-graph/index.js +7 -0
  12. package/dist/architecture-graph/index.js.map +1 -0
  13. package/dist/architecture-graph/service-scanner.d.ts +22 -0
  14. package/dist/architecture-graph/service-scanner.d.ts.map +1 -0
  15. package/dist/architecture-graph/service-scanner.js +181 -0
  16. package/dist/architecture-graph/service-scanner.js.map +1 -0
  17. package/dist/commands/audit-export.d.ts +8 -0
  18. package/dist/commands/audit-export.d.ts.map +1 -0
  19. package/dist/commands/audit-export.js +190 -0
  20. package/dist/commands/audit-export.js.map +1 -0
  21. package/dist/commands/fix.d.ts +7 -0
  22. package/dist/commands/fix.d.ts.map +1 -0
  23. package/dist/commands/fix.js +107 -0
  24. package/dist/commands/fix.js.map +1 -0
  25. package/dist/commands/graph.d.ts +8 -0
  26. package/dist/commands/graph.d.ts.map +1 -0
  27. package/dist/commands/graph.js +29 -0
  28. package/dist/commands/graph.js.map +1 -0
  29. package/dist/commands/learn.d.ts +8 -0
  30. package/dist/commands/learn.d.ts.map +1 -0
  31. package/dist/commands/learn.js +33 -0
  32. package/dist/commands/learn.js.map +1 -0
  33. package/dist/commands/pack.d.ts +12 -0
  34. package/dist/commands/pack.d.ts.map +1 -0
  35. package/dist/commands/pack.js +75 -0
  36. package/dist/commands/pack.js.map +1 -0
  37. package/dist/commands/serve.d.ts +13 -0
  38. package/dist/commands/serve.d.ts.map +1 -0
  39. package/dist/commands/serve.js +179 -0
  40. package/dist/commands/serve.js.map +1 -0
  41. package/dist/commands/setup-ci.d.ts +6 -4
  42. package/dist/commands/setup-ci.d.ts.map +1 -1
  43. package/dist/commands/setup-ci.js +216 -23
  44. package/dist/commands/setup-ci.js.map +1 -1
  45. package/dist/index.d.ts.map +1 -1
  46. package/dist/index.js +82 -3
  47. package/dist/index.js.map +1 -1
  48. package/dist/review-intelligence/detectors/cjs-named-import.d.ts +13 -0
  49. package/dist/review-intelligence/detectors/cjs-named-import.d.ts.map +1 -0
  50. package/dist/review-intelligence/detectors/cjs-named-import.js +134 -0
  51. package/dist/review-intelligence/detectors/cjs-named-import.js.map +1 -0
  52. package/dist/review-intelligence/detectors/exact-count-assertion.d.ts +17 -0
  53. package/dist/review-intelligence/detectors/exact-count-assertion.d.ts.map +1 -0
  54. package/dist/review-intelligence/detectors/exact-count-assertion.js +93 -0
  55. package/dist/review-intelligence/detectors/exact-count-assertion.js.map +1 -0
  56. package/dist/review-intelligence/detectors/exports-map-missing.d.ts +14 -0
  57. package/dist/review-intelligence/detectors/exports-map-missing.d.ts.map +1 -0
  58. package/dist/review-intelligence/detectors/exports-map-missing.js +131 -0
  59. package/dist/review-intelligence/detectors/exports-map-missing.js.map +1 -0
  60. package/dist/review-intelligence/detectors/fixture-keyword-drift.d.ts +12 -0
  61. package/dist/review-intelligence/detectors/fixture-keyword-drift.d.ts.map +1 -0
  62. package/dist/review-intelligence/detectors/fixture-keyword-drift.js +82 -0
  63. package/dist/review-intelligence/detectors/fixture-keyword-drift.js.map +1 -0
  64. package/dist/review-intelligence/detectors/optional-infra-crash.d.ts +12 -0
  65. package/dist/review-intelligence/detectors/optional-infra-crash.d.ts.map +1 -0
  66. package/dist/review-intelligence/detectors/optional-infra-crash.js +97 -0
  67. package/dist/review-intelligence/detectors/optional-infra-crash.js.map +1 -0
  68. package/dist/review-intelligence/detectors/undeclared-dependency.d.ts +11 -0
  69. package/dist/review-intelligence/detectors/undeclared-dependency.d.ts.map +1 -0
  70. package/dist/review-intelligence/detectors/undeclared-dependency.js +100 -0
  71. package/dist/review-intelligence/detectors/undeclared-dependency.js.map +1 -0
  72. package/dist/review-intelligence/engine/ast-parser.d.ts +90 -0
  73. package/dist/review-intelligence/engine/ast-parser.d.ts.map +1 -0
  74. package/dist/review-intelligence/engine/ast-parser.js +266 -0
  75. package/dist/review-intelligence/engine/ast-parser.js.map +1 -0
  76. package/dist/review-intelligence/engine/dataflow.d.ts +34 -0
  77. package/dist/review-intelligence/engine/dataflow.d.ts.map +1 -0
  78. package/dist/review-intelligence/engine/dataflow.js +115 -0
  79. package/dist/review-intelligence/engine/dataflow.js.map +1 -0
  80. package/dist/review-intelligence/engine/index.d.ts +7 -0
  81. package/dist/review-intelligence/engine/index.d.ts.map +1 -0
  82. package/dist/review-intelligence/engine/index.js +7 -0
  83. package/dist/review-intelligence/engine/index.js.map +1 -0
  84. package/dist/review-intelligence/engine/symbol-resolver.d.ts +34 -0
  85. package/dist/review-intelligence/engine/symbol-resolver.d.ts.map +1 -0
  86. package/dist/review-intelligence/engine/symbol-resolver.js +106 -0
  87. package/dist/review-intelligence/engine/symbol-resolver.js.map +1 -0
  88. package/dist/review-intelligence/fixes/index.d.ts +36 -0
  89. package/dist/review-intelligence/fixes/index.d.ts.map +1 -0
  90. package/dist/review-intelligence/fixes/index.js +157 -0
  91. package/dist/review-intelligence/fixes/index.js.map +1 -0
  92. package/dist/review-intelligence/index.d.ts.map +1 -1
  93. package/dist/review-intelligence/index.js +2 -0
  94. package/dist/review-intelligence/index.js.map +1 -1
  95. package/dist/review-intelligence/invariants.d.ts.map +1 -1
  96. package/dist/review-intelligence/invariants.js +14 -1
  97. package/dist/review-intelligence/invariants.js.map +1 -1
  98. package/dist/review-intelligence/learning/index.d.ts +39 -0
  99. package/dist/review-intelligence/learning/index.d.ts.map +1 -0
  100. package/dist/review-intelligence/learning/index.js +265 -0
  101. package/dist/review-intelligence/learning/index.js.map +1 -0
  102. package/dist/review-intelligence/packs/index.d.ts +69 -0
  103. package/dist/review-intelligence/packs/index.d.ts.map +1 -0
  104. package/dist/review-intelligence/packs/index.js +168 -0
  105. package/dist/review-intelligence/packs/index.js.map +1 -0
  106. package/dist/review-intelligence/repair-guidance.d.ts.map +1 -1
  107. package/dist/review-intelligence/repair-guidance.js +46 -0
  108. package/dist/review-intelligence/repair-guidance.js.map +1 -1
  109. package/dist/review-intelligence/types.d.ts +6 -1
  110. package/dist/review-intelligence/types.d.ts.map +1 -1
  111. package/package.json +9 -9
package/dist/index.js CHANGED
@@ -31,6 +31,12 @@ import { runReviewGate } from './commands/review-gate.js';
31
31
  import { runProgressCheck } from './commands/progress-check.js';
32
32
  import { runVendor } from './commands/vendor.js';
33
33
  import { runDetectSecrets } from './commands/detect-secrets.js';
34
+ import { runFix } from './commands/fix.js';
35
+ import { runLearn } from './commands/learn.js';
36
+ import { runGraph } from './commands/graph.js';
37
+ import { runPack } from './commands/pack.js';
38
+ import { runServe } from './commands/serve.js';
39
+ import { runAuditExport } from './commands/audit-export.js';
34
40
  import { CLI_VERSION } from './version.js';
35
41
  const args = process.argv.slice(2);
36
42
  const command = args[0];
@@ -64,14 +70,20 @@ const KNOWN_FLAGS = {
64
70
  manifest: new Set(['task', 'out', 'artifacts-dir']),
65
71
  'sign-manifest': new Set(['in', 'out']),
66
72
  policy: new Set(['print', 'policy-root']),
67
- 'setup-ci': new Set(['mode', 'output']),
68
- verify: new Set(['task', 'policy-root', 'artifacts-dir', 'coverage-attestation', 'explain', 'json', 'debug-review', 'invariant', 'update-baseline', 'show-triaged']),
73
+ 'setup-ci': new Set(['mode', 'output', 'provider']),
74
+ verify: new Set(['task', 'policy-root', 'artifacts-dir', 'coverage-attestation', 'explain', 'json', 'debug-review', 'invariant', 'update-baseline', 'show-triaged', 'baseline-path']),
69
75
  init: new Set(['force']),
70
76
  'review-coverage': new Set(['session']),
71
77
  'review-gate': new Set(['session']),
72
78
  'progress-check': new Set(['session']),
73
79
  'vendor': new Set(['target']),
74
80
  'detect-secrets': new Set(['json', 'sarif', 'severity', 'bundle', 'paths-from-bundle', 'baseline', 'update-baseline', 'entropy']),
81
+ fix: new Set(['rule', 'dry-run']),
82
+ learn: new Set(['save', 'enable', 'json']),
83
+ graph: new Set(['json', 'save']),
84
+ pack: new Set(['name', 'pack']),
85
+ serve: new Set(['port']),
86
+ 'audit-export': new Set(['format', 'output', 'table']),
75
87
  };
76
88
  function warnUnknownFlags(command, flags) {
77
89
  const known = KNOWN_FLAGS[command];
@@ -273,6 +285,47 @@ async function main() {
273
285
  await runDetectSecrets(process.cwd(), detectSecretsFlags);
274
286
  break;
275
287
  }
288
+ case 'fix': {
289
+ const fixFlags = parseArgs(args.slice(1));
290
+ warnUnknownFlags('fix', fixFlags);
291
+ await runFix(process.cwd(), fixFlags);
292
+ break;
293
+ }
294
+ case 'learn': {
295
+ const learnFlags = parseArgs(args.slice(1));
296
+ warnUnknownFlags('learn', learnFlags);
297
+ await runLearn(process.cwd(), learnFlags);
298
+ break;
299
+ }
300
+ case 'graph': {
301
+ const graphFlags = parseArgs(args.slice(1));
302
+ warnUnknownFlags('graph', graphFlags);
303
+ await runGraph(process.cwd(), graphFlags);
304
+ break;
305
+ }
306
+ case 'pack': {
307
+ const packFlags = parseArgs(args.slice(2));
308
+ packFlags['_sub'] = args[1] ?? 'list';
309
+ // Capture positional pack name: `pack enable platform-api-pack`
310
+ if (args[2] && !args[2].startsWith('--')) {
311
+ packFlags['name'] = args[2];
312
+ }
313
+ warnUnknownFlags('pack', packFlags);
314
+ await runPack(process.cwd(), packFlags);
315
+ break;
316
+ }
317
+ case 'audit-export': {
318
+ const auditExportFlags = parseArgs(args.slice(1));
319
+ warnUnknownFlags('audit-export', auditExportFlags);
320
+ await runAuditExport(process.cwd(), auditExportFlags);
321
+ break;
322
+ }
323
+ case 'serve': {
324
+ const serveFlags = parseArgs(args.slice(1));
325
+ warnUnknownFlags('serve', serveFlags);
326
+ await runServe(process.cwd(), serveFlags);
327
+ break;
328
+ }
276
329
  case 'version':
277
330
  case '--version':
278
331
  case '-v':
@@ -334,7 +387,8 @@ Commands:
334
387
  verify --task "..." CI enforcement: evaluate policy, emit artifacts, return exit code
335
388
  [--policy-root <dir>] [--artifacts-dir <dir>]
336
389
  [--explain] [--json] [--debug-review] [--invariant <name>]
337
- setup-ci Generate GitHub Actions workflow + policy for CI integration
390
+ setup-ci Generate CI workflow + policy for CI integration
391
+ [--provider github|gitlab|circleci|azure] (default: github)
338
392
  [--mode observe|warn|block] [--output <dir>]
339
393
  intent [init|show|set|ack]
340
394
  Intent governance (deterministic drift detection)
@@ -342,6 +396,20 @@ Commands:
342
396
  set: --objective|--constraint|--scope-in|--scope-out "..."
343
397
  ack: [--as-baseline] acknowledge intent drift
344
398
 
399
+ Architecture:
400
+ fix [--rule <id>] Apply auto-fixes for architectural violations
401
+ [--dry-run] Preview fixes without applying
402
+ learn Discover repository conventions and generate invariant packs
403
+ [--save] Save generated pack [--enable] Auto-enable
404
+ [--json] Output as JSON
405
+ graph Build and display architecture graph
406
+ [--json] Output as JSON [--save] Save to .codeledger/
407
+ pack [list|enable|disable]
408
+ Manage invariant packs
409
+ list: Show all packs and status
410
+ enable <name>: Enable a pack
411
+ disable <name>: Disable a pack
412
+
345
413
  Security:
346
414
  detect-secrets Scan repo for hardcoded secrets and credentials
347
415
  [--json] [--sarif] [--severity high|medium|low]
@@ -353,6 +421,17 @@ Mid-Session:
353
421
  progress-check Lightweight mid-session bundle coverage check
354
422
  [--session <id>]
355
423
 
424
+ Compliance / Audit:
425
+ audit-export Export ledger data to JSON, CSV, or JSON Lines (SIEM)
426
+ [--format json|csv|jsonl] (default: json)
427
+ [--output <path>] Write to file instead of stdout
428
+ [--table runs|events|bundles|coverage] Single table only
429
+
430
+ API Server:
431
+ serve Start lightweight HTTP API server
432
+ [--port 7400] (default: 7400)
433
+ Endpoints: GET /health, POST /verify, POST /bundle
434
+
356
435
  Cloud / Web:
357
436
  vendor Vendor standalone CLI into a repo for cloud environments
358
437
  [--target <dir>] (default: current directory)
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import type { InvariantDetector } from '../types.js';
2
+ /**
3
+ * INVARIANT — cjs_named_import
4
+ *
5
+ * Detect named imports from known CommonJS-only packages in ESM files.
6
+ * Named imports from CJS modules fail at runtime with:
7
+ * SyntaxError: Named export 'X' not found. The requested module 'Y'
8
+ * is a CommonJS module, which may not support all module.exports as named exports.
9
+ *
10
+ * Severity: P1 (runtime crash)
11
+ */
12
+ export declare const cjsNamedImportDetector: InvariantDetector;
13
+ //# sourceMappingURL=cjs-named-import.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cjs-named-import.d.ts","sourceRoot":"","sources":["../../../src/review-intelligence/detectors/cjs-named-import.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,iBAAiB,EAGlB,MAAM,aAAa,CAAC;AA4DrB;;;;;;;;;GASG;AACH,eAAO,MAAM,sBAAsB,EAAE,iBAkDpC,CAAC"}
@@ -0,0 +1,134 @@
1
+ import { parseImports } from '../engine/ast-parser.js';
2
+ import { resolveModule } from '../engine/symbol-resolver.js';
3
+ /**
4
+ * Well-known CJS-only packages that commonly cause ESM interop issues.
5
+ * This list covers the most frequently encountered cases.
6
+ */
7
+ const KNOWN_CJS_PACKAGES = new Set([
8
+ 'express',
9
+ 'chalk',
10
+ 'ora',
11
+ 'inquirer',
12
+ 'commander',
13
+ 'yargs',
14
+ 'debug',
15
+ 'dotenv',
16
+ 'lodash',
17
+ 'moment',
18
+ 'winston',
19
+ 'morgan',
20
+ 'cors',
21
+ 'helmet',
22
+ 'compression',
23
+ 'cookie-parser',
24
+ 'body-parser',
25
+ 'multer',
26
+ 'passport',
27
+ 'jsonwebtoken',
28
+ 'bcrypt',
29
+ 'bcryptjs',
30
+ 'mongoose',
31
+ 'sequelize',
32
+ 'knex',
33
+ 'pg',
34
+ 'mysql2',
35
+ 'redis',
36
+ 'ioredis',
37
+ 'bull',
38
+ 'node-cron',
39
+ 'nodemailer',
40
+ 'handlebars',
41
+ 'ejs',
42
+ 'pug',
43
+ 'cheerio',
44
+ 'puppeteer',
45
+ 'sharp',
46
+ 'jimp',
47
+ 'uuid',
48
+ 'shortid',
49
+ 'nanoid',
50
+ 'glob',
51
+ 'minimatch',
52
+ 'minimist',
53
+ 'semver',
54
+ 'rimraf',
55
+ 'mkdirp',
56
+ 'cross-env',
57
+ ]);
58
+ /**
59
+ * INVARIANT — cjs_named_import
60
+ *
61
+ * Detect named imports from known CommonJS-only packages in ESM files.
62
+ * Named imports from CJS modules fail at runtime with:
63
+ * SyntaxError: Named export 'X' not found. The requested module 'Y'
64
+ * is a CommonJS module, which may not support all module.exports as named exports.
65
+ *
66
+ * Severity: P1 (runtime crash)
67
+ */
68
+ export const cjsNamedImportDetector = {
69
+ name: 'build_runtime',
70
+ analyze(ctx) {
71
+ const findings = [];
72
+ for (const filePath of ctx.files) {
73
+ const content = ctx.fileContents.get(filePath);
74
+ if (!content)
75
+ continue;
76
+ if (!isAnalyzableFile(filePath))
77
+ continue;
78
+ // Only check ESM files
79
+ if (!isEsmFile(filePath, content))
80
+ continue;
81
+ const imports = parseImports(content);
82
+ for (const imp of imports) {
83
+ if (imp.isTypeOnly)
84
+ continue;
85
+ if (imp.namedImports.length === 0)
86
+ continue;
87
+ if (imp.isDynamic)
88
+ continue;
89
+ const resolved = resolveModule(imp.source);
90
+ if (resolved.kind !== 'external')
91
+ continue;
92
+ if (!resolved.packageName)
93
+ continue;
94
+ if (KNOWN_CJS_PACKAGES.has(resolved.packageName)) {
95
+ const namedList = imp.namedImports.join(', ');
96
+ findings.push({
97
+ rule_id: 'RI-CJS-001',
98
+ title: 'Named import from CommonJS module',
99
+ severity: 'P1',
100
+ category: 'build_runtime',
101
+ file: filePath,
102
+ line: imp.line,
103
+ trigger: `import { ${namedList} } from '${imp.source}'`,
104
+ missing_companions: [
105
+ `Use default import: import ${resolved.packageName.replace(/[^a-zA-Z]/g, '')} from '${imp.source}'`,
106
+ ],
107
+ why_it_matters: `'${resolved.packageName}' is a CommonJS module. Named imports from CJS modules ` +
108
+ 'may fail at runtime in ESM contexts with "SyntaxError: Named export not found". ' +
109
+ 'Use a default import and destructure, or use createRequire().',
110
+ confidence: 'medium',
111
+ });
112
+ }
113
+ }
114
+ }
115
+ return findings;
116
+ },
117
+ };
118
+ /**
119
+ * Check if a file is likely an ESM file.
120
+ */
121
+ function isEsmFile(filePath, _content) {
122
+ // .mts, .mjs are always ESM
123
+ if (/\.m[jt]s$/.test(filePath))
124
+ return true;
125
+ // .ts and .js could be either — assume ESM in modern codebases
126
+ // (this is a heuristic; precise detection requires checking package.json type)
127
+ if (/\.(?:ts|tsx)$/.test(filePath))
128
+ return true;
129
+ return false;
130
+ }
131
+ function isAnalyzableFile(filePath) {
132
+ return /\.(?:ts|tsx|js|jsx|mts|mjs)$/.test(filePath);
133
+ }
134
+ //# sourceMappingURL=cjs-named-import.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cjs-named-import.js","sourceRoot":"","sources":["../../../src/review-intelligence/detectors/cjs-named-import.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import type { InvariantDetector } from '../types.js';
2
+ /**
3
+ * INVARIANT — exact_count_assertion_risk
4
+ *
5
+ * Detect brittle exact-count assertions in test files, especially
6
+ * in search/filter/query tests where the exact count depends on
7
+ * fixture data that may change.
8
+ *
9
+ * Patterns detected:
10
+ * expect(results.length).toBe(N)
11
+ * expect(results).toHaveLength(N)
12
+ * assert.equal(results.length, N)
13
+ *
14
+ * Severity: P2 (brittle tests that break on data changes)
15
+ */
16
+ export declare const exactCountAssertionDetector: InvariantDetector;
17
+ //# sourceMappingURL=exact-count-assertion.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"exact-count-assertion.d.ts","sourceRoot":"","sources":["../../../src/review-intelligence/detectors/exact-count-assertion.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,iBAAiB,EAGlB,MAAM,aAAa,CAAC;AAErB;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,2BAA2B,EAAE,iBA2DzC,CAAC"}
@@ -0,0 +1,93 @@
1
+ /**
2
+ * INVARIANT — exact_count_assertion_risk
3
+ *
4
+ * Detect brittle exact-count assertions in test files, especially
5
+ * in search/filter/query tests where the exact count depends on
6
+ * fixture data that may change.
7
+ *
8
+ * Patterns detected:
9
+ * expect(results.length).toBe(N)
10
+ * expect(results).toHaveLength(N)
11
+ * assert.equal(results.length, N)
12
+ *
13
+ * Severity: P2 (brittle tests that break on data changes)
14
+ */
15
+ export const exactCountAssertionDetector = {
16
+ name: 'test_integrity',
17
+ analyze(ctx) {
18
+ const findings = [];
19
+ for (const filePath of ctx.files) {
20
+ const content = ctx.fileContents.get(filePath);
21
+ if (!content)
22
+ continue;
23
+ // Only analyze test files
24
+ if (!isTestFile(filePath))
25
+ continue;
26
+ const lines = content.split('\n');
27
+ let inSearchContext = false;
28
+ for (let i = 0; i < lines.length; i++) {
29
+ const line = lines[i];
30
+ const trimmed = line.trim();
31
+ // Skip comments
32
+ if (trimmed.startsWith('//') || trimmed.startsWith('*'))
33
+ continue;
34
+ // Track search/filter/query context
35
+ if (/\b(?:search|filter|query|find|list|getAll)\s*\(/.test(trimmed)) {
36
+ inSearchContext = true;
37
+ }
38
+ // Reset context at test boundaries
39
+ if (/\b(?:it|test|describe)\s*\(/.test(trimmed)) {
40
+ inSearchContext = false;
41
+ }
42
+ // Detect exact count assertions
43
+ const countMatch = detectExactCountAssertion(trimmed);
44
+ if (countMatch && inSearchContext) {
45
+ findings.push({
46
+ rule_id: 'RI-EC-001',
47
+ title: 'Brittle exact count assertion in search/filter test',
48
+ severity: 'P2',
49
+ category: 'test_integrity',
50
+ file: filePath,
51
+ line: i + 1,
52
+ trigger: countMatch.pattern,
53
+ missing_companions: [
54
+ 'Use toBeGreaterThan(0), toBeGreaterThanOrEqual(N), or data-driven counts',
55
+ ],
56
+ why_it_matters: `Exact count assertion (${countMatch.count}) in a search/filter test is brittle. ` +
57
+ 'If fixture data changes, this assertion breaks even though the search logic is correct. ' +
58
+ 'Prefer range assertions or derive expected counts from the test data.',
59
+ confidence: 'medium',
60
+ });
61
+ }
62
+ }
63
+ }
64
+ return findings;
65
+ },
66
+ };
67
+ function detectExactCountAssertion(line) {
68
+ // expect(x.length).toBe(N)
69
+ const toBeLengthMatch = /expect\s*\([^)]*\.length\s*\)\s*\.toBe\s*\(\s*(\d+)\s*\)/.exec(line);
70
+ if (toBeLengthMatch) {
71
+ return { pattern: `expect(x.length).toBe(${toBeLengthMatch[1]})`, count: toBeLengthMatch[1] };
72
+ }
73
+ // expect(x).toHaveLength(N)
74
+ const haveLengthMatch = /expect\s*\([^)]*\)\s*\.toHaveLength\s*\(\s*(\d+)\s*\)/.exec(line);
75
+ if (haveLengthMatch) {
76
+ return { pattern: `expect(x).toHaveLength(${haveLengthMatch[1]})`, count: haveLengthMatch[1] };
77
+ }
78
+ // assert.equal(x.length, N) or assert.strictEqual(x.length, N)
79
+ const assertMatch = /assert\s*\.(?:equal|strictEqual)\s*\([^,]*\.length\s*,\s*(\d+)\s*\)/.exec(line);
80
+ if (assertMatch) {
81
+ return { pattern: `assert.equal(x.length, ${assertMatch[1]})`, count: assertMatch[1] };
82
+ }
83
+ // expect(x.length).toEqual(N)
84
+ const toEqualMatch = /expect\s*\([^)]*\.length\s*\)\s*\.toEqual\s*\(\s*(\d+)\s*\)/.exec(line);
85
+ if (toEqualMatch) {
86
+ return { pattern: `expect(x.length).toEqual(${toEqualMatch[1]})`, count: toEqualMatch[1] };
87
+ }
88
+ return undefined;
89
+ }
90
+ function isTestFile(filePath) {
91
+ return /\.(?:test|spec|e2e)\.(?:ts|tsx|js|jsx|mts|mjs)$/.test(filePath);
92
+ }
93
+ //# sourceMappingURL=exact-count-assertion.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"exact-count-assertion.js","sourceRoot":"","sources":["../../../src/review-intelligence/detectors/exact-count-assertion.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ import type { InvariantDetector } from '../types.js';
2
+ /**
3
+ * INVARIANT — exports_map_missing
4
+ *
5
+ * Detect subpath imports from packages that have an exports map but
6
+ * don't include the imported subpath.
7
+ *
8
+ * Also detects workspace packages missing exports map entries for
9
+ * subpath imports used by other packages.
10
+ *
11
+ * Severity: P1 (causes Node.js ERR_PACKAGE_PATH_NOT_EXPORTED)
12
+ */
13
+ export declare const exportsMapMissingDetector: InvariantDetector;
14
+ //# sourceMappingURL=exports-map-missing.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"exports-map-missing.d.ts","sourceRoot":"","sources":["../../../src/review-intelligence/detectors/exports-map-missing.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,iBAAiB,EAGlB,MAAM,aAAa,CAAC;AAIrB;;;;;;;;;;GAUG;AACH,eAAO,MAAM,yBAAyB,EAAE,iBAoDvC,CAAC"}
@@ -0,0 +1,131 @@
1
+ import { readFileSync, existsSync } from 'node:fs';
2
+ import { join } from 'node:path';
3
+ import { parseImports } from '../engine/ast-parser.js';
4
+ import { resolveModule } from '../engine/symbol-resolver.js';
5
+ /**
6
+ * INVARIANT — exports_map_missing
7
+ *
8
+ * Detect subpath imports from packages that have an exports map but
9
+ * don't include the imported subpath.
10
+ *
11
+ * Also detects workspace packages missing exports map entries for
12
+ * subpath imports used by other packages.
13
+ *
14
+ * Severity: P1 (causes Node.js ERR_PACKAGE_PATH_NOT_EXPORTED)
15
+ */
16
+ export const exportsMapMissingDetector = {
17
+ name: 'build_runtime',
18
+ analyze(ctx) {
19
+ const findings = [];
20
+ const exportsCache = new Map();
21
+ for (const filePath of ctx.files) {
22
+ const content = ctx.fileContents.get(filePath);
23
+ if (!content)
24
+ continue;
25
+ if (!isAnalyzableFile(filePath))
26
+ continue;
27
+ const imports = parseImports(content);
28
+ for (const imp of imports) {
29
+ const resolved = resolveModule(imp.source);
30
+ // Only check external packages with subpaths
31
+ if (resolved.kind !== 'external')
32
+ continue;
33
+ if (!resolved.subpath)
34
+ continue;
35
+ if (!resolved.packageName)
36
+ continue;
37
+ // Check if the package has an exports map
38
+ const exportsMap = getPackageExportsMap(ctx.cwd, resolved.packageName, exportsCache);
39
+ if (exportsMap === null)
40
+ continue; // No exports map = no restriction
41
+ // Check if the subpath is covered by the exports map
42
+ const subpathEntry = '.' + resolved.subpath;
43
+ if (!isSubpathExported(subpathEntry, exportsMap)) {
44
+ findings.push({
45
+ rule_id: 'RI-EM-001',
46
+ title: 'Subpath not in package exports map',
47
+ severity: 'P1',
48
+ category: 'build_runtime',
49
+ file: filePath,
50
+ line: imp.line,
51
+ trigger: `import '${imp.source}' — subpath '${subpathEntry}' not exported`,
52
+ missing_companions: [
53
+ `Add '${subpathEntry}' to the exports map of '${resolved.packageName}/package.json'`,
54
+ ],
55
+ why_it_matters: `The subpath '${subpathEntry}' is not listed in the exports map of '${resolved.packageName}'. ` +
56
+ 'Node.js will throw ERR_PACKAGE_PATH_NOT_EXPORTED at runtime. ' +
57
+ 'Either add the subpath to the package exports or use a different import path.',
58
+ confidence: 'high',
59
+ });
60
+ }
61
+ }
62
+ }
63
+ return findings;
64
+ },
65
+ };
66
+ /**
67
+ * Load the exports map from a package's package.json.
68
+ * Returns null if no exports map exists (package allows any subpath).
69
+ */
70
+ function getPackageExportsMap(cwd, packageName, cache) {
71
+ const cached = cache.get(packageName);
72
+ if (cached !== undefined)
73
+ return cached;
74
+ // Look in node_modules
75
+ const pkgJsonPath = join(cwd, 'node_modules', packageName, 'package.json');
76
+ if (!existsSync(pkgJsonPath)) {
77
+ // Also check workspace packages
78
+ const workspacePath = join(cwd, 'packages', packageName.replace(/^@\w+\//, ''), 'package.json');
79
+ if (existsSync(workspacePath)) {
80
+ return loadExportsFromPath(workspacePath, packageName, cache);
81
+ }
82
+ cache.set(packageName, null);
83
+ return null;
84
+ }
85
+ return loadExportsFromPath(pkgJsonPath, packageName, cache);
86
+ }
87
+ function loadExportsFromPath(pkgJsonPath, packageName, cache) {
88
+ try {
89
+ const pkg = JSON.parse(readFileSync(pkgJsonPath, 'utf-8'));
90
+ const exportsField = pkg['exports'];
91
+ if (!exportsField || typeof exportsField !== 'object') {
92
+ cache.set(packageName, null);
93
+ return null;
94
+ }
95
+ cache.set(packageName, exportsField);
96
+ return exportsField;
97
+ }
98
+ catch {
99
+ cache.set(packageName, null);
100
+ return null;
101
+ }
102
+ }
103
+ /**
104
+ * Check if a subpath is covered by an exports map.
105
+ * Handles both exact matches and wildcard patterns.
106
+ */
107
+ function isSubpathExported(subpath, exportsMap) {
108
+ // Direct match
109
+ if (subpath in exportsMap)
110
+ return true;
111
+ // Wildcard pattern matching (e.g. "./*" or "./lib/*")
112
+ for (const key of Object.keys(exportsMap)) {
113
+ if (key.includes('*')) {
114
+ const pattern = key.replace('*', '(.+)');
115
+ if (new RegExp(`^${pattern}$`).test(subpath)) {
116
+ return true;
117
+ }
118
+ }
119
+ }
120
+ // Nested condition maps (e.g. exports: { ".": { import: "...", require: "..." } })
121
+ // If the top-level key doesn't start with '.', it's a condition map for "."
122
+ const hasConditionKeys = Object.keys(exportsMap).some((k) => !k.startsWith('.') && k !== 'default');
123
+ if (hasConditionKeys && subpath === '.') {
124
+ return true;
125
+ }
126
+ return false;
127
+ }
128
+ function isAnalyzableFile(filePath) {
129
+ return /\.(?:ts|tsx|js|jsx|mts|mjs)$/.test(filePath);
130
+ }
131
+ //# sourceMappingURL=exports-map-missing.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"exports-map-missing.js","sourceRoot":"","sources":["../../../src/review-intelligence/detectors/exports-map-missing.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import type { InvariantDetector } from '../types.js';
2
+ /**
3
+ * INVARIANT — fixture_keyword_drift
4
+ *
5
+ * Detect test expectations that rely on specific string/keyword values
6
+ * that may have drifted from the actual fixture data. Common in search
7
+ * tests where the expected keyword must exist in the test fixtures.
8
+ *
9
+ * Severity: P2 (can cause flaky tests)
10
+ */
11
+ export declare const fixtureKeywordDriftDetector: InvariantDetector;
12
+ //# sourceMappingURL=fixture-keyword-drift.d.ts.map