OrangePro

Análisis de brechas en pruebas conductuales y generación de pruebas de integración fundamentadas mediante grafo de conocimiento; detecta comportamientos no probados, los clasifica por radio de impacto y los valida mediante eliminación de mutantes.

Documentación

OrangePro

Encuentra los comportamientos que tus pruebas pasan por alto. Genera pruebas fundamentadas que realmente se ejecutan.

npm version MIT License npm downloads Glama score MCP Registry


OrangePro mapea cada comportamiento público en tu código, puntúa cada uno con evidencia real de pruebas y te muestra los puntos ciegos estructurales antes de que tus usuarios los encuentren. Se ejecuta localmente. Tu código nunca sale de tu máquina.

npx -y @orangepro/mcp-server@latest start .

Tabla de contenidos


Qué obtienes

Un solo comando produce un informe HTML interactivo:

npx -y @orangepro/mcp-server@latest start .
open .orangepro/behavior-coverage.html

El informe tiene dos modos: Simple (puntos ciegos a nivel de integración, en lenguaje sencillo) y Experto (lista completa de comportamientos, niveles de evidencia, flujos, mapa del sistema). Alterna con el interruptor de píldora en la parte superior.

→ Ejemplo en vivo: Twenty CRM (5,237 comportamientos mapeados)

OrangePro system map — entry lanes, services, evidence tiers

Mapa del sistema — carriles de entrada (GraphQL, HTTP, Jobs) que fluyen hacia los servicios, dimensionados por tráfico, coloreados por nivel de evidencia, con anillo rojo por riesgo.

Priority gaps

Brechas prioritarias de otro proyecto de código abierto HONO — los 20 comportamientos no probados más importantes clasificados por radio de impacto, con borradores de pruebas generados.


Niveles de evidencia

Cada comportamiento recibe exactamente un nivel. Nada se etiqueta como "probado" por fe.

NivelColorQué significa
Probado dinámicamente🟢Una prueba real elimina una mutación dirigida de este comportamiento
Cubierto en tiempo de ejecución🟢La herramienta de cobertura ejecutó este código
Vinculado estáticamente🟡Una prueba importa y llama a este código — vínculo estructural, no prueba
Candidato no confirmado⚪Existe un archivo de prueba similar — una pista, no evidencia
Sin señal🔴Nada prueba este comportamiento

"Probado dinámicamente 0" es normal en la primera ejecución. La prueba requiere ejecutar pruebas contra mutaciones dirigidas. Ese es el modelo de confianza.


Inicio rápido

cd /path/to/your/repo
npm install          # install the repo's own dependencies first

npx -y @orangepro/mcp-server@latest start .
open .orangepro/behavior-coverage.html

No se necesita clave API. El informe muestra tu mapa del sistema, niveles de evidencia, brechas prioritarias y el delta desde la última ejecución.

¿Quieres generación de pruebas? Agrega una clave de modelo (BYOK):

export ANTHROPIC_API_KEY="..."   # or OPENAI_API_KEY / OLLAMA_BASE_URL
npx -y @orangepro/mcp-server@latest start .

La salida de IA nunca cambia los niveles de evidencia. Solo el oráculo de eliminación de mutaciones puede otorgar "Probado dinámicamente".

Salida:

.orangepro/
├── behavior-coverage.html   ← open this
├── graph.json               ← deterministic evidence graph
├── COVERAGE_REPORT.md       ← coverage and gap summary
└── ai/                      ← candidate flows (when a key is configured)

orangepro_generated/         ← generated tests; your source files are never touched

Cada nueva ejecución muestra un banner de delta: qué entró al código, qué subió en riesgo, qué se resolvió.


Uso con tu agente de codificación

OrangePro se ejecuta como servidor MCP. Agrégalo a la configuración de tu cliente:

{
  "mcpServers": {
    "orangepro-local": {
      "command": "npx",
      "args": ["-y", "@orangepro/mcp-server@latest", "mcp"]
    }
  }
}
ClienteDónde colocarlo
Claude Code.mcp.json o ~/.claude.json
Cursor~/.cursor/mcp.json o Configuración → MCP
VS Code / CopilotConfiguración de MCP
Codex / OpenCodeEjecuta npx -y @orangepro/mcp-server@latest agent --client codex

El flujo de trabajo: Dile a tu agente:

"Usa orangepro_start, luego orangepro_generate_tests con base_ref=main. Escribe cada prueba en su suggested_path, ejecútala e informa aprobado/fallido."

El agente escribe la prueba, la ejecuta, llama a orangepro_prove y el comportamiento se convierte en "Probado dinámicamente". Un solo prompt, ciclo completo.


Compatible con

Claude Code · Cursor · GitHub Copilot · Codex · Windsurf · OpenCode · VS Code

