ai-first-cli 1.3.5 → 1.3.8

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 (126) hide show
  1. package/CHANGELOG.md +186 -0
  2. package/README.es.md +68 -0
  3. package/README.md +53 -15
  4. package/ai/graph/knowledge-graph.json +1 -1
  5. package/ai-context/index-state.json +86 -2
  6. package/dist/analyzers/architecture.d.ts.map +1 -1
  7. package/dist/analyzers/architecture.js +72 -5
  8. package/dist/analyzers/architecture.js.map +1 -1
  9. package/dist/analyzers/entrypoints.d.ts.map +1 -1
  10. package/dist/analyzers/entrypoints.js +253 -0
  11. package/dist/analyzers/entrypoints.js.map +1 -1
  12. package/dist/analyzers/symbols.d.ts.map +1 -1
  13. package/dist/analyzers/symbols.js +47 -2
  14. package/dist/analyzers/symbols.js.map +1 -1
  15. package/dist/analyzers/techStack.d.ts.map +1 -1
  16. package/dist/analyzers/techStack.js +86 -0
  17. package/dist/analyzers/techStack.js.map +1 -1
  18. package/dist/commands/ai-first.d.ts.map +1 -1
  19. package/dist/commands/ai-first.js +78 -4
  20. package/dist/commands/ai-first.js.map +1 -1
  21. package/dist/config/configLoader.d.ts +6 -0
  22. package/dist/config/configLoader.d.ts.map +1 -0
  23. package/dist/config/configLoader.js +232 -0
  24. package/dist/config/configLoader.js.map +1 -0
  25. package/dist/config/index.d.ts +3 -0
  26. package/dist/config/index.d.ts.map +1 -0
  27. package/dist/config/index.js +2 -0
  28. package/dist/config/index.js.map +1 -0
  29. package/dist/config/types.d.ts +101 -0
  30. package/dist/config/types.d.ts.map +1 -0
  31. package/dist/config/types.js +2 -0
  32. package/dist/config/types.js.map +1 -0
  33. package/dist/core/content/contentProcessor.d.ts +4 -0
  34. package/dist/core/content/contentProcessor.d.ts.map +1 -0
  35. package/dist/core/content/contentProcessor.js +235 -0
  36. package/dist/core/content/contentProcessor.js.map +1 -0
  37. package/dist/core/content/index.d.ts +3 -0
  38. package/dist/core/content/index.d.ts.map +1 -0
  39. package/dist/core/content/index.js +2 -0
  40. package/dist/core/content/index.js.map +1 -0
  41. package/dist/core/content/types.d.ts +32 -0
  42. package/dist/core/content/types.d.ts.map +1 -0
  43. package/dist/core/content/types.js +2 -0
  44. package/dist/core/content/types.js.map +1 -0
  45. package/dist/core/gitAnalyzer.d.ts +14 -0
  46. package/dist/core/gitAnalyzer.d.ts.map +1 -1
  47. package/dist/core/gitAnalyzer.js +98 -0
  48. package/dist/core/gitAnalyzer.js.map +1 -1
  49. package/dist/core/multiRepo/index.d.ts +3 -0
  50. package/dist/core/multiRepo/index.d.ts.map +1 -0
  51. package/dist/core/multiRepo/index.js +2 -0
  52. package/dist/core/multiRepo/index.js.map +1 -0
  53. package/dist/core/multiRepo/multiRepoScanner.d.ts +18 -0
  54. package/dist/core/multiRepo/multiRepoScanner.d.ts.map +1 -0
  55. package/dist/core/multiRepo/multiRepoScanner.js +131 -0
  56. package/dist/core/multiRepo/multiRepoScanner.js.map +1 -0
  57. package/dist/core/rag/index.d.ts +3 -0
  58. package/dist/core/rag/index.d.ts.map +1 -0
  59. package/dist/core/rag/index.js +2 -0
  60. package/dist/core/rag/index.js.map +1 -0
  61. package/dist/core/rag/vectorIndex.d.ts +28 -0
  62. package/dist/core/rag/vectorIndex.d.ts.map +1 -0
  63. package/dist/core/rag/vectorIndex.js +71 -0
  64. package/dist/core/rag/vectorIndex.js.map +1 -0
  65. package/dist/mcp/index.d.ts +2 -0
  66. package/dist/mcp/index.d.ts.map +1 -0
  67. package/dist/mcp/index.js +2 -0
  68. package/dist/mcp/index.js.map +1 -0
  69. package/dist/mcp/server.d.ts +7 -0
  70. package/dist/mcp/server.d.ts.map +1 -0
  71. package/dist/mcp/server.js +154 -0
  72. package/dist/mcp/server.js.map +1 -0
  73. package/dist/utils/fileUtils.d.ts.map +1 -1
  74. package/dist/utils/fileUtils.js +5 -0
  75. package/dist/utils/fileUtils.js.map +1 -1
  76. package/docs/planning/evaluator-v1.0.0/README.md +112 -0
  77. package/docs/planning/evaluator-v1.0.0/improvements_plan_2026-03-28.md +237 -0
  78. package/package.json +13 -3
  79. package/src/analyzers/architecture.ts +75 -6
  80. package/src/analyzers/entrypoints.ts +285 -0
  81. package/src/analyzers/symbols.ts +52 -2
  82. package/src/analyzers/techStack.ts +90 -0
  83. package/src/commands/ai-first.ts +83 -4
  84. package/src/config/configLoader.ts +274 -0
  85. package/src/config/index.ts +27 -0
  86. package/src/config/types.ts +117 -0
  87. package/src/core/content/contentProcessor.ts +292 -0
  88. package/src/core/content/index.ts +9 -0
  89. package/src/core/content/types.ts +35 -0
  90. package/src/core/gitAnalyzer.ts +130 -0
  91. package/src/core/multiRepo/index.ts +2 -0
  92. package/src/core/multiRepo/multiRepoScanner.ts +177 -0
  93. package/src/core/rag/index.ts +2 -0
  94. package/src/core/rag/vectorIndex.ts +105 -0
  95. package/src/mcp/index.ts +1 -0
  96. package/src/mcp/server.ts +179 -0
  97. package/src/utils/fileUtils.ts +5 -0
  98. package/tests/entrypoints-languages.test.ts +373 -0
  99. package/tests/framework-detection.test.ts +296 -0
  100. package/tests/v1.3.8-integration.test.ts +361 -0
  101. package/BETA_EVALUATION_REPORT.md +0 -151
  102. package/ai-context/context/flows/App.json +0 -17
  103. package/ai-context/context/flows/DashboardPage.json +0 -14
  104. package/ai-context/context/flows/LoginPage.json +0 -14
  105. package/ai-context/context/flows/admin.json +0 -10
  106. package/ai-context/context/flows/androidresources.json +0 -11
  107. package/ai-context/context/flows/authController.json +0 -14
  108. package/ai-context/context/flows/entrypoints.json +0 -9
  109. package/ai-context/context/flows/fastapiAdapter.json +0 -14
  110. package/ai-context/context/flows/fastapiadapter.json +0 -11
  111. package/ai-context/context/flows/index.json +0 -19
  112. package/ai-context/context/flows/indexer.json +0 -9
  113. package/ai-context/context/flows/indexstate.json +0 -9
  114. package/ai-context/context/flows/init.json +0 -22
  115. package/ai-context/context/flows/main.json +0 -18
  116. package/ai-context/context/flows/mainactivity.json +0 -9
  117. package/ai-context/context/flows/models.json +0 -15
  118. package/ai-context/context/flows/posts.json +0 -15
  119. package/ai-context/context/flows/repoMapper.json +0 -20
  120. package/ai-context/context/flows/repomapper.json +0 -11
  121. package/ai-context/context/flows/serializers.json +0 -10
  122. package/ai-context-evaluation-report-1774223059505.md +0 -206
  123. package/dist/scripts/ai-context-evaluator.js +0 -367
  124. package/quick-evaluation-report-1774396002305.md +0 -64
  125. package/quick-evaluator.ts +0 -200
  126. package/scripts/ai-context-evaluator.ts +0 -440
