rea-agents 3.1.0 → 3.2.1

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 (590) hide show
  1. package/README.md +72 -95
  2. package/bridge/ghidra/ReaGhidraBridge.java +609 -841
  3. package/bridge/hopper_bridge.py +99 -344
  4. package/dist/application/AbortablePromise.js +6 -3
  5. package/dist/application/AnalysisSnapshotCache.js +0 -1
  6. package/dist/application/AnalysisSnapshotFiles.js +7 -7
  7. package/dist/application/AndroidApplicationService.js +1 -1
  8. package/dist/application/AppleApplicationService.js +1 -1
  9. package/dist/application/ArtifactExtraction.js +35 -54
  10. package/dist/application/ArtifactExtractionDestination.js +17 -0
  11. package/dist/application/ArtifactGraphConstruction.js +2 -17
  12. package/dist/application/ArtifactInventory/classify.js +2 -6
  13. package/dist/application/ArtifactInventory/hash.js +2 -20
  14. package/dist/application/ArtifactInventory/scanCanonical.js +8 -12
  15. package/dist/application/ArtifactInventory/scanReader.js +69 -51
  16. package/dist/application/ArtifactInventory.js +6 -14
  17. package/dist/application/AuthorizedArtifactInventory.js +3 -13
  18. package/dist/application/BinarySession.js +41 -13
  19. package/dist/application/BinarySessionComposition.js +0 -11
  20. package/dist/application/BinarySessionOpen.js +2 -1
  21. package/dist/application/BinarySessionRecords.js +5 -93
  22. package/dist/application/BinarySessionStatus.js +5 -16
  23. package/dist/application/BinaryTargetResolver.js +216 -0
  24. package/dist/application/BrowserEvidence.js +42 -58
  25. package/dist/application/BrowserObservationService.js +3 -6
  26. package/dist/application/BrowserScenarioCaptureService.js +3 -6
  27. package/dist/application/BrowserScenarioEvidence.js +3 -3
  28. package/dist/application/CallPathTracing.js +2 -36
  29. package/dist/application/CapabilityInventory.js +10 -15
  30. package/dist/application/ClientConfigurationDocument.js +27 -0
  31. package/dist/application/ClientRegistrationStatus.js +16 -13
  32. package/dist/application/CommandShimReplay.js +14 -1
  33. package/dist/application/DirectAnalysis.js +22 -46
  34. package/dist/application/DirectAnalysisStatus.js +5 -61
  35. package/dist/application/Doctor.js +11 -32
  36. package/dist/application/DoctorDiagnostics.js +1 -2
  37. package/dist/application/DoctorScope.js +1 -1
  38. package/dist/application/ElectronActiveEvidence.js +3 -8
  39. package/dist/application/ElectronActiveObservationService.js +3 -6
  40. package/dist/application/ElectronBoundaryAnalysis.js +7 -8
  41. package/dist/application/ElectronBoundaryGraphContext.js +1 -1
  42. package/dist/application/ElectronBoundaryGraphIpc.js +3 -3
  43. package/dist/application/ElectronBoundaryGraphNative.js +1 -2
  44. package/dist/application/ElectronBoundaryGraphWindows.js +6 -8
  45. package/dist/application/ElectronEvidence.js +4 -7
  46. package/dist/application/ElectronObservationService.js +5 -9
  47. package/dist/application/EnhancedLiteralTracing.js +42 -65
  48. package/dist/application/EnhancedTools.js +76 -44
  49. package/dist/application/EvidenceBundleCommands.js +11 -11
  50. package/dist/application/EvidenceBundleFiles.js +9 -15
  51. package/dist/application/EvidenceLedger.js +6 -41
  52. package/dist/application/FilesystemSnapshot.js +2 -3
  53. package/dist/application/InterfaceBuilderAnalysis.js +266 -0
  54. package/dist/application/InventoryProjectionEvidence.js +4 -2
  55. package/dist/application/InvestigationProviders.js +1 -1
  56. package/dist/application/JavaScriptApplicationEvidence.js +2 -5
  57. package/dist/application/JavaScriptApplicationEvidenceGraph.js +6 -10
  58. package/dist/application/JavaScriptApplicationService.js +6 -29
  59. package/dist/application/JavaScriptApplicationWorkflowEvidence.js +5 -5
  60. package/dist/application/JavaScriptApplicationWorkflowService.js +0 -8
  61. package/dist/application/JavaScriptArtifactAnalysis.js +38 -127
  62. package/dist/application/JavaScriptArtifactFiles.js +67 -107
  63. package/dist/application/JavaScriptArtifactGraphAccumulator.js +0 -7
  64. package/dist/application/JavaScriptArtifactGraphBuilder.js +7 -58
  65. package/dist/application/JavaScriptArtifactGraphBundlers.js +1 -6
  66. package/dist/application/JavaScriptArtifactGraphContext.js +12 -39
  67. package/dist/application/JavaScriptArtifactGraphDocuments.js +4 -11
  68. package/dist/application/JavaScriptArtifactGraphEvidence.js +0 -14
  69. package/dist/application/JavaScriptArtifactGraphFindings.js +3 -3
  70. package/dist/application/JavaScriptArtifactGraphStructure.js +16 -17
  71. package/dist/application/JavaScriptArtifactPathResolution.js +61 -49
  72. package/dist/application/JavaScriptArtifactReconstruction.js +5 -10
  73. package/dist/application/JavaScriptArtifactReconstructionInput.js +2 -14
  74. package/dist/application/JavaScriptJsonModules.js +2 -2
  75. package/dist/application/JavaScriptModuleRelationships.js +22 -27
  76. package/dist/application/JavaScriptReplayPlanning.js +9 -3
  77. package/dist/application/JavaScriptReplayService.js +6 -32
  78. package/dist/application/JavaScriptReturnShapeProjection.js +12 -42
  79. package/dist/application/JavaScriptRuntimeObservationEvidence.js +7 -8
  80. package/dist/application/JavaScriptRuntimeObservationService.js +4 -8
  81. package/dist/application/JavaScriptRuntimeReconciliationEvidence.js +2 -3
  82. package/dist/application/JavaScriptSemanticGraphBuilder.js +11 -41
  83. package/dist/application/JavaScriptSemanticGraphConstruction.js +5 -29
  84. package/dist/application/JavaScriptSemanticGraphEvidence.js +1 -1
  85. package/dist/application/JavaScriptSemanticGraphFingerprintProjection.js +1 -1
  86. package/dist/application/JavaScriptSemanticGraphFlowProjection.js +0 -13
  87. package/dist/application/JavaScriptSemanticGraphProjection.js +1 -3
  88. package/dist/application/JavaScriptSemanticTraceService.js +1 -10
  89. package/dist/application/JsonFiles.js +79 -0
  90. package/dist/application/LinuxHopper.js +11 -9
  91. package/dist/application/LoopbackReplay.js +26 -23
  92. package/dist/application/LoopbackReplayRecorder.js +29 -1
  93. package/dist/application/ManagedApplicationGraphService.js +1 -2
  94. package/dist/application/ManagedMemberComparisonService.js +11 -41
  95. package/dist/application/ManagedNativeVerificationService.js +1 -2
  96. package/dist/application/ManagedReconstructionService.js +1 -1
  97. package/dist/application/ManagedRuntimeCorrelationService.js +5 -8
  98. package/dist/application/NativeApiInspection.js +2 -7
  99. package/dist/application/NativeUiActionTrace.js +394 -0
  100. package/dist/application/NodeRuntimeCharacterizationService.js +3 -7
  101. package/dist/application/PermissionAuthority.js +15 -7
  102. package/dist/application/PermissionFailure.js +5 -0
  103. package/dist/application/ProcessCaptureAuthority.js +5 -7
  104. package/dist/application/ProcessCaptureJournal.js +3 -2
  105. package/dist/application/ProcessCaptureLifecycle.js +5 -12
  106. package/dist/application/ProcessCheckpoints.js +29 -11
  107. package/dist/application/ProcessCli.js +6 -16
  108. package/dist/application/ProcessEvidence.js +5 -7
  109. package/dist/application/ProcessHarness.js +52 -17
  110. package/dist/application/ProcessReactiveCoordinator.js +2 -4
  111. package/dist/application/ProcessReactiveEffects.js +9 -3
  112. package/dist/application/ProcessReactiveHarness.js +13 -7
  113. package/dist/application/ProcessSampling.js +2 -4
  114. package/dist/application/ProcessTimer.js +39 -0
  115. package/dist/application/ProjectPermissionStore.js +39 -96
  116. package/dist/application/RealHopperAssertions.js +20 -66
  117. package/dist/application/ReconstructionCoverageService.js +12 -58
  118. package/dist/application/ReconstructionObligationAuthority.js +2 -2
  119. package/dist/application/ReconstructionObligationCandidates.js +4 -4
  120. package/dist/application/ReconstructionObligationLedgerEvaluation.js +8 -15
  121. package/dist/application/ReconstructionObligationLedgerProjection.js +3 -7
  122. package/dist/application/ReconstructionObligationLedgerService.js +19 -38
  123. package/dist/application/ReferenceSourceImport.js +19 -45
  124. package/dist/application/ReferenceSourceImportEntries.js +2 -4
  125. package/dist/application/ReferenceSourceImportPolicy.js +5 -32
  126. package/dist/application/ReferenceSourceImportTypes.js +0 -16
  127. package/dist/application/RuntimeExecutableDiagnostics.js +55 -29
  128. package/dist/application/SessionProviderRouter.js +2 -2
  129. package/dist/application/Setup.js +1 -3
  130. package/dist/application/SetupClientConfiguration.js +22 -93
  131. package/dist/application/SetupRegistrationEnvironment.js +0 -7
  132. package/dist/application/StoreFileLock.js +119 -0
  133. package/dist/application/TerminalRenderer.js +2 -3
  134. package/dist/application/Uninstall.js +9 -14
  135. package/dist/application/UnknownEvidence.js +1 -1
  136. package/dist/artifacts/ArtifactPaths.js +2 -5
  137. package/dist/artifacts/ArtifactProvider.js +36 -58
  138. package/dist/artifacts/DirectoryArtifactReader.js +13 -8
  139. package/dist/artifacts/MachOSliceArtifactReader.js +1 -5
  140. package/dist/artifacts/NativeDmgArtifactReader.js +11 -11
  141. package/dist/artifacts/NibArchive.js +269 -0
  142. package/dist/artifacts/SafeOutputTree.js +15 -24
  143. package/dist/browser/BrowserProcessStartup.js +1 -2
  144. package/dist/browser/CdpAuthorizedMainFrame.js +16 -0
  145. package/dist/browser/CdpBrowserProvider.js +3 -13
  146. package/dist/browser/CdpCanonicalJsonDigest.js +9 -0
  147. package/dist/browser/CdpCaptureDocuments.js +28 -76
  148. package/dist/browser/CdpCaptureEventBodyShapes.js +13 -33
  149. package/dist/browser/CdpCaptureEventHandlers.js +22 -87
  150. package/dist/browser/CdpCaptureEvents.js +2 -8
  151. package/dist/browser/CdpCaptureStorage.js +9 -20
  152. package/dist/browser/CdpCaptureStorageFingerprints.js +85 -98
  153. package/dist/browser/CdpCaptureValues.js +21 -21
  154. package/dist/browser/CdpConnection.js +10 -25
  155. package/dist/browser/CdpElectronInspection.js +26 -50
  156. package/dist/browser/CdpElectronProvider.js +10 -35
  157. package/dist/browser/CdpElectronScriptEvents.js +8 -16
  158. package/dist/browser/CdpElectronScripts.js +6 -35
  159. package/dist/browser/CdpElectronWorkers.js +6 -10
  160. package/dist/browser/CdpEndpoint.js +25 -41
  161. package/dist/browser/CdpObservationSession.js +14 -26
  162. package/dist/browser/CdpPageCapture.js +34 -48
  163. package/dist/browser/CdpPageCaptureScripts.js +1 -19
  164. package/dist/browser/CdpPageCaptureWorkers.js +6 -10
  165. package/dist/browser/CdpSafeMetadata.js +19 -22
  166. package/dist/browser/CdpScreenshot.js +3 -5
  167. package/dist/browser/CdpTargetSession.js +1 -2
  168. package/dist/browser/CdpWebMcpDiscovery.js +13 -22
  169. package/dist/browser/ElectronFileScope.js +8 -19
  170. package/dist/browser/JavaScriptRuntimeScope.js +9 -14
  171. package/dist/browser/PlaywrightBrowserScenarioProvider.js +31 -64
  172. package/dist/browser/PlaywrightElectronActiveActions.js +54 -69
  173. package/dist/browser/PlaywrightElectronActiveProvider.js +14 -34
  174. package/dist/browser/PlaywrightExecutionBoundary.js +16 -5
  175. package/dist/browser/PlaywrightScenarioActions.js +3 -7
  176. package/dist/browser/PlaywrightScenarioArtifacts.js +23 -92
  177. package/dist/browser/PlaywrightScenarioBrowser.js +3 -5
  178. package/dist/browser/PlaywrightScenarioEvents.js +45 -94
  179. package/dist/browser/PlaywrightScenarioSession.js +14 -30
  180. package/dist/browser/PngVisualDiff.js +22 -14
  181. package/dist/browser/SensitiveTextCapture.js +0 -17
  182. package/dist/browser/V8InspectorCaptureProjection.js +7 -8
  183. package/dist/browser/V8InspectorEndpoint.js +12 -14
  184. package/dist/browser/V8InspectorProvider.js +20 -61
  185. package/dist/browser/WebSourceMapFetcher.js +56 -176
  186. package/dist/catalogIdentity.js +0 -54
  187. package/dist/cli/artifactCommands.js +49 -77
  188. package/dist/cli/coreAnalysisCommands.js +83 -133
  189. package/dist/cli/javascriptApplicationAnalysis.js +1 -9
  190. package/dist/cli/managedCommands.js +5 -270
  191. package/dist/cli/setupCommands.js +3 -12
  192. package/dist/cli/utilityCommands.js +7 -41
  193. package/dist/cli.js +0 -2
  194. package/dist/cliApplicationCommands.js +42 -112
  195. package/dist/cliBrowserAdvancedCommands.js +10 -106
  196. package/dist/cliBrowserCommands.js +15 -127
  197. package/dist/cliBrowserContext.js +30 -0
  198. package/dist/cliCommandNames.js +4 -5
  199. package/dist/cliElectronCommands.js +8 -72
  200. package/dist/cliEvidenceCommands.js +8 -77
  201. package/dist/cliJavaScriptRuntimeCommands.js +9 -91
  202. package/dist/cliJsonInput.js +4 -14
  203. package/dist/cliObservationOptions.js +11 -96
  204. package/dist/cliPolicyCommands.js +2 -17
  205. package/dist/cliProcessCommands.js +3 -3
  206. package/dist/cliSetup.js +0 -13
  207. package/dist/config/browserScenario.js +2 -2
  208. package/dist/config/environment.js +0 -9
  209. package/dist/config/parseConfig.js +1 -33
  210. package/dist/config/parsers.js +6 -27
  211. package/dist/config/passiveObservation.js +7 -77
  212. package/dist/config/permissions.js +0 -7
  213. package/dist/contracts/analysisSearchContract.js +2 -5
  214. package/dist/contracts/applicationToolContracts.js +56 -109
  215. package/dist/contracts/applicationWorkflowInputContracts.js +27 -102
  216. package/dist/contracts/artifactComparisonExample.js +58 -60
  217. package/dist/contracts/artifactToolContracts.js +20 -67
  218. package/dist/contracts/browserScenarioToolContracts.js +6 -51
  219. package/dist/contracts/browserToolContracts.js +8 -73
  220. package/dist/contracts/electronToolContracts.js +8 -108
  221. package/dist/contracts/enhancedInputs.js +23 -54
  222. package/dist/contracts/errorSchemas.js +0 -1
  223. package/dist/contracts/functionComparisonExample.js +10 -24
  224. package/dist/contracts/functionInstructionContract.js +1 -3
  225. package/dist/contracts/functionWorkflowToolContracts.js +2 -2
  226. package/dist/contracts/hopperMemoryContracts.js +3 -3
  227. package/dist/contracts/investigationExamples.js +14 -11
  228. package/dist/contracts/javascriptApplicationWorkflowExamples.js +12 -19
  229. package/dist/contracts/javascriptRuntimeObservationToolContracts.js +2 -20
  230. package/dist/contracts/javascriptRuntimeReconciliationExample.js +45 -12
  231. package/dist/contracts/managedToolContracts.js +6 -95
  232. package/dist/contracts/managedWorkflowExamples.js +77 -128
  233. package/dist/contracts/managedWorkflowToolContracts.js +51 -77
  234. package/dist/contracts/nativeToolContracts.js +7 -11
  235. package/dist/contracts/processCaptureExample.js +2 -69
  236. package/dist/contracts/promptContracts.js +49 -67
  237. package/dist/contracts/providerSelection.js +0 -1
  238. package/dist/contracts/reconstructionReadinessExample.js +1 -6
  239. package/dist/contracts/sessionStatusContract.js +1 -17
  240. package/dist/contracts/sessionToolSchemas.js +6 -15
  241. package/dist/contracts/toolContractExamples.js +11 -11
  242. package/dist/contracts/toolContractHelpers.js +0 -4
  243. package/dist/contracts/toolContracts.js +60 -71
  244. package/dist/contracts/toolEffects.js +5 -13
  245. package/dist/contracts/toolOutputSchemaGroups.js +37 -91
  246. package/dist/contracts/toolOutputSchemaPrimitives.js +16 -56
  247. package/dist/contracts/toolSchemaMetadata.js +8 -19
  248. package/dist/contracts/unknownContractExamples.js +0 -2
  249. package/dist/domain/analysisErrorPresentation.js +46 -54
  250. package/dist/domain/analysisErrorProjection.js +28 -37
  251. package/dist/domain/analysisProfile.js +3 -31
  252. package/dist/domain/analysisSnapshot.js +3 -12
  253. package/dist/domain/androidApplication.js +15 -54
  254. package/dist/domain/appleApplication.js +24 -67
  255. package/dist/domain/artifactComparison.js +11 -29
  256. package/dist/domain/artifactGraph.js +14 -44
  257. package/dist/domain/artifactInspection.js +38 -69
  258. package/dist/domain/artifactInventoryEvidence.js +27 -21
  259. package/dist/domain/binaryTarget.js +2 -221
  260. package/dist/domain/browserCaptureComparison.js +47 -24
  261. package/dist/domain/browserObservation.js +28 -193
  262. package/dist/domain/browserObservationSchemas.js +5 -23
  263. package/dist/domain/browserScenario.js +11 -14
  264. package/dist/domain/browserScenarioCapture.js +11 -12
  265. package/dist/domain/browserScenarioCaptureValues.js +146 -84
  266. package/dist/domain/browserScenarioDiff.js +2 -59
  267. package/dist/domain/browserScenarioDiffEvidence.js +51 -0
  268. package/dist/domain/browserScenarioDiffValues.js +21 -38
  269. package/dist/domain/browserScenarioValues.js +80 -109
  270. package/dist/domain/browserSession.js +4 -7
  271. package/dist/domain/bundleComparison.js +6 -32
  272. package/dist/domain/bytecodeProvider.js +20 -19
  273. package/dist/domain/callPath.js +47 -167
  274. package/dist/domain/callPathSchemas.js +79 -0
  275. package/dist/domain/changedBehavior.js +34 -60
  276. package/dist/domain/completionLedgerGeneration.js +8 -14
  277. package/dist/domain/conformancePackage.js +126 -97
  278. package/dist/domain/conformanceReplay.js +36 -8
  279. package/dist/domain/conformanceTrustGate.js +23 -14
  280. package/dist/domain/customProtocolCapture.js +1 -1
  281. package/dist/domain/electronActiveObservation.js +70 -103
  282. package/dist/domain/electronObservation.js +14 -80
  283. package/dist/domain/electronStaticAnalysisBrowser.js +36 -46
  284. package/dist/domain/electronStaticAnalysisIpc.js +38 -14
  285. package/dist/domain/electronStaticAnalysisNative.js +1 -8
  286. package/dist/domain/electronStaticAnalysisValues.js +10 -17
  287. package/dist/domain/errors.js +33 -54
  288. package/dist/domain/eventProcessTree.js +20 -12
  289. package/dist/domain/evidence.js +2 -10
  290. package/dist/domain/evidenceBundle.js +3 -5
  291. package/dist/domain/evidenceCompletionLedger.js +6 -8
  292. package/dist/domain/functionComparison.js +4 -14
  293. package/dist/domain/functionComparisonNormalization.js +4 -11
  294. package/dist/domain/functionComparisonResults.js +25 -15
  295. package/dist/domain/functionComparisonSchemas.js +49 -33
  296. package/dist/domain/functionDossierEvidence.js +31 -156
  297. package/dist/domain/hopperStartupFailure.js +1 -1
  298. package/dist/domain/hopperValues.js +15 -136
  299. package/dist/domain/interfaceBuilderGraph.js +654 -0
  300. package/dist/domain/javascriptApplicationAnalysis.js +8 -112
  301. package/dist/domain/javascriptApplicationChangeGraph.js +22 -82
  302. package/dist/domain/javascriptApplicationEvidenceSchemas.js +59 -47
  303. package/dist/domain/javascriptApplicationGraph.js +3 -13
  304. package/dist/domain/javascriptApplicationGraphSchemas.js +12 -34
  305. package/dist/domain/javascriptApplicationVersionComparison.js +26 -30
  306. package/dist/domain/javascriptApplicationVersionComparisonSchemas.js +123 -68
  307. package/dist/domain/javascriptApplicationVersionItems.js +120 -53
  308. package/dist/domain/javascriptApplicationVersionKeys.js +24 -11
  309. package/dist/domain/javascriptAstFingerprint.js +25 -58
  310. package/dist/domain/javascriptAstValues.js +9 -0
  311. package/dist/domain/javascriptExportInstrumentation.js +2 -4
  312. package/dist/domain/javascriptExportShapeComparison.js +6 -7
  313. package/dist/domain/javascriptExportShapeComparisonSchemas.js +68 -75
  314. package/dist/domain/javascriptExportShapeSelection.js +17 -19
  315. package/dist/domain/javascriptFeatureSeed.js +20 -12
  316. package/dist/domain/javascriptFeatureTrace.js +13 -67
  317. package/dist/domain/javascriptFeatureTraceSchemas.js +24 -52
  318. package/dist/domain/javascriptFeatureTraversal.js +1 -44
  319. package/dist/domain/javascriptNativeHandoff.js +1 -1
  320. package/dist/domain/javascriptReplay.js +24 -41
  321. package/dist/domain/javascriptRuntimeLoadState.js +3 -8
  322. package/dist/domain/javascriptRuntimeObservation.js +42 -103
  323. package/dist/domain/javascriptRuntimeReconciliation.js +1 -3
  324. package/dist/domain/javascriptRuntimeReconciliationActive.js +8 -17
  325. package/dist/domain/javascriptRuntimeReconciliationGraph.js +10 -23
  326. package/dist/domain/javascriptRuntimeReconciliationMatching.js +18 -12
  327. package/dist/domain/javascriptRuntimeReconciliationParsing.js +16 -45
  328. package/dist/domain/javascriptRuntimeReconciliationResult.js +4 -5
  329. package/dist/domain/javascriptRuntimeReconciliationRuntime.js +8 -12
  330. package/dist/domain/javascriptRuntimeReconciliationSchemas.js +33 -48
  331. package/dist/domain/javascriptRuntimeStaticCandidates.js +3 -3
  332. package/dist/domain/javascriptSemanticAnalysis.js +12 -45
  333. package/dist/domain/javascriptSemanticAsyncEffects.js +1 -9
  334. package/dist/domain/javascriptSemanticCallResolution.js +6 -16
  335. package/dist/domain/javascriptSemanticCalls.js +5 -32
  336. package/dist/domain/javascriptSemanticChildProcesses.js +1 -11
  337. package/dist/domain/javascriptSemanticCoverage.js +11 -0
  338. package/dist/domain/javascriptSemanticDataEffectHelpers.js +1 -8
  339. package/dist/domain/javascriptSemanticDataEffects.js +1 -11
  340. package/dist/domain/javascriptSemanticFingerprints.js +3 -5
  341. package/dist/domain/javascriptSemanticGraphSchemas.js +25 -51
  342. package/dist/domain/javascriptSemanticGraphSerialization.js +2 -13
  343. package/dist/domain/javascriptSemanticIr.js +1 -29
  344. package/dist/domain/javascriptSemanticObjects.js +1 -5
  345. package/dist/domain/javascriptSemanticPrimitives.js +2 -9
  346. package/dist/domain/javascriptSemanticProjection.js +0 -18
  347. package/dist/domain/javascriptSemanticPromises.js +9 -16
  348. package/dist/domain/javascriptSemanticProvenance.js +16 -19
  349. package/dist/domain/javascriptSemanticQuery.js +17 -139
  350. package/dist/domain/javascriptSemanticQueryAssessment.js +9 -37
  351. package/dist/domain/javascriptSemanticQueryIdentity.js +2 -23
  352. package/dist/domain/javascriptSemanticQuerySchemas.js +14 -107
  353. package/dist/domain/javascriptSemanticResources.js +1 -6
  354. package/dist/domain/javascriptSemanticReturns.js +10 -27
  355. package/dist/domain/javascriptSemanticValueTypes.js +1 -0
  356. package/dist/domain/javascriptSemanticValues.js +44 -62
  357. package/dist/domain/javascriptStaticAnalysis.js +21 -43
  358. package/dist/domain/javascriptStaticAnalysisBundler.js +34 -93
  359. package/dist/domain/javascriptStaticAnalysisCalls.js +17 -16
  360. package/dist/domain/javascriptStaticAnalysisFindings.js +3 -19
  361. package/dist/domain/javascriptStaticAnalysisHelpers.js +47 -88
  362. package/dist/domain/javascriptStaticAnalysisState.js +1 -5
  363. package/dist/domain/javascriptStaticAnalysisTypes.js +1 -0
  364. package/dist/domain/jsonShape.js +7 -33
  365. package/dist/domain/localPath.js +7 -0
  366. package/dist/domain/managedApplicationGraph.js +9 -41
  367. package/dist/domain/managedApplicationGraphCoverage.js +24 -156
  368. package/dist/domain/managedApplicationGraphNodes.js +10 -13
  369. package/dist/domain/managedArtifact.js +14 -27
  370. package/dist/domain/managedMemberComparison.js +90 -92
  371. package/dist/domain/managedMemberComparisonCoverage.js +11 -33
  372. package/dist/domain/managedMemberComparisonItems.js +221 -0
  373. package/dist/domain/managedMemberComparisonMatch.js +8 -208
  374. package/dist/domain/managedNativeVerification.js +3 -6
  375. package/dist/domain/managedNativeVerificationMatch.js +55 -59
  376. package/dist/domain/managedNativeVerificationSchemas.js +83 -47
  377. package/dist/domain/managedReconstruction.js +19 -23
  378. package/dist/domain/managedRuntimeCorrelation.js +6 -9
  379. package/dist/domain/nativeApiBoundary.js +2 -7
  380. package/dist/domain/nativeInspection.js +0 -2
  381. package/dist/domain/nativeInvestigationGraph.js +351 -0
  382. package/dist/domain/nativeValueFlow.js +61 -0
  383. package/dist/domain/nodeRuntimeCharacterization.js +1 -5
  384. package/dist/domain/objcSwiftMetadata.js +254 -0
  385. package/dist/domain/peInspection.js +1 -1
  386. package/dist/domain/permissionPolicy.js +13 -0
  387. package/dist/domain/processCapture.js +76 -113
  388. package/dist/domain/processCaptureExample.js +68 -0
  389. package/dist/domain/processCaptureParsing.js +21 -0
  390. package/dist/domain/processCaptureReactiveSchema.js +68 -0
  391. package/dist/domain/processCaptureValidation.js +1 -7
  392. package/dist/domain/processComparison.js +3 -12
  393. package/dist/domain/processReactiveMatching.js +29 -50
  394. package/dist/domain/processReactiveRuntime.js +4 -8
  395. package/dist/domain/processReactiveScenario.js +28 -94
  396. package/dist/domain/processReactiveScenarioPreflight.js +5 -30
  397. package/dist/domain/processReactiveTransition.js +33 -18
  398. package/dist/domain/processScenario.js +56 -90
  399. package/dist/domain/processTraceComparison.js +0 -8
  400. package/dist/domain/processTraceEvaluation.js +14 -4
  401. package/dist/domain/processTraceSpecification.js +11 -17
  402. package/dist/domain/protocolCapture.js +3 -3
  403. package/dist/domain/reconstructionCoverage.js +62 -129
  404. package/dist/domain/reconstructionCoverageEvaluation.js +17 -17
  405. package/dist/domain/reconstructionObligationLedgerSchemas.js +45 -72
  406. package/dist/domain/reconstructionReadiness.js +1 -2
  407. package/dist/domain/reconstructionReadinessSchemas.js +36 -38
  408. package/dist/domain/reconstructionUnknowns.js +3 -3
  409. package/dist/domain/reconstructionVerification.js +13 -47
  410. package/dist/domain/reconstructionVerificationSchemas.js +50 -38
  411. package/dist/domain/referenceSourceGraph.js +53 -61
  412. package/dist/domain/referenceSourceImportParsing.js +1 -5
  413. package/dist/domain/replayMachine.js +19 -31
  414. package/dist/domain/replayMachineRun.js +15 -63
  415. package/dist/domain/replayMachineRuntime.js +41 -41
  416. package/dist/domain/replayMachineValues.js +84 -0
  417. package/dist/domain/residualUnknown.js +25 -30
  418. package/dist/domain/runtimeCharacterization.js +15 -16
  419. package/dist/domain/runtimeIdentification.js +48 -47
  420. package/dist/domain/sourceToBundleComparison.js +9 -85
  421. package/dist/domain/sourceToBundleComparisonSchemas.js +17 -42
  422. package/dist/domain/sourceToBundleSignals.js +4 -15
  423. package/dist/domain/staticRuntimeCorrelation.js +37 -49
  424. package/dist/domain/symbolAnalysis.js +10 -19
  425. package/dist/domain/unicodeCodePointOrder.js +12 -0
  426. package/dist/domain/webBundleAnalysis.js +70 -99
  427. package/dist/domain/webBundleAnalyzer.js +2 -4
  428. package/dist/domain/webBundleAnalyzerAst.js +0 -13
  429. package/dist/domain/webBundleAnalyzerInspection.js +26 -52
  430. package/dist/domain/webBundleAnalyzerResult.js +7 -24
  431. package/dist/domain/webCaptureDiff.js +33 -73
  432. package/dist/domain/webCaptureDiffSchemas.js +86 -0
  433. package/dist/domain/webContentArtifact.js +1 -10
  434. package/dist/domain/webMcpDiscovery.js +3 -14
  435. package/dist/domain/webScreenshot.js +58 -34
  436. package/dist/domain/zipPackageFormat.js +7 -0
  437. package/dist/dotnet/ManagedArtifactInspector.js +17 -50
  438. package/dist/dotnet/ManagedMemberInspector.js +27 -58
  439. package/dist/dotnet/ManagedMemberInspectorCore.js +14 -51
  440. package/dist/dotnet/ManagedMemberInstructionDecoder.js +2 -2
  441. package/dist/dotnet/ManagedMemberRows.js +16 -16
  442. package/dist/dotnet/ManagedMetadataHeaps.js +26 -8
  443. package/dist/dotnet/ManagedMetadataInventory.js +21 -30
  444. package/dist/dotnet/ManagedMetadataInventoryRows.js +57 -63
  445. package/dist/dotnet/ManagedMetadataLayout.js +3 -5
  446. package/dist/dotnet/ManagedMethodBodyReader.js +5 -30
  447. package/dist/dotnet/ManagedNativeBoundaryHelpers.js +19 -49
  448. package/dist/dotnet/ManagedNativeBoundaryInspector.js +13 -41
  449. package/dist/dotnet/ManagedPeReader.js +2 -2
  450. package/dist/dotnet/ManagedStaticProvider.js +13 -71
  451. package/dist/generatedMcpToolCatalog.js +1 -1
  452. package/dist/generatedPackageMetadata.js +1 -1
  453. package/dist/ghidra/GhidraAnalysisProfile.js +3 -8
  454. package/dist/ghidra/GhidraClient.js +4 -12
  455. package/dist/ghidra/GhidraClientWire.js +9 -5
  456. package/dist/ghidra/GhidraDefaults.js +0 -18
  457. package/dist/ghidra/GhidraDiagnostics.js +0 -2
  458. package/dist/ghidra/GhidraDoctor.js +16 -12
  459. package/dist/ghidra/GhidraFunctionValues.js +65 -108
  460. package/dist/ghidra/GhidraInstallation.js +98 -42
  461. package/dist/ghidra/GhidraInventoryValues.js +16 -85
  462. package/dist/ghidra/GhidraLauncher.js +0 -8
  463. package/dist/ghidra/GhidraProvider.js +15 -22
  464. package/dist/ghidra/GhidraProviderCapabilities.js +6 -47
  465. package/dist/ghidra/GhidraRequestQueue.js +6 -30
  466. package/dist/ghidra/GhidraResponseBuffer.js +1 -7
  467. package/dist/ghidra/GhidraSessionValues.js +0 -2
  468. package/dist/ghidra/GhidraTransport.js +4 -7
  469. package/dist/ghidra/protocol.js +2 -2
  470. package/dist/hopper/BridgeLauncher.js +112 -36
  471. package/dist/hopper/HopperAnalysisProfile.js +1 -1
  472. package/dist/hopper/HopperCleanup.js +6 -3
  473. package/dist/hopper/HopperClient.js +4 -7
  474. package/dist/hopper/HopperProcessDiagnostic.js +2 -2
  475. package/dist/hopper/HopperProvider.js +0 -16
  476. package/dist/hopper/HopperRequestQueue.js +21 -40
  477. package/dist/hopper/HopperResponseStream.js +1 -9
  478. package/dist/hopper/HopperSessionValues.js +3 -2
  479. package/dist/hopper/HopperTargetLease.js +119 -0
  480. package/dist/hopper/LinuxPrivateDisplayDiagnostic.js +24 -31
  481. package/dist/hopper/LinuxPrivateDisplayProbe.js +5 -16
  482. package/dist/hopper/protocol.js +6 -4
  483. package/dist/main/reload.js +0 -3
  484. package/dist/main/shutdown.js +1 -1
  485. package/dist/main/state.js +0 -9
  486. package/dist/main/transport.js +0 -5
  487. package/dist/mcpDoctor.js +25 -45
  488. package/dist/native/CommandRunner.js +18 -25
  489. package/dist/native/NativeMacOSProvider.js +13 -38
  490. package/dist/native/NativeMachoInspection.js +1 -1
  491. package/dist/process/BoundedFileBytes.js +17 -0
  492. package/dist/process/ExecFileOutput.js +11 -0
  493. package/dist/process/PendingOperations.js +8 -6
  494. package/dist/process/ProcessOwnership.js +3 -2
  495. package/dist/process/ProcessOwnershipObservation.js +0 -1
  496. package/dist/process/ProviderProcess.js +7 -28
  497. package/dist/reference/ReferenceSourceReader.js +8 -24
  498. package/dist/reference/ReferenceSourceReaderEntries.js +11 -39
  499. package/dist/reference/ReferenceSourceReaderFile.js +13 -31
  500. package/dist/reference/ReferenceSourceReaderPaths.js +3 -18
  501. package/dist/reference/ReferenceSourceReaderValidate.js +3 -6
  502. package/dist/replay/JavaScriptReplayWorker.js +3 -5
  503. package/dist/replay/LinuxJavaScriptReplayRunner.js +33 -29
  504. package/dist/replay/LinuxJavaScriptReplaySandbox.js +0 -19
  505. package/dist/replay/LinuxRuntimeClosure.js +1 -3
  506. package/dist/replay/ReplayOutcome.js +1 -3
  507. package/dist/replay/ReplayProcessLifecycle.js +32 -7
  508. package/dist/replay/ReplaySeccompFile.js +29 -0
  509. package/dist/replay/ReplayWorkerProtocol.js +0 -2
  510. package/dist/replay/SystemJavaScriptReplayHost.js +45 -74
  511. package/dist/server/ProcessCaptureElicitation.js +4 -8
  512. package/dist/server/createServer.js +6 -44
  513. package/dist/server/promptCompletion.js +37 -61
  514. package/dist/server/recordDerivedEvidence.js +1 -1
  515. package/dist/server/registerApplicationTools/characterization.js +4 -8
  516. package/dist/server/registerApplicationTools/compareExportShapes.js +5 -10
  517. package/dist/server/registerApplicationTools/compareSourceToBundle.js +6 -10
  518. package/dist/server/registerApplicationTools/compareVersions.js +5 -10
  519. package/dist/server/registerApplicationTools/controlledReplay.js +3 -5
  520. package/dist/server/registerApplicationTools/coverage.js +6 -71
  521. package/dist/server/registerApplicationTools/helpers.js +1 -13
  522. package/dist/server/registerApplicationTools/obligationLedger.js +3 -2
  523. package/dist/server/registerApplicationTools/traceFeature.js +5 -9
  524. package/dist/server/registerApplicationTools/traceSemantics.js +5 -8
  525. package/dist/server/registerApplicationTools.js +0 -2
  526. package/dist/server/registerArtifactComparisonTool.js +23 -27
  527. package/dist/server/registerBrowserScenarioTool.js +4 -4
  528. package/dist/server/registerBrowserTools.js +5 -8
  529. package/dist/server/registerBundleComparisonTool.js +5 -7
  530. package/dist/server/registerCloseLifecycleTool.js +2 -16
  531. package/dist/server/registerElectronTools.js +10 -29
  532. package/dist/server/registerEnhancedTools.js +10 -11
  533. package/dist/server/registerEvidenceTools.js +15 -22
  534. package/dist/server/registerFunctionComparisonTool.js +30 -25
  535. package/dist/server/registerInvestigationTools/helpers.js +3 -32
  536. package/dist/server/registerInvestigationTools.js +20 -116
  537. package/dist/server/registerJavaScriptRuntimeObservationTools.js +6 -4
  538. package/dist/server/registerManagedWorkflowTools/compareManagedMembers.js +15 -17
  539. package/dist/server/registerManagedWorkflowTools/evidence.js +19 -35
  540. package/dist/server/registerManagedWorkflowTools/importManagedReconstruction.js +3 -8
  541. package/dist/server/registerManagedWorkflowTools/planManagedRuntimeCorrelation.js +3 -8
  542. package/dist/server/registerManagedWorkflowTools/projectManagedApplicationGraph.js +10 -14
  543. package/dist/server/registerManagedWorkflowTools/verifyManagedNativeBoundaries.js +9 -15
  544. package/dist/server/registerOfficialTools.js +1 -43
  545. package/dist/server/registerProcessComparisonTool.js +33 -23
  546. package/dist/server/registerPrompts.js +19 -17
  547. package/dist/server/registerSessionRecordTools.js +10 -156
  548. package/dist/server/registerSessionStatusTool.js +6 -69
  549. package/dist/server/registerSessionTools.js +10 -51
  550. package/dist/server/sessionAvailabilityPolicy.js +0 -2
  551. package/dist/server/sessionEvidence.js +9 -15
  552. package/dist/server/sessionToolPolicies.js +0 -8
  553. package/dist/server/toolResult.js +14 -50
  554. package/dist/serverIdentity.js +0 -20
  555. package/install.sh +1 -1
  556. package/package.json +11 -7
  557. package/scripts/electron-active-hook.cjs +23 -55
  558. package/scripts/hopper-demo-x11.py +13 -32
  559. package/skills/reverse-engineer-anything/SKILL.md +47 -12
  560. package/skills/reverse-engineer-anything/references/evidence-workflows.md +6 -4
  561. package/skills/reverse-engineer-anything/references/javascript-applications.md +13 -13
  562. package/skills/reverse-engineer-anything/references/native-and-artifacts.md +12 -8
  563. package/dist/application/ApplicationWorkflowEvidenceResolver.js +0 -188
  564. package/dist/application/BoundedJsonFiles.js +0 -86
  565. package/dist/application/CrossVersionInventory.js +0 -129
  566. package/dist/application/CrossVersionInvestigation.js +0 -301
  567. package/dist/application/CrossVersionInvestigationCollections.js +0 -23
  568. package/dist/application/CrossVersionInvestigationEvidence.js +0 -64
  569. package/dist/application/CrossVersionInvestigationReplay.js +0 -170
  570. package/dist/application/DeferredFileAuthorization.js +0 -61
  571. package/dist/application/DoctorProjection.js +0 -43
  572. package/dist/application/EnhancedToolPagination.js +0 -22
  573. package/dist/application/EvidenceReferenceResolver.js +0 -26
  574. package/dist/application/InvestigationWorkspaceStore.js +0 -204
  575. package/dist/application/ProcessPairedExperiment.js +0 -72
  576. package/dist/application/ReconstructionCoverageWorkspaceStore.js +0 -31
  577. package/dist/application/ReconstructionReadinessService.js +0 -48
  578. package/dist/cliInvestigationCommands.js +0 -173
  579. package/dist/domain/boundedCartesianProjection.js +0 -15
  580. package/dist/domain/investigationWorkspace.js +0 -347
  581. package/dist/domain/jsonLimits.js +0 -26
  582. package/dist/domain/knownPageCoverage.js +0 -29
  583. package/dist/domain/processPairedExperiment.js +0 -128
  584. package/dist/server/javascriptApplicationResult.js +0 -106
  585. package/dist/server/permissionFailure.js +0 -12
  586. package/dist/server/registerApplicationTools/readiness.js +0 -50
  587. package/dist/server/registerEvidenceResources.js +0 -315
  588. package/dist/server/registerJavaScriptApplicationGraphResource.js +0 -65
  589. package/dist/server/registerReconstructionObligationLedgerResource.js +0 -32
  590. package/dist/server/registerReconstructionReadinessResource.js +0 -32
