rea-agents 6.2.0 → 6.4.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.
Files changed (636) hide show
  1. package/README.md +24 -23
  2. package/bridge/ghidra/ReaGhidraApplySeeds.java +151 -0
  3. package/bridge/ghidra/ReaGhidraBridge.java +597 -209
  4. package/bridge/ghidra/ReaGhidraNoReturnFix.java +123 -0
  5. package/bridge/hopper_bridge.py +2 -0
  6. package/dist/adb/AdbConfiguration.js +88 -0
  7. package/dist/adb/AdbDeviceOutput.js +186 -0
  8. package/dist/adb/AdbProvider.js +1190 -0
  9. package/dist/adb/AdbShellOutput.js +309 -0
  10. package/dist/android/AndroidTargetSnapshot.js +104 -22
  11. package/dist/android/JadxConfiguration.js +44 -24
  12. package/dist/android/JadxProvider.js +59 -21
  13. package/dist/android/JadxSession.js +51 -9
  14. package/dist/apktool/ApktoolConfiguration.js +84 -0
  15. package/dist/apktool/ApktoolDecodeOutput.js +59 -0
  16. package/dist/apktool/ApktoolProvider.js +506 -0
  17. package/dist/application/AnalysisProvider.js +8 -2
  18. package/dist/application/AppBundleExecutable.js +27 -22
  19. package/dist/application/BinaryTargetResolver.js +85 -19
  20. package/dist/application/BrowserScenarioEvidence.js +2 -2
  21. package/dist/application/CapabilityInventory.js +11 -1
  22. package/dist/application/ClientConfigurationDocument.js +98 -0
  23. package/dist/application/ClientConfigurationFiles.js +91 -0
  24. package/dist/application/ClientRegistrationEnvironment.js +35 -0
  25. package/dist/application/ClientRegistrationStatus.js +75 -27
  26. package/dist/application/DirectAnalysis.js +14 -8
  27. package/dist/application/DirectAnalysisCleanup.js +1 -2
  28. package/dist/application/DirectAnalysisStatus.js +3 -6
  29. package/dist/application/Doctor.js +27 -34
  30. package/dist/application/DoctorDiagnostics.js +1 -1
  31. package/dist/application/EvidenceBundleCommands.js +6 -12
  32. package/dist/application/EvidenceBundleFiles.js +1 -1
  33. package/dist/application/GeminiClientSettings.js +139 -0
  34. package/dist/application/HermesClientHome.js +115 -0
  35. package/dist/application/HopperDownload.js +39 -0
  36. package/dist/application/InvestigationProviders.js +10 -4
  37. package/dist/application/JsonFiles.js +16 -15
  38. package/dist/application/JsonInputFile.js +252 -0
  39. package/dist/application/LinuxHopper.js +6 -13
  40. package/dist/application/MacHopper.js +172 -149
  41. package/dist/application/MipsElfAbiFlags.js +140 -0
  42. package/dist/application/ProviderOperationExecution.js +31 -0
  43. package/dist/application/ReconstructionObligationCandidates.js +16 -3
  44. package/dist/application/ReconstructionObligationLedgerProjection.js +3 -1
  45. package/dist/application/ReferenceSourceImport.js +76 -29
  46. package/dist/application/ReferenceSourceImportEntries.js +18 -9
  47. package/dist/application/ReferenceSourceImportPolicy.js +99 -23
  48. package/dist/application/ReferenceSourceImportTypes.js +30 -22
  49. package/dist/application/ReferenceSourceVcsAdapter.js +145 -30
  50. package/dist/application/RegularFileRead.js +103 -0
  51. package/dist/application/Setup.js +69 -10
  52. package/dist/application/SetupClientConfiguration.js +134 -23
  53. package/dist/application/SetupHost.js +102 -22
  54. package/dist/application/SetupPlan.js +18 -17
  55. package/dist/application/SetupSkill.js +81 -13
  56. package/dist/application/SupportedClients.js +305 -37
  57. package/dist/application/Uninstall.js +172 -8
  58. package/dist/application/UpdateMaintenance.js +23 -23
  59. package/dist/application/Utf8JsonInput.js +71 -0
  60. package/dist/application/WebScriptExportService.js +130 -57
  61. package/dist/application/WebSourceLocationService.js +3 -0
  62. package/dist/application/adb/AdbDeviceAnalysisPort.js +1 -0
  63. package/dist/application/adb/AdbDeviceAnalysisService.js +13 -0
  64. package/dist/application/analysisView/AnalysisViewService.js +40 -2
  65. package/dist/application/android/AndroidAnalysisService.js +1 -1
  66. package/dist/application/apktool/ApktoolResourceAnalysisPort.js +1 -0
  67. package/dist/application/apktool/ApktoolResourceAnalysisService.js +13 -0
  68. package/dist/application/binary/AnalysisClientCleanup.js +0 -24
  69. package/dist/application/binary/AnalysisSnapshotCache.js +5 -4
  70. package/dist/application/binary/BinarySession.js +18 -1
  71. package/dist/application/binary/BinarySessionOpen.js +9 -1
  72. package/dist/application/binaryDiagnostics/BinaryLayoutService.js +2 -1
  73. package/dist/application/binaryDiagnostics/PeResourcesPort.js +1 -0
  74. package/dist/application/binaryDiagnostics/PeResourcesService.js +111 -0
  75. package/dist/application/binaryDiagnostics/RecordedCrashService.js +2 -1
  76. package/dist/application/evm/EvmInterfaceService.js +3 -0
  77. package/dist/application/firmware/FirmwareAnalysisService.js +3 -0
  78. package/dist/application/investigation/InspectEvidenceBundle.js +18 -0
  79. package/dist/application/javascript/ElectronActiveEvidence.js +2 -2
  80. package/dist/application/javascript/ElectronBoundaryAnalysis.js +2 -2
  81. package/dist/application/javascript/ElectronBoundaryGraphContext.js +3 -2
  82. package/dist/application/javascript/ElectronBoundaryGraphIpc.js +2 -2
  83. package/dist/application/javascript/ElectronBoundaryGraphNative.js +20 -3
  84. package/dist/application/javascript/ElectronBoundaryGraphWindows.js +3 -3
  85. package/dist/application/javascript/JavaScriptApplicationEvidence.js +1 -0
  86. package/dist/application/javascript/JavaScriptApplicationEvidenceGraph.js +107 -46
  87. package/dist/application/javascript/JavaScriptApplicationService.js +23 -11
  88. package/dist/application/javascript/JavaScriptApplicationWorkflowEvidence.js +5 -6
  89. package/dist/application/javascript/JavaScriptApplicationWorkflowService.js +59 -45
  90. package/dist/application/javascript/JavaScriptArtifactAnalysis.js +171 -36
  91. package/dist/application/javascript/JavaScriptArtifactGraphAccumulator.js +14 -16
  92. package/dist/application/javascript/JavaScriptArtifactGraphBuilder.js +74 -36
  93. package/dist/application/javascript/JavaScriptArtifactGraphBundlers.js +4 -3
  94. package/dist/application/javascript/JavaScriptArtifactGraphContext.js +11 -5
  95. package/dist/application/javascript/JavaScriptArtifactGraphFindings.js +53 -42
  96. package/dist/application/javascript/JavaScriptArtifactGraphStructure.js +92 -10
  97. package/dist/application/javascript/JavaScriptArtifactPathResolution.js +293 -238
  98. package/dist/application/javascript/JavaScriptArtifactReconstruction.js +120 -28
  99. package/dist/application/javascript/JavaScriptArtifactReconstructionInput.js +4 -0
  100. package/dist/application/javascript/JavaScriptJsonModules.js +2 -2
  101. package/dist/application/javascript/JavaScriptModuleRelationships.js +10 -20
  102. package/dist/application/javascript/JavaScriptRecoveryService.js +3 -0
  103. package/dist/application/javascript/JavaScriptRuntimeReconciliationService.js +11 -27
  104. package/dist/application/javascript/JavaScriptSemanticGraphAsyncProjection.js +11 -5
  105. package/dist/application/javascript/JavaScriptSemanticGraphBuilder.js +206 -66
  106. package/dist/application/javascript/JavaScriptSemanticGraphChildProcessProjection.js +1 -1
  107. package/dist/application/javascript/JavaScriptSemanticGraphConstruction.js +18 -23
  108. package/dist/application/javascript/JavaScriptSemanticGraphDataProjection.js +5 -2
  109. package/dist/application/javascript/JavaScriptSemanticGraphEvidence.js +1 -1
  110. package/dist/application/javascript/JavaScriptSemanticGraphFingerprintProjection.js +2 -2
  111. package/dist/application/javascript/JavaScriptSemanticGraphFlowProjection.js +7 -5
  112. package/dist/application/javascript/JavaScriptSemanticGraphObjectProjection.js +6 -4
  113. package/dist/application/javascript/JavaScriptSemanticGraphProjection.js +4 -4
  114. package/dist/application/javascript/JavaScriptSemanticGraphResourceProjection.js +1 -1
  115. package/dist/application/javascript/JavaScriptSemanticGraphValueProjection.js +29 -15
  116. package/dist/application/javascript/JavaScriptSemanticTraceService.js +15 -10
  117. package/dist/application/jeb/JebAnalysisPort.js +1 -0
  118. package/dist/application/jeb/JebAnalysisService.js +13 -0
  119. package/dist/application/managed/ManagedApplicationGraphService.js +1 -1
  120. package/dist/application/native/NativeCallRoutes.js +2 -4
  121. package/dist/application/native/NativeUiActionTrace.js +16 -8
  122. package/dist/application/native/NativeValueTrace.js +23 -6
  123. package/dist/application/process/ProcessCli.js +25 -20
  124. package/dist/artifacts/ArtifactPaths.js +129 -8
  125. package/dist/artifacts/ArtifactProvider.js +34 -31
  126. package/dist/artifacts/ArtifactProviderMetadata.js +1 -4
  127. package/dist/artifacts/ArtifactReader.js +23 -0
  128. package/dist/artifacts/ArtifactResourceScope.js +100 -0
  129. package/dist/artifacts/AsarArtifactReader.js +218 -80
  130. package/dist/artifacts/AsarHeader.js +24 -0
  131. package/dist/artifacts/DirectoryArtifactReader.js +168 -65
  132. package/dist/artifacts/MachOSliceArtifactReader.js +116 -39
  133. package/dist/artifacts/NativeDmgArtifactReader.js +179 -87
  134. package/dist/artifacts/NativeDmgOwnership.js +109 -0
  135. package/dist/artifacts/SafeOutputTree.js +245 -70
  136. package/dist/artifacts/SafeOutputTreeCleanup.js +45 -0
  137. package/dist/artifacts/SafeOutputTreeCreationFailure.js +20 -0
  138. package/dist/artifacts/SafeOutputTreeIdentity.js +42 -0
  139. package/dist/artifacts/SafeOutputTreeReadback.js +33 -0
  140. package/dist/artifacts/ZipArtifactReader.js +77 -27
  141. package/dist/artifacts/apple/InterfaceBuilderAnalysis.js +58 -18
  142. package/dist/artifacts/apple/InterfaceBuilderDecodeBudget.js +62 -24
  143. package/dist/artifacts/apple/KeyedArchiveReader.js +76 -49
  144. package/dist/artifacts/apple/MachoLoadCommandReader.js +36 -6
  145. package/dist/artifacts/extraction/ArtifactExtraction.js +134 -92
  146. package/dist/artifacts/inventory/ArtifactGraphConstruction.js +116 -50
  147. package/dist/artifacts/inventory/ArtifactInventory.js +5 -4
  148. package/dist/artifacts/inventory/classify.js +87 -25
  149. package/dist/artifacts/inventory/hashStableRootArtifact.js +70 -0
  150. package/dist/artifacts/inventory/reader.js +13 -5
  151. package/dist/artifacts/inventory/scanCanonical.js +73 -30
  152. package/dist/artifacts/inventory/scanReader.js +43 -20
  153. package/dist/artifacts/javascript/JavaScriptArtifactFiles.js +72 -28
  154. package/dist/artifacts/javascript/JavaScriptSourceAnalysis.js +3 -0
  155. package/dist/browser/BrowserScenarioPartialObservation.js +8 -2
  156. package/dist/browser/BrowserScenarioSecrets.js +52 -37
  157. package/dist/browser/CdpBrowserProvider.js +9 -3
  158. package/dist/browser/CdpCaptureDocuments.js +40 -6
  159. package/dist/browser/CdpCaptureDomSvg.js +210 -0
  160. package/dist/browser/CdpCaptureEventBodyShapes.js +4 -8
  161. package/dist/browser/CdpCaptureEventHandlers.js +26 -9
  162. package/dist/browser/CdpCaptureEvents.js +4 -9
  163. package/dist/browser/CdpCaptureStorageFingerprints.js +3 -3
  164. package/dist/browser/CdpConnection.js +22 -5
  165. package/dist/browser/CdpElectronInspection.js +2 -2
  166. package/dist/browser/CdpElectronProvider.js +4 -3
  167. package/dist/browser/CdpElectronScripts.js +2 -2
  168. package/dist/browser/CdpPageCapture.js +1 -1
  169. package/dist/browser/CdpTargetSession.js +30 -34
  170. package/dist/browser/CdpWebMcpDiscovery.js +48 -23
  171. package/dist/browser/ElectronFileScope.js +99 -9
  172. package/dist/browser/PlaywrightBrowserScenarioProvider.js +63 -7
  173. package/dist/browser/PlaywrightElectronActiveProvider.js +11 -6
  174. package/dist/browser/PlaywrightScenarioArtifacts.js +5 -5
  175. package/dist/browser/PlaywrightScenarioBrowser.js +208 -43
  176. package/dist/browser/PlaywrightScenarioSession.js +130 -65
  177. package/dist/browser/PlaywrightScenarioStorage.js +507 -0
  178. package/dist/browser/PngVisualDiff.js +198 -29
  179. package/dist/browser/WebSourceMapFetcher.js +35 -9
  180. package/dist/browser/assets/LocalWebScriptArtifacts.js +3 -1
  181. package/dist/browser/assets/PublishWebScripts.js +75 -20
  182. package/dist/browser/assets/ScenarioScriptCapture.js +8 -12
  183. package/dist/browser/assets/WebArtifactReads.js +23 -1
  184. package/dist/browser/assets/WebSourceLocationArtifacts.js +1 -0
  185. package/dist/browser/execution/CdpExecutionCapture.js +3 -3
  186. package/dist/browser/execution/CdpPreciseCoverage.js +5 -8
  187. package/dist/browser/history/HarCapture.js +14 -0
  188. package/dist/browser/history/HarCaptureProcess.js +2 -10
  189. package/dist/browser/history/MitmproxyCaptureAdapter.js +3 -1
  190. package/dist/browser/modules/WebModuleArtifacts.js +1 -0
  191. package/dist/cli/adbCommands.js +337 -0
  192. package/dist/cli/analysisViewCommands.js +39 -1
  193. package/dist/cli/apktoolCommands.js +53 -0
  194. package/dist/cli/artifactCommands.js +8 -11
  195. package/dist/cli/binaryDiagnosticsCommands.js +19 -1
  196. package/dist/cli/browserAdvancedCommands.js +65 -36
  197. package/dist/cli/coreAnalysisCommands.js +2 -2
  198. package/dist/cli/coreBinaryCommands.js +12 -13
  199. package/dist/cli/coreNativeCommands.js +1 -14
  200. package/dist/cli/electronCommands.js +14 -10
  201. package/dist/cli/evmCommands.js +13 -4
  202. package/dist/cli/firmwareCommands.js +7 -2
  203. package/dist/cli/javascriptApplicationAnalysis.js +19 -13
  204. package/dist/cli/javascriptRecoveryCommands.js +22 -15
  205. package/dist/cli/jebCommands.js +99 -0
  206. package/dist/cli/jsonOutput.js +12 -4
  207. package/dist/cli/referenceSourceImportStatus.js +7 -0
  208. package/dist/cli/setupCommands.js +15 -3
  209. package/dist/cli/streamedJsonOutput.js +83 -4
  210. package/dist/cli/utilityCommands.js +68 -22
  211. package/dist/cli/webScriptCommands.js +20 -1
  212. package/dist/cli/webSourceLocationCommands.js +21 -9
  213. package/dist/cli.js +11 -2
  214. package/dist/cliBrowserScenarioCommands.js +2 -1
  215. package/dist/cliCommandNames.js +32 -0
  216. package/dist/cliJsonInput.js +47 -34
  217. package/dist/cliObservationOptions.js +7 -0
  218. package/dist/composition/adb.js +3 -0
  219. package/dist/composition/apktool.js +3 -0
  220. package/dist/composition/auxiliaryAnalysisProviders.js +5 -4
  221. package/dist/composition/binaryDiagnostics.js +4 -0
  222. package/dist/composition/browserScenario.js +2 -2
  223. package/dist/composition/directAnalysis.js +14 -7
  224. package/dist/composition/javascriptAnalysisWorkerProcess.js +48 -0
  225. package/dist/composition/jeb.js +6 -0
  226. package/dist/config/environment.js +10 -0
  227. package/dist/config/ghidraLanguageOverride.js +9 -0
  228. package/dist/config/mcpInputSchemaProfile.js +27 -0
  229. package/dist/config/parseConfig.js +28 -1
  230. package/dist/contracts/adb/adbToolContracts.js +353 -0
  231. package/dist/contracts/advertisedInputExamples.js +48 -0
  232. package/dist/contracts/analysisDetail.js +10 -0
  233. package/dist/contracts/analysisViewToolContracts.js +17 -2
  234. package/dist/contracts/apktool/apktoolToolContracts.js +33 -0
  235. package/dist/contracts/artifactComparisonExample.js +5 -5
  236. package/dist/contracts/artifactToolContracts.js +8 -5
  237. package/dist/contracts/browserToolContracts.js +1 -1
  238. package/dist/contracts/compactInputSchema.js +256 -0
  239. package/dist/contracts/errorSchemas.js +3 -1
  240. package/dist/contracts/functionComparisonExample.js +8 -0
  241. package/dist/contracts/functionWorkflowToolContracts.js +1 -1
  242. package/dist/contracts/inputSchemaPresentation.js +104 -13
  243. package/dist/contracts/javascript/electronToolContracts.js +16 -3
  244. package/dist/contracts/javascript/javascriptApplicationWorkflowExamples.js +3 -2
  245. package/dist/contracts/javascript/javascriptExportShapeComparisonExample.js +6 -3
  246. package/dist/contracts/javascript/javascriptRecoveryToolContracts.js +1 -1
  247. package/dist/contracts/javascript/javascriptRuntimeReconciliationExample.js +8 -7
  248. package/dist/contracts/jeb/jebToolContracts.js +64 -0
  249. package/dist/contracts/managed/managedToolContracts.js +3 -2
  250. package/dist/contracts/mobileApplicationGraphExamples.js +5 -5
  251. package/dist/contracts/native/binaryDiagnosticsToolContracts.js +25 -3
  252. package/dist/contracts/native/nativeToolContracts.js +1 -1
  253. package/dist/contracts/officialToolContracts.js +5 -5
  254. package/dist/contracts/sessionLifecycleInputs.js +4 -3
  255. package/dist/contracts/sessionStatusContract.js +3 -2
  256. package/dist/contracts/sessionToolContracts.js +5 -4
  257. package/dist/contracts/sessionToolSchemas.js +9 -4
  258. package/dist/contracts/toolContractExamples.js +6 -0
  259. package/dist/contracts/toolContractTypes.js +3 -0
  260. package/dist/contracts/toolContracts.js +6 -0
  261. package/dist/contracts/toolEffects.js +167 -0
  262. package/dist/contracts/toolOutputSchemaGroups.js +7 -5
  263. package/dist/contracts/toolOutputSchemaPrimitives.js +2 -5
  264. package/dist/contracts/toolSchemaMetadata.js +82 -7
  265. package/dist/domain/adb/adbDeviceAnalysis.js +583 -0
  266. package/dist/domain/analysisErrorBase.js +5 -0
  267. package/dist/domain/analysisErrorCleanup.js +29 -0
  268. package/dist/domain/analysisErrorPresentation.js +18 -4
  269. package/dist/domain/analysisErrorProjection.js +4 -1
  270. package/dist/domain/analysisSnapshot.js +5 -2
  271. package/dist/domain/analysisView/analysisView.js +53 -5
  272. package/dist/domain/analysisView/binaryLayoutView.js +2 -0
  273. package/dist/domain/analysisView/javascriptApplicationView.js +2 -0
  274. package/dist/domain/analysisView/nativeFunctionView.js +155 -0
  275. package/dist/domain/android/androidApplication.js +25 -20
  276. package/dist/domain/android/androidPartialObservation.js +36 -0
  277. package/dist/domain/apktool/apktoolResourceAnalysis.js +77 -0
  278. package/dist/domain/apple/appleApplication.js +40 -23
  279. package/dist/domain/apple/appleBundleAnatomy.js +95 -28
  280. package/dist/domain/apple/dyldPaths.js +9 -1
  281. package/dist/domain/apple/dylibResolution.js +3 -3
  282. package/dist/domain/apple/interfaceBuilderGraph.js +22 -19
  283. package/dist/domain/apple/interfaceBuilderKeyedArchive.js +10 -1
  284. package/dist/domain/artifactComparison.js +39 -11
  285. package/dist/domain/artifactGraph.js +6 -4
  286. package/dist/domain/artifactIdentity.js +37 -9
  287. package/dist/domain/artifactInspection.js +10 -50
  288. package/dist/domain/artifactIntegrityPolicy.js +10 -0
  289. package/dist/domain/artifactInventoryEvidence.js +16 -17
  290. package/dist/domain/artifactPathSyntax.js +1 -1
  291. package/dist/domain/binaryTarget.js +16 -0
  292. package/dist/domain/binaryTargetTypes.js +8 -1
  293. package/dist/domain/browserCompleteness.js +3 -2
  294. package/dist/domain/browserObservationSchemas.js +8 -4
  295. package/dist/domain/browserScenarioCaptureValues.js +2 -2
  296. package/dist/domain/browserScenarioNormalization.js +3 -3
  297. package/dist/domain/browserScenarioValues.js +3 -2
  298. package/dist/domain/callPath.js +8 -10
  299. package/dist/domain/canonicalDigest.js +7 -1
  300. package/dist/domain/canonicalJsonDigestSteps.js +34 -12
  301. package/dist/domain/canonicalOrdering.js +1 -13
  302. package/dist/domain/changedBehavior.js +2 -3
  303. package/dist/domain/compactStringIdentity.js +9 -0
  304. package/dist/domain/comparisonSemantics.js +0 -5
  305. package/dist/domain/digests.js +0 -3
  306. package/dist/domain/evidence.js +12 -6
  307. package/dist/domain/evidenceBundle.js +51 -33
  308. package/dist/domain/evidenceRecordSummary.js +144 -0
  309. package/dist/domain/firmware/firmwareAnalysis.js +4 -3
  310. package/dist/domain/functionComparison.js +2 -1
  311. package/dist/domain/functionComparisonNormalization.js +4 -3
  312. package/dist/domain/functionComparisonResults.js +2 -2
  313. package/dist/domain/functionDossierEvidence.js +2 -1
  314. package/dist/domain/hopperValues.js +11 -15
  315. package/dist/domain/inputIssueProjection.js +16 -1
  316. package/dist/domain/javascript/electronActiveObservation.js +4 -3
  317. package/dist/domain/javascript/electronStaticAnalysisBrowser.js +14 -15
  318. package/dist/domain/javascript/electronStaticAnalysisIpc.js +20 -21
  319. package/dist/domain/javascript/electronStaticAnalysisNative.js +73 -41
  320. package/dist/domain/javascript/electronStaticAnalysisValues.js +24 -4
  321. package/dist/domain/javascript/javascriptAnalysisResourceControls.js +45 -0
  322. package/dist/domain/javascript/javascriptApplicationAnalysis.js +6 -1
  323. package/dist/domain/javascript/javascriptApplicationChangeGraph.js +18 -14
  324. package/dist/domain/javascript/javascriptApplicationEvidenceSchemas.js +4 -0
  325. package/dist/domain/javascript/javascriptApplicationGraph.js +91 -28
  326. package/dist/domain/javascript/javascriptApplicationProjectionResources.js +35 -0
  327. package/dist/domain/javascript/javascriptApplicationVersionComparison.js +4 -4
  328. package/dist/domain/javascript/javascriptApplicationVersionComparisonSchemas.js +37 -22
  329. package/dist/domain/javascript/javascriptApplicationVersionItems.js +72 -45
  330. package/dist/domain/javascript/javascriptApplicationVersionKeys.js +16 -8
  331. package/dist/domain/javascript/javascriptAstFingerprint.js +60 -33
  332. package/dist/domain/javascript/javascriptAstValues.js +54 -0
  333. package/dist/domain/javascript/javascriptElectronMemberWrites.js +50 -0
  334. package/dist/domain/javascript/javascriptExportShapeComparison.js +3 -2
  335. package/dist/domain/javascript/javascriptExportShapeComparisonSchemas.js +31 -23
  336. package/dist/domain/javascript/javascriptExportShapeSelection.js +2 -2
  337. package/dist/domain/javascript/javascriptExportShapeVariants.js +3 -2
  338. package/dist/domain/javascript/javascriptFeatureSeed.js +5 -3
  339. package/dist/domain/javascript/javascriptFeatureTrace.js +7 -6
  340. package/dist/domain/javascript/javascriptFeatureTraceSchemas.js +17 -9
  341. package/dist/domain/javascript/javascriptFeatureTraversal.js +4 -4
  342. package/dist/domain/javascript/javascriptModuleSemanticIr.js +15 -0
  343. package/dist/domain/javascript/javascriptNativeHandoff.js +12 -7
  344. package/dist/domain/javascript/javascriptRpcEndpoints.js +253 -0
  345. package/dist/domain/javascript/javascriptRuntimeLoadState.js +1 -3
  346. package/dist/domain/javascript/javascriptRuntimeObservation.js +8 -5
  347. package/dist/domain/javascript/javascriptRuntimeReconciliation.js +12 -6
  348. package/dist/domain/javascript/javascriptRuntimeReconciliationActive.js +9 -8
  349. package/dist/domain/javascript/javascriptRuntimeReconciliationCaptureParsing.js +212 -0
  350. package/dist/domain/javascript/javascriptRuntimeReconciliationGraph.js +12 -6
  351. package/dist/domain/javascript/javascriptRuntimeReconciliationInputValidation.js +28 -0
  352. package/dist/domain/javascript/javascriptRuntimeReconciliationMatching.js +5 -5
  353. package/dist/domain/javascript/javascriptRuntimeReconciliationParsing.js +12 -223
  354. package/dist/domain/javascript/javascriptRuntimeReconciliationResult.js +2 -2
  355. package/dist/domain/javascript/javascriptRuntimeReconciliationRuntime.js +15 -4
  356. package/dist/domain/javascript/javascriptRuntimeReconciliationSchemas.js +2 -2
  357. package/dist/domain/javascript/javascriptRuntimeStaticCandidates.js +15 -17
  358. package/dist/domain/javascript/javascriptSemanticAnalysis.js +379 -30
  359. package/dist/domain/javascript/javascriptSemanticCallResolution.js +9 -7
  360. package/dist/domain/javascript/javascriptSemanticCallableResults.js +42 -0
  361. package/dist/domain/javascript/javascriptSemanticCalls.js +8 -1
  362. package/dist/domain/javascript/javascriptSemanticChildProcesses.js +2 -2
  363. package/dist/domain/javascript/javascriptSemanticCoverage.js +20 -0
  364. package/dist/domain/javascript/javascriptSemanticDataEffectHelpers.js +7 -9
  365. package/dist/domain/javascript/javascriptSemanticDataEffects.js +4 -11
  366. package/dist/domain/javascript/javascriptSemanticDerivedAnalysis.js +15 -4
  367. package/dist/domain/javascript/javascriptSemanticFileProjection.js +1 -0
  368. package/dist/domain/javascript/javascriptSemanticFingerprints.js +43 -42
  369. package/dist/domain/javascript/javascriptSemanticGraph.js +205 -52
  370. package/dist/domain/javascript/javascriptSemanticGraphSchemas.js +21 -11
  371. package/dist/domain/javascript/javascriptSemanticIr.js +0 -4
  372. package/dist/domain/javascript/javascriptSemanticIterationSources.js +139 -0
  373. package/dist/domain/javascript/javascriptSemanticMemberMutations.js +774 -136
  374. package/dist/domain/javascript/javascriptSemanticMutationInitializers.js +190 -0
  375. package/dist/domain/javascript/javascriptSemanticMutationValues.js +98 -41
  376. package/dist/domain/javascript/javascriptSemanticObjectReferences.js +381 -0
  377. package/dist/domain/javascript/javascriptSemanticObjects.js +9 -7
  378. package/dist/domain/javascript/javascriptSemanticPrimitives.js +7 -2
  379. package/dist/domain/javascript/javascriptSemanticProjection.js +72 -28
  380. package/dist/domain/javascript/javascriptSemanticPromises.js +15 -21
  381. package/dist/domain/javascript/javascriptSemanticPropertyPaths.js +100 -0
  382. package/dist/domain/javascript/javascriptSemanticProvenance.js +3 -3
  383. package/dist/domain/javascript/javascriptSemanticQuery.js +33 -29
  384. package/dist/domain/javascript/javascriptSemanticQueryIdentity.js +4 -5
  385. package/dist/domain/javascript/javascriptSemanticQuerySchemas.js +8 -9
  386. package/dist/domain/javascript/javascriptSemanticRequireOrigin.js +16 -10
  387. package/dist/domain/javascript/javascriptSemanticReturnedReferences.js +219 -0
  388. package/dist/domain/javascript/javascriptSemanticReturns.js +34 -48
  389. package/dist/domain/javascript/javascriptSemanticState.js +22 -2
  390. package/dist/domain/javascript/javascriptSemanticTraversal.js +25 -2
  391. package/dist/domain/javascript/javascriptSemanticValues.js +169 -30
  392. package/dist/domain/javascript/javascriptSourceAnalysis.js +1 -0
  393. package/dist/domain/javascript/javascriptSourceMapPaths.js +11 -1
  394. package/dist/domain/javascript/javascriptSourceParser.js +34 -9
  395. package/dist/domain/javascript/javascriptStaticAnalysis.js +29 -17
  396. package/dist/domain/javascript/javascriptStaticAnalysisBundler.js +13 -12
  397. package/dist/domain/javascript/javascriptStaticAnalysisCalls.js +49 -5
  398. package/dist/domain/javascript/javascriptStaticAnalysisFindings.js +8 -4
  399. package/dist/domain/javascript/javascriptStaticAnalysisHelpers.js +26 -15
  400. package/dist/domain/javascript/javascriptStaticAnalysisState.js +1 -0
  401. package/dist/domain/javascript/sourceToBundleComparison.js +7 -5
  402. package/dist/domain/javascript/sourceToBundleSignals.js +7 -7
  403. package/dist/domain/jeb/jebAnalysis.js +114 -0
  404. package/dist/domain/jsonSerialization.js +109 -55
  405. package/dist/domain/jsonShape.js +69 -31
  406. package/dist/domain/jsonValue.js +3 -0
  407. package/dist/domain/localPath.js +10 -4
  408. package/dist/domain/managed/managedApplicationGraph.js +47 -6
  409. package/dist/domain/managed/managedApplicationGraphCoverage.js +8 -2
  410. package/dist/domain/managed/managedApplicationGraphNodes.js +94 -59
  411. package/dist/domain/managed/managedArtifact.js +1 -0
  412. package/dist/domain/managed/managedInspectionEvidence.js +13 -0
  413. package/dist/domain/managed/managedMemberComparisonMatch.js +6 -7
  414. package/dist/domain/native/nativeAotPe.js +1408 -0
  415. package/dist/domain/native/nativeCallObservation.js +2 -4
  416. package/dist/domain/native/nativeInstruction.js +21 -0
  417. package/dist/domain/native/nativeMetadataRecovery.js +79 -6
  418. package/dist/domain/native/nativeValueFlow.js +5 -11
  419. package/dist/domain/native/objcSwiftMetadata.js +15 -17
  420. package/dist/domain/native/peResources.js +94 -0
  421. package/dist/domain/nativeConvention.js +33 -0
  422. package/dist/domain/process/processCapture.js +102 -11
  423. package/dist/domain/process/processCaptureCoverage.js +8 -5
  424. package/dist/domain/process/processCaptureExample.js +67 -0
  425. package/dist/domain/process/processCaptureValidation.js +83 -3
  426. package/dist/domain/process/processComparison.js +0 -23
  427. package/dist/domain/process/processScenario.js +62 -10
  428. package/dist/domain/process/processTraceEvaluation.js +4 -4
  429. package/dist/domain/process/processTraceSpecification.js +1 -3
  430. package/dist/domain/propertyListKeys.js +3 -1
  431. package/dist/domain/providerCleanupError.js +6 -2
  432. package/dist/domain/reconstructionCoverage.js +2 -1
  433. package/dist/domain/reconstructionUnknowns.js +4 -3
  434. package/dist/domain/reconstructionVerification.js +3 -2
  435. package/dist/domain/referenceSourceGraph.js +32 -23
  436. package/dist/domain/referenceSourceImportParsing.js +40 -48
  437. package/dist/domain/referenceSourcePathIdentity.js +22 -0
  438. package/dist/domain/referenceSourceRequireBindings.js +137 -0
  439. package/dist/domain/residualUnknown.js +3 -2
  440. package/dist/domain/staticRuntimeCorrelation.js +2 -1
  441. package/dist/domain/swiftSymbolClassification.js +6 -1
  442. package/dist/domain/symbolAnalysis.js +17 -2
  443. package/dist/domain/unicodeCodePointOrder.js +6 -0
  444. package/dist/domain/webBundleAnalyzerInspection.js +23 -3
  445. package/dist/domain/webCaptureDiff.js +170 -30
  446. package/dist/domain/webCaptureDiffSchemas.js +2 -8
  447. package/dist/domain/webInventory.js +3 -2
  448. package/dist/domain/webMcpDiscovery.js +4 -3
  449. package/dist/domain/webScriptExport.js +1 -1
  450. package/dist/domain/webScriptExportError.js +10 -4
  451. package/dist/domain/webScriptExportPlan.js +7 -13
  452. package/dist/domain/zipPackageFormat.js +4 -1
  453. package/dist/domain/zodCollectionSteps.js +24 -0
  454. package/dist/dotnet/ManagedArtifactInspector.js +55 -43
  455. package/dist/dotnet/ManagedDecodeBudget.js +80 -0
  456. package/dist/dotnet/ManagedMemberInspector.js +13 -6
  457. package/dist/dotnet/ManagedMemberInspectorCore.js +2 -2
  458. package/dist/dotnet/ManagedMemberInstructionDecoder.js +5 -4
  459. package/dist/dotnet/ManagedMemberRows.js +9 -4
  460. package/dist/dotnet/ManagedMetadataHeaps.js +15 -5
  461. package/dist/dotnet/ManagedMetadataInventoryRows.js +20 -11
  462. package/dist/dotnet/ManagedMetadataLayout.js +10 -4
  463. package/dist/dotnet/ManagedMethodBodyReader.js +8 -3
  464. package/dist/dotnet/ManagedNativeBoundaryHelpers.js +3 -2
  465. package/dist/dotnet/ManagedNativeBoundaryInspector.js +49 -34
  466. package/dist/dotnet/ManagedPeReader.js +41 -25
  467. package/dist/dotnet/ManagedReaderFailure.js +2 -1
  468. package/dist/dotnet/ManagedStaticProvider.js +65 -31
  469. package/dist/dotnet/ManagedStaticProviderMetadata.js +1 -4
  470. package/dist/evaluation/AgentEvaluationReport.js +9 -5
  471. package/dist/evaluation/CodexAgentEval.js +43 -13
  472. package/dist/evm/EvmoleFailures.js +0 -2
  473. package/dist/evm/EvmoleInterfaceProvider.js +67 -2
  474. package/dist/filesystem/OwnedDirectoryHandle.js +29 -0
  475. package/dist/filesystem/OwnedFileHandle.js +36 -0
  476. package/dist/filesystem/RegularFile.js +73 -0
  477. package/dist/filesystem/StableFileHash.js +46 -0
  478. package/dist/filesystem/readFileHandleChunks.js +26 -0
  479. package/dist/firmware/FirmwareCommand.js +25 -3
  480. package/dist/firmware/FirmwareFiles.js +23 -8
  481. package/dist/firmware/FirmwareProvider.js +156 -32
  482. package/dist/firmware/FirmwarePublication.js +24 -3
  483. package/dist/firmware/FirmwareRelease.js +1 -0
  484. package/dist/generatedPackageMetadata.js +2 -2
  485. package/dist/ghidra/GhidraAnalysisProfile.js +55 -4
  486. package/dist/ghidra/GhidraAnalysisSeeds.js +211 -0
  487. package/dist/ghidra/GhidraClient.js +90 -8
  488. package/dist/ghidra/GhidraDiagnostics.js +11 -8
  489. package/dist/ghidra/GhidraFunctionValues.js +26 -2
  490. package/dist/ghidra/GhidraInstallation.js +111 -10
  491. package/dist/ghidra/GhidraInventoryValues.js +23 -1
  492. package/dist/ghidra/GhidraLanguageCatalog.js +99 -0
  493. package/dist/ghidra/GhidraLauncher.js +123 -58
  494. package/dist/ghidra/GhidraLoadImageAttest.js +49 -2
  495. package/dist/ghidra/GhidraMipsProfile.js +79 -0
  496. package/dist/ghidra/GhidraProvider.js +57 -9
  497. package/dist/ghidra/GhidraProviderCapabilities.js +18 -8
  498. package/dist/ghidra/GhidraProviderClient.js +282 -21
  499. package/dist/ghidra/GhidraSessionValues.js +9 -2
  500. package/dist/hopper/HopperAnalysisProfile.js +2 -0
  501. package/dist/hopper/HopperCleanup.js +1 -1
  502. package/dist/hopper/HopperClient.js +15 -6
  503. package/dist/hopper/HopperMachOImage.js +2 -0
  504. package/dist/hopper/HopperProvider.js +13 -2
  505. package/dist/ida/IdaOperationRunner.js +10 -2
  506. package/dist/ida/IdaProvider.js +7 -0
  507. package/dist/ida/IdaSessionClient.js +7 -3
  508. package/dist/ida/IdaWorkspace.js +4 -2
  509. package/dist/inspector/JavaScriptRuntimeScope.js +9 -5
  510. package/dist/inspector/V8InspectorCaptureProjection.js +46 -13
  511. package/dist/inspector/V8InspectorProvider.js +60 -8
  512. package/dist/javascript/analysis/JavaScriptAnalysisTransfer.js +326 -0
  513. package/dist/javascript/analysis/JavaScriptAnalysisWorker.js +520 -0
  514. package/dist/javascript/analysis/JavaScriptAnalysisWorkerProtocol.js +63 -0
  515. package/dist/javascript/analysis/JavaScriptAnalysisWorkerSchemas.js +521 -0
  516. package/dist/javascript/analysis/JavaScriptAnalysisWorkerServer.js +116 -0
  517. package/dist/javascript/recovery/RecoveryFiles.js +18 -7
  518. package/dist/javascript/recovery/WakaruCommand.js +22 -9
  519. package/dist/javascript/recovery/WakaruExecution.js +11 -7
  520. package/dist/javascript/recovery/WakaruProvider.js +139 -16
  521. package/dist/javascript/recovery/WakaruPublication.js +14 -4
  522. package/dist/javascript/recovery/WakaruRelease.js +10 -3
  523. package/dist/javascript/recovery/WakaruReport.js +12 -7
  524. package/dist/javascript/recovery/WakaruVersion.js +24 -0
  525. package/dist/javascript/sourceMaps/SourceMapCommand.js +16 -3
  526. package/dist/javascript/sourceMaps/SourceMapDecoder.js +63 -7
  527. package/dist/javascript/sourceMaps/SourceMapFormat.js +15 -4
  528. package/dist/jeb/JebMcpConnection.js +179 -0
  529. package/dist/jeb/JebMcpEndpoint.js +40 -0
  530. package/dist/jeb/JebProvider.js +299 -0
  531. package/dist/main/shutdown.js +76 -32
  532. package/dist/main/transport.js +1 -1
  533. package/dist/mcpDoctor.js +15 -6
  534. package/dist/native/AppleDispatchCoverage.js +25 -12
  535. package/dist/native/AppleDispatchMetadata.js +14 -7
  536. package/dist/native/AppleMachoFixups.js +71 -15
  537. package/dist/native/AppleMachoSelection.js +23 -3
  538. package/dist/native/AppleObjcDispatchFacets.js +3 -3
  539. package/dist/native/AppleObjcProperties.js +17 -7
  540. package/dist/native/LldbCallTracer.js +241 -75
  541. package/dist/native/NativeMacOSProvider.js +100 -20
  542. package/dist/native/NativeMacOSProviderMetadata.js +1 -2
  543. package/dist/native/NativeMachoInspection.js +11 -7
  544. package/dist/native/NativeUiHelperRuntime.js +6 -1
  545. package/dist/native/NativeUiObservation.js +4 -3
  546. package/dist/native/pe/PeResourceLayout.js +120 -0
  547. package/dist/native/pe/PeResourceParser.js +286 -0
  548. package/dist/native/pe/PeResourcesProvider.js +63 -0
  549. package/dist/process/BoundedFileBytes.js +30 -7
  550. package/dist/process/DarwinProcessRunTokenReader.js +8 -3
  551. package/dist/process/OwnedCommand.js +4 -3
  552. package/dist/process/ProcessOwnership.js +104 -112
  553. package/dist/process/ProcessOwnershipObservation.js +104 -51
  554. package/dist/process/ProcessOwnershipProcessTree.js +4 -4
  555. package/dist/process/ProcessRunTokenObservations.js +48 -0
  556. package/dist/process/ProviderDiagnosticRedaction.js +17 -0
  557. package/dist/process/ProviderProcess.js +4 -3
  558. package/dist/process/capture/FilesystemSnapshot.js +116 -22
  559. package/dist/process/capture/ProcessCaptureLifecycle.js +363 -86
  560. package/dist/process/capture/ProcessCaptureProgress.js +62 -0
  561. package/dist/process/capture/ProcessFilesystemEffects.js +19 -4
  562. package/dist/process/capture/ProcessHarness.js +202 -47
  563. package/dist/process/capture/ProcessNormalization.js +3 -1
  564. package/dist/process/capture/ProcessScenarioRuntimeValidation.js +5 -2
  565. package/dist/process/capture/TerminalRenderer.js +24 -7
  566. package/dist/reference/ReferenceSourceReader.js +22 -5
  567. package/dist/reference/ReferenceSourceReaderEntries.js +114 -51
  568. package/dist/reference/ReferenceSourceReaderErrors.js +12 -0
  569. package/dist/reference/ReferenceSourceReaderFile.js +50 -10
  570. package/dist/reference/ReferenceSourceReaderValidate.js +4 -4
  571. package/dist/server/EvidenceMcpServer.js +36 -1
  572. package/dist/server/admittedToolOperation.js +9 -0
  573. package/dist/server/analysisAdmission.js +8 -0
  574. package/dist/server/contractToolHandler.js +21 -0
  575. package/dist/server/createServer.js +118 -47
  576. package/dist/server/registerAdbTools.js +36 -0
  577. package/dist/server/registerAnalysisViewTool.js +4 -9
  578. package/dist/server/registerAndroidTools.js +3 -12
  579. package/dist/server/registerApktoolTools.js +14 -0
  580. package/dist/server/registerApplicationTools/compareExportShapes.js +6 -7
  581. package/dist/server/registerApplicationTools/compareSourceToBundle.js +4 -5
  582. package/dist/server/registerApplicationTools/compareVersions.js +3 -2
  583. package/dist/server/registerApplicationTools/coverage.js +3 -2
  584. package/dist/server/registerApplicationTools/helpers.js +3 -2
  585. package/dist/server/registerApplicationTools/obligationLedger.js +3 -2
  586. package/dist/server/registerApplicationTools/projectMobileApplicationGraph.js +3 -2
  587. package/dist/server/registerApplicationTools/traceFeature.js +3 -2
  588. package/dist/server/registerApplicationTools/traceSemantics.js +4 -5
  589. package/dist/server/registerArtifactComparisonTool.js +5 -2
  590. package/dist/server/registerArtifactTools.js +2 -2
  591. package/dist/server/registerBinaryDiagnosticsTools.js +16 -4
  592. package/dist/server/registerBrowserScenarioTool.js +10 -7
  593. package/dist/server/registerBrowserTools.js +12 -9
  594. package/dist/server/registerBundleComparisonTool.js +16 -2
  595. package/dist/server/registerCloseLifecycleTool.js +36 -5
  596. package/dist/server/registerElectronTools.js +28 -10
  597. package/dist/server/registerEnhancedTools.js +78 -73
  598. package/dist/server/registerEvidenceTools.js +54 -46
  599. package/dist/server/registerEvmTools.js +4 -9
  600. package/dist/server/registerFirmwareTools.js +3 -11
  601. package/dist/server/registerFunctionComparisonTool.js +5 -2
  602. package/dist/server/registerJavaScriptRecoveryTool.js +4 -9
  603. package/dist/server/registerJavaScriptRuntimeObservationTools.js +9 -6
  604. package/dist/server/registerJebTools.js +16 -0
  605. package/dist/server/registerManagedTools.js +7 -4
  606. package/dist/server/registerManagedWorkflowTools/compareManagedMembers.js +4 -6
  607. package/dist/server/registerManagedWorkflowTools/importManagedReconstruction.js +3 -2
  608. package/dist/server/registerManagedWorkflowTools/projectManagedApplicationGraph.js +3 -2
  609. package/dist/server/registerManagedWorkflowTools/verifyManagedNativeBoundaries.js +3 -2
  610. package/dist/server/registerOfficialTools.js +31 -25
  611. package/dist/server/registerPeResourcesTool.js +9 -0
  612. package/dist/server/registerProcessComparisonTool.js +5 -2
  613. package/dist/server/registerRecordedCrashTools.js +4 -9
  614. package/dist/server/registerSessionRecordTools.js +2 -1
  615. package/dist/server/registerSessionTools.js +58 -21
  616. package/dist/server/registerWebModuleTool.js +4 -9
  617. package/dist/server/registerWebNetworkCaptureTool.js +4 -9
  618. package/dist/server/registerWebRuntimeTools.js +6 -5
  619. package/dist/server/registerWebScriptTool.js +6 -3
  620. package/dist/server/registerWebSourceLocationTool.js +4 -9
  621. package/dist/server/toolResult.js +21 -2
  622. package/dist/windows/WindowsPrivateRuntime.js +12 -5
  623. package/install.sh +7 -4
  624. package/licenses/nativeaot-parser-MIT.txt +28 -0
  625. package/native/windows/build/manifest.json +2 -2
  626. package/native/windows/build/rea-windows-x64.node +0 -0
  627. package/package.json +38 -7
  628. package/scripts/rea.mjs +16 -1
  629. package/skills/reverse-engineer-anything/SKILL.md +52 -51
  630. package/skills/reverse-engineer-anything/references/connection-and-recovery.md +127 -0
  631. package/skills/reverse-engineer-anything/references/evidence-workflows.md +8 -0
  632. package/skills/reverse-engineer-anything/references/javascript-applications.md +92 -13
  633. package/skills/reverse-engineer-anything/references/native-and-artifacts.md +31 -1
  634. package/dist/artifacts/inventory/policy.js +0 -2
  635. package/dist/domain/managed/managedApplicationGraphNodeCoverage.js +0 -6
  636. package/dist/server/registerNativeTools.js +0 -6
