context-map-ai 2.0.0__tar.gz

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 (172) hide show
  1. context_map_ai-2.0.0/.github/ISSUE_TEMPLATE/bug_report.md +29 -0
  2. context_map_ai-2.0.0/.github/ISSUE_TEMPLATE/feature_request.md +19 -0
  3. context_map_ai-2.0.0/.github/PULL_REQUEST_TEMPLATE.md +22 -0
  4. context_map_ai-2.0.0/.github/copilot-instructions.md +34 -0
  5. context_map_ai-2.0.0/.github/workflows/ci.yml +34 -0
  6. context_map_ai-2.0.0/.github/workflows/docs.yml +29 -0
  7. context_map_ai-2.0.0/.github/workflows/publish.yml +42 -0
  8. context_map_ai-2.0.0/.gitignore +56 -0
  9. context_map_ai-2.0.0/.hermes/config.yaml +58 -0
  10. context_map_ai-2.0.0/.hermes/shields/pre-commit.md +24 -0
  11. context_map_ai-2.0.0/.hermes/triggers/post-commit.md +20 -0
  12. context_map_ai-2.0.0/.hermes/workflows/dev-loop.md +26 -0
  13. context_map_ai-2.0.0/.pre-commit-hooks.yaml +7 -0
  14. context_map_ai-2.0.0/AGENTS.md +213 -0
  15. context_map_ai-2.0.0/CHANGELOG.md +326 -0
  16. context_map_ai-2.0.0/CODE_OF_CONDUCT.md +51 -0
  17. context_map_ai-2.0.0/CONTRIBUTING.md +91 -0
  18. context_map_ai-2.0.0/LICENSE +21 -0
  19. context_map_ai-2.0.0/Makefile +38 -0
  20. context_map_ai-2.0.0/PKG-INFO +270 -0
  21. context_map_ai-2.0.0/README.md +238 -0
  22. context_map_ai-2.0.0/README_EN.md +208 -0
  23. context_map_ai-2.0.0/action.yml +56 -0
  24. context_map_ai-2.0.0/context_map/__init__.py +1 -0
  25. context_map_ai-2.0.0/context_map/__tests__/conftest.py +33 -0
  26. context_map_ai-2.0.0/context_map/__tests__/smoke.py +23 -0
  27. context_map_ai-2.0.0/context_map/__tests__/test_checker_frescura.py +122 -0
  28. context_map_ai-2.0.0/context_map/__tests__/test_cli.py +134 -0
  29. context_map_ai-2.0.0/context_map/__tests__/test_conexiones.py +675 -0
  30. context_map_ai-2.0.0/context_map/__tests__/test_cyclomatic.py +44 -0
  31. context_map_ai-2.0.0/context_map/__tests__/test_diario_consolidado.py +76 -0
  32. context_map_ai-2.0.0/context_map/__tests__/test_doctor.py +43 -0
  33. context_map_ai-2.0.0/context_map/__tests__/test_ecosistema.py +448 -0
  34. context_map_ai-2.0.0/context_map/__tests__/test_enterprise_features.py +338 -0
  35. context_map_ai-2.0.0/context_map/__tests__/test_export.py +43 -0
  36. context_map_ai-2.0.0/context_map/__tests__/test_hermes_clasificacion.py +73 -0
  37. context_map_ai-2.0.0/context_map/__tests__/test_hook_memoria_viva.py +45 -0
  38. context_map_ai-2.0.0/context_map/__tests__/test_hooks.py +35 -0
  39. context_map_ai-2.0.0/context_map/__tests__/test_ingest.py +155 -0
  40. context_map_ai-2.0.0/context_map/__tests__/test_mermaid.py +59 -0
  41. context_map_ai-2.0.0/context_map/__tests__/test_metrica_memoria_viva.py +87 -0
  42. context_map_ai-2.0.0/context_map/__tests__/test_parsing.py +65 -0
  43. context_map_ai-2.0.0/context_map/__tests__/test_personal.py +489 -0
  44. context_map_ai-2.0.0/context_map/__tests__/test_refresh_temporales.py +34 -0
  45. context_map_ai-2.0.0/context_map/__tests__/test_reglas_catalogo.py +146 -0
  46. context_map_ai-2.0.0/context_map/__tests__/test_scan_cache.py +30 -0
  47. context_map_ai-2.0.0/context_map/__tests__/test_scanner.py +68 -0
  48. context_map_ai-2.0.0/context_map/__tests__/test_security_scanner.py +40 -0
  49. context_map_ai-2.0.0/context_map/__tests__/test_standardize.py +52 -0
  50. context_map_ai-2.0.0/context_map/__tests__/test_tokenization.py +115 -0
  51. context_map_ai-2.0.0/context_map/__tests__/test_topologia_arbol.py +307 -0
  52. context_map_ai-2.0.0/context_map/__tests__/test_vault_consolidation.py +441 -0
  53. context_map_ai-2.0.0/context_map/__tests__/test_watcher.py +29 -0
  54. context_map_ai-2.0.0/context_map/__tests__/test_wrap.py +79 -0
  55. context_map_ai-2.0.0/context_map/application/__init__.py +10 -0
  56. context_map_ai-2.0.0/context_map/application/cli/__init__.py +8 -0
  57. context_map_ai-2.0.0/context_map/application/cli/cli.py +139 -0
  58. context_map_ai-2.0.0/context_map/application/cli/parser.py +204 -0
  59. context_map_ai-2.0.0/context_map/application/commands/__init__.py +60 -0
  60. context_map_ai-2.0.0/context_map/application/commands/_helpers.py +348 -0
  61. context_map_ai-2.0.0/context_map/application/commands/adapt.py +85 -0
  62. context_map_ai-2.0.0/context_map/application/commands/auto.py +56 -0
  63. context_map_ai-2.0.0/context_map/application/commands/build.py +166 -0
  64. context_map_ai-2.0.0/context_map/application/commands/doctor_cmd.py +56 -0
  65. context_map_ai-2.0.0/context_map/application/commands/export.py +136 -0
  66. context_map_ai-2.0.0/context_map/application/commands/hook.py +49 -0
  67. context_map_ai-2.0.0/context_map/application/commands/importers.py +163 -0
  68. context_map_ai-2.0.0/context_map/application/commands/ingest.py +133 -0
  69. context_map_ai-2.0.0/context_map/application/commands/personal.py +555 -0
  70. context_map_ai-2.0.0/context_map/application/commands/refresh.py +138 -0
  71. context_map_ai-2.0.0/context_map/application/commands/scan.py +38 -0
  72. context_map_ai-2.0.0/context_map/application/commands/sync.py +179 -0
  73. context_map_ai-2.0.0/context_map/application/commands/tools.py +127 -0
  74. context_map_ai-2.0.0/context_map/application/commands/update.py +144 -0
  75. context_map_ai-2.0.0/context_map/application/commands/watch.py +27 -0
  76. context_map_ai-2.0.0/context_map/application/commands/wrap.py +89 -0
  77. context_map_ai-2.0.0/context_map/cli.py +26 -0
  78. context_map_ai-2.0.0/context_map/core/__init__.py +68 -0
  79. context_map_ai-2.0.0/context_map/core/generators/__init__.py +13 -0
  80. context_map_ai-2.0.0/context_map/core/generators/generadores.py +186 -0
  81. context_map_ai-2.0.0/context_map/core/generators/narrative_templates.py +264 -0
  82. context_map_ai-2.0.0/context_map/core/logging_setup.py +71 -0
  83. context_map_ai-2.0.0/context_map/core/models/__init__.py +7 -0
  84. context_map_ai-2.0.0/context_map/core/models/config.py +17 -0
  85. context_map_ai-2.0.0/context_map/core/models/models.py +172 -0
  86. context_map_ai-2.0.0/context_map/core/normalization/__init__.py +27 -0
  87. context_map_ai-2.0.0/context_map/core/normalization/cleaning.py +135 -0
  88. context_map_ai-2.0.0/context_map/core/normalization/inference.py +209 -0
  89. context_map_ai-2.0.0/context_map/core/normalization/mappings.py +116 -0
  90. context_map_ai-2.0.0/context_map/core/normalization/standardize.py +145 -0
  91. context_map_ai-2.0.0/context_map/core/parsing/__init__.py +19 -0
  92. context_map_ai-2.0.0/context_map/core/parsing/cargadores.py +108 -0
  93. context_map_ai-2.0.0/context_map/core/parsing/clasificacion.py +45 -0
  94. context_map_ai-2.0.0/context_map/core/parsing/dedup.py +28 -0
  95. context_map_ai-2.0.0/context_map/core/parsing/grafo.py +78 -0
  96. context_map_ai-2.0.0/context_map/core/personal/__init__.py +23 -0
  97. context_map_ai-2.0.0/context_map/core/personal/bd.py +527 -0
  98. context_map_ai-2.0.0/context_map/core/storage/__init__.py +17 -0
  99. context_map_ai-2.0.0/context_map/core/storage/config_loader.py +62 -0
  100. context_map_ai-2.0.0/context_map/core/storage/store.py +214 -0
  101. context_map_ai-2.0.0/context_map/core/tokenization.py +258 -0
  102. context_map_ai-2.0.0/context_map/domain/__init__.py +49 -0
  103. context_map_ai-2.0.0/context_map/domain/analysis/__init__.py +17 -0
  104. context_map_ai-2.0.0/context_map/domain/analysis/checker.py +48 -0
  105. context_map_ai-2.0.0/context_map/domain/analysis/complexity.py +134 -0
  106. context_map_ai-2.0.0/context_map/domain/analysis/models.py +46 -0
  107. context_map_ai-2.0.0/context_map/domain/analysis/reporting.py +95 -0
  108. context_map_ai-2.0.0/context_map/domain/analysis/signals.py +411 -0
  109. context_map_ai-2.0.0/context_map/domain/analyzers/cyclomatic.py +125 -0
  110. context_map_ai-2.0.0/context_map/domain/ecosystem/__init__.py +27 -0
  111. context_map_ai-2.0.0/context_map/domain/ecosystem/adaptador.py +229 -0
  112. context_map_ai-2.0.0/context_map/domain/ecosystem/detector.py +436 -0
  113. context_map_ai-2.0.0/context_map/domain/ecosystem/hooks.py +131 -0
  114. context_map_ai-2.0.0/context_map/domain/ecosystem/rules_templates.py +396 -0
  115. context_map_ai-2.0.0/context_map/domain/health/__init__.py +24 -0
  116. context_map_ai-2.0.0/context_map/domain/health/doctor.py +321 -0
  117. context_map_ai-2.0.0/context_map/domain/ingestion/__init__.py +19 -0
  118. context_map_ai-2.0.0/context_map/domain/ingestion/ingest.py +292 -0
  119. context_map_ai-2.0.0/context_map/domain/reglas/reglas.py +244 -0
  120. context_map_ai-2.0.0/context_map/domain/reporting/__init__.py +13 -0
  121. context_map_ai-2.0.0/context_map/domain/reporting/reporter.py +189 -0
  122. context_map_ai-2.0.0/context_map/domain/scanning/__init__.py +13 -0
  123. context_map_ai-2.0.0/context_map/domain/scanning/cache.py +116 -0
  124. context_map_ai-2.0.0/context_map/domain/scanning/scanner.py +307 -0
  125. context_map_ai-2.0.0/context_map/domain/scanning/security.py +79 -0
  126. context_map_ai-2.0.0/context_map/domain/synchronization/__init__.py +7 -0
  127. context_map_ai-2.0.0/context_map/domain/synchronization/relaciones.py +67 -0
  128. context_map_ai-2.0.0/context_map/domain/synchronization/sync.py +249 -0
  129. context_map_ai-2.0.0/context_map/domain/synchronization/watcher.py +142 -0
  130. context_map_ai-2.0.0/context_map/infrastructure/__init__.py +4 -0
  131. context_map_ai-2.0.0/context_map/infrastructure/analyzers/__init__.py +4 -0
  132. context_map_ai-2.0.0/context_map/infrastructure/analyzers/content.py +182 -0
  133. context_map_ai-2.0.0/context_map/infrastructure/analyzers/structure.py +194 -0
  134. context_map_ai-2.0.0/context_map/infrastructure/integrations/__init__.py +4 -0
  135. context_map_ai-2.0.0/context_map/infrastructure/integrations/antigravity.py +398 -0
  136. context_map_ai-2.0.0/context_map/infrastructure/integrations/chat_export.py +217 -0
  137. context_map_ai-2.0.0/context_map/infrastructure/integrations/git.py +147 -0
  138. context_map_ai-2.0.0/context_map/infrastructure/integrations/hermes.py +304 -0
  139. context_map_ai-2.0.0/context_map/infrastructure/mcp_server.py +279 -0
  140. context_map_ai-2.0.0/context_map/infrastructure/version_check.py +192 -0
  141. context_map_ai-2.0.0/context_map/presentation/__init__.py +20 -0
  142. context_map_ai-2.0.0/context_map/presentation/briefs/__init__.py +9 -0
  143. context_map_ai-2.0.0/context_map/presentation/briefs/agents.py +161 -0
  144. context_map_ai-2.0.0/context_map/presentation/briefs/brief.py +107 -0
  145. context_map_ai-2.0.0/context_map/presentation/briefs/extractors.py +167 -0
  146. context_map_ai-2.0.0/context_map/presentation/briefs/sections.py +183 -0
  147. context_map_ai-2.0.0/context_map/presentation/briefs/skill.py +224 -0
  148. context_map_ai-2.0.0/context_map/presentation/vault/__init__.py +25 -0
  149. context_map_ai-2.0.0/context_map/presentation/vault/atomic.py +420 -0
  150. context_map_ai-2.0.0/context_map/presentation/vault/consolidated/__init__.py +22 -0
  151. context_map_ai-2.0.0/context_map/presentation/vault/consolidated/canvas.py +281 -0
  152. context_map_ai-2.0.0/context_map/presentation/vault/consolidated/common.py +611 -0
  153. context_map_ai-2.0.0/context_map/presentation/vault/consolidated/consolidado.py +479 -0
  154. context_map_ai-2.0.0/context_map/presentation/vault/consolidated/jerarquico.py +262 -0
  155. context_map_ai-2.0.0/context_map/presentation/vault/consolidated/notas_ideas.py +232 -0
  156. context_map_ai-2.0.0/context_map/presentation/vault/consolidated/rutas.py +149 -0
  157. context_map_ai-2.0.0/context_map/presentation/vault/consolidated/secciones_backlog.py +131 -0
  158. context_map_ai-2.0.0/context_map/presentation/vault/consolidated/secciones_estructura.py +248 -0
  159. context_map_ai-2.0.0/context_map/presentation/vault/consolidated/secciones_historial.py +252 -0
  160. context_map_ai-2.0.0/context_map/presentation/vault/consolidated/secciones_ideas.py +331 -0
  161. context_map_ai-2.0.0/context_map/presentation/vault/consolidated/secciones_proposito.py +220 -0
  162. context_map_ai-2.0.0/context_map/presentation/vault/consolidated/secciones_riesgos.py +187 -0
  163. context_map_ai-2.0.0/context_map/presentation/vault/mermaid.py +150 -0
  164. context_map_ai-2.0.0/context_map/presentation/vault/preservar.py +121 -0
  165. context_map_ai-2.0.0/context_map/presentation/vault/templates.py +197 -0
  166. context_map_ai-2.0.0/context_map/presentation/vault/writer.py +160 -0
  167. context_map_ai-2.0.0/docs/LAUNCH_KIT.md +92 -0
  168. context_map_ai-2.0.0/docs/plans/2026-08-10-mapa-mental-conectado.md +387 -0
  169. context_map_ai-2.0.0/docs/plans/PLAN-MEJORAS-CONTEXTO-VIVO-2026-08-14.md +502 -0
  170. context_map_ai-2.0.0/mkdocs.yml +63 -0
  171. context_map_ai-2.0.0/pyproject.toml +88 -0
  172. context_map_ai-2.0.0/uv.lock +1373 -0
