@flaid/devmap 0.2.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 (391) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +168 -0
  3. package/dist/ai/completion.d.ts +7 -0
  4. package/dist/ai/completion.d.ts.map +1 -0
  5. package/dist/ai/completion.js +27 -0
  6. package/dist/ai/completion.js.map +1 -0
  7. package/dist/ai/contextBuilder.d.ts +42 -0
  8. package/dist/ai/contextBuilder.d.ts.map +1 -0
  9. package/dist/ai/contextBuilder.js +632 -0
  10. package/dist/ai/contextBuilder.js.map +1 -0
  11. package/dist/ai/groq.d.ts +36 -0
  12. package/dist/ai/groq.d.ts.map +1 -0
  13. package/dist/ai/groq.js +368 -0
  14. package/dist/ai/groq.js.map +1 -0
  15. package/dist/ai/openrouter.d.ts +20 -0
  16. package/dist/ai/openrouter.d.ts.map +1 -0
  17. package/dist/ai/openrouter.js +187 -0
  18. package/dist/ai/openrouter.js.map +1 -0
  19. package/dist/ai/prompts.d.ts +7 -0
  20. package/dist/ai/prompts.d.ts.map +1 -0
  21. package/dist/ai/prompts.js +88 -0
  22. package/dist/ai/prompts.js.map +1 -0
  23. package/dist/ai/provider.d.ts +15 -0
  24. package/dist/ai/provider.d.ts.map +1 -0
  25. package/dist/ai/provider.js +28 -0
  26. package/dist/ai/provider.js.map +1 -0
  27. package/dist/ai/snapshotEnrichment.d.ts +4 -0
  28. package/dist/ai/snapshotEnrichment.d.ts.map +1 -0
  29. package/dist/ai/snapshotEnrichment.js +188 -0
  30. package/dist/ai/snapshotEnrichment.js.map +1 -0
  31. package/dist/ai/types.d.ts +29 -0
  32. package/dist/ai/types.d.ts.map +1 -0
  33. package/dist/ai/types.js +2 -0
  34. package/dist/ai/types.js.map +1 -0
  35. package/dist/analyzers/analysis/extractors/fallbackExtractor.d.ts +30 -0
  36. package/dist/analyzers/analysis/extractors/fallbackExtractor.d.ts.map +1 -0
  37. package/dist/analyzers/analysis/extractors/fallbackExtractor.js +114 -0
  38. package/dist/analyzers/analysis/extractors/fallbackExtractor.js.map +1 -0
  39. package/dist/analyzers/analysis/extractors/index.d.ts +16 -0
  40. package/dist/analyzers/analysis/extractors/index.d.ts.map +1 -0
  41. package/dist/analyzers/analysis/extractors/index.js +135 -0
  42. package/dist/analyzers/analysis/extractors/index.js.map +1 -0
  43. package/dist/analyzers/analysis/extractors/prismaExtractor.d.ts +15 -0
  44. package/dist/analyzers/analysis/extractors/prismaExtractor.d.ts.map +1 -0
  45. package/dist/analyzers/analysis/extractors/prismaExtractor.js +183 -0
  46. package/dist/analyzers/analysis/extractors/prismaExtractor.js.map +1 -0
  47. package/dist/analyzers/analysis/extractors/sqlExtractor.d.ts +14 -0
  48. package/dist/analyzers/analysis/extractors/sqlExtractor.d.ts.map +1 -0
  49. package/dist/analyzers/analysis/extractors/sqlExtractor.js +163 -0
  50. package/dist/analyzers/analysis/extractors/sqlExtractor.js.map +1 -0
  51. package/dist/analyzers/analysis/extractors/types.d.ts +76 -0
  52. package/dist/analyzers/analysis/extractors/types.d.ts.map +1 -0
  53. package/dist/analyzers/analysis/extractors/types.js +2 -0
  54. package/dist/analyzers/analysis/extractors/types.js.map +1 -0
  55. package/dist/analyzers/analysis/fileAnalysis.d.ts +36 -0
  56. package/dist/analyzers/analysis/fileAnalysis.d.ts.map +1 -0
  57. package/dist/analyzers/analysis/fileAnalysis.js +2 -0
  58. package/dist/analyzers/analysis/fileAnalysis.js.map +1 -0
  59. package/dist/analyzers/analysis/fileRole.d.ts +30 -0
  60. package/dist/analyzers/analysis/fileRole.d.ts.map +1 -0
  61. package/dist/analyzers/analysis/fileRole.js +242 -0
  62. package/dist/analyzers/analysis/fileRole.js.map +1 -0
  63. package/dist/analyzers/analysis/fileScanner.d.ts +10 -0
  64. package/dist/analyzers/analysis/fileScanner.d.ts.map +1 -0
  65. package/dist/analyzers/analysis/fileScanner.js +44 -0
  66. package/dist/analyzers/analysis/fileScanner.js.map +1 -0
  67. package/dist/analyzers/analysis/filterEngine.d.ts +2 -0
  68. package/dist/analyzers/analysis/filterEngine.d.ts.map +1 -0
  69. package/dist/analyzers/analysis/filterEngine.js +110 -0
  70. package/dist/analyzers/analysis/filterEngine.js.map +1 -0
  71. package/dist/analyzers/analysis/index.d.ts +12 -0
  72. package/dist/analyzers/analysis/index.d.ts.map +1 -0
  73. package/dist/analyzers/analysis/index.js +8 -0
  74. package/dist/analyzers/analysis/index.js.map +1 -0
  75. package/dist/analyzers/analysis/preprocessors/astroPreprocessor.d.ts +23 -0
  76. package/dist/analyzers/analysis/preprocessors/astroPreprocessor.d.ts.map +1 -0
  77. package/dist/analyzers/analysis/preprocessors/astroPreprocessor.js +40 -0
  78. package/dist/analyzers/analysis/preprocessors/astroPreprocessor.js.map +1 -0
  79. package/dist/analyzers/analysis/preprocessors/index.d.ts +5 -0
  80. package/dist/analyzers/analysis/preprocessors/index.d.ts.map +1 -0
  81. package/dist/analyzers/analysis/preprocessors/index.js +4 -0
  82. package/dist/analyzers/analysis/preprocessors/index.js.map +1 -0
  83. package/dist/analyzers/analysis/preprocessors/sveltePreprocessor.d.ts +27 -0
  84. package/dist/analyzers/analysis/preprocessors/sveltePreprocessor.d.ts.map +1 -0
  85. package/dist/analyzers/analysis/preprocessors/sveltePreprocessor.js +50 -0
  86. package/dist/analyzers/analysis/preprocessors/sveltePreprocessor.js.map +1 -0
  87. package/dist/analyzers/analysis/preprocessors/types.d.ts +45 -0
  88. package/dist/analyzers/analysis/preprocessors/types.d.ts.map +1 -0
  89. package/dist/analyzers/analysis/preprocessors/types.js +2 -0
  90. package/dist/analyzers/analysis/preprocessors/types.js.map +1 -0
  91. package/dist/analyzers/analysis/preprocessors/vuePreprocessor.d.ts +21 -0
  92. package/dist/analyzers/analysis/preprocessors/vuePreprocessor.d.ts.map +1 -0
  93. package/dist/analyzers/analysis/preprocessors/vuePreprocessor.js +44 -0
  94. package/dist/analyzers/analysis/preprocessors/vuePreprocessor.js.map +1 -0
  95. package/dist/analyzers/analysis/tsMorphAnalyzer.d.ts +10 -0
  96. package/dist/analyzers/analysis/tsMorphAnalyzer.d.ts.map +1 -0
  97. package/dist/analyzers/analysis/tsMorphAnalyzer.js +190 -0
  98. package/dist/analyzers/analysis/tsMorphAnalyzer.js.map +1 -0
  99. package/dist/analyzers/detectors/capabilityDetector.d.ts +28 -0
  100. package/dist/analyzers/detectors/capabilityDetector.d.ts.map +1 -0
  101. package/dist/analyzers/detectors/capabilityDetector.js +288 -0
  102. package/dist/analyzers/detectors/capabilityDetector.js.map +1 -0
  103. package/dist/analyzers/detectors/databaseDetector.d.ts +7 -0
  104. package/dist/analyzers/detectors/databaseDetector.d.ts.map +1 -0
  105. package/dist/analyzers/detectors/databaseDetector.js +71 -0
  106. package/dist/analyzers/detectors/databaseDetector.js.map +1 -0
  107. package/dist/analyzers/detectors/frameworkDetector.d.ts +22 -0
  108. package/dist/analyzers/detectors/frameworkDetector.d.ts.map +1 -0
  109. package/dist/analyzers/detectors/frameworkDetector.js +160 -0
  110. package/dist/analyzers/detectors/frameworkDetector.js.map +1 -0
  111. package/dist/analyzers/detectors/frontendFeatureDetector.d.ts +26 -0
  112. package/dist/analyzers/detectors/frontendFeatureDetector.d.ts.map +1 -0
  113. package/dist/analyzers/detectors/frontendFeatureDetector.js +269 -0
  114. package/dist/analyzers/detectors/frontendFeatureDetector.js.map +1 -0
  115. package/dist/analyzers/detectors/index.d.ts +11 -0
  116. package/dist/analyzers/detectors/index.d.ts.map +1 -0
  117. package/dist/analyzers/detectors/index.js +7 -0
  118. package/dist/analyzers/detectors/index.js.map +1 -0
  119. package/dist/analyzers/detectors/nestRouteDetector.d.ts +13 -0
  120. package/dist/analyzers/detectors/nestRouteDetector.d.ts.map +1 -0
  121. package/dist/analyzers/detectors/nestRouteDetector.js +69 -0
  122. package/dist/analyzers/detectors/nestRouteDetector.js.map +1 -0
  123. package/dist/analyzers/detectors/routeDetector.d.ts +22 -0
  124. package/dist/analyzers/detectors/routeDetector.d.ts.map +1 -0
  125. package/dist/analyzers/detectors/routeDetector.js +368 -0
  126. package/dist/analyzers/detectors/routeDetector.js.map +1 -0
  127. package/dist/analyzers/detectors/serviceDetector.d.ts +3 -0
  128. package/dist/analyzers/detectors/serviceDetector.d.ts.map +1 -0
  129. package/dist/analyzers/detectors/serviceDetector.js +81 -0
  130. package/dist/analyzers/detectors/serviceDetector.js.map +1 -0
  131. package/dist/analyzers/features/featureDetector.d.ts +22 -0
  132. package/dist/analyzers/features/featureDetector.d.ts.map +1 -0
  133. package/dist/analyzers/features/featureDetector.js +821 -0
  134. package/dist/analyzers/features/featureDetector.js.map +1 -0
  135. package/dist/analyzers/features/featureMerge.d.ts +65 -0
  136. package/dist/analyzers/features/featureMerge.d.ts.map +1 -0
  137. package/dist/analyzers/features/featureMerge.js +168 -0
  138. package/dist/analyzers/features/featureMerge.js.map +1 -0
  139. package/dist/analyzers/features/featureSimilarity.d.ts +152 -0
  140. package/dist/analyzers/features/featureSimilarity.d.ts.map +1 -0
  141. package/dist/analyzers/features/featureSimilarity.js +264 -0
  142. package/dist/analyzers/features/featureSimilarity.js.map +1 -0
  143. package/dist/analyzers/features/index.d.ts +6 -0
  144. package/dist/analyzers/features/index.d.ts.map +1 -0
  145. package/dist/analyzers/features/index.js +4 -0
  146. package/dist/analyzers/features/index.js.map +1 -0
  147. package/dist/analyzers/graph/dependencyGraph.d.ts +5 -0
  148. package/dist/analyzers/graph/dependencyGraph.d.ts.map +1 -0
  149. package/dist/analyzers/graph/dependencyGraph.js +88 -0
  150. package/dist/analyzers/graph/dependencyGraph.js.map +1 -0
  151. package/dist/analyzers/graph/dependencyMap.d.ts +43 -0
  152. package/dist/analyzers/graph/dependencyMap.d.ts.map +1 -0
  153. package/dist/analyzers/graph/dependencyMap.js +85 -0
  154. package/dist/analyzers/graph/dependencyMap.js.map +1 -0
  155. package/dist/analyzers/graph/entryPoints.d.ts +3 -0
  156. package/dist/analyzers/graph/entryPoints.d.ts.map +1 -0
  157. package/dist/analyzers/graph/entryPoints.js +21 -0
  158. package/dist/analyzers/graph/entryPoints.js.map +1 -0
  159. package/dist/analyzers/graph/index.d.ts +7 -0
  160. package/dist/analyzers/graph/index.d.ts.map +1 -0
  161. package/dist/analyzers/graph/index.js +5 -0
  162. package/dist/analyzers/graph/index.js.map +1 -0
  163. package/dist/analyzers/graph/sourceScope.d.ts +2 -0
  164. package/dist/analyzers/graph/sourceScope.d.ts.map +1 -0
  165. package/dist/analyzers/graph/sourceScope.js +30 -0
  166. package/dist/analyzers/graph/sourceScope.js.map +1 -0
  167. package/dist/analyzers/inference/domainInference.d.ts +58 -0
  168. package/dist/analyzers/inference/domainInference.d.ts.map +1 -0
  169. package/dist/analyzers/inference/domainInference.js +234 -0
  170. package/dist/analyzers/inference/domainInference.js.map +1 -0
  171. package/dist/analyzers/inference/index.d.ts +5 -0
  172. package/dist/analyzers/inference/index.d.ts.map +1 -0
  173. package/dist/analyzers/inference/index.js +3 -0
  174. package/dist/analyzers/inference/index.js.map +1 -0
  175. package/dist/analyzers/inference/ownershipTopology.d.ts +8 -0
  176. package/dist/analyzers/inference/ownershipTopology.d.ts.map +1 -0
  177. package/dist/analyzers/inference/ownershipTopology.js +65 -0
  178. package/dist/analyzers/inference/ownershipTopology.js.map +1 -0
  179. package/dist/analyzers/pipeline/analyzerRegistry.d.ts +9 -0
  180. package/dist/analyzers/pipeline/analyzerRegistry.d.ts.map +1 -0
  181. package/dist/analyzers/pipeline/analyzerRegistry.js +35 -0
  182. package/dist/analyzers/pipeline/analyzerRegistry.js.map +1 -0
  183. package/dist/analyzers/pipeline/heuristicAnalyzer.d.ts +12 -0
  184. package/dist/analyzers/pipeline/heuristicAnalyzer.d.ts.map +1 -0
  185. package/dist/analyzers/pipeline/heuristicAnalyzer.js +150 -0
  186. package/dist/analyzers/pipeline/heuristicAnalyzer.js.map +1 -0
  187. package/dist/analyzers/pipeline/index.d.ts +7 -0
  188. package/dist/analyzers/pipeline/index.d.ts.map +1 -0
  189. package/dist/analyzers/pipeline/index.js +5 -0
  190. package/dist/analyzers/pipeline/index.js.map +1 -0
  191. package/dist/analyzers/pipeline/projectMap.d.ts +120 -0
  192. package/dist/analyzers/pipeline/projectMap.d.ts.map +1 -0
  193. package/dist/analyzers/pipeline/projectMap.js +726 -0
  194. package/dist/analyzers/pipeline/projectMap.js.map +1 -0
  195. package/dist/analyzers/pipeline/projectMetadata.d.ts +19 -0
  196. package/dist/analyzers/pipeline/projectMetadata.d.ts.map +1 -0
  197. package/dist/analyzers/pipeline/projectMetadata.js +149 -0
  198. package/dist/analyzers/pipeline/projectMetadata.js.map +1 -0
  199. package/dist/analyzers/pipeline/reasonTags.d.ts +6 -0
  200. package/dist/analyzers/pipeline/reasonTags.d.ts.map +1 -0
  201. package/dist/analyzers/pipeline/reasonTags.js +6 -0
  202. package/dist/analyzers/pipeline/reasonTags.js.map +1 -0
  203. package/dist/analyzers/registry/ai-providers.d.ts +3 -0
  204. package/dist/analyzers/registry/ai-providers.d.ts.map +1 -0
  205. package/dist/analyzers/registry/ai-providers.js +94 -0
  206. package/dist/analyzers/registry/ai-providers.js.map +1 -0
  207. package/dist/analyzers/registry/analytics.d.ts +3 -0
  208. package/dist/analyzers/registry/analytics.d.ts.map +1 -0
  209. package/dist/analyzers/registry/analytics.js +15 -0
  210. package/dist/analyzers/registry/analytics.js.map +1 -0
  211. package/dist/analyzers/registry/auth.d.ts +3 -0
  212. package/dist/analyzers/registry/auth.d.ts.map +1 -0
  213. package/dist/analyzers/registry/auth.js +18 -0
  214. package/dist/analyzers/registry/auth.js.map +1 -0
  215. package/dist/analyzers/registry/background-jobs.d.ts +3 -0
  216. package/dist/analyzers/registry/background-jobs.d.ts.map +1 -0
  217. package/dist/analyzers/registry/background-jobs.js +14 -0
  218. package/dist/analyzers/registry/background-jobs.js.map +1 -0
  219. package/dist/analyzers/registry/caching.d.ts +3 -0
  220. package/dist/analyzers/registry/caching.d.ts.map +1 -0
  221. package/dist/analyzers/registry/caching.js +13 -0
  222. package/dist/analyzers/registry/caching.js.map +1 -0
  223. package/dist/analyzers/registry/cms-content.d.ts +3 -0
  224. package/dist/analyzers/registry/cms-content.d.ts.map +1 -0
  225. package/dist/analyzers/registry/cms-content.js +15 -0
  226. package/dist/analyzers/registry/cms-content.js.map +1 -0
  227. package/dist/analyzers/registry/database.d.ts +3 -0
  228. package/dist/analyzers/registry/database.d.ts.map +1 -0
  229. package/dist/analyzers/registry/database.js +13 -0
  230. package/dist/analyzers/registry/database.js.map +1 -0
  231. package/dist/analyzers/registry/email.d.ts +3 -0
  232. package/dist/analyzers/registry/email.d.ts.map +1 -0
  233. package/dist/analyzers/registry/email.js +19 -0
  234. package/dist/analyzers/registry/email.js.map +1 -0
  235. package/dist/analyzers/registry/file-upload.d.ts +3 -0
  236. package/dist/analyzers/registry/file-upload.d.ts.map +1 -0
  237. package/dist/analyzers/registry/file-upload.js +19 -0
  238. package/dist/analyzers/registry/file-upload.js.map +1 -0
  239. package/dist/analyzers/registry/firebase.d.ts +3 -0
  240. package/dist/analyzers/registry/firebase.d.ts.map +1 -0
  241. package/dist/analyzers/registry/firebase.js +8 -0
  242. package/dist/analyzers/registry/firebase.js.map +1 -0
  243. package/dist/analyzers/registry/index.d.ts +16 -0
  244. package/dist/analyzers/registry/index.d.ts.map +1 -0
  245. package/dist/analyzers/registry/index.js +88 -0
  246. package/dist/analyzers/registry/index.js.map +1 -0
  247. package/dist/analyzers/registry/internationalization.d.ts +3 -0
  248. package/dist/analyzers/registry/internationalization.d.ts.map +1 -0
  249. package/dist/analyzers/registry/internationalization.js +13 -0
  250. package/dist/analyzers/registry/internationalization.js.map +1 -0
  251. package/dist/analyzers/registry/logging-monitoring.d.ts +3 -0
  252. package/dist/analyzers/registry/logging-monitoring.d.ts.map +1 -0
  253. package/dist/analyzers/registry/logging-monitoring.js +14 -0
  254. package/dist/analyzers/registry/logging-monitoring.js.map +1 -0
  255. package/dist/analyzers/registry/notifications.d.ts +3 -0
  256. package/dist/analyzers/registry/notifications.d.ts.map +1 -0
  257. package/dist/analyzers/registry/notifications.js +14 -0
  258. package/dist/analyzers/registry/notifications.js.map +1 -0
  259. package/dist/analyzers/registry/payments.d.ts +3 -0
  260. package/dist/analyzers/registry/payments.d.ts.map +1 -0
  261. package/dist/analyzers/registry/payments.js +23 -0
  262. package/dist/analyzers/registry/payments.js.map +1 -0
  263. package/dist/analyzers/registry/rate-limiting.d.ts +3 -0
  264. package/dist/analyzers/registry/rate-limiting.d.ts.map +1 -0
  265. package/dist/analyzers/registry/rate-limiting.js +13 -0
  266. package/dist/analyzers/registry/rate-limiting.js.map +1 -0
  267. package/dist/analyzers/registry/search.d.ts +3 -0
  268. package/dist/analyzers/registry/search.d.ts.map +1 -0
  269. package/dist/analyzers/registry/search.js +15 -0
  270. package/dist/analyzers/registry/search.js.map +1 -0
  271. package/dist/analyzers/registry/testing.d.ts +3 -0
  272. package/dist/analyzers/registry/testing.d.ts.map +1 -0
  273. package/dist/analyzers/registry/testing.js +13 -0
  274. package/dist/analyzers/registry/testing.js.map +1 -0
  275. package/dist/analyzers/registry/types.d.ts +14 -0
  276. package/dist/analyzers/registry/types.d.ts.map +1 -0
  277. package/dist/analyzers/registry/types.js +2 -0
  278. package/dist/analyzers/registry/types.js.map +1 -0
  279. package/dist/cache/agentNavigation.d.ts +7 -0
  280. package/dist/cache/agentNavigation.d.ts.map +1 -0
  281. package/dist/cache/agentNavigation.js +253 -0
  282. package/dist/cache/agentNavigation.js.map +1 -0
  283. package/dist/cache/fileHash.d.ts +2 -0
  284. package/dist/cache/fileHash.d.ts.map +1 -0
  285. package/dist/cache/fileHash.js +5 -0
  286. package/dist/cache/fileHash.js.map +1 -0
  287. package/dist/cache/snapshot.d.ts +20 -0
  288. package/dist/cache/snapshot.d.ts.map +1 -0
  289. package/dist/cache/snapshot.js +184 -0
  290. package/dist/cache/snapshot.js.map +1 -0
  291. package/dist/commands/analyze.d.ts +12 -0
  292. package/dist/commands/analyze.d.ts.map +1 -0
  293. package/dist/commands/analyze.js +201 -0
  294. package/dist/commands/analyze.js.map +1 -0
  295. package/dist/commands/config.d.ts +10 -0
  296. package/dist/commands/config.d.ts.map +1 -0
  297. package/dist/commands/config.js +65 -0
  298. package/dist/commands/config.js.map +1 -0
  299. package/dist/commands/doctor.d.ts +11 -0
  300. package/dist/commands/doctor.d.ts.map +1 -0
  301. package/dist/commands/doctor.js +141 -0
  302. package/dist/commands/doctor.js.map +1 -0
  303. package/dist/commands/explain.d.ts +37 -0
  304. package/dist/commands/explain.d.ts.map +1 -0
  305. package/dist/commands/explain.js +101 -0
  306. package/dist/commands/explain.js.map +1 -0
  307. package/dist/commands/flow.d.ts +34 -0
  308. package/dist/commands/flow.d.ts.map +1 -0
  309. package/dist/commands/flow.js +151 -0
  310. package/dist/commands/flow.js.map +1 -0
  311. package/dist/commands/init.d.ts +16 -0
  312. package/dist/commands/init.d.ts.map +1 -0
  313. package/dist/commands/init.js +197 -0
  314. package/dist/commands/init.js.map +1 -0
  315. package/dist/commands/map.d.ts +24 -0
  316. package/dist/commands/map.d.ts.map +1 -0
  317. package/dist/commands/map.js +282 -0
  318. package/dist/commands/map.js.map +1 -0
  319. package/dist/commands/onboarding.d.ts +36 -0
  320. package/dist/commands/onboarding.d.ts.map +1 -0
  321. package/dist/commands/onboarding.js +226 -0
  322. package/dist/commands/onboarding.js.map +1 -0
  323. package/dist/index.d.ts +3 -0
  324. package/dist/index.d.ts.map +1 -0
  325. package/dist/index.js +104 -0
  326. package/dist/index.js.map +1 -0
  327. package/dist/onboarding/model.d.ts +27 -0
  328. package/dist/onboarding/model.d.ts.map +1 -0
  329. package/dist/onboarding/model.js +2 -0
  330. package/dist/onboarding/model.js.map +1 -0
  331. package/dist/onboarding/modelBuilder.d.ts +4 -0
  332. package/dist/onboarding/modelBuilder.d.ts.map +1 -0
  333. package/dist/onboarding/modelBuilder.js +330 -0
  334. package/dist/onboarding/modelBuilder.js.map +1 -0
  335. package/dist/utils/agentsFile.d.ts +6 -0
  336. package/dist/utils/agentsFile.d.ts.map +1 -0
  337. package/dist/utils/agentsFile.js +85 -0
  338. package/dist/utils/agentsFile.js.map +1 -0
  339. package/dist/utils/config.d.ts +20 -0
  340. package/dist/utils/config.d.ts.map +1 -0
  341. package/dist/utils/config.js +88 -0
  342. package/dist/utils/config.js.map +1 -0
  343. package/dist/utils/devmapFile.d.ts +3 -0
  344. package/dist/utils/devmapFile.d.ts.map +1 -0
  345. package/dist/utils/devmapFile.js +43 -0
  346. package/dist/utils/devmapFile.js.map +1 -0
  347. package/dist/utils/errors.d.ts +8 -0
  348. package/dist/utils/errors.d.ts.map +1 -0
  349. package/dist/utils/errors.js +92 -0
  350. package/dist/utils/errors.js.map +1 -0
  351. package/dist/utils/gitignore.d.ts +2 -0
  352. package/dist/utils/gitignore.d.ts.map +1 -0
  353. package/dist/utils/gitignore.js +22 -0
  354. package/dist/utils/gitignore.js.map +1 -0
  355. package/dist/utils/help.d.ts +3 -0
  356. package/dist/utils/help.d.ts.map +1 -0
  357. package/dist/utils/help.js +19 -0
  358. package/dist/utils/help.js.map +1 -0
  359. package/dist/utils/mapRenderer.d.ts +39 -0
  360. package/dist/utils/mapRenderer.d.ts.map +1 -0
  361. package/dist/utils/mapRenderer.js +90 -0
  362. package/dist/utils/mapRenderer.js.map +1 -0
  363. package/dist/utils/markdownTerminal.d.ts +6 -0
  364. package/dist/utils/markdownTerminal.d.ts.map +1 -0
  365. package/dist/utils/markdownTerminal.js +153 -0
  366. package/dist/utils/markdownTerminal.js.map +1 -0
  367. package/dist/utils/output.d.ts +29 -0
  368. package/dist/utils/output.d.ts.map +1 -0
  369. package/dist/utils/output.js +108 -0
  370. package/dist/utils/output.js.map +1 -0
  371. package/dist/utils/packageMetadata.d.ts +2 -0
  372. package/dist/utils/packageMetadata.d.ts.map +1 -0
  373. package/dist/utils/packageMetadata.js +5 -0
  374. package/dist/utils/packageMetadata.js.map +1 -0
  375. package/dist/utils/prompt.d.ts +11 -0
  376. package/dist/utils/prompt.d.ts.map +1 -0
  377. package/dist/utils/prompt.js +81 -0
  378. package/dist/utils/prompt.js.map +1 -0
  379. package/dist/utils/slug.d.ts +2 -0
  380. package/dist/utils/slug.d.ts.map +1 -0
  381. package/dist/utils/slug.js +8 -0
  382. package/dist/utils/slug.js.map +1 -0
  383. package/dist/utils/targetResolver.d.ts +7 -0
  384. package/dist/utils/targetResolver.d.ts.map +1 -0
  385. package/dist/utils/targetResolver.js +15 -0
  386. package/dist/utils/targetResolver.js.map +1 -0
  387. package/dist/utils/welcome.d.ts +10 -0
  388. package/dist/utils/welcome.d.ts.map +1 -0
  389. package/dist/utils/welcome.js +80 -0
  390. package/dist/utils/welcome.js.map +1 -0
  391. package/package.json +61 -0
