ai-first-cli 1.1.2 → 1.1.5

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 (264) hide show
  1. package/ANALISIS_MEJORAS.md +327 -0
  2. package/BUGS.md +455 -0
  3. package/CHANGELOG.md +100 -225
  4. package/TEST_RESULTS.md +198 -0
  5. package/TEST_RESULTS_COMPARATIVE.md +159 -0
  6. package/TEST_RESULTS_COMPLETE.md +127 -0
  7. package/TEST_RESULTS_COMPREHENSIVE.md +208 -0
  8. package/ai/ai_context.md +17 -10
  9. package/ai/ai_rules.md +5 -3
  10. package/ai/architecture.md +28 -7
  11. package/ai/cache.json +832 -52
  12. package/ai/context/features/commands.json +18 -0
  13. package/ai/context/features/src.json +61 -0
  14. package/ai/context/features/test-projects.json +56 -0
  15. package/ai/context/flows/account.json +9 -0
  16. package/ai/context/flows/add_.json +9 -0
  17. package/ai/context/flows/ai-first.json +9 -0
  18. package/ai/context/flows/auth..json +10 -0
  19. package/ai/context/flows/auth.json +12 -0
  20. package/ai/context/flows/dashboard.json +9 -0
  21. package/ai/context/flows/doctor.json +9 -0
  22. package/ai/context/flows/explore.json +9 -0
  23. package/ai/context/flows/list_.json +9 -0
  24. package/ai/context/flows/login.json +9 -0
  25. package/ai/context/flows/opportunity.json +9 -0
  26. package/ai/context/flows/remove_.json +9 -0
  27. package/ai/context/flows/user.json +14 -0
  28. package/ai/context/flows/users..json +10 -0
  29. package/ai/context/flows/users.json +9 -0
  30. package/ai/conventions.md +3 -2
  31. package/ai/dependencies.json +429 -251
  32. package/ai/entrypoints.md +10 -0
  33. package/ai/files.json +822 -46
  34. package/ai/git/commit-activity.json +126 -39
  35. package/ai/git/recent-features.json +3 -1
  36. package/ai/git/recent-files.json +6 -6
  37. package/ai/git/recent-flows.json +3 -1
  38. package/ai/graph/knowledge-graph.json +954 -182
  39. package/ai/graph/module-graph.json +270 -0
  40. package/ai/graph/symbol-graph.json +48991 -16523
  41. package/ai/graph/symbol-references.json +953 -56
  42. package/ai/hierarchy.json +3 -24
  43. package/ai/index-state.json +1261 -253
  44. package/ai/index.db +0 -0
  45. package/ai/modules.json +226 -0
  46. package/ai/project.json +29 -0
  47. package/ai/repo-map.json +2284 -250
  48. package/ai/repo_map.json +2731 -231
  49. package/ai/repo_map.md +559 -2
  50. package/ai/schema.json +5 -0
  51. package/ai/summary.md +16 -7
  52. package/ai/tech_stack.md +4 -1
  53. package/ai/tools.json +10 -0
  54. package/dist/analyzers/dependencies.d.ts.map +1 -1
  55. package/dist/analyzers/dependencies.js +8 -16
  56. package/dist/analyzers/dependencies.js.map +1 -1
  57. package/dist/analyzers/symbols.d.ts.map +1 -1
  58. package/dist/analyzers/symbols.js +60 -0
  59. package/dist/analyzers/symbols.js.map +1 -1
  60. package/dist/commands/ai-first.d.ts +1 -0
  61. package/dist/commands/ai-first.d.ts.map +1 -1
  62. package/dist/commands/ai-first.js +29 -6
  63. package/dist/commands/ai-first.js.map +1 -1
  64. package/dist/core/semanticContexts.d.ts.map +1 -1
  65. package/dist/core/semanticContexts.js +48 -26
  66. package/dist/core/semanticContexts.js.map +1 -1
  67. package/dist/core/symbolGraph.d.ts.map +1 -1
  68. package/dist/core/symbolGraph.js +14 -2
  69. package/dist/core/symbolGraph.js.map +1 -1
  70. package/dist/utils/fileUtils.d.ts.map +1 -1
  71. package/dist/utils/fileUtils.js +5 -0
  72. package/dist/utils/fileUtils.js.map +1 -1
  73. package/package.json +2 -2
  74. package/src/analyzers/dependencies.ts +10 -20
  75. package/src/analyzers/symbols.ts +64 -0
  76. package/src/commands/ai-first.ts +32 -8
  77. package/src/core/semanticContexts.ts +54 -29
  78. package/src/core/symbolGraph.ts +16 -2
  79. package/src/utils/fileUtils.ts +5 -0
  80. package/test-projects/express-api/ai/ai_context.md +112 -0
  81. package/test-projects/express-api/ai/ai_rules.md +50 -0
  82. package/test-projects/express-api/ai/architecture.md +62 -0
  83. package/test-projects/express-api/ai/cache.json +125 -0
  84. package/test-projects/express-api/ai/context/features/controllers.json +13 -0
  85. package/test-projects/express-api/ai/context/features/services.json +13 -0
  86. package/test-projects/express-api/ai/context/flows/auth.json +12 -0
  87. package/test-projects/express-api/ai/context/flows/user.json +13 -0
  88. package/test-projects/express-api/ai/conventions.md +51 -0
  89. package/test-projects/express-api/ai/dependencies.json +54 -0
  90. package/test-projects/express-api/ai/entrypoints.md +17 -0
  91. package/test-projects/express-api/ai/files.json +169 -0
  92. package/test-projects/express-api/ai/graph/knowledge-graph.json +98 -0
  93. package/test-projects/express-api/ai/graph/module-graph.json +44 -0
  94. package/test-projects/express-api/ai/graph/symbol-graph.json +882 -0
  95. package/test-projects/express-api/ai/graph/symbol-references.json +51 -0
  96. package/test-projects/express-api/ai/index-state.json +238 -0
  97. package/test-projects/express-api/ai/index.db +0 -0
  98. package/test-projects/express-api/ai/modules.json +30 -0
  99. package/test-projects/express-api/ai/project.json +15 -0
  100. package/test-projects/express-api/ai/repo-map.json +291 -0
  101. package/test-projects/express-api/ai/repo_map.json +100 -0
  102. package/test-projects/express-api/ai/repo_map.md +36 -0
  103. package/test-projects/express-api/ai/schema.json +5 -0
  104. package/test-projects/express-api/ai/summary.md +14 -0
  105. package/test-projects/express-api/ai/symbols.json +1174 -0
  106. package/test-projects/express-api/ai/tech_stack.md +38 -0
  107. package/test-projects/express-api/ai/tools.json +10 -0
  108. package/test-projects/express-api/controllers/authController.js +32 -0
  109. package/test-projects/express-api/controllers/userController.js +51 -0
  110. package/test-projects/express-api/index.js +21 -0
  111. package/test-projects/express-api/middleware/authMiddleware.js +30 -0
  112. package/test-projects/express-api/models/userRepository.js +25 -0
  113. package/test-projects/express-api/package.json +18 -0
  114. package/test-projects/express-api/services/authService.js +17 -0
  115. package/test-projects/express-api/services/userService.js +28 -0
  116. package/test-projects/nestjs-backend/ai/ai_context.md +110 -0
  117. package/test-projects/nestjs-backend/ai/ai_rules.md +52 -0
  118. package/test-projects/nestjs-backend/ai/architecture.md +43 -0
  119. package/test-projects/nestjs-backend/ai/cache.json +137 -0
  120. package/test-projects/nestjs-backend/ai/context/features/src.json +23 -0
  121. package/test-projects/nestjs-backend/ai/context/flows/auth..json +10 -0
  122. package/test-projects/nestjs-backend/ai/context/flows/users..json +10 -0
  123. package/test-projects/nestjs-backend/ai/conventions.md +52 -0
  124. package/test-projects/nestjs-backend/ai/dependencies.json +152 -0
  125. package/test-projects/nestjs-backend/ai/entrypoints.md +18 -0
  126. package/test-projects/nestjs-backend/ai/files.json +184 -0
  127. package/test-projects/nestjs-backend/ai/graph/knowledge-graph.json +74 -0
  128. package/test-projects/nestjs-backend/ai/graph/module-graph.json +29 -0
  129. package/test-projects/nestjs-backend/ai/graph/symbol-graph.json +304 -0
  130. package/test-projects/nestjs-backend/ai/graph/symbol-references.json +5 -0
  131. package/test-projects/nestjs-backend/ai/index-state.json +259 -0
  132. package/test-projects/nestjs-backend/ai/index.db +0 -0
  133. package/test-projects/nestjs-backend/ai/modules.json +19 -0
  134. package/test-projects/nestjs-backend/ai/project.json +14 -0
  135. package/test-projects/nestjs-backend/ai/repo-map.json +323 -0
  136. package/test-projects/nestjs-backend/ai/repo_map.json +141 -0
  137. package/test-projects/nestjs-backend/ai/repo_map.md +39 -0
  138. package/test-projects/nestjs-backend/ai/schema.json +5 -0
  139. package/test-projects/nestjs-backend/ai/summary.md +11 -0
  140. package/test-projects/nestjs-backend/ai/symbols.json +527 -0
  141. package/test-projects/nestjs-backend/ai/tech_stack.md +37 -0
  142. package/test-projects/nestjs-backend/ai/tools.json +10 -0
  143. package/test-projects/nestjs-backend/package.json +22 -0
  144. package/test-projects/nestjs-backend/src/app.module.ts +8 -0
  145. package/test-projects/nestjs-backend/src/auth/auth.controller.ts +22 -0
  146. package/test-projects/nestjs-backend/src/auth/auth.module.ts +11 -0
  147. package/test-projects/nestjs-backend/src/auth/auth.service.ts +28 -0
  148. package/test-projects/nestjs-backend/src/auth/dto/login.dto.ts +4 -0
  149. package/test-projects/nestjs-backend/src/auth/strategies/jwt.strategy.ts +18 -0
  150. package/test-projects/nestjs-backend/src/main.ts +9 -0
  151. package/test-projects/nestjs-backend/src/users/users.controller.ts +32 -0
  152. package/test-projects/nestjs-backend/src/users/users.module.ts +10 -0
  153. package/test-projects/nestjs-backend/src/users/users.service.ts +42 -0
  154. package/test-projects/nestjs-backend/tsconfig.json +21 -0
  155. package/test-projects/python-cli/__init__.py +1 -0
  156. package/test-projects/python-cli/ai/ai_context.md +94 -0
  157. package/test-projects/python-cli/ai/ai_rules.md +47 -0
  158. package/test-projects/python-cli/ai/architecture.md +49 -0
  159. package/test-projects/python-cli/ai/cache.json +129 -0
  160. package/test-projects/python-cli/ai/context/features/cli.json +16 -0
  161. package/test-projects/python-cli/ai/context/flows/add_.json +9 -0
  162. package/test-projects/python-cli/ai/context/flows/list_.json +9 -0
  163. package/test-projects/python-cli/ai/context/flows/remove_.json +9 -0
  164. package/test-projects/python-cli/ai/conventions.md +51 -0
  165. package/test-projects/python-cli/ai/dependencies.json +66 -0
  166. package/test-projects/python-cli/ai/entrypoints.md +4 -0
  167. package/test-projects/python-cli/ai/files.json +174 -0
  168. package/test-projects/python-cli/ai/graph/knowledge-graph.json +83 -0
  169. package/test-projects/python-cli/ai/graph/module-graph.json +31 -0
  170. package/test-projects/python-cli/ai/graph/symbol-graph.json +358 -0
  171. package/test-projects/python-cli/ai/graph/symbol-references.json +11 -0
  172. package/test-projects/python-cli/ai/index-state.json +245 -0
  173. package/test-projects/python-cli/ai/index.db +0 -0
  174. package/test-projects/python-cli/ai/modules.json +21 -0
  175. package/test-projects/python-cli/ai/project.json +15 -0
  176. package/test-projects/python-cli/ai/repo-map.json +290 -0
  177. package/test-projects/python-cli/ai/repo_map.json +99 -0
  178. package/test-projects/python-cli/ai/repo_map.md +32 -0
  179. package/test-projects/python-cli/ai/schema.json +5 -0
  180. package/test-projects/python-cli/ai/summary.md +11 -0
  181. package/test-projects/python-cli/ai/symbols.json +475 -0
  182. package/test-projects/python-cli/ai/tech_stack.md +30 -0
  183. package/test-projects/python-cli/ai/tools.json +10 -0
  184. package/test-projects/python-cli/cli/__init__.py +1 -0
  185. package/test-projects/python-cli/cli/add_command.py +6 -0
  186. package/test-projects/python-cli/cli/list_command.py +7 -0
  187. package/test-projects/python-cli/cli/remove_command.py +6 -0
  188. package/test-projects/python-cli/main.py +34 -0
  189. package/test-projects/python-cli/models/__init__.py +2 -0
  190. package/test-projects/python-cli/models/task.py +19 -0
  191. package/test-projects/python-cli/models/task_repository.py +44 -0
  192. package/test-projects/react-app/ai/ai_context.md +95 -0
  193. package/test-projects/react-app/ai/ai_rules.md +49 -0
  194. package/test-projects/react-app/ai/architecture.md +33 -0
  195. package/test-projects/react-app/ai/cache.json +129 -0
  196. package/test-projects/react-app/ai/context/features/src.json +18 -0
  197. package/test-projects/react-app/ai/context/flows/dashboard.json +9 -0
  198. package/test-projects/react-app/ai/context/flows/login.json +9 -0
  199. package/test-projects/react-app/ai/context/flows/users.json +9 -0
  200. package/test-projects/react-app/ai/conventions.md +52 -0
  201. package/test-projects/react-app/ai/dependencies.json +128 -0
  202. package/test-projects/react-app/ai/entrypoints.md +4 -0
  203. package/test-projects/react-app/ai/files.json +174 -0
  204. package/test-projects/react-app/ai/graph/knowledge-graph.json +83 -0
  205. package/test-projects/react-app/ai/graph/module-graph.json +31 -0
  206. package/test-projects/react-app/ai/graph/symbol-graph.json +868 -0
  207. package/test-projects/react-app/ai/graph/symbol-references.json +31 -0
  208. package/test-projects/react-app/ai/index-state.json +245 -0
  209. package/test-projects/react-app/ai/index.db +0 -0
  210. package/test-projects/react-app/ai/modules.json +17 -0
  211. package/test-projects/react-app/ai/project.json +15 -0
  212. package/test-projects/react-app/ai/repo-map.json +305 -0
  213. package/test-projects/react-app/ai/repo_map.json +114 -0
  214. package/test-projects/react-app/ai/repo_map.md +31 -0
  215. package/test-projects/react-app/ai/schema.json +5 -0
  216. package/test-projects/react-app/ai/summary.md +11 -0
  217. package/test-projects/react-app/ai/symbols.json +985 -0
  218. package/test-projects/react-app/ai/tech_stack.md +38 -0
  219. package/test-projects/react-app/ai/tools.json +10 -0
  220. package/test-projects/react-app/package.json +16 -0
  221. package/test-projects/react-app/src/App.tsx +21 -0
  222. package/test-projects/react-app/src/context/AuthContext.tsx +41 -0
  223. package/test-projects/react-app/src/hooks/useAuth.ts +10 -0
  224. package/test-projects/react-app/src/main.tsx +10 -0
  225. package/test-projects/react-app/src/pages/DashboardPage.tsx +17 -0
  226. package/test-projects/react-app/src/pages/LoginPage.tsx +41 -0
  227. package/test-projects/react-app/src/pages/UsersPage.tsx +36 -0
  228. package/test-projects/react-app/src/services/userService.ts +37 -0
  229. package/test-projects/salesforce-cli/.forceignore +27 -0
  230. package/test-projects/salesforce-cli/ai/ai_context.md +88 -0
  231. package/test-projects/salesforce-cli/ai/ai_rules.md +47 -0
  232. package/test-projects/salesforce-cli/ai/architecture.md +33 -0
  233. package/test-projects/salesforce-cli/ai/cache.json +105 -0
  234. package/test-projects/salesforce-cli/ai/context/features/force-app.json +14 -0
  235. package/test-projects/salesforce-cli/ai/context/flows/account.json +9 -0
  236. package/test-projects/salesforce-cli/ai/context/flows/opportunity.json +9 -0
  237. package/test-projects/salesforce-cli/ai/conventions.md +51 -0
  238. package/test-projects/salesforce-cli/ai/dependencies.json +6 -0
  239. package/test-projects/salesforce-cli/ai/entrypoints.md +4 -0
  240. package/test-projects/salesforce-cli/ai/files.json +144 -0
  241. package/test-projects/salesforce-cli/ai/graph/knowledge-graph.json +64 -0
  242. package/test-projects/salesforce-cli/ai/graph/module-graph.json +13 -0
  243. package/test-projects/salesforce-cli/ai/graph/symbol-graph.json +148 -0
  244. package/test-projects/salesforce-cli/ai/graph/symbol-references.json +1 -0
  245. package/test-projects/salesforce-cli/ai/index-state.json +203 -0
  246. package/test-projects/salesforce-cli/ai/index.db +0 -0
  247. package/test-projects/salesforce-cli/ai/modules.json +12 -0
  248. package/test-projects/salesforce-cli/ai/project.json +14 -0
  249. package/test-projects/salesforce-cli/ai/repo-map.json +251 -0
  250. package/test-projects/salesforce-cli/ai/repo_map.json +69 -0
  251. package/test-projects/salesforce-cli/ai/repo_map.md +21 -0
  252. package/test-projects/salesforce-cli/ai/schema.json +5 -0
  253. package/test-projects/salesforce-cli/ai/summary.md +11 -0
  254. package/test-projects/salesforce-cli/ai/symbols.json +245 -0
  255. package/test-projects/salesforce-cli/ai/tech_stack.md +30 -0
  256. package/test-projects/salesforce-cli/ai/tools.json +10 -0
  257. package/test-projects/salesforce-cli/force-app/main/default/classes/AccountController.cls +24 -0
  258. package/test-projects/salesforce-cli/force-app/main/default/classes/OpportunityController.cls +25 -0
  259. package/test-projects/salesforce-cli/force-app/main/default/objects/Project__c.object.xml +45 -0
  260. package/test-projects/salesforce-cli/force-app/main/default/triggers/AccountTrigger.trigger +33 -0
  261. package/test-projects/salesforce-cli/sfdx-project.json +11 -0
  262. package/tests/e2e/README.md +85 -0
  263. package/tests/e2e/run-e2e.sh +88 -0
  264. package/tests/semanticContexts.test.ts +23 -25
