rea-agents 4.0.1 → 5.0.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 (740) hide show
  1. package/README.md +257 -96
  2. package/bridge/android/ReaJadxBridge.java +247 -0
  3. package/bridge/ghidra/ReaGhidraBridge.java +358 -15
  4. package/bridge/ghidra/ReaGhidraExtensions.java +113 -0
  5. package/bridge/ghidra/ReaGhidraPrepareCom.java +32 -0
  6. package/bridge/native/NativeUIChildren.swift +27 -0
  7. package/bridge/native/ReaNativeUI.swift +30 -16
  8. package/dist/android/AndroidTargetSnapshot.js +36 -0
  9. package/dist/android/JadxAnalysis.js +193 -0
  10. package/dist/android/JadxConfiguration.js +57 -0
  11. package/dist/android/JadxMcpTransport.js +172 -0
  12. package/dist/android/JadxProtocol.js +109 -0
  13. package/dist/android/JadxProvider.js +259 -0
  14. package/dist/android/JadxRelease.js +27 -0
  15. package/dist/android/JadxSession.js +111 -0
  16. package/dist/application/AnalysisContextQueries.js +2 -1
  17. package/dist/application/AppBundleExecutable.js +141 -0
  18. package/dist/application/ArtifactExtraction.js +7 -4
  19. package/dist/application/ArtifactGraphConstruction.js +10 -17
  20. package/dist/application/ArtifactInventory/classify.js +1 -1
  21. package/dist/application/ArtifactInventory/scanCanonical.js +9 -8
  22. package/dist/application/ArtifactInventory/scanReader.js +1 -1
  23. package/dist/application/ArtifactInventory.js +1 -1
  24. package/dist/application/BinaryTargetResolver.js +32 -68
  25. package/dist/application/BrowserObservationService.js +2 -1
  26. package/dist/application/BrowserScenarioCaptureService.js +2 -1
  27. package/dist/application/BrowserScenarioEvidence.js +2 -2
  28. package/dist/application/CallPathTracing.js +2 -1
  29. package/dist/application/CapabilityInventory.js +78 -2
  30. package/dist/application/ClientConfigPath.js +3 -1
  31. package/dist/application/ClientConfigurationDocument.js +83 -13
  32. package/dist/application/ClientRegistrationStatus.js +15 -9
  33. package/dist/application/DirectAnalysis.js +35 -21
  34. package/dist/application/DirectAnalysisStatus.js +7 -8
  35. package/dist/application/Doctor.js +48 -8
  36. package/dist/application/DoctorDiagnostics.js +9 -7
  37. package/dist/application/DoctorScope.js +1 -1
  38. package/dist/application/EnhancedLiteralTracing.js +2 -1
  39. package/dist/application/EnhancedToolTypes.js +2 -1
  40. package/dist/application/EnhancedTools.js +7 -5
  41. package/dist/application/EvidenceBundleCommands.js +3 -2
  42. package/dist/application/EvidenceBundleFiles.js +1 -1
  43. package/dist/application/EvidenceInputResolver.js +30 -0
  44. package/dist/application/FilesystemSnapshot.js +20 -5
  45. package/dist/application/FunctionAnalysisEvidence.js +32 -0
  46. package/dist/application/InventoryProjectionEvidence.js +2 -1
  47. package/dist/application/InvestigationProviders.js +6 -0
  48. package/dist/application/JsonFiles.js +1 -1
  49. package/dist/application/LinuxHopper.js +20 -6
  50. package/dist/application/MacHopper.js +20 -7
  51. package/dist/application/OptionalObservationProviders.js +3 -0
  52. package/dist/application/ProcessCaptureCapability.js +1 -1
  53. package/dist/application/ProcessCaptureError.js +1 -1
  54. package/dist/application/ProcessCaptureJournal.js +3 -1
  55. package/dist/application/ProcessCaptureLifecycle.js +8 -5
  56. package/dist/application/ProcessCli.js +14 -6
  57. package/dist/application/ProcessEvidence.js +2 -6
  58. package/dist/application/ProcessHarness.js +23 -11
  59. package/dist/application/ProcessNormalization.js +12 -5
  60. package/dist/application/ProcessSampling.js +3 -1
  61. package/dist/application/ReconstructionCoverageService.js +4 -7
  62. package/dist/application/ReconstructionObligationCandidates.js +5 -2
  63. package/dist/application/ReconstructionObligationLedgerService.js +2 -1
  64. package/dist/application/ReferenceSourceImport.js +2 -0
  65. package/dist/application/ReferenceSourceImportEntries.js +22 -3
  66. package/dist/application/ReferenceSourceImportPolicy.js +4 -2
  67. package/dist/application/ReferenceSourceImportTypes.js +5 -0
  68. package/dist/application/ReferenceSourceVcsAdapter.js +35 -4
  69. package/dist/application/Setup.js +11 -130
  70. package/dist/application/SetupClientConfiguration.js +36 -22
  71. package/dist/application/SetupHost.js +126 -0
  72. package/dist/application/SetupPlan.js +1 -1
  73. package/dist/application/SetupRegistrationEnvironment.js +1 -2
  74. package/dist/application/SetupSkill.js +9 -3
  75. package/dist/application/SetupTypes.js +17 -0
  76. package/dist/application/StoreFileLock.js +7 -2
  77. package/dist/application/SupportedClients.js +8 -0
  78. package/dist/application/Uninstall.js +32 -21
  79. package/dist/application/UpdateMaintenance.js +3 -3
  80. package/dist/application/UpdateRuntime.js +5 -2
  81. package/dist/application/ValidateSelectedWebScript.js +27 -0
  82. package/dist/application/WebModuleTraceService.js +209 -0
  83. package/dist/application/WebRuntimeService.js +73 -0
  84. package/dist/application/WebScriptExportService.js +115 -0
  85. package/dist/application/WebSourceLocationService.js +160 -0
  86. package/dist/application/WindowsCapabilities.js +7 -7
  87. package/dist/application/android/AndroidAnalysisService.js +37 -0
  88. package/dist/application/{AndroidApplicationService.js → android/AndroidApplicationService.js} +3 -3
  89. package/dist/application/{AppleApplicationService.js → apple/AppleApplicationService.js} +5 -5
  90. package/dist/application/{AnalysisClientCleanup.js → binary/AnalysisClientCleanup.js} +2 -2
  91. package/dist/application/{AnalysisProviderEvaluation.js → binary/AnalysisProviderEvaluation.js} +8 -6
  92. package/dist/application/{AnalysisProviderRegistry.js → binary/AnalysisProviderRegistry.js} +5 -4
  93. package/dist/application/{AnalysisSnapshotCache.js → binary/AnalysisSnapshotCache.js} +8 -7
  94. package/dist/application/{AnalysisSnapshotFiles.js → binary/AnalysisSnapshotFiles.js} +4 -4
  95. package/dist/application/{BinarySession.js → binary/BinarySession.js} +26 -11
  96. package/dist/application/{BinarySessionComposition.js → binary/BinarySessionComposition.js} +2 -1
  97. package/dist/application/{BinarySessionExecution.js → binary/BinarySessionExecution.js} +9 -4
  98. package/dist/application/{BinarySessionOpen.js → binary/BinarySessionOpen.js} +7 -6
  99. package/dist/application/{BinarySessionRecords.js → binary/BinarySessionRecords.js} +34 -40
  100. package/dist/application/{CompositeProvider.js → binary/CompositeProvider.js} +2 -2
  101. package/dist/application/{LazyAnalysisProvider.js → binary/LazyAnalysisProvider.js} +6 -4
  102. package/dist/application/{SessionProviderRouter.js → binary/SessionProviderRouter.js} +7 -4
  103. package/dist/application/firmware/FirmwareAnalysisPort.js +1 -0
  104. package/dist/application/firmware/FirmwareAnalysisService.js +35 -0
  105. package/dist/application/{EvidenceLedger.js → investigation/EvidenceLedger.js} +44 -6
  106. package/dist/application/investigation/InvestigationRecordPort.js +1 -0
  107. package/dist/application/investigation/InvestigationRecords.js +69 -0
  108. package/dist/application/{UnknownEvidence.js → investigation/UnknownEvidence.js} +1 -1
  109. package/dist/application/{ElectronActiveEvidence.js → javascript/ElectronActiveEvidence.js} +4 -4
  110. package/dist/application/javascript/ElectronActiveObservationPort.js +1 -0
  111. package/dist/application/{ElectronActiveObservationService.js → javascript/ElectronActiveObservationService.js} +3 -2
  112. package/dist/application/{ElectronBoundaryAnalysis.js → javascript/ElectronBoundaryAnalysis.js} +1 -1
  113. package/dist/application/{ElectronBoundaryGraphContext.js → javascript/ElectronBoundaryGraphContext.js} +1 -1
  114. package/dist/application/{ElectronEvidence.js → javascript/ElectronEvidence.js} +2 -2
  115. package/dist/application/javascript/ElectronObservationPort.js +1 -0
  116. package/dist/application/{ElectronObservationService.js → javascript/ElectronObservationService.js} +3 -2
  117. package/dist/application/{JavaScriptApplicationEvidence.js → javascript/JavaScriptApplicationEvidence.js} +3 -3
  118. package/dist/application/{JavaScriptApplicationEvidenceGraph.js → javascript/JavaScriptApplicationEvidenceGraph.js} +5 -5
  119. package/dist/application/javascript/JavaScriptApplicationService.js +99 -0
  120. package/dist/application/{JavaScriptApplicationWorkflowEvidence.js → javascript/JavaScriptApplicationWorkflowEvidence.js} +3 -3
  121. package/dist/application/{JavaScriptApplicationWorkflowService.js → javascript/JavaScriptApplicationWorkflowService.js} +12 -11
  122. package/dist/application/{JavaScriptArtifactAnalysis.js → javascript/JavaScriptArtifactAnalysis.js} +12 -26
  123. package/dist/application/javascript/JavaScriptArtifactAnalysisTypes.js +1 -0
  124. package/dist/application/{JavaScriptArtifactGraphAccumulator.js → javascript/JavaScriptArtifactGraphAccumulator.js} +16 -2
  125. package/dist/application/{JavaScriptArtifactGraphBuilder.js → javascript/JavaScriptArtifactGraphBuilder.js} +2 -2
  126. package/dist/application/{JavaScriptArtifactGraphContext.js → javascript/JavaScriptArtifactGraphContext.js} +1 -1
  127. package/dist/application/{JavaScriptArtifactGraphDocuments.js → javascript/JavaScriptArtifactGraphDocuments.js} +1 -1
  128. package/dist/application/{JavaScriptArtifactGraphFindings.js → javascript/JavaScriptArtifactGraphFindings.js} +20 -7
  129. package/dist/application/{JavaScriptArtifactGraphStructure.js → javascript/JavaScriptArtifactGraphStructure.js} +1 -1
  130. package/dist/application/{JavaScriptArtifactPathResolution.js → javascript/JavaScriptArtifactPathResolution.js} +12 -14
  131. package/dist/application/{JavaScriptArtifactReconstruction.js → javascript/JavaScriptArtifactReconstruction.js} +4 -8
  132. package/dist/application/{JavaScriptJsonModules.js → javascript/JavaScriptJsonModules.js} +3 -2
  133. package/dist/application/{JavaScriptModuleRelationships.js → javascript/JavaScriptModuleRelationships.js} +5 -3
  134. package/dist/application/javascript/JavaScriptRecoveryPort.js +1 -0
  135. package/dist/application/javascript/JavaScriptRecoveryService.js +52 -0
  136. package/dist/application/{JavaScriptReturnShapeProjection.js → javascript/JavaScriptReturnShapeProjection.js} +3 -3
  137. package/dist/application/{JavaScriptRuntimeObservationEvidence.js → javascript/JavaScriptRuntimeObservationEvidence.js} +2 -2
  138. package/dist/application/javascript/JavaScriptRuntimeObservationPort.js +1 -0
  139. package/dist/application/{JavaScriptRuntimeObservationService.js → javascript/JavaScriptRuntimeObservationService.js} +3 -2
  140. package/dist/application/{JavaScriptRuntimeReconciliationEvidence.js → javascript/JavaScriptRuntimeReconciliationEvidence.js} +3 -3
  141. package/dist/application/{JavaScriptRuntimeReconciliationService.js → javascript/JavaScriptRuntimeReconciliationService.js} +6 -5
  142. package/dist/application/{JavaScriptSemanticGraphAsyncProjection.js → javascript/JavaScriptSemanticGraphAsyncProjection.js} +1 -1
  143. package/dist/application/{JavaScriptSemanticGraphBuilder.js → javascript/JavaScriptSemanticGraphBuilder.js} +5 -3
  144. package/dist/application/{JavaScriptSemanticGraphChildProcessProjection.js → javascript/JavaScriptSemanticGraphChildProcessProjection.js} +1 -1
  145. package/dist/application/{JavaScriptSemanticGraphConstruction.js → javascript/JavaScriptSemanticGraphConstruction.js} +3 -2
  146. package/dist/application/{JavaScriptSemanticGraphDataProjection.js → javascript/JavaScriptSemanticGraphDataProjection.js} +1 -1
  147. package/dist/application/{JavaScriptSemanticGraphFingerprintProjection.js → javascript/JavaScriptSemanticGraphFingerprintProjection.js} +1 -1
  148. package/dist/application/{JavaScriptSemanticGraphFlowProjection.js → javascript/JavaScriptSemanticGraphFlowProjection.js} +2 -2
  149. package/dist/application/{JavaScriptSemanticGraphObjectProjection.js → javascript/JavaScriptSemanticGraphObjectProjection.js} +1 -1
  150. package/dist/application/{JavaScriptSemanticGraphProjection.js → javascript/JavaScriptSemanticGraphProjection.js} +2 -2
  151. package/dist/application/{JavaScriptSemanticGraphResourceProjection.js → javascript/JavaScriptSemanticGraphResourceProjection.js} +1 -1
  152. package/dist/application/{JavaScriptSemanticTraceService.js → javascript/JavaScriptSemanticTraceService.js} +6 -5
  153. package/dist/application/{ManagedApplicationGraphService.js → managed/ManagedApplicationGraphService.js} +7 -6
  154. package/dist/application/{ManagedMemberComparisonService.js → managed/ManagedMemberComparisonService.js} +10 -8
  155. package/dist/application/{ManagedNativeVerificationService.js → managed/ManagedNativeVerificationService.js} +7 -6
  156. package/dist/application/{ManagedReconstructionService.js → managed/ManagedReconstructionService.js} +7 -6
  157. package/dist/application/{NativeApiInspection.js → native/NativeApiInspection.js} +1 -1
  158. package/dist/application/{NativeCallRoutes.js → native/NativeCallRoutes.js} +3 -3
  159. package/dist/application/{NativeDispatchMetadataInspection.js → native/NativeDispatchMetadataInspection.js} +4 -4
  160. package/dist/application/{NativeUiActionTrace.js → native/NativeUiActionTrace.js} +7 -6
  161. package/dist/application/{NativeValueTrace.js → native/NativeValueTrace.js} +6 -6
  162. package/dist/{application/ArtifactInventory/hash.js → artifacts/ArtifactHash.js} +4 -2
  163. package/dist/artifacts/ArtifactPaths.js +3 -3
  164. package/dist/artifacts/ArtifactProvider.js +10 -38
  165. package/dist/artifacts/ArtifactProviderMetadata.js +36 -0
  166. package/dist/artifacts/AsarArtifactReader.js +195 -23
  167. package/dist/artifacts/AsarEntryStream.js +76 -0
  168. package/dist/artifacts/DirectoryArtifactReader.js +43 -7
  169. package/dist/artifacts/NativeDmgArtifactReader.js +171 -12
  170. package/dist/artifacts/SafeOutputTree.js +26 -10
  171. package/dist/artifacts/ZipArtifactReader.js +1 -0
  172. package/dist/{application → artifacts/apple}/AppleAssetCatalogAnalysis.js +4 -4
  173. package/dist/{application → artifacts/apple}/InterfaceBuilderAnalysis.js +125 -51
  174. package/dist/artifacts/{KeyedArchiveReader.js → apple/KeyedArchiveReader.js} +21 -27
  175. package/dist/artifacts/{NibArchive.js → apple/NibArchive.js} +4 -2
  176. package/dist/artifacts/apple/NibViewHierarchy.js +150 -0
  177. package/dist/{application → artifacts/javascript}/JavaScriptArtifactFiles.js +30 -7
  178. package/dist/artifacts/javascript/JavaScriptArtifactReader.js +6 -0
  179. package/dist/artifacts/readStableArtifact.js +52 -0
  180. package/dist/browser/BrowserProcessStartup.js +3 -1
  181. package/dist/browser/BrowserScenarioSecrets.js +50 -8
  182. package/dist/browser/CdpAuthorizedMainFrame.js +5 -5
  183. package/dist/browser/CdpAuthorizedTarget.js +22 -0
  184. package/dist/browser/CdpBrowserProvider.js +8 -16
  185. package/dist/browser/CdpCaptureDocuments.js +36 -22
  186. package/dist/browser/CdpCaptureEventBodyShapes.js +3 -3
  187. package/dist/browser/CdpCaptureEventHandlers.js +32 -28
  188. package/dist/browser/CdpCaptureEventHelpers.js +6 -6
  189. package/dist/browser/CdpCaptureStorage.js +10 -8
  190. package/dist/browser/CdpCaptureStorageFingerprints.js +25 -23
  191. package/dist/browser/CdpCaptureValues.js +8 -4
  192. package/dist/browser/CdpCommandRejection.js +17 -0
  193. package/dist/browser/CdpConnection.js +59 -17
  194. package/dist/browser/CdpElectronInspection.js +13 -13
  195. package/dist/browser/CdpElectronProvider.js +7 -7
  196. package/dist/browser/CdpElectronScriptEvents.js +6 -6
  197. package/dist/browser/CdpElectronScripts.js +4 -4
  198. package/dist/browser/CdpElectronWorkers.js +4 -4
  199. package/dist/browser/CdpEndpoint.js +22 -10
  200. package/dist/browser/CdpObservationSession.js +20 -24
  201. package/dist/browser/CdpOptionalCommand.js +1 -1
  202. package/dist/browser/CdpPageCapture.js +6 -5
  203. package/dist/browser/CdpPageCaptureScripts.js +2 -2
  204. package/dist/browser/CdpPageCaptureWorkers.js +9 -9
  205. package/dist/browser/CdpSafeMetadata.js +101 -18
  206. package/dist/browser/CdpScreenshot.js +6 -6
  207. package/dist/browser/CdpTargetEvents.js +8 -0
  208. package/dist/browser/CdpTargetSession.js +10 -7
  209. package/dist/browser/CdpWebMcpDiscovery.js +23 -17
  210. package/dist/browser/ElectronFileScope.js +9 -3
  211. package/dist/browser/PlaywrightBrowserScenarioProvider.js +10 -7
  212. package/dist/browser/PlaywrightElectronActiveActions.js +1 -1
  213. package/dist/browser/PlaywrightElectronActiveProvider.js +9 -8
  214. package/dist/browser/PlaywrightExecutionBoundary.js +1 -1
  215. package/dist/browser/PlaywrightScenarioArtifacts.js +10 -5
  216. package/dist/browser/PlaywrightScenarioBrowser.js +3 -1
  217. package/dist/browser/PlaywrightScenarioEvents.js +65 -53
  218. package/dist/browser/PlaywrightScenarioSession.js +13 -3
  219. package/dist/browser/WebSourceMapFetcher.js +55 -58
  220. package/dist/browser/assets/LocalWebScriptArtifacts.js +87 -0
  221. package/dist/browser/assets/PageScriptCapture.js +32 -0
  222. package/dist/browser/assets/PublishWebScripts.js +74 -0
  223. package/dist/browser/assets/ScenarioScriptCapture.js +76 -0
  224. package/dist/browser/assets/ScriptCaptureAdapters.js +57 -0
  225. package/dist/browser/assets/WebArtifactReads.js +56 -0
  226. package/dist/browser/assets/WebSourceLocationArtifacts.js +40 -0
  227. package/dist/browser/execution/CdpEventListeners.js +79 -0
  228. package/dist/browser/execution/CdpExecutionCapture.js +135 -0
  229. package/dist/browser/execution/CdpExecutionCollection.js +57 -0
  230. package/dist/browser/execution/CdpExecutionWindow.js +100 -0
  231. package/dist/browser/execution/CdpListenerSelector.js +22 -0
  232. package/dist/browser/execution/CdpPreciseCoverage.js +48 -0
  233. package/dist/browser/execution/CdpRuntimeInitiator.js +18 -0
  234. package/dist/browser/execution/CdpRuntimeProtocol.js +106 -0
  235. package/dist/browser/execution/CdpRuntimeRequests.js +81 -0
  236. package/dist/browser/execution/CdpRuntimeSession.js +163 -0
  237. package/dist/browser/execution/CdpRuntimeSources.js +223 -0
  238. package/dist/browser/execution/CdpWebRuntimeProvider.js +51 -0
  239. package/dist/browser/modules/NativeModuleResolver.js +210 -0
  240. package/dist/browser/modules/WebModuleArtifacts.js +40 -0
  241. package/dist/browser/network/PlaywrightNetworkContent.js +71 -0
  242. package/dist/browser/network/PlaywrightScenarioNetwork.js +180 -0
  243. package/dist/browser/providerIdentities.js +24 -0
  244. package/dist/catalogIdentity.js +23 -15
  245. package/dist/cli/androidCommands.js +91 -0
  246. package/dist/{cliApplicationCommands.js → cli/applicationCommands.js} +49 -16
  247. package/dist/cli/artifactCommands.js +1 -1
  248. package/dist/{cliBrowserAdvancedCommands.js → cli/browserAdvancedCommands.js} +39 -24
  249. package/dist/{cliBrowserCommands.js → cli/browserCommands.js} +9 -9
  250. package/dist/cli/commandCancellation.js +24 -0
  251. package/dist/cli/coreAnalysisCommands.js +5 -400
  252. package/dist/cli/coreBinaryCommands.js +211 -0
  253. package/dist/cli/coreNativeCommands.js +293 -0
  254. package/dist/{cliElectronCommands.js → cli/electronCommands.js} +20 -24
  255. package/dist/cli/firmwareCommands.js +75 -0
  256. package/dist/{cliSetup.js → cli/interactiveSetup.js} +1 -1
  257. package/dist/cli/javascriptApplicationAnalysis.js +2 -2
  258. package/dist/cli/javascriptRecoveryCommands.js +45 -0
  259. package/dist/cli/managedCommands.js +5 -5
  260. package/dist/cli/managedProjectGraphCommand.js +2 -2
  261. package/dist/cli/options.js +7 -1
  262. package/dist/{cliProcessCommands.js → cli/processCommands.js} +3 -3
  263. package/dist/cli/referenceSourceImportStatus.js +15 -0
  264. package/dist/cli/setupCommands.js +4 -2
  265. package/dist/cli/utilityCommands.js +50 -25
  266. package/dist/cli/webModuleCommands.js +56 -0
  267. package/dist/cli/webRuntimeCommands.js +60 -0
  268. package/dist/cli/webScriptCommands.js +31 -0
  269. package/dist/cli/webSourceLocationCommands.js +42 -0
  270. package/dist/cli.js +20 -15
  271. package/dist/cliBrowserContext.js +5 -3
  272. package/dist/cliBrowserScenarioCommands.js +6 -4
  273. package/dist/cliCommandNames.js +19 -2
  274. package/dist/cliEvidenceCommands.js +2 -1
  275. package/dist/cliJavaScriptRuntimeCommands.js +8 -5
  276. package/dist/cliJsonInput.js +35 -13
  277. package/dist/cliLogging.js +2 -1
  278. package/dist/cliOutput.js +52 -27
  279. package/dist/composition/android.js +3 -0
  280. package/dist/composition/auxiliaryAnalysisProviders.js +30 -0
  281. package/dist/composition/binary.js +25 -0
  282. package/dist/composition/browserObservation.js +3 -0
  283. package/dist/composition/browserScenario.js +3 -0
  284. package/dist/composition/directAnalysis.js +17 -0
  285. package/dist/composition/electronObservation.js +3 -0
  286. package/dist/composition/electronScenario.js +3 -0
  287. package/dist/composition/firmware.js +3 -0
  288. package/dist/composition/javascriptRecovery.js +3 -0
  289. package/dist/composition/javascriptRuntimeObservation.js +3 -0
  290. package/dist/composition/optionalObservationProviders.js +49 -0
  291. package/dist/composition/webModules.js +5 -0
  292. package/dist/composition/webRuntime.js +4 -0
  293. package/dist/composition/webSourceLocations.js +5 -0
  294. package/dist/config/environment.js +11 -1
  295. package/dist/config/parseConfig.js +29 -4
  296. package/dist/config/parsers.js +1 -1
  297. package/dist/contracts/android/androidToolContracts.js +77 -0
  298. package/dist/contracts/applicationToolContracts.js +75 -13
  299. package/dist/contracts/artifactComparisonExample.js +7 -14
  300. package/dist/contracts/artifactToolContracts.js +2 -2
  301. package/dist/contracts/browserScenarioToolContracts.js +1 -1
  302. package/dist/contracts/enhancedInputs.js +1 -1
  303. package/dist/contracts/enhancedToolContracts.js +31 -0
  304. package/dist/contracts/errorSchemas.js +4 -2
  305. package/dist/contracts/evidenceInputContracts.js +13 -0
  306. package/dist/contracts/firmware/firmwareToolContracts.js +38 -0
  307. package/dist/contracts/{applicationWorkflowInputContracts.js → javascript/applicationWorkflowInputContracts.js} +18 -18
  308. package/dist/contracts/{electronToolContracts.js → javascript/electronToolContracts.js} +6 -6
  309. package/dist/contracts/{javascriptApplicationWorkflowExamples.js → javascript/javascriptApplicationWorkflowExamples.js} +3 -3
  310. package/dist/contracts/javascript/javascriptRecoveryToolContracts.js +23 -0
  311. package/dist/contracts/{javascriptRuntimeObservationToolContracts.js → javascript/javascriptRuntimeObservationToolContracts.js} +3 -3
  312. package/dist/contracts/{javascriptRuntimeReconciliationExample.js → javascript/javascriptRuntimeReconciliationExample.js} +5 -5
  313. package/dist/contracts/{managedToolContracts.js → managed/managedToolContracts.js} +3 -3
  314. package/dist/contracts/{managedWorkflowExamples.js → managed/managedWorkflowExamples.js} +1 -1
  315. package/dist/contracts/{managedWorkflowToolContracts.js → managed/managedWorkflowToolContracts.js} +6 -6
  316. package/dist/contracts/mobileApplicationGraphExamples.js +105 -0
  317. package/dist/contracts/{nativeToolContracts.js → native/nativeToolContracts.js} +14 -7
  318. package/dist/contracts/officialToolContracts.js +66 -0
  319. package/dist/contracts/promptContracts.js +1 -1
  320. package/dist/contracts/sessionLifecycleInputs.js +4 -0
  321. package/dist/contracts/sessionToolContracts.js +43 -0
  322. package/dist/contracts/sessionToolSchemas.js +1 -1
  323. package/dist/contracts/toolContractExamples.js +5 -0
  324. package/dist/contracts/toolContractTypes.js +2 -0
  325. package/dist/contracts/toolContracts.js +18 -135
  326. package/dist/contracts/toolEffects.js +75 -0
  327. package/dist/contracts/toolOutputSchemaGroups.js +20 -16
  328. package/dist/contracts/toolOutputSchemaPrimitives.js +1 -0
  329. package/dist/contracts/webRuntimeToolContracts.js +43 -0
  330. package/dist/contracts/webScriptToolContracts.js +68 -0
  331. package/dist/doctorRuntime.js +5 -1
  332. package/dist/domain/analysisErrorBase.js +33 -0
  333. package/dist/domain/analysisErrorCore.js +62 -0
  334. package/dist/domain/analysisErrorPresentation.js +22 -2
  335. package/dist/domain/analysisErrorProjection.js +25 -3
  336. package/dist/domain/analysisSnapshot.js +1 -0
  337. package/dist/domain/android/androidAnalysis.js +141 -0
  338. package/dist/domain/{androidApplication.js → android/androidApplication.js} +7 -6
  339. package/dist/domain/apple/appleApplication.js +277 -0
  340. package/dist/domain/{appleAssetCatalog.js → apple/appleAssetCatalog.js} +2 -2
  341. package/dist/domain/apple/appleBundleAnatomy.js +236 -0
  342. package/dist/domain/{interfaceBuilderGraph.js → apple/interfaceBuilderGraph.js} +47 -312
  343. package/dist/domain/apple/interfaceBuilderKeyedArchive.js +411 -0
  344. package/dist/domain/{keyedArchive.js → apple/keyedArchive.js} +10 -9
  345. package/dist/domain/apple/plistValue.js +35 -0
  346. package/dist/domain/artifactGraph.js +1 -0
  347. package/dist/domain/artifactInspection.js +19 -17
  348. package/dist/domain/artifactInventoryEvidence.js +32 -27
  349. package/dist/domain/artifactInventorySnapshot.js +1 -0
  350. package/dist/domain/artifactOperationError.js +20 -0
  351. package/dist/domain/artifactPathSyntax.js +26 -0
  352. package/dist/domain/browserNetworkEvidence.js +82 -0
  353. package/dist/domain/browserObservation.js +12 -4
  354. package/dist/domain/browserObservationError.js +25 -0
  355. package/dist/domain/browserObservationSchemas.js +2 -1
  356. package/dist/domain/browserScenario.js +1 -1
  357. package/dist/domain/browserScenarioCapture.js +23 -1
  358. package/dist/domain/browserScenarioCaptureValues.js +25 -0
  359. package/dist/domain/browserScenarioDiff.js +7 -4
  360. package/dist/domain/browserScenarioDiffEvidence.js +35 -1
  361. package/dist/domain/browserScenarioNormalization.js +6 -11
  362. package/dist/domain/browserScenarioValues.js +15 -2
  363. package/dist/domain/browserSession.js +2 -7
  364. package/dist/domain/bundleComparison.js +2 -1
  365. package/dist/domain/callPath.js +86 -38
  366. package/dist/domain/canonicalDigest.js +65 -0
  367. package/dist/domain/canonicalOrdering.js +11 -0
  368. package/dist/domain/changedBehavior.js +8 -7
  369. package/dist/domain/comparisonSemantics.js +2 -4
  370. package/dist/domain/comparisonStatus.js +39 -0
  371. package/dist/domain/configurationErrors.js +25 -0
  372. package/dist/domain/dosCom.js +8 -0
  373. package/dist/domain/evidence.js +3 -11
  374. package/dist/domain/evidenceBundle.js +98 -35
  375. package/dist/domain/evidenceErrors.js +30 -0
  376. package/dist/domain/firmware/firmwareAnalysis.js +121 -0
  377. package/dist/domain/functionComparison.js +4 -2
  378. package/dist/domain/functionComparisonDimensions.js +6 -4
  379. package/dist/domain/functionComparisonNormalization.js +13 -8
  380. package/dist/domain/functionComparisonResults.js +1 -4
  381. package/dist/domain/hopperErrors.js +78 -0
  382. package/dist/domain/hopperValues.js +4 -3
  383. package/dist/domain/inputIssueProjection.js +17 -2
  384. package/dist/domain/{electronActiveObservation.js → javascript/electronActiveObservation.js} +3 -1
  385. package/dist/domain/{electronObservation.js → javascript/electronObservation.js} +5 -11
  386. package/dist/domain/{electronStaticAnalysisBrowser.js → javascript/electronStaticAnalysisBrowser.js} +15 -24
  387. package/dist/domain/{electronStaticAnalysisIpc.js → javascript/electronStaticAnalysisIpc.js} +2 -2
  388. package/dist/domain/{electronStaticAnalysisNative.js → javascript/electronStaticAnalysisNative.js} +12 -12
  389. package/dist/domain/javascript/electronStaticAnalysisTypes.js +1 -0
  390. package/dist/domain/{electronStaticAnalysisValues.js → javascript/electronStaticAnalysisValues.js} +24 -4
  391. package/dist/domain/{javascriptApplicationAnalysis.js → javascript/javascriptApplicationAnalysis.js} +2 -2
  392. package/dist/domain/{javascriptApplicationChangeGraph.js → javascript/javascriptApplicationChangeGraph.js} +2 -2
  393. package/dist/domain/{javascriptApplicationEvidenceSchemas.js → javascript/javascriptApplicationEvidenceSchemas.js} +6 -4
  394. package/dist/domain/{javascriptApplicationGraph.js → javascript/javascriptApplicationGraph.js} +13 -22
  395. package/dist/domain/{javascriptApplicationGraphSchemas.js → javascript/javascriptApplicationGraphSchemas.js} +2 -2
  396. package/dist/domain/{javascriptApplicationVersionComparison.js → javascript/javascriptApplicationVersionComparison.js} +3 -11
  397. package/dist/domain/{javascriptApplicationVersionComparisonSchemas.js → javascript/javascriptApplicationVersionComparisonSchemas.js} +3 -3
  398. package/dist/domain/{javascriptApplicationVersionItems.js → javascript/javascriptApplicationVersionItems.js} +4 -4
  399. package/dist/domain/{javascriptApplicationVersionKeys.js → javascript/javascriptApplicationVersionKeys.js} +16 -9
  400. package/dist/domain/javascript/javascriptArtifactFiles.js +1 -0
  401. package/dist/domain/{javascriptAstFingerprint.js → javascript/javascriptAstFingerprint.js} +38 -22
  402. package/dist/domain/javascript/javascriptAstValues.js +23 -0
  403. package/dist/domain/{javascriptExportShapeComparison.js → javascript/javascriptExportShapeComparison.js} +1 -2
  404. package/dist/domain/{javascriptExportShapeComparisonSchemas.js → javascript/javascriptExportShapeComparisonSchemas.js} +2 -2
  405. package/dist/domain/{javascriptExportShapeSelection.js → javascript/javascriptExportShapeSelection.js} +1 -1
  406. package/dist/domain/{javascriptExportShapeVariants.js → javascript/javascriptExportShapeVariants.js} +7 -3
  407. package/dist/domain/{javascriptFeatureSeed.js → javascript/javascriptFeatureSeed.js} +32 -11
  408. package/dist/domain/{javascriptFeatureTrace.js → javascript/javascriptFeatureTrace.js} +9 -13
  409. package/dist/domain/{javascriptFeatureTraceSchemas.js → javascript/javascriptFeatureTraceSchemas.js} +32 -18
  410. package/dist/domain/{javascriptFeatureTraversal.js → javascript/javascriptFeatureTraversal.js} +7 -2
  411. package/dist/domain/{javascriptNativeHandoff.js → javascript/javascriptNativeHandoff.js} +2 -1
  412. package/dist/domain/javascript/javascriptRecovery.js +88 -0
  413. package/dist/domain/{javascriptRuntimeLoadState.js → javascript/javascriptRuntimeLoadState.js} +2 -2
  414. package/dist/domain/{javascriptRuntimeObservation.js → javascript/javascriptRuntimeObservation.js} +2 -2
  415. package/dist/domain/{javascriptRuntimeReconciliationActive.js → javascript/javascriptRuntimeReconciliationActive.js} +5 -12
  416. package/dist/domain/{javascriptRuntimeReconciliationGraph.js → javascript/javascriptRuntimeReconciliationGraph.js} +2 -2
  417. package/dist/domain/{javascriptRuntimeReconciliationMatching.js → javascript/javascriptRuntimeReconciliationMatching.js} +4 -3
  418. package/dist/domain/{javascriptRuntimeReconciliationParsing.js → javascript/javascriptRuntimeReconciliationParsing.js} +11 -17
  419. package/dist/domain/{javascriptRuntimeReconciliationResult.js → javascript/javascriptRuntimeReconciliationResult.js} +4 -4
  420. package/dist/domain/{javascriptRuntimeReconciliationSchemas.js → javascript/javascriptRuntimeReconciliationSchemas.js} +8 -5
  421. package/dist/domain/{javascriptRuntimeStaticCandidates.js → javascript/javascriptRuntimeStaticCandidates.js} +8 -4
  422. package/dist/domain/{javascriptSemanticAnalysis.js → javascript/javascriptSemanticAnalysis.js} +80 -17
  423. package/dist/domain/{javascriptSemanticAsyncEffects.js → javascript/javascriptSemanticAsyncEffects.js} +2 -1
  424. package/dist/domain/{javascriptSemanticCallResolution.js → javascript/javascriptSemanticCallResolution.js} +11 -5
  425. package/dist/domain/{javascriptSemanticCalls.js → javascript/javascriptSemanticCalls.js} +7 -4
  426. package/dist/domain/{javascriptSemanticChildProcesses.js → javascript/javascriptSemanticChildProcesses.js} +5 -2
  427. package/dist/domain/{javascriptSemanticDataEffectHelpers.js → javascript/javascriptSemanticDataEffectHelpers.js} +7 -6
  428. package/dist/domain/{javascriptSemanticDataEffects.js → javascript/javascriptSemanticDataEffects.js} +9 -6
  429. package/dist/domain/{javascriptSemanticFingerprints.js → javascript/javascriptSemanticFingerprints.js} +40 -16
  430. package/dist/domain/{javascriptSemanticGraph.js → javascript/javascriptSemanticGraph.js} +23 -28
  431. package/dist/domain/{javascriptSemanticGraphSchemas.js → javascript/javascriptSemanticGraphSchemas.js} +3 -3
  432. package/dist/domain/javascript/javascriptSemanticMemberMutations.js +116 -0
  433. package/dist/domain/javascript/javascriptSemanticMutationValues.js +53 -0
  434. package/dist/domain/{javascriptSemanticObjects.js → javascript/javascriptSemanticObjects.js} +5 -5
  435. package/dist/domain/{javascriptSemanticPrimitives.js → javascript/javascriptSemanticPrimitives.js} +9 -2
  436. package/dist/domain/{javascriptSemanticProjection.js → javascript/javascriptSemanticProjection.js} +32 -44
  437. package/dist/domain/{javascriptSemanticPromises.js → javascript/javascriptSemanticPromises.js} +77 -21
  438. package/dist/domain/{javascriptSemanticProvenance.js → javascript/javascriptSemanticProvenance.js} +4 -1
  439. package/dist/domain/{javascriptSemanticQuery.js → javascript/javascriptSemanticQuery.js} +7 -8
  440. package/dist/domain/{javascriptSemanticQueryAssessment.js → javascript/javascriptSemanticQueryAssessment.js} +1 -2
  441. package/dist/domain/{javascriptSemanticQueryIdentity.js → javascript/javascriptSemanticQueryIdentity.js} +1 -2
  442. package/dist/domain/{javascriptSemanticQuerySchemas.js → javascript/javascriptSemanticQuerySchemas.js} +3 -3
  443. package/dist/domain/javascript/javascriptSemanticRequireOrigin.js +25 -0
  444. package/dist/domain/{javascriptSemanticResources.js → javascript/javascriptSemanticResources.js} +2 -1
  445. package/dist/domain/{javascriptSemanticReturns.js → javascript/javascriptSemanticReturns.js} +2 -1
  446. package/dist/domain/{javascriptSemanticTraceSchemas.js → javascript/javascriptSemanticTraceSchemas.js} +2 -2
  447. package/dist/domain/javascript/javascriptSemanticTraversal.js +55 -0
  448. package/dist/domain/javascript/javascriptSemanticValueTypes.js +1 -0
  449. package/dist/domain/{javascriptSemanticValues.js → javascript/javascriptSemanticValues.js} +118 -60
  450. package/dist/domain/{javascriptSourceParser.js → javascript/javascriptSourceParser.js} +4 -2
  451. package/dist/domain/{javascriptStaticAnalysis.js → javascript/javascriptStaticAnalysis.js} +8 -5
  452. package/dist/domain/{javascriptStaticAnalysisBundler.js → javascript/javascriptStaticAnalysisBundler.js} +15 -11
  453. package/dist/domain/{javascriptStaticAnalysisCalls.js → javascript/javascriptStaticAnalysisCalls.js} +16 -8
  454. package/dist/domain/{javascriptStaticAnalysisHelpers.js → javascript/javascriptStaticAnalysisHelpers.js} +261 -43
  455. package/dist/domain/{sourceToBundleComparison.js → javascript/sourceToBundleComparison.js} +6 -8
  456. package/dist/domain/{sourceToBundleComparisonSchemas.js → javascript/sourceToBundleComparisonSchemas.js} +4 -4
  457. package/dist/domain/{sourceToBundleSignals.js → javascript/sourceToBundleSignals.js} +7 -7
  458. package/dist/domain/jsonShape.js +6 -2
  459. package/dist/domain/{managedApplicationGraph.js → managed/managedApplicationGraph.js} +4 -4
  460. package/dist/domain/{managedApplicationGraphNodes.js → managed/managedApplicationGraphNodes.js} +1 -1
  461. package/dist/domain/{managedArtifact.js → managed/managedArtifact.js} +1 -1
  462. package/dist/domain/{managedMemberComparison.js → managed/managedMemberComparison.js} +5 -4
  463. package/dist/domain/{managedMemberComparisonCoverage.js → managed/managedMemberComparisonCoverage.js} +2 -1
  464. package/dist/domain/{managedMemberComparisonItems.js → managed/managedMemberComparisonItems.js} +99 -40
  465. package/dist/domain/{managedMemberComparisonMatch.js → managed/managedMemberComparisonMatch.js} +22 -11
  466. package/dist/domain/{managedNativeVerification.js → managed/managedNativeVerification.js} +1 -1
  467. package/dist/domain/{managedNativeVerificationMatch.js → managed/managedNativeVerificationMatch.js} +8 -6
  468. package/dist/domain/{managedNativeVerificationSchemas.js → managed/managedNativeVerificationSchemas.js} +6 -5
  469. package/dist/domain/{managedReconstruction.js → managed/managedReconstruction.js} +3 -3
  470. package/dist/domain/{nativeDataType.js → native/nativeDataType.js} +2 -0
  471. package/dist/domain/native/nativeFunctionAnnotations.js +43 -0
  472. package/dist/domain/{nativeInspection.js → native/nativeInspection.js} +1 -1
  473. package/dist/domain/{nativeInvestigationGraph.js → native/nativeInvestigationGraph.js} +13 -4
  474. package/dist/domain/native/nativeLoadImage.js +95 -0
  475. package/dist/domain/native/nativeMetadataRecovery.js +55 -0
  476. package/dist/domain/{nativeUiObservation.js → native/nativeUiObservation.js} +20 -6
  477. package/dist/domain/{objcSwiftMetadata.js → native/objcSwiftMetadata.js} +17 -0
  478. package/dist/domain/processCapture.js +4 -3
  479. package/dist/domain/processEvidenceProvider.js +11 -0
  480. package/dist/domain/processScenario.js +17 -17
  481. package/dist/domain/processTraceComparison.js +1 -1
  482. package/dist/domain/propertyListKeys.js +69 -0
  483. package/dist/domain/providerAdapterError.js +17 -0
  484. package/dist/domain/providerCleanupError.js +6 -3
  485. package/dist/domain/providerSelectionError.js +44 -0
  486. package/dist/domain/reconstructionCoverageEvaluation.js +46 -24
  487. package/dist/domain/reconstructionCoverageInput.js +7 -0
  488. package/dist/domain/reconstructionUnknowns.js +1 -1
  489. package/dist/domain/reconstructionVerification.js +22 -8
  490. package/dist/domain/referenceSourceClassification.js +5 -6
  491. package/dist/domain/referenceSourceGraph.js +9 -17
  492. package/dist/domain/referenceSourceImportParsing.js +38 -23
  493. package/dist/domain/runtimeIdentification.js +1 -1
  494. package/dist/domain/runtimeVersion.js +6 -7
  495. package/dist/domain/safeJson.js +13 -0
  496. package/dist/domain/sourceMapEnvelope.js +38 -0
  497. package/dist/domain/staticRuntimeCorrelation.js +9 -7
  498. package/dist/domain/unicodeCodePointOrder.js +11 -6
  499. package/dist/domain/unknownRegistryError.js +10 -0
  500. package/dist/domain/webBundleAnalyzerAst.js +23 -38
  501. package/dist/domain/webBundleAnalyzerInspection.js +29 -20
  502. package/dist/domain/webEventListeners.js +28 -0
  503. package/dist/domain/webExecution.js +74 -0
  504. package/dist/domain/webMcpDiscovery.js +1 -7
  505. package/dist/domain/webModuleImports.js +104 -0
  506. package/dist/domain/webModuleTrace.js +106 -0
  507. package/dist/domain/webRuntime.js +69 -0
  508. package/dist/domain/webScreenshot.js +1 -7
  509. package/dist/domain/webScriptArtifacts.js +39 -0
  510. package/dist/domain/webScriptExport.js +86 -0
  511. package/dist/domain/webScriptExportError.js +13 -0
  512. package/dist/domain/webScriptExportPlan.js +108 -0
  513. package/dist/domain/webSourceLocation.js +106 -0
  514. package/dist/domain/webSourcePosition.js +21 -0
  515. package/dist/dotnet/ManagedArtifactInspector.js +1 -1
  516. package/dist/dotnet/ManagedMemberInspector.js +1 -1
  517. package/dist/dotnet/ManagedMemberInspectorCore.js +34 -0
  518. package/dist/dotnet/ManagedMemberRows.js +6 -4
  519. package/dist/dotnet/ManagedMetadataHeaps.js +3 -2
  520. package/dist/dotnet/ManagedMetadataInventoryRows.js +4 -2
  521. package/dist/dotnet/ManagedMethodBodyReader.js +8 -1
  522. package/dist/dotnet/ManagedNativeBoundaryHelpers.js +22 -16
  523. package/dist/dotnet/ManagedNativeBoundaryInspector.js +56 -50
  524. package/dist/dotnet/ManagedStaticProvider.js +6 -34
  525. package/dist/dotnet/ManagedStaticProviderMetadata.js +36 -0
  526. package/dist/evaluation/CodexAgentEval.js +2 -1
  527. package/dist/firmware/FirmwareCommand.js +163 -0
  528. package/dist/firmware/FirmwareFiles.js +190 -0
  529. package/dist/firmware/FirmwareProvider.js +264 -0
  530. package/dist/firmware/FirmwarePublication.js +84 -0
  531. package/dist/firmware/FirmwareRelease.js +32 -0
  532. package/dist/firmware/FirmwareReports.js +235 -0
  533. package/dist/firmware/FirmwareVersion.js +80 -0
  534. package/dist/generatedMcpToolCatalog.js +1 -1
  535. package/dist/generatedPackageMetadata.js +5 -5
  536. package/dist/ghidra/GhidraAnalysisProfile.js +37 -8
  537. package/dist/ghidra/GhidraClient.js +52 -6
  538. package/dist/ghidra/GhidraDiagnostics.js +3 -0
  539. package/dist/ghidra/GhidraDoctor.js +38 -14
  540. package/dist/ghidra/GhidraFunctionValues.js +14 -8
  541. package/dist/ghidra/GhidraInstallation.js +48 -38
  542. package/dist/ghidra/GhidraInstallationPolicy.js +140 -0
  543. package/dist/ghidra/GhidraInventoryValues.js +39 -2
  544. package/dist/ghidra/GhidraLauncher.js +102 -29
  545. package/dist/ghidra/GhidraLoadImageAttest.js +36 -0
  546. package/dist/ghidra/GhidraLoadImageValues.js +199 -0
  547. package/dist/ghidra/GhidraProvider.js +47 -149
  548. package/dist/ghidra/GhidraProviderCapabilities.js +58 -28
  549. package/dist/ghidra/GhidraProviderClient.js +209 -0
  550. package/dist/ghidra/GhidraRequestQueue.js +2 -2
  551. package/dist/ghidra/GhidraResponseBuffer.js +7 -1
  552. package/dist/ghidra/GhidraSessionError.js +31 -4
  553. package/dist/ghidra/GhidraSessionValues.js +10 -7
  554. package/dist/ghidra/GhidraTargetSnapshot.js +16 -2
  555. package/dist/ghidra/GhidraTransport.js +12 -0
  556. package/dist/ghidra/extensions/GhidraExtensionFailures.js +20 -0
  557. package/dist/ghidra/extensions/GhidraExtensions.js +170 -0
  558. package/dist/ghidra/extensions/nativeaot/NativeAotAdapter.js +21 -0
  559. package/dist/ghidra/extensions/nativeaot/NativeAotReport.js +100 -0
  560. package/dist/hopper/BridgeLauncher.js +4 -2
  561. package/dist/hopper/HopperAnalysisProfile.js +7 -2
  562. package/dist/hopper/HopperCleanup.js +55 -9
  563. package/dist/hopper/HopperClient.js +14 -4
  564. package/dist/hopper/HopperProcessDiagnostic.js +1 -1
  565. package/dist/hopper/HopperProvider.js +8 -50
  566. package/dist/hopper/HopperProviderCapabilities.js +73 -0
  567. package/dist/hopper/HopperRequestQueue.js +7 -3
  568. package/dist/hopper/HopperResponseStream.js +7 -1
  569. package/dist/hopper/HopperSessionValues.js +1 -1
  570. package/dist/hopper/HopperSocketConnection.js +1 -1
  571. package/dist/hopper/HopperTargetLease.js +23 -15
  572. package/dist/hopper/LinuxPrivateDisplayDiagnostic.js +7 -8
  573. package/dist/hopper/LinuxPrivateDisplayProbe.js +10 -6
  574. package/dist/hopper/protocol.js +8 -8
  575. package/dist/ida/IdaConfiguration.js +56 -0
  576. package/dist/ida/IdaDoctor.js +53 -0
  577. package/dist/ida/IdaInput.js +62 -0
  578. package/dist/ida/IdaMcpConnection.js +111 -0
  579. package/dist/ida/IdaOperationRunner.js +299 -0
  580. package/dist/ida/IdaProtocolValues.js +178 -0
  581. package/dist/ida/IdaProvider.js +126 -0
  582. package/dist/ida/IdaProviderCapabilities.js +52 -0
  583. package/dist/ida/IdaSessionClient.js +318 -0
  584. package/dist/ida/IdaWorkspace.js +54 -0
  585. package/dist/{browser → inspector}/JavaScriptRuntimeScope.js +19 -6
  586. package/dist/{browser → inspector}/V8InspectorCaptureProjection.js +46 -8
  587. package/dist/{browser → inspector}/V8InspectorEndpoint.js +3 -2
  588. package/dist/{browser → inspector}/V8InspectorProvider.js +16 -14
  589. package/dist/inspector/providerIdentity.js +6 -0
  590. package/dist/javascript/recovery/RecoveryFiles.js +122 -0
  591. package/dist/javascript/recovery/WakaruCommand.js +116 -0
  592. package/dist/javascript/recovery/WakaruExecution.js +100 -0
  593. package/dist/javascript/recovery/WakaruProvider.js +96 -0
  594. package/dist/javascript/recovery/WakaruPublication.js +102 -0
  595. package/dist/javascript/recovery/WakaruRelease.js +29 -0
  596. package/dist/javascript/recovery/WakaruReport.js +134 -0
  597. package/dist/javascript/sourceMaps/SourceMapCodecProcess.js +37 -0
  598. package/dist/javascript/sourceMaps/SourceMapCodecProtocol.js +20 -0
  599. package/dist/javascript/sourceMaps/SourceMapCommand.js +176 -0
  600. package/dist/javascript/sourceMaps/SourceMapDecoder.js +61 -0
  601. package/dist/javascript/sourceMaps/SourceMapFormat.js +185 -0
  602. package/dist/javascript/sourceMaps/TraceSourceMap.js +138 -0
  603. package/dist/main/shutdown.js +29 -3
  604. package/dist/main/startup.js +1 -1
  605. package/dist/main/transport.js +32 -11
  606. package/dist/main.js +9 -20
  607. package/dist/native/AppleDispatchCoverage.js +58 -0
  608. package/dist/native/AppleDispatchMetadata.js +73 -490
  609. package/dist/native/AppleMachoFixups.js +292 -0
  610. package/dist/native/AppleMachoSelection.js +188 -0
  611. package/dist/native/AppleObjcCategories.js +59 -0
  612. package/dist/native/AppleObjcDispatchFacets.js +257 -0
  613. package/dist/native/AppleObjcProperties.js +68 -0
  614. package/dist/native/AppleObjcProtocols.js +2 -1
  615. package/dist/native/AppleSwiftDispatchFacets.js +150 -0
  616. package/dist/native/NativeMacOSProvider.js +204 -72
  617. package/dist/native/NativeMacOSProviderMetadata.js +42 -0
  618. package/dist/native/NativeMachoInspection.js +87 -26
  619. package/dist/native/NativeUiHelperRuntime.js +14 -4
  620. package/dist/native/NativeUiObservation.js +14 -6
  621. package/dist/native/NativeUiOutputBudget.js +8 -0
  622. package/dist/native/parsers/codesign.js +40 -5
  623. package/dist/native/parsers/demangle.js +6 -2
  624. package/dist/native/parsers/dyldInfo.js +16 -7
  625. package/dist/native/parsers/echoedPath.js +14 -0
  626. package/dist/native/parsers/lipo.js +14 -0
  627. package/dist/native/parsers/otool.js +5 -2
  628. package/dist/native/parsers/plist.js +174 -11
  629. package/dist/process/ExecFileOutput.js +2 -0
  630. package/dist/process/PrivateRuntimeRoot.js +13 -3
  631. package/dist/process/ProcessOwnership.js +5 -73
  632. package/dist/process/ProcessOwnershipObservation.js +62 -2
  633. package/dist/process/ProcessOwnershipProcessTree.js +13 -0
  634. package/dist/process/ProviderProcess.js +62 -24
  635. package/dist/process/ProviderRunLineage.js +1 -1
  636. package/dist/process/WindowsAuthority.js +20 -1
  637. package/dist/reference/ReferenceSourceReaderEntries.js +11 -2
  638. package/dist/reference/ReferenceSourceReaderFile.js +1 -0
  639. package/dist/server/createServer.js +67 -2
  640. package/dist/server/mcpClientMetadata.js +6 -3
  641. package/dist/server/mcpProgress.js +2 -1
  642. package/dist/server/promptCompletion.js +3 -3
  643. package/dist/server/registerAndroidTools.js +30 -0
  644. package/dist/server/registerApplicationTools/compareExportShapes.js +7 -3
  645. package/dist/server/registerApplicationTools/compareSourceToBundle.js +9 -4
  646. package/dist/server/registerApplicationTools/compareVersions.js +7 -3
  647. package/dist/server/registerApplicationTools/projectMobileApplicationGraph.js +43 -0
  648. package/dist/server/registerApplicationTools/traceFeature.js +8 -3
  649. package/dist/server/registerApplicationTools/traceSemantics.js +8 -3
  650. package/dist/server/registerApplicationTools.js +2 -0
  651. package/dist/server/registerBrowserScenarioTool.js +6 -2
  652. package/dist/server/registerBrowserTools.js +13 -2
  653. package/dist/server/registerCloseLifecycleTool.js +1 -1
  654. package/dist/server/registerElectronTools.js +21 -7
  655. package/dist/server/registerEnhancedTools.js +28 -1
  656. package/dist/server/registerFirmwareTools.js +22 -0
  657. package/dist/server/registerFunctionComparisonTool.js +1 -1
  658. package/dist/server/registerInvestigationTools/helpers.js +2 -1
  659. package/dist/server/registerJavaScriptRecoveryTool.js +17 -0
  660. package/dist/server/registerJavaScriptRuntimeObservationTools.js +9 -4
  661. package/dist/server/registerManagedTools.js +4 -4
  662. package/dist/server/registerManagedWorkflowTools/compareManagedMembers.js +2 -2
  663. package/dist/server/registerManagedWorkflowTools/contract.js +1 -1
  664. package/dist/server/registerManagedWorkflowTools/evidence.js +1 -1
  665. package/dist/server/registerManagedWorkflowTools/importManagedReconstruction.js +1 -1
  666. package/dist/server/registerManagedWorkflowTools/projectManagedApplicationGraph.js +1 -1
  667. package/dist/server/registerManagedWorkflowTools/verifyManagedNativeBoundaries.js +2 -2
  668. package/dist/server/registerNativeTools.js +1 -1
  669. package/dist/server/registerOfficialTools.js +4 -1
  670. package/dist/server/registerProcessComparisonTool.js +5 -2
  671. package/dist/server/registerPrompts.js +5 -1
  672. package/dist/server/registerSessionTools.js +4 -2
  673. package/dist/server/registerWebModuleTool.js +17 -0
  674. package/dist/server/registerWebRuntimeTools.js +31 -0
  675. package/dist/server/registerWebScriptTool.js +18 -0
  676. package/dist/server/registerWebSourceLocationTool.js +17 -0
  677. package/dist/server/runDerivedOperation.js +1 -1
  678. package/dist/server/sessionAvailabilityPolicy.js +24 -9
  679. package/dist/server/sessionEvidence.js +1 -1
  680. package/dist/server/toolResult.js +2 -1
  681. package/dist/windows/WindowsNativeLoader.js +108 -0
  682. package/dist/windows/WindowsOwnedProcess.js +170 -0
  683. package/dist/windows/WindowsPrivateRuntime.js +137 -0
  684. package/install.sh +16 -8
  685. package/native/windows/README.md +107 -0
  686. package/native/windows/build/manifest.json +9 -0
  687. package/native/windows/build/rea-windows-x64.node +0 -0
  688. package/package.json +70 -35
  689. package/scripts/hopper-demo-x11.py +67 -8
  690. package/scripts/rea.mjs +10 -2
  691. package/scripts/verify-windows-native-artifact.mjs +39 -0
  692. package/skills/reverse-engineer-anything/SKILL.md +92 -24
  693. package/skills/reverse-engineer-anything/references/android-applications.md +31 -0
  694. package/skills/reverse-engineer-anything/references/javascript-applications.md +19 -2
  695. package/skills/reverse-engineer-anything/references/native-and-artifacts.md +61 -4
  696. package/dist/application/JavaScriptApplicationService.js +0 -52
  697. package/dist/application/runtime.js +0 -51
  698. package/dist/browser/CdpCanonicalJsonDigest.js +0 -9
  699. package/dist/domain/appleApplication.js +0 -181
  700. package/dist/domain/errors.js +0 -324
  701. package/dist/domain/javascriptAstValues.js +0 -13
  702. package/dist/domain/javascriptSemanticTraversal.js +0 -30
  703. package/dist/native/NativeHostCapabilities.js +0 -23
  704. /package/dist/application/{BinarySessionPort.js → DirectAnalysisDependencies.js} +0 -0
  705. /package/dist/application/{ElectronActiveObservationPort.js → WebModulePorts.js} +0 -0
  706. /package/dist/application/{ElectronObservationPort.js → WebRuntimePort.js} +0 -0
  707. /package/dist/application/{JavaScriptArtifactAnalysisTypes.js → WebScriptArtifactPort.js} +0 -0
  708. /package/dist/application/{JavaScriptRuntimeObservationPort.js → WebSourceLocationPorts.js} +0 -0
  709. /package/dist/{domain/electronStaticAnalysisTypes.js → application/android/AndroidAnalysisPort.js} +0 -0
  710. /package/dist/application/{AbortablePromise.js → binary/AbortablePromise.js} +0 -0
  711. /package/dist/{domain/javascriptSemanticValueTypes.js → application/binary/BinarySessionPort.js} +0 -0
  712. /package/dist/application/{BinarySessionStatus.js → binary/BinarySessionStatus.js} +0 -0
  713. /package/dist/application/{ElectronBoundaryGraph.js → javascript/ElectronBoundaryGraph.js} +0 -0
  714. /package/dist/application/{ElectronBoundaryGraphIpc.js → javascript/ElectronBoundaryGraphIpc.js} +0 -0
  715. /package/dist/application/{ElectronBoundaryGraphNative.js → javascript/ElectronBoundaryGraphNative.js} +0 -0
  716. /package/dist/application/{ElectronBoundaryGraphWindows.js → javascript/ElectronBoundaryGraphWindows.js} +0 -0
  717. /package/dist/application/{JavaScriptArtifactGraphBundlers.js → javascript/JavaScriptArtifactGraphBundlers.js} +0 -0
  718. /package/dist/application/{JavaScriptArtifactGraphEvidence.js → javascript/JavaScriptArtifactGraphEvidence.js} +0 -0
  719. /package/dist/application/{JavaScriptArtifactReconstructionInput.js → javascript/JavaScriptArtifactReconstructionInput.js} +0 -0
  720. /package/dist/application/{JavaScriptSemanticGraphEvidence.js → javascript/JavaScriptSemanticGraphEvidence.js} +0 -0
  721. /package/dist/application/{JavaScriptSemanticGraphValueProjection.js → javascript/JavaScriptSemanticGraphValueProjection.js} +0 -0
  722. /package/dist/domain/{electronStaticAnalysis.js → javascript/electronStaticAnalysis.js} +0 -0
  723. /package/dist/domain/{javascriptExportShapeComparisonIdentity.js → javascript/javascriptExportShapeComparisonIdentity.js} +0 -0
  724. /package/dist/domain/{javascriptRuntimeReconciliation.js → javascript/javascriptRuntimeReconciliation.js} +0 -0
  725. /package/dist/domain/{javascriptRuntimeReconciliationRuntime.js → javascript/javascriptRuntimeReconciliationRuntime.js} +0 -0
  726. /package/dist/domain/{javascriptSemanticCoverage.js → javascript/javascriptSemanticCoverage.js} +0 -0
  727. /package/dist/domain/{javascriptSemanticDerivedAnalysis.js → javascript/javascriptSemanticDerivedAnalysis.js} +0 -0
  728. /package/dist/domain/{javascriptSemanticGraphSerialization.js → javascript/javascriptSemanticGraphSerialization.js} +0 -0
  729. /package/dist/domain/{javascriptSemanticIr.js → javascript/javascriptSemanticIr.js} +0 -0
  730. /package/dist/domain/{javascriptSemanticQueryRelations.js → javascript/javascriptSemanticQueryRelations.js} +0 -0
  731. /package/dist/domain/{javascriptSemanticState.js → javascript/javascriptSemanticState.js} +0 -0
  732. /package/dist/domain/{javascriptStaticAnalysisFindings.js → javascript/javascriptStaticAnalysisFindings.js} +0 -0
  733. /package/dist/domain/{javascriptStaticAnalysisState.js → javascript/javascriptStaticAnalysisState.js} +0 -0
  734. /package/dist/domain/{javascriptStaticAnalysisTypes.js → javascript/javascriptStaticAnalysisTypes.js} +0 -0
  735. /package/dist/domain/{managedApplicationGraphCoverage.js → managed/managedApplicationGraphCoverage.js} +0 -0
  736. /package/dist/domain/{managedApplicationGraphNodeCoverage.js → managed/managedApplicationGraphNodeCoverage.js} +0 -0
  737. /package/dist/domain/{nativeApiBoundary.js → native/nativeApiBoundary.js} +0 -0
  738. /package/dist/domain/{nativeInstruction.js → native/nativeInstruction.js} +0 -0
  739. /package/dist/domain/{nativeValueFlow.js → native/nativeValueFlow.js} +0 -0
  740. /package/dist/domain/{nativeValueTrace.js → native/nativeValueTrace.js} +0 -0
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "rea-agents",
3
3
  "mcpName": "io.github.morluto/rea",
