ai-first-cli 1.2.2 → 1.3.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 (475) hide show
  1. package/CHANGELOG.md +292 -6
  2. package/README.md +24 -4
  3. package/dist/analyzers/symbols.d.ts.map +1 -1
  4. package/dist/analyzers/symbols.js +9 -7
  5. package/dist/analyzers/symbols.js.map +1 -1
  6. package/dist/analyzers/techStack.d.ts.map +1 -1
  7. package/dist/analyzers/techStack.js +198 -3
  8. package/dist/analyzers/techStack.js.map +1 -1
  9. package/dist/commands/ai-first.d.ts.map +1 -1
  10. package/dist/commands/ai-first.js +14 -13
  11. package/dist/commands/ai-first.js.map +1 -1
  12. package/dist/core/adapters/baseAdapter.d.ts +1 -1
  13. package/dist/core/adapters/baseAdapter.d.ts.map +1 -1
  14. package/dist/core/adapters/baseAdapter.js +50 -12
  15. package/dist/core/adapters/baseAdapter.js.map +1 -1
  16. package/dist/core/analysis/architectureDetector.d.ts +37 -0
  17. package/dist/core/analysis/architectureDetector.d.ts.map +1 -0
  18. package/dist/core/analysis/architectureDetector.js +316 -0
  19. package/dist/core/analysis/architectureDetector.js.map +1 -0
  20. package/dist/core/analysis/callGraphBuilder.d.ts +37 -0
  21. package/dist/core/analysis/callGraphBuilder.d.ts.map +1 -0
  22. package/dist/core/analysis/callGraphBuilder.js +101 -0
  23. package/dist/core/analysis/callGraphBuilder.js.map +1 -0
  24. package/dist/core/analysis/dependencyAnalyzer.d.ts +45 -0
  25. package/dist/core/analysis/dependencyAnalyzer.d.ts.map +1 -0
  26. package/dist/core/analysis/dependencyAnalyzer.js +98 -0
  27. package/dist/core/analysis/dependencyAnalyzer.js.map +1 -0
  28. package/dist/core/analysis/index.d.ts +5 -0
  29. package/dist/core/analysis/index.d.ts.map +1 -0
  30. package/dist/core/analysis/index.js +5 -0
  31. package/dist/core/analysis/index.js.map +1 -0
  32. package/dist/core/analysis/inheritanceAnalyzer.d.ts +35 -0
  33. package/dist/core/analysis/inheritanceAnalyzer.d.ts.map +1 -0
  34. package/dist/core/analysis/inheritanceAnalyzer.js +115 -0
  35. package/dist/core/analysis/inheritanceAnalyzer.js.map +1 -0
  36. package/dist/core/ccp.d.ts.map +1 -1
  37. package/dist/core/ccp.js +3 -2
  38. package/dist/core/ccp.js.map +1 -1
  39. package/dist/core/generation/aiContextGenerator.d.ts +71 -0
  40. package/dist/core/generation/aiContextGenerator.d.ts.map +1 -0
  41. package/dist/core/generation/aiContextGenerator.js +217 -0
  42. package/dist/core/generation/aiContextGenerator.js.map +1 -0
  43. package/dist/core/generation/architectureGenerator.d.ts +17 -0
  44. package/dist/core/generation/architectureGenerator.d.ts.map +1 -0
  45. package/dist/core/generation/architectureGenerator.js +160 -0
  46. package/dist/core/generation/architectureGenerator.js.map +1 -0
  47. package/dist/core/generation/flowGenerator.d.ts +52 -0
  48. package/dist/core/generation/flowGenerator.d.ts.map +1 -0
  49. package/dist/core/generation/flowGenerator.js +164 -0
  50. package/dist/core/generation/flowGenerator.js.map +1 -0
  51. package/dist/core/generation/index.d.ts +4 -0
  52. package/dist/core/generation/index.d.ts.map +1 -0
  53. package/dist/core/generation/index.js +4 -0
  54. package/dist/core/generation/index.js.map +1 -0
  55. package/dist/core/hierarchyGenerator.d.ts.map +1 -1
  56. package/dist/core/hierarchyGenerator.js +3 -2
  57. package/dist/core/hierarchyGenerator.js.map +1 -1
  58. package/dist/core/parsers/index.d.ts +20 -0
  59. package/dist/core/parsers/index.d.ts.map +1 -0
  60. package/dist/core/parsers/index.js +76 -0
  61. package/dist/core/parsers/index.js.map +1 -0
  62. package/dist/core/parsers/pythonParser.d.ts +37 -0
  63. package/dist/core/parsers/pythonParser.d.ts.map +1 -0
  64. package/dist/core/parsers/pythonParser.js +229 -0
  65. package/dist/core/parsers/pythonParser.js.map +1 -0
  66. package/dist/core/parsers/typescriptParser.d.ts +54 -0
  67. package/dist/core/parsers/typescriptParser.d.ts.map +1 -0
  68. package/dist/core/parsers/typescriptParser.js +291 -0
  69. package/dist/core/parsers/typescriptParser.js.map +1 -0
  70. package/dist/core/pipeline.d.ts +42 -0
  71. package/dist/core/pipeline.d.ts.map +1 -0
  72. package/dist/core/pipeline.js +172 -0
  73. package/dist/core/pipeline.js.map +1 -0
  74. package/dist/core/semanticContexts.d.ts.map +1 -1
  75. package/dist/core/semanticContexts.js +23 -61
  76. package/dist/core/semanticContexts.js.map +1 -1
  77. package/dist/utils/constants.d.ts +46 -0
  78. package/dist/utils/constants.d.ts.map +1 -0
  79. package/dist/utils/constants.js +67 -0
  80. package/dist/utils/constants.js.map +1 -0
  81. package/install.sh +143 -17
  82. package/package.json +1 -1
  83. package/run-all-tests.sh +184 -0
  84. package/src/analyzers/symbols.ts +12 -7
  85. package/src/analyzers/techStack.ts +203 -3
  86. package/src/commands/ai-first.ts +14 -13
  87. package/src/core/adapters/baseAdapter.ts +61 -12
  88. package/src/core/analysis/architectureDetector.ts +487 -0
  89. package/src/core/analysis/callGraphBuilder.ts +158 -0
  90. package/src/core/analysis/dependencyAnalyzer.ts +167 -0
  91. package/src/core/analysis/index.ts +28 -0
  92. package/src/core/analysis/inheritanceAnalyzer.ts +169 -0
  93. package/src/core/ccp.ts +3 -2
  94. package/src/core/generation/aiContextGenerator.ts +335 -0
  95. package/src/core/generation/architectureGenerator.ts +200 -0
  96. package/src/core/generation/flowGenerator.ts +238 -0
  97. package/src/core/generation/index.ts +16 -0
  98. package/src/core/hierarchyGenerator.ts +3 -2
  99. package/src/core/parsers/index.ts +99 -0
  100. package/src/core/parsers/pythonParser.ts +302 -0
  101. package/src/core/parsers/typescriptParser.ts +445 -0
  102. package/src/core/pipeline.ts +241 -0
  103. package/src/core/semanticContexts.ts +25 -67
  104. package/src/utils/constants.ts +78 -0
  105. package/tests/analysis.test.ts +283 -0
  106. package/tests/architectureDetector.test.ts +137 -0
  107. package/tests/generation.test.ts +216 -0
  108. package/tests/parserRegistry.test.ts +139 -0
  109. package/tests/pipeline.integration.test.ts +245 -0
  110. package/tests/pythonParser.test.ts +210 -0
  111. package/tests/typescriptParser.test.ts +197 -0
  112. package/.ai-dev/index.db +0 -0
  113. package/ANALISIS_COMPLETO.md +0 -424
  114. package/ANALISIS_MEJORAS.md +0 -327
  115. package/BUGS.md +0 -455
  116. package/PLAN_MEJORAS.md +0 -216
  117. package/STATUS_ADAPTADORES +0 -126
  118. package/TEST_RESULTS.md +0 -198
  119. package/TEST_RESULTS_COMPARATIVE.md +0 -159
  120. package/TEST_RESULTS_COMPLETE.md +0 -127
  121. package/TEST_RESULTS_COMPREHENSIVE.md +0 -208
  122. package/TEST_RESULTS_PHASE1.md +0 -420
  123. package/ai-context/ai_context.md +0 -130
  124. package/ai-context/ai_rules.md +0 -54
  125. package/ai-context/architecture.md +0 -136
  126. package/ai-context/cache.json +0 -2349
  127. package/ai-context/ccp/jira-123/context.json +0 -7
  128. package/ai-context/context/features/commands.json +0 -18
  129. package/ai-context/context/features/src.json +0 -61
  130. package/ai-context/context/features/test-projects.json +0 -69
  131. package/ai-context/context/flows/account.json +0 -9
  132. package/ai-context/context/flows/ai-first.json +0 -9
  133. package/ai-context/context/flows/api.json +0 -9
  134. package/ai-context/context/flows/auth.json +0 -13
  135. package/ai-context/context/flows/category.json +0 -12
  136. package/ai-context/context/flows/comment.json +0 -16
  137. package/ai-context/context/flows/dashboard.json +0 -9
  138. package/ai-context/context/flows/doctor.json +0 -9
  139. package/ai-context/context/flows/explore.json +0 -9
  140. package/ai-context/context/flows/login.json +0 -9
  141. package/ai-context/context/flows/opportunity.json +0 -9
  142. package/ai-context/context/flows/post.json +0 -18
  143. package/ai-context/context/flows/routes.json +0 -19
  144. package/ai-context/context/flows/user.json +0 -20
  145. package/ai-context/context/flows/users.json +0 -9
  146. package/ai-context/context/flows/views.json +0 -14
  147. package/ai-context/context/repo.json +0 -56
  148. package/ai-context/context/utils.json +0 -7
  149. package/ai-context/conventions.md +0 -53
  150. package/ai-context/dependencies.json +0 -2946
  151. package/ai-context/embeddings.json +0 -23828
  152. package/ai-context/entrypoints.md +0 -42
  153. package/ai-context/files.json +0 -2944
  154. package/ai-context/git/commit-activity.json +0 -8646
  155. package/ai-context/git/recent-features.json +0 -1
  156. package/ai-context/git/recent-files.json +0 -52
  157. package/ai-context/git/recent-flows.json +0 -1
  158. package/ai-context/graph/knowledge-graph.json +0 -44314
  159. package/ai-context/graph/module-graph.json +0 -866
  160. package/ai-context/graph/symbol-graph.json +0 -200622
  161. package/ai-context/graph/symbol-references.json +0 -6778
  162. package/ai-context/hierarchy.json +0 -20
  163. package/ai-context/index-state.json +0 -4340
  164. package/ai-context/index.db +0 -0
  165. package/ai-context/modules.json +0 -532
  166. package/ai-context/project.json +0 -30
  167. package/ai-context/repo_map.json +0 -5818
  168. package/ai-context/repo_map.md +0 -1327
  169. package/ai-context/schema.json +0 -5
  170. package/ai-context/summary.md +0 -42
  171. package/ai-context/symbols.json +0 -7
  172. package/ai-context/tech_stack.md +0 -46
  173. package/ai-context/tools.json +0 -10
  174. package/test-projects/django-app/.ai-dev/index.db +0 -0
  175. package/test-projects/django-app/ai-context/ai_context.md +0 -92
  176. package/test-projects/django-app/ai-context/ai_rules.md +0 -47
  177. package/test-projects/django-app/ai-context/architecture.md +0 -57
  178. package/test-projects/django-app/ai-context/cache.json +0 -169
  179. package/test-projects/django-app/ai-context/context/flows/views.json +0 -10
  180. package/test-projects/django-app/ai-context/conventions.md +0 -51
  181. package/test-projects/django-app/ai-context/dependencies.json +0 -312
  182. package/test-projects/django-app/ai-context/entrypoints.md +0 -4
  183. package/test-projects/django-app/ai-context/files.json +0 -209
  184. package/test-projects/django-app/ai-context/graph/knowledge-graph.json +0 -36
  185. package/test-projects/django-app/ai-context/graph/module-graph.json +0 -145
  186. package/test-projects/django-app/ai-context/graph/symbol-graph.json +0 -1488
  187. package/test-projects/django-app/ai-context/graph/symbol-references.json +0 -1
  188. package/test-projects/django-app/ai-context/index-state.json +0 -294
  189. package/test-projects/django-app/ai-context/index.db +0 -0
  190. package/test-projects/django-app/ai-context/modules.json +0 -35
  191. package/test-projects/django-app/ai-context/project.json +0 -11
  192. package/test-projects/django-app/ai-context/repo_map.json +0 -412
  193. package/test-projects/django-app/ai-context/repo_map.md +0 -105
  194. package/test-projects/django-app/ai-context/schema.json +0 -5
  195. package/test-projects/django-app/ai-context/summary.md +0 -15
  196. package/test-projects/django-app/ai-context/symbols.json +0 -1
  197. package/test-projects/django-app/ai-context/tech_stack.md +0 -32
  198. package/test-projects/django-app/ai-context/tools.json +0 -10
  199. package/test-projects/express-api/ai-context/ai_context.md +0 -112
  200. package/test-projects/express-api/ai-context/ai_rules.md +0 -50
  201. package/test-projects/express-api/ai-context/architecture.md +0 -62
  202. package/test-projects/express-api/ai-context/context/features/controllers.json +0 -13
  203. package/test-projects/express-api/ai-context/context/features/services.json +0 -13
  204. package/test-projects/express-api/ai-context/context/flows/auth.json +0 -12
  205. package/test-projects/express-api/ai-context/context/flows/user.json +0 -13
  206. package/test-projects/express-api/ai-context/conventions.md +0 -51
  207. package/test-projects/express-api/ai-context/dependencies.json +0 -54
  208. package/test-projects/express-api/ai-context/entrypoints.md +0 -17
  209. package/test-projects/express-api/ai-context/modules.json +0 -30
  210. package/test-projects/express-api/ai-context/project.json +0 -15
  211. package/test-projects/express-api/ai-context/repo_map.json +0 -100
  212. package/test-projects/express-api/ai-context/repo_map.md +0 -36
  213. package/test-projects/express-api/ai-context/schema.json +0 -5
  214. package/test-projects/express-api/ai-context/summary.md +0 -14
  215. package/test-projects/express-api/ai-context/symbols.json +0 -7
  216. package/test-projects/express-api/ai-context/tech_stack.md +0 -38
  217. package/test-projects/express-api/ai-context/tools.json +0 -10
  218. package/test-projects/fastapi-app/.ai-dev/index.db +0 -0
  219. package/test-projects/fastapi-app/ai-context/ai_context.md +0 -89
  220. package/test-projects/fastapi-app/ai-context/ai_rules.md +0 -47
  221. package/test-projects/fastapi-app/ai-context/architecture.md +0 -39
  222. package/test-projects/fastapi-app/ai-context/cache.json +0 -125
  223. package/test-projects/fastapi-app/ai-context/conventions.md +0 -51
  224. package/test-projects/fastapi-app/ai-context/dependencies.json +0 -244
  225. package/test-projects/fastapi-app/ai-context/entrypoints.md +0 -4
  226. package/test-projects/fastapi-app/ai-context/files.json +0 -154
  227. package/test-projects/fastapi-app/ai-context/graph/knowledge-graph.json +0 -15
  228. package/test-projects/fastapi-app/ai-context/graph/module-graph.json +0 -78
  229. package/test-projects/fastapi-app/ai-context/graph/symbol-graph.json +0 -1724
  230. package/test-projects/fastapi-app/ai-context/graph/symbol-references.json +0 -51
  231. package/test-projects/fastapi-app/ai-context/index-state.json +0 -217
  232. package/test-projects/fastapi-app/ai-context/index.db +0 -0
  233. package/test-projects/fastapi-app/ai-context/modules.json +0 -16
  234. package/test-projects/fastapi-app/ai-context/project.json +0 -9
  235. package/test-projects/fastapi-app/ai-context/repo_map.json +0 -298
  236. package/test-projects/fastapi-app/ai-context/repo_map.md +0 -74
  237. package/test-projects/fastapi-app/ai-context/schema.json +0 -5
  238. package/test-projects/fastapi-app/ai-context/summary.md +0 -12
  239. package/test-projects/fastapi-app/ai-context/symbols.json +0 -1
  240. package/test-projects/fastapi-app/ai-context/tech_stack.md +0 -32
  241. package/test-projects/fastapi-app/ai-context/tools.json +0 -10
  242. package/test-projects/flask-app/.ai-dev/index.db +0 -0
  243. package/test-projects/flask-app/ai-context/ai_context.md +0 -94
  244. package/test-projects/flask-app/ai-context/ai_rules.md +0 -47
  245. package/test-projects/flask-app/ai-context/architecture.md +0 -49
  246. package/test-projects/flask-app/ai-context/cache.json +0 -157
  247. package/test-projects/flask-app/ai-context/context/features/app.json +0 -25
  248. package/test-projects/flask-app/ai-context/context/flows/routes.json +0 -14
  249. package/test-projects/flask-app/ai-context/conventions.md +0 -51
  250. package/test-projects/flask-app/ai-context/dependencies.json +0 -298
  251. package/test-projects/flask-app/ai-context/entrypoints.md +0 -4
  252. package/test-projects/flask-app/ai-context/files.json +0 -194
  253. package/test-projects/flask-app/ai-context/graph/knowledge-graph.json +0 -60
  254. package/test-projects/flask-app/ai-context/graph/module-graph.json +0 -95
  255. package/test-projects/flask-app/ai-context/graph/symbol-graph.json +0 -1448
  256. package/test-projects/flask-app/ai-context/graph/symbol-references.json +0 -45
  257. package/test-projects/flask-app/ai-context/index-state.json +0 -273
  258. package/test-projects/flask-app/ai-context/index.db +0 -0
  259. package/test-projects/flask-app/ai-context/modules.json +0 -21
  260. package/test-projects/flask-app/ai-context/project.json +0 -13
  261. package/test-projects/flask-app/ai-context/repo_map.json +0 -400
  262. package/test-projects/flask-app/ai-context/repo_map.md +0 -98
  263. package/test-projects/flask-app/ai-context/schema.json +0 -5
  264. package/test-projects/flask-app/ai-context/summary.md +0 -13
  265. package/test-projects/flask-app/ai-context/symbols.json +0 -1
  266. package/test-projects/flask-app/ai-context/tech_stack.md +0 -32
  267. package/test-projects/flask-app/ai-context/tools.json +0 -10
  268. package/test-projects/laravel-app/.ai-dev/index.db +0 -0
  269. package/test-projects/laravel-app/ai-context/ai_context.md +0 -97
  270. package/test-projects/laravel-app/ai-context/ai_rules.md +0 -47
  271. package/test-projects/laravel-app/ai-context/architecture.md +0 -60
  272. package/test-projects/laravel-app/ai-context/cache.json +0 -161
  273. package/test-projects/laravel-app/ai-context/context/features/app.json +0 -21
  274. package/test-projects/laravel-app/ai-context/context/flows/.json +0 -9
  275. package/test-projects/laravel-app/ai-context/context/flows/category.json +0 -12
  276. package/test-projects/laravel-app/ai-context/context/flows/comment.json +0 -12
  277. package/test-projects/laravel-app/ai-context/context/flows/post.json +0 -12
  278. package/test-projects/laravel-app/ai-context/context/flows/unnamed.json +0 -9
  279. package/test-projects/laravel-app/ai-context/conventions.md +0 -51
  280. package/test-projects/laravel-app/ai-context/dependencies.json +0 -6
  281. package/test-projects/laravel-app/ai-context/entrypoints.md +0 -4
  282. package/test-projects/laravel-app/ai-context/files.json +0 -199
  283. package/test-projects/laravel-app/ai-context/graph/knowledge-graph.json +0 -98
  284. package/test-projects/laravel-app/ai-context/graph/module-graph.json +0 -30
  285. package/test-projects/laravel-app/ai-context/graph/symbol-graph.json +0 -5
  286. package/test-projects/laravel-app/ai-context/graph/symbol-references.json +0 -1
  287. package/test-projects/laravel-app/ai-context/index-state.json +0 -280
  288. package/test-projects/laravel-app/ai-context/index.db +0 -0
  289. package/test-projects/laravel-app/ai-context/modules.json +0 -29
  290. package/test-projects/laravel-app/ai-context/project.json +0 -17
  291. package/test-projects/laravel-app/ai-context/repo_map.json +0 -419
  292. package/test-projects/laravel-app/ai-context/repo_map.md +0 -106
  293. package/test-projects/laravel-app/ai-context/schema.json +0 -5
  294. package/test-projects/laravel-app/ai-context/summary.md +0 -15
  295. package/test-projects/laravel-app/ai-context/symbols.json +0 -1
  296. package/test-projects/laravel-app/ai-context/tech_stack.md +0 -34
  297. package/test-projects/laravel-app/ai-context/tools.json +0 -10
  298. package/test-projects/nestjs-backend/.ai-dev/index.db +0 -0
  299. package/test-projects/nestjs-backend/ai-context/ai_context.md +0 -111
  300. package/test-projects/nestjs-backend/ai-context/ai_rules.md +0 -52
  301. package/test-projects/nestjs-backend/ai-context/architecture.md +0 -49
  302. package/test-projects/nestjs-backend/ai-context/cache.json +0 -169
  303. package/test-projects/nestjs-backend/ai-context/context/features/src.json +0 -23
  304. package/test-projects/nestjs-backend/ai-context/context/flows/auth.controller.json +0 -14
  305. package/test-projects/nestjs-backend/ai-context/context/flows/auth.json +0 -10
  306. package/test-projects/nestjs-backend/ai-context/context/flows/users..json +0 -10
  307. package/test-projects/nestjs-backend/ai-context/context/flows/users.controller.json +0 -14
  308. package/test-projects/nestjs-backend/ai-context/context/flows/users.json +0 -10
  309. package/test-projects/nestjs-backend/ai-context/conventions.md +0 -52
  310. package/test-projects/nestjs-backend/ai-context/dependencies.json +0 -152
  311. package/test-projects/nestjs-backend/ai-context/entrypoints.md +0 -18
  312. package/test-projects/nestjs-backend/ai-context/files.json +0 -209
  313. package/test-projects/nestjs-backend/ai-context/graph/knowledge-graph.json +0 -132
  314. package/test-projects/nestjs-backend/ai-context/graph/module-graph.json +0 -29
  315. package/test-projects/nestjs-backend/ai-context/graph/symbol-graph.json +0 -304
  316. package/test-projects/nestjs-backend/ai-context/graph/symbol-references.json +0 -5
  317. package/test-projects/nestjs-backend/ai-context/index-state.json +0 -294
  318. package/test-projects/nestjs-backend/ai-context/index.db +0 -0
  319. package/test-projects/nestjs-backend/ai-context/modules.json +0 -19
  320. package/test-projects/nestjs-backend/ai-context/project.json +0 -18
  321. package/test-projects/nestjs-backend/ai-context/repo_map.json +0 -427
  322. package/test-projects/nestjs-backend/ai-context/repo_map.md +0 -104
  323. package/test-projects/nestjs-backend/ai-context/schema.json +0 -5
  324. package/test-projects/nestjs-backend/ai-context/summary.md +0 -13
  325. package/test-projects/nestjs-backend/ai-context/symbols.json +0 -1
  326. package/test-projects/nestjs-backend/ai-context/tech_stack.md +0 -38
  327. package/test-projects/nestjs-backend/ai-context/tools.json +0 -10
  328. package/test-projects/python-cli/.ai-dev/index.db +0 -0
  329. package/test-projects/python-cli/ai-context/ai_context.md +0 -95
  330. package/test-projects/python-cli/ai-context/ai_rules.md +0 -47
  331. package/test-projects/python-cli/ai-context/architecture.md +0 -55
  332. package/test-projects/python-cli/ai-context/cache.json +0 -149
  333. package/test-projects/python-cli/ai-context/context/features/cli.json +0 -16
  334. package/test-projects/python-cli/ai-context/context/flows/list_.json +0 -9
  335. package/test-projects/python-cli/ai-context/context/flows/remove_.json +0 -9
  336. package/test-projects/python-cli/ai-context/conventions.md +0 -51
  337. package/test-projects/python-cli/ai-context/dependencies.json +0 -66
  338. package/test-projects/python-cli/ai-context/entrypoints.md +0 -4
  339. package/test-projects/python-cli/ai-context/files.json +0 -184
  340. package/test-projects/python-cli/ai-context/graph/knowledge-graph.json +0 -83
  341. package/test-projects/python-cli/ai-context/graph/module-graph.json +0 -31
  342. package/test-projects/python-cli/ai-context/graph/symbol-graph.json +0 -358
  343. package/test-projects/python-cli/ai-context/graph/symbol-references.json +0 -11
  344. package/test-projects/python-cli/ai-context/index-state.json +0 -259
  345. package/test-projects/python-cli/ai-context/index.db +0 -0
  346. package/test-projects/python-cli/ai-context/modules.json +0 -21
  347. package/test-projects/python-cli/ai-context/project.json +0 -15
  348. package/test-projects/python-cli/ai-context/repo_map.json +0 -367
  349. package/test-projects/python-cli/ai-context/repo_map.md +0 -93
  350. package/test-projects/python-cli/ai-context/schema.json +0 -5
  351. package/test-projects/python-cli/ai-context/summary.md +0 -14
  352. package/test-projects/python-cli/ai-context/symbols.json +0 -1
  353. package/test-projects/python-cli/ai-context/tech_stack.md +0 -32
  354. package/test-projects/python-cli/ai-context/tools.json +0 -10
  355. package/test-projects/rails-app/.ai-dev/index.db +0 -0
  356. package/test-projects/rails-app/ai-context/ai_context.md +0 -94
  357. package/test-projects/rails-app/ai-context/ai_rules.md +0 -47
  358. package/test-projects/rails-app/ai-context/architecture.md +0 -49
  359. package/test-projects/rails-app/ai-context/cache.json +0 -193
  360. package/test-projects/rails-app/ai-context/context/features/app.json +0 -24
  361. package/test-projects/rails-app/ai-context/context/features/config.json +0 -13
  362. package/test-projects/rails-app/ai-context/context/flows/application.json +0 -9
  363. package/test-projects/rails-app/ai-context/context/flows/application_.json +0 -9
  364. package/test-projects/rails-app/ai-context/context/flows/comments.json +0 -11
  365. package/test-projects/rails-app/ai-context/context/flows/comments_.json +0 -11
  366. package/test-projects/rails-app/ai-context/context/flows/posts.json +0 -11
  367. package/test-projects/rails-app/ai-context/context/flows/posts_.json +0 -11
  368. package/test-projects/rails-app/ai-context/context/flows/routes.json +0 -9
  369. package/test-projects/rails-app/ai-context/context/flows/users.json +0 -11
  370. package/test-projects/rails-app/ai-context/context/flows/users_.json +0 -11
  371. package/test-projects/rails-app/ai-context/conventions.md +0 -51
  372. package/test-projects/rails-app/ai-context/dependencies.json +0 -6
  373. package/test-projects/rails-app/ai-context/entrypoints.md +0 -4
  374. package/test-projects/rails-app/ai-context/files.json +0 -239
  375. package/test-projects/rails-app/ai-context/graph/knowledge-graph.json +0 -130
  376. package/test-projects/rails-app/ai-context/graph/module-graph.json +0 -27
  377. package/test-projects/rails-app/ai-context/graph/symbol-graph.json +0 -5
  378. package/test-projects/rails-app/ai-context/graph/symbol-references.json +0 -1
  379. package/test-projects/rails-app/ai-context/index-state.json +0 -336
  380. package/test-projects/rails-app/ai-context/index.db +0 -0
  381. package/test-projects/rails-app/ai-context/modules.json +0 -26
  382. package/test-projects/rails-app/ai-context/project.json +0 -22
  383. package/test-projects/rails-app/ai-context/repo_map.json +0 -486
  384. package/test-projects/rails-app/ai-context/repo_map.md +0 -117
  385. package/test-projects/rails-app/ai-context/schema.json +0 -5
  386. package/test-projects/rails-app/ai-context/summary.md +0 -13
  387. package/test-projects/rails-app/ai-context/symbols.json +0 -1
  388. package/test-projects/rails-app/ai-context/tech_stack.md +0 -32
  389. package/test-projects/rails-app/ai-context/tools.json +0 -10
  390. package/test-projects/react-app/.ai-dev/index.db +0 -0
  391. package/test-projects/react-app/ai-context/ai_context.md +0 -96
  392. package/test-projects/react-app/ai-context/ai_rules.md +0 -49
  393. package/test-projects/react-app/ai-context/architecture.md +0 -39
  394. package/test-projects/react-app/ai-context/cache.json +0 -153
  395. package/test-projects/react-app/ai-context/context/features/src.json +0 -18
  396. package/test-projects/react-app/ai-context/context/flows/UsersPage.json +0 -14
  397. package/test-projects/react-app/ai-context/context/flows/dashboard.json +0 -9
  398. package/test-projects/react-app/ai-context/context/flows/login.json +0 -9
  399. package/test-projects/react-app/ai-context/context/flows/users.json +0 -9
  400. package/test-projects/react-app/ai-context/conventions.md +0 -52
  401. package/test-projects/react-app/ai-context/dependencies.json +0 -128
  402. package/test-projects/react-app/ai-context/entrypoints.md +0 -4
  403. package/test-projects/react-app/ai-context/files.json +0 -189
  404. package/test-projects/react-app/ai-context/graph/knowledge-graph.json +0 -112
  405. package/test-projects/react-app/ai-context/graph/module-graph.json +0 -31
  406. package/test-projects/react-app/ai-context/graph/symbol-graph.json +0 -868
  407. package/test-projects/react-app/ai-context/graph/symbol-references.json +0 -31
  408. package/test-projects/react-app/ai-context/index-state.json +0 -266
  409. package/test-projects/react-app/ai-context/index.db +0 -0
  410. package/test-projects/react-app/ai-context/modules.json +0 -17
  411. package/test-projects/react-app/ai-context/project.json +0 -16
  412. package/test-projects/react-app/ai-context/repo_map.json +0 -391
  413. package/test-projects/react-app/ai-context/repo_map.md +0 -94
  414. package/test-projects/react-app/ai-context/schema.json +0 -5
  415. package/test-projects/react-app/ai-context/summary.md +0 -13
  416. package/test-projects/react-app/ai-context/symbols.json +0 -1
  417. package/test-projects/react-app/ai-context/tech_stack.md +0 -39
  418. package/test-projects/react-app/ai-context/tools.json +0 -10
  419. package/test-projects/salesforce-cli/.ai-dev/index.db +0 -0
  420. package/test-projects/salesforce-cli/ai-context/ai_context.md +0 -89
  421. package/test-projects/salesforce-cli/ai-context/ai_rules.md +0 -47
  422. package/test-projects/salesforce-cli/ai-context/architecture.md +0 -39
  423. package/test-projects/salesforce-cli/ai-context/cache.json +0 -125
  424. package/test-projects/salesforce-cli/ai-context/context/features/force-app.json +0 -14
  425. package/test-projects/salesforce-cli/ai-context/context/flows/account.json +0 -9
  426. package/test-projects/salesforce-cli/ai-context/context/flows/opportunity.json +0 -9
  427. package/test-projects/salesforce-cli/ai-context/conventions.md +0 -51
  428. package/test-projects/salesforce-cli/ai-context/dependencies.json +0 -6
  429. package/test-projects/salesforce-cli/ai-context/entrypoints.md +0 -4
  430. package/test-projects/salesforce-cli/ai-context/files.json +0 -154
  431. package/test-projects/salesforce-cli/ai-context/graph/knowledge-graph.json +0 -64
  432. package/test-projects/salesforce-cli/ai-context/graph/module-graph.json +0 -13
  433. package/test-projects/salesforce-cli/ai-context/graph/symbol-graph.json +0 -148
  434. package/test-projects/salesforce-cli/ai-context/graph/symbol-references.json +0 -1
  435. package/test-projects/salesforce-cli/ai-context/index-state.json +0 -217
  436. package/test-projects/salesforce-cli/ai-context/index.db +0 -0
  437. package/test-projects/salesforce-cli/ai-context/modules.json +0 -12
  438. package/test-projects/salesforce-cli/ai-context/project.json +0 -14
  439. package/test-projects/salesforce-cli/ai-context/repo_map.json +0 -328
  440. package/test-projects/salesforce-cli/ai-context/repo_map.md +0 -80
  441. package/test-projects/salesforce-cli/ai-context/schema.json +0 -5
  442. package/test-projects/salesforce-cli/ai-context/summary.md +0 -13
  443. package/test-projects/salesforce-cli/ai-context/symbols.json +0 -1
  444. package/test-projects/salesforce-cli/ai-context/tech_stack.md +0 -31
  445. package/test-projects/salesforce-cli/ai-context/tools.json +0 -10
  446. package/test-projects/spring-boot-app/.ai-dev/index.db +0 -0
  447. package/test-projects/spring-boot-app/ai-context/ai_context.md +0 -91
  448. package/test-projects/spring-boot-app/ai-context/ai_rules.md +0 -48
  449. package/test-projects/spring-boot-app/ai-context/architecture.md +0 -39
  450. package/test-projects/spring-boot-app/ai-context/cache.json +0 -173
  451. package/test-projects/spring-boot-app/ai-context/context/features/src.json +0 -26
  452. package/test-projects/spring-boot-app/ai-context/context/flows/PostController.json +0 -19
  453. package/test-projects/spring-boot-app/ai-context/context/flows/UserController.json +0 -19
  454. package/test-projects/spring-boot-app/ai-context/context/flows/comment.json +0 -11
  455. package/test-projects/spring-boot-app/ai-context/context/flows/post.json +0 -14
  456. package/test-projects/spring-boot-app/ai-context/context/flows/user.json +0 -14
  457. package/test-projects/spring-boot-app/ai-context/conventions.md +0 -52
  458. package/test-projects/spring-boot-app/ai-context/dependencies.json +0 -326
  459. package/test-projects/spring-boot-app/ai-context/entrypoints.md +0 -4
  460. package/test-projects/spring-boot-app/ai-context/files.json +0 -214
  461. package/test-projects/spring-boot-app/ai-context/graph/knowledge-graph.json +0 -231
  462. package/test-projects/spring-boot-app/ai-context/graph/module-graph.json +0 -22
  463. package/test-projects/spring-boot-app/ai-context/graph/symbol-graph.json +0 -794
  464. package/test-projects/spring-boot-app/ai-context/graph/symbol-references.json +0 -70
  465. package/test-projects/spring-boot-app/ai-context/index-state.json +0 -301
  466. package/test-projects/spring-boot-app/ai-context/index.db +0 -0
  467. package/test-projects/spring-boot-app/ai-context/modules.json +0 -21
  468. package/test-projects/spring-boot-app/ai-context/project.json +0 -17
  469. package/test-projects/spring-boot-app/ai-context/repo_map.json +0 -461
  470. package/test-projects/spring-boot-app/ai-context/repo_map.md +0 -109
  471. package/test-projects/spring-boot-app/ai-context/schema.json +0 -5
  472. package/test-projects/spring-boot-app/ai-context/summary.md +0 -12
  473. package/test-projects/spring-boot-app/ai-context/symbols.json +0 -1
  474. package/test-projects/spring-boot-app/ai-context/tech_stack.md +0 -32
  475. package/test-projects/spring-boot-app/ai-context/tools.json +0 -10
