rea-agents 6.4.0 → 6.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/DISCLAIMER.md +136 -0
- package/README.md +67 -16
- package/THIRD_PARTY_NOTICES.md +134 -0
- package/bridge/android/ReaJadxBridge.java +123 -11
- package/bridge/cutter/rea_bridge.py +816 -0
- package/bridge/ghidra/ReaGhidraAnalysisOptions.java +38 -0
- package/bridge/ghidra/ReaGhidraBridge.java +1181 -123
- package/bridge/ghidra/ReaGhidraBundleActivator.java +14 -0
- package/bridge/ghidra/ReaGhidraMipsSoftFloat.java +176 -0
- package/bridge/ghidra/ReaGhidraPrepareRaw.java +49 -0
- package/bridge/hopper_bridge.py +103 -69
- package/bridge/mitmproxy/capture.py +189 -13
- package/bridge/native/rea_lldb_tracer.py +40 -6
- package/bridge/process/ProcessRunTokenReader.swift +76 -34
- package/bridge/pwntools/layout_impl.py +5 -0
- package/bridge/pwntools/recorded_crash_impl.py +31 -10
- package/dist/adb/AdbConfiguration.js +15 -3
- package/dist/adb/AdbDeviceOutput.js +59 -37
- package/dist/adb/AdbDirectoryListing.js +80 -0
- package/dist/adb/AdbHostFileName.js +34 -0
- package/dist/adb/AdbProvider.js +416 -173
- package/dist/adb/AdbShellOutput.js +55 -57
- package/dist/android/JadxAnalysis.js +32 -7
- package/dist/android/JadxConfiguration.js +119 -29
- package/dist/android/JadxDoctor.js +115 -0
- package/dist/android/JadxMcpTransport.js +5 -3
- package/dist/android/JadxProtocol.js +14 -0
- package/dist/android/JadxProvider.js +15 -9
- package/dist/android/JadxRelease.js +12 -1
- package/dist/android/JadxWorkspaceRoot.js +157 -0
- package/dist/apktool/ApktoolConfiguration.js +165 -22
- package/dist/apktool/ApktoolDecodeOutput.js +124 -41
- package/dist/apktool/ApktoolProvider.js +70 -33
- package/dist/application/AnalysisContextQueries.js +5 -8
- package/dist/application/AnalysisProvider.js +24 -20
- package/dist/application/AppBundleExecutable.js +5 -5
- package/dist/application/BinaryTargetResolver.js +195 -38
- package/dist/application/BrowserEvidence.js +1 -1
- package/dist/application/BrowserObservationService.js +13 -2
- package/dist/application/BrowserScenarioCaptureService.js +0 -1
- package/dist/application/CallPathTracing.js +52 -13
- package/dist/application/CapabilityInventory.js +168 -28
- package/dist/application/ClaudeDesktopConfigLocation.js +152 -0
- package/dist/application/ClientConfigurationDocument.js +102 -25
- package/dist/application/ClientConfigurationFiles.js +51 -14
- package/dist/application/ClientRegistrationEnvironment.js +10 -4
- package/dist/application/ClientRegistrationIdentity.js +94 -29
- package/dist/application/ClientRegistrationStatus.js +180 -59
- package/dist/application/DirectAnalysis.js +85 -30
- package/dist/application/DirectAnalysisStatus.js +13 -1
- package/dist/application/Doctor.js +113 -32
- package/dist/application/DoctorDiagnostics.js +34 -12
- package/dist/application/DoctorProviderIds.js +2 -0
- package/dist/application/DoctorScope.js +11 -2
- package/dist/application/DshCordisPatch.js +355 -0
- package/dist/application/DshCordisYaml.js +155 -0
- package/dist/application/EnhancedLiteralTracing.js +30 -16
- package/dist/application/EnhancedToolTypes.js +0 -1
- package/dist/application/EnhancedTools.js +164 -54
- package/dist/application/EvidenceBundleCommands.js +30 -7
- package/dist/application/EvidenceBundleFiles.js +29 -7
- package/dist/application/FunctionAnalysisEvidence.js +3 -0
- package/dist/application/GeminiClientSettings.js +25 -13
- package/dist/application/HermesConfigurationYaml.js +272 -0
- package/dist/application/InventoryProjectionEvidence.js +0 -1
- package/dist/application/InvestigationProviders.js +13 -3
- package/dist/application/JsonFiles.js +110 -20
- package/dist/application/JsonInputFile.js +220 -62
- package/dist/application/LinuxHopper.js +126 -48
- package/dist/application/MacHopper.js +21 -17
- package/dist/application/MacHopperPaths.js +40 -0
- package/dist/application/{MipsElfAbiFlags.js → MipsElfMetadata.js} +70 -9
- package/dist/application/MipsElfSharedLoad.js +164 -0
- package/dist/application/MipsGnuAttributes.js +90 -0
- package/dist/application/MsixPackageStorage.js +133 -0
- package/dist/application/ProgressReporter.js +1 -1
- package/dist/application/ProviderOperationExecution.js +11 -3
- package/dist/application/ReconstructionCoverageService.js +0 -1
- package/dist/application/ReconstructionObligationCandidates.js +3 -2
- package/dist/application/ReconstructionObligationLedgerDiagnostics.js +2 -2
- package/dist/application/ReconstructionObligationLedgerEvaluation.js +15 -33
- package/dist/application/ReconstructionObligationLedgerProjection.js +3 -72
- package/dist/application/ReconstructionObligationLedgerService.js +3 -1
- package/dist/application/ReconstructionObligationOriginalCases.js +2 -1
- package/dist/application/ReferenceSourceImport.js +24 -8
- package/dist/application/ReferenceSourceImportEntries.js +22 -21
- package/dist/application/ReferenceSourceImportTypes.js +0 -1
- package/dist/application/ReferenceSourceVcsAdapter.js +33 -16
- package/dist/application/RegularFileRead.js +46 -18
- package/dist/application/Setup.js +36 -10
- package/dist/application/SetupClientConfiguration.js +206 -37
- package/dist/application/SetupClients.js +12 -6
- package/dist/application/SetupHost.js +66 -24
- package/dist/application/SetupInstallFailure.js +42 -2
- package/dist/application/SetupPlan.js +79 -50
- package/dist/application/SetupRecoveryBackup.js +66 -0
- package/dist/application/SetupRegistrationEnvironment.js +2 -1
- package/dist/application/SetupSkill.js +323 -76
- package/dist/application/SupportedClients.js +162 -28
- package/dist/application/TypeScriptEmittedSourceCandidates.js +26 -0
- package/dist/application/Uninstall.js +273 -82
- package/dist/application/UninstallFailure.js +14 -0
- package/dist/application/Update.js +54 -25
- package/dist/application/UpdateFailure.js +17 -0
- package/dist/application/UpdateMaintenance.js +11 -29
- package/dist/application/UpdateRuntime.js +141 -27
- package/dist/application/WebModuleTraceService.js +7 -0
- package/dist/application/WebNetworkCaptureService.js +16 -7
- package/dist/application/WebSourceLocationService.js +20 -4
- package/dist/application/WindowsCapabilities.js +18 -15
- package/dist/application/WorkflowEvidence.js +24 -1
- package/dist/application/analysisView/AnalysisViewService.js +90 -12
- package/dist/application/android/AndroidPackageInspection.js +25 -0
- package/dist/application/android/AndroidSearchEvidenceSummary.js +100 -0
- package/dist/application/binary/AnalysisProviderEvaluation.js +1 -1
- package/dist/application/binary/AnalysisProviderRegistry.js +36 -21
- package/dist/application/binary/AnalysisSnapshotCache.js +41 -20
- package/dist/application/binary/AnalysisSnapshotFiles.js +75 -9
- package/dist/application/binary/BinarySession.js +248 -96
- package/dist/application/binary/BinarySessionExecution.js +5 -4
- package/dist/application/binary/BinarySessionOpen.js +13 -6
- package/dist/application/binary/BinarySessionRecords.js +33 -7
- package/dist/application/binary/BinarySessionStatus.js +93 -23
- package/dist/application/binary/BinaryTargetSummary.js +9 -0
- package/dist/application/binary/CompositeProvider.js +71 -28
- package/dist/application/binary/LazyAnalysisProvider.js +3 -1
- package/dist/application/binary/SessionProviderRouter.js +5 -2
- package/dist/application/binaryDiagnostics/BinaryLayoutService.js +11 -1
- package/dist/application/binaryDiagnostics/PeResourcesService.js +3 -0
- package/dist/application/binaryDiagnostics/RecordedCrashService.js +14 -3
- package/dist/application/captures/PacketCaptureService.js +83 -0
- package/dist/application/closeOwnedWebResources.js +7 -0
- package/dist/application/electron/ElectronFusePort.js +1 -0
- package/dist/application/electron/ElectronFuseService.js +80 -0
- package/dist/application/evm/EvmInterfaceService.js +1 -0
- package/dist/application/flutter/DartAotInspection.js +26 -0
- package/dist/application/flutter/FlutterBuildAnalysisPort.js +1 -0
- package/dist/application/flutter/FlutterBuildAnalysisService.js +13 -0
- package/dist/application/frida/FridaInstrumentationPort.js +8 -0
- package/dist/application/frida/FridaInstrumentationService.js +310 -0
- package/dist/application/frida/fridaInputErrors.js +17 -0
- package/dist/application/go/GoBinaryPort.js +1 -0
- package/dist/application/go/GoBinaryService.js +80 -0
- package/dist/application/harmony/HarmonyApplicationService.js +17 -0
- package/dist/application/investigation/EvidenceLedger.js +40 -14
- package/dist/application/investigation/InvestigationRecords.js +12 -21
- package/dist/application/investigation/UnknownEvidence.js +22 -18
- package/dist/application/javascript/ElectronActiveObservationService.js +55 -25
- package/dist/application/javascript/ElectronBoundaryAnalysis.js +17 -3
- package/dist/application/javascript/ElectronBoundaryGraph.js +2 -0
- package/dist/application/javascript/ElectronBoundaryGraphCallPaths.js +144 -0
- package/dist/application/javascript/ElectronBoundaryGraphIpc.js +26 -7
- package/dist/application/javascript/ElectronBoundaryGraphNative.js +1 -1
- package/dist/application/javascript/ElectronBoundaryGraphWindows.js +47 -9
- package/dist/application/javascript/ElectronObservationService.js +0 -1
- package/dist/application/javascript/JavaScriptApplicationEvidence.js +15 -0
- package/dist/application/javascript/JavaScriptApplicationService.js +29 -14
- package/dist/application/javascript/JavaScriptApplicationWorkflowService.js +0 -1
- package/dist/application/javascript/JavaScriptArtifactAnalysis.js +86 -34
- package/dist/application/javascript/JavaScriptArtifactGraphAccumulator.js +51 -21
- package/dist/application/javascript/JavaScriptArtifactGraphBuilder.js +31 -7
- package/dist/application/javascript/JavaScriptArtifactGraphContext.js +25 -4
- package/dist/application/javascript/JavaScriptArtifactGraphDocuments.js +25 -14
- package/dist/application/javascript/JavaScriptArtifactGraphFindings.js +147 -41
- package/dist/application/javascript/JavaScriptArtifactGraphStructure.js +156 -7
- package/dist/application/javascript/JavaScriptArtifactPathResolution.js +892 -181
- package/dist/application/javascript/JavaScriptArtifactReconstruction.js +43 -30
- package/dist/application/javascript/JavaScriptArtifactReconstructionInput.js +2 -0
- package/dist/application/javascript/JavaScriptModuleRelationships.js +33 -11
- package/dist/application/javascript/JavaScriptRecoveryService.js +29 -9
- package/dist/application/javascript/JavaScriptRuntimeObservationService.js +2 -1
- package/dist/application/javascript/JavaScriptRuntimeReconciliationService.js +0 -1
- package/dist/application/javascript/JavaScriptSemanticGraphBuilder.js +42 -26
- package/dist/application/javascript/JavaScriptSemanticGraphElectronProjection.js +67 -0
- package/dist/application/javascript/JavaScriptSemanticTraceService.js +0 -1
- package/dist/application/managed/ManagedApplicationGraphService.js +0 -1
- package/dist/application/managed/ManagedMemberComparisonService.js +72 -54
- package/dist/application/managed/ManagedNativeVerificationService.js +0 -1
- package/dist/application/managed/ManagedReconstructionService.js +0 -1
- package/dist/application/native/NativeCallRoutes.js +54 -34
- package/dist/application/native/NativeDispatchMetadataInspection.js +6 -2
- package/dist/application/native/NativeUiActionTrace.js +35 -22
- package/dist/application/native/NativeValueTrace.js +57 -23
- package/dist/application/pcap/PcapAnalysisPort.js +1 -0
- package/dist/application/pcap/PcapAnalysisService.js +24 -0
- package/dist/application/process/ProcessCli.js +33 -13
- package/dist/application/reverse/ReverseEngineeringCommandPort.js +1 -0
- package/dist/application/reverse/ReverseEngineeringService.js +688 -0
- package/dist/application/rust/RustBinaryPort.js +1 -0
- package/dist/application/rust/RustBinaryService.js +80 -0
- package/dist/application/signals/SignalRecordingService.js +83 -0
- package/dist/application/sqlite/SqliteDatabaseCapability.js +30 -0
- package/dist/application/sqlite/SqliteDatabasePort.js +1 -0
- package/dist/application/sqlite/SqliteDatabaseService.js +76 -0
- package/dist/application/wasm/WasmArtifactPort.js +1 -0
- package/dist/application/wasm/WasmArtifactService.js +77 -0
- package/dist/application/wasm/WasmInterfaceComparisonService.js +188 -0
- package/dist/artifacts/ArtifactHash.js +13 -2
- package/dist/artifacts/ArtifactPaths.js +4 -7
- package/dist/artifacts/ArtifactProvider.js +8 -4
- package/dist/artifacts/ArtifactReader.js +13 -1
- package/dist/artifacts/ArtifactResourceScope.js +12 -3
- package/dist/artifacts/AsarArtifactReader.js +177 -112
- package/dist/artifacts/AsarListing.js +78 -0
- package/dist/artifacts/DirectoryArtifactReader.js +94 -24
- package/dist/artifacts/MachOSliceArtifactReader.js +83 -10
- package/dist/artifacts/NativeDmgArtifactReader.js +161 -58
- package/dist/artifacts/OrderedReads.js +57 -0
- package/dist/artifacts/SafeOutputTree.js +19 -4
- package/dist/artifacts/ZipArtifactReader.js +117 -12
- package/dist/artifacts/apple/AppleAssetCatalogAnalysis.js +77 -68
- package/dist/artifacts/apple/DylibResolutionReader.js +11 -5
- package/dist/artifacts/apple/InterfaceBuilderAnalysis.js +57 -21
- package/dist/artifacts/apple/InterfaceBuilderDecodeBudget.js +64 -12
- package/dist/artifacts/apple/KeyedArchiveReader.js +3 -2
- package/dist/artifacts/apple/MachoLoadCommandReader.js +62 -61
- package/dist/artifacts/apple/NibArchive.js +11 -4
- package/dist/artifacts/apple/PlistNumberLiterals.js +2 -2
- package/dist/artifacts/extraction/ArtifactExtraction.js +6 -7
- package/dist/artifacts/hostExecutableMarking.js +16 -0
- package/dist/artifacts/inventory/ArtifactGraphConstruction.js +134 -34
- package/dist/artifacts/inventory/ArtifactInventory.js +2 -2
- package/dist/artifacts/inventory/classify.js +32 -15
- package/dist/artifacts/inventory/reader.js +36 -21
- package/dist/artifacts/inventory/scanCanonical.js +25 -18
- package/dist/artifacts/inventory/scanReader.js +36 -10
- package/dist/artifacts/javascript/JavaScriptArtifactFiles.js +163 -7
- package/dist/artifacts/readStableArtifact.js +28 -4
- package/dist/browser/BrowserProcessStartup.js +20 -9
- package/dist/browser/BrowserScenarioPartialObservation.js +60 -44
- package/dist/browser/BrowserScenarioSecrets.js +176 -46
- package/dist/browser/CdpBrowserProvider.js +70 -99
- package/dist/browser/CdpCaptureDocuments.js +231 -69
- package/dist/browser/CdpCaptureDomSvg.js +94 -61
- package/dist/browser/CdpCaptureEventBodyShapes.js +9 -5
- package/dist/browser/CdpCaptureEventHandlers.js +23 -12
- package/dist/browser/CdpCaptureEvents.js +49 -10
- package/dist/browser/CdpCaptureStorage.js +22 -5
- package/dist/browser/CdpCaptureStorageFingerprints.js +54 -11
- package/dist/browser/CdpCaptureValues.js +0 -1
- package/dist/browser/CdpConnection.js +3 -4
- package/dist/browser/CdpElectronInspection.js +14 -4
- package/dist/browser/CdpElectronProvider.js +7 -2
- package/dist/browser/CdpElectronScripts.js +2 -1
- package/dist/browser/CdpElectronWorkers.js +7 -2
- package/dist/browser/CdpEndpoint.js +143 -17
- package/dist/browser/CdpObservationSession.js +24 -8
- package/dist/browser/CdpPageCapture.js +66 -16
- package/dist/browser/CdpPageCaptureScripts.js +4 -3
- package/dist/browser/CdpPageCaptureWorkers.js +5 -1
- package/dist/browser/CdpSafeMetadata.js +9 -5
- package/dist/browser/CdpScreenshot.js +5 -14
- package/dist/browser/CdpSnapshotStrings.js +21 -0
- package/dist/browser/CdpTargetSession.js +29 -2
- package/dist/browser/CdpWebMcpDiscovery.js +23 -6
- package/dist/browser/PlaywrightBrowserScenarioProvider.js +4 -4
- package/dist/browser/PlaywrightElectronActiveActions.js +4 -4
- package/dist/browser/PlaywrightElectronActiveProjection.js +16 -4
- package/dist/browser/PlaywrightElectronActiveProvider.js +103 -30
- package/dist/browser/PlaywrightExecutionBoundary.js +2 -2
- package/dist/browser/PlaywrightScenarioBrowser.js +9 -6
- package/dist/browser/PlaywrightScenarioEvents.js +198 -36
- package/dist/browser/PlaywrightScenarioServiceWorkers.js +249 -0
- package/dist/browser/PlaywrightScenarioSession.js +61 -29
- package/dist/browser/WebSourceMapFetcher.js +163 -80
- package/dist/browser/assets/LocalWebScriptArtifacts.js +24 -3
- package/dist/browser/assets/PublishWebScripts.js +13 -2
- package/dist/browser/assets/ScenarioScriptCapture.js +2 -1
- package/dist/browser/assets/WebArtifactReads.js +11 -3
- package/dist/browser/assets/WebSourceLocationArtifacts.js +38 -3
- package/dist/browser/history/CaptureFailures.js +22 -8
- package/dist/browser/history/CaptureFormatError.js +2 -2
- package/dist/browser/history/{HarJson.js → CaptureJson.js} +14 -4
- package/dist/browser/history/CaptureRedaction.js +16 -3
- package/dist/browser/history/CaptureRelease.js +20 -2
- package/dist/browser/history/HarCapture.js +16 -23
- package/dist/browser/history/HarSchema.js +36 -36
- package/dist/browser/history/HistoricalCaptureDecoder.js +93 -25
- package/dist/browser/history/NodeCaptureAdapter.js +48 -0
- package/dist/browser/history/{HarCaptureProcess.js → NodeCaptureProcess.js} +18 -9
- package/dist/browser/history/QlogCapture.js +385 -0
- package/dist/browser/history/SazCapture.js +130 -0
- package/dist/browser/history/SazHttp.js +61 -0
- package/dist/browser/history/SazMetadata.js +92 -0
- package/dist/browser/history/SazProjection.js +90 -0
- package/dist/browser/modules/NativeModuleResolver.js +177 -110
- package/dist/browser/modules/WebModuleArtifacts.js +40 -3
- package/dist/browser/network/PlaywrightNetworkContent.js +40 -5
- package/dist/browser/network/PlaywrightScenarioNetwork.js +125 -11
- package/dist/captures/TsharkCaptureProvider.js +370 -0
- package/dist/captures/parseFieldDiscovery.js +66 -0
- package/dist/captures/parsePacketOutput.js +21 -0
- package/dist/catalogIdentity.js +46 -35
- package/dist/cli/adbCommands.js +2 -2
- package/dist/cli/analysisViewCommands.js +1 -1
- package/dist/cli/androidCommands.js +11 -2
- package/dist/cli/apktoolCommands.js +10 -11
- package/dist/cli/applicationCommands.js +44 -17
- package/dist/cli/artifactCommands.js +1 -1
- package/dist/cli/binaryDiagnosticsCommands.js +14 -10
- package/dist/cli/browserAdvancedCommands.js +37 -24
- package/dist/cli/browserCommands.js +46 -29
- package/dist/cli/captureCommands.js +72 -0
- package/dist/cli/cliResultOutput.js +188 -0
- package/dist/cli/coreBinaryCommands.js +73 -27
- package/dist/cli/coreNativeCommands.js +53 -31
- package/dist/cli/cutterCommands.js +50 -0
- package/dist/cli/electronCommands.js +45 -3
- package/dist/cli/evmCommands.js +4 -5
- package/dist/cli/finishAnalysisCommand.js +44 -0
- package/dist/cli/firmwareCommands.js +14 -36
- package/dist/cli/flutterCommands.js +69 -0
- package/dist/cli/fridaCommands.js +211 -0
- package/dist/cli/goCommands.js +20 -0
- package/dist/cli/interactiveSetup.js +11 -1
- package/dist/cli/javascriptApplicationAnalysis.js +1 -1
- package/dist/cli/javascriptRecoveryCommands.js +7 -0
- package/dist/cli/jsonOutput.js +2 -2
- package/dist/cli/managedCommands.js +31 -3
- package/dist/cli/options.js +20 -2
- package/dist/cli/pcapCommands.js +47 -0
- package/dist/cli/processCommands.js +1 -1
- package/dist/cli/reverseEngineeringCommands.js +268 -0
- package/dist/cli/rustCommands.js +21 -0
- package/dist/cli/setupCommands.js +40 -12
- package/dist/cli/signalCommands.js +72 -0
- package/dist/cli/sqliteCommands.js +79 -0
- package/dist/cli/utilityCommands.js +116 -74
- package/dist/cli/wasmCommands.js +61 -0
- package/dist/cli/webModuleCommands.js +36 -32
- package/dist/cli/webNetworkCaptureCommands.js +8 -8
- package/dist/cli-runtime/AbortablePromise-BVBemxbD.js +123 -0
- package/dist/cli-runtime/AnalysisProvider-D0Us2OTk.js +27 -0
- package/dist/cli-runtime/AnalysisSnapshotCache-BXS0wRd2.js +710 -0
- package/dist/cli-runtime/ArtifactReader-BXkffc1D.js +55 -0
- package/dist/cli-runtime/ArtifactResourceScope-DQWTcUwE.js +114 -0
- package/dist/cli-runtime/AsarHeader-CnzOzYEH.js +31 -0
- package/dist/cli-runtime/BinarySessionStatus-DnMxMk-r.js +211 -0
- package/dist/cli-runtime/BinaryTargetResolver-CVIJ_s1A.js +1308 -0
- package/dist/cli-runtime/BoundedFileBytes-BU30odTm.js +39 -0
- package/dist/cli-runtime/CdpTargetSession-DGX5pV9w.js +650 -0
- package/dist/cli-runtime/ClientConfigPath-c6jr6INc.js +36 -0
- package/dist/cli-runtime/ClientConfigurationDocument-ffQ9X0Se.js +1957 -0
- package/dist/cli-runtime/ClientRegistrationStatus-DszCyPEU.js +509 -0
- package/dist/cli-runtime/CurrentEntrypointPath-D5FRNdkq.js +14 -0
- package/dist/cli-runtime/DirectAnalysis-BgvAtpN3.js +528 -0
- package/dist/cli-runtime/Doctor-DIpf_I7N.js +588 -0
- package/dist/cli-runtime/ElectronFileScope-dpHm2nrS.js +1054 -0
- package/dist/cli-runtime/ExecFileOutput-BEQs-lDD.js +117 -0
- package/dist/cli-runtime/IdaConfiguration-CtGP7EKo.js +1094 -0
- package/dist/cli-runtime/InterfaceBuilderDecodeBudget-D4omRUe4.js +279 -0
- package/dist/cli-runtime/InventoryProjectionEvidence-DIsI4DJ6.js +49 -0
- package/dist/cli-runtime/InvestigationProviders-DoQRIHii.js +117 -0
- package/dist/cli-runtime/JavaScriptApplicationEvidenceGraph-D5aI_FSJ.js +160 -0
- package/dist/cli-runtime/JavaScriptApplicationWorkflowEvidence-Bz4-V0Ct.js +75 -0
- package/dist/cli-runtime/JavaScriptWorkerMemoryLimit-B1bwMM1a.js +86 -0
- package/dist/cli-runtime/JebMcpEndpoint-DUytrn5G.js +428 -0
- package/dist/cli-runtime/JsonFiles-DQa1PRKy.js +708 -0
- package/dist/cli-runtime/MacCodeSignature-MgYbRK_H.js +24 -0
- package/dist/cli-runtime/MacHopperPaths-CwL5lYPX.js +434 -0
- package/dist/cli-runtime/MachoLoadCommandReader-C7e074Ze.js +510 -0
- package/dist/cli-runtime/ManagedSnapshot-rqyBHcdL.js +4185 -0
- package/dist/cli-runtime/OwnedCommand-Cj9GhmPR.js +112 -0
- package/dist/cli-runtime/PrivateRuntimeRoot-DAy0PiBM.js +263 -0
- package/dist/cli-runtime/ProcessOwnership-DXC5-UWt.js +1378 -0
- package/dist/cli-runtime/ProviderDeadline-8m2pFRDc.js +122 -0
- package/dist/cli-runtime/RegularFile-B_6KPCNQ.js +139 -0
- package/dist/cli-runtime/RegularFileRead-DVlC5faM.js +125 -0
- package/dist/cli-runtime/SafeOutputTree-D6U15GXd.js +524 -0
- package/dist/cli-runtime/SetupHost-FkYWswsq.js +1098 -0
- package/dist/cli-runtime/SupportedClients-DaX6Lt2d.js +1049 -0
- package/dist/cli-runtime/UninstallFailure-1blyKXHE.js +22 -0
- package/dist/cli-runtime/Update-CbTC_eg1.js +143 -0
- package/dist/cli-runtime/UpdateFailure-BcFNxEZZ.js +24 -0
- package/dist/cli-runtime/ZipArtifactReader-B8ZgNe4D.js +248 -0
- package/dist/cli-runtime/analysisErrorCleanup-Do6YeeoD.js +32 -0
- package/dist/cli-runtime/analysisErrorPresentation-DGt7TdsH.js +497 -0
- package/dist/cli-runtime/appleArchiveFormat-tVoI2ykA.js +263 -0
- package/dist/cli-runtime/application__DirectAnalysisStatus-DpOejOf0.js +150 -0
- package/dist/cli-runtime/application__EnhancedTools-oFE2bOjs.js +1787 -0
- package/dist/cli-runtime/application__FunctionAnalysisEvidence-B6osuhvW.js +41 -0
- package/dist/cli-runtime/application__ReconstructionCoverageService-DN3wTFQj.js +32 -0
- package/dist/cli-runtime/application__ReconstructionObligationLedgerService-CKcTppX9.js +815 -0
- package/dist/cli-runtime/application__Setup-XpMaRNjy.js +514 -0
- package/dist/cli-runtime/application__Uninstall-_23pU2yB.js +427 -0
- package/dist/cli-runtime/application__UpdateRuntime-DPvY8ohd.js +345 -0
- package/dist/cli-runtime/application__android__AndroidApplicationService-CFgIFPM4.js +31 -0
- package/dist/cli-runtime/application__apple__AppleApplicationService-Db6QCsun.js +31 -0
- package/dist/cli-runtime/application__harmony__HarmonyApplicationService-CFjocHoK.js +31 -0
- package/dist/cli-runtime/application__javascript__ElectronActiveObservationService-CmVDUI_Z.js +118 -0
- package/dist/cli-runtime/application__javascript__ElectronObservationService-DEsR8KDN.js +63 -0
- package/dist/cli-runtime/application__javascript__JavaScriptApplicationService-CCkp8KBh.js +11450 -0
- package/dist/cli-runtime/application__javascript__JavaScriptApplicationWorkflowService-lPy0tzr3.js +2329 -0
- package/dist/cli-runtime/application__javascript__JavaScriptRuntimeReconciliationService-DWleA8K9.js +88 -0
- package/dist/cli-runtime/application__javascript__JavaScriptSemanticTraceService-DkALH4rL.js +299 -0
- package/dist/cli-runtime/artifactOperationError-B7n03FbD.js +27 -0
- package/dist/cli-runtime/artifacts__ArtifactProvider-zXI0QjSL.js +2187 -0
- package/dist/cli-runtime/binary-BVOr2mgE.js +14206 -0
- package/dist/cli-runtime/browserObservationError-Dx6xRTjb.js +40 -0
- package/dist/cli-runtime/catalogIdentity-DLoXgfIR.js +933 -0
- package/dist/cli-runtime/cli.js +41848 -0
- package/dist/cli-runtime/cliOutput-BC1BdAcB.js +122 -0
- package/dist/cli-runtime/cliOutput.js +5 -0
- package/dist/cli-runtime/cliResultOutput-DsRMI8CJ.js +780 -0
- package/dist/cli-runtime/cliResultOutput.js +5 -0
- package/dist/cli-runtime/composition__browserScenario-DHXC1a8n.js +2927 -0
- package/dist/cli-runtime/composition__electronObservation-GecK2EID.js +555 -0
- package/dist/cli-runtime/composition__electronScenario-CEZnVrAL.js +653 -0
- package/dist/cli-runtime/cutterToolContracts-TZH9EHr5.js +5134 -0
- package/dist/cli-runtime/doctorRuntime-BE5ZX8it.js +258 -0
- package/dist/cli-runtime/dotnet__ManagedStaticProvider-C8_yZCDc.js +5 -0
- package/dist/cli-runtime/errorSchemas-CTRmvMl3.js +601 -0
- package/dist/cli-runtime/javascriptApplicationAnalysis-HgMzVMQw.js +2068 -0
- package/dist/cli-runtime/javascriptExportReturnShapeProjection-Dg00g35t.js +78 -0
- package/dist/cli-runtime/javascriptExportShapeComparisonSchemas-BYnoIqIk.js +1242 -0
- package/dist/cli-runtime/javascriptRuntimeReconciliation-DNjDoL3S.js +1507 -0
- package/dist/cli-runtime/javascriptRuntimeReconciliationSchemas-BWpGWNcI.js +247 -0
- package/dist/cli-runtime/javascriptSemanticTraceSchemas-BTCNcvbc.js +126 -0
- package/dist/cli-runtime/lipo-DSWP6fv-.js +396 -0
- package/dist/cli-runtime/logger-CQQCI4a2.js +48 -0
- package/dist/cli-runtime/machoContainer-C8BIkkq3.js +172 -0
- package/dist/cli-runtime/managedApplicationGraph-B08jb3jq.js +1130 -0
- package/dist/cli-runtime/managedToolContracts-D60QmIYj.js +99 -0
- package/dist/cli-runtime/mcpDoctor.js +359 -0
- package/dist/cli-runtime/mcpStartupPolicy-CVVSOmRc.js +21 -0
- package/dist/cli-runtime/native__NativeMacOSProvider-YBTvUeJO.js +4875 -0
- package/dist/cli-runtime/officialToolContracts-CCFF0an9.js +1501 -0
- package/dist/cli-runtime/propertyListKeys-G8e74YWb.js +248 -0
- package/dist/cli-runtime/providerAdapterError-DAjhICdr.js +25 -0
- package/dist/cli-runtime/providerCleanupError-Ceq8f0wK.js +27 -0
- package/dist/cli-runtime/providerIdentities-Ao1XTvwx.js +31 -0
- package/dist/cli-runtime/providerStartupTimeout-B2tF2LtZ.js +17 -0
- package/dist/cli-runtime/readFileHandleChunks-dp60iZ6v.js +38 -0
- package/dist/cli-runtime/reconstructionObligationLedgerSchemas-Bao0xMr-.js +19478 -0
- package/dist/cli-runtime/rolldown-runtime-DXoylpqc.js +121 -0
- package/dist/cli-runtime/runtimeVersion-CMGd0bDu.js +23 -0
- package/dist/cli-runtime/safeJson-DKKACtdy.js +25 -0
- package/dist/cli-runtime/scanCanonical-KP4T9jSl.js +2724 -0
- package/dist/cli-runtime/snapshotEnvironment-D_tWyOub.js +813 -0
- package/dist/cli-runtime/toolContracts-D2FOG_Nb.js +3721 -0
- package/dist/cli-runtime/toolOutputSchemaGroups-DRiYs1je.js +12070 -0
- package/dist/cli-runtime/workflowInputError-n8Oo-bLA.js +26 -0
- package/dist/cli.js +38 -5
- package/dist/cliBrowserScenarioCommands.js +39 -4
- package/dist/cliCommandNames.js +48 -0
- package/dist/cliEvidenceCommands.js +0 -1
- package/dist/cliJavaScriptRuntimeCommands.js +16 -14
- package/dist/cliJsonInput.js +12 -4
- package/dist/cliLogging.js +50 -14
- package/dist/cliObservationOptions.js +6 -0
- package/dist/cliOutput.js +38 -5
- package/dist/composition/binary.js +4 -0
- package/dist/composition/captures.js +3 -0
- package/dist/composition/directAnalysis.js +28 -11
- package/dist/composition/electronFuses.js +4 -0
- package/dist/composition/evm.js +12 -0
- package/dist/composition/flutter.js +3 -0
- package/dist/composition/go.js +4 -0
- package/dist/composition/javascriptAnalysisWorkerProcess.js +5 -4
- package/dist/composition/jeb.js +33 -4
- package/dist/composition/pcap.js +3 -0
- package/dist/composition/resolveWindowsProviderExecutable.js +61 -0
- package/dist/composition/reverseEngineering.js +29 -0
- package/dist/composition/rust.js +4 -0
- package/dist/composition/signals.js +3 -0
- package/dist/composition/sqlite.js +4 -0
- package/dist/composition/wasm.js +22 -0
- package/dist/composition/webNetworkCaptures.js +7 -2
- package/dist/config/environment.js +45 -4
- package/dist/config/ghidraDisabledAnalyzers.js +25 -0
- package/dist/config/homeDirectory.js +9 -6
- package/dist/config/mcpInputSchemaProfile.js +4 -0
- package/dist/config/mcpOutputSchemaProfile.js +22 -0
- package/dist/config/parseConfig.js +21 -31
- package/dist/config/parsers.js +4 -3
- package/dist/config/{ghidraStartupTimeout.js → providerStartupTimeout.js} +7 -3
- package/dist/contracts/adb/adbToolContracts.js +7 -7
- package/dist/contracts/analysisDetail.js +6 -3
- package/dist/contracts/analysisViewApiSurfaceExample.js +68 -0
- package/dist/contracts/analysisViewToolContracts.js +24 -3
- package/dist/contracts/android/androidToolContracts.js +17 -8
- package/dist/contracts/applicationToolContracts.js +17 -2
- package/dist/contracts/artifactToolContracts.js +14 -2
- package/dist/contracts/browserToolContracts.js +1 -0
- package/dist/contracts/captures/captureToolContracts.js +42 -0
- package/dist/contracts/compactInputSchema.js +26 -6
- package/dist/contracts/cutterToolContracts.js +84 -0
- package/dist/contracts/enhancedToolContracts.js +2 -2
- package/dist/contracts/evm/evmToolContracts.js +30 -15
- package/dist/contracts/firmware/firmwareToolContracts.js +1 -1
- package/dist/contracts/flutter/flutterToolContracts.js +47 -0
- package/dist/contracts/fridaRemoteAddress.js +23 -0
- package/dist/contracts/fridaToolContracts.js +273 -0
- package/dist/contracts/functionComparisonExample.js +12 -1
- package/dist/contracts/gdbToolContracts.js +103 -0
- package/dist/contracts/go/goToolContracts.js +20 -0
- package/dist/contracts/hopperMemoryContracts.js +15 -0
- package/dist/contracts/inputSchemaPresentation.js +81 -14
- package/dist/contracts/investigationExamples.js +1 -0
- package/dist/contracts/javascript/electronToolContracts.js +27 -2
- package/dist/contracts/javascript/javascriptRecoveryToolContracts.js +13 -1
- package/dist/contracts/managed/managedToolContracts.js +43 -4
- package/dist/contracts/managed/managedWorkflowExamples.js +7 -1
- package/dist/contracts/managed/managedWorkflowToolContracts.js +4 -30
- package/dist/contracts/mobileApplicationGraphExamples.js +12 -0
- package/dist/contracts/native/binaryDiagnosticsToolContracts.js +3 -2
- package/dist/contracts/native/nativeToolContracts.js +10 -6
- package/dist/contracts/officialToolContracts.js +5 -5
- package/dist/contracts/pcap/pcapToolContracts.js +33 -0
- package/dist/contracts/providerSelection.js +1 -0
- package/dist/contracts/reconstructionReadinessExample.js +126 -119
- package/dist/contracts/reverseEngineeringToolContracts.js +52 -0
- package/dist/contracts/rizinDebugToolContracts.js +96 -0
- package/dist/contracts/rust/rustToolContracts.js +20 -0
- package/dist/contracts/sessionLifecycleInputs.js +34 -2
- package/dist/contracts/sessionToolContracts.js +2 -2
- package/dist/contracts/sessionToolSchemas.js +14 -0
- package/dist/contracts/signals/signalToolContracts.js +40 -0
- package/dist/contracts/sqlite/sqliteToolContracts.js +36 -0
- package/dist/contracts/toolContractExamples.js +29 -0
- package/dist/contracts/toolContractTypes.js +2 -0
- package/dist/contracts/toolContracts.js +26 -0
- package/dist/contracts/toolEffects.js +247 -8
- package/dist/contracts/toolOutputSchemaGroups.js +75 -32
- package/dist/contracts/toolOutputSchemaPrimitives.js +111 -10
- package/dist/contracts/toolSchemaMetadata.js +16 -2
- package/dist/contracts/unknownContractExamples.js +1 -1
- package/dist/contracts/wasm/wasmComparisonContracts.js +52 -0
- package/dist/contracts/wasm/wasmToolContracts.js +33 -0
- package/dist/contracts/webNetworkCaptureToolContracts.js +15 -4
- package/dist/cutter/CutterBridgeClient.js +621 -0
- package/dist/cutter/CutterBridgeService.js +139 -0
- package/dist/doctorRuntime.js +20 -8
- package/dist/domain/adb/adbDeviceAnalysis.js +26 -4
- package/dist/domain/analysisErrorBase.js +20 -0
- package/dist/domain/analysisErrorCleanup.js +1 -1
- package/dist/domain/analysisErrorCore.js +19 -0
- package/dist/domain/analysisErrorPresentation.js +58 -17
- package/dist/domain/analysisErrorProjection.js +31 -12
- package/dist/domain/analysisProfile.js +7 -3
- package/dist/domain/analysisSnapshot.js +311 -184
- package/dist/domain/analysisView/WebNetworkApiSurfaceAccumulator.js +414 -0
- package/dist/domain/analysisView/analysisView.js +366 -44
- package/dist/domain/analysisView/analysisViewCoverage.js +32 -0
- package/dist/domain/analysisView/analysisViewErrors.js +4 -0
- package/dist/domain/analysisView/analysisViewParent.js +12 -0
- package/dist/domain/analysisView/analysisViewText.js +29 -0
- package/dist/domain/analysisView/androidPackageView.js +102 -0
- package/dist/domain/analysisView/artifactInventoryView.js +140 -0
- package/dist/domain/analysisView/binaryLayoutView.js +11 -4
- package/dist/domain/analysisView/dartAotView.js +93 -0
- package/dist/domain/analysisView/evmInterfaceView.js +105 -0
- package/dist/domain/analysisView/interfaceBuilderView.js +182 -0
- package/dist/domain/analysisView/javascriptApplicationView.js +29 -28
- package/dist/domain/analysisView/machoView.js +186 -0
- package/dist/domain/analysisView/managedArtifactView.js +108 -0
- package/dist/domain/analysisView/managedMemberView.js +209 -0
- package/dist/domain/analysisView/nativeFunctionView.js +20 -25
- package/dist/domain/analysisView/pcapCaptureView.js +264 -0
- package/dist/domain/analysisView/qlogCaptureView.js +198 -0
- package/dist/domain/analysisView/wasmArtifactView.js +162 -0
- package/dist/domain/analysisView/webNetworkApiSurfaceView.js +123 -0
- package/dist/domain/analysisView/webNetworkCaptureView.js +388 -0
- package/dist/domain/android/androidAnalysis.js +36 -2
- package/dist/domain/android/androidApplication.js +32 -60
- package/dist/domain/apktool/apktoolResourceAnalysis.js +19 -7
- package/dist/domain/apple/appleApplication.js +31 -29
- package/dist/domain/apple/appleArchiveFormat.js +184 -0
- package/dist/domain/apple/appleAssetCatalog.js +15 -0
- package/dist/domain/apple/appleBundleAnatomy.js +1 -1
- package/dist/domain/apple/dyldPaths.js +9 -2
- package/dist/domain/apple/dylibResolution.js +19 -9
- package/dist/domain/apple/dylibResolutionFindings.js +8 -9
- package/dist/domain/apple/interfaceBuilderGraph.js +50 -26
- package/dist/domain/apple/interfaceBuilderKeyedArchive.js +28 -8
- package/dist/domain/apple/machoContainer.js +120 -8
- package/dist/domain/apple/machoCpuIdentity.js +4 -0
- package/dist/domain/apple/plistValue.js +6 -1
- package/dist/domain/artifactComparison.js +109 -32
- package/dist/domain/artifactDecompressionBudget.js +26 -0
- package/dist/domain/artifactGraph.js +23 -6
- package/dist/domain/artifactIdentity.js +4 -1
- package/dist/domain/artifactInspection.js +44 -2
- package/dist/domain/artifactInventoryEvidence.js +137 -39
- package/dist/domain/binaryTarget.js +251 -94
- package/dist/domain/binaryTargetTypes.js +14 -1
- package/dist/domain/browserNetworkEvidence.js +4 -0
- package/dist/domain/browserObservation.js +88 -29
- package/dist/domain/browserObservationSchemas.js +4 -1
- package/dist/domain/browserScenarioCapture.js +2 -1
- package/dist/domain/browserScenarioCaptureValues.js +26 -2
- package/dist/domain/browserScenarioDiff.js +120 -11
- package/dist/domain/browserScenarioDiffEvidence.js +46 -13
- package/dist/domain/browserScenarioDiffValues.js +10 -3
- package/dist/domain/browserScenarioNetworkComparison.js +158 -0
- package/dist/domain/browserScenarioNormalization.js +10 -13
- package/dist/domain/browserScenarioValues.js +2 -12
- package/dist/domain/browserSession.js +2 -2
- package/dist/domain/bundleComparison.js +1 -5
- package/dist/domain/callPath.js +40 -3
- package/dist/domain/captures/packetCapture.js +138 -0
- package/dist/domain/captures/packetFields.js +81 -0
- package/dist/domain/changedBehavior.js +43 -41
- package/dist/domain/comparisonSourceEvidence.js +6 -0
- package/dist/domain/dosCom.js +2 -2
- package/dist/domain/dosMz.js +52 -14
- package/dist/domain/electron/electronFuses.js +360 -0
- package/dist/domain/elfFixedHeader.js +42 -0
- package/dist/domain/evidence.js +103 -38
- package/dist/domain/evidenceBundle.js +58 -20
- package/dist/domain/evidenceErrors.js +5 -0
- package/dist/domain/evm/evmInterface.js +18 -4
- package/dist/domain/evm/solidityMetadata.js +70 -0
- package/dist/domain/explicitSensitiveFailure.js +42 -24
- package/dist/domain/firmware/firmwareAnalysis.js +29 -0
- package/dist/domain/flutter/flutterBuildAnalysis.js +141 -0
- package/dist/domain/functionCallCoverage.js +60 -0
- package/dist/domain/functionComparisonDimensions.js +101 -10
- package/dist/domain/functionComparisonNormalization.js +66 -10
- package/dist/domain/functionComparisonResults.js +7 -6
- package/dist/domain/functionComparisonSchemas.js +14 -3
- package/dist/domain/functionDossierEvidence.js +3 -0
- package/dist/domain/go/goBinary.js +96 -0
- package/dist/domain/harmony/harmonyApplication.js +156 -0
- package/dist/domain/hopperErrors.js +15 -16
- package/dist/domain/hopperPublisher.js +12 -0
- package/dist/domain/hopperValues.js +112 -34
- package/dist/domain/javascript/electronObservation.js +4 -1
- package/dist/domain/javascript/electronStaticAnalysisBrowser.js +15 -14
- package/dist/domain/javascript/electronStaticAnalysisIpc.js +3 -1
- package/dist/domain/javascript/electronStaticAnalysisNative.js +19 -5
- package/dist/domain/javascript/electronStaticAnalysisValues.js +14 -8
- package/dist/domain/javascript/electronWrappedCallPaths.js +498 -0
- package/dist/domain/javascript/htmlArtifactReferences.js +94 -4
- package/dist/domain/javascript/javascriptAnalysisResourceControls.js +21 -1
- package/dist/domain/javascript/javascriptApplicationAnalysis.js +3 -0
- package/dist/domain/javascript/javascriptApplicationChangeGraph.js +7 -2
- package/dist/domain/javascript/javascriptApplicationEvidenceSchemas.js +1 -1
- package/dist/domain/javascript/javascriptApplicationGraph.js +17 -1
- package/dist/domain/javascript/javascriptApplicationGraphSchemas.js +1 -0
- package/dist/domain/javascript/javascriptApplicationProjectionResources.js +8 -0
- package/dist/domain/javascript/javascriptApplicationVersionKeys.js +31 -18
- package/dist/domain/javascript/javascriptArtifactFiles.js +2 -1
- package/dist/domain/javascript/javascriptAstFingerprint.js +51 -17
- package/dist/domain/javascript/javascriptAstValues.js +52 -3
- package/dist/domain/javascript/javascriptBootstrap.js +94 -0
- package/dist/domain/javascript/javascriptBootstrapIntegrity.js +372 -0
- package/dist/domain/javascript/javascriptBuiltinResourceMethods.js +8 -0
- package/dist/domain/javascript/javascriptBundledRequireOrigin.js +291 -0
- package/dist/domain/javascript/javascriptContextBridgeExposure.js +23 -0
- package/dist/domain/javascript/javascriptElectronMemberWrites.js +86 -22
- package/dist/domain/javascript/javascriptExportShapeComparisonSchemas.js +6 -5
- package/dist/domain/javascript/javascriptExportShapeVariants.js +1 -1
- package/dist/domain/javascript/javascriptFeatureSeed.js +33 -16
- package/dist/domain/javascript/javascriptFeatureTrace.js +9 -3
- package/dist/domain/javascript/javascriptFeatureTraceSchemas.js +42 -11
- package/dist/domain/javascript/javascriptIntrinsicInvocation.js +132 -0
- package/dist/domain/javascript/javascriptModuleDeclaration.js +28 -0
- package/dist/domain/javascript/javascriptModuleInterop.js +618 -0
- package/dist/domain/javascript/javascriptModuleResolutionMode.js +18 -0
- package/dist/domain/javascript/javascriptModuleSpecifier.js +5 -0
- package/dist/domain/javascript/javascriptNativeHandoff.js +0 -1
- package/dist/domain/javascript/javascriptPackageImportAliases.js +58 -0
- package/dist/domain/javascript/javascriptRecovery.js +12 -5
- package/dist/domain/javascript/javascriptRpcEndpoints.js +119 -41
- package/dist/domain/javascript/javascriptRuntimeLoadState.js +11 -0
- package/dist/domain/javascript/javascriptRuntimeObservation.js +4 -1
- package/dist/domain/javascript/javascriptRuntimeReconciliationCaptureParsing.js +10 -4
- package/dist/domain/javascript/javascriptRuntimeReconciliationMatching.js +15 -2
- package/dist/domain/javascript/javascriptRuntimeReconciliationResult.js +0 -1
- package/dist/domain/javascript/javascriptRuntimeReconciliationSchemas.js +5 -4
- package/dist/domain/javascript/javascriptRuntimeStaticCandidates.js +113 -11
- package/dist/domain/javascript/javascriptSemanticAmbientWrites.js +251 -0
- package/dist/domain/javascript/javascriptSemanticAnalysis.js +340 -108
- package/dist/domain/javascript/javascriptSemanticAsyncEffects.js +17 -34
- package/dist/domain/javascript/javascriptSemanticCallResolution.js +4 -3
- package/dist/domain/javascript/javascriptSemanticCallableStack.js +52 -0
- package/dist/domain/javascript/javascriptSemanticCalls.js +6 -11
- package/dist/domain/javascript/javascriptSemanticChildProcesses.js +42 -55
- package/dist/domain/javascript/javascriptSemanticDataEffectHelpers.js +428 -32
- package/dist/domain/javascript/javascriptSemanticDataEffects.js +14 -20
- package/dist/domain/javascript/javascriptSemanticDependencies.js +69 -0
- package/dist/domain/javascript/javascriptSemanticFingerprints.js +11 -14
- package/dist/domain/javascript/javascriptSemanticGraph.js +5 -1
- package/dist/domain/javascript/javascriptSemanticGraphSchemas.js +0 -1
- package/dist/domain/javascript/javascriptSemanticIterationSources.js +2 -2
- package/dist/domain/javascript/javascriptSemanticMemberMutations.js +224 -91
- package/dist/domain/javascript/javascriptSemanticMutationInitializers.js +199 -3
- package/dist/domain/javascript/javascriptSemanticObjectReferences.js +333 -43
- package/dist/domain/javascript/javascriptSemanticObjects.js +20 -16
- package/dist/domain/javascript/javascriptSemanticProjection.js +151 -43
- package/dist/domain/javascript/javascriptSemanticPromises.js +6 -9
- package/dist/domain/javascript/javascriptSemanticProvenance.js +5 -1
- package/dist/domain/javascript/javascriptSemanticQuery.js +7 -2
- package/dist/domain/javascript/javascriptSemanticReferenceSources.js +25 -0
- package/dist/domain/javascript/javascriptSemanticRequireOrigin.js +331 -8
- package/dist/domain/javascript/javascriptSemanticResources.js +6 -40
- package/dist/domain/javascript/javascriptSemanticReturnedReferences.js +14 -0
- package/dist/domain/javascript/javascriptSemanticReturns.js +37 -30
- package/dist/domain/javascript/javascriptSemanticState.js +39 -2
- package/dist/domain/javascript/javascriptSemanticTraversal.js +6 -4
- package/dist/domain/javascript/javascriptSemanticValues.js +227 -30
- package/dist/domain/javascript/javascriptSourceMapPaths.js +44 -17
- package/dist/domain/javascript/javascriptSourceParser.js +72 -3
- package/dist/domain/javascript/javascriptSourceSelection.js +11 -0
- package/dist/domain/javascript/javascriptStaticAnalysis.js +51 -17
- package/dist/domain/javascript/javascriptStaticAnalysisBundler.js +97 -23
- package/dist/domain/javascript/javascriptStaticAnalysisCalls.js +224 -44
- package/dist/domain/javascript/javascriptStaticAnalysisHelpers.js +166 -56
- package/dist/domain/javascript/javascriptStaticAnalysisState.js +1 -0
- package/dist/domain/javascript/javascriptStaticAnalysisTypes.js +2 -1
- package/dist/domain/javascript/javascriptSymbolicBindings.js +836 -0
- package/dist/domain/javascript/javascriptSymbolicControlFlow.js +40 -0
- package/dist/domain/javascript/javascriptSymbolicValues.js +34 -0
- package/dist/domain/javascript/sourceToBundleComparison.js +3 -1
- package/dist/domain/javascript/sourceToBundleComparisonSchemas.js +2 -0
- package/dist/domain/javascript/sourceToBundleSignals.js +47 -13
- package/dist/domain/jsonValue.js +37 -12
- package/dist/domain/localPath.js +6 -3
- package/dist/domain/managed/managedApplicationGraph.js +5 -0
- package/dist/domain/managed/managedApplicationGraphCoverage.js +6 -2
- package/dist/domain/managed/managedApplicationGraphNodes.js +0 -1
- package/dist/domain/managed/managedArtifact.js +51 -1
- package/dist/domain/managed/managedInspectionEvidence.js +5 -6
- package/dist/domain/managed/managedMemberComparison.js +3 -0
- package/dist/domain/managed/managedMemberComparisonCoverage.js +23 -3
- package/dist/domain/managed/managedMemberComparisonItems.js +23 -19
- package/dist/domain/managed/managedMemberComparisonMatch.js +209 -18
- package/dist/domain/managed/managedNativeVerificationMatch.js +49 -26
- package/dist/domain/managed/managedNativeVerificationSchemas.js +13 -2
- package/dist/domain/managed/managedReconstruction.js +5 -8
- package/dist/domain/mobileApplicationGraphProjection.js +80 -0
- package/dist/domain/native/addressCoordinate.js +11 -0
- package/dist/domain/native/binaryLayout.js +2 -4
- package/dist/domain/native/bytePattern.js +100 -0
- package/dist/domain/native/nativeAotPe.js +2 -2
- package/dist/domain/native/nativeInspection.js +38 -4
- package/dist/domain/native/nativeInstruction.js +17 -2
- package/dist/domain/native/nativeInvestigationGraph.js +9 -5
- package/dist/domain/native/nativeLoadImage.js +19 -1
- package/dist/domain/native/nativeUiObservation.js +5 -6
- package/dist/domain/native/objcSwiftMetadata.js +4 -1
- package/dist/domain/native/peResources.js +8 -2
- package/dist/domain/native/recordedCrash.js +79 -10
- package/dist/domain/offsetDateTime.js +60 -0
- package/dist/domain/pcap/pcapAnalysis.js +91 -0
- package/dist/domain/pcap/pcapEvidence.js +15 -0
- package/dist/domain/peMachine.js +36 -0
- package/dist/domain/pngHeader.js +18 -0
- package/dist/domain/process/processCaptureCoverage.js +26 -3
- package/dist/domain/process/processCaptureExample.js +2 -0
- package/dist/domain/process/processCaptureValidation.js +33 -8
- package/dist/domain/process/processComparison.js +41 -13
- package/dist/domain/process/processScenario.js +7 -0
- package/dist/domain/process/processTraceEvaluation.js +54 -50
- package/dist/domain/process/processTraceSpecification.js +243 -89
- package/dist/domain/propertyListKeys.js +211 -11
- package/dist/domain/propertyListXmlText.js +20 -4
- package/dist/domain/providerAdapterError.js +0 -5
- package/dist/domain/providerConfigurationRefusal.js +12 -0
- package/dist/domain/providerSelectionError.js +2 -1
- package/dist/domain/qlogCapture.js +62 -0
- package/dist/domain/rawBinary.js +96 -0
- package/dist/domain/reconstructionCoverage.js +5 -1
- package/dist/domain/reconstructionCoverageEvaluation.js +18 -15
- package/dist/domain/reconstructionCoverageVerifierResults.js +35 -0
- package/dist/domain/reconstructionObligationLedgerIntegrity.js +114 -0
- package/dist/domain/reconstructionObligationLedgerSchemas.js +104 -1
- package/dist/domain/reconstructionReadiness.js +4 -8
- package/dist/domain/reconstructionReadinessJourneyFindings.js +4 -1
- package/dist/domain/reconstructionUnknowns.js +9 -1
- package/dist/domain/reconstructionVerification.js +54 -25
- package/dist/domain/recordedTransportUrl.js +59 -0
- package/dist/domain/referenceSourceClassification.js +27 -23
- package/dist/domain/referenceSourceGraph.js +51 -13
- package/dist/domain/referenceSourceImportParsing.js +23 -13
- package/dist/domain/referenceSourcePathIdentity.js +11 -1
- package/dist/domain/referenceSourceRequireBindings.js +5 -12
- package/dist/domain/referenceSourceSummary.js +92 -0
- package/dist/domain/relationshipCoverage.js +44 -0
- package/dist/domain/residualUnknown.js +93 -26
- package/dist/domain/reverseEngineering.js +31 -0
- package/dist/domain/runtimeVersion.js +8 -0
- package/dist/domain/rust/rustBinary.js +200 -0
- package/dist/domain/signals/annotationTextWindow.js +31 -0
- package/dist/domain/signals/signalDecoders.js +69 -0
- package/dist/domain/signals/signalRecording.js +115 -0
- package/dist/domain/sourceMapContents.js +10 -3
- package/dist/domain/sourceMapEnvelope.js +17 -11
- package/dist/domain/sqlite/sqliteDatabase.js +188 -0
- package/dist/domain/staticRuntimeCorrelation.js +7 -9
- package/dist/domain/swiftSymbolClassification.js +17 -0
- package/dist/domain/symbolAnalysis.js +16 -4
- package/dist/domain/urlComponents.js +6 -0
- package/dist/domain/wasm/wasmArtifact.js +119 -0
- package/dist/domain/wasm/wasmInterface.js +89 -0
- package/dist/domain/webBundleAnalysis.js +14 -3
- package/dist/domain/webBundleAnalyzerAst.js +7 -2
- package/dist/domain/webBundleAnalyzerInspection.js +54 -38
- package/dist/domain/webBundleAnalyzerResult.js +18 -6
- package/dist/domain/webCaptureDiff.js +140 -39
- package/dist/domain/webCaptureFrameComparison.js +49 -0
- package/dist/domain/webMcpDiscovery.js +5 -2
- package/dist/domain/webModuleImports.js +22 -27
- package/dist/domain/webModuleTrace.js +3 -8
- package/dist/domain/webNetworkCapture.js +101 -39
- package/dist/domain/webNetworkCaptureCoordinates.js +21 -0
- package/dist/domain/webRuntime.js +0 -1
- package/dist/domain/webScreenshot.js +2 -2
- package/dist/domain/webScriptArtifacts.js +2 -4
- package/dist/domain/webScriptExport.js +6 -8
- package/dist/domain/webScriptExportPlan.js +2 -2
- package/dist/domain/webSourceLocation.js +20 -9
- package/dist/domain/zipPackageFormat.js +29 -3
- package/dist/dotnet/ManagedArtifactInspector.js +27 -12
- package/dist/dotnet/ManagedDecodeBudget.js +66 -8
- package/dist/dotnet/ManagedMemberInspector.js +101 -21
- package/dist/dotnet/ManagedMemberInspectorCore.js +356 -140
- package/dist/dotnet/ManagedMemberInstructionDecoder.js +109 -37
- package/dist/dotnet/ManagedMemberOwnership.js +65 -0
- package/dist/dotnet/ManagedMemberPointers.js +69 -0
- package/dist/dotnet/ManagedMemberRows.js +179 -46
- package/dist/dotnet/ManagedMetadataHeaps.js +110 -24
- package/dist/dotnet/ManagedMetadataInventory.js +5 -5
- package/dist/dotnet/ManagedMetadataInventoryRows.js +36 -52
- package/dist/dotnet/ManagedMetadataLayout.js +9 -1
- package/dist/dotnet/ManagedMetadataRowSizes.js +1 -1
- package/dist/dotnet/ManagedMethodBodyReader.js +29 -11
- package/dist/dotnet/ManagedMethodSpecs.js +78 -0
- package/dist/dotnet/ManagedNativeBoundaryHelpers.js +2 -2
- package/dist/dotnet/ManagedNativeBoundaryInspector.js +6 -13
- package/dist/dotnet/ManagedPeReader.js +55 -27
- package/dist/dotnet/ManagedReaderFailure.js +9 -0
- package/dist/dotnet/ManagedSnapshot.js +88 -0
- package/dist/dotnet/ManagedStaticProvider.js +55 -64
- package/dist/dotnet/ManagedTypeMemberLists.js +105 -0
- package/dist/dotnet/ManagedTypeNames.js +98 -0
- package/dist/dotnet/ManagedUserStrings.js +75 -0
- package/dist/electron/ElectronFusePath.js +247 -0
- package/dist/electron/ElectronFuseProvider.js +113 -0
- package/dist/electron/ElectronFuseReader.js +317 -0
- package/dist/evaluation/AgentEvaluationFixtures.js +194 -11
- package/dist/evaluation/CodexAgentEval.js +19 -40
- package/dist/evaluation/KnownAnswerEvaluation.js +126 -57
- package/dist/evm/EvmoleFailures.js +19 -14
- package/dist/evm/EvmoleInterfaceAdapter.js +5 -1
- package/dist/evm/EvmoleInterfaceProvider.js +141 -31
- package/dist/evm/EvmoleInterfaceWorker.js +2 -0
- package/dist/evm/SolidityMetadata.js +139 -0
- package/dist/filesystem/OwnedStagedOutput.js +138 -0
- package/dist/filesystem/RegularFile.js +48 -4
- package/dist/filesystem/readFileHandleChunks.js +17 -8
- package/dist/firmware/FirmwareCommand.js +2 -2
- package/dist/firmware/FirmwareFiles.js +8 -12
- package/dist/firmware/FirmwareProvider.js +2 -0
- package/dist/firmware/FirmwarePublication.js +218 -1
- package/dist/firmware/FirmwareReports.js +202 -12
- package/dist/flutter/DartElf.js +418 -0
- package/dist/flutter/ElfBuildId.js +137 -0
- package/dist/flutter/ElfLoadMap.js +91 -0
- package/dist/flutter/FlutterBuildProvider.js +826 -0
- package/dist/flutter/FlutterPayloadScan.js +180 -0
- package/dist/frida/FridaInstrumentationManager.js +1104 -0
- package/dist/gdb/GdbSessionManager.js +1451 -0
- package/dist/generatedPackageMetadata.js +2 -2
- package/dist/ghidra/GhidraAnalysisProfile.js +130 -12
- package/dist/ghidra/GhidraClient.js +195 -88
- package/dist/ghidra/GhidraDiagnostics.js +7 -0
- package/dist/ghidra/GhidraDoctor.js +15 -12
- package/dist/ghidra/GhidraFunctionValues.js +49 -2
- package/dist/ghidra/GhidraInstallation.js +215 -19
- package/dist/ghidra/GhidraInstallationPolicy.js +79 -29
- package/dist/ghidra/GhidraInventoryValues.js +30 -0
- package/dist/ghidra/GhidraJavaLaunch.js +91 -10
- package/dist/ghidra/GhidraJavaProperties.js +117 -0
- package/dist/ghidra/GhidraLanguageCatalog.js +74 -4
- package/dist/ghidra/GhidraLauncher.js +234 -57
- package/dist/ghidra/GhidraLoadImageAttest.js +28 -8
- package/dist/ghidra/GhidraLoadImageValues.js +72 -0
- package/dist/ghidra/GhidraMipsProfile.js +250 -14
- package/dist/ghidra/GhidraPeProfile.js +21 -0
- package/dist/ghidra/GhidraPowerPcProfile.js +51 -0
- package/dist/ghidra/GhidraProvider.js +54 -16
- package/dist/ghidra/GhidraProviderCapabilities.js +13 -12
- package/dist/ghidra/GhidraProviderClient.js +260 -57
- package/dist/ghidra/GhidraPspExtension.js +140 -0
- package/dist/ghidra/GhidraPspProfile.js +59 -0
- package/dist/ghidra/GhidraRawBinaryLanguage.js +40 -0
- package/dist/ghidra/GhidraRiscvProfile.js +100 -0
- package/dist/ghidra/GhidraSessionError.js +155 -11
- package/dist/ghidra/GhidraSessionValues.js +66 -0
- package/dist/ghidra/GhidraTransport.js +2 -1
- package/dist/go/GoBinaryContainer.js +140 -0
- package/dist/go/GoBinaryImage.js +210 -0
- package/dist/go/GoBinaryProvider.js +151 -0
- package/dist/go/GoElfImage.js +211 -0
- package/dist/go/GoMachoImage.js +164 -0
- package/dist/go/GoModuleText.js +217 -0
- package/dist/go/GoPeImage.js +124 -0
- package/dist/hopper/BridgeLauncher.js +35 -2
- package/dist/hopper/HopperAnalysisProfile.js +21 -11
- package/dist/hopper/HopperCleanup.js +15 -3
- package/dist/hopper/HopperClient.js +188 -36
- package/dist/hopper/HopperMacPublisher.js +29 -0
- package/dist/hopper/HopperMachOImage.js +61 -29
- package/dist/hopper/HopperProcessDiagnostic.js +27 -0
- package/dist/hopper/HopperProvider.js +59 -28
- package/dist/hopper/HopperProviderCapabilities.js +7 -3
- package/dist/hopper/HopperRequestQueue.js +17 -5
- package/dist/hopper/HopperSessionValues.js +10 -1
- package/dist/hopper/HopperTargetLease.js +66 -19
- package/dist/ida/IdaBusyHealth.js +44 -0
- package/dist/ida/IdaCallGraph.js +134 -0
- package/dist/ida/IdaConfiguration.js +7 -2
- package/dist/ida/IdaDiagnosticRedactor.js +199 -0
- package/dist/ida/IdaDiagnosticWriter.js +62 -0
- package/dist/ida/IdaDoctor.js +7 -5
- package/dist/ida/IdaJsonDiagnostic.js +138 -0
- package/dist/ida/IdaMcpConnection.js +297 -27
- package/dist/ida/IdaNativeProtocol.js +93 -0
- package/dist/ida/IdaOperationRunner.js +246 -43
- package/dist/ida/IdaProtocolValues.js +86 -4
- package/dist/ida/IdaProvider.js +29 -10
- package/dist/ida/IdaProviderCapabilities.js +37 -8
- package/dist/ida/IdaSessionClient.js +331 -54
- package/dist/ida/IdaWorkspace.js +54 -6
- package/dist/inspector/V8InspectorCaptureProjection.js +7 -2
- package/dist/inspector/V8InspectorEndpoint.js +15 -13
- package/dist/inspector/V8InspectorProvider.js +41 -7
- package/dist/javascript/analysis/JavaScriptAnalysisTransfer.js +19 -8
- package/dist/javascript/analysis/JavaScriptAnalysisWorker.js +103 -29
- package/dist/javascript/analysis/JavaScriptAnalysisWorkerProtocol.js +6 -4
- package/dist/javascript/analysis/JavaScriptAnalysisWorkerSchemas.js +78 -9
- package/dist/javascript/analysis/JavaScriptAnalysisWorkerServer.js +15 -5
- package/dist/javascript/recovery/RecoveryFiles.js +51 -6
- package/dist/javascript/recovery/WakaruExecution.js +19 -11
- package/dist/javascript/recovery/WakaruProvider.js +12 -9
- package/dist/javascript/recovery/WakaruPublication.js +24 -10
- package/dist/javascript/recovery/WakaruRelease.js +1 -1
- package/dist/javascript/recovery/WakaruReport.js +3 -2
- package/dist/javascript/sourceMaps/DecodedSourceMap.js +2 -16
- package/dist/javascript/sourceMaps/SourceMapCommand.js +22 -4
- package/dist/javascript/sourceMaps/SourceMapDecoder.js +22 -4
- package/dist/javascript/sourceMaps/SourceMapFormat.js +25 -38
- package/dist/javascript/sourceMaps/TraceSourceMap.js +34 -6
- package/dist/jeb/JebMcpConnection.js +19 -12
- package/dist/jeb/JebMcpEndpoint.js +6 -1
- package/dist/jeb/JebProvider.js +5 -7
- package/dist/logger.js +14 -1
- package/dist/main/shutdown.js +3 -0
- package/dist/main/transport.js +48 -4
- package/dist/main.js +14 -3
- package/dist/mcp/AnalysisSnapshotFiles-BAbiJQOc.js +1412 -0
- package/dist/mcp/ArtifactProvider-DViCU_rn.js +2183 -0
- package/dist/mcp/ArtifactProviderMetadata-b7pOK5_t.js +76 -0
- package/dist/mcp/ArtifactReader-OyM03Gjn.js +55 -0
- package/dist/mcp/ArtifactResourceScope-P3tq5z8Z.js +162 -0
- package/dist/mcp/AsarHeader-WsPgoooH.js +31 -0
- package/dist/mcp/BinarySessionStatus-B4P9gf-S.js +212 -0
- package/dist/mcp/BinaryTargetResolver-BMaE_0H1.js +1427 -0
- package/dist/mcp/BoundedFileBytes-DuczXiQZ.js +68 -0
- package/dist/mcp/CdpCaptureDocuments-HDiF2O7k.js +746 -0
- package/dist/mcp/CdpCaptureValues-M-j6CIh1.js +90 -0
- package/dist/mcp/CdpConnection-BpDfz4MK.js +570 -0
- package/dist/mcp/CdpOptionalCommand-BPjRD9Kz.js +120 -0
- package/dist/mcp/CdpTargetSession-BsPoKhEU.js +86 -0
- package/dist/mcp/DirectAnalysis-DrafbXke.js +409 -0
- package/dist/mcp/DirectAnalysisStatus-CjjeDLzW.js +44 -0
- package/dist/mcp/ElectronFileScope-BPG_YoyU.js +110 -0
- package/dist/mcp/InterfaceBuilderDecodeBudget-5F2AkxJT.js +652 -0
- package/dist/mcp/ManagedStaticProvider-BthZbKyZ.js +5028 -0
- package/dist/mcp/NativeMacOSProvider-Bh79k8dI.js +4867 -0
- package/dist/mcp/NativeMacOSProviderMetadata-N1lPOaY_.js +307 -0
- package/dist/mcp/ProcedureAddressResolution-CQpuwm1h.js +19 -0
- package/dist/mcp/ProcessOwnership-Bl_3ejLe.js +1502 -0
- package/dist/mcp/ProviderDeadline-DskQ94YD.js +932 -0
- package/dist/mcp/WorkflowEvidence-umWrB_wm.js +111 -0
- package/dist/mcp/analysisErrorCore-DXRTvF_m.js +235 -0
- package/dist/mcp/analysisErrorProjection-BN0EPM-3.js +892 -0
- package/dist/mcp/artifactOperationError-CkHMMaf7.js +27 -0
- package/dist/mcp/artifactToolContracts-Di4qZlEt.js +72 -0
- package/dist/mcp/browserObservation-C0s4i8UI.js +4468 -0
- package/dist/mcp/browserObservationError-CyLugqX4.js +40 -0
- package/dist/mcp/browserObservationSchemas-tgqjH7aA.js +573 -0
- package/dist/mcp/browserScenario-CAQ8Fns9.js +2929 -0
- package/dist/mcp/browserScenarioCapture-CTNFN-FI.js +479 -0
- package/dist/mcp/canonicalDigest-Bi_0_zGi.js +71 -0
- package/dist/mcp/digests-BFoWUT_-.js +223 -0
- package/dist/mcp/electronActiveObservation-lDvQTMR0.js +226 -0
- package/dist/mcp/electronObservation-DFOFEood.js +112 -0
- package/dist/mcp/electronObservation-i7LcILQ-.js +562 -0
- package/dist/mcp/electronScenario-nCzE6IfJ.js +653 -0
- package/dist/mcp/emptyArraySchema-tL6Qymyd.js +140 -0
- package/dist/mcp/enhancedInputs-DgdEnzHy.js +56 -0
- package/dist/mcp/javascriptRuntimeObservation-61NhCf7H.js +690 -0
- package/dist/mcp/javascriptRuntimeObservation-PIUoLfX6.js +121 -0
- package/dist/mcp/jsonSerialization-V-wWiFRE.js +152 -0
- package/dist/mcp/lipo-Bnkoq_6W.js +502 -0
- package/dist/mcp/localPath-AxvW9aPe.js +19 -0
- package/dist/mcp/logger-BQY5ulYv.js +48 -0
- package/dist/mcp/main-kBXHZ8S5.js +69390 -0
- package/dist/mcp/main.js +6 -0
- package/dist/mcp/managedToolContracts-CK--I_s7.js +101 -0
- package/dist/mcp/nativeValueTrace-DR9UE62L.js +3439 -0
- package/dist/mcp/officialToolContracts-B67NJ2tC.js +1413 -0
- package/dist/mcp/pngHeader-DQ-ObyY2.js +147 -0
- package/dist/mcp/propertyListKeys-DD25WsjI.js +553 -0
- package/dist/mcp/providerAdapterError-sDxToNal.js +25 -0
- package/dist/mcp/providerIdentities--ptAh481.js +31 -0
- package/dist/mcp/providerIdentity-BCQ5n5tw.js +16 -0
- package/dist/mcp/providerOperationHealth-CTYa3iLf.js +48 -0
- package/dist/mcp/rolldown-runtime-BjeaiXFo.js +121 -0
- package/dist/mcp/safeJson-NeGfpkrI.js +25 -0
- package/dist/mcp/scanCanonical-CRXSpule.js +3982 -0
- package/dist/mcp/serverIdentity-Cio4iFV3.js +1328 -0
- package/dist/mcp/sourceMapEnvelope-C0uJlrOh.js +94 -0
- package/dist/mcp/toolContracts-BW05wpcr.js +12200 -0
- package/dist/mcp/toolOutputSchemaGroups-ColvNZ1r.js +17533 -0
- package/dist/mcp/unicodeCodePointOrder-BezCbTpg.js +26 -0
- package/dist/mcp/webContentArtifact-Dzjc1z-R.js +284 -0
- package/dist/mcp/webRuntime-K__NYzXm.js +74 -0
- package/dist/mcp/webSourceLocation-DbMAT2J9.js +11130 -0
- package/dist/mcpDoctor.js +93 -70
- package/dist/mcpStartupPolicy.js +3 -0
- package/dist/native/AppleDispatchCoverage.js +57 -17
- package/dist/native/AppleDispatchMetadata.js +6 -2
- package/dist/native/AppleMachoFixups.js +188 -25
- package/dist/native/AppleMachoSelection.js +30 -23
- package/dist/native/AppleObjcCategories.js +1 -2
- package/dist/native/AppleObjcDispatchFacets.js +76 -7
- package/dist/native/CommandRunner.js +142 -32
- package/dist/native/LldbCallTracer.js +5 -3
- package/dist/native/MachoArchitectureSelection.js +50 -0
- package/dist/native/NativeCallObservation.js +2 -1
- package/dist/native/NativeMacOSProvider.js +90 -29
- package/dist/native/NativeMachoInspection.js +136 -76
- package/dist/native/NativeUiObservation.js +2 -2
- package/dist/native/SignatureTargetBinding.js +118 -55
- package/dist/native/parsers/codesign.js +27 -10
- package/dist/native/parsers/demangle.js +7 -1
- package/dist/native/parsers/dyldInfo.js +73 -4
- package/dist/native/parsers/lipo.js +53 -19
- package/dist/native/parsers/machoUuid.js +150 -0
- package/dist/native/parsers/otool.js +232 -29
- package/dist/native/pe/PeResourcesProvider.js +20 -6
- package/dist/native/pwndbg/PwndbgCoreContext.js +20 -20
- package/dist/native/pwntools/PwntoolsDecoder.js +264 -40
- package/dist/native/pwntools/PwntoolsFailures.js +2 -1
- package/dist/native/pwntools/PwntoolsInputLimit.js +27 -0
- package/dist/native/pwntools/PwntoolsRecordedCrashProvider.js +27 -15
- package/dist/native/pwntools/PwntoolsResourceLimits.js +3 -3
- package/dist/native/pwntools/RecordedCrashSourceBindings.js +12 -8
- package/dist/native/pwntools/RecordedCrashStructureBindings.js +3 -1
- package/dist/objdump/ObjdumpCommand.js +21 -0
- package/dist/pcap/PcapCommand.js +146 -0
- package/dist/pcap/PcapConfiguration.js +93 -0
- package/dist/pcap/PcapNativeBound.js +58 -0
- package/dist/pcap/PcapOutput.js +240 -0
- package/dist/pcap/PcapProvider.js +424 -0
- package/dist/pcap/PcapSnapshot.js +171 -0
- package/dist/process/ArtifactAnalysisResources.js +213 -0
- package/dist/process/CurrentEntrypointPath.js +6 -0
- package/dist/process/DarwinProcessRunTokenReader.js +117 -13
- package/dist/process/ExecFileBoundedOutput.js +44 -0
- package/dist/process/ExecFileOutput.js +30 -6
- package/dist/process/JavaScriptWorkerMemoryLimit.js +25 -0
- package/dist/process/LinuxResourceLimits.js +80 -0
- package/dist/process/MacCodeSignature.js +3 -0
- package/dist/process/OwnedCommand.js +37 -13
- package/dist/process/PrivateRuntimeRoot.js +9 -19
- package/dist/process/PrivateRuntimeRootUnavailableError.js +10 -0
- package/dist/process/ProcessOwnership.js +70 -17
- package/dist/process/ProcessOwnershipObservation.js +35 -4
- package/dist/process/ProviderDeadline.js +58 -12
- package/dist/process/ProviderProcess.js +108 -11
- package/dist/process/WindowsAuthority.js +48 -39
- package/dist/process/WindowsBatchCommand.js +46 -0
- package/dist/process/boundedUtf8Text.js +13 -0
- package/dist/process/capture/FilesystemSnapshot.js +60 -9
- package/dist/process/capture/ProcessCaptureClock.js +2 -0
- package/dist/process/capture/ProcessCaptureError.js +22 -3
- package/dist/process/capture/ProcessCaptureJournal.js +2 -1
- package/dist/process/capture/ProcessCaptureLifecycle.js +87 -36
- package/dist/process/capture/ProcessCaptureProgress.js +2 -1
- package/dist/process/capture/ProcessHarness.js +17 -14
- package/dist/process/capture/ProcessNormalization.js +278 -36
- package/dist/process/capture/ProcessSampling.js +3 -2
- package/dist/process/capture/ProcessScenarioRuntimeValidation.js +13 -13
- package/dist/process/capture/TerminalRenderer.js +31 -10
- package/dist/process/ownedDebuggerSession.js +203 -0
- package/dist/reference/ReferenceSourceReader.js +0 -1
- package/dist/reference/ReferenceSourceReaderEntries.js +68 -54
- package/dist/reference/ReferenceSourceReaderErrors.js +5 -1
- package/dist/reference/ReferenceSourceReaderFile.js +0 -1
- package/dist/reference/ReferenceSourceReaderTypes.js +1 -2
- package/dist/reference/ReferenceSourceReaderValidate.js +0 -1
- package/dist/rizin/RizinCommand.js +14 -0
- package/dist/rizin/RizinDebugSessionManager.js +1072 -0
- package/dist/rust/RustAuditableReader.js +309 -0
- package/dist/rust/RustBinaryImage.js +116 -0
- package/dist/rust/RustBinaryProvider.js +162 -0
- package/dist/server/EvidenceMcpServer.js +160 -37
- package/dist/server/admittedToolOperation.js +7 -2
- package/dist/server/contractToolHandler.js +8 -1
- package/dist/server/createServer.js +157 -27
- package/dist/server/externalMutationAdmission.js +50 -0
- package/dist/server/mcpProgress.js +4 -2
- package/dist/server/promptCompletion.js +19 -6
- package/dist/server/providerEnvironment.js +3 -0
- package/dist/server/registerAnalysisViewTool.js +6 -2
- package/dist/server/registerAndroidTools.js +22 -4
- package/dist/server/registerApplicationTools/projectMobileApplicationGraph.js +8 -1
- package/dist/server/registerArtifactTools.js +21 -1
- package/dist/server/registerBrowserTools.js +2 -4
- package/dist/server/registerBundleComparisonTool.js +4 -4
- package/dist/server/registerCaptureTools.js +12 -0
- package/dist/server/registerCutterTools.js +33 -0
- package/dist/server/registerElectronTools.js +12 -9
- package/dist/server/registerEnhancedTools.js +7 -6
- package/dist/server/registerEvidenceTools.js +14 -10
- package/dist/server/registerEvmTools.js +22 -4
- package/dist/server/registerFlutterTools.js +17 -0
- package/dist/server/registerFridaTools.js +205 -0
- package/dist/server/registerFunctionComparisonTool.js +29 -9
- package/dist/server/registerGdbTools.js +64 -0
- package/dist/server/registerGoTools.js +9 -0
- package/dist/server/registerInvestigationTools/helpers.js +2 -2
- package/dist/server/registerInvestigationTools.js +12 -8
- package/dist/server/registerJavaScriptRuntimeObservationTools.js +1 -5
- package/dist/server/registerManagedTools.js +11 -1
- package/dist/server/registerNativeTools.js +14 -0
- package/dist/server/registerOfficialTools.js +5 -0
- package/dist/server/registerPcapTools.js +35 -0
- package/dist/server/registerProcessComparisonTool.js +9 -2
- package/dist/server/registerReverseEngineeringTools.js +86 -0
- package/dist/server/registerRizinDebugTools.js +53 -0
- package/dist/server/registerRustTools.js +9 -0
- package/dist/server/registerSessionRecordTools.js +19 -13
- package/dist/server/registerSessionStatusTool.js +22 -4
- package/dist/server/registerSessionTools.js +29 -16
- package/dist/server/registerSignalTools.js +12 -0
- package/dist/server/registerSqliteTools.js +9 -0
- package/dist/server/registerWasmTools.js +46 -0
- package/dist/server/registerWebNetworkCaptureTool.js +24 -10
- package/dist/server/retainedSummaryDelivery.js +28 -0
- package/dist/server/sessionAvailabilityPolicy.js +3 -0
- package/dist/server/toolRegistrationOptions.js +8 -0
- package/dist/server/toolResult.js +52 -19
- package/dist/server/toolResultEncoding.js +36 -3
- package/dist/serverIdentity.js +17 -8
- package/dist/signals/SigrokRecordingProvider.js +339 -0
- package/dist/signals/parseDecoderDiscovery.js +65 -0
- package/dist/sqlite/SqliteDatabaseFailures.js +134 -0
- package/dist/sqlite/SqliteDatabaseInspection.js +421 -0
- package/dist/sqlite/SqliteDatabaseLimits.js +16 -0
- package/dist/sqlite/SqliteDatabaseProvider.js +295 -0
- package/dist/sqlite/SqliteDatabaseSnapshot.js +156 -0
- package/dist/sqlite/SqliteDatabaseWorker.js +46 -0
- package/dist/sqlite/SqliteDatabaseWorkerExecution.js +112 -0
- package/dist/wasm/WabtArtifactProvider.js +336 -0
- package/dist/wasm/WabtFailures.js +101 -0
- package/dist/wasm/WabtInterface.js +309 -0
- package/dist/wasm/WabtOutput.js +60 -0
- package/dist/wasm/WabtRelease.js +12 -0
- package/dist/wasm/WabtString.js +48 -0
- package/dist/wasm/WabtWat.js +147 -0
- package/dist/wasm/WasmGlueAdapter.js +53 -0
- package/dist/wasm/WasmInterfaceBudget.js +11 -0
- package/dist/windows/WindowsNativeLoader.js +37 -7
- package/dist/windows/WindowsOwnedProcess.js +150 -17
- package/dist/windows/WindowsPrivateRuntime.js +22 -1
- package/install.sh +157 -98
- package/licenses/Apache-2.0.txt +202 -0
- package/licenses/GCC-Runtime-Library-Exception-3.1.txt +73 -0
- package/licenses/GPL-3.0.txt +674 -0
- package/licenses/LGPL-2.0.txt +480 -0
- package/licenses/MIT-template.txt +18 -0
- package/licenses/MinGW-w64-runtime.txt +240 -0
- package/licenses/Node-22.19.0-LICENSE.txt +2666 -0
- package/licenses/README.md +68 -0
- package/licenses/cfworker-MIT.txt +21 -0
- package/licenses/dotnet-runtime-MIT.txt +23 -0
- package/licenses/frida-17.23.2-COPYING.txt +50 -0
- package/licenses/ghidra-12.1.4-DISCLAIMER.txt +13 -0
- package/licenses/ghidra-12.1.4-LICENSE.txt +201 -0
- package/licenses/ghidra-12.1.4-NOTICE.txt +49 -0
- package/licenses/npm-dependencies.txt +3612 -0
- package/licenses/npm-runtime-notices.txt +8548 -0
- package/licenses/upstream-sources.json +72 -0
- package/licenses/xterm-MIT.txt +21 -0
- package/native/windows/README.md +92 -11
- package/native/windows/build/manifest.json +2 -2
- package/native/windows/build/rea-windows-x64.node +0 -0
- package/package.json +89 -22
- package/scripts/electron-active-hook.cjs +4 -1
- package/scripts/hopper-demo-x11.py +53 -3
- package/scripts/prepack.mjs +5 -0
- package/scripts/rea-android-workspace-guardian.mjs +46 -0
- package/scripts/rea.mjs +28 -12
- package/scripts/verify-windows-native-artifact.mjs +2 -2
- package/skills/reverse-engineer-anything/SKILL.md +131 -10
- package/skills/reverse-engineer-anything/references/connection-and-recovery.md +10 -10
- package/skills/reverse-engineer-anything/references/evidence-workflows.md +23 -0
- package/skills/reverse-engineer-anything/references/javascript-applications.md +28 -2
- package/skills/reverse-engineer-anything/references/native-and-artifacts.md +125 -15
- package/skills/reverse-engineer-anything/references/runtime-observation.md +57 -7
- package/third_party/README.md +1 -1
- package/third_party/wabt/README.md +24 -0
- package/dist/browser/history/HarCaptureAdapter.js +0 -20
- package/dist/cli/streamedJsonOutput.js +0 -135
- /package/dist/{application/binary → process}/AbortablePromise.js +0 -0
|
@@ -0,0 +1,1413 @@
|
|
|
1
|
+
import { t as __esmMin } from "./rolldown-runtime-BjeaiXFo.js";
|
|
2
|
+
import { Et as functionDossierSchema, Ot as init_hopperValues, R as init_toolOutputSchemaPrimitives, U as requireOutputSchema, _t as init_nativeInstruction, dt as parseEvidence, it as createEvidence, lt as init_evidence, nn as relationshipCoverageLimitations, tn as init_relationshipCoverage, yt as nativeInstructionInputSchema } from "./nativeValueTrace-DR9UE62L.js";
|
|
3
|
+
import { c as jsonValueSchema, o as init_jsonValue } from "./digests-BFoWUT_-.js";
|
|
4
|
+
import { r as init_unicodeCodePointOrder, t as compareUnicodeCodePoints } from "./unicodeCodePointOrder-BezCbTpg.js";
|
|
5
|
+
import { Da as init_bytePattern, Ei as init_comparisonSemantics, It as init_processComparison, Oa as validateBytePattern, Pt as compareProcessCaptures, Ta as bytePatternFields, Ti as canonicalJson, _ as init_processCapture, an as functionComparisonResultSchema, b as digestProcessCommitment, c as officialOutputSchemas, ca as init_nativeDataType, cn as init_functionComparisonResults, da as init_nativeFunctionAnnotations, dn as unresolvedDimension, fa as nativeFunctionAnnotationsInputSchema, i as init_toolOutputSchemaGroups, ia as toolContractMetadata, la as nativeDataTypeInputSchema, ln as overallStatus, oa as init_canonicalOrdering, on as init_functionComparisonSchemas, ra as init_toolEffects, sa as uniqueSorted, sn as dimensionResult, un as summarize, x as init_processScenario, y as processCaptureSchema } from "./toolOutputSchemaGroups-ColvNZ1r.js";
|
|
6
|
+
import { n as init_canonicalDigest, t as digestCanonicalValue } from "./canonicalDigest-Bi_0_zGi.js";
|
|
7
|
+
import { n as init_enhancedInputs, t as enhancedInputSchemas } from "./enhancedInputs-DgdEnzHy.js";
|
|
8
|
+
import { z } from "zod";
|
|
9
|
+
import { diffLines } from "diff";
|
|
10
|
+
|
|
11
|
+
//#region dist/contracts/analysisSearchContract.js
|
|
12
|
+
var analysisSearchInput;
|
|
13
|
+
function init_analysisSearchContract() {
|
|
14
|
+
return (init_analysisSearchContract = __esmMin((() => {
|
|
15
|
+
analysisSearchInput = {
|
|
16
|
+
pattern: z.string().min(1).describe("The literal text or regex pattern to search for"),
|
|
17
|
+
mode: z.enum(["literal", "regex"]).default("literal"),
|
|
18
|
+
case_sensitive: z.boolean().default(false).describe("Whether to match case"),
|
|
19
|
+
document: z.string().optional().describe("The document name")
|
|
20
|
+
};
|
|
21
|
+
})))();
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
//#endregion
|
|
25
|
+
//#region dist/domain/functionCallCoverage.js
|
|
26
|
+
var callerCoveragePrefix, calleeCoveragePrefix, combineFunctionRelationshipCoverage, isCallerOnlyIncompleteCoverage, functionCallCoverageLimitations;
|
|
27
|
+
function init_functionCallCoverage() {
|
|
28
|
+
return (init_functionCallCoverage = __esmMin((() => {
|
|
29
|
+
init_relationshipCoverage();
|
|
30
|
+
init_canonicalOrdering();
|
|
31
|
+
callerCoveragePrefix = "Callers: ";
|
|
32
|
+
calleeCoveragePrefix = "Callees: ";
|
|
33
|
+
combineFunctionRelationshipCoverage = (callers, callees) => {
|
|
34
|
+
const reads = [{
|
|
35
|
+
direction: "callers",
|
|
36
|
+
coverage: callers
|
|
37
|
+
}, {
|
|
38
|
+
direction: "callees",
|
|
39
|
+
coverage: callees
|
|
40
|
+
}];
|
|
41
|
+
const diagnostics = uniqueSorted(reads.flatMap(({ coverage }) => coverage?.diagnostics ?? []));
|
|
42
|
+
const details = diagnostics.length > 0 ? { diagnostics } : {};
|
|
43
|
+
const callersLimited = callers?.status !== "complete";
|
|
44
|
+
const calleesLimited = callees?.status !== "complete";
|
|
45
|
+
const limited_directions = callersLimited ? calleesLimited ? ["callers", "callees"] : ["callers"] : ["callees"];
|
|
46
|
+
const reasons = reads.flatMap(({ direction, coverage }) => {
|
|
47
|
+
const label = direction === "callers" ? callerCoveragePrefix : calleeCoveragePrefix;
|
|
48
|
+
return relationshipCoverageLimitations(coverage).map((reason) => `${label}${reason}`);
|
|
49
|
+
});
|
|
50
|
+
if (reads.some(({ coverage }) => coverage === undefined || coverage.status === "unknown")) return {
|
|
51
|
+
status: "unknown",
|
|
52
|
+
reason: uniqueSorted(reasons).join(" "),
|
|
53
|
+
limited_directions,
|
|
54
|
+
...details
|
|
55
|
+
};
|
|
56
|
+
if (reasons.length > 0) return {
|
|
57
|
+
status: "partial",
|
|
58
|
+
limitations: uniqueSorted(reasons),
|
|
59
|
+
limited_directions,
|
|
60
|
+
...details
|
|
61
|
+
};
|
|
62
|
+
return {
|
|
63
|
+
status: "complete",
|
|
64
|
+
...details
|
|
65
|
+
};
|
|
66
|
+
};
|
|
67
|
+
isCallerOnlyIncompleteCoverage = (coverage) => {
|
|
68
|
+
if (coverage.status === "complete") return false;
|
|
69
|
+
if (coverage.limited_directions !== undefined) return !coverage.limited_directions.some((direction) => direction === "callees");
|
|
70
|
+
return coverage.status === "unknown" && coverage.reason.startsWith(callerCoveragePrefix) && !coverage.reason.includes(calleeCoveragePrefix);
|
|
71
|
+
};
|
|
72
|
+
functionCallCoverageLimitations = (coverage, dossier) => {
|
|
73
|
+
return uniqueSorted([
|
|
74
|
+
...relationshipCoverageLimitations(coverage),
|
|
75
|
+
...coverage?.status === "complete" ? [] : coverage?.diagnostics ?? [],
|
|
76
|
+
...(dossier.unresolved_calls ?? []).map(({ address, reason }) => `Unresolved call at ${address}: ${reason}`)
|
|
77
|
+
]);
|
|
78
|
+
};
|
|
79
|
+
})))();
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
//#endregion
|
|
83
|
+
//#region dist/contracts/unknownContractExamples.js
|
|
84
|
+
var UNKNOWN_CONTRACT_EXAMPLES;
|
|
85
|
+
function init_unknownContractExamples() {
|
|
86
|
+
return (init_unknownContractExamples = __esmMin((() => {
|
|
87
|
+
UNKNOWN_CONTRACT_EXAMPLES = {
|
|
88
|
+
list_unknowns: {
|
|
89
|
+
offset: 0,
|
|
90
|
+
limit: 50
|
|
91
|
+
},
|
|
92
|
+
record_unknown: {
|
|
93
|
+
question: "Does this branch require an unavailable external service?",
|
|
94
|
+
severity: "medium",
|
|
95
|
+
domain: "protocol",
|
|
96
|
+
required_authority: "controlled-replay",
|
|
97
|
+
required_confidence: "observed",
|
|
98
|
+
required_environment: null,
|
|
99
|
+
recommended_probes: [{
|
|
100
|
+
operation: "capture_process_scenario",
|
|
101
|
+
rationale: "Replay branch."
|
|
102
|
+
}],
|
|
103
|
+
relationships: []
|
|
104
|
+
},
|
|
105
|
+
update_unknown: {
|
|
106
|
+
unknown_id: `unk_${"0".repeat(64)}`,
|
|
107
|
+
expected_revision: 1,
|
|
108
|
+
status: "investigating",
|
|
109
|
+
severity: "medium",
|
|
110
|
+
supporting_evidence_ids: [],
|
|
111
|
+
contradicting_evidence_ids: [],
|
|
112
|
+
required_authority: "controlled-replay",
|
|
113
|
+
required_confidence: "observed",
|
|
114
|
+
required_environment: null,
|
|
115
|
+
recommended_probes: [],
|
|
116
|
+
relationships: [],
|
|
117
|
+
resolution: null
|
|
118
|
+
},
|
|
119
|
+
verify_unknown_resolution: { unknown_id: `unk_${"0".repeat(64)}` }
|
|
120
|
+
};
|
|
121
|
+
})))();
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
//#endregion
|
|
125
|
+
//#region dist/contracts/artifactComparisonExample.js
|
|
126
|
+
var inventory, provider, ARTIFACT_COMPARISON_EXAMPLE;
|
|
127
|
+
function init_artifactComparisonExample() {
|
|
128
|
+
return (init_artifactComparisonExample = __esmMin((() => {
|
|
129
|
+
init_canonicalDigest();
|
|
130
|
+
init_evidence();
|
|
131
|
+
init_jsonValue();
|
|
132
|
+
inventory = (digit) => {
|
|
133
|
+
const sha = digit.repeat(64);
|
|
134
|
+
const artifactId = `art_${digestCanonicalValue({ sha256: sha }, "Artifact example")}`;
|
|
135
|
+
const occurrenceId = `occ_${digestCanonicalValue({ root: artifactId }, "Artifact example")}`;
|
|
136
|
+
const nodes = [{
|
|
137
|
+
artifact_id: artifactId,
|
|
138
|
+
format: "file",
|
|
139
|
+
sha256: sha,
|
|
140
|
+
size: 1,
|
|
141
|
+
media_type: null,
|
|
142
|
+
architecture: null,
|
|
143
|
+
content_state: "materialized",
|
|
144
|
+
limitations: []
|
|
145
|
+
}];
|
|
146
|
+
const occurrences = [{
|
|
147
|
+
occurrence_id: occurrenceId,
|
|
148
|
+
artifact_id: artifactId,
|
|
149
|
+
parent_occurrence_id: null,
|
|
150
|
+
logical_path: ".",
|
|
151
|
+
entry_kind: "file",
|
|
152
|
+
artifact_kind: "resource",
|
|
153
|
+
artifact_format: "file",
|
|
154
|
+
declared_size: 1,
|
|
155
|
+
compressed_size: null,
|
|
156
|
+
executable: false,
|
|
157
|
+
encrypted: false,
|
|
158
|
+
hash_status: "verified",
|
|
159
|
+
source_location: null,
|
|
160
|
+
limitations: []
|
|
161
|
+
}];
|
|
162
|
+
const graphSha256 = digestCanonicalValue({
|
|
163
|
+
nodes,
|
|
164
|
+
occurrences,
|
|
165
|
+
edges: [],
|
|
166
|
+
integrity_contradictions: []
|
|
167
|
+
}, "Artifact example");
|
|
168
|
+
return jsonValueSchema.parse({
|
|
169
|
+
manifest: {
|
|
170
|
+
manifest_id: `agm_${digestCanonicalValue({
|
|
171
|
+
root_artifact_id: artifactId,
|
|
172
|
+
graph_sha256: graphSha256
|
|
173
|
+
}, "Artifact example")}`,
|
|
174
|
+
root_artifact_id: artifactId,
|
|
175
|
+
root_sha256: sha,
|
|
176
|
+
root_format: "file",
|
|
177
|
+
graph_sha256: graphSha256,
|
|
178
|
+
node_count: nodes.length,
|
|
179
|
+
occurrence_count: occurrences.length,
|
|
180
|
+
edge_count: 0
|
|
181
|
+
},
|
|
182
|
+
nodes,
|
|
183
|
+
occurrences,
|
|
184
|
+
edges: [],
|
|
185
|
+
provenance: [],
|
|
186
|
+
limitations: []
|
|
187
|
+
});
|
|
188
|
+
};
|
|
189
|
+
provider = {
|
|
190
|
+
id: "rea-artifact",
|
|
191
|
+
name: "REA artifact graph",
|
|
192
|
+
version: "1"
|
|
193
|
+
};
|
|
194
|
+
ARTIFACT_COMPARISON_EXAMPLE = {
|
|
195
|
+
left: createEvidence({
|
|
196
|
+
path: "fixture-left",
|
|
197
|
+
sha256: "0".repeat(64),
|
|
198
|
+
format: "file"
|
|
199
|
+
}, provider, {
|
|
200
|
+
operation: "inventory_artifact",
|
|
201
|
+
parameters: {},
|
|
202
|
+
result: inventory("0"),
|
|
203
|
+
confidence: "observed",
|
|
204
|
+
authority: "shipped-artifact"
|
|
205
|
+
}),
|
|
206
|
+
right: createEvidence({
|
|
207
|
+
path: "fixture-right",
|
|
208
|
+
sha256: "1".repeat(64),
|
|
209
|
+
format: "file"
|
|
210
|
+
}, provider, {
|
|
211
|
+
operation: "inventory_artifact",
|
|
212
|
+
parameters: {},
|
|
213
|
+
result: inventory("1"),
|
|
214
|
+
confidence: "observed",
|
|
215
|
+
authority: "shipped-artifact"
|
|
216
|
+
})
|
|
217
|
+
};
|
|
218
|
+
})))();
|
|
219
|
+
}
|
|
220
|
+
|
|
221
|
+
//#endregion
|
|
222
|
+
//#region dist/contracts/functionComparisonExample.js
|
|
223
|
+
var dossier, observe, FUNCTION_COMPARISON_EXAMPLE;
|
|
224
|
+
function init_functionComparisonExample() {
|
|
225
|
+
return (init_functionComparisonExample = __esmMin((() => {
|
|
226
|
+
init_enhancedInputs();
|
|
227
|
+
init_evidence();
|
|
228
|
+
init_jsonValue();
|
|
229
|
+
dossier = (text) => jsonValueSchema.parse({
|
|
230
|
+
procedure: {
|
|
231
|
+
address: "0x1000",
|
|
232
|
+
name: "main",
|
|
233
|
+
classification: null,
|
|
234
|
+
body: {
|
|
235
|
+
available: false,
|
|
236
|
+
reason: "The fixture omits function-body extent observations."
|
|
237
|
+
},
|
|
238
|
+
signature: "int main(void)",
|
|
239
|
+
locals: []
|
|
240
|
+
},
|
|
241
|
+
pseudocode: text,
|
|
242
|
+
assembly: ["ret"],
|
|
243
|
+
comments: [],
|
|
244
|
+
callers: [],
|
|
245
|
+
callees: [],
|
|
246
|
+
incoming_references: [],
|
|
247
|
+
outgoing_references: [],
|
|
248
|
+
referenced_strings: [],
|
|
249
|
+
referenced_names: [],
|
|
250
|
+
basic_blocks: [{
|
|
251
|
+
start: "0x1000",
|
|
252
|
+
end: "0x1001",
|
|
253
|
+
successors: []
|
|
254
|
+
}],
|
|
255
|
+
native_api: null,
|
|
256
|
+
native_value_flow: null,
|
|
257
|
+
facet_availability: {
|
|
258
|
+
pseudocode: { available: true },
|
|
259
|
+
assembly: { available: true },
|
|
260
|
+
comments: { available: true },
|
|
261
|
+
callers: { available: true },
|
|
262
|
+
callees: { available: true },
|
|
263
|
+
references: { available: true },
|
|
264
|
+
strings_names: { available: true },
|
|
265
|
+
cfg: { available: true }
|
|
266
|
+
},
|
|
267
|
+
limitations: ["The fixture omits native API and value-flow observations."]
|
|
268
|
+
});
|
|
269
|
+
observe = (digit, text) => createEvidence({
|
|
270
|
+
path: `/tmp/function-${digit}`,
|
|
271
|
+
sha256: digit.repeat(64),
|
|
272
|
+
format: "mach-o"
|
|
273
|
+
}, {
|
|
274
|
+
id: "rea-workflow",
|
|
275
|
+
name: "REA composed investigation workflow",
|
|
276
|
+
version: "1"
|
|
277
|
+
}, {
|
|
278
|
+
operation: "analyze_function",
|
|
279
|
+
parameters: enhancedInputSchemas.analyze_function.parse({ procedure: "main" }),
|
|
280
|
+
result: dossier(text),
|
|
281
|
+
confidence: "derived",
|
|
282
|
+
authority: "shipped-artifact",
|
|
283
|
+
relationshipCoverage: { status: "complete" }
|
|
284
|
+
});
|
|
285
|
+
FUNCTION_COMPARISON_EXAMPLE = {
|
|
286
|
+
left: observe("0", "return 0;"),
|
|
287
|
+
right: observe("1", "return 1;")
|
|
288
|
+
};
|
|
289
|
+
})))();
|
|
290
|
+
}
|
|
291
|
+
|
|
292
|
+
//#endregion
|
|
293
|
+
//#region dist/domain/process/processCaptureParsing.js
|
|
294
|
+
var verifiedCaptures, isVerifiedCapture, attachProof, parseProcessCapture;
|
|
295
|
+
function init_processCaptureParsing() {
|
|
296
|
+
return (init_processCaptureParsing = __esmMin((() => {
|
|
297
|
+
init_processCapture();
|
|
298
|
+
verifiedCaptures = new WeakSet();
|
|
299
|
+
isVerifiedCapture = (capture) => verifiedCaptures.has(capture);
|
|
300
|
+
attachProof = (capture) => {
|
|
301
|
+
verifiedCaptures.add(capture);
|
|
302
|
+
if (isVerifiedCapture(capture)) return capture;
|
|
303
|
+
throw new TypeError("Process Capture proof ownership failed");
|
|
304
|
+
};
|
|
305
|
+
parseProcessCapture = (input) => {
|
|
306
|
+
const parsed = processCaptureSchema.safeParse(input);
|
|
307
|
+
if (parsed.success) return attachProof(parsed.data);
|
|
308
|
+
const issues = parsed.error.issues.flatMap((issue) => issue.code === "custom" ? [{
|
|
309
|
+
path: issue.path.join("."),
|
|
310
|
+
message: issue.message
|
|
311
|
+
}] : []);
|
|
312
|
+
if (issues.length > 0) throw new TypeError(`Invalid process capture: ${issues.map(({ path, message }) => `${path}: ${message}`).join("; ")}`);
|
|
313
|
+
throw parsed.error;
|
|
314
|
+
};
|
|
315
|
+
})))();
|
|
316
|
+
}
|
|
317
|
+
|
|
318
|
+
//#endregion
|
|
319
|
+
//#region dist/domain/process/processCaptureExample.js
|
|
320
|
+
var normalization, scenario, comparisonContract, EMPTY_PROCESS_CAPTURE_EXAMPLE, finalizedScenario, finalizedComparisonContract, FINALIZED_PROCESS_CAPTURE_EXAMPLE;
|
|
321
|
+
function init_processCaptureExample() {
|
|
322
|
+
return (init_processCaptureExample = __esmMin((() => {
|
|
323
|
+
init_processScenario();
|
|
324
|
+
normalization = {
|
|
325
|
+
paths: true,
|
|
326
|
+
pids: true,
|
|
327
|
+
ports: true,
|
|
328
|
+
time_bucket_ms: 10,
|
|
329
|
+
patterns: []
|
|
330
|
+
};
|
|
331
|
+
scenario = { executable_sha256: "0".repeat(64) };
|
|
332
|
+
comparisonContract = {};
|
|
333
|
+
EMPTY_PROCESS_CAPTURE_EXAMPLE = {
|
|
334
|
+
manifest: {
|
|
335
|
+
rea_version: "1.1.0",
|
|
336
|
+
provider_version: "3",
|
|
337
|
+
platform: "fixture",
|
|
338
|
+
architecture: "fixture",
|
|
339
|
+
pty_backend: "node-pty",
|
|
340
|
+
started_at: "2026-01-01T00:00:00.000Z",
|
|
341
|
+
completed_at: "2026-01-01T00:00:00.001Z",
|
|
342
|
+
scenario,
|
|
343
|
+
comparison_contract: comparisonContract,
|
|
344
|
+
full_scenario_sha256: digestProcessCommitment(scenario),
|
|
345
|
+
comparison_contract_sha256: digestProcessCommitment(comparisonContract),
|
|
346
|
+
selected_executable_sha256: "0".repeat(64),
|
|
347
|
+
executable_sha256: "0".repeat(64),
|
|
348
|
+
executable_identity: {
|
|
349
|
+
state: "path_metadata_unchanged",
|
|
350
|
+
reason: null
|
|
351
|
+
},
|
|
352
|
+
normalization_sha256: digestProcessCommitment(normalization)
|
|
353
|
+
},
|
|
354
|
+
normalization,
|
|
355
|
+
frames: [],
|
|
356
|
+
rendered_frames: [],
|
|
357
|
+
interaction_events: [],
|
|
358
|
+
exit: {
|
|
359
|
+
code: 0,
|
|
360
|
+
signal: null,
|
|
361
|
+
reason: "exited"
|
|
362
|
+
},
|
|
363
|
+
settlement: {
|
|
364
|
+
state: "quiesced",
|
|
365
|
+
elapsed_ms: 50,
|
|
366
|
+
cleanup_outcome: "not_required"
|
|
367
|
+
},
|
|
368
|
+
process_samples: [],
|
|
369
|
+
filesystem_checkpoints: [{
|
|
370
|
+
name: "before",
|
|
371
|
+
at_ms: 0,
|
|
372
|
+
files: [],
|
|
373
|
+
effects: [],
|
|
374
|
+
truncated: false
|
|
375
|
+
}, {
|
|
376
|
+
name: "after_settlement",
|
|
377
|
+
at_ms: 50,
|
|
378
|
+
files: [],
|
|
379
|
+
effects: [],
|
|
380
|
+
truncated: false
|
|
381
|
+
}],
|
|
382
|
+
event_journal: [],
|
|
383
|
+
files_before: [],
|
|
384
|
+
files_after: [],
|
|
385
|
+
filesystem_effects: [],
|
|
386
|
+
truncated: false,
|
|
387
|
+
truncation_details: {
|
|
388
|
+
raw_terminal: {
|
|
389
|
+
budget_bytes: 1e6,
|
|
390
|
+
observed_bytes: 0,
|
|
391
|
+
retained_bytes: 0,
|
|
392
|
+
observed_frames: 0,
|
|
393
|
+
retained_frames: 0
|
|
394
|
+
},
|
|
395
|
+
rendered_terminal: {
|
|
396
|
+
budget_bytes: 1e6,
|
|
397
|
+
observed_bytes: 0,
|
|
398
|
+
retained_bytes: 0,
|
|
399
|
+
observed_frames: 0,
|
|
400
|
+
retained_frames: 0
|
|
401
|
+
},
|
|
402
|
+
filesystem_before: {
|
|
403
|
+
files_limit: 1e4,
|
|
404
|
+
depth_limit: 16,
|
|
405
|
+
enumeration_truncated: false,
|
|
406
|
+
enumeration_reasons: [],
|
|
407
|
+
enumeration_omissions: [],
|
|
408
|
+
hash_budget_bytes: 1e7,
|
|
409
|
+
hashed_bytes: 0,
|
|
410
|
+
hash_omissions: []
|
|
411
|
+
},
|
|
412
|
+
filesystem_after: {
|
|
413
|
+
files_limit: 1e4,
|
|
414
|
+
depth_limit: 16,
|
|
415
|
+
enumeration_truncated: false,
|
|
416
|
+
enumeration_reasons: [],
|
|
417
|
+
enumeration_omissions: [],
|
|
418
|
+
hash_budget_bytes: 1e7,
|
|
419
|
+
hashed_bytes: 0,
|
|
420
|
+
hash_omissions: []
|
|
421
|
+
},
|
|
422
|
+
process: {
|
|
423
|
+
sample_limit: 1e3,
|
|
424
|
+
sampling_partial: false,
|
|
425
|
+
retained_samples: 0,
|
|
426
|
+
sample_limit_reached: false,
|
|
427
|
+
sampling_failures: 0,
|
|
428
|
+
first_sampling_failure: null,
|
|
429
|
+
coverage: "sampled"
|
|
430
|
+
}
|
|
431
|
+
},
|
|
432
|
+
limitations: [],
|
|
433
|
+
residual_unknowns: [],
|
|
434
|
+
cleanup: {
|
|
435
|
+
owned_process_group: "verified",
|
|
436
|
+
temporary_root: "removed"
|
|
437
|
+
}
|
|
438
|
+
};
|
|
439
|
+
finalizedScenario = {
|
|
440
|
+
...scenario,
|
|
441
|
+
finalization_ms: 1500
|
|
442
|
+
};
|
|
443
|
+
finalizedComparisonContract = { finalization_ms: 1500 };
|
|
444
|
+
FINALIZED_PROCESS_CAPTURE_EXAMPLE = {
|
|
445
|
+
...EMPTY_PROCESS_CAPTURE_EXAMPLE,
|
|
446
|
+
manifest: {
|
|
447
|
+
...EMPTY_PROCESS_CAPTURE_EXAMPLE.manifest,
|
|
448
|
+
scenario: finalizedScenario,
|
|
449
|
+
comparison_contract: finalizedComparisonContract,
|
|
450
|
+
full_scenario_sha256: digestProcessCommitment(finalizedScenario),
|
|
451
|
+
comparison_contract_sha256: digestProcessCommitment(finalizedComparisonContract)
|
|
452
|
+
},
|
|
453
|
+
exit: {
|
|
454
|
+
code: null,
|
|
455
|
+
signal: 0,
|
|
456
|
+
reason: "timeout",
|
|
457
|
+
finalization: {
|
|
458
|
+
requested_ms: 1500,
|
|
459
|
+
elapsed_ms: 12,
|
|
460
|
+
exit_code: 0,
|
|
461
|
+
signals: [{
|
|
462
|
+
signal: "SIGTERM",
|
|
463
|
+
sent_at_ms: 0,
|
|
464
|
+
delivery: "signaled"
|
|
465
|
+
}]
|
|
466
|
+
}
|
|
467
|
+
}
|
|
468
|
+
};
|
|
469
|
+
})))();
|
|
470
|
+
}
|
|
471
|
+
|
|
472
|
+
//#endregion
|
|
473
|
+
//#region dist/domain/functionDossierEvidence.js
|
|
474
|
+
var parseFunctionEvidence;
|
|
475
|
+
function init_functionDossierEvidence() {
|
|
476
|
+
return (init_functionDossierEvidence = __esmMin((() => {
|
|
477
|
+
init_evidence();
|
|
478
|
+
init_unicodeCodePointOrder();
|
|
479
|
+
init_hopperValues();
|
|
480
|
+
init_functionCallCoverage();
|
|
481
|
+
parseFunctionEvidence = (input) => {
|
|
482
|
+
const evidence = parseEvidence(input);
|
|
483
|
+
if (evidence.operation !== "analyze_function") throw new TypeError("Function comparison requires analyze_function Evidence");
|
|
484
|
+
if (evidence.subject === null) throw new TypeError("Function comparison requires artifact-bound Evidence");
|
|
485
|
+
const dossier = functionDossierSchema.parse(evidence.normalized_result);
|
|
486
|
+
const callCoverageLimitations = functionCallCoverageLimitations(evidence.relationship_coverage, dossier);
|
|
487
|
+
return {
|
|
488
|
+
evidence,
|
|
489
|
+
subject: evidence.subject,
|
|
490
|
+
dossier,
|
|
491
|
+
limitations: [...new Set([...evidence.limitations, ...dossier.limitations])].sort((left, right) => compareUnicodeCodePoints(left, right)),
|
|
492
|
+
callCoverageLimitations
|
|
493
|
+
};
|
|
494
|
+
};
|
|
495
|
+
})))();
|
|
496
|
+
}
|
|
497
|
+
|
|
498
|
+
//#endregion
|
|
499
|
+
//#region dist/domain/functionComparisonNormalization.js
|
|
500
|
+
var identityProjection, functionMatch, normalizeCfg, referenceProjection, referenceKindProjection, commentProjection, stringAndNameProjection, swiftLiteralSitesConflict, swiftLiteralSites, sorted, isAutoName, parseAddress, relativeAddress;
|
|
501
|
+
function init_functionComparisonNormalization() {
|
|
502
|
+
return (init_functionComparisonNormalization = __esmMin((() => {
|
|
503
|
+
init_comparisonSemantics();
|
|
504
|
+
init_unicodeCodePointOrder();
|
|
505
|
+
identityProjection = (snapshot) => ({
|
|
506
|
+
name: snapshot.dossier.procedure.name,
|
|
507
|
+
signature: snapshot.dossier.procedure.signature,
|
|
508
|
+
locals: snapshot.dossier.procedure.locals.map(({ description }) => description).sort()
|
|
509
|
+
});
|
|
510
|
+
functionMatch = (left, right) => {
|
|
511
|
+
const leftName = left.dossier.procedure.name;
|
|
512
|
+
const rightName = right.dossier.procedure.name;
|
|
513
|
+
const stableNames = !isAutoName(leftName) && !isAutoName(rightName);
|
|
514
|
+
if (stableNames && leftName === rightName) return {
|
|
515
|
+
status: "matched",
|
|
516
|
+
method: "symbol",
|
|
517
|
+
left_name: leftName,
|
|
518
|
+
right_name: rightName
|
|
519
|
+
};
|
|
520
|
+
return {
|
|
521
|
+
status: stableNames ? "mismatched" : "ambiguous",
|
|
522
|
+
method: "explicit",
|
|
523
|
+
left_name: leftName,
|
|
524
|
+
right_name: rightName
|
|
525
|
+
};
|
|
526
|
+
};
|
|
527
|
+
normalizeCfg = (blocks) => {
|
|
528
|
+
const parsed = [];
|
|
529
|
+
for (const block of blocks) {
|
|
530
|
+
const start = parseAddress(block.start);
|
|
531
|
+
const end = parseAddress(block.end);
|
|
532
|
+
if (start === null || end === null || end <= start) return null;
|
|
533
|
+
parsed.push({
|
|
534
|
+
block,
|
|
535
|
+
start,
|
|
536
|
+
end
|
|
537
|
+
});
|
|
538
|
+
}
|
|
539
|
+
const ordered = parsed.sort((left, right) => left.start < right.start ? -1 : left.start > right.start ? 1 : 0);
|
|
540
|
+
if (new Set(ordered.map(({ start }) => start)).size !== ordered.length) return null;
|
|
541
|
+
const indices = new Map(ordered.map(({ start }, index) => [start, index]));
|
|
542
|
+
const graph = [];
|
|
543
|
+
for (const { block, start, end } of ordered) {
|
|
544
|
+
const successors = [];
|
|
545
|
+
for (const address of block.successors) {
|
|
546
|
+
const parsedAddress = parseAddress(address);
|
|
547
|
+
if (parsedAddress === null) return null;
|
|
548
|
+
const index = indices.get(parsedAddress);
|
|
549
|
+
if (index === undefined) return null;
|
|
550
|
+
successors.push(index);
|
|
551
|
+
}
|
|
552
|
+
graph.push({
|
|
553
|
+
size: String(end - start),
|
|
554
|
+
successors: successors.sort((left, right) => left - right)
|
|
555
|
+
});
|
|
556
|
+
}
|
|
557
|
+
return graph;
|
|
558
|
+
};
|
|
559
|
+
referenceProjection = (snapshot) => sorted([...snapshot.dossier.incoming_references.map((item) => ({
|
|
560
|
+
direction: "in",
|
|
561
|
+
source: item.source_procedure?.name ?? null,
|
|
562
|
+
target: item.target_procedure?.name ?? null
|
|
563
|
+
})), ...snapshot.dossier.outgoing_references.map((item) => ({
|
|
564
|
+
direction: "out",
|
|
565
|
+
source: item.source_procedure?.name ?? null,
|
|
566
|
+
target: item.target_procedure?.name ?? null
|
|
567
|
+
}))]);
|
|
568
|
+
referenceKindProjection = (snapshot) => {
|
|
569
|
+
const edges = [...snapshot.dossier.incoming_references.map((edge) => ({
|
|
570
|
+
direction: "in",
|
|
571
|
+
edge
|
|
572
|
+
})), ...snapshot.dossier.outgoing_references.map((edge) => ({
|
|
573
|
+
direction: "out",
|
|
574
|
+
edge
|
|
575
|
+
}))];
|
|
576
|
+
if (edges.some(({ edge }) => !edge.kind.available)) return null;
|
|
577
|
+
return sorted(edges.map(({ direction, edge }) => {
|
|
578
|
+
if (!edge.kind.available) throw new TypeError("Reference-kind availability changed during projection");
|
|
579
|
+
return {
|
|
580
|
+
direction,
|
|
581
|
+
source: edge.source_procedure?.name ?? null,
|
|
582
|
+
target: edge.target_procedure?.name ?? null,
|
|
583
|
+
type: edge.kind.type,
|
|
584
|
+
flow: edge.kind.flow,
|
|
585
|
+
call: edge.kind.call,
|
|
586
|
+
jump: edge.kind.jump,
|
|
587
|
+
data: edge.kind.data,
|
|
588
|
+
read: edge.kind.read,
|
|
589
|
+
write: edge.kind.write,
|
|
590
|
+
indirect: edge.kind.indirect,
|
|
591
|
+
computed: edge.kind.computed,
|
|
592
|
+
conditional: edge.kind.conditional,
|
|
593
|
+
terminal: edge.kind.terminal,
|
|
594
|
+
primary: edge.kind.primary,
|
|
595
|
+
operand_index: edge.kind.operand_index,
|
|
596
|
+
external: edge.kind.external
|
|
597
|
+
};
|
|
598
|
+
}));
|
|
599
|
+
};
|
|
600
|
+
commentProjection = (snapshot) => {
|
|
601
|
+
const values = snapshot.dossier.comments.map(({ address, kind, text }) => ({
|
|
602
|
+
offset: relativeAddress(address, snapshot.dossier.procedure.address),
|
|
603
|
+
kind,
|
|
604
|
+
text
|
|
605
|
+
}));
|
|
606
|
+
return values.some(({ offset }) => offset === null) ? null : sorted(values);
|
|
607
|
+
};
|
|
608
|
+
stringAndNameProjection = (snapshot, includeSwiftLiterals = true) => {
|
|
609
|
+
const values = [
|
|
610
|
+
...snapshot.dossier.referenced_strings.map(({ source_address: sourceAddress, value }) => ({
|
|
611
|
+
kind: "string",
|
|
612
|
+
source_offset: relativeAddress(sourceAddress, snapshot.dossier.procedure.address),
|
|
613
|
+
value
|
|
614
|
+
})),
|
|
615
|
+
...snapshot.dossier.referenced_names.map(({ source_address: sourceAddress, value }) => ({
|
|
616
|
+
kind: "name",
|
|
617
|
+
source_offset: relativeAddress(sourceAddress, snapshot.dossier.procedure.address),
|
|
618
|
+
value
|
|
619
|
+
})),
|
|
620
|
+
...(includeSwiftLiterals ? snapshot.dossier.swift_string_literals ?? [] : []).map(({ source_address: sourceAddress, value, representation, registers }) => ({
|
|
621
|
+
kind: "swift_string",
|
|
622
|
+
source_offset: relativeAddress(sourceAddress, snapshot.dossier.procedure.address),
|
|
623
|
+
value,
|
|
624
|
+
representation,
|
|
625
|
+
registers
|
|
626
|
+
}))
|
|
627
|
+
];
|
|
628
|
+
return values.some(({ source_offset: offset }) => offset === null) ? null : sorted(values);
|
|
629
|
+
};
|
|
630
|
+
swiftLiteralSitesConflict = (left, right) => {
|
|
631
|
+
const leftSites = swiftLiteralSites(left);
|
|
632
|
+
const rightSites = swiftLiteralSites(right);
|
|
633
|
+
for (const site of new Set([...leftSites.values.keys(), ...rightSites.values.keys()])) {
|
|
634
|
+
const leftValues = leftSites.values.get(site) ?? (leftSites.complete ? [] : undefined);
|
|
635
|
+
const rightValues = rightSites.values.get(site) ?? (rightSites.complete ? [] : undefined);
|
|
636
|
+
if (leftValues === undefined || rightValues === undefined) continue;
|
|
637
|
+
const leftFacts = new Set(leftValues);
|
|
638
|
+
const rightFacts = new Set(rightValues);
|
|
639
|
+
if (rightSites.complete && leftValues.some((value) => !rightFacts.has(value)) || leftSites.complete && rightValues.some((value) => !leftFacts.has(value))) return true;
|
|
640
|
+
}
|
|
641
|
+
return false;
|
|
642
|
+
};
|
|
643
|
+
swiftLiteralSites = (snapshot) => {
|
|
644
|
+
const base = snapshot.dossier.procedure.address;
|
|
645
|
+
const omissions = snapshot.dossier.swift_string_literal_omissions ?? [];
|
|
646
|
+
const site = (sourceAddress, registers) => {
|
|
647
|
+
const offset = relativeAddress(sourceAddress, base);
|
|
648
|
+
return offset === null ? null : canonicalJson([offset, registers]);
|
|
649
|
+
};
|
|
650
|
+
const values = new Map();
|
|
651
|
+
for (const literal of snapshot.dossier.swift_string_literals ?? []) {
|
|
652
|
+
const key = site(literal.source_address, literal.registers);
|
|
653
|
+
if (key === null) continue;
|
|
654
|
+
values.set(key, [...values.get(key) ?? [], canonicalJson([literal.value, literal.representation])].sort(compareUnicodeCodePoints));
|
|
655
|
+
}
|
|
656
|
+
const complete = snapshot.dossier.swift_string_literals !== undefined && omissions.length === 0;
|
|
657
|
+
return {
|
|
658
|
+
values,
|
|
659
|
+
complete
|
|
660
|
+
};
|
|
661
|
+
};
|
|
662
|
+
sorted = (values) => values.map((value) => ({
|
|
663
|
+
value,
|
|
664
|
+
json: canonicalJson(value, "Function normalization")
|
|
665
|
+
})).sort((left, right) => compareUnicodeCodePoints(left.json, right.json)).map(({ value }) => value);
|
|
666
|
+
isAutoName = (name) => /^(?:sub_[0-9a-f]+|fcn\.[0-9a-f]+|FUN_[0-9a-f]+)$/iu.test(name);
|
|
667
|
+
parseAddress = (value) => /^0x[0-9a-f]+$/iu.test(value) ? BigInt(value) : null;
|
|
668
|
+
relativeAddress = (value, base) => {
|
|
669
|
+
const parsed = parseAddress(value);
|
|
670
|
+
const parsedBase = parseAddress(base);
|
|
671
|
+
return parsed === null || parsedBase === null || parsed < parsedBase ? null : String(parsed - parsedBase);
|
|
672
|
+
};
|
|
673
|
+
})))();
|
|
674
|
+
}
|
|
675
|
+
|
|
676
|
+
//#endregion
|
|
677
|
+
//#region dist/domain/functionComparisonDimensions.js
|
|
678
|
+
var compareDimensions, facetLimitations, compareText, compareComments, compareStringsAndNames, swiftLiteralCoverage, compareReferences, compareIdentity, compareCalls, callProjection, compareCfg, compareValues;
|
|
679
|
+
function init_functionComparisonDimensions() {
|
|
680
|
+
return (init_functionComparisonDimensions = __esmMin((() => {
|
|
681
|
+
init_comparisonSemantics();
|
|
682
|
+
init_functionComparisonNormalization();
|
|
683
|
+
init_functionComparisonResults();
|
|
684
|
+
compareDimensions = (left, right, context) => {
|
|
685
|
+
return [
|
|
686
|
+
compareIdentity(left, right, context),
|
|
687
|
+
compareText("pseudocode", left.dossier.pseudocode, right.dossier.pseudocode, context),
|
|
688
|
+
compareText("assembly", left.dossier.assembly.join("\n"), right.dossier.assembly.join("\n"), context),
|
|
689
|
+
compareComments(left, right, context),
|
|
690
|
+
compareCalls(left, right, context),
|
|
691
|
+
compareReferences(left, right, context),
|
|
692
|
+
compareStringsAndNames(left, right, context),
|
|
693
|
+
compareCfg(left, right, context)
|
|
694
|
+
].map((result) => {
|
|
695
|
+
const limitations = [...facetLimitations(left, result.dimension).map((reason) => `Left: ${reason}`), ...facetLimitations(right, result.dimension).map((reason) => `Right: ${reason}`)];
|
|
696
|
+
return limitations.length === 0 ? result : unresolvedDimension({
|
|
697
|
+
dimension: result.dimension,
|
|
698
|
+
links: context.links,
|
|
699
|
+
leftCount: null,
|
|
700
|
+
rightCount: null,
|
|
701
|
+
limitations: [...result.limitations, ...limitations]
|
|
702
|
+
});
|
|
703
|
+
});
|
|
704
|
+
};
|
|
705
|
+
facetLimitations = (snapshot, dimension) => {
|
|
706
|
+
const { dossier } = snapshot;
|
|
707
|
+
const fields = {
|
|
708
|
+
identity: [],
|
|
709
|
+
pseudocode: [["pseudocode", dossier.pseudocode.length]],
|
|
710
|
+
assembly: [["assembly", dossier.assembly.length]],
|
|
711
|
+
comments: [["comments", dossier.comments.length]],
|
|
712
|
+
calls: [["callers", dossier.callers.length], ["callees", dossier.callees.length]],
|
|
713
|
+
references: [["references", dossier.incoming_references.length + dossier.outgoing_references.length]],
|
|
714
|
+
strings_names: [["strings_names", dossier.referenced_strings.length + dossier.referenced_names.length]],
|
|
715
|
+
cfg: [["cfg", dossier.basic_blocks.length]]
|
|
716
|
+
};
|
|
717
|
+
return fields[dimension].flatMap(([field, count]) => {
|
|
718
|
+
const availability = dossier.facet_availability?.[field];
|
|
719
|
+
if (availability?.available === false) return [`${field}: ${availability.reason}`];
|
|
720
|
+
return availability === undefined && count === 0 ? [`${field}: Provider did not declare coverage for this empty facet.`] : [];
|
|
721
|
+
});
|
|
722
|
+
};
|
|
723
|
+
compareText = (dimension, left, right, context) => {
|
|
724
|
+
const limitations = ["Exact provider text is compared without address or generated-name normalization; layout-only differences do not establish a behavior change.", ...dimension === "assembly" ? ["Assembly is opaque provider text; relocation normalization is unavailable."] : []];
|
|
725
|
+
if (context.providersDiffer) return unresolvedDimension({
|
|
726
|
+
dimension,
|
|
727
|
+
links: context.links,
|
|
728
|
+
leftCount: [...left].length,
|
|
729
|
+
rightCount: [...right].length,
|
|
730
|
+
limitations: [...limitations, "Exact text comparison requires one provider identity."]
|
|
731
|
+
});
|
|
732
|
+
const changes = diffLines(left, right, {
|
|
733
|
+
timeout: 100,
|
|
734
|
+
maxEditLength: 1e4
|
|
735
|
+
});
|
|
736
|
+
if (changes === undefined) return unresolvedDimension({
|
|
737
|
+
dimension,
|
|
738
|
+
links: context.links,
|
|
739
|
+
leftCount: [...left].length,
|
|
740
|
+
rightCount: [...right].length,
|
|
741
|
+
limitations: [...limitations, "Bounded line diff exceeded its time or edit-distance limit."]
|
|
742
|
+
});
|
|
743
|
+
const delta = changes.reduce((summary, change) => ({
|
|
744
|
+
added_lines: summary.added_lines + (change.added ? change.count ?? 0 : 0),
|
|
745
|
+
removed_lines: summary.removed_lines + (change.removed ? change.count ?? 0 : 0),
|
|
746
|
+
hunks: summary.hunks + (change.added || change.removed ? 1 : 0)
|
|
747
|
+
}), {
|
|
748
|
+
added_lines: 0,
|
|
749
|
+
removed_lines: 0,
|
|
750
|
+
hunks: 0
|
|
751
|
+
});
|
|
752
|
+
return dimensionResult({
|
|
753
|
+
dimension,
|
|
754
|
+
status: delta.hunks === 0 ? "unchanged" : "changed",
|
|
755
|
+
left,
|
|
756
|
+
right,
|
|
757
|
+
...context,
|
|
758
|
+
leftCount: [...left].length,
|
|
759
|
+
rightCount: [...right].length,
|
|
760
|
+
textDelta: delta,
|
|
761
|
+
limitations
|
|
762
|
+
});
|
|
763
|
+
};
|
|
764
|
+
compareComments = (left, right, context) => {
|
|
765
|
+
const leftValues = commentProjection(left);
|
|
766
|
+
const rightValues = commentProjection(right);
|
|
767
|
+
if (leftValues === null || rightValues === null) return unresolvedDimension({
|
|
768
|
+
dimension: "comments",
|
|
769
|
+
links: context.links,
|
|
770
|
+
leftCount: left.dossier.comments.length,
|
|
771
|
+
rightCount: right.dossier.comments.length,
|
|
772
|
+
limitations: ["Comment locations could not be normalized relative to the function."]
|
|
773
|
+
});
|
|
774
|
+
return compareValues("comments", leftValues, rightValues, context);
|
|
775
|
+
};
|
|
776
|
+
compareStringsAndNames = (left, right, context) => {
|
|
777
|
+
const complete = swiftLiteralCoverage(left) === swiftLiteralCoverage(right) && swiftLiteralCoverage(left) !== "partial";
|
|
778
|
+
const leftValues = stringAndNameProjection(left, complete);
|
|
779
|
+
const rightValues = stringAndNameProjection(right, complete);
|
|
780
|
+
if (leftValues === null || rightValues === null) return unresolvedDimension({
|
|
781
|
+
dimension: "strings_names",
|
|
782
|
+
links: context.links,
|
|
783
|
+
leftCount: null,
|
|
784
|
+
rightCount: null,
|
|
785
|
+
limitations: ["Reference source locations could not be normalized to function offsets."]
|
|
786
|
+
});
|
|
787
|
+
const compared = compareValues("strings_names", leftValues, rightValues, context);
|
|
788
|
+
if (complete || compared.status === "changed") return compared;
|
|
789
|
+
if (swiftLiteralSitesConflict(left, right)) {
|
|
790
|
+
const leftAll = stringAndNameProjection(left);
|
|
791
|
+
const rightAll = stringAndNameProjection(right);
|
|
792
|
+
if (leftAll !== null && rightAll !== null) return compareValues("strings_names", leftAll, rightAll, context);
|
|
793
|
+
}
|
|
794
|
+
return unresolvedDimension({
|
|
795
|
+
dimension: "strings_names",
|
|
796
|
+
links: context.links,
|
|
797
|
+
leftCount: null,
|
|
798
|
+
rightCount: null,
|
|
799
|
+
limitations: ["Swift String literal coverage differs or is partial; referenced strings and names match, and complete coverage does not establish a differing literal."]
|
|
800
|
+
});
|
|
801
|
+
};
|
|
802
|
+
swiftLiteralCoverage = (snapshot) => (snapshot.dossier.swift_string_literal_omissions ?? []).length > 0 ? "partial" : snapshot.dossier.swift_string_literals === undefined ? "absent" : "complete";
|
|
803
|
+
compareReferences = (left, right, context) => {
|
|
804
|
+
const leftProjection = referenceProjection(left);
|
|
805
|
+
const rightProjection = referenceProjection(right);
|
|
806
|
+
if (leftProjection.length === 0 && rightProjection.length === 0) return compareValues("references", leftProjection, rightProjection, context);
|
|
807
|
+
if (canonicalJson(leftProjection, "Function comparison") !== canonicalJson(rightProjection, "Function comparison")) return dimensionResult({
|
|
808
|
+
dimension: "references",
|
|
809
|
+
status: "changed",
|
|
810
|
+
left: leftProjection,
|
|
811
|
+
right: rightProjection,
|
|
812
|
+
...context,
|
|
813
|
+
leftCount: leftProjection.length,
|
|
814
|
+
rightCount: rightProjection.length,
|
|
815
|
+
textDelta: null,
|
|
816
|
+
limitations: ["Reference endpoints differ independently of provider reference-kind metadata."]
|
|
817
|
+
});
|
|
818
|
+
const leftKinds = referenceKindProjection(left);
|
|
819
|
+
const rightKinds = referenceKindProjection(right);
|
|
820
|
+
if (leftKinds !== null && rightKinds !== null) return compareValues("references", leftKinds, rightKinds, context);
|
|
821
|
+
return unresolvedDimension({
|
|
822
|
+
dimension: "references",
|
|
823
|
+
links: context.links,
|
|
824
|
+
leftCount: leftProjection.length,
|
|
825
|
+
rightCount: rightProjection.length,
|
|
826
|
+
limitations: ["At least one provider did not expose reference kinds, so equal endpoints do not prove equal edge semantics."]
|
|
827
|
+
});
|
|
828
|
+
};
|
|
829
|
+
compareIdentity = (left, right, context) => {
|
|
830
|
+
if (isAutoName(left.dossier.procedure.name) || isAutoName(right.dossier.procedure.name)) return unresolvedDimension({
|
|
831
|
+
dimension: "identity",
|
|
832
|
+
links: context.links,
|
|
833
|
+
leftCount: null,
|
|
834
|
+
rightCount: null,
|
|
835
|
+
limitations: ["Address-derived function names are not stable cross-version identity."]
|
|
836
|
+
});
|
|
837
|
+
return compareValues("identity", identityProjection(left), identityProjection(right), context);
|
|
838
|
+
};
|
|
839
|
+
compareCalls = (left, right, context) => {
|
|
840
|
+
const leftValues = callProjection(left);
|
|
841
|
+
const rightValues = callProjection(right);
|
|
842
|
+
const coverageLimitations = [...left.callCoverageLimitations.map((reason) => `Left: ${reason}`), ...right.callCoverageLimitations.map((reason) => `Right: ${reason}`)];
|
|
843
|
+
if (coverageLimitations.length > 0) return unresolvedDimension({
|
|
844
|
+
dimension: "calls",
|
|
845
|
+
links: context.links,
|
|
846
|
+
leftCount: leftValues.length,
|
|
847
|
+
rightCount: rightValues.length,
|
|
848
|
+
limitations: coverageLimitations
|
|
849
|
+
});
|
|
850
|
+
if ([...leftValues, ...rightValues].some(({ name }) => isAutoName(name))) return unresolvedDimension({
|
|
851
|
+
dimension: "calls",
|
|
852
|
+
links: context.links,
|
|
853
|
+
leftCount: leftValues.length,
|
|
854
|
+
rightCount: rightValues.length,
|
|
855
|
+
limitations: ["Address-derived callee or caller names cannot be matched safely."]
|
|
856
|
+
});
|
|
857
|
+
return compareValues("calls", sorted(leftValues), sorted(rightValues), context);
|
|
858
|
+
};
|
|
859
|
+
callProjection = (snapshot) => [...snapshot.dossier.callers.map(({ name }) => ({
|
|
860
|
+
direction: "in",
|
|
861
|
+
name
|
|
862
|
+
})), ...snapshot.dossier.callees.map(({ name }) => ({
|
|
863
|
+
direction: "out",
|
|
864
|
+
name
|
|
865
|
+
}))];
|
|
866
|
+
compareCfg = (left, right, context) => {
|
|
867
|
+
const leftBlocks = left.dossier.basic_blocks;
|
|
868
|
+
const rightBlocks = right.dossier.basic_blocks;
|
|
869
|
+
const leftGraph = normalizeCfg(leftBlocks);
|
|
870
|
+
const rightGraph = normalizeCfg(rightBlocks);
|
|
871
|
+
if (leftGraph === null || rightGraph === null) return unresolvedDimension({
|
|
872
|
+
dimension: "cfg",
|
|
873
|
+
links: context.links,
|
|
874
|
+
leftCount: leftBlocks.length,
|
|
875
|
+
rightCount: rightBlocks.length,
|
|
876
|
+
limitations: ["CFG addresses could not be normalized to local block indices."]
|
|
877
|
+
});
|
|
878
|
+
return compareValues("cfg", leftGraph, rightGraph, context);
|
|
879
|
+
};
|
|
880
|
+
compareValues = (dimension, left, right, context) => {
|
|
881
|
+
const leftJson = canonicalJson(left, "Function comparison");
|
|
882
|
+
const rightJson = canonicalJson(right, "Function comparison");
|
|
883
|
+
return dimensionResult({
|
|
884
|
+
dimension,
|
|
885
|
+
status: leftJson === rightJson ? "unchanged" : "changed",
|
|
886
|
+
left,
|
|
887
|
+
right,
|
|
888
|
+
...context,
|
|
889
|
+
leftCount: Array.isArray(left) ? left.length : null,
|
|
890
|
+
rightCount: Array.isArray(right) ? right.length : null,
|
|
891
|
+
textDelta: null,
|
|
892
|
+
limitations: []
|
|
893
|
+
});
|
|
894
|
+
};
|
|
895
|
+
})))();
|
|
896
|
+
}
|
|
897
|
+
|
|
898
|
+
//#endregion
|
|
899
|
+
//#region dist/domain/functionComparison.js
|
|
900
|
+
var compareFunctions;
|
|
901
|
+
function init_functionComparison() {
|
|
902
|
+
return (init_functionComparison = __esmMin((() => {
|
|
903
|
+
init_comparisonSemantics();
|
|
904
|
+
init_unicodeCodePointOrder();
|
|
905
|
+
init_functionDossierEvidence();
|
|
906
|
+
init_functionComparisonNormalization();
|
|
907
|
+
init_functionComparisonSchemas();
|
|
908
|
+
init_functionComparisonResults();
|
|
909
|
+
init_functionComparisonDimensions();
|
|
910
|
+
compareFunctions = (leftInput, rightInput) => {
|
|
911
|
+
const left = parseFunctionEvidence(leftInput);
|
|
912
|
+
const right = parseFunctionEvidence(rightInput);
|
|
913
|
+
const links = [left.evidence.evidence_id, right.evidence.evidence_id];
|
|
914
|
+
const providersDiffer = canonicalJson(left.evidence.provider, "Function comparison") !== canonicalJson(right.evidence.provider, "Function comparison");
|
|
915
|
+
const dimensions = compareDimensions(left, right, {
|
|
916
|
+
links,
|
|
917
|
+
providersDiffer
|
|
918
|
+
});
|
|
919
|
+
const match = functionMatch(left, right);
|
|
920
|
+
const changes = dimensions.filter(({ status }) => status !== "unchanged");
|
|
921
|
+
return functionComparisonResultSchema.parse({
|
|
922
|
+
status: overallStatus(dimensions, match.status),
|
|
923
|
+
function_match: match,
|
|
924
|
+
left_subject_sha256: left.subject.digest.sha256,
|
|
925
|
+
right_subject_sha256: right.subject.digest.sha256,
|
|
926
|
+
summary: summarize(dimensions),
|
|
927
|
+
dimensions,
|
|
928
|
+
changes,
|
|
929
|
+
limitations: [...new Set([
|
|
930
|
+
...left.limitations.map((item) => `Left: ${item}`),
|
|
931
|
+
...right.limitations.map((item) => `Right: ${item}`),
|
|
932
|
+
...providersDiffer ? ["Provider-specific pseudocode and assembly representations were not equated."] : []
|
|
933
|
+
])].sort((a, b) => compareUnicodeCodePoints(a, b))
|
|
934
|
+
});
|
|
935
|
+
};
|
|
936
|
+
})))();
|
|
937
|
+
}
|
|
938
|
+
|
|
939
|
+
//#endregion
|
|
940
|
+
//#region dist/contracts/investigationExamples.js
|
|
941
|
+
var comparison, FUNCTION_COMPARISON_EVIDENCE, PROCESS_PROVIDER, capture, captureEvidence, PROCESS_CAPTURE_REFERENCE, PROCESS_CAPTURE_RECONSTRUCTION, PROCESS_COMPARISON_EVIDENCE, INVESTIGATION_EXAMPLES;
|
|
942
|
+
function init_investigationExamples() {
|
|
943
|
+
return (init_investigationExamples = __esmMin((() => {
|
|
944
|
+
init_evidence();
|
|
945
|
+
init_jsonValue();
|
|
946
|
+
init_processComparison();
|
|
947
|
+
init_processCaptureParsing();
|
|
948
|
+
init_functionComparisonExample();
|
|
949
|
+
init_processCaptureExample();
|
|
950
|
+
init_functionComparison();
|
|
951
|
+
comparison = compareFunctions(FUNCTION_COMPARISON_EXAMPLE.left, FUNCTION_COMPARISON_EXAMPLE.right);
|
|
952
|
+
FUNCTION_COMPARISON_EVIDENCE = createEvidence(undefined, {
|
|
953
|
+
id: "rea-function-comparison",
|
|
954
|
+
name: "REA function comparison",
|
|
955
|
+
version: "1"
|
|
956
|
+
}, {
|
|
957
|
+
predicateType: "rea.function-comparison",
|
|
958
|
+
operation: "compare_functions",
|
|
959
|
+
parameters: {
|
|
960
|
+
left_evidence_id: FUNCTION_COMPARISON_EXAMPLE.left.evidence_id,
|
|
961
|
+
right_evidence_id: FUNCTION_COMPARISON_EXAMPLE.right.evidence_id
|
|
962
|
+
},
|
|
963
|
+
result: jsonValueSchema.parse(comparison),
|
|
964
|
+
confidence: "derived",
|
|
965
|
+
authority: "analyst-inference",
|
|
966
|
+
limitations: comparison.limitations,
|
|
967
|
+
evidenceLinks: [FUNCTION_COMPARISON_EXAMPLE.left.evidence_id, FUNCTION_COMPARISON_EXAMPLE.right.evidence_id]
|
|
968
|
+
});
|
|
969
|
+
PROCESS_PROVIDER = {
|
|
970
|
+
id: "rea-process",
|
|
971
|
+
name: "REA deterministic process harness",
|
|
972
|
+
version: "3"
|
|
973
|
+
};
|
|
974
|
+
capture = parseProcessCapture(EMPTY_PROCESS_CAPTURE_EXAMPLE);
|
|
975
|
+
captureEvidence = (scenario) => createEvidence(undefined, PROCESS_PROVIDER, {
|
|
976
|
+
predicateType: "rea.process-capture",
|
|
977
|
+
operation: "capture_process_scenario",
|
|
978
|
+
parameters: { scenario },
|
|
979
|
+
result: jsonValueSchema.parse(capture),
|
|
980
|
+
confidence: "observed",
|
|
981
|
+
authority: "controlled-replay",
|
|
982
|
+
environment: {
|
|
983
|
+
id: "fixture-linux",
|
|
984
|
+
platform: "linux",
|
|
985
|
+
architecture: "x86_64",
|
|
986
|
+
isolation: "container"
|
|
987
|
+
}
|
|
988
|
+
});
|
|
989
|
+
PROCESS_CAPTURE_REFERENCE = captureEvidence("reference");
|
|
990
|
+
PROCESS_CAPTURE_RECONSTRUCTION = captureEvidence("reconstruction");
|
|
991
|
+
PROCESS_COMPARISON_EVIDENCE = createEvidence(undefined, PROCESS_PROVIDER, {
|
|
992
|
+
predicateType: "rea.process-comparison",
|
|
993
|
+
operation: "compare_process_captures",
|
|
994
|
+
parameters: {
|
|
995
|
+
left_evidence_id: PROCESS_CAPTURE_REFERENCE.evidence_id,
|
|
996
|
+
right_evidence_id: PROCESS_CAPTURE_RECONSTRUCTION.evidence_id,
|
|
997
|
+
left_normalization: capture.normalization,
|
|
998
|
+
right_normalization: capture.normalization
|
|
999
|
+
},
|
|
1000
|
+
result: jsonValueSchema.parse(compareProcessCaptures(capture, capture)),
|
|
1001
|
+
confidence: "derived",
|
|
1002
|
+
authority: "analyst-inference",
|
|
1003
|
+
evidenceLinks: [PROCESS_CAPTURE_REFERENCE.evidence_id, PROCESS_CAPTURE_RECONSTRUCTION.evidence_id]
|
|
1004
|
+
});
|
|
1005
|
+
INVESTIGATION_EXAMPLES = {
|
|
1006
|
+
compare_process_captures: { input: {
|
|
1007
|
+
left: PROCESS_CAPTURE_REFERENCE,
|
|
1008
|
+
right: PROCESS_CAPTURE_RECONSTRUCTION
|
|
1009
|
+
} },
|
|
1010
|
+
find_changed_behavior: { comparisons: [FUNCTION_COMPARISON_EVIDENCE] },
|
|
1011
|
+
build_call_path: {
|
|
1012
|
+
functions: [FUNCTION_COMPARISON_EXAMPLE.left],
|
|
1013
|
+
start: { address: "0x1000" },
|
|
1014
|
+
goal: { address: "0x1000" }
|
|
1015
|
+
},
|
|
1016
|
+
correlate_static_and_runtime: {
|
|
1017
|
+
static_comparisons: [FUNCTION_COMPARISON_EVIDENCE],
|
|
1018
|
+
runtime_comparisons: [PROCESS_COMPARISON_EVIDENCE],
|
|
1019
|
+
mappings: [{
|
|
1020
|
+
static: {
|
|
1021
|
+
comparison_evidence_id: FUNCTION_COMPARISON_EVIDENCE.evidence_id,
|
|
1022
|
+
selector: {
|
|
1023
|
+
kind: "function",
|
|
1024
|
+
dimension: "pseudocode"
|
|
1025
|
+
}
|
|
1026
|
+
},
|
|
1027
|
+
runtime: {
|
|
1028
|
+
comparison_evidence_id: PROCESS_COMPARISON_EVIDENCE.evidence_id,
|
|
1029
|
+
dimension: "terminal"
|
|
1030
|
+
},
|
|
1031
|
+
side_alignment: "left_to_left",
|
|
1032
|
+
hypothesis: {
|
|
1033
|
+
statement: "Static implementation changed without terminal change.",
|
|
1034
|
+
expected_pattern: "static_only"
|
|
1035
|
+
}
|
|
1036
|
+
}]
|
|
1037
|
+
},
|
|
1038
|
+
verify_reconstruction: { specification: {
|
|
1039
|
+
name: "Terminal compatibility",
|
|
1040
|
+
claims: [{
|
|
1041
|
+
kind: "behavioral",
|
|
1042
|
+
claim_id: "terminal-output",
|
|
1043
|
+
title: "Terminal output remains equivalent",
|
|
1044
|
+
comparison_evidence_id: PROCESS_COMPARISON_EVIDENCE.evidence_id,
|
|
1045
|
+
dimension: "terminal"
|
|
1046
|
+
}]
|
|
1047
|
+
} }
|
|
1048
|
+
};
|
|
1049
|
+
})))();
|
|
1050
|
+
}
|
|
1051
|
+
|
|
1052
|
+
//#endregion
|
|
1053
|
+
//#region dist/contracts/toolContractExamples.js
|
|
1054
|
+
var TOOL_EXAMPLE_OVERRIDES;
|
|
1055
|
+
function init_toolContractExamples() {
|
|
1056
|
+
return (init_toolContractExamples = __esmMin((() => {
|
|
1057
|
+
init_unknownContractExamples();
|
|
1058
|
+
init_artifactComparisonExample();
|
|
1059
|
+
init_functionComparisonExample();
|
|
1060
|
+
init_investigationExamples();
|
|
1061
|
+
TOOL_EXAMPLE_OVERRIDES = {
|
|
1062
|
+
...UNKNOWN_CONTRACT_EXAMPLES,
|
|
1063
|
+
...INVESTIGATION_EXAMPLES,
|
|
1064
|
+
goto_address: { address: "0x1000" },
|
|
1065
|
+
procedure_address: { procedure: "main" },
|
|
1066
|
+
procedure_assembly: { procedure: "main" },
|
|
1067
|
+
procedure_callees: { procedure: "main" },
|
|
1068
|
+
procedure_callers: { procedure: "main" },
|
|
1069
|
+
procedure_info: { procedure: "main" },
|
|
1070
|
+
trace_native_values: { procedure: "0x1000" },
|
|
1071
|
+
inspect_native_data_type: { type: "/MyStruct" },
|
|
1072
|
+
inspect_native_instruction: { address: "0x1000" },
|
|
1073
|
+
resolve_native_call_targets: { address: "0x1000" },
|
|
1074
|
+
read_function_instructions: { procedure: "main" },
|
|
1075
|
+
read_bytes: {
|
|
1076
|
+
address: "0x1000",
|
|
1077
|
+
length: 16
|
|
1078
|
+
},
|
|
1079
|
+
search_bytes: { pattern: "48 8B ?? ?? 89" },
|
|
1080
|
+
address_to_file_offset: { address: "0x1000" },
|
|
1081
|
+
procedure_references: { procedure: "main" },
|
|
1082
|
+
procedure_pseudo_code: { procedure: "main" },
|
|
1083
|
+
resolve_containing_procedure: { address: "0x1000" },
|
|
1084
|
+
search_procedures: { pattern: "main" },
|
|
1085
|
+
search_strings: { pattern: "authorization failed" },
|
|
1086
|
+
set_address_name: {
|
|
1087
|
+
address: "0x1000",
|
|
1088
|
+
name: "entry"
|
|
1089
|
+
},
|
|
1090
|
+
set_addresses_names: { names: { "0x1000": "entry" } },
|
|
1091
|
+
set_bookmark: { address: "0x1000" },
|
|
1092
|
+
set_comment: {
|
|
1093
|
+
address: "0x1000",
|
|
1094
|
+
comment: "validated entry point"
|
|
1095
|
+
},
|
|
1096
|
+
set_inline_comment: {
|
|
1097
|
+
address: "0x1000",
|
|
1098
|
+
comment: "calls parser"
|
|
1099
|
+
},
|
|
1100
|
+
unset_bookmark: { address: "0x1000" },
|
|
1101
|
+
get_call_graph: { address: "0x1000" },
|
|
1102
|
+
find_xrefs_to_name: { name: "malloc" },
|
|
1103
|
+
analyze_function: { procedure: "main" },
|
|
1104
|
+
annotate_native_function: {
|
|
1105
|
+
procedure: "0x10100",
|
|
1106
|
+
name: "entry",
|
|
1107
|
+
comment: "Analyst observation"
|
|
1108
|
+
},
|
|
1109
|
+
analyze_swift_types: {
|
|
1110
|
+
category: "classes",
|
|
1111
|
+
pattern: "Account"
|
|
1112
|
+
},
|
|
1113
|
+
inspect_native_api: { procedure: "main" },
|
|
1114
|
+
trace_feature: { query: "license" },
|
|
1115
|
+
trace_call_path: {
|
|
1116
|
+
start: "0x1000",
|
|
1117
|
+
goal: "0x1100"
|
|
1118
|
+
},
|
|
1119
|
+
trace_native_ui_action: { action: "buildTapped:" },
|
|
1120
|
+
open_binary: { path: "/tmp/fixture" },
|
|
1121
|
+
export_evidence_bundle: { path: "/tmp/evidence.json" },
|
|
1122
|
+
get_evidence_bundle: {
|
|
1123
|
+
detail: "summary",
|
|
1124
|
+
filters: {
|
|
1125
|
+
operation: "analyze_function",
|
|
1126
|
+
procedure_address: "0x1000"
|
|
1127
|
+
}
|
|
1128
|
+
},
|
|
1129
|
+
inspect_address_context: { address: "0x1000" },
|
|
1130
|
+
import_evidence_bundle: { path: "/tmp/evidence.json" },
|
|
1131
|
+
capture_process_scenario: {
|
|
1132
|
+
executable: "/usr/bin/true",
|
|
1133
|
+
working_directory: "/tmp",
|
|
1134
|
+
timeout_ms: 3e4,
|
|
1135
|
+
finalization_ms: 1500
|
|
1136
|
+
},
|
|
1137
|
+
compare_process_captures: {
|
|
1138
|
+
left: PROCESS_CAPTURE_REFERENCE,
|
|
1139
|
+
right: PROCESS_CAPTURE_RECONSTRUCTION
|
|
1140
|
+
},
|
|
1141
|
+
compare_artifacts: {
|
|
1142
|
+
left: ARTIFACT_COMPARISON_EXAMPLE.left,
|
|
1143
|
+
right: ARTIFACT_COMPARISON_EXAMPLE.right
|
|
1144
|
+
},
|
|
1145
|
+
compare_functions: {
|
|
1146
|
+
left: FUNCTION_COMPARISON_EXAMPLE.left,
|
|
1147
|
+
right: FUNCTION_COMPARISON_EXAMPLE.right
|
|
1148
|
+
},
|
|
1149
|
+
compare_bundles: {
|
|
1150
|
+
left_bundle_path: "/tmp/left-evidence.json",
|
|
1151
|
+
right_bundle_path: "/tmp/right-evidence.json"
|
|
1152
|
+
},
|
|
1153
|
+
inspect_with_objdump: {
|
|
1154
|
+
path: "/tmp/program",
|
|
1155
|
+
operation: "disassemble"
|
|
1156
|
+
},
|
|
1157
|
+
execute_rizin_command: {
|
|
1158
|
+
path: "/tmp/program",
|
|
1159
|
+
command: "iI"
|
|
1160
|
+
},
|
|
1161
|
+
list_frida_devices: {},
|
|
1162
|
+
list_frida_processes: { device_id: "local" },
|
|
1163
|
+
start_frida_session: {
|
|
1164
|
+
mode: "attach",
|
|
1165
|
+
device_id: "local",
|
|
1166
|
+
pid: 1234
|
|
1167
|
+
},
|
|
1168
|
+
load_frida_script: {
|
|
1169
|
+
session_id: "00000000-0000-4000-8000-000000000001",
|
|
1170
|
+
source_kind: "inline",
|
|
1171
|
+
source: "send(Process.id);"
|
|
1172
|
+
},
|
|
1173
|
+
resume_frida_session: { session_id: "00000000-0000-4000-8000-000000000001" },
|
|
1174
|
+
unload_frida_script: {
|
|
1175
|
+
session_id: "00000000-0000-4000-8000-000000000001",
|
|
1176
|
+
script_id: "00000000-0000-4000-8000-000000000002"
|
|
1177
|
+
},
|
|
1178
|
+
frida_session_status: { session_id: "00000000-0000-4000-8000-000000000001" },
|
|
1179
|
+
close_frida_session: { session_id: "00000000-0000-4000-8000-000000000001" },
|
|
1180
|
+
instrument_with_frida: {
|
|
1181
|
+
mode: "attach",
|
|
1182
|
+
device_id: "local",
|
|
1183
|
+
pid: 1234,
|
|
1184
|
+
source_kind: "inline",
|
|
1185
|
+
source: "send(Process.id);",
|
|
1186
|
+
duration_ms: 1e3
|
|
1187
|
+
}
|
|
1188
|
+
};
|
|
1189
|
+
})))();
|
|
1190
|
+
}
|
|
1191
|
+
|
|
1192
|
+
//#endregion
|
|
1193
|
+
//#region dist/contracts/toolContractHelpers.js
|
|
1194
|
+
var document, address, optionalAddress, procedure, exampleInputSchema, examplesFor;
|
|
1195
|
+
function init_toolContractHelpers() {
|
|
1196
|
+
return (init_toolContractHelpers = __esmMin((() => {
|
|
1197
|
+
init_jsonValue();
|
|
1198
|
+
init_toolContractExamples();
|
|
1199
|
+
document = z.string().optional().describe("The active target's provider document name; use open_binary to switch targets");
|
|
1200
|
+
address = z.string().describe("A provider-normalized address; default memory uses 0x-prefixed hexadecimal");
|
|
1201
|
+
optionalAddress = address.optional();
|
|
1202
|
+
procedure = z.string().describe("The procedure name or address");
|
|
1203
|
+
exampleInputSchema = z.record(z.string(), jsonValueSchema);
|
|
1204
|
+
examplesFor = (name, inputSchema) => {
|
|
1205
|
+
const parsed = inputSchema.parse(TOOL_EXAMPLE_OVERRIDES[name] ?? {});
|
|
1206
|
+
return [{
|
|
1207
|
+
title: `Example ${name.replaceAll("_", " ")} request`,
|
|
1208
|
+
input: exampleInputSchema.parse(parsed)
|
|
1209
|
+
}];
|
|
1210
|
+
};
|
|
1211
|
+
})))();
|
|
1212
|
+
}
|
|
1213
|
+
|
|
1214
|
+
//#endregion
|
|
1215
|
+
//#region dist/contracts/functionInstructionContract.js
|
|
1216
|
+
var functionInstructionInputSchema;
|
|
1217
|
+
function init_functionInstructionContract() {
|
|
1218
|
+
return (init_functionInstructionContract = __esmMin((() => {
|
|
1219
|
+
functionInstructionInputSchema = z.object({
|
|
1220
|
+
procedure: z.string().describe("The procedure name or address"),
|
|
1221
|
+
document: z.string().optional().describe("The document name")
|
|
1222
|
+
});
|
|
1223
|
+
})))();
|
|
1224
|
+
}
|
|
1225
|
+
|
|
1226
|
+
//#endregion
|
|
1227
|
+
//#region dist/contracts/hopperMemoryContracts.js
|
|
1228
|
+
var HOPPER_MEMORY_TOOL_DEFINITIONS;
|
|
1229
|
+
function init_hopperMemoryContracts() {
|
|
1230
|
+
return (init_hopperMemoryContracts = __esmMin((() => {
|
|
1231
|
+
init_toolContractHelpers();
|
|
1232
|
+
init_bytePattern();
|
|
1233
|
+
HOPPER_MEMORY_TOOL_DEFINITIONS = [
|
|
1234
|
+
{
|
|
1235
|
+
name: "search_bytes",
|
|
1236
|
+
description: "Find masked byte signatures in initialized analyzed memory. Hex byte pairs and ?? wildcards are supported; an optional equal-length hex mask selects bits. Bounds are inclusive. Matches are ordered by provider address and never span blocks. Coverage describes this page; reuse the same query with next_cursor to continue. Uninitialized blocks are listed separately. Ghidra only; Hopper is unavailable.",
|
|
1237
|
+
inputSchema: z.strictObject({
|
|
1238
|
+
...bytePatternFields,
|
|
1239
|
+
document,
|
|
1240
|
+
start: address.optional(),
|
|
1241
|
+
end: address.optional(),
|
|
1242
|
+
limit: z.number().int().min(1).max(1e3).default(100),
|
|
1243
|
+
cursor: z.string().min(1).optional()
|
|
1244
|
+
}).superRefine(validateBytePattern)
|
|
1245
|
+
},
|
|
1246
|
+
{
|
|
1247
|
+
name: "read_bytes",
|
|
1248
|
+
description: "Read analyzed bytes from one provider-normalized virtual address. The hexadecimal payload reports the exact returned length; incomplete reads remain explicit and unsupported provider APIs return typed capability unavailability.",
|
|
1249
|
+
inputSchema: z.object({
|
|
1250
|
+
address,
|
|
1251
|
+
length: z.number().int().min(1).default(256),
|
|
1252
|
+
document
|
|
1253
|
+
})
|
|
1254
|
+
},
|
|
1255
|
+
{
|
|
1256
|
+
name: "address_to_file_offset",
|
|
1257
|
+
description: "Map one provider-normalized virtual address to its original nonnegative file offset. Hopper verifies the original bytes against the selected executable digest and translates FAT image-relative offsets using the loaded header. Results preserve the provider coordinate, image base, and source path. Unmapped addresses fail explicitly; changed or unavailable sources return typed errors retaining native mapping facts as partial evidence.",
|
|
1258
|
+
inputSchema: z.object({
|
|
1259
|
+
address,
|
|
1260
|
+
document
|
|
1261
|
+
})
|
|
1262
|
+
}
|
|
1263
|
+
];
|
|
1264
|
+
})))();
|
|
1265
|
+
}
|
|
1266
|
+
|
|
1267
|
+
//#endregion
|
|
1268
|
+
//#region dist/contracts/officialToolContracts.js
|
|
1269
|
+
var official, OFFICIAL_TOOL_CONTRACTS;
|
|
1270
|
+
function init_officialToolContracts() {
|
|
1271
|
+
return (init_officialToolContracts = __esmMin((() => {
|
|
1272
|
+
init_nativeFunctionAnnotations();
|
|
1273
|
+
init_toolOutputSchemaGroups();
|
|
1274
|
+
init_toolOutputSchemaPrimitives();
|
|
1275
|
+
init_toolContractHelpers();
|
|
1276
|
+
init_toolEffects();
|
|
1277
|
+
init_nativeDataType();
|
|
1278
|
+
init_nativeInstruction();
|
|
1279
|
+
init_functionInstructionContract();
|
|
1280
|
+
init_hopperMemoryContracts();
|
|
1281
|
+
init_analysisSearchContract();
|
|
1282
|
+
official = (name, description, inputSchema) => {
|
|
1283
|
+
const strictInputSchema = inputSchema.strict();
|
|
1284
|
+
return {
|
|
1285
|
+
name,
|
|
1286
|
+
...toolContractMetadata(name),
|
|
1287
|
+
description,
|
|
1288
|
+
kind: "official-proxy",
|
|
1289
|
+
inputSchema: strictInputSchema,
|
|
1290
|
+
outputSchema: requireOutputSchema(officialOutputSchemas, name),
|
|
1291
|
+
examples: examplesFor(name, strictInputSchema)
|
|
1292
|
+
};
|
|
1293
|
+
};
|
|
1294
|
+
OFFICIAL_TOOL_CONTRACTS = [
|
|
1295
|
+
official("annotate_native_function", "Atomically update one function name and/or entry comments, read them back, and return a refreshed complete function dossier. Ghidra changes its ephemeral session analysis database only; original executable bytes remain unchanged. Empty comment text clears that comment. Edits remain available to subsequent MCP calls until close; CLI returns the updated dossier before discarding its session. Invalid edits roll back the entire operation. Windows P0 and providers without this capability are unsupported.", nativeFunctionAnnotationsInputSchema),
|
|
1296
|
+
official("inspect_native_load_image", "Verify the provider's loaded DOS MZ or explicitly selected COM image against its immutable target snapshot: complete original/modified source-byte digests, header/module file mappings and memory digests, relocations and external entry. Returns measured observations and independent checks with mismatch coordinates. COM verification includes its imposed entry register context and does not claim PSP/runtime coverage. Overlay and uninitialized coverage remain explicit; other formats return unsupported. Does not execute or modify the target.", z.strictObject({})),
|
|
1297
|
+
official("inspect_native_data_type", "Inspect one recovered type by exact database category path or defined typed data address. Returns observed size, alignment, packing, fields, bitfields, enum values, and child type identities; source-level authority and flexible-tail semantics remain unknown unless substantiated.", nativeDataTypeInputSchema),
|
|
1298
|
+
official("inspect_native_instruction", "Inspect one exact code or data address: decoded bytes, mnemonic, ordered operand tokens, flow, outgoing instruction references and typed incoming references where available. Incoming references preserve source, access kind, operand index and analysis provenance even at data addresses; they do not prove runtime access. Memory addressing decomposition is unavailable when the provider supplies only tokens. Data, interior instruction addresses and undecodable bytes are distinct outcomes.", nativeInstructionInputSchema),
|
|
1299
|
+
official("resolve_native_call_targets", "Resolve one explicit static call site using typed provider call references. Preserves ambiguous targets as candidates and unresolved computed calls as unknown; does not execute code or traverse a call graph.", nativeInstructionInputSchema),
|
|
1300
|
+
official("address_name", "Resolve the primary analyzed name at a code or data address. Headless providers require an explicit address; GUI providers may default to their current cursor. Null means the provider has no primary name at that address.", z.object({
|
|
1301
|
+
document,
|
|
1302
|
+
address: optionalAddress
|
|
1303
|
+
})),
|
|
1304
|
+
official("comment", "Read the regular analysis comment at an address, defaulting to the current cursor. This is read-only and returns null when no comment exists; use set_comment to persist a finding.", z.object({
|
|
1305
|
+
document,
|
|
1306
|
+
address: optionalAddress
|
|
1307
|
+
})),
|
|
1308
|
+
official("current_address", "Return Hopper's current cursor address for the selected document. Use only for interactive navigation state; prefer explicit addresses in reproducible investigations.", z.object({ document })),
|
|
1309
|
+
official("current_procedure", "Return the analyzed procedure containing Hopper's current cursor. This uses GUI cursor state and is not a procedure-name lookup.", z.object({ document })),
|
|
1310
|
+
official("current_document", "Return the document currently selected by REA's Hopper bridge.", z.object({})),
|
|
1311
|
+
official("goto_address", "Move Hopper's GUI cursor to a mapped address and return the observed cursor address. Interior coordinates snap to the containing analyzed object's start. Unmapped destinations fail without moving the cursor. This changes navigation state but not analysis data; use explicit-address tools for headless workflows.", z.object({
|
|
1312
|
+
address,
|
|
1313
|
+
document
|
|
1314
|
+
})),
|
|
1315
|
+
official("inline_comment", "Read the inline instruction comment at an address, defaulting to the current cursor. Returns null when absent; use set_inline_comment to write one.", z.object({
|
|
1316
|
+
document,
|
|
1317
|
+
address: optionalAddress
|
|
1318
|
+
})),
|
|
1319
|
+
official("list_bookmarks", "List every bookmark in the selected Hopper document as address and name pairs; unnamed bookmarks retain a null name. Use bookmarks as analyst-authored navigation aids; this does not discover code references.", z.object({ document })),
|
|
1320
|
+
official("list_documents", "List provider program or document identities. Hopper may expose several documents; a Ghidra headless session contains exactly its one imported Program.", z.object({})),
|
|
1321
|
+
official("list_names", "List every analyzed memory and external symbol as address/value pairs. Provider metadata distinguishes Ghidra primary, dynamic, external, type, and source facts when available.", z.object({
|
|
1322
|
+
document,
|
|
1323
|
+
address: optionalAddress
|
|
1324
|
+
})),
|
|
1325
|
+
official("list_procedures", "List every analyzed procedure as address/value pairs after provider analysis. Ghidra metadata distinguishes thunks and external functions; use returned addresses in later function operations.", z.object({ document })),
|
|
1326
|
+
official("list_segments", "List segments or memory blocks using exclusive end addresses. Ghidra reports block permissions, address space, image base, initialization, and overlay facts; Hopper marks unavailable permissions explicitly.", z.object({ document })),
|
|
1327
|
+
official("list_strings", "List every provider-defined string object, or filter to one address, as address/value pairs with encoding, terminator status, and byte length when available. Hopper reads complete typed objects and retains its original display text as provider_value; long literals may span adjacent unterminated objects.", z.object({
|
|
1328
|
+
document,
|
|
1329
|
+
address: optionalAddress
|
|
1330
|
+
})),
|
|
1331
|
+
official("next_address", "Return the next analyzed object address after an explicit address or current cursor. This is a navigation primitive, not instruction-flow or CFG analysis.", z.object({
|
|
1332
|
+
document,
|
|
1333
|
+
address: optionalAddress
|
|
1334
|
+
})),
|
|
1335
|
+
official("prev_address", "Return the previous analyzed object start before an explicit address or current cursor. This is a navigation primitive and may fail at document boundaries; data objects and instructions remain distinct from control flow.", z.object({
|
|
1336
|
+
document,
|
|
1337
|
+
address: optionalAddress
|
|
1338
|
+
})),
|
|
1339
|
+
official("procedure_address", "Resolve an unambiguous procedure symbol name or provider-normalized address to its canonical entry address. External address spaces remain explicit.", z.object({
|
|
1340
|
+
procedure,
|
|
1341
|
+
document
|
|
1342
|
+
})),
|
|
1343
|
+
official("procedure_assembly", "Return assembly for one analyzed procedure identified by symbol or hexadecimal address. Use when pseudocode loses calling-convention or instruction-level detail; output is currently returned as one unpaginated string. Ghidra terminal-call assumptions that may cut the analyzed body are reported in Evidence limitations.", z.object({
|
|
1344
|
+
procedure,
|
|
1345
|
+
document
|
|
1346
|
+
})),
|
|
1347
|
+
official("procedure_callees", "Return the provider's resolved direct callees for one procedure identified by symbol or address. Unresolved indirect calls may be absent; use analyze_function and typed references to preserve available edge uncertainty. Ghidra terminal-call assumptions that may cut the analyzed body are reported in Evidence limitations.", z.object({
|
|
1348
|
+
procedure,
|
|
1349
|
+
document
|
|
1350
|
+
})),
|
|
1351
|
+
official("procedure_callers", "Return the provider's resolved direct callers for one procedure identified by symbol or address. Results reflect completed static analysis and may omit unresolved indirect references. Ghidra terminal-call assumptions that may cut the analyzed body are reported in Evidence limitations.", z.object({
|
|
1352
|
+
procedure,
|
|
1353
|
+
document
|
|
1354
|
+
})),
|
|
1355
|
+
official("procedure_info", "Return provider metadata for one procedure identified by symbol or address: entrypoint, signature, locals, size, block count, and complete inclusive body ranges when observed. Extents reflect the provider's analyzed body; Ghidra terminal-call assumptions that may cut it are reported in Evidence limitations. Hopper locals preserve observed names and signed stack displacements; source types remain unknown. Body byte count and enclosing span remain distinct; unavailable extent is explicit.", z.object({
|
|
1356
|
+
procedure,
|
|
1357
|
+
document
|
|
1358
|
+
})),
|
|
1359
|
+
official("read_function_instructions", "Return every raw instruction for one analyzed procedure. Instruction text and body extent are provider-specific. Ghidra terminal-call assumptions that may cut the analyzed body are reported in limitations.", functionInstructionInputSchema),
|
|
1360
|
+
...HOPPER_MEMORY_TOOL_DEFINITIONS.map(({ name, description, inputSchema }) => official(name, description, inputSchema)),
|
|
1361
|
+
official("procedure_references", "Return every raw incoming or outgoing reference edge for one procedure. Endpoint procedures are resolved only from provider containment. Ghidra preserves detailed reference flags. Hopper preserves native CallReference classifications and exact endpoints while leaving unavailable detailed flags explicit.", z.object({
|
|
1362
|
+
procedure,
|
|
1363
|
+
direction: z.enum(["incoming", "outgoing"]).default("outgoing"),
|
|
1364
|
+
document
|
|
1365
|
+
})),
|
|
1366
|
+
official("procedure_pseudo_code", "Decompile one analyzed procedure by symbol name or provider-normalized address. Ghidra also accepts file-offset:0x... selectors and falls back to a unique source-file mapping when a 0x-prefixed number resolves to no procedure; existing analysis addresses take precedence and ambiguous mappings fail explicitly. Returns provider-specific pseudocode, never original source or cross-provider text equivalence, and may return null; request procedure_assembly when instruction precision matters. Ghidra no-return assumptions may cut the analyzed body; Evidence limitations report observed terminal calls and available callee identities.", z.object({
|
|
1367
|
+
procedure,
|
|
1368
|
+
document
|
|
1369
|
+
})),
|
|
1370
|
+
official("resolve_containing_procedure", "Resolve an arbitrary address, including an interior instruction or exact external entry, to its provider-analyzed containing procedure. A negative result distinguishes outside segments from not in a procedure and is never guessed from nearby symbols.", z.object({
|
|
1371
|
+
address,
|
|
1372
|
+
document
|
|
1373
|
+
})),
|
|
1374
|
+
official("search_procedures", "Search every analyzed procedure name using literal matching by default or regex when requested. Results are deterministic and complete. Hopper regex mode uses ECMAScript Unicode syntax in a cancellable worker; a matching deadline leaves its API usable.", z.object(analysisSearchInput)),
|
|
1375
|
+
official("search_strings", "Search every provider-defined string object using literal matching by default or regex when requested. Results are deterministic and complete over those defined objects, not every text sequence in artifact bytes. Ghidra may omit packed or undefined literals, including Rust strings; an empty result does not prove text is absent. If an address is known, read_bytes and xrefs inspect its bytes and references. Hopper retains typed byte decoding, native display, and explicit decoding unknowns. Adjacent long-literal fragments match independently. Hopper regex mode uses ECMAScript Unicode syntax in a cancellable worker; a matching deadline leaves its API usable.", z.object(analysisSearchInput)),
|
|
1376
|
+
official("set_address_name", "Assign an analyst name to one mapped hexadecimal address and report whether the native edit succeeded and exact readback matched. Hopper rejects symbol names exceeding 1024 UTF-16 code units before mutation, and rejects names owned by another address; use set_addresses_names to explicitly move or swap labels among selected addresses. This mutates analysis metadata.", z.object({
|
|
1377
|
+
address,
|
|
1378
|
+
name: z.string(),
|
|
1379
|
+
document
|
|
1380
|
+
})),
|
|
1381
|
+
official("set_addresses_names", "Assign analyst names to multiple mapped addresses in one call and return per-address edit/readback success booleans. Hopper validates mapped destinations, native string representations, its 1024 UTF-16 code-unit symbol-name limit, and unique destinations/names before applying edits. Existing labels may move or swap only among explicitly selected addresses; unselected label owners remain unchanged. This mutates analysis metadata; verify failures individually.", z.object({
|
|
1382
|
+
names: z.record(z.string(), z.string()),
|
|
1383
|
+
document
|
|
1384
|
+
})),
|
|
1385
|
+
official("set_bookmark", "Create or replace a bookmark at a mapped hexadecimal address and report success. This mutates navigation metadata; bookmarks are analyst-authored navigation aids, not binary evidence.", z.object({
|
|
1386
|
+
address,
|
|
1387
|
+
name: z.string().optional(),
|
|
1388
|
+
document
|
|
1389
|
+
})),
|
|
1390
|
+
official("set_comment", "Write a regular analysis comment at a hexadecimal address and return whether readback matched. An empty comment clears it. This mutates the Hopper document; use comments to record evidence IDs or reasoning.", z.object({
|
|
1391
|
+
address,
|
|
1392
|
+
comment: z.string(),
|
|
1393
|
+
document
|
|
1394
|
+
})),
|
|
1395
|
+
official("set_inline_comment", "Write an inline instruction comment at a hexadecimal address and return whether readback matched. An empty comment clears it; Hopper may flatten newlines, producing false on exact readback. This mutates analysis metadata.", z.object({
|
|
1396
|
+
address,
|
|
1397
|
+
comment: z.string(),
|
|
1398
|
+
document
|
|
1399
|
+
})),
|
|
1400
|
+
official("unset_bookmark", "Remove the bookmark at a mapped hexadecimal address and return whether it is absent. Hopper also permits removing an existing legacy bookmark outside mapped memory. This mutates navigation metadata and does not alter binary bytes.", z.object({
|
|
1401
|
+
address,
|
|
1402
|
+
document
|
|
1403
|
+
})),
|
|
1404
|
+
official("xrefs", "Return analyzed references to a code or data address. Hopper may default to its current cursor; headless providers such as Ghidra require an explicit address. Use to connect strings, globals, selectors, and functions; bare addresses are untyped and indirect references may be incomplete. Use inspect_native_instruction at the target address for typed incoming references where supported.", z.object({
|
|
1405
|
+
document,
|
|
1406
|
+
address: optionalAddress
|
|
1407
|
+
}))
|
|
1408
|
+
];
|
|
1409
|
+
})))();
|
|
1410
|
+
}
|
|
1411
|
+
|
|
1412
|
+
//#endregion
|
|
1413
|
+
export { analysisSearchInput as _, TOOL_EXAMPLE_OVERRIDES as a, init_functionComparison as c, init_processCaptureParsing as d, parseProcessCapture as f, isCallerOnlyIncompleteCoverage as g, init_functionCallCoverage as h, init_toolContractHelpers as i, init_functionDossierEvidence as l, functionCallCoverageLimitations as m, init_officialToolContracts as n, init_toolContractExamples as o, combineFunctionRelationshipCoverage as p, examplesFor as r, compareFunctions as s, OFFICIAL_TOOL_CONTRACTS as t, parseFunctionEvidence as u, init_analysisSearchContract as v };
|