rea-agents 6.0.0 → 6.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +26 -18
- package/bridge/android/ReaJadxBridge.java +14 -5
- package/bridge/ghidra/ReaGhidraBridge.java +205 -51
- package/bridge/hopper_bridge.py +314 -127
- package/bridge/mitmproxy/capture.py +0 -2
- package/bridge/native/rea_lldb_tracer.py +630 -94
- package/bridge/process/ProcessRunTokenReader.swift +39 -5
- package/bridge/pwntools/recorded_crash_impl.py +4 -0
- package/dist/android/JadxConfiguration.js +274 -31
- package/dist/android/JadxMcpTransport.js +18 -2
- package/dist/android/JadxProtocol.js +6 -0
- package/dist/android/JadxProvider.js +76 -37
- package/dist/android/JadxSession.js +23 -4
- package/dist/application/AnalysisContextQueries.js +8 -35
- package/dist/application/AnalysisDocument.js +32 -0
- package/dist/application/AppBundleExecutable.js +67 -21
- package/dist/application/BinaryTargetResolver.js +5 -3
- package/dist/application/BrowserEvidence.js +3 -8
- package/dist/application/BrowserScenarioEvidence.js +2 -18
- package/dist/application/CallPathTracing.js +19 -3
- package/dist/application/CapabilityInventory.js +48 -11
- package/dist/application/ClientConfigurationDocument.js +917 -8
- package/dist/application/ClientRegistrationIdentity.js +26 -5
- package/dist/application/ClientRegistrationStatus.js +29 -14
- package/dist/application/DirectAnalysis.js +56 -51
- package/dist/application/DirectAnalysisCleanup.js +72 -0
- package/dist/application/DirectAnalysisStatus.js +4 -5
- package/dist/application/Doctor.js +19 -21
- package/dist/application/DoctorDiagnostics.js +1 -2
- package/dist/application/DoctorScope.js +25 -13
- package/dist/application/EnhancedLiteralTracing.js +22 -25
- package/dist/application/EnhancedTools.js +64 -17
- package/dist/application/EvidenceBundleFiles.js +30 -13
- package/dist/application/FunctionAnalysisEvidence.js +2 -3
- package/dist/application/InventoryProjectionEvidence.js +4 -3
- package/dist/application/InvestigationProviders.js +11 -2
- package/dist/application/JsonFiles.js +83 -28
- package/dist/application/LinuxHopper.js +9 -6
- package/dist/application/MacHopper.js +15 -18
- package/dist/application/ProcedureAddressResolution.js +11 -0
- package/dist/application/RealHopperAssertions.js +0 -11
- package/dist/application/ReconstructionCoverageService.js +7 -4
- package/dist/application/ReconstructionObligationCandidates.js +1 -1
- package/dist/application/ReconstructionObligationLedgerService.js +4 -3
- package/dist/application/ReferenceSourceImportEntries.js +1 -1
- package/dist/application/Setup.js +21 -17
- package/dist/application/SetupClientConfiguration.js +10 -15
- package/dist/application/SetupHost.js +21 -29
- package/dist/application/SetupPlan.js +11 -9
- package/dist/application/SupportedClients.js +34 -1
- package/dist/application/Uninstall.js +82 -29
- package/dist/application/Update.js +18 -3
- package/dist/application/UpdateMaintenance.js +7 -5
- package/dist/application/UpdateRuntime.js +57 -36
- package/dist/application/WebModuleTraceService.js +4 -2
- package/dist/application/WebNetworkCaptureService.js +4 -2
- package/dist/application/WebRuntimeService.js +5 -3
- package/dist/application/WebScriptExportService.js +32 -6
- package/dist/application/WebSourceLocationService.js +4 -2
- package/dist/application/WorkflowEvidence.js +105 -0
- package/dist/application/XrefsAddressResolution.js +45 -0
- package/dist/application/analysisView/AnalysisViewService.js +76 -0
- package/dist/application/binary/AnalysisClientCleanup.js +30 -5
- package/dist/application/binary/AnalysisProviderEvaluation.js +22 -7
- package/dist/application/binary/AnalysisProviderRegistry.js +4 -6
- package/dist/application/binary/AnalysisSnapshotCache.js +13 -14
- package/dist/application/binary/BinarySession.js +161 -93
- package/dist/application/binary/BinarySessionComposition.js +1 -3
- package/dist/application/binary/BinarySessionExecution.js +3 -5
- package/dist/application/binary/BinarySessionOpen.js +4 -4
- package/dist/application/binary/BinarySessionRecords.js +26 -4
- package/dist/application/binary/BinarySessionStatus.js +18 -7
- package/dist/application/binary/CompositeProvider.js +16 -17
- package/dist/application/binary/LazyAnalysisProvider.js +8 -5
- package/dist/application/binary/SessionProviderRouter.js +27 -135
- package/dist/application/binaryDiagnostics/BinaryLayoutService.js +4 -2
- package/dist/application/binaryDiagnostics/RecordedCrashService.js +4 -2
- package/dist/application/evm/EvmInterfaceService.js +4 -2
- package/dist/application/homebrew.js +48 -0
- package/dist/application/investigation/EvidenceLedger.js +21 -7
- package/dist/application/investigation/InvestigationRecords.js +8 -0
- package/dist/application/javascript/ElectronActiveEvidence.js +9 -13
- package/dist/application/javascript/JavaScriptAnalysisControl.js +34 -0
- package/dist/application/javascript/JavaScriptApplicationEvidence.js +21 -4
- package/dist/application/javascript/JavaScriptApplicationEvidenceGraph.js +19 -2
- package/dist/application/javascript/JavaScriptApplicationService.js +27 -15
- package/dist/application/javascript/JavaScriptApplicationWorkflowService.js +5 -5
- package/dist/application/javascript/JavaScriptArtifactAnalysis.js +10 -7
- package/dist/application/javascript/JavaScriptArtifactGraphBuilder.js +44 -10
- package/dist/application/javascript/JavaScriptArtifactGraphBundlers.js +11 -3
- package/dist/application/javascript/JavaScriptArtifactGraphContext.js +9 -0
- package/dist/application/javascript/JavaScriptArtifactGraphDocuments.js +8 -5
- package/dist/application/javascript/JavaScriptArtifactGraphFindings.js +12 -3
- package/dist/application/javascript/JavaScriptArtifactGraphStructure.js +0 -1
- package/dist/application/javascript/JavaScriptArtifactPathResolution.js +49 -19
- package/dist/application/javascript/JavaScriptArtifactReconstruction.js +56 -8
- package/dist/application/javascript/JavaScriptModuleRelationships.js +38 -9
- package/dist/application/javascript/JavaScriptRecoveryService.js +4 -2
- package/dist/application/javascript/JavaScriptRuntimeObservationService.js +6 -4
- package/dist/application/javascript/JavaScriptRuntimeReconciliationService.js +3 -3
- package/dist/application/javascript/JavaScriptSemanticGraphAsyncProjection.js +2 -3
- package/dist/application/javascript/JavaScriptSemanticGraphBuilder.js +63 -61
- package/dist/application/javascript/JavaScriptSemanticGraphChildProcessProjection.js +1 -2
- package/dist/application/javascript/JavaScriptSemanticGraphDataProjection.js +2 -3
- package/dist/application/javascript/JavaScriptSemanticGraphFlowProjection.js +1 -5
- package/dist/application/javascript/JavaScriptSemanticGraphObjectProjection.js +75 -46
- package/dist/application/javascript/JavaScriptSemanticGraphResourceProjection.js +2 -3
- package/dist/application/javascript/JavaScriptSemanticGraphValueProjection.js +64 -19
- package/dist/application/managed/ManagedApplicationGraphService.js +4 -3
- package/dist/application/managed/ManagedMemberComparisonService.js +9 -5
- package/dist/application/managed/ManagedNativeVerificationService.js +6 -4
- package/dist/application/managed/ManagedReconstructionService.js +4 -3
- package/dist/application/process/ProcessCli.js +25 -17
- package/dist/application/process/ProcessEvidence.js +4 -4
- package/dist/application/workflowInputError.js +18 -0
- package/dist/artifacts/ArtifactProvider.js +48 -13
- package/dist/artifacts/ArtifactReader.js +31 -0
- package/dist/artifacts/DirectoryArtifactReader.js +2 -1
- package/dist/artifacts/MachOSliceArtifactReader.js +106 -15
- package/dist/artifacts/NativeDmgArtifactReader.js +73 -21
- package/dist/artifacts/SafeOutputTree.js +16 -2
- package/dist/artifacts/ZipArtifactReader.js +11 -4
- package/dist/artifacts/apple/AppleAssetCatalogAnalysis.js +26 -5
- package/dist/artifacts/apple/DylibResolutionReader.js +17 -7
- package/dist/artifacts/apple/InterfaceBuilderAnalysis.js +176 -56
- package/dist/artifacts/apple/InterfaceBuilderDecodeBudget.js +195 -0
- package/dist/artifacts/apple/KeyedArchiveReader.js +55 -23
- package/dist/artifacts/apple/MachoLoadCommandReader.js +92 -31
- package/dist/artifacts/apple/NibArchive.js +81 -14
- package/dist/artifacts/apple/NibViewHierarchy.js +10 -3
- package/dist/artifacts/apple/PlistNumberLiterals.js +164 -0
- package/dist/artifacts/extraction/ArtifactExtraction.js +78 -21
- package/dist/artifacts/inventory/ArtifactGraphConstruction.js +79 -68
- package/dist/artifacts/inventory/ArtifactInventory.js +0 -1
- package/dist/artifacts/inventory/reader.js +3 -3
- package/dist/artifacts/inventory/scanCanonical.js +59 -38
- package/dist/artifacts/inventory/scanReader.js +5 -9
- package/dist/artifacts/javascript/JavaScriptArtifactFiles.js +6 -2
- package/dist/browser/BrowserScenarioPartialObservation.js +106 -0
- package/dist/browser/CdpBrowserProvider.js +2 -3
- package/dist/browser/CdpCaptureCompleteness.js +2 -0
- package/dist/browser/CdpCaptureEventHandlers.js +78 -15
- package/dist/browser/CdpCaptureEventTypes.js +5 -1
- package/dist/browser/CdpCaptureEvents.js +25 -1
- package/dist/browser/CdpCaptureValues.js +20 -0
- package/dist/browser/CdpConnection.js +30 -11
- package/dist/browser/CdpElectronProvider.js +0 -2
- package/dist/browser/CdpElectronScriptEvents.js +2 -8
- package/dist/browser/CdpElectronScripts.js +2 -3
- package/dist/browser/CdpOptionalCommand.js +2 -3
- package/dist/browser/CdpPageCapture.js +23 -1
- package/dist/browser/CdpPageCaptureScripts.js +2 -3
- package/dist/browser/CdpSafeMetadata.js +10 -10
- package/dist/browser/PlaywrightBrowserScenarioProvider.js +59 -44
- package/dist/browser/PlaywrightElectronActiveActions.js +34 -79
- package/dist/browser/PlaywrightElectronActiveProjection.js +141 -0
- package/dist/browser/PlaywrightElectronActiveProvider.js +133 -130
- package/dist/browser/PlaywrightScenarioArtifacts.js +1 -1
- package/dist/browser/PlaywrightScenarioBrowser.js +139 -39
- package/dist/browser/PlaywrightScenarioEvents.js +1 -1
- package/dist/browser/PlaywrightScenarioSession.js +39 -22
- package/dist/browser/WebSourceMapFetcher.js +426 -72
- package/dist/browser/assets/LocalWebScriptArtifacts.js +2 -2
- package/dist/browser/assets/ScriptCaptureAdapters.js +1 -1
- package/dist/browser/history/CaptureFailures.js +41 -1
- package/dist/browser/history/CaptureRelease.js +5 -0
- package/dist/browser/history/HarCaptureAdapter.js +3 -3
- package/dist/browser/history/HarJson.js +3 -2
- package/dist/browser/history/HistoricalCaptureDecoder.js +4 -2
- package/dist/browser/history/MitmproxyCaptureAdapter.js +4 -2
- package/dist/catalogIdentity.js +0 -1
- package/dist/cli/analysisSelector.js +23 -0
- package/dist/cli/analysisViewCommands.js +36 -0
- package/dist/cli/applicationCommands.js +2 -3
- package/dist/cli/artifactCommands.js +11 -12
- package/dist/cli/coreAnalysisCommands.js +3 -3
- package/dist/cli/coreBinaryCommands.js +100 -37
- package/dist/cli/coreNativeCommands.js +9 -10
- package/dist/cli/electronCommands.js +10 -9
- package/dist/cli/interactiveSetup.js +6 -6
- package/dist/cli/javascriptApplicationAnalysis.js +7 -3
- package/dist/cli/jsonOutput.js +4 -99
- package/dist/cli/managedCommands.js +7 -8
- package/dist/cli/nativeCallCommands.js +3 -5
- package/dist/cli/omittableDefaults.js +50 -0
- package/dist/cli/processCommands.js +3 -2
- package/dist/cli/setupCommands.js +16 -15
- package/dist/cli/utilityCommands.js +9 -9
- package/dist/cli/webRuntimeCommands.js +8 -8
- package/dist/cli.js +18 -9
- package/dist/cliBrowserScenarioCommands.js +2 -2
- package/dist/cliCommandNames.js +1 -1
- package/dist/cliJsonInput.js +24 -5
- package/dist/cliOutput.js +0 -38
- package/dist/composition/auxiliaryAnalysisProviders.js +27 -23
- package/dist/composition/binary.js +9 -9
- package/dist/composition/browserScenario.js +2 -1
- package/dist/composition/directAnalysis.js +20 -13
- package/dist/composition/electronScenario.js +1 -1
- package/dist/composition/optionalObservationProviders.js +12 -7
- package/dist/config/environment.js +10 -0
- package/dist/config/ghidraStartupTimeout.js +12 -0
- package/dist/config/homeDirectory.js +12 -0
- package/dist/config/mcpResponseBudget.js +30 -0
- package/dist/config/parseConfig.js +8 -3
- package/dist/config/parsers.js +19 -22
- package/dist/contracts/analysisViewToolContracts.js +56 -0
- package/dist/contracts/applicationToolContracts.js +5 -4
- package/dist/contracts/artifactComparisonExample.js +2 -2
- package/dist/contracts/artifactToolContracts.js +1 -1
- package/dist/contracts/browserScenarioToolContracts.js +1 -1
- package/dist/contracts/browserToolContracts.js +19 -15
- package/dist/contracts/enhancedInputs.js +7 -5
- package/dist/contracts/enhancedToolContracts.js +7 -6
- package/dist/contracts/evm/evmToolContracts.js +1 -1
- package/dist/contracts/functionWorkflowToolContracts.js +1 -1
- package/dist/contracts/hopperMemoryContracts.js +2 -5
- package/dist/contracts/inputSchemaPresentation.js +90 -0
- package/dist/contracts/investigationExamples.js +4 -3
- package/dist/contracts/javascript/electronToolContracts.js +2 -2
- package/dist/contracts/javascript/javascriptApplicationWorkflowExamples.js +0 -20
- package/dist/contracts/javascript/javascriptExportShapeComparisonExample.js +245 -0
- package/dist/contracts/javascript/javascriptRuntimeObservationToolContracts.js +1 -1
- package/dist/contracts/managed/managedToolContracts.js +7 -14
- package/dist/contracts/managed/managedWorkflowToolContracts.js +1 -1
- package/dist/contracts/mobileApplicationGraphExamples.js +3 -3
- package/dist/contracts/native/binaryDiagnosticsToolContracts.js +1 -1
- package/dist/contracts/native/nativeToolContracts.js +5 -3
- package/dist/contracts/officialToolContracts.js +16 -16
- package/dist/contracts/promptContracts.js +5 -5
- package/dist/contracts/providerSelection.js +1 -1
- package/dist/contracts/sessionLifecycleInputs.js +3 -7
- package/dist/contracts/sessionStatusContract.js +2 -4
- package/dist/contracts/sessionToolContracts.js +18 -8
- package/dist/contracts/sessionToolSchemas.js +3 -19
- package/dist/contracts/toolContractExamples.js +0 -1
- package/dist/contracts/toolContractHelpers.js +4 -1
- package/dist/contracts/toolContracts.js +2 -0
- package/dist/contracts/toolEffects.js +1 -1
- package/dist/contracts/toolOutputSchemaGroups.js +160 -115
- package/dist/contracts/toolOutputSchemaPrimitives.js +28 -20
- package/dist/contracts/toolSchemaMetadata.js +41 -33
- package/dist/contracts/webNetworkCaptureToolContracts.js +2 -2
- package/dist/contracts/webRuntimeToolContracts.js +1 -1
- package/dist/contracts/webScriptToolContracts.js +1 -1
- package/dist/doctorRuntime.js +7 -5
- package/dist/domain/analysisErrorBase.js +8 -3
- package/dist/domain/analysisErrorCore.js +6 -1
- package/dist/domain/analysisErrorPresentation.js +90 -20
- package/dist/domain/analysisErrorProjection.js +130 -32
- package/dist/domain/analysisSnapshot.js +29 -31
- package/dist/domain/analysisView/analysisView.js +243 -0
- package/dist/domain/analysisView/analysisViewCoverage.js +19 -0
- package/dist/domain/analysisView/binaryLayoutView.js +159 -0
- package/dist/domain/analysisView/javascriptApplicationView.js +238 -0
- package/dist/domain/android/androidAnalysis.js +2 -4
- package/dist/domain/android/androidApplication.js +18 -10
- package/dist/domain/apple/appleApplication.js +42 -15
- package/dist/domain/apple/dyldEnvironment.js +73 -0
- package/dist/domain/apple/dylibResolution.js +130 -12
- package/dist/domain/apple/dylibResolutionFindings.js +9 -7
- package/dist/domain/apple/interfaceBuilderGraph.js +25 -14
- package/dist/domain/apple/interfaceBuilderKeyedArchive.js +13 -3
- package/dist/domain/apple/keyedArchive.js +35 -3
- package/dist/domain/apple/machoContainer.js +54 -0
- package/dist/domain/apple/plistNumbers.js +76 -0
- package/dist/domain/artifactComparison.js +15 -6
- package/dist/domain/artifactGraph.js +16 -3
- package/dist/domain/artifactIdentity.js +29 -0
- package/dist/domain/artifactInventoryEvidence.js +28 -40
- package/dist/domain/artifactOperationError.js +3 -3
- package/dist/domain/artifactPartialObservation.js +1 -0
- package/dist/domain/artifactPathSyntax.js +49 -0
- package/dist/domain/binaryTarget.js +39 -13
- package/dist/domain/bridgeCandidateProjection.js +71 -0
- package/dist/domain/browserCaptureComparison.js +13 -49
- package/dist/domain/browserCompleteness.js +1 -0
- package/dist/domain/browserNetworkEvidence.js +10 -4
- package/dist/domain/browserObservation.js +0 -1
- package/dist/domain/browserObservationError.js +24 -5
- package/dist/domain/browserObservationSchemas.js +14 -3
- package/dist/domain/browserScenario.js +0 -1
- package/dist/domain/browserScenarioCapture.js +1 -2
- package/dist/domain/browserScenarioDiff.js +0 -2
- package/dist/domain/browserScenarioDiffEvidence.js +0 -12
- package/dist/domain/browserScenarioDiffValues.js +2 -2
- package/dist/domain/browserScenarioValues.js +5 -10
- package/dist/domain/bundleComparison.js +3 -2
- package/dist/domain/callPath.js +8 -9
- package/dist/domain/callPathSchemas.js +2 -2
- package/dist/domain/canonicalJsonDigestSteps.js +133 -0
- package/dist/domain/canonicalOrdering.js +9 -5
- package/dist/domain/changedBehavior.js +9 -9
- package/dist/domain/comparisonSourceEvidence.js +40 -0
- package/dist/domain/completionLedgerGeneration.js +2 -1
- package/dist/domain/configurationErrors.js +13 -1
- package/dist/domain/conformancePackage.js +4 -3
- package/dist/domain/evidence.js +65 -36
- package/dist/domain/evidenceBundle.js +47 -8
- package/dist/domain/evidenceCompletionLedger.js +2 -1
- package/dist/domain/evidenceErrors.js +12 -1
- package/dist/domain/explicitSensitiveFailure.js +17 -1
- package/dist/domain/firmware/firmwareAnalysis.js +6 -7
- package/dist/domain/functionComparison.js +4 -5
- package/dist/domain/functionComparisonDimensions.js +120 -87
- package/dist/domain/functionComparisonNormalization.js +23 -34
- package/dist/domain/functionComparisonResults.js +1 -4
- package/dist/domain/functionComparisonSchemas.js +2 -8
- package/dist/domain/functionDossierEvidence.js +2 -37
- package/dist/domain/hopperErrors.js +23 -2
- package/dist/domain/hopperValues.js +51 -8
- package/dist/domain/immutableJson.js +114 -0
- package/dist/domain/inputIssueProjection.js +3 -0
- package/dist/domain/javascript/electronActiveObservation.js +47 -64
- package/dist/domain/javascript/electronObservation.js +14 -3
- package/dist/domain/javascript/electronStaticAnalysisBrowser.js +10 -9
- package/dist/domain/javascript/electronStaticAnalysisIpc.js +2 -1
- package/dist/domain/javascript/electronStaticAnalysisNative.js +2 -1
- package/dist/domain/javascript/electronStaticAnalysisValues.js +6 -12
- package/dist/domain/javascript/javascriptApplicationAnalysis.js +71 -23
- package/dist/domain/javascript/javascriptApplicationEvidenceSchemas.js +2 -0
- package/dist/domain/javascript/javascriptApplicationGraph.js +39 -3
- package/dist/domain/javascript/javascriptApplicationGraphSchemas.js +9 -2
- package/dist/domain/javascript/javascriptApplicationVersionItems.js +5 -2
- package/dist/domain/javascript/javascriptApplicationVersionKeys.js +2 -1
- package/dist/domain/javascript/javascriptAstValues.js +20 -0
- package/dist/{application/javascript/JavaScriptReturnShapeProjection.js → domain/javascript/javascriptExportReturnShapeProjection.js} +4 -4
- package/dist/domain/javascript/javascriptExportShapeComparison.js +7 -1
- package/dist/domain/javascript/javascriptExportShapeComparisonIdentity.js +6 -1
- package/dist/domain/javascript/javascriptExportShapeComparisonSchemas.js +29 -1
- package/dist/domain/javascript/javascriptExportShapeSelection.js +5 -5
- package/dist/domain/javascript/javascriptExportShapeVariants.js +67 -14
- package/dist/domain/javascript/javascriptFeatureSeed.js +20 -0
- package/dist/domain/javascript/javascriptFeatureTraversal.js +0 -1
- package/dist/domain/javascript/javascriptNativeHandoff.js +1 -1
- package/dist/domain/javascript/javascriptRecovery.js +3 -8
- package/dist/domain/javascript/javascriptRuntimeLoadState.js +0 -1
- package/dist/domain/javascript/javascriptRuntimeObservation.js +10 -2
- package/dist/domain/javascript/javascriptRuntimeReconciliationMatching.js +1 -1
- package/dist/domain/javascript/javascriptRuntimeReconciliationParsing.js +3 -2
- package/dist/domain/javascript/javascriptRuntimeStaticCandidates.js +0 -1
- package/dist/domain/javascript/javascriptSemanticAnalysis.js +106 -5
- package/dist/domain/javascript/javascriptSemanticAsyncEffects.js +2 -1
- package/dist/domain/javascript/javascriptSemanticCalls.js +2 -1
- package/dist/domain/javascript/javascriptSemanticChildProcesses.js +2 -1
- package/dist/domain/javascript/javascriptSemanticCoverage.js +6 -5
- package/dist/domain/javascript/javascriptSemanticDataEffectHelpers.js +9 -17
- package/dist/domain/javascript/javascriptSemanticDataEffects.js +23 -6
- package/dist/domain/javascript/javascriptSemanticGraph.js +98 -43
- package/dist/domain/javascript/javascriptSemanticGraphSchemas.js +1 -0
- package/dist/domain/javascript/javascriptSemanticMemberMutations.js +77 -20
- package/dist/domain/javascript/javascriptSemanticMutationValues.js +21 -27
- package/dist/domain/javascript/javascriptSemanticObjects.js +83 -42
- package/dist/domain/javascript/javascriptSemanticPrimitives.js +18 -21
- package/dist/domain/javascript/javascriptSemanticProjection.js +2 -3
- package/dist/domain/javascript/javascriptSemanticPromises.js +2 -1
- package/dist/domain/javascript/javascriptSemanticQuerySchemas.js +8 -4
- package/dist/domain/javascript/javascriptSemanticResourceLimits.js +77 -0
- package/dist/domain/javascript/javascriptSemanticResources.js +1 -1
- package/dist/domain/javascript/javascriptSemanticReturns.js +32 -17
- package/dist/domain/javascript/javascriptSemanticSlots.js +72 -0
- package/dist/domain/javascript/javascriptSemanticValues.js +126 -61
- package/dist/domain/javascript/javascriptSourceMapPaths.js +104 -0
- package/dist/domain/javascript/javascriptSourceParser.js +6 -2
- package/dist/domain/javascript/javascriptStaticAnalysis.js +22 -17
- package/dist/domain/javascript/javascriptStaticAnalysisBundler.js +5 -3
- package/dist/domain/javascript/javascriptStaticAnalysisCalls.js +16 -5
- package/dist/domain/javascript/javascriptStaticAnalysisFindings.js +66 -7
- package/dist/domain/javascript/javascriptStaticAnalysisHelpers.js +28 -17
- package/dist/domain/javascript/javascriptStaticAnalysisState.js +3 -2
- package/dist/domain/javascript/sourceToBundleComparison.js +12 -3
- package/dist/domain/javascript/sourceToBundleSignals.js +47 -19
- package/dist/domain/jsonSerialization.js +109 -0
- package/dist/domain/jsonValue.js +90 -6
- package/dist/domain/localPath.js +6 -0
- package/dist/domain/managed/managedApplicationGraph.js +10 -10
- package/dist/domain/managed/managedArtifact.js +6 -4
- package/dist/domain/managed/managedInspectionEvidence.js +16 -0
- package/dist/domain/managed/managedMemberComparison.js +2 -9
- package/dist/domain/managed/managedMemberComparisonMatch.js +5 -9
- package/dist/domain/managed/managedNativeVerification.js +3 -11
- package/dist/domain/managed/managedNativeVerificationMatch.js +9 -3
- package/dist/domain/native/binaryLayout.js +2 -3
- package/dist/domain/native/fileOffsetPartialObservation.js +1 -0
- package/dist/domain/native/nativeApiBoundary.js +1 -1
- package/dist/domain/native/nativeCallObservation.js +37 -13
- package/dist/domain/native/nativeCallPartialObservation.js +33 -0
- package/dist/domain/native/nativeInstruction.js +7 -0
- package/dist/domain/native/recordedCrash.js +2 -3
- package/dist/domain/offsetDateTime.js +17 -0
- package/dist/domain/process/processCapture.js +21 -16
- package/dist/domain/process/processCaptureCoverage.js +67 -0
- package/dist/domain/process/processCaptureExample.js +2 -1
- package/dist/domain/process/processCaptureParsing.js +1 -34
- package/dist/domain/process/processCaptureValidation.js +81 -13
- package/dist/domain/process/processComparison.js +79 -26
- package/dist/domain/process/processObservation.js +10 -2
- package/dist/domain/process/processScenario.js +35 -12
- package/dist/domain/process/processTraceComparison.js +0 -2
- package/dist/domain/process/processTraceDimensionProjection.js +1 -1
- package/dist/domain/process/processTraceEvaluation.js +15 -11
- package/dist/domain/process/processTraceSpecification.js +3 -4
- package/dist/domain/propertyListKeys.js +1 -1
- package/dist/domain/propertyListXmlText.js +19 -0
- package/dist/domain/providerAdapterError.js +3 -1
- package/dist/domain/providerOperationHealth.js +54 -0
- package/dist/domain/reconstructionCoverage.js +5 -2
- package/dist/domain/reconstructionObligationLedgerSchemas.js +2 -1
- package/dist/domain/reconstructionReadinessSchemas.js +2 -1
- package/dist/domain/reconstructionVerification.js +9 -46
- package/dist/domain/reconstructionVerificationSchemas.js +4 -3
- package/dist/domain/referenceSourceGraph.js +20 -21
- package/dist/domain/staticRuntimeCorrelation.js +8 -45
- package/dist/domain/stringPatterns.js +6 -0
- package/dist/domain/swiftSymbolClassification.js +61 -0
- package/dist/domain/symbolAnalysis.js +66 -18
- package/dist/domain/webBundleAnalysis.js +20 -8
- package/dist/domain/webBundleAnalyzerInspection.js +13 -8
- package/dist/domain/webBundleAnalyzerResult.js +41 -2
- package/dist/domain/webCaptureDiff.js +0 -1
- package/dist/domain/webCaptureDiffSchemas.js +6 -3
- package/dist/domain/webEventListeners.js +3 -2
- package/dist/domain/webExecution.js +3 -2
- package/dist/domain/webRuntime.js +19 -7
- package/dist/domain/webScriptExport.js +1 -1
- package/dist/domain/webSourceLocation.js +1 -0
- package/dist/dotnet/ManagedArtifactInspector.js +2 -19
- package/dist/dotnet/ManagedMemberInspector.js +12 -18
- package/dist/dotnet/ManagedMemberInspectorCore.js +47 -44
- package/dist/dotnet/ManagedMemberRows.js +75 -62
- package/dist/dotnet/ManagedMetadataInventory.js +16 -22
- package/dist/dotnet/ManagedMethodBodyReader.js +4 -0
- package/dist/dotnet/ManagedNativeBoundaryHelpers.js +109 -94
- package/dist/dotnet/ManagedNativeBoundaryInspector.js +12 -21
- package/dist/dotnet/ManagedReaderFailure.js +16 -0
- package/dist/dotnet/ManagedStaticProvider.js +3 -5
- package/dist/evaluation/AgentEvaluationFixtures.js +250 -0
- package/dist/evaluation/AgentEvaluationReport.js +28 -0
- package/dist/evaluation/CodexAgentEval.js +12 -8
- package/dist/evaluation/KnownAnswerEvaluation.js +281 -0
- package/dist/evm/EvmoleInterfaceProvider.js +2 -1
- package/dist/firmware/FirmwareCommand.js +9 -5
- package/dist/firmware/FirmwareFiles.js +1 -1
- package/dist/firmware/FirmwareProvider.js +4 -4
- package/dist/generatedPackageMetadata.js +2 -2
- package/dist/ghidra/GhidraAnalysisProfile.js +7 -5
- package/dist/ghidra/GhidraClient.js +126 -34
- package/dist/ghidra/GhidraClientStartup.js +0 -2
- package/dist/ghidra/GhidraDiagnostics.js +7 -7
- package/dist/ghidra/GhidraDoctor.js +6 -5
- package/dist/ghidra/GhidraFunctionValues.js +13 -12
- package/dist/ghidra/GhidraInstallation.js +58 -33
- package/dist/ghidra/GhidraInventoryValues.js +14 -4
- package/dist/ghidra/GhidraJavaLaunch.js +66 -0
- package/dist/ghidra/GhidraLauncher.js +47 -22
- package/dist/ghidra/GhidraProvider.js +6 -2
- package/dist/ghidra/GhidraProviderCapabilities.js +20 -2
- package/dist/ghidra/GhidraProviderClient.js +36 -15
- package/dist/ghidra/GhidraSessionError.js +13 -7
- package/dist/ghidra/GhidraSessionRoot.js +39 -0
- package/dist/ghidra/GhidraTargetSnapshot.js +47 -12
- package/dist/ghidra/GhidraTransport.js +20 -0
- package/dist/ghidra/extensions/GhidraExtensions.js +17 -10
- package/dist/ghidra/extensions/nativeaot/NativeAotAdapter.js +8 -2
- package/dist/hopper/BridgeLauncher.js +65 -56
- package/dist/hopper/HopperAnalysisProfile.js +65 -12
- package/dist/hopper/HopperCleanup.js +63 -22
- package/dist/hopper/HopperClient.js +288 -59
- package/dist/hopper/HopperFileOffset.js +237 -0
- package/dist/hopper/HopperMachOImage.js +197 -0
- package/dist/hopper/HopperOperationStage.js +6 -0
- package/dist/hopper/HopperProvider.js +71 -19
- package/dist/hopper/HopperProviderCapabilities.js +19 -1
- package/dist/hopper/HopperRegexSearch.js +134 -0
- package/dist/hopper/HopperRegexWorker.js +27 -0
- package/dist/hopper/HopperRequestQueue.js +68 -19
- package/dist/hopper/HopperTargetLease.js +133 -49
- package/dist/hopper/LinuxPrivateDisplayProbe.js +6 -0
- package/dist/ida/IdaConfiguration.js +8 -3
- package/dist/ida/IdaInput.js +1 -7
- package/dist/ida/IdaMcpConnection.js +8 -4
- package/dist/ida/IdaOperationRunner.js +3 -3
- package/dist/ida/IdaProvider.js +8 -12
- package/dist/ida/IdaSessionClient.js +20 -18
- package/dist/ida/IdaWorkspace.js +12 -13
- package/dist/inspector/JavaScriptRuntimeScope.js +9 -1
- package/dist/inspector/V8InspectorCaptureProjection.js +9 -4
- package/dist/inspector/V8InspectorProvider.js +82 -36
- package/dist/javascript/recovery/WakaruCommand.js +7 -2
- package/dist/javascript/recovery/WakaruExecution.js +5 -2
- package/dist/javascript/sourceMaps/DecodedSourceMap.js +47 -0
- package/dist/javascript/sourceMaps/SourceMapCommand.js +16 -0
- package/dist/javascript/sourceMaps/SourceMapFormat.js +79 -31
- package/dist/javascript/sourceMaps/TraceSourceMap.js +14 -28
- package/dist/main/shutdown.js +11 -3
- package/dist/main/startup.js +9 -2
- package/dist/main/transport.js +22 -2
- package/dist/main.js +11 -18
- package/dist/mcpDoctor.js +62 -2
- package/dist/native/AppleDispatchCoverage.js +47 -6
- package/dist/native/AppleDispatchDecodeFacts.js +6 -0
- package/dist/native/AppleDispatchMetadata.js +6 -3
- package/dist/native/AppleMachoFixups.js +48 -24
- package/dist/native/AppleMachoSelection.js +48 -22
- package/dist/native/AppleObjcCategories.js +6 -2
- package/dist/native/AppleObjcDispatchFacets.js +5 -2
- package/dist/native/AppleObjcProperties.js +2 -1
- package/dist/native/AppleSwiftDispatchFacets.js +27 -21
- package/dist/native/AppleSwiftVtables.js +21 -15
- package/dist/native/CommandRunner.js +87 -88
- package/dist/native/LldbCallTracer.js +372 -103
- package/dist/native/LldbRetainedObservations.js +178 -0
- package/dist/native/NativeCallObservation.js +62 -3
- package/dist/native/NativeMacOSProvider.js +122 -31
- package/dist/native/NativeUiHelperRuntime.js +11 -2
- package/dist/native/NativeUiObservation.js +2 -2
- package/dist/native/SignatureTargetBinding.js +155 -0
- package/dist/native/parsers/lipo.js +71 -1
- package/dist/native/pwndbg/PwndbgCoreContext.js +25 -5
- package/dist/native/pwntools/PwntoolsDecoder.js +2 -1
- package/dist/native/pwntools/RecordedCrashStructureBindings.js +2 -0
- package/dist/process/DarwinProcessRunTokenReader.js +23 -10
- package/dist/process/ExecFileOutput.js +108 -6
- package/dist/process/OwnedCommand.js +7 -2
- package/dist/process/PrivateRuntimeRoot.js +10 -5
- package/dist/process/ProcessOwnership.js +204 -57
- package/dist/process/ProcessOwnershipObservation.js +60 -9
- package/dist/process/ProviderProcess.js +39 -10
- package/dist/process/capture/FilesystemSnapshot.js +50 -13
- package/dist/process/capture/ProcessCaptureError.js +15 -2
- package/dist/process/capture/ProcessCaptureLifecycle.js +235 -81
- package/dist/process/capture/ProcessFilesystemEffects.js +33 -3
- package/dist/process/capture/ProcessHarness.js +21 -25
- package/dist/process/capture/ProcessNormalization.js +20 -2
- package/dist/process/capture/ProcessSampling.js +25 -2
- package/dist/process/capture/TerminalRenderer.js +14 -0
- package/dist/process/snapshotEnvironment.js +14 -0
- package/dist/server/EvidenceMcpServer.js +157 -0
- package/dist/server/createServer.js +61 -41
- package/dist/server/mcpClientMetadata.js +12 -5
- package/dist/server/promptCompletion.js +3 -8
- package/dist/server/registerAnalysisViewTool.js +15 -0
- package/dist/server/registerAndroidTools.js +2 -5
- package/dist/server/registerApplicationTools/compareExportShapes.js +4 -5
- package/dist/server/registerApplicationTools/compareSourceToBundle.js +4 -5
- package/dist/server/registerApplicationTools/compareVersions.js +4 -5
- package/dist/server/registerApplicationTools/coverage.js +1 -2
- package/dist/server/registerApplicationTools/helpers.js +1 -4
- package/dist/server/registerApplicationTools/obligationLedger.js +4 -5
- package/dist/server/registerApplicationTools/projectMobileApplicationGraph.js +3 -4
- package/dist/server/registerApplicationTools/traceFeature.js +4 -5
- package/dist/server/registerApplicationTools/traceSemantics.js +4 -5
- package/dist/server/registerArtifactComparisonTool.js +13 -10
- package/dist/server/registerBinaryDiagnosticsTools.js +2 -5
- package/dist/server/registerBrowserScenarioTool.js +3 -6
- package/dist/server/registerBrowserTools.js +13 -18
- package/dist/server/registerBundleComparisonTool.js +5 -7
- package/dist/server/registerCloseLifecycleTool.js +9 -20
- package/dist/server/registerElectronTools.js +10 -15
- package/dist/server/registerEnhancedTools.js +36 -77
- package/dist/server/registerEvidenceTools.js +3 -6
- package/dist/server/registerEvmTools.js +2 -5
- package/dist/server/registerFirmwareTools.js +2 -5
- package/dist/server/registerFunctionComparisonTool.js +15 -12
- package/dist/server/registerInvestigationTools.js +16 -17
- package/dist/server/registerJavaScriptRecoveryTool.js +2 -5
- package/dist/server/registerJavaScriptRuntimeObservationTools.js +6 -8
- package/dist/server/registerManagedWorkflowTools/compareManagedMembers.js +5 -8
- package/dist/server/registerManagedWorkflowTools/importManagedReconstruction.js +4 -7
- package/dist/server/registerManagedWorkflowTools/projectManagedApplicationGraph.js +6 -9
- package/dist/server/registerManagedWorkflowTools/verifyManagedNativeBoundaries.js +6 -9
- package/dist/server/registerOfficialTools.js +4 -21
- package/dist/server/registerProcessComparisonTool.js +74 -48
- package/dist/server/registerRecordedCrashTools.js +2 -5
- package/dist/server/registerSessionRecordTools.js +19 -24
- package/dist/server/registerSessionStatusTool.js +19 -6
- package/dist/server/registerSessionTools.js +20 -18
- package/dist/server/registerWebModuleTool.js +2 -5
- package/dist/server/registerWebNetworkCaptureTool.js +2 -5
- package/dist/server/registerWebRuntimeTools.js +4 -9
- package/dist/server/registerWebScriptTool.js +2 -5
- package/dist/server/registerWebSourceLocationTool.js +2 -5
- package/dist/server/runDerivedOperation.js +15 -3
- package/dist/server/sessionAvailabilityPolicy.js +0 -1
- package/dist/server/toolRegistrationOptions.js +2 -2
- package/dist/server/toolResult.js +75 -51
- package/dist/server/toolResultEncoding.js +34 -0
- package/dist/windows/WindowsNativeLoader.js +1 -0
- package/dist/windows/WindowsOwnedProcess.js +60 -15
- package/dist/windows/WindowsPrivateRuntime.js +7 -8
- package/install.sh +1 -1
- package/native/windows/README.md +3 -1
- package/native/windows/build/manifest.json +2 -2
- package/native/windows/build/rea-windows-x64.node +0 -0
- package/package.json +44 -30
- package/scripts/electron-active-hook-boundaries.cjs +18 -20
- package/scripts/electron-active-hook.cjs +241 -37
- package/scripts/rea.mjs +3 -6
- package/skills/reverse-engineer-anything/SKILL.md +12 -3
- package/skills/reverse-engineer-anything/references/android-applications.md +6 -3
- package/skills/reverse-engineer-anything/references/evidence-workflows.md +8 -4
- package/skills/reverse-engineer-anything/references/javascript-applications.md +20 -3
- package/skills/reverse-engineer-anything/references/native-and-artifacts.md +9 -0
- package/dist/config.js +0 -1
- package/dist/contracts/browserCaptureToolInputSchema.js +0 -43
- package/dist/contracts/process/processCaptureExample.js +0 -2
- package/dist/contracts/toolOutputSchemas.js +0 -2
- package/dist/ghidra/GhidraDefaults.js +0 -2
- package/dist/main/reload.js +0 -12
- package/dist/main/state.js +0 -3
- package/dist/server/sessionToolPolicies.js +0 -2
|
@@ -16,9 +16,19 @@ const ipcEventKinds = new Set([
|
|
|
16
16
|
"ipc-renderer-post-message",
|
|
17
17
|
]);
|
|
18
18
|
const events = [];
|
|
19
|
+
// Budget serialized data and estimated retained object/array storage together.
|
|
20
|
+
const retentionBudgetBytes = 16 * 1024 * 1024;
|
|
21
|
+
const snapshotEnvelopeReserveBytes = 1024;
|
|
22
|
+
let estimatedRetainedBytes = 0;
|
|
23
|
+
let serializedBytes = 0;
|
|
19
24
|
let observed = 0;
|
|
20
25
|
let observedIpc = 0;
|
|
21
26
|
let observedRuntime = 0;
|
|
27
|
+
let dropped = 0;
|
|
28
|
+
let droppedIpc = 0;
|
|
29
|
+
let droppedRuntime = 0;
|
|
30
|
+
const droppedFamilies = new Map();
|
|
31
|
+
const droppedRoles = new Map();
|
|
22
32
|
let sequence = 0;
|
|
23
33
|
let correlationSequence = 0;
|
|
24
34
|
|
|
@@ -43,6 +53,73 @@ const shape = (value, depth = 0) => {
|
|
|
43
53
|
}
|
|
44
54
|
};
|
|
45
55
|
|
|
56
|
+
// Measure JSON strings without allocating an encoded copy of a caller value.
|
|
57
|
+
const jsonStringBytes = (value) => {
|
|
58
|
+
let bytes = 2;
|
|
59
|
+
for (let index = 0; index < value.length; index += 1) {
|
|
60
|
+
const code = value.charCodeAt(index);
|
|
61
|
+
if (code === 0x22 || code === 0x5c) bytes += 2;
|
|
62
|
+
else if (
|
|
63
|
+
code === 0x08 ||
|
|
64
|
+
code === 0x09 ||
|
|
65
|
+
code === 0x0a ||
|
|
66
|
+
code === 0x0c ||
|
|
67
|
+
code === 0x0d
|
|
68
|
+
)
|
|
69
|
+
bytes += 2;
|
|
70
|
+
else if (code <= 0x1f) bytes += 6;
|
|
71
|
+
else if (code >= 0xd800 && code <= 0xdbff) {
|
|
72
|
+
const next = value.charCodeAt(index + 1);
|
|
73
|
+
if (next >= 0xdc00 && next <= 0xdfff) {
|
|
74
|
+
bytes += 4;
|
|
75
|
+
index += 1;
|
|
76
|
+
} else bytes += 6;
|
|
77
|
+
} else if (code >= 0xdc00 && code <= 0xdfff) bytes += 6;
|
|
78
|
+
else if (code <= 0x7f) bytes += 1;
|
|
79
|
+
else if (code <= 0x7ff) bytes += 2;
|
|
80
|
+
else bytes += 3;
|
|
81
|
+
if (bytes > retentionBudgetBytes) return bytes;
|
|
82
|
+
}
|
|
83
|
+
return bytes;
|
|
84
|
+
};
|
|
85
|
+
|
|
86
|
+
const jsonScalarBytes = (value) => {
|
|
87
|
+
if (value === null) return 4;
|
|
88
|
+
if (typeof value === "string") return jsonStringBytes(value);
|
|
89
|
+
if (typeof value === "boolean") return value ? 4 : 5;
|
|
90
|
+
return String(value).length;
|
|
91
|
+
};
|
|
92
|
+
|
|
93
|
+
const eventFamily = (kind, processTypeValue) => {
|
|
94
|
+
if (kind === "preload" && processTypeValue === "main")
|
|
95
|
+
return "preload-configuration";
|
|
96
|
+
if (kind.startsWith("ipc-renderer"))
|
|
97
|
+
return processTypeValue === "renderer" ? "renderer-ipc" : "ipc";
|
|
98
|
+
return ipcEventKinds.has(kind) ? "ipc" : kind;
|
|
99
|
+
};
|
|
100
|
+
|
|
101
|
+
const noteDropped = (kind, processTypeValue, isIpc) => {
|
|
102
|
+
dropped += 1;
|
|
103
|
+
if (isIpc) droppedIpc += 1;
|
|
104
|
+
else droppedRuntime += 1;
|
|
105
|
+
const family = eventFamily(kind, processTypeValue);
|
|
106
|
+
droppedFamilies.set(family, (droppedFamilies.get(family) ?? 0) + 1);
|
|
107
|
+
if (typeof processTypeValue === "string")
|
|
108
|
+
droppedRoles.set(
|
|
109
|
+
processTypeValue,
|
|
110
|
+
(droppedRoles.get(processTypeValue) ?? 0) + 1,
|
|
111
|
+
);
|
|
112
|
+
if (kind === "window-lifecycle")
|
|
113
|
+
droppedRoles.set("window", (droppedRoles.get("window") ?? 0) + 1);
|
|
114
|
+
if (kind === "web-contents-lifecycle" || kind === "navigation")
|
|
115
|
+
droppedRoles.set(
|
|
116
|
+
"web_contents",
|
|
117
|
+
(droppedRoles.get("web_contents") ?? 0) + 1,
|
|
118
|
+
);
|
|
119
|
+
if (kind === "preload" && processTypeValue === "preload")
|
|
120
|
+
droppedRoles.set("preload", (droppedRoles.get("preload") ?? 0) + 1);
|
|
121
|
+
};
|
|
122
|
+
|
|
46
123
|
const isAllowedNavigation = (value) => {
|
|
47
124
|
if (typeof value !== "string") return true;
|
|
48
125
|
try {
|
|
@@ -83,7 +160,8 @@ const frameIdentity = (event) => {
|
|
|
83
160
|
|
|
84
161
|
const record = (event) => {
|
|
85
162
|
observed += 1;
|
|
86
|
-
|
|
163
|
+
const isIpc = ipcEventKinds.has(event.kind);
|
|
164
|
+
if (isIpc) observedIpc += 1;
|
|
87
165
|
else observedRuntime += 1;
|
|
88
166
|
const raw = {
|
|
89
167
|
sequence: ++sequence,
|
|
@@ -109,10 +187,15 @@ const record = (event) => {
|
|
|
109
187
|
error: false,
|
|
110
188
|
...event,
|
|
111
189
|
};
|
|
112
|
-
const
|
|
190
|
+
const shapeGroups = Array.isArray(raw.argument_shape_value_groups)
|
|
191
|
+
? raw.argument_shape_value_groups.filter(Array.isArray)
|
|
192
|
+
: Array.isArray(raw.argument_shape_values)
|
|
193
|
+
? [raw.argument_shape_values]
|
|
194
|
+
: [];
|
|
195
|
+
const existingShapes = Array.isArray(raw.argument_shapes)
|
|
113
196
|
? raw.argument_shapes
|
|
114
197
|
: [];
|
|
115
|
-
|
|
198
|
+
const retainedEvent = {
|
|
116
199
|
...raw,
|
|
117
200
|
correlation_id: raw.correlation_id,
|
|
118
201
|
event: typeof raw.event === "string" ? raw.event : null,
|
|
@@ -121,9 +204,7 @@ const record = (event) => {
|
|
|
121
204
|
receiver: typeof raw.receiver === "string" ? raw.receiver : null,
|
|
122
205
|
frame: typeof raw.frame === "string" ? raw.frame : null,
|
|
123
206
|
target: typeof raw.target === "string" ? raw.target : null,
|
|
124
|
-
argument_shapes:
|
|
125
|
-
typeof value === "string" ? value : "unknown",
|
|
126
|
-
),
|
|
207
|
+
argument_shapes: [],
|
|
127
208
|
result_shape:
|
|
128
209
|
typeof raw.result_shape === "string" ? raw.result_shape : null,
|
|
129
210
|
process_type:
|
|
@@ -132,8 +213,91 @@ const record = (event) => {
|
|
|
132
213
|
typeof raw.artifact_path === "string" ? raw.artifact_path : null,
|
|
133
214
|
artifact_sha256:
|
|
134
215
|
typeof raw.artifact_sha256 === "string" ? raw.artifact_sha256 : null,
|
|
135
|
-
}
|
|
136
|
-
|
|
216
|
+
};
|
|
217
|
+
delete retainedEvent.argument_shape_values;
|
|
218
|
+
delete retainedEvent.argument_shape_value_groups;
|
|
219
|
+
|
|
220
|
+
// All event values are JSON scalars except argument_shapes. Measure them
|
|
221
|
+
// incrementally so large channels, paths, or shape lists never require a
|
|
222
|
+
// full JSON.stringify temporary allocation before the budget decision.
|
|
223
|
+
let eventBytes = 2;
|
|
224
|
+
let argumentShapeCount = 0;
|
|
225
|
+
const eventKeys = Object.keys(retainedEvent);
|
|
226
|
+
for (let index = 0; index < eventKeys.length; index += 1) {
|
|
227
|
+
const key = eventKeys[index];
|
|
228
|
+
const value = retainedEvent[key];
|
|
229
|
+
if (index > 0) eventBytes += 1;
|
|
230
|
+
eventBytes += jsonStringBytes(key) + 1;
|
|
231
|
+
if (key === "argument_shapes") {
|
|
232
|
+
eventBytes += 2;
|
|
233
|
+
let shapeOverflow = false;
|
|
234
|
+
const countShape = (argument) => {
|
|
235
|
+
const encodedShapeBytes = jsonStringBytes(shape(argument));
|
|
236
|
+
eventBytes += encodedShapeBytes + (argumentShapeCount === 0 ? 0 : 1);
|
|
237
|
+
argumentShapeCount += 1;
|
|
238
|
+
shapeOverflow =
|
|
239
|
+
eventBytes + estimatedRetainedBytes + snapshotEnvelopeReserveBytes >
|
|
240
|
+
retentionBudgetBytes;
|
|
241
|
+
};
|
|
242
|
+
for (const group of shapeGroups)
|
|
243
|
+
for (const argument of group) {
|
|
244
|
+
countShape(argument);
|
|
245
|
+
if (shapeOverflow) break;
|
|
246
|
+
}
|
|
247
|
+
if (shapeOverflow) {
|
|
248
|
+
noteDropped(raw.kind, retainedEvent.process_type, isIpc);
|
|
249
|
+
return null;
|
|
250
|
+
}
|
|
251
|
+
for (const valueShape of existingShapes)
|
|
252
|
+
if (!shapeOverflow) {
|
|
253
|
+
eventBytes +=
|
|
254
|
+
jsonStringBytes(
|
|
255
|
+
typeof valueShape === "string" ? valueShape : "unknown",
|
|
256
|
+
) + (argumentShapeCount++ === 0 ? 0 : 1);
|
|
257
|
+
shapeOverflow =
|
|
258
|
+
eventBytes + estimatedRetainedBytes + snapshotEnvelopeReserveBytes >
|
|
259
|
+
retentionBudgetBytes;
|
|
260
|
+
}
|
|
261
|
+
if (shapeOverflow) {
|
|
262
|
+
noteDropped(raw.kind, retainedEvent.process_type, isIpc);
|
|
263
|
+
return null;
|
|
264
|
+
}
|
|
265
|
+
} else eventBytes += jsonScalarBytes(value);
|
|
266
|
+
if (
|
|
267
|
+
eventBytes + estimatedRetainedBytes + snapshotEnvelopeReserveBytes >
|
|
268
|
+
retentionBudgetBytes
|
|
269
|
+
) {
|
|
270
|
+
noteDropped(raw.kind, retainedEvent.process_type, isIpc);
|
|
271
|
+
return null;
|
|
272
|
+
}
|
|
273
|
+
}
|
|
274
|
+
// Reserve room for the only fields mutated after recording: result_shape and
|
|
275
|
+
// error. The shape vocabulary's longest value is "undefined".
|
|
276
|
+
const reservedMutationBytes = retainedEvent.result_shape === null ? 7 : 0;
|
|
277
|
+
// Include one byte for the event-array separator and reserve space for the
|
|
278
|
+
// snapshot's counters and JSON delimiters.
|
|
279
|
+
// One retained event, one defensive snapshot copy, and up to two serialized
|
|
280
|
+
// result views (timeline plus IPC), with per-object and per-array-slot costs.
|
|
281
|
+
const eventEstimateBytes = eventBytes * 3 + 512 + argumentShapeCount * 16;
|
|
282
|
+
const retainedEventBytes = eventEstimateBytes + reservedMutationBytes + 1;
|
|
283
|
+
if (
|
|
284
|
+
estimatedRetainedBytes + retainedEventBytes + snapshotEnvelopeReserveBytes >
|
|
285
|
+
retentionBudgetBytes
|
|
286
|
+
) {
|
|
287
|
+
noteDropped(raw.kind, retainedEvent.process_type, isIpc);
|
|
288
|
+
return null;
|
|
289
|
+
}
|
|
290
|
+
for (const group of shapeGroups)
|
|
291
|
+
for (const argument of group)
|
|
292
|
+
retainedEvent.argument_shapes.push(shape(argument));
|
|
293
|
+
for (const valueShape of existingShapes)
|
|
294
|
+
retainedEvent.argument_shapes.push(
|
|
295
|
+
typeof valueShape === "string" ? valueShape : "unknown",
|
|
296
|
+
);
|
|
297
|
+
events.push(retainedEvent);
|
|
298
|
+
estimatedRetainedBytes += retainedEventBytes;
|
|
299
|
+
serializedBytes += eventBytes + reservedMutationBytes + 1;
|
|
300
|
+
return retainedEvent;
|
|
137
301
|
};
|
|
138
302
|
|
|
139
303
|
const recordRuntime = (kind, event, phase, details = {}) =>
|
|
@@ -145,7 +309,7 @@ const recordIpc = (kind, channel, args, details = {}) =>
|
|
|
145
309
|
return record({
|
|
146
310
|
kind,
|
|
147
311
|
channel: typeof channel === "string" ? channel : null,
|
|
148
|
-
|
|
312
|
+
argument_shape_values: values,
|
|
149
313
|
...details,
|
|
150
314
|
});
|
|
151
315
|
})();
|
|
@@ -222,7 +386,7 @@ const patchNavigationMethods = (webContents, contentsId) => {
|
|
|
222
386
|
webContents[method] = function patchedNavigation(...args) {
|
|
223
387
|
recordRuntime("navigation", method, "attempted", {
|
|
224
388
|
target: contentsId,
|
|
225
|
-
|
|
389
|
+
argument_shape_values: args,
|
|
226
390
|
});
|
|
227
391
|
if (method === "loadURL" && !isAllowedNavigation(args[0])) {
|
|
228
392
|
recordRuntime("navigation", method, "blocked", {
|
|
@@ -354,7 +518,7 @@ const patchWebContents = (webContents, windowId) => {
|
|
|
354
518
|
recordRuntime("navigation", event, "blocked", {
|
|
355
519
|
target: contentsId,
|
|
356
520
|
sender: windowId,
|
|
357
|
-
|
|
521
|
+
argument_shape_values: args,
|
|
358
522
|
error: true,
|
|
359
523
|
});
|
|
360
524
|
return;
|
|
@@ -363,7 +527,7 @@ const patchWebContents = (webContents, windowId) => {
|
|
|
363
527
|
recordRuntime(kind, event, "observed", {
|
|
364
528
|
target: contentsId,
|
|
365
529
|
sender: windowId,
|
|
366
|
-
|
|
530
|
+
argument_shape_values: args,
|
|
367
531
|
error: kind === "error",
|
|
368
532
|
});
|
|
369
533
|
if (event === "did-create-window") {
|
|
@@ -379,31 +543,44 @@ const patchWebContents = (webContents, windowId) => {
|
|
|
379
543
|
boundaries.patchWindowOpenHandler(webContents, contentsId);
|
|
380
544
|
};
|
|
381
545
|
|
|
382
|
-
const
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
const
|
|
546
|
+
const patchWindows = (app) => {
|
|
547
|
+
if (app === null || app === undefined) return;
|
|
548
|
+
app.on("browser-window-created", (_event, window) => {
|
|
549
|
+
const targetId = identity(window, "window");
|
|
550
|
+
recordRuntime("window-lifecycle", "created", "completed", {
|
|
551
|
+
target: targetId,
|
|
552
|
+
capture_method: "event-emitter",
|
|
553
|
+
});
|
|
554
|
+
try {
|
|
555
|
+
// Electron 44 separates the preload descriptor from WebPreferences.
|
|
556
|
+
// Read the engine's descriptor, never infer a path from application code.
|
|
557
|
+
const preferences = window.webContents.getLastWebPreferences?.();
|
|
558
|
+
const preload =
|
|
559
|
+
typeof preferences?.preload === "string"
|
|
560
|
+
? preferences.preload
|
|
561
|
+
: window.webContents._getPreloadScript?.()?.filePath;
|
|
394
562
|
if (typeof preload === "string")
|
|
395
563
|
recordRuntime("preload", "configured", "completed", {
|
|
396
564
|
target: targetId,
|
|
397
565
|
artifact_path: preload,
|
|
398
566
|
});
|
|
399
|
-
|
|
400
|
-
|
|
567
|
+
} catch (cause) {
|
|
568
|
+
recordRuntime(
|
|
569
|
+
"error",
|
|
570
|
+
cause instanceof Error ? cause.message : String(cause),
|
|
571
|
+
"failed",
|
|
572
|
+
{
|
|
401
573
|
target: targetId,
|
|
402
|
-
|
|
574
|
+
error: true,
|
|
575
|
+
},
|
|
403
576
|
);
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
577
|
+
}
|
|
578
|
+
patchEmitter(window, (event) =>
|
|
579
|
+
recordRuntime("window-lifecycle", event, "observed", {
|
|
580
|
+
target: targetId,
|
|
581
|
+
}),
|
|
582
|
+
);
|
|
583
|
+
patchWebContents(window.webContents, targetId);
|
|
407
584
|
});
|
|
408
585
|
};
|
|
409
586
|
|
|
@@ -427,7 +604,7 @@ try {
|
|
|
427
604
|
"observed",
|
|
428
605
|
{
|
|
429
606
|
target: "app",
|
|
430
|
-
|
|
607
|
+
argument_shape_values: args,
|
|
431
608
|
process_type: "main",
|
|
432
609
|
},
|
|
433
610
|
),
|
|
@@ -435,33 +612,60 @@ try {
|
|
|
435
612
|
patchIpcMain(electron.ipcMain);
|
|
436
613
|
boundaries.patchIpcRenderer(electron.ipcRenderer);
|
|
437
614
|
boundaries.patchContextBridge(electron.contextBridge);
|
|
438
|
-
|
|
615
|
+
patchWindows(electron.app);
|
|
439
616
|
boundaries.patchUtilityProcess(electron.utilityProcess);
|
|
440
617
|
boundaries.patchShell(electron.shell);
|
|
441
|
-
boundaries.patchSessionManager(electron.session);
|
|
618
|
+
boundaries.patchSessionManager(electron.session, electron.app);
|
|
442
619
|
boundaries.patchApplicationEffects(electron.app);
|
|
443
620
|
boundaries.patchNativeAddonLoading();
|
|
444
621
|
boundaries.patchChildProcess();
|
|
445
622
|
process.once("uncaughtException", (cause, origin) => {
|
|
446
623
|
recordRuntime("process-lifecycle", "uncaught-exception", "observed", {
|
|
447
|
-
|
|
624
|
+
argument_shape_values: [cause, origin],
|
|
448
625
|
error: true,
|
|
449
626
|
});
|
|
450
627
|
throw cause;
|
|
451
628
|
});
|
|
452
629
|
process.once("unhandledRejection", (reason, promise) => {
|
|
453
630
|
recordRuntime("process-lifecycle", "unhandled-rejection", "observed", {
|
|
454
|
-
|
|
631
|
+
argument_shape_values: [reason, promise],
|
|
455
632
|
error: true,
|
|
456
633
|
});
|
|
457
634
|
throw reason;
|
|
458
635
|
});
|
|
459
|
-
} catch {
|
|
636
|
+
} catch (cause) {
|
|
460
637
|
globalThis.__reaElectronActiveHookError = true;
|
|
638
|
+
recordRuntime(
|
|
639
|
+
"error",
|
|
640
|
+
cause instanceof Error ? cause.message : String(cause),
|
|
641
|
+
"failed",
|
|
642
|
+
{
|
|
643
|
+
target: "active-hook-installation",
|
|
644
|
+
error: true,
|
|
645
|
+
},
|
|
646
|
+
);
|
|
461
647
|
}
|
|
462
648
|
|
|
463
649
|
globalThis.__reaElectronActiveSnapshot = () => ({
|
|
464
|
-
events: events.
|
|
650
|
+
events: events.map((event) => ({
|
|
651
|
+
...event,
|
|
652
|
+
argument_shapes: [...event.argument_shapes],
|
|
653
|
+
})),
|
|
654
|
+
retention_budget_bytes: retentionBudgetBytes,
|
|
655
|
+
estimated_retained_bytes: estimatedRetainedBytes,
|
|
656
|
+
event_serialized_byte_upper_bound: serializedBytes,
|
|
657
|
+
retained: events.length,
|
|
658
|
+
dropped,
|
|
659
|
+
dropped_ipc: droppedIpc,
|
|
660
|
+
dropped_runtime: droppedRuntime,
|
|
661
|
+
dropped_event_families: [...droppedFamilies].map(([family, count]) => ({
|
|
662
|
+
family,
|
|
663
|
+
count,
|
|
664
|
+
})),
|
|
665
|
+
dropped_event_roles: [...droppedRoles].map(([role, count]) => ({
|
|
666
|
+
role,
|
|
667
|
+
count,
|
|
668
|
+
})),
|
|
465
669
|
observed,
|
|
466
670
|
observed_ipc: observedIpc,
|
|
467
671
|
observed_runtime: observedRuntime,
|
package/scripts/rea.mjs
CHANGED
|
@@ -44,7 +44,6 @@ if (!(await compiledRuntimeExists(runtimeFiles))) {
|
|
|
44
44
|
const {
|
|
45
45
|
renderCliOutputArgumentError,
|
|
46
46
|
renderEmptyFilteredCliOutput,
|
|
47
|
-
sanitizeCliOutput,
|
|
48
47
|
validateCliOutputArguments,
|
|
49
48
|
} = await import("../dist/cliOutput.js");
|
|
50
49
|
const outputArguments = validateCliOutputArguments(args);
|
|
@@ -57,13 +56,11 @@ if (!(await compiledRuntimeExists(runtimeFiles))) {
|
|
|
57
56
|
await createCli(process.env, resultOutput).serve(args, {
|
|
58
57
|
stdout: (output) => {
|
|
59
58
|
if (resultOutput?.handled) {
|
|
60
|
-
if (resultOutput.failed)
|
|
61
|
-
process.stderr.write(sanitizeCliOutput(output));
|
|
59
|
+
if (resultOutput.failed) process.stderr.write(output);
|
|
62
60
|
return;
|
|
63
61
|
}
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
process.stdout.write(sanitized);
|
|
62
|
+
if (output.length > 0) wroteOutput = true;
|
|
63
|
+
process.stdout.write(output);
|
|
67
64
|
},
|
|
68
65
|
});
|
|
69
66
|
if (!wroteOutput && !resultOutput?.handled)
|
|
@@ -2,9 +2,8 @@
|
|
|
2
2
|
name: reverse-engineer-anything
|
|
3
3
|
description: Reverse engineer native, managed, Electron/JavaScript, packaged, firmware, and browser targets with REA. Use shipped-artifact or requested runtime evidence to explain features, compare versions, decompile code, or guide a reconstruction. Skip REA for ordinary source-repository architecture analysis.
|
|
4
4
|
metadata:
|
|
5
|
-
version: "
|
|
5
|
+
version: "34"
|
|
6
6
|
tool_count: 139
|
|
7
|
-
catalog_digest: "4c5f67d076baf821b5cb6d6fb2cc0f6c274e96b627b85b892577760a6f71ab1a"
|
|
8
7
|
---
|
|
9
8
|
|
|
10
9
|
# REA
|
|
@@ -33,7 +32,9 @@ When tools are absent or registration is stale:
|
|
|
33
32
|
`npx -y rea-agents@latest doctor --client codex --json`. Substitute the current
|
|
34
33
|
supported client: `claude_code`, `claude_desktop`, `codex`, `cursor`,
|
|
35
34
|
`gemini_cli`, `windsurf`, `devin`, `opencode`, `antigravity`, `copilot_cli`,
|
|
36
|
-
`commandcode`,
|
|
35
|
+
`commandcode`, `vscode`, `grok_build`, or `grok_bot`. `grok_bot` has no local
|
|
36
|
+
file registration: doctor reports the Grok Bot chat step, and setup does not
|
|
37
|
+
write `mcp.json`. If the client is unknown, use `doctor --json` and
|
|
37
38
|
inspect its registration results before choosing a setup scope.
|
|
38
39
|
2. Distinguish the reason. Missing, malformed, or stale registration needs a
|
|
39
40
|
scoped configuration repair. An aligned registration with no tools in the
|
|
@@ -146,6 +147,14 @@ Start with the default result and use its inline Evidence and graph context.
|
|
|
146
147
|
Do not repeat an identical tool call. Make a focused follow-up only when the
|
|
147
148
|
returned result leaves a specific question unanswered.
|
|
148
149
|
|
|
150
|
+
If MCP reports `resource_constraint` with `details.resource: "transport"`, call
|
|
151
|
+
`inspect_analysis_view` with its reported same-session Evidence reference for a
|
|
152
|
+
summary, one section/module, or a stable page. Use `trace_application_feature`
|
|
153
|
+
once a seed is known, or call `export_evidence_bundle` to write the complete
|
|
154
|
+
session to a selected path. The analysis remains complete in the ledger; avoid
|
|
155
|
+
repeating it merely to request the same oversized response. Complete CLI JSON
|
|
156
|
+
output also streams without a single MCP frame.
|
|
157
|
+
|
|
149
158
|
Every conclusion must distinguish observations, inferences, and unknowns. Cite
|
|
150
159
|
Evidence IDs, preserve limitations and incomplete coverage, and never imply
|
|
151
160
|
that static analysis observed execution. Runtime requests execute the declared
|
|
@@ -19,9 +19,12 @@ can select Java. REA setup does not install or configure that JAR, and doctor
|
|
|
19
19
|
provider scopes cover Hopper/Ghidra rather than JADX. Use existing tools and
|
|
20
20
|
report missing prerequisites for the Android task specifically.
|
|
21
21
|
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
22
|
+
Linux and macOS use the POSIX owned-process boundary. Windows x64 requires the
|
|
23
|
+
matching bundled native controls and uses an owned Job Object with bidirectional
|
|
24
|
+
stdio. A full JDK, including `jdk.compiler`, is required on every host; Windows
|
|
25
|
+
`JAVA_HOME` selects `bin\java.exe`. Consult the Android guide for actual host
|
|
26
|
+
verification coverage. Calls use one worker and provider deadlines; optional
|
|
27
|
+
`REA_JADX_HEAP_MIB` selects the JVM heap. The APK is never launched,
|
|
25
28
|
and no emulator is required.
|
|
26
29
|
|
|
27
30
|
Manifest entries and decompiled text are static observations, not execution or
|
|
@@ -1,11 +1,15 @@
|
|
|
1
1
|
# Evidence, comparison, and verification workflows
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
3
|
+
Evidence-producing tools return the complete Evidence record directly in MCP
|
|
4
|
+
`structuredContent` and CLI JSON. Read `normalized_result` for operation data,
|
|
5
|
+
and cite `evidence_id` when another tool or your explanation needs a stable
|
|
6
|
+
reference. Preserve authority, limitations, coverage, and residual unknowns. If a result
|
|
6
7
|
is incomplete or paginated, continue only when the remaining data matters to
|
|
7
8
|
the task; do not fetch a bundle or resource merely to read a result already
|
|
8
|
-
returned inline.
|
|
9
|
+
returned inline. When complete `inspect_binary_layout` or
|
|
10
|
+
`analyze_javascript_application` Evidence is already retained, call
|
|
11
|
+
`inspect_analysis_view` for a summary, one section/symbol/module, or a stable
|
|
12
|
+
page instead of repeating the producer.
|
|
9
13
|
|
|
10
14
|
Use `record_unknown` to track unresolved questions in the user's investigation
|
|
11
15
|
and name the authority or environment still required. Supply supporting and
|
|
@@ -2,10 +2,19 @@
|
|
|
2
2
|
|
|
3
3
|
Use `analyze_javascript_application` directly on the operator-supplied ASAR or
|
|
4
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
|
|
5
|
+
inline when they fit the MCP frame. Source-map contents are part of the static analysis. Start from its
|
|
6
6
|
findings, coverage, unknowns, and graph context, then make a focused follow-up
|
|
7
7
|
only when a specific question remains unanswered.
|
|
8
8
|
|
|
9
|
+
An oversized response reports `resource_constraint` and
|
|
10
|
+
`details.resource: "transport"`. Reuse
|
|
11
|
+
`details.reported_limits.evidence_reference` with `inspect_analysis_view` for a
|
|
12
|
+
summary, one module, or a stable page of module identities. Use
|
|
13
|
+
`trace_application_feature` once a module, route, or string seed is known.
|
|
14
|
+
`export_evidence_bundle` writes the complete canonical session to a
|
|
15
|
+
caller-selected file. These workflows keep the original Evidence and coverage;
|
|
16
|
+
a broad follow-up can also exceed framing.
|
|
17
|
+
|
|
9
18
|
BrowserWindow preferences, preload and contextBridge surfaces, IPC
|
|
10
19
|
registrations, utility processes, and native binding requests are static syntax
|
|
11
20
|
observations. Only a unique exact literal IPC channel match supports an inferred
|
|
@@ -31,7 +40,13 @@ changed, analyze each version once and then call
|
|
|
31
40
|
`compare_javascript_export_shapes` with explicit module paths and export names.
|
|
32
41
|
Use the returned IDs on the same connection, or complete inline Evidence
|
|
33
42
|
records, from both analysis calls. Accept variant
|
|
34
|
-
pairing only through the tool's unique exact literal discriminant.
|
|
43
|
+
pairing only through the tool's unique exact literal discriminant. Read
|
|
44
|
+
`property_inventories` and each change's `presence` before treating `unknown` as
|
|
45
|
+
"the name was not observed": inventories list observed property names even when
|
|
46
|
+
values stay unknown, with a `source_range` for each paired or unpaired variant.
|
|
47
|
+
Array holes and mutation-invalidated slots are not observed properties.
|
|
48
|
+
Complete parent coverage reports presence-only
|
|
49
|
+
`added`/`removed` independently of unresolved values. Cite the
|
|
35
50
|
comparison Evidence and report JSON Pointer changes; dynamic values, ambiguous
|
|
36
51
|
variants, and incomplete parent-property coverage stay unknown. This is static
|
|
37
52
|
inference, not runtime behavior. When runtime semantics are needed, run
|
|
@@ -43,7 +58,9 @@ through the available browser, Electron, or process workflows.
|
|
|
43
58
|
When advertised by the connected server, application trace and compare tools
|
|
44
59
|
accept complete inline Evidence or
|
|
45
60
|
`{"kind":"retained-evidence","evidence_id":"ev_<64 lowercase hex characters>"}`
|
|
46
|
-
for their application input (`application`, or `left`/`right`).
|
|
61
|
+
for their application input (`application`, or `left`/`right`). `inspect_analysis_view`
|
|
62
|
+
uses the same retained-reference form in `source`, or portable inline Evidence,
|
|
63
|
+
to project a summary, module page, or one module with its recorded observations. This notation is
|
|
47
64
|
a template: replace it with the actual returned ID. Versions before 4.1.0 accept only full
|
|
48
65
|
inline Evidence. Use the exact ID
|
|
49
66
|
returned by the producer on the same MCP connection. Resolution does not run
|
|
@@ -16,6 +16,15 @@ Requested unavailable context fails with setup guidance. See
|
|
|
16
16
|
[recorded crashes](https://github.com/morluto/rea/blob/main/docs/recorded-crashes.md)
|
|
17
17
|
for exact upstream profiles, bounds and verification coverage.
|
|
18
18
|
|
|
19
|
+
## Offline ELF layout
|
|
20
|
+
|
|
21
|
+
Use `inspect_binary_layout` with an explicit local ELF path for file-backed
|
|
22
|
+
sections, symbols, relocations, linkage names, and static mitigation inferences
|
|
23
|
+
without opening a disassembler target. When that complete record is already
|
|
24
|
+
retained, call `inspect_analysis_view` for a summary, mitigations or linkage
|
|
25
|
+
facet, one section or symbol, or a stable page. Do not re-run the decoder to
|
|
26
|
+
read a single object.
|
|
27
|
+
|
|
19
28
|
## Native targets
|
|
20
29
|
|
|
21
30
|
After `open_binary`, use focused search, procedure, or function tools directly.
|
package/dist/config.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export { parseConfig } from "./config/parseConfig.js";
|
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
import { browserCaptureComparisonInputSchema } from "../domain/browserCaptureComparison.js";
|
|
2
|
-
import { browserScenarioCaptureSchema } from "../domain/browserScenarioCapture.js";
|
|
3
|
-
import { captureSnapshotSchema } from "../domain/webCaptureDiffSchemas.js";
|
|
4
|
-
// Captures are complete producer results to pass back unchanged, rather than
|
|
5
|
-
// analyst-authored options. Describe that boundary without embedding the entire
|
|
6
|
-
// inspection result schema in every comparison input. The cloned parser still
|
|
7
|
-
// validates every nested field using the canonical domain schemas.
|
|
8
|
-
const passiveCaptureInputSchema = captureSnapshotSchema.clone(captureSnapshotSchema.def);
|
|
9
|
-
passiveCaptureInputSchema._zod.toJSONSchema = () => ({
|
|
10
|
-
type: "object",
|
|
11
|
-
properties: {
|
|
12
|
-
inspection: {
|
|
13
|
-
type: "object",
|
|
14
|
-
description: "Complete result object returned by inspect_web_page. Pass the entire result unchanged, including capture identity, observations, completeness, and limitations. Every nested field is validated by REA.",
|
|
15
|
-
},
|
|
16
|
-
webmcp: {
|
|
17
|
-
anyOf: [{ type: "object" }, { type: "null" }],
|
|
18
|
-
default: null,
|
|
19
|
-
description: "Complete result object returned by discover_webmcp_tools for this capture, or null when it was not recorded. Pass the entire result unchanged. Every nested field is validated by REA.",
|
|
20
|
-
},
|
|
21
|
-
},
|
|
22
|
-
required: ["inspection"],
|
|
23
|
-
});
|
|
24
|
-
const scenarioCaptureInputSchema = browserScenarioCaptureSchema.clone(browserScenarioCaptureSchema.def);
|
|
25
|
-
scenarioCaptureInputSchema._zod.toJSONSchema = () => ({
|
|
26
|
-
type: "object",
|
|
27
|
-
description: "Complete result object returned by capture_browser_scenario. Pass the entire result unchanged, including browser and scenario identity, steps, events, artifact contents and digests, completeness, and limitations. Every nested field is validated by REA.",
|
|
28
|
-
});
|
|
29
|
-
/** Advertise capture round trips while retaining full runtime validation. */
|
|
30
|
-
export const browserCaptureToolInputSchema = browserCaptureComparisonInputSchema.safeExtend({
|
|
31
|
-
before: passiveCaptureInputSchema
|
|
32
|
-
.optional()
|
|
33
|
-
.describe("Earlier passive web-page capture with complete producer results."),
|
|
34
|
-
after: passiveCaptureInputSchema
|
|
35
|
-
.optional()
|
|
36
|
-
.describe("Later passive web-page capture with complete producer results."),
|
|
37
|
-
before_scenario: scenarioCaptureInputSchema
|
|
38
|
-
.optional()
|
|
39
|
-
.describe("Earlier complete result object returned by capture_browser_scenario."),
|
|
40
|
-
after_scenario: scenarioCaptureInputSchema
|
|
41
|
-
.optional()
|
|
42
|
-
.describe("Later complete result object returned by capture_browser_scenario."),
|
|
43
|
-
});
|
package/dist/main/reload.js
DELETED
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import { parseConfig } from "../config.js";
|
|
2
|
-
export const registerConfigReload = (input) => {
|
|
3
|
-
const { dependencies, runtimeState, serverLogger } = input;
|
|
4
|
-
return (dependencies.registerReload?.(() => {
|
|
5
|
-
const refreshed = parseConfig(dependencies.env);
|
|
6
|
-
if (!refreshed.ok) {
|
|
7
|
-
serverLogger.error("Reloaded REA configuration is invalid");
|
|
8
|
-
return;
|
|
9
|
-
}
|
|
10
|
-
runtimeState.currentConfig = refreshed.value;
|
|
11
|
-
}) ?? (() => undefined));
|
|
12
|
-
};
|
package/dist/main/state.js
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
export { PROCESS_PROVIDER } from "../application/process/ProcessEvidence.js";
|
|
2
|
-
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";
|