@dotcontext/cli 0.8.1 → 0.9.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 (417) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +234 -135
  3. package/dist/cli/index.d.ts +15 -0
  4. package/dist/cli/index.d.ts.map +1 -0
  5. package/dist/cli/index.js +27 -0
  6. package/dist/cli/index.js.map +1 -0
  7. package/dist/generators/documentation/codebaseMapGenerator.d.ts +29 -46
  8. package/dist/generators/documentation/codebaseMapGenerator.d.ts.map +1 -1
  9. package/dist/generators/documentation/codebaseMapGenerator.js +148 -244
  10. package/dist/generators/documentation/codebaseMapGenerator.js.map +1 -1
  11. package/dist/generators/documentation/documentationGenerator.d.ts.map +1 -1
  12. package/dist/generators/documentation/documentationGenerator.js +13 -8
  13. package/dist/generators/documentation/documentationGenerator.js.map +1 -1
  14. package/dist/generators/documentation/index.d.ts +1 -1
  15. package/dist/generators/documentation/index.d.ts.map +1 -1
  16. package/dist/generators/shared/structures/documentation/architecture.d.ts.map +1 -1
  17. package/dist/generators/shared/structures/documentation/architecture.js +9 -9
  18. package/dist/generators/shared/structures/documentation/architecture.js.map +1 -1
  19. package/dist/generators/shared/structures/documentation/dataFlow.js +2 -2
  20. package/dist/generators/shared/structures/documentation/dataFlow.js.map +1 -1
  21. package/dist/generators/shared/structures/documentation/glossary.js +2 -2
  22. package/dist/generators/shared/structures/documentation/glossary.js.map +1 -1
  23. package/dist/generators/shared/structures/documentation/projectOverview.d.ts.map +1 -1
  24. package/dist/generators/shared/structures/documentation/projectOverview.js +10 -11
  25. package/dist/generators/shared/structures/documentation/projectOverview.js.map +1 -1
  26. package/dist/generators/shared/structures/skills/factory.d.ts.map +1 -1
  27. package/dist/generators/shared/structures/skills/factory.js +19 -15
  28. package/dist/generators/shared/structures/skills/factory.js.map +1 -1
  29. package/dist/generators/skills/skillGenerator.d.ts +2 -1
  30. package/dist/generators/skills/skillGenerator.d.ts.map +1 -1
  31. package/dist/generators/skills/skillGenerator.js +47 -6
  32. package/dist/generators/skills/skillGenerator.js.map +1 -1
  33. package/dist/generators/skills/templates/indexTemplate.d.ts.map +1 -1
  34. package/dist/generators/skills/templates/indexTemplate.js +22 -15
  35. package/dist/generators/skills/templates/indexTemplate.js.map +1 -1
  36. package/dist/harness/index.d.ts +11 -0
  37. package/dist/harness/index.d.ts.map +1 -0
  38. package/dist/harness/index.js +33 -0
  39. package/dist/harness/index.js.map +1 -0
  40. package/dist/index.js +365 -339
  41. package/dist/index.js.map +1 -1
  42. package/dist/mcp/bin.d.ts +19 -0
  43. package/dist/mcp/bin.d.ts.map +1 -0
  44. package/dist/mcp/bin.js +189 -0
  45. package/dist/mcp/bin.js.map +1 -0
  46. package/dist/mcp/index.d.ts +12 -0
  47. package/dist/mcp/index.d.ts.map +1 -0
  48. package/dist/mcp/index.js +28 -0
  49. package/dist/mcp/index.js.map +1 -0
  50. package/dist/services/autoFill/autoFillService.d.ts.map +1 -1
  51. package/dist/services/autoFill/autoFillService.js +7 -6
  52. package/dist/services/autoFill/autoFillService.js.map +1 -1
  53. package/dist/services/cli/index.d.ts +8 -0
  54. package/dist/services/cli/index.d.ts.map +1 -0
  55. package/dist/services/cli/index.js +17 -0
  56. package/dist/services/cli/index.js.map +1 -0
  57. package/dist/services/cli/mcpInstallService.d.ts +57 -0
  58. package/dist/services/cli/mcpInstallService.d.ts.map +1 -0
  59. package/dist/services/cli/mcpInstallService.js +607 -0
  60. package/dist/services/cli/mcpInstallService.js.map +1 -0
  61. package/dist/services/cli/stateDetector.d.ts +55 -0
  62. package/dist/services/cli/stateDetector.d.ts.map +1 -0
  63. package/dist/services/cli/stateDetector.js +191 -0
  64. package/dist/services/cli/stateDetector.js.map +1 -0
  65. package/dist/services/export/contextExportService.js +3 -3
  66. package/dist/services/export/contextExportService.js.map +1 -1
  67. package/dist/services/export/exportRulesService.d.ts +1 -0
  68. package/dist/services/export/exportRulesService.d.ts.map +1 -1
  69. package/dist/services/export/exportRulesService.js +20 -8
  70. package/dist/services/export/exportRulesService.js.map +1 -1
  71. package/dist/services/export/skillExportService.d.ts.map +1 -1
  72. package/dist/services/export/skillExportService.js +4 -1
  73. package/dist/services/export/skillExportService.js.map +1 -1
  74. package/dist/services/harness/agentsService.d.ts +31 -0
  75. package/dist/services/harness/agentsService.d.ts.map +1 -0
  76. package/dist/services/harness/agentsService.js +135 -0
  77. package/dist/services/harness/agentsService.js.map +1 -0
  78. package/dist/services/harness/contextService.d.ts +167 -0
  79. package/dist/services/harness/contextService.d.ts.map +1 -0
  80. package/dist/services/harness/contextService.js +403 -0
  81. package/dist/services/harness/contextService.js.map +1 -0
  82. package/dist/services/harness/contextTools.d.ts +95 -0
  83. package/dist/services/harness/contextTools.d.ts.map +1 -0
  84. package/dist/services/harness/contextTools.js +990 -0
  85. package/dist/services/harness/contextTools.js.map +1 -0
  86. package/dist/services/harness/datasetService.d.ts +63 -0
  87. package/dist/services/harness/datasetService.d.ts.map +1 -0
  88. package/dist/services/harness/datasetService.js +261 -0
  89. package/dist/services/harness/datasetService.js.map +1 -0
  90. package/dist/services/harness/executionService.d.ts +74 -0
  91. package/dist/services/harness/executionService.d.ts.map +1 -0
  92. package/dist/services/harness/executionService.js +213 -0
  93. package/dist/services/harness/executionService.js.map +1 -0
  94. package/dist/services/harness/index.d.ts +21 -0
  95. package/dist/services/harness/index.d.ts.map +1 -0
  96. package/dist/services/harness/index.js +52 -0
  97. package/dist/services/harness/index.js.map +1 -0
  98. package/dist/services/harness/plansService.d.ts +45 -0
  99. package/dist/services/harness/plansService.d.ts.map +1 -0
  100. package/dist/services/harness/plansService.js +251 -0
  101. package/dist/services/harness/plansService.js.map +1 -0
  102. package/dist/services/harness/policyService.d.ts +116 -0
  103. package/dist/services/harness/policyService.d.ts.map +1 -0
  104. package/dist/services/harness/policyService.js +510 -0
  105. package/dist/services/harness/policyService.js.map +1 -0
  106. package/dist/services/harness/replayService.d.ts +63 -0
  107. package/dist/services/harness/replayService.d.ts.map +1 -0
  108. package/dist/services/harness/replayService.js +242 -0
  109. package/dist/services/harness/replayService.js.map +1 -0
  110. package/dist/services/harness/runtimeStateService.d.ts +120 -0
  111. package/dist/services/harness/runtimeStateService.d.ts.map +1 -0
  112. package/dist/services/harness/runtimeStateService.js +316 -0
  113. package/dist/services/harness/runtimeStateService.js.map +1 -0
  114. package/dist/services/harness/sensorCatalogService.d.ts +50 -0
  115. package/dist/services/harness/sensorCatalogService.d.ts.map +1 -0
  116. package/dist/services/harness/sensorCatalogService.js +308 -0
  117. package/dist/services/harness/sensorCatalogService.js.map +1 -0
  118. package/dist/services/harness/sensorsService.d.ts +64 -0
  119. package/dist/services/harness/sensorsService.d.ts.map +1 -0
  120. package/dist/services/harness/sensorsService.js +88 -0
  121. package/dist/services/harness/sensorsService.js.map +1 -0
  122. package/dist/services/harness/skillsService.d.ts +31 -0
  123. package/dist/services/harness/skillsService.d.ts.map +1 -0
  124. package/dist/services/harness/skillsService.js +296 -0
  125. package/dist/services/harness/skillsService.js.map +1 -0
  126. package/dist/services/harness/taskContractsService.d.ts +88 -0
  127. package/dist/services/harness/taskContractsService.d.ts.map +1 -0
  128. package/dist/services/harness/taskContractsService.js +210 -0
  129. package/dist/services/harness/taskContractsService.js.map +1 -0
  130. package/dist/services/harness/workflowStateService.d.ts +51 -0
  131. package/dist/services/harness/workflowStateService.d.ts.map +1 -0
  132. package/dist/services/harness/workflowStateService.js +215 -0
  133. package/dist/services/harness/workflowStateService.js.map +1 -0
  134. package/dist/services/import/agentsDetector.d.ts.map +1 -1
  135. package/dist/services/import/agentsDetector.js +14 -8
  136. package/dist/services/import/agentsDetector.js.map +1 -1
  137. package/dist/services/import/importAgentsService.d.ts +2 -2
  138. package/dist/services/import/importAgentsService.d.ts.map +1 -1
  139. package/dist/services/import/importAgentsService.js +8 -1
  140. package/dist/services/import/importAgentsService.js.map +1 -1
  141. package/dist/services/import/importRulesService.d.ts +2 -2
  142. package/dist/services/import/importRulesService.d.ts.map +1 -1
  143. package/dist/services/import/importRulesService.js +8 -1
  144. package/dist/services/import/importRulesService.js.map +1 -1
  145. package/dist/services/import/presets.js +2 -2
  146. package/dist/services/import/presets.js.map +1 -1
  147. package/dist/services/import/rulesDetector.d.ts.map +1 -1
  148. package/dist/services/import/rulesDetector.js +16 -1
  149. package/dist/services/import/rulesDetector.js.map +1 -1
  150. package/dist/services/import/types.d.ts +1 -1
  151. package/dist/services/import/types.d.ts.map +1 -1
  152. package/dist/services/mcp/actionLogger.d.ts +2 -1
  153. package/dist/services/mcp/actionLogger.d.ts.map +1 -1
  154. package/dist/services/mcp/actionLogger.js +76 -15
  155. package/dist/services/mcp/actionLogger.js.map +1 -1
  156. package/dist/services/mcp/gateway/agent.d.ts.map +1 -1
  157. package/dist/services/mcp/gateway/agent.js +15 -104
  158. package/dist/services/mcp/gateway/agent.js.map +1 -1
  159. package/dist/services/mcp/gateway/context.d.ts.map +1 -1
  160. package/dist/services/mcp/gateway/context.js +60 -172
  161. package/dist/services/mcp/gateway/context.js.map +1 -1
  162. package/dist/services/mcp/gateway/explore.js +6 -6
  163. package/dist/services/mcp/gateway/explore.js.map +1 -1
  164. package/dist/services/mcp/gateway/harness.d.ts +7 -0
  165. package/dist/services/mcp/gateway/harness.d.ts.map +1 -0
  166. package/dist/services/mcp/gateway/harness.js +337 -0
  167. package/dist/services/mcp/gateway/harness.js.map +1 -0
  168. package/dist/services/mcp/gateway/index.d.ts +3 -2
  169. package/dist/services/mcp/gateway/index.d.ts.map +1 -1
  170. package/dist/services/mcp/gateway/index.js +4 -2
  171. package/dist/services/mcp/gateway/index.js.map +1 -1
  172. package/dist/services/mcp/gateway/metrics.d.ts.map +1 -1
  173. package/dist/services/mcp/gateway/metrics.js +8 -8
  174. package/dist/services/mcp/gateway/metrics.js.map +1 -1
  175. package/dist/services/mcp/gateway/plan.d.ts.map +1 -1
  176. package/dist/services/mcp/gateway/plan.js +23 -211
  177. package/dist/services/mcp/gateway/plan.js.map +1 -1
  178. package/dist/services/mcp/gateway/shared.d.ts +1 -32
  179. package/dist/services/mcp/gateway/shared.d.ts.map +1 -1
  180. package/dist/services/mcp/gateway/shared.js +4 -30
  181. package/dist/services/mcp/gateway/shared.js.map +1 -1
  182. package/dist/services/mcp/gateway/skill.d.ts.map +1 -1
  183. package/dist/services/mcp/gateway/skill.js +14 -281
  184. package/dist/services/mcp/gateway/skill.js.map +1 -1
  185. package/dist/services/mcp/gateway/types.d.ts +74 -3
  186. package/dist/services/mcp/gateway/types.d.ts.map +1 -1
  187. package/dist/services/mcp/gateway/workflowAdvance.d.ts.map +1 -1
  188. package/dist/services/mcp/gateway/workflowAdvance.js +37 -9
  189. package/dist/services/mcp/gateway/workflowAdvance.js.map +1 -1
  190. package/dist/services/mcp/gateway/workflowInit.d.ts.map +1 -1
  191. package/dist/services/mcp/gateway/workflowInit.js +8 -2
  192. package/dist/services/mcp/gateway/workflowInit.js.map +1 -1
  193. package/dist/services/mcp/gateway/workflowManage.d.ts +17 -1
  194. package/dist/services/mcp/gateway/workflowManage.d.ts.map +1 -1
  195. package/dist/services/mcp/gateway/workflowManage.js +155 -10
  196. package/dist/services/mcp/gateway/workflowManage.js.map +1 -1
  197. package/dist/services/mcp/gateway/workflowStatus.d.ts.map +1 -1
  198. package/dist/services/mcp/gateway/workflowStatus.js +5 -3
  199. package/dist/services/mcp/gateway/workflowStatus.js.map +1 -1
  200. package/dist/services/mcp/gatewayTools.d.ts +1 -1
  201. package/dist/services/mcp/gatewayTools.d.ts.map +1 -1
  202. package/dist/services/mcp/gatewayTools.js +2 -1
  203. package/dist/services/mcp/gatewayTools.js.map +1 -1
  204. package/dist/services/mcp/index.d.ts +10 -4
  205. package/dist/services/mcp/index.d.ts.map +1 -1
  206. package/dist/services/mcp/index.js +9 -3
  207. package/dist/services/mcp/index.js.map +1 -1
  208. package/dist/services/mcp/mcpInstallService.d.ts +4 -52
  209. package/dist/services/mcp/mcpInstallService.d.ts.map +1 -1
  210. package/dist/services/mcp/mcpInstallService.js +5 -596
  211. package/dist/services/mcp/mcpInstallService.js.map +1 -1
  212. package/dist/services/mcp/mcpServer.d.ts +5 -6
  213. package/dist/services/mcp/mcpServer.d.ts.map +1 -1
  214. package/dist/services/mcp/mcpServer.js +220 -28
  215. package/dist/services/mcp/mcpServer.js.map +1 -1
  216. package/dist/services/qa/patternInferer.d.ts +2 -31
  217. package/dist/services/qa/patternInferer.d.ts.map +1 -1
  218. package/dist/services/qa/patternInferer.js +4 -353
  219. package/dist/services/qa/patternInferer.js.map +1 -1
  220. package/dist/services/qa/qaService.d.ts +6 -10
  221. package/dist/services/qa/qaService.d.ts.map +1 -1
  222. package/dist/services/qa/qaService.js +17 -53
  223. package/dist/services/qa/qaService.js.map +1 -1
  224. package/dist/services/reverseSync/importSkillsService.d.ts.map +1 -1
  225. package/dist/services/reverseSync/importSkillsService.js +4 -1
  226. package/dist/services/reverseSync/importSkillsService.js.map +1 -1
  227. package/dist/services/reverseSync/reverseQuickSyncService.d.ts.map +1 -1
  228. package/dist/services/reverseSync/reverseQuickSyncService.js +10 -6
  229. package/dist/services/reverseSync/reverseQuickSyncService.js.map +1 -1
  230. package/dist/services/reverseSync/skillsDetector.js +2 -2
  231. package/dist/services/reverseSync/skillsDetector.js.map +1 -1
  232. package/dist/services/reverseSync/toolDetector.d.ts.map +1 -1
  233. package/dist/services/reverseSync/toolDetector.js +3 -0
  234. package/dist/services/reverseSync/toolDetector.js.map +1 -1
  235. package/dist/services/semantic/index.d.ts +1 -0
  236. package/dist/services/semantic/index.d.ts.map +1 -1
  237. package/dist/services/semantic/index.js +3 -1
  238. package/dist/services/semantic/index.js.map +1 -1
  239. package/dist/services/semantic/semanticSnapshotService.d.ts +86 -0
  240. package/dist/services/semantic/semanticSnapshotService.d.ts.map +1 -0
  241. package/dist/services/semantic/semanticSnapshotService.js +573 -0
  242. package/dist/services/semantic/semanticSnapshotService.js.map +1 -0
  243. package/dist/services/shared/contentTypeRegistry.d.ts.map +1 -1
  244. package/dist/services/shared/contentTypeRegistry.js +9 -0
  245. package/dist/services/shared/contentTypeRegistry.js.map +1 -1
  246. package/dist/services/shared/contextLayout.d.ts +18 -0
  247. package/dist/services/shared/contextLayout.d.ts.map +1 -0
  248. package/dist/services/shared/contextLayout.js +139 -0
  249. package/dist/services/shared/contextLayout.js.map +1 -0
  250. package/dist/services/shared/executionContext.d.ts +38 -0
  251. package/dist/services/shared/executionContext.d.ts.map +1 -0
  252. package/dist/services/shared/executionContext.js +39 -0
  253. package/dist/services/shared/executionContext.js.map +1 -0
  254. package/dist/services/shared/index.d.ts +2 -0
  255. package/dist/services/shared/index.d.ts.map +1 -1
  256. package/dist/services/shared/index.js +11 -1
  257. package/dist/services/shared/index.js.map +1 -1
  258. package/dist/services/shared/toolRegistry.d.ts +6 -0
  259. package/dist/services/shared/toolRegistry.d.ts.map +1 -1
  260. package/dist/services/shared/toolRegistry.js +34 -20
  261. package/dist/services/shared/toolRegistry.js.map +1 -1
  262. package/dist/services/stack/scaffoldFilter.d.ts +3 -3
  263. package/dist/services/state/stateDetector.d.ts +4 -49
  264. package/dist/services/state/stateDetector.d.ts.map +1 -1
  265. package/dist/services/state/stateDetector.js +9 -182
  266. package/dist/services/state/stateDetector.js.map +1 -1
  267. package/dist/services/sync/index.d.ts +1 -1
  268. package/dist/services/sync/index.d.ts.map +1 -1
  269. package/dist/services/sync/index.js.map +1 -1
  270. package/dist/services/sync/markdownReferenceHandler.d.ts.map +1 -1
  271. package/dist/services/sync/markdownReferenceHandler.js +7 -2
  272. package/dist/services/sync/markdownReferenceHandler.js.map +1 -1
  273. package/dist/services/sync/presets.d.ts.map +1 -1
  274. package/dist/services/sync/presets.js +1 -0
  275. package/dist/services/sync/presets.js.map +1 -1
  276. package/dist/services/sync/symlinkHandler.d.ts.map +1 -1
  277. package/dist/services/sync/symlinkHandler.js +7 -2
  278. package/dist/services/sync/symlinkHandler.js.map +1 -1
  279. package/dist/services/sync/syncService.d.ts +2 -2
  280. package/dist/services/sync/syncService.d.ts.map +1 -1
  281. package/dist/services/sync/syncService.js +17 -3
  282. package/dist/services/sync/syncService.js.map +1 -1
  283. package/dist/services/sync/types.d.ts +9 -1
  284. package/dist/services/sync/types.d.ts.map +1 -1
  285. package/dist/services/workflow/index.d.ts +1 -1
  286. package/dist/services/workflow/index.d.ts.map +1 -1
  287. package/dist/services/workflow/index.js +2 -1
  288. package/dist/services/workflow/index.js.map +1 -1
  289. package/dist/services/workflow/workflowService.d.ts +68 -0
  290. package/dist/services/workflow/workflowService.d.ts.map +1 -1
  291. package/dist/services/workflow/workflowService.js +416 -1
  292. package/dist/services/workflow/workflowService.js.map +1 -1
  293. package/dist/utils/gitignoreManager.d.ts +8 -0
  294. package/dist/utils/gitignoreManager.d.ts.map +1 -1
  295. package/dist/utils/gitignoreManager.js +40 -0
  296. package/dist/utils/gitignoreManager.js.map +1 -1
  297. package/dist/utils/i18n.d.ts +1 -1
  298. package/dist/utils/i18n.js +2 -2
  299. package/dist/utils/i18n.js.map +1 -1
  300. package/dist/utils/processShutdown.d.ts +20 -0
  301. package/dist/utils/processShutdown.d.ts.map +1 -0
  302. package/dist/utils/processShutdown.js +47 -0
  303. package/dist/utils/processShutdown.js.map +1 -0
  304. package/dist/utils/prompts/index.d.ts +1 -1
  305. package/dist/utils/prompts/index.d.ts.map +1 -1
  306. package/dist/utils/prompts/index.js +1 -3
  307. package/dist/utils/prompts/index.js.map +1 -1
  308. package/dist/utils/prompts/smartDefaults.d.ts +0 -9
  309. package/dist/utils/prompts/smartDefaults.d.ts.map +1 -1
  310. package/dist/utils/prompts/smartDefaults.js +0 -23
  311. package/dist/utils/prompts/smartDefaults.js.map +1 -1
  312. package/dist/utils/prompts/types.d.ts +0 -11
  313. package/dist/utils/prompts/types.d.ts.map +1 -1
  314. package/dist/utils/versionChecker.d.ts.map +1 -1
  315. package/dist/utils/versionChecker.js +17 -8
  316. package/dist/utils/versionChecker.js.map +1 -1
  317. package/dist/workflow/index.d.ts +1 -1
  318. package/dist/workflow/index.d.ts.map +1 -1
  319. package/dist/workflow/index.js +6 -1
  320. package/dist/workflow/index.js.map +1 -1
  321. package/dist/workflow/orchestrator.d.ts.map +1 -1
  322. package/dist/workflow/orchestrator.js +3 -14
  323. package/dist/workflow/orchestrator.js.map +1 -1
  324. package/dist/workflow/plans/planLinker.d.ts +13 -0
  325. package/dist/workflow/plans/planLinker.d.ts.map +1 -1
  326. package/dist/workflow/plans/planLinker.js +77 -2
  327. package/dist/workflow/plans/planLinker.js.map +1 -1
  328. package/dist/workflow/plans/types.d.ts +6 -0
  329. package/dist/workflow/plans/types.d.ts.map +1 -1
  330. package/dist/workflow/skills/frontmatter.d.ts +9 -0
  331. package/dist/workflow/skills/frontmatter.d.ts.map +1 -1
  332. package/dist/workflow/skills/frontmatter.js +16 -0
  333. package/dist/workflow/skills/frontmatter.js.map +1 -1
  334. package/dist/workflow/skills/index.d.ts +1 -1
  335. package/dist/workflow/skills/index.d.ts.map +1 -1
  336. package/dist/workflow/skills/index.js +3 -1
  337. package/dist/workflow/skills/index.js.map +1 -1
  338. package/dist/workflow/skills/skillRegistry.d.ts.map +1 -1
  339. package/dist/workflow/skills/skillRegistry.js +4 -1
  340. package/dist/workflow/skills/skillRegistry.js.map +1 -1
  341. package/dist/workflow/skills/skillTemplates.d.ts.map +1 -1
  342. package/dist/workflow/skills/skillTemplates.js +69 -30
  343. package/dist/workflow/skills/skillTemplates.js.map +1 -1
  344. package/dist/workflow/status/statusManager.d.ts +8 -3
  345. package/dist/workflow/status/statusManager.d.ts.map +1 -1
  346. package/dist/workflow/status/statusManager.js +60 -21
  347. package/dist/workflow/status/statusManager.js.map +1 -1
  348. package/dist/workflow/types.d.ts +1 -1
  349. package/package.json +19 -11
  350. package/dist/services/ai/aiSdkClient.d.ts +0 -67
  351. package/dist/services/ai/aiSdkClient.d.ts.map +0 -1
  352. package/dist/services/ai/aiSdkClient.js +0 -143
  353. package/dist/services/ai/aiSdkClient.js.map +0 -1
  354. package/dist/services/ai/index.d.ts +0 -5
  355. package/dist/services/ai/index.d.ts.map +0 -1
  356. package/dist/services/ai/index.js +0 -40
  357. package/dist/services/ai/index.js.map +0 -1
  358. package/dist/services/ai/providerFactory.d.ts +0 -35
  359. package/dist/services/ai/providerFactory.d.ts.map +0 -1
  360. package/dist/services/ai/providerFactory.js +0 -107
  361. package/dist/services/ai/providerFactory.js.map +0 -1
  362. package/dist/services/ai/schemas.d.ts +0 -557
  363. package/dist/services/ai/schemas.d.ts.map +0 -1
  364. package/dist/services/ai/schemas.js +0 -357
  365. package/dist/services/ai/schemas.js.map +0 -1
  366. package/dist/services/ai/toolRegistry.d.ts +0 -27
  367. package/dist/services/ai/toolRegistry.d.ts.map +0 -1
  368. package/dist/services/ai/toolRegistry.js +0 -151
  369. package/dist/services/ai/toolRegistry.js.map +0 -1
  370. package/dist/services/ai/tools/analyzeSymbolsTool.d.ts +0 -33
  371. package/dist/services/ai/tools/analyzeSymbolsTool.d.ts.map +0 -1
  372. package/dist/services/ai/tools/analyzeSymbolsTool.js +0 -57
  373. package/dist/services/ai/tools/analyzeSymbolsTool.js.map +0 -1
  374. package/dist/services/ai/tools/checkScaffoldingTool.d.ts +0 -18
  375. package/dist/services/ai/tools/checkScaffoldingTool.d.ts.map +0 -1
  376. package/dist/services/ai/tools/checkScaffoldingTool.js +0 -89
  377. package/dist/services/ai/tools/checkScaffoldingTool.js.map +0 -1
  378. package/dist/services/ai/tools/fillScaffoldingTool.d.ts +0 -124
  379. package/dist/services/ai/tools/fillScaffoldingTool.d.ts.map +0 -1
  380. package/dist/services/ai/tools/fillScaffoldingTool.js +0 -397
  381. package/dist/services/ai/tools/fillScaffoldingTool.js.map +0 -1
  382. package/dist/services/ai/tools/getCodebaseMapTool.d.ts +0 -17
  383. package/dist/services/ai/tools/getCodebaseMapTool.d.ts.map +0 -1
  384. package/dist/services/ai/tools/getCodebaseMapTool.js +0 -122
  385. package/dist/services/ai/tools/getCodebaseMapTool.js.map +0 -1
  386. package/dist/services/ai/tools/getFileStructureTool.d.ts +0 -29
  387. package/dist/services/ai/tools/getFileStructureTool.d.ts.map +0 -1
  388. package/dist/services/ai/tools/getFileStructureTool.js +0 -48
  389. package/dist/services/ai/tools/getFileStructureTool.js.map +0 -1
  390. package/dist/services/ai/tools/index.d.ts +0 -21
  391. package/dist/services/ai/tools/index.d.ts.map +0 -1
  392. package/dist/services/ai/tools/index.js +0 -75
  393. package/dist/services/ai/tools/index.js.map +0 -1
  394. package/dist/services/ai/tools/initializeContextTool.d.ts +0 -135
  395. package/dist/services/ai/tools/initializeContextTool.d.ts.map +0 -1
  396. package/dist/services/ai/tools/initializeContextTool.js +0 -447
  397. package/dist/services/ai/tools/initializeContextTool.js.map +0 -1
  398. package/dist/services/ai/tools/listFilesTool.d.ts +0 -18
  399. package/dist/services/ai/tools/listFilesTool.d.ts.map +0 -1
  400. package/dist/services/ai/tools/listFilesTool.js +0 -34
  401. package/dist/services/ai/tools/listFilesTool.js.map +0 -1
  402. package/dist/services/ai/tools/readFileTool.d.ts +0 -17
  403. package/dist/services/ai/tools/readFileTool.d.ts.map +0 -1
  404. package/dist/services/ai/tools/readFileTool.js +0 -63
  405. package/dist/services/ai/tools/readFileTool.js.map +0 -1
  406. package/dist/services/ai/tools/scaffoldPlanTool.d.ts +0 -41
  407. package/dist/services/ai/tools/scaffoldPlanTool.d.ts.map +0 -1
  408. package/dist/services/ai/tools/scaffoldPlanTool.js +0 -183
  409. package/dist/services/ai/tools/scaffoldPlanTool.js.map +0 -1
  410. package/dist/services/ai/tools/searchCodeTool.d.ts +0 -25
  411. package/dist/services/ai/tools/searchCodeTool.d.ts.map +0 -1
  412. package/dist/services/ai/tools/searchCodeTool.js +0 -96
  413. package/dist/services/ai/tools/searchCodeTool.js.map +0 -1
  414. package/dist/services/baseLLMClient.d.ts +0 -12
  415. package/dist/services/baseLLMClient.d.ts.map +0 -1
  416. package/dist/services/baseLLMClient.js +0 -80
  417. package/dist/services/baseLLMClient.js.map +0 -1
