autodocs-engine 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (240) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +185 -0
  3. package/dist/analysis-builder.d.ts +13 -0
  4. package/dist/analysis-builder.js +268 -0
  5. package/dist/analysis-builder.js.map +1 -0
  6. package/dist/anti-pattern-detector.d.ts +9 -0
  7. package/dist/anti-pattern-detector.js +58 -0
  8. package/dist/anti-pattern-detector.js.map +1 -0
  9. package/dist/architecture-detector.d.ts +7 -0
  10. package/dist/architecture-detector.js +212 -0
  11. package/dist/architecture-detector.js.map +1 -0
  12. package/dist/ast-parser.d.ts +5 -0
  13. package/dist/ast-parser.js +635 -0
  14. package/dist/ast-parser.js.map +1 -0
  15. package/dist/benchmark/code-generator.d.ts +20 -0
  16. package/dist/benchmark/code-generator.js +206 -0
  17. package/dist/benchmark/code-generator.js.map +1 -0
  18. package/dist/benchmark/pr-miner.d.ts +61 -0
  19. package/dist/benchmark/pr-miner.js +304 -0
  20. package/dist/benchmark/pr-miner.js.map +1 -0
  21. package/dist/benchmark/pr-runner.d.ts +58 -0
  22. package/dist/benchmark/pr-runner.js +346 -0
  23. package/dist/benchmark/pr-runner.js.map +1 -0
  24. package/dist/benchmark/pr-scorer.d.ts +48 -0
  25. package/dist/benchmark/pr-scorer.js +222 -0
  26. package/dist/benchmark/pr-scorer.js.map +1 -0
  27. package/dist/benchmark/pr-task-gen.d.ts +16 -0
  28. package/dist/benchmark/pr-task-gen.js +129 -0
  29. package/dist/benchmark/pr-task-gen.js.map +1 -0
  30. package/dist/benchmark/report.d.ts +9 -0
  31. package/dist/benchmark/report.js +131 -0
  32. package/dist/benchmark/report.js.map +1 -0
  33. package/dist/benchmark/runner.d.ts +6 -0
  34. package/dist/benchmark/runner.js +183 -0
  35. package/dist/benchmark/runner.js.map +1 -0
  36. package/dist/benchmark/scorer.d.ts +6 -0
  37. package/dist/benchmark/scorer.js +549 -0
  38. package/dist/benchmark/scorer.js.map +1 -0
  39. package/dist/benchmark/shuffler.d.ts +5 -0
  40. package/dist/benchmark/shuffler.js +70 -0
  41. package/dist/benchmark/shuffler.js.map +1 -0
  42. package/dist/benchmark/statistics.d.ts +36 -0
  43. package/dist/benchmark/statistics.js +159 -0
  44. package/dist/benchmark/statistics.js.map +1 -0
  45. package/dist/benchmark/task-generator.d.ts +20 -0
  46. package/dist/benchmark/task-generator.js +388 -0
  47. package/dist/benchmark/task-generator.js.map +1 -0
  48. package/dist/benchmark/types.d.ts +111 -0
  49. package/dist/benchmark/types.js +3 -0
  50. package/dist/benchmark/types.js.map +1 -0
  51. package/dist/bin/autodocs-engine.d.ts +2 -0
  52. package/dist/bin/autodocs-engine.js +296 -0
  53. package/dist/bin/autodocs-engine.js.map +1 -0
  54. package/dist/bin/benchmark.d.ts +14 -0
  55. package/dist/bin/benchmark.js +172 -0
  56. package/dist/bin/benchmark.js.map +1 -0
  57. package/dist/bin/check.d.ts +13 -0
  58. package/dist/bin/check.js +79 -0
  59. package/dist/bin/check.js.map +1 -0
  60. package/dist/bin/init.d.ts +11 -0
  61. package/dist/bin/init.js +268 -0
  62. package/dist/bin/init.js.map +1 -0
  63. package/dist/bin/serve.d.ts +4 -0
  64. package/dist/bin/serve.js +29 -0
  65. package/dist/bin/serve.js.map +1 -0
  66. package/dist/budget-validator.d.ts +22 -0
  67. package/dist/budget-validator.js +119 -0
  68. package/dist/budget-validator.js.map +1 -0
  69. package/dist/command-extractor.d.ts +10 -0
  70. package/dist/command-extractor.js +276 -0
  71. package/dist/command-extractor.js.map +1 -0
  72. package/dist/config-analyzer.d.ts +5 -0
  73. package/dist/config-analyzer.js +364 -0
  74. package/dist/config-analyzer.js.map +1 -0
  75. package/dist/config.d.ts +33 -0
  76. package/dist/config.js +172 -0
  77. package/dist/config.js.map +1 -0
  78. package/dist/contribution-patterns.d.ts +6 -0
  79. package/dist/contribution-patterns.js +263 -0
  80. package/dist/contribution-patterns.js.map +1 -0
  81. package/dist/convention-extractor.d.ts +17 -0
  82. package/dist/convention-extractor.js +90 -0
  83. package/dist/convention-extractor.js.map +1 -0
  84. package/dist/cross-package.d.ts +5 -0
  85. package/dist/cross-package.js +71 -0
  86. package/dist/cross-package.js.map +1 -0
  87. package/dist/dependency-analyzer.d.ts +5 -0
  88. package/dist/dependency-analyzer.js +233 -0
  89. package/dist/dependency-analyzer.js.map +1 -0
  90. package/dist/detectors/build-tool.d.ts +2 -0
  91. package/dist/detectors/build-tool.js +67 -0
  92. package/dist/detectors/build-tool.js.map +1 -0
  93. package/dist/detectors/component-patterns.d.ts +2 -0
  94. package/dist/detectors/component-patterns.js +49 -0
  95. package/dist/detectors/component-patterns.js.map +1 -0
  96. package/dist/detectors/data-fetching.d.ts +2 -0
  97. package/dist/detectors/data-fetching.js +127 -0
  98. package/dist/detectors/data-fetching.js.map +1 -0
  99. package/dist/detectors/database.d.ts +2 -0
  100. package/dist/detectors/database.js +54 -0
  101. package/dist/detectors/database.js.map +1 -0
  102. package/dist/detectors/error-handling.d.ts +2 -0
  103. package/dist/detectors/error-handling.js +47 -0
  104. package/dist/detectors/error-handling.js.map +1 -0
  105. package/dist/detectors/export-patterns.d.ts +2 -0
  106. package/dist/detectors/export-patterns.js +64 -0
  107. package/dist/detectors/export-patterns.js.map +1 -0
  108. package/dist/detectors/file-naming.d.ts +2 -0
  109. package/dist/detectors/file-naming.js +74 -0
  110. package/dist/detectors/file-naming.js.map +1 -0
  111. package/dist/detectors/graphql-patterns.d.ts +2 -0
  112. package/dist/detectors/graphql-patterns.js +47 -0
  113. package/dist/detectors/graphql-patterns.js.map +1 -0
  114. package/dist/detectors/hook-patterns.d.ts +2 -0
  115. package/dist/detectors/hook-patterns.js +105 -0
  116. package/dist/detectors/hook-patterns.js.map +1 -0
  117. package/dist/detectors/import-patterns.d.ts +2 -0
  118. package/dist/detectors/import-patterns.js +88 -0
  119. package/dist/detectors/import-patterns.js.map +1 -0
  120. package/dist/detectors/telemetry-patterns.d.ts +2 -0
  121. package/dist/detectors/telemetry-patterns.js +42 -0
  122. package/dist/detectors/telemetry-patterns.js.map +1 -0
  123. package/dist/detectors/test-framework-ecosystem.d.ts +2 -0
  124. package/dist/detectors/test-framework-ecosystem.js +95 -0
  125. package/dist/detectors/test-framework-ecosystem.js.map +1 -0
  126. package/dist/detectors/test-patterns.d.ts +2 -0
  127. package/dist/detectors/test-patterns.js +60 -0
  128. package/dist/detectors/test-patterns.js.map +1 -0
  129. package/dist/detectors/web-framework.d.ts +2 -0
  130. package/dist/detectors/web-framework.js +51 -0
  131. package/dist/detectors/web-framework.js.map +1 -0
  132. package/dist/deterministic-formatter.d.ts +54 -0
  133. package/dist/deterministic-formatter.js +922 -0
  134. package/dist/deterministic-formatter.js.map +1 -0
  135. package/dist/diff-analyzer.d.ts +7 -0
  136. package/dist/diff-analyzer.js +126 -0
  137. package/dist/diff-analyzer.js.map +1 -0
  138. package/dist/example-extractor.d.ts +6 -0
  139. package/dist/example-extractor.js +115 -0
  140. package/dist/example-extractor.js.map +1 -0
  141. package/dist/existing-docs.d.ts +36 -0
  142. package/dist/existing-docs.js +257 -0
  143. package/dist/existing-docs.js.map +1 -0
  144. package/dist/file-discovery.d.ts +6 -0
  145. package/dist/file-discovery.js +154 -0
  146. package/dist/file-discovery.js.map +1 -0
  147. package/dist/git-history.d.ts +41 -0
  148. package/dist/git-history.js +401 -0
  149. package/dist/git-history.js.map +1 -0
  150. package/dist/impact-classifier.d.ts +22 -0
  151. package/dist/impact-classifier.js +87 -0
  152. package/dist/impact-classifier.js.map +1 -0
  153. package/dist/impact-radius.d.ts +23 -0
  154. package/dist/impact-radius.js +130 -0
  155. package/dist/impact-radius.js.map +1 -0
  156. package/dist/import-chain.d.ts +12 -0
  157. package/dist/import-chain.js +93 -0
  158. package/dist/import-chain.js.map +1 -0
  159. package/dist/index.d.ts +40 -0
  160. package/dist/index.js +72 -0
  161. package/dist/index.js.map +1 -0
  162. package/dist/inferability.d.ts +16 -0
  163. package/dist/inferability.js +142 -0
  164. package/dist/inferability.js.map +1 -0
  165. package/dist/llm/adapter.d.ts +33 -0
  166. package/dist/llm/adapter.js +202 -0
  167. package/dist/llm/adapter.js.map +1 -0
  168. package/dist/llm/client.d.ts +5 -0
  169. package/dist/llm/client.js +68 -0
  170. package/dist/llm/client.js.map +1 -0
  171. package/dist/llm/hierarchical.d.ts +23 -0
  172. package/dist/llm/hierarchical.js +126 -0
  173. package/dist/llm/hierarchical.js.map +1 -0
  174. package/dist/llm/serializer.d.ts +19 -0
  175. package/dist/llm/serializer.js +363 -0
  176. package/dist/llm/serializer.js.map +1 -0
  177. package/dist/llm/template-selector.d.ts +7 -0
  178. package/dist/llm/template-selector.js +21 -0
  179. package/dist/llm/template-selector.js.map +1 -0
  180. package/dist/llm-adapter.d.ts +2 -0
  181. package/dist/llm-adapter.js +5 -0
  182. package/dist/llm-adapter.js.map +1 -0
  183. package/dist/mcp/cache.d.ts +30 -0
  184. package/dist/mcp/cache.js +112 -0
  185. package/dist/mcp/cache.js.map +1 -0
  186. package/dist/mcp/errors.d.ts +21 -0
  187. package/dist/mcp/errors.js +27 -0
  188. package/dist/mcp/errors.js.map +1 -0
  189. package/dist/mcp/queries.d.ts +27 -0
  190. package/dist/mcp/queries.js +121 -0
  191. package/dist/mcp/queries.js.map +1 -0
  192. package/dist/mcp/server.d.ts +14 -0
  193. package/dist/mcp/server.js +131 -0
  194. package/dist/mcp/server.js.map +1 -0
  195. package/dist/mcp/tools.d.ts +39 -0
  196. package/dist/mcp/tools.js +249 -0
  197. package/dist/mcp/tools.js.map +1 -0
  198. package/dist/mermaid-generator.d.ts +6 -0
  199. package/dist/mermaid-generator.js +59 -0
  200. package/dist/mermaid-generator.js.map +1 -0
  201. package/dist/meta-tool-detector.d.ts +23 -0
  202. package/dist/meta-tool-detector.js +177 -0
  203. package/dist/meta-tool-detector.js.map +1 -0
  204. package/dist/output-validator.d.ts +6 -0
  205. package/dist/output-validator.js +471 -0
  206. package/dist/output-validator.js.map +1 -0
  207. package/dist/pattern-fingerprinter.d.ts +7 -0
  208. package/dist/pattern-fingerprinter.js +241 -0
  209. package/dist/pattern-fingerprinter.js.map +1 -0
  210. package/dist/pipeline.d.ts +5 -0
  211. package/dist/pipeline.js +374 -0
  212. package/dist/pipeline.js.map +1 -0
  213. package/dist/plugin-loader.d.ts +19 -0
  214. package/dist/plugin-loader.js +124 -0
  215. package/dist/plugin-loader.js.map +1 -0
  216. package/dist/role-inferrer.d.ts +5 -0
  217. package/dist/role-inferrer.js +159 -0
  218. package/dist/role-inferrer.js.map +1 -0
  219. package/dist/symbol-graph.d.ts +11 -0
  220. package/dist/symbol-graph.js +613 -0
  221. package/dist/symbol-graph.js.map +1 -0
  222. package/dist/templates/agents-md.d.ts +20 -0
  223. package/dist/templates/agents-md.js +346 -0
  224. package/dist/templates/agents-md.js.map +1 -0
  225. package/dist/templates/claude-md.d.ts +4 -0
  226. package/dist/templates/claude-md.js +23 -0
  227. package/dist/templates/claude-md.js.map +1 -0
  228. package/dist/templates/cursorrules.d.ts +4 -0
  229. package/dist/templates/cursorrules.js +18 -0
  230. package/dist/templates/cursorrules.js.map +1 -0
  231. package/dist/tier-classifier.d.ts +7 -0
  232. package/dist/tier-classifier.js +32 -0
  233. package/dist/tier-classifier.js.map +1 -0
  234. package/dist/types.d.ts +428 -0
  235. package/dist/types.js +42 -0
  236. package/dist/types.js.map +1 -0
  237. package/dist/workflow-rules.d.ts +18 -0
  238. package/dist/workflow-rules.js +131 -0
  239. package/dist/workflow-rules.js.map +1 -0
  240. package/package.json +62 -0
