rea-agents 2.5.0 → 3.1.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 +20 -12
- package/bridge/ghidra/ReaGhidraBridge.java +477 -4
- package/bridge/hopper_bridge.py +54 -4
- package/dist/application/AnalysisContextQueries.js +142 -0
- package/dist/application/AnalysisSnapshotCache.js +4 -2
- package/dist/application/ApplicationWorkflowEvidenceResolver.js +19 -11
- package/dist/application/ArtifactInventory/policy.js +17 -0
- package/dist/application/ArtifactInventory/reader.js +1 -4
- package/dist/application/ArtifactInventory/scanCanonical.js +0 -3
- package/dist/application/ArtifactInventory/scanReader.js +7 -7
- package/dist/application/ArtifactInventory/types.js +1 -5
- package/dist/application/BinarySession.js +19 -20
- package/dist/application/BinarySessionComposition.js +21 -0
- package/dist/application/BinarySessionRecords.js +106 -10
- package/dist/application/BinarySessionStatus.js +11 -5
- package/dist/application/BrowserEvidence.js +3 -5
- package/dist/application/CapabilityClientRequirements.js +26 -0
- package/dist/application/CapabilityInventory.js +140 -55
- package/dist/application/ClientRegistrationStatus.js +4 -1
- package/dist/application/CrossVersionInventory.js +7 -6
- package/dist/application/DirectAnalysis.js +6 -2
- package/dist/application/ElectronActiveEvidence.js +55 -0
- package/dist/application/ElectronActiveObservationPort.js +1 -0
- package/dist/application/ElectronActiveObservationService.js +81 -0
- package/dist/application/EnhancedTools.js +49 -17
- package/dist/application/EvidenceBundleCommands.js +5 -1
- package/dist/application/EvidenceLedger.js +53 -17
- package/dist/application/JavaScriptArtifactAnalysis.js +13 -4
- package/dist/application/JavaScriptReplayPermission.js +1 -1
- package/dist/application/JavaScriptReplayService.js +23 -15
- package/dist/application/LazyAnalysisProvider.js +77 -0
- package/dist/application/LoopbackReplay.js +1 -1
- package/dist/application/ManagedRuntimeCorrelationService.js +9 -5
- package/dist/application/NativeApiInspection.js +80 -0
- package/dist/application/NodeRuntimeCharacterizationService.js +8 -9
- package/dist/application/ProcessCaptureLifecycle.js +5 -0
- package/dist/application/ProcessCli.js +2 -1
- package/dist/application/ProcessHarness.js +8 -3
- package/dist/application/ProcessNormalization.js +2 -1
- package/dist/application/ProjectPermissionStore.js +1 -0
- package/dist/application/ReferenceSourceImport.js +2 -2
- package/dist/application/SessionProviderRouter.js +6 -6
- package/dist/application/SetupClientConfiguration.js +10 -3
- package/dist/application/WindowsCapabilities.js +5 -4
- package/dist/application/runtime.js +26 -9
- package/dist/artifacts/ArtifactProvider.js +8 -10
- package/dist/artifacts/SafeOutputTree.js +7 -8
- package/dist/browser/CdpCaptureStorageFingerprints.js +10 -7
- package/dist/browser/CdpElectronInspection.js +3 -1
- package/dist/browser/JavaScriptRuntimeScope.js +5 -0
- package/dist/browser/PlaywrightBrowserScenarioProvider.js +8 -2
- package/dist/browser/PlaywrightElectronActiveActions.js +324 -0
- package/dist/browser/PlaywrightElectronActiveProvider.js +294 -0
- package/dist/browser/PlaywrightScenarioBrowser.js +4 -4
- package/dist/browser/PlaywrightScenarioSession.js +4 -4
- package/dist/browser/SensitiveTextCapture.js +1 -1
- package/dist/browser/V8InspectorCaptureProjection.js +1 -0
- package/dist/browser/V8InspectorProvider.js +3 -3
- package/dist/catalogIdentity.js +15 -9
- package/dist/cli/artifactCommands.js +5 -3
- package/dist/cli/coreAnalysisCommands.js +41 -0
- package/dist/cli/managedCommands.js +1 -1
- package/dist/cliApplicationCommands.js +2 -2
- package/dist/cliBrowserAdvancedCommands.js +11 -5
- package/dist/cliBrowserCommands.js +14 -7
- package/dist/cliCommandNames.js +2 -0
- package/dist/cliElectronCommands.js +46 -4
- package/dist/cliJavaScriptRuntimeCommands.js +14 -6
- package/dist/cliObservationOptions.js +4 -0
- package/dist/cliPolicyCommands.js +1 -0
- package/dist/config/browserScenario.js +77 -0
- package/dist/config/electronAutomation.js +35 -0
- package/dist/config/environment.js +6 -0
- package/dist/config/javascriptReplay.js +41 -0
- package/dist/config/managedRuntime.js +25 -0
- package/dist/config/parseConfig.js +56 -200
- package/dist/config/parsers.js +10 -1
- package/dist/config/passiveObservation.js +157 -0
- package/dist/config/processCapture.js +47 -0
- package/dist/contracts/applicationToolContracts.js +2 -5
- package/dist/contracts/applicationWorkflowInputContracts.js +86 -96
- package/dist/contracts/artifactToolContracts.js +35 -37
- package/dist/contracts/browserToolContracts.js +2 -2
- package/dist/contracts/electronToolContracts.js +30 -1
- package/dist/contracts/enhancedInputs.js +21 -27
- package/dist/contracts/functionWorkflowToolContracts.js +29 -0
- package/dist/contracts/managedToolContracts.js +4 -9
- package/dist/contracts/managedWorkflowExamples.js +12 -9
- package/dist/contracts/managedWorkflowToolContracts.js +30 -27
- package/dist/contracts/nativeToolContracts.js +2 -3
- package/dist/contracts/promptContracts.js +14 -15
- package/dist/contracts/sessionToolSchemas.js +61 -0
- package/dist/contracts/toolContractExamples.js +4 -0
- package/dist/contracts/toolContractHelpers.js +23 -0
- package/dist/contracts/toolContracts.js +12 -67
- package/dist/contracts/toolEffects.js +19 -0
- package/dist/contracts/toolOutputSchemaGroups.js +66 -11
- package/dist/contracts/toolOutputSchemaPrimitives.js +76 -26
- package/dist/contracts/toolSchemaMetadata.js +128 -0
- package/dist/doctorRuntime.js +1 -1
- package/dist/domain/analysisErrorPresentation.js +8 -2
- package/dist/domain/analysisErrorProjection.js +1 -0
- package/dist/domain/androidApplication.js +2 -0
- package/dist/domain/appleApplication.js +2 -0
- package/dist/domain/binaryTarget.js +7 -5
- package/dist/domain/binaryTargetTypes.js +1 -0
- package/dist/domain/browserCaptureComparison.js +21 -69
- package/dist/domain/browserObservation.js +22 -9
- package/dist/domain/bytecodeProvider.js +177 -0
- package/dist/domain/callPath.js +3 -2
- package/dist/domain/conformancePackage.js +169 -0
- package/dist/domain/conformanceReplay.js +104 -0
- package/dist/domain/conformanceTrustGate.js +328 -0
- package/dist/domain/customProtocolCapture.js +137 -0
- package/dist/domain/electronActiveObservation.js +277 -0
- package/dist/domain/electronObservation.js +15 -11
- package/dist/domain/electronStaticAnalysisValues.js +4 -1
- package/dist/domain/eventProcessTree.js +217 -0
- package/dist/domain/evidenceBundle.js +47 -0
- package/dist/domain/functionComparisonNormalization.js +15 -8
- package/dist/domain/functionDossierEvidence.js +9 -4
- package/dist/domain/hopperStartupFailure.js +1 -1
- package/dist/domain/hopperValues.js +68 -68
- package/dist/domain/inputIssueProjection.js +11 -2
- package/dist/domain/investigationWorkspace.js +16 -15
- package/dist/domain/javascriptExportShapeComparisonSchemas.js +2 -2
- package/dist/domain/javascriptReplay.js +79 -63
- package/dist/domain/javascriptRuntimeObservation.js +1 -0
- package/dist/domain/javascriptRuntimeReconciliationActive.js +89 -0
- package/dist/domain/javascriptRuntimeReconciliationGraph.js +11 -10
- package/dist/domain/javascriptRuntimeReconciliationMatching.js +57 -49
- package/dist/domain/javascriptRuntimeReconciliationParsing.js +5 -1
- package/dist/domain/javascriptRuntimeReconciliationResult.js +21 -14
- package/dist/domain/javascriptRuntimeReconciliationSchemas.js +1 -1
- package/dist/domain/javascriptSemanticAnalysis.js +8 -12
- package/dist/domain/javascriptSourceParser.js +15 -0
- package/dist/domain/javascriptStaticAnalysis.js +8 -12
- package/dist/domain/knownPageCoverage.js +15 -7
- package/dist/domain/mobileApplicationInvestigation.js +159 -0
- package/dist/domain/nativeApiBoundary.js +138 -0
- package/dist/domain/nodeRuntimeCharacterization.js +14 -13
- package/dist/domain/objcSwiftMetadata.js +150 -0
- package/dist/domain/packageAnalysis.js +123 -0
- package/dist/domain/peInspection.js +196 -0
- package/dist/domain/processCaptureReactiveValidation.js +8 -3
- package/dist/domain/processCaptureValidation.js +7 -3
- package/dist/domain/processComparison.js +12 -7
- package/dist/domain/processObservation.js +5 -6
- package/dist/domain/processReactiveMatching.js +14 -7
- package/dist/domain/processReactiveTransition.js +9 -3
- package/dist/domain/processScenario.js +6 -3
- package/dist/domain/processTraceComparison.js +3 -2
- package/dist/domain/protocolCapture.js +245 -0
- package/dist/domain/reconstructionReadinessSchemas.js +30 -2
- package/dist/domain/referenceSourceImportParsing.js +2 -2
- package/dist/domain/replayMachineRuntime.js +5 -3
- package/dist/domain/sourceToBundleComparison.js +2 -2
- package/dist/domain/sourceToBundleComparisonSchemas.js +8 -8
- package/dist/domain/sourceToBundleSignals.js +7 -1
- package/dist/domain/staticRuntimeCorrelation.js +7 -5
- package/dist/domain/webBundleAnalysis.js +14 -14
- package/dist/domain/webCaptureDiff.js +15 -12
- package/dist/dotnet/ManagedNativeBoundaryInspector.js +2 -3
- package/dist/dotnet/ManagedStaticProvider.js +34 -5
- package/dist/generatedMcpToolCatalog.js +37 -0
- package/dist/generatedPackageMetadata.js +4 -4
- package/dist/ghidra/GhidraClient.js +1 -1
- package/dist/ghidra/GhidraClientStartup.js +1 -1
- package/dist/ghidra/GhidraDefaults.js +1 -1
- package/dist/ghidra/GhidraFunctionValues.js +44 -16
- package/dist/ghidra/GhidraInventoryValues.js +57 -47
- package/dist/ghidra/GhidraProvider.js +18 -10
- package/dist/ghidra/GhidraProviderCapabilities.js +45 -39
- package/dist/ghidra/GhidraSocketConnection.js +1 -1
- package/dist/ghidra/protocol.js +19 -42
- package/dist/hopper/BridgeLauncher.js +3 -1
- package/dist/hopper/HopperAnalysisProfile.js +2 -4
- package/dist/hopper/HopperCleanup.js +5 -6
- package/dist/hopper/HopperClient.js +27 -3
- package/dist/hopper/HopperProvider.js +42 -44
- package/dist/hopper/HopperRequestQueue.js +32 -4
- package/dist/hopper/HopperResponseStream.js +2 -2
- package/dist/hopper/LinuxPrivateDisplayProbe.js +16 -10
- package/dist/hopper/protocol.js +63 -21
- package/dist/main/reload.js +1 -6
- package/dist/main/state.js +0 -14
- package/dist/main/transport.js +31 -41
- package/dist/main.js +17 -13
- package/dist/mcpDoctor.js +4 -26
- package/dist/mcpStartupPolicy.js +14 -0
- package/dist/process/PrivateRuntimeRoot.js +17 -0
- package/dist/process/ProcessOwnership.js +64 -128
- package/dist/process/ProcessOwnershipIdentity.js +13 -0
- package/dist/process/ProcessOwnershipObservation.js +88 -0
- package/dist/process/ProcessOwnershipProcessTree.js +22 -0
- package/dist/process/ProviderDeadline.js +8 -12
- package/dist/process/WindowsAuthority.js +32 -0
- package/dist/reference/ReferenceSourceReader.js +3 -3
- package/dist/reference/ReferenceSourceReaderEntries.js +2 -2
- package/dist/replay/JavaScriptReplayWorker.js +95 -11
- package/dist/replay/JavaScriptReplayWorkerTypes.js +1 -0
- package/dist/replay/LinuxJavaScriptReplayRunner.js +10 -15
- package/dist/replay/ReplayOutcome.js +26 -15
- package/dist/replay/ReplayWorkerProtocol.js +34 -29
- package/dist/server/createServer.js +101 -144
- package/dist/server/mcpClientMetadata.js +32 -0
- package/dist/server/registerApplicationTools/characterization.js +6 -13
- package/dist/server/registerApplicationTools/compareExportShapes.js +2 -7
- package/dist/server/registerApplicationTools/compareSourceToBundle.js +2 -7
- package/dist/server/registerApplicationTools/compareVersions.js +3 -8
- package/dist/server/registerApplicationTools/controlledReplay.js +6 -11
- package/dist/server/registerApplicationTools/coverage.js +13 -19
- package/dist/server/registerApplicationTools/obligationLedger.js +1 -6
- package/dist/server/registerApplicationTools/readiness.js +1 -6
- package/dist/server/registerApplicationTools/traceFeature.js +3 -8
- package/dist/server/registerApplicationTools/traceSemantics.js +1 -6
- package/dist/server/registerArtifactComparisonTool.js +12 -16
- package/dist/server/registerBrowserScenarioTool.js +1 -6
- package/dist/server/registerBrowserTools.js +37 -79
- package/dist/server/registerBundleComparisonTool.js +10 -14
- package/dist/server/registerCloseLifecycleTool.js +6 -14
- package/dist/server/registerElectronTools.js +30 -47
- package/dist/server/registerEnhancedTools.js +124 -122
- package/dist/server/registerEvidenceResources.js +50 -101
- package/dist/server/registerEvidenceTools.js +5 -9
- package/dist/server/registerFunctionComparisonTool.js +11 -15
- package/dist/server/registerInvestigationTools.js +42 -59
- package/dist/server/registerJavaScriptApplicationGraphResource.js +0 -4
- package/dist/server/registerJavaScriptRuntimeObservationTools.js +13 -27
- package/dist/server/registerManagedWorkflowTools/compareManagedMembers.js +4 -9
- package/dist/server/registerManagedWorkflowTools/contract.js +2 -3
- package/dist/server/registerManagedWorkflowTools/importManagedReconstruction.js +3 -8
- package/dist/server/registerManagedWorkflowTools/planManagedRuntimeCorrelation.js +3 -8
- package/dist/server/registerManagedWorkflowTools/projectManagedApplicationGraph.js +8 -13
- package/dist/server/registerManagedWorkflowTools/verifyManagedNativeBoundaries.js +4 -9
- package/dist/server/registerOfficialTools.js +8 -9
- package/dist/server/registerProcessComparisonTool.js +19 -24
- package/dist/server/registerReconstructionObligationLedgerResource.js +0 -7
- package/dist/server/registerReconstructionReadinessResource.js +0 -7
- package/dist/server/registerReplayMachineTool.js +4 -10
- package/dist/server/registerSessionRecordTools.js +146 -47
- package/dist/server/registerSessionStatusTool.js +14 -29
- package/dist/server/registerSessionTools.js +45 -41
- package/dist/server/sessionAvailabilityPolicy.js +2 -1
- package/dist/server/sessionToolPolicies.js +1 -5
- package/dist/server/toolRegistrationOptions.js +4 -177
- package/dist/server/toolResult.js +14 -18
- package/package.json +35 -16
- package/scripts/electron-active-hook-boundaries.cjs +394 -0
- package/scripts/electron-active-hook.cjs +501 -0
- package/skills/reverse-engineer-anything/SKILL.md +10 -3
- package/dist/server/DynamicToolAvailability.js +0 -70
- package/dist/server/toolInputValidation.js +0 -77
|
@@ -1,182 +1,9 @@
|
|
|
1
|
-
import {
|
|
2
|
-
/** Project the
|
|
1
|
+
import { toolInputSchemaWithMetadata } from "../contracts/toolSchemaMetadata.js";
|
|
2
|
+
/** Project the canonical Zod contracts directly into SDK registration. */
|
|
3
3
|
export const toolRegistrationOptions = (contract) => ({
|
|
4
4
|
title: contract.title,
|
|
5
5
|
description: contract.description,
|
|
6
|
-
inputSchema:
|
|
7
|
-
outputSchema:
|
|
6
|
+
inputSchema: toolInputSchemaWithMetadata(contract),
|
|
7
|
+
outputSchema: contract.outputSchema,
|
|
8
8
|
annotations: contract.annotations,
|
|
9
9
|
});
|
|
10
|
-
/**
|
|
11
|
-
* Advertise the exact Zod contract while leaving validation to REA's adapter.
|
|
12
|
-
* The SDK otherwise converts validation failures to text-only JSON-RPC errors
|
|
13
|
-
* before REA can return its stable structured error envelope.
|
|
14
|
-
*/
|
|
15
|
-
const advertisedInputSchema = (schema) => ({
|
|
16
|
-
"~standard": {
|
|
17
|
-
version: 1,
|
|
18
|
-
vendor: "rea",
|
|
19
|
-
validate: (input) => ({ value: input }),
|
|
20
|
-
jsonSchema: {
|
|
21
|
-
input: () => describeProperties(closeObjectSchemas(inputJsonSchema(schema))),
|
|
22
|
-
output: () => describeProperties(closeObjectSchemas(inputJsonSchema(schema))),
|
|
23
|
-
},
|
|
24
|
-
},
|
|
25
|
-
});
|
|
26
|
-
const advertisedOutputSchema = (schema) => {
|
|
27
|
-
const standard = schema["~standard"];
|
|
28
|
-
const converter = standard.jsonSchema?.output;
|
|
29
|
-
if (converter === undefined)
|
|
30
|
-
throw new TypeError("Tool output schema does not expose Standard JSON Schema");
|
|
31
|
-
return {
|
|
32
|
-
"~standard": {
|
|
33
|
-
...standard,
|
|
34
|
-
jsonSchema: {
|
|
35
|
-
input: () => describeRootProperties(closeObjectSchemas(converter({ target: "draft-2020-12" }))),
|
|
36
|
-
output: () => describeRootProperties(closeObjectSchemas(converter({ target: "draft-2020-12" }))),
|
|
37
|
-
},
|
|
38
|
-
},
|
|
39
|
-
};
|
|
40
|
-
};
|
|
41
|
-
const inputJsonSchema = (schema) => {
|
|
42
|
-
const converter = schema["~standard"].jsonSchema?.input;
|
|
43
|
-
if (converter === undefined)
|
|
44
|
-
throw new TypeError("Tool input schema does not expose Standard JSON Schema");
|
|
45
|
-
return converter({ target: "draft-2020-12" });
|
|
46
|
-
};
|
|
47
|
-
/** Close fixed-shape JSON Schema objects while preserving explicit maps. */
|
|
48
|
-
export const closeObjectSchemas = (value) => {
|
|
49
|
-
const closed = Object.fromEntries(Object.entries(value).map(([key, child]) => [key, closeSchemaValue(child)]));
|
|
50
|
-
return value.type === "object" &&
|
|
51
|
-
isObject(value.properties) &&
|
|
52
|
-
value.additionalProperties === undefined
|
|
53
|
-
? { ...closed, additionalProperties: false }
|
|
54
|
-
: closed;
|
|
55
|
-
};
|
|
56
|
-
const closeSchemaValue = (value) => {
|
|
57
|
-
if (Array.isArray(value))
|
|
58
|
-
return value.map(closeSchemaValue);
|
|
59
|
-
if (!isObject(value))
|
|
60
|
-
return value;
|
|
61
|
-
return closeObjectSchemas(value);
|
|
62
|
-
};
|
|
63
|
-
const describeProperties = (value) => Object.fromEntries(Object.entries(value).map(([key, child]) => {
|
|
64
|
-
if (key !== "properties" || typeof child !== "object" || child === null)
|
|
65
|
-
return [key, describeValue(child)];
|
|
66
|
-
return [
|
|
67
|
-
key,
|
|
68
|
-
Object.fromEntries(Object.entries(child).map(([property, schema]) => [
|
|
69
|
-
property,
|
|
70
|
-
isObject(schema) && typeof schema.description !== "string"
|
|
71
|
-
? {
|
|
72
|
-
...describeProperties(schema),
|
|
73
|
-
description: fallbackPropertyDescription(property),
|
|
74
|
-
}
|
|
75
|
-
: describeValue(schema),
|
|
76
|
-
])),
|
|
77
|
-
];
|
|
78
|
-
}));
|
|
79
|
-
const describeValue = (value) => {
|
|
80
|
-
if (Array.isArray(value))
|
|
81
|
-
return value.map(describeValue);
|
|
82
|
-
return isObject(value) ? describeProperties(value) : value;
|
|
83
|
-
};
|
|
84
|
-
const describeRootProperties = (value) => {
|
|
85
|
-
const properties = value.properties;
|
|
86
|
-
if (!isObject(properties))
|
|
87
|
-
return { ...value };
|
|
88
|
-
return {
|
|
89
|
-
...value,
|
|
90
|
-
properties: Object.fromEntries(Object.entries(properties).map(([property, schema]) => [
|
|
91
|
-
property,
|
|
92
|
-
isObject(schema) && typeof schema.description !== "string"
|
|
93
|
-
? {
|
|
94
|
-
...schema,
|
|
95
|
-
description: fallbackPropertyDescription(property),
|
|
96
|
-
}
|
|
97
|
-
: schema,
|
|
98
|
-
])),
|
|
99
|
-
};
|
|
100
|
-
};
|
|
101
|
-
const PROPERTY_DESCRIPTIONS = {
|
|
102
|
-
addresses: "Ordered provider-normalized procedure addresses to analyze.",
|
|
103
|
-
approved: "Explicit operator approval to perform this operation.",
|
|
104
|
-
after: "The later or right-hand observation to compare.",
|
|
105
|
-
before: "The earlier or left-hand observation to compare.",
|
|
106
|
-
boundary_id: "Exact reconstruction boundary identifier to evaluate.",
|
|
107
|
-
case_sensitive: "Whether text matching distinguishes uppercase and lowercase.",
|
|
108
|
-
cdp_endpoint: "Approved literal loopback Chrome DevTools Protocol endpoint.",
|
|
109
|
-
comment: "Exact analyst comment text to write.",
|
|
110
|
-
comparisons: "Validated comparison Evidence records to aggregate.",
|
|
111
|
-
coverage: "Exact reconstruction-coverage commitment to verify.",
|
|
112
|
-
detail: "Requested response detail level.",
|
|
113
|
-
direction: "Direction in which to traverse or compare relationships.",
|
|
114
|
-
document: "Exact provider document or program identity.",
|
|
115
|
-
error: "Structured, caller-actionable error when the operation fails.",
|
|
116
|
-
evidence: "Evidence v2 record produced by this operation.",
|
|
117
|
-
evidence_id: "Stable identifier of the recorded Evidence v2 observation.",
|
|
118
|
-
evidence_uri: "Session resource URI for the recorded Evidence v2 observation.",
|
|
119
|
-
executable: "Approved absolute path of the executable to run.",
|
|
120
|
-
format: "Declared input artifact format.",
|
|
121
|
-
name: "Exact name used by this operation.",
|
|
122
|
-
pattern: "Text or bounded pattern used to filter matching results.",
|
|
123
|
-
phase: "Current plan or execution phase of the operation.",
|
|
124
|
-
plan: "Content-bound execution plan and its approval commitment.",
|
|
125
|
-
query: "Non-empty feature or text query to investigate.",
|
|
126
|
-
question: "Concrete unresolved question to retain for later investigation.",
|
|
127
|
-
result: "Primary structured result returned by this operation.",
|
|
128
|
-
left: "Left-hand input used for comparison or differential execution.",
|
|
129
|
-
limit: "Maximum number of results to return in this page.",
|
|
130
|
-
limits: "Bounded resource-consumption and result-size limits for this operation.",
|
|
131
|
-
mode: "Operation mode that selects the requested behavior.",
|
|
132
|
-
offset: "Zero-based index of the first result to return.",
|
|
133
|
-
overwrite: "Whether an existing destination may be replaced.",
|
|
134
|
-
path: "Local filesystem path used by this operation.",
|
|
135
|
-
provider_id: "Exact deep-analysis provider ID, or automatic selection when omitted.",
|
|
136
|
-
right: "Right-hand input used for comparison or differential execution.",
|
|
137
|
-
schema_version: "Version of this structured result schema.",
|
|
138
|
-
source_evidence: "Evidence records supporting the prepared source transformation.",
|
|
139
|
-
status: "Current lifecycle or verification status.",
|
|
140
|
-
summary: "Concise evidence-backed summary of the result.",
|
|
141
|
-
symbols: "Ordered bounded Swift symbols to demangle.",
|
|
142
|
-
target_id: "Exact authorized CDP target identifier.",
|
|
143
|
-
unknown_id: "Exact residual-unknown identifier.",
|
|
144
|
-
unknown_registry_approved: "Explicit approval to record bounded residual uncertainty in the session registry.",
|
|
145
|
-
workspace_path: "Approved local path of the persistent investigation workspace.",
|
|
146
|
-
};
|
|
147
|
-
const fallbackPropertyDescription = (property) => {
|
|
148
|
-
const explicit = PROPERTY_DESCRIPTIONS[property];
|
|
149
|
-
if (explicit !== undefined)
|
|
150
|
-
return explicit;
|
|
151
|
-
const words = property.replaceAll("_", " ");
|
|
152
|
-
if (property.endsWith("_approved"))
|
|
153
|
-
return `Explicit operator approval for ${words.slice(0, -9)}.`;
|
|
154
|
-
if (property.endsWith("_offset"))
|
|
155
|
-
return `Zero-based index of the first ${words.slice(0, -7)} to return.`;
|
|
156
|
-
if (property.endsWith("_limit"))
|
|
157
|
-
return `Maximum number of ${words.slice(0, -6)} entries to return.`;
|
|
158
|
-
if (property.startsWith("max_"))
|
|
159
|
-
return `Maximum permitted ${words.slice(4)} for this operation.`;
|
|
160
|
-
if (property.startsWith("include_"))
|
|
161
|
-
return `Whether to include ${words.slice(8)} in the result.`;
|
|
162
|
-
if (property.startsWith("expected_"))
|
|
163
|
-
return `Expected ${words.slice(9)} used to reject stale or mismatched input.`;
|
|
164
|
-
if (property.endsWith("_sha256"))
|
|
165
|
-
return `Exact SHA-256 digest of ${words.slice(0, -7)}.`;
|
|
166
|
-
if (property.endsWith("_evidence_id"))
|
|
167
|
-
return `Exact Evidence v2 identifier for the ${words.slice(0, -12)} observation.`;
|
|
168
|
-
if (property.endsWith("_evidence_ids"))
|
|
169
|
-
return `Ordered Evidence v2 identifiers for the ${words.slice(0, -13)} observations.`;
|
|
170
|
-
if (property.endsWith("_path"))
|
|
171
|
-
return `Local filesystem path for ${words.slice(0, -5)}.`;
|
|
172
|
-
if (property.endsWith("_uri"))
|
|
173
|
-
return `Canonical URI for ${words.slice(0, -4)}.`;
|
|
174
|
-
if (property.endsWith("_bytes"))
|
|
175
|
-
return `Bounded byte count for ${words.slice(0, -6)}.`;
|
|
176
|
-
if (property.endsWith("_root") || property.endsWith("_roots"))
|
|
177
|
-
return `Approved canonical filesystem ${words}.`;
|
|
178
|
-
if (property.startsWith("is_") || property.startsWith("has_"))
|
|
179
|
-
return `Whether ${words}.`;
|
|
180
|
-
return `Value for ${words}.`;
|
|
181
|
-
};
|
|
182
|
-
const isObject = (value) => typeof value === "object" && value !== null && !Array.isArray(value);
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { projectAnalysisError } from "../domain/errors.js";
|
|
2
2
|
/**
|
|
3
3
|
* Translate an application result into MCP text content.
|
|
4
4
|
* Error tags and safe messages remain visible while underlying causes, process
|
|
@@ -24,31 +24,23 @@ const errorResult = (error) => {
|
|
|
24
24
|
const successResult = (value, contract, options) => {
|
|
25
25
|
const candidate = compactEvidence(value, options.evidenceResultProjection) ??
|
|
26
26
|
(contract.kind === "session" ? { result: value } : value);
|
|
27
|
-
const parsed = contract.outputSchema.safeParse(candidate);
|
|
28
|
-
if (!parsed.success) {
|
|
29
|
-
const structuredContent = {
|
|
30
|
-
error: projectAnalysisError(new AnalysisOutputError(contract.name, "output does not match the tool contract")),
|
|
31
|
-
};
|
|
32
|
-
return {
|
|
33
|
-
content: [
|
|
34
|
-
{
|
|
35
|
-
type: "text",
|
|
36
|
-
text: JSON.stringify(structuredContent),
|
|
37
|
-
},
|
|
38
|
-
],
|
|
39
|
-
structuredContent,
|
|
40
|
-
isError: true,
|
|
41
|
-
};
|
|
42
|
-
}
|
|
43
27
|
return {
|
|
44
28
|
content: [
|
|
45
29
|
{
|
|
46
30
|
type: "text",
|
|
47
31
|
text: JSON.stringify(options.evidenceTextProjection === undefined
|
|
48
|
-
?
|
|
32
|
+
? candidate
|
|
49
33
|
: (compactEvidence(value, options.evidenceTextProjection) ??
|
|
50
34
|
options.evidenceTextProjection)),
|
|
51
35
|
},
|
|
36
|
+
...(hasResourceLinks(value, contract, options)
|
|
37
|
+
? [
|
|
38
|
+
{
|
|
39
|
+
type: "text",
|
|
40
|
+
text: "Full detail is available through MCP resources/read. Copy the opaque URI exactly. In Codex, call read_mcp_resource.",
|
|
41
|
+
},
|
|
42
|
+
]
|
|
43
|
+
: []),
|
|
52
44
|
...evidenceResourceLinks(value, contract.kind === "session" ||
|
|
53
45
|
options.evidenceResourcesAvailable === true),
|
|
54
46
|
...(options.resourceLinks ?? []).map((resource) => ({
|
|
@@ -60,6 +52,10 @@ const successResult = (value, contract, options) => {
|
|
|
60
52
|
structuredContent: candidate,
|
|
61
53
|
};
|
|
62
54
|
};
|
|
55
|
+
const hasResourceLinks = (value, contract, options) => options.resourceLinks !== undefined && options.resourceLinks.length > 0
|
|
56
|
+
? true
|
|
57
|
+
: evidenceResourceLinks(value, contract.kind === "session" ||
|
|
58
|
+
options.evidenceResourcesAvailable === true).length > 0;
|
|
63
59
|
const compactEvidence = (value, resultProjection) => {
|
|
64
60
|
if (typeof value !== "object" ||
|
|
65
61
|
value === null ||
|
package/package.json
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "rea-agents",
|
|
3
|
-
"
|
|
3
|
+
"mcpName": "io.github.morluto/rea",
|
|
4
|
+
"version": "3.1.0",
|
|
4
5
|
"description": "Reverse engineer anything from your terminal or agent with one CLI and MCP server.",
|
|
5
6
|
"license": "MIT",
|
|
6
7
|
"repository": {
|
|
@@ -43,6 +44,8 @@
|
|
|
43
44
|
"bridge/hopper_bridge.py",
|
|
44
45
|
"bridge/ghidra/ReaGhidraBridge.java",
|
|
45
46
|
"scripts/rea.mjs",
|
|
47
|
+
"scripts/electron-active-hook.cjs",
|
|
48
|
+
"scripts/electron-active-hook-boundaries.cjs",
|
|
46
49
|
"scripts/hopper-demo-x11.py",
|
|
47
50
|
"scripts/prepack.mjs",
|
|
48
51
|
"scripts/prepare.mjs",
|
|
@@ -54,16 +57,21 @@
|
|
|
54
57
|
"deps:check": "node scripts/check-dependency-install.mjs",
|
|
55
58
|
"metadata:generate": "node scripts/generate-package-metadata.mjs",
|
|
56
59
|
"metadata:check": "node scripts/generate-package-metadata.mjs --check",
|
|
57
|
-
"
|
|
60
|
+
"mcp-registry:check": "node scripts/verify-mcp-registry-metadata.mjs",
|
|
61
|
+
"mcp-catalog:generate": "npm run build:cached && node scripts/generate-mcp-tool-catalog.mjs",
|
|
62
|
+
"mcp-catalog:check": "node scripts/generate-mcp-tool-catalog.mjs --check",
|
|
63
|
+
"prebuild": "npm run deps:check && npm run metadata:check && node scripts/clean-build-output.mjs",
|
|
58
64
|
"build": "tsc -p tsconfig.build.json",
|
|
59
65
|
"precheck": "npm run deps:check",
|
|
60
66
|
"check": "turbo run typecheck lint format:check knip metadata:check",
|
|
61
67
|
"precheck:fast": "npm run deps:check",
|
|
62
68
|
"check:fast": "turbo run typecheck lint",
|
|
69
|
+
"precheck:changed": "npm run deps:check",
|
|
70
|
+
"check:changed": "turbo run typecheck lint && npm run test:changed",
|
|
63
71
|
"precheck:test": "npm run deps:check",
|
|
64
72
|
"check:test": "turbo run typecheck lint format:check knip metadata:check test:run",
|
|
65
73
|
"precheck:pr": "npm run deps:check",
|
|
66
|
-
"check:pr": "turbo run typecheck lint format:check knip metadata:check test:run docs:check
|
|
74
|
+
"check:pr": "turbo run typecheck lint format:check knip metadata:check test:run && npm run docs:check",
|
|
67
75
|
"precheck:ci": "npm run deps:check",
|
|
68
76
|
"check:ci": "turbo run typecheck lint format:check knip metadata:check jscpd scan:todos",
|
|
69
77
|
"build:cached": "turbo run build",
|
|
@@ -76,32 +84,42 @@
|
|
|
76
84
|
"jscpd": "jscpd src/ tests/",
|
|
77
85
|
"scan:todos": "node scripts/scan-todos.mjs",
|
|
78
86
|
"start": "node scripts/rea.mjs mcp",
|
|
79
|
-
"
|
|
80
|
-
"test": "vitest run",
|
|
81
|
-
"test:run": "vitest run",
|
|
87
|
+
"test": "node scripts/run-exclusive.mjs test npm run test:with-build",
|
|
88
|
+
"test:with-build": "npm run build:cached && vitest run",
|
|
89
|
+
"test:run": "node scripts/run-exclusive.mjs test vitest run",
|
|
90
|
+
"test:local": "node scripts/run-exclusive.mjs test vitest run --changed --passWithNoTests --maxWorkers=1",
|
|
82
91
|
"pretest:fast": "npm run build:cached",
|
|
83
|
-
"test:fast": "vitest run --project
|
|
92
|
+
"test:fast": "vitest run --project domain --project services --project adapters --project composition --project boundary --project mcp-boundary --project conformance",
|
|
93
|
+
"pretest:boundary": "npm run build:cached",
|
|
94
|
+
"test:boundary": "vitest run --project boundary --project mcp-boundary --project process-global",
|
|
95
|
+
"pretest:mcp": "npm run build:cached",
|
|
96
|
+
"test:mcp": "vitest run --project mcp-boundary",
|
|
97
|
+
"pretest:acceptance": "npm run build:cached",
|
|
98
|
+
"test:acceptance": "vitest run --project acceptance",
|
|
84
99
|
"pretest:changed": "npm run build:cached",
|
|
85
|
-
"test:changed": "vitest run --project
|
|
100
|
+
"test:changed": "vitest run --project domain --project services --project adapters --project composition --project boundary --project mcp-boundary --project conformance --project evaluation --changed",
|
|
86
101
|
"pretest:integration": "npm run build:cached",
|
|
87
|
-
"test:integration": "vitest run --project
|
|
102
|
+
"test:integration": "vitest run --project boundary --project mcp-boundary --project process-global --project acceptance",
|
|
88
103
|
"pretest:coverage": "npm run build:cached",
|
|
89
104
|
"test:coverage": "vitest run --coverage.enabled --coverage.provider=v8",
|
|
90
105
|
"test:ci": "npm run test:coverage -- --reporter=default --reporter=junit --outputFile.junit=test-results.xml",
|
|
91
106
|
"pretest:ci:shard": "npm run build:cached",
|
|
92
107
|
"test:ci:shard": "npm run test:ci:shard:run",
|
|
93
108
|
"test:ci:shard:run": "vitest run --coverage.enabled --coverage.provider=v8 --coverage.thresholds.lines=0 --coverage.thresholds.functions=0 --coverage.thresholds.branches=0 --coverage.thresholds.statements=0 --reporter=default --reporter=blob",
|
|
94
|
-
"test:ci:merge": "vitest --merge-reports --coverage.enabled --coverage.provider=v8
|
|
109
|
+
"test:ci:merge": "vitest --merge-reports --coverage.enabled --coverage.provider=v8",
|
|
95
110
|
"pretest:verbose": "npm run build:cached",
|
|
96
111
|
"test:verbose": "vitest run --reporter=verbose",
|
|
97
112
|
"pretest:watch": "npm run build:cached",
|
|
98
|
-
"test:watch": "vitest --project
|
|
113
|
+
"test:watch": "vitest --project domain --project services --project adapters --project composition --project boundary --project mcp-boundary --project conformance --project evaluation --changed",
|
|
114
|
+
"pretest:watch:all": "npm run build:cached",
|
|
115
|
+
"test:watch:all": "vitest --changed",
|
|
99
116
|
"typecheck": "tsc --noEmit",
|
|
100
117
|
"verify:test-temp-hygiene": "npm run build:cached && node scripts/verify-test-temp-hygiene.mjs",
|
|
101
118
|
"verify:hopper": "npm run verify:fixtures && npm run build:cached && node scripts/verify-real-hopper.mjs",
|
|
102
119
|
"verify:ghidra": "npm run build:cached && node scripts/verify-real-ghidra.mjs",
|
|
103
120
|
"verify:ghidra:windows": "npm run build:cached && npm run build:ghidra-windows-fixture && node scripts/verify-real-ghidra-windows.mjs",
|
|
104
121
|
"verify:browser": "npm run build:cached && node scripts/verify-real-browser.mjs",
|
|
122
|
+
"verify:electron": "npm run build:cached && node scripts/verify-real-electron.mjs",
|
|
105
123
|
"verify:inspector": "npm run build:cached && node scripts/verify-real-javascript-runtime-observation.mjs",
|
|
106
124
|
"verify:javascript-runtime": "npm run build:cached && node scripts/verify-local-javascript-runtime.mjs",
|
|
107
125
|
"verify:application-workflows": "npm run build:cached && node scripts/verify-local-application-workflows.mjs",
|
|
@@ -123,9 +141,10 @@
|
|
|
123
141
|
"evidence:check": "npm run build:cached && node scripts/generate-completion-ledger.mjs --check",
|
|
124
142
|
"docs:api": "typedoc",
|
|
125
143
|
"docs:api:cached": "turbo run docs:api",
|
|
126
|
-
"docs:generate": "
|
|
127
|
-
"docs:
|
|
128
|
-
"docs:check
|
|
144
|
+
"docs:generate": "node scripts/run-exclusive.mjs docs npm run docs:generate:unlocked",
|
|
145
|
+
"docs:generate:unlocked": "npm run metadata:generate && npm run build:cached && node scripts/generate-mcp-tool-catalog.mjs && node scripts/generate-skill-metadata.mjs && node scripts/generate-product-catalog.mjs && node scripts/generate-completion-ledger.mjs && npm run docs:api:cached && node scripts/generate-error-schema.mjs",
|
|
146
|
+
"docs:check": "node scripts/run-exclusive.mjs docs turbo run docs:check:built",
|
|
147
|
+
"docs:check:built": "node scripts/generate-package-metadata.mjs --check && node scripts/generate-mcp-tool-catalog.mjs --check && node scripts/generate-skill-metadata.mjs --check && node scripts/generate-product-catalog.mjs --check && node scripts/generate-completion-ledger.mjs --check && node scripts/check-doc-facts.mjs && node scripts/generate-error-schema.mjs --check",
|
|
129
148
|
"docs:error-schema": "npm run build:cached && node scripts/generate-error-schema.mjs",
|
|
130
149
|
"prepack": "node scripts/prepack.mjs",
|
|
131
150
|
"prepare": "node scripts/prepare.mjs"
|
|
@@ -144,8 +163,8 @@
|
|
|
144
163
|
"@electron/asar": "4.2.0",
|
|
145
164
|
"@jridgewell/trace-mapping": "0.3.31",
|
|
146
165
|
"@lydell/node-pty": "1.1.0",
|
|
147
|
-
"@modelcontextprotocol/client": "2.0.0
|
|
148
|
-
"@modelcontextprotocol/server": "2.0.0
|
|
166
|
+
"@modelcontextprotocol/client": "2.0.0",
|
|
167
|
+
"@modelcontextprotocol/server": "2.0.0",
|
|
149
168
|
"@xterm/addon-serialize": "0.14.0",
|
|
150
169
|
"@xterm/headless": "6.0.0",
|
|
151
170
|
"@zip.js/zip.js": "2.8.26",
|