rea-agents 6.3.0 → 6.4.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 +7 -4
- package/bridge/ghidra/ReaGhidraApplySeeds.java +151 -0
- package/bridge/ghidra/ReaGhidraBridge.java +597 -209
- package/bridge/ghidra/ReaGhidraNoReturnFix.java +123 -0
- package/dist/adb/AdbConfiguration.js +88 -0
- package/dist/adb/AdbDeviceOutput.js +186 -0
- package/dist/adb/AdbProvider.js +1190 -0
- package/dist/adb/AdbShellOutput.js +309 -0
- package/dist/android/AndroidTargetSnapshot.js +104 -22
- package/dist/android/JadxConfiguration.js +44 -24
- package/dist/android/JadxProvider.js +51 -19
- package/dist/apktool/ApktoolConfiguration.js +84 -0
- package/dist/apktool/ApktoolDecodeOutput.js +59 -0
- package/dist/apktool/ApktoolProvider.js +506 -0
- package/dist/application/AnalysisProvider.js +8 -2
- package/dist/application/AppBundleExecutable.js +27 -22
- package/dist/application/BinaryTargetResolver.js +22 -2
- package/dist/application/CapabilityInventory.js +11 -1
- package/dist/application/ClientConfigurationDocument.js +70 -0
- package/dist/application/ClientConfigurationFiles.js +91 -0
- package/dist/application/ClientRegistrationEnvironment.js +35 -0
- package/dist/application/ClientRegistrationStatus.js +66 -31
- package/dist/application/DirectAnalysis.js +2 -2
- package/dist/application/DirectAnalysisCleanup.js +1 -1
- package/dist/application/DirectAnalysisStatus.js +1 -1
- package/dist/application/Doctor.js +5 -3
- package/dist/application/DoctorDiagnostics.js +1 -1
- package/dist/application/EvidenceBundleCommands.js +6 -12
- package/dist/application/GeminiClientSettings.js +139 -0
- package/dist/application/HermesClientHome.js +115 -0
- package/dist/application/HopperDownload.js +39 -0
- package/dist/application/InvestigationProviders.js +6 -0
- package/dist/application/JsonFiles.js +6 -5
- package/dist/{cliJsonFile.js → application/JsonInputFile.js} +108 -35
- package/dist/application/LinuxHopper.js +4 -12
- package/dist/application/MacHopper.js +172 -149
- package/dist/application/MipsElfAbiFlags.js +140 -0
- package/dist/application/ProviderOperationExecution.js +31 -0
- package/dist/application/ReconstructionObligationCandidates.js +9 -3
- package/dist/application/ReferenceSourceImport.js +76 -29
- package/dist/application/ReferenceSourceImportEntries.js +18 -9
- package/dist/application/ReferenceSourceImportPolicy.js +99 -23
- package/dist/application/ReferenceSourceImportTypes.js +30 -22
- package/dist/application/ReferenceSourceVcsAdapter.js +145 -30
- package/dist/application/RegularFileRead.js +93 -7
- package/dist/application/Setup.js +54 -6
- package/dist/application/SetupClientConfiguration.js +116 -16
- package/dist/application/SetupHost.js +102 -24
- package/dist/application/SetupPlan.js +5 -8
- package/dist/application/SetupSkill.js +58 -39
- package/dist/application/SupportedClients.js +290 -65
- package/dist/application/Uninstall.js +158 -10
- package/dist/application/UpdateMaintenance.js +17 -21
- package/dist/application/Utf8JsonInput.js +7 -0
- package/dist/application/WebScriptExportService.js +131 -65
- package/dist/application/WebSourceLocationService.js +3 -0
- package/dist/application/adb/AdbDeviceAnalysisPort.js +1 -0
- package/dist/application/adb/AdbDeviceAnalysisService.js +13 -0
- package/dist/application/analysisView/AnalysisViewService.js +40 -2
- package/dist/application/apktool/ApktoolResourceAnalysisPort.js +1 -0
- package/dist/application/apktool/ApktoolResourceAnalysisService.js +13 -0
- package/dist/application/binary/AnalysisClientCleanup.js +0 -24
- package/dist/application/binary/BinarySession.js +2 -1
- package/dist/application/binaryDiagnostics/BinaryLayoutService.js +2 -1
- package/dist/application/binaryDiagnostics/PeResourcesPort.js +1 -0
- package/dist/application/binaryDiagnostics/PeResourcesService.js +111 -0
- package/dist/application/binaryDiagnostics/RecordedCrashService.js +2 -1
- package/dist/application/evm/EvmInterfaceService.js +3 -0
- package/dist/application/firmware/FirmwareAnalysisService.js +3 -0
- package/dist/application/investigation/InspectEvidenceBundle.js +18 -0
- package/dist/application/javascript/ElectronBoundaryGraphContext.js +3 -2
- package/dist/application/javascript/ElectronBoundaryGraphIpc.js +2 -2
- package/dist/application/javascript/ElectronBoundaryGraphNative.js +19 -6
- package/dist/application/javascript/ElectronBoundaryGraphWindows.js +3 -3
- package/dist/application/javascript/JavaScriptApplicationService.js +22 -11
- package/dist/application/javascript/JavaScriptApplicationWorkflowEvidence.js +5 -6
- package/dist/application/javascript/JavaScriptArtifactAnalysis.js +171 -30
- package/dist/application/javascript/JavaScriptArtifactGraphAccumulator.js +14 -16
- package/dist/application/javascript/JavaScriptArtifactGraphBuilder.js +67 -19
- package/dist/application/javascript/JavaScriptArtifactGraphBundlers.js +4 -3
- package/dist/application/javascript/JavaScriptArtifactGraphContext.js +11 -5
- package/dist/application/javascript/JavaScriptArtifactGraphFindings.js +19 -16
- package/dist/application/javascript/JavaScriptArtifactGraphStructure.js +92 -10
- package/dist/application/javascript/JavaScriptArtifactPathResolution.js +258 -235
- package/dist/application/javascript/JavaScriptArtifactReconstruction.js +115 -26
- package/dist/application/javascript/JavaScriptArtifactReconstructionInput.js +4 -1
- package/dist/application/javascript/JavaScriptModuleRelationships.js +6 -4
- package/dist/application/javascript/JavaScriptRecoveryService.js +3 -0
- package/dist/application/javascript/JavaScriptSemanticGraphAsyncProjection.js +9 -3
- package/dist/application/javascript/JavaScriptSemanticGraphBuilder.js +199 -61
- package/dist/application/javascript/JavaScriptSemanticGraphConstruction.js +12 -19
- package/dist/application/javascript/JavaScriptSemanticGraphDataProjection.js +4 -1
- package/dist/application/javascript/JavaScriptSemanticGraphFlowProjection.js +5 -3
- package/dist/application/javascript/JavaScriptSemanticGraphObjectProjection.js +5 -3
- package/dist/application/javascript/JavaScriptSemanticGraphValueProjection.js +19 -8
- package/dist/application/jeb/JebAnalysisPort.js +1 -0
- package/dist/application/jeb/JebAnalysisService.js +13 -0
- package/dist/application/managed/ManagedApplicationGraphService.js +1 -1
- package/dist/application/native/NativeUiActionTrace.js +16 -8
- package/dist/application/native/NativeValueTrace.js +23 -6
- package/dist/application/process/ProcessCli.js +25 -20
- package/dist/artifacts/ArtifactPaths.js +129 -8
- package/dist/artifacts/ArtifactProvider.js +20 -15
- package/dist/artifacts/ArtifactReader.js +23 -0
- package/dist/artifacts/ArtifactResourceScope.js +100 -0
- package/dist/artifacts/AsarArtifactReader.js +176 -102
- package/dist/artifacts/AsarHeader.js +24 -0
- package/dist/artifacts/DirectoryArtifactReader.js +168 -65
- package/dist/artifacts/MachOSliceArtifactReader.js +116 -39
- package/dist/artifacts/NativeDmgArtifactReader.js +29 -22
- package/dist/artifacts/SafeOutputTree.js +245 -70
- package/dist/artifacts/SafeOutputTreeCleanup.js +45 -0
- package/dist/artifacts/SafeOutputTreeCreationFailure.js +20 -0
- package/dist/artifacts/SafeOutputTreeIdentity.js +42 -0
- package/dist/artifacts/SafeOutputTreeReadback.js +33 -0
- package/dist/artifacts/ZipArtifactReader.js +77 -27
- package/dist/artifacts/apple/InterfaceBuilderAnalysis.js +58 -18
- package/dist/artifacts/apple/InterfaceBuilderDecodeBudget.js +62 -24
- package/dist/artifacts/apple/KeyedArchiveReader.js +32 -13
- package/dist/artifacts/extraction/ArtifactExtraction.js +110 -86
- package/dist/artifacts/inventory/ArtifactGraphConstruction.js +110 -43
- package/dist/artifacts/inventory/ArtifactInventory.js +5 -4
- package/dist/artifacts/inventory/classify.js +75 -32
- package/dist/artifacts/inventory/hashStableRootArtifact.js +48 -15
- package/dist/artifacts/inventory/reader.js +13 -5
- package/dist/artifacts/inventory/scanCanonical.js +62 -25
- package/dist/artifacts/inventory/scanReader.js +38 -11
- package/dist/artifacts/javascript/JavaScriptArtifactFiles.js +15 -9
- package/dist/artifacts/javascript/JavaScriptSourceAnalysis.js +3 -0
- package/dist/browser/BrowserScenarioPartialObservation.js +8 -2
- package/dist/browser/BrowserScenarioSecrets.js +52 -37
- package/dist/browser/CdpBrowserProvider.js +5 -0
- package/dist/browser/CdpCaptureDocuments.js +40 -6
- package/dist/browser/CdpCaptureDomSvg.js +210 -0
- package/dist/browser/CdpCaptureEventBodyShapes.js +4 -8
- package/dist/browser/CdpCaptureEventHandlers.js +26 -9
- package/dist/browser/CdpCaptureEvents.js +4 -9
- package/dist/browser/CdpConnection.js +22 -5
- package/dist/browser/CdpPageCapture.js +1 -1
- package/dist/browser/CdpTargetSession.js +30 -34
- package/dist/browser/CdpWebMcpDiscovery.js +32 -10
- package/dist/browser/ElectronFileScope.js +99 -9
- package/dist/browser/PlaywrightBrowserScenarioProvider.js +60 -4
- package/dist/browser/PlaywrightElectronActiveProvider.js +11 -6
- package/dist/browser/PlaywrightScenarioArtifacts.js +5 -5
- package/dist/browser/PlaywrightScenarioBrowser.js +69 -7
- package/dist/browser/PlaywrightScenarioSession.js +127 -54
- package/dist/browser/PlaywrightScenarioStorage.js +507 -0
- package/dist/browser/PngVisualDiff.js +198 -29
- package/dist/browser/WebSourceMapFetcher.js +3 -3
- package/dist/browser/assets/LocalWebScriptArtifacts.js +3 -1
- package/dist/browser/assets/PublishWebScripts.js +75 -20
- package/dist/browser/assets/WebArtifactReads.js +23 -1
- package/dist/browser/assets/WebSourceLocationArtifacts.js +1 -0
- package/dist/browser/execution/CdpExecutionCapture.js +3 -3
- package/dist/browser/execution/CdpPreciseCoverage.js +5 -8
- package/dist/browser/history/HarCapture.js +14 -0
- package/dist/browser/history/HarCaptureProcess.js +2 -10
- package/dist/browser/history/MitmproxyCaptureAdapter.js +3 -1
- package/dist/browser/modules/WebModuleArtifacts.js +1 -0
- package/dist/cli/adbCommands.js +337 -0
- package/dist/cli/analysisViewCommands.js +39 -1
- package/dist/cli/apktoolCommands.js +53 -0
- package/dist/cli/artifactCommands.js +8 -11
- package/dist/cli/binaryDiagnosticsCommands.js +19 -1
- package/dist/cli/browserAdvancedCommands.js +65 -36
- package/dist/cli/coreBinaryCommands.js +0 -5
- package/dist/cli/coreNativeCommands.js +1 -14
- package/dist/cli/electronCommands.js +6 -1
- package/dist/cli/evmCommands.js +13 -4
- package/dist/cli/firmwareCommands.js +7 -2
- package/dist/cli/javascriptApplicationAnalysis.js +17 -1
- package/dist/cli/javascriptRecoveryCommands.js +22 -15
- package/dist/cli/jebCommands.js +99 -0
- package/dist/cli/jsonOutput.js +11 -4
- package/dist/cli/referenceSourceImportStatus.js +7 -0
- package/dist/cli/setupCommands.js +15 -3
- package/dist/cli/utilityCommands.js +66 -18
- package/dist/cli/webScriptCommands.js +20 -1
- package/dist/cli/webSourceLocationCommands.js +21 -9
- package/dist/cli.js +6 -0
- package/dist/cliBrowserScenarioCommands.js +2 -1
- package/dist/cliCommandNames.js +32 -0
- package/dist/cliJsonInput.js +2 -2
- package/dist/cliObservationOptions.js +3 -0
- package/dist/composition/adb.js +3 -0
- package/dist/composition/apktool.js +3 -0
- package/dist/composition/binaryDiagnostics.js +4 -0
- package/dist/composition/directAnalysis.js +12 -4
- package/dist/composition/javascriptAnalysisWorkerProcess.js +48 -0
- package/dist/composition/jeb.js +6 -0
- package/dist/config/environment.js +10 -0
- package/dist/config/ghidraLanguageOverride.js +9 -0
- package/dist/config/mcpInputSchemaProfile.js +27 -0
- package/dist/config/parseConfig.js +28 -1
- package/dist/contracts/adb/adbToolContracts.js +353 -0
- package/dist/contracts/advertisedInputExamples.js +48 -0
- package/dist/contracts/analysisDetail.js +10 -0
- package/dist/contracts/analysisViewToolContracts.js +17 -2
- package/dist/contracts/apktool/apktoolToolContracts.js +33 -0
- package/dist/contracts/artifactToolContracts.js +8 -5
- package/dist/contracts/browserToolContracts.js +1 -1
- package/dist/contracts/compactInputSchema.js +256 -0
- package/dist/contracts/functionWorkflowToolContracts.js +1 -1
- package/dist/contracts/inputSchemaPresentation.js +10 -10
- package/dist/contracts/javascript/electronToolContracts.js +15 -3
- package/dist/contracts/javascript/javascriptRecoveryToolContracts.js +1 -1
- package/dist/contracts/jeb/jebToolContracts.js +64 -0
- package/dist/contracts/native/binaryDiagnosticsToolContracts.js +25 -3
- package/dist/contracts/officialToolContracts.js +5 -5
- package/dist/contracts/sessionToolContracts.js +2 -2
- package/dist/contracts/sessionToolSchemas.js +6 -2
- package/dist/contracts/toolContractExamples.js +6 -0
- package/dist/contracts/toolContractTypes.js +3 -0
- package/dist/contracts/toolContracts.js +6 -0
- package/dist/contracts/toolEffects.js +167 -0
- package/dist/contracts/toolOutputSchemaGroups.js +5 -3
- package/dist/contracts/toolSchemaMetadata.js +82 -7
- package/dist/domain/adb/adbDeviceAnalysis.js +583 -0
- package/dist/domain/analysisErrorCleanup.js +29 -0
- package/dist/domain/analysisErrorPresentation.js +18 -6
- package/dist/domain/analysisErrorProjection.js +4 -1
- package/dist/domain/analysisSnapshot.js +2 -1
- package/dist/domain/analysisView/analysisView.js +52 -2
- package/dist/domain/analysisView/binaryLayoutView.js +2 -0
- package/dist/domain/analysisView/javascriptApplicationView.js +2 -0
- package/dist/domain/analysisView/nativeFunctionView.js +155 -0
- package/dist/domain/android/androidApplication.js +25 -20
- package/dist/domain/apktool/apktoolResourceAnalysis.js +77 -0
- package/dist/domain/apple/appleApplication.js +40 -23
- package/dist/domain/apple/appleBundleAnatomy.js +95 -28
- package/dist/domain/apple/dyldPaths.js +9 -1
- package/dist/domain/apple/dylibResolution.js +2 -2
- package/dist/domain/apple/interfaceBuilderGraph.js +22 -19
- package/dist/domain/apple/interfaceBuilderKeyedArchive.js +10 -1
- package/dist/domain/artifactComparison.js +35 -7
- package/dist/domain/artifactGraph.js +5 -3
- package/dist/domain/artifactIdentity.js +30 -2
- package/dist/domain/artifactInspection.js +3 -43
- package/dist/domain/artifactIntegrityPolicy.js +10 -0
- package/dist/domain/artifactInventoryEvidence.js +11 -12
- package/dist/domain/artifactPathSyntax.js +1 -1
- package/dist/domain/binaryTarget.js +16 -0
- package/dist/domain/binaryTargetTypes.js +8 -1
- package/dist/domain/browserObservationSchemas.js +8 -4
- package/dist/domain/canonicalJsonDigestSteps.js +34 -12
- package/dist/domain/compactStringIdentity.js +9 -0
- package/dist/domain/evidence.js +2 -1
- package/dist/domain/evidenceRecordSummary.js +144 -0
- package/dist/domain/inputIssueProjection.js +16 -1
- package/dist/domain/javascript/electronStaticAnalysisBrowser.js +12 -13
- package/dist/domain/javascript/electronStaticAnalysisIpc.js +11 -20
- package/dist/domain/javascript/electronStaticAnalysisNative.js +70 -40
- package/dist/domain/javascript/electronStaticAnalysisValues.js +16 -0
- package/dist/domain/javascript/javascriptAnalysisResourceControls.js +45 -0
- package/dist/domain/javascript/javascriptApplicationAnalysis.js +4 -1
- package/dist/domain/javascript/javascriptApplicationChangeGraph.js +6 -6
- package/dist/domain/javascript/javascriptApplicationGraph.js +79 -18
- package/dist/domain/javascript/javascriptApplicationProjectionResources.js +35 -0
- package/dist/domain/javascript/javascriptApplicationVersionItems.js +28 -12
- package/dist/domain/javascript/javascriptApplicationVersionKeys.js +9 -1
- package/dist/domain/javascript/javascriptAstFingerprint.js +58 -31
- package/dist/domain/javascript/javascriptAstValues.js +32 -0
- package/dist/domain/javascript/javascriptElectronMemberWrites.js +50 -0
- package/dist/domain/javascript/javascriptModuleSemanticIr.js +15 -0
- package/dist/domain/javascript/javascriptNativeHandoff.js +6 -1
- package/dist/domain/javascript/javascriptRpcEndpoints.js +253 -0
- package/dist/domain/javascript/javascriptRuntimeLoadState.js +1 -3
- package/dist/domain/javascript/javascriptRuntimeReconciliationGraph.js +7 -2
- package/dist/domain/javascript/javascriptRuntimeStaticCandidates.js +8 -11
- package/dist/domain/javascript/javascriptSemanticAnalysis.js +190 -33
- package/dist/domain/javascript/javascriptSemanticCallableResults.js +42 -0
- package/dist/domain/javascript/javascriptSemanticCalls.js +8 -1
- package/dist/domain/javascript/javascriptSemanticDerivedAnalysis.js +15 -4
- package/dist/domain/javascript/javascriptSemanticFileProjection.js +1 -0
- package/dist/domain/javascript/javascriptSemanticFingerprints.js +42 -41
- package/dist/domain/javascript/javascriptSemanticGraph.js +69 -23
- package/dist/domain/javascript/javascriptSemanticGraphSchemas.js +2 -10
- package/dist/domain/javascript/javascriptSemanticIterationSources.js +40 -7
- package/dist/domain/javascript/javascriptSemanticMemberMutations.js +341 -87
- package/dist/domain/javascript/javascriptSemanticMutationValues.js +78 -35
- package/dist/domain/javascript/javascriptSemanticObjectReferences.js +381 -0
- package/dist/domain/javascript/javascriptSemanticObjects.js +7 -1
- package/dist/domain/javascript/javascriptSemanticProjection.js +52 -14
- package/dist/domain/javascript/javascriptSemanticPropertyPaths.js +77 -0
- package/dist/domain/javascript/javascriptSemanticQuery.js +27 -29
- package/dist/domain/javascript/javascriptSemanticQueryIdentity.js +1 -3
- package/dist/domain/javascript/javascriptSemanticReturnedReferences.js +219 -0
- package/dist/domain/javascript/javascriptSemanticReturns.js +13 -23
- package/dist/domain/javascript/javascriptSemanticState.js +22 -2
- package/dist/domain/javascript/javascriptSemanticTraversal.js +19 -1
- package/dist/domain/javascript/javascriptSemanticValues.js +47 -19
- package/dist/domain/javascript/javascriptSourceAnalysis.js +1 -0
- package/dist/domain/javascript/javascriptStaticAnalysis.js +29 -17
- package/dist/domain/javascript/javascriptStaticAnalysisBundler.js +8 -6
- package/dist/domain/javascript/javascriptStaticAnalysisCalls.js +49 -5
- package/dist/domain/javascript/javascriptStaticAnalysisFindings.js +8 -4
- package/dist/domain/javascript/javascriptStaticAnalysisState.js +1 -0
- package/dist/domain/jeb/jebAnalysis.js +114 -0
- package/dist/domain/jsonShape.js +63 -52
- package/dist/domain/jsonValue.js +3 -0
- package/dist/domain/managed/managedApplicationGraph.js +37 -0
- package/dist/domain/managed/managedApplicationGraphCoverage.js +8 -2
- package/dist/domain/managed/managedApplicationGraphNodes.js +32 -22
- package/dist/domain/managed/managedArtifact.js +1 -0
- package/dist/domain/managed/managedInspectionEvidence.js +13 -0
- package/dist/domain/native/nativeAotPe.js +1408 -0
- package/dist/domain/native/nativeInstruction.js +21 -0
- package/dist/domain/native/nativeMetadataRecovery.js +79 -6
- package/dist/domain/native/peResources.js +94 -0
- package/dist/domain/nativeConvention.js +33 -0
- package/dist/domain/process/processCapture.js +91 -1
- package/dist/domain/process/processCaptureExample.js +24 -0
- package/dist/domain/process/processCaptureValidation.js +79 -0
- package/dist/domain/process/processScenario.js +59 -7
- package/dist/domain/propertyListKeys.js +3 -1
- package/dist/domain/referenceSourceGraph.js +25 -16
- package/dist/domain/referenceSourceImportParsing.js +6 -3
- package/dist/domain/referenceSourcePathIdentity.js +22 -0
- package/dist/domain/referenceSourceRequireBindings.js +137 -0
- package/dist/domain/webBundleAnalyzerInspection.js +14 -2
- package/dist/domain/webCaptureDiff.js +102 -4
- package/dist/domain/webScriptExportError.js +10 -4
- package/dist/domain/webScriptExportPlan.js +7 -13
- package/dist/domain/zipPackageFormat.js +4 -1
- package/dist/domain/zodCollectionSteps.js +24 -0
- package/dist/dotnet/ManagedArtifactInspector.js +55 -43
- package/dist/dotnet/ManagedDecodeBudget.js +80 -0
- package/dist/dotnet/ManagedMemberInspector.js +13 -6
- package/dist/dotnet/ManagedMemberInspectorCore.js +2 -2
- package/dist/dotnet/ManagedMemberInstructionDecoder.js +4 -2
- package/dist/dotnet/ManagedMemberRows.js +9 -4
- package/dist/dotnet/ManagedMetadataHeaps.js +15 -5
- package/dist/dotnet/ManagedMetadataInventoryRows.js +20 -11
- package/dist/dotnet/ManagedMetadataLayout.js +10 -4
- package/dist/dotnet/ManagedMethodBodyReader.js +8 -3
- package/dist/dotnet/ManagedNativeBoundaryHelpers.js +3 -2
- package/dist/dotnet/ManagedNativeBoundaryInspector.js +49 -34
- package/dist/dotnet/ManagedPeReader.js +41 -25
- package/dist/dotnet/ManagedReaderFailure.js +2 -1
- package/dist/dotnet/ManagedStaticProvider.js +55 -24
- package/dist/evaluation/AgentEvaluationReport.js +9 -5
- package/dist/evaluation/CodexAgentEval.js +43 -13
- package/dist/evm/EvmoleFailures.js +0 -2
- package/dist/evm/EvmoleInterfaceProvider.js +67 -2
- package/dist/filesystem/OwnedDirectoryHandle.js +29 -0
- package/dist/filesystem/OwnedFileHandle.js +36 -0
- package/dist/filesystem/RegularFile.js +33 -1
- package/dist/filesystem/StableFileHash.js +46 -0
- package/dist/filesystem/readFileHandleChunks.js +26 -0
- package/dist/firmware/FirmwareCommand.js +25 -3
- package/dist/firmware/FirmwareFiles.js +23 -8
- package/dist/firmware/FirmwareProvider.js +156 -32
- package/dist/firmware/FirmwarePublication.js +24 -3
- package/dist/firmware/FirmwareRelease.js +1 -0
- package/dist/generatedPackageMetadata.js +2 -2
- package/dist/ghidra/GhidraAnalysisProfile.js +55 -4
- package/dist/ghidra/GhidraAnalysisSeeds.js +211 -0
- package/dist/ghidra/GhidraClient.js +76 -4
- package/dist/ghidra/GhidraDiagnostics.js +11 -8
- package/dist/ghidra/GhidraFunctionValues.js +26 -2
- package/dist/ghidra/GhidraInstallation.js +1 -1
- package/dist/ghidra/GhidraInventoryValues.js +23 -1
- package/dist/ghidra/GhidraLanguageCatalog.js +99 -0
- package/dist/ghidra/GhidraLauncher.js +80 -39
- package/dist/ghidra/GhidraLoadImageAttest.js +49 -2
- package/dist/ghidra/GhidraMipsProfile.js +79 -0
- package/dist/ghidra/GhidraProvider.js +57 -9
- package/dist/ghidra/GhidraProviderCapabilities.js +18 -8
- package/dist/ghidra/GhidraProviderClient.js +282 -21
- package/dist/ghidra/GhidraSessionValues.js +9 -2
- package/dist/hopper/HopperAnalysisProfile.js +2 -0
- package/dist/hopper/HopperClient.js +15 -6
- package/dist/hopper/HopperMachOImage.js +2 -0
- package/dist/hopper/HopperProvider.js +13 -2
- package/dist/ida/IdaOperationRunner.js +8 -2
- package/dist/ida/IdaProvider.js +7 -0
- package/dist/ida/IdaSessionClient.js +3 -1
- package/dist/ida/IdaWorkspace.js +4 -2
- package/dist/javascript/analysis/JavaScriptAnalysisTransfer.js +326 -0
- package/dist/javascript/analysis/JavaScriptAnalysisWorker.js +520 -0
- package/dist/javascript/analysis/JavaScriptAnalysisWorkerProtocol.js +63 -0
- package/dist/javascript/analysis/JavaScriptAnalysisWorkerSchemas.js +521 -0
- package/dist/javascript/analysis/JavaScriptAnalysisWorkerServer.js +116 -0
- package/dist/javascript/recovery/RecoveryFiles.js +18 -7
- package/dist/javascript/recovery/WakaruCommand.js +22 -9
- package/dist/javascript/recovery/WakaruExecution.js +11 -7
- package/dist/javascript/recovery/WakaruProvider.js +139 -16
- package/dist/javascript/recovery/WakaruPublication.js +14 -4
- package/dist/javascript/recovery/WakaruRelease.js +10 -3
- package/dist/javascript/recovery/WakaruReport.js +12 -7
- package/dist/javascript/recovery/WakaruVersion.js +24 -0
- package/dist/javascript/sourceMaps/SourceMapCommand.js +16 -3
- package/dist/javascript/sourceMaps/SourceMapDecoder.js +63 -7
- package/dist/javascript/sourceMaps/SourceMapFormat.js +15 -4
- package/dist/jeb/JebMcpConnection.js +179 -0
- package/dist/jeb/JebMcpEndpoint.js +40 -0
- package/dist/jeb/JebProvider.js +299 -0
- package/dist/mcpDoctor.js +15 -6
- package/dist/native/AppleDispatchCoverage.js +25 -12
- package/dist/native/AppleDispatchMetadata.js +14 -7
- package/dist/native/AppleMachoFixups.js +71 -15
- package/dist/native/AppleMachoSelection.js +23 -3
- package/dist/native/NativeMacOSProvider.js +91 -16
- package/dist/native/NativeMachoInspection.js +11 -7
- package/dist/native/NativeUiHelperRuntime.js +6 -1
- package/dist/native/NativeUiObservation.js +4 -3
- package/dist/native/pe/PeResourceLayout.js +120 -0
- package/dist/native/pe/PeResourceParser.js +286 -0
- package/dist/native/pe/PeResourcesProvider.js +63 -0
- package/dist/process/BoundedFileBytes.js +30 -7
- package/dist/process/DarwinProcessRunTokenReader.js +8 -3
- package/dist/process/OwnedCommand.js +4 -3
- package/dist/process/ProcessOwnership.js +104 -112
- package/dist/process/ProcessOwnershipObservation.js +96 -39
- package/dist/process/ProcessOwnershipProcessTree.js +4 -4
- package/dist/process/ProcessRunTokenObservations.js +48 -0
- package/dist/process/ProviderDiagnosticRedaction.js +17 -0
- package/dist/process/ProviderProcess.js +4 -3
- package/dist/process/capture/FilesystemSnapshot.js +28 -4
- package/dist/process/capture/ProcessCaptureLifecycle.js +350 -59
- package/dist/process/capture/ProcessCaptureProgress.js +62 -0
- package/dist/process/capture/ProcessHarness.js +194 -26
- package/dist/process/capture/ProcessNormalization.js +3 -1
- package/dist/process/capture/ProcessScenarioRuntimeValidation.js +5 -2
- package/dist/process/capture/TerminalRenderer.js +24 -7
- package/dist/reference/ReferenceSourceReader.js +22 -5
- package/dist/reference/ReferenceSourceReaderEntries.js +114 -51
- package/dist/reference/ReferenceSourceReaderErrors.js +12 -0
- package/dist/reference/ReferenceSourceReaderFile.js +50 -10
- package/dist/reference/ReferenceSourceReaderValidate.js +4 -4
- package/dist/server/EvidenceMcpServer.js +36 -1
- package/dist/server/admittedToolOperation.js +9 -0
- package/dist/server/contractToolHandler.js +21 -0
- package/dist/server/createServer.js +97 -25
- package/dist/server/registerAdbTools.js +36 -0
- package/dist/server/registerAnalysisViewTool.js +4 -9
- package/dist/server/registerAndroidTools.js +3 -12
- package/dist/server/registerApktoolTools.js +14 -0
- package/dist/server/registerApplicationTools/compareExportShapes.js +4 -6
- package/dist/server/registerApplicationTools/compareSourceToBundle.js +4 -5
- package/dist/server/registerApplicationTools/compareVersions.js +3 -2
- package/dist/server/registerApplicationTools/coverage.js +3 -2
- package/dist/server/registerApplicationTools/obligationLedger.js +3 -2
- package/dist/server/registerApplicationTools/projectMobileApplicationGraph.js +3 -2
- package/dist/server/registerApplicationTools/traceFeature.js +3 -2
- package/dist/server/registerApplicationTools/traceSemantics.js +4 -5
- package/dist/server/registerArtifactComparisonTool.js +5 -2
- package/dist/server/registerBinaryDiagnosticsTools.js +16 -4
- package/dist/server/registerBrowserScenarioTool.js +10 -7
- package/dist/server/registerBrowserTools.js +12 -9
- package/dist/server/registerBundleComparisonTool.js +16 -2
- package/dist/server/registerCloseLifecycleTool.js +32 -3
- package/dist/server/registerElectronTools.js +28 -10
- package/dist/server/registerEvmTools.js +4 -9
- package/dist/server/registerFirmwareTools.js +3 -11
- package/dist/server/registerFunctionComparisonTool.js +5 -2
- package/dist/server/registerJavaScriptRecoveryTool.js +4 -9
- package/dist/server/registerJavaScriptRuntimeObservationTools.js +9 -6
- package/dist/server/registerJebTools.js +16 -0
- package/dist/server/registerManagedWorkflowTools/compareManagedMembers.js +4 -6
- package/dist/server/registerManagedWorkflowTools/importManagedReconstruction.js +3 -2
- package/dist/server/registerManagedWorkflowTools/projectManagedApplicationGraph.js +3 -2
- package/dist/server/registerManagedWorkflowTools/verifyManagedNativeBoundaries.js +3 -2
- package/dist/server/registerPeResourcesTool.js +9 -0
- package/dist/server/registerProcessComparisonTool.js +5 -2
- package/dist/server/registerRecordedCrashTools.js +4 -9
- package/dist/server/registerSessionRecordTools.js +2 -1
- package/dist/server/registerSessionTools.js +49 -18
- package/dist/server/registerWebModuleTool.js +4 -9
- package/dist/server/registerWebNetworkCaptureTool.js +4 -9
- package/dist/server/registerWebRuntimeTools.js +6 -5
- package/dist/server/registerWebScriptTool.js +6 -3
- package/dist/server/registerWebSourceLocationTool.js +4 -9
- package/dist/server/toolResult.js +21 -2
- package/dist/windows/WindowsPrivateRuntime.js +12 -5
- package/install.sh +7 -4
- package/licenses/nativeaot-parser-MIT.txt +28 -0
- package/native/windows/build/manifest.json +2 -2
- package/native/windows/build/rea-windows-x64.node +0 -0
- package/package.json +33 -5
- package/scripts/rea.mjs +16 -1
- package/skills/reverse-engineer-anything/SKILL.md +52 -51
- package/skills/reverse-engineer-anything/references/connection-and-recovery.md +127 -0
- package/skills/reverse-engineer-anything/references/evidence-workflows.md +8 -0
- package/skills/reverse-engineer-anything/references/javascript-applications.md +92 -13
- package/skills/reverse-engineer-anything/references/native-and-artifacts.md +22 -1
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
import { z } from "incur";
|
|
2
|
+
import { ArtifactReaderFailure } from "../artifacts/ArtifactReader.js";
|
|
3
|
+
import { ArtifactResourceScope } from "../artifacts/ArtifactResourceScope.js";
|
|
2
4
|
import { importReferenceSource } from "../application/ReferenceSourceImport.js";
|
|
3
5
|
import { projectReferenceSourceImportError } from "../application/ReferenceSourceImportTypes.js";
|
|
4
6
|
import { parseConfig } from "../config/parseConfig.js";
|
|
@@ -54,10 +56,6 @@ export const registerUtilityCommands = (cli, logger, environment, analysis) => {
|
|
|
54
56
|
.default(500)
|
|
55
57
|
.describe("Maximum accessibility nodes per capture"),
|
|
56
58
|
}),
|
|
57
|
-
alias: {
|
|
58
|
-
windowId: "window-id",
|
|
59
|
-
maxNodes: "max-nodes",
|
|
60
|
-
},
|
|
61
59
|
run: ({ args, options }) => logCliCommand(logger, command, async () => {
|
|
62
60
|
const parameters = {
|
|
63
61
|
pid: options.pid,
|
|
@@ -129,9 +127,8 @@ const registerNativeCommands = (cli, logger, runProviderAnalysis) => {
|
|
|
129
127
|
relativePath: z
|
|
130
128
|
.string()
|
|
131
129
|
.optional()
|
|
132
|
-
.describe("Plist path relative to the app root (default:
|
|
130
|
+
.describe("Plist path relative to the app root, or an absolute path (default: the bundle's Info.plist)"),
|
|
133
131
|
}),
|
|
134
|
-
alias: { relativePath: "relative-path" },
|
|
135
132
|
run: ({ args, options }) => logCliCommand(logger, "inspect-plist", () => runProviderAnalysis(args.path, "inspect_plist", options.relativePath === undefined
|
|
136
133
|
? {}
|
|
137
134
|
: { path: options.relativePath }, logger)),
|
|
@@ -160,19 +157,70 @@ const registerReferenceSourceCommand = (cli, logger, environment) => {
|
|
|
160
157
|
error: "Import failed",
|
|
161
158
|
...projectAnalysisError(config.error),
|
|
162
159
|
};
|
|
163
|
-
|
|
164
|
-
|
|
160
|
+
return runReferenceSourceImport(args.root, config.value.referenceSourcePolicy);
|
|
161
|
+
}, isReferenceSourceImportCliFailure),
|
|
162
|
+
});
|
|
163
|
+
};
|
|
164
|
+
const runReferenceSourceImport = async (root, policy) => {
|
|
165
|
+
const resources = new ArtifactResourceScope();
|
|
166
|
+
let outcome;
|
|
167
|
+
try {
|
|
168
|
+
outcome = {
|
|
169
|
+
kind: "result",
|
|
170
|
+
imported: await importReferenceSource({
|
|
171
|
+
root,
|
|
165
172
|
caller: "rea-cli",
|
|
166
|
-
policy
|
|
173
|
+
policy,
|
|
167
174
|
importer: PRODUCT_IDENTITY.packageName,
|
|
168
175
|
importerVersion: null,
|
|
169
|
-
})
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
176
|
+
}, resources),
|
|
177
|
+
};
|
|
178
|
+
}
|
|
179
|
+
catch (cause) {
|
|
180
|
+
outcome = { kind: "thrown", cause };
|
|
181
|
+
}
|
|
182
|
+
let closeOutcome;
|
|
183
|
+
try {
|
|
184
|
+
await resources.close();
|
|
185
|
+
closeOutcome = { kind: "closed" };
|
|
186
|
+
}
|
|
187
|
+
catch (cause) {
|
|
188
|
+
closeOutcome = { kind: "failed", cause };
|
|
189
|
+
}
|
|
190
|
+
if (outcome.kind === "thrown") {
|
|
191
|
+
if (closeOutcome.kind === "failed")
|
|
192
|
+
throw new AggregateError([outcome.cause, closeOutcome.cause], "Reference source import and cleanup both failed", { cause: outcome.cause });
|
|
193
|
+
throw outcome.cause;
|
|
194
|
+
}
|
|
195
|
+
const imported = outcome.imported;
|
|
196
|
+
if (!imported.ok) {
|
|
197
|
+
const cleanup = closeOutcome.kind === "closed"
|
|
198
|
+
? imported.error.cleanup
|
|
199
|
+
: mergeReferenceSourceCleanup(imported.error.cleanup, ArtifactReaderFailure.cleanupObservation(closeOutcome.cause, "reference source"));
|
|
200
|
+
return {
|
|
201
|
+
error: "Import failed",
|
|
202
|
+
...projectReferenceSourceImportError({
|
|
203
|
+
...imported.error,
|
|
204
|
+
...(cleanup === undefined ? {} : { cleanup }),
|
|
205
|
+
}),
|
|
206
|
+
};
|
|
207
|
+
}
|
|
208
|
+
if (closeOutcome.kind === "failed")
|
|
209
|
+
return {
|
|
210
|
+
error: "Import failed",
|
|
211
|
+
...projectReferenceSourceImportError({
|
|
212
|
+
tag: "reference-source-import",
|
|
213
|
+
code: "io",
|
|
214
|
+
message: "Reference source cleanup failed after import",
|
|
215
|
+
cleanup: ArtifactReaderFailure.cleanupObservation(closeOutcome.cause, "reference source"),
|
|
216
|
+
cause: closeOutcome.cause,
|
|
217
|
+
}),
|
|
218
|
+
};
|
|
219
|
+
return imported.value;
|
|
178
220
|
};
|
|
221
|
+
const mergeReferenceSourceCleanup = (first, second) => first === undefined
|
|
222
|
+
? second
|
|
223
|
+
: {
|
|
224
|
+
reason: `${first.reason}; ${second.reason}`,
|
|
225
|
+
resources: [...new Set([...first.resources, ...second.resources])],
|
|
226
|
+
};
|
|
@@ -1,8 +1,12 @@
|
|
|
1
1
|
import { Cli, z } from "incur";
|
|
2
2
|
import { exportWebScripts } from "../application/WebScriptExportService.js";
|
|
3
|
+
import { ArtifactReaderFailure } from "../artifacts/ArtifactReader.js";
|
|
4
|
+
import { ArtifactResourceScope } from "../artifacts/ArtifactResourceScope.js";
|
|
3
5
|
import { CLI_COMMANDS } from "../cliCommandNames.js";
|
|
4
6
|
import { logCliCommand } from "../cliLogging.js";
|
|
7
|
+
import { analysisErrorWithCleanupFailure } from "../domain/analysisErrorCleanup.js";
|
|
5
8
|
import { projectAnalysisError } from "../domain/analysisErrorProjection.js";
|
|
9
|
+
import { ProviderCleanupError } from "../domain/providerCleanupError.js";
|
|
6
10
|
/** Register the local captured-script export CLI workflow. */
|
|
7
11
|
export const registerWebScriptCommands = (cli, logger) => {
|
|
8
12
|
cli.command(CLI_COMMANDS.exportWebScripts, {
|
|
@@ -16,10 +20,25 @@ export const registerWebScriptCommands = (cli, logger) => {
|
|
|
16
20
|
.describe("Absolute absent directory for verified scripts and manifest"),
|
|
17
21
|
}),
|
|
18
22
|
run: ({ args }) => logCliCommand(logger, CLI_COMMANDS.exportWebScripts, async () => {
|
|
23
|
+
const resources = new ArtifactResourceScope();
|
|
19
24
|
const result = await exportWebScripts({
|
|
20
25
|
capture_path: args.capturePath,
|
|
21
26
|
output_directory: args.outputDirectory,
|
|
22
|
-
});
|
|
27
|
+
}, resources);
|
|
28
|
+
try {
|
|
29
|
+
await resources.close();
|
|
30
|
+
}
|
|
31
|
+
catch (cause) {
|
|
32
|
+
const cleanup = ArtifactReaderFailure.cleanupObservation(cause, "Web script export resources");
|
|
33
|
+
const failure = new ProviderCleanupError("web-script-export", cleanup.resources, { reason: cleanup.reason }, { cause, operation: "export_web_scripts" });
|
|
34
|
+
const error = result.ok
|
|
35
|
+
? failure
|
|
36
|
+
: analysisErrorWithCleanupFailure(result.error, failure, "export_web_scripts");
|
|
37
|
+
return {
|
|
38
|
+
error: "Script export failed",
|
|
39
|
+
...projectAnalysisError(error),
|
|
40
|
+
};
|
|
41
|
+
}
|
|
23
42
|
return result.ok
|
|
24
43
|
? result.value
|
|
25
44
|
: {
|
|
@@ -29,14 +29,26 @@ export const registerWebSourceLocationCommands = (cli, logger, environment) => {
|
|
|
29
29
|
.min(0)
|
|
30
30
|
.describe("Zero-based UTF-16 generated column"),
|
|
31
31
|
}),
|
|
32
|
-
run: ({ args }) => withCommandCancellation(
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
32
|
+
run: ({ args }) => withCommandCancellation(async (signal) => {
|
|
33
|
+
try {
|
|
34
|
+
return await logCliCommand(logger, CLI_COMMANDS.traceWebSourceLocation, async () => {
|
|
35
|
+
const result = await service.trace({
|
|
36
|
+
manifest_path: args.manifestPath,
|
|
37
|
+
script_index: args.scriptIndex,
|
|
38
|
+
source_map: {
|
|
39
|
+
path: args.sourceMapPath,
|
|
40
|
+
url: args.sourceMapUrl,
|
|
41
|
+
},
|
|
42
|
+
generated_position: { line: args.line, column: args.column },
|
|
43
|
+
}, { signal });
|
|
44
|
+
return result.ok
|
|
45
|
+
? result.value
|
|
46
|
+
: projectAnalysisError(result.error);
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
finally {
|
|
50
|
+
await service.close();
|
|
51
|
+
}
|
|
52
|
+
}),
|
|
41
53
|
});
|
|
42
54
|
};
|
package/dist/cli.js
CHANGED
|
@@ -14,6 +14,9 @@ import { registerArtifactCommands } from "./cli/artifactCommands.js";
|
|
|
14
14
|
import { registerManagedCommands } from "./cli/managedCommands.js";
|
|
15
15
|
import { registerFirmwareCommands } from "./cli/firmwareCommands.js";
|
|
16
16
|
import { registerAndroidCommands } from "./cli/androidCommands.js";
|
|
17
|
+
import { registerApktoolCommands } from "./cli/apktoolCommands.js";
|
|
18
|
+
import { registerJebCommands } from "./cli/jebCommands.js";
|
|
19
|
+
import { registerAdbCommands } from "./cli/adbCommands.js";
|
|
17
20
|
import { registerEvidenceCommands } from "./cliEvidenceCommands.js";
|
|
18
21
|
import { registerProcessCommands } from "./cli/processCommands.js";
|
|
19
22
|
import { registerBrowserCommands } from "./cli/browserCommands.js";
|
|
@@ -57,6 +60,9 @@ export const createCli = (selectedEnvironment = process.env, resultOutput) => {
|
|
|
57
60
|
registerArtifactCommands(cli, logger, analysis.runProviderAnalysis);
|
|
58
61
|
registerManagedCommands(cli, logger, analysis.runProviderAnalysis);
|
|
59
62
|
registerAndroidCommands(cli, logger, environment);
|
|
63
|
+
registerApktoolCommands(cli, logger, environment);
|
|
64
|
+
registerJebCommands(cli, logger, environment);
|
|
65
|
+
registerAdbCommands(cli, logger, environment);
|
|
60
66
|
registerFirmwareCommands(cli, logger, environment);
|
|
61
67
|
registerBinaryDiagnosticsCommands(cli, logger, environment);
|
|
62
68
|
registerAnalysisViewCommands(cli, logger);
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { Cli } from "incur";
|
|
2
2
|
import { z } from "zod";
|
|
3
3
|
import { captureBrowserScenario } from "./application/BrowserScenarioCaptureService.js";
|
|
4
|
-
import { createBrowserScenarioProvider } from "./composition/browserScenario.js";
|
|
5
4
|
import { CLI_COMMANDS } from "./cliCommandNames.js";
|
|
6
5
|
import { parseCliJsonInput, resolveCliJsonPaths } from "./cliJsonInput.js";
|
|
7
6
|
import { logCliCommand } from "./cliLogging.js";
|
|
@@ -26,6 +25,8 @@ export const registerBrowserScenarioCommands = (cli, logger, environment) => {
|
|
|
26
25
|
const scenario = browserScenarioSchema.safeParse(resolveCliJsonPaths(input.value, [["browser", "executable_path"]]));
|
|
27
26
|
if (!scenario.success)
|
|
28
27
|
return cliError(new AnalysisInputError(OPERATION, { cause: scenario.error }, projectInputIssues(scenario.error.issues, input.value)));
|
|
28
|
+
// Load Playwright only for this command, not during CLI startup.
|
|
29
|
+
const { createBrowserScenarioProvider } = await import("./composition/browserScenario.js");
|
|
29
30
|
const result = await captureBrowserScenario(createBrowserScenarioProvider(environment), scenario.data);
|
|
30
31
|
return result.ok ? result.value : cliError(result.error);
|
|
31
32
|
}),
|
package/dist/cliCommandNames.js
CHANGED
|
@@ -41,14 +41,46 @@ export const CLI_COMMANDS = Object.freeze({
|
|
|
41
41
|
inspectManagedArtifact: "inspect-managed-artifact",
|
|
42
42
|
inspectRecordedCrash: "inspect-recorded-crash",
|
|
43
43
|
inspectBinaryLayout: "inspect-binary-layout",
|
|
44
|
+
inspectPeResources: "inspect-pe-resources",
|
|
44
45
|
inspectAnalysisView: "inspect-analysis-view",
|
|
46
|
+
inspectEvidenceBundle: "inspect-evidence-bundle",
|
|
45
47
|
inspectFirmwareRegions: "inspect-firmware-regions",
|
|
46
48
|
extractFirmware: "extract-firmware",
|
|
47
49
|
inspectAndroidPackage: "inspect-android-package",
|
|
50
|
+
inspectApktoolClient: "inspect-apktool-client",
|
|
51
|
+
decodeAndroidResources: "decode-android-resources",
|
|
52
|
+
inspectAdbClient: "inspect-adb-client",
|
|
53
|
+
listAdbDevices: "list-adb-devices",
|
|
54
|
+
inspectAdbDevice: "inspect-adb-device",
|
|
55
|
+
listAdbPackages: "list-adb-packages",
|
|
56
|
+
pullAdbPackage: "pull-adb-package",
|
|
57
|
+
readAdbLogcat: "read-adb-logcat",
|
|
58
|
+
inspectAdbPackage: "inspect-adb-package",
|
|
59
|
+
pullAdbFile: "pull-adb-file",
|
|
60
|
+
pushAdbFile: "push-adb-file",
|
|
61
|
+
captureAdbScreen: "capture-adb-screen",
|
|
62
|
+
listAdbProcesses: "list-adb-processes",
|
|
63
|
+
listAdbDirectory: "list-adb-directory",
|
|
64
|
+
listAdbFeatures: "list-adb-features",
|
|
65
|
+
listAdbServices: "list-adb-services",
|
|
66
|
+
inspectAdbDisplay: "inspect-adb-display",
|
|
67
|
+
inspectAdbWindow: "inspect-adb-window",
|
|
68
|
+
readAdbSetting: "read-adb-setting",
|
|
69
|
+
collectAdbBugreport: "collect-adb-bugreport",
|
|
70
|
+
resolveAdbPackages: "resolve-adb-packages",
|
|
71
|
+
installAdbPackage: "install-adb-package",
|
|
72
|
+
uninstallAdbPackage: "uninstall-adb-package",
|
|
73
|
+
startAdbApp: "start-adb-app",
|
|
74
|
+
startAdbActivity: "start-adb-activity",
|
|
75
|
+
stopAdbApp: "stop-adb-app",
|
|
48
76
|
searchAndroidClasses: "search-android-classes",
|
|
49
77
|
inspectAndroidClass: "inspect-android-class",
|
|
50
78
|
inspectAndroidMethod: "inspect-android-method",
|
|
51
79
|
traceAndroidReferences: "trace-android-references",
|
|
80
|
+
inspectJebClient: "inspect-jeb-client",
|
|
81
|
+
openJebProject: "open-jeb-project",
|
|
82
|
+
listJebUnits: "list-jeb-units",
|
|
83
|
+
decompileJebItem: "decompile-jeb-item",
|
|
52
84
|
inspectManagedMembers: "inspect-managed-members",
|
|
53
85
|
inspectManagedNativeBoundaries: "inspect-managed-native-boundaries",
|
|
54
86
|
compareManagedMembers: "compare-managed-members",
|
package/dist/cliJsonInput.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { resolve } from "node:path";
|
|
2
|
-
import {
|
|
2
|
+
import { readJsonInputFile } from "./application/JsonInputFile.js";
|
|
3
3
|
import { NonRegularFileReadError } from "./filesystem/RegularFile.js";
|
|
4
4
|
import { AnalysisAccessDeniedError, AnalysisInputError, } from "./domain/analysisErrorCore.js";
|
|
5
5
|
import { projectAnalysisError } from "./domain/analysisErrorProjection.js";
|
|
@@ -10,7 +10,7 @@ export const parseCliJsonInput = async (value, operation) => {
|
|
|
10
10
|
if (inline.ok)
|
|
11
11
|
return { ok: true, value: inline.value };
|
|
12
12
|
try {
|
|
13
|
-
const parsed = await
|
|
13
|
+
const parsed = await readJsonInputFile(value, operation);
|
|
14
14
|
return parsed.ok
|
|
15
15
|
? { ok: true, value: parsed.value }
|
|
16
16
|
: {
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { z } from "incur";
|
|
2
|
+
import { javaScriptAnalysisResourceControlsSchema } from "./domain/javascript/javascriptAnalysisResourceControls.js";
|
|
2
3
|
/** Accept an agent-selected browser observation duration without an artificial ceiling. */
|
|
3
4
|
export const observationDuration = (fallback, minimum = 0) => z
|
|
4
5
|
.number()
|
|
@@ -53,6 +54,8 @@ export const electronPageInspectionOptions = z.object({
|
|
|
53
54
|
.describe("Include JavaScript source text"),
|
|
54
55
|
});
|
|
55
56
|
export const javascriptApplicationOptions = z.object({
|
|
57
|
+
maxHeapMb: javaScriptAnalysisResourceControlsSchema.shape.max_heap_mb,
|
|
58
|
+
analysisTimeoutMs: javaScriptAnalysisResourceControlsSchema.shape.analysis_timeout_ms,
|
|
56
59
|
artifactFormat: z
|
|
57
60
|
.enum(["auto", "asar", "directory"])
|
|
58
61
|
.default("auto")
|
|
@@ -2,6 +2,10 @@ import { RecordedCrashService } from "../application/binaryDiagnostics/RecordedC
|
|
|
2
2
|
import { PwntoolsRecordedCrashProvider } from "../native/pwntools/PwntoolsRecordedCrashProvider.js";
|
|
3
3
|
import { BinaryLayoutService } from "../application/binaryDiagnostics/BinaryLayoutService.js";
|
|
4
4
|
import { PwntoolsLayoutProvider } from "../native/pwntools/PwntoolsLayoutProvider.js";
|
|
5
|
+
import { PeResourcesService } from "../application/binaryDiagnostics/PeResourcesService.js";
|
|
6
|
+
import { PeResourcesProvider } from "../native/pe/PeResourcesProvider.js";
|
|
7
|
+
/** Portable PE inspection with no engine, installation or target acquisition. */
|
|
8
|
+
export const createPeResourcesService = () => new PeResourcesService(new PeResourcesProvider());
|
|
5
9
|
/** Compose the offline adapter without import-time I/O or dependency acquisition. */
|
|
6
10
|
export const createBinaryLayoutService = (environment = process.env) => new BinaryLayoutService(new PwntoolsLayoutProvider(environment));
|
|
7
11
|
/** Compose recorded-core inspection without acquiring a debugger or toolchain. */
|
|
@@ -2,14 +2,19 @@ import { snapshotEnvironment } from "../process/snapshotEnvironment.js";
|
|
|
2
2
|
import { parseConfig } from "../config/parseConfig.js";
|
|
3
3
|
import { runDirectAnalysis as executeDirectAnalysis, runProviderAnalysis as executeProviderAnalysis, runManagedProviderExecution as executeManagedProvider, } from "../application/DirectAnalysis.js";
|
|
4
4
|
import { runSessionStatus as executeSessionStatus } from "../application/DirectAnalysisStatus.js";
|
|
5
|
-
import { createBinarySession, createManagedBinarySession } from "./binary.js";
|
|
6
5
|
/** Bind one-shot analysis and status commands to one caller-selected environment. */
|
|
7
6
|
export const createDirectAnalysis = (selectedEnvironment) => {
|
|
8
7
|
const environment = snapshotEnvironment(selectedEnvironment);
|
|
9
8
|
const dependencies = {
|
|
10
9
|
readConfiguration: () => parseConfig(environment),
|
|
11
|
-
createBinarySession: (config, logger) =>
|
|
12
|
-
|
|
10
|
+
createBinarySession: async (config, logger) => {
|
|
11
|
+
const { createBinarySession } = await import("./binary.js");
|
|
12
|
+
return createBinarySession(config, logger, environment);
|
|
13
|
+
},
|
|
14
|
+
createManagedBinarySession: async () => {
|
|
15
|
+
const { createManagedBinarySession } = await import("./binary.js");
|
|
16
|
+
return createManagedBinarySession();
|
|
17
|
+
},
|
|
13
18
|
};
|
|
14
19
|
return {
|
|
15
20
|
runDirectAnalysis: executeDirectAnalysis.bind(undefined, dependencies),
|
|
@@ -19,5 +24,8 @@ export const createDirectAnalysis = (selectedEnvironment) => {
|
|
|
19
24
|
};
|
|
20
25
|
/** Execute managed metadata without configuration or native provider candidates. */
|
|
21
26
|
export const runManagedProviderExecution = executeManagedProvider.bind(undefined, {
|
|
22
|
-
createManagedBinarySession
|
|
27
|
+
createManagedBinarySession: async () => {
|
|
28
|
+
const { createManagedBinarySession } = await import("./binary.js");
|
|
29
|
+
return createManagedBinarySession();
|
|
30
|
+
},
|
|
23
31
|
});
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { parseJavaScriptSource } from "../domain/javascript/javascriptSourceParser.js";
|
|
2
|
+
import { analyzeParsedJavaScriptStaticSourceSteps } from "../domain/javascript/javascriptStaticAnalysis.js";
|
|
3
|
+
import { analyzeParsedJavaScriptSemanticsSteps, classifyParsedJavaScriptOpenReceiversSteps, } from "../domain/javascript/javascriptSemanticAnalysis.js";
|
|
4
|
+
import { failedJavaScriptStaticAnalysis } from "../domain/javascript/javascriptStaticAnalysisHelpers.js";
|
|
5
|
+
import { projectJavaScriptModuleSemantics } from "../domain/javascript/javascriptModuleSemanticIr.js";
|
|
6
|
+
import { measureJavaScriptModuleTransfer } from "../javascript/analysis/JavaScriptAnalysisTransfer.js";
|
|
7
|
+
import { AnalysisResourceConstraintError } from "../domain/analysisErrorCore.js";
|
|
8
|
+
import { projectJavaScriptSemanticFileSteps } from "../application/javascript/JavaScriptSemanticGraphBuilder.js";
|
|
9
|
+
import { completeJavaScriptAnalysisSteps } from "../application/javascript/JavaScriptAnalysisControl.js";
|
|
10
|
+
import { serveJavaScriptAnalysisWorker, } from "../javascript/analysis/JavaScriptAnalysisWorkerServer.js";
|
|
11
|
+
const analyze = async (file, nodeBudget, callbacks) => {
|
|
12
|
+
if (!file.text.included)
|
|
13
|
+
throw new TypeError("JavaScript worker requires decoded source text");
|
|
14
|
+
await callbacks.phase("parse");
|
|
15
|
+
let parsed = parseJavaScriptSource(file.text.value, file.path);
|
|
16
|
+
if (parsed === null) {
|
|
17
|
+
await callbacks.checkpoint(failedJavaScriptStaticAnalysis());
|
|
18
|
+
return null;
|
|
19
|
+
}
|
|
20
|
+
await callbacks.phase("static");
|
|
21
|
+
const receivers = await completeJavaScriptAnalysisSteps(classifyParsedJavaScriptOpenReceiversSteps(parsed));
|
|
22
|
+
const facts = await completeJavaScriptAnalysisSteps(analyzeParsedJavaScriptStaticSourceSteps(file.text.value, parsed, receivers));
|
|
23
|
+
const resultBudgetBytes = await callbacks.checkpoint(facts);
|
|
24
|
+
if (facts.parse_status === "failed")
|
|
25
|
+
return null;
|
|
26
|
+
if (resultBudgetBytes === 0)
|
|
27
|
+
throw new AnalysisResourceConstraintError("analyze_javascript_application", "memory", `The parent reserved its remaining result capacity for static observations; semantic analysis of ${file.path} was not started`, { semantic_result_budget_bytes: 0 });
|
|
28
|
+
await callbacks.phase("semantic");
|
|
29
|
+
const ir = await completeJavaScriptAnalysisSteps(analyzeParsedJavaScriptSemanticsSteps(parsed));
|
|
30
|
+
parsed = null;
|
|
31
|
+
const module = projectJavaScriptModuleSemantics(ir);
|
|
32
|
+
const measured = measureJavaScriptModuleTransfer(module);
|
|
33
|
+
if (measured.retentionBytes > resultBudgetBytes)
|
|
34
|
+
throw new AnalysisResourceConstraintError("analyze_javascript_application", "memory", `Completed module facts for ${file.path} exceed the parent's offered result budget; static facts were retained`, {
|
|
35
|
+
semantic_result_budget_bytes: resultBudgetBytes,
|
|
36
|
+
module_transfer_bytes: measured.bytes,
|
|
37
|
+
});
|
|
38
|
+
await callbacks.phase("projection");
|
|
39
|
+
const projection = await completeJavaScriptAnalysisSteps(projectJavaScriptSemanticFileSteps(file, ir, nodeBudget));
|
|
40
|
+
return { module, projection };
|
|
41
|
+
};
|
|
42
|
+
try {
|
|
43
|
+
await serveJavaScriptAnalysisWorker(analyze);
|
|
44
|
+
}
|
|
45
|
+
catch (cause) {
|
|
46
|
+
process.stderr.write(`${cause instanceof Error ? cause.message : String(cause)}\n`);
|
|
47
|
+
process.exitCode = 1;
|
|
48
|
+
}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { JebProvider } from "../jeb/JebProvider.js";
|
|
2
|
+
/** Construct one JEB provider bound to the caller-selected MCP endpoint. */
|
|
3
|
+
export const createJebAnalysisProvider = (environment = process.env, connectionFactory) => new JebProvider({
|
|
4
|
+
environment,
|
|
5
|
+
...(connectionFactory === undefined ? {} : { connectionFactory }),
|
|
6
|
+
});
|
|
@@ -3,11 +3,14 @@ import { isAbsolute } from "node:path";
|
|
|
3
3
|
import { ConfigurationError } from "../domain/configurationErrors.js";
|
|
4
4
|
import { err, ok } from "../domain/result.js";
|
|
5
5
|
import { analysisProviderSelectorSchema } from "../contracts/providerSelection.js";
|
|
6
|
+
import { ghidraCompilerSpecIdSchema, ghidraLanguageIdSchema, } from "./ghidraLanguageOverride.js";
|
|
6
7
|
import { ghidraStartupTimeoutSchema } from "./ghidraStartupTimeout.js";
|
|
8
|
+
import { mcpInputSchemaProfileSchema } from "./mcpInputSchemaProfile.js";
|
|
7
9
|
import { mcpResponseBudgetSchema } from "./mcpResponseBudget.js";
|
|
8
10
|
const environmentSchema = z.object({
|
|
9
11
|
REA_ANALYSIS_PROVIDER: analysisProviderSelectorSchema.default("auto"),
|
|
10
12
|
REA_MCP_MAX_RESPONSE_BYTES: mcpResponseBudgetSchema.optional(),
|
|
13
|
+
REA_MCP_INPUT_SCHEMA_PROFILE: mcpInputSchemaProfileSchema.optional(),
|
|
11
14
|
REA_IDA_MCP_CONFIG: z
|
|
12
15
|
.string()
|
|
13
16
|
.min(1)
|
|
@@ -29,6 +32,13 @@ const environmentSchema = z.object({
|
|
|
29
32
|
.refine(isAbsolute, "REA_GHIDRA_NATIVEAOT_JAR must be absolute")
|
|
30
33
|
.optional(),
|
|
31
34
|
REA_GHIDRA_STARTUP_TIMEOUT_MS: ghidraStartupTimeoutSchema,
|
|
35
|
+
REA_GHIDRA_LANGUAGE_ID: ghidraLanguageIdSchema.optional(),
|
|
36
|
+
REA_GHIDRA_COMPILER_SPEC_ID: ghidraCompilerSpecIdSchema.optional(),
|
|
37
|
+
REA_GHIDRA_SEED_FILE: z
|
|
38
|
+
.string()
|
|
39
|
+
.min(1)
|
|
40
|
+
.refine(isAbsolute, "REA_GHIDRA_SEED_FILE must be absolute")
|
|
41
|
+
.optional(),
|
|
32
42
|
REA_ILSPY_CMD_PATH: z
|
|
33
43
|
.string()
|
|
34
44
|
.min(1)
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
// Ghidra language IDs are four colon-separated fields; variants may contain
|
|
3
|
+
// spaces ("x86:LE:16:Real Mode") but never leading or trailing whitespace.
|
|
4
|
+
export const ghidraLanguageIdSchema = z
|
|
5
|
+
.string()
|
|
6
|
+
.regex(/^[A-Za-z0-9_.+-]+:(?:LE|BE):[1-9]\d*:[A-Za-z0-9_.+-](?:[A-Za-z0-9_.+ -]*[A-Za-z0-9_.+-])?$/u, "must be a Ghidra language ID such as x86:LE:32:default");
|
|
7
|
+
export const ghidraCompilerSpecIdSchema = z
|
|
8
|
+
.string()
|
|
9
|
+
.regex(/^[A-Za-z0-9_.+-]+$/u, "must be a Ghidra compiler-spec ID such as default or borlandcpp");
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { ConfigurationError } from "../domain/configurationErrors.js";
|
|
3
|
+
import { err, ok } from "../domain/result.js";
|
|
4
|
+
// Moonshot's function-calling API rejects requests while any single tool
|
|
5
|
+
// parameters schema exceeds its literal serialized size cap. Community
|
|
6
|
+
// measurements bound the cap between ~13.7 KB (accepted) and ~15 KB
|
|
7
|
+
// (rejected); 13 KiB leaves margin under the lower bound. See
|
|
8
|
+
// https://github.com/morluto/rea/issues/1484 for the measured evidence.
|
|
9
|
+
export const COMPACT_INPUT_SCHEMA_BUDGET_BYTES = 13 * 1024;
|
|
10
|
+
export const mcpInputSchemaProfileSchema = z.enum(["full", "compact"]);
|
|
11
|
+
const profileConstraint = 'REA_MCP_INPUT_SCHEMA_PROFILE must be "full" (default) or "compact". The compact profile advertises input schemas without nested annotation prose for providers that cap each tool schema\'s serialized size.';
|
|
12
|
+
/** Parse the advertised input schema presentation selection. */
|
|
13
|
+
export const parseMcpInputSchemaProfile = (value) => {
|
|
14
|
+
if (value === undefined)
|
|
15
|
+
return ok(undefined);
|
|
16
|
+
const parsed = mcpInputSchemaProfileSchema.safeParse(value);
|
|
17
|
+
return parsed.success
|
|
18
|
+
? ok(parsed.data)
|
|
19
|
+
: err(new ConfigurationError(profileConstraint, {
|
|
20
|
+
settings: [
|
|
21
|
+
{
|
|
22
|
+
setting: "REA_MCP_INPUT_SCHEMA_PROFILE",
|
|
23
|
+
constraint: profileConstraint,
|
|
24
|
+
},
|
|
25
|
+
],
|
|
26
|
+
}));
|
|
27
|
+
};
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { accessSync, constants } from "node:fs";
|
|
2
2
|
import { join } from "node:path";
|
|
3
3
|
import { ConfigurationError } from "../domain/configurationErrors.js";
|
|
4
|
-
import { ok } from "../domain/result.js";
|
|
4
|
+
import { err, ok } from "../domain/result.js";
|
|
5
5
|
import { parseEnvironment } from "./environment.js";
|
|
6
6
|
import { homeDirectoryFromEnvironment } from "./homeDirectory.js";
|
|
7
7
|
import { parseStringArray, parseLoaderArgs } from "./parsers.js";
|
|
@@ -36,10 +36,24 @@ export const parseConfig = (environment) => {
|
|
|
36
36
|
const secretPatterns = parseStringArray(env.REA_REFERENCE_SECRET_PATTERNS_JSON, "REA_REFERENCE_SECRET_PATTERNS_JSON");
|
|
37
37
|
if (!secretPatterns.ok)
|
|
38
38
|
return secretPatterns;
|
|
39
|
+
// Ghidra's analyzeHeadless accepts -cspec only together with -processor.
|
|
40
|
+
if (env.REA_GHIDRA_COMPILER_SPEC_ID !== undefined &&
|
|
41
|
+
env.REA_GHIDRA_LANGUAGE_ID === undefined)
|
|
42
|
+
return err(new ConfigurationError("Invalid REA environment configuration", {
|
|
43
|
+
settings: [
|
|
44
|
+
{
|
|
45
|
+
setting: "REA_GHIDRA_COMPILER_SPEC_ID",
|
|
46
|
+
constraint: "requires REA_GHIDRA_LANGUAGE_ID",
|
|
47
|
+
},
|
|
48
|
+
],
|
|
49
|
+
}));
|
|
39
50
|
return ok({
|
|
40
51
|
...(env.REA_MCP_MAX_RESPONSE_BYTES === undefined
|
|
41
52
|
? {}
|
|
42
53
|
: { mcpMaxResponseBytes: env.REA_MCP_MAX_RESPONSE_BYTES }),
|
|
54
|
+
...(env.REA_MCP_INPUT_SCHEMA_PROFILE === undefined
|
|
55
|
+
? {}
|
|
56
|
+
: { mcpInputSchemaProfile: env.REA_MCP_INPUT_SCHEMA_PROFILE }),
|
|
43
57
|
analysisProvider: env.REA_ANALYSIS_PROVIDER,
|
|
44
58
|
...(env.REA_IDA_MCP_CONFIG === undefined
|
|
45
59
|
? {}
|
|
@@ -47,6 +61,19 @@ export const parseConfig = (environment) => {
|
|
|
47
61
|
ghidraInstallDir: env.GHIDRA_INSTALL_DIR,
|
|
48
62
|
ghidraJavaHome: env.JAVA_HOME,
|
|
49
63
|
ghidraStartupTimeoutMs: env.REA_GHIDRA_STARTUP_TIMEOUT_MS,
|
|
64
|
+
...(env.REA_GHIDRA_LANGUAGE_ID === undefined
|
|
65
|
+
? {}
|
|
66
|
+
: {
|
|
67
|
+
ghidraLanguageOverride: {
|
|
68
|
+
languageId: env.REA_GHIDRA_LANGUAGE_ID,
|
|
69
|
+
...(env.REA_GHIDRA_COMPILER_SPEC_ID === undefined
|
|
70
|
+
? {}
|
|
71
|
+
: { compilerSpecId: env.REA_GHIDRA_COMPILER_SPEC_ID }),
|
|
72
|
+
},
|
|
73
|
+
}),
|
|
74
|
+
...(env.REA_GHIDRA_SEED_FILE === undefined
|
|
75
|
+
? {}
|
|
76
|
+
: { ghidraSeedFile: env.REA_GHIDRA_SEED_FILE }),
|
|
50
77
|
...(env.REA_GHIDRA_NATIVEAOT_JAR === undefined
|
|
51
78
|
? {}
|
|
52
79
|
: { ghidraNativeAotJar: env.REA_GHIDRA_NATIVEAOT_JAR }),
|