@@ -2,8 +2,11 @@
2
2
  /**
3
3
  * Codebase Map Generator
4
4
  *
5
- * Generates a JSON file that serves as a quick LLM-readable summary
6
- * of the entire codebase structure, symbols, and architecture.
5
+ * Generates a summary JSON file for the codebase structure, stack,
6
+ * architecture, dependencies, and functional capabilities.
7
+ *
8
+ * Symbol payloads are intentionally excluded. Detailed symbol data belongs
9
+ * to live semantic analysis, not persisted summary artifacts.
7
10
  */
8
11
  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
9
12
  if (k2 === undefined) k2 = k;
@@ -40,66 +43,80 @@ var __importStar = (this && this.__importStar) || (function () {
40
43
  })();
41
44
  Object.defineProperty(exports, "__esModule", { value: true });
42
45
  exports.CodebaseMapGenerator = void 0;
46
+ exports.createEmptyFunctionalPatterns = createEmptyFunctionalPatterns;
43
47
  const path = __importStar(require("path"));
48
+ function createEmptyFunctionalPatterns() {
49
+ return {
50
+ hasAuthPattern: false,
51
+ hasDatabasePattern: false,
52
+ hasApiPattern: false,
53
+ hasCachePattern: false,
54
+ hasQueuePattern: false,
55
+ hasWebSocketPattern: false,
56
+ hasLoggingPattern: false,
57
+ hasValidationPattern: false,
58
+ hasErrorHandlingPattern: false,
59
+ hasTestingPattern: false,
60
+ patterns: [],
61
+ };
62
+ }
44
63
  // ============================================================================
