rea-agents 6.0.0 → 6.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +26 -18
- package/bridge/android/ReaJadxBridge.java +14 -5
- package/bridge/ghidra/ReaGhidraBridge.java +205 -51
- package/bridge/hopper_bridge.py +314 -127
- package/bridge/mitmproxy/capture.py +0 -2
- package/bridge/native/rea_lldb_tracer.py +630 -94
- package/bridge/process/ProcessRunTokenReader.swift +39 -5
- package/bridge/pwntools/recorded_crash_impl.py +4 -0
- package/dist/android/JadxConfiguration.js +274 -31
- package/dist/android/JadxMcpTransport.js +18 -2
- package/dist/android/JadxProtocol.js +6 -0
- package/dist/android/JadxProvider.js +76 -37
- package/dist/android/JadxSession.js +23 -4
- package/dist/application/AnalysisContextQueries.js +8 -35
- package/dist/application/AnalysisDocument.js +32 -0
- package/dist/application/AppBundleExecutable.js +67 -21
- package/dist/application/BinaryTargetResolver.js +5 -3
- package/dist/application/BrowserEvidence.js +3 -8
- package/dist/application/BrowserScenarioEvidence.js +2 -18
- package/dist/application/CallPathTracing.js +19 -3
- package/dist/application/CapabilityInventory.js +48 -11
- package/dist/application/ClientConfigurationDocument.js +917 -8
- package/dist/application/ClientRegistrationIdentity.js +26 -5
- package/dist/application/ClientRegistrationStatus.js +29 -14
- package/dist/application/DirectAnalysis.js +56 -51
- package/dist/application/DirectAnalysisCleanup.js +72 -0
- package/dist/application/DirectAnalysisStatus.js +4 -5
- package/dist/application/Doctor.js +19 -21
- package/dist/application/DoctorDiagnostics.js +1 -2
- package/dist/application/DoctorScope.js +25 -13
- package/dist/application/EnhancedLiteralTracing.js +22 -25
- package/dist/application/EnhancedTools.js +64 -17
- package/dist/application/EvidenceBundleFiles.js +30 -13
- package/dist/application/FunctionAnalysisEvidence.js +2 -3
- package/dist/application/InventoryProjectionEvidence.js +4 -3
- package/dist/application/InvestigationProviders.js +11 -2
- package/dist/application/JsonFiles.js +83 -28
- package/dist/application/LinuxHopper.js +9 -6
- package/dist/application/MacHopper.js +15 -18
- package/dist/application/ProcedureAddressResolution.js +11 -0
- package/dist/application/RealHopperAssertions.js +0 -11
- package/dist/application/ReconstructionCoverageService.js +7 -4
- package/dist/application/ReconstructionObligationCandidates.js +1 -1
- package/dist/application/ReconstructionObligationLedgerService.js +4 -3
- package/dist/application/ReferenceSourceImportEntries.js +1 -1
- package/dist/application/Setup.js +21 -17
- package/dist/application/SetupClientConfiguration.js +10 -15
- package/dist/application/SetupHost.js +21 -29
- package/dist/application/SetupPlan.js +11 -9
- package/dist/application/SupportedClients.js +34 -1
- package/dist/application/Uninstall.js +82 -29
- package/dist/application/Update.js +18 -3
- package/dist/application/UpdateMaintenance.js +7 -5
- package/dist/application/UpdateRuntime.js +57 -36
- package/dist/application/WebModuleTraceService.js +4 -2
- package/dist/application/WebNetworkCaptureService.js +4 -2
- package/dist/application/WebRuntimeService.js +5 -3
- package/dist/application/WebScriptExportService.js +32 -6
- package/dist/application/WebSourceLocationService.js +4 -2
- package/dist/application/WorkflowEvidence.js +105 -0
- package/dist/application/XrefsAddressResolution.js +45 -0
- package/dist/application/analysisView/AnalysisViewService.js +76 -0
- package/dist/application/binary/AnalysisClientCleanup.js +30 -5
- package/dist/application/binary/AnalysisProviderEvaluation.js +22 -7
- package/dist/application/binary/AnalysisProviderRegistry.js +4 -6
- package/dist/application/binary/AnalysisSnapshotCache.js +13 -14
- package/dist/application/binary/BinarySession.js +161 -93
- package/dist/application/binary/BinarySessionComposition.js +1 -3
- package/dist/application/binary/BinarySessionExecution.js +3 -5
- package/dist/application/binary/BinarySessionOpen.js +4 -4
- package/dist/application/binary/BinarySessionRecords.js +26 -4
- package/dist/application/binary/BinarySessionStatus.js +18 -7
- package/dist/application/binary/CompositeProvider.js +16 -17
- package/dist/application/binary/LazyAnalysisProvider.js +8 -5
- package/dist/application/binary/SessionProviderRouter.js +27 -135
- package/dist/application/binaryDiagnostics/BinaryLayoutService.js +4 -2
- package/dist/application/binaryDiagnostics/RecordedCrashService.js +4 -2
- package/dist/application/evm/EvmInterfaceService.js +4 -2
- package/dist/application/homebrew.js +48 -0
- package/dist/application/investigation/EvidenceLedger.js +21 -7
- package/dist/application/investigation/InvestigationRecords.js +8 -0
- package/dist/application/javascript/ElectronActiveEvidence.js +9 -13
- package/dist/application/javascript/JavaScriptAnalysisControl.js +34 -0
- package/dist/application/javascript/JavaScriptApplicationEvidence.js +21 -4
- package/dist/application/javascript/JavaScriptApplicationEvidenceGraph.js +19 -2
- package/dist/application/javascript/JavaScriptApplicationService.js +27 -15
- package/dist/application/javascript/JavaScriptApplicationWorkflowService.js +5 -5
- package/dist/application/javascript/JavaScriptArtifactAnalysis.js +10 -7
- package/dist/application/javascript/JavaScriptArtifactGraphBuilder.js +44 -10
- package/dist/application/javascript/JavaScriptArtifactGraphBundlers.js +11 -3
- package/dist/application/javascript/JavaScriptArtifactGraphContext.js +9 -0
- package/dist/application/javascript/JavaScriptArtifactGraphDocuments.js +8 -5
- package/dist/application/javascript/JavaScriptArtifactGraphFindings.js +12 -3
- package/dist/application/javascript/JavaScriptArtifactGraphStructure.js +0 -1
- package/dist/application/javascript/JavaScriptArtifactPathResolution.js +49 -19
- package/dist/application/javascript/JavaScriptArtifactReconstruction.js +56 -8
- package/dist/application/javascript/JavaScriptModuleRelationships.js +38 -9
- package/dist/application/javascript/JavaScriptRecoveryService.js +4 -2
- package/dist/application/javascript/JavaScriptRuntimeObservationService.js +6 -4
- package/dist/application/javascript/JavaScriptRuntimeReconciliationService.js +3 -3
- package/dist/application/javascript/JavaScriptSemanticGraphAsyncProjection.js +2 -3
- package/dist/application/javascript/JavaScriptSemanticGraphBuilder.js +63 -61
- package/dist/application/javascript/JavaScriptSemanticGraphChildProcessProjection.js +1 -2
- package/dist/application/javascript/JavaScriptSemanticGraphDataProjection.js +2 -3
- package/dist/application/javascript/JavaScriptSemanticGraphFlowProjection.js +1 -5
- package/dist/application/javascript/JavaScriptSemanticGraphObjectProjection.js +75 -46
- package/dist/application/javascript/JavaScriptSemanticGraphResourceProjection.js +2 -3
- package/dist/application/javascript/JavaScriptSemanticGraphValueProjection.js +64 -19
- package/dist/application/managed/ManagedApplicationGraphService.js +4 -3
- package/dist/application/managed/ManagedMemberComparisonService.js +9 -5
- package/dist/application/managed/ManagedNativeVerificationService.js +6 -4
- package/dist/application/managed/ManagedReconstructionService.js +4 -3
- package/dist/application/process/ProcessCli.js +25 -17
- package/dist/application/process/ProcessEvidence.js +4 -4
- package/dist/application/workflowInputError.js +18 -0
- package/dist/artifacts/ArtifactProvider.js +48 -13
- package/dist/artifacts/ArtifactReader.js +31 -0
- package/dist/artifacts/DirectoryArtifactReader.js +2 -1
- package/dist/artifacts/MachOSliceArtifactReader.js +106 -15
- package/dist/artifacts/NativeDmgArtifactReader.js +73 -21
- package/dist/artifacts/SafeOutputTree.js +16 -2
- package/dist/artifacts/ZipArtifactReader.js +11 -4
- package/dist/artifacts/apple/AppleAssetCatalogAnalysis.js +26 -5
- package/dist/artifacts/apple/DylibResolutionReader.js +17 -7
- package/dist/artifacts/apple/InterfaceBuilderAnalysis.js +176 -56
- package/dist/artifacts/apple/InterfaceBuilderDecodeBudget.js +195 -0
- package/dist/artifacts/apple/KeyedArchiveReader.js +55 -23
- package/dist/artifacts/apple/MachoLoadCommandReader.js +92 -31
- package/dist/artifacts/apple/NibArchive.js +81 -14
- package/dist/artifacts/apple/NibViewHierarchy.js +10 -3
- package/dist/artifacts/apple/PlistNumberLiterals.js +164 -0
- package/dist/artifacts/extraction/ArtifactExtraction.js +78 -21
- package/dist/artifacts/inventory/ArtifactGraphConstruction.js +79 -68
- package/dist/artifacts/inventory/ArtifactInventory.js +0 -1
- package/dist/artifacts/inventory/reader.js +3 -3
- package/dist/artifacts/inventory/scanCanonical.js +59 -38
- package/dist/artifacts/inventory/scanReader.js +5 -9
- package/dist/artifacts/javascript/JavaScriptArtifactFiles.js +6 -2
- package/dist/browser/BrowserScenarioPartialObservation.js +106 -0
- package/dist/browser/CdpBrowserProvider.js +2 -3
- package/dist/browser/CdpCaptureCompleteness.js +2 -0
- package/dist/browser/CdpCaptureEventHandlers.js +78 -15
- package/dist/browser/CdpCaptureEventTypes.js +5 -1
- package/dist/browser/CdpCaptureEvents.js +25 -1
- package/dist/browser/CdpCaptureValues.js +20 -0
- package/dist/browser/CdpConnection.js +30 -11
- package/dist/browser/CdpElectronProvider.js +0 -2
- package/dist/browser/CdpElectronScriptEvents.js +2 -8
- package/dist/browser/CdpElectronScripts.js +2 -3
- package/dist/browser/CdpOptionalCommand.js +2 -3
- package/dist/browser/CdpPageCapture.js +23 -1
- package/dist/browser/CdpPageCaptureScripts.js +2 -3
- package/dist/browser/CdpSafeMetadata.js +10 -10
- package/dist/browser/PlaywrightBrowserScenarioProvider.js +59 -44
- package/dist/browser/PlaywrightElectronActiveActions.js +34 -79
- package/dist/browser/PlaywrightElectronActiveProjection.js +141 -0
- package/dist/browser/PlaywrightElectronActiveProvider.js +133 -130
- package/dist/browser/PlaywrightScenarioArtifacts.js +1 -1
- package/dist/browser/PlaywrightScenarioBrowser.js +139 -39
- package/dist/browser/PlaywrightScenarioEvents.js +1 -1
- package/dist/browser/PlaywrightScenarioSession.js +39 -22
- package/dist/browser/WebSourceMapFetcher.js +426 -72
- package/dist/browser/assets/LocalWebScriptArtifacts.js +2 -2
- package/dist/browser/assets/ScriptCaptureAdapters.js +1 -1
- package/dist/browser/history/CaptureFailures.js +41 -1
- package/dist/browser/history/CaptureRelease.js +5 -0
- package/dist/browser/history/HarCaptureAdapter.js +3 -3
- package/dist/browser/history/HarJson.js +3 -2
- package/dist/browser/history/HistoricalCaptureDecoder.js +4 -2
- package/dist/browser/history/MitmproxyCaptureAdapter.js +4 -2
- package/dist/catalogIdentity.js +0 -1
- package/dist/cli/analysisSelector.js +23 -0
- package/dist/cli/analysisViewCommands.js +36 -0
- package/dist/cli/applicationCommands.js +2 -3
- package/dist/cli/artifactCommands.js +11 -12
- package/dist/cli/coreAnalysisCommands.js +3 -3
- package/dist/cli/coreBinaryCommands.js +100 -37
- package/dist/cli/coreNativeCommands.js +9 -10
- package/dist/cli/electronCommands.js +10 -9
- package/dist/cli/interactiveSetup.js +6 -6
- package/dist/cli/javascriptApplicationAnalysis.js +7 -3
- package/dist/cli/jsonOutput.js +4 -99
- package/dist/cli/managedCommands.js +7 -8
- package/dist/cli/nativeCallCommands.js +3 -5
- package/dist/cli/omittableDefaults.js +50 -0
- package/dist/cli/processCommands.js +3 -2
- package/dist/cli/setupCommands.js +16 -15
- package/dist/cli/utilityCommands.js +9 -9
- package/dist/cli/webRuntimeCommands.js +8 -8
- package/dist/cli.js +18 -9
- package/dist/cliBrowserScenarioCommands.js +2 -2
- package/dist/cliCommandNames.js +1 -1
- package/dist/cliJsonInput.js +24 -5
- package/dist/cliOutput.js +0 -38
- package/dist/composition/auxiliaryAnalysisProviders.js +27 -23
- package/dist/composition/binary.js +9 -9
- package/dist/composition/browserScenario.js +2 -1
- package/dist/composition/directAnalysis.js +20 -13
- package/dist/composition/electronScenario.js +1 -1
- package/dist/composition/optionalObservationProviders.js +12 -7
- package/dist/config/environment.js +10 -0
- package/dist/config/ghidraStartupTimeout.js +12 -0
- package/dist/config/homeDirectory.js +12 -0
- package/dist/config/mcpResponseBudget.js +30 -0
- package/dist/config/parseConfig.js +8 -3
- package/dist/config/parsers.js +19 -22
- package/dist/contracts/analysisViewToolContracts.js +56 -0
- package/dist/contracts/applicationToolContracts.js +5 -4
- package/dist/contracts/artifactComparisonExample.js +2 -2
- package/dist/contracts/artifactToolContracts.js +1 -1
- package/dist/contracts/browserScenarioToolContracts.js +1 -1
- package/dist/contracts/browserToolContracts.js +19 -15
- package/dist/contracts/enhancedInputs.js +7 -5
- package/dist/contracts/enhancedToolContracts.js +7 -6
- package/dist/contracts/evm/evmToolContracts.js +1 -1
- package/dist/contracts/functionWorkflowToolContracts.js +1 -1
- package/dist/contracts/hopperMemoryContracts.js +2 -5
- package/dist/contracts/inputSchemaPresentation.js +90 -0
- package/dist/contracts/investigationExamples.js +4 -3
- package/dist/contracts/javascript/electronToolContracts.js +2 -2
- package/dist/contracts/javascript/javascriptApplicationWorkflowExamples.js +0 -20
- package/dist/contracts/javascript/javascriptExportShapeComparisonExample.js +245 -0
- package/dist/contracts/javascript/javascriptRuntimeObservationToolContracts.js +1 -1
- package/dist/contracts/managed/managedToolContracts.js +7 -14
- package/dist/contracts/managed/managedWorkflowToolContracts.js +1 -1
- package/dist/contracts/mobileApplicationGraphExamples.js +3 -3
- package/dist/contracts/native/binaryDiagnosticsToolContracts.js +1 -1
- package/dist/contracts/native/nativeToolContracts.js +5 -3
- package/dist/contracts/officialToolContracts.js +16 -16
- package/dist/contracts/promptContracts.js +5 -5
- package/dist/contracts/providerSelection.js +1 -1
- package/dist/contracts/sessionLifecycleInputs.js +3 -7
- package/dist/contracts/sessionStatusContract.js +2 -4
- package/dist/contracts/sessionToolContracts.js +18 -8
- package/dist/contracts/sessionToolSchemas.js +3 -19
- package/dist/contracts/toolContractExamples.js +0 -1
- package/dist/contracts/toolContractHelpers.js +4 -1
- package/dist/contracts/toolContracts.js +2 -0
- package/dist/contracts/toolEffects.js +1 -1
- package/dist/contracts/toolOutputSchemaGroups.js +160 -115
- package/dist/contracts/toolOutputSchemaPrimitives.js +28 -20
- package/dist/contracts/toolSchemaMetadata.js +41 -33
- package/dist/contracts/webNetworkCaptureToolContracts.js +2 -2
- package/dist/contracts/webRuntimeToolContracts.js +1 -1
- package/dist/contracts/webScriptToolContracts.js +1 -1
- package/dist/doctorRuntime.js +7 -5
- package/dist/domain/analysisErrorBase.js +8 -3
- package/dist/domain/analysisErrorCore.js +6 -1
- package/dist/domain/analysisErrorPresentation.js +90 -20
- package/dist/domain/analysisErrorProjection.js +130 -32
- package/dist/domain/analysisSnapshot.js +29 -31
- package/dist/domain/analysisView/analysisView.js +243 -0
- package/dist/domain/analysisView/analysisViewCoverage.js +19 -0
- package/dist/domain/analysisView/binaryLayoutView.js +159 -0
- package/dist/domain/analysisView/javascriptApplicationView.js +238 -0
- package/dist/domain/android/androidAnalysis.js +2 -4
- package/dist/domain/android/androidApplication.js +18 -10
- package/dist/domain/apple/appleApplication.js +42 -15
- package/dist/domain/apple/dyldEnvironment.js +73 -0
- package/dist/domain/apple/dylibResolution.js +130 -12
- package/dist/domain/apple/dylibResolutionFindings.js +9 -7
- package/dist/domain/apple/interfaceBuilderGraph.js +25 -14
- package/dist/domain/apple/interfaceBuilderKeyedArchive.js +13 -3
- package/dist/domain/apple/keyedArchive.js +35 -3
- package/dist/domain/apple/machoContainer.js +54 -0
- package/dist/domain/apple/plistNumbers.js +76 -0
- package/dist/domain/artifactComparison.js +15 -6
- package/dist/domain/artifactGraph.js +16 -3
- package/dist/domain/artifactIdentity.js +29 -0
- package/dist/domain/artifactInventoryEvidence.js +28 -40
- package/dist/domain/artifactOperationError.js +3 -3
- package/dist/domain/artifactPartialObservation.js +1 -0
- package/dist/domain/artifactPathSyntax.js +49 -0
- package/dist/domain/binaryTarget.js +39 -13
- package/dist/domain/bridgeCandidateProjection.js +71 -0
- package/dist/domain/browserCaptureComparison.js +13 -49
- package/dist/domain/browserCompleteness.js +1 -0
- package/dist/domain/browserNetworkEvidence.js +10 -4
- package/dist/domain/browserObservation.js +0 -1
- package/dist/domain/browserObservationError.js +24 -5
- package/dist/domain/browserObservationSchemas.js +14 -3
- package/dist/domain/browserScenario.js +0 -1
- package/dist/domain/browserScenarioCapture.js +1 -2
- package/dist/domain/browserScenarioDiff.js +0 -2
- package/dist/domain/browserScenarioDiffEvidence.js +0 -12
- package/dist/domain/browserScenarioDiffValues.js +2 -2
- package/dist/domain/browserScenarioValues.js +5 -10
- package/dist/domain/bundleComparison.js +3 -2
- package/dist/domain/callPath.js +8 -9
- package/dist/domain/callPathSchemas.js +2 -2
- package/dist/domain/canonicalJsonDigestSteps.js +133 -0
- package/dist/domain/canonicalOrdering.js +9 -5
- package/dist/domain/changedBehavior.js +9 -9
- package/dist/domain/comparisonSourceEvidence.js +40 -0
- package/dist/domain/completionLedgerGeneration.js +2 -1
- package/dist/domain/configurationErrors.js +13 -1
- package/dist/domain/conformancePackage.js +4 -3
- package/dist/domain/evidence.js +65 -36
- package/dist/domain/evidenceBundle.js +47 -8
- package/dist/domain/evidenceCompletionLedger.js +2 -1
- package/dist/domain/evidenceErrors.js +12 -1
- package/dist/domain/explicitSensitiveFailure.js +17 -1
- package/dist/domain/firmware/firmwareAnalysis.js +6 -7
- package/dist/domain/functionComparison.js +4 -5
- package/dist/domain/functionComparisonDimensions.js +120 -87
- package/dist/domain/functionComparisonNormalization.js +23 -34
- package/dist/domain/functionComparisonResults.js +1 -4
- package/dist/domain/functionComparisonSchemas.js +2 -8
- package/dist/domain/functionDossierEvidence.js +2 -37
- package/dist/domain/hopperErrors.js +23 -2
- package/dist/domain/hopperValues.js +51 -8
- package/dist/domain/immutableJson.js +114 -0
- package/dist/domain/inputIssueProjection.js +3 -0
- package/dist/domain/javascript/electronActiveObservation.js +47 -64
- package/dist/domain/javascript/electronObservation.js +14 -3
- package/dist/domain/javascript/electronStaticAnalysisBrowser.js +10 -9
- package/dist/domain/javascript/electronStaticAnalysisIpc.js +2 -1
- package/dist/domain/javascript/electronStaticAnalysisNative.js +2 -1
- package/dist/domain/javascript/electronStaticAnalysisValues.js +6 -12
- package/dist/domain/javascript/javascriptApplicationAnalysis.js +71 -23
- package/dist/domain/javascript/javascriptApplicationEvidenceSchemas.js +2 -0
- package/dist/domain/javascript/javascriptApplicationGraph.js +39 -3
- package/dist/domain/javascript/javascriptApplicationGraphSchemas.js +9 -2
- package/dist/domain/javascript/javascriptApplicationVersionItems.js +5 -2
- package/dist/domain/javascript/javascriptApplicationVersionKeys.js +2 -1
- package/dist/domain/javascript/javascriptAstValues.js +20 -0
- package/dist/{application/javascript/JavaScriptReturnShapeProjection.js → domain/javascript/javascriptExportReturnShapeProjection.js} +4 -4
- package/dist/domain/javascript/javascriptExportShapeComparison.js +7 -1
- package/dist/domain/javascript/javascriptExportShapeComparisonIdentity.js +6 -1
- package/dist/domain/javascript/javascriptExportShapeComparisonSchemas.js +29 -1
- package/dist/domain/javascript/javascriptExportShapeSelection.js +5 -5
- package/dist/domain/javascript/javascriptExportShapeVariants.js +67 -14
- package/dist/domain/javascript/javascriptFeatureSeed.js +20 -0
- package/dist/domain/javascript/javascriptFeatureTraversal.js +0 -1
- package/dist/domain/javascript/javascriptNativeHandoff.js +1 -1
- package/dist/domain/javascript/javascriptRecovery.js +3 -8
- package/dist/domain/javascript/javascriptRuntimeLoadState.js +0 -1
- package/dist/domain/javascript/javascriptRuntimeObservation.js +10 -2
- package/dist/domain/javascript/javascriptRuntimeReconciliationMatching.js +1 -1
- package/dist/domain/javascript/javascriptRuntimeReconciliationParsing.js +3 -2
- package/dist/domain/javascript/javascriptRuntimeStaticCandidates.js +0 -1
- package/dist/domain/javascript/javascriptSemanticAnalysis.js +106 -5
- package/dist/domain/javascript/javascriptSemanticAsyncEffects.js +2 -1
- package/dist/domain/javascript/javascriptSemanticCalls.js +2 -1
- package/dist/domain/javascript/javascriptSemanticChildProcesses.js +2 -1
- package/dist/domain/javascript/javascriptSemanticCoverage.js +6 -5
- package/dist/domain/javascript/javascriptSemanticDataEffectHelpers.js +9 -17
- package/dist/domain/javascript/javascriptSemanticDataEffects.js +23 -6
- package/dist/domain/javascript/javascriptSemanticGraph.js +98 -43
- package/dist/domain/javascript/javascriptSemanticGraphSchemas.js +1 -0
- package/dist/domain/javascript/javascriptSemanticMemberMutations.js +77 -20
- package/dist/domain/javascript/javascriptSemanticMutationValues.js +21 -27
- package/dist/domain/javascript/javascriptSemanticObjects.js +83 -42
- package/dist/domain/javascript/javascriptSemanticPrimitives.js +18 -21
- package/dist/domain/javascript/javascriptSemanticProjection.js +2 -3
- package/dist/domain/javascript/javascriptSemanticPromises.js +2 -1
- package/dist/domain/javascript/javascriptSemanticQuerySchemas.js +8 -4
- package/dist/domain/javascript/javascriptSemanticResourceLimits.js +77 -0
- package/dist/domain/javascript/javascriptSemanticResources.js +1 -1
- package/dist/domain/javascript/javascriptSemanticReturns.js +32 -17
- package/dist/domain/javascript/javascriptSemanticSlots.js +72 -0
- package/dist/domain/javascript/javascriptSemanticValues.js +126 -61
- package/dist/domain/javascript/javascriptSourceMapPaths.js +104 -0
- package/dist/domain/javascript/javascriptSourceParser.js +6 -2
- package/dist/domain/javascript/javascriptStaticAnalysis.js +22 -17
- package/dist/domain/javascript/javascriptStaticAnalysisBundler.js +5 -3
- package/dist/domain/javascript/javascriptStaticAnalysisCalls.js +16 -5
- package/dist/domain/javascript/javascriptStaticAnalysisFindings.js +66 -7
- package/dist/domain/javascript/javascriptStaticAnalysisHelpers.js +28 -17
- package/dist/domain/javascript/javascriptStaticAnalysisState.js +3 -2
- package/dist/domain/javascript/sourceToBundleComparison.js +12 -3
- package/dist/domain/javascript/sourceToBundleSignals.js +47 -19
- package/dist/domain/jsonSerialization.js +109 -0
- package/dist/domain/jsonValue.js +90 -6
- package/dist/domain/localPath.js +6 -0
- package/dist/domain/managed/managedApplicationGraph.js +10 -10
- package/dist/domain/managed/managedArtifact.js +6 -4
- package/dist/domain/managed/managedInspectionEvidence.js +16 -0
- package/dist/domain/managed/managedMemberComparison.js +2 -9
- package/dist/domain/managed/managedMemberComparisonMatch.js +5 -9
- package/dist/domain/managed/managedNativeVerification.js +3 -11
- package/dist/domain/managed/managedNativeVerificationMatch.js +9 -3
- package/dist/domain/native/binaryLayout.js +2 -3
- package/dist/domain/native/fileOffsetPartialObservation.js +1 -0
- package/dist/domain/native/nativeApiBoundary.js +1 -1
- package/dist/domain/native/nativeCallObservation.js +37 -13
- package/dist/domain/native/nativeCallPartialObservation.js +33 -0
- package/dist/domain/native/nativeInstruction.js +7 -0
- package/dist/domain/native/recordedCrash.js +2 -3
- package/dist/domain/offsetDateTime.js +17 -0
- package/dist/domain/process/processCapture.js +21 -16
- package/dist/domain/process/processCaptureCoverage.js +67 -0
- package/dist/domain/process/processCaptureExample.js +2 -1
- package/dist/domain/process/processCaptureParsing.js +1 -34
- package/dist/domain/process/processCaptureValidation.js +81 -13
- package/dist/domain/process/processComparison.js +79 -26
- package/dist/domain/process/processObservation.js +10 -2
- package/dist/domain/process/processScenario.js +35 -12
- package/dist/domain/process/processTraceComparison.js +0 -2
- package/dist/domain/process/processTraceDimensionProjection.js +1 -1
- package/dist/domain/process/processTraceEvaluation.js +15 -11
- package/dist/domain/process/processTraceSpecification.js +3 -4
- package/dist/domain/propertyListKeys.js +1 -1
- package/dist/domain/propertyListXmlText.js +19 -0
- package/dist/domain/providerAdapterError.js +3 -1
- package/dist/domain/providerOperationHealth.js +54 -0
- package/dist/domain/reconstructionCoverage.js +5 -2
- package/dist/domain/reconstructionObligationLedgerSchemas.js +2 -1
- package/dist/domain/reconstructionReadinessSchemas.js +2 -1
- package/dist/domain/reconstructionVerification.js +9 -46
- package/dist/domain/reconstructionVerificationSchemas.js +4 -3
- package/dist/domain/referenceSourceGraph.js +20 -21
- package/dist/domain/staticRuntimeCorrelation.js +8 -45
- package/dist/domain/stringPatterns.js +6 -0
- package/dist/domain/swiftSymbolClassification.js +61 -0
- package/dist/domain/symbolAnalysis.js +66 -18
- package/dist/domain/webBundleAnalysis.js +20 -8
- package/dist/domain/webBundleAnalyzerInspection.js +13 -8
- package/dist/domain/webBundleAnalyzerResult.js +41 -2
- package/dist/domain/webCaptureDiff.js +0 -1
- package/dist/domain/webCaptureDiffSchemas.js +6 -3
- package/dist/domain/webEventListeners.js +3 -2
- package/dist/domain/webExecution.js +3 -2
- package/dist/domain/webRuntime.js +19 -7
- package/dist/domain/webScriptExport.js +1 -1
- package/dist/domain/webSourceLocation.js +1 -0
- package/dist/dotnet/ManagedArtifactInspector.js +2 -19
- package/dist/dotnet/ManagedMemberInspector.js +12 -18
- package/dist/dotnet/ManagedMemberInspectorCore.js +47 -44
- package/dist/dotnet/ManagedMemberRows.js +75 -62
- package/dist/dotnet/ManagedMetadataInventory.js +16 -22
- package/dist/dotnet/ManagedMethodBodyReader.js +4 -0
- package/dist/dotnet/ManagedNativeBoundaryHelpers.js +109 -94
- package/dist/dotnet/ManagedNativeBoundaryInspector.js +12 -21
- package/dist/dotnet/ManagedReaderFailure.js +16 -0
- package/dist/dotnet/ManagedStaticProvider.js +3 -5
- package/dist/evaluation/AgentEvaluationFixtures.js +250 -0
- package/dist/evaluation/AgentEvaluationReport.js +28 -0
- package/dist/evaluation/CodexAgentEval.js +12 -8
- package/dist/evaluation/KnownAnswerEvaluation.js +281 -0
- package/dist/evm/EvmoleInterfaceProvider.js +2 -1
- package/dist/firmware/FirmwareCommand.js +9 -5
- package/dist/firmware/FirmwareFiles.js +1 -1
- package/dist/firmware/FirmwareProvider.js +4 -4
- package/dist/generatedPackageMetadata.js +2 -2
- package/dist/ghidra/GhidraAnalysisProfile.js +7 -5
- package/dist/ghidra/GhidraClient.js +126 -34
- package/dist/ghidra/GhidraClientStartup.js +0 -2
- package/dist/ghidra/GhidraDiagnostics.js +7 -7
- package/dist/ghidra/GhidraDoctor.js +6 -5
- package/dist/ghidra/GhidraFunctionValues.js +13 -12
- package/dist/ghidra/GhidraInstallation.js +58 -33
- package/dist/ghidra/GhidraInventoryValues.js +14 -4
- package/dist/ghidra/GhidraJavaLaunch.js +66 -0
- package/dist/ghidra/GhidraLauncher.js +47 -22
- package/dist/ghidra/GhidraProvider.js +6 -2
- package/dist/ghidra/GhidraProviderCapabilities.js +20 -2
- package/dist/ghidra/GhidraProviderClient.js +36 -15
- package/dist/ghidra/GhidraSessionError.js +13 -7
- package/dist/ghidra/GhidraSessionRoot.js +39 -0
- package/dist/ghidra/GhidraTargetSnapshot.js +47 -12
- package/dist/ghidra/GhidraTransport.js +20 -0
- package/dist/ghidra/extensions/GhidraExtensions.js +17 -10
- package/dist/ghidra/extensions/nativeaot/NativeAotAdapter.js +8 -2
- package/dist/hopper/BridgeLauncher.js +65 -56
- package/dist/hopper/HopperAnalysisProfile.js +65 -12
- package/dist/hopper/HopperCleanup.js +63 -22
- package/dist/hopper/HopperClient.js +288 -59
- package/dist/hopper/HopperFileOffset.js +237 -0
- package/dist/hopper/HopperMachOImage.js +197 -0
- package/dist/hopper/HopperOperationStage.js +6 -0
- package/dist/hopper/HopperProvider.js +71 -19
- package/dist/hopper/HopperProviderCapabilities.js +19 -1
- package/dist/hopper/HopperRegexSearch.js +134 -0
- package/dist/hopper/HopperRegexWorker.js +27 -0
- package/dist/hopper/HopperRequestQueue.js +68 -19
- package/dist/hopper/HopperTargetLease.js +133 -49
- package/dist/hopper/LinuxPrivateDisplayProbe.js +6 -0
- package/dist/ida/IdaConfiguration.js +8 -3
- package/dist/ida/IdaInput.js +1 -7
- package/dist/ida/IdaMcpConnection.js +8 -4
- package/dist/ida/IdaOperationRunner.js +3 -3
- package/dist/ida/IdaProvider.js +8 -12
- package/dist/ida/IdaSessionClient.js +20 -18
- package/dist/ida/IdaWorkspace.js +12 -13
- package/dist/inspector/JavaScriptRuntimeScope.js +9 -1
- package/dist/inspector/V8InspectorCaptureProjection.js +9 -4
- package/dist/inspector/V8InspectorProvider.js +82 -36
- package/dist/javascript/recovery/WakaruCommand.js +7 -2
- package/dist/javascript/recovery/WakaruExecution.js +5 -2
- package/dist/javascript/sourceMaps/DecodedSourceMap.js +47 -0
- package/dist/javascript/sourceMaps/SourceMapCommand.js +16 -0
- package/dist/javascript/sourceMaps/SourceMapFormat.js +79 -31
- package/dist/javascript/sourceMaps/TraceSourceMap.js +14 -28
- package/dist/main/shutdown.js +11 -3
- package/dist/main/startup.js +9 -2
- package/dist/main/transport.js +22 -2
- package/dist/main.js +11 -18
- package/dist/mcpDoctor.js +62 -2
- package/dist/native/AppleDispatchCoverage.js +47 -6
- package/dist/native/AppleDispatchDecodeFacts.js +6 -0
- package/dist/native/AppleDispatchMetadata.js +6 -3
- package/dist/native/AppleMachoFixups.js +48 -24
- package/dist/native/AppleMachoSelection.js +48 -22
- package/dist/native/AppleObjcCategories.js +6 -2
- package/dist/native/AppleObjcDispatchFacets.js +5 -2
- package/dist/native/AppleObjcProperties.js +2 -1
- package/dist/native/AppleSwiftDispatchFacets.js +27 -21
- package/dist/native/AppleSwiftVtables.js +21 -15
- package/dist/native/CommandRunner.js +87 -88
- package/dist/native/LldbCallTracer.js +372 -103
- package/dist/native/LldbRetainedObservations.js +178 -0
- package/dist/native/NativeCallObservation.js +62 -3
- package/dist/native/NativeMacOSProvider.js +122 -31
- package/dist/native/NativeUiHelperRuntime.js +11 -2
- package/dist/native/NativeUiObservation.js +2 -2
- package/dist/native/SignatureTargetBinding.js +155 -0
- package/dist/native/parsers/lipo.js +71 -1
- package/dist/native/pwndbg/PwndbgCoreContext.js +25 -5
- package/dist/native/pwntools/PwntoolsDecoder.js +2 -1
- package/dist/native/pwntools/RecordedCrashStructureBindings.js +2 -0
- package/dist/process/DarwinProcessRunTokenReader.js +23 -10
- package/dist/process/ExecFileOutput.js +108 -6
- package/dist/process/OwnedCommand.js +7 -2
- package/dist/process/PrivateRuntimeRoot.js +10 -5
- package/dist/process/ProcessOwnership.js +204 -57
- package/dist/process/ProcessOwnershipObservation.js +60 -9
- package/dist/process/ProviderProcess.js +39 -10
- package/dist/process/capture/FilesystemSnapshot.js +50 -13
- package/dist/process/capture/ProcessCaptureError.js +15 -2
- package/dist/process/capture/ProcessCaptureLifecycle.js +235 -81
- package/dist/process/capture/ProcessFilesystemEffects.js +33 -3
- package/dist/process/capture/ProcessHarness.js +21 -25
- package/dist/process/capture/ProcessNormalization.js +20 -2
- package/dist/process/capture/ProcessSampling.js +25 -2
- package/dist/process/capture/TerminalRenderer.js +14 -0
- package/dist/process/snapshotEnvironment.js +14 -0
- package/dist/server/EvidenceMcpServer.js +157 -0
- package/dist/server/createServer.js +61 -41
- package/dist/server/mcpClientMetadata.js +12 -5
- package/dist/server/promptCompletion.js +3 -8
- package/dist/server/registerAnalysisViewTool.js +15 -0
- package/dist/server/registerAndroidTools.js +2 -5
- package/dist/server/registerApplicationTools/compareExportShapes.js +4 -5
- package/dist/server/registerApplicationTools/compareSourceToBundle.js +4 -5
- package/dist/server/registerApplicationTools/compareVersions.js +4 -5
- package/dist/server/registerApplicationTools/coverage.js +1 -2
- package/dist/server/registerApplicationTools/helpers.js +1 -4
- package/dist/server/registerApplicationTools/obligationLedger.js +4 -5
- package/dist/server/registerApplicationTools/projectMobileApplicationGraph.js +3 -4
- package/dist/server/registerApplicationTools/traceFeature.js +4 -5
- package/dist/server/registerApplicationTools/traceSemantics.js +4 -5
- package/dist/server/registerArtifactComparisonTool.js +13 -10
- package/dist/server/registerBinaryDiagnosticsTools.js +2 -5
- package/dist/server/registerBrowserScenarioTool.js +3 -6
- package/dist/server/registerBrowserTools.js +13 -18
- package/dist/server/registerBundleComparisonTool.js +5 -7
- package/dist/server/registerCloseLifecycleTool.js +9 -20
- package/dist/server/registerElectronTools.js +10 -15
- package/dist/server/registerEnhancedTools.js +36 -77
- package/dist/server/registerEvidenceTools.js +3 -6
- package/dist/server/registerEvmTools.js +2 -5
- package/dist/server/registerFirmwareTools.js +2 -5
- package/dist/server/registerFunctionComparisonTool.js +15 -12
- package/dist/server/registerInvestigationTools.js +16 -17
- package/dist/server/registerJavaScriptRecoveryTool.js +2 -5
- package/dist/server/registerJavaScriptRuntimeObservationTools.js +6 -8
- package/dist/server/registerManagedWorkflowTools/compareManagedMembers.js +5 -8
- package/dist/server/registerManagedWorkflowTools/importManagedReconstruction.js +4 -7
- package/dist/server/registerManagedWorkflowTools/projectManagedApplicationGraph.js +6 -9
- package/dist/server/registerManagedWorkflowTools/verifyManagedNativeBoundaries.js +6 -9
- package/dist/server/registerOfficialTools.js +4 -21
- package/dist/server/registerProcessComparisonTool.js +74 -48
- package/dist/server/registerRecordedCrashTools.js +2 -5
- package/dist/server/registerSessionRecordTools.js +19 -24
- package/dist/server/registerSessionStatusTool.js +19 -6
- package/dist/server/registerSessionTools.js +20 -18
- package/dist/server/registerWebModuleTool.js +2 -5
- package/dist/server/registerWebNetworkCaptureTool.js +2 -5
- package/dist/server/registerWebRuntimeTools.js +4 -9
- package/dist/server/registerWebScriptTool.js +2 -5
- package/dist/server/registerWebSourceLocationTool.js +2 -5
- package/dist/server/runDerivedOperation.js +15 -3
- package/dist/server/sessionAvailabilityPolicy.js +0 -1
- package/dist/server/toolRegistrationOptions.js +2 -2
- package/dist/server/toolResult.js +75 -51
- package/dist/server/toolResultEncoding.js +34 -0
- package/dist/windows/WindowsNativeLoader.js +1 -0
- package/dist/windows/WindowsOwnedProcess.js +60 -15
- package/dist/windows/WindowsPrivateRuntime.js +7 -8
- package/install.sh +1 -1
- package/native/windows/README.md +3 -1
- package/native/windows/build/manifest.json +2 -2
- package/native/windows/build/rea-windows-x64.node +0 -0
- package/package.json +44 -30
- package/scripts/electron-active-hook-boundaries.cjs +18 -20
- package/scripts/electron-active-hook.cjs +241 -37
- package/scripts/rea.mjs +3 -6
- package/skills/reverse-engineer-anything/SKILL.md +12 -3
- package/skills/reverse-engineer-anything/references/android-applications.md +6 -3
- package/skills/reverse-engineer-anything/references/evidence-workflows.md +8 -4
- package/skills/reverse-engineer-anything/references/javascript-applications.md +20 -3
- package/skills/reverse-engineer-anything/references/native-and-artifacts.md +9 -0
- package/dist/config.js +0 -1
- package/dist/contracts/browserCaptureToolInputSchema.js +0 -43
- package/dist/contracts/process/processCaptureExample.js +0 -2
- package/dist/contracts/toolOutputSchemas.js +0 -2
- package/dist/ghidra/GhidraDefaults.js +0 -2
- package/dist/main/reload.js +0 -12
- package/dist/main/state.js +0 -3
- package/dist/server/sessionToolPolicies.js +0 -2
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { toolContractMetadata } from "./toolEffects.js";
|
|
2
|
-
import { evidenceResultOf } from "./
|
|
2
|
+
import { evidenceResultOf } from "./toolOutputSchemaPrimitives.js";
|
|
3
3
|
import { browserScenarioInputSchema } from "../domain/browserScenario.js";
|
|
4
4
|
import { browserScenarioCaptureSchema } from "../domain/browserScenarioCapture.js";
|
|
5
5
|
const example = {
|
|
@@ -1,21 +1,20 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { inspectWebPageInputSchema, listBrowserTargetsInputSchema, } from "../domain/browserObservation.js";
|
|
2
|
+
import { browserTargetListSchema, webPageInspectionSchema, } from "../domain/browserObservationSchemas.js";
|
|
2
3
|
import { analyzeWebBundleInputSchema, webBundleAnalysisSchema, } from "../domain/webBundleAnalysis.js";
|
|
3
4
|
import { observeWebSessionInputSchema, webObservationSessionSchema, } from "../domain/browserSession.js";
|
|
4
5
|
import { discoverWebMcpToolsInputSchema, webMcpDiscoverySchema, } from "../domain/webMcpDiscovery.js";
|
|
5
|
-
import { browserCaptureComparisonSchema } from "../domain/browserCaptureComparison.js";
|
|
6
|
+
import { browserCaptureComparisonInputSchema, browserCaptureComparisonSchema, } from "../domain/browserCaptureComparison.js";
|
|
6
7
|
import { captureWebScreenshotInputSchema, compareWebScreenshotsInputSchema, webScreenshotDiffSchema, webScreenshotSchema, } from "../domain/webScreenshot.js";
|
|
7
8
|
import { toolContractMetadata } from "./toolEffects.js";
|
|
8
|
-
import { evidenceResultOf } from "./
|
|
9
|
-
|
|
10
|
-
const
|
|
11
|
-
const
|
|
12
|
-
const
|
|
13
|
-
const
|
|
14
|
-
const
|
|
15
|
-
const
|
|
16
|
-
const
|
|
17
|
-
const screenshotOutputSchema = evidenceResult(webScreenshotSchema);
|
|
18
|
-
const screenshotDiffOutputSchema = evidenceResult(webScreenshotDiffSchema);
|
|
9
|
+
import { evidenceResultOf } from "./toolOutputSchemaPrimitives.js";
|
|
10
|
+
const listOutputSchema = evidenceResultOf(browserTargetListSchema);
|
|
11
|
+
const inspectionOutputSchema = evidenceResultOf(webPageInspectionSchema);
|
|
12
|
+
const bundleOutputSchema = evidenceResultOf(webBundleAnalysisSchema);
|
|
13
|
+
const observationSessionOutputSchema = evidenceResultOf(webObservationSessionSchema);
|
|
14
|
+
const webMcpOutputSchema = evidenceResultOf(webMcpDiscoverySchema);
|
|
15
|
+
const captureDiffOutputSchema = evidenceResultOf(browserCaptureComparisonSchema);
|
|
16
|
+
const screenshotOutputSchema = evidenceResultOf(webScreenshotSchema);
|
|
17
|
+
const screenshotDiffOutputSchema = evidenceResultOf(webScreenshotDiffSchema);
|
|
19
18
|
const endpoint = "http://127.0.0.1:9222";
|
|
20
19
|
const origin = "https://app.example.test";
|
|
21
20
|
const scenarioUrl = {
|
|
@@ -50,6 +49,11 @@ const exampleScenarioCapture = () => ({
|
|
|
50
49
|
start_origin: origin,
|
|
51
50
|
action_count: 1,
|
|
52
51
|
secret_references: [],
|
|
52
|
+
network_content: {
|
|
53
|
+
request_body: false,
|
|
54
|
+
response_body: false,
|
|
55
|
+
header_values: false,
|
|
56
|
+
},
|
|
53
57
|
},
|
|
54
58
|
duration_ms: 10,
|
|
55
59
|
steps: [
|
|
@@ -182,9 +186,9 @@ export const BROWSER_TOOL_CONTRACTS = [
|
|
|
182
186
|
{
|
|
183
187
|
name: "compare_web_captures",
|
|
184
188
|
...toolContractMetadata("compare_web_captures"),
|
|
185
|
-
description: "Compare passive web captures by providing before and after, each with the complete inspect_web_page
|
|
189
|
+
description: "Compare passive web captures by providing before and after, each with the complete inspect_web_page normalized_result in inspection and an optional complete discover_webmcp_tools normalized_result in webmcp; or compare recorded scenarios by passing complete capture_browser_scenario normalized_result objects in 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.",
|
|
186
190
|
kind: "browser-provider",
|
|
187
|
-
inputSchema:
|
|
191
|
+
inputSchema: browserCaptureComparisonInputSchema,
|
|
188
192
|
outputSchema: captureDiffOutputSchema,
|
|
189
193
|
examples: [
|
|
190
194
|
{
|
|
@@ -18,18 +18,20 @@ export const enhancedInputSchemas = {
|
|
|
18
18
|
.default([]),
|
|
19
19
|
}),
|
|
20
20
|
get_call_graph: z.strictObject({
|
|
21
|
-
address: z
|
|
21
|
+
address: z
|
|
22
|
+
.string()
|
|
23
|
+
.describe("A procedure symbol or address to resolve to its canonical entry"),
|
|
22
24
|
direction: z.enum(["forward", "backward"]).default("forward"),
|
|
23
25
|
}),
|
|
24
26
|
analyze_swift_types: z.strictObject({
|
|
25
27
|
category: z
|
|
26
28
|
.enum(["classes", "structs", "enums", "protocols", "extensions", "other"])
|
|
27
29
|
.optional()
|
|
28
|
-
.describe("Limit results to one Swift
|
|
30
|
+
.describe("Limit categorized results to one Swift category; unresolved category observations remain in unclassified."),
|
|
29
31
|
pattern: z
|
|
30
32
|
.string()
|
|
31
33
|
.optional()
|
|
32
|
-
.describe("Case-sensitive literal filter applied to
|
|
34
|
+
.describe("Case-sensitive literal filter applied to provider procedure names and their supporting Swift manglings."),
|
|
33
35
|
}),
|
|
34
36
|
find_xrefs_to_name: z.strictObject({ name: z.string() }),
|
|
35
37
|
binary_overview: z.strictObject({}),
|
|
@@ -41,10 +43,10 @@ export const enhancedInputSchemas = {
|
|
|
41
43
|
}),
|
|
42
44
|
trace_feature: traceLiteralInputSchema,
|
|
43
45
|
trace_call_path: z.strictObject({
|
|
44
|
-
start: z.string().describe("A
|
|
46
|
+
start: z.string().describe("A starting procedure symbol or address"),
|
|
45
47
|
goal: z
|
|
46
48
|
.string()
|
|
47
|
-
.describe("An optional
|
|
49
|
+
.describe("An optional destination procedure symbol or address")
|
|
48
50
|
.optional(),
|
|
49
51
|
direction: z.enum(["forward", "backward"]).default("forward"),
|
|
50
52
|
}),
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
2
|
import { enhancedInputSchemas } from "./enhancedInputs.js";
|
|
3
|
-
import { enhancedOutputSchemas
|
|
3
|
+
import { enhancedOutputSchemas } from "./toolOutputSchemaGroups.js";
|
|
4
|
+
import { requireOutputSchema } from "./toolOutputSchemaPrimitives.js";
|
|
4
5
|
import { examplesFor } from "./toolContractHelpers.js";
|
|
5
6
|
import { toolContractMetadata } from "./toolEffects.js";
|
|
6
7
|
import { FUNCTION_WORKFLOW_TOOL_CONTRACTS } from "./functionWorkflowToolContracts.js";
|
|
@@ -18,14 +19,14 @@ export const ENHANCED_TOOL_CONTRACTS = [
|
|
|
18
19
|
enhanced("inspect_native_dispatch_metadata", "Inspect the bound provider's name inventory for Objective-C class/method symbols and Swift mangled symbols, returning at most max_records decoded names. Includes target SHA-256 when available, provider identity/version, analysis-profile digest, facet coverage, and per-record Evidence. This is symbol-level evidence, not runtime metadata: ivar layouts, protocol conformances, witness/class tables, and relative pointers are explicitly marked unsupported unless a provider supplies those decoders. The provider controls how its name inventory is acquired.", enhancedInputSchemas.inspect_native_dispatch_metadata),
|
|
19
20
|
enhanced("get_objc_classes", "Discover and deduplicate Objective-C class labels, optionally filtering by literal substring.", enhancedInputSchemas.get_objc_classes),
|
|
20
21
|
enhanced("get_objc_protocols", "Discover and deduplicate Objective-C and Swift protocol labels.", enhancedInputSchemas.get_objc_protocols),
|
|
21
|
-
enhanced("batch_decompile", "Decompile each explicit procedure symbol or address concurrently. Returns ordered per-item success or error results and aggregate counts.", enhancedInputSchemas.batch_decompile),
|
|
22
|
-
enhanced("get_call_graph", "
|
|
23
|
-
enhanced("analyze_swift_types", 'Categorize analyzed procedure names
|
|
22
|
+
enhanced("batch_decompile", "Decompile each explicit procedure symbol or address concurrently. Preserves each input selector in address and reports the observed canonical entry and entry label in procedure; identity or label failures remain explicit without discarding usable pseudocode. Returns ordered per-item success or error results and aggregate counts.", enhancedInputSchemas.batch_decompile),
|
|
23
|
+
enhanced("get_call_graph", "Resolve one symbol or address to its canonical procedure entry, then traverse the bound provider's caller or callee relationships until the reachable graph is exhausted. Every node uses a canonical address and has an ok/error status; failures use safe typed projections. Unresolved indirect calls may be missing and results are not a whole-program CFG.", enhancedInputSchemas.get_call_graph),
|
|
24
|
+
enhanced("analyze_swift_types", 'Categorize analyzed Swift procedure names using their manglings or same-address Swift symbol aliases. Decodes legacy and literal modern nominal contexts into classes, structs, enums, protocols, and extensions. Preserves provider names and supporting mangled_names; unresolved categories appear in other and in unclassified, which remains inline even under category filters. Returns deduplicated procedure-name counts, not unique source types, plus identification limitations. Optionally select one category and/or apply a case-sensitive literal filter to provider names or supporting manglings; for example, use {category: "structs", pattern: "Pair"}.', enhancedInputSchemas.analyze_swift_types),
|
|
24
25
|
enhanced("find_xrefs_to_name", "Resolve an exact name against the bound provider's name inventory and return a resolved or unresolved result. Unresolved names use the stable name_not_found reason; this xref workflow returns address-only projections.", enhancedInputSchemas.find_xrefs_to_name),
|
|
25
26
|
enhanced("binary_overview", "Return native-binary metadata, every segment with its length, and exhaustive procedure/string counts. Use search_procedures, list_procedures, or analyze_function directly when you already know which procedure to inspect.", enhancedInputSchemas.binary_overview),
|
|
26
27
|
...FUNCTION_WORKFLOW_TOOL_CONTRACTS,
|
|
27
|
-
enhanced("trace_feature", "Trace
|
|
28
|
-
enhanced("trace_call_path", "
|
|
28
|
+
enhanced("trace_feature", "Trace the complete literal query, preserving spaces, through every matching string and procedure, their xrefs, and truthful containing-procedure resolution. Returns observations, operation count, and residual unknowns without inferring reference kinds.", enhancedInputSchemas.trace_feature),
|
|
29
|
+
enhanced("trace_call_path", "Resolve start and optional goal symbols or addresses to canonical procedure entries, then trace direct callers or callees until the graph is exhausted or the goal is reached. Results use canonical addresses; Evidence preserves supplied selectors. Returns visited nodes, direct-call edges, a shortest traversal path, provider failures, and residual unknowns; unresolved indirect calls remain unknown.", enhancedInputSchemas.trace_call_path),
|
|
29
30
|
enhanced("trace_native_ui_action", "Trace one unique compiled UI action, object ID, native symbol or exact function address through authored connections, encoded or symbolized Objective-C handlers, and bounded static call references. Typed direct and resolved indirect calls, ambiguous candidates, inferred untyped provider callees, and targetless sites remain distinct. Runtime reachability is unknown; use trace_native_values for recovered value dependencies.", enhancedInputSchemas.trace_native_ui_action),
|
|
30
31
|
enhanced("trace_native_values", "Trace a bounded static dependency graph from one explicit native procedure. Includes high-p-code def-use, constants, operators, memory and branch operations, resolved call edges, and derived argument/parameter and return/output bindings. Missing bindings, alias semantics, persistent state and RNG roles remain unknown. Budgets bound depth, decompilations, graph size and payloads; nodes are paginated.", enhancedInputSchemas.trace_native_values),
|
|
31
32
|
];
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { inspectEvmInterfaceInputSchema, evmInterfaceSchema, } from "../../domain/evm/evmInterface.js";
|
|
2
2
|
import { toolContractMetadata } from "../toolEffects.js";
|
|
3
|
-
import { evidenceResultOf } from "../
|
|
3
|
+
import { evidenceResultOf } from "../toolOutputSchemaPrimitives.js";
|
|
4
4
|
/** Target-free EVM capabilities are independent of archive/Apple artifact providers. */
|
|
5
5
|
export const EVM_TOOL_CONTRACTS = [
|
|
6
6
|
{
|
|
@@ -2,7 +2,7 @@ import { jsonObjectSchema } from "../domain/jsonValue.js";
|
|
|
2
2
|
import { enhancedInputSchemas } from "./enhancedInputs.js";
|
|
3
3
|
import { TOOL_EXAMPLE_OVERRIDES } from "./toolContractExamples.js";
|
|
4
4
|
import { toolContractMetadata } from "./toolEffects.js";
|
|
5
|
-
import { enhancedOutputSchemas } from "./
|
|
5
|
+
import { enhancedOutputSchemas } from "./toolOutputSchemaGroups.js";
|
|
6
6
|
import { requireOutputSchema } from "./toolOutputSchemaPrimitives.js";
|
|
7
7
|
const functionWorkflow = (name, description) => {
|
|
8
8
|
const inputSchema = enhancedInputSchemas[name];
|
|
@@ -1,8 +1,5 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
|
-
|
|
3
|
-
const address = z
|
|
4
|
-
.string()
|
|
5
|
-
.describe("A provider-normalized address; default memory uses 0x-prefixed hexadecimal");
|
|
2
|
+
import { address, document } from "./toolContractHelpers.js";
|
|
6
3
|
/** Hopper memory and file-mapping contracts. */
|
|
7
4
|
export const HOPPER_MEMORY_TOOL_DEFINITIONS = [
|
|
8
5
|
{
|
|
@@ -16,7 +13,7 @@ export const HOPPER_MEMORY_TOOL_DEFINITIONS = [
|
|
|
16
13
|
},
|
|
17
14
|
{
|
|
18
15
|
name: "address_to_file_offset",
|
|
19
|
-
description: "Map one provider-normalized virtual address to its original nonnegative file offset. Unmapped addresses fail explicitly
|
|
16
|
+
description: "Map one provider-normalized virtual address to its original nonnegative file offset. Hopper verifies the original bytes against the selected executable digest and translates FAT image-relative offsets using the loaded header. Results preserve the provider coordinate, image base, and source path. Unmapped addresses fail explicitly; changed or unavailable sources return typed errors retaining native mapping facts as partial evidence.",
|
|
20
17
|
inputSchema: z.object({ address, document }),
|
|
21
18
|
},
|
|
22
19
|
];
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
const schemaMaps = new Set([
|
|
2
|
+
"$defs",
|
|
3
|
+
"definitions",
|
|
4
|
+
"properties",
|
|
5
|
+
"patternProperties",
|
|
6
|
+
"dependentSchemas",
|
|
7
|
+
"dependencies",
|
|
8
|
+
]);
|
|
9
|
+
const schemaArrays = new Set(["allOf", "anyOf", "oneOf", "prefixItems"]);
|
|
10
|
+
const schemaChildren = new Set([
|
|
11
|
+
"items",
|
|
12
|
+
"additionalItems",
|
|
13
|
+
"contains",
|
|
14
|
+
"additionalProperties",
|
|
15
|
+
"unevaluatedProperties",
|
|
16
|
+
"unevaluatedItems",
|
|
17
|
+
"propertyNames",
|
|
18
|
+
"not",
|
|
19
|
+
"if",
|
|
20
|
+
"then",
|
|
21
|
+
"else",
|
|
22
|
+
]);
|
|
23
|
+
const isObject = (value) => typeof value === "object" && value !== null && !Array.isArray(value);
|
|
24
|
+
const resolveReference = (root, reference) => {
|
|
25
|
+
if (!reference.startsWith("#/"))
|
|
26
|
+
return undefined;
|
|
27
|
+
let value = root;
|
|
28
|
+
for (const token of reference.slice(2).split("/")) {
|
|
29
|
+
const key = token.replaceAll("~1", "/").replaceAll("~0", "~");
|
|
30
|
+
if (!isObject(value) || !Object.hasOwn(value, key))
|
|
31
|
+
return undefined;
|
|
32
|
+
value = value[key];
|
|
33
|
+
}
|
|
34
|
+
return value;
|
|
35
|
+
};
|
|
36
|
+
const referencedDescription = (root, schema) => {
|
|
37
|
+
let value = schema;
|
|
38
|
+
const active = new Set();
|
|
39
|
+
while (isObject(value)) {
|
|
40
|
+
if (typeof value.description === "string")
|
|
41
|
+
return value.description;
|
|
42
|
+
if (typeof value.$ref !== "string" || active.has(value.$ref))
|
|
43
|
+
return undefined;
|
|
44
|
+
active.add(value.$ref);
|
|
45
|
+
value = resolveReference(root, value.$ref);
|
|
46
|
+
}
|
|
47
|
+
return undefined;
|
|
48
|
+
};
|
|
49
|
+
const describeSchema = (schema, root, describeProperty) => {
|
|
50
|
+
if (!isObject(schema))
|
|
51
|
+
return schema;
|
|
52
|
+
return Object.fromEntries(Object.entries(schema).map(([key, value]) => {
|
|
53
|
+
if (schemaMaps.has(key) && isObject(value))
|
|
54
|
+
return [
|
|
55
|
+
key,
|
|
56
|
+
Object.fromEntries(Object.entries(value).map(([name, child]) => {
|
|
57
|
+
const described = describeSchema(child, root, describeProperty);
|
|
58
|
+
return [
|
|
59
|
+
name,
|
|
60
|
+
key === "properties" && isObject(described)
|
|
61
|
+
? {
|
|
62
|
+
...described,
|
|
63
|
+
description: referencedDescription(root, described) ??
|
|
64
|
+
describeProperty(name),
|
|
65
|
+
}
|
|
66
|
+
: described,
|
|
67
|
+
];
|
|
68
|
+
})),
|
|
69
|
+
];
|
|
70
|
+
if (schemaArrays.has(key) && Array.isArray(value))
|
|
71
|
+
return [
|
|
72
|
+
key,
|
|
73
|
+
value.map((child) => describeSchema(child, root, describeProperty)),
|
|
74
|
+
];
|
|
75
|
+
if (schemaChildren.has(key))
|
|
76
|
+
return [
|
|
77
|
+
key,
|
|
78
|
+
Array.isArray(value)
|
|
79
|
+
? value.map((child) => describeSchema(child, root, describeProperty))
|
|
80
|
+
: describeSchema(value, root, describeProperty),
|
|
81
|
+
];
|
|
82
|
+
// Annotation values and literal const/enum data are not schemas.
|
|
83
|
+
return [key, value];
|
|
84
|
+
}));
|
|
85
|
+
};
|
|
86
|
+
/** Describe canonical input fields without changing structural constraints. */
|
|
87
|
+
export const presentInputJsonSchema = (root, describeProperty) => {
|
|
88
|
+
const described = describeSchema(root, root, describeProperty);
|
|
89
|
+
return isObject(described) ? described : root;
|
|
90
|
+
};
|
|
@@ -1,9 +1,10 @@
|
|
|
1
|
-
import { compareFunctions } from "../domain/functionComparison.js";
|
|
2
1
|
import { createEvidence } from "../domain/evidence.js";
|
|
3
2
|
import { jsonValueSchema } from "../domain/jsonValue.js";
|
|
4
|
-
import { compareProcessCaptures
|
|
3
|
+
import { compareProcessCaptures } from "../domain/process/processComparison.js";
|
|
4
|
+
import { parseProcessCapture } from "../domain/process/processCaptureParsing.js";
|
|
5
5
|
import { FUNCTION_COMPARISON_EXAMPLE } from "./functionComparisonExample.js";
|
|
6
|
-
import { EMPTY_PROCESS_CAPTURE_EXAMPLE } from "
|
|
6
|
+
import { EMPTY_PROCESS_CAPTURE_EXAMPLE } from "../domain/process/processCaptureExample.js";
|
|
7
|
+
import { compareFunctions } from "../domain/functionComparison.js";
|
|
7
8
|
const comparison = compareFunctions(FUNCTION_COMPARISON_EXAMPLE.left, FUNCTION_COMPARISON_EXAMPLE.right);
|
|
8
9
|
export const FUNCTION_COMPARISON_EVIDENCE = createEvidence(undefined, {
|
|
9
10
|
id: "rea-function-comparison",
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { toolContractMetadata } from "../toolEffects.js";
|
|
2
|
-
import { evidenceResultOf } from "../
|
|
2
|
+
import { evidenceResultOf } from "../toolOutputSchemaPrimitives.js";
|
|
3
3
|
import { electronPageInspectionSchema, electronTargetListSchema, inspectElectronPageInputSchema, listElectronTargetsInputSchema, } from "../../domain/javascript/electronObservation.js";
|
|
4
4
|
import { electronActiveObservationInputSchema, electronActiveObservationResultSchema, } from "../../domain/javascript/electronActiveObservation.js";
|
|
5
5
|
import { analyzeJavaScriptApplicationInputSchema, javascriptApplicationAnalysisResultSchema, } from "../../domain/javascript/javascriptApplicationAnalysis.js";
|
|
@@ -85,7 +85,7 @@ export const ELECTRON_TOOL_CONTRACTS = [
|
|
|
85
85
|
{
|
|
86
86
|
name: "capture_electron_scenario",
|
|
87
87
|
...toolContractMetadata("capture_electron_scenario"),
|
|
88
|
-
description: "Use this for a provider-owned Electron run when passive CDP or Inspector observation cannot exercise application behavior. REA owns startup and teardown, accepts caller-defined click/wait actions plus window-targeted renderer reload/crash and synthetic open-url/second-instance delivery, and returns correlated window/WebContents/process/preload/session/navigation/shell/IPC evidence without retaining payload values. Results identify observed and unavailable event families, coverage status, action targets, and truncation. External shell, navigation, permission, download, popup, updater, and OS-integration effects are blocked and recorded. Use passive Electron tools for observation-only work.",
|
|
88
|
+
description: "Use this for a provider-owned Electron run when passive CDP or Inspector observation cannot exercise application behavior. REA owns startup and teardown, accepts caller-defined click/wait actions plus window-targeted renderer reload/crash and synthetic open-url/second-instance delivery, and returns correlated window/WebContents/process/preload/session/navigation/shell/IPC evidence without retaining payload values. Actions wait for completion or request cancellation; a missing click target can keep the request pending. Results identify observed and unavailable event families, coverage status, action targets, and truncation. Cleanup failures retain collected observations with explicit cleanup uncertainty. External shell, navigation, permission, download, popup, updater, and OS-integration effects are blocked and recorded. Use passive Electron tools for observation-only work.",
|
|
89
89
|
kind: "electron-provider",
|
|
90
90
|
inputSchema: electronActiveObservationInputSchema,
|
|
91
91
|
outputSchema: evidenceResultOf(electronActiveObservationResultSchema),
|
|
@@ -82,23 +82,3 @@ export const SOURCE_TO_BUNDLE_COMPARISON_EXAMPLE = {
|
|
|
82
82
|
}),
|
|
83
83
|
application: JAVASCRIPT_APPLICATION_EVIDENCE_EXAMPLE,
|
|
84
84
|
};
|
|
85
|
-
/** Exact static return-shape comparison with both Evidence records inline. */
|
|
86
|
-
export const JAVASCRIPT_EXPORT_SHAPE_COMPARISON_EXAMPLE = {
|
|
87
|
-
left: JAVASCRIPT_APPLICATION_EVIDENCE_EXAMPLE,
|
|
88
|
-
right: reconciliationEvidence,
|
|
89
|
-
left_module_path: "parser.mjs",
|
|
90
|
-
left_export_name: "default",
|
|
91
|
-
right_module_path: "parser.mjs",
|
|
92
|
-
right_export_name: "default",
|
|
93
|
-
};
|
|
94
|
-
/** Full-Evidence compatibility fixture used by pure domain and adapter tests. */
|
|
95
|
-
export const JAVASCRIPT_FEATURE_TRACE_FULL_EVIDENCE_EXAMPLE = {
|
|
96
|
-
application: JAVASCRIPT_APPLICATION_EVIDENCE_EXAMPLE,
|
|
97
|
-
seed: TRACE_SEED,
|
|
98
|
-
direction: "both",
|
|
99
|
-
};
|
|
100
|
-
/** Full-Evidence compatibility comparison fixture. */
|
|
101
|
-
export const JAVASCRIPT_VERSION_COMPARISON_FULL_EVIDENCE_EXAMPLE = {
|
|
102
|
-
left: JAVASCRIPT_APPLICATION_EVIDENCE_EXAMPLE,
|
|
103
|
-
right: reconciliationEvidence,
|
|
104
|
-
};
|
|
@@ -0,0 +1,245 @@
|
|
|
1
|
+
import { createEvidence } from "../../domain/evidence.js";
|
|
2
|
+
import { createWebTextArtifact } from "../../domain/webContentArtifact.js";
|
|
3
|
+
import { analyzeJavaScriptSemantics } from "../../domain/javascript/javascriptSemanticAnalysis.js";
|
|
4
|
+
import { projectJavaScriptExportReturnShapes } from "../../domain/javascript/javascriptExportReturnShapeProjection.js";
|
|
5
|
+
import { completeApplicationCoverage, partialApplicationCoverage, } from "../../domain/javascript/javascriptApplicationEvidenceSchemas.js";
|
|
6
|
+
import { createJavaScriptApplicationGraph, createJavaScriptApplicationNode, } from "../../domain/javascript/javascriptApplicationGraph.js";
|
|
7
|
+
import { createJavaScriptSemanticGraph, createJavaScriptSemanticGraphNode, } from "../../domain/javascript/javascriptSemanticGraph.js";
|
|
8
|
+
import { JAVASCRIPT_SEMANTIC_RELATION_FAMILIES } from "../../domain/javascript/javascriptSemanticGraphSchemas.js";
|
|
9
|
+
import { javascriptApplicationAnalysisResultSchema } from "../../domain/javascript/javascriptApplicationAnalysis.js";
|
|
10
|
+
// Inventory identities/counters captured from real analysis of these two sources.
|
|
11
|
+
// The inline example retains only source-derived export facts, with explicit gaps.
|
|
12
|
+
const captures = {
|
|
13
|
+
count: {
|
|
14
|
+
input_path: "/examples/javascript-export-presence/left",
|
|
15
|
+
root_artifact_sha256: "5005ebc2f35719a2fc014f19a81c669f3a1ab471b7245ef6985a111b6845a747",
|
|
16
|
+
inventory_manifest_id: "agm_f30ded9a83d43a3980417bbe63dfad569e83386f243c4d6a01af0166372cb9e6",
|
|
17
|
+
inventory_graph_sha256: "4b8aceaf67e43fd8317ec1f5fd1df5235f8fa402335accf011683e008c6bc62c",
|
|
18
|
+
},
|
|
19
|
+
total: {
|
|
20
|
+
input_path: "/examples/javascript-export-presence/right",
|
|
21
|
+
root_artifact_sha256: "269ae72a601ad5ac02f1c2dda6ff9accffa2d2e4f4a9e406facee0d5a78a5377",
|
|
22
|
+
inventory_manifest_id: "agm_d3ceaa1af38fb3474070ca25c0d4644282e5fb7d5824cee3e3a81391481e9fc1",
|
|
23
|
+
inventory_graph_sha256: "3e9bc926951480c35385efe5650d9d781631bd74c37a523d543b5fbe06b01ce6",
|
|
24
|
+
},
|
|
25
|
+
};
|
|
26
|
+
const summary = {
|
|
27
|
+
browser_windows: 0,
|
|
28
|
+
explicit_web_preferences: 0,
|
|
29
|
+
preload_entrypoints: 0,
|
|
30
|
+
context_bridge_apis: 0,
|
|
31
|
+
exposed_api_members: 0,
|
|
32
|
+
ipc: {
|
|
33
|
+
operations: 0,
|
|
34
|
+
literal_channels: 0,
|
|
35
|
+
dynamic_channel_operations: 0,
|
|
36
|
+
renderer_transmissions: 0,
|
|
37
|
+
renderer_listeners: 0,
|
|
38
|
+
main_handlers: 0,
|
|
39
|
+
paired_renderer_transmissions: 0,
|
|
40
|
+
ambiguous_renderer_transmissions: 0,
|
|
41
|
+
unpaired_literal_renderer_transmissions: 0,
|
|
42
|
+
},
|
|
43
|
+
sender_validation_observations: 0,
|
|
44
|
+
utility_processes: 0,
|
|
45
|
+
resolved_utility_entrypoints: 0,
|
|
46
|
+
native_addon_bindings: 0,
|
|
47
|
+
resolved_native_addon_bindings: 0,
|
|
48
|
+
};
|
|
49
|
+
const statistics = {
|
|
50
|
+
relevant_files: 1,
|
|
51
|
+
nested_asar_containers: 0,
|
|
52
|
+
text_bytes_read: 60,
|
|
53
|
+
invalid_utf8_files: 0,
|
|
54
|
+
parsed_javascript_files: 1,
|
|
55
|
+
visited_ast_nodes: 12,
|
|
56
|
+
findings: 1,
|
|
57
|
+
modules: 0,
|
|
58
|
+
parse_failures: 0,
|
|
59
|
+
truncated_scopes: 0,
|
|
60
|
+
};
|
|
61
|
+
const modulePath = "parser.mjs";
|
|
62
|
+
const limitations = [
|
|
63
|
+
"This example retains export and return-shape facts only; other application and semantic relationships are omitted.",
|
|
64
|
+
];
|
|
65
|
+
const exampleEvidence = (property) => {
|
|
66
|
+
const metadata = captures[property];
|
|
67
|
+
const source = `export default () => ({ kind: "results", ${property}: query() });\n`;
|
|
68
|
+
const artifact = createWebTextArtifact(source, "text/javascript");
|
|
69
|
+
const ir = analyzeJavaScriptSemantics(source);
|
|
70
|
+
const link = ir.moduleLinks.find(({ exportedName }) => exportedName === "default");
|
|
71
|
+
if (link === undefined)
|
|
72
|
+
throw new Error("Example source must define a default export");
|
|
73
|
+
const coverage = ir.coverage.status === "complete"
|
|
74
|
+
? completeApplicationCoverage()
|
|
75
|
+
: partialApplicationCoverage([], ir.coverage.omittedCount);
|
|
76
|
+
const projection = projectJavaScriptExportReturnShapes({
|
|
77
|
+
ir,
|
|
78
|
+
link,
|
|
79
|
+
modulePath,
|
|
80
|
+
baseCoverage: coverage,
|
|
81
|
+
});
|
|
82
|
+
if (projection === null)
|
|
83
|
+
throw new Error("Example export must retain return shapes");
|
|
84
|
+
const evidence = {
|
|
85
|
+
artifact: {
|
|
86
|
+
available: true,
|
|
87
|
+
artifact_id: `art_${artifact.sha256}`,
|
|
88
|
+
sha256: artifact.sha256,
|
|
89
|
+
},
|
|
90
|
+
location: {
|
|
91
|
+
available: true,
|
|
92
|
+
value: { kind: "source-range", source: modulePath, ...link.location },
|
|
93
|
+
},
|
|
94
|
+
extractor: {
|
|
95
|
+
name: "rea-javascript-artifact-reconstruction",
|
|
96
|
+
version: "1",
|
|
97
|
+
operation: "recover-module-export",
|
|
98
|
+
executable_sha256: null,
|
|
99
|
+
},
|
|
100
|
+
coverage,
|
|
101
|
+
limitations: ir.limitations,
|
|
102
|
+
evidence_ids: [],
|
|
103
|
+
};
|
|
104
|
+
const exported = createJavaScriptApplicationNode({
|
|
105
|
+
kind: "javascript-module",
|
|
106
|
+
identity: {
|
|
107
|
+
strategy: "artifact-local-key",
|
|
108
|
+
stability: "artifact-version",
|
|
109
|
+
artifact_sha256: artifact.sha256,
|
|
110
|
+
namespace: "module-export",
|
|
111
|
+
key: `${metadata.root_artifact_sha256}:${modulePath}:default`,
|
|
112
|
+
},
|
|
113
|
+
observations: [
|
|
114
|
+
{
|
|
115
|
+
label: `${modulePath}:default`,
|
|
116
|
+
properties: {
|
|
117
|
+
semantic_role: "export-binding",
|
|
118
|
+
module_path: modulePath,
|
|
119
|
+
relationship_kind: link.kind,
|
|
120
|
+
exported_name: link.exportedName,
|
|
121
|
+
local_name: link.localName,
|
|
122
|
+
imported_name: link.importedName,
|
|
123
|
+
declared_specifier: link.specifier,
|
|
124
|
+
},
|
|
125
|
+
evidence: {
|
|
126
|
+
...evidence,
|
|
127
|
+
authority: "ast-static-analysis",
|
|
128
|
+
state: "observed",
|
|
129
|
+
confidence: "exact",
|
|
130
|
+
},
|
|
131
|
+
},
|
|
132
|
+
{
|
|
133
|
+
label: `${modulePath}:default:return-shapes`,
|
|
134
|
+
properties: projection.properties,
|
|
135
|
+
evidence: {
|
|
136
|
+
...evidence,
|
|
137
|
+
authority: "static-relationship-inference",
|
|
138
|
+
state: "inferred",
|
|
139
|
+
confidence: "high",
|
|
140
|
+
location: {
|
|
141
|
+
available: true,
|
|
142
|
+
value: {
|
|
143
|
+
kind: "source-range",
|
|
144
|
+
source: modulePath,
|
|
145
|
+
...projection.range,
|
|
146
|
+
},
|
|
147
|
+
},
|
|
148
|
+
extractor: {
|
|
149
|
+
...evidence.extractor,
|
|
150
|
+
operation: "recover-export-return-shapes",
|
|
151
|
+
},
|
|
152
|
+
coverage: projection.coverage,
|
|
153
|
+
limitations: projection.limitations,
|
|
154
|
+
},
|
|
155
|
+
},
|
|
156
|
+
],
|
|
157
|
+
});
|
|
158
|
+
const graph = createJavaScriptApplicationGraph({
|
|
159
|
+
schema: "JavaScriptApplicationGraph",
|
|
160
|
+
root_node_ids: [exported.node_id],
|
|
161
|
+
nodes: [exported],
|
|
162
|
+
edges: [],
|
|
163
|
+
coverage: partialApplicationCoverage([], null),
|
|
164
|
+
limitations,
|
|
165
|
+
});
|
|
166
|
+
const module = createJavaScriptSemanticGraphNode({
|
|
167
|
+
kind: "module",
|
|
168
|
+
identity: {
|
|
169
|
+
artifact_sha256: artifact.sha256,
|
|
170
|
+
module_path: modulePath,
|
|
171
|
+
source_range: null,
|
|
172
|
+
role_key: "example-module",
|
|
173
|
+
},
|
|
174
|
+
function_node_id: null,
|
|
175
|
+
application_node_ids: [exported.node_id],
|
|
176
|
+
label: modulePath,
|
|
177
|
+
properties: {},
|
|
178
|
+
evidence: {
|
|
179
|
+
...evidence,
|
|
180
|
+
authority: "ast-static-analysis",
|
|
181
|
+
state: "observed",
|
|
182
|
+
confidence: "exact",
|
|
183
|
+
},
|
|
184
|
+
});
|
|
185
|
+
const semanticGraph = createJavaScriptSemanticGraph({
|
|
186
|
+
schema: "JavaScriptSemanticRelationGraph",
|
|
187
|
+
root_artifact_sha256: metadata.root_artifact_sha256,
|
|
188
|
+
application_graph_id: graph.graph_id,
|
|
189
|
+
root_node_ids: [module.node_id],
|
|
190
|
+
nodes: [module],
|
|
191
|
+
relations: [],
|
|
192
|
+
fingerprints: [],
|
|
193
|
+
unknowns: [],
|
|
194
|
+
coverage: {
|
|
195
|
+
status: "unknown",
|
|
196
|
+
truncated: false,
|
|
197
|
+
omitted_nodes: null,
|
|
198
|
+
omitted_relations: null,
|
|
199
|
+
limits: [],
|
|
200
|
+
families: JAVASCRIPT_SEMANTIC_RELATION_FAMILIES.map((family) => ({
|
|
201
|
+
family,
|
|
202
|
+
status: "unknown",
|
|
203
|
+
retained_relations: 0,
|
|
204
|
+
omitted_relations: null,
|
|
205
|
+
unknown_ids: [],
|
|
206
|
+
})),
|
|
207
|
+
},
|
|
208
|
+
limitations,
|
|
209
|
+
});
|
|
210
|
+
const result = javascriptApplicationAnalysisResultSchema.parse({
|
|
211
|
+
...metadata,
|
|
212
|
+
format: "directory",
|
|
213
|
+
graph,
|
|
214
|
+
semantic_graph: semanticGraph,
|
|
215
|
+
summary,
|
|
216
|
+
statistics,
|
|
217
|
+
limitations,
|
|
218
|
+
});
|
|
219
|
+
return createEvidence({
|
|
220
|
+
path: result.input_path,
|
|
221
|
+
sha256: result.root_artifact_sha256,
|
|
222
|
+
format: "directory",
|
|
223
|
+
}, {
|
|
224
|
+
id: "rea-javascript-application",
|
|
225
|
+
name: "REA JavaScript application analyzer",
|
|
226
|
+
version: "1",
|
|
227
|
+
}, {
|
|
228
|
+
predicateType: "rea.javascript-application-analysis",
|
|
229
|
+
operation: "analyze_javascript_application",
|
|
230
|
+
parameters: {},
|
|
231
|
+
result,
|
|
232
|
+
confidence: "derived",
|
|
233
|
+
authority: "shipped-artifact",
|
|
234
|
+
limitations,
|
|
235
|
+
});
|
|
236
|
+
};
|
|
237
|
+
/** Source-derived tagged exports with known presence and unresolved values. */
|
|
238
|
+
export const JAVASCRIPT_EXPORT_SHAPE_COMPARISON_EXAMPLE = {
|
|
239
|
+
left: exampleEvidence("count"),
|
|
240
|
+
right: exampleEvidence("total"),
|
|
241
|
+
left_module_path: modulePath,
|
|
242
|
+
left_export_name: "default",
|
|
243
|
+
right_module_path: modulePath,
|
|
244
|
+
right_export_name: "default",
|
|
245
|
+
};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { toolContractMetadata } from "../toolEffects.js";
|
|
2
|
-
import { evidenceResultOf } from "../
|
|
2
|
+
import { evidenceResultOf } from "../toolOutputSchemaPrimitives.js";
|
|
3
3
|
import { javascriptRuntimeObservationSchema, javascriptRuntimeTargetListSchema, listJavaScriptRuntimeTargetsInputSchema, observeJavaScriptRuntimeInputSchema, } from "../../domain/javascript/javascriptRuntimeObservation.js";
|
|
4
4
|
const endpoint = "http://127.0.0.1:9229";
|
|
5
5
|
/** Passive Node/Electron V8 Inspector discovery and observation contracts. */
|
|
@@ -1,24 +1,17 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
|
-
import { managedOutputSchemas } from "../
|
|
2
|
+
import { managedOutputSchemas } from "../toolOutputSchemaGroups.js";
|
|
3
3
|
import { toolContractMetadata } from "../toolEffects.js";
|
|
4
4
|
import { requireOutputSchema } from "../toolOutputSchemaPrimitives.js";
|
|
5
|
-
import { isAbsoluteLocalPath } from "../../domain/localPath.js";
|
|
5
|
+
import { isAbsoluteLocalPath, localPathStringSchema, } from "../../domain/localPath.js";
|
|
6
6
|
/** Exact caller boundary for execution-free PE/CLI triage and identity. */
|
|
7
|
-
const managedTargetInputSchema = z.strictObject({
|
|
8
|
-
path:
|
|
9
|
-
.string()
|
|
10
|
-
.min(1)
|
|
7
|
+
export const managedTargetInputSchema = z.strictObject({
|
|
8
|
+
path: localPathStringSchema
|
|
11
9
|
.refine(isAbsoluteLocalPath, {
|
|
12
10
|
message: "path must be an absolute local filesystem path (for example /tmp/Example.dll or C:\\Example.dll)",
|
|
13
11
|
})
|
|
14
12
|
.describe("Explicit absolute managed PE/CLI path; omit to reuse the previously selected managed target")
|
|
15
13
|
.optional(),
|
|
16
14
|
});
|
|
17
|
-
export const managedArtifactInputSchema = managedTargetInputSchema;
|
|
18
|
-
/** Exact caller boundary for execution-free metadata/signature/IL inspection. */
|
|
19
|
-
export const managedMemberInputSchema = managedTargetInputSchema;
|
|
20
|
-
/** Exact caller boundary for execution-free managed/native boundary inspection. */
|
|
21
|
-
export const managedNativeBoundaryInputSchema = managedTargetInputSchema;
|
|
22
15
|
const outputSchema = requireOutputSchema(managedOutputSchemas, "inspect_managed_artifact");
|
|
23
16
|
const memberOutputSchema = requireOutputSchema(managedOutputSchemas, "inspect_managed_members");
|
|
24
17
|
const nativeBoundaryOutputSchema = requireOutputSchema(managedOutputSchemas, "inspect_managed_native_boundaries");
|
|
@@ -29,7 +22,7 @@ export const MANAGED_TOOL_CONTRACTS = [
|
|
|
29
22
|
...toolContractMetadata("inspect_managed_artifact"),
|
|
30
23
|
description: "Open and classify an explicit managed PE/CLI path, or inspect the active managed target, then inventory exact assembly/module identity, target framework evidence, references, resources, and custom attributes without loading or executing target code. Returns complete inline inventories when metadata is admitted and explicit partial or malformed coverage otherwise.",
|
|
31
24
|
kind: "managed-provider",
|
|
32
|
-
inputSchema:
|
|
25
|
+
inputSchema: managedTargetInputSchema,
|
|
33
26
|
outputSchema,
|
|
34
27
|
examples: [
|
|
35
28
|
{
|
|
@@ -43,7 +36,7 @@ export const MANAGED_TOOL_CONTRACTS = [
|
|
|
43
36
|
...toolContractMetadata("inspect_managed_members"),
|
|
44
37
|
description: "Inspect PE/CLI metadata members, signatures, raw CIL hashes, decoded-instruction-tuple hashes, separately reported exception regions, call edges, and field-access anchors without loading or executing target code. Metadata tokens are reported as build-local coordinates bound to the artifact SHA-256 and MVID; the tuple hash does not resolve them or fully commit control flow.",
|
|
45
38
|
kind: "managed-provider",
|
|
46
|
-
inputSchema:
|
|
39
|
+
inputSchema: managedTargetInputSchema,
|
|
47
40
|
outputSchema: memberOutputSchema,
|
|
48
41
|
examples: [
|
|
49
42
|
{
|
|
@@ -57,7 +50,7 @@ export const MANAGED_TOOL_CONTRACTS = [
|
|
|
57
50
|
...toolContractMetadata("inspect_managed_native_boundaries"),
|
|
58
51
|
description: "Inspect PE/CLI ModuleRef, ImplMap/PInvoke declarations, CLI native-header indicators, and non-IL method implementation flags without loading or executing target code. Results are managed declarations and degraded native-boundary observations, not verified native exports or addresses.",
|
|
59
52
|
kind: "managed-provider",
|
|
60
|
-
inputSchema:
|
|
53
|
+
inputSchema: managedTargetInputSchema,
|
|
61
54
|
outputSchema: nativeBoundaryOutputSchema,
|
|
62
55
|
examples: [
|
|
63
56
|
{
|