package/CHANGELOG.md CHANGED
@@ -6,6 +6,192 @@ All notable changes to `ai-first` will be documented in this file.
6
6
 
7
7
  ## [Unreleased]
8
8
 
9
+ ## [1.3.8] - 2026-03-29
10
+
11
+ ### 🚀 Major Features & Architecture Improvements
12
+
13
+ **Branch:** `feature/v1.3.8-improvements`
14
+
15
+ #### ✨ New Features
16
+
17
+ - **Configuration System** - Full support for `ai-first.config.json`
18
+ - Load and validate configuration from JSON files
19
+ - 4 built-in presets: `full`, `quick`, `api`, `docs`
20
+ - Custom preset support
21
+ - Configuration merging and validation
22
+
23
+ - **Library/API Mode** - Use ai-first as a Node.js library
24
+ - Full TypeScript support with exported types
25
+ - Programmatic access to all core functions
26
+ - Perfect for building tools on top of ai-first
27
+
28
+ - **Content Compression** - Reduce tokens by up to 70%
29
+ - **Inclusion Levels**: `full`, `compress`, `directory`, `exclude`
30
+ - **Detail Levels**: `full`, `signatures`, `skeleton`
31
+ - Smart content processing preserves imports, exports, and signatures
32
+ - Language-aware compression for TypeScript, Python, Go, Rust
33
+
34
+ - **Git Blame Integration** - Track code authorship
35
+ - Get blame information for any file
36
+ - Format options: `inline` (per line) or `block` (grouped by author)
37
+ - Shows author, date, and commit hash
38
+ - Helps identify who wrote what and when
39
+
40
+ - **MCP Server Support** - Model Context Protocol integration
41
+ - Native MCP server for AI agent integration
42
+ - 3 built-in tools:
43
+ - `generate_context` - Generate AI context for repository
44
+ - `query_symbols` - Search symbols in indexed repository
45
+ - `get_architecture` - Get architecture analysis
46
+ - Works with Cursor, Claude Code, and other MCP-compatible agents
47
+
48
+ - **RAG Vector Search** - Semantic search for your codebase
49
+ - Local vector index (no cloud required)
50
+ - Search with natural language queries
51
+ - Find related code by meaning, not just text matching
52
+ - Perfect for large codebases and onboarding
53
+
54
+ - **Multi-Repository Support** - Handle monorepos and microservices
55
+ - Scan multiple repositories in one command
56
+ - Git submodule detection and support
57
+ - Cross-repository dependency tracking
58
+ - Unified context across services
59
+
60
+ #### 🔧 Technical Improvements
61
+
62
+ - New modular architecture with separate packages:
63
+ - `src/config/` - Configuration management
64
+ - `src/core/content/` - Content processing and compression
65
+ - `src/core/rag/` - Vector search and semantic indexing
66
+ - `src/core/multiRepo/` - Multi-repository support
67
+ - `src/mcp/` - Model Context Protocol server
68
+
69
+ - Added `@modelcontextprotocol/sdk` dependency for MCP support
70
+ - Comprehensive test suite for configuration system
71
+ - Benchmark scripts for token reduction measurement
72
+
73
+ #### 📚 Documentation
74
+
75
+ - New "Programmatic API" section in README
76
+ - Complete FEATURES_GUIDE.md for developers
77
+ - Implementation planning documents
78
+ - Configuration file examples
79
+
80
+ #### 📦 New Dependencies
81
+
82
+ ```json
83
+ "@modelcontextprotocol/sdk": "^1.0.4"
84
+ ```
85
+
86
+ ## [1.3.7] - 2026-03-28
87
+
88
+ ### 🎯 AI Context Quality Evaluator
89
+
90
+ **Branch:** `feature/migrate-evaluator-to-private-repo`
91
+
92
+ #### Added
93
+
94
+ - **Context Quality Evaluation System**
95
+ - Built-in evaluator to measure AI context quality (score 0-5)
96
+ - Hierarchical evaluation in 3 levels: Structure, Content, AI Assessment
97
+ - Conditional scoring that doesn't penalize for optional features
98
+ - 100% cost savings when quality score ≥ 3.5 (skips AI evaluation)
99
+ - Categorized improvement suggestions: IMPLEMENTED, USER_ACTION, KNOWN_LIMITATION, IMPROVEMENT
100
+
101
+ - **New Evaluation Checks**
102
+ - Entry Point Documentation check (15 pts)
103
+ - Documentation Completeness check (15 pts)
104
+ - API Contracts validation (conditional)
105
+ - Framework Instructions validation (conditional)
106
+ - Freshness tracking check (conditional)
107
+
108
+ - **Evaluator Repository Migration**
109
+ - Extracted evaluator to private repository: `ai-first-evaluator`
110
+ - Integrated as dev dependency via npm
111
+ - Added evaluation scripts: `npm run evaluate`, `npm run evaluate:ci`, `npm run evaluate:quick`
112
+ - Post-install script to auto-build evaluator
113
+
114
+ #### Changed
115
+
116
+ - **Improved Scoring Logic**
117
+ - Fixed bug allowing scores > 5.0 (now properly capped)
118
+ - Better Spring Boot framework detection
119
+ - Content Quality scoring increased to 80 points (from 50)
120
+
121
+ #### Test Results
122
+
123
+ - **1041 Tests Passing** (+15 new evaluation tests)
124
+ - **31 Test Files**
125
+ - **100% Pass Rate**
126
+ - **11/11 Test Projects Passing**
127
+ - **Average Score: 3.88/5.0**
128
+ - **Cost Savings: 100%**
129
+
130
+ ---
131
+
132
+ ## [1.3.6] - 2026-03-28
133
+
134
+ ### 🎯 AI Recommendations Implementation
135
+
136
+ **Branch:** `feature/ai-recommendations-v1.3.6`
137
+
138
+ #### Added
139
+
140
+ - **Go Entrypoints Detection** (T1)
141
+ - Detect `main.go` with `func main()`
142
+ - Extract HTTP handlers (`http.HandleFunc`)
143
+ - Identify service ports (`:8080`, `:3000`)
144
+ - Parse structs and methods
145
+ - Read `go.mod` for module information
146
+
147
+ - **Rust Entrypoints Detection** (T2)
148
+ - Detect `main.rs` with `fn main()`
149
+ - Extract `Cargo.toml` configuration
150
+ - Identify structs and implementations
151
+ - Support for binary and library projects
152
+
153
+ - **PHP Entrypoints Detection** (T3)
154
+ - Detect `index.php` entrypoints
155
+ - Support Laravel convention (`public/index.php`)
156
+ - Parse `composer.json` dependencies
157
+ - Detect Laravel and Symfony frameworks
158
+
159
+ - **Comprehensive Test Suite** (T4, T8, T12)
160
+ - 16 tests for Go/Rust/PHP entrypoints
161
+ - 14 tests for framework detection
162
+ - All Apex class tests now passing (was 40/43, now 43/43)
163
+
164
+ #### Fixed
165
+
166
+ - **Framework Detection** (T5-T7)
167
+ - NestJS: Now correctly detects `@nestjs/*` packages
168
+ - Spring Boot: Parses `pom.xml` and `build.gradle`/`build.gradle.kts`
169
+ - Express: Shows "API Server" instead of "Microservices" for single services
170
+
171
+ - **Apex Parser Improvements** (T9)
172
+ - Handle multi-line annotations (`@AuraEnabled(cacheable=true)`)
173
+ - Support generic return types (`List<Account>`, `Map<String, Object>`)
174
+ - Detect `webservice` methods
175
+ - Fix method signature extraction with parameters
176
+
177
+ - **Architecture Descriptions** (T15)
178
+ - Replace "Contains X files" with functional descriptions
179
+ - Infer responsibility from file types (TypeScript, Python, Java, etc.)
180
+ - Language-specific descriptions (e.g., "JavaScript/TypeScript implementation")
181
+
182
+ - **Development Directory Filtering** (T14)
183
+ - Exclude `test-projects/` from analysis
184
+ - Exclude `.ai-dev/` and `.ai-dev-out/`
185
+ - Exclude `ai-context/` directory
186
+ - Prevent test artifacts from polluting results
187
+
188
+ #### Test Results
189
+
190
+ - 1026 tests passing (+30 new tests)
191
+ - 0 tests failing (100% pass rate!)
192
+ - Fixed 3 pre-existing Apex test failures
193
+ - All 11 test projects validated
194
+
9
195
  ## [1.3.5] - 2026-03-24