4
- "version": "4.0.1",
4
+ "version": "5.0.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": {
@@ -35,15 +35,19 @@
35
35
  "rea-agents": "scripts/rea.mjs"
36
36
  },
37
37
  "engines": {
38
- "node": "^22.19.0 || >=24.11.0"
38
+ "node": "^22.19.0 || ^24.11.0 || >=26.0.0"
39
39
  },
40
40
  "packageManager": "npm@11.16.0",
41
41
  "files": [
42
42
  "dist",
43
43
  "install.sh",
44
44
  "bridge/hopper_bridge.py",
45
+ "bridge/native/NativeUIChildren.swift",
45
46
  "bridge/native/ReaNativeUI.swift",
46
47
  "bridge/ghidra/ReaGhidraBridge.java",
48
+ "bridge/ghidra/ReaGhidraExtensions.java",
49
+ "bridge/ghidra/ReaGhidraPrepareCom.java",
50
+ "bridge/android/ReaJadxBridge.java",
47
51
  "scripts/rea.mjs",
48
52
  "scripts/electron-active-hook.cjs",
49
53
  "scripts/electron-active-hook-boundaries.cjs",
@@ -52,7 +56,10 @@
52
56
  "scripts/prepare.mjs",
53
57
  "skills",
54
58
  "README.md",
55
- "LICENSE"
59
+ "LICENSE",
60
+ "native/windows/build/manifest.json",
61
+ "native/windows/build/rea-windows-x64.node",
62
+ "scripts/verify-windows-native-artifact.mjs"
56
63
  ],
