rea-agents 3.1.0 → 3.2.1
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 +72 -95
- package/bridge/ghidra/ReaGhidraBridge.java +609 -841
- package/bridge/hopper_bridge.py +99 -344
- package/dist/application/AbortablePromise.js +6 -3
- package/dist/application/AnalysisSnapshotCache.js +0 -1
- package/dist/application/AnalysisSnapshotFiles.js +7 -7
- package/dist/application/AndroidApplicationService.js +1 -1
- package/dist/application/AppleApplicationService.js +1 -1
- package/dist/application/ArtifactExtraction.js +35 -54
- package/dist/application/ArtifactExtractionDestination.js +17 -0
- package/dist/application/ArtifactGraphConstruction.js +2 -17
- package/dist/application/ArtifactInventory/classify.js +2 -6
- package/dist/application/ArtifactInventory/hash.js +2 -20
- package/dist/application/ArtifactInventory/scanCanonical.js +8 -12
- package/dist/application/ArtifactInventory/scanReader.js +69 -51
- package/dist/application/ArtifactInventory.js +6 -14
- package/dist/application/AuthorizedArtifactInventory.js +3 -13
- package/dist/application/BinarySession.js +41 -13
- package/dist/application/BinarySessionComposition.js +0 -11
- package/dist/application/BinarySessionOpen.js +2 -1
- package/dist/application/BinarySessionRecords.js +5 -93
- package/dist/application/BinarySessionStatus.js +5 -16
- package/dist/application/BinaryTargetResolver.js +216 -0
- package/dist/application/BrowserEvidence.js +42 -58
- package/dist/application/BrowserObservationService.js +3 -6
- package/dist/application/BrowserScenarioCaptureService.js +3 -6
- package/dist/application/BrowserScenarioEvidence.js +3 -3
- package/dist/application/CallPathTracing.js +2 -36
- package/dist/application/CapabilityInventory.js +10 -15
- package/dist/application/ClientConfigurationDocument.js +27 -0
- package/dist/application/ClientRegistrationStatus.js +16 -13
- package/dist/application/CommandShimReplay.js +14 -1
- package/dist/application/DirectAnalysis.js +22 -46
- package/dist/application/DirectAnalysisStatus.js +5 -61
- package/dist/application/Doctor.js +11 -32
- package/dist/application/DoctorDiagnostics.js +1 -2
- package/dist/application/DoctorScope.js +1 -1
- package/dist/application/ElectronActiveEvidence.js +3 -8
- package/dist/application/ElectronActiveObservationService.js +3 -6
- package/dist/application/ElectronBoundaryAnalysis.js +7 -8
- package/dist/application/ElectronBoundaryGraphContext.js +1 -1
- package/dist/application/ElectronBoundaryGraphIpc.js +3 -3
- package/dist/application/ElectronBoundaryGraphNative.js +1 -2
- package/dist/application/ElectronBoundaryGraphWindows.js +6 -8
- package/dist/application/ElectronEvidence.js +4 -7
- package/dist/application/ElectronObservationService.js +5 -9
- package/dist/application/EnhancedLiteralTracing.js +42 -65
- package/dist/application/EnhancedTools.js +76 -44
- package/dist/application/EvidenceBundleCommands.js +11 -11
- package/dist/application/EvidenceBundleFiles.js +9 -15
- package/dist/application/EvidenceLedger.js +6 -41
- package/dist/application/FilesystemSnapshot.js +2 -3
- package/dist/application/InterfaceBuilderAnalysis.js +266 -0
- package/dist/application/InventoryProjectionEvidence.js +4 -2
- package/dist/application/InvestigationProviders.js +1 -1
- package/dist/application/JavaScriptApplicationEvidence.js +2 -5
- package/dist/application/JavaScriptApplicationEvidenceGraph.js +6 -10
- package/dist/application/JavaScriptApplicationService.js +6 -29
- package/dist/application/JavaScriptApplicationWorkflowEvidence.js +5 -5
- package/dist/application/JavaScriptApplicationWorkflowService.js +0 -8
- package/dist/application/JavaScriptArtifactAnalysis.js +38 -127
- package/dist/application/JavaScriptArtifactFiles.js +67 -107
- package/dist/application/JavaScriptArtifactGraphAccumulator.js +0 -7
- package/dist/application/JavaScriptArtifactGraphBuilder.js +7 -58
- package/dist/application/JavaScriptArtifactGraphBundlers.js +1 -6
- package/dist/application/JavaScriptArtifactGraphContext.js +12 -39
- package/dist/application/JavaScriptArtifactGraphDocuments.js +4 -11
- package/dist/application/JavaScriptArtifactGraphEvidence.js +0 -14
- package/dist/application/JavaScriptArtifactGraphFindings.js +3 -3
- package/dist/application/JavaScriptArtifactGraphStructure.js +16 -17
- package/dist/application/JavaScriptArtifactPathResolution.js +61 -49
- package/dist/application/JavaScriptArtifactReconstruction.js +5 -10
- package/dist/application/JavaScriptArtifactReconstructionInput.js +2 -14
- package/dist/application/JavaScriptJsonModules.js +2 -2
- package/dist/application/JavaScriptModuleRelationships.js +22 -27
- package/dist/application/JavaScriptReplayPlanning.js +9 -3
- package/dist/application/JavaScriptReplayService.js +6 -32
- package/dist/application/JavaScriptReturnShapeProjection.js +12 -42
- package/dist/application/JavaScriptRuntimeObservationEvidence.js +7 -8
- package/dist/application/JavaScriptRuntimeObservationService.js +4 -8
- package/dist/application/JavaScriptRuntimeReconciliationEvidence.js +2 -3
- package/dist/application/JavaScriptSemanticGraphBuilder.js +11 -41
- package/dist/application/JavaScriptSemanticGraphConstruction.js +5 -29
- package/dist/application/JavaScriptSemanticGraphEvidence.js +1 -1
- package/dist/application/JavaScriptSemanticGraphFingerprintProjection.js +1 -1
- package/dist/application/JavaScriptSemanticGraphFlowProjection.js +0 -13
- package/dist/application/JavaScriptSemanticGraphProjection.js +1 -3
- package/dist/application/JavaScriptSemanticTraceService.js +1 -10
- package/dist/application/JsonFiles.js +79 -0
- package/dist/application/LinuxHopper.js +11 -9
- package/dist/application/LoopbackReplay.js +26 -23
- package/dist/application/LoopbackReplayRecorder.js +29 -1
- package/dist/application/ManagedApplicationGraphService.js +1 -2
- package/dist/application/ManagedMemberComparisonService.js +11 -41
- package/dist/application/ManagedNativeVerificationService.js +1 -2
- package/dist/application/ManagedReconstructionService.js +1 -1
- package/dist/application/ManagedRuntimeCorrelationService.js +5 -8
- package/dist/application/NativeApiInspection.js +2 -7
- package/dist/application/NativeUiActionTrace.js +394 -0
- package/dist/application/NodeRuntimeCharacterizationService.js +3 -7
- package/dist/application/PermissionAuthority.js +15 -7
- package/dist/application/PermissionFailure.js +5 -0
- package/dist/application/ProcessCaptureAuthority.js +5 -7
- package/dist/application/ProcessCaptureJournal.js +3 -2
- package/dist/application/ProcessCaptureLifecycle.js +5 -12
- package/dist/application/ProcessCheckpoints.js +29 -11
- package/dist/application/ProcessCli.js +6 -16
- package/dist/application/ProcessEvidence.js +5 -7
- package/dist/application/ProcessHarness.js +52 -17
- package/dist/application/ProcessReactiveCoordinator.js +2 -4
- package/dist/application/ProcessReactiveEffects.js +9 -3
- package/dist/application/ProcessReactiveHarness.js +13 -7
- package/dist/application/ProcessSampling.js +2 -4
- package/dist/application/ProcessTimer.js +39 -0
- package/dist/application/ProjectPermissionStore.js +39 -96
- package/dist/application/RealHopperAssertions.js +20 -66
- package/dist/application/ReconstructionCoverageService.js +12 -58
- package/dist/application/ReconstructionObligationAuthority.js +2 -2
- package/dist/application/ReconstructionObligationCandidates.js +4 -4
- package/dist/application/ReconstructionObligationLedgerEvaluation.js +8 -15
- package/dist/application/ReconstructionObligationLedgerProjection.js +3 -7
- package/dist/application/ReconstructionObligationLedgerService.js +19 -38
- package/dist/application/ReferenceSourceImport.js +19 -45
- package/dist/application/ReferenceSourceImportEntries.js +2 -4
- package/dist/application/ReferenceSourceImportPolicy.js +5 -32
- package/dist/application/ReferenceSourceImportTypes.js +0 -16
- package/dist/application/RuntimeExecutableDiagnostics.js +55 -29
- package/dist/application/SessionProviderRouter.js +2 -2
- package/dist/application/Setup.js +1 -3
- package/dist/application/SetupClientConfiguration.js +22 -93
- package/dist/application/SetupRegistrationEnvironment.js +0 -7
- package/dist/application/StoreFileLock.js +119 -0
- package/dist/application/TerminalRenderer.js +2 -3
- package/dist/application/Uninstall.js +9 -14
- package/dist/application/UnknownEvidence.js +1 -1
- package/dist/artifacts/ArtifactPaths.js +2 -5
- package/dist/artifacts/ArtifactProvider.js +36 -58
- package/dist/artifacts/DirectoryArtifactReader.js +13 -8
- package/dist/artifacts/MachOSliceArtifactReader.js +1 -5
- package/dist/artifacts/NativeDmgArtifactReader.js +11 -11
- package/dist/artifacts/NibArchive.js +269 -0
- package/dist/artifacts/SafeOutputTree.js +15 -24
- package/dist/browser/BrowserProcessStartup.js +1 -2
- package/dist/browser/CdpAuthorizedMainFrame.js +16 -0
- package/dist/browser/CdpBrowserProvider.js +3 -13
- package/dist/browser/CdpCanonicalJsonDigest.js +9 -0
- package/dist/browser/CdpCaptureDocuments.js +28 -76
- package/dist/browser/CdpCaptureEventBodyShapes.js +13 -33
- package/dist/browser/CdpCaptureEventHandlers.js +22 -87
- package/dist/browser/CdpCaptureEvents.js +2 -8
- package/dist/browser/CdpCaptureStorage.js +9 -20
- package/dist/browser/CdpCaptureStorageFingerprints.js +85 -98
- package/dist/browser/CdpCaptureValues.js +21 -21
- package/dist/browser/CdpConnection.js +10 -25
- package/dist/browser/CdpElectronInspection.js +26 -50
- package/dist/browser/CdpElectronProvider.js +10 -35
- package/dist/browser/CdpElectronScriptEvents.js +8 -16
- package/dist/browser/CdpElectronScripts.js +6 -35
- package/dist/browser/CdpElectronWorkers.js +6 -10
- package/dist/browser/CdpEndpoint.js +25 -41
- package/dist/browser/CdpObservationSession.js +14 -26
- package/dist/browser/CdpPageCapture.js +34 -48
- package/dist/browser/CdpPageCaptureScripts.js +1 -19
- package/dist/browser/CdpPageCaptureWorkers.js +6 -10
- package/dist/browser/CdpSafeMetadata.js +19 -22
- package/dist/browser/CdpScreenshot.js +3 -5
- package/dist/browser/CdpTargetSession.js +1 -2
- package/dist/browser/CdpWebMcpDiscovery.js +13 -22
- package/dist/browser/ElectronFileScope.js +8 -19
- package/dist/browser/JavaScriptRuntimeScope.js +9 -14
- package/dist/browser/PlaywrightBrowserScenarioProvider.js +31 -64
- package/dist/browser/PlaywrightElectronActiveActions.js +54 -69
- package/dist/browser/PlaywrightElectronActiveProvider.js +14 -34
- package/dist/browser/PlaywrightExecutionBoundary.js +16 -5
- package/dist/browser/PlaywrightScenarioActions.js +3 -7
- package/dist/browser/PlaywrightScenarioArtifacts.js +23 -92
- package/dist/browser/PlaywrightScenarioBrowser.js +3 -5
- package/dist/browser/PlaywrightScenarioEvents.js +45 -94
- package/dist/browser/PlaywrightScenarioSession.js +14 -30
- package/dist/browser/PngVisualDiff.js +22 -14
- package/dist/browser/SensitiveTextCapture.js +0 -17
- package/dist/browser/V8InspectorCaptureProjection.js +7 -8
- package/dist/browser/V8InspectorEndpoint.js +12 -14
- package/dist/browser/V8InspectorProvider.js +20 -61
- package/dist/browser/WebSourceMapFetcher.js +56 -176
- package/dist/catalogIdentity.js +0 -54
- package/dist/cli/artifactCommands.js +49 -77
- package/dist/cli/coreAnalysisCommands.js +83 -133
- package/dist/cli/javascriptApplicationAnalysis.js +1 -9
- package/dist/cli/managedCommands.js +5 -270
- package/dist/cli/setupCommands.js +3 -12
- package/dist/cli/utilityCommands.js +7 -41
- package/dist/cli.js +0 -2
- package/dist/cliApplicationCommands.js +42 -112
- package/dist/cliBrowserAdvancedCommands.js +10 -106
- package/dist/cliBrowserCommands.js +15 -127
- package/dist/cliBrowserContext.js +30 -0
- package/dist/cliCommandNames.js +4 -5
- package/dist/cliElectronCommands.js +8 -72
- package/dist/cliEvidenceCommands.js +8 -77
- package/dist/cliJavaScriptRuntimeCommands.js +9 -91
- package/dist/cliJsonInput.js +4 -14
- package/dist/cliObservationOptions.js +11 -96
- package/dist/cliPolicyCommands.js +2 -17
- package/dist/cliProcessCommands.js +3 -3
- package/dist/cliSetup.js +0 -13
- package/dist/config/browserScenario.js +2 -2
- package/dist/config/environment.js +0 -9
- package/dist/config/parseConfig.js +1 -33
- package/dist/config/parsers.js +6 -27
- package/dist/config/passiveObservation.js +7 -77
- package/dist/config/permissions.js +0 -7
- package/dist/contracts/analysisSearchContract.js +2 -5
- package/dist/contracts/applicationToolContracts.js +56 -109
- package/dist/contracts/applicationWorkflowInputContracts.js +27 -102
- package/dist/contracts/artifactComparisonExample.js +58 -60
- package/dist/contracts/artifactToolContracts.js +20 -67
- package/dist/contracts/browserScenarioToolContracts.js +6 -51
- package/dist/contracts/browserToolContracts.js +8 -73
- package/dist/contracts/electronToolContracts.js +8 -108
- package/dist/contracts/enhancedInputs.js +23 -54
- package/dist/contracts/errorSchemas.js +0 -1
- package/dist/contracts/functionComparisonExample.js +10 -24
- package/dist/contracts/functionInstructionContract.js +1 -3
- package/dist/contracts/functionWorkflowToolContracts.js +2 -2
- package/dist/contracts/hopperMemoryContracts.js +3 -3
- package/dist/contracts/investigationExamples.js +14 -11
- package/dist/contracts/javascriptApplicationWorkflowExamples.js +12 -19
- package/dist/contracts/javascriptRuntimeObservationToolContracts.js +2 -20
- package/dist/contracts/javascriptRuntimeReconciliationExample.js +45 -12
- package/dist/contracts/managedToolContracts.js +6 -95
- package/dist/contracts/managedWorkflowExamples.js +77 -128
- package/dist/contracts/managedWorkflowToolContracts.js +51 -77
- package/dist/contracts/nativeToolContracts.js +7 -11
- package/dist/contracts/processCaptureExample.js +2 -69
- package/dist/contracts/promptContracts.js +49 -67
- package/dist/contracts/providerSelection.js +0 -1
- package/dist/contracts/reconstructionReadinessExample.js +1 -6
- package/dist/contracts/sessionStatusContract.js +1 -17
- package/dist/contracts/sessionToolSchemas.js +6 -15
- package/dist/contracts/toolContractExamples.js +11 -11
- package/dist/contracts/toolContractHelpers.js +0 -4
- package/dist/contracts/toolContracts.js +60 -71
- package/dist/contracts/toolEffects.js +5 -13
- package/dist/contracts/toolOutputSchemaGroups.js +37 -91
- package/dist/contracts/toolOutputSchemaPrimitives.js +16 -56
- package/dist/contracts/toolSchemaMetadata.js +8 -19
- package/dist/contracts/unknownContractExamples.js +0 -2
- package/dist/domain/analysisErrorPresentation.js +46 -54
- package/dist/domain/analysisErrorProjection.js +28 -37
- package/dist/domain/analysisProfile.js +3 -31
- package/dist/domain/analysisSnapshot.js +3 -12
- package/dist/domain/androidApplication.js +15 -54
- package/dist/domain/appleApplication.js +24 -67
- package/dist/domain/artifactComparison.js +11 -29
- package/dist/domain/artifactGraph.js +14 -44
- package/dist/domain/artifactInspection.js +38 -69
- package/dist/domain/artifactInventoryEvidence.js +27 -21
- package/dist/domain/binaryTarget.js +2 -221
- package/dist/domain/browserCaptureComparison.js +47 -24
- package/dist/domain/browserObservation.js +28 -193
- package/dist/domain/browserObservationSchemas.js +5 -23
- package/dist/domain/browserScenario.js +11 -14
- package/dist/domain/browserScenarioCapture.js +11 -12
- package/dist/domain/browserScenarioCaptureValues.js +146 -84
- package/dist/domain/browserScenarioDiff.js +2 -59
- package/dist/domain/browserScenarioDiffEvidence.js +51 -0
- package/dist/domain/browserScenarioDiffValues.js +21 -38
- package/dist/domain/browserScenarioValues.js +80 -109
- package/dist/domain/browserSession.js +4 -7
- package/dist/domain/bundleComparison.js +6 -32
- package/dist/domain/bytecodeProvider.js +20 -19
- package/dist/domain/callPath.js +47 -167
- package/dist/domain/callPathSchemas.js +79 -0
- package/dist/domain/changedBehavior.js +34 -60
- package/dist/domain/completionLedgerGeneration.js +8 -14
- package/dist/domain/conformancePackage.js +126 -97
- package/dist/domain/conformanceReplay.js +36 -8
- package/dist/domain/conformanceTrustGate.js +23 -14
- package/dist/domain/customProtocolCapture.js +1 -1
- package/dist/domain/electronActiveObservation.js +70 -103
- package/dist/domain/electronObservation.js +14 -80
- package/dist/domain/electronStaticAnalysisBrowser.js +36 -46
- package/dist/domain/electronStaticAnalysisIpc.js +38 -14
- package/dist/domain/electronStaticAnalysisNative.js +1 -8
- package/dist/domain/electronStaticAnalysisValues.js +10 -17
- package/dist/domain/errors.js +33 -54
- package/dist/domain/eventProcessTree.js +20 -12
- package/dist/domain/evidence.js +2 -10
- package/dist/domain/evidenceBundle.js +3 -5
- package/dist/domain/evidenceCompletionLedger.js +6 -8
- package/dist/domain/functionComparison.js +4 -14
- package/dist/domain/functionComparisonNormalization.js +4 -11
- package/dist/domain/functionComparisonResults.js +25 -15
- package/dist/domain/functionComparisonSchemas.js +49 -33
- package/dist/domain/functionDossierEvidence.js +31 -156
- package/dist/domain/hopperStartupFailure.js +1 -1
- package/dist/domain/hopperValues.js +15 -136
- package/dist/domain/interfaceBuilderGraph.js +654 -0
- package/dist/domain/javascriptApplicationAnalysis.js +8 -112
- package/dist/domain/javascriptApplicationChangeGraph.js +22 -82
- package/dist/domain/javascriptApplicationEvidenceSchemas.js +59 -47
- package/dist/domain/javascriptApplicationGraph.js +3 -13
- package/dist/domain/javascriptApplicationGraphSchemas.js +12 -34
- package/dist/domain/javascriptApplicationVersionComparison.js +26 -30
- package/dist/domain/javascriptApplicationVersionComparisonSchemas.js +123 -68
- package/dist/domain/javascriptApplicationVersionItems.js +120 -53
- package/dist/domain/javascriptApplicationVersionKeys.js +24 -11
- package/dist/domain/javascriptAstFingerprint.js +25 -58
- package/dist/domain/javascriptAstValues.js +9 -0
- package/dist/domain/javascriptExportInstrumentation.js +2 -4
- package/dist/domain/javascriptExportShapeComparison.js +6 -7
- package/dist/domain/javascriptExportShapeComparisonSchemas.js +68 -75
- package/dist/domain/javascriptExportShapeSelection.js +17 -19
- package/dist/domain/javascriptFeatureSeed.js +20 -12
- package/dist/domain/javascriptFeatureTrace.js +13 -67
- package/dist/domain/javascriptFeatureTraceSchemas.js +24 -52
- package/dist/domain/javascriptFeatureTraversal.js +1 -44
- package/dist/domain/javascriptNativeHandoff.js +1 -1
- package/dist/domain/javascriptReplay.js +24 -41
- package/dist/domain/javascriptRuntimeLoadState.js +3 -8
- package/dist/domain/javascriptRuntimeObservation.js +42 -103
- package/dist/domain/javascriptRuntimeReconciliation.js +1 -3
- package/dist/domain/javascriptRuntimeReconciliationActive.js +8 -17
- package/dist/domain/javascriptRuntimeReconciliationGraph.js +10 -23
- package/dist/domain/javascriptRuntimeReconciliationMatching.js +18 -12
- package/dist/domain/javascriptRuntimeReconciliationParsing.js +16 -45
- package/dist/domain/javascriptRuntimeReconciliationResult.js +4 -5
- package/dist/domain/javascriptRuntimeReconciliationRuntime.js +8 -12
- package/dist/domain/javascriptRuntimeReconciliationSchemas.js +33 -48
- package/dist/domain/javascriptRuntimeStaticCandidates.js +3 -3
- package/dist/domain/javascriptSemanticAnalysis.js +12 -45
- package/dist/domain/javascriptSemanticAsyncEffects.js +1 -9
- package/dist/domain/javascriptSemanticCallResolution.js +6 -16
- package/dist/domain/javascriptSemanticCalls.js +5 -32
- package/dist/domain/javascriptSemanticChildProcesses.js +1 -11
- package/dist/domain/javascriptSemanticCoverage.js +11 -0
- package/dist/domain/javascriptSemanticDataEffectHelpers.js +1 -8
- package/dist/domain/javascriptSemanticDataEffects.js +1 -11
- package/dist/domain/javascriptSemanticFingerprints.js +3 -5
- package/dist/domain/javascriptSemanticGraphSchemas.js +25 -51
- package/dist/domain/javascriptSemanticGraphSerialization.js +2 -13
- package/dist/domain/javascriptSemanticIr.js +1 -29
- package/dist/domain/javascriptSemanticObjects.js +1 -5
- package/dist/domain/javascriptSemanticPrimitives.js +2 -9
- package/dist/domain/javascriptSemanticProjection.js +0 -18
- package/dist/domain/javascriptSemanticPromises.js +9 -16
- package/dist/domain/javascriptSemanticProvenance.js +16 -19
- package/dist/domain/javascriptSemanticQuery.js +17 -139
- package/dist/domain/javascriptSemanticQueryAssessment.js +9 -37
- package/dist/domain/javascriptSemanticQueryIdentity.js +2 -23
- package/dist/domain/javascriptSemanticQuerySchemas.js +14 -107
- package/dist/domain/javascriptSemanticResources.js +1 -6
- package/dist/domain/javascriptSemanticReturns.js +10 -27
- package/dist/domain/javascriptSemanticValueTypes.js +1 -0
- package/dist/domain/javascriptSemanticValues.js +44 -62
- package/dist/domain/javascriptStaticAnalysis.js +21 -43
- package/dist/domain/javascriptStaticAnalysisBundler.js +34 -93
- package/dist/domain/javascriptStaticAnalysisCalls.js +17 -16
- package/dist/domain/javascriptStaticAnalysisFindings.js +3 -19
- package/dist/domain/javascriptStaticAnalysisHelpers.js +47 -88
- package/dist/domain/javascriptStaticAnalysisState.js +1 -5
- package/dist/domain/javascriptStaticAnalysisTypes.js +1 -0
- package/dist/domain/jsonShape.js +7 -33
- package/dist/domain/localPath.js +7 -0
- package/dist/domain/managedApplicationGraph.js +9 -41
- package/dist/domain/managedApplicationGraphCoverage.js +24 -156
- package/dist/domain/managedApplicationGraphNodes.js +10 -13
- package/dist/domain/managedArtifact.js +14 -27
- package/dist/domain/managedMemberComparison.js +90 -92
- package/dist/domain/managedMemberComparisonCoverage.js +11 -33
- package/dist/domain/managedMemberComparisonItems.js +221 -0
- package/dist/domain/managedMemberComparisonMatch.js +8 -208
- package/dist/domain/managedNativeVerification.js +3 -6
- package/dist/domain/managedNativeVerificationMatch.js +55 -59
- package/dist/domain/managedNativeVerificationSchemas.js +83 -47
- package/dist/domain/managedReconstruction.js +19 -23
- package/dist/domain/managedRuntimeCorrelation.js +6 -9
- package/dist/domain/nativeApiBoundary.js +2 -7
- package/dist/domain/nativeInspection.js +0 -2
- package/dist/domain/nativeInvestigationGraph.js +351 -0
- package/dist/domain/nativeValueFlow.js +61 -0
- package/dist/domain/nodeRuntimeCharacterization.js +1 -5
- package/dist/domain/objcSwiftMetadata.js +254 -0
- package/dist/domain/peInspection.js +1 -1
- package/dist/domain/permissionPolicy.js +13 -0
- package/dist/domain/processCapture.js +76 -113
- package/dist/domain/processCaptureExample.js +68 -0
- package/dist/domain/processCaptureParsing.js +21 -0
- package/dist/domain/processCaptureReactiveSchema.js +68 -0
- package/dist/domain/processCaptureValidation.js +1 -7
- package/dist/domain/processComparison.js +3 -12
- package/dist/domain/processReactiveMatching.js +29 -50
- package/dist/domain/processReactiveRuntime.js +4 -8
- package/dist/domain/processReactiveScenario.js +28 -94
- package/dist/domain/processReactiveScenarioPreflight.js +5 -30
- package/dist/domain/processReactiveTransition.js +33 -18
- package/dist/domain/processScenario.js +56 -90
- package/dist/domain/processTraceComparison.js +0 -8
- package/dist/domain/processTraceEvaluation.js +14 -4
- package/dist/domain/processTraceSpecification.js +11 -17
- package/dist/domain/protocolCapture.js +3 -3
- package/dist/domain/reconstructionCoverage.js +62 -129
- package/dist/domain/reconstructionCoverageEvaluation.js +17 -17
- package/dist/domain/reconstructionObligationLedgerSchemas.js +45 -72
- package/dist/domain/reconstructionReadiness.js +1 -2
- package/dist/domain/reconstructionReadinessSchemas.js +36 -38
- package/dist/domain/reconstructionUnknowns.js +3 -3
- package/dist/domain/reconstructionVerification.js +13 -47
- package/dist/domain/reconstructionVerificationSchemas.js +50 -38
- package/dist/domain/referenceSourceGraph.js +53 -61
- package/dist/domain/referenceSourceImportParsing.js +1 -5
- package/dist/domain/replayMachine.js +19 -31
- package/dist/domain/replayMachineRun.js +15 -63
- package/dist/domain/replayMachineRuntime.js +41 -41
- package/dist/domain/replayMachineValues.js +84 -0
- package/dist/domain/residualUnknown.js +25 -30
- package/dist/domain/runtimeCharacterization.js +15 -16
- package/dist/domain/runtimeIdentification.js +48 -47
- package/dist/domain/sourceToBundleComparison.js +9 -85
- package/dist/domain/sourceToBundleComparisonSchemas.js +17 -42
- package/dist/domain/sourceToBundleSignals.js +4 -15
- package/dist/domain/staticRuntimeCorrelation.js +37 -49
- package/dist/domain/symbolAnalysis.js +10 -19
- package/dist/domain/unicodeCodePointOrder.js +12 -0
- package/dist/domain/webBundleAnalysis.js +70 -99
- package/dist/domain/webBundleAnalyzer.js +2 -4
- package/dist/domain/webBundleAnalyzerAst.js +0 -13
- package/dist/domain/webBundleAnalyzerInspection.js +26 -52
- package/dist/domain/webBundleAnalyzerResult.js +7 -24
- package/dist/domain/webCaptureDiff.js +33 -73
- package/dist/domain/webCaptureDiffSchemas.js +86 -0
- package/dist/domain/webContentArtifact.js +1 -10
- package/dist/domain/webMcpDiscovery.js +3 -14
- package/dist/domain/webScreenshot.js +58 -34
- package/dist/domain/zipPackageFormat.js +7 -0
- package/dist/dotnet/ManagedArtifactInspector.js +17 -50
- package/dist/dotnet/ManagedMemberInspector.js +27 -58
- package/dist/dotnet/ManagedMemberInspectorCore.js +14 -51
- package/dist/dotnet/ManagedMemberInstructionDecoder.js +2 -2
- package/dist/dotnet/ManagedMemberRows.js +16 -16
- package/dist/dotnet/ManagedMetadataHeaps.js +26 -8
- package/dist/dotnet/ManagedMetadataInventory.js +21 -30
- package/dist/dotnet/ManagedMetadataInventoryRows.js +57 -63
- package/dist/dotnet/ManagedMetadataLayout.js +3 -5
- package/dist/dotnet/ManagedMethodBodyReader.js +5 -30
- package/dist/dotnet/ManagedNativeBoundaryHelpers.js +19 -49
- package/dist/dotnet/ManagedNativeBoundaryInspector.js +13 -41
- package/dist/dotnet/ManagedPeReader.js +2 -2
- package/dist/dotnet/ManagedStaticProvider.js +13 -71
- package/dist/generatedMcpToolCatalog.js +1 -1
- package/dist/generatedPackageMetadata.js +1 -1
- package/dist/ghidra/GhidraAnalysisProfile.js +3 -8
- package/dist/ghidra/GhidraClient.js +4 -12
- package/dist/ghidra/GhidraClientWire.js +9 -5
- package/dist/ghidra/GhidraDefaults.js +0 -18
- package/dist/ghidra/GhidraDiagnostics.js +0 -2
- package/dist/ghidra/GhidraDoctor.js +16 -12
- package/dist/ghidra/GhidraFunctionValues.js +65 -108
- package/dist/ghidra/GhidraInstallation.js +98 -42
- package/dist/ghidra/GhidraInventoryValues.js +16 -85
- package/dist/ghidra/GhidraLauncher.js +0 -8
- package/dist/ghidra/GhidraProvider.js +15 -22
- package/dist/ghidra/GhidraProviderCapabilities.js +6 -47
- package/dist/ghidra/GhidraRequestQueue.js +6 -30
- package/dist/ghidra/GhidraResponseBuffer.js +1 -7
- package/dist/ghidra/GhidraSessionValues.js +0 -2
- package/dist/ghidra/GhidraTransport.js +4 -7
- package/dist/ghidra/protocol.js +2 -2
- package/dist/hopper/BridgeLauncher.js +112 -36
- package/dist/hopper/HopperAnalysisProfile.js +1 -1
- package/dist/hopper/HopperCleanup.js +6 -3
- package/dist/hopper/HopperClient.js +4 -7
- package/dist/hopper/HopperProcessDiagnostic.js +2 -2
- package/dist/hopper/HopperProvider.js +0 -16
- package/dist/hopper/HopperRequestQueue.js +21 -40
- package/dist/hopper/HopperResponseStream.js +1 -9
- package/dist/hopper/HopperSessionValues.js +3 -2
- package/dist/hopper/HopperTargetLease.js +119 -0
- package/dist/hopper/LinuxPrivateDisplayDiagnostic.js +24 -31
- package/dist/hopper/LinuxPrivateDisplayProbe.js +5 -16
- package/dist/hopper/protocol.js +6 -4
- package/dist/main/reload.js +0 -3
- package/dist/main/shutdown.js +1 -1
- package/dist/main/state.js +0 -9
- package/dist/main/transport.js +0 -5
- package/dist/mcpDoctor.js +25 -45
- package/dist/native/CommandRunner.js +18 -25
- package/dist/native/NativeMacOSProvider.js +13 -38
- package/dist/native/NativeMachoInspection.js +1 -1
- package/dist/process/BoundedFileBytes.js +17 -0
- package/dist/process/ExecFileOutput.js +11 -0
- package/dist/process/PendingOperations.js +8 -6
- package/dist/process/ProcessOwnership.js +3 -2
- package/dist/process/ProcessOwnershipObservation.js +0 -1
- package/dist/process/ProviderProcess.js +7 -28
- package/dist/reference/ReferenceSourceReader.js +8 -24
- package/dist/reference/ReferenceSourceReaderEntries.js +11 -39
- package/dist/reference/ReferenceSourceReaderFile.js +13 -31
- package/dist/reference/ReferenceSourceReaderPaths.js +3 -18
- package/dist/reference/ReferenceSourceReaderValidate.js +3 -6
- package/dist/replay/JavaScriptReplayWorker.js +3 -5
- package/dist/replay/LinuxJavaScriptReplayRunner.js +33 -29
- package/dist/replay/LinuxJavaScriptReplaySandbox.js +0 -19
- package/dist/replay/LinuxRuntimeClosure.js +1 -3
- package/dist/replay/ReplayOutcome.js +1 -3
- package/dist/replay/ReplayProcessLifecycle.js +32 -7
- package/dist/replay/ReplaySeccompFile.js +29 -0
- package/dist/replay/ReplayWorkerProtocol.js +0 -2
- package/dist/replay/SystemJavaScriptReplayHost.js +45 -74
- package/dist/server/ProcessCaptureElicitation.js +4 -8
- package/dist/server/createServer.js +6 -44
- package/dist/server/promptCompletion.js +37 -61
- package/dist/server/recordDerivedEvidence.js +1 -1
- package/dist/server/registerApplicationTools/characterization.js +4 -8
- package/dist/server/registerApplicationTools/compareExportShapes.js +5 -10
- package/dist/server/registerApplicationTools/compareSourceToBundle.js +6 -10
- package/dist/server/registerApplicationTools/compareVersions.js +5 -10
- package/dist/server/registerApplicationTools/controlledReplay.js +3 -5
- package/dist/server/registerApplicationTools/coverage.js +6 -71
- package/dist/server/registerApplicationTools/helpers.js +1 -13
- package/dist/server/registerApplicationTools/obligationLedger.js +3 -2
- package/dist/server/registerApplicationTools/traceFeature.js +5 -9
- package/dist/server/registerApplicationTools/traceSemantics.js +5 -8
- package/dist/server/registerApplicationTools.js +0 -2
- package/dist/server/registerArtifactComparisonTool.js +23 -27
- package/dist/server/registerBrowserScenarioTool.js +4 -4
- package/dist/server/registerBrowserTools.js +5 -8
- package/dist/server/registerBundleComparisonTool.js +5 -7
- package/dist/server/registerCloseLifecycleTool.js +2 -16
- package/dist/server/registerElectronTools.js +10 -29
- package/dist/server/registerEnhancedTools.js +10 -11
- package/dist/server/registerEvidenceTools.js +15 -22
- package/dist/server/registerFunctionComparisonTool.js +30 -25
- package/dist/server/registerInvestigationTools/helpers.js +3 -32
- package/dist/server/registerInvestigationTools.js +20 -116
- package/dist/server/registerJavaScriptRuntimeObservationTools.js +6 -4
- package/dist/server/registerManagedWorkflowTools/compareManagedMembers.js +15 -17
- package/dist/server/registerManagedWorkflowTools/evidence.js +19 -35
- package/dist/server/registerManagedWorkflowTools/importManagedReconstruction.js +3 -8
- package/dist/server/registerManagedWorkflowTools/planManagedRuntimeCorrelation.js +3 -8
- package/dist/server/registerManagedWorkflowTools/projectManagedApplicationGraph.js +10 -14
- package/dist/server/registerManagedWorkflowTools/verifyManagedNativeBoundaries.js +9 -15
- package/dist/server/registerOfficialTools.js +1 -43
- package/dist/server/registerProcessComparisonTool.js +33 -23
- package/dist/server/registerPrompts.js +19 -17
- package/dist/server/registerSessionRecordTools.js +10 -156
- package/dist/server/registerSessionStatusTool.js +6 -69
- package/dist/server/registerSessionTools.js +10 -51
- package/dist/server/sessionAvailabilityPolicy.js +0 -2
- package/dist/server/sessionEvidence.js +9 -15
- package/dist/server/sessionToolPolicies.js +0 -8
- package/dist/server/toolResult.js +14 -50
- package/dist/serverIdentity.js +0 -20
- package/install.sh +1 -1
- package/package.json +11 -7
- package/scripts/electron-active-hook.cjs +23 -55
- package/scripts/hopper-demo-x11.py +13 -32
- package/skills/reverse-engineer-anything/SKILL.md +47 -12
- package/skills/reverse-engineer-anything/references/evidence-workflows.md +6 -4
- package/skills/reverse-engineer-anything/references/javascript-applications.md +13 -13
- package/skills/reverse-engineer-anything/references/native-and-artifacts.md +12 -8
- package/dist/application/ApplicationWorkflowEvidenceResolver.js +0 -188
- package/dist/application/BoundedJsonFiles.js +0 -86
- package/dist/application/CrossVersionInventory.js +0 -129
- package/dist/application/CrossVersionInvestigation.js +0 -301
- package/dist/application/CrossVersionInvestigationCollections.js +0 -23
- package/dist/application/CrossVersionInvestigationEvidence.js +0 -64
- package/dist/application/CrossVersionInvestigationReplay.js +0 -170
- package/dist/application/DeferredFileAuthorization.js +0 -61
- package/dist/application/DoctorProjection.js +0 -43
- package/dist/application/EnhancedToolPagination.js +0 -22
- package/dist/application/EvidenceReferenceResolver.js +0 -26
- package/dist/application/InvestigationWorkspaceStore.js +0 -204
- package/dist/application/ProcessPairedExperiment.js +0 -72
- package/dist/application/ReconstructionCoverageWorkspaceStore.js +0 -31
- package/dist/application/ReconstructionReadinessService.js +0 -48
- package/dist/cliInvestigationCommands.js +0 -173
- package/dist/domain/boundedCartesianProjection.js +0 -15
- package/dist/domain/investigationWorkspace.js +0 -347
- package/dist/domain/jsonLimits.js +0 -26
- package/dist/domain/knownPageCoverage.js +0 -29
- package/dist/domain/processPairedExperiment.js +0 -128
- package/dist/server/javascriptApplicationResult.js +0 -106
- package/dist/server/permissionFailure.js +0 -12
- package/dist/server/registerApplicationTools/readiness.js +0 -50
- package/dist/server/registerEvidenceResources.js +0 -315
- package/dist/server/registerJavaScriptApplicationGraphResource.js +0 -65
- package/dist/server/registerReconstructionObligationLedgerResource.js +0 -32
- package/dist/server/registerReconstructionReadinessResource.js +0 -32
|
@@ -1,76 +1,74 @@
|
|
|
1
|
+
import { createHash } from "node:crypto";
|
|
2
|
+
import canonicalize from "canonicalize";
|
|
1
3
|
import { createEvidence } from "../domain/evidence.js";
|
|
2
4
|
import { jsonValueSchema } from "../domain/jsonValue.js";
|
|
3
5
|
const inventory = (digit) => {
|
|
4
6
|
const sha = digit.repeat(64);
|
|
5
|
-
const artifactId = `art_${sha}`;
|
|
6
|
-
const occurrenceId = `occ_${
|
|
7
|
+
const artifactId = `art_${digestCanonical({ sha256: sha })}`;
|
|
8
|
+
const occurrenceId = `occ_${digestCanonical({ root: artifactId })}`;
|
|
9
|
+
const nodes = [
|
|
10
|
+
{
|
|
11
|
+
artifact_id: artifactId,
|
|
12
|
+
kind: "resource",
|
|
13
|
+
format: "file",
|
|
14
|
+
sha256: sha,
|
|
15
|
+
size: 1,
|
|
16
|
+
media_type: null,
|
|
17
|
+
architecture: null,
|
|
18
|
+
executable: false,
|
|
19
|
+
content_state: "materialized",
|
|
20
|
+
limitations: [],
|
|
21
|
+
},
|
|
22
|
+
];
|
|
23
|
+
const occurrences = [
|
|
24
|
+
{
|
|
25
|
+
occurrence_id: occurrenceId,
|
|
26
|
+
artifact_id: artifactId,
|
|
27
|
+
parent_occurrence_id: null,
|
|
28
|
+
logical_path: ".",
|
|
29
|
+
entry_kind: "file",
|
|
30
|
+
declared_size: 1,
|
|
31
|
+
compressed_size: null,
|
|
32
|
+
executable: false,
|
|
33
|
+
encrypted: false,
|
|
34
|
+
hash_status: "verified",
|
|
35
|
+
source_location: null,
|
|
36
|
+
limitations: [],
|
|
37
|
+
},
|
|
38
|
+
];
|
|
39
|
+
const graphSha256 = digestCanonical({
|
|
40
|
+
nodes,
|
|
41
|
+
occurrences,
|
|
42
|
+
edges: [],
|
|
43
|
+
integrity_contradictions: [],
|
|
44
|
+
});
|
|
7
45
|
return jsonValueSchema.parse({
|
|
8
46
|
manifest: {
|
|
9
|
-
|
|
10
|
-
|
|
47
|
+
manifest_id: `agm_${digestCanonical({
|
|
48
|
+
root_artifact_id: artifactId,
|
|
49
|
+
graph_sha256: graphSha256,
|
|
50
|
+
})}`,
|
|
11
51
|
root_artifact_id: artifactId,
|
|
12
52
|
root_sha256: sha,
|
|
13
53
|
root_format: "file",
|
|
14
|
-
graph_sha256:
|
|
15
|
-
node_count:
|
|
16
|
-
occurrence_count:
|
|
54
|
+
graph_sha256: graphSha256,
|
|
55
|
+
node_count: nodes.length,
|
|
56
|
+
occurrence_count: occurrences.length,
|
|
17
57
|
edge_count: 0,
|
|
18
58
|
},
|
|
19
|
-
nodes
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
artifact_id: artifactId,
|
|
23
|
-
kind: "resource",
|
|
24
|
-
format: "file",
|
|
25
|
-
sha256: sha,
|
|
26
|
-
size: 1,
|
|
27
|
-
media_type: null,
|
|
28
|
-
architecture: null,
|
|
29
|
-
executable: false,
|
|
30
|
-
content_state: "materialized",
|
|
31
|
-
limitations: [],
|
|
32
|
-
},
|
|
33
|
-
],
|
|
34
|
-
offset: 0,
|
|
35
|
-
limit: 100,
|
|
36
|
-
total: 1,
|
|
37
|
-
next_offset: null,
|
|
38
|
-
},
|
|
39
|
-
occurrences: {
|
|
40
|
-
items: [
|
|
41
|
-
{
|
|
42
|
-
occurrence_id: occurrenceId,
|
|
43
|
-
artifact_id: artifactId,
|
|
44
|
-
parent_occurrence_id: null,
|
|
45
|
-
logical_path: ".",
|
|
46
|
-
entry_kind: "file",
|
|
47
|
-
declared_size: 1,
|
|
48
|
-
compressed_size: null,
|
|
49
|
-
executable: false,
|
|
50
|
-
encrypted: false,
|
|
51
|
-
hash_status: "verified",
|
|
52
|
-
source_location: null,
|
|
53
|
-
limitations: [],
|
|
54
|
-
},
|
|
55
|
-
],
|
|
56
|
-
offset: 0,
|
|
57
|
-
limit: 100,
|
|
58
|
-
total: 1,
|
|
59
|
-
next_offset: null,
|
|
60
|
-
},
|
|
61
|
-
edges: { items: [], offset: 0, limit: 100, total: 0, next_offset: null },
|
|
62
|
-
limits: {
|
|
63
|
-
max_entries: 100,
|
|
64
|
-
max_total_bytes: 1024,
|
|
65
|
-
max_entry_bytes: 1024,
|
|
66
|
-
max_compression_ratio: 10,
|
|
67
|
-
max_depth: 10,
|
|
68
|
-
max_path_bytes: 256,
|
|
69
|
-
},
|
|
59
|
+
nodes,
|
|
60
|
+
occurrences,
|
|
61
|
+
edges: [],
|
|
70
62
|
provenance: [],
|
|
71
63
|
limitations: [],
|
|
72
64
|
});
|
|
73
65
|
};
|
|
66
|
+
const digestCanonical = (value) => {
|
|
67
|
+
const encoded = canonicalize(value);
|
|
68
|
+
if (encoded === undefined)
|
|
69
|
+
throw new TypeError("Artifact example is not canonical JSON");
|
|
70
|
+
return createHash("sha256").update(encoded).digest("hex");
|
|
71
|
+
};
|
|
74
72
|
const provider = {
|
|
75
73
|
id: "rea-artifact",
|
|
76
74
|
name: "REA artifact graph",
|
|
@@ -78,14 +76,14 @@ const provider = {
|
|
|
78
76
|
};
|
|
79
77
|
/** Canonical complete inputs used to advertise artifact comparison. */
|
|
80
78
|
export const ARTIFACT_COMPARISON_EXAMPLE = {
|
|
81
|
-
left: createEvidence(
|
|
79
|
+
left: createEvidence({ path: "fixture-left", sha256: "0".repeat(64), format: "file" }, provider, {
|
|
82
80
|
operation: "inventory_artifact",
|
|
83
81
|
parameters: {},
|
|
84
82
|
result: inventory("0"),
|
|
85
83
|
confidence: "observed",
|
|
86
84
|
authority: "shipped-artifact",
|
|
87
85
|
}),
|
|
88
|
-
right: createEvidence(
|
|
86
|
+
right: createEvidence({ path: "fixture-right", sha256: "1".repeat(64), format: "file" }, provider, {
|
|
89
87
|
operation: "inventory_artifact",
|
|
90
88
|
parameters: {},
|
|
91
89
|
result: inventory("1"),
|
|
@@ -1,93 +1,37 @@
|
|
|
1
|
-
import { isAbsolute } from "node:path";
|
|
2
1
|
import { z } from "zod";
|
|
3
2
|
import { artifactOutputSchemas } from "./toolOutputSchemas.js";
|
|
4
3
|
import { jsonValueSchema } from "../domain/jsonValue.js";
|
|
5
4
|
import { toolContractMetadata } from "./toolEffects.js";
|
|
6
5
|
import { requireOutputSchema } from "./toolOutputSchemaPrimitives.js";
|
|
7
|
-
import { artifactInspectionLimitsSchema } from "../domain/artifactInspection.js";
|
|
8
|
-
const pageInput = {
|
|
9
|
-
node_offset: z.number().int().min(0).default(0),
|
|
10
|
-
node_limit: z.number().int().min(1).max(500).default(100),
|
|
11
|
-
occurrence_offset: z.number().int().min(0).default(0),
|
|
12
|
-
occurrence_limit: z.number().int().min(1).max(500).default(100),
|
|
13
|
-
edge_offset: z.number().int().min(0).default(0),
|
|
14
|
-
edge_limit: z.number().int().min(1).max(500).default(100),
|
|
15
|
-
};
|
|
16
|
-
const traversalLimitsInput = {
|
|
17
|
-
max_entries: z.number().int().min(1).max(1_000_000).default(10_000),
|
|
18
|
-
max_total_bytes: z
|
|
19
|
-
.number()
|
|
20
|
-
.int()
|
|
21
|
-
.min(1)
|
|
22
|
-
.max(Number.MAX_SAFE_INTEGER)
|
|
23
|
-
.default(1_073_741_824),
|
|
24
|
-
max_entry_bytes: z
|
|
25
|
-
.number()
|
|
26
|
-
.int()
|
|
27
|
-
.min(1)
|
|
28
|
-
.max(Number.MAX_SAFE_INTEGER)
|
|
29
|
-
.default(268_435_456),
|
|
30
|
-
max_compression_ratio: z.number().min(1).max(100_000).default(1_000),
|
|
31
|
-
max_depth: z.number().int().min(0).max(100).default(20),
|
|
32
|
-
max_path_bytes: z.number().int().min(1).max(65_535).default(4_096),
|
|
33
|
-
};
|
|
34
6
|
const integrityInput = {
|
|
35
7
|
fail: {
|
|
36
8
|
integrity_policy: z.literal("fail").default("fail"),
|
|
37
9
|
integrity_continue_approved: z.literal(false).default(false),
|
|
38
|
-
max_integrity_mismatches: z.number().int().min(1).max(100).default(10),
|
|
39
10
|
},
|
|
40
11
|
continue: {
|
|
41
12
|
integrity_policy: z.literal("record-and-continue"),
|
|
42
13
|
integrity_continue_approved: z.literal(true),
|
|
43
|
-
max_integrity_mismatches: z.number().int().min(1).max(100).default(10),
|
|
44
14
|
},
|
|
45
15
|
};
|
|
46
16
|
const artifactInventoryFacts = {
|
|
47
17
|
native_mount_approved: z.boolean().default(false),
|
|
48
|
-
...pageInput,
|
|
49
|
-
...traversalLimitsInput,
|
|
50
18
|
};
|
|
51
19
|
/** Exact caller boundary for deterministic artifact inventory. */
|
|
52
20
|
export const artifactInventoryInputSchema = z.union([
|
|
53
21
|
z.object({ ...artifactInventoryFacts, ...integrityInput.fail }),
|
|
54
22
|
z.object({ ...artifactInventoryFacts, ...integrityInput.continue }),
|
|
55
23
|
]);
|
|
56
|
-
/**
|
|
57
|
-
export const artifactExtractionInputSchema = z.
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
.min(1)
|
|
62
|
-
.max(4_096)
|
|
63
|
-
.refine(isAbsolute, "Extraction output root must be absolute"),
|
|
64
|
-
occurrence_ids: z
|
|
65
|
-
.array(z.string().regex(/^occ_[a-f0-9]{64}$/u))
|
|
66
|
-
.min(1)
|
|
67
|
-
.max(500),
|
|
68
|
-
offset: z.number().int().min(0).default(0),
|
|
69
|
-
limit: z.number().int().min(1).max(500).default(100),
|
|
70
|
-
...traversalLimitsInput,
|
|
24
|
+
/** Extraction needs no selector: it materializes every regular child file. */
|
|
25
|
+
export const artifactExtractionInputSchema = z.strictObject({});
|
|
26
|
+
/** Provider input after the local permission boundary chooses its destination. */
|
|
27
|
+
export const artifactExtractionExecutionSchema = z.strictObject({
|
|
28
|
+
output_root: z.string().min(1),
|
|
71
29
|
});
|
|
72
|
-
/** Bounded provider-neutral inspection using one atomic inventory substep. */
|
|
73
|
-
const artifactInspectionFacts = {
|
|
74
|
-
native_mount_approved: z.boolean().default(false),
|
|
75
|
-
...artifactInspectionLimitsSchema.shape,
|
|
76
|
-
...traversalLimitsInput,
|
|
77
|
-
};
|
|
78
|
-
export const artifactInspectionInputSchema = z.union([
|
|
79
|
-
z.object({ ...artifactInspectionFacts, ...integrityInput.fail }),
|
|
80
|
-
z.object({ ...artifactInspectionFacts, ...integrityInput.continue }),
|
|
81
|
-
]);
|
|
82
30
|
const exampleInputSchema = z.record(z.string(), jsonValueSchema);
|
|
83
31
|
const examples = {
|
|
84
|
-
inventory_artifact: {},
|
|
85
32
|
inspect_artifact: {},
|
|
86
|
-
extract_artifact: {
|
|
87
|
-
|
|
88
|
-
output_root: "/tmp/rea-extracted",
|
|
89
|
-
occurrence_ids: [`occ_${"0".repeat(64)}`],
|
|
90
|
-
},
|
|
33
|
+
extract_artifact: {},
|
|
34
|
+
decode_interface_builder: {},
|
|
91
35
|
};
|
|
92
36
|
const artifact = (name, description, inputSchema) => {
|
|
93
37
|
const outputSchema = requireOutputSchema(artifactOutputSchemas, name);
|
|
@@ -106,9 +50,18 @@ const artifact = (name, description, inputSchema) => {
|
|
|
106
50
|
],
|
|
107
51
|
};
|
|
108
52
|
};
|
|
109
|
-
/** Artifact-graph inventory and
|
|
53
|
+
/** Artifact-graph inventory and safe extraction contracts. */
|
|
110
54
|
export const ARTIFACT_TOOL_CONTRACTS = [
|
|
111
|
-
artifact("
|
|
112
|
-
artifact("
|
|
113
|
-
artifact("
|
|
55
|
+
artifact("inspect_artifact", "Inspect an active archive or application package in one call. Returns the complete content-addressed artifact graph, source Evidence, observations, relationships, integrity contradictions, hypotheses, unexplored branches, limitations, and next probes inline. It does not extract files; use extract_artifact to materialize its regular contents.", artifactInventoryInputSchema),
|
|
56
|
+
artifact("extract_artifact", "Extract all regular files from the active archive or application package into a fresh temporary directory chosen by REA. The result includes its location. Rejects traversal and symlink escapes, never overwrites, enforces archive integrity checks, and verifies cleanup.", artifactExtractionInputSchema),
|
|
57
|
+
artifact("decode_interface_builder", "Decode compiled storyboard and nib archives inside the active Apple app bundle, including keyed property lists and NIBArchive object tables, into a bounded object, hierarchy, and connection graph. This is static archive parsing; unrecognized archive classes and unresolved code handlers remain explicit unknowns.", z.strictObject({
|
|
58
|
+
max_documents: z.number().int().min(1).max(64).default(64),
|
|
59
|
+
max_objects: z.number().int().min(1).max(20_000).default(20_000),
|
|
60
|
+
max_connections: z.number().int().min(1).max(40_000).default(40_000),
|
|
61
|
+
})),
|
|
62
|
+
];
|
|
63
|
+
/** Provider operations; inventory remains an internal primitive of inspection. */
|
|
64
|
+
export const ARTIFACT_ANALYSIS_OPERATIONS = [
|
|
65
|
+
"inventory_artifact",
|
|
66
|
+
...ARTIFACT_TOOL_CONTRACTS.map(({ name }) => name),
|
|
114
67
|
];
|
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
import { toolContractMetadata } from "./toolEffects.js";
|
|
2
2
|
import { evidenceResultOf } from "./toolOutputSchemas.js";
|
|
3
|
-
import {
|
|
3
|
+
import { browserScenarioInputSchema } from "../domain/browserScenario.js";
|
|
4
4
|
import { browserScenarioCaptureSchema } from "../domain/browserScenarioCapture.js";
|
|
5
5
|
const example = {
|
|
6
|
-
schema_version: 1,
|
|
7
6
|
browser: {
|
|
8
7
|
mode: "launch",
|
|
9
8
|
executable_path: "/opt/chromium/chrome",
|
|
@@ -13,66 +12,22 @@ const example = {
|
|
|
13
12
|
},
|
|
14
13
|
start_url: { url: "https://app.example.test/", query: [] },
|
|
15
14
|
allowed_origins: ["https://app.example.test"],
|
|
16
|
-
environment: {
|
|
17
|
-
viewport: { width: 1_280, height: 720, device_scale_factor: 1 },
|
|
18
|
-
locale: "en-US",
|
|
19
|
-
timezone: "UTC",
|
|
20
|
-
color_scheme: "light",
|
|
21
|
-
reduced_motion: "reduce",
|
|
22
|
-
service_workers: "block",
|
|
23
|
-
},
|
|
24
15
|
actions: [
|
|
25
16
|
{
|
|
26
|
-
step_id: "
|
|
27
|
-
action: "
|
|
28
|
-
|
|
29
|
-
state: "visible",
|
|
17
|
+
step_id: "settle",
|
|
18
|
+
action: "wait_for_timeout",
|
|
19
|
+
duration_ms: 250,
|
|
30
20
|
},
|
|
31
21
|
],
|
|
32
|
-
storage: { cookies: [], local_storage: [], session_storage: [] },
|
|
33
|
-
request_replay: { mode: "disabled" },
|
|
34
|
-
secrets: [],
|
|
35
|
-
redaction: {
|
|
36
|
-
secret_values: "replace-with-secret-reference",
|
|
37
|
-
query_parameter_names: [],
|
|
38
|
-
header_names: [
|
|
39
|
-
"authorization",
|
|
40
|
-
"cookie",
|
|
41
|
-
"proxy-authorization",
|
|
42
|
-
"set-cookie",
|
|
43
|
-
],
|
|
44
|
-
},
|
|
45
|
-
capture: {
|
|
46
|
-
after_each_step: ["screenshot", "url", "accessibility"],
|
|
47
|
-
at_end: ["dom", "history", "storage"],
|
|
48
|
-
events: ["console", "page-errors", "network", "websockets"],
|
|
49
|
-
},
|
|
50
|
-
limits: {
|
|
51
|
-
max_duration_ms: 60_000,
|
|
52
|
-
action_timeout_ms: 5_000,
|
|
53
|
-
navigation_timeout_ms: 10_000,
|
|
54
|
-
max_events: 2_000,
|
|
55
|
-
max_frames: 100,
|
|
56
|
-
max_workers: 20,
|
|
57
|
-
max_popups: 10,
|
|
58
|
-
max_websockets: 100,
|
|
59
|
-
max_dom_nodes: 10_000,
|
|
60
|
-
max_accessibility_nodes: 10_000,
|
|
61
|
-
max_screenshots: 16,
|
|
62
|
-
max_screenshot_bytes: 4_194_304,
|
|
63
|
-
max_storage_entries: 256,
|
|
64
|
-
max_total_metadata_bytes: 4_194_304,
|
|
65
|
-
},
|
|
66
|
-
approved: true,
|
|
67
22
|
};
|
|
68
23
|
/** Controlled browser scenario contract shared by MCP and catalog generation. */
|
|
69
24
|
export const BROWSER_SCENARIO_TOOL_CONTRACTS = [
|
|
70
25
|
{
|
|
71
26
|
name: "capture_browser_scenario",
|
|
72
27
|
...toolContractMetadata("capture_browser_scenario"),
|
|
73
|
-
description: "Run
|
|
28
|
+
description: "Run a controlled browser scenario when passive observation cannot exercise the application. Launch an approved executable or connect to an approved loopback CDP target, declare the allowed origins, and provide actions. Environment, empty storage, disabled request replay, redaction, and a URL-only final capture are defaults; provide secrets, initial storage, request replay, or additional artifacts when needed. Actions run until completion or cancellation unless timeout_ms is set. Results are returned inline.",
|
|
74
29
|
kind: "browser-provider",
|
|
75
|
-
inputSchema:
|
|
30
|
+
inputSchema: browserScenarioInputSchema,
|
|
76
31
|
outputSchema: evidenceResultOf(browserScenarioCaptureSchema),
|
|
77
32
|
examples: [
|
|
78
33
|
{ title: "Capture a deterministic browser scenario", input: example },
|
|
@@ -38,7 +38,6 @@ const scenarioArtifacts = {
|
|
|
38
38
|
storage: { state: "not_requested" },
|
|
39
39
|
};
|
|
40
40
|
const exampleScenarioCapture = () => ({
|
|
41
|
-
schema_version: 1,
|
|
42
41
|
browser: {
|
|
43
42
|
mode: "connect",
|
|
44
43
|
process_ownership: "external",
|
|
@@ -92,7 +91,7 @@ export const BROWSER_TOOL_CONTRACTS = [
|
|
|
92
91
|
{
|
|
93
92
|
name: "list_browser_targets",
|
|
94
93
|
...toolContractMetadata("list_browser_targets"),
|
|
95
|
-
description: "List
|
|
94
|
+
description: "List every page target from an approved user-owned loopback Chrome DevTools Protocol endpoint whose current URL matches an approved exact origin. URL credentials, query values, and fragments are redacted.",
|
|
96
95
|
kind: "browser-provider",
|
|
97
96
|
inputSchema: listBrowserTargetsInputSchema,
|
|
98
97
|
outputSchema: listOutputSchema,
|
|
@@ -102,9 +101,6 @@ export const BROWSER_TOOL_CONTRACTS = [
|
|
|
102
101
|
input: {
|
|
103
102
|
cdp_endpoint: endpoint,
|
|
104
103
|
allowed_origins: [origin],
|
|
105
|
-
approved: true,
|
|
106
|
-
offset: 0,
|
|
107
|
-
limit: 100,
|
|
108
104
|
},
|
|
109
105
|
},
|
|
110
106
|
],
|
|
@@ -112,7 +108,7 @@ export const BROWSER_TOOL_CONTRACTS = [
|
|
|
112
108
|
{
|
|
113
109
|
name: "inspect_web_page",
|
|
114
110
|
...toolContractMetadata("inspect_web_page"),
|
|
115
|
-
description: "Passively inspect one approved page target through CDP without evaluating JavaScript, navigating, clicking, closing, or mutating the page. Returns
|
|
111
|
+
description: "Passively inspect one approved page target through CDP without evaluating JavaScript, navigating, clicking, closing, or mutating the page. Returns DOM structure, accessibility, scripts, resources, attach-window network and console metadata, workers, and redacted storage inventory as Evidence.",
|
|
116
112
|
kind: "browser-provider",
|
|
117
113
|
inputSchema: inspectWebPageInputSchema,
|
|
118
114
|
outputSchema: inspectionOutputSchema,
|
|
@@ -122,43 +118,7 @@ export const BROWSER_TOOL_CONTRACTS = [
|
|
|
122
118
|
input: {
|
|
123
119
|
cdp_endpoint: endpoint,
|
|
124
120
|
allowed_origins: [origin],
|
|
125
|
-
approved: true,
|
|
126
121
|
target_id: "TARGET_ID_FROM_LIST_BROWSER_TARGETS",
|
|
127
|
-
observation_ms: 500,
|
|
128
|
-
include_accessibility_text: false,
|
|
129
|
-
include_console_text: false,
|
|
130
|
-
console_text_approved: false,
|
|
131
|
-
include_json_body_shapes: false,
|
|
132
|
-
json_body_schema_approved: false,
|
|
133
|
-
include_websocket_shapes: false,
|
|
134
|
-
websocket_shape_approved: false,
|
|
135
|
-
include_script_sources: false,
|
|
136
|
-
include_storage_keys: false,
|
|
137
|
-
include_storage_fingerprints: false,
|
|
138
|
-
limits: {
|
|
139
|
-
max_frames: 200,
|
|
140
|
-
max_dom_nodes: 2_000,
|
|
141
|
-
max_ax_nodes: 2_000,
|
|
142
|
-
max_ax_text_field_bytes: 1_024,
|
|
143
|
-
max_total_ax_text_bytes: 65_536,
|
|
144
|
-
max_scripts: 200,
|
|
145
|
-
max_resources: 2_000,
|
|
146
|
-
max_workers: 500,
|
|
147
|
-
max_storage_keys: 1_000,
|
|
148
|
-
max_script_source_bytes: 1_048_576,
|
|
149
|
-
max_total_script_source_bytes: 4_194_304,
|
|
150
|
-
max_network_events: 1_000,
|
|
151
|
-
max_console_events: 200,
|
|
152
|
-
max_console_text_field_bytes: 1_024,
|
|
153
|
-
max_total_console_text_bytes: 65_536,
|
|
154
|
-
max_json_body_bytes: 1_048_576,
|
|
155
|
-
max_total_json_body_bytes: 4_194_304,
|
|
156
|
-
max_json_shape_nodes: 5_000,
|
|
157
|
-
max_json_shape_depth: 20,
|
|
158
|
-
max_websocket_events: 500,
|
|
159
|
-
max_websocket_shape_bytes: 65_536,
|
|
160
|
-
max_total_websocket_shape_bytes: 1_048_576,
|
|
161
|
-
},
|
|
162
122
|
},
|
|
163
123
|
},
|
|
164
124
|
],
|
|
@@ -166,7 +126,7 @@ export const BROWSER_TOOL_CONTRACTS = [
|
|
|
166
126
|
{
|
|
167
127
|
name: "analyze_web_bundle",
|
|
168
128
|
...toolContractMetadata("analyze_web_bundle"),
|
|
169
|
-
description: "Capture
|
|
129
|
+
description: "Capture JavaScript source from one configured CDP page and statically derive a chunk graph, route and endpoint candidates, vendor fingerprints, page-declared WebMCP metadata, and optionally fetch source maps from allowed origins. JavaScript is parsed but never executed.",
|
|
170
130
|
kind: "browser-provider",
|
|
171
131
|
inputSchema: analyzeWebBundleInputSchema,
|
|
172
132
|
outputSchema: bundleOutputSchema,
|
|
@@ -176,24 +136,12 @@ export const BROWSER_TOOL_CONTRACTS = [
|
|
|
176
136
|
input: {
|
|
177
137
|
cdp_endpoint: endpoint,
|
|
178
138
|
allowed_origins: [origin],
|
|
179
|
-
approved: true,
|
|
180
139
|
target_id: "TARGET_ID_FROM_LIST_BROWSER_TARGETS",
|
|
181
140
|
observation_ms: 500,
|
|
182
141
|
include_accessibility_text: false,
|
|
183
142
|
include_script_sources: true,
|
|
184
143
|
include_storage_keys: false,
|
|
185
|
-
source_capture_approved: true,
|
|
186
144
|
fetch_source_maps: false,
|
|
187
|
-
source_map_fetch_approved: false,
|
|
188
|
-
analysis_limits: {
|
|
189
|
-
max_findings: 1_000,
|
|
190
|
-
max_ast_nodes: 250_000,
|
|
191
|
-
max_source_maps: 100,
|
|
192
|
-
max_source_map_bytes: 4_194_304,
|
|
193
|
-
max_total_source_map_bytes: 16_777_216,
|
|
194
|
-
max_source_map_mappings: 10_000,
|
|
195
|
-
max_original_sources: 2_000,
|
|
196
|
-
},
|
|
197
145
|
},
|
|
198
146
|
},
|
|
199
147
|
],
|
|
@@ -201,7 +149,7 @@ export const BROWSER_TOOL_CONTRACTS = [
|
|
|
201
149
|
{
|
|
202
150
|
name: "observe_web_session",
|
|
203
151
|
...toolContractMetadata("observe_web_session"),
|
|
204
|
-
description: "Arm a
|
|
152
|
+
description: "Arm a CDP observation window of the requested duration while the user operates the page. Allows approved same-origin reload and SPA navigation, records every observed navigation, redirect, lifecycle, and failure event, and stops before retaining an out-of-policy destination.",
|
|
205
153
|
kind: "browser-provider",
|
|
206
154
|
inputSchema: observeWebSessionInputSchema,
|
|
207
155
|
outputSchema: observationSessionOutputSchema,
|
|
@@ -212,9 +160,7 @@ export const BROWSER_TOOL_CONTRACTS = [
|
|
|
212
160
|
cdp_endpoint: endpoint,
|
|
213
161
|
allowed_origins: [origin],
|
|
214
162
|
target_id: "TARGET_ID_FROM_LIST_BROWSER_TARGETS",
|
|
215
|
-
approved: true,
|
|
216
163
|
observation_ms: 10_000,
|
|
217
|
-
max_timeline_events: 2_000,
|
|
218
164
|
},
|
|
219
165
|
},
|
|
220
166
|
],
|
|
@@ -222,7 +168,7 @@ export const BROWSER_TOOL_CONTRACTS = [
|
|
|
222
168
|
{
|
|
223
169
|
name: "discover_webmcp_tools",
|
|
224
170
|
...toolContractMetadata("discover_webmcp_tools"),
|
|
225
|
-
description: "Passively inventory page-registered WebMCP
|
|
171
|
+
description: "Passively inventory every page-registered WebMCP tool and its complete structural input-schema summary using the experimental CDP WebMCP domain. Metadata is page-declared-untrusted; REA never registers or invokes discovered tools.",
|
|
226
172
|
kind: "browser-provider",
|
|
227
173
|
inputSchema: discoverWebMcpToolsInputSchema,
|
|
228
174
|
outputSchema: webMcpOutputSchema,
|
|
@@ -233,12 +179,7 @@ export const BROWSER_TOOL_CONTRACTS = [
|
|
|
233
179
|
cdp_endpoint: endpoint,
|
|
234
180
|
allowed_origins: [origin],
|
|
235
181
|
target_id: "TARGET_ID_FROM_LIST_BROWSER_TARGETS",
|
|
236
|
-
approved: true,
|
|
237
182
|
observation_ms: 100,
|
|
238
|
-
max_tools: 500,
|
|
239
|
-
max_schema_bytes: 262_144,
|
|
240
|
-
max_schema_nodes: 5_000,
|
|
241
|
-
max_schema_depth: 20,
|
|
242
183
|
},
|
|
243
184
|
},
|
|
244
185
|
],
|
|
@@ -246,7 +187,7 @@ export const BROWSER_TOOL_CONTRACTS = [
|
|
|
246
187
|
{
|
|
247
188
|
name: "compare_web_captures",
|
|
248
189
|
...toolContractMetadata("compare_web_captures"),
|
|
249
|
-
description: "Compare
|
|
190
|
+
description: "Compare passive web captures by providing before and after, or compare recorded scenarios by providing before_scenario and after_scenario with an optional normalization policy. Use exactly one input group. Scenario comparison aligns exact step IDs, records deterministic literal normalization, and returns every artifact-level difference plus alignment failures inline. Missing or truncated evidence never proves equality.",
|
|
250
191
|
kind: "browser-provider",
|
|
251
192
|
inputSchema: browserCaptureComparisonInputSchema,
|
|
252
193
|
outputSchema: captureDiffOutputSchema,
|
|
@@ -266,7 +207,6 @@ export const BROWSER_TOOL_CONTRACTS = [
|
|
|
266
207
|
},
|
|
267
208
|
],
|
|
268
209
|
},
|
|
269
|
-
max_changes: 2_000,
|
|
270
210
|
},
|
|
271
211
|
},
|
|
272
212
|
],
|
|
@@ -274,7 +214,7 @@ export const BROWSER_TOOL_CONTRACTS = [
|
|
|
274
214
|
{
|
|
275
215
|
name: "capture_web_screenshot",
|
|
276
216
|
...toolContractMetadata("capture_web_screenshot"),
|
|
277
|
-
description: "Capture the current visible viewport of one
|
|
217
|
+
description: "Capture the current visible viewport of one configured page as an inline, content-addressed PNG artifact. The operation never scrolls, navigates, or evaluates page JavaScript.",
|
|
278
218
|
kind: "browser-provider",
|
|
279
219
|
inputSchema: captureWebScreenshotInputSchema,
|
|
280
220
|
outputSchema: screenshotOutputSchema,
|
|
@@ -285,9 +225,6 @@ export const BROWSER_TOOL_CONTRACTS = [
|
|
|
285
225
|
cdp_endpoint: endpoint,
|
|
286
226
|
allowed_origins: [origin],
|
|
287
227
|
target_id: "TARGET_ID_FROM_LIST_BROWSER_TARGETS",
|
|
288
|
-
approved: true,
|
|
289
|
-
screenshot_approved: true,
|
|
290
|
-
maximum_image_bytes: 4_194_304,
|
|
291
228
|
},
|
|
292
229
|
},
|
|
293
230
|
],
|
|
@@ -295,7 +232,7 @@ export const BROWSER_TOOL_CONTRACTS = [
|
|
|
295
232
|
{
|
|
296
233
|
name: "compare_web_screenshots",
|
|
297
234
|
...toolContractMetadata("compare_web_screenshots"),
|
|
298
|
-
description: "Compare two self-verifying PNG screenshot artifacts with
|
|
235
|
+
description: "Compare two self-verifying PNG screenshot artifacts with local pixel metrics. Returns exact changed-pixel ratios and channel deltas without OCR or external services.",
|
|
299
236
|
kind: "browser-provider",
|
|
300
237
|
inputSchema: compareWebScreenshotsInputSchema,
|
|
301
238
|
outputSchema: screenshotDiffOutputSchema,
|
|
@@ -306,7 +243,6 @@ export const BROWSER_TOOL_CONTRACTS = [
|
|
|
306
243
|
before: exampleScreenshot(),
|
|
307
244
|
after: exampleScreenshot(),
|
|
308
245
|
channel_threshold: 0,
|
|
309
|
-
maximum_pixels: 16_000_000,
|
|
310
246
|
},
|
|
311
247
|
},
|
|
312
248
|
],
|
|
@@ -314,7 +250,6 @@ export const BROWSER_TOOL_CONTRACTS = [
|
|
|
314
250
|
];
|
|
315
251
|
function exampleScreenshot() {
|
|
316
252
|
return {
|
|
317
|
-
uri: "rea://web-screenshot/sha256/153cf6c9a526a63053a37b10234c2fd85df38887c2dc0a800d90abfa6631d01c",
|
|
318
253
|
sha256: "153cf6c9a526a63053a37b10234c2fd85df38887c2dc0a800d90abfa6631d01c",
|
|
319
254
|
bytes: 70,
|
|
320
255
|
media_type: "image/png",
|