10
196
 
11
197
  ### 🧪 Comprehensive Testing Suite
package/README.es.md CHANGED
@@ -21,6 +21,33 @@
21
21
 
22
22
  ---
23
23
 
24
+ ## 🚀 Novedades en v1.3.7
25
+
26
+ **Evaluador de Calidad de Contexto IA**
27
+
28
+ - ✅ **Evaluación de Calidad**: Evaluador integrado para medir la calidad del contexto IA (score 0-5)
29
+ - ✅ **Evaluación Jerárquica**: Assessment en 3 niveles (Estructura, Contenido, Revisión IA)
30
+ - ✅ **Scoring Inteligente**: Scoring condicional que no penaliza por features opcionales
31
+ - ✅ **Optimización de Costos**: 100% de ahorro cuando el score de calidad ≥ 3.5 (evita evaluación IA)
32
+ - ✅ **Sugerencias de Mejora**: Recomendaciones categorizadas (IMPLEMENTED, USER_ACTION, IMPROVEMENT)
33
+ - ✅ **Nuevos Checks**: Documentación de entry points y completitud de documentación
34
+ - ✅ **Repo Privado del Evaluador**: Evaluador extraído a repositorio privado separado
35
+ - ✅ **Integración NPM**: Uso como dev dependency con `npm run evaluate`
36
+
37
+ ### Anterior: v1.3.6
38
+
39
+ **Soporte de Lenguajes Mejorado y Detección de Frameworks**
40
+
41
+ - ✅ **Entrypoints Go**: Detección automática de `main.go`, handlers HTTP y puertos de servicio
42
+ - ✅ **Entrypoints Rust**: Soporte para `main.rs`, `Cargo.toml` e implementaciones de structs
43
+ - ✅ **Entrypoints PHP**: Detección de `index.php`, convenciones Laravel y dependencias Composer
44
+ - ✅ **Detección de Frameworks Mejorada**: NestJS (`@nestjs/*`), Spring Boot (pom.xml/build.gradle) y Express (API Server vs Microservices)
45
+ - ✅ **Parser Apex**: Parsing mejorado de firmas de métodos con soporte de genéricos (`List<Account>`) y anotaciones multi-línea
46
+ - ✅ **Descripciones de Arquitectura**: Descripciones funcionales en lugar de "Contiene X archivos" genérico
47
+ - ✅ **1026 Tests Pasando**: 100% de éxito con 30 tests nuevos agregados
48
+
49
+ ---
50
+
24
51
  ## 📋 Tabla de Contenidos