57
64
  "scripts": {
58
65
  "deps:check": "node scripts/check-dependency-install.mjs",
@@ -73,16 +80,15 @@
73
80
  "precheck:test": "npm run deps:check",
74
81
  "check:test": "turbo run typecheck lint format:check knip metadata:check test:run",
75
82
  "precheck:pr": "npm run deps:check",
76
- "check:pr": "turbo run typecheck lint format:check knip metadata:check test:run && npm run docs:check",
83
+ "check:pr": "turbo run typecheck lint format:check knip metadata:check test:run && npm run docs:check && npm run jscpd && npm run scan:todos",
77
84
  "precheck:ci": "npm run deps:check",
78
85
  "check:ci": "turbo run typecheck lint format:check knip metadata:check jscpd scan:todos",
79
- "build:cached": "turbo run build",
86
+ "build:cached": "node scripts/check-dependency-install.mjs && turbo run build",
80
87
  "format": "oxfmt .",
81
88
  "format:check": "oxfmt --check .",
82
- "lint": "oxlint",
83
- "lint:fix": "oxlint --fix",
89
+ "lint": "oxlint && npm run verify:module-boundaries",
90
+ "lint:fix": "oxlint --fix && npm run verify:module-boundaries",
84
91
  "knip": "knip",
85
- "lint:dead": "knip",
86
92
  "jscpd": "jscpd src/ tests/",
87
93
  "scan:todos": "node scripts/scan-todos.mjs",
88
94
  "start": "node scripts/rea.mjs mcp",
@@ -115,22 +121,32 @@
115
121
  "typecheck": "tsc --noEmit",
116
122
  "verify:test-temp-hygiene": "npm run build:cached && node scripts/verify-test-temp-hygiene.mjs",
117
123
  "verify:hopper": "npm run verify:fixtures && npm run build:cached && node scripts/verify-real-hopper.mjs",
118
- "verify:apple-dispatch": "npm run build:cached && node scripts/verify-apple-dispatch.mjs",
124
+ "verify:apple-dispatch": "npm run build:cached && node scripts/verify/apple/dispatch.mjs",
119
125
  "verify:native-ui": "npm run build:cached && node scripts/verify-native-ui.mjs",
120
- "verify:keyed-archive": "npm run build:cached && node scripts/verify-keyed-archive.mjs",
126
+ "verify:keyed-archive": "npm run build:cached && node scripts/verify/apple/keyed-archive.mjs",
127
+ "verify:macos-bundle": "npm run build:cached && node scripts/verify/apple/macos-bundle.mjs",
121
128
  "verify:ghidra": "npm run build:cached && node scripts/verify-real-ghidra.mjs",
129
+ "verify:ida": "npm run build:cached && node scripts/verify-real-ida.mjs",
122
130
  "verify:ghidra:switch": "npm run build:cached && node scripts/verify-real-ghidra-switch.mjs",
123
131
  "verify:ghidra:dos": "npm run build:cached && node scripts/verify-real-ghidra-dos.mjs",
132
+ "verify:ghidra:com": "npm run build:cached && node scripts/verify-real-ghidra-com.mjs",
124
133
  "verify:ghidra:aarch64-jump-table": "npm run build:cached && node scripts/verify-real-ghidra.mjs --aarch64-jump-table",
125
- "verify:interface-builder": "npm run build:cached && node scripts/verify-interface-builder.mjs",
134
+ "verify:interface-builder": "npm run build:cached && node scripts/verify/apple/interface-builder.mjs",
126
135
  "verify:ghidra:cross-format": "npm run build:cached && node scripts/verify-real-ghidra.mjs --cross-format",
127
136
  "verify:ghidra:windows": "npm run build:cached && npm run build:ghidra-windows-fixture && node scripts/verify-real-ghidra-windows.mjs",
128
137
  "verify:browser": "npm run build:cached && node scripts/verify-real-browser.mjs",
138
+ "verify:browser:dom": "node scripts/verify-browser-dom-destinations.mjs",
139
+ "verify:browser:network": "npm run build:cached && node scripts/verify-browser-network.mjs",
129
140
  "verify:electron": "npm run build:cached && node scripts/verify-real-electron.mjs",
130
- "verify:inspector": "npm run build:cached && node scripts/verify-real-javascript-runtime-observation.mjs",
131
- "verify:javascript-runtime": "npm run build:cached && node scripts/verify-local-javascript-runtime.mjs",
132
- "verify:application-workflows": "npm run build:cached && node scripts/verify-local-application-workflows.mjs",
133
- "verify:managed": "npm run build:cached && node scripts/verify-managed-conformance.mjs",
141
+ "verify:inspector": "npm run build:cached && node scripts/verify/inspector/runtime-observation.mjs",
142
+ "verify:javascript-runtime": "npm run build:cached && node scripts/verify/javascript/runtime-observation.mjs",
143
+ "verify:javascript:digests": "npm run build:cached && node scripts/verify/javascript/digests.mjs",
144
+ "verify:application-workflows": "npm run build:cached && node scripts/verify/javascript/application-workflows.mjs",
145
+ "verify:managed": "npm run build:cached && node scripts/verify/managed/conformance.mjs",
146
+ "verify:firmware": "npm run build:cached && node scripts/verify/firmware/analysis.mjs",
147
+ "fixtures:firmware": "node scripts/fixtures/firmware/generate.mjs",
148
+ "verify:android": "npm run build:cached && node scripts/verify/android/analysis.mjs",
149
+ "fixtures:android": "node scripts/fixtures/android/fetch.mjs",
134
150
  "verify:agent": "npm run build:cached && node scripts/verify-agent-experience.mjs",
135
151
  "verify:hopper:linux": "npm run verify:fixtures && npm run build:cached && node scripts/verify-real-hopper-linux.mjs",
136
152
  "verify:setup:linux": "npm run build:cached && node scripts/verify-linux-setup-e2e.mjs",
@@ -145,8 +161,9 @@
145
161
  "config:print": "node scripts/print-mcp-config.mjs",
146
162
  "evidence:generate": "npm run build:cached && node scripts/generate-completion-ledger.mjs",
147
163
  "evidence:check": "npm run build:cached && node scripts/generate-completion-ledger.mjs --check",
148
- "docs:api": "typedoc",
149
- "docs:api:cached": "turbo run docs:api",
164
+ "docs:dev": "vitepress dev docs",
165
+ "docs:build": "vitepress build docs",
166
+ "docs:preview": "vitepress preview docs",
150
167
  "docs:generate": "node scripts/run-exclusive.mjs docs npm run docs:generate:unlocked",
151
168
  "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 && node scripts/generate-error-schema.mjs",
152
169
  "docs:check": "node scripts/run-exclusive.mjs docs turbo run docs:check:built",
@@ -154,9 +171,24 @@
154
171
  "docs:error-schema": "npm run build:cached && node scripts/generate-error-schema.mjs",
155
172
  "prepack": "node scripts/prepack.mjs",
156
173
  "prepare": "node scripts/prepare.mjs",
157
- "verify:asset-catalog": "npm run build:cached && node scripts/verify-asset-catalog.mjs",
174
+ "verify:asset-catalog": "npm run build:cached && node scripts/verify/apple/asset-catalog.mjs",
158
175
  "verify:native-ui:permissions": "npm run build:cached && node scripts/verify-native-ui.mjs --allow-permission-denial",
159
- "test:focused": "node scripts/run-development-tests.mjs focused"
176
+ "test:focused": "node scripts/run-development-tests.mjs focused",
177
+ "build:windows-native": "node scripts/build-windows-native.mjs",
178
+ "verify:windows-native:artifact": "node scripts/verify-windows-native-artifact.mjs",
179
+ "prepublishOnly": "npm run verify:windows-native:artifact",
180
+ "verify:windows-native": "node scripts/verify-windows-native.mjs",
181
+ "verify:ghidra:windows:package": "node scripts/verify-packaged-ghidra-windows.mjs",
182
+ "build:ghidra:nativeaot": "node scripts/build-ghidra-nativeaot.mjs",
183
+ "build:fixtures:nativeaot": "node scripts/generate-nativeaot-fixtures.mjs",
184
+ "verify:ghidra:nativeaot": "npm run build:cached && node scripts/verify-real-ghidra-nativeaot.mjs",
185
+ "verify:browser:scripts": "npm run build:cached && node scripts/verify-browser-scripts.mjs",
186
+ "verify:browser:modules": "npm run build:cached && node scripts/verify-browser-modules.mjs",
187
+ "verify:test-discovery": "node scripts/verify-test-discovery.mjs",
188
+ "verify:javascript:recovery": "node scripts/verify/javascript/recovery.mjs",
189
+ "verify:module-boundaries": "node scripts/verify-module-boundaries.mjs",
190
+ "verify:browser:source-maps": "npm run build:cached && node scripts/verify-browser-source-maps.mjs",
191
+ "verify:browser:runtime": "npm run build:cached && node scripts/verify-browser-runtime.mjs"
160
192
  },