@@ -0,0 +1,37 @@
1
+ export interface PythonSymbol {
2
+ name: string;
3
+ type: "class" | "function" | "method" | "variable" | "import";
4
+ line: number;
5
+ decorators?: string[];
6
+ parameters?: {
7
+ name: string;
8
+ type?: string;
9
+ default?: string;
10
+ }[];
11
+ inheritance?: string[];
12
+ docstring?: string;
13
+ isAsync?: boolean;
14
+ isExported?: boolean;
15
+ }
16
+ export interface ParsedPythonFile {
17
+ filePath: string;
18
+ symbols: PythonSymbol[];
19
+ imports: {
20
+ module: string;
21
+ names?: string[];
22
+ alias?: string;
23
+ isFromImport: boolean;
24
+ }[];
25
+ }
26
+ export declare class PythonParser {
27
+ parseFile(filePath: string, sourceText: string): ParsedPythonFile;
28
+ private parseImport;
29
+ private parseClass;
30
+ private parseFunction;
31
+ private parseParameters;
32
+ private extractDocstring;
33
+ private findClassEnd;
34
+ private isMethodOfClass;
35
+ }
36
+ export declare const pythonParser: PythonParser;
37
+ //# sourceMappingURL=pythonParser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pythonParser.d.ts","sourceRoot":"","sources":["../../../src/core/parsers/pythonParser.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,OAAO,GAAG,UAAU,GAAG,QAAQ,GAAG,UAAU,GAAG,QAAQ,CAAC;IAC9D,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,UAAU,CAAC,EAAE;QACX,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,EAAE,CAAC;IACJ,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,YAAY,EAAE,CAAC;IACxB,OAAO,EAAE;QACP,MAAM,EAAE,MAAM,CAAC;QACf,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;QACjB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,YAAY,EAAE,OAAO,CAAC;KACvB,EAAE,CAAC;CACL;AAED,qBAAa,YAAY;IACvB,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,gBAAgB;IA0GjE,OAAO,CAAC,WAAW;IAuBnB,OAAO,CAAC,UAAU;IA2BlB,OAAO,CAAC,aAAa;IA0BrB,OAAO,CAAC,eAAe;IA4BvB,OAAO,CAAC,gBAAgB;IAwBxB,OAAO,CAAC,YAAY;IA6BpB,OAAO,CAAC,eAAe;CAQxB;AAED,eAAO,MAAM,YAAY,cAAqB,CAAC"}
@@ -0,0 +1,229 @@
1
+ export class PythonParser {
2
+ parseFile(filePath, sourceText) {
3
+ const lines = sourceText.split("\n");
4
+ const symbols = [];
5
+ const imports = [];
6
+ let currentClass = null;
7
+ let i = 0;
8
+ while (i < lines.length) {
9
+ const line = lines[i];
10
+ const trimmedLine = line.trim();
11
+ const lineNumber = i + 1;
12
+ // Skip empty lines and comments
13
+ if (!trimmedLine || trimmedLine.startsWith("#")) {
14
+ i++;
15
+ continue;
16
+ }
17
+ // Parse imports
18
+ if (trimmedLine.startsWith("import ") || trimmedLine.startsWith("from ")) {
19
+ const importInfo = this.parseImport(trimmedLine);
20
+ if (importInfo) {
21
+ imports.push(importInfo);
22
+ }
23
+ i++;
24
+ continue;
25
+ }
26
+ // Check for decorators
27
+ const decorators = [];
28
+ let j = i;
29
+ while (j < lines.length && lines[j].trim().startsWith("@")) {
30
+ decorators.push(lines[j].trim().substring(1).split("(")[0]);
31
+ j++;
32
+ }
33
+ if (decorators.length > 0) {
34
+ i = j;
35
+ const nextLine = lines[i]?.trim() || "";
36
+ // Class with decorators
37
+ if (nextLine.startsWith("class ")) {
38
+ const classSymbol = this.parseClass(nextLine, lineNumber, decorators, lines, i);
39
+ if (classSymbol) {
40
+ symbols.push(classSymbol);
41
+ currentClass = classSymbol;
42
+ }
43
+ i = this.findClassEnd(lines, i);
44
+ continue;
45
+ }
46
+ // Function with decorators
47
+ if (nextLine.startsWith("def ") || nextLine.startsWith("async def ")) {
48
+ const funcSymbol = this.parseFunction(nextLine, lineNumber, decorators);
49
+ if (funcSymbol) {
50
+ if (currentClass && this.isMethodOfClass(funcSymbol.name, lines, i, currentClass)) {
51
+ funcSymbol.type = "method";
52
+ }
53
+ symbols.push(funcSymbol);
54
+ }
55
+ }
56
+ i++;
57
+ continue;
58
+ }
59
+ // Parse class
60
+ if (trimmedLine.startsWith("class ")) {
61
+ const classSymbol = this.parseClass(trimmedLine, lineNumber, [], lines, i);
62
+ if (classSymbol) {
63
+ symbols.push(classSymbol);
64
+ currentClass = classSymbol;
65
+ }
66
+ i = this.findClassEnd(lines, i);
67
+ continue;
68
+ }
69
+ // Parse function
70
+ if (trimmedLine.startsWith("def ") || trimmedLine.startsWith("async def ")) {
71
+ const funcSymbol = this.parseFunction(trimmedLine, lineNumber, []);
72
+ if (funcSymbol) {
73
+ if (currentClass && this.isMethodOfClass(funcSymbol.name, lines, i, currentClass)) {
74
+ funcSymbol.type = "method";
75
+ }
76
+ symbols.push(funcSymbol);
77
+ }
78
+ i++;
79
+ continue;
80
+ }
81
+ // Detect class end by indentation
82
+ if (currentClass && !line.startsWith(" ") && !line.startsWith("\t") && trimmedLine) {
83
+ currentClass = null;
84
+ }
85
+ i++;
86
+ }
87
+ return {
88
+ filePath,
89
+ symbols,
90
+ imports,
91
+ };
92
+ }
93
+ parseImport(line) {
94
+ // from module import name1, name2
95
+ const fromMatch = line.match(/from\s+(\S+)\s+import\s+(.+)/);
96
+ if (fromMatch) {
97
+ const module = fromMatch[1];
98
+ const namesPart = fromMatch[2];
99
+ const names = namesPart.split(",").map(n => n.trim().split(" ")[0]);
100
+ return { module, names, isFromImport: true };
101
+ }
102
+ // import module or import module as alias
103
+ const importMatch = line.match(/import\s+(.+)/);
104
+ if (importMatch) {
105
+ const modules = importMatch[1].split(",").map(m => {
106
+ const parts = m.trim().split(/\s+as\s+/);
107
+ return { module: parts[0], alias: parts[1] };
108
+ });
109
+ return { module: modules[0].module, alias: modules[0].alias, isFromImport: false };
110
+ }
111
+ return null;
112
+ }
113
+ parseClass(line, lineNumber, decorators, lines, startIndex) {
114
+ const match = line.match(/class\s+(\w+)(?:\(([^)]+)\))?/);
115
+ if (!match)
116
+ return null;
117
+ const name = match[1];
118
+ const inheritance = match[2] ? match[2].split(",").map(s => s.trim()) : [];
119
+ // Extract docstring
120
+ const docstring = this.extractDocstring(lines, startIndex);
121
+ return {
122
+ name,
123
+ type: "class",
124
+ line: lineNumber,
125
+ decorators: decorators.length > 0 ? decorators : undefined,
126
+ inheritance: inheritance.length > 0 ? inheritance : undefined,
127
+ docstring,
128
+ isExported: true,
129
+ };
130
+ }
131
+ parseFunction(line, lineNumber, decorators) {
132
+ const isAsync = line.startsWith("async ");
133
+ const defKeyword = isAsync ? "async def" : "def";
134
+ const match = line.match(new RegExp(`${defKeyword}\\s+(\\w+)\\s*\\(([^)]*)\\)`));
135
+ if (!match)
136
+ return null;
137
+ const name = match[1];
138
+ const paramsStr = match[2];
139
+ const parameters = this.parseParameters(paramsStr);
140
+ return {
141
+ name,
142
+ type: "function",
143
+ line: lineNumber,
144
+ decorators: decorators.length > 0 ? decorators : undefined,
145
+ parameters: parameters.length > 0 ? parameters : [],
146
+ isAsync,
147
+ isExported: true,
148
+ };
149
+ }
150
+ parseParameters(paramsStr) {
151
+ if (!paramsStr.trim())
152
+ return [];
153
+ return paramsStr.split(",").map(param => {
154
+ const trimmed = param.trim();
155
+ if (!trimmed || trimmed === "self" || trimmed === "cls")
156
+ return null;
157
+ // Handle type hints and defaults
158
+ const parts = trimmed.split("=");
159
+ const nameAndType = parts[0].trim();
160
+ const defaultValue = parts[1]?.trim();
161
+ const typeMatch = nameAndType.match(/(.+):\s*(.+)/);
162
+ if (typeMatch) {
163
+ return {
164
+ name: typeMatch[1].trim(),
165
+ type: typeMatch[2].trim(),
166
+ default: defaultValue,
167
+ };
168
+ }
169
+ return {
170
+ name: nameAndType,
171
+ default: defaultValue,
172
+ };
173
+ }).filter((p) => p !== null);
174
+ }
175
+ extractDocstring(lines, startIndex) {
176
+ // Look for docstring in next few lines
177
+ for (let i = startIndex + 1; i < Math.min(startIndex + 5, lines.length); i++) {
178
+ const line = lines[i].trim();
179
+ if (line.startsWith('"""') || line.startsWith("'''")) {
180
+ const quote = line.startsWith('"""') ? '"""' : "'''";
181
+ if (line.endsWith(quote) && line.length > 6) {
182
+ return line.slice(3, -3);
183
+ }
184
+ // Multi-line docstring
185
+ let docstring = line.slice(3);
186
+ for (let j = i + 1; j < lines.length; j++) {
187
+ const nextLine = lines[j];
188
+ if (nextLine.includes(quote)) {
189
+ docstring += "\n" + nextLine.slice(0, nextLine.indexOf(quote));
190
+ return docstring.trim();
191
+ }
192
+ docstring += "\n" + nextLine;
193
+ }
194
+ }
195
+ }
196
+ return undefined;
197
+ }
198
+ findClassEnd(lines, startIndex) {
199
+ const baseIndent = lines[startIndex].match(/^(\s*)/)?.[1].length || 0;
200
+ let i = startIndex + 1;
201
+ while (i < lines.length) {
202
+ const line = lines[i];
203
+ const trimmed = line.trim();
204
+ if (!trimmed || trimmed.startsWith("#")) {
205
+ i++;
206
+ continue;
207
+ }
208
+ const indent = line.match(/^(\s*)/)?.[1].length || 0;
209
+ // Check if we've exited the class (less or equal indentation)
210
+ if (indent <= baseIndent && trimmed) {
211
+ // Check if it's a new class or function at same level
212
+ if (trimmed.startsWith("class ") || trimmed.startsWith("def ") || trimmed.startsWith("async def ") || trimmed.startsWith("@")) {
213
+ return i;
214
+ }
215
+ }
216
+ i++;
217
+ }
218
+ return i;
219
+ }
220
+ isMethodOfClass(funcName, lines, funcIndex, classSymbol) {
221
+ // Check if function is indented within the class
222
+ const classLineIndex = classSymbol.line - 1;
223
+ const classIndent = lines[classLineIndex].match(/^(\s*)/)?.[1].length || 0;
224
+ const funcIndent = lines[funcIndex].match(/^(\s*)/)?.[1].length || 0;
225
+ return funcIndent > classIndent;
226
+ }
227
+ }
228
+ export const pythonParser = new PythonParser();
229
+ //# sourceMappingURL=pythonParser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pythonParser.js","sourceRoot":"","sources":["../../../src/core/parsers/pythonParser.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,54 @@
1
+ export interface ParsedSymbol {
2
+ name: string;
3
+ type: "class" | "interface" | "function" | "method" | "property" | "enum" | "type" | "const" | "variable";
4
+ line: number;
5
+ character: number;
6
+ isExported: boolean;
7
+ modifiers?: string[];
8
+ heritage?: {
9
+ extends?: string[];
10
+ implements?: string[];
11
+ };
12
+ members?: ParsedSymbol[];
13
+ parameters?: {
14
+ name: string;
15
+ type?: string;
16
+ optional?: boolean;
17
+ }[];
18
+ returnType?: string;
19
+ jsDoc?: string;
20
+ }
21
+ export interface ParsedFile {
22
+ filePath: string;
23
+ symbols: ParsedSymbol[];
24
+ imports: {
25
+ name: string;
26
+ module: string;
27
+ isDefault?: boolean;
28
+ isNamespace?: boolean;
29
+ }[];
30
+ exports: string[];
31
+ }
32
+ export declare class TypeScriptParser {
33
+ private program;
34
+ parseFile(filePath: string, sourceText: string): ParsedFile;
35
+ private visitNode;
36
+ private handleClassDeclaration;
37
+ private handleInterfaceDeclaration;
38
+ private handleFunctionDeclaration;
39
+ private handleEnumDeclaration;
40
+ private handleTypeAliasDeclaration;
41
+ private handleVariableStatement;
42
+ private handleImportDeclaration;
43
+ private handleExport;
44
+ private extractClassMember;
45
+ private extractInterfaceMember;
46
+ private getModifiers;
47
+ private hasExportModifier;
48
+ private isConst;
49
+ private getHeritage;
50
+ private getParameters;
51
+ private getJsDoc;
52
+ }
53
+ export declare const typescriptParser: TypeScriptParser;
54
+ //# sourceMappingURL=typescriptParser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"typescriptParser.d.ts","sourceRoot":"","sources":["../../../src/core/parsers/typescriptParser.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,OAAO,GAAG,WAAW,GAAG,UAAU,GAAG,QAAQ,GAAG,UAAU,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,UAAU,CAAC;IAC1G,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,OAAO,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,QAAQ,CAAC,EAAE;QACT,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;QACnB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;KACvB,CAAC;IACF,OAAO,CAAC,EAAE,YAAY,EAAE,CAAC;IACzB,UAAU,CAAC,EAAE;QACX,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,QAAQ,CAAC,EAAE,OAAO,CAAC;KACpB,EAAE,CAAC;IACJ,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,UAAU;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,YAAY,EAAE,CAAC;IACxB,OAAO,EAAE;QACP,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,EAAE,MAAM,CAAC;QACf,SAAS,CAAC,EAAE,OAAO,CAAC;QACpB,WAAW,CAAC,EAAE,OAAO,CAAC;KACvB,EAAE,CAAC;IACJ,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,OAAO,CAA2B;IAE1C,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,UAAU;IAuB3D,OAAO,CAAC,SAAS;IAiDjB,OAAO,CAAC,sBAAsB;IA+B9B,OAAO,CAAC,0BAA0B;IA+BlC,OAAO,CAAC,yBAAyB;IA6BjC,OAAO,CAAC,qBAAqB;IAoB7B,OAAO,CAAC,0BAA0B;IAoBlC,OAAO,CAAC,uBAAuB;IA+B/B,OAAO,CAAC,uBAAuB;IAoC/B,OAAO,CAAC,YAAY;IAYpB,OAAO,CAAC,kBAAkB;IAiC1B,OAAO,CAAC,sBAAsB;IA+B9B,OAAO,CAAC,YAAY;IAWpB,OAAO,CAAC,iBAAiB;IAQzB,OAAO,CAAC,OAAO;IAIf,OAAO,CAAC,WAAW;IAiBnB,OAAO,CAAC,aAAa;IAWrB,OAAO,CAAC,QAAQ;CAOjB;AAED,eAAO,MAAM,gBAAgB,kBAAyB,CAAC"}
@@ -0,0 +1,291 @@
1
+ import * as ts from "typescript";
2
+ export class TypeScriptParser {
3
+ program = null;
4
+ parseFile(filePath, sourceText) {
5
+ const sourceFile = ts.createSourceFile(filePath, sourceText, ts.ScriptTarget.Latest, true, ts.ScriptKind.TS);
6
+ const symbols = [];
7
+ const imports = [];
8
+ const exports = [];
9
+ this.visitNode(sourceFile, sourceFile, symbols, imports, exports);
10
+ return {
11
+ filePath,
12
+ symbols,
13
+ imports,
14
+ exports,
15
+ };
16
+ }
17
+ visitNode(node, sourceFile, symbols, imports, exports) {
18
+ const { line, character } = sourceFile.getLineAndCharacterOfPosition(node.getStart());
19
+ switch (node.kind) {
20
+ case ts.SyntaxKind.ClassDeclaration:
21
+ this.handleClassDeclaration(node, line, character, sourceFile, symbols);
22
+ break;
23
+ case ts.SyntaxKind.InterfaceDeclaration:
24
+ this.handleInterfaceDeclaration(node, line, character, sourceFile, symbols);
25
+ break;
26
+ case ts.SyntaxKind.FunctionDeclaration:
27
+ this.handleFunctionDeclaration(node, line, character, sourceFile, symbols, exports);
28
+ break;
29
+ case ts.SyntaxKind.EnumDeclaration:
30
+ this.handleEnumDeclaration(node, line, character, sourceFile, symbols);
31
+ break;
32
+ case ts.SyntaxKind.TypeAliasDeclaration:
33
+ this.handleTypeAliasDeclaration(node, line, character, sourceFile, symbols);
34
+ break;
35
+ case ts.SyntaxKind.VariableStatement:
36
+ this.handleVariableStatement(node, line, character, sourceFile, symbols, exports);
37
+ break;
38
+ case ts.SyntaxKind.ImportDeclaration:
39
+ this.handleImportDeclaration(node, sourceFile, imports);
40
+ break;
41
+ case ts.SyntaxKind.ExportAssignment:
42
+ case ts.SyntaxKind.ExportDeclaration:
43
+ this.handleExport(node, sourceFile, exports);
44
+ break;
45
+ }
46
+ ts.forEachChild(node, (child) => this.visitNode(child, sourceFile, symbols, imports, exports));
47
+ }
48
+ handleClassDeclaration(node, line, character, sourceFile, symbols) {
49
+ if (!node.name)
50
+ return;
51
+ const symbol = {
52
+ name: node.name.text,
53
+ type: "class",
54
+ line: line + 1,
55
+ character: character + 1,
56
+ isExported: this.hasExportModifier(node),
57
+ modifiers: this.getModifiers(node),
58
+ heritage: this.getHeritage(node),
59
+ members: [],
60
+ jsDoc: this.getJsDoc(node, sourceFile),
61
+ };
62
+ node.members.forEach((member) => {
63
+ const memberSymbol = this.extractClassMember(member, sourceFile);
64
+ if (memberSymbol) {
65
+ symbol.members.push(memberSymbol);
66
+ }
67
+ });
68
+ symbols.push(symbol);
69
+ }
70
+ handleInterfaceDeclaration(node, line, character, sourceFile, symbols) {
71
+ const symbol = {
72
+ name: node.name.text,
73
+ type: "interface",
74
+ line: line + 1,
75
+ character: character + 1,
76
+ isExported: this.hasExportModifier(node),
77
+ modifiers: this.getModifiers(node),
78
+ heritage: { extends: node.heritageClauses?.flatMap((h) => h.types.map((t) => t.getText(sourceFile))) },
79
+ members: [],
80
+ jsDoc: this.getJsDoc(node, sourceFile),
81
+ };
82
+ node.members.forEach((member) => {
83
+ const memberSymbol = this.extractInterfaceMember(member, sourceFile);
84
+ if (memberSymbol) {
85
+ symbol.members.push(memberSymbol);
86
+ }
87
+ });
88
+ symbols.push(symbol);
89
+ }
90
+ handleFunctionDeclaration(node, line, character, sourceFile, symbols, exports) {
91
+ if (!node.name)
92
+ return;
93
+ const symbol = {
94
+ name: node.name.text,
95
+ type: "function",
96
+ line: line + 1,
97
+ character: character + 1,
98
+ isExported: this.hasExportModifier(node),
99
+ modifiers: this.getModifiers(node),
100
+ parameters: this.getParameters(node.parameters, sourceFile),
101
+ returnType: node.type?.getText(sourceFile),
102
+ jsDoc: this.getJsDoc(node, sourceFile),
103
+ };
104
+ symbols.push(symbol);
105
+ if (symbol.isExported) {
106
+ exports.push(symbol.name);
107
+ }
108
+ }
109
+ handleEnumDeclaration(node, line, character, sourceFile, symbols) {
110
+ const symbol = {
111
+ name: node.name.text,
112
+ type: "enum",
113
+ line: line + 1,
114
+ character: character + 1,
115
+ isExported: this.hasExportModifier(node),
116
+ modifiers: this.getModifiers(node),
117
+ jsDoc: this.getJsDoc(node, sourceFile),
118
+ };
119
+ symbols.push(symbol);
120
+ }
121
+ handleTypeAliasDeclaration(node, line, character, sourceFile, symbols) {
122
+ const symbol = {
123
+ name: node.name.text,
124
+ type: "type",
125
+ line: line + 1,
126
+ character: character + 1,
127
+ isExported: this.hasExportModifier(node),
128
+ modifiers: this.getModifiers(node),
129
+ jsDoc: this.getJsDoc(node, sourceFile),
130
+ };
131
+ symbols.push(symbol);
132
+ }
133
+ handleVariableStatement(node, line, character, sourceFile, symbols, exports) {
134
+ const isExported = this.hasExportModifier(node);
135
+ node.declarationList.declarations.forEach((decl) => {
136
+ if (ts.isIdentifier(decl.name)) {
137
+ const symbol = {
138
+ name: decl.name.text,
139
+ type: this.isConst(node) ? "const" : "variable",
140
+ line: line + 1,
141
+ character: character + 1,
142
+ isExported,
143
+ modifiers: this.getModifiers(node),
144
+ jsDoc: this.getJsDoc(node, sourceFile),
145
+ };
146
+ symbols.push(symbol);
147
+ if (isExported) {
148
+ exports.push(symbol.name);
149
+ }
150
+ }
151
+ });
152
+ }
153
+ handleImportDeclaration(node, sourceFile, imports) {
154
+ const moduleSpecifier = node.moduleSpecifier.text;
155
+ if (node.importClause) {
156
+ if (node.importClause.name) {
157
+ imports.push({
158
+ name: node.importClause.name.text,
159
+ module: moduleSpecifier,
160
+ isDefault: true,
161
+ });
162
+ }
163
+ if (node.importClause.namedBindings) {
164
+ if (ts.isNamedImports(node.importClause.namedBindings)) {
165
+ node.importClause.namedBindings.elements.forEach((element) => {
166
+ imports.push({
167
+ name: element.name.text,
168
+ module: moduleSpecifier,
169
+ isDefault: false,
170
+ });
171
+ });
172
+ }
173
+ else if (ts.isNamespaceImport(node.importClause.namedBindings)) {
174
+ imports.push({
175
+ name: node.importClause.namedBindings.name.text,
176
+ module: moduleSpecifier,
177
+ isNamespace: true,
178
+ });
179
+ }
180
+ }
181
+ }
182
+ }
183
+ handleExport(node, sourceFile, exports) {
184
+ if (ts.isExportAssignment(node)) {
185
+ if (ts.isIdentifier(node.expression)) {
186
+ exports.push(node.expression.text);
187
+ }
188
+ }
189
+ }
190
+ extractClassMember(member, sourceFile) {
191
+ const { line, character } = sourceFile.getLineAndCharacterOfPosition(member.getStart());
192
+ if (ts.isMethodDeclaration(member) && member.name) {
193
+ return {
194
+ name: member.name.getText(sourceFile),
195
+ type: "method",
196
+ line: line + 1,
197
+ character: character + 1,
198
+ isExported: false,
199
+ modifiers: this.getModifiers(member),
200
+ parameters: this.getParameters(member.parameters, sourceFile),
201
+ returnType: member.type?.getText(sourceFile),
202
+ };
203
+ }
204
+ if (ts.isPropertyDeclaration(member) && member.name) {
205
+ return {
206
+ name: member.name.getText(sourceFile),
207
+ type: "property",
208
+ line: line + 1,
209
+ character: character + 1,
210
+ isExported: false,
211
+ modifiers: this.getModifiers(member),
212
+ };
213
+ }
214
+ return null;
215
+ }
216
+ extractInterfaceMember(member, sourceFile) {
217
+ const { line, character } = sourceFile.getLineAndCharacterOfPosition(member.getStart());
218
+ if (ts.isMethodSignature(member) && member.name) {
219
+ return {
220
+ name: member.name.getText(sourceFile),
221
+ type: "method",
222
+ line: line + 1,
223
+ character: character + 1,
224
+ isExported: false,
225
+ parameters: this.getParameters(member.parameters, sourceFile),
226
+ returnType: member.type?.getText(sourceFile),
227
+ };
228
+ }
229
+ if (ts.isPropertySignature(member) && member.name) {
230
+ return {
231
+ name: member.name.getText(sourceFile),
232
+ type: "property",
233
+ line: line + 1,
234
+ character: character + 1,
235
+ isExported: false,
236
+ };
237
+ }
238
+ return null;
239
+ }
240
+ getModifiers(node) {
241
+ const modifiers = [];
242
+ if (ts.canHaveModifiers(node)) {
243
+ const nodeModifiers = ts.getModifiers(node);
244
+ nodeModifiers?.forEach((mod) => {
245
+ modifiers.push(ts.SyntaxKind[mod.kind].toLowerCase().replace("keyword", ""));
246
+ });
247
+ }
248
+ return modifiers;
249
+ }
250
+ hasExportModifier(node) {
251
+ if (ts.canHaveModifiers(node)) {
252
+ const modifiers = ts.getModifiers(node);
253
+ return modifiers?.some((mod) => mod.kind === ts.SyntaxKind.ExportKeyword) ?? false;
254
+ }
255
+ return false;
256
+ }
257
+ isConst(node) {
258
+ return (node.declarationList.flags & ts.NodeFlags.Const) !== 0;
259
+ }
260
+ getHeritage(node) {
261
+ const heritage = {};
262
+ if (node.heritageClauses) {
263
+ node.heritageClauses.forEach((clause) => {
264
+ const types = clause.types.map((t) => t.getText());
265
+ if (clause.token === ts.SyntaxKind.ExtendsKeyword) {
266
+ heritage.extends = types;
267
+ }
268
+ else if (clause.token === ts.SyntaxKind.ImplementsKeyword) {
269
+ heritage.implements = types;
270
+ }
271
+ });
272
+ }
273
+ return heritage;
274
+ }
275
+ getParameters(params, sourceFile) {
276
+ return params.map((param) => ({
277
+ name: param.name.getText(sourceFile),
278
+ type: param.type?.getText(sourceFile),
279
+ optional: !!param.questionToken,
280
+ }));
281
+ }
282
+ getJsDoc(node, sourceFile) {
283
+ const jsDoc = ts.getJSDocCommentsAndTags(node);
284
+ if (jsDoc && jsDoc.length > 0) {
285
+ return jsDoc[0].getText(sourceFile);
286
+ }
287
+ return undefined;
288
+ }
289
+ }
290
+ export const typescriptParser = new TypeScriptParser();
291
+ //# sourceMappingURL=typescriptParser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"typescriptParser.js","sourceRoot":"","sources":["../../../src/core/parsers/typescriptParser.ts"],"names":[],"mappings":"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"}