rea-agents 6.1.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 +7 -5
- package/bridge/ghidra/ReaGhidraBridge.java +32 -4
- package/bridge/hopper_bridge.py +6 -1
- package/dist/android/JadxConfiguration.js +87 -7
- package/dist/android/JadxMcpTransport.js +14 -2
- package/dist/android/JadxProvider.js +57 -35
- package/dist/application/BinaryTargetResolver.js +5 -3
- package/dist/application/BrowserEvidence.js +3 -8
- package/dist/application/BrowserScenarioEvidence.js +2 -18
- package/dist/application/CapabilityInventory.js +43 -9
- package/dist/application/ClientConfigurationDocument.js +69 -25
- package/dist/application/DirectAnalysis.js +29 -14
- package/dist/application/DirectAnalysisCleanup.js +72 -0
- package/dist/application/DirectAnalysisStatus.js +4 -5
- package/dist/application/Doctor.js +15 -19
- package/dist/application/DoctorDiagnostics.js +1 -2
- package/dist/application/EnhancedTools.js +51 -6
- package/dist/application/EvidenceBundleFiles.js +8 -3
- package/dist/application/InvestigationProviders.js +9 -1
- package/dist/application/JsonFiles.js +42 -9
- package/dist/application/LinuxHopper.js +9 -6
- package/dist/application/MacHopper.js +15 -18
- package/dist/application/RealHopperAssertions.js +0 -11
- package/dist/application/ReconstructionObligationCandidates.js +1 -1
- package/dist/application/ReferenceSourceImportEntries.js +1 -1
- package/dist/application/Setup.js +8 -16
- package/dist/application/SetupHost.js +16 -27
- package/dist/application/SetupPlan.js +6 -6
- package/dist/application/Uninstall.js +81 -29
- package/dist/application/UpdateMaintenance.js +7 -5
- package/dist/application/UpdateRuntime.js +12 -12
- package/dist/application/WebScriptExportService.js +30 -4
- 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/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 +10 -8
- package/dist/application/binary/BinarySession.js +70 -29
- package/dist/application/binary/BinarySessionComposition.js +1 -3
- package/dist/application/binary/BinarySessionExecution.js +3 -5
- package/dist/application/binary/BinarySessionOpen.js +1 -1
- 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 +9 -13
- package/dist/application/javascript/JavaScriptApplicationEvidence.js +2 -6
- package/dist/application/javascript/JavaScriptApplicationService.js +6 -1
- package/dist/application/javascript/JavaScriptArtifactAnalysis.js +5 -3
- package/dist/application/javascript/JavaScriptArtifactGraphBuilder.js +11 -9
- 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 +43 -16
- package/dist/application/javascript/JavaScriptArtifactReconstruction.js +46 -6
- package/dist/application/javascript/JavaScriptModuleRelationships.js +1 -1
- package/dist/application/javascript/JavaScriptRuntimeObservationService.js +3 -3
- package/dist/application/javascript/JavaScriptSemanticGraphAsyncProjection.js +2 -3
- 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 +42 -19
- package/dist/application/managed/ManagedMemberComparisonService.js +2 -1
- package/dist/application/managed/ManagedNativeVerificationService.js +2 -1
- package/dist/application/process/ProcessCli.js +11 -11
- package/dist/application/process/ProcessEvidence.js +0 -1
- package/dist/artifacts/ArtifactProvider.js +39 -14
- package/dist/artifacts/ArtifactReader.js +31 -0
- package/dist/artifacts/DirectoryArtifactReader.js +2 -1
- package/dist/artifacts/MachOSliceArtifactReader.js +9 -2
- package/dist/artifacts/NativeDmgArtifactReader.js +65 -20
- 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 +21 -3
- package/dist/artifacts/extraction/ArtifactExtraction.js +78 -21
- package/dist/artifacts/inventory/ArtifactGraphConstruction.js +67 -61
- package/dist/artifacts/inventory/ArtifactInventory.js +0 -1
- package/dist/artifacts/inventory/reader.js +3 -3
- package/dist/artifacts/inventory/scanCanonical.js +48 -24
- package/dist/artifacts/inventory/scanReader.js +5 -9
- package/dist/browser/BrowserScenarioPartialObservation.js +106 -0
- package/dist/browser/CdpBrowserProvider.js +2 -3
- package/dist/browser/CdpCaptureEventHandlers.js +2 -4
- package/dist/browser/CdpCaptureEvents.js +0 -1
- package/dist/browser/CdpCaptureValues.js +20 -0
- package/dist/browser/CdpElectronProvider.js +0 -2
- package/dist/browser/CdpElectronScriptEvents.js +2 -8
- package/dist/browser/CdpElectronScripts.js +2 -3
- 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 +2 -56
- package/dist/browser/PlaywrightElectronActiveProvider.js +10 -6
- 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/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 +32 -27
- package/dist/cli/coreNativeCommands.js +9 -10
- package/dist/cli/electronCommands.js +4 -4
- package/dist/cli/interactiveSetup.js +6 -6
- 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/utilityCommands.js +9 -9
- package/dist/cli.js +16 -8
- package/dist/cliBrowserScenarioCommands.js +2 -2
- package/dist/cliCommandNames.js +1 -0
- package/dist/cliJsonInput.js +15 -1
- 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 +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 +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 +2 -2
- package/dist/contracts/enhancedToolContracts.js +4 -3
- package/dist/contracts/evm/evmToolContracts.js +1 -1
- package/dist/contracts/functionWorkflowToolContracts.js +1 -1
- package/dist/contracts/inputSchemaPresentation.js +90 -0
- package/dist/contracts/investigationExamples.js +4 -3
- package/dist/contracts/javascript/electronToolContracts.js +1 -1
- 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 +5 -10
- 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 +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/sessionToolContracts.js +14 -2
- package/dist/contracts/sessionToolSchemas.js +1 -14
- package/dist/contracts/toolContracts.js +2 -0
- package/dist/contracts/toolEffects.js +1 -0
- package/dist/contracts/toolOutputSchemaGroups.js +136 -92
- package/dist/contracts/toolOutputSchemaPrimitives.js +11 -21
- 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/analysisErrorCore.js +3 -0
- package/dist/domain/analysisErrorPresentation.js +18 -3
- package/dist/domain/analysisErrorProjection.js +24 -5
- 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/androidApplication.js +1 -1
- 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 +16 -3
- 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/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/browserScenarioDiff.js +0 -2
- package/dist/domain/browserScenarioDiffEvidence.js +0 -12
- package/dist/domain/browserScenarioDiffValues.js +2 -2
- package/dist/domain/browserScenarioValues.js +3 -4
- package/dist/domain/callPath.js +8 -9
- package/dist/domain/callPathSchemas.js +2 -2
- package/dist/domain/changedBehavior.js +3 -3
- package/dist/domain/completionLedgerGeneration.js +2 -1
- package/dist/domain/configurationErrors.js +12 -0
- package/dist/domain/conformancePackage.js +4 -3
- package/dist/domain/evidence.js +10 -36
- package/dist/domain/evidenceBundle.js +7 -9
- package/dist/domain/evidenceCompletionLedger.js +2 -1
- 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/javascript/electronActiveObservation.js +26 -69
- 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/javascriptApplicationEvidenceSchemas.js +2 -0
- package/dist/domain/javascript/javascriptApplicationGraph.js +26 -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/{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/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 +9 -3
- 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/javascriptSemanticDataEffects.js +1 -1
- package/dist/domain/javascript/javascriptSemanticGraph.js +88 -46
- 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 +1 -12
- package/dist/domain/javascript/javascriptSemanticProjection.js +2 -3
- package/dist/domain/javascript/javascriptSemanticPromises.js +2 -1
- package/dist/domain/javascript/javascriptSemanticResourceLimits.js +1 -1
- 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 +47 -54
- package/dist/domain/javascript/javascriptSourceMapPaths.js +104 -0
- package/dist/domain/javascript/javascriptStaticAnalysisCalls.js +2 -1
- package/dist/domain/javascript/javascriptStaticAnalysisHelpers.js +0 -1
- package/dist/domain/javascript/sourceToBundleComparison.js +12 -3
- package/dist/domain/javascript/sourceToBundleSignals.js +47 -19
- package/dist/domain/localPath.js +1 -1
- package/dist/domain/managed/managedArtifact.js +6 -4
- package/dist/domain/managed/managedMemberComparison.js +2 -9
- 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 +5 -3
- 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 +13 -12
- 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 +41 -22
- 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 +15 -11
- package/dist/domain/process/processTraceSpecification.js +3 -4
- package/dist/domain/providerAdapterError.js +2 -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 +3 -3
- package/dist/domain/reconstructionVerificationSchemas.js +2 -1
- package/dist/domain/referenceSourceGraph.js +20 -21
- package/dist/domain/staticRuntimeCorrelation.js +2 -2
- package/dist/domain/stringPatterns.js +6 -0
- package/dist/domain/swiftSymbolClassification.js +61 -0
- package/dist/domain/symbolAnalysis.js +66 -18
- 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 +0 -2
- package/dist/domain/webScriptExport.js +1 -1
- 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/FirmwareProvider.js +4 -4
- package/dist/generatedPackageMetadata.js +2 -2
- package/dist/ghidra/GhidraAnalysisProfile.js +3 -6
- package/dist/ghidra/GhidraClient.js +91 -32
- 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 +40 -12
- package/dist/ghidra/GhidraJavaLaunch.js +6 -2
- package/dist/ghidra/GhidraLauncher.js +15 -7
- 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 +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/V8InspectorCaptureProjection.js +1 -1
- package/dist/inspector/V8InspectorProvider.js +38 -28
- package/dist/javascript/recovery/WakaruCommand.js +7 -2
- package/dist/javascript/recovery/WakaruExecution.js +5 -2
- 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/native/AppleMachoSelection.js +16 -6
- package/dist/native/CommandRunner.js +9 -7
- package/dist/native/LldbCallTracer.js +8 -2
- package/dist/native/NativeMacOSProvider.js +25 -15
- 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 +11 -5
- package/dist/process/ProviderProcess.js +1 -3
- package/dist/process/capture/FilesystemSnapshot.js +50 -13
- package/dist/process/capture/ProcessCaptureError.js +13 -0
- package/dist/process/capture/ProcessCaptureLifecycle.js +158 -70
- 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 +25 -14
- package/dist/server/createServer.js +49 -36
- 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 +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 -2
- 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/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 +2 -3
- package/dist/server/registerElectronTools.js +10 -13
- package/dist/server/registerEnhancedTools.js +23 -23
- package/dist/server/registerEvidenceTools.js +3 -4
- 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/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 +4 -19
- 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 +12 -18
- 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 +39 -30
- package/scripts/rea.mjs +3 -6
- package/skills/reverse-engineer-anything/SKILL.md +9 -8
- 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 +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/main/reload.js +0 -12
- package/dist/main/state.js +0 -3
- package/dist/server/sessionToolPolicies.js +0 -2
|
@@ -5,13 +5,13 @@ import { toolContract } from "../contracts/toolContracts.js";
|
|
|
5
5
|
import { observeJavaScriptRuntimeInputSchema } from "../domain/javascript/javascriptRuntimeObservation.js";
|
|
6
6
|
import { logToolExecution } from "./toolLogging.js";
|
|
7
7
|
import { toolRegistrationOptions } from "./toolRegistrationOptions.js";
|
|
8
|
-
import { toCallToolResult, toEvidenceToolResult } from "./toolResult.js";
|
|
9
8
|
/** Register passive Inspector tools even when policy keeps them unavailable. */
|
|
10
9
|
export const registerJavaScriptRuntimeObservationTools = (server, options) => {
|
|
10
|
+
const registration = { ...options, delivery: server.delivery };
|
|
11
11
|
const listContract = toolContract("list_javascript_runtime_targets");
|
|
12
12
|
const observeContract = toolContract("observe_javascript_runtime");
|
|
13
|
-
server.registerTool(listContract.name, toolRegistrationOptions(listContract), (input, context) => runRuntimeTool(
|
|
14
|
-
server.registerTool(observeContract.name, toolRegistrationOptions(observeContract), (input, context) => runRuntimeTool(
|
|
13
|
+
server.registerTool(listContract.name, toolRegistrationOptions(listContract), (input, context) => runRuntimeTool(registration, listContract, { input, context }, (parsed, signal) => listJavaScriptRuntimeTargets(options.runtime, parsed, { signal })));
|
|
14
|
+
server.registerTool(observeContract.name, toolRegistrationOptions(observeContract), (input, context) => runRuntimeTool(registration, observeContract, { input, context }, async (parsed, signal) => {
|
|
15
15
|
const request = observeJavaScriptRuntimeInputSchema.parse(parsed);
|
|
16
16
|
return observeJavaScriptRuntime(options.runtime, request, { signal });
|
|
17
17
|
}));
|
|
@@ -19,10 +19,10 @@ export const registerJavaScriptRuntimeObservationTools = (server, options) => {
|
|
|
19
19
|
const runRuntimeTool = async (options, contract, request, execute) => {
|
|
20
20
|
const { input, context } = request;
|
|
21
21
|
if (options.loadFailure !== undefined)
|
|
22
|
-
return toCallToolResult(err(optionalProviderUnavailable(options.loadFailure, contract.name)), contract);
|
|
22
|
+
return options.delivery.toCallToolResult(err(optionalProviderUnavailable(options.loadFailure, contract.name)), contract);
|
|
23
23
|
const result = await logToolExecution(options.logger, contract.name, () => execute(input, context.mcpReq.signal));
|
|
24
24
|
if (!result.ok)
|
|
25
|
-
return toCallToolResult(result, contract);
|
|
25
|
+
return options.delivery.toCallToolResult(result, contract);
|
|
26
26
|
const recorded = options.recordEvidence?.(result.value);
|
|
27
|
-
return toEvidenceToolResult(result.value, contract, recorded);
|
|
27
|
+
return options.delivery.toEvidenceToolResult(result.value, contract, recorded);
|
|
28
28
|
};
|
|
@@ -3,7 +3,6 @@ import { compareManagedMembersEvidenceValidated } from "../../application/manage
|
|
|
3
3
|
import { managedMemberComparisonResultSchema } from "../../domain/managed/managedMemberComparison.js";
|
|
4
4
|
import { logToolExecution } from "../toolLogging.js";
|
|
5
5
|
import { toolRegistrationOptions } from "../toolRegistrationOptions.js";
|
|
6
|
-
import { toCallToolResult, toEvidenceToolResult } from "../toolResult.js";
|
|
7
6
|
import { managedWorkflowContract } from "./contract.js";
|
|
8
7
|
import { resolveManagedEvidence } from "./evidence.js";
|
|
9
8
|
const compareContract = managedWorkflowContract("compare_managed_members");
|
|
@@ -13,9 +12,9 @@ export const registerCompareManagedMembers = (server, options) => {
|
|
|
13
12
|
const leftResolved = resolveManagedEvidence(input.left);
|
|
14
13
|
const rightResolved = resolveManagedEvidence(input.right);
|
|
15
14
|
if (!leftResolved.ok)
|
|
16
|
-
return toCallToolResult(leftResolved, compareContract);
|
|
15
|
+
return server.delivery.toCallToolResult(leftResolved, compareContract);
|
|
17
16
|
if (!rightResolved.ok)
|
|
18
|
-
return toCallToolResult(rightResolved, compareContract);
|
|
17
|
+
return server.delivery.toCallToolResult(rightResolved, compareContract);
|
|
19
18
|
const [left] = leftResolved.value;
|
|
20
19
|
const [right] = rightResolved.value;
|
|
21
20
|
if (left === undefined || right === undefined)
|
|
@@ -23,13 +22,13 @@ export const registerCompareManagedMembers = (server, options) => {
|
|
|
23
22
|
const parsed = { left, right };
|
|
24
23
|
const result = await logToolExecution(options.logger, compareContract.name, () => Promise.resolve(compareManagedMembersEvidenceValidated(parsed)));
|
|
25
24
|
if (!result.ok)
|
|
26
|
-
return toCallToolResult(result, compareContract);
|
|
25
|
+
return server.delivery.toCallToolResult(result, compareContract);
|
|
27
26
|
const recorded = recordSessionEvidenceSources(options.recordEvidence, [
|
|
28
27
|
parsed.left,
|
|
29
28
|
parsed.right,
|
|
30
29
|
]);
|
|
31
30
|
if (!recorded.ok)
|
|
32
|
-
return toCallToolResult(recorded, compareContract);
|
|
31
|
+
return server.delivery.toCallToolResult(recorded, compareContract);
|
|
33
32
|
const comparison = managedMemberComparisonResultSchema.parse(result.value.normalized_result);
|
|
34
33
|
const unknown = comparison.summary.unknown > 0;
|
|
35
34
|
const output = unknown
|
|
@@ -51,6 +50,6 @@ export const registerCompareManagedMembers = (server, options) => {
|
|
|
51
50
|
relationships: [],
|
|
52
51
|
})
|
|
53
52
|
: options.recordEvidence?.(result.value);
|
|
54
|
-
return toEvidenceToolResult(result.value, compareContract, output);
|
|
53
|
+
return server.delivery.toEvidenceToolResult(result.value, compareContract, output);
|
|
55
54
|
});
|
|
56
55
|
};
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { importManagedReconstructionEvidenceValidated } from "../../application/managed/ManagedReconstructionService.js";
|
|
2
2
|
import { logToolExecution } from "../toolLogging.js";
|
|
3
3
|
import { toolRegistrationOptions } from "../toolRegistrationOptions.js";
|
|
4
|
-
import { toCallToolResult, toEvidenceToolResult } from "../toolResult.js";
|
|
5
4
|
import { managedWorkflowContract } from "./contract.js";
|
|
6
5
|
import { resolveManagedEvidence } from "./evidence.js";
|
|
7
6
|
const reconstructionContract = managedWorkflowContract("import_managed_reconstruction");
|
|
@@ -10,18 +9,18 @@ export const registerImportManagedReconstruction = (server, options) => {
|
|
|
10
9
|
server.registerTool(reconstructionContract.name, toolRegistrationOptions(reconstructionContract), async (input) => {
|
|
11
10
|
const resolved = resolveManagedEvidence(input.static_members);
|
|
12
11
|
if (!resolved.ok)
|
|
13
|
-
return toCallToolResult(resolved, reconstructionContract);
|
|
12
|
+
return server.delivery.toCallToolResult(resolved, reconstructionContract);
|
|
14
13
|
const staticMembers = resolved.value[0];
|
|
15
14
|
if (staticMembers === undefined)
|
|
16
15
|
throw new TypeError("Managed reconstruction Evidence resolution failed");
|
|
17
16
|
const parsed = { ...input, static_members: staticMembers };
|
|
18
17
|
const result = await logToolExecution(options.logger, reconstructionContract.name, () => Promise.resolve(importManagedReconstructionEvidenceValidated(parsed)));
|
|
19
18
|
if (!result.ok)
|
|
20
|
-
return toCallToolResult(result, reconstructionContract);
|
|
19
|
+
return server.delivery.toCallToolResult(result, reconstructionContract);
|
|
21
20
|
const recordedSource = options.recordEvidence?.(parsed.static_members);
|
|
22
21
|
if (recordedSource !== undefined && !recordedSource.ok)
|
|
23
|
-
return toCallToolResult(recordedSource, reconstructionContract);
|
|
22
|
+
return server.delivery.toCallToolResult(recordedSource, reconstructionContract);
|
|
24
23
|
const recorded = options.recordEvidence?.(result.value);
|
|
25
|
-
return toEvidenceToolResult(result.value, reconstructionContract, recorded);
|
|
24
|
+
return server.delivery.toEvidenceToolResult(result.value, reconstructionContract, recorded);
|
|
26
25
|
});
|
|
27
26
|
};
|
|
@@ -2,7 +2,6 @@ import { recordSessionEvidenceSources } from "../sessionEvidence.js";
|
|
|
2
2
|
import { projectManagedApplicationGraphEvidence } from "../../application/managed/ManagedApplicationGraphService.js";
|
|
3
3
|
import { logToolExecution } from "../toolLogging.js";
|
|
4
4
|
import { toolRegistrationOptions } from "../toolRegistrationOptions.js";
|
|
5
|
-
import { toCallToolResult, toEvidenceToolResult } from "../toolResult.js";
|
|
6
5
|
import { managedWorkflowContract } from "./contract.js";
|
|
7
6
|
import { resolveManagedArtifactEvidence, resolveManagedBoundaryEvidence, resolveManagedEvidence, sourceEvidence, } from "./evidence.js";
|
|
8
7
|
const graphContract = managedWorkflowContract("project_managed_application_graph");
|
|
@@ -13,17 +12,17 @@ export const registerProjectManagedApplicationGraph = (server, options) => {
|
|
|
13
12
|
? undefined
|
|
14
13
|
: resolveManagedArtifactEvidence(input.managed_artifact);
|
|
15
14
|
if (managedArtifact !== undefined && !managedArtifact.ok)
|
|
16
|
-
return toCallToolResult(managedArtifact, graphContract);
|
|
15
|
+
return server.delivery.toCallToolResult(managedArtifact, graphContract);
|
|
17
16
|
const managedMembers = input.managed_members === undefined
|
|
18
17
|
? undefined
|
|
19
18
|
: resolveManagedEvidence(input.managed_members);
|
|
20
19
|
if (managedMembers !== undefined && !managedMembers.ok)
|
|
21
|
-
return toCallToolResult(managedMembers, graphContract);
|
|
20
|
+
return server.delivery.toCallToolResult(managedMembers, graphContract);
|
|
22
21
|
const managedBoundaries = input.managed_native_boundaries === undefined
|
|
23
22
|
? undefined
|
|
24
23
|
: resolveManagedBoundaryEvidence(input.managed_native_boundaries);
|
|
25
24
|
if (managedBoundaries !== undefined && !managedBoundaries.ok)
|
|
26
|
-
return toCallToolResult(managedBoundaries, graphContract);
|
|
25
|
+
return server.delivery.toCallToolResult(managedBoundaries, graphContract);
|
|
27
26
|
const parsed = {
|
|
28
27
|
managed_artifact: managedArtifact?.value[0],
|
|
29
28
|
managed_members: managedMembers?.value[0],
|
|
@@ -31,11 +30,11 @@ export const registerProjectManagedApplicationGraph = (server, options) => {
|
|
|
31
30
|
};
|
|
32
31
|
const result = await logToolExecution(options.logger, graphContract.name, () => Promise.resolve(projectManagedApplicationGraphEvidence(parsed)));
|
|
33
32
|
if (!result.ok)
|
|
34
|
-
return toCallToolResult(result, graphContract);
|
|
33
|
+
return server.delivery.toCallToolResult(result, graphContract);
|
|
35
34
|
const recordedSources = recordSessionEvidenceSources(options.recordEvidence, sourceEvidence(parsed));
|
|
36
35
|
if (!recordedSources.ok)
|
|
37
|
-
return toCallToolResult(recordedSources, graphContract);
|
|
36
|
+
return server.delivery.toCallToolResult(recordedSources, graphContract);
|
|
38
37
|
const recorded = options.recordEvidence?.(result.value);
|
|
39
|
-
return toEvidenceToolResult(result.value, graphContract, recorded);
|
|
38
|
+
return server.delivery.toEvidenceToolResult(result.value, graphContract, recorded);
|
|
40
39
|
});
|
|
41
40
|
};
|
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
import { recordSessionEvidenceSources } from "../sessionEvidence.js";
|
|
2
2
|
import { verifyManagedNativeBoundariesEvidence } from "../../application/managed/ManagedNativeVerificationService.js";
|
|
3
|
-
import { managedNativeVerificationResultSchema } from "../../domain/managed/
|
|
3
|
+
import { managedNativeVerificationResultSchema } from "../../domain/managed/managedNativeVerificationSchemas.js";
|
|
4
4
|
import { logToolExecution } from "../toolLogging.js";
|
|
5
5
|
import { toolRegistrationOptions } from "../toolRegistrationOptions.js";
|
|
6
|
-
import { toCallToolResult, toEvidenceToolResult } from "../toolResult.js";
|
|
7
6
|
import { managedWorkflowContract } from "./contract.js";
|
|
8
7
|
import { resolveManagedBoundaryEvidence, resolveNativeEvidence, } from "./evidence.js";
|
|
9
8
|
const nativeVerificationContract = managedWorkflowContract("verify_managed_native_boundaries");
|
|
@@ -12,10 +11,10 @@ export const registerVerifyManagedNativeBoundaries = (server, options) => {
|
|
|
12
11
|
server.registerTool(nativeVerificationContract.name, toolRegistrationOptions(nativeVerificationContract), async (input) => {
|
|
13
12
|
const managedBoundaries = resolveManagedBoundaryEvidence(input.managed_boundaries);
|
|
14
13
|
if (!managedBoundaries.ok)
|
|
15
|
-
return toCallToolResult(managedBoundaries, nativeVerificationContract);
|
|
14
|
+
return server.delivery.toCallToolResult(managedBoundaries, nativeVerificationContract);
|
|
16
15
|
const nativeObservations = resolveNativeEvidence(input.native_observations);
|
|
17
16
|
if (!nativeObservations.ok)
|
|
18
|
-
return toCallToolResult(nativeObservations, nativeVerificationContract);
|
|
17
|
+
return server.delivery.toCallToolResult(nativeObservations, nativeVerificationContract);
|
|
19
18
|
const managedBoundary = managedBoundaries.value[0];
|
|
20
19
|
if (managedBoundary === undefined)
|
|
21
20
|
throw new TypeError("Managed boundary Evidence resolution failed");
|
|
@@ -26,10 +25,10 @@ export const registerVerifyManagedNativeBoundaries = (server, options) => {
|
|
|
26
25
|
};
|
|
27
26
|
const result = await logToolExecution(options.logger, nativeVerificationContract.name, () => Promise.resolve(verifyManagedNativeBoundariesEvidence(parsed)));
|
|
28
27
|
if (!result.ok)
|
|
29
|
-
return toCallToolResult(result, nativeVerificationContract);
|
|
28
|
+
return server.delivery.toCallToolResult(result, nativeVerificationContract);
|
|
30
29
|
const recordedSources = recordSessionEvidenceSources(options.recordEvidence, [parsed.managed_boundaries, ...parsed.native_observations]);
|
|
31
30
|
if (!recordedSources.ok)
|
|
32
|
-
return toCallToolResult(recordedSources, nativeVerificationContract);
|
|
31
|
+
return server.delivery.toCallToolResult(recordedSources, nativeVerificationContract);
|
|
33
32
|
const verification = managedNativeVerificationResultSchema.parse(result.value.normalized_result);
|
|
34
33
|
const unknown = verification.summary.unresolved > 0 ||
|
|
35
34
|
verification.summary.contradicted > 0 ||
|
|
@@ -57,6 +56,6 @@ export const registerVerifyManagedNativeBoundaries = (server, options) => {
|
|
|
57
56
|
relationships: [],
|
|
58
57
|
})
|
|
59
58
|
: options.recordEvidence?.(result.value);
|
|
60
|
-
return toEvidenceToolResult(result.value, nativeVerificationContract, output);
|
|
59
|
+
return server.delivery.toEvidenceToolResult(result.value, nativeVerificationContract, output);
|
|
61
60
|
});
|
|
62
61
|
};
|
|
@@ -1,11 +1,9 @@
|
|
|
1
|
-
import { z } from "zod";
|
|
2
1
|
import { OFFICIAL_TOOL_CONTRACTS } from "../contracts/officialToolContracts.js";
|
|
3
2
|
import { createEvidence } from "../domain/evidence.js";
|
|
4
|
-
import { jsonObjectSchema
|
|
3
|
+
import { jsonObjectSchema } from "../domain/jsonValue.js";
|
|
5
4
|
import { mcpProgressReporter } from "./mcpProgress.js";
|
|
6
5
|
import { logToolExecution } from "./toolLogging.js";
|
|
7
6
|
import { toolRegistrationOptions } from "./toolRegistrationOptions.js";
|
|
8
|
-
import { toCallToolResult, toEvidenceToolResult } from "./toolResult.js";
|
|
9
7
|
/** Register direct bridge proxies, preserving MCP cancellation and typed errors. */
|
|
10
8
|
export const registerOfficialTools = (server, analysis, options) => {
|
|
11
9
|
for (const contract of OFFICIAL_TOOL_CONTRACTS) {
|
|
@@ -18,7 +16,7 @@ export const registerOfficialTools = (server, analysis, options) => {
|
|
|
18
16
|
};
|
|
19
17
|
const registerOfficialTool = (server, analysis, contract, registration) => {
|
|
20
18
|
server.registerTool(contract.name, toolRegistrationOptions(contract), async (input, context) => {
|
|
21
|
-
const arguments_ =
|
|
19
|
+
const arguments_ = jsonObjectSchema.parse(contract.inputSchema.parse(input));
|
|
22
20
|
const progress = mcpProgressReporter(context);
|
|
23
21
|
const result = await runOfficialOperation(analysis, contract, arguments_, {
|
|
24
22
|
logger: registration.logger,
|
|
@@ -26,7 +24,7 @@ const registerOfficialTool = (server, analysis, contract, registration) => {
|
|
|
26
24
|
progress,
|
|
27
25
|
});
|
|
28
26
|
if (!result.ok) {
|
|
29
|
-
return toCallToolResult(result, contract);
|
|
27
|
+
return server.delivery.toCallToolResult(result, contract);
|
|
30
28
|
}
|
|
31
29
|
const evidence = createEvidence(result.value.subject ?? registration.activeTarget?.(), result.value.provider, {
|
|
32
30
|
operation: contract.name,
|
|
@@ -40,7 +38,7 @@ const registerOfficialTool = (server, analysis, contract, registration) => {
|
|
|
40
38
|
locations: result.value.locations,
|
|
41
39
|
});
|
|
42
40
|
const recorded = registration.recordEvidence?.(evidence);
|
|
43
|
-
return toEvidenceToolResult(evidence, contract, recorded);
|
|
41
|
+
return server.delivery.toEvidenceToolResult(evidence, contract, recorded);
|
|
44
42
|
});
|
|
45
43
|
};
|
|
46
44
|
const runOfficialOperation = async (analysis, contract, arguments_, execution) => {
|
|
@@ -63,16 +61,3 @@ const runOfficialOperation = async (analysis, contract, arguments_, execution) =
|
|
|
63
61
|
});
|
|
64
62
|
return result;
|
|
65
63
|
};
|
|
66
|
-
const projectOfficialArguments = (contract, input) => {
|
|
67
|
-
// Annotation omissions preserve existing values; they are not Python defaults.
|
|
68
|
-
if (contract.name === "annotate_native_function")
|
|
69
|
-
return jsonObjectSchema.parse(contract.inputSchema.parse(input));
|
|
70
|
-
const parsed = jsonObjectSchema.parse(input);
|
|
71
|
-
if (!(contract.inputSchema instanceof z.ZodObject))
|
|
72
|
-
throw new TypeError("Official tool input contract must be an object schema");
|
|
73
|
-
const projected = {};
|
|
74
|
-
for (const key of Object.keys(contract.inputSchema.shape)) {
|
|
75
|
-
projected[key] = jsonValueSchema.parse(parsed[key] ?? null);
|
|
76
|
-
}
|
|
77
|
-
return projected;
|
|
78
|
-
};
|
|
@@ -5,14 +5,14 @@ import { describeValidationFailure } from "../domain/evidenceBundle.js";
|
|
|
5
5
|
import { EvidenceIntegrityError } from "../domain/evidenceErrors.js";
|
|
6
6
|
import { createEvidence, parseEvidence, } from "../domain/evidence.js";
|
|
7
7
|
import { jsonValueSchema } from "../domain/jsonValue.js";
|
|
8
|
-
import { compareProcessCaptures
|
|
8
|
+
import { compareProcessCaptures } from "../domain/process/processComparison.js";
|
|
9
|
+
import { parseProcessCapture, } from "../domain/process/processCaptureParsing.js";
|
|
9
10
|
import { err, ok } from "../domain/result.js";
|
|
10
11
|
import { recordDerivedEvidence } from "./recordDerivedEvidence.js";
|
|
11
12
|
import { recordSessionEvidenceSources } from "./sessionEvidence.js";
|
|
12
13
|
import { runDerivedOperation } from "./runDerivedOperation.js";
|
|
13
|
-
import { PROCESS_PROVIDER } from "
|
|
14
|
+
import { PROCESS_PROVIDER } from "../domain/process/processEvidenceProvider.js";
|
|
14
15
|
import { toolRegistrationOptions } from "./toolRegistrationOptions.js";
|
|
15
|
-
import { toCallToolResult, toEvidenceToolResult } from "./toolResult.js";
|
|
16
16
|
const PROCESS_CAPTURE_EVIDENCE = {
|
|
17
17
|
operation: "capture_process_scenario",
|
|
18
18
|
predicate: "rea.process-capture",
|
|
@@ -60,10 +60,10 @@ export const registerProcessComparisonTool = (server, session, contract, now = D
|
|
|
60
60
|
server.registerTool(contract.name, toolRegistrationOptions(contract), async (input, context) => {
|
|
61
61
|
const left = parseCaptureSide(contract.name, "left", input.left);
|
|
62
62
|
if (!left.ok)
|
|
63
|
-
return toCallToolResult(left, contract);
|
|
63
|
+
return server.delivery.toCallToolResult(left, contract);
|
|
64
64
|
const right = parseCaptureSide(contract.name, "right", input.right);
|
|
65
65
|
if (!right.ok)
|
|
66
|
-
return toCallToolResult(right, contract);
|
|
66
|
+
return server.delivery.toCallToolResult(right, contract);
|
|
67
67
|
const { record: leftRecord, capture: leftCapture } = left.value;
|
|
68
68
|
const { record: rightRecord, capture: rightCapture } = right.value;
|
|
69
69
|
const computed = await runDerivedOperation(context, contract.name, () => compareProcessCaptures(leftCapture, rightCapture, {
|
|
@@ -76,7 +76,7 @@ export const registerProcessComparisonTool = (server, session, contract, now = D
|
|
|
76
76
|
now,
|
|
77
77
|
}));
|
|
78
78
|
if (!computed.ok)
|
|
79
|
-
return toCallToolResult(computed, contract);
|
|
79
|
+
return server.delivery.toCallToolResult(computed, contract);
|
|
80
80
|
const comparison = computed.value;
|
|
81
81
|
const evidence = createEvidence(undefined, PROCESS_PROVIDER, {
|
|
82
82
|
predicateType: "rea.process-comparison",
|
|
@@ -99,8 +99,8 @@ export const registerProcessComparisonTool = (server, session, contract, now = D
|
|
|
99
99
|
});
|
|
100
100
|
const recordedSources = recordSessionEvidenceSources((evidence) => session.recordEvidence(evidence), [leftRecord, rightRecord]);
|
|
101
101
|
if (!recordedSources.ok)
|
|
102
|
-
return toCallToolResult(recordedSources, contract);
|
|
103
|
-
return toEvidenceToolResult(evidence, contract, recordDerivedEvidence(session, evidence, comparisonUnknownInput({
|
|
102
|
+
return server.delivery.toCallToolResult(recordedSources, contract);
|
|
103
|
+
return server.delivery.toEvidenceToolResult(evidence, contract, recordDerivedEvidence(session, evidence, comparisonUnknownInput({
|
|
104
104
|
left_evidence_id: leftRecord.evidence_id,
|
|
105
105
|
right_evidence_id: rightRecord.evidence_id,
|
|
106
106
|
comparison_evidence_id: evidence.evidence_id,
|
|
@@ -1,15 +1,14 @@
|
|
|
1
1
|
import { toolContract } from "../contracts/toolContracts.js";
|
|
2
2
|
import { logToolExecution } from "./toolLogging.js";
|
|
3
3
|
import { toolRegistrationOptions } from "./toolRegistrationOptions.js";
|
|
4
|
-
import { toCallToolResult, toEvidenceToolResult } from "./toolResult.js";
|
|
5
4
|
/** Bind recorded crash inspection to its named contract and session Evidence owner. */
|
|
6
5
|
export const registerRecordedCrashTools = (server, service, logger, recordEvidence) => {
|
|
7
6
|
const contract = toolContract("inspect_recorded_crash");
|
|
8
7
|
server.registerTool(contract.name, toolRegistrationOptions(contract), async (input, context) => {
|
|
9
8
|
const result = await logToolExecution(logger, contract.name, () => service.inspect(input, { signal: context.mcpReq.signal }));
|
|
10
9
|
if (!result.ok)
|
|
11
|
-
return toCallToolResult(result, contract);
|
|
10
|
+
return server.delivery.toCallToolResult(result, contract);
|
|
12
11
|
const recorded = recordEvidence?.(result.value);
|
|
13
|
-
return toEvidenceToolResult(result.value, contract, recorded);
|
|
12
|
+
return server.delivery.toEvidenceToolResult(result.value, contract, recorded);
|
|
14
13
|
});
|
|
15
14
|
};
|
|
@@ -2,7 +2,6 @@ import { readEvidenceBundle, writeEvidenceBundle, } from "../application/Evidenc
|
|
|
2
2
|
import { toolContract } from "../contracts/toolContracts.js";
|
|
3
3
|
import { ok } from "../domain/result.js";
|
|
4
4
|
import { toolRegistrationOptions } from "./toolRegistrationOptions.js";
|
|
5
|
-
import { toCallToolResult } from "./toolResult.js";
|
|
6
5
|
/** Register evidence bundle import and export tools. */
|
|
7
6
|
export const registerEvidenceTools = (registration) => {
|
|
8
7
|
registerExportEvidenceTool(registration);
|
|
@@ -10,37 +9,37 @@ export const registerEvidenceTools = (registration) => {
|
|
|
10
9
|
registerSnapshotEvidenceTool(registration);
|
|
11
10
|
};
|
|
12
11
|
const registerExportEvidenceTool = ({ server, session, exportContract, }) => {
|
|
13
|
-
server.registerTool(exportContract.name, toolRegistrationOptions(exportContract), async (input) => {
|
|
12
|
+
server.registerTool(exportContract.name, toolRegistrationOptions(exportContract), async (input, context) => {
|
|
14
13
|
const bundle = bundleForSerialization(session);
|
|
15
|
-
const written = await writeEvidenceBundle(bundle, input.path, input.overwrite);
|
|
14
|
+
const written = await writeEvidenceBundle(bundle, input.path, input.overwrite, context.mcpReq.signal);
|
|
16
15
|
return written.ok
|
|
17
|
-
? toCallToolResult(ok({
|
|
16
|
+
? server.delivery.toCallToolResult(ok({
|
|
18
17
|
path: written.value.path,
|
|
19
18
|
bytes: written.value.bytes,
|
|
20
19
|
records: bundle.records.length,
|
|
21
20
|
unknowns: bundle.unknowns.length,
|
|
22
21
|
}), exportContract)
|
|
23
|
-
: toCallToolResult(written, exportContract);
|
|
22
|
+
: server.delivery.toCallToolResult(written, exportContract);
|
|
24
23
|
});
|
|
25
24
|
};
|
|
26
25
|
const registerSnapshotEvidenceTool = ({ server, session, snapshotContract, }) => {
|
|
27
|
-
server.registerTool(snapshotContract.name, toolRegistrationOptions(snapshotContract), () => toCallToolResult(ok(bundleForSerialization(session)), snapshotContract));
|
|
26
|
+
server.registerTool(snapshotContract.name, toolRegistrationOptions(snapshotContract), () => server.delivery.toCallToolResult(ok(bundleForSerialization(session)), snapshotContract));
|
|
28
27
|
};
|
|
29
28
|
const registerImportEvidenceTool = ({ server, session, importContract, }) => {
|
|
30
29
|
server.registerTool(importContract.name, toolRegistrationOptions(importContract), async (input) => {
|
|
31
30
|
const path = input.path;
|
|
32
31
|
const loaded = await readEvidenceBundle(path);
|
|
33
32
|
if (!loaded.ok)
|
|
34
|
-
return toCallToolResult(loaded, importContract);
|
|
33
|
+
return server.delivery.toCallToolResult(loaded, importContract);
|
|
35
34
|
const retainedUnknownRevisions = new Set(bundleForSerialization(session).unknowns.map((unknown) => unknownRevisionKey(unknown)));
|
|
36
35
|
const imported = session.importEvidenceBundle(loaded.value);
|
|
37
36
|
return imported.ok
|
|
38
|
-
? toCallToolResult(ok({
|
|
37
|
+
? server.delivery.toCallToolResult(ok({
|
|
39
38
|
imported: imported.value,
|
|
40
39
|
unknowns_added: loaded.value.unknowns.filter((unknown) => !retainedUnknownRevisions.has(unknownRevisionKey(unknown))).length,
|
|
41
40
|
total: bundleForSerialization(session).records.length,
|
|
42
41
|
}), importContract)
|
|
43
|
-
: toCallToolResult(imported, importContract);
|
|
42
|
+
: server.delivery.toCallToolResult(imported, importContract);
|
|
44
43
|
});
|
|
45
44
|
};
|
|
46
45
|
const bundleForSerialization = (session) => session.evidenceBundleForSerialization?.() ?? session.exportEvidenceBundle();
|
|
@@ -49,15 +48,12 @@ const unknownRevisionKey = (unknown) => `${unknown.unknown_id}:${String(unknown.
|
|
|
49
48
|
const registerListUnknownsTool = ({ server, session, }) => {
|
|
50
49
|
const listContract = toolContract("list_unknowns");
|
|
51
50
|
server.registerTool(listContract.name, toolRegistrationOptions(listContract), (input) => {
|
|
52
|
-
const filters = input;
|
|
53
51
|
const all = session.listUnknowns({
|
|
54
|
-
...(
|
|
55
|
-
...(
|
|
56
|
-
|
|
57
|
-
: { severity: filters.severity }),
|
|
58
|
-
...(filters.domain === undefined ? {} : { domain: filters.domain }),
|
|
52
|
+
...(input.status === undefined ? {} : { status: input.status }),
|
|
53
|
+
...(input.severity === undefined ? {} : { severity: input.severity }),
|
|
54
|
+
...(input.domain === undefined ? {} : { domain: input.domain }),
|
|
59
55
|
});
|
|
60
|
-
return toCallToolResult(ok({
|
|
56
|
+
return server.delivery.toCallToolResult(ok({
|
|
61
57
|
items: all,
|
|
62
58
|
total: all.length,
|
|
63
59
|
}), listContract);
|
|
@@ -67,19 +63,19 @@ const registerRecordUnknownTool = ({ server, session, }) => {
|
|
|
67
63
|
const recordContract = toolContract("record_unknown");
|
|
68
64
|
server.registerTool(recordContract.name, toolRegistrationOptions(recordContract), (input) => {
|
|
69
65
|
const result = session.recordUnknown(input);
|
|
70
|
-
return toCallToolResult(result, recordContract);
|
|
66
|
+
return server.delivery.toCallToolResult(result, recordContract);
|
|
71
67
|
});
|
|
72
68
|
};
|
|
73
69
|
const registerUpdateUnknownTool = ({ server, session, }) => {
|
|
74
70
|
const updateContract = toolContract("update_unknown");
|
|
75
71
|
server.registerTool(updateContract.name, toolRegistrationOptions(updateContract), (input) => {
|
|
76
72
|
const result = session.updateUnknown(input);
|
|
77
|
-
return toCallToolResult(result, updateContract);
|
|
73
|
+
return server.delivery.toCallToolResult(result, updateContract);
|
|
78
74
|
});
|
|
79
75
|
};
|
|
80
76
|
const registerVerifyUnknownTool = ({ server, session, }) => {
|
|
81
77
|
const verifyContract = toolContract("verify_unknown_resolution");
|
|
82
|
-
server.registerTool(verifyContract.name, toolRegistrationOptions(verifyContract), (input) => toCallToolResult(session.verifyUnknownResolution(input.unknown_id), verifyContract));
|
|
78
|
+
server.registerTool(verifyContract.name, toolRegistrationOptions(verifyContract), (input) => server.delivery.toCallToolResult(session.verifyUnknownResolution(input.unknown_id), verifyContract));
|
|
83
79
|
};
|
|
84
80
|
export const registerUnknownTools = (registration) => {
|
|
85
81
|
registerListUnknownsTool(registration);
|
|
@@ -5,13 +5,12 @@ import { jsonObjectSchema } from "../domain/jsonValue.js";
|
|
|
5
5
|
import { createServerIdentity } from "../serverIdentity.js";
|
|
6
6
|
import { mcpClientMetadata } from "./mcpClientMetadata.js";
|
|
7
7
|
import { toolRegistrationOptions } from "./toolRegistrationOptions.js";
|
|
8
|
-
import { toCallToolResult } from "./toolResult.js";
|
|
9
8
|
import { err } from "../domain/result.js";
|
|
10
9
|
/** Register the read-only provider and target status operation. */
|
|
11
10
|
export const registerSessionStatusTool = (options) => {
|
|
12
11
|
const { server, session, contract, startedAt, availabilityPolicy, androidAnalysisAvailability, } = options;
|
|
13
12
|
server.registerTool(contract.name, toolRegistrationOptions(contract), async (input, context) => {
|
|
14
|
-
const { client, clientFeatures, protocolVersion } = mcpClientMetadata(context);
|
|
13
|
+
const { client, clientFeatures, protocolVersion } = mcpClientMetadata(context, server.server);
|
|
15
14
|
let androidAvailability;
|
|
16
15
|
try {
|
|
17
16
|
androidAvailability = await androidAnalysisAvailability(context.mcpReq.signal);
|
|
@@ -19,7 +18,7 @@ export const registerSessionStatusTool = (options) => {
|
|
|
19
18
|
catch (cause) {
|
|
20
19
|
if (!context.mcpReq.signal.aborted)
|
|
21
20
|
throw cause;
|
|
22
|
-
return toCallToolResult(err(new AnalysisCancelledError("binary_session")), contract);
|
|
21
|
+
return server.delivery.toCallToolResult(err(new AnalysisCancelledError("binary_session")), contract);
|
|
23
22
|
}
|
|
24
23
|
const status = session.status();
|
|
25
24
|
const statusObject = jsonObjectSchema.parse(status);
|
|
@@ -43,7 +42,7 @@ export const registerSessionStatusTool = (options) => {
|
|
|
43
42
|
...(client === undefined ? {} : { client }),
|
|
44
43
|
...(protocolVersion === undefined ? {} : { protocolVersion }),
|
|
45
44
|
});
|
|
46
|
-
return toCallToolResult({
|
|
45
|
+
return server.delivery.toCallToolResult({
|
|
47
46
|
ok: true,
|
|
48
47
|
value: projectSessionStatus({
|
|
49
48
|
status: statusObject,
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { z } from "zod";
|
|
2
1
|
import { getNavigationContext, inspectAddressContext, } from "../application/AnalysisContextQueries.js";
|
|
3
2
|
import { readAnalysisSnapshot } from "../application/binary/AnalysisSnapshotFiles.js";
|
|
4
3
|
import { createProcessCaptureEvidence } from "../application/process/ProcessEvidence.js";
|
|
@@ -19,7 +18,6 @@ import { registerSessionStatusTool } from "./registerSessionStatusTool.js";
|
|
|
19
18
|
import { sessionAvailabilityPolicy, } from "./sessionAvailabilityPolicy.js";
|
|
20
19
|
import { logToolExecution } from "./toolLogging.js";
|
|
21
20
|
import { toolRegistrationOptions } from "./toolRegistrationOptions.js";
|
|
22
|
-
import { toCallToolResult, toEvidenceToolResult } from "./toolResult.js";
|
|
23
21
|
const recordProcessResidualUnknowns = (session, evidence, residuals) => {
|
|
24
22
|
for (const residual of residuals) {
|
|
25
23
|
const unknown = session.recordUnknown({
|
|
@@ -48,7 +46,6 @@ const recordProcessResidualUnknowns = (session, evidence, residuals) => {
|
|
|
48
46
|
};
|
|
49
47
|
const registerProcessTools = ({ server, session, logger, captureContract, }) => {
|
|
50
48
|
server.registerTool(captureContract.name, toolRegistrationOptions(captureContract), async (input, context) => {
|
|
51
|
-
const scenario = input;
|
|
52
49
|
const progress = mcpProgressReporter(context);
|
|
53
50
|
await progress.report({
|
|
54
51
|
phase: captureContract.name,
|
|
@@ -56,7 +53,7 @@ const registerProcessTools = ({ server, session, logger, captureContract, }) =>
|
|
|
56
53
|
total: 1,
|
|
57
54
|
message: "started",
|
|
58
55
|
});
|
|
59
|
-
const captured = await logToolExecution(logger, captureContract.name, () => captureProcessScenario(
|
|
56
|
+
const captured = await logToolExecution(logger, captureContract.name, () => captureProcessScenario(input, context.mcpReq.signal));
|
|
60
57
|
await progress.report({
|
|
61
58
|
phase: captureContract.name,
|
|
62
59
|
completed: 1,
|
|
@@ -65,15 +62,15 @@ const registerProcessTools = ({ server, session, logger, captureContract, }) =>
|
|
|
65
62
|
terminal: true,
|
|
66
63
|
});
|
|
67
64
|
if (!captured.ok)
|
|
68
|
-
return toCallToolResult(captured, captureContract);
|
|
69
|
-
const evidence = createProcessCaptureEvidence(
|
|
65
|
+
return server.delivery.toCallToolResult(captured, captureContract);
|
|
66
|
+
const evidence = createProcessCaptureEvidence(input, captured.value);
|
|
70
67
|
const recorded = session.recordEvidence(evidence);
|
|
71
68
|
if (!recorded.ok)
|
|
72
|
-
return toCallToolResult(recorded, captureContract);
|
|
69
|
+
return server.delivery.toCallToolResult(recorded, captureContract);
|
|
73
70
|
const unknowns = recordProcessResidualUnknowns(session, evidence, captured.value.residual_unknowns);
|
|
74
71
|
if (!unknowns.ok)
|
|
75
|
-
return toCallToolResult(unknowns, captureContract);
|
|
76
|
-
return toEvidenceToolResult(evidence, captureContract, recorded);
|
|
72
|
+
return server.delivery.toCallToolResult(unknowns, captureContract);
|
|
73
|
+
return server.delivery.toEvidenceToolResult(evidence, captureContract, recorded);
|
|
77
74
|
});
|
|
78
75
|
};
|
|
79
76
|
const registerLifecycleTools = (registration) => {
|
|
@@ -95,7 +92,7 @@ const registerOpenLifecycleTool = ({ server, session, logger, openContract, }) =
|
|
|
95
92
|
if (input.snapshot_path !== undefined) {
|
|
96
93
|
const loaded = await readAnalysisSnapshot(input.snapshot_path);
|
|
97
94
|
if (!loaded.ok)
|
|
98
|
-
return toCallToolResult(loaded, openContract);
|
|
95
|
+
return server.delivery.toCallToolResult(loaded, openContract);
|
|
99
96
|
snapshot = loaded.value;
|
|
100
97
|
}
|
|
101
98
|
const opened = await logToolExecution(logger, openContract.name, () => session.open(input.path, {
|
|
@@ -107,30 +104,27 @@ const registerOpenLifecycleTool = ({ server, session, logger, openContract, }) =
|
|
|
107
104
|
...(snapshot === undefined ? {} : { snapshot }),
|
|
108
105
|
}));
|
|
109
106
|
return opened.ok
|
|
110
|
-
? toCallToolResult({
|
|
107
|
+
? server.delivery.toCallToolResult({
|
|
111
108
|
ok: true,
|
|
112
109
|
value: {
|
|
113
110
|
path: opened.value.path,
|
|
114
111
|
format: opened.value.format,
|
|
115
112
|
kind: opened.value.kind,
|
|
116
|
-
loaderArgs: z
|
|
117
|
-
.array(z.string())
|
|
118
|
-
.parse(session.openCompatibility().loaderArgs ?? []),
|
|
119
113
|
sha256: opened.value.sha256,
|
|
120
114
|
architecture: opened.value.architecture ?? null,
|
|
121
115
|
},
|
|
122
116
|
}, openContract)
|
|
123
|
-
: toCallToolResult(opened, openContract);
|
|
117
|
+
: server.delivery.toCallToolResult(opened, openContract);
|
|
124
118
|
});
|
|
125
119
|
};
|
|
126
120
|
const registerContextTools = (server, session) => {
|
|
127
121
|
const navigationContract = toolContract("get_navigation_context");
|
|
128
122
|
const addressContract = toolContract("inspect_address_context");
|
|
129
123
|
server.registerTool(navigationContract.name, toolRegistrationOptions(navigationContract), async (input, context) => {
|
|
130
|
-
return toCallToolResult(await getNavigationContext(session, input, context.mcpReq.signal), navigationContract);
|
|
124
|
+
return server.delivery.toCallToolResult(await getNavigationContext(session, input, context.mcpReq.signal), navigationContract);
|
|
131
125
|
});
|
|
132
126
|
server.registerTool(addressContract.name, toolRegistrationOptions(addressContract), async (input, context) => {
|
|
133
|
-
return toCallToolResult(await inspectAddressContext(session, input, context.mcpReq.signal), addressContract);
|
|
127
|
+
return server.delivery.toCallToolResult(await inspectAddressContext(session, input, context.mcpReq.signal), addressContract);
|
|
134
128
|
});
|
|
135
129
|
};
|
|
136
130
|
export const registerSessionTools = (server, session, logger, options = {}) => {
|
|
@@ -180,6 +174,6 @@ export const registerSessionTools = (server, session, logger, options = {}) => {
|
|
|
180
174
|
const missingAndroidAvailability = async () => ({
|
|
181
175
|
status: "unavailable",
|
|
182
176
|
code: "not_configured",
|
|
183
|
-
reason: "Set REA_JADX_MCP_JAR to a caller-supplied jadx-headless-mcp 0.7.1 JAR and provide a full JDK on Linux or
|
|
177
|
+
reason: "Set REA_JADX_MCP_JAR to a caller-supplied jadx-headless-mcp 0.7.1 JAR and provide a full JDK on Linux, macOS, or Windows x64 with its matching bundled native controls.",
|
|
184
178
|
diagnostics: { configured: false },
|
|
185
179
|
});
|
|
@@ -1,15 +1,14 @@
|
|
|
1
1
|
import { toolContract } from "../contracts/toolContracts.js";
|
|
2
2
|
import { logToolExecution } from "./toolLogging.js";
|
|
3
3
|
import { toolRegistrationOptions } from "./toolRegistrationOptions.js";
|
|
4
|
-
import { toCallToolResult, toEvidenceToolResult } from "./toolResult.js";
|
|
5
4
|
/** Bind the module relationship workflow to its exact canonical contract. */
|
|
6
5
|
export const registerWebModuleTool = (server, service, logger, recordEvidence) => {
|
|
7
6
|
const contract = toolContract("trace_web_module_imports");
|
|
8
7
|
server.registerTool(contract.name, toolRegistrationOptions(contract), async (input, context) => {
|
|
9
8
|
const result = await logToolExecution(logger, contract.name, () => service.trace(input, { signal: context.mcpReq.signal }));
|
|
10
9
|
if (!result.ok)
|
|
11
|
-
return toCallToolResult(result, contract);
|
|
10
|
+
return server.delivery.toCallToolResult(result, contract);
|
|
12
11
|
const recorded = recordEvidence?.(result.value);
|
|
13
|
-
return toEvidenceToolResult(result.value, contract, recorded);
|
|
12
|
+
return server.delivery.toEvidenceToolResult(result.value, contract, recorded);
|
|
14
13
|
});
|
|
15
14
|
};
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { toolContract } from "../contracts/toolContracts.js";
|
|
2
2
|
import { logToolExecution } from "./toolLogging.js";
|
|
3
3
|
import { toolRegistrationOptions } from "./toolRegistrationOptions.js";
|
|
4
|
-
import { toCallToolResult, toEvidenceToolResult } from "./toolResult.js";
|
|
5
4
|
/** Bind historical inspection to its named contract and caller-owned Evidence writer. */
|
|
6
5
|
export const registerWebNetworkCaptureTool = (server, service, logger, recordEvidence) => {
|
|
7
6
|
const contract = toolContract("inspect_web_network_capture");
|
|
@@ -19,8 +18,8 @@ export const registerWebNetworkCaptureTool = (server, service, logger, recordEvi
|
|
|
19
18
|
server.registerTool(contract.name, { ...registration, inputSchema }, async (input, context) => {
|
|
20
19
|
const result = await logToolExecution(logger, contract.name, () => service.inspect(input, { signal: context.mcpReq.signal }));
|
|
21
20
|
if (!result.ok)
|
|
22
|
-
return toCallToolResult(result, contract);
|
|
21
|
+
return server.delivery.toCallToolResult(result, contract);
|
|
23
22
|
const recorded = recordEvidence?.(result.value);
|
|
24
|
-
return toEvidenceToolResult(result.value, contract, recorded);
|
|
23
|
+
return server.delivery.toEvidenceToolResult(result.value, contract, recorded);
|
|
25
24
|
});
|
|
26
25
|
};
|
|
@@ -2,7 +2,6 @@ import { toolContract } from "../contracts/toolContracts.js";
|
|
|
2
2
|
import { mcpProgressReporter } from "./mcpProgress.js";
|
|
3
3
|
import { logToolExecution } from "./toolLogging.js";
|
|
4
4
|
import { toolRegistrationOptions } from "./toolRegistrationOptions.js";
|
|
5
|
-
import { toCallToolResult, toEvidenceToolResult } from "./toolResult.js";
|
|
6
5
|
/** Bind distinct runtime operations to named contracts and the session's Evidence owner. */
|
|
7
6
|
export const registerWebRuntimeTools = (server, service, logger, recordEvidence) => {
|
|
8
7
|
const execution = toolContract("observe_web_execution");
|
|
@@ -13,15 +12,15 @@ export const registerWebRuntimeTools = (server, service, logger, recordEvidence)
|
|
|
13
12
|
progress: mcpProgressReporter(context),
|
|
14
13
|
}));
|
|
15
14
|
if (!result.ok)
|
|
16
|
-
return toCallToolResult(result, execution);
|
|
15
|
+
return server.delivery.toCallToolResult(result, execution);
|
|
17
16
|
const recorded = recordEvidence?.(result.value);
|
|
18
|
-
return toEvidenceToolResult(result.value, execution, recorded);
|
|
17
|
+
return server.delivery.toEvidenceToolResult(result.value, execution, recorded);
|
|
19
18
|
});
|
|
20
19
|
server.registerTool(listeners.name, toolRegistrationOptions(listeners), async (input, context) => {
|
|
21
20
|
const result = await logToolExecution(logger, listeners.name, () => service.inspect(input, { signal: context.mcpReq.signal }));
|
|
22
21
|
if (!result.ok)
|
|
23
|
-
return toCallToolResult(result, listeners);
|
|
22
|
+
return server.delivery.toCallToolResult(result, listeners);
|
|
24
23
|
const recorded = recordEvidence?.(result.value);
|
|
25
|
-
return toEvidenceToolResult(result.value, listeners, recorded);
|
|
24
|
+
return server.delivery.toEvidenceToolResult(result.value, listeners, recorded);
|
|
26
25
|
});
|
|
27
26
|
};
|