mirror of
https://github.com/morluto/rea.git
synced 2026-10-26 17:35:11 +00:00
fix(setup): forward supported tool and runtime selections
This commit is contained in:
1 parent
53779b59bf
commit
f4987281fa
3 files changed
+82
-5
No files matched your search
@@ -247,11 +247,17 @@ duration. Setup preserves positive timeout values already in the `rea` entry.
|
|||||||
|
|
||||||
Setup also forwards explicitly selected input/output schema profiles,
|
Setup also forwards explicitly selected input/output schema profiles,
|
||||||
`REA_MCP_MAX_RESPONSE_BYTES`, provider paths and supported Ghidra, JADX and Kuna
|
`REA_MCP_MAX_RESPONSE_BYTES`, provider paths and supported Ghidra, JADX and Kuna
|
||||||
settings. This includes the selected ADB, apktool, tshark, capinfos and tshark
|
settings. It also forwards explicit executable and resource selections for ADB,
|
||||||
prlimit executable paths. A provider being unavailable does not discard its selected paths;
|
apktool, packet capture, GDB/Rizin/objdump, Cutter, WABT, Wakaru, firmware and
|
||||||
|
signal tools, browser inspection, and pwntools/pwndbg. This includes their
|
||||||
|
supported prlimit overrides, Darwin Swift compiler/SDK/module-cache selections,
|
||||||
|
and compile timeout, logging level and explicitly configured reference-secret
|
||||||
|
patterns. A provider being unavailable does not discard its selected paths;
|
||||||
doctor reports its readiness separately. Explicit selections override discovered
|
doctor reports its readiness separately. Explicit selections override discovered
|
||||||
defaults. Unrelated environment variables are not copied, and existing client
|
defaults, including when setup runs again with a changed selection. Unrelated
|
||||||
environment overrides remain intact unless setup supplies the same key.
|
environment variables, process ownership tokens and one-shot target paths are not
|
||||||
|
copied. Existing client environment overrides remain intact unless setup supplies
|
||||||
|
the same key.
|
||||||
You can edit `startupTimeoutMs` and `toolTimeoutMs` there; doctor keeps positive
|
You can edit `startupTimeoutMs` and `toolTimeoutMs` there; doctor keeps positive
|
||||||
caller-selected values aligned and reports a non-blocking advisory when a tool
|
caller-selected values aligned and reports a non-blocking advisory when a tool
|
||||||
timeout is shorter than the known provider allowance.
|
timeout is shorter than the known provider allowance.
|
||||||
|
|||||||
@@ -11,6 +11,33 @@ const SELECTED_REGISTRATION_SETTINGS = [
|
|||||||
"REA_TSHARK_COMMAND",
|
"REA_TSHARK_COMMAND",
|
||||||
"REA_CAPINFOS_COMMAND",
|
"REA_CAPINFOS_COMMAND",
|
||||||
"REA_TSHARK_PRLIMIT_COMMAND",
|
"REA_TSHARK_PRLIMIT_COMMAND",
|
||||||
|
"REA_OBJDUMP_COMMAND",
|
||||||
|
"REA_GDB_COMMAND",
|
||||||
|
"REA_RIZIN_COMMAND",
|
||||||
|
"REA_CUTTER_BRIDGE_DIR",
|
||||||
|
"REA_WABT_BIN_DIRECTORY",
|
||||||
|
"REA_WAKARU_COMMAND",
|
||||||
|
"REA_JAVASCRIPT_PRLIMIT_COMMAND",
|
||||||
|
"REA_BINWALK_COMMAND",
|
||||||
|
"REA_UNBLOB_COMMAND",
|
||||||
|
"REA_FIRMWARE_PRLIMIT_COMMAND",
|
||||||
|
"REA_EVM_PRLIMIT_COMMAND",
|
||||||
|
"REA_SIGROK_COMMAND",
|
||||||
|
"REA_SIGROK_PRLIMIT_COMMAND",
|
||||||
|
"REA_MITMDUMP_COMMAND",
|
||||||
|
"REA_BROWSER_EXECUTABLE",
|
||||||
|
"REA_BROWSER_NO_SANDBOX",
|
||||||
|
"REA_PWNTOOLS_PYTHON",
|
||||||
|
"REA_PWNTOOLS_MAX_INPUT_BYTES",
|
||||||
|
"REA_PWNDBG_GDB",
|
||||||
|
"REA_PWNDBG_GDBINIT",
|
||||||
|
"REA_PWNDBG_VENV_PATH",
|
||||||
|
"REA_DARWIN_SWIFTC_PATH",
|
||||||
|
"REA_DARWIN_MODULE_CACHE_PATH",
|
||||||
|
"SDKROOT",
|
||||||
|
"REA_SWIFTC_COMPILE_TIMEOUT_MS",
|
||||||
|
"REA_LOG_LEVEL",
|
||||||
|
"REA_REFERENCE_SECRET_PATTERNS_JSON",
|
||||||
"REA_IDA_MCP_CONFIG",
|
"REA_IDA_MCP_CONFIG",
|
||||||
"REA_JADX_MCP_JAR",
|
"REA_JADX_MCP_JAR",
|
||||||
"REA_JADX_HEAP_MIB",
|
"REA_JADX_HEAP_MIB",
|
||||||
|
|||||||
@@ -36,6 +36,37 @@ cliTest(
|
|||||||
REA_TSHARK_COMMAND: join(home, "offline-tshark"),
|
REA_TSHARK_COMMAND: join(home, "offline-tshark"),
|
||||||
REA_CAPINFOS_COMMAND: join(home, "offline-capinfos"),
|
REA_CAPINFOS_COMMAND: join(home, "offline-capinfos"),
|
||||||
REA_TSHARK_PRLIMIT_COMMAND: join(home, "offline-prlimit"),
|
REA_TSHARK_PRLIMIT_COMMAND: join(home, "offline-prlimit"),
|
||||||
|
REA_OBJDUMP_COMMAND: join(home, "offline-objdump"),
|
||||||
|
REA_GDB_COMMAND: join(home, "offline-gdb"),
|
||||||
|
REA_RIZIN_COMMAND: join(home, "offline-rizin"),
|
||||||
|
REA_CUTTER_BRIDGE_DIR: join(home, "cutter-bridge"),
|
||||||
|
REA_WABT_BIN_DIRECTORY: join(home, "wabt"),
|
||||||
|
REA_WAKARU_COMMAND: join(home, "offline-wakaru"),
|
||||||
|
REA_JAVASCRIPT_PRLIMIT_COMMAND: join(home, "javascript-prlimit"),
|
||||||
|
REA_BINWALK_COMMAND: join(home, "offline-binwalk"),
|
||||||
|
REA_UNBLOB_COMMAND: join(home, "offline-unblob"),
|
||||||
|
REA_FIRMWARE_PRLIMIT_COMMAND: join(home, "firmware-prlimit"),
|
||||||
|
REA_EVM_PRLIMIT_COMMAND: join(home, "evm-prlimit"),
|
||||||
|
REA_SIGROK_COMMAND: join(home, "offline-sigrok"),
|
||||||
|
REA_SIGROK_PRLIMIT_COMMAND: join(home, "sigrok-prlimit"),
|
||||||
|
REA_MITMDUMP_COMMAND: join(home, "offline-mitmdump"),
|
||||||
|
REA_BROWSER_EXECUTABLE: join(home, "offline-chromium"),
|
||||||
|
REA_BROWSER_NO_SANDBOX: "false",
|
||||||
|
REA_PWNTOOLS_PYTHON: join(home, "offline-python"),
|
||||||
|
REA_PWNTOOLS_MAX_INPUT_BYTES: "67108864",
|
||||||
|
REA_PWNDBG_GDB: join(home, "pwndbg-gdb"),
|
||||||
|
REA_PWNDBG_GDBINIT: join(home, "pwndbg-gdbinit"),
|
||||||
|
REA_PWNDBG_VENV_PATH: join(home, "pwndbg-venv"),
|
||||||
|
...(process.platform === "darwin"
|
||||||
|
? {}
|
||||||
|
: {
|
||||||
|
REA_DARWIN_SWIFTC_PATH: join(home, "offline-swiftc"),
|
||||||
|
REA_DARWIN_MODULE_CACHE_PATH: join(home, "swift-module-cache"),
|
||||||
|
SDKROOT: join(home, "macos-sdk"),
|
||||||
|
}),
|
||||||
|
REA_SWIFTC_COMPILE_TIMEOUT_MS: "180000",
|
||||||
|
REA_LOG_LEVEL: "warn",
|
||||||
|
REA_REFERENCE_SECRET_PATTERNS_JSON: '["explicit-private-value"]',
|
||||||
REA_ANALYSIS_PROVIDER: "ghidra",
|
REA_ANALYSIS_PROVIDER: "ghidra",
|
||||||
REA_MCP_INPUT_SCHEMA_PROFILE: "compact",
|
REA_MCP_INPUT_SCHEMA_PROFILE: "compact",
|
||||||
REA_MCP_OUTPUT_SCHEMA_PROFILE: "off",
|
REA_MCP_OUTPUT_SCHEMA_PROFILE: "off",
|
||||||
@@ -48,6 +79,9 @@ cliTest(
|
|||||||
...selected,
|
...selected,
|
||||||
CALLER_UNRELATED_SETTING: "do not copy",
|
CALLER_UNRELATED_SETTING: "do not copy",
|
||||||
REA_UNKNOWN_SETTING: "do not copy",
|
REA_UNKNOWN_SETTING: "do not copy",
|
||||||
|
REA_PROCESS_RUN_ID: "do not copy",
|
||||||
|
REA_TOKEN: "do not copy",
|
||||||
|
HOPPER_TARGET_PATH: "do not copy",
|
||||||
};
|
};
|
||||||
const run = () =>
|
const run = () =>
|
||||||
cli.run({
|
cli.run({
|
||||||
@@ -69,13 +103,23 @@ cliTest(
|
|||||||
mcpServers: { rea: { env: selected } },
|
mcpServers: { rea: { env: selected } },
|
||||||
});
|
});
|
||||||
expect(configured).not.toContain("do not copy");
|
expect(configured).not.toContain("do not copy");
|
||||||
|
// A later setup must update a selection rather than retaining the first value.
|
||||||
|
selected.REA_OBJDUMP_COMMAND = join(home, "replacement-objdump");
|
||||||
|
environment.REA_OBJDUMP_COMMAND = selected.REA_OBJDUMP_COMMAND;
|
||||||
|
const updated = await run();
|
||||||
|
expect(updated.exitCode, updated.stdout).toBe(0);
|
||||||
|
const updatedConfiguration = await readFile(config, "utf8");
|
||||||
|
expect(JSON.parse(updatedConfiguration)).toMatchObject({
|
||||||
|
mcpServers: { rea: { env: selected } },
|
||||||
|
});
|
||||||
|
expect(updatedConfiguration).not.toContain("do not copy");
|
||||||
const repeated = await run();
|
const repeated = await run();
|
||||||
expect(repeated.exitCode, repeated.stdout).toBe(0);
|
expect(repeated.exitCode, repeated.stdout).toBe(0);
|
||||||
expect(repeated.json).toMatchObject({
|
expect(repeated.json).toMatchObject({
|
||||||
plannedActions: [],
|
plannedActions: [],
|
||||||
appliedActions: [],
|
appliedActions: [],
|
||||||
});
|
});
|
||||||
expect(await readFile(config, "utf8")).toBe(configured);
|
expect(await readFile(config, "utf8")).toBe(updatedConfiguration);
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|||||||
Reference in new issue
Block a user