rea-agents 6.1.0 → 6.3.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 +24 -24
- package/bridge/ghidra/ReaGhidraBridge.java +32 -4
- package/bridge/hopper_bridge.py +8 -1
- package/dist/android/JadxConfiguration.js +87 -7
- package/dist/android/JadxMcpTransport.js +14 -2
- package/dist/android/JadxProvider.js +64 -36
- package/dist/android/JadxSession.js +51 -9
- package/dist/application/BinaryTargetResolver.js +68 -20
- package/dist/application/BrowserEvidence.js +3 -8
- package/dist/application/BrowserScenarioEvidence.js +4 -20
- package/dist/application/CapabilityInventory.js +43 -9
- package/dist/application/ClientConfigurationDocument.js +97 -25
- package/dist/application/ClientRegistrationStatus.js +19 -6
- package/dist/application/DirectAnalysis.js +41 -20
- package/dist/application/DirectAnalysisCleanup.js +71 -0
- package/dist/application/DirectAnalysisStatus.js +3 -7
- package/dist/application/Doctor.js +40 -53
- package/dist/application/DoctorDiagnostics.js +2 -3
- package/dist/application/EnhancedTools.js +51 -6
- package/dist/application/EvidenceBundleFiles.js +8 -3
- package/dist/application/InvestigationProviders.js +13 -5
- package/dist/application/JsonFiles.js +56 -23
- package/dist/application/LinuxHopper.js +11 -7
- package/dist/application/MacHopper.js +15 -18
- package/dist/application/RealHopperAssertions.js +0 -11
- package/dist/application/ReconstructionObligationCandidates.js +10 -3
- package/dist/application/ReconstructionObligationLedgerProjection.js +3 -1
- package/dist/application/ReferenceSourceImportEntries.js +1 -1
- package/dist/application/RegularFileRead.js +17 -0
- package/dist/application/Setup.js +26 -23
- package/dist/application/SetupClientConfiguration.js +18 -7
- package/dist/application/SetupHost.js +20 -29
- package/dist/application/SetupPlan.js +24 -20
- package/dist/application/SetupSkill.js +57 -8
- package/dist/application/SupportedClients.js +43 -0
- package/dist/application/Uninstall.js +98 -30
- package/dist/application/UpdateMaintenance.js +13 -7
- package/dist/application/UpdateRuntime.js +12 -12
- package/dist/application/Utf8JsonInput.js +64 -0
- package/dist/application/WebScriptExportService.js +38 -5
- package/dist/application/WorkflowEvidence.js +25 -2
- package/dist/application/XrefsAddressResolution.js +45 -0
- package/dist/application/analysisView/AnalysisViewService.js +76 -0
- package/dist/application/android/AndroidAnalysisService.js +1 -1
- package/dist/application/binary/AnalysisClientCleanup.js +30 -5
- package/dist/application/binary/AnalysisProviderEvaluation.js +1 -2
- package/dist/application/binary/AnalysisProviderRegistry.js +2 -6
- package/dist/application/binary/AnalysisSnapshotCache.js +13 -10
- package/dist/application/binary/BinarySession.js +86 -29
- package/dist/application/binary/BinarySessionComposition.js +1 -3
- package/dist/application/binary/BinarySessionExecution.js +3 -5
- package/dist/application/binary/BinarySessionOpen.js +10 -2
- package/dist/application/binary/BinarySessionRecords.js +1 -1
- package/dist/application/binary/BinarySessionStatus.js +1 -6
- package/dist/application/binary/CompositeProvider.js +4 -18
- package/dist/application/binary/LazyAnalysisProvider.js +5 -5
- package/dist/application/binary/SessionProviderRouter.js +27 -135
- package/dist/application/homebrew.js +48 -0
- package/dist/application/javascript/ElectronActiveEvidence.js +10 -14
- package/dist/application/javascript/ElectronBoundaryAnalysis.js +2 -2
- package/dist/application/javascript/ElectronBoundaryGraphNative.js +5 -1
- package/dist/application/javascript/JavaScriptApplicationEvidence.js +3 -6
- package/dist/application/javascript/JavaScriptApplicationEvidenceGraph.js +107 -46
- package/dist/application/javascript/JavaScriptApplicationService.js +7 -1
- package/dist/application/javascript/JavaScriptApplicationWorkflowService.js +59 -45
- package/dist/application/javascript/JavaScriptArtifactAnalysis.js +5 -9
- package/dist/application/javascript/JavaScriptArtifactGraphBuilder.js +19 -27
- 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 +46 -29
- package/dist/application/javascript/JavaScriptArtifactGraphStructure.js +0 -1
- package/dist/application/javascript/JavaScriptArtifactPathResolution.js +86 -27
- package/dist/application/javascript/JavaScriptArtifactReconstruction.js +52 -9
- package/dist/application/javascript/JavaScriptArtifactReconstructionInput.js +1 -0
- package/dist/application/javascript/JavaScriptJsonModules.js +2 -2
- package/dist/application/javascript/JavaScriptModuleRelationships.js +6 -18
- package/dist/application/javascript/JavaScriptRuntimeObservationService.js +3 -3
- package/dist/application/javascript/JavaScriptRuntimeReconciliationService.js +11 -27
- package/dist/application/javascript/JavaScriptSemanticGraphAsyncProjection.js +4 -5
- package/dist/application/javascript/JavaScriptSemanticGraphBuilder.js +8 -6
- package/dist/application/javascript/JavaScriptSemanticGraphChildProcessProjection.js +2 -3
- package/dist/application/javascript/JavaScriptSemanticGraphConstruction.js +7 -5
- package/dist/application/javascript/JavaScriptSemanticGraphDataProjection.js +3 -4
- package/dist/application/javascript/JavaScriptSemanticGraphEvidence.js +1 -1
- package/dist/application/javascript/JavaScriptSemanticGraphFingerprintProjection.js +2 -2
- package/dist/application/javascript/JavaScriptSemanticGraphFlowProjection.js +3 -7
- package/dist/application/javascript/JavaScriptSemanticGraphObjectProjection.js +76 -47
- package/dist/application/javascript/JavaScriptSemanticGraphProjection.js +4 -4
- package/dist/application/javascript/JavaScriptSemanticGraphResourceProjection.js +3 -4
- package/dist/application/javascript/JavaScriptSemanticGraphValueProjection.js +51 -25
- package/dist/application/javascript/JavaScriptSemanticTraceService.js +15 -10
- package/dist/application/managed/ManagedMemberComparisonService.js +2 -1
- package/dist/application/managed/ManagedNativeVerificationService.js +2 -1
- package/dist/application/native/NativeCallRoutes.js +2 -4
- package/dist/application/process/ProcessCli.js +11 -11
- package/dist/application/process/ProcessEvidence.js +0 -1
- package/dist/artifacts/ArtifactProvider.js +53 -30
- package/dist/artifacts/ArtifactProviderMetadata.js +1 -4
- package/dist/artifacts/ArtifactReader.js +31 -0
- package/dist/artifacts/AsarArtifactReader.js +81 -17
- package/dist/artifacts/DirectoryArtifactReader.js +2 -1
- package/dist/artifacts/MachOSliceArtifactReader.js +9 -2
- package/dist/artifacts/NativeDmgArtifactReader.js +207 -77
- package/dist/artifacts/NativeDmgOwnership.js +109 -0
- package/dist/artifacts/SafeOutputTree.js +16 -2
- package/dist/artifacts/ZipArtifactReader.js +11 -4
- package/dist/artifacts/apple/AppleAssetCatalogAnalysis.js +4 -2
- package/dist/artifacts/apple/DylibResolutionReader.js +17 -7
- package/dist/artifacts/apple/KeyedArchiveReader.js +68 -42
- package/dist/artifacts/apple/MachoLoadCommandReader.js +36 -6
- package/dist/artifacts/extraction/ArtifactExtraction.js +104 -29
- package/dist/artifacts/inventory/ArtifactGraphConstruction.js +71 -66
- package/dist/artifacts/inventory/ArtifactInventory.js +0 -1
- package/dist/artifacts/inventory/classify.js +33 -14
- package/dist/artifacts/inventory/hashStableRootArtifact.js +37 -0
- package/dist/artifacts/inventory/reader.js +3 -3
- package/dist/artifacts/inventory/scanCanonical.js +64 -34
- package/dist/artifacts/inventory/scanReader.js +12 -20
- package/dist/artifacts/javascript/JavaScriptArtifactFiles.js +65 -27
- package/dist/browser/BrowserScenarioPartialObservation.js +106 -0
- package/dist/browser/CdpBrowserProvider.js +6 -6
- package/dist/browser/CdpCaptureEventHandlers.js +2 -4
- package/dist/browser/CdpCaptureEvents.js +0 -1
- package/dist/browser/CdpCaptureStorageFingerprints.js +3 -3
- package/dist/browser/CdpCaptureValues.js +20 -0
- package/dist/browser/CdpElectronInspection.js +2 -2
- package/dist/browser/CdpElectronProvider.js +4 -5
- package/dist/browser/CdpElectronScriptEvents.js +2 -8
- package/dist/browser/CdpElectronScripts.js +4 -5
- package/dist/browser/CdpPageCaptureScripts.js +2 -3
- package/dist/browser/CdpSafeMetadata.js +10 -10
- package/dist/browser/CdpWebMcpDiscovery.js +16 -13
- package/dist/browser/PlaywrightBrowserScenarioProvider.js +64 -49
- package/dist/browser/PlaywrightElectronActiveActions.js +2 -56
- package/dist/browser/PlaywrightElectronActiveProvider.js +10 -6
- package/dist/browser/PlaywrightScenarioArtifacts.js +1 -1
- package/dist/browser/PlaywrightScenarioBrowser.js +269 -66
- package/dist/browser/PlaywrightScenarioEvents.js +1 -1
- package/dist/browser/PlaywrightScenarioSession.js +41 -32
- package/dist/browser/WebSourceMapFetcher.js +32 -6
- package/dist/browser/assets/ScenarioScriptCapture.js +8 -12
- package/dist/browser/assets/ScriptCaptureAdapters.js +1 -1
- package/dist/browser/history/CaptureFailures.js +6 -2
- package/dist/browser/history/MitmproxyCaptureAdapter.js +4 -2
- package/dist/catalogIdentity.js +0 -1
- package/dist/cli/analysisViewCommands.js +36 -0
- package/dist/cli/artifactCommands.js +11 -12
- package/dist/cli/coreAnalysisCommands.js +3 -3
- package/dist/cli/coreBinaryCommands.js +37 -28
- package/dist/cli/coreNativeCommands.js +9 -10
- package/dist/cli/electronCommands.js +12 -13
- package/dist/cli/interactiveSetup.js +6 -6
- package/dist/cli/javascriptApplicationAnalysis.js +2 -12
- package/dist/cli/jsonOutput.js +3 -2
- package/dist/cli/managedCommands.js +7 -8
- package/dist/cli/nativeCallCommands.js +1 -2
- package/dist/cli/omittableDefaults.js +50 -0
- package/dist/cli/processCommands.js +3 -2
- package/dist/cli/setupCommands.js +16 -15
- package/dist/cli/streamedJsonOutput.js +83 -4
- package/dist/cli/utilityCommands.js +10 -12
- package/dist/cli.js +19 -8
- package/dist/cliBrowserScenarioCommands.js +2 -2
- package/dist/cliCommandNames.js +1 -0
- package/dist/cliJsonFile.js +179 -0
- package/dist/cliJsonInput.js +60 -33
- package/dist/cliObservationOptions.js +4 -0
- package/dist/cliOutput.js +0 -38
- package/dist/composition/auxiliaryAnalysisProviders.js +30 -25
- package/dist/composition/binary.js +9 -9
- package/dist/composition/browserScenario.js +2 -1
- package/dist/composition/directAnalysis.js +20 -14
- package/dist/composition/electronScenario.js +1 -1
- package/dist/composition/optionalObservationProviders.js +12 -7
- package/dist/config/environment.js +6 -0
- package/dist/config/ghidraStartupTimeout.js +4 -9
- package/dist/config/homeDirectory.js +12 -0
- package/dist/config/mcpResponseBudget.js +9 -1
- package/dist/config/parseConfig.js +7 -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 +7 -7
- 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 +2 -2
- package/dist/contracts/enhancedToolContracts.js +4 -3
- package/dist/contracts/errorSchemas.js +3 -1
- package/dist/contracts/evm/evmToolContracts.js +1 -1
- package/dist/contracts/functionComparisonExample.js +8 -0
- package/dist/contracts/functionWorkflowToolContracts.js +1 -1
- package/dist/contracts/inputSchemaPresentation.js +181 -0
- package/dist/contracts/investigationExamples.js +4 -3
- package/dist/contracts/javascript/electronToolContracts.js +3 -2
- package/dist/contracts/javascript/javascriptApplicationWorkflowExamples.js +3 -22
- package/dist/contracts/javascript/javascriptExportShapeComparisonExample.js +248 -0
- package/dist/contracts/javascript/javascriptRuntimeObservationToolContracts.js +1 -1
- package/dist/contracts/javascript/javascriptRuntimeReconciliationExample.js +8 -7
- package/dist/contracts/managed/managedToolContracts.js +8 -12
- package/dist/contracts/managed/managedWorkflowToolContracts.js +1 -1
- package/dist/contracts/mobileApplicationGraphExamples.js +8 -8
- package/dist/contracts/native/binaryDiagnosticsToolContracts.js +1 -1
- package/dist/contracts/native/nativeToolContracts.js +2 -2
- package/dist/contracts/officialToolContracts.js +2 -1
- package/dist/contracts/promptContracts.js +2 -2
- package/dist/contracts/providerSelection.js +1 -1
- package/dist/contracts/sessionLifecycleInputs.js +4 -3
- package/dist/contracts/sessionStatusContract.js +3 -2
- package/dist/contracts/sessionToolContracts.js +17 -4
- package/dist/contracts/sessionToolSchemas.js +4 -16
- package/dist/contracts/toolContracts.js +2 -0
- package/dist/contracts/toolEffects.js +1 -0
- package/dist/contracts/toolOutputSchemaGroups.js +138 -94
- package/dist/contracts/toolOutputSchemaPrimitives.js +13 -26
- package/dist/contracts/toolSchemaMetadata.js +18 -69
- package/dist/contracts/webNetworkCaptureToolContracts.js +1 -1
- 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 +5 -0
- package/dist/domain/analysisErrorCore.js +3 -0
- package/dist/domain/analysisErrorPresentation.js +22 -5
- package/dist/domain/analysisErrorProjection.js +24 -5
- package/dist/domain/analysisSnapshot.js +31 -31
- package/dist/domain/analysisView/analysisView.js +241 -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/androidApplication.js +1 -1
- package/dist/domain/android/androidPartialObservation.js +36 -0
- package/dist/domain/apple/appleApplication.js +1 -1
- package/dist/domain/apple/dylibResolution.js +10 -3
- package/dist/domain/apple/interfaceBuilderGraph.js +0 -1
- package/dist/domain/apple/keyedArchive.js +26 -2
- package/dist/domain/artifactComparison.js +15 -6
- package/dist/domain/artifactGraph.js +17 -4
- package/dist/domain/artifactIdentity.js +8 -8
- package/dist/domain/artifactInspection.js +8 -8
- package/dist/domain/artifactInventoryEvidence.js +9 -16
- 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/browserCaptureComparison.js +13 -49
- package/dist/domain/browserCompleteness.js +3 -2
- package/dist/domain/browserNetworkEvidence.js +10 -4
- package/dist/domain/browserObservation.js +0 -1
- package/dist/domain/browserObservationSchemas.js +14 -3
- package/dist/domain/browserScenario.js +0 -1
- package/dist/domain/browserScenarioCapture.js +1 -2
- package/dist/domain/browserScenarioCaptureValues.js +2 -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/browserScenarioNormalization.js +3 -3
- package/dist/domain/browserScenarioValues.js +6 -6
- package/dist/domain/callPath.js +15 -18
- package/dist/domain/callPathSchemas.js +2 -2
- package/dist/domain/canonicalDigest.js +7 -1
- package/dist/domain/canonicalOrdering.js +1 -13
- package/dist/domain/changedBehavior.js +5 -6
- package/dist/domain/comparisonSemantics.js +0 -5
- package/dist/domain/completionLedgerGeneration.js +2 -1
- package/dist/domain/configurationErrors.js +12 -0
- package/dist/domain/conformancePackage.js +4 -3
- package/dist/domain/digests.js +0 -3
- package/dist/domain/evidence.js +19 -40
- package/dist/domain/evidenceBundle.js +58 -42
- package/dist/domain/evidenceCompletionLedger.js +2 -1
- package/dist/domain/firmware/firmwareAnalysis.js +4 -3
- package/dist/domain/functionComparison.js +6 -6
- package/dist/domain/functionComparisonDimensions.js +120 -87
- package/dist/domain/functionComparisonNormalization.js +26 -36
- package/dist/domain/functionComparisonResults.js +3 -6
- package/dist/domain/functionComparisonSchemas.js +2 -8
- package/dist/domain/functionDossierEvidence.js +4 -38
- package/dist/domain/hopperValues.js +11 -15
- package/dist/domain/javascript/electronActiveObservation.js +29 -71
- package/dist/domain/javascript/electronObservation.js +14 -3
- package/dist/domain/javascript/electronStaticAnalysisBrowser.js +12 -11
- package/dist/domain/javascript/electronStaticAnalysisIpc.js +11 -2
- package/dist/domain/javascript/electronStaticAnalysisNative.js +7 -4
- package/dist/domain/javascript/electronStaticAnalysisValues.js +8 -4
- package/dist/domain/javascript/javascriptApplicationAnalysis.js +3 -1
- package/dist/domain/javascript/javascriptApplicationChangeGraph.js +12 -8
- package/dist/domain/javascript/javascriptApplicationEvidenceSchemas.js +6 -0
- package/dist/domain/javascript/javascriptApplicationGraph.js +41 -16
- package/dist/domain/javascript/javascriptApplicationGraphSchemas.js +9 -2
- package/dist/domain/javascript/javascriptApplicationVersionComparison.js +4 -4
- package/dist/domain/javascript/javascriptApplicationVersionComparisonSchemas.js +37 -22
- package/dist/domain/javascript/javascriptApplicationVersionItems.js +50 -36
- package/dist/domain/javascript/javascriptApplicationVersionKeys.js +9 -8
- package/dist/domain/javascript/javascriptAstFingerprint.js +2 -2
- package/dist/domain/javascript/javascriptAstValues.js +22 -0
- package/dist/{application/javascript/JavaScriptReturnShapeProjection.js → domain/javascript/javascriptExportReturnShapeProjection.js} +4 -4
- package/dist/domain/javascript/javascriptExportShapeComparison.js +10 -3
- package/dist/domain/javascript/javascriptExportShapeComparisonIdentity.js +6 -1
- package/dist/domain/javascript/javascriptExportShapeComparisonSchemas.js +58 -22
- package/dist/domain/javascript/javascriptExportShapeSelection.js +7 -7
- package/dist/domain/javascript/javascriptExportShapeVariants.js +70 -16
- package/dist/domain/javascript/javascriptFeatureSeed.js +25 -3
- package/dist/domain/javascript/javascriptFeatureTrace.js +7 -6
- package/dist/domain/javascript/javascriptFeatureTraceSchemas.js +17 -9
- package/dist/domain/javascript/javascriptFeatureTraversal.js +4 -5
- package/dist/domain/javascript/javascriptNativeHandoff.js +7 -7
- package/dist/domain/javascript/javascriptRuntimeLoadState.js +0 -1
- package/dist/domain/javascript/javascriptRuntimeObservation.js +18 -7
- package/dist/domain/javascript/javascriptRuntimeReconciliation.js +12 -6
- package/dist/domain/javascript/javascriptRuntimeReconciliationActive.js +9 -8
- package/dist/domain/javascript/javascriptRuntimeReconciliationCaptureParsing.js +212 -0
- package/dist/domain/javascript/javascriptRuntimeReconciliationGraph.js +5 -4
- package/dist/domain/javascript/javascriptRuntimeReconciliationInputValidation.js +28 -0
- package/dist/domain/javascript/javascriptRuntimeReconciliationMatching.js +6 -6
- package/dist/domain/javascript/javascriptRuntimeReconciliationParsing.js +12 -222
- package/dist/domain/javascript/javascriptRuntimeReconciliationResult.js +2 -2
- package/dist/domain/javascript/javascriptRuntimeReconciliationRuntime.js +15 -4
- package/dist/domain/javascript/javascriptRuntimeReconciliationSchemas.js +2 -2
- package/dist/domain/javascript/javascriptRuntimeStaticCandidates.js +7 -7
- package/dist/domain/javascript/javascriptSemanticAnalysis.js +209 -11
- package/dist/domain/javascript/javascriptSemanticAsyncEffects.js +2 -1
- package/dist/domain/javascript/javascriptSemanticCallResolution.js +9 -7
- package/dist/domain/javascript/javascriptSemanticCalls.js +2 -1
- package/dist/domain/javascript/javascriptSemanticChildProcesses.js +4 -3
- package/dist/domain/javascript/javascriptSemanticCoverage.js +20 -0
- package/dist/domain/javascript/javascriptSemanticDataEffectHelpers.js +7 -9
- package/dist/domain/javascript/javascriptSemanticDataEffects.js +4 -11
- package/dist/domain/javascript/javascriptSemanticFingerprints.js +2 -2
- package/dist/domain/javascript/javascriptSemanticGraph.js +220 -71
- package/dist/domain/javascript/javascriptSemanticGraphSchemas.js +19 -1
- package/dist/domain/javascript/javascriptSemanticIr.js +0 -4
- package/dist/domain/javascript/javascriptSemanticIterationSources.js +106 -0
- package/dist/domain/javascript/javascriptSemanticMemberMutations.js +515 -74
- package/dist/domain/javascript/javascriptSemanticMutationInitializers.js +190 -0
- package/dist/domain/javascript/javascriptSemanticMutationValues.js +44 -36
- package/dist/domain/javascript/javascriptSemanticObjects.js +79 -42
- package/dist/domain/javascript/javascriptSemanticPrimitives.js +8 -14
- package/dist/domain/javascript/javascriptSemanticProjection.js +21 -16
- package/dist/domain/javascript/javascriptSemanticPromises.js +16 -21
- package/dist/domain/javascript/javascriptSemanticPropertyPaths.js +23 -0
- package/dist/domain/javascript/javascriptSemanticProvenance.js +3 -3
- package/dist/domain/javascript/javascriptSemanticQuery.js +8 -2
- package/dist/domain/javascript/javascriptSemanticQueryIdentity.js +3 -2
- package/dist/domain/javascript/javascriptSemanticQuerySchemas.js +8 -9
- package/dist/domain/javascript/javascriptSemanticRequireOrigin.js +16 -10
- package/dist/domain/javascript/javascriptSemanticResourceLimits.js +1 -1
- package/dist/domain/javascript/javascriptSemanticResources.js +1 -1
- package/dist/domain/javascript/javascriptSemanticReturns.js +55 -44
- package/dist/domain/javascript/javascriptSemanticSlots.js +72 -0
- package/dist/domain/javascript/javascriptSemanticTraversal.js +6 -1
- package/dist/domain/javascript/javascriptSemanticValues.js +180 -76
- package/dist/domain/javascript/javascriptSourceMapPaths.js +114 -0
- package/dist/domain/javascript/javascriptSourceParser.js +34 -9
- package/dist/domain/javascript/javascriptStaticAnalysisBundler.js +5 -6
- package/dist/domain/javascript/javascriptStaticAnalysisCalls.js +2 -1
- package/dist/domain/javascript/javascriptStaticAnalysisHelpers.js +26 -16
- package/dist/domain/javascript/sourceToBundleComparison.js +19 -8
- package/dist/domain/javascript/sourceToBundleSignals.js +53 -25
- package/dist/domain/jsonSerialization.js +109 -55
- package/dist/domain/jsonShape.js +46 -19
- package/dist/domain/localPath.js +10 -4
- package/dist/domain/managed/managedApplicationGraph.js +10 -6
- package/dist/domain/managed/managedApplicationGraphNodes.js +82 -57
- package/dist/domain/managed/managedArtifact.js +6 -4
- package/dist/domain/managed/managedMemberComparison.js +2 -9
- package/dist/domain/managed/managedMemberComparisonMatch.js +6 -7
- package/dist/domain/managed/managedNativeVerification.js +0 -2
- package/dist/domain/managed/managedNativeVerificationMatch.js +9 -3
- package/dist/domain/native/binaryLayout.js +2 -3
- package/dist/domain/native/nativeApiBoundary.js +1 -1
- package/dist/domain/native/nativeCallObservation.js +3 -3
- package/dist/domain/native/nativeInstruction.js +7 -0
- package/dist/domain/native/nativeValueFlow.js +5 -11
- package/dist/domain/native/objcSwiftMetadata.js +15 -17
- package/dist/domain/native/recordedCrash.js +2 -3
- package/dist/domain/offsetDateTime.js +17 -0
- package/dist/domain/process/processCapture.js +22 -20
- package/dist/domain/process/processCaptureCoverage.js +70 -0
- package/dist/domain/process/processCaptureExample.js +45 -1
- package/dist/domain/process/processCaptureParsing.js +1 -34
- package/dist/domain/process/processCaptureValidation.js +82 -13
- package/dist/domain/process/processComparison.js +39 -43
- package/dist/domain/process/processObservation.js +10 -2
- package/dist/domain/process/processScenario.js +24 -2
- package/dist/domain/process/processTraceComparison.js +0 -2
- package/dist/domain/process/processTraceDimensionProjection.js +1 -1
- package/dist/domain/process/processTraceEvaluation.js +19 -15
- package/dist/domain/process/processTraceSpecification.js +4 -7
- package/dist/domain/providerAdapterError.js +2 -0
- package/dist/domain/providerCleanupError.js +6 -2
- package/dist/domain/reconstructionCoverage.js +7 -3
- package/dist/domain/reconstructionObligationLedgerSchemas.js +2 -1
- package/dist/domain/reconstructionReadinessSchemas.js +2 -1
- package/dist/domain/reconstructionUnknowns.js +4 -3
- package/dist/domain/reconstructionVerification.js +6 -5
- package/dist/domain/reconstructionVerificationSchemas.js +2 -1
- package/dist/domain/referenceSourceGraph.js +27 -28
- package/dist/domain/referenceSourceImportParsing.js +34 -45
- package/dist/domain/residualUnknown.js +3 -2
- package/dist/domain/staticRuntimeCorrelation.js +4 -3
- package/dist/domain/stringPatterns.js +6 -0
- package/dist/domain/swiftSymbolClassification.js +66 -0
- package/dist/domain/symbolAnalysis.js +83 -20
- package/dist/domain/unicodeCodePointOrder.js +6 -0
- package/dist/domain/webBundleAnalyzerInspection.js +9 -1
- package/dist/domain/webCaptureDiff.js +71 -30
- package/dist/domain/webCaptureDiffSchemas.js +8 -11
- package/dist/domain/webEventListeners.js +3 -2
- package/dist/domain/webExecution.js +3 -2
- package/dist/domain/webInventory.js +3 -2
- package/dist/domain/webMcpDiscovery.js +4 -3
- package/dist/domain/webRuntime.js +0 -2
- package/dist/domain/webScriptExport.js +2 -2
- package/dist/dotnet/ManagedArtifactInspector.js +2 -19
- package/dist/dotnet/ManagedMemberInspector.js +12 -18
- package/dist/dotnet/ManagedMemberInspectorCore.js +47 -44
- package/dist/dotnet/ManagedMemberInstructionDecoder.js +1 -2
- 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 +13 -12
- package/dist/dotnet/ManagedStaticProviderMetadata.js +1 -4
- 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/filesystem/RegularFile.js +41 -0
- package/dist/firmware/FirmwareCommand.js +9 -5
- package/dist/firmware/FirmwareProvider.js +4 -4
- package/dist/generatedPackageMetadata.js +2 -2
- package/dist/ghidra/GhidraAnalysisProfile.js +3 -6
- package/dist/ghidra/GhidraClient.js +105 -36
- package/dist/ghidra/GhidraClientStartup.js +0 -2
- package/dist/ghidra/GhidraDoctor.js +6 -5
- package/dist/ghidra/GhidraFunctionValues.js +3 -5
- package/dist/ghidra/GhidraInstallation.js +151 -22
- package/dist/ghidra/GhidraJavaLaunch.js +6 -2
- package/dist/ghidra/GhidraLauncher.js +58 -26
- package/dist/ghidra/GhidraProvider.js +6 -2
- package/dist/ghidra/GhidraProviderCapabilities.js +6 -0
- package/dist/ghidra/GhidraProviderClient.js +13 -3
- package/dist/ghidra/GhidraSessionError.js +2 -0
- package/dist/ghidra/GhidraSessionRoot.js +39 -0
- package/dist/ghidra/extensions/GhidraExtensions.js +17 -10
- package/dist/ghidra/extensions/nativeaot/NativeAotAdapter.js +8 -2
- package/dist/hopper/BridgeLauncher.js +34 -45
- package/dist/hopper/HopperAnalysisProfile.js +3 -8
- package/dist/hopper/HopperCleanup.js +56 -27
- package/dist/hopper/HopperClient.js +86 -65
- package/dist/hopper/HopperMachOImage.js +3 -2
- package/dist/hopper/HopperProvider.js +16 -18
- package/dist/hopper/HopperRegexSearch.js +3 -6
- package/dist/hopper/HopperTargetLease.js +132 -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 +5 -3
- package/dist/ida/IdaProvider.js +8 -12
- package/dist/ida/IdaSessionClient.js +24 -20
- package/dist/ida/IdaWorkspace.js +12 -13
- package/dist/inspector/JavaScriptRuntimeScope.js +9 -5
- package/dist/inspector/V8InspectorCaptureProjection.js +47 -14
- package/dist/inspector/V8InspectorProvider.js +97 -35
- package/dist/javascript/recovery/WakaruCommand.js +7 -2
- package/dist/javascript/recovery/WakaruExecution.js +5 -2
- package/dist/main/shutdown.js +81 -29
- package/dist/main/startup.js +9 -2
- package/dist/main/transport.js +23 -3
- package/dist/main.js +11 -18
- package/dist/native/AppleMachoSelection.js +16 -6
- package/dist/native/AppleObjcDispatchFacets.js +3 -3
- package/dist/native/AppleObjcProperties.js +17 -7
- package/dist/native/CommandRunner.js +9 -7
- package/dist/native/LldbCallTracer.js +249 -77
- package/dist/native/NativeMacOSProvider.js +32 -17
- package/dist/native/NativeMacOSProviderMetadata.js +1 -2
- package/dist/native/NativeUiHelperRuntime.js +11 -2
- package/dist/native/NativeUiObservation.js +2 -2
- package/dist/native/pwntools/PwntoolsDecoder.js +2 -1
- package/dist/process/DarwinProcessRunTokenReader.js +16 -2
- package/dist/process/ExecFileOutput.js +88 -6
- package/dist/process/PrivateRuntimeRoot.js +10 -5
- package/dist/process/ProcessOwnership.js +1 -4
- package/dist/process/ProcessOwnershipObservation.js +18 -16
- package/dist/process/ProviderProcess.js +1 -3
- package/dist/process/capture/FilesystemSnapshot.js +131 -24
- package/dist/process/capture/ProcessCaptureError.js +13 -0
- package/dist/process/capture/ProcessCaptureLifecycle.js +148 -74
- package/dist/process/capture/ProcessFilesystemEffects.js +51 -6
- package/dist/process/capture/ProcessHarness.js +16 -33
- 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 +25 -14
- package/dist/server/analysisAdmission.js +8 -0
- package/dist/server/createServer.js +71 -59
- 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 -3
- package/dist/server/registerApplicationTools/compareExportShapes.js +6 -6
- 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 +4 -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 +4 -5
- package/dist/server/registerArtifactTools.js +2 -2
- package/dist/server/registerBinaryDiagnosticsTools.js +2 -3
- package/dist/server/registerBrowserScenarioTool.js +3 -4
- package/dist/server/registerBrowserTools.js +13 -16
- package/dist/server/registerBundleComparisonTool.js +5 -6
- package/dist/server/registerCloseLifecycleTool.js +8 -7
- package/dist/server/registerElectronTools.js +10 -13
- package/dist/server/registerEnhancedTools.js +82 -77
- package/dist/server/registerEvidenceTools.js +54 -47
- package/dist/server/registerEvmTools.js +2 -3
- package/dist/server/registerFirmwareTools.js +2 -3
- package/dist/server/registerFunctionComparisonTool.js +7 -8
- package/dist/server/registerInvestigationTools.js +14 -15
- package/dist/server/registerJavaScriptRecoveryTool.js +2 -3
- package/dist/server/registerJavaScriptRuntimeObservationTools.js +6 -6
- package/dist/server/registerManagedTools.js +7 -4
- package/dist/server/registerManagedWorkflowTools/compareManagedMembers.js +5 -6
- package/dist/server/registerManagedWorkflowTools/importManagedReconstruction.js +4 -5
- package/dist/server/registerManagedWorkflowTools/projectManagedApplicationGraph.js +6 -7
- package/dist/server/registerManagedWorkflowTools/verifyManagedNativeBoundaries.js +6 -7
- package/dist/server/registerOfficialTools.js +32 -41
- package/dist/server/registerProcessComparisonTool.js +8 -8
- package/dist/server/registerRecordedCrashTools.js +2 -3
- package/dist/server/registerSessionRecordTools.js +15 -19
- package/dist/server/registerSessionStatusTool.js +3 -4
- package/dist/server/registerSessionTools.js +19 -19
- package/dist/server/registerWebModuleTool.js +2 -3
- package/dist/server/registerWebNetworkCaptureTool.js +2 -3
- package/dist/server/registerWebRuntimeTools.js +4 -5
- package/dist/server/registerWebScriptTool.js +2 -3
- package/dist/server/registerWebSourceLocationTool.js +2 -3
- package/dist/server/toolResult.js +66 -94
- package/dist/server/toolResultEncoding.js +11 -10
- package/dist/windows/WindowsNativeLoader.js +1 -0
- package/dist/windows/WindowsOwnedProcess.js +60 -15
- package/dist/windows/WindowsPrivateRuntime.js +7 -8
- 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 +42 -30
- package/scripts/rea.mjs +3 -6
- package/skills/reverse-engineer-anything/SKILL.md +14 -13
- 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 +16 -6
- package/skills/reverse-engineer-anything/references/native-and-artifacts.md +18 -0
- package/dist/artifacts/inventory/policy.js +0 -2
- 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/domain/managed/managedApplicationGraphNodeCoverage.js +0 -6
- package/dist/main/reload.js +0 -12
- package/dist/main/state.js +0 -3
- package/dist/server/registerNativeTools.js +0 -6
- package/dist/server/sessionToolPolicies.js +0 -2
package/dist/cliJsonInput.js
CHANGED
|
@@ -1,29 +1,52 @@
|
|
|
1
|
-
import { readFile } from "node:fs/promises";
|
|
2
1
|
import { resolve } from "node:path";
|
|
3
|
-
import {
|
|
2
|
+
import { readCliJsonFile } from "./cliJsonFile.js";
|
|
3
|
+
import { NonRegularFileReadError } from "./filesystem/RegularFile.js";
|
|
4
|
+
import { AnalysisAccessDeniedError, AnalysisInputError, } from "./domain/analysisErrorCore.js";
|
|
4
5
|
import { projectAnalysisError } from "./domain/analysisErrorProjection.js";
|
|
5
6
|
import { safeParseJson } from "./domain/safeJson.js";
|
|
6
7
|
/** Parse inline JSON or one local JSON file for a CLI workflow. */
|
|
7
8
|
export const parseCliJsonInput = async (value, operation) => {
|
|
8
|
-
const inline =
|
|
9
|
-
if (inline
|
|
10
|
-
return { ok: true, value: inline };
|
|
9
|
+
const inline = safeParseJson(value);
|
|
10
|
+
if (inline.ok)
|
|
11
|
+
return { ok: true, value: inline.value };
|
|
11
12
|
try {
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
13
|
+
const parsed = await readCliJsonFile(value, operation);
|
|
14
|
+
return parsed.ok
|
|
15
|
+
? { ok: true, value: parsed.value }
|
|
16
|
+
: {
|
|
17
|
+
ok: false,
|
|
18
|
+
error: {
|
|
19
|
+
error: "Application workflow failed",
|
|
20
|
+
...projectAnalysisError(parsed.error),
|
|
21
|
+
input_path: value,
|
|
22
|
+
input_reason: parsed.error._tag === "AnalysisInputError"
|
|
23
|
+
? "invalid-json"
|
|
24
|
+
: "too-large",
|
|
25
|
+
},
|
|
26
|
+
};
|
|
18
27
|
}
|
|
19
28
|
catch (cause) {
|
|
29
|
+
const systemCode = accessDeniedSystemCode(cause);
|
|
30
|
+
if (systemCode !== undefined)
|
|
31
|
+
return jsonAccessDeniedError(value, operation, systemCode, cause);
|
|
20
32
|
if (["{", "["].includes(value.trimStart()[0] ?? "") &&
|
|
21
33
|
cannotBeAnExistingFile(cause) &&
|
|
22
34
|
!hasExplicitJsonFileExtension(value))
|
|
23
35
|
return { ok: false, error: inputError(operation) };
|
|
36
|
+
if (!(cause instanceof Error) ||
|
|
37
|
+
!("code" in cause) ||
|
|
38
|
+
typeof cause.code !== "string")
|
|
39
|
+
throw cause;
|
|
24
40
|
return jsonFileError(value, operation, "read-failed", cause);
|
|
25
41
|
}
|
|
26
42
|
};
|
|
43
|
+
const accessDeniedSystemCode = (cause) => {
|
|
44
|
+
if (!(cause instanceof Error) || !("code" in cause))
|
|
45
|
+
return undefined;
|
|
46
|
+
return cause.code === "EACCES" || cause.code === "EPERM"
|
|
47
|
+
? cause.code
|
|
48
|
+
: undefined;
|
|
49
|
+
};
|
|
27
50
|
/**
|
|
28
51
|
* Resolve named string fields of CLI-supplied JSON against the operator
|
|
29
52
|
* working directory. Each entry is a key path from the document root; only
|
|
@@ -62,27 +85,6 @@ const cannotBeAnExistingFile = (cause) => typeof cause === "object" &&
|
|
|
62
85
|
cause.code === "ENAMETOOLONG" ||
|
|
63
86
|
cause.code === "ENOTDIR");
|
|
64
87
|
const hasExplicitJsonFileExtension = (value) => value.toLowerCase().endsWith(".json");
|
|
65
|
-
const parseJson = (value) => {
|
|
66
|
-
let text;
|
|
67
|
-
if (typeof value === "string") {
|
|
68
|
-
text = value;
|
|
69
|
-
}
|
|
70
|
-
else {
|
|
71
|
-
try {
|
|
72
|
-
text = new TextDecoder("utf-8", {
|
|
73
|
-
fatal: true,
|
|
74
|
-
ignoreBOM: true,
|
|
75
|
-
}).decode(value);
|
|
76
|
-
}
|
|
77
|
-
catch (cause) {
|
|
78
|
-
// Decoding failure means the bytes are not valid UTF-8 JSON input.
|
|
79
|
-
void cause;
|
|
80
|
-
return undefined;
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
const parsed = safeParseJson(text);
|
|
84
|
-
return parsed.ok ? parsed.value : undefined;
|
|
85
|
-
};
|
|
86
88
|
const inputError = (operation) => ({
|
|
87
89
|
error: "Application workflow failed",
|
|
88
90
|
...projectAnalysisError(new AnalysisInputError(operation, undefined, [
|
|
@@ -95,8 +97,33 @@ const jsonFileError = (path, operation, reason, cause) => ({
|
|
|
95
97
|
error: "Application workflow failed",
|
|
96
98
|
...projectAnalysisError(new AnalysisInputError(operation, cause === undefined ? undefined : { cause }, reason === "invalid-json"
|
|
97
99
|
? [{ path: [], reason: "invalid_format", expected: "JSON" }]
|
|
98
|
-
: [])),
|
|
100
|
+
: [readFailureIssue(path, cause)])),
|
|
99
101
|
...(path === undefined ? {} : { input_path: path }),
|
|
100
102
|
input_reason: reason,
|
|
101
103
|
},
|
|
102
104
|
});
|
|
105
|
+
const jsonAccessDeniedError = (path, operation, systemCode, cause) => ({
|
|
106
|
+
ok: false,
|
|
107
|
+
error: {
|
|
108
|
+
error: "Application workflow failed",
|
|
109
|
+
...projectAnalysisError(new AnalysisAccessDeniedError(operation, path, systemCode, { cause })),
|
|
110
|
+
input_path: path,
|
|
111
|
+
input_reason: "read-failed",
|
|
112
|
+
},
|
|
113
|
+
});
|
|
114
|
+
/** Preserve file-selection and system failures alongside the requested path. */
|
|
115
|
+
const readFailureIssue = (path, cause) => {
|
|
116
|
+
const code = typeof cause === "object" &&
|
|
117
|
+
cause !== null &&
|
|
118
|
+
"code" in cause &&
|
|
119
|
+
typeof cause.code === "string"
|
|
120
|
+
? ` (${cause.code})`
|
|
121
|
+
: "";
|
|
122
|
+
return {
|
|
123
|
+
path: [],
|
|
124
|
+
reason: "invalid_value",
|
|
125
|
+
message: cause instanceof NonRegularFileReadError && cause.code === "ENOTFILE"
|
|
126
|
+
? `The JSON input must be a regular file${code}: ${path ?? ""}`
|
|
127
|
+
: `The JSON input file could not be read${code}: ${path ?? ""}`,
|
|
128
|
+
};
|
|
129
|
+
};
|
|
@@ -57,4 +57,8 @@ export const javascriptApplicationOptions = z.object({
|
|
|
57
57
|
.enum(["auto", "asar", "directory"])
|
|
58
58
|
.default("auto")
|
|
59
59
|
.describe("Application artifact format"),
|
|
60
|
+
integrityPolicy: z
|
|
61
|
+
.enum(["fail", "record-and-continue"])
|
|
62
|
+
.default("fail")
|
|
63
|
+
.describe("Behavior when declared application integrity does not match"),
|
|
60
64
|
});
|
package/dist/cliOutput.js
CHANGED
|
@@ -1,15 +1,5 @@
|
|
|
1
|
-
import { safeParseJson } from "./domain/safeJson.js";
|
|
2
|
-
const SAFE_VALIDATION_MESSAGE = "REA could not read the command arguments. Run `rea --help`, correct the arguments, then try again.";
|
|
3
1
|
const UNSUPPORTED_OUTPUT_COMBINATION_MESSAGE = "Token windows cannot preserve structured output. Remove --token-limit/--token-offset and use --filter-output or command pagination.";
|
|
4
2
|
const INCUR_OUTPUT_FORMATS = new Set(["toon", "json", "yaml", "md", "jsonl"]);
|
|
5
|
-
const isRecord = (value) => typeof value === "object" && value !== null && !Array.isArray(value);
|
|
6
|
-
const validationError = (value) => {
|
|
7
|
-
if (value.code === "VALIDATION_ERROR")
|
|
8
|
-
return value;
|
|
9
|
-
if (value.ok === false && isRecord(value.error))
|
|
10
|
-
return value.error.code === "VALIDATION_ERROR" ? value.error : undefined;
|
|
11
|
-
return undefined;
|
|
12
|
-
};
|
|
13
3
|
/** Read effective Incur output controls at the executable boundary. */
|
|
14
4
|
export const parseCliOutputArguments = (arguments_) => {
|
|
15
5
|
let format = "toon";
|
|
@@ -105,31 +95,3 @@ export const renderCliOutputArgumentError = (error) => {
|
|
|
105
95
|
return `ok: false\nerror:\n code: ${error.code}\n message: ${JSON.stringify(error.message)}\n`;
|
|
106
96
|
return `${JSON.stringify(value)}\n`;
|
|
107
97
|
};
|
|
108
|
-
/** Remove validator internals from Incur's caller-visible CLI output. */
|
|
109
|
-
export const sanitizeCliOutput = (output) => {
|
|
110
|
-
const trimmed = output.trimStart();
|
|
111
|
-
if (trimmed.startsWith("{")) {
|
|
112
|
-
const decoded = safeParseJson(trimmed);
|
|
113
|
-
if (!decoded.ok)
|
|
114
|
-
return output;
|
|
115
|
-
const parsed = decoded.value;
|
|
116
|
-
if (!isRecord(parsed))
|
|
117
|
-
return output;
|
|
118
|
-
const error = validationError(parsed);
|
|
119
|
-
if (error !== undefined) {
|
|
120
|
-
const safeError = {
|
|
121
|
-
code: "VALIDATION_ERROR",
|
|
122
|
-
message: SAFE_VALIDATION_MESSAGE,
|
|
123
|
-
};
|
|
124
|
-
if (error === parsed)
|
|
125
|
-
return `${JSON.stringify(safeError)}\n`;
|
|
126
|
-
return `${JSON.stringify({ ...parsed, error: safeError })}\n`;
|
|
127
|
-
}
|
|
128
|
-
return output;
|
|
129
|
-
}
|
|
130
|
-
if (/^ok: false\r?\nerror:\r?\n code: VALIDATION_ERROR(?:\r?\n|$)/u.test(trimmed))
|
|
131
|
-
return `ok: false\nerror:\n code: VALIDATION_ERROR\n message: "${SAFE_VALIDATION_MESSAGE}"\n`;
|
|
132
|
-
if (!/^code: VALIDATION_ERROR(?:\r?\n|$)/u.test(trimmed))
|
|
133
|
-
return output;
|
|
134
|
-
return `code: VALIDATION_ERROR\nmessage: "${SAFE_VALIDATION_MESSAGE}"\n`;
|
|
135
|
-
};
|
|
@@ -1,30 +1,35 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import { snapshotEnvironment } from "../process/snapshotEnvironment.js";
|
|
2
|
+
import { artifactCapabilities } from "../artifacts/ArtifactProviderMetadata.js";
|
|
3
|
+
import { ARTIFACT_GRAPH_PROVIDER, MANAGED_STATIC_PROVIDER, } from "../application/InvestigationProviders.js";
|
|
4
|
+
import { managedStaticCapabilities } from "../dotnet/ManagedStaticProviderMetadata.js";
|
|
3
5
|
import { NATIVE_MACOS_PROVIDER_IDENTITY, nativeMacOSCapabilities, } from "../native/NativeMacOSProviderMetadata.js";
|
|
4
6
|
/** Wire the three existing auxiliary AnalysisProvider implementations lazily. */
|
|
5
|
-
export const auxiliaryAnalysisProviderDeclarations = (platform = process.platform) =>
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
7
|
+
export const auxiliaryAnalysisProviderDeclarations = (selectedEnvironment, platform = process.platform) => {
|
|
8
|
+
const environment = snapshotEnvironment(selectedEnvironment, platform);
|
|
9
|
+
return [
|
|
10
|
+
{
|
|
11
|
+
identity: ARTIFACT_GRAPH_PROVIDER,
|
|
12
|
+
capabilities: artifactCapabilities(platform),
|
|
13
|
+
load: async () => {
|
|
14
|
+
const { ArtifactProvider } = await import("../artifacts/ArtifactProvider.js");
|
|
15
|
+
return new ArtifactProvider(environment, platform);
|
|
16
|
+
},
|
|
12
17
|
},
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
18
|
+
{
|
|
19
|
+
identity: NATIVE_MACOS_PROVIDER_IDENTITY,
|
|
20
|
+
capabilities: nativeMacOSCapabilities(platform),
|
|
21
|
+
load: async () => {
|
|
22
|
+
const { NativeMacOSProvider } = await import("../native/NativeMacOSProvider.js");
|
|
23
|
+
return new NativeMacOSProvider(environment, undefined, platform);
|
|
24
|
+
},
|
|
20
25
|
},
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
26
|
+
{
|
|
27
|
+
identity: MANAGED_STATIC_PROVIDER,
|
|
28
|
+
capabilities: managedStaticCapabilities(),
|
|
29
|
+
load: async () => {
|
|
30
|
+
const { ManagedStaticProvider } = await import("../dotnet/ManagedStaticProvider.js");
|
|
31
|
+
return new ManagedStaticProvider();
|
|
32
|
+
},
|
|
28
33
|
},
|
|
29
|
-
|
|
30
|
-
|
|
34
|
+
];
|
|
35
|
+
};
|
|
@@ -1,25 +1,25 @@
|
|
|
1
|
+
import { snapshotEnvironment } from "../process/snapshotEnvironment.js";
|
|
1
2
|
import { HopperProvider } from "../hopper/HopperProvider.js";
|
|
2
3
|
import { GhidraProvider } from "../ghidra/GhidraProvider.js";
|
|
3
4
|
import { IdaProvider } from "../ida/IdaProvider.js";
|
|
4
|
-
import { silentLogger } from "../logger.js";
|
|
5
5
|
import { auxiliaryAnalysisProviderDeclarations } from "./auxiliaryAnalysisProviders.js";
|
|
6
6
|
import { AnalysisProviderRegistry } from "../application/binary/AnalysisProviderRegistry.js";
|
|
7
7
|
import { composeBinarySession } from "../application/binary/BinarySessionComposition.js";
|
|
8
8
|
import { LazyAnalysisProvider } from "../application/binary/LazyAnalysisProvider.js";
|
|
9
9
|
import { ManagedStaticProvider } from "../dotnet/ManagedStaticProvider.js";
|
|
10
|
-
import { SessionProviderRouter } from "../application/binary/SessionProviderRouter.js";
|
|
11
10
|
/**
|
|
12
11
|
* Compose the target-switching runtime shared directly by CLI and MCP adapters.
|
|
13
12
|
* This is the sole production wiring point, so both adapters share identical
|
|
14
13
|
* provider selection, profile, lifecycle, and Evidence semantics.
|
|
15
14
|
*/
|
|
16
|
-
export const createBinarySession = (config, logger
|
|
17
|
-
const
|
|
18
|
-
const
|
|
19
|
-
const
|
|
20
|
-
|
|
15
|
+
export const createBinarySession = (config, logger, selectedEnvironment) => {
|
|
16
|
+
const environment = snapshotEnvironment(selectedEnvironment);
|
|
17
|
+
const hopper = new HopperProvider(config, logger, environment);
|
|
18
|
+
const ghidra = new GhidraProvider(config, logger, environment);
|
|
19
|
+
const ida = new IdaProvider(config, environment);
|
|
20
|
+
return composeBinarySession(new AnalysisProviderRegistry([hopper, ghidra, ida], config.analysisProvider), auxiliaryAnalysisProviderDeclarations(environment).map((declaration) => new LazyAnalysisProvider(declaration)));
|
|
21
21
|
};
|
|
22
22
|
/** Compose an execution-free managed session without native provider selection. */
|
|
23
|
-
export const createManagedBinarySession = () => composeBinarySession(
|
|
23
|
+
export const createManagedBinarySession = () => composeBinarySession(new AnalysisProviderRegistry([]), [
|
|
24
24
|
new ManagedStaticProvider(),
|
|
25
|
-
])
|
|
25
|
+
]);
|
|
@@ -1,3 +1,4 @@
|
|
|
1
1
|
import { PlaywrightBrowserScenarioProvider } from "../browser/PlaywrightBrowserScenarioProvider.js";
|
|
2
|
+
import { PlaywrightScenarioSession } from "../browser/PlaywrightScenarioSession.js";
|
|
2
3
|
/** Construct a fresh provider without opening a target or acquiring an engine. */
|
|
3
|
-
export const createBrowserScenarioProvider = () => new PlaywrightBrowserScenarioProvider();
|
|
4
|
+
export const createBrowserScenarioProvider = (environment) => new PlaywrightBrowserScenarioProvider((scenario, options) => PlaywrightScenarioSession.open(scenario, environment, options));
|
|
@@ -1,17 +1,23 @@
|
|
|
1
|
+
import { snapshotEnvironment } from "../process/snapshotEnvironment.js";
|
|
2
|
+
import { parseConfig } from "../config/parseConfig.js";
|
|
1
3
|
import { runDirectAnalysis as executeDirectAnalysis, runProviderAnalysis as executeProviderAnalysis, runManagedProviderExecution as executeManagedProvider, } from "../application/DirectAnalysis.js";
|
|
2
|
-
import {
|
|
4
|
+
import { runSessionStatus as executeSessionStatus } from "../application/DirectAnalysisStatus.js";
|
|
3
5
|
import { createBinarySession, createManagedBinarySession } from "./binary.js";
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
6
|
+
/** Bind one-shot analysis and status commands to one caller-selected environment. */
|
|
7
|
+
export const createDirectAnalysis = (selectedEnvironment) => {
|
|
8
|
+
const environment = snapshotEnvironment(selectedEnvironment);
|
|
9
|
+
const dependencies = {
|
|
10
|
+
readConfiguration: () => parseConfig(environment),
|
|
11
|
+
createBinarySession: (config, logger) => createBinarySession(config, logger, environment),
|
|
12
|
+
createManagedBinarySession,
|
|
13
|
+
};
|
|
14
|
+
return {
|
|
15
|
+
runDirectAnalysis: executeDirectAnalysis.bind(undefined, dependencies),
|
|
16
|
+
runProviderAnalysis: executeProviderAnalysis.bind(undefined, dependencies),
|
|
17
|
+
runSessionStatus: executeSessionStatus.bind(undefined, dependencies),
|
|
18
|
+
};
|
|
7
19
|
};
|
|
8
|
-
/**
|
|
9
|
-
export const
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
/** Execute managed metadata without constructing native provider candidates. */
|
|
13
|
-
export const runManagedProviderExecution = executeManagedProvider.bind(undefined, dependencies);
|
|
14
|
-
/** Report production provider candidates without opening a target. */
|
|
15
|
-
export const runProviderStatus = executeProviderStatus.bind(undefined, dependencies);
|
|
16
|
-
/** Report production session operations without opening a target. */
|
|
17
|
-
export const runCapabilityStatus = executeCapabilityStatus.bind(undefined, dependencies);
|
|
20
|
+
/** Execute managed metadata without configuration or native provider candidates. */
|
|
21
|
+
export const runManagedProviderExecution = executeManagedProvider.bind(undefined, {
|
|
22
|
+
createManagedBinarySession,
|
|
23
|
+
});
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import { PlaywrightElectronActiveProvider } from "../browser/PlaywrightElectronActiveProvider.js";
|
|
2
2
|
/** Construct a fresh provider without opening a target or acquiring an engine. */
|
|
3
|
-
export const createElectronScenarioProvider = () => new PlaywrightElectronActiveProvider();
|
|
3
|
+
export const createElectronScenarioProvider = (environment) => new PlaywrightElectronActiveProvider(environment);
|
|
@@ -1,12 +1,17 @@
|
|
|
1
|
+
import { snapshotEnvironment } from "../process/snapshotEnvironment.js";
|
|
1
2
|
import { CDP_BROWSER_PROVIDER_IDENTITY, PLAYWRIGHT_BROWSER_SCENARIO_PROVIDER_IDENTITY, CDP_ELECTRON_PROVIDER_IDENTITY, PLAYWRIGHT_ELECTRON_ACTIVE_PROVIDER_IDENTITY, } from "../browser/providerIdentities.js";
|
|
2
3
|
import { V8_INSPECTOR_PROVIDER_IDENTITY } from "../inspector/providerIdentity.js";
|
|
3
4
|
import { err, ok } from "../domain/result.js";
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
5
|
+
/** Bind optional provider construction to one caller-selected process environment. */
|
|
6
|
+
export const createOptionalObservationFactories = (selectedEnvironment) => {
|
|
7
|
+
const environment = snapshotEnvironment(selectedEnvironment);
|
|
8
|
+
return {
|
|
9
|
+
browserObservation: async () => (await import("./browserObservation.js")).createBrowserObservationProvider(),
|
|
10
|
+
browserScenarioCapture: async () => (await import("./browserScenario.js")).createBrowserScenarioProvider(environment),
|
|
11
|
+
electronObservation: async () => (await import("./electronObservation.js")).createElectronObservationProvider(),
|
|
12
|
+
electronActiveObservation: async () => (await import("./electronScenario.js")).createElectronScenarioProvider(environment),
|
|
13
|
+
javascriptRuntimeObservation: async () => (await import("./javascriptRuntimeObservation.js")).createJavaScriptRuntimeObservationProvider(),
|
|
14
|
+
};
|
|
10
15
|
};
|
|
11
16
|
const loadPort = async (factory, providerId) => {
|
|
12
17
|
try {
|
|
@@ -20,7 +25,7 @@ const loadPort = async (factory, providerId) => {
|
|
|
20
25
|
}
|
|
21
26
|
};
|
|
22
27
|
/** Load each adapter independently, retaining healthy peers and exact failures. */
|
|
23
|
-
export const loadOptionalObservationProviders = async (factories
|
|
28
|
+
export const loadOptionalObservationProviders = async (factories) => {
|
|
24
29
|
const [browser, scenario, electron, electronActive, runtime] = await Promise.all([
|
|
25
30
|
loadPort(factories.browserObservation, CDP_BROWSER_PROVIDER_IDENTITY.id),
|
|
26
31
|
loadPort(factories.browserScenarioCapture, PLAYWRIGHT_BROWSER_SCENARIO_PROVIDER_IDENTITY.id),
|
|
@@ -46,8 +46,14 @@ const environmentSchema = z.object({
|
|
|
46
46
|
export const parseEnvironment = (environment) => {
|
|
47
47
|
const parsed = environmentSchema.safeParse(environment);
|
|
48
48
|
if (!parsed.success) {
|
|
49
|
+
// Zod messages name the constraint, never the rejected value.
|
|
50
|
+
const settings = parsed.error.issues.map((issue) => ({
|
|
51
|
+
setting: String(issue.path[0] ?? "environment"),
|
|
52
|
+
constraint: issue.message,
|
|
53
|
+
}));
|
|
49
54
|
return err(new ConfigurationError("Invalid REA environment configuration", {
|
|
50
55
|
cause: parsed.error,
|
|
56
|
+
settings,
|
|
51
57
|
}));
|
|
52
58
|
}
|
|
53
59
|
return ok(parsed.data);
|
|
@@ -6,12 +6,7 @@ const MAX_TIMER_DELAY_MS = 2_147_483_647;
|
|
|
6
6
|
/** Parse the optional setting without reading the ambient process environment. */
|
|
7
7
|
export const ghidraStartupTimeoutSchema = z
|
|
8
8
|
.string()
|
|
9
|
-
.
|
|
10
|
-
.transform(
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
value > 0 &&
|
|
14
|
-
value <= MAX_TIMER_DELAY_MS
|
|
15
|
-
? value
|
|
16
|
-
: DEFAULT_GHIDRA_STARTUP_TIMEOUT_MS;
|
|
17
|
-
});
|
|
9
|
+
.regex(/^[1-9]\d*$/u, "must be a positive decimal integer")
|
|
10
|
+
.transform(Number)
|
|
11
|
+
.pipe(z.number().int().min(1).max(MAX_TIMER_DELAY_MS))
|
|
12
|
+
.default(DEFAULT_GHIDRA_STARTUP_TIMEOUT_MS);
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { userInfo } from "node:os";
|
|
2
|
+
/** Resolve the caller's selected home before consulting the host account. */
|
|
3
|
+
export const homeDirectoryFromEnvironment = (environment, platform) => {
|
|
4
|
+
const selected = platform === "win32"
|
|
5
|
+
? (environment.USERPROFILE ??
|
|
6
|
+
(environment.HOMEDRIVE !== undefined &&
|
|
7
|
+
environment.HOMEPATH !== undefined
|
|
8
|
+
? `${environment.HOMEDRIVE}${environment.HOMEPATH}`
|
|
9
|
+
: environment.HOME))
|
|
10
|
+
: (environment.HOME ?? environment.USERPROFILE);
|
|
11
|
+
return selected ?? userInfo().homedir;
|
|
12
|
+
};
|
|
@@ -11,6 +11,7 @@ export const mcpResponseBudgetSchema = z
|
|
|
11
11
|
.regex(/^[1-9]\d*$/u)
|
|
12
12
|
.transform(Number)
|
|
13
13
|
.pipe(z.number().int().safe().min(MINIMUM_RESPONSE_BYTES));
|
|
14
|
+
const budgetConstraint = `REA_MCP_MAX_RESPONSE_BYTES must be a decimal safe integer at least ${String(MINIMUM_RESPONSE_BYTES)} bytes, the default stdio receive-buffer size.`;
|
|
14
15
|
/** Parse only the MCP-specific budget without loading unrelated provider settings. */
|
|
15
16
|
export const parseMcpResponseBudget = (value) => {
|
|
16
17
|
if (value === undefined)
|
|
@@ -18,5 +19,12 @@ export const parseMcpResponseBudget = (value) => {
|
|
|
18
19
|
const parsed = mcpResponseBudgetSchema.safeParse(value);
|
|
19
20
|
return parsed.success
|
|
20
21
|
? ok(parsed.data)
|
|
21
|
-
: err(new ConfigurationError(
|
|
22
|
+
: err(new ConfigurationError(budgetConstraint, {
|
|
23
|
+
settings: [
|
|
24
|
+
{
|
|
25
|
+
setting: "REA_MCP_MAX_RESPONSE_BYTES",
|
|
26
|
+
constraint: budgetConstraint,
|
|
27
|
+
},
|
|
28
|
+
],
|
|
29
|
+
}));
|
|
22
30
|
};
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { accessSync, constants } from "node:fs";
|
|
2
|
-
import { homedir } from "node:os";
|
|
3
2
|
import { join } from "node:path";
|
|
4
3
|
import { ConfigurationError } from "../domain/configurationErrors.js";
|
|
5
4
|
import { ok } from "../domain/result.js";
|
|
6
5
|
import { parseEnvironment } from "./environment.js";
|
|
6
|
+
import { homeDirectoryFromEnvironment } from "./homeDirectory.js";
|
|
7
7
|
import { parseStringArray, parseLoaderArgs } from "./parsers.js";
|
|
8
8
|
const DEFAULT_HOPPER_LAUNCHER_PATH = "/Applications/Hopper Disassembler.app/Contents/MacOS/hopper";
|
|
9
9
|
const SYSTEM_LINUX_HOPPER = "/opt/hopper/bin/Hopper";
|
|
@@ -16,7 +16,7 @@ const executableAvailable = (path) => {
|
|
|
16
16
|
return false;
|
|
17
17
|
}
|
|
18
18
|
};
|
|
19
|
-
const defaultHopperLauncherPath = (platform
|
|
19
|
+
const defaultHopperLauncherPath = (platform, homeDirectory, executable = executableAvailable) => {
|
|
20
20
|
if (platform !== "linux")
|
|
21
21
|
return DEFAULT_HOPPER_LAUNCHER_PATH;
|
|
22
22
|
if (executable(SYSTEM_LINUX_HOPPER))
|
|
@@ -37,6 +37,9 @@ export const parseConfig = (environment) => {
|
|
|
37
37
|
if (!secretPatterns.ok)
|
|
38
38
|
return secretPatterns;
|
|
39
39
|
return ok({
|
|
40
|
+
...(env.REA_MCP_MAX_RESPONSE_BYTES === undefined
|
|
41
|
+
? {}
|
|
42
|
+
: { mcpMaxResponseBytes: env.REA_MCP_MAX_RESPONSE_BYTES }),
|
|
40
43
|
analysisProvider: env.REA_ANALYSIS_PROVIDER,
|
|
41
44
|
...(env.REA_IDA_MCP_CONFIG === undefined
|
|
42
45
|
? {}
|
|
@@ -48,7 +51,8 @@ export const parseConfig = (environment) => {
|
|
|
48
51
|
? {}
|
|
49
52
|
: { ghidraNativeAotJar: env.REA_GHIDRA_NATIVEAOT_JAR }),
|
|
50
53
|
ilspyCmdPath: env.REA_ILSPY_CMD_PATH,
|
|
51
|
-
hopperLauncherPath: env.HOPPER_LAUNCHER_PATH ??
|
|
54
|
+
hopperLauncherPath: env.HOPPER_LAUNCHER_PATH ??
|
|
55
|
+
defaultHopperLauncherPath(process.platform, homeDirectoryFromEnvironment(environment, process.platform)),
|
|
52
56
|
hopperTargetPath: env.HOPPER_TARGET_PATH,
|
|
53
57
|
hopperTargetKind: env.HOPPER_TARGET_KIND,
|
|
54
58
|
hopperLoaderArgs: loaderArgs.value,
|
package/dist/config/parsers.js
CHANGED
|
@@ -1,33 +1,30 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
2
|
import { ConfigurationError } from "../domain/configurationErrors.js";
|
|
3
3
|
import { err, ok } from "../domain/result.js";
|
|
4
|
+
import { safeParseJson } from "../domain/safeJson.js";
|
|
5
|
+
/** Decode explicitly selected reference-source exclusion patterns. */
|
|
4
6
|
export const parseStringArray = (encoded, name) => {
|
|
5
|
-
|
|
6
|
-
const parsed = z.array(z.string().min(1)).safeParse(JSON.parse(encoded));
|
|
7
|
-
return parsed.success
|
|
8
|
-
? ok(parsed.data)
|
|
9
|
-
: err(new ConfigurationError(`${name} must encode an array of strings`, {
|
|
10
|
-
cause: parsed.error,
|
|
11
|
-
}));
|
|
12
|
-
}
|
|
13
|
-
catch (cause) {
|
|
14
|
-
return err(new ConfigurationError(`${name} must be valid JSON`, { cause }));
|
|
15
|
-
}
|
|
7
|
+
return parseConfiguredStringArray(encoded, name, z.string().min(1));
|
|
16
8
|
};
|
|
9
|
+
/** Decode Hopper arguments while preserving meaningful empty argv entries. */
|
|
17
10
|
export const parseLoaderArgs = (encoded) => {
|
|
18
11
|
if (encoded === undefined)
|
|
19
12
|
return ok([]);
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
return err(
|
|
26
|
-
|
|
27
|
-
}));
|
|
28
|
-
}
|
|
29
|
-
const parsed = z.array(z.string()).safeParse(decoded);
|
|
13
|
+
return parseConfiguredStringArray(encoded, "HOPPER_LOADER_ARGS_JSON", z.string());
|
|
14
|
+
};
|
|
15
|
+
const parseConfiguredStringArray = (encoded, setting, itemSchema) => {
|
|
16
|
+
const decoded = safeParseJson(encoded);
|
|
17
|
+
if (!decoded.ok)
|
|
18
|
+
return err(configuredArrayError(setting, "must be valid JSON", decoded.cause));
|
|
19
|
+
const parsed = z.array(itemSchema).safeParse(decoded.value);
|
|
30
20
|
return parsed.success
|
|
31
21
|
? ok(parsed.data)
|
|
32
|
-
: err(
|
|
22
|
+
: err(configuredArrayError(setting, "must encode an array of strings", parsed.error));
|
|
23
|
+
};
|
|
24
|
+
const configuredArrayError = (setting, requirement, cause) => {
|
|
25
|
+
const constraint = `${setting} ${requirement}`;
|
|
26
|
+
return new ConfigurationError(constraint, {
|
|
27
|
+
cause,
|
|
28
|
+
settings: [{ setting, constraint }],
|
|
29
|
+
});
|
|
33
30
|
};
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { analysisViewResultSchema, inspectAnalysisViewInputSchema, } from "../domain/analysisView/analysisView.js";
|
|
2
|
+
import { toolContractMetadata } from "./toolEffects.js";
|
|
3
|
+
import { evidenceResultOf } from "./toolOutputSchemaPrimitives.js";
|
|
4
|
+
const RETAINED_EXAMPLE_ID = `ev_${"a".repeat(64)}`;
|
|
5
|
+
/** Selected views of already completed layout and JavaScript analysis Evidence. */
|
|
6
|
+
export const ANALYSIS_VIEW_TOOL_CONTRACTS = [
|
|
7
|
+
{
|
|
8
|
+
name: "inspect_analysis_view",
|
|
9
|
+
...toolContractMetadata("inspect_analysis_view"),
|
|
10
|
+
kind: "application",
|
|
11
|
+
description: "Inspect a selected view of completed binary-layout or JavaScript application Evidence without repeating analysis. Use an exact same-session retained evidence_id or portable inline Evidence. Select a summary, layout mitigations/linkage facet, one section/symbol/module, or a stable page with a positive limit. Module pages contain JavaScript assets, bundled modules and source modules; use node_id when paths are ambiguous or unavailable. Returns selected facts inline with artifact identity, parent Evidence ID, a distinct view digest, coverage, limitations and unknowns. Actual serialized size determines MCP transport admission; choose a smaller page or export the retained Evidence when needed.",
|
|
12
|
+
inputSchema: inspectAnalysisViewInputSchema,
|
|
13
|
+
outputSchema: evidenceResultOf(analysisViewResultSchema),
|
|
14
|
+
examples: [
|
|
15
|
+
{
|
|
16
|
+
title: "Summarize retained JavaScript application Evidence",
|
|
17
|
+
input: {
|
|
18
|
+
source: {
|
|
19
|
+
kind: "retained-evidence",
|
|
20
|
+
evidence_id: RETAINED_EXAMPLE_ID,
|
|
21
|
+
},
|
|
22
|
+
view: { kind: "summary" },
|
|
23
|
+
},
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
title: "Read one ELF section from retained layout Evidence",
|
|
27
|
+
input: {
|
|
28
|
+
source: {
|
|
29
|
+
kind: "retained-evidence",
|
|
30
|
+
evidence_id: RETAINED_EXAMPLE_ID,
|
|
31
|
+
},
|
|
32
|
+
view: {
|
|
33
|
+
kind: "item",
|
|
34
|
+
collection: "sections",
|
|
35
|
+
selector: { name: ".text" },
|
|
36
|
+
},
|
|
37
|
+
},
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
title: "Page module identities from retained application Evidence",
|
|
41
|
+
input: {
|
|
42
|
+
source: {
|
|
43
|
+
kind: "retained-evidence",
|
|
44
|
+
evidence_id: RETAINED_EXAMPLE_ID,
|
|
45
|
+
},
|
|
46
|
+
view: {
|
|
47
|
+
kind: "page",
|
|
48
|
+
collection: "modules",
|
|
49
|
+
offset: 0,
|
|
50
|
+
limit: 32,
|
|
51
|
+
},
|
|
52
|
+
},
|
|
53
|
+
},
|
|
54
|
+
],
|
|
55
|
+
},
|
|
56
|
+
];
|
|
@@ -10,8 +10,9 @@ import { reconstructionObligationLedgerInputSchema, reconstructionObligationLedg
|
|
|
10
10
|
import { androidApplicationProjectionInputSchema, androidApplicationProjectionResultSchema, } from "../domain/android/androidApplication.js";
|
|
11
11
|
import { appleApplicationProjectionInputSchema, appleApplicationProjectionResultSchema, } from "../domain/apple/appleApplication.js";
|
|
12
12
|
import { toolContractMetadata } from "./toolEffects.js";
|
|
13
|
-
import { evidenceResultOf } from "./
|
|
14
|
-
import { JAVASCRIPT_APPLICATION_VERSION_COMPARISON_EXAMPLE,
|
|
13
|
+
import { evidenceResultOf } from "./toolOutputSchemaPrimitives.js";
|
|
14
|
+
import { JAVASCRIPT_APPLICATION_VERSION_COMPARISON_EXAMPLE, JAVASCRIPT_FEATURE_TRACE_EXAMPLE, SOURCE_TO_BUNDLE_COMPARISON_EXAMPLE, } from "./javascript/javascriptApplicationWorkflowExamples.js";
|
|
15
|
+
import { JAVASCRIPT_EXPORT_SHAPE_COMPARISON_EXAMPLE } from "./javascript/javascriptExportShapeComparisonExample.js";
|
|
15
16
|
import { ANDROID_APPLICATION_GRAPH_EXAMPLE, APPLE_APPLICATION_GRAPH_EXAMPLE, MACOS_APPLICATION_GRAPH_EXAMPLE, } from "./mobileApplicationGraphExamples.js";
|
|
16
17
|
const traceOutputSchema = evidenceResultOf(applicationFeatureTraceResultSchema);
|
|
17
18
|
const semanticTraceOutputSchema = evidenceResultOf(javaScriptSemanticTraceResultSchema);
|
|
@@ -106,13 +107,13 @@ export const APPLICATION_TOOL_CONTRACTS = [
|
|
|
106
107
|
{
|
|
107
108
|
name: "compare_javascript_export_shapes",
|
|
108
109
|
...toolContractMetadata("compare_javascript_export_shapes"),
|
|
109
|
-
description: "Compare static return shapes for one exact module/export selector on each authenticated JavaScript Application Graph supplied as inline Evidence or exact same-session retained references. Variants pair only by reciprocal unique literal discriminants
|
|
110
|
+
description: "Compare static return shapes for one exact module/export selector on each authenticated JavaScript Application Graph supplied as inline Evidence or exact same-session retained references. Variants pair only by reciprocal unique literal discriminants. Each retained variant lists observed return-property names even when values stay unknown. Presence (present, absent, or unknown-coverage) is separate from value resolution: a name present on only one paired shape is added or removed when parent-property coverage is complete on both sides, including when the static value is unresolved. Dynamic values, incomplete parent coverage, and unpaired variants remain unknown. Reports JSON Pointer changes without executing JavaScript; runtime behavior requires a separate agent-run probe.",
|
|
110
111
|
kind: "application",
|
|
111
112
|
inputSchema: compareJavaScriptExportShapesRequestSchema,
|
|
112
113
|
outputSchema: exportShapeComparisonOutputSchema,
|
|
113
114
|
examples: [
|
|
114
115
|
{
|
|
115
|
-
title: "
|
|
116
|
+
title: "Report observed return-property presence when static values stay unknown",
|
|
116
117
|
input: JAVASCRIPT_EXPORT_SHAPE_COMPARISON_EXAMPLE,
|
|
117
118
|
},
|
|
118
119
|
{
|