@@ -0,0 +1,36 @@
1
+ import type { ScannedFile } from "./fileScanner.js";
2
+ import type { RouteInfo } from "../detectors/index.js";
3
+ export type AnalysisConfidence = "high" | "medium" | "low";
4
+ export type SymbolKind = "function" | "class" | "interface" | "type" | "enum" | "const" | "method";
5
+ export type SymbolInfo = {
6
+ name: string;
7
+ kind: SymbolKind;
8
+ line: number;
9
+ exported: boolean;
10
+ async?: boolean;
11
+ };
12
+ export type FunctionInfo = {
13
+ name: string;
14
+ kind: "function" | "const" | "class" | "method";
15
+ line: number;
16
+ exported: boolean;
17
+ async: boolean;
18
+ };
19
+ export type FileAnalysis = {
20
+ analyzer: string;
21
+ confidence: AnalysisConfidence;
22
+ imports: string[];
23
+ exports: string[];
24
+ symbols: SymbolInfo[];
25
+ topFunctions: FunctionInfo[];
26
+ routes?: RouteInfo[];
27
+ };
28
+ export type AnalyzerContext = {
29
+ files: ScannedFile[];
30
+ };
31
+ export interface FileAnalyzer {
32
+ id: string;
33
+ supports(file: ScannedFile): boolean;
34
+ analyze(file: ScannedFile, context: AnalyzerContext): Promise<FileAnalysis>;
35
+ }
36
+ //# sourceMappingURL=fileAnalysis.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fileAnalysis.d.ts","sourceRoot":"","sources":["../../../src/analyzers/analysis/fileAnalysis.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAEvD,MAAM,MAAM,kBAAkB,GAAG,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;AAE3D,MAAM,MAAM,UAAU,GAClB,UAAU,GACV,OAAO,GACP,WAAW,GACX,MAAM,GACN,MAAM,GACN,OAAO,GACP,QAAQ,CAAC;AAEb,MAAM,MAAM,UAAU,GAAG;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,UAAU,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,UAAU,GAAG,OAAO,GAAG,OAAO,GAAG,QAAQ,CAAC;IAChD,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,OAAO,CAAC;IAClB,KAAK,EAAE,OAAO,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,kBAAkB,CAAC;IAC/B,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,OAAO,EAAE,UAAU,EAAE,CAAC;IACtB,YAAY,EAAE,YAAY,EAAE,CAAC;IAC7B,MAAM,CAAC,EAAE,SAAS,EAAE,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,KAAK,EAAE,WAAW,EAAE,CAAC;CACtB,CAAC;AAEF,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC;IACrC,OAAO,CAAC,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;CAC7E"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=fileAnalysis.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fileAnalysis.js","sourceRoot":"","sources":["../../../src/analyzers/analysis/fileAnalysis.ts"],"names":[],"mappings":""}
@@ -0,0 +1,30 @@
1
+ /**
2
+ * fileRole.ts — classify files into architectural roles.
3
+ *
4
+ * Roles describe the STRUCTURAL PURPOSE of a file in a codebase,
5
+ * not what library it uses or what domain it belongs to.
6
+ *
7
+ * Generic by design — roles here should apply to any web/backend/CLI project,
8
+ * not just DevMap. DevMap-specific roles (snapshot-engine, analysis-engine)
9
+ * have been removed and replaced with universal architectural roles.
10
+ *
11
+ * Role priority (checked top to bottom — first match wins):
12
+ * test → documentation → config → landing-ui → cli-command
13
+ * → api-handler → service → middleware → repository
14
+ * → ui-component → ai-integration → application-source
15
+ */
16
+ export type FileRole = "test" | "documentation" | "config" | "landing-ui" | "cli-command" | "api-handler" | "service" | "middleware" | "repository" | "ui-component" | "ai-integration" | "application-source";
17
+ export declare function classifyFileRole(path: string): FileRole;
18
+ /** Export buat featureDetector — check apakah file ini meaningful doc evidence */
19
+ export declare function isDocumentationMeta(filename: string): boolean;
20
+ /**
21
+ * isTechnicalFeatureSource — filter files yang relevan untuk feature detection.
22
+ * Skip: test, documentation, config — mereka noise buat feature analysis.
23
+ */
24
+ export declare function isTechnicalFeatureSource(path: string): boolean;
25
+ /**
26
+ * isArchitecturalRole — roles yang represent meaningful architectural layers.
27
+ * Berguna buat AI agent yang mau ngerti struktur project.
28
+ */
29
+ export declare function isArchitecturalRole(role: FileRole): boolean;
30
+ //# sourceMappingURL=fileRole.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fileRole.d.ts","sourceRoot":"","sources":["../../../src/analyzers/analysis/fileRole.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,MAAM,MAAM,QAAQ,GAEhB,MAAM,GACN,eAAe,GACf,QAAQ,GACR,YAAY,GACZ,aAAa,GACb,aAAa,GACb,SAAS,GACT,YAAY,GACZ,YAAY,GACZ,cAAc,GACd,gBAAgB,GAChB,oBAAoB,CAAC;AAMzB,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ,CAwCvD;AA+CD,kFAAkF;AAClF,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAE7D;AAoJD;;;GAGG;AACH,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAK9D;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,QAAQ,GAAG,OAAO,CAU3D"}
@@ -0,0 +1,242 @@
1
+ /**
2
+ * fileRole.ts — classify files into architectural roles.
3
+ *
4
+ * Roles describe the STRUCTURAL PURPOSE of a file in a codebase,
5
+ * not what library it uses or what domain it belongs to.
6
+ *
7
+ * Generic by design — roles here should apply to any web/backend/CLI project,
8
+ * not just DevMap. DevMap-specific roles (snapshot-engine, analysis-engine)
9
+ * have been removed and replaced with universal architectural roles.
10
+ *
11
+ * Role priority (checked top to bottom — first match wins):
12
+ * test → documentation → config → landing-ui → cli-command
13
+ * → api-handler → service → middleware → repository
14
+ * → ui-component → ai-integration → application-source
15
+ */
16
+ // ---------------------------------------------------------------------------
17
+ // Main classifier
18
+ // ---------------------------------------------------------------------------
19
+ export function classifyFileRole(path) {
20
+ const normalized = path.toLowerCase();
21
+ const filename = normalized.split("/").at(-1) ?? normalized;
22
+ const ext = filename.includes(".") ? "." + filename.split(".").at(-1) : "";
23
+ // 1. Tests — check first, biar test helper files gak ke-classify sebagai source
24
+ if (isTestPath(normalized))
25
+ return "test";
26
+ // 2. Documentation
27
+ if (isDocumentationPath(normalized, filename))
28
+ return "documentation";
29
+ // 3. Config — build files, env, tsconfig, dll
30
+ if (isConfigPath(normalized, filename, ext))
31
+ return "config";
32
+ // 4. Landing UI — public marketing pages
33
+ if (isLandingUIPath(normalized, filename, ext))
34
+ return "landing-ui";
35
+ // 5. CLI commands — command handlers dan bin entry points
36
+ if (isCLIPath(normalized))
37
+ return "cli-command";
38
+ // 6. API handlers — route files, controllers, endpoint handlers
39
+ if (isAPIHandlerPath(normalized, filename))
40
+ return "api-handler";
41
+ // 7. Services — business logic layer
42
+ if (isServicePath(normalized, filename))
43
+ return "service";
44
+ // 8. Middleware — guards, interceptors, proxies
45
+ if (isMiddlewarePath(normalized, filename))
46
+ return "middleware";
47
+ // 9. Repository — data access layer
48
+ if (isRepositoryPath(normalized, filename))
49
+ return "repository";
50
+ // 10. UI components — React/Vue/Svelte components dan pages
51
+ if (isUIComponentPath(normalized, filename, ext))
52
+ return "ui-component";
53
+ // 11. AI integration — AI provider clients dan prompt builders
54
+ if (isAIIntegrationPath(normalized, filename))
55
+ return "ai-integration";
56
+ // 12. Fallback
57
+ return "application-source";
58
+ }
59
+ // ---------------------------------------------------------------------------
60
+ // Role checkers
61
+ // ---------------------------------------------------------------------------
62
+ function isTestPath(path) {
63
+ return (/(^|\/)(__tests?__|fixtures?|tests?|mocks?|stubs?)(\/|$)/.test(path)
64
+ || /\.(test|spec)\.[cm]?[jt]sx?$/.test(path)
65
+ || /\.test\.(ts|js|tsx|jsx)$/.test(path)
66
+ || /(^|\/)vitest\.setup\.[cm]?[jt]s$/.test(path)
67
+ || /(^|\/)jest\.setup\.[cm]?[jt]s$/.test(path));
68
+ }
69
+ // Meta-files that are NOT meaningful project documentation.
70
+ // These are repo boilerplate, DevMap meta, or GitHub management files.
71
+ // They still get role "documentation" for isTechnicalFeatureSource filtering,
72
+ // but are excluded from Documentation feature evidence in featureDetector.
73
+ const DOCUMENTATION_META_FILENAMES = new Set([
74
+ "devmap.md", "agents.md",
75
+ "contributing.md", "code_of_conduct.md", "code-of-conduct.md",
76
+ "security.md", "license.md", "licence.md", "changelog.md",
77
+ "pull_request_template.md", "issue_template.md", "codeowners",
78
+ ]);
79
+ function isDocumentationPath(path, filename) {
80
+ // All .md, .mdx, .txt and doc folders are classified as "documentation" role.
81
+ // The role is used broadly for isTechnicalFeatureSource() filtering.
82
+ // Narrower filtering (excluding meta-files) happens in featureDetector.ts
83
+ // via isDocumentationEvidence().
84
+ return (filename.endsWith(".md")
85
+ || filename.endsWith(".mdx")
86
+ || filename.endsWith(".txt")
87
+ || /(^|\/)docs?(\/|$)/.test(path)
88
+ || /(^|\/)wiki(\/|$)/.test(path)
89
+ || /(^|\/)changelog(s)?(\/|\.md$)/.test(path)
90
+ || /(^|\/)contributing(\.md)?$/.test(path)
91
+ || /(^|\/)license(\.md)?$/.test(path)
92
+ || /(^|\/)readme(\.md)?$/.test(path)
93
+ || /(^|\/)agents?\.md$/.test(path)
94
+ || /(openapi|swagger)\.(json|yaml|yml)$/.test(filename));
95
+ }
96
+ /** Export buat featureDetector — check apakah file ini meaningful doc evidence */
97
+ export function isDocumentationMeta(filename) {
98
+ return DOCUMENTATION_META_FILENAMES.has(filename.toLowerCase());
99
+ }
100
+ function isConfigPath(path, filename, ext) {
101
+ // Named config files
102
+ const CONFIG_FILENAMES = new Set([
103
+ "package.json", "tsconfig.json", "tsconfig.base.json",
104
+ ".eslintrc", ".eslintrc.json", ".eslintrc.js",
105
+ ".prettierrc", ".prettierrc.json",
106
+ "vite.config.ts", "vite.config.js",
107
+ "next.config.ts", "next.config.js", "next.config.mjs",
108
+ "tailwind.config.ts", "tailwind.config.js",
109
+ "postcss.config.js", "postcss.config.ts",
110
+ "drizzle.config.ts", "drizzle.config.js",
111
+ "prisma.config.ts",
112
+ "jest.config.ts", "jest.config.js",
113
+ "vitest.config.ts", "vitest.config.js",
114
+ "playwright.config.ts",
115
+ "turbo.json", "pnpm-workspace.yaml",
116
+ ".env", ".env.example", ".env.local",
117
+ "dockerfile", "docker-compose.yml", "docker-compose.yaml",
118
+ ]);
119
+ if (CONFIG_FILENAMES.has(filename))
120
+ return true;
121
+ return (
122
+ // *.config.ts / *.config.js
123
+ /\.(config)\.[cm]?[jt]sx?$/.test(filename)
124
+ // src/config/ folder
125
+ || /(^|\/)src\/configs?(\/|$)/.test(path)
126
+ || /(^|\/)configs?(\/|$)/.test(path)
127
+ // env files
128
+ || /^\.env(\.|$)/.test(filename));
129
+ }
130
+ function isLandingUIPath(path, filename, ext) {
131
+ const UI_EXTS = new Set([".astro", ".tsx", ".jsx", ".vue", ".svelte"]);
132
+ if (!UI_EXTS.has(ext))
133
+ return false;
134
+ return (/(^|\/)(landing|marketing)(\/|$)/.test(path)
135
+ // Next.js / Astro home page
136
+ || /(^|\/)src\/pages\/index\.(astro|tsx?|jsx?)$/.test(path)
137
+ || /(^|\/)src\/app\/page\.(tsx?|jsx?)$/.test(path)
138
+ // Named landing components
139
+ || /(^|\/)+(hero|pricing|testimonials?|features?section|cta|banner|showcase)[^/]*\.(astro|tsx?|jsx?|vue|svelte)$/.test(path));
140
+ }
141
+ function isCLIPath(path) {
142
+ return (/(^|\/)src\/commands?(\/|$)/.test(path)
143
+ || /(^|\/)commands?(\/|$)/.test(path)
144
+ || /(^|\/)bin(\/|$)/.test(path)
145
+ // CLI entry point
146
+ || /(^|\/)src\/cli\.[cm]?[jt]s$/.test(path)
147
+ || /(^|\/)src\/main\.[cm]?[jt]s$/.test(path));
148
+ }
149
+ function isAPIHandlerPath(path, filename) {
150
+ return (
151
+ // Next.js App Router route files
152
+ /\/app\/.*\/route\.[cm]?[jt]sx?$/.test(path)
153
+ // Next.js Pages Router API
154
+ || /\/pages\/api\//.test(path)
155
+ // Express/Fastify/Hono router files
156
+ || /(^|\/)src\/(routes?|routers?)(\/|$)/.test(path)
157
+ || /(^|\/)routes?(\/|$)/.test(path)
158
+ // Controllers (MVC pattern)
159
+ || /(^|\/)src\/(controllers?)(\/|$)/.test(path)
160
+ || /(^|\/)controllers?(\/|$)/.test(path)
161
+ || /\.(controller)\.[cm]?[jt]sx?$/.test(filename)
162
+ // Named handler files
163
+ || /\.(handler|router)\.[cm]?[jt]sx?$/.test(filename));
164
+ }
165
+ function isServicePath(path, filename) {
166
+ return (/(^|\/)src\/(services?|usecases?|use-cases?|domain|application)(\/|$)/.test(path)
167
+ || /(^|\/)services?(\/|$)/.test(path)
168
+ || /(^|\/)usecases?(\/|$)/.test(path)
169
+ || /\.(service)\.[cm]?[jt]sx?$/.test(filename)
170
+ || /\.(usecase|use-case)\.[cm]?[jt]sx?$/.test(filename)
171
+ // Action files (Next.js server actions)
172
+ || /(^|\/)src\/actions?(\/|$)/.test(path)
173
+ || /\.(action)\.[cm]?[jt]sx?$/.test(filename));
174
+ }
175
+ function isMiddlewarePath(path, filename) {
176
+ return (/(^|\/)src\/(middleware|middlewares?|guards?|interceptors?)(\/|$)/.test(path)
177
+ || /(^|\/)middleware\.[cm]?[jt]sx?$/.test(path)
178
+ || /(^|\/)proxy\.[cm]?[jt]sx?$/.test(path)
179
+ || /\.(middleware|guard|interceptor)\.[cm]?[jt]sx?$/.test(filename)
180
+ // Next.js middleware convention
181
+ || /(^|\/)src\/middleware\.[cm]?[jt]sx?$/.test(path));
182
+ }
183
+ function isRepositoryPath(path, filename) {
184
+ return (/(^|\/)src\/(repositories?|repos?|daos?|data-access)(\/|$)/.test(path)
185
+ || /(^|\/)repositories?(\/|$)/.test(path)
186
+ || /\.(repository|repo)\.[cm]?[jt]sx?$/.test(filename)
187
+ // Prisma / DB client files
188
+ || /(^|\/)src\/lib\/(prisma|db|database)\.[cm]?[jt]sx?$/.test(path)
189
+ || /(^|\/)src\/(db|database)(\/|$)/.test(path)
190
+ // Drizzle schema files
191
+ || /(^|\/)src\/db\/schema\.[cm]?[jt]sx?$/.test(path));
192
+ }
193
+ function isUIComponentPath(path, filename, ext) {
194
+ const UI_EXTS = new Set([".tsx", ".jsx", ".vue", ".svelte", ".astro"]);
195
+ if (!UI_EXTS.has(ext))
196
+ return false;
197
+ // Exclude files already classified as api-handler, landing-ui, etc.
198
+ // This runs last among UI checks so it acts as a broad catch-all for UI files.
199
+ return (/(^|\/)src\/(components?|ui|widgets?)(\/|$)/.test(path)
200
+ || /(^|\/)components?(\/|$)/.test(path)
201
+ || /(^|\/)src\/(pages?|views?|screens?)(\/|$)/.test(path)
202
+ || /(^|\/)pages?(\/|$)/.test(path)
203
+ || /(^|\/)app\/.*\/(page|layout|loading|error|not-found)\.[cm]?[jt]sx?$/.test(path)
204
+ // Catch-all: any .tsx/.jsx/.vue/.svelte not caught above
205
+ || UI_EXTS.has(ext));
206
+ }
207
+ function isAIIntegrationPath(path, filename) {
208
+ return (/(^|\/)src\/ai(\/|$)/.test(path)
209
+ || /(^|\/)ai(\/|$)/.test(path)
210
+ || /(^|\/)src\/lib\/(openai|groq|anthropic|gemini|langchain|ai)\.[cm]?[jt]sx?$/.test(path)
211
+ // "models?" intentionally excluded — src/models/ almost always means
212
+ // database/domain models, not AI models. Use src/llm/ or src/ai/ instead.
213
+ || /(^|\/)src\/(llm|prompts?)(\/|$)/.test(path)
214
+ || /\.(prompt|chain)\.[cm]?[jt]sx?$/.test(filename));
215
+ }
216
+ // ---------------------------------------------------------------------------
217
+ // Utility exports
218
+ // ---------------------------------------------------------------------------
219
+ /**
220
+ * isTechnicalFeatureSource — filter files yang relevan untuk feature detection.
221
+ * Skip: test, documentation, config — mereka noise buat feature analysis.
222
+ */
223
+ export function isTechnicalFeatureSource(path) {
224
+ const role = classifyFileRole(path);
225
+ return role !== "test"
226
+ && role !== "documentation"
227
+ && role !== "config";
228
+ }
229
+ /**
230
+ * isArchitecturalRole — roles yang represent meaningful architectural layers.
231
+ * Berguna buat AI agent yang mau ngerti struktur project.
232
+ */
233
+ export function isArchitecturalRole(role) {
234
+ return (role === "api-handler"
235
+ || role === "service"
236
+ || role === "middleware"
237
+ || role === "repository"
238
+ || role === "ui-component"
239
+ || role === "ai-integration"
240
+ || role === "cli-command");
241
+ }
242
+ //# sourceMappingURL=fileRole.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fileRole.js","sourceRoot":"","sources":["../../../src/analyzers/analysis/fileRole.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ export type ScannedFile = {
2
+ path: string;
3
+ absolutePath: string;
4
+ extension: string;
5
+ size: number;
6
+ lines: number;
7
+ content: string;
8
+ };
9
+ export declare function scanFiles(projectRoot: string): Promise<ScannedFile[]>;
10
+ //# sourceMappingURL=fileScanner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fileScanner.d.ts","sourceRoot":"","sources":["../../../src/analyzers/analysis/fileScanner.ts"],"names":[],"mappings":"AAKA,MAAM,MAAM,WAAW,GAAG;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,wBAAsB,SAAS,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,CAgD3E"}
@@ -0,0 +1,44 @@
1
+ import { readdir, readFile, stat } from "node:fs/promises";
2
+ import { extname, join, relative } from "node:path";
3
+ import pLimit from "p-limit";
4
+ import { shouldIgnorePath } from "./filterEngine.js";
5
+ export async function scanFiles(projectRoot) {
6
+ const files = [];
7
+ const limit = pLimit(50);
8
+ async function visit(directory) {
9
+ const entries = await readdir(directory, { withFileTypes: true });
10
+ entries.sort((a, b) => a.name.localeCompare(b.name));
11
+ const tasks = [];
12
+ for (const entry of entries) {
13
+ const absolutePath = join(directory, entry.name);
14
+ const relativePath = relative(projectRoot, absolutePath).replace(/\\/g, "/");
15
+ if (shouldIgnorePath(relativePath, entry.isDirectory(), projectRoot)) {
16
+ continue;
17
+ }
18
+ if (entry.isDirectory()) {
19
+ tasks.push(limit(() => visit(absolutePath)));
20
+ continue;
21
+ }
22
+ tasks.push(limit(async () => {
23
+ const metadata = await stat(absolutePath);
24
+ const content = await readFile(absolutePath, "utf8").catch(() => "");
25
+ files.push({
26
+ path: relativePath,
27
+ absolutePath,
28
+ extension: extname(entry.name).toLowerCase(),
29
+ size: metadata.size,
30
+ lines: content.length === 0 ? 0 : content.split(/\r?\n/).length,
31
+ content
32
+ });
33
+ }));
34
+ }
35
+ await Promise.all(tasks);
36
+ }
37
+ await visit(projectRoot);
38
+ // visit() recurses concurrently (pLimit), so files.push() order depends on
39
+ // I/O completion timing, not directory structure. Sort here so every
40
+ // downstream consumer (fileIndex ordering, onboarding path ties, etc.)
41
+ // gets a stable, reproducible order across runs on an unchanged project.
42
+ return files.sort((a, b) => a.path.localeCompare(b.path));
43
+ }
44
+ //# sourceMappingURL=fileScanner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fileScanner.js","sourceRoot":"","sources":["../../../src/analyzers/analysis/fileScanner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACpD,OAAO,MAAM,MAAM,SAAS,CAAC;AAC7B,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAWrD,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,WAAmB;IACjD,MAAM,KAAK,GAAkB,EAAE,CAAC;IAChC,MAAM,KAAK,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC;IAEzB,KAAK,UAAU,KAAK,CAAC,SAAiB;QACpC,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,SAAS,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;QAClE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QAErD,MAAM,KAAK,GAAoB,EAAE,CAAC;QAElC,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;YAC5B,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;YACjD,MAAM,YAAY,GAAG,QAAQ,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;YAE7E,IAAI,gBAAgB,CAAC,YAAY,EAAE,KAAK,CAAC,WAAW,EAAE,EAAE,WAAW,CAAC,EAAE,CAAC;gBACrE,SAAS;YACX,CAAC;YAED,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;gBACxB,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;gBAC7C,SAAS;YACX,CAAC;YAED,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE;gBAC1B,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,CAAC;gBAC1C,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;gBAErE,KAAK,CAAC,IAAI,CAAC;oBACT,IAAI,EAAE,YAAY;oBAClB,YAAY;oBACZ,SAAS,EAAE,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE;oBAC5C,IAAI,EAAE,QAAQ,CAAC,IAAI;oBACnB,KAAK,EAAE,OAAO,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,MAAM;oBAC/D,OAAO;iBACR,CAAC,CAAC;YACL,CAAC,CAAC,CAAC,CAAC;QACN,CAAC;QAED,MAAM,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAC3B,CAAC;IAED,MAAM,KAAK,CAAC,WAAW,CAAC,CAAC;IAEzB,2EAA2E;IAC3E,qEAAqE;IACrE,uEAAuE;IACvE,yEAAyE;IACzE,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AAC5D,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function shouldIgnorePath(p: string, isDirectory: boolean, projectRoot?: string): boolean;
2
+ //# sourceMappingURL=filterEngine.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"filterEngine.d.ts","sourceRoot":"","sources":["../../../src/analyzers/analysis/filterEngine.ts"],"names":[],"mappings":"AA6FA,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CA8B/F"}
@@ -0,0 +1,110 @@
1
+ import fs from "node:fs";
2
+ import path from "node:path";
3
+ import ignore from "ignore";
4
+ const IGNORED_DIRECTORIES = new Set([
5
+ ".git",
6
+ ".devmap",
7
+ ".agent",
8
+ ".agents",
9
+ ".next",
10
+ ".turbo",
11
+ ".vercel",
12
+ ".astro",
13
+ ".svelte-kit",
14
+ ".nuxt",
15
+ ".output",
16
+ ".cache",
17
+ ".yarn",
18
+ "build",
19
+ "coverage",
20
+ "dist",
21
+ "node_modules",
22
+ "out",
23
+ "venv",
24
+ ".venv",
25
+ "__pycache__"
26
+ ]);
27
+ const IGNORED_EXTENSIONS = new Set([
28
+ ".lock",
29
+ ".log",
30
+ ".map",
31
+ ".png",
32
+ ".jpg",
33
+ ".jpeg",
34
+ ".gif",
35
+ ".webp",
36
+ ".ico",
37
+ ".pdf",
38
+ ".zip",
39
+ ".woff",
40
+ ".woff2",
41
+ ".ttf",
42
+ ".eot",
43
+ ".mp4",
44
+ ".mov",
45
+ ".mp3",
46
+ ".wav",
47
+ ".wasm"
48
+ ]);
49
+ const IGNORED_FILES = new Set([
50
+ "package-lock.json",
51
+ "npm-shrinkwrap.json",
52
+ "pnpm-lock.yaml",
53
+ "yarn.lock",
54
+ "bun.lock",
55
+ "bun.lockb"
56
+ ]);
57
+ const gitignoreCache = new Map();
58
+ function loadGitignore(projectRoot) {
59
+ const resolvedRoot = path.resolve(projectRoot);
60
+ if (gitignoreCache.has(resolvedRoot))
61
+ return;
62
+ const ig = ignore();
63
+ const gitignorePath = path.join(resolvedRoot, ".gitignore");
64
+ try {
65
+ ig.add(fs.readFileSync(gitignorePath, "utf8"));
66
+ }
67
+ catch {
68
+ // no .gitignore
69
+ }
70
+ const excludePath = path.join(resolvedRoot, ".git", "info", "exclude");
71
+ try {
72
+ ig.add(fs.readFileSync(excludePath, "utf8"));
73
+ }
74
+ catch {
75
+ // no .git/info/exclude
76
+ }
77
+ gitignoreCache.set(resolvedRoot, ig);
78
+ }
79
+ function getGitignore(projectRoot) {
80
+ const resolvedRoot = path.resolve(projectRoot);
81
+ if (!gitignoreCache.has(resolvedRoot)) {
82
+ loadGitignore(resolvedRoot);
83
+ }
84
+ return gitignoreCache.get(resolvedRoot);
85
+ }
86
+ export function shouldIgnorePath(p, isDirectory, projectRoot) {
87
+ const resolvedRoot = projectRoot ?? process.cwd();
88
+ const segments = p.split("/");
89
+ if (segments.some((segment) => IGNORED_DIRECTORIES.has(segment))) {
90
+ return true;
91
+ }
92
+ if (!isDirectory && IGNORED_FILES.has(segments.at(-1) ?? "")) {
93
+ return true;
94
+ }
95
+ if (p.startsWith(".env") || p.includes("/.env")) {
96
+ return true;
97
+ }
98
+ if (p.includes("public/assets/") || p.endsWith(".min.js") || p.endsWith(".min.ts")) {
99
+ return true;
100
+ }
101
+ if (!isDirectory && [...IGNORED_EXTENSIONS].some((ext) => p.endsWith(ext))) {
102
+ return true;
103
+ }
104
+ const ig = getGitignore(resolvedRoot);
105
+ if (ig.ignores(isDirectory ? `${p}/` : p)) {
106
+ return true;
107
+ }
108
+ return false;
109
+ }
110
+ //# sourceMappingURL=filterEngine.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"filterEngine.js","sourceRoot":"","sources":["../../../src/analyzers/analysis/filterEngine.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ export { scanFiles, } from "./fileScanner.js";
2
+ export type { ScannedFile, } from "./fileScanner.js";
3
+ export { classifyFileRole, isDocumentationMeta, isTechnicalFeatureSource, isArchitecturalRole, } from "./fileRole.js";
4
+ export type { FileRole, } from "./fileRole.js";
5
+ export type { AnalysisConfidence, SymbolKind, SymbolInfo, FunctionInfo, FileAnalysis, AnalyzerContext, FileAnalyzer, } from "./fileAnalysis.js";
6
+ export { TsMorphAnalyzer, } from "./tsMorphAnalyzer.js";
7
+ export { shouldIgnorePath, } from "./filterEngine.js";
8
+ export { PrismaExtractor, } from "./extractors/prismaExtractor.js";
9
+ export { RouteFallbackExtractor, } from "./extractors/fallbackExtractor.js";
10
+ export { extractEntities, } from "./extractors/index.js";
11
+ export type { EntityInfo, FieldInfo, RelationInfo, EntityGraph, IEntityExtractor, IRouteFallbackExtractor, } from "./extractors/types.js";
12
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/analyzers/analysis/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,SAAS,GACV,MAAM,kBAAkB,CAAC;AAC1B,YAAY,EACV,WAAW,GACZ,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EACL,gBAAgB,EAChB,mBAAmB,EACnB,wBAAwB,EACxB,mBAAmB,GACpB,MAAM,eAAe,CAAC;AACvB,YAAY,EACV,QAAQ,GACT,MAAM,eAAe,CAAC;AAEvB,YAAY,EACV,kBAAkB,EAClB,UAAU,EACV,UAAU,EACV,YAAY,EACZ,YAAY,EACZ,eAAe,EACf,YAAY,GACb,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EACL,eAAe,GAChB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACL,gBAAgB,GACjB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EACL,eAAe,GAChB,MAAM,iCAAiC,CAAC;AACzC,OAAO,EACL,sBAAsB,GACvB,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EACL,eAAe,GAChB,MAAM,uBAAuB,CAAC;AAC/B,YAAY,EACV,UAAU,EACV,SAAS,EACT,YAAY,EACZ,WAAW,EACX,gBAAgB,EAChB,uBAAuB,GACxB,MAAM,uBAAuB,CAAC"}
@@ -0,0 +1,8 @@
1
+ export { scanFiles, } from "./fileScanner.js";
2
+ export { classifyFileRole, isDocumentationMeta, isTechnicalFeatureSource, isArchitecturalRole, } from "./fileRole.js";
3
+ export { TsMorphAnalyzer, } from "./tsMorphAnalyzer.js";
4
+ export { shouldIgnorePath, } from "./filterEngine.js";
5
+ export { PrismaExtractor, } from "./extractors/prismaExtractor.js";
6
+ export { RouteFallbackExtractor, } from "./extractors/fallbackExtractor.js";
7
+ export { extractEntities, } from "./extractors/index.js";
8
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/analyzers/analysis/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,SAAS,GACV,MAAM,kBAAkB,CAAC;AAK1B,OAAO,EACL,gBAAgB,EAChB,mBAAmB,EACnB,wBAAwB,EACxB,mBAAmB,GACpB,MAAM,eAAe,CAAC;AAevB,OAAO,EACL,eAAe,GAChB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACL,gBAAgB,GACjB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EACL,eAAe,GAChB,MAAM,iCAAiC,CAAC;AACzC,OAAO,EACL,sBAAsB,GACvB,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EACL,eAAe,GAChB,MAAM,uBAAuB,CAAC"}
@@ -0,0 +1,23 @@
1
+ import type { ExtractedScript, LanguagePreprocessor } from "./types.js";
2
+ /**
3
+ * AstroPreprocessor — extracts the frontmatter block from Astro components.
4
+ *
5
+ * Astro uses a fenced frontmatter syntax (like MDX/markdown):
6
+ *
7
+ * ---
8
+ * import Component from "./Component.astro";
9
+ * const title = "Hello";
10
+ * ---
11
+ * <html>...</html>
12
+ *
13
+ * The frontmatter is always TypeScript by default in Astro — no lang attribute needed.
14
+ * It supports full TS syntax including imports, exports, type annotations, etc.
15
+ *
16
+ * Returns null for markup-only .astro files with no frontmatter fences.
17
+ * These are valid — simple Astro components often have no JS at all.
18
+ */
19
+ export declare class AstroPreprocessor implements LanguagePreprocessor {
20
+ readonly extensions: string[];
21
+ extract(content: string, _filePath: string): ExtractedScript | null;
22
+ }
23
+ //# sourceMappingURL=astroPreprocessor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"astroPreprocessor.d.ts","sourceRoot":"","sources":["../../../../src/analyzers/analysis/preprocessors/astroPreprocessor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAExE;;;;;;;;;;;;;;;;GAgBG;AACH,qBAAa,iBAAkB,YAAW,oBAAoB;IAC5D,QAAQ,CAAC,UAAU,WAAc;IAEjC,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,eAAe,GAAG,IAAI;CAoBpE"}
@@ -0,0 +1,40 @@
1
+ /**
2
+ * AstroPreprocessor — extracts the frontmatter block from Astro components.
3
+ *
4
+ * Astro uses a fenced frontmatter syntax (like MDX/markdown):
5
+ *
6
+ * ---
7
+ * import Component from "./Component.astro";
8
+ * const title = "Hello";
9
+ * ---
10
+ * <html>...</html>
11
+ *
12
+ * The frontmatter is always TypeScript by default in Astro — no lang attribute needed.
13
+ * It supports full TS syntax including imports, exports, type annotations, etc.
14
+ *
15
+ * Returns null for markup-only .astro files with no frontmatter fences.
16
+ * These are valid — simple Astro components often have no JS at all.
17
+ */
18
+ export class AstroPreprocessor {
19
+ extensions = [".astro"];
20
+ extract(content, _filePath) {
21
+ // Match content between opening and closing "---" fences.
22
+ // Must be at the very start of the file (^ with multiline flag).
23
+ // \r?\n handles both Unix and Windows line endings.
24
+ const match = content.match(/^---\r?\n([\s\S]*?)\r?\n---/);
25
+ if (!match)
26
+ return null;
27
+ const code = match[1];
28
+ if (!code.trim())
29
+ return null;
30
+ // Frontmatter always starts at line 1 (after the opening "---\n")
31
+ const lineOffset = 1;
32
+ return {
33
+ code,
34
+ language: "ts", // Astro frontmatter is always TypeScript
35
+ lineOffset,
36
+ virtualExtension: ".ts"
37
+ };
38
+ }
39
+ }
40
+ //# sourceMappingURL=astroPreprocessor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"astroPreprocessor.js","sourceRoot":"","sources":["../../../../src/analyzers/analysis/preprocessors/astroPreprocessor.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,OAAO,iBAAiB;IACnB,UAAU,GAAG,CAAC,QAAQ,CAAC,CAAC;IAEjC,OAAO,CAAC,OAAe,EAAE,SAAiB;QACxC,0DAA0D;QAC1D,iEAAiE;QACjE,oDAAoD;QACpD,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAC;QAC3D,IAAI,CAAC,KAAK;YAAE,OAAO,IAAI,CAAC;QAExB,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QACtB,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;YAAE,OAAO,IAAI,CAAC;QAE9B,kEAAkE;QAClE,MAAM,UAAU,GAAG,CAAC,CAAC;QAErB,OAAO;YACL,IAAI;YACJ,QAAQ,EAAE,IAAI,EAAE,yCAAyC;YACzD,UAAU;YACV,gBAAgB,EAAE,KAAK;SACxB,CAAC;IACJ,CAAC;CACF"}