Cualquier agente compatible con MCP puede manejar OrangePro. Sin bloqueo de proveedor.


Cómo funciona

┌─────────────┐     ┌──────────────┐     ┌─────────────┐
│  Your Code  │ ──► │  Knowledge   │ ──► │  Evidence   │
│  (any lang) │     │    Graph     │     │   Tiers     │
└─────────────┘     └──────────────┘     └─────────────┘
                           │
                    ┌──────┴──────┐
                    ▼             ▼
             ┌───────────┐  ┌──────────┐
             │ Gap Report│  │ Generate │
             │ + Risks   │  │  Tests   │
             └───────────┘  └──────────┘
FaseQué sucede¿Necesita clave de modelo?
AnalizarRecorrido AST → comportamientos, flujos, niveles de evidenciaNo
PuntuarPuntuación de preparación del grafo (0–100)No
GenerarPruebas fundamentadas para las brechas principalesSí (BYOK)
ProbarEl oráculo de eliminación de mutaciones confirma que la prueba falla si el comportamiento cambiaNo

Mismo código = misma puntuación. Determinista. Siempre.


Soporte de lenguajes

LenguajeMapeo estáticoPruebas generadasPrueba dinámica
TypeScript / JavaScript✓✓ Jest / Vitest / Mocha✓
Python✓✓ pytest✓
Go✓✓ *_test.go✓
Java✓✓ JUnit 4/5✓
Kotlin, Rust, PHP, C#, Ruby, Swift, C, C++✓planificadoplanificado

El mapeo estático funciona en muchos lenguajes mediante tree-sitter. La prueba dinámica es deliberadamente más limitada — cada lenguaje necesita un ejecutor, un localizador de mutaciones y un perfil de sandbox.


Ejecución local de mayor valor

Usa primero los comandos de configuración y prueba del propio repositorio, y mantén la cobertura de unidades e integración en artefactos separados. Luego ejecuta opro start; realiza el análisis, ingiere los artefactos, intenta la prueba dirigida, genera borradores visibles en el informe y escribe el informe final. Un opro analyze separado es innecesario cuando opro start lo sigue.

# 1. Install/build exactly as the repository documents.
# 2. Run the repository's unit and integration coverage commands separately.
# 3. Record artifact provenance (example paths and commands):
mkdir -p .orangepro
# create .orangepro/coverage-suites.json using the schema below

opro coverage .                    # optional preflight: discover/generate artifacts
opro start . --proof-limit 5 --generate-limit 20
{
  "artifacts": {
    ".orangepro/coverage/unit.coverprofile": {
      "suite": "unit",
      "command": "make unit-test-coverage"
    },
    ".orangepro/coverage/integration.coverprofile": {
      "suite": "integration",
      "command": "make integration-test-coverage"
    }
  }
}

Sin este manifiesto, OrangePro infiere de forma conservadora nombres claros de unit/integration y etiqueta todo lo demás como unclassified; nunca adivina que un perfil agregado es solo de unidades. El informe muestra unidades, integración, su superposición, cobertura no clasificada y la unión combinada por separado. --proof-limit controla los intentos de prueba dinámica (que pueden redactar una prueba para verificación); --generate-limit controla de forma independiente el carril adicional de redacción de brechas de riesgo visible en el informe. Una ejecución de generación también registra su estado terminal y la razón exacta, de modo que un fallo de compilador/importación no se informe erróneamente como un problema genérico de dependencias.


Privacidad

  • Sin almacenamiento de código fuente. Lee el código en proceso. Nunca lo sube a un servidor de OrangePro.
  • Sin mutación de código existente. Nunca edita tus archivos fuente o de prueba.
  • Tus claves siguen siendo tuyas. Se leen del entorno en el momento de la llamada, nunca se persisten.
  • BYOK es directo. El contexto del código va al proveedor de modelo que configures. OrangePro no está en esa ruta.

Referencia de CLI
opro                          # analyze + report + agent next actions
opro start --base main        # same, scoped to a branch diff
opro analyze                  # build the evidence graph
opro score                    # graph readiness (0–100)
opro gaps --limit 10          # top 10 untested behaviors
opro generate --base main     # tests for PR diff
opro generate --single        # top gap, whole repo
opro prove                    # mutation-kill oracle
opro rtm                      # traceability matrix
opro export                   # metadata-only evidence pack
opro mcp                      # run as MCP server (stdio)
opro doctor                   # what evidence to add next
opro coverage                 # discover/generate artifacts; analyze or start ingests them

Agrega --json a cualquier comando de lectura para salida de máquina. Ejecuta opro help para la referencia completa.

