ai-first-cli 1.1.1 → 1.1.2

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 (192) hide show
  1. package/CHANGELOG.md +78 -0
  2. package/README.es.md +137 -1
  3. package/README.md +136 -4
  4. package/ai/ai_context.md +2 -2
  5. package/ai/architecture.md +3 -3
  6. package/ai/cache.json +85 -57
  7. package/ai/ccp/jira-123/context.json +7 -0
  8. package/ai/context/repo.json +56 -0
  9. package/ai/context/utils.json +7 -0
  10. package/ai/dependencies.json +51 -1026
  11. package/ai/files.json +195 -3
  12. package/ai/git/commit-activity.json +8646 -0
  13. package/ai/git/recent-features.json +1 -0
  14. package/ai/git/recent-files.json +52 -0
  15. package/ai/git/recent-flows.json +1 -0
  16. package/ai/graph/knowledge-graph.json +43643 -0
  17. package/ai/graph/module-graph.json +4 -0
  18. package/ai/graph/symbol-graph.json +3307 -879
  19. package/ai/graph/symbol-references.json +119 -32
  20. package/ai/index-state.json +843 -188
  21. package/ai/index.db +0 -0
  22. package/ai/modules.json +4 -0
  23. package/ai/repo-map.json +81 -17
  24. package/ai/repo_map.json +81 -17
  25. package/ai/repo_map.md +21 -7
  26. package/ai/summary.md +5 -5
  27. package/ai/symbols.json +1 -20287
  28. package/dist/analyzers/androidResources.d.ts +23 -0
  29. package/dist/analyzers/androidResources.d.ts.map +1 -0
  30. package/dist/analyzers/androidResources.js +93 -0
  31. package/dist/analyzers/androidResources.js.map +1 -0
  32. package/dist/analyzers/dependencies.d.ts.map +1 -1
  33. package/dist/analyzers/dependencies.js +37 -0
  34. package/dist/analyzers/dependencies.js.map +1 -1
  35. package/dist/analyzers/entrypoints.d.ts.map +1 -1
  36. package/dist/analyzers/entrypoints.js +71 -1
  37. package/dist/analyzers/entrypoints.js.map +1 -1
  38. package/dist/analyzers/gradleModules.d.ts +22 -0
  39. package/dist/analyzers/gradleModules.d.ts.map +1 -0
  40. package/dist/analyzers/gradleModules.js +75 -0
  41. package/dist/analyzers/gradleModules.js.map +1 -0
  42. package/dist/analyzers/techStack.d.ts +7 -0
  43. package/dist/analyzers/techStack.d.ts.map +1 -1
  44. package/dist/analyzers/techStack.js +44 -1
  45. package/dist/analyzers/techStack.js.map +1 -1
  46. package/dist/commands/ai-first.d.ts.map +1 -1
  47. package/dist/commands/ai-first.js +311 -1
  48. package/dist/commands/ai-first.js.map +1 -1
  49. package/dist/core/adapters/adapterRegistry.d.ts +39 -0
  50. package/dist/core/adapters/adapterRegistry.d.ts.map +1 -0
  51. package/dist/core/adapters/adapterRegistry.js +155 -0
  52. package/dist/core/adapters/adapterRegistry.js.map +1 -0
  53. package/dist/core/adapters/baseAdapter.d.ts +49 -0
  54. package/dist/core/adapters/baseAdapter.d.ts.map +1 -0
  55. package/dist/core/adapters/baseAdapter.js +28 -0
  56. package/dist/core/adapters/baseAdapter.js.map +1 -0
  57. package/dist/core/adapters/community/fastapiAdapter.d.ts +7 -0
  58. package/dist/core/adapters/community/fastapiAdapter.d.ts.map +1 -0
  59. package/dist/core/adapters/community/fastapiAdapter.js +40 -0
  60. package/dist/core/adapters/community/fastapiAdapter.js.map +1 -0
  61. package/dist/core/adapters/community/index.d.ts +11 -0
  62. package/dist/core/adapters/community/index.d.ts.map +1 -0
  63. package/dist/core/adapters/community/index.js +11 -0
  64. package/dist/core/adapters/community/index.js.map +1 -0
  65. package/dist/core/adapters/community/laravelAdapter.d.ts +7 -0
  66. package/dist/core/adapters/community/laravelAdapter.d.ts.map +1 -0
  67. package/dist/core/adapters/community/laravelAdapter.js +47 -0
  68. package/dist/core/adapters/community/laravelAdapter.js.map +1 -0
  69. package/dist/core/adapters/community/nestjsAdapter.d.ts +7 -0
  70. package/dist/core/adapters/community/nestjsAdapter.d.ts.map +1 -0
  71. package/dist/core/adapters/community/nestjsAdapter.js +48 -0
  72. package/dist/core/adapters/community/nestjsAdapter.js.map +1 -0
  73. package/dist/core/adapters/community/phoenixAdapter.d.ts +7 -0
  74. package/dist/core/adapters/community/phoenixAdapter.d.ts.map +1 -0
  75. package/dist/core/adapters/community/phoenixAdapter.js +45 -0
  76. package/dist/core/adapters/community/phoenixAdapter.js.map +1 -0
  77. package/dist/core/adapters/community/springBootAdapter.d.ts +7 -0
  78. package/dist/core/adapters/community/springBootAdapter.d.ts.map +1 -0
  79. package/dist/core/adapters/community/springBootAdapter.js +44 -0
  80. package/dist/core/adapters/community/springBootAdapter.js.map +1 -0
  81. package/dist/core/adapters/dotnetAdapter.d.ts +20 -0
  82. package/dist/core/adapters/dotnetAdapter.d.ts.map +1 -0
  83. package/dist/core/adapters/dotnetAdapter.js +86 -0
  84. package/dist/core/adapters/dotnetAdapter.js.map +1 -0
  85. package/dist/core/adapters/index.d.ts +18 -0
  86. package/dist/core/adapters/index.d.ts.map +1 -0
  87. package/dist/core/adapters/index.js +19 -0
  88. package/dist/core/adapters/index.js.map +1 -0
  89. package/dist/core/adapters/javascriptAdapter.d.ts +11 -0
  90. package/dist/core/adapters/javascriptAdapter.d.ts.map +1 -0
  91. package/dist/core/adapters/javascriptAdapter.js +47 -0
  92. package/dist/core/adapters/javascriptAdapter.js.map +1 -0
  93. package/dist/core/adapters/pythonAdapter.d.ts +20 -0
  94. package/dist/core/adapters/pythonAdapter.d.ts.map +1 -0
  95. package/dist/core/adapters/pythonAdapter.js +99 -0
  96. package/dist/core/adapters/pythonAdapter.js.map +1 -0
  97. package/dist/core/adapters/railsAdapter.d.ts +10 -0
  98. package/dist/core/adapters/railsAdapter.d.ts.map +1 -0
  99. package/dist/core/adapters/railsAdapter.js +52 -0
  100. package/dist/core/adapters/railsAdapter.js.map +1 -0
  101. package/dist/core/adapters/salesforceAdapter.d.ts +16 -0
  102. package/dist/core/adapters/salesforceAdapter.d.ts.map +1 -0
  103. package/dist/core/adapters/salesforceAdapter.js +64 -0
  104. package/dist/core/adapters/salesforceAdapter.js.map +1 -0
  105. package/dist/core/adapters/sdk.d.ts +83 -0
  106. package/dist/core/adapters/sdk.d.ts.map +1 -0
  107. package/dist/core/adapters/sdk.js +114 -0
  108. package/dist/core/adapters/sdk.js.map +1 -0
  109. package/dist/core/ccp.d.ts +37 -0
  110. package/dist/core/ccp.d.ts.map +1 -0
  111. package/dist/core/ccp.js +184 -0
  112. package/dist/core/ccp.js.map +1 -0
  113. package/dist/core/gitAnalyzer.d.ts +74 -0
  114. package/dist/core/gitAnalyzer.d.ts.map +1 -0
  115. package/dist/core/gitAnalyzer.js +298 -0
  116. package/dist/core/gitAnalyzer.js.map +1 -0
  117. package/dist/core/incrementalAnalyzer.d.ts +28 -0
  118. package/dist/core/incrementalAnalyzer.d.ts.map +1 -0
  119. package/dist/core/incrementalAnalyzer.js +343 -0
  120. package/dist/core/incrementalAnalyzer.js.map +1 -0
  121. package/dist/core/knowledgeGraphBuilder.d.ts +31 -0
  122. package/dist/core/knowledgeGraphBuilder.d.ts.map +1 -0
  123. package/dist/core/knowledgeGraphBuilder.js +197 -0
  124. package/dist/core/knowledgeGraphBuilder.js.map +1 -0
  125. package/dist/core/lazyAnalyzer.d.ts +57 -0
  126. package/dist/core/lazyAnalyzer.d.ts.map +1 -0
  127. package/dist/core/lazyAnalyzer.js +204 -0
  128. package/dist/core/lazyAnalyzer.js.map +1 -0
  129. package/dist/core/schema.d.ts +57 -0
  130. package/dist/core/schema.d.ts.map +1 -0
  131. package/dist/core/schema.js +131 -0
  132. package/dist/core/schema.js.map +1 -0
  133. package/dist/core/semanticContexts.d.ts +40 -0
  134. package/dist/core/semanticContexts.d.ts.map +1 -0
  135. package/dist/core/semanticContexts.js +454 -0
  136. package/dist/core/semanticContexts.js.map +1 -0
  137. package/docs/es/guide/adapters.md +143 -0
  138. package/docs/es/guide/ai-repository-schema.md +119 -0
  139. package/docs/es/guide/features.md +67 -0
  140. package/docs/es/guide/flows.md +134 -0
  141. package/docs/es/guide/git-intelligence.md +170 -0
  142. package/docs/es/guide/incremental-analysis.md +131 -0
  143. package/docs/es/guide/knowledge-graph.md +135 -0
  144. package/docs/es/guide/lazy-indexing.md +144 -0
  145. package/docs/es/guide/performance.md +125 -0
  146. package/docs/guide/adapters.md +225 -0
  147. package/docs/guide/ai-repository-schema.md +119 -0
  148. package/docs/guide/architecture.md +69 -1
  149. package/docs/guide/flows.md +134 -0
  150. package/docs/guide/git-intelligence.md +170 -0
  151. package/docs/guide/incremental-analysis.md +131 -0
  152. package/docs/guide/knowledge-graph.md +135 -0
  153. package/docs/guide/lazy-indexing.md +144 -0
  154. package/docs/guide/performance.md +125 -0
  155. package/package.json +5 -2
  156. package/src/analyzers/androidResources.ts +113 -0
  157. package/src/analyzers/dependencies.ts +41 -0
  158. package/src/analyzers/entrypoints.ts +80 -1
  159. package/src/analyzers/gradleModules.ts +100 -0
  160. package/src/analyzers/techStack.ts +56 -0
  161. package/src/commands/ai-first.ts +342 -1
  162. package/src/core/adapters/adapterRegistry.ts +187 -0
  163. package/src/core/adapters/baseAdapter.ts +82 -0
  164. package/src/core/adapters/community/fastapiAdapter.ts +50 -0
  165. package/src/core/adapters/community/index.ts +11 -0
  166. package/src/core/adapters/community/laravelAdapter.ts +56 -0
  167. package/src/core/adapters/community/nestjsAdapter.ts +57 -0
  168. package/src/core/adapters/community/phoenixAdapter.ts +54 -0
  169. package/src/core/adapters/community/springBootAdapter.ts +53 -0
  170. package/src/core/adapters/dotnetAdapter.ts +104 -0
  171. package/src/core/adapters/index.ts +24 -0
  172. package/src/core/adapters/javascriptAdapter.ts +56 -0
  173. package/src/core/adapters/pythonAdapter.ts +118 -0
  174. package/src/core/adapters/railsAdapter.ts +65 -0
  175. package/src/core/adapters/salesforceAdapter.ts +76 -0
  176. package/src/core/adapters/sdk.ts +172 -0
  177. package/src/core/ccp.ts +240 -0
  178. package/src/core/gitAnalyzer.ts +391 -0
  179. package/src/core/incrementalAnalyzer.ts +382 -0
  180. package/src/core/knowledgeGraphBuilder.ts +181 -0
  181. package/src/core/lazyAnalyzer.ts +261 -0
  182. package/src/core/schema.ts +157 -0
  183. package/src/core/semanticContexts.ts +575 -0
  184. package/tests/adapters.test.ts +159 -0
  185. package/tests/gitAnalyzer.test.ts +133 -0
  186. package/tests/incrementalAnalyzer.test.ts +83 -0
  187. package/tests/knowledgeGraph.test.ts +146 -0
  188. package/tests/lazyAnalyzer.test.ts +230 -0
  189. package/tests/schema.test.ts +203 -0
  190. package/tests/semanticContexts.test.ts +435 -0
  191. package/ai/context/analyzers.Symbol.json +0 -19
  192. package/ai/context/analyzers.extractSymbols.json +0 -19
