rea-agents 6.5.0 → 6.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +12 -3
- package/THIRD_PARTY_NOTICES.md +1 -0
- package/bridge/android/ReaJadxBridge.java +167 -23
- package/bridge/cutter/rea_bridge.py +19 -10
- package/bridge/ghidra/ReaGhidraBridge.java +98 -66
- package/bridge/hopper_bridge.py +9 -1
- package/bridge/native/rea_lldb_tracer.py +48 -4
- package/bridge/pwndbg/core_context.py +15 -2
- package/dist/adb/AdbCommand.js +148 -0
- package/dist/adb/AdbConfiguration.js +26 -4
- package/dist/adb/AdbInputSnapshot.js +126 -0
- package/dist/adb/AdbProvider.js +765 -248
- package/dist/adb/AdbShellOutput.js +92 -21
- package/dist/android/AndroidTargetSnapshot.js +7 -7
- package/dist/android/JadxAnalysis.js +27 -32
- package/dist/android/JadxConfiguration.js +173 -125
- package/dist/android/JadxDoctor.js +11 -3
- package/dist/android/JadxFailure.js +154 -0
- package/dist/android/JadxInterruption.js +13 -0
- package/dist/android/JadxJavaProbe.js +246 -0
- package/dist/android/JadxMcpTransport.js +48 -15
- package/dist/android/JadxProtocol.js +29 -2
- package/dist/android/JadxProvider.js +171 -96
- package/dist/android/JadxRelease.js +5 -1
- package/dist/android/JadxSession.js +35 -14
- package/dist/apktool/ApktoolCommandCleanup.js +134 -0
- package/dist/apktool/ApktoolCommandOutput.js +22 -0
- package/dist/apktool/ApktoolConfiguration.js +162 -44
- package/dist/apktool/ApktoolDecodeOutput.js +29 -23
- package/dist/apktool/ApktoolDecodedInventory.js +52 -0
- package/dist/apktool/ApktoolProvider.js +254 -335
- package/dist/apktool/ApktoolStringTables.js +178 -0
- package/dist/apktool/ApktoolWorkspace.js +162 -0
- package/dist/application/AnalysisDocument.js +19 -4
- package/dist/application/AnalysisProvider.js +15 -1
- package/dist/application/AppBundleExecutable.js +11 -4
- package/dist/application/BinaryTargetResolver.js +9 -2
- package/dist/application/BrowserObservationService.js +54 -20
- package/dist/application/BrowserScenarioCaptureService.js +26 -6
- package/dist/application/CapabilityInventory.js +14 -8
- package/dist/application/ClaudeDesktopConfigLocation.js +5 -5
- package/dist/application/ClientConfigurationCleanup.js +73 -0
- package/dist/application/ClientConfigurationDocument.js +170 -128
- package/dist/application/ClientConfigurationPublication.js +167 -0
- package/dist/application/ClientRegistrationEnvironment.js +31 -1
- package/dist/application/ClientRegistrationIdentity.js +54 -39
- package/dist/application/ClientRegistrationStatus.js +123 -48
- package/dist/application/DirectAnalysis.js +15 -2
- package/dist/application/DirectAnalysisCleanup.js +5 -1
- package/dist/application/DirectAnalysisStatus.js +1 -1
- package/dist/application/Doctor.js +83 -9
- package/dist/application/DoctorDiagnostics.js +25 -4
- package/dist/application/DoctorProviderIds.js +7 -1
- package/dist/application/DshCordisPatch.js +1 -1
- package/dist/application/EnhancedTools.js +9 -21
- package/dist/application/HermesClientHome.js +20 -0
- package/dist/application/HermesConfigurationYaml.js +43 -3
- package/dist/application/HopperDownload.js +11 -3
- package/dist/application/HopperReleaseFeed.js +71 -0
- package/dist/application/InvestigationProviders.js +4 -3
- package/dist/application/JsonFiles.js +1 -1
- package/dist/application/LinuxHopper.js +96 -71
- package/dist/application/LinuxHopperPublisher.js +656 -0
- package/dist/application/MacHopper.js +182 -66
- package/dist/application/MipsElfMetadata.js +1 -1
- package/dist/application/MsixPackageStorage.js +13 -6
- package/dist/application/ProviderOperationExecution.js +13 -20
- package/dist/application/ReconstructionObligationCandidates.js +17 -2
- package/dist/application/ReconstructionObligationLedgerEvaluation.js +4 -0
- package/dist/application/ReconstructionObligationLedgerService.js +5 -3
- package/dist/application/ReconstructionObligationOriginalCases.js +8 -0
- package/dist/application/ReferenceSourceImportEntries.js +160 -18
- package/dist/application/ReferenceSourceImportPolicy.js +5 -3
- package/dist/application/ReferenceSourceVcsAdapter.js +3 -1
- package/dist/application/RegularFileRead.js +107 -88
- package/dist/application/Setup.js +23 -11
- package/dist/application/SetupClientConfiguration.js +155 -89
- package/dist/application/SetupClients.js +22 -13
- package/dist/application/SetupHost.js +90 -34
- package/dist/application/SetupInstallFailure.js +18 -3
- package/dist/application/SetupPlan.js +15 -5
- package/dist/application/SetupRecoveryBackup.js +40 -13
- package/dist/application/SetupRegistrationEnvironment.js +12 -0
- package/dist/application/SetupSkill.js +10 -30
- package/dist/application/SourceLimitations.js +35 -0
- package/dist/application/SupportedClients.js +4 -4
- package/dist/application/Uninstall.js +91 -36
- package/dist/application/UpdateCommandProgress.js +66 -0
- package/dist/application/UpdateMaintenance.js +7 -2
- package/dist/application/UpdateRuntime.js +60 -30
- package/dist/application/WebModuleTraceService.js +35 -22
- package/dist/application/WebNetworkCaptureService.js +8 -5
- package/dist/application/WebRuntimeService.js +41 -8
- package/dist/application/WebScriptExportService.js +6 -4
- package/dist/application/WebSourceLocationService.js +3 -4
- package/dist/application/WorkflowEvidence.js +11 -4
- package/dist/application/analysisView/AnalysisViewService.js +9 -52
- package/dist/application/android/AndroidAnalysisService.js +5 -4
- package/dist/application/android/AndroidSearchEvidenceSummary.js +6 -8
- package/dist/application/artifacts/ArtifactComparisonEvidence.js +32 -0
- package/dist/application/binary/AnalysisProviderEvaluation.js +14 -11
- package/dist/application/binary/AnalysisProviderRegistry.js +340 -50
- package/dist/application/binary/BinarySession.js +73 -34
- package/dist/application/binary/BinarySessionRecords.js +3 -0
- package/dist/application/binary/BinarySessionStatus.js +3 -4
- package/dist/application/binary/CompositeProvider.js +75 -30
- package/dist/application/binary/LazyAnalysisProvider.js +6 -68
- package/dist/application/binary/SessionProviderRouter.js +11 -2
- package/dist/application/binaryDiagnostics/BinaryLayoutService.js +3 -4
- package/dist/application/binaryDiagnostics/PeResourcesService.js +22 -5
- package/dist/application/binaryDiagnostics/RecordedCrashService.js +3 -4
- package/dist/application/captures/PacketCaptureService.js +3 -2
- package/dist/application/closeOwnedWebResources.js +32 -2
- package/dist/application/electron/ElectronFuseService.js +8 -43
- package/dist/application/evm/EvmInterfaceEvidence.js +11 -0
- package/dist/application/evm/EvmInterfaceService.js +4 -15
- package/dist/application/firmware/FirmwareAnalysisService.js +4 -3
- package/dist/application/go/GoBinaryService.js +4 -5
- package/dist/application/investigation/EvidenceLedger.js +3 -4
- package/dist/application/javascript/ElectronBoundaryGraphWindows.js +14 -2
- package/dist/application/javascript/ElectronEvidence.js +1 -2
- package/dist/application/javascript/ElectronObservationService.js +41 -7
- package/dist/application/javascript/JavaScriptApplicationEvidence.js +6 -0
- package/dist/application/javascript/JavaScriptArtifactAnalysis.js +35 -17
- package/dist/application/javascript/JavaScriptArtifactAnalysisTypes.js +30 -1
- package/dist/application/javascript/JavaScriptArtifactGraphContext.js +3 -2
- package/dist/application/javascript/JavaScriptArtifactGraphEvidence.js +3 -3
- package/dist/application/javascript/JavaScriptArtifactGraphFindings.js +41 -11
- package/dist/application/javascript/JavaScriptArtifactGraphStructure.js +18 -8
- package/dist/application/javascript/JavaScriptArtifactPathResolution.js +84 -24
- package/dist/application/javascript/JavaScriptArtifactReconstruction.js +15 -3
- package/dist/application/javascript/JavaScriptModuleRelationships.js +1 -1
- package/dist/application/javascript/JavaScriptRuntimeObservationEvidence.js +1 -2
- package/dist/application/javascript/JavaScriptRuntimeObservationService.js +33 -10
- package/dist/application/javascript/JavaScriptSemanticGraphAsyncProjection.js +4 -5
- package/dist/application/javascript/JavaScriptSemanticGraphBuilder.js +103 -24
- package/dist/application/javascript/JavaScriptSemanticGraphChildProcessProjection.js +13 -4
- package/dist/application/javascript/JavaScriptSemanticGraphConstruction.js +23 -3
- package/dist/application/javascript/JavaScriptSemanticGraphDataProjection.js +18 -5
- package/dist/application/javascript/JavaScriptSemanticGraphFlowProjection.js +4 -6
- package/dist/application/javascript/JavaScriptSemanticGraphObjectProjection.js +2 -3
- package/dist/application/javascript/JavaScriptSemanticGraphResourceProjection.js +2 -3
- package/dist/application/javascript/JavaScriptSemanticGraphValueProjection.js +5 -8
- package/dist/application/native/NativeCallRoutes.js +40 -23
- package/dist/application/native/NativeUiActionTrace.js +8 -0
- package/dist/application/native/NativeValueTrace.js +8 -0
- package/dist/application/reverse/ReverseEngineeringService.js +2 -2
- package/dist/application/rust/RustBinaryService.js +6 -4
- package/dist/application/signals/SignalRecordingService.js +3 -2
- package/dist/application/wasm/WasmArtifactService.js +4 -5
- package/dist/artifacts/AnalysisCleanupLease.js +119 -0
- package/dist/artifacts/ArtifactFileOperation.js +150 -0
- package/dist/artifacts/ArtifactHash.js +2 -1
- package/dist/artifacts/ArtifactProvider.js +16 -5
- package/dist/artifacts/ArtifactReader.js +50 -4
- package/dist/artifacts/ArtifactResourceScope.js +80 -6
- package/dist/artifacts/AsarArtifactReader.js +12 -11
- package/dist/artifacts/AsarEntryStream.js +49 -17
- package/dist/artifacts/DirectoryArtifactReader.js +28 -7
- package/dist/artifacts/MachOSliceArtifactReader.js +70 -13
- package/dist/artifacts/NativeDmgArtifactReader.js +112 -13
- package/dist/artifacts/SafeOutputTree.js +5 -3
- package/dist/artifacts/SafeOutputTreeCreationFailure.js +1 -0
- package/dist/artifacts/SafeOutputTreeReadback.js +10 -16
- package/dist/artifacts/ZipArtifactReader.js +34 -14
- package/dist/artifacts/apple/AppleAssetCatalogAnalysis.js +3 -1
- package/dist/artifacts/apple/DylibFileAccess.js +106 -0
- package/dist/artifacts/apple/DylibResolutionReader.js +64 -155
- package/dist/artifacts/apple/InterfaceBuilderAnalysis.js +52 -9
- package/dist/artifacts/apple/InterfaceBuilderDecodeBudget.js +25 -24
- package/dist/artifacts/apple/KeyedArchiveReader.js +20 -11
- package/dist/artifacts/apple/MachoLoadCommandReader.js +17 -2
- package/dist/artifacts/apple/PlistNumberLiterals.js +104 -116
- package/dist/artifacts/extraction/ArtifactExtraction.js +15 -12
- package/dist/artifacts/inventory/ArtifactGraphConstruction.js +9 -11
- package/dist/artifacts/inventory/ArtifactInventory.js +2 -2
- package/dist/artifacts/inventory/classify.js +4 -2
- package/dist/artifacts/inventory/hashStableRootArtifact.js +14 -7
- package/dist/artifacts/inventory/scanCanonical.js +3 -4
- package/dist/artifacts/javascript/JavaScriptArtifactFiles.js +3 -1
- package/dist/artifacts/readArtifactFileChunks.js +9 -0
- package/dist/artifacts/readStableArtifact.js +12 -34
- package/dist/browser/BrowserScenarioPartialObservation.js +14 -48
- package/dist/browser/CdpBrowserProvider.js +81 -30
- package/dist/browser/CdpCaptureDocuments.js +99 -131
- package/dist/browser/CdpCaptureDomSvg.js +31 -60
- package/dist/browser/CdpCaptureValues.js +12 -0
- package/dist/browser/CdpConnection.js +133 -27
- package/dist/browser/CdpElectronInspection.js +60 -60
- package/dist/browser/CdpElectronProvider.js +56 -4
- package/dist/browser/CdpElectronScriptEvents.js +4 -1
- package/dist/browser/CdpElectronScripts.js +2 -5
- package/dist/browser/CdpElectronWorkers.js +13 -2
- package/dist/browser/CdpPageCapture.js +2 -1
- package/dist/browser/CdpPageCaptureScripts.js +14 -10
- package/dist/browser/CdpPageCaptureWorkers.js +45 -14
- package/dist/browser/CdpSafeMetadata.js +23 -19
- package/dist/browser/CdpSnapshotNodes.js +103 -0
- package/dist/browser/CdpSnapshotStrings.js +0 -6
- package/dist/browser/CdpTargetSession.js +52 -10
- package/dist/browser/CdpTargetSessionOwner.js +198 -0
- package/dist/browser/ElectronCaptureCleanup.js +82 -0
- package/dist/browser/ElectronProcessCleanup.js +91 -0
- package/dist/browser/PlaywrightBrowserScenarioProvider.js +71 -16
- package/dist/browser/PlaywrightElectronActiveActions.js +53 -5
- package/dist/browser/PlaywrightElectronActiveFuses.js +86 -0
- package/dist/browser/PlaywrightElectronActiveProjection.js +5 -0
- package/dist/browser/PlaywrightElectronActiveProvider.js +140 -151
- package/dist/browser/PlaywrightExecutionBoundary.js +4 -2
- package/dist/browser/PlaywrightScenarioBrowser.js +236 -90
- package/dist/browser/PlaywrightScenarioEvents.js +135 -48
- package/dist/browser/PlaywrightScenarioServiceWorkers.js +121 -34
- package/dist/browser/PlaywrightScenarioSession.js +95 -22
- package/dist/browser/PlaywrightScenarioStorage.js +15 -7
- package/dist/browser/StructuredFieldToken.js +53 -0
- package/dist/browser/WebArtifactCleanup.js +53 -0
- package/dist/browser/WebSourceMapFetcher.js +19 -10
- package/dist/browser/assets/WebArtifactReads.js +6 -2
- package/dist/browser/assets/WebSourceLocationArtifacts.js +12 -3
- package/dist/browser/execution/CdpRuntimeSession.js +36 -7
- package/dist/browser/execution/CdpWebRuntimeProvider.js +22 -4
- package/dist/browser/history/CaptureFailures.js +7 -2
- package/dist/browser/history/HarCapture.js +42 -11
- package/dist/browser/history/SazMetadata.js +10 -47
- package/dist/browser/modules/NativeModuleResolver.js +108 -58
- package/dist/browser/modules/WebModuleArtifacts.js +12 -3
- package/dist/browser/network/PlaywrightNetworkContent.js +40 -17
- package/dist/browser/network/PlaywrightScenarioNetwork.js +182 -73
- package/dist/captures/TsharkCaptureProvider.js +13 -6
- package/dist/catalogIdentity.js +19 -14
- package/dist/cli/adbCommands.js +18 -19
- package/dist/cli/androidCommands.js +2 -14
- package/dist/cli/apktoolCommands.js +4 -14
- package/dist/cli/binaryDiagnosticsCommands.js +5 -5
- package/dist/cli/browserAdvancedCommands.js +11 -4
- package/dist/cli/browserCommands.js +21 -12
- package/dist/cli/captureCommands.js +4 -4
- package/dist/cli/cliResultOutput.js +175 -89
- package/dist/cli/coreBinaryCommands.js +4 -3
- package/dist/cli/cutterCommands.js +51 -13
- package/dist/cli/electronCommands.js +34 -13
- package/dist/cli/evmCommands.js +6 -15
- package/dist/cli/finishAnalysisCommand.js +10 -2
- package/dist/cli/firmwareCommands.js +6 -14
- package/dist/cli/flutterCommands.js +2 -18
- package/dist/cli/fridaCommands.js +8 -0
- package/dist/cli/goCommands.js +2 -2
- package/dist/cli/javascriptRecoveryCommands.js +14 -26
- package/dist/cli/jebCommands.js +2 -14
- package/dist/cli/options.js +6 -0
- package/dist/cli/pcapCommands.js +2 -20
- package/dist/cli/rustCommands.js +6 -7
- package/dist/cli/setupCommands.js +4 -3
- package/dist/cli/signalCommands.js +4 -4
- package/dist/cli/sqliteCommands.js +17 -44
- package/dist/cli/wasmCommands.js +7 -18
- package/dist/cli/webModuleCommands.js +19 -34
- package/dist/cli/webNetworkCaptureCommands.js +3 -2
- package/dist/cli/webRuntimeCommands.js +15 -6
- package/dist/cli/webSourceLocationCommands.js +14 -33
- package/dist/cli-runtime/AnalysisCleanupLease-CWfTGYKd.js +103 -0
- package/dist/cli-runtime/{AnalysisProvider-D0Us2OTk.js → AnalysisProvider-BGrYaMVo.js} +14 -3
- package/dist/cli-runtime/{AnalysisSnapshotCache-BXS0wRd2.js → AnalysisSnapshotCache-BjRlXeUS.js} +14 -13
- package/dist/cli-runtime/ArtifactFileOperation-Dg4BcoEM.js +122 -0
- package/dist/cli-runtime/{ArtifactReader-BXkffc1D.js → ArtifactReader-DMwm42bk.js} +29 -6
- package/dist/cli-runtime/ArtifactResourceScope-CokZGcII.js +175 -0
- package/dist/cli-runtime/{AsarHeader-CnzOzYEH.js → AsarHeader-BxwU17DJ.js} +1 -1
- package/dist/cli-runtime/{BinarySessionStatus-DnMxMk-r.js → BinarySessionStatus-DRhjr7Vb.js} +4 -3
- package/dist/cli-runtime/{BinaryTargetResolver-CVIJ_s1A.js → BinaryTargetResolver-tuCTjBlQ.js} +38 -108
- package/dist/cli-runtime/{BoundedFileBytes-BU30odTm.js → BoundedFileBytes-DRtiQNAQ.js} +7 -3
- package/dist/cli-runtime/{CdpTargetSession-DGX5pV9w.js → CdpTargetSession-CQ08KHbh.js} +318 -43
- package/dist/cli-runtime/ClientConfigPath-Dn-V_GUf.js +255 -0
- package/dist/cli-runtime/{ClientConfigurationDocument-ffQ9X0Se.js → ClientConfigurationDocument-C9T8MNGc.js} +206 -142
- package/dist/cli-runtime/{ClientRegistrationStatus-DszCyPEU.js → ClientRegistrationStatus-PnD29RTX.js} +112 -36
- package/dist/cli-runtime/{CurrentEntrypointPath-D5FRNdkq.js → CurrentEntrypointPath-m7QCIVN0.js} +1 -1
- package/dist/cli-runtime/{DirectAnalysis-BgvAtpN3.js → DirectAnalysis-C5NyUryV.js} +76 -23
- package/dist/cli-runtime/DirectoryArtifactReader-CokAJ8vo.js +448 -0
- package/dist/cli-runtime/{Doctor-DIpf_I7N.js → Doctor-DrkWsav4.js} +105 -25
- package/dist/cli-runtime/{ElectronFileScope-dpHm2nrS.js → ElectronFileScope-AP7VoVr7.js} +204 -149
- package/dist/cli-runtime/ElectronFuseFailures-DsjXR7Xp.js +609 -0
- package/dist/cli-runtime/{ExecFileOutput-BEQs-lDD.js → ExecFileOutput-D6KLYTve.js} +11 -9
- package/dist/cli-runtime/{InterfaceBuilderDecodeBudget-D4omRUe4.js → InterfaceBuilderDecodeBudget-CW1IO3dG.js} +40 -21
- package/dist/cli-runtime/{InventoryProjectionEvidence-DIsI4DJ6.js → InventoryProjectionEvidence-DTH5QAqL.js} +3 -3
- package/dist/cli-runtime/{InvestigationProviders-DoQRIHii.js → InvestigationProviders-CFh4a64d.js} +3 -2
- package/dist/cli-runtime/{JavaScriptApplicationEvidenceGraph-D5aI_FSJ.js → JavaScriptApplicationEvidenceGraph-gOmPB2L6.js} +6 -6
- package/dist/cli-runtime/{JavaScriptApplicationWorkflowEvidence-Bz4-V0Ct.js → JavaScriptApplicationWorkflowEvidence-WZgtK_Ok.js} +2 -2
- package/dist/cli-runtime/JebMcpEndpoint-BEalGZh9.js +710 -0
- package/dist/cli-runtime/{JsonFiles-DQa1PRKy.js → JsonFiles-uvd6ZyQi.js} +10 -118
- package/dist/cli-runtime/KunaInstallation-P0j3x851.js +1781 -0
- package/dist/cli-runtime/MacHopperPaths-bGzqjF1Z.js +34 -0
- package/dist/cli-runtime/{MachoLoadCommandReader-C7e074Ze.js → MachoLoadCommandReader-CZm6N5vF.js} +12 -192
- package/dist/cli-runtime/{ManagedSnapshot-rqyBHcdL.js → ManagedSnapshot-CPE9C3OD.js} +406 -110
- package/dist/cli-runtime/OwnedCommandCleanup-BN_V6Erc.js +187 -0
- package/dist/cli-runtime/OwnedRegularFile-D1f5nUCx.js +256 -0
- package/dist/cli-runtime/OwnedStagedOutput-D31dOozz.js +126 -0
- package/dist/cli-runtime/{PrivateRuntimeRoot-DAy0PiBM.js → PrivateRuntimeRoot-Cd23u6jd.js} +39 -6
- package/dist/cli-runtime/ProcessOwnership-CtrNr6ee.js +545 -0
- package/dist/cli-runtime/{ProcessOwnership-DXC5-UWt.js → ProcessOwnershipObservation-C006iCtZ.js} +149 -607
- package/dist/cli-runtime/{ProviderDeadline-8m2pFRDc.js → ProviderDeadline-rSuH4Pm8.js} +27 -1
- package/dist/cli-runtime/ProviderOperationExecution-CmU-XrQr.js +38 -0
- package/dist/cli-runtime/{snapshotEnvironment-D_tWyOub.js → ProviderProcess-D87A7ctp.js} +117 -160
- package/dist/cli-runtime/RegularFileRead-mbgGYtxe.js +125 -0
- package/dist/cli-runtime/{SafeOutputTree-D6U15GXd.js → SafeOutputTree-i904hd_2.js} +21 -20
- package/dist/cli-runtime/{SetupHost-FkYWswsq.js → SetupHost-CMPmPraB.js} +365 -195
- package/dist/cli-runtime/SharedStartupAttempt-BxKyf3Uv.js +1424 -0
- package/dist/cli-runtime/StableFileHash-Ame_h3lY.js +61 -0
- package/dist/cli-runtime/{SupportedClients-DaX6Lt2d.js → SupportedClients-DMafjitv.js} +89 -72
- package/dist/cli-runtime/{Update-CbTC_eg1.js → Update-DAsASWlE.js} +1 -1
- package/dist/cli-runtime/{AbortablePromise-BVBemxbD.js → WindowsBatchCommand-Cx9kaVNf.js} +2 -28
- package/dist/cli-runtime/WindowsNativeLoader-BqyZO0ZD.js +142 -0
- package/dist/cli-runtime/{ZipArtifactReader-B8ZgNe4D.js → ZipArtifactReader-Jed69LEL.js} +20 -16
- package/dist/cli-runtime/{analysisErrorCleanup-Do6YeeoD.js → analysisErrorCleanup-COdAmDsb.js} +4 -3
- package/dist/cli-runtime/{appleArchiveFormat-tVoI2ykA.js → appleArchiveFormat-Bb3G5CCI.js} +13 -7
- package/dist/cli-runtime/{application__DirectAnalysisStatus-DpOejOf0.js → application__DirectAnalysisStatus-F74bu9oy.js} +10 -10
- package/dist/cli-runtime/{application__EnhancedTools-oFE2bOjs.js → application__EnhancedTools-Bg51b0Yp.js} +84 -51
- package/dist/cli-runtime/{application__FunctionAnalysisEvidence-B6osuhvW.js → application__FunctionAnalysisEvidence-DBWIaYCh.js} +3 -3
- package/dist/cli-runtime/{application__ReconstructionCoverageService-DN3wTFQj.js → application__ReconstructionCoverageService-AEPNpZqJ.js} +3 -3
- package/dist/cli-runtime/{application__ReconstructionObligationLedgerService-CKcTppX9.js → application__ReconstructionObligationLedgerService-Cl9cPEZf.js} +22 -9
- package/dist/cli-runtime/{application__Setup-XpMaRNjy.js → application__Setup-DwQzEewK.js} +30 -18
- package/dist/cli-runtime/{application__Uninstall-_23pU2yB.js → application__Uninstall-BOf9oyvQ.js} +78 -37
- package/dist/cli-runtime/{application__UpdateRuntime-DPvY8ohd.js → application__UpdateRuntime-CzWkRJHa.js} +119 -29
- package/dist/cli-runtime/{application__android__AndroidApplicationService-CFgIFPM4.js → application__android__AndroidApplicationService-shW_aKlj.js} +3 -3
- package/dist/cli-runtime/{application__apple__AppleApplicationService-Db6QCsun.js → application__apple__AppleApplicationService-DIv6d3wB.js} +3 -3
- package/dist/cli-runtime/{application__harmony__HarmonyApplicationService-CFjocHoK.js → application__harmony__HarmonyApplicationService-OIUFVQFV.js} +3 -3
- package/dist/cli-runtime/{application__javascript__ElectronActiveObservationService-CmVDUI_Z.js → application__javascript__ElectronActiveObservationService-wvCh72hK.js} +3 -3
- package/dist/cli-runtime/application__javascript__ElectronObservationService-SydXPCwM.js +88 -0
- package/dist/cli-runtime/{application__javascript__JavaScriptApplicationService-CCkp8KBh.js → application__javascript__JavaScriptApplicationService-o0uEsjEc.js} +1120 -316
- package/dist/cli-runtime/{application__javascript__JavaScriptApplicationWorkflowService-lPy0tzr3.js → application__javascript__JavaScriptApplicationWorkflowService-BAheG_71.js} +51 -44
- package/dist/cli-runtime/{application__javascript__JavaScriptRuntimeReconciliationService-DWleA8K9.js → application__javascript__JavaScriptRuntimeReconciliationService-Cnn4GP8q.js} +5 -5
- package/dist/cli-runtime/{application__javascript__JavaScriptSemanticTraceService-DkALH4rL.js → application__javascript__JavaScriptSemanticTraceService-CmvLfV1A.js} +6 -6
- package/dist/cli-runtime/{artifacts__ArtifactProvider-zXI0QjSL.js → artifacts__ArtifactProvider-wx2K0F2I.js} +377 -359
- package/dist/cli-runtime/{binary-BVOr2mgE.js → binary-CWVNJhAC.js} +8561 -3159
- package/dist/cli-runtime/{catalogIdentity-DLoXgfIR.js → catalogIdentity-DAEEsOdX.js} +260 -81
- package/dist/cli-runtime/cli.js +6177 -3556
- package/dist/cli-runtime/{cliOutput-BC1BdAcB.js → cliOutput-CgSuw782.js} +47 -6
- package/dist/cli-runtime/cliOutput.js +2 -2
- package/dist/cli-runtime/cliResultOutput-10sd6xGx.js +1453 -0
- package/dist/cli-runtime/cliResultOutput.js +2 -1
- package/dist/cli-runtime/{composition__browserScenario-DHXC1a8n.js → composition__browserScenario-BtPb1c1y.js} +843 -356
- package/dist/cli-runtime/{composition__electronObservation-GecK2EID.js → composition__electronObservation-Bk8R6DJo.js} +128 -69
- package/dist/cli-runtime/{composition__electronScenario-CEZnVrAL.js → composition__electronScenario-BVF0qStH.js} +398 -135
- package/dist/cli-runtime/{cutterToolContracts-TZH9EHr5.js → cutterToolContracts-BQtG_Nzo.js} +195 -62
- package/dist/cli-runtime/{doctorRuntime-BE5ZX8it.js → doctorRuntime-B__SIpm-.js} +241 -21
- package/dist/cli-runtime/{dotnet__ManagedStaticProvider-C8_yZCDc.js → dotnet__ManagedStaticProvider-DO5Yzcp4.js} +1 -1
- package/dist/cli-runtime/{errorSchemas-CTRmvMl3.js → errorSchemas-Ixz_q7qt.js} +58 -4
- package/dist/cli-runtime/homeDirectory-DC_DeJIg.js +18 -0
- package/dist/cli-runtime/{javascriptApplicationAnalysis-HgMzVMQw.js → javascriptApplicationAnalysis-Dk6yBV8g.js} +688 -668
- package/dist/cli-runtime/{javascriptExportReturnShapeProjection-Dg00g35t.js → javascriptExportReturnShapeProjection-CObOIiQ6.js} +3 -3
- package/dist/cli-runtime/{javascriptExportShapeComparisonSchemas-BYnoIqIk.js → javascriptExportShapeComparisonSchemas-DpwuBenh.js} +5 -3
- package/dist/cli-runtime/{javascriptRuntimeReconciliation-DNjDoL3S.js → javascriptRuntimeReconciliation-C6ZgWMys.js} +61 -59
- package/dist/cli-runtime/{javascriptRuntimeReconciliationSchemas-BWpGWNcI.js → javascriptRuntimeReconciliationSchemas-D6tZKUQs.js} +2 -2
- package/dist/cli-runtime/{javascriptSemanticTraceSchemas-BTCNcvbc.js → javascriptSemanticTraceSchemas-C7m0b6_w.js} +3 -3
- package/dist/cli-runtime/{lipo-DSWP6fv-.js → lipo-DPQ6qurH.js} +9 -11
- package/dist/cli-runtime/{logger-CQQCI4a2.js → logger-BuDJ9xxO.js} +2 -2
- package/dist/cli-runtime/{machoContainer-C8BIkkq3.js → machoContainer-Cy98bkFm.js} +180 -0
- package/dist/cli-runtime/{managedApplicationGraph-B08jb3jq.js → managedApplicationGraph-BazVqpJv.js} +16 -10
- package/dist/cli-runtime/{managedToolContracts-D60QmIYj.js → managedToolContracts-BuFkMBH5.js} +2 -2
- package/dist/cli-runtime/mcpDoctor.js +8 -6
- package/dist/cli-runtime/mcpStartupPolicy-imCbM3qo.js +28 -0
- package/dist/cli-runtime/{native__NativeMacOSProvider-YBTvUeJO.js → native__NativeMacOSProvider-DTcRhuGA.js} +1384 -757
- package/dist/cli-runtime/{officialToolContracts-CCFF0an9.js → officialToolContracts-CzzVLx8I.js} +74 -53
- package/dist/cli-runtime/peMachine-B9ggfSJJ.js +95 -0
- package/dist/cli-runtime/propertyListKeys-D5dSASEy.js +355 -0
- package/dist/cli-runtime/{providerCleanupError-Ceq8f0wK.js → providerCleanupError-BhsJyAhk.js} +3 -5
- package/dist/cli-runtime/readArtifactFileChunks-BbTL_PtB.js +129 -0
- package/dist/cli-runtime/{reconstructionObligationLedgerSchemas-Bao0xMr-.js → reconstructionObligationLedgerSchemas-Bi6sect1.js} +6329 -3651
- package/dist/cli-runtime/{scanCanonical-KP4T9jSl.js → scanCanonical-CcDFUr-w.js} +233 -363
- package/dist/cli-runtime/snapshotEnvironment-Yvx5qwsl.js +196 -0
- package/dist/cli-runtime/{toolContracts-D2FOG_Nb.js → toolContracts-CJzEyZ38.js} +126 -52
- package/dist/cli-runtime/{toolOutputSchemaGroups-DRiYs1je.js → toolOutputSchemaGroups-BqdSzySu.js} +768 -589
- package/dist/cli-runtime/{workflowInputError-n8Oo-bLA.js → workflowInputError-BP8z9Wxl.js} +2 -2
- package/dist/cli.js +10 -0
- package/dist/cliBrowserScenarioCommands.js +2 -3
- package/dist/cliLogging.js +22 -7
- package/dist/cliObservationOptions.js +3 -0
- package/dist/cliOutput.js +68 -3
- package/dist/composition/binary.js +15 -2
- package/dist/composition/directAnalysis.js +8 -0
- package/dist/composition/javascriptAnalysisWorkerProcess.js +4 -5
- package/dist/composition/jeb.js +32 -21
- package/dist/config/environment.js +36 -2
- package/dist/config/mcpInputSchemaProfile.js +1 -1
- package/dist/config/parseConfig.js +7 -3
- package/dist/contracts/adb/adbToolContracts.js +2 -2
- package/dist/contracts/analysisViewApiSurfaceExample.js +4 -4
- package/dist/contracts/analysisViewToolContracts.js +42 -1
- package/dist/contracts/android/androidToolContracts.js +1 -1
- package/dist/contracts/apktool/apktoolToolContracts.js +5 -1
- package/dist/contracts/artifactComparisonExample.js +18 -14
- package/dist/contracts/artifactToolContracts.js +2 -1
- package/dist/contracts/browserScenarioToolContracts.js +1 -1
- package/dist/contracts/browserToolContracts.js +12 -1
- package/dist/contracts/compactInputSchema.js +13 -6
- package/dist/contracts/fridaToolContracts.js +5 -4
- package/dist/contracts/gdbToolContracts.js +2 -3
- package/dist/contracts/inputSchemaPresentation.js +173 -79
- package/dist/contracts/javascript/javascriptExportShapeComparisonExample.js +1 -0
- package/dist/contracts/javascript/javascriptRuntimeReconciliationExample.js +1 -0
- package/dist/contracts/jsonSchemaKeywords.js +29 -0
- package/dist/contracts/managed/managedWorkflowExamples.js +3 -0
- package/dist/contracts/managed/managedWorkflowToolContracts.js +1 -1
- package/dist/contracts/mobileApplicationGraphExamples.js +15 -12
- package/dist/contracts/officialToolContracts.js +2 -2
- package/dist/contracts/rizinDebugToolContracts.js +3 -2
- package/dist/contracts/sessionToolContracts.js +3 -3
- package/dist/contracts/toolEffects.js +6 -2
- package/dist/contracts/toolOutputSchemaGroups.js +7 -4
- package/dist/contracts/toolOutputSchemaPrimitives.js +7 -0
- package/dist/contracts/toolSchemaMetadata.js +99 -27
- package/dist/cutter/CutterBridgeClient.js +206 -67
- package/dist/cutter/CutterBridgeService.js +52 -4
- package/dist/doctorRuntime.js +25 -4
- package/dist/domain/adb/adbDeviceAnalysis.js +19 -1
- package/dist/domain/analysisErrorBase.js +59 -2
- package/dist/domain/analysisErrorCleanup.js +3 -1
- package/dist/domain/analysisErrorCore.js +13 -0
- package/dist/domain/analysisErrorPresentation.js +23 -4
- package/dist/domain/analysisErrorProjection.js +44 -28
- package/dist/domain/analysisSearch.js +26 -0
- package/dist/domain/analysisSnapshot.js +11 -11
- package/dist/domain/analysisView/WebNetworkApiSurfaceAccumulator.js +4 -65
- package/dist/domain/analysisView/analysisView.js +25 -0
- package/dist/domain/analysisView/analysisViewDataAdmission.js +86 -0
- package/dist/domain/analysisView/artifactInventoryView.js +4 -18
- package/dist/domain/analysisView/javascriptApplicationCoverage.js +27 -0
- package/dist/domain/analysisView/javascriptApplicationView.js +100 -27
- package/dist/domain/analysisView/javascriptFactsView.js +92 -0
- package/dist/domain/analysisView/javascriptModuleReferences.js +37 -0
- package/dist/domain/analysisView/managedMemberView.js +6 -0
- package/dist/domain/android/androidApplication.js +8 -7
- package/dist/domain/apktool/apktoolResourceAnalysis.js +52 -2
- package/dist/domain/apple/appleApplication.js +41 -60
- package/dist/domain/apple/appleBundleAnatomy.js +56 -68
- package/dist/domain/apple/dylibResolution.js +5 -1
- package/dist/domain/apple/interfaceBuilderGraph.js +29 -8
- package/dist/domain/apple/interfaceBuilderKeyedArchive.js +11 -4
- package/dist/domain/apple/jvmClassFile.js +226 -0
- package/dist/domain/apple/keyedArchive.js +39 -17
- package/dist/domain/apple/machoContainer.js +3 -0
- package/dist/domain/apple/plistNumbers.js +67 -5
- package/dist/domain/apple/plistValue.js +89 -18
- package/dist/domain/artifactComparison.js +7 -5
- package/dist/domain/artifactGraph.js +4 -12
- package/dist/domain/artifactInspection.js +6 -17
- package/dist/domain/artifactInventoryEvidence.js +68 -60
- package/dist/domain/binaryTarget.js +11 -26
- package/dist/domain/binaryTargetTypes.js +10 -0
- package/dist/domain/browserNetworkEvidence.js +20 -3
- package/dist/domain/browserObservation.js +5 -28
- package/dist/domain/browserObservationError.js +4 -4
- package/dist/domain/browserScenarioCapture.js +11 -2
- package/dist/domain/browserScenarioCaptureLimits.js +34 -0
- package/dist/domain/browserScenarioCaptureValues.js +50 -0
- package/dist/domain/browserScenarioDiffEvidence.js +1 -3
- package/dist/domain/browserScenarioValues.js +5 -1
- package/dist/domain/captures/packetCapture.js +2 -1
- package/dist/domain/dosMz.js +14 -5
- package/dist/domain/electron/electronFuseEvidence.js +42 -0
- package/dist/domain/elfFixedHeader.js +24 -0
- package/dist/domain/evidence.js +7 -6
- package/dist/domain/evidenceBundle.js +9 -2
- package/dist/domain/explicitSensitiveFailure.js +3 -0
- package/dist/domain/fileSnapshotObservation.js +25 -0
- package/dist/domain/fixedTupleSchema.js +9 -0
- package/dist/domain/functionCallCoverage.js +6 -6
- package/dist/domain/functionComparisonDimensions.js +38 -11
- package/dist/domain/functionComparisonNormalization.js +17 -9
- package/dist/domain/functionDossierEvidence.js +4 -3
- package/dist/domain/harmony/harmonyApplication.js +8 -8
- package/dist/domain/hopperErrors.js +4 -2
- package/dist/domain/hopperValues.js +27 -4
- package/dist/domain/javascript/electronActiveObservation.js +1 -0
- package/dist/domain/javascript/electronStaticAnalysisBrowser.js +80 -20
- package/dist/domain/javascript/electronStaticAnalysisValues.js +0 -20
- package/dist/domain/javascript/electronStaticOptionObjects.js +45 -0
- package/dist/domain/javascript/electronWrappedCallPaths.js +70 -17
- package/dist/domain/javascript/javascriptAnalysisResourceControls.js +20 -4
- package/dist/domain/javascript/javascriptApplicationAnalysis.js +4 -0
- package/dist/domain/javascript/javascriptApplicationChangeGraph.js +3 -0
- package/dist/domain/javascript/javascriptApplicationVersionComparisonSchemas.js +3 -1
- package/dist/domain/javascript/javascriptApplicationVersionItems.js +49 -21
- package/dist/domain/javascript/javascriptAstFingerprint.js +41 -10
- package/dist/domain/javascript/javascriptAstValues.js +83 -5
- package/dist/domain/javascript/javascriptBundledRequireOrigin.js +23 -36
- package/dist/domain/javascript/javascriptCommonJsExportReceivers.js +231 -0
- package/dist/domain/javascript/javascriptElectronMemberWrites.js +14 -4
- package/dist/domain/javascript/javascriptFeatureSeed.js +1 -1
- package/dist/domain/javascript/javascriptGraphqlOperations.js +382 -0
- package/dist/domain/javascript/javascriptModuleDeclaration.js +20 -0
- package/dist/domain/javascript/javascriptNativeHandoff.js +7 -11
- package/dist/domain/javascript/javascriptRpcEndpoints.js +7 -171
- package/dist/domain/javascript/javascriptRuntimeLoadState.js +9 -4
- package/dist/domain/javascript/javascriptRuntimeReconciliationCaptureParsing.js +35 -12
- package/dist/domain/javascript/javascriptRuntimeReconciliationMatching.js +50 -45
- package/dist/domain/javascript/javascriptSemanticAmbientWrites.js +284 -24
- package/dist/domain/javascript/javascriptSemanticAnalysis.js +452 -182
- package/dist/domain/javascript/javascriptSemanticAsyncEffects.js +37 -20
- package/dist/domain/javascript/javascriptSemanticCallResolution.js +55 -27
- package/dist/domain/javascript/javascriptSemanticCalls.js +4 -4
- package/dist/domain/javascript/javascriptSemanticChildProcesses.js +134 -50
- package/dist/domain/javascript/javascriptSemanticCoverage.js +5 -1
- package/dist/domain/javascript/javascriptSemanticDataEffectHelpers.js +7 -13
- package/dist/domain/javascript/javascriptSemanticDataEffects.js +33 -10
- package/dist/domain/javascript/javascriptSemanticDerivedAnalysis.js +1 -1
- package/dist/domain/javascript/javascriptSemanticEvaluationOrder.js +126 -0
- package/dist/domain/javascript/javascriptSemanticExpressionShapes.js +111 -0
- package/dist/domain/javascript/javascriptSemanticGetterQueries.js +147 -0
- package/dist/domain/javascript/javascriptSemanticGetterResults.js +264 -0
- package/dist/domain/javascript/javascriptSemanticGraph.js +18 -1
- package/dist/domain/javascript/javascriptSemanticGraphSchemas.js +13 -0
- package/dist/domain/javascript/javascriptSemanticIterationSources.js +3 -2
- package/dist/domain/javascript/javascriptSemanticMapOperations.js +51 -0
- package/dist/domain/javascript/javascriptSemanticMemberMutations.js +215 -81
- package/dist/domain/javascript/javascriptSemanticMutationInitializers.js +395 -118
- package/dist/domain/javascript/javascriptSemanticObjectReferences.js +241 -328
- package/dist/domain/javascript/javascriptSemanticObjects.js +33 -27
- package/dist/domain/javascript/javascriptSemanticOpaqueEffects.js +163 -0
- package/dist/domain/javascript/javascriptSemanticPrimitives.js +11 -1
- package/dist/domain/javascript/javascriptSemanticProjection.js +44 -67
- package/dist/domain/javascript/javascriptSemanticQueryIdentity.js +2 -1
- package/dist/domain/javascript/javascriptSemanticQuerySchemas.js +1 -1
- package/dist/domain/javascript/javascriptSemanticRequireOrigin.js +45 -7
- package/dist/domain/javascript/javascriptSemanticResourceLimits.js +3 -19
- package/dist/domain/javascript/javascriptSemanticResources.js +27 -4
- package/dist/domain/javascript/javascriptSemanticReturnedReferences.js +78 -37
- package/dist/domain/javascript/javascriptSemanticReturns.js +2 -2
- package/dist/domain/javascript/javascriptSemanticState.js +191 -42
- package/dist/domain/javascript/javascriptSemanticValues.js +167 -41
- package/dist/domain/javascript/javascriptSourceParser.js +54 -9
- package/dist/domain/javascript/javascriptStaticAnalysis.js +24 -13
- package/dist/domain/javascript/javascriptStaticAnalysisCalls.js +276 -16
- package/dist/domain/javascript/javascriptStaticAnalysisHelpers.js +33 -25
- package/dist/domain/javascript/javascriptStaticAnalysisState.js +3 -0
- package/dist/domain/javascript/javascriptStaticAnalysisTypes.js +1 -1
- package/dist/domain/javascript/javascriptSymbolicBindings.js +424 -142
- package/dist/domain/javascript/javascriptSymbolicControlFlow.js +4 -0
- package/dist/domain/javascript/javascriptSymbolicValues.js +12 -1
- package/dist/domain/javascript/sourceToBundleSignals.js +3 -0
- package/dist/domain/managed/managedApplicationGraphNodes.js +14 -9
- package/dist/domain/managed/managedArtifact.js +26 -0
- package/dist/domain/managed/managedMemberComparison.js +3 -0
- package/dist/domain/managed/managedMemberComparisonCoverage.js +14 -1
- package/dist/domain/managed/managedMemberComparisonItems.js +124 -52
- package/dist/domain/managed/managedMemberComparisonMatch.js +76 -72
- package/dist/domain/managed/managedMemberSignatureIdentity.js +40 -0
- package/dist/domain/managed/managedNativeVerificationMatch.js +5 -5
- package/dist/domain/managed/managedNativeVerificationSchemas.js +2 -2
- package/dist/domain/mobileApplicationGraphProjection.js +33 -18
- package/dist/domain/native/bytePattern.js +21 -0
- package/dist/domain/native/nativeAotPe.js +29 -2
- package/dist/domain/native/nativeAotSnapshotObservation.js +18 -0
- package/dist/domain/native/nativeCallPartialObservation.js +14 -12
- package/dist/domain/native/nativeLoadImage.js +13 -0
- package/dist/domain/native/objcSwiftMetadata.js +15 -8
- package/dist/domain/native/peResources.js +6 -2
- package/dist/domain/peMachine.js +2 -0
- package/dist/domain/process/processComparison.js +3 -3
- package/dist/domain/process/processTraceDimensionProjection.js +1 -1
- package/dist/domain/process/processTraceEvaluation.js +65 -24
- package/dist/domain/propertyListKeys.js +84 -69
- package/dist/domain/propertyListXml.js +149 -0
- package/dist/domain/providerAdapterError.js +2 -0
- package/dist/domain/providerCleanupError.js +2 -4
- package/dist/domain/rawBinary.js +11 -2
- package/dist/domain/reconstructionCoverage.js +35 -23
- package/dist/domain/reconstructionCoverageEvaluation.js +36 -36
- package/dist/domain/reconstructionCoverageEvidence.js +26 -0
- package/dist/domain/reconstructionVerification.js +40 -26
- package/dist/domain/referenceSourceImportParsing.js +4 -0
- package/dist/domain/referenceSourcePathIdentity.js +2 -0
- package/dist/domain/referenceSourceRequireBindings.js +40 -101
- package/dist/domain/relationshipCoverage.js +4 -5
- package/dist/domain/sqlite/sqliteDatabase.js +2 -1
- package/dist/domain/symbolAnalysis.js +9 -8
- package/dist/domain/webBundleAnalyzerInspection.js +65 -25
- package/dist/domain/webCaptureDiff.js +124 -41
- package/dist/domain/webInventory.js +28 -14
- package/dist/domain/webModuleTrace.js +22 -0
- package/dist/domain/webScriptExportError.js +2 -3
- package/dist/domain/xmlDocument.js +41 -0
- package/dist/domain/zipPackageFormat.js +0 -4
- package/dist/dotnet/ManagedArtifactInspector.js +2 -4
- package/dist/dotnet/ManagedDecodeBudget.js +21 -1
- package/dist/dotnet/ManagedMemberInspector.js +31 -6
- package/dist/dotnet/ManagedMemberInspectorCore.js +63 -12
- package/dist/dotnet/ManagedMemberRows.js +8 -8
- package/dist/dotnet/ManagedMetadataHeaps.js +0 -1
- package/dist/dotnet/ManagedMetadataLayout.js +17 -15
- package/dist/dotnet/ManagedNativeBoundaryHelpers.js +20 -19
- package/dist/dotnet/ManagedNativeBoundaryInspector.js +7 -8
- package/dist/dotnet/ManagedPeReader.js +5 -0
- package/dist/dotnet/ManagedSnapshot.js +25 -20
- package/dist/dotnet/ManagedTypeNameDigests.js +177 -0
- package/dist/dotnet/ManagedTypeNames.js +6 -46
- package/dist/dotnet/ManagedTypeNesting.js +25 -0
- package/dist/dotnet/ManagedTypeReferences.js +94 -0
- package/dist/electron/ElectronFuseFailures.js +105 -0
- package/dist/electron/ElectronFusePath.js +4 -3
- package/dist/electron/ElectronFuseProvider.js +67 -92
- package/dist/electron/ElectronFuseReader.js +46 -30
- package/dist/evm/EvmoleFailures.js +1 -0
- package/dist/evm/EvmoleInterfaceProvider.js +13 -16
- package/dist/filesystem/OwnedRegularFile.js +116 -0
- package/dist/filesystem/OwnedStagedOutput.js +28 -11
- package/dist/filesystem/RegularFile.js +20 -8
- package/dist/filesystem/StableFileHash.js +56 -38
- package/dist/filesystem/callerPath.js +26 -0
- package/dist/filesystem/readFileHandleChunks.js +55 -5
- package/dist/filesystem/readStableFileBytes.js +85 -0
- package/dist/firmware/FirmwareCommand.js +13 -7
- package/dist/firmware/FirmwareFailures.js +56 -0
- package/dist/firmware/FirmwareFiles.js +128 -98
- package/dist/firmware/FirmwareProvider.js +120 -65
- package/dist/firmware/FirmwarePublication.js +26 -11
- package/dist/flutter/DartElf.js +27 -0
- package/dist/flutter/FlutterBuildProvider.js +44 -4
- package/dist/gdb/GdbSessionManager.js +202 -14
- package/dist/generatedPackageMetadata.js +1 -1
- package/dist/ghidra/GhidraAnalysisProfile.js +24 -10
- package/dist/ghidra/GhidraAnalysisSeeds.js +39 -55
- package/dist/ghidra/GhidraBridgeSources.js +12 -0
- package/dist/ghidra/GhidraClient.js +362 -148
- package/dist/ghidra/GhidraClientStartup.js +5 -3
- package/dist/ghidra/GhidraClientWire.js +5 -2
- package/dist/ghidra/GhidraDiagnostics.js +16 -5
- package/dist/ghidra/GhidraDoctor.js +45 -14
- package/dist/ghidra/GhidraDosSnapshot.js +83 -0
- package/dist/ghidra/GhidraExecutableHeader.js +54 -0
- package/dist/ghidra/GhidraFileArtifacts.js +93 -0
- package/dist/ghidra/GhidraFunctionValues.js +1 -0
- package/dist/ghidra/GhidraInstallation.js +143 -142
- package/dist/ghidra/GhidraInstallationPolicy.js +20 -79
- package/dist/ghidra/GhidraInstallationProperties.js +57 -0
- package/dist/ghidra/GhidraInventoryValues.js +22 -6
- package/dist/ghidra/GhidraJavaLaunch.js +11 -4
- package/dist/ghidra/GhidraJavaProbe.js +267 -0
- package/dist/ghidra/GhidraJavaProperties.js +9 -7
- package/dist/ghidra/GhidraLanguageCatalog.js +12 -7
- package/dist/ghidra/GhidraLauncher.js +128 -65
- package/dist/ghidra/GhidraLoadImageAttest.js +75 -78
- package/dist/ghidra/GhidraLoadImageValues.js +39 -29
- package/dist/ghidra/GhidraMipsProfile.js +13 -5
- package/dist/ghidra/GhidraNativeAotSnapshotOwner.js +221 -0
- package/dist/ghidra/GhidraPeProfile.js +88 -18
- package/dist/ghidra/GhidraProvider.js +219 -32
- package/dist/ghidra/GhidraProviderCapabilities.js +17 -4
- package/dist/ghidra/GhidraProviderClient.js +199 -239
- package/dist/ghidra/GhidraPspExtension.js +104 -34
- package/dist/ghidra/GhidraPspProfile.js +4 -1
- package/dist/ghidra/GhidraRawBinaryLanguage.js +13 -4
- package/dist/ghidra/GhidraReleasePolicy.js +93 -0
- package/dist/ghidra/GhidraRequestQueue.js +64 -40
- package/dist/ghidra/GhidraSessionError.js +152 -19
- package/dist/ghidra/GhidraSessionValues.js +13 -3
- package/dist/ghidra/GhidraSocketConnection.js +25 -11
- package/dist/ghidra/GhidraTargetSnapshot.js +67 -50
- package/dist/ghidra/GhidraTransport.js +86 -63
- package/dist/ghidra/extensions/GhidraExtensions.js +30 -45
- package/dist/go/GoBinaryProvider.js +89 -60
- package/dist/go/GoElfImage.js +3 -3
- package/dist/hopper/BridgeLauncher.js +43 -4
- package/dist/hopper/HopperAnalysisProfile.js +4 -2
- package/dist/hopper/HopperCleanup.js +14 -1
- package/dist/hopper/HopperClient.js +135 -63
- package/dist/hopper/HopperProvider.js +4 -7
- package/dist/hopper/HopperProviderCapabilities.js +2 -1
- package/dist/hopper/HopperRegexSearch.js +21 -60
- package/dist/ida/IdaBusyHealth.js +36 -2
- package/dist/ida/IdaMcpConnection.js +17 -11
- package/dist/ida/IdaNativeProtocol.js +1 -9
- package/dist/ida/IdaOperationRunner.js +8 -26
- package/dist/ida/IdaProtocolValues.js +2 -1
- package/dist/ida/IdaProvider.js +18 -2
- package/dist/ida/IdaSessionClient.js +54 -12
- package/dist/inspector/V8InspectorCaptureProjection.js +7 -0
- package/dist/inspector/V8InspectorProvider.js +2 -0
- package/dist/javascript/analysis/JavaScriptAnalysisTransfer.js +25 -4
- package/dist/javascript/analysis/JavaScriptAnalysisWorker.js +4 -3
- package/dist/javascript/analysis/JavaScriptAnalysisWorkerProtocol.js +3 -2
- package/dist/javascript/analysis/JavaScriptAnalysisWorkerSchemas.js +7 -1
- package/dist/javascript/analysis/JavaScriptAnalysisWorkerServer.js +1 -1
- package/dist/javascript/recovery/RecoveryFiles.js +57 -8
- package/dist/jeb/JebMcpConnection.js +129 -70
- package/dist/jeb/JebMcpConnectionOwner.js +116 -0
- package/dist/jeb/JebMcpDeadline.js +46 -0
- package/dist/jeb/JebProvider.js +77 -51
- package/dist/kuna/KunaAddress.js +11 -0
- package/dist/kuna/KunaCommand.js +217 -0
- package/dist/kuna/KunaConfiguration.js +90 -0
- package/dist/kuna/KunaDoctor.js +198 -0
- package/dist/kuna/KunaInstallation.js +137 -0
- package/dist/kuna/KunaJson.js +23 -0
- package/dist/kuna/KunaJsonStream.js +433 -0
- package/dist/kuna/KunaLimits.js +5 -0
- package/dist/kuna/KunaProjectCache.js +804 -0
- package/dist/kuna/KunaProjectExport.js +202 -0
- package/dist/kuna/KunaProjectFiles.js +191 -0
- package/dist/kuna/KunaProjectReader.js +115 -0
- package/dist/kuna/KunaProvider.js +217 -0
- package/dist/kuna/KunaProviderCapabilities.js +102 -0
- package/dist/kuna/KunaQueryErrors.js +12 -0
- package/dist/kuna/KunaQueryWork.js +113 -0
- package/dist/kuna/KunaReferenceFiles.js +258 -0
- package/dist/kuna/KunaReferenceQueries.js +211 -0
- package/dist/kuna/KunaRelease.js +10 -0
- package/dist/kuna/KunaRunSlots.js +56 -0
- package/dist/kuna/KunaSessionClient.js +1162 -0
- package/dist/kuna/KunaStringInventory.js +145 -0
- package/dist/kuna/KunaStringQueries.js +133 -0
- package/dist/kuna/KunaTargetCommands.js +205 -0
- package/dist/kuna/KunaUnavailable.js +11 -0
- package/dist/main/processShutdown.js +17 -0
- package/dist/main/transport.js +21 -1
- package/dist/main.js +2 -12
- package/dist/mcp/AnalysisProvider-BABWbLoM.js +38 -0
- package/dist/mcp/{AnalysisSnapshotFiles-BAbiJQOc.js → AnalysisSnapshotFiles-BXz0c37-.js} +39 -28
- package/dist/mcp/{ProcessOwnership-Bl_3ejLe.js → ArtifactFileOperation-64cQKI7B.js} +274 -72
- package/dist/mcp/{ArtifactProvider-DViCU_rn.js → ArtifactProvider-Dx6pmil1.js} +371 -354
- package/dist/mcp/ArtifactProviderMetadata-UCJr2oZW.js +167 -0
- package/dist/mcp/{ArtifactReader-OyM03Gjn.js → ArtifactReader-BrnwNaKY.js} +29 -6
- package/dist/mcp/ArtifactResourceScope-zi3Dkqzy.js +175 -0
- package/dist/mcp/{AsarHeader-WsPgoooH.js → AsarHeader-B_IbppTz.js} +1 -1
- package/dist/mcp/{BinarySessionStatus-B4P9gf-S.js → BinarySessionStatus-CZ9nnXMt.js} +5 -4
- package/dist/mcp/{BinaryTargetResolver-BMaE_0H1.js → BinaryTargetResolver-BUncASDP.js} +146 -215
- package/dist/mcp/BoundedFileBytes-DYt5q9G2.js +43 -0
- package/dist/mcp/{CdpCaptureDocuments-HDiF2O7k.js → CdpCaptureDocuments-Y2uFcBpl.js} +194 -145
- package/dist/mcp/{CdpCaptureValues-M-j6CIh1.js → CdpCaptureValues-tNIg-gQK.js} +12 -5
- package/dist/mcp/{CdpConnection-BpDfz4MK.js → CdpEndpoint-BrhMhpSi.js} +352 -281
- package/dist/mcp/{CdpOptionalCommand-BPjRD9Kz.js → CdpOptionalCommand-PZZhlqxv.js} +2 -2
- package/dist/mcp/CdpTargetSession-BmmDC3XO.js +290 -0
- package/dist/mcp/{DirectAnalysis-DrafbXke.js → DirectAnalysis-B9KuCHTG.js} +29 -21
- package/dist/mcp/{DirectAnalysisStatus-CjjeDLzW.js → DirectAnalysisStatus-BgzopkIt.js} +7 -7
- package/dist/mcp/{ElectronFileScope-BPG_YoyU.js → ElectronFileScope-FXtK0d6I.js} +1 -1
- package/dist/mcp/ElectronFuseFailures-uZ_wOV6T.js +610 -0
- package/dist/mcp/MachoLoadCommandReader-C2VGgHA3.js +330 -0
- package/dist/mcp/{ManagedStaticProvider-BthZbKyZ.js → ManagedStaticProvider-CZuoPme2.js} +429 -131
- package/dist/mcp/{NativeMacOSProvider-Bh79k8dI.js → NativeMacOSProvider-CMguKrvN.js} +1376 -748
- package/dist/mcp/{NativeMacOSProviderMetadata-N1lPOaY_.js → NativeMacOSProviderMetadata-B_RH4KXF.js} +97 -7
- package/dist/mcp/{ProviderDeadline-DskQ94YD.js → OwnedCommand-BW1jBSt9.js} +436 -127
- package/dist/mcp/ProcedureAddressResolution-H6Qwpb_Y.js +59 -0
- package/dist/mcp/{WorkflowEvidence-umWrB_wm.js → WorkflowEvidence-CO4C7ALz.js} +16 -9
- package/dist/mcp/analysisErrorCleanup-Q344SnTO.js +34 -0
- package/dist/mcp/analysisErrorCore-BIEP7tvF.js +509 -0
- package/dist/mcp/{analysisErrorProjection-BN0EPM-3.js → analysisErrorProjection-B8teQwwD.js} +80 -30
- package/dist/mcp/{artifactToolContracts-Di4qZlEt.js → artifactToolContracts-C9dRDo-D.js} +6 -4
- package/dist/mcp/{browserObservation-C0s4i8UI.js → browserObservation-DUraZs62.js} +272 -107
- package/dist/mcp/{browserObservationError-CyLugqX4.js → browserObservationError-C5okJ5el.js} +27 -4
- package/dist/mcp/{browserObservationSchemas-tgqjH7aA.js → browserObservationSchemas-DwGGxBpu.js} +3 -3
- package/dist/mcp/{browserScenario-CAQ8Fns9.js → browserScenario-BRUz7yN0.js} +844 -358
- package/dist/mcp/{browserScenarioCapture-CTNFN-FI.js → browserScenarioCapture-CiMAsMx8.js} +127 -11
- package/dist/mcp/{InterfaceBuilderDecodeBudget-5F2AkxJT.js → callerPath-CpPnMZyN.js} +91 -65
- package/dist/mcp/{electronActiveObservation-lDvQTMR0.js → electronActiveObservation-DV0Ffy9X.js} +1 -0
- package/dist/mcp/electronFuses-D5SS7XXw.js +367 -0
- package/dist/mcp/{electronObservation-i7LcILQ-.js → electronObservation-DsN-NqY1.js} +134 -75
- package/dist/mcp/{electronObservation-DFOFEood.js → electronObservation-wOYWwqgF.js} +3 -3
- package/dist/mcp/{electronScenario-nCzE6IfJ.js → electronScenario-CYrt2zBK.js} +395 -135
- package/dist/mcp/{emptyArraySchema-tL6Qymyd.js → emptyArraySchema-C0o2Sxwp.js} +2 -2
- package/dist/mcp/{enhancedInputs-DgdEnzHy.js → enhancedInputs-6CCgB3VB.js} +1 -1
- package/dist/mcp/{javascriptRuntimeObservation-61NhCf7H.js → javascriptRuntimeObservation-BVbhkO2-.js} +12 -9
- package/dist/mcp/{javascriptRuntimeObservation-PIUoLfX6.js → javascriptRuntimeObservation-Cu0Yedqq.js} +2 -2
- package/dist/mcp/{lipo-Bnkoq_6W.js → lipo-DSTgUqL1.js} +11 -118
- package/dist/mcp/{logger-BQY5ulYv.js → logger-BGdGHadX.js} +2 -2
- package/dist/mcp/machoContainer-CMSxUBlK.js +605 -0
- package/dist/mcp/{main-kBXHZ8S5.js → main-Cx-Z7m_n.js} +16788 -5902
- package/dist/mcp/main.js +1 -1
- package/dist/mcp/{managedToolContracts-CK--I_s7.js → managedToolContracts-CSlbKJP-.js} +3 -3
- package/dist/mcp/{nativeValueTrace-DR9UE62L.js → nativeValueTrace-BEZbDieM.js} +2630 -2468
- package/dist/mcp/{officialToolContracts-B67NJ2tC.js → officialToolContracts-CauCcSsc.js} +74 -55
- package/dist/mcp/peMachine-aP1iYnHq.js +95 -0
- package/dist/mcp/propertyListKeys-BfCo0k4w.js +356 -0
- package/dist/mcp/providerCleanupError-DIRHxzWo.js +125 -0
- package/dist/mcp/{providerOperationHealth-CTYa3iLf.js → providerOperationHealth-9DRSGM8N.js} +24 -1
- package/dist/mcp/{scanCanonical-CRXSpule.js → scanCanonical-CF3ATd1V.js} +269 -463
- package/dist/mcp/{serverIdentity-Cio4iFV3.js → serverIdentity-BK0Ejd_Y.js} +262 -83
- package/dist/mcp/{sourceMapEnvelope-C0uJlrOh.js → sourceMapEnvelope-DAaRUIGj.js} +4 -4
- package/dist/mcp/{toolContracts-BW05wpcr.js → toolContracts-BPoHQdlC.js} +541 -327
- package/dist/mcp/{toolOutputSchemaGroups-ColvNZ1r.js → toolOutputSchemaGroups-MJ_f-PMK.js} +2551 -2354
- package/dist/mcp/{webContentArtifact-Dzjc1z-R.js → webContentArtifact-DfGkgDcI.js} +2 -17
- package/dist/mcp/{webRuntime-K__NYzXm.js → webRuntime-ccyhkRru.js} +2 -2
- package/dist/mcp/{webSourceLocation-DbMAT2J9.js → webSourceLocation-DKIum0vJ.js} +6451 -4414
- package/dist/mcpDoctor.js +4 -2
- package/dist/mcpStartupPolicy.js +18 -3
- package/dist/native/AppleDispatchMetadata.js +76 -27
- package/dist/native/AppleMachoFixups.js +20 -10
- package/dist/native/AppleObjcCategories.js +12 -1
- package/dist/native/AppleObjcDispatchFacets.js +21 -12
- package/dist/native/AppleObjcProperties.js +61 -17
- package/dist/native/AppleObjcProtocols.js +25 -7
- package/dist/native/AppleSwiftVtables.js +2 -0
- package/dist/native/CommandRunner.js +13 -9
- package/dist/native/LldbCallTracer.js +232 -178
- package/dist/native/LldbReadbackFiles.js +70 -0
- package/dist/native/LldbRetainedObservations.js +28 -56
- package/dist/native/NativeCallObservation.js +53 -52
- package/dist/native/NativeCallTarget.js +95 -0
- package/dist/native/NativeMacOSProvider.js +240 -171
- package/dist/native/NativeMachoInspection.js +21 -7
- package/dist/native/NativePlistSource.js +179 -0
- package/dist/native/NativeUiCleanupError.js +30 -0
- package/dist/native/NativeUiHelperRuntime.js +48 -35
- package/dist/native/NativeUiObservation.js +67 -45
- package/dist/native/SignatureTargetBinding.js +72 -53
- package/dist/native/parsers/demangle.js +16 -12
- package/dist/native/parsers/machoUuid.js +4 -4
- package/dist/native/parsers/otool.js +57 -17
- package/dist/native/parsers/plist.js +40 -25
- package/dist/native/pe/PeResourceLayout.js +22 -7
- package/dist/native/pe/PeResourceParser.js +10 -9
- package/dist/native/pe/PeResourcesProvider.js +63 -16
- package/dist/native/pwndbg/CoreFileMappingAuthority.js +51 -0
- package/dist/native/pwndbg/PwndbgCoreContext.js +26 -15
- package/dist/native/pwntools/PwntoolsDecoder.js +116 -53
- package/dist/native/pwntools/PwntoolsFailures.js +17 -3
- package/dist/native/pwntools/PwntoolsRecordedCrashProvider.js +11 -1
- package/dist/objdump/ObjdumpCommand.js +5 -2
- package/dist/pcap/PcapOutput.js +38 -2
- package/dist/pcap/PcapProvider.js +45 -15
- package/dist/pcap/PcapSnapshot.js +24 -4
- package/dist/process/ArtifactAnalysisResources.js +145 -52
- package/dist/process/BoundedFileBytes.js +8 -3
- package/dist/process/CurrentEntrypointPath.js +3 -1
- package/dist/process/DarwinProcessRunTokenReader.js +174 -63
- package/dist/process/DetachedPgpSignature.js +57 -0
- package/dist/process/ExecFileOutput.js +14 -11
- package/dist/{hopper/HopperTargetLease.js → process/HopperLease.js} +10 -0
- package/dist/process/LinuxResourceLimits.js +4 -24
- package/dist/process/OwnedCommand.js +109 -14
- package/dist/process/ProviderProcess.js +129 -10
- package/dist/process/RegexMatcher.js +96 -0
- package/dist/process/SharedStartupAttempt.js +59 -0
- package/dist/process/WindowsAuthority.js +1 -1
- package/dist/process/capture/FilesystemSnapshot.js +3 -2
- package/dist/process/capture/ProcessCaptureError.js +55 -17
- package/dist/process/capture/ProcessCaptureLifecycle.js +17 -20
- package/dist/process/capture/ProcessCaptureProgress.js +5 -3
- package/dist/process/capture/ProcessHarness.js +17 -3
- package/dist/process/snapshotEnvironment.js +8 -8
- package/dist/{application/binary → providers}/AnalysisClientCleanup.js +3 -3
- package/dist/providers/AnalysisClientCreation.js +193 -0
- package/dist/providers/AnalysisClientFailure.js +191 -0
- package/dist/providers/DeferredAnalysisClient.js +48 -0
- package/dist/providers/OwnedCommandCleanup.js +65 -0
- package/dist/providers/ProviderInspectionScope.js +10 -0
- package/dist/recordedCatalogDigests.js +2 -0
- package/dist/reference/ReferenceSourceReader.js +64 -0
- package/dist/reference/ReferenceSourceReaderEntries.js +12 -3
- package/dist/reference/ReferenceSourceReaderFile.js +2 -1
- package/dist/rizin/RizinCommand.js +2 -2
- package/dist/rizin/RizinDebugSessionManager.js +249 -210
- package/dist/rust/RustBinaryProvider.js +55 -23
- package/dist/server/EvidenceMcpServer.js +2 -2
- package/dist/server/contractToolHandler.js +17 -11
- package/dist/server/createServer.js +27 -8
- package/dist/server/promptCompletion.js +24 -22
- package/dist/server/registerArtifactComparisonTool.js +13 -2
- package/dist/server/registerBrowserScenarioTool.js +7 -5
- package/dist/server/registerBrowserTools.js +2 -4
- package/dist/server/registerCutterTools.js +2 -3
- package/dist/server/registerElectronTools.js +2 -13
- package/dist/server/registerFridaTools.js +8 -12
- package/dist/server/registerInvestigationTools.js +20 -20
- package/dist/server/registerJavaScriptRuntimeObservationTools.js +2 -4
- package/dist/server/registerManagedWorkflowTools/evidence.js +14 -7
- package/dist/server/registerProcessComparisonTool.js +3 -0
- package/dist/server/registerSessionStatusTool.js +13 -6
- package/dist/server/registerSessionTools.js +16 -29
- package/dist/server/runDerivedOperation.js +2 -0
- package/dist/signals/SigrokRecordingProvider.js +13 -6
- package/dist/sqlite/SqliteDatabaseFailures.js +25 -12
- package/dist/sqlite/SqliteDatabaseInspection.js +27 -12
- package/dist/sqlite/SqliteDatabaseSnapshot.js +58 -32
- package/dist/sqlite/SqliteDatabaseWorkerExecution.js +18 -3
- package/dist/wasm/WabtArtifactProvider.js +64 -42
- package/dist/wasm/WabtFailures.js +19 -1
- package/dist/wasm/WabtRuntime.js +58 -0
- package/dist/wasm/WasmGlueAdapter.js +20 -7
- package/dist/windows/WindowsNativeLoader.js +16 -2
- package/dist/windows/WindowsPrivateRuntime.js +44 -1
- package/licenses/npm-dependencies.txt +146 -1
- package/licenses/npm-runtime-notices.txt +175 -1
- package/native/windows/README.md +44 -7
- package/native/windows/build/manifest.json +2 -2
- package/native/windows/build/rea-windows-x64.node +0 -0
- package/package.json +11 -3
- package/scripts/electron-active-hook-boundaries.cjs +15 -2
- package/scripts/electron-active-hook.cjs +408 -46
- package/scripts/hopper-demo-x11.py +12 -10
- package/scripts/rea.mjs +62 -15
- package/skills/reverse-engineer-anything/SKILL.md +21 -7
- package/skills/reverse-engineer-anything/references/android-applications.md +3 -1
- package/skills/reverse-engineer-anything/references/javascript-applications.md +44 -1
- package/skills/reverse-engineer-anything/references/native-and-artifacts.md +30 -10
- package/dist/cli-runtime/ArtifactResourceScope-DQWTcUwE.js +0 -114
- package/dist/cli-runtime/ClientConfigPath-c6jr6INc.js +0 -36
- package/dist/cli-runtime/IdaConfiguration-CtGP7EKo.js +0 -1094
- package/dist/cli-runtime/JebMcpEndpoint-DUytrn5G.js +0 -428
- package/dist/cli-runtime/MacHopperPaths-CwL5lYPX.js +0 -434
- package/dist/cli-runtime/OwnedCommand-Cj9GhmPR.js +0 -112
- package/dist/cli-runtime/RegularFile-B_6KPCNQ.js +0 -139
- package/dist/cli-runtime/RegularFileRead-DVlC5faM.js +0 -125
- package/dist/cli-runtime/analysisErrorPresentation-DGt7TdsH.js +0 -497
- package/dist/cli-runtime/application__javascript__ElectronObservationService-DEsR8KDN.js +0 -63
- package/dist/cli-runtime/artifactOperationError-B7n03FbD.js +0 -27
- package/dist/cli-runtime/browserObservationError-Dx6xRTjb.js +0 -40
- package/dist/cli-runtime/cliResultOutput-DsRMI8CJ.js +0 -780
- package/dist/cli-runtime/mcpStartupPolicy-CVVSOmRc.js +0 -21
- package/dist/cli-runtime/propertyListKeys-G8e74YWb.js +0 -248
- package/dist/cli-runtime/providerAdapterError-DAjhICdr.js +0 -25
- package/dist/cli-runtime/readFileHandleChunks-dp60iZ6v.js +0 -38
- package/dist/hopper/HopperRegexWorker.js +0 -27
- package/dist/mcp/ArtifactProviderMetadata-b7pOK5_t.js +0 -76
- package/dist/mcp/ArtifactResourceScope-P3tq5z8Z.js +0 -162
- package/dist/mcp/BoundedFileBytes-DuczXiQZ.js +0 -68
- package/dist/mcp/CdpTargetSession-BsPoKhEU.js +0 -86
- package/dist/mcp/ProcedureAddressResolution-CQpuwm1h.js +0 -19
- package/dist/mcp/analysisErrorCore-DXRTvF_m.js +0 -235
- package/dist/mcp/artifactOperationError-CkHMMaf7.js +0 -27
- package/dist/mcp/digests-BFoWUT_-.js +0 -223
- package/dist/mcp/propertyListKeys-DD25WsjI.js +0 -553
- package/dist/mcp/providerAdapterError-sDxToNal.js +0 -25
- package/dist/mcp/unicodeCodePointOrder-BezCbTpg.js +0 -26
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { assertArtifactReadActive } from "./ArtifactFileOperation.js";
|
|
1
2
|
import { lstat } from "node:fs/promises";
|
|
2
3
|
import { Readable } from "node:stream";
|
|
3
4
|
import { XcrunCommandRunner, } from "../native/CommandRunner.js";
|
|
@@ -8,7 +9,7 @@ import { readMachoImage } from "./apple/MachoLoadCommandReader.js";
|
|
|
8
9
|
import { ArtifactReaderFailure, copyArtifactEntry, sameArtifactEntry, } from "./ArtifactReader.js";
|
|
9
10
|
import { streamChunkToBuffer } from "./StreamBytes.js";
|
|
10
11
|
import { NonRegularFileReadError, RegularFileAdmissionFailure, openRegularFile, sameRegularFileState, } from "../filesystem/RegularFile.js";
|
|
11
|
-
import {
|
|
12
|
+
import { readArtifactFileChunks } from "./readArtifactFileChunks.js";
|
|
12
13
|
/** Read-only universal Mach-O slice reader backed by native lipo metadata. */
|
|
13
14
|
export class MachOSliceArtifactReader {
|
|
14
15
|
path;
|
|
@@ -156,7 +157,9 @@ export class MachOSliceArtifactReader {
|
|
|
156
157
|
}
|
|
157
158
|
async open(entry, signal) {
|
|
158
159
|
if (signal?.aborted === true)
|
|
159
|
-
return Promise.reject(new ArtifactReaderFailure("cancelled", "Mach-O slice read cancelled"
|
|
160
|
+
return Promise.reject(new ArtifactReaderFailure("cancelled", "Mach-O slice read cancelled", {
|
|
161
|
+
cause: signal.reason,
|
|
162
|
+
}));
|
|
160
163
|
const produced = this.#entries.get(entry.adapterKey);
|
|
161
164
|
if (produced === undefined || !sameArtifactEntry(entry, produced))
|
|
162
165
|
throw new ArtifactReaderFailure("integrity", "Mach-O slice entry metadata does not match this reader's inventory");
|
|
@@ -174,34 +177,88 @@ export class MachOSliceArtifactReader {
|
|
|
174
177
|
if (!Number.isSafeInteger(offset + size) ||
|
|
175
178
|
offset + size > source.initial.size)
|
|
176
179
|
throw new ArtifactReaderFailure("integrity", `Mach-O slice range is outside the artifact: ${entry.path}`);
|
|
177
|
-
const sourceStream =
|
|
180
|
+
const sourceStream = readArtifactFileChunks(source.handle, {
|
|
178
181
|
start: offset,
|
|
179
182
|
end: offset + size - 1,
|
|
180
183
|
...(signal === undefined ? {} : { signal }),
|
|
181
184
|
});
|
|
182
185
|
const verifySource = () => this.#verifySource(source);
|
|
183
|
-
|
|
184
|
-
|
|
186
|
+
let validatingSource = false;
|
|
187
|
+
const completionFailure = () => {
|
|
188
|
+
const coverage = sourceStream.readCoverage();
|
|
189
|
+
if (coverage.kind !== "complete")
|
|
190
|
+
return new ArtifactReaderFailure("integrity", `Mach-O slice read coverage is incomplete: ${entry.path}`);
|
|
191
|
+
if (coverage.bytes !== BigInt(size))
|
|
192
|
+
return new ArtifactReaderFailure("integrity", `Mach-O slice size disagrees with lipo metadata: ${entry.path}`);
|
|
193
|
+
if (signal?.aborted)
|
|
194
|
+
return new ArtifactReaderFailure("cancelled", "Mach-O slice read cancelled", { cause: signal.reason });
|
|
195
|
+
return undefined;
|
|
196
|
+
};
|
|
197
|
+
const output = Readable.from((async function* () {
|
|
185
198
|
try {
|
|
186
199
|
for await (const raw of sourceStream) {
|
|
187
200
|
const chunk = streamChunkToBuffer(raw);
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
201
|
+
if (sourceStream.readCoverage().kind === "complete" &&
|
|
202
|
+
signal?.aborted) {
|
|
203
|
+
const failure = completionFailure();
|
|
204
|
+
if (failure !== undefined)
|
|
205
|
+
throw failure;
|
|
206
|
+
}
|
|
191
207
|
yield chunk;
|
|
192
208
|
}
|
|
193
209
|
}
|
|
194
210
|
catch (cause) {
|
|
195
211
|
if (cause instanceof ArtifactReaderFailure)
|
|
196
212
|
throw cause;
|
|
197
|
-
if (signal?.aborted === true)
|
|
198
|
-
throw new ArtifactReaderFailure("cancelled", "Mach-O slice read cancelled", { cause });
|
|
199
213
|
throw new ArtifactReaderFailure("integrity", `Could not read Mach-O slice range: ${entry.path}`, { cause });
|
|
200
214
|
}
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
215
|
+
validatingSource = true;
|
|
216
|
+
const failure = completionFailure();
|
|
217
|
+
if (failure !== undefined)
|
|
218
|
+
throw failure;
|
|
219
|
+
try {
|
|
220
|
+
await verifySource();
|
|
221
|
+
assertArtifactReadActive(signal);
|
|
222
|
+
}
|
|
223
|
+
finally {
|
|
224
|
+
validatingSource = false;
|
|
225
|
+
}
|
|
204
226
|
})());
|
|
227
|
+
const onSourceError = (cause) => {
|
|
228
|
+
const completedCancellation = cause instanceof ArtifactReaderFailure &&
|
|
229
|
+
cause.reason === "cancelled" &&
|
|
230
|
+
sourceStream.readCoverage().kind === "complete" &&
|
|
231
|
+
!validatingSource
|
|
232
|
+
? completionFailure()
|
|
233
|
+
: undefined;
|
|
234
|
+
output.destroy(completedCancellation ??
|
|
235
|
+
(cause instanceof ArtifactReaderFailure
|
|
236
|
+
? cause
|
|
237
|
+
: new ArtifactReaderFailure("integrity", `Could not read Mach-O slice range: ${entry.path}`, { cause })));
|
|
238
|
+
};
|
|
239
|
+
sourceStream.on("error", onSourceError);
|
|
240
|
+
sourceStream.once("close", () => sourceStream.removeListener("error", onSourceError));
|
|
241
|
+
const onAbort = () => {
|
|
242
|
+
if (sourceStream.readCoverage().kind === "complete" &&
|
|
243
|
+
(sourceStream.errored === null ||
|
|
244
|
+
(sourceStream.errored instanceof ArtifactReaderFailure &&
|
|
245
|
+
sourceStream.errored.reason === "cancelled")) &&
|
|
246
|
+
!validatingSource &&
|
|
247
|
+
!output.destroyed) {
|
|
248
|
+
const failure = completionFailure();
|
|
249
|
+
if (failure !== undefined)
|
|
250
|
+
output.destroy(failure);
|
|
251
|
+
}
|
|
252
|
+
};
|
|
253
|
+
signal?.addEventListener("abort", onAbort, { once: true });
|
|
254
|
+
output.once("close", () => {
|
|
255
|
+
signal?.removeEventListener("abort", onAbort);
|
|
256
|
+
if (!sourceStream.destroyed)
|
|
257
|
+
sourceStream.destroy();
|
|
258
|
+
});
|
|
259
|
+
if (signal?.aborted)
|
|
260
|
+
onAbort();
|
|
261
|
+
return output;
|
|
205
262
|
}
|
|
206
263
|
provenance() {
|
|
207
264
|
return this.#command === undefined ? [] : [structuredClone(this.#command)];
|
|
@@ -1,8 +1,11 @@
|
|
|
1
|
+
import { regularFileCancellation } from "../filesystem/OwnedRegularFile.js";
|
|
1
2
|
import { mkdtemp, realpath, rm } from "node:fs/promises";
|
|
2
3
|
import { tmpdir } from "node:os";
|
|
3
4
|
import { basename, join } from "node:path";
|
|
4
5
|
import { ArtifactReaderFailure, } from "./ArtifactReader.js";
|
|
5
6
|
import { DirectoryArtifactReader } from "./DirectoryArtifactReader.js";
|
|
7
|
+
import { NonRegularFileReadError, RegularFileAdmissionFailure, openRegularFile, } from "../filesystem/RegularFile.js";
|
|
8
|
+
import { OwnedFileHandle } from "../filesystem/OwnedFileHandle.js";
|
|
6
9
|
import { execFileOutput, execFileOutputFailure, } from "../process/ExecFileOutput.js";
|
|
7
10
|
import { parseNativeDmgAttachOutput, parseNativeDmgInfo, resolveNativeDmgOwnership, } from "./NativeDmgOwnership.js";
|
|
8
11
|
const HDIUTIL_COMMAND_TIMEOUT_MS = 120_000;
|
|
@@ -14,12 +17,14 @@ class NativeDmgCommandFailure extends ArtifactReaderFailure {
|
|
|
14
17
|
stdout;
|
|
15
18
|
processNotStarted;
|
|
16
19
|
verifyDiagnostic;
|
|
20
|
+
unrecognizedImage;
|
|
17
21
|
exitCode;
|
|
18
22
|
constructor(failure, message, stdout, options) {
|
|
19
23
|
super(failure.reason, message, options?.cause === undefined ? undefined : { cause: options.cause });
|
|
20
24
|
this.stdout = stdout;
|
|
21
25
|
this.processNotStarted = options?.processNotStarted ?? false;
|
|
22
26
|
this.verifyDiagnostic = failure.verifyDiagnostic;
|
|
27
|
+
this.unrecognizedImage = failure.unrecognizedImage ?? false;
|
|
23
28
|
this.exitCode = options?.exitCode ?? null;
|
|
24
29
|
}
|
|
25
30
|
}
|
|
@@ -70,6 +75,7 @@ export class NativeDmgArtifactReader {
|
|
|
70
75
|
#closed = false;
|
|
71
76
|
#closePromise;
|
|
72
77
|
#activeDirectoryOperations = new Set();
|
|
78
|
+
#verificationProbeHandle;
|
|
73
79
|
constructor(path, environment, host) {
|
|
74
80
|
this.path = path;
|
|
75
81
|
if (process.platform !== "darwin" && host === undefined)
|
|
@@ -126,6 +132,7 @@ export class NativeDmgArtifactReader {
|
|
|
126
132
|
async #closeOwnedResources() {
|
|
127
133
|
await this.#initialization?.catch(() => undefined);
|
|
128
134
|
await Promise.allSettled(this.#activeDirectoryOperations);
|
|
135
|
+
await this.#closeVerificationProbeHandle();
|
|
129
136
|
await this.#closeMountedDirectory();
|
|
130
137
|
let detachFailure = await this.#detachOwnedDevices();
|
|
131
138
|
if (this.#devices.length === 0 &&
|
|
@@ -160,6 +167,18 @@ export class NativeDmgArtifactReader {
|
|
|
160
167
|
},
|
|
161
168
|
});
|
|
162
169
|
}
|
|
170
|
+
async #closeVerificationProbeHandle() {
|
|
171
|
+
const owner = this.#verificationProbeHandle;
|
|
172
|
+
if (owner === undefined)
|
|
173
|
+
return;
|
|
174
|
+
try {
|
|
175
|
+
await owner.close();
|
|
176
|
+
this.#verificationProbeHandle = undefined;
|
|
177
|
+
}
|
|
178
|
+
catch (cause) {
|
|
179
|
+
throw ArtifactReaderFailure.withCleanup(cause, ArtifactReaderFailure.cleanupObservation(cause, `DMG verification target descriptor ${this.path}`));
|
|
180
|
+
}
|
|
181
|
+
}
|
|
163
182
|
async #detachOwnedDevices() {
|
|
164
183
|
let detachFailure = await this.#reconcileAttachState();
|
|
165
184
|
let remainingDevices = [];
|
|
@@ -336,8 +355,7 @@ export class NativeDmgArtifactReader {
|
|
|
336
355
|
const arguments_ = ["verify", this.path];
|
|
337
356
|
const deadline = performance.now() + HDIUTIL_COMMAND_TIMEOUT_MS;
|
|
338
357
|
for (let attempt = 0;; attempt += 1) {
|
|
339
|
-
|
|
340
|
-
throw new NativeDmgCommandFailure({ reason: "cancelled" }, "DMG operation cancelled", "", { cause: signal.reason });
|
|
358
|
+
this.#throwIfVerificationCancelled(signal);
|
|
341
359
|
try {
|
|
342
360
|
await runChecked(this.host, arguments_, signal, {
|
|
343
361
|
timeoutMs: Math.max(1, Math.ceil(deadline - performance.now())),
|
|
@@ -349,9 +367,22 @@ export class NativeDmgArtifactReader {
|
|
|
349
367
|
if (!(cause instanceof NativeDmgCommandFailure))
|
|
350
368
|
throw cause;
|
|
351
369
|
this.#provenance.push(command(arguments_, ["read"], cause.exitCode));
|
|
370
|
+
if (cause.unrecognizedImage) {
|
|
371
|
+
const unreadable = await this.#isUnreadableTarget(signal, cause);
|
|
372
|
+
this.#throwIfVerificationCancelled(signal);
|
|
373
|
+
if (unreadable)
|
|
374
|
+
throw new NativeDmgCommandFailure({ reason: "io" }, cause.message, cause.stdout, {
|
|
375
|
+
cause: cause.cause,
|
|
376
|
+
...(cause.exitCode === null
|
|
377
|
+
? {}
|
|
378
|
+
: { exitCode: cause.exitCode }),
|
|
379
|
+
});
|
|
380
|
+
}
|
|
352
381
|
const delayMs = VERIFY_SETTLE_DELAYS_MS[attempt];
|
|
353
|
-
// Retry only the producer's explicit transient diagnostic,
|
|
354
|
-
|
|
382
|
+
// Retry only the producer's explicit transient diagnostic, or a localized
|
|
383
|
+
// refusal of a readable target that may be the same, before any mount.
|
|
384
|
+
if ((cause.verifyDiagnostic !== "Resource temporarily unavailable" &&
|
|
385
|
+
!cause.unrecognizedImage) ||
|
|
355
386
|
delayMs === undefined ||
|
|
356
387
|
deadline - performance.now() <= delayMs)
|
|
357
388
|
throw cause;
|
|
@@ -398,6 +429,52 @@ export class NativeDmgArtifactReader {
|
|
|
398
429
|
this.#devices = [];
|
|
399
430
|
return "none";
|
|
400
431
|
}
|
|
432
|
+
#cancelledVerification(cause) {
|
|
433
|
+
return new NativeDmgCommandFailure({ reason: "cancelled" }, "DMG operation cancelled", "", { cause });
|
|
434
|
+
}
|
|
435
|
+
#throwIfVerificationCancelled(signal) {
|
|
436
|
+
if (signal?.aborted === true)
|
|
437
|
+
throw this.#cancelledVerification(signal.reason);
|
|
438
|
+
}
|
|
439
|
+
async #isUnreadableTarget(signal, primaryFailure) {
|
|
440
|
+
let handle;
|
|
441
|
+
try {
|
|
442
|
+
handle = await openRegularFile(this.path, {
|
|
443
|
+
symlinks: "follow",
|
|
444
|
+
...(signal === undefined ? {} : { signal }),
|
|
445
|
+
});
|
|
446
|
+
}
|
|
447
|
+
catch (cause) {
|
|
448
|
+
if (cause instanceof RegularFileAdmissionFailure) {
|
|
449
|
+
this.#verificationProbeHandle = cause.owner;
|
|
450
|
+
const cancellation = regularFileCancellation(cause.cause);
|
|
451
|
+
const failure = cancellation === undefined
|
|
452
|
+
? primaryFailure
|
|
453
|
+
: this.#cancelledVerification(cancellation.reason);
|
|
454
|
+
throw ArtifactReaderFailure.withCleanup(failure, ArtifactReaderFailure.cleanupObservation(cause.cleanupCause, `DMG verification target descriptor ${this.path}`));
|
|
455
|
+
}
|
|
456
|
+
const cancellation = regularFileCancellation(cause);
|
|
457
|
+
if (cancellation !== undefined)
|
|
458
|
+
throw this.#cancelledVerification(cancellation.reason);
|
|
459
|
+
if (cause instanceof NonRegularFileReadError)
|
|
460
|
+
return false;
|
|
461
|
+
return classifyCommandFailure(cause, undefined).reason === "io";
|
|
462
|
+
}
|
|
463
|
+
const owner = new OwnedFileHandle(handle);
|
|
464
|
+
this.#verificationProbeHandle = owner;
|
|
465
|
+
try {
|
|
466
|
+
await owner.close();
|
|
467
|
+
this.#verificationProbeHandle = undefined;
|
|
468
|
+
}
|
|
469
|
+
catch (cause) {
|
|
470
|
+
throw ArtifactReaderFailure.withCleanup(signal?.aborted === true
|
|
471
|
+
? this.#cancelledVerification(signal.reason)
|
|
472
|
+
: primaryFailure, ArtifactReaderFailure.cleanupObservation(cause, `DMG verification target descriptor ${this.path}`));
|
|
473
|
+
}
|
|
474
|
+
if (signal?.aborted === true)
|
|
475
|
+
throw this.#cancelledVerification(signal.reason);
|
|
476
|
+
return false;
|
|
477
|
+
}
|
|
401
478
|
}
|
|
402
479
|
const failureMessage = (cause) => cause instanceof Error ? cause.message : String(cause);
|
|
403
480
|
const processNotStarted = (cause) => {
|
|
@@ -496,11 +573,7 @@ const classifyCommandFailure = (cause, operation) => {
|
|
|
496
573
|
if (typeof code === "number" || typeof exitCode === "number") {
|
|
497
574
|
if (operation !== "verify")
|
|
498
575
|
return { reason: "unavailable" };
|
|
499
|
-
|
|
500
|
-
return {
|
|
501
|
-
reason: verifyFailureReason(diagnostic),
|
|
502
|
-
...(diagnostic === undefined ? {} : { verifyDiagnostic: diagnostic }),
|
|
503
|
-
};
|
|
576
|
+
return classifyVerifyFailure(processOutput(cause, "stdout"), processOutput(cause, "stderr"));
|
|
504
577
|
}
|
|
505
578
|
if (code === "ENOENT") {
|
|
506
579
|
const syscall = Reflect.get(cause, "syscall");
|
|
@@ -522,6 +595,18 @@ const classifyCommandFailure = (cause, operation) => {
|
|
|
522
595
|
return { reason: "io" };
|
|
523
596
|
return { reason: "unavailable" };
|
|
524
597
|
};
|
|
598
|
+
const classifyVerifyFailure = (stdout, stderr) => {
|
|
599
|
+
const diagnostic = verifyFailureDiagnostic(stdout, stderr);
|
|
600
|
+
const reason = verifyFailureReason(diagnostic);
|
|
601
|
+
const untranslated = reason === undefined
|
|
602
|
+
? untranslatedVerifyFailure(stdout, stderr)
|
|
603
|
+
: undefined;
|
|
604
|
+
return {
|
|
605
|
+
...untranslated,
|
|
606
|
+
reason: reason ?? untranslated?.reason ?? "unavailable",
|
|
607
|
+
...(diagnostic === undefined ? {} : { verifyDiagnostic: diagnostic }),
|
|
608
|
+
};
|
|
609
|
+
};
|
|
525
610
|
const verifyFailureReason = (diagnostic) => {
|
|
526
611
|
switch (diagnostic) {
|
|
527
612
|
// hdiutil follows AppleLanguages, so en-GB and en-AU spell it "recognised".
|
|
@@ -535,18 +620,32 @@ const verifyFailureReason = (diagnostic) => {
|
|
|
535
620
|
case "Permission denied":
|
|
536
621
|
case "Input/output error":
|
|
537
622
|
return "io";
|
|
538
|
-
|
|
623
|
+
case "Resource temporarily unavailable":
|
|
539
624
|
return "unavailable";
|
|
625
|
+
default:
|
|
626
|
+
return undefined;
|
|
540
627
|
}
|
|
541
628
|
};
|
|
542
629
|
const verifyFailureDiagnostic = (stdout, stderr) => {
|
|
543
630
|
const prefix = "hdiutil: verify failed - ";
|
|
544
|
-
return
|
|
545
|
-
.split(/\r?\n/u)
|
|
546
|
-
.map((line) => line.trim())
|
|
631
|
+
return outputLines(stdout, stderr)
|
|
547
632
|
.find((line) => line.startsWith(prefix))
|
|
548
633
|
?.slice(prefix.length);
|
|
549
634
|
};
|
|
635
|
+
// hdiutil localizes the trailing failure reason but not its own status lines.
|
|
636
|
+
const INVALID_CHECKSUM_LINE = /^hdiutil: verify: checksum of ".*" is INVALID$/u;
|
|
637
|
+
const UNRECOGNIZED_IMAGE_LINE = /^hdiutil: verify: unable to recognize ".*" as a disk image\./u;
|
|
638
|
+
const untranslatedVerifyFailure = (stdout, stderr) => {
|
|
639
|
+
const lines = outputLines(stdout, stderr);
|
|
640
|
+
if (lines.some((line) => INVALID_CHECKSUM_LINE.test(line)))
|
|
641
|
+
return { reason: "integrity" };
|
|
642
|
+
// Malformed, unreadable and transiently busy targets all produce this line;
|
|
643
|
+
// only the localized reason distinguishes them, so the cause stays unknown.
|
|
644
|
+
if (lines.some((line) => UNRECOGNIZED_IMAGE_LINE.test(line)))
|
|
645
|
+
return { reason: "unavailable", unrecognizedImage: true };
|
|
646
|
+
return undefined;
|
|
647
|
+
};
|
|
648
|
+
const outputLines = (stdout, stderr) => `${stdout}\n${stderr}`.split(/\r?\n/u).map((line) => line.trim());
|
|
550
649
|
const command = (arguments_, effects, exitCode = 0) => ({
|
|
551
650
|
tool: "/usr/bin/hdiutil",
|
|
552
651
|
arguments: [...arguments_],
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import { createHash } from "node:crypto";
|
|
2
2
|
import { constants } from "node:fs";
|
|
3
3
|
import { mkdir, open, readdir, realpath, } from "node:fs/promises";
|
|
4
|
-
import { basename, dirname, isAbsolute, join
|
|
4
|
+
import { basename, dirname, isAbsolute, join } from "node:path";
|
|
5
5
|
import { OwnedFileHandle } from "../filesystem/OwnedFileHandle.js";
|
|
6
6
|
import { streamChunkToBuffer } from "./StreamBytes.js";
|
|
7
7
|
import { ArtifactPathRegistry, destinationCaseCollisionMessage, normalizeArtifactPath, } from "./ArtifactPaths.js";
|
|
8
|
+
import { absoluteCallerPath } from "../filesystem/callerPath.js";
|
|
8
9
|
import { ArtifactReaderFailure } from "./ArtifactReader.js";
|
|
9
10
|
import { SafeOutputTreeCreationFailure } from "./SafeOutputTreeCreationFailure.js";
|
|
10
11
|
import { hashOutputFile } from "./SafeOutputTreeReadback.js";
|
|
@@ -44,7 +45,8 @@ export class SafeOutputTree {
|
|
|
44
45
|
static async create(outputRoot, platform = process.platform) {
|
|
45
46
|
if (!isAbsolute(outputRoot))
|
|
46
47
|
throw new ArtifactReaderFailure("path", "Extraction output root must be absolute");
|
|
47
|
-
|
|
48
|
+
// Path syntax follows the host; `platform` selects only the name policy.
|
|
49
|
+
const requested = absoluteCallerPath(outputRoot);
|
|
48
50
|
const name = basename(requested);
|
|
49
51
|
if (name === "." || name === "..")
|
|
50
52
|
throw new ArtifactReaderFailure("path", "Invalid extraction output root");
|
|
@@ -393,7 +395,7 @@ const normalizeDestinationPath = (relativePath, platform) => {
|
|
|
393
395
|
};
|
|
394
396
|
const abortIfNeeded = (signal) => {
|
|
395
397
|
if (signal?.aborted === true)
|
|
396
|
-
throw new ArtifactReaderFailure("cancelled", "Artifact extraction cancelled");
|
|
398
|
+
throw new ArtifactReaderFailure("cancelled", "Artifact extraction cancelled", { cause: signal.reason });
|
|
397
399
|
};
|
|
398
400
|
const isCancellationFailure = (cause) => cause instanceof ArtifactReaderFailure && cause.reason === "cancelled";
|
|
399
401
|
const isAlreadyExists = (cause) => cause instanceof Error && "code" in cause && cause.code === "EEXIST";
|
|
@@ -8,6 +8,7 @@ export class SafeOutputTreeCreationFailure extends ArtifactReaderFailure {
|
|
|
8
8
|
: new ArtifactReaderFailure("io", errorMessage(cause), { cause });
|
|
9
9
|
super(primary.reason, primary.message, {
|
|
10
10
|
cause: primary,
|
|
11
|
+
cancellation: primary.cancellation,
|
|
11
12
|
...(primary.cleanup === undefined ? {} : { cleanup: primary.cleanup }),
|
|
12
13
|
...(primary.partialObservation === undefined
|
|
13
14
|
? {}
|
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
import { createHash } from "node:crypto";
|
|
2
|
-
import {
|
|
2
|
+
import { readArtifactFileChunks } from "./readArtifactFileChunks.js";
|
|
3
|
+
import { assertArtifactReadActive } from "./ArtifactFileOperation.js";
|
|
3
4
|
import { streamChunkToBuffer } from "./StreamBytes.js";
|
|
4
5
|
import { ArtifactReaderFailure } from "./ArtifactReader.js";
|
|
5
6
|
import { assertFilePathIdentity, readFileIdentity, } from "./SafeOutputTreeIdentity.js";
|
|
6
7
|
/** Hash one retained readback descriptor and confirm it still names the output file. */
|
|
7
8
|
export const hashOutputFile = async (owner, path, identity, options) => {
|
|
9
|
+
assertArtifactReadActive(options.signal);
|
|
8
10
|
const admittedIdentity = await readFileIdentity(owner.handle, path);
|
|
9
11
|
await assertFilePathIdentity(path, identity);
|
|
10
12
|
if (admittedIdentity.dev !== identity.dev ||
|
|
@@ -12,22 +14,14 @@ export const hashOutputFile = async (owner, path, identity, options) => {
|
|
|
12
14
|
throw new ArtifactReaderFailure("path", `Extraction file identity changed: ${path}`);
|
|
13
15
|
const hash = createHash("sha256");
|
|
14
16
|
let bytes = 0;
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
if (bytes > options.maximum)
|
|
22
|
-
throw new ArtifactReaderFailure("integrity", "Readback exceeded the bytes written");
|
|
23
|
-
hash.update(chunk);
|
|
24
|
-
}
|
|
25
|
-
}
|
|
26
|
-
catch (cause) {
|
|
27
|
-
if (options.signal?.aborted === true)
|
|
28
|
-
throw new ArtifactReaderFailure("cancelled", "Artifact extraction cancelled", { cause });
|
|
29
|
-
throw cause;
|
|
17
|
+
for await (const raw of readArtifactFileChunks(owner.handle, options)) {
|
|
18
|
+
const chunk = streamChunkToBuffer(raw);
|
|
19
|
+
bytes += chunk.length;
|
|
20
|
+
if (bytes > options.maximum)
|
|
21
|
+
throw new ArtifactReaderFailure("integrity", "Readback exceeded the bytes written");
|
|
22
|
+
hash.update(chunk);
|
|
30
23
|
}
|
|
31
24
|
await assertFilePathIdentity(path, identity);
|
|
25
|
+
assertArtifactReadActive(options.signal);
|
|
32
26
|
return { sha256: hash.digest("hex"), bytes };
|
|
33
27
|
};
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { assertArtifactReadActive } from "./ArtifactFileOperation.js";
|
|
1
2
|
import { PassThrough } from "node:stream";
|
|
2
3
|
import { once } from "node:events";
|
|
3
4
|
import { ERR_AMBIGUOUS_ARCHIVE, ERR_BAD_FORMAT, ERR_CENTRAL_DIRECTORY_NOT_FOUND, ERR_ENCRYPTED_CENTRAL_DIRECTORY, ERR_ENTRY_DATA_OUT_OF_BOUNDS, ERR_EOCDR_LOCATOR_ZIP64_NOT_FOUND, ERR_EOCDR_NOT_FOUND, ERR_EXTRAFIELD_ZIP64_NOT_FOUND, ERR_INVALID_COMPRESSED_DATA, ERR_INVALID_CRC32, ERR_INVALID_UNCOMPRESSED_SIZE, ERR_LOCAL_FILE_HEADER_NOT_FOUND, ERR_OVERLAPPING_ENTRY, ERR_SPLIT_ZIP_FILE, ERR_UNSUPPORTED_COMPRESSION, ERR_UNSUPPORTED_ENCRYPTION, ERR_UNSUPPORTED_UINT64, Reader, ZipReader, } from "@zip.js/zip.js";
|
|
@@ -60,6 +61,10 @@ class NodeFileReader extends Reader {
|
|
|
60
61
|
if (handle === undefined)
|
|
61
62
|
throw new Error("ZIP reader is not initialized");
|
|
62
63
|
const readBytes = Math.min(length, this.size - index);
|
|
64
|
+
// A central-directory offset can point past EOF. Type that malformed ZIP
|
|
65
|
+
// read before a negative size reaches Buffer.alloc and becomes an I/O error.
|
|
66
|
+
if (readBytes < 0)
|
|
67
|
+
throw new ArtifactReaderFailure("format", `ZIP archive is malformed: read at ${index} extends beyond the ${this.size}-byte archive`);
|
|
63
68
|
if (this.maximumReadBytes !== undefined &&
|
|
64
69
|
readBytes > this.maximumReadBytes)
|
|
65
70
|
throw new ArtifactReaderFailure("limit", `ZIP metadata read requires ${readBytes} bytes, exceeding the ${this.maximumReadBytes}-byte read budget`);
|
|
@@ -104,10 +109,12 @@ export class ZipArtifactReader {
|
|
|
104
109
|
// A traversal owns its accounting, including overlapping or repeated passes.
|
|
105
110
|
let declaredFileBytes = 0;
|
|
106
111
|
for await (const entry of typedZipFailures(this.#reader.getEntriesGenerator({ decodeText: decodeZipEntryText }))) {
|
|
107
|
-
|
|
112
|
+
assertArtifactReadActive(signal);
|
|
108
113
|
// ZIP member identity is its directory occurrence, not its filename.
|
|
109
114
|
// Logical path uniqueness belongs to the artifact inventory boundary.
|
|
110
115
|
const metadata = projectZipEntry(entry, index++);
|
|
116
|
+
if (metadata === undefined)
|
|
117
|
+
continue;
|
|
111
118
|
// zip.js enforces each member's declared output size, so this sum bounds streamed work.
|
|
112
119
|
if (metadata.kind === "file" &&
|
|
113
120
|
!metadata.encrypted &&
|
|
@@ -131,7 +138,7 @@ export class ZipArtifactReader {
|
|
|
131
138
|
}
|
|
132
139
|
}
|
|
133
140
|
open(entry, signal) {
|
|
134
|
-
|
|
141
|
+
assertArtifactReadActive(signal);
|
|
135
142
|
const stored = this.#entries.get(entry.adapterKey);
|
|
136
143
|
if (stored === undefined || !sameArtifactEntry(entry, stored.metadata))
|
|
137
144
|
return Promise.reject(new ArtifactReaderFailure("integrity", "ZIP entry metadata does not match this reader's inventory"));
|
|
@@ -152,18 +159,35 @@ export class ZipArtifactReader {
|
|
|
152
159
|
}
|
|
153
160
|
}
|
|
154
161
|
const projectZipEntry = (entry, index) => {
|
|
155
|
-
const
|
|
162
|
+
const kind = isSymlink(entry)
|
|
163
|
+
? "symlink"
|
|
164
|
+
: entry.directory
|
|
165
|
+
? "directory"
|
|
166
|
+
: "file";
|
|
167
|
+
const sourcePath = zipEntryPath(entry);
|
|
168
|
+
const path = sourcePath.replace(/^(?:\.\/)+/u, "");
|
|
169
|
+
// Root directory markers carry no inventory occurrence. A file with this
|
|
170
|
+
// spelling is still passed to the shared path validator and rejected there.
|
|
171
|
+
if (kind === "directory" && (path === "" || path === "."))
|
|
172
|
+
return undefined;
|
|
156
173
|
return {
|
|
157
|
-
path
|
|
158
|
-
kind
|
|
159
|
-
declaredSize:
|
|
160
|
-
compressedSize:
|
|
174
|
+
path,
|
|
175
|
+
kind,
|
|
176
|
+
declaredSize: kind === "directory" ? null : entry.uncompressedSize,
|
|
177
|
+
compressedSize: kind === "directory" ? null : entry.compressedSize,
|
|
161
178
|
executable: entry.executable,
|
|
162
179
|
encrypted: entry.encrypted,
|
|
163
180
|
byteOffset: null,
|
|
164
181
|
declaredSha256: null,
|
|
165
182
|
unpacked: false,
|
|
166
|
-
limitations:
|
|
183
|
+
limitations: [
|
|
184
|
+
...(kind === "symlink" ? ["Archive symlink target was not read."] : []),
|
|
185
|
+
...(path === sourcePath
|
|
186
|
+
? []
|
|
187
|
+
: [
|
|
188
|
+
`ZIP member name ${JSON.stringify(sourcePath)} has a leading current-directory prefix omitted from its logical path.`,
|
|
189
|
+
]),
|
|
190
|
+
],
|
|
167
191
|
adapterKey: `zip-entry:${index}`,
|
|
168
192
|
};
|
|
169
193
|
};
|
|
@@ -221,7 +245,7 @@ const extractStream = (entry, signal) => {
|
|
|
221
245
|
});
|
|
222
246
|
const writable = new WritableStream({
|
|
223
247
|
write: async (chunk) => {
|
|
224
|
-
|
|
248
|
+
assertArtifactReadActive(signal);
|
|
225
249
|
if (!output.write(Buffer.from(chunk)))
|
|
226
250
|
await once(output, "drain", { signal: controller.signal });
|
|
227
251
|
},
|
|
@@ -237,7 +261,7 @@ const extractStream = (entry, signal) => {
|
|
|
237
261
|
signal: controller.signal,
|
|
238
262
|
checkSignature: true,
|
|
239
263
|
checkOverlappingEntry: true,
|
|
240
|
-
onprogress: () =>
|
|
264
|
+
onprogress: () => assertArtifactReadActive(signal),
|
|
241
265
|
})
|
|
242
266
|
.catch((cause) => output.destroy(toError(typedZipFailure(cause))));
|
|
243
267
|
return output;
|
|
@@ -286,8 +310,4 @@ async function* typedZipFailures(source) {
|
|
|
286
310
|
}
|
|
287
311
|
}
|
|
288
312
|
const isSymlink = (entry) => entry.unixMode !== undefined && (entry.unixMode & 0o170000) === 0o120000;
|
|
289
|
-
const abortIfNeeded = (signal) => {
|
|
290
|
-
if (signal?.aborted === true)
|
|
291
|
-
throw new ArtifactReaderFailure("cancelled", "ZIP operation cancelled");
|
|
292
|
-
};
|
|
293
313
|
const toError = (cause) => cause instanceof Error ? cause : new Error("ZIP extraction failed");
|
|
@@ -79,7 +79,9 @@ const collectAssetCatalogs = async (input) => {
|
|
|
79
79
|
let totalMetadataBytes = 0;
|
|
80
80
|
try {
|
|
81
81
|
for await (const entry of reader.entries(input.signal)) {
|
|
82
|
-
|
|
82
|
+
// Reader paths are `/`-separated; only an entry named exactly
|
|
83
|
+
// Assets.car is a compiled catalog, not e.g. NotAssets.car.
|
|
84
|
+
if (entry.path.split("/").at(-1) !== "Assets.car")
|
|
83
85
|
continue;
|
|
84
86
|
if (entry.kind !== "file") {
|
|
85
87
|
uninspected.push(`${entry.path} (${entry.kind})`);
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
import { createHash } from "node:crypto";
|
|
2
|
+
import { lstat } from "node:fs/promises";
|
|
3
|
+
import { isAbsolute, relative, sep } from "node:path";
|
|
4
|
+
import { NonRegularFileReadError, sameRegularFileState, } from "../../filesystem/RegularFile.js";
|
|
5
|
+
import { ArtifactReaderFailure, sameArtifactSourceIdentity, } from "../ArtifactReader.js";
|
|
6
|
+
import { assertArtifactReadActive, mapArtifactFileFailure, withArtifactRegularFile, } from "../ArtifactFileOperation.js";
|
|
7
|
+
import { readArtifactFileChunks } from "../readArtifactFileChunks.js";
|
|
8
|
+
import { hasMachoMagic, readMachoImage } from "./MachoLoadCommandReader.js";
|
|
9
|
+
/** One owner for dyld descriptor admission, physical identity and finalization. */
|
|
10
|
+
export class DylibFileAccess {
|
|
11
|
+
resources;
|
|
12
|
+
root;
|
|
13
|
+
signal;
|
|
14
|
+
constructor(resources, root, signal) {
|
|
15
|
+
this.resources = resources;
|
|
16
|
+
this.root = root;
|
|
17
|
+
this.signal = signal;
|
|
18
|
+
}
|
|
19
|
+
startsWithMachoMagic(entry) {
|
|
20
|
+
return this.#read(entry.adapterKey, async (file, initial) => {
|
|
21
|
+
if (!sameArtifactSourceIdentity(entry.sourceIdentity, initial))
|
|
22
|
+
throw changed(entry.adapterKey);
|
|
23
|
+
const bytes = new Uint8Array(4);
|
|
24
|
+
const { bytesRead } = await file.read(bytes, 0, bytes.length, 0);
|
|
25
|
+
return hasMachoMagic(bytes.subarray(0, bytesRead));
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
image(path) {
|
|
29
|
+
return this.#read(path, async (file, identity) => {
|
|
30
|
+
const size = Number(identity.size);
|
|
31
|
+
if (!Number.isSafeInteger(size))
|
|
32
|
+
throw new ArtifactReaderFailure("limit", `Mach-O file extent is not safely addressable: ${path}`);
|
|
33
|
+
const facts = await readMachoImage(async (offset, length) => {
|
|
34
|
+
assertArtifactReadActive(this.signal);
|
|
35
|
+
const bytes = new Uint8Array(Math.max(0, Math.min(length, size - offset)));
|
|
36
|
+
const { bytesRead } = await file.read(bytes, 0, bytes.length, offset);
|
|
37
|
+
assertArtifactReadActive(this.signal);
|
|
38
|
+
return bytes.subarray(0, bytesRead);
|
|
39
|
+
}, size);
|
|
40
|
+
return { facts, identity };
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
sha256(path, expected) {
|
|
44
|
+
return this.#read(path, async (file, initial) => {
|
|
45
|
+
if (expected !== undefined && !sameRegularFileState(expected, initial))
|
|
46
|
+
throw changed(path);
|
|
47
|
+
const hash = createHash("sha256");
|
|
48
|
+
// Admit the extent plus one byte to detect growth without following an
|
|
49
|
+
// actively appended file indefinitely. The descriptor remains owned.
|
|
50
|
+
const source = readArtifactFileChunks(file, {
|
|
51
|
+
end: initial.size,
|
|
52
|
+
signal: this.signal,
|
|
53
|
+
});
|
|
54
|
+
for await (const chunk of source)
|
|
55
|
+
hash.update(chunk);
|
|
56
|
+
const coverage = source.readCoverage();
|
|
57
|
+
if (coverage.kind !== "complete" || coverage.bytes !== initial.size)
|
|
58
|
+
throw changed(path);
|
|
59
|
+
return hash.digest("hex");
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
async #read(path, operation) {
|
|
63
|
+
try {
|
|
64
|
+
return await withArtifactRegularFile(path, this.resources, this.signal, async (file) => {
|
|
65
|
+
const initial = await file.stat({ bigint: true });
|
|
66
|
+
assertArtifactReadActive(this.signal);
|
|
67
|
+
const result = await operation(file, initial);
|
|
68
|
+
// Parsed headers, magic and digest must refer to the same physical
|
|
69
|
+
// version still selected by the pathname when the read completes.
|
|
70
|
+
const opened = await file.stat({ bigint: true });
|
|
71
|
+
const named = await lstat(path, { bigint: true });
|
|
72
|
+
if (!sameRegularFileState(initial, opened) ||
|
|
73
|
+
!sameRegularFileState(initial, named))
|
|
74
|
+
throw changed(path);
|
|
75
|
+
assertArtifactReadActive(this.signal);
|
|
76
|
+
return result;
|
|
77
|
+
});
|
|
78
|
+
}
|
|
79
|
+
catch (cause) {
|
|
80
|
+
throw classifyDylibReadFailure(this.root, cause);
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
/** Normalize dyld admission and permission facts inside their physical outcome. */
|
|
85
|
+
export const classifyDylibReadFailure = (root, cause) => mapArtifactFileFailure(cause, (primary) => {
|
|
86
|
+
if (primary instanceof NonRegularFileReadError)
|
|
87
|
+
return new ArtifactReaderFailure("format", `Dyld input is not a regular file: ${primary.path}`, { cause: primary });
|
|
88
|
+
if (primary instanceof Error &&
|
|
89
|
+
"code" in primary &&
|
|
90
|
+
(primary.code === "EACCES" || primary.code === "EPERM")) {
|
|
91
|
+
const path = "path" in primary && typeof primary.path === "string"
|
|
92
|
+
? primary.path
|
|
93
|
+
: undefined;
|
|
94
|
+
const display = path === undefined
|
|
95
|
+
? "a file in the analyzed root"
|
|
96
|
+
: deniedDisplayPath(root, path);
|
|
97
|
+
return new ArtifactReaderFailure("unavailable", `Permission denied (${primary.code}) reading ${display}`, { cause: primary });
|
|
98
|
+
}
|
|
99
|
+
return primary;
|
|
100
|
+
});
|
|
101
|
+
const deniedDisplayPath = (root, path) => {
|
|
102
|
+
const inside = relative(root, path);
|
|
103
|
+
const outside = isAbsolute(inside) || inside === ".." || inside.startsWith(`..${sep}`);
|
|
104
|
+
return inside === "" || outside ? path : inside;
|
|
105
|
+
};
|
|
106
|
+
const changed = (path) => new ArtifactReaderFailure("integrity", `${path} changed while its dyld load commands were traced`);
|