Herramientas MCP (18 en total)
HerramientaQué hace
orangepro_startConfiguración en un comando: analiza + informe + próximas acciones
orangepro_analyze_sourcesConstruye/actualiza el grafo de evidencia
orangepro_generate_testsGenera pruebas fundamentadas para brechas
orangepro_proveEjecuta el oráculo de eliminación de mutaciones en un comportamiento
orangepro_prove_loopConfiguración + prueba dinámica + actualización de informe para un comportamiento
orangepro_find_test_gapsLista comportamientos con pruebas débiles/faltantes, clasificados por riesgo
orangepro_graph_scorePuntuación de preparación del grafo (0–100)
orangepro_statusEstado del espacio de trabajo sin generar nada
orangepro_doctorRecomienda la siguiente evidencia para mejorar la calidad
orangepro_rtmMatriz de trazabilidad de requisitos
orangepro_statsEstadísticas agregadas
orangepro_changed_impactQué toca un diff (requiere git + ref base)
orangepro_record_runRegistra el resultado de una ejecución de prueba
orangepro_explain_testExplica por qué se generó una prueba
orangepro_export_evidence_packExporta paquete de evidencia solo de metadatos
orangepro_update_graphActualización incremental del grafo
orangepro_ai_linksSugerencias de comportamiento débil→símbolo (IA opcional)
orangepro_ai_flowsDescubrimiento de flujos candidatos (IA opcional)
Flujo de trabajo de PR
opro generate --base main              # tests for what this branch changed
opro generate --pr 1234                # checks out PR #1234
opro generate --changed                # current branch diff vs main

Cada prueba generada incluye:

  • Fundamentación — los archivos reales, símbolos y pruebas existentes que cita
  • Pistas de ejecución — dónde escribirla, cómo ejecutarla
  • Categoría de escenario — qué modo de fallo aborda

Si las dependencias no están instaladas, las pruebas se mantienen como Pruebas manuales (pasos Dado/Cuando/Entonces con el bloqueador nombrado). Instala las dependencias y vuelve a ejecutar para convertirlas en pruebas ejecutables.

Categorías de prueba

La generación está limitada por evidencia. Una categoría se produce solo cuando el grafo tiene evidencia de respaldo.

CategoríaQué aborda
Camino felizComportamiento esperado principal
Error de validaciónManejo de entrada incorrecta/inválida
Caso límiteLímites, vacío/nulo, concurrencia, reintentos
Flujo de integraciónComportamiento de múltiples pasos entre servicios
Seguridad / privacidadAutenticación, inyección, fuga de datos
RegresiónFijar un comportamiento previamente roto
Configuración de modelo (BYOK)

El análisis, la puntuación y la prueba no necesitan clave de modelo. La generación sí.

ProveedorVariable de entorno
Compatible con OpenAIOPENAI_API_KEY (opcional: OPENAI_BASE_URL, OPENAI_MODEL)
AnthropicANTHROPIC_API_KEY (opcional: ANTHROPIC_MODEL)
Ollama (local, sin clave)OLLAMA_BASE_URL (opcional: OLLAMA_MODEL)

Orden de detección automática: OpenAI → Ollama → Anthropic. Anula con --provider y --model. Los valores predeterminados son gpt-5.3-codex para OpenAI y claude-sonnet-5 para Anthropic.

Ejecuta opro setup para configurar de forma interactiva. Las claves permanecen en tu entorno — nunca se escriben en el grafo, la configuración o los artefactos.

Carriles de candidatos de IA

Con una clave de proveedor, OrangePro prepara vínculos débiles de comportamiento→símbolo de IA y flujos candidatos sugeridos por IA. Estos son listas de trabajo de revisión/generación, no evidencia:

  • Los vínculos de IA aparecen como sugerencias AI-linked.
  • Los flujos de IA se almacenan por separado de los flujos deterministas.
  • Ningún carril cambia los niveles de evidencia ni los conteos de denominador.

Úsalos cuando quieras que el agente encuentre flujos de límites de servicio probables más rápido; ignóralos para un informe solo determinista.


Qué hay en la plataforma alojada

Este repositorio es la herramienta local gratuita. La plataforma OrangePro agrega:

  • Grafo de conocimiento persistente entre PRs y repositorios
  • Puertas de política de PR/CI sobre niveles de evidencia y deltas de riesgo
  • Enriquecimiento con Jira / Confluence / TestRail / OpenAPI
  • Inteligencia entre repositorios y memoria de flujos recurrentes
  • Correlación de incidentes de producción y orientación de regresión
  • Paneles de equipo y gestión del ciclo de vida de pruebas

Contribuciones

git clone https://github.com/OrangeproAI/orangepro-mcp.git
cd orangepro-mcp && npm ci && npm run build
npm test

Se aceptan PRs. Abre un issue primero para cambios grandes.


Licencia MIT · orangepro.ai