161
193
  "lint-staged": {
162
194
  "*.{cjs,cts,js,jsx,mjs,mts,ts,tsx}": [
@@ -172,48 +204,51 @@
172
204
  "@electron/asar": "4.2.0",
173
205
  "@jridgewell/trace-mapping": "0.3.31",
174
206
  "@lydell/node-pty": "1.1.0",
175
- "@modelcontextprotocol/client": "2.0.0",
176
- "@modelcontextprotocol/server": "2.0.0",
207
+ "@modelcontextprotocol/client": "2.3.1",
208
+ "@modelcontextprotocol/server": "2.3.1",
177
209
  "@xterm/addon-serialize": "0.14.0",
178
210
  "@xterm/headless": "6.0.0",
179
211
  "@zip.js/zip.js": "2.8.26",
180
212
  "canonicalize": "3.0.0",
181
213
  "cross-spawn": "7.0.6",
182
214
  "diff": "9.0.0",
183
- "graphology": "0.26.0",
184
- "graphology-shortest-path": "2.1.0",
185
215
  "ignore": "7.0.6",
186
- "incur": "0.4.13",
216
+ "incur": "0.6.1",
187
217
  "isomorphic-git": "1.38.7",
188
218
  "jsonc-parser": "3.3.1",
189
- "pino": "9.14.0",
219
+ "pino": "10.4.0",
190
220
  "playwright-core": "1.58.2",
191
221
  "plist": "5.0.0",
192
222
  "semver": "7.8.5",
193
- "smol-toml": "^1.7.0",
223
+ "smol-toml": "1.9.0",
194
224
  "write-file-atomic": "7.0.0",
195
225
  "ws": "8.21.0",
196
226
  "zod": "4.4.3"
197
227
  },
228
+ "overrides": {
229
+ "vitepress": {
230
+ "vite": "6.4.4"
231
+ }
232
+ },
198
233
  "devDependencies": {
199
- "@fast-check/vitest": "0.4.1",
234
+ "@fast-check/vitest": "0.5.0",
200
235
  "@types/cross-spawn": "6.0.6",
201
- "@types/node": "24.10.1",
236
+ "@types/node": "26.6.4",
202
237
  "@types/semver": "7.7.1",
203
238
  "@types/write-file-atomic": "4.0.3",
204
239
  "@types/ws": "8.18.1",
205
- "@vitest/coverage-v8": "4.1.10",
240
+ "@vitest/coverage-v8": "5.0.3",
206
241
  "ajv": "8.20.0",
207
242
  "husky": "9.1.7",
208
243
  "jscpd": "5.0.12",
209
- "knip": "6.26.0",
244
+ "knip": "6.39.0",
210
245
  "lint-staged": "16.4.0",
211
246
  "oxfmt": "0.72.0",
212
- "oxlint": "1.73.0",
213
- "turbo": "2.10.5",
214
- "typedoc": "0.28.20",
215
- "typescript": "5.9.3",
216
- "vitest": "4.1.10",
247
+ "oxlint": "1.87.0",
248
+ "turbo": "2.11.7",
249
+ "typescript": "7.0.2",
250
+ "vitepress": "1.6.4",
251
+ "vitest": "5.0.3",
217
252
  "yaml": "2.9.0"
218
253
  }
219
254
  }
