rea-agents 1.5.0 → 1.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +144 -58
- package/bridge/ghidra/ReaGhidraBridge.java +2075 -0
- package/bridge/hopper_bridge.py +13 -3
- package/dist/application/AbortablePromise.js +25 -0
- package/dist/application/AnalysisProvider.js +3 -0
- package/dist/application/AnalysisProviderEvaluation.js +60 -0
- package/dist/application/AnalysisProviderRegistry.js +228 -0
- package/dist/application/AnalysisSnapshotCache.js +41 -21
- package/dist/application/AnalysisSnapshotFiles.js +5 -6
- package/dist/application/BinarySession.js +229 -102
- package/dist/application/BrowserEvidence.js +87 -15
- package/dist/application/BrowserObservationService.js +65 -1
- package/dist/application/CapabilityInventory.js +7 -0
- package/dist/application/ClientConfigPath.js +33 -0
- package/dist/application/CompositeProvider.js +20 -8
- package/dist/application/CrossVersionInventory.js +16 -3
- package/dist/application/CrossVersionInvestigation.js +17 -62
- package/dist/application/CrossVersionInvestigationEvidence.js +64 -0
- package/dist/application/CrossVersionInvestigationReplay.js +170 -0
- package/dist/application/DirectAnalysis.js +49 -35
- package/dist/application/Doctor.js +70 -13
- package/dist/application/ElectronEvidence.js +35 -0
- package/dist/application/ElectronObservationPort.js +1 -0
- package/dist/application/ElectronObservationService.js +46 -0
- package/dist/application/EnhancedTools.js +1 -1
- package/dist/application/EvidenceLedger.js +5 -2
- package/dist/application/InvestigationProviders.js +11 -0
- package/dist/application/JavaScriptArtifactAnalysis.js +299 -0
- package/dist/application/JavaScriptArtifactAnalysisTypes.js +1 -0
- package/dist/application/JavaScriptArtifactFiles.js +231 -0
- package/dist/application/JavaScriptArtifactGraphAccumulator.js +54 -0
- package/dist/application/JavaScriptArtifactGraphBuilder.js +101 -0
- package/dist/application/JavaScriptArtifactGraphContext.js +205 -0
- package/dist/application/JavaScriptArtifactGraphDocuments.js +108 -0
- package/dist/application/JavaScriptArtifactGraphEvidence.js +89 -0
- package/dist/application/JavaScriptArtifactGraphFindings.js +271 -0
- package/dist/application/JavaScriptArtifactGraphStructure.js +409 -0
- package/dist/application/JavaScriptArtifactReconstruction.js +74 -0
- package/dist/application/JavaScriptArtifactReconstructionInput.js +99 -0
- package/dist/application/MacHopper.js +20 -4
- package/dist/application/PermissionAuthority.js +30 -0
- package/dist/application/ProcessCaptureLifecycle.js +2 -6
- package/dist/application/ProcessHarness.js +13 -7
- package/dist/application/ProcessSampling.js +59 -8
- package/dist/application/ProjectPermissionStore.js +1 -0
- package/dist/application/ReferenceSourceImport.js +13 -16
- package/dist/application/SessionProviderRouter.js +219 -0
- package/dist/application/Setup.js +153 -70
- package/dist/application/SetupClients.js +8 -5
- package/dist/application/SetupInstallFailure.js +24 -0
- package/dist/application/SetupPlan.js +19 -8
- package/dist/application/SetupSkill.js +20 -3
- package/dist/application/SupportedClients.js +40 -16
- package/dist/application/Uninstall.js +20 -7
- package/dist/application/Upgrade.js +15 -4
- package/dist/application/runtime.js +9 -6
- package/dist/artifacts/AsarArtifactReader.js +23 -3
- package/dist/browser/CdpBrowserProvider.js +158 -53
- package/dist/browser/CdpCaptureCompleteness.js +90 -0
- package/dist/browser/CdpCaptureDocuments.js +180 -21
- package/dist/browser/CdpCaptureEvents.js +342 -43
- package/dist/browser/CdpCaptureValues.js +5 -7
- package/dist/browser/CdpConnection.js +47 -24
- package/dist/browser/CdpElectronInspection.js +330 -0
- package/dist/browser/CdpElectronProvider.js +136 -0
- package/dist/browser/CdpEndpoint.js +77 -5
- package/dist/browser/CdpObservationSession.js +301 -0
- package/dist/browser/CdpPageCapture.js +159 -56
- package/dist/browser/CdpSafeMetadata.js +203 -0
- package/dist/browser/CdpScreenshot.js +101 -0
- package/dist/browser/CdpTargetSession.js +47 -0
- package/dist/browser/CdpWebMcpDiscovery.js +242 -0
- package/dist/browser/ElectronFileScope.js +50 -0
- package/dist/browser/PngVisualDiff.js +177 -0
- package/dist/browser/SensitiveTextCapture.js +25 -0
- package/dist/browser/WebSourceMapFetcher.js +357 -0
- package/dist/catalogIdentity.js +2 -33
- package/dist/cli.js +62 -34
- package/dist/cliBrowserAdvancedCommands.js +170 -0
- package/dist/cliBrowserCommands.js +180 -3
- package/dist/cliCommandNames.js +43 -0
- package/dist/cliElectronCommands.js +115 -0
- package/dist/cliEvidenceCommands.js +4 -3
- package/dist/cliInvestigationCommands.js +17 -9
- package/dist/cliPolicyCommands.js +49 -3
- package/dist/cliProcessCommands.js +3 -2
- package/dist/config.js +58 -7
- package/dist/contracts/browserToolContracts.js +304 -3
- package/dist/contracts/electronToolContracts.js +73 -0
- package/dist/contracts/enhancedInputs.js +2 -2
- package/dist/contracts/providerSelection.js +28 -0
- package/dist/contracts/sessionLifecycleInputs.js +2 -0
- package/dist/contracts/toolContracts.js +24 -20
- package/dist/contracts/toolOutputSchemas.js +117 -22
- package/dist/doctorRuntime.js +6 -0
- package/dist/domain/analysisProfile.js +78 -0
- package/dist/domain/analysisSnapshot.js +92 -46
- package/dist/domain/artifactGraph.js +1 -0
- package/dist/domain/binaryTarget.js +4 -29
- package/dist/domain/browserCompleteness.js +101 -0
- package/dist/domain/browserObservation.js +240 -14
- package/dist/domain/browserSession.js +63 -0
- package/dist/domain/electronObservation.js +162 -0
- package/dist/domain/errors.js +81 -6
- package/dist/domain/evidence.js +44 -5
- package/dist/domain/evidenceBundle.js +9 -7
- package/dist/domain/functionComparison.js +9 -3
- package/dist/domain/functionComparisonNormalization.js +37 -0
- package/dist/domain/functionDossierEvidence.js +4 -1
- package/dist/domain/hopperValues.js +66 -9
- package/dist/domain/investigationWorkspace.js +6 -1
- package/dist/domain/javascriptApplicationEvidenceSchemas.js +361 -0
- package/dist/domain/javascriptApplicationGraph.js +281 -0
- package/dist/domain/javascriptApplicationGraphSchemas.js +132 -0
- package/dist/domain/javascriptAstFingerprint.js +143 -0
- package/dist/domain/javascriptStaticAnalysis.js +358 -0
- package/dist/domain/javascriptStaticAnalysisHelpers.js +264 -0
- package/dist/domain/javascriptStaticAnalysisState.js +17 -0
- package/dist/domain/javascriptStaticAnalysisTypes.js +1 -0
- package/dist/domain/jsonShape.js +125 -0
- package/dist/domain/referenceSourceGraph.js +3 -1
- package/dist/domain/webBundleAnalysis.js +195 -0
- package/dist/domain/webBundleAnalyzer.js +423 -0
- package/dist/domain/webCaptureDiff.js +184 -0
- package/dist/domain/webContentArtifact.js +47 -0
- package/dist/domain/webInventory.js +61 -0
- package/dist/domain/webMcpDiscovery.js +68 -0
- package/dist/domain/webScreenshot.js +114 -0
- package/dist/generatedPackageMetadata.js +2 -2
- package/dist/ghidra/GhidraAnalysisProfile.js +37 -0
- package/dist/ghidra/GhidraClient.js +400 -0
- package/dist/ghidra/GhidraClientTypes.js +1 -0
- package/dist/ghidra/GhidraDefaults.js +20 -0
- package/dist/ghidra/GhidraDiagnostics.js +43 -0
- package/dist/ghidra/GhidraDoctor.js +59 -0
- package/dist/ghidra/GhidraFunctionValues.js +264 -0
- package/dist/ghidra/GhidraInstallation.js +239 -0
- package/dist/ghidra/GhidraInventoryValues.js +217 -0
- package/dist/ghidra/GhidraLauncher.js +139 -0
- package/dist/ghidra/GhidraProvider.js +360 -0
- package/dist/ghidra/GhidraRequestQueue.js +98 -0
- package/dist/ghidra/GhidraResponseBuffer.js +31 -0
- package/dist/ghidra/GhidraResponseRouter.js +24 -0
- package/dist/ghidra/GhidraSessionError.js +39 -0
- package/dist/ghidra/GhidraSessionValues.js +62 -0
- package/dist/ghidra/GhidraSocketConnection.js +46 -0
- package/dist/ghidra/protocol.js +69 -0
- package/dist/hopper/BridgeLauncher.js +21 -57
- package/dist/hopper/HopperAnalysisProfile.js +106 -0
- package/dist/hopper/HopperClient.js +197 -165
- package/dist/hopper/HopperProvider.js +105 -8
- package/dist/hopper/HopperSessionValues.js +27 -0
- package/dist/hopper/HopperSocketConnection.js +31 -0
- package/dist/main.js +36 -31
- package/dist/native/NativeMacOSProvider.js +6 -3
- package/dist/native/NativeMachoInspection.js +21 -6
- package/dist/process/PendingOperations.js +59 -0
- package/dist/process/PrivateRuntimeRoot.js +33 -0
- package/dist/{application → process}/ProcessOwnership.js +40 -20
- package/dist/process/ProviderDeadline.js +95 -0
- package/dist/process/ProviderProcess.js +275 -0
- package/dist/server/createServer.js +8 -0
- package/dist/server/promptCompletion.js +9 -3
- package/dist/server/registerBrowserTools.js +61 -2
- package/dist/server/registerElectronTools.js +36 -0
- package/dist/server/registerEnhancedTools.js +9 -6
- package/dist/server/registerInvestigationTools.js +11 -12
- package/dist/server/registerOfficialTools.js +3 -0
- package/dist/server/registerSessionTools.js +7 -1
- package/package.json +12 -6
- package/scripts/rea.mjs +37 -3
- package/skills/rea-analysis/SKILL.md +19 -9
package/scripts/rea.mjs
CHANGED
|
@@ -1,16 +1,29 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
|
|
3
|
+
import { access } from "node:fs/promises";
|
|
4
|
+
import { dirname, resolve } from "node:path";
|
|
5
|
+
import { fileURLToPath } from "node:url";
|
|
6
|
+
|
|
3
7
|
// Route production MCP before importing Incur. Incur owns registration helpers
|
|
4
|
-
// such as `mcp add`, while only dist/main.js may serve the
|
|
8
|
+
// such as `mcp add`, while only dist/main.js may serve the 78-tool stdio server.
|
|
5
9
|
const args = process.argv.slice(2);
|
|
6
10
|
const { default: packageJson } = await import("../package.json", {
|
|
7
11
|
with: { type: "json" },
|
|
8
12
|
});
|
|
9
13
|
process.env.REA_PACKAGE_VERSION = packageJson.version;
|
|
10
14
|
const isMcpMode =
|
|
11
|
-
args[0] === "--mcp" ||
|
|
15
|
+
args.length === 1 && (args[0] === "--mcp" || args[0] === "mcp");
|
|
16
|
+
const packageRoot = resolve(dirname(fileURLToPath(import.meta.url)), "..");
|
|
17
|
+
const runtimeFiles = isMcpMode
|
|
18
|
+
? ["dist/main.js"]
|
|
19
|
+
: ["dist/cli.js", "dist/cliOutput.js"];
|
|
12
20
|
|
|
13
|
-
if (
|
|
21
|
+
if (!(await compiledRuntimeExists(runtimeFiles))) {
|
|
22
|
+
process.stderr.write(
|
|
23
|
+
`REA's compiled runtime is missing. Run \`npm ci\` in ${packageRoot} to install dependencies and build REA, then restart it. If this is an installed package, reinstall rea-agents.\n`,
|
|
24
|
+
);
|
|
25
|
+
process.exitCode = 1;
|
|
26
|
+
} else if (isMcpMode) {
|
|
14
27
|
const { runEntrypoint } = await import("../dist/main.js");
|
|
15
28
|
await runEntrypoint();
|
|
16
29
|
} else {
|
|
@@ -20,3 +33,24 @@ if (isMcpMode) {
|
|
|
20
33
|
stdout: (output) => process.stdout.write(sanitizeCliOutput(output)),
|
|
21
34
|
});
|
|
22
35
|
}
|
|
36
|
+
|
|
37
|
+
async function compiledRuntimeExists(paths) {
|
|
38
|
+
for (const path of paths) {
|
|
39
|
+
try {
|
|
40
|
+
await access(resolve(packageRoot, path));
|
|
41
|
+
} catch (cause) {
|
|
42
|
+
if (isMissing(cause)) return false;
|
|
43
|
+
throw cause;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
return true;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
function isMissing(cause) {
|
|
50
|
+
return (
|
|
51
|
+
typeof cause === "object" &&
|
|
52
|
+
cause !== null &&
|
|
53
|
+
"code" in cause &&
|
|
54
|
+
cause.code === "ENOENT"
|
|
55
|
+
);
|
|
56
|
+
}
|
|
@@ -2,16 +2,18 @@
|
|
|
2
2
|
name: rea-analysis
|
|
3
3
|
description: Reverse engineer apps and websites with REA. Explore how features work, then build a version tailored to your project.
|
|
4
4
|
metadata:
|
|
5
|
-
version: "
|
|
6
|
-
tool_count:
|
|
5
|
+
version: "14"
|
|
6
|
+
tool_count: 78
|
|
7
7
|
---
|
|
8
8
|
|
|
9
9
|
# REA
|
|
10
10
|
|
|
11
11
|
Use REA when the user wants to understand how an app or feature works, compare app versions, decompile code, or build a similar feature.
|
|
12
12
|
|
|
13
|
-
For a website already open in a user-owned Chrome-family browser,
|
|
14
|
-
`list_browser_targets` and `inspect_web_page` instead of opening a binary.
|
|
13
|
+
For a website already open in a user-owned Chrome-family browser, start with
|
|
14
|
+
`list_browser_targets` and `inspect_web_page` instead of opening a binary. Use
|
|
15
|
+
`analyze_web_bundle`, `observe_web_session`, `discover_webmcp_tools`, capture
|
|
16
|
+
comparison, or screenshot tools only for the corresponding investigation. Ask
|
|
15
17
|
the user to approve the exact page origins and loopback CDP endpoint before the
|
|
16
18
|
first call. Browser observation is disabled unless the operator configured
|
|
17
19
|
`REA_BROWSER_OBSERVE_ENABLED`, `REA_BROWSER_CDP_ENDPOINTS_JSON`, and
|
|
@@ -19,11 +21,19 @@ first call. Browser observation is disabled unless the operator configured
|
|
|
19
21
|
|
|
20
22
|
Browser inspection is passive. Never claim that it clicked, navigated,
|
|
21
23
|
evaluated page JavaScript, captured prior activity, or contained the page's
|
|
22
|
-
network. Query values,
|
|
23
|
-
and WebSocket
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
24
|
+
network. Query values, credentials, cookies, authorization headers, storage
|
|
25
|
+
values, and raw WebSocket or JSON values are deliberately absent. Accessibility
|
|
26
|
+
text, bounded redacted console primitives, value-free JSON/WebSocket shapes,
|
|
27
|
+
script sources, storage key names, source-map fetches, and screenshot pixels
|
|
28
|
+
each require their documented independent opt-in or approval. Treat truncation,
|
|
29
|
+
policy filtering, and attach-window coverage as explicit limitations, and cite
|
|
30
|
+
the returned Evidence v2 IDs. WebMCP declarations are page-declared untrusted;
|
|
31
|
+
REA inventories them but never invokes them.
|
|
32
|
+
|
|
33
|
+
Electron `file://` pages use `list_electron_targets` and
|
|
34
|
+
`inspect_electron_page` with a separate loopback endpoint and canonical
|
|
35
|
+
filesystem-root authority. Never claim that Electron inspection invoked IPC,
|
|
36
|
+
evaluated renderer JavaScript, navigated, or escaped an approved root.
|
|
27
37
|
|
|
28
38
|
## Understand the request
|
|
29
39
|
|