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,6 +1,7 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
2
|
import { canonicalDigest, canonicalJson } from "../comparisonSemantics.js";
|
|
3
3
|
import { compareCodePoints, uniqueSorted } from "../canonicalOrdering.js";
|
|
4
|
+
import { freezeOwnedJsonSnapshotSteps } from "../immutableJson.js";
|
|
4
5
|
import { applicationEdgeInputSchema, applicationEdgeSchema, applicationNodeInputSchema, applicationNodeObservationSchema, applicationNodeSchema, javascriptApplicationGraphInputSchema, javascriptApplicationGraphRecordSchema, } from "./javascriptApplicationGraphSchemas.js";
|
|
5
6
|
const OBSERVATION_IDENTIFIER_STRATEGY = {
|
|
6
7
|
strategy: "semantic-content-sha256",
|
|
@@ -62,6 +63,18 @@ const checkEvidenceNormalization = (evidence, path, context) => {
|
|
|
62
63
|
path: [...path, "location"],
|
|
63
64
|
});
|
|
64
65
|
};
|
|
66
|
+
const sourceMapObservationMatchesIdentity = (identity, observation) => {
|
|
67
|
+
const { evidence, source_map_reference: reference } = observation;
|
|
68
|
+
return (reference !== null &&
|
|
69
|
+
evidence.state === "observed" &&
|
|
70
|
+
evidence.artifact.available &&
|
|
71
|
+
evidence.artifact.sha256 === identity.source_map_sha256 &&
|
|
72
|
+
reference.source_name === identity.original_source &&
|
|
73
|
+
reference.source_root === identity.source_root &&
|
|
74
|
+
evidence.location.available &&
|
|
75
|
+
evidence.location.value.kind === "artifact-path" &&
|
|
76
|
+
reference.map_path === evidence.location.value.path);
|
|
77
|
+
};
|
|
65
78
|
const observationMatchesIdentity = (node, observation) => {
|
|
66
79
|
const { identity } = node;
|
|
67
80
|
const { evidence } = observation;
|
|
@@ -70,9 +83,7 @@ const observationMatchesIdentity = (node, observation) => {
|
|
|
70
83
|
evidence.artifact.available &&
|
|
71
84
|
evidence.artifact.sha256 === identity.sha256);
|
|
72
85
|
if (identity.strategy === "source-map-original")
|
|
73
|
-
return (
|
|
74
|
-
evidence.artifact.available &&
|
|
75
|
-
evidence.artifact.sha256 === identity.source_map_sha256);
|
|
86
|
+
return sourceMapObservationMatchesIdentity(identity, observation);
|
|
76
87
|
if (identity.strategy === "canonical-path")
|
|
77
88
|
return (evidence.artifact.available &&
|
|
78
89
|
evidence.artifact.sha256 === identity.artifact_sha256 &&
|
|
@@ -125,6 +136,19 @@ const checkNode = (node, index, context) => {
|
|
|
125
136
|
"observation_id",
|
|
126
137
|
],
|
|
127
138
|
});
|
|
139
|
+
if (node.identity.strategy === "source-map-original" &&
|
|
140
|
+
!observationMatchesIdentity(node, observation))
|
|
141
|
+
context.addIssue({
|
|
142
|
+
code: "custom",
|
|
143
|
+
message: "Source-map observation must retain its exact declaration and map location",
|
|
144
|
+
path: [
|
|
145
|
+
"nodes",
|
|
146
|
+
index,
|
|
147
|
+
"observations",
|
|
148
|
+
observationIndex,
|
|
149
|
+
"source_map_reference",
|
|
150
|
+
],
|
|
151
|
+
});
|
|
128
152
|
checkEvidenceNormalization(observation.evidence, ["nodes", index, "observations", observationIndex, "evidence"], context);
|
|
129
153
|
}
|
|
130
154
|
if (!node.observations.some((observation) => observationMatchesIdentity(node, observation)))
|
|
@@ -255,6 +279,18 @@ export const createJavaScriptApplicationGraph = (input) => {
|
|
|
255
279
|
graph_id: `jag_${canonicalDigest(semantic, "JavaScript Application Graph")}`,
|
|
256
280
|
});
|
|
257
281
|
};
|
|
282
|
+
const validatedImmutableApplicationGraphs = new WeakSet();
|
|
283
|
+
/** Clone and validate synchronously, then return steps to seal the owned graph. */
|
|
284
|
+
export const createImmutableJavaScriptApplicationGraphSteps = (input) => sealValidatedApplicationGraphSteps(createJavaScriptApplicationGraph(input));
|
|
285
|
+
function* sealValidatedApplicationGraphSteps(graph) {
|
|
286
|
+
yield* freezeOwnedJsonSnapshotSteps(graph);
|
|
287
|
+
validatedImmutableApplicationGraphs.add(graph);
|
|
288
|
+
return graph;
|
|
289
|
+
}
|
|
290
|
+
/** Recognize the exact completely sealed graph produced by the owned factory. */
|
|
291
|
+
export const isValidatedImmutableJavaScriptApplicationGraph = (value) => typeof value === "object" &&
|
|
292
|
+
value !== null &&
|
|
293
|
+
validatedImmutableApplicationGraphs.has(value);
|
|
258
294
|
/** Parse a stored graph and reject stale IDs. */
|
|
259
295
|
export const parseJavaScriptApplicationGraph = (input) => javascriptApplicationGraphSchema.parse(input);
|
|
260
296
|
/** Compute the byte-stable SHA-256 commitment of a verified graph. */
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
|
+
import { javascriptSourceMapReferenceSchema } from "./javascriptSourceMapPaths.js";
|
|
2
3
|
import { applicationCoverageSchema, applicationGraphEvidenceSchema, applicationNodeIdentitySchema, } from "./javascriptApplicationEvidenceSchemas.js";
|
|
3
4
|
import { jsonValueSchema } from "../jsonValue.js";
|
|
4
5
|
import { prefixedDigestSchema } from "../digests.js";
|
|
@@ -61,13 +62,19 @@ export const JAVASCRIPT_APPLICATION_RELATIONS = [
|
|
|
61
62
|
const applicationRelationSchema = z.enum(JAVASCRIPT_APPLICATION_RELATIONS);
|
|
62
63
|
const applicationPropertiesSchema = z.record(z.string().min(1), jsonValueSchema);
|
|
63
64
|
/** One node observation before its semantic identifier is derived. */
|
|
64
|
-
const
|
|
65
|
+
const applicationNodeObservationBaseSchema = z.strictObject({
|
|
65
66
|
label: z.string().min(1).nullable(),
|
|
67
|
+
source_map_reference: javascriptSourceMapReferenceSchema.nullable(),
|
|
66
68
|
properties: applicationPropertiesSchema,
|
|
67
69
|
evidence: applicationGraphEvidenceSchema,
|
|
68
70
|
});
|
|
71
|
+
const applicationNodeObservationInputSchema = applicationNodeObservationBaseSchema.extend({
|
|
72
|
+
source_map_reference: javascriptSourceMapReferenceSchema
|
|
73
|
+
.nullable()
|
|
74
|
+
.default(null),
|
|
75
|
+
});
|
|
69
76
|
/** One immutable, evidence-bearing observation attached to an entity. */
|
|
70
|
-
export const applicationNodeObservationSchema =
|
|
77
|
+
export const applicationNodeObservationSchema = applicationNodeObservationBaseSchema.extend({
|
|
71
78
|
observation_id: prefixedDigestSchema("jag_observation"),
|
|
72
79
|
identifier_strategy: z.strictObject({
|
|
73
80
|
strategy: z.literal("semantic-content-sha256"),
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { absenceClaimable, canonicalDigest, canonicalJson, } from "../comparisonSemantics.js";
|
|
2
2
|
import { compareCodePoints } from "../canonicalOrdering.js";
|
|
3
|
-
import {} from "./javascriptApplicationGraph.js";
|
|
4
3
|
/** Classify matched, unmatched, and ambiguous nodes without inventing absence. */
|
|
5
4
|
export const classifyJavaScriptApplicationVersions = (matching, context) => {
|
|
6
5
|
const pairByLeft = new Map(matching.pairs.map(({ left, right }) => [
|
|
@@ -204,7 +203,11 @@ const locations = (node) => node.observations
|
|
|
204
203
|
.map(({ evidence }) => evidence.location.available ? evidence.location.value : evidence.location)
|
|
205
204
|
.sort((left, right) => compareCodePoints(canonicalJson(left), canonicalJson(right)));
|
|
206
205
|
const properties = (node) => node.observations
|
|
207
|
-
.map(({ label, properties: values }) => ({
|
|
206
|
+
.map(({ label, properties: values, source_map_reference }) => ({
|
|
207
|
+
label,
|
|
208
|
+
properties: values,
|
|
209
|
+
source_map_reference,
|
|
210
|
+
}))
|
|
208
211
|
.sort((left, right) => compareCodePoints(canonicalJson(left), canonicalJson(right)));
|
|
209
212
|
const relationshipSignature = (node, side, context) => {
|
|
210
213
|
const graph = side === "left" ? context.leftGraph : context.rightGraph;
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { canonicalJson } from "../comparisonSemantics.js";
|
|
1
2
|
import { compareCodePoints } from "../canonicalOrdering.js";
|
|
2
3
|
const matchTiers = () => [
|
|
3
4
|
{
|
|
@@ -112,7 +113,7 @@ const moduleSourceDigestKey = (node) => {
|
|
|
112
113
|
};
|
|
113
114
|
const sourceMapKey = (node) => node.kind === "source-module" &&
|
|
114
115
|
node.identity.strategy === "source-map-original"
|
|
115
|
-
? `source-map\0${node.identity.original_source}`
|
|
116
|
+
? `source-map\0${canonicalJson([node.identity.source_root, node.identity.original_source])}`
|
|
116
117
|
: null;
|
|
117
118
|
const structuralFingerprintKey = (node) => {
|
|
118
119
|
if (node.kind !== "javascript-module")
|
|
@@ -1,4 +1,24 @@
|
|
|
1
1
|
import * as t from "@babel/types";
|
|
2
|
+
/** Read one syntax-level primitive only when its value is exact. */
|
|
3
|
+
export const readExactJavaScriptLiteral = (node) => {
|
|
4
|
+
if (t.isStringLiteral(node))
|
|
5
|
+
return { found: true, value: node.value };
|
|
6
|
+
if (t.isNumericLiteral(node) && Number.isFinite(node.value))
|
|
7
|
+
return { found: true, value: node.value };
|
|
8
|
+
if (t.isBooleanLiteral(node))
|
|
9
|
+
return { found: true, value: node.value };
|
|
10
|
+
if (t.isNullLiteral(node))
|
|
11
|
+
return { found: true, value: null };
|
|
12
|
+
if (t.isTemplateLiteral(node) &&
|
|
13
|
+
node.expressions.length === 0 &&
|
|
14
|
+
node.quasis.length === 1) {
|
|
15
|
+
const cooked = node.quasis[0]?.value.cooked;
|
|
16
|
+
return cooked === null || cooked === undefined
|
|
17
|
+
? { found: false }
|
|
18
|
+
: { found: true, value: cooked };
|
|
19
|
+
}
|
|
20
|
+
return { found: false };
|
|
21
|
+
};
|
|
2
22
|
/** Read an identifier or literal property name without evaluating syntax. */
|
|
3
23
|
export const propertyName = (node) => {
|
|
4
24
|
if (t.isIdentifier(node))
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { jsonObjectSchema, jsonValueSchema } from "
|
|
2
|
-
import { partialApplicationCoverage, truncatedApplicationCoverage, } from "
|
|
3
|
-
import { flattenSemanticReturnValue } from "
|
|
4
|
-
/** Project one exact export/callable link into
|
|
1
|
+
import { jsonObjectSchema, jsonValueSchema } from "../jsonValue.js";
|
|
2
|
+
import { partialApplicationCoverage, truncatedApplicationCoverage, } from "./javascriptApplicationEvidenceSchemas.js";
|
|
3
|
+
import { flattenSemanticReturnValue } from "./javascriptSemanticReturns.js";
|
|
4
|
+
/** Project one exact export/callable link into inert return-shape observations. */
|
|
5
5
|
export const projectJavaScriptExportReturnShapes = (input) => {
|
|
6
6
|
if (input.link.callableId === null || input.link.exportedName === null)
|
|
7
7
|
return null;
|
|
@@ -2,7 +2,7 @@ import { compareCodePoints, uniqueSorted } from "../canonicalOrdering.js";
|
|
|
2
2
|
import { canonicalExportShapeValue, digestExportShapeValue, } from "./javascriptExportShapeComparisonIdentity.js";
|
|
3
3
|
import { javaScriptExportShapeComparisonResultSchema, } from "./javascriptExportShapeComparisonSchemas.js";
|
|
4
4
|
import { retainJavaScriptExportShapes, selectJavaScriptExport, } from "./javascriptExportShapeSelection.js";
|
|
5
|
-
import { buildJavaScriptExportShapeChanges, hasPartialJavaScriptExportPropertyCoverage, pairJavaScriptExportShapeVariants, } from "./javascriptExportShapeVariants.js";
|
|
5
|
+
import { buildJavaScriptExportShapeChanges, buildJavaScriptExportShapeInventories, hasPartialJavaScriptExportPropertyCoverage, pairJavaScriptExportShapeVariants, } from "./javascriptExportShapeVariants.js";
|
|
6
6
|
/** Compare exact selected export return shapes without executing JavaScript. */
|
|
7
7
|
export const compareJavaScriptExportShapes = (input) => {
|
|
8
8
|
const left = selectJavaScriptExport(input.left);
|
|
@@ -21,6 +21,11 @@ export const compareJavaScriptExportShapes = (input) => {
|
|
|
21
21
|
}));
|
|
22
22
|
const changes = allChanges;
|
|
23
23
|
const omittedChanges = 0;
|
|
24
|
+
const propertyInventories = buildJavaScriptExportShapeInventories({
|
|
25
|
+
pairing,
|
|
26
|
+
leftShapes: leftRetained.shapes,
|
|
27
|
+
rightShapes: rightRetained.shapes,
|
|
28
|
+
});
|
|
24
29
|
const coverage = comparisonCoverage({
|
|
25
30
|
input,
|
|
26
31
|
left,
|
|
@@ -35,6 +40,7 @@ export const compareJavaScriptExportShapes = (input) => {
|
|
|
35
40
|
const semantic = {
|
|
36
41
|
left: left.selection,
|
|
37
42
|
right: right.selection,
|
|
43
|
+
property_inventories: propertyInventories,
|
|
38
44
|
summary: summarize(allChanges),
|
|
39
45
|
changes,
|
|
40
46
|
coverage,
|
|
@@ -1,6 +1,11 @@
|
|
|
1
1
|
import { createHash } from "node:crypto";
|
|
2
2
|
import canonicalize from "canonicalize";
|
|
3
|
-
/**
|
|
3
|
+
/**
|
|
4
|
+
* Canonically encode one export-shape comparison value.
|
|
5
|
+
*
|
|
6
|
+
* Comparison identifiers hash the full result semantics, including each
|
|
7
|
+
* change's presence object and the per-variant property inventories.
|
|
8
|
+
*/
|
|
4
9
|
export const canonicalExportShapeValue = (value) => {
|
|
5
10
|
const encoded = canonicalize(value);
|
|
6
11
|
if (encoded === undefined)
|
|
@@ -67,7 +67,10 @@ export const compareJavaScriptExportShapesInputSchema = z
|
|
|
67
67
|
message: "JavaScript export shape Evidence must be distinct",
|
|
68
68
|
});
|
|
69
69
|
});
|
|
70
|
-
const projectedReturnFieldShape = {
|
|
70
|
+
const projectedReturnFieldShape = {
|
|
71
|
+
path: jsonPointerSchema,
|
|
72
|
+
presence: z.enum(["present", "absent", "unknown-coverage"]),
|
|
73
|
+
};
|
|
71
74
|
const projectedReturnFieldSchema = z.discriminatedUnion("state", [
|
|
72
75
|
z.strictObject({
|
|
73
76
|
...projectedReturnFieldShape,
|
|
@@ -209,11 +212,20 @@ const discriminantSchema = z.strictObject({
|
|
|
209
212
|
path: jsonPointerSchema,
|
|
210
213
|
value: semanticPrimitiveSchema,
|
|
211
214
|
});
|
|
215
|
+
const propertyPresenceSchema = z.enum([
|
|
216
|
+
"present",
|
|
217
|
+
"absent",
|
|
218
|
+
"unknown-coverage",
|
|
219
|
+
]);
|
|
212
220
|
const comparisonChangeSchema = z.strictObject({
|
|
213
221
|
change_id: prefixedDigestSchema("jesc_change"),
|
|
214
222
|
status: z.enum(["added", "removed", "changed", "unknown"]),
|
|
215
223
|
path: jsonPointerSchema,
|
|
216
224
|
discriminant: discriminantSchema.nullable(),
|
|
225
|
+
presence: z.strictObject({
|
|
226
|
+
left: propertyPresenceSchema,
|
|
227
|
+
right: propertyPresenceSchema,
|
|
228
|
+
}),
|
|
217
229
|
left: valueAvailabilitySchema,
|
|
218
230
|
right: valueAvailabilitySchema,
|
|
219
231
|
left_source_range: sourceRangeSchema.nullable(),
|
|
@@ -221,11 +233,27 @@ const comparisonChangeSchema = z.strictObject({
|
|
|
221
233
|
evidence_links: z.array(evidenceIdSchema).length(2),
|
|
222
234
|
limitations: z.array(textSchema),
|
|
223
235
|
});
|
|
236
|
+
/** One change row; presence is required even when values stay unknown. */
|
|
237
|
+
export const javaScriptExportShapeComparisonChangeSchema = comparisonChangeSchema;
|
|
238
|
+
const inventoryPropertyCoverageSchema = z.strictObject({
|
|
239
|
+
path: jsonPointerSchema,
|
|
240
|
+
status: z.enum(["complete", "partial"]),
|
|
241
|
+
});
|
|
242
|
+
const propertyInventorySchema = z.strictObject({
|
|
243
|
+
side: z.enum(["left", "right"]),
|
|
244
|
+
variant_index: z.number().int().nonnegative(),
|
|
245
|
+
discriminant: discriminantSchema.nullable(),
|
|
246
|
+
paired: z.boolean(),
|
|
247
|
+
source_range: sourceRangeSchema,
|
|
248
|
+
properties: z.array(jsonPointerSchema),
|
|
249
|
+
property_coverage: z.array(inventoryPropertyCoverageSchema),
|
|
250
|
+
});
|
|
224
251
|
/** Static export-return comparison with explicit unknown semantics. */
|
|
225
252
|
export const javaScriptExportShapeComparisonResultSchema = z.strictObject({
|
|
226
253
|
comparison_id: prefixedDigestSchema("jesc"),
|
|
227
254
|
left: selectorResultSchema,
|
|
228
255
|
right: selectorResultSchema,
|
|
256
|
+
property_inventories: z.array(propertyInventorySchema),
|
|
229
257
|
summary: z.strictObject({
|
|
230
258
|
added: z.number().int().min(0),
|
|
231
259
|
removed: z.number().int().min(0),
|
|
@@ -41,11 +41,11 @@ export const selectJavaScriptExport = (side) => {
|
|
|
41
41
|
limitations: [],
|
|
42
42
|
};
|
|
43
43
|
};
|
|
44
|
-
/** Retain every
|
|
45
|
-
export const retainJavaScriptExportShapes = (selection) => {
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
};
|
|
44
|
+
/** Retain every authenticated variant with its explicit slot presence. */
|
|
45
|
+
export const retainJavaScriptExportShapes = (selection) => ({
|
|
46
|
+
shapes: selection.projection?.static_return_shapes ?? [],
|
|
47
|
+
omitted: 0,
|
|
48
|
+
});
|
|
49
49
|
const selectorBase = (side, candidates) => ({
|
|
50
50
|
evidence_id: side.evidenceId,
|
|
51
51
|
graph_id: side.graph.graph_id,
|
|
@@ -1,5 +1,9 @@
|
|
|
1
1
|
import { canonicalExportShapeValue, digestExportShapeValue, } from "./javascriptExportShapeComparisonIdentity.js";
|
|
2
2
|
import { compareCodePoints, uniqueSorted } from "../canonicalOrdering.js";
|
|
3
|
+
const UNKNOWN_COVERAGE_PRESENCE = {
|
|
4
|
+
left: "unknown-coverage",
|
|
5
|
+
right: "unknown-coverage",
|
|
6
|
+
};
|
|
3
7
|
/** Pair variants only through reciprocal unique exact literal discriminants. */
|
|
4
8
|
export const pairJavaScriptExportShapeVariants = (left, right) => {
|
|
5
9
|
const leftKeys = discriminantOccurrences(left);
|
|
@@ -61,12 +65,41 @@ export const buildJavaScriptExportShapeChanges = (input) => {
|
|
|
61
65
|
});
|
|
62
66
|
return [...paired, ...unpairedLeft, ...unpairedRight];
|
|
63
67
|
};
|
|
68
|
+
/** List observed property names per retained variant, including unknown values. */
|
|
69
|
+
export const buildJavaScriptExportShapeInventories = (input) => {
|
|
70
|
+
const leftPairs = new Map(input.pairing.pairs.map((pair) => [pair.leftIndex, pair]));
|
|
71
|
+
const rightPairs = new Map(input.pairing.pairs.map((pair) => [pair.rightIndex, pair]));
|
|
72
|
+
return [
|
|
73
|
+
...input.leftShapes.map((shape, index) => inventoryFor("left", index, shape, leftPairs.get(index))),
|
|
74
|
+
...input.rightShapes.map((shape, index) => inventoryFor("right", index, shape, rightPairs.get(index))),
|
|
75
|
+
];
|
|
76
|
+
};
|
|
77
|
+
const inventoryFor = (side, variantIndex, shape, pair) => ({
|
|
78
|
+
side,
|
|
79
|
+
variant_index: variantIndex,
|
|
80
|
+
discriminant: pair?.discriminant ?? null,
|
|
81
|
+
paired: pair !== undefined,
|
|
82
|
+
source_range: shape.source_range,
|
|
83
|
+
properties: uniqueSorted([
|
|
84
|
+
...shape.fields
|
|
85
|
+
.filter((field) => fieldPresence(shape, field, field.path) === "present")
|
|
86
|
+
.map(({ path }) => path),
|
|
87
|
+
...shape.property_coverage.map(({ path }) => path),
|
|
88
|
+
]).filter((path) => path !== ""),
|
|
89
|
+
property_coverage: shape.property_coverage.map(({ path, status }) => ({
|
|
90
|
+
path,
|
|
91
|
+
status,
|
|
92
|
+
})),
|
|
93
|
+
});
|
|
64
94
|
/** Report whether any retained shape lacks complete property coverage. */
|
|
65
|
-
export const hasPartialJavaScriptExportPropertyCoverage = (shapes) => shapes.some((shape) => shape.property_coverage.some(({ status }) => status === "partial")
|
|
95
|
+
export const hasPartialJavaScriptExportPropertyCoverage = (shapes) => shapes.some((shape) => shape.property_coverage.some(({ status }) => status === "partial") ||
|
|
96
|
+
shape.fields.some((field) => fieldPresence(shape, field, field.path) === "unknown-coverage"));
|
|
66
97
|
const discriminantOccurrences = (shapes) => {
|
|
67
98
|
const output = new Map();
|
|
68
99
|
shapes.forEach((shape, index) => {
|
|
69
100
|
for (const field of shape.fields) {
|
|
101
|
+
if (fieldPresence(shape, field, field.path) !== "present")
|
|
102
|
+
continue;
|
|
70
103
|
const value = literalValue(field);
|
|
71
104
|
if (!value.found)
|
|
72
105
|
continue;
|
|
@@ -111,6 +144,7 @@ const selectionUnknownChange = (input) => changeWithId({
|
|
|
111
144
|
status: "unknown",
|
|
112
145
|
path: "",
|
|
113
146
|
discriminant: null,
|
|
147
|
+
presence: UNKNOWN_COVERAGE_PRESENCE,
|
|
114
148
|
left: selectionAvailability(input.leftSelection.selection, "left"),
|
|
115
149
|
right: selectionAvailability(input.rightSelection.selection, "right"),
|
|
116
150
|
left_source_range: null,
|
|
@@ -124,6 +158,7 @@ const emptyShapeUnknownChange = (input) => changeWithId({
|
|
|
124
158
|
status: "unknown",
|
|
125
159
|
path: "",
|
|
126
160
|
discriminant: null,
|
|
161
|
+
presence: UNKNOWN_COVERAGE_PRESENCE,
|
|
127
162
|
left: emptyShapeAvailability(input.leftShapes, "left"),
|
|
128
163
|
right: emptyShapeAvailability(input.rightShapes, "right"),
|
|
129
164
|
left_source_range: null,
|
|
@@ -159,6 +194,10 @@ const diffPair = (left, right, discriminant, evidenceLinks) => {
|
|
|
159
194
|
status,
|
|
160
195
|
path,
|
|
161
196
|
discriminant,
|
|
197
|
+
presence: {
|
|
198
|
+
left: fieldPresence(left, leftField, path),
|
|
199
|
+
right: fieldPresence(right, rightField, path),
|
|
200
|
+
},
|
|
162
201
|
left: fieldAvailability(leftField),
|
|
163
202
|
right: fieldAvailability(rightField),
|
|
164
203
|
left_source_range: left.source_range,
|
|
@@ -181,29 +220,42 @@ const fieldAtPath = (shape, fields, path) => {
|
|
|
181
220
|
return undefined;
|
|
182
221
|
return {
|
|
183
222
|
path,
|
|
223
|
+
presence: "present",
|
|
184
224
|
state: "unknown",
|
|
185
225
|
value: null,
|
|
186
226
|
reason: "A static container is retained at this path, but no primitive field value is projected.",
|
|
187
227
|
};
|
|
188
228
|
};
|
|
189
229
|
const fieldChangeStatus = ({ leftShape, rightShape, path, leftField, rightField, }) => {
|
|
190
|
-
|
|
191
|
-
|
|
230
|
+
const leftPresence = fieldPresence(leftShape, leftField, path);
|
|
231
|
+
const rightPresence = fieldPresence(rightShape, rightField, path);
|
|
232
|
+
if (leftField !== undefined &&
|
|
233
|
+
rightField !== undefined &&
|
|
234
|
+
canonicalExportShapeValue(leftField) ===
|
|
192
235
|
canonicalExportShapeValue(rightField))
|
|
193
|
-
|
|
236
|
+
return null;
|
|
237
|
+
if (leftPresence === "absent" && rightPresence === "absent")
|
|
238
|
+
return null;
|
|
239
|
+
if (leftPresence === "unknown-coverage" ||
|
|
240
|
+
rightPresence === "unknown-coverage")
|
|
241
|
+
return "unknown";
|
|
242
|
+
if (leftPresence === "absent")
|
|
243
|
+
return "added";
|
|
244
|
+
if (rightPresence === "absent")
|
|
245
|
+
return "removed";
|
|
246
|
+
if (leftField !== undefined && rightField !== undefined) {
|
|
194
247
|
return leftField.state === "unknown" || rightField.state === "unknown"
|
|
195
248
|
? "unknown"
|
|
196
249
|
: "changed";
|
|
197
250
|
}
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
return leftField === undefined ? "added" : "removed";
|
|
251
|
+
return null;
|
|
252
|
+
};
|
|
253
|
+
const fieldPresence = (shape, field, path) => {
|
|
254
|
+
if (field !== undefined)
|
|
255
|
+
return field.presence;
|
|
256
|
+
return propertyCoverageComplete(shape, parentPointer(path))
|
|
257
|
+
? "absent"
|
|
258
|
+
: "unknown-coverage";
|
|
207
259
|
};
|
|
208
260
|
const propertyCoverageComplete = (shape, path) => path !== null &&
|
|
209
261
|
shape.property_coverage.some((coverage) => coverage.path === path && coverage.status === "complete");
|
|
@@ -214,7 +266,7 @@ const parentPointer = (path) => {
|
|
|
214
266
|
return separator < 0 ? null : path.slice(0, separator);
|
|
215
267
|
};
|
|
216
268
|
const fieldAvailability = (field) => {
|
|
217
|
-
if (field === undefined)
|
|
269
|
+
if (field === undefined || field.presence === "absent")
|
|
218
270
|
return { availability: "absent" };
|
|
219
271
|
if (field.state === "unknown")
|
|
220
272
|
return {
|
|
@@ -245,6 +297,7 @@ const unpairedChange = (side, shape, evidenceLinks) => changeWithId({
|
|
|
245
297
|
status: "unknown",
|
|
246
298
|
path: "",
|
|
247
299
|
discriminant: null,
|
|
300
|
+
presence: UNKNOWN_COVERAGE_PRESENCE,
|
|
248
301
|
left: {
|
|
249
302
|
availability: "unknown",
|
|
250
303
|
reason: side === "left"
|
|
@@ -62,6 +62,16 @@ const candidateFields = (node, seedKind) => {
|
|
|
62
62
|
value: observation.label,
|
|
63
63
|
},
|
|
64
64
|
]),
|
|
65
|
+
...(observation.source_map_reference !== null &&
|
|
66
|
+
observation.source_map_reference.resolution.kind !== "unresolved"
|
|
67
|
+
? [
|
|
68
|
+
{
|
|
69
|
+
basis: "property",
|
|
70
|
+
field: `observations[${String(index)}].source_map_reference.resolution.path`,
|
|
71
|
+
value: observation.source_map_reference.resolution.path,
|
|
72
|
+
},
|
|
73
|
+
]
|
|
74
|
+
: []),
|
|
65
75
|
...propertyFields(observation.properties, `observations[${String(index)}].properties`),
|
|
66
76
|
]),
|
|
67
77
|
];
|
|
@@ -89,6 +99,7 @@ const relevantFields = {
|
|
|
89
99
|
".path",
|
|
90
100
|
".source",
|
|
91
101
|
".original_source",
|
|
102
|
+
".source_root",
|
|
92
103
|
".exports",
|
|
93
104
|
],
|
|
94
105
|
"native-export": [".label", ".key", ".requested_members", ".members"],
|
|
@@ -104,6 +115,15 @@ const identityFields = (node) => {
|
|
|
104
115
|
field: "identity.original_source",
|
|
105
116
|
value: identity.original_source,
|
|
106
117
|
},
|
|
118
|
+
...(identity.source_root === null
|
|
119
|
+
? []
|
|
120
|
+
: [
|
|
121
|
+
{
|
|
122
|
+
basis: "identity",
|
|
123
|
+
field: "identity.source_root",
|
|
124
|
+
value: identity.source_root,
|
|
125
|
+
},
|
|
126
|
+
]),
|
|
107
127
|
];
|
|
108
128
|
if (identity.strategy === "canonical-path")
|
|
109
129
|
return [
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import {} from "./javascriptApplicationGraph.js";
|
|
2
1
|
import { compareCodePoints } from "../canonicalOrdering.js";
|
|
3
2
|
/** Traverse a JAG without treating edge inference as observed reachability. */
|
|
4
3
|
export const traverseApplicationFeature = (graph, seedNodeIds, direction) => {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { compareCodePoints } from "../canonicalOrdering.js";
|
|
2
|
-
import {} from "./
|
|
2
|
+
import {} from "./javascriptApplicationGraphSchemas.js";
|
|
3
3
|
/** Build provider-neutral addon targets and link exact-subject native Evidence. */
|
|
4
4
|
export const buildJavaScriptNativeHandoffs = (nodes, edges, nativeEvidence) => {
|
|
5
5
|
const nodeById = new Map(nodes.map((node) => [node.node_id, node]));
|
|
@@ -1,16 +1,11 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
2
|
import { digestSchema } from "../digests.js";
|
|
3
3
|
import { analyzeJavaScriptApplicationInputSchema } from "./javascriptApplicationAnalysis.js";
|
|
4
|
+
import { localPathStringSchema } from "../localPath.js";
|
|
4
5
|
/** Recover derived readable modules from one explicitly selected local script. */
|
|
5
6
|
export const javascriptRecoveryInputSchema = z.strictObject({
|
|
6
|
-
path:
|
|
7
|
-
|
|
8
|
-
.min(1)
|
|
9
|
-
.describe("Absolute path to a UTF-8 JavaScript file; never executed"),
|
|
10
|
-
output_directory: z
|
|
11
|
-
.string()
|
|
12
|
-
.min(1)
|
|
13
|
-
.describe("Absolute absent output directory; parent must exist"),
|
|
7
|
+
path: localPathStringSchema.describe("Absolute path to a UTF-8 JavaScript file; never executed"),
|
|
8
|
+
output_directory: localPathStringSchema.describe("Absolute absent output directory; parent must exist"),
|
|
14
9
|
extraction_mode: z
|
|
15
10
|
.enum(["structural", "heuristic", "inspection"])
|
|
16
11
|
.default("structural")
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import {} from "./javascriptApplicationGraph.js";
|
|
2
1
|
import { uniqueSorted } from "../canonicalOrdering.js";
|
|
3
2
|
import { createStaticRuntimeScope, mappedRuntimePaths, staticNodeWithinRuntimeScope, } from "./javascriptRuntimeStaticCandidates.js";
|
|
4
3
|
/** Classify static code presence without claiming bundled module execution. */
|
|
@@ -77,8 +77,16 @@ const javascriptRuntimeScriptSchema = z.strictObject({
|
|
|
77
77
|
location: javascriptRuntimeLocationSchema,
|
|
78
78
|
execution_context_key: z.string().nullable(),
|
|
79
79
|
cdp_hash: z.string().nullable(),
|
|
80
|
-
length: z
|
|
81
|
-
|
|
80
|
+
length: z
|
|
81
|
+
.number()
|
|
82
|
+
.int()
|
|
83
|
+
.min(0)
|
|
84
|
+
.nullable()
|
|
85
|
+
.describe("Producer-reported script length; null when unavailable."),
|
|
86
|
+
is_module: z
|
|
87
|
+
.boolean()
|
|
88
|
+
.nullable()
|
|
89
|
+
.describe("Producer-reported module classification; null when unavailable."),
|
|
82
90
|
status: z.literal("observed-loaded"),
|
|
83
91
|
});
|
|
84
92
|
const javascriptRuntimeContextSchema = z.strictObject({
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { createJavaScriptApplicationEdge
|
|
1
|
+
import { createJavaScriptApplicationEdge } from "./javascriptApplicationGraph.js";
|
|
2
2
|
import { canonicalDigest } from "../comparisonSemantics.js";
|
|
3
3
|
import { compareCodePoints } from "../canonicalOrdering.js";
|
|
4
4
|
import { mappedRuntimePaths, } from "./javascriptRuntimeStaticCandidates.js";
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
|
-
import { browserAllowedOriginsSchema, browserEndpointSchema,
|
|
2
|
+
import { browserAllowedOriginsSchema, browserEndpointSchema, } from "../browserObservation.js";
|
|
3
|
+
import { webPageInspectionSchema, } from "../browserObservationSchemas.js";
|
|
3
4
|
import { classifyBrowserCompleteness, } from "../browserCompleteness.js";
|
|
4
5
|
import { electronPageInspectionSchema, } from "./electronObservation.js";
|
|
5
6
|
import { javascriptRuntimeObservationSchema, javascriptRuntimeKindSchema, } from "./javascriptRuntimeObservation.js";
|
|
@@ -160,7 +161,7 @@ const normalizeV8Inspection = (result) => ({
|
|
|
160
161
|
script_key: script.script_key,
|
|
161
162
|
frame_id: script.execution_context_key,
|
|
162
163
|
...runtimeLocation(script.location),
|
|
163
|
-
cdp_hash: script.cdp_hash
|
|
164
|
+
cdp_hash: script.cdp_hash,
|
|
164
165
|
length: script.length,
|
|
165
166
|
is_module: script.is_module,
|
|
166
167
|
language: null,
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { posix, relative, win32 } from "node:path";
|
|
2
|
-
import {} from "./javascriptApplicationGraph.js";
|
|
3
2
|
import { compareCodePoints, uniqueSorted } from "../canonicalOrdering.js";
|
|
4
3
|
/** Index statically reconstructed entities that can receive runtime matches. */
|
|
5
4
|
export const collectStaticRuntimeCandidates = (layers) => layers
|