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,7 +1,10 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
|
+
import { isMachOFormat } from "../binaryTargetTypes.js";
|
|
2
3
|
import { providerSchema } from "../evidence.js";
|
|
3
4
|
import { isSwiftMangledSymbolName } from "../swiftSymbolClassification.js";
|
|
4
5
|
import { compareUnicodeCodePoints, compositeKey, } from "../unicodeCodePointOrder.js";
|
|
6
|
+
/** Targets admitted to the Apple byte reader; the reader validates slice support. */
|
|
7
|
+
export const isAppleDispatchMetadataTarget = (target) => target.kind === "executable" && isMachOFormat(target.format);
|
|
5
8
|
/** Objective-C method type. */
|
|
6
9
|
export const objcMethodTypeSchema = z.enum([
|
|
7
10
|
"instance",
|
|
@@ -99,6 +102,8 @@ export const nativeMetadataEvidenceSchema = z.strictObject({
|
|
|
99
102
|
description: z.string().min(1),
|
|
100
103
|
provider: providerSchema.optional(),
|
|
101
104
|
location: nativeMetadataLocationSchema,
|
|
105
|
+
/** Preserve a provider's source value when it does not establish a location. */
|
|
106
|
+
reported_address: z.string().optional(),
|
|
102
107
|
artifact_path: z.string().min(1).nullable().default(null),
|
|
103
108
|
artifact_sha256: z
|
|
104
109
|
.string()
|
|
@@ -190,7 +195,7 @@ export const relativePointerSchema = z.strictObject({
|
|
|
190
195
|
/** A raw Swift-mangled symbol when a provider has not decoded its metadata. */
|
|
191
196
|
export const swiftSymbolSchema = z.strictObject({
|
|
192
197
|
mangled_name: z.string().min(1),
|
|
193
|
-
address: z.string().min(1),
|
|
198
|
+
address: z.string().min(1).nullable(),
|
|
194
199
|
decode: nativeMetadataDecodeSchema,
|
|
195
200
|
evidence: z.array(nativeMetadataEvidenceSchema).min(1),
|
|
196
201
|
});
|
|
@@ -287,11 +292,12 @@ export const nativeDispatchMetadataResultSchema = z.strictObject({
|
|
|
287
292
|
});
|
|
288
293
|
/** Decode only facts visible in a provider's existing name inventory. */
|
|
289
294
|
export const inspectNativeDispatchMetadata = (names, maxRecords = 5_000) => {
|
|
290
|
-
const symbolEvidence = (
|
|
295
|
+
const symbolEvidence = (entry, address) => [
|
|
291
296
|
{
|
|
292
297
|
kind: "symbol",
|
|
293
|
-
description: `Provider symbol ${name}`,
|
|
298
|
+
description: `Provider symbol ${entry.name}`,
|
|
294
299
|
location: { address, file_offset: null },
|
|
300
|
+
...(address === null ? { reported_address: entry.address } : {}),
|
|
295
301
|
artifact_path: null,
|
|
296
302
|
artifact_sha256: null,
|
|
297
303
|
},
|
|
@@ -301,6 +307,7 @@ export const inspectNativeDispatchMetadata = (names, maxRecords = 5_000) => {
|
|
|
301
307
|
const swiftSymbols = [];
|
|
302
308
|
const examinedNames = names.slice(0, maxRecords);
|
|
303
309
|
for (const entry of examinedNames) {
|
|
310
|
+
const address = entry.address === "" ? null : entry.address;
|
|
304
311
|
const classMatch = /(?:OBJC_CLASS_|OBJC_METACLASS_)\$_([^\s]+)/u.exec(entry.name);
|
|
305
312
|
if (classMatch?.[1] !== undefined)
|
|
306
313
|
classNames.add(classMatch[1]);
|
|
@@ -312,19 +319,19 @@ export const inspectNativeDispatchMetadata = (names, maxRecords = 5_000) => {
|
|
|
312
319
|
class_name: methodMatch[2],
|
|
313
320
|
selector,
|
|
314
321
|
method_type: methodType,
|
|
315
|
-
implementation_address:
|
|
316
|
-
location: { address
|
|
322
|
+
implementation_address: address,
|
|
323
|
+
location: { address, file_offset: null },
|
|
317
324
|
decode: { status: "partial", reason: "symbol_name_only" },
|
|
318
|
-
evidence: symbolEvidence(entry
|
|
325
|
+
evidence: symbolEvidence(entry, address),
|
|
319
326
|
});
|
|
320
327
|
classNames.add(methodMatch[2]);
|
|
321
328
|
}
|
|
322
329
|
if (isSwiftMangledSymbolName(entry.name) || entry.name.startsWith("_Tt"))
|
|
323
330
|
swiftSymbols.push({
|
|
324
331
|
mangled_name: entry.name,
|
|
325
|
-
address
|
|
332
|
+
address,
|
|
326
333
|
decode: { status: "partial", reason: "mangled_symbol_not_demangled" },
|
|
327
|
-
evidence: symbolEvidence(entry
|
|
334
|
+
evidence: symbolEvidence(entry, address),
|
|
328
335
|
});
|
|
329
336
|
}
|
|
330
337
|
const methodsByClass = new Map();
|
|
@@ -11,6 +11,10 @@ const identity = z.discriminatedUnion("kind", [
|
|
|
11
11
|
location: range,
|
|
12
12
|
}),
|
|
13
13
|
]);
|
|
14
|
+
/** Hard ceiling on the caller-selected input read budget. */
|
|
15
|
+
export const MAX_INSPECT_PE_FILE_BYTES = 536870912;
|
|
16
|
+
/** Hard ceiling on the caller-selected resource-directory-entry budget. */
|
|
17
|
+
export const MAX_INSPECT_PE_DIRECTORY_ENTRIES = 65536;
|
|
14
18
|
/** Complete bounded inspection of a caller-selected PE image, without execution. */
|
|
15
19
|
export const inspectPeResourcesInputSchema = z.strictObject({
|
|
16
20
|
path: localPathStringSchema.describe("Absolute filesystem path to a PE image"),
|
|
@@ -18,7 +22,7 @@ export const inspectPeResourcesInputSchema = z.strictObject({
|
|
|
18
22
|
.number()
|
|
19
23
|
.int()
|
|
20
24
|
.min(64)
|
|
21
|
-
.max(
|
|
25
|
+
.max(MAX_INSPECT_PE_FILE_BYTES)
|
|
22
26
|
.default(67108864)
|
|
23
27
|
.describe("Maximum stable artifact bytes to read (default 64 MiB)"),
|
|
24
28
|
// Windows resource images carry thousands of entries: Windows 11 25H2
|
|
@@ -30,7 +34,7 @@ export const inspectPeResourcesInputSchema = z.strictObject({
|
|
|
30
34
|
.number()
|
|
31
35
|
.int()
|
|
32
36
|
.min(1)
|
|
33
|
-
.max(
|
|
37
|
+
.max(MAX_INSPECT_PE_DIRECTORY_ENTRIES)
|
|
34
38
|
.default(16384)
|
|
35
39
|
.describe("Maximum resource directory entries to examine; exceeding the budget fails without partial success"),
|
|
36
40
|
});
|
package/dist/domain/peMachine.js
CHANGED
|
@@ -13,6 +13,8 @@ const architectureForMachine = (machine) => {
|
|
|
13
13
|
}
|
|
14
14
|
return undefined;
|
|
15
15
|
};
|
|
16
|
+
/** The optional-header magic a machine's architecture requires: PE32+ for 64-bit, PE32 otherwise. */
|
|
17
|
+
export const peOptionalHeaderMagic = (architecture) => architecture === "x86_64" || architecture === "arm64" ? 0x20b : 0x10b;
|
|
16
18
|
/**
|
|
17
19
|
* ReadyToRun images compiled for a non-Windows OS store the COFF machine XORed
|
|
18
20
|
* with IMAGE_FILE_MACHINE_NATIVE_OS_OVERRIDE (dotnet/runtime
|
|
@@ -226,7 +226,8 @@ const applyTraceVerdict = (dimensions, specification, trace, captures) => {
|
|
|
226
226
|
const sources = new Set(specification.events.map(({ source }) => source));
|
|
227
227
|
const covered = dimensionsForTraceSources(sources);
|
|
228
228
|
// A different verdict names the failing events and observations; attribute
|
|
229
|
-
// it only to their dimensions
|
|
229
|
+
// it only to their dimensions; unrelated comparisons keep their own status,
|
|
230
|
+
// including unknown coverage and independently observed additions/removals.
|
|
230
231
|
const diagnosticSources = new Set([
|
|
231
232
|
...specification.events
|
|
232
233
|
.filter(({ id }) => trace.diagnostic?.event_ids.includes(id) === true)
|
|
@@ -243,8 +244,7 @@ const applyTraceVerdict = (dimensions, specification, trace, captures) => {
|
|
|
243
244
|
if (trace.verdict === "nonconforming")
|
|
244
245
|
return exact;
|
|
245
246
|
if (trace.verdict === "different")
|
|
246
|
-
return traceShowsDifference &&
|
|
247
|
-
(exact !== "unchanged" || attributed.has(dimension))
|
|
247
|
+
return traceShowsDifference && attributed.has(dimension)
|
|
248
248
|
? "changed"
|
|
249
249
|
: exact;
|
|
250
250
|
if (trace.verdict === "unknown" &&
|
|
@@ -28,7 +28,7 @@ export const traceCoversObservedDimension = (dimension, sources, left, right) =>
|
|
|
28
28
|
case "exit":
|
|
29
29
|
return sources.has("lifecycle");
|
|
30
30
|
case "filesystem":
|
|
31
|
-
return
|
|
31
|
+
return sources.has("filesystem");
|
|
32
32
|
case "process":
|
|
33
33
|
return sources.has("process");
|
|
34
34
|
}
|
|
@@ -75,29 +75,67 @@ const failure = (input) => ({
|
|
|
75
75
|
locations: [...input.locations],
|
|
76
76
|
},
|
|
77
77
|
});
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
78
|
+
/** Match variants once, retaining the best-prefix mismatch for attribution. */
|
|
79
|
+
const evaluateFiniteTrace = (ids, language) => {
|
|
80
|
+
let bestPrefix = -1;
|
|
81
|
+
const bestEventIds = new Set();
|
|
82
|
+
const bestLocationIndexes = new Set();
|
|
83
|
+
const recordMismatch = (offset, missing, unexpected) => {
|
|
84
|
+
if (offset > bestPrefix) {
|
|
85
|
+
bestPrefix = offset;
|
|
86
|
+
bestEventIds.clear();
|
|
87
|
+
bestLocationIndexes.clear();
|
|
88
|
+
}
|
|
89
|
+
if (offset !== bestPrefix)
|
|
90
|
+
return;
|
|
91
|
+
for (const eventId of missing)
|
|
92
|
+
bestEventIds.add(eventId);
|
|
93
|
+
for (const { id, index } of unexpected) {
|
|
94
|
+
bestEventIds.add(id);
|
|
95
|
+
bestLocationIndexes.add(index);
|
|
96
|
+
}
|
|
97
|
+
};
|
|
98
|
+
for (const variant of language.variants) {
|
|
82
99
|
let offset = 0;
|
|
83
|
-
let
|
|
100
|
+
let mismatched = false;
|
|
84
101
|
for (const token of variant.trace) {
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
102
|
+
const expected = typeof token === "string" ? [token] : token.unordered;
|
|
103
|
+
const actual = ids.slice(offset, offset + expected.length);
|
|
104
|
+
const remaining = new Map();
|
|
105
|
+
for (const eventId of expected)
|
|
106
|
+
remaining.set(eventId, (remaining.get(eventId) ?? 0) + 1);
|
|
107
|
+
const unexpected = [];
|
|
108
|
+
for (const [index, eventId] of actual.entries()) {
|
|
109
|
+
const count = remaining.get(eventId) ?? 0;
|
|
110
|
+
if (count === 0)
|
|
111
|
+
unexpected.push({ id: eventId, index: offset + index });
|
|
112
|
+
else if (count === 1)
|
|
113
|
+
remaining.delete(eventId);
|
|
114
|
+
else
|
|
115
|
+
remaining.set(eventId, count - 1);
|
|
116
|
+
}
|
|
117
|
+
const missing = [...remaining].flatMap(([eventId, count]) => Array.from({ length: count }, () => eventId));
|
|
118
|
+
if (missing.length > 0 ||
|
|
119
|
+
unexpected.length > 0 ||
|
|
120
|
+
actual.length < expected.length) {
|
|
121
|
+
recordMismatch(offset, missing, unexpected);
|
|
122
|
+
mismatched = true;
|
|
123
|
+
break;
|
|
90
124
|
}
|
|
91
|
-
|
|
92
|
-
const expected = [...token.unordered].sort();
|
|
93
|
-
if (canonicalTraceJson(actual) !== canonicalTraceJson(expected))
|
|
94
|
-
accepted = false;
|
|
95
|
-
offset += token.unordered.length;
|
|
125
|
+
offset += expected.length;
|
|
96
126
|
}
|
|
97
|
-
if (
|
|
98
|
-
|
|
127
|
+
if (mismatched)
|
|
128
|
+
continue;
|
|
129
|
+
if (offset === ids.length)
|
|
130
|
+
return { status: "pass", variant: variant.id };
|
|
131
|
+
const unexpected = ids[offset];
|
|
132
|
+
recordMismatch(offset, [], unexpected === undefined ? [] : [{ id: unexpected, index: offset }]);
|
|
99
133
|
}
|
|
100
|
-
return
|
|
134
|
+
return {
|
|
135
|
+
status: "fail",
|
|
136
|
+
eventIds: [...bestEventIds],
|
|
137
|
+
locationIndexes: [...bestLocationIndexes],
|
|
138
|
+
};
|
|
101
139
|
};
|
|
102
140
|
const collectRecords = (capture, sources) => {
|
|
103
141
|
const records = [];
|
|
@@ -278,20 +316,23 @@ const evaluateMatchedTrace = (trace, specification) => {
|
|
|
278
316
|
if (specification.language.kind === "partial_order")
|
|
279
317
|
return evaluatePartialOrder(trace, specification.language);
|
|
280
318
|
const ids = trace.rawTrace.map(({ event_id }) => event_id);
|
|
281
|
-
const
|
|
282
|
-
return
|
|
319
|
+
const evaluation = evaluateFiniteTrace(ids, specification.language);
|
|
320
|
+
return evaluation.status === "fail"
|
|
283
321
|
? failure({
|
|
284
322
|
kind: "trace",
|
|
285
323
|
message: "Observed events do not match any finite trace variant.",
|
|
286
|
-
eventIds:
|
|
287
|
-
locations:
|
|
324
|
+
eventIds: evaluation.eventIds,
|
|
325
|
+
locations: evaluation.locationIndexes.flatMap((index) => {
|
|
326
|
+
const location = trace.rawTrace[index]?.location;
|
|
327
|
+
return location === undefined ? [] : [location];
|
|
328
|
+
}),
|
|
288
329
|
rawTrace: trace.rawTrace,
|
|
289
330
|
})
|
|
290
331
|
: {
|
|
291
332
|
result: {
|
|
292
333
|
status: "pass",
|
|
293
|
-
matched_variant: variant,
|
|
294
|
-
satisfied_constraints: [`variant:${variant}`],
|
|
334
|
+
matched_variant: evaluation.variant,
|
|
335
|
+
satisfied_constraints: [`variant:${evaluation.variant}`],
|
|
295
336
|
raw_trace: trace.rawTrace,
|
|
296
337
|
},
|
|
297
338
|
diagnostic: null,
|
|
@@ -1,13 +1,17 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import { normalizeLineEndings } from "@xmldom/xmldom";
|
|
2
|
+
import { parseOpenStep } from "plist";
|
|
3
|
+
import { decodeXmlPropertyList } from "./propertyListXml.js";
|
|
4
|
+
import { UnknownPlistReal, createPlistNumberCollector, } from "./apple/plistNumbers.js";
|
|
3
5
|
import { MAX_PLIST_DEPTH } from "./apple/plistValue.js";
|
|
6
|
+
import { parseXmlDocument } from "./xmlDocument.js";
|
|
4
7
|
/** The dictionary key REA results cannot carry: validation strips it. */
|
|
5
8
|
const PROTOTYPE_KEY = "__proto__";
|
|
6
9
|
/** Limitation for results whose source plist held `__proto__` entries. */
|
|
7
10
|
export const omittedPrototypeKeysLimitation = (count) => count === null
|
|
8
11
|
? "Dictionary entries keyed __proto__ were omitted because REA results cannot represent that key."
|
|
9
12
|
: `${String(count)} dictionary ${count === 1 ? "entry" : "entries"} keyed __proto__ ${count === 1 ? "was" : "were"} omitted because REA results cannot represent that key.`;
|
|
10
|
-
|
|
13
|
+
/** Remove own `__proto__` entries, such as JSON.parse creates, and count them. */
|
|
14
|
+
export const omitPrototypeKeys = (value) => {
|
|
11
15
|
let omitted = 0;
|
|
12
16
|
const strip = (item) => {
|
|
13
17
|
if (Array.isArray(item))
|
|
@@ -15,10 +19,11 @@ const withoutKey = (value, key) => {
|
|
|
15
19
|
if (item === null ||
|
|
16
20
|
typeof item !== "object" ||
|
|
17
21
|
item instanceof Date ||
|
|
18
|
-
item instanceof Uint8Array
|
|
22
|
+
item instanceof Uint8Array ||
|
|
23
|
+
item instanceof UnknownPlistReal)
|
|
19
24
|
return item;
|
|
20
25
|
return Object.fromEntries(Object.entries(item).flatMap(([name, entry]) => {
|
|
21
|
-
if (name !==
|
|
26
|
+
if (name !== PROTOTYPE_KEY)
|
|
22
27
|
return [[name, strip(entry)]];
|
|
23
28
|
omitted += 1;
|
|
24
29
|
return [];
|
|
@@ -27,8 +32,6 @@ const withoutKey = (value, key) => {
|
|
|
27
32
|
const stripped = strip(value);
|
|
28
33
|
return { value: stripped, omittedPrototypeKeys: omitted };
|
|
29
34
|
};
|
|
30
|
-
/** Remove own `__proto__` entries, such as JSON.parse creates, and count them. */
|
|
31
|
-
export const omitPrototypeKeys = (value) => withoutKey(value, PROTOTYPE_KEY);
|
|
32
35
|
const XML_ENTITIES = {
|
|
33
36
|
amp: "&",
|
|
34
37
|
apos: "'",
|
|
@@ -49,32 +52,48 @@ export const decodeXmlText = (text) => text.replace(/&(?:#x([\da-f]+)|#(\d+)|([a
|
|
|
49
52
|
: undefined;
|
|
50
53
|
if (codePoint !== undefined)
|
|
51
54
|
return codePoint <= 0x10ffff ? String.fromCodePoint(codePoint) : entity;
|
|
52
|
-
return
|
|
55
|
+
return name !== undefined && Object.hasOwn(XML_ENTITIES, name)
|
|
56
|
+
? XML_ENTITIES[name]
|
|
57
|
+
: entity;
|
|
53
58
|
});
|
|
54
59
|
/**
|
|
55
|
-
* Decode
|
|
56
|
-
*
|
|
57
|
-
* counted so callers can report them instead of failing the whole document.
|
|
60
|
+
* Decode one validated XML DOM into values and numeric source facts.
|
|
61
|
+
* Entries keyed `__proto__` are omitted and counted at the same boundary.
|
|
58
62
|
*/
|
|
59
63
|
export const parseXmlPropertyList = (text) => {
|
|
60
64
|
// Preserve the pinned decoder's existing OpenStep autodetection, also used
|
|
61
|
-
// by app Info.plist resolution.
|
|
65
|
+
// by app Info.plist resolution.
|
|
62
66
|
const first = text.trimStart()[0];
|
|
63
67
|
if (first === "{" || first === "(") {
|
|
64
|
-
|
|
65
|
-
|
|
68
|
+
// The pinned decoder assigns a `__proto__` key to the object prototype, so
|
|
69
|
+
// the entry is gone before the decoded value can be counted. Count keys in
|
|
70
|
+
// the source instead; the rebuild still drops any prototype it replaced.
|
|
71
|
+
const prototypeKeys = scanOpenStep(text);
|
|
72
|
+
return {
|
|
73
|
+
value: omitPrototypeKeys(parseOpenStep(text)).value,
|
|
74
|
+
numberLiterals: createPlistNumberCollector().result(true),
|
|
75
|
+
omittedPrototypeKeys: prototypeKeys,
|
|
76
|
+
};
|
|
66
77
|
}
|
|
67
78
|
// Normalize only the literal line endings the pinned decoder normalizes.
|
|
68
|
-
//
|
|
69
|
-
//
|
|
79
|
+
// Decode this DOM directly so character references are never reserialized
|
|
80
|
+
// into literal line endings and normalized a second time.
|
|
70
81
|
const normalized = normalizeLineEndings(text);
|
|
71
|
-
//
|
|
72
|
-
//
|
|
73
|
-
|
|
74
|
-
|
|
82
|
+
// Strict syntax owns well-formedness before value interpretation. Reuse the
|
|
83
|
+
// same DOM for depth, keys, values and number facts.
|
|
84
|
+
const parsed = parseXmlDocument(normalized, {
|
|
85
|
+
doctype: "allow",
|
|
86
|
+
lineEndings: "preserve",
|
|
87
|
+
});
|
|
88
|
+
if (!parsed.ok)
|
|
89
|
+
throw parsed.error;
|
|
90
|
+
const document = parsed.value;
|
|
75
91
|
assertXmlPlistDepthWithinLimit(document);
|
|
76
|
-
const
|
|
77
|
-
return
|
|
92
|
+
const decoded = decodeXmlPropertyList(document);
|
|
93
|
+
return {
|
|
94
|
+
...omitPrototypeKeys(decoded.value),
|
|
95
|
+
numberLiterals: decoded.numberLiterals,
|
|
96
|
+
};
|
|
78
97
|
};
|
|
79
98
|
/** Consume only the punctuation expected between the pinned decoder's values. */
|
|
80
99
|
const consumeOpenStepSeparator = (parent, character) => {
|
|
@@ -93,8 +112,12 @@ const consumeOpenStepSeparator = (parent, character) => {
|
|
|
93
112
|
const admitsOpenStepCloser = (parent, character) => parent?.end === character &&
|
|
94
113
|
parent.next !== "equals" &&
|
|
95
114
|
!(parent.end === "}" && parent.next === "value");
|
|
96
|
-
/**
|
|
97
|
-
|
|
115
|
+
/**
|
|
116
|
+
* Bound OpenStep value nesting before the pinned decoder recursively reads it,
|
|
117
|
+
* and count the dictionary keys that decode to `__proto__`.
|
|
118
|
+
*/
|
|
119
|
+
const scanOpenStep = (text) => {
|
|
120
|
+
let prototypeKeys = 0;
|
|
98
121
|
const containers = [];
|
|
99
122
|
const completeValue = () => {
|
|
100
123
|
const parent = containers.at(-1);
|
|
@@ -123,18 +146,21 @@ const assertOpenStepDepthWithinLimit = (text) => {
|
|
|
123
146
|
// diagnostics. A later deep suffix cannot change that failure into a limit.
|
|
124
147
|
if (character === "}" || character === ")") {
|
|
125
148
|
if (!admitsOpenStepCloser(parent, character))
|
|
126
|
-
return;
|
|
127
|
-
containers.pop();
|
|
149
|
+
return prototypeKeys;
|
|
150
|
+
const closed = containers.pop();
|
|
151
|
+
if (closed?.keyStart !== undefined &&
|
|
152
|
+
isOpenStepPrototypeKey(text.slice(closed.keyStart, cursor + 1)))
|
|
153
|
+
prototypeKeys += 1;
|
|
128
154
|
// parseOpenStep returns the first root value without reading trailing text.
|
|
129
155
|
if (containers.length === 0)
|
|
130
|
-
return;
|
|
156
|
+
return prototypeKeys;
|
|
131
157
|
completeValue();
|
|
132
158
|
cursor += 1;
|
|
133
159
|
continue;
|
|
134
160
|
}
|
|
135
161
|
const separator = consumeOpenStepSeparator(parent, character);
|
|
136
162
|
if (separator === "invalid")
|
|
137
|
-
return;
|
|
163
|
+
return prototypeKeys;
|
|
138
164
|
if (separator === "consumed") {
|
|
139
165
|
cursor += 1;
|
|
140
166
|
continue;
|
|
@@ -144,18 +170,44 @@ const assertOpenStepDepthWithinLimit = (text) => {
|
|
|
144
170
|
containers.push({
|
|
145
171
|
end: character === "{" ? "}" : ")",
|
|
146
172
|
next: character === "{" ? "key" : "value",
|
|
173
|
+
// A compound key is coerced to a string, e.g. `(__proto__)`.
|
|
174
|
+
...(parent?.next === "key" ? { keyStart: cursor } : {}),
|
|
147
175
|
});
|
|
148
176
|
cursor += 1;
|
|
149
177
|
continue;
|
|
150
178
|
}
|
|
151
179
|
const end = skipOpenStepScalar(text, cursor);
|
|
152
180
|
if (end === cursor)
|
|
153
|
-
return;
|
|
154
|
-
if (parent?.next
|
|
181
|
+
return prototypeKeys;
|
|
182
|
+
if (parent?.next === "key") {
|
|
183
|
+
if (isOpenStepPrototypeKey(text.slice(cursor, end)))
|
|
184
|
+
prototypeKeys += 1;
|
|
185
|
+
}
|
|
186
|
+
else
|
|
155
187
|
assertDepth();
|
|
156
188
|
cursor = end;
|
|
157
189
|
completeValue();
|
|
158
190
|
}
|
|
191
|
+
return prototypeKeys;
|
|
192
|
+
};
|
|
193
|
+
/**
|
|
194
|
+
* Whether one OpenStep key, scalar or compound, becomes the property name
|
|
195
|
+
* `__proto__` when the decoder assigns `obj[key]`. Plain strings compare
|
|
196
|
+
* directly; any other key is decoded by the pinned decoder itself and
|
|
197
|
+
* coerced to a property name the same way that assignment does.
|
|
198
|
+
*/
|
|
199
|
+
const isOpenStepPrototypeKey = (token) => {
|
|
200
|
+
if (!/^["({<]/u.test(token))
|
|
201
|
+
return token === PROTOTYPE_KEY;
|
|
202
|
+
if (token.startsWith('"') && !token.includes("\\"))
|
|
203
|
+
return token === `"${PROTOTYPE_KEY}"`;
|
|
204
|
+
try {
|
|
205
|
+
return String(parseOpenStep(token)) === PROTOTYPE_KEY;
|
|
206
|
+
}
|
|
207
|
+
catch {
|
|
208
|
+
// An unterminated token is the decoder's syntax error to report.
|
|
209
|
+
return false;
|
|
210
|
+
}
|
|
159
211
|
};
|
|
160
212
|
/** Skip grammar trivia without interpreting delimiter examples inside comments. */
|
|
161
213
|
const skipOpenStepTrivia = (text, cursor) => {
|
|
@@ -193,11 +245,11 @@ const skipOpenStepScalar = (text, start) => {
|
|
|
193
245
|
}
|
|
194
246
|
return cursor;
|
|
195
247
|
};
|
|
196
|
-
/** Elements whose children the
|
|
248
|
+
/** Elements whose children the plist value decoder visits recursively. */
|
|
197
249
|
const PLIST_CONTAINER_ELEMENTS = new Set(["plist", "dict", "array"]);
|
|
198
250
|
/**
|
|
199
251
|
* Reject XML plists nested deeper than the projection supports before any
|
|
200
|
-
* recursive value pass runs.
|
|
252
|
+
* recursive value pass runs. Value decoding and prototype omission recurse once
|
|
201
253
|
* per nesting level, so a deeply nested document exhausts the call stack
|
|
202
254
|
* before the projection limit can report the resource bound. The failure
|
|
203
255
|
* matches `projectPlistValue` so callers classify it as a limit failure.
|
|
@@ -232,40 +284,3 @@ const assertXmlPlistDepthWithinLimit = (document) => {
|
|
|
232
284
|
pending.push({ node: node.firstChild, depth: depth + 1 });
|
|
233
285
|
}
|
|
234
286
|
};
|
|
235
|
-
/** Locate keys with the same XML parser and first-child semantics as plist. */
|
|
236
|
-
const substitutePrototypeKeys = (text, document) => {
|
|
237
|
-
const keys = Array.from(document.getElementsByTagName("key"));
|
|
238
|
-
const decodedKeys = new Set(keys.map((key) => key.firstChild?.nodeValue));
|
|
239
|
-
let placeholder = "__rea_prototype_key__";
|
|
240
|
-
while (decodedKeys.has(placeholder))
|
|
241
|
-
placeholder = `_${placeholder}`;
|
|
242
|
-
const omitted = keys
|
|
243
|
-
.map((key) => key.firstChild)
|
|
244
|
-
.filter((node) => node?.nodeValue === PROTOTYPE_KEY);
|
|
245
|
-
if (omitted.length === 0)
|
|
246
|
-
return { substituted: text, placeholder };
|
|
247
|
-
// xmldom uses one-based locators in document order. Scan forward only to
|
|
248
|
-
// needed lines instead of retaining an offset for every source newline.
|
|
249
|
-
let line = 1;
|
|
250
|
-
let lineStart = 0;
|
|
251
|
-
const parts = [];
|
|
252
|
-
let cursor = 0;
|
|
253
|
-
for (const node of omitted) {
|
|
254
|
-
const nodeLine = node?.lineNumber;
|
|
255
|
-
const column = node?.columnNumber;
|
|
256
|
-
if (nodeLine === undefined || column === undefined)
|
|
257
|
-
throw new TypeError("XML plist key has no source location");
|
|
258
|
-
while (line < nodeLine) {
|
|
259
|
-
const newline = text.indexOf("\n", lineStart);
|
|
260
|
-
if (newline === -1)
|
|
261
|
-
throw new TypeError("XML plist key has an invalid source location");
|
|
262
|
-
lineStart = newline + 1;
|
|
263
|
-
line += 1;
|
|
264
|
-
}
|
|
265
|
-
const offset = lineStart + column - 1;
|
|
266
|
-
parts.push(text.slice(cursor, offset), `<![CDATA[${placeholder}]]>`);
|
|
267
|
-
cursor = offset;
|
|
268
|
-
}
|
|
269
|
-
parts.push(text.slice(cursor));
|
|
270
|
-
return { substituted: parts.join(""), placeholder };
|
|
271
|
-
};
|
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
import { UnknownPlistReal, createPlistNumberCollector, parsePlistIntegerLiteral, parsePlistNonFiniteRealLiteral, } from "./apple/plistNumbers.js";
|
|
2
|
+
/** Interpret an already validated, depth-bounded DOM, owning values and number facts together. */
|
|
3
|
+
export const decodeXmlPropertyList = (document) => {
|
|
4
|
+
const root = document.documentElement;
|
|
5
|
+
if (root?.nodeName !== "plist")
|
|
6
|
+
throw new TypeError("malformed document. First element should be <plist>");
|
|
7
|
+
const numbers = createPlistNumberCollector();
|
|
8
|
+
const requireContent = (node) => {
|
|
9
|
+
if (node.firstChild === null)
|
|
10
|
+
throw new TypeError(`Cannot parse "" as ${node.nodeName}`);
|
|
11
|
+
return node.firstChild;
|
|
12
|
+
};
|
|
13
|
+
const textNode = (node) => node.nodeType === node.TEXT_NODE;
|
|
14
|
+
const characterNode = (node) => textNode(node) || node.nodeType === node.CDATA_SECTION_NODE;
|
|
15
|
+
const content = (node, accepts) => {
|
|
16
|
+
let text = "";
|
|
17
|
+
let complete = true;
|
|
18
|
+
for (let child = node.firstChild; child !== null; child = child.nextSibling) {
|
|
19
|
+
if (accepts(child))
|
|
20
|
+
text += child.nodeValue ?? "";
|
|
21
|
+
else
|
|
22
|
+
complete = false;
|
|
23
|
+
}
|
|
24
|
+
return { text, complete };
|
|
25
|
+
};
|
|
26
|
+
const dictionaryKey = (node) => {
|
|
27
|
+
for (let child = node.firstChild; child !== null; child = child.nextSibling)
|
|
28
|
+
if (child.nodeType === child.ELEMENT_NODE)
|
|
29
|
+
return String(node.firstChild?.nodeValue ?? null);
|
|
30
|
+
return content(node, characterNode).text;
|
|
31
|
+
};
|
|
32
|
+
const members = function* (node) {
|
|
33
|
+
for (let child = node.firstChild; child !== null; child = child.nextSibling)
|
|
34
|
+
if (child.nodeType !== child.TEXT_NODE &&
|
|
35
|
+
child.nodeType !== child.CDATA_SECTION_NODE &&
|
|
36
|
+
child.nodeType !== child.COMMENT_NODE)
|
|
37
|
+
yield child;
|
|
38
|
+
};
|
|
39
|
+
const decode = (node) => {
|
|
40
|
+
switch (node.nodeName) {
|
|
41
|
+
case "plist":
|
|
42
|
+
return Array.from(members(node), decode);
|
|
43
|
+
case "array": {
|
|
44
|
+
const values = [];
|
|
45
|
+
for (const member of members(node)) {
|
|
46
|
+
const value = decode(member);
|
|
47
|
+
if (value !== null)
|
|
48
|
+
values.push(value);
|
|
49
|
+
}
|
|
50
|
+
return values;
|
|
51
|
+
}
|
|
52
|
+
case "dict": {
|
|
53
|
+
const entries = [];
|
|
54
|
+
let key;
|
|
55
|
+
for (const child of members(node)) {
|
|
56
|
+
if (key === undefined) {
|
|
57
|
+
if (child.nodeName !== "key")
|
|
58
|
+
throw new TypeError("Missing key while parsing <dict/>");
|
|
59
|
+
key = dictionaryKey(child);
|
|
60
|
+
}
|
|
61
|
+
else {
|
|
62
|
+
if (child.nodeName === "key")
|
|
63
|
+
throw new TypeError("Unexpected <key> while parsing <dict/>. Keys and values must alternate.");
|
|
64
|
+
entries.push([key, decode(child)]);
|
|
65
|
+
key = undefined;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
if (key !== undefined)
|
|
69
|
+
entries.push([key, ""]);
|
|
70
|
+
// Define own properties safely, including __proto__; the caller owns omission accounting.
|
|
71
|
+
return Object.fromEntries(entries);
|
|
72
|
+
}
|
|
73
|
+
case "key": {
|
|
74
|
+
// The pinned decoder also accepted key elements as scalars. Keep their
|
|
75
|
+
// first-child interpretation separate from dictionary key identities.
|
|
76
|
+
const value = node.firstChild === null ? "" : node.firstChild.nodeValue;
|
|
77
|
+
if (value === "__proto__")
|
|
78
|
+
throw new TypeError("__proto__ is not a scalar plist key");
|
|
79
|
+
return value;
|
|
80
|
+
}
|
|
81
|
+
case "string":
|
|
82
|
+
return content(node, characterNode).text;
|
|
83
|
+
case "integer": {
|
|
84
|
+
const first = requireContent(node);
|
|
85
|
+
const literal = content(node, textNode);
|
|
86
|
+
const exact = literal.complete
|
|
87
|
+
? parsePlistIntegerLiteral(literal.text)
|
|
88
|
+
: undefined;
|
|
89
|
+
if (exact === undefined) {
|
|
90
|
+
numbers.markIncomplete();
|
|
91
|
+
const partial = Number.parseInt(first.nodeValue ?? "", 10);
|
|
92
|
+
// An integer has no signed zero; keep -0 from reading as a real.
|
|
93
|
+
return !Number.isFinite(partial)
|
|
94
|
+
? new UnknownPlistReal()
|
|
95
|
+
: partial === 0
|
|
96
|
+
? 0
|
|
97
|
+
: partial;
|
|
98
|
+
}
|
|
99
|
+
numbers.integer(exact);
|
|
100
|
+
const decoded = Number(exact);
|
|
101
|
+
// Keep a finite integer's identity when it cannot fit even a Number
|
|
102
|
+
// approximation; otherwise it would be mislabeled as a non-finite real.
|
|
103
|
+
return Number.isFinite(decoded) ? decoded : exact;
|
|
104
|
+
}
|
|
105
|
+
case "real": {
|
|
106
|
+
requireContent(node);
|
|
107
|
+
const literal = content(node, characterNode);
|
|
108
|
+
if (!literal.complete)
|
|
109
|
+
numbers.markIncomplete();
|
|
110
|
+
// CFPropertyList spells NaN and the infinities; parseFloat would read
|
|
111
|
+
// the lowercase spellings as NaN and lose the kind and sign.
|
|
112
|
+
const known = literal.complete
|
|
113
|
+
? parsePlistNonFiniteRealLiteral(literal.text)
|
|
114
|
+
: undefined;
|
|
115
|
+
if (known !== undefined) {
|
|
116
|
+
numbers.real(known);
|
|
117
|
+
return known;
|
|
118
|
+
}
|
|
119
|
+
const value = Number.parseFloat(literal.text);
|
|
120
|
+
if (!Number.isFinite(value))
|
|
121
|
+
return new UnknownPlistReal();
|
|
122
|
+
if (literal.complete)
|
|
123
|
+
numbers.real(value);
|
|
124
|
+
return value;
|
|
125
|
+
}
|
|
126
|
+
case "data": {
|
|
127
|
+
const binary = atob(content(node, textNode).text.replace(/\s+/gu, ""));
|
|
128
|
+
return Uint8Array.from(binary, (character) => character.charCodeAt(0));
|
|
129
|
+
}
|
|
130
|
+
case "date": {
|
|
131
|
+
const value = requireContent(node).nodeValue;
|
|
132
|
+
return new Date(value === null ? 0 : value);
|
|
133
|
+
}
|
|
134
|
+
case "null":
|
|
135
|
+
return null;
|
|
136
|
+
case "true":
|
|
137
|
+
return true;
|
|
138
|
+
case "false":
|
|
139
|
+
return false;
|
|
140
|
+
default:
|
|
141
|
+
throw new TypeError(`Invalid PLIST tag ${node.nodeName}`);
|
|
142
|
+
}
|
|
143
|
+
};
|
|
144
|
+
const values = Array.from(members(root), decode);
|
|
145
|
+
return {
|
|
146
|
+
value: values.length === 1 ? values[0] : values,
|
|
147
|
+
numberLiterals: numbers.result(),
|
|
148
|
+
};
|
|
149
|
+
};
|