rea-agents 6.0.0 → 6.2.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 +26 -18
- package/bridge/android/ReaJadxBridge.java +14 -5
- package/bridge/ghidra/ReaGhidraBridge.java +205 -51
- package/bridge/hopper_bridge.py +314 -127
- package/bridge/mitmproxy/capture.py +0 -2
- package/bridge/native/rea_lldb_tracer.py +630 -94
- package/bridge/process/ProcessRunTokenReader.swift +39 -5
- package/bridge/pwntools/recorded_crash_impl.py +4 -0
- package/dist/android/JadxConfiguration.js +274 -31
- package/dist/android/JadxMcpTransport.js +18 -2
- package/dist/android/JadxProtocol.js +6 -0
- package/dist/android/JadxProvider.js +76 -37
- package/dist/android/JadxSession.js +23 -4
- package/dist/application/AnalysisContextQueries.js +8 -35
- package/dist/application/AnalysisDocument.js +32 -0
- package/dist/application/AppBundleExecutable.js +67 -21
- package/dist/application/BinaryTargetResolver.js +5 -3
- package/dist/application/BrowserEvidence.js +3 -8
- package/dist/application/BrowserScenarioEvidence.js +2 -18
- package/dist/application/CallPathTracing.js +19 -3
- package/dist/application/CapabilityInventory.js +48 -11
- package/dist/application/ClientConfigurationDocument.js +917 -8
- package/dist/application/ClientRegistrationIdentity.js +26 -5
- package/dist/application/ClientRegistrationStatus.js +29 -14
- package/dist/application/DirectAnalysis.js +56 -51
- package/dist/application/DirectAnalysisCleanup.js +72 -0
- package/dist/application/DirectAnalysisStatus.js +4 -5
- package/dist/application/Doctor.js +19 -21
- package/dist/application/DoctorDiagnostics.js +1 -2
- package/dist/application/DoctorScope.js +25 -13
- package/dist/application/EnhancedLiteralTracing.js +22 -25
- package/dist/application/EnhancedTools.js +64 -17
- package/dist/application/EvidenceBundleFiles.js +30 -13
- package/dist/application/FunctionAnalysisEvidence.js +2 -3
- package/dist/application/InventoryProjectionEvidence.js +4 -3
- package/dist/application/InvestigationProviders.js +11 -2
- package/dist/application/JsonFiles.js +83 -28
- package/dist/application/LinuxHopper.js +9 -6
- package/dist/application/MacHopper.js +15 -18
- package/dist/application/ProcedureAddressResolution.js +11 -0
- package/dist/application/RealHopperAssertions.js +0 -11
- package/dist/application/ReconstructionCoverageService.js +7 -4
- package/dist/application/ReconstructionObligationCandidates.js +1 -1
- package/dist/application/ReconstructionObligationLedgerService.js +4 -3
- package/dist/application/ReferenceSourceImportEntries.js +1 -1
- package/dist/application/Setup.js +21 -17
- package/dist/application/SetupClientConfiguration.js +10 -15
- package/dist/application/SetupHost.js +21 -29
- package/dist/application/SetupPlan.js +11 -9
- package/dist/application/SupportedClients.js +34 -1
- package/dist/application/Uninstall.js +82 -29
- package/dist/application/Update.js +18 -3
- package/dist/application/UpdateMaintenance.js +7 -5
- package/dist/application/UpdateRuntime.js +57 -36
- package/dist/application/WebModuleTraceService.js +4 -2
- package/dist/application/WebNetworkCaptureService.js +4 -2
- package/dist/application/WebRuntimeService.js +5 -3
- package/dist/application/WebScriptExportService.js +32 -6
- package/dist/application/WebSourceLocationService.js +4 -2
- package/dist/application/WorkflowEvidence.js +105 -0
- package/dist/application/XrefsAddressResolution.js +45 -0
- package/dist/application/analysisView/AnalysisViewService.js +76 -0
- package/dist/application/binary/AnalysisClientCleanup.js +30 -5
- package/dist/application/binary/AnalysisProviderEvaluation.js +22 -7
- package/dist/application/binary/AnalysisProviderRegistry.js +4 -6
- package/dist/application/binary/AnalysisSnapshotCache.js +13 -14
- package/dist/application/binary/BinarySession.js +161 -93
- package/dist/application/binary/BinarySessionComposition.js +1 -3
- package/dist/application/binary/BinarySessionExecution.js +3 -5
- package/dist/application/binary/BinarySessionOpen.js +4 -4
- package/dist/application/binary/BinarySessionRecords.js +26 -4
- package/dist/application/binary/BinarySessionStatus.js +18 -7
- package/dist/application/binary/CompositeProvider.js +16 -17
- package/dist/application/binary/LazyAnalysisProvider.js +8 -5
- package/dist/application/binary/SessionProviderRouter.js +27 -135
- package/dist/application/binaryDiagnostics/BinaryLayoutService.js +4 -2
- package/dist/application/binaryDiagnostics/RecordedCrashService.js +4 -2
- package/dist/application/evm/EvmInterfaceService.js +4 -2
- package/dist/application/homebrew.js +48 -0
- package/dist/application/investigation/EvidenceLedger.js +21 -7
- package/dist/application/investigation/InvestigationRecords.js +8 -0
- package/dist/application/javascript/ElectronActiveEvidence.js +9 -13
- package/dist/application/javascript/JavaScriptAnalysisControl.js +34 -0
- package/dist/application/javascript/JavaScriptApplicationEvidence.js +21 -4
- package/dist/application/javascript/JavaScriptApplicationEvidenceGraph.js +19 -2
- package/dist/application/javascript/JavaScriptApplicationService.js +27 -15
- package/dist/application/javascript/JavaScriptApplicationWorkflowService.js +5 -5
- package/dist/application/javascript/JavaScriptArtifactAnalysis.js +10 -7
- package/dist/application/javascript/JavaScriptArtifactGraphBuilder.js +44 -10
- package/dist/application/javascript/JavaScriptArtifactGraphBundlers.js +11 -3
- package/dist/application/javascript/JavaScriptArtifactGraphContext.js +9 -0
- package/dist/application/javascript/JavaScriptArtifactGraphDocuments.js +8 -5
- package/dist/application/javascript/JavaScriptArtifactGraphFindings.js +12 -3
- package/dist/application/javascript/JavaScriptArtifactGraphStructure.js +0 -1
- package/dist/application/javascript/JavaScriptArtifactPathResolution.js +49 -19
- package/dist/application/javascript/JavaScriptArtifactReconstruction.js +56 -8
- package/dist/application/javascript/JavaScriptModuleRelationships.js +38 -9
- package/dist/application/javascript/JavaScriptRecoveryService.js +4 -2
- package/dist/application/javascript/JavaScriptRuntimeObservationService.js +6 -4
- package/dist/application/javascript/JavaScriptRuntimeReconciliationService.js +3 -3
- package/dist/application/javascript/JavaScriptSemanticGraphAsyncProjection.js +2 -3
- package/dist/application/javascript/JavaScriptSemanticGraphBuilder.js +63 -61
- package/dist/application/javascript/JavaScriptSemanticGraphChildProcessProjection.js +1 -2
- package/dist/application/javascript/JavaScriptSemanticGraphDataProjection.js +2 -3
- package/dist/application/javascript/JavaScriptSemanticGraphFlowProjection.js +1 -5
- package/dist/application/javascript/JavaScriptSemanticGraphObjectProjection.js +75 -46
- package/dist/application/javascript/JavaScriptSemanticGraphResourceProjection.js +2 -3
- package/dist/application/javascript/JavaScriptSemanticGraphValueProjection.js +64 -19
- package/dist/application/managed/ManagedApplicationGraphService.js +4 -3
- package/dist/application/managed/ManagedMemberComparisonService.js +9 -5
- package/dist/application/managed/ManagedNativeVerificationService.js +6 -4
- package/dist/application/managed/ManagedReconstructionService.js +4 -3
- package/dist/application/process/ProcessCli.js +25 -17
- package/dist/application/process/ProcessEvidence.js +4 -4
- package/dist/application/workflowInputError.js +18 -0
- package/dist/artifacts/ArtifactProvider.js +48 -13
- package/dist/artifacts/ArtifactReader.js +31 -0
- package/dist/artifacts/DirectoryArtifactReader.js +2 -1
- package/dist/artifacts/MachOSliceArtifactReader.js +106 -15
- package/dist/artifacts/NativeDmgArtifactReader.js +73 -21
- package/dist/artifacts/SafeOutputTree.js +16 -2
- package/dist/artifacts/ZipArtifactReader.js +11 -4
- package/dist/artifacts/apple/AppleAssetCatalogAnalysis.js +26 -5
- package/dist/artifacts/apple/DylibResolutionReader.js +17 -7
- package/dist/artifacts/apple/InterfaceBuilderAnalysis.js +176 -56
- package/dist/artifacts/apple/InterfaceBuilderDecodeBudget.js +195 -0
- package/dist/artifacts/apple/KeyedArchiveReader.js +55 -23
- package/dist/artifacts/apple/MachoLoadCommandReader.js +92 -31
- package/dist/artifacts/apple/NibArchive.js +81 -14
- package/dist/artifacts/apple/NibViewHierarchy.js +10 -3
- package/dist/artifacts/apple/PlistNumberLiterals.js +164 -0
- package/dist/artifacts/extraction/ArtifactExtraction.js +78 -21
- package/dist/artifacts/inventory/ArtifactGraphConstruction.js +79 -68
- package/dist/artifacts/inventory/ArtifactInventory.js +0 -1
- package/dist/artifacts/inventory/reader.js +3 -3
- package/dist/artifacts/inventory/scanCanonical.js +59 -38
- package/dist/artifacts/inventory/scanReader.js +5 -9
- package/dist/artifacts/javascript/JavaScriptArtifactFiles.js +6 -2
- package/dist/browser/BrowserScenarioPartialObservation.js +106 -0
- package/dist/browser/CdpBrowserProvider.js +2 -3
- package/dist/browser/CdpCaptureCompleteness.js +2 -0
- package/dist/browser/CdpCaptureEventHandlers.js +78 -15
- package/dist/browser/CdpCaptureEventTypes.js +5 -1
- package/dist/browser/CdpCaptureEvents.js +25 -1
- package/dist/browser/CdpCaptureValues.js +20 -0
- package/dist/browser/CdpConnection.js +30 -11
- package/dist/browser/CdpElectronProvider.js +0 -2
- package/dist/browser/CdpElectronScriptEvents.js +2 -8
- package/dist/browser/CdpElectronScripts.js +2 -3
- package/dist/browser/CdpOptionalCommand.js +2 -3
- package/dist/browser/CdpPageCapture.js +23 -1
- package/dist/browser/CdpPageCaptureScripts.js +2 -3
- package/dist/browser/CdpSafeMetadata.js +10 -10
- package/dist/browser/PlaywrightBrowserScenarioProvider.js +59 -44
- package/dist/browser/PlaywrightElectronActiveActions.js +34 -79
- package/dist/browser/PlaywrightElectronActiveProjection.js +141 -0
- package/dist/browser/PlaywrightElectronActiveProvider.js +133 -130
- package/dist/browser/PlaywrightScenarioArtifacts.js +1 -1
- package/dist/browser/PlaywrightScenarioBrowser.js +139 -39
- package/dist/browser/PlaywrightScenarioEvents.js +1 -1
- package/dist/browser/PlaywrightScenarioSession.js +39 -22
- package/dist/browser/WebSourceMapFetcher.js +426 -72
- package/dist/browser/assets/LocalWebScriptArtifacts.js +2 -2
- package/dist/browser/assets/ScriptCaptureAdapters.js +1 -1
- package/dist/browser/history/CaptureFailures.js +41 -1
- package/dist/browser/history/CaptureRelease.js +5 -0
- package/dist/browser/history/HarCaptureAdapter.js +3 -3
- package/dist/browser/history/HarJson.js +3 -2
- package/dist/browser/history/HistoricalCaptureDecoder.js +4 -2
- package/dist/browser/history/MitmproxyCaptureAdapter.js +4 -2
- package/dist/catalogIdentity.js +0 -1
- package/dist/cli/analysisSelector.js +23 -0
- package/dist/cli/analysisViewCommands.js +36 -0
- package/dist/cli/applicationCommands.js +2 -3
- package/dist/cli/artifactCommands.js +11 -12
- package/dist/cli/coreAnalysisCommands.js +3 -3
- package/dist/cli/coreBinaryCommands.js +100 -37
- package/dist/cli/coreNativeCommands.js +9 -10
- package/dist/cli/electronCommands.js +10 -9
- package/dist/cli/interactiveSetup.js +6 -6
- package/dist/cli/javascriptApplicationAnalysis.js +7 -3
- package/dist/cli/jsonOutput.js +4 -99
- package/dist/cli/managedCommands.js +7 -8
- package/dist/cli/nativeCallCommands.js +3 -5
- package/dist/cli/omittableDefaults.js +50 -0
- package/dist/cli/processCommands.js +3 -2
- package/dist/cli/setupCommands.js +16 -15
- package/dist/cli/utilityCommands.js +9 -9
- package/dist/cli/webRuntimeCommands.js +8 -8
- package/dist/cli.js +18 -9
- package/dist/cliBrowserScenarioCommands.js +2 -2
- package/dist/cliCommandNames.js +1 -1
- package/dist/cliJsonInput.js +24 -5
- package/dist/cliOutput.js +0 -38
- package/dist/composition/auxiliaryAnalysisProviders.js +27 -23
- package/dist/composition/binary.js +9 -9
- package/dist/composition/browserScenario.js +2 -1
- package/dist/composition/directAnalysis.js +20 -13
- package/dist/composition/electronScenario.js +1 -1
- package/dist/composition/optionalObservationProviders.js +12 -7
- package/dist/config/environment.js +10 -0
- package/dist/config/ghidraStartupTimeout.js +12 -0
- package/dist/config/homeDirectory.js +12 -0
- package/dist/config/mcpResponseBudget.js +30 -0
- package/dist/config/parseConfig.js +8 -3
- package/dist/config/parsers.js +19 -22
- package/dist/contracts/analysisViewToolContracts.js +56 -0
- package/dist/contracts/applicationToolContracts.js +5 -4
- package/dist/contracts/artifactComparisonExample.js +2 -2
- package/dist/contracts/artifactToolContracts.js +1 -1
- package/dist/contracts/browserScenarioToolContracts.js +1 -1
- package/dist/contracts/browserToolContracts.js +19 -15
- package/dist/contracts/enhancedInputs.js +7 -5
- package/dist/contracts/enhancedToolContracts.js +7 -6
- package/dist/contracts/evm/evmToolContracts.js +1 -1
- package/dist/contracts/functionWorkflowToolContracts.js +1 -1
- package/dist/contracts/hopperMemoryContracts.js +2 -5
- package/dist/contracts/inputSchemaPresentation.js +90 -0
- package/dist/contracts/investigationExamples.js +4 -3
- package/dist/contracts/javascript/electronToolContracts.js +2 -2
- package/dist/contracts/javascript/javascriptApplicationWorkflowExamples.js +0 -20
- package/dist/contracts/javascript/javascriptExportShapeComparisonExample.js +245 -0
- package/dist/contracts/javascript/javascriptRuntimeObservationToolContracts.js +1 -1
- package/dist/contracts/managed/managedToolContracts.js +7 -14
- package/dist/contracts/managed/managedWorkflowToolContracts.js +1 -1
- package/dist/contracts/mobileApplicationGraphExamples.js +3 -3
- package/dist/contracts/native/binaryDiagnosticsToolContracts.js +1 -1
- package/dist/contracts/native/nativeToolContracts.js +5 -3
- package/dist/contracts/officialToolContracts.js +16 -16
- package/dist/contracts/promptContracts.js +5 -5
- package/dist/contracts/providerSelection.js +1 -1
- package/dist/contracts/sessionLifecycleInputs.js +3 -7
- package/dist/contracts/sessionStatusContract.js +2 -4
- package/dist/contracts/sessionToolContracts.js +18 -8
- package/dist/contracts/sessionToolSchemas.js +3 -19
- package/dist/contracts/toolContractExamples.js +0 -1
- package/dist/contracts/toolContractHelpers.js +4 -1
- package/dist/contracts/toolContracts.js +2 -0
- package/dist/contracts/toolEffects.js +1 -1
- package/dist/contracts/toolOutputSchemaGroups.js +160 -115
- package/dist/contracts/toolOutputSchemaPrimitives.js +28 -20
- package/dist/contracts/toolSchemaMetadata.js +41 -33
- package/dist/contracts/webNetworkCaptureToolContracts.js +2 -2
- package/dist/contracts/webRuntimeToolContracts.js +1 -1
- package/dist/contracts/webScriptToolContracts.js +1 -1
- package/dist/doctorRuntime.js +7 -5
- package/dist/domain/analysisErrorBase.js +8 -3
- package/dist/domain/analysisErrorCore.js +6 -1
- package/dist/domain/analysisErrorPresentation.js +90 -20
- package/dist/domain/analysisErrorProjection.js +130 -32
- package/dist/domain/analysisSnapshot.js +29 -31
- package/dist/domain/analysisView/analysisView.js +243 -0
- package/dist/domain/analysisView/analysisViewCoverage.js +19 -0
- package/dist/domain/analysisView/binaryLayoutView.js +159 -0
- package/dist/domain/analysisView/javascriptApplicationView.js +238 -0
- package/dist/domain/android/androidAnalysis.js +2 -4
- package/dist/domain/android/androidApplication.js +18 -10
- package/dist/domain/apple/appleApplication.js +42 -15
- package/dist/domain/apple/dyldEnvironment.js +73 -0
- package/dist/domain/apple/dylibResolution.js +130 -12
- package/dist/domain/apple/dylibResolutionFindings.js +9 -7
- package/dist/domain/apple/interfaceBuilderGraph.js +25 -14
- package/dist/domain/apple/interfaceBuilderKeyedArchive.js +13 -3
- package/dist/domain/apple/keyedArchive.js +35 -3
- package/dist/domain/apple/machoContainer.js +54 -0
- package/dist/domain/apple/plistNumbers.js +76 -0
- package/dist/domain/artifactComparison.js +15 -6
- package/dist/domain/artifactGraph.js +16 -3
- package/dist/domain/artifactIdentity.js +29 -0
- package/dist/domain/artifactInventoryEvidence.js +28 -40
- package/dist/domain/artifactOperationError.js +3 -3
- package/dist/domain/artifactPartialObservation.js +1 -0
- package/dist/domain/artifactPathSyntax.js +49 -0
- package/dist/domain/binaryTarget.js +39 -13
- package/dist/domain/bridgeCandidateProjection.js +71 -0
- package/dist/domain/browserCaptureComparison.js +13 -49
- package/dist/domain/browserCompleteness.js +1 -0
- package/dist/domain/browserNetworkEvidence.js +10 -4
- package/dist/domain/browserObservation.js +0 -1
- package/dist/domain/browserObservationError.js +24 -5
- package/dist/domain/browserObservationSchemas.js +14 -3
- package/dist/domain/browserScenario.js +0 -1
- package/dist/domain/browserScenarioCapture.js +1 -2
- package/dist/domain/browserScenarioDiff.js +0 -2
- package/dist/domain/browserScenarioDiffEvidence.js +0 -12
- package/dist/domain/browserScenarioDiffValues.js +2 -2
- package/dist/domain/browserScenarioValues.js +5 -10
- package/dist/domain/bundleComparison.js +3 -2
- package/dist/domain/callPath.js +8 -9
- package/dist/domain/callPathSchemas.js +2 -2
- package/dist/domain/canonicalJsonDigestSteps.js +133 -0
- package/dist/domain/canonicalOrdering.js +9 -5
- package/dist/domain/changedBehavior.js +9 -9
- package/dist/domain/comparisonSourceEvidence.js +40 -0
- package/dist/domain/completionLedgerGeneration.js +2 -1
- package/dist/domain/configurationErrors.js +13 -1
- package/dist/domain/conformancePackage.js +4 -3
- package/dist/domain/evidence.js +65 -36
- package/dist/domain/evidenceBundle.js +47 -8
- package/dist/domain/evidenceCompletionLedger.js +2 -1
- package/dist/domain/evidenceErrors.js +12 -1
- package/dist/domain/explicitSensitiveFailure.js +17 -1
- package/dist/domain/firmware/firmwareAnalysis.js +6 -7
- package/dist/domain/functionComparison.js +4 -5
- package/dist/domain/functionComparisonDimensions.js +120 -87
- package/dist/domain/functionComparisonNormalization.js +23 -34
- package/dist/domain/functionComparisonResults.js +1 -4
- package/dist/domain/functionComparisonSchemas.js +2 -8
- package/dist/domain/functionDossierEvidence.js +2 -37
- package/dist/domain/hopperErrors.js +23 -2
- package/dist/domain/hopperValues.js +51 -8
- package/dist/domain/immutableJson.js +114 -0
- package/dist/domain/inputIssueProjection.js +3 -0
- package/dist/domain/javascript/electronActiveObservation.js +47 -64
- package/dist/domain/javascript/electronObservation.js +14 -3
- package/dist/domain/javascript/electronStaticAnalysisBrowser.js +10 -9
- package/dist/domain/javascript/electronStaticAnalysisIpc.js +2 -1
- package/dist/domain/javascript/electronStaticAnalysisNative.js +2 -1
- package/dist/domain/javascript/electronStaticAnalysisValues.js +6 -12
- package/dist/domain/javascript/javascriptApplicationAnalysis.js +71 -23
- package/dist/domain/javascript/javascriptApplicationEvidenceSchemas.js +2 -0
- package/dist/domain/javascript/javascriptApplicationGraph.js +39 -3
- package/dist/domain/javascript/javascriptApplicationGraphSchemas.js +9 -2
- package/dist/domain/javascript/javascriptApplicationVersionItems.js +5 -2
- package/dist/domain/javascript/javascriptApplicationVersionKeys.js +2 -1
- package/dist/domain/javascript/javascriptAstValues.js +20 -0
- package/dist/{application/javascript/JavaScriptReturnShapeProjection.js → domain/javascript/javascriptExportReturnShapeProjection.js} +4 -4
- package/dist/domain/javascript/javascriptExportShapeComparison.js +7 -1
- package/dist/domain/javascript/javascriptExportShapeComparisonIdentity.js +6 -1
- package/dist/domain/javascript/javascriptExportShapeComparisonSchemas.js +29 -1
- package/dist/domain/javascript/javascriptExportShapeSelection.js +5 -5
- package/dist/domain/javascript/javascriptExportShapeVariants.js +67 -14
- package/dist/domain/javascript/javascriptFeatureSeed.js +20 -0
- package/dist/domain/javascript/javascriptFeatureTraversal.js +0 -1
- package/dist/domain/javascript/javascriptNativeHandoff.js +1 -1
- package/dist/domain/javascript/javascriptRecovery.js +3 -8
- package/dist/domain/javascript/javascriptRuntimeLoadState.js +0 -1
- package/dist/domain/javascript/javascriptRuntimeObservation.js +10 -2
- package/dist/domain/javascript/javascriptRuntimeReconciliationMatching.js +1 -1
- package/dist/domain/javascript/javascriptRuntimeReconciliationParsing.js +3 -2
- package/dist/domain/javascript/javascriptRuntimeStaticCandidates.js +0 -1
- package/dist/domain/javascript/javascriptSemanticAnalysis.js +106 -5
- package/dist/domain/javascript/javascriptSemanticAsyncEffects.js +2 -1
- package/dist/domain/javascript/javascriptSemanticCalls.js +2 -1
- package/dist/domain/javascript/javascriptSemanticChildProcesses.js +2 -1
- package/dist/domain/javascript/javascriptSemanticCoverage.js +6 -5
- package/dist/domain/javascript/javascriptSemanticDataEffectHelpers.js +9 -17
- package/dist/domain/javascript/javascriptSemanticDataEffects.js +23 -6
- package/dist/domain/javascript/javascriptSemanticGraph.js +98 -43
- package/dist/domain/javascript/javascriptSemanticGraphSchemas.js +1 -0
- package/dist/domain/javascript/javascriptSemanticMemberMutations.js +77 -20
- package/dist/domain/javascript/javascriptSemanticMutationValues.js +21 -27
- package/dist/domain/javascript/javascriptSemanticObjects.js +83 -42
- package/dist/domain/javascript/javascriptSemanticPrimitives.js +18 -21
- package/dist/domain/javascript/javascriptSemanticProjection.js +2 -3
- package/dist/domain/javascript/javascriptSemanticPromises.js +2 -1
- package/dist/domain/javascript/javascriptSemanticQuerySchemas.js +8 -4
- package/dist/domain/javascript/javascriptSemanticResourceLimits.js +77 -0
- package/dist/domain/javascript/javascriptSemanticResources.js +1 -1
- package/dist/domain/javascript/javascriptSemanticReturns.js +32 -17
- package/dist/domain/javascript/javascriptSemanticSlots.js +72 -0
- package/dist/domain/javascript/javascriptSemanticValues.js +126 -61
- package/dist/domain/javascript/javascriptSourceMapPaths.js +104 -0
- package/dist/domain/javascript/javascriptSourceParser.js +6 -2
- package/dist/domain/javascript/javascriptStaticAnalysis.js +22 -17
- package/dist/domain/javascript/javascriptStaticAnalysisBundler.js +5 -3
- package/dist/domain/javascript/javascriptStaticAnalysisCalls.js +16 -5
- package/dist/domain/javascript/javascriptStaticAnalysisFindings.js +66 -7
- package/dist/domain/javascript/javascriptStaticAnalysisHelpers.js +28 -17
- package/dist/domain/javascript/javascriptStaticAnalysisState.js +3 -2
- package/dist/domain/javascript/sourceToBundleComparison.js +12 -3
- package/dist/domain/javascript/sourceToBundleSignals.js +47 -19
- package/dist/domain/jsonSerialization.js +109 -0
- package/dist/domain/jsonValue.js +90 -6
- package/dist/domain/localPath.js +6 -0
- package/dist/domain/managed/managedApplicationGraph.js +10 -10
- package/dist/domain/managed/managedArtifact.js +6 -4
- package/dist/domain/managed/managedInspectionEvidence.js +16 -0
- package/dist/domain/managed/managedMemberComparison.js +2 -9
- package/dist/domain/managed/managedMemberComparisonMatch.js +5 -9
- package/dist/domain/managed/managedNativeVerification.js +3 -11
- package/dist/domain/managed/managedNativeVerificationMatch.js +9 -3
- package/dist/domain/native/binaryLayout.js +2 -3
- package/dist/domain/native/fileOffsetPartialObservation.js +1 -0
- package/dist/domain/native/nativeApiBoundary.js +1 -1
- package/dist/domain/native/nativeCallObservation.js +37 -13
- package/dist/domain/native/nativeCallPartialObservation.js +33 -0
- package/dist/domain/native/nativeInstruction.js +7 -0
- package/dist/domain/native/recordedCrash.js +2 -3
- package/dist/domain/offsetDateTime.js +17 -0
- package/dist/domain/process/processCapture.js +21 -16
- package/dist/domain/process/processCaptureCoverage.js +67 -0
- package/dist/domain/process/processCaptureExample.js +2 -1
- package/dist/domain/process/processCaptureParsing.js +1 -34
- package/dist/domain/process/processCaptureValidation.js +81 -13
- package/dist/domain/process/processComparison.js +79 -26
- package/dist/domain/process/processObservation.js +10 -2
- package/dist/domain/process/processScenario.js +35 -12
- package/dist/domain/process/processTraceComparison.js +0 -2
- package/dist/domain/process/processTraceDimensionProjection.js +1 -1
- package/dist/domain/process/processTraceEvaluation.js +15 -11
- package/dist/domain/process/processTraceSpecification.js +3 -4
- package/dist/domain/propertyListKeys.js +1 -1
- package/dist/domain/propertyListXmlText.js +19 -0
- package/dist/domain/providerAdapterError.js +3 -1
- package/dist/domain/providerOperationHealth.js +54 -0
- package/dist/domain/reconstructionCoverage.js +5 -2
- package/dist/domain/reconstructionObligationLedgerSchemas.js +2 -1
- package/dist/domain/reconstructionReadinessSchemas.js +2 -1
- package/dist/domain/reconstructionVerification.js +9 -46
- package/dist/domain/reconstructionVerificationSchemas.js +4 -3
- package/dist/domain/referenceSourceGraph.js +20 -21
- package/dist/domain/staticRuntimeCorrelation.js +8 -45
- package/dist/domain/stringPatterns.js +6 -0
- package/dist/domain/swiftSymbolClassification.js +61 -0
- package/dist/domain/symbolAnalysis.js +66 -18
- package/dist/domain/webBundleAnalysis.js +20 -8
- package/dist/domain/webBundleAnalyzerInspection.js +13 -8
- package/dist/domain/webBundleAnalyzerResult.js +41 -2
- package/dist/domain/webCaptureDiff.js +0 -1
- package/dist/domain/webCaptureDiffSchemas.js +6 -3
- package/dist/domain/webEventListeners.js +3 -2
- package/dist/domain/webExecution.js +3 -2
- package/dist/domain/webRuntime.js +19 -7
- package/dist/domain/webScriptExport.js +1 -1
- package/dist/domain/webSourceLocation.js +1 -0
- package/dist/dotnet/ManagedArtifactInspector.js +2 -19
- package/dist/dotnet/ManagedMemberInspector.js +12 -18
- package/dist/dotnet/ManagedMemberInspectorCore.js +47 -44
- package/dist/dotnet/ManagedMemberRows.js +75 -62
- package/dist/dotnet/ManagedMetadataInventory.js +16 -22
- package/dist/dotnet/ManagedMethodBodyReader.js +4 -0
- package/dist/dotnet/ManagedNativeBoundaryHelpers.js +109 -94
- package/dist/dotnet/ManagedNativeBoundaryInspector.js +12 -21
- package/dist/dotnet/ManagedReaderFailure.js +16 -0
- package/dist/dotnet/ManagedStaticProvider.js +3 -5
- package/dist/evaluation/AgentEvaluationFixtures.js +250 -0
- package/dist/evaluation/AgentEvaluationReport.js +28 -0
- package/dist/evaluation/CodexAgentEval.js +12 -8
- package/dist/evaluation/KnownAnswerEvaluation.js +281 -0
- package/dist/evm/EvmoleInterfaceProvider.js +2 -1
- package/dist/firmware/FirmwareCommand.js +9 -5
- package/dist/firmware/FirmwareFiles.js +1 -1
- package/dist/firmware/FirmwareProvider.js +4 -4
- package/dist/generatedPackageMetadata.js +2 -2
- package/dist/ghidra/GhidraAnalysisProfile.js +7 -5
- package/dist/ghidra/GhidraClient.js +126 -34
- package/dist/ghidra/GhidraClientStartup.js +0 -2
- package/dist/ghidra/GhidraDiagnostics.js +7 -7
- package/dist/ghidra/GhidraDoctor.js +6 -5
- package/dist/ghidra/GhidraFunctionValues.js +13 -12
- package/dist/ghidra/GhidraInstallation.js +58 -33
- package/dist/ghidra/GhidraInventoryValues.js +14 -4
- package/dist/ghidra/GhidraJavaLaunch.js +66 -0
- package/dist/ghidra/GhidraLauncher.js +47 -22
- package/dist/ghidra/GhidraProvider.js +6 -2
- package/dist/ghidra/GhidraProviderCapabilities.js +20 -2
- package/dist/ghidra/GhidraProviderClient.js +36 -15
- package/dist/ghidra/GhidraSessionError.js +13 -7
- package/dist/ghidra/GhidraSessionRoot.js +39 -0
- package/dist/ghidra/GhidraTargetSnapshot.js +47 -12
- package/dist/ghidra/GhidraTransport.js +20 -0
- package/dist/ghidra/extensions/GhidraExtensions.js +17 -10
- package/dist/ghidra/extensions/nativeaot/NativeAotAdapter.js +8 -2
- package/dist/hopper/BridgeLauncher.js +65 -56
- package/dist/hopper/HopperAnalysisProfile.js +65 -12
- package/dist/hopper/HopperCleanup.js +63 -22
- package/dist/hopper/HopperClient.js +288 -59
- package/dist/hopper/HopperFileOffset.js +237 -0
- package/dist/hopper/HopperMachOImage.js +197 -0
- package/dist/hopper/HopperOperationStage.js +6 -0
- package/dist/hopper/HopperProvider.js +71 -19
- package/dist/hopper/HopperProviderCapabilities.js +19 -1
- package/dist/hopper/HopperRegexSearch.js +134 -0
- package/dist/hopper/HopperRegexWorker.js +27 -0
- package/dist/hopper/HopperRequestQueue.js +68 -19
- package/dist/hopper/HopperTargetLease.js +133 -49
- package/dist/hopper/LinuxPrivateDisplayProbe.js +6 -0
- package/dist/ida/IdaConfiguration.js +8 -3
- package/dist/ida/IdaInput.js +1 -7
- package/dist/ida/IdaMcpConnection.js +8 -4
- package/dist/ida/IdaOperationRunner.js +3 -3
- package/dist/ida/IdaProvider.js +8 -12
- package/dist/ida/IdaSessionClient.js +20 -18
- package/dist/ida/IdaWorkspace.js +12 -13
- package/dist/inspector/JavaScriptRuntimeScope.js +9 -1
- package/dist/inspector/V8InspectorCaptureProjection.js +9 -4
- package/dist/inspector/V8InspectorProvider.js +82 -36
- package/dist/javascript/recovery/WakaruCommand.js +7 -2
- package/dist/javascript/recovery/WakaruExecution.js +5 -2
- package/dist/javascript/sourceMaps/DecodedSourceMap.js +47 -0
- package/dist/javascript/sourceMaps/SourceMapCommand.js +16 -0
- package/dist/javascript/sourceMaps/SourceMapFormat.js +79 -31
- package/dist/javascript/sourceMaps/TraceSourceMap.js +14 -28
- package/dist/main/shutdown.js +11 -3
- package/dist/main/startup.js +9 -2
- package/dist/main/transport.js +22 -2
- package/dist/main.js +11 -18
- package/dist/mcpDoctor.js +62 -2
- package/dist/native/AppleDispatchCoverage.js +47 -6
- package/dist/native/AppleDispatchDecodeFacts.js +6 -0
- package/dist/native/AppleDispatchMetadata.js +6 -3
- package/dist/native/AppleMachoFixups.js +48 -24
- package/dist/native/AppleMachoSelection.js +48 -22
- package/dist/native/AppleObjcCategories.js +6 -2
- package/dist/native/AppleObjcDispatchFacets.js +5 -2
- package/dist/native/AppleObjcProperties.js +2 -1
- package/dist/native/AppleSwiftDispatchFacets.js +27 -21
- package/dist/native/AppleSwiftVtables.js +21 -15
- package/dist/native/CommandRunner.js +87 -88
- package/dist/native/LldbCallTracer.js +372 -103
- package/dist/native/LldbRetainedObservations.js +178 -0
- package/dist/native/NativeCallObservation.js +62 -3
- package/dist/native/NativeMacOSProvider.js +122 -31
- package/dist/native/NativeUiHelperRuntime.js +11 -2
- package/dist/native/NativeUiObservation.js +2 -2
- package/dist/native/SignatureTargetBinding.js +155 -0
- package/dist/native/parsers/lipo.js +71 -1
- package/dist/native/pwndbg/PwndbgCoreContext.js +25 -5
- package/dist/native/pwntools/PwntoolsDecoder.js +2 -1
- package/dist/native/pwntools/RecordedCrashStructureBindings.js +2 -0
- package/dist/process/DarwinProcessRunTokenReader.js +23 -10
- package/dist/process/ExecFileOutput.js +108 -6
- package/dist/process/OwnedCommand.js +7 -2
- package/dist/process/PrivateRuntimeRoot.js +10 -5
- package/dist/process/ProcessOwnership.js +204 -57
- package/dist/process/ProcessOwnershipObservation.js +60 -9
- package/dist/process/ProviderProcess.js +39 -10
- package/dist/process/capture/FilesystemSnapshot.js +50 -13
- package/dist/process/capture/ProcessCaptureError.js +15 -2
- package/dist/process/capture/ProcessCaptureLifecycle.js +235 -81
- package/dist/process/capture/ProcessFilesystemEffects.js +33 -3
- package/dist/process/capture/ProcessHarness.js +21 -25
- package/dist/process/capture/ProcessNormalization.js +20 -2
- package/dist/process/capture/ProcessSampling.js +25 -2
- package/dist/process/capture/TerminalRenderer.js +14 -0
- package/dist/process/snapshotEnvironment.js +14 -0
- package/dist/server/EvidenceMcpServer.js +157 -0
- package/dist/server/createServer.js +61 -41
- package/dist/server/mcpClientMetadata.js +12 -5
- package/dist/server/promptCompletion.js +3 -8
- package/dist/server/registerAnalysisViewTool.js +15 -0
- package/dist/server/registerAndroidTools.js +2 -5
- package/dist/server/registerApplicationTools/compareExportShapes.js +4 -5
- package/dist/server/registerApplicationTools/compareSourceToBundle.js +4 -5
- package/dist/server/registerApplicationTools/compareVersions.js +4 -5
- package/dist/server/registerApplicationTools/coverage.js +1 -2
- package/dist/server/registerApplicationTools/helpers.js +1 -4
- package/dist/server/registerApplicationTools/obligationLedger.js +4 -5
- package/dist/server/registerApplicationTools/projectMobileApplicationGraph.js +3 -4
- package/dist/server/registerApplicationTools/traceFeature.js +4 -5
- package/dist/server/registerApplicationTools/traceSemantics.js +4 -5
- package/dist/server/registerArtifactComparisonTool.js +13 -10
- package/dist/server/registerBinaryDiagnosticsTools.js +2 -5
- package/dist/server/registerBrowserScenarioTool.js +3 -6
- package/dist/server/registerBrowserTools.js +13 -18
- package/dist/server/registerBundleComparisonTool.js +5 -7
- package/dist/server/registerCloseLifecycleTool.js +9 -20
- package/dist/server/registerElectronTools.js +10 -15
- package/dist/server/registerEnhancedTools.js +36 -77
- package/dist/server/registerEvidenceTools.js +3 -6
- package/dist/server/registerEvmTools.js +2 -5
- package/dist/server/registerFirmwareTools.js +2 -5
- package/dist/server/registerFunctionComparisonTool.js +15 -12
- package/dist/server/registerInvestigationTools.js +16 -17
- package/dist/server/registerJavaScriptRecoveryTool.js +2 -5
- package/dist/server/registerJavaScriptRuntimeObservationTools.js +6 -8
- package/dist/server/registerManagedWorkflowTools/compareManagedMembers.js +5 -8
- package/dist/server/registerManagedWorkflowTools/importManagedReconstruction.js +4 -7
- package/dist/server/registerManagedWorkflowTools/projectManagedApplicationGraph.js +6 -9
- package/dist/server/registerManagedWorkflowTools/verifyManagedNativeBoundaries.js +6 -9
- package/dist/server/registerOfficialTools.js +4 -21
- package/dist/server/registerProcessComparisonTool.js +74 -48
- package/dist/server/registerRecordedCrashTools.js +2 -5
- package/dist/server/registerSessionRecordTools.js +19 -24
- package/dist/server/registerSessionStatusTool.js +19 -6
- package/dist/server/registerSessionTools.js +20 -18
- package/dist/server/registerWebModuleTool.js +2 -5
- package/dist/server/registerWebNetworkCaptureTool.js +2 -5
- package/dist/server/registerWebRuntimeTools.js +4 -9
- package/dist/server/registerWebScriptTool.js +2 -5
- package/dist/server/registerWebSourceLocationTool.js +2 -5
- package/dist/server/runDerivedOperation.js +15 -3
- package/dist/server/sessionAvailabilityPolicy.js +0 -1
- package/dist/server/toolRegistrationOptions.js +2 -2
- package/dist/server/toolResult.js +75 -51
- package/dist/server/toolResultEncoding.js +34 -0
- package/dist/windows/WindowsNativeLoader.js +1 -0
- package/dist/windows/WindowsOwnedProcess.js +60 -15
- package/dist/windows/WindowsPrivateRuntime.js +7 -8
- package/install.sh +1 -1
- package/native/windows/README.md +3 -1
- package/native/windows/build/manifest.json +2 -2
- package/native/windows/build/rea-windows-x64.node +0 -0
- package/package.json +44 -30
- package/scripts/electron-active-hook-boundaries.cjs +18 -20
- package/scripts/electron-active-hook.cjs +241 -37
- package/scripts/rea.mjs +3 -6
- package/skills/reverse-engineer-anything/SKILL.md +12 -3
- package/skills/reverse-engineer-anything/references/android-applications.md +6 -3
- package/skills/reverse-engineer-anything/references/evidence-workflows.md +8 -4
- package/skills/reverse-engineer-anything/references/javascript-applications.md +20 -3
- package/skills/reverse-engineer-anything/references/native-and-artifacts.md +9 -0
- package/dist/config.js +0 -1
- package/dist/contracts/browserCaptureToolInputSchema.js +0 -43
- package/dist/contracts/process/processCaptureExample.js +0 -2
- package/dist/contracts/toolOutputSchemas.js +0 -2
- package/dist/ghidra/GhidraDefaults.js +0 -2
- package/dist/main/reload.js +0 -12
- package/dist/main/state.js +0 -3
- package/dist/server/sessionToolPolicies.js +0 -2
package/dist/domain/evidence.js
CHANGED
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
2
|
import { digestCanonicalValue } from "./canonicalDigest.js";
|
|
3
|
+
import { canonicalJsonDigestSteps } from "./canonicalJsonDigestSteps.js";
|
|
3
4
|
import { analysisProfileSchema, } from "./analysisProfile.js";
|
|
4
|
-
import { jsonValueSchema } from "./jsonValue.js";
|
|
5
|
+
import { jsonObjectSchema, jsonValueSchema, jsonValueValidationIssue, jsonValueValidationSteps, } from "./jsonValue.js";
|
|
6
|
+
import { freezeJsonSnapshot, isImmutableJsonSnapshot, } from "./immutableJson.js";
|
|
5
7
|
import { digestSchema } from "./../domain/digests.js";
|
|
6
8
|
import { prefixedDigestSchema } from "./../domain/digests.js";
|
|
7
9
|
/** Provider identity schema shared by evidence-bearing persistence formats. */
|
|
@@ -77,9 +79,10 @@ const evidenceBaseSchema = z
|
|
|
77
79
|
evidence_id: prefixedDigestSchema("ev"),
|
|
78
80
|
subject: subjectSchema.nullable(),
|
|
79
81
|
provider: providerSchema,
|
|
82
|
+
analysis_profile: analysisProfileSchema.nullable(),
|
|
80
83
|
predicate_type: z.string().min(1),
|
|
81
84
|
operation: z.string().min(1),
|
|
82
|
-
parameters:
|
|
85
|
+
parameters: jsonObjectSchema,
|
|
83
86
|
raw_result: jsonValueSchema.nullable(),
|
|
84
87
|
normalized_result: jsonValueSchema,
|
|
85
88
|
confidence: z.enum(["observed", "derived", "inferred"]),
|
|
@@ -90,13 +93,10 @@ const evidenceBaseSchema = z
|
|
|
90
93
|
evidence_links: z.array(prefixedDigestSchema("ev")),
|
|
91
94
|
})
|
|
92
95
|
.strict();
|
|
93
|
-
/**
|
|
94
|
-
export const
|
|
95
|
-
analysis_profile: analysisProfileSchema.optional(),
|
|
96
|
-
});
|
|
97
|
-
const validateAnalysisProfileProvider = (evidence, context) => {
|
|
96
|
+
/** Require a reported analysis profile to identify the observation provider. */
|
|
97
|
+
export const validateAnalysisProfileProvider = (evidence, context) => {
|
|
98
98
|
const profile = evidence.analysis_profile;
|
|
99
|
-
if (profile !==
|
|
99
|
+
if (profile !== null &&
|
|
100
100
|
(profile.provider.id !== evidence.provider.id ||
|
|
101
101
|
profile.provider.name !== evidence.provider.name ||
|
|
102
102
|
profile.provider.version !== evidence.provider.version))
|
|
@@ -107,15 +107,15 @@ const validateAnalysisProfileProvider = (evidence, context) => {
|
|
|
107
107
|
});
|
|
108
108
|
};
|
|
109
109
|
/** Strict, provider-neutral record for one successful public observation. */
|
|
110
|
-
export const evidenceSchema =
|
|
111
|
-
const
|
|
112
|
-
|
|
113
|
-
.
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
110
|
+
export const evidenceSchema = evidenceBaseSchema.superRefine(validateAnalysisProfileProvider);
|
|
111
|
+
const immutableEvidenceSnapshots = new WeakMap();
|
|
112
|
+
const immutableResultSchema = z
|
|
113
|
+
.custom(isImmutableJsonSnapshot)
|
|
114
|
+
.superRefine((value, context) => {
|
|
115
|
+
const issue = jsonValueValidationIssue(value);
|
|
116
|
+
if (issue !== undefined)
|
|
117
|
+
context.addIssue({ code: "custom", message: issue });
|
|
118
|
+
});
|
|
119
119
|
const semanticProjection = (evidence) => ({
|
|
120
120
|
subject: evidence.subject === null
|
|
121
121
|
? null
|
|
@@ -125,9 +125,7 @@ const semanticProjection = (evidence) => ({
|
|
|
125
125
|
architecture: evidence.subject.architecture,
|
|
126
126
|
},
|
|
127
127
|
provider: evidence.provider,
|
|
128
|
-
|
|
129
|
-
? {}
|
|
130
|
-
: { analysis_profile: evidence.analysis_profile }),
|
|
128
|
+
analysis_profile: evidence.analysis_profile,
|
|
131
129
|
predicate_type: evidence.predicate_type,
|
|
132
130
|
operation: evidence.operation,
|
|
133
131
|
parameters: evidence.parameters,
|
|
@@ -140,18 +138,54 @@ const semanticProjection = (evidence) => ({
|
|
|
140
138
|
locations: evidence.locations,
|
|
141
139
|
evidence_links: evidence.evidence_links,
|
|
142
140
|
});
|
|
143
|
-
/**
|
|
141
|
+
/** Hash semantic content, including raw results and excluding display-subject fields. */
|
|
144
142
|
const computeEvidenceId = (evidence) => `ev_${digestCanonicalValue(semanticProjection(evidence), "Evidence")}`;
|
|
145
143
|
/** Parse evidence and reject a syntactically valid but tampered semantic ID. */
|
|
146
144
|
export const parseEvidence = (input) => {
|
|
147
|
-
const
|
|
145
|
+
const immutable = typeof input === "object" && input !== null
|
|
146
|
+
? immutableEvidenceSnapshots.get(input)
|
|
147
|
+
: undefined;
|
|
148
|
+
if (immutable !== undefined)
|
|
149
|
+
return immutable;
|
|
150
|
+
const evidence = evidenceSchema.parse(input);
|
|
148
151
|
const { evidence_id: evidenceId, ...withoutId } = evidence;
|
|
149
152
|
if (computeEvidenceId(withoutId) !== evidenceId)
|
|
150
153
|
throw new TypeError("Evidence semantic identifier does not match its record");
|
|
151
154
|
return evidence;
|
|
152
155
|
};
|
|
156
|
+
/** Authenticate and seal a ledger-owned snapshot; external mutable values are copied first. */
|
|
157
|
+
export const immutableEvidence = (input) => rememberImmutableEvidence(parseEvidence(input));
|
|
158
|
+
/** Recognize authenticated Evidence whose complete reachable JSON data is immutable. */
|
|
159
|
+
export const isImmutableEvidence = (evidence) => immutableEvidenceSnapshots.has(evidence);
|
|
160
|
+
const rememberImmutableEvidence = (evidence) => {
|
|
161
|
+
freezeJsonSnapshot(evidence);
|
|
162
|
+
immutableEvidenceSnapshots.set(evidence, evidence);
|
|
163
|
+
return evidence;
|
|
164
|
+
};
|
|
153
165
|
/** Build deterministic Evidence from an immutable artifact subject. */
|
|
154
166
|
export const createEvidence = (target, provider, observation) => {
|
|
167
|
+
const { normalized, sharedResult } = normalizeEvidenceObservation(target, provider, observation);
|
|
168
|
+
const evidence = {
|
|
169
|
+
...normalized,
|
|
170
|
+
evidence_id: computeEvidenceId(normalized),
|
|
171
|
+
};
|
|
172
|
+
return sharedResult ? rememberImmutableEvidence(evidence) : evidence;
|
|
173
|
+
};
|
|
174
|
+
/** Create Evidence from owned immutable JSON while exposing cooperative computation steps. */
|
|
175
|
+
export function* createImmutableEvidenceSteps(target, provider, observation) {
|
|
176
|
+
if (!isImmutableJsonSnapshot(observation.result))
|
|
177
|
+
throw new TypeError("Cooperative Evidence requires an authenticated immutable result");
|
|
178
|
+
// The envelope parser below retains its usual diagnostics, using the completed
|
|
179
|
+
// immutable validation rather than traversing the payload synchronously again.
|
|
180
|
+
yield* jsonValueValidationSteps(observation.result);
|
|
181
|
+
const { normalized } = normalizeEvidenceObservation(target, provider, observation);
|
|
182
|
+
const digest = yield* canonicalJsonDigestSteps(semanticProjection(normalized));
|
|
183
|
+
return rememberImmutableEvidence({
|
|
184
|
+
...normalized,
|
|
185
|
+
evidence_id: `ev_${digest}`,
|
|
186
|
+
});
|
|
187
|
+
}
|
|
188
|
+
const normalizeEvidenceObservation = (target, provider, observation) => {
|
|
155
189
|
const subject = target === undefined
|
|
156
190
|
? null
|
|
157
191
|
: {
|
|
@@ -174,9 +208,7 @@ export const createEvidence = (target, provider, observation) => {
|
|
|
174
208
|
name: provider.name,
|
|
175
209
|
version: provider.version,
|
|
176
210
|
},
|
|
177
|
-
|
|
178
|
-
? {}
|
|
179
|
-
: { analysis_profile: observation.analysisProfile }),
|
|
211
|
+
analysis_profile: observation.analysisProfile ?? null,
|
|
180
212
|
predicate_type: observation.predicateType ?? "rea.analysis",
|
|
181
213
|
operation: observation.operation,
|
|
182
214
|
parameters: observation.parameters,
|
|
@@ -197,13 +229,13 @@ export const createEvidence = (target, provider, observation) => {
|
|
|
197
229
|
locations: [...(observation.locations ?? [])],
|
|
198
230
|
evidence_links: [...(observation.evidenceLinks ?? [])],
|
|
199
231
|
};
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
const
|
|
204
|
-
?
|
|
205
|
-
:
|
|
206
|
-
const normalized =
|
|
232
|
+
const sharedResult = typeof observation.result === "object" &&
|
|
233
|
+
observation.result !== null &&
|
|
234
|
+
isImmutableJsonSnapshot(observation.result);
|
|
235
|
+
const selectedSchema = sharedResult
|
|
236
|
+
? evidenceSchema.safeExtend({ normalized_result: immutableResultSchema })
|
|
237
|
+
: evidenceSchema;
|
|
238
|
+
const normalized = selectedSchema.parse({
|
|
207
239
|
...semantic,
|
|
208
240
|
evidence_id: `ev_${"0".repeat(64)}`,
|
|
209
241
|
subject,
|
|
@@ -211,8 +243,5 @@ export const createEvidence = (target, provider, observation) => {
|
|
|
211
243
|
// The envelope has already been parsed into an independent snapshot. Only
|
|
212
244
|
// its derived identifier changes here; parsing again clones the full payload
|
|
213
245
|
// and recomputes the same digest while the previous snapshot is still live.
|
|
214
|
-
return {
|
|
215
|
-
...normalized,
|
|
216
|
-
evidence_id: computeEvidenceId(normalized),
|
|
217
|
-
};
|
|
246
|
+
return { normalized, sharedResult };
|
|
218
247
|
};
|
|
@@ -1,23 +1,22 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
2
|
import canonicalize from "canonicalize";
|
|
3
|
-
import {
|
|
3
|
+
import { evidenceSchema, immutableEvidence, parseEvidence, providerSchema, } from "./evidence.js";
|
|
4
4
|
import { residualUnknownSchema, } from "./residualUnknown.js";
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
.pick({
|
|
5
|
+
import { freezeJsonSnapshot } from "./immutableJson.js";
|
|
6
|
+
const artifactManifestSchema = evidenceSchema.shape.subject.unwrap().pick({
|
|
8
7
|
digest: true,
|
|
9
8
|
format: true,
|
|
10
9
|
architecture: true,
|
|
11
10
|
});
|
|
12
11
|
const providerManifestSchema = providerSchema;
|
|
13
|
-
const environmentManifestSchema =
|
|
12
|
+
const environmentManifestSchema = evidenceSchema.shape.environment.unwrap();
|
|
14
13
|
const scenarioManifestSchema = z.object({
|
|
15
|
-
evidence_id:
|
|
14
|
+
evidence_id: evidenceSchema.shape.evidence_id,
|
|
16
15
|
operation: z.string().min(1),
|
|
17
16
|
authority: z.literal("controlled-replay"),
|
|
18
17
|
});
|
|
19
18
|
const captureManifestSchema = z.object({
|
|
20
|
-
evidence_id:
|
|
19
|
+
evidence_id: evidenceSchema.shape.evidence_id,
|
|
21
20
|
predicate_type: z.string().min(1),
|
|
22
21
|
});
|
|
23
22
|
export const evidenceBundleSchema = z.object({
|
|
@@ -27,8 +26,21 @@ export const evidenceBundleSchema = z.object({
|
|
|
27
26
|
scenarios: z.array(scenarioManifestSchema),
|
|
28
27
|
captures: z.array(captureManifestSchema),
|
|
29
28
|
unknowns: z.array(residualUnknownSchema),
|
|
30
|
-
records: z.array(
|
|
29
|
+
records: z.array(evidenceSchema),
|
|
31
30
|
});
|
|
31
|
+
const immutableBundles = new WeakMap();
|
|
32
|
+
/** Build and authenticate a sealed bundle while reusing immutable Evidence records. */
|
|
33
|
+
export const createImmutableEvidenceBundle = (records, unknowns = []) => {
|
|
34
|
+
const checkedRecords = records.map(immutableEvidence);
|
|
35
|
+
if (new Set(checkedRecords.map(({ evidence_id }) => evidence_id)).size !==
|
|
36
|
+
checkedRecords.length)
|
|
37
|
+
throw new TypeError("Evidence bundle contains duplicate record IDs");
|
|
38
|
+
const checkedUnknowns = unknowns.map((unknown) => residualUnknownSchema.parse(unknown));
|
|
39
|
+
validateUnknownGraph(checkedUnknowns, checkedRecords);
|
|
40
|
+
const bundle = freezeJsonSnapshot(createEvidenceBundle(checkedRecords, checkedUnknowns));
|
|
41
|
+
immutableBundles.set(bundle, bundle);
|
|
42
|
+
return bundle;
|
|
43
|
+
};
|
|
32
44
|
/** Project records into a deterministic bundle whose order has no semantics. */
|
|
33
45
|
export const createEvidenceBundle = (records, unknowns = []) => {
|
|
34
46
|
const sortedRecords = [...records].sort((left, right) => left.evidence_id.localeCompare(right.evidence_id));
|
|
@@ -120,8 +132,35 @@ const referencedEvidenceIds = (unknown) => [
|
|
|
120
132
|
...unknown.mutation_evidence_ids,
|
|
121
133
|
...(unknown.resolution?.evidence_ids ?? []),
|
|
122
134
|
];
|
|
135
|
+
/**
|
|
136
|
+
* Name the bundle constraint that failed and how to recover. A single
|
|
137
|
+
* Evidence record, such as one command result, is not a bundle.
|
|
138
|
+
*/
|
|
139
|
+
export const describeEvidenceBundleFailure = (input, cause) => {
|
|
140
|
+
const record = evidenceSchema.safeParse(input);
|
|
141
|
+
if (record.success)
|
|
142
|
+
return `Expected an Evidence bundle with records and manifest arrays, but this JSON is one Evidence record (${record.data.evidence_id}). Export a session bundle with the MCP export_evidence_bundle tool and supply that file.`;
|
|
143
|
+
return cause instanceof z.ZodError
|
|
144
|
+
? `Evidence bundle does not match the bundle schema ${describeValidationFailure(cause)}. Supply an unmodified bundle written by export_evidence_bundle or rea evidence-export.`
|
|
145
|
+
: `Evidence bundle validation failed: ${describeValidationFailure(cause)}. Recreate or re-export the bundle, then try again.`;
|
|
146
|
+
};
|
|
147
|
+
/** Locate the first schema issue, or keep a thrown constraint message. */
|
|
148
|
+
export const describeValidationFailure = (cause) => {
|
|
149
|
+
if (!(cause instanceof z.ZodError))
|
|
150
|
+
return cause instanceof Error ? cause.message : String(cause);
|
|
151
|
+
const [first, ...rest] = cause.issues;
|
|
152
|
+
const location = first === undefined || first.path.length === 0
|
|
153
|
+
? "the document root"
|
|
154
|
+
: first.path.map(String).join(".");
|
|
155
|
+
return `at ${location}: ${first?.message ?? "invalid value"}${rest.length === 0 ? "" : ` (${String(rest.length)} more issues)`}`;
|
|
156
|
+
};
|
|
123
157
|
/** Parse records, verify semantic IDs, and reject inconsistent manifests. */
|
|
124
158
|
export const parseEvidenceBundle = (input) => {
|
|
159
|
+
if (typeof input === "object" && input !== null) {
|
|
160
|
+
const owned = immutableBundles.get(input);
|
|
161
|
+
if (owned !== undefined)
|
|
162
|
+
return owned;
|
|
163
|
+
}
|
|
125
164
|
const parsed = evidenceBundleSchema.parse(input);
|
|
126
165
|
const recordIds = parsed.records.map(({ evidence_id: id }) => id);
|
|
127
166
|
if (new Set(recordIds).size !== recordIds.length)
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import { createHash } from "node:crypto";
|
|
2
2
|
import canonicalize from "canonicalize";
|
|
3
3
|
import { z } from "zod";
|
|
4
|
+
import { IDENTIFIER_PATTERN } from "./stringPatterns.js";
|
|
4
5
|
import { prefixedDigestSchema } from "./../domain/digests.js";
|
|
5
6
|
const evidenceIdSchema = prefixedDigestSchema("ev");
|
|
6
|
-
const claimIdSchema = z.string().regex(
|
|
7
|
+
const claimIdSchema = z.string().regex(IDENTIFIER_PATTERN);
|
|
7
8
|
/** Terminal outcome recorded for one verifier claim. */
|
|
8
9
|
export const evidenceCompletionStatusSchema = z.enum([
|
|
9
10
|
"pass",
|
|
@@ -1,7 +1,15 @@
|
|
|
1
|
-
import { AnalysisError } from "./analysisErrorBase.js";
|
|
1
|
+
import { AnalysisError, } from "./analysisErrorBase.js";
|
|
2
2
|
/** Evidence identity, schema, or bundle manifests failed integrity checks. */
|
|
3
3
|
export class EvidenceIntegrityError extends AnalysisError {
|
|
4
4
|
_tag = "EvidenceIntegrityError";
|
|
5
|
+
userMessage;
|
|
6
|
+
constructor(message, options) {
|
|
7
|
+
super(message, options);
|
|
8
|
+
this.userMessage = options?.userMessage;
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
/** A valid snapshot belongs to a different target, provider, or analysis profile. */
|
|
12
|
+
export class AnalysisSnapshotMismatchError extends EvidenceIntegrityError {
|
|
5
13
|
}
|
|
6
14
|
/** A session Evidence reference is missing or has the wrong semantic identity. */
|
|
7
15
|
export class EvidenceReferenceError extends EvidenceIntegrityError {
|
|
@@ -22,9 +30,12 @@ export class EvidenceFileError extends AnalysisError {
|
|
|
22
30
|
operation;
|
|
23
31
|
reason;
|
|
24
32
|
_tag = "EvidenceFileError";
|
|
33
|
+
/** Caller-selected path that failed, resolved against the working directory. */
|
|
34
|
+
path;
|
|
25
35
|
constructor(operation, reason, options) {
|
|
26
36
|
super(`Evidence bundle ${operation} failed: ${reason}`, options);
|
|
27
37
|
this.operation = operation;
|
|
28
38
|
this.reason = reason;
|
|
39
|
+
this.path = options?.path;
|
|
29
40
|
}
|
|
30
41
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { AnalysisAccessDeniedError, AnalysisArtifactChangedError, AnalysisInputError, AnalysisOutputError, AnalysisCapabilityUnavailableError, } from "./analysisErrorCore.js";
|
|
1
|
+
import { AnalysisAccessDeniedError, AnalysisArtifactChangedError, AnalysisInputError, AnalysisOutputError, AnalysisCapabilityUnavailableError, AnalysisResourceConstraintError, } from "./analysisErrorCore.js";
|
|
2
2
|
import { redactExplicitText } from "./explicitSensitiveValues.js";
|
|
3
3
|
import { ProviderAdapterError } from "./providerAdapterError.js";
|
|
4
4
|
import { ProviderCleanupError } from "./providerCleanupError.js";
|
|
@@ -79,6 +79,22 @@ export const redactExplicitFailure = (error, values) => {
|
|
|
79
79
|
? {}
|
|
80
80
|
: { userMessage: text(error.userMessage) }),
|
|
81
81
|
});
|
|
82
|
+
if (error instanceof AnalysisResourceConstraintError)
|
|
83
|
+
return new AnalysisResourceConstraintError(error.operation, error.resource, text(error.reason), error.reportedLimits === null ? null : diagnostics(error.reportedLimits), {
|
|
84
|
+
cause: error,
|
|
85
|
+
...(error.remediationAction === undefined
|
|
86
|
+
? {}
|
|
87
|
+
: { remediationAction: text(error.remediationAction) }),
|
|
88
|
+
...(error.capturedOutput === undefined
|
|
89
|
+
? {}
|
|
90
|
+
: {
|
|
91
|
+
capturedOutput: {
|
|
92
|
+
stdout: text(error.capturedOutput.stdout),
|
|
93
|
+
stderr: text(error.capturedOutput.stderr),
|
|
94
|
+
truncated: error.capturedOutput.truncated,
|
|
95
|
+
},
|
|
96
|
+
}),
|
|
97
|
+
});
|
|
82
98
|
if (error instanceof ProviderCleanupError)
|
|
83
99
|
return new ProviderCleanupError(error.providerId, error.cleanupResources.map(text), diagnostics(error.diagnostics ?? {}), { operation: error.operation, cause: error });
|
|
84
100
|
if (error instanceof ProviderAdapterError)
|
|
@@ -1,13 +1,11 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
2
|
import { digestSchema } from "../digests.js";
|
|
3
3
|
import { jsonValueSchema } from "../jsonValue.js";
|
|
4
|
-
import { isAbsoluteLocalPath } from "../localPath.js";
|
|
4
|
+
import { isAbsoluteLocalPath, localPathStringSchema } from "../localPath.js";
|
|
5
5
|
const bytes = z.number().int().min(0).max(Number.MAX_SAFE_INTEGER);
|
|
6
6
|
const range = z.strictObject({ offset: bytes, length: bytes.positive() });
|
|
7
7
|
const target = {
|
|
8
|
-
path:
|
|
9
|
-
.string()
|
|
10
|
-
.min(1)
|
|
8
|
+
path: localPathStringSchema
|
|
11
9
|
.refine(isAbsoluteLocalPath, {
|
|
12
10
|
message: "path must be an absolute local filesystem path (for example /tmp/firmware.bin or C:\\firmware\\firmware.bin)",
|
|
13
11
|
})
|
|
@@ -18,9 +16,10 @@ export const firmwareInputSchemas = {
|
|
|
18
16
|
inspect_firmware_regions: z.strictObject(target),
|
|
19
17
|
extract_firmware: z.strictObject({
|
|
20
18
|
...target,
|
|
21
|
-
output_directory:
|
|
22
|
-
.
|
|
23
|
-
|
|
19
|
+
output_directory: localPathStringSchema
|
|
20
|
+
.refine(isAbsoluteLocalPath, {
|
|
21
|
+
message: "output_directory must be an absolute local filesystem path",
|
|
22
|
+
})
|
|
24
23
|
.describe("Absolute, absent output directory; parent must exist"),
|
|
25
24
|
range: range
|
|
26
25
|
.optional()
|
|
@@ -4,15 +4,14 @@ import { functionMatch } from "./functionComparisonNormalization.js";
|
|
|
4
4
|
import { functionComparisonResultSchema, } from "./functionComparisonSchemas.js";
|
|
5
5
|
import { overallStatus, summarize } from "./functionComparisonResults.js";
|
|
6
6
|
import { compareDimensions } from "./functionComparisonDimensions.js";
|
|
7
|
-
export { functionComparisonInputSchema, functionComparisonResultSchema, } from "./functionComparisonSchemas.js";
|
|
8
7
|
/** Compare two complete function Evidence records without fuzzy matching. */
|
|
9
8
|
export const compareFunctions = (leftInput, rightInput) => {
|
|
10
9
|
const left = parseFunctionEvidence(leftInput);
|
|
11
10
|
const right = parseFunctionEvidence(rightInput);
|
|
12
|
-
const links = [left.evidence
|
|
13
|
-
const providersDiffer = canonicalJson(left.provider, "Function comparison") !==
|
|
14
|
-
canonicalJson(right.provider, "Function comparison");
|
|
15
|
-
const dimensions = compareDimensions(left, right, links, providersDiffer);
|
|
11
|
+
const links = [left.evidence.evidence_id, right.evidence.evidence_id];
|
|
12
|
+
const providersDiffer = canonicalJson(left.evidence.provider, "Function comparison") !==
|
|
13
|
+
canonicalJson(right.evidence.provider, "Function comparison");
|
|
14
|
+
const dimensions = compareDimensions(left, right, { links, providersDiffer });
|
|
16
15
|
const match = functionMatch(left, right);
|
|
17
16
|
const changes = dimensions.filter(({ status }) => status !== "unchanged");
|
|
18
17
|
return functionComparisonResultSchema.parse({
|