[PR #2] [MERGED] Release REA as one CLI with MCP mode #1802

Closed
opened 2026-10-16 21:11:11 +00:00 by bsakaguchi · 0 comments
Owner

📋 Pull Request Information

Original PR: https://github.com/morluto/rea/pull/2
Author: @morluto
Created: 7/12/2026
Status: ✅ Merged
Merged: 7/12/2026
Merged by: @morluto

Base: master ← Head: morl/binaryimprovement


📝 Commits (10+)

  • 97541d8 refactor(cli): share runtime between CLI and MCP
  • 3d70812 feat(identity): rename package and CLI to REA
  • ff321dc fix(hopper): launch analysis without stealing focus
  • c6bf279 chore(package): prepare public npm release
  • 2b7ef86 fix(hopper): make loader selection non-interactive
  • e32906a chore(release): harden package artifacts
  • 62ede51 docs: record runtime and release constraints
  • a67054f fix(setup): preserve consent and startup target kind
  • aee9cb8 fix(doctor): require an executable Hopper launcher
  • 15e8cf3 fix(boundaries): reject unsafe local inputs

📊 Changes

43 files changed (+1010 additions, -319 deletions)

View changed files

📝 AGENTS.md (+12 -9)
📝 README.md (+57 -20)
📝 bridge/hopper_bridge.py (+21 -9)
📝 package-lock.json (+3 -3)
📝 package.json (+26 -7)
➖ scripts/better-binary.mjs (+0 -64)
📝 scripts/print-mcp-config.mjs (+16 -8)
➕ scripts/rea.mjs (+15 -0)
📝 scripts/verify-package.mjs (+26 -16)
📝 scripts/verify-real-hopper.mjs (+38 -2)
📝 skills/rea-analysis/SKILL.md (+3 -3)
📝 src/application/BinarySession.ts (+44 -7)
📝 src/application/DirectAnalysis.ts (+7 -24)
📝 src/application/Doctor.ts (+16 -3)
📝 src/application/EnhancedTools.ts (+6 -2)
📝 src/application/HopperToolPort.ts (+5 -0)
📝 src/application/Setup.ts (+50 -19)
📝 src/application/homebrew.ts (+5 -1)
➕ src/application/runtime.ts (+32 -0)
➕ src/cli.ts (+71 -0)

...and 23 more files

📄 Description

Summary

  • expose one rea executable for CLI and MCP workflows
  • package the project as @morluto/rea with setup, doctor, and floating MCP registration
  • share Hopper session composition across CLI and MCP adapters
  • prelaunch Hopper in the background, serialize target switches, and make loader/CPU selection deterministic
  • add isolated tarball and real-Hopper release verification

Hopper UI limitation

Hopper’s documented launcher unconditionally activates the GUI before opening an executable. REA prelaunches Hopper hidden and avoids loader-choice dialogs, but Hopper may still briefly take focus in the current macOS login session. Guaranteed isolation requires a separate macOS user session/VM or upstream Hopper support for a non-activating Python launch mode.

Verification

  • npm run check
  • npm run verify:package
  • HOPPER_TARGET_PATH=/bin/ls HOPPER_SECOND_TARGET_PATH=/usr/bin/true npm run verify:hopper
  • npm publish --dry-run --json

Real Hopper verification completed with 42 tools, two-target switching, bounded decompilation, no bundled Hopper MCP process, no stderr, and clean shutdown.


🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.

## 📋 Pull Request Information **Original PR:** https://github.com/morluto/rea/pull/2 **Author:** [@morluto](https://github.com/morluto) **Created:** 7/12/2026 **Status:** ✅ Merged **Merged:** 7/12/2026 **Merged by:** [@morluto](https://github.com/morluto) **Base:** `master` ← **Head:** `morl/binaryimprovement` --- ### 📝 Commits (10+) - [`97541d8`](https://github.com/morluto/rea/commit/97541d8dad96e640ffd9ce5f0587dee0b5fbf6c1) refactor(cli): share runtime between CLI and MCP - [`3d70812`](https://github.com/morluto/rea/commit/3d70812c373ca7ef9a41146555605455515998dd) feat(identity): rename package and CLI to REA - [`ff321dc`](https://github.com/morluto/rea/commit/ff321dc574cd510e036fe5910fba79058e5c015b) fix(hopper): launch analysis without stealing focus - [`c6bf279`](https://github.com/morluto/rea/commit/c6bf2799e64092ee85239e8079984743983ee5bc) chore(package): prepare public npm release - [`2b7ef86`](https://github.com/morluto/rea/commit/2b7ef8610df3cbee5fe0a4600dce5381cce77793) fix(hopper): make loader selection non-interactive - [`e32906a`](https://github.com/morluto/rea/commit/e32906afb7a76ed568b95ed686e58fdd7ac7219f) chore(release): harden package artifacts - [`62ede51`](https://github.com/morluto/rea/commit/62ede515b7c7e092714fa936575fd54d282deb93) docs: record runtime and release constraints - [`a67054f`](https://github.com/morluto/rea/commit/a67054f81500033c0a5b8d87f7f009ed2adda6e3) fix(setup): preserve consent and startup target kind - [`aee9cb8`](https://github.com/morluto/rea/commit/aee9cb8e4e919d28ae851987f6555cfceee46977) fix(doctor): require an executable Hopper launcher - [`15e8cf3`](https://github.com/morluto/rea/commit/15e8cf3234bd3b5ee929db84c5c71e9a18441eb6) fix(boundaries): reject unsafe local inputs ### 📊 Changes **43 files changed** (+1010 additions, -319 deletions) <details> <summary>View changed files</summary> 📝 `AGENTS.md` (+12 -9) 📝 `README.md` (+57 -20) 📝 `bridge/hopper_bridge.py` (+21 -9) 📝 `package-lock.json` (+3 -3) 📝 `package.json` (+26 -7) ➖ `scripts/better-binary.mjs` (+0 -64) 📝 `scripts/print-mcp-config.mjs` (+16 -8) ➕ `scripts/rea.mjs` (+15 -0) 📝 `scripts/verify-package.mjs` (+26 -16) 📝 `scripts/verify-real-hopper.mjs` (+38 -2) 📝 `skills/rea-analysis/SKILL.md` (+3 -3) 📝 `src/application/BinarySession.ts` (+44 -7) 📝 `src/application/DirectAnalysis.ts` (+7 -24) 📝 `src/application/Doctor.ts` (+16 -3) 📝 `src/application/EnhancedTools.ts` (+6 -2) 📝 `src/application/HopperToolPort.ts` (+5 -0) 📝 `src/application/Setup.ts` (+50 -19) 📝 `src/application/homebrew.ts` (+5 -1) ➕ `src/application/runtime.ts` (+32 -0) ➕ `src/cli.ts` (+71 -0) _...and 23 more files_ </details> ### 📄 Description ## Summary - expose one `rea` executable for CLI and MCP workflows - package the project as `@morluto/rea` with setup, doctor, and floating MCP registration - share Hopper session composition across CLI and MCP adapters - prelaunch Hopper in the background, serialize target switches, and make loader/CPU selection deterministic - add isolated tarball and real-Hopper release verification ## Hopper UI limitation Hopper’s documented launcher unconditionally activates the GUI before opening an executable. REA prelaunches Hopper hidden and avoids loader-choice dialogs, but Hopper may still briefly take focus in the current macOS login session. Guaranteed isolation requires a separate macOS user session/VM or upstream Hopper support for a non-activating Python launch mode. ## Verification - `npm run check` - `npm run verify:package` - `HOPPER_TARGET_PATH=/bin/ls HOPPER_SECOND_TARGET_PATH=/usr/bin/true npm run verify:hopper` - `npm publish --dry-run --json` Real Hopper verification completed with 42 tools, two-target switching, bounded decompilation, no bundled Hopper MCP process, no stderr, and clean shutdown. --- <sub>🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.</sub>
bsakaguchi 2026-10-16 21:11:11 +00:00
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
morluto/rea#1802
No description provided.