45
64
  // Generator
46
65
  // ============================================================================
47
- // Directory description heuristics
48
66
  const DIRECTORY_DESCRIPTIONS = {
49
- 'src': 'Source code root',
50
- 'services': 'Business logic and orchestration services',
51
- 'generators': 'Content and scaffold generation',
52
- 'utils': 'Shared utilities and helpers',
53
- 'types': 'TypeScript type definitions',
54
- 'tests': 'Test files and fixtures',
55
- '__tests__': 'Unit and integration tests',
56
- 'components': 'UI components',
57
- 'hooks': 'React hooks',
58
- 'api': 'API endpoints and handlers',
59
- 'config': 'Configuration files',
60
- 'models': 'Data models and entities',
61
- 'controllers': 'Request handlers',
62
- 'middleware': 'Request/response middleware',
63
- 'routes': 'Route definitions',
64
- 'views': 'View templates',
65
- 'assets': 'Static assets (images, fonts)',
66
- 'styles': 'CSS/SCSS stylesheets',
67
- 'lib': 'Shared library code',
68
- 'core': 'Core application logic',
69
- 'shared': 'Shared code across modules',
70
- 'workflow': 'Workflow and orchestration',
71
- 'mcp': 'MCP server implementation',
72
- 'ai': 'AI/LLM integration',
73
- 'semantic': 'Semantic code analysis',
74
- 'plans': 'Development plans',
75
- 'agents': 'AI agent definitions',
76
- 'skills': 'Skill definitions',
77
- 'docs': 'Documentation files',
78
- 'scripts': 'Build and utility scripts',
79
- 'prompts': 'Prompt templates',
80
- 'public': 'Public static assets',
81
- 'dist': 'Build output directory',
82
- 'build': 'Build output directory',
83
- 'bin': 'CLI binaries and executables',
84
- 'test': 'Test files',
85
- 'spec': 'Test specifications',
86
- 'fixtures': 'Test fixtures and mock data',
87
- 'mocks': 'Mock implementations',
88
- 'pages': 'Page components (Next.js/Nuxt)',
89
- 'app': 'Application entry (Next.js app router)',
90
- 'store': 'State management',
91
- 'reducers': 'Redux reducers',
92
- 'actions': 'Redux actions',
93
- 'selectors': 'Redux selectors',
94
- 'contexts': 'React contexts',
95
- 'providers': 'Context providers',
96
- 'layouts': 'Layout components',
97
- 'templates': 'Template files',
98
- 'i18n': 'Internationalization',
99
- 'locales': 'Locale files',
100
- 'translations': 'Translation files',
67
+ src: 'Source code root',
68
+ services: 'Business logic and orchestration services',
69
+ generators: 'Content and scaffold generation',
70
+ utils: 'Shared utilities and helpers',
71
+ types: 'TypeScript type definitions',
72
+ tests: 'Test files and fixtures',
73
+ __tests__: 'Unit and integration tests',
74
+ components: 'UI components',
75
+ hooks: 'React hooks',
76
+ api: 'API endpoints and handlers',
77
+ config: 'Configuration files',
78
+ models: 'Data models and entities',
79
+ controllers: 'Request handlers',
80
+ middleware: 'Request/response middleware',
81
+ routes: 'Route definitions',
82
+ views: 'View templates',
83
+ assets: 'Static assets (images, fonts)',
84
+ styles: 'CSS/SCSS stylesheets',
85
+ lib: 'Shared library code',
86
+ core: 'Core application logic',
87
+ shared: 'Shared code across modules',
88
+ workflow: 'Workflow and orchestration',
89
+ mcp: 'MCP server implementation',
90
+ ai: 'AI/LLM integration',
91
+ semantic: 'Semantic code analysis',
92
+ plans: 'Development plans',
93
+ agents: 'AI agent definitions',
94
+ skills: 'Skill definitions',
95
+ docs: 'Documentation files',
96
+ scripts: 'Build and utility scripts',
97
+ prompts: 'Prompt templates',
98
+ public: 'Public static assets',
99
+ dist: 'Build output directory',
100
+ build: 'Build output directory',
101
+ bin: 'CLI binaries and executables',
102
+ test: 'Test files',
103
+ spec: 'Test specifications',
104
+ fixtures: 'Test fixtures and mock data',
105
+ mocks: 'Mock implementations',
106
+ pages: 'Page components (Next.js/Nuxt)',
107
+ app: 'Application entry (Next.js app router)',
108
+ store: 'State management',
109
+ reducers: 'Redux reducers',
110
+ actions: 'Redux actions',
111
+ selectors: 'Redux selectors',
112
+ contexts: 'React contexts',
113
+ providers: 'Context providers',
114
+ layouts: 'Layout components',
115
+ templates: 'Template files',
116
+ i18n: 'Internationalization',
117
+ locales: 'Locale files',
118
+ translations: 'Translation files',
101
119
  };
