rea-agents 4.1.0 → 6.0.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 +173 -568
- package/bridge/android/ReaJadxBridge.java +247 -0
- package/bridge/mitmproxy/capture.py +210 -0
- package/bridge/native/NativeUIChildren.swift +27 -0
- package/bridge/native/ReaNativeUI.swift +30 -16
- package/bridge/native/rea_lldb_tracer.py +303 -0
- package/bridge/process/ProcessRunTokenReader.swift +263 -0
- package/bridge/process/ProcessRunTokenReaderMain.swift +35 -0
- package/bridge/pwndbg/core_context.py +101 -0
- package/bridge/pwndbg/launch.py +39 -0
- package/bridge/pwndbg/launch_impl.py +34 -0
- package/bridge/pwntools/decoder_runtime.py +59 -0
- package/bridge/pwntools/layout.py +39 -0
- package/bridge/pwntools/layout_impl.py +309 -0
- package/bridge/pwntools/recorded_crash.py +39 -0
- package/bridge/pwntools/recorded_crash_impl.py +143 -0
- package/dist/android/AndroidTargetSnapshot.js +5 -3
- package/dist/android/JadxAnalysis.js +8 -6
- package/dist/android/JadxConfiguration.js +19 -3
- package/dist/android/JadxMcpTransport.js +43 -16
- package/dist/android/JadxProtocol.js +8 -0
- package/dist/android/JadxProvider.js +118 -28
- package/dist/android/JadxRelease.js +8 -0
- package/dist/android/JadxSession.js +32 -18
- package/dist/application/AppBundleExecutable.js +141 -0
- package/dist/application/BinaryTargetResolver.js +9 -64
- package/dist/application/CapabilityInventory.js +82 -3
- package/dist/application/ClientConfigurationDocument.js +72 -12
- package/dist/application/ClientRegistrationStatus.js +7 -8
- package/dist/application/DirectAnalysis.js +109 -37
- package/dist/application/DirectAnalysisStatus.js +4 -5
- package/dist/application/DoctorDiagnostics.js +3 -3
- package/dist/application/EnhancedTools.js +4 -4
- package/dist/application/EvidenceBundleCommands.js +1 -1
- package/dist/application/EvidenceBundleFiles.js +1 -1
- package/dist/application/InvestigationProviders.js +6 -0
- package/dist/application/LinuxHopper.js +8 -2
- package/dist/application/OptionalObservationProviders.js +3 -0
- package/dist/application/ReconstructionCoverageService.js +2 -6
- package/dist/application/ReconstructionObligationCandidates.js +10 -3
- package/dist/application/ReferenceSourceImport.js +2 -0
- package/dist/application/ReferenceSourceImportEntries.js +20 -3
- package/dist/application/ReferenceSourceImportTypes.js +5 -0
- package/dist/application/Setup.js +10 -2
- package/dist/application/SetupClientConfiguration.js +19 -16
- package/dist/application/SetupHost.js +18 -3
- package/dist/application/SetupPlan.js +1 -1
- package/dist/application/Uninstall.js +23 -17
- package/dist/application/UpdateMaintenance.js +3 -3
- package/dist/application/ValidateSelectedWebScript.js +27 -0
- package/dist/application/WebModuleTraceService.js +209 -0
- package/dist/application/WebNetworkCaptureService.js +132 -0
- package/dist/application/WebRuntimeService.js +73 -0
- package/dist/application/WebScriptExportService.js +115 -0
- package/dist/application/WebSourceLocationService.js +160 -0
- package/dist/application/WindowsCapabilities.js +1 -1
- package/dist/application/{AndroidAnalysisService.js → android/AndroidAnalysisService.js} +6 -6
- package/dist/application/{AndroidApplicationService.js → android/AndroidApplicationService.js} +3 -3
- package/dist/application/{AppleApplicationService.js → apple/AppleApplicationService.js} +5 -5
- package/dist/application/{AnalysisClientCleanup.js → binary/AnalysisClientCleanup.js} +2 -2
- package/dist/application/{AnalysisProviderEvaluation.js → binary/AnalysisProviderEvaluation.js} +4 -4
- package/dist/application/{AnalysisProviderRegistry.js → binary/AnalysisProviderRegistry.js} +5 -5
- package/dist/application/{AnalysisSnapshotCache.js → binary/AnalysisSnapshotCache.js} +55 -14
- package/dist/application/{AnalysisSnapshotFiles.js → binary/AnalysisSnapshotFiles.js} +4 -4
- package/dist/application/{BinarySession.js → binary/BinarySession.js} +50 -20
- package/dist/application/{BinarySessionComposition.js → binary/BinarySessionComposition.js} +2 -1
- package/dist/application/{BinarySessionExecution.js → binary/BinarySessionExecution.js} +9 -7
- package/dist/application/{BinarySessionOpen.js → binary/BinarySessionOpen.js} +22 -9
- package/dist/application/{BinarySessionRecords.js → binary/BinarySessionRecords.js} +48 -40
- package/dist/application/{CompositeProvider.js → binary/CompositeProvider.js} +2 -2
- package/dist/application/{LazyAnalysisProvider.js → binary/LazyAnalysisProvider.js} +6 -6
- package/dist/application/{SessionProviderRouter.js → binary/SessionProviderRouter.js} +7 -7
- package/dist/application/binaryDiagnostics/BinaryLayoutService.js +57 -0
- package/dist/application/binaryDiagnostics/RecordedCrashPort.js +1 -0
- package/dist/application/binaryDiagnostics/RecordedCrashService.js +60 -0
- package/dist/application/evm/EvmInterfacePort.js +1 -0
- package/dist/application/evm/EvmInterfaceService.js +62 -0
- package/dist/application/firmware/FirmwareAnalysisPort.js +1 -0
- package/dist/application/{FirmwareAnalysisService.js → firmware/FirmwareAnalysisService.js} +5 -5
- package/dist/application/{EvidenceLedger.js → investigation/EvidenceLedger.js} +44 -7
- package/dist/application/investigation/InvestigationRecordPort.js +1 -0
- package/dist/application/investigation/InvestigationRecords.js +69 -0
- package/dist/application/{UnknownEvidence.js → investigation/UnknownEvidence.js} +1 -1
- package/dist/application/{ElectronActiveEvidence.js → javascript/ElectronActiveEvidence.js} +3 -3
- package/dist/application/javascript/ElectronActiveObservationPort.js +1 -0
- package/dist/application/{ElectronActiveObservationService.js → javascript/ElectronActiveObservationService.js} +3 -3
- package/dist/application/{ElectronBoundaryAnalysis.js → javascript/ElectronBoundaryAnalysis.js} +1 -1
- package/dist/application/{ElectronBoundaryGraphContext.js → javascript/ElectronBoundaryGraphContext.js} +1 -1
- package/dist/application/{ElectronEvidence.js → javascript/ElectronEvidence.js} +2 -2
- package/dist/application/javascript/ElectronObservationPort.js +1 -0
- package/dist/application/{ElectronObservationService.js → javascript/ElectronObservationService.js} +3 -3
- package/dist/application/{JavaScriptApplicationEvidence.js → javascript/JavaScriptApplicationEvidence.js} +3 -4
- package/dist/application/{JavaScriptApplicationEvidenceGraph.js → javascript/JavaScriptApplicationEvidenceGraph.js} +5 -5
- package/dist/application/{JavaScriptApplicationService.js → javascript/JavaScriptApplicationService.js} +25 -12
- package/dist/application/{JavaScriptApplicationWorkflowEvidence.js → javascript/JavaScriptApplicationWorkflowEvidence.js} +3 -3
- package/dist/application/{JavaScriptApplicationWorkflowService.js → javascript/JavaScriptApplicationWorkflowService.js} +12 -12
- package/dist/application/{JavaScriptArtifactAnalysis.js → javascript/JavaScriptArtifactAnalysis.js} +50 -47
- package/dist/application/javascript/JavaScriptArtifactAnalysisTypes.js +1 -0
- package/dist/application/{JavaScriptArtifactGraphAccumulator.js → javascript/JavaScriptArtifactGraphAccumulator.js} +16 -2
- package/dist/application/{JavaScriptArtifactGraphBuilder.js → javascript/JavaScriptArtifactGraphBuilder.js} +2 -2
- package/dist/application/{JavaScriptArtifactGraphContext.js → javascript/JavaScriptArtifactGraphContext.js} +1 -1
- package/dist/application/{JavaScriptArtifactGraphDocuments.js → javascript/JavaScriptArtifactGraphDocuments.js} +27 -3
- package/dist/application/{JavaScriptArtifactGraphFindings.js → javascript/JavaScriptArtifactGraphFindings.js} +20 -7
- package/dist/application/{JavaScriptArtifactGraphStructure.js → javascript/JavaScriptArtifactGraphStructure.js} +1 -1
- package/dist/application/{JavaScriptArtifactPathResolution.js → javascript/JavaScriptArtifactPathResolution.js} +80 -36
- package/dist/application/{JavaScriptArtifactReconstruction.js → javascript/JavaScriptArtifactReconstruction.js} +26 -17
- package/dist/application/{JavaScriptJsonModules.js → javascript/JavaScriptJsonModules.js} +1 -1
- package/dist/application/{JavaScriptModuleRelationships.js → javascript/JavaScriptModuleRelationships.js} +2 -2
- package/dist/application/javascript/JavaScriptRecoveryPort.js +1 -0
- package/dist/application/javascript/JavaScriptRecoveryService.js +52 -0
- package/dist/application/{JavaScriptReturnShapeProjection.js → javascript/JavaScriptReturnShapeProjection.js} +3 -3
- package/dist/application/{JavaScriptRuntimeObservationEvidence.js → javascript/JavaScriptRuntimeObservationEvidence.js} +2 -2
- package/dist/application/javascript/JavaScriptRuntimeObservationPort.js +1 -0
- package/dist/application/{JavaScriptRuntimeObservationService.js → javascript/JavaScriptRuntimeObservationService.js} +3 -3
- package/dist/application/{JavaScriptRuntimeReconciliationEvidence.js → javascript/JavaScriptRuntimeReconciliationEvidence.js} +3 -3
- package/dist/application/{JavaScriptRuntimeReconciliationService.js → javascript/JavaScriptRuntimeReconciliationService.js} +6 -6
- package/dist/application/{JavaScriptSemanticGraphAsyncProjection.js → javascript/JavaScriptSemanticGraphAsyncProjection.js} +8 -8
- package/dist/application/{JavaScriptSemanticGraphBuilder.js → javascript/JavaScriptSemanticGraphBuilder.js} +150 -73
- package/dist/application/{JavaScriptSemanticGraphChildProcessProjection.js → javascript/JavaScriptSemanticGraphChildProcessProjection.js} +15 -16
- package/dist/application/{JavaScriptSemanticGraphConstruction.js → javascript/JavaScriptSemanticGraphConstruction.js} +43 -2
- package/dist/application/{JavaScriptSemanticGraphDataProjection.js → javascript/JavaScriptSemanticGraphDataProjection.js} +8 -8
- package/dist/application/{JavaScriptSemanticGraphFingerprintProjection.js → javascript/JavaScriptSemanticGraphFingerprintProjection.js} +1 -1
- package/dist/application/{JavaScriptSemanticGraphFlowProjection.js → javascript/JavaScriptSemanticGraphFlowProjection.js} +7 -11
- package/dist/application/{JavaScriptSemanticGraphObjectProjection.js → javascript/JavaScriptSemanticGraphObjectProjection.js} +4 -4
- package/dist/application/javascript/JavaScriptSemanticGraphProjection.js +144 -0
- package/dist/application/{JavaScriptSemanticGraphResourceProjection.js → javascript/JavaScriptSemanticGraphResourceProjection.js} +4 -4
- package/dist/application/{JavaScriptSemanticGraphValueProjection.js → javascript/JavaScriptSemanticGraphValueProjection.js} +5 -5
- package/dist/application/{JavaScriptSemanticTraceService.js → javascript/JavaScriptSemanticTraceService.js} +6 -6
- package/dist/application/{ManagedApplicationGraphService.js → managed/ManagedApplicationGraphService.js} +7 -7
- package/dist/application/{ManagedMemberComparisonService.js → managed/ManagedMemberComparisonService.js} +10 -10
- package/dist/application/{ManagedNativeVerificationService.js → managed/ManagedNativeVerificationService.js} +7 -7
- package/dist/application/{ManagedReconstructionService.js → managed/ManagedReconstructionService.js} +7 -7
- package/dist/application/{NativeApiInspection.js → native/NativeApiInspection.js} +1 -1
- package/dist/application/{NativeCallRoutes.js → native/NativeCallRoutes.js} +3 -3
- package/dist/application/{NativeDispatchMetadataInspection.js → native/NativeDispatchMetadataInspection.js} +4 -4
- package/dist/application/{NativeUiActionTrace.js → native/NativeUiActionTrace.js} +7 -7
- package/dist/application/{NativeValueTrace.js → native/NativeValueTrace.js} +6 -6
- package/dist/application/{ProcessCli.js → process/ProcessCli.js} +15 -11
- package/dist/application/{ProcessEvidence.js → process/ProcessEvidence.js} +4 -4
- package/dist/{application/ArtifactInventory/hash.js → artifacts/ArtifactHash.js} +4 -2
- package/dist/artifacts/ArtifactPaths.js +3 -3
- package/dist/artifacts/ArtifactProvider.js +37 -40
- package/dist/artifacts/ArtifactProviderMetadata.js +37 -0
- package/dist/artifacts/AsarArtifactReader.js +195 -23
- package/dist/artifacts/AsarEntryStream.js +76 -0
- package/dist/artifacts/DirectoryArtifactReader.js +41 -7
- package/dist/artifacts/NativeDmgArtifactReader.js +161 -9
- package/dist/artifacts/ZipArtifactReader.js +3 -0
- package/dist/{application → artifacts/apple}/AppleAssetCatalogAnalysis.js +4 -4
- package/dist/artifacts/apple/DylibResolutionReader.js +259 -0
- package/dist/{application → artifacts/apple}/InterfaceBuilderAnalysis.js +125 -51
- package/dist/artifacts/{KeyedArchiveReader.js → apple/KeyedArchiveReader.js} +21 -27
- package/dist/artifacts/apple/MachoLoadCommandReader.js +294 -0
- package/dist/artifacts/apple/NibViewHierarchy.js +150 -0
- package/dist/{application → artifacts/extraction}/ArtifactExtraction.js +10 -10
- package/dist/{application → artifacts/inventory}/ArtifactGraphConstruction.js +3 -3
- package/dist/{application → artifacts/inventory}/ArtifactInventory.js +4 -4
- package/dist/{application/ArtifactInventory → artifacts/inventory}/classify.js +2 -2
- package/dist/{application/ArtifactInventory → artifacts/inventory}/reader.js +5 -5
- package/dist/{application/ArtifactInventory → artifacts/inventory}/scanCanonical.js +3 -3
- package/dist/{application/ArtifactInventory → artifacts/inventory}/scanReader.js +5 -5
- package/dist/{application → artifacts/javascript}/JavaScriptArtifactFiles.js +27 -6
- package/dist/artifacts/javascript/JavaScriptArtifactReader.js +6 -0
- package/dist/artifacts/readStableArtifact.js +68 -0
- package/dist/browser/BrowserScenarioSecrets.js +50 -8
- package/dist/browser/CdpAuthorizedMainFrame.js +4 -4
- package/dist/browser/CdpAuthorizedTarget.js +22 -0
- package/dist/browser/CdpBrowserProvider.js +4 -15
- package/dist/browser/CdpCaptureDocuments.js +33 -21
- package/dist/browser/CdpCaptureEventBodyShapes.js +3 -3
- package/dist/browser/CdpCaptureEventHandlers.js +116 -28
- package/dist/browser/CdpCaptureEventHelpers.js +6 -6
- package/dist/browser/CdpCaptureEvents.js +9 -0
- package/dist/browser/CdpCaptureStorage.js +10 -8
- package/dist/browser/CdpCaptureStorageFingerprints.js +24 -22
- package/dist/browser/CdpCaptureValues.js +2 -2
- package/dist/browser/CdpCommandRejection.js +17 -0
- package/dist/browser/CdpConnection.js +51 -11
- package/dist/browser/CdpElectronInspection.js +10 -10
- package/dist/browser/CdpElectronProvider.js +3 -6
- package/dist/browser/CdpElectronScriptEvents.js +6 -6
- package/dist/browser/CdpElectronScripts.js +2 -2
- package/dist/browser/CdpElectronWorkers.js +4 -4
- package/dist/browser/CdpObservationSession.js +18 -23
- package/dist/browser/CdpPageCapture.js +4 -4
- package/dist/browser/CdpPageCaptureScripts.js +2 -2
- package/dist/browser/CdpPageCaptureWorkers.js +9 -9
- package/dist/browser/CdpSafeMetadata.js +48 -10
- package/dist/browser/CdpScreenshot.js +5 -5
- package/dist/browser/CdpTargetEvents.js +8 -0
- package/dist/browser/CdpTargetSession.js +2 -2
- package/dist/browser/CdpWebMcpDiscovery.js +22 -16
- package/dist/browser/PlaywrightBrowserScenarioProvider.js +7 -6
- package/dist/browser/PlaywrightElectronActiveProvider.js +15 -9
- package/dist/browser/PlaywrightScenarioEvents.js +59 -51
- package/dist/browser/PlaywrightScenarioSession.js +8 -1
- package/dist/browser/WebSourceMapFetcher.js +37 -53
- package/dist/browser/assets/LocalWebScriptArtifacts.js +87 -0
- package/dist/browser/assets/PageScriptCapture.js +32 -0
- package/dist/browser/assets/PublishWebScripts.js +74 -0
- package/dist/browser/assets/ScenarioScriptCapture.js +76 -0
- package/dist/browser/assets/ScriptCaptureAdapters.js +57 -0
- package/dist/browser/assets/WebArtifactReads.js +56 -0
- package/dist/browser/assets/WebSourceLocationArtifacts.js +40 -0
- package/dist/browser/execution/CdpEventListeners.js +79 -0
- package/dist/browser/execution/CdpExecutionCapture.js +135 -0
- package/dist/browser/execution/CdpExecutionCollection.js +57 -0
- package/dist/browser/execution/CdpExecutionWindow.js +100 -0
- package/dist/browser/execution/CdpListenerSelector.js +22 -0
- package/dist/browser/execution/CdpPreciseCoverage.js +48 -0
- package/dist/browser/execution/CdpRuntimeInitiator.js +18 -0
- package/dist/browser/execution/CdpRuntimeProtocol.js +106 -0
- package/dist/browser/execution/CdpRuntimeRequests.js +81 -0
- package/dist/browser/execution/CdpRuntimeSession.js +163 -0
- package/dist/browser/execution/CdpRuntimeSources.js +223 -0
- package/dist/browser/execution/CdpWebRuntimeProvider.js +51 -0
- package/dist/browser/history/CaptureFailures.js +101 -0
- package/dist/browser/history/CaptureFormatError.js +10 -0
- package/dist/browser/history/CaptureRedaction.js +65 -0
- package/dist/browser/history/CaptureRelease.js +12 -0
- package/dist/browser/history/HarCapture.js +165 -0
- package/dist/browser/history/HarCaptureAdapter.js +20 -0
- package/dist/browser/history/HarCaptureProcess.js +57 -0
- package/dist/browser/history/HarJson.js +91 -0
- package/dist/browser/history/HarSchema.js +72 -0
- package/dist/browser/history/HistoricalCaptureDecoder.js +186 -0
- package/dist/browser/history/HistoricalCaptureFormatAdapter.js +1 -0
- package/dist/browser/history/MitmproxyCaptureAdapter.js +42 -0
- package/dist/browser/modules/NativeModuleResolver.js +210 -0
- package/dist/browser/modules/WebModuleArtifacts.js +40 -0
- package/dist/browser/network/PlaywrightNetworkContent.js +71 -0
- package/dist/browser/network/PlaywrightScenarioNetwork.js +180 -0
- package/dist/browser/providerIdentities.js +24 -0
- package/dist/catalogIdentity.js +23 -15
- package/dist/cli/androidCommands.js +13 -3
- package/dist/cli/applicationCommands.js +39 -8
- package/dist/cli/artifactCommands.js +27 -2
- package/dist/cli/binaryDiagnosticsCommands.js +39 -0
- package/dist/cli/browserAdvancedCommands.js +27 -9
- package/dist/cli/coreAnalysisCommands.js +6 -494
- package/dist/cli/coreBinaryCommands.js +211 -0
- package/dist/cli/coreNativeCommands.js +293 -0
- package/dist/cli/electronCommands.js +29 -27
- package/dist/cli/evmCommands.js +24 -0
- package/dist/cli/firmwareCommands.js +9 -6
- package/dist/cli/javascriptApplicationAnalysis.js +17 -4
- package/dist/cli/javascriptRecoveryCommands.js +45 -0
- package/dist/cli/jsonOutput.js +133 -0
- package/dist/cli/managedCommands.js +4 -4
- package/dist/cli/managedProjectGraphCommand.js +1 -1
- package/dist/cli/nativeCallCommands.js +35 -0
- package/dist/cli/processCommands.js +1 -1
- package/dist/cli/referenceSourceImportStatus.js +6 -1
- package/dist/cli/streamedJsonOutput.js +56 -0
- package/dist/cli/utilityCommands.js +49 -23
- package/dist/cli/webModuleCommands.js +56 -0
- package/dist/cli/webNetworkCaptureCommands.js +40 -0
- package/dist/cli/webRuntimeCommands.js +60 -0
- package/dist/cli/webScriptCommands.js +31 -0
- package/dist/cli/webSourceLocationCommands.js +42 -0
- package/dist/cli.js +19 -3
- package/dist/cliBrowserContext.js +4 -2
- package/dist/cliBrowserScenarioCommands.js +6 -5
- package/dist/cliCommandNames.js +14 -0
- package/dist/cliJavaScriptRuntimeCommands.js +6 -4
- package/dist/cliJsonInput.js +38 -2
- package/dist/cliOutput.js +52 -11
- package/dist/composition/android.js +3 -0
- package/dist/composition/auxiliaryAnalysisProviders.js +30 -0
- package/dist/composition/binary.js +25 -0
- package/dist/composition/binaryDiagnostics.js +8 -0
- package/dist/composition/browserObservation.js +3 -0
- package/dist/composition/browserScenario.js +3 -0
- package/dist/composition/directAnalysis.js +17 -0
- package/dist/composition/electronObservation.js +3 -0
- package/dist/composition/electronScenario.js +3 -0
- package/dist/composition/evm.js +4 -0
- package/dist/composition/firmware.js +3 -0
- package/dist/composition/javascriptRecovery.js +3 -0
- package/dist/composition/javascriptRuntimeObservation.js +3 -0
- package/dist/composition/optionalObservationProviders.js +49 -0
- package/dist/composition/webModules.js +5 -0
- package/dist/composition/webNetworkCaptures.js +6 -0
- package/dist/composition/webRuntime.js +4 -0
- package/dist/composition/webSourceLocations.js +5 -0
- package/dist/config/parseConfig.js +22 -3
- package/dist/contracts/{androidToolContracts.js → android/androidToolContracts.js} +5 -5
- package/dist/contracts/applicationToolContracts.js +43 -8
- package/dist/contracts/artifactToolContracts.js +8 -2
- package/dist/contracts/browserCaptureToolInputSchema.js +43 -0
- package/dist/contracts/browserScenarioToolContracts.js +1 -1
- package/dist/contracts/browserToolContracts.js +4 -3
- package/dist/contracts/enhancedInputs.js +1 -1
- package/dist/contracts/errorSchemas.js +8 -1
- package/dist/contracts/evm/evmToolContracts.js +20 -0
- package/dist/contracts/{firmwareToolContracts.js → firmware/firmwareToolContracts.js} +5 -5
- package/dist/contracts/investigationExamples.js +2 -2
- package/dist/contracts/{applicationWorkflowInputContracts.js → javascript/applicationWorkflowInputContracts.js} +6 -6
- package/dist/contracts/{electronToolContracts.js → javascript/electronToolContracts.js} +6 -6
- package/dist/contracts/{javascriptApplicationWorkflowExamples.js → javascript/javascriptApplicationWorkflowExamples.js} +3 -3
- package/dist/contracts/javascript/javascriptRecoveryToolContracts.js +23 -0
- package/dist/contracts/{javascriptRuntimeObservationToolContracts.js → javascript/javascriptRuntimeObservationToolContracts.js} +3 -3
- package/dist/contracts/{javascriptRuntimeReconciliationExample.js → javascript/javascriptRuntimeReconciliationExample.js} +5 -5
- package/dist/contracts/{managedToolContracts.js → managed/managedToolContracts.js} +10 -6
- package/dist/contracts/{managedWorkflowExamples.js → managed/managedWorkflowExamples.js} +1 -1
- package/dist/contracts/{managedWorkflowToolContracts.js → managed/managedWorkflowToolContracts.js} +6 -6
- package/dist/contracts/mobileApplicationGraphExamples.js +105 -0
- package/dist/contracts/native/binaryDiagnosticsToolContracts.js +42 -0
- package/dist/contracts/{nativeToolContracts.js → native/nativeToolContracts.js} +31 -8
- package/dist/contracts/officialToolContracts.js +15 -12
- package/dist/contracts/process/processCaptureExample.js +2 -0
- package/dist/contracts/sessionLifecycleInputs.js +22 -5
- package/dist/contracts/sessionStatusContract.js +10 -2
- package/dist/contracts/sessionToolContracts.js +9 -2
- package/dist/contracts/sessionToolSchemas.js +10 -3
- package/dist/contracts/toolContractExamples.js +1 -1
- package/dist/contracts/toolContracts.js +19 -7
- package/dist/contracts/toolEffects.js +62 -0
- package/dist/contracts/toolOutputSchemaGroups.js +23 -19
- package/dist/contracts/toolOutputSchemaPrimitives.js +1 -1
- package/dist/contracts/webNetworkCaptureToolContracts.js +24 -0
- package/dist/contracts/webRuntimeToolContracts.js +43 -0
- package/dist/contracts/webScriptToolContracts.js +68 -0
- package/dist/domain/analysisErrorBase.js +15 -0
- package/dist/domain/analysisErrorCore.js +63 -7
- package/dist/domain/analysisErrorPresentation.js +29 -1
- package/dist/domain/analysisErrorProjection.js +53 -2
- package/dist/domain/analysisSnapshot.js +166 -2
- package/dist/domain/{androidApplication.js → android/androidApplication.js} +7 -6
- package/dist/domain/apple/appleApplication.js +277 -0
- package/dist/domain/{appleAssetCatalog.js → apple/appleAssetCatalog.js} +2 -2
- package/dist/domain/apple/appleBundleAnatomy.js +236 -0
- package/dist/domain/apple/dyldPaths.js +81 -0
- package/dist/domain/apple/dylibResolution.js +367 -0
- package/dist/domain/apple/dylibResolutionFindings.js +75 -0
- package/dist/domain/{interfaceBuilderGraph.js → apple/interfaceBuilderGraph.js} +47 -314
- package/dist/domain/apple/interfaceBuilderKeyedArchive.js +411 -0
- package/dist/domain/{keyedArchive.js → apple/keyedArchive.js} +10 -9
- package/dist/domain/apple/plistValue.js +35 -0
- package/dist/domain/artifactInventoryEvidence.js +12 -2
- package/dist/domain/artifactInventorySnapshot.js +1 -0
- package/dist/domain/artifactOperationError.js +5 -1
- package/dist/domain/artifactPathSyntax.js +26 -0
- package/dist/domain/browserNetworkEvidence.js +82 -0
- package/dist/domain/browserObservation.js +1 -1
- package/dist/domain/browserObservationError.js +2 -0
- package/dist/domain/browserObservationSchemas.js +15 -1
- package/dist/domain/browserScenarioCapture.js +22 -0
- package/dist/domain/browserScenarioCaptureValues.js +25 -0
- package/dist/domain/browserScenarioDiff.js +6 -3
- package/dist/domain/browserScenarioDiffEvidence.js +35 -1
- package/dist/domain/browserScenarioValues.js +21 -3
- package/dist/domain/browserSession.js +2 -7
- package/dist/domain/bundleComparison.js +2 -1
- package/dist/domain/callPath.js +52 -44
- package/dist/domain/callPathSchemas.js +1 -1
- package/dist/domain/canonicalDigest.js +13 -1
- package/dist/domain/changedBehavior.js +3 -3
- package/dist/domain/comparisonStatus.js +11 -0
- package/dist/domain/conformanceTrustGate.js +0 -16
- package/dist/domain/evidence.js +17 -5
- package/dist/domain/evidenceBundle.js +98 -35
- package/dist/domain/evm/evmInterface.js +63 -0
- package/dist/domain/explicitSensitiveFailure.js +92 -0
- package/dist/domain/explicitSensitiveValues.js +10 -0
- package/dist/domain/{firmwareAnalysis.js → firmware/firmwareAnalysis.js} +10 -3
- package/dist/domain/functionComparisonNormalization.js +11 -13
- package/dist/domain/hopperValues.js +2 -2
- package/dist/domain/inputIssueProjection.js +17 -2
- package/dist/domain/{electronActiveObservation.js → javascript/electronActiveObservation.js} +9 -4
- package/dist/domain/{electronObservation.js → javascript/electronObservation.js} +5 -11
- package/dist/domain/{electronStaticAnalysisBrowser.js → javascript/electronStaticAnalysisBrowser.js} +4 -3
- package/dist/domain/{electronStaticAnalysisIpc.js → javascript/electronStaticAnalysisIpc.js} +2 -2
- package/dist/domain/{electronStaticAnalysisNative.js → javascript/electronStaticAnalysisNative.js} +12 -13
- package/dist/domain/javascript/electronStaticAnalysisTypes.js +1 -0
- package/dist/domain/{electronStaticAnalysisValues.js → javascript/electronStaticAnalysisValues.js} +3 -3
- package/dist/domain/javascript/htmlArtifactReferences.js +40 -0
- package/dist/domain/{javascriptApplicationAnalysis.js → javascript/javascriptApplicationAnalysis.js} +2 -2
- package/dist/domain/{javascriptApplicationChangeGraph.js → javascript/javascriptApplicationChangeGraph.js} +1 -1
- package/dist/domain/{javascriptApplicationEvidenceSchemas.js → javascript/javascriptApplicationEvidenceSchemas.js} +6 -4
- package/dist/domain/{javascriptApplicationGraph.js → javascript/javascriptApplicationGraph.js} +2 -2
- package/dist/domain/{javascriptApplicationGraphSchemas.js → javascript/javascriptApplicationGraphSchemas.js} +2 -2
- package/dist/domain/{javascriptApplicationVersionComparison.js → javascript/javascriptApplicationVersionComparison.js} +2 -2
- package/dist/domain/{javascriptApplicationVersionComparisonSchemas.js → javascript/javascriptApplicationVersionComparisonSchemas.js} +3 -3
- package/dist/domain/{javascriptApplicationVersionItems.js → javascript/javascriptApplicationVersionItems.js} +2 -2
- package/dist/domain/{javascriptApplicationVersionKeys.js → javascript/javascriptApplicationVersionKeys.js} +16 -9
- package/dist/domain/javascript/javascriptArtifactFiles.js +1 -0
- package/dist/domain/{javascriptAstFingerprint.js → javascript/javascriptAstFingerprint.js} +38 -22
- package/dist/domain/javascript/javascriptAstValues.js +23 -0
- package/dist/domain/{javascriptExportShapeComparison.js → javascript/javascriptExportShapeComparison.js} +21 -5
- package/dist/domain/{javascriptExportShapeComparisonSchemas.js → javascript/javascriptExportShapeComparisonSchemas.js} +2 -2
- package/dist/domain/{javascriptExportShapeSelection.js → javascript/javascriptExportShapeSelection.js} +1 -1
- package/dist/domain/{javascriptExportShapeVariants.js → javascript/javascriptExportShapeVariants.js} +1 -11
- package/dist/domain/{javascriptFeatureSeed.js → javascript/javascriptFeatureSeed.js} +4 -3
- package/dist/domain/{javascriptFeatureTrace.js → javascript/javascriptFeatureTrace.js} +2 -2
- package/dist/domain/{javascriptFeatureTraceSchemas.js → javascript/javascriptFeatureTraceSchemas.js} +32 -18
- package/dist/domain/{javascriptFeatureTraversal.js → javascript/javascriptFeatureTraversal.js} +6 -2
- package/dist/domain/{javascriptNativeHandoff.js → javascript/javascriptNativeHandoff.js} +1 -1
- package/dist/domain/javascript/javascriptRecovery.js +88 -0
- package/dist/domain/{javascriptRuntimeLoadState.js → javascript/javascriptRuntimeLoadState.js} +1 -1
- package/dist/domain/{javascriptRuntimeObservation.js → javascript/javascriptRuntimeObservation.js} +2 -2
- package/dist/domain/{javascriptRuntimeReconciliationActive.js → javascript/javascriptRuntimeReconciliationActive.js} +3 -3
- package/dist/domain/{javascriptRuntimeReconciliationGraph.js → javascript/javascriptRuntimeReconciliationGraph.js} +1 -1
- package/dist/domain/{javascriptRuntimeReconciliationMatching.js → javascript/javascriptRuntimeReconciliationMatching.js} +2 -2
- package/dist/domain/{javascriptRuntimeReconciliationParsing.js → javascript/javascriptRuntimeReconciliationParsing.js} +5 -5
- package/dist/domain/{javascriptRuntimeReconciliationResult.js → javascript/javascriptRuntimeReconciliationResult.js} +2 -2
- package/dist/domain/{javascriptRuntimeReconciliationSchemas.js → javascript/javascriptRuntimeReconciliationSchemas.js} +4 -4
- package/dist/domain/{javascriptRuntimeStaticCandidates.js → javascript/javascriptRuntimeStaticCandidates.js} +1 -1
- package/dist/domain/{javascriptSemanticAnalysis.js → javascript/javascriptSemanticAnalysis.js} +40 -14
- package/dist/domain/{javascriptSemanticAsyncEffects.js → javascript/javascriptSemanticAsyncEffects.js} +2 -1
- package/dist/domain/{javascriptSemanticCallResolution.js → javascript/javascriptSemanticCallResolution.js} +10 -5
- package/dist/domain/{javascriptSemanticCalls.js → javascript/javascriptSemanticCalls.js} +7 -4
- package/dist/domain/{javascriptSemanticChildProcesses.js → javascript/javascriptSemanticChildProcesses.js} +4 -2
- package/dist/domain/{javascriptSemanticDataEffectHelpers.js → javascript/javascriptSemanticDataEffectHelpers.js} +7 -6
- package/dist/domain/{javascriptSemanticDataEffects.js → javascript/javascriptSemanticDataEffects.js} +8 -6
- package/dist/domain/{javascriptSemanticFingerprints.js → javascript/javascriptSemanticFingerprints.js} +40 -16
- package/dist/domain/{javascriptSemanticGraph.js → javascript/javascriptSemanticGraph.js} +23 -7
- package/dist/domain/{javascriptSemanticGraphSchemas.js → javascript/javascriptSemanticGraphSchemas.js} +3 -3
- package/dist/domain/javascript/javascriptSemanticMemberMutations.js +116 -0
- package/dist/domain/javascript/javascriptSemanticMutationValues.js +53 -0
- package/dist/domain/{javascriptSemanticObjects.js → javascript/javascriptSemanticObjects.js} +5 -5
- package/dist/domain/{javascriptSemanticPrimitives.js → javascript/javascriptSemanticPrimitives.js} +1 -1
- package/dist/domain/{javascriptSemanticProjection.js → javascript/javascriptSemanticProjection.js} +31 -44
- package/dist/domain/{javascriptSemanticPromises.js → javascript/javascriptSemanticPromises.js} +77 -22
- package/dist/domain/{javascriptSemanticProvenance.js → javascript/javascriptSemanticProvenance.js} +4 -1
- package/dist/domain/{javascriptSemanticQuery.js → javascript/javascriptSemanticQuery.js} +1 -1
- package/dist/domain/{javascriptSemanticQueryAssessment.js → javascript/javascriptSemanticQueryAssessment.js} +1 -1
- package/dist/domain/{javascriptSemanticQueryIdentity.js → javascript/javascriptSemanticQueryIdentity.js} +1 -1
- package/dist/domain/{javascriptSemanticQuerySchemas.js → javascript/javascriptSemanticQuerySchemas.js} +3 -3
- package/dist/domain/javascript/javascriptSemanticRequireOrigin.js +25 -0
- package/dist/domain/{javascriptSemanticResources.js → javascript/javascriptSemanticResources.js} +2 -1
- package/dist/domain/{javascriptSemanticReturns.js → javascript/javascriptSemanticReturns.js} +1 -1
- package/dist/domain/{javascriptSemanticTraceSchemas.js → javascript/javascriptSemanticTraceSchemas.js} +2 -2
- package/dist/domain/javascript/javascriptSemanticTraversal.js +55 -0
- package/dist/domain/javascript/javascriptSemanticValueTypes.js +1 -0
- package/dist/domain/{javascriptSemanticValues.js → javascript/javascriptSemanticValues.js} +72 -48
- package/dist/domain/{javascriptStaticAnalysis.js → javascript/javascriptStaticAnalysis.js} +7 -4
- package/dist/domain/{javascriptStaticAnalysisBundler.js → javascript/javascriptStaticAnalysisBundler.js} +14 -11
- package/dist/domain/{javascriptStaticAnalysisCalls.js → javascript/javascriptStaticAnalysisCalls.js} +2 -2
- package/dist/domain/{javascriptStaticAnalysisHelpers.js → javascript/javascriptStaticAnalysisHelpers.js} +231 -40
- package/dist/domain/{sourceToBundleComparison.js → javascript/sourceToBundleComparison.js} +2 -2
- package/dist/domain/{sourceToBundleComparisonSchemas.js → javascript/sourceToBundleComparisonSchemas.js} +4 -4
- package/dist/domain/{sourceToBundleSignals.js → javascript/sourceToBundleSignals.js} +2 -2
- package/dist/domain/jsonValue.js +4 -0
- package/dist/domain/localPath.js +2 -0
- package/dist/domain/{managedApplicationGraph.js → managed/managedApplicationGraph.js} +4 -4
- package/dist/domain/{managedApplicationGraphNodes.js → managed/managedApplicationGraphNodes.js} +1 -1
- package/dist/domain/{managedArtifact.js → managed/managedArtifact.js} +1 -1
- package/dist/domain/{managedMemberComparison.js → managed/managedMemberComparison.js} +4 -4
- package/dist/domain/{managedMemberComparisonCoverage.js → managed/managedMemberComparisonCoverage.js} +2 -1
- package/dist/domain/{managedMemberComparisonItems.js → managed/managedMemberComparisonItems.js} +97 -40
- package/dist/domain/{managedMemberComparisonMatch.js → managed/managedMemberComparisonMatch.js} +22 -11
- package/dist/domain/{managedNativeVerification.js → managed/managedNativeVerification.js} +1 -1
- package/dist/domain/{managedNativeVerificationMatch.js → managed/managedNativeVerificationMatch.js} +3 -3
- package/dist/domain/{managedNativeVerificationSchemas.js → managed/managedNativeVerificationSchemas.js} +6 -5
- package/dist/domain/{managedReconstruction.js → managed/managedReconstruction.js} +3 -3
- package/dist/domain/native/binaryLayout.js +357 -0
- package/dist/domain/native/nativeCallObservation.js +164 -0
- package/dist/domain/{nativeFunctionAnnotations.js → native/nativeFunctionAnnotations.js} +1 -1
- package/dist/domain/{nativeInspection.js → native/nativeInspection.js} +1 -1
- package/dist/domain/{nativeInvestigationGraph.js → native/nativeInvestigationGraph.js} +13 -4
- package/dist/domain/{nativeLoadImage.js → native/nativeLoadImage.js} +1 -1
- package/dist/domain/{nativeUiObservation.js → native/nativeUiObservation.js} +20 -6
- package/dist/domain/{objcSwiftMetadata.js → native/objcSwiftMetadata.js} +17 -39
- package/dist/domain/native/recordedCrash.js +266 -0
- package/dist/domain/native/recordedCrashNoteCoverage.js +73 -0
- package/dist/domain/process/processCapture.js +316 -0
- package/dist/domain/{processCaptureExample.js → process/processCaptureExample.js} +5 -0
- package/dist/domain/process/processCaptureParsing.js +54 -0
- package/dist/domain/{processCaptureValidation.js → process/processCaptureValidation.js} +18 -2
- package/dist/domain/{processComparison.js → process/processComparison.js} +1 -1
- package/dist/domain/{processObservation.js → process/processObservation.js} +1 -1
- package/dist/domain/{processScenario.js → process/processScenario.js} +17 -17
- package/dist/domain/{processTraceSpecification.js → process/processTraceSpecification.js} +1 -1
- package/dist/domain/propertyListKeys.js +69 -0
- package/dist/domain/providerCleanupError.js +5 -2
- package/dist/domain/providerSelectionError.js +4 -2
- package/dist/domain/reconstructionCoverageEvaluation.js +46 -24
- package/dist/domain/reconstructionCoverageInput.js +7 -0
- package/dist/domain/reconstructionVerification.js +3 -3
- package/dist/domain/reconstructionVerificationSchemas.js +1 -1
- package/dist/domain/residualUnknown.js +3 -2
- package/dist/domain/runtimeVersion.js +2 -0
- package/dist/domain/sourceMapEnvelope.js +38 -0
- package/dist/domain/staticRuntimeCorrelation.js +3 -3
- package/dist/domain/unicodeCodePointOrder.js +11 -6
- package/dist/domain/webBundleAnalyzerAst.js +2 -34
- package/dist/domain/webBundleAnalyzerInspection.js +12 -9
- package/dist/domain/webCaptureDiff.js +1 -0
- package/dist/domain/webEventListeners.js +28 -0
- package/dist/domain/webExecution.js +74 -0
- package/dist/domain/webMcpDiscovery.js +1 -7
- package/dist/domain/webModuleImports.js +104 -0
- package/dist/domain/webModuleTrace.js +106 -0
- package/dist/domain/webNetworkCapture.js +118 -0
- package/dist/domain/webNetworkCaptureCoordinates.js +58 -0
- package/dist/domain/webRuntime.js +69 -0
- package/dist/domain/webScreenshot.js +1 -7
- package/dist/domain/webScriptArtifacts.js +39 -0
- package/dist/domain/webScriptExport.js +86 -0
- package/dist/domain/webScriptExportError.js +13 -0
- package/dist/domain/webScriptExportPlan.js +108 -0
- package/dist/domain/webSourceLocation.js +106 -0
- package/dist/domain/webSourcePosition.js +21 -0
- package/dist/dotnet/ManagedArtifactInspector.js +1 -1
- package/dist/dotnet/ManagedExceptionRegionValidation.js +41 -0
- package/dist/dotnet/ManagedMemberInspector.js +5 -3
- package/dist/dotnet/ManagedMemberInspectorCore.js +72 -32
- package/dist/dotnet/ManagedMemberInstructionDecoder.js +23 -7
- package/dist/dotnet/ManagedMemberRows.js +19 -6
- package/dist/dotnet/ManagedMetadataHeaps.js +20 -2
- package/dist/dotnet/ManagedMetadataInventory.js +38 -28
- package/dist/dotnet/ManagedMetadataInventoryRows.js +24 -10
- package/dist/dotnet/ManagedMethodBodyReader.js +7 -1
- package/dist/dotnet/ManagedNativeBoundaryHelpers.js +37 -19
- package/dist/dotnet/ManagedNativeBoundaryInspector.js +59 -51
- package/dist/dotnet/ManagedPeReader.js +11 -0
- package/dist/dotnet/ManagedStaticProvider.js +3 -33
- package/dist/dotnet/ManagedStaticProviderMetadata.js +36 -0
- package/dist/evaluation/CodexAgentEval.js +2 -1
- package/dist/evm/EvmBytecodeCarrier.js +21 -0
- package/dist/evm/EvmWorkerLimits.js +40 -0
- package/dist/evm/EvmoleFailures.js +126 -0
- package/dist/evm/EvmoleInterfaceAdapter.js +53 -0
- package/dist/evm/EvmoleInterfaceProvider.js +273 -0
- package/dist/evm/EvmoleInterfaceWorker.js +87 -0
- package/dist/evm/EvmoleRelease.js +16 -0
- package/dist/firmware/FirmwareCommand.js +1 -0
- package/dist/firmware/FirmwareProvider.js +18 -12
- package/dist/firmware/FirmwarePublication.js +1 -1
- package/dist/firmware/FirmwareRelease.js +1 -1
- package/dist/firmware/FirmwareReports.js +12 -0
- package/dist/firmware/FirmwareVersion.js +80 -0
- package/dist/generatedPackageMetadata.js +2 -2
- package/dist/ghidra/GhidraFunctionValues.js +5 -5
- package/dist/ghidra/GhidraInstallation.js +38 -34
- package/dist/ghidra/GhidraInstallationPolicy.js +140 -0
- package/dist/ghidra/GhidraInventoryValues.js +1 -1
- package/dist/ghidra/GhidraLauncher.js +13 -4
- package/dist/ghidra/GhidraLoadImageAttest.js +36 -0
- package/dist/ghidra/GhidraLoadImageValues.js +1 -1
- package/dist/ghidra/GhidraProvider.js +17 -235
- package/dist/ghidra/GhidraProviderCapabilities.js +8 -15
- package/dist/ghidra/GhidraProviderClient.js +209 -0
- package/dist/ghidra/GhidraResponseBuffer.js +7 -1
- package/dist/ghidra/extensions/nativeaot/NativeAotReport.js +17 -1
- package/dist/hopper/BridgeLauncher.js +2 -0
- package/dist/hopper/HopperProvider.js +2 -48
- package/dist/hopper/HopperProviderCapabilities.js +73 -0
- package/dist/hopper/HopperResponseStream.js +7 -1
- package/dist/hopper/LinuxPrivateDisplayProbe.js +8 -6
- package/dist/ida/IdaProviderCapabilities.js +3 -11
- package/dist/ida/IdaSessionClient.js +12 -0
- package/dist/{browser → inspector}/JavaScriptRuntimeScope.js +16 -5
- package/dist/{browser → inspector}/V8InspectorCaptureProjection.js +46 -8
- package/dist/{browser → inspector}/V8InspectorEndpoint.js +1 -1
- package/dist/{browser → inspector}/V8InspectorProvider.js +10 -13
- package/dist/inspector/providerIdentity.js +6 -0
- package/dist/javascript/recovery/RecoveryFiles.js +122 -0
- package/dist/javascript/recovery/WakaruCommand.js +119 -0
- package/dist/javascript/recovery/WakaruExecution.js +100 -0
- package/dist/javascript/recovery/WakaruProvider.js +96 -0
- package/dist/javascript/recovery/WakaruPublication.js +102 -0
- package/dist/javascript/recovery/WakaruRelease.js +29 -0
- package/dist/javascript/recovery/WakaruReport.js +134 -0
- package/dist/javascript/sourceMaps/SourceMapCodecProcess.js +37 -0
- package/dist/javascript/sourceMaps/SourceMapCodecProtocol.js +20 -0
- package/dist/javascript/sourceMaps/SourceMapCommand.js +177 -0
- package/dist/javascript/sourceMaps/SourceMapDecoder.js +61 -0
- package/dist/javascript/sourceMaps/SourceMapFormat.js +185 -0
- package/dist/javascript/sourceMaps/TraceSourceMap.js +138 -0
- package/dist/main/shutdown.js +8 -2
- package/dist/main/transport.js +24 -7
- package/dist/main.js +4 -18
- package/dist/native/AppleDispatchCoverage.js +58 -0
- package/dist/native/AppleDispatchMetadata.js +71 -509
- package/dist/native/AppleMachoFixups.js +292 -0
- package/dist/native/AppleMachoSelection.js +188 -0
- package/dist/native/AppleObjcCategories.js +59 -0
- package/dist/native/AppleObjcDispatchFacets.js +257 -0
- package/dist/native/AppleObjcProperties.js +68 -0
- package/dist/native/AppleObjcProtocols.js +2 -1
- package/dist/native/AppleSwiftDispatchFacets.js +150 -0
- package/dist/native/CommandRunner.js +2 -1
- package/dist/native/LldbCallTracer.js +278 -0
- package/dist/native/NativeCallObservation.js +135 -0
- package/dist/native/NativeMacOSProvider.js +151 -75
- package/dist/native/NativeMacOSProviderMetadata.js +47 -0
- package/dist/native/NativeMachoInspection.js +45 -14
- package/dist/native/NativeUiHelperRuntime.js +7 -3
- package/dist/native/NativeUiObservation.js +8 -4
- package/dist/native/NativeUiOutputBudget.js +8 -0
- package/dist/native/parsers/codesign.js +40 -5
- package/dist/native/parsers/demangle.js +6 -2
- package/dist/native/parsers/dyldInfo.js +13 -4
- package/dist/native/parsers/echoedPath.js +14 -0
- package/dist/native/parsers/lipo.js +14 -0
- package/dist/native/parsers/otool.js +1 -1
- package/dist/native/parsers/plist.js +174 -19
- package/dist/native/pwndbg/PwndbgCoreContext.js +160 -0
- package/dist/native/pwntools/PwntoolsDecoder.js +203 -0
- package/dist/native/pwntools/PwntoolsFailures.js +180 -0
- package/dist/native/pwntools/PwntoolsLayoutProvider.js +36 -0
- package/dist/native/pwntools/PwntoolsRecordedCrashProvider.js +75 -0
- package/dist/native/pwntools/PwntoolsRelease.js +19 -0
- package/dist/native/pwntools/PwntoolsResourceLimits.js +76 -0
- package/dist/native/pwntools/RecordedCrashSourceBindings.js +46 -0
- package/dist/native/pwntools/RecordedCrashStructureBindings.js +101 -0
- package/dist/process/DarwinProcessRunTokenReader.js +294 -0
- package/dist/process/ExecFileOutput.js +2 -0
- package/dist/process/OwnedCommand.js +113 -0
- package/dist/process/ProcessOwnership.js +263 -33
- package/dist/process/ProcessOwnershipObservation.js +161 -24
- package/dist/process/ProviderProcess.js +68 -20
- package/dist/{application → process/capture}/FilesystemSnapshot.js +20 -5
- package/dist/{application → process/capture}/ProcessCaptureCapability.js +16 -1
- package/dist/{application → process/capture}/ProcessCaptureError.js +17 -1
- package/dist/process/capture/ProcessCaptureLifecycle.js +615 -0
- package/dist/process/capture/ProcessHarness.js +452 -0
- package/dist/{application → process/capture}/ProcessSampling.js +2 -2
- package/dist/reference/ReferenceSourceReaderEntries.js +6 -1
- package/dist/server/createServer.js +70 -6
- package/dist/server/mcpClientMetadata.js +6 -3
- package/dist/server/promptCompletion.js +10 -3
- package/dist/server/registerAndroidTools.js +1 -1
- package/dist/server/registerApplicationTools/compareExportShapes.js +2 -2
- package/dist/server/registerApplicationTools/compareSourceToBundle.js +2 -2
- package/dist/server/registerApplicationTools/compareVersions.js +2 -2
- package/dist/server/registerApplicationTools/projectMobileApplicationGraph.js +43 -0
- package/dist/server/registerApplicationTools/traceFeature.js +1 -1
- package/dist/server/registerApplicationTools/traceSemantics.js +1 -1
- package/dist/server/registerApplicationTools.js +2 -0
- package/dist/server/registerBinaryDiagnosticsTools.js +17 -0
- package/dist/server/registerBrowserScenarioTool.js +6 -2
- package/dist/server/registerBrowserTools.js +13 -2
- package/dist/server/registerCloseLifecycleTool.js +1 -1
- package/dist/server/registerElectronTools.js +21 -7
- package/dist/server/registerEvidenceTools.js +1 -1
- package/dist/server/registerEvmTools.js +17 -0
- package/dist/server/registerJavaScriptRecoveryTool.js +17 -0
- package/dist/server/registerJavaScriptRuntimeObservationTools.js +9 -4
- package/dist/server/registerManagedTools.js +3 -3
- package/dist/server/registerManagedWorkflowTools/compareManagedMembers.js +2 -2
- package/dist/server/registerManagedWorkflowTools/contract.js +1 -1
- package/dist/server/registerManagedWorkflowTools/importManagedReconstruction.js +1 -1
- package/dist/server/registerManagedWorkflowTools/projectManagedApplicationGraph.js +1 -1
- package/dist/server/registerManagedWorkflowTools/verifyManagedNativeBoundaries.js +2 -2
- package/dist/server/registerNativeTools.js +1 -1
- package/dist/server/registerProcessComparisonTool.js +1 -1
- package/dist/server/registerPrompts.js +5 -1
- package/dist/server/registerRecordedCrashTools.js +17 -0
- package/dist/server/registerSessionTools.js +3 -3
- package/dist/server/registerWebModuleTool.js +17 -0
- package/dist/server/registerWebNetworkCaptureTool.js +28 -0
- package/dist/server/registerWebRuntimeTools.js +31 -0
- package/dist/server/registerWebScriptTool.js +18 -0
- package/dist/server/registerWebSourceLocationTool.js +17 -0
- package/dist/server/sessionAvailabilityPolicy.js +27 -12
- package/dist/server/sessionToolPolicies.js +1 -1
- package/dist/server/toolResult.js +1 -1
- package/dist/windows/WindowsOwnedProcess.js +3 -1
- package/install.sh +12 -2
- package/native/windows/README.md +5 -0
- package/native/windows/build/manifest.json +2 -2
- package/native/windows/build/rea-windows-x64.node +0 -0
- package/package.json +75 -26
- package/scripts/hopper-demo-x11.py +67 -8
- package/scripts/rea.mjs +19 -3
- package/skills/reverse-engineer-anything/SKILL.md +23 -3
- package/skills/reverse-engineer-anything/references/android-applications.md +2 -2
- package/skills/reverse-engineer-anything/references/javascript-applications.md +1 -1
- package/skills/reverse-engineer-anything/references/native-and-artifacts.md +61 -23
- package/third_party/README.md +60 -0
- package/third_party/evmole/LICENSE +21 -0
- package/third_party/evmole/README.md +22 -0
- package/third_party/pwndbg/LICENSE.md +21 -0
- package/third_party/pwndbg/README.md +23 -0
- package/third_party/pwntools/README.md +40 -0
- package/dist/application/AuthorizedArtifactInventory.js +0 -7
- package/dist/application/JavaScriptSemanticGraphProjection.js +0 -38
- package/dist/application/ProcessCaptureLifecycle.js +0 -299
- package/dist/application/ProcessHarness.js +0 -275
- package/dist/application/StoreFileLock.js +0 -124
- package/dist/application/runtime.js +0 -53
- package/dist/contracts/processCaptureExample.js +0 -2
- package/dist/domain/appleApplication.js +0 -181
- package/dist/domain/bytecodeProvider.js +0 -178
- package/dist/domain/customProtocolCapture.js +0 -137
- package/dist/domain/eventProcessTree.js +0 -225
- package/dist/domain/javascriptAstValues.js +0 -13
- package/dist/domain/javascriptSemanticTraversal.js +0 -30
- package/dist/domain/mobileApplicationInvestigation.js +0 -159
- package/dist/domain/packageAnalysis.js +0 -123
- package/dist/domain/peInspection.js +0 -197
- package/dist/domain/processCapture.js +0 -177
- package/dist/domain/processCaptureParsing.js +0 -21
- package/dist/domain/protocolCapture.js +0 -217
- package/dist/domain/runtimeIdentification.js +0 -212
- package/dist/generatedMcpToolCatalog.js +0 -37
- package/dist/native/NativeHostCapabilities.js +0 -23
- /package/dist/application/{AndroidAnalysisPort.js → DirectAnalysisDependencies.js} +0 -0
- /package/dist/application/{BinarySessionPort.js → WebModulePorts.js} +0 -0
- /package/dist/application/{ElectronActiveObservationPort.js → WebNetworkCapturePort.js} +0 -0
- /package/dist/application/{ElectronObservationPort.js → WebRuntimePort.js} +0 -0
- /package/dist/application/{FirmwareAnalysisPort.js → WebScriptArtifactPort.js} +0 -0
- /package/dist/application/{JavaScriptArtifactAnalysisTypes.js → WebSourceLocationPorts.js} +0 -0
- /package/dist/application/{JavaScriptRuntimeObservationPort.js → android/AndroidAnalysisPort.js} +0 -0
- /package/dist/application/{ArtifactExtractionDestination.js → artifacts/ArtifactExtractionDestination.js} +0 -0
- /package/dist/application/{AbortablePromise.js → binary/AbortablePromise.js} +0 -0
- /package/dist/{domain/electronStaticAnalysisTypes.js → application/binary/BinarySessionPort.js} +0 -0
- /package/dist/application/{BinarySessionStatus.js → binary/BinarySessionStatus.js} +0 -0
- /package/dist/{domain/javascriptSemanticValueTypes.js → application/binaryDiagnostics/BinaryLayoutPort.js} +0 -0
- /package/dist/application/{ElectronBoundaryGraph.js → javascript/ElectronBoundaryGraph.js} +0 -0
- /package/dist/application/{ElectronBoundaryGraphIpc.js → javascript/ElectronBoundaryGraphIpc.js} +0 -0
- /package/dist/application/{ElectronBoundaryGraphNative.js → javascript/ElectronBoundaryGraphNative.js} +0 -0
- /package/dist/application/{ElectronBoundaryGraphWindows.js → javascript/ElectronBoundaryGraphWindows.js} +0 -0
- /package/dist/application/{JavaScriptArtifactGraphBundlers.js → javascript/JavaScriptArtifactGraphBundlers.js} +0 -0
- /package/dist/application/{JavaScriptArtifactGraphEvidence.js → javascript/JavaScriptArtifactGraphEvidence.js} +0 -0
- /package/dist/application/{JavaScriptArtifactReconstructionInput.js → javascript/JavaScriptArtifactReconstructionInput.js} +0 -0
- /package/dist/application/{JavaScriptSemanticGraphEvidence.js → javascript/JavaScriptSemanticGraphEvidence.js} +0 -0
- /package/dist/artifacts/{NibArchive.js → apple/NibArchive.js} +0 -0
- /package/dist/{application/ArtifactInventory → artifacts/inventory}/policy.js +0 -0
- /package/dist/{application/ArtifactInventory → artifacts/inventory}/types.js +0 -0
- /package/dist/domain/{androidAnalysis.js → android/androidAnalysis.js} +0 -0
- /package/dist/domain/{electronStaticAnalysis.js → javascript/electronStaticAnalysis.js} +0 -0
- /package/dist/domain/{javascriptExportShapeComparisonIdentity.js → javascript/javascriptExportShapeComparisonIdentity.js} +0 -0
- /package/dist/domain/{javascriptRuntimeReconciliation.js → javascript/javascriptRuntimeReconciliation.js} +0 -0
- /package/dist/domain/{javascriptRuntimeReconciliationRuntime.js → javascript/javascriptRuntimeReconciliationRuntime.js} +0 -0
- /package/dist/domain/{javascriptSemanticCoverage.js → javascript/javascriptSemanticCoverage.js} +0 -0
- /package/dist/domain/{javascriptSemanticDerivedAnalysis.js → javascript/javascriptSemanticDerivedAnalysis.js} +0 -0
- /package/dist/domain/{javascriptSemanticGraphSerialization.js → javascript/javascriptSemanticGraphSerialization.js} +0 -0
- /package/dist/domain/{javascriptSemanticIr.js → javascript/javascriptSemanticIr.js} +0 -0
- /package/dist/domain/{javascriptSemanticQueryRelations.js → javascript/javascriptSemanticQueryRelations.js} +0 -0
- /package/dist/domain/{javascriptSemanticState.js → javascript/javascriptSemanticState.js} +0 -0
- /package/dist/domain/{javascriptSourceParser.js → javascript/javascriptSourceParser.js} +0 -0
- /package/dist/domain/{javascriptStaticAnalysisFindings.js → javascript/javascriptStaticAnalysisFindings.js} +0 -0
- /package/dist/domain/{javascriptStaticAnalysisState.js → javascript/javascriptStaticAnalysisState.js} +0 -0
- /package/dist/domain/{javascriptStaticAnalysisTypes.js → javascript/javascriptStaticAnalysisTypes.js} +0 -0
- /package/dist/domain/{managedApplicationGraphCoverage.js → managed/managedApplicationGraphCoverage.js} +0 -0
- /package/dist/domain/{managedApplicationGraphNodeCoverage.js → managed/managedApplicationGraphNodeCoverage.js} +0 -0
- /package/dist/domain/{nativeApiBoundary.js → native/nativeApiBoundary.js} +0 -0
- /package/dist/domain/{nativeDataType.js → native/nativeDataType.js} +0 -0
- /package/dist/domain/{nativeInstruction.js → native/nativeInstruction.js} +0 -0
- /package/dist/domain/{nativeMetadataRecovery.js → native/nativeMetadataRecovery.js} +0 -0
- /package/dist/domain/{nativeValueFlow.js → native/nativeValueFlow.js} +0 -0
- /package/dist/domain/{nativeValueTrace.js → native/nativeValueTrace.js} +0 -0
- /package/dist/domain/{processEvidenceProvider.js → process/processEvidenceProvider.js} +0 -0
- /package/dist/domain/{processTraceComparison.js → process/processTraceComparison.js} +0 -0
- /package/dist/domain/{processTraceDimensionProjection.js → process/processTraceDimensionProjection.js} +0 -0
- /package/dist/domain/{processTraceEvaluation.js → process/processTraceEvaluation.js} +0 -0
- /package/dist/{application → process/capture}/ProcessCaptureEnvironment.js +0 -0
- /package/dist/{application → process/capture}/ProcessCaptureJournal.js +0 -0
- /package/dist/{application → process/capture}/ProcessFilesystemEffects.js +0 -0
- /package/dist/{application → process/capture}/ProcessNormalization.js +0 -0
- /package/dist/{application → process/capture}/ProcessScenarioRuntimeValidation.js +0 -0
- /package/dist/{application → process/capture}/ProcessTimer.js +0 -0
- /package/dist/{application → process/capture}/TerminalRenderer.js +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { createJavaScriptSemanticGraph, } from "
|
|
2
|
-
import { JAVASCRIPT_SEMANTIC_RELATION_FAMILIES, JAVASCRIPT_SEMANTIC_RELATION_FAMILY, } from "
|
|
3
|
-
import { sourceRangesEqual as rangesEqual } from "
|
|
1
|
+
import { createJavaScriptSemanticGraph, } from "../../domain/javascript/javascriptSemanticGraph.js";
|
|
2
|
+
import { JAVASCRIPT_SEMANTIC_RELATION_FAMILIES, JAVASCRIPT_SEMANTIC_RELATION_FAMILY, } from "../../domain/javascript/javascriptSemanticGraphSchemas.js";
|
|
3
|
+
import { sourceRangesEqual as rangesEqual } from "../../domain/javascript/javascriptStaticAnalysisHelpers.js";
|
|
4
4
|
import { projectSemanticEvents, projectSemanticTimers, } from "./JavaScriptSemanticGraphAsyncProjection.js";
|
|
5
5
|
import { projectSemanticChildProcesses } from "./JavaScriptSemanticGraphChildProcessProjection.js";
|
|
6
6
|
import { projectSemanticBoundaries, projectSemanticConfiguration, projectSemanticRequests, } from "./JavaScriptSemanticGraphDataProjection.js";
|
|
@@ -10,97 +10,168 @@ import { projectSemanticValues } from "./JavaScriptSemanticGraphValueProjection.
|
|
|
10
10
|
import { inferredSemanticEvidenceAt } from "./JavaScriptSemanticGraphEvidence.js";
|
|
11
11
|
import { projectSemanticFunctionFingerprints } from "./JavaScriptSemanticGraphFingerprintProjection.js";
|
|
12
12
|
import { projectSemanticClosureCaptures, projectSemanticFrontiers, projectSemanticPromises, projectSemanticReturnValues, } from "./JavaScriptSemanticGraphFlowProjection.js";
|
|
13
|
-
import {
|
|
14
|
-
import { addSemanticFallbackRoot as addFallbackRoot,
|
|
15
|
-
/**
|
|
13
|
+
import { createSemanticCallableOwnerLookup, createSemanticCallSiteLookup, createSemanticNodeRangeLookup, semanticFamilyStatus, } from "./JavaScriptSemanticGraphProjection.js";
|
|
14
|
+
import { addSemanticFallbackRoot as addFallbackRoot, retainSemanticGraphNode as retainNode, addSemanticGraphRelation as addRelation, createSemanticGraphProjectionState as emptyState, bindSemanticGraphApplicationNodes, } from "./JavaScriptSemanticGraphConstruction.js";
|
|
15
|
+
/**
|
|
16
|
+
* Resource-safety ceiling on retained semantic nodes.
|
|
17
|
+
*
|
|
18
|
+
* The semantic projection emits one node per AST expression, call site, binding
|
|
19
|
+
* and property slot. That is unbounded in input size. A small tree of five files
|
|
20
|
+
* already yields on the order of 170,000 nodes, and larger trees yield millions,
|
|
21
|
+
* exhausting the heap before the result can be serialized.
|
|
22
|
+
*
|
|
23
|
+
* This is a real resource-safety constraint, not a presentation preference, so
|
|
24
|
+
* the ceiling is applied and reported through the graph's own `coverage` fields
|
|
25
|
+
* (`truncated`, `omitted_nodes`, `omitted_relations`, `limits`) rather than
|
|
26
|
+
* silently dropping data.
|
|
27
|
+
*
|
|
28
|
+
* Sizing: a retained semantic node costs roughly 3 KB once serialized, and V8
|
|
29
|
+
* additionally caps a single string at 512 MB. The result is serialized after the
|
|
30
|
+
* object graph is built and validated, so both phases must fit together. A single
|
|
31
|
+
* minified vendor bundle can account for most of a tree's nodes, so a whole-tree
|
|
32
|
+
* ceiling without a per-file ceiling does not bound the work. Both are applied.
|
|
33
|
+
*/
|
|
34
|
+
export const SEMANTIC_GRAPH_NODE_CEILING = 100_000;
|
|
35
|
+
/**
|
|
36
|
+
* Per-file share of the semantic node budget.
|
|
37
|
+
*
|
|
38
|
+
* Bound each source file independently so one large bundled library cannot
|
|
39
|
+
* consume the whole tree's budget and starve the application's own modules.
|
|
40
|
+
*/
|
|
41
|
+
export const SEMANTIC_GRAPH_FILE_NODE_CEILING = 20_000;
|
|
16
42
|
export const buildJavaScriptSemanticGraph = ({ rootArtifactSha256, applicationGraph, analysis, }) => {
|
|
17
|
-
const
|
|
18
|
-
const fingerprints = [];
|
|
43
|
+
const projection = createJavaScriptSemanticGraphProjection();
|
|
19
44
|
for (const analyzed of analysis.files) {
|
|
20
|
-
if (analyzed.semantic
|
|
21
|
-
|
|
22
|
-
fingerprints.push(...projectFile(analyzed.file, analyzed.semantic.ir, state));
|
|
45
|
+
if (analyzed.semantic !== null)
|
|
46
|
+
projection.projectFile(analyzed.file, analyzed.semantic.ir);
|
|
23
47
|
}
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
48
|
+
return projection.finish(rootArtifactSha256, applicationGraph, analysis);
|
|
49
|
+
};
|
|
50
|
+
/** Accumulate semantic nodes while each source IR is still file-local. */
|
|
51
|
+
export const createJavaScriptSemanticGraphProjection = () => {
|
|
52
|
+
const state = emptyState({ nodes: [] });
|
|
53
|
+
const fingerprints = [];
|
|
54
|
+
let truncatedFiles = 0;
|
|
55
|
+
const projectSource = (file, ir) => {
|
|
56
|
+
if (state.nodes.size >= SEMANTIC_GRAPH_NODE_CEILING) {
|
|
57
|
+
truncatedFiles += 1;
|
|
58
|
+
return;
|
|
59
|
+
}
|
|
60
|
+
const remainingTreeBudget = SEMANTIC_GRAPH_NODE_CEILING - state.nodes.size;
|
|
61
|
+
state.fileNodeBudget = Math.min(SEMANTIC_GRAPH_FILE_NODE_CEILING, remainingTreeBudget);
|
|
62
|
+
state.fileNodesDropped = false;
|
|
63
|
+
fingerprints.push(...projectFile(file, ir, state));
|
|
64
|
+
// Nodes were dropped only if the budget actually blocked creation. A file
|
|
65
|
+
// that exactly fills its share ends with a zero budget without dropping
|
|
66
|
+
// anything, so the remaining budget alone cannot decide truncation.
|
|
67
|
+
if (state.fileNodesDropped)
|
|
68
|
+
truncatedFiles += 1;
|
|
69
|
+
state.fileNodeBudget = null;
|
|
70
|
+
};
|
|
71
|
+
return {
|
|
72
|
+
projectFile: projectSource,
|
|
73
|
+
finish: (rootArtifactSha256, applicationGraph, analysis) => {
|
|
74
|
+
bindSemanticGraphApplicationNodes(state, applicationGraph);
|
|
75
|
+
if (state.roots.size === 0)
|
|
76
|
+
addFallbackRoot(rootArtifactSha256, state);
|
|
77
|
+
const unknowns = [...state.unknowns.values()];
|
|
78
|
+
const graph = createJavaScriptSemanticGraph({
|
|
79
|
+
schema: "JavaScriptSemanticRelationGraph",
|
|
80
|
+
root_artifact_sha256: rootArtifactSha256,
|
|
81
|
+
application_graph_id: applicationGraph.graph_id,
|
|
82
|
+
root_node_ids: [...state.roots],
|
|
83
|
+
nodes: [...state.nodes.values()],
|
|
84
|
+
relations: [...state.relations.values()],
|
|
85
|
+
fingerprints,
|
|
86
|
+
unknowns,
|
|
87
|
+
coverage: {
|
|
88
|
+
status: truncatedFiles > 0 ? "partial" : "unknown",
|
|
89
|
+
truncated: truncatedFiles > 0,
|
|
90
|
+
omitted_nodes: truncatedFiles > 0 ? null : 0,
|
|
91
|
+
omitted_relations: truncatedFiles > 0 ? null : 0,
|
|
92
|
+
limits: truncatedFiles > 0
|
|
93
|
+
? [
|
|
94
|
+
{
|
|
95
|
+
name: "semantic_graph_node_ceiling",
|
|
96
|
+
value: SEMANTIC_GRAPH_NODE_CEILING,
|
|
97
|
+
unit: "items",
|
|
98
|
+
},
|
|
99
|
+
]
|
|
100
|
+
: [],
|
|
101
|
+
families: JAVASCRIPT_SEMANTIC_RELATION_FAMILIES.map((family) => ({
|
|
102
|
+
family,
|
|
103
|
+
status: semanticFamilyStatus(family, analysis),
|
|
104
|
+
retained_relations: [...state.relations.values()].filter((relation) => JAVASCRIPT_SEMANTIC_RELATION_FAMILY[relation.relation] ===
|
|
105
|
+
family).length,
|
|
106
|
+
omitted_relations: truncatedFiles > 0 ? null : 0,
|
|
107
|
+
unknown_ids: unknowns
|
|
108
|
+
.filter((unknown) => unknown.family === family)
|
|
109
|
+
.map(({ unknown_id: identifier }) => identifier),
|
|
110
|
+
})),
|
|
111
|
+
},
|
|
112
|
+
limitations: [
|
|
113
|
+
"The semantic graph contains static syntax observations and conservative relationship candidates; it does not claim runtime execution.",
|
|
114
|
+
"Local data flow does not claim control-flow-sensitive reaching definitions or arbitrary dynamic property resolution.",
|
|
115
|
+
"Promise ownership covers explicit unshadowed Promise construction, static factories, aggregation, chaining, and await syntax only.",
|
|
116
|
+
"Function fingerprints are static candidates; equal digests can remain ambiguous and do not prove behavioral equivalence.",
|
|
117
|
+
"Event extraction covers EventEmitter-style literal registrations, removals, and dispatch candidates; dynamic names remain unknown.",
|
|
118
|
+
"Timer extraction covers global or node:timers scheduling and exact local-handle cancellation.",
|
|
119
|
+
"Child-process extraction covers asynchronous node:child_process creation, literal argv/env/stdio options, exit/error listeners, and kill signals.",
|
|
120
|
+
"Configuration extraction covers process.env, process.argv, node:fs reads, and direct logical defaults.",
|
|
121
|
+
"Request extraction covers fetch, WebSocket, node:http/node:https construction, direct option fields, and exact local response consumers.",
|
|
122
|
+
"Boundary extraction covers unshadowed JSON/global coercions plus parse and validation method candidates.",
|
|
123
|
+
"Resource extraction covers built-in filesystem/network acquisition and exact local close/destroy/end handles.",
|
|
124
|
+
],
|
|
125
|
+
});
|
|
126
|
+
state.nodes.clear();
|
|
127
|
+
state.relations.clear();
|
|
128
|
+
state.unknowns.clear();
|
|
129
|
+
state.roots.clear();
|
|
130
|
+
fingerprints.length = 0;
|
|
131
|
+
return graph;
|
|
51
132
|
},
|
|
52
|
-
|
|
53
|
-
"The semantic graph contains static syntax observations and conservative relationship candidates; it does not claim runtime execution.",
|
|
54
|
-
"Local data flow does not claim control-flow-sensitive reaching definitions or arbitrary dynamic property resolution.",
|
|
55
|
-
"Promise ownership covers explicit unshadowed Promise construction, static factories, aggregation, chaining, and await syntax only.",
|
|
56
|
-
"Function fingerprints are static candidates; equal digests can remain ambiguous and do not prove behavioral equivalence.",
|
|
57
|
-
"Event extraction covers EventEmitter-style literal registrations, removals, and dispatch candidates; dynamic names remain unknown.",
|
|
58
|
-
"Timer extraction covers global or node:timers scheduling and exact local-handle cancellation.",
|
|
59
|
-
"Child-process extraction covers asynchronous node:child_process creation, literal argv/env/stdio options, exit/error listeners, and kill signals.",
|
|
60
|
-
"Configuration extraction covers process.env, process.argv, node:fs reads, and direct logical defaults.",
|
|
61
|
-
"Request extraction covers fetch, WebSocket, node:http/node:https construction, direct option fields, and exact local response consumers.",
|
|
62
|
-
"Boundary extraction covers unshadowed JSON/global coercions plus parse and validation method candidates.",
|
|
63
|
-
"Resource extraction covers built-in filesystem/network acquisition and exact local close/destroy/end handles.",
|
|
64
|
-
],
|
|
65
|
-
});
|
|
133
|
+
};
|
|
66
134
|
};
|
|
67
135
|
const projectFile = (file, ir, state) => {
|
|
68
|
-
const moduleNode =
|
|
136
|
+
const moduleNode = retainNode(state, file, {
|
|
69
137
|
kind: "module",
|
|
70
138
|
roleKey: "module",
|
|
71
139
|
location: null,
|
|
72
140
|
label: file.path,
|
|
73
141
|
functionNodeId: null,
|
|
74
|
-
}
|
|
142
|
+
});
|
|
75
143
|
if (moduleNode === null)
|
|
76
144
|
return [];
|
|
77
145
|
state.roots.add(moduleNode.node_id);
|
|
78
146
|
const callableNodes = new Map(ir.callables.flatMap((callable) => {
|
|
79
|
-
const node =
|
|
147
|
+
const node = retainNode(state, file, {
|
|
80
148
|
kind: "function",
|
|
81
149
|
roleKey: `callable:${callable.callableId}`,
|
|
82
150
|
location: callable.location,
|
|
83
151
|
label: callable.name,
|
|
84
152
|
functionNodeId: null,
|
|
85
|
-
|
|
153
|
+
// The label is display text; keep the exact name, which may be "".
|
|
154
|
+
properties: { name: callable.name },
|
|
155
|
+
});
|
|
86
156
|
return node === null ? [] : [[callable.callableId, node]];
|
|
87
157
|
}));
|
|
158
|
+
const callableOwnerAt = createSemanticCallableOwnerLookup(ir, callableNodes);
|
|
88
159
|
const bindingNodes = new Map(ir.bindings.flatMap((binding) => {
|
|
89
160
|
const location = binding.definitions[0]?.location ?? null;
|
|
90
161
|
const kind = binding.kind === "parameter" ? "parameter" : "binding";
|
|
91
|
-
const owner =
|
|
92
|
-
const node =
|
|
162
|
+
const owner = callableOwnerAt(location);
|
|
163
|
+
const node = retainNode(state, file, {
|
|
93
164
|
kind,
|
|
94
165
|
roleKey: `binding:${binding.bindingId}`,
|
|
95
166
|
location,
|
|
96
167
|
label: binding.name,
|
|
97
168
|
functionNodeId: owner?.node_id ?? null,
|
|
98
|
-
}
|
|
169
|
+
});
|
|
99
170
|
return node === null ? [] : [[binding.bindingId, node]];
|
|
100
171
|
}));
|
|
101
172
|
const returnSiteNodes = createReturnSiteNodes(file, ir, callableNodes, state);
|
|
102
173
|
const callSiteNodes = createCallSiteNodes(file, ir, callableNodes, state);
|
|
103
|
-
const
|
|
174
|
+
const definitions = {
|
|
104
175
|
file,
|
|
105
176
|
ir,
|
|
106
177
|
state,
|
|
@@ -115,8 +186,14 @@ const projectFile = (file, ir, state) => {
|
|
|
115
186
|
call.callSiteId,
|
|
116
187
|
call.resolution === "exact" ? "resolved" : "candidate",
|
|
117
188
|
])),
|
|
189
|
+
callableOwnerAt,
|
|
190
|
+
callSiteAt: createSemanticCallSiteLookup(ir, callSiteNodes),
|
|
191
|
+
};
|
|
192
|
+
projectDefinitionsAndReferences(definitions);
|
|
193
|
+
const context = {
|
|
194
|
+
...definitions,
|
|
195
|
+
referenceNodesWithin: createSemanticNodeRangeLookup(definitions.referenceNodes),
|
|
118
196
|
};
|
|
119
|
-
projectDefinitionsAndReferences(context);
|
|
120
197
|
projectSemanticValues(context);
|
|
121
198
|
projectSemanticObjects(context);
|
|
122
199
|
projectCalls(context);
|
|
@@ -140,13 +217,13 @@ const createReturnSiteNodes = (file, ir, callables, state) => {
|
|
|
140
217
|
continue;
|
|
141
218
|
for (const site of callable.returnSites) {
|
|
142
219
|
const identifier = site.returnSiteId;
|
|
143
|
-
const node =
|
|
220
|
+
const node = retainNode(state, file, {
|
|
144
221
|
kind: "return-site",
|
|
145
222
|
roleKey: identifier,
|
|
146
223
|
location: site.location,
|
|
147
224
|
label: "return",
|
|
148
225
|
functionNodeId: owner.node_id,
|
|
149
|
-
}
|
|
226
|
+
});
|
|
150
227
|
if (node !== null)
|
|
151
228
|
result.set(identifier, node);
|
|
152
229
|
}
|
|
@@ -159,13 +236,13 @@ const createCallSiteNodes = (file, ir, callables, state) => {
|
|
|
159
236
|
const owner = call.callerCallableId === null
|
|
160
237
|
? null
|
|
161
238
|
: (callables.get(call.callerCallableId)?.node_id ?? null);
|
|
162
|
-
const node =
|
|
239
|
+
const node = retainNode(state, file, {
|
|
163
240
|
kind: "call-site",
|
|
164
241
|
roleKey: `call:${call.callSiteId}`,
|
|
165
242
|
location: call.location,
|
|
166
243
|
label: call.kind,
|
|
167
244
|
functionNodeId: owner,
|
|
168
|
-
}
|
|
245
|
+
});
|
|
169
246
|
if (node !== null)
|
|
170
247
|
result.set(call.callSiteId, node);
|
|
171
248
|
}
|
|
@@ -177,13 +254,13 @@ const projectDefinitionsAndReferences = (context) => {
|
|
|
177
254
|
if (bindingNode === undefined)
|
|
178
255
|
continue;
|
|
179
256
|
for (const [index, definition] of binding.definitions.entries()) {
|
|
180
|
-
const definitionNode =
|
|
257
|
+
const definitionNode = retainNode(context.state, context.file, {
|
|
181
258
|
kind: "expression",
|
|
182
259
|
roleKey: `definition:${binding.bindingId}:${String(index)}`,
|
|
183
260
|
location: definition.location,
|
|
184
261
|
label: definition.kind,
|
|
185
262
|
functionNodeId: bindingNode.function_node_id,
|
|
186
|
-
}
|
|
263
|
+
});
|
|
187
264
|
addRelation(context.state, {
|
|
188
265
|
source: definitionNode,
|
|
189
266
|
target: bindingNode,
|
|
@@ -193,13 +270,13 @@ const projectDefinitionsAndReferences = (context) => {
|
|
|
193
270
|
}
|
|
194
271
|
}
|
|
195
272
|
for (const [index, reference] of context.ir.references.entries()) {
|
|
196
|
-
const expression =
|
|
273
|
+
const expression = retainNode(context.state, context.file, {
|
|
197
274
|
kind: "expression",
|
|
198
275
|
roleKey: `reference:${String(index)}:${reference.role}:${reference.name}`,
|
|
199
276
|
location: reference.location,
|
|
200
277
|
label: reference.name,
|
|
201
|
-
functionNodeId:
|
|
202
|
-
}
|
|
278
|
+
functionNodeId: context.callableOwnerAt(reference.location)?.node_id ?? null,
|
|
279
|
+
});
|
|
203
280
|
const binding = reference.bindingId === null
|
|
204
281
|
? undefined
|
|
205
282
|
: context.bindingNodes.get(reference.bindingId);
|
|
@@ -242,7 +319,7 @@ const projectCalls = (context) => {
|
|
|
242
319
|
const argumentNode = createArgumentNode(context, callNode, call.callSiteId, argument);
|
|
243
320
|
if (argumentNode !== null)
|
|
244
321
|
context.argumentNodes.set(`${call.callSiteId}\u0000${String(argument.index)}`, argumentNode);
|
|
245
|
-
const references =
|
|
322
|
+
const references = context.referenceNodesWithin(argument.location);
|
|
246
323
|
for (const reference of references)
|
|
247
324
|
addRelation(context.state, {
|
|
248
325
|
source: reference,
|
|
@@ -281,7 +358,7 @@ const projectCalls = (context) => {
|
|
|
281
358
|
});
|
|
282
359
|
projectSemanticReturnValues(context);
|
|
283
360
|
};
|
|
284
|
-
const createArgumentNode = (context, callNode, callSiteId, argument) =>
|
|
361
|
+
const createArgumentNode = (context, callNode, callSiteId, argument) => retainNode(context.state, context.file, {
|
|
285
362
|
kind: "expression",
|
|
286
363
|
roleKey: `argument:${callSiteId}:${String(argument.index)}`,
|
|
287
364
|
location: argument.location,
|
|
@@ -289,4 +366,4 @@ const createArgumentNode = (context, callNode, callSiteId, argument) => addNode(
|
|
|
289
366
|
? "spread argument"
|
|
290
367
|
: `argument ${String(argument.index)}`,
|
|
291
368
|
functionNodeId: callNode.function_node_id,
|
|
292
|
-
}
|
|
369
|
+
});
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { createJavaScriptSemanticGraphUnknown } from "
|
|
2
|
-
import {
|
|
1
|
+
import { createJavaScriptSemanticGraphUnknown } from "../../domain/javascript/javascriptSemanticGraph.js";
|
|
2
|
+
import { retainSemanticGraphNode, addSemanticGraphRelation, addSemanticGraphUnknown, } from "./JavaScriptSemanticGraphConstruction.js";
|
|
3
3
|
import { unknownSemanticEvidence } from "./JavaScriptSemanticGraphEvidence.js";
|
|
4
4
|
import { semanticCallSiteAt, } from "./JavaScriptSemanticGraphFlowProjection.js";
|
|
5
5
|
/** Project child creation, argv/env/stdio, listeners, and signals. */
|
|
@@ -17,15 +17,14 @@ export const projectSemanticChildProcesses = (context) => {
|
|
|
17
17
|
for (const interaction of context.ir.childProcessInteractions)
|
|
18
18
|
projectInteraction(context, interaction, processNodes);
|
|
19
19
|
};
|
|
20
|
-
const addChildProcessNode = (context, spawn) =>
|
|
20
|
+
const addChildProcessNode = (context, spawn) => retainSemanticGraphNode(context.state, context.file, {
|
|
21
21
|
kind: "child-process",
|
|
22
22
|
roleKey: spawn.processId,
|
|
23
23
|
location: spawn.location,
|
|
24
24
|
label: spawn.command ?? spawn.method,
|
|
25
25
|
functionNodeId: spawn.ownerCallableId === null
|
|
26
26
|
? null
|
|
27
|
-
: (context.callableNodes.get(spawn.ownerCallableId)?.node_id ??
|
|
28
|
-
null),
|
|
27
|
+
: (context.callableNodes.get(spawn.ownerCallableId)?.node_id ?? null),
|
|
29
28
|
properties: {
|
|
30
29
|
argv_count: spawn.argvCount,
|
|
31
30
|
command: spawn.command,
|
|
@@ -33,7 +32,7 @@ const addChildProcessNode = (context, spawn) => addSemanticGraphNode(context.sta
|
|
|
33
32
|
method: spawn.method,
|
|
34
33
|
stdio_mode: spawn.stdioMode,
|
|
35
34
|
},
|
|
36
|
-
}
|
|
35
|
+
});
|
|
37
36
|
const projectSpawn = (context, spawn, child) => {
|
|
38
37
|
const callSite = semanticCallSiteAt(context, spawn.location);
|
|
39
38
|
addSemanticGraphRelation(context.state, {
|
|
@@ -85,14 +84,14 @@ const projectSpawn = (context, spawn, child) => {
|
|
|
85
84
|
candidateNodeIds: [],
|
|
86
85
|
});
|
|
87
86
|
};
|
|
88
|
-
const addStdioNode = (context, spawn, child) =>
|
|
87
|
+
const addStdioNode = (context, spawn, child) => retainSemanticGraphNode(context.state, context.file, {
|
|
89
88
|
kind: "stdio",
|
|
90
89
|
roleKey: `stdio:${spawn.processId}`,
|
|
91
90
|
location: spawn.location,
|
|
92
91
|
label: spawn.stdioMode,
|
|
93
92
|
functionNodeId: child.function_node_id,
|
|
94
93
|
properties: { mode: spawn.stdioMode },
|
|
95
|
-
}
|
|
94
|
+
});
|
|
96
95
|
const projectInteraction = (context, interaction, processNodes) => {
|
|
97
96
|
const children = interaction.linkedProcessIds.flatMap((identifier) => {
|
|
98
97
|
const child = processNodes.get(identifier);
|
|
@@ -128,31 +127,31 @@ const projectInteraction = (context, interaction, processNodes) => {
|
|
|
128
127
|
candidateNodeIds: children.map(({ node_id: identifier }) => identifier),
|
|
129
128
|
});
|
|
130
129
|
};
|
|
131
|
-
const addChildListenerNode = (context, interaction) =>
|
|
130
|
+
const addChildListenerNode = (context, interaction) => retainSemanticGraphNode(context.state, context.file, {
|
|
132
131
|
kind: "listener",
|
|
133
132
|
roleKey: interaction.interactionId,
|
|
134
133
|
location: interaction.listenerLocation ?? interaction.location,
|
|
135
134
|
label: interaction.eventName,
|
|
136
135
|
functionNodeId: interaction.ownerCallableId === null
|
|
137
136
|
? null
|
|
138
|
-
: (context.callableNodes.get(interaction.ownerCallableId)
|
|
139
|
-
|
|
137
|
+
: (context.callableNodes.get(interaction.ownerCallableId)?.node_id ??
|
|
138
|
+
null),
|
|
140
139
|
properties: {
|
|
141
140
|
event_name: interaction.eventName,
|
|
142
141
|
method: interaction.method,
|
|
143
142
|
},
|
|
144
|
-
}
|
|
145
|
-
const addSignalNode = (context, interaction) =>
|
|
143
|
+
});
|
|
144
|
+
const addSignalNode = (context, interaction) => retainSemanticGraphNode(context.state, context.file, {
|
|
146
145
|
kind: "signal",
|
|
147
146
|
roleKey: interaction.interactionId,
|
|
148
147
|
location: interaction.location,
|
|
149
148
|
label: interaction.signalName,
|
|
150
149
|
functionNodeId: interaction.ownerCallableId === null
|
|
151
150
|
? null
|
|
152
|
-
: (context.callableNodes.get(interaction.ownerCallableId)
|
|
153
|
-
|
|
151
|
+
: (context.callableNodes.get(interaction.ownerCallableId)?.node_id ??
|
|
152
|
+
null),
|
|
154
153
|
properties: { signal_name: interaction.signalName },
|
|
155
|
-
}
|
|
154
|
+
});
|
|
156
155
|
const addChildUnknown = (input) => {
|
|
157
156
|
const { context, node, location, relationKinds, detail, candidateNodeIds } = input;
|
|
158
157
|
addSemanticGraphUnknown(context.state, createJavaScriptSemanticGraphUnknown({
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { javascriptDisplayText } from "../../domain/javascript/javascriptAstValues.js";
|
|
2
|
+
import { createJavaScriptSemanticGraphNode, createJavaScriptSemanticGraphRelation, javaScriptSemanticNodeId, } from "../../domain/javascript/javascriptSemanticGraph.js";
|
|
2
3
|
import { inferredSemanticEvidence, observedSemanticEvidence, unavailableSemanticRootEvidence, } from "./JavaScriptSemanticGraphEvidence.js";
|
|
3
4
|
/** Create empty projection state with structural application-node mappings. */
|
|
4
5
|
export const createSemanticGraphProjectionState = (applicationGraph) => {
|
|
@@ -11,6 +12,18 @@ export const createSemanticGraphProjectionState = (applicationGraph) => {
|
|
|
11
12
|
applicationNodeIdsByLocation: index.identifiers,
|
|
12
13
|
};
|
|
13
14
|
};
|
|
15
|
+
/** Bind retained semantic identities after all application observations exist. */
|
|
16
|
+
export const bindSemanticGraphApplicationNodes = (state, applicationGraph) => {
|
|
17
|
+
const index = indexApplicationNodes(applicationGraph.nodes).identifiers;
|
|
18
|
+
for (const [identifier, node] of state.nodes) {
|
|
19
|
+
state.nodes.set(identifier, {
|
|
20
|
+
...node,
|
|
21
|
+
application_node_ids: [
|
|
22
|
+
...(index.get(applicationLocationKey(node.identity.artifact_sha256, node.identity.module_path, node.identity.source_range)) ?? []),
|
|
23
|
+
],
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
};
|
|
14
27
|
/** Construct one canonical semantic node backed by an exact artifact file. */
|
|
15
28
|
export const constructSemanticGraphNode = (file, input, state) => createJavaScriptSemanticGraphNode({
|
|
16
29
|
kind: input.kind,
|
|
@@ -22,15 +35,43 @@ export const constructSemanticGraphNode = (file, input, state) => createJavaScri
|
|
|
22
35
|
},
|
|
23
36
|
function_node_id: input.functionNodeId,
|
|
24
37
|
application_node_ids: matchingApplicationNodeIds(file, input, state),
|
|
25
|
-
label: input.label,
|
|
38
|
+
label: input.label === null ? null : javascriptDisplayText(input.label),
|
|
26
39
|
properties: input.properties ?? {},
|
|
27
40
|
evidence: observedSemanticEvidence(file, input.location),
|
|
28
41
|
});
|
|
42
|
+
/** Reuse retained identities and reject exhausted budgets before allocation. */
|
|
43
|
+
export const retainSemanticGraphNode = (state, file, input) => {
|
|
44
|
+
const identifier = javaScriptSemanticNodeId({
|
|
45
|
+
kind: input.kind,
|
|
46
|
+
identity: {
|
|
47
|
+
artifact_sha256: file.sha256,
|
|
48
|
+
module_path: file.path,
|
|
49
|
+
source_range: input.location,
|
|
50
|
+
role_key: input.roleKey,
|
|
51
|
+
},
|
|
52
|
+
});
|
|
53
|
+
const existing = state.nodes.get(identifier);
|
|
54
|
+
if (existing !== undefined)
|
|
55
|
+
return existing;
|
|
56
|
+
if (typeof state.fileNodeBudget === "number" && state.fileNodeBudget <= 0) {
|
|
57
|
+
state.fileNodesDropped = true;
|
|
58
|
+
return null;
|
|
59
|
+
}
|
|
60
|
+
return addSemanticGraphNode(state, constructSemanticGraphNode(file, input, state));
|
|
61
|
+
};
|
|
29
62
|
/** Retain one canonical semantic node. */
|
|
30
63
|
export const addSemanticGraphNode = (state, node) => {
|
|
31
64
|
const existing = state.nodes.get(node.node_id);
|
|
32
65
|
if (existing !== undefined)
|
|
33
66
|
return existing;
|
|
67
|
+
const budget = state.fileNodeBudget;
|
|
68
|
+
if (typeof budget === "number") {
|
|
69
|
+
if (budget <= 0) {
|
|
70
|
+
state.fileNodesDropped = true;
|
|
71
|
+
return null;
|
|
72
|
+
}
|
|
73
|
+
state.fileNodeBudget = budget - 1;
|
|
74
|
+
}
|
|
34
75
|
state.nodes.set(node.node_id, node);
|
|
35
76
|
return node;
|
|
36
77
|
};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { createJavaScriptSemanticGraphUnknown } from "
|
|
2
|
-
import {
|
|
1
|
+
import { createJavaScriptSemanticGraphUnknown } from "../../domain/javascript/javascriptSemanticGraph.js";
|
|
2
|
+
import { retainSemanticGraphNode, addSemanticGraphRelation, addSemanticGraphUnknown, } from "./JavaScriptSemanticGraphConstruction.js";
|
|
3
3
|
import { unknownSemanticEvidence } from "./JavaScriptSemanticGraphEvidence.js";
|
|
4
4
|
import { semanticCallSiteAt, } from "./JavaScriptSemanticGraphFlowProjection.js";
|
|
5
5
|
/** Project environment, argv, file, default, and precedence candidates. */
|
|
@@ -41,7 +41,7 @@ export const projectSemanticConfiguration = (context) => {
|
|
|
41
41
|
});
|
|
42
42
|
}
|
|
43
43
|
};
|
|
44
|
-
const addConfigurationNode = (context, operation) =>
|
|
44
|
+
const addConfigurationNode = (context, operation) => retainSemanticGraphNode(context.state, context.file, {
|
|
45
45
|
kind: "config-source",
|
|
46
46
|
roleKey: operation.configId,
|
|
47
47
|
location: operation.location,
|
|
@@ -55,7 +55,7 @@ const addConfigurationNode = (context, operation) => addSemanticGraphNode(contex
|
|
|
55
55
|
source_kind: operation.kind,
|
|
56
56
|
value: operation.value,
|
|
57
57
|
},
|
|
58
|
-
}
|
|
58
|
+
});
|
|
59
59
|
const configurationRelation = (operation) => operation.kind === "environment"
|
|
60
60
|
? "reads-environment"
|
|
61
61
|
: operation.kind === "argv"
|
|
@@ -94,7 +94,7 @@ export const projectSemanticRequests = (context) => {
|
|
|
94
94
|
});
|
|
95
95
|
}
|
|
96
96
|
};
|
|
97
|
-
const addRequestNode = (context, operation) =>
|
|
97
|
+
const addRequestNode = (context, operation) => retainSemanticGraphNode(context.state, context.file, {
|
|
98
98
|
kind: operation.kind === "request" ? "request" : "response",
|
|
99
99
|
roleKey: operation.requestId,
|
|
100
100
|
location: operation.location,
|
|
@@ -108,7 +108,7 @@ const addRequestNode = (context, operation) => addSemanticGraphNode(context.stat
|
|
|
108
108
|
method: operation.method,
|
|
109
109
|
operation_kind: operation.kind,
|
|
110
110
|
},
|
|
111
|
-
}
|
|
111
|
+
});
|
|
112
112
|
const projectRequestConstruction = (context, operation, request) => {
|
|
113
113
|
const callSite = semanticCallSiteAt(context, operation.location);
|
|
114
114
|
addSemanticGraphRelation(context.state, {
|
|
@@ -182,7 +182,7 @@ export const projectSemanticBoundaries = (context) => {
|
|
|
182
182
|
});
|
|
183
183
|
}
|
|
184
184
|
};
|
|
185
|
-
const addBoundaryNode = (context, operation) =>
|
|
185
|
+
const addBoundaryNode = (context, operation) => retainSemanticGraphNode(context.state, context.file, {
|
|
186
186
|
kind: "boundary",
|
|
187
187
|
roleKey: operation.boundaryId,
|
|
188
188
|
location: operation.location,
|
|
@@ -195,7 +195,7 @@ const addBoundaryNode = (context, operation) => addSemanticGraphNode(context.sta
|
|
|
195
195
|
boundary_kind: operation.kind,
|
|
196
196
|
method: operation.method,
|
|
197
197
|
},
|
|
198
|
-
}
|
|
198
|
+
});
|
|
199
199
|
const bindingOrOwner = (context, bindingId, callableId) => (bindingId === null ? undefined : context.bindingNodes.get(bindingId)) ??
|
|
200
200
|
(callableId === null
|
|
201
201
|
? context.moduleNode
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { createJavaScriptSemanticFingerprint, } from "
|
|
1
|
+
import { createJavaScriptSemanticFingerprint, } from "../../domain/javascript/javascriptSemanticGraph.js";
|
|
2
2
|
import { observedSemanticEvidence } from "./JavaScriptSemanticGraphEvidence.js";
|
|
3
3
|
/** Bind domain fingerprint components to exact semantic function nodes. */
|
|
4
4
|
export const projectSemanticFunctionFingerprints = (file, ir, callableNodes) => ir.functionFingerprints.flatMap((fingerprint) => {
|
|
@@ -1,14 +1,10 @@
|
|
|
1
|
-
import { createJavaScriptSemanticGraphUnknown } from "
|
|
2
|
-
import { sourceRangesEqual } from "
|
|
3
|
-
import {
|
|
1
|
+
import { createJavaScriptSemanticGraphUnknown } from "../../domain/javascript/javascriptSemanticGraph.js";
|
|
2
|
+
import { sourceRangesEqual } from "../../domain/javascript/javascriptStaticAnalysisHelpers.js";
|
|
3
|
+
import { retainSemanticGraphNode, addSemanticGraphRelation, addSemanticGraphUnknown, } from "./JavaScriptSemanticGraphConstruction.js";
|
|
4
4
|
import { inferredSemanticEvidenceAt, unknownSemanticEvidence, } from "./JavaScriptSemanticGraphEvidence.js";
|
|
5
|
-
import { semanticNodesWithinRange } from "./JavaScriptSemanticGraphProjection.js";
|
|
6
5
|
/** Find the retained call-site node at one exact semantic source range. */
|
|
7
6
|
export const semanticCallSiteAt = (context, location) => {
|
|
8
|
-
|
|
9
|
-
return call === undefined
|
|
10
|
-
? undefined
|
|
11
|
-
: context.callSiteNodes.get(call.callSiteId);
|
|
7
|
+
return context.callSiteAt(location);
|
|
12
8
|
};
|
|
13
9
|
/** Project explicit static Promise/task ownership without runtime claims. */
|
|
14
10
|
export const projectSemanticPromises = (context) => {
|
|
@@ -16,7 +12,7 @@ export const projectSemanticPromises = (context) => {
|
|
|
16
12
|
const owner = operation.ownerCallableId === null
|
|
17
13
|
? undefined
|
|
18
14
|
: context.callableNodes.get(operation.ownerCallableId);
|
|
19
|
-
const node =
|
|
15
|
+
const node = retainSemanticGraphNode(context.state, context.file, {
|
|
20
16
|
kind: operation.kind === "awaited-expression" ? "task" : "promise",
|
|
21
17
|
roleKey: operation.promiseId,
|
|
22
18
|
location: operation.location,
|
|
@@ -28,7 +24,7 @@ export const projectSemanticPromises = (context) => {
|
|
|
28
24
|
ownership: operation.ownership,
|
|
29
25
|
source_resolution: operation.sourceResolution,
|
|
30
26
|
},
|
|
31
|
-
}
|
|
27
|
+
});
|
|
32
28
|
return node === null ? [] : [[operation.promiseId, node]];
|
|
33
29
|
}));
|
|
34
30
|
for (const operation of context.ir.promiseOperations) {
|
|
@@ -134,7 +130,7 @@ export const projectSemanticReturnValues = (context) => {
|
|
|
134
130
|
for (const callable of context.ir.callables)
|
|
135
131
|
for (const site of callable.returnSites) {
|
|
136
132
|
const returnNode = context.returnSiteNodes.get(site.returnSiteId);
|
|
137
|
-
const references =
|
|
133
|
+
const references = context.referenceNodesWithin(site.location);
|
|
138
134
|
for (const reference of references)
|
|
139
135
|
addSemanticGraphRelation(context.state, {
|
|
140
136
|
source: reference,
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { createJavaScriptSemanticGraphUnknown } from "
|
|
2
|
-
import {
|
|
1
|
+
import { createJavaScriptSemanticGraphUnknown } from "../../domain/javascript/javascriptSemanticGraph.js";
|
|
2
|
+
import { retainSemanticGraphNode, addSemanticGraphRelation, addSemanticGraphUnknown, } from "./JavaScriptSemanticGraphConstruction.js";
|
|
3
3
|
import { unknownSemanticEvidence } from "./JavaScriptSemanticGraphEvidence.js";
|
|
4
4
|
import { semanticPropertySlot } from "./JavaScriptSemanticGraphValueProjection.js";
|
|
5
5
|
/** Project static object reads, writes, spreads, and destructuring. */
|
|
@@ -45,7 +45,7 @@ export const projectSemanticObjects = (context) => {
|
|
|
45
45
|
addObjectUnknown(context, operation, slot ?? occurrence);
|
|
46
46
|
}
|
|
47
47
|
};
|
|
48
|
-
const addObjectOccurrence = (context, operation) =>
|
|
48
|
+
const addObjectOccurrence = (context, operation) => retainSemanticGraphNode(context.state, context.file, {
|
|
49
49
|
kind: "expression",
|
|
50
50
|
roleKey: operation.objectOperationId,
|
|
51
51
|
location: operation.location,
|
|
@@ -60,7 +60,7 @@ const addObjectOccurrence = (context, operation) => addSemanticGraphNode(context
|
|
|
60
60
|
operation_kind: operation.kind,
|
|
61
61
|
property_name: operation.propertyName,
|
|
62
62
|
},
|
|
63
|
-
}
|
|
63
|
+
});
|
|
64
64
|
const addObjectUnknown = (context, operation, node) => {
|
|
65
65
|
const relation = operation.kind === "read"
|
|
66
66
|
? "reads-property"
|