rea-agents 4.0.0 → 4.1.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 +93 -30
- package/bridge/ghidra/ReaGhidraBridge.java +358 -15
- package/bridge/ghidra/ReaGhidraExtensions.java +113 -0
- package/bridge/ghidra/ReaGhidraPrepareCom.java +32 -0
- package/dist/android/AndroidTargetSnapshot.js +34 -0
- package/dist/android/JadxAnalysis.js +191 -0
- package/dist/android/JadxConfiguration.js +41 -0
- package/dist/android/JadxMcpTransport.js +145 -0
- package/dist/android/JadxProtocol.js +101 -0
- package/dist/android/JadxProvider.js +170 -0
- package/dist/android/JadxRelease.js +19 -0
- package/dist/android/JadxSession.js +97 -0
- package/dist/application/AnalysisContextQueries.js +2 -1
- package/dist/application/AnalysisProviderEvaluation.js +5 -3
- package/dist/application/AnalysisProviderRegistry.js +2 -1
- package/dist/application/AnalysisSnapshotCache.js +4 -1
- package/dist/application/AnalysisSnapshotFiles.js +1 -1
- package/dist/application/AndroidAnalysisPort.js +1 -0
- package/dist/application/AndroidAnalysisService.js +37 -0
- package/dist/application/ArtifactExtraction.js +7 -4
- package/dist/application/ArtifactGraphConstruction.js +10 -17
- package/dist/application/ArtifactInventory/scanCanonical.js +8 -7
- package/dist/application/BinarySession.js +16 -3
- package/dist/application/BinarySessionExecution.js +4 -1
- package/dist/application/BinarySessionOpen.js +3 -2
- package/dist/application/BinarySessionRecords.js +9 -3
- package/dist/application/BinaryTargetResolver.js +25 -6
- package/dist/application/BrowserObservationService.js +2 -1
- package/dist/application/BrowserScenarioCaptureService.js +2 -1
- package/dist/application/BrowserScenarioEvidence.js +2 -2
- package/dist/application/CallPathTracing.js +2 -1
- package/dist/application/CapabilityInventory.js +18 -0
- package/dist/application/ClientConfigPath.js +3 -1
- package/dist/application/ClientConfigurationDocument.js +11 -1
- package/dist/application/ClientRegistrationStatus.js +8 -1
- package/dist/application/CompositeProvider.js +1 -1
- package/dist/application/DirectAnalysis.js +23 -7
- package/dist/application/DirectAnalysisStatus.js +3 -3
- package/dist/application/Doctor.js +48 -8
- package/dist/application/DoctorDiagnostics.js +7 -5
- package/dist/application/DoctorScope.js +1 -1
- package/dist/application/ElectronActiveEvidence.js +2 -2
- package/dist/application/ElectronActiveObservationService.js +2 -1
- package/dist/application/ElectronBoundaryAnalysis.js +1 -1
- package/dist/application/ElectronObservationService.js +2 -1
- package/dist/application/EnhancedLiteralTracing.js +2 -1
- package/dist/application/EnhancedToolTypes.js +2 -1
- package/dist/application/EnhancedTools.js +3 -1
- package/dist/application/EvidenceBundleCommands.js +2 -1
- package/dist/application/EvidenceBundleFiles.js +1 -1
- package/dist/application/EvidenceInputResolver.js +30 -0
- package/dist/application/EvidenceLedger.js +2 -1
- package/dist/application/FirmwareAnalysisPort.js +1 -0
- package/dist/application/FirmwareAnalysisService.js +35 -0
- package/dist/application/FunctionAnalysisEvidence.js +32 -0
- package/dist/application/InventoryProjectionEvidence.js +2 -1
- package/dist/application/JavaScriptApplicationService.js +50 -3
- package/dist/application/JavaScriptApplicationWorkflowService.js +2 -1
- package/dist/application/JavaScriptArtifactAnalysis.js +4 -2
- package/dist/application/JavaScriptArtifactFiles.js +4 -2
- package/dist/application/JavaScriptArtifactPathResolution.js +6 -2
- package/dist/application/JavaScriptJsonModules.js +3 -2
- package/dist/application/JavaScriptModuleRelationships.js +4 -2
- package/dist/application/JavaScriptRuntimeObservationService.js +2 -1
- package/dist/application/JavaScriptRuntimeReconciliationService.js +2 -1
- package/dist/application/JavaScriptSemanticGraphProjection.js +1 -1
- package/dist/application/JavaScriptSemanticTraceService.js +2 -1
- package/dist/application/JsonFiles.js +1 -1
- package/dist/application/LazyAnalysisProvider.js +3 -1
- package/dist/application/LinuxHopper.js +12 -4
- package/dist/application/MacHopper.js +20 -7
- package/dist/application/ManagedApplicationGraphService.js +2 -1
- package/dist/application/ManagedMemberComparisonService.js +3 -1
- package/dist/application/ManagedNativeVerificationService.js +2 -1
- package/dist/application/ManagedReconstructionService.js +2 -1
- package/dist/application/NativeCallRoutes.js +1 -1
- package/dist/application/NativeDispatchMetadataInspection.js +1 -1
- package/dist/application/NativeUiActionTrace.js +2 -1
- package/dist/application/NativeValueTrace.js +1 -1
- package/dist/application/ProcessCaptureError.js +1 -1
- package/dist/application/ProcessCaptureJournal.js +3 -1
- package/dist/application/ProcessCaptureLifecycle.js +6 -3
- package/dist/application/ProcessCli.js +9 -5
- package/dist/application/ProcessEvidence.js +2 -6
- package/dist/application/ProcessHarness.js +3 -2
- package/dist/application/ProcessNormalization.js +12 -5
- package/dist/application/ProcessSampling.js +3 -1
- package/dist/application/ReconstructionCoverageService.js +2 -1
- package/dist/application/ReconstructionObligationLedgerService.js +2 -1
- package/dist/application/ReferenceSourceImportEntries.js +2 -0
- package/dist/application/ReferenceSourceImportPolicy.js +4 -2
- package/dist/application/ReferenceSourceVcsAdapter.js +35 -4
- package/dist/application/SessionProviderRouter.js +4 -1
- package/dist/application/Setup.js +1 -128
- package/dist/application/SetupClientConfiguration.js +17 -6
- package/dist/application/SetupHost.js +111 -0
- package/dist/application/SetupRegistrationEnvironment.js +1 -2
- package/dist/application/SetupSkill.js +9 -3
- package/dist/application/SetupTypes.js +17 -0
- package/dist/application/StoreFileLock.js +7 -2
- package/dist/application/SupportedClients.js +8 -0
- package/dist/application/Uninstall.js +9 -4
- package/dist/application/UpdateRuntime.js +5 -2
- package/dist/application/WindowsCapabilities.js +7 -7
- package/dist/application/runtime.js +3 -1
- package/dist/artifacts/ArtifactProvider.js +3 -1
- package/dist/artifacts/DirectoryArtifactReader.js +2 -0
- package/dist/artifacts/NativeDmgArtifactReader.js +10 -3
- package/dist/artifacts/NibArchive.js +4 -2
- package/dist/artifacts/SafeOutputTree.js +26 -10
- package/dist/artifacts/ZipArtifactReader.js +1 -0
- package/dist/browser/BrowserProcessStartup.js +3 -1
- package/dist/browser/CdpAuthorizedMainFrame.js +1 -1
- package/dist/browser/CdpBrowserProvider.js +4 -1
- package/dist/browser/CdpCaptureDocuments.js +3 -1
- package/dist/browser/CdpCaptureEventHandlers.js +6 -2
- package/dist/browser/CdpCaptureStorageFingerprints.js +1 -1
- package/dist/browser/CdpCaptureValues.js +6 -2
- package/dist/browser/CdpConnection.js +8 -6
- package/dist/browser/CdpElectronInspection.js +3 -3
- package/dist/browser/CdpElectronProvider.js +4 -1
- package/dist/browser/CdpElectronScripts.js +2 -2
- package/dist/browser/CdpEndpoint.js +22 -10
- package/dist/browser/CdpObservationSession.js +2 -1
- package/dist/browser/CdpOptionalCommand.js +1 -1
- package/dist/browser/CdpPageCapture.js +2 -1
- package/dist/browser/CdpSafeMetadata.js +53 -8
- package/dist/browser/CdpScreenshot.js +1 -1
- package/dist/browser/CdpTargetSession.js +8 -5
- package/dist/browser/CdpWebMcpDiscovery.js +1 -1
- package/dist/browser/ElectronFileScope.js +9 -3
- package/dist/browser/JavaScriptRuntimeScope.js +3 -1
- package/dist/browser/PlaywrightBrowserScenarioProvider.js +3 -1
- package/dist/browser/PlaywrightElectronActiveActions.js +1 -1
- package/dist/browser/PlaywrightElectronActiveProvider.js +6 -2
- package/dist/browser/PlaywrightExecutionBoundary.js +1 -1
- package/dist/browser/PlaywrightScenarioArtifacts.js +10 -5
- package/dist/browser/PlaywrightScenarioBrowser.js +3 -1
- package/dist/browser/PlaywrightScenarioEvents.js +6 -2
- package/dist/browser/PlaywrightScenarioSession.js +5 -2
- package/dist/browser/V8InspectorEndpoint.js +2 -1
- package/dist/browser/V8InspectorProvider.js +6 -1
- package/dist/browser/WebSourceMapFetcher.js +24 -11
- package/dist/cli/androidCommands.js +81 -0
- package/dist/{cliApplicationCommands.js → cli/applicationCommands.js} +18 -16
- package/dist/{cliBrowserAdvancedCommands.js → cli/browserAdvancedCommands.js} +13 -16
- package/dist/{cliBrowserCommands.js → cli/browserCommands.js} +9 -9
- package/dist/cli/commandCancellation.js +24 -0
- package/dist/cli/coreAnalysisCommands.js +110 -17
- package/dist/{cliElectronCommands.js → cli/electronCommands.js} +14 -13
- package/dist/cli/firmwareCommands.js +75 -0
- package/dist/{cliSetup.js → cli/interactiveSetup.js} +1 -1
- package/dist/cli/javascriptApplicationAnalysis.js +1 -1
- package/dist/cli/managedCommands.js +1 -1
- package/dist/cli/managedProjectGraphCommand.js +1 -1
- package/dist/cli/options.js +7 -1
- package/dist/{cliProcessCommands.js → cli/processCommands.js} +3 -3
- package/dist/cli/referenceSourceImportStatus.js +10 -0
- package/dist/cli/setupCommands.js +4 -2
- package/dist/cli/utilityCommands.js +3 -2
- package/dist/cli.js +10 -15
- package/dist/cliBrowserContext.js +1 -1
- package/dist/cliBrowserScenarioCommands.js +2 -1
- package/dist/cliCommandNames.js +11 -2
- package/dist/cliEvidenceCommands.js +2 -1
- package/dist/cliJavaScriptRuntimeCommands.js +2 -1
- package/dist/cliJsonInput.js +26 -11
- package/dist/cliLogging.js +2 -1
- package/dist/cliOutput.js +15 -16
- package/dist/config/environment.js +11 -1
- package/dist/config/parseConfig.js +7 -1
- package/dist/config/parsers.js +1 -1
- package/dist/contracts/androidToolContracts.js +77 -0
- package/dist/contracts/applicationToolContracts.js +32 -5
- package/dist/contracts/applicationWorkflowInputContracts.js +13 -13
- package/dist/contracts/artifactComparisonExample.js +7 -14
- package/dist/contracts/enhancedToolContracts.js +31 -0
- package/dist/contracts/errorSchemas.js +4 -2
- package/dist/contracts/evidenceInputContracts.js +13 -0
- package/dist/contracts/firmwareToolContracts.js +38 -0
- package/dist/contracts/officialToolContracts.js +66 -0
- package/dist/contracts/promptContracts.js +1 -1
- package/dist/contracts/sessionLifecycleInputs.js +4 -0
- package/dist/contracts/sessionToolContracts.js +43 -0
- package/dist/contracts/sessionToolSchemas.js +1 -1
- package/dist/contracts/toolContractExamples.js +5 -0
- package/dist/contracts/toolContractTypes.js +2 -0
- package/dist/contracts/toolContracts.js +7 -130
- package/dist/contracts/toolEffects.js +43 -0
- package/dist/contracts/toolOutputSchemaGroups.js +4 -0
- package/dist/contracts/toolOutputSchemaPrimitives.js +1 -0
- package/dist/doctorRuntime.js +5 -1
- package/dist/domain/analysisErrorBase.js +33 -0
- package/dist/domain/analysisErrorCore.js +60 -0
- package/dist/domain/analysisErrorPresentation.js +22 -2
- package/dist/domain/analysisErrorProjection.js +24 -3
- package/dist/domain/analysisSnapshot.js +1 -0
- package/dist/domain/androidAnalysis.js +141 -0
- package/dist/domain/appleAssetCatalog.js +1 -1
- package/dist/domain/artifactGraph.js +1 -0
- package/dist/domain/artifactInspection.js +19 -17
- package/dist/domain/artifactInventoryEvidence.js +20 -25
- package/dist/domain/artifactOperationError.js +16 -0
- package/dist/domain/browserObservation.js +12 -4
- package/dist/domain/browserObservationError.js +23 -0
- package/dist/domain/browserScenario.js +1 -1
- package/dist/domain/browserScenarioCapture.js +1 -1
- package/dist/domain/browserScenarioDiff.js +1 -1
- package/dist/domain/browserScenarioNormalization.js +6 -11
- package/dist/domain/browserScenarioValues.js +3 -1
- package/dist/domain/callPath.js +47 -7
- package/dist/domain/canonicalDigest.js +65 -0
- package/dist/domain/canonicalOrdering.js +11 -0
- package/dist/domain/changedBehavior.js +8 -7
- package/dist/domain/comparisonSemantics.js +2 -4
- package/dist/domain/configurationErrors.js +25 -0
- package/dist/domain/dosCom.js +8 -0
- package/dist/domain/electronActiveObservation.js +3 -1
- package/dist/domain/electronStaticAnalysisBrowser.js +13 -23
- package/dist/domain/electronStaticAnalysisNative.js +2 -1
- package/dist/domain/electronStaticAnalysisValues.js +23 -3
- package/dist/domain/evidence.js +3 -11
- package/dist/domain/evidenceErrors.js +30 -0
- package/dist/domain/firmwareAnalysis.js +121 -0
- package/dist/domain/functionComparison.js +4 -2
- package/dist/domain/functionComparisonDimensions.js +6 -4
- package/dist/domain/functionComparisonNormalization.js +8 -1
- package/dist/domain/functionComparisonResults.js +1 -4
- package/dist/domain/hopperErrors.js +78 -0
- package/dist/domain/hopperValues.js +2 -1
- package/dist/domain/interfaceBuilderGraph.js +3 -1
- package/dist/domain/javascriptApplicationChangeGraph.js +2 -2
- package/dist/domain/javascriptApplicationGraph.js +13 -22
- package/dist/domain/javascriptApplicationVersionComparison.js +3 -11
- package/dist/domain/javascriptApplicationVersionItems.js +3 -3
- package/dist/domain/javascriptApplicationVersionKeys.js +1 -1
- package/dist/domain/javascriptAstFingerprint.js +1 -1
- package/dist/domain/javascriptExportShapeComparison.js +1 -2
- package/dist/domain/javascriptExportShapeSelection.js +1 -1
- package/dist/domain/javascriptExportShapeVariants.js +7 -3
- package/dist/domain/javascriptFeatureSeed.js +29 -9
- package/dist/domain/javascriptFeatureTrace.js +9 -13
- package/dist/domain/javascriptFeatureTraversal.js +2 -1
- package/dist/domain/javascriptNativeHandoff.js +2 -1
- package/dist/domain/javascriptRuntimeLoadState.js +2 -2
- package/dist/domain/javascriptRuntimeReconciliationActive.js +3 -10
- package/dist/domain/javascriptRuntimeReconciliationGraph.js +2 -2
- package/dist/domain/javascriptRuntimeReconciliationMatching.js +4 -3
- package/dist/domain/javascriptRuntimeReconciliationParsing.js +8 -14
- package/dist/domain/javascriptRuntimeReconciliationResult.js +4 -4
- package/dist/domain/javascriptRuntimeReconciliationSchemas.js +5 -2
- package/dist/domain/javascriptRuntimeStaticCandidates.js +8 -4
- package/dist/domain/javascriptSemanticAnalysis.js +40 -3
- package/dist/domain/javascriptSemanticCallResolution.js +2 -1
- package/dist/domain/javascriptSemanticChildProcesses.js +2 -1
- package/dist/domain/javascriptSemanticDataEffects.js +2 -1
- package/dist/domain/javascriptSemanticFingerprints.js +1 -1
- package/dist/domain/javascriptSemanticGraph.js +23 -28
- package/dist/domain/javascriptSemanticPrimitives.js +9 -2
- package/dist/domain/javascriptSemanticProjection.js +2 -1
- package/dist/domain/javascriptSemanticPromises.js +2 -1
- package/dist/domain/javascriptSemanticProvenance.js +1 -1
- package/dist/domain/javascriptSemanticQuery.js +7 -8
- package/dist/domain/javascriptSemanticQueryAssessment.js +1 -2
- package/dist/domain/javascriptSemanticQueryIdentity.js +1 -2
- package/dist/domain/javascriptSemanticReturns.js +2 -1
- package/dist/domain/javascriptSemanticValues.js +50 -16
- package/dist/domain/javascriptSourceParser.js +4 -2
- package/dist/domain/javascriptStaticAnalysis.js +1 -1
- package/dist/domain/javascriptStaticAnalysisBundler.js +2 -1
- package/dist/domain/javascriptStaticAnalysisCalls.js +14 -6
- package/dist/domain/javascriptStaticAnalysisHelpers.js +31 -4
- package/dist/domain/jsonShape.js +6 -2
- package/dist/domain/managedMemberComparison.js +1 -0
- package/dist/domain/managedMemberComparisonItems.js +2 -0
- package/dist/domain/managedNativeVerificationMatch.js +5 -3
- package/dist/domain/nativeDataType.js +2 -0
- package/dist/domain/nativeFunctionAnnotations.js +43 -0
- package/dist/domain/nativeLoadImage.js +95 -0
- package/dist/domain/nativeMetadataRecovery.js +55 -0
- package/dist/domain/processCapture.js +0 -1
- package/dist/domain/processEvidenceProvider.js +11 -0
- package/dist/domain/processTraceComparison.js +1 -1
- package/dist/domain/providerAdapterError.js +17 -0
- package/dist/domain/providerCleanupError.js +1 -1
- package/dist/domain/providerSelectionError.js +44 -0
- package/dist/domain/reconstructionUnknowns.js +1 -1
- package/dist/domain/reconstructionVerification.js +22 -8
- package/dist/domain/referenceSourceClassification.js +5 -6
- package/dist/domain/referenceSourceGraph.js +9 -17
- package/dist/domain/referenceSourceImportParsing.js +38 -23
- package/dist/domain/runtimeIdentification.js +1 -1
- package/dist/domain/runtimeVersion.js +4 -7
- package/dist/domain/safeJson.js +13 -0
- package/dist/domain/sourceToBundleComparison.js +5 -7
- package/dist/domain/sourceToBundleSignals.js +6 -6
- package/dist/domain/staticRuntimeCorrelation.js +9 -7
- package/dist/domain/unknownRegistryError.js +10 -0
- package/dist/domain/webBundleAnalyzerAst.js +22 -5
- package/dist/domain/webBundleAnalyzerInspection.js +20 -14
- package/dist/dotnet/ManagedMemberRows.js +1 -1
- package/dist/dotnet/ManagedMetadataHeaps.js +3 -2
- package/dist/dotnet/ManagedMetadataInventoryRows.js +4 -2
- package/dist/dotnet/ManagedMethodBodyReader.js +8 -1
- package/dist/dotnet/ManagedStaticProvider.js +3 -1
- package/dist/firmware/FirmwareCommand.js +163 -0
- package/dist/firmware/FirmwareFiles.js +190 -0
- package/dist/firmware/FirmwareProvider.js +258 -0
- package/dist/firmware/FirmwarePublication.js +84 -0
- package/dist/firmware/FirmwareRelease.js +32 -0
- package/dist/firmware/FirmwareReports.js +223 -0
- package/dist/generatedMcpToolCatalog.js +1 -1
- package/dist/generatedPackageMetadata.js +5 -5
- package/dist/ghidra/GhidraAnalysisProfile.js +37 -8
- package/dist/ghidra/GhidraClient.js +52 -6
- package/dist/ghidra/GhidraDiagnostics.js +3 -0
- package/dist/ghidra/GhidraDoctor.js +38 -14
- package/dist/ghidra/GhidraFunctionValues.js +10 -4
- package/dist/ghidra/GhidraInstallation.js +10 -4
- package/dist/ghidra/GhidraInventoryValues.js +39 -2
- package/dist/ghidra/GhidraLauncher.js +91 -26
- package/dist/ghidra/GhidraLoadImageValues.js +199 -0
- package/dist/ghidra/GhidraProvider.js +129 -13
- package/dist/ghidra/GhidraProviderCapabilities.js +52 -15
- package/dist/ghidra/GhidraRequestQueue.js +2 -2
- package/dist/ghidra/GhidraSessionError.js +31 -4
- package/dist/ghidra/GhidraSessionValues.js +10 -7
- package/dist/ghidra/GhidraTargetSnapshot.js +16 -2
- package/dist/ghidra/GhidraTransport.js +12 -0
- package/dist/ghidra/extensions/GhidraExtensionFailures.js +20 -0
- package/dist/ghidra/extensions/GhidraExtensions.js +170 -0
- package/dist/ghidra/extensions/nativeaot/NativeAotAdapter.js +21 -0
- package/dist/ghidra/extensions/nativeaot/NativeAotReport.js +84 -0
- package/dist/hopper/BridgeLauncher.js +4 -2
- package/dist/hopper/HopperAnalysisProfile.js +7 -2
- package/dist/hopper/HopperCleanup.js +55 -9
- package/dist/hopper/HopperClient.js +14 -4
- package/dist/hopper/HopperProcessDiagnostic.js +1 -1
- package/dist/hopper/HopperProvider.js +8 -4
- package/dist/hopper/HopperRequestQueue.js +7 -3
- package/dist/hopper/HopperSessionValues.js +1 -1
- package/dist/hopper/HopperSocketConnection.js +1 -1
- package/dist/hopper/HopperTargetLease.js +23 -15
- package/dist/hopper/LinuxPrivateDisplayDiagnostic.js +7 -8
- package/dist/hopper/LinuxPrivateDisplayProbe.js +6 -2
- package/dist/hopper/protocol.js +8 -8
- package/dist/ida/IdaConfiguration.js +56 -0
- package/dist/ida/IdaDoctor.js +53 -0
- package/dist/ida/IdaInput.js +62 -0
- package/dist/ida/IdaMcpConnection.js +111 -0
- package/dist/ida/IdaOperationRunner.js +299 -0
- package/dist/ida/IdaProtocolValues.js +178 -0
- package/dist/ida/IdaProvider.js +126 -0
- package/dist/ida/IdaProviderCapabilities.js +60 -0
- package/dist/ida/IdaSessionClient.js +306 -0
- package/dist/ida/IdaWorkspace.js +54 -0
- package/dist/main/shutdown.js +21 -1
- package/dist/main/startup.js +1 -1
- package/dist/main/transport.js +8 -4
- package/dist/main.js +5 -2
- package/dist/native/AppleDispatchMetadata.js +31 -10
- package/dist/native/NativeMacOSProvider.js +87 -15
- package/dist/native/NativeMachoInspection.js +42 -12
- package/dist/native/NativeUiHelperRuntime.js +7 -1
- package/dist/native/NativeUiObservation.js +6 -2
- package/dist/native/parsers/demangle.js +1 -1
- package/dist/native/parsers/dyldInfo.js +3 -3
- package/dist/native/parsers/otool.js +4 -1
- package/dist/native/parsers/plist.js +11 -3
- package/dist/process/PrivateRuntimeRoot.js +13 -3
- package/dist/process/ProcessOwnership.js +5 -73
- package/dist/process/ProcessOwnershipObservation.js +62 -2
- package/dist/process/ProcessOwnershipProcessTree.js +13 -0
- package/dist/process/ProviderProcess.js +24 -7
- package/dist/process/ProviderRunLineage.js +1 -1
- package/dist/process/WindowsAuthority.js +20 -1
- package/dist/reference/ReferenceSourceReaderEntries.js +5 -1
- package/dist/reference/ReferenceSourceReaderFile.js +1 -0
- package/dist/server/createServer.js +25 -2
- package/dist/server/mcpProgress.js +2 -1
- package/dist/server/promptCompletion.js +3 -3
- package/dist/server/registerAndroidTools.js +30 -0
- package/dist/server/registerApplicationTools/compareExportShapes.js +5 -1
- package/dist/server/registerApplicationTools/compareSourceToBundle.js +7 -2
- package/dist/server/registerApplicationTools/compareVersions.js +5 -1
- package/dist/server/registerApplicationTools/traceFeature.js +7 -2
- package/dist/server/registerApplicationTools/traceSemantics.js +7 -2
- package/dist/server/registerEnhancedTools.js +28 -1
- package/dist/server/registerFirmwareTools.js +22 -0
- package/dist/server/registerFunctionComparisonTool.js +1 -1
- package/dist/server/registerInvestigationTools/helpers.js +2 -1
- package/dist/server/registerManagedTools.js +1 -1
- package/dist/server/registerManagedWorkflowTools/evidence.js +1 -1
- package/dist/server/registerOfficialTools.js +4 -1
- package/dist/server/registerProcessComparisonTool.js +5 -2
- package/dist/server/registerSessionTools.js +3 -1
- package/dist/server/runDerivedOperation.js +1 -1
- package/dist/server/sessionAvailabilityPolicy.js +3 -0
- package/dist/server/sessionEvidence.js +1 -1
- package/dist/server/toolResult.js +2 -1
- package/dist/windows/WindowsNativeLoader.js +108 -0
- package/dist/windows/WindowsOwnedProcess.js +168 -0
- package/dist/windows/WindowsPrivateRuntime.js +137 -0
- package/install.sh +4 -6
- package/native/windows/README.md +102 -0
- package/native/windows/build/manifest.json +9 -0
- package/native/windows/build/rea-windows-x64.node +0 -0
- package/package.json +38 -24
- package/scripts/rea.mjs +1 -1
- package/scripts/verify-windows-native-artifact.mjs +39 -0
- package/skills/reverse-engineer-anything/SKILL.md +92 -24
- package/skills/reverse-engineer-anything/references/android-applications.md +31 -0
- package/skills/reverse-engineer-anything/references/javascript-applications.md +19 -2
- package/skills/reverse-engineer-anything/references/native-and-artifacts.md +52 -4
- package/dist/browser/CdpCanonicalJsonDigest.js +0 -9
- package/dist/domain/errors.js +0 -324
|
@@ -1,11 +1,15 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
2
|
import { ArtifactReaderFailure } from "../artifacts/ArtifactReader.js";
|
|
3
3
|
import { analyzeJavaScriptApplicationInputSchema, javascriptApplicationAnalysisResultSchema, } from "../domain/javascriptApplicationAnalysis.js";
|
|
4
|
-
import { AnalysisInputError,
|
|
4
|
+
import { AnalysisInputError, AnalysisOutputError, } from "../domain/analysisErrorCore.js";
|
|
5
|
+
import { ArtifactOperationError } from "../domain/artifactOperationError.js";
|
|
6
|
+
import {} from "../domain/analysisErrorBase.js";
|
|
5
7
|
import { projectInputIssues } from "../domain/inputIssueProjection.js";
|
|
6
8
|
import { err, ok } from "../domain/result.js";
|
|
9
|
+
import { ProviderAdapterError } from "../domain/providerAdapterError.js";
|
|
7
10
|
import { createJavaScriptApplicationEvidence } from "./JavaScriptApplicationEvidence.js";
|
|
8
11
|
import { reconstructJavaScriptArtifact } from "./JavaScriptArtifactReconstruction.js";
|
|
12
|
+
import { JAVASCRIPT_APPLICATION_PROVIDER } from "./InvestigationProviders.js";
|
|
9
13
|
const OPERATION = "analyze_javascript_application";
|
|
10
14
|
/** Statically analyze one local JavaScript/Electron application. */
|
|
11
15
|
export const analyzeJavaScriptApplication = async (rawInput, options = {}) => {
|
|
@@ -46,7 +50,50 @@ export const analyzeJavaScriptApplicationValidated = async (input, options = {})
|
|
|
46
50
|
if (cause instanceof ArtifactReaderFailure)
|
|
47
51
|
return err(new ArtifactOperationError(OPERATION, cause.reason, cause.details));
|
|
48
52
|
if (cause instanceof z.ZodError)
|
|
49
|
-
return err(new
|
|
50
|
-
|
|
53
|
+
return err(new AnalysisOutputError(OPERATION, describeResultSchemaFailure(cause), {
|
|
54
|
+
cause,
|
|
55
|
+
}));
|
|
56
|
+
if (cause instanceof Error &&
|
|
57
|
+
"code" in cause &&
|
|
58
|
+
typeof cause.code === "string" &&
|
|
59
|
+
FILESYSTEM_ERROR_CODES.has(cause.code))
|
|
60
|
+
return err(new ArtifactOperationError(OPERATION, "io"));
|
|
61
|
+
return err(new ProviderAdapterError(JAVASCRIPT_APPLICATION_PROVIDER.id, OPERATION, {
|
|
62
|
+
cause,
|
|
63
|
+
diagnostics: {
|
|
64
|
+
input_path: input.input_path,
|
|
65
|
+
error_name: cause instanceof Error ? cause.name : "UnknownError",
|
|
66
|
+
error_message: cause instanceof Error
|
|
67
|
+
? cause.message
|
|
68
|
+
: typeof cause === "string"
|
|
69
|
+
? cause
|
|
70
|
+
: "JavaScript analysis failed with a non-Error value",
|
|
71
|
+
},
|
|
72
|
+
}));
|
|
51
73
|
}
|
|
52
74
|
};
|
|
75
|
+
const describeResultSchemaFailure = (cause) => {
|
|
76
|
+
const issue = cause.issues[0];
|
|
77
|
+
if (issue === undefined)
|
|
78
|
+
return "Result schema rejected an unknown issue";
|
|
79
|
+
const path = issue.path.flatMap((part) => typeof part === "string" || typeof part === "number" ? [part] : []);
|
|
80
|
+
const pointer = path.length === 0
|
|
81
|
+
? "/"
|
|
82
|
+
: `/${path.map((part) => escapePointerPart(String(part))).join("/")}`;
|
|
83
|
+
return `Result schema rejected ${String(cause.issues.length)} ${cause.issues.length === 1 ? "issue" : "issues"} at ${pointer} (${issue.code})`;
|
|
84
|
+
};
|
|
85
|
+
const escapePointerPart = (part) => part.replaceAll("~", "~0").replaceAll("/", "~1");
|
|
86
|
+
const FILESYSTEM_ERROR_CODES = new Set([
|
|
87
|
+
"ENOENT",
|
|
88
|
+
"EACCES",
|
|
89
|
+
"EPERM",
|
|
90
|
+
"ENOTDIR",
|
|
91
|
+
"EISDIR",
|
|
92
|
+
"EIO",
|
|
93
|
+
"ELOOP",
|
|
94
|
+
"ENAMETOOLONG",
|
|
95
|
+
"EMFILE",
|
|
96
|
+
"ENFILE",
|
|
97
|
+
"ENOSPC",
|
|
98
|
+
"EROFS",
|
|
99
|
+
]);
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
|
-
import { AnalysisInputError, AnalysisProtocolError, } from "../domain/
|
|
2
|
+
import { AnalysisInputError, AnalysisProtocolError, } from "../domain/analysisErrorCore.js";
|
|
3
|
+
import {} from "../domain/analysisErrorBase.js";
|
|
3
4
|
import { projectInputIssues } from "../domain/inputIssueProjection.js";
|
|
4
5
|
import { compareJavaScriptApplicationVersions } from "../domain/javascriptApplicationVersionComparison.js";
|
|
5
6
|
import { compareApplicationVersionsInputSchema } from "../domain/javascriptApplicationVersionComparisonSchemas.js";
|
|
@@ -102,7 +102,8 @@ const parsePackage = (file) => {
|
|
|
102
102
|
try {
|
|
103
103
|
value = JSON.parse(file.text.value);
|
|
104
104
|
}
|
|
105
|
-
catch {
|
|
105
|
+
catch (cause) {
|
|
106
|
+
void cause;
|
|
106
107
|
return invalidPackage(file, "package.json is not valid JSON.");
|
|
107
108
|
}
|
|
108
109
|
if (!isRecord(value))
|
|
@@ -163,7 +164,8 @@ const parseSourceMap = (file) => {
|
|
|
163
164
|
try {
|
|
164
165
|
value = JSON.parse(file.text.value);
|
|
165
166
|
}
|
|
166
|
-
catch {
|
|
167
|
+
catch (cause) {
|
|
168
|
+
void cause;
|
|
167
169
|
return invalidSourceMap(file, "Source map is not valid JSON.");
|
|
168
170
|
}
|
|
169
171
|
const maps = flattenSourceMaps(value);
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { createHash } from "node:crypto";
|
|
2
2
|
import { isAbsolute } from "node:path";
|
|
3
|
+
import { compareCodePoints } from "../domain/canonicalOrdering.js";
|
|
3
4
|
import { AsarArtifactReader } from "../artifacts/AsarArtifactReader.js";
|
|
4
5
|
import { ArtifactPathRegistry, normalizeArtifactPath, } from "../artifacts/ArtifactPaths.js";
|
|
5
6
|
import { ArtifactReaderFailure, } from "../artifacts/ArtifactReader.js";
|
|
@@ -117,7 +118,9 @@ const readText = async (context, input) => {
|
|
|
117
118
|
value: new TextDecoder("utf-8", { fatal: true }).decode(bytes),
|
|
118
119
|
};
|
|
119
120
|
}
|
|
120
|
-
catch {
|
|
121
|
+
catch (cause) {
|
|
122
|
+
// Non-UTF8 bytes are counted; the fixed reason preserves the schema.
|
|
123
|
+
void cause;
|
|
121
124
|
context.invalidUtf8 += 1;
|
|
122
125
|
return { included: false, reason: "invalid-utf8" };
|
|
123
126
|
}
|
|
@@ -197,4 +200,3 @@ const abortIfNeeded = (signal) => {
|
|
|
197
200
|
if (signal?.aborted === true)
|
|
198
201
|
throw new ArtifactReaderFailure("cancelled", "JavaScript artifact reconstruction cancelled");
|
|
199
202
|
};
|
|
200
|
-
const compareCodePoints = (left, right) => left < right ? -1 : left > right ? 1 : 0;
|
|
@@ -296,7 +296,9 @@ const packageEntry = (text, moduleKind, useExports) => {
|
|
|
296
296
|
const legacy = packagePathValue(entry);
|
|
297
297
|
return legacy.status === "value" ? { ...legacy, source: "legacy" } : legacy;
|
|
298
298
|
}
|
|
299
|
-
catch {
|
|
299
|
+
catch (cause) {
|
|
300
|
+
// Reflect-based manifest reads fail closed as invalid.
|
|
301
|
+
void cause;
|
|
300
302
|
return { status: "invalid" };
|
|
301
303
|
}
|
|
302
304
|
};
|
|
@@ -390,7 +392,9 @@ const fileUrlPath = (value) => {
|
|
|
390
392
|
return undefined;
|
|
391
393
|
return decodeURIComponent(url.pathname).replace(/^\/+/, "");
|
|
392
394
|
}
|
|
393
|
-
catch {
|
|
395
|
+
catch (cause) {
|
|
396
|
+
// Unparseable file URLs have no path to resolve.
|
|
397
|
+
void cause;
|
|
394
398
|
return undefined;
|
|
395
399
|
}
|
|
396
400
|
};
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { compareCodePoints } from "../domain/canonicalOrdering.js";
|
|
1
2
|
/** Parse one approved JSON module without evaluating JavaScript or resolving imports. */
|
|
2
3
|
export const analyzeJavaScriptJsonModule = (file) => {
|
|
3
4
|
if (!file.text.included)
|
|
@@ -13,7 +14,8 @@ export const analyzeJavaScriptJsonModule = (file) => {
|
|
|
13
14
|
try {
|
|
14
15
|
value = JSON.parse(file.text.value);
|
|
15
16
|
}
|
|
16
|
-
catch {
|
|
17
|
+
catch (cause) {
|
|
18
|
+
void cause;
|
|
17
19
|
return {
|
|
18
20
|
path: file.path,
|
|
19
21
|
sha256: file.sha256,
|
|
@@ -36,4 +38,3 @@ export const analyzeJavaScriptJsonModule = (file) => {
|
|
|
36
38
|
limitation: null,
|
|
37
39
|
};
|
|
38
40
|
};
|
|
39
|
-
const compareCodePoints = (left, right) => left < right ? -1 : left > right ? 1 : 0;
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { posix } from "node:path";
|
|
2
|
+
import { compareCodePoints } from "../domain/canonicalOrdering.js";
|
|
2
3
|
import { completeApplicationCoverage, partialApplicationCoverage, } from "../domain/javascriptApplicationEvidenceSchemas.js";
|
|
3
4
|
import { addAstContainsEdge, artifactLocalIdentity, } from "./JavaScriptArtifactGraphContext.js";
|
|
4
5
|
import { astObservationEvidence, staticInferenceEvidence, } from "./JavaScriptArtifactGraphEvidence.js";
|
|
@@ -271,11 +272,12 @@ const jsonStatus = (file) => {
|
|
|
271
272
|
JSON.parse(file.text.value);
|
|
272
273
|
return "included";
|
|
273
274
|
}
|
|
274
|
-
catch {
|
|
275
|
+
catch (cause) {
|
|
276
|
+
// Invalid JSON is classified without further detail.
|
|
277
|
+
void cause;
|
|
275
278
|
return "invalid";
|
|
276
279
|
}
|
|
277
280
|
};
|
|
278
281
|
const isExportLink = (link) => link.kind === "export" ||
|
|
279
282
|
link.kind === "re-export" ||
|
|
280
283
|
link.kind === "commonjs-export";
|
|
281
|
-
const compareCodePoints = (left, right) => left < right ? -1 : left > right ? 1 : 0;
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { createJavaScriptRuntimeObservationEvidence } from "./JavaScriptRuntimeObservationEvidence.js";
|
|
2
|
-
import { AnalysisCapabilityUnavailableError
|
|
2
|
+
import { AnalysisCapabilityUnavailableError } from "../domain/analysisErrorCore.js";
|
|
3
|
+
import {} from "../domain/analysisErrorBase.js";
|
|
3
4
|
import { err, ok } from "../domain/result.js";
|
|
4
5
|
/** List targets exposed by the explicitly selected loopback Inspector. */
|
|
5
6
|
export const listJavaScriptRuntimeTargets = async (provider, input, options = {}) => {
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { resolve } from "node:path";
|
|
2
2
|
import { z } from "zod";
|
|
3
|
-
import { AnalysisInputError, AnalysisProtocolError, } from "../domain/
|
|
3
|
+
import { AnalysisInputError, AnalysisProtocolError, } from "../domain/analysisErrorCore.js";
|
|
4
|
+
import {} from "../domain/analysisErrorBase.js";
|
|
4
5
|
import { projectInputIssues } from "../domain/inputIssueProjection.js";
|
|
5
6
|
import { reconcileJavaScriptRuntime } from "../domain/javascriptRuntimeReconciliation.js";
|
|
6
7
|
import { reconcileJavaScriptRuntimeInputSchema } from "../domain/javascriptRuntimeReconciliationSchemas.js";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { compareCodePoints } from "../domain/
|
|
1
|
+
import { compareCodePoints } from "../domain/canonicalOrdering.js";
|
|
2
2
|
import { JAVASCRIPT_SEMANTIC_RELATION_FAMILIES } from "../domain/javascriptSemanticGraphSchemas.js";
|
|
3
3
|
/** Find the innermost callable that contains one exact source range. */
|
|
4
4
|
export const owningSemanticCallableNode = (location, ir, nodes) => {
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
|
-
import { AnalysisInputError, AnalysisProtocolError, } from "../domain/
|
|
2
|
+
import { AnalysisInputError, AnalysisProtocolError, } from "../domain/analysisErrorCore.js";
|
|
3
|
+
import {} from "../domain/analysisErrorBase.js";
|
|
3
4
|
import { jsonValueSchema } from "../domain/jsonValue.js";
|
|
4
5
|
import { queryJavaScriptSemanticGraph } from "../domain/javascriptSemanticQuery.js";
|
|
5
6
|
import { javaScriptSemanticTraceResultSchema, traceJavaScriptSemanticsInputSchema, } from "../domain/javascriptSemanticTraceSchemas.js";
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { link, lstat, mkdtemp, readFile, realpath, rm } from "node:fs/promises";
|
|
2
2
|
import { basename, dirname, resolve } from "node:path";
|
|
3
3
|
import writeFileAtomic from "write-file-atomic";
|
|
4
|
-
import { EvidenceFileError } from "../domain/
|
|
4
|
+
import { EvidenceFileError } from "../domain/evidenceErrors.js";
|
|
5
5
|
import { err, ok } from "../domain/result.js";
|
|
6
6
|
/** Read JSON data from a regular file at the caller-supplied path. */
|
|
7
7
|
export const readJsonFile = async (path) => {
|
|
@@ -1,4 +1,6 @@
|
|
|
1
|
-
import { AnalysisCancelledError
|
|
1
|
+
import { AnalysisCancelledError } from "../domain/analysisErrorCore.js";
|
|
2
|
+
import { AnalysisError } from "../domain/analysisErrorBase.js";
|
|
3
|
+
import { ProviderAdapterError } from "../domain/providerAdapterError.js";
|
|
2
4
|
import { err } from "../domain/result.js";
|
|
3
5
|
import { ABORTED, waitForAbortable } from "./AbortablePromise.js";
|
|
4
6
|
const isAborted = (signal) => signal?.aborted === true;
|
|
@@ -73,7 +73,9 @@ export const readLinuxDistribution = async () => {
|
|
|
73
73
|
try {
|
|
74
74
|
return parseLinuxDistribution(await readFile("/etc/os-release", "utf8"));
|
|
75
75
|
}
|
|
76
|
-
catch {
|
|
76
|
+
catch (cause) {
|
|
77
|
+
// best-effort cleanup: optional host probing; unknown distribution means unsupported.
|
|
78
|
+
void cause;
|
|
77
79
|
return undefined;
|
|
78
80
|
}
|
|
79
81
|
};
|
|
@@ -143,7 +145,9 @@ const systemLinuxHopperInstallHost = () => ({
|
|
|
143
145
|
? "ready"
|
|
144
146
|
: "unsupported_hopper_build";
|
|
145
147
|
}
|
|
146
|
-
catch {
|
|
148
|
+
catch (cause) {
|
|
149
|
+
// best-effort cleanup: optional launcher probing; unreadable means missing.
|
|
150
|
+
void cause;
|
|
147
151
|
return "missing";
|
|
148
152
|
}
|
|
149
153
|
},
|
|
@@ -157,7 +161,9 @@ export const linuxHopperBinarySupported = async (path) => {
|
|
|
157
161
|
hash.update(chunk);
|
|
158
162
|
return hash.digest("hex") === SUPPORTED_HOPPER_SHA256;
|
|
159
163
|
}
|
|
160
|
-
catch {
|
|
164
|
+
catch (cause) {
|
|
165
|
+
// best-effort cleanup: optional build probing; unreadable means unsupported.
|
|
166
|
+
void cause;
|
|
161
167
|
return false;
|
|
162
168
|
}
|
|
163
169
|
};
|
|
@@ -169,7 +175,9 @@ const installSystemPackage = async (family, archive) => {
|
|
|
169
175
|
await execFileAsync(command.executable, command.args);
|
|
170
176
|
return true;
|
|
171
177
|
}
|
|
172
|
-
catch {
|
|
178
|
+
catch (cause) {
|
|
179
|
+
// Package-manager failure is reported by the false return.
|
|
180
|
+
void cause;
|
|
173
181
|
return false;
|
|
174
182
|
}
|
|
175
183
|
};
|
|
@@ -63,7 +63,9 @@ export const installMacHopper = async (options = {}, host = systemMacHopperInsta
|
|
|
63
63
|
await host.openApplication(destination);
|
|
64
64
|
return { status: "installed", launcherPath };
|
|
65
65
|
}
|
|
66
|
-
catch {
|
|
66
|
+
catch (cause) {
|
|
67
|
+
// Install-stage failures share the download reason; the stage is cleaned below.
|
|
68
|
+
void cause;
|
|
67
69
|
return { status: "failed", reason: "download" };
|
|
68
70
|
}
|
|
69
71
|
finally {
|
|
@@ -114,7 +116,9 @@ const systemMacHopperInstallHost = () => ({
|
|
|
114
116
|
])).stdout.trim();
|
|
115
117
|
return identifier === BUNDLE_IDENTIFIER;
|
|
116
118
|
}
|
|
117
|
-
catch {
|
|
119
|
+
catch (cause) {
|
|
120
|
+
// best-effort cleanup: optional bundle probing; unreadable means invalid.
|
|
121
|
+
void cause;
|
|
118
122
|
return false;
|
|
119
123
|
}
|
|
120
124
|
},
|
|
@@ -123,7 +127,9 @@ const systemMacHopperInstallHost = () => ({
|
|
|
123
127
|
await access(path);
|
|
124
128
|
return true;
|
|
125
129
|
}
|
|
126
|
-
catch {
|
|
130
|
+
catch (cause) {
|
|
131
|
+
// best-effort cleanup: optional existence probing; absence means missing.
|
|
132
|
+
void cause;
|
|
127
133
|
return false;
|
|
128
134
|
}
|
|
129
135
|
},
|
|
@@ -142,14 +148,17 @@ const systemMacHopperInstallHost = () => ({
|
|
|
142
148
|
await rm(previous, { recursive: true, force: true });
|
|
143
149
|
return true;
|
|
144
150
|
}
|
|
145
|
-
catch {
|
|
151
|
+
catch (cause) {
|
|
152
|
+
// Install failure rolls back below; the false return reports it.
|
|
153
|
+
void cause;
|
|
146
154
|
await rm(stage, { recursive: true, force: true });
|
|
147
155
|
if (replaceExisting) {
|
|
148
156
|
try {
|
|
149
157
|
await rename(previous, destination);
|
|
150
158
|
}
|
|
151
|
-
catch {
|
|
159
|
+
catch (rollbackCause) {
|
|
152
160
|
// The original destination was not moved, or rollback is impossible.
|
|
161
|
+
void rollbackCause;
|
|
153
162
|
}
|
|
154
163
|
}
|
|
155
164
|
return false;
|
|
@@ -160,7 +169,9 @@ const systemMacHopperInstallHost = () => ({
|
|
|
160
169
|
await access(path);
|
|
161
170
|
return true;
|
|
162
171
|
}
|
|
163
|
-
catch {
|
|
172
|
+
catch (cause) {
|
|
173
|
+
// best-effort cleanup: optional launcher probing; absence means not ready.
|
|
174
|
+
void cause;
|
|
164
175
|
return false;
|
|
165
176
|
}
|
|
166
177
|
},
|
|
@@ -190,7 +201,9 @@ const commandSucceeds = async (command, args) => {
|
|
|
190
201
|
await execFileAsync(command, args);
|
|
191
202
|
return true;
|
|
192
203
|
}
|
|
193
|
-
catch {
|
|
204
|
+
catch (cause) {
|
|
205
|
+
// best-effort cleanup: optional command probing; failure means unavailable.
|
|
206
|
+
void cause;
|
|
194
207
|
return false;
|
|
195
208
|
}
|
|
196
209
|
};
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
|
-
import { AnalysisInputError, AnalysisProtocolError, } from "../domain/
|
|
2
|
+
import { AnalysisInputError, AnalysisProtocolError, } from "../domain/analysisErrorCore.js";
|
|
3
|
+
import {} from "../domain/analysisErrorBase.js";
|
|
3
4
|
import { createEvidence } from "../domain/evidence.js";
|
|
4
5
|
import { jsonValueSchema } from "../domain/jsonValue.js";
|
|
5
6
|
import { managedApplicationGraphResultSchema, projectManagedApplicationGraph, projectManagedApplicationGraphInputSchema, } from "../domain/managedApplicationGraph.js";
|
|
@@ -2,7 +2,9 @@ import { createHash } from "node:crypto";
|
|
|
2
2
|
import { readFile } from "node:fs/promises";
|
|
3
3
|
import { z } from "zod";
|
|
4
4
|
import { compareManagedMembers, managedMemberComparisonResultSchema, parseManagedMemberEvidence, } from "../domain/managedMemberComparison.js";
|
|
5
|
-
import { AnalysisInputError, AnalysisProtocolError,
|
|
5
|
+
import { AnalysisInputError, AnalysisProtocolError, } from "../domain/analysisErrorCore.js";
|
|
6
|
+
import { EvidenceIntegrityError } from "../domain/evidenceErrors.js";
|
|
7
|
+
import {} from "../domain/analysisErrorBase.js";
|
|
6
8
|
import { createEvidence } from "../domain/evidence.js";
|
|
7
9
|
import { jsonValueSchema } from "../domain/jsonValue.js";
|
|
8
10
|
import { parseBinaryTarget } from "./BinaryTargetResolver.js";
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
|
-
import { AnalysisInputError, AnalysisProtocolError, } from "../domain/
|
|
2
|
+
import { AnalysisInputError, AnalysisProtocolError, } from "../domain/analysisErrorCore.js";
|
|
3
|
+
import {} from "../domain/analysisErrorBase.js";
|
|
3
4
|
import { createEvidence } from "../domain/evidence.js";
|
|
4
5
|
import { jsonValueSchema } from "../domain/jsonValue.js";
|
|
5
6
|
import { managedNativeVerificationInputSchema, verifyManagedNativeBoundaries, } from "../domain/managedNativeVerification.js";
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
|
-
import { AnalysisInputError, AnalysisProtocolError, } from "../domain/
|
|
2
|
+
import { AnalysisInputError, AnalysisProtocolError, } from "../domain/analysisErrorCore.js";
|
|
3
|
+
import {} from "../domain/analysisErrorBase.js";
|
|
3
4
|
import { createEvidence } from "../domain/evidence.js";
|
|
4
5
|
import { jsonValueSchema } from "../domain/jsonValue.js";
|
|
5
6
|
import { importManagedReconstruction, managedReconstructionImportInputSchema, } from "../domain/managedReconstruction.js";
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
2
|
import { parseRelatedAddresses, referenceKindSchema, } from "../domain/hopperValues.js";
|
|
3
3
|
import { err, ok } from "../domain/result.js";
|
|
4
|
-
import { AnalysisOutputError } from "../domain/
|
|
4
|
+
import { AnalysisOutputError } from "../domain/analysisErrorCore.js";
|
|
5
5
|
const referencesSchema = z.object({
|
|
6
6
|
reference_kinds_available: z.boolean().optional(),
|
|
7
7
|
references: z.array(z.object({
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
2
|
import { nativeDispatchMetadataResultSchema, inspectNativeDispatchMetadata, } from "../domain/objcSwiftMetadata.js";
|
|
3
|
-
import { AnalysisOutputError } from "../domain/
|
|
3
|
+
import { AnalysisOutputError } from "../domain/analysisErrorCore.js";
|
|
4
4
|
import { jsonValueSchema } from "../domain/jsonValue.js";
|
|
5
5
|
import { err, ok } from "../domain/result.js";
|
|
6
6
|
/** Prefer validated binary metadata, otherwise preserve the bound provider's symbol-only coverage. */
|
|
@@ -6,7 +6,8 @@ import { inspectNativeDispatch } from "./NativeDispatchMetadataInspection.js";
|
|
|
6
6
|
import { jsonValueSchema } from "../domain/jsonValue.js";
|
|
7
7
|
import { readNativeCallRoutes } from "./NativeCallRoutes.js";
|
|
8
8
|
import { err, ok } from "../domain/result.js";
|
|
9
|
-
import { AnalysisOutputError
|
|
9
|
+
import { AnalysisOutputError } from "../domain/analysisErrorCore.js";
|
|
10
|
+
import { projectAnalysisError } from "../domain/analysisErrorProjection.js";
|
|
10
11
|
/** Build a UI-to-code trace from the active app and selected native provider. */
|
|
11
12
|
export const traceNativeUiAction = async (analysis, input, signal) => {
|
|
12
13
|
const [uiExecution, metadataExecution] = await Promise.all([
|
|
@@ -2,7 +2,7 @@ import { functionDossierSchema } from "../domain/hopperValues.js";
|
|
|
2
2
|
import { nativeCallTargetsSchema } from "../domain/nativeInstruction.js";
|
|
3
3
|
import { nativeValueTraceInputSchema, nativeValueTraceSchema, } from "../domain/nativeValueTrace.js";
|
|
4
4
|
import { createEvidence } from "../domain/evidence.js";
|
|
5
|
-
import { AnalysisCancelledError, AnalysisOutputError, } from "../domain/
|
|
5
|
+
import { AnalysisCancelledError, AnalysisOutputError, } from "../domain/analysisErrorCore.js";
|
|
6
6
|
import { err, ok } from "../domain/result.js";
|
|
7
7
|
/** Compose bounded high-p-code def-use graphs across exactly referenced call destinations. */
|
|
8
8
|
export const traceNativeValues = async (analysis, parameters, signal) => {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { AnalysisError } from "../domain/
|
|
1
|
+
import { AnalysisError } from "../domain/analysisErrorBase.js";
|
|
2
2
|
/** Typed application failure produced by controlled process capture. */
|
|
3
3
|
export class ProcessCaptureError extends AnalysisError {
|
|
4
4
|
_tag = "ProcessCaptureError";
|
|
@@ -7,7 +7,8 @@ import { digestProcessCommitment, processComparisonContract, processScenarioComm
|
|
|
7
7
|
import { PRODUCT_IDENTITY } from "../identity.js";
|
|
8
8
|
import { snapshotRoots } from "./FilesystemSnapshot.js";
|
|
9
9
|
import { classifyFilesystemEffects } from "./ProcessFilesystemEffects.js";
|
|
10
|
-
import { cleanupOwnedProcessGroup
|
|
10
|
+
import { cleanupOwnedProcessGroup } from "../process/ProcessOwnership.js";
|
|
11
|
+
import { observeOwnedProcessGroup } from "../process/ProcessOwnershipObservation.js";
|
|
11
12
|
import { ProcessCaptureError } from "./ProcessCaptureError.js";
|
|
12
13
|
import { assertNotCancelled } from "./ProcessScenarioRuntimeValidation.js";
|
|
13
14
|
import { normalizeProcessElapsedTime, normalizeProcessSamples, normalizeProcessText, } from "./ProcessNormalization.js";
|
|
@@ -216,7 +217,8 @@ export const releaseProcessResources = async (options) => {
|
|
|
216
217
|
try {
|
|
217
218
|
await options.renderer?.dispose();
|
|
218
219
|
}
|
|
219
|
-
catch {
|
|
220
|
+
catch (cause) {
|
|
221
|
+
void cause;
|
|
220
222
|
failure ??= "terminal renderer cleanup failed";
|
|
221
223
|
}
|
|
222
224
|
if (options.terminal !== undefined && host.platform !== "win32") {
|
|
@@ -233,7 +235,8 @@ export const releaseProcessResources = async (options) => {
|
|
|
233
235
|
try {
|
|
234
236
|
await host.removeTemporaryRoot(options.temporaryRoot);
|
|
235
237
|
}
|
|
236
|
-
catch {
|
|
238
|
+
catch (cause) {
|
|
239
|
+
void cause;
|
|
237
240
|
failure ??= "temporary process root cleanup failed";
|
|
238
241
|
}
|
|
239
242
|
return failure;
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import { readFile } from "node:fs/promises";
|
|
2
|
-
import { AnalysisError
|
|
2
|
+
import { AnalysisError } from "../domain/analysisErrorBase.js";
|
|
3
|
+
import { AnalysisInputError } from "../domain/analysisErrorCore.js";
|
|
4
|
+
import { projectAnalysisError } from "../domain/analysisErrorProjection.js";
|
|
3
5
|
import { createEvidence, parseEvidence } from "../domain/evidence.js";
|
|
4
6
|
import { jsonValueSchema } from "../domain/jsonValue.js";
|
|
5
7
|
import { projectInputIssues } from "../domain/inputIssueProjection.js";
|
|
@@ -75,7 +77,7 @@ const parseCaptureEvidence = (input) => {
|
|
|
75
77
|
try {
|
|
76
78
|
evidence = parseEvidence(input);
|
|
77
79
|
}
|
|
78
|
-
catch {
|
|
80
|
+
catch (cause) {
|
|
79
81
|
throw invalidCaptureEvidence();
|
|
80
82
|
}
|
|
81
83
|
if (evidence.operation !== "capture_process_scenario" ||
|
|
@@ -91,7 +93,7 @@ const parseCaptureEvidence = (input) => {
|
|
|
91
93
|
locations: evidence.locations,
|
|
92
94
|
};
|
|
93
95
|
}
|
|
94
|
-
catch {
|
|
96
|
+
catch (cause) {
|
|
95
97
|
throw invalidCaptureEvidence();
|
|
96
98
|
}
|
|
97
99
|
};
|
|
@@ -107,14 +109,16 @@ const readJson = async (path) => {
|
|
|
107
109
|
try {
|
|
108
110
|
bytes = await readFile(path);
|
|
109
111
|
}
|
|
110
|
-
catch {
|
|
112
|
+
catch (cause) {
|
|
113
|
+
void cause;
|
|
111
114
|
throw new ProcessCliFailure("invalid_input", "Process input file could not be read. Check that the path exists and is readable.");
|
|
112
115
|
}
|
|
113
116
|
try {
|
|
114
117
|
const parsed = JSON.parse(bytes.toString("utf8"));
|
|
115
118
|
return parsed;
|
|
116
119
|
}
|
|
117
|
-
catch {
|
|
120
|
+
catch (cause) {
|
|
121
|
+
void cause;
|
|
118
122
|
throw new ProcessCliFailure("invalid_input", "Process input file is not valid JSON. Repair the file, then try again.");
|
|
119
123
|
}
|
|
120
124
|
};
|
|
@@ -1,11 +1,7 @@
|
|
|
1
1
|
import { createEvidence } from "../domain/evidence.js";
|
|
2
|
+
import { PROCESS_PROVIDER } from "../domain/processEvidenceProvider.js";
|
|
2
3
|
import { jsonValueSchema } from "../domain/jsonValue.js";
|
|
3
|
-
|
|
4
|
-
export const PROCESS_PROVIDER = {
|
|
5
|
-
id: "rea-process",
|
|
6
|
-
name: "REA process capture",
|
|
7
|
-
version: "3",
|
|
8
|
-
};
|
|
4
|
+
export { PROCESS_PROVIDER } from "../domain/processEvidenceProvider.js";
|
|
9
5
|
/** Project one process scenario into secret-free Evidence parameters. */
|
|
10
6
|
const processEvidenceParameters = (scenario) => ({
|
|
11
7
|
executable_name: scenario.executable.split("/").at(-1) ?? scenario.executable,
|
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
import { parseProcessCapture } from "../domain/processCapture.js";
|
|
2
2
|
import { err, ok } from "../domain/result.js";
|
|
3
|
-
import { AnalysisCapabilityUnavailableError
|
|
3
|
+
import { AnalysisCapabilityUnavailableError } from "../domain/analysisErrorCore.js";
|
|
4
|
+
import {} from "../domain/analysisErrorBase.js";
|
|
4
5
|
import { ProcessCaptureError, processCaptureCancelled, } from "./ProcessCaptureError.js";
|
|
5
6
|
export { ProcessCaptureError } from "./ProcessCaptureError.js";
|
|
6
7
|
import { startProcessSampler } from "./ProcessSampling.js";
|
|
7
8
|
import { snapshotRoots } from "./FilesystemSnapshot.js";
|
|
8
9
|
import { TerminalRenderer } from "./TerminalRenderer.js";
|
|
9
10
|
import { normalizeProcessText } from "./ProcessNormalization.js";
|
|
10
|
-
import { selectCapturedProcessGroupIds } from "../process/
|
|
11
|
+
import { selectCapturedProcessGroupIds } from "../process/ProcessOwnershipProcessTree.js";
|
|
11
12
|
import { awaitTerminalExit, buildCaptureResult, captureTerminalFrames, createRunManifest, observeSettlement, prepareProcessCapture, releaseProcessResources, resolveProcessResult, settleProcessCaptureJournal, } from "./ProcessCaptureLifecycle.js";
|
|
12
13
|
import { assertNotCancelled, resolveProcessScenarioRuntimePaths, } from "./ProcessScenarioRuntimeValidation.js";
|
|
13
14
|
import { createProcessCaptureJournal, scheduleScenarioInteractions, } from "./ProcessCaptureJournal.js";
|
|
@@ -18,6 +18,7 @@ export const normalizeProcessText = (value, scenario, temporaryRoot, pid) => {
|
|
|
18
18
|
normalized = normalized.replaceAll(pattern.pattern, pattern.replacement);
|
|
19
19
|
return normalized;
|
|
20
20
|
};
|
|
21
|
+
/** Project sampled observations under the caller-selected normalization rules. */
|
|
21
22
|
export const normalizeProcessSamples = (samples, scenario, rootPid) => {
|
|
22
23
|
const identifiers = [
|
|
23
24
|
rootPid,
|
|
@@ -41,12 +42,18 @@ export const normalizeProcessSamples = (samples, scenario, rootPid) => {
|
|
|
41
42
|
};
|
|
42
43
|
return samples.map((sample) => ({
|
|
43
44
|
at_ms: normalizeProcessElapsedTime(sample.at_ms, scenario.normalization.time_bucket_ms),
|
|
44
|
-
pid:
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
45
|
+
pid: scenario.normalization.pids
|
|
46
|
+
? (mapping.get(sample.pid) ?? 1)
|
|
47
|
+
: sample.pid,
|
|
48
|
+
parent_pid: scenario.normalization.pids
|
|
49
|
+
? (mapping.get(sample.parent_pid) ?? 0)
|
|
50
|
+
: sample.parent_pid,
|
|
51
|
+
process_group_id: !scenario.normalization.pids || sample.process_group_id === null
|
|
52
|
+
? sample.process_group_id
|
|
48
53
|
: (mapping.get(sample.process_group_id) ?? 0),
|
|
49
|
-
session_id:
|
|
54
|
+
session_id: !scenario.normalization.pids || sample.session_id === null
|
|
55
|
+
? sample.session_id
|
|
56
|
+
: (mapping.get(sample.session_id) ?? 0),
|
|
50
57
|
command: normalizeCommand(sample.command),
|
|
51
58
|
}));
|
|
52
59
|
};
|
|
@@ -240,7 +240,9 @@ const inspectInitializedPtyRoot = async (rootPid, runId, signal) => {
|
|
|
240
240
|
try {
|
|
241
241
|
observedRunId = await readProcessRunId(rootPid);
|
|
242
242
|
}
|
|
243
|
-
catch {
|
|
243
|
+
catch (cause) {
|
|
244
|
+
// Unreadable run identity means the root cannot be attributed.
|
|
245
|
+
void cause;
|
|
244
246
|
return undefined;
|
|
245
247
|
}
|
|
246
248
|
const after = await readRootIdentity(rootPid, signal);
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
|
-
import { AnalysisInputError } from "../domain/
|
|
2
|
+
import { AnalysisInputError } from "../domain/analysisErrorCore.js";
|
|
3
|
+
import {} from "../domain/analysisErrorBase.js";
|
|
3
4
|
import { evaluateReconstructionClosure, reconstructionCoverageDataSchema, } from "../domain/reconstructionCoverage.js";
|
|
4
5
|
import { jsonValueSchema } from "../domain/jsonValue.js";
|
|
5
6
|
import { err, ok } from "../domain/result.js";
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
|
-
import { AnalysisInputError, AnalysisProtocolError, } from "../domain/
|
|
2
|
+
import { AnalysisInputError, AnalysisProtocolError, } from "../domain/analysisErrorCore.js";
|
|
3
|
+
import {} from "../domain/analysisErrorBase.js";
|
|
3
4
|
import { createEvidence } from "../domain/evidence.js";
|
|
4
5
|
import { jsonObjectSchema, jsonValueSchema } from "../domain/jsonValue.js";
|
|
5
6
|
import { reconstructionObligationLedgerInputSchema, reconstructionObligationLedgerSchema, } from "../domain/reconstructionObligationLedgerSchemas.js";
|