package/BUGS.md ADDED
@@ -0,0 +1,455 @@
1
+ # Bugs y Problemas Encontrados
2
+
3
+ ## Historial
4
+
5
+ ### 2026-03-17
6
+
7
+ #### Bug 1: Features y Flows vacíos (YA CORREGIDO)
8
+ **Estado**: ✅ Corregido
9
+ **Fecha**: 2026-03-17
10
+ **Severidad**: Alta
11
+
12
+ **Descripción**: Al ejecutar `ai-first init`, los directorios `ai/context/features/` y `ai/context/flows/` estaban vacíos.
13
+
14
+ **Causa raíz**: La función `isEntrypoint` en `src/core/semanticContexts.ts` solo buscaba patrones en el nombre del archivo (`authController.ts`), pero no consideraba que los archivos podían estar en directorios como `/commands/`, `/handlers/`, etc.
15
+
16
+ **Solución implementada**: Se modificó `isEntrypoint` para que también detecte entrypoints cuando el path contiene `/commands/`, `/handlers/`, `/controllers/`, `/services/`, `/routes/`.
17
+
18
+ **Archivos modificados**:
19
+ - `src/core/semanticContexts.ts`
20
+
21
+ ---
22
+
23
+ #### Bug 2: Relaciones de símbolos (Parcial - Limitación conocida)
24
+ **Estado**: ⚠️ Parcialmente corregido - Limitación arquitectónica
25
+ **Fecha**: 2026-03-17
26
+ **Severidad**: Media
27
+
28
+ **Problema original**: El comando `context` no mostraba todos los tipos de relaciones disponibles.
29
+
30
+ **Progreso**:
31
+ - ✅ FIXED: Ahora muestra todos los tipos: Calls, Called by, Imports, Exports, References
32
+ - ✅ FIXED: Imports/Exports se detectan correctamente (resuelto en Bug 11)
33
+ - ⚠️ KNOWN LIMITATION: Calls y Called by siempre muestran 0
34
+
35
+ **Limitación técnica**:
36
+ El sistema actual NO puede detectar relaciones de llamada (calls/called_by) porque:
37
+ 1. Requiere análisis del AST (Abstract Syntax Tree) completo
38
+ 2. Necesita resolver scopes, imports, y referencias de variables
39
+ 3. El parser actual es basado en regex, no en AST real
40
+ 4. Para implementarlo completamente se necesitaría:
41
+ - Integrar TypeScript compiler API o Babel
42
+ - Reconstruir el grafo de llamadas completo
43
+ - Mapear cada llamada de función a su símbolo correspondiente
44
+ - **Esfuerzo estimado**: 3-5 días de desarrollo intensivo
45
+
46
+ **Impacto**: Bajo-Medio. Las relaciones imports/exports funcionan correctamente y son las más importantes para entender dependencias.
47
+
48
+ **Decisión**: Aceptar como limitación conocida. El 80% del valor está en imports/exports que funcionan correctamente.
49
+
50
+ **Archivos involucrados**:
51
+ - `src/commands/ai-first.ts` (muestra los tipos)
52
+ - `src/core/symbolGraph.ts` (necesitaría AST parser para calls)
53
+
54
+ ---
55
+
56
+ #### Bug 3:duplicado en CHANGELOG.md
57
+ **Estado**: ⚠️ Pendiente
58
+ **Fecha**: 2026-03-17
59
+ **Severidad**: Baja
60
+
61
+ **Descripción**: El archivo CHANGELOG.md contiene contenido duplicado. Las mismas features aparecen listadas múltiples veces.
62
+
63
+ **Ejemplos**:
64
+ - Líneas 15-16: "AI Repository Schema" duplicado
65
+ - Líneas 21-22: "Incremental Analysis" duplicado
66
+ - Líneas 25-28: "Repository Knowledge Graph" duplicado
67
+
68
+ **Acción sugerida**: Limpiar manualmente el archivo, eliminando duplicados.
69
+
70
+ ---
71
+
72
+ #### Bug 4: Vulnerabilidades en dependencias de dev
73
+ **Estado**: ⚠️ Parcialmente corregido - Riesgo aceptado
74
+ **Fecha**: 2026-03-17
75
+ **Severidad**: Baja
76
+
77
+ **Descripción**: Vulnerabilidades en dependencias de desarrollo (`vitepress`, `vitest`, `esbuild`).
78
+
79
+ **Progreso**:
80
+ - Inicial: 6 vulnerabilidades moderate
81
+ - Después de actualizar vitest a 4.x: 3 vulnerabilidades moderate
82
+
83
+ **Vulnerabilidades restantes**:
84
+ - `esbuild <=0.24.2` (a través de `vite` -> `vitepress`)
85
+ - Afecta solo el servidor de desarrollo de Vite
86
+
87
+ **Notas**:
88
+ - Todas las vulnerabilidades son en dependencias de **desarrollo**
89
+ - No afectan el runtime de producción de ai-first-cli
90
+ - Requieren acceso al servidor de desarrollo local para explotarse
91
+ - Solución completa requeriría romper compatibilidad con vitepress
92
+
93
+ **Decisión**: Aceptar el riesgo dado el bajo impacto y alto costo de migración.
94
+
95
+ ---
96
+
97
+ ## Pendientes por hacer
98
+
99
+ - [ ] Investigar Bug 2: Relaciones de símbolos mostrando 0 (parcial - detecta imports/exports pero no calls)
100
+ - [ ] Limpiar CHANGELOG.md duplicado (ya está limpio en versión 1.1.4)
101
+ - [x] Evaluar vulnerabilidades de npm audit - Reducidas de 6 a 3, riesgo aceptado
102
+ - [x] Bug 7: Flows con rutas incorrectas en Express - CORREGIDO
103
+ - [x] Bug 2: Context muestra relationships - PARCIALMENTE CORREGIDO
104
+ - [x] Bug 10: Símbolos Apex no extraídos - CORREGIDO
105
+ - [x] Bug 11: Python/JSX no detectan imports - CORREGIDO
106
+
107
+ ---
108
+
109
+ ### Bug 8: Extensiones Salesforce no incluidas en escaneo
110
+ **Estado**: ✅ Corregido
111
+ **Fecha**: 2026-03-17
112
+ **Severidad**: Alta
113
+
114
+ **Descripción**: Las extensiones de Salesforce (.cls, .trigger) no estaban incluidas en DEFAULT_INCLUDE_EXTENSIONS, por lo que el scanner no detectaba archivos Apex.
115
+
116
+ **Archivo modificado**: `src/utils/fileUtils.ts`
117
+
118
+ **Extensiones agregadas**: `.cls`, `.trigger`, `.apex`, `.object`
119
+
120
+ **Verificación**: Ahora el proyecto `salesforce-cli` detecta los archivos .cls y .trigger.
121
+
122
+ ---
123
+
124
+ ### Bug 9: TechStack no detecta Salesforce
125
+ **Estado**: ⚠️ Pendiente
126
+ **Fecha**: 2026-03-17
127
+ **Severidad**: Media
128
+
129
+ **Descripción**: Aunque ahora se escanean los archivos Apex, el analizador de techStack no detecta Salesforce como framework. Debería identificar proyectos con `sfdx-project.json` y archivos `.cls`.
130
+
131
+ **Solución sugerida**: Agregar detección de Salesforce en `src/analyzers/techStack.ts` buscando archivos `sfdx-project.json` o extensiones `.cls`.
132
+
133
+ ---
134
+
135
+ ### Bug 10: Analyzer de símbolos no soporta Apex
136
+ **Estado**: ✅ Corregido
137
+ **Fecha**: 2026-03-17
138
+ **Severidad**: Alta
139
+
140
+ **Descripción**: El archivo `symbols.json` no extrae símbolos de archivos Apex (.cls). El comando `map` genera 0 símbolos para proyectos Salesforce.
141
+
142
+ **Causa raíz**: El analyzer `src/analyzers/symbols.ts` no incluye lógica para parsear Apex. No había un parser para las extensiones `.cls` y `.trigger`.
143
+
144
+ **Solución implementada**:
145
+ - Se agregó la función `parseApex()` en `src/analyzers/symbols.ts`
146
+ - Se agregaron las extensiones `.cls` y `.trigger` al switch de `parseFileForSymbols()`
147
+ - El parser detecta: clases (con `with sharing`, `without sharing`), interfaces, métodos (con `@AuraEnabled`), y triggers
148
+
149
+ **Archivo modificado**: `src/analyzers/symbols.ts`
150
+
151
+ **Verificación**:
152
+ ```bash
153
+ node dist/commands/ai-first.js map --root test-projects/salesforce-cli
154
+ # Output: "Symbols: 7"
155
+ # Extrae: AccountController, createAccount, updateAccountRating,
156
+ # OpportunityController, closeWon, validateOpportunity, AccountTrigger
157
+ ```
158
+
159
+ ### Bug 5: Features vacíos con comando `init`
160
+ **Estado**: ✅ Corregido
161
+ **Severidad**: Alta
162
+
163
+ **Descripción**: El comando `init` no genera features ni flows porque no crea el archivo `modules.json` que es requerido por `generateSemanticContexts()`.
164
+
165
+ **Solución implementada**:
166
+ 1. Se modificó `runAIFirst()` en `src/commands/ai-first.ts` para generar `modules.json` antes de llamar a `generateSemanticContexts()`
167
+ 2. Se agregaron más raíces de candidatos en `semanticContexts.ts` para detectar proyectos MVC/Express
168
+ 3. Se relajó el mínimo de archivos de 3 a 2 para proyectos pequeños
169
+ 4. Se agregaron extensiones de Salesforce a `SOURCE_EXTENSIONS`
170
+ 5. Se simplificó la lógica para usar módulos directamente de `modules.json`
171
+
172
+ **Archivos modificados**:
173
+ - `src/commands/ai-first.ts`
174
+ - `src/core/semanticContexts.ts`
175
+ - `src/utils/fileUtils.ts`
176
+
177
+ ---
178
+
179
+ ### Bug 6: Features no detectados en proyectos JS/Python/React
180
+ **Estado**: ✅ Corregido
181
+ **Severidad**: Alta
182
+
183
+ **Descripción**: Los proyectos JavaScript, Python y React no generaban features.
184
+
185
+ **Solución implementada**:
186
+ - Se agregaron `controllers`, `routes`, `handlers`, `views`, `pages` a `CANDIDATE_ROOTS`
187
+ - Se eliminó `models` y `services` de `IGNORED_FOLDERS`
188
+ - Se cambió la lógica para usar módulos directamente de `modules.json` en lugar de buscar subdirectorios
189
+ - Se relajó el mínimo de archivos de 3 a 2
190
+
191
+ ---
192
+
193
+ ### Bug 7: Flows con rutas incorrectas en Express
194
+ **Estado**: ✅ Corregido
195
+ **Fecha**: 2026-03-17
196
+ **Severidad**: Media
197
+
198
+ **Descripción**: Los flows generados para Express tenían rutas incorrectas y dependencias npm.
199
+
200
+ **Problema**:
201
+ - Dependencias npm como `jsonwebtoken` aparecían en los flows
202
+ - Rutas mal formadas como `controllers/../services/authService/index`
203
+
204
+ **Causa raíz**: La función `normalizeImportPath` no filtraba dependencias npm y no normalizaba rutas correctamente.
205
+
206
+ **Solución implementada**:
207
+ - Modificada `normalizeImportPath` para retornar `null` en lugar del path para dependencias npm
208
+ - Agregada normalización de rutas con `path.normalize()` para eliminar `.` y `..`
209
+ - Eliminado slash inicial si está presente
210
+
211
+ **Archivo modificado**: `src/analyzers/dependencies.ts`
212
+
213
+ **Verificación**:
214
+ ```json
215
+ {
216
+ "name": "auth",
217
+ "entrypoint": "controllers/authController.js",
218
+ "files": [
219
+ "controllers/authController.js",
220
+ "services/authService.js"
221
+ ]
222
+ }
223
+ ```
224
+
225
+ ---
226
+
227
+ ### Bug 11: Python/JSX no detectan imports (solo exports)
228
+ **Estado**: ✅ Corregido
229
+ **Fecha**: 2026-03-17
230
+ **Severidad**: Alta
231
+
232
+ **Descripción**: Los proyectos Python y React/JSX solo detectaban relaciones de tipo "exports", pero no "imports". Esto causaba que el symbol graph mostrara 0 imports para estos proyectos.
233
+
234
+ **Causa raíz**:
235
+ 1. `findTargetSymbol` en `symbolGraph.ts` no encontraba los símbolos objetivo porque buscaba por nombre exacto, pero los símbolos tienen IDs como `file.py#functionName`
236
+ 2. `normalizeImportPath` en `dependencies.ts` añadía `/index` a todas las rutas de importación, pero esto es incorrecto para imports como `../context/AuthContext` que deberían resolverse a `AuthContext.tsx`
237
+
238
+ **Solución implementada**:
239
+ 1. Se modificó `findTargetSymbol` para buscar símbolos en el archivo objetivo cuando no encuentra match exacto
240
+ 2. Se simplificó `normalizeImportPath` para usar `path.join()` correctamente y eliminar la lógica incorrecta de `/index`
241
+
242
+ **Archivos modificados**:
243
+ - `src/core/symbolGraph.ts`
244
+ - `src/analyzers/dependencies.ts`
245
+
246
+ **Verificación**:
247
+ - python-cli: 7 imports, 14 exports ✅
248
+ - react-app: 38 imports, 12 exports ✅
249
+
250
+ ---
251
+
252
+ ### Bug A: index command no genera index.db
253
+ **Estado**: ✅ Corregido
254
+ **Fecha**: 2026-03-17
255
+ **Severidad**: Alta
256
+
257
+ **Descripción**: El comando `index` generaba el archivo `index.db` en el directorio actual en lugar de en el directorio especificado por `--root`.
258
+
259
+ **Causa raíz**: El `outputPath` se inicializaba con `process.cwd()` antes de parsear los argumentos, y no se actualizaba cuando se especificaba `--root`.
260
+
261
+ **Solución implementada**: Se modificó el comando `index` para que:
262
+ 1. El `outputPath` sea `null` inicialmente
263
+ 2. Se calcule el path por defecto basado en `rootDir` después de parsear todos los argumentos
264
+ 3. Solo si no se especificó `--output` explícitamente
265
+
266
+ **Archivos modificados**:
267
+ - `src/commands/ai-first.ts`
268
+
269
+ **Verificación**:
270
+ ```bash
271
+ ai-first index --root test-projects/express-api
272
+ # Ahora genera: test-projects/express-api/ai/index.db ✅
273
+ ```
274
+
275
+ ---
276
+
277
+ ### Bug B: graph command falla sin repositorio git
278
+ **Estado**: ✅ Corregido
279
+ **Fecha**: 2026-03-17
280
+ **Severidad**: Alta
281
+
282
+ **Descripción**: El comando `graph` fallaba con exit code 1 si el proyecto no era un repositorio git.
283
+
284
+ **Causa raíz**: El comando requería explícitamente un repositorio git y hacía `process.exit(1)` si no lo encontraba.
285
+
286
+ **Solución implementada**:
287
+ 1. Se cambió el error fatal a un warning
288
+ 2. Se permite generar el knowledge graph sin información git
289
+ 3. Se usa la información disponible (features, flows, symbols, dependencies)
290
+ 4. Se agregó la opción `--no-git` para forzar modo sin git
291
+
292
+ **Archivos modificados**:
293
+ - `src/commands/ai-first.ts`
294
+
295
+ **Verificación**:
296
+ ```bash
297
+ ai-first graph --root test-projects/express-api
298
+ # Antes: ❌ Exit 1 - "Not a git repository"
299
+ # Después: ✅ Exit 0 - Genera knowledge-graph.json
300
+ ```
301
+
302
+ ---
303
+
304
+ ### Bug C: query command falla
305
+ **Estado**: ✅ Corregido
306
+ **Fecha**: 2026-03-17
307
+ **Severidad**: Media
308
+
309
+ **Descripción**: El comando `query` fallaba con exit code 1 porque no encontraba el archivo `index.db`.
310
+
311
+ **Causa raíz**: Era un efecto secundario del Bug A. Como `index` no generaba `index.db` en la ubicación correcta, `query` no podía encontrarlo.
312
+
313
+ **Solución implementada**: Se corrigió el Bug A, lo cual resolvió automáticamente el Bug C.
314
+
315
+ **Archivos involucrados**:
316
+ - `src/commands/ai-first.ts` (mismo fix que Bug A)
317
+
318
+ **Verificación**:
319
+ ```bash
320
+ ai-first query symbol login --root test-projects/express-api
321
+ # Antes: ❌ Exit 1 - "Index not found"
322
+ # Después: ✅ Exit 0 - Encuentra símbolos
323
+ ```
324
+
325
+ ---
326
+
327
+ ## Bugs Pendientes
328
+
329
+ - [ ] Bug 2 (Parcial): Calls/Called by detection requiere AST parser completo (limitación aceptada)
330
+ - [ ] Bug 4 (Parcial): 3 vulnerabilidades npm restantes (riesgo aceptado - dev only)
331
+
332
+ ---
333
+
334
+ ## Nuevos Issues Identificados (Para futuras versiones)
335
+
336
+ ### Issue 1: Testing de proyectos diversos
337
+ **Estado**: ⚠️ Pendiente
338
+ **Severidad**: Media
339
+
340
+ **Problema**: Actualmente solo se testean 5 tipos de proyectos (Express, NestJS, Python, React, Salesforce). Hay muchos más frameworks/lenguajes soportados que no tienen tests:
341
+ - Laravel (PHP)
342
+ - Django/Flask (Python web)
343
+ - Rails (Ruby)
344
+ - Spring Boot (Java)
345
+ - Phoenix (Elixir)
346
+ - ASP.NET Core (C#)
347
+ - Blazor (.NET)
348
+ - FastAPI (Python)
349
+ - Y más...
350
+
351
+ **Solución sugerida**: Crear test projects para cada framework soportado y automatizar las pruebas.
352
+
353
+ ---
354
+
355
+ ### Issue 2: Archivos duplicados
356
+ **Estado**: ⚠️ Pendiente
357
+ **Severidad**: Media
358
+
359
+ **Problema**: Se generan archivos duplicados con diferentes convenciones de nombre:
360
+ - `repo-map.json` (kebab-case)
361
+ - `repo_map.json` (snake_case)
362
+ - `repo_map.md` (snake_case)
363
+
364
+ **Impacto**: Confusión para usuarios, archivos innecesarios que ocupan espacio.
365
+
366
+ **Solución sugerida**: Consolidar en un solo archivo usando snake_case consistente: `repo_map.json`.
367
+
368
+ ---
369
+
370
+ ### Issue 3: Inconsistencias en convenciones de nomenclatura
371
+ **Estado**: ⚠️ Pendiente
372
+ **Severidad**: Baja-Media
373
+
374
+ **Problema**: Mezcla de convenciones de nombre en archivos generados:
375
+ - Kebab-case: `repo-map.json`, `module-graph.json`, `symbol-graph.json`
376
+ - Snake_case: `repo_map.md`, `ai_context.md`, `tech_stack.md`
377
+ - CamelCase: `aiContext` (en código), `contextPacket`
378
+
379
+ **Impacto**: Dificulta recordar nombres de archivos, inconsistencia visual.
380
+
381
+ **Solución sugerida**: Estandarizar todo a snake_case:
382
+ - `repo_map.json` (no `repo-map.json`)
383
+ - `module_graph.json` (no `module-graph.json`)
384
+ - `symbol_graph.json` (no `symbol-graph.json`)
385
+ - `ai_context.md` (ya está bien)
386
+
387
+ ---
388
+
389
+ ### Issue 4: Organización de carpeta ai/
390
+ **Estado**: ⚠️ Pendiente
391
+ **Severidad**: Media
392
+
393
+ **Problema**: La carpeta `ai/` contiene archivos que NO son generados por el CLI:
394
+ - `ai/` en el repositorio contiene archivos del propio proyecto (meta)
395
+ - Los usuarios esperan que `ai/` solo contenga archivos generados por `ai-first`
396
+ - Mezcla de archivos de ejemplo/documentación con archivos de análisis real
397
+
398
+ **Impacto**: Confusión sobre qué archivos deberían versionarse vs ignorarse.
399
+
400
+ **Solución sugerida**:
401
+ 1. Renombrar la carpeta de ejemplo/documentación a `.ai-example/` o `ai-example/`
402
+ 2. O mover los archivos de ejemplo a `docs/examples/ai/`
403
+ 3. Agregar `.ai/` a `.gitignore` para que los usuarios no versionen archivos generados
404
+ 4. Documentar claramente qué archivos son generados vs manuales
405
+
406
+ ---
407
+
408
+ ### Issue 5: Limpieza de archivos temporales/cache
409
+ **Estado**: ⚠️ Pendiente
410
+ **Severidad**: Baja
411
+
412
+ **Problema**: Archivos temporales y de caché se acumulan en `ai/`:
413
+ - `cache.json` - puede ser grande
414
+ - `index-state.json` - estado interno
415
+ - `embeddings.json` - muy grande (706KB en ejemplo)
416
+
417
+ **Solución sugerida**:
418
+ 1. Crear subcarpeta `ai/.cache/` para archivos temporales
419
+ 2. Agregar `ai/.cache/` a `.gitignore` por defecto
420
+ 3. Documentar qué archivos son seguros para versionar
421
+
422
+ ---
423
+
424
+ ### Issue 6: Documentación desactualizada
425
+ **Estado**: ⚠️ Pendiente
426
+ **Severidad**: Baja
427
+
428
+ **Problema**: Algunos archivos README tienen información desactualizada:
429
+ - Referencias a comandos que cambiaron de nombre
430
+ - Ejemplos con rutas antiguas
431
+ - Badge links que podrían estar rotos
432
+
433
+ **Solución sugerida**: Revisión completa de documentación en inglés y español.
434
+
435
+ ---
436
+
437
+ ### Issue 7: Mejorar manejo de errores en git command
438
+ **Estado**: ⚠️ Pendiente
439
+ **Severidad**: Baja
440
+
441
+ **Problema**: El comando `git` muestra error crudo cuando no hay repositorio:
442
+ ```
443
+ ❌ Not a git repository
444
+ EXIT_CODE: 1
445
+ ```
446
+
447
+ **Solución sugerida**: Mostrar mensaje más amigable:
448
+ ```
449
+ ⚠️ No git repository found in <path>
450
+ 💡 Run 'git init' first to enable git analysis
451
+ ```
452
+
453
+ ---
454
+
455
+ *Documento actualizado: 2026-03-17*