rea-agents 4.1.0 → 5.0.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 +184 -86
- package/bridge/android/ReaJadxBridge.java +247 -0
- package/bridge/native/NativeUIChildren.swift +27 -0
- package/bridge/native/ReaNativeUI.swift +30 -16
- package/dist/android/AndroidTargetSnapshot.js +5 -3
- package/dist/android/JadxAnalysis.js +8 -6
- package/dist/android/JadxConfiguration.js +19 -3
- package/dist/android/JadxMcpTransport.js +43 -16
- package/dist/android/JadxProtocol.js +8 -0
- package/dist/android/JadxProvider.js +117 -28
- package/dist/android/JadxRelease.js +8 -0
- package/dist/android/JadxSession.js +32 -18
- package/dist/application/AppBundleExecutable.js +141 -0
- package/dist/application/ArtifactInventory/classify.js +1 -1
- package/dist/application/ArtifactInventory/scanCanonical.js +1 -1
- package/dist/application/ArtifactInventory/scanReader.js +1 -1
- package/dist/application/ArtifactInventory.js +1 -1
- package/dist/application/BinaryTargetResolver.js +9 -64
- package/dist/application/CapabilityInventory.js +61 -3
- package/dist/application/ClientConfigurationDocument.js +72 -12
- package/dist/application/ClientRegistrationStatus.js +7 -8
- package/dist/application/DirectAnalysis.js +12 -14
- package/dist/application/DirectAnalysisStatus.js +4 -5
- package/dist/application/DoctorDiagnostics.js +3 -3
- package/dist/application/EnhancedTools.js +4 -4
- package/dist/application/EvidenceBundleCommands.js +1 -1
- package/dist/application/FilesystemSnapshot.js +20 -5
- package/dist/application/InvestigationProviders.js +6 -0
- package/dist/application/LinuxHopper.js +8 -2
- package/dist/application/OptionalObservationProviders.js +3 -0
- package/dist/application/ProcessCaptureCapability.js +1 -1
- package/dist/application/ProcessCaptureLifecycle.js +2 -2
- package/dist/application/ProcessCli.js +5 -1
- package/dist/application/ProcessHarness.js +20 -9
- package/dist/application/ReconstructionCoverageService.js +2 -6
- package/dist/application/ReconstructionObligationCandidates.js +5 -2
- package/dist/application/ReferenceSourceImport.js +2 -0
- package/dist/application/ReferenceSourceImportEntries.js +20 -3
- package/dist/application/ReferenceSourceImportTypes.js +5 -0
- package/dist/application/Setup.js +10 -2
- package/dist/application/SetupClientConfiguration.js +19 -16
- package/dist/application/SetupHost.js +18 -3
- package/dist/application/SetupPlan.js +1 -1
- package/dist/application/Uninstall.js +23 -17
- package/dist/application/UpdateMaintenance.js +3 -3
- package/dist/application/ValidateSelectedWebScript.js +27 -0
- package/dist/application/WebModuleTraceService.js +209 -0
- package/dist/application/WebRuntimeService.js +73 -0
- package/dist/application/WebScriptExportService.js +115 -0
- package/dist/application/WebSourceLocationService.js +160 -0
- package/dist/application/{AndroidAnalysisService.js → android/AndroidAnalysisService.js} +6 -6
- package/dist/application/{AndroidApplicationService.js → android/AndroidApplicationService.js} +3 -3
- package/dist/application/{AppleApplicationService.js → apple/AppleApplicationService.js} +5 -5
- package/dist/application/{AnalysisClientCleanup.js → binary/AnalysisClientCleanup.js} +2 -2
- package/dist/application/{AnalysisProviderEvaluation.js → binary/AnalysisProviderEvaluation.js} +4 -4
- package/dist/application/{AnalysisProviderRegistry.js → binary/AnalysisProviderRegistry.js} +5 -5
- package/dist/application/{AnalysisSnapshotCache.js → binary/AnalysisSnapshotCache.js} +7 -9
- package/dist/application/{AnalysisSnapshotFiles.js → binary/AnalysisSnapshotFiles.js} +4 -4
- package/dist/application/{BinarySession.js → binary/BinarySession.js} +12 -10
- package/dist/application/{BinarySessionComposition.js → binary/BinarySessionComposition.js} +2 -1
- package/dist/application/{BinarySessionExecution.js → binary/BinarySessionExecution.js} +9 -7
- package/dist/application/{BinarySessionOpen.js → binary/BinarySessionOpen.js} +6 -6
- package/dist/application/{BinarySessionRecords.js → binary/BinarySessionRecords.js} +28 -40
- package/dist/application/{CompositeProvider.js → binary/CompositeProvider.js} +2 -2
- package/dist/application/{LazyAnalysisProvider.js → binary/LazyAnalysisProvider.js} +6 -6
- package/dist/application/{SessionProviderRouter.js → binary/SessionProviderRouter.js} +7 -7
- package/dist/application/{FirmwareAnalysisService.js → firmware/FirmwareAnalysisService.js} +5 -5
- package/dist/application/{EvidenceLedger.js → investigation/EvidenceLedger.js} +44 -7
- package/dist/application/investigation/InvestigationRecords.js +69 -0
- package/dist/application/{UnknownEvidence.js → investigation/UnknownEvidence.js} +1 -1
- package/dist/application/{ElectronActiveEvidence.js → javascript/ElectronActiveEvidence.js} +3 -3
- package/dist/application/javascript/ElectronActiveObservationPort.js +1 -0
- package/dist/application/{ElectronActiveObservationService.js → javascript/ElectronActiveObservationService.js} +3 -3
- package/dist/application/{ElectronBoundaryAnalysis.js → javascript/ElectronBoundaryAnalysis.js} +1 -1
- package/dist/application/{ElectronBoundaryGraphContext.js → javascript/ElectronBoundaryGraphContext.js} +1 -1
- package/dist/application/{ElectronEvidence.js → javascript/ElectronEvidence.js} +2 -2
- package/dist/application/javascript/ElectronObservationPort.js +1 -0
- package/dist/application/{ElectronObservationService.js → javascript/ElectronObservationService.js} +3 -3
- package/dist/application/{JavaScriptApplicationEvidence.js → javascript/JavaScriptApplicationEvidence.js} +3 -3
- package/dist/application/{JavaScriptApplicationEvidenceGraph.js → javascript/JavaScriptApplicationEvidenceGraph.js} +5 -5
- package/dist/application/{JavaScriptApplicationService.js → javascript/JavaScriptApplicationService.js} +10 -10
- package/dist/application/{JavaScriptApplicationWorkflowEvidence.js → javascript/JavaScriptApplicationWorkflowEvidence.js} +3 -3
- package/dist/application/{JavaScriptApplicationWorkflowService.js → javascript/JavaScriptApplicationWorkflowService.js} +12 -12
- package/dist/application/{JavaScriptArtifactAnalysis.js → javascript/JavaScriptArtifactAnalysis.js} +8 -24
- package/dist/application/javascript/JavaScriptArtifactAnalysisTypes.js +1 -0
- package/dist/application/{JavaScriptArtifactGraphAccumulator.js → javascript/JavaScriptArtifactGraphAccumulator.js} +16 -2
- package/dist/application/{JavaScriptArtifactGraphBuilder.js → javascript/JavaScriptArtifactGraphBuilder.js} +2 -2
- package/dist/application/{JavaScriptArtifactGraphContext.js → javascript/JavaScriptArtifactGraphContext.js} +1 -1
- package/dist/application/{JavaScriptArtifactGraphDocuments.js → javascript/JavaScriptArtifactGraphDocuments.js} +1 -1
- package/dist/application/{JavaScriptArtifactGraphFindings.js → javascript/JavaScriptArtifactGraphFindings.js} +20 -7
- package/dist/application/{JavaScriptArtifactGraphStructure.js → javascript/JavaScriptArtifactGraphStructure.js} +1 -1
- package/dist/application/{JavaScriptArtifactPathResolution.js → javascript/JavaScriptArtifactPathResolution.js} +6 -12
- package/dist/application/{JavaScriptArtifactReconstruction.js → javascript/JavaScriptArtifactReconstruction.js} +4 -8
- package/dist/application/{JavaScriptJsonModules.js → javascript/JavaScriptJsonModules.js} +1 -1
- package/dist/application/{JavaScriptModuleRelationships.js → javascript/JavaScriptModuleRelationships.js} +2 -2
- package/dist/application/javascript/JavaScriptRecoveryPort.js +1 -0
- package/dist/application/javascript/JavaScriptRecoveryService.js +52 -0
- package/dist/application/{JavaScriptReturnShapeProjection.js → javascript/JavaScriptReturnShapeProjection.js} +3 -3
- package/dist/application/{JavaScriptRuntimeObservationEvidence.js → javascript/JavaScriptRuntimeObservationEvidence.js} +2 -2
- package/dist/application/javascript/JavaScriptRuntimeObservationPort.js +1 -0
- package/dist/application/{JavaScriptRuntimeObservationService.js → javascript/JavaScriptRuntimeObservationService.js} +3 -3
- package/dist/application/{JavaScriptRuntimeReconciliationEvidence.js → javascript/JavaScriptRuntimeReconciliationEvidence.js} +3 -3
- package/dist/application/{JavaScriptRuntimeReconciliationService.js → javascript/JavaScriptRuntimeReconciliationService.js} +6 -6
- package/dist/application/{JavaScriptSemanticGraphAsyncProjection.js → javascript/JavaScriptSemanticGraphAsyncProjection.js} +1 -1
- package/dist/application/{JavaScriptSemanticGraphBuilder.js → javascript/JavaScriptSemanticGraphBuilder.js} +5 -3
- package/dist/application/{JavaScriptSemanticGraphChildProcessProjection.js → javascript/JavaScriptSemanticGraphChildProcessProjection.js} +1 -1
- package/dist/application/{JavaScriptSemanticGraphConstruction.js → javascript/JavaScriptSemanticGraphConstruction.js} +3 -2
- package/dist/application/{JavaScriptSemanticGraphDataProjection.js → javascript/JavaScriptSemanticGraphDataProjection.js} +1 -1
- package/dist/application/{JavaScriptSemanticGraphFingerprintProjection.js → javascript/JavaScriptSemanticGraphFingerprintProjection.js} +1 -1
- package/dist/application/{JavaScriptSemanticGraphFlowProjection.js → javascript/JavaScriptSemanticGraphFlowProjection.js} +2 -2
- package/dist/application/{JavaScriptSemanticGraphObjectProjection.js → javascript/JavaScriptSemanticGraphObjectProjection.js} +1 -1
- package/dist/application/{JavaScriptSemanticGraphProjection.js → javascript/JavaScriptSemanticGraphProjection.js} +2 -2
- package/dist/application/{JavaScriptSemanticGraphResourceProjection.js → javascript/JavaScriptSemanticGraphResourceProjection.js} +1 -1
- package/dist/application/{JavaScriptSemanticTraceService.js → javascript/JavaScriptSemanticTraceService.js} +6 -6
- package/dist/application/{ManagedApplicationGraphService.js → managed/ManagedApplicationGraphService.js} +7 -7
- package/dist/application/{ManagedMemberComparisonService.js → managed/ManagedMemberComparisonService.js} +10 -10
- package/dist/application/{ManagedNativeVerificationService.js → managed/ManagedNativeVerificationService.js} +7 -7
- package/dist/application/{ManagedReconstructionService.js → managed/ManagedReconstructionService.js} +7 -7
- package/dist/application/{NativeApiInspection.js → native/NativeApiInspection.js} +1 -1
- package/dist/application/{NativeCallRoutes.js → native/NativeCallRoutes.js} +3 -3
- package/dist/application/{NativeDispatchMetadataInspection.js → native/NativeDispatchMetadataInspection.js} +4 -4
- package/dist/application/{NativeUiActionTrace.js → native/NativeUiActionTrace.js} +7 -7
- package/dist/application/{NativeValueTrace.js → native/NativeValueTrace.js} +6 -6
- package/dist/{application/ArtifactInventory/hash.js → artifacts/ArtifactHash.js} +4 -2
- package/dist/artifacts/ArtifactPaths.js +3 -3
- package/dist/artifacts/ArtifactProvider.js +7 -37
- package/dist/artifacts/ArtifactProviderMetadata.js +36 -0
- package/dist/artifacts/AsarArtifactReader.js +195 -23
- package/dist/artifacts/AsarEntryStream.js +76 -0
- package/dist/artifacts/DirectoryArtifactReader.js +41 -7
- package/dist/artifacts/NativeDmgArtifactReader.js +161 -9
- package/dist/{application → artifacts/apple}/AppleAssetCatalogAnalysis.js +4 -4
- package/dist/{application → artifacts/apple}/InterfaceBuilderAnalysis.js +125 -51
- package/dist/artifacts/{KeyedArchiveReader.js → apple/KeyedArchiveReader.js} +21 -27
- package/dist/artifacts/apple/NibViewHierarchy.js +150 -0
- package/dist/{application → artifacts/javascript}/JavaScriptArtifactFiles.js +27 -6
- package/dist/artifacts/javascript/JavaScriptArtifactReader.js +6 -0
- package/dist/artifacts/readStableArtifact.js +52 -0
- package/dist/browser/BrowserScenarioSecrets.js +50 -8
- package/dist/browser/CdpAuthorizedMainFrame.js +4 -4
- package/dist/browser/CdpAuthorizedTarget.js +22 -0
- package/dist/browser/CdpBrowserProvider.js +4 -15
- package/dist/browser/CdpCaptureDocuments.js +33 -21
- package/dist/browser/CdpCaptureEventBodyShapes.js +3 -3
- package/dist/browser/CdpCaptureEventHandlers.js +26 -26
- package/dist/browser/CdpCaptureEventHelpers.js +6 -6
- package/dist/browser/CdpCaptureStorage.js +10 -8
- package/dist/browser/CdpCaptureStorageFingerprints.js +24 -22
- package/dist/browser/CdpCaptureValues.js +2 -2
- package/dist/browser/CdpCommandRejection.js +17 -0
- package/dist/browser/CdpConnection.js +51 -11
- package/dist/browser/CdpElectronInspection.js +10 -10
- package/dist/browser/CdpElectronProvider.js +3 -6
- package/dist/browser/CdpElectronScriptEvents.js +6 -6
- package/dist/browser/CdpElectronScripts.js +2 -2
- package/dist/browser/CdpElectronWorkers.js +4 -4
- package/dist/browser/CdpObservationSession.js +18 -23
- package/dist/browser/CdpPageCapture.js +4 -4
- package/dist/browser/CdpPageCaptureScripts.js +2 -2
- package/dist/browser/CdpPageCaptureWorkers.js +9 -9
- package/dist/browser/CdpSafeMetadata.js +48 -10
- package/dist/browser/CdpScreenshot.js +5 -5
- package/dist/browser/CdpTargetEvents.js +8 -0
- package/dist/browser/CdpTargetSession.js +2 -2
- package/dist/browser/CdpWebMcpDiscovery.js +22 -16
- package/dist/browser/PlaywrightBrowserScenarioProvider.js +7 -6
- package/dist/browser/PlaywrightElectronActiveProvider.js +3 -6
- package/dist/browser/PlaywrightScenarioEvents.js +59 -51
- package/dist/browser/PlaywrightScenarioSession.js +8 -1
- package/dist/browser/WebSourceMapFetcher.js +37 -53
- package/dist/browser/assets/LocalWebScriptArtifacts.js +87 -0
- package/dist/browser/assets/PageScriptCapture.js +32 -0
- package/dist/browser/assets/PublishWebScripts.js +74 -0
- package/dist/browser/assets/ScenarioScriptCapture.js +76 -0
- package/dist/browser/assets/ScriptCaptureAdapters.js +57 -0
- package/dist/browser/assets/WebArtifactReads.js +56 -0
- package/dist/browser/assets/WebSourceLocationArtifacts.js +40 -0
- package/dist/browser/execution/CdpEventListeners.js +79 -0
- package/dist/browser/execution/CdpExecutionCapture.js +135 -0
- package/dist/browser/execution/CdpExecutionCollection.js +57 -0
- package/dist/browser/execution/CdpExecutionWindow.js +100 -0
- package/dist/browser/execution/CdpListenerSelector.js +22 -0
- package/dist/browser/execution/CdpPreciseCoverage.js +48 -0
- package/dist/browser/execution/CdpRuntimeInitiator.js +18 -0
- package/dist/browser/execution/CdpRuntimeProtocol.js +106 -0
- package/dist/browser/execution/CdpRuntimeRequests.js +81 -0
- package/dist/browser/execution/CdpRuntimeSession.js +163 -0
- package/dist/browser/execution/CdpRuntimeSources.js +223 -0
- package/dist/browser/execution/CdpWebRuntimeProvider.js +51 -0
- package/dist/browser/modules/NativeModuleResolver.js +210 -0
- package/dist/browser/modules/WebModuleArtifacts.js +40 -0
- package/dist/browser/network/PlaywrightNetworkContent.js +71 -0
- package/dist/browser/network/PlaywrightScenarioNetwork.js +180 -0
- package/dist/browser/providerIdentities.js +24 -0
- package/dist/catalogIdentity.js +23 -15
- package/dist/cli/androidCommands.js +13 -3
- package/dist/cli/applicationCommands.js +39 -8
- package/dist/cli/artifactCommands.js +1 -1
- package/dist/cli/browserAdvancedCommands.js +27 -9
- package/dist/cli/coreAnalysisCommands.js +5 -493
- package/dist/cli/coreBinaryCommands.js +211 -0
- package/dist/cli/coreNativeCommands.js +293 -0
- package/dist/cli/electronCommands.js +13 -18
- package/dist/cli/firmwareCommands.js +3 -3
- package/dist/cli/javascriptApplicationAnalysis.js +1 -1
- package/dist/cli/javascriptRecoveryCommands.js +45 -0
- package/dist/cli/managedCommands.js +4 -4
- package/dist/cli/managedProjectGraphCommand.js +1 -1
- package/dist/cli/referenceSourceImportStatus.js +6 -1
- package/dist/cli/utilityCommands.js +47 -23
- package/dist/cli/webModuleCommands.js +56 -0
- package/dist/cli/webRuntimeCommands.js +60 -0
- package/dist/cli/webScriptCommands.js +31 -0
- package/dist/cli/webSourceLocationCommands.js +42 -0
- package/dist/cli.js +10 -0
- package/dist/cliBrowserContext.js +4 -2
- package/dist/cliBrowserScenarioCommands.js +4 -3
- package/dist/cliCommandNames.js +8 -0
- package/dist/cliJavaScriptRuntimeCommands.js +6 -4
- package/dist/cliJsonInput.js +9 -2
- package/dist/cliOutput.js +37 -11
- package/dist/composition/android.js +3 -0
- package/dist/composition/auxiliaryAnalysisProviders.js +30 -0
- package/dist/composition/binary.js +25 -0
- package/dist/composition/browserObservation.js +3 -0
- package/dist/composition/browserScenario.js +3 -0
- package/dist/composition/directAnalysis.js +17 -0
- package/dist/composition/electronObservation.js +3 -0
- package/dist/composition/electronScenario.js +3 -0
- package/dist/composition/firmware.js +3 -0
- package/dist/composition/javascriptRecovery.js +3 -0
- package/dist/composition/javascriptRuntimeObservation.js +3 -0
- package/dist/composition/optionalObservationProviders.js +49 -0
- package/dist/composition/webModules.js +5 -0
- package/dist/composition/webRuntime.js +4 -0
- package/dist/composition/webSourceLocations.js +5 -0
- package/dist/config/parseConfig.js +22 -3
- package/dist/contracts/{androidToolContracts.js → android/androidToolContracts.js} +5 -5
- package/dist/contracts/applicationToolContracts.js +43 -8
- package/dist/contracts/artifactToolContracts.js +2 -2
- package/dist/contracts/browserScenarioToolContracts.js +1 -1
- package/dist/contracts/enhancedInputs.js +1 -1
- package/dist/contracts/{firmwareToolContracts.js → firmware/firmwareToolContracts.js} +5 -5
- package/dist/contracts/{applicationWorkflowInputContracts.js → javascript/applicationWorkflowInputContracts.js} +6 -6
- package/dist/contracts/{electronToolContracts.js → javascript/electronToolContracts.js} +6 -6
- package/dist/contracts/{javascriptApplicationWorkflowExamples.js → javascript/javascriptApplicationWorkflowExamples.js} +3 -3
- package/dist/contracts/javascript/javascriptRecoveryToolContracts.js +23 -0
- package/dist/contracts/{javascriptRuntimeObservationToolContracts.js → javascript/javascriptRuntimeObservationToolContracts.js} +3 -3
- package/dist/contracts/{javascriptRuntimeReconciliationExample.js → javascript/javascriptRuntimeReconciliationExample.js} +5 -5
- package/dist/contracts/{managedToolContracts.js → managed/managedToolContracts.js} +3 -3
- package/dist/contracts/{managedWorkflowExamples.js → managed/managedWorkflowExamples.js} +1 -1
- package/dist/contracts/{managedWorkflowToolContracts.js → managed/managedWorkflowToolContracts.js} +6 -6
- package/dist/contracts/mobileApplicationGraphExamples.js +105 -0
- package/dist/contracts/{nativeToolContracts.js → native/nativeToolContracts.js} +14 -7
- package/dist/contracts/officialToolContracts.js +3 -3
- package/dist/contracts/sessionToolContracts.js +1 -1
- package/dist/contracts/toolContracts.js +13 -7
- package/dist/contracts/toolEffects.js +32 -0
- package/dist/contracts/toolOutputSchemaGroups.js +18 -18
- package/dist/contracts/webRuntimeToolContracts.js +43 -0
- package/dist/contracts/webScriptToolContracts.js +68 -0
- package/dist/domain/analysisErrorCore.js +4 -2
- package/dist/domain/analysisErrorProjection.js +1 -0
- package/dist/domain/{androidApplication.js → android/androidApplication.js} +7 -6
- package/dist/domain/apple/appleApplication.js +277 -0
- package/dist/domain/{appleAssetCatalog.js → apple/appleAssetCatalog.js} +2 -2
- package/dist/domain/apple/appleBundleAnatomy.js +236 -0
- package/dist/domain/{interfaceBuilderGraph.js → apple/interfaceBuilderGraph.js} +47 -314
- package/dist/domain/apple/interfaceBuilderKeyedArchive.js +411 -0
- package/dist/domain/{keyedArchive.js → apple/keyedArchive.js} +10 -9
- package/dist/domain/apple/plistValue.js +35 -0
- package/dist/domain/artifactInventoryEvidence.js +12 -2
- package/dist/domain/artifactInventorySnapshot.js +1 -0
- package/dist/domain/artifactOperationError.js +5 -1
- package/dist/domain/artifactPathSyntax.js +26 -0
- package/dist/domain/browserNetworkEvidence.js +82 -0
- package/dist/domain/browserObservationError.js +2 -0
- package/dist/domain/browserObservationSchemas.js +2 -1
- package/dist/domain/browserScenarioCapture.js +22 -0
- package/dist/domain/browserScenarioCaptureValues.js +25 -0
- package/dist/domain/browserScenarioDiff.js +6 -3
- package/dist/domain/browserScenarioDiffEvidence.js +35 -1
- package/dist/domain/browserScenarioValues.js +12 -1
- package/dist/domain/browserSession.js +2 -7
- package/dist/domain/bundleComparison.js +2 -1
- package/dist/domain/callPath.js +52 -44
- package/dist/domain/comparisonStatus.js +39 -0
- package/dist/domain/evidenceBundle.js +98 -35
- package/dist/domain/{firmwareAnalysis.js → firmware/firmwareAnalysis.js} +2 -2
- package/dist/domain/functionComparisonNormalization.js +11 -13
- package/dist/domain/hopperValues.js +2 -2
- package/dist/domain/inputIssueProjection.js +17 -2
- package/dist/domain/{electronObservation.js → javascript/electronObservation.js} +5 -11
- package/dist/domain/{electronStaticAnalysisBrowser.js → javascript/electronStaticAnalysisBrowser.js} +4 -3
- package/dist/domain/{electronStaticAnalysisIpc.js → javascript/electronStaticAnalysisIpc.js} +2 -2
- package/dist/domain/{electronStaticAnalysisNative.js → javascript/electronStaticAnalysisNative.js} +12 -13
- package/dist/domain/javascript/electronStaticAnalysisTypes.js +1 -0
- package/dist/domain/{electronStaticAnalysisValues.js → javascript/electronStaticAnalysisValues.js} +3 -3
- package/dist/domain/{javascriptApplicationAnalysis.js → javascript/javascriptApplicationAnalysis.js} +2 -2
- package/dist/domain/{javascriptApplicationChangeGraph.js → javascript/javascriptApplicationChangeGraph.js} +1 -1
- package/dist/domain/{javascriptApplicationEvidenceSchemas.js → javascript/javascriptApplicationEvidenceSchemas.js} +6 -4
- package/dist/domain/{javascriptApplicationGraph.js → javascript/javascriptApplicationGraph.js} +2 -2
- package/dist/domain/{javascriptApplicationGraphSchemas.js → javascript/javascriptApplicationGraphSchemas.js} +2 -2
- package/dist/domain/{javascriptApplicationVersionComparison.js → javascript/javascriptApplicationVersionComparison.js} +2 -2
- package/dist/domain/{javascriptApplicationVersionComparisonSchemas.js → javascript/javascriptApplicationVersionComparisonSchemas.js} +3 -3
- package/dist/domain/{javascriptApplicationVersionItems.js → javascript/javascriptApplicationVersionItems.js} +2 -2
- package/dist/domain/{javascriptApplicationVersionKeys.js → javascript/javascriptApplicationVersionKeys.js} +16 -9
- package/dist/domain/javascript/javascriptArtifactFiles.js +1 -0
- package/dist/domain/{javascriptAstFingerprint.js → javascript/javascriptAstFingerprint.js} +38 -22
- package/dist/domain/javascript/javascriptAstValues.js +23 -0
- package/dist/domain/{javascriptExportShapeComparison.js → javascript/javascriptExportShapeComparison.js} +1 -1
- package/dist/domain/{javascriptExportShapeComparisonSchemas.js → javascript/javascriptExportShapeComparisonSchemas.js} +2 -2
- package/dist/domain/{javascriptExportShapeSelection.js → javascript/javascriptExportShapeSelection.js} +1 -1
- package/dist/domain/{javascriptExportShapeVariants.js → javascript/javascriptExportShapeVariants.js} +1 -1
- package/dist/domain/{javascriptFeatureSeed.js → javascript/javascriptFeatureSeed.js} +4 -3
- package/dist/domain/{javascriptFeatureTrace.js → javascript/javascriptFeatureTrace.js} +2 -2
- package/dist/domain/{javascriptFeatureTraceSchemas.js → javascript/javascriptFeatureTraceSchemas.js} +32 -18
- package/dist/domain/{javascriptFeatureTraversal.js → javascript/javascriptFeatureTraversal.js} +6 -2
- package/dist/domain/{javascriptNativeHandoff.js → javascript/javascriptNativeHandoff.js} +1 -1
- package/dist/domain/javascript/javascriptRecovery.js +88 -0
- package/dist/domain/{javascriptRuntimeLoadState.js → javascript/javascriptRuntimeLoadState.js} +1 -1
- package/dist/domain/{javascriptRuntimeObservation.js → javascript/javascriptRuntimeObservation.js} +2 -2
- package/dist/domain/{javascriptRuntimeReconciliationActive.js → javascript/javascriptRuntimeReconciliationActive.js} +3 -3
- package/dist/domain/{javascriptRuntimeReconciliationGraph.js → javascript/javascriptRuntimeReconciliationGraph.js} +1 -1
- package/dist/domain/{javascriptRuntimeReconciliationMatching.js → javascript/javascriptRuntimeReconciliationMatching.js} +2 -2
- package/dist/domain/{javascriptRuntimeReconciliationParsing.js → javascript/javascriptRuntimeReconciliationParsing.js} +5 -5
- package/dist/domain/{javascriptRuntimeReconciliationResult.js → javascript/javascriptRuntimeReconciliationResult.js} +2 -2
- package/dist/domain/{javascriptRuntimeReconciliationSchemas.js → javascript/javascriptRuntimeReconciliationSchemas.js} +4 -4
- package/dist/domain/{javascriptRuntimeStaticCandidates.js → javascript/javascriptRuntimeStaticCandidates.js} +1 -1
- package/dist/domain/{javascriptSemanticAnalysis.js → javascript/javascriptSemanticAnalysis.js} +40 -14
- package/dist/domain/{javascriptSemanticAsyncEffects.js → javascript/javascriptSemanticAsyncEffects.js} +2 -1
- package/dist/domain/{javascriptSemanticCallResolution.js → javascript/javascriptSemanticCallResolution.js} +10 -5
- package/dist/domain/{javascriptSemanticCalls.js → javascript/javascriptSemanticCalls.js} +7 -4
- package/dist/domain/{javascriptSemanticChildProcesses.js → javascript/javascriptSemanticChildProcesses.js} +4 -2
- package/dist/domain/{javascriptSemanticDataEffectHelpers.js → javascript/javascriptSemanticDataEffectHelpers.js} +7 -6
- package/dist/domain/{javascriptSemanticDataEffects.js → javascript/javascriptSemanticDataEffects.js} +8 -6
- package/dist/domain/{javascriptSemanticFingerprints.js → javascript/javascriptSemanticFingerprints.js} +40 -16
- package/dist/domain/{javascriptSemanticGraph.js → javascript/javascriptSemanticGraph.js} +2 -2
- package/dist/domain/{javascriptSemanticGraphSchemas.js → javascript/javascriptSemanticGraphSchemas.js} +3 -3
- package/dist/domain/javascript/javascriptSemanticMemberMutations.js +116 -0
- package/dist/domain/javascript/javascriptSemanticMutationValues.js +53 -0
- package/dist/domain/{javascriptSemanticObjects.js → javascript/javascriptSemanticObjects.js} +5 -5
- package/dist/domain/{javascriptSemanticPrimitives.js → javascript/javascriptSemanticPrimitives.js} +1 -1
- package/dist/domain/{javascriptSemanticProjection.js → javascript/javascriptSemanticProjection.js} +31 -44
- package/dist/domain/{javascriptSemanticPromises.js → javascript/javascriptSemanticPromises.js} +77 -22
- package/dist/domain/{javascriptSemanticProvenance.js → javascript/javascriptSemanticProvenance.js} +4 -1
- package/dist/domain/{javascriptSemanticQuery.js → javascript/javascriptSemanticQuery.js} +1 -1
- package/dist/domain/{javascriptSemanticQueryAssessment.js → javascript/javascriptSemanticQueryAssessment.js} +1 -1
- package/dist/domain/{javascriptSemanticQueryIdentity.js → javascript/javascriptSemanticQueryIdentity.js} +1 -1
- package/dist/domain/{javascriptSemanticQuerySchemas.js → javascript/javascriptSemanticQuerySchemas.js} +3 -3
- package/dist/domain/javascript/javascriptSemanticRequireOrigin.js +25 -0
- package/dist/domain/{javascriptSemanticResources.js → javascript/javascriptSemanticResources.js} +2 -1
- package/dist/domain/{javascriptSemanticReturns.js → javascript/javascriptSemanticReturns.js} +1 -1
- package/dist/domain/{javascriptSemanticTraceSchemas.js → javascript/javascriptSemanticTraceSchemas.js} +2 -2
- package/dist/domain/javascript/javascriptSemanticTraversal.js +55 -0
- package/dist/domain/javascript/javascriptSemanticValueTypes.js +1 -0
- package/dist/domain/{javascriptSemanticValues.js → javascript/javascriptSemanticValues.js} +72 -48
- package/dist/domain/{javascriptStaticAnalysis.js → javascript/javascriptStaticAnalysis.js} +7 -4
- package/dist/domain/{javascriptStaticAnalysisBundler.js → javascript/javascriptStaticAnalysisBundler.js} +14 -11
- package/dist/domain/{javascriptStaticAnalysisCalls.js → javascript/javascriptStaticAnalysisCalls.js} +2 -2
- package/dist/domain/{javascriptStaticAnalysisHelpers.js → javascript/javascriptStaticAnalysisHelpers.js} +231 -40
- package/dist/domain/{sourceToBundleComparison.js → javascript/sourceToBundleComparison.js} +2 -2
- package/dist/domain/{sourceToBundleComparisonSchemas.js → javascript/sourceToBundleComparisonSchemas.js} +4 -4
- package/dist/domain/{sourceToBundleSignals.js → javascript/sourceToBundleSignals.js} +2 -2
- package/dist/domain/{managedApplicationGraph.js → managed/managedApplicationGraph.js} +4 -4
- package/dist/domain/{managedApplicationGraphNodes.js → managed/managedApplicationGraphNodes.js} +1 -1
- package/dist/domain/{managedArtifact.js → managed/managedArtifact.js} +1 -1
- package/dist/domain/{managedMemberComparison.js → managed/managedMemberComparison.js} +4 -4
- package/dist/domain/{managedMemberComparisonCoverage.js → managed/managedMemberComparisonCoverage.js} +2 -1
- package/dist/domain/{managedMemberComparisonItems.js → managed/managedMemberComparisonItems.js} +97 -40
- package/dist/domain/{managedMemberComparisonMatch.js → managed/managedMemberComparisonMatch.js} +22 -11
- package/dist/domain/{managedNativeVerification.js → managed/managedNativeVerification.js} +1 -1
- package/dist/domain/{managedNativeVerificationMatch.js → managed/managedNativeVerificationMatch.js} +3 -3
- package/dist/domain/{managedNativeVerificationSchemas.js → managed/managedNativeVerificationSchemas.js} +6 -5
- package/dist/domain/{managedReconstruction.js → managed/managedReconstruction.js} +3 -3
- package/dist/domain/{nativeFunctionAnnotations.js → native/nativeFunctionAnnotations.js} +1 -1
- package/dist/domain/{nativeInspection.js → native/nativeInspection.js} +1 -1
- package/dist/domain/{nativeInvestigationGraph.js → native/nativeInvestigationGraph.js} +13 -4
- package/dist/domain/{nativeLoadImage.js → native/nativeLoadImage.js} +1 -1
- package/dist/domain/{nativeUiObservation.js → native/nativeUiObservation.js} +20 -6
- package/dist/domain/{objcSwiftMetadata.js → native/objcSwiftMetadata.js} +17 -0
- package/dist/domain/processCapture.js +4 -2
- package/dist/domain/processScenario.js +17 -17
- package/dist/domain/propertyListKeys.js +69 -0
- package/dist/domain/providerCleanupError.js +5 -2
- package/dist/domain/reconstructionCoverageEvaluation.js +46 -24
- package/dist/domain/reconstructionCoverageInput.js +7 -0
- package/dist/domain/runtimeVersion.js +2 -0
- package/dist/domain/sourceMapEnvelope.js +38 -0
- package/dist/domain/unicodeCodePointOrder.js +11 -6
- package/dist/domain/webBundleAnalyzerAst.js +2 -34
- package/dist/domain/webBundleAnalyzerInspection.js +12 -9
- package/dist/domain/webEventListeners.js +28 -0
- package/dist/domain/webExecution.js +74 -0
- package/dist/domain/webMcpDiscovery.js +1 -7
- package/dist/domain/webModuleImports.js +104 -0
- package/dist/domain/webModuleTrace.js +106 -0
- package/dist/domain/webRuntime.js +69 -0
- package/dist/domain/webScreenshot.js +1 -7
- package/dist/domain/webScriptArtifacts.js +39 -0
- package/dist/domain/webScriptExport.js +86 -0
- package/dist/domain/webScriptExportError.js +13 -0
- package/dist/domain/webScriptExportPlan.js +108 -0
- package/dist/domain/webSourceLocation.js +106 -0
- package/dist/domain/webSourcePosition.js +21 -0
- package/dist/dotnet/ManagedArtifactInspector.js +1 -1
- package/dist/dotnet/ManagedMemberInspector.js +1 -1
- package/dist/dotnet/ManagedMemberInspectorCore.js +34 -0
- package/dist/dotnet/ManagedMemberRows.js +5 -3
- package/dist/dotnet/ManagedNativeBoundaryHelpers.js +22 -16
- package/dist/dotnet/ManagedNativeBoundaryInspector.js +56 -50
- package/dist/dotnet/ManagedStaticProvider.js +3 -33
- package/dist/dotnet/ManagedStaticProviderMetadata.js +36 -0
- package/dist/evaluation/CodexAgentEval.js +2 -1
- package/dist/firmware/FirmwareProvider.js +18 -12
- package/dist/firmware/FirmwarePublication.js +1 -1
- package/dist/firmware/FirmwareRelease.js +1 -1
- package/dist/firmware/FirmwareReports.js +12 -0
- package/dist/firmware/FirmwareVersion.js +80 -0
- package/dist/generatedMcpToolCatalog.js +1 -1
- package/dist/generatedPackageMetadata.js +2 -2
- package/dist/ghidra/GhidraFunctionValues.js +5 -5
- package/dist/ghidra/GhidraInstallation.js +38 -34
- package/dist/ghidra/GhidraInstallationPolicy.js +140 -0
- package/dist/ghidra/GhidraInventoryValues.js +1 -1
- package/dist/ghidra/GhidraLauncher.js +12 -4
- package/dist/ghidra/GhidraLoadImageAttest.js +36 -0
- package/dist/ghidra/GhidraLoadImageValues.js +1 -1
- package/dist/ghidra/GhidraProvider.js +15 -233
- package/dist/ghidra/GhidraProviderCapabilities.js +7 -14
- package/dist/ghidra/GhidraProviderClient.js +209 -0
- package/dist/ghidra/GhidraResponseBuffer.js +7 -1
- package/dist/ghidra/extensions/nativeaot/NativeAotReport.js +17 -1
- package/dist/hopper/HopperProvider.js +2 -48
- package/dist/hopper/HopperProviderCapabilities.js +73 -0
- package/dist/hopper/HopperResponseStream.js +7 -1
- package/dist/hopper/LinuxPrivateDisplayProbe.js +4 -4
- package/dist/ida/IdaProviderCapabilities.js +3 -11
- package/dist/ida/IdaSessionClient.js +12 -0
- package/dist/{browser → inspector}/JavaScriptRuntimeScope.js +16 -5
- package/dist/{browser → inspector}/V8InspectorCaptureProjection.js +46 -8
- package/dist/{browser → inspector}/V8InspectorEndpoint.js +1 -1
- package/dist/{browser → inspector}/V8InspectorProvider.js +10 -13
- package/dist/inspector/providerIdentity.js +6 -0
- package/dist/javascript/recovery/RecoveryFiles.js +122 -0
- package/dist/javascript/recovery/WakaruCommand.js +116 -0
- package/dist/javascript/recovery/WakaruExecution.js +100 -0
- package/dist/javascript/recovery/WakaruProvider.js +96 -0
- package/dist/javascript/recovery/WakaruPublication.js +102 -0
- package/dist/javascript/recovery/WakaruRelease.js +29 -0
- package/dist/javascript/recovery/WakaruReport.js +134 -0
- package/dist/javascript/sourceMaps/SourceMapCodecProcess.js +37 -0
- package/dist/javascript/sourceMaps/SourceMapCodecProtocol.js +20 -0
- package/dist/javascript/sourceMaps/SourceMapCommand.js +176 -0
- package/dist/javascript/sourceMaps/SourceMapDecoder.js +61 -0
- package/dist/javascript/sourceMaps/SourceMapFormat.js +185 -0
- package/dist/javascript/sourceMaps/TraceSourceMap.js +138 -0
- package/dist/main/shutdown.js +8 -2
- package/dist/main/transport.js +24 -7
- package/dist/main.js +4 -18
- package/dist/native/AppleDispatchCoverage.js +58 -0
- package/dist/native/AppleDispatchMetadata.js +71 -509
- package/dist/native/AppleMachoFixups.js +292 -0
- package/dist/native/AppleMachoSelection.js +188 -0
- package/dist/native/AppleObjcCategories.js +59 -0
- package/dist/native/AppleObjcDispatchFacets.js +257 -0
- package/dist/native/AppleObjcProperties.js +68 -0
- package/dist/native/AppleObjcProtocols.js +2 -1
- package/dist/native/AppleSwiftDispatchFacets.js +150 -0
- package/dist/native/NativeMacOSProvider.js +132 -72
- package/dist/native/NativeMacOSProviderMetadata.js +42 -0
- package/dist/native/NativeMachoInspection.js +45 -14
- package/dist/native/NativeUiHelperRuntime.js +7 -3
- package/dist/native/NativeUiObservation.js +8 -4
- package/dist/native/NativeUiOutputBudget.js +8 -0
- package/dist/native/parsers/codesign.js +40 -5
- package/dist/native/parsers/demangle.js +6 -2
- package/dist/native/parsers/dyldInfo.js +13 -4
- package/dist/native/parsers/echoedPath.js +14 -0
- package/dist/native/parsers/lipo.js +14 -0
- package/dist/native/parsers/otool.js +1 -1
- package/dist/native/parsers/plist.js +174 -19
- package/dist/process/ExecFileOutput.js +2 -0
- package/dist/process/ProviderProcess.js +38 -17
- package/dist/reference/ReferenceSourceReaderEntries.js +6 -1
- package/dist/server/createServer.js +48 -6
- package/dist/server/mcpClientMetadata.js +6 -3
- package/dist/server/registerAndroidTools.js +1 -1
- package/dist/server/registerApplicationTools/compareExportShapes.js +2 -2
- package/dist/server/registerApplicationTools/compareSourceToBundle.js +2 -2
- package/dist/server/registerApplicationTools/compareVersions.js +2 -2
- package/dist/server/registerApplicationTools/projectMobileApplicationGraph.js +43 -0
- package/dist/server/registerApplicationTools/traceFeature.js +1 -1
- package/dist/server/registerApplicationTools/traceSemantics.js +1 -1
- package/dist/server/registerApplicationTools.js +2 -0
- package/dist/server/registerBrowserScenarioTool.js +6 -2
- package/dist/server/registerBrowserTools.js +13 -2
- package/dist/server/registerCloseLifecycleTool.js +1 -1
- package/dist/server/registerElectronTools.js +21 -7
- package/dist/server/registerJavaScriptRecoveryTool.js +17 -0
- package/dist/server/registerJavaScriptRuntimeObservationTools.js +9 -4
- package/dist/server/registerManagedTools.js +3 -3
- package/dist/server/registerManagedWorkflowTools/compareManagedMembers.js +2 -2
- package/dist/server/registerManagedWorkflowTools/contract.js +1 -1
- package/dist/server/registerManagedWorkflowTools/importManagedReconstruction.js +1 -1
- package/dist/server/registerManagedWorkflowTools/projectManagedApplicationGraph.js +1 -1
- package/dist/server/registerManagedWorkflowTools/verifyManagedNativeBoundaries.js +2 -2
- package/dist/server/registerNativeTools.js +1 -1
- package/dist/server/registerPrompts.js +5 -1
- package/dist/server/registerSessionTools.js +1 -1
- package/dist/server/registerWebModuleTool.js +17 -0
- package/dist/server/registerWebRuntimeTools.js +31 -0
- package/dist/server/registerWebScriptTool.js +18 -0
- package/dist/server/registerWebSourceLocationTool.js +17 -0
- package/dist/server/sessionAvailabilityPolicy.js +24 -12
- package/dist/windows/WindowsOwnedProcess.js +3 -1
- package/install.sh +12 -2
- package/native/windows/README.md +5 -0
- package/native/windows/build/manifest.json +2 -2
- package/native/windows/build/rea-windows-x64.node +0 -0
- package/package.json +40 -19
- package/scripts/hopper-demo-x11.py +67 -8
- package/scripts/rea.mjs +9 -1
- package/skills/reverse-engineer-anything/SKILL.md +3 -3
- package/skills/reverse-engineer-anything/references/android-applications.md +2 -2
- package/skills/reverse-engineer-anything/references/javascript-applications.md +1 -1
- package/skills/reverse-engineer-anything/references/native-and-artifacts.md +32 -23
- package/dist/application/runtime.js +0 -53
- package/dist/domain/appleApplication.js +0 -181
- package/dist/domain/javascriptAstValues.js +0 -13
- package/dist/domain/javascriptSemanticTraversal.js +0 -30
- package/dist/native/NativeHostCapabilities.js +0 -23
- /package/dist/application/{AndroidAnalysisPort.js → DirectAnalysisDependencies.js} +0 -0
- /package/dist/application/{BinarySessionPort.js → WebModulePorts.js} +0 -0
- /package/dist/application/{ElectronActiveObservationPort.js → WebRuntimePort.js} +0 -0
- /package/dist/application/{ElectronObservationPort.js → WebScriptArtifactPort.js} +0 -0
- /package/dist/application/{FirmwareAnalysisPort.js → WebSourceLocationPorts.js} +0 -0
- /package/dist/application/{JavaScriptArtifactAnalysisTypes.js → android/AndroidAnalysisPort.js} +0 -0
- /package/dist/application/{AbortablePromise.js → binary/AbortablePromise.js} +0 -0
- /package/dist/application/{JavaScriptRuntimeObservationPort.js → binary/BinarySessionPort.js} +0 -0
- /package/dist/application/{BinarySessionStatus.js → binary/BinarySessionStatus.js} +0 -0
- /package/dist/{domain/electronStaticAnalysisTypes.js → application/firmware/FirmwareAnalysisPort.js} +0 -0
- /package/dist/{domain/javascriptSemanticValueTypes.js → application/investigation/InvestigationRecordPort.js} +0 -0
- /package/dist/application/{ElectronBoundaryGraph.js → javascript/ElectronBoundaryGraph.js} +0 -0
- /package/dist/application/{ElectronBoundaryGraphIpc.js → javascript/ElectronBoundaryGraphIpc.js} +0 -0
- /package/dist/application/{ElectronBoundaryGraphNative.js → javascript/ElectronBoundaryGraphNative.js} +0 -0
- /package/dist/application/{ElectronBoundaryGraphWindows.js → javascript/ElectronBoundaryGraphWindows.js} +0 -0
- /package/dist/application/{JavaScriptArtifactGraphBundlers.js → javascript/JavaScriptArtifactGraphBundlers.js} +0 -0
- /package/dist/application/{JavaScriptArtifactGraphEvidence.js → javascript/JavaScriptArtifactGraphEvidence.js} +0 -0
- /package/dist/application/{JavaScriptArtifactReconstructionInput.js → javascript/JavaScriptArtifactReconstructionInput.js} +0 -0
- /package/dist/application/{JavaScriptSemanticGraphEvidence.js → javascript/JavaScriptSemanticGraphEvidence.js} +0 -0
- /package/dist/application/{JavaScriptSemanticGraphValueProjection.js → javascript/JavaScriptSemanticGraphValueProjection.js} +0 -0
- /package/dist/artifacts/{NibArchive.js → apple/NibArchive.js} +0 -0
- /package/dist/domain/{androidAnalysis.js → android/androidAnalysis.js} +0 -0
- /package/dist/domain/{electronActiveObservation.js → javascript/electronActiveObservation.js} +0 -0
- /package/dist/domain/{electronStaticAnalysis.js → javascript/electronStaticAnalysis.js} +0 -0
- /package/dist/domain/{javascriptExportShapeComparisonIdentity.js → javascript/javascriptExportShapeComparisonIdentity.js} +0 -0
- /package/dist/domain/{javascriptRuntimeReconciliation.js → javascript/javascriptRuntimeReconciliation.js} +0 -0
- /package/dist/domain/{javascriptRuntimeReconciliationRuntime.js → javascript/javascriptRuntimeReconciliationRuntime.js} +0 -0
- /package/dist/domain/{javascriptSemanticCoverage.js → javascript/javascriptSemanticCoverage.js} +0 -0
- /package/dist/domain/{javascriptSemanticDerivedAnalysis.js → javascript/javascriptSemanticDerivedAnalysis.js} +0 -0
- /package/dist/domain/{javascriptSemanticGraphSerialization.js → javascript/javascriptSemanticGraphSerialization.js} +0 -0
- /package/dist/domain/{javascriptSemanticIr.js → javascript/javascriptSemanticIr.js} +0 -0
- /package/dist/domain/{javascriptSemanticQueryRelations.js → javascript/javascriptSemanticQueryRelations.js} +0 -0
- /package/dist/domain/{javascriptSemanticState.js → javascript/javascriptSemanticState.js} +0 -0
- /package/dist/domain/{javascriptSourceParser.js → javascript/javascriptSourceParser.js} +0 -0
- /package/dist/domain/{javascriptStaticAnalysisFindings.js → javascript/javascriptStaticAnalysisFindings.js} +0 -0
- /package/dist/domain/{javascriptStaticAnalysisState.js → javascript/javascriptStaticAnalysisState.js} +0 -0
- /package/dist/domain/{javascriptStaticAnalysisTypes.js → javascript/javascriptStaticAnalysisTypes.js} +0 -0
- /package/dist/domain/{managedApplicationGraphCoverage.js → managed/managedApplicationGraphCoverage.js} +0 -0
- /package/dist/domain/{managedApplicationGraphNodeCoverage.js → managed/managedApplicationGraphNodeCoverage.js} +0 -0
- /package/dist/domain/{nativeApiBoundary.js → native/nativeApiBoundary.js} +0 -0
- /package/dist/domain/{nativeDataType.js → native/nativeDataType.js} +0 -0
- /package/dist/domain/{nativeInstruction.js → native/nativeInstruction.js} +0 -0
- /package/dist/domain/{nativeMetadataRecovery.js → native/nativeMetadataRecovery.js} +0 -0
- /package/dist/domain/{nativeValueFlow.js → native/nativeValueFlow.js} +0 -0
- /package/dist/domain/{nativeValueTrace.js → native/nativeValueTrace.js} +0 -0
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
|
-
import { evidenceSchema } from "
|
|
2
|
+
import { evidenceSchema } from "../evidence.js";
|
|
3
3
|
import { JAVASCRIPT_APPLICATION_NODE_KINDS } from "./javascriptApplicationGraphSchemas.js";
|
|
4
|
-
import { historicalSourceGraphSchema } from "
|
|
5
|
-
import { digestSchema } from "
|
|
6
|
-
import { prefixedDigestSchema } from "
|
|
4
|
+
import { historicalSourceGraphSchema } from "../referenceSourceGraph.js";
|
|
5
|
+
import { digestSchema } from "../digests.js";
|
|
6
|
+
import { prefixedDigestSchema } from "../digests.js";
|
|
7
7
|
const evidenceIdSchema = prefixedDigestSchema("ev");
|
|
8
8
|
const nodeIdSchema = prefixedDigestSchema("jag_node");
|
|
9
9
|
const textSchema = z.string().min(1);
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { posix } from "node:path";
|
|
2
|
-
import { compareCodePoints } from "
|
|
2
|
+
import { compareCodePoints } from "../canonicalOrdering.js";
|
|
3
3
|
import { SOURCE_TO_BUNDLE_SIGNAL_WEIGHTS, } from "./sourceToBundleComparisonSchemas.js";
|
|
4
|
-
import { isDigest } from "
|
|
4
|
+
import { isDigest } from "../digests.js";
|
|
5
5
|
const RELEVANT_NODE_KINDS = new Set([
|
|
6
6
|
"javascript-asset",
|
|
7
7
|
"javascript-module",
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import { createHash } from "node:crypto";
|
|
2
2
|
import canonicalize from "canonicalize";
|
|
3
3
|
import { z } from "zod";
|
|
4
|
-
import { evidenceSchema, parseEvidence } from "
|
|
5
|
-
import { createJavaScriptApplicationGraph, javascriptApplicationGraphSchema, } from "
|
|
4
|
+
import { evidenceSchema, parseEvidence } from "../evidence.js";
|
|
5
|
+
import { createJavaScriptApplicationGraph, javascriptApplicationGraphSchema, } from "../javascript/javascriptApplicationGraph.js";
|
|
6
6
|
import { managedArtifactInspectionSchema, managedMemberInspectionSchema, managedNativeBoundaryInspectionSchema, } from "./managedArtifact.js";
|
|
7
7
|
import { assessManagedGraphOmissions, managedGraphEvidenceCoverage, managedGraphResultCoverage, } from "./managedApplicationGraphCoverage.js";
|
|
8
8
|
import { addArtifactNode, addArtifactIdentityNodes, addBoundaryNodes, addMemberNodes, } from "./managedApplicationGraphNodes.js";
|
|
9
|
-
import { digestSchema } from "
|
|
10
|
-
import { prefixedDigestSchema } from "
|
|
9
|
+
import { digestSchema } from "../digests.js";
|
|
10
|
+
import { prefixedDigestSchema } from "../digests.js";
|
|
11
11
|
const evidenceIdSchema = prefixedDigestSchema("ev");
|
|
12
12
|
const textSchema = z.string().min(1);
|
|
13
13
|
/** Authenticated managed Evidence records projected into the application graph. */
|
package/dist/domain/{managedApplicationGraphNodes.js → managed/managedApplicationGraphNodes.js}
RENAMED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { basename } from "node:path";
|
|
2
|
-
import { createJavaScriptApplicationEdge, createJavaScriptApplicationNode, } from "
|
|
2
|
+
import { createJavaScriptApplicationEdge, createJavaScriptApplicationNode, } from "../javascript/javascriptApplicationGraph.js";
|
|
3
3
|
import { managedSourceCoverage } from "./managedApplicationGraphCoverage.js";
|
|
4
4
|
import {} from "./managedArtifact.js";
|
|
5
5
|
import { moduleCoverageState } from "./managedApplicationGraphNodeCoverage.js";
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
|
-
import { digestSchema } from "
|
|
2
|
+
import { digestSchema } from "../digests.js";
|
|
3
3
|
const tokenSchema = z.string().regex(/^0x[0-9a-f]{8}$/u);
|
|
4
4
|
const offsetSchema = z.number().int().min(0);
|
|
5
5
|
/** A 16-byte CLI metadata GUID without RFC 4122 version/variant restrictions. */
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
|
-
import { emptyArraySchema } from "
|
|
3
|
-
import { evidenceSchema } from "
|
|
2
|
+
import { emptyArraySchema } from "../emptyArraySchema.js";
|
|
3
|
+
import { evidenceSchema } from "../evidence.js";
|
|
4
4
|
import { cliMetadataGuidSchema, } from "./managedArtifact.js";
|
|
5
5
|
import { buildComparisonCoverage, buildComparisonMatching, buildComparisonSummary, comparisonLimitations, sideManifest, } from "./managedMemberComparisonCoverage.js";
|
|
6
6
|
import { buildFieldItems, buildMethodItems, } from "./managedMemberComparisonItems.js";
|
|
7
7
|
import { keyMembers, sha256 } from "./managedMemberComparisonMatch.js";
|
|
8
|
-
import { digestSchema } from "
|
|
9
|
-
import { prefixedDigestSchema } from "
|
|
8
|
+
import { digestSchema } from "../digests.js";
|
|
9
|
+
import { prefixedDigestSchema } from "../digests.js";
|
|
10
10
|
const evidenceIdSchema = prefixedDigestSchema("ev");
|
|
11
11
|
const tokenSchema = z.string().regex(/^0x[0-9a-f]{8}$/u);
|
|
12
12
|
const boundedTextSchema = z.string().min(1);
|
|
@@ -33,7 +33,7 @@ export const buildComparisonSummary = (items) => ({
|
|
|
33
33
|
});
|
|
34
34
|
export const buildComparisonMatching = (methodItems, fieldItems) => ({
|
|
35
35
|
exact_il_signature: methodItems.filter(({ match }) => match.basis === "exact-il-signature").length,
|
|
36
|
-
exact_signature: methodItems.filter(({ match }) => match.basis === "exact-signature").length,
|
|
36
|
+
exact_signature: [...methodItems, ...fieldItems].filter(({ match }) => match.basis === "exact-signature").length,
|
|
37
37
|
structural_method_shape: methodItems.filter(({ match }) => match.basis === "structural-method-shape").length,
|
|
38
38
|
field_signature: fieldItems.filter(({ match }) => match.basis === "field-signature").length,
|
|
39
39
|
ambiguous: methodItems.filter(({ match }) => match.status === "ambiguous").length +
|
|
@@ -44,6 +44,7 @@ export const comparisonLimitations = (left, right) => {
|
|
|
44
44
|
const limitations = [
|
|
45
45
|
"Metadata tokens are build-local coordinates; matched pairs are remaps, not persistent identities.",
|
|
46
46
|
"Methods pair by exact CIL/signature, then declared type, name, and signature, then structural shape; names alone are never a matching basis.",
|
|
47
|
+
"Fields pair by exact signature, then declared type, name, and signature; an undecoded signature is compared only by its raw bytes, and an unmatched member with one stays unknown.",
|
|
47
48
|
];
|
|
48
49
|
if (left.coverage.state !== "complete" || right.coverage.state !== "complete")
|
|
49
50
|
limitations.push("At least one managed member observation is partial.");
|
package/dist/domain/{managedMemberComparisonItems.js → managed/managedMemberComparisonItems.js}
RENAMED
|
@@ -56,72 +56,131 @@ const unmatchedComparison = () => ({
|
|
|
56
56
|
candidate_left_tokens: [],
|
|
57
57
|
candidate_right_tokens: [],
|
|
58
58
|
});
|
|
59
|
-
const methodOnlyItem = (member, context) => {
|
|
59
|
+
const methodOnlyItem = (member, context, undecoded) => {
|
|
60
60
|
if (member.left !== undefined) {
|
|
61
|
-
const
|
|
61
|
+
const limitations = absenceLimitations(member.left, {
|
|
62
|
+
oppositeComplete: context.rightComplete,
|
|
63
|
+
oppositeUndecodedNames: undecoded.right,
|
|
64
|
+
opposite: "right",
|
|
65
|
+
inventory: "method",
|
|
66
|
+
});
|
|
62
67
|
return {
|
|
63
68
|
item_id: `mmc_method_${sha256({ token: member.left.token, side: "left" })}`,
|
|
64
|
-
status:
|
|
69
|
+
status: limitations.length === 0 ? "removed" : "unknown",
|
|
65
70
|
left: methodIdentity(member.left),
|
|
66
71
|
right: null,
|
|
67
72
|
match: unmatchedComparison(),
|
|
68
73
|
dimensions: ["availability"],
|
|
69
74
|
evidence_links: [context.leftEvidenceId, context.rightEvidenceId],
|
|
70
|
-
limitations
|
|
71
|
-
? []
|
|
72
|
-
: [
|
|
73
|
-
"unknown-within-incomplete-metadata: The right method inventory is incomplete, so absence was not observed.",
|
|
74
|
-
],
|
|
75
|
+
limitations,
|
|
75
76
|
};
|
|
76
77
|
}
|
|
77
|
-
const
|
|
78
|
+
const limitations = absenceLimitations(member.right, {
|
|
79
|
+
oppositeComplete: context.leftComplete,
|
|
80
|
+
oppositeUndecodedNames: undecoded.left,
|
|
81
|
+
opposite: "left",
|
|
82
|
+
inventory: "method",
|
|
83
|
+
});
|
|
78
84
|
return {
|
|
79
85
|
item_id: `mmc_method_${sha256({ token: member.right.token, side: "right" })}`,
|
|
80
|
-
status:
|
|
86
|
+
status: limitations.length === 0 ? "added" : "unknown",
|
|
81
87
|
left: null,
|
|
82
88
|
right: methodIdentity(member.right),
|
|
83
89
|
match: unmatchedComparison(),
|
|
84
90
|
dimensions: ["availability"],
|
|
85
91
|
evidence_links: [context.leftEvidenceId, context.rightEvidenceId],
|
|
86
|
-
limitations
|
|
87
|
-
? []
|
|
88
|
-
: [
|
|
89
|
-
"unknown-within-incomplete-metadata: The left method inventory is incomplete, so absence was not observed.",
|
|
90
|
-
],
|
|
92
|
+
limitations,
|
|
91
93
|
};
|
|
92
94
|
};
|
|
93
|
-
|
|
95
|
+
/**
|
|
96
|
+
* Why a one-sided member's absence from the other inventory was not
|
|
97
|
+
* observed: that inventory is incomplete, the member's own signature was not
|
|
98
|
+
* decoded, so no shape round could seek a changed counterpart, or the other
|
|
99
|
+
* inventory has an unpaired (one-sided or ambiguous) same-named member whose
|
|
100
|
+
* signature was not decoded, which may be this member with a changed
|
|
101
|
+
* signature.
|
|
102
|
+
*/
|
|
103
|
+
const absenceLimitations = (member, opposite) => [
|
|
104
|
+
...(opposite.oppositeComplete
|
|
105
|
+
? []
|
|
106
|
+
: [
|
|
107
|
+
`unknown-within-incomplete-metadata: The ${opposite.opposite} ${opposite.inventory} inventory is incomplete, so absence was not observed.`,
|
|
108
|
+
]),
|
|
109
|
+
...(member.signature.parse_status === "decoded"
|
|
110
|
+
? []
|
|
111
|
+
: [
|
|
112
|
+
`signature-not-decoded: The member's ${member.signature.parse_status} signature was compared only by exact declared type, name, and raw bytes, so a changed or renamed counterpart could not be sought.`,
|
|
113
|
+
]),
|
|
114
|
+
...(member.signature.parse_status === "decoded" &&
|
|
115
|
+
opposite.oppositeUndecodedNames.has(declaredName(member))
|
|
116
|
+
? [
|
|
117
|
+
`counterpart-signature-not-decoded: The ${opposite.opposite} ${opposite.inventory} inventory has an unpaired member with the same declared type and name whose signature was not decoded, so it may be this member with a changed signature.`,
|
|
118
|
+
]
|
|
119
|
+
: []),
|
|
120
|
+
];
|
|
121
|
+
const declaredName = (member) => JSON.stringify([member.declaring_type, member.name]);
|
|
122
|
+
/**
|
|
123
|
+
* Declared names of unpaired members whose signature was not decoded: one-sided
|
|
124
|
+
* members and candidates of ambiguous groups, which also remain unpaired.
|
|
125
|
+
*/
|
|
126
|
+
const undecodedOneSidedNames = (members) => {
|
|
127
|
+
const names = (side) => new Set(side
|
|
128
|
+
.filter(({ item }) => item.signature.parse_status !== "decoded")
|
|
129
|
+
.map(({ item }) => declaredName(item)));
|
|
130
|
+
return {
|
|
131
|
+
left: names([
|
|
132
|
+
...members.leftOnly,
|
|
133
|
+
...members.ambiguous.flatMap(({ left }) => left),
|
|
134
|
+
]),
|
|
135
|
+
right: names([
|
|
136
|
+
...members.rightOnly,
|
|
137
|
+
...members.ambiguous.flatMap(({ right }) => right),
|
|
138
|
+
]),
|
|
139
|
+
};
|
|
140
|
+
};
|
|
141
|
+
const fieldOnlyItem = (member, context, undecoded) => {
|
|
94
142
|
if (member.left !== undefined) {
|
|
95
|
-
const
|
|
143
|
+
const limitations = absenceLimitations(member.left, {
|
|
144
|
+
oppositeComplete: context.rightComplete,
|
|
145
|
+
oppositeUndecodedNames: undecoded.right,
|
|
146
|
+
opposite: "right",
|
|
147
|
+
inventory: "field",
|
|
148
|
+
});
|
|
96
149
|
return {
|
|
97
150
|
item_id: `mmc_field_${sha256({ token: member.left.token, side: "left" })}`,
|
|
98
|
-
status:
|
|
151
|
+
status: limitations.length === 0 ? "removed" : "unknown",
|
|
99
152
|
left: fieldIdentity(member.left),
|
|
100
153
|
right: null,
|
|
101
154
|
match: unmatchedComparison(),
|
|
102
155
|
evidence_links: [context.leftEvidenceId, context.rightEvidenceId],
|
|
103
|
-
limitations
|
|
104
|
-
? []
|
|
105
|
-
: [
|
|
106
|
-
"unknown-within-incomplete-metadata: The right field inventory is incomplete, so absence was not observed.",
|
|
107
|
-
],
|
|
156
|
+
limitations,
|
|
108
157
|
};
|
|
109
158
|
}
|
|
110
|
-
const
|
|
159
|
+
const limitations = absenceLimitations(member.right, {
|
|
160
|
+
oppositeComplete: context.leftComplete,
|
|
161
|
+
oppositeUndecodedNames: undecoded.left,
|
|
162
|
+
opposite: "left",
|
|
163
|
+
inventory: "field",
|
|
164
|
+
});
|
|
111
165
|
return {
|
|
112
166
|
item_id: `mmc_field_${sha256({ token: member.right.token, side: "right" })}`,
|
|
113
|
-
status:
|
|
167
|
+
status: limitations.length === 0 ? "added" : "unknown",
|
|
114
168
|
left: null,
|
|
115
169
|
right: fieldIdentity(member.right),
|
|
116
170
|
match: unmatchedComparison(),
|
|
117
171
|
evidence_links: [context.leftEvidenceId, context.rightEvidenceId],
|
|
118
|
-
limitations
|
|
119
|
-
? []
|
|
120
|
-
: [
|
|
121
|
-
"unknown-within-incomplete-metadata: The left field inventory is incomplete, so absence was not observed.",
|
|
122
|
-
],
|
|
172
|
+
limitations,
|
|
123
173
|
};
|
|
124
174
|
};
|
|
175
|
+
/**
|
|
176
|
+
* Name the identity key an ambiguous group shares. The exact-signature key
|
|
177
|
+
* already includes the declared type and name, so names cannot separate it.
|
|
178
|
+
*/
|
|
179
|
+
const ambiguityLimitation = (members, basis) => basis === "exact-signature"
|
|
180
|
+
? `Multiple managed ${members} share the same declared type, name, and raw signature; REA did not guess a token remap.`
|
|
181
|
+
: members === "methods"
|
|
182
|
+
? "Multiple managed methods share the same non-name identity key; REA did not guess a token remap."
|
|
183
|
+
: "Multiple managed fields share the same signature; REA did not guess a token remap from names.";
|
|
125
184
|
export const buildMethodItems = (matches, context) => {
|
|
126
185
|
const items = [];
|
|
127
186
|
for (const pair of matches.pairs) {
|
|
@@ -178,15 +237,14 @@ export const buildMethodItems = (matches, context) => {
|
|
|
178
237
|
},
|
|
179
238
|
dimensions: ["availability"],
|
|
180
239
|
evidence_links: [context.leftEvidenceId, context.rightEvidenceId],
|
|
181
|
-
limitations: [
|
|
182
|
-
"Multiple managed methods share the same non-name identity key; REA did not guess a token remap.",
|
|
183
|
-
],
|
|
240
|
+
limitations: [ambiguityLimitation("methods", ambiguous.basis)],
|
|
184
241
|
});
|
|
185
242
|
}
|
|
243
|
+
const undecoded = undecodedOneSidedNames(matches);
|
|
186
244
|
for (const item of matches.leftOnly)
|
|
187
|
-
items.push(methodOnlyItem({ left: item.item }, context));
|
|
245
|
+
items.push(methodOnlyItem({ left: item.item }, context, undecoded));
|
|
188
246
|
for (const item of matches.rightOnly)
|
|
189
|
-
items.push(methodOnlyItem({ right: item.item }, context));
|
|
247
|
+
items.push(methodOnlyItem({ right: item.item }, context, undecoded));
|
|
190
248
|
return items;
|
|
191
249
|
};
|
|
192
250
|
export const buildFieldItems = (matches, context) => {
|
|
@@ -231,13 +289,12 @@ export const buildFieldItems = (matches, context) => {
|
|
|
231
289
|
candidate_right_tokens: ambiguous.right.map(({ item }) => item.token),
|
|
232
290
|
},
|
|
233
291
|
evidence_links: [context.leftEvidenceId, context.rightEvidenceId],
|
|
234
|
-
limitations: [
|
|
235
|
-
"Multiple managed fields share the same signature; REA did not guess a token remap from names.",
|
|
236
|
-
],
|
|
292
|
+
limitations: [ambiguityLimitation("fields", ambiguous.basis)],
|
|
237
293
|
});
|
|
294
|
+
const undecoded = undecodedOneSidedNames(matches);
|
|
238
295
|
for (const item of matches.leftOnly)
|
|
239
|
-
items.push(fieldOnlyItem({ left: item.item }, context));
|
|
296
|
+
items.push(fieldOnlyItem({ left: item.item }, context, undecoded));
|
|
240
297
|
for (const item of matches.rightOnly)
|
|
241
|
-
items.push(fieldOnlyItem({ right: item.item }, context));
|
|
298
|
+
items.push(fieldOnlyItem({ right: item.item }, context, undecoded));
|
|
242
299
|
return items;
|
|
243
300
|
};
|
package/dist/domain/{managedMemberComparisonMatch.js → managed/managedMemberComparisonMatch.js}
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { createHash } from "node:crypto";
|
|
2
2
|
import canonicalize from "canonicalize";
|
|
3
|
-
import { parseEvidence } from "
|
|
3
|
+
import { parseEvidence } from "../evidence.js";
|
|
4
4
|
import { managedMemberInspectionSchema, } from "./managedArtifact.js";
|
|
5
5
|
export const sha256 = (value) => {
|
|
6
6
|
const serialized = canonicalize(value);
|
|
@@ -19,14 +19,13 @@ const keyMethod = (item) => ({
|
|
|
19
19
|
item.body.normalized_il_sha256,
|
|
20
20
|
])
|
|
21
21
|
: null,
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
: null,
|
|
22
|
+
// The raw blob is the exact signature; decoding only feeds shape keys.
|
|
23
|
+
signatureKey: stableKey([
|
|
24
|
+
"method-signature",
|
|
25
|
+
item.declaring_type,
|
|
26
|
+
item.name,
|
|
27
|
+
item.signature.raw_sha256,
|
|
28
|
+
]),
|
|
30
29
|
structuralKey: item.signature.parse_status === "decoded" && item.body.status === "present"
|
|
31
30
|
? stableKey([
|
|
32
31
|
"method-structural",
|
|
@@ -61,7 +60,14 @@ const keyField = (item) => ({
|
|
|
61
60
|
exactKey: item.signature.parse_status === "decoded"
|
|
62
61
|
? stableKey(["field-exact", item.signature.raw_sha256])
|
|
63
62
|
: null,
|
|
64
|
-
|
|
63
|
+
// Only an undecoded field reaches this round: a decoded field with the
|
|
64
|
+
// same raw signature already met its counterpart in the exact round.
|
|
65
|
+
signatureKey: stableKey([
|
|
66
|
+
"field-signature",
|
|
67
|
+
item.declaring_type,
|
|
68
|
+
item.name,
|
|
69
|
+
item.signature.raw_sha256,
|
|
70
|
+
]),
|
|
65
71
|
structuralKey: stableKey([
|
|
66
72
|
"field-structural",
|
|
67
73
|
item.signature.kind,
|
|
@@ -89,7 +95,12 @@ const matchFields = (left, right) => matchByKeys({
|
|
|
89
95
|
left,
|
|
90
96
|
right,
|
|
91
97
|
exactBasis: "field-signature",
|
|
92
|
-
fallbackBases: [
|
|
98
|
+
fallbackBases: [
|
|
99
|
+
{
|
|
100
|
+
basis: "exact-signature",
|
|
101
|
+
key: ({ signatureKey }) => signatureKey,
|
|
102
|
+
},
|
|
103
|
+
],
|
|
93
104
|
});
|
|
94
105
|
const matchByKeys = ({ left, right, exactBasis, fallbackBases, }) => {
|
|
95
106
|
const usedLeft = new Set();
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { createHash } from "node:crypto";
|
|
2
2
|
import canonicalize from "canonicalize";
|
|
3
|
-
import { parseEvidence } from "
|
|
3
|
+
import { parseEvidence } from "../evidence.js";
|
|
4
4
|
import { managedNativeBoundaryInspectionSchema, } from "./managedArtifact.js";
|
|
5
5
|
import { managedNativeVerificationResultSchema, } from "./managedNativeVerificationSchemas.js";
|
|
6
6
|
import { buildVerificationResult, collectNativeSymbols, verifyPinvoke, } from "./managedNativeVerificationMatch.js";
|
package/dist/domain/{managedNativeVerificationMatch.js → managed/managedNativeVerificationMatch.js}
RENAMED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { createHash } from "node:crypto";
|
|
2
2
|
import { basename } from "node:path";
|
|
3
3
|
import canonicalize from "canonicalize";
|
|
4
|
-
import { parseEvidence } from "
|
|
5
|
-
import { functionDossierSchema } from "
|
|
6
|
-
import { inspectMachoSchema } from "
|
|
4
|
+
import { parseEvidence } from "../evidence.js";
|
|
5
|
+
import { functionDossierSchema } from "../hopperValues.js";
|
|
6
|
+
import { inspectMachoSchema } from "../native/nativeInspection.js";
|
|
7
7
|
import { pinvokeVerificationSchema, } from "./managedNativeVerificationSchemas.js";
|
|
8
8
|
const digest = (value) => {
|
|
9
9
|
const serialized = canonicalize(value);
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
|
-
import { emptyArraySchema } from "
|
|
3
|
-
import { evidenceSchema } from "
|
|
2
|
+
import { emptyArraySchema } from "../emptyArraySchema.js";
|
|
3
|
+
import { evidenceSchema } from "../evidence.js";
|
|
4
4
|
import { cliMetadataGuidSchema } from "./managedArtifact.js";
|
|
5
|
-
import { digestSchema } from "
|
|
6
|
-
import { prefixedDigestSchema } from "
|
|
5
|
+
import { digestSchema } from "../digests.js";
|
|
6
|
+
import { prefixedDigestSchema } from "../digests.js";
|
|
7
7
|
const evidenceIdSchema = prefixedDigestSchema("ev");
|
|
8
8
|
const tokenSchema = z.string().regex(/^0x[0-9a-f]{8}$/u);
|
|
9
9
|
const textSchema = z.string().min(1);
|
|
@@ -176,4 +176,5 @@ export const managedNativeVerificationResultSchema = z
|
|
|
176
176
|
path: ["summary", "native_body_unresolved"],
|
|
177
177
|
message: "Native body summary must match unresolved implementations",
|
|
178
178
|
});
|
|
179
|
-
})
|
|
179
|
+
})
|
|
180
|
+
.describe("Counts must agree across the result: native accepted plus unsupported equals total; each P/Invoke summary count equals the number of items with that status; and native_body_unresolved equals native_implementations.unresolved. REA checks these cross-field invariants after constructing the result.");
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { createHash } from "node:crypto";
|
|
2
2
|
import canonicalize from "canonicalize";
|
|
3
3
|
import { z } from "zod";
|
|
4
|
-
import { evidenceSchema, parseEvidence } from "
|
|
4
|
+
import { evidenceSchema, parseEvidence } from "../evidence.js";
|
|
5
5
|
import { cliMetadataGuidSchema, managedMemberInspectionSchema, } from "./managedArtifact.js";
|
|
6
|
-
import { digestSchema } from "
|
|
7
|
-
import { prefixedDigestSchema } from "
|
|
6
|
+
import { digestSchema } from "../digests.js";
|
|
7
|
+
import { prefixedDigestSchema } from "../digests.js";
|
|
8
8
|
const evidenceIdSchema = prefixedDigestSchema("ev");
|
|
9
9
|
const tokenSchema = z.string().regex(/^0x[0-9a-f]{8}$/u);
|
|
10
10
|
const textSchema = z.string().min(1);
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
|
-
import { functionDossierSchema } from "
|
|
2
|
+
import { functionDossierSchema } from "../hopperValues.js";
|
|
3
3
|
/** One explicit function's analyst-authored metadata changes. */
|
|
4
4
|
export const nativeFunctionAnnotationsInputSchema = z
|
|
5
5
|
.strictObject({
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
2
|
import { nativeMetadataEvidenceSchema, nativeMetadataLocationSchema, } from "./objcSwiftMetadata.js";
|
|
3
|
-
import { jsonValueSchema } from "
|
|
3
|
+
import { jsonValueSchema } from "../jsonValue.js";
|
|
4
4
|
/** Entity kinds shared by decoded Interface Builder archives and native code. */
|
|
5
5
|
export const nativeInvestigationNodeKindSchema = z.enum([
|
|
6
6
|
"storyboard",
|
|
@@ -154,14 +154,23 @@ export const traceNativeInvestigationGraph = (graph, input) => {
|
|
|
154
154
|
let reachedDepth = 0;
|
|
155
155
|
let truncated = false;
|
|
156
156
|
let reason = null;
|
|
157
|
+
const adjacency = new Map();
|
|
158
|
+
for (const edge of graph.edges) {
|
|
159
|
+
const nodeId = direction === "forward" ? edge.from : edge.to;
|
|
160
|
+
if (nodeId === null)
|
|
161
|
+
continue;
|
|
162
|
+
const entries = adjacency.get(nodeId);
|
|
163
|
+
if (entries === undefined)
|
|
164
|
+
adjacency.set(nodeId, [edge]);
|
|
165
|
+
else
|
|
166
|
+
entries.push(edge);
|
|
167
|
+
}
|
|
157
168
|
while (queue.length > 0) {
|
|
158
169
|
const current = queue.shift();
|
|
159
170
|
if (current === undefined)
|
|
160
171
|
break;
|
|
161
172
|
reachedDepth = Math.max(reachedDepth, current.depth);
|
|
162
|
-
const adjacent =
|
|
163
|
-
? edge.from === current.id
|
|
164
|
-
: edge.to === current.id);
|
|
173
|
+
const adjacent = adjacency.get(current.id) ?? [];
|
|
165
174
|
for (const edge of adjacent) {
|
|
166
175
|
if (selectedEdges.size + unresolved.size >= limits.max_edges) {
|
|
167
176
|
truncated = true;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
2
|
import { nativeMetadataRecoverySummarySchema } from "./nativeMetadataRecovery.js";
|
|
3
|
-
import { jsonValueSchema } from "
|
|
3
|
+
import { jsonValueSchema } from "../jsonValue.js";
|
|
4
4
|
const integer = z.number().int().min(0).max(Number.MAX_SAFE_INTEGER);
|
|
5
5
|
const digest = z.string().regex(/^[a-f0-9]{64}$/u);
|
|
6
6
|
const hexBytes = z.string().regex(/^(?:[a-f0-9]{2})*$/u);
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { createHash } from "node:crypto";
|
|
2
2
|
import { z } from "zod";
|
|
3
|
-
import { decodeCanonicalBase64 } from "
|
|
3
|
+
import { decodeCanonicalBase64 } from "../webScreenshot.js";
|
|
4
4
|
const scope = {
|
|
5
5
|
pid: z.number().int().positive(),
|
|
6
6
|
window_id: z.number().int().positive(),
|
|
@@ -51,10 +51,24 @@ export const nativeUiScenarioInputSchema = z.strictObject({
|
|
|
51
51
|
const nativeUiScreenshotSchema = z
|
|
52
52
|
.strictObject({
|
|
53
53
|
mime_type: z.literal("image/png"),
|
|
54
|
-
base64: z
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
54
|
+
base64: z
|
|
55
|
+
.string()
|
|
56
|
+
.min(4)
|
|
57
|
+
.describe("Canonical base64 encoding of PNG bytes; the decoded bytes must have a PNG signature and IHDR chunk."),
|
|
58
|
+
sha256: z
|
|
59
|
+
.string()
|
|
60
|
+
.regex(/^[a-f0-9]{64}$/u)
|
|
61
|
+
.describe("SHA-256 digest of the decoded PNG bytes."),
|
|
62
|
+
width: z
|
|
63
|
+
.number()
|
|
64
|
+
.int()
|
|
65
|
+
.positive()
|
|
66
|
+
.describe("Must equal the width encoded in the PNG IHDR chunk."),
|
|
67
|
+
height: z
|
|
68
|
+
.number()
|
|
69
|
+
.int()
|
|
70
|
+
.positive()
|
|
71
|
+
.describe("Must equal the height encoded in the PNG IHDR chunk."),
|
|
58
72
|
})
|
|
59
73
|
.superRefine((screenshot, context) => {
|
|
60
74
|
const bytes = decodeCanonicalBase64(screenshot.base64);
|
|
@@ -101,7 +115,7 @@ export const nativeUiSnapshotSchema = z.strictObject({
|
|
|
101
115
|
title: z.string().nullable(),
|
|
102
116
|
value: z.string().nullable(),
|
|
103
117
|
actions: z.array(z.string()),
|
|
104
|
-
children_count: z.number().int().nonnegative(),
|
|
118
|
+
children_count: z.number().int().nonnegative().nullable(),
|
|
105
119
|
})),
|
|
106
120
|
truncated: z.boolean(),
|
|
107
121
|
screenshot: nativeUiScreenshotSchema.nullable(),
|
|
@@ -133,6 +133,22 @@ export const objcDispatchImplementationSchema = z.strictObject({
|
|
|
133
133
|
selector: z.string().min(1),
|
|
134
134
|
method_type: z.enum(["instance", "class"]),
|
|
135
135
|
implementation_address: z.string().nullable(),
|
|
136
|
+
/** Category that adds this method, when it is not defined by the class itself. */
|
|
137
|
+
category: z.string().nullable().optional(),
|
|
138
|
+
location: nativeMetadataLocationSchema,
|
|
139
|
+
decode: nativeMetadataDecodeSchema,
|
|
140
|
+
evidence: z.array(nativeMetadataEvidenceSchema).min(1),
|
|
141
|
+
});
|
|
142
|
+
/** Objective-C category: methods, protocols and properties added to a class. */
|
|
143
|
+
export const objcCategorySchema = z.strictObject({
|
|
144
|
+
name: z.string().min(1),
|
|
145
|
+
/** Extended class; external classes come from the category's bind symbol. */
|
|
146
|
+
class_name: z.string().min(1).nullable(),
|
|
147
|
+
class_source: z.enum(["local", "external", "unresolved"]),
|
|
148
|
+
instance_methods: z.array(z.string()),
|
|
149
|
+
class_methods: z.array(z.string()),
|
|
150
|
+
protocols: z.array(z.string()),
|
|
151
|
+
properties: z.array(objcPropertySchema),
|
|
136
152
|
location: nativeMetadataLocationSchema,
|
|
137
153
|
decode: nativeMetadataDecodeSchema,
|
|
138
154
|
evidence: z.array(nativeMetadataEvidenceSchema).min(1),
|
|
@@ -240,6 +256,7 @@ export const dbSaveResultSchema = z.strictObject({
|
|
|
240
256
|
export const objcSwiftMetadataSchema = z.strictObject({
|
|
241
257
|
objc_classes: z.array(objcClassSchema).default([]),
|
|
242
258
|
objc_protocols: z.array(objcProtocolSchema).default([]),
|
|
259
|
+
objc_categories: z.array(objcCategorySchema).default([]),
|
|
243
260
|
swift_decls: z.array(swiftDeclSchema).default([]),
|
|
244
261
|
objc_ivars: z.array(objcIvarSchema).default([]),
|
|
245
262
|
objc_protocol_records: z.array(objcProtocolRecordSchema).default([]),
|
|
@@ -165,13 +165,15 @@ const processCaptureShapeSchema = z.strictObject({
|
|
|
165
165
|
}),
|
|
166
166
|
});
|
|
167
167
|
/** Exact serialized shape plus all process-capture semantic invariants. */
|
|
168
|
-
export const processCaptureSchema = processCaptureShapeSchema
|
|
168
|
+
export const processCaptureSchema = processCaptureShapeSchema
|
|
169
|
+
.superRefine((capture, context) => {
|
|
169
170
|
for (const issue of collectProcessCaptureIssues(capture))
|
|
170
171
|
context.addIssue({
|
|
171
172
|
code: "custom",
|
|
172
173
|
path: issue.path.split("."),
|
|
173
174
|
message: issue.message,
|
|
174
175
|
});
|
|
175
|
-
})
|
|
176
|
+
})
|
|
177
|
+
.describe("The capture must preserve its canonical scenario, comparison, and normalization SHA-256 commitments; ordered capture timestamps and contiguous sequence numbers; before and final filesystem snapshots with truncation propagated; and exit-code consistency with deadline termination. When parsing older input without an event journal, REA supplies an empty journal; empty journals are valid. A non-empty journal must reference every captured observation exactly once with unique in-range references. These cross-field invariants are checked by REA after capture.");
|
|
176
178
|
export { parseProcessCapture } from "./processCaptureParsing.js";
|
|
177
179
|
export { compareProcessCaptures, comparisonStatusSchema, deriveProcessComparisonStatus, PROCESS_COMPARISON_DIMENSIONS, processCaptureComparisonSchema, } from "./processComparison.js";
|
|
@@ -3,10 +3,18 @@ import canonicalize from "canonicalize";
|
|
|
3
3
|
import { z } from "zod";
|
|
4
4
|
const positiveBudget = z.number().int().safe().positive();
|
|
5
5
|
const timedEventBase = { at_ms: z.number().int().safe().nonnegative() };
|
|
6
|
+
const reservedRunIdEnvironmentName = "REA_PROCESS_RUN_ID";
|
|
6
7
|
const environmentName = z
|
|
7
8
|
.string()
|
|
8
|
-
.
|
|
9
|
-
|
|
9
|
+
.min(1, "Environment names must not be empty")
|
|
10
|
+
.regex(/^(?!REA_PROCESS_RUN_ID(?![\s\S]))[^=\0]+$/u, {
|
|
11
|
+
error: (issue) => issue.input === reservedRunIdEnvironmentName
|
|
12
|
+
? `${reservedRunIdEnvironmentName} is reserved by the process adapter`
|
|
13
|
+
: "Environment names cannot contain '=' or NUL",
|
|
14
|
+
});
|
|
15
|
+
const childProcessString = z
|
|
16
|
+
.string()
|
|
17
|
+
.regex(/^[^\0]*$/u, "Values passed to operating-system APIs cannot contain NUL");
|
|
10
18
|
export const normalizationSchema = z.object({
|
|
11
19
|
paths: z.boolean(),
|
|
12
20
|
pids: z.boolean(),
|
|
@@ -61,11 +69,13 @@ export const processComparisonContract = (scenario) => ({
|
|
|
61
69
|
*/
|
|
62
70
|
export const processScenarioSchema = z
|
|
63
71
|
.object({
|
|
64
|
-
executable:
|
|
65
|
-
arguments: z.array(
|
|
66
|
-
working_directory:
|
|
67
|
-
environment: z.record(environmentName,
|
|
68
|
-
filesystem_observation_paths: z
|
|
72
|
+
executable: childProcessString.min(1),
|
|
73
|
+
arguments: z.array(childProcessString).default([]),
|
|
74
|
+
working_directory: childProcessString.default("."),
|
|
75
|
+
environment: z.record(environmentName, childProcessString).default({}),
|
|
76
|
+
filesystem_observation_paths: z
|
|
77
|
+
.array(childProcessString.min(1))
|
|
78
|
+
.default([]),
|
|
69
79
|
terminal: z
|
|
70
80
|
.object({
|
|
71
81
|
columns: z.number().int().min(1).max(65_535).default(80),
|
|
@@ -147,16 +157,6 @@ export const processScenarioSchema = z
|
|
|
147
157
|
});
|
|
148
158
|
}
|
|
149
159
|
}
|
|
150
|
-
const explicit = new Set(Object.keys(scenario.environment));
|
|
151
|
-
for (const name of explicit) {
|
|
152
|
-
if (reservedEnvironment.has(name)) {
|
|
153
|
-
context.addIssue({
|
|
154
|
-
code: "custom",
|
|
155
|
-
message: `${name} is reserved by the process adapter`,
|
|
156
|
-
path: ["environment", name],
|
|
157
|
-
});
|
|
158
|
-
}
|
|
159
|
-
}
|
|
160
160
|
for (const event of scenario.events) {
|
|
161
161
|
if (event.at_ms > scenario.timeout_ms) {
|
|
162
162
|
context.addIssue({
|