Files
rea/docs/jeb-analysis.md
T
morluto c4cdb7658b fix(jeb)!: preserve engine refusal diagnostics
Parse JEB failure envelopes at the provider boundary and retain the original response, recovery facts, and selected inputs. Do not infer an unsupported target from undocumented error codes; preserve completed primary observations when metadata requests fail.

BREAKING CHANGE: JEB engine refusals now report execution_failure rather than unsupported_target. Consumers should inspect the retained upstream diagnostics for the engine's reason and recovery facts.
2026-10-27 06:22:10 +08:00

8.1 KiB

JEB instrumentation and analysis

REA exposes JEB-backed project, unit, and decompilation inspection through the CLI and MCP, served by JEB's own MCP interface. JEB is a bring-your-own engine: REA never installs it, launches it, or opens its project databases itself.

Bring-your-own engine

Start a JEB client that serves MCP and point REA at it:

  • Default endpoint: http://127.0.0.1:8425/mcp. Override with REA_JEB_MCP_URL (absolute http/https URL with literal host 127.0.0.1 or [::1]; redirects, remote hosts, credentials, query strings, and fragments are rejected rather than silently dropped).

  • In the JEB GUI client, start the MCP server from the File menu (or via the VIBRE assistant).

  • Headless, the official Linux CE build 5.48.0.202610071539 supports -c --mcp. From the JEB installation directory, select JDK 21 or newer through JAVA_HOME, choose your target and bind explicitly to loopback:

    "$JAVA_HOME/bin/java" -jar bin/app/jeb.jar -c --mcp --interface=127.0.0.1 \
      --port=8425 --infile=/absolute/path/to/target
    

    Complete the vendor's first-use EULA and license-key activation when prompted. The Linux audit used an isolated installation, a 1536 MiB Java heap and one active processor inside a separately bounded process family; JVM heap limits alone do not bound the whole family.

  • JEB's documented programmatic route (JebMcpServerInstance from the JEB API) remains an alternative. The earlier licensed 5.48 headless verification used that route because its CLI did not accept --mcp. Check your installed build's -c --help and live tool catalog; the version number alone does not establish the launcher options or supported operations.

For setup registration, set REA_JEB_MCP_URL in the REA process environment before running rea setup. The approved setup plan preserves the exact selected URL after validating its syntax. That validation does not establish that the JEB service is reachable or that a project is open; use the existing inspect-jeb-client command for a read-only service query.

MCP binary_session probes the live JEB service and its advertised tool catalog. Availability is reported per operation: a reachable headless client can support inspection and decompilation while refusing open_jeb_project. Catalog discovery is one deadline across connection and pagination; a responsive server cannot keep discovery running indefinitely by returning more pages.

Catalog discovery and each tools/call share REA_JEB_MCP_TIMEOUT_MS. Set it in REA's launch environment to an integer from 1 to 2147483647 milliseconds, for example REA_JEB_MCP_TIMEOUT_MS=300000 for a five-minute budget. Omitted means the pinned MCP client SDK default of 60000 ms (@modelcontextprotocol/client 2.3.1). Restart REA and reconnect to apply a change. Raising the setting raises both phases. It does not make one end-to-end deadline across a whole CLI or MCP operation: discovery and each tools/call each get that budget. A request that reaches its budget returns a typed timeout naming the phase and the effective milliseconds, while caller cancellation remains a cancellation. Allow execution, cleanup, and delivery headroom in the outer MCP client deadline.

Earlier verification used JEB 5.48.0 (Linux x64, licensed build) serving jeb-mcp-server 1.3.0 over streamable HTTP. The off