@@ -0,0 +1,143 @@
1
+ # Adaptadores de Análisis
2
+
3
+ AI-First usa un sistema de adaptadores para soportar múltiples lenguajes y frameworks sin modificar el motor de análisis central.
4
+
5
+ ## Descripción General
6
+
7
+ Los adaptadores personalizan cómo AI-First detecta:
8
+ - **Raíces de características**: Dónde buscar características de negocio
9
+ - **Puntos de entrada**: Archivos que representan puntos de entrada
10
+ - **Capas**: Capas arquitectónicas en el código base
11
+ - **Carpetas ignoradas**: Directorios técnicos a omitir
12
+
13
+ ## Adaptadores Soportados
14
+
15
+ | Adaptador | Señales de Detección |
16
+ |-----------|---------------------|
17
+ | JavaScript/TypeScript | `package.json`, `tsconfig.json`, `vite.config.ts` |
18
+ | Django | `manage.py`, `settings.py` |
19
+ | Flask/FastAPI | `app.py`, `main.py` |
20
+ | Ruby on Rails | `Gemfile`, `config.ru` |
21
+ | Salesforce | `sfdx-project.json`, `force-app/` |
22
+ | .NET | `*.csproj`, `Program.cs` |
23
+ | ASP.NET Core | `Startup.cs`, `Program.cs` |
24
+ | Blazor | `_Imports.razor`, `@page` |
25
+
26
+ ## Arquitectura
27
+
28
+ ```
29
+ analysis/
30
+ adapters/
31
+ baseAdapter.ts # Definición de interfaz
32
+ javascriptAdapter.ts
33
+ pythonAdapter.ts
34
+ railsAdapter.ts
35
+ salesforceAdapter.ts
36
+ dotnetAdapter.ts
37
+ adapterRegistry.ts # Lógica de detección
38
+ ```
39
+
40
+ ## Interfaz del Adaptador
41
+
42
+ ```typescript
43
+ interface AnalysisAdapter {
44
+ name: string;
45
+ displayName: string;
46
+ detectionSignals: DetectionSignal[];
47
+ featureRoots: string[];
48
+ ignoredFolders: string[];
49
+ entrypointPatterns: string[];
50
+ layerRules: LayerRule[];
51
+ supportedExtensions: string[];
52
+ flowEntrypointPatterns: string[];
53
+ flowExcludePatterns: string[];
54
+ }
55
+ ```
56
+
57
+ ## Señales de Detección
58
+
59
+ Los adaptadores se detectan usando señales:
60
+
61
+ ```typescript
62
+ interface DetectionSignal {
63
+ type: 'file' | 'directory' | 'content';
64
+ pattern: string;
65
+ contentPattern?: string;
66
+ }
67
+ ```
68
+
69
+ Ejemplo:
70
+ ```typescript
71
+ detectionSignals: [
72
+ { type: 'file', pattern: 'package.json' },
73
+ { type: 'file', pattern: 'tsconfig.json' },
74
+ { type: 'directory', pattern: 'src' }
75
+ ]
76
+ ```
77
+
78
+ ## Reglas de Capas
79
+
80
+ Cada adaptador define capas arquitectónicas:
81
+
82
+ ```typescript
83
+ layerRules: [
84
+ { name: 'api', priority: 1, patterns: ['controller', 'handler', 'route'] },
85
+ { name: 'service', priority: 2, patterns: ['service', 'usecase'] },
86
+ { name: 'data', priority: 3, patterns: ['repository', 'model'] }
87
+ ]
88
+ ```
89
+
90
+ ## Uso
91
+
92
+ ```typescript
93
+ import { detectAdapter, getAdapter } from './core/adapters/index.js';
94
+
95
+ // Auto-detectar tipo de proyecto
96
+ const adapter = detectAdapter('/path/to/project');
97
+ console.log(adapter.name); // 'javascript', 'django', etc.
98
+
99
+ // Obtener adaptador específico
100
+ const jsAdapter = getAdapter('javascript');
101
+ ```
102
+
103
+ ## Creando Adaptadores Personalizados
104
+
105
+ 1. Crea un nuevo archivo en `src/core/adapters/`
106
+ 2. Define tu adaptador:
107
+
108
+ ```typescript
109
+ import { AnalysisAdapter } from './baseAdapter.js';
110
+
111
+ export const myAdapter: AnalysisAdapter = {
112
+ name: 'myframework',
113
+ displayName: 'My Framework',
114
+ detectionSignals: [
115
+ { type: 'file', pattern: 'my-framework.config.js' }
116
+ ],
117
+ featureRoots: ['src', 'lib'],
118
+ ignoredFolders: ['node_modules', 'dist'],
119
+ entrypointPatterns: ['controller', 'service'],
120
+ layerRules: [
121
+ { name: 'api', priority: 1, patterns: ['controller'] },
122
+ { name: 'service', priority: 2, patterns: ['service'] },
123
+ { name: 'data', priority: 3, patterns: ['model'] }
124
+ ],
125
+ supportedExtensions: ['.ts', '.js'],
126
+ flowEntrypointPatterns: ['controller'],
127
+ flowExcludePatterns: ['test', 'spec']
128
+ };
129
+ ```
130
+
131
+ 3. Regístralo en `adapterRegistry.ts`
132
+ 4. Agrega tests
133
+
134
+ ## Integración
135
+
136
+ Los adaptadores se integran con la detección de características y flujos:
137
+
138
+ - `featureRoots` → dónde encontrar características
139
+ - `ignoredFolders` → qué omitir
140
+ - `entrypointPatterns` → puntos de entrada de lógica de negocio
141
+ - `layerRules` → capas de la cadena de flujos
142
+
143
+ Esto permite que AI-First entienda cualquier estructura de código base.
@@ -0,0 +1,119 @@
1
+ # Esquema de Repositorio AI
2
+
3
+ El Esquema de Repositorio AI estandariza cómo AI-First almacena y administra los metadatos del repositorio, permitiendo que los agentes de IA comprendan la estructura del proyecto y mantengan compatibilidad entre versiones.
4
+
5
+ ## Descripción General
6
+
7
+ AI-First genera tres archivos de esquema principales que definen la estructura del proyecto:
8
+
9
+ - `schema.json` - Versión del esquema y metadatos
10
+ - `project.json` - Información del proyecto (features, flows, lenguajes, frameworks)
11
+ - `tools.json` - Herramientas y agentes de IA compatibles
12
+
13
+ ## Archivos de Esquema
14
+
15
+ ### schema.json
16
+
17
+ Contiene la versión del esquema y metadatos de generación:
18
+
19
+ ```json
20
+ {
21
+ "schemaVersion": "1.0",
22
+ "generatedBy": "ai-first",
23
+ "generatedAt": "2024-01-15T10:30:00.000Z"
24
+ }
25
+ ```
26
+
27
+ ### project.json
28
+
29
+ Contiene información específica del proyecto:
30
+
31
+ ```json
32
+ {
33
+ "name": "mi-proyecto",
34
+ "rootDir": "/ruta/al/proyecto",
35
+ "features": ["auth", "users", "payments"],
36
+ "flows": ["login", "checkout", "registration"],
37
+ "languages": ["TypeScript", "Python"],
38
+ "frameworks": ["Express", "React"],
39
+ "generatedAt": "2024-01-15T10:30:00.000Z"
40
+ }
41
+ ```
42
+
43
+ ### tools.json
44
+
45
+ Define los agentes de IA compatibles:
46
+
47
+ ```json
48
+ {
49
+ "compatibleAgents": ["ai-first-bridge", "opencode", "cursor", "windsurf", "cline"],
50
+ "schemaVersion": "1.0"
51
+ }
52
+ ```
53
+
54
+ ## Detección Automática
55
+
56
+ AI-First detecta automáticamente:
57
+
58
+ - **Features**: Desde archivos `ai/context/features/*.json`
59
+ - **Flows**: Desde archivos `ai/context/flows/*.json`
60
+ - **Lenguajes**: Desde `ai/tech_stack.md` (sección Languages)
61
+ - **Frameworks**: Desde `ai/tech_stack.md` (sección Frameworks)
62
+
63
+ ## Compatibilidad de Versiones
64
+
65
+ El esquema usa versionamiento semántico. AI-First valida la compatibilidad:
66
+
67
+ - Misma versión mayor = compatible
68
+ - Diferente versión mayor = incompatible
69
+
70
+ ## Comandos CLI
71
+
72
+ ### Generar Esquema
73
+
74
+ El esquema se genera automáticamente con `ai-first init`:
75
+
76
+ ```bash
77
+ ai-first init
78
+ ```
79
+
80
+ ### Validar Esquema
81
+
82
+ Verifica si tu repositorio tiene un esquema válido:
83
+
84
+ ```javascript
85
+ import { validateSchema } from 'ai-first';
86
+
87
+ const result = validateSchema('./ai');
88
+ console.log(result.valid); // true/false
89
+ console.log(result.errors); // []
90
+ ```
91
+
92
+ ### Cargar Esquema
93
+
94
+ Carga el esquema programáticamente:
95
+
96
+ ```javascript
97
+ import { loadFullSchema } from 'ai-first';
98
+
99
+ const schema = loadFullSchema('./ai');
100
+ if (schema) {
101
+ console.log(schema.project.name);
102
+ console.log(schema.schema.schemaVersion);
103
+ }
104
+ ```
105
+
106
+ ## Integración
107
+
108
+ El esquema está integrado en el CLI de AI-First:
109
+
110
+ 1. `ai-first init` - Genera archivos de esquema
111
+ 2. `ai-first validate` - Valida el esquema (próximamente)
112
+ 3. `ai-first doctor` - Verifica la salud del esquema
113
+
114
+ ## Beneficios
115
+
116
+ - **Seguridad de Versión**: Los agentes de IA saben qué versión del esquema esperar
117
+ - **Descubrimiento de Proyecto**: Features y flows se detectan automáticamente
118
+ - **Compatibilidad de Agentes**: Lista clara de herramientas de IA compatibles
119
+ - **Extensibilidad**: El esquema puede extenderse para agentes personalizados
@@ -0,0 +1,67 @@
1
+ # Detección de Características
2
+
3
+ AI-First detecta automáticamente características empresariales y flujos desde la estructura de tu código base.
4
+
5
+ ## Reglas de Detección de Características
6
+
7
+ ### 1. Raíces de Candidatos
8
+
9
+ Las características se escanean dentro de:
10
+ - `src/*`
11
+ - `app/*`
12
+ - `packages/*`
13
+ - `services/*`
14
+ - `modules/*`
15
+ - `features/*`
16
+
17
+ ### 2. Carpetas Ignoradas
18
+
19
+ Las carpetas técnicas son excluidas:
20
+ - `utils`, `helpers`, `types`, `interfaces`, `constants`
21
+ - `config`, `dto`, `models`, `common`, `shared`
22
+
23
+ ### 3. Requisitos de Características
24
+
25
+ Una característica válida debe:
26
+ - Contener al menos 3 archivos fuente
27
+ - Contener al menos un punto de entrada (Controller, Route, Handler, Command, Service)
28
+ - Existir en profundidad 1 o 2: `src/auth`, `src/modules/auth`
29
+
30
+ ## Formato de Salida de Características
31
+
32
+ ```json
33
+ {
34
+ "name": "auth",
35
+ "path": "src/auth",
36
+ "files": [
37
+ "src/auth/authController.ts",
38
+ "src/auth/authService.ts",
39
+ "src/auth/authRepository.ts"
40
+ ],
41
+ "entrypoints": [
42
+ "src/auth/authController.ts"
43
+ ],
44
+ "dependencies": ["users", "payments"]
45
+ }
46
+ ```
47
+
48
+ ## Detección de Flujos
49
+
50
+ Los flujos representan cadenas de ejecución empresarial que comienzan desde puntos de entrada:
51
+
52
+ - **Mínimo 3 archivos** por flujo
53
+ - **Mínimo 2 capas arquitectónicas** (api → service → data)
54
+ - Puntos de entrada: Controller, Route, Handler, Command
55
+
56
+ Los flujos se generan usando tres métodos de respaldo:
57
+ 1. **Grafo de Símbolos** - Usa relaciones de llamada/importación
58
+ 2. **Estructura de Carpetas** - Agrupa por prefijo de característica
59
+ 3. **Análisis de Importaciones** - Sigue cadenas de dependencias
60
+
61
+ ## Ubicación de Salida
62
+
63
+ Las características y flujos se escriben en:
64
+ ```
65
+ ai/context/features/<caracteristica>.json
66
+ ai/context/flows/<flujo>.json
67
+ ```
@@ -0,0 +1,134 @@
1
+ # Detección de Flujos
2
+
3
+ Los flujos representan cadenas de ejecución empresarial que atraviesan múltiples capas arquitectónicas en tu código base.
4
+
5
+ ## Descripción General
6
+
7
+ La detección de flujos identifica cómo fluyen los datos a través de tu aplicación desde los puntos de entrada hasta las capas de acceso a datos.
8
+
9
+ ### Ejemplo de Flujo
10
+
11
+ ```
12
+ LoginController → AuthService → UserRepository
13
+ ```
14
+
15
+ Esto representa una arquitectura de tres niveles típica:
16
+ 1. **Capa API**: LoginController (punto de entrada)
17
+ 2. **Capa de Servicio**: AuthService (lógica de negocio)
18
+ 3. **Capa de Datos**: UserRepository (persistencia)
19
+
20
+ ## Métodos de Detección
21
+
22
+ AI-First usa múltiples métodos de respaldo para detectar flujos:
23
+
24
+ ### 1. Grafo de Símbolos (Primario)
25
+
26
+ Cuando las relaciones de símbolos son fuertes, los flujos se detectan analizando:
27
+ - Llamadas de funciones (`calls`)
28
+ - Importaciones de módulos (`imports`)
29
+ - Referencias de símbolos (`references`)
30
+
31
+ **Requisitos:**
32
+ - Densidad del grafo de símbolos ≥ 0.5
33
+ - Al menos 10 relaciones
34
+
35
+ ### 2. Estructura de Carpetas (Respaldo)
36
+
37
+ Cuando el grafo de símbolos es débil, los flujos se infieren de:
38
+ - Convenciones de nombres de archivos (ej. `authController.ts`, `authService.ts`)
39
+ - Agrupación por prefijo de característica
40
+
41
+ **Ejemplo:**
42
+ - `authController.ts` → característica: `auth`
43
+ - `authService.ts` → pertenece al flujo `auth`
44
+ - `authRepository.ts` → pertenece al flujo `auth`
45
+
46
+ ### 3. Análisis de Importaciones (Respaldo)
47
+
48
+ Usa el análisis de dependencias para rastrear rutas de ejecución:
49
+ 1. Iniciar desde archivos de punto de entrada
50
+ 2. Seguir declaraciones de importación
51
+ 3. Construir cadena hasta MAX_FLOW_DEPTH
52
+
53
+ ## Configuración
54
+
55
+ ### Límites
56
+
57
+ | Parámetro | Valor | Descripción |
58
+ |-----------|-------|-------------|
59
+ | `MAX_FLOW_DEPTH` | 5 | Profundidad máxima de recorrido |
60
+ | `MAX_FLOW_FILES` | 30 | Máximo de archivos por flujo |
61
+
62
+ ### Puntos de Entrada
63
+
64
+ Los flujos deben comenzar desde uno de estos tipos de archivos:
65
+ - Controller
66
+ - Route
67
+ - Handler
68
+ - Command
69
+
70
+ ### Capas
71
+
72
+ Capas arquitectónicas soportadas:
73
+ | Capa | Patrones |
74
+ |-------|----------|
75
+ | api | controller, handler, route, router, endpoint |
76
+ | service | service, services, usecase, interactor |
77
+ | data | repository, repo, dal, dao, data, persistence |
78
+ | domain | model, entity, schema, domain |
79
+
80
+ ## Requisitos
81
+
82
+ Un flujo válido debe tener:
83
+ - **Mínimo 3 archivos**
84
+ - **Mínimo 2 capas arquitectónicas**
85
+
86
+ ## Formato de Salida
87
+
88
+ Los flujos se escriben en: `ai/context/flows/<nombre-flujo>.json`
89
+
90
+ ```json
91
+ {
92
+ "name": "auth",
93
+ "entrypoint": "api/authController.js",
94
+ "files": [
95
+ "api/authController.js",
96
+ "services/authService.js",
97
+ "data/authRepository.js"
98
+ ],
99
+ "depth": 3,
100
+ "layers": ["api", "service", "data"]
101
+ }
102
+ ```
103
+
104
+ ### Campos de Salida
105
+
106
+ | Campo | Descripción |
107
+ |-------|-------------|
108
+ | `name` | Identificador del flujo (derivado del punto de entrada) |
109
+ | `entrypoint` | Archivo de inicio (Controller/Route/Handler/Command) |
110
+ | `files` | Todos los archivos en la cadena del flujo |
111
+ | `depth` | Profundidad real del recorrido |
112
+ | `layers` | Capas únicas recorridas |
113
+
114
+ ## Uso
115
+
116
+ Los flujos se generan automáticamente al ejecutar:
117
+
118
+ ```bash
119
+ ai-first map
120
+ # o
121
+ ai-first init
122
+ ```
123
+
124
+ ## Integración
125
+
126
+ Los flujos funcionan con las Características para proporcionar contexto completo:
127
+
128
+ - **Características**: Identifican módulos de negocio (auth, users, payments)
129
+ - **Flujos**: Identifican cómo se ejecuta el código dentro de las características
130
+
131
+ Juntos permiten a los agentes de IA:
132
+ 1. Entender la estructura del dominio de negocio
133
+ 2. Rastrear rutas de ejecución
134
+ 3. Localizar código relevante para modificaciones
@@ -0,0 +1,170 @@
1
+ # Inteligencia Git
2
+
3
+ AI-First puede analizar tu repositorio git para proporcionar a los agentes IA contexto sobre la actividad reciente, ayudándolos a priorizar archivos relevantes y entender qué ha sido modificado recientemente.
4
+
5
+ ## Por qué Inteligencia Git?
6
+
7
+ Cuando trabajas con asistentes de codificación IA, conocer qué archivos han sido modificados recientemente ayuda a la IA a:
8
+
9
+ - **Priorizar revisión** - Enfocarse en archivos modificados recently al sugerir modificaciones
10
+ - **Entender contexto** - Saber qué features/flows están siendo desarrollados activamente
11
+ - **Evitar conflictos** - Identificar archivos que fueron modificados recientemente para prevenir sobreescritura
12
+ - **Rastrear cambios** - Ver patrones de commits y frecuencia de actividad
13
+
14
+ ## Cómo Funciona
15
+
16
+ La Inteligencia Git analiza tu historial git para generar metadata sobre la actividad reciente del repositorio:
17
+
18
+ 1. **Detecta repositorio git** - Verifica si el proyecto es un repositorio git
19
+ 2. **Analiza commits recientes** - Extrae datos de commits (default: últimos 50 commits, últimos 30 días)
20
+ 3. **Mapea a features/flows** - Correlaciona archivos cambiados con features y flows detectados
21
+ 4. **Genera metadata** - Archivos JSON de salida para consumo de IA
22
+
23
+ ## Archivos Generados
24
+
25
+ Cuando ejecutas `ai-first git`, los siguientes archivos se crean en `ai/git/`:
26
+
27
+ ### recent-files.json
28
+
29
+ Lista de archivos recientemente cambiados:
30
+
31
+ ```json
32
+ [
33
+ "src/auth/loginController.ts",
34
+ "src/auth/sessionService.ts",
35
+ "src/payments/checkoutFlow.ts"
36
+ ]
37
+ ```
38
+
39
+ ### recent-features.json
40
+
41
+ Features que han sido modificados recientemente:
42
+
43
+ ```json
44
+ ["auth", "payments"]
45
+ ```
46
+
47
+ ### recent-flows.json
48
+
49
+ Flows que han sido modificados recientemente:
50
+
51
+ ```json
52
+ ["login", "checkout"]
53
+ ```
54
+
55
+ ### commit-activity.json
56
+
57
+ Datos detallados de frecuencia de commits:
58
+
59
+ ```json
60
+ {
61
+ "totalCommits": 50,
62
+ "dateRange": {
63
+ "start": "2026-02-01",
64
+ "end": "2026-03-10"
65
+ },
66
+ "files": {
67
+ "src/auth/loginController.ts": 5,
68
+ "src/auth/sessionService.ts": 3
69
+ },
70
+ "features": {
71
+ "auth": 8,
72
+ "payments": 12
73
+ },
74
+ "flows": {
75
+ "login": 4,
76
+ "checkout": 7
77
+ }
78
+ }
79
+ ```
80
+
81
+ ## Uso
82
+
83
+ ### Comando CLI
84
+
85
+ ```bash
86
+ # Analizar actividad git
87
+ ai-first git
88
+
89
+ # Analizar con más commits
90
+ ai-first git --limit 100
91
+
92
+ # Mostrar actividad detallada
93
+ ai-first git --activity
94
+
95
+ # Salida como JSON
96
+ ai-first git --json
97
+ ```
98
+
99
+ ### Opciones
100
+
101
+ | Opción | Alias | Descripción |
102
+ |--------|-------|-------------|
103
+ | `--root` | `-r` | Directorio raíz (default: actual) |
104
+ | `--limit` | `-n` | Número de commits (default: 50) |
105
+ | `--activity` | `-a` | Mostrar actividad detallada |
106
+ | `--json` | | Salida como JSON |
107
+ | `--help` | `-h` | Mostrar ayuda |
108
+
109
+ ### Uso Programático
110
+
111
+ ```typescript
112
+ import {
113
+ detectGitRepository,
114
+ getRecentCommits,
115
+ analyzeGitActivity,
116
+ generateGitContext
117
+ } from 'ai-first';
118
+
119
+ // Verificar si es repo git
120
+ if (detectGitRepository('/path/to/project')) {
121
+ // Obtener commits recientes
122
+ const commits = getRecentCommits('/path/to/project');
123
+
124
+ // Analizar actividad
125
+ const activity = analyzeGitActivity('/path/to/project');
126
+
127
+ // Generar archivos de contexto
128
+ const context = generateGitContext('/path/to/project');
129
+ }
130
+ ```
131
+
132
+ ## Referencia API
133
+
134
+ ### detectGitRepository(rootDir: string): boolean
135
+
136
+ Verifica si un directorio es un repositorio git.
137
+
138
+ ### getRecentCommits(rootDir: string, limit?: number): GitCommit[]
139
+
140
+ Retorna commits recientes con cambios de archivos.
141
+
142
+ ### extractChangedFiles(commits: GitCommit[]): RecentFile[]
143
+
144
+ Extrae y cuenta archivos cambiados de commits.
145
+
146
+ ### mapFilesToFeatures(rootDir: string, files: string[]): string[]
147
+
148
+ Mapea archivos cambiados a features detectados.
149
+
150
+ ### mapFilesToFlows(rootDir: string, files: string[]): string[]
151
+
152
+ Mapea archivos cambiados a flows detectados.
153
+
154
+ ### analyzeGitActivity(rootDir: string): GitActivity | null
155
+
156
+ Analiza actividad git y retorna datos agregados.
157
+
158
+ ### generateGitContext(rootDir: string, aiDir?: string): GitContext
159
+
160
+ Genera todos los archivos de contexto git en `ai/git/`.
161
+
162
+ ## Integración con Contexto IA
163
+
164
+ La inteligencia git se integra con el sistema de contexto IA:
165
+
166
+ 1. Ejecuta `ai-first init` para generar features y flows
167
+ 2. Ejecuta `ai-first git` para analizar actividad git
168
+ 3. Los agentes IA pueden leer los archivos en `ai/git/` para entender cambios recientes
169
+
170
+ Esto proporciona una imagen completa de la estructura de tu código y su actividad de desarrollo.