@@ -20,11 +20,14 @@ import time
20
20
  # Keep this digest aligned with LinuxHopper.ts and rerun real-Hopper verification
21
21
  # before accepting another vendor build.
22
22
  SUPPORTED_HOPPER_SHA256 = {
23
- "0294ced141cc373468ee22d8343e7dac41980cb05a937994ca81c9f09afe7ded"
23
+ "0294ced141cc373468ee22d8343e7dac41980cb05a937994ca81c9f09afe7ded",
24
+ "1339f9e58377442b0c6fcb0dfc3cec20d593cc557408521fad9a00dbc6b8da13",
24
25
  }
25
26
  EXPECTED_SCREEN = (1280, 1024)
26
- EXPECTED_DIALOG = (189, 370, 901, 284)
27
- DEMO_CLICK = (305, 632)
27
+ DIALOG_TITLES = {"Registration", "Registration — Hopper Disassembler"}
28
+ HOPPER_WINDOW_TITLE = "Hopper Disassembler"
29
+ DEMO_CLICK_LEFT = 116
30
+ DEMO_CLICK_BOTTOM = 22
28
31
  PRIVATE_DISPLAY_UNAVAILABLE = 70
29
32
  X11_AUTHORIZATION_FAILED = 71
30
33
  UNSUPPORTED_HOPPER_BUILD = 72
