autodocs-engine 0.9.0 → 0.9.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (155) hide show
  1. package/dist/analysis-builder.d.ts +2 -2
  2. package/dist/analysis-builder.js +8 -10
  3. package/dist/analysis-builder.js.map +1 -1
  4. package/dist/anti-pattern-detector.d.ts +1 -1
  5. package/dist/architecture-detector.d.ts +2 -2
  6. package/dist/architecture-detector.js +9 -18
  7. package/dist/architecture-detector.js.map +1 -1
  8. package/dist/ast-parser.js +22 -49
  9. package/dist/ast-parser.js.map +1 -1
  10. package/dist/benchmark/code-generator.d.ts +1 -1
  11. package/dist/benchmark/code-generator.js +14 -1
  12. package/dist/benchmark/code-generator.js.map +1 -1
  13. package/dist/benchmark/pr-miner.js +20 -15
  14. package/dist/benchmark/pr-miner.js.map +1 -1
  15. package/dist/benchmark/pr-runner.js +21 -17
  16. package/dist/benchmark/pr-runner.js.map +1 -1
  17. package/dist/benchmark/pr-scorer.d.ts +1 -1
  18. package/dist/benchmark/pr-scorer.js +6 -8
  19. package/dist/benchmark/pr-scorer.js.map +1 -1
  20. package/dist/benchmark/pr-task-gen.js +4 -4
  21. package/dist/benchmark/pr-task-gen.js.map +1 -1
  22. package/dist/benchmark/report.js +13 -10
  23. package/dist/benchmark/report.js.map +1 -1
  24. package/dist/benchmark/runner.js +18 -22
  25. package/dist/benchmark/runner.js.map +1 -1
  26. package/dist/benchmark/scorer.js +66 -52
  27. package/dist/benchmark/scorer.js.map +1 -1
  28. package/dist/benchmark/shuffler.js +1 -1
  29. package/dist/benchmark/shuffler.js.map +1 -1
  30. package/dist/benchmark/statistics.js +8 -7
  31. package/dist/benchmark/statistics.js.map +1 -1
  32. package/dist/benchmark/task-generator.d.ts +1 -1
  33. package/dist/benchmark/task-generator.js +87 -46
  34. package/dist/benchmark/task-generator.js.map +1 -1
  35. package/dist/benchmark/types.d.ts +1 -1
  36. package/dist/bin/autodocs-engine.js +10 -10
  37. package/dist/bin/autodocs-engine.js.map +1 -1
  38. package/dist/bin/benchmark.js +12 -13
  39. package/dist/bin/benchmark.js.map +1 -1
  40. package/dist/bin/check.js +4 -5
  41. package/dist/bin/check.js.map +1 -1
  42. package/dist/bin/init.js +7 -4
  43. package/dist/bin/init.js.map +1 -1
  44. package/dist/bin/serve.js +6 -4
  45. package/dist/bin/serve.js.map +1 -1
  46. package/dist/budget-validator.js.map +1 -1
  47. package/dist/command-extractor.d.ts +2 -2
  48. package/dist/command-extractor.js +25 -19
  49. package/dist/command-extractor.js.map +1 -1
  50. package/dist/config-analyzer.js +28 -22
  51. package/dist/config-analyzer.js.map +1 -1
  52. package/dist/config.js +20 -14
  53. package/dist/config.js.map +1 -1
  54. package/dist/contribution-patterns.d.ts +1 -1
  55. package/dist/contribution-patterns.js +17 -12
  56. package/dist/contribution-patterns.js.map +1 -1
  57. package/dist/convention-extractor.d.ts +1 -1
  58. package/dist/convention-extractor.js +5 -5
  59. package/dist/convention-extractor.js.map +1 -1
  60. package/dist/cross-package.d.ts +1 -1
  61. package/dist/cross-package.js.map +1 -1
  62. package/dist/dependency-analyzer.js +29 -10
  63. package/dist/dependency-analyzer.js.map +1 -1
  64. package/dist/detectors/build-tool.js +1 -1
  65. package/dist/detectors/build-tool.js.map +1 -1
  66. package/dist/detectors/data-fetching.js +9 -4
  67. package/dist/detectors/data-fetching.js.map +1 -1
  68. package/dist/detectors/database.js +8 -8
  69. package/dist/detectors/database.js.map +1 -1
  70. package/dist/detectors/file-naming.js +1 -1
  71. package/dist/detectors/file-naming.js.map +1 -1
  72. package/dist/detectors/hook-patterns.js +2 -4
  73. package/dist/detectors/hook-patterns.js.map +1 -1
  74. package/dist/detectors/import-ordering.js +41 -12
  75. package/dist/detectors/import-ordering.js.map +1 -1
  76. package/dist/detectors/test-framework-ecosystem.js.map +1 -1
  77. package/dist/detectors/test-patterns.js.map +1 -1
  78. package/dist/detectors/web-framework.js +11 -3
  79. package/dist/detectors/web-framework.js.map +1 -1
  80. package/dist/deterministic-formatter.d.ts +1 -1
  81. package/dist/deterministic-formatter.js +116 -64
  82. package/dist/deterministic-formatter.js.map +1 -1
  83. package/dist/diff-analyzer.d.ts +1 -1
  84. package/dist/diff-analyzer.js +1 -1
  85. package/dist/diff-analyzer.js.map +1 -1
  86. package/dist/example-extractor.js +1 -1
  87. package/dist/example-extractor.js.map +1 -1
  88. package/dist/existing-docs.js +8 -18
  89. package/dist/existing-docs.js.map +1 -1
  90. package/dist/file-discovery.d.ts +1 -1
  91. package/dist/file-discovery.js +6 -8
  92. package/dist/file-discovery.js.map +1 -1
  93. package/dist/git-history.d.ts +2 -2
  94. package/dist/git-history.js +15 -21
  95. package/dist/git-history.js.map +1 -1
  96. package/dist/impact-classifier.d.ts +1 -1
  97. package/dist/impact-classifier.js +2 -7
  98. package/dist/impact-classifier.js.map +1 -1
  99. package/dist/import-chain.d.ts +1 -1
  100. package/dist/import-chain.js +2 -4
  101. package/dist/import-chain.js.map +1 -1
  102. package/dist/index.d.ts +6 -6
  103. package/dist/index.js +5 -5
  104. package/dist/index.js.map +1 -1
  105. package/dist/inferability.js +80 -30
  106. package/dist/inferability.js.map +1 -1
  107. package/dist/llm/adapter.d.ts +1 -1
  108. package/dist/llm/adapter.js +3 -3
  109. package/dist/llm/adapter.js.map +1 -1
  110. package/dist/llm/client.js +1 -1
  111. package/dist/llm/client.js.map +1 -1
  112. package/dist/llm/hierarchical.d.ts +1 -1
  113. package/dist/llm/hierarchical.js +8 -8
  114. package/dist/llm/hierarchical.js.map +1 -1
  115. package/dist/llm/serializer.d.ts +1 -1
  116. package/dist/llm/serializer.js +9 -3
  117. package/dist/llm/serializer.js.map +1 -1
  118. package/dist/llm/template-selector.js +1 -1
  119. package/dist/llm/template-selector.js.map +1 -1
  120. package/dist/llm-adapter.d.ts +1 -1
  121. package/dist/llm-adapter.js +1 -1
  122. package/dist/llm-adapter.js.map +1 -1
  123. package/dist/mcp/cache.js +5 -3
  124. package/dist/mcp/cache.js.map +1 -1
  125. package/dist/mcp/errors.js +1 -1
  126. package/dist/mcp/errors.js.map +1 -1
  127. package/dist/mcp/queries.d.ts +2 -2
  128. package/dist/mcp/queries.js +52 -57
  129. package/dist/mcp/queries.js.map +1 -1
  130. package/dist/mcp/server.js +32 -23
  131. package/dist/mcp/server.js.map +1 -1
  132. package/dist/mcp/tools.js +60 -23
  133. package/dist/mcp/tools.js.map +1 -1
  134. package/dist/mermaid-generator.js +16 -8
  135. package/dist/mermaid-generator.js.map +1 -1
  136. package/dist/meta-tool-detector.js +2 -2
  137. package/dist/meta-tool-detector.js.map +1 -1
  138. package/dist/output-validator.d.ts +1 -1
  139. package/dist/output-validator.js +9 -5
  140. package/dist/output-validator.js.map +1 -1
  141. package/dist/pattern-fingerprinter.js +22 -20
  142. package/dist/pattern-fingerprinter.js.map +1 -1
  143. package/dist/pipeline.js +33 -27
  144. package/dist/pipeline.js.map +1 -1
  145. package/dist/plugin-loader.js +2 -2
  146. package/dist/plugin-loader.js.map +1 -1
  147. package/dist/role-inferrer.js +72 -34
  148. package/dist/role-inferrer.js.map +1 -1
  149. package/dist/symbol-graph.js +13 -17
  150. package/dist/symbol-graph.js.map +1 -1
  151. package/dist/types.js.map +1 -1
  152. package/dist/workflow-rules.d.ts +1 -1
  153. package/dist/workflow-rules.js +6 -6
  154. package/dist/workflow-rules.js.map +1 -1
  155. package/package.json +14 -2