@@ -0,0 +1,29 @@
1
+ ---
2
+ name: 🐛 Bug Report / Reporte de Error
3
+ about: Create a report to help us improve ContextMap
4
+ title: '[BUG] '
5
+ labels: bug
6
+ assignees: ''
7
+ ---
8
+
9
+ ## 🐛 Description / Descripción
10
+ A clear and concise description of what the bug is. / Una descripción clara y concisa de lo que es el error.
11
+
12
+ ## 🔄 Steps to Reproduce / Pasos para Reproducir
13
+ 1. Go to / Ir a '...'
14
+ 2. Run command / Ejecutar comando '...'
15
+ 3. See error / Ver el error
16
+
17
+ ## 🎯 Expected Behavior / Comportamiento Esperado
18
+ A clear and concise description of what you expected to happen.
19
+
20
+ ## 💻 Environment / Entorno
21
+ - **OS:** [e.g. Windows 11 / Ubuntu 24.04 / macOS Sequoia]
22
+ - **Python Version:** [e.g. 3.11.5]
23
+ - **ContextMap Version:** [e.g. 1.9.0]
24
+ - **AI Agent / IDE:** [e.g. Antigravity / Cursor / Claude Code / Hermes]
25
+
26
+ ## 📋 Error Logs / Traza de Error
27
+ ```text
28
+ // Paste logs here / Pega los logs aquí
29
+ ```
@@ -0,0 +1,19 @@
1
+ ---
2
+ name: 🚀 Feature Request / Solicitud de Funcionalidad
3
+ about: Suggest an idea or improvement for ContextMap
4
+ title: '[FEAT] '
5
+ labels: enhancement
6
+ assignees: ''
7
+ ---
8
+
9
+ ## 💡 Is your feature request related to a problem? / ¿Está relacionada con un problema?
10
+ A clear description of what the problem is (e.g. "I'd like to export context to...").
11
+
12
+ ## 🎨 Proposed Solution / Solución Propuesta
13
+ A clear description of what you want to happen or how you imagine the feature.
14
+
15
+ ## ⚖️ Alternatives Considered / Alternativas Consideradas
16
+ Any alternative solutions or features you've considered.
17
+
18
+ ## 📝 Additional Context / Contexto Adicional
19
+ Add any other context or screenshots about the feature request here.
@@ -0,0 +1,22 @@
1
+ ## 📌 Tipo de Cambio
2
+
3
+ - [ ] 🐛 Corrección de error (Bug fix)
4
+ - [ ] ✨ Nueva funcionalidad (Feature)
5
+ - [ ] ♻️ Refactorización de código (Refactor / Clean Code)
6
+ - [ ] 📝 Actualización de documentación (Docs)
7
+ - [ ] 🧪 Adición o corrección de pruebas (Tests)
8
+
9
+ ---
10
+
11
+ ## 📝 Descripción de los Cambios
12
+ Proporciona un resumen claro de los cambios introducidos y el problema que resuelven.
13
+
14
+ ---
15
+
16
+ ## 🎯 Lista de Verificación (Checklist)
17
+
18
+ - [ ] Mi código sigue las normas de `AGENTS.md` (Español Técnico, Google Style Docstrings, Type Hinting).
19
+ - [ ] He ejecutado la suite de pruebas unitarias (`python -m pytest`) y todas pasan al 100% en verde.
20
+ - [ ] He verificado la topología de árbol de Obsidian (`test_topologia_arbol.py`) sin wikilinks rotos.
21
+ - [ ] He ejecutado `python -m context_map.cli refresh .` para actualizar el brief y el vault.
22
+ - [ ] No he incluido información sensible, credenciales o API keys.
@@ -0,0 +1,34 @@
1
+ # GitHub Copilot — Instrucciones para ContextMap
2
+
3
+ > Generado automáticamente por **ContextMap** (2026-08-12).
4
+
5
+ ## Antes de sugerir código
6
+
7
+ - Revisa `.context-map/CONTEXT.md` para entender el proyecto (stack, riesgos, tareas).
8
+ - Respeta la arquitectura modular existente.
9
+ - Usa convenciones del proyecto: docstrings en español, type hints estrictos.
10
+
11
+ ## Verificación
12
+
13
+ - Tests: `python -m pytest`
14
+ - ContextMap: `python -m context_map.cli build --clean --brief`
15
+
16
+
17
+ <!-- CONTEXTMAP:BEGIN -->
18
+
19
+ # GitHub Copilot — Instrucciones para ContextMap
20
+
21
+ > Generado automáticamente por **ContextMap** (2026-08-18).
22
+
23
+ ## Antes de sugerir código
24
+
25
+ - Revisa `.context-map/CONTEXT.md` para entender el proyecto (stack, riesgos, tareas).
26
+ - Respeta la arquitectura modular existente.
27
+ - Usa convenciones del proyecto: docstrings en español, type hints strictly.
28
+
29
+ ## Verificación
30
+
31
+ - Tests: `python -m pytest`
32
+ - ContextMap: `python -m context_map.cli build --clean --brief`
33
+
34
+ <!-- CONTEXTMAP:END -->
@@ -0,0 +1,34 @@
1
+ name: CI
2
+
3
+ on:
4
+ push:
5
+ branches: [master]
6
+ pull_request:
7
+ branches: [master]
8
+
9
+ jobs:
10
+ test:
11
+ name: Tests (pytest)
12
+ runs-on: ubuntu-latest
13
+ steps:
14
+ - uses: actions/checkout@v4
15
+ - uses: astral-sh/setup-uv@v5
16
+ with:
17
+ python-version: "3.12"
18
+ - name: Instalar dependencias
19
+ run: uv sync --dev --all-extras
20
+ - name: Ejecutar tests
21
+ run: uv run pytest -q
22
+
23
+ lint:
24
+ name: Lint (ruff · bloqueante)
25
+ runs-on: ubuntu-latest
26
+ steps:
27
+ - uses: actions/checkout@v4
28
+ - uses: astral-sh/setup-uv@v5
29
+ with:
30
+ python-version: "3.12"
31
+ - name: Instalar dependencias
32
+ run: uv sync --dev --all-extras
33
+ - name: Ruff check
34
+ run: uv run ruff check context_map/
@@ -0,0 +1,29 @@
1
+ name: 🌐 Deploy MkDocs Documentation
2
+
3
+ on:
4
+ push:
5
+ branches:
6
+ - master
7
+ - main
8
+
9
+ permissions:
10
+ contents: write
11
+
12
+ jobs:
13
+ deploy:
14
+ runs-on: ubuntu-latest
15
+ steps:
16
+ - uses: actions/checkout@v4
17
+
18
+ - name: Set up Python
19
+ uses: actions/setup-python@v5
20
+ with:
21
+ python-version: '3.11'
22
+
23
+ - name: Install dependencies
24
+ run: |
25
+ python -m pip install --upgrade pip
26
+ pip install mkdocs mkdocs-material pymdown-extensions
27
+
28
+ - name: Deploy to GitHub Pages
29
+ run: mkdocs gh-deploy --force
@@ -0,0 +1,42 @@
1
+ name: 📦 Publish to PyPI
2
+
3
+ on:
4
+ release:
5
+ types: [published]
6
+ push:
7
+ tags:
8
+ - 'v*'
9
+
10
+ permissions:
11
+ contents: read
12
+
13
+ jobs:
14
+ pypi-publish:
15
+ name: Build and publish Python distribution to PyPI
16
+ runs-on: ubuntu-latest
17
+ permissions:
18
+ id-token: write # Requerido para PyPI Trusted Publisher (OIDC)
19
+
20
+ steps:
21
+ - uses: actions/checkout@v4
22
+
23
+ - name: Set up Python
24
+ uses: actions/setup-python@v5
25
+ with:
26
+ python-version: '3.11'
27
+
28
+ - name: Install build tools
29
+ run: |
30
+ python -m pip install --upgrade pip
31
+ pip install build twine hatchling
32
+
33
+ - name: Build package
34
+ run: python -m build
35
+
36
+ - name: Check package artifacts
37
+ run: twine check dist/*
38
+
39
+ - name: Publish package to PyPI
40
+ uses: pypa/gh-action-pypi-publish@release/v1
41
+ with:
42
+ skip-existing: true
@@ -0,0 +1,56 @@
1
+ # Python
2
+ __pycache__/
3
+ *.py[cod]
4
+ *$py.class
5
+ *.so
6
+ .Python
7
+ build/
8
+ develop-eggs/
9
+ dist/
10
+ downloads/
11
+ eggs/
12
+ .eggs/
13
+ lib/
14
+ lib64/
15
+ parts/
16
+ sdist/
17
+ var/
18
+ wheels/
19
+ *.egg-info/
20
+ .installed.cfg
21
+ *.egg
22
+
23
+ # Virtual environments
24
+ .venv/
25
+ venv/
26
+ env/
27
+ ENV/
28
+
29
+ # IDE
30
+ .vscode/
31
+ .idea/
32
+ *.swp
33
+ *.swo
34
+ *~
35
+
36
+ # Testing
37
+ .pytest_cache/
38
+ .coverage
39
+ htmlcov/
40
+ .tox/
41
+ .nox/
42
+
43
+ # Type checking
44
+ .mypy_cache/
45
+ .pytype/
46
+ .ruff_cache/
47
+
48
+ # OS
49
+ .DS_Store
50
+ Thumbs.db
51
+
52
+ # Context Map (generated)
53
+ .context-map/
54
+
55
+ # Logs
56
+ *.log
@@ -0,0 +1,58 @@
1
+ # Configuración del agente Hermes para ContextMap
2
+ # Generado automáticamente por ContextMap — adaptado al stack detectado
3
+
4
+ project:
5
+ name: "ContextMap"
6
+ description: "Proyecto gestionado con ContextMap"
7
+ language: "Python"
8
+ architecture: "Modular (gobernanza por ContextMap)"
9
+
10
+ agent:
11
+ instructions: ".context-map/CONTEXT.md"
12
+ language_style:
13
+ code: "es"
14
+ messages: "es"
15
+ commit_messages: "es"
16
+
17
+ workflows:
18
+ dev_loop: ".hermes/workflows/dev-loop.md"
19
+ test_loop: ".hermes/workflows/test-loop.md"
20
+
21
+ shields:
22
+ pre_commit: ".hermes/shields/pre-commit.md"
23
+ quality: ".hermes/shields/quality-gate.md"
24
+
25
+ triggers:
26
+ post_commit: ".hermes/triggers/post-commit.md"
27
+
28
+
29
+ <!-- CONTEXTMAP:BEGIN -->
30
+
31
+ # Configuración del agente Hermes para ContextMap
32
+ # Generado automáticamente por ContextMap — adaptado al stack detectado
33
+
34
+ project:
35
+ name: "ContextMap"
36
+ description: "Proyecto gestionado con ContextMap"
37
+ language: "Python"
38
+ architecture: "Modular (gobernanza por ContextMap)"
39
+
40
+ agent:
41
+ instructions: ".context-map/CONTEXT.md"
42
+ language_style:
43
+ code: "es"
44
+ messages: "es"
45
+ commit_messages: "es"
46
+
47
+ workflows:
48
+ dev_loop: ".hermes/workflows/dev-loop.md"
49
+ test_loop: ".hermes/workflows/test-loop.md"
50
+
51
+ shields:
52
+ pre_commit: ".hermes/shields/pre-commit.md"
53
+ quality: ".hermes/shields/quality-gate.md"
54
+
55
+ triggers:
56
+ post_commit: ".hermes/triggers/post-commit.md"
57
+
58
+ <!-- CONTEXTMAP:END -->
@@ -0,0 +1,24 @@
1
+ # Escudo Pre-Commit — ContextMap
2
+
3
+ ## Verificaciones obligatorias
4
+
5
+ - [ ] Tests pasan: `python -m pytest`
6
+ - [ ] Sin secretos en el diff (api_key, password, .env)
7
+ - [ ] Sin archivos huérfanos en la raíz (PLAN.md, NOTAS.txt)
8
+ - [ ] ContextMap actualizado: `python -m context_map.cli build --clean --brief`
9
+ - [ ] Conventional Commits en español
10
+
11
+
12
+ <!-- CONTEXTMAP:BEGIN -->
13
+
14
+ # Escudo Pre-Commit — ContextMap
15
+
16
+ ## Verificaciones obligatorias
17
+
18
+ - [ ] Tests pasan: `python -m pytest`
19
+ - [ ] Sin secretos en el diff (api_key, password, .env)
20
+ - [ ] Sin archivos huérfanos en la raíz (PLAN.md, NOTAS.txt)
21
+ - [ ] ContextMap actualizado: `python -m context_map.cli build --clean --brief`
22
+ - [ ] Conventional Commits en español
23
+
24
+ <!-- CONTEXTMAP:END -->
@@ -0,0 +1,20 @@
1
+ # Post-Commit — ContextMap
2
+
3
+ Después de cada commit:
4
+
5
+ 1. Verifica que `python -m context_map.cli build --clean --brief` se ejecutó (hook pre-commit).
6
+ 2. Si el commit tocó dependencias: actualiza el lockfile del gestor de paquetes.
7
+ 3. Si el commit tocó arquitectura: revisa que el vault 4.0-RIESGOS no marcó nueva deuda.
8
+
9
+
10
+ <!-- CONTEXTMAP:BEGIN -->
11
+
12
+ # Post-Commit — ContextMap
13
+
14
+ Después de cada commit:
15
+
16
+ 1. Verifica que `python -m context_map.cli build --clean --brief` se ejecutó (hook pre-commit).
17
+ 2. Si el commit tocó dependencias: actualiza el lockfile del gestor de paquetes.
18
+ 3. Si el commit tocó arquitectura: revisa que el vault 4.0-RIESGOS no marcó nueva deuda.
19
+
20
+ <!-- CONTEXTMAP:END -->
@@ -0,0 +1,26 @@
1
+ # Dev Loop — ContextMap
2
+
3
+ Ciclo de trabajo estándar (generado por ContextMap):
4
+
5
+ 1. **Entender**: lee `.context-map/CONTEXT.md` y el vault del proyecto.
6
+ 2. **Planificar**: define el cambio antes de escribir código.
7
+ 3. **Implementar**: respeta la arquitectura modular existente.
8
+ 4. **Verificar**: ejecuta `python -m pytest` (100% en verde).
9
+ 5. **ContextMap**: `python -m context_map.cli scan . && python -m context_map.cli build --clean --brief`.
10
+ 6. **Commit**: Conventional Commits en español.
11
+
12
+
13
+ <!-- CONTEXTMAP:BEGIN -->
14
+
15
+ # Dev Loop — ContextMap
16
+
17
+ Ciclo de trabajo estándar (generado por ContextMap):
18
+
19
+ 1. **Entender**: lee `.context-map/CONTEXT.md` y el vault del proyecto.
20
+ 2. **Planificar**: define el cambio antes de escribir código.
21
+ 3. **Implementar**: respeta la arquitectura modular existente.
22
+ 4. **Verificar**: ejecuta `python -m pytest` (100% en verde).
23
+ 5. **ContextMap**: `python -m context_map.cli scan . && python -m context_map.cli build --clean --brief`.
24
+ 6. **Commit**: Conventional Commits en español.
25
+
26
+ <!-- CONTEXTMAP:END -->
@@ -0,0 +1,7 @@
1
+ - id: context-map
2
+ name: ContextMap Auto Sync
3
+ description: Escanea y actualiza automáticamente la bóveda de Obsidian y briefs de ContextMap antes de cada commit.
4
+ entry: ctxmap build --clean --brief --quiet
5
+ language: python
6
+ stages: [pre-commit]
7
+ types: [python, markdown, yaml, json]
@@ -0,0 +1,213 @@
1
+ # Instrucciones para Agentes de IA — Context Map
2
+
3
+ Este documento establece las normas obligatorias, arquitectura y flujo de trabajo que **todos los Agentes de Inteligencia Artificial** (Antigravity, Cursor, Hermes, Claude, Windsurf, Copilot, etc.) deben seguir sin excepción al interactuar con este repositorio.
4
+
5
+ ---
6
+
7
+ ## 1. Reglas Globales de Comunicación y Código
8
+
9
+ * **Idioma**: Todas las respuestas, explicaciones y docstrings deben redactarse exclusivamente en **Español Técnico Profesional**.
10
+ * **Documentación**: Todo código generado debe incluir comentarios descriptivos y **Docstrings** formales (Google Style / PEP 257) en funciones, clases y módulos.
11
+ * **Tipado Fuerte**: Uso estricto de **Type Hinting** en Python (`List[Node]`, `Tuple[str, int]`, `Optional[Dict]`, etc.).
12
+ * **Limpieza de Raíz**: No crear archivos sueltos en la raíz (`PLAN.md`, `ROADMAP.txt`). Mantener únicamente los archivos de configuración e identidad (`README.md`, `LICENSE`, `pyproject.toml`, `AGENTS.md`, `.gitignore`).
13
+
14
+ ---
15
+
16
+ ## 2. Arquitectura de Código (Clean Architecture Jerárquica)
17
+
18
+ El código de `context_map` está organizado bajo el principio de responsabilidad única en la convención `modulo/submodulo/archivo.py`:
19
+
20
+ ```
21
+ context_map/
22
+ ├── core/ # Fundamentos del dominio
23
+ │ ├── models/ # Dataclasses (Node, Edge, Event)
24
+ │ ├── parsing/ # Parser de eventos y deserialización JSONL
25
+ │ ├── storage/ # Persistencia JSONL y snapshots
26
+ │ ├── normalization/ # Estandarización y clasificación semántica
27
+ │ └── generators/ # Generadores de resúmenes y Contexto Narrativo
28
+ ├── domain/ # Lógica de negocio
29
+ │ ├── scanning/ # Escáner estático del proyecto
30
+ │ ├── synchronization/ # Sincronización incremental del grafo
31
+ │ ├── ingestion/ # Ingesta de documentos externos (MD/TXT/PDF → DOCUMENTO)
32
+ │ ├── ecosystem/ # Detección de stack/IDE y adaptación de reglas agénticas
33
+ │ ├── analysis/ # Análisis de readiness del sistema
34
+ │ ├── health/ # Diagnóstico y mantenimiento (doctor)
35
+ │ └── reporting/ # Reportes semanales de avance
36
+ ├── application/ # CLI y orquestación
37
+ │ ├── cli/ # Parser principal de argumentos CLI
38
+ │ └── commands/ # Comandos unificados (build, scan, sync, etc.)
39
+ ├── infrastructure/ # Integraciones externas
40
+ │ ├── integrations/ # Git, Hermes, Antigravity, Chat exports
41
+ │ └── analyzers/ # Analizadores AST de estructura y contenido
42
+ └── presentation/ # Generación de salidas visuales
43
+ ├── vault/ # Generador de Vault Obsidian (atomic, consolidated, templates)
44
+ └── briefs/ # Generador de CONTEXT.md para Agentes
45
+ ```
46
+
47
+ ---
48
+
49
+ ## 3. Protocolo de Inicio para Agentes (Ponerse en Contexto)
50
+
51
+ Cualquier agente que tome una tarea en este proyecto **DEBE** seguir estos pasos obligatorios antes de escribir o modificar código:
52
+
53
+ 1. **Verificar el PROYECTO correcto**: el vault de ESTE proyecto es
54
+ `.context-map/vault-ContextMap/`. Si el usuario pregunta por OTRO proyecto (p. ej.
55
+ mi-app-utm) o por un vault que no es este, dilo ANTES de responder — nunca
56
+ respondas con el contexto de otro proyecto.
57
+ 2. **Leer el Brief Ejecutivo**:
58
+ Consultar [.context-map/CONTEXT.md](file:///c:/Users/jose.cespedes/Desktop/PruebaContext/.context-map/CONTEXT.md) para conocer las métricas, riesgos críticos y tareas pendientes.
59
+ 3. **Comprobar la FRESCURA del contexto**: si el brief avisa que el diario manual
60
+ es más nuevo que el build (sección "Estado del Contexto"), ejecuta
61
+ `ctxmap refresh .` ANTES de responder sobre el estado del proyecto.
62
+ 4. **Leer los PENDIENTES REALES**: además del backlog generado (5.0-BACKLOG),
63
+ revisa SIEMPRE `.context-map/vault-ContextMap/7.0-MANUAL/BACKLOG.md` (si existe)
64
+ y el diario más reciente (`7.0-MANUAL/Diario/`). Los pendientes conversados con
65
+ el usuario viven ahí.
66
+ 5. **Revisar el Backlog y Vault**:
67
+ Inspeccionar `.context-map/vault-ContextMap/2.0-IDEAS/2.1-Ideas-Pendientes/` y `5.0-BACKLOG/5.1-Tareas.md`.
68
+ 6. **No Suponer Rutas o Lógica**:
69
+ Inspeccionar el código fuente antes de formular hipótesis de cambio.
70
+
71
+ > ⚠️ **NUNCA respondas "¿qué quedó pendiente?" basándote solo en un documento
72
+ > suelto (auditoría, CHANGELOG, docs/)** — cruza SIEMPRE el brief + backlog manual
73
+ > + diario más reciente. Esa es la fuente de verdad del proyecto.
74
+
75
+ ---
76
+
77
+ ## 4. Topología Estricta en Árbol para Obsidian (Graph View) — REGLA INAMOVIBLE
78
+
79
+ > **Esta es la regla MÁS IMPORTANTE del renderizador. Ningún agente, refactor
80
+ > o "mejora" puede violarla. El Graph View de Obsidian DEBE verse como un
81
+ > árbol puro: cada nota cuelga de EXACTAMENTE UN padre, las ramas de ideas
82
+ > pendientes (2.1), futuras (2.2) y completadas (2.3) son INDEPENDIENTES y
83
+ > NUNCA se cruzan entre sí ni con otras secciones.**
84
+
85
+ ### 4.1 Estructura del Árbol (obligatoria)
86
+
87
+ ```
88
+ 00-INDICE.md ← raíz (padre de todos)
89
+ ├── 1.0-PROPOSITO/ ← sección raíz
90
+ │ └── 1.1, 1.2, 1.3 ← hojas → SOLO a su sección padre
91
+ ├── 2.0-IDEAS/ ← sección raíz
92
+ │ ├── 2.1-Ideas-Pendientes/ ← RAMA INDEPENDIENTE
93
+ │ │ └── DEVOPS/DEVOPS-Pendientes.md ← índice de concepto (nombre ÚNICO)
94
+ │ │ └── idea_*.md ← nota → SOLO a su índice
95
+ │ ├── 2.2-Ideas-Futuras/ ← RAMA INDEPENDIENTE (solo si hay activas)
96
+ │ │ └── CONCEPTO/CONCEPTO-Futuras.md
97
+ │ ├── 2.3-Ideas-Completas-e-Implementadas/ ← RAMA INDEPENDIENTE
98
+ │ │ └── DEVOPS/DEVOPS-Completas.md
99
+ │ │ └── 01-DEVOPS-01-10.md ← batch → SOLO a su índice
100
+ │ └── 2.4-Ideas-Relevantes.md
101
+ ├── 3.0-ESTRUCTURA/ → 3.1
102
+ ├── 4.0-RIESGOS/ → notas de riesgo
103
+ ├── 5.0-BACKLOG/ → 5.1
104
+ └── 6.0-HISTORIAL/ → 6.1, 6.2, 6.3
105
+ ```
106
+
107
+ ### 4.2 Reglas Obligatorias (violarlas = bug)
108
+
109
+ 1. **CADA NOTA TIENE EXACTAMENTE UN PADRE** (árbol puro). El padre se
110
+ materializa como el ÚNICO wikilink con `⬅` (pie "Volver a..."). Ningún
111
+ nodo enlaza a más de un nivel superior, ni a nodos hermanos, ni entre
112
+ secciones de estado, ni a `00-INDICE.md` (salvo las 6 secciones raíz).
113
+ 2. **Nivel 0 (`00-INDICE.md`)**: Enlaza **únicamente** a los 6 Nodos de
114
+ Sección Raíz (`1.0`, `2.0`, `3.0`, `4.0`, `5.0`, `6.0`).
115
+ 3. **Nivel 1 (Secciones Raíz `X.0`)**: Enlazan a `00-INDICE.md` (su padre)
116
+ y a sus sub-nodos `X.Y` (sus hijos). Nada más.
117
+ 4. **Nivel 2 y Nodos Hoja**: Enlazan **exclusivamente a su Sección Padre**
118
+ vía el pie `⬅ Volver a ...`. NUNCA de regreso a `00-INDICE.md`.
119
+ 5. **Índices de concepto con nombre ÚNICO por estado**:
120
+ `{CONCEPTO}-Pendientes.md`, `{CONCEPTO}-Futuras.md`, `{CONCEPTO}-Completas.md`.
121
+ NUNCA `{CONCEPTO}.md` a secas: Obsidian fusiona archivos con el mismo
122
+ nombre base y mezclaría ideas pendientes con completas.
123
+ 6. **PROHIBIDO enlazar por nombre corto ambiguo**: todo wikilink a un índice
124
+ de concepto usa su nombre único completo (con sufijo de estado). Las notas
125
+ de idea muestran el concepto como texto plano (`` ``Concepto`` ``), SIN
126
+ wikilink adicional al índice (el pie ya enlaza al padre).
127
+ 7. **Los batches de ideas completadas se nombran `NN-CONCEPTO-INICIO-FIN.md`
128
+ y su índice DEBE enlazar a los batches reales** (nunca a `idea_*.md`
129
+ inexistentes → nodos fantasma).
130
+ 8. **Enlaces a sub-secciones condicionales**: `2.0-IDEAS.md` solo enlaza a
131
+ `2.1` / `2.2` / `2.3` si existen nodos de ese estado. Enlaces rotos =
132
+ nodos fantasma = bug.
133
+ 9. **`00-CONEXIONES.md` en modo jerárquico se renderiza SIN wikilinks**
134
+ (`con_wikilinks=False`): los nombres de archivo del modo jerárquico no
135
+ derivan del slug del título, así que los wikilinks crearían nodos fantasma.
136
+
137
+ ### 4.3 Verificación Automática (inamovible)
138
+
139
+ - El test `context_map/__tests__/test_topologia_arbol.py` DEBE pasar antes
140
+ de cualquier commit (verificado por `python -m pytest`). Comprueba:
141
+ - 0 nodos sin padre (excepto `00-INDICE.md` y `00-CONEXIONES.md`)
142
+ - 0 colisiones de nombre base entre archivos del vault
143
+ - 0 wikilinks rotos (target que no existe como archivo)
144
+ - Cada índice de concepto termina en `-Pendientes/-Futuras/-Completas.md`
145
+ - El **pre-commit hook** regenera el vault con el código LOCAL
146
+ (`python -m context_map.cli build`) — NUNCA con el binario global `ctxmap`
147
+ desactualizado. Si el vault generado no pasa 4.3, el commit está roto.
148
+
149
+ ### 4.4 Vault ÚNICO por proyecto
150
+
151
+ - El vault activo es `.context-map/vault-<NombreProyecto>` (ej:
152
+ `vault-ContextMap`, sin guión extra). El nombre lo resuelve el repo GitHub.
153
+ - PROHIBIDO acumular vaults paralelos obsoletos (`vault-Context-Map`,
154
+ `vault-TestAuto`, etc.): cualquier vault que no se regenera por `build`
155
+ debe moverse a `.context-map/_legacy/` o eliminarse. Solo debe existir UN
156
+ vault por proyecto para que Obsidian no mezcle grafos.
157
+ - **Sincronización Multi-Vault**: Todo cambio en `build` debe renderizarse
158
+ en `.context-map/vault/` y en `.context-map/vault-<project>/`
159
+ simultáneamente para que la vista de Obsidian se actualice en tiempo real.
160
+
161
+ ---
162
+
163
+ ## 5. Metodología de Contexto Narrativo con Alma
164
+
165
+ Toda nota generada para una entidad en el Vault debe invocar `generar_contexto_narrativo(node)` en `context_map/core/generators/generadores.py` para inyectar su estructura polimórfica según el tipo de nodo:
166
+
167
+ * **`IDEA`**: ¿Por qué?, ¿De dónde surgió?, ¿Para qué?, ¿Cómo?, y tabla de **Pros y Contras**.
168
+ * **`RIESGO`**: ¿Qué riesgo es?, Ubicación, Impacto, Mitigación y **Matriz de Gravedad**.
169
+ * **`CAMBIO` / `CORRECCION`**: Modificación realizada, Razón del cambio, Archivos y **Verificación de No-Regresión**.
170
+ * **`BASE`**: Componente estructural, **Rol en la Arquitectura** e integraciones.
171
+ * **`PRUEBA`**: Funcionalidad validada, Criterios de Aceptación y comando `pytest`.
172
+ * **`FUTURO`**: Tarea pendiente (TODO), Ubicación en código y Prioridad.
173
+
174
+ ### 5.1 HUMANIZAR TODOS LOS ARCHIVOS (regla obligatoria)
175
+
176
+ Al actualizar el contexto, el agente debe revisar y **redactar TODOS los
177
+ archivos del vault** (no solo `7.0-MANUAL/`): índices con propósito (no
178
+ conteos), narrativas sin plantillas vacías, títulos legibles, riesgos
179
+ deduplicados, historia con los mensajes reales, ideas con alma. **Guardar
180
+ siempre el contexto**: nunca borrar información con historia ni notas
181
+ manuales — lo tosco se redacta, no se elimina.
182
+
183
+ ### 5.2 MEMORIA VIVA DEL PROYECTO (regla fundamental)
184
+
185
+ ContextMap es la **memoria del proyecto**, mantenida constantemente por el
186
+ agente: si durante el trabajo surge una idea, decisión o lección, se
187
+ **documenta automáticamente** (sin esperar a que lo pidan) en la nota del
188
+ día (`7.0-MANUAL/Diario/`) y, si es reutilizable, como conocimiento
189
+ accionable en `8.0-KNOWLEDGE/` (formato: Lección · Cómo se resolvió ·
190
+ Prompt específico · Instrucción específica · Conexiones). Lo conversado
191
+ siempre queda.
192
+
193
+ ---
194
+
195
+ ## 6. Verificación Obligatoria y Commits
196
+
197
+ Antes de dar por completada cualquier tarea o comitear en Git:
198
+
199
+ ```bash
200
+ # 1. Ejecutar tests unitarios (deben pasar 100%)
201
+ python -m pytest
202
+
203
+ # 2. Escanear y actualizar el mapa de contexto
204
+ python -m context_map.cli scan .
205
+
206
+ # 3. Reconstruir la bóveda de Obsidian y el brief de contexto
207
+ python -m context_map.cli build --clean --brief
208
+
209
+ # 4. Verificar readiness
210
+ python -m context_map.cli check .
211
+ ```
212
+
213
+ * **Mensajes de Commit**: Usar la convención *Conventional Commits* en español (ej. `feat: ...`, `fix: ...`, `refactor: ...`, `docs: ...`).