@@ -2,11 +2,12 @@ import { toolContract } from "../contracts/toolContracts.js";
2
2
  import { mcpProgressReporter } from "./mcpProgress.js";
3
3
  import { logToolExecution } from "./toolLogging.js";
4
4
  import { toolRegistrationOptions } from "./toolRegistrationOptions.js";
5
+ import { runAdmittedToolOperation } from "./admittedToolOperation.js";
5
6
  /** Bind distinct runtime operations to named contracts and the session's Evidence owner. */
6
- export const registerWebRuntimeTools = (server, service, logger, recordEvidence) => {
7
+ export const registerWebRuntimeTools = (server, service, logger, recordEvidence, withAdmittedAnalysis) => {
7
8
  const execution = toolContract("observe_web_execution");
8
9
  const listeners = toolContract("inspect_web_event_listeners");
9
- server.registerTool(execution.name, toolRegistrationOptions(execution), async (input, context) => {
10
+ server.registerTool(execution.name, toolRegistrationOptions(execution), async (input, context) => runAdmittedToolOperation(server, withAdmittedAnalysis, execution.name, context.mcpReq.signal, async () => {
10
11
  const result = await logToolExecution(logger, execution.name, () => service.observe(input, {
11
12
  signal: context.mcpReq.signal,
12
13
  progress: mcpProgressReporter(context),
@@ -15,12 +16,12 @@ export const registerWebRuntimeTools = (server, service, logger, recordEvidence)
15
16
  return server.delivery.toCallToolResult(result, execution);
16
17
  const recorded = recordEvidence?.(result.value);
17
18
  return server.delivery.toEvidenceToolResult(result.value, execution, recorded);
18
- });
19
- server.registerTool(listeners.name, toolRegistrationOptions(listeners), async (input, context) => {
19
+ }));
20
+ server.registerTool(listeners.name, toolRegistrationOptions(listeners), async (input, context) => runAdmittedToolOperation(server, withAdmittedAnalysis, listeners.name, context.mcpReq.signal, async () => {
20
21
  const result = await logToolExecution(logger, listeners.name, () => service.inspect(input, { signal: context.mcpReq.signal }));
21
22
  if (!result.ok)
22
23
  return server.delivery.toCallToolResult(result, listeners);
23
24
  const recorded = recordEvidence?.(result.value);
24
25
  return server.delivery.toEvidenceToolResult(result.value, listeners, recorded);
25
- });
26
+ }));
26
27
  };
@@ -2,14 +2,17 @@ import { exportWebScriptsValidated } from "../application/WebScriptExportService
2
2
  import { toolContract } from "../contracts/toolContracts.js";
3
3
  import { logToolExecution } from "./toolLogging.js";
4
4
  import { toolRegistrationOptions } from "./toolRegistrationOptions.js";
5
+ import { runAdmittedToolOperation } from "./admittedToolOperation.js";
5
6
  /** Register local script export without requiring a live browser provider. */
6
7
  export const registerWebScriptTool = (server, options) => {
7
8
  const contract = toolContract("export_web_scripts");
8
- server.registerTool(contract.name, toolRegistrationOptions(contract), async (input, context) => {
9
- const result = await logToolExecution(options.logger, contract.name, () => exportWebScriptsValidated(input, { signal: context.mcpReq.signal }));
9
+ server.registerTool(contract.name, toolRegistrationOptions(contract), async (input, context) => runAdmittedToolOperation(server, options.withAdmittedAnalysis, contract.name, context.mcpReq.signal, async () => {
10
+ const result = await logToolExecution(options.logger, contract.name, () => exportWebScriptsValidated(input, options.artifactResources, {
11
+ signal: context.mcpReq.signal,
12
+ }));
10
13
  if (!result.ok)
11
14
  return server.delivery.toCallToolResult(result, contract);
12
15
  const recorded = options.recordEvidence?.(result.value);
13
16
  return server.delivery.toEvidenceToolResult(result.value, contract, recorded);
14
- });
17
+ }));
15
18
  };
@@ -1,14 +1,9 @@
1
1
  import { toolContract } from "../contracts/toolContracts.js";
2
- import { logToolExecution } from "./toolLogging.js";
2
+ import { createEvidenceToolHandler } from "./contractToolHandler.js";
3
3
  import { toolRegistrationOptions } from "./toolRegistrationOptions.js";
4
4
  /** Bind source point tracing to its exact named contract and session Evidence owner. */
5
- export const registerWebSourceLocationTool = (server, service, logger, recordEvidence) => {
5
+ export const registerWebSourceLocationTool = (server, service, logger, recordEvidence, withAdmittedAnalysis) => {
6
6
  const contract = toolContract("trace_web_source_location");
7
- server.registerTool(contract.name, toolRegistrationOptions(contract), async (input, context) => {
8
- const result = await logToolExecution(logger, contract.name, () => service.trace(input, { signal: context.mcpReq.signal }));
9
- if (!result.ok)
10
- return server.delivery.toCallToolResult(result, contract);
11
- const recorded = recordEvidence?.(result.value);
12
- return server.delivery.toEvidenceToolResult(result.value, contract, recorded);
13
- });
7
+ const handler = createEvidenceToolHandler(server, (input, options) => service.trace(input, options), logger, recordEvidence, withAdmittedAnalysis);
8
+ server.registerTool(contract.name, toolRegistrationOptions(contract), handler(contract));
14
9
  };
@@ -1,5 +1,5 @@
1
1
  import { STDIO_DEFAULT_MAX_BUFFER_SIZE } from "@modelcontextprotocol/server";
2
- import { projectAnalysisError } from "../domain/analysisErrorProjection.js";
2
+ import { projectAnalysisError, } from "../domain/analysisErrorProjection.js";
3
3
  import {} from "../domain/analysisErrorBase.js";
4
4
  import { AnalysisResourceConstraintError } from "../domain/analysisErrorCore.js";
5
5
  import { encodeToolResult, MCP_RESULT_STRING_LIMIT, } from "./toolResultEncoding.js";
@@ -36,7 +36,26 @@ export class ToolResultDelivery {
36
36
  }
37
37
  /** Project an error without allocating oversized repeated MCP text. */
38
38
  toErrorToolResult(error) {
39
- const structuredContent = { error: projectAnalysisError(error) };
39
+ return this.projectedErrorResult(projectAnalysisError(error));
40
+ }
41
+ /** Deliver the original failure with the producer-acknowledged partial Evidence reference. */
42
+ toRecordedPartialErrorToolResult(error, evidenceId, recorded) {
43
+ if (!recorded.ok)
44
+ return this.toErrorToolResult(error);
45
+ const projected = projectAnalysisError(error);
46
+ return this.projectedErrorResult({
47
+ ...projected,
48
+ details: {
49
+ ...projected.details,
50
+ partial_observation: {
51
+ kind: "retained-evidence",
52
+ evidence_id: evidenceId,
53
+ },
54
+ },
55
+ });
56
+ }
57
+ projectedErrorResult(projected) {
58
+ const structuredContent = { error: projected };
40
59
  // Errors reach the wire as text only; the structured copy is a private
41
60
  // carrier the transport removes after its own budget check.
42
61
  const encoded = encodeToolResult(structuredContent, this.resultBudgetBytes, "text");
@@ -34,7 +34,7 @@ export class WindowsPrivateRuntime {
34
34
  const authority = requireWindowsNativeAuthority();
35
35
  const observation = runtimeSchema.parse(authority.call("runtime_create", [parent, prefix]));
36
36
  const runtime = new WindowsPrivateRuntime(observation, authority);
37
- runtimes.set(observation.path.toLowerCase(), runtime);
37
+ runtimes.set(windowsRuntimeIdentityKey(observation), runtime);
38
38
  return runtime;
39
39
  }
40
40
  /** Open a private child directory through retained, verified parent handles. */
@@ -119,13 +119,20 @@ export class WindowsPrivateRuntime {
119
119
  await this.#pending?.catch(() => undefined);
120
120
  this.authority.call("runtime_close", [this.observation.handle]);
121
121
  this.#closed = true;
122
- runtimes.delete(this.observation.path.toLowerCase());
122
+ runtimes.delete(windowsRuntimeIdentityKey(this.observation));
123
123
  }
124
124
  }
125
- /** Select an already-owned runtime; an arbitrary pathname cannot grant authority. */
125
+ /** File id returned by the OS. Path spelling is not part of the lease key. */
126
+ const windowsRuntimeIdentityKey = (identity) => `${identity.volumeSerial}:${identity.fileId}`;
127
+ /**
128
+ * Select an already-owned runtime. Only the observed `path` or `finalPath`
129
+ * matches, character for character. A case variant fails closed.
130
+ */
126
131
  export const windowsPrivateRuntime = (rootPath) => {
127
- const runtime = runtimes.get(rootPath.toLowerCase());
128
- if (runtime === undefined)
132
+ const matches = [...runtimes.values()].filter((runtime) => runtime.observation.finalPath === rootPath ||
133
+ runtime.observation.path === rootPath);
134
+ const runtime = matches[0];
135
+ if (matches.length !== 1 || runtime === undefined)
129
136
  throw new Error(`No native private runtime owns ${rootPath}`);
130
137
  return runtime;
131
138
  };
package/install.sh CHANGED
@@ -85,19 +85,22 @@ if [[ "$version" =~ \+ ]]; then
85
85
  fail "npm cannot install an exact version with build metadata. Pass a version without build metadata, then retry."
86
86
  fi
87
87
 
88
- prefix_args=()
88
+ install_args=(install --global)
89
89
  if [[ "$platform" == "Linux" ]]; then
90
- prefix_args=(--prefix "$HOME/.local")
90
+ install_args+=(--prefix "$HOME/.local")
91
91
  install_bin="$HOME/.local/bin/rea"
92
92
  else
93
93
  npm_prefix="$(npm prefix --global)" || fail "the npm global prefix could not be read. Repair the npm configuration, then retry."
94
94
  install_bin="$npm_prefix/bin/rea"
95
95
  fi
96
+ install_args+=("$PACKAGE@$version")
96
97
 
97
98
  printf 'REA install plan\n'
98
99
  printf ' Version: %s\n' "$version"
99
100
  printf ' Runtime: Node.js %s\n' "$node_version"
100
- printf ' Command: npm install --global %s@%s\n' "$PACKAGE" "$version"
101
+ printf ' Command:'
102
+ printf ' %q' npm "${install_args[@]}"
103
+ printf '\n'
101
104
  printf ' Binary: %s\n' "$install_bin"
102
105
  printf ' Setup: %s\n' "$([[ "$start_setup" == true ]] && printf 'start when a terminal is available' || printf 'skipped')"
103
106
 
@@ -107,7 +110,7 @@ if [[ "$dry_run" == true ]]; then
107
110
  fi
108
111
 
109
112
  printf 'Installing %s@%s...\n' "$PACKAGE" "$version"
110
- npm install --global ${prefix_args[@]+"${prefix_args[@]}"} "$PACKAGE@$version" || fail "npm could not install REA. Check registry access and npm permissions, then retry."
113
+ npm "${install_args[@]}" || fail "npm could not install REA. Check registry access and npm permissions, then retry."
111
114
  [[ -x "$install_bin" ]] || fail "npm completed without installing the rea command. Check the npm global bin directory and PATH, then retry."
112
115
  installed_version="$("$install_bin" --version 2>/dev/null | tr -d '[:space:]')" || fail "the installed REA version could not be read. Reinstall the requested version, then retry."
113
116
  [[ "$installed_version" == "$version" ]] || fail "installed version $installed_version does not match $version. Reinstall the requested version, then retry."
@@ -0,0 +1,28 @@
1
+ The MIT License (MIT)
2
+ =====================
3
+
4
+ Copyright © 2023-2025 Washi
5
+
6
+ Permission is hereby granted, free of charge, to any person obtaining a copy
7
+ of this software and associated documentation files (the “Software”), to deal
8
+ in the Software without restriction, including without limitation the rights
9
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10
+ copies of the Software, and to permit persons to whom the Software is
11
+ furnished to do so, subject to the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be included in all
14
+ copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
22
+ SOFTWARE.
23
+
24
+ The read-only NativeAOT parser adapts format and hydration semantics from
25
+ Washi1337/ghidra-nativeaot commit
26
+ effeb734fc570c32650f88b159608979dc7b423e (MIT). MethodTable field layout was
27
+ cross-checked against .NET runtime src/coreclr/nativeaot/Runtime/inc/MethodTable.h
28
+ at dotnet/runtime commit a3b2d40328be0be3f8dd43f0e5cc925b8827b044 (MIT).
@@ -1,9 +1,9 @@
1
1
  {
2
- "packageVersion": "6.2.0",
2
+ "packageVersion": "6.4.0",
3
3
  "platform": "win32",
4
4
  "architecture": "x64",
5
5
  "abiVersion": 1,
6
6
  "nodeApiVersion": 8,
7
7
  "artifact": "rea-windows-x64.node",
8
- "artifactSha256": "fedfd4ce8b3e15784d1a6ef7e9ba7eb9052e8335a1c75b6d69cd7e94f29ab1f8"
8
+ "artifactSha256": "c4fd9f377e567bcf15ba3fec3e0b0ed965d82b765a2adcdac49e46f14524b6d5"
9
9
  }
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "rea-agents",
3
3
  "mcpName": "io.github.morluto/rea",
4
- "version": "6.2.0",
4
+ "version": "6.4.0",
5
5
  "description": "Reverse engineer anything from your terminal or agent with one CLI and MCP server.",
6
6
  "license": "MIT",
7
7
  "repository": {
@@ -30,6 +30,9 @@
30
30
  "access": "public"
31
31
  },
32
32
  "type": "module",
33
+ "imports": {
34
+ "#javascript-analysis-worker": "./dist/composition/javascriptAnalysisWorkerProcess.js"
35
+ },
33
36
  "bin": {
34
37
  "rea": "scripts/rea.mjs",
35
38
  "rea-agents": "scripts/rea.mjs"
@@ -50,6 +53,8 @@
50
53
  "bridge/ghidra/ReaGhidraBridge.java",
51
54
  "bridge/ghidra/ReaGhidraExtensions.java",
52
55
  "bridge/ghidra/ReaGhidraPrepareCom.java",
56
+ "bridge/ghidra/ReaGhidraApplySeeds.java",
57
+ "bridge/ghidra/ReaGhidraNoReturnFix.java",
53
58
  "bridge/android/ReaJadxBridge.java",
54
59
  "bridge/mitmproxy/capture.py",
55
60
  "scripts/rea.mjs",
@@ -76,9 +81,11 @@
76
81
  "bridge/pwndbg/launch_impl.py",
77
82
  "bridge/pwndbg/core_context.py",
78
83
  "third_party/pwndbg/README.md",
79
- "third_party/pwndbg/LICENSE.md"
84
+ "third_party/pwndbg/LICENSE.md",
85
+ "licenses/nativeaot-parser-MIT.txt"
80
86
  ],
81
87
  "scripts": {
88
+ "release:notes": "node scripts/release-notes.mjs",
82
89
  "deps:check": "node scripts/check-dependency-install.mjs",
83
90
  "metadata:generate": "node scripts/run-exclusive.mjs artifacts node scripts/generate-package-metadata.mjs",
84
91
  "metadata:check": "node scripts/generate-package-metadata.mjs --check",
@@ -88,7 +95,7 @@
88
95
  "prebuild": "npm run deps:check",
89
96
  "build": "node scripts/run-exclusive.mjs artifacts turbo run artifacts:skills --force",
90
97
  "precheck": "npm run deps:check",
91
- "check": "node scripts/run-exclusive.mjs artifacts turbo run typecheck lint format:check knip metadata:check",
98
+ "check": "node scripts/run-exclusive.mjs artifacts turbo run typecheck lint format:check knip metadata:check && npm run verify:architecture-guards",
92
99
  "precheck:fast": "npm run deps:check",
93
100
  "check:fast": "turbo run typecheck lint --output-logs=errors-only",
94
101
  "precheck:changed": "npm run deps:check",
@@ -98,8 +105,10 @@
98
105
  "precheck:pr": "npm run deps:check",
99
106
  "check:pr": "node scripts/run-exclusive.mjs artifacts turbo run typecheck lint format:check knip metadata:check test:run && npm run docs:check && npm run jscpd && npm run scan:todos",
100
107
  "precheck:ci": "npm run deps:check",
101
- "check:ci": "node scripts/run-exclusive.mjs artifacts turbo run typecheck lint format:check knip metadata:check jscpd scan:todos",
108
+ "check:ci": "node scripts/run-exclusive.mjs artifacts turbo run typecheck lint format:check knip metadata:check jscpd scan:todos && npm run verify:architecture-guards",
102
109
  "build:cached": "node scripts/check-dependency-install.mjs && node scripts/run-exclusive.mjs artifacts turbo run artifacts:skills",
110
+ "build:termux": "node scripts/run-exclusive.mjs artifacts npm run build:termux:run",
111
+ "build:termux:run": "npm run compile:termux && npm run artifacts:skills",
103
112
  "format": "oxfmt .",
104
113
  "format:check": "oxfmt --check .",
105
114
  "lint": "oxlint && npm run verify:module-boundaries",
@@ -144,7 +153,13 @@
144
153
  "verify:native-ui": "npm run build:cached && node scripts/verify-native-ui.mjs",
145
154
  "verify:keyed-archive": "npm run build:cached && node scripts/verify/apple/keyed-archive.mjs",
146
155
  "verify:macos-bundle": "npm run build:cached && node scripts/verify/apple/macos-bundle.mjs",
156
+ "verify:legacy-simulator": "npm run build:cached && node scripts/verify/apple/legacy-simulator.mjs",
157
+ "verify:architecture-guards": "node scripts/verify/architecture-guards.mjs",
158
+ "verify:apktool": "npm run build:cached && node scripts/verify-apktool.mjs",
159
+ "verify:adb": "npm run build:cached && node scripts/verify-adb.mjs",
147
160
  "verify:ghidra": "npm run build:cached && node scripts/verify-real-ghidra.mjs",
161
+ "verify:ghidra:seeds": "npm run build:cached && node scripts/verify/ghidra/seeds.mjs",
162
+ "verify:ghidra:mips": "npm run build:cached && node scripts/verify-real-ghidra-mips.mjs",
148
163
  "verify:ghidra:swift": "npm run build:cached && node scripts/verify-real-ghidra-swift.mjs",
149
164
  "verify:ida": "npm run build:cached && node scripts/verify-real-ida.mjs",
150
165
  "verify:ghidra:switch": "npm run build:cached && node scripts/verify-real-ghidra-switch.mjs",
@@ -167,6 +182,7 @@
167
182
  "verify:firmware": "npm run build:cached && node scripts/verify/firmware/analysis.mjs",
168
183
  "fixtures:firmware": "node scripts/fixtures/firmware/generate.mjs",
169
184
  "verify:android": "npm run build:cached && node scripts/verify/android/analysis.mjs",
185
+ "verify:jeb": "npm run build:cached && node scripts/verify-jeb.mjs",
170
186
  "fixtures:android": "node scripts/fixtures/android/fetch.mjs",
171
187
  "verify:agent": "npm run build:cached && node scripts/verify-agent-experience.mjs",
172
188
  "verify:hopper:linux": "npm run verify:fixtures && npm run build:cached && node scripts/verify-real-hopper-linux.mjs",
@@ -177,6 +193,17 @@
177
193
  "verify:readiness": "npm run build:cached && npm run verify:fixtures && node scripts/verify-reconstruction-readiness.mjs",
178
194
  "verify:package": "npm run build:cached && node scripts/verify-package.mjs",
179
195
  "verify:package:windows": "npm run build:cached && node scripts/verify-windows-package.mjs",
196
+ "verify:qwen-client": "npm run build:cached && node scripts/verify-qwen-client.mjs",
197
+ "verify:gemini-client": "npm run build:cached && node scripts/verify-gemini-client.mjs",
198
+ "verify:opencode-client": "npm run build:cached && node scripts/verify-opencode-client.mjs",
199
+ "verify:grok-client": "npm run build:cached && node scripts/verify-grok-client.mjs",
200
+ "verify:commandcode-client": "npm run build:cached && node scripts/verify-commandcode-client.mjs",
201
+ "verify:omp-client": "npm run build:cached && node scripts/verify-omp-client.mjs",
202
+ "verify:copilot-client": "npm run build:cached && node scripts/verify-copilot-client.mjs",
203
+ "verify:claude-client": "npm run build:cached && node scripts/verify-claude-client.mjs",
204
+ "verify:pi-client": "npm run build:cached && node scripts/verify-native-agent-client.mjs pi",
205
+ "verify:hermes-client": "npm run build:cached && node scripts/verify-native-agent-client.mjs hermes",
206
+ "verify:deepseek-client": "npm run build:cached && node scripts/verify-deepseek-client.mjs",
180
207
  "probe:windows-capabilities": "npm run build:cached && node scripts/windows-capabilities.mjs",
181
208
  "verify:published": "node scripts/verify-published-package.mjs",
182
209
  "config:print": "node scripts/print-mcp-config.mjs",
@@ -218,6 +245,7 @@
218
245
  "verify:recorded:crash": "npm run build:cached && node scripts/verify-recorded-crash.mjs",
219
246
  "mcp-catalog:check:built": "node scripts/generate-mcp-tool-catalog.mjs --check",
220
247
  "compile": "node scripts/clean-build-output.mjs && tsc -p tsconfig.build.json",
248
+ "compile:termux": "node scripts/clean-build-output.mjs && node --max-old-space-size=3072 node_modules/typescript-termux/lib/tsc.js -p tsconfig.build.json",
221
249
  "artifacts:mcp-catalog": "node scripts/generate-mcp-tool-catalog.mjs",
222
250
  "artifacts:skills": "node scripts/generate-skill-metadata.mjs",
223
251
  "artifacts:product-catalog": "node scripts/generate-product-catalog.mjs",
@@ -243,6 +271,7 @@
243
271
  "@lydell/node-pty": "1.1.0",
244
272
  "@modelcontextprotocol/client": "2.3.1",
245
273
  "@modelcontextprotocol/server": "2.3.1",
274
+ "@xmldom/xmldom": "0.9.12",
246
275
  "@xterm/addon-serialize": "0.14.0",
247
276
  "@xterm/headless": "6.0.0",
248
277
  "@zip.js/zip.js": "2.15.0",
@@ -263,10 +292,12 @@
263
292
  "plist": "5.0.0",
264
293
  "semver": "7.8.5",
265
294
  "smol-toml": "1.9.0",
295
+ "stream-json": "3.7.0",
266
296
  "write-file-atomic": "7.0.0",
267
297
  "ws": "8.21.0",
268
298
  "zod": "4.4.3",
269
- "evmole": "0.9.3"
299
+ "evmole": "0.9.3",
300
+ "yaml": "2.9.0"
270
301
  },
271
302
  "overrides": {
272
303
  "vitepress": {
@@ -289,8 +320,8 @@
289
320
  "oxlint": "1.87.0",
290
321
  "turbo": "2.11.7",
291
322
  "typescript": "7.0.2",
323
+ "typescript-termux": "npm:typescript@5.9.3",
292
324
  "vitepress": "1.6.4",
293
- "vitest": "5.0.3",
294
- "yaml": "2.9.0"
325
+ "vitest": "5.0.3"
295
326
  }
296
327
  }
package/scripts/rea.mjs CHANGED
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
 
3
3
  import { access } from "node:fs/promises";
4
- import { dirname, resolve } from "node:path";
4
+ import { dirname, join, resolve } from "node:path";
5
5
  import { fileURLToPath } from "node:url";
6
6
 
7
7
  // Route production MCP before importing Incur. Incur owns registration helpers
@@ -15,6 +15,21 @@ const isMcpMode =
15
15
  args.length === 1 && (args[0] === "--mcp" || args[0] === "mcp");
16
16
  const isMcpDoctorMode = args[0] === "mcp" && args[1] === "doctor";
17
17
  const packageRoot = resolve(dirname(fileURLToPath(import.meta.url)), "..");
18
+
19
+ // Playwright's registry assumes one of its three desktop host platforms when
20
+ // it chooses the browser cache directory. Termux reports `android`, although
21
+ // its Node runtime and filesystem are POSIX-compatible. Keep the cache path
22
+ // explicit so REA can start on Termux. Browser launch still requires a
23
+ // caller-supplied Android-compatible Chromium executable.
24
+ if (
25
+ process.platform === "android" &&
26
+ process.env.PLAYWRIGHT_BROWSERS_PATH === undefined
27
+ ) {
28
+ const cacheRoot =
29
+ process.env.XDG_CACHE_HOME ?? join(process.env.HOME ?? ".", ".cache");
30
+ process.env.PLAYWRIGHT_BROWSERS_PATH = join(cacheRoot, "ms-playwright");
31
+ }
32
+
18
33
  const runtimeFiles = isMcpMode
19
34
  ? ["dist/main.js"]
20
35
  : isMcpDoctorMode
@@ -2,8 +2,8 @@
2
2
  name: reverse-engineer-anything
3
3
  description: Reverse engineer native, managed, Electron/JavaScript, packaged, firmware, and browser targets with REA. Use shipped-artifact or requested runtime evidence to explain features, compare versions, decompile code, or guide a reconstruction. Skip REA for ordinary source-repository architecture analysis.
4
4
  metadata:
5
- version: "34"
6
- tool_count: 139
5
+ version: "37"
6
+ tool_count: 170
7
7
  ---
8
8
 
9
9
  # REA
@@ -26,50 +26,18 @@ a skill installed from repository main may describe capabilities absent from
26
26
  an older npm release. Keep complete inline Evidence when that server does not
27
27
  advertise retained references.
28
28
 
29
- When tools are absent or registration is stale:
30
-
31
- 1. Diagnose without changing files. For Codex, run
32
- `npx -y rea-agents@latest doctor --client codex --json`. Substitute the current
33
- supported client: `claude_code`, `claude_desktop`, `codex`, `cursor`,
34
- `gemini_cli`, `windsurf`, `devin`, `opencode`, `antigravity`, `copilot_cli`,
35
- `commandcode`, `vscode`, `grok_build`, or `grok_bot`. `grok_bot` has no local
36
- file registration: doctor reports the Grok Bot chat step, and setup does not
37
- write `mcp.json`. If the client is unknown, use `doctor --json` and
38
- inspect its registration results before choosing a setup scope.
39
- 2. Distinguish the reason. Missing, malformed, or stale registration needs a
40
- scoped configuration repair. An aligned registration with no tools in the
41
- active session needs a restart/reconnection; doctor cannot prove that the
42
- current agent has connected. A missing provider affects only tasks requiring
43
- that provider: static JavaScript inspection needs neither Hopper nor Ghidra,
44
- and Android inspection has separate bring-your-own JADX/Java prerequisites.
45
- 3. For a configuration repair, prepare the read-only plan:
46
- `npx -y rea-agents@latest setup --client codex --dry-run --json`.
47
- Use the current client's ID, show its exact proposed paths, backups, and
48
- changes, and obtain approval before setup writes configuration or installs
49
- Hopper. Setup normally installs the matching bundled skill too; include that
50
- replacement in the reviewed plan. After approval, apply the same scope with
51
- `npx -y rea-agents@latest setup --client codex --yes`. Add `--install-hopper`
52
- only if that separate installation was needed and explicitly approved.
53
- 4. Restart/reconnect the affected agent. Verify that REA tools actually appear
54
- in the session, then resume the original investigation. If they remain
55
- absent, inspect the client's MCP launch error rather than repeating setup.
56
-
57
- REA setup never installs or upgrades Node.js, npm, Homebrew, Java, Ghidra, IDA,
58
- JADX, Binwalk, or Unblob. Use existing prerequisites; do not install unrelated
59
- software to repair
60
- MCP registration. For an unsupported client, use manual stdio registration
61
- with a version-pinned `rea-agents` package or continue through the CLI.
62
-
63
- A concrete CLI fallback for an operator-supplied JavaScript tree or ASAR is:
64
-
65
- ```bash
66
- npx -y rea-agents@latest analyze-javascript-application /absolute/path/to/app --json
67
- ```
68
-
69
- No MCP registration or native engine is required. Read the returned Evidence,
70
- graph, limitations, and unknowns with the same care as an MCP result; the CLI
71
- returns the Evidence record directly. This fallback does not establish that
72
- MCP is configured. Native CLI tasks still require their selected engine.
29
+ If tools are absent, a call is blocked by the client, or a required provider is
30
+ unavailable, read [connection and recovery](references/connection-and-recovery.md).
31
+ Diagnose the observed blocker, continue useful supported work, and resume the
32
+ original task after repair. Client approval, shell PATH, registration and engine
33
+ availability have different remedies; avoid repeating setup for all of them.
34
+
35
+ Prefer an existing `rea` CLI. When none is installed and REA package acquisition
36
+ is within the authorized scope, use `npx -y rea-agents@6.4.0` in its place.
37
+ Configuration repair starts with a read-only setup plan; show paths, backups and
38
+ skill replacement before applying authorized changes. Preserve existing approval
39
+ and target-execution boundaries. REA setup never installs or upgrades unrelated
40
+ software, including Node.js, npm, Homebrew, Java, Ghidra, IDA, JADX, Binwalk or Unblob.
73
41
 
74
42
  ## Route the target first
75
43
 
@@ -115,6 +83,9 @@ explicit path or endpoint and do not need it.
115
83
  Historical PIDs do not select live processes. Request `include_debugger_context`
116
84
  only when core-only mapping candidates help; see the
117
85
  [recorded crash guide](https://github.com/morluto/rea/blob/main/docs/recorded-crashes.md).
86
+ - PE resource type/name/language trees and static icon group references:
87
+ `inspect_pe_resources` with an explicit path. This portable operation requires
88
+ no active target or engine; opaque payloads retain file ranges and SHA-256.
118
89
  - Native executable, library, or analysis database: `open_binary`, then
119
90
  use focused analysis tools directly; call `binary_overview` when metadata or
120
91
  inventory context is useful and available from the selected provider.
@@ -131,9 +102,11 @@ after opening; IDA does not supply `binary_overview`. Consult session availabili
131
102
  when composing broader workflows. Modern direct callers and unsupported dossier
132
103
  facets remain unknown; live IDA results are not replayed from snapshots.
133
104
 
134
- If the app is missing, ask which app to inspect. Resolve a human-readable app
135
- name to one clear installed artifact when possible; ask only when matches are
136
- ambiguous. Never choose an example app on the user's behalf.
105
+ If the user says only "my app" without a name, path, or target already selected
106
+ for this task, ask which app before searching for artifacts. Paths in unrelated
107
+ saved reports and nearby test fixtures do not select the user's target. Resolve
108
+ an actual human-readable app name to one clear installed artifact when possible;
109
+ ask when matches are ambiguous. Never choose an example app on the user's behalf.
137
110
 
138
111
  In a target-free session, use `open_binary` to bind any archive/package or
139
112
  native target whose analysis tool operates on the active target. Do not call an
@@ -144,7 +117,15 @@ list stays complete; availability depends on the operation, target, and host.
144
117
  ## Work summary-first
145
118
 
146
119
  Start with the default result and use its inline Evidence and graph context.
147
- Do not repeat an identical tool call. Make a focused follow-up only when the
120
+ For a JavaScript application or ELF layout whose size is unknown or large,
121
+ call `analyze_javascript_application` or `inspect_binary_layout` with
122
+ `"detail": "summary"`, then inspect the retained `parent_evidence_id` with
123
+ `inspect_analysis_view`.
124
+ Page module identities and select the returned `node_id` before requesting an
125
+ item; a single file path can represent several graph roles. Do not repeat an
126
+ identical analysis or rejected call without a changed input or resolved blocker.
127
+ Recheck session state when a lifecycle change makes that status useful.
128
+ Make a focused follow-up only when the
148
129
  returned result leaves a specific question unanswered.
149
130
 
150
131
  If MCP reports `resource_constraint` with `details.resource: "transport"`, call
@@ -155,6 +136,24 @@ session to a selected path. The analysis remains complete in the ledger; avoid
155
136
  repeating it merely to request the same oversized response. Complete CLI JSON
156
137
  output also streams without a single MCP frame.
157
138
 
139
+ When the retained parent ID is unknown, use `get_evidence_bundle` with
140
+ `detail: "summary"` and exact filters for operation, target SHA-256,
141
+ analysis-profile digest or canonical procedure address. Select its returned
142
+ Evidence ID for the next view instead of requesting the complete bundle.
143
+ `retention: "complete-record"` means the whole record is stored; native
144
+ value-flow truncation and unknown metadata remain separate. For an exported
145
+ portable bundle, use `rea inspect-evidence-bundle` with JSON containing `path`,
146
+ `detail: "summary"` and the same `filters`. Reading that file still requires
147
+ validating its full contents within the local memory budget.
148
+
149
+ A client can also truncate a successful tool result without a REA transport
150
+ error. Treat that preview as incomplete; use the retained parent ID for smaller
151
+ views or export when the full record is needed. Do not parse the preview as
152
+ canonical JSON or repeat the producer. For JavaScript, read the
153
+ [module-view and trace recipes](references/javascript-applications.md) before
154
+ drilling into a large graph; a broad bidirectional trace can expand unrelated
155
+ containment relationships even after summary analysis.
156
+
158
157
  Every conclusion must distinguish observations, inferences, and unknowns. Cite
159
158
  Evidence IDs, preserve limitations and incomplete coverage, and never imply
160
159
  that static analysis observed execution. Runtime requests execute the declared
@@ -162,7 +161,9 @@ target and lifecycle; do not broaden the target or action beyond those fields.
162
161
 
163
162
  Within the user's requested investigation, call available analysis tools
164
163
  directly. REA does not require permission grants or per-call approval flags.
165
- Follow the declared request scope and the host's actual access requirements.
164
+ The agent client can independently require approval. Follow the declared request
165
+ scope and the host's actual access requirements; use the recovery guide for an
166
+ observed client-policy rejection.
166
167
 
167
168
  ## Plan broader investigations
168
169