@@ -1,7 +1,6 @@
1
1
  import { readEvidenceBundle, writeEvidenceBundle, } from "../application/EvidenceBundleFiles.js";
2
2
  import { SESSION_TOOL_CONTRACTS } from "../contracts/toolContracts.js";
3
- import { AnalysisProtocolError, PermissionRequiredError, } from "../domain/errors.js";
4
- import { err, ok } from "../domain/result.js";
3
+ import { ok } from "../domain/result.js";
5
4
  import { toolRegistrationOptions } from "./toolRegistrationOptions.js";
6
5
  import { toCallToolResult } from "./toolResult.js";
7
6
  /** Register evidence bundle import and export tools. */
@@ -9,56 +8,11 @@ export const registerEvidenceTools = (registration) => {
9
8
  registerExportEvidenceTool(registration);
10
9
  registerImportEvidenceTool(registration);
11
10
  registerSnapshotEvidenceTool(registration);
12
- registerReleaseEvidenceTool(registration);
13
11
  };
14
- const registerReleaseEvidenceTool = ({ server, session, releaseContract, permissionAuthority, }) => {
15
- server.registerTool(releaseContract.name, toolRegistrationOptions(releaseContract), async (input) => {
16
- const denied = await authorizeEvidenceWrite({
17
- authority: permissionAuthority,
18
- operationIdentity: `release_evidence:${input.bundle_digest}`,
19
- });
20
- if (denied !== undefined)
21
- return toCallToolResult(denied, releaseContract);
22
- const released = session.releaseEvidenceBundle(input.bundle_digest);
23
- if (released)
24
- void server.server
25
- .sendResourceUpdated({
26
- uri: `rea://evidence-bundle/${input.bundle_digest}`,
27
- })
28
- .catch(() => undefined);
29
- return toCallToolResult(ok({
30
- bundle_digest: input.bundle_digest,
31
- released,
32
- }), releaseContract);
33
- });
34
- };
35
- const authorizeEvidenceWrite = async ({ authority, operationIdentity, }) => {
36
- if (authority === undefined)
37
- return undefined;
38
- const authorized = await authority.authorize({
39
- capability: "evidence_write",
40
- roots: [],
41
- executables: [],
42
- environment_names: [],
43
- network: "none",
44
- mount: false,
45
- operation_identity: operationIdentity,
46
- }, "write");
47
- return authorized.ok ? undefined : permissionFailure(authorized);
48
- };
49
- const registerExportEvidenceTool = ({ server, session, exportContract, filePolicy, permissionAuthority, }) => {
12
+ const registerExportEvidenceTool = ({ server, session, exportContract, }) => {
50
13
  server.registerTool(exportContract.name, toolRegistrationOptions(exportContract), async (input) => {
51
14
  const bundle = session.exportEvidenceBundle();
52
- const denied = await authorizeEvidencePath({
53
- authority: permissionAuthority,
54
- capability: "evidence_write",
55
- path: input.path,
56
- access: "write",
57
- operationIdentity: `export_evidence:${input.path}`,
58
- });
59
- if (denied !== undefined)
60
- return toCallToolResult(denied, exportContract);
61
- const written = await writeEvidenceBundle(bundle, input.path, input.overwrite, filePolicy);
15
+ const written = await writeEvidenceBundle(bundle, input.path, input.overwrite);
62
16
  return written.ok
63
17
  ? toCallToolResult(ok({
64
18
  path: written.value.path,
@@ -70,44 +24,12 @@ const registerExportEvidenceTool = ({ server, session, exportContract, filePolic
70
24
  });
71
25
  };
72
26
  const registerSnapshotEvidenceTool = ({ server, session, snapshotContract, }) => {
73
- server.registerTool(snapshotContract.name, toolRegistrationOptions(snapshotContract), () => {
74
- const snapshot = session.snapshotEvidenceBundle();
75
- if (!snapshot.ok)
76
- return toCallToolResult(snapshot, snapshotContract);
77
- const value = {
78
- bundle_digest: snapshot.value.bundleDigest,
79
- bundle_version: snapshot.value.bundleVersion,
80
- bytes: snapshot.value.bytes,
81
- records: snapshot.value.records,
82
- unknowns: snapshot.value.unknowns,
83
- scope: snapshot.value.scope,
84
- survives_session: snapshot.value.survivesSession,
85
- bundle_uri: snapshot.value.uri,
86
- };
87
- return toCallToolResult(ok(value), snapshotContract, {
88
- resourceLinks: [
89
- {
90
- uri: snapshot.value.uri,
91
- name: snapshot.value.bundleDigest,
92
- description: "Immutable session-retained Evidence v2 bundle",
93
- },
94
- ],
95
- });
96
- });
27
+ server.registerTool(snapshotContract.name, toolRegistrationOptions(snapshotContract), () => toCallToolResult(ok(session.exportEvidenceBundle()), snapshotContract));
97
28
  };
98
- const registerImportEvidenceTool = ({ server, session, importContract, filePolicy, permissionAuthority, }) => {
29
+ const registerImportEvidenceTool = ({ server, session, importContract, }) => {
99
30
  server.registerTool(importContract.name, toolRegistrationOptions(importContract), async (input) => {
100
31
  const path = input.path;
101
- const denied = await authorizeEvidencePath({
102
- authority: permissionAuthority,
103
- capability: "evidence_read",
104
- path,
105
- access: "read",
106
- operationIdentity: `import_evidence:${path}`,
107
- });
108
- if (denied !== undefined)
109
- return toCallToolResult(denied, importContract);
110
- const loaded = await readEvidenceBundle(path, filePolicy);
32
+ const loaded = await readEvidenceBundle(path);
111
33
  if (!loaded.ok)
112
34
  return toCallToolResult(loaded, importContract);
113
35
  const retainedUnknownRevisions = new Set(session
@@ -124,20 +46,6 @@ const registerImportEvidenceTool = ({ server, session, importContract, filePolic
124
46
  });
125
47
  };
126
48
  const unknownRevisionKey = (unknown) => `${unknown.unknown_id}:${String(unknown.revision)}`;
127
- const authorizeEvidencePath = async (input) => {
128
- if (input.authority === undefined)
129
- return undefined;
130
- const authorized = await input.authority.authorize({
131
- capability: input.capability,
132
- roots: [input.path],
133
- executables: [],
134
- environment_names: [],
135
- network: "none",
136
- mount: false,
137
- operation_identity: input.operationIdentity,
138
- }, input.access);
139
- return authorized.ok ? undefined : permissionFailure(authorized);
140
- };
141
49
  /** Register residual-unknown query and mutation tools. */
142
50
  const registerListUnknownsTool = ({ server, session, contracts, }) => {
143
51
  const listContract = contracts[14];
@@ -150,69 +58,24 @@ const registerListUnknownsTool = ({ server, session, contracts, }) => {
150
58
  : { severity: filters.severity }),
151
59
  ...(filters.domain === undefined ? {} : { domain: filters.domain }),
152
60
  });
153
- const items = all
154
- .slice(filters.offset, filters.offset + filters.limit)
155
- .map((unknown) => ({
156
- unknown,
157
- uri: `rea://unknown/${unknown.unknown_id}`,
158
- }));
159
- const nextOffset = filters.offset + items.length < all.length
160
- ? filters.offset + items.length
161
- : null;
162
61
  return toCallToolResult(ok({
163
- items,
164
- offset: filters.offset,
165
- limit: filters.limit,
62
+ items: all,
166
63
  total: all.length,
167
- next_offset: nextOffset,
168
- has_more: nextOffset !== null,
169
- }), listContract, {
170
- resourceLinks: items.map((unknown) => ({
171
- uri: unknown.uri,
172
- name: unknown.unknown.unknown_id,
173
- description: `Current ${unknown.unknown.status} residual unknown revision`,
174
- })),
175
- });
64
+ }), listContract);
176
65
  });
177
66
  };
178
67
  const registerRecordUnknownTool = ({ server, session, contracts, }) => {
179
68
  const recordContract = contracts[15];
180
69
  server.registerTool(recordContract.name, toolRegistrationOptions(recordContract), (input) => {
181
70
  const result = session.recordUnknown(input);
182
- return result.ok
183
- ? toCallToolResult(result, recordContract, {
184
- resourceLinks: [
185
- {
186
- uri: `rea://unknown/${result.value.unknown_id}`,
187
- name: result.value.unknown_id,
188
- description: "Current residual unknown head",
189
- },
190
- ],
191
- })
192
- : toCallToolResult(result, recordContract);
71
+ return toCallToolResult(result, recordContract);
193
72
  });
194
73
  };
195
74
  const registerUpdateUnknownTool = ({ server, session, contracts, }) => {
196
75
  const updateContract = contracts[16];
197
76
  server.registerTool(updateContract.name, toolRegistrationOptions(updateContract), (input) => {
198
77
  const result = session.updateUnknown(input);
199
- if (result.ok)
200
- void server.server
201
- .sendResourceUpdated({
202
- uri: `rea://unknown/${result.value.unknown_id}`,
203
- })
204
- .catch(() => undefined);
205
- return result.ok
206
- ? toCallToolResult(result, updateContract, {
207
- resourceLinks: [
208
- {
209
- uri: `rea://unknown/${result.value.unknown_id}`,
210
- name: result.value.unknown_id,
211
- description: "Updated residual unknown head",
212
- },
213
- ],
214
- })
215
- : toCallToolResult(result, updateContract);
78
+ return toCallToolResult(result, updateContract);
216
79
  });
217
80
  };
218
81
  const registerVerifyUnknownTool = ({ server, session, contracts, }) => {
@@ -225,12 +88,3 @@ export const registerUnknownTools = (registration) => {
225
88
  registerUpdateUnknownTool(registration);
226
89
  registerVerifyUnknownTool(registration);
227
90
  };
228
- const permissionFailure = (failure) => {
229
- if (failure.ok)
230
- return err(new AnalysisProtocolError("Expected a denied permission"));
231
- return err(failure.error instanceof PermissionRequiredError
232
- ? failure.error
233
- : new AnalysisProtocolError(failure.error.message, {
234
- cause: failure.error,
235
- }));
236
- };
@@ -1,5 +1,5 @@
1
1
  import { buildCapabilityInventory } from "../application/CapabilityInventory.js";
2
- import { binarySessionInputSchema, SESSION_TOOL_CONTRACTS, } from "../contracts/toolContracts.js";
2
+ import { SESSION_TOOL_CONTRACTS } from "../contracts/toolContracts.js";
3
3
  import { jsonObjectSchema } from "../domain/jsonValue.js";
4
4
  import { createServerIdentity } from "../serverIdentity.js";
5
5
  import { mcpClientMetadata } from "./mcpClientMetadata.js";
@@ -32,7 +32,6 @@ export const registerSessionStatusTool = (options) => {
32
32
  return toCallToolResult({
33
33
  ok: true,
34
34
  value: projectSessionStatus({
35
- input: input,
36
35
  status: statusObject,
37
36
  toolAvailability,
38
37
  serverIdentity,
@@ -41,71 +40,9 @@ export const registerSessionStatusTool = (options) => {
41
40
  }, contract);
42
41
  });
43
42
  };
44
- const projectSessionStatus = (options) => {
45
- if (options.input.detail === "full")
46
- return jsonObjectSchema.parse({
47
- view: "full",
48
- ...options.status,
49
- tool_availability: options.toolAvailability,
50
- client_features: options.clientFeatures,
51
- server_identity: options.serverIdentity,
52
- });
53
- const open = options.status.open === true;
54
- const activeProvider = activeProviderFrom(options.status);
55
- if (options.input.detail === "capabilities") {
56
- const filtered = options.input.capability_family === undefined
57
- ? options.toolAvailability
58
- : options.toolAvailability.filter(({ surface }) => surface === options.input.capability_family);
59
- const items = filtered.slice(options.input.cursor, options.input.cursor + options.input.limit);
60
- const nextCursor = options.input.cursor + items.length;
61
- return jsonObjectSchema.parse({
62
- view: "capabilities",
63
- open,
64
- provider: options.status.provider,
65
- active_provider: activeProvider,
66
- capability_family: options.input.capability_family ?? null,
67
- capabilities: {
68
- items,
69
- cursor: options.input.cursor,
70
- limit: options.input.limit,
71
- total: filtered.length,
72
- next_cursor: nextCursor < filtered.length ? nextCursor : null,
73
- has_more: nextCursor < filtered.length,
74
- },
75
- client_features: options.clientFeatures,
76
- });
77
- }
78
- return jsonObjectSchema.parse({
79
- view: "summary",
80
- open,
81
- provider: options.status.provider,
82
- active_provider: activeProvider,
83
- target: open ? targetFrom(options.status) : null,
84
- alignment: options.serverIdentity.alignment,
85
- analysis_activity: options.status.analysis_activity,
86
- recommended_actions: recommendedActions(open, options.serverIdentity.alignment.state),
87
- });
88
- };
89
- const activeProviderFrom = (status) => {
90
- const binding = jsonObjectSchema.safeParse(status.analysis_provider_binding);
91
- return binding.success ? (binding.data.provider ?? null) : null;
92
- };
93
- const targetFrom = (status) => ({
94
- path: status.path,
95
- format: status.format,
96
- kind: status.kind,
97
- sha256: status.sha256,
98
- architecture: status.architecture ?? null,
43
+ const projectSessionStatus = (options) => jsonObjectSchema.parse({
44
+ ...options.status,
45
+ tool_availability: options.toolAvailability,
46
+ client_features: options.clientFeatures,
47
+ server_identity: options.serverIdentity,
99
48
  });
100
- const recommendedActions = (open, alignment) => [
101
- ...(alignment === "mcp_server_restart_required"
102
- ? ["Restart the registered MCP server or client before continuing."]
103
- : []),
104
- ...(!open
105
- ? [
106
- "For a supplied target, route by format: ASAR/JavaScript to analyze_javascript_application; archive/package to open_binary(path), then inspect_artifact or inventory_artifact on the active target; managed PE/CLI to inspect_managed_artifact; browser/Electron runtimes to their list-target tools; native binaries to open_binary.",
107
- ]
108
- : [
109
- "Continue from the active target with binary_overview or a bounded target-specific query.",
110
- ]),
111
- ];
@@ -7,9 +7,9 @@ import { createProcessCaptureEvidence } from "../application/ProcessEvidence.js"
7
7
  import { captureProcessScenario } from "../application/ProcessHarness.js";
8
8
  import { SESSION_TOOL_CONTRACTS } from "../contracts/toolContracts.js";
9
9
  import { UnknownRegistryError } from "../domain/errors.js";
10
- import { ok } from "../domain/result.js";
10
+ import { err, ok } from "../domain/result.js";
11
+ import { projectPermissionFailure } from "../application/PermissionFailure.js";
11
12
  import { mcpProgressReporter } from "./mcpProgress.js";
12
- import { permissionFailure } from "./permissionFailure.js";
13
13
  import { authorizeProcessCaptureWithElicitation, } from "./ProcessCaptureElicitation.js";
14
14
  import { registerArtifactComparisonTool } from "./registerArtifactComparisonTool.js";
15
15
  import { registerBundleComparisonTool } from "./registerBundleComparisonTool.js";
@@ -21,16 +21,13 @@ import { registerReplayMachineTool } from "./registerReplayMachineTool.js";
21
21
  import { registerEvidenceTools, registerUnknownTools, } from "./registerSessionRecordTools.js";
22
22
  import { registerSessionStatusTool } from "./registerSessionStatusTool.js";
23
23
  import { sessionAvailabilityPolicy, } from "./sessionAvailabilityPolicy.js";
24
- import { DENY_EVIDENCE_FILE_POLICY, DENY_PROCESS_POLICY, } from "./sessionToolPolicies.js";
24
+ import { DENY_PROCESS_POLICY } from "./sessionToolPolicies.js";
25
25
  import { logToolExecution } from "./toolLogging.js";
26
26
  import { toolRegistrationOptions } from "./toolRegistrationOptions.js";
27
27
  import { toCallToolResult } from "./toolResult.js";
28
28
  const recordProcessResidualUnknowns = (session, scenario, evidence, residuals) => {
29
- if (scenario.unknown_registry_approved !== true)
30
- return ok(null);
31
29
  for (const residual of residuals) {
32
30
  const unknown = session.recordUnknown({
33
- approved: true,
34
31
  question: `Was ${residual.scope} behavior fully observed during capture?`,
35
32
  severity: "medium",
36
33
  domain: `process-${residual.scope}`,
@@ -65,7 +62,7 @@ const registerProcessTools = ({ server, session, logger, processPolicy, captureC
65
62
  if (isInputRequiredResult(authorized))
66
63
  return authorized;
67
64
  if (!authorized.ok)
68
- return toCallToolResult(permissionFailure(authorized), captureContract);
65
+ return toCallToolResult(err(projectPermissionFailure(authorized.error)), captureContract);
69
66
  }
70
67
  const progress = mcpProgressReporter(context);
71
68
  await progress.report({
@@ -106,24 +103,11 @@ const registerLifecycleTools = (registration) => {
106
103
  availabilityPolicy,
107
104
  });
108
105
  };
109
- const registerOpenLifecycleTool = ({ server, session, logger, contracts: [openContract], snapshotFilePolicy, permissionAuthority, }) => {
106
+ const registerOpenLifecycleTool = ({ server, session, logger, contracts: [openContract], }) => {
110
107
  server.registerTool(openContract.name, toolRegistrationOptions(openContract), async (input, context) => {
111
108
  let snapshot;
112
109
  if (input.snapshot_path !== undefined) {
113
- if (permissionAuthority !== undefined) {
114
- const authorized = await permissionAuthority.authorize({
115
- capability: "snapshot_read",
116
- roots: [input.snapshot_path],
117
- executables: [],
118
- environment_names: [],
119
- network: "none",
120
- mount: false,
121
- operation_identity: `open_binary:snapshot:${input.snapshot_path}`,
122
- }, "read");
123
- if (!authorized.ok)
124
- return toCallToolResult(permissionFailure(authorized), openContract);
125
- }
126
- const loaded = await readAnalysisSnapshot(input.snapshot_path, snapshotFilePolicy);
110
+ const loaded = await readAnalysisSnapshot(input.snapshot_path);
127
111
  if (!loaded.ok)
128
112
  return toCallToolResult(loaded, openContract);
129
113
  snapshot = loaded.value;
@@ -161,8 +145,8 @@ const registerRecordAndReplayTools = (server, session, logger) => {
161
145
  registerReplayMachineTool(server, logger);
162
146
  };
163
147
  const registerContextTools = (server, session) => {
164
- const navigationContract = SESSION_TOOL_CONTRACTS[21];
165
- const addressContract = SESSION_TOOL_CONTRACTS[22];
148
+ const navigationContract = SESSION_TOOL_CONTRACTS[20];
149
+ const addressContract = SESSION_TOOL_CONTRACTS[21];
166
150
  server.registerTool(navigationContract.name, toolRegistrationOptions(navigationContract), async (input, context) => {
167
151
  return toCallToolResult(await getNavigationContext(session, input, context.mcpReq.signal), navigationContract);
168
152
  });
@@ -172,26 +156,17 @@ const registerContextTools = (server, session) => {
172
156
  };
173
157
  export const registerSessionTools = (server, session, logger, options = {}) => {
174
158
  const processPolicy = options.processPolicy ?? (() => DENY_PROCESS_POLICY);
175
- const evidenceFilePolicy = options.evidenceFilePolicy ?? DENY_EVIDENCE_FILE_POLICY;
176
- const analysisSnapshotFilePolicy = options.analysisSnapshotFilePolicy ?? DENY_EVIDENCE_FILE_POLICY;
177
159
  const [openContract, closeContract, statusContract, exportContract, importContract, captureContract, compareContract, compareArtifactsContract, compareFunctionsContract, compareBundlesContract, changedBehaviorContract, callPathContract, staticRuntimeContract, reconstructionContract,] = SESSION_TOOL_CONTRACTS;
178
160
  const snapshotContract = SESSION_TOOL_CONTRACTS[19];
179
- const releaseContract = SESSION_TOOL_CONTRACTS[20];
180
161
  registerLifecycleTools({
181
162
  server,
182
163
  session,
183
164
  logger,
184
165
  contracts: [openContract, closeContract, statusContract],
185
- snapshotFilePolicy: analysisSnapshotFilePolicy,
186
166
  startedAt: options.startedAt ?? new Date().toISOString(),
187
167
  availabilityPolicy: sessionAvailabilityPolicy(options.availabilityPolicy, {
188
168
  processPolicy: processPolicy(),
189
- evidenceFilePolicy,
190
- investigationInputRoots: options.investigationInputRoots ?? [],
191
169
  }),
192
- ...(options.permissionAuthority === undefined
193
- ? {}
194
- : { permissionAuthority: options.permissionAuthority }),
195
170
  });
196
171
  registerEvidenceTools({
197
172
  server,
@@ -199,11 +174,6 @@ export const registerSessionTools = (server, session, logger, options = {}) => {
199
174
  exportContract,
200
175
  importContract,
201
176
  snapshotContract,
202
- releaseContract,
203
- filePolicy: evidenceFilePolicy,
204
- ...(options.permissionAuthority === undefined
205
- ? {}
206
- : { permissionAuthority: options.permissionAuthority }),
207
177
  });
208
178
  registerProcessTools({
209
179
  server,
@@ -221,25 +191,14 @@ export const registerSessionTools = (server, session, logger, options = {}) => {
221
191
  registerProcessComparisonTool(server, session, compareContract);
222
192
  registerArtifactComparisonTool(server, session, compareArtifactsContract);
223
193
  registerFunctionComparisonTool(server, session, compareFunctionsContract);
224
- registerBundleComparisonTool(server, session, compareBundlesContract, evidenceFilePolicy);
194
+ registerBundleComparisonTool(server, session, compareBundlesContract);
225
195
  const investigationContracts = [
226
196
  changedBehaviorContract,
227
197
  callPathContract,
228
198
  staticRuntimeContract,
229
199
  reconstructionContract,
230
200
  ];
231
- registerInvestigationTools(server, session, investigationContracts, {
232
- evidenceFiles: evidenceFilePolicy,
233
- inputRoots: options.investigationInputRoots ?? [],
234
- ...(options.artifactIntegrityContinueEnabled === undefined
235
- ? {}
236
- : {
237
- integrityContinueEnabled: options.artifactIntegrityContinueEnabled,
238
- }),
239
- ...(options.permissionAuthority === undefined
240
- ? {}
241
- : { permissionAuthority: options.permissionAuthority }),
242
- });
201
+ registerInvestigationTools(server, session, investigationContracts);
243
202
  registerRecordAndReplayTools(server, session, logger);
244
203
  registerContextTools(server, session);
245
204
  };
@@ -2,8 +2,6 @@
2
2
  export const sessionAvailabilityPolicy = (configured, defaults) => configured ??
3
3
  (() => ({
4
4
  processCaptureEnabled: defaults.processPolicy.status === "enabled",
5
- evidenceFileRoots: defaults.evidenceFilePolicy.roots.length,
6
- investigationInputRoots: defaults.investigationInputRoots.length,
7
5
  browserObservationEnabled: defaults.optionalFeatures?.browserObservationEnabled ?? false,
8
6
  browserScenarioEnabled: defaults.optionalFeatures?.browserScenarioEnabled ?? false,
9
7
  electronObservationEnabled: defaults.optionalFeatures?.electronObservationEnabled ?? false,
@@ -1,17 +1,11 @@
1
- import { EvidenceIntegrityError, EvidenceReferenceError, } from "../domain/errors.js";
2
- import { err, ok } from "../domain/result.js";
3
- /** Resolve bounded IDs to authoritative records with exact semantic identity. */
4
- export const resolveSessionEvidenceIds = (session, evidenceIds, expected) => {
5
- const records = [];
6
- for (const evidenceId of evidenceIds) {
7
- const record = session.evidenceById(evidenceId);
8
- if (record === undefined)
9
- return err(new EvidenceReferenceError(evidenceId, "missing", expected.operation, null));
10
- if (record.operation !== expected.operation)
11
- return err(new EvidenceReferenceError(evidenceId, "wrong_operation", expected.operation, record.operation));
12
- if (record.predicate_type !== expected.predicate)
13
- return err(new EvidenceReferenceError(evidenceId, "wrong_predicate", expected.predicate, record.predicate_type));
14
- records.push(record);
1
+ import { EvidenceIntegrityError } from "../domain/errors.js";
2
+ import { ok } from "../domain/result.js";
3
+ /** Record source evidence in order, stopping at the first session rejection. */
4
+ export const recordSessionEvidenceSources = (recordEvidence, sources) => {
5
+ for (const source of sources) {
6
+ const recorded = recordEvidence?.(source);
7
+ if (recorded !== undefined && !recorded.ok)
8
+ return recorded;
15
9
  }
16
- return ok(records);
10
+ return ok(null);
17
11
  };
@@ -2,13 +2,5 @@
2
2
  export const DENY_PROCESS_POLICY = {
3
3
  status: "disabled",
4
4
  };
5
- /** Fail-closed evidence filesystem policy used without approved roots. */
6
- export const DENY_EVIDENCE_FILE_POLICY = {
7
- roots: [],
8
- maxBytes: 64 * 1024 * 1024,
9
- maxDepth: 64,
10
- maxStringLength: 1024 * 1024,
11
- maxNodes: 1_000_000,
12
- };
13
5
  export { PROCESS_PROVIDER } from "../application/ProcessEvidence.js";
14
6
  export { ARTIFACT_COMPARISON_PROVIDER, BUNDLE_COMPARISON_PROVIDER, CALL_PATH_PROVIDER, CHANGED_BEHAVIOR_PROVIDER, FUNCTION_COMPARISON_PROVIDER, RECONSTRUCTION_PROVIDER, STATIC_RUNTIME_PROVIDER, } from "../application/InvestigationProviders.js";
@@ -4,9 +4,7 @@ import { projectAnalysisError } from "../domain/errors.js";
4
4
  * Error tags and safe messages remain visible while underlying causes, process
5
5
  * output, and other potentially sensitive details stay private.
6
6
  */
7
- export const toCallToolResult = (result, contract, options = {}) => result.ok
8
- ? successResult(result.value, contract, options)
9
- : errorResult(result.error);
7
+ export const toCallToolResult = (result, contract) => result.ok ? successResult(result.value, contract) : errorResult(result.error);
10
8
  const errorResult = (error) => {
11
9
  const projected = projectAnalysisError(error);
12
10
  const structuredContent = { error: projected };
@@ -21,42 +19,20 @@ const errorResult = (error) => {
21
19
  isError: true,
22
20
  };
23
21
  };
24
- const successResult = (value, contract, options) => {
25
- const candidate = compactEvidence(value, options.evidenceResultProjection) ??
22
+ const successResult = (value, contract) => {
23
+ const candidate = compactEvidence(value) ??
26
24
  (contract.kind === "session" ? { result: value } : value);
27
25
  return {
28
26
  content: [
29
27
  {
30
28
  type: "text",
31
- text: JSON.stringify(options.evidenceTextProjection === undefined
32
- ? candidate
33
- : (compactEvidence(value, options.evidenceTextProjection) ??
34
- options.evidenceTextProjection)),
29
+ text: JSON.stringify(candidate),
35
30
  },
36
- ...(hasResourceLinks(value, contract, options)
37
- ? [
38
- {
39
- type: "text",
40
- text: "Full detail is available through MCP resources/read. Copy the opaque URI exactly. In Codex, call read_mcp_resource.",
41
- },
42
- ]
43
- : []),
44
- ...evidenceResourceLinks(value, contract.kind === "session" ||
45
- options.evidenceResourcesAvailable === true),
46
- ...(options.resourceLinks ?? []).map((resource) => ({
47
- type: "resource_link",
48
- ...resource,
49
- mimeType: "application/json",
50
- })),
51
31
  ],
52
32
  structuredContent: candidate,
53
33
  };
54
34
  };
55
- const hasResourceLinks = (value, contract, options) => options.resourceLinks !== undefined && options.resourceLinks.length > 0
56
- ? true
57
- : evidenceResourceLinks(value, contract.kind === "session" ||
58
- options.evidenceResourcesAvailable === true).length > 0;
59
- const compactEvidence = (value, resultProjection) => {
35
+ const compactEvidence = (value) => {
60
36
  if (typeof value !== "object" ||
61
37
  value === null ||
62
38
  Array.isArray(value) ||
@@ -64,27 +40,15 @@ const compactEvidence = (value, resultProjection) => {
64
40
  !/^ev_[a-f0-9]{64}$/u.test(value.evidence_id) ||
65
41
  !("normalized_result" in value))
66
42
  return undefined;
43
+ const evidence = value;
44
+ const normalizedResult = evidence.normalized_result;
45
+ const evidenceId = evidence.evidence_id;
46
+ if (normalizedResult === undefined || typeof evidenceId !== "string")
47
+ return undefined;
48
+ const inlineEvidence = Object.fromEntries(Object.entries(evidence).filter(([key]) => key !== "normalized_result"));
67
49
  return {
68
- result: resultProjection ?? value.normalized_result,
69
- evidence_id: value.evidence_id,
70
- evidence_uri: `rea://evidence/${value.evidence_id}`,
50
+ result: normalizedResult,
51
+ evidence_id: evidenceId,
52
+ evidence: inlineEvidence,
71
53
  };
72
54
  };
73
- const evidenceResourceLinks = (value, available) => {
74
- if (!available ||
75
- typeof value !== "object" ||
76
- value === null ||
77
- Array.isArray(value) ||
78
- typeof value.evidence_id !== "string" ||
79
- !/^ev_[a-f0-9]{64}$/u.test(value.evidence_id))
80
- return [];
81
- return [
82
- {
83
- type: "resource_link",
84
- uri: `rea://evidence/${value.evidence_id}`,
85
- name: value.evidence_id,
86
- description: "Session-owned Evidence v2 record",
87
- mimeType: "application/json",
88
- },
89
- ];
90
- };
@@ -50,7 +50,6 @@ export const createServerIdentity = (input) => {
50
50
  protocol_features: {
51
51
  progress: true,
52
52
  cancellation: true,
53
- evidence_resources: true,
54
53
  elicitation: false,
55
54
  },
56
55
  alignment: {
@@ -68,22 +67,3 @@ export const createServerIdentity = (input) => {
68
67
  },
69
68
  };
70
69
  };
71
- /** Compact identity projection for CLI summaries; MCP retains full identity. */
72
- export const createServerIdentitySummary = (input) => {
73
- const identity = createServerIdentity(input);
74
- return {
75
- package: {
76
- name: identity.package.name,
77
- version: identity.package.version,
78
- },
79
- server: {
80
- name: identity.server.name,
81
- version: identity.server.version,
82
- },
83
- catalog: {
84
- counts: identity.catalog.counts,
85
- digests: identity.catalog.digests,
86
- },
87
- alignment: identity.alignment,
88
- };
89
- };
package/install.sh CHANGED
@@ -102,7 +102,7 @@ printf 'Installing %s@%s...\n' "$PACKAGE" "$version"
102
102
  npm install --global "${prefix_args[@]}" "$PACKAGE@$version" || fail "npm could not install REA. Check registry access and npm permissions, then retry."
103
103
  [[ -x "$install_bin" ]] || fail "npm completed without installing the rea command. Check the npm global bin directory and PATH, then retry."
104
104
  installed_version="$("$install_bin" --version 2>/dev/null | tr -d '[:space:]')" || fail "the installed REA version could not be read. Reinstall the requested version, then retry."
105
- [[ "$installed_version" == "$version" ]] || fail "installed version $installed_version does not match $version."
105
+ [[ "$installed_version" == "$version" ]] || fail "installed version $installed_version does not match $version. Reinstall the requested version, then retry."
106
106
 
107
107
  printf 'REA %s is installed.\n' "$version"
108
108
  if [[ "$start_setup" == true && -r /dev/tty && -w /dev/tty && -t 1 ]]; then