Merge pull request #3 from morluto/codex/publish-reaa
[codex] Publish REA as reaa
This commit is contained in:
commit
bcaf8ee2d4
12
README.md
12
README.md
|
|
@ -17,8 +17,8 @@ REA does not bundle Hopper. `rea setup --yes` can install Homebrew when absent,
|
|||
After publication:
|
||||
|
||||
```bash
|
||||
npx -y @morluto/rea setup --yes
|
||||
npx -y @morluto/rea doctor
|
||||
npx -y reaa setup --yes
|
||||
npx -y reaa doctor
|
||||
```
|
||||
|
||||
For source-checkout development:
|
||||
|
|
@ -59,7 +59,7 @@ Manual target-free MCP configuration:
|
|||
"mcpServers": {
|
||||
"rea": {
|
||||
"command": "npx",
|
||||
"args": ["-y", "@morluto/rea", "mcp"]
|
||||
"args": ["-y", "reaa", "mcp"]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -94,13 +94,13 @@ npm run verify:hopper
|
|||
|
||||
Real-Hopper verification requires Hopper and two distinct binaries. It checks target-free startup, all 42 tools, analysis, bounded decompilation, target switching, bridge cleanup, and server shutdown. The verifier terminates only Hopper bundle processes that appeared during its run; it preserves Hopper processes that were already running.
|
||||
|
||||
Before publishing a release, run `npm run check`, `npm run verify:package`, `npm pack --dry-run`, and the two-target real-Hopper verifier. After publication, repeat the CLI and MCP smoke tests through `npx -y @morluto/rea`.
|
||||
Before publishing a release, run `npm run check`, `npm run verify:package`, `npm pack --dry-run`, and the two-target real-Hopper verifier. After publication, repeat the CLI and MCP smoke tests through `npx -y reaa`.
|
||||
|
||||
The package ships only the `rea` executable. Setup writes a floating MCP registration using `npx -y @morluto/rea mcp`. A local tarball exercises the same package boundary before publication:
|
||||
The npm package is named `reaa`, while the product and installed executable remain `REA` and `rea`. Setup writes a floating MCP registration using `npx -y reaa mcp`. A local tarball exercises the same package boundary before publication:
|
||||
|
||||
```bash
|
||||
npm pack
|
||||
npm exec --yes --package ./morluto-rea-0.1.0.tgz -- rea --help
|
||||
npm exec --yes --package ./reaa-0.1.0.tgz -- rea --help
|
||||
```
|
||||
|
||||
## License
|
||||
|
|
|
|||
|
|
@ -1,11 +1,11 @@
|
|||
{
|
||||
"name": "@morluto/rea",
|
||||
"name": "reaa",
|
||||
"version": "0.1.0",
|
||||
"lockfileVersion": 3,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
"": {
|
||||
"name": "@morluto/rea",
|
||||
"name": "reaa",
|
||||
"version": "0.1.0",
|
||||
"dependencies": {
|
||||
"@modelcontextprotocol/server": "2.0.0-beta.3",
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"name": "@morluto/rea",
|
||||
"name": "reaa",
|
||||
"version": "0.1.0",
|
||||
"description": "Reverse-engineering automation for Hopper Disassembler through one CLI and MCP server.",
|
||||
"license": "MIT",
|
||||
|
|
|
|||
|
|
@ -95,7 +95,7 @@ try {
|
|||
throw new Error("packaged CLI discovery or doctor failed");
|
||||
await run(cli, ["mcp", "add"], environment);
|
||||
const mcpRegistration = await readFile(npxLog, "utf8");
|
||||
if (!mcpRegistration.includes("add-mcp npx -y @morluto/rea mcp --name rea"))
|
||||
if (!mcpRegistration.includes("add-mcp npx -y reaa mcp --name rea"))
|
||||
throw new Error("Incur mcp add did not register the floating npx command");
|
||||
const first = json(await run(cli, ["setup", "--yes", "--json"], environment));
|
||||
const second = json(
|
||||
|
|
@ -113,7 +113,7 @@ try {
|
|||
config.existing !== true ||
|
||||
config.mcpServers?.rea?.command !== "npx" ||
|
||||
JSON.stringify(config.mcpServers?.rea?.args) !==
|
||||
JSON.stringify(["-y", "@morluto/rea", "mcp"])
|
||||
JSON.stringify(["-y", "reaa", "mcp"])
|
||||
)
|
||||
throw new Error("packaged client readback failed");
|
||||
if (
|
||||
|
|
@ -173,7 +173,7 @@ try {
|
|||
}
|
||||
|
||||
process.stdout.write(
|
||||
`${JSON.stringify({ cli: true, incurMcpCommand: "npx -y @morluto/rea mcp", doctor: true, setup: "idempotent", clients: 2, backupReadback: true, failureRecovery: true, skill: true, mcpTools: 42, targetFree: true })}\n`,
|
||||
`${JSON.stringify({ cli: true, incurMcpCommand: "npx -y reaa mcp", doctor: true, setup: "idempotent", clients: 2, backupReadback: true, failureRecovery: true, skill: true, mcpTools: 42, targetFree: true })}\n`,
|
||||
);
|
||||
} finally {
|
||||
if (tarball) await rm(join(root, tarball), { force: true });
|
||||
|
|
|
|||
|
|
@ -5,9 +5,9 @@
|
|||
*/
|
||||
export const PRODUCT_IDENTITY = {
|
||||
displayName: "REA",
|
||||
packageName: "@morluto/rea",
|
||||
packageName: "reaa",
|
||||
cliBinary: "rea",
|
||||
mcpCommand: "npx -y @morluto/rea mcp",
|
||||
mcpCommand: "npx -y reaa mcp",
|
||||
mcpServerKey: "rea",
|
||||
skillName: "rea-analysis",
|
||||
configFileName: "rea.json",
|
||||
|
|
|
|||
|
|
@ -28,7 +28,7 @@ describe("JSON client configuration transaction", () => {
|
|||
other: { command: "other" },
|
||||
rea: {
|
||||
command: "npx",
|
||||
args: ["-y", "@morluto/rea", "mcp"],
|
||||
args: ["-y", "reaa", "mcp"],
|
||||
},
|
||||
},
|
||||
});
|
||||
|
|
@ -39,7 +39,7 @@ describe("JSON client configuration transaction", () => {
|
|||
const configPath = join(directory, "mcp.json");
|
||||
await writeFile(
|
||||
configPath,
|
||||
'{"mcpServers":{"rea":{"command":"npx","args":["-y","@morluto/rea","mcp"]}}}\n',
|
||||
'{"mcpServers":{"rea":{"command":"npx","args":["-y","reaa","mcp"]}}}\n',
|
||||
);
|
||||
expect(await configureJsonClient({ name: "cursor", configPath })).toEqual({
|
||||
status: "unchanged",
|
||||
|
|
@ -61,7 +61,7 @@ describe("JSON client configuration transaction", () => {
|
|||
mcpServers: {
|
||||
rea: {
|
||||
command: "npx",
|
||||
args: ["-y", "@morluto/rea", "mcp"],
|
||||
args: ["-y", "reaa", "mcp"],
|
||||
env: { HOPPER_LAUNCHER_PATH: hopperPath },
|
||||
},
|
||||
},
|
||||
|
|
|
|||
Loading…
Reference in New Issue