25
52
 
26
53
  - [Comandos](#-referencia-de-comandos)
@@ -377,6 +404,47 @@ Los flows representan cadenas de ejecución de negocio desde entrypoints.
377
404
 
378
405
  ---
379
406
 
407
+ ## 🌍 Soporte Multi-Lenguaje y Frameworks
408
+
409
+ ### Lenguajes Soportados
410
+
411
+ | Categoría | Lenguajes |
412
+ |-----------|-----------|
413
+ | **Web** | JavaScript, TypeScript, Python, **Go**, **Rust** |
414
+ | **Backend** | Java, C#, **PHP**, Ruby, **Go**, **Rust**, Kotlin, **Apex** |
415
+ | **Mobile** | Swift, Kotlin, Android |
416
+ | **Frontend** | Vue, Svelte, React, HTML, CSS, SCSS |
417
+ | **Testing** | Jest, Vitest, pytest, Mocha, RSpec |
418
+
419
+ **Nuevo en v1.3.6:** Detección completa de entrypoints para **Go** (handlers, puertos), **Rust** (Cargo.toml, binarios), y **PHP** (index.php, Laravel).
420
+
421
+ ### Frameworks (Testeados)
422
+
423
+ | Framework | Lenguaje | Proyecto de Prueba | Estado |
424
+ |-----------|----------|-------------------|--------|
425
+ | **Django** | Python | `test-projects/django-app` | ✅ |
426
+ | **FastAPI** | Python | `test-projects/fastapi-app` | ✅ |
427
+ | **Flask** | Python | `test-projects/flask-app` | ✅ |
428
+ | **Laravel** | PHP | `test-projects/laravel-app` | ✅ |
429
+ | **Rails** | Ruby | `test-projects/rails-app` | ✅ |
430
+ | **Spring Boot** | Java | `test-projects/spring-boot-app` | ✅ Mejorado v1.3.6 |
431
+ | Express.js | JavaScript | `test-projects/express-api` | ✅ Corregido v1.3.6 |
432
+ | **NestJS** | TypeScript | `test-projects/nestjs-backend` | ✅ Corregido v1.3.6 |
433
+ | React | JavaScript | `test-projects/react-app` | ✅ |
434
+ | Python CLI | Python | `test-projects/python-cli` | ✅ |
435
+ | Salesforce DX | Apex | `test-projects/salesforce-cli` | ✅ Mejorado v1.3.6 |
436
+ | **Go** | Go | `test-projects/go-microservice` | ✅ **NUEVO v1.3.6** |
437
+ | **Rust** | Rust | `test-projects/rust-cli` | ✅ **NUEVO v1.3.6** |
438
+ | **PHP Vanilla** | PHP | `test-projects/php-vanilla` | ✅ **NUEVO v1.3.6** |
439
+
440
+ **Mejoras v1.3.6:**
441
+ - **NestJS**: Ahora detecta correctamente paquetes scoped `@nestjs/*`
442
+ - **Spring Boot**: Parsea `pom.xml` y `build.gradle`/`build.gradle.kts`
443
+ - **Express**: Muestra "API Server" en lugar de "Microservices" para directorios de servicio único
444
+ - **Apex**: Parser mejorado con soporte de genéricos (`List<Account>`, `Map<String, Object>`)
445
+
446
+ ---
447
+
380
448
  ## 🤖 Soporte Android/Kotlin
381
449
 
382
450
  af detecta e indexa automáticamente proyectos Android/Kotlin:
package/README.md CHANGED
@@ -19,6 +19,33 @@
19
19
 
20
20
  ---
21
21
 
22
+ ## 🚀 What's New in v1.3.7
23
+
24
+ **AI Context Quality Evaluator**
25
+
26
+ - ✅ **Context Quality Evaluation**: Built-in evaluator to measure AI context quality (score 0-5)
27
+ - ✅ **Hierarchical Evaluation**: 3-level assessment (Structure, Content, AI Review)
28
+ - ✅ **Smart Scoring**: Conditional scoring that doesn't penalize for optional features
29
+ - ✅ **Cost Optimization**: 100% cost savings when quality score ≥ 3.5 (skips AI evaluation)
30
+ - ✅ **Improvement Suggestions**: Categorized recommendations (IMPLEMENTED, USER_ACTION, IMPROVEMENT)
31
+ - ✅ **New Evaluation Checks**: Entry point documentation and documentation completeness
32
+ - ✅ **Private Evaluator Repo**: Evaluator extracted to separate private repository
33
+ - ✅ **NPM Integration**: Use as dev dependency with `npm run evaluate`
34
+
35
+ ### Previous: v1.3.6
36
+
37
+ **Enhanced Language Support & Framework Detection**
38
+
39
+ - ✅ **Go Entrypoints**: Automatic detection of `main.go`, HTTP handlers, and service ports
40
+ - ✅ **Rust Entrypoints**: Support for `main.rs`, `Cargo.toml`, and struct implementations
41
+ - ✅ **PHP Entrypoints**: Detection of `index.php`, Laravel conventions, and Composer dependencies
42
+ - ✅ **Improved Framework Detection**: Fixed NestJS (`@nestjs/*`), Spring Boot (pom.xml/build.gradle), and Express (API Server vs Microservices)
43
+ - ✅ **Apex Parser**: Enhanced method signature parsing with generics support (`List<Account>`) and multi-line annotations
44
+ - ✅ **Architecture Descriptions**: Functional descriptions instead of generic "Contains X files"
45
+ - ✅ **1026 Tests Passing**: 100% success rate with 30 new tests added
46
+
47
+ ---
48
+
22
49
  ## 📋 Table of Contents
23
50
 
24
51
  - [Commands](#-commands-reference)
@@ -453,27 +480,38 @@ Flows represent business execution chains starting from entrypoints.
453
480
 
454
481
  | Category | Languages |
455
482
  |----------|-----------|
456
- | **Web** | JavaScript, TypeScript, Python, Go, Rust |
457
- | **Backend** | Java, C#, PHP, Ruby, Go, Rust, Kotlin, **Apex** |
483
+ | **Web** | JavaScript, TypeScript, Python, **Go**, **Rust** |
484
+ | **Backend** | Java, C#, **PHP**, Ruby, **Go**, **Rust**, Kotlin, **Apex** |
458
485
  | **Mobile** | Swift, Kotlin, Android |
459
486
  | **Frontend** | Vue, Svelte, React, HTML, CSS, SCSS |
460
487
  | **Testing** | Jest, Vitest, pytest, Mocha, RSpec |
461
488
 
489
+ **New in v1.3.6:** Full entrypoint detection for **Go** (handlers, ports), **Rust** (Cargo.toml, binaries), and **PHP** (index.php, Laravel).
490
+
462
491
  ### Frameworks (Tested)
463
492
 
464
- | Framework | Language | Test Project |
465
- |-----------|----------|-------------|
466
- | **Django** | Python | `test-projects/django-app` |
467
- | **FastAPI** | Python | `test-projects/fastapi-app` |
468
- | **Flask** | Python | `test-projects/flask-app` |
469
- | **Laravel** | PHP | `test-projects/laravel-app` |
470
- | **Rails** | Ruby | `test-projects/rails-app` |
471
- | **Spring Boot** | Java | `test-projects/spring-boot-app` |
472
- | Express.js | JavaScript | `test-projects/express-api` |
473
- | NestJS | TypeScript | `test-projects/nestjs-backend` |
474
- | React | JavaScript | `test-projects/react-app` |
475
- | Python CLI | Python | `test-projects/python-cli` |
476
- | Salesforce DX | Apex | `test-projects/salesforce-cli` |
493
+ | Framework | Language | Test Project | Status |
494
+ |-----------|----------|-------------|--------|
495
+ | **Django** | Python | `test-projects/django-app` | ✅ |
496
+ | **FastAPI** | Python | `test-projects/fastapi-app` | ✅ |
497
+ | **Flask** | Python | `test-projects/flask-app` | ✅ |
498
+ | **Laravel** | PHP | `test-projects/laravel-app` | ✅ |
499
+ | **Rails** | Ruby | `test-projects/rails-app` | ✅ |
500
+ | **Spring Boot** | Java | `test-projects/spring-boot-app` | ✅ Improved v1.3.6 |
501
+ | Express.js | JavaScript | `test-projects/express-api` | ✅ Fixed v1.3.6 |
502
+ | **NestJS** | TypeScript | `test-projects/nestjs-backend` | ✅ Fixed v1.3.6 |
503
+ | React | JavaScript | `test-projects/react-app` | ✅ |
504
+ | Python CLI | Python | `test-projects/python-cli` | ✅ |
505
+ | Salesforce DX | Apex | `test-projects/salesforce-cli` | ✅ Enhanced v1.3.6 |
506
+ | **Go** | Go | `test-projects/go-microservice` | ✅ **NEW v1.3.6** |
507
+ | **Rust** | Rust | `test-projects/rust-cli` | ✅ **NEW v1.3.6** |
508
+ | **PHP Vanilla** | PHP | `test-projects/php-vanilla` | ✅ **NEW v1.3.6** |
509
+
510
+ **v1.3.6 Improvements:**
511
+ - **NestJS**: Now correctly detects `@nestjs/*` scoped packages
512
+ - **Spring Boot**: Parses `pom.xml` and `build.gradle`/`build.gradle.kts`
513
+ - **Express**: Shows "API Server" instead of "Microservices" for single service directories
514
+ - **Apex**: Enhanced parser with generics support (`List<Account>`, `Map<String, Object>`)
477
515
 
478
516
  ai-first automatically detects and indexes Android/Kotlin projects:
479
517
 
@@ -2,7 +2,7 @@
2
2
  "nodes": [],
3
3
  "edges": [],
4
4
  "metadata": {
5
- "generated": "2026-03-24T23:33:19.936Z",
5
+ "generated": "2026-03-29T21:17:07.356Z",
6
6
  "sources": [],
7
7
  "nodeCount": 0,
8
8
  "edgeCount": 0
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": "1.0.0",
3
- "lastIndexed": "2026-03-23T00:06:12.948Z",
4
- "totalFiles": 27,
3
+ "lastIndexed": "2026-03-29T16:22:02.985Z",
4
+ "totalFiles": 39,
5
5
  "files": {
6
6
  "ai-context/ai_context.md": {
7
7
  "path": "ai-context/ai_context.md",
@@ -191,6 +191,90 @@
191
191
  "mtime": 1774223797696.0662,
192
192
  "size": 22516,
193
193
  "indexedAt": "2026-03-23T00:06:12.947Z"
194
+ },
195
+ "ai-context/index-state.json": {
196
+ "path": "ai-context/index-state.json",
197
+ "hash": "0d74158513149407f8d2045141feaf91",
198
+ "mtime": 1774801170286.9082,
199
+ "size": 9204,
200
+ "indexedAt": "2026-03-29T16:22:02.984Z"
201
+ },
202
+ "CHANGELOG.md": {
203
+ "path": "CHANGELOG.md",
204
+ "hash": "a99aa9ff95bb348d930c602ad9286d5a",
205
+ "mtime": 1774800256611.2012,
206
+ "size": 30812,
207
+ "indexedAt": "2026-03-29T16:10:02.228Z"
208
+ },
209
+ "dist/commands/ai-first.js": {
210
+ "path": "dist/commands/ai-first.js",
211
+ "hash": "9d2ea4f9697a0ba2b95a83d8bfcb4f48",
212
+ "mtime": 1774801303602.294,
213
+ "size": 61097,
214
+ "indexedAt": "2026-03-29T16:22:02.984Z"
215
+ },
216
+ "dist/commands/ai-first.js.map": {
217
+ "path": "dist/commands/ai-first.js.map",
218
+ "hash": "a0587b484fe51212a37ec8819c01d99b",
219
+ "mtime": 1774801303601.294,
220
+ "size": 50906,
221
+ "indexedAt": "2026-03-29T16:22:02.984Z"
222
+ },
223
+ "dist/core/gitAnalyzer.d.ts": {
224
+ "path": "dist/core/gitAnalyzer.d.ts",
225
+ "hash": "250a62200196c045bd6fbeaa2a4a1728",
226
+ "mtime": 1774800594072.5566,
227
+ "size": 2516,
228
+ "indexedAt": "2026-03-29T16:10:02.229Z"
229
+ },
230
+ "dist/core/gitAnalyzer.d.ts.map": {
231
+ "path": "dist/core/gitAnalyzer.d.ts.map",
232
+ "hash": "931e7ec9b582a69881d1f710120ed274",
233
+ "mtime": 1774800594071.5566,
234
+ "size": 2103,
235
+ "indexedAt": "2026-03-29T16:10:02.229Z"
236
+ },
237
+ "dist/core/gitAnalyzer.js": {
238
+ "path": "dist/core/gitAnalyzer.js",
239
+ "hash": "e5be2b391b7f13b2bd6154eb6ec2d798",
240
+ "mtime": 1774800594070.5566,
241
+ "size": 13007,
242
+ "indexedAt": "2026-03-29T16:10:02.229Z"
243
+ },
244
+ "dist/core/gitAnalyzer.js.map": {
245
+ "path": "dist/core/gitAnalyzer.js.map",
246
+ "hash": "9333c5a3f0f31e6a08d3046c394facd7",
247
+ "mtime": 1774800594070.5566,
248
+ "size": 12951,
249
+ "indexedAt": "2026-03-29T16:10:02.229Z"
250
+ },
251
+ "package.json": {
252
+ "path": "package.json",
253
+ "hash": "23c4a299913c43724593050a66348e37",
254
+ "mtime": 1774800203952.9775,
255
+ "size": 2471,
256
+ "indexedAt": "2026-03-29T16:10:02.229Z"
257
+ },
258
+ "src/commands/ai-first.ts": {
259
+ "path": "src/commands/ai-first.ts",
260
+ "hash": "f511373d2b4ff5a09a3d4f7e571714a6",
261
+ "mtime": 1774801296509.2107,
262
+ "size": 55577,
263
+ "indexedAt": "2026-03-29T16:22:02.985Z"
264
+ },
265
+ "src/core/gitAnalyzer.ts": {
266
+ "path": "src/core/gitAnalyzer.ts",
267
+ "hash": "19c44cdcef1a8ad0d4867f85b5c3c030",
268
+ "mtime": 1774800584963.2427,
269
+ "size": 13635,
270
+ "indexedAt": "2026-03-29T16:10:02.229Z"
271
+ },
272
+ "dist/commands/ai-first.d.ts.map": {
273
+ "path": "dist/commands/ai-first.d.ts.map",
274
+ "hash": "6f1ddd2700e9d1c6ddb19a6a896c1cf2",
275
+ "mtime": 1774801303603.294,
276
+ "size": 480,
277
+ "indexedAt": "2026-03-29T16:22:02.984Z"
194
278
  }
195
279
  }
196
280
  }
@@ -1 +1 @@
1
- {"version":3,"file":"architecture.d.ts","sourceRoot":"","sources":["../../src/analyzers/architecture.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAsC,MAAM,wBAAwB,CAAC;AAItF,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,OAAO,EAAE,UAAU,EAAE,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,MAAM,EAAE,CAAC;CACxB;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,QAAQ,EAAE,EACjB,OAAO,EAAE,MAAM,GACd,oBAAoB,CAsBtB;AA8OD;;GAEG;AACH,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,oBAAoB,GAAG,MAAM,CAsB/E"}
1
+ {"version":3,"file":"architecture.d.ts","sourceRoot":"","sources":["../../src/analyzers/architecture.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAsC,MAAM,wBAAwB,CAAC;AAItF,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,OAAO,EAAE,UAAU,EAAE,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,MAAM,EAAE,CAAC;CACxB;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,QAAQ,EAAE,EACjB,OAAO,EAAE,MAAM,GACd,oBAAoB,CAsBtB;AAmTD;;GAEG;AACH,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,oBAAoB,GAAG,MAAM,CAsB/E"}
@@ -6,7 +6,7 @@ export function analyzeArchitecture(files, rootDir) {
6
6
  const directories = Array.from(groupByDirectory(files).keys());
7
7
  const extensions = Array.from(groupByExtension(files).keys());
8
8
  // Detect patterns based on directory structure
9
- const patterns = detectPatterns(directories, extensions);
9
+ const patterns = detectPatterns(directories, extensions, files);
10
10
  // Identify layers
11
11
  const layers = detectLayers(directories);
12
12
  // Identify modules
@@ -23,7 +23,7 @@ export function analyzeArchitecture(files, rootDir) {
23
23
  /**
24
24
  * Detect architecture patterns from directory structure
25
25
  */
26
- function detectPatterns(directories, extensions) {
26
+ function detectPatterns(directories, extensions, files) {
27
27
  const patterns = [];
28
28
  const dirs = directories.filter(d => d && d !== "root");
29
29
  // Check for common patterns
@@ -53,10 +53,38 @@ function detectPatterns(directories, extensions) {
53
53
  if (hasPackages || hasApps) {
54
54
  patterns.push("Monorepo");
55
55
  }
56
- // Microservices
57
- if (dirs.some(d => d.includes("services") || d.includes("api")) && dirs.length > 3) {
56
+ // Microservices - check for multiple service subdirectories
57
+ const serviceSubdirs = new Set();
58
+ const apiSubdirs = new Set();
59
+ const versionPattern = /^v?\d+$/i;
60
+ for (const file of files) {
61
+ const parts = file.relativePath.split("/");
62
+ // Check for services/*/ pattern (must be an actual subdirectory, not a file)
63
+ const servicesIndex = parts.indexOf("services");
64
+ if (servicesIndex >= 0 && servicesIndex < parts.length - 2) {
65
+ // parts.length - 2 ensures there's at least one directory after 'services' before the file
66
+ const subdir = parts[servicesIndex + 1];
67
+ if (!versionPattern.test(subdir)) {
68
+ serviceSubdirs.add(subdir);
69
+ }
70
+ }
71
+ // Check for api/*/ pattern at root level (must be an actual subdirectory)
72
+ if (parts[0] === "api" && parts.length > 2) {
73
+ // parts.length > 2 ensures there's at least one directory after 'api' before the file
74
+ const subdir = parts[1];
75
+ if (!versionPattern.test(subdir)) {
76
+ apiSubdirs.add(subdir);
77
+ }
78
+ }
79
+ }
80
+ if (serviceSubdirs.size >= 2 || apiSubdirs.size >= 2) {
58
81
  patterns.push("Microservices");
59
82
  }
83
+ else if (dirs.some(d => d === "services" || d === "api") ||
84
+ files.some(f => f.relativePath.includes("/services/") || f.relativePath.includes("/api/")) ||
85
+ serviceSubdirs.size === 1 || apiSubdirs.size === 1) {
86
+ patterns.push("API Server");
87
+ }
60
88
  // Serverless / Functions
61
89
  if (dirs.some(d => d.includes("functions") || d.includes("handlers") || d.includes("lambda"))) {
62
90
  patterns.push("Serverless / Functions");
@@ -166,7 +194,46 @@ function inferModuleResponsibility(dir, extensions) {
166
194
  if (name.includes("auth") || name.includes("security") || name.includes("login")) {
167
195
  return "Authentication and authorization";
168
196
  }
169
- return `Contains ${extensions.length} files`;
197
+ // Infer from file types
198
+ const uniqueExts = [...new Set(extensions)];
199
+ if (uniqueExts.includes("ts") || uniqueExts.includes("tsx") || uniqueExts.includes("js") || uniqueExts.includes("jsx")) {
200
+ if (uniqueExts.includes("css") || uniqueExts.includes("scss") || uniqueExts.includes("less")) {
201
+ return "Frontend components and styling";
202
+ }
203
+ return "JavaScript/TypeScript implementation";
204
+ }
205
+ if (uniqueExts.includes("py")) {
206
+ return "Python implementation";
207
+ }
208
+ if (uniqueExts.includes("java")) {
209
+ return "Java implementation";
210
+ }
211
+ if (uniqueExts.includes("go")) {
212
+ return "Go implementation";
213
+ }
214
+ if (uniqueExts.includes("rs")) {
215
+ return "Rust implementation";
216
+ }
217
+ if (uniqueExts.includes("php")) {
218
+ return "PHP implementation";
219
+ }
220
+ if (uniqueExts.includes("rb")) {
221
+ return "Ruby implementation";
222
+ }
223
+ if (uniqueExts.includes("swift")) {
224
+ return "Swift implementation";
225
+ }
226
+ if (uniqueExts.includes("kt")) {
227
+ return "Kotlin implementation";
228
+ }
229
+ if (uniqueExts.includes("cls") || uniqueExts.includes("trigger")) {
230
+ return "Apex/Salesforce implementation";
231
+ }
232
+ // Fallback based on file count
233
+ if (extensions.length === 1) {
234
+ return "Single file module";
235
+ }
236
+ return `Module with ${extensions.length} source files`;
170
237
  }
171
238
  /**
172
239
  * Infer module dependencies
@@ -1 +1 @@
1
- {"version":3,"file":"architecture.js","sourceRoot":"","sources":["../../src/analyzers/architecture.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"architecture.js","sourceRoot":"","sources":["../../src/analyzers/architecture.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"entrypoints.d.ts","sourceRoot":"","sources":["../../src/analyzers/entrypoints.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAIlD,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,KAAK,GAAG,KAAK,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,GAAG,SAAS,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,GAAG,WAAW,GAAG,OAAO,CAAC;IAChI,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE,OAAO,EAAE,MAAM,GAAG,UAAU,EAAE,CAuFpF;AAmLD,wBAAgB,uBAAuB,CAAC,WAAW,EAAE,UAAU,EAAE,GAAG,MAAM,CAiBzE"}
1
+ {"version":3,"file":"entrypoints.d.ts","sourceRoot":"","sources":["../../src/analyzers/entrypoints.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAIlD,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,KAAK,GAAG,KAAK,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,GAAG,SAAS,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,GAAG,WAAW,GAAG,OAAO,CAAC;IAChI,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE,OAAO,EAAE,MAAM,GAAG,UAAU,EAAE,CAkHpF;AAqbD,wBAAgB,uBAAuB,CAAC,WAAW,EAAE,UAAU,EAAE,GAAG,MAAM,CAiBzE"}