@@ -1 +1 @@
1
- {"version":3,"file":"file-naming.js","sourceRoot":"","sources":["../../src/detectors/file-naming.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"file-naming.js","sourceRoot":"","sources":["../../src/detectors/file-naming.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { basename } from "node:path";
2
- import { sourceParsedFiles, buildConfidence } from "../convention-extractor.js";
2
+ import { buildConfidence, sourceParsedFiles } from "../convention-extractor.js";
3
3
  const REACT_MODULES = new Set(["react", "react-dom", "preact", "preact/hooks", "preact/compat"]);
4
4
  export const hookPatternDetector = (files, tiers, _warnings) => {
5
5
  const conventions = [];
@@ -58,9 +58,7 @@ export const hookPatternDetector = (files, tiers, _warnings) => {
58
58
  let coLocated = 0;
59
59
  for (const hf of hookFiles) {
60
60
  const base = hf.relativePath.replace(/\.[^.]+$/, "");
61
- const testExists = allFiles.has(`${base}.test.ts`) ||
62
- allFiles.has(`${base}.test.tsx`) ||
63
- allFiles.has(`${base}.spec.ts`);
61
+ const testExists = allFiles.has(`${base}.test.ts`) || allFiles.has(`${base}.test.tsx`) || allFiles.has(`${base}.spec.ts`);
64
62
  if (testExists)
65
63
  coLocated++;
66
64
  }
@@ -1 +1 @@
1
- {"version":3,"file":"hook-patterns.js","sourceRoot":"","sources":["../../src/detectors/hook-patterns.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"hook-patterns.js","sourceRoot":"","sources":["../../src/detectors/hook-patterns.ts"],"names":[],"mappings":"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"}
@@ -1,11 +1,42 @@
1
- import { sourceParsedFiles, buildConfidence } from "../convention-extractor.js";
1
+ import { buildConfidence, sourceParsedFiles } from "../convention-extractor.js";
2
2
  // Node.js built-in modules (with and without node: prefix)
3
3
  const NODE_BUILTINS = new Set([
4
- "assert", "buffer", "child_process", "cluster", "console", "constants",
5
- "crypto", "dgram", "dns", "domain", "events", "fs", "http", "https",
6
- "module", "net", "os", "path", "perf_hooks", "process", "punycode",
7
- "querystring", "readline", "repl", "stream", "string_decoder", "sys",
8
- "timers", "tls", "tty", "url", "util", "v8", "vm", "worker_threads", "zlib",
4
+ "assert",
5
+ "buffer",
6
+ "child_process",
7
+ "cluster",
8
+ "console",
9
+ "constants",
10
+ "crypto",
11
+ "dgram",
12
+ "dns",
13
+ "domain",
14
+ "events",
15
+ "fs",
16
+ "http",
17
+ "https",
18
+ "module",
19
+ "net",
20
+ "os",
21
+ "path",
22
+ "perf_hooks",
23
+ "process",
24
+ "punycode",
25
+ "querystring",
26
+ "readline",
27
+ "repl",
28
+ "stream",
29
+ "string_decoder",
30
+ "sys",
31
+ "timers",
32
+ "tls",
33
+ "tty",
34
+ "url",
35
+ "util",
36
+ "v8",
37
+ "vm",
38
+ "worker_threads",
39
+ "zlib",
9
40
  ]);
10
41
  function classifyImport(specifier) {
11
42
  if (specifier.startsWith("node:"))
@@ -24,16 +55,14 @@ export const importOrderingDetector = (files, tiers, _warnings) => {
24
55
  const conventions = [];
25
56
  const sourceFiles = sourceParsedFiles(files, tiers);
26
57
  // Only analyze files with ≥3 imports (need enough to detect ordering)
27
- const filesWithImports = sourceFiles.filter(f => f.imports.filter(i => !i.isDynamic).length >= 3);
58
+ const filesWithImports = sourceFiles.filter((f) => f.imports.filter((i) => !i.isDynamic).length >= 3);
28
59
  if (filesWithImports.length < 5)
29
60
  return conventions;
30
61
  let builtinFirstCount = 0;
31
62
  let externalBeforeLocalCount = 0;
32
63
  let totalWithMixedGroups = 0;
33
64
  for (const file of filesWithImports) {
34
- const groups = file.imports
35
- .filter(i => !i.isDynamic)
36
- .map(i => classifyImport(i.moduleSpecifier));
65
+ const groups = file.imports.filter((i) => !i.isDynamic).map((i) => classifyImport(i.moduleSpecifier));
37
66
  // Skip files with only one import group
38
67
  const uniqueGroups = new Set(groups);
39
68
  if (uniqueGroups.size < 2)
@@ -63,7 +92,7 @@ export const importOrderingDetector = (files, tiers, _warnings) => {
63
92
  name: "Import ordering: external before local",
64
93
  description: "External/package imports appear before local relative imports",
65
94
  confidence: buildConfidence(externalBeforeLocalCount, totalWithMixedGroups),
66
- examples: ["import { x } from \"pkg\"; // before", "import { y } from \"./local\"; // after"],
95
+ examples: ['import { x } from "pkg"; // before', 'import { y } from "./local"; // after'],
67
96
  });
68
97
  }
69
98
  // Report: builtin-first pattern (subset of above)
@@ -74,7 +103,7 @@ export const importOrderingDetector = (files, tiers, _warnings) => {
74
103
  name: "Import ordering: Node builtins first",
75
104
  description: "Node.js built-in imports (node:fs, node:path) appear before all other imports",
76
105
  confidence: buildConfidence(builtinFirstCount, totalWithMixedGroups),
77
- examples: ["import { resolve } from \"node:path\"; // first", "import { z } from \"zod\"; // after"],
106
+ examples: ['import { resolve } from "node:path"; // first', 'import { z } from "zod"; // after'],
78
107
  });
79
108
  }
80
109
  return conventions;
@@ -1 +1 @@
1
- {"version":3,"file":"import-ordering.js","sourceRoot":"","sources":["../../src/detectors/import-ordering.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"import-ordering.js","sourceRoot":"","sources":["../../src/detectors/import-ordering.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"test-framework-ecosystem.js","sourceRoot":"","sources":["../../src/detectors/test-framework-ecosystem.ts"],"names":[],"mappings":"AAAA,sFAAsF;AACtF,qFAAqF;AACrF,wEAAwE;AAGxE,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAE7D,MAAM,qBAAqB,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,YAAY,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;AAEtF,MAAM,CAAC,MAAM,8BAA8B,GAAuB,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,EAAE;IACtG,IAAI,CAAC,OAAO,EAAE,YAAY;QAAE,OAAO,EAAE,CAAC;IAEtC,MAAM,WAAW,GAAiB,EAAE,CAAC;IACrC,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;IACpD,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,WAAW,CAAC;IAE/C,MAAM,EAAE,GAAG,OAAO,CAAC,YAAY,CAAC,aAAa,CAAC;IAC9C,MAAM,OAAO,GAAG,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC;IAC7C,MAAM,aAAa,GAAG,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,KAAK,CAAC,CAAC;IAE7D,4BAA4B;IAC5B,IAAI,aAAa,GAAG,SAAS,CAAC;IAC9B,IAAI,eAAe,GAAG,EAAE,CAAC;IAEzB,IAAI,EAAE,EAAE,CAAC;QACP,MAAM,IAAI,GAAG,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;QACnC,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;YACtB,aAAa,GAAG,QAAQ,CAAC;YACzB,eAAe,GAAG,UAAU,EAAE,CAAC,OAAO,EAAE,CAAC;QAC3C,CAAC;aAAM,IAAI,IAAI,KAAK,MAAM,IAAI,IAAI,KAAK,YAAY,EAAE,CAAC;YACpD,aAAa,GAAG,MAAM,CAAC;YACvB,eAAe,GAAG,QAAQ,EAAE,CAAC,OAAO,EAAE,CAAC;QACzC,CAAC;aAAM,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;YAC5B,aAAa,GAAG,OAAO,CAAC;YACxB,eAAe,GAAG,SAAS,EAAE,CAAC,OAAO,EAAE,CAAC;QAC1C,CAAC;aAAM,IAAI,IAAI,KAAK,KAAK,EAAE,CAAC;YAC1B,aAAa,GAAG,KAAK,CAAC;YACtB,eAAe,GAAG,OAAO,EAAE,CAAC,OAAO,EAAE,CAAC;QACxC,CAAC;IACH,CAAC;IAED,yEAAyE;IACzE,IAAI,aAAa,KAAK,SAAS,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;QACvD,KAAK,MAAM,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC;YACvD,IAAI,qBAAqB,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC5C,MAAM,OAAO,GAAG,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,eAAe,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC;gBACjF,MAAM,IAAI,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;gBACnC,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;oBACtB,aAAa,GAAG,QAAQ,CAAC;oBACzB,eAAe,GAAG,UAAU,OAAO,uBAAuB,CAAC;gBAC7D,CAAC;qBAAM,IAAI,IAAI,KAAK,MAAM,IAAI,IAAI,KAAK,YAAY,EAAE,CAAC;oBACpD,aAAa,GAAG,MAAM,CAAC;oBACvB,eAAe,GAAG,QAAQ,OAAO,uBAAuB,CAAC;gBAC3D,CAAC;qBAAM,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;oBAC5B,aAAa,GAAG,OAAO,CAAC;oBACxB,eAAe,GAAG,SAAS,OAAO,uBAAuB,CAAC;gBAC5D,CAAC;qBAAM,IAAI,IAAI,KAAK,KAAK,EAAE,CAAC;oBAC1B,aAAa,GAAG,KAAK,CAAC;oBACtB,eAAe,GAAG,OAAO,OAAO,uBAAuB,CAAC;gBAC1D,CAAC;gBACD,IAAI,aAAa,KAAK,SAAS;oBAAE,MAAM;YACzC,CAAC;QACH,CAAC;IACH,CAAC;IAED,iFAAiF;IACjF,IAAI,aAAa,KAAK,SAAS,IAAI,aAAa,EAAE,CAAC;QACjD,2CAA2C;QAC3C,MAAM,YAAY,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAC1C,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,eAAe,KAAK,UAAU,CAAC,CACxD,CAAC;QACF,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC5B,aAAa,GAAG,UAAU,CAAC;YAC3B,eAAe,GAAG,0BAA0B,CAAC;QAC/C,CAAC;aAAM,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAChC,yEAAyE;YACzE,wEAAwE;YACxE,aAAa,GAAG,qBAAqB,CAAC;YACtC,eAAe,GAAG,+DAA+D,CAAC;QACpF,CAAC;IACH,CAAC;IAED,uCAAuC;IACvC,MAAM,IAAI,GAAG,OAAO,CAAC,YAAY,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;IACvE,MAAM,aAAa,GAAG,IAAI,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAC;IACxD,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;IAE5C,IAAI,aAAa,KAAK,SAAS,EAAE,CAAC;QAChC,WAAW,CAAC,IAAI,CAAC;YACf,QAAQ,EAAE,SAAS;YACnB,IAAI,EAAE,GAAG,aAAa,6BAA6B;YACnD,WAAW,EAAE,aAAa,eAAe,GAAG,aAAa,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,EAAE,GAAG,UAAU,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,EAAE,EAAE;YAC/H,UAAU,EAAE,eAAe,CAAC,SAAS,CAAC,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC;YAC/D,QAAQ,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,sBAAsB,CAAC;SACtD,CAAC,CAAC;IACL,CAAC;IAED,OAAO,WAAW,CAAC;AACrB,CAAC,CAAC"}
1
+ {"version":3,"file":"test-framework-ecosystem.js","sourceRoot":"","sources":["../../src/detectors/test-framework-ecosystem.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"test-patterns.js","sourceRoot":"","sources":["../../src/detectors/test-patterns.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"test-patterns.js","sourceRoot":"","sources":["../../src/detectors/test-patterns.ts"],"names":[],"mappings":"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"}
@@ -4,9 +4,17 @@ import { buildConfidence } from "../convention-extractor.js";
4
4
  const FRAMEWORK_MAP = {
5
5
  express: { name: "Express", middleware: "app.use() middleware chain", router: "express.Router()" },
6
6
  fastify: { name: "Fastify", middleware: "plugin system with decorators", router: "route shorthand methods" },
7
- hono: { name: "Hono", middleware: "app.use() with Context", router: "tree-based routing with multiple router implementations" },
7
+ hono: {
8
+ name: "Hono",
9
+ middleware: "app.use() with Context",
10
+ router: "tree-based routing with multiple router implementations",
11
+ },
8
12
  koa: { name: "Koa", middleware: "async middleware cascade", router: "@koa/router or koa-router" },
9
- "@nestjs/core": { name: "NestJS", middleware: "decorator-based modules", router: "controller decorators (@Get, @Post)" },
13
+ "@nestjs/core": {
14
+ name: "NestJS",
15
+ middleware: "decorator-based modules",
16
+ router: "controller decorators (@Get, @Post)",
17
+ },
10
18
  "@hapi/hapi": { name: "Hapi", middleware: "server.ext() extension points", router: "server.route() configuration" },
11
19
  };
12
20
  export const webFrameworkDetector = (files, _tiers, _warnings, context) => {
@@ -33,7 +41,7 @@ export const webFrameworkDetector = (files, _tiers, _warnings, context) => {
33
41
  for (const [pkg, framework] of Object.entries(FRAMEWORK_MAP)) {
34
42
  if (detected.has(framework.name))
35
43
  continue;
36
- const importCount = files.filter((f) => f.imports.some((i) => !i.isTypeOnly && (i.moduleSpecifier === pkg || i.moduleSpecifier.startsWith(pkg + "/")))).length;
44
+ const importCount = files.filter((f) => f.imports.some((i) => !i.isTypeOnly && (i.moduleSpecifier === pkg || i.moduleSpecifier.startsWith(`${pkg}/`)))).length;
37
45
  if (importCount > 0) {
38
46
  detected.add(framework.name);
39
47
  conventions.push({
@@ -1 +1 @@
1
- {"version":3,"file":"web-framework.js","sourceRoot":"","sources":["../../src/detectors/web-framework.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"web-framework.js","sourceRoot":"","sources":["../../src/detectors/web-framework.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import type { StructuredAnalysis, PackageAnalysis } from "./types.js";
1
+ import type { PackageAnalysis, StructuredAnalysis } from "./types.js";
2
2
  export interface DeterministicOutput {
3
3
  title: string;
4
4
  summary: string;
@@ -1,36 +1,92 @@
1
1
  // src/deterministic-formatter.ts — Generate 13 AGENTS.md sections deterministically from analysis data
2
2
  // No LLM call — pure data formatting. The LLM is used only for architecture + domain synthesis.
3
- import { ENGINE_VERSION } from "./types.js";
3
+ import { complexityLabel, computeImpactRadius, impactLabel } from "./impact-radius.js";
4
+ import { computeInferabilityScore } from "./inferability.js";
4
5
  import { sanitize, stripConventionStats } from "./llm/serializer.js";
5
6
  import { PACKAGE_TO_FAMILY } from "./meta-tool-detector.js";
6
- import { computeImpactRadius, impactLabel, complexityLabel } from "./impact-radius.js";
7
- import { computeInferabilityScore } from "./inferability.js";
7
+ import { ENGINE_VERSION } from "./types.js";
8
8
  // ─── Directory Inferability ──────────────────────────────────────────────────
9
9
  // Directories with these names are "obvious" — AI can infer their purpose
10
10
  // from the name alone. Non-obvious directories benefit from AGENTS.md listing.
11
11
  const OBVIOUS_DIR_NAMES = new Set([
12
- "src", "lib", "dist", "build", "out", "coverage",
13
- "components", "component", "utils", "util", "utilities", "helpers", "helper",
14
- "types", "typings", "interfaces", "models", "model",
15
- "hooks", "hook",
16
- "styles", "css", "assets", "images", "icons", "fonts",
17
- "public", "static",
18
- "pages", "page", "views", "view", "screens",
19
- "app", "apps",
20
- "api", "apis", "routes", "route", "controllers", "controller",
21
- "config", "configs", "configuration", "settings",
22
- "constants", "const",
23
- "test", "tests", "__tests__", "spec", "specs", "__test__",
24
- "middleware", "middlewares",
25
- "services", "service",
26
- "store", "stores", "state",
27
- "context", "contexts", "providers",
28
- "actions", "reducers", "selectors",
29
- "layouts", "layout",
30
- "features", "modules",
31
- "common", "shared", "core",
32
- "server", "client",
33
- "bin", "cli", "cmd",
12
+ "src",
13
+ "lib",
14
+ "dist",
15
+ "build",
16
+ "out",
17
+ "coverage",
18
+ "components",
19
+ "component",
20
+ "utils",
21
+ "util",
22
+ "utilities",
23
+ "helpers",
24
+ "helper",
25
+ "types",
26
+ "typings",
27
+ "interfaces",
28
+ "models",
29
+ "model",
30
+ "hooks",
31
+ "hook",
32
+ "styles",
33
+ "css",
34
+ "assets",
35
+ "images",
36
+ "icons",
37
+ "fonts",
38
+ "public",
39
+ "static",
40
+ "pages",
41
+ "page",
42
+ "views",
43
+ "view",
44
+ "screens",
45
+ "app",
46
+ "apps",
47
+ "api",
48
+ "apis",
49
+ "routes",
50
+ "route",
51
+ "controllers",
52
+ "controller",
53
+ "config",
54
+ "configs",
55
+ "configuration",
56
+ "settings",
57
+ "constants",
58
+ "const",
59
+ "test",
60
+ "tests",
61
+ "__tests__",
62
+ "spec",
63
+ "specs",
64
+ "__test__",
65
+ "middleware",
66
+ "middlewares",
67
+ "services",
68
+ "service",
69
+ "store",
70
+ "stores",
71
+ "state",
72
+ "context",
73
+ "contexts",
74
+ "providers",
75
+ "actions",
76
+ "reducers",
77
+ "selectors",
78
+ "layouts",
79
+ "layout",
80
+ "features",
81
+ "modules",
82
+ "common",
83
+ "shared",
84
+ "core",
85
+ "server",
86
+ "client",
87
+ "bin",
88
+ "cli",
89
+ "cmd",
34
90
  ]);
35
91
  /**
36
92
  * Check if a directory name is "obvious" — the AI can infer its purpose
@@ -121,7 +177,7 @@ export function assembleFinalOutput(deterministic, architectureSection, domainSe
121
177
  if (deterministic.supportedFrameworks)
122
178
  sections.push("", deterministic.supportedFrameworks);
123
179
  sections.push("", deterministic.teamKnowledge);
124
- return sections.join("\n") + "\n";
180
+ return `${sections.join("\n")}\n`;
125
181
  }
126
182
  // ─── Section Formatters ──────────────────────────────────────────────────────
127
183
  function formatTitle(analysis) {
@@ -283,12 +339,7 @@ function formatCommands(analysis) {
283
339
  function formatPackageGuide(analysis) {
284
340
  if (analysis.packages.length <= 1)
285
341
  return "";
286
- const lines = [
287
- "## Package Guide",
288
- "",
289
- "| Package | Purpose | When to Use |",
290
- "|---------|---------|-------------|",
291
- ];
342
+ const lines = ["## Package Guide", "", "| Package | Purpose | When to Use |", "|---------|---------|-------------|"];
292
343
  for (const pkg of analysis.packages) {
293
344
  const purpose = sanitize(pkg.role?.summary ?? pkg.description ?? pkg.architecture.packageType, 100);
294
345
  const whenToUse = sanitize(pkg.role?.whenToUse ?? "", 100);
@@ -351,14 +402,25 @@ function formatPublicAPI(analysis) {
351
402
  byKind.set(kind, list);
352
403
  }
353
404
  // Order: hooks, functions, components, types, interfaces, classes, enums, consts
354
- const kindOrder = ["hook", "function", "component", "type", "interface", "class", "enum", "const", "namespace", "unknown"];
405
+ const kindOrder = [
406
+ "hook",
407
+ "function",
408
+ "component",
409
+ "type",
410
+ "interface",
411
+ "class",
412
+ "enum",
413
+ "const",
414
+ "namespace",
415
+ "unknown",
416
+ ];
355
417
  const lines = ["## Public API"];
356
418
  const isMulti = analysis.packages.length > 1;
357
419
  for (const kind of kindOrder) {
358
420
  const group = byKind.get(kind);
359
421
  if (!group || group.length === 0)
360
422
  continue;
361
- const label = kind.charAt(0).toUpperCase() + kind.slice(1) + "s";
423
+ const label = `${kind.charAt(0).toUpperCase() + kind.slice(1)}s`;
362
424
  lines.push("");
363
425
  lines.push(`### ${label}`);
364
426
  lines.push("");
@@ -403,7 +465,7 @@ function formatDependencies(analysis) {
403
465
  }
404
466
  }
405
467
  const testFw = pkg.dependencyInsights?.testFramework?.name;
406
- const coreDeps = pkg.dependencies.external.filter(d => !supportedPkgs.has(d.name) && d.name !== testFw);
468
+ const coreDeps = pkg.dependencies.external.filter((d) => !supportedPkgs.has(d.name) && d.name !== testFw);
407
469
  if (coreDeps.length > 0) {
408
470
  if (!hasContent && prefix)
409
471
  lines.push("", prefix.trim());
@@ -417,7 +479,7 @@ function formatDependencies(analysis) {
417
479
  }
418
480
  else {
419
481
  const testFw = pkg.dependencyInsights?.testFramework?.name;
420
- const topExternal = pkg.dependencies.external.filter(d => d.name !== testFw).slice(0, 10);
482
+ const topExternal = pkg.dependencies.external.filter((d) => d.name !== testFw).slice(0, 10);
421
483
  if (topExternal.length > 0) {
422
484
  if (!hasContent && prefix)
423
485
  lines.push("", prefix.trim());
@@ -445,15 +507,13 @@ function formatConventions(analysis) {
445
507
  for (const conv of pkg.conventions) {
446
508
  // For meta-tools, reclassify ecosystem conventions (except core family)
447
509
  if (pkg.isMetaTool && conv.source && ECOSYSTEM_DETECTORS.has(conv.source)) {
448
- const isCore = coreFamilySet.size > 0 && [...coreFamilySet].some(family => conv.name.toLowerCase().includes(family));
510
+ const isCore = coreFamilySet.size > 0 && [...coreFamilySet].some((family) => conv.name.toLowerCase().includes(family));
449
511
  if (!isCore)
450
512
  continue; // Listed in "Supported Frameworks" section instead
451
513
  }
452
514
  const desc = stripConventionStats(conv.description);
453
515
  if (desc) {
454
- const examples = conv.examples.length > 0
455
- ? ` (e.g., \`${sanitize(conv.examples[0], 60)}\`)`
456
- : "";
516
+ const examples = conv.examples.length > 0 ? ` (e.g., \`${sanitize(conv.examples[0], 60)}\`)` : "";
457
517
  doRules.push(`- **DO**: ${desc}${examples}`);
458
518
  }
459
519
  }
@@ -526,7 +586,7 @@ function formatSupportedFrameworks(analysis) {
526
586
  const { supportedFamilies, coreFamilies } = pkg.metaToolInfo;
527
587
  // Exclude core families from the "supported" list (they're already in conventions)
528
588
  const coreSet = new Set(coreFamilies);
529
- const supported = supportedFamilies.filter(f => !coreSet.has(f));
589
+ const supported = supportedFamilies.filter((f) => !coreSet.has(f));
530
590
  if (supported.length === 0)
531
591
  return "";
532
592
  const lines = [
@@ -604,8 +664,7 @@ function formatTeamKnowledge(analysis) {
604
664
  // Multiple commands suggest ordering concerns
605
665
  const pkg = analysis.packages[0];
606
666
  if (pkg) {
607
- const cmdCount = [pkg.commands.build, pkg.commands.test, pkg.commands.lint, pkg.commands.start]
608
- .filter(Boolean).length;
667
+ const cmdCount = [pkg.commands.build, pkg.commands.test, pkg.commands.lint, pkg.commands.start].filter(Boolean).length;
609
668
  if (cmdCount >= 3) {
610
669
  questions.push("Are there ordering requirements between commands? (e.g., build before test, lint before commit)");
611
670
  }
@@ -643,7 +702,7 @@ export function formatArchitectureFallback(pkg) {
643
702
  // Filter to non-obvious directories only — obvious dirs (src/, lib/, utils/)
644
703
  // are inferable by AI from source code. Listing them creates an anchoring effect
645
704
  // that can HURT performance by blocking exploration of unlisted directories.
646
- const nonObviousDirs = pkg.architecture.directories.filter(dir => !isObviousDirectory(dir.path));
705
+ const nonObviousDirs = pkg.architecture.directories.filter((dir) => !isObviousDirectory(dir.path));
647
706
  const obviousCount = pkg.architecture.directories.length - nonObviousDirs.length;
648
707
  if (nonObviousDirs.length > 0) {
649
708
  lines.push("Key directories (non-exhaustive — explore the source tree for additional directories):");
@@ -740,22 +799,17 @@ export function generateMinimalAgentsMd(analysis) {
740
799
  // 3. Workflow rules (conditional)
741
800
  const workflow = formatMinimalWorkflowRules(analysis);
742
801
  // 4. Conventions (conditional: boolean signal gate + high confidence)
743
- const conventions = shouldIncludeMinimalConventions(pkg)
744
- ? formatMinimalConventions(pkg)
745
- : "";
802
+ const conventions = shouldIncludeMinimalConventions(pkg) ? formatMinimalConventions(pkg) : "";
746
803
  // 5. Architecture (conditional: non-obvious dirs)
747
- const architecture = shouldIncludeMinimalArchitecture(pkg)
748
- ? formatMinimalArchitecture(pkg)
749
- : "";
804
+ const architecture = shouldIncludeMinimalArchitecture(pkg) ? formatMinimalArchitecture(pkg) : "";
750
805
  // 6. Package guide (conditional: monorepo 3+ packages)
751
806
  const packages = formatMinimalPackageGuide(analysis);
752
807
  // 7. Example pointer (conditional: has registration pattern)
753
808
  const example = formatExamplePointer(pkg);
754
809
  // Assemble non-empty sections
755
- const optionalSections = [commands, workflow, conventions, architecture, packages, example]
756
- .filter(s => s.length > 0);
810
+ const optionalSections = [commands, workflow, conventions, architecture, packages, example].filter((s) => s.length > 0);
757
811
  // Kill switch: if we have very little non-title content, add standard note
758
- const hasSubstantiveContent = optionalSections.some(s => s.includes("## Workflow") || s.includes("## Conventions") || s.includes("## Key Directories"));
812
+ const hasSubstantiveContent = optionalSections.some((s) => s.includes("## Workflow") || s.includes("## Conventions") || s.includes("## Key Directories"));
759
813
  if (!hasSubstantiveContent) {
760
814
  sections.push("Standard project structure — conventions are inferrable from source code.");
761
815
  }
@@ -765,12 +819,12 @@ export function generateMinimalAgentsMd(analysis) {
765
819
  // ─── Minimal: Boolean Signal Gates ──────────────────────────────────────────
766
820
  function shouldIncludeMinimalConventions(pkg) {
767
821
  const patterns = pkg.contributionPatterns ?? [];
768
- const hasRegistration = patterns.some(p => p.registrationFile);
769
- const hasNonStandardImports = patterns.some(p => (p.commonImports?.length ?? 0) > 0);
822
+ const hasRegistration = patterns.some((p) => p.registrationFile);
823
+ const hasNonStandardImports = patterns.some((p) => (p.commonImports?.length ?? 0) > 0);
770
824
  return hasRegistration || hasNonStandardImports;
771
825
  }
772
826
  function shouldIncludeMinimalArchitecture(pkg) {
773
- return pkg.architecture.directories.some(d => !isObviousDirectory(d.path));
827
+ return pkg.architecture.directories.some((d) => !isObviousDirectory(d.path));
774
828
  }
775
829
  // ─── Minimal: Section Formatters ────────────────────────────────────────────
776
830
  function formatMinimalCommands(analysis) {
@@ -800,7 +854,7 @@ function formatMinimalCommands(analysis) {
800
854
  if (cs.start)
801
855
  cmds.push({ label: "Dev", run: cs.start.run });
802
856
  // Fill remaining slots with non-duplicate "other" commands
803
- const addedRuns = new Set(cmds.map(c => c.run));
857
+ const addedRuns = new Set(cmds.map((c) => c.run));
804
858
  for (const cmd of cs.other) {
805
859
  if (cmds.length >= MAX_MINIMAL_COMMANDS)
806
860
  break;
@@ -813,7 +867,7 @@ function formatMinimalCommands(analysis) {
813
867
  if (capped.length === 0)
814
868
  return "";
815
869
  // Triviality check: if ALL commands are trivial, just note it
816
- const allTrivial = capped.every(c => isCommandTrivial(c.run, pm));
870
+ const allTrivial = capped.every((c) => isCommandTrivial(c.run, pm));
817
871
  if (allTrivial) {
818
872
  return `## Commands\n\nStandard \`${pm}\` scripts — see \`package.json\` for details.`;
819
873
  }
@@ -856,7 +910,7 @@ function formatMinimalConventions(pkg) {
856
910
  const dontRules = [];
857
911
  // Filter to ≥95% confidence, sorted by confidence descending
858
912
  const highConf = pkg.conventions
859
- .filter(c => c.confidence.percentage >= MIN_CONVENTION_CONFIDENCE)
913
+ .filter((c) => c.confidence.percentage >= MIN_CONVENTION_CONFIDENCE)
860
914
  .sort((a, b) => b.confidence.percentage - a.confidence.percentage);
861
915
  for (const conv of highConf) {
862
916
  if (doRules.length >= MAX_MINIMAL_CONVENTIONS)
@@ -864,9 +918,7 @@ function formatMinimalConventions(pkg) {
864
918
  const desc = stripConventionStats(conv.description);
865
919
  if (!desc)
866
920
  continue;
867
- const ex = conv.examples.length > 0
868
- ? ` (e.g., \`${sanitize(conv.examples[0], 40)}\`)`
869
- : "";
921
+ const ex = conv.examples.length > 0 ? ` (e.g., \`${sanitize(conv.examples[0], 40)}\`)` : "";
870
922
  doRules.push(`- **DO**: ${desc}${ex}`);
871
923
  }
872
924
  for (const ap of pkg.antiPatterns) {
@@ -880,7 +932,7 @@ function formatMinimalConventions(pkg) {
880
932
  }
881
933
  function formatMinimalArchitecture(pkg) {
882
934
  const nonObvious = pkg.architecture.directories
883
- .filter(d => !isObviousDirectory(d.path))
935
+ .filter((d) => !isObviousDirectory(d.path))
884
936
  .slice(0, MAX_MINIMAL_DIRECTORIES);
885
937
  if (nonObvious.length === 0)
886
938
  return "";
@@ -906,7 +958,7 @@ function formatMinimalPackageGuide(analysis) {
906
958
  return lines.join("\n");
907
959
  }
908
960
  function formatExamplePointer(pkg) {
909
- const pattern = (pkg.contributionPatterns ?? []).find(p => p.registrationFile);
961
+ const pattern = (pkg.contributionPatterns ?? []).find((p) => p.registrationFile);
910
962
  if (!pattern)
911
963
  return "";
912
964
  return `> **Example**: See \`${pattern.exampleFile}\` for the canonical pattern (register in \`${pattern.registrationFile}\`).`;