@@ -0,0 +1,613 @@
1
+ // src/symbol-graph.ts — Module 3: Symbol Graph Builder
2
+ // Errata applied: E-22 (exports field resolution), E-23 (cycle detection),
3
+ // E-24 (star re-export expansion), E-25 (aliased exports),
4
+ // E-9 (barrelFile field), E-20 (.js→.ts mapping), E-21 (path boundary)
5
+ import { existsSync, readFileSync } from "node:fs";
6
+ import { resolve, relative, dirname, join } from "node:path";
7
+ /**
8
+ * Build a package-level symbol graph from parsed files.
9
+ * Resolves barrel re-exports to their source definitions.
10
+ */
11
+ export function buildSymbolGraph(parsedFiles, packageDir, warnings = []) {
12
+ const absPackageDir = resolve(packageDir);
13
+ // Build lookups
14
+ const fileMap = new Map();
15
+ const allExports = new Map();
16
+ const importGraph = new Map();
17
+ for (const pf of parsedFiles) {
18
+ fileMap.set(pf.relativePath, pf);
19
+ allExports.set(pf.relativePath, pf.exports);
20
+ importGraph.set(pf.relativePath, pf.imports);
21
+ }
22
+ // Find barrel file (E-9, E-22)
23
+ const barrelFile = findBarrelFile(absPackageDir, fileMap, warnings);
24
+ if (!barrelFile) {
25
+ // Fix A: Try bin entry files as alternative entry points for CLI packages
26
+ const binExports = extractBinEntryExports(absPackageDir, fileMap, allExports, importGraph, warnings);
27
+ if (binExports.length > 0) {
28
+ const binSourceFiles = new Set();
29
+ for (const exp of binExports) {
30
+ binSourceFiles.add(exp.definedIn);
31
+ }
32
+ return {
33
+ barrelFile: undefined,
34
+ barrelExports: binExports,
35
+ allExports,
36
+ importGraph,
37
+ barrelSourceFiles: binSourceFiles,
38
+ callGraph: buildCallGraph(parsedFiles, absPackageDir, warnings),
39
+ };
40
+ }
41
+ warnings.push({
42
+ level: "info",
43
+ module: "symbol-graph",
44
+ message: "No barrel file found — publicAPI will be empty.",
45
+ });
46
+ return {
47
+ barrelFile: undefined,
48
+ barrelExports: [],
49
+ allExports,
50
+ importGraph,
51
+ barrelSourceFiles: new Set(),
52
+ callGraph: buildCallGraph(parsedFiles, absPackageDir, warnings),
53
+ };
54
+ }
55
+ const barrelParsed = fileMap.get(barrelFile);
56
+ if (!barrelParsed) {
57
+ warnings.push({
58
+ level: "warn",
59
+ module: "symbol-graph",
60
+ message: `Barrel file ${barrelFile} found but not in parsed files.`,
61
+ });
62
+ return {
63
+ barrelFile,
64
+ barrelExports: [],
65
+ allExports,
66
+ importGraph,
67
+ barrelSourceFiles: new Set(),
68
+ callGraph: buildCallGraph(parsedFiles, absPackageDir, warnings),
69
+ };
70
+ }
71
+ // Resolve barrel exports
72
+ const barrelSourceFiles = new Set();
73
+ barrelSourceFiles.add(barrelFile);
74
+ const barrelExports = [];
75
+ for (const exp of barrelParsed.exports) {
76
+ if (exp.name === "*" && exp.isReExport && exp.reExportSource) {
77
+ // E-24: Star re-export expansion
78
+ const targetRelPath = resolveModuleSpecifier(exp.reExportSource, dirname(resolve(absPackageDir, barrelFile)), absPackageDir, warnings);
79
+ if (targetRelPath) {
80
+ barrelSourceFiles.add(targetRelPath);
81
+ expandStarExport(targetRelPath, fileMap, absPackageDir, barrelExports, barrelSourceFiles, warnings, new Set([barrelFile]), exp.isTypeOnly);
82
+ }
83
+ else {
84
+ warnings.push({
85
+ level: "warn",
86
+ module: "symbol-graph",
87
+ message: `Unresolved star re-export from "${exp.reExportSource}" in ${barrelFile}`,
88
+ file: barrelFile,
89
+ });
90
+ }
91
+ }
92
+ else if (exp.isReExport && exp.reExportSource) {
93
+ // Named re-export
94
+ const resolved = resolveReExportChain(exp, barrelFile, fileMap, absPackageDir, barrelSourceFiles, warnings, new Set());
95
+ barrelExports.push(resolved);
96
+ }
97
+ else {
98
+ // Direct export from barrel
99
+ barrelExports.push({ ...exp, definedIn: barrelFile });
100
+ }
101
+ }
102
+ // Fix A: If barrel was found but exports nothing, try bin detection or barrel-as-script fallback
103
+ if (barrelExports.length === 0) {
104
+ // First try bin entry points
105
+ const binExports = extractBinEntryExports(absPackageDir, fileMap, allExports, importGraph, warnings);
106
+ if (binExports.length > 0) {
107
+ for (const exp of binExports) {
108
+ barrelSourceFiles.add(exp.definedIn);
109
+ }
110
+ return {
111
+ barrelFile,
112
+ barrelExports: binExports,
113
+ allExports,
114
+ importGraph,
115
+ barrelSourceFiles,
116
+ callGraph: buildCallGraph(parsedFiles, absPackageDir, warnings),
117
+ };
118
+ }
119
+ // Fallback: barrel is a script (no exports) — extract from its imports one level deep
120
+ const scriptExports = extractScriptEntryExports(barrelFile, fileMap, absPackageDir, warnings);
121
+ if (scriptExports.length > 0) {
122
+ for (const exp of scriptExports) {
123
+ barrelSourceFiles.add(exp.definedIn);
124
+ }
125
+ return {
126
+ barrelFile,
127
+ barrelExports: scriptExports,
128
+ allExports,
129
+ importGraph,
130
+ barrelSourceFiles,
131
+ callGraph: buildCallGraph(parsedFiles, absPackageDir, warnings),
132
+ };
133
+ }
134
+ }
135
+ return {
136
+ barrelFile,
137
+ barrelExports,
138
+ allExports,
139
+ importGraph,
140
+ barrelSourceFiles,
141
+ callGraph: buildCallGraph(parsedFiles, absPackageDir, warnings),
142
+ };
143
+ }
144
+ /**
145
+ * Find the barrel file. Search order per E-22:
146
+ * 1. index.ts at package root
147
+ * 2. index.tsx at package root
148
+ * 3. package.json exports field (E-22)
149
+ * 4. package.json main field
150
+ * 5. package.json module field
151
+ * 6. src/index.ts
152
+ * 7. src/index.tsx
153
+ */
154
+ function findBarrelFile(packageDir, fileMap, warnings) {
155
+ // 1-2: index.ts/tsx at root
156
+ if (fileMap.has("index.ts"))
157
+ return "index.ts";
158
+ if (fileMap.has("index.tsx"))
159
+ return "index.tsx";
160
+ // 3-5: package.json fields
161
+ const pkgJsonPath = join(packageDir, "package.json");
162
+ if (existsSync(pkgJsonPath)) {
163
+ try {
164
+ const pkgJson = JSON.parse(readFileSync(pkgJsonPath, "utf-8"));
165
+ // E-22: exports field resolution
166
+ const exportsEntry = resolveExportsField(pkgJson.exports, packageDir);
167
+ if (exportsEntry) {
168
+ const rel = relative(packageDir, exportsEntry);
169
+ if (fileMap.has(rel))
170
+ return rel;
171
+ }
172
+ // main field
173
+ if (pkgJson.main) {
174
+ const mainRel = resolveToSource(pkgJson.main, packageDir);
175
+ if (mainRel && fileMap.has(mainRel))
176
+ return mainRel;
177
+ }
178
+ // module field
179
+ if (pkgJson.module) {
180
+ const moduleRel = resolveToSource(pkgJson.module, packageDir);
181
+ if (moduleRel && fileMap.has(moduleRel))
182
+ return moduleRel;
183
+ }
184
+ }
185
+ catch {
186
+ // Invalid package.json — skip
187
+ }
188
+ }
189
+ // 6-7: src/index.ts/tsx
190
+ if (fileMap.has("src/index.ts"))
191
+ return "src/index.ts";
192
+ if (fileMap.has("src/index.tsx"))
193
+ return "src/index.tsx";
194
+ return undefined;
195
+ }
196
+ /**
197
+ * E-22: Resolve package.json exports field to a source file path.
198
+ */
199
+ function resolveExportsField(exports, packageDir) {
200
+ if (!exports)
201
+ return undefined;
202
+ // String shorthand: "exports": "./src/index.ts"
203
+ if (typeof exports === "string") {
204
+ return resolveExportPath(exports, packageDir);
205
+ }
206
+ if (typeof exports !== "object" || exports === null)
207
+ return undefined;
208
+ const exportsObj = exports;
209
+ // Subpath "." entry
210
+ const dotEntry = exportsObj["."];
211
+ if (dotEntry) {
212
+ if (typeof dotEntry === "string") {
213
+ return resolveExportPath(dotEntry, packageDir);
214
+ }
215
+ // Conditional map
216
+ if (typeof dotEntry === "object" && dotEntry !== null) {
217
+ const conditions = dotEntry;
218
+ // Prefer types, then import, then require
219
+ for (const key of ["types", "import", "require", "default"]) {
220
+ if (typeof conditions[key] === "string") {
221
+ return resolveExportPath(conditions[key], packageDir);
222
+ }
223
+ }
224
+ }
225
+ }
226
+ return undefined;
227
+ }
228
+ function resolveExportPath(exportPath, packageDir) {
229
+ const absPath = resolve(packageDir, exportPath);
230
+ // E-20: If it points to .js, try .ts/.tsx
231
+ if (existsSync(absPath))
232
+ return absPath;
233
+ if (exportPath.endsWith(".js")) {
234
+ const tsPath = resolve(packageDir, exportPath.replace(/\.js$/, ".ts"));
235
+ if (existsSync(tsPath))
236
+ return tsPath;
237
+ const tsxPath = resolve(packageDir, exportPath.replace(/\.js$/, ".tsx"));
238
+ if (existsSync(tsxPath))
239
+ return tsxPath;
240
+ }
241
+ if (exportPath.endsWith(".jsx")) {
242
+ const tsxPath = resolve(packageDir, exportPath.replace(/\.jsx$/, ".tsx"));
243
+ if (existsSync(tsxPath))
244
+ return tsxPath;
245
+ }
246
+ return undefined;
247
+ }
248
+ /**
249
+ * Resolve a relative source path (from main/module fields) to a real source file.
250
+ */
251
+ function resolveToSource(filePath, packageDir) {
252
+ const resolved = resolveExportPath(filePath, packageDir);
253
+ if (resolved)
254
+ return relative(packageDir, resolved);
255
+ // Try with extensions
256
+ for (const ext of [".ts", ".tsx", "/index.ts", "/index.tsx"]) {
257
+ const candidate = resolve(packageDir, filePath.replace(/\.[jt]sx?$/, "") + ext);
258
+ if (existsSync(candidate))
259
+ return relative(packageDir, candidate);
260
+ }
261
+ // Try extensionless
262
+ for (const ext of [".ts", ".tsx", "/index.ts", "/index.tsx"]) {
263
+ const candidate = resolve(packageDir, filePath + ext);
264
+ if (existsSync(candidate))
265
+ return relative(packageDir, candidate);
266
+ }
267
+ return undefined;
268
+ }
269
+ /**
270
+ * Resolve a module specifier (relative path) to a relative file path within the package.
271
+ * E-20: Handles .js→.ts mapping. E-21: Checks path boundary.
272
+ */
273
+ export function resolveModuleSpecifier(specifier, fromDir, packageDir, warnings) {
274
+ if (!specifier.startsWith("."))
275
+ return undefined; // External module
276
+ // E-20: .js → .ts mapping
277
+ const candidates = [];
278
+ if (specifier.endsWith(".js")) {
279
+ candidates.push(specifier.replace(/\.js$/, ".ts"));
280
+ candidates.push(specifier.replace(/\.js$/, ".tsx"));
281
+ candidates.push(specifier); // try original .js
282
+ }
283
+ else if (specifier.endsWith(".jsx")) {
284
+ candidates.push(specifier.replace(/\.jsx$/, ".tsx"));
285
+ candidates.push(specifier); // try original .jsx
286
+ }
287
+ else if (specifier.endsWith(".ts") || specifier.endsWith(".tsx")) {
288
+ candidates.push(specifier);
289
+ }
290
+ else {
291
+ // Extensionless — try adding extensions
292
+ candidates.push(specifier + ".ts");
293
+ candidates.push(specifier + ".tsx");
294
+ candidates.push(specifier + "/index.ts");
295
+ candidates.push(specifier + "/index.tsx");
296
+ candidates.push(specifier + ".js");
297
+ candidates.push(specifier + ".jsx");
298
+ }
299
+ for (const candidate of candidates) {
300
+ const absPath = resolve(fromDir, candidate);
301
+ // E-21: Path traversal boundary check — use relative() to avoid prefix collision
302
+ // (startsWith("/foo/bar") would wrongly match "/foo/barroom/baz")
303
+ const relToPackage = relative(resolve(packageDir), absPath);
304
+ if (relToPackage.startsWith("..")) {
305
+ warnings.push({
306
+ level: "warn",
307
+ module: "symbol-graph",
308
+ message: `Import "${specifier}" resolves outside package boundary — skipped`,
309
+ });
310
+ return undefined;
311
+ }
312
+ if (existsSync(absPath)) {
313
+ return relative(packageDir, absPath);
314
+ }
315
+ }
316
+ return undefined;
317
+ }
318
+ /**
319
+ * E-24: Expand a star re-export by enumerating all named exports from target file.
320
+ */
321
+ function expandStarExport(targetRelPath, fileMap, packageDir, results, barrelSourceFiles, warnings, visited, isTypeOnly) {
322
+ if (visited.has(targetRelPath)) {
323
+ warnings.push({
324
+ level: "warn",
325
+ module: "symbol-graph",
326
+ message: `Circular re-export detected involving ${targetRelPath}`,
327
+ file: targetRelPath,
328
+ });
329
+ return;
330
+ }
331
+ visited.add(targetRelPath);
332
+ const targetParsed = fileMap.get(targetRelPath);
333
+ if (!targetParsed)
334
+ return;
335
+ for (const exp of targetParsed.exports) {
336
+ if (exp.name === "default")
337
+ continue; // Star re-export excludes default
338
+ if (exp.name === "*" && exp.isReExport && exp.reExportSource) {
339
+ // Nested star re-export — recurse
340
+ const nestedTarget = resolveModuleSpecifier(exp.reExportSource, dirname(resolve(packageDir, targetRelPath)), packageDir, warnings);
341
+ if (nestedTarget) {
342
+ barrelSourceFiles.add(nestedTarget);
343
+ expandStarExport(nestedTarget, fileMap, packageDir, results, barrelSourceFiles, warnings, visited, isTypeOnly || exp.isTypeOnly);
344
+ }
345
+ }
346
+ else if (exp.isReExport && exp.reExportSource) {
347
+ // Named re-export from target — resolve further
348
+ const resolved = resolveReExportChain(exp, targetRelPath, fileMap, packageDir, barrelSourceFiles, warnings, new Set(visited));
349
+ results.push({
350
+ ...resolved,
351
+ isTypeOnly: isTypeOnly || resolved.isTypeOnly,
352
+ });
353
+ }
354
+ else {
355
+ // Direct export from target file
356
+ results.push({
357
+ ...exp,
358
+ isTypeOnly: isTypeOnly || exp.isTypeOnly,
359
+ definedIn: targetRelPath,
360
+ });
361
+ }
362
+ }
363
+ }
364
+ /**
365
+ * E-23: Resolve a named re-export chain with cycle detection.
366
+ * E-25: Handles aliased exports (localName).
367
+ */
368
+ function resolveReExportChain(exp, fromFile, fileMap, packageDir, barrelSourceFiles, warnings, visited) {
369
+ if (!exp.reExportSource) {
370
+ return { ...exp, definedIn: fromFile };
371
+ }
372
+ // E-23: Cycle detection
373
+ const key = `${fromFile}::${exp.name}`;
374
+ if (visited.has(key)) {
375
+ warnings.push({
376
+ level: "warn",
377
+ module: "symbol-graph",
378
+ message: `Circular re-export chain detected for "${exp.name}" at ${fromFile}`,
379
+ file: fromFile,
380
+ });
381
+ return { ...exp, definedIn: "circular", kind: "unknown" };
382
+ }
383
+ visited.add(key);
384
+ const fromDir = dirname(resolve(packageDir, fromFile));
385
+ const targetRelPath = resolveModuleSpecifier(exp.reExportSource, fromDir, packageDir, warnings);
386
+ if (!targetRelPath) {
387
+ warnings.push({
388
+ level: "warn",
389
+ module: "symbol-graph",
390
+ message: `Unresolved re-export "${exp.name}" from "${exp.reExportSource}" in ${fromFile}`,
391
+ file: fromFile,
392
+ });
393
+ return { ...exp, definedIn: "unresolved", kind: "unknown" };
394
+ }
395
+ barrelSourceFiles.add(targetRelPath);
396
+ const targetParsed = fileMap.get(targetRelPath);
397
+ if (!targetParsed) {
398
+ return { ...exp, definedIn: "unresolved", kind: "unknown" };
399
+ }
400
+ // E-25: Look up using localName if available (aliased export)
401
+ const lookupName = exp.localName ?? exp.name;
402
+ // Find matching export in target file
403
+ const targetExport = targetParsed.exports.find((e) => e.name === lookupName || e.name === exp.name);
404
+ if (!targetExport) {
405
+ // Maybe the target re-exports it further — check star exports
406
+ const starReExport = targetParsed.exports.find((e) => e.name === "*" && e.isReExport);
407
+ if (starReExport && starReExport.reExportSource) {
408
+ // Follow the star re-export
409
+ return resolveReExportChain({ ...exp, reExportSource: starReExport.reExportSource }, targetRelPath, fileMap, packageDir, barrelSourceFiles, warnings, visited);
410
+ }
411
+ return { ...exp, definedIn: targetRelPath, kind: "unknown" };
412
+ }
413
+ // If target also re-exports, follow the chain
414
+ if (targetExport.isReExport && targetExport.reExportSource) {
415
+ return resolveReExportChain({ ...exp, ...targetExport, name: exp.name, localName: exp.localName }, targetRelPath, fileMap, packageDir, barrelSourceFiles, warnings, visited);
416
+ }
417
+ // Found the definition — merge kind, signature, JSDoc
418
+ return {
419
+ name: exp.name,
420
+ localName: exp.localName,
421
+ kind: targetExport.kind,
422
+ isReExport: true,
423
+ isTypeOnly: exp.isTypeOnly || targetExport.isTypeOnly,
424
+ signature: targetExport.signature,
425
+ jsDocComment: targetExport.jsDocComment,
426
+ definedIn: targetRelPath,
427
+ };
428
+ }
429
+ /**
430
+ * Fix A: Extract exports from a script-style entry point (barrel with no exports).
431
+ * Follows the script's internal imports one level deep to find the real API.
432
+ */
433
+ function extractScriptEntryExports(entryFile, fileMap, packageDir, warnings) {
434
+ const entryParsed = fileMap.get(entryFile);
435
+ if (!entryParsed)
436
+ return [];
437
+ const results = [];
438
+ const seen = new Set();
439
+ for (const imp of entryParsed.imports) {
440
+ if (!imp.moduleSpecifier.startsWith("."))
441
+ continue;
442
+ const targetRelPath = resolveModuleSpecifier(imp.moduleSpecifier, dirname(resolve(packageDir, entryFile)), packageDir, warnings);
443
+ if (!targetRelPath)
444
+ continue;
445
+ const targetFile = fileMap.get(targetRelPath);
446
+ if (!targetFile)
447
+ continue;
448
+ for (const exp of targetFile.exports) {
449
+ if (exp.name === "*" || exp.name === "default" || seen.has(exp.name))
450
+ continue;
451
+ if (exp.isTypeOnly)
452
+ continue;
453
+ seen.add(exp.name);
454
+ results.push({ ...exp, definedIn: targetRelPath });
455
+ }
456
+ }
457
+ if (results.length > 0) {
458
+ warnings.push({
459
+ level: "info",
460
+ module: "symbol-graph",
461
+ message: `Barrel file has no exports — extracted ${results.length} API symbols from its internal imports.`,
462
+ });
463
+ }
464
+ return results;
465
+ }
466
+ /**
467
+ * Fix A: Extract exports from bin entry files when no barrel exists.
468
+ * For CLI packages, the bin field in package.json points to the real entry point(s).
469
+ * We collect exports from the bin file AND functions it imports from internal modules (one level deep).
470
+ */
471
+ function extractBinEntryExports(packageDir, fileMap, allExports, importGraph, warnings) {
472
+ const pkgJsonPath = join(packageDir, "package.json");
473
+ if (!existsSync(pkgJsonPath))
474
+ return [];
475
+ let pkgJson;
476
+ try {
477
+ pkgJson = JSON.parse(readFileSync(pkgJsonPath, "utf-8"));
478
+ }
479
+ catch {
480
+ return [];
481
+ }
482
+ if (!pkgJson.bin)
483
+ return [];
484
+ // Collect bin entry file paths
485
+ const binPaths = [];
486
+ if (typeof pkgJson.bin === "string") {
487
+ binPaths.push(pkgJson.bin);
488
+ }
489
+ else if (typeof pkgJson.bin === "object") {
490
+ for (const val of Object.values(pkgJson.bin)) {
491
+ if (typeof val === "string")
492
+ binPaths.push(val);
493
+ }
494
+ }
495
+ const results = [];
496
+ const seen = new Set();
497
+ for (const binPath of binPaths) {
498
+ // Resolve bin path to a source file in the parsed file map
499
+ const binRelPath = resolveBinToSource(binPath, packageDir, fileMap, warnings);
500
+ if (!binRelPath)
501
+ continue;
502
+ const binFile = fileMap.get(binRelPath);
503
+ if (!binFile)
504
+ continue;
505
+ // Collect direct exports from the bin file
506
+ for (const exp of binFile.exports) {
507
+ if (exp.name === "*" || seen.has(exp.name))
508
+ continue;
509
+ seen.add(exp.name);
510
+ results.push({ ...exp, definedIn: binRelPath });
511
+ }
512
+ // One level deep: collect exports from internal modules the bin file imports
513
+ for (const imp of binFile.imports) {
514
+ if (!imp.moduleSpecifier.startsWith("."))
515
+ continue; // only relative imports
516
+ const targetRelPath = resolveModuleSpecifier(imp.moduleSpecifier, dirname(resolve(packageDir, binRelPath)), packageDir, warnings);
517
+ if (!targetRelPath)
518
+ continue;
519
+ const targetFile = fileMap.get(targetRelPath);
520
+ if (!targetFile)
521
+ continue;
522
+ for (const exp of targetFile.exports) {
523
+ if (exp.name === "*" || exp.name === "default" || seen.has(exp.name))
524
+ continue;
525
+ if (exp.isTypeOnly)
526
+ continue; // Skip types for CLI API
527
+ seen.add(exp.name);
528
+ results.push({ ...exp, definedIn: targetRelPath });
529
+ }
530
+ }
531
+ }
532
+ if (results.length > 0) {
533
+ warnings.push({
534
+ level: "info",
535
+ module: "symbol-graph",
536
+ message: `No barrel file — used bin entry point(s) to extract ${results.length} API symbols.`,
537
+ });
538
+ }
539
+ return results;
540
+ }
541
+ /**
542
+ * Resolve a bin path (possibly pointing to dist/) to a source file.
543
+ */
544
+ function resolveBinToSource(binPath, packageDir, fileMap, warnings) {
545
+ // Try direct resolution first
546
+ const rel = relative(packageDir, resolve(packageDir, binPath));
547
+ if (fileMap.has(rel))
548
+ return rel;
549
+ // Common pattern: bin points to dist/bin/cli.js — map to src/bin/cli.ts
550
+ const srcPath = rel
551
+ .replace(/^dist\//, "src/")
552
+ .replace(/^lib\//, "src/")
553
+ .replace(/^build\//, "src/");
554
+ // Try .js → .ts
555
+ for (const candidate of [
556
+ srcPath.replace(/\.js$/, ".ts"),
557
+ srcPath.replace(/\.js$/, ".tsx"),
558
+ srcPath,
559
+ ]) {
560
+ if (fileMap.has(candidate))
561
+ return candidate;
562
+ }
563
+ // Try without extension
564
+ const noExt = srcPath.replace(/\.[jt]sx?$/, "");
565
+ for (const ext of [".ts", ".tsx", ".js", ".jsx"]) {
566
+ if (fileMap.has(noExt + ext))
567
+ return noExt + ext;
568
+ }
569
+ return undefined;
570
+ }
571
+ // ─── Call Graph Builder (Improvement 3) ─────────────────────────────────────
572
+ /**
573
+ * Build a cross-file call graph from per-file call references.
574
+ * Resolves internal module specifiers to actual file paths within the package.
575
+ */
576
+ function buildCallGraph(parsedFiles, packageDir, _warnings) {
577
+ const edges = [];
578
+ const seen = new Set();
579
+ // Build a map: exported name → file path (for resolving call targets)
580
+ const exportNameToFile = new Map();
581
+ for (const pf of parsedFiles) {
582
+ for (const exp of pf.exports) {
583
+ if (!exp.isTypeOnly && exp.name !== "*" && exp.name !== "default") {
584
+ // First definition wins (closest to barrel)
585
+ if (!exportNameToFile.has(exp.name)) {
586
+ exportNameToFile.set(exp.name, pf.relativePath);
587
+ }
588
+ }
589
+ }
590
+ }
591
+ for (const pf of parsedFiles) {
592
+ for (const ref of pf.callReferences) {
593
+ if (!ref.isInternal)
594
+ continue; // Only track internal calls
595
+ // Resolve the callee to a file
596
+ const toFile = exportNameToFile.get(ref.calleeName);
597
+ if (!toFile || toFile === pf.relativePath)
598
+ continue; // Skip self-references
599
+ const key = `${ref.callerName}:${pf.relativePath}->${ref.calleeName}:${toFile}`;
600
+ if (seen.has(key))
601
+ continue;
602
+ seen.add(key);
603
+ edges.push({
604
+ from: ref.callerName,
605
+ to: ref.calleeName,
606
+ fromFile: pf.relativePath,
607
+ toFile,
608
+ });
609
+ }
610
+ }
611
+ return edges;
612
+ }
613
+ //# sourceMappingURL=symbol-graph.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"symbol-graph.js","sourceRoot":"","sources":["../src/symbol-graph.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ export declare const agentsMdSingleTemplate: {
2
+ systemPrompt: string;
3
+ formatInstructions: string;
4
+ };
5
+ export declare const agentsMdMultiRootTemplate: {
6
+ systemPrompt: string;
7
+ formatInstructions: string;
8
+ };
9
+ export declare const agentsMdPackageDetailTemplate: {
10
+ systemPrompt: string;
11
+ formatInstructions: string;
12
+ };
13
+ export declare const agentsMdMultiTemplate: {
14
+ systemPrompt: string;
15
+ formatInstructions: string;
16
+ };
17
+ export declare const agentsMdTemplate: {
18
+ systemPrompt: string;
19
+ formatInstructions: string;
20
+ };