rea-agents 6.5.0 → 6.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +12 -3
- package/THIRD_PARTY_NOTICES.md +1 -0
- package/bridge/android/ReaJadxBridge.java +167 -23
- package/bridge/cutter/rea_bridge.py +19 -10
- package/bridge/ghidra/ReaGhidraBridge.java +98 -66
- package/bridge/hopper_bridge.py +9 -1
- package/bridge/native/rea_lldb_tracer.py +48 -4
- package/bridge/pwndbg/core_context.py +15 -2
- package/dist/adb/AdbCommand.js +148 -0
- package/dist/adb/AdbConfiguration.js +26 -4
- package/dist/adb/AdbInputSnapshot.js +126 -0
- package/dist/adb/AdbProvider.js +765 -248
- package/dist/adb/AdbShellOutput.js +92 -21
- package/dist/android/AndroidTargetSnapshot.js +7 -7
- package/dist/android/JadxAnalysis.js +27 -32
- package/dist/android/JadxConfiguration.js +173 -125
- package/dist/android/JadxDoctor.js +11 -3
- package/dist/android/JadxFailure.js +154 -0
- package/dist/android/JadxInterruption.js +13 -0
- package/dist/android/JadxJavaProbe.js +246 -0
- package/dist/android/JadxMcpTransport.js +48 -15
- package/dist/android/JadxProtocol.js +29 -2
- package/dist/android/JadxProvider.js +171 -96
- package/dist/android/JadxRelease.js +5 -1
- package/dist/android/JadxSession.js +35 -14
- package/dist/apktool/ApktoolCommandCleanup.js +134 -0
- package/dist/apktool/ApktoolCommandOutput.js +22 -0
- package/dist/apktool/ApktoolConfiguration.js +162 -44
- package/dist/apktool/ApktoolDecodeOutput.js +29 -23
- package/dist/apktool/ApktoolDecodedInventory.js +52 -0
- package/dist/apktool/ApktoolProvider.js +254 -335
- package/dist/apktool/ApktoolStringTables.js +178 -0
- package/dist/apktool/ApktoolWorkspace.js +162 -0
- package/dist/application/AnalysisDocument.js +19 -4
- package/dist/application/AnalysisProvider.js +15 -1
- package/dist/application/AppBundleExecutable.js +11 -4
- package/dist/application/BinaryTargetResolver.js +9 -2
- package/dist/application/BrowserObservationService.js +54 -20
- package/dist/application/BrowserScenarioCaptureService.js +26 -6
- package/dist/application/CapabilityInventory.js +14 -8
- package/dist/application/ClaudeDesktopConfigLocation.js +5 -5
- package/dist/application/ClientConfigurationCleanup.js +73 -0
- package/dist/application/ClientConfigurationDocument.js +170 -128
- package/dist/application/ClientConfigurationPublication.js +167 -0
- package/dist/application/ClientRegistrationEnvironment.js +31 -1
- package/dist/application/ClientRegistrationIdentity.js +54 -39
- package/dist/application/ClientRegistrationStatus.js +123 -48
- package/dist/application/DirectAnalysis.js +15 -2
- package/dist/application/DirectAnalysisCleanup.js +5 -1
- package/dist/application/DirectAnalysisStatus.js +1 -1
- package/dist/application/Doctor.js +83 -9
- package/dist/application/DoctorDiagnostics.js +25 -4
- package/dist/application/DoctorProviderIds.js +7 -1
- package/dist/application/DshCordisPatch.js +1 -1
- package/dist/application/EnhancedTools.js +9 -21
- package/dist/application/HermesClientHome.js +20 -0
- package/dist/application/HermesConfigurationYaml.js +43 -3
- package/dist/application/HopperDownload.js +11 -3
- package/dist/application/HopperReleaseFeed.js +71 -0
- package/dist/application/InvestigationProviders.js +4 -3
- package/dist/application/JsonFiles.js +1 -1
- package/dist/application/LinuxHopper.js +96 -71
- package/dist/application/LinuxHopperPublisher.js +656 -0
- package/dist/application/MacHopper.js +182 -66
- package/dist/application/MipsElfMetadata.js +1 -1
- package/dist/application/MsixPackageStorage.js +13 -6
- package/dist/application/ProviderOperationExecution.js +13 -20
- package/dist/application/ReconstructionObligationCandidates.js +17 -2
- package/dist/application/ReconstructionObligationLedgerEvaluation.js +4 -0
- package/dist/application/ReconstructionObligationLedgerService.js +5 -3
- package/dist/application/ReconstructionObligationOriginalCases.js +8 -0
- package/dist/application/ReferenceSourceImportEntries.js +160 -18
- package/dist/application/ReferenceSourceImportPolicy.js +5 -3
- package/dist/application/ReferenceSourceVcsAdapter.js +3 -1
- package/dist/application/RegularFileRead.js +107 -88
- package/dist/application/Setup.js +23 -11
- package/dist/application/SetupClientConfiguration.js +155 -89
- package/dist/application/SetupClients.js +22 -13
- package/dist/application/SetupHost.js +90 -34
- package/dist/application/SetupInstallFailure.js +18 -3
- package/dist/application/SetupPlan.js +15 -5
- package/dist/application/SetupRecoveryBackup.js +40 -13
- package/dist/application/SetupRegistrationEnvironment.js +12 -0
- package/dist/application/SetupSkill.js +10 -30
- package/dist/application/SourceLimitations.js +35 -0
- package/dist/application/SupportedClients.js +4 -4
- package/dist/application/Uninstall.js +91 -36
- package/dist/application/UpdateCommandProgress.js +66 -0
- package/dist/application/UpdateMaintenance.js +7 -2
- package/dist/application/UpdateRuntime.js +60 -30
- package/dist/application/WebModuleTraceService.js +35 -22
- package/dist/application/WebNetworkCaptureService.js +8 -5
- package/dist/application/WebRuntimeService.js +41 -8
- package/dist/application/WebScriptExportService.js +6 -4
- package/dist/application/WebSourceLocationService.js +3 -4
- package/dist/application/WorkflowEvidence.js +11 -4
- package/dist/application/analysisView/AnalysisViewService.js +9 -52
- package/dist/application/android/AndroidAnalysisService.js +5 -4
- package/dist/application/android/AndroidSearchEvidenceSummary.js +6 -8
- package/dist/application/artifacts/ArtifactComparisonEvidence.js +32 -0
- package/dist/application/binary/AnalysisProviderEvaluation.js +14 -11
- package/dist/application/binary/AnalysisProviderRegistry.js +340 -50
- package/dist/application/binary/BinarySession.js +73 -34
- package/dist/application/binary/BinarySessionRecords.js +3 -0
- package/dist/application/binary/BinarySessionStatus.js +3 -4
- package/dist/application/binary/CompositeProvider.js +75 -30
- package/dist/application/binary/LazyAnalysisProvider.js +6 -68
- package/dist/application/binary/SessionProviderRouter.js +11 -2
- package/dist/application/binaryDiagnostics/BinaryLayoutService.js +3 -4
- package/dist/application/binaryDiagnostics/PeResourcesService.js +22 -5
- package/dist/application/binaryDiagnostics/RecordedCrashService.js +3 -4
- package/dist/application/captures/PacketCaptureService.js +3 -2
- package/dist/application/closeOwnedWebResources.js +32 -2
- package/dist/application/electron/ElectronFuseService.js +8 -43
- package/dist/application/evm/EvmInterfaceEvidence.js +11 -0
- package/dist/application/evm/EvmInterfaceService.js +4 -15
- package/dist/application/firmware/FirmwareAnalysisService.js +4 -3
- package/dist/application/go/GoBinaryService.js +4 -5
- package/dist/application/investigation/EvidenceLedger.js +3 -4
- package/dist/application/javascript/ElectronBoundaryGraphWindows.js +14 -2
- package/dist/application/javascript/ElectronEvidence.js +1 -2
- package/dist/application/javascript/ElectronObservationService.js +41 -7
- package/dist/application/javascript/JavaScriptApplicationEvidence.js +6 -0
- package/dist/application/javascript/JavaScriptArtifactAnalysis.js +35 -17
- package/dist/application/javascript/JavaScriptArtifactAnalysisTypes.js +30 -1
- package/dist/application/javascript/JavaScriptArtifactGraphContext.js +3 -2
- package/dist/application/javascript/JavaScriptArtifactGraphEvidence.js +3 -3
- package/dist/application/javascript/JavaScriptArtifactGraphFindings.js +41 -11
- package/dist/application/javascript/JavaScriptArtifactGraphStructure.js +18 -8
- package/dist/application/javascript/JavaScriptArtifactPathResolution.js +84 -24
- package/dist/application/javascript/JavaScriptArtifactReconstruction.js +15 -3
- package/dist/application/javascript/JavaScriptModuleRelationships.js +1 -1
- package/dist/application/javascript/JavaScriptRuntimeObservationEvidence.js +1 -2
- package/dist/application/javascript/JavaScriptRuntimeObservationService.js +33 -10
- package/dist/application/javascript/JavaScriptSemanticGraphAsyncProjection.js +4 -5
- package/dist/application/javascript/JavaScriptSemanticGraphBuilder.js +103 -24
- package/dist/application/javascript/JavaScriptSemanticGraphChildProcessProjection.js +13 -4
- package/dist/application/javascript/JavaScriptSemanticGraphConstruction.js +23 -3
- package/dist/application/javascript/JavaScriptSemanticGraphDataProjection.js +18 -5
- package/dist/application/javascript/JavaScriptSemanticGraphFlowProjection.js +4 -6
- package/dist/application/javascript/JavaScriptSemanticGraphObjectProjection.js +2 -3
- package/dist/application/javascript/JavaScriptSemanticGraphResourceProjection.js +2 -3
- package/dist/application/javascript/JavaScriptSemanticGraphValueProjection.js +5 -8
- package/dist/application/native/NativeCallRoutes.js +40 -23
- package/dist/application/native/NativeUiActionTrace.js +8 -0
- package/dist/application/native/NativeValueTrace.js +8 -0
- package/dist/application/reverse/ReverseEngineeringService.js +2 -2
- package/dist/application/rust/RustBinaryService.js +6 -4
- package/dist/application/signals/SignalRecordingService.js +3 -2
- package/dist/application/wasm/WasmArtifactService.js +4 -5
- package/dist/artifacts/AnalysisCleanupLease.js +119 -0
- package/dist/artifacts/ArtifactFileOperation.js +150 -0
- package/dist/artifacts/ArtifactHash.js +2 -1
- package/dist/artifacts/ArtifactProvider.js +16 -5
- package/dist/artifacts/ArtifactReader.js +50 -4
- package/dist/artifacts/ArtifactResourceScope.js +80 -6
- package/dist/artifacts/AsarArtifactReader.js +12 -11
- package/dist/artifacts/AsarEntryStream.js +49 -17
- package/dist/artifacts/DirectoryArtifactReader.js +28 -7
- package/dist/artifacts/MachOSliceArtifactReader.js +70 -13
- package/dist/artifacts/NativeDmgArtifactReader.js +112 -13
- package/dist/artifacts/SafeOutputTree.js +5 -3
- package/dist/artifacts/SafeOutputTreeCreationFailure.js +1 -0
- package/dist/artifacts/SafeOutputTreeReadback.js +10 -16
- package/dist/artifacts/ZipArtifactReader.js +34 -14
- package/dist/artifacts/apple/AppleAssetCatalogAnalysis.js +3 -1
- package/dist/artifacts/apple/DylibFileAccess.js +106 -0
- package/dist/artifacts/apple/DylibResolutionReader.js +64 -155
- package/dist/artifacts/apple/InterfaceBuilderAnalysis.js +52 -9
- package/dist/artifacts/apple/InterfaceBuilderDecodeBudget.js +25 -24
- package/dist/artifacts/apple/KeyedArchiveReader.js +20 -11
- package/dist/artifacts/apple/MachoLoadCommandReader.js +17 -2
- package/dist/artifacts/apple/PlistNumberLiterals.js +104 -116
- package/dist/artifacts/extraction/ArtifactExtraction.js +15 -12
- package/dist/artifacts/inventory/ArtifactGraphConstruction.js +9 -11
- package/dist/artifacts/inventory/ArtifactInventory.js +2 -2
- package/dist/artifacts/inventory/classify.js +4 -2
- package/dist/artifacts/inventory/hashStableRootArtifact.js +14 -7
- package/dist/artifacts/inventory/scanCanonical.js +3 -4
- package/dist/artifacts/javascript/JavaScriptArtifactFiles.js +3 -1
- package/dist/artifacts/readArtifactFileChunks.js +9 -0
- package/dist/artifacts/readStableArtifact.js +12 -34
- package/dist/browser/BrowserScenarioPartialObservation.js +14 -48
- package/dist/browser/CdpBrowserProvider.js +81 -30
- package/dist/browser/CdpCaptureDocuments.js +99 -131
- package/dist/browser/CdpCaptureDomSvg.js +31 -60
- package/dist/browser/CdpCaptureValues.js +12 -0
- package/dist/browser/CdpConnection.js +133 -27
- package/dist/browser/CdpElectronInspection.js +60 -60
- package/dist/browser/CdpElectronProvider.js +56 -4
- package/dist/browser/CdpElectronScriptEvents.js +4 -1
- package/dist/browser/CdpElectronScripts.js +2 -5
- package/dist/browser/CdpElectronWorkers.js +13 -2
- package/dist/browser/CdpPageCapture.js +2 -1
- package/dist/browser/CdpPageCaptureScripts.js +14 -10
- package/dist/browser/CdpPageCaptureWorkers.js +45 -14
- package/dist/browser/CdpSafeMetadata.js +23 -19
- package/dist/browser/CdpSnapshotNodes.js +103 -0
- package/dist/browser/CdpSnapshotStrings.js +0 -6
- package/dist/browser/CdpTargetSession.js +52 -10
- package/dist/browser/CdpTargetSessionOwner.js +198 -0
- package/dist/browser/ElectronCaptureCleanup.js +82 -0
- package/dist/browser/ElectronProcessCleanup.js +91 -0
- package/dist/browser/PlaywrightBrowserScenarioProvider.js +71 -16
- package/dist/browser/PlaywrightElectronActiveActions.js +53 -5
- package/dist/browser/PlaywrightElectronActiveFuses.js +86 -0
- package/dist/browser/PlaywrightElectronActiveProjection.js +5 -0
- package/dist/browser/PlaywrightElectronActiveProvider.js +140 -151
- package/dist/browser/PlaywrightExecutionBoundary.js +4 -2
- package/dist/browser/PlaywrightScenarioBrowser.js +236 -90
- package/dist/browser/PlaywrightScenarioEvents.js +135 -48
- package/dist/browser/PlaywrightScenarioServiceWorkers.js +121 -34
- package/dist/browser/PlaywrightScenarioSession.js +95 -22
- package/dist/browser/PlaywrightScenarioStorage.js +15 -7
- package/dist/browser/StructuredFieldToken.js +53 -0
- package/dist/browser/WebArtifactCleanup.js +53 -0
- package/dist/browser/WebSourceMapFetcher.js +19 -10
- package/dist/browser/assets/WebArtifactReads.js +6 -2
- package/dist/browser/assets/WebSourceLocationArtifacts.js +12 -3
- package/dist/browser/execution/CdpRuntimeSession.js +36 -7
- package/dist/browser/execution/CdpWebRuntimeProvider.js +22 -4
- package/dist/browser/history/CaptureFailures.js +7 -2
- package/dist/browser/history/HarCapture.js +42 -11
- package/dist/browser/history/SazMetadata.js +10 -47
- package/dist/browser/modules/NativeModuleResolver.js +108 -58
- package/dist/browser/modules/WebModuleArtifacts.js +12 -3
- package/dist/browser/network/PlaywrightNetworkContent.js +40 -17
- package/dist/browser/network/PlaywrightScenarioNetwork.js +182 -73
- package/dist/captures/TsharkCaptureProvider.js +13 -6
- package/dist/catalogIdentity.js +19 -14
- package/dist/cli/adbCommands.js +18 -19
- package/dist/cli/androidCommands.js +2 -14
- package/dist/cli/apktoolCommands.js +4 -14
- package/dist/cli/binaryDiagnosticsCommands.js +5 -5
- package/dist/cli/browserAdvancedCommands.js +11 -4
- package/dist/cli/browserCommands.js +21 -12
- package/dist/cli/captureCommands.js +4 -4
- package/dist/cli/cliResultOutput.js +175 -89
- package/dist/cli/coreBinaryCommands.js +4 -3
- package/dist/cli/cutterCommands.js +51 -13
- package/dist/cli/electronCommands.js +34 -13
- package/dist/cli/evmCommands.js +6 -15
- package/dist/cli/finishAnalysisCommand.js +10 -2
- package/dist/cli/firmwareCommands.js +6 -14
- package/dist/cli/flutterCommands.js +2 -18
- package/dist/cli/fridaCommands.js +8 -0
- package/dist/cli/goCommands.js +2 -2
- package/dist/cli/javascriptRecoveryCommands.js +14 -26
- package/dist/cli/jebCommands.js +2 -14
- package/dist/cli/options.js +6 -0
- package/dist/cli/pcapCommands.js +2 -20
- package/dist/cli/rustCommands.js +6 -7
- package/dist/cli/setupCommands.js +4 -3
- package/dist/cli/signalCommands.js +4 -4
- package/dist/cli/sqliteCommands.js +17 -44
- package/dist/cli/wasmCommands.js +7 -18
- package/dist/cli/webModuleCommands.js +19 -34
- package/dist/cli/webNetworkCaptureCommands.js +3 -2
- package/dist/cli/webRuntimeCommands.js +15 -6
- package/dist/cli/webSourceLocationCommands.js +14 -33
- package/dist/cli-runtime/AnalysisCleanupLease-CWfTGYKd.js +103 -0
- package/dist/cli-runtime/{AnalysisProvider-D0Us2OTk.js → AnalysisProvider-BGrYaMVo.js} +14 -3
- package/dist/cli-runtime/{AnalysisSnapshotCache-BXS0wRd2.js → AnalysisSnapshotCache-BjRlXeUS.js} +14 -13
- package/dist/cli-runtime/ArtifactFileOperation-Dg4BcoEM.js +122 -0
- package/dist/cli-runtime/{ArtifactReader-BXkffc1D.js → ArtifactReader-DMwm42bk.js} +29 -6
- package/dist/cli-runtime/ArtifactResourceScope-CokZGcII.js +175 -0
- package/dist/cli-runtime/{AsarHeader-CnzOzYEH.js → AsarHeader-BxwU17DJ.js} +1 -1
- package/dist/cli-runtime/{BinarySessionStatus-DnMxMk-r.js → BinarySessionStatus-DRhjr7Vb.js} +4 -3
- package/dist/cli-runtime/{BinaryTargetResolver-CVIJ_s1A.js → BinaryTargetResolver-tuCTjBlQ.js} +38 -108
- package/dist/cli-runtime/{BoundedFileBytes-BU30odTm.js → BoundedFileBytes-DRtiQNAQ.js} +7 -3
- package/dist/cli-runtime/{CdpTargetSession-DGX5pV9w.js → CdpTargetSession-CQ08KHbh.js} +318 -43
- package/dist/cli-runtime/ClientConfigPath-Dn-V_GUf.js +255 -0
- package/dist/cli-runtime/{ClientConfigurationDocument-ffQ9X0Se.js → ClientConfigurationDocument-C9T8MNGc.js} +206 -142
- package/dist/cli-runtime/{ClientRegistrationStatus-DszCyPEU.js → ClientRegistrationStatus-PnD29RTX.js} +112 -36
- package/dist/cli-runtime/{CurrentEntrypointPath-D5FRNdkq.js → CurrentEntrypointPath-m7QCIVN0.js} +1 -1
- package/dist/cli-runtime/{DirectAnalysis-BgvAtpN3.js → DirectAnalysis-C5NyUryV.js} +76 -23
- package/dist/cli-runtime/DirectoryArtifactReader-CokAJ8vo.js +448 -0
- package/dist/cli-runtime/{Doctor-DIpf_I7N.js → Doctor-DrkWsav4.js} +105 -25
- package/dist/cli-runtime/{ElectronFileScope-dpHm2nrS.js → ElectronFileScope-AP7VoVr7.js} +204 -149
- package/dist/cli-runtime/ElectronFuseFailures-DsjXR7Xp.js +609 -0
- package/dist/cli-runtime/{ExecFileOutput-BEQs-lDD.js → ExecFileOutput-D6KLYTve.js} +11 -9
- package/dist/cli-runtime/{InterfaceBuilderDecodeBudget-D4omRUe4.js → InterfaceBuilderDecodeBudget-CW1IO3dG.js} +40 -21
- package/dist/cli-runtime/{InventoryProjectionEvidence-DIsI4DJ6.js → InventoryProjectionEvidence-DTH5QAqL.js} +3 -3
- package/dist/cli-runtime/{InvestigationProviders-DoQRIHii.js → InvestigationProviders-CFh4a64d.js} +3 -2
- package/dist/cli-runtime/{JavaScriptApplicationEvidenceGraph-D5aI_FSJ.js → JavaScriptApplicationEvidenceGraph-gOmPB2L6.js} +6 -6
- package/dist/cli-runtime/{JavaScriptApplicationWorkflowEvidence-Bz4-V0Ct.js → JavaScriptApplicationWorkflowEvidence-WZgtK_Ok.js} +2 -2
- package/dist/cli-runtime/JebMcpEndpoint-BEalGZh9.js +710 -0
- package/dist/cli-runtime/{JsonFiles-DQa1PRKy.js → JsonFiles-uvd6ZyQi.js} +10 -118
- package/dist/cli-runtime/KunaInstallation-P0j3x851.js +1781 -0
- package/dist/cli-runtime/MacHopperPaths-bGzqjF1Z.js +34 -0
- package/dist/cli-runtime/{MachoLoadCommandReader-C7e074Ze.js → MachoLoadCommandReader-CZm6N5vF.js} +12 -192
- package/dist/cli-runtime/{ManagedSnapshot-rqyBHcdL.js → ManagedSnapshot-CPE9C3OD.js} +406 -110
- package/dist/cli-runtime/OwnedCommandCleanup-BN_V6Erc.js +187 -0
- package/dist/cli-runtime/OwnedRegularFile-D1f5nUCx.js +256 -0
- package/dist/cli-runtime/OwnedStagedOutput-D31dOozz.js +126 -0
- package/dist/cli-runtime/{PrivateRuntimeRoot-DAy0PiBM.js → PrivateRuntimeRoot-Cd23u6jd.js} +39 -6
- package/dist/cli-runtime/ProcessOwnership-CtrNr6ee.js +545 -0
- package/dist/cli-runtime/{ProcessOwnership-DXC5-UWt.js → ProcessOwnershipObservation-C006iCtZ.js} +149 -607
- package/dist/cli-runtime/{ProviderDeadline-8m2pFRDc.js → ProviderDeadline-rSuH4Pm8.js} +27 -1
- package/dist/cli-runtime/ProviderOperationExecution-CmU-XrQr.js +38 -0
- package/dist/cli-runtime/{snapshotEnvironment-D_tWyOub.js → ProviderProcess-D87A7ctp.js} +117 -160
- package/dist/cli-runtime/RegularFileRead-mbgGYtxe.js +125 -0
- package/dist/cli-runtime/{SafeOutputTree-D6U15GXd.js → SafeOutputTree-i904hd_2.js} +21 -20
- package/dist/cli-runtime/{SetupHost-FkYWswsq.js → SetupHost-CMPmPraB.js} +365 -195
- package/dist/cli-runtime/SharedStartupAttempt-BxKyf3Uv.js +1424 -0
- package/dist/cli-runtime/StableFileHash-Ame_h3lY.js +61 -0
- package/dist/cli-runtime/{SupportedClients-DaX6Lt2d.js → SupportedClients-DMafjitv.js} +89 -72
- package/dist/cli-runtime/{Update-CbTC_eg1.js → Update-DAsASWlE.js} +1 -1
- package/dist/cli-runtime/{AbortablePromise-BVBemxbD.js → WindowsBatchCommand-Cx9kaVNf.js} +2 -28
- package/dist/cli-runtime/WindowsNativeLoader-BqyZO0ZD.js +142 -0
- package/dist/cli-runtime/{ZipArtifactReader-B8ZgNe4D.js → ZipArtifactReader-Jed69LEL.js} +20 -16
- package/dist/cli-runtime/{analysisErrorCleanup-Do6YeeoD.js → analysisErrorCleanup-COdAmDsb.js} +4 -3
- package/dist/cli-runtime/{appleArchiveFormat-tVoI2ykA.js → appleArchiveFormat-Bb3G5CCI.js} +13 -7
- package/dist/cli-runtime/{application__DirectAnalysisStatus-DpOejOf0.js → application__DirectAnalysisStatus-F74bu9oy.js} +10 -10
- package/dist/cli-runtime/{application__EnhancedTools-oFE2bOjs.js → application__EnhancedTools-Bg51b0Yp.js} +84 -51
- package/dist/cli-runtime/{application__FunctionAnalysisEvidence-B6osuhvW.js → application__FunctionAnalysisEvidence-DBWIaYCh.js} +3 -3
- package/dist/cli-runtime/{application__ReconstructionCoverageService-DN3wTFQj.js → application__ReconstructionCoverageService-AEPNpZqJ.js} +3 -3
- package/dist/cli-runtime/{application__ReconstructionObligationLedgerService-CKcTppX9.js → application__ReconstructionObligationLedgerService-Cl9cPEZf.js} +22 -9
- package/dist/cli-runtime/{application__Setup-XpMaRNjy.js → application__Setup-DwQzEewK.js} +30 -18
- package/dist/cli-runtime/{application__Uninstall-_23pU2yB.js → application__Uninstall-BOf9oyvQ.js} +78 -37
- package/dist/cli-runtime/{application__UpdateRuntime-DPvY8ohd.js → application__UpdateRuntime-CzWkRJHa.js} +119 -29
- package/dist/cli-runtime/{application__android__AndroidApplicationService-CFgIFPM4.js → application__android__AndroidApplicationService-shW_aKlj.js} +3 -3
- package/dist/cli-runtime/{application__apple__AppleApplicationService-Db6QCsun.js → application__apple__AppleApplicationService-DIv6d3wB.js} +3 -3
- package/dist/cli-runtime/{application__harmony__HarmonyApplicationService-CFjocHoK.js → application__harmony__HarmonyApplicationService-OIUFVQFV.js} +3 -3
- package/dist/cli-runtime/{application__javascript__ElectronActiveObservationService-CmVDUI_Z.js → application__javascript__ElectronActiveObservationService-wvCh72hK.js} +3 -3
- package/dist/cli-runtime/application__javascript__ElectronObservationService-SydXPCwM.js +88 -0
- package/dist/cli-runtime/{application__javascript__JavaScriptApplicationService-CCkp8KBh.js → application__javascript__JavaScriptApplicationService-o0uEsjEc.js} +1120 -316
- package/dist/cli-runtime/{application__javascript__JavaScriptApplicationWorkflowService-lPy0tzr3.js → application__javascript__JavaScriptApplicationWorkflowService-BAheG_71.js} +51 -44
- package/dist/cli-runtime/{application__javascript__JavaScriptRuntimeReconciliationService-DWleA8K9.js → application__javascript__JavaScriptRuntimeReconciliationService-Cnn4GP8q.js} +5 -5
- package/dist/cli-runtime/{application__javascript__JavaScriptSemanticTraceService-DkALH4rL.js → application__javascript__JavaScriptSemanticTraceService-CmvLfV1A.js} +6 -6
- package/dist/cli-runtime/{artifacts__ArtifactProvider-zXI0QjSL.js → artifacts__ArtifactProvider-wx2K0F2I.js} +377 -359
- package/dist/cli-runtime/{binary-BVOr2mgE.js → binary-CWVNJhAC.js} +8561 -3159
- package/dist/cli-runtime/{catalogIdentity-DLoXgfIR.js → catalogIdentity-DAEEsOdX.js} +260 -81
- package/dist/cli-runtime/cli.js +6177 -3556
- package/dist/cli-runtime/{cliOutput-BC1BdAcB.js → cliOutput-CgSuw782.js} +47 -6
- package/dist/cli-runtime/cliOutput.js +2 -2
- package/dist/cli-runtime/cliResultOutput-10sd6xGx.js +1453 -0
- package/dist/cli-runtime/cliResultOutput.js +2 -1
- package/dist/cli-runtime/{composition__browserScenario-DHXC1a8n.js → composition__browserScenario-BtPb1c1y.js} +843 -356
- package/dist/cli-runtime/{composition__electronObservation-GecK2EID.js → composition__electronObservation-Bk8R6DJo.js} +128 -69
- package/dist/cli-runtime/{composition__electronScenario-CEZnVrAL.js → composition__electronScenario-BVF0qStH.js} +398 -135
- package/dist/cli-runtime/{cutterToolContracts-TZH9EHr5.js → cutterToolContracts-BQtG_Nzo.js} +195 -62
- package/dist/cli-runtime/{doctorRuntime-BE5ZX8it.js → doctorRuntime-B__SIpm-.js} +241 -21
- package/dist/cli-runtime/{dotnet__ManagedStaticProvider-C8_yZCDc.js → dotnet__ManagedStaticProvider-DO5Yzcp4.js} +1 -1
- package/dist/cli-runtime/{errorSchemas-CTRmvMl3.js → errorSchemas-Ixz_q7qt.js} +58 -4
- package/dist/cli-runtime/homeDirectory-DC_DeJIg.js +18 -0
- package/dist/cli-runtime/{javascriptApplicationAnalysis-HgMzVMQw.js → javascriptApplicationAnalysis-Dk6yBV8g.js} +688 -668
- package/dist/cli-runtime/{javascriptExportReturnShapeProjection-Dg00g35t.js → javascriptExportReturnShapeProjection-CObOIiQ6.js} +3 -3
- package/dist/cli-runtime/{javascriptExportShapeComparisonSchemas-BYnoIqIk.js → javascriptExportShapeComparisonSchemas-DpwuBenh.js} +5 -3
- package/dist/cli-runtime/{javascriptRuntimeReconciliation-DNjDoL3S.js → javascriptRuntimeReconciliation-C6ZgWMys.js} +61 -59
- package/dist/cli-runtime/{javascriptRuntimeReconciliationSchemas-BWpGWNcI.js → javascriptRuntimeReconciliationSchemas-D6tZKUQs.js} +2 -2
- package/dist/cli-runtime/{javascriptSemanticTraceSchemas-BTCNcvbc.js → javascriptSemanticTraceSchemas-C7m0b6_w.js} +3 -3
- package/dist/cli-runtime/{lipo-DSWP6fv-.js → lipo-DPQ6qurH.js} +9 -11
- package/dist/cli-runtime/{logger-CQQCI4a2.js → logger-BuDJ9xxO.js} +2 -2
- package/dist/cli-runtime/{machoContainer-C8BIkkq3.js → machoContainer-Cy98bkFm.js} +180 -0
- package/dist/cli-runtime/{managedApplicationGraph-B08jb3jq.js → managedApplicationGraph-BazVqpJv.js} +16 -10
- package/dist/cli-runtime/{managedToolContracts-D60QmIYj.js → managedToolContracts-BuFkMBH5.js} +2 -2
- package/dist/cli-runtime/mcpDoctor.js +8 -6
- package/dist/cli-runtime/mcpStartupPolicy-imCbM3qo.js +28 -0
- package/dist/cli-runtime/{native__NativeMacOSProvider-YBTvUeJO.js → native__NativeMacOSProvider-DTcRhuGA.js} +1384 -757
- package/dist/cli-runtime/{officialToolContracts-CCFF0an9.js → officialToolContracts-CzzVLx8I.js} +74 -53
- package/dist/cli-runtime/peMachine-B9ggfSJJ.js +95 -0
- package/dist/cli-runtime/propertyListKeys-D5dSASEy.js +355 -0
- package/dist/cli-runtime/{providerCleanupError-Ceq8f0wK.js → providerCleanupError-BhsJyAhk.js} +3 -5
- package/dist/cli-runtime/readArtifactFileChunks-BbTL_PtB.js +129 -0
- package/dist/cli-runtime/{reconstructionObligationLedgerSchemas-Bao0xMr-.js → reconstructionObligationLedgerSchemas-Bi6sect1.js} +6329 -3651
- package/dist/cli-runtime/{scanCanonical-KP4T9jSl.js → scanCanonical-CcDFUr-w.js} +233 -363
- package/dist/cli-runtime/snapshotEnvironment-Yvx5qwsl.js +196 -0
- package/dist/cli-runtime/{toolContracts-D2FOG_Nb.js → toolContracts-CJzEyZ38.js} +126 -52
- package/dist/cli-runtime/{toolOutputSchemaGroups-DRiYs1je.js → toolOutputSchemaGroups-BqdSzySu.js} +768 -589
- package/dist/cli-runtime/{workflowInputError-n8Oo-bLA.js → workflowInputError-BP8z9Wxl.js} +2 -2
- package/dist/cli.js +10 -0
- package/dist/cliBrowserScenarioCommands.js +2 -3
- package/dist/cliLogging.js +22 -7
- package/dist/cliObservationOptions.js +3 -0
- package/dist/cliOutput.js +68 -3
- package/dist/composition/binary.js +15 -2
- package/dist/composition/directAnalysis.js +8 -0
- package/dist/composition/javascriptAnalysisWorkerProcess.js +4 -5
- package/dist/composition/jeb.js +32 -21
- package/dist/config/environment.js +36 -2
- package/dist/config/mcpInputSchemaProfile.js +1 -1
- package/dist/config/parseConfig.js +7 -3
- package/dist/contracts/adb/adbToolContracts.js +2 -2
- package/dist/contracts/analysisViewApiSurfaceExample.js +4 -4
- package/dist/contracts/analysisViewToolContracts.js +42 -1
- package/dist/contracts/android/androidToolContracts.js +1 -1
- package/dist/contracts/apktool/apktoolToolContracts.js +5 -1
- package/dist/contracts/artifactComparisonExample.js +18 -14
- package/dist/contracts/artifactToolContracts.js +2 -1
- package/dist/contracts/browserScenarioToolContracts.js +1 -1
- package/dist/contracts/browserToolContracts.js +12 -1
- package/dist/contracts/compactInputSchema.js +13 -6
- package/dist/contracts/fridaToolContracts.js +5 -4
- package/dist/contracts/gdbToolContracts.js +2 -3
- package/dist/contracts/inputSchemaPresentation.js +173 -79
- package/dist/contracts/javascript/javascriptExportShapeComparisonExample.js +1 -0
- package/dist/contracts/javascript/javascriptRuntimeReconciliationExample.js +1 -0
- package/dist/contracts/jsonSchemaKeywords.js +29 -0
- package/dist/contracts/managed/managedWorkflowExamples.js +3 -0
- package/dist/contracts/managed/managedWorkflowToolContracts.js +1 -1
- package/dist/contracts/mobileApplicationGraphExamples.js +15 -12
- package/dist/contracts/officialToolContracts.js +2 -2
- package/dist/contracts/rizinDebugToolContracts.js +3 -2
- package/dist/contracts/sessionToolContracts.js +3 -3
- package/dist/contracts/toolEffects.js +6 -2
- package/dist/contracts/toolOutputSchemaGroups.js +7 -4
- package/dist/contracts/toolOutputSchemaPrimitives.js +7 -0
- package/dist/contracts/toolSchemaMetadata.js +99 -27
- package/dist/cutter/CutterBridgeClient.js +206 -67
- package/dist/cutter/CutterBridgeService.js +52 -4
- package/dist/doctorRuntime.js +25 -4
- package/dist/domain/adb/adbDeviceAnalysis.js +19 -1
- package/dist/domain/analysisErrorBase.js +59 -2
- package/dist/domain/analysisErrorCleanup.js +3 -1
- package/dist/domain/analysisErrorCore.js +13 -0
- package/dist/domain/analysisErrorPresentation.js +23 -4
- package/dist/domain/analysisErrorProjection.js +44 -28
- package/dist/domain/analysisSearch.js +26 -0
- package/dist/domain/analysisSnapshot.js +11 -11
- package/dist/domain/analysisView/WebNetworkApiSurfaceAccumulator.js +4 -65
- package/dist/domain/analysisView/analysisView.js +25 -0
- package/dist/domain/analysisView/analysisViewDataAdmission.js +86 -0
- package/dist/domain/analysisView/artifactInventoryView.js +4 -18
- package/dist/domain/analysisView/javascriptApplicationCoverage.js +27 -0
- package/dist/domain/analysisView/javascriptApplicationView.js +100 -27
- package/dist/domain/analysisView/javascriptFactsView.js +92 -0
- package/dist/domain/analysisView/javascriptModuleReferences.js +37 -0
- package/dist/domain/analysisView/managedMemberView.js +6 -0
- package/dist/domain/android/androidApplication.js +8 -7
- package/dist/domain/apktool/apktoolResourceAnalysis.js +52 -2
- package/dist/domain/apple/appleApplication.js +41 -60
- package/dist/domain/apple/appleBundleAnatomy.js +56 -68
- package/dist/domain/apple/dylibResolution.js +5 -1
- package/dist/domain/apple/interfaceBuilderGraph.js +29 -8
- package/dist/domain/apple/interfaceBuilderKeyedArchive.js +11 -4
- package/dist/domain/apple/jvmClassFile.js +226 -0
- package/dist/domain/apple/keyedArchive.js +39 -17
- package/dist/domain/apple/machoContainer.js +3 -0
- package/dist/domain/apple/plistNumbers.js +67 -5
- package/dist/domain/apple/plistValue.js +89 -18
- package/dist/domain/artifactComparison.js +7 -5
- package/dist/domain/artifactGraph.js +4 -12
- package/dist/domain/artifactInspection.js +6 -17
- package/dist/domain/artifactInventoryEvidence.js +68 -60
- package/dist/domain/binaryTarget.js +11 -26
- package/dist/domain/binaryTargetTypes.js +10 -0
- package/dist/domain/browserNetworkEvidence.js +20 -3
- package/dist/domain/browserObservation.js +5 -28
- package/dist/domain/browserObservationError.js +4 -4
- package/dist/domain/browserScenarioCapture.js +11 -2
- package/dist/domain/browserScenarioCaptureLimits.js +34 -0
- package/dist/domain/browserScenarioCaptureValues.js +50 -0
- package/dist/domain/browserScenarioDiffEvidence.js +1 -3
- package/dist/domain/browserScenarioValues.js +5 -1
- package/dist/domain/captures/packetCapture.js +2 -1
- package/dist/domain/dosMz.js +14 -5
- package/dist/domain/electron/electronFuseEvidence.js +42 -0
- package/dist/domain/elfFixedHeader.js +24 -0
- package/dist/domain/evidence.js +7 -6
- package/dist/domain/evidenceBundle.js +9 -2
- package/dist/domain/explicitSensitiveFailure.js +3 -0
- package/dist/domain/fileSnapshotObservation.js +25 -0
- package/dist/domain/fixedTupleSchema.js +9 -0
- package/dist/domain/functionCallCoverage.js +6 -6
- package/dist/domain/functionComparisonDimensions.js +38 -11
- package/dist/domain/functionComparisonNormalization.js +17 -9
- package/dist/domain/functionDossierEvidence.js +4 -3
- package/dist/domain/harmony/harmonyApplication.js +8 -8
- package/dist/domain/hopperErrors.js +4 -2
- package/dist/domain/hopperValues.js +27 -4
- package/dist/domain/javascript/electronActiveObservation.js +1 -0
- package/dist/domain/javascript/electronStaticAnalysisBrowser.js +80 -20
- package/dist/domain/javascript/electronStaticAnalysisValues.js +0 -20
- package/dist/domain/javascript/electronStaticOptionObjects.js +45 -0
- package/dist/domain/javascript/electronWrappedCallPaths.js +70 -17
- package/dist/domain/javascript/javascriptAnalysisResourceControls.js +20 -4
- package/dist/domain/javascript/javascriptApplicationAnalysis.js +4 -0
- package/dist/domain/javascript/javascriptApplicationChangeGraph.js +3 -0
- package/dist/domain/javascript/javascriptApplicationVersionComparisonSchemas.js +3 -1
- package/dist/domain/javascript/javascriptApplicationVersionItems.js +49 -21
- package/dist/domain/javascript/javascriptAstFingerprint.js +41 -10
- package/dist/domain/javascript/javascriptAstValues.js +83 -5
- package/dist/domain/javascript/javascriptBundledRequireOrigin.js +23 -36
- package/dist/domain/javascript/javascriptCommonJsExportReceivers.js +231 -0
- package/dist/domain/javascript/javascriptElectronMemberWrites.js +14 -4
- package/dist/domain/javascript/javascriptFeatureSeed.js +1 -1
- package/dist/domain/javascript/javascriptGraphqlOperations.js +382 -0
- package/dist/domain/javascript/javascriptModuleDeclaration.js +20 -0
- package/dist/domain/javascript/javascriptNativeHandoff.js +7 -11
- package/dist/domain/javascript/javascriptRpcEndpoints.js +7 -171
- package/dist/domain/javascript/javascriptRuntimeLoadState.js +9 -4
- package/dist/domain/javascript/javascriptRuntimeReconciliationCaptureParsing.js +35 -12
- package/dist/domain/javascript/javascriptRuntimeReconciliationMatching.js +50 -45
- package/dist/domain/javascript/javascriptSemanticAmbientWrites.js +284 -24
- package/dist/domain/javascript/javascriptSemanticAnalysis.js +452 -182
- package/dist/domain/javascript/javascriptSemanticAsyncEffects.js +37 -20
- package/dist/domain/javascript/javascriptSemanticCallResolution.js +55 -27
- package/dist/domain/javascript/javascriptSemanticCalls.js +4 -4
- package/dist/domain/javascript/javascriptSemanticChildProcesses.js +134 -50
- package/dist/domain/javascript/javascriptSemanticCoverage.js +5 -1
- package/dist/domain/javascript/javascriptSemanticDataEffectHelpers.js +7 -13
- package/dist/domain/javascript/javascriptSemanticDataEffects.js +33 -10
- package/dist/domain/javascript/javascriptSemanticDerivedAnalysis.js +1 -1
- package/dist/domain/javascript/javascriptSemanticEvaluationOrder.js +126 -0
- package/dist/domain/javascript/javascriptSemanticExpressionShapes.js +111 -0
- package/dist/domain/javascript/javascriptSemanticGetterQueries.js +147 -0
- package/dist/domain/javascript/javascriptSemanticGetterResults.js +264 -0
- package/dist/domain/javascript/javascriptSemanticGraph.js +18 -1
- package/dist/domain/javascript/javascriptSemanticGraphSchemas.js +13 -0
- package/dist/domain/javascript/javascriptSemanticIterationSources.js +3 -2
- package/dist/domain/javascript/javascriptSemanticMapOperations.js +51 -0
- package/dist/domain/javascript/javascriptSemanticMemberMutations.js +215 -81
- package/dist/domain/javascript/javascriptSemanticMutationInitializers.js +395 -118
- package/dist/domain/javascript/javascriptSemanticObjectReferences.js +241 -328
- package/dist/domain/javascript/javascriptSemanticObjects.js +33 -27
- package/dist/domain/javascript/javascriptSemanticOpaqueEffects.js +163 -0
- package/dist/domain/javascript/javascriptSemanticPrimitives.js +11 -1
- package/dist/domain/javascript/javascriptSemanticProjection.js +44 -67
- package/dist/domain/javascript/javascriptSemanticQueryIdentity.js +2 -1
- package/dist/domain/javascript/javascriptSemanticQuerySchemas.js +1 -1
- package/dist/domain/javascript/javascriptSemanticRequireOrigin.js +45 -7
- package/dist/domain/javascript/javascriptSemanticResourceLimits.js +3 -19
- package/dist/domain/javascript/javascriptSemanticResources.js +27 -4
- package/dist/domain/javascript/javascriptSemanticReturnedReferences.js +78 -37
- package/dist/domain/javascript/javascriptSemanticReturns.js +2 -2
- package/dist/domain/javascript/javascriptSemanticState.js +191 -42
- package/dist/domain/javascript/javascriptSemanticValues.js +167 -41
- package/dist/domain/javascript/javascriptSourceParser.js +54 -9
- package/dist/domain/javascript/javascriptStaticAnalysis.js +24 -13
- package/dist/domain/javascript/javascriptStaticAnalysisCalls.js +276 -16
- package/dist/domain/javascript/javascriptStaticAnalysisHelpers.js +33 -25
- package/dist/domain/javascript/javascriptStaticAnalysisState.js +3 -0
- package/dist/domain/javascript/javascriptStaticAnalysisTypes.js +1 -1
- package/dist/domain/javascript/javascriptSymbolicBindings.js +424 -142
- package/dist/domain/javascript/javascriptSymbolicControlFlow.js +4 -0
- package/dist/domain/javascript/javascriptSymbolicValues.js +12 -1
- package/dist/domain/javascript/sourceToBundleSignals.js +3 -0
- package/dist/domain/managed/managedApplicationGraphNodes.js +14 -9
- package/dist/domain/managed/managedArtifact.js +26 -0
- package/dist/domain/managed/managedMemberComparison.js +3 -0
- package/dist/domain/managed/managedMemberComparisonCoverage.js +14 -1
- package/dist/domain/managed/managedMemberComparisonItems.js +124 -52
- package/dist/domain/managed/managedMemberComparisonMatch.js +76 -72
- package/dist/domain/managed/managedMemberSignatureIdentity.js +40 -0
- package/dist/domain/managed/managedNativeVerificationMatch.js +5 -5
- package/dist/domain/managed/managedNativeVerificationSchemas.js +2 -2
- package/dist/domain/mobileApplicationGraphProjection.js +33 -18
- package/dist/domain/native/bytePattern.js +21 -0
- package/dist/domain/native/nativeAotPe.js +29 -2
- package/dist/domain/native/nativeAotSnapshotObservation.js +18 -0
- package/dist/domain/native/nativeCallPartialObservation.js +14 -12
- package/dist/domain/native/nativeLoadImage.js +13 -0
- package/dist/domain/native/objcSwiftMetadata.js +15 -8
- package/dist/domain/native/peResources.js +6 -2
- package/dist/domain/peMachine.js +2 -0
- package/dist/domain/process/processComparison.js +3 -3
- package/dist/domain/process/processTraceDimensionProjection.js +1 -1
- package/dist/domain/process/processTraceEvaluation.js +65 -24
- package/dist/domain/propertyListKeys.js +84 -69
- package/dist/domain/propertyListXml.js +149 -0
- package/dist/domain/providerAdapterError.js +2 -0
- package/dist/domain/providerCleanupError.js +2 -4
- package/dist/domain/rawBinary.js +11 -2
- package/dist/domain/reconstructionCoverage.js +35 -23
- package/dist/domain/reconstructionCoverageEvaluation.js +36 -36
- package/dist/domain/reconstructionCoverageEvidence.js +26 -0
- package/dist/domain/reconstructionVerification.js +40 -26
- package/dist/domain/referenceSourceImportParsing.js +4 -0
- package/dist/domain/referenceSourcePathIdentity.js +2 -0
- package/dist/domain/referenceSourceRequireBindings.js +40 -101
- package/dist/domain/relationshipCoverage.js +4 -5
- package/dist/domain/sqlite/sqliteDatabase.js +2 -1
- package/dist/domain/symbolAnalysis.js +9 -8
- package/dist/domain/webBundleAnalyzerInspection.js +65 -25
- package/dist/domain/webCaptureDiff.js +124 -41
- package/dist/domain/webInventory.js +28 -14
- package/dist/domain/webModuleTrace.js +22 -0
- package/dist/domain/webScriptExportError.js +2 -3
- package/dist/domain/xmlDocument.js +41 -0
- package/dist/domain/zipPackageFormat.js +0 -4
- package/dist/dotnet/ManagedArtifactInspector.js +2 -4
- package/dist/dotnet/ManagedDecodeBudget.js +21 -1
- package/dist/dotnet/ManagedMemberInspector.js +31 -6
- package/dist/dotnet/ManagedMemberInspectorCore.js +63 -12
- package/dist/dotnet/ManagedMemberRows.js +8 -8
- package/dist/dotnet/ManagedMetadataHeaps.js +0 -1
- package/dist/dotnet/ManagedMetadataLayout.js +17 -15
- package/dist/dotnet/ManagedNativeBoundaryHelpers.js +20 -19
- package/dist/dotnet/ManagedNativeBoundaryInspector.js +7 -8
- package/dist/dotnet/ManagedPeReader.js +5 -0
- package/dist/dotnet/ManagedSnapshot.js +25 -20
- package/dist/dotnet/ManagedTypeNameDigests.js +177 -0
- package/dist/dotnet/ManagedTypeNames.js +6 -46
- package/dist/dotnet/ManagedTypeNesting.js +25 -0
- package/dist/dotnet/ManagedTypeReferences.js +94 -0
- package/dist/electron/ElectronFuseFailures.js +105 -0
- package/dist/electron/ElectronFusePath.js +4 -3
- package/dist/electron/ElectronFuseProvider.js +67 -92
- package/dist/electron/ElectronFuseReader.js +46 -30
- package/dist/evm/EvmoleFailures.js +1 -0
- package/dist/evm/EvmoleInterfaceProvider.js +13 -16
- package/dist/filesystem/OwnedRegularFile.js +116 -0
- package/dist/filesystem/OwnedStagedOutput.js +28 -11
- package/dist/filesystem/RegularFile.js +20 -8
- package/dist/filesystem/StableFileHash.js +56 -38
- package/dist/filesystem/callerPath.js +26 -0
- package/dist/filesystem/readFileHandleChunks.js +55 -5
- package/dist/filesystem/readStableFileBytes.js +85 -0
- package/dist/firmware/FirmwareCommand.js +13 -7
- package/dist/firmware/FirmwareFailures.js +56 -0
- package/dist/firmware/FirmwareFiles.js +128 -98
- package/dist/firmware/FirmwareProvider.js +120 -65
- package/dist/firmware/FirmwarePublication.js +26 -11
- package/dist/flutter/DartElf.js +27 -0
- package/dist/flutter/FlutterBuildProvider.js +44 -4
- package/dist/gdb/GdbSessionManager.js +202 -14
- package/dist/generatedPackageMetadata.js +1 -1
- package/dist/ghidra/GhidraAnalysisProfile.js +24 -10
- package/dist/ghidra/GhidraAnalysisSeeds.js +39 -55
- package/dist/ghidra/GhidraBridgeSources.js +12 -0
- package/dist/ghidra/GhidraClient.js +362 -148
- package/dist/ghidra/GhidraClientStartup.js +5 -3
- package/dist/ghidra/GhidraClientWire.js +5 -2
- package/dist/ghidra/GhidraDiagnostics.js +16 -5
- package/dist/ghidra/GhidraDoctor.js +45 -14
- package/dist/ghidra/GhidraDosSnapshot.js +83 -0
- package/dist/ghidra/GhidraExecutableHeader.js +54 -0
- package/dist/ghidra/GhidraFileArtifacts.js +93 -0
- package/dist/ghidra/GhidraFunctionValues.js +1 -0
- package/dist/ghidra/GhidraInstallation.js +143 -142
- package/dist/ghidra/GhidraInstallationPolicy.js +20 -79
- package/dist/ghidra/GhidraInstallationProperties.js +57 -0
- package/dist/ghidra/GhidraInventoryValues.js +22 -6
- package/dist/ghidra/GhidraJavaLaunch.js +11 -4
- package/dist/ghidra/GhidraJavaProbe.js +267 -0
- package/dist/ghidra/GhidraJavaProperties.js +9 -7
- package/dist/ghidra/GhidraLanguageCatalog.js +12 -7
- package/dist/ghidra/GhidraLauncher.js +128 -65
- package/dist/ghidra/GhidraLoadImageAttest.js +75 -78
- package/dist/ghidra/GhidraLoadImageValues.js +39 -29
- package/dist/ghidra/GhidraMipsProfile.js +13 -5
- package/dist/ghidra/GhidraNativeAotSnapshotOwner.js +221 -0
- package/dist/ghidra/GhidraPeProfile.js +88 -18
- package/dist/ghidra/GhidraProvider.js +219 -32
- package/dist/ghidra/GhidraProviderCapabilities.js +17 -4
- package/dist/ghidra/GhidraProviderClient.js +199 -239
- package/dist/ghidra/GhidraPspExtension.js +104 -34
- package/dist/ghidra/GhidraPspProfile.js +4 -1
- package/dist/ghidra/GhidraRawBinaryLanguage.js +13 -4
- package/dist/ghidra/GhidraReleasePolicy.js +93 -0
- package/dist/ghidra/GhidraRequestQueue.js +64 -40
- package/dist/ghidra/GhidraSessionError.js +152 -19
- package/dist/ghidra/GhidraSessionValues.js +13 -3
- package/dist/ghidra/GhidraSocketConnection.js +25 -11
- package/dist/ghidra/GhidraTargetSnapshot.js +67 -50
- package/dist/ghidra/GhidraTransport.js +86 -63
- package/dist/ghidra/extensions/GhidraExtensions.js +30 -45
- package/dist/go/GoBinaryProvider.js +89 -60
- package/dist/go/GoElfImage.js +3 -3
- package/dist/hopper/BridgeLauncher.js +43 -4
- package/dist/hopper/HopperAnalysisProfile.js +4 -2
- package/dist/hopper/HopperCleanup.js +14 -1
- package/dist/hopper/HopperClient.js +135 -63
- package/dist/hopper/HopperProvider.js +4 -7
- package/dist/hopper/HopperProviderCapabilities.js +2 -1
- package/dist/hopper/HopperRegexSearch.js +21 -60
- package/dist/ida/IdaBusyHealth.js +36 -2
- package/dist/ida/IdaMcpConnection.js +17 -11
- package/dist/ida/IdaNativeProtocol.js +1 -9
- package/dist/ida/IdaOperationRunner.js +8 -26
- package/dist/ida/IdaProtocolValues.js +2 -1
- package/dist/ida/IdaProvider.js +18 -2
- package/dist/ida/IdaSessionClient.js +54 -12
- package/dist/inspector/V8InspectorCaptureProjection.js +7 -0
- package/dist/inspector/V8InspectorProvider.js +2 -0
- package/dist/javascript/analysis/JavaScriptAnalysisTransfer.js +25 -4
- package/dist/javascript/analysis/JavaScriptAnalysisWorker.js +4 -3
- package/dist/javascript/analysis/JavaScriptAnalysisWorkerProtocol.js +3 -2
- package/dist/javascript/analysis/JavaScriptAnalysisWorkerSchemas.js +7 -1
- package/dist/javascript/analysis/JavaScriptAnalysisWorkerServer.js +1 -1
- package/dist/javascript/recovery/RecoveryFiles.js +57 -8
- package/dist/jeb/JebMcpConnection.js +129 -70
- package/dist/jeb/JebMcpConnectionOwner.js +116 -0
- package/dist/jeb/JebMcpDeadline.js +46 -0
- package/dist/jeb/JebProvider.js +77 -51
- package/dist/kuna/KunaAddress.js +11 -0
- package/dist/kuna/KunaCommand.js +217 -0
- package/dist/kuna/KunaConfiguration.js +90 -0
- package/dist/kuna/KunaDoctor.js +198 -0
- package/dist/kuna/KunaInstallation.js +137 -0
- package/dist/kuna/KunaJson.js +23 -0
- package/dist/kuna/KunaJsonStream.js +433 -0
- package/dist/kuna/KunaLimits.js +5 -0
- package/dist/kuna/KunaProjectCache.js +804 -0
- package/dist/kuna/KunaProjectExport.js +202 -0
- package/dist/kuna/KunaProjectFiles.js +191 -0
- package/dist/kuna/KunaProjectReader.js +115 -0
- package/dist/kuna/KunaProvider.js +217 -0
- package/dist/kuna/KunaProviderCapabilities.js +102 -0
- package/dist/kuna/KunaQueryErrors.js +12 -0
- package/dist/kuna/KunaQueryWork.js +113 -0
- package/dist/kuna/KunaReferenceFiles.js +258 -0
- package/dist/kuna/KunaReferenceQueries.js +211 -0
- package/dist/kuna/KunaRelease.js +10 -0
- package/dist/kuna/KunaRunSlots.js +56 -0
- package/dist/kuna/KunaSessionClient.js +1162 -0
- package/dist/kuna/KunaStringInventory.js +145 -0
- package/dist/kuna/KunaStringQueries.js +133 -0
- package/dist/kuna/KunaTargetCommands.js +205 -0
- package/dist/kuna/KunaUnavailable.js +11 -0
- package/dist/main/processShutdown.js +17 -0
- package/dist/main/transport.js +21 -1
- package/dist/main.js +2 -12
- package/dist/mcp/AnalysisProvider-BABWbLoM.js +38 -0
- package/dist/mcp/{AnalysisSnapshotFiles-BAbiJQOc.js → AnalysisSnapshotFiles-BXz0c37-.js} +39 -28
- package/dist/mcp/{ProcessOwnership-Bl_3ejLe.js → ArtifactFileOperation-64cQKI7B.js} +274 -72
- package/dist/mcp/{ArtifactProvider-DViCU_rn.js → ArtifactProvider-Dx6pmil1.js} +371 -354
- package/dist/mcp/ArtifactProviderMetadata-UCJr2oZW.js +167 -0
- package/dist/mcp/{ArtifactReader-OyM03Gjn.js → ArtifactReader-BrnwNaKY.js} +29 -6
- package/dist/mcp/ArtifactResourceScope-zi3Dkqzy.js +175 -0
- package/dist/mcp/{AsarHeader-WsPgoooH.js → AsarHeader-B_IbppTz.js} +1 -1
- package/dist/mcp/{BinarySessionStatus-B4P9gf-S.js → BinarySessionStatus-CZ9nnXMt.js} +5 -4
- package/dist/mcp/{BinaryTargetResolver-BMaE_0H1.js → BinaryTargetResolver-BUncASDP.js} +146 -215
- package/dist/mcp/BoundedFileBytes-DYt5q9G2.js +43 -0
- package/dist/mcp/{CdpCaptureDocuments-HDiF2O7k.js → CdpCaptureDocuments-Y2uFcBpl.js} +194 -145
- package/dist/mcp/{CdpCaptureValues-M-j6CIh1.js → CdpCaptureValues-tNIg-gQK.js} +12 -5
- package/dist/mcp/{CdpConnection-BpDfz4MK.js → CdpEndpoint-BrhMhpSi.js} +352 -281
- package/dist/mcp/{CdpOptionalCommand-BPjRD9Kz.js → CdpOptionalCommand-PZZhlqxv.js} +2 -2
- package/dist/mcp/CdpTargetSession-BmmDC3XO.js +290 -0
- package/dist/mcp/{DirectAnalysis-DrafbXke.js → DirectAnalysis-B9KuCHTG.js} +29 -21
- package/dist/mcp/{DirectAnalysisStatus-CjjeDLzW.js → DirectAnalysisStatus-BgzopkIt.js} +7 -7
- package/dist/mcp/{ElectronFileScope-BPG_YoyU.js → ElectronFileScope-FXtK0d6I.js} +1 -1
- package/dist/mcp/ElectronFuseFailures-uZ_wOV6T.js +610 -0
- package/dist/mcp/MachoLoadCommandReader-C2VGgHA3.js +330 -0
- package/dist/mcp/{ManagedStaticProvider-BthZbKyZ.js → ManagedStaticProvider-CZuoPme2.js} +429 -131
- package/dist/mcp/{NativeMacOSProvider-Bh79k8dI.js → NativeMacOSProvider-CMguKrvN.js} +1376 -748
- package/dist/mcp/{NativeMacOSProviderMetadata-N1lPOaY_.js → NativeMacOSProviderMetadata-B_RH4KXF.js} +97 -7
- package/dist/mcp/{ProviderDeadline-DskQ94YD.js → OwnedCommand-BW1jBSt9.js} +436 -127
- package/dist/mcp/ProcedureAddressResolution-H6Qwpb_Y.js +59 -0
- package/dist/mcp/{WorkflowEvidence-umWrB_wm.js → WorkflowEvidence-CO4C7ALz.js} +16 -9
- package/dist/mcp/analysisErrorCleanup-Q344SnTO.js +34 -0
- package/dist/mcp/analysisErrorCore-BIEP7tvF.js +509 -0
- package/dist/mcp/{analysisErrorProjection-BN0EPM-3.js → analysisErrorProjection-B8teQwwD.js} +80 -30
- package/dist/mcp/{artifactToolContracts-Di4qZlEt.js → artifactToolContracts-C9dRDo-D.js} +6 -4
- package/dist/mcp/{browserObservation-C0s4i8UI.js → browserObservation-DUraZs62.js} +272 -107
- package/dist/mcp/{browserObservationError-CyLugqX4.js → browserObservationError-C5okJ5el.js} +27 -4
- package/dist/mcp/{browserObservationSchemas-tgqjH7aA.js → browserObservationSchemas-DwGGxBpu.js} +3 -3
- package/dist/mcp/{browserScenario-CAQ8Fns9.js → browserScenario-BRUz7yN0.js} +844 -358
- package/dist/mcp/{browserScenarioCapture-CTNFN-FI.js → browserScenarioCapture-CiMAsMx8.js} +127 -11
- package/dist/mcp/{InterfaceBuilderDecodeBudget-5F2AkxJT.js → callerPath-CpPnMZyN.js} +91 -65
- package/dist/mcp/{electronActiveObservation-lDvQTMR0.js → electronActiveObservation-DV0Ffy9X.js} +1 -0
- package/dist/mcp/electronFuses-D5SS7XXw.js +367 -0
- package/dist/mcp/{electronObservation-i7LcILQ-.js → electronObservation-DsN-NqY1.js} +134 -75
- package/dist/mcp/{electronObservation-DFOFEood.js → electronObservation-wOYWwqgF.js} +3 -3
- package/dist/mcp/{electronScenario-nCzE6IfJ.js → electronScenario-CYrt2zBK.js} +395 -135
- package/dist/mcp/{emptyArraySchema-tL6Qymyd.js → emptyArraySchema-C0o2Sxwp.js} +2 -2
- package/dist/mcp/{enhancedInputs-DgdEnzHy.js → enhancedInputs-6CCgB3VB.js} +1 -1
- package/dist/mcp/{javascriptRuntimeObservation-61NhCf7H.js → javascriptRuntimeObservation-BVbhkO2-.js} +12 -9
- package/dist/mcp/{javascriptRuntimeObservation-PIUoLfX6.js → javascriptRuntimeObservation-Cu0Yedqq.js} +2 -2
- package/dist/mcp/{lipo-Bnkoq_6W.js → lipo-DSTgUqL1.js} +11 -118
- package/dist/mcp/{logger-BQY5ulYv.js → logger-BGdGHadX.js} +2 -2
- package/dist/mcp/machoContainer-CMSxUBlK.js +605 -0
- package/dist/mcp/{main-kBXHZ8S5.js → main-Cx-Z7m_n.js} +16788 -5902
- package/dist/mcp/main.js +1 -1
- package/dist/mcp/{managedToolContracts-CK--I_s7.js → managedToolContracts-CSlbKJP-.js} +3 -3
- package/dist/mcp/{nativeValueTrace-DR9UE62L.js → nativeValueTrace-BEZbDieM.js} +2630 -2468
- package/dist/mcp/{officialToolContracts-B67NJ2tC.js → officialToolContracts-CauCcSsc.js} +74 -55
- package/dist/mcp/peMachine-aP1iYnHq.js +95 -0
- package/dist/mcp/propertyListKeys-BfCo0k4w.js +356 -0
- package/dist/mcp/providerCleanupError-DIRHxzWo.js +125 -0
- package/dist/mcp/{providerOperationHealth-CTYa3iLf.js → providerOperationHealth-9DRSGM8N.js} +24 -1
- package/dist/mcp/{scanCanonical-CRXSpule.js → scanCanonical-CF3ATd1V.js} +269 -463
- package/dist/mcp/{serverIdentity-Cio4iFV3.js → serverIdentity-BK0Ejd_Y.js} +262 -83
- package/dist/mcp/{sourceMapEnvelope-C0uJlrOh.js → sourceMapEnvelope-DAaRUIGj.js} +4 -4
- package/dist/mcp/{toolContracts-BW05wpcr.js → toolContracts-BPoHQdlC.js} +541 -327
- package/dist/mcp/{toolOutputSchemaGroups-ColvNZ1r.js → toolOutputSchemaGroups-MJ_f-PMK.js} +2551 -2354
- package/dist/mcp/{webContentArtifact-Dzjc1z-R.js → webContentArtifact-DfGkgDcI.js} +2 -17
- package/dist/mcp/{webRuntime-K__NYzXm.js → webRuntime-ccyhkRru.js} +2 -2
- package/dist/mcp/{webSourceLocation-DbMAT2J9.js → webSourceLocation-DKIum0vJ.js} +6451 -4414
- package/dist/mcpDoctor.js +4 -2
- package/dist/mcpStartupPolicy.js +18 -3
- package/dist/native/AppleDispatchMetadata.js +76 -27
- package/dist/native/AppleMachoFixups.js +20 -10
- package/dist/native/AppleObjcCategories.js +12 -1
- package/dist/native/AppleObjcDispatchFacets.js +21 -12
- package/dist/native/AppleObjcProperties.js +61 -17
- package/dist/native/AppleObjcProtocols.js +25 -7
- package/dist/native/AppleSwiftVtables.js +2 -0
- package/dist/native/CommandRunner.js +13 -9
- package/dist/native/LldbCallTracer.js +232 -178
- package/dist/native/LldbReadbackFiles.js +70 -0
- package/dist/native/LldbRetainedObservations.js +28 -56
- package/dist/native/NativeCallObservation.js +53 -52
- package/dist/native/NativeCallTarget.js +95 -0
- package/dist/native/NativeMacOSProvider.js +240 -171
- package/dist/native/NativeMachoInspection.js +21 -7
- package/dist/native/NativePlistSource.js +179 -0
- package/dist/native/NativeUiCleanupError.js +30 -0
- package/dist/native/NativeUiHelperRuntime.js +48 -35
- package/dist/native/NativeUiObservation.js +67 -45
- package/dist/native/SignatureTargetBinding.js +72 -53
- package/dist/native/parsers/demangle.js +16 -12
- package/dist/native/parsers/machoUuid.js +4 -4
- package/dist/native/parsers/otool.js +57 -17
- package/dist/native/parsers/plist.js +40 -25
- package/dist/native/pe/PeResourceLayout.js +22 -7
- package/dist/native/pe/PeResourceParser.js +10 -9
- package/dist/native/pe/PeResourcesProvider.js +63 -16
- package/dist/native/pwndbg/CoreFileMappingAuthority.js +51 -0
- package/dist/native/pwndbg/PwndbgCoreContext.js +26 -15
- package/dist/native/pwntools/PwntoolsDecoder.js +116 -53
- package/dist/native/pwntools/PwntoolsFailures.js +17 -3
- package/dist/native/pwntools/PwntoolsRecordedCrashProvider.js +11 -1
- package/dist/objdump/ObjdumpCommand.js +5 -2
- package/dist/pcap/PcapOutput.js +38 -2
- package/dist/pcap/PcapProvider.js +45 -15
- package/dist/pcap/PcapSnapshot.js +24 -4
- package/dist/process/ArtifactAnalysisResources.js +145 -52
- package/dist/process/BoundedFileBytes.js +8 -3
- package/dist/process/CurrentEntrypointPath.js +3 -1
- package/dist/process/DarwinProcessRunTokenReader.js +174 -63
- package/dist/process/DetachedPgpSignature.js +57 -0
- package/dist/process/ExecFileOutput.js +14 -11
- package/dist/{hopper/HopperTargetLease.js → process/HopperLease.js} +10 -0
- package/dist/process/LinuxResourceLimits.js +4 -24
- package/dist/process/OwnedCommand.js +109 -14
- package/dist/process/ProviderProcess.js +129 -10
- package/dist/process/RegexMatcher.js +96 -0
- package/dist/process/SharedStartupAttempt.js +59 -0
- package/dist/process/WindowsAuthority.js +1 -1
- package/dist/process/capture/FilesystemSnapshot.js +3 -2
- package/dist/process/capture/ProcessCaptureError.js +55 -17
- package/dist/process/capture/ProcessCaptureLifecycle.js +17 -20
- package/dist/process/capture/ProcessCaptureProgress.js +5 -3
- package/dist/process/capture/ProcessHarness.js +17 -3
- package/dist/process/snapshotEnvironment.js +8 -8
- package/dist/{application/binary → providers}/AnalysisClientCleanup.js +3 -3
- package/dist/providers/AnalysisClientCreation.js +193 -0
- package/dist/providers/AnalysisClientFailure.js +191 -0
- package/dist/providers/DeferredAnalysisClient.js +48 -0
- package/dist/providers/OwnedCommandCleanup.js +65 -0
- package/dist/providers/ProviderInspectionScope.js +10 -0
- package/dist/recordedCatalogDigests.js +2 -0
- package/dist/reference/ReferenceSourceReader.js +64 -0
- package/dist/reference/ReferenceSourceReaderEntries.js +12 -3
- package/dist/reference/ReferenceSourceReaderFile.js +2 -1
- package/dist/rizin/RizinCommand.js +2 -2
- package/dist/rizin/RizinDebugSessionManager.js +249 -210
- package/dist/rust/RustBinaryProvider.js +55 -23
- package/dist/server/EvidenceMcpServer.js +2 -2
- package/dist/server/contractToolHandler.js +17 -11
- package/dist/server/createServer.js +27 -8
- package/dist/server/promptCompletion.js +24 -22
- package/dist/server/registerArtifactComparisonTool.js +13 -2
- package/dist/server/registerBrowserScenarioTool.js +7 -5
- package/dist/server/registerBrowserTools.js +2 -4
- package/dist/server/registerCutterTools.js +2 -3
- package/dist/server/registerElectronTools.js +2 -13
- package/dist/server/registerFridaTools.js +8 -12
- package/dist/server/registerInvestigationTools.js +20 -20
- package/dist/server/registerJavaScriptRuntimeObservationTools.js +2 -4
- package/dist/server/registerManagedWorkflowTools/evidence.js +14 -7
- package/dist/server/registerProcessComparisonTool.js +3 -0
- package/dist/server/registerSessionStatusTool.js +13 -6
- package/dist/server/registerSessionTools.js +16 -29
- package/dist/server/runDerivedOperation.js +2 -0
- package/dist/signals/SigrokRecordingProvider.js +13 -6
- package/dist/sqlite/SqliteDatabaseFailures.js +25 -12
- package/dist/sqlite/SqliteDatabaseInspection.js +27 -12
- package/dist/sqlite/SqliteDatabaseSnapshot.js +58 -32
- package/dist/sqlite/SqliteDatabaseWorkerExecution.js +18 -3
- package/dist/wasm/WabtArtifactProvider.js +64 -42
- package/dist/wasm/WabtFailures.js +19 -1
- package/dist/wasm/WabtRuntime.js +58 -0
- package/dist/wasm/WasmGlueAdapter.js +20 -7
- package/dist/windows/WindowsNativeLoader.js +16 -2
- package/dist/windows/WindowsPrivateRuntime.js +44 -1
- package/licenses/npm-dependencies.txt +146 -1
- package/licenses/npm-runtime-notices.txt +175 -1
- package/native/windows/README.md +44 -7
- package/native/windows/build/manifest.json +2 -2
- package/native/windows/build/rea-windows-x64.node +0 -0
- package/package.json +11 -3
- package/scripts/electron-active-hook-boundaries.cjs +15 -2
- package/scripts/electron-active-hook.cjs +408 -46
- package/scripts/hopper-demo-x11.py +12 -10
- package/scripts/rea.mjs +62 -15
- package/skills/reverse-engineer-anything/SKILL.md +21 -7
- package/skills/reverse-engineer-anything/references/android-applications.md +3 -1
- package/skills/reverse-engineer-anything/references/javascript-applications.md +44 -1
- package/skills/reverse-engineer-anything/references/native-and-artifacts.md +30 -10
- package/dist/cli-runtime/ArtifactResourceScope-DQWTcUwE.js +0 -114
- package/dist/cli-runtime/ClientConfigPath-c6jr6INc.js +0 -36
- package/dist/cli-runtime/IdaConfiguration-CtGP7EKo.js +0 -1094
- package/dist/cli-runtime/JebMcpEndpoint-DUytrn5G.js +0 -428
- package/dist/cli-runtime/MacHopperPaths-CwL5lYPX.js +0 -434
- package/dist/cli-runtime/OwnedCommand-Cj9GhmPR.js +0 -112
- package/dist/cli-runtime/RegularFile-B_6KPCNQ.js +0 -139
- package/dist/cli-runtime/RegularFileRead-DVlC5faM.js +0 -125
- package/dist/cli-runtime/analysisErrorPresentation-DGt7TdsH.js +0 -497
- package/dist/cli-runtime/application__javascript__ElectronObservationService-DEsR8KDN.js +0 -63
- package/dist/cli-runtime/artifactOperationError-B7n03FbD.js +0 -27
- package/dist/cli-runtime/browserObservationError-Dx6xRTjb.js +0 -40
- package/dist/cli-runtime/cliResultOutput-DsRMI8CJ.js +0 -780
- package/dist/cli-runtime/mcpStartupPolicy-CVVSOmRc.js +0 -21
- package/dist/cli-runtime/propertyListKeys-G8e74YWb.js +0 -248
- package/dist/cli-runtime/providerAdapterError-DAjhICdr.js +0 -25
- package/dist/cli-runtime/readFileHandleChunks-dp60iZ6v.js +0 -38
- package/dist/hopper/HopperRegexWorker.js +0 -27
- package/dist/mcp/ArtifactProviderMetadata-b7pOK5_t.js +0 -76
- package/dist/mcp/ArtifactResourceScope-P3tq5z8Z.js +0 -162
- package/dist/mcp/BoundedFileBytes-DuczXiQZ.js +0 -68
- package/dist/mcp/CdpTargetSession-BsPoKhEU.js +0 -86
- package/dist/mcp/ProcedureAddressResolution-CQpuwm1h.js +0 -19
- package/dist/mcp/analysisErrorCore-DXRTvF_m.js +0 -235
- package/dist/mcp/artifactOperationError-CkHMMaf7.js +0 -27
- package/dist/mcp/digests-BFoWUT_-.js +0 -223
- package/dist/mcp/propertyListKeys-DD25WsjI.js +0 -553
- package/dist/mcp/providerAdapterError-sDxToNal.js +0 -25
- package/dist/mcp/unicodeCodePointOrder-BezCbTpg.js +0 -26
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import { analysisErrorWithCleanupFailure } from "../domain/analysisErrorCleanup.js";
|
|
2
|
+
import { artifactFilePrimaryFailure } from "../artifacts/ArtifactFileOperation.js";
|
|
2
3
|
import { fileURLToPath } from "node:url";
|
|
4
|
+
import { GHIDRA_BRIDGE_SOURCES } from "./GhidraBridgeSources.js";
|
|
3
5
|
import { createAnalysisExecution, } from "../application/AnalysisProvider.js";
|
|
4
6
|
import { ghidraSeedCommitmentSchema, ghidraSeedFailure, ghidraSeedLimitations, } from "./GhidraAnalysisSeeds.js";
|
|
5
7
|
import { ghidraPinnedLanguage, ghidraProfileDisabledAnalyzers, ghidraProfileLanguageOverride, sameGhidraDisabledAnalyzers, sameGhidraLanguageOverride, } from "./GhidraAnalysisProfile.js";
|
|
@@ -17,171 +19,24 @@ import { isGhidraPspTarget, GHIDRA_PSP_LIMITATIONS, } from "./GhidraPspProfile.j
|
|
|
17
19
|
import { ghidraPspExtensionSchema } from "./GhidraPspExtension.js";
|
|
18
20
|
import { GHIDRA_MIPS_SOFT_FLOAT_STORAGE, ghidraMipsSoftFloatFailure, ghidraMipsRelocatableLimitations, ghidraMipsSharedLimitations, ghidraMipsSoftFloatLimitations, isGhidraMipsSoftFloatTarget, } from "./GhidraMipsProfile.js";
|
|
19
21
|
import { ghidraRiscvLimitations } from "./GhidraRiscvProfile.js";
|
|
20
|
-
import {
|
|
21
|
-
import { unverifiedGhidraBuildLimitation } from "./
|
|
22
|
+
import { ghidraPePdbLimitations } from "./GhidraPeProfile.js";
|
|
23
|
+
import { unverifiedGhidraBuildLimitation } from "./GhidraReleasePolicy.js";
|
|
22
24
|
import { GhidraHeadlessLauncher } from "./GhidraLauncher.js";
|
|
23
25
|
import { attestGhidraNativeLoadImage } from "./GhidraLoadImageAttest.js";
|
|
24
|
-
import {
|
|
25
|
-
import { ABORTED, waitForAbortable } from "../process/AbortablePromise.js";
|
|
26
|
-
import { nativeLoadImageObservationSchema } from "../domain/native/nativeLoadImage.js";
|
|
26
|
+
import { GhidraNativeAotSnapshotOwner } from "./GhidraNativeAotSnapshotOwner.js";
|
|
27
27
|
import { GHIDRA_PROVIDER_IDENTITY, healthLimitations, windowsP0Limitations, limitationsFor, } from "./GhidraProviderCapabilities.js";
|
|
28
|
-
import {
|
|
28
|
+
import { GHIDRA_STARTUP_DEADLINE_ELAPSED, } from "./GhidraSessionError.js";
|
|
29
29
|
import { ghidraExtensionFailure } from "./extensions/GhidraExtensionFailures.js";
|
|
30
30
|
import { ghidraExtensionSchema, validateGhidraExtensionProfile, ghidraExtensionLimitations, } from "./extensions/GhidraExtensions.js";
|
|
31
31
|
import { inspectWindowsNativeReadiness } from "../process/WindowsAuthority.js";
|
|
32
32
|
import { ghidraRawBinaryLanguage } from "./GhidraRawBinaryLanguage.js";
|
|
33
|
-
/** Own one session's captured PE snapshot and immutable NativeAOT derivation. */
|
|
34
|
-
const createNativeAotSnapshotOwner = (input) => {
|
|
35
|
-
const { client, target, startupTimeoutMs } = input;
|
|
36
|
-
const controller = new AbortController();
|
|
37
|
-
let identity;
|
|
38
|
-
let result;
|
|
39
|
-
let pending;
|
|
40
|
-
let closed = false;
|
|
41
|
-
let identityConflict = false;
|
|
42
|
-
let identityConflictObservation;
|
|
43
|
-
const identityError = (operation, reason, observedBase, observations) => new ProviderAdapterError("ghidra", operation, {
|
|
44
|
-
diagnostics: {
|
|
45
|
-
reason,
|
|
46
|
-
artifact_sha256: target.sha256,
|
|
47
|
-
bound_image_base: identity === undefined
|
|
48
|
-
? null
|
|
49
|
-
: `0x${identity.slice(target.sha256.length + 1)}`,
|
|
50
|
-
observed_image_base: observedBase,
|
|
51
|
-
measured_observation: observations,
|
|
52
|
-
conflicting_image_base: identityConflictObservation?.imageBase ?? null,
|
|
53
|
-
conflicting_observation: identityConflictObservation?.observations ?? null,
|
|
54
|
-
},
|
|
55
|
-
});
|
|
56
|
-
const identityConflictFailure = (operation, observedBase, observations) => {
|
|
57
|
-
return err(identityError(operation, "The Ghidra session reported conflicting loaded image bases; reopen the analysis session to establish a new identity.", observedBase, observations));
|
|
58
|
-
};
|
|
59
|
-
const derive = async (imageBase, operation, callerSignal, observations) => {
|
|
60
|
-
if (callerSignal?.aborted || closed)
|
|
61
|
-
return err(new AnalysisCancelledError(operation));
|
|
62
|
-
if (identityConflict)
|
|
63
|
-
return identityConflictFailure(operation, imageBase, observations);
|
|
64
|
-
if (controller.signal.aborted)
|
|
65
|
-
return err(new AnalysisCancelledError(operation));
|
|
66
|
-
let normalizedBase;
|
|
67
|
-
try {
|
|
68
|
-
normalizedBase = BigInt(imageBase).toString(16);
|
|
69
|
-
}
|
|
70
|
-
catch (cause) {
|
|
71
|
-
return err(new ProviderAdapterError("ghidra", operation, {
|
|
72
|
-
diagnostics: {
|
|
73
|
-
reason: "Ghidra returned an invalid loaded image base for NativeAOT identity binding.",
|
|
74
|
-
artifact_sha256: target.sha256,
|
|
75
|
-
observed_image_base: imageBase,
|
|
76
|
-
measured_observation: observations,
|
|
77
|
-
},
|
|
78
|
-
cause,
|
|
79
|
-
}));
|
|
80
|
-
}
|
|
81
|
-
const key = `${target.sha256}:${normalizedBase}`;
|
|
82
|
-
if (identity !== undefined && identity !== key) {
|
|
83
|
-
identityConflict = true;
|
|
84
|
-
identityConflictObservation = { imageBase, observations };
|
|
85
|
-
result = undefined;
|
|
86
|
-
controller.abort();
|
|
87
|
-
return err(identityError(operation, "The Ghidra session reported a different loaded image base after NativeAOT metadata was bound to its captured snapshot; reopen the analysis session to establish a new identity.", imageBase, observations));
|
|
88
|
-
}
|
|
89
|
-
identity ??= key;
|
|
90
|
-
if (result !== undefined) {
|
|
91
|
-
const settled = await waitForAbortable(Promise.resolve(ok(result)), callerSignal);
|
|
92
|
-
if (closed)
|
|
93
|
-
return err(new AnalysisCancelledError(operation));
|
|
94
|
-
if (identityConflict)
|
|
95
|
-
return identityConflictFailure(operation, imageBase, observations);
|
|
96
|
-
if (controller.signal.aborted)
|
|
97
|
-
return err(new AnalysisCancelledError(operation));
|
|
98
|
-
return settled === ABORTED
|
|
99
|
-
? err(new AnalysisCancelledError(operation))
|
|
100
|
-
: settled;
|
|
101
|
-
}
|
|
102
|
-
if (pending !== undefined && pending.identity !== key)
|
|
103
|
-
return err(identityError(operation, "A NativeAOT snapshot derivation is already bound to a different loaded image base.", imageBase, observations));
|
|
104
|
-
if (pending === undefined) {
|
|
105
|
-
const promise = (async () => {
|
|
106
|
-
try {
|
|
107
|
-
if (client.readTargetSnapshot === undefined)
|
|
108
|
-
return err(new ProviderAdapterError("ghidra", operation, {
|
|
109
|
-
diagnostics: {
|
|
110
|
-
reason: "The Ghidra client does not expose its immutable target snapshot for NativeAOT metadata inspection.",
|
|
111
|
-
},
|
|
112
|
-
}));
|
|
113
|
-
const snapshot = await client.readTargetSnapshot(NATIVE_AOT_MAX_SOURCE_BYTES, controller.signal);
|
|
114
|
-
if (!snapshot.ok)
|
|
115
|
-
return err(projectSessionError(operation, snapshot.error, startupTimeoutMs));
|
|
116
|
-
if (closed)
|
|
117
|
-
return err(new AnalysisCancelledError(operation));
|
|
118
|
-
if (identityConflict)
|
|
119
|
-
return identityConflictFailure(operation, imageBase, observations);
|
|
120
|
-
if (controller.signal.aborted)
|
|
121
|
-
return err(new AnalysisCancelledError(operation));
|
|
122
|
-
const parsed = snapshot.value.kind === "over-capacity"
|
|
123
|
-
? {
|
|
124
|
-
summary: nativeAotSnapshotOverCapacity(target.sha256, snapshot.value.sourceBytesAtLeast, NATIVE_AOT_MAX_REPORT_BYTES),
|
|
125
|
-
readTypeDetail: () => undefined,
|
|
126
|
-
}
|
|
127
|
-
: parseNativeAotPe(snapshot.value.bytes, target.sha256, NATIVE_AOT_MAX_REPORT_BYTES, imageBase);
|
|
128
|
-
if (closed)
|
|
129
|
-
return err(new AnalysisCancelledError(operation));
|
|
130
|
-
if (identityConflict)
|
|
131
|
-
return identityConflictFailure(operation, imageBase, observations);
|
|
132
|
-
if (controller.signal.aborted)
|
|
133
|
-
return err(new AnalysisCancelledError(operation));
|
|
134
|
-
return ok(parsed);
|
|
135
|
-
}
|
|
136
|
-
catch (cause) {
|
|
137
|
-
return err(new ProviderAdapterError("ghidra", operation, {
|
|
138
|
-
diagnostics: {
|
|
139
|
-
reason: cause instanceof Error
|
|
140
|
-
? cause.message
|
|
141
|
-
: "NativeAOT metadata could not be derived from the captured target snapshot.",
|
|
142
|
-
},
|
|
143
|
-
cause,
|
|
144
|
-
}));
|
|
145
|
-
}
|
|
146
|
-
})();
|
|
147
|
-
const current = { identity: key, promise };
|
|
148
|
-
pending = current;
|
|
149
|
-
void promise.then((settled) => {
|
|
150
|
-
if (pending !== current)
|
|
151
|
-
return;
|
|
152
|
-
pending = undefined;
|
|
153
|
-
if (settled.ok && !closed && !identityConflict)
|
|
154
|
-
result = settled.value;
|
|
155
|
-
});
|
|
156
|
-
}
|
|
157
|
-
const settled = await waitForAbortable(pending.promise, callerSignal);
|
|
158
|
-
if (closed)
|
|
159
|
-
return err(new AnalysisCancelledError(operation));
|
|
160
|
-
if (identityConflict)
|
|
161
|
-
return identityConflictFailure(operation, imageBase, observations);
|
|
162
|
-
if (controller.signal.aborted)
|
|
163
|
-
return err(new AnalysisCancelledError(operation));
|
|
164
|
-
return settled === ABORTED
|
|
165
|
-
? err(new AnalysisCancelledError(operation))
|
|
166
|
-
: settled;
|
|
167
|
-
};
|
|
168
|
-
return {
|
|
169
|
-
derive,
|
|
170
|
-
readTypeDetail: (address) => result?.readTypeDetail(address, NATIVE_AOT_MAX_REPORT_BYTES),
|
|
171
|
-
close: () => {
|
|
172
|
-
closed = true;
|
|
173
|
-
controller.abort();
|
|
174
|
-
result = undefined;
|
|
175
|
-
pending = undefined;
|
|
176
|
-
},
|
|
177
|
-
};
|
|
178
|
-
};
|
|
179
33
|
/** Build one AnalysisClient for an admitted Ghidra target and profile. */
|
|
180
34
|
export const createGhidraProviderClient = (input) => {
|
|
181
|
-
const { config, logger, clientFactory,
|
|
182
|
-
const
|
|
35
|
+
const { config, logger, clientFactory, context, installation } = input;
|
|
36
|
+
const { target, profile } = input.admission;
|
|
37
|
+
const prerequisites = ghidraClientPrerequisites(profile, installation);
|
|
183
38
|
if (!prerequisites.ok)
|
|
184
|
-
return
|
|
39
|
+
return err(prerequisites.error);
|
|
185
40
|
const committedProfile = prerequisites.value.profile;
|
|
186
41
|
const psp = isGhidraPspTarget(target);
|
|
187
42
|
const pspExtension = psp
|
|
@@ -191,7 +46,7 @@ export const createGhidraProviderClient = (input) => {
|
|
|
191
46
|
(!pspExtension.success ||
|
|
192
47
|
committedProfile.parameters.language_id !== "Allegrex:LE:32:default" ||
|
|
193
48
|
committedProfile.parameters.loader !== "PspElfLoader"))
|
|
194
|
-
return
|
|
49
|
+
return err(new ProviderAdapterError("ghidra", "open_binary", {
|
|
195
50
|
diagnostics: {
|
|
196
51
|
reason: "Resolve the supported PSP profile and installed Allegrex extension before opening the session.",
|
|
197
52
|
},
|
|
@@ -200,7 +55,7 @@ export const createGhidraProviderClient = (input) => {
|
|
|
200
55
|
if (softFloat !==
|
|
201
56
|
(committedProfile.parameters.mips_soft_float_storage ===
|
|
202
57
|
GHIDRA_MIPS_SOFT_FLOAT_STORAGE))
|
|
203
|
-
return
|
|
58
|
+
return err(new ProviderAdapterError("ghidra", "open_binary", {
|
|
204
59
|
diagnostics: {
|
|
205
60
|
reason: "Resolve the soft-float MIPS storage policy into the analysis profile before opening the session.",
|
|
206
61
|
},
|
|
@@ -211,7 +66,7 @@ export const createGhidraProviderClient = (input) => {
|
|
|
211
66
|
if (!extensionProfile.success ||
|
|
212
67
|
(config.ghidraNativeAotJar !== undefined &&
|
|
213
68
|
extensionProfile.data.length === 0))
|
|
214
|
-
return
|
|
69
|
+
return err(new ProviderAdapterError("ghidra", "open_binary", {
|
|
215
70
|
diagnostics: {
|
|
216
71
|
reason: "Resolve the configured Ghidra extensions into an analysis profile before opening the session.",
|
|
217
72
|
},
|
|
@@ -222,7 +77,7 @@ export const createGhidraProviderClient = (input) => {
|
|
|
222
77
|
.safeParse(committedProfile.parameters.analysis_seeds);
|
|
223
78
|
if (!seedProfile.success ||
|
|
224
79
|
(config.ghidraSeedFile === undefined) !== (seedProfile.data === undefined))
|
|
225
|
-
return
|
|
80
|
+
return err(new ProviderAdapterError("ghidra", "open_binary", {
|
|
226
81
|
diagnostics: {
|
|
227
82
|
reason: "Resolve REA_GHIDRA_SEED_FILE into an analysis profile before opening the session.",
|
|
228
83
|
},
|
|
@@ -232,7 +87,7 @@ export const createGhidraProviderClient = (input) => {
|
|
|
232
87
|
const pinnedLanguage = ghidraPinnedMipsLanguage(committedProfile.parameters);
|
|
233
88
|
const targetLanguage = ghidraPinnedLanguage(target);
|
|
234
89
|
if (pinnedLanguage !== undefined && targetLanguage === undefined)
|
|
235
|
-
return
|
|
90
|
+
return err(new ProviderAdapterError("ghidra", "open_binary", {
|
|
236
91
|
diagnostics: {
|
|
237
92
|
reason: "The committed profile pins a MIPS language that the current target does not establish; reopen an admitted target to resolve a new profile.",
|
|
238
93
|
},
|
|
@@ -242,13 +97,13 @@ export const createGhidraProviderClient = (input) => {
|
|
|
242
97
|
// override conflicts with the legacy pin; the slot itself carries it.
|
|
243
98
|
if (pinnedLanguage !== undefined &&
|
|
244
99
|
config.ghidraLanguageOverride !== undefined)
|
|
245
|
-
return
|
|
100
|
+
return err(new ProviderAdapterError("ghidra", "open_binary", {
|
|
246
101
|
diagnostics: {
|
|
247
102
|
reason: "The committed legacy MIPS profile pins its import language; REA_GHIDRA_LANGUAGE_ID/REA_GHIDRA_COMPILER_SPEC_ID cannot be combined with it. Reopen the target without the override.",
|
|
248
103
|
},
|
|
249
104
|
}));
|
|
250
105
|
if (!sameGhidraLanguageOverride(parameterLanguage, config.ghidraLanguageOverride ?? targetLanguage))
|
|
251
|
-
return
|
|
106
|
+
return err(new ProviderAdapterError("ghidra", "open_binary", {
|
|
252
107
|
diagnostics: {
|
|
253
108
|
reason: "The committed analysis profile and REA_GHIDRA_LANGUAGE_ID/REA_GHIDRA_COMPILER_SPEC_ID differ; reopen the target to resolve a new profile.",
|
|
254
109
|
},
|
|
@@ -258,21 +113,20 @@ export const createGhidraProviderClient = (input) => {
|
|
|
258
113
|
const importLanguage = parameterLanguage;
|
|
259
114
|
const disabledAnalyzers = ghidraProfileDisabledAnalyzers(committedProfile.parameters);
|
|
260
115
|
if (!sameGhidraDisabledAnalyzers(disabledAnalyzers, config.ghidraDisabledAnalyzers))
|
|
261
|
-
return
|
|
116
|
+
return err(new ProviderAdapterError("ghidra", "open_binary", {
|
|
262
117
|
diagnostics: {
|
|
263
118
|
reason: "The committed analysis profile and REA_GHIDRA_DISABLED_ANALYZERS differ; reopen the target to resolve a new profile.",
|
|
264
119
|
},
|
|
265
120
|
}));
|
|
266
121
|
const invalidProfile = validateGhidraExtensionProfile(extensions, config, target, installation.platform);
|
|
267
122
|
if (invalidProfile !== null)
|
|
268
|
-
return
|
|
123
|
+
return err(new ProviderAdapterError("ghidra", "open_binary", {
|
|
269
124
|
diagnostics: { reason: invalidProfile },
|
|
270
125
|
}));
|
|
271
126
|
let extensionFailure;
|
|
272
127
|
// Replaced by the reported outcome once the session handshake is checked.
|
|
273
128
|
const seedLimitations = [...ghidraSeedLimitations(seeds)];
|
|
274
129
|
const pdbLimitations = [];
|
|
275
|
-
let pdbLoaded;
|
|
276
130
|
// Replaced by the reported storage outcome once the handshake is checked.
|
|
277
131
|
const softFloatLimitations = [
|
|
278
132
|
...ghidraMipsSoftFloatLimitations(softFloat),
|
|
@@ -290,13 +144,11 @@ export const createGhidraProviderClient = (input) => {
|
|
|
290
144
|
...(target.format === "raw-binary"
|
|
291
145
|
? [
|
|
292
146
|
"Headerless raw-binary analysis uses the caller-supplied architecture and entry address; file offset 0 is mapped at that address. Headers are not discovered from file bytes.",
|
|
293
|
-
"Little-endian generic Ghidra languages are used for x86, x86_64, arm, arm64, and NMOS 6502. Big-endian, Thumb-only, Cortex-M, 65C02, 65816, and other processor variants are unsupported in this increment.",
|
|
147
|
+
"Little-endian generic Ghidra languages are used for x86, x86_64, arm, arm64, and NMOS 6502; m68k uses the big-endian 68000 default language, which decodes the 68040 superset. Big-endian ARM, Thumb-only, Cortex-M, 65C02, 65816, separate 68020/68030/CPU32/ColdFire variants, and other processor variants are unsupported in this increment.",
|
|
294
148
|
"Static analysis does not emulate reset vectors, memory-mapped I/O, or firmware boot sequences.",
|
|
295
149
|
]
|
|
296
150
|
: []),
|
|
297
|
-
...(target.
|
|
298
|
-
? (target.mips.limitations ?? [])
|
|
299
|
-
: []),
|
|
151
|
+
...(target.architecture === "mips" ? (target.mips.limitations ?? []) : []),
|
|
300
152
|
...(committedProfile.parameters.mips_abi_basis ===
|
|
301
153
|
"inferred-o32-assumption-v1"
|
|
302
154
|
? [
|
|
@@ -315,17 +167,23 @@ export const createGhidraProviderClient = (input) => {
|
|
|
315
167
|
"macOS sessions require a matching executable Ghidra native decompiler; REA checks for it but does not build native components or change Gatekeeper quarantine state.",
|
|
316
168
|
]
|
|
317
169
|
: [];
|
|
170
|
+
if (input.signal.aborted)
|
|
171
|
+
return err(new AnalysisCancelledError("create_analysis_client", {
|
|
172
|
+
cause: input.signal.reason,
|
|
173
|
+
diagnostics: ghidraInstallationDiagnostics(installation),
|
|
174
|
+
}));
|
|
318
175
|
const client = clientFactory({
|
|
319
176
|
startupTimeoutMs: config.ghidraStartupTimeoutMs,
|
|
320
177
|
platform: installation.platform,
|
|
321
178
|
launcher: new GhidraHeadlessLauncher({
|
|
322
179
|
environment: input.environment,
|
|
323
180
|
analyzeHeadlessPath: prerequisites.value.analyzeHeadlessPath,
|
|
181
|
+
configurationDirectoryName: prerequisites.value.configurationDirectoryName,
|
|
324
182
|
javaHome: prerequisites.value.javaHome,
|
|
325
183
|
...(installation.javaVmName === undefined
|
|
326
184
|
? {}
|
|
327
185
|
: { javaVmName: installation.javaVmName }),
|
|
328
|
-
bridgeScriptPath: fileURLToPath(new URL(
|
|
186
|
+
bridgeScriptPath: fileURLToPath(new URL(`../../bridge/ghidra/${GHIDRA_BRIDGE_SOURCES.bridge}`, import.meta.url)),
|
|
329
187
|
...(pspExtension?.success === true
|
|
330
188
|
? { pspExtension: pspExtension.data }
|
|
331
189
|
: {}),
|
|
@@ -393,8 +251,7 @@ export const createGhidraProviderClient = (input) => {
|
|
|
393
251
|
const lostProviderHealth = () => providerStarted ? client.operationHealthSnapshot?.() : undefined;
|
|
394
252
|
const checkSessionObservations = async (operation, info) => {
|
|
395
253
|
if (target.format === "pe") {
|
|
396
|
-
|
|
397
|
-
pdbLimitations.splice(0, pdbLimitations.length, ...ghidraPdbLimitations(info.pdb));
|
|
254
|
+
pdbLimitations.splice(0, pdbLimitations.length, ...ghidraPePdbLimitations(target, info.pdb));
|
|
398
255
|
}
|
|
399
256
|
const softFloatReason = ghidraMipsSoftFloatFailure(softFloat, info.mips_soft_float_storage);
|
|
400
257
|
extensionFailure =
|
|
@@ -425,14 +282,13 @@ export const createGhidraProviderClient = (input) => {
|
|
|
425
282
|
...ghidraExtensionLimitations(extensions),
|
|
426
283
|
...seedLimitations,
|
|
427
284
|
...pdbLimitations,
|
|
428
|
-
...ghidraPeCodeViewLimitations(target, pdbLoaded),
|
|
429
285
|
...(releaseLimitation === undefined ? [] : [releaseLimitation]),
|
|
430
286
|
];
|
|
431
287
|
const nativeAotOwner = target.format === "pe"
|
|
432
|
-
?
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
288
|
+
? new GhidraNativeAotSnapshotOwner({
|
|
289
|
+
targetSha256: target.sha256,
|
|
290
|
+
readSnapshot: client.readTargetSnapshot?.bind(client),
|
|
291
|
+
projectFailure: (operation, failure) => projectSessionError(operation, failure, config.ghidraStartupTimeoutMs),
|
|
436
292
|
})
|
|
437
293
|
: undefined;
|
|
438
294
|
const projectExecution = (operation, normalized, rawResult, observationLimitations = [], locations = [], relationshipCoverage) => {
|
|
@@ -456,7 +312,38 @@ export const createGhidraProviderClient = (input) => {
|
|
|
456
312
|
return parsed;
|
|
457
313
|
return ok(projectExecution(operation, parsed.value, called.value));
|
|
458
314
|
};
|
|
459
|
-
|
|
315
|
+
const loadImageExecution = async (raw, signal) => {
|
|
316
|
+
const operation = "inspect_native_load_image";
|
|
317
|
+
const measured = parseGhidraInventoryResult(operation, raw);
|
|
318
|
+
if (!measured.ok)
|
|
319
|
+
return measured;
|
|
320
|
+
let derived;
|
|
321
|
+
if (target.format === "pe") {
|
|
322
|
+
if (nativeAotOwner === undefined)
|
|
323
|
+
return err(new ProviderAdapterError("ghidra", operation, {
|
|
324
|
+
diagnostics: {
|
|
325
|
+
reason: "The admitted PE session has no read-only NativeAOT snapshot owner.",
|
|
326
|
+
},
|
|
327
|
+
}));
|
|
328
|
+
const result = await nativeAotOwner.derive(measured.value.image_base, operation, signal, raw);
|
|
329
|
+
if (!result.ok)
|
|
330
|
+
return result;
|
|
331
|
+
derived = result.value;
|
|
332
|
+
}
|
|
333
|
+
const attested = await attestGhidraNativeLoadImage({
|
|
334
|
+
target,
|
|
335
|
+
operation,
|
|
336
|
+
measured: measured.value,
|
|
337
|
+
client,
|
|
338
|
+
mapSessionError: (failure) => projectSessionError(operation, failure, config.ghidraStartupTimeoutMs, lostProviderHealth()),
|
|
339
|
+
nativeAotResult: derived,
|
|
340
|
+
signal,
|
|
341
|
+
});
|
|
342
|
+
return attested.ok
|
|
343
|
+
? ok(projectExecution(operation, jsonValueSchema.parse(attested.value), raw))
|
|
344
|
+
: attested;
|
|
345
|
+
};
|
|
346
|
+
return ok({
|
|
460
347
|
execute: async (operation, parameters, options) => {
|
|
461
348
|
if (extensionFailure !== undefined)
|
|
462
349
|
return err(extensionFailure);
|
|
@@ -508,6 +395,8 @@ export const createGhidraProviderClient = (input) => {
|
|
|
508
395
|
return inventoryExecution(operation, called);
|
|
509
396
|
if (!called.ok)
|
|
510
397
|
return err(projectSessionError(operation, called.error, config.ghidraStartupTimeoutMs, lostProviderHealth()));
|
|
398
|
+
if (operation === "inspect_native_load_image")
|
|
399
|
+
return loadImageExecution(called.value, options?.signal);
|
|
511
400
|
let normalized;
|
|
512
401
|
let observationLimitations = [];
|
|
513
402
|
let observationLocations = [];
|
|
@@ -527,8 +416,14 @@ export const createGhidraProviderClient = (input) => {
|
|
|
527
416
|
return result;
|
|
528
417
|
normalized = result.value;
|
|
529
418
|
}
|
|
530
|
-
if (operation === "inspect_native_data_type"
|
|
531
|
-
|
|
419
|
+
if (operation === "inspect_native_data_type" &&
|
|
420
|
+
normalized !== null &&
|
|
421
|
+
typeof normalized === "object" &&
|
|
422
|
+
!Array.isArray(normalized) &&
|
|
423
|
+
normalized.metadata_recovery === undefined) {
|
|
424
|
+
// The bridge owns address-space resolution. Enrich its parsed identity;
|
|
425
|
+
// request parameters retain the caller's spelling.
|
|
426
|
+
const address = normalized.address;
|
|
532
427
|
if (typeof address === "string") {
|
|
533
428
|
if (target.format === "pe" && nativeAotOwner !== undefined) {
|
|
534
429
|
const started = await client.start(options?.signal, options?.progress);
|
|
@@ -538,49 +433,14 @@ export const createGhidraProviderClient = (input) => {
|
|
|
538
433
|
if (!derived.ok)
|
|
539
434
|
return derived;
|
|
540
435
|
}
|
|
541
|
-
|
|
542
|
-
metadata
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
const nativeResult = normalized;
|
|
548
|
-
if (nativeResult.metadata_recovery === undefined)
|
|
549
|
-
normalized = jsonValueSchema.parse({
|
|
550
|
-
...nativeResult,
|
|
551
|
-
metadata_recovery: metadata,
|
|
552
|
-
});
|
|
553
|
-
}
|
|
436
|
+
const metadata = nativeAotOwner?.readTypeDetail(address);
|
|
437
|
+
if (metadata !== undefined)
|
|
438
|
+
normalized = jsonValueSchema.parse({
|
|
439
|
+
...normalized,
|
|
440
|
+
metadata_recovery: metadata,
|
|
441
|
+
});
|
|
554
442
|
}
|
|
555
443
|
}
|
|
556
|
-
if (operation === "inspect_native_load_image") {
|
|
557
|
-
let derived;
|
|
558
|
-
if (target.format === "pe") {
|
|
559
|
-
const observations = nativeLoadImageObservationSchema.parse(normalized);
|
|
560
|
-
if (nativeAotOwner === undefined)
|
|
561
|
-
return err(new ProviderAdapterError("ghidra", operation, {
|
|
562
|
-
diagnostics: {
|
|
563
|
-
reason: "The admitted PE session has no read-only NativeAOT snapshot owner.",
|
|
564
|
-
},
|
|
565
|
-
}));
|
|
566
|
-
const result = await nativeAotOwner.derive(observations.image_base, operation, options?.signal, normalized);
|
|
567
|
-
if (!result.ok)
|
|
568
|
-
return result;
|
|
569
|
-
derived = result.value;
|
|
570
|
-
}
|
|
571
|
-
const attested = await attestGhidraNativeLoadImage({
|
|
572
|
-
target,
|
|
573
|
-
operation,
|
|
574
|
-
measured: normalized,
|
|
575
|
-
client,
|
|
576
|
-
mapSessionError: (failure) => projectSessionError(operation, failure, config.ghidraStartupTimeoutMs, lostProviderHealth()),
|
|
577
|
-
nativeAotResult: derived,
|
|
578
|
-
signal: options?.signal,
|
|
579
|
-
});
|
|
580
|
-
if (!attested.ok)
|
|
581
|
-
return attested;
|
|
582
|
-
normalized = attested.value;
|
|
583
|
-
}
|
|
584
444
|
return ok(projectExecution(operation, normalized, called.value, observationLimitations, observationLocations, relationshipCoverage));
|
|
585
445
|
},
|
|
586
446
|
executeIfReady: async (operation, parameters, options) => {
|
|
@@ -606,14 +466,31 @@ export const createGhidraProviderClient = (input) => {
|
|
|
606
466
|
: [{ provider: committedProfile.provider, observation }];
|
|
607
467
|
},
|
|
608
468
|
close: async () => {
|
|
609
|
-
nativeAotOwner?.close();
|
|
610
|
-
|
|
469
|
+
await nativeAotOwner?.close();
|
|
470
|
+
const closed = await client.close();
|
|
471
|
+
const retained = nativeAotOwner?.cleanupFailure;
|
|
472
|
+
if (retained === undefined)
|
|
473
|
+
return closed;
|
|
474
|
+
return closed.ok
|
|
475
|
+
? err(retained)
|
|
476
|
+
: err(analysisErrorWithCleanupFailure(closed.error, retained).bindCleanupDependencies([closed.error, retained]));
|
|
611
477
|
},
|
|
612
|
-
};
|
|
478
|
+
});
|
|
613
479
|
};
|
|
614
|
-
|
|
480
|
+
/** Admit caller inputs and native authority before Java work starts. */
|
|
481
|
+
export const admitGhidraClient = (target, profile, platform) => {
|
|
615
482
|
if (target.kind !== "executable")
|
|
616
483
|
return err(new AnalysisCapabilityUnavailableError("ghidra", "health", `Ghidra cannot import ${target.kind} targets through this adapter.`));
|
|
484
|
+
if (platform === "win32") {
|
|
485
|
+
const readiness = inspectWindowsNativeReadiness(platform);
|
|
486
|
+
if (!readiness.available)
|
|
487
|
+
return err(new AnalysisCapabilityUnavailableError("ghidra", "health", readiness.reason));
|
|
488
|
+
}
|
|
489
|
+
if (profile === undefined || profile.provider.id !== "ghidra")
|
|
490
|
+
return err(new ProviderAdapterError("ghidra", "health"));
|
|
491
|
+
return ok({ target, profile });
|
|
492
|
+
};
|
|
493
|
+
const ghidraClientPrerequisites = (profile, installation) => {
|
|
617
494
|
if (installation.status === "unavailable")
|
|
618
495
|
return err(new ProviderAdapterError("ghidra", "health", {
|
|
619
496
|
diagnostics: ghidraInstallationDiagnostics(installation),
|
|
@@ -623,31 +500,41 @@ const ghidraClientPrerequisites = (target, profile, installation) => {
|
|
|
623
500
|
: undefined;
|
|
624
501
|
if (readiness?.available === false)
|
|
625
502
|
return err(new AnalysisCapabilityUnavailableError("ghidra", "health", readiness.reason));
|
|
626
|
-
if (profile
|
|
627
|
-
return err(new ProviderAdapterError("ghidra", "health"
|
|
503
|
+
if (profile.provider.version !== installation.providerVersion)
|
|
504
|
+
return err(new ProviderAdapterError("ghidra", "health", {
|
|
505
|
+
diagnostics: {
|
|
506
|
+
reason: "The current installation version differs from the selected analysis profile; resolve the profile again.",
|
|
507
|
+
selected_provider_version: profile.provider.version,
|
|
508
|
+
current_installation: ghidraInstallationDiagnostics(installation),
|
|
509
|
+
},
|
|
510
|
+
}));
|
|
628
511
|
return ok({
|
|
629
512
|
analyzeHeadlessPath: installation.analyzeHeadlessPath,
|
|
513
|
+
configurationDirectoryName: installation.configurationDirectoryName,
|
|
630
514
|
javaHome: installation.javaHome,
|
|
631
515
|
providerVersion: installation.providerVersion,
|
|
632
516
|
profile,
|
|
633
517
|
});
|
|
634
518
|
};
|
|
635
|
-
const unavailableClient = (failure) => ({
|
|
636
|
-
execute: () => Promise.resolve(err(failure)),
|
|
637
|
-
close: () => Promise.resolve(ok(null)),
|
|
638
|
-
});
|
|
639
519
|
const projectSessionError = (operation, failure, startupTimeoutMs, health) => {
|
|
640
520
|
const primary = projectPrimarySessionError(operation, failure, startupTimeoutMs, health);
|
|
641
521
|
return failure.cleanupFailure === undefined
|
|
642
522
|
? primary
|
|
643
|
-
: analysisErrorWithCleanupFailure(primary, failure.cleanupFailure, operation);
|
|
523
|
+
: analysisErrorWithCleanupFailure(primary, failure.cleanupFailure, operation).bindCleanupDependencies([primary, failure.cleanupFailure]);
|
|
644
524
|
};
|
|
645
525
|
const projectPrimarySessionError = (operation, failure, startupTimeoutMs, health) => {
|
|
646
|
-
const context = {
|
|
647
|
-
|
|
648
|
-
|
|
649
|
-
|
|
650
|
-
|
|
526
|
+
const context = {
|
|
527
|
+
cause: failure,
|
|
528
|
+
diagnostics: failure.diagnostics,
|
|
529
|
+
...(failure.partialObservation === undefined
|
|
530
|
+
? {}
|
|
531
|
+
: { partialObservation: failure.partialObservation }),
|
|
532
|
+
};
|
|
533
|
+
const physicalCause = artifactFilePrimaryFailure(failure.cause);
|
|
534
|
+
if (physicalCause instanceof AnalysisAccessDeniedError)
|
|
535
|
+
return new AnalysisAccessDeniedError(operation, physicalCause.path, physicalCause.systemCode, context);
|
|
536
|
+
if (physicalCause instanceof AnalysisArtifactChangedError)
|
|
537
|
+
return new AnalysisArtifactChangedError(operation, physicalCause.path, physicalCause.reason, context);
|
|
651
538
|
if (operation === "annotate_native_function" &&
|
|
652
539
|
failure.kind === "remote" &&
|
|
653
540
|
failure.remoteCode === "invalid_function_name")
|
|
@@ -656,8 +543,13 @@ const projectPrimarySessionError = (operation, failure, startupTimeoutMs, health
|
|
|
656
543
|
]);
|
|
657
544
|
if (failure.kind === "cancelled" ||
|
|
658
545
|
(failure.kind === "remote" && failure.remoteCode === "decompile_cancelled"))
|
|
659
|
-
return new AnalysisCancelledError(operation,
|
|
660
|
-
|
|
546
|
+
return new AnalysisCancelledError(operation, {
|
|
547
|
+
...context,
|
|
548
|
+
cause: failure.cancellation === undefined
|
|
549
|
+
? failure
|
|
550
|
+
: failure.cancellation.reason,
|
|
551
|
+
});
|
|
552
|
+
if (failure.kind === "analysis_timeout")
|
|
661
553
|
return new AnalysisTimeoutError(operation, failure.timeoutMs ?? startupTimeoutMs, context);
|
|
662
554
|
if (failure.kind === "remote" &&
|
|
663
555
|
failure.remoteCode === "regex_stack_exhausted")
|
|
@@ -672,6 +564,15 @@ const projectPrimarySessionError = (operation, failure, startupTimeoutMs, health
|
|
|
672
564
|
]);
|
|
673
565
|
if (failure.kind === "remote" && failure.remoteCode === "method_unavailable")
|
|
674
566
|
return new AnalysisCapabilityUnavailableError("ghidra", operation, failure.message, context);
|
|
567
|
+
const memoryFailure = projectObservedJvmMemoryFailure(operation, failure, context);
|
|
568
|
+
if (memoryFailure !== undefined)
|
|
569
|
+
return memoryFailure;
|
|
570
|
+
if (failure.kind === "timeout") {
|
|
571
|
+
const timeoutMs = failure.timeoutMs ?? startupTimeoutMs;
|
|
572
|
+
return new AnalysisTimeoutError(operation, timeoutMs, failure.message === GHIDRA_STARTUP_DEADLINE_ELAPSED
|
|
573
|
+
? { ...context, ...ghidraStartupTimeoutGuidance(timeoutMs) }
|
|
574
|
+
: context);
|
|
575
|
+
}
|
|
675
576
|
const exited = exitedProviderMessage(operation, failure, health);
|
|
676
577
|
if (exited !== undefined)
|
|
677
578
|
return new ProviderAdapterError("ghidra", operation, {
|
|
@@ -680,6 +581,65 @@ const projectPrimarySessionError = (operation, failure, startupTimeoutMs, health
|
|
|
680
581
|
});
|
|
681
582
|
return new ProviderAdapterError("ghidra", operation, context);
|
|
682
583
|
};
|
|
584
|
+
/** Project only OOME evidence captured during the operation that failed. */
|
|
585
|
+
const projectObservedJvmMemoryFailure = (operation, failure, context) => {
|
|
586
|
+
if (failure.kind !== "start" &&
|
|
587
|
+
failure.kind !== "process" &&
|
|
588
|
+
failure.kind !== "protocol" &&
|
|
589
|
+
failure.kind !== "timeout")
|
|
590
|
+
return undefined;
|
|
591
|
+
const scoped = failure.diagnostics.failure_output;
|
|
592
|
+
if (scoped === null ||
|
|
593
|
+
typeof scoped !== "object" ||
|
|
594
|
+
Array.isArray(scoped) ||
|
|
595
|
+
typeof scoped.stdout !== "object" ||
|
|
596
|
+
scoped.stdout === null ||
|
|
597
|
+
typeof scoped.stderr !== "object" ||
|
|
598
|
+
scoped.stderr === null)
|
|
599
|
+
return undefined;
|
|
600
|
+
const streamText = (value) => typeof value === "object" &&
|
|
601
|
+
value !== null &&
|
|
602
|
+
!Array.isArray(value) &&
|
|
603
|
+
typeof value.text === "string"
|
|
604
|
+
? value.text
|
|
605
|
+
: "";
|
|
606
|
+
const output = `${streamText(scoped.stdout)}\n${streamText(scoped.stderr)}`;
|
|
607
|
+
if (!/java\.lang\.OutOfMemoryError(?:\s*:|\b)/u.test(output))
|
|
608
|
+
return undefined;
|
|
609
|
+
const threadCapacity = /unable to create native thread/iu.test(output);
|
|
610
|
+
const heapExhaustion = /Java heap space|GC overhead limit exceeded/iu.test(output);
|
|
611
|
+
const detail = [
|
|
612
|
+
"Java heap space",
|
|
613
|
+
"GC overhead limit exceeded",
|
|
614
|
+
"Metaspace",
|
|
615
|
+
"Requested array size exceeds VM limit",
|
|
616
|
+
"unable to create native thread",
|
|
617
|
+
].find((candidate) => output.includes(candidate));
|
|
618
|
+
if (threadCapacity)
|
|
619
|
+
return new AnalysisResourceConstraintError(operation, "capacity", "Ghidra's process output reports an OutOfMemoryError while creating a native thread. This is observed capacity evidence; it does not establish a process limit or the precise cause.", null, {
|
|
620
|
+
...context,
|
|
621
|
+
remediationAction: "Reduce concurrent analysis processes or review the host's available thread and process capacity, then retry.",
|
|
622
|
+
});
|
|
623
|
+
const configuredHeap = failure.diagnostics.configured_jvm_max_heap;
|
|
624
|
+
const reportedLimits = heapExhaustion
|
|
625
|
+
? {
|
|
626
|
+
configured_jvm_max_heap: typeof configuredHeap === "string" ? configuredHeap : null,
|
|
627
|
+
}
|
|
628
|
+
: null;
|
|
629
|
+
return new AnalysisResourceConstraintError(operation, "memory", `Ghidra's operation-scoped process output reports java.lang.OutOfMemoryError${detail === undefined ? "" : `: ${detail}`}. This is reported evidence and does not prove the exact allocation failure.`, reportedLimits, {
|
|
630
|
+
...context,
|
|
631
|
+
...(heapExhaustion
|
|
632
|
+
? {
|
|
633
|
+
remediationAction: "If the host has available memory, consider increasing GHIDRA_HEADLESS_MAXMEM or disabling expensive analyzers with REA_GHIDRA_DISABLED_ANALYZERS, then retry.",
|
|
634
|
+
}
|
|
635
|
+
: {}),
|
|
636
|
+
});
|
|
637
|
+
};
|
|
638
|
+
/** Name the settings that change Ghidra's import-and-analysis startup deadline. */
|
|
639
|
+
const ghidraStartupTimeoutGuidance = (timeoutMs) => ({
|
|
640
|
+
userMessage: `Ghidra did not finish importing and analyzing the target within its ${String(timeoutMs)} ms startup deadline (REA_GHIDRA_STARTUP_TIMEOUT_MS).`,
|
|
641
|
+
remediationAction: `Large binaries can need longer: set REA_GHIDRA_STARTUP_TIMEOUT_MS above ${String(timeoutMs)} in the environment that starts REA, or skip expensive analyzers with REA_GHIDRA_DISABLED_ANALYZERS, then open the target again. An MCP client's own tool-call timeout is separate and may also need raising.`,
|
|
642
|
+
});
|
|
683
643
|
/** A provider already observed as running can be restarted by reopening. */
|
|
684
644
|
const exitedProviderMessage = (operation, failure, health) => {
|
|
685
645
|
if (failure.kind !== "process" && failure.kind !== "protocol")
|