rea-agents 6.5.0 → 6.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +12 -3
- package/THIRD_PARTY_NOTICES.md +1 -0
- package/bridge/android/ReaJadxBridge.java +167 -23
- package/bridge/cutter/rea_bridge.py +19 -10
- package/bridge/ghidra/ReaGhidraBridge.java +98 -66
- package/bridge/hopper_bridge.py +9 -1
- package/bridge/native/rea_lldb_tracer.py +48 -4
- package/bridge/pwndbg/core_context.py +15 -2
- package/dist/adb/AdbCommand.js +148 -0
- package/dist/adb/AdbConfiguration.js +26 -4
- package/dist/adb/AdbInputSnapshot.js +126 -0
- package/dist/adb/AdbProvider.js +765 -248
- package/dist/adb/AdbShellOutput.js +92 -21
- package/dist/android/AndroidTargetSnapshot.js +7 -7
- package/dist/android/JadxAnalysis.js +27 -32
- package/dist/android/JadxConfiguration.js +173 -125
- package/dist/android/JadxDoctor.js +11 -3
- package/dist/android/JadxFailure.js +154 -0
- package/dist/android/JadxInterruption.js +13 -0
- package/dist/android/JadxJavaProbe.js +246 -0
- package/dist/android/JadxMcpTransport.js +48 -15
- package/dist/android/JadxProtocol.js +29 -2
- package/dist/android/JadxProvider.js +171 -96
- package/dist/android/JadxRelease.js +5 -1
- package/dist/android/JadxSession.js +35 -14
- package/dist/apktool/ApktoolCommandCleanup.js +134 -0
- package/dist/apktool/ApktoolCommandOutput.js +22 -0
- package/dist/apktool/ApktoolConfiguration.js +162 -44
- package/dist/apktool/ApktoolDecodeOutput.js +29 -23
- package/dist/apktool/ApktoolDecodedInventory.js +52 -0
- package/dist/apktool/ApktoolProvider.js +254 -335
- package/dist/apktool/ApktoolStringTables.js +178 -0
- package/dist/apktool/ApktoolWorkspace.js +162 -0
- package/dist/application/AnalysisDocument.js +19 -4
- package/dist/application/AnalysisProvider.js +15 -1
- package/dist/application/AppBundleExecutable.js +11 -4
- package/dist/application/BinaryTargetResolver.js +9 -2
- package/dist/application/BrowserObservationService.js +54 -20
- package/dist/application/BrowserScenarioCaptureService.js +26 -6
- package/dist/application/CapabilityInventory.js +14 -8
- package/dist/application/ClaudeDesktopConfigLocation.js +5 -5
- package/dist/application/ClientConfigurationCleanup.js +73 -0
- package/dist/application/ClientConfigurationDocument.js +170 -128
- package/dist/application/ClientConfigurationPublication.js +167 -0
- package/dist/application/ClientRegistrationEnvironment.js +31 -1
- package/dist/application/ClientRegistrationIdentity.js +54 -39
- package/dist/application/ClientRegistrationStatus.js +123 -48
- package/dist/application/DirectAnalysis.js +15 -2
- package/dist/application/DirectAnalysisCleanup.js +5 -1
- package/dist/application/DirectAnalysisStatus.js +1 -1
- package/dist/application/Doctor.js +83 -9
- package/dist/application/DoctorDiagnostics.js +25 -4
- package/dist/application/DoctorProviderIds.js +7 -1
- package/dist/application/DshCordisPatch.js +1 -1
- package/dist/application/EnhancedTools.js +9 -21
- package/dist/application/HermesClientHome.js +20 -0
- package/dist/application/HermesConfigurationYaml.js +43 -3
- package/dist/application/HopperDownload.js +11 -3
- package/dist/application/HopperReleaseFeed.js +71 -0
- package/dist/application/InvestigationProviders.js +4 -3
- package/dist/application/JsonFiles.js +1 -1
- package/dist/application/LinuxHopper.js +96 -71
- package/dist/application/LinuxHopperPublisher.js +656 -0
- package/dist/application/MacHopper.js +182 -66
- package/dist/application/MipsElfMetadata.js +1 -1
- package/dist/application/MsixPackageStorage.js +13 -6
- package/dist/application/ProviderOperationExecution.js +13 -20
- package/dist/application/ReconstructionObligationCandidates.js +17 -2
- package/dist/application/ReconstructionObligationLedgerEvaluation.js +4 -0
- package/dist/application/ReconstructionObligationLedgerService.js +5 -3
- package/dist/application/ReconstructionObligationOriginalCases.js +8 -0
- package/dist/application/ReferenceSourceImportEntries.js +160 -18
- package/dist/application/ReferenceSourceImportPolicy.js +5 -3
- package/dist/application/ReferenceSourceVcsAdapter.js +3 -1
- package/dist/application/RegularFileRead.js +107 -88
- package/dist/application/Setup.js +23 -11
- package/dist/application/SetupClientConfiguration.js +155 -89
- package/dist/application/SetupClients.js +22 -13
- package/dist/application/SetupHost.js +90 -34
- package/dist/application/SetupInstallFailure.js +18 -3
- package/dist/application/SetupPlan.js +15 -5
- package/dist/application/SetupRecoveryBackup.js +40 -13
- package/dist/application/SetupRegistrationEnvironment.js +12 -0
- package/dist/application/SetupSkill.js +10 -30
- package/dist/application/SourceLimitations.js +35 -0
- package/dist/application/SupportedClients.js +4 -4
- package/dist/application/Uninstall.js +91 -36
- package/dist/application/UpdateCommandProgress.js +66 -0
- package/dist/application/UpdateMaintenance.js +7 -2
- package/dist/application/UpdateRuntime.js +60 -30
- package/dist/application/WebModuleTraceService.js +35 -22
- package/dist/application/WebNetworkCaptureService.js +8 -5
- package/dist/application/WebRuntimeService.js +41 -8
- package/dist/application/WebScriptExportService.js +6 -4
- package/dist/application/WebSourceLocationService.js +3 -4
- package/dist/application/WorkflowEvidence.js +11 -4
- package/dist/application/analysisView/AnalysisViewService.js +9 -52
- package/dist/application/android/AndroidAnalysisService.js +5 -4
- package/dist/application/android/AndroidSearchEvidenceSummary.js +6 -8
- package/dist/application/artifacts/ArtifactComparisonEvidence.js +32 -0
- package/dist/application/binary/AnalysisProviderEvaluation.js +14 -11
- package/dist/application/binary/AnalysisProviderRegistry.js +340 -50
- package/dist/application/binary/BinarySession.js +73 -34
- package/dist/application/binary/BinarySessionRecords.js +3 -0
- package/dist/application/binary/BinarySessionStatus.js +3 -4
- package/dist/application/binary/CompositeProvider.js +75 -30
- package/dist/application/binary/LazyAnalysisProvider.js +6 -68
- package/dist/application/binary/SessionProviderRouter.js +11 -2
- package/dist/application/binaryDiagnostics/BinaryLayoutService.js +3 -4
- package/dist/application/binaryDiagnostics/PeResourcesService.js +22 -5
- package/dist/application/binaryDiagnostics/RecordedCrashService.js +3 -4
- package/dist/application/captures/PacketCaptureService.js +3 -2
- package/dist/application/closeOwnedWebResources.js +32 -2
- package/dist/application/electron/ElectronFuseService.js +8 -43
- package/dist/application/evm/EvmInterfaceEvidence.js +11 -0
- package/dist/application/evm/EvmInterfaceService.js +4 -15
- package/dist/application/firmware/FirmwareAnalysisService.js +4 -3
- package/dist/application/go/GoBinaryService.js +4 -5
- package/dist/application/investigation/EvidenceLedger.js +3 -4
- package/dist/application/javascript/ElectronBoundaryGraphWindows.js +14 -2
- package/dist/application/javascript/ElectronEvidence.js +1 -2
- package/dist/application/javascript/ElectronObservationService.js +41 -7
- package/dist/application/javascript/JavaScriptApplicationEvidence.js +6 -0
- package/dist/application/javascript/JavaScriptArtifactAnalysis.js +35 -17
- package/dist/application/javascript/JavaScriptArtifactAnalysisTypes.js +30 -1
- package/dist/application/javascript/JavaScriptArtifactGraphContext.js +3 -2
- package/dist/application/javascript/JavaScriptArtifactGraphEvidence.js +3 -3
- package/dist/application/javascript/JavaScriptArtifactGraphFindings.js +41 -11
- package/dist/application/javascript/JavaScriptArtifactGraphStructure.js +18 -8
- package/dist/application/javascript/JavaScriptArtifactPathResolution.js +84 -24
- package/dist/application/javascript/JavaScriptArtifactReconstruction.js +15 -3
- package/dist/application/javascript/JavaScriptModuleRelationships.js +1 -1
- package/dist/application/javascript/JavaScriptRuntimeObservationEvidence.js +1 -2
- package/dist/application/javascript/JavaScriptRuntimeObservationService.js +33 -10
- package/dist/application/javascript/JavaScriptSemanticGraphAsyncProjection.js +4 -5
- package/dist/application/javascript/JavaScriptSemanticGraphBuilder.js +103 -24
- package/dist/application/javascript/JavaScriptSemanticGraphChildProcessProjection.js +13 -4
- package/dist/application/javascript/JavaScriptSemanticGraphConstruction.js +23 -3
- package/dist/application/javascript/JavaScriptSemanticGraphDataProjection.js +18 -5
- package/dist/application/javascript/JavaScriptSemanticGraphFlowProjection.js +4 -6
- package/dist/application/javascript/JavaScriptSemanticGraphObjectProjection.js +2 -3
- package/dist/application/javascript/JavaScriptSemanticGraphResourceProjection.js +2 -3
- package/dist/application/javascript/JavaScriptSemanticGraphValueProjection.js +5 -8
- package/dist/application/native/NativeCallRoutes.js +40 -23
- package/dist/application/native/NativeUiActionTrace.js +8 -0
- package/dist/application/native/NativeValueTrace.js +8 -0
- package/dist/application/reverse/ReverseEngineeringService.js +2 -2
- package/dist/application/rust/RustBinaryService.js +6 -4
- package/dist/application/signals/SignalRecordingService.js +3 -2
- package/dist/application/wasm/WasmArtifactService.js +4 -5
- package/dist/artifacts/AnalysisCleanupLease.js +119 -0
- package/dist/artifacts/ArtifactFileOperation.js +150 -0
- package/dist/artifacts/ArtifactHash.js +2 -1
- package/dist/artifacts/ArtifactProvider.js +16 -5
- package/dist/artifacts/ArtifactReader.js +50 -4
- package/dist/artifacts/ArtifactResourceScope.js +80 -6
- package/dist/artifacts/AsarArtifactReader.js +12 -11
- package/dist/artifacts/AsarEntryStream.js +49 -17
- package/dist/artifacts/DirectoryArtifactReader.js +28 -7
- package/dist/artifacts/MachOSliceArtifactReader.js +70 -13
- package/dist/artifacts/NativeDmgArtifactReader.js +112 -13
- package/dist/artifacts/SafeOutputTree.js +5 -3
- package/dist/artifacts/SafeOutputTreeCreationFailure.js +1 -0
- package/dist/artifacts/SafeOutputTreeReadback.js +10 -16
- package/dist/artifacts/ZipArtifactReader.js +34 -14
- package/dist/artifacts/apple/AppleAssetCatalogAnalysis.js +3 -1
- package/dist/artifacts/apple/DylibFileAccess.js +106 -0
- package/dist/artifacts/apple/DylibResolutionReader.js +64 -155
- package/dist/artifacts/apple/InterfaceBuilderAnalysis.js +52 -9
- package/dist/artifacts/apple/InterfaceBuilderDecodeBudget.js +25 -24
- package/dist/artifacts/apple/KeyedArchiveReader.js +20 -11
- package/dist/artifacts/apple/MachoLoadCommandReader.js +17 -2
- package/dist/artifacts/apple/PlistNumberLiterals.js +104 -116
- package/dist/artifacts/extraction/ArtifactExtraction.js +15 -12
- package/dist/artifacts/inventory/ArtifactGraphConstruction.js +9 -11
- package/dist/artifacts/inventory/ArtifactInventory.js +2 -2
- package/dist/artifacts/inventory/classify.js +4 -2
- package/dist/artifacts/inventory/hashStableRootArtifact.js +14 -7
- package/dist/artifacts/inventory/scanCanonical.js +3 -4
- package/dist/artifacts/javascript/JavaScriptArtifactFiles.js +3 -1
- package/dist/artifacts/readArtifactFileChunks.js +9 -0
- package/dist/artifacts/readStableArtifact.js +12 -34
- package/dist/browser/BrowserScenarioPartialObservation.js +14 -48
- package/dist/browser/CdpBrowserProvider.js +81 -30
- package/dist/browser/CdpCaptureDocuments.js +99 -131
- package/dist/browser/CdpCaptureDomSvg.js +31 -60
- package/dist/browser/CdpCaptureValues.js +12 -0
- package/dist/browser/CdpConnection.js +133 -27
- package/dist/browser/CdpElectronInspection.js +60 -60
- package/dist/browser/CdpElectronProvider.js +56 -4
- package/dist/browser/CdpElectronScriptEvents.js +4 -1
- package/dist/browser/CdpElectronScripts.js +2 -5
- package/dist/browser/CdpElectronWorkers.js +13 -2
- package/dist/browser/CdpPageCapture.js +2 -1
- package/dist/browser/CdpPageCaptureScripts.js +14 -10
- package/dist/browser/CdpPageCaptureWorkers.js +45 -14
- package/dist/browser/CdpSafeMetadata.js +23 -19
- package/dist/browser/CdpSnapshotNodes.js +103 -0
- package/dist/browser/CdpSnapshotStrings.js +0 -6
- package/dist/browser/CdpTargetSession.js +52 -10
- package/dist/browser/CdpTargetSessionOwner.js +198 -0
- package/dist/browser/ElectronCaptureCleanup.js +82 -0
- package/dist/browser/ElectronProcessCleanup.js +91 -0
- package/dist/browser/PlaywrightBrowserScenarioProvider.js +71 -16
- package/dist/browser/PlaywrightElectronActiveActions.js +53 -5
- package/dist/browser/PlaywrightElectronActiveFuses.js +86 -0
- package/dist/browser/PlaywrightElectronActiveProjection.js +5 -0
- package/dist/browser/PlaywrightElectronActiveProvider.js +140 -151
- package/dist/browser/PlaywrightExecutionBoundary.js +4 -2
- package/dist/browser/PlaywrightScenarioBrowser.js +236 -90
- package/dist/browser/PlaywrightScenarioEvents.js +135 -48
- package/dist/browser/PlaywrightScenarioServiceWorkers.js +121 -34
- package/dist/browser/PlaywrightScenarioSession.js +95 -22
- package/dist/browser/PlaywrightScenarioStorage.js +15 -7
- package/dist/browser/StructuredFieldToken.js +53 -0
- package/dist/browser/WebArtifactCleanup.js +53 -0
- package/dist/browser/WebSourceMapFetcher.js +19 -10
- package/dist/browser/assets/WebArtifactReads.js +6 -2
- package/dist/browser/assets/WebSourceLocationArtifacts.js +12 -3
- package/dist/browser/execution/CdpRuntimeSession.js +36 -7
- package/dist/browser/execution/CdpWebRuntimeProvider.js +22 -4
- package/dist/browser/history/CaptureFailures.js +7 -2
- package/dist/browser/history/HarCapture.js +42 -11
- package/dist/browser/history/SazMetadata.js +10 -47
- package/dist/browser/modules/NativeModuleResolver.js +108 -58
- package/dist/browser/modules/WebModuleArtifacts.js +12 -3
- package/dist/browser/network/PlaywrightNetworkContent.js +40 -17
- package/dist/browser/network/PlaywrightScenarioNetwork.js +182 -73
- package/dist/captures/TsharkCaptureProvider.js +13 -6
- package/dist/catalogIdentity.js +19 -14
- package/dist/cli/adbCommands.js +18 -19
- package/dist/cli/androidCommands.js +2 -14
- package/dist/cli/apktoolCommands.js +4 -14
- package/dist/cli/binaryDiagnosticsCommands.js +5 -5
- package/dist/cli/browserAdvancedCommands.js +11 -4
- package/dist/cli/browserCommands.js +21 -12
- package/dist/cli/captureCommands.js +4 -4
- package/dist/cli/cliResultOutput.js +175 -89
- package/dist/cli/coreBinaryCommands.js +4 -3
- package/dist/cli/cutterCommands.js +51 -13
- package/dist/cli/electronCommands.js +34 -13
- package/dist/cli/evmCommands.js +6 -15
- package/dist/cli/finishAnalysisCommand.js +10 -2
- package/dist/cli/firmwareCommands.js +6 -14
- package/dist/cli/flutterCommands.js +2 -18
- package/dist/cli/fridaCommands.js +8 -0
- package/dist/cli/goCommands.js +2 -2
- package/dist/cli/javascriptRecoveryCommands.js +14 -26
- package/dist/cli/jebCommands.js +2 -14
- package/dist/cli/options.js +6 -0
- package/dist/cli/pcapCommands.js +2 -20
- package/dist/cli/rustCommands.js +6 -7
- package/dist/cli/setupCommands.js +4 -3
- package/dist/cli/signalCommands.js +4 -4
- package/dist/cli/sqliteCommands.js +17 -44
- package/dist/cli/wasmCommands.js +7 -18
- package/dist/cli/webModuleCommands.js +19 -34
- package/dist/cli/webNetworkCaptureCommands.js +3 -2
- package/dist/cli/webRuntimeCommands.js +15 -6
- package/dist/cli/webSourceLocationCommands.js +14 -33
- package/dist/cli-runtime/AnalysisCleanupLease-CWfTGYKd.js +103 -0
- package/dist/cli-runtime/{AnalysisProvider-D0Us2OTk.js → AnalysisProvider-BGrYaMVo.js} +14 -3
- package/dist/cli-runtime/{AnalysisSnapshotCache-BXS0wRd2.js → AnalysisSnapshotCache-BjRlXeUS.js} +14 -13
- package/dist/cli-runtime/ArtifactFileOperation-Dg4BcoEM.js +122 -0
- package/dist/cli-runtime/{ArtifactReader-BXkffc1D.js → ArtifactReader-DMwm42bk.js} +29 -6
- package/dist/cli-runtime/ArtifactResourceScope-CokZGcII.js +175 -0
- package/dist/cli-runtime/{AsarHeader-CnzOzYEH.js → AsarHeader-BxwU17DJ.js} +1 -1
- package/dist/cli-runtime/{BinarySessionStatus-DnMxMk-r.js → BinarySessionStatus-DRhjr7Vb.js} +4 -3
- package/dist/cli-runtime/{BinaryTargetResolver-CVIJ_s1A.js → BinaryTargetResolver-tuCTjBlQ.js} +38 -108
- package/dist/cli-runtime/{BoundedFileBytes-BU30odTm.js → BoundedFileBytes-DRtiQNAQ.js} +7 -3
- package/dist/cli-runtime/{CdpTargetSession-DGX5pV9w.js → CdpTargetSession-CQ08KHbh.js} +318 -43
- package/dist/cli-runtime/ClientConfigPath-Dn-V_GUf.js +255 -0
- package/dist/cli-runtime/{ClientConfigurationDocument-ffQ9X0Se.js → ClientConfigurationDocument-C9T8MNGc.js} +206 -142
- package/dist/cli-runtime/{ClientRegistrationStatus-DszCyPEU.js → ClientRegistrationStatus-PnD29RTX.js} +112 -36
- package/dist/cli-runtime/{CurrentEntrypointPath-D5FRNdkq.js → CurrentEntrypointPath-m7QCIVN0.js} +1 -1
- package/dist/cli-runtime/{DirectAnalysis-BgvAtpN3.js → DirectAnalysis-C5NyUryV.js} +76 -23
- package/dist/cli-runtime/DirectoryArtifactReader-CokAJ8vo.js +448 -0
- package/dist/cli-runtime/{Doctor-DIpf_I7N.js → Doctor-DrkWsav4.js} +105 -25
- package/dist/cli-runtime/{ElectronFileScope-dpHm2nrS.js → ElectronFileScope-AP7VoVr7.js} +204 -149
- package/dist/cli-runtime/ElectronFuseFailures-DsjXR7Xp.js +609 -0
- package/dist/cli-runtime/{ExecFileOutput-BEQs-lDD.js → ExecFileOutput-D6KLYTve.js} +11 -9
- package/dist/cli-runtime/{InterfaceBuilderDecodeBudget-D4omRUe4.js → InterfaceBuilderDecodeBudget-CW1IO3dG.js} +40 -21
- package/dist/cli-runtime/{InventoryProjectionEvidence-DIsI4DJ6.js → InventoryProjectionEvidence-DTH5QAqL.js} +3 -3
- package/dist/cli-runtime/{InvestigationProviders-DoQRIHii.js → InvestigationProviders-CFh4a64d.js} +3 -2
- package/dist/cli-runtime/{JavaScriptApplicationEvidenceGraph-D5aI_FSJ.js → JavaScriptApplicationEvidenceGraph-gOmPB2L6.js} +6 -6
- package/dist/cli-runtime/{JavaScriptApplicationWorkflowEvidence-Bz4-V0Ct.js → JavaScriptApplicationWorkflowEvidence-WZgtK_Ok.js} +2 -2
- package/dist/cli-runtime/JebMcpEndpoint-BEalGZh9.js +710 -0
- package/dist/cli-runtime/{JsonFiles-DQa1PRKy.js → JsonFiles-uvd6ZyQi.js} +10 -118
- package/dist/cli-runtime/KunaInstallation-P0j3x851.js +1781 -0
- package/dist/cli-runtime/MacHopperPaths-bGzqjF1Z.js +34 -0
- package/dist/cli-runtime/{MachoLoadCommandReader-C7e074Ze.js → MachoLoadCommandReader-CZm6N5vF.js} +12 -192
- package/dist/cli-runtime/{ManagedSnapshot-rqyBHcdL.js → ManagedSnapshot-CPE9C3OD.js} +406 -110
- package/dist/cli-runtime/OwnedCommandCleanup-BN_V6Erc.js +187 -0
- package/dist/cli-runtime/OwnedRegularFile-D1f5nUCx.js +256 -0
- package/dist/cli-runtime/OwnedStagedOutput-D31dOozz.js +126 -0
- package/dist/cli-runtime/{PrivateRuntimeRoot-DAy0PiBM.js → PrivateRuntimeRoot-Cd23u6jd.js} +39 -6
- package/dist/cli-runtime/ProcessOwnership-CtrNr6ee.js +545 -0
- package/dist/cli-runtime/{ProcessOwnership-DXC5-UWt.js → ProcessOwnershipObservation-C006iCtZ.js} +149 -607
- package/dist/cli-runtime/{ProviderDeadline-8m2pFRDc.js → ProviderDeadline-rSuH4Pm8.js} +27 -1
- package/dist/cli-runtime/ProviderOperationExecution-CmU-XrQr.js +38 -0
- package/dist/cli-runtime/{snapshotEnvironment-D_tWyOub.js → ProviderProcess-D87A7ctp.js} +117 -160
- package/dist/cli-runtime/RegularFileRead-mbgGYtxe.js +125 -0
- package/dist/cli-runtime/{SafeOutputTree-D6U15GXd.js → SafeOutputTree-i904hd_2.js} +21 -20
- package/dist/cli-runtime/{SetupHost-FkYWswsq.js → SetupHost-CMPmPraB.js} +365 -195
- package/dist/cli-runtime/SharedStartupAttempt-BxKyf3Uv.js +1424 -0
- package/dist/cli-runtime/StableFileHash-Ame_h3lY.js +61 -0
- package/dist/cli-runtime/{SupportedClients-DaX6Lt2d.js → SupportedClients-DMafjitv.js} +89 -72
- package/dist/cli-runtime/{Update-CbTC_eg1.js → Update-DAsASWlE.js} +1 -1
- package/dist/cli-runtime/{AbortablePromise-BVBemxbD.js → WindowsBatchCommand-Cx9kaVNf.js} +2 -28
- package/dist/cli-runtime/WindowsNativeLoader-BqyZO0ZD.js +142 -0
- package/dist/cli-runtime/{ZipArtifactReader-B8ZgNe4D.js → ZipArtifactReader-Jed69LEL.js} +20 -16
- package/dist/cli-runtime/{analysisErrorCleanup-Do6YeeoD.js → analysisErrorCleanup-COdAmDsb.js} +4 -3
- package/dist/cli-runtime/{appleArchiveFormat-tVoI2ykA.js → appleArchiveFormat-Bb3G5CCI.js} +13 -7
- package/dist/cli-runtime/{application__DirectAnalysisStatus-DpOejOf0.js → application__DirectAnalysisStatus-F74bu9oy.js} +10 -10
- package/dist/cli-runtime/{application__EnhancedTools-oFE2bOjs.js → application__EnhancedTools-Bg51b0Yp.js} +84 -51
- package/dist/cli-runtime/{application__FunctionAnalysisEvidence-B6osuhvW.js → application__FunctionAnalysisEvidence-DBWIaYCh.js} +3 -3
- package/dist/cli-runtime/{application__ReconstructionCoverageService-DN3wTFQj.js → application__ReconstructionCoverageService-AEPNpZqJ.js} +3 -3
- package/dist/cli-runtime/{application__ReconstructionObligationLedgerService-CKcTppX9.js → application__ReconstructionObligationLedgerService-Cl9cPEZf.js} +22 -9
- package/dist/cli-runtime/{application__Setup-XpMaRNjy.js → application__Setup-DwQzEewK.js} +30 -18
- package/dist/cli-runtime/{application__Uninstall-_23pU2yB.js → application__Uninstall-BOf9oyvQ.js} +78 -37
- package/dist/cli-runtime/{application__UpdateRuntime-DPvY8ohd.js → application__UpdateRuntime-CzWkRJHa.js} +119 -29
- package/dist/cli-runtime/{application__android__AndroidApplicationService-CFgIFPM4.js → application__android__AndroidApplicationService-shW_aKlj.js} +3 -3
- package/dist/cli-runtime/{application__apple__AppleApplicationService-Db6QCsun.js → application__apple__AppleApplicationService-DIv6d3wB.js} +3 -3
- package/dist/cli-runtime/{application__harmony__HarmonyApplicationService-CFjocHoK.js → application__harmony__HarmonyApplicationService-OIUFVQFV.js} +3 -3
- package/dist/cli-runtime/{application__javascript__ElectronActiveObservationService-CmVDUI_Z.js → application__javascript__ElectronActiveObservationService-wvCh72hK.js} +3 -3
- package/dist/cli-runtime/application__javascript__ElectronObservationService-SydXPCwM.js +88 -0
- package/dist/cli-runtime/{application__javascript__JavaScriptApplicationService-CCkp8KBh.js → application__javascript__JavaScriptApplicationService-o0uEsjEc.js} +1120 -316
- package/dist/cli-runtime/{application__javascript__JavaScriptApplicationWorkflowService-lPy0tzr3.js → application__javascript__JavaScriptApplicationWorkflowService-BAheG_71.js} +51 -44
- package/dist/cli-runtime/{application__javascript__JavaScriptRuntimeReconciliationService-DWleA8K9.js → application__javascript__JavaScriptRuntimeReconciliationService-Cnn4GP8q.js} +5 -5
- package/dist/cli-runtime/{application__javascript__JavaScriptSemanticTraceService-DkALH4rL.js → application__javascript__JavaScriptSemanticTraceService-CmvLfV1A.js} +6 -6
- package/dist/cli-runtime/{artifacts__ArtifactProvider-zXI0QjSL.js → artifacts__ArtifactProvider-wx2K0F2I.js} +377 -359
- package/dist/cli-runtime/{binary-BVOr2mgE.js → binary-CWVNJhAC.js} +8561 -3159
- package/dist/cli-runtime/{catalogIdentity-DLoXgfIR.js → catalogIdentity-DAEEsOdX.js} +260 -81
- package/dist/cli-runtime/cli.js +6177 -3556
- package/dist/cli-runtime/{cliOutput-BC1BdAcB.js → cliOutput-CgSuw782.js} +47 -6
- package/dist/cli-runtime/cliOutput.js +2 -2
- package/dist/cli-runtime/cliResultOutput-10sd6xGx.js +1453 -0
- package/dist/cli-runtime/cliResultOutput.js +2 -1
- package/dist/cli-runtime/{composition__browserScenario-DHXC1a8n.js → composition__browserScenario-BtPb1c1y.js} +843 -356
- package/dist/cli-runtime/{composition__electronObservation-GecK2EID.js → composition__electronObservation-Bk8R6DJo.js} +128 -69
- package/dist/cli-runtime/{composition__electronScenario-CEZnVrAL.js → composition__electronScenario-BVF0qStH.js} +398 -135
- package/dist/cli-runtime/{cutterToolContracts-TZH9EHr5.js → cutterToolContracts-BQtG_Nzo.js} +195 -62
- package/dist/cli-runtime/{doctorRuntime-BE5ZX8it.js → doctorRuntime-B__SIpm-.js} +241 -21
- package/dist/cli-runtime/{dotnet__ManagedStaticProvider-C8_yZCDc.js → dotnet__ManagedStaticProvider-DO5Yzcp4.js} +1 -1
- package/dist/cli-runtime/{errorSchemas-CTRmvMl3.js → errorSchemas-Ixz_q7qt.js} +58 -4
- package/dist/cli-runtime/homeDirectory-DC_DeJIg.js +18 -0
- package/dist/cli-runtime/{javascriptApplicationAnalysis-HgMzVMQw.js → javascriptApplicationAnalysis-Dk6yBV8g.js} +688 -668
- package/dist/cli-runtime/{javascriptExportReturnShapeProjection-Dg00g35t.js → javascriptExportReturnShapeProjection-CObOIiQ6.js} +3 -3
- package/dist/cli-runtime/{javascriptExportShapeComparisonSchemas-BYnoIqIk.js → javascriptExportShapeComparisonSchemas-DpwuBenh.js} +5 -3
- package/dist/cli-runtime/{javascriptRuntimeReconciliation-DNjDoL3S.js → javascriptRuntimeReconciliation-C6ZgWMys.js} +61 -59
- package/dist/cli-runtime/{javascriptRuntimeReconciliationSchemas-BWpGWNcI.js → javascriptRuntimeReconciliationSchemas-D6tZKUQs.js} +2 -2
- package/dist/cli-runtime/{javascriptSemanticTraceSchemas-BTCNcvbc.js → javascriptSemanticTraceSchemas-C7m0b6_w.js} +3 -3
- package/dist/cli-runtime/{lipo-DSWP6fv-.js → lipo-DPQ6qurH.js} +9 -11
- package/dist/cli-runtime/{logger-CQQCI4a2.js → logger-BuDJ9xxO.js} +2 -2
- package/dist/cli-runtime/{machoContainer-C8BIkkq3.js → machoContainer-Cy98bkFm.js} +180 -0
- package/dist/cli-runtime/{managedApplicationGraph-B08jb3jq.js → managedApplicationGraph-BazVqpJv.js} +16 -10
- package/dist/cli-runtime/{managedToolContracts-D60QmIYj.js → managedToolContracts-BuFkMBH5.js} +2 -2
- package/dist/cli-runtime/mcpDoctor.js +8 -6
- package/dist/cli-runtime/mcpStartupPolicy-imCbM3qo.js +28 -0
- package/dist/cli-runtime/{native__NativeMacOSProvider-YBTvUeJO.js → native__NativeMacOSProvider-DTcRhuGA.js} +1384 -757
- package/dist/cli-runtime/{officialToolContracts-CCFF0an9.js → officialToolContracts-CzzVLx8I.js} +74 -53
- package/dist/cli-runtime/peMachine-B9ggfSJJ.js +95 -0
- package/dist/cli-runtime/propertyListKeys-D5dSASEy.js +355 -0
- package/dist/cli-runtime/{providerCleanupError-Ceq8f0wK.js → providerCleanupError-BhsJyAhk.js} +3 -5
- package/dist/cli-runtime/readArtifactFileChunks-BbTL_PtB.js +129 -0
- package/dist/cli-runtime/{reconstructionObligationLedgerSchemas-Bao0xMr-.js → reconstructionObligationLedgerSchemas-Bi6sect1.js} +6329 -3651
- package/dist/cli-runtime/{scanCanonical-KP4T9jSl.js → scanCanonical-CcDFUr-w.js} +233 -363
- package/dist/cli-runtime/snapshotEnvironment-Yvx5qwsl.js +196 -0
- package/dist/cli-runtime/{toolContracts-D2FOG_Nb.js → toolContracts-CJzEyZ38.js} +126 -52
- package/dist/cli-runtime/{toolOutputSchemaGroups-DRiYs1je.js → toolOutputSchemaGroups-BqdSzySu.js} +768 -589
- package/dist/cli-runtime/{workflowInputError-n8Oo-bLA.js → workflowInputError-BP8z9Wxl.js} +2 -2
- package/dist/cli.js +10 -0
- package/dist/cliBrowserScenarioCommands.js +2 -3
- package/dist/cliLogging.js +22 -7
- package/dist/cliObservationOptions.js +3 -0
- package/dist/cliOutput.js +68 -3
- package/dist/composition/binary.js +15 -2
- package/dist/composition/directAnalysis.js +8 -0
- package/dist/composition/javascriptAnalysisWorkerProcess.js +4 -5
- package/dist/composition/jeb.js +32 -21
- package/dist/config/environment.js +36 -2
- package/dist/config/mcpInputSchemaProfile.js +1 -1
- package/dist/config/parseConfig.js +7 -3
- package/dist/contracts/adb/adbToolContracts.js +2 -2
- package/dist/contracts/analysisViewApiSurfaceExample.js +4 -4
- package/dist/contracts/analysisViewToolContracts.js +42 -1
- package/dist/contracts/android/androidToolContracts.js +1 -1
- package/dist/contracts/apktool/apktoolToolContracts.js +5 -1
- package/dist/contracts/artifactComparisonExample.js +18 -14
- package/dist/contracts/artifactToolContracts.js +2 -1
- package/dist/contracts/browserScenarioToolContracts.js +1 -1
- package/dist/contracts/browserToolContracts.js +12 -1
- package/dist/contracts/compactInputSchema.js +13 -6
- package/dist/contracts/fridaToolContracts.js +5 -4
- package/dist/contracts/gdbToolContracts.js +2 -3
- package/dist/contracts/inputSchemaPresentation.js +173 -79
- package/dist/contracts/javascript/javascriptExportShapeComparisonExample.js +1 -0
- package/dist/contracts/javascript/javascriptRuntimeReconciliationExample.js +1 -0
- package/dist/contracts/jsonSchemaKeywords.js +29 -0
- package/dist/contracts/managed/managedWorkflowExamples.js +3 -0
- package/dist/contracts/managed/managedWorkflowToolContracts.js +1 -1
- package/dist/contracts/mobileApplicationGraphExamples.js +15 -12
- package/dist/contracts/officialToolContracts.js +2 -2
- package/dist/contracts/rizinDebugToolContracts.js +3 -2
- package/dist/contracts/sessionToolContracts.js +3 -3
- package/dist/contracts/toolEffects.js +6 -2
- package/dist/contracts/toolOutputSchemaGroups.js +7 -4
- package/dist/contracts/toolOutputSchemaPrimitives.js +7 -0
- package/dist/contracts/toolSchemaMetadata.js +99 -27
- package/dist/cutter/CutterBridgeClient.js +206 -67
- package/dist/cutter/CutterBridgeService.js +52 -4
- package/dist/doctorRuntime.js +25 -4
- package/dist/domain/adb/adbDeviceAnalysis.js +19 -1
- package/dist/domain/analysisErrorBase.js +59 -2
- package/dist/domain/analysisErrorCleanup.js +3 -1
- package/dist/domain/analysisErrorCore.js +13 -0
- package/dist/domain/analysisErrorPresentation.js +23 -4
- package/dist/domain/analysisErrorProjection.js +44 -28
- package/dist/domain/analysisSearch.js +26 -0
- package/dist/domain/analysisSnapshot.js +11 -11
- package/dist/domain/analysisView/WebNetworkApiSurfaceAccumulator.js +4 -65
- package/dist/domain/analysisView/analysisView.js +25 -0
- package/dist/domain/analysisView/analysisViewDataAdmission.js +86 -0
- package/dist/domain/analysisView/artifactInventoryView.js +4 -18
- package/dist/domain/analysisView/javascriptApplicationCoverage.js +27 -0
- package/dist/domain/analysisView/javascriptApplicationView.js +100 -27
- package/dist/domain/analysisView/javascriptFactsView.js +92 -0
- package/dist/domain/analysisView/javascriptModuleReferences.js +37 -0
- package/dist/domain/analysisView/managedMemberView.js +6 -0
- package/dist/domain/android/androidApplication.js +8 -7
- package/dist/domain/apktool/apktoolResourceAnalysis.js +52 -2
- package/dist/domain/apple/appleApplication.js +41 -60
- package/dist/domain/apple/appleBundleAnatomy.js +56 -68
- package/dist/domain/apple/dylibResolution.js +5 -1
- package/dist/domain/apple/interfaceBuilderGraph.js +29 -8
- package/dist/domain/apple/interfaceBuilderKeyedArchive.js +11 -4
- package/dist/domain/apple/jvmClassFile.js +226 -0
- package/dist/domain/apple/keyedArchive.js +39 -17
- package/dist/domain/apple/machoContainer.js +3 -0
- package/dist/domain/apple/plistNumbers.js +67 -5
- package/dist/domain/apple/plistValue.js +89 -18
- package/dist/domain/artifactComparison.js +7 -5
- package/dist/domain/artifactGraph.js +4 -12
- package/dist/domain/artifactInspection.js +6 -17
- package/dist/domain/artifactInventoryEvidence.js +68 -60
- package/dist/domain/binaryTarget.js +11 -26
- package/dist/domain/binaryTargetTypes.js +10 -0
- package/dist/domain/browserNetworkEvidence.js +20 -3
- package/dist/domain/browserObservation.js +5 -28
- package/dist/domain/browserObservationError.js +4 -4
- package/dist/domain/browserScenarioCapture.js +11 -2
- package/dist/domain/browserScenarioCaptureLimits.js +34 -0
- package/dist/domain/browserScenarioCaptureValues.js +50 -0
- package/dist/domain/browserScenarioDiffEvidence.js +1 -3
- package/dist/domain/browserScenarioValues.js +5 -1
- package/dist/domain/captures/packetCapture.js +2 -1
- package/dist/domain/dosMz.js +14 -5
- package/dist/domain/electron/electronFuseEvidence.js +42 -0
- package/dist/domain/elfFixedHeader.js +24 -0
- package/dist/domain/evidence.js +7 -6
- package/dist/domain/evidenceBundle.js +9 -2
- package/dist/domain/explicitSensitiveFailure.js +3 -0
- package/dist/domain/fileSnapshotObservation.js +25 -0
- package/dist/domain/fixedTupleSchema.js +9 -0
- package/dist/domain/functionCallCoverage.js +6 -6
- package/dist/domain/functionComparisonDimensions.js +38 -11
- package/dist/domain/functionComparisonNormalization.js +17 -9
- package/dist/domain/functionDossierEvidence.js +4 -3
- package/dist/domain/harmony/harmonyApplication.js +8 -8
- package/dist/domain/hopperErrors.js +4 -2
- package/dist/domain/hopperValues.js +27 -4
- package/dist/domain/javascript/electronActiveObservation.js +1 -0
- package/dist/domain/javascript/electronStaticAnalysisBrowser.js +80 -20
- package/dist/domain/javascript/electronStaticAnalysisValues.js +0 -20
- package/dist/domain/javascript/electronStaticOptionObjects.js +45 -0
- package/dist/domain/javascript/electronWrappedCallPaths.js +70 -17
- package/dist/domain/javascript/javascriptAnalysisResourceControls.js +20 -4
- package/dist/domain/javascript/javascriptApplicationAnalysis.js +4 -0
- package/dist/domain/javascript/javascriptApplicationChangeGraph.js +3 -0
- package/dist/domain/javascript/javascriptApplicationVersionComparisonSchemas.js +3 -1
- package/dist/domain/javascript/javascriptApplicationVersionItems.js +49 -21
- package/dist/domain/javascript/javascriptAstFingerprint.js +41 -10
- package/dist/domain/javascript/javascriptAstValues.js +83 -5
- package/dist/domain/javascript/javascriptBundledRequireOrigin.js +23 -36
- package/dist/domain/javascript/javascriptCommonJsExportReceivers.js +231 -0
- package/dist/domain/javascript/javascriptElectronMemberWrites.js +14 -4
- package/dist/domain/javascript/javascriptFeatureSeed.js +1 -1
- package/dist/domain/javascript/javascriptGraphqlOperations.js +382 -0
- package/dist/domain/javascript/javascriptModuleDeclaration.js +20 -0
- package/dist/domain/javascript/javascriptNativeHandoff.js +7 -11
- package/dist/domain/javascript/javascriptRpcEndpoints.js +7 -171
- package/dist/domain/javascript/javascriptRuntimeLoadState.js +9 -4
- package/dist/domain/javascript/javascriptRuntimeReconciliationCaptureParsing.js +35 -12
- package/dist/domain/javascript/javascriptRuntimeReconciliationMatching.js +50 -45
- package/dist/domain/javascript/javascriptSemanticAmbientWrites.js +284 -24
- package/dist/domain/javascript/javascriptSemanticAnalysis.js +452 -182
- package/dist/domain/javascript/javascriptSemanticAsyncEffects.js +37 -20
- package/dist/domain/javascript/javascriptSemanticCallResolution.js +55 -27
- package/dist/domain/javascript/javascriptSemanticCalls.js +4 -4
- package/dist/domain/javascript/javascriptSemanticChildProcesses.js +134 -50
- package/dist/domain/javascript/javascriptSemanticCoverage.js +5 -1
- package/dist/domain/javascript/javascriptSemanticDataEffectHelpers.js +7 -13
- package/dist/domain/javascript/javascriptSemanticDataEffects.js +33 -10
- package/dist/domain/javascript/javascriptSemanticDerivedAnalysis.js +1 -1
- package/dist/domain/javascript/javascriptSemanticEvaluationOrder.js +126 -0
- package/dist/domain/javascript/javascriptSemanticExpressionShapes.js +111 -0
- package/dist/domain/javascript/javascriptSemanticGetterQueries.js +147 -0
- package/dist/domain/javascript/javascriptSemanticGetterResults.js +264 -0
- package/dist/domain/javascript/javascriptSemanticGraph.js +18 -1
- package/dist/domain/javascript/javascriptSemanticGraphSchemas.js +13 -0
- package/dist/domain/javascript/javascriptSemanticIterationSources.js +3 -2
- package/dist/domain/javascript/javascriptSemanticMapOperations.js +51 -0
- package/dist/domain/javascript/javascriptSemanticMemberMutations.js +215 -81
- package/dist/domain/javascript/javascriptSemanticMutationInitializers.js +395 -118
- package/dist/domain/javascript/javascriptSemanticObjectReferences.js +241 -328
- package/dist/domain/javascript/javascriptSemanticObjects.js +33 -27
- package/dist/domain/javascript/javascriptSemanticOpaqueEffects.js +163 -0
- package/dist/domain/javascript/javascriptSemanticPrimitives.js +11 -1
- package/dist/domain/javascript/javascriptSemanticProjection.js +44 -67
- package/dist/domain/javascript/javascriptSemanticQueryIdentity.js +2 -1
- package/dist/domain/javascript/javascriptSemanticQuerySchemas.js +1 -1
- package/dist/domain/javascript/javascriptSemanticRequireOrigin.js +45 -7
- package/dist/domain/javascript/javascriptSemanticResourceLimits.js +3 -19
- package/dist/domain/javascript/javascriptSemanticResources.js +27 -4
- package/dist/domain/javascript/javascriptSemanticReturnedReferences.js +78 -37
- package/dist/domain/javascript/javascriptSemanticReturns.js +2 -2
- package/dist/domain/javascript/javascriptSemanticState.js +191 -42
- package/dist/domain/javascript/javascriptSemanticValues.js +167 -41
- package/dist/domain/javascript/javascriptSourceParser.js +54 -9
- package/dist/domain/javascript/javascriptStaticAnalysis.js +24 -13
- package/dist/domain/javascript/javascriptStaticAnalysisCalls.js +276 -16
- package/dist/domain/javascript/javascriptStaticAnalysisHelpers.js +33 -25
- package/dist/domain/javascript/javascriptStaticAnalysisState.js +3 -0
- package/dist/domain/javascript/javascriptStaticAnalysisTypes.js +1 -1
- package/dist/domain/javascript/javascriptSymbolicBindings.js +424 -142
- package/dist/domain/javascript/javascriptSymbolicControlFlow.js +4 -0
- package/dist/domain/javascript/javascriptSymbolicValues.js +12 -1
- package/dist/domain/javascript/sourceToBundleSignals.js +3 -0
- package/dist/domain/managed/managedApplicationGraphNodes.js +14 -9
- package/dist/domain/managed/managedArtifact.js +26 -0
- package/dist/domain/managed/managedMemberComparison.js +3 -0
- package/dist/domain/managed/managedMemberComparisonCoverage.js +14 -1
- package/dist/domain/managed/managedMemberComparisonItems.js +124 -52
- package/dist/domain/managed/managedMemberComparisonMatch.js +76 -72
- package/dist/domain/managed/managedMemberSignatureIdentity.js +40 -0
- package/dist/domain/managed/managedNativeVerificationMatch.js +5 -5
- package/dist/domain/managed/managedNativeVerificationSchemas.js +2 -2
- package/dist/domain/mobileApplicationGraphProjection.js +33 -18
- package/dist/domain/native/bytePattern.js +21 -0
- package/dist/domain/native/nativeAotPe.js +29 -2
- package/dist/domain/native/nativeAotSnapshotObservation.js +18 -0
- package/dist/domain/native/nativeCallPartialObservation.js +14 -12
- package/dist/domain/native/nativeLoadImage.js +13 -0
- package/dist/domain/native/objcSwiftMetadata.js +15 -8
- package/dist/domain/native/peResources.js +6 -2
- package/dist/domain/peMachine.js +2 -0
- package/dist/domain/process/processComparison.js +3 -3
- package/dist/domain/process/processTraceDimensionProjection.js +1 -1
- package/dist/domain/process/processTraceEvaluation.js +65 -24
- package/dist/domain/propertyListKeys.js +84 -69
- package/dist/domain/propertyListXml.js +149 -0
- package/dist/domain/providerAdapterError.js +2 -0
- package/dist/domain/providerCleanupError.js +2 -4
- package/dist/domain/rawBinary.js +11 -2
- package/dist/domain/reconstructionCoverage.js +35 -23
- package/dist/domain/reconstructionCoverageEvaluation.js +36 -36
- package/dist/domain/reconstructionCoverageEvidence.js +26 -0
- package/dist/domain/reconstructionVerification.js +40 -26
- package/dist/domain/referenceSourceImportParsing.js +4 -0
- package/dist/domain/referenceSourcePathIdentity.js +2 -0
- package/dist/domain/referenceSourceRequireBindings.js +40 -101
- package/dist/domain/relationshipCoverage.js +4 -5
- package/dist/domain/sqlite/sqliteDatabase.js +2 -1
- package/dist/domain/symbolAnalysis.js +9 -8
- package/dist/domain/webBundleAnalyzerInspection.js +65 -25
- package/dist/domain/webCaptureDiff.js +124 -41
- package/dist/domain/webInventory.js +28 -14
- package/dist/domain/webModuleTrace.js +22 -0
- package/dist/domain/webScriptExportError.js +2 -3
- package/dist/domain/xmlDocument.js +41 -0
- package/dist/domain/zipPackageFormat.js +0 -4
- package/dist/dotnet/ManagedArtifactInspector.js +2 -4
- package/dist/dotnet/ManagedDecodeBudget.js +21 -1
- package/dist/dotnet/ManagedMemberInspector.js +31 -6
- package/dist/dotnet/ManagedMemberInspectorCore.js +63 -12
- package/dist/dotnet/ManagedMemberRows.js +8 -8
- package/dist/dotnet/ManagedMetadataHeaps.js +0 -1
- package/dist/dotnet/ManagedMetadataLayout.js +17 -15
- package/dist/dotnet/ManagedNativeBoundaryHelpers.js +20 -19
- package/dist/dotnet/ManagedNativeBoundaryInspector.js +7 -8
- package/dist/dotnet/ManagedPeReader.js +5 -0
- package/dist/dotnet/ManagedSnapshot.js +25 -20
- package/dist/dotnet/ManagedTypeNameDigests.js +177 -0
- package/dist/dotnet/ManagedTypeNames.js +6 -46
- package/dist/dotnet/ManagedTypeNesting.js +25 -0
- package/dist/dotnet/ManagedTypeReferences.js +94 -0
- package/dist/electron/ElectronFuseFailures.js +105 -0
- package/dist/electron/ElectronFusePath.js +4 -3
- package/dist/electron/ElectronFuseProvider.js +67 -92
- package/dist/electron/ElectronFuseReader.js +46 -30
- package/dist/evm/EvmoleFailures.js +1 -0
- package/dist/evm/EvmoleInterfaceProvider.js +13 -16
- package/dist/filesystem/OwnedRegularFile.js +116 -0
- package/dist/filesystem/OwnedStagedOutput.js +28 -11
- package/dist/filesystem/RegularFile.js +20 -8
- package/dist/filesystem/StableFileHash.js +56 -38
- package/dist/filesystem/callerPath.js +26 -0
- package/dist/filesystem/readFileHandleChunks.js +55 -5
- package/dist/filesystem/readStableFileBytes.js +85 -0
- package/dist/firmware/FirmwareCommand.js +13 -7
- package/dist/firmware/FirmwareFailures.js +56 -0
- package/dist/firmware/FirmwareFiles.js +128 -98
- package/dist/firmware/FirmwareProvider.js +120 -65
- package/dist/firmware/FirmwarePublication.js +26 -11
- package/dist/flutter/DartElf.js +27 -0
- package/dist/flutter/FlutterBuildProvider.js +44 -4
- package/dist/gdb/GdbSessionManager.js +202 -14
- package/dist/generatedPackageMetadata.js +1 -1
- package/dist/ghidra/GhidraAnalysisProfile.js +24 -10
- package/dist/ghidra/GhidraAnalysisSeeds.js +39 -55
- package/dist/ghidra/GhidraBridgeSources.js +12 -0
- package/dist/ghidra/GhidraClient.js +362 -148
- package/dist/ghidra/GhidraClientStartup.js +5 -3
- package/dist/ghidra/GhidraClientWire.js +5 -2
- package/dist/ghidra/GhidraDiagnostics.js +16 -5
- package/dist/ghidra/GhidraDoctor.js +45 -14
- package/dist/ghidra/GhidraDosSnapshot.js +83 -0
- package/dist/ghidra/GhidraExecutableHeader.js +54 -0
- package/dist/ghidra/GhidraFileArtifacts.js +93 -0
- package/dist/ghidra/GhidraFunctionValues.js +1 -0
- package/dist/ghidra/GhidraInstallation.js +143 -142
- package/dist/ghidra/GhidraInstallationPolicy.js +20 -79
- package/dist/ghidra/GhidraInstallationProperties.js +57 -0
- package/dist/ghidra/GhidraInventoryValues.js +22 -6
- package/dist/ghidra/GhidraJavaLaunch.js +11 -4
- package/dist/ghidra/GhidraJavaProbe.js +267 -0
- package/dist/ghidra/GhidraJavaProperties.js +9 -7
- package/dist/ghidra/GhidraLanguageCatalog.js +12 -7
- package/dist/ghidra/GhidraLauncher.js +128 -65
- package/dist/ghidra/GhidraLoadImageAttest.js +75 -78
- package/dist/ghidra/GhidraLoadImageValues.js +39 -29
- package/dist/ghidra/GhidraMipsProfile.js +13 -5
- package/dist/ghidra/GhidraNativeAotSnapshotOwner.js +221 -0
- package/dist/ghidra/GhidraPeProfile.js +88 -18
- package/dist/ghidra/GhidraProvider.js +219 -32
- package/dist/ghidra/GhidraProviderCapabilities.js +17 -4
- package/dist/ghidra/GhidraProviderClient.js +199 -239
- package/dist/ghidra/GhidraPspExtension.js +104 -34
- package/dist/ghidra/GhidraPspProfile.js +4 -1
- package/dist/ghidra/GhidraRawBinaryLanguage.js +13 -4
- package/dist/ghidra/GhidraReleasePolicy.js +93 -0
- package/dist/ghidra/GhidraRequestQueue.js +64 -40
- package/dist/ghidra/GhidraSessionError.js +152 -19
- package/dist/ghidra/GhidraSessionValues.js +13 -3
- package/dist/ghidra/GhidraSocketConnection.js +25 -11
- package/dist/ghidra/GhidraTargetSnapshot.js +67 -50
- package/dist/ghidra/GhidraTransport.js +86 -63
- package/dist/ghidra/extensions/GhidraExtensions.js +30 -45
- package/dist/go/GoBinaryProvider.js +89 -60
- package/dist/go/GoElfImage.js +3 -3
- package/dist/hopper/BridgeLauncher.js +43 -4
- package/dist/hopper/HopperAnalysisProfile.js +4 -2
- package/dist/hopper/HopperCleanup.js +14 -1
- package/dist/hopper/HopperClient.js +135 -63
- package/dist/hopper/HopperProvider.js +4 -7
- package/dist/hopper/HopperProviderCapabilities.js +2 -1
- package/dist/hopper/HopperRegexSearch.js +21 -60
- package/dist/ida/IdaBusyHealth.js +36 -2
- package/dist/ida/IdaMcpConnection.js +17 -11
- package/dist/ida/IdaNativeProtocol.js +1 -9
- package/dist/ida/IdaOperationRunner.js +8 -26
- package/dist/ida/IdaProtocolValues.js +2 -1
- package/dist/ida/IdaProvider.js +18 -2
- package/dist/ida/IdaSessionClient.js +54 -12
- package/dist/inspector/V8InspectorCaptureProjection.js +7 -0
- package/dist/inspector/V8InspectorProvider.js +2 -0
- package/dist/javascript/analysis/JavaScriptAnalysisTransfer.js +25 -4
- package/dist/javascript/analysis/JavaScriptAnalysisWorker.js +4 -3
- package/dist/javascript/analysis/JavaScriptAnalysisWorkerProtocol.js +3 -2
- package/dist/javascript/analysis/JavaScriptAnalysisWorkerSchemas.js +7 -1
- package/dist/javascript/analysis/JavaScriptAnalysisWorkerServer.js +1 -1
- package/dist/javascript/recovery/RecoveryFiles.js +57 -8
- package/dist/jeb/JebMcpConnection.js +129 -70
- package/dist/jeb/JebMcpConnectionOwner.js +116 -0
- package/dist/jeb/JebMcpDeadline.js +46 -0
- package/dist/jeb/JebProvider.js +77 -51
- package/dist/kuna/KunaAddress.js +11 -0
- package/dist/kuna/KunaCommand.js +217 -0
- package/dist/kuna/KunaConfiguration.js +90 -0
- package/dist/kuna/KunaDoctor.js +198 -0
- package/dist/kuna/KunaInstallation.js +137 -0
- package/dist/kuna/KunaJson.js +23 -0
- package/dist/kuna/KunaJsonStream.js +433 -0
- package/dist/kuna/KunaLimits.js +5 -0
- package/dist/kuna/KunaProjectCache.js +804 -0
- package/dist/kuna/KunaProjectExport.js +202 -0
- package/dist/kuna/KunaProjectFiles.js +191 -0
- package/dist/kuna/KunaProjectReader.js +115 -0
- package/dist/kuna/KunaProvider.js +217 -0
- package/dist/kuna/KunaProviderCapabilities.js +102 -0
- package/dist/kuna/KunaQueryErrors.js +12 -0
- package/dist/kuna/KunaQueryWork.js +113 -0
- package/dist/kuna/KunaReferenceFiles.js +258 -0
- package/dist/kuna/KunaReferenceQueries.js +211 -0
- package/dist/kuna/KunaRelease.js +10 -0
- package/dist/kuna/KunaRunSlots.js +56 -0
- package/dist/kuna/KunaSessionClient.js +1162 -0
- package/dist/kuna/KunaStringInventory.js +145 -0
- package/dist/kuna/KunaStringQueries.js +133 -0
- package/dist/kuna/KunaTargetCommands.js +205 -0
- package/dist/kuna/KunaUnavailable.js +11 -0
- package/dist/main/processShutdown.js +17 -0
- package/dist/main/transport.js +21 -1
- package/dist/main.js +2 -12
- package/dist/mcp/AnalysisProvider-BABWbLoM.js +38 -0
- package/dist/mcp/{AnalysisSnapshotFiles-BAbiJQOc.js → AnalysisSnapshotFiles-BXz0c37-.js} +39 -28
- package/dist/mcp/{ProcessOwnership-Bl_3ejLe.js → ArtifactFileOperation-64cQKI7B.js} +274 -72
- package/dist/mcp/{ArtifactProvider-DViCU_rn.js → ArtifactProvider-Dx6pmil1.js} +371 -354
- package/dist/mcp/ArtifactProviderMetadata-UCJr2oZW.js +167 -0
- package/dist/mcp/{ArtifactReader-OyM03Gjn.js → ArtifactReader-BrnwNaKY.js} +29 -6
- package/dist/mcp/ArtifactResourceScope-zi3Dkqzy.js +175 -0
- package/dist/mcp/{AsarHeader-WsPgoooH.js → AsarHeader-B_IbppTz.js} +1 -1
- package/dist/mcp/{BinarySessionStatus-B4P9gf-S.js → BinarySessionStatus-CZ9nnXMt.js} +5 -4
- package/dist/mcp/{BinaryTargetResolver-BMaE_0H1.js → BinaryTargetResolver-BUncASDP.js} +146 -215
- package/dist/mcp/BoundedFileBytes-DYt5q9G2.js +43 -0
- package/dist/mcp/{CdpCaptureDocuments-HDiF2O7k.js → CdpCaptureDocuments-Y2uFcBpl.js} +194 -145
- package/dist/mcp/{CdpCaptureValues-M-j6CIh1.js → CdpCaptureValues-tNIg-gQK.js} +12 -5
- package/dist/mcp/{CdpConnection-BpDfz4MK.js → CdpEndpoint-BrhMhpSi.js} +352 -281
- package/dist/mcp/{CdpOptionalCommand-BPjRD9Kz.js → CdpOptionalCommand-PZZhlqxv.js} +2 -2
- package/dist/mcp/CdpTargetSession-BmmDC3XO.js +290 -0
- package/dist/mcp/{DirectAnalysis-DrafbXke.js → DirectAnalysis-B9KuCHTG.js} +29 -21
- package/dist/mcp/{DirectAnalysisStatus-CjjeDLzW.js → DirectAnalysisStatus-BgzopkIt.js} +7 -7
- package/dist/mcp/{ElectronFileScope-BPG_YoyU.js → ElectronFileScope-FXtK0d6I.js} +1 -1
- package/dist/mcp/ElectronFuseFailures-uZ_wOV6T.js +610 -0
- package/dist/mcp/MachoLoadCommandReader-C2VGgHA3.js +330 -0
- package/dist/mcp/{ManagedStaticProvider-BthZbKyZ.js → ManagedStaticProvider-CZuoPme2.js} +429 -131
- package/dist/mcp/{NativeMacOSProvider-Bh79k8dI.js → NativeMacOSProvider-CMguKrvN.js} +1376 -748
- package/dist/mcp/{NativeMacOSProviderMetadata-N1lPOaY_.js → NativeMacOSProviderMetadata-B_RH4KXF.js} +97 -7
- package/dist/mcp/{ProviderDeadline-DskQ94YD.js → OwnedCommand-BW1jBSt9.js} +436 -127
- package/dist/mcp/ProcedureAddressResolution-H6Qwpb_Y.js +59 -0
- package/dist/mcp/{WorkflowEvidence-umWrB_wm.js → WorkflowEvidence-CO4C7ALz.js} +16 -9
- package/dist/mcp/analysisErrorCleanup-Q344SnTO.js +34 -0
- package/dist/mcp/analysisErrorCore-BIEP7tvF.js +509 -0
- package/dist/mcp/{analysisErrorProjection-BN0EPM-3.js → analysisErrorProjection-B8teQwwD.js} +80 -30
- package/dist/mcp/{artifactToolContracts-Di4qZlEt.js → artifactToolContracts-C9dRDo-D.js} +6 -4
- package/dist/mcp/{browserObservation-C0s4i8UI.js → browserObservation-DUraZs62.js} +272 -107
- package/dist/mcp/{browserObservationError-CyLugqX4.js → browserObservationError-C5okJ5el.js} +27 -4
- package/dist/mcp/{browserObservationSchemas-tgqjH7aA.js → browserObservationSchemas-DwGGxBpu.js} +3 -3
- package/dist/mcp/{browserScenario-CAQ8Fns9.js → browserScenario-BRUz7yN0.js} +844 -358
- package/dist/mcp/{browserScenarioCapture-CTNFN-FI.js → browserScenarioCapture-CiMAsMx8.js} +127 -11
- package/dist/mcp/{InterfaceBuilderDecodeBudget-5F2AkxJT.js → callerPath-CpPnMZyN.js} +91 -65
- package/dist/mcp/{electronActiveObservation-lDvQTMR0.js → electronActiveObservation-DV0Ffy9X.js} +1 -0
- package/dist/mcp/electronFuses-D5SS7XXw.js +367 -0
- package/dist/mcp/{electronObservation-i7LcILQ-.js → electronObservation-DsN-NqY1.js} +134 -75
- package/dist/mcp/{electronObservation-DFOFEood.js → electronObservation-wOYWwqgF.js} +3 -3
- package/dist/mcp/{electronScenario-nCzE6IfJ.js → electronScenario-CYrt2zBK.js} +395 -135
- package/dist/mcp/{emptyArraySchema-tL6Qymyd.js → emptyArraySchema-C0o2Sxwp.js} +2 -2
- package/dist/mcp/{enhancedInputs-DgdEnzHy.js → enhancedInputs-6CCgB3VB.js} +1 -1
- package/dist/mcp/{javascriptRuntimeObservation-61NhCf7H.js → javascriptRuntimeObservation-BVbhkO2-.js} +12 -9
- package/dist/mcp/{javascriptRuntimeObservation-PIUoLfX6.js → javascriptRuntimeObservation-Cu0Yedqq.js} +2 -2
- package/dist/mcp/{lipo-Bnkoq_6W.js → lipo-DSTgUqL1.js} +11 -118
- package/dist/mcp/{logger-BQY5ulYv.js → logger-BGdGHadX.js} +2 -2
- package/dist/mcp/machoContainer-CMSxUBlK.js +605 -0
- package/dist/mcp/{main-kBXHZ8S5.js → main-Cx-Z7m_n.js} +16788 -5902
- package/dist/mcp/main.js +1 -1
- package/dist/mcp/{managedToolContracts-CK--I_s7.js → managedToolContracts-CSlbKJP-.js} +3 -3
- package/dist/mcp/{nativeValueTrace-DR9UE62L.js → nativeValueTrace-BEZbDieM.js} +2630 -2468
- package/dist/mcp/{officialToolContracts-B67NJ2tC.js → officialToolContracts-CauCcSsc.js} +74 -55
- package/dist/mcp/peMachine-aP1iYnHq.js +95 -0
- package/dist/mcp/propertyListKeys-BfCo0k4w.js +356 -0
- package/dist/mcp/providerCleanupError-DIRHxzWo.js +125 -0
- package/dist/mcp/{providerOperationHealth-CTYa3iLf.js → providerOperationHealth-9DRSGM8N.js} +24 -1
- package/dist/mcp/{scanCanonical-CRXSpule.js → scanCanonical-CF3ATd1V.js} +269 -463
- package/dist/mcp/{serverIdentity-Cio4iFV3.js → serverIdentity-BK0Ejd_Y.js} +262 -83
- package/dist/mcp/{sourceMapEnvelope-C0uJlrOh.js → sourceMapEnvelope-DAaRUIGj.js} +4 -4
- package/dist/mcp/{toolContracts-BW05wpcr.js → toolContracts-BPoHQdlC.js} +541 -327
- package/dist/mcp/{toolOutputSchemaGroups-ColvNZ1r.js → toolOutputSchemaGroups-MJ_f-PMK.js} +2551 -2354
- package/dist/mcp/{webContentArtifact-Dzjc1z-R.js → webContentArtifact-DfGkgDcI.js} +2 -17
- package/dist/mcp/{webRuntime-K__NYzXm.js → webRuntime-ccyhkRru.js} +2 -2
- package/dist/mcp/{webSourceLocation-DbMAT2J9.js → webSourceLocation-DKIum0vJ.js} +6451 -4414
- package/dist/mcpDoctor.js +4 -2
- package/dist/mcpStartupPolicy.js +18 -3
- package/dist/native/AppleDispatchMetadata.js +76 -27
- package/dist/native/AppleMachoFixups.js +20 -10
- package/dist/native/AppleObjcCategories.js +12 -1
- package/dist/native/AppleObjcDispatchFacets.js +21 -12
- package/dist/native/AppleObjcProperties.js +61 -17
- package/dist/native/AppleObjcProtocols.js +25 -7
- package/dist/native/AppleSwiftVtables.js +2 -0
- package/dist/native/CommandRunner.js +13 -9
- package/dist/native/LldbCallTracer.js +232 -178
- package/dist/native/LldbReadbackFiles.js +70 -0
- package/dist/native/LldbRetainedObservations.js +28 -56
- package/dist/native/NativeCallObservation.js +53 -52
- package/dist/native/NativeCallTarget.js +95 -0
- package/dist/native/NativeMacOSProvider.js +240 -171
- package/dist/native/NativeMachoInspection.js +21 -7
- package/dist/native/NativePlistSource.js +179 -0
- package/dist/native/NativeUiCleanupError.js +30 -0
- package/dist/native/NativeUiHelperRuntime.js +48 -35
- package/dist/native/NativeUiObservation.js +67 -45
- package/dist/native/SignatureTargetBinding.js +72 -53
- package/dist/native/parsers/demangle.js +16 -12
- package/dist/native/parsers/machoUuid.js +4 -4
- package/dist/native/parsers/otool.js +57 -17
- package/dist/native/parsers/plist.js +40 -25
- package/dist/native/pe/PeResourceLayout.js +22 -7
- package/dist/native/pe/PeResourceParser.js +10 -9
- package/dist/native/pe/PeResourcesProvider.js +63 -16
- package/dist/native/pwndbg/CoreFileMappingAuthority.js +51 -0
- package/dist/native/pwndbg/PwndbgCoreContext.js +26 -15
- package/dist/native/pwntools/PwntoolsDecoder.js +116 -53
- package/dist/native/pwntools/PwntoolsFailures.js +17 -3
- package/dist/native/pwntools/PwntoolsRecordedCrashProvider.js +11 -1
- package/dist/objdump/ObjdumpCommand.js +5 -2
- package/dist/pcap/PcapOutput.js +38 -2
- package/dist/pcap/PcapProvider.js +45 -15
- package/dist/pcap/PcapSnapshot.js +24 -4
- package/dist/process/ArtifactAnalysisResources.js +145 -52
- package/dist/process/BoundedFileBytes.js +8 -3
- package/dist/process/CurrentEntrypointPath.js +3 -1
- package/dist/process/DarwinProcessRunTokenReader.js +174 -63
- package/dist/process/DetachedPgpSignature.js +57 -0
- package/dist/process/ExecFileOutput.js +14 -11
- package/dist/{hopper/HopperTargetLease.js → process/HopperLease.js} +10 -0
- package/dist/process/LinuxResourceLimits.js +4 -24
- package/dist/process/OwnedCommand.js +109 -14
- package/dist/process/ProviderProcess.js +129 -10
- package/dist/process/RegexMatcher.js +96 -0
- package/dist/process/SharedStartupAttempt.js +59 -0
- package/dist/process/WindowsAuthority.js +1 -1
- package/dist/process/capture/FilesystemSnapshot.js +3 -2
- package/dist/process/capture/ProcessCaptureError.js +55 -17
- package/dist/process/capture/ProcessCaptureLifecycle.js +17 -20
- package/dist/process/capture/ProcessCaptureProgress.js +5 -3
- package/dist/process/capture/ProcessHarness.js +17 -3
- package/dist/process/snapshotEnvironment.js +8 -8
- package/dist/{application/binary → providers}/AnalysisClientCleanup.js +3 -3
- package/dist/providers/AnalysisClientCreation.js +193 -0
- package/dist/providers/AnalysisClientFailure.js +191 -0
- package/dist/providers/DeferredAnalysisClient.js +48 -0
- package/dist/providers/OwnedCommandCleanup.js +65 -0
- package/dist/providers/ProviderInspectionScope.js +10 -0
- package/dist/recordedCatalogDigests.js +2 -0
- package/dist/reference/ReferenceSourceReader.js +64 -0
- package/dist/reference/ReferenceSourceReaderEntries.js +12 -3
- package/dist/reference/ReferenceSourceReaderFile.js +2 -1
- package/dist/rizin/RizinCommand.js +2 -2
- package/dist/rizin/RizinDebugSessionManager.js +249 -210
- package/dist/rust/RustBinaryProvider.js +55 -23
- package/dist/server/EvidenceMcpServer.js +2 -2
- package/dist/server/contractToolHandler.js +17 -11
- package/dist/server/createServer.js +27 -8
- package/dist/server/promptCompletion.js +24 -22
- package/dist/server/registerArtifactComparisonTool.js +13 -2
- package/dist/server/registerBrowserScenarioTool.js +7 -5
- package/dist/server/registerBrowserTools.js +2 -4
- package/dist/server/registerCutterTools.js +2 -3
- package/dist/server/registerElectronTools.js +2 -13
- package/dist/server/registerFridaTools.js +8 -12
- package/dist/server/registerInvestigationTools.js +20 -20
- package/dist/server/registerJavaScriptRuntimeObservationTools.js +2 -4
- package/dist/server/registerManagedWorkflowTools/evidence.js +14 -7
- package/dist/server/registerProcessComparisonTool.js +3 -0
- package/dist/server/registerSessionStatusTool.js +13 -6
- package/dist/server/registerSessionTools.js +16 -29
- package/dist/server/runDerivedOperation.js +2 -0
- package/dist/signals/SigrokRecordingProvider.js +13 -6
- package/dist/sqlite/SqliteDatabaseFailures.js +25 -12
- package/dist/sqlite/SqliteDatabaseInspection.js +27 -12
- package/dist/sqlite/SqliteDatabaseSnapshot.js +58 -32
- package/dist/sqlite/SqliteDatabaseWorkerExecution.js +18 -3
- package/dist/wasm/WabtArtifactProvider.js +64 -42
- package/dist/wasm/WabtFailures.js +19 -1
- package/dist/wasm/WabtRuntime.js +58 -0
- package/dist/wasm/WasmGlueAdapter.js +20 -7
- package/dist/windows/WindowsNativeLoader.js +16 -2
- package/dist/windows/WindowsPrivateRuntime.js +44 -1
- package/licenses/npm-dependencies.txt +146 -1
- package/licenses/npm-runtime-notices.txt +175 -1
- package/native/windows/README.md +44 -7
- package/native/windows/build/manifest.json +2 -2
- package/native/windows/build/rea-windows-x64.node +0 -0
- package/package.json +11 -3
- package/scripts/electron-active-hook-boundaries.cjs +15 -2
- package/scripts/electron-active-hook.cjs +408 -46
- package/scripts/hopper-demo-x11.py +12 -10
- package/scripts/rea.mjs +62 -15
- package/skills/reverse-engineer-anything/SKILL.md +21 -7
- package/skills/reverse-engineer-anything/references/android-applications.md +3 -1
- package/skills/reverse-engineer-anything/references/javascript-applications.md +44 -1
- package/skills/reverse-engineer-anything/references/native-and-artifacts.md +30 -10
- package/dist/cli-runtime/ArtifactResourceScope-DQWTcUwE.js +0 -114
- package/dist/cli-runtime/ClientConfigPath-c6jr6INc.js +0 -36
- package/dist/cli-runtime/IdaConfiguration-CtGP7EKo.js +0 -1094
- package/dist/cli-runtime/JebMcpEndpoint-DUytrn5G.js +0 -428
- package/dist/cli-runtime/MacHopperPaths-CwL5lYPX.js +0 -434
- package/dist/cli-runtime/OwnedCommand-Cj9GhmPR.js +0 -112
- package/dist/cli-runtime/RegularFile-B_6KPCNQ.js +0 -139
- package/dist/cli-runtime/RegularFileRead-DVlC5faM.js +0 -125
- package/dist/cli-runtime/analysisErrorPresentation-DGt7TdsH.js +0 -497
- package/dist/cli-runtime/application__javascript__ElectronObservationService-DEsR8KDN.js +0 -63
- package/dist/cli-runtime/artifactOperationError-B7n03FbD.js +0 -27
- package/dist/cli-runtime/browserObservationError-Dx6xRTjb.js +0 -40
- package/dist/cli-runtime/cliResultOutput-DsRMI8CJ.js +0 -780
- package/dist/cli-runtime/mcpStartupPolicy-CVVSOmRc.js +0 -21
- package/dist/cli-runtime/propertyListKeys-G8e74YWb.js +0 -248
- package/dist/cli-runtime/providerAdapterError-DAjhICdr.js +0 -25
- package/dist/cli-runtime/readFileHandleChunks-dp60iZ6v.js +0 -38
- package/dist/hopper/HopperRegexWorker.js +0 -27
- package/dist/mcp/ArtifactProviderMetadata-b7pOK5_t.js +0 -76
- package/dist/mcp/ArtifactResourceScope-P3tq5z8Z.js +0 -162
- package/dist/mcp/BoundedFileBytes-DuczXiQZ.js +0 -68
- package/dist/mcp/CdpTargetSession-BsPoKhEU.js +0 -86
- package/dist/mcp/ProcedureAddressResolution-CQpuwm1h.js +0 -19
- package/dist/mcp/analysisErrorCore-DXRTvF_m.js +0 -235
- package/dist/mcp/artifactOperationError-CkHMMaf7.js +0 -27
- package/dist/mcp/digests-BFoWUT_-.js +0 -223
- package/dist/mcp/propertyListKeys-DD25WsjI.js +0 -553
- package/dist/mcp/providerAdapterError-sDxToNal.js +0 -25
- package/dist/mcp/unicodeCodePointOrder-BezCbTpg.js +0 -26
|
@@ -3,12 +3,12 @@ import { isUtf8 } from "node:buffer";
|
|
|
3
3
|
import { open, readFile, readlink, realpath, stat } from "node:fs/promises";
|
|
4
4
|
import { constants as fsConstants } from "node:fs";
|
|
5
5
|
import { isatty } from "node:tty";
|
|
6
|
-
import { resolve } from "node:path";
|
|
7
6
|
import { AnalysisCancelledError, AnalysisCapabilityUnavailableError, AnalysisInputError, AnalysisResourceConstraintError, AnalysisTimeoutError, } from "../domain/analysisErrorCore.js";
|
|
8
7
|
import { createEvidence } from "../domain/evidence.js";
|
|
9
8
|
import { err, ok } from "../domain/result.js";
|
|
10
9
|
import { ProviderProcessSupervisor, spawnOwnedProviderProcess, } from "../process/ProviderProcess.js";
|
|
11
10
|
import { closeOwnedDebuggerSessions, stopOwnedDebuggerProcess, verifyOwnedInferiorsEnded, } from "../process/ownedDebuggerSession.js";
|
|
11
|
+
import { absoluteCallerPath } from "../filesystem/callerPath.js";
|
|
12
12
|
const MAX_SESSIONS = 8;
|
|
13
13
|
const MAX_PENDING_COMMANDS = 16;
|
|
14
14
|
const FRAME_TIMEOUT_MS = 120_000;
|
|
@@ -42,6 +42,11 @@ const createRizinCommandEvidence = ({ sessionId, command, result, inferiorTty, l
|
|
|
42
42
|
subjectUnavailableReason: "The current debugger target identity is not established by the Rizin session identifier.",
|
|
43
43
|
limitations: [
|
|
44
44
|
...limitations,
|
|
45
|
+
...(result.completion_status === "unknown"
|
|
46
|
+
? [
|
|
47
|
+
"Interrupted output may include an incomplete completion-marker prefix; it is retained because it cannot be distinguished from command diagnostics.",
|
|
48
|
+
]
|
|
49
|
+
: []),
|
|
45
50
|
...(result.output_invalid_utf8
|
|
46
51
|
? [
|
|
47
52
|
"Collected command frames contained invalid UTF-8 bytes; decoded text may contain replacement characters.",
|
|
@@ -50,17 +55,7 @@ const createRizinCommandEvidence = ({ sessionId, command, result, inferiorTty, l
|
|
|
50
55
|
RIZIN_LAUNCH_PROVENANCE_LIMITATION,
|
|
51
56
|
],
|
|
52
57
|
});
|
|
53
|
-
export class RizinCommandTimeoutError extends Error {
|
|
54
|
-
partialOutput;
|
|
55
|
-
outputInvalidUtf8;
|
|
56
|
-
constructor(partialOutput, outputInvalidUtf8 = false) {
|
|
57
|
-
super("Timed out waiting for Rizin's command-completion marker");
|
|
58
|
-
this.partialOutput = partialOutput;
|
|
59
|
-
this.outputInvalidUtf8 = outputInvalidUtf8;
|
|
60
|
-
}
|
|
61
|
-
}
|
|
62
58
|
export const isRizinCommandDeadlineExpired = (remainingMs) => remainingMs <= 0;
|
|
63
|
-
export const createRizinCommandTimeoutError = (partialFrames, outputInvalidUtf8 = false) => new RizinCommandTimeoutError(partialFrames.join("\n"), outputInvalidUtf8);
|
|
64
59
|
export const createRizinCommandTimeoutEvidence = ({ sessionId, command, result, inferiorTty, cleanupFailure, launchProvenance, }) => createRizinCommandEvidence({
|
|
65
60
|
sessionId,
|
|
66
61
|
command,
|
|
@@ -85,28 +80,8 @@ export const createRizinCommandTimeoutEvidence = ({ sessionId, command, result,
|
|
|
85
80
|
],
|
|
86
81
|
});
|
|
87
82
|
class RizinProcessExitError extends Error {
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
constructor(partialOutput, outputInvalidUtf8 = false) {
|
|
91
|
-
super("Rizin process exited before completing the active command");
|
|
92
|
-
this.partialOutput = partialOutput;
|
|
93
|
-
this.outputInvalidUtf8 = outputInvalidUtf8;
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
class RizinCommandCancelledError extends AnalysisCancelledError {
|
|
97
|
-
partialOutput;
|
|
98
|
-
outputInvalidUtf8;
|
|
99
|
-
constructor(partialOutput, outputInvalidUtf8, cause) {
|
|
100
|
-
super("rizin_debug_command", {
|
|
101
|
-
cause,
|
|
102
|
-
capturedOutput: {
|
|
103
|
-
stdout: partialOutput,
|
|
104
|
-
stderr: "",
|
|
105
|
-
truncated: false,
|
|
106
|
-
},
|
|
107
|
-
});
|
|
108
|
-
this.partialOutput = partialOutput;
|
|
109
|
-
this.outputInvalidUtf8 = outputInvalidUtf8;
|
|
83
|
+
constructor(message = "Rizin exited before completing the active command") {
|
|
84
|
+
super(message);
|
|
110
85
|
}
|
|
111
86
|
}
|
|
112
87
|
class RizinFrameTimeoutError extends Error {
|
|
@@ -199,7 +174,7 @@ export class RizinDebugSessionManager {
|
|
|
199
174
|
if (signal?.aborted)
|
|
200
175
|
return err(new AnalysisCancelledError("start_rizin_debug_session"));
|
|
201
176
|
const id = randomUUID();
|
|
202
|
-
const resolvedPath =
|
|
177
|
+
const resolvedPath = absoluteCallerPath(input.path);
|
|
203
178
|
const launchProvenance = {
|
|
204
179
|
caller_selected_path: input.path,
|
|
205
180
|
resolved_path: resolvedPath,
|
|
@@ -279,6 +254,7 @@ export class RizinDebugSessionManager {
|
|
|
279
254
|
commandTail: Promise.resolve(),
|
|
280
255
|
protocolError: undefined,
|
|
281
256
|
commandCaptureActive: false,
|
|
257
|
+
commandOutputDropped: false,
|
|
282
258
|
discardingOversizedFrame: false,
|
|
283
259
|
};
|
|
284
260
|
this.#sessions.set(id, session);
|
|
@@ -292,7 +268,7 @@ export class RizinDebugSessionManager {
|
|
|
292
268
|
launched.process.once("exit", () => {
|
|
293
269
|
session.exited = true;
|
|
294
270
|
for (const waiter of session.frameWaiters)
|
|
295
|
-
waiter.reject(new RizinProcessExitError(
|
|
271
|
+
waiter.reject(new RizinProcessExitError());
|
|
296
272
|
session.frameWaiters.length = 0;
|
|
297
273
|
});
|
|
298
274
|
try {
|
|
@@ -352,6 +328,19 @@ export class RizinDebugSessionManager {
|
|
|
352
328
|
let release;
|
|
353
329
|
let acquired = false;
|
|
354
330
|
let commandSent = false;
|
|
331
|
+
let commandCapture;
|
|
332
|
+
let interruption;
|
|
333
|
+
const commandResult = (capture, completion) => ({
|
|
334
|
+
command,
|
|
335
|
+
output: capture.output,
|
|
336
|
+
output_scope: "command_and_interleaved_session_output",
|
|
337
|
+
output_truncated: capture.outputTruncated,
|
|
338
|
+
completion_status: completion,
|
|
339
|
+
backend: session.backend,
|
|
340
|
+
...(capture.outputInvalidUtf8
|
|
341
|
+
? { output_invalid_utf8: true }
|
|
342
|
+
: {}),
|
|
343
|
+
});
|
|
355
344
|
const previous = session.commandTail;
|
|
356
345
|
session.commandTail = new Promise((resolve) => {
|
|
357
346
|
release = resolve;
|
|
@@ -367,10 +356,12 @@ export class RizinDebugSessionManager {
|
|
|
367
356
|
this.#closingAll ||
|
|
368
357
|
session.protocolError !== undefined)
|
|
369
358
|
return err(new AnalysisInputError("rizin_debug_command"));
|
|
370
|
-
if (session
|
|
359
|
+
if (hasUnclaimedRizinFrames(session)) {
|
|
371
360
|
const message = "Unsolicited Rizin frames arrived before a command; command output can no longer be safely correlated.";
|
|
372
361
|
this.#failProtocol(session, message);
|
|
373
|
-
return err(await this.#stopAfterProtocolFailure(session, undefined,
|
|
362
|
+
return err(await this.#stopAfterProtocolFailure(session, undefined, {
|
|
363
|
+
commandTurnHeld: true,
|
|
364
|
+
}));
|
|
374
365
|
}
|
|
375
366
|
const marker = `__REA_COMMAND_COMPLETE_${randomUUID().replaceAll("-", "")}__`;
|
|
376
367
|
// Arbitrary debugger commands can create or replace inferiors. Discard
|
|
@@ -378,6 +369,8 @@ export class RizinDebugSessionManager {
|
|
|
378
369
|
session.inferiorInventoryComplete = false;
|
|
379
370
|
session.knownInferiorIdentities.clear();
|
|
380
371
|
commandSent = true;
|
|
372
|
+
session.commandCaptureActive = true;
|
|
373
|
+
session.commandOutputDropped = false;
|
|
381
374
|
const stdin = session.launched.process.stdin;
|
|
382
375
|
if (stdin === null ||
|
|
383
376
|
stdin === undefined ||
|
|
@@ -396,10 +389,13 @@ export class RizinDebugSessionManager {
|
|
|
396
389
|
this.#failProtocol(session, `Rizin stdin write failed: ${cause instanceof Error ? cause.message : "unknown error"}`);
|
|
397
390
|
}
|
|
398
391
|
}
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
392
|
+
const received = await waitForCommandFrames(session, marker, this.#frameTimeoutMs, signal, this.#maxCommandOutputBytes);
|
|
393
|
+
commandCapture = received.ok ? received.value : received.error.capture;
|
|
394
|
+
if (!received.ok) {
|
|
395
|
+
interruption = received.error;
|
|
396
|
+
throw interruption.cause;
|
|
397
|
+
}
|
|
398
|
+
const captured = received.value;
|
|
403
399
|
if (signal?.aborted)
|
|
404
400
|
throw new AnalysisCancelledError("rizin_debug_command");
|
|
405
401
|
let cleanupFailure;
|
|
@@ -409,19 +405,7 @@ export class RizinDebugSessionManager {
|
|
|
409
405
|
if (stopped.status === "incomplete")
|
|
410
406
|
cleanupFailure = stopped.reason;
|
|
411
407
|
}
|
|
412
|
-
const result =
|
|
413
|
-
command,
|
|
414
|
-
output: captured.output,
|
|
415
|
-
output_scope: "command_and_interleaved_session_output",
|
|
416
|
-
output_truncated: captured.outputTruncated,
|
|
417
|
-
completion_status: captured.outputTruncated
|
|
418
|
-
? "unknown"
|
|
419
|
-
: "complete",
|
|
420
|
-
backend: session.backend,
|
|
421
|
-
...(captured.outputInvalidUtf8
|
|
422
|
-
? { output_invalid_utf8: true }
|
|
423
|
-
: {}),
|
|
424
|
-
};
|
|
408
|
+
const result = commandResult(captured, captured.outputTruncated ? "unknown" : "complete");
|
|
425
409
|
const evidence = createRizinCommandEvidence({
|
|
426
410
|
sessionId,
|
|
427
411
|
command,
|
|
@@ -446,38 +430,36 @@ export class RizinDebugSessionManager {
|
|
|
446
430
|
return ok({ result, evidence });
|
|
447
431
|
}
|
|
448
432
|
catch (cause) {
|
|
433
|
+
// Capture is owned by this dispatched command, independently of which
|
|
434
|
+
// cancellation, protocol or cleanup outcome ultimately takes precedence.
|
|
435
|
+
const partialResult = commandCapture === undefined
|
|
436
|
+
? undefined
|
|
437
|
+
: commandResult(commandCapture, "unknown");
|
|
438
|
+
const capturedOutput = commandCapture === undefined
|
|
439
|
+
? undefined
|
|
440
|
+
: {
|
|
441
|
+
stdout: commandCapture.output,
|
|
442
|
+
stderr: "",
|
|
443
|
+
truncated: commandCapture.outputTruncated,
|
|
444
|
+
};
|
|
445
|
+
const partialEvidence = (limitations) => partialResult === undefined
|
|
446
|
+
? undefined
|
|
447
|
+
: createRizinCommandEvidence({
|
|
448
|
+
sessionId,
|
|
449
|
+
command,
|
|
450
|
+
result: partialResult,
|
|
451
|
+
inferiorTty: session.inferiorTty,
|
|
452
|
+
launchProvenance: session.launchProvenance,
|
|
453
|
+
limitations,
|
|
454
|
+
});
|
|
449
455
|
if (signal?.aborted || cause instanceof AnalysisCancelledError) {
|
|
450
456
|
if (!commandSent)
|
|
451
457
|
return err(new AnalysisCancelledError("rizin_debug_command", { cause }));
|
|
452
|
-
const
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
const partialEvidence = partialOutput === undefined
|
|
458
|
-
? undefined
|
|
459
|
-
: createRizinCommandEvidence({
|
|
460
|
-
sessionId,
|
|
461
|
-
command,
|
|
462
|
-
result: {
|
|
463
|
-
command,
|
|
464
|
-
output: partialOutput,
|
|
465
|
-
output_scope: "command_and_interleaved_session_output",
|
|
466
|
-
output_truncated: false,
|
|
467
|
-
completion_status: "unknown",
|
|
468
|
-
backend: session.backend,
|
|
469
|
-
...(commandInvalidUtf8
|
|
470
|
-
? { output_invalid_utf8: true }
|
|
471
|
-
: {}),
|
|
472
|
-
},
|
|
473
|
-
inferiorTty: session.inferiorTty,
|
|
474
|
-
launchProvenance: session.launchProvenance,
|
|
475
|
-
limitations: [
|
|
476
|
-
"The Rizin command was cancelled; collected frame output is partial and command completion is unknown.",
|
|
477
|
-
"The owned debugger session was stopped because command output can no longer be correlated safely.",
|
|
478
|
-
"The command is unrestricted and may access local files, the shell, network, or mutate the target.",
|
|
479
|
-
],
|
|
480
|
-
});
|
|
458
|
+
const evidence = partialEvidence([
|
|
459
|
+
"The Rizin command was cancelled; collected frame output is partial and command completion is unknown.",
|
|
460
|
+
"The owned debugger session was stopped because command output can no longer be correlated safely.",
|
|
461
|
+
"The command is unrestricted and may access local files, the shell, network, or mutate the target.",
|
|
462
|
+
]);
|
|
481
463
|
session.protocolError =
|
|
482
464
|
"A Rizin command was cancelled; the owned session was stopped because command output can no longer be correlated safely.";
|
|
483
465
|
const stopped = await this.#stopDebuggerOnly(session, true);
|
|
@@ -485,40 +467,36 @@ export class RizinDebugSessionManager {
|
|
|
485
467
|
return err(this.#retainCleanupFailure(session, "rizin_debug_command", stopped.reason, {
|
|
486
468
|
cause: new AnalysisCancelledError("rizin_debug_command", {
|
|
487
469
|
cause,
|
|
488
|
-
...(
|
|
489
|
-
? { capturedOutput: cause.capturedOutput }
|
|
490
|
-
: {}),
|
|
470
|
+
...(capturedOutput === undefined ? {} : { capturedOutput }),
|
|
491
471
|
}),
|
|
492
|
-
...(
|
|
472
|
+
...(evidence === undefined
|
|
493
473
|
? {}
|
|
494
|
-
: { partialObservation:
|
|
474
|
+
: { partialObservation: evidence }),
|
|
495
475
|
}));
|
|
496
476
|
return err(new AnalysisCancelledError("rizin_debug_command", {
|
|
497
477
|
cause,
|
|
498
|
-
...(
|
|
499
|
-
|
|
500
|
-
: {}),
|
|
501
|
-
...(partialEvidence === undefined
|
|
502
|
-
? {}
|
|
503
|
-
: { partialObservation: partialEvidence }),
|
|
478
|
+
...(capturedOutput === undefined ? {} : { capturedOutput }),
|
|
479
|
+
...(evidence === undefined ? {} : { partialObservation: evidence }),
|
|
504
480
|
}));
|
|
505
481
|
}
|
|
506
|
-
if (session.protocolError !== undefined)
|
|
507
|
-
|
|
508
|
-
|
|
482
|
+
if (session.protocolError !== undefined) {
|
|
483
|
+
const evidence = partialEvidence([
|
|
484
|
+
session.protocolError,
|
|
485
|
+
"The Rizin protocol failed; retained command output is partial and completion is unknown.",
|
|
486
|
+
"The command is unrestricted and may access local files, the shell, network, or mutate the target.",
|
|
487
|
+
]);
|
|
488
|
+
return err(await this.#stopAfterProtocolFailure(session, cause, {
|
|
489
|
+
commandTurnHeld: true,
|
|
490
|
+
...(evidence === undefined ? {} : { partialObservation: evidence }),
|
|
491
|
+
}));
|
|
492
|
+
}
|
|
493
|
+
if (interruption?.kind === "timeout") {
|
|
509
494
|
session.protocolError =
|
|
510
495
|
"Rizin command timed out before its completion marker; output correlation is no longer safe.";
|
|
511
496
|
const stopped = await this.#stopDebuggerOnly(session, true);
|
|
512
497
|
const result = {
|
|
513
|
-
|
|
514
|
-
output: cause.partialOutput,
|
|
515
|
-
output_scope: "command_and_interleaved_session_output",
|
|
498
|
+
...commandResult(interruption.capture, "unknown"),
|
|
516
499
|
output_truncated: true,
|
|
517
|
-
completion_status: "unknown",
|
|
518
|
-
backend: session.backend,
|
|
519
|
-
...(cause.outputInvalidUtf8
|
|
520
|
-
? { output_invalid_utf8: true }
|
|
521
|
-
: {}),
|
|
522
500
|
};
|
|
523
501
|
const evidence = createRizinCommandTimeoutEvidence({
|
|
524
502
|
sessionId,
|
|
@@ -535,18 +513,8 @@ export class RizinDebugSessionManager {
|
|
|
535
513
|
}));
|
|
536
514
|
return ok({ result, evidence });
|
|
537
515
|
}
|
|
538
|
-
if (
|
|
539
|
-
const result =
|
|
540
|
-
command,
|
|
541
|
-
output: cause.partialOutput,
|
|
542
|
-
output_scope: "command_and_interleaved_session_output",
|
|
543
|
-
output_truncated: false,
|
|
544
|
-
completion_status: "unknown",
|
|
545
|
-
backend: session.backend,
|
|
546
|
-
...(cause.outputInvalidUtf8
|
|
547
|
-
? { output_invalid_utf8: true }
|
|
548
|
-
: {}),
|
|
549
|
-
};
|
|
516
|
+
if (interruption?.kind === "exited") {
|
|
517
|
+
const result = commandResult(interruption.capture, "unknown");
|
|
550
518
|
const evidence = createRizinCommandEvidence({
|
|
551
519
|
sessionId,
|
|
552
520
|
command,
|
|
@@ -565,12 +533,18 @@ export class RizinDebugSessionManager {
|
|
|
565
533
|
}
|
|
566
534
|
session.protocolError =
|
|
567
535
|
"Rizin did not return the current command-completion marker; the session was stopped to prevent late output from being attributed to a later command.";
|
|
536
|
+
const evidence = partialEvidence([
|
|
537
|
+
session.protocolError,
|
|
538
|
+
"The command is unrestricted and may access local files, the shell, network, or mutate the target.",
|
|
539
|
+
]);
|
|
540
|
+
const errorOptions = {
|
|
541
|
+
cause,
|
|
542
|
+
...(evidence === undefined ? {} : { partialObservation: evidence }),
|
|
543
|
+
};
|
|
568
544
|
const stopped = await this.#stopDebuggerOnly(session, true);
|
|
569
545
|
if (stopped.status === "incomplete")
|
|
570
|
-
return err(this.#retainCleanupFailure(session, "rizin_debug_command", stopped.reason,
|
|
571
|
-
return err(new AnalysisTimeoutError("rizin_debug_command", this.#frameTimeoutMs,
|
|
572
|
-
cause,
|
|
573
|
-
}));
|
|
546
|
+
return err(this.#retainCleanupFailure(session, "rizin_debug_command", stopped.reason, errorOptions));
|
|
547
|
+
return err(new AnalysisTimeoutError("rizin_debug_command", this.#frameTimeoutMs, errorOptions));
|
|
574
548
|
}
|
|
575
549
|
finally {
|
|
576
550
|
if (acquired) {
|
|
@@ -652,7 +626,6 @@ export class RizinDebugSessionManager {
|
|
|
652
626
|
if (boundary < 0)
|
|
653
627
|
return;
|
|
654
628
|
session.discardingOversizedFrame = false;
|
|
655
|
-
this.#deliverBufferedFrame(session, true);
|
|
656
629
|
offset = nextOffset;
|
|
657
630
|
continue;
|
|
658
631
|
}
|
|
@@ -671,6 +644,7 @@ export class RizinDebugSessionManager {
|
|
|
671
644
|
}
|
|
672
645
|
if (boundary < 0) {
|
|
673
646
|
session.discardingOversizedFrame = true;
|
|
647
|
+
this.#deliverBufferedFrame(session, true);
|
|
674
648
|
return;
|
|
675
649
|
}
|
|
676
650
|
this.#deliverBufferedFrame(session, true);
|
|
@@ -688,18 +662,14 @@ export class RizinDebugSessionManager {
|
|
|
688
662
|
}
|
|
689
663
|
}
|
|
690
664
|
#deliverBufferedFrame(session, truncated) {
|
|
691
|
-
const
|
|
665
|
+
const captured = bufferedRizinFrame(session, truncated);
|
|
692
666
|
session.frameChunks = [];
|
|
693
667
|
session.bufferedFrameBytes = 0;
|
|
694
|
-
|
|
695
|
-
session.invalidUtf8Observed ||= invalidUtf8;
|
|
696
|
-
this.#deliverFrame(session, { text: frameBytes.toString("utf8"), truncated, invalidUtf8 }, frameBytes.length);
|
|
668
|
+
this.#deliverFrame(session, captured.frame, captured.bytes);
|
|
697
669
|
}
|
|
698
670
|
#startupCapturedOutput(session) {
|
|
699
671
|
const output = session.supervisor.snapshot();
|
|
700
|
-
const partialFrame = session.
|
|
701
|
-
? ""
|
|
702
|
-
: Buffer.concat(session.frameChunks, session.bufferedFrameBytes).toString("utf8");
|
|
672
|
+
const partialFrame = bufferedRizinFrame(session, false).frame.text;
|
|
703
673
|
const protocolOutput = [...session.history, partialFrame]
|
|
704
674
|
.filter((frame) => frame.length > 0)
|
|
705
675
|
.join("\n");
|
|
@@ -738,6 +708,7 @@ export class RizinDebugSessionManager {
|
|
|
738
708
|
const queueChargeBytes = Math.max(frameBytes, MIN_QUEUED_FRAME_CHARGE_BYTES);
|
|
739
709
|
if (session.frames.length >= MAX_QUEUED_FRAMES ||
|
|
740
710
|
session.queuedFrameBytes + queueChargeBytes > MAX_QUEUED_FRAME_BYTES) {
|
|
711
|
+
session.commandOutputDropped ||= session.commandCaptureActive;
|
|
741
712
|
this.#failProtocol(session, "Rizin produced unsolicited frames exceeding the bounded queue limit.");
|
|
742
713
|
return;
|
|
743
714
|
}
|
|
@@ -746,8 +717,10 @@ export class RizinDebugSessionManager {
|
|
|
746
717
|
}
|
|
747
718
|
#failProtocol(session, message) {
|
|
748
719
|
session.protocolError = message;
|
|
749
|
-
session.
|
|
750
|
-
|
|
720
|
+
if (!session.commandCaptureActive) {
|
|
721
|
+
session.frameChunks = [];
|
|
722
|
+
session.bufferedFrameBytes = 0;
|
|
723
|
+
}
|
|
751
724
|
for (const waiter of session.frameWaiters)
|
|
752
725
|
waiter.reject(new Error(message));
|
|
753
726
|
session.frameWaiters.length = 0;
|
|
@@ -843,6 +816,8 @@ export class RizinDebugSessionManager {
|
|
|
843
816
|
}
|
|
844
817
|
}
|
|
845
818
|
async #runInternalCommand(session, command) {
|
|
819
|
+
if (hasUnclaimedRizinFrames(session))
|
|
820
|
+
throw new Error("Unsolicited Rizin output prevents correlated cleanup readback.");
|
|
846
821
|
const marker = `__REA_CLEANUP_COMPLETE_${randomUUID().replaceAll("-", "")}__`;
|
|
847
822
|
const stdin = session.launched.process.stdin;
|
|
848
823
|
if (stdin === null ||
|
|
@@ -852,20 +827,28 @@ export class RizinDebugSessionManager {
|
|
|
852
827
|
throw new Error("Rizin stdin is unavailable during cleanup.");
|
|
853
828
|
stdin.write(`${command}\n!echo ${marker}\n`);
|
|
854
829
|
const captured = await waitForCommandFrames(session, marker, CLEANUP_COMMAND_TIMEOUT_MS, undefined, this.#maxCommandOutputBytes);
|
|
855
|
-
if (captured.
|
|
830
|
+
if (!captured.ok)
|
|
831
|
+
throw captured.error.cause;
|
|
832
|
+
if (captured.value.outputTruncated)
|
|
856
833
|
throw new Error("Rizin cleanup readback was truncated.");
|
|
857
|
-
return captured.output;
|
|
834
|
+
return captured.value.output;
|
|
858
835
|
}
|
|
859
836
|
#retainCleanupFailure(session, operation, reason, options = {}) {
|
|
860
837
|
const failure = new AnalysisCapabilityUnavailableError("rizin", operation, `The owned Rizin process could not be confirmed stopped: ${reason}`, { ...options, cleanup: { reason, resources: [session.id] } });
|
|
861
838
|
session.cleanupFailures.add(failure);
|
|
862
839
|
return failure;
|
|
863
840
|
}
|
|
864
|
-
async #stopAfterProtocolFailure(session, cause,
|
|
865
|
-
const stopped = await this.#stopDebuggerOnly(session, commandTurnHeld);
|
|
841
|
+
async #stopAfterProtocolFailure(session, cause, options = {}) {
|
|
842
|
+
const stopped = await this.#stopDebuggerOnly(session, options.commandTurnHeld);
|
|
843
|
+
const errorOptions = {
|
|
844
|
+
cause,
|
|
845
|
+
...(options.partialObservation === undefined
|
|
846
|
+
? {}
|
|
847
|
+
: { partialObservation: options.partialObservation }),
|
|
848
|
+
};
|
|
866
849
|
return stopped.status === "incomplete"
|
|
867
|
-
? this.#retainCleanupFailure(session, "rizin_debug_command", stopped.reason,
|
|
868
|
-
: new AnalysisCapabilityUnavailableError("rizin", "rizin_debug_command", session.protocolError,
|
|
850
|
+
? this.#retainCleanupFailure(session, "rizin_debug_command", stopped.reason, errorOptions)
|
|
851
|
+
: new AnalysisCapabilityUnavailableError("rizin", "rizin_debug_command", session.protocolError, errorOptions);
|
|
869
852
|
}
|
|
870
853
|
}
|
|
871
854
|
const parseRizinPtraceRows = (output) => {
|
|
@@ -920,100 +903,156 @@ export const assertRizinProcessStartTimeStable = (before, after) => {
|
|
|
920
903
|
throw new Error("The inferior PID disappeared or was reused during detach verification.");
|
|
921
904
|
};
|
|
922
905
|
const readProcStartTime = async (pid) => parseRizinProcStartTime(await readFile(`/proc/${pid}/stat`, "utf8"));
|
|
906
|
+
const hasUnclaimedRizinFrames = (session) => session.frames.length > 0 ||
|
|
907
|
+
session.bufferedFrameBytes > 0 ||
|
|
908
|
+
session.discardingOversizedFrame;
|
|
909
|
+
/** Parse the receiver's bounded bytes once for normal, startup and interrupted reads. */
|
|
910
|
+
const bufferedRizinFrame = (session, truncated) => {
|
|
911
|
+
const bytes = Buffer.concat(session.frameChunks, session.bufferedFrameBytes);
|
|
912
|
+
const invalidUtf8 = !isUtf8(bytes);
|
|
913
|
+
session.invalidUtf8Observed ||= invalidUtf8;
|
|
914
|
+
return {
|
|
915
|
+
bytes: bytes.length,
|
|
916
|
+
frame: { text: bytes.toString("utf8"), truncated, invalidUtf8 },
|
|
917
|
+
};
|
|
918
|
+
};
|
|
923
919
|
const waitForCommandFrames = async (session, marker, timeoutMs, signal, maxCommandOutputBytes = MAX_COMMAND_OUTPUT_BYTES) => {
|
|
924
920
|
const deadline = Date.now() + timeoutMs;
|
|
925
921
|
const output = [];
|
|
926
|
-
let outputInvalidUtf8 = false;
|
|
927
|
-
const commandTimeoutError = () => createRizinCommandTimeoutError(output, outputInvalidUtf8);
|
|
928
922
|
let outputBytes = 0;
|
|
923
|
+
let outputInvalidUtf8 = false;
|
|
924
|
+
let outputTruncated = false;
|
|
929
925
|
let frameCount = 0;
|
|
926
|
+
const snapshot = () => ({
|
|
927
|
+
output: output.join("\n"),
|
|
928
|
+
outputTruncated: outputTruncated || session.commandOutputDropped,
|
|
929
|
+
outputInvalidUtf8,
|
|
930
|
+
});
|
|
931
|
+
const append = (frame) => {
|
|
932
|
+
outputInvalidUtf8 ||= frame.invalidUtf8;
|
|
933
|
+
outputTruncated ||= frame.truncated;
|
|
934
|
+
const markerIndex = frame.text.indexOf(marker);
|
|
935
|
+
const text = markerIndex < 0 ? frame.text : frame.text.slice(0, markerIndex);
|
|
936
|
+
if (markerIndex >= 0 && text.length === 0)
|
|
937
|
+
return true;
|
|
938
|
+
const separatorBytes = output.length > 0 ? 1 : 0;
|
|
939
|
+
const remaining = maxCommandOutputBytes - outputBytes - separatorBytes;
|
|
940
|
+
const bytes = Buffer.byteLength(text, "utf8");
|
|
941
|
+
if (bytes > remaining) {
|
|
942
|
+
outputTruncated = true;
|
|
943
|
+
const retained = truncateUtf8(text, remaining);
|
|
944
|
+
if (retained.length > 0)
|
|
945
|
+
output.push(retained);
|
|
946
|
+
outputBytes = maxCommandOutputBytes;
|
|
947
|
+
}
|
|
948
|
+
else {
|
|
949
|
+
output.push(text);
|
|
950
|
+
outputBytes += separatorBytes + bytes;
|
|
951
|
+
}
|
|
952
|
+
return markerIndex >= 0;
|
|
953
|
+
};
|
|
954
|
+
// After dispatch, queued complete frames and the unfinished frame belong to
|
|
955
|
+
// this command interval. Never publish the private completion marker or bytes
|
|
956
|
+
// following it, and apply the same decoded UTF-8 budget as normal frames.
|
|
957
|
+
const interrupted = () => {
|
|
958
|
+
let markerSeen = false;
|
|
959
|
+
for (;;) {
|
|
960
|
+
const queued = session.frames.shift();
|
|
961
|
+
if (queued === undefined)
|
|
962
|
+
break;
|
|
963
|
+
session.queuedFrameBytes -= queued.queueChargeBytes;
|
|
964
|
+
frameCount += 1;
|
|
965
|
+
if (frameCount > MAX_COMMAND_FRAMES) {
|
|
966
|
+
outputTruncated = true;
|
|
967
|
+
break;
|
|
968
|
+
}
|
|
969
|
+
markerSeen = append(queued.frame);
|
|
970
|
+
if (markerSeen || outputTruncated)
|
|
971
|
+
break;
|
|
972
|
+
}
|
|
973
|
+
if (!markerSeen && !outputTruncated && session.bufferedFrameBytes > 0)
|
|
974
|
+
append(bufferedRizinFrame(session, session.discardingOversizedFrame).frame);
|
|
975
|
+
else if (session.bufferedFrameBytes > 0 && !markerSeen)
|
|
976
|
+
outputTruncated = true;
|
|
977
|
+
session.frameChunks = [];
|
|
978
|
+
session.bufferedFrameBytes = 0;
|
|
979
|
+
return snapshot();
|
|
980
|
+
};
|
|
930
981
|
for (;;) {
|
|
982
|
+
if (session.protocolError !== undefined) {
|
|
983
|
+
const capture = interrupted();
|
|
984
|
+
// Capacity failures already have a bounded partial-result contract.
|
|
985
|
+
// Truncation still forces debugger cleanup before that result is returned.
|
|
986
|
+
if (session.commandOutputDropped)
|
|
987
|
+
return ok(capture);
|
|
988
|
+
return err({
|
|
989
|
+
kind: "failed",
|
|
990
|
+
cause: new Error(session.protocolError),
|
|
991
|
+
capture,
|
|
992
|
+
});
|
|
993
|
+
}
|
|
931
994
|
const remaining = deadline - Date.now();
|
|
932
995
|
if (isRizinCommandDeadlineExpired(remaining))
|
|
933
|
-
|
|
996
|
+
return err({
|
|
997
|
+
kind: "timeout",
|
|
998
|
+
cause: new RizinFrameTimeoutError(),
|
|
999
|
+
capture: interrupted(),
|
|
1000
|
+
});
|
|
934
1001
|
let received;
|
|
935
1002
|
try {
|
|
936
|
-
received = await waitForFrame(session, remaining, signal
|
|
1003
|
+
received = await waitForFrame(session, remaining, signal);
|
|
937
1004
|
}
|
|
938
1005
|
catch (cause) {
|
|
939
|
-
|
|
940
|
-
|
|
941
|
-
|
|
942
|
-
|
|
943
|
-
|
|
1006
|
+
let drained = true;
|
|
1007
|
+
if (cause instanceof RizinProcessExitError) {
|
|
1008
|
+
// `exit` observes the leader, not its pipe lifetime. Keep the bounded
|
|
1009
|
+
// receiver active until the supervisor observes output closure, using
|
|
1010
|
+
// the same settlement interval as owned-debugger cleanup.
|
|
1011
|
+
drained = await session.supervisor.waitForOutputClose(CLEANUP_COMMAND_TIMEOUT_MS);
|
|
1012
|
+
}
|
|
1013
|
+
const captured = interrupted();
|
|
1014
|
+
return err({
|
|
1015
|
+
kind: cause instanceof AnalysisCancelledError
|
|
1016
|
+
? "cancelled"
|
|
1017
|
+
: cause instanceof RizinProcessExitError
|
|
1018
|
+
? "exited"
|
|
1019
|
+
: cause instanceof RizinFrameTimeoutError
|
|
1020
|
+
? "timeout"
|
|
1021
|
+
: "failed",
|
|
1022
|
+
cause,
|
|
1023
|
+
capture: {
|
|
1024
|
+
...captured,
|
|
1025
|
+
outputTruncated: captured.outputTruncated || !drained,
|
|
1026
|
+
},
|
|
1027
|
+
});
|
|
944
1028
|
}
|
|
945
|
-
outputInvalidUtf8 ||= received.invalidUtf8;
|
|
946
1029
|
frameCount += 1;
|
|
947
1030
|
if (frameCount > MAX_COMMAND_FRAMES) {
|
|
948
|
-
|
|
949
|
-
|
|
950
|
-
|
|
951
|
-
|
|
952
|
-
outputTruncated: true,
|
|
953
|
-
outputInvalidUtf8,
|
|
954
|
-
};
|
|
955
|
-
}
|
|
956
|
-
if (received.truncated) {
|
|
957
|
-
const separatorBytes = output.length > 0 ? 1 : 0;
|
|
958
|
-
output.push(truncateUtf8(received.text, maxCommandOutputBytes - outputBytes - separatorBytes));
|
|
959
|
-
return {
|
|
960
|
-
output: output.join("\n"),
|
|
961
|
-
outputTruncated: true,
|
|
962
|
-
outputInvalidUtf8,
|
|
963
|
-
};
|
|
964
|
-
}
|
|
965
|
-
const frame = received.text;
|
|
966
|
-
const markerIndex = frame.indexOf(marker);
|
|
967
|
-
if (markerIndex >= 0) {
|
|
968
|
-
const beforeMarker = frame.slice(0, markerIndex).trimEnd();
|
|
969
|
-
if (beforeMarker.length > 0) {
|
|
970
|
-
const beforeMarkerBytes = Buffer.byteLength(beforeMarker, "utf8");
|
|
971
|
-
const separatorBytes = output.length > 0 ? 1 : 0;
|
|
972
|
-
if (outputBytes + separatorBytes + beforeMarkerBytes >
|
|
973
|
-
maxCommandOutputBytes) {
|
|
974
|
-
const message = "Rizin command output exceeded the 16 MiB command limit.";
|
|
975
|
-
session.protocolError = message;
|
|
976
|
-
const retained = truncateUtf8(beforeMarker, maxCommandOutputBytes - outputBytes - separatorBytes);
|
|
977
|
-
if (retained.length > 0)
|
|
978
|
-
output.push(retained);
|
|
979
|
-
return {
|
|
980
|
-
output: output.join("\n"),
|
|
981
|
-
outputTruncated: true,
|
|
982
|
-
outputInvalidUtf8,
|
|
983
|
-
};
|
|
984
|
-
}
|
|
985
|
-
outputBytes += separatorBytes + beforeMarkerBytes;
|
|
986
|
-
output.push(beforeMarker);
|
|
987
|
-
}
|
|
988
|
-
return {
|
|
989
|
-
output: output.join("\n"),
|
|
990
|
-
outputTruncated: false,
|
|
991
|
-
outputInvalidUtf8,
|
|
992
|
-
};
|
|
1031
|
+
session.protocolError =
|
|
1032
|
+
"Rizin emitted more than 4096 frames for one command; the session was stopped because output correlation is ambiguous.";
|
|
1033
|
+
outputTruncated = true;
|
|
1034
|
+
return ok(snapshot());
|
|
993
1035
|
}
|
|
994
|
-
const
|
|
995
|
-
|
|
996
|
-
|
|
997
|
-
|
|
998
|
-
|
|
999
|
-
output.push(truncateUtf8(frame, maxCommandOutputBytes - outputBytes - separatorBytes));
|
|
1000
|
-
return {
|
|
1001
|
-
output: output.join("\n"),
|
|
1002
|
-
outputTruncated: true,
|
|
1003
|
-
outputInvalidUtf8,
|
|
1004
|
-
};
|
|
1036
|
+
const markerSeen = append(received);
|
|
1037
|
+
if (outputTruncated) {
|
|
1038
|
+
session.protocolError ??=
|
|
1039
|
+
"Rizin command output exceeded the 16 MiB command limit.";
|
|
1040
|
+
return ok(snapshot());
|
|
1005
1041
|
}
|
|
1006
|
-
|
|
1007
|
-
|
|
1042
|
+
if (markerSeen)
|
|
1043
|
+
return ok(snapshot());
|
|
1008
1044
|
}
|
|
1009
1045
|
};
|
|
1010
1046
|
const truncateUtf8 = (value, maximumBytes) => {
|
|
1011
1047
|
if (maximumBytes <= 0)
|
|
1012
1048
|
return "";
|
|
1013
|
-
const bytes = Buffer.from(value, "utf8")
|
|
1014
|
-
|
|
1049
|
+
const bytes = Buffer.from(value, "utf8");
|
|
1050
|
+
let end = Math.min(bytes.length, maximumBytes);
|
|
1051
|
+
while (end > 0 && end < bytes.length && (bytes[end] & 0xc0) === 0x80)
|
|
1052
|
+
end -= 1;
|
|
1053
|
+
return bytes.subarray(0, end).toString("utf8");
|
|
1015
1054
|
};
|
|
1016
|
-
const waitForFrame = (session, timeoutMs, signal
|
|
1055
|
+
const waitForFrame = (session, timeoutMs, signal) => {
|
|
1017
1056
|
if (signal?.aborted)
|
|
1018
1057
|
return Promise.reject(new AnalysisCancelledError("rizin_debug_command"));
|
|
1019
1058
|
const queued = session.frames.shift();
|
|
@@ -1022,7 +1061,7 @@ const waitForFrame = (session, timeoutMs, signal, timeoutError) => {
|
|
|
1022
1061
|
return Promise.resolve(queued.frame);
|
|
1023
1062
|
}
|
|
1024
1063
|
if (session.exited)
|
|
1025
|
-
return Promise.reject(new RizinProcessExitError(
|
|
1064
|
+
return Promise.reject(new RizinProcessExitError());
|
|
1026
1065
|
return new Promise((resolve, reject) => {
|
|
1027
1066
|
// Settlement removes all three trigger paths before resolving or rejecting.
|
|
1028
1067
|
const cleanup = () => {
|
|
@@ -1038,7 +1077,7 @@ const waitForFrame = (session, timeoutMs, signal, timeoutError) => {
|
|
|
1038
1077
|
};
|
|
1039
1078
|
const timer = setTimeout(() => {
|
|
1040
1079
|
cleanup();
|
|
1041
|
-
reject(
|
|
1080
|
+
reject(new RizinFrameTimeoutError());
|
|
1042
1081
|
}, timeoutMs);
|
|
1043
1082
|
const waiter = {
|
|
1044
1083
|
resolve: (frame) => {
|