Estructura del proyecto
osint-ai-one/├── src/│ ├── config.py # Pydantic Settings — todas las variables de entorno│ ├── cache.py # Capa de cache transparente para herramientas│ ├── agent.py # Shim de compatibilidad → src/agent/│ ├── logger.py # Configuracion de logging│ ├── utils.py # Utilidades compartidas│ ││ ├── agent/ # Agente ReAct (LangGraph)│ │ └── __init__.py # create_osint_agent(), SYSTEM_PROMPT│ ││ ├── tools/ # 19 herramientas OSINT async│ │ ├── virustotal.py # ip_lookup, domain_lookup, hash_lookup│ │ ├── abuseipdb.py # check_ip│ │ ├── alienvault.py # ip_lookup│ │ ├── shodan_tool.py # host_lookup│ │ ├── ipinfo.py # lookup│ │ ├── urlscan.py # lookup│ │ ├── whois_tool.py # lookup (gratis)│ │ ├── dns_tool.py # lookup (gratis)│ │ ├── crtsh.py # lookup (gratis)│ │ ├── threat_feeds.py # fetch_threat_feed (gratis)│ │ ├── pivot.py # pivot_investigate│ │ ├── history.py # search_history│ │ ├── gdelt_tool.py # entity_search, topic_search, tone_analysis│ │ ├── rss_monitor.py # news_search, financial_news, security_news│ │ ├── financial_data.py # crypto_prices, economic_indicator, energy_prices│ │ ├── threat_classifier.py # classify_threat_type│ │ ├── acled_tool.py # conflict_events│ │ ├── country_risk.py # get_country_risk_score│ │ └── ais_tool.py # vessel_lookup, chokepoint_activity│ ││ ├── analysis/ # Modulos de analisis avanzado│ │ ├── anomaly_detector.py # Deteccion de anomalias Welford│ │ ├── market_correlation.py # Correlacion IOC ↔ senal de mercado│ │ └── narrative_detector.py # Deteccion de clusters de narrativas│ ││ ├── investigation/ # Gestion de investigaciones│ │ ├── manager.py # Crear / archivar / reactivar│ │ ├── evidence.py # SHA-256 → extraer → chunk → embed│ │ ├── entities.py # CRUD + dedup + normalizacion│ │ ├── claims.py # Registrar / verificar / disputar│ │ ├── normalize.py # Normalizacion espanola de entidades│ │ ├── extract.py # Extraccion PDF / TXT / HTML / MD│ │ └── alerts.py # Alertas programadas con deteccion de cambios│ ││ ├── vector/│ │ └── store.py # ChromaDB: upsert / search / cross-search│ ││ ├── database/│ │ ├── cache_db.py # Cache de resultados OSINT (SQLite)│ │ └── investigation_db.py # Schema investigaciones — 8 tablas, 40+ metodos│ ││ ├── scoring/│ │ └── dashboard.py # Scoring compuesto (0-100) y dashboard│ ││ ├── reporting/│ │ ├── threat_report.py # Informes de threat intel por sesion│ │ └── investigation_report.py # Informes de investigacion (9 secciones)│ ││ ├── services/│ │ └── osint_service.py # Fachada unificada (OSINT + investigacion)│ ││ ├── mcp_server/│ │ ├── server.py # FastMCP: 29 tools, 5 resources, 3 prompts│ │ └── __main__.py # Entry point: osint-mcp│ ││ ├── a2a_server/│ │ ├── server.py # Uvicorn launcher│ │ ├── agent_card.py # A2A Agent Card (5 skills)│ │ ├── executor.py # Task executor con streaming│ │ └── __main__.py # Entry point: osint-a2a│ ││ └── cli/│ └── main.py # CLI: interactivo, query unica, batch, investigacion│├── .claude/│ ├── skills/ # 15 Claude Code skills│ │ ├── _shared/scripts/ # Scripts compartidos (DB, vector, hash, normalize)│ │ │ ├── puruto_db.py # 47 comandos CRUD de investigaciones│ │ │ ├── puruto_vector.py # Operaciones ChromaDB│ │ │ ├── puruto_hash.py # SHA-256│ │ │ ├── puruto_normalize.py # Normalizacion entidades ES│ │ │ └── puruto_alerts.py # Ejecucion de alertas│ │ ├── investigation-init/│ │ ├── evidence-ingest/│ │ ├── entity-extract/│ │ ├── osint-investigate/│ │ ├── osint-recon/│ │ └── ... # 10 skills mas│ └── agents/ # 4 agentes especializados│├── tests/│ ├── tools/ # 73 tests de herramientas OSINT (mocked con respx)│ ├── investigation/ # 77 tests de la capa de investigacion│ ├── integration/ # 17 tests de integracion (MCP, A2A)│ └── *.py # 41 tests de cache, dashboard, sesion, etc.│├── data/ # Datos en tiempo de ejecucion (gitignored)│ ├── osint_cache.db│ ├── osint_ai.db│ ├── chroma/│ └── .active # Slug de la investigacion activa│├── investigaciones/ # Carpetas de investigacion (gitignored)│ └── <slug>/│ ├── evidencias/│ ├── hallazgos/│ └── informes/│├── reports/ # Informes de threat intelligence generados├── docs/ # Documentacion HTML estatica (legacy)├── Dockerfile├── docker-compose.yml├── pyproject.toml # Configuracion del paquete y entry points├── CLAUDE.md # Contexto de Claude Code├── AGENTS.md # Instrucciones para agentes IA├── ontology-v1.md # Ontologia FTM completa└── .env.example # Template de variables de entornoEntry points (pyproject.toml)
[project.scripts]osint-agent = "src.cli.main:main"osint-mcp = "src.mcp_server.__main__:main"osint-a2a = "src.a2a_server.__main__:main"Tras pip install -e ., estos comandos quedan disponibles en el PATH del entorno virtual.