102
- // Key file pattern matchers
103
120
  const KEY_FILE_PATTERNS = [
104
121
  { pattern: /^src\/index\.(ts|js)$/, description: 'Main library entry point', category: 'entrypoint' },
105
122
  { pattern: /^src\/main\.(ts|js)$/, description: 'Application entry point', category: 'entrypoint' },
@@ -120,20 +137,21 @@ const KEY_FILE_PATTERNS = [
120
137
  ];
121
138
  class CodebaseMapGenerator {
122
139
  constructor(options = {}) {
123
- this.maxSymbols = options.maxSymbolsPerCategory ?? 30;
140
+ this.maxDependencies = options.maxDependencies ?? 20;
141
+ this.maxKeyFiles = options.maxKeyFiles ?? 30;
124
142
  }
125
- generate(repoStructure, semantics, stackInfo) {
143
+ generate(repoStructure, semantics, stackInfo, functionalPatterns, metadata) {
126
144
  const architecture = this.buildArchitectureSection(repoStructure.rootPath, semantics);
127
145
  return {
128
- version: '1.0.0',
129
- generated: new Date().toISOString(),
146
+ version: metadata?.schemaVersion ?? '2.0.0',
147
+ generated: metadata?.generatedAt ?? new Date().toISOString(),
148
+ ...(metadata ? { meta: metadata } : {}),
130
149
  stack: this.buildStackSection(stackInfo, repoStructure.rootPath),
131
150
  structure: this.buildStructureSection(repoStructure),
132
151
  architecture,
133
- symbols: this.buildSymbolsSection(repoStructure.rootPath, semantics),
134
- publicAPI: this.buildPublicAPISection(repoStructure.rootPath, semantics),
152
+ functionalPatterns: functionalPatterns ?? createEmptyFunctionalPatterns(),
135
153
  dependencies: this.buildDependenciesSection(repoStructure.rootPath, semantics),
136
- stats: this.buildStatsSection(semantics),
154
+ stats: this.buildStatsSection(repoStructure, semantics),
137
155
  keyFiles: this.buildKeyFilesSection(repoStructure, semantics),
138
156
  navigation: this.buildNavigationSection(repoStructure, stackInfo),
139
157
  };
@@ -152,7 +170,6 @@ class CodebaseMapGenerator {
152
170
  hasCI: false,
153
171
  };
154
172
  }
155
- // Detect node version and runtime environment from package.json
156
173
  let nodeVersion;
157
174
  let runtimeEnvironment;
158
175
  if (repoRoot) {
@@ -161,18 +178,14 @@ class CodebaseMapGenerator {
161
178
  const fs = require('fs-extra');
162
179
  if (fs.existsSync(packageJsonPath)) {
163
180
  const packageJson = fs.readJsonSync(packageJsonPath);
164
- // Get node version from engines
165
181
  if (packageJson.engines?.node) {
166
182
  nodeVersion = packageJson.engines.node;
167
183
  }
168
- // Determine runtime environment
169
184
  const hasBrowserField = !!packageJson.browser;
170
185
  const hasMainField = !!packageJson.main || !!packageJson.exports;
171
186
  const hasBinField = !!packageJson.bin;
172
- // Check for browser-specific frameworks
173
- const isBrowserFramework = stackInfo.frameworks.some(f => ['nextjs', 'nuxt', 'vue', 'angular', 'svelte', 'react', 'gatsby', 'astro'].includes(f));
174
- // Check for Node-specific indicators
175
- const isNodeFramework = stackInfo.frameworks.some(f => ['nestjs', 'express', 'fastify', 'koa', 'hapi'].includes(f)) || hasBinField || stackInfo.frameworks.includes('cli');
187
+ const isBrowserFramework = stackInfo.frameworks.some((framework) => ['nextjs', 'nuxt', 'vue', 'angular', 'svelte', 'react', 'gatsby', 'astro'].includes(framework));
188
+ const isNodeFramework = stackInfo.frameworks.some((framework) => ['nestjs', 'express', 'fastify', 'koa', 'hapi'].includes(framework)) || hasBinField || stackInfo.frameworks.includes('cli');
176
189
  if (isBrowserFramework && isNodeFramework) {
177
190
  runtimeEnvironment = 'both';
178
191
  }
@@ -200,27 +213,24 @@ class CodebaseMapGenerator {
200
213
  hasCI: stackInfo.hasCI,
201
214
  ...(nodeVersion && { nodeVersion }),
202
215
  ...(runtimeEnvironment && { runtimeEnvironment }),
216
+ ...(typeof stackInfo.hasBinField === 'boolean' ? { hasBinField: stackInfo.hasBinField } : {}),
217
+ ...(typeof stackInfo.hasMainExport === 'boolean' ? { hasMainExport: stackInfo.hasMainExport } : {}),
218
+ ...(typeof stackInfo.hasTypesField === 'boolean' ? { hasTypesField: stackInfo.hasTypesField } : {}),
219
+ ...(stackInfo.cliLibraries?.length ? { cliLibraries: stackInfo.cliLibraries } : {}),
203
220
  };
204
221
  }
205
222
  buildStructureSection(repoStructure) {
206
- // Filter to only include actual directories (items with multiple files or subdirectories)
207
- // and exclude files at the root level
208
223
  const topDirectories = (repoStructure.topLevelDirectoryStats ?? [])
209
- .filter(stat => {
210
- // Check if this is actually a directory by seeing if we have files under it
211
- const hasFilesUnder = repoStructure.files.some(f => f.relativePath.startsWith(stat.name + '/') || f.relativePath.startsWith(stat.name + '\\'));
212
- // Also check if it's a directory entry itself
213
- const isDirectory = repoStructure.directories.some(d => d.relativePath === stat.name || path.basename(d.relativePath) === stat.name);
214
- // It's a directory if it has files under it or is marked as directory
215
- // Also check: if fileCount > 1, it's likely a directory
224
+ .filter((stat) => {
225
+ const hasFilesUnder = repoStructure.files.some((file) => file.relativePath.startsWith(stat.name + '/') || file.relativePath.startsWith(stat.name + '\\'));
226
+ const isDirectory = repoStructure.directories.some((directory) => directory.relativePath === stat.name || path.basename(directory.relativePath) === stat.name);
216
227
  return hasFilesUnder || isDirectory || stat.fileCount > 1;
217
228
  })
218
- .map(stat => ({
229
+ .map((stat) => ({
219
230
  name: stat.name,
220
231
  fileCount: stat.fileCount,
221
232
  description: this.getDirectoryDescription(stat.name),
222
233
  }));
223
- // Build language distribution from files
224
234
  const extensionCounts = new Map();
225
235
  for (const file of repoStructure.files) {
226
236
  const ext = path.extname(file.relativePath).toLowerCase();
@@ -240,18 +250,15 @@ class CodebaseMapGenerator {
240
250
  };
241
251
  }
242
252
  getDirectoryDescription(dirName) {
243
- // Check direct match first
244
253
  const lowerName = dirName.toLowerCase();
245
254
  if (DIRECTORY_DESCRIPTIONS[lowerName]) {
246
255
  return DIRECTORY_DESCRIPTIONS[lowerName];
247
256
  }
248
- // Check partial matches
249
257
  for (const [key, desc] of Object.entries(DIRECTORY_DESCRIPTIONS)) {
250
258
  if (lowerName.includes(key) || key.includes(lowerName)) {
251
259
  return desc;
252
260
  }
253
261
  }
254
- // Infer from naming patterns
255
262
  if (lowerName.includes('test'))
256
263
  return 'Test files';
257
264
  if (lowerName.includes('spec'))
@@ -272,106 +279,70 @@ class CodebaseMapGenerator {
272
279
  moduleExports: [],
273
280
  };
274
281
  }
275
- const layers = semantics.architecture.layers.map(layer => ({
282
+ const layers = semantics.architecture.layers.map((layer) => ({
276
283
  name: layer.name,
277
284
  description: layer.description,
278
- directories: layer.directories.map(d => this.relativePath(repoRoot, d)),
285
+ directories: layer.directories.map((directory) => this.relativePath(repoRoot, directory)),
279
286
  symbolCount: layer.symbols.length,
280
287
  dependsOn: layer.dependsOn,
281
288
  }));
282
- const patterns = semantics.architecture.patterns.map(pattern => ({
289
+ const patterns = semantics.architecture.patterns.map((pattern) => ({
283
290
  name: pattern.name,
284
291
  confidence: pattern.confidence,
285
292
  description: pattern.description,
286
293
  occurrences: pattern.locations.length,
287
294
  }));
288
- // Convert all entry points to relative paths
289
- const allEntryPoints = semantics.architecture.entryPoints.map(ep => this.relativePath(repoRoot, ep));
290
- // Separate main entry points from barrel exports (module exports)
295
+ const allEntryPoints = semantics.architecture.entryPoints.map((entryPoint) => this.relativePath(repoRoot, entryPoint));
291
296
  const { mainEntryPoints, moduleExports } = this.categorizeEntryPoints(allEntryPoints);
292
297
  return {
293
298
  layers,
294
299
  patterns,
295
- entryPoints: allEntryPoints, // Keep for backward compatibility
300
+ entryPoints: allEntryPoints,
296
301
  mainEntryPoints,
297
302
  moduleExports,
298
303
  };
299
304
  }
300
- /**
301
- * Categorize entry points into main (actual CLI/server/library) vs barrel exports
302
- */
303
305
  categorizeEntryPoints(entryPoints) {
304
306
  const mainEntryPoints = [];
305
307
  const moduleExports = [];
306
- // Patterns that indicate a MAIN entry point (not just a barrel export)
307
308
  const mainPatterns = [
308
- /^src\/index\.(ts|js)$/, // Root src/index is the library entry
309
- /^index\.(ts|js)$/, // Root index is package entry
310
- /^src\/main\.(ts|js)$/, // main.ts is usually app entry
311
- /^src\/cli\.(ts|js)$/, // CLI entry point
312
- /^src\/server\.(ts|js)$/, // Server entry point
313
- /^src\/app\.(ts|js)$/, // App entry point
314
- /^bin\//, // Anything in bin/
315
- /^cli\.(ts|js)$/, // Root CLI file
316
- /^server\.(ts|js)$/, // Root server file
317
- /^app\.(ts|js)$/, // Root app file
318
- /^main\.(ts|js)$/, // Root main file
309
+ /^src\/index\.(ts|js)$/,
310
+ /^index\.(ts|js)$/,
311
+ /^src\/main\.(ts|js)$/,
312
+ /^src\/cli\.(ts|js)$/,
313
+ /^src\/server\.(ts|js)$/,
314
+ /^src\/app\.(ts|js)$/,
315
+ /^bin\//,
316
+ /^cli\.(ts|js)$/,
317
+ /^server\.(ts|js)$/,
318
+ /^app\.(ts|js)$/,
319
+ /^main\.(ts|js)$/,
319
320
  ];
320
- // Patterns that indicate a barrel export (just re-exports)
321
321
  const barrelPatterns = [
322
- /\/index\.(ts|js)$/, // Any nested index file is typically a barrel
322
+ /\/index\.(ts|js)$/,
323
323
  ];
324
- for (const ep of entryPoints) {
325
- const isMain = mainPatterns.some(p => p.test(ep));
326
- const isBarrel = barrelPatterns.some(p => p.test(ep)) && !isMain;
324
+ for (const entryPoint of entryPoints) {
325
+ const isMain = mainPatterns.some((pattern) => pattern.test(entryPoint));
326
+ const isBarrel = barrelPatterns.some((pattern) => pattern.test(entryPoint)) && !isMain;
327
327
  if (isMain) {
328
- mainEntryPoints.push(ep);
328
+ mainEntryPoints.push(entryPoint);
329
329
  }
330
330
  else if (isBarrel) {
331
- moduleExports.push(ep);
331
+ moduleExports.push(entryPoint);
332
+ }
333
+ else if (entryPoint.split('/').length <= 2) {
334
+ mainEntryPoints.push(entryPoint);
332
335
  }
333
336
  else {
334
- // Default: if it's a top-level file, consider it main; otherwise barrel
335
- const depth = ep.split('/').length;
336
- if (depth <= 2) {
337
- mainEntryPoints.push(ep);
338
- }
339
- else {
340
- moduleExports.push(ep);
341
- }
337
+ moduleExports.push(entryPoint);
342
338
  }
343
339
  }
344
340
  return { mainEntryPoints, moduleExports };
345
341
  }
346
- buildSymbolsSection(repoRoot, semantics) {
347
- if (!semantics) {
348
- return {
349
- classes: [],
350
- interfaces: [],
351
- functions: [],
352
- types: [],
353
- enums: [],
354
- };
355
- }
356
- return {
357
- classes: this.extractSymbols(semantics.symbols.classes, repoRoot),
358
- interfaces: this.extractSymbols(semantics.symbols.interfaces, repoRoot),
359
- functions: this.extractSymbols(semantics.symbols.functions, repoRoot),
360
- types: this.extractSymbols(semantics.symbols.types, repoRoot),
361
- enums: this.extractSymbols(semantics.symbols.enums, repoRoot),
362
- };
363
- }
364
- buildPublicAPISection(repoRoot, semantics) {
365
- if (!semantics) {
366
- return [];
367
- }
368
- return this.extractSymbols(semantics.architecture.publicAPI, repoRoot);
369
- }
370
342
  buildDependenciesSection(repoRoot, semantics) {
371
343
  if (!semantics) {
372
344
  return { mostImported: [] };
373
345
  }
374
- // Calculate import counts from reverse dependency graph
375
346
  const importCounts = [];
376
347
  for (const [file, importers] of semantics.dependencies.reverseGraph.entries()) {
377
348
  const relativePath = this.relativePath(repoRoot, file);
@@ -381,19 +352,14 @@ class CodebaseMapGenerator {
381
352
  description: this.inferFileDescription(relativePath),
382
353
  });
383
354
  }
384
- // Sort by most imported and take top 20
385
355
  const mostImported = importCounts
386
356
  .sort((a, b) => b.importedBy - a.importedBy)
387
- .slice(0, 20);
357
+ .slice(0, this.maxDependencies);
388
358
  return { mostImported };
389
359
  }
390
- /**
391
- * Infer a description for a file based on its path and name
392
- */
393
360
  inferFileDescription(filePath) {
394
361
  const basename = path.basename(filePath, path.extname(filePath));
395
362
  const dirname = path.dirname(filePath);
396
- // Check common naming patterns
397
363
  if (basename === 'index') {
398
364
  const parentDir = path.basename(dirname);
399
365
  if (parentDir && DIRECTORY_DESCRIPTIONS[parentDir.toLowerCase()]) {
@@ -416,22 +382,21 @@ class CodebaseMapGenerator {
416
382
  if (basename === 'constants' || basename === 'config') {
417
383
  return 'Configuration and constants';
418
384
  }
419
- // Check directory context
420
385
  const dirName = path.basename(dirname).toLowerCase();
421
386
  if (DIRECTORY_DESCRIPTIONS[dirName]) {
422
387
  return DIRECTORY_DESCRIPTIONS[dirName];
423
388
  }
424
389
  return undefined;
425
390
  }
426
- buildStatsSection(semantics) {
391
+ buildStatsSection(repoStructure, semantics) {
427
392
  if (!semantics) {
428
393
  return {
394
+ totalFiles: repoStructure.totalFiles,
429
395
  totalSymbols: 0,
430
396
  exportedSymbols: 0,
431
397
  analysisTimeMs: 0,
432
398
  };
433
399
  }
434
- // Count exported symbols
435
400
  const allSymbols = [
436
401
  ...semantics.symbols.classes,
437
402
  ...semantics.symbols.interfaces,
@@ -439,63 +404,23 @@ class CodebaseMapGenerator {
439
404
  ...semantics.symbols.types,
440
405
  ...semantics.symbols.enums,
441
406
  ];
442
- const exportedCount = allSymbols.filter(s => s.exported).length;
407
+ const exportedCount = allSymbols.filter((symbol) => symbol.exported).length;
443
408
  return {
409
+ totalFiles: semantics.stats.totalFiles || repoStructure.totalFiles,
444
410
  totalSymbols: semantics.stats.totalSymbols,
445
411
  exportedSymbols: exportedCount,
446
412
  analysisTimeMs: semantics.stats.analysisTimeMs,
447
413
  };
448
414
  }
449
- extractSymbols(symbols, repoRoot) {
450
- // Sort by exported first, then alphabetically
451
- const sorted = [...symbols].sort((a, b) => {
452
- if (a.exported !== b.exported) {
453
- return a.exported ? -1 : 1;
454
- }
455
- return a.name.localeCompare(b.name);
456
- });
457
- return sorted.slice(0, this.maxSymbols).map(symbol => this.toSymbolSummary(symbol, repoRoot));
458
- }
459
- toSymbolSummary(symbol, repoRoot) {
460
- const summary = {
461
- name: symbol.name,
462
- kind: symbol.kind,
463
- file: this.relativePath(repoRoot, symbol.location.file),
464
- line: symbol.location.line,
465
- exported: symbol.exported,
466
- };
467
- // Add signature for functions
468
- if (symbol.kind === 'function' && symbol.parameters) {
469
- const params = symbol.parameters
470
- .map(p => (p.type ? `${p.name}: ${p.type}` : p.name))
471
- .join(', ');
472
- const returnType = symbol.returnType ?? 'void';
473
- summary.signature = `(${params}): ${returnType}`;
474
- }
475
- // Add first line of documentation
476
- if (symbol.documentation) {
477
- const firstLine = symbol.documentation.split('\n')[0].trim();
478
- if (firstLine.length > 0) {
479
- summary.description = firstLine.length > 100
480
- ? firstLine.slice(0, 100) + '...'
481
- : firstLine;
482
- }
483
- }
484
- return summary;
485
- }
486
415
  relativePath(repoRoot, filePath) {
487
416
  if (path.isAbsolute(filePath)) {
488
417
  return path.relative(repoRoot, filePath);
489
418
  }
490
419
  return filePath;
491
420
  }
492
- /**
493
- * Build key files section with descriptions and categories
494
- */
495
421
  buildKeyFilesSection(repoStructure, semantics) {
496
422
  const keyFiles = [];
497
423
  const seenPaths = new Set();
498
- // Process all files and check against key file patterns
499
424
  for (const file of repoStructure.files) {
500
425
  const relativePath = file.relativePath;
501
426
  for (const { pattern, description, category } of KEY_FILE_PATTERNS) {
@@ -510,29 +435,26 @@ class CodebaseMapGenerator {
510
435
  }
511
436
  }
512
437
  }
513
- // Add entry points that aren't already included
514
438
  if (semantics) {
515
- for (const ep of semantics.architecture.entryPoints) {
516
- const relativePath = this.relativePath(repoStructure.rootPath, ep);
439
+ for (const entryPoint of semantics.architecture.entryPoints) {
440
+ const relativePath = this.relativePath(repoStructure.rootPath, entryPoint);
517
441
  if (!seenPaths.has(relativePath)) {
518
442
  seenPaths.add(relativePath);
519
- const category = this.inferCategory(relativePath);
520
443
  keyFiles.push({
521
444
  path: relativePath,
522
445
  description: this.inferFileDescription(relativePath) || 'Entry point',
523
- category,
446
+ category: this.inferCategory(relativePath),
524
447
  });
525
448
  }
526
449
  }
527
450
  }
528
- // Sort by category priority then by path
529
451
  const categoryPriority = {
530
- 'entrypoint': 0,
531
- 'config': 1,
532
- 'types': 2,
533
- 'service': 3,
534
- 'generator': 4,
535
- 'util': 5,
452
+ entrypoint: 0,
453
+ config: 1,
454
+ types: 2,
455
+ service: 3,
456
+ generator: 4,
457
+ util: 5,
536
458
  };
537
459
  return keyFiles
538
460
  .sort((a, b) => {
@@ -542,23 +464,19 @@ class CodebaseMapGenerator {
542
464
  return aPriority - bPriority;
543
465
  return a.path.localeCompare(b.path);
544
466
  })
545
- .slice(0, 30); // Limit to 30 key files
467
+ .slice(0, this.maxKeyFiles);
546
468
  }
547
- /**
548
- * Enhance a file description with semantic context if available
549
- */
550
469
  enhanceFileDescription(filePath, defaultDescription, semantics) {
551
470
  if (!semantics)
552
471
  return defaultDescription;
553
- // Try to find symbols in this file to provide more context
554
472
  const allSymbols = [
555
473
  ...semantics.symbols.classes,
556
474
  ...semantics.symbols.interfaces,
557
475
  ...semantics.symbols.functions,
558
476
  ];
559
- const fileSymbols = allSymbols.filter(s => s.location.file.endsWith(filePath) || filePath.endsWith(path.basename(s.location.file)));
477
+ const fileSymbols = allSymbols.filter((symbol) => symbol.location.file.endsWith(filePath) || filePath.endsWith(path.basename(symbol.location.file)));
560
478
  if (fileSymbols.length > 0) {
561
- const mainSymbol = fileSymbols.find(s => s.exported) || fileSymbols[0];
479
+ const mainSymbol = fileSymbols.find((symbol) => symbol.exported) || fileSymbols[0];
562
480
  if (mainSymbol.documentation) {
563
481
  const firstLine = mainSymbol.documentation.split('\n')[0].trim();
564
482
  if (firstLine.length > 0 && firstLine.length <= 100) {
@@ -568,9 +486,6 @@ class CodebaseMapGenerator {
568
486
  }
569
487
  return defaultDescription;
570
488
  }
571
- /**
572
- * Infer category from file path
573
- */
574
489
  inferCategory(filePath) {
575
490
  const lowerPath = filePath.toLowerCase();
576
491
  if (lowerPath.includes('service'))
@@ -583,30 +498,24 @@ class CodebaseMapGenerator {
583
498
  return 'types';
584
499
  if (lowerPath.includes('config') || lowerPath.endsWith('.json'))
585
500
  return 'config';
586
- // Check for entry point patterns
587
501
  const basename = path.basename(filePath).toLowerCase();
588
- if (['index', 'main', 'cli', 'server', 'app'].some(n => basename.startsWith(n))) {
502
+ if (['index', 'main', 'cli', 'server', 'app'].some((name) => basename.startsWith(name))) {
589
503
  return 'entrypoint';
590
504
  }
591
- return 'util'; // Default category
505
+ return 'util';
592
506
  }
593
- /**
594
- * Build navigation hints section
595
- */
596
507
  buildNavigationSection(repoStructure, stackInfo) {
597
- const files = repoStructure.files.map(f => f.relativePath);
598
- // Detect test pattern
508
+ const files = repoStructure.files.map((file) => file.relativePath);
599
509
  let testPattern = 'src/**/*.test.ts';
600
- if (files.some(f => f.includes('__tests__'))) {
510
+ if (files.some((file) => file.includes('__tests__'))) {
601
511
  testPattern = '**/__tests__/**/*.ts';
602
512
  }
603
- else if (files.some(f => f.includes('.spec.'))) {
513
+ else if (files.some((file) => file.includes('.spec.'))) {
604
514
  testPattern = '**/*.spec.ts';
605
515
  }
606
- else if (files.some(f => f.endsWith('.test.ts') || f.endsWith('.test.js'))) {
516
+ else if (files.some((file) => file.endsWith('.test.ts') || file.endsWith('.test.js'))) {
607
517
  testPattern = '**/*.test.{ts,js}';
608
518
  }
609
- // Detect config files
610
519
  const configPatterns = [
611
520
  'package.json',
612
521
  'tsconfig.json',
@@ -624,16 +533,15 @@ class CodebaseMapGenerator {
624
533
  'next.config.js',
625
534
  'next.config.ts',
626
535
  ];
627
- const configFiles = configPatterns.filter(pattern => {
536
+ const configFiles = configPatterns.filter((pattern) => {
628
537
  if (pattern.includes('*')) {
629
- return files.some(f => {
538
+ return files.some((file) => {
630
539
  const regex = new RegExp('^' + pattern.replace(/\./g, '\\.').replace(/\*/g, '.*') + '$');
631
- return regex.test(f);
540
+ return regex.test(file);
632
541
  });
633
542
  }
634
- return files.some(f => f === pattern || f.endsWith('/' + pattern));
543
+ return files.some((file) => file === pattern || file.endsWith('/' + pattern));
635
544
  });
636
- // Detect type definition files
637
545
  const typeFiles = [];
638
546
  for (const file of files) {
639
547
  if (file.endsWith('.d.ts') ||
@@ -643,15 +551,11 @@ class CodebaseMapGenerator {
643
551
  typeFiles.push(file);
644
552
  }
645
553
  }
646
- // Detect main logic directories
647
554
  const mainLogicPatterns = ['src/services', 'src/core', 'src/lib', 'lib', 'src/modules'];
648
- const mainLogic = mainLogicPatterns.filter(pattern => files.some(f => f.startsWith(pattern + '/')));
649
- // Add detected layers from stack info if available
650
- if (stackInfo) {
651
- if (stackInfo.frameworks.includes('nestjs') && !mainLogic.includes('src/modules')) {
652
- if (files.some(f => f.startsWith('src/modules/'))) {
653
- mainLogic.push('src/modules');
654
- }
555
+ const mainLogic = mainLogicPatterns.filter((pattern) => files.some((file) => file.startsWith(pattern + '/')));
556
+ if (stackInfo?.frameworks.includes('nestjs') && !mainLogic.includes('src/modules')) {
557
+ if (files.some((file) => file.startsWith('src/modules/'))) {
558
+ mainLogic.push('src/modules');
655
559
  }
656
560
  }
657
561
  return {