rea-agents 6.4.0 → 6.5.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/DISCLAIMER.md +136 -0
- package/README.md +67 -16
- package/THIRD_PARTY_NOTICES.md +134 -0
- package/bridge/android/ReaJadxBridge.java +123 -11
- package/bridge/cutter/rea_bridge.py +816 -0
- package/bridge/ghidra/ReaGhidraAnalysisOptions.java +38 -0
- package/bridge/ghidra/ReaGhidraBridge.java +1181 -123
- package/bridge/ghidra/ReaGhidraBundleActivator.java +14 -0
- package/bridge/ghidra/ReaGhidraMipsSoftFloat.java +176 -0
- package/bridge/ghidra/ReaGhidraPrepareRaw.java +49 -0
- package/bridge/hopper_bridge.py +103 -69
- package/bridge/mitmproxy/capture.py +189 -13
- package/bridge/native/rea_lldb_tracer.py +40 -6
- package/bridge/process/ProcessRunTokenReader.swift +76 -34
- package/bridge/pwntools/layout_impl.py +5 -0
- package/bridge/pwntools/recorded_crash_impl.py +31 -10
- package/dist/adb/AdbConfiguration.js +15 -3
- package/dist/adb/AdbDeviceOutput.js +59 -37
- package/dist/adb/AdbDirectoryListing.js +80 -0
- package/dist/adb/AdbHostFileName.js +34 -0
- package/dist/adb/AdbProvider.js +416 -173
- package/dist/adb/AdbShellOutput.js +55 -57
- package/dist/android/JadxAnalysis.js +32 -7
- package/dist/android/JadxConfiguration.js +119 -29
- package/dist/android/JadxDoctor.js +115 -0
- package/dist/android/JadxMcpTransport.js +5 -3
- package/dist/android/JadxProtocol.js +14 -0
- package/dist/android/JadxProvider.js +15 -9
- package/dist/android/JadxRelease.js +12 -1
- package/dist/android/JadxWorkspaceRoot.js +157 -0
- package/dist/apktool/ApktoolConfiguration.js +165 -22
- package/dist/apktool/ApktoolDecodeOutput.js +124 -41
- package/dist/apktool/ApktoolProvider.js +70 -33
- package/dist/application/AnalysisContextQueries.js +5 -8
- package/dist/application/AnalysisProvider.js +24 -20
- package/dist/application/AppBundleExecutable.js +5 -5
- package/dist/application/BinaryTargetResolver.js +195 -38
- package/dist/application/BrowserEvidence.js +1 -1
- package/dist/application/BrowserObservationService.js +13 -2
- package/dist/application/BrowserScenarioCaptureService.js +0 -1
- package/dist/application/CallPathTracing.js +52 -13
- package/dist/application/CapabilityInventory.js +168 -28
- package/dist/application/ClaudeDesktopConfigLocation.js +152 -0
- package/dist/application/ClientConfigurationDocument.js +102 -25
- package/dist/application/ClientConfigurationFiles.js +51 -14
- package/dist/application/ClientRegistrationEnvironment.js +10 -4
- package/dist/application/ClientRegistrationIdentity.js +94 -29
- package/dist/application/ClientRegistrationStatus.js +180 -59
- package/dist/application/DirectAnalysis.js +85 -30
- package/dist/application/DirectAnalysisStatus.js +13 -1
- package/dist/application/Doctor.js +113 -32
- package/dist/application/DoctorDiagnostics.js +34 -12
- package/dist/application/DoctorProviderIds.js +2 -0
- package/dist/application/DoctorScope.js +11 -2
- package/dist/application/DshCordisPatch.js +355 -0
- package/dist/application/DshCordisYaml.js +155 -0
- package/dist/application/EnhancedLiteralTracing.js +30 -16
- package/dist/application/EnhancedToolTypes.js +0 -1
- package/dist/application/EnhancedTools.js +164 -54
- package/dist/application/EvidenceBundleCommands.js +30 -7
- package/dist/application/EvidenceBundleFiles.js +29 -7
- package/dist/application/FunctionAnalysisEvidence.js +3 -0
- package/dist/application/GeminiClientSettings.js +25 -13
- package/dist/application/HermesConfigurationYaml.js +272 -0
- package/dist/application/InventoryProjectionEvidence.js +0 -1
- package/dist/application/InvestigationProviders.js +13 -3
- package/dist/application/JsonFiles.js +110 -20
- package/dist/application/JsonInputFile.js +220 -62
- package/dist/application/LinuxHopper.js +126 -48
- package/dist/application/MacHopper.js +21 -17
- package/dist/application/MacHopperPaths.js +40 -0
- package/dist/application/{MipsElfAbiFlags.js → MipsElfMetadata.js} +70 -9
- package/dist/application/MipsElfSharedLoad.js +164 -0
- package/dist/application/MipsGnuAttributes.js +90 -0
- package/dist/application/MsixPackageStorage.js +133 -0
- package/dist/application/ProgressReporter.js +1 -1
- package/dist/application/ProviderOperationExecution.js +11 -3
- package/dist/application/ReconstructionCoverageService.js +0 -1
- package/dist/application/ReconstructionObligationCandidates.js +3 -2
- package/dist/application/ReconstructionObligationLedgerDiagnostics.js +2 -2
- package/dist/application/ReconstructionObligationLedgerEvaluation.js +15 -33
- package/dist/application/ReconstructionObligationLedgerProjection.js +3 -72
- package/dist/application/ReconstructionObligationLedgerService.js +3 -1
- package/dist/application/ReconstructionObligationOriginalCases.js +2 -1
- package/dist/application/ReferenceSourceImport.js +24 -8
- package/dist/application/ReferenceSourceImportEntries.js +22 -21
- package/dist/application/ReferenceSourceImportTypes.js +0 -1
- package/dist/application/ReferenceSourceVcsAdapter.js +33 -16
- package/dist/application/RegularFileRead.js +46 -18
- package/dist/application/Setup.js +36 -10
- package/dist/application/SetupClientConfiguration.js +206 -37
- package/dist/application/SetupClients.js +12 -6
- package/dist/application/SetupHost.js +66 -24
- package/dist/application/SetupInstallFailure.js +42 -2
- package/dist/application/SetupPlan.js +79 -50
- package/dist/application/SetupRecoveryBackup.js +66 -0
- package/dist/application/SetupRegistrationEnvironment.js +2 -1
- package/dist/application/SetupSkill.js +323 -76
- package/dist/application/SupportedClients.js +162 -28
- package/dist/application/TypeScriptEmittedSourceCandidates.js +26 -0
- package/dist/application/Uninstall.js +273 -82
- package/dist/application/UninstallFailure.js +14 -0
- package/dist/application/Update.js +54 -25
- package/dist/application/UpdateFailure.js +17 -0
- package/dist/application/UpdateMaintenance.js +11 -29
- package/dist/application/UpdateRuntime.js +141 -27
- package/dist/application/WebModuleTraceService.js +7 -0
- package/dist/application/WebNetworkCaptureService.js +16 -7
- package/dist/application/WebSourceLocationService.js +20 -4
- package/dist/application/WindowsCapabilities.js +18 -15
- package/dist/application/WorkflowEvidence.js +24 -1
- package/dist/application/analysisView/AnalysisViewService.js +90 -12
- package/dist/application/android/AndroidPackageInspection.js +25 -0
- package/dist/application/android/AndroidSearchEvidenceSummary.js +100 -0
- package/dist/application/binary/AnalysisProviderEvaluation.js +1 -1
- package/dist/application/binary/AnalysisProviderRegistry.js +36 -21
- package/dist/application/binary/AnalysisSnapshotCache.js +41 -20
- package/dist/application/binary/AnalysisSnapshotFiles.js +75 -9
- package/dist/application/binary/BinarySession.js +248 -96
- package/dist/application/binary/BinarySessionExecution.js +5 -4
- package/dist/application/binary/BinarySessionOpen.js +13 -6
- package/dist/application/binary/BinarySessionRecords.js +33 -7
- package/dist/application/binary/BinarySessionStatus.js +93 -23
- package/dist/application/binary/BinaryTargetSummary.js +9 -0
- package/dist/application/binary/CompositeProvider.js +71 -28
- package/dist/application/binary/LazyAnalysisProvider.js +3 -1
- package/dist/application/binary/SessionProviderRouter.js +5 -2
- package/dist/application/binaryDiagnostics/BinaryLayoutService.js +11 -1
- package/dist/application/binaryDiagnostics/PeResourcesService.js +3 -0
- package/dist/application/binaryDiagnostics/RecordedCrashService.js +14 -3
- package/dist/application/captures/PacketCaptureService.js +83 -0
- package/dist/application/closeOwnedWebResources.js +7 -0
- package/dist/application/electron/ElectronFusePort.js +1 -0
- package/dist/application/electron/ElectronFuseService.js +80 -0
- package/dist/application/evm/EvmInterfaceService.js +1 -0
- package/dist/application/flutter/DartAotInspection.js +26 -0
- package/dist/application/flutter/FlutterBuildAnalysisPort.js +1 -0
- package/dist/application/flutter/FlutterBuildAnalysisService.js +13 -0
- package/dist/application/frida/FridaInstrumentationPort.js +8 -0
- package/dist/application/frida/FridaInstrumentationService.js +310 -0
- package/dist/application/frida/fridaInputErrors.js +17 -0
- package/dist/application/go/GoBinaryPort.js +1 -0
- package/dist/application/go/GoBinaryService.js +80 -0
- package/dist/application/harmony/HarmonyApplicationService.js +17 -0
- package/dist/application/investigation/EvidenceLedger.js +40 -14
- package/dist/application/investigation/InvestigationRecords.js +12 -21
- package/dist/application/investigation/UnknownEvidence.js +22 -18
- package/dist/application/javascript/ElectronActiveObservationService.js +55 -25
- package/dist/application/javascript/ElectronBoundaryAnalysis.js +17 -3
- package/dist/application/javascript/ElectronBoundaryGraph.js +2 -0
- package/dist/application/javascript/ElectronBoundaryGraphCallPaths.js +144 -0
- package/dist/application/javascript/ElectronBoundaryGraphIpc.js +26 -7
- package/dist/application/javascript/ElectronBoundaryGraphNative.js +1 -1
- package/dist/application/javascript/ElectronBoundaryGraphWindows.js +47 -9
- package/dist/application/javascript/ElectronObservationService.js +0 -1
- package/dist/application/javascript/JavaScriptApplicationEvidence.js +15 -0
- package/dist/application/javascript/JavaScriptApplicationService.js +29 -14
- package/dist/application/javascript/JavaScriptApplicationWorkflowService.js +0 -1
- package/dist/application/javascript/JavaScriptArtifactAnalysis.js +86 -34
- package/dist/application/javascript/JavaScriptArtifactGraphAccumulator.js +51 -21
- package/dist/application/javascript/JavaScriptArtifactGraphBuilder.js +31 -7
- package/dist/application/javascript/JavaScriptArtifactGraphContext.js +25 -4
- package/dist/application/javascript/JavaScriptArtifactGraphDocuments.js +25 -14
- package/dist/application/javascript/JavaScriptArtifactGraphFindings.js +147 -41
- package/dist/application/javascript/JavaScriptArtifactGraphStructure.js +156 -7
- package/dist/application/javascript/JavaScriptArtifactPathResolution.js +892 -181
- package/dist/application/javascript/JavaScriptArtifactReconstruction.js +43 -30
- package/dist/application/javascript/JavaScriptArtifactReconstructionInput.js +2 -0
- package/dist/application/javascript/JavaScriptModuleRelationships.js +33 -11
- package/dist/application/javascript/JavaScriptRecoveryService.js +29 -9
- package/dist/application/javascript/JavaScriptRuntimeObservationService.js +2 -1
- package/dist/application/javascript/JavaScriptRuntimeReconciliationService.js +0 -1
- package/dist/application/javascript/JavaScriptSemanticGraphBuilder.js +42 -26
- package/dist/application/javascript/JavaScriptSemanticGraphElectronProjection.js +67 -0
- package/dist/application/javascript/JavaScriptSemanticTraceService.js +0 -1
- package/dist/application/managed/ManagedApplicationGraphService.js +0 -1
- package/dist/application/managed/ManagedMemberComparisonService.js +72 -54
- package/dist/application/managed/ManagedNativeVerificationService.js +0 -1
- package/dist/application/managed/ManagedReconstructionService.js +0 -1
- package/dist/application/native/NativeCallRoutes.js +54 -34
- package/dist/application/native/NativeDispatchMetadataInspection.js +6 -2
- package/dist/application/native/NativeUiActionTrace.js +35 -22
- package/dist/application/native/NativeValueTrace.js +57 -23
- package/dist/application/pcap/PcapAnalysisPort.js +1 -0
- package/dist/application/pcap/PcapAnalysisService.js +24 -0
- package/dist/application/process/ProcessCli.js +33 -13
- package/dist/application/reverse/ReverseEngineeringCommandPort.js +1 -0
- package/dist/application/reverse/ReverseEngineeringService.js +688 -0
- package/dist/application/rust/RustBinaryPort.js +1 -0
- package/dist/application/rust/RustBinaryService.js +80 -0
- package/dist/application/signals/SignalRecordingService.js +83 -0
- package/dist/application/sqlite/SqliteDatabaseCapability.js +30 -0
- package/dist/application/sqlite/SqliteDatabasePort.js +1 -0
- package/dist/application/sqlite/SqliteDatabaseService.js +76 -0
- package/dist/application/wasm/WasmArtifactPort.js +1 -0
- package/dist/application/wasm/WasmArtifactService.js +77 -0
- package/dist/application/wasm/WasmInterfaceComparisonService.js +188 -0
- package/dist/artifacts/ArtifactHash.js +13 -2
- package/dist/artifacts/ArtifactPaths.js +4 -7
- package/dist/artifacts/ArtifactProvider.js +8 -4
- package/dist/artifacts/ArtifactReader.js +13 -1
- package/dist/artifacts/ArtifactResourceScope.js +12 -3
- package/dist/artifacts/AsarArtifactReader.js +177 -112
- package/dist/artifacts/AsarListing.js +78 -0
- package/dist/artifacts/DirectoryArtifactReader.js +94 -24
- package/dist/artifacts/MachOSliceArtifactReader.js +83 -10
- package/dist/artifacts/NativeDmgArtifactReader.js +161 -58
- package/dist/artifacts/OrderedReads.js +57 -0
- package/dist/artifacts/SafeOutputTree.js +19 -4
- package/dist/artifacts/ZipArtifactReader.js +117 -12
- package/dist/artifacts/apple/AppleAssetCatalogAnalysis.js +77 -68
- package/dist/artifacts/apple/DylibResolutionReader.js +11 -5
- package/dist/artifacts/apple/InterfaceBuilderAnalysis.js +57 -21
- package/dist/artifacts/apple/InterfaceBuilderDecodeBudget.js +64 -12
- package/dist/artifacts/apple/KeyedArchiveReader.js +3 -2
- package/dist/artifacts/apple/MachoLoadCommandReader.js +62 -61
- package/dist/artifacts/apple/NibArchive.js +11 -4
- package/dist/artifacts/apple/PlistNumberLiterals.js +2 -2
- package/dist/artifacts/extraction/ArtifactExtraction.js +6 -7
- package/dist/artifacts/hostExecutableMarking.js +16 -0
- package/dist/artifacts/inventory/ArtifactGraphConstruction.js +134 -34
- package/dist/artifacts/inventory/ArtifactInventory.js +2 -2
- package/dist/artifacts/inventory/classify.js +32 -15
- package/dist/artifacts/inventory/reader.js +36 -21
- package/dist/artifacts/inventory/scanCanonical.js +25 -18
- package/dist/artifacts/inventory/scanReader.js +36 -10
- package/dist/artifacts/javascript/JavaScriptArtifactFiles.js +163 -7
- package/dist/artifacts/readStableArtifact.js +28 -4
- package/dist/browser/BrowserProcessStartup.js +20 -9
- package/dist/browser/BrowserScenarioPartialObservation.js +60 -44
- package/dist/browser/BrowserScenarioSecrets.js +176 -46
- package/dist/browser/CdpBrowserProvider.js +70 -99
- package/dist/browser/CdpCaptureDocuments.js +231 -69
- package/dist/browser/CdpCaptureDomSvg.js +94 -61
- package/dist/browser/CdpCaptureEventBodyShapes.js +9 -5
- package/dist/browser/CdpCaptureEventHandlers.js +23 -12
- package/dist/browser/CdpCaptureEvents.js +49 -10
- package/dist/browser/CdpCaptureStorage.js +22 -5
- package/dist/browser/CdpCaptureStorageFingerprints.js +54 -11
- package/dist/browser/CdpCaptureValues.js +0 -1
- package/dist/browser/CdpConnection.js +3 -4
- package/dist/browser/CdpElectronInspection.js +14 -4
- package/dist/browser/CdpElectronProvider.js +7 -2
- package/dist/browser/CdpElectronScripts.js +2 -1
- package/dist/browser/CdpElectronWorkers.js +7 -2
- package/dist/browser/CdpEndpoint.js +143 -17
- package/dist/browser/CdpObservationSession.js +24 -8
- package/dist/browser/CdpPageCapture.js +66 -16
- package/dist/browser/CdpPageCaptureScripts.js +4 -3
- package/dist/browser/CdpPageCaptureWorkers.js +5 -1
- package/dist/browser/CdpSafeMetadata.js +9 -5
- package/dist/browser/CdpScreenshot.js +5 -14
- package/dist/browser/CdpSnapshotStrings.js +21 -0
- package/dist/browser/CdpTargetSession.js +29 -2
- package/dist/browser/CdpWebMcpDiscovery.js +23 -6
- package/dist/browser/PlaywrightBrowserScenarioProvider.js +4 -4
- package/dist/browser/PlaywrightElectronActiveActions.js +4 -4
- package/dist/browser/PlaywrightElectronActiveProjection.js +16 -4
- package/dist/browser/PlaywrightElectronActiveProvider.js +103 -30
- package/dist/browser/PlaywrightExecutionBoundary.js +2 -2
- package/dist/browser/PlaywrightScenarioBrowser.js +9 -6
- package/dist/browser/PlaywrightScenarioEvents.js +198 -36
- package/dist/browser/PlaywrightScenarioServiceWorkers.js +249 -0
- package/dist/browser/PlaywrightScenarioSession.js +61 -29
- package/dist/browser/WebSourceMapFetcher.js +163 -80
- package/dist/browser/assets/LocalWebScriptArtifacts.js +24 -3
- package/dist/browser/assets/PublishWebScripts.js +13 -2
- package/dist/browser/assets/ScenarioScriptCapture.js +2 -1
- package/dist/browser/assets/WebArtifactReads.js +11 -3
- package/dist/browser/assets/WebSourceLocationArtifacts.js +38 -3
- package/dist/browser/history/CaptureFailures.js +22 -8
- package/dist/browser/history/CaptureFormatError.js +2 -2
- package/dist/browser/history/{HarJson.js → CaptureJson.js} +14 -4
- package/dist/browser/history/CaptureRedaction.js +16 -3
- package/dist/browser/history/CaptureRelease.js +20 -2
- package/dist/browser/history/HarCapture.js +16 -23
- package/dist/browser/history/HarSchema.js +36 -36
- package/dist/browser/history/HistoricalCaptureDecoder.js +93 -25
- package/dist/browser/history/NodeCaptureAdapter.js +48 -0
- package/dist/browser/history/{HarCaptureProcess.js → NodeCaptureProcess.js} +18 -9
- package/dist/browser/history/QlogCapture.js +385 -0
- package/dist/browser/history/SazCapture.js +130 -0
- package/dist/browser/history/SazHttp.js +61 -0
- package/dist/browser/history/SazMetadata.js +92 -0
- package/dist/browser/history/SazProjection.js +90 -0
- package/dist/browser/modules/NativeModuleResolver.js +177 -110
- package/dist/browser/modules/WebModuleArtifacts.js +40 -3
- package/dist/browser/network/PlaywrightNetworkContent.js +40 -5
- package/dist/browser/network/PlaywrightScenarioNetwork.js +125 -11
- package/dist/captures/TsharkCaptureProvider.js +370 -0
- package/dist/captures/parseFieldDiscovery.js +66 -0
- package/dist/captures/parsePacketOutput.js +21 -0
- package/dist/catalogIdentity.js +46 -35
- package/dist/cli/adbCommands.js +2 -2
- package/dist/cli/analysisViewCommands.js +1 -1
- package/dist/cli/androidCommands.js +11 -2
- package/dist/cli/apktoolCommands.js +10 -11
- package/dist/cli/applicationCommands.js +44 -17
- package/dist/cli/artifactCommands.js +1 -1
- package/dist/cli/binaryDiagnosticsCommands.js +14 -10
- package/dist/cli/browserAdvancedCommands.js +37 -24
- package/dist/cli/browserCommands.js +46 -29
- package/dist/cli/captureCommands.js +72 -0
- package/dist/cli/cliResultOutput.js +188 -0
- package/dist/cli/coreBinaryCommands.js +73 -27
- package/dist/cli/coreNativeCommands.js +53 -31
- package/dist/cli/cutterCommands.js +50 -0
- package/dist/cli/electronCommands.js +45 -3
- package/dist/cli/evmCommands.js +4 -5
- package/dist/cli/finishAnalysisCommand.js +44 -0
- package/dist/cli/firmwareCommands.js +14 -36
- package/dist/cli/flutterCommands.js +69 -0
- package/dist/cli/fridaCommands.js +211 -0
- package/dist/cli/goCommands.js +20 -0
- package/dist/cli/interactiveSetup.js +11 -1
- package/dist/cli/javascriptApplicationAnalysis.js +1 -1
- package/dist/cli/javascriptRecoveryCommands.js +7 -0
- package/dist/cli/jsonOutput.js +2 -2
- package/dist/cli/managedCommands.js +31 -3
- package/dist/cli/options.js +20 -2
- package/dist/cli/pcapCommands.js +47 -0
- package/dist/cli/processCommands.js +1 -1
- package/dist/cli/reverseEngineeringCommands.js +268 -0
- package/dist/cli/rustCommands.js +21 -0
- package/dist/cli/setupCommands.js +40 -12
- package/dist/cli/signalCommands.js +72 -0
- package/dist/cli/sqliteCommands.js +79 -0
- package/dist/cli/utilityCommands.js +116 -74
- package/dist/cli/wasmCommands.js +61 -0
- package/dist/cli/webModuleCommands.js +36 -32
- package/dist/cli/webNetworkCaptureCommands.js +8 -8
- package/dist/cli-runtime/AbortablePromise-BVBemxbD.js +123 -0
- package/dist/cli-runtime/AnalysisProvider-D0Us2OTk.js +27 -0
- package/dist/cli-runtime/AnalysisSnapshotCache-BXS0wRd2.js +710 -0
- package/dist/cli-runtime/ArtifactReader-BXkffc1D.js +55 -0
- package/dist/cli-runtime/ArtifactResourceScope-DQWTcUwE.js +114 -0
- package/dist/cli-runtime/AsarHeader-CnzOzYEH.js +31 -0
- package/dist/cli-runtime/BinarySessionStatus-DnMxMk-r.js +211 -0
- package/dist/cli-runtime/BinaryTargetResolver-CVIJ_s1A.js +1308 -0
- package/dist/cli-runtime/BoundedFileBytes-BU30odTm.js +39 -0
- package/dist/cli-runtime/CdpTargetSession-DGX5pV9w.js +650 -0
- package/dist/cli-runtime/ClientConfigPath-c6jr6INc.js +36 -0
- package/dist/cli-runtime/ClientConfigurationDocument-ffQ9X0Se.js +1957 -0
- package/dist/cli-runtime/ClientRegistrationStatus-DszCyPEU.js +509 -0
- package/dist/cli-runtime/CurrentEntrypointPath-D5FRNdkq.js +14 -0
- package/dist/cli-runtime/DirectAnalysis-BgvAtpN3.js +528 -0
- package/dist/cli-runtime/Doctor-DIpf_I7N.js +588 -0
- package/dist/cli-runtime/ElectronFileScope-dpHm2nrS.js +1054 -0
- package/dist/cli-runtime/ExecFileOutput-BEQs-lDD.js +117 -0
- package/dist/cli-runtime/IdaConfiguration-CtGP7EKo.js +1094 -0
- package/dist/cli-runtime/InterfaceBuilderDecodeBudget-D4omRUe4.js +279 -0
- package/dist/cli-runtime/InventoryProjectionEvidence-DIsI4DJ6.js +49 -0
- package/dist/cli-runtime/InvestigationProviders-DoQRIHii.js +117 -0
- package/dist/cli-runtime/JavaScriptApplicationEvidenceGraph-D5aI_FSJ.js +160 -0
- package/dist/cli-runtime/JavaScriptApplicationWorkflowEvidence-Bz4-V0Ct.js +75 -0
- package/dist/cli-runtime/JavaScriptWorkerMemoryLimit-B1bwMM1a.js +86 -0
- package/dist/cli-runtime/JebMcpEndpoint-DUytrn5G.js +428 -0
- package/dist/cli-runtime/JsonFiles-DQa1PRKy.js +708 -0
- package/dist/cli-runtime/MacCodeSignature-MgYbRK_H.js +24 -0
- package/dist/cli-runtime/MacHopperPaths-CwL5lYPX.js +434 -0
- package/dist/cli-runtime/MachoLoadCommandReader-C7e074Ze.js +510 -0
- package/dist/cli-runtime/ManagedSnapshot-rqyBHcdL.js +4185 -0
- package/dist/cli-runtime/OwnedCommand-Cj9GhmPR.js +112 -0
- package/dist/cli-runtime/PrivateRuntimeRoot-DAy0PiBM.js +263 -0
- package/dist/cli-runtime/ProcessOwnership-DXC5-UWt.js +1378 -0
- package/dist/cli-runtime/ProviderDeadline-8m2pFRDc.js +122 -0
- package/dist/cli-runtime/RegularFile-B_6KPCNQ.js +139 -0
- package/dist/cli-runtime/RegularFileRead-DVlC5faM.js +125 -0
- package/dist/cli-runtime/SafeOutputTree-D6U15GXd.js +524 -0
- package/dist/cli-runtime/SetupHost-FkYWswsq.js +1098 -0
- package/dist/cli-runtime/SupportedClients-DaX6Lt2d.js +1049 -0
- package/dist/cli-runtime/UninstallFailure-1blyKXHE.js +22 -0
- package/dist/cli-runtime/Update-CbTC_eg1.js +143 -0
- package/dist/cli-runtime/UpdateFailure-BcFNxEZZ.js +24 -0
- package/dist/cli-runtime/ZipArtifactReader-B8ZgNe4D.js +248 -0
- package/dist/cli-runtime/analysisErrorCleanup-Do6YeeoD.js +32 -0
- package/dist/cli-runtime/analysisErrorPresentation-DGt7TdsH.js +497 -0
- package/dist/cli-runtime/appleArchiveFormat-tVoI2ykA.js +263 -0
- package/dist/cli-runtime/application__DirectAnalysisStatus-DpOejOf0.js +150 -0
- package/dist/cli-runtime/application__EnhancedTools-oFE2bOjs.js +1787 -0
- package/dist/cli-runtime/application__FunctionAnalysisEvidence-B6osuhvW.js +41 -0
- package/dist/cli-runtime/application__ReconstructionCoverageService-DN3wTFQj.js +32 -0
- package/dist/cli-runtime/application__ReconstructionObligationLedgerService-CKcTppX9.js +815 -0
- package/dist/cli-runtime/application__Setup-XpMaRNjy.js +514 -0
- package/dist/cli-runtime/application__Uninstall-_23pU2yB.js +427 -0
- package/dist/cli-runtime/application__UpdateRuntime-DPvY8ohd.js +345 -0
- package/dist/cli-runtime/application__android__AndroidApplicationService-CFgIFPM4.js +31 -0
- package/dist/cli-runtime/application__apple__AppleApplicationService-Db6QCsun.js +31 -0
- package/dist/cli-runtime/application__harmony__HarmonyApplicationService-CFjocHoK.js +31 -0
- package/dist/cli-runtime/application__javascript__ElectronActiveObservationService-CmVDUI_Z.js +118 -0
- package/dist/cli-runtime/application__javascript__ElectronObservationService-DEsR8KDN.js +63 -0
- package/dist/cli-runtime/application__javascript__JavaScriptApplicationService-CCkp8KBh.js +11450 -0
- package/dist/cli-runtime/application__javascript__JavaScriptApplicationWorkflowService-lPy0tzr3.js +2329 -0
- package/dist/cli-runtime/application__javascript__JavaScriptRuntimeReconciliationService-DWleA8K9.js +88 -0
- package/dist/cli-runtime/application__javascript__JavaScriptSemanticTraceService-DkALH4rL.js +299 -0
- package/dist/cli-runtime/artifactOperationError-B7n03FbD.js +27 -0
- package/dist/cli-runtime/artifacts__ArtifactProvider-zXI0QjSL.js +2187 -0
- package/dist/cli-runtime/binary-BVOr2mgE.js +14206 -0
- package/dist/cli-runtime/browserObservationError-Dx6xRTjb.js +40 -0
- package/dist/cli-runtime/catalogIdentity-DLoXgfIR.js +933 -0
- package/dist/cli-runtime/cli.js +41848 -0
- package/dist/cli-runtime/cliOutput-BC1BdAcB.js +122 -0
- package/dist/cli-runtime/cliOutput.js +5 -0
- package/dist/cli-runtime/cliResultOutput-DsRMI8CJ.js +780 -0
- package/dist/cli-runtime/cliResultOutput.js +5 -0
- package/dist/cli-runtime/composition__browserScenario-DHXC1a8n.js +2927 -0
- package/dist/cli-runtime/composition__electronObservation-GecK2EID.js +555 -0
- package/dist/cli-runtime/composition__electronScenario-CEZnVrAL.js +653 -0
- package/dist/cli-runtime/cutterToolContracts-TZH9EHr5.js +5134 -0
- package/dist/cli-runtime/doctorRuntime-BE5ZX8it.js +258 -0
- package/dist/cli-runtime/dotnet__ManagedStaticProvider-C8_yZCDc.js +5 -0
- package/dist/cli-runtime/errorSchemas-CTRmvMl3.js +601 -0
- package/dist/cli-runtime/javascriptApplicationAnalysis-HgMzVMQw.js +2068 -0
- package/dist/cli-runtime/javascriptExportReturnShapeProjection-Dg00g35t.js +78 -0
- package/dist/cli-runtime/javascriptExportShapeComparisonSchemas-BYnoIqIk.js +1242 -0
- package/dist/cli-runtime/javascriptRuntimeReconciliation-DNjDoL3S.js +1507 -0
- package/dist/cli-runtime/javascriptRuntimeReconciliationSchemas-BWpGWNcI.js +247 -0
- package/dist/cli-runtime/javascriptSemanticTraceSchemas-BTCNcvbc.js +126 -0
- package/dist/cli-runtime/lipo-DSWP6fv-.js +396 -0
- package/dist/cli-runtime/logger-CQQCI4a2.js +48 -0
- package/dist/cli-runtime/machoContainer-C8BIkkq3.js +172 -0
- package/dist/cli-runtime/managedApplicationGraph-B08jb3jq.js +1130 -0
- package/dist/cli-runtime/managedToolContracts-D60QmIYj.js +99 -0
- package/dist/cli-runtime/mcpDoctor.js +359 -0
- package/dist/cli-runtime/mcpStartupPolicy-CVVSOmRc.js +21 -0
- package/dist/cli-runtime/native__NativeMacOSProvider-YBTvUeJO.js +4875 -0
- package/dist/cli-runtime/officialToolContracts-CCFF0an9.js +1501 -0
- package/dist/cli-runtime/propertyListKeys-G8e74YWb.js +248 -0
- package/dist/cli-runtime/providerAdapterError-DAjhICdr.js +25 -0
- package/dist/cli-runtime/providerCleanupError-Ceq8f0wK.js +27 -0
- package/dist/cli-runtime/providerIdentities-Ao1XTvwx.js +31 -0
- package/dist/cli-runtime/providerStartupTimeout-B2tF2LtZ.js +17 -0
- package/dist/cli-runtime/readFileHandleChunks-dp60iZ6v.js +38 -0
- package/dist/cli-runtime/reconstructionObligationLedgerSchemas-Bao0xMr-.js +19478 -0
- package/dist/cli-runtime/rolldown-runtime-DXoylpqc.js +121 -0
- package/dist/cli-runtime/runtimeVersion-CMGd0bDu.js +23 -0
- package/dist/cli-runtime/safeJson-DKKACtdy.js +25 -0
- package/dist/cli-runtime/scanCanonical-KP4T9jSl.js +2724 -0
- package/dist/cli-runtime/snapshotEnvironment-D_tWyOub.js +813 -0
- package/dist/cli-runtime/toolContracts-D2FOG_Nb.js +3721 -0
- package/dist/cli-runtime/toolOutputSchemaGroups-DRiYs1je.js +12070 -0
- package/dist/cli-runtime/workflowInputError-n8Oo-bLA.js +26 -0
- package/dist/cli.js +38 -5
- package/dist/cliBrowserScenarioCommands.js +39 -4
- package/dist/cliCommandNames.js +48 -0
- package/dist/cliEvidenceCommands.js +0 -1
- package/dist/cliJavaScriptRuntimeCommands.js +16 -14
- package/dist/cliJsonInput.js +12 -4
- package/dist/cliLogging.js +50 -14
- package/dist/cliObservationOptions.js +6 -0
- package/dist/cliOutput.js +38 -5
- package/dist/composition/binary.js +4 -0
- package/dist/composition/captures.js +3 -0
- package/dist/composition/directAnalysis.js +28 -11
- package/dist/composition/electronFuses.js +4 -0
- package/dist/composition/evm.js +12 -0
- package/dist/composition/flutter.js +3 -0
- package/dist/composition/go.js +4 -0
- package/dist/composition/javascriptAnalysisWorkerProcess.js +5 -4
- package/dist/composition/jeb.js +33 -4
- package/dist/composition/pcap.js +3 -0
- package/dist/composition/resolveWindowsProviderExecutable.js +61 -0
- package/dist/composition/reverseEngineering.js +29 -0
- package/dist/composition/rust.js +4 -0
- package/dist/composition/signals.js +3 -0
- package/dist/composition/sqlite.js +4 -0
- package/dist/composition/wasm.js +22 -0
- package/dist/composition/webNetworkCaptures.js +7 -2
- package/dist/config/environment.js +45 -4
- package/dist/config/ghidraDisabledAnalyzers.js +25 -0
- package/dist/config/homeDirectory.js +9 -6
- package/dist/config/mcpInputSchemaProfile.js +4 -0
- package/dist/config/mcpOutputSchemaProfile.js +22 -0
- package/dist/config/parseConfig.js +21 -31
- package/dist/config/parsers.js +4 -3
- package/dist/config/{ghidraStartupTimeout.js → providerStartupTimeout.js} +7 -3
- package/dist/contracts/adb/adbToolContracts.js +7 -7
- package/dist/contracts/analysisDetail.js +6 -3
- package/dist/contracts/analysisViewApiSurfaceExample.js +68 -0
- package/dist/contracts/analysisViewToolContracts.js +24 -3
- package/dist/contracts/android/androidToolContracts.js +17 -8
- package/dist/contracts/applicationToolContracts.js +17 -2
- package/dist/contracts/artifactToolContracts.js +14 -2
- package/dist/contracts/browserToolContracts.js +1 -0
- package/dist/contracts/captures/captureToolContracts.js +42 -0
- package/dist/contracts/compactInputSchema.js +26 -6
- package/dist/contracts/cutterToolContracts.js +84 -0
- package/dist/contracts/enhancedToolContracts.js +2 -2
- package/dist/contracts/evm/evmToolContracts.js +30 -15
- package/dist/contracts/firmware/firmwareToolContracts.js +1 -1
- package/dist/contracts/flutter/flutterToolContracts.js +47 -0
- package/dist/contracts/fridaRemoteAddress.js +23 -0
- package/dist/contracts/fridaToolContracts.js +273 -0
- package/dist/contracts/functionComparisonExample.js +12 -1
- package/dist/contracts/gdbToolContracts.js +103 -0
- package/dist/contracts/go/goToolContracts.js +20 -0
- package/dist/contracts/hopperMemoryContracts.js +15 -0
- package/dist/contracts/inputSchemaPresentation.js +81 -14
- package/dist/contracts/investigationExamples.js +1 -0
- package/dist/contracts/javascript/electronToolContracts.js +27 -2
- package/dist/contracts/javascript/javascriptRecoveryToolContracts.js +13 -1
- package/dist/contracts/managed/managedToolContracts.js +43 -4
- package/dist/contracts/managed/managedWorkflowExamples.js +7 -1
- package/dist/contracts/managed/managedWorkflowToolContracts.js +4 -30
- package/dist/contracts/mobileApplicationGraphExamples.js +12 -0
- package/dist/contracts/native/binaryDiagnosticsToolContracts.js +3 -2
- package/dist/contracts/native/nativeToolContracts.js +10 -6
- package/dist/contracts/officialToolContracts.js +5 -5
- package/dist/contracts/pcap/pcapToolContracts.js +33 -0
- package/dist/contracts/providerSelection.js +1 -0
- package/dist/contracts/reconstructionReadinessExample.js +126 -119
- package/dist/contracts/reverseEngineeringToolContracts.js +52 -0
- package/dist/contracts/rizinDebugToolContracts.js +96 -0
- package/dist/contracts/rust/rustToolContracts.js +20 -0
- package/dist/contracts/sessionLifecycleInputs.js +34 -2
- package/dist/contracts/sessionToolContracts.js +2 -2
- package/dist/contracts/sessionToolSchemas.js +14 -0
- package/dist/contracts/signals/signalToolContracts.js +40 -0
- package/dist/contracts/sqlite/sqliteToolContracts.js +36 -0
- package/dist/contracts/toolContractExamples.js +29 -0
- package/dist/contracts/toolContractTypes.js +2 -0
- package/dist/contracts/toolContracts.js +26 -0
- package/dist/contracts/toolEffects.js +247 -8
- package/dist/contracts/toolOutputSchemaGroups.js +75 -32
- package/dist/contracts/toolOutputSchemaPrimitives.js +111 -10
- package/dist/contracts/toolSchemaMetadata.js +16 -2
- package/dist/contracts/unknownContractExamples.js +1 -1
- package/dist/contracts/wasm/wasmComparisonContracts.js +52 -0
- package/dist/contracts/wasm/wasmToolContracts.js +33 -0
- package/dist/contracts/webNetworkCaptureToolContracts.js +15 -4
- package/dist/cutter/CutterBridgeClient.js +621 -0
- package/dist/cutter/CutterBridgeService.js +139 -0
- package/dist/doctorRuntime.js +20 -8
- package/dist/domain/adb/adbDeviceAnalysis.js +26 -4
- package/dist/domain/analysisErrorBase.js +20 -0
- package/dist/domain/analysisErrorCleanup.js +1 -1
- package/dist/domain/analysisErrorCore.js +19 -0
- package/dist/domain/analysisErrorPresentation.js +58 -17
- package/dist/domain/analysisErrorProjection.js +31 -12
- package/dist/domain/analysisProfile.js +7 -3
- package/dist/domain/analysisSnapshot.js +311 -184
- package/dist/domain/analysisView/WebNetworkApiSurfaceAccumulator.js +414 -0
- package/dist/domain/analysisView/analysisView.js +366 -44
- package/dist/domain/analysisView/analysisViewCoverage.js +32 -0
- package/dist/domain/analysisView/analysisViewErrors.js +4 -0
- package/dist/domain/analysisView/analysisViewParent.js +12 -0
- package/dist/domain/analysisView/analysisViewText.js +29 -0
- package/dist/domain/analysisView/androidPackageView.js +102 -0
- package/dist/domain/analysisView/artifactInventoryView.js +140 -0
- package/dist/domain/analysisView/binaryLayoutView.js +11 -4
- package/dist/domain/analysisView/dartAotView.js +93 -0
- package/dist/domain/analysisView/evmInterfaceView.js +105 -0
- package/dist/domain/analysisView/interfaceBuilderView.js +182 -0
- package/dist/domain/analysisView/javascriptApplicationView.js +29 -28
- package/dist/domain/analysisView/machoView.js +186 -0
- package/dist/domain/analysisView/managedArtifactView.js +108 -0
- package/dist/domain/analysisView/managedMemberView.js +209 -0
- package/dist/domain/analysisView/nativeFunctionView.js +20 -25
- package/dist/domain/analysisView/pcapCaptureView.js +264 -0
- package/dist/domain/analysisView/qlogCaptureView.js +198 -0
- package/dist/domain/analysisView/wasmArtifactView.js +162 -0
- package/dist/domain/analysisView/webNetworkApiSurfaceView.js +123 -0
- package/dist/domain/analysisView/webNetworkCaptureView.js +388 -0
- package/dist/domain/android/androidAnalysis.js +36 -2
- package/dist/domain/android/androidApplication.js +32 -60
- package/dist/domain/apktool/apktoolResourceAnalysis.js +19 -7
- package/dist/domain/apple/appleApplication.js +31 -29
- package/dist/domain/apple/appleArchiveFormat.js +184 -0
- package/dist/domain/apple/appleAssetCatalog.js +15 -0
- package/dist/domain/apple/appleBundleAnatomy.js +1 -1
- package/dist/domain/apple/dyldPaths.js +9 -2
- package/dist/domain/apple/dylibResolution.js +19 -9
- package/dist/domain/apple/dylibResolutionFindings.js +8 -9
- package/dist/domain/apple/interfaceBuilderGraph.js +50 -26
- package/dist/domain/apple/interfaceBuilderKeyedArchive.js +28 -8
- package/dist/domain/apple/machoContainer.js +120 -8
- package/dist/domain/apple/machoCpuIdentity.js +4 -0
- package/dist/domain/apple/plistValue.js +6 -1
- package/dist/domain/artifactComparison.js +109 -32
- package/dist/domain/artifactDecompressionBudget.js +26 -0
- package/dist/domain/artifactGraph.js +23 -6
- package/dist/domain/artifactIdentity.js +4 -1
- package/dist/domain/artifactInspection.js +44 -2
- package/dist/domain/artifactInventoryEvidence.js +137 -39
- package/dist/domain/binaryTarget.js +251 -94
- package/dist/domain/binaryTargetTypes.js +14 -1
- package/dist/domain/browserNetworkEvidence.js +4 -0
- package/dist/domain/browserObservation.js +88 -29
- package/dist/domain/browserObservationSchemas.js +4 -1
- package/dist/domain/browserScenarioCapture.js +2 -1
- package/dist/domain/browserScenarioCaptureValues.js +26 -2
- package/dist/domain/browserScenarioDiff.js +120 -11
- package/dist/domain/browserScenarioDiffEvidence.js +46 -13
- package/dist/domain/browserScenarioDiffValues.js +10 -3
- package/dist/domain/browserScenarioNetworkComparison.js +158 -0
- package/dist/domain/browserScenarioNormalization.js +10 -13
- package/dist/domain/browserScenarioValues.js +2 -12
- package/dist/domain/browserSession.js +2 -2
- package/dist/domain/bundleComparison.js +1 -5
- package/dist/domain/callPath.js +40 -3
- package/dist/domain/captures/packetCapture.js +138 -0
- package/dist/domain/captures/packetFields.js +81 -0
- package/dist/domain/changedBehavior.js +43 -41
- package/dist/domain/comparisonSourceEvidence.js +6 -0
- package/dist/domain/dosCom.js +2 -2
- package/dist/domain/dosMz.js +52 -14
- package/dist/domain/electron/electronFuses.js +360 -0
- package/dist/domain/elfFixedHeader.js +42 -0
- package/dist/domain/evidence.js +103 -38
- package/dist/domain/evidenceBundle.js +58 -20
- package/dist/domain/evidenceErrors.js +5 -0
- package/dist/domain/evm/evmInterface.js +18 -4
- package/dist/domain/evm/solidityMetadata.js +70 -0
- package/dist/domain/explicitSensitiveFailure.js +42 -24
- package/dist/domain/firmware/firmwareAnalysis.js +29 -0
- package/dist/domain/flutter/flutterBuildAnalysis.js +141 -0
- package/dist/domain/functionCallCoverage.js +60 -0
- package/dist/domain/functionComparisonDimensions.js +101 -10
- package/dist/domain/functionComparisonNormalization.js +66 -10
- package/dist/domain/functionComparisonResults.js +7 -6
- package/dist/domain/functionComparisonSchemas.js +14 -3
- package/dist/domain/functionDossierEvidence.js +3 -0
- package/dist/domain/go/goBinary.js +96 -0
- package/dist/domain/harmony/harmonyApplication.js +156 -0
- package/dist/domain/hopperErrors.js +15 -16
- package/dist/domain/hopperPublisher.js +12 -0
- package/dist/domain/hopperValues.js +112 -34
- package/dist/domain/javascript/electronObservation.js +4 -1
- package/dist/domain/javascript/electronStaticAnalysisBrowser.js +15 -14
- package/dist/domain/javascript/electronStaticAnalysisIpc.js +3 -1
- package/dist/domain/javascript/electronStaticAnalysisNative.js +19 -5
- package/dist/domain/javascript/electronStaticAnalysisValues.js +14 -8
- package/dist/domain/javascript/electronWrappedCallPaths.js +498 -0
- package/dist/domain/javascript/htmlArtifactReferences.js +94 -4
- package/dist/domain/javascript/javascriptAnalysisResourceControls.js +21 -1
- package/dist/domain/javascript/javascriptApplicationAnalysis.js +3 -0
- package/dist/domain/javascript/javascriptApplicationChangeGraph.js +7 -2
- package/dist/domain/javascript/javascriptApplicationEvidenceSchemas.js +1 -1
- package/dist/domain/javascript/javascriptApplicationGraph.js +17 -1
- package/dist/domain/javascript/javascriptApplicationGraphSchemas.js +1 -0
- package/dist/domain/javascript/javascriptApplicationProjectionResources.js +8 -0
- package/dist/domain/javascript/javascriptApplicationVersionKeys.js +31 -18
- package/dist/domain/javascript/javascriptArtifactFiles.js +2 -1
- package/dist/domain/javascript/javascriptAstFingerprint.js +51 -17
- package/dist/domain/javascript/javascriptAstValues.js +52 -3
- package/dist/domain/javascript/javascriptBootstrap.js +94 -0
- package/dist/domain/javascript/javascriptBootstrapIntegrity.js +372 -0
- package/dist/domain/javascript/javascriptBuiltinResourceMethods.js +8 -0
- package/dist/domain/javascript/javascriptBundledRequireOrigin.js +291 -0
- package/dist/domain/javascript/javascriptContextBridgeExposure.js +23 -0
- package/dist/domain/javascript/javascriptElectronMemberWrites.js +86 -22
- package/dist/domain/javascript/javascriptExportShapeComparisonSchemas.js +6 -5
- package/dist/domain/javascript/javascriptExportShapeVariants.js +1 -1
- package/dist/domain/javascript/javascriptFeatureSeed.js +33 -16
- package/dist/domain/javascript/javascriptFeatureTrace.js +9 -3
- package/dist/domain/javascript/javascriptFeatureTraceSchemas.js +42 -11
- package/dist/domain/javascript/javascriptIntrinsicInvocation.js +132 -0
- package/dist/domain/javascript/javascriptModuleDeclaration.js +28 -0
- package/dist/domain/javascript/javascriptModuleInterop.js +618 -0
- package/dist/domain/javascript/javascriptModuleResolutionMode.js +18 -0
- package/dist/domain/javascript/javascriptModuleSpecifier.js +5 -0
- package/dist/domain/javascript/javascriptNativeHandoff.js +0 -1
- package/dist/domain/javascript/javascriptPackageImportAliases.js +58 -0
- package/dist/domain/javascript/javascriptRecovery.js +12 -5
- package/dist/domain/javascript/javascriptRpcEndpoints.js +119 -41
- package/dist/domain/javascript/javascriptRuntimeLoadState.js +11 -0
- package/dist/domain/javascript/javascriptRuntimeObservation.js +4 -1
- package/dist/domain/javascript/javascriptRuntimeReconciliationCaptureParsing.js +10 -4
- package/dist/domain/javascript/javascriptRuntimeReconciliationMatching.js +15 -2
- package/dist/domain/javascript/javascriptRuntimeReconciliationResult.js +0 -1
- package/dist/domain/javascript/javascriptRuntimeReconciliationSchemas.js +5 -4
- package/dist/domain/javascript/javascriptRuntimeStaticCandidates.js +113 -11
- package/dist/domain/javascript/javascriptSemanticAmbientWrites.js +251 -0
- package/dist/domain/javascript/javascriptSemanticAnalysis.js +340 -108
- package/dist/domain/javascript/javascriptSemanticAsyncEffects.js +17 -34
- package/dist/domain/javascript/javascriptSemanticCallResolution.js +4 -3
- package/dist/domain/javascript/javascriptSemanticCallableStack.js +52 -0
- package/dist/domain/javascript/javascriptSemanticCalls.js +6 -11
- package/dist/domain/javascript/javascriptSemanticChildProcesses.js +42 -55
- package/dist/domain/javascript/javascriptSemanticDataEffectHelpers.js +428 -32
- package/dist/domain/javascript/javascriptSemanticDataEffects.js +14 -20
- package/dist/domain/javascript/javascriptSemanticDependencies.js +69 -0
- package/dist/domain/javascript/javascriptSemanticFingerprints.js +11 -14
- package/dist/domain/javascript/javascriptSemanticGraph.js +5 -1
- package/dist/domain/javascript/javascriptSemanticGraphSchemas.js +0 -1
- package/dist/domain/javascript/javascriptSemanticIterationSources.js +2 -2
- package/dist/domain/javascript/javascriptSemanticMemberMutations.js +224 -91
- package/dist/domain/javascript/javascriptSemanticMutationInitializers.js +199 -3
- package/dist/domain/javascript/javascriptSemanticObjectReferences.js +333 -43
- package/dist/domain/javascript/javascriptSemanticObjects.js +20 -16
- package/dist/domain/javascript/javascriptSemanticProjection.js +151 -43
- package/dist/domain/javascript/javascriptSemanticPromises.js +6 -9
- package/dist/domain/javascript/javascriptSemanticProvenance.js +5 -1
- package/dist/domain/javascript/javascriptSemanticQuery.js +7 -2
- package/dist/domain/javascript/javascriptSemanticReferenceSources.js +25 -0
- package/dist/domain/javascript/javascriptSemanticRequireOrigin.js +331 -8
- package/dist/domain/javascript/javascriptSemanticResources.js +6 -40
- package/dist/domain/javascript/javascriptSemanticReturnedReferences.js +14 -0
- package/dist/domain/javascript/javascriptSemanticReturns.js +37 -30
- package/dist/domain/javascript/javascriptSemanticState.js +39 -2
- package/dist/domain/javascript/javascriptSemanticTraversal.js +6 -4
- package/dist/domain/javascript/javascriptSemanticValues.js +227 -30
- package/dist/domain/javascript/javascriptSourceMapPaths.js +44 -17
- package/dist/domain/javascript/javascriptSourceParser.js +72 -3
- package/dist/domain/javascript/javascriptSourceSelection.js +11 -0
- package/dist/domain/javascript/javascriptStaticAnalysis.js +51 -17
- package/dist/domain/javascript/javascriptStaticAnalysisBundler.js +97 -23
- package/dist/domain/javascript/javascriptStaticAnalysisCalls.js +224 -44
- package/dist/domain/javascript/javascriptStaticAnalysisHelpers.js +166 -56
- package/dist/domain/javascript/javascriptStaticAnalysisState.js +1 -0
- package/dist/domain/javascript/javascriptStaticAnalysisTypes.js +2 -1
- package/dist/domain/javascript/javascriptSymbolicBindings.js +836 -0
- package/dist/domain/javascript/javascriptSymbolicControlFlow.js +40 -0
- package/dist/domain/javascript/javascriptSymbolicValues.js +34 -0
- package/dist/domain/javascript/sourceToBundleComparison.js +3 -1
- package/dist/domain/javascript/sourceToBundleComparisonSchemas.js +2 -0
- package/dist/domain/javascript/sourceToBundleSignals.js +47 -13
- package/dist/domain/jsonValue.js +37 -12
- package/dist/domain/localPath.js +6 -3
- package/dist/domain/managed/managedApplicationGraph.js +5 -0
- package/dist/domain/managed/managedApplicationGraphCoverage.js +6 -2
- package/dist/domain/managed/managedApplicationGraphNodes.js +0 -1
- package/dist/domain/managed/managedArtifact.js +51 -1
- package/dist/domain/managed/managedInspectionEvidence.js +5 -6
- package/dist/domain/managed/managedMemberComparison.js +3 -0
- package/dist/domain/managed/managedMemberComparisonCoverage.js +23 -3
- package/dist/domain/managed/managedMemberComparisonItems.js +23 -19
- package/dist/domain/managed/managedMemberComparisonMatch.js +209 -18
- package/dist/domain/managed/managedNativeVerificationMatch.js +49 -26
- package/dist/domain/managed/managedNativeVerificationSchemas.js +13 -2
- package/dist/domain/managed/managedReconstruction.js +5 -8
- package/dist/domain/mobileApplicationGraphProjection.js +80 -0
- package/dist/domain/native/addressCoordinate.js +11 -0
- package/dist/domain/native/binaryLayout.js +2 -4
- package/dist/domain/native/bytePattern.js +100 -0
- package/dist/domain/native/nativeAotPe.js +2 -2
- package/dist/domain/native/nativeInspection.js +38 -4
- package/dist/domain/native/nativeInstruction.js +17 -2
- package/dist/domain/native/nativeInvestigationGraph.js +9 -5
- package/dist/domain/native/nativeLoadImage.js +19 -1
- package/dist/domain/native/nativeUiObservation.js +5 -6
- package/dist/domain/native/objcSwiftMetadata.js +4 -1
- package/dist/domain/native/peResources.js +8 -2
- package/dist/domain/native/recordedCrash.js +79 -10
- package/dist/domain/offsetDateTime.js +60 -0
- package/dist/domain/pcap/pcapAnalysis.js +91 -0
- package/dist/domain/pcap/pcapEvidence.js +15 -0
- package/dist/domain/peMachine.js +36 -0
- package/dist/domain/pngHeader.js +18 -0
- package/dist/domain/process/processCaptureCoverage.js +26 -3
- package/dist/domain/process/processCaptureExample.js +2 -0
- package/dist/domain/process/processCaptureValidation.js +33 -8
- package/dist/domain/process/processComparison.js +41 -13
- package/dist/domain/process/processScenario.js +7 -0
- package/dist/domain/process/processTraceEvaluation.js +54 -50
- package/dist/domain/process/processTraceSpecification.js +243 -89
- package/dist/domain/propertyListKeys.js +211 -11
- package/dist/domain/propertyListXmlText.js +20 -4
- package/dist/domain/providerAdapterError.js +0 -5
- package/dist/domain/providerConfigurationRefusal.js +12 -0
- package/dist/domain/providerSelectionError.js +2 -1
- package/dist/domain/qlogCapture.js +62 -0
- package/dist/domain/rawBinary.js +96 -0
- package/dist/domain/reconstructionCoverage.js +5 -1
- package/dist/domain/reconstructionCoverageEvaluation.js +18 -15
- package/dist/domain/reconstructionCoverageVerifierResults.js +35 -0
- package/dist/domain/reconstructionObligationLedgerIntegrity.js +114 -0
- package/dist/domain/reconstructionObligationLedgerSchemas.js +104 -1
- package/dist/domain/reconstructionReadiness.js +4 -8
- package/dist/domain/reconstructionReadinessJourneyFindings.js +4 -1
- package/dist/domain/reconstructionUnknowns.js +9 -1
- package/dist/domain/reconstructionVerification.js +54 -25
- package/dist/domain/recordedTransportUrl.js +59 -0
- package/dist/domain/referenceSourceClassification.js +27 -23
- package/dist/domain/referenceSourceGraph.js +51 -13
- package/dist/domain/referenceSourceImportParsing.js +23 -13
- package/dist/domain/referenceSourcePathIdentity.js +11 -1
- package/dist/domain/referenceSourceRequireBindings.js +5 -12
- package/dist/domain/referenceSourceSummary.js +92 -0
- package/dist/domain/relationshipCoverage.js +44 -0
- package/dist/domain/residualUnknown.js +93 -26
- package/dist/domain/reverseEngineering.js +31 -0
- package/dist/domain/runtimeVersion.js +8 -0
- package/dist/domain/rust/rustBinary.js +200 -0
- package/dist/domain/signals/annotationTextWindow.js +31 -0
- package/dist/domain/signals/signalDecoders.js +69 -0
- package/dist/domain/signals/signalRecording.js +115 -0
- package/dist/domain/sourceMapContents.js +10 -3
- package/dist/domain/sourceMapEnvelope.js +17 -11
- package/dist/domain/sqlite/sqliteDatabase.js +188 -0
- package/dist/domain/staticRuntimeCorrelation.js +7 -9
- package/dist/domain/swiftSymbolClassification.js +17 -0
- package/dist/domain/symbolAnalysis.js +16 -4
- package/dist/domain/urlComponents.js +6 -0
- package/dist/domain/wasm/wasmArtifact.js +119 -0
- package/dist/domain/wasm/wasmInterface.js +89 -0
- package/dist/domain/webBundleAnalysis.js +14 -3
- package/dist/domain/webBundleAnalyzerAst.js +7 -2
- package/dist/domain/webBundleAnalyzerInspection.js +54 -38
- package/dist/domain/webBundleAnalyzerResult.js +18 -6
- package/dist/domain/webCaptureDiff.js +140 -39
- package/dist/domain/webCaptureFrameComparison.js +49 -0
- package/dist/domain/webMcpDiscovery.js +5 -2
- package/dist/domain/webModuleImports.js +22 -27
- package/dist/domain/webModuleTrace.js +3 -8
- package/dist/domain/webNetworkCapture.js +101 -39
- package/dist/domain/webNetworkCaptureCoordinates.js +21 -0
- package/dist/domain/webRuntime.js +0 -1
- package/dist/domain/webScreenshot.js +2 -2
- package/dist/domain/webScriptArtifacts.js +2 -4
- package/dist/domain/webScriptExport.js +6 -8
- package/dist/domain/webScriptExportPlan.js +2 -2
- package/dist/domain/webSourceLocation.js +20 -9
- package/dist/domain/zipPackageFormat.js +29 -3
- package/dist/dotnet/ManagedArtifactInspector.js +27 -12
- package/dist/dotnet/ManagedDecodeBudget.js +66 -8
- package/dist/dotnet/ManagedMemberInspector.js +101 -21
- package/dist/dotnet/ManagedMemberInspectorCore.js +356 -140
- package/dist/dotnet/ManagedMemberInstructionDecoder.js +109 -37
- package/dist/dotnet/ManagedMemberOwnership.js +65 -0
- package/dist/dotnet/ManagedMemberPointers.js +69 -0
- package/dist/dotnet/ManagedMemberRows.js +179 -46
- package/dist/dotnet/ManagedMetadataHeaps.js +110 -24
- package/dist/dotnet/ManagedMetadataInventory.js +5 -5
- package/dist/dotnet/ManagedMetadataInventoryRows.js +36 -52
- package/dist/dotnet/ManagedMetadataLayout.js +9 -1
- package/dist/dotnet/ManagedMetadataRowSizes.js +1 -1
- package/dist/dotnet/ManagedMethodBodyReader.js +29 -11
- package/dist/dotnet/ManagedMethodSpecs.js +78 -0
- package/dist/dotnet/ManagedNativeBoundaryHelpers.js +2 -2
- package/dist/dotnet/ManagedNativeBoundaryInspector.js +6 -13
- package/dist/dotnet/ManagedPeReader.js +55 -27
- package/dist/dotnet/ManagedReaderFailure.js +9 -0
- package/dist/dotnet/ManagedSnapshot.js +88 -0
- package/dist/dotnet/ManagedStaticProvider.js +55 -64
- package/dist/dotnet/ManagedTypeMemberLists.js +105 -0
- package/dist/dotnet/ManagedTypeNames.js +98 -0
- package/dist/dotnet/ManagedUserStrings.js +75 -0
- package/dist/electron/ElectronFusePath.js +247 -0
- package/dist/electron/ElectronFuseProvider.js +113 -0
- package/dist/electron/ElectronFuseReader.js +317 -0
- package/dist/evaluation/AgentEvaluationFixtures.js +194 -11
- package/dist/evaluation/CodexAgentEval.js +19 -40
- package/dist/evaluation/KnownAnswerEvaluation.js +126 -57
- package/dist/evm/EvmoleFailures.js +19 -14
- package/dist/evm/EvmoleInterfaceAdapter.js +5 -1
- package/dist/evm/EvmoleInterfaceProvider.js +141 -31
- package/dist/evm/EvmoleInterfaceWorker.js +2 -0
- package/dist/evm/SolidityMetadata.js +139 -0
- package/dist/filesystem/OwnedStagedOutput.js +138 -0
- package/dist/filesystem/RegularFile.js +48 -4
- package/dist/filesystem/readFileHandleChunks.js +17 -8
- package/dist/firmware/FirmwareCommand.js +2 -2
- package/dist/firmware/FirmwareFiles.js +8 -12
- package/dist/firmware/FirmwareProvider.js +2 -0
- package/dist/firmware/FirmwarePublication.js +218 -1
- package/dist/firmware/FirmwareReports.js +202 -12
- package/dist/flutter/DartElf.js +418 -0
- package/dist/flutter/ElfBuildId.js +137 -0
- package/dist/flutter/ElfLoadMap.js +91 -0
- package/dist/flutter/FlutterBuildProvider.js +826 -0
- package/dist/flutter/FlutterPayloadScan.js +180 -0
- package/dist/frida/FridaInstrumentationManager.js +1104 -0
- package/dist/gdb/GdbSessionManager.js +1451 -0
- package/dist/generatedPackageMetadata.js +2 -2
- package/dist/ghidra/GhidraAnalysisProfile.js +130 -12
- package/dist/ghidra/GhidraClient.js +195 -88
- package/dist/ghidra/GhidraDiagnostics.js +7 -0
- package/dist/ghidra/GhidraDoctor.js +15 -12
- package/dist/ghidra/GhidraFunctionValues.js +49 -2
- package/dist/ghidra/GhidraInstallation.js +215 -19
- package/dist/ghidra/GhidraInstallationPolicy.js +79 -29
- package/dist/ghidra/GhidraInventoryValues.js +30 -0
- package/dist/ghidra/GhidraJavaLaunch.js +91 -10
- package/dist/ghidra/GhidraJavaProperties.js +117 -0
- package/dist/ghidra/GhidraLanguageCatalog.js +74 -4
- package/dist/ghidra/GhidraLauncher.js +234 -57
- package/dist/ghidra/GhidraLoadImageAttest.js +28 -8
- package/dist/ghidra/GhidraLoadImageValues.js +72 -0
- package/dist/ghidra/GhidraMipsProfile.js +250 -14
- package/dist/ghidra/GhidraPeProfile.js +21 -0
- package/dist/ghidra/GhidraPowerPcProfile.js +51 -0
- package/dist/ghidra/GhidraProvider.js +54 -16
- package/dist/ghidra/GhidraProviderCapabilities.js +13 -12
- package/dist/ghidra/GhidraProviderClient.js +260 -57
- package/dist/ghidra/GhidraPspExtension.js +140 -0
- package/dist/ghidra/GhidraPspProfile.js +59 -0
- package/dist/ghidra/GhidraRawBinaryLanguage.js +40 -0
- package/dist/ghidra/GhidraRiscvProfile.js +100 -0
- package/dist/ghidra/GhidraSessionError.js +155 -11
- package/dist/ghidra/GhidraSessionValues.js +66 -0
- package/dist/ghidra/GhidraTransport.js +2 -1
- package/dist/go/GoBinaryContainer.js +140 -0
- package/dist/go/GoBinaryImage.js +210 -0
- package/dist/go/GoBinaryProvider.js +151 -0
- package/dist/go/GoElfImage.js +211 -0
- package/dist/go/GoMachoImage.js +164 -0
- package/dist/go/GoModuleText.js +217 -0
- package/dist/go/GoPeImage.js +124 -0
- package/dist/hopper/BridgeLauncher.js +35 -2
- package/dist/hopper/HopperAnalysisProfile.js +21 -11
- package/dist/hopper/HopperCleanup.js +15 -3
- package/dist/hopper/HopperClient.js +188 -36
- package/dist/hopper/HopperMacPublisher.js +29 -0
- package/dist/hopper/HopperMachOImage.js +61 -29
- package/dist/hopper/HopperProcessDiagnostic.js +27 -0
- package/dist/hopper/HopperProvider.js +59 -28
- package/dist/hopper/HopperProviderCapabilities.js +7 -3
- package/dist/hopper/HopperRequestQueue.js +17 -5
- package/dist/hopper/HopperSessionValues.js +10 -1
- package/dist/hopper/HopperTargetLease.js +66 -19
- package/dist/ida/IdaBusyHealth.js +44 -0
- package/dist/ida/IdaCallGraph.js +134 -0
- package/dist/ida/IdaConfiguration.js +7 -2
- package/dist/ida/IdaDiagnosticRedactor.js +199 -0
- package/dist/ida/IdaDiagnosticWriter.js +62 -0
- package/dist/ida/IdaDoctor.js +7 -5
- package/dist/ida/IdaJsonDiagnostic.js +138 -0
- package/dist/ida/IdaMcpConnection.js +297 -27
- package/dist/ida/IdaNativeProtocol.js +93 -0
- package/dist/ida/IdaOperationRunner.js +246 -43
- package/dist/ida/IdaProtocolValues.js +86 -4
- package/dist/ida/IdaProvider.js +29 -10
- package/dist/ida/IdaProviderCapabilities.js +37 -8
- package/dist/ida/IdaSessionClient.js +331 -54
- package/dist/ida/IdaWorkspace.js +54 -6
- package/dist/inspector/V8InspectorCaptureProjection.js +7 -2
- package/dist/inspector/V8InspectorEndpoint.js +15 -13
- package/dist/inspector/V8InspectorProvider.js +41 -7
- package/dist/javascript/analysis/JavaScriptAnalysisTransfer.js +19 -8
- package/dist/javascript/analysis/JavaScriptAnalysisWorker.js +103 -29
- package/dist/javascript/analysis/JavaScriptAnalysisWorkerProtocol.js +6 -4
- package/dist/javascript/analysis/JavaScriptAnalysisWorkerSchemas.js +78 -9
- package/dist/javascript/analysis/JavaScriptAnalysisWorkerServer.js +15 -5
- package/dist/javascript/recovery/RecoveryFiles.js +51 -6
- package/dist/javascript/recovery/WakaruExecution.js +19 -11
- package/dist/javascript/recovery/WakaruProvider.js +12 -9
- package/dist/javascript/recovery/WakaruPublication.js +24 -10
- package/dist/javascript/recovery/WakaruRelease.js +1 -1
- package/dist/javascript/recovery/WakaruReport.js +3 -2
- package/dist/javascript/sourceMaps/DecodedSourceMap.js +2 -16
- package/dist/javascript/sourceMaps/SourceMapCommand.js +22 -4
- package/dist/javascript/sourceMaps/SourceMapDecoder.js +22 -4
- package/dist/javascript/sourceMaps/SourceMapFormat.js +25 -38
- package/dist/javascript/sourceMaps/TraceSourceMap.js +34 -6
- package/dist/jeb/JebMcpConnection.js +19 -12
- package/dist/jeb/JebMcpEndpoint.js +6 -1
- package/dist/jeb/JebProvider.js +5 -7
- package/dist/logger.js +14 -1
- package/dist/main/shutdown.js +3 -0
- package/dist/main/transport.js +48 -4
- package/dist/main.js +14 -3
- package/dist/mcp/AnalysisSnapshotFiles-BAbiJQOc.js +1412 -0
- package/dist/mcp/ArtifactProvider-DViCU_rn.js +2183 -0
- package/dist/mcp/ArtifactProviderMetadata-b7pOK5_t.js +76 -0
- package/dist/mcp/ArtifactReader-OyM03Gjn.js +55 -0
- package/dist/mcp/ArtifactResourceScope-P3tq5z8Z.js +162 -0
- package/dist/mcp/AsarHeader-WsPgoooH.js +31 -0
- package/dist/mcp/BinarySessionStatus-B4P9gf-S.js +212 -0
- package/dist/mcp/BinaryTargetResolver-BMaE_0H1.js +1427 -0
- package/dist/mcp/BoundedFileBytes-DuczXiQZ.js +68 -0
- package/dist/mcp/CdpCaptureDocuments-HDiF2O7k.js +746 -0
- package/dist/mcp/CdpCaptureValues-M-j6CIh1.js +90 -0
- package/dist/mcp/CdpConnection-BpDfz4MK.js +570 -0
- package/dist/mcp/CdpOptionalCommand-BPjRD9Kz.js +120 -0
- package/dist/mcp/CdpTargetSession-BsPoKhEU.js +86 -0
- package/dist/mcp/DirectAnalysis-DrafbXke.js +409 -0
- package/dist/mcp/DirectAnalysisStatus-CjjeDLzW.js +44 -0
- package/dist/mcp/ElectronFileScope-BPG_YoyU.js +110 -0
- package/dist/mcp/InterfaceBuilderDecodeBudget-5F2AkxJT.js +652 -0
- package/dist/mcp/ManagedStaticProvider-BthZbKyZ.js +5028 -0
- package/dist/mcp/NativeMacOSProvider-Bh79k8dI.js +4867 -0
- package/dist/mcp/NativeMacOSProviderMetadata-N1lPOaY_.js +307 -0
- package/dist/mcp/ProcedureAddressResolution-CQpuwm1h.js +19 -0
- package/dist/mcp/ProcessOwnership-Bl_3ejLe.js +1502 -0
- package/dist/mcp/ProviderDeadline-DskQ94YD.js +932 -0
- package/dist/mcp/WorkflowEvidence-umWrB_wm.js +111 -0
- package/dist/mcp/analysisErrorCore-DXRTvF_m.js +235 -0
- package/dist/mcp/analysisErrorProjection-BN0EPM-3.js +892 -0
- package/dist/mcp/artifactOperationError-CkHMMaf7.js +27 -0
- package/dist/mcp/artifactToolContracts-Di4qZlEt.js +72 -0
- package/dist/mcp/browserObservation-C0s4i8UI.js +4468 -0
- package/dist/mcp/browserObservationError-CyLugqX4.js +40 -0
- package/dist/mcp/browserObservationSchemas-tgqjH7aA.js +573 -0
- package/dist/mcp/browserScenario-CAQ8Fns9.js +2929 -0
- package/dist/mcp/browserScenarioCapture-CTNFN-FI.js +479 -0
- package/dist/mcp/canonicalDigest-Bi_0_zGi.js +71 -0
- package/dist/mcp/digests-BFoWUT_-.js +223 -0
- package/dist/mcp/electronActiveObservation-lDvQTMR0.js +226 -0
- package/dist/mcp/electronObservation-DFOFEood.js +112 -0
- package/dist/mcp/electronObservation-i7LcILQ-.js +562 -0
- package/dist/mcp/electronScenario-nCzE6IfJ.js +653 -0
- package/dist/mcp/emptyArraySchema-tL6Qymyd.js +140 -0
- package/dist/mcp/enhancedInputs-DgdEnzHy.js +56 -0
- package/dist/mcp/javascriptRuntimeObservation-61NhCf7H.js +690 -0
- package/dist/mcp/javascriptRuntimeObservation-PIUoLfX6.js +121 -0
- package/dist/mcp/jsonSerialization-V-wWiFRE.js +152 -0
- package/dist/mcp/lipo-Bnkoq_6W.js +502 -0
- package/dist/mcp/localPath-AxvW9aPe.js +19 -0
- package/dist/mcp/logger-BQY5ulYv.js +48 -0
- package/dist/mcp/main-kBXHZ8S5.js +69390 -0
- package/dist/mcp/main.js +6 -0
- package/dist/mcp/managedToolContracts-CK--I_s7.js +101 -0
- package/dist/mcp/nativeValueTrace-DR9UE62L.js +3439 -0
- package/dist/mcp/officialToolContracts-B67NJ2tC.js +1413 -0
- package/dist/mcp/pngHeader-DQ-ObyY2.js +147 -0
- package/dist/mcp/propertyListKeys-DD25WsjI.js +553 -0
- package/dist/mcp/providerAdapterError-sDxToNal.js +25 -0
- package/dist/mcp/providerIdentities--ptAh481.js +31 -0
- package/dist/mcp/providerIdentity-BCQ5n5tw.js +16 -0
- package/dist/mcp/providerOperationHealth-CTYa3iLf.js +48 -0
- package/dist/mcp/rolldown-runtime-BjeaiXFo.js +121 -0
- package/dist/mcp/safeJson-NeGfpkrI.js +25 -0
- package/dist/mcp/scanCanonical-CRXSpule.js +3982 -0
- package/dist/mcp/serverIdentity-Cio4iFV3.js +1328 -0
- package/dist/mcp/sourceMapEnvelope-C0uJlrOh.js +94 -0
- package/dist/mcp/toolContracts-BW05wpcr.js +12200 -0
- package/dist/mcp/toolOutputSchemaGroups-ColvNZ1r.js +17533 -0
- package/dist/mcp/unicodeCodePointOrder-BezCbTpg.js +26 -0
- package/dist/mcp/webContentArtifact-Dzjc1z-R.js +284 -0
- package/dist/mcp/webRuntime-K__NYzXm.js +74 -0
- package/dist/mcp/webSourceLocation-DbMAT2J9.js +11130 -0
- package/dist/mcpDoctor.js +93 -70
- package/dist/mcpStartupPolicy.js +3 -0
- package/dist/native/AppleDispatchCoverage.js +57 -17
- package/dist/native/AppleDispatchMetadata.js +6 -2
- package/dist/native/AppleMachoFixups.js +188 -25
- package/dist/native/AppleMachoSelection.js +30 -23
- package/dist/native/AppleObjcCategories.js +1 -2
- package/dist/native/AppleObjcDispatchFacets.js +76 -7
- package/dist/native/CommandRunner.js +142 -32
- package/dist/native/LldbCallTracer.js +5 -3
- package/dist/native/MachoArchitectureSelection.js +50 -0
- package/dist/native/NativeCallObservation.js +2 -1
- package/dist/native/NativeMacOSProvider.js +90 -29
- package/dist/native/NativeMachoInspection.js +136 -76
- package/dist/native/NativeUiObservation.js +2 -2
- package/dist/native/SignatureTargetBinding.js +118 -55
- package/dist/native/parsers/codesign.js +27 -10
- package/dist/native/parsers/demangle.js +7 -1
- package/dist/native/parsers/dyldInfo.js +73 -4
- package/dist/native/parsers/lipo.js +53 -19
- package/dist/native/parsers/machoUuid.js +150 -0
- package/dist/native/parsers/otool.js +232 -29
- package/dist/native/pe/PeResourcesProvider.js +20 -6
- package/dist/native/pwndbg/PwndbgCoreContext.js +20 -20
- package/dist/native/pwntools/PwntoolsDecoder.js +264 -40
- package/dist/native/pwntools/PwntoolsFailures.js +2 -1
- package/dist/native/pwntools/PwntoolsInputLimit.js +27 -0
- package/dist/native/pwntools/PwntoolsRecordedCrashProvider.js +27 -15
- package/dist/native/pwntools/PwntoolsResourceLimits.js +3 -3
- package/dist/native/pwntools/RecordedCrashSourceBindings.js +12 -8
- package/dist/native/pwntools/RecordedCrashStructureBindings.js +3 -1
- package/dist/objdump/ObjdumpCommand.js +21 -0
- package/dist/pcap/PcapCommand.js +146 -0
- package/dist/pcap/PcapConfiguration.js +93 -0
- package/dist/pcap/PcapNativeBound.js +58 -0
- package/dist/pcap/PcapOutput.js +240 -0
- package/dist/pcap/PcapProvider.js +424 -0
- package/dist/pcap/PcapSnapshot.js +171 -0
- package/dist/process/ArtifactAnalysisResources.js +213 -0
- package/dist/process/CurrentEntrypointPath.js +6 -0
- package/dist/process/DarwinProcessRunTokenReader.js +117 -13
- package/dist/process/ExecFileBoundedOutput.js +44 -0
- package/dist/process/ExecFileOutput.js +30 -6
- package/dist/process/JavaScriptWorkerMemoryLimit.js +25 -0
- package/dist/process/LinuxResourceLimits.js +80 -0
- package/dist/process/MacCodeSignature.js +3 -0
- package/dist/process/OwnedCommand.js +37 -13
- package/dist/process/PrivateRuntimeRoot.js +9 -19
- package/dist/process/PrivateRuntimeRootUnavailableError.js +10 -0
- package/dist/process/ProcessOwnership.js +70 -17
- package/dist/process/ProcessOwnershipObservation.js +35 -4
- package/dist/process/ProviderDeadline.js +58 -12
- package/dist/process/ProviderProcess.js +108 -11
- package/dist/process/WindowsAuthority.js +48 -39
- package/dist/process/WindowsBatchCommand.js +46 -0
- package/dist/process/boundedUtf8Text.js +13 -0
- package/dist/process/capture/FilesystemSnapshot.js +60 -9
- package/dist/process/capture/ProcessCaptureClock.js +2 -0
- package/dist/process/capture/ProcessCaptureError.js +22 -3
- package/dist/process/capture/ProcessCaptureJournal.js +2 -1
- package/dist/process/capture/ProcessCaptureLifecycle.js +87 -36
- package/dist/process/capture/ProcessCaptureProgress.js +2 -1
- package/dist/process/capture/ProcessHarness.js +17 -14
- package/dist/process/capture/ProcessNormalization.js +278 -36
- package/dist/process/capture/ProcessSampling.js +3 -2
- package/dist/process/capture/ProcessScenarioRuntimeValidation.js +13 -13
- package/dist/process/capture/TerminalRenderer.js +31 -10
- package/dist/process/ownedDebuggerSession.js +203 -0
- package/dist/reference/ReferenceSourceReader.js +0 -1
- package/dist/reference/ReferenceSourceReaderEntries.js +68 -54
- package/dist/reference/ReferenceSourceReaderErrors.js +5 -1
- package/dist/reference/ReferenceSourceReaderFile.js +0 -1
- package/dist/reference/ReferenceSourceReaderTypes.js +1 -2
- package/dist/reference/ReferenceSourceReaderValidate.js +0 -1
- package/dist/rizin/RizinCommand.js +14 -0
- package/dist/rizin/RizinDebugSessionManager.js +1072 -0
- package/dist/rust/RustAuditableReader.js +309 -0
- package/dist/rust/RustBinaryImage.js +116 -0
- package/dist/rust/RustBinaryProvider.js +162 -0
- package/dist/server/EvidenceMcpServer.js +160 -37
- package/dist/server/admittedToolOperation.js +7 -2
- package/dist/server/contractToolHandler.js +8 -1
- package/dist/server/createServer.js +157 -27
- package/dist/server/externalMutationAdmission.js +50 -0
- package/dist/server/mcpProgress.js +4 -2
- package/dist/server/promptCompletion.js +19 -6
- package/dist/server/providerEnvironment.js +3 -0
- package/dist/server/registerAnalysisViewTool.js +6 -2
- package/dist/server/registerAndroidTools.js +22 -4
- package/dist/server/registerApplicationTools/projectMobileApplicationGraph.js +8 -1
- package/dist/server/registerArtifactTools.js +21 -1
- package/dist/server/registerBrowserTools.js +2 -4
- package/dist/server/registerBundleComparisonTool.js +4 -4
- package/dist/server/registerCaptureTools.js +12 -0
- package/dist/server/registerCutterTools.js +33 -0
- package/dist/server/registerElectronTools.js +12 -9
- package/dist/server/registerEnhancedTools.js +7 -6
- package/dist/server/registerEvidenceTools.js +14 -10
- package/dist/server/registerEvmTools.js +22 -4
- package/dist/server/registerFlutterTools.js +17 -0
- package/dist/server/registerFridaTools.js +205 -0
- package/dist/server/registerFunctionComparisonTool.js +29 -9
- package/dist/server/registerGdbTools.js +64 -0
- package/dist/server/registerGoTools.js +9 -0
- package/dist/server/registerInvestigationTools/helpers.js +2 -2
- package/dist/server/registerInvestigationTools.js +12 -8
- package/dist/server/registerJavaScriptRuntimeObservationTools.js +1 -5
- package/dist/server/registerManagedTools.js +11 -1
- package/dist/server/registerNativeTools.js +14 -0
- package/dist/server/registerOfficialTools.js +5 -0
- package/dist/server/registerPcapTools.js +35 -0
- package/dist/server/registerProcessComparisonTool.js +9 -2
- package/dist/server/registerReverseEngineeringTools.js +86 -0
- package/dist/server/registerRizinDebugTools.js +53 -0
- package/dist/server/registerRustTools.js +9 -0
- package/dist/server/registerSessionRecordTools.js +19 -13
- package/dist/server/registerSessionStatusTool.js +22 -4
- package/dist/server/registerSessionTools.js +29 -16
- package/dist/server/registerSignalTools.js +12 -0
- package/dist/server/registerSqliteTools.js +9 -0
- package/dist/server/registerWasmTools.js +46 -0
- package/dist/server/registerWebNetworkCaptureTool.js +24 -10
- package/dist/server/retainedSummaryDelivery.js +28 -0
- package/dist/server/sessionAvailabilityPolicy.js +3 -0
- package/dist/server/toolRegistrationOptions.js +8 -0
- package/dist/server/toolResult.js +52 -19
- package/dist/server/toolResultEncoding.js +36 -3
- package/dist/serverIdentity.js +17 -8
- package/dist/signals/SigrokRecordingProvider.js +339 -0
- package/dist/signals/parseDecoderDiscovery.js +65 -0
- package/dist/sqlite/SqliteDatabaseFailures.js +134 -0
- package/dist/sqlite/SqliteDatabaseInspection.js +421 -0
- package/dist/sqlite/SqliteDatabaseLimits.js +16 -0
- package/dist/sqlite/SqliteDatabaseProvider.js +295 -0
- package/dist/sqlite/SqliteDatabaseSnapshot.js +156 -0
- package/dist/sqlite/SqliteDatabaseWorker.js +46 -0
- package/dist/sqlite/SqliteDatabaseWorkerExecution.js +112 -0
- package/dist/wasm/WabtArtifactProvider.js +336 -0
- package/dist/wasm/WabtFailures.js +101 -0
- package/dist/wasm/WabtInterface.js +309 -0
- package/dist/wasm/WabtOutput.js +60 -0
- package/dist/wasm/WabtRelease.js +12 -0
- package/dist/wasm/WabtString.js +48 -0
- package/dist/wasm/WabtWat.js +147 -0
- package/dist/wasm/WasmGlueAdapter.js +53 -0
- package/dist/wasm/WasmInterfaceBudget.js +11 -0
- package/dist/windows/WindowsNativeLoader.js +37 -7
- package/dist/windows/WindowsOwnedProcess.js +150 -17
- package/dist/windows/WindowsPrivateRuntime.js +22 -1
- package/install.sh +157 -98
- package/licenses/Apache-2.0.txt +202 -0
- package/licenses/GCC-Runtime-Library-Exception-3.1.txt +73 -0
- package/licenses/GPL-3.0.txt +674 -0
- package/licenses/LGPL-2.0.txt +480 -0
- package/licenses/MIT-template.txt +18 -0
- package/licenses/MinGW-w64-runtime.txt +240 -0
- package/licenses/Node-22.19.0-LICENSE.txt +2666 -0
- package/licenses/README.md +68 -0
- package/licenses/cfworker-MIT.txt +21 -0
- package/licenses/dotnet-runtime-MIT.txt +23 -0
- package/licenses/frida-17.23.2-COPYING.txt +50 -0
- package/licenses/ghidra-12.1.4-DISCLAIMER.txt +13 -0
- package/licenses/ghidra-12.1.4-LICENSE.txt +201 -0
- package/licenses/ghidra-12.1.4-NOTICE.txt +49 -0
- package/licenses/npm-dependencies.txt +3612 -0
- package/licenses/npm-runtime-notices.txt +8548 -0
- package/licenses/upstream-sources.json +72 -0
- package/licenses/xterm-MIT.txt +21 -0
- package/native/windows/README.md +92 -11
- package/native/windows/build/manifest.json +2 -2
- package/native/windows/build/rea-windows-x64.node +0 -0
- package/package.json +89 -22
- package/scripts/electron-active-hook.cjs +4 -1
- package/scripts/hopper-demo-x11.py +53 -3
- package/scripts/prepack.mjs +5 -0
- package/scripts/rea-android-workspace-guardian.mjs +46 -0
- package/scripts/rea.mjs +28 -12
- package/scripts/verify-windows-native-artifact.mjs +2 -2
- package/skills/reverse-engineer-anything/SKILL.md +131 -10
- package/skills/reverse-engineer-anything/references/connection-and-recovery.md +10 -10
- package/skills/reverse-engineer-anything/references/evidence-workflows.md +23 -0
- package/skills/reverse-engineer-anything/references/javascript-applications.md +28 -2
- package/skills/reverse-engineer-anything/references/native-and-artifacts.md +125 -15
- package/skills/reverse-engineer-anything/references/runtime-observation.md +57 -7
- package/third_party/README.md +1 -1
- package/third_party/wabt/README.md +24 -0
- package/dist/browser/history/HarCaptureAdapter.js +0 -20
- package/dist/cli/streamedJsonOutput.js +0 -135
- /package/dist/{application/binary → process}/AbortablePromise.js +0 -0
package/dist/adb/AdbProvider.js
CHANGED
|
@@ -1,27 +1,28 @@
|
|
|
1
|
-
import { execFile } from "node:child_process";
|
|
2
1
|
import { createHash } from "node:crypto";
|
|
3
2
|
import { constants as fsConstants } from "node:fs";
|
|
4
|
-
import { access, lstat, mkdir, rm, stat, writeFile } from "node:fs/promises";
|
|
5
|
-
import { basename, join, resolve } from "node:path";
|
|
3
|
+
import { access, copyFile, lstat, mkdtemp, mkdir, rmdir, rm, stat, writeFile, } from "node:fs/promises";
|
|
4
|
+
import { basename, dirname, extname, join, resolve } from "node:path";
|
|
5
|
+
import { providerConfigurationRefusal } from "../domain/providerConfigurationRefusal.js";
|
|
6
6
|
import { createAnalysisExecution, } from "../application/AnalysisProvider.js";
|
|
7
|
-
import {
|
|
7
|
+
import { adbResultSchemas } from "../domain/adb/adbDeviceAnalysis.js";
|
|
8
|
+
import { AnalysisArtifactChangedError, AnalysisCancelledError, AnalysisInputError, AnalysisOutputError, AnalysisProtocolError, AnalysisResourceConstraintError, AnalysisTimeoutError, AnalysisUnsupportedTargetError, } from "../domain/analysisErrorCore.js";
|
|
8
9
|
import { AnalysisError } from "../domain/analysisErrorBase.js";
|
|
9
10
|
import { analysisErrorWithCleanupFailure } from "../domain/analysisErrorCleanup.js";
|
|
10
11
|
import { err, ok } from "../domain/result.js";
|
|
11
12
|
import { hashStableFile } from "../filesystem/StableFileHash.js";
|
|
12
13
|
import { ProviderCleanupError } from "../domain/providerCleanupError.js";
|
|
13
|
-
import {
|
|
14
|
+
import { execFileBytes, execFileOutputFailure, } from "../process/ExecFileOutput.js";
|
|
14
15
|
import { AdbConfigurationFailure, adbConfigurationAvailability, inspectAdbClient, resolveAdbBinary, } from "./AdbConfiguration.js";
|
|
15
|
-
import { parseAdbDevicesOutput, parseGetpropOutput, parsePackageListOutput, parsePmPathOutput, } from "./AdbDeviceOutput.js";
|
|
16
|
-
import {
|
|
16
|
+
import { displayDevicePath, parseAdbDevicesOutput, parseGetpropOutput, parsePackageListOutput, parsePmPathOutput, } from "./AdbDeviceOutput.js";
|
|
17
|
+
import { adbHostFileName } from "./AdbHostFileName.js";
|
|
18
|
+
import { ADB_DIRECTORY_BATCH_SCRIPT, parseAdbDirectoryListing, } from "./AdbDirectoryListing.js";
|
|
19
|
+
import { parseAmStartOutput, parseBugreportCopiedPath, parseDumpsysPackageOutput, parseFeatureListOutput, packageChangeFailureReason, parsePackageChangeOutput, parseProcessListOutput, parsePngDimensions, parseResolveActivityOutput, parseServiceListOutput, parseSettingsGetOutput, parseWindowFocusOutput, parseWmDensityOutput, parseWmSizeOutput, } from "./AdbShellOutput.js";
|
|
17
20
|
/** Stable identity for the ADB device-acquisition provider. */
|
|
18
21
|
export const ADB_PROVIDER_IDENTITY = {
|
|
19
22
|
id: "adb",
|
|
20
23
|
name: "Android Debug Bridge",
|
|
21
24
|
version: null,
|
|
22
25
|
};
|
|
23
|
-
const VERSION_TIMEOUT_MS = 10_000;
|
|
24
|
-
const VERSION_MAX_OUTPUT_BYTES = 64 * 1024;
|
|
25
26
|
const DEVICES_TIMEOUT_MS = 20_000;
|
|
26
27
|
const DEVICES_MAX_OUTPUT_BYTES = 1024 * 1024;
|
|
27
28
|
const SHELL_TIMEOUT_MS = 30_000;
|
|
@@ -47,7 +48,6 @@ const BUGREPORT_TIMEOUT_MS = 600_000;
|
|
|
47
48
|
const BUGREPORT_MAX_OUTPUT_BYTES = 1024 * 1024;
|
|
48
49
|
const STDERR_EXCERPT_BYTES = 512;
|
|
49
50
|
const UNPARSED_LINES_REPORTED = 10;
|
|
50
|
-
const STOP_GRACE_MS = 5_000;
|
|
51
51
|
const hashAdbFile = async (path, operation, signal) => {
|
|
52
52
|
try {
|
|
53
53
|
return await hashStableFile(path, signal);
|
|
@@ -69,11 +69,11 @@ const adbArguments = (serial, arguments_) => {
|
|
|
69
69
|
return serial === undefined ? operands : ["-s", serial, ...operands];
|
|
70
70
|
};
|
|
71
71
|
/** Run one bounded adb invocation and keep its exact failure shape. */
|
|
72
|
-
const
|
|
72
|
+
const runAdbCapture = async (operation, targetPath, binary, arguments_, limits, signal) => {
|
|
73
73
|
if (signal?.aborted === true)
|
|
74
74
|
return err(new AnalysisCancelledError(operation));
|
|
75
75
|
try {
|
|
76
|
-
return ok(await
|
|
76
|
+
return ok(await execFileBytes(binary, arguments_, {
|
|
77
77
|
timeout: limits.timeoutMs,
|
|
78
78
|
maxBuffer: limits.maxOutputBytes,
|
|
79
79
|
stopSignal: "SIGTERM",
|
|
@@ -108,41 +108,37 @@ const runAdb = async (operation, targetPath, binary, arguments_, limits, signal)
|
|
|
108
108
|
: excerpt, { cause }));
|
|
109
109
|
}
|
|
110
110
|
};
|
|
111
|
-
/**
|
|
112
|
-
const
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
timeout: 0,
|
|
123
|
-
}, (error, stdout) => {
|
|
124
|
-
signal?.removeEventListener("abort", onAbort);
|
|
125
|
-
clearTimeout(deadline);
|
|
126
|
-
clearTimeout(grace);
|
|
127
|
-
if (stopped === "abort")
|
|
128
|
-
return settle(err(new AnalysisCancelledError(operation)));
|
|
129
|
-
if (stopped === "timeout")
|
|
130
|
-
return settle(err(new AnalysisTimeoutError(operation, limits.timeoutMs)));
|
|
131
|
-
if (error !== null)
|
|
132
|
-
return settle(err(new AnalysisProtocolError(`adb failed for ${operation}: ${error.message}`, { cause: error })));
|
|
133
|
-
settle(ok(stdout));
|
|
111
|
+
/** Decode textual adb protocols after the shared byte capture and error boundary. */
|
|
112
|
+
const runAdb = async (...arguments_) => {
|
|
113
|
+
const captured = await runAdbCapture(...arguments_);
|
|
114
|
+
if (!captured.ok)
|
|
115
|
+
return captured;
|
|
116
|
+
return ok({
|
|
117
|
+
stdout: captured.value.stdout.toString("utf8"),
|
|
118
|
+
stderr: captured.value.stderr.toString("utf8"),
|
|
119
|
+
// Byte count of the captured output before UTF-8 decoding, so malformed
|
|
120
|
+
// sequences replaced by U+FFFD still report their true captured size.
|
|
121
|
+
stdoutBytes: captured.value.stdout.byteLength,
|
|
134
122
|
});
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
123
|
+
};
|
|
124
|
+
/**
|
|
125
|
+
* adb exits nonzero when the device refuses a package change, printing the
|
|
126
|
+
* `Failure [...]` verdict to stderr (install) or stdout (uninstall). Read the
|
|
127
|
+
* refusal from that failed run so it is not reported as unreadable output.
|
|
128
|
+
*/
|
|
129
|
+
const packageChangeRefusal = (operation, serial, error) => {
|
|
130
|
+
if (!(error instanceof AnalysisProtocolError))
|
|
131
|
+
return undefined;
|
|
132
|
+
const failure = execFileOutputFailure(error.cause);
|
|
133
|
+
if (failure === undefined)
|
|
134
|
+
return undefined;
|
|
135
|
+
const reason = packageChangeFailureReason(`${failure.stdout}\n${failure.stderr}`);
|
|
136
|
+
return reason === null
|
|
137
|
+
? undefined
|
|
138
|
+
: err(new AnalysisUnsupportedTargetError(operation, serial, reason, {
|
|
139
|
+
cause: error,
|
|
140
|
+
}));
|
|
141
|
+
};
|
|
146
142
|
const clientIdentityResult = (selection, identity) => ({
|
|
147
143
|
binary_path: selection.binary,
|
|
148
144
|
path_source: selection.pathSource,
|
|
@@ -175,9 +171,27 @@ const refuseExistingTarget = async (operation, path) => {
|
|
|
175
171
|
return new AnalysisOutputError(operation, `The output file already exists: ${path}`);
|
|
176
172
|
return undefined;
|
|
177
173
|
};
|
|
178
|
-
|
|
174
|
+
/** Publish an ADB-produced archive without replacing an existing caller file. */
|
|
175
|
+
const publishBugreport = async (source, directory) => {
|
|
176
|
+
const fileName = basename(source);
|
|
177
|
+
const extension = extname(fileName);
|
|
178
|
+
const stem = extension === "" ? fileName : fileName.slice(0, -extension.length);
|
|
179
|
+
for (let suffix = 0;; suffix += 1) {
|
|
180
|
+
const destination = join(directory, suffix === 0 ? fileName : `${stem} (${String(suffix)})${extension}`);
|
|
181
|
+
try {
|
|
182
|
+
await copyFile(source, destination, fsConstants.COPYFILE_EXCL);
|
|
183
|
+
return destination;
|
|
184
|
+
}
|
|
185
|
+
catch (cause) {
|
|
186
|
+
if (cause instanceof Error && "code" in cause && cause.code === "EEXIST")
|
|
187
|
+
continue;
|
|
188
|
+
throw cause;
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
};
|
|
192
|
+
const removeOwnedOutputDirectory = async (path, identity) => {
|
|
179
193
|
if (identity === undefined)
|
|
180
|
-
throw new Error(`Cannot verify the created
|
|
194
|
+
throw new Error(`Cannot verify the created output directory identity; refusing to remove ${path}`);
|
|
181
195
|
let current;
|
|
182
196
|
try {
|
|
183
197
|
current = await lstat(path);
|
|
@@ -192,9 +206,82 @@ const removeOwnedPackageDirectory = async (path, identity) => {
|
|
|
192
206
|
current.dev !== identity.dev ||
|
|
193
207
|
current.ino !== identity.ino ||
|
|
194
208
|
current.mode !== identity.mode)
|
|
195
|
-
throw new Error(`The created
|
|
209
|
+
throw new Error(`The created output directory was replaced or changed; refusing to remove ${path}`);
|
|
196
210
|
await rm(path, { recursive: true, force: true });
|
|
197
211
|
};
|
|
212
|
+
const reservePackageDestinations = async (operation, packageName, packageDirectory, entries, capturedOutput) => {
|
|
213
|
+
const reservations = [];
|
|
214
|
+
for (const entry of entries) {
|
|
215
|
+
const path = join(packageDirectory, entry.file_name);
|
|
216
|
+
try {
|
|
217
|
+
await mkdir(path);
|
|
218
|
+
const created = await lstat(path);
|
|
219
|
+
if (!created.isDirectory() || created.isSymbolicLink())
|
|
220
|
+
throw new Error(`Could not reserve local filename ${entry.file_name}`);
|
|
221
|
+
reservations.push({
|
|
222
|
+
path,
|
|
223
|
+
file_name: entry.file_name,
|
|
224
|
+
device_path: entry.device_path,
|
|
225
|
+
identity: {
|
|
226
|
+
dev: created.dev,
|
|
227
|
+
ino: created.ino,
|
|
228
|
+
mode: created.mode,
|
|
229
|
+
},
|
|
230
|
+
});
|
|
231
|
+
}
|
|
232
|
+
catch (cause) {
|
|
233
|
+
const errorCode = cause instanceof Error &&
|
|
234
|
+
"code" in cause &&
|
|
235
|
+
typeof cause.code === "string"
|
|
236
|
+
? cause.code
|
|
237
|
+
: null;
|
|
238
|
+
return new AnalysisOutputError(operation, "local_destination_unavailable", {
|
|
239
|
+
cause,
|
|
240
|
+
capturedOutput,
|
|
241
|
+
userMessage: `pm path for ${packageName} reported ${displayDevicePath(entry.device_path)}, whose file name ${displayDevicePath(entry.file_name)} cannot be written to a unique local destination (${errorCode ?? "unknown error"}). No APK was pulled.`,
|
|
242
|
+
remediationAction: "Review details.diagnostics and details.captured_output for the refused destination. Correct the output filesystem conflict before retrying; REA does not rename APKs.",
|
|
243
|
+
diagnostics: {
|
|
244
|
+
package_name: packageName,
|
|
245
|
+
device_path: entry.device_path,
|
|
246
|
+
file_name: entry.file_name,
|
|
247
|
+
error_code: errorCode,
|
|
248
|
+
},
|
|
249
|
+
});
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
for (const reservation of reservations) {
|
|
253
|
+
try {
|
|
254
|
+
const current = await lstat(reservation.path);
|
|
255
|
+
if (!current.isDirectory() ||
|
|
256
|
+
current.isSymbolicLink() ||
|
|
257
|
+
current.dev !== reservation.identity.dev ||
|
|
258
|
+
current.ino !== reservation.identity.ino ||
|
|
259
|
+
current.mode !== reservation.identity.mode)
|
|
260
|
+
throw new Error(`The local filename reservation changed before release: ${reservation.path}`);
|
|
261
|
+
await rmdir(reservation.path);
|
|
262
|
+
}
|
|
263
|
+
catch (cause) {
|
|
264
|
+
const errorCode = cause instanceof Error &&
|
|
265
|
+
"code" in cause &&
|
|
266
|
+
typeof cause.code === "string"
|
|
267
|
+
? cause.code
|
|
268
|
+
: null;
|
|
269
|
+
return new AnalysisOutputError(operation, "local_destination_unavailable", {
|
|
270
|
+
cause,
|
|
271
|
+
capturedOutput,
|
|
272
|
+
userMessage: `Could not release the local filename reservation for ${displayDevicePath(reservation.device_path)} (${errorCode ?? "unknown error"}); no APK was pulled.`,
|
|
273
|
+
remediationAction: "Review details.diagnostics and details.captured_output for the refused destination. Correct the output filesystem conflict before retrying; REA does not rename APKs.",
|
|
274
|
+
diagnostics: {
|
|
275
|
+
package_name: packageName,
|
|
276
|
+
device_path: reservation.device_path,
|
|
277
|
+
file_name: reservation.file_name,
|
|
278
|
+
error_code: errorCode,
|
|
279
|
+
},
|
|
280
|
+
});
|
|
281
|
+
}
|
|
282
|
+
}
|
|
283
|
+
return undefined;
|
|
284
|
+
};
|
|
198
285
|
/**
|
|
199
286
|
* ADB device inspection and acquisition over a caller-selected adb binary.
|
|
200
287
|
*
|
|
@@ -206,11 +293,11 @@ const removeOwnedPackageDirectory = async (path, identity) => {
|
|
|
206
293
|
*/
|
|
207
294
|
export class AdbProvider {
|
|
208
295
|
environment;
|
|
209
|
-
#
|
|
296
|
+
#pendingOutputDirectoryCleanup = new Set();
|
|
210
297
|
#activeOperations = new Set();
|
|
211
298
|
#closing = false;
|
|
212
299
|
#closePromise;
|
|
213
|
-
#
|
|
300
|
+
#outputCleanupPromise;
|
|
214
301
|
constructor(options = {}) {
|
|
215
302
|
this.environment = options.environment ?? process.env;
|
|
216
303
|
}
|
|
@@ -219,8 +306,8 @@ export class AdbProvider {
|
|
|
219
306
|
}
|
|
220
307
|
/** Probe the selected adb binary; never contacts devices or the server. */
|
|
221
308
|
async inspectAvailability(signal) {
|
|
222
|
-
const selection = this.selection();
|
|
223
309
|
try {
|
|
310
|
+
const selection = this.selection();
|
|
224
311
|
await inspectAdbClient(selection, signal);
|
|
225
312
|
return {
|
|
226
313
|
status: "available",
|
|
@@ -238,14 +325,14 @@ export class AdbProvider {
|
|
|
238
325
|
throw cause;
|
|
239
326
|
}
|
|
240
327
|
}
|
|
241
|
-
/** Retry removal of
|
|
328
|
+
/** Retry removal of owned output directories retained after failed cleanup. */
|
|
242
329
|
close() {
|
|
243
330
|
this.#closing = true;
|
|
244
331
|
if (this.#closePromise !== undefined)
|
|
245
332
|
return this.#closePromise;
|
|
246
333
|
const closing = (async () => {
|
|
247
334
|
await Promise.all(this.#activeOperations);
|
|
248
|
-
await this.#
|
|
335
|
+
await this.#retryOutputDirectoryCleanup();
|
|
249
336
|
})().finally(() => {
|
|
250
337
|
if (this.#closePromise === closing)
|
|
251
338
|
this.#closePromise = undefined;
|
|
@@ -253,42 +340,43 @@ export class AdbProvider {
|
|
|
253
340
|
this.#closePromise = closing;
|
|
254
341
|
return this.#closePromise;
|
|
255
342
|
}
|
|
256
|
-
#
|
|
257
|
-
if (this.#
|
|
258
|
-
return this.#
|
|
259
|
-
const cleanup = this.#
|
|
260
|
-
if (this.#
|
|
261
|
-
this.#
|
|
343
|
+
#retryOutputDirectoryCleanup() {
|
|
344
|
+
if (this.#outputCleanupPromise !== undefined)
|
|
345
|
+
return this.#outputCleanupPromise;
|
|
346
|
+
const cleanup = this.#performOutputDirectoryCleanup().finally(() => {
|
|
347
|
+
if (this.#outputCleanupPromise === cleanup)
|
|
348
|
+
this.#outputCleanupPromise = undefined;
|
|
262
349
|
});
|
|
263
|
-
this.#
|
|
350
|
+
this.#outputCleanupPromise = cleanup;
|
|
264
351
|
return cleanup;
|
|
265
352
|
}
|
|
266
|
-
async #
|
|
353
|
+
async #performOutputDirectoryCleanup() {
|
|
267
354
|
const failures = [];
|
|
268
|
-
for (const owner of this.#
|
|
355
|
+
for (const owner of this.#pendingOutputDirectoryCleanup) {
|
|
269
356
|
try {
|
|
270
357
|
await owner.remove();
|
|
271
|
-
this.#
|
|
358
|
+
this.#pendingOutputDirectoryCleanup.delete(owner);
|
|
272
359
|
}
|
|
273
360
|
catch (cause) {
|
|
274
361
|
const cleanup = new ProviderCleanupError(ADB_PROVIDER_IDENTITY.id, [owner.path], {
|
|
275
362
|
reason: cause instanceof Error ? cause.message : String(cause),
|
|
276
|
-
}, { operation:
|
|
277
|
-
failures.push(analysisErrorWithCleanupFailure(owner.primary, cleanup,
|
|
363
|
+
}, { operation: owner.operation, cause });
|
|
364
|
+
failures.push(analysisErrorWithCleanupFailure(owner.primary, cleanup, owner.operation));
|
|
278
365
|
}
|
|
279
366
|
}
|
|
280
367
|
if (failures.length === 1)
|
|
281
368
|
throw failures[0];
|
|
282
369
|
if (failures.length > 1)
|
|
283
|
-
throw new ProviderCleanupError(ADB_PROVIDER_IDENTITY.id, [...this.#
|
|
284
|
-
reason: "Failed
|
|
370
|
+
throw new ProviderCleanupError(ADB_PROVIDER_IDENTITY.id, [...this.#pendingOutputDirectoryCleanup].map(({ path }) => path), {
|
|
371
|
+
reason: "Failed ADB output directories remain after cleanup retry",
|
|
372
|
+
operations: [...this.#pendingOutputDirectoryCleanup].map(({ operation }) => operation),
|
|
285
373
|
failures: failures.map(({ message, cleanupResources }) => ({
|
|
286
374
|
message,
|
|
287
375
|
resources: [...cleanupResources],
|
|
288
376
|
})),
|
|
289
377
|
}, {
|
|
290
|
-
operation: "
|
|
291
|
-
cause: new AggregateError(failures, "Multiple ADB
|
|
378
|
+
operation: "close_binary",
|
|
379
|
+
cause: new AggregateError(failures, "Multiple ADB output directory cleanups failed"),
|
|
292
380
|
});
|
|
293
381
|
}
|
|
294
382
|
async execute(request, options) {
|
|
@@ -300,14 +388,14 @@ export class AdbProvider {
|
|
|
300
388
|
});
|
|
301
389
|
this.#activeOperations.add(active);
|
|
302
390
|
try {
|
|
303
|
-
if (this.#
|
|
391
|
+
if (this.#pendingOutputDirectoryCleanup.size > 0) {
|
|
304
392
|
try {
|
|
305
|
-
await this.#
|
|
393
|
+
await this.#retryOutputDirectoryCleanup();
|
|
306
394
|
}
|
|
307
395
|
catch (cause) {
|
|
308
396
|
return err(cause instanceof AnalysisError
|
|
309
397
|
? cause
|
|
310
|
-
: new ProviderCleanupError(ADB_PROVIDER_IDENTITY.id, [...this.#
|
|
398
|
+
: new ProviderCleanupError(ADB_PROVIDER_IDENTITY.id, [...this.#pendingOutputDirectoryCleanup].map(({ path }) => path), {
|
|
311
399
|
reason: cause instanceof Error ? cause.message : String(cause),
|
|
312
400
|
}, { operation: request.operation, cause }));
|
|
313
401
|
}
|
|
@@ -323,18 +411,17 @@ export class AdbProvider {
|
|
|
323
411
|
const signal = options?.signal;
|
|
324
412
|
if (signal?.aborted === true)
|
|
325
413
|
return err(new AnalysisCancelledError(request.operation));
|
|
326
|
-
|
|
414
|
+
let selection;
|
|
327
415
|
let identity;
|
|
328
416
|
try {
|
|
417
|
+
selection = this.selection();
|
|
329
418
|
identity = await inspectAdbClient(selection, signal);
|
|
330
419
|
}
|
|
331
420
|
catch (cause) {
|
|
332
421
|
if (cause instanceof AnalysisCancelledError)
|
|
333
422
|
return err(cause);
|
|
334
423
|
if (cause instanceof AdbConfigurationFailure)
|
|
335
|
-
return err(
|
|
336
|
-
? `${cause.message} ${cause.diagnostics.remediation}`
|
|
337
|
-
: cause.message, { cause }));
|
|
424
|
+
return err(providerConfigurationRefusal(ADB_PROVIDER_IDENTITY.id, request.operation, cause));
|
|
338
425
|
return err(new AnalysisProtocolError(`adb version probe failed for ${request.operation}`, { cause }));
|
|
339
426
|
}
|
|
340
427
|
const client = clientIdentityResult(selection, identity);
|
|
@@ -354,7 +441,7 @@ export class AdbProvider {
|
|
|
354
441
|
}, signal);
|
|
355
442
|
if (!ran.ok)
|
|
356
443
|
return ran;
|
|
357
|
-
const { devices, unparsedLines, daemonStarted } = parseAdbDevicesOutput(ran.value.stdout);
|
|
444
|
+
const { devices, unparsedLines, daemonStarted } = parseAdbDevicesOutput(ran.value.stdout, ran.value.stderr);
|
|
358
445
|
if (unparsedLines.length > 0)
|
|
359
446
|
return err(new AnalysisProtocolError(`adb devices reported an unrecognized line: ${unparsedLines[0]}`));
|
|
360
447
|
return ok(createAnalysisExecution({ client, devices, may_have_started_adb_server: daemonStarted }, provider, {
|
|
@@ -447,7 +534,7 @@ export class AdbProvider {
|
|
|
447
534
|
buffer: request.input.buffer,
|
|
448
535
|
pid: request.input.pid ?? null,
|
|
449
536
|
lines: bounded,
|
|
450
|
-
total_bytes: ran.value.
|
|
537
|
+
total_bytes: ran.value.stdoutBytes,
|
|
451
538
|
coverage: bounded.length !== lines.length ||
|
|
452
539
|
bounded.length === request.input.count
|
|
453
540
|
? "partial"
|
|
@@ -517,13 +604,21 @@ export class AdbProvider {
|
|
|
517
604
|
}, provider, { limitations: unparsedOverflowLimitation(unparsedLines) }));
|
|
518
605
|
}
|
|
519
606
|
case "list_adb_directory": {
|
|
520
|
-
const ran = await
|
|
607
|
+
const ran = await runAdbCapture(operation, request.input.serial, selection.binary, adbArguments(request.input.serial, [
|
|
608
|
+
"shell",
|
|
609
|
+
"sh",
|
|
610
|
+
"-c",
|
|
611
|
+
'cd "$1" || exit\nexec find . -mindepth 1 -maxdepth 1 -exec sh -c "$2" rea-list-directory {} +',
|
|
612
|
+
"rea-list-directory",
|
|
613
|
+
request.input.device_path,
|
|
614
|
+
ADB_DIRECTORY_BATCH_SCRIPT,
|
|
615
|
+
]), {
|
|
521
616
|
timeoutMs: LISTING_TIMEOUT_MS,
|
|
522
617
|
maxOutputBytes: LISTING_MAX_OUTPUT_BYTES,
|
|
523
|
-
});
|
|
618
|
+
}, signal);
|
|
524
619
|
if (!ran.ok)
|
|
525
620
|
return ran;
|
|
526
|
-
const { entries, unparsedLines } =
|
|
621
|
+
const { entries, unparsedLines } = parseAdbDirectoryListing(ran.value.stdout);
|
|
527
622
|
return ok(createAnalysisExecution({
|
|
528
623
|
client,
|
|
529
624
|
serial: request.input.serial,
|
|
@@ -532,7 +627,7 @@ export class AdbProvider {
|
|
|
532
627
|
...reported(unparsedLines, "complete"),
|
|
533
628
|
}, provider, {
|
|
534
629
|
limitations: [
|
|
535
|
-
"Entry kinds derive from
|
|
630
|
+
"Entry kinds derive from stat permission mode; directory contents and link targets may change during capture",
|
|
536
631
|
...unparsedOverflowLimitation(unparsedLines),
|
|
537
632
|
],
|
|
538
633
|
}));
|
|
@@ -598,13 +693,25 @@ export class AdbProvider {
|
|
|
598
693
|
}));
|
|
599
694
|
}
|
|
600
695
|
case "inspect_adb_window": {
|
|
601
|
-
|
|
696
|
+
let section = "windows";
|
|
697
|
+
const ran = await shell(["dumpsys", "window", section], {
|
|
602
698
|
timeoutMs: SHELL_TIMEOUT_MS,
|
|
603
699
|
maxOutputBytes: DUMPSYS_WINDOW_MAX_OUTPUT_BYTES,
|
|
604
700
|
});
|
|
605
701
|
if (!ran.ok)
|
|
606
702
|
return ran;
|
|
607
|
-
|
|
703
|
+
let { focusedWindow, focusedApp } = parseWindowFocusOutput(ran.value.stdout);
|
|
704
|
+
if (focusedWindow === null && focusedApp === null) {
|
|
705
|
+
section = "displays";
|
|
706
|
+
const fallback = await shell(["dumpsys", "window", section], {
|
|
707
|
+
timeoutMs: SHELL_TIMEOUT_MS,
|
|
708
|
+
maxOutputBytes: DUMPSYS_WINDOW_MAX_OUTPUT_BYTES,
|
|
709
|
+
});
|
|
710
|
+
if (!fallback.ok)
|
|
711
|
+
return fallback;
|
|
712
|
+
({ focusedWindow, focusedApp } = parseWindowFocusOutput(fallback.value.stdout));
|
|
713
|
+
}
|
|
714
|
+
const declared = focusedWindow !== null || focusedApp !== null;
|
|
608
715
|
return ok(createAnalysisExecution({
|
|
609
716
|
client,
|
|
610
717
|
serial: request.input.serial,
|
|
@@ -617,6 +724,9 @@ export class AdbProvider {
|
|
|
617
724
|
}, provider, {
|
|
618
725
|
limitations: [
|
|
619
726
|
"Focus values are the window manager's declarations at read time; no interaction occurred",
|
|
727
|
+
declared
|
|
728
|
+
? `Focus declarations were read from \`dumpsys window ${section}\``
|
|
729
|
+
: "Neither `dumpsys window windows` nor `dumpsys window displays` declared mCurrentFocus or mFocusedApp; focus is unknown, not absent",
|
|
620
730
|
],
|
|
621
731
|
}));
|
|
622
732
|
}
|
|
@@ -687,10 +797,48 @@ export class AdbProvider {
|
|
|
687
797
|
if (!paths.ok)
|
|
688
798
|
return paths;
|
|
689
799
|
const parsed = parsePmPathOutput(paths.value.stdout);
|
|
800
|
+
const capturedOutput = {
|
|
801
|
+
stdout: paths.value.stdout,
|
|
802
|
+
stderr: paths.value.stderr,
|
|
803
|
+
truncated: false,
|
|
804
|
+
};
|
|
805
|
+
if (parsed.rejectedPaths.length > 0) {
|
|
806
|
+
const first = parsed.rejectedPaths[0];
|
|
807
|
+
const otherCount = parsed.rejectedPaths.length - 1;
|
|
808
|
+
return err(new AnalysisOutputError(operation, "unsafe_device_path", {
|
|
809
|
+
capturedOutput,
|
|
810
|
+
userMessage: `pm path for ${packageName} reported an APK path that cannot be written as a file on this host: ${displayDevicePath(first.device_path)} (${first.reason})${otherCount > 0 ? ` and ${String(otherCount)} other path(s)` : ""}. No APK was pulled.`,
|
|
811
|
+
remediationAction: "Review details.diagnostics for the refused device paths and details.captured_output for the retained pm path output. REA does not rename device-reported APK paths; correct the device path policy before retrying.",
|
|
812
|
+
diagnostics: {
|
|
813
|
+
package_name: packageName,
|
|
814
|
+
rejected_paths: parsed.rejectedPaths.map(({ device_path, reason }) => ({
|
|
815
|
+
device_path,
|
|
816
|
+
reason,
|
|
817
|
+
})),
|
|
818
|
+
},
|
|
819
|
+
}));
|
|
820
|
+
}
|
|
690
821
|
if (parsed.paths.length === 0 && parsed.unparsedLines.length === 0)
|
|
691
822
|
return err(new AnalysisUnsupportedTargetError(operation, serial, `Package Manager reported no APK paths for ${packageName}; it may not be installed for user 0`));
|
|
692
823
|
if (parsed.unparsedLines.length > 0)
|
|
693
|
-
return err(new AnalysisProtocolError(`pm path reported an unrecognized line: ${parsed.unparsedLines[0]}
|
|
824
|
+
return err(new AnalysisProtocolError(`pm path reported an unrecognized line: ${parsed.unparsedLines[0]}`, { capturedOutput }));
|
|
825
|
+
const destinationNames = new Set();
|
|
826
|
+
for (const entry of parsed.paths) {
|
|
827
|
+
if (destinationNames.has(entry.file_name))
|
|
828
|
+
return err(new AnalysisOutputError(operation, "duplicate_local_destination", {
|
|
829
|
+
capturedOutput,
|
|
830
|
+
userMessage: `pm path for ${packageName} reported multiple APK paths with the same local file name ${displayDevicePath(entry.file_name)}; no APK was pulled.`,
|
|
831
|
+
remediationAction: "Review details.diagnostics and details.captured_output for the conflicting device paths. REA does not rename device-reported paths; correct Package Manager's path response before retrying.",
|
|
832
|
+
diagnostics: {
|
|
833
|
+
package_name: packageName,
|
|
834
|
+
file_name: entry.file_name,
|
|
835
|
+
device_paths: parsed.paths
|
|
836
|
+
.filter((candidate) => candidate.file_name === entry.file_name)
|
|
837
|
+
.map((candidate) => candidate.device_path),
|
|
838
|
+
},
|
|
839
|
+
}));
|
|
840
|
+
destinationNames.add(entry.file_name);
|
|
841
|
+
}
|
|
694
842
|
const directory = await prepareOutputDirectory(operation, input.output_directory);
|
|
695
843
|
if (!directory.ok)
|
|
696
844
|
return directory;
|
|
@@ -716,17 +864,39 @@ export class AdbProvider {
|
|
|
716
864
|
if (!packageDirectoryCreated)
|
|
717
865
|
return err(primary);
|
|
718
866
|
const owner = {
|
|
867
|
+
operation,
|
|
719
868
|
path: packageDirectory,
|
|
720
869
|
identity: packageDirectoryIdentity,
|
|
721
870
|
primary,
|
|
722
|
-
remove: () =>
|
|
871
|
+
remove: () => removeOwnedOutputDirectory(packageDirectory, packageDirectoryIdentity),
|
|
723
872
|
};
|
|
724
|
-
this.#
|
|
873
|
+
this.#pendingOutputDirectoryCleanup.add(owner);
|
|
725
874
|
const cleanup = new ProviderCleanupError(ADB_PROVIDER_IDENTITY.id, [packageDirectory], {
|
|
726
875
|
reason: "Could not establish an owned package directory identity",
|
|
727
876
|
}, { operation, cause });
|
|
728
877
|
return err(analysisErrorWithCleanupFailure(primary, cleanup, operation));
|
|
729
878
|
}
|
|
879
|
+
const failOwnedPackage = async (primary) => {
|
|
880
|
+
const owner = {
|
|
881
|
+
operation,
|
|
882
|
+
path: packageDirectory,
|
|
883
|
+
identity: packageDirectoryIdentity,
|
|
884
|
+
primary,
|
|
885
|
+
remove: () => removeOwnedOutputDirectory(packageDirectory, packageDirectoryIdentity),
|
|
886
|
+
};
|
|
887
|
+
try {
|
|
888
|
+
await owner.remove();
|
|
889
|
+
}
|
|
890
|
+
catch (cause) {
|
|
891
|
+
this.#pendingOutputDirectoryCleanup.add(owner);
|
|
892
|
+
const cleanup = new ProviderCleanupError(ADB_PROVIDER_IDENTITY.id, [packageDirectory], { reason: cause instanceof Error ? cause.message : String(cause) }, { operation, cause });
|
|
893
|
+
return err(analysisErrorWithCleanupFailure(primary, cleanup, operation));
|
|
894
|
+
}
|
|
895
|
+
return err(primary);
|
|
896
|
+
};
|
|
897
|
+
const destinationError = await reservePackageDestinations(operation, packageName, packageDirectory, parsed.paths, capturedOutput);
|
|
898
|
+
if (destinationError !== undefined)
|
|
899
|
+
return failOwnedPackage(destinationError);
|
|
730
900
|
const artifacts = [];
|
|
731
901
|
const failures = [];
|
|
732
902
|
const cancelledPackagePull = (error, localPath, devicePath, stage) => {
|
|
@@ -754,17 +924,7 @@ export class AdbProvider {
|
|
|
754
924
|
});
|
|
755
925
|
return err(error);
|
|
756
926
|
};
|
|
757
|
-
const seenFileNames = new Set();
|
|
758
927
|
for (const entry of parsed.paths) {
|
|
759
|
-
if (seenFileNames.has(entry.file_name)) {
|
|
760
|
-
failures.push({
|
|
761
|
-
device_path: entry.device_path,
|
|
762
|
-
stage: "pull",
|
|
763
|
-
message: `Duplicate file name ${entry.file_name} in the APK set; refusing to overwrite`,
|
|
764
|
-
});
|
|
765
|
-
continue;
|
|
766
|
-
}
|
|
767
|
-
seenFileNames.add(entry.file_name);
|
|
768
928
|
const localPath = join(packageDirectory, entry.file_name);
|
|
769
929
|
const pulled = await runAdb(operation, serial, selection.binary, adbArguments(serial, ["pull", entry.device_path, localPath]), { timeoutMs: PULL_TIMEOUT_MS, maxOutputBytes: PULL_MAX_OUTPUT_BYTES }, signal);
|
|
770
930
|
if (!pulled.ok) {
|
|
@@ -801,23 +961,7 @@ export class AdbProvider {
|
|
|
801
961
|
}
|
|
802
962
|
if (artifacts.length === 0 && failures.length > 0) {
|
|
803
963
|
const primary = new AnalysisProtocolError(`Every APK pull failed for ${packageName} on ${serial}: ${failures[0].message}`);
|
|
804
|
-
|
|
805
|
-
path: packageDirectory,
|
|
806
|
-
identity: packageDirectoryIdentity,
|
|
807
|
-
primary,
|
|
808
|
-
remove: () => removeOwnedPackageDirectory(packageDirectory, packageDirectoryIdentity),
|
|
809
|
-
};
|
|
810
|
-
try {
|
|
811
|
-
await owner.remove();
|
|
812
|
-
}
|
|
813
|
-
catch (cause) {
|
|
814
|
-
this.#pendingPackageDirectoryCleanup.add(owner);
|
|
815
|
-
const cleanup = new ProviderCleanupError(ADB_PROVIDER_IDENTITY.id, [packageDirectory], {
|
|
816
|
-
reason: cause instanceof Error ? cause.message : String(cause),
|
|
817
|
-
}, { operation: operation, cause });
|
|
818
|
-
return err(analysisErrorWithCleanupFailure(primary, cleanup, operation));
|
|
819
|
-
}
|
|
820
|
-
return err(primary);
|
|
964
|
+
return failOwnedPackage(primary);
|
|
821
965
|
}
|
|
822
966
|
return ok(createAnalysisExecution({
|
|
823
967
|
client,
|
|
@@ -835,11 +979,19 @@ export class AdbProvider {
|
|
|
835
979
|
}));
|
|
836
980
|
}
|
|
837
981
|
async pullFile(operation, selection, client, provider, input, signal) {
|
|
982
|
+
const derived = adbHostFileName(input.device_path);
|
|
983
|
+
if (!derived.ok)
|
|
984
|
+
return err(new AnalysisInputError(operation, undefined, [
|
|
985
|
+
{
|
|
986
|
+
path: ["device_path"],
|
|
987
|
+
reason: "invalid_value",
|
|
988
|
+
message: `The device path ${JSON.stringify(input.device_path)} does not name a file that can be written on this host (${derived.reason}); REA never renames a device-reported file.`,
|
|
989
|
+
},
|
|
990
|
+
]));
|
|
838
991
|
const directory = await prepareOutputDirectory(operation, input.output_directory);
|
|
839
992
|
if (!directory.ok)
|
|
840
993
|
return directory;
|
|
841
|
-
const
|
|
842
|
-
const localPath = join(directory.value, fileName);
|
|
994
|
+
const localPath = join(directory.value, derived.fileName);
|
|
843
995
|
const existing = await refuseExistingTarget(operation, localPath);
|
|
844
996
|
if (existing !== undefined)
|
|
845
997
|
return err(existing);
|
|
@@ -896,19 +1048,13 @@ export class AdbProvider {
|
|
|
896
1048
|
throw cause;
|
|
897
1049
|
}
|
|
898
1050
|
const existsProbe = await runAdb(operation, input.device_path, selection.binary, adbArguments(input.serial, ["shell", "test", "-e", input.device_path]), { timeoutMs: SETTINGS_TIMEOUT_MS, maxOutputBytes: 1024 }, signal);
|
|
899
|
-
|
|
900
|
-
|
|
901
|
-
|
|
902
|
-
|
|
903
|
-
|
|
904
|
-
else if (existsProbe.error instanceof AnalysisTimeoutError)
|
|
905
|
-
return existsProbe;
|
|
906
|
-
else if (existsProbe.error instanceof AnalysisCancelledError)
|
|
907
|
-
return existsProbe;
|
|
908
|
-
else if (existsProbe.error instanceof AnalysisResourceConstraintError)
|
|
1051
|
+
// `test -e` exits nonzero with no adb diagnosis when the path is absent.
|
|
1052
|
+
// Any other probe failure leaves existence unknown, so it is reported as
|
|
1053
|
+
// is rather than read as an existing path or followed by a push.
|
|
1054
|
+
if (!existsProbe.ok &&
|
|
1055
|
+
!(existsProbe.error instanceof AnalysisProtocolError))
|
|
909
1056
|
return existsProbe;
|
|
910
|
-
|
|
911
|
-
deviceExists = true; // authorization/refusal states surface on push instead
|
|
1057
|
+
const deviceExists = existsProbe.ok;
|
|
912
1058
|
if (deviceExists && !input.overwrite)
|
|
913
1059
|
return err(new AnalysisOutputError(operation, `The device path already exists and overwrite was not requested: ${input.device_path}`));
|
|
914
1060
|
const pushed = await runAdb(operation, input.device_path, selection.binary, adbArguments(input.serial, ["push", localPath, input.device_path]), { timeoutMs: PULL_TIMEOUT_MS, maxOutputBytes: PULL_MAX_OUTPUT_BYTES }, signal);
|
|
@@ -930,9 +1076,7 @@ export class AdbProvider {
|
|
|
930
1076
|
overwritten: deviceExists,
|
|
931
1077
|
device_digest_source: "device_sha256sum",
|
|
932
1078
|
}, provider, {
|
|
933
|
-
limitations: [
|
|
934
|
-
"Push writes the caller's file to the device; this is the only device-mutating ADB tool",
|
|
935
|
-
],
|
|
1079
|
+
limitations: ["Push writes the caller's file to the device"],
|
|
936
1080
|
}));
|
|
937
1081
|
}
|
|
938
1082
|
return ok(createAnalysisExecution({
|
|
@@ -948,7 +1092,7 @@ export class AdbProvider {
|
|
|
948
1092
|
}, provider, {
|
|
949
1093
|
limitations: [
|
|
950
1094
|
"The device did not answer sha256sum, so the transfer is not device-side verified",
|
|
951
|
-
"Push writes the caller's file to the device
|
|
1095
|
+
"Push writes the caller's file to the device",
|
|
952
1096
|
],
|
|
953
1097
|
}));
|
|
954
1098
|
}
|
|
@@ -974,7 +1118,8 @@ export class AdbProvider {
|
|
|
974
1118
|
apkPath,
|
|
975
1119
|
]), { timeoutMs: PULL_TIMEOUT_MS, maxOutputBytes: PULL_MAX_OUTPUT_BYTES }, signal);
|
|
976
1120
|
if (!installed.ok)
|
|
977
|
-
return installed
|
|
1121
|
+
return (packageChangeRefusal(operation, input.serial, installed.error) ??
|
|
1122
|
+
installed);
|
|
978
1123
|
const verdict = parsePackageChangeOutput(installed.value.stdout);
|
|
979
1124
|
if (verdict.status === "failure")
|
|
980
1125
|
return err(new AnalysisUnsupportedTargetError(operation, input.serial, verdict.reason ?? "the device refused the installation"));
|
|
@@ -984,10 +1129,12 @@ export class AdbProvider {
|
|
|
984
1129
|
apk_path: apkPath,
|
|
985
1130
|
bytes: digest.bytes,
|
|
986
1131
|
sha256: digest.sha256,
|
|
987
|
-
|
|
1132
|
+
replace_requested: input.replace,
|
|
1133
|
+
replaced: null,
|
|
988
1134
|
}, provider, {
|
|
989
1135
|
limitations: [
|
|
990
1136
|
"Install changes device state; the installed APK's digest is the host file's digest",
|
|
1137
|
+
"Whether an existing package was replaced is unknown; replace_requested records only the adb install mode",
|
|
991
1138
|
],
|
|
992
1139
|
}));
|
|
993
1140
|
}
|
|
@@ -997,7 +1144,8 @@ export class AdbProvider {
|
|
|
997
1144
|
maxOutputBytes: PULL_MAX_OUTPUT_BYTES,
|
|
998
1145
|
}, signal);
|
|
999
1146
|
if (!uninstalled.ok)
|
|
1000
|
-
return uninstalled
|
|
1147
|
+
return (packageChangeRefusal(operation, input.serial, uninstalled.error) ??
|
|
1148
|
+
uninstalled);
|
|
1001
1149
|
const verdict = parsePackageChangeOutput(uninstalled.value.stdout);
|
|
1002
1150
|
if (verdict.status === "failure")
|
|
1003
1151
|
return err(new AnalysisUnsupportedTargetError(operation, input.serial, verdict.reason ?? "the device refused the removal"));
|
|
@@ -1080,13 +1228,39 @@ export class AdbProvider {
|
|
|
1080
1228
|
const started = await runAdb(operation, serial, selection.binary, adbArguments(serial, ["shell", "am", "start", "-W", ...arguments_]), { timeoutMs: SHELL_TIMEOUT_MS, maxOutputBytes: PM_PATH_MAX_OUTPUT_BYTES }, signal);
|
|
1081
1229
|
if (!started.ok)
|
|
1082
1230
|
return started;
|
|
1083
|
-
const verdict = parseAmStartOutput(started.value.stdout);
|
|
1084
|
-
|
|
1085
|
-
return err(new AnalysisUnsupportedTargetError(operation, serial, verdict.reason ?? "am start refused the intent"));
|
|
1086
|
-
return ok(createAnalysisExecution({
|
|
1231
|
+
const verdict = parseAmStartOutput(started.value.stdout, started.value.stderr);
|
|
1232
|
+
const result = {
|
|
1087
1233
|
...resultFields,
|
|
1088
1234
|
started_activity: verdict.startedActivity,
|
|
1089
|
-
|
|
1235
|
+
reported_activity: verdict.activity,
|
|
1236
|
+
reported_status: verdict.reportedStatus,
|
|
1237
|
+
};
|
|
1238
|
+
if (verdict.status === "refused") {
|
|
1239
|
+
const partialObservation = operation === "start_adb_app"
|
|
1240
|
+
? {
|
|
1241
|
+
provider_id: "adb",
|
|
1242
|
+
operation,
|
|
1243
|
+
result: adbResultSchemas.start_adb_app.parse(result),
|
|
1244
|
+
}
|
|
1245
|
+
: {
|
|
1246
|
+
provider_id: "adb",
|
|
1247
|
+
operation,
|
|
1248
|
+
result: adbResultSchemas.start_adb_activity.parse(result),
|
|
1249
|
+
};
|
|
1250
|
+
return err(new AnalysisUnsupportedTargetError(operation, serial, verdict.reason ?? "am start refused the intent", {
|
|
1251
|
+
capturedOutput: {
|
|
1252
|
+
stdout: started.value.stdout,
|
|
1253
|
+
stderr: started.value.stderr,
|
|
1254
|
+
truncated: false,
|
|
1255
|
+
},
|
|
1256
|
+
partialObservation,
|
|
1257
|
+
}));
|
|
1258
|
+
}
|
|
1259
|
+
return ok(createAnalysisExecution(result, provider, {
|
|
1260
|
+
rawResult: {
|
|
1261
|
+
stdout: started.value.stdout,
|
|
1262
|
+
stderr: started.value.stderr,
|
|
1263
|
+
},
|
|
1090
1264
|
limitations: [
|
|
1091
1265
|
"Starting an activity changes device state; am start -W waits for launch completion but no lifecycle observation is captured",
|
|
1092
1266
|
],
|
|
@@ -1114,24 +1288,26 @@ export class AdbProvider {
|
|
|
1114
1288
|
const existing = await refuseExistingTarget(operation, localPath);
|
|
1115
1289
|
if (existing !== undefined)
|
|
1116
1290
|
return err(existing);
|
|
1117
|
-
const captured = await
|
|
1291
|
+
const captured = await runAdbCapture(operation, input.serial, selection.binary, adbArguments(input.serial, ["exec-out", "screencap", "-p"]), { timeoutMs: SCREEN_TIMEOUT_MS, maxOutputBytes: SCREEN_MAX_OUTPUT_BYTES }, signal);
|
|
1118
1292
|
if (!captured.ok)
|
|
1119
1293
|
return captured;
|
|
1120
|
-
const dimensions = parsePngDimensions(captured.value);
|
|
1294
|
+
const dimensions = parsePngDimensions(captured.value.stdout);
|
|
1121
1295
|
if (dimensions.width === null)
|
|
1122
1296
|
return err(new AnalysisProtocolError("screencap did not return a PNG payload; the device may not expose a display"));
|
|
1123
1297
|
try {
|
|
1124
|
-
await writeFile(localPath, captured.value, { flag: "wx" });
|
|
1298
|
+
await writeFile(localPath, captured.value.stdout, { flag: "wx" });
|
|
1125
1299
|
}
|
|
1126
1300
|
catch (cause) {
|
|
1127
1301
|
return err(new AnalysisOutputError(operation, `The screen output could not be created exclusively: ${localPath}`, { cause }));
|
|
1128
1302
|
}
|
|
1129
|
-
const sha256 = createHash("sha256")
|
|
1303
|
+
const sha256 = createHash("sha256")
|
|
1304
|
+
.update(captured.value.stdout)
|
|
1305
|
+
.digest("hex");
|
|
1130
1306
|
return ok(createAnalysisExecution({
|
|
1131
1307
|
client,
|
|
1132
1308
|
serial: input.serial,
|
|
1133
1309
|
local_path: localPath,
|
|
1134
|
-
bytes: captured.value.byteLength,
|
|
1310
|
+
bytes: captured.value.stdout.byteLength,
|
|
1135
1311
|
sha256,
|
|
1136
1312
|
width: dimensions.width,
|
|
1137
1313
|
height: dimensions.height,
|
|
@@ -1145,33 +1321,42 @@ export class AdbProvider {
|
|
|
1145
1321
|
const directory = await prepareOutputDirectory(operation, input.output_directory);
|
|
1146
1322
|
if (!directory.ok)
|
|
1147
1323
|
return directory;
|
|
1148
|
-
|
|
1149
|
-
|
|
1150
|
-
|
|
1151
|
-
|
|
1152
|
-
if (!collected.ok)
|
|
1153
|
-
return collected;
|
|
1154
|
-
const reportedPath = parseBugreportCopiedPath(collected.value.stdout);
|
|
1155
|
-
if (reportedPath === null)
|
|
1156
|
-
return err(new AnalysisProtocolError("adb bugreport did not report an archive path; the build may use an unsupported format"));
|
|
1324
|
+
let stagingDirectory;
|
|
1325
|
+
let stagingIdentity;
|
|
1326
|
+
let retainedObservation;
|
|
1327
|
+
let publishedPath;
|
|
1157
1328
|
try {
|
|
1158
|
-
|
|
1159
|
-
return ok(createAnalysisExecution({
|
|
1160
|
-
client,
|
|
1161
|
-
serial: input.serial,
|
|
1162
|
-
local_path: reportedPath,
|
|
1163
|
-
bytes: digest.bytes,
|
|
1164
|
-
sha256: digest.sha256,
|
|
1165
|
-
adb_reported_path: reportedPath,
|
|
1166
|
-
}, provider, {
|
|
1167
|
-
limitations: [
|
|
1168
|
-
"The archive is device-generated: dumpstate, dumpsys, and logcat content is the device's own report",
|
|
1169
|
-
],
|
|
1170
|
-
}));
|
|
1329
|
+
stagingDirectory = await mkdtemp(join(directory.value, ".rea-bugreport-"));
|
|
1171
1330
|
}
|
|
1172
1331
|
catch (cause) {
|
|
1173
|
-
|
|
1174
|
-
|
|
1332
|
+
return err(new AnalysisOutputError(operation, "The bugreport staging directory could not be created", { cause }));
|
|
1333
|
+
}
|
|
1334
|
+
const collectedResult = await (async () => {
|
|
1335
|
+
let reportedPath = null;
|
|
1336
|
+
try {
|
|
1337
|
+
const created = await lstat(stagingDirectory);
|
|
1338
|
+
if (!created.isDirectory() || created.isSymbolicLink())
|
|
1339
|
+
throw new Error(`The created bugreport staging output is not a regular directory: ${stagingDirectory}`);
|
|
1340
|
+
stagingIdentity = {
|
|
1341
|
+
dev: created.dev,
|
|
1342
|
+
ino: created.ino,
|
|
1343
|
+
mode: created.mode,
|
|
1344
|
+
};
|
|
1345
|
+
const collected = await runAdb(operation, input.serial, selection.binary, adbArguments(input.serial, ["bugreport", stagingDirectory]), {
|
|
1346
|
+
timeoutMs: BUGREPORT_TIMEOUT_MS,
|
|
1347
|
+
maxOutputBytes: BUGREPORT_MAX_OUTPUT_BYTES,
|
|
1348
|
+
}, signal);
|
|
1349
|
+
if (!collected.ok)
|
|
1350
|
+
return collected;
|
|
1351
|
+
reportedPath = parseBugreportCopiedPath(collected.value.stdout);
|
|
1352
|
+
if (reportedPath === null)
|
|
1353
|
+
return err(new AnalysisProtocolError("adb bugreport did not report an archive path; the build may use an unsupported format"));
|
|
1354
|
+
if (dirname(resolve(reportedPath)) !== stagingDirectory)
|
|
1355
|
+
return err(new AnalysisProtocolError(`adb bugreport reported an archive outside its staging directory: ${reportedPath}`));
|
|
1356
|
+
const archive = await lstat(reportedPath);
|
|
1357
|
+
if (!archive.isFile() || archive.isSymbolicLink())
|
|
1358
|
+
return err(new AnalysisProtocolError(`adb bugreport did not report a regular archive file: ${reportedPath}`));
|
|
1359
|
+
retainedObservation = {
|
|
1175
1360
|
provider_id: "adb",
|
|
1176
1361
|
operation,
|
|
1177
1362
|
result: {
|
|
@@ -1181,10 +1366,68 @@ export class AdbProvider {
|
|
|
1181
1366
|
adb_reported_path: reportedPath,
|
|
1182
1367
|
digest_status: "unknown",
|
|
1183
1368
|
},
|
|
1184
|
-
}
|
|
1185
|
-
|
|
1369
|
+
};
|
|
1370
|
+
try {
|
|
1371
|
+
publishedPath = await publishBugreport(reportedPath, directory.value);
|
|
1372
|
+
}
|
|
1373
|
+
catch (cause) {
|
|
1374
|
+
return err(new AnalysisOutputError(operation, `The reported bugreport archive could not be published: ${reportedPath}`, { cause, partialObservation: retainedObservation }));
|
|
1375
|
+
}
|
|
1376
|
+
retainedObservation = {
|
|
1377
|
+
...retainedObservation,
|
|
1378
|
+
result: { ...retainedObservation.result, local_path: publishedPath },
|
|
1379
|
+
};
|
|
1380
|
+
const digest = await hashAdbFile(publishedPath, operation, signal);
|
|
1381
|
+
const report = {
|
|
1382
|
+
client,
|
|
1383
|
+
serial: input.serial,
|
|
1384
|
+
local_path: publishedPath,
|
|
1385
|
+
bytes: digest.bytes,
|
|
1386
|
+
sha256: digest.sha256,
|
|
1387
|
+
adb_reported_path: reportedPath,
|
|
1388
|
+
};
|
|
1389
|
+
retainedObservation = {
|
|
1390
|
+
provider_id: "adb",
|
|
1391
|
+
operation,
|
|
1392
|
+
result: report,
|
|
1393
|
+
};
|
|
1394
|
+
return ok(createAnalysisExecution(report, provider, {
|
|
1395
|
+
limitations: [
|
|
1396
|
+
"The archive is device-generated: dumpstate, dumpsys, and logcat content is the device's own report",
|
|
1397
|
+
],
|
|
1398
|
+
}));
|
|
1186
1399
|
}
|
|
1187
|
-
|
|
1400
|
+
catch (cause) {
|
|
1401
|
+
if (cause instanceof AnalysisCancelledError) {
|
|
1402
|
+
if (retainedObservation !== undefined)
|
|
1403
|
+
cause.retainPartialObservation(retainedObservation);
|
|
1404
|
+
return err(cause);
|
|
1405
|
+
}
|
|
1406
|
+
return err(new AnalysisOutputError(operation, `The reported bugreport archive could not be read back: ${reportedPath ?? stagingDirectory}`, { cause, partialObservation: retainedObservation }));
|
|
1407
|
+
}
|
|
1408
|
+
})();
|
|
1409
|
+
// A completed acquisition becomes caller evidence even if publication fails.
|
|
1410
|
+
// Its staging directory must not enter automatic cleanup or cleanup retries.
|
|
1411
|
+
if (retainedObservation !== undefined && publishedPath === undefined)
|
|
1412
|
+
return collectedResult;
|
|
1413
|
+
try {
|
|
1414
|
+
await removeOwnedOutputDirectory(stagingDirectory, stagingIdentity);
|
|
1415
|
+
}
|
|
1416
|
+
catch (cause) {
|
|
1417
|
+
const primary = collectedResult.ok
|
|
1418
|
+
? new AnalysisOutputError(operation, "The archive was published, but its staging directory could not be removed")
|
|
1419
|
+
: collectedResult.error;
|
|
1420
|
+
if (retainedObservation !== undefined)
|
|
1421
|
+
primary.retainPartialObservation(retainedObservation);
|
|
1422
|
+
this.#pendingOutputDirectoryCleanup.add({
|
|
1423
|
+
operation,
|
|
1424
|
+
path: stagingDirectory,
|
|
1425
|
+
identity: stagingIdentity,
|
|
1426
|
+
primary,
|
|
1427
|
+
remove: () => removeOwnedOutputDirectory(stagingDirectory, stagingIdentity),
|
|
1428
|
+
});
|
|
1429
|
+
return err(analysisErrorWithCleanupFailure(primary, new ProviderCleanupError(ADB_PROVIDER_IDENTITY.id, [stagingDirectory], { reason: cause instanceof Error ? cause.message : String(cause) }, { operation, cause }), operation));
|
|
1188
1430
|
}
|
|
1431
|
+
return collectedResult;
|
|
1189
1432
|
}
|
|
1190
1433
|
}
|