rea-agents 6.1.0 → 6.2.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 (453) hide show
  1. package/README.md +7 -5
  2. package/bridge/ghidra/ReaGhidraBridge.java +32 -4
  3. package/bridge/hopper_bridge.py +6 -1
  4. package/dist/android/JadxConfiguration.js +87 -7
  5. package/dist/android/JadxMcpTransport.js +14 -2
  6. package/dist/android/JadxProvider.js +57 -35
  7. package/dist/application/BinaryTargetResolver.js +5 -3
  8. package/dist/application/BrowserEvidence.js +3 -8
  9. package/dist/application/BrowserScenarioEvidence.js +2 -18
  10. package/dist/application/CapabilityInventory.js +43 -9
  11. package/dist/application/ClientConfigurationDocument.js +69 -25
  12. package/dist/application/DirectAnalysis.js +29 -14
  13. package/dist/application/DirectAnalysisCleanup.js +72 -0
  14. package/dist/application/DirectAnalysisStatus.js +4 -5
  15. package/dist/application/Doctor.js +15 -19
  16. package/dist/application/DoctorDiagnostics.js +1 -2
  17. package/dist/application/EnhancedTools.js +51 -6
  18. package/dist/application/EvidenceBundleFiles.js +8 -3
  19. package/dist/application/InvestigationProviders.js +9 -1
  20. package/dist/application/JsonFiles.js +42 -9
  21. package/dist/application/LinuxHopper.js +9 -6
  22. package/dist/application/MacHopper.js +15 -18
  23. package/dist/application/RealHopperAssertions.js +0 -11
  24. package/dist/application/ReconstructionObligationCandidates.js +1 -1
  25. package/dist/application/ReferenceSourceImportEntries.js +1 -1
  26. package/dist/application/Setup.js +8 -16
  27. package/dist/application/SetupHost.js +16 -27
  28. package/dist/application/SetupPlan.js +6 -6
  29. package/dist/application/Uninstall.js +81 -29
  30. package/dist/application/UpdateMaintenance.js +7 -5
  31. package/dist/application/UpdateRuntime.js +12 -12
  32. package/dist/application/WebScriptExportService.js +30 -4
  33. package/dist/application/WorkflowEvidence.js +25 -2
  34. package/dist/application/XrefsAddressResolution.js +45 -0
  35. package/dist/application/analysisView/AnalysisViewService.js +76 -0
  36. package/dist/application/binary/AnalysisClientCleanup.js +30 -5
  37. package/dist/application/binary/AnalysisProviderEvaluation.js +1 -2
  38. package/dist/application/binary/AnalysisProviderRegistry.js +2 -6
  39. package/dist/application/binary/AnalysisSnapshotCache.js +10 -8
  40. package/dist/application/binary/BinarySession.js +70 -29
  41. package/dist/application/binary/BinarySessionComposition.js +1 -3
  42. package/dist/application/binary/BinarySessionExecution.js +3 -5
  43. package/dist/application/binary/BinarySessionOpen.js +1 -1
  44. package/dist/application/binary/BinarySessionRecords.js +1 -1
  45. package/dist/application/binary/BinarySessionStatus.js +1 -6
  46. package/dist/application/binary/CompositeProvider.js +4 -18
  47. package/dist/application/binary/LazyAnalysisProvider.js +5 -5
  48. package/dist/application/binary/SessionProviderRouter.js +27 -135
  49. package/dist/application/homebrew.js +48 -0
  50. package/dist/application/javascript/ElectronActiveEvidence.js +9 -13
  51. package/dist/application/javascript/JavaScriptApplicationEvidence.js +2 -6
  52. package/dist/application/javascript/JavaScriptApplicationService.js +6 -1
  53. package/dist/application/javascript/JavaScriptArtifactAnalysis.js +5 -3
  54. package/dist/application/javascript/JavaScriptArtifactGraphBuilder.js +11 -9
  55. package/dist/application/javascript/JavaScriptArtifactGraphBundlers.js +11 -3
  56. package/dist/application/javascript/JavaScriptArtifactGraphContext.js +9 -0
  57. package/dist/application/javascript/JavaScriptArtifactGraphDocuments.js +8 -5
  58. package/dist/application/javascript/JavaScriptArtifactGraphFindings.js +12 -3
  59. package/dist/application/javascript/JavaScriptArtifactGraphStructure.js +0 -1
  60. package/dist/application/javascript/JavaScriptArtifactPathResolution.js +43 -16
  61. package/dist/application/javascript/JavaScriptArtifactReconstruction.js +46 -6
  62. package/dist/application/javascript/JavaScriptModuleRelationships.js +1 -1
  63. package/dist/application/javascript/JavaScriptRuntimeObservationService.js +3 -3
  64. package/dist/application/javascript/JavaScriptSemanticGraphAsyncProjection.js +2 -3
  65. package/dist/application/javascript/JavaScriptSemanticGraphChildProcessProjection.js +1 -2
  66. package/dist/application/javascript/JavaScriptSemanticGraphDataProjection.js +2 -3
  67. package/dist/application/javascript/JavaScriptSemanticGraphFlowProjection.js +1 -5
  68. package/dist/application/javascript/JavaScriptSemanticGraphObjectProjection.js +75 -46
  69. package/dist/application/javascript/JavaScriptSemanticGraphResourceProjection.js +2 -3
  70. package/dist/application/javascript/JavaScriptSemanticGraphValueProjection.js +42 -19
  71. package/dist/application/managed/ManagedMemberComparisonService.js +2 -1
  72. package/dist/application/managed/ManagedNativeVerificationService.js +2 -1
  73. package/dist/application/process/ProcessCli.js +11 -11
  74. package/dist/application/process/ProcessEvidence.js +0 -1
  75. package/dist/artifacts/ArtifactProvider.js +39 -14
  76. package/dist/artifacts/ArtifactReader.js +31 -0
  77. package/dist/artifacts/DirectoryArtifactReader.js +2 -1
  78. package/dist/artifacts/MachOSliceArtifactReader.js +9 -2
  79. package/dist/artifacts/NativeDmgArtifactReader.js +65 -20
  80. package/dist/artifacts/SafeOutputTree.js +16 -2
  81. package/dist/artifacts/ZipArtifactReader.js +11 -4
  82. package/dist/artifacts/apple/AppleAssetCatalogAnalysis.js +4 -2
  83. package/dist/artifacts/apple/DylibResolutionReader.js +17 -7
  84. package/dist/artifacts/apple/KeyedArchiveReader.js +21 -3
  85. package/dist/artifacts/extraction/ArtifactExtraction.js +78 -21
  86. package/dist/artifacts/inventory/ArtifactGraphConstruction.js +67 -61
  87. package/dist/artifacts/inventory/ArtifactInventory.js +0 -1
  88. package/dist/artifacts/inventory/reader.js +3 -3
  89. package/dist/artifacts/inventory/scanCanonical.js +48 -24
  90. package/dist/artifacts/inventory/scanReader.js +5 -9
  91. package/dist/browser/BrowserScenarioPartialObservation.js +106 -0
  92. package/dist/browser/CdpBrowserProvider.js +2 -3
  93. package/dist/browser/CdpCaptureEventHandlers.js +2 -4
  94. package/dist/browser/CdpCaptureEvents.js +0 -1
  95. package/dist/browser/CdpCaptureValues.js +20 -0
  96. package/dist/browser/CdpElectronProvider.js +0 -2
  97. package/dist/browser/CdpElectronScriptEvents.js +2 -8
  98. package/dist/browser/CdpElectronScripts.js +2 -3
  99. package/dist/browser/CdpPageCaptureScripts.js +2 -3
  100. package/dist/browser/CdpSafeMetadata.js +10 -10
  101. package/dist/browser/PlaywrightBrowserScenarioProvider.js +59 -44
  102. package/dist/browser/PlaywrightElectronActiveActions.js +2 -56
  103. package/dist/browser/PlaywrightElectronActiveProvider.js +10 -6
  104. package/dist/browser/PlaywrightScenarioArtifacts.js +1 -1
  105. package/dist/browser/PlaywrightScenarioBrowser.js +139 -39
  106. package/dist/browser/PlaywrightScenarioEvents.js +1 -1
  107. package/dist/browser/PlaywrightScenarioSession.js +39 -22
  108. package/dist/browser/assets/ScriptCaptureAdapters.js +1 -1
  109. package/dist/browser/history/CaptureFailures.js +6 -2
  110. package/dist/browser/history/MitmproxyCaptureAdapter.js +4 -2
  111. package/dist/catalogIdentity.js +0 -1
  112. package/dist/cli/analysisViewCommands.js +36 -0
  113. package/dist/cli/artifactCommands.js +11 -12
  114. package/dist/cli/coreAnalysisCommands.js +3 -3
  115. package/dist/cli/coreBinaryCommands.js +32 -27
  116. package/dist/cli/coreNativeCommands.js +9 -10
  117. package/dist/cli/electronCommands.js +4 -4
  118. package/dist/cli/interactiveSetup.js +6 -6
  119. package/dist/cli/managedCommands.js +7 -8
  120. package/dist/cli/nativeCallCommands.js +1 -2
  121. package/dist/cli/omittableDefaults.js +50 -0
  122. package/dist/cli/processCommands.js +3 -2
  123. package/dist/cli/setupCommands.js +16 -15
  124. package/dist/cli/utilityCommands.js +9 -9
  125. package/dist/cli.js +16 -8
  126. package/dist/cliBrowserScenarioCommands.js +2 -2
  127. package/dist/cliCommandNames.js +1 -0
  128. package/dist/cliJsonInput.js +15 -1
  129. package/dist/cliOutput.js +0 -38
  130. package/dist/composition/auxiliaryAnalysisProviders.js +27 -23
  131. package/dist/composition/binary.js +9 -9
  132. package/dist/composition/browserScenario.js +2 -1
  133. package/dist/composition/directAnalysis.js +20 -13
  134. package/dist/composition/electronScenario.js +1 -1
  135. package/dist/composition/optionalObservationProviders.js +12 -7
  136. package/dist/config/environment.js +6 -0
  137. package/dist/config/ghidraStartupTimeout.js +4 -9
  138. package/dist/config/homeDirectory.js +12 -0
  139. package/dist/config/mcpResponseBudget.js +9 -1
  140. package/dist/config/parseConfig.js +7 -3
  141. package/dist/config/parsers.js +19 -22
  142. package/dist/contracts/analysisViewToolContracts.js +56 -0
  143. package/dist/contracts/applicationToolContracts.js +5 -4
  144. package/dist/contracts/artifactComparisonExample.js +2 -2
  145. package/dist/contracts/artifactToolContracts.js +1 -1
  146. package/dist/contracts/browserScenarioToolContracts.js +1 -1
  147. package/dist/contracts/browserToolContracts.js +19 -15
  148. package/dist/contracts/enhancedInputs.js +2 -2
  149. package/dist/contracts/enhancedToolContracts.js +4 -3
  150. package/dist/contracts/evm/evmToolContracts.js +1 -1
  151. package/dist/contracts/functionWorkflowToolContracts.js +1 -1
  152. package/dist/contracts/inputSchemaPresentation.js +90 -0
  153. package/dist/contracts/investigationExamples.js +4 -3
  154. package/dist/contracts/javascript/electronToolContracts.js +1 -1
  155. package/dist/contracts/javascript/javascriptApplicationWorkflowExamples.js +0 -20
  156. package/dist/contracts/javascript/javascriptExportShapeComparisonExample.js +245 -0
  157. package/dist/contracts/javascript/javascriptRuntimeObservationToolContracts.js +1 -1
  158. package/dist/contracts/managed/managedToolContracts.js +5 -10
  159. package/dist/contracts/managed/managedWorkflowToolContracts.js +1 -1
  160. package/dist/contracts/mobileApplicationGraphExamples.js +3 -3
  161. package/dist/contracts/native/binaryDiagnosticsToolContracts.js +1 -1
  162. package/dist/contracts/native/nativeToolContracts.js +2 -2
  163. package/dist/contracts/officialToolContracts.js +2 -1
  164. package/dist/contracts/promptContracts.js +2 -2
  165. package/dist/contracts/providerSelection.js +1 -1
  166. package/dist/contracts/sessionToolContracts.js +14 -2
  167. package/dist/contracts/sessionToolSchemas.js +1 -14
  168. package/dist/contracts/toolContracts.js +2 -0
  169. package/dist/contracts/toolEffects.js +1 -0
  170. package/dist/contracts/toolOutputSchemaGroups.js +136 -92
  171. package/dist/contracts/toolOutputSchemaPrimitives.js +11 -21
  172. package/dist/contracts/toolSchemaMetadata.js +18 -69
  173. package/dist/contracts/webNetworkCaptureToolContracts.js +1 -1
  174. package/dist/contracts/webRuntimeToolContracts.js +1 -1
  175. package/dist/contracts/webScriptToolContracts.js +1 -1
  176. package/dist/doctorRuntime.js +7 -5
  177. package/dist/domain/analysisErrorCore.js +3 -0
  178. package/dist/domain/analysisErrorPresentation.js +18 -3
  179. package/dist/domain/analysisErrorProjection.js +24 -5
  180. package/dist/domain/analysisSnapshot.js +29 -31
  181. package/dist/domain/analysisView/analysisView.js +243 -0
  182. package/dist/domain/analysisView/analysisViewCoverage.js +19 -0
  183. package/dist/domain/analysisView/binaryLayoutView.js +159 -0
  184. package/dist/domain/analysisView/javascriptApplicationView.js +238 -0
  185. package/dist/domain/android/androidApplication.js +1 -1
  186. package/dist/domain/apple/appleApplication.js +1 -1
  187. package/dist/domain/apple/dylibResolution.js +10 -3
  188. package/dist/domain/apple/interfaceBuilderGraph.js +0 -1
  189. package/dist/domain/apple/keyedArchive.js +26 -2
  190. package/dist/domain/artifactComparison.js +15 -6
  191. package/dist/domain/artifactGraph.js +16 -3
  192. package/dist/domain/artifactInventoryEvidence.js +9 -16
  193. package/dist/domain/artifactOperationError.js +3 -3
  194. package/dist/domain/artifactPartialObservation.js +1 -0
  195. package/dist/domain/artifactPathSyntax.js +49 -0
  196. package/dist/domain/binaryTarget.js +39 -13
  197. package/dist/domain/browserCaptureComparison.js +13 -49
  198. package/dist/domain/browserNetworkEvidence.js +10 -4
  199. package/dist/domain/browserObservation.js +0 -1
  200. package/dist/domain/browserObservationSchemas.js +14 -3
  201. package/dist/domain/browserScenario.js +0 -1
  202. package/dist/domain/browserScenarioCapture.js +1 -2
  203. package/dist/domain/browserScenarioDiff.js +0 -2
  204. package/dist/domain/browserScenarioDiffEvidence.js +0 -12
  205. package/dist/domain/browserScenarioDiffValues.js +2 -2
  206. package/dist/domain/browserScenarioValues.js +3 -4
  207. package/dist/domain/callPath.js +8 -9
  208. package/dist/domain/callPathSchemas.js +2 -2
  209. package/dist/domain/changedBehavior.js +3 -3
  210. package/dist/domain/completionLedgerGeneration.js +2 -1
  211. package/dist/domain/configurationErrors.js +12 -0
  212. package/dist/domain/conformancePackage.js +4 -3
  213. package/dist/domain/evidence.js +10 -36
  214. package/dist/domain/evidenceBundle.js +7 -9
  215. package/dist/domain/evidenceCompletionLedger.js +2 -1
  216. package/dist/domain/functionComparison.js +4 -5
  217. package/dist/domain/functionComparisonDimensions.js +120 -87
  218. package/dist/domain/functionComparisonNormalization.js +23 -34
  219. package/dist/domain/functionComparisonResults.js +1 -4
  220. package/dist/domain/functionComparisonSchemas.js +2 -8
  221. package/dist/domain/functionDossierEvidence.js +2 -37
  222. package/dist/domain/javascript/electronActiveObservation.js +26 -69
  223. package/dist/domain/javascript/electronObservation.js +14 -3
  224. package/dist/domain/javascript/electronStaticAnalysisBrowser.js +10 -9
  225. package/dist/domain/javascript/electronStaticAnalysisIpc.js +2 -1
  226. package/dist/domain/javascript/electronStaticAnalysisNative.js +2 -1
  227. package/dist/domain/javascript/javascriptApplicationEvidenceSchemas.js +2 -0
  228. package/dist/domain/javascript/javascriptApplicationGraph.js +26 -3
  229. package/dist/domain/javascript/javascriptApplicationGraphSchemas.js +9 -2
  230. package/dist/domain/javascript/javascriptApplicationVersionItems.js +5 -2
  231. package/dist/domain/javascript/javascriptApplicationVersionKeys.js +2 -1
  232. package/dist/{application/javascript/JavaScriptReturnShapeProjection.js → domain/javascript/javascriptExportReturnShapeProjection.js} +4 -4
  233. package/dist/domain/javascript/javascriptExportShapeComparison.js +7 -1
  234. package/dist/domain/javascript/javascriptExportShapeComparisonIdentity.js +6 -1
  235. package/dist/domain/javascript/javascriptExportShapeComparisonSchemas.js +29 -1
  236. package/dist/domain/javascript/javascriptExportShapeSelection.js +5 -5
  237. package/dist/domain/javascript/javascriptExportShapeVariants.js +67 -14
  238. package/dist/domain/javascript/javascriptFeatureSeed.js +20 -0
  239. package/dist/domain/javascript/javascriptFeatureTraversal.js +0 -1
  240. package/dist/domain/javascript/javascriptNativeHandoff.js +1 -1
  241. package/dist/domain/javascript/javascriptRuntimeLoadState.js +0 -1
  242. package/dist/domain/javascript/javascriptRuntimeObservation.js +10 -2
  243. package/dist/domain/javascript/javascriptRuntimeReconciliationMatching.js +1 -1
  244. package/dist/domain/javascript/javascriptRuntimeReconciliationParsing.js +3 -2
  245. package/dist/domain/javascript/javascriptRuntimeStaticCandidates.js +0 -1
  246. package/dist/domain/javascript/javascriptSemanticAnalysis.js +9 -3
  247. package/dist/domain/javascript/javascriptSemanticAsyncEffects.js +2 -1
  248. package/dist/domain/javascript/javascriptSemanticCalls.js +2 -1
  249. package/dist/domain/javascript/javascriptSemanticChildProcesses.js +2 -1
  250. package/dist/domain/javascript/javascriptSemanticDataEffects.js +1 -1
  251. package/dist/domain/javascript/javascriptSemanticGraph.js +88 -46
  252. package/dist/domain/javascript/javascriptSemanticMemberMutations.js +77 -20
  253. package/dist/domain/javascript/javascriptSemanticMutationValues.js +21 -27
  254. package/dist/domain/javascript/javascriptSemanticObjects.js +83 -42
  255. package/dist/domain/javascript/javascriptSemanticPrimitives.js +1 -12
  256. package/dist/domain/javascript/javascriptSemanticProjection.js +2 -3
  257. package/dist/domain/javascript/javascriptSemanticPromises.js +2 -1
  258. package/dist/domain/javascript/javascriptSemanticResourceLimits.js +1 -1
  259. package/dist/domain/javascript/javascriptSemanticResources.js +1 -1
  260. package/dist/domain/javascript/javascriptSemanticReturns.js +32 -17
  261. package/dist/domain/javascript/javascriptSemanticSlots.js +72 -0
  262. package/dist/domain/javascript/javascriptSemanticValues.js +47 -54
  263. package/dist/domain/javascript/javascriptSourceMapPaths.js +104 -0
  264. package/dist/domain/javascript/javascriptStaticAnalysisCalls.js +2 -1
  265. package/dist/domain/javascript/javascriptStaticAnalysisHelpers.js +0 -1
  266. package/dist/domain/javascript/sourceToBundleComparison.js +12 -3
  267. package/dist/domain/javascript/sourceToBundleSignals.js +47 -19
  268. package/dist/domain/localPath.js +1 -1
  269. package/dist/domain/managed/managedArtifact.js +6 -4
  270. package/dist/domain/managed/managedMemberComparison.js +2 -9
  271. package/dist/domain/managed/managedNativeVerification.js +0 -2
  272. package/dist/domain/managed/managedNativeVerificationMatch.js +9 -3
  273. package/dist/domain/native/binaryLayout.js +2 -3
  274. package/dist/domain/native/nativeApiBoundary.js +1 -1
  275. package/dist/domain/native/nativeCallObservation.js +5 -3
  276. package/dist/domain/native/nativeInstruction.js +7 -0
  277. package/dist/domain/native/recordedCrash.js +2 -3
  278. package/dist/domain/offsetDateTime.js +17 -0
  279. package/dist/domain/process/processCapture.js +13 -12
  280. package/dist/domain/process/processCaptureCoverage.js +67 -0
  281. package/dist/domain/process/processCaptureExample.js +2 -1
  282. package/dist/domain/process/processCaptureParsing.js +1 -34
  283. package/dist/domain/process/processCaptureValidation.js +81 -13
  284. package/dist/domain/process/processComparison.js +41 -22
  285. package/dist/domain/process/processObservation.js +10 -2
  286. package/dist/domain/process/processScenario.js +24 -2
  287. package/dist/domain/process/processTraceComparison.js +0 -2
  288. package/dist/domain/process/processTraceDimensionProjection.js +1 -1
  289. package/dist/domain/process/processTraceEvaluation.js +15 -11
  290. package/dist/domain/process/processTraceSpecification.js +3 -4
  291. package/dist/domain/providerAdapterError.js +2 -0
  292. package/dist/domain/reconstructionCoverage.js +5 -2
  293. package/dist/domain/reconstructionObligationLedgerSchemas.js +2 -1
  294. package/dist/domain/reconstructionReadinessSchemas.js +2 -1
  295. package/dist/domain/reconstructionVerification.js +3 -3
  296. package/dist/domain/reconstructionVerificationSchemas.js +2 -1
  297. package/dist/domain/referenceSourceGraph.js +20 -21
  298. package/dist/domain/staticRuntimeCorrelation.js +2 -2
  299. package/dist/domain/stringPatterns.js +6 -0
  300. package/dist/domain/swiftSymbolClassification.js +61 -0
  301. package/dist/domain/symbolAnalysis.js +66 -18
  302. package/dist/domain/webCaptureDiff.js +0 -1
  303. package/dist/domain/webCaptureDiffSchemas.js +6 -3
  304. package/dist/domain/webEventListeners.js +3 -2
  305. package/dist/domain/webExecution.js +3 -2
  306. package/dist/domain/webRuntime.js +0 -2
  307. package/dist/domain/webScriptExport.js +1 -1
  308. package/dist/dotnet/ManagedArtifactInspector.js +2 -19
  309. package/dist/dotnet/ManagedMemberInspector.js +12 -18
  310. package/dist/dotnet/ManagedMemberInspectorCore.js +47 -44
  311. package/dist/dotnet/ManagedMemberRows.js +75 -62
  312. package/dist/dotnet/ManagedMetadataInventory.js +16 -22
  313. package/dist/dotnet/ManagedMethodBodyReader.js +4 -0
  314. package/dist/dotnet/ManagedNativeBoundaryHelpers.js +109 -94
  315. package/dist/dotnet/ManagedNativeBoundaryInspector.js +12 -21
  316. package/dist/dotnet/ManagedReaderFailure.js +16 -0
  317. package/dist/dotnet/ManagedStaticProvider.js +3 -5
  318. package/dist/evaluation/AgentEvaluationFixtures.js +250 -0
  319. package/dist/evaluation/AgentEvaluationReport.js +28 -0
  320. package/dist/evaluation/CodexAgentEval.js +12 -8
  321. package/dist/evaluation/KnownAnswerEvaluation.js +281 -0
  322. package/dist/evm/EvmoleInterfaceProvider.js +2 -1
  323. package/dist/firmware/FirmwareCommand.js +9 -5
  324. package/dist/firmware/FirmwareProvider.js +4 -4
  325. package/dist/generatedPackageMetadata.js +2 -2
  326. package/dist/ghidra/GhidraAnalysisProfile.js +3 -6
  327. package/dist/ghidra/GhidraClient.js +91 -32
  328. package/dist/ghidra/GhidraClientStartup.js +0 -2
  329. package/dist/ghidra/GhidraDoctor.js +6 -5
  330. package/dist/ghidra/GhidraFunctionValues.js +3 -5
  331. package/dist/ghidra/GhidraInstallation.js +40 -12
  332. package/dist/ghidra/GhidraJavaLaunch.js +6 -2
  333. package/dist/ghidra/GhidraLauncher.js +15 -7
  334. package/dist/ghidra/GhidraProvider.js +6 -2
  335. package/dist/ghidra/GhidraProviderCapabilities.js +6 -0
  336. package/dist/ghidra/GhidraProviderClient.js +13 -3
  337. package/dist/ghidra/GhidraSessionError.js +2 -0
  338. package/dist/ghidra/GhidraSessionRoot.js +39 -0
  339. package/dist/ghidra/extensions/GhidraExtensions.js +17 -10
  340. package/dist/ghidra/extensions/nativeaot/NativeAotAdapter.js +8 -2
  341. package/dist/hopper/BridgeLauncher.js +34 -45
  342. package/dist/hopper/HopperAnalysisProfile.js +3 -8
  343. package/dist/hopper/HopperCleanup.js +56 -27
  344. package/dist/hopper/HopperClient.js +86 -65
  345. package/dist/hopper/HopperMachOImage.js +3 -2
  346. package/dist/hopper/HopperProvider.js +16 -18
  347. package/dist/hopper/HopperRegexSearch.js +3 -6
  348. package/dist/hopper/HopperTargetLease.js +132 -49
  349. package/dist/hopper/LinuxPrivateDisplayProbe.js +6 -0
  350. package/dist/ida/IdaConfiguration.js +8 -3
  351. package/dist/ida/IdaInput.js +1 -7
  352. package/dist/ida/IdaMcpConnection.js +8 -4
  353. package/dist/ida/IdaOperationRunner.js +3 -3
  354. package/dist/ida/IdaProvider.js +8 -12
  355. package/dist/ida/IdaSessionClient.js +20 -18
  356. package/dist/ida/IdaWorkspace.js +12 -13
  357. package/dist/inspector/V8InspectorCaptureProjection.js +1 -1
  358. package/dist/inspector/V8InspectorProvider.js +38 -28
  359. package/dist/javascript/recovery/WakaruCommand.js +7 -2
  360. package/dist/javascript/recovery/WakaruExecution.js +5 -2
  361. package/dist/main/shutdown.js +11 -3
  362. package/dist/main/startup.js +9 -2
  363. package/dist/main/transport.js +22 -2
  364. package/dist/main.js +11 -18
  365. package/dist/native/AppleMachoSelection.js +16 -6
  366. package/dist/native/CommandRunner.js +9 -7
  367. package/dist/native/LldbCallTracer.js +8 -2
  368. package/dist/native/NativeMacOSProvider.js +25 -15
  369. package/dist/native/NativeUiHelperRuntime.js +11 -2
  370. package/dist/native/NativeUiObservation.js +2 -2
  371. package/dist/native/pwntools/PwntoolsDecoder.js +2 -1
  372. package/dist/process/DarwinProcessRunTokenReader.js +16 -2
  373. package/dist/process/ExecFileOutput.js +88 -6
  374. package/dist/process/PrivateRuntimeRoot.js +10 -5
  375. package/dist/process/ProcessOwnership.js +1 -4
  376. package/dist/process/ProcessOwnershipObservation.js +11 -5
  377. package/dist/process/ProviderProcess.js +1 -3
  378. package/dist/process/capture/FilesystemSnapshot.js +50 -13
  379. package/dist/process/capture/ProcessCaptureError.js +13 -0
  380. package/dist/process/capture/ProcessCaptureLifecycle.js +158 -70
  381. package/dist/process/capture/ProcessFilesystemEffects.js +33 -3
  382. package/dist/process/capture/ProcessHarness.js +21 -25
  383. package/dist/process/capture/ProcessNormalization.js +20 -2
  384. package/dist/process/capture/ProcessSampling.js +25 -2
  385. package/dist/process/capture/TerminalRenderer.js +14 -0
  386. package/dist/process/snapshotEnvironment.js +14 -0
  387. package/dist/server/EvidenceMcpServer.js +25 -14
  388. package/dist/server/createServer.js +49 -36
  389. package/dist/server/mcpClientMetadata.js +12 -5
  390. package/dist/server/promptCompletion.js +3 -8
  391. package/dist/server/registerAnalysisViewTool.js +15 -0
  392. package/dist/server/registerAndroidTools.js +2 -3
  393. package/dist/server/registerApplicationTools/compareExportShapes.js +4 -5
  394. package/dist/server/registerApplicationTools/compareSourceToBundle.js +4 -5
  395. package/dist/server/registerApplicationTools/compareVersions.js +4 -5
  396. package/dist/server/registerApplicationTools/coverage.js +1 -2
  397. package/dist/server/registerApplicationTools/helpers.js +1 -2
  398. package/dist/server/registerApplicationTools/obligationLedger.js +4 -5
  399. package/dist/server/registerApplicationTools/projectMobileApplicationGraph.js +3 -4
  400. package/dist/server/registerApplicationTools/traceFeature.js +4 -5
  401. package/dist/server/registerApplicationTools/traceSemantics.js +4 -5
  402. package/dist/server/registerArtifactComparisonTool.js +4 -5
  403. package/dist/server/registerBinaryDiagnosticsTools.js +2 -3
  404. package/dist/server/registerBrowserScenarioTool.js +3 -4
  405. package/dist/server/registerBrowserTools.js +13 -16
  406. package/dist/server/registerBundleComparisonTool.js +5 -6
  407. package/dist/server/registerCloseLifecycleTool.js +2 -3
  408. package/dist/server/registerElectronTools.js +10 -13
  409. package/dist/server/registerEnhancedTools.js +23 -23
  410. package/dist/server/registerEvidenceTools.js +3 -4
  411. package/dist/server/registerEvmTools.js +2 -3
  412. package/dist/server/registerFirmwareTools.js +2 -3
  413. package/dist/server/registerFunctionComparisonTool.js +7 -8
  414. package/dist/server/registerInvestigationTools.js +14 -15
  415. package/dist/server/registerJavaScriptRecoveryTool.js +2 -3
  416. package/dist/server/registerJavaScriptRuntimeObservationTools.js +6 -6
  417. package/dist/server/registerManagedWorkflowTools/compareManagedMembers.js +5 -6
  418. package/dist/server/registerManagedWorkflowTools/importManagedReconstruction.js +4 -5
  419. package/dist/server/registerManagedWorkflowTools/projectManagedApplicationGraph.js +6 -7
  420. package/dist/server/registerManagedWorkflowTools/verifyManagedNativeBoundaries.js +6 -7
  421. package/dist/server/registerOfficialTools.js +4 -19
  422. package/dist/server/registerProcessComparisonTool.js +8 -8
  423. package/dist/server/registerRecordedCrashTools.js +2 -3
  424. package/dist/server/registerSessionRecordTools.js +15 -19
  425. package/dist/server/registerSessionStatusTool.js +3 -4
  426. package/dist/server/registerSessionTools.js +12 -18
  427. package/dist/server/registerWebModuleTool.js +2 -3
  428. package/dist/server/registerWebNetworkCaptureTool.js +2 -3
  429. package/dist/server/registerWebRuntimeTools.js +4 -5
  430. package/dist/server/registerWebScriptTool.js +2 -3
  431. package/dist/server/registerWebSourceLocationTool.js +2 -3
  432. package/dist/server/toolResult.js +66 -94
  433. package/dist/server/toolResultEncoding.js +11 -10
  434. package/dist/windows/WindowsNativeLoader.js +1 -0
  435. package/dist/windows/WindowsOwnedProcess.js +60 -15
  436. package/dist/windows/WindowsPrivateRuntime.js +7 -8
  437. package/native/windows/README.md +3 -1
  438. package/native/windows/build/manifest.json +2 -2
  439. package/native/windows/build/rea-windows-x64.node +0 -0
  440. package/package.json +39 -30
  441. package/scripts/rea.mjs +3 -6
  442. package/skills/reverse-engineer-anything/SKILL.md +9 -8
  443. package/skills/reverse-engineer-anything/references/android-applications.md +6 -3
  444. package/skills/reverse-engineer-anything/references/evidence-workflows.md +8 -4
  445. package/skills/reverse-engineer-anything/references/javascript-applications.md +16 -6
  446. package/skills/reverse-engineer-anything/references/native-and-artifacts.md +9 -0
  447. package/dist/config.js +0 -1
  448. package/dist/contracts/browserCaptureToolInputSchema.js +0 -43
  449. package/dist/contracts/process/processCaptureExample.js +0 -2
  450. package/dist/contracts/toolOutputSchemas.js +0 -2
  451. package/dist/main/reload.js +0 -12
  452. package/dist/main/state.js +0 -3
  453. package/dist/server/sessionToolPolicies.js +0 -2