@@ -196,6 +199,47 @@ def windows(x11: ctypes.CDLL, display: int, root: int) -> list[tuple[int, int, i
196
199
  return found
197
200
 
198
201
 
202
+ def window_title(x11: ctypes.CDLL, display: int, window: int) -> str | None:
203
+ title = ctypes.c_char_p()
204
+ if not x11.XFetchName(display, window, ctypes.byref(title)) or not title.value:
205
+ return None
206
+ try:
207
+ return title.value.decode("utf-8", "replace")
208
+ finally:
209
+ x11.XFree(ctypes.cast(title, ctypes.c_void_p))
210
+
211
+
212
+ def window_transient_for(
213
+ x11: ctypes.CDLL, display: int, window: int
214
+ ) -> int | None:
215
+ parent = ctypes.c_ulong()
216
+ if not x11.XGetTransientForHint(display, window, ctypes.byref(parent)):
217
+ return None
218
+ return int(parent.value)
219
+
220
+
221
+ def find_demo_dialog(
222
+ x11: ctypes.CDLL,
223
+ display: int,
224
+ observed: list[tuple[int, int, int, int, int]],
225
+ ) -> tuple[int, int, int, int, int] | None:
226
+ for candidate in observed:
227
+ window = candidate[0]
228
+ if window_title(x11, display, window) not in DIALOG_TITLES:
229
+ continue
230
+ parent = window_transient_for(x11, display, window)
231
+ if parent is None:
232
+ continue
233
+ if window_title(x11, display, parent) == HOPPER_WINDOW_TITLE:
234
+ return candidate
235
+ return None
236
+
237
+
238
+ def demo_click(dialog: tuple[int, int, int, int, int]) -> tuple[int, int]:
239
+ _window, x, y, _width, height = dialog
240
+ return x + DEMO_CLICK_LEFT, y + height - DEMO_CLICK_BOTTOM
241
+
242
+
199
243
  def configure_x11(x11: ctypes.CDLL, xtst: ctypes.CDLL) -> None:
200
244
  window_pointer = ctypes.POINTER(ctypes.c_ulong)
201
245
  x11.XOpenDisplay.argtypes = [ctypes.c_char_p]
@@ -212,6 +256,18 @@ def configure_x11(x11: ctypes.CDLL, xtst: ctypes.CDLL) -> None:
212
256
  ctypes.POINTER(XWindowAttributes),
213
257
  ]
214
258
  x11.XGetWindowAttributes.restype = ctypes.c_int
259
+ x11.XFetchName.argtypes = [
260
+ ctypes.c_void_p,
261
+ ctypes.c_ulong,
262
+ ctypes.POINTER(ctypes.c_char_p),
263
+ ]
264
+ x11.XFetchName.restype = ctypes.c_int
265
+ x11.XGetTransientForHint.argtypes = [
266
+ ctypes.c_void_p,
267
+ ctypes.c_ulong,
268
+ ctypes.POINTER(ctypes.c_ulong),
269
+ ]
270
+ x11.XGetTransientForHint.restype = ctypes.c_int
215
271
  x11.XQueryTree.argtypes = [
216
272
  ctypes.c_void_p,
217
273
  ctypes.c_ulong,
@@ -644,6 +700,7 @@ def run_launch(args: argparse.Namespace) -> int:
644
700
 
645
701
  deadline = time.monotonic() + 10
646
702
  observed: list[tuple[int, int, int, int, int]] = []
703
+ dialog: tuple[int, int, int, int, int] | None = None
647
704
  while time.monotonic() < deadline:
648
705
  if socket.exists():
649
706
  x11.XCloseDisplay(display)
@@ -659,7 +716,8 @@ def run_launch(args: argparse.Namespace) -> int:
659
716
  "owned Hopper process exited",
660
717
  )
661
718
  observed = windows(x11, display, root)
662
- if any(window[1:] == EXPECTED_DIALOG for window in observed):
719
+ dialog = find_demo_dialog(x11, display, observed)
720
+ if dialog is not None:
663
721
  break
664
722
  time.sleep(0.1)
665
723
  else:
@@ -675,8 +733,10 @@ def run_launch(args: argparse.Namespace) -> int:
675
733
  "expected Hopper demo dialog not found",
676
734
  )
