@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
package/dist/index.js ADDED
@@ -0,0 +1,104 @@
1
+ #!/usr/bin/env node
2
+ import { Command } from "commander";
3
+ import { analyzeCommand } from "./commands/analyze.js";
4
+ import { configModelCommand } from "./commands/config.js";
5
+ import { doctorCommand } from "./commands/doctor.js";
6
+ import { explainCommand } from "./commands/explain.js";
7
+ import { flowCommand } from "./commands/flow.js";
8
+ import { initCommand } from "./commands/init.js";
9
+ import { mapCommand } from "./commands/map.js";
10
+ import { onboardingCommand } from "./commands/onboarding.js";
11
+ import { printHelp } from "./utils/help.js";
12
+ import { printWelcome } from "./utils/welcome.js";
13
+ import { runSafely } from "./utils/errors.js";
14
+ import { DEVMAP_VERSION } from "./utils/packageMetadata.js";
15
+ const program = new Command();
16
+ program
17
+ .name("devmap")
18
+ .description("Understand any codebase in minutes, not days.")
19
+ .version(DEVMAP_VERSION);
20
+ program
21
+ .command("init")
22
+ .description("Initialize DevMap configuration")
23
+ .option("--json", "output machine-readable JSON")
24
+ .action((options) => initCommand({ json: options.json }));
25
+ program
26
+ .command("analyze")
27
+ .description("Analyze project structure and generate a static project map")
28
+ .argument("[target]", "folder to analyze", ".")
29
+ .option("--fresh", "ignore cache and run a fresh analysis")
30
+ .option("--json", "output machine-readable JSON")
31
+ .action((target, options) => analyzeCommand(target, options));
32
+ program
33
+ .command("onboarding")
34
+ .alias("onboard")
35
+ .description("Generate a project onboarding guide from the DevMap snapshot")
36
+ .argument("[target]", "folder with a DevMap snapshot", ".")
37
+ .option("--write", "write ONBOARDING.md")
38
+ .option("--language <language>", "language for generated onboarding markdown (en or id)")
39
+ .option("--json", "output machine-readable JSON")
40
+ .action((target, options) => onboardingCommand({
41
+ target,
42
+ language: options.language,
43
+ write: options.write,
44
+ json: options.json
45
+ }));
46
+ program
47
+ .command("map")
48
+ .description("Map dependencies: full project, one feature, or one file")
49
+ .argument("[target]", "feature name or file path — omit for a full project map")
50
+ .option("--depth <n>", "override traversal depth for file/feature mode", (value) => Number.parseInt(value, 10))
51
+ .option("--all", "show everything, untruncated — full file-level dump in project mode; uncapped fan-in/fan-out lists in file/feature mode")
52
+ .option("--json", "output machine-readable JSON")
53
+ .action((target, options) => mapCommand(target, {
54
+ json: options.json,
55
+ depth: options.depth,
56
+ all: options.all
57
+ }));
58
+ program
59
+ .command("flow")
60
+ .description("Trace how a feature or API route works end to end")
61
+ .argument("[target]", "feature or flow name — omit for curated top flows")
62
+ .option("--all", "include lower-confidence features and non-API routes, uncapped")
63
+ .option("--json", "output machine-readable JSON")
64
+ .action((target, options) => flowCommand(target, { json: options.json, all: options.all }));
65
+ program
66
+ .command("explain")
67
+ .description("Ask what a specific file, feature, or function does")
68
+ .argument("<target>", "file path, feature name, or function name")
69
+ .option("--write", "also write .devmap/explain/<name>.md")
70
+ .option("--json", "output machine-readable JSON")
71
+ .action((target, options) => explainCommand(target, {
72
+ json: options.json,
73
+ write: options.write
74
+ }));
75
+ const configCommand = program
76
+ .command("config")
77
+ .description("Update DevMap configuration");
78
+ configCommand
79
+ .command("model")
80
+ .description("Set a model override or restore automatic routing")
81
+ .argument("<model>", "Groq model ID or auto")
82
+ .option("--local", "write a project-local override to .devmap/config.local.json")
83
+ .option("--json", "output machine-readable JSON")
84
+ .action((model, options) => configModelCommand(model, {
85
+ json: options.json,
86
+ local: options.local
87
+ }));
88
+ program
89
+ .command("doctor")
90
+ .description("Diagnose DevMap setup")
91
+ .option("--json", "output machine-readable JSON")
92
+ .action((options) => doctorCommand({ json: options.json }));
93
+ await runSafely(async () => {
94
+ if (process.argv.length === 2) {
95
+ printWelcome(process.cwd());
96
+ return;
97
+ }
98
+ if (process.argv.length === 3 && ["--help", "-h", "help"].includes(process.argv[2])) {
99
+ printHelp(program);
100
+ return;
101
+ }
102
+ await program.parseAsync(process.argv);
103
+ });
104
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ export type OnboardingLanguage = "en" | "id";
2
+ export interface StartHereItem {
3
+ path: string;
4
+ reason: string;
5
+ order: number;
6
+ }
7
+ export interface FeatureSummary {
8
+ name: string;
9
+ what: string;
10
+ entryFile?: string;
11
+ }
12
+ export interface ConceptualStep {
13
+ step: string;
14
+ }
15
+ export interface OnboardingModel {
16
+ language: OnboardingLanguage;
17
+ projectName: string;
18
+ tagline: string;
19
+ stackLine: string;
20
+ whatThisIs: string;
21
+ howItWorks: ConceptualStep[];
22
+ features: FeatureSummary[];
23
+ startHere: StartHereItem[];
24
+ generatedAt: string;
25
+ isStale: boolean;
26
+ }
27
+ //# sourceMappingURL=model.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../../src/onboarding/model.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,kBAAkB,GAAG,IAAI,GAAG,IAAI,CAAC;AAE7C,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,kBAAkB,CAAC;IAE7B,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAElB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,cAAc,EAAE,CAAC;IAC7B,QAAQ,EAAE,cAAc,EAAE,CAAC;IAC3B,SAAS,EAAE,aAAa,EAAE,CAAC;IAE3B,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,OAAO,CAAC;CAClB"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=model.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"model.js","sourceRoot":"","sources":["../../src/onboarding/model.ts"],"names":[],"mappings":""}
@@ -0,0 +1,4 @@
1
+ import type { ProjectMap } from "../analyzers/pipeline/index.js";
2
+ import type { OnboardingLanguage, OnboardingModel } from "./model.js";
3
+ export declare function buildOnboardingModel(snapshot: ProjectMap, language: OnboardingLanguage): OnboardingModel;
4
+ //# sourceMappingURL=modelBuilder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"modelBuilder.d.ts","sourceRoot":"","sources":["../../src/onboarding/modelBuilder.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AACjE,OAAO,KAAK,EACV,kBAAkB,EAClB,eAAe,EAIhB,MAAM,YAAY,CAAC;AAEpB,wBAAgB,oBAAoB,CAClC,QAAQ,EAAE,UAAU,EACpB,QAAQ,EAAE,kBAAkB,GAC3B,eAAe,CAajB"}
@@ -0,0 +1,330 @@
1
+ import { REASON_TAGS } from "../analyzers/pipeline/reasonTags.js";
2
+ export function buildOnboardingModel(snapshot, language) {
3
+ return {
4
+ language,
5
+ projectName: snapshot.project.name || "project",
6
+ tagline: buildTagline(snapshot, language),
7
+ stackLine: buildStackLine(snapshot),
8
+ whatThisIs: buildWhatThisIs(snapshot, language),
9
+ howItWorks: buildHowItWorks(snapshot, language),
10
+ features: buildFeatureSummaries(snapshot, language),
11
+ startHere: buildStartHere(snapshot, language),
12
+ generatedAt: snapshot.generatedAt,
13
+ isStale: false,
14
+ };
15
+ }
16
+ function buildTagline(snapshot, language) {
17
+ if (snapshot.domain?.summary && snapshot.domain.summary.trim().length > 0) {
18
+ const firstSentence = snapshot.domain.summary.split(/\.\s+/)[0];
19
+ return firstSentence.endsWith(".") ? firstSentence : `${firstSentence}.`;
20
+ }
21
+ const ownershipHint = resolveOwnershipHint(snapshot, language);
22
+ const primaryFeature = snapshot.features[0];
23
+ if (ownershipHint && primaryFeature) {
24
+ return language === "id"
25
+ ? `${ownershipHint} dengan ${primaryFeature.name.toLowerCase()} sebagai fitur utama.`
26
+ : `${ownershipHint} with ${primaryFeature.name.toLowerCase()} as the core feature.`;
27
+ }
28
+ if (primaryFeature && snapshot.project.framework !== "unknown") {
29
+ return language === "id"
30
+ ? `Aplikasi ${snapshot.project.framework} untuk ${primaryFeature.name.toLowerCase()}.`
31
+ : `${snapshot.project.framework} app for ${primaryFeature.name.toLowerCase()}.`;
32
+ }
33
+ const fw = snapshot.project.framework !== "unknown" ? snapshot.project.framework : "application";
34
+ return language === "id"
35
+ ? `${snapshot.project.name || "Project"} — aplikasi ${fw}.`
36
+ : `${snapshot.project.name || "Project"} — ${fw} application.`;
37
+ }
38
+ function resolveOwnershipHint(snapshot, language) {
39
+ const caps = snapshot.capabilities ?? [];
40
+ const hasSharing = caps.some((c) => c.kind === "sharing" || c.kind === "collaboration");
41
+ const hasRealtime = caps.some((c) => c.kind === "real-time");
42
+ const hasSocial = caps.some((c) => c.kind === "social");
43
+ const domainPattern = snapshot.domain?.ownershipPattern;
44
+ if (domainPattern === "single_user_isolated" || (!hasSharing && !hasRealtime && !hasSocial)) {
45
+ return language === "id" ? "Aplikasi personal" : "Personal app";
46
+ }
47
+ if (domainPattern === "direct_messaging") {
48
+ return language === "id" ? "Platform pesan langsung" : "Direct messaging platform";
49
+ }
50
+ if (hasSharing || hasRealtime || hasSocial) {
51
+ return language === "id" ? "Aplikasi kolaborasi" : "Collaborative app";
52
+ }
53
+ return null;
54
+ }
55
+ function buildStackLine(snapshot) {
56
+ const parts = [];
57
+ if (snapshot.project.language && snapshot.project.language !== "unknown") {
58
+ parts.push(capitalize(snapshot.project.language));
59
+ }
60
+ if (snapshot.project.framework && snapshot.project.framework !== "unknown") {
61
+ parts.push(capitalize(snapshot.project.framework));
62
+ }
63
+ if (snapshot.database?.provider) {
64
+ parts.push(capitalize(snapshot.database.provider));
65
+ }
66
+ for (const service of snapshot.externalServices.slice(0, 2)) {
67
+ parts.push(capitalize(service));
68
+ }
69
+ return parts.slice(0, 5).join(" · ");
70
+ }
71
+ function buildWhatThisIs(snapshot, language) {
72
+ const sentences = [];
73
+ const name = snapshot.project.name || (language === "id" ? "Project ini" : "This project");
74
+ const features = snapshot.features.map((f) => f.name);
75
+ if (snapshot.ai?.architecture) {
76
+ sentences.push(snapshot.ai.architecture);
77
+ }
78
+ else if (features.length > 0) {
79
+ const topFeatures = features.slice(0, 3).map((f) => f.toLowerCase()).join(", ");
80
+ sentences.push(language === "id"
81
+ ? `${name} menangani ${topFeatures}.`
82
+ : `${name} handles ${topFeatures}.`);
83
+ }
84
+ const domainPattern = snapshot.domain?.ownershipPattern;
85
+ if (domainPattern === "single_user_isolated") {
86
+ sentences.push(language === "id"
87
+ ? "Semua data terisolasi per user — tidak ada fitur sharing atau kolaborasi antar akun."
88
+ : "All data is user-isolated — there is no sharing or cross-account collaboration.");
89
+ }
90
+ else if (domainPattern === "shared_access") {
91
+ sentences.push(language === "id"
92
+ ? "Project ini mendukung akses bersama — beberapa user bisa berkolaborasi pada data yang sama."
93
+ : "This project supports shared access — multiple users can collaborate on the same data.");
94
+ }
95
+ const entityNames = snapshot.entityGraph?.entityNames ?? [];
96
+ const hasMisleadingChat = entityNames.includes("Message") && domainPattern === "single_user_isolated";
97
+ if (hasMisleadingChat) {
98
+ const roomEntity = entityNames.find((e) => e === "Room" || e === "Channel" || e === "Thread");
99
+ if (roomEntity) {
100
+ sentences.push(language === "id"
101
+ ? `"${roomEntity}" adalah wadah (seperti folder), dan "Message" adalah isinya — bukan komunikasi antar user.`
102
+ : `"${roomEntity}" acts as a container (like a folder), and "Message" is its content — not inter-user communication.`);
103
+ }
104
+ }
105
+ if (snapshot.externalServices.length > 0) {
106
+ const services = snapshot.externalServices.slice(0, 2).join(", ");
107
+ sentences.push(language === "id"
108
+ ? `Terhubung ke ${services}.`
109
+ : `Integrates with ${services}.`);
110
+ }
111
+ return sentences.slice(0, 4).join(" ");
112
+ }
113
+ function buildHowItWorks(snapshot, language) {
114
+ const hasAuth = snapshot.features.some((f) => f.name === "Authentication");
115
+ const hasRoutes = snapshot.routes.length > 0 || snapshot.apiRoutes.length > 0;
116
+ const hasDatabase = Boolean(snapshot.database);
117
+ const isCli = snapshot.project.projectTypes.includes("node-cli")
118
+ || Object.values(snapshot.fileIndex).some((e) => e.scope === "cli");
119
+ const domainPattern = snapshot.domain?.ownershipPattern;
120
+ if (isCli) {
121
+ return buildCliFlow(snapshot, language);
122
+ }
123
+ if (hasAuth && hasRoutes) {
124
+ return buildAuthWebAppFlow(snapshot, language, domainPattern, hasDatabase);
125
+ }
126
+ if (hasRoutes) {
127
+ return buildPublicWebAppFlow(snapshot, language, hasDatabase);
128
+ }
129
+ return buildGenericFlow(snapshot, language);
130
+ }
131
+ function buildCliFlow(snapshot, language) {
132
+ const commands = snapshot.features
133
+ .filter((f) => f.name === "CLI Commands" || f.name.toLowerCase().includes("command"))
134
+ .map((f) => f.name);
135
+ if (language === "id") {
136
+ return [
137
+ { step: "User menjalankan command dari terminal." },
138
+ { step: "CLI membaca konfigurasi dan menentukan proses yang dibutuhkan." },
139
+ { step: commands.length > 0 ? `Command yang tersedia: ${commands.slice(0, 3).join(", ")}.` : "Command memproses input dan menghasilkan output." },
140
+ { step: "Hasil disimpan atau ditampilkan sesuai flag yang diberikan." },
141
+ ];
142
+ }
143
+ return [
144
+ { step: "User runs a command from the terminal." },
145
+ { step: "The CLI reads configuration and determines the required process." },
146
+ { step: commands.length > 0 ? `Available commands include: ${commands.slice(0, 3).join(", ")}.` : "Commands process input and produce output." },
147
+ { step: "Results are saved or displayed based on the given flags." },
148
+ ];
149
+ }
150
+ function buildAuthWebAppFlow(snapshot, language, ownershipPattern, hasDatabase) {
151
+ const entities = snapshot.entityGraph?.entityNames
152
+ .filter((e) => !["User", "Session", "Account", "VerificationToken"].includes(e))
153
+ .slice(0, 2) ?? [];
154
+ if (language === "id") {
155
+ const steps = [
156
+ { step: "User login — semua aksi butuh sesi aktif." },
157
+ ];
158
+ if (entities.length > 0) {
159
+ steps.push({ step: `User membuat atau mengelola ${entities[0].toLowerCase()}${entities[1] ? ` yang berisi ${entities[1].toLowerCase()}` : ""}.` });
160
+ }
161
+ if (ownershipPattern === "single_user_isolated") {
162
+ steps.push({ step: "Semua data milik user yang login — tidak ada akses lintas akun." });
163
+ }
164
+ else if (ownershipPattern === "shared_access") {
165
+ steps.push({ step: "Data bisa diakses bersama antar user yang punya izin." });
166
+ }
167
+ if (hasDatabase) {
168
+ steps.push({ step: "Perubahan data disimpan langsung ke database — tidak ada state sementara." });
169
+ }
170
+ steps.push({ step: "Response dikembalikan ke client — UI diperbarui sesuai hasil operasi." });
171
+ return steps.slice(0, 5);
172
+ }
173
+ const steps = [
174
+ { step: "User logs in — all actions require an active session." },
175
+ ];
176
+ if (entities.length > 0) {
177
+ steps.push({ step: `User creates or manages ${entities[0].toLowerCase()}${entities[1] ? ` that contain ${entities[1].toLowerCase()}` : ""}.` });
178
+ }
179
+ if (ownershipPattern === "single_user_isolated") {
180
+ steps.push({ step: "All data belongs to the logged-in user — no cross-account access." });
181
+ }
182
+ else if (ownershipPattern === "shared_access") {
183
+ steps.push({ step: "Data can be shared across users with appropriate permissions." });
184
+ }
185
+ if (hasDatabase) {
186
+ steps.push({ step: "Data changes are persisted directly to the database." });
187
+ }
188
+ steps.push({ step: "A response is returned to the client — UI updates to reflect the result." });
189
+ return steps.slice(0, 5);
190
+ }
191
+ function buildPublicWebAppFlow(snapshot, language, hasDatabase) {
192
+ if (language === "id") {
193
+ return [
194
+ { step: "User membuka halaman atau mengirim request ke API." },
195
+ { step: "Server memproses request dan menjalankan logic yang sesuai." },
196
+ ...(hasDatabase ? [{ step: "Data dibaca dari atau ditulis ke database." }] : []),
197
+ { step: "Response dikembalikan — halaman dirender atau data dikirim ke client." },
198
+ ].slice(0, 5);
199
+ }
200
+ return [
201
+ { step: "User opens a page or sends a request to the API." },
202
+ { step: "The server processes the request and runs the relevant logic." },
203
+ ...(hasDatabase ? [{ step: "Data is read from or written to the database." }] : []),
204
+ { step: "A response is returned — the page renders or data is sent to the client." },
205
+ ].slice(0, 5);
206
+ }
207
+ function buildGenericFlow(snapshot, language) {
208
+ if (language === "id") {
209
+ return [
210
+ { step: "Program dimulai dari entry point utama." },
211
+ { step: "Module dan dependency dimuat sesuai kebutuhan." },
212
+ { step: "Logic utama dijalankan berdasarkan input atau konfigurasi." },
213
+ { step: "Output dihasilkan sesuai tujuan program." },
214
+ ];
215
+ }
216
+ return [
217
+ { step: "The program starts from the main entry point." },
218
+ { step: "Modules and dependencies are loaded as needed." },
219
+ { step: "Core logic runs based on input or configuration." },
220
+ { step: "Output is produced according to the program's purpose." },
221
+ ];
222
+ }
223
+ function buildFeatureSummaries(snapshot, language) {
224
+ return snapshot.features.map((feature) => ({
225
+ name: feature.name,
226
+ what: buildFeatureWhat(feature, language),
227
+ entryFile: feature.entryPoint ?? feature.entryPoints?.[0],
228
+ }));
229
+ }
230
+ function buildFeatureWhat(feature, language) {
231
+ if (feature.purpose && !isBoilerplatePurpose(feature.purpose)) {
232
+ return feature.purpose.split(/\.\s+/)[0] + ".";
233
+ }
234
+ const name = feature.name.toLowerCase();
235
+ if (language === "id") {
236
+ return `Menangani ${name} dalam project.`;
237
+ }
238
+ return `Handles ${name} for the project.`;
239
+ }
240
+ function isBoilerplatePurpose(purpose) {
241
+ return /\b(exposes|contains project code|identifies .* capability|detected as)\b/i.test(purpose);
242
+ }
243
+ function buildStartHere(snapshot, language) {
244
+ const items = new Map();
245
+ let order = 1;
246
+ const add = (path, reason) => {
247
+ if (!path || items.has(path))
248
+ return;
249
+ if (!isReadableSourceFile(path))
250
+ return;
251
+ items.set(path, { path, reason, order: order++ });
252
+ };
253
+ const authFeature = snapshot.features.find((f) => f.name === "Authentication");
254
+ if (authFeature?.entryPoint) {
255
+ add(authFeature.entryPoint, language === "id"
256
+ ? "Pahami siapa yang boleh akses apa sebelum membaca yang lain"
257
+ : "Understand who can access what before reading anything else");
258
+ }
259
+ const schemaFile = Object.keys(snapshot.fileIndex).find((p) => /schema\.prisma$/.test(p));
260
+ if (schemaFile) {
261
+ add(schemaFile, language === "id"
262
+ ? "Pahami struktur data dan relasi antar entity"
263
+ : "Understand the data model and entity relationships");
264
+ }
265
+ for (const ep of snapshot.entryPoints.slice(0, 2)) {
266
+ add(ep, language === "id"
267
+ ? "Titik awal eksekusi — lihat command atau route yang tersedia"
268
+ : "Execution entry point — see available commands or routes");
269
+ }
270
+ const sortedFeatures = [...snapshot.features]
271
+ .filter((f) => f.name !== "Authentication")
272
+ .filter((f) => f.confidence === "high" || f.confidence === "medium")
273
+ .slice(0, 5);
274
+ for (const feature of sortedFeatures) {
275
+ const ep = feature.entryPoint ?? feature.entryPoints?.[0];
276
+ if (ep) {
277
+ add(ep, language === "id"
278
+ ? `Entry point untuk ${feature.name.toLowerCase()}`
279
+ : `Entry point for ${feature.name.toLowerCase()}`);
280
+ }
281
+ }
282
+ for (const critical of snapshot.criticalFiles.slice(0, 4)) {
283
+ if (!items.has(critical.path)) {
284
+ const reason = buildCriticalFileReason(critical, snapshot, language);
285
+ add(critical.path, reason);
286
+ }
287
+ }
288
+ for (const path of snapshot.onboarding.recommendedPath) {
289
+ if (!items.has(path)) {
290
+ add(path, language === "id"
291
+ ? "File penting untuk memahami konteks project"
292
+ : "Important file for understanding project context");
293
+ }
294
+ }
295
+ return Array.from(items.values());
296
+ }
297
+ function buildCriticalFileReason(critical, snapshot, language) {
298
+ const reasons = critical.reasons;
299
+ if (reasons.includes(REASON_TAGS.CORE_EXECUTION_RESPONSIBILITY)) {
300
+ return language === "id"
301
+ ? "File ini dijalankan pertama kali saat project start"
302
+ : "This file runs first when the project starts";
303
+ }
304
+ if (reasons.includes(REASON_TAGS.CORE_PROJECT_CONCERN)) {
305
+ return language === "id"
306
+ ? "Concern inti project — banyak bagian lain bergantung ke sini"
307
+ : "Core project concern — many other parts depend on this";
308
+ }
309
+ if (critical.referencedBy > 5) {
310
+ return language === "id"
311
+ ? `Diimport oleh ${critical.referencedBy} file lain — sangat central`
312
+ : `Imported by ${critical.referencedBy} other files — highly central`;
313
+ }
314
+ return language === "id"
315
+ ? "File penting berdasarkan struktur dependency project"
316
+ : "Important file based on the project dependency structure";
317
+ }
318
+ function isReadableSourceFile(path) {
319
+ const lower = path.toLowerCase();
320
+ return !(/\/(prisma\/)?migrations?\//.test(lower)
321
+ || /\.sql$/.test(lower)
322
+ || /\/generated\//.test(lower)
323
+ || /\.generated\./.test(lower)
324
+ || /\.(lock|log|map|d\.ts)$/.test(lower)
325
+ || /\.(png|jpg|jpeg|gif|svg|ico|webp)$/.test(lower));
326
+ }
327
+ function capitalize(str) {
328
+ return str.charAt(0).toUpperCase() + str.slice(1);
329
+ }
330
+ //# sourceMappingURL=modelBuilder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"modelBuilder.js","sourceRoot":"","sources":["../../src/onboarding/modelBuilder.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ export declare const DEVMAP_AGENTS_BLOCK = "<!-- DevMap Instruction Block -->\n## DevMap Context\n\nBefore working in this repository, read `DEVMAP.md` for project metadata and available commands.\n\n### Navigation\n\n1. Read `.devmap/index.json`.\n2. Pick the relevant feature by name or keywords.\n3. Open the matching `.devmap/features/*.json` map.\n4. Inspect only files listed in `sourcePriority` first.\n5. Fall back to `.devmap/snapshot.json` only when index and feature maps are insufficient.\n\nDo not scan the whole repository. Open source files only when:\n- the snapshot is missing or stale\n- the snapshot lacks enough detail for the task\n- the task requires edit, debug, or refactor\n- the user explicitly asks for code changes\n\nWhen source inspection is needed, inspect the smallest relevant set first.\n\n### Maintenance\n\n- If `.devmap/index.json` is missing, run `devmap analyze`.\n- If the snapshot may be stale, run `devmap analyze --fresh`.\n- Use `--json` when calling DevMap programmatically.\n- Do not edit files inside `.devmap/`.\n- Never commit API keys or provider credentials.\n<!-- End DevMap Instruction Block -->";
2
+ export type AgentsFileStatus = "missing" | "existing" | "integrated";
3
+ export type AgentsFileResult = "created" | "appended" | "unchanged" | "skipped";
4
+ export declare function inspectAgentsFile(projectRoot: string): Promise<AgentsFileStatus>;
5
+ export declare function ensureAgentsFile(projectRoot: string, appendToExisting: boolean): Promise<AgentsFileResult>;
6
+ //# sourceMappingURL=agentsFile.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agentsFile.d.ts","sourceRoot":"","sources":["../../src/utils/agentsFile.ts"],"names":[],"mappings":"AAOA,eAAO,MAAM,mBAAmB,qlCA4BM,CAAC;AAEvC,MAAM,MAAM,gBAAgB,GAAG,SAAS,GAAG,UAAU,GAAG,YAAY,CAAC;AACrE,MAAM,MAAM,gBAAgB,GAAG,SAAS,GAAG,UAAU,GAAG,WAAW,GAAG,SAAS,CAAC;AAEhF,wBAAsB,iBAAiB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC,CA0BtF;AAED,wBAAsB,gBAAgB,CACpC,WAAW,EAAE,MAAM,EACnB,gBAAgB,EAAE,OAAO,GACxB,OAAO,CAAC,gBAAgB,CAAC,CAiC3B"}
@@ -0,0 +1,85 @@
1
+ import { appendFile, lstat, readFile, writeFile } from "node:fs/promises";
2
+ import { join } from "node:path";
3
+ import { DevmapError } from "./errors.js";
4
+ const DEVMAP_AGENTS_MARKER = "<!-- DevMap Instruction Block -->";
5
+ const LEGACY_DEVMAP_AGENTS_MARKER = "<!-- DEVMap Instruction Block -->";
6
+ export const DEVMAP_AGENTS_BLOCK = `${DEVMAP_AGENTS_MARKER}
7
+ ## DevMap Context
8
+
9
+ Before working in this repository, read \`DEVMAP.md\` for project metadata and available commands.
10
+
11
+ ### Navigation
12
+
13
+ 1. Read \`.devmap/index.json\`.
14
+ 2. Pick the relevant feature by name or keywords.
15
+ 3. Open the matching \`.devmap/features/*.json\` map.
16
+ 4. Inspect only files listed in \`sourcePriority\` first.
17
+ 5. Fall back to \`.devmap/snapshot.json\` only when index and feature maps are insufficient.
18
+
19
+ Do not scan the whole repository. Open source files only when:
20
+ - the snapshot is missing or stale
21
+ - the snapshot lacks enough detail for the task
22
+ - the task requires edit, debug, or refactor
23
+ - the user explicitly asks for code changes
24
+
25
+ When source inspection is needed, inspect the smallest relevant set first.
26
+
27
+ ### Maintenance
28
+
29
+ - If \`.devmap/index.json\` is missing, run \`devmap analyze\`.
30
+ - If the snapshot may be stale, run \`devmap analyze --fresh\`.
31
+ - Use \`--json\` when calling DevMap programmatically.
32
+ - Do not edit files inside \`.devmap/\`.
33
+ - Never commit API keys or provider credentials.
34
+ <!-- End DevMap Instruction Block -->`;
35
+ ;
36
+ export async function inspectAgentsFile(projectRoot) {
37
+ const path = join(projectRoot, "AGENTS.md");
38
+ try {
39
+ const metadata = await lstat(path);
40
+ if (metadata.isSymbolicLink()) {
41
+ throw new DevmapError("Refusing to update a symlinked AGENTS.md.", "Replace the symlink with a regular file before running devmap init.");
42
+ }
43
+ const content = await readFile(path, "utf8");
44
+ return (content.includes(DEVMAP_AGENTS_MARKER)
45
+ || content.includes(LEGACY_DEVMAP_AGENTS_MARKER))
46
+ ? "integrated"
47
+ : "existing";
48
+ }
49
+ catch (error) {
50
+ if (isNodeError(error) && error.code === "ENOENT") {
51
+ return "missing";
52
+ }
53
+ throw error;
54
+ }
55
+ }
56
+ export async function ensureAgentsFile(projectRoot, appendToExisting) {
57
+ const path = join(projectRoot, "AGENTS.md");
58
+ const status = await inspectAgentsFile(projectRoot);
59
+ if (status === "integrated") {
60
+ return "unchanged";
61
+ }
62
+ if (status === "existing") {
63
+ if (!appendToExisting) {
64
+ return "skipped";
65
+ }
66
+ const content = await readFile(path, "utf8");
67
+ const separator = content.endsWith("\n") ? "\n" : "\n\n";
68
+ await appendFile(path, `${separator}${DEVMAP_AGENTS_BLOCK}\n`, "utf8");
69
+ return "appended";
70
+ }
71
+ try {
72
+ await writeFile(path, `# AI Agent Instructions\n\n${DEVMAP_AGENTS_BLOCK}\n`, { encoding: "utf8", flag: "wx" });
73
+ return "created";
74
+ }
75
+ catch (error) {
76
+ if (isNodeError(error) && error.code === "EEXIST") {
77
+ return ensureAgentsFile(projectRoot, appendToExisting);
78
+ }
79
+ throw error;
80
+ }
81
+ }
82
+ function isNodeError(error) {
83
+ return error instanceof Error && "code" in error;
84
+ }
85
+ //# sourceMappingURL=agentsFile.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agentsFile.js","sourceRoot":"","sources":["../../src/utils/agentsFile.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ export type DevmapConfig = {
2
+ provider: "groq" | "openrouter";
3
+ apiKey?: string;
4
+ model: "auto" | string;
5
+ };
6
+ export type LocalDevmapConfig = {
7
+ model?: string;
8
+ };
9
+ export declare function getConfigPath(): string;
10
+ export declare function readConfig(): Promise<DevmapConfig | null>;
11
+ export declare function writeConfig(config: DevmapConfig): Promise<void>;
12
+ export declare function getLocalConfigPath(projectRoot: string): string;
13
+ export declare function readLocalConfig(projectRoot: string): Promise<LocalDevmapConfig | null>;
14
+ export declare function writeLocalConfig(projectRoot: string, config: LocalDevmapConfig): Promise<void>;
15
+ export type ConfigReaders = {
16
+ readGlobal?: () => Promise<DevmapConfig | null>;
17
+ readLocal?: (projectRoot: string) => Promise<LocalDevmapConfig | null>;
18
+ };
19
+ export declare function resolveEffectiveConfig(projectRoot: string, readers?: ConfigReaders): Promise<DevmapConfig | null>;
20
+ //# sourceMappingURL=config.d.ts.map