@@ -1,9 +1,9 @@
1
1
  import { accessSync, constants } from "node:fs";
2
- import { homedir } from "node:os";
3
2
  import { join } from "node:path";
4
3
  import { ConfigurationError } from "../domain/configurationErrors.js";
5
4
  import { ok } from "../domain/result.js";
6
5
  import { parseEnvironment } from "./environment.js";
6
+ import { homeDirectoryFromEnvironment } from "./homeDirectory.js";
7
7
  import { parseStringArray, parseLoaderArgs } from "./parsers.js";
8
8
  const DEFAULT_HOPPER_LAUNCHER_PATH = "/Applications/Hopper Disassembler.app/Contents/MacOS/hopper";
9
9
  const SYSTEM_LINUX_HOPPER = "/opt/hopper/bin/Hopper";
@@ -16,7 +16,7 @@ const executableAvailable = (path) => {
16
16
  return false;
17
17
  }
18
18
  };
19
- const defaultHopperLauncherPath = (platform = process.platform, homeDirectory = homedir(), executable = executableAvailable) => {
19
+ const defaultHopperLauncherPath = (platform, homeDirectory, executable = executableAvailable) => {
20
20
  if (platform !== "linux")
21
21
  return DEFAULT_HOPPER_LAUNCHER_PATH;
22
22
  if (executable(SYSTEM_LINUX_HOPPER))
@@ -37,6 +37,9 @@ export const parseConfig = (environment) => {
37
37
  if (!secretPatterns.ok)
38
38
  return secretPatterns;
39
39
  return ok({
40
+ ...(env.REA_MCP_MAX_RESPONSE_BYTES === undefined
41
+ ? {}
42
+ : { mcpMaxResponseBytes: env.REA_MCP_MAX_RESPONSE_BYTES }),
40
43
  analysisProvider: env.REA_ANALYSIS_PROVIDER,
41
44
  ...(env.REA_IDA_MCP_CONFIG === undefined
42
45
  ? {}
@@ -48,7 +51,8 @@ export const parseConfig = (environment) => {
48
51
  ? {}
49
52
  : { ghidraNativeAotJar: env.REA_GHIDRA_NATIVEAOT_JAR }),
50
53
  ilspyCmdPath: env.REA_ILSPY_CMD_PATH,
51
- hopperLauncherPath: env.HOPPER_LAUNCHER_PATH ?? defaultHopperLauncherPath(),
54
+ hopperLauncherPath: env.HOPPER_LAUNCHER_PATH ??
55
+ defaultHopperLauncherPath(process.platform, homeDirectoryFromEnvironment(environment, process.platform)),
52
56
  hopperTargetPath: env.HOPPER_TARGET_PATH,
53
57
  hopperTargetKind: env.HOPPER_TARGET_KIND,
54
58
  hopperLoaderArgs: loaderArgs.value,
@@ -1,33 +1,30 @@
1
1
  import { z } from "zod";
2
2
  import { ConfigurationError } from "../domain/configurationErrors.js";
3
3
  import { err, ok } from "../domain/result.js";
4
+ import { safeParseJson } from "../domain/safeJson.js";
5
+ /** Decode explicitly selected reference-source exclusion patterns. */
4
6
  export const parseStringArray = (encoded, name) => {
5
- try {
6
- const parsed = z.array(z.string().min(1)).safeParse(JSON.parse(encoded));
7
- return parsed.success
8
- ? ok(parsed.data)
9
- : err(new ConfigurationError(`${name} must encode an array of strings`, {
10
- cause: parsed.error,
11
- }));
12
- }
13
- catch (cause) {
14
- return err(new ConfigurationError(`${name} must be valid JSON`, { cause }));
15
- }
7
+ return parseConfiguredStringArray(encoded, name, z.string().min(1));
16
8
  };
9
+ /** Decode Hopper arguments while preserving meaningful empty argv entries. */
17
10
  export const parseLoaderArgs = (encoded) => {
18
11
  if (encoded === undefined)
19
12
  return ok([]);
20
- let decoded;
21
- try {
22
- decoded = JSON.parse(encoded);
23
- }
24
- catch (cause) {
25
- return err(new ConfigurationError("HOPPER_LOADER_ARGS_JSON must be valid JSON", {
26
- cause,
27
- }));
28
- }
29
- const parsed = z.array(z.string()).safeParse(decoded);
13
+ return parseConfiguredStringArray(encoded, "HOPPER_LOADER_ARGS_JSON", z.string());
14
+ };
15
+ const parseConfiguredStringArray = (encoded, setting, itemSchema) => {
16
+ const decoded = safeParseJson(encoded);
17
+ if (!decoded.ok)
18
+ return err(configuredArrayError(setting, "must be valid JSON", decoded.cause));
19
+ const parsed = z.array(itemSchema).safeParse(decoded.value);
30
20
  return parsed.success
31
21
  ? ok(parsed.data)
32
- : err(new ConfigurationError("HOPPER_LOADER_ARGS_JSON must encode an array of strings", { cause: parsed.error }));
22
+ : err(configuredArrayError(setting, "must encode an array of strings", parsed.error));
23
+ };
24
+ const configuredArrayError = (setting, requirement, cause) => {
25
+ const constraint = `${setting} ${requirement}`;
26
+ return new ConfigurationError(constraint, {
27
+ cause,
28
+ settings: [{ setting, constraint }],
29
+ });
33
30
  };
@@ -0,0 +1,56 @@
1
+ import { analysisViewResultSchema, inspectAnalysisViewInputSchema, } from "../domain/analysisView/analysisView.js";
2
+ import { toolContractMetadata } from "./toolEffects.js";
3
+ import { evidenceResultOf } from "./toolOutputSchemaPrimitives.js";
4
+ const RETAINED_EXAMPLE_ID = `ev_${"a".repeat(64)}`;
5
+ /** Selected views of already completed layout and JavaScript analysis Evidence. */
6
+ export const ANALYSIS_VIEW_TOOL_CONTRACTS = [
7
+ {
8
+ name: "inspect_analysis_view",
9
+ ...toolContractMetadata("inspect_analysis_view"),
10
+ kind: "application",
11
+ description: "Inspect a selected view of completed binary-layout or JavaScript application Evidence without repeating analysis. Use an exact same-session retained evidence_id or portable inline Evidence. Select a summary, layout mitigations/linkage facet, one section/symbol/module, or a stable page with a positive limit. Module pages contain JavaScript assets, bundled modules and source modules; use node_id when paths are ambiguous or unavailable. Returns selected facts inline with artifact identity, parent Evidence ID, a distinct view digest, coverage, limitations and unknowns. Actual serialized size determines MCP transport admission; choose a smaller page or export the retained Evidence when needed.",
12
+ inputSchema: inspectAnalysisViewInputSchema,
13
+ outputSchema: evidenceResultOf(analysisViewResultSchema),
14
+ examples: [
15
+ {
16
+ title: "Summarize retained JavaScript application Evidence",
17
+ input: {
18
+ source: {
19
+ kind: "retained-evidence",
20
+ evidence_id: RETAINED_EXAMPLE_ID,
21
+ },
22
+ view: { kind: "summary" },
23
+ },
24
+ },
25
+ {
26
+ title: "Read one ELF section from retained layout Evidence",
27
+ input: {
28
+ source: {
29
+ kind: "retained-evidence",
30
+ evidence_id: RETAINED_EXAMPLE_ID,
31
+ },
32
+ view: {
33
+ kind: "item",
34
+ collection: "sections",
35
+ selector: { name: ".text" },
36
+ },
37
+ },
38
+ },
39
+ {
40
+ title: "Page module identities from retained application Evidence",
41
+ input: {
42
+ source: {
43
+ kind: "retained-evidence",
44
+ evidence_id: RETAINED_EXAMPLE_ID,
45
+ },
46
+ view: {
47
+ kind: "page",
48
+ collection: "modules",
49
+ offset: 0,
50
+ limit: 32,
51
+ },
52
+ },
53
+ },
54
+ ],
55
+ },
56
+ ];
@@ -10,8 +10,9 @@ import { reconstructionObligationLedgerInputSchema, reconstructionObligationLedg
10
10
  import { androidApplicationProjectionInputSchema, androidApplicationProjectionResultSchema, } from "../domain/android/androidApplication.js";
11
11
  import { appleApplicationProjectionInputSchema, appleApplicationProjectionResultSchema, } from "../domain/apple/appleApplication.js";
12
12
  import { toolContractMetadata } from "./toolEffects.js";
13
- import { evidenceResultOf } from "./toolOutputSchemas.js";
14
- import { JAVASCRIPT_APPLICATION_VERSION_COMPARISON_EXAMPLE, JAVASCRIPT_EXPORT_SHAPE_COMPARISON_EXAMPLE, JAVASCRIPT_FEATURE_TRACE_EXAMPLE, SOURCE_TO_BUNDLE_COMPARISON_EXAMPLE, } from "./javascript/javascriptApplicationWorkflowExamples.js";
13
+ import { evidenceResultOf } from "./toolOutputSchemaPrimitives.js";
14
+ import { JAVASCRIPT_APPLICATION_VERSION_COMPARISON_EXAMPLE, JAVASCRIPT_FEATURE_TRACE_EXAMPLE, SOURCE_TO_BUNDLE_COMPARISON_EXAMPLE, } from "./javascript/javascriptApplicationWorkflowExamples.js";
15
+ import { JAVASCRIPT_EXPORT_SHAPE_COMPARISON_EXAMPLE } from "./javascript/javascriptExportShapeComparisonExample.js";
15
16
  import { ANDROID_APPLICATION_GRAPH_EXAMPLE, APPLE_APPLICATION_GRAPH_EXAMPLE, MACOS_APPLICATION_GRAPH_EXAMPLE, } from "./mobileApplicationGraphExamples.js";
16
17
  const traceOutputSchema = evidenceResultOf(applicationFeatureTraceResultSchema);
17
18
  const semanticTraceOutputSchema = evidenceResultOf(javaScriptSemanticTraceResultSchema);
@@ -106,13 +107,13 @@ export const APPLICATION_TOOL_CONTRACTS = [
106
107
  {
107
108
  name: "compare_javascript_export_shapes",
108
109
  ...toolContractMetadata("compare_javascript_export_shapes"),
109
- description: "Compare static return shapes for one exact module/export selector on each authenticated JavaScript Application Graph supplied as inline Evidence or exact same-session retained references. Variants pair only by reciprocal unique literal discriminants; dynamic values, incomplete properties, and ambiguous variants remain unknown. Reports JSON Pointer changes without executing JavaScript; runtime behavior requires a separate agent-run probe.",
110
+ description: "Compare static return shapes for one exact module/export selector on each authenticated JavaScript Application Graph supplied as inline Evidence or exact same-session retained references. Variants pair only by reciprocal unique literal discriminants. Each retained variant lists observed return-property names even when values stay unknown. Presence (present, absent, or unknown-coverage) is separate from value resolution: a name present on only one paired shape is added or removed when parent-property coverage is complete on both sides, including when the static value is unresolved. Dynamic values, incomplete parent coverage, and unpaired variants remain unknown. Reports JSON Pointer changes without executing JavaScript; runtime behavior requires a separate agent-run probe.",
110
111
  kind: "application",
111
112
  inputSchema: compareJavaScriptExportShapesRequestSchema,
112
113
  outputSchema: exportShapeComparisonOutputSchema,
113
114
  examples: [
114
115
  {
115
- title: "Compare one exact parser export without execution",
116
+ title: "Report observed return-property presence when static values stay unknown",
116
117
  input: JAVASCRIPT_EXPORT_SHAPE_COMPARISON_EXAMPLE,
117
118
  },
118
119
  {
@@ -8,13 +8,11 @@ const inventory = (digit) => {
8
8
  const nodes = [
9
9
  {
10
10
  artifact_id: artifactId,
11
- kind: "resource",
12
11
  format: "file",
13
12
  sha256: sha,
14
13
  size: 1,
15
14
  media_type: null,
16
15
  architecture: null,
17
- executable: false,
18
16
  content_state: "materialized",
19
17
  limitations: [],
20
18
  },
@@ -26,6 +24,8 @@ const inventory = (digit) => {
26
24
  parent_occurrence_id: null,
27
25
  logical_path: ".",
28
26
  entry_kind: "file",
27
+ artifact_kind: "resource",
28
+ artifact_format: "file",
29
29
  declared_size: 1,
30
30
  compressed_size: null,
31
31
  executable: false,
@@ -1,5 +1,5 @@
1
1
  import { z } from "zod";
2
- import { artifactOutputSchemas } from "./toolOutputSchemas.js";
2
+ import { artifactOutputSchemas } from "./toolOutputSchemaGroups.js";
3
3
  import { jsonValueSchema } from "../domain/jsonValue.js";
4
4
  import { toolContractMetadata } from "./toolEffects.js";
5
5
  import { requireOutputSchema } from "./toolOutputSchemaPrimitives.js";
@@ -1,5 +1,5 @@
1
1
  import { toolContractMetadata } from "./toolEffects.js";
2
- import { evidenceResultOf } from "./toolOutputSchemas.js";
2
+ import { evidenceResultOf } from "./toolOutputSchemaPrimitives.js";
3
3
  import { browserScenarioInputSchema } from "../domain/browserScenario.js";
4
4
  import { browserScenarioCaptureSchema } from "../domain/browserScenarioCapture.js";
5
5
  const example = {
@@ -1,21 +1,20 @@
1
- import { browserTargetListSchema, inspectWebPageInputSchema, listBrowserTargetsInputSchema, webPageInspectionSchema, } from "../domain/browserObservation.js";
1
+ import { inspectWebPageInputSchema, listBrowserTargetsInputSchema, } from "../domain/browserObservation.js";
2
+ import { browserTargetListSchema, webPageInspectionSchema, } from "../domain/browserObservationSchemas.js";
2
3
  import { analyzeWebBundleInputSchema, webBundleAnalysisSchema, } from "../domain/webBundleAnalysis.js";
3
4
  import { observeWebSessionInputSchema, webObservationSessionSchema, } from "../domain/browserSession.js";
4
5
  import { discoverWebMcpToolsInputSchema, webMcpDiscoverySchema, } from "../domain/webMcpDiscovery.js";
5
- import { browserCaptureComparisonSchema } from "../domain/browserCaptureComparison.js";
6
+ import { browserCaptureComparisonInputSchema, browserCaptureComparisonSchema, } from "../domain/browserCaptureComparison.js";
6
7
  import { captureWebScreenshotInputSchema, compareWebScreenshotsInputSchema, webScreenshotDiffSchema, webScreenshotSchema, } from "../domain/webScreenshot.js";
7
8
  import { toolContractMetadata } from "./toolEffects.js";
8
- import { evidenceResultOf } from "./toolOutputSchemas.js";
9
- import { browserCaptureToolInputSchema } from "./browserCaptureToolInputSchema.js";
10
- const evidenceResult = evidenceResultOf;
11
- const listOutputSchema = evidenceResult(browserTargetListSchema);
12
- const inspectionOutputSchema = evidenceResult(webPageInspectionSchema);
13
- const bundleOutputSchema = evidenceResult(webBundleAnalysisSchema);
14
- const observationSessionOutputSchema = evidenceResult(webObservationSessionSchema);
15
- const webMcpOutputSchema = evidenceResult(webMcpDiscoverySchema);
16
- const captureDiffOutputSchema = evidenceResult(browserCaptureComparisonSchema);
17
- const screenshotOutputSchema = evidenceResult(webScreenshotSchema);
18
- const screenshotDiffOutputSchema = evidenceResult(webScreenshotDiffSchema);
9
+ import { evidenceResultOf } from "./toolOutputSchemaPrimitives.js";
10
+ const listOutputSchema = evidenceResultOf(browserTargetListSchema);
11
+ const inspectionOutputSchema = evidenceResultOf(webPageInspectionSchema);
12
+ const bundleOutputSchema = evidenceResultOf(webBundleAnalysisSchema);
13
+ const observationSessionOutputSchema = evidenceResultOf(webObservationSessionSchema);
14
+ const webMcpOutputSchema = evidenceResultOf(webMcpDiscoverySchema);
15
+ const captureDiffOutputSchema = evidenceResultOf(browserCaptureComparisonSchema);
16
+ const screenshotOutputSchema = evidenceResultOf(webScreenshotSchema);
17
+ const screenshotDiffOutputSchema = evidenceResultOf(webScreenshotDiffSchema);
19
18
  const endpoint = "http://127.0.0.1:9222";
20
19
  const origin = "https://app.example.test";
21
20
  const scenarioUrl = {
@@ -50,6 +49,11 @@ const exampleScenarioCapture = () => ({
50
49
  start_origin: origin,
51
50
  action_count: 1,
52
51
  secret_references: [],
52
+ network_content: {
53
+ request_body: false,
54
+ response_body: false,
55
+ header_values: false,
56
+ },
53
57
  },
54
58
  duration_ms: 10,
55
59
  steps: [
@@ -182,9 +186,9 @@ export const BROWSER_TOOL_CONTRACTS = [
182
186
  {
183
187
  name: "compare_web_captures",
184
188
  ...toolContractMetadata("compare_web_captures"),
185
- description: "Compare passive web captures by providing before and after, each with the complete inspect_web_page result in inspection and an optional complete discover_webmcp_tools result in webmcp; or compare recorded scenarios by passing complete capture_browser_scenario results in before_scenario and after_scenario with an optional normalization policy. Use exactly one input group. Scenario comparison aligns exact step IDs, records deterministic literal normalization, and returns every artifact-level difference plus alignment failures inline. Missing or truncated evidence never proves equality.",
189
+ description: "Compare passive web captures by providing before and after, each with the complete inspect_web_page normalized_result in inspection and an optional complete discover_webmcp_tools normalized_result in webmcp; or compare recorded scenarios by passing complete capture_browser_scenario normalized_result objects in before_scenario and after_scenario with an optional normalization policy. Use exactly one input group. Scenario comparison aligns exact step IDs, records deterministic literal normalization, and returns every artifact-level difference plus alignment failures inline. Missing or truncated evidence never proves equality.",
186
190
  kind: "browser-provider",
187
- inputSchema: browserCaptureToolInputSchema,
191
+ inputSchema: browserCaptureComparisonInputSchema,
188
192
  outputSchema: captureDiffOutputSchema,
189
193
  examples: [
190
194
  {
@@ -27,11 +27,11 @@ export const enhancedInputSchemas = {
27
27
  category: z
28
28
  .enum(["classes", "structs", "enums", "protocols", "extensions", "other"])
29
29
  .optional()
30
- .describe("Limit results to one Swift symbol category."),
30
+ .describe("Limit categorized results to one Swift category; unresolved category observations remain in unclassified."),
31
31
  pattern: z
32
32
  .string()
33
33
  .optional()
34
- .describe("Case-sensitive literal filter applied to mangled symbol names."),
34
+ .describe("Case-sensitive literal filter applied to provider procedure names and their supporting Swift manglings."),
35
35
  }),
36
36
  find_xrefs_to_name: z.strictObject({ name: z.string() }),
37
37
  binary_overview: z.strictObject({}),
@@ -1,6 +1,7 @@
1
1
  import { z } from "zod";
2
2
  import { enhancedInputSchemas } from "./enhancedInputs.js";
3
- import { enhancedOutputSchemas, requireOutputSchema, } from "./toolOutputSchemas.js";
3
+ import { enhancedOutputSchemas } from "./toolOutputSchemaGroups.js";
4
+ import { requireOutputSchema } from "./toolOutputSchemaPrimitives.js";
4
5
  import { examplesFor } from "./toolContractHelpers.js";
5
6
  import { toolContractMetadata } from "./toolEffects.js";
6
7
  import { FUNCTION_WORKFLOW_TOOL_CONTRACTS } from "./functionWorkflowToolContracts.js";
@@ -18,9 +19,9 @@ export const ENHANCED_TOOL_CONTRACTS = [
18
19
  enhanced("inspect_native_dispatch_metadata", "Inspect the bound provider's name inventory for Objective-C class/method symbols and Swift mangled symbols, returning at most max_records decoded names. Includes target SHA-256 when available, provider identity/version, analysis-profile digest, facet coverage, and per-record Evidence. This is symbol-level evidence, not runtime metadata: ivar layouts, protocol conformances, witness/class tables, and relative pointers are explicitly marked unsupported unless a provider supplies those decoders. The provider controls how its name inventory is acquired.", enhancedInputSchemas.inspect_native_dispatch_metadata),
19
20
  enhanced("get_objc_classes", "Discover and deduplicate Objective-C class labels, optionally filtering by literal substring.", enhancedInputSchemas.get_objc_classes),
20
21
  enhanced("get_objc_protocols", "Discover and deduplicate Objective-C and Swift protocol labels.", enhancedInputSchemas.get_objc_protocols),
21
- enhanced("batch_decompile", "Decompile each explicit procedure symbol or address concurrently. Returns ordered per-item success or error results and aggregate counts.", enhancedInputSchemas.batch_decompile),
22
+ enhanced("batch_decompile", "Decompile each explicit procedure symbol or address concurrently. Preserves each input selector in address and reports the observed canonical entry and entry label in procedure; identity or label failures remain explicit without discarding usable pseudocode. Returns ordered per-item success or error results and aggregate counts.", enhancedInputSchemas.batch_decompile),
22
23
  enhanced("get_call_graph", "Resolve one symbol or address to its canonical procedure entry, then traverse the bound provider's caller or callee relationships until the reachable graph is exhausted. Every node uses a canonical address and has an ok/error status; failures use safe typed projections. Unresolved indirect calls may be missing and results are not a whole-program CFG.", enhancedInputSchemas.get_call_graph),
23
- enhanced("analyze_swift_types", 'Categorize analyzed procedure names into Swift classes, structs, enums, protocols, extensions, and other symbols. Returns deduplicated names grouped with counts. Optionally select one category and/or apply a case-sensitive literal name filter; for example, use {category: "classes", pattern: "Account"} to find matching class symbols.', enhancedInputSchemas.analyze_swift_types),
24
+ enhanced("analyze_swift_types", 'Categorize analyzed Swift procedure names using their manglings or same-address Swift symbol aliases. Decodes legacy and literal modern nominal contexts into classes, structs, enums, protocols, and extensions. Preserves provider names and supporting mangled_names; unresolved categories appear in other and in unclassified, which remains inline even under category filters. Returns deduplicated procedure-name counts, not unique source types, plus identification limitations. Optionally select one category and/or apply a case-sensitive literal filter to provider names or supporting manglings; for example, use {category: "structs", pattern: "Pair"}.', enhancedInputSchemas.analyze_swift_types),
24
25
  enhanced("find_xrefs_to_name", "Resolve an exact name against the bound provider's name inventory and return a resolved or unresolved result. Unresolved names use the stable name_not_found reason; this xref workflow returns address-only projections.", enhancedInputSchemas.find_xrefs_to_name),
25
26
  enhanced("binary_overview", "Return native-binary metadata, every segment with its length, and exhaustive procedure/string counts. Use search_procedures, list_procedures, or analyze_function directly when you already know which procedure to inspect.", enhancedInputSchemas.binary_overview),
26
27
  ...FUNCTION_WORKFLOW_TOOL_CONTRACTS,
@@ -1,6 +1,6 @@
1
1
  import { inspectEvmInterfaceInputSchema, evmInterfaceSchema, } from "../../domain/evm/evmInterface.js";
2
2
  import { toolContractMetadata } from "../toolEffects.js";
3
- import { evidenceResultOf } from "../toolOutputSchemas.js";
3
+ import { evidenceResultOf } from "../toolOutputSchemaPrimitives.js";
4
4
  /** Target-free EVM capabilities are independent of archive/Apple artifact providers. */
5
5
  export const EVM_TOOL_CONTRACTS = [
6
6
  {
@@ -2,7 +2,7 @@ import { jsonObjectSchema } from "../domain/jsonValue.js";
2
2
  import { enhancedInputSchemas } from "./enhancedInputs.js";
3
3
  import { TOOL_EXAMPLE_OVERRIDES } from "./toolContractExamples.js";
4
4
  import { toolContractMetadata } from "./toolEffects.js";
5
- import { enhancedOutputSchemas } from "./toolOutputSchemas.js";
5
+ import { enhancedOutputSchemas } from "./toolOutputSchemaGroups.js";
6
6
  import { requireOutputSchema } from "./toolOutputSchemaPrimitives.js";
7
7
  const functionWorkflow = (name, description) => {
8
8
  const inputSchema = enhancedInputSchemas[name];
@@ -0,0 +1,90 @@
1
+ const schemaMaps = new Set([
2
+ "$defs",
3
+ "definitions",
4
+ "properties",
5
+ "patternProperties",
6
+ "dependentSchemas",
7
+ "dependencies",
8
+ ]);
9
+ const schemaArrays = new Set(["allOf", "anyOf", "oneOf", "prefixItems"]);
10
+ const schemaChildren = new Set([
11
+ "items",
12
+ "additionalItems",
13
+ "contains",
14
+ "additionalProperties",
15
+ "unevaluatedProperties",
16
+ "unevaluatedItems",
17
+ "propertyNames",
18
+ "not",
19
+ "if",
20
+ "then",
21
+ "else",
22
+ ]);
23
+ const isObject = (value) => typeof value === "object" && value !== null && !Array.isArray(value);
24
+ const resolveReference = (root, reference) => {
25
+ if (!reference.startsWith("#/"))
26
+ return undefined;
27
+ let value = root;
28
+ for (const token of reference.slice(2).split("/")) {
29
+ const key = token.replaceAll("~1", "/").replaceAll("~0", "~");
30
+ if (!isObject(value) || !Object.hasOwn(value, key))
31
+ return undefined;
32
+ value = value[key];
33
+ }
34
+ return value;
35
+ };
36
+ const referencedDescription = (root, schema) => {
37
+ let value = schema;
38
+ const active = new Set();
39
+ while (isObject(value)) {
40
+ if (typeof value.description === "string")
41
+ return value.description;
42
+ if (typeof value.$ref !== "string" || active.has(value.$ref))
43
+ return undefined;
44
+ active.add(value.$ref);
45
+ value = resolveReference(root, value.$ref);
46
+ }
47
+ return undefined;
48
+ };
49
+ const describeSchema = (schema, root, describeProperty) => {
50
+ if (!isObject(schema))
51
+ return schema;
52
+ return Object.fromEntries(Object.entries(schema).map(([key, value]) => {
53
+ if (schemaMaps.has(key) && isObject(value))
54
+ return [
55
+ key,
56
+ Object.fromEntries(Object.entries(value).map(([name, child]) => {
57
+ const described = describeSchema(child, root, describeProperty);
58
+ return [
59
+ name,
60
+ key === "properties" && isObject(described)
61
+ ? {
62
+ ...described,
63
+ description: referencedDescription(root, described) ??
64
+ describeProperty(name),
65
+ }
66
+ : described,
67
+ ];
68
+ })),
69
+ ];
70
+ if (schemaArrays.has(key) && Array.isArray(value))
71
+ return [
72
+ key,
73
+ value.map((child) => describeSchema(child, root, describeProperty)),
74
+ ];
75
+ if (schemaChildren.has(key))
76
+ return [
77
+ key,
78
+ Array.isArray(value)
79
+ ? value.map((child) => describeSchema(child, root, describeProperty))
80
+ : describeSchema(value, root, describeProperty),
81
+ ];
82
+ // Annotation values and literal const/enum data are not schemas.
83
+ return [key, value];
84
+ }));
85
+ };
86
+ /** Describe canonical input fields without changing structural constraints. */
87
+ export const presentInputJsonSchema = (root, describeProperty) => {
88
+ const described = describeSchema(root, root, describeProperty);
89
+ return isObject(described) ? described : root;
90
+ };
@@ -1,9 +1,10 @@
1
- import { compareFunctions } from "../domain/functionComparison.js";
2
1
  import { createEvidence } from "../domain/evidence.js";
3
2
  import { jsonValueSchema } from "../domain/jsonValue.js";
4
- import { compareProcessCaptures, parseProcessCapture, } from "../domain/process/processCapture.js";
3
+ import { compareProcessCaptures } from "../domain/process/processComparison.js";
4
+ import { parseProcessCapture } from "../domain/process/processCaptureParsing.js";
5
5
  import { FUNCTION_COMPARISON_EXAMPLE } from "./functionComparisonExample.js";
6
- import { EMPTY_PROCESS_CAPTURE_EXAMPLE } from "./process/processCaptureExample.js";
6
+ import { EMPTY_PROCESS_CAPTURE_EXAMPLE } from "../domain/process/processCaptureExample.js";
7
+ import { compareFunctions } from "../domain/functionComparison.js";
7
8
  const comparison = compareFunctions(FUNCTION_COMPARISON_EXAMPLE.left, FUNCTION_COMPARISON_EXAMPLE.right);
8
9
  export const FUNCTION_COMPARISON_EVIDENCE = createEvidence(undefined, {
9
10
  id: "rea-function-comparison",
@@ -1,5 +1,5 @@
1
1
  import { toolContractMetadata } from "../toolEffects.js";
2
- import { evidenceResultOf } from "../toolOutputSchemas.js";
2
+ import { evidenceResultOf } from "../toolOutputSchemaPrimitives.js";
3
3
  import { electronPageInspectionSchema, electronTargetListSchema, inspectElectronPageInputSchema, listElectronTargetsInputSchema, } from "../../domain/javascript/electronObservation.js";
4
4
  import { electronActiveObservationInputSchema, electronActiveObservationResultSchema, } from "../../domain/javascript/electronActiveObservation.js";
5
5
  import { analyzeJavaScriptApplicationInputSchema, javascriptApplicationAnalysisResultSchema, } from "../../domain/javascript/javascriptApplicationAnalysis.js";
@@ -82,23 +82,3 @@ export const SOURCE_TO_BUNDLE_COMPARISON_EXAMPLE = {
82
82
  }),
83
83
  application: JAVASCRIPT_APPLICATION_EVIDENCE_EXAMPLE,
84
84
  };
85
- /** Exact static return-shape comparison with both Evidence records inline. */
86
- export const JAVASCRIPT_EXPORT_SHAPE_COMPARISON_EXAMPLE = {
87
- left: JAVASCRIPT_APPLICATION_EVIDENCE_EXAMPLE,
88
- right: reconciliationEvidence,
89
- left_module_path: "parser.mjs",
90
- left_export_name: "default",
91
- right_module_path: "parser.mjs",
92
- right_export_name: "default",
93
- };
94
- /** Full-Evidence compatibility fixture used by pure domain and adapter tests. */
95
- export const JAVASCRIPT_FEATURE_TRACE_FULL_EVIDENCE_EXAMPLE = {
96
- application: JAVASCRIPT_APPLICATION_EVIDENCE_EXAMPLE,
97
- seed: TRACE_SEED,
98
- direction: "both",
99
- };
100
- /** Full-Evidence compatibility comparison fixture. */
101
- export const JAVASCRIPT_VERSION_COMPARISON_FULL_EVIDENCE_EXAMPLE = {
102
- left: JAVASCRIPT_APPLICATION_EVIDENCE_EXAMPLE,
103
- right: reconciliationEvidence,
104
- };