677
735
 
736
+ assert dialog is not None
737
+ click_x, click_y = demo_click(dialog)
678
738
  input_results = (
679
- xtst.XTestFakeMotionEvent(display, -1, DEMO_CLICK[0], DEMO_CLICK[1], 0),
739
+ xtst.XTestFakeMotionEvent(display, -1, click_x, click_y, 0),
680
740
  xtst.XTestFakeButtonEvent(display, 1, True, 0),
681
741
  xtst.XTestFakeButtonEvent(display, 1, False, 0),
682
742
  )
@@ -695,9 +755,8 @@ def run_launch(args: argparse.Namespace) -> int:
695
755
  finally:
696
756
  if display is not None:
697
757
  x11.XCloseDisplay(display)
698
- if child is not None and child.poll() is None:
699
- child.terminate()
700
- child.wait()
758
+ if child is not None:
759
+ stop_process(child)
701
760
  stop_process(xvfb)
702
761
  capture.close()
703
762
 
package/scripts/rea.mjs CHANGED
@@ -23,7 +23,7 @@ const runtimeFiles = isMcpMode
23
23
 
24
24
  if (!(await compiledRuntimeExists(runtimeFiles))) {
25
25
  process.stderr.write(
26
- `REA's compiled runtime is missing. Run \`npm ci\` in ${packageRoot} to install dependencies and build REA, then restart it. If this is an installed package, reinstall rea-agents.\n`,
26
+ `REA's compiled runtime is missing. Run \`npm ci && npm run build:cached\` in ${packageRoot} to install dependencies and build REA, then restart it. If this is an installed package, reinstall rea-agents.\n`,
27
27
  );
28
28
  process.exitCode = 1;
29
29
  } else if (isMcpMode) {
@@ -41,6 +41,7 @@ if (!(await compiledRuntimeExists(runtimeFiles))) {
41
41
  const { createCli } = await import("../dist/cli.js");
42
42
  const {
43
43
  renderCliOutputArgumentError,
44
+ renderEmptyFilteredCliOutput,
44
45
  sanitizeCliOutput,
45
46
  validateCliOutputArguments,
46
47
  } = await import("../dist/cliOutput.js");
@@ -49,9 +50,16 @@ if (!(await compiledRuntimeExists(runtimeFiles))) {
49
50
  process.stdout.write(renderCliOutputArgumentError(outputArguments));
50
51
  process.exitCode = 1;
51
52
  } else {
53
+ let wroteOutput = false;
52
54
  await createCli().serve(args, {
53
- stdout: (output) => process.stdout.write(sanitizeCliOutput(output)),
55
+ stdout: (output) => {
56
+ const sanitized = sanitizeCliOutput(output);
57
+ if (sanitized.length > 0) wroteOutput = true;
58
+ process.stdout.write(sanitized);
59
+ },
54
60
  });
61
+ if (!wroteOutput)
62
+ process.stdout.write(renderEmptyFilteredCliOutput(args) ?? "");
55
63
  }
56
64
  }
57
65
 
@@ -0,0 +1,39 @@
1
+ #!/usr/bin/env node
2
+
3
+ import { createHash } from "node:crypto";
4
+ import { readFile } from "node:fs/promises";
5
+
6
+ const root = new URL("../", import.meta.url);
7
+ const packageJson = JSON.parse(
8
+ await readFile(new URL("package.json", root), "utf8"),
9
+ );
10
+ const manifest = JSON.parse(
11
+ await readFile(new URL("native/windows/build/manifest.json", root), "utf8"),
12
+ );
13
+ const bytes = await readFile(
14
+ new URL("native/windows/build/rea-windows-x64.node", root),
15
+ );
16
+ if (
17
+ manifest.packageVersion !== packageJson.version ||
18
+ manifest.platform !== "win32" ||
19
+ manifest.architecture !== "x64" ||
20
+ manifest.abiVersion !== 1 ||
21
+ manifest.nodeApiVersion !== 8 ||
22
+ manifest.artifact !== "rea-windows-x64.node" ||
23
+ createHash("sha256").update(bytes).digest("hex") !== manifest.artifactSha256
24
+ )
25
+ throw new Error(
26
+ "Windows native artifact metadata or SHA-256 does not match this package; run the Windows native build lane.",
27
+ );
28
+ const offset = bytes.length >= 64 ? bytes.readUInt32LE(0x3c) : bytes.length;
29
+ if (
30
+ bytes.toString("ascii", 0, 2) !== "MZ" ||
31
+ offset > bytes.length - 26 ||
32
+ bytes.toString("ascii", offset, offset + 4) !== "PE\0\0" ||
33
+ bytes.readUInt16LE(offset + 4) !== 0x8664 ||
34
+ bytes.readUInt16LE(offset + 24) !== 0x20b
35
+ )
36
+ throw new Error("Windows native artifact must be a Windows x64 PE32+ image.");
37
+ process.stdout.write(
38
+ `${JSON.stringify({ ok: true, ...manifest, artifactBytes: bytes.length })}\n`,
39
+ );
@@ -1,10 +1,10 @@
1
1
  ---
2
2
  name: reverse-engineer-anything
3
- description: Reverse engineer native, managed, Electron/JavaScript, packaged, and browser applications 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.
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: "24"
6
- tool_count: 116
7
- catalog_digest: "5bb3f994a3c4d0c87a34ff5aab4e28141b5fa6f3a98b5ae7e95686d85d9d983e"
5
+ version: "27"
6
+ tool_count: 133
7
+ catalog_digest: "83b4c3445ed0ec003c0aeefa3188f123d9ae319484f8b1e2b611d2fe278c9c72"
8
8
  ---
9
9
 
10
10
  # REA
@@ -15,32 +15,110 @@ behavior not established by available source. For ordinary analysis of a
15
15
  complete source repository, use normal repository tools and do not run REA
16
16
  readiness or provider commands.
17
17
 
18
+ ## Connect only when needed
19
+
20
+ Installing this skill supplies instructions; it does not register the REA MCP
21
+ server, install analysis engines, or add tools to an already-running agent.
22
+
23
+ If REA tools are available and their registration is not known to be stale,
24
+ proceed directly to the target. Do not run diagnostics or setup before every
25
+ investigation. Use the connected server's actual tool list and input schemas;
26
+ a skill installed from repository main may describe capabilities absent from
27
+ an older npm release. Keep complete inline Evidence when that server does not
28
+ advertise retained references.
29
+
30
+ When tools are absent or registration is stale:
31
+
32
+ 1. Diagnose without changing files. For Codex, run
33
+ `npx -y rea-agents@latest doctor --client codex --json`. Substitute the current
34
+ supported client: `claude_code`, `claude_desktop`, `codex`, `cursor`,
35
+ `gemini_cli`, `windsurf`, `devin`, `opencode`, `antigravity`, `copilot_cli`,
36
+ `commandcode`, or `vscode`. If the client is unknown, use `doctor --json` and
37
+ inspect its registration results before choosing a setup scope.
38
+ 2. Distinguish the reason. Missing, malformed, or stale registration needs a
39
+ scoped configuration repair. An aligned registration with no tools in the
40
+ active session needs a restart/reconnection; doctor cannot prove that the
41
+ current agent has connected. A missing provider affects only tasks requiring
42
+ that provider: static JavaScript inspection needs neither Hopper nor Ghidra,
43
+ and Android inspection has separate bring-your-own JADX/Java prerequisites.
44
+ 3. For a configuration repair, prepare the read-only plan:
45
+ `npx -y rea-agents@latest setup --client codex --dry-run --json`.
46
+ Use the current client's ID, show its exact proposed paths, backups, and
47
+ changes, and obtain approval before setup writes configuration or installs
48
+ Hopper. Setup normally installs the matching bundled skill too; include that
49
+ replacement in the reviewed plan. After approval, apply the same scope with
50
+ `npx -y rea-agents@latest setup --client codex --yes`. Add `--install-hopper`
51
+ only if that separate installation was needed and explicitly approved.
52
+ 4. Restart/reconnect the affected agent. Verify that REA tools actually appear
53
+ in the session, then resume the original investigation. If they remain
54
+ absent, inspect the client's MCP launch error rather than repeating setup.
55
+
56
+ REA setup never installs or upgrades Node.js, npm, Homebrew, Java, Ghidra, IDA,
57
+ JADX, Binwalk, or Unblob. Use existing prerequisites; do not install unrelated
58
+ software to repair
59
+ MCP registration. For an unsupported client, use manual stdio registration
60
+ with a version-pinned `rea-agents` package or continue through the CLI.
61
+
62
+ A concrete CLI fallback for an operator-supplied JavaScript tree or ASAR is:
63
+
64
+ ```bash
65
+ npx -y rea-agents@latest analyze-javascript-application /absolute/path/to/app --json
66
+ ```
67
+
68
+ No MCP registration or native engine is required. Read the returned Evidence,
69
+ graph, limitations, and unknowns with the same care as an MCP result; the CLI
70
+ returns the Evidence record directly. This fallback does not establish that
71
+ MCP is configured. Native CLI tasks still require their selected engine.
72
+
18
73
  ## Route the target first
19
74
 
20
- Choose the first tool from the target the user supplied. Do not call
21
- `open_binary` unless the target is native or an analysis database.
75
+ Choose the first tool from the target the user supplied. Use `open_binary` for
76
+ active-target native or archive workflows; target-free tools take their own
77
+ explicit path or endpoint and do not need it.
22
78
 
23
79
  - ASAR or extracted JavaScript/Electron tree:
24
80
  `analyze_javascript_application`.
25
- - Archive, application package, ZIP/APK/IPA/MSIX/AppX, or DMG:
81
+ - Archive/package member inventory (ZIP/APK/IPA/MSIX/AppX or DMG):
26
82
  `open_binary` with the supplied local path; use `inspect_artifact` when its
27
83
  graph and findings help answer the question.
84
+ - Android APK code, classes, methods, or incoming references:
85
+ `inspect_android_package`, then focused Android tools when advertised.
86
+ Archive member inventory still uses the archive route above.
28
87
  - Managed PE/CLI assembly: `inspect_managed_artifact`.
88
+ - Firmware image: `inspect_firmware_regions` when advertised. Use
89
+ `extract_firmware` when extraction is requested, with a caller-selected new
90
+ absolute output directory. These tools use caller-supplied Binwalk/Unblob on
91
+ Linux; see the [firmware guide](https://github.com/morluto/rea/blob/main/docs/firmware-analysis.md).
92
+ - .NET NativeAOT PE/ELF: native Ghidra analysis. Native code can yield pseudocode;
93
+ consult the NativeAOT workflow in `references/native-and-artifacts.md` for
94
+ optional metadata recovery and its supported host/layout boundary.
29
95
  - User-owned browser page already open: `list_browser_targets`.
30
96
  - User-owned Electron runtime already open: `list_electron_targets`.
31
97
  - Native executable, library, or analysis database: `open_binary`, then
32
98
  use focused analysis tools directly; call `binary_overview` when metadata or
33
- inventory context is useful.
99
+ inventory context is useful and available from the selected provider.
100
+
101
+ For an existing IDA MCP configuration, use `open_binary` with the original
102
+ input binary and `provider_id: "ida"`; do not pass an `.idb` or `.i64` database.
103
+ The legacy attached profile binds the already-open GUI input by SHA-256 and
104
+ leaves its database open. The modern headless profile creates and closes an
105
+ owned private database without saving. Installation and registration reuse
106
+ [mrexodia/ida-pro-mcp](https://github.com/mrexodia/ida-pro-mcp); see the
107
+ [IDA provider guide](https://github.com/morluto/rea/blob/main/docs/ida-provider.md).
108
+ Proceed directly to `analyze_function`, pseudocode, or function/string searches
109
+ after opening; IDA does not supply `binary_overview`. Consult session availability
110
+ when composing broader workflows. Modern direct callers and unsupported dossier
111
+ facets remain unknown; live IDA results are not replayed from snapshots.
34
112
 
35
113
  If the app is missing, ask which app to inspect. Resolve a human-readable app
36
114
  name to one clear installed artifact when possible; ask only when matches are
37
115
  ambiguous. Never choose an example app on the user's behalf.
38
116
 
39
117
  In a target-free session, use `open_binary` to bind any archive/package or
40
- native target whose analysis tool operates on the active target. Do not call a
41
- tool hidden from `tools/list`; inspect `binary_session` with
42
- `detail: "capabilities"` for the exact remediation when a desired capability
43
- is unavailable.
118
+ native target whose analysis tool operates on the active target. Do not call an
119
+ unadvertised tool; inspect `binary_session` with `{}` and its
120
+ `result.tool_availability` for availability reasons and remediation. The tool
121
+ list stays complete; availability depends on the operation, target, and host.
44
122
 
45
123
  ## Work summary-first
46
124
 
@@ -98,23 +176,13 @@ as complete while required questions remain open.
98
176
  [references/native-and-artifacts.md](references/native-and-artifacts.md)
99
177
  - ASARs, extracted JavaScript, feature tracing, and version comparison:
100
178
  [references/javascript-applications.md](references/javascript-applications.md)
179
+ - Android APK declarations, classes, methods, and static references:
180
+ [references/android-applications.md](references/android-applications.md)
101
181
  - Passive browser/Electron observation and static/runtime reconciliation:
102
182
  [references/runtime-observation.md](references/runtime-observation.md)
103
183
  - Evidence paging, comparisons, residual unknowns, and verification:
104
184
  [references/evidence-workflows.md](references/evidence-workflows.md)
105
185
 
106
- ## Readiness and setup
107
-
108
- The readiness rule is conditional: when REA tools are available and their
109
- registration is not known to be stale, proceed directly; do not run `doctor`
110
- before every task. Run `npx -y rea-agents@latest doctor` when the MCP server or
111
- required provider is unavailable, registration is reported stale, or the user
112
- asks for an environment diagnosis. Propose
113
- `npx -y rea-agents@latest setup` only when doctor identifies an alignment or
114
- provider problem. Show the exact plan and obtain approval before setup writes
115
- configuration or installs Hopper. Restart the agent after MCP registration
116
- changes; direct CLI commands remain available immediately.
117
-
118
186
  ## Finish the task
119
187
 
120
188
  Explain findings in plain language and tie them to returned evidence. When the
@@ -0,0 +1,31 @@
1
+ # Android application artifacts
2
+
3
+ Use the connected server's advertised Android tools. Repository main and npm
4
+ 4.1.0 include this family. A skill installation alone cannot add it to an
5
+ older server.
6
+
7
+ Start with `inspect_android_package` on the caller's APK path for package
8
+ identity, manifest declarations, coverage, and inline Evidence. Use
9
+ `search_android_classes` to find candidates, `inspect_android_class` for one
10
+ class's members, `inspect_android_method` for decompilation, and
11
+ `trace_android_references` for incoming static references. Each call takes its
12
+ own APK path and explicit selectors; do not open a native session first.
13
+ Choose an `overload_index` from the class inventory when methods are ambiguous
14
+ instead of guessing.
15
+
16
+ The provider requires a separately supplied headless JADX MCP JAR 0.7.1 and
17
+ Java 17 or newer. `REA_JADX_MCP_JAR` selects the absolute JAR path; `JAVA_HOME`
18
+ can select Java. REA setup does not install or configure that JAR, and doctor
19
+ provider scopes cover Hopper/Ghidra rather than JADX. Use existing tools and
20
+ report missing prerequisites for the Android task specifically.
21
+
22
+ Real verification covers Linux. macOS has the POSIX launch boundary but no
23
+ claimed real-provider verification; Windows is unsupported. Calls use one
24
+ worker, a bounded JVM heap, and provider deadlines. The APK is never launched,
25
+ and no emulator is required.
26
+
27
+ Manifest entries and decompiled text are static observations, not execution or
28
+ policy enforcement. Incoming references are recovered static relationships;
29
+ reflection, dynamic loading, and unresolved calls remain unknown. Preserve
30
+ artifact digests, locations, diagnostics, and incomplete coverage. For archive
31
+ members rather than code analysis, use `open_binary` and `inspect_artifact`.
@@ -15,7 +15,9 @@ registration, defaults, or policy enforcement from static analysis.
15
15
 
16
16
  Use `trace_application_feature` on existing application Evidence for one
17
17
  literal node ID, route, string, API, IPC channel, module, or native export.
18
- Choose a direction and include the complete application Evidence inline. Include
18
+ Choose a direction and reuse the returned application Evidence ID when the
19
+ connected server advertises retained references, or supply complete Evidence
20
+ inline. Include
19
21
  Hopper or Ghidra Evidence only when its artifact digest matches exactly.
20
22
 
21
23
  For version comparison, analyze each version once, then call
@@ -27,10 +29,25 @@ opposite-side coverage; otherwise report unknown.
27
29
  When the question asks how one exact exported callable's returned object shape
28
30
  changed, analyze each version once and then call
29
31
  `compare_javascript_export_shapes` with explicit module paths and export names.
30
- Include the complete Evidence records from both analysis calls. Accept variant
32
+ Use the returned IDs on the same connection, or complete inline Evidence
33
+ records, from both analysis calls. Accept variant
31
34
  pairing only through the tool's unique exact literal discriminant. Cite the
32
35
  comparison Evidence and report JSON Pointer changes; dynamic values, ambiguous
33
36
  variants, and incomplete parent-property coverage stay unknown. This is static
34
37
  inference, not runtime behavior. When runtime semantics are needed, run
35
38
  behavioral probes against the relevant application versions and capture them
36
39
  through the available browser, Electron, or process workflows.
40
+
41
+ ## Reusing application Evidence
42
+
43
+ When advertised by the connected server, application trace and compare tools
44
+ accept complete inline Evidence or
45
+ `{"kind":"retained-evidence","evidence_id":"ev_<64 lowercase hex characters>"}`
46
+ for their application input (`application`, or `left`/`right`). This notation is
47
+ a template: replace it with the actual returned ID. Versions before 4.1.0 accept only full
48
+ inline Evidence. Use the exact ID
49
+ returned by the producer on the same MCP connection. Resolution does not run
50
+ analysis or select a provider; findings remain inline. Native observation
51
+ arrays still take full Evidence. `close_binary` clears retained references;
52
+ export a bundle before closing, or supply portable inline Evidence in another
53
+ connection. A missing reference includes its ID and recovery guidance.