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.
- package/README.md +72 -95
- package/bridge/ghidra/ReaGhidraBridge.java +609 -841
- package/bridge/hopper_bridge.py +99 -344
- package/dist/application/AbortablePromise.js +6 -3
- package/dist/application/AnalysisSnapshotCache.js +0 -1
- package/dist/application/AnalysisSnapshotFiles.js +7 -7
- package/dist/application/AndroidApplicationService.js +1 -1
- package/dist/application/AppleApplicationService.js +1 -1
- package/dist/application/ArtifactExtraction.js +35 -54
- package/dist/application/ArtifactExtractionDestination.js +17 -0
- package/dist/application/ArtifactGraphConstruction.js +2 -17
- package/dist/application/ArtifactInventory/classify.js +2 -6
- package/dist/application/ArtifactInventory/hash.js +2 -20
- package/dist/application/ArtifactInventory/scanCanonical.js +8 -12
- package/dist/application/ArtifactInventory/scanReader.js +69 -51
- package/dist/application/ArtifactInventory.js +6 -14
- package/dist/application/AuthorizedArtifactInventory.js +3 -13
- package/dist/application/BinarySession.js +41 -13
- package/dist/application/BinarySessionComposition.js +0 -11
- package/dist/application/BinarySessionOpen.js +2 -1
- package/dist/application/BinarySessionRecords.js +5 -93
- package/dist/application/BinarySessionStatus.js +5 -16
- package/dist/application/BinaryTargetResolver.js +216 -0
- package/dist/application/BrowserEvidence.js +42 -58
- package/dist/application/BrowserObservationService.js +3 -6
- package/dist/application/BrowserScenarioCaptureService.js +3 -6
- package/dist/application/BrowserScenarioEvidence.js +3 -3
- package/dist/application/CallPathTracing.js +2 -36
- package/dist/application/CapabilityInventory.js +10 -15
- package/dist/application/ClientConfigurationDocument.js +27 -0
- package/dist/application/ClientRegistrationStatus.js +16 -13
- package/dist/application/CommandShimReplay.js +14 -1
- package/dist/application/DirectAnalysis.js +22 -46
- package/dist/application/DirectAnalysisStatus.js +5 -61
- package/dist/application/Doctor.js +11 -32
- package/dist/application/DoctorDiagnostics.js +1 -2
- package/dist/application/DoctorScope.js +1 -1
- package/dist/application/ElectronActiveEvidence.js +3 -8
- package/dist/application/ElectronActiveObservationService.js +3 -6
- package/dist/application/ElectronBoundaryAnalysis.js +7 -8
- package/dist/application/ElectronBoundaryGraphContext.js +1 -1
- package/dist/application/ElectronBoundaryGraphIpc.js +3 -3
- package/dist/application/ElectronBoundaryGraphNative.js +1 -2
- package/dist/application/ElectronBoundaryGraphWindows.js +6 -8
- package/dist/application/ElectronEvidence.js +4 -7
- package/dist/application/ElectronObservationService.js +5 -9
- package/dist/application/EnhancedLiteralTracing.js +42 -65
- package/dist/application/EnhancedTools.js +76 -44
- package/dist/application/EvidenceBundleCommands.js +11 -11
- package/dist/application/EvidenceBundleFiles.js +9 -15
- package/dist/application/EvidenceLedger.js +6 -41
- package/dist/application/FilesystemSnapshot.js +2 -3
- package/dist/application/InterfaceBuilderAnalysis.js +266 -0
- package/dist/application/InventoryProjectionEvidence.js +4 -2
- package/dist/application/InvestigationProviders.js +1 -1
- package/dist/application/JavaScriptApplicationEvidence.js +2 -5
- package/dist/application/JavaScriptApplicationEvidenceGraph.js +6 -10
- package/dist/application/JavaScriptApplicationService.js +6 -29
- package/dist/application/JavaScriptApplicationWorkflowEvidence.js +5 -5
- package/dist/application/JavaScriptApplicationWorkflowService.js +0 -8
- package/dist/application/JavaScriptArtifactAnalysis.js +38 -127
- package/dist/application/JavaScriptArtifactFiles.js +67 -107
- package/dist/application/JavaScriptArtifactGraphAccumulator.js +0 -7
- package/dist/application/JavaScriptArtifactGraphBuilder.js +7 -58
- package/dist/application/JavaScriptArtifactGraphBundlers.js +1 -6
- package/dist/application/JavaScriptArtifactGraphContext.js +12 -39
- package/dist/application/JavaScriptArtifactGraphDocuments.js +4 -11
- package/dist/application/JavaScriptArtifactGraphEvidence.js +0 -14
- package/dist/application/JavaScriptArtifactGraphFindings.js +3 -3
- package/dist/application/JavaScriptArtifactGraphStructure.js +16 -17
- package/dist/application/JavaScriptArtifactPathResolution.js +61 -49
- package/dist/application/JavaScriptArtifactReconstruction.js +5 -10
- package/dist/application/JavaScriptArtifactReconstructionInput.js +2 -14
- package/dist/application/JavaScriptJsonModules.js +2 -2
- package/dist/application/JavaScriptModuleRelationships.js +22 -27
- package/dist/application/JavaScriptReplayPlanning.js +9 -3
- package/dist/application/JavaScriptReplayService.js +6 -32
- package/dist/application/JavaScriptReturnShapeProjection.js +12 -42
- package/dist/application/JavaScriptRuntimeObservationEvidence.js +7 -8
- package/dist/application/JavaScriptRuntimeObservationService.js +4 -8
- package/dist/application/JavaScriptRuntimeReconciliationEvidence.js +2 -3
- package/dist/application/JavaScriptSemanticGraphBuilder.js +11 -41
- package/dist/application/JavaScriptSemanticGraphConstruction.js +5 -29
- package/dist/application/JavaScriptSemanticGraphEvidence.js +1 -1
- package/dist/application/JavaScriptSemanticGraphFingerprintProjection.js +1 -1
- package/dist/application/JavaScriptSemanticGraphFlowProjection.js +0 -13
- package/dist/application/JavaScriptSemanticGraphProjection.js +1 -3
- package/dist/application/JavaScriptSemanticTraceService.js +1 -10
- package/dist/application/JsonFiles.js +79 -0
- package/dist/application/LinuxHopper.js +11 -9
- package/dist/application/LoopbackReplay.js +26 -23
- package/dist/application/LoopbackReplayRecorder.js +29 -1
- package/dist/application/ManagedApplicationGraphService.js +1 -2
- package/dist/application/ManagedMemberComparisonService.js +11 -41
- package/dist/application/ManagedNativeVerificationService.js +1 -2
- package/dist/application/ManagedReconstructionService.js +1 -1
- package/dist/application/ManagedRuntimeCorrelationService.js +5 -8
- package/dist/application/NativeApiInspection.js +2 -7
- package/dist/application/NativeUiActionTrace.js +394 -0
- package/dist/application/NodeRuntimeCharacterizationService.js +3 -7
- package/dist/application/PermissionAuthority.js +15 -7
- package/dist/application/PermissionFailure.js +5 -0
- package/dist/application/ProcessCaptureAuthority.js +5 -7
- package/dist/application/ProcessCaptureJournal.js +3 -2
- package/dist/application/ProcessCaptureLifecycle.js +5 -12
- package/dist/application/ProcessCheckpoints.js +29 -11
- package/dist/application/ProcessCli.js +6 -16
- package/dist/application/ProcessEvidence.js +5 -7
- package/dist/application/ProcessHarness.js +52 -17
- package/dist/application/ProcessReactiveCoordinator.js +2 -4
- package/dist/application/ProcessReactiveEffects.js +9 -3
- package/dist/application/ProcessReactiveHarness.js +13 -7
- package/dist/application/ProcessSampling.js +2 -4
- package/dist/application/ProcessTimer.js +39 -0
- package/dist/application/ProjectPermissionStore.js +39 -96
- package/dist/application/RealHopperAssertions.js +20 -66
- package/dist/application/ReconstructionCoverageService.js +12 -58
- package/dist/application/ReconstructionObligationAuthority.js +2 -2
- package/dist/application/ReconstructionObligationCandidates.js +4 -4
- package/dist/application/ReconstructionObligationLedgerEvaluation.js +8 -15
- package/dist/application/ReconstructionObligationLedgerProjection.js +3 -7
- package/dist/application/ReconstructionObligationLedgerService.js +19 -38
- package/dist/application/ReferenceSourceImport.js +19 -45
- package/dist/application/ReferenceSourceImportEntries.js +2 -4
- package/dist/application/ReferenceSourceImportPolicy.js +5 -32
- package/dist/application/ReferenceSourceImportTypes.js +0 -16
- package/dist/application/RuntimeExecutableDiagnostics.js +55 -29
- package/dist/application/SessionProviderRouter.js +2 -2
- package/dist/application/Setup.js +1 -3
- package/dist/application/SetupClientConfiguration.js +22 -93
- package/dist/application/SetupRegistrationEnvironment.js +0 -7
- package/dist/application/StoreFileLock.js +119 -0
- package/dist/application/TerminalRenderer.js +2 -3
- package/dist/application/Uninstall.js +9 -14
- package/dist/application/UnknownEvidence.js +1 -1
- package/dist/artifacts/ArtifactPaths.js +2 -5
- package/dist/artifacts/ArtifactProvider.js +36 -58
- package/dist/artifacts/DirectoryArtifactReader.js +13 -8
- package/dist/artifacts/MachOSliceArtifactReader.js +1 -5
- package/dist/artifacts/NativeDmgArtifactReader.js +11 -11
- package/dist/artifacts/NibArchive.js +269 -0
- package/dist/artifacts/SafeOutputTree.js +15 -24
- package/dist/browser/BrowserProcessStartup.js +1 -2
- package/dist/browser/CdpAuthorizedMainFrame.js +16 -0
- package/dist/browser/CdpBrowserProvider.js +3 -13
- package/dist/browser/CdpCanonicalJsonDigest.js +9 -0
- package/dist/browser/CdpCaptureDocuments.js +28 -76
- package/dist/browser/CdpCaptureEventBodyShapes.js +13 -33
- package/dist/browser/CdpCaptureEventHandlers.js +22 -87
- package/dist/browser/CdpCaptureEvents.js +2 -8
- package/dist/browser/CdpCaptureStorage.js +9 -20
- package/dist/browser/CdpCaptureStorageFingerprints.js +85 -98
- package/dist/browser/CdpCaptureValues.js +21 -21
- package/dist/browser/CdpConnection.js +10 -25
- package/dist/browser/CdpElectronInspection.js +26 -50
- package/dist/browser/CdpElectronProvider.js +10 -35
- package/dist/browser/CdpElectronScriptEvents.js +8 -16
- package/dist/browser/CdpElectronScripts.js +6 -35
- package/dist/browser/CdpElectronWorkers.js +6 -10
- package/dist/browser/CdpEndpoint.js +25 -41
- package/dist/browser/CdpObservationSession.js +14 -26
- package/dist/browser/CdpPageCapture.js +34 -48
- package/dist/browser/CdpPageCaptureScripts.js +1 -19
- package/dist/browser/CdpPageCaptureWorkers.js +6 -10
- package/dist/browser/CdpSafeMetadata.js +19 -22
- package/dist/browser/CdpScreenshot.js +3 -5
- package/dist/browser/CdpTargetSession.js +1 -2
- package/dist/browser/CdpWebMcpDiscovery.js +13 -22
- package/dist/browser/ElectronFileScope.js +8 -19
- package/dist/browser/JavaScriptRuntimeScope.js +9 -14
- package/dist/browser/PlaywrightBrowserScenarioProvider.js +31 -64
- package/dist/browser/PlaywrightElectronActiveActions.js +54 -69
- package/dist/browser/PlaywrightElectronActiveProvider.js +14 -34
- package/dist/browser/PlaywrightExecutionBoundary.js +16 -5
- package/dist/browser/PlaywrightScenarioActions.js +3 -7
- package/dist/browser/PlaywrightScenarioArtifacts.js +23 -92
- package/dist/browser/PlaywrightScenarioBrowser.js +3 -5
- package/dist/browser/PlaywrightScenarioEvents.js +45 -94
- package/dist/browser/PlaywrightScenarioSession.js +14 -30
- package/dist/browser/PngVisualDiff.js +22 -14
- package/dist/browser/SensitiveTextCapture.js +0 -17
- package/dist/browser/V8InspectorCaptureProjection.js +7 -8
- package/dist/browser/V8InspectorEndpoint.js +12 -14
- package/dist/browser/V8InspectorProvider.js +20 -61
- package/dist/browser/WebSourceMapFetcher.js +56 -176
- package/dist/catalogIdentity.js +0 -54
- package/dist/cli/artifactCommands.js +49 -77
- package/dist/cli/coreAnalysisCommands.js +83 -133
- package/dist/cli/javascriptApplicationAnalysis.js +1 -9
- package/dist/cli/managedCommands.js +5 -270
- package/dist/cli/setupCommands.js +3 -12
- package/dist/cli/utilityCommands.js +7 -41
- package/dist/cli.js +0 -2
- package/dist/cliApplicationCommands.js +42 -112
- package/dist/cliBrowserAdvancedCommands.js +10 -106
- package/dist/cliBrowserCommands.js +15 -127
- package/dist/cliBrowserContext.js +30 -0
- package/dist/cliCommandNames.js +4 -5
- package/dist/cliElectronCommands.js +8 -72
- package/dist/cliEvidenceCommands.js +8 -77
- package/dist/cliJavaScriptRuntimeCommands.js +9 -91
- package/dist/cliJsonInput.js +4 -14
- package/dist/cliObservationOptions.js +11 -96
- package/dist/cliPolicyCommands.js +2 -17
- package/dist/cliProcessCommands.js +3 -3
- package/dist/cliSetup.js +0 -13
- package/dist/config/browserScenario.js +2 -2
- package/dist/config/environment.js +0 -9
- package/dist/config/parseConfig.js +1 -33
- package/dist/config/parsers.js +6 -27
- package/dist/config/passiveObservation.js +7 -77
- package/dist/config/permissions.js +0 -7
- package/dist/contracts/analysisSearchContract.js +2 -5
- package/dist/contracts/applicationToolContracts.js +56 -109
- package/dist/contracts/applicationWorkflowInputContracts.js +27 -102
- package/dist/contracts/artifactComparisonExample.js +58 -60
- package/dist/contracts/artifactToolContracts.js +20 -67
- package/dist/contracts/browserScenarioToolContracts.js +6 -51
- package/dist/contracts/browserToolContracts.js +8 -73
- package/dist/contracts/electronToolContracts.js +8 -108
- package/dist/contracts/enhancedInputs.js +23 -54
- package/dist/contracts/errorSchemas.js +0 -1
- package/dist/contracts/functionComparisonExample.js +10 -24
- package/dist/contracts/functionInstructionContract.js +1 -3
- package/dist/contracts/functionWorkflowToolContracts.js +2 -2
- package/dist/contracts/hopperMemoryContracts.js +3 -3
- package/dist/contracts/investigationExamples.js +14 -11
- package/dist/contracts/javascriptApplicationWorkflowExamples.js +12 -19
- package/dist/contracts/javascriptRuntimeObservationToolContracts.js +2 -20
- package/dist/contracts/javascriptRuntimeReconciliationExample.js +45 -12
- package/dist/contracts/managedToolContracts.js +6 -95
- package/dist/contracts/managedWorkflowExamples.js +77 -128
- package/dist/contracts/managedWorkflowToolContracts.js +51 -77
- package/dist/contracts/nativeToolContracts.js +7 -11
- package/dist/contracts/processCaptureExample.js +2 -69
- package/dist/contracts/promptContracts.js +49 -67
- package/dist/contracts/providerSelection.js +0 -1
- package/dist/contracts/reconstructionReadinessExample.js +1 -6
- package/dist/contracts/sessionStatusContract.js +1 -17
- package/dist/contracts/sessionToolSchemas.js +6 -15
- package/dist/contracts/toolContractExamples.js +11 -11
- package/dist/contracts/toolContractHelpers.js +0 -4
- package/dist/contracts/toolContracts.js +60 -71
- package/dist/contracts/toolEffects.js +5 -13
- package/dist/contracts/toolOutputSchemaGroups.js +37 -91
- package/dist/contracts/toolOutputSchemaPrimitives.js +16 -56
- package/dist/contracts/toolSchemaMetadata.js +8 -19
- package/dist/contracts/unknownContractExamples.js +0 -2
- package/dist/domain/analysisErrorPresentation.js +46 -54
- package/dist/domain/analysisErrorProjection.js +28 -37
- package/dist/domain/analysisProfile.js +3 -31
- package/dist/domain/analysisSnapshot.js +3 -12
- package/dist/domain/androidApplication.js +15 -54
- package/dist/domain/appleApplication.js +24 -67
- package/dist/domain/artifactComparison.js +11 -29
- package/dist/domain/artifactGraph.js +14 -44
- package/dist/domain/artifactInspection.js +38 -69
- package/dist/domain/artifactInventoryEvidence.js +27 -21
- package/dist/domain/binaryTarget.js +2 -221
- package/dist/domain/browserCaptureComparison.js +47 -24
- package/dist/domain/browserObservation.js +28 -193
- package/dist/domain/browserObservationSchemas.js +5 -23
- package/dist/domain/browserScenario.js +11 -14
- package/dist/domain/browserScenarioCapture.js +11 -12
- package/dist/domain/browserScenarioCaptureValues.js +146 -84
- package/dist/domain/browserScenarioDiff.js +2 -59
- package/dist/domain/browserScenarioDiffEvidence.js +51 -0
- package/dist/domain/browserScenarioDiffValues.js +21 -38
- package/dist/domain/browserScenarioValues.js +80 -109
- package/dist/domain/browserSession.js +4 -7
- package/dist/domain/bundleComparison.js +6 -32
- package/dist/domain/bytecodeProvider.js +20 -19
- package/dist/domain/callPath.js +47 -167
- package/dist/domain/callPathSchemas.js +79 -0
- package/dist/domain/changedBehavior.js +34 -60
- package/dist/domain/completionLedgerGeneration.js +8 -14
- package/dist/domain/conformancePackage.js +126 -97
- package/dist/domain/conformanceReplay.js +36 -8
- package/dist/domain/conformanceTrustGate.js +23 -14
- package/dist/domain/customProtocolCapture.js +1 -1
- package/dist/domain/electronActiveObservation.js +70 -103
- package/dist/domain/electronObservation.js +14 -80
- package/dist/domain/electronStaticAnalysisBrowser.js +36 -46
- package/dist/domain/electronStaticAnalysisIpc.js +38 -14
- package/dist/domain/electronStaticAnalysisNative.js +1 -8
- package/dist/domain/electronStaticAnalysisValues.js +10 -17
- package/dist/domain/errors.js +33 -54
- package/dist/domain/eventProcessTree.js +20 -12
- package/dist/domain/evidence.js +2 -10
- package/dist/domain/evidenceBundle.js +3 -5
- package/dist/domain/evidenceCompletionLedger.js +6 -8
- package/dist/domain/functionComparison.js +4 -14
- package/dist/domain/functionComparisonNormalization.js +4 -11
- package/dist/domain/functionComparisonResults.js +25 -15
- package/dist/domain/functionComparisonSchemas.js +49 -33
- package/dist/domain/functionDossierEvidence.js +31 -156
- package/dist/domain/hopperStartupFailure.js +1 -1
- package/dist/domain/hopperValues.js +15 -136
- package/dist/domain/interfaceBuilderGraph.js +654 -0
- package/dist/domain/javascriptApplicationAnalysis.js +8 -112
- package/dist/domain/javascriptApplicationChangeGraph.js +22 -82
- package/dist/domain/javascriptApplicationEvidenceSchemas.js +59 -47
- package/dist/domain/javascriptApplicationGraph.js +3 -13
- package/dist/domain/javascriptApplicationGraphSchemas.js +12 -34
- package/dist/domain/javascriptApplicationVersionComparison.js +26 -30
- package/dist/domain/javascriptApplicationVersionComparisonSchemas.js +123 -68
- package/dist/domain/javascriptApplicationVersionItems.js +120 -53
- package/dist/domain/javascriptApplicationVersionKeys.js +24 -11
- package/dist/domain/javascriptAstFingerprint.js +25 -58
- package/dist/domain/javascriptAstValues.js +9 -0
- package/dist/domain/javascriptExportInstrumentation.js +2 -4
- package/dist/domain/javascriptExportShapeComparison.js +6 -7
- package/dist/domain/javascriptExportShapeComparisonSchemas.js +68 -75
- package/dist/domain/javascriptExportShapeSelection.js +17 -19
- package/dist/domain/javascriptFeatureSeed.js +20 -12
- package/dist/domain/javascriptFeatureTrace.js +13 -67
- package/dist/domain/javascriptFeatureTraceSchemas.js +24 -52
- package/dist/domain/javascriptFeatureTraversal.js +1 -44
- package/dist/domain/javascriptNativeHandoff.js +1 -1
- package/dist/domain/javascriptReplay.js +24 -41
- package/dist/domain/javascriptRuntimeLoadState.js +3 -8
- package/dist/domain/javascriptRuntimeObservation.js +42 -103
- package/dist/domain/javascriptRuntimeReconciliation.js +1 -3
- package/dist/domain/javascriptRuntimeReconciliationActive.js +8 -17
- package/dist/domain/javascriptRuntimeReconciliationGraph.js +10 -23
- package/dist/domain/javascriptRuntimeReconciliationMatching.js +18 -12
- package/dist/domain/javascriptRuntimeReconciliationParsing.js +16 -45
- package/dist/domain/javascriptRuntimeReconciliationResult.js +4 -5
- package/dist/domain/javascriptRuntimeReconciliationRuntime.js +8 -12
- package/dist/domain/javascriptRuntimeReconciliationSchemas.js +33 -48
- package/dist/domain/javascriptRuntimeStaticCandidates.js +3 -3
- package/dist/domain/javascriptSemanticAnalysis.js +12 -45
- package/dist/domain/javascriptSemanticAsyncEffects.js +1 -9
- package/dist/domain/javascriptSemanticCallResolution.js +6 -16
- package/dist/domain/javascriptSemanticCalls.js +5 -32
- package/dist/domain/javascriptSemanticChildProcesses.js +1 -11
- package/dist/domain/javascriptSemanticCoverage.js +11 -0
- package/dist/domain/javascriptSemanticDataEffectHelpers.js +1 -8
- package/dist/domain/javascriptSemanticDataEffects.js +1 -11
- package/dist/domain/javascriptSemanticFingerprints.js +3 -5
- package/dist/domain/javascriptSemanticGraphSchemas.js +25 -51
- package/dist/domain/javascriptSemanticGraphSerialization.js +2 -13
- package/dist/domain/javascriptSemanticIr.js +1 -29
- package/dist/domain/javascriptSemanticObjects.js +1 -5
- package/dist/domain/javascriptSemanticPrimitives.js +2 -9
- package/dist/domain/javascriptSemanticProjection.js +0 -18
- package/dist/domain/javascriptSemanticPromises.js +9 -16
- package/dist/domain/javascriptSemanticProvenance.js +16 -19
- package/dist/domain/javascriptSemanticQuery.js +17 -139
- package/dist/domain/javascriptSemanticQueryAssessment.js +9 -37
- package/dist/domain/javascriptSemanticQueryIdentity.js +2 -23
- package/dist/domain/javascriptSemanticQuerySchemas.js +14 -107
- package/dist/domain/javascriptSemanticResources.js +1 -6
- package/dist/domain/javascriptSemanticReturns.js +10 -27
- package/dist/domain/javascriptSemanticValueTypes.js +1 -0
- package/dist/domain/javascriptSemanticValues.js +44 -62
- package/dist/domain/javascriptStaticAnalysis.js +21 -43
- package/dist/domain/javascriptStaticAnalysisBundler.js +34 -93
- package/dist/domain/javascriptStaticAnalysisCalls.js +17 -16
- package/dist/domain/javascriptStaticAnalysisFindings.js +3 -19
- package/dist/domain/javascriptStaticAnalysisHelpers.js +47 -88
- package/dist/domain/javascriptStaticAnalysisState.js +1 -5
- package/dist/domain/javascriptStaticAnalysisTypes.js +1 -0
- package/dist/domain/jsonShape.js +7 -33
- package/dist/domain/localPath.js +7 -0
- package/dist/domain/managedApplicationGraph.js +9 -41
- package/dist/domain/managedApplicationGraphCoverage.js +24 -156
- package/dist/domain/managedApplicationGraphNodes.js +10 -13
- package/dist/domain/managedArtifact.js +14 -27
- package/dist/domain/managedMemberComparison.js +90 -92
- package/dist/domain/managedMemberComparisonCoverage.js +11 -33
- package/dist/domain/managedMemberComparisonItems.js +221 -0
- package/dist/domain/managedMemberComparisonMatch.js +8 -208
- package/dist/domain/managedNativeVerification.js +3 -6
- package/dist/domain/managedNativeVerificationMatch.js +55 -59
- package/dist/domain/managedNativeVerificationSchemas.js +83 -47
- package/dist/domain/managedReconstruction.js +19 -23
- package/dist/domain/managedRuntimeCorrelation.js +6 -9
- package/dist/domain/nativeApiBoundary.js +2 -7
- package/dist/domain/nativeInspection.js +0 -2
- package/dist/domain/nativeInvestigationGraph.js +351 -0
- package/dist/domain/nativeValueFlow.js +61 -0
- package/dist/domain/nodeRuntimeCharacterization.js +1 -5
- package/dist/domain/objcSwiftMetadata.js +254 -0
- package/dist/domain/peInspection.js +1 -1
- package/dist/domain/permissionPolicy.js +13 -0
- package/dist/domain/processCapture.js +76 -113
- package/dist/domain/processCaptureExample.js +68 -0
- package/dist/domain/processCaptureParsing.js +21 -0
- package/dist/domain/processCaptureReactiveSchema.js +68 -0
- package/dist/domain/processCaptureValidation.js +1 -7
- package/dist/domain/processComparison.js +3 -12
- package/dist/domain/processReactiveMatching.js +29 -50
- package/dist/domain/processReactiveRuntime.js +4 -8
- package/dist/domain/processReactiveScenario.js +28 -94
- package/dist/domain/processReactiveScenarioPreflight.js +5 -30
- package/dist/domain/processReactiveTransition.js +33 -18
- package/dist/domain/processScenario.js +56 -90
- package/dist/domain/processTraceComparison.js +0 -8
- package/dist/domain/processTraceEvaluation.js +14 -4
- package/dist/domain/processTraceSpecification.js +11 -17
- package/dist/domain/protocolCapture.js +3 -3
- package/dist/domain/reconstructionCoverage.js +62 -129
- package/dist/domain/reconstructionCoverageEvaluation.js +17 -17
- package/dist/domain/reconstructionObligationLedgerSchemas.js +45 -72
- package/dist/domain/reconstructionReadiness.js +1 -2
- package/dist/domain/reconstructionReadinessSchemas.js +36 -38
- package/dist/domain/reconstructionUnknowns.js +3 -3
- package/dist/domain/reconstructionVerification.js +13 -47
- package/dist/domain/reconstructionVerificationSchemas.js +50 -38
- package/dist/domain/referenceSourceGraph.js +53 -61
- package/dist/domain/referenceSourceImportParsing.js +1 -5
- package/dist/domain/replayMachine.js +19 -31
- package/dist/domain/replayMachineRun.js +15 -63
- package/dist/domain/replayMachineRuntime.js +41 -41
- package/dist/domain/replayMachineValues.js +84 -0
- package/dist/domain/residualUnknown.js +25 -30
- package/dist/domain/runtimeCharacterization.js +15 -16
- package/dist/domain/runtimeIdentification.js +48 -47
- package/dist/domain/sourceToBundleComparison.js +9 -85
- package/dist/domain/sourceToBundleComparisonSchemas.js +17 -42
- package/dist/domain/sourceToBundleSignals.js +4 -15
- package/dist/domain/staticRuntimeCorrelation.js +37 -49
- package/dist/domain/symbolAnalysis.js +10 -19
- package/dist/domain/unicodeCodePointOrder.js +12 -0
- package/dist/domain/webBundleAnalysis.js +70 -99
- package/dist/domain/webBundleAnalyzer.js +2 -4
- package/dist/domain/webBundleAnalyzerAst.js +0 -13
- package/dist/domain/webBundleAnalyzerInspection.js +26 -52
- package/dist/domain/webBundleAnalyzerResult.js +7 -24
- package/dist/domain/webCaptureDiff.js +33 -73
- package/dist/domain/webCaptureDiffSchemas.js +86 -0
- package/dist/domain/webContentArtifact.js +1 -10
- package/dist/domain/webMcpDiscovery.js +3 -14
- package/dist/domain/webScreenshot.js +58 -34
- package/dist/domain/zipPackageFormat.js +7 -0
- package/dist/dotnet/ManagedArtifactInspector.js +17 -50
- package/dist/dotnet/ManagedMemberInspector.js +27 -58
- package/dist/dotnet/ManagedMemberInspectorCore.js +14 -51
- package/dist/dotnet/ManagedMemberInstructionDecoder.js +2 -2
- package/dist/dotnet/ManagedMemberRows.js +16 -16
- package/dist/dotnet/ManagedMetadataHeaps.js +26 -8
- package/dist/dotnet/ManagedMetadataInventory.js +21 -30
- package/dist/dotnet/ManagedMetadataInventoryRows.js +57 -63
- package/dist/dotnet/ManagedMetadataLayout.js +3 -5
- package/dist/dotnet/ManagedMethodBodyReader.js +5 -30
- package/dist/dotnet/ManagedNativeBoundaryHelpers.js +19 -49
- package/dist/dotnet/ManagedNativeBoundaryInspector.js +13 -41
- package/dist/dotnet/ManagedPeReader.js +2 -2
- package/dist/dotnet/ManagedStaticProvider.js +13 -71
- package/dist/generatedMcpToolCatalog.js +1 -1
- package/dist/generatedPackageMetadata.js +1 -1
- package/dist/ghidra/GhidraAnalysisProfile.js +3 -8
- package/dist/ghidra/GhidraClient.js +4 -12
- package/dist/ghidra/GhidraClientWire.js +9 -5
- package/dist/ghidra/GhidraDefaults.js +0 -18
- package/dist/ghidra/GhidraDiagnostics.js +0 -2
- package/dist/ghidra/GhidraDoctor.js +16 -12
- package/dist/ghidra/GhidraFunctionValues.js +65 -108
- package/dist/ghidra/GhidraInstallation.js +98 -42
- package/dist/ghidra/GhidraInventoryValues.js +16 -85
- package/dist/ghidra/GhidraLauncher.js +0 -8
- package/dist/ghidra/GhidraProvider.js +15 -22
- package/dist/ghidra/GhidraProviderCapabilities.js +6 -47
- package/dist/ghidra/GhidraRequestQueue.js +6 -30
- package/dist/ghidra/GhidraResponseBuffer.js +1 -7
- package/dist/ghidra/GhidraSessionValues.js +0 -2
- package/dist/ghidra/GhidraTransport.js +4 -7
- package/dist/ghidra/protocol.js +2 -2
- package/dist/hopper/BridgeLauncher.js +112 -36
- package/dist/hopper/HopperAnalysisProfile.js +1 -1
- package/dist/hopper/HopperCleanup.js +6 -3
- package/dist/hopper/HopperClient.js +4 -7
- package/dist/hopper/HopperProcessDiagnostic.js +2 -2
- package/dist/hopper/HopperProvider.js +0 -16
- package/dist/hopper/HopperRequestQueue.js +21 -40
- package/dist/hopper/HopperResponseStream.js +1 -9
- package/dist/hopper/HopperSessionValues.js +3 -2
- package/dist/hopper/HopperTargetLease.js +119 -0
- package/dist/hopper/LinuxPrivateDisplayDiagnostic.js +24 -31
- package/dist/hopper/LinuxPrivateDisplayProbe.js +5 -16
- package/dist/hopper/protocol.js +6 -4
- package/dist/main/reload.js +0 -3
- package/dist/main/shutdown.js +1 -1
- package/dist/main/state.js +0 -9
- package/dist/main/transport.js +0 -5
- package/dist/mcpDoctor.js +25 -45
- package/dist/native/CommandRunner.js +18 -25
- package/dist/native/NativeMacOSProvider.js +13 -38
- package/dist/native/NativeMachoInspection.js +1 -1
- package/dist/process/BoundedFileBytes.js +17 -0
- package/dist/process/ExecFileOutput.js +11 -0
- package/dist/process/PendingOperations.js +8 -6
- package/dist/process/ProcessOwnership.js +3 -2
- package/dist/process/ProcessOwnershipObservation.js +0 -1
- package/dist/process/ProviderProcess.js +7 -28
- package/dist/reference/ReferenceSourceReader.js +8 -24
- package/dist/reference/ReferenceSourceReaderEntries.js +11 -39
- package/dist/reference/ReferenceSourceReaderFile.js +13 -31
- package/dist/reference/ReferenceSourceReaderPaths.js +3 -18
- package/dist/reference/ReferenceSourceReaderValidate.js +3 -6
- package/dist/replay/JavaScriptReplayWorker.js +3 -5
- package/dist/replay/LinuxJavaScriptReplayRunner.js +33 -29
- package/dist/replay/LinuxJavaScriptReplaySandbox.js +0 -19
- package/dist/replay/LinuxRuntimeClosure.js +1 -3
- package/dist/replay/ReplayOutcome.js +1 -3
- package/dist/replay/ReplayProcessLifecycle.js +32 -7
- package/dist/replay/ReplaySeccompFile.js +29 -0
- package/dist/replay/ReplayWorkerProtocol.js +0 -2
- package/dist/replay/SystemJavaScriptReplayHost.js +45 -74
- package/dist/server/ProcessCaptureElicitation.js +4 -8
- package/dist/server/createServer.js +6 -44
- package/dist/server/promptCompletion.js +37 -61
- package/dist/server/recordDerivedEvidence.js +1 -1
- package/dist/server/registerApplicationTools/characterization.js +4 -8
- package/dist/server/registerApplicationTools/compareExportShapes.js +5 -10
- package/dist/server/registerApplicationTools/compareSourceToBundle.js +6 -10
- package/dist/server/registerApplicationTools/compareVersions.js +5 -10
- package/dist/server/registerApplicationTools/controlledReplay.js +3 -5
- package/dist/server/registerApplicationTools/coverage.js +6 -71
- package/dist/server/registerApplicationTools/helpers.js +1 -13
- package/dist/server/registerApplicationTools/obligationLedger.js +3 -2
- package/dist/server/registerApplicationTools/traceFeature.js +5 -9
- package/dist/server/registerApplicationTools/traceSemantics.js +5 -8
- package/dist/server/registerApplicationTools.js +0 -2
- package/dist/server/registerArtifactComparisonTool.js +23 -27
- package/dist/server/registerBrowserScenarioTool.js +4 -4
- package/dist/server/registerBrowserTools.js +5 -8
- package/dist/server/registerBundleComparisonTool.js +5 -7
- package/dist/server/registerCloseLifecycleTool.js +2 -16
- package/dist/server/registerElectronTools.js +10 -29
- package/dist/server/registerEnhancedTools.js +10 -11
- package/dist/server/registerEvidenceTools.js +15 -22
- package/dist/server/registerFunctionComparisonTool.js +30 -25
- package/dist/server/registerInvestigationTools/helpers.js +3 -32
- package/dist/server/registerInvestigationTools.js +20 -116
- package/dist/server/registerJavaScriptRuntimeObservationTools.js +6 -4
- package/dist/server/registerManagedWorkflowTools/compareManagedMembers.js +15 -17
- package/dist/server/registerManagedWorkflowTools/evidence.js +19 -35
- package/dist/server/registerManagedWorkflowTools/importManagedReconstruction.js +3 -8
- package/dist/server/registerManagedWorkflowTools/planManagedRuntimeCorrelation.js +3 -8
- package/dist/server/registerManagedWorkflowTools/projectManagedApplicationGraph.js +10 -14
- package/dist/server/registerManagedWorkflowTools/verifyManagedNativeBoundaries.js +9 -15
- package/dist/server/registerOfficialTools.js +1 -43
- package/dist/server/registerProcessComparisonTool.js +33 -23
- package/dist/server/registerPrompts.js +19 -17
- package/dist/server/registerSessionRecordTools.js +10 -156
- package/dist/server/registerSessionStatusTool.js +6 -69
- package/dist/server/registerSessionTools.js +10 -51
- package/dist/server/sessionAvailabilityPolicy.js +0 -2
- package/dist/server/sessionEvidence.js +9 -15
- package/dist/server/sessionToolPolicies.js +0 -8
- package/dist/server/toolResult.js +14 -50
- package/dist/serverIdentity.js +0 -20
- package/install.sh +1 -1
- package/package.json +11 -7
- package/scripts/electron-active-hook.cjs +23 -55
- package/scripts/hopper-demo-x11.py +13 -32
- package/skills/reverse-engineer-anything/SKILL.md +47 -12
- package/skills/reverse-engineer-anything/references/evidence-workflows.md +6 -4
- package/skills/reverse-engineer-anything/references/javascript-applications.md +13 -13
- package/skills/reverse-engineer-anything/references/native-and-artifacts.md +12 -8
- package/dist/application/ApplicationWorkflowEvidenceResolver.js +0 -188
- package/dist/application/BoundedJsonFiles.js +0 -86
- package/dist/application/CrossVersionInventory.js +0 -129
- package/dist/application/CrossVersionInvestigation.js +0 -301
- package/dist/application/CrossVersionInvestigationCollections.js +0 -23
- package/dist/application/CrossVersionInvestigationEvidence.js +0 -64
- package/dist/application/CrossVersionInvestigationReplay.js +0 -170
- package/dist/application/DeferredFileAuthorization.js +0 -61
- package/dist/application/DoctorProjection.js +0 -43
- package/dist/application/EnhancedToolPagination.js +0 -22
- package/dist/application/EvidenceReferenceResolver.js +0 -26
- package/dist/application/InvestigationWorkspaceStore.js +0 -204
- package/dist/application/ProcessPairedExperiment.js +0 -72
- package/dist/application/ReconstructionCoverageWorkspaceStore.js +0 -31
- package/dist/application/ReconstructionReadinessService.js +0 -48
- package/dist/cliInvestigationCommands.js +0 -173
- package/dist/domain/boundedCartesianProjection.js +0 -15
- package/dist/domain/investigationWorkspace.js +0 -347
- package/dist/domain/jsonLimits.js +0 -26
- package/dist/domain/knownPageCoverage.js +0 -29
- package/dist/domain/processPairedExperiment.js +0 -128
- package/dist/server/javascriptApplicationResult.js +0 -106
- package/dist/server/permissionFailure.js +0 -12
- package/dist/server/registerApplicationTools/readiness.js +0 -50
- package/dist/server/registerEvidenceResources.js +0 -315
- package/dist/server/registerJavaScriptApplicationGraphResource.js +0 -65
- package/dist/server/registerReconstructionObligationLedgerResource.js +0 -32
- package/dist/server/registerReconstructionReadinessResource.js +0 -32
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "rea-agents",
|
|
3
3
|
"mcpName": "io.github.morluto/rea",
|
|
4
|
-
"version": "3.1
|
|
4
|
+
"version": "3.2.1",
|
|
5
5
|
"description": "Reverse engineer anything from your terminal or agent with one CLI and MCP server.",
|
|
6
6
|
"license": "MIT",
|
|
7
7
|
"repository": {
|
|
@@ -89,17 +89,17 @@
|
|
|
89
89
|
"test:run": "node scripts/run-exclusive.mjs test vitest run",
|
|
90
90
|
"test:local": "node scripts/run-exclusive.mjs test vitest run --changed --passWithNoTests --maxWorkers=1",
|
|
91
91
|
"pretest:fast": "npm run build:cached",
|
|
92
|
-
"test:fast": "vitest run --project domain --project services --project adapters --project composition --project boundary --project mcp-boundary --project conformance",
|
|
92
|
+
"test:fast": "vitest run --project domain --project services --project adapters --project composition --project boundary --project process-boundary --project mcp-boundary --project conformance",
|
|
93
93
|
"pretest:boundary": "npm run build:cached",
|
|
94
|
-
"test:boundary": "vitest run --project boundary --project mcp-boundary --project process-global",
|
|
94
|
+
"test:boundary": "vitest run --project boundary --project process-boundary --project mcp-boundary --project process-global",
|
|
95
95
|
"pretest:mcp": "npm run build:cached",
|
|
96
96
|
"test:mcp": "vitest run --project mcp-boundary",
|
|
97
97
|
"pretest:acceptance": "npm run build:cached",
|
|
98
98
|
"test:acceptance": "vitest run --project acceptance",
|
|
99
99
|
"pretest:changed": "npm run build:cached",
|
|
100
|
-
"test:changed": "vitest run --project domain --project services --project adapters --project composition --project boundary --project mcp-boundary --project conformance --project evaluation --changed",
|
|
100
|
+
"test:changed": "vitest run --project domain --project services --project adapters --project composition --project boundary --project process-boundary --project mcp-boundary --project conformance --project evaluation --changed",
|
|
101
101
|
"pretest:integration": "npm run build:cached",
|
|
102
|
-
"test:integration": "vitest run --project boundary --project mcp-boundary --project process-global --project acceptance",
|
|
102
|
+
"test:integration": "vitest run --project boundary --project process-boundary --project mcp-boundary --project process-global --project acceptance",
|
|
103
103
|
"pretest:coverage": "npm run build:cached",
|
|
104
104
|
"test:coverage": "vitest run --coverage.enabled --coverage.provider=v8",
|
|
105
105
|
"test:ci": "npm run test:coverage -- --reporter=default --reporter=junit --outputFile.junit=test-results.xml",
|
|
@@ -110,13 +110,16 @@
|
|
|
110
110
|
"pretest:verbose": "npm run build:cached",
|
|
111
111
|
"test:verbose": "vitest run --reporter=verbose",
|
|
112
112
|
"pretest:watch": "npm run build:cached",
|
|
113
|
-
"test:watch": "vitest --project domain --project services --project adapters --project composition --project boundary --project mcp-boundary --project conformance --project evaluation --changed",
|
|
113
|
+
"test:watch": "vitest --project domain --project services --project adapters --project composition --project boundary --project process-boundary --project mcp-boundary --project conformance --project evaluation --changed",
|
|
114
114
|
"pretest:watch:all": "npm run build:cached",
|
|
115
115
|
"test:watch:all": "vitest --changed",
|
|
116
116
|
"typecheck": "tsc --noEmit",
|
|
117
117
|
"verify:test-temp-hygiene": "npm run build:cached && node scripts/verify-test-temp-hygiene.mjs",
|
|
118
118
|
"verify:hopper": "npm run verify:fixtures && npm run build:cached && node scripts/verify-real-hopper.mjs",
|
|
119
119
|
"verify:ghidra": "npm run build:cached && node scripts/verify-real-ghidra.mjs",
|
|
120
|
+
"verify:ghidra:aarch64-jump-table": "npm run build:cached && node scripts/verify-real-ghidra.mjs --aarch64-jump-table",
|
|
121
|
+
"verify:interface-builder": "npm run build:cached && node scripts/verify-interface-builder.mjs",
|
|
122
|
+
"verify:ghidra:cross-format": "npm run build:cached && node scripts/verify-real-ghidra.mjs --cross-format",
|
|
120
123
|
"verify:ghidra:windows": "npm run build:cached && npm run build:ghidra-windows-fixture && node scripts/verify-real-ghidra-windows.mjs",
|
|
121
124
|
"verify:browser": "npm run build:cached && node scripts/verify-real-browser.mjs",
|
|
122
125
|
"verify:electron": "npm run build:cached && node scripts/verify-real-electron.mjs",
|
|
@@ -200,6 +203,7 @@
|
|
|
200
203
|
"turbo": "2.10.5",
|
|
201
204
|
"typedoc": "0.28.20",
|
|
202
205
|
"typescript": "5.9.3",
|
|
203
|
-
"vitest": "4.1.10"
|
|
206
|
+
"vitest": "4.1.10",
|
|
207
|
+
"yaml": "2.9.0"
|
|
204
208
|
}
|
|
205
209
|
}
|
|
@@ -4,21 +4,6 @@ const {
|
|
|
4
4
|
createElectronActiveBoundaryPatches,
|
|
5
5
|
} = require("./electron-active-hook-boundaries.cjs");
|
|
6
6
|
|
|
7
|
-
const boundedEnvironmentNumber = (name, fallback) => {
|
|
8
|
-
const value = Number(process.env[name]);
|
|
9
|
-
return Number.isInteger(value)
|
|
10
|
-
? Math.min(20_000, Math.max(1, value))
|
|
11
|
-
: fallback;
|
|
12
|
-
};
|
|
13
|
-
|
|
14
|
-
const MAX_EVENT_NAME_LENGTH = 128;
|
|
15
|
-
const MAX_CHANNEL_LENGTH = 1_024;
|
|
16
|
-
const MAX_IDENTIFIER_LENGTH = 256;
|
|
17
|
-
const MAX_ARGUMENT_SHAPES = 32;
|
|
18
|
-
const maxEvents = boundedEnvironmentNumber(
|
|
19
|
-
"REA_ELECTRON_ACTIVE_MAX_RUNTIME_EVENTS",
|
|
20
|
-
5_000,
|
|
21
|
-
);
|
|
22
7
|
const ipcEventKinds = new Set([
|
|
23
8
|
"main-handler-invocation",
|
|
24
9
|
"main-event-invocation",
|
|
@@ -34,13 +19,9 @@ const events = [];
|
|
|
34
19
|
let observed = 0;
|
|
35
20
|
let observedIpc = 0;
|
|
36
21
|
let observedRuntime = 0;
|
|
37
|
-
let truncated = false;
|
|
38
22
|
let sequence = 0;
|
|
39
23
|
let correlationSequence = 0;
|
|
40
24
|
|
|
41
|
-
const boundedString = (value, maximum) =>
|
|
42
|
-
typeof value === "string" ? value.slice(0, maximum) : null;
|
|
43
|
-
|
|
44
25
|
const shape = (value, depth = 0) => {
|
|
45
26
|
if (depth > 2 || value === null) return value === null ? "null" : "nested";
|
|
46
27
|
if (Array.isArray(value)) return "array";
|
|
@@ -78,7 +59,7 @@ const isAllowedNavigation = (value) => {
|
|
|
78
59
|
|
|
79
60
|
const processType = () =>
|
|
80
61
|
typeof process.type === "string" && process.type.length > 0
|
|
81
|
-
? process.type
|
|
62
|
+
? process.type
|
|
82
63
|
: "main";
|
|
83
64
|
|
|
84
65
|
const identity = (value, prefix) => {
|
|
@@ -86,9 +67,9 @@ const identity = (value, prefix) => {
|
|
|
86
67
|
const id = value.id;
|
|
87
68
|
const processId = value.pid;
|
|
88
69
|
return typeof id === "string" || typeof id === "number"
|
|
89
|
-
? `${prefix}:${String(id)}
|
|
70
|
+
? `${prefix}:${String(id)}`
|
|
90
71
|
: typeof processId === "number"
|
|
91
|
-
? `${prefix}:pid:${String(processId)}
|
|
72
|
+
? `${prefix}:pid:${String(processId)}`
|
|
92
73
|
: null;
|
|
93
74
|
};
|
|
94
75
|
|
|
@@ -96,7 +77,7 @@ const frameIdentity = (event) => {
|
|
|
96
77
|
const frame = event?.senderFrame ?? event?.frame;
|
|
97
78
|
const id = frame?.frameTreeNodeId ?? frame?.routingId ?? frame?.id;
|
|
98
79
|
return typeof id === "string" || typeof id === "number"
|
|
99
|
-
? `frame:${String(id)}
|
|
80
|
+
? `frame:${String(id)}`
|
|
100
81
|
: null;
|
|
101
82
|
};
|
|
102
83
|
|
|
@@ -104,10 +85,6 @@ const record = (event) => {
|
|
|
104
85
|
observed += 1;
|
|
105
86
|
if (ipcEventKinds.has(event.kind)) observedIpc += 1;
|
|
106
87
|
else observedRuntime += 1;
|
|
107
|
-
if (events.length >= maxEvents) {
|
|
108
|
-
truncated = true;
|
|
109
|
-
return null;
|
|
110
|
-
}
|
|
111
88
|
const raw = {
|
|
112
89
|
sequence: ++sequence,
|
|
113
90
|
correlation_id:
|
|
@@ -117,14 +94,12 @@ const record = (event) => {
|
|
|
117
94
|
event: null,
|
|
118
95
|
phase: "observed",
|
|
119
96
|
channel: null,
|
|
120
|
-
channel_truncated: false,
|
|
121
97
|
direction: null,
|
|
122
98
|
sender: null,
|
|
123
99
|
receiver: null,
|
|
124
100
|
frame: null,
|
|
125
101
|
target: null,
|
|
126
102
|
argument_shapes: [],
|
|
127
|
-
argument_shapes_truncated: false,
|
|
128
103
|
result_shape: null,
|
|
129
104
|
process_type: processType(),
|
|
130
105
|
source: "electron-active-hook",
|
|
@@ -139,27 +114,24 @@ const record = (event) => {
|
|
|
139
114
|
: [];
|
|
140
115
|
events.push({
|
|
141
116
|
...raw,
|
|
142
|
-
correlation_id:
|
|
143
|
-
event:
|
|
144
|
-
channel:
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
.
|
|
156
|
-
|
|
157
|
-
raw.
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
process_type: boundedString(raw.process_type, MAX_IDENTIFIER_LENGTH),
|
|
161
|
-
artifact_path: boundedString(raw.artifact_path, 16_384),
|
|
162
|
-
artifact_sha256: boundedString(raw.artifact_sha256, 64),
|
|
117
|
+
correlation_id: raw.correlation_id,
|
|
118
|
+
event: typeof raw.event === "string" ? raw.event : null,
|
|
119
|
+
channel: typeof raw.channel === "string" ? raw.channel : null,
|
|
120
|
+
sender: typeof raw.sender === "string" ? raw.sender : null,
|
|
121
|
+
receiver: typeof raw.receiver === "string" ? raw.receiver : null,
|
|
122
|
+
frame: typeof raw.frame === "string" ? raw.frame : null,
|
|
123
|
+
target: typeof raw.target === "string" ? raw.target : null,
|
|
124
|
+
argument_shapes: argumentShapes.map((value) =>
|
|
125
|
+
typeof value === "string" ? value : "unknown",
|
|
126
|
+
),
|
|
127
|
+
result_shape:
|
|
128
|
+
typeof raw.result_shape === "string" ? raw.result_shape : null,
|
|
129
|
+
process_type:
|
|
130
|
+
typeof raw.process_type === "string" ? raw.process_type : null,
|
|
131
|
+
artifact_path:
|
|
132
|
+
typeof raw.artifact_path === "string" ? raw.artifact_path : null,
|
|
133
|
+
artifact_sha256:
|
|
134
|
+
typeof raw.artifact_sha256 === "string" ? raw.artifact_sha256 : null,
|
|
163
135
|
});
|
|
164
136
|
return events.at(-1);
|
|
165
137
|
};
|
|
@@ -173,10 +145,7 @@ const recordIpc = (kind, channel, args, details = {}) =>
|
|
|
173
145
|
return record({
|
|
174
146
|
kind,
|
|
175
147
|
channel: typeof channel === "string" ? channel : null,
|
|
176
|
-
argument_shapes: values
|
|
177
|
-
.slice(0, MAX_ARGUMENT_SHAPES)
|
|
178
|
-
.map((value) => shape(value)),
|
|
179
|
-
argument_shapes_truncated: values.length > MAX_ARGUMENT_SHAPES,
|
|
148
|
+
argument_shapes: values.map((value) => shape(value)),
|
|
180
149
|
...details,
|
|
181
150
|
});
|
|
182
151
|
})();
|
|
@@ -496,6 +465,5 @@ globalThis.__reaElectronActiveSnapshot = () => ({
|
|
|
496
465
|
observed,
|
|
497
466
|
observed_ipc: observedIpc,
|
|
498
467
|
observed_runtime: observedRuntime,
|
|
499
|
-
truncated,
|
|
500
468
|
hook_error: globalThis.__reaElectronActiveHookError === true,
|
|
501
469
|
});
|
|
@@ -36,11 +36,8 @@ UNEXPECTED_DISPLAY_GEOMETRY = 77
|
|
|
36
36
|
X11_INPUT_FAILED = 78
|
|
37
37
|
RUNTIME_DEPENDENCY_UNAVAILABLE = 79
|
|
38
38
|
X11_SOCKET_DIRECTORY_UNUSABLE = 80
|
|
39
|
-
DIAGNOSTIC_PREFIX = "
|
|
39
|
+
DIAGNOSTIC_PREFIX = "REA_X11_DIAGNOSTIC="
|
|
40
40
|
X11_SOCKET_DIRECTORY = Path("/tmp/.X11-unix")
|
|
41
|
-
XVFB_STDERR_LIMIT = 16 * 1024
|
|
42
|
-
|
|
43
|
-
|
|
44
41
|
class AdapterFailure(Exception):
|
|
45
42
|
def __init__(
|
|
46
43
|
self,
|
|
@@ -48,20 +45,18 @@ class AdapterFailure(Exception):
|
|
|
48
45
|
reason: str,
|
|
49
46
|
message: str,
|
|
50
47
|
stderr_bytes: int = 0,
|
|
51
|
-
stderr_truncated: bool = False,
|
|
52
48
|
) -> None:
|
|
53
49
|
super().__init__(message)
|
|
54
50
|
self.code = code
|
|
55
51
|
self.reason = reason
|
|
56
52
|
self.stderr_bytes = stderr_bytes
|
|
57
|
-
self.stderr_truncated = stderr_truncated
|
|
58
53
|
|
|
59
|
-
def with_stderr(self, capture:
|
|
60
|
-
self.stderr_bytes,
|
|
54
|
+
def with_stderr(self, capture: CapturedStderr) -> AdapterFailure:
|
|
55
|
+
self.stderr_bytes, _ = capture.snapshot()
|
|
61
56
|
return self
|
|
62
57
|
|
|
63
58
|
|
|
64
|
-
class
|
|
59
|
+
class CapturedStderr:
|
|
65
60
|
def __init__(self, stream: object) -> None:
|
|
66
61
|
self._stream = stream
|
|
67
62
|
self._retained = bytearray()
|
|
@@ -77,15 +72,13 @@ class BoundedStderr:
|
|
|
77
72
|
return
|
|
78
73
|
with self._lock:
|
|
79
74
|
self._bytes += len(chunk)
|
|
80
|
-
|
|
81
|
-
if remaining > 0:
|
|
82
|
-
self._retained.extend(chunk[:remaining])
|
|
75
|
+
self._retained.extend(chunk)
|
|
83
76
|
|
|
84
|
-
def snapshot(self) -> tuple[int,
|
|
77
|
+
def snapshot(self) -> tuple[int, str]:
|
|
85
78
|
with self._lock:
|
|
86
79
|
retained = bytes(self._retained)
|
|
87
80
|
total = self._bytes
|
|
88
|
-
return total,
|
|
81
|
+
return total, retained.decode("utf-8", "replace")
|
|
89
82
|
|
|
90
83
|
def close(self) -> None:
|
|
91
84
|
self._thread.join(timeout=0.5)
|
|
@@ -284,14 +277,11 @@ def diagnostic(
|
|
|
284
277
|
operation: str,
|
|
285
278
|
status: str,
|
|
286
279
|
failure: AdapterFailure | None = None,
|
|
287
|
-
capture:
|
|
280
|
+
capture: CapturedStderr | None = None,
|
|
288
281
|
) -> dict[str, object]:
|
|
289
282
|
mode, read_only, _ = socket_directory_state()
|
|
290
|
-
captured_bytes,
|
|
291
|
-
(0, False, "") if capture is None else capture.snapshot()
|
|
292
|
-
)
|
|
283
|
+
captured_bytes, _ = (0, "") if capture is None else capture.snapshot()
|
|
293
284
|
return {
|
|
294
|
-
"schema_version": 1,
|
|
295
285
|
"component": "hopper_private_display",
|
|
296
286
|
"operation": operation,
|
|
297
287
|
"status": status,
|
|
@@ -308,9 +298,6 @@ def diagnostic(
|
|
|
308
298
|
"xvfb_stderr_bytes": captured_bytes
|
|
309
299
|
if failure is None
|
|
310
300
|
else failure.stderr_bytes,
|
|
311
|
-
"xvfb_stderr_truncated": captured_truncated
|
|
312
|
-
if failure is None
|
|
313
|
-
else failure.stderr_truncated,
|
|
314
301
|
}
|
|
315
302
|
|
|
316
303
|
|
|
@@ -441,8 +428,8 @@ def authorize_display(
|
|
|
441
428
|
) from error
|
|
442
429
|
|
|
443
430
|
|
|
444
|
-
def classify_xvfb_failure(capture:
|
|
445
|
-
stderr_bytes,
|
|
431
|
+
def classify_xvfb_failure(capture: CapturedStderr) -> AdapterFailure:
|
|
432
|
+
stderr_bytes, text = capture.snapshot()
|
|
446
433
|
mode, read_only, directory = socket_directory_state()
|
|
447
434
|
if read_only is True:
|
|
448
435
|
return AdapterFailure(
|
|
@@ -450,7 +437,6 @@ def classify_xvfb_failure(capture: BoundedStderr) -> AdapterFailure:
|
|
|
450
437
|
"socket_directory_read_only",
|
|
451
438
|
"X11 socket directory is read-only",
|
|
452
439
|
stderr_bytes,
|
|
453
|
-
stderr_truncated,
|
|
454
440
|
)
|
|
455
441
|
if directory and mode != "1777":
|
|
456
442
|
return AdapterFailure(
|
|
@@ -458,7 +444,6 @@ def classify_xvfb_failure(capture: BoundedStderr) -> AdapterFailure:
|
|
|
458
444
|
"socket_directory_mode",
|
|
459
445
|
"X11 socket directory mode is not 1777",
|
|
460
446
|
stderr_bytes,
|
|
461
|
-
stderr_truncated,
|
|
462
447
|
)
|
|
463
448
|
if mode is not None and not directory:
|
|
464
449
|
return AdapterFailure(
|
|
@@ -466,7 +451,6 @@ def classify_xvfb_failure(capture: BoundedStderr) -> AdapterFailure:
|
|
|
466
451
|
"socket_directory_type",
|
|
467
452
|
"X11 socket path is not a directory",
|
|
468
453
|
stderr_bytes,
|
|
469
|
-
stderr_truncated,
|
|
470
454
|
)
|
|
471
455
|
lowered = text.lower()
|
|
472
456
|
if "error while loading shared libraries" in lowered:
|
|
@@ -475,7 +459,6 @@ def classify_xvfb_failure(capture: BoundedStderr) -> AdapterFailure:
|
|
|
475
459
|
"missing_library",
|
|
476
460
|
"Xvfb shared library unavailable",
|
|
477
461
|
stderr_bytes,
|
|
478
|
-
stderr_truncated,
|
|
479
462
|
)
|
|
480
463
|
if any(
|
|
481
464
|
marker in lowered
|
|
@@ -490,21 +473,19 @@ def classify_xvfb_failure(capture: BoundedStderr) -> AdapterFailure:
|
|
|
490
473
|
"address_collision",
|
|
491
474
|
"private display address collision",
|
|
492
475
|
stderr_bytes,
|
|
493
|
-
stderr_truncated,
|
|
494
476
|
)
|
|
495
477
|
return AdapterFailure(
|
|
496
478
|
PRIVATE_DISPLAY_UNAVAILABLE,
|
|
497
479
|
"xvfb_startup_failed",
|
|
498
480
|
"private X display unavailable",
|
|
499
481
|
stderr_bytes,
|
|
500
|
-
stderr_truncated,
|
|
501
482
|
)
|
|
502
483
|
|
|
503
484
|
|
|
504
485
|
def start_xvfb(
|
|
505
486
|
session: Path,
|
|
506
487
|
args: argparse.Namespace,
|
|
507
|
-
) -> tuple[subprocess.Popen[bytes], str, Path,
|
|
488
|
+
) -> tuple[subprocess.Popen[bytes], str, Path, CapturedStderr]:
|
|
508
489
|
authority = session / "Xauthority"
|
|
509
490
|
collision: AdapterFailure | None = None
|
|
510
491
|
for _ in range(3):
|
|
@@ -551,7 +532,7 @@ def start_xvfb(
|
|
|
551
532
|
"xvfb_startup_failed",
|
|
552
533
|
"Xvfb stderr unavailable",
|
|
553
534
|
)
|
|
554
|
-
capture =
|
|
535
|
+
capture = CapturedStderr(process.stderr)
|
|
555
536
|
deadline = time.monotonic() + 2
|
|
556
537
|
socket = Path(f"/tmp/.X11-unix/X{display_number}")
|
|
557
538
|
while time.monotonic() < deadline and process.poll() is None:
|
|
@@ -3,8 +3,8 @@ name: reverse-engineer-anything
|
|
|
3
3
|
description: Reverse engineer native, managed, Electron/JavaScript, packaged, and browser applications with REA. Use shipped-artifact or approved runtime evidence to explain features, compare versions, decompile code, or guide a reconstruction. Skip REA for ordinary source-repository architecture analysis.
|
|
4
4
|
metadata:
|
|
5
5
|
version: "23"
|
|
6
|
-
tool_count:
|
|
7
|
-
catalog_digest: "
|
|
6
|
+
tool_count: 114
|
|
7
|
+
catalog_digest: "3e9ab4e05563ea2609b7cf4db67638a79cd8a74188c292718d99a63451d5b9db"
|
|
8
8
|
---
|
|
9
9
|
|
|
10
10
|
# REA
|
|
@@ -23,13 +23,14 @@ Choose the first tool from the target the user supplied. Do not call
|
|
|
23
23
|
- ASAR or extracted JavaScript/Electron tree:
|
|
24
24
|
`analyze_javascript_application`.
|
|
25
25
|
- Archive, application package, ZIP/APK/IPA/MSIX/AppX, or DMG:
|
|
26
|
-
`open_binary` with the supplied local path
|
|
27
|
-
|
|
26
|
+
`open_binary` with the supplied local path; use `inspect_artifact` when its
|
|
27
|
+
graph and findings help answer the question.
|
|
28
28
|
- Managed PE/CLI assembly: `inspect_managed_artifact`.
|
|
29
29
|
- User-owned browser page already open: `list_browser_targets`.
|
|
30
30
|
- User-owned Electron runtime already open: `list_electron_targets`.
|
|
31
31
|
- Native executable, library, or analysis database: `open_binary`, then
|
|
32
|
-
`binary_overview
|
|
32
|
+
use focused analysis tools directly; call `binary_overview` when metadata or
|
|
33
|
+
inventory context is useful.
|
|
33
34
|
|
|
34
35
|
If the app is missing, ask which app to inspect. Resolve a human-readable app
|
|
35
36
|
name to one clear installed artifact when possible; ask only when matches are
|
|
@@ -43,16 +44,48 @@ is unavailable.
|
|
|
43
44
|
|
|
44
45
|
## Work summary-first
|
|
45
46
|
|
|
46
|
-
Start with the default
|
|
47
|
-
Do not
|
|
48
|
-
|
|
49
|
-
paged resource URIs returned by the summary and fetch only the relevant page.
|
|
47
|
+
Start with the default result and use its inline Evidence and graph context.
|
|
48
|
+
Do not repeat an identical tool call. Make a focused follow-up only when the
|
|
49
|
+
returned result leaves a specific question unanswered.
|
|
50
50
|
|
|
51
51
|
Every conclusion must distinguish observations, inferences, and unknowns. Cite
|
|
52
52
|
Evidence IDs, preserve limitations and incomplete coverage, and never imply
|
|
53
53
|
that static analysis observed execution. Ask for approval only where a tool or
|
|
54
54
|
policy requires it; approval never broadens a different authority boundary.
|
|
55
55
|
|
|
56
|
+
## Plan broader investigations
|
|
57
|
+
|
|
58
|
+
For requests that span multiple features or subsystems, use a staged workflow:
|
|
59
|
+
|
|
60
|
+
1. Turn the request into a checklist of questions and the evidence each answer
|
|
61
|
+
needs. Resolve target identity and constraints from the conversation and
|
|
62
|
+
workspace before asking for information again.
|
|
63
|
+
2. Inspect the current REA session, artifact identity, saved analysis database,
|
|
64
|
+
bookmarks, and prior evidence. Reuse matching state; do not open duplicate
|
|
65
|
+
sessions or repeat identical analysis.
|
|
66
|
+
3. Start with the smallest useful overview or inventory. Follow each question
|
|
67
|
+
from its entry point through relevant data and state changes to its result.
|
|
68
|
+
Batch related operations around a specific hypothesis, then expand only when
|
|
69
|
+
the returned evidence leaves a concrete gap.
|
|
70
|
+
4. Inspect relevant packaged resources and configuration alongside code when
|
|
71
|
+
they affect the question. Use format-aware inventory and parsers; do not
|
|
72
|
+
infer behavior from filenames, strings, or layout alone.
|
|
73
|
+
5. Corroborate a conclusion with the evidence type it requires. Use runtime
|
|
74
|
+
observation or controlled replay only when static evidence cannot answer the
|
|
75
|
+
question and the required authority is available.
|
|
76
|
+
6. Decompose work into independent questions. When parallel workers are
|
|
77
|
+
available and the questions do not depend on one another, assign distinct
|
|
78
|
+
scopes, point workers to existing evidence, and ask them to return sources,
|
|
79
|
+
conclusions, and unresolved gaps. Otherwise, work sequentially.
|
|
80
|
+
7. Keep a concise finding ledger linking each conclusion to Evidence IDs,
|
|
81
|
+
confidence/evidence type, search boundary, and remaining unknowns. Update
|
|
82
|
+
the shared index or investigation report so later passes can reuse results.
|
|
83
|
+
|
|
84
|
+
Before finishing, revisit the original checklist. Mark each question as
|
|
85
|
+
answered, partially answered, or unresolved based on its evidence; keep
|
|
86
|
+
bounded negative searches bounded, and do not describe a broad investigation
|
|
87
|
+
as complete while required questions remain open.
|
|
88
|
+
|
|
56
89
|
## Read only the relevant guide
|
|
57
90
|
|
|
58
91
|
- Native binaries, managed assemblies, archives, and extraction:
|
|
@@ -68,9 +101,11 @@ policy requires it; approval never broadens a different authority boundary.
|
|
|
68
101
|
|
|
69
102
|
## Readiness and setup
|
|
70
103
|
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
`npx -y rea-agents@latest doctor
|
|
104
|
+
The readiness rule is conditional: when REA tools are available and their
|
|
105
|
+
registration is not known to be stale, proceed directly; do not run `doctor`
|
|
106
|
+
before every task. Run `npx -y rea-agents@latest doctor` when the MCP server or
|
|
107
|
+
required provider is unavailable, registration is reported stale, or the user
|
|
108
|
+
asks for an environment diagnosis. Propose
|
|
74
109
|
`npx -y rea-agents@latest setup` only when doctor identifies an alignment or
|
|
75
110
|
provider problem. Show the exact plan and obtain approval before setup writes
|
|
76
111
|
configuration or installs Hopper. Restart the agent after MCP registration
|
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
# Evidence, comparison, and verification workflows
|
|
2
2
|
|
|
3
|
-
REA
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
3
|
+
REA returns Evidence with each result. Read that result directly, cite its
|
|
4
|
+
Evidence ID when another tool or your explanation needs a stable reference, and
|
|
5
|
+
preserve authority, limitations, coverage, and residual unknowns. If a result
|
|
6
|
+
is incomplete or paginated, continue only when the remaining data matters to
|
|
7
|
+
the task; do not fetch a bundle or resource merely to read a result already
|
|
8
|
+
returned inline.
|
|
7
9
|
|
|
8
10
|
Use `record_unknown` only with explicit approval and name the authority or
|
|
9
11
|
environment still required. Supply supporting and contradicting evidence IDs.
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
# JavaScript and Electron application artifacts
|
|
2
2
|
|
|
3
|
-
Use `analyze_javascript_application`
|
|
4
|
-
tree
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
3
|
+
Use `analyze_javascript_application` directly on the operator-supplied ASAR or
|
|
4
|
+
extracted tree. The complete result, graph, and Evidence context are returned
|
|
5
|
+
inline. Source-map contents are part of the static analysis. Start from its
|
|
6
|
+
findings, coverage, unknowns, and graph context, then make a focused follow-up
|
|
7
|
+
only when a specific question remains unanswered.
|
|
8
8
|
|
|
9
9
|
BrowserWindow preferences, preload and contextBridge surfaces, IPC
|
|
10
10
|
registrations, utility processes, and native binding requests are static syntax
|
|
@@ -15,8 +15,8 @@ registration, defaults, or policy enforcement from static analysis.
|
|
|
15
15
|
|
|
16
16
|
Use `trace_application_feature` on existing application Evidence for one
|
|
17
17
|
literal node ID, route, string, API, IPC channel, module, or native export.
|
|
18
|
-
Choose a direction and
|
|
19
|
-
|
|
18
|
+
Choose a direction and include the complete application Evidence inline. Include
|
|
19
|
+
Hopper or Ghidra Evidence only when its artifact digest matches exactly.
|
|
20
20
|
|
|
21
21
|
For version comparison, analyze each version once, then call
|
|
22
22
|
`compare_application_versions`. Accept only its digest, source-map, structural
|
|
@@ -27,9 +27,9 @@ opposite-side coverage; otherwise report unknown.
|
|
|
27
27
|
When the question asks how one exact exported callable's returned object shape
|
|
28
28
|
changed, analyze each version once and then call
|
|
29
29
|
`compare_javascript_export_shapes` with explicit module paths and export names.
|
|
30
|
-
|
|
31
|
-
only through the tool's unique exact literal discriminant. Cite the
|
|
32
|
-
Evidence and report JSON Pointer changes; dynamic values, ambiguous
|
|
33
|
-
and incomplete parent-property coverage stay unknown. This is static
|
|
34
|
-
not runtime behavior. Use `run_controlled_replay` separately only
|
|
35
|
-
needs approved runtime semantics.
|
|
30
|
+
Include the complete Evidence records from both analysis calls. Accept variant
|
|
31
|
+
pairing only through the tool's unique exact literal discriminant. Cite the
|
|
32
|
+
comparison Evidence and report JSON Pointer changes; dynamic values, ambiguous
|
|
33
|
+
variants, and incomplete parent-property coverage stay unknown. This is static
|
|
34
|
+
inference, not runtime behavior. Use `run_controlled_replay` separately only
|
|
35
|
+
when the user needs approved runtime semantics.
|
|
@@ -2,8 +2,9 @@
|
|
|
2
2
|
|
|
3
3
|
## Native targets
|
|
4
4
|
|
|
5
|
-
After `open_binary`, use
|
|
6
|
-
|
|
5
|
+
After `open_binary`, use focused search, procedure, or function tools directly.
|
|
6
|
+
Use `binary_overview` when target metadata or inventory context helps answer the
|
|
7
|
+
question. Prefer literal search, names, decompilation, callers, callees, and
|
|
7
8
|
cross-references. Addresses and recovered pseudocode are analysis observations,
|
|
8
9
|
not original source. Provider unavailability and unsupported metadata remain
|
|
9
10
|
unknown rather than false.
|
|
@@ -23,13 +24,16 @@ parser and must not become an implicit setup dependency.
|
|
|
23
24
|
|
|
24
25
|
## Packages and extraction
|
|
25
26
|
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
27
|
+
Use `inspect_artifact` for application bundles, archives, ZIP/APK/IPA/MSIX/AppX,
|
|
28
|
+
ASAR, or DMG inputs when the artifact graph and findings help answer the
|
|
29
|
+
question. It returns the complete artifact graph inline. Cite graph manifest
|
|
30
|
+
IDs when using them.
|
|
29
31
|
|
|
30
|
-
`extract_artifact`
|
|
31
|
-
and
|
|
32
|
-
encrypted entries are inventory facts, not extractable files.
|
|
32
|
+
Use `extract_artifact` when materialized files are needed. It takes no arguments
|
|
33
|
+
and materializes all regular files into a fresh temporary directory chosen by
|
|
34
|
+
REA. Symlinks and encrypted entries are inventory facts, not extractable files.
|
|
35
|
+
The operation still requires the filesystem-write permission grant; callers do
|
|
36
|
+
not choose the destination.
|
|
33
37
|
|
|
34
38
|
Native DMG traversal is macOS-only, read-only, and requires both operator policy
|
|
35
39
|
and `native_mount_approved: true`; without both, retain the root-hash-only result.
|