rea-agents 4.0.1 → 5.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 +257 -96
- package/bridge/android/ReaJadxBridge.java +247 -0
- package/bridge/ghidra/ReaGhidraBridge.java +358 -15
- package/bridge/ghidra/ReaGhidraExtensions.java +113 -0
- package/bridge/ghidra/ReaGhidraPrepareCom.java +32 -0
- package/bridge/native/NativeUIChildren.swift +27 -0
- package/bridge/native/ReaNativeUI.swift +30 -16
- package/dist/android/AndroidTargetSnapshot.js +36 -0
- package/dist/android/JadxAnalysis.js +193 -0
- package/dist/android/JadxConfiguration.js +57 -0
- package/dist/android/JadxMcpTransport.js +172 -0
- package/dist/android/JadxProtocol.js +109 -0
- package/dist/android/JadxProvider.js +259 -0
- package/dist/android/JadxRelease.js +27 -0
- package/dist/android/JadxSession.js +111 -0
- package/dist/application/AnalysisContextQueries.js +2 -1
- package/dist/application/AppBundleExecutable.js +141 -0
- package/dist/application/ArtifactExtraction.js +7 -4
- package/dist/application/ArtifactGraphConstruction.js +10 -17
- package/dist/application/ArtifactInventory/classify.js +1 -1
- package/dist/application/ArtifactInventory/scanCanonical.js +9 -8
- package/dist/application/ArtifactInventory/scanReader.js +1 -1
- package/dist/application/ArtifactInventory.js +1 -1
- package/dist/application/BinaryTargetResolver.js +32 -68
- package/dist/application/BrowserObservationService.js +2 -1
- package/dist/application/BrowserScenarioCaptureService.js +2 -1
- package/dist/application/BrowserScenarioEvidence.js +2 -2
- package/dist/application/CallPathTracing.js +2 -1
- package/dist/application/CapabilityInventory.js +78 -2
- package/dist/application/ClientConfigPath.js +3 -1
- package/dist/application/ClientConfigurationDocument.js +83 -13
- package/dist/application/ClientRegistrationStatus.js +15 -9
- package/dist/application/DirectAnalysis.js +35 -21
- package/dist/application/DirectAnalysisStatus.js +7 -8
- package/dist/application/Doctor.js +48 -8
- package/dist/application/DoctorDiagnostics.js +9 -7
- package/dist/application/DoctorScope.js +1 -1
- package/dist/application/EnhancedLiteralTracing.js +2 -1
- package/dist/application/EnhancedToolTypes.js +2 -1
- package/dist/application/EnhancedTools.js +7 -5
- package/dist/application/EvidenceBundleCommands.js +3 -2
- package/dist/application/EvidenceBundleFiles.js +1 -1
- package/dist/application/EvidenceInputResolver.js +30 -0
- package/dist/application/FilesystemSnapshot.js +20 -5
- package/dist/application/FunctionAnalysisEvidence.js +32 -0
- package/dist/application/InventoryProjectionEvidence.js +2 -1
- package/dist/application/InvestigationProviders.js +6 -0
- package/dist/application/JsonFiles.js +1 -1
- package/dist/application/LinuxHopper.js +20 -6
- package/dist/application/MacHopper.js +20 -7
- package/dist/application/OptionalObservationProviders.js +3 -0
- package/dist/application/ProcessCaptureCapability.js +1 -1
- package/dist/application/ProcessCaptureError.js +1 -1
- package/dist/application/ProcessCaptureJournal.js +3 -1
- package/dist/application/ProcessCaptureLifecycle.js +8 -5
- package/dist/application/ProcessCli.js +14 -6
- package/dist/application/ProcessEvidence.js +2 -6
- package/dist/application/ProcessHarness.js +23 -11
- package/dist/application/ProcessNormalization.js +12 -5
- package/dist/application/ProcessSampling.js +3 -1
- package/dist/application/ReconstructionCoverageService.js +4 -7
- package/dist/application/ReconstructionObligationCandidates.js +5 -2
- package/dist/application/ReconstructionObligationLedgerService.js +2 -1
- package/dist/application/ReferenceSourceImport.js +2 -0
- package/dist/application/ReferenceSourceImportEntries.js +22 -3
- package/dist/application/ReferenceSourceImportPolicy.js +4 -2
- package/dist/application/ReferenceSourceImportTypes.js +5 -0
- package/dist/application/ReferenceSourceVcsAdapter.js +35 -4
- package/dist/application/Setup.js +11 -130
- package/dist/application/SetupClientConfiguration.js +36 -22
- package/dist/application/SetupHost.js +126 -0
- package/dist/application/SetupPlan.js +1 -1
- package/dist/application/SetupRegistrationEnvironment.js +1 -2
- package/dist/application/SetupSkill.js +9 -3
- package/dist/application/SetupTypes.js +17 -0
- package/dist/application/StoreFileLock.js +7 -2
- package/dist/application/SupportedClients.js +8 -0
- package/dist/application/Uninstall.js +32 -21
- package/dist/application/UpdateMaintenance.js +3 -3
- package/dist/application/UpdateRuntime.js +5 -2
- package/dist/application/ValidateSelectedWebScript.js +27 -0
- package/dist/application/WebModuleTraceService.js +209 -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 +7 -7
- package/dist/application/android/AndroidAnalysisService.js +37 -0
- 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} +8 -6
- package/dist/application/{AnalysisProviderRegistry.js → binary/AnalysisProviderRegistry.js} +5 -4
- package/dist/application/{AnalysisSnapshotCache.js → binary/AnalysisSnapshotCache.js} +8 -7
- package/dist/application/{AnalysisSnapshotFiles.js → binary/AnalysisSnapshotFiles.js} +4 -4
- package/dist/application/{BinarySession.js → binary/BinarySession.js} +26 -11
- package/dist/application/{BinarySessionComposition.js → binary/BinarySessionComposition.js} +2 -1
- package/dist/application/{BinarySessionExecution.js → binary/BinarySessionExecution.js} +9 -4
- package/dist/application/{BinarySessionOpen.js → binary/BinarySessionOpen.js} +7 -6
- package/dist/application/{BinarySessionRecords.js → binary/BinarySessionRecords.js} +34 -40
- package/dist/application/{CompositeProvider.js → binary/CompositeProvider.js} +2 -2
- package/dist/application/{LazyAnalysisProvider.js → binary/LazyAnalysisProvider.js} +6 -4
- package/dist/application/{SessionProviderRouter.js → binary/SessionProviderRouter.js} +7 -4
- package/dist/application/firmware/FirmwareAnalysisPort.js +1 -0
- package/dist/application/firmware/FirmwareAnalysisService.js +35 -0
- package/dist/application/{EvidenceLedger.js → investigation/EvidenceLedger.js} +44 -6
- 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} +4 -4
- package/dist/application/javascript/ElectronActiveObservationPort.js +1 -0
- package/dist/application/{ElectronActiveObservationService.js → javascript/ElectronActiveObservationService.js} +3 -2
- 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 -2
- package/dist/application/{JavaScriptApplicationEvidence.js → javascript/JavaScriptApplicationEvidence.js} +3 -3
- package/dist/application/{JavaScriptApplicationEvidenceGraph.js → javascript/JavaScriptApplicationEvidenceGraph.js} +5 -5
- package/dist/application/javascript/JavaScriptApplicationService.js +99 -0
- package/dist/application/{JavaScriptApplicationWorkflowEvidence.js → javascript/JavaScriptApplicationWorkflowEvidence.js} +3 -3
- package/dist/application/{JavaScriptApplicationWorkflowService.js → javascript/JavaScriptApplicationWorkflowService.js} +12 -11
- package/dist/application/{JavaScriptArtifactAnalysis.js → javascript/JavaScriptArtifactAnalysis.js} +12 -26
- 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} +1 -1
- 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} +12 -14
- package/dist/application/{JavaScriptArtifactReconstruction.js → javascript/JavaScriptArtifactReconstruction.js} +4 -8
- package/dist/application/{JavaScriptJsonModules.js → javascript/JavaScriptJsonModules.js} +3 -2
- package/dist/application/{JavaScriptModuleRelationships.js → javascript/JavaScriptModuleRelationships.js} +5 -3
- 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 -2
- package/dist/application/{JavaScriptRuntimeReconciliationEvidence.js → javascript/JavaScriptRuntimeReconciliationEvidence.js} +3 -3
- package/dist/application/{JavaScriptRuntimeReconciliationService.js → javascript/JavaScriptRuntimeReconciliationService.js} +6 -5
- package/dist/application/{JavaScriptSemanticGraphAsyncProjection.js → javascript/JavaScriptSemanticGraphAsyncProjection.js} +1 -1
- package/dist/application/{JavaScriptSemanticGraphBuilder.js → javascript/JavaScriptSemanticGraphBuilder.js} +5 -3
- package/dist/application/{JavaScriptSemanticGraphChildProcessProjection.js → javascript/JavaScriptSemanticGraphChildProcessProjection.js} +1 -1
- package/dist/application/{JavaScriptSemanticGraphConstruction.js → javascript/JavaScriptSemanticGraphConstruction.js} +3 -2
- package/dist/application/{JavaScriptSemanticGraphDataProjection.js → javascript/JavaScriptSemanticGraphDataProjection.js} +1 -1
- package/dist/application/{JavaScriptSemanticGraphFingerprintProjection.js → javascript/JavaScriptSemanticGraphFingerprintProjection.js} +1 -1
- package/dist/application/{JavaScriptSemanticGraphFlowProjection.js → javascript/JavaScriptSemanticGraphFlowProjection.js} +2 -2
- package/dist/application/{JavaScriptSemanticGraphObjectProjection.js → javascript/JavaScriptSemanticGraphObjectProjection.js} +1 -1
- package/dist/application/{JavaScriptSemanticGraphProjection.js → javascript/JavaScriptSemanticGraphProjection.js} +2 -2
- package/dist/application/{JavaScriptSemanticGraphResourceProjection.js → javascript/JavaScriptSemanticGraphResourceProjection.js} +1 -1
- package/dist/application/{JavaScriptSemanticTraceService.js → javascript/JavaScriptSemanticTraceService.js} +6 -5
- package/dist/application/{ManagedApplicationGraphService.js → managed/ManagedApplicationGraphService.js} +7 -6
- package/dist/application/{ManagedMemberComparisonService.js → managed/ManagedMemberComparisonService.js} +10 -8
- package/dist/application/{ManagedNativeVerificationService.js → managed/ManagedNativeVerificationService.js} +7 -6
- package/dist/application/{ManagedReconstructionService.js → managed/ManagedReconstructionService.js} +7 -6
- 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 -6
- package/dist/application/{NativeValueTrace.js → native/NativeValueTrace.js} +6 -6
- package/dist/{application/ArtifactInventory/hash.js → artifacts/ArtifactHash.js} +4 -2
- package/dist/artifacts/ArtifactPaths.js +3 -3
- package/dist/artifacts/ArtifactProvider.js +10 -38
- package/dist/artifacts/ArtifactProviderMetadata.js +36 -0
- package/dist/artifacts/AsarArtifactReader.js +195 -23
- package/dist/artifacts/AsarEntryStream.js +76 -0
- package/dist/artifacts/DirectoryArtifactReader.js +43 -7
- package/dist/artifacts/NativeDmgArtifactReader.js +171 -12
- package/dist/artifacts/SafeOutputTree.js +26 -10
- package/dist/artifacts/ZipArtifactReader.js +1 -0
- package/dist/{application → artifacts/apple}/AppleAssetCatalogAnalysis.js +4 -4
- package/dist/{application → artifacts/apple}/InterfaceBuilderAnalysis.js +125 -51
- package/dist/artifacts/{KeyedArchiveReader.js → apple/KeyedArchiveReader.js} +21 -27
- package/dist/artifacts/{NibArchive.js → apple/NibArchive.js} +4 -2
- package/dist/artifacts/apple/NibViewHierarchy.js +150 -0
- package/dist/{application → artifacts/javascript}/JavaScriptArtifactFiles.js +30 -7
- package/dist/artifacts/javascript/JavaScriptArtifactReader.js +6 -0
- package/dist/artifacts/readStableArtifact.js +52 -0
- package/dist/browser/BrowserProcessStartup.js +3 -1
- package/dist/browser/BrowserScenarioSecrets.js +50 -8
- package/dist/browser/CdpAuthorizedMainFrame.js +5 -5
- package/dist/browser/CdpAuthorizedTarget.js +22 -0
- package/dist/browser/CdpBrowserProvider.js +8 -16
- package/dist/browser/CdpCaptureDocuments.js +36 -22
- package/dist/browser/CdpCaptureEventBodyShapes.js +3 -3
- package/dist/browser/CdpCaptureEventHandlers.js +32 -28
- package/dist/browser/CdpCaptureEventHelpers.js +6 -6
- package/dist/browser/CdpCaptureStorage.js +10 -8
- package/dist/browser/CdpCaptureStorageFingerprints.js +25 -23
- package/dist/browser/CdpCaptureValues.js +8 -4
- package/dist/browser/CdpCommandRejection.js +17 -0
- package/dist/browser/CdpConnection.js +59 -17
- package/dist/browser/CdpElectronInspection.js +13 -13
- package/dist/browser/CdpElectronProvider.js +7 -7
- package/dist/browser/CdpElectronScriptEvents.js +6 -6
- package/dist/browser/CdpElectronScripts.js +4 -4
- package/dist/browser/CdpElectronWorkers.js +4 -4
- package/dist/browser/CdpEndpoint.js +22 -10
- package/dist/browser/CdpObservationSession.js +20 -24
- package/dist/browser/CdpOptionalCommand.js +1 -1
- package/dist/browser/CdpPageCapture.js +6 -5
- package/dist/browser/CdpPageCaptureScripts.js +2 -2
- package/dist/browser/CdpPageCaptureWorkers.js +9 -9
- package/dist/browser/CdpSafeMetadata.js +101 -18
- package/dist/browser/CdpScreenshot.js +6 -6
- package/dist/browser/CdpTargetEvents.js +8 -0
- package/dist/browser/CdpTargetSession.js +10 -7
- package/dist/browser/CdpWebMcpDiscovery.js +23 -17
- package/dist/browser/ElectronFileScope.js +9 -3
- package/dist/browser/PlaywrightBrowserScenarioProvider.js +10 -7
- package/dist/browser/PlaywrightElectronActiveActions.js +1 -1
- package/dist/browser/PlaywrightElectronActiveProvider.js +9 -8
- package/dist/browser/PlaywrightExecutionBoundary.js +1 -1
- package/dist/browser/PlaywrightScenarioArtifacts.js +10 -5
- package/dist/browser/PlaywrightScenarioBrowser.js +3 -1
- package/dist/browser/PlaywrightScenarioEvents.js +65 -53
- package/dist/browser/PlaywrightScenarioSession.js +13 -3
- package/dist/browser/WebSourceMapFetcher.js +55 -58
- 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/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 +91 -0
- package/dist/{cliApplicationCommands.js → cli/applicationCommands.js} +49 -16
- package/dist/cli/artifactCommands.js +1 -1
- package/dist/{cliBrowserAdvancedCommands.js → cli/browserAdvancedCommands.js} +39 -24
- package/dist/{cliBrowserCommands.js → cli/browserCommands.js} +9 -9
- package/dist/cli/commandCancellation.js +24 -0
- package/dist/cli/coreAnalysisCommands.js +5 -400
- package/dist/cli/coreBinaryCommands.js +211 -0
- package/dist/cli/coreNativeCommands.js +293 -0
- package/dist/{cliElectronCommands.js → cli/electronCommands.js} +20 -24
- package/dist/cli/firmwareCommands.js +75 -0
- package/dist/{cliSetup.js → cli/interactiveSetup.js} +1 -1
- package/dist/cli/javascriptApplicationAnalysis.js +2 -2
- package/dist/cli/javascriptRecoveryCommands.js +45 -0
- package/dist/cli/managedCommands.js +5 -5
- package/dist/cli/managedProjectGraphCommand.js +2 -2
- package/dist/cli/options.js +7 -1
- package/dist/{cliProcessCommands.js → cli/processCommands.js} +3 -3
- package/dist/cli/referenceSourceImportStatus.js +15 -0
- package/dist/cli/setupCommands.js +4 -2
- package/dist/cli/utilityCommands.js +50 -25
- package/dist/cli/webModuleCommands.js +56 -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 +20 -15
- package/dist/cliBrowserContext.js +5 -3
- package/dist/cliBrowserScenarioCommands.js +6 -4
- package/dist/cliCommandNames.js +19 -2
- package/dist/cliEvidenceCommands.js +2 -1
- package/dist/cliJavaScriptRuntimeCommands.js +8 -5
- package/dist/cliJsonInput.js +35 -13
- package/dist/cliLogging.js +2 -1
- package/dist/cliOutput.js +52 -27
- package/dist/composition/android.js +3 -0
- package/dist/composition/auxiliaryAnalysisProviders.js +30 -0
- package/dist/composition/binary.js +25 -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/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/webRuntime.js +4 -0
- package/dist/composition/webSourceLocations.js +5 -0
- package/dist/config/environment.js +11 -1
- package/dist/config/parseConfig.js +29 -4
- package/dist/config/parsers.js +1 -1
- package/dist/contracts/android/androidToolContracts.js +77 -0
- package/dist/contracts/applicationToolContracts.js +75 -13
- package/dist/contracts/artifactComparisonExample.js +7 -14
- package/dist/contracts/artifactToolContracts.js +2 -2
- package/dist/contracts/browserScenarioToolContracts.js +1 -1
- package/dist/contracts/enhancedInputs.js +1 -1
- package/dist/contracts/enhancedToolContracts.js +31 -0
- package/dist/contracts/errorSchemas.js +4 -2
- package/dist/contracts/evidenceInputContracts.js +13 -0
- package/dist/contracts/firmware/firmwareToolContracts.js +38 -0
- package/dist/contracts/{applicationWorkflowInputContracts.js → javascript/applicationWorkflowInputContracts.js} +18 -18
- 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} +3 -3
- 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/{nativeToolContracts.js → native/nativeToolContracts.js} +14 -7
- package/dist/contracts/officialToolContracts.js +66 -0
- package/dist/contracts/promptContracts.js +1 -1
- package/dist/contracts/sessionLifecycleInputs.js +4 -0
- package/dist/contracts/sessionToolContracts.js +43 -0
- package/dist/contracts/sessionToolSchemas.js +1 -1
- package/dist/contracts/toolContractExamples.js +5 -0
- package/dist/contracts/toolContractTypes.js +2 -0
- package/dist/contracts/toolContracts.js +18 -135
- package/dist/contracts/toolEffects.js +75 -0
- package/dist/contracts/toolOutputSchemaGroups.js +20 -16
- package/dist/contracts/toolOutputSchemaPrimitives.js +1 -0
- package/dist/contracts/webRuntimeToolContracts.js +43 -0
- package/dist/contracts/webScriptToolContracts.js +68 -0
- package/dist/doctorRuntime.js +5 -1
- package/dist/domain/analysisErrorBase.js +33 -0
- package/dist/domain/analysisErrorCore.js +62 -0
- package/dist/domain/analysisErrorPresentation.js +22 -2
- package/dist/domain/analysisErrorProjection.js +25 -3
- package/dist/domain/analysisSnapshot.js +1 -0
- package/dist/domain/android/androidAnalysis.js +141 -0
- 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/{interfaceBuilderGraph.js → apple/interfaceBuilderGraph.js} +47 -312
- 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/artifactGraph.js +1 -0
- package/dist/domain/artifactInspection.js +19 -17
- package/dist/domain/artifactInventoryEvidence.js +32 -27
- package/dist/domain/artifactInventorySnapshot.js +1 -0
- package/dist/domain/artifactOperationError.js +20 -0
- package/dist/domain/artifactPathSyntax.js +26 -0
- package/dist/domain/browserNetworkEvidence.js +82 -0
- package/dist/domain/browserObservation.js +12 -4
- package/dist/domain/browserObservationError.js +25 -0
- package/dist/domain/browserObservationSchemas.js +2 -1
- package/dist/domain/browserScenario.js +1 -1
- package/dist/domain/browserScenarioCapture.js +23 -1
- package/dist/domain/browserScenarioCaptureValues.js +25 -0
- package/dist/domain/browserScenarioDiff.js +7 -4
- package/dist/domain/browserScenarioDiffEvidence.js +35 -1
- package/dist/domain/browserScenarioNormalization.js +6 -11
- package/dist/domain/browserScenarioValues.js +15 -2
- package/dist/domain/browserSession.js +2 -7
- package/dist/domain/bundleComparison.js +2 -1
- package/dist/domain/callPath.js +86 -38
- package/dist/domain/canonicalDigest.js +65 -0
- package/dist/domain/canonicalOrdering.js +11 -0
- package/dist/domain/changedBehavior.js +8 -7
- package/dist/domain/comparisonSemantics.js +2 -4
- package/dist/domain/comparisonStatus.js +39 -0
- package/dist/domain/configurationErrors.js +25 -0
- package/dist/domain/dosCom.js +8 -0
- package/dist/domain/evidence.js +3 -11
- package/dist/domain/evidenceBundle.js +98 -35
- package/dist/domain/evidenceErrors.js +30 -0
- package/dist/domain/firmware/firmwareAnalysis.js +121 -0
- package/dist/domain/functionComparison.js +4 -2
- package/dist/domain/functionComparisonDimensions.js +6 -4
- package/dist/domain/functionComparisonNormalization.js +13 -8
- package/dist/domain/functionComparisonResults.js +1 -4
- package/dist/domain/hopperErrors.js +78 -0
- package/dist/domain/hopperValues.js +4 -3
- package/dist/domain/inputIssueProjection.js +17 -2
- package/dist/domain/{electronActiveObservation.js → javascript/electronActiveObservation.js} +3 -1
- package/dist/domain/{electronObservation.js → javascript/electronObservation.js} +5 -11
- package/dist/domain/{electronStaticAnalysisBrowser.js → javascript/electronStaticAnalysisBrowser.js} +15 -24
- package/dist/domain/{electronStaticAnalysisIpc.js → javascript/electronStaticAnalysisIpc.js} +2 -2
- package/dist/domain/{electronStaticAnalysisNative.js → javascript/electronStaticAnalysisNative.js} +12 -12
- package/dist/domain/javascript/electronStaticAnalysisTypes.js +1 -0
- package/dist/domain/{electronStaticAnalysisValues.js → javascript/electronStaticAnalysisValues.js} +24 -4
- package/dist/domain/{javascriptApplicationAnalysis.js → javascript/javascriptApplicationAnalysis.js} +2 -2
- package/dist/domain/{javascriptApplicationChangeGraph.js → javascript/javascriptApplicationChangeGraph.js} +2 -2
- package/dist/domain/{javascriptApplicationEvidenceSchemas.js → javascript/javascriptApplicationEvidenceSchemas.js} +6 -4
- package/dist/domain/{javascriptApplicationGraph.js → javascript/javascriptApplicationGraph.js} +13 -22
- package/dist/domain/{javascriptApplicationGraphSchemas.js → javascript/javascriptApplicationGraphSchemas.js} +2 -2
- package/dist/domain/{javascriptApplicationVersionComparison.js → javascript/javascriptApplicationVersionComparison.js} +3 -11
- package/dist/domain/{javascriptApplicationVersionComparisonSchemas.js → javascript/javascriptApplicationVersionComparisonSchemas.js} +3 -3
- package/dist/domain/{javascriptApplicationVersionItems.js → javascript/javascriptApplicationVersionItems.js} +4 -4
- 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} +1 -2
- 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} +7 -3
- package/dist/domain/{javascriptFeatureSeed.js → javascript/javascriptFeatureSeed.js} +32 -11
- package/dist/domain/{javascriptFeatureTrace.js → javascript/javascriptFeatureTrace.js} +9 -13
- package/dist/domain/{javascriptFeatureTraceSchemas.js → javascript/javascriptFeatureTraceSchemas.js} +32 -18
- package/dist/domain/{javascriptFeatureTraversal.js → javascript/javascriptFeatureTraversal.js} +7 -2
- package/dist/domain/{javascriptNativeHandoff.js → javascript/javascriptNativeHandoff.js} +2 -1
- package/dist/domain/javascript/javascriptRecovery.js +88 -0
- package/dist/domain/{javascriptRuntimeLoadState.js → javascript/javascriptRuntimeLoadState.js} +2 -2
- package/dist/domain/{javascriptRuntimeObservation.js → javascript/javascriptRuntimeObservation.js} +2 -2
- package/dist/domain/{javascriptRuntimeReconciliationActive.js → javascript/javascriptRuntimeReconciliationActive.js} +5 -12
- package/dist/domain/{javascriptRuntimeReconciliationGraph.js → javascript/javascriptRuntimeReconciliationGraph.js} +2 -2
- package/dist/domain/{javascriptRuntimeReconciliationMatching.js → javascript/javascriptRuntimeReconciliationMatching.js} +4 -3
- package/dist/domain/{javascriptRuntimeReconciliationParsing.js → javascript/javascriptRuntimeReconciliationParsing.js} +11 -17
- package/dist/domain/{javascriptRuntimeReconciliationResult.js → javascript/javascriptRuntimeReconciliationResult.js} +4 -4
- package/dist/domain/{javascriptRuntimeReconciliationSchemas.js → javascript/javascriptRuntimeReconciliationSchemas.js} +8 -5
- package/dist/domain/{javascriptRuntimeStaticCandidates.js → javascript/javascriptRuntimeStaticCandidates.js} +8 -4
- package/dist/domain/{javascriptSemanticAnalysis.js → javascript/javascriptSemanticAnalysis.js} +80 -17
- package/dist/domain/{javascriptSemanticAsyncEffects.js → javascript/javascriptSemanticAsyncEffects.js} +2 -1
- package/dist/domain/{javascriptSemanticCallResolution.js → javascript/javascriptSemanticCallResolution.js} +11 -5
- package/dist/domain/{javascriptSemanticCalls.js → javascript/javascriptSemanticCalls.js} +7 -4
- package/dist/domain/{javascriptSemanticChildProcesses.js → javascript/javascriptSemanticChildProcesses.js} +5 -2
- package/dist/domain/{javascriptSemanticDataEffectHelpers.js → javascript/javascriptSemanticDataEffectHelpers.js} +7 -6
- package/dist/domain/{javascriptSemanticDataEffects.js → javascript/javascriptSemanticDataEffects.js} +9 -6
- package/dist/domain/{javascriptSemanticFingerprints.js → javascript/javascriptSemanticFingerprints.js} +40 -16
- package/dist/domain/{javascriptSemanticGraph.js → javascript/javascriptSemanticGraph.js} +23 -28
- 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} +9 -2
- package/dist/domain/{javascriptSemanticProjection.js → javascript/javascriptSemanticProjection.js} +32 -44
- package/dist/domain/{javascriptSemanticPromises.js → javascript/javascriptSemanticPromises.js} +77 -21
- package/dist/domain/{javascriptSemanticProvenance.js → javascript/javascriptSemanticProvenance.js} +4 -1
- package/dist/domain/{javascriptSemanticQuery.js → javascript/javascriptSemanticQuery.js} +7 -8
- package/dist/domain/{javascriptSemanticQueryAssessment.js → javascript/javascriptSemanticQueryAssessment.js} +1 -2
- package/dist/domain/{javascriptSemanticQueryIdentity.js → javascript/javascriptSemanticQueryIdentity.js} +1 -2
- 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} +2 -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} +118 -60
- package/dist/domain/{javascriptSourceParser.js → javascript/javascriptSourceParser.js} +4 -2
- package/dist/domain/{javascriptStaticAnalysis.js → javascript/javascriptStaticAnalysis.js} +8 -5
- package/dist/domain/{javascriptStaticAnalysisBundler.js → javascript/javascriptStaticAnalysisBundler.js} +15 -11
- package/dist/domain/{javascriptStaticAnalysisCalls.js → javascript/javascriptStaticAnalysisCalls.js} +16 -8
- package/dist/domain/{javascriptStaticAnalysisHelpers.js → javascript/javascriptStaticAnalysisHelpers.js} +261 -43
- package/dist/domain/{sourceToBundleComparison.js → javascript/sourceToBundleComparison.js} +6 -8
- package/dist/domain/{sourceToBundleComparisonSchemas.js → javascript/sourceToBundleComparisonSchemas.js} +4 -4
- package/dist/domain/{sourceToBundleSignals.js → javascript/sourceToBundleSignals.js} +7 -7
- package/dist/domain/jsonShape.js +6 -2
- 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} +5 -4
- package/dist/domain/{managedMemberComparisonCoverage.js → managed/managedMemberComparisonCoverage.js} +2 -1
- package/dist/domain/{managedMemberComparisonItems.js → managed/managedMemberComparisonItems.js} +99 -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} +8 -6
- package/dist/domain/{managedNativeVerificationSchemas.js → managed/managedNativeVerificationSchemas.js} +6 -5
- package/dist/domain/{managedReconstruction.js → managed/managedReconstruction.js} +3 -3
- package/dist/domain/{nativeDataType.js → native/nativeDataType.js} +2 -0
- package/dist/domain/native/nativeFunctionAnnotations.js +43 -0
- package/dist/domain/{nativeInspection.js → native/nativeInspection.js} +1 -1
- package/dist/domain/{nativeInvestigationGraph.js → native/nativeInvestigationGraph.js} +13 -4
- package/dist/domain/native/nativeLoadImage.js +95 -0
- package/dist/domain/native/nativeMetadataRecovery.js +55 -0
- package/dist/domain/{nativeUiObservation.js → native/nativeUiObservation.js} +20 -6
- package/dist/domain/{objcSwiftMetadata.js → native/objcSwiftMetadata.js} +17 -0
- package/dist/domain/processCapture.js +4 -3
- package/dist/domain/processEvidenceProvider.js +11 -0
- package/dist/domain/processScenario.js +17 -17
- package/dist/domain/processTraceComparison.js +1 -1
- package/dist/domain/propertyListKeys.js +69 -0
- package/dist/domain/providerAdapterError.js +17 -0
- package/dist/domain/providerCleanupError.js +6 -3
- package/dist/domain/providerSelectionError.js +44 -0
- package/dist/domain/reconstructionCoverageEvaluation.js +46 -24
- package/dist/domain/reconstructionCoverageInput.js +7 -0
- package/dist/domain/reconstructionUnknowns.js +1 -1
- package/dist/domain/reconstructionVerification.js +22 -8
- package/dist/domain/referenceSourceClassification.js +5 -6
- package/dist/domain/referenceSourceGraph.js +9 -17
- package/dist/domain/referenceSourceImportParsing.js +38 -23
- package/dist/domain/runtimeIdentification.js +1 -1
- package/dist/domain/runtimeVersion.js +6 -7
- package/dist/domain/safeJson.js +13 -0
- package/dist/domain/sourceMapEnvelope.js +38 -0
- package/dist/domain/staticRuntimeCorrelation.js +9 -7
- package/dist/domain/unicodeCodePointOrder.js +11 -6
- package/dist/domain/unknownRegistryError.js +10 -0
- package/dist/domain/webBundleAnalyzerAst.js +23 -38
- package/dist/domain/webBundleAnalyzerInspection.js +29 -20
- 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/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/ManagedMemberInspector.js +1 -1
- package/dist/dotnet/ManagedMemberInspectorCore.js +34 -0
- package/dist/dotnet/ManagedMemberRows.js +6 -4
- package/dist/dotnet/ManagedMetadataHeaps.js +3 -2
- package/dist/dotnet/ManagedMetadataInventoryRows.js +4 -2
- package/dist/dotnet/ManagedMethodBodyReader.js +8 -1
- package/dist/dotnet/ManagedNativeBoundaryHelpers.js +22 -16
- package/dist/dotnet/ManagedNativeBoundaryInspector.js +56 -50
- package/dist/dotnet/ManagedStaticProvider.js +6 -34
- package/dist/dotnet/ManagedStaticProviderMetadata.js +36 -0
- package/dist/evaluation/CodexAgentEval.js +2 -1
- package/dist/firmware/FirmwareCommand.js +163 -0
- package/dist/firmware/FirmwareFiles.js +190 -0
- package/dist/firmware/FirmwareProvider.js +264 -0
- package/dist/firmware/FirmwarePublication.js +84 -0
- package/dist/firmware/FirmwareRelease.js +32 -0
- package/dist/firmware/FirmwareReports.js +235 -0
- package/dist/firmware/FirmwareVersion.js +80 -0
- package/dist/generatedMcpToolCatalog.js +1 -1
- package/dist/generatedPackageMetadata.js +5 -5
- package/dist/ghidra/GhidraAnalysisProfile.js +37 -8
- package/dist/ghidra/GhidraClient.js +52 -6
- package/dist/ghidra/GhidraDiagnostics.js +3 -0
- package/dist/ghidra/GhidraDoctor.js +38 -14
- package/dist/ghidra/GhidraFunctionValues.js +14 -8
- package/dist/ghidra/GhidraInstallation.js +48 -38
- package/dist/ghidra/GhidraInstallationPolicy.js +140 -0
- package/dist/ghidra/GhidraInventoryValues.js +39 -2
- package/dist/ghidra/GhidraLauncher.js +102 -29
- package/dist/ghidra/GhidraLoadImageAttest.js +36 -0
- package/dist/ghidra/GhidraLoadImageValues.js +199 -0
- package/dist/ghidra/GhidraProvider.js +47 -149
- package/dist/ghidra/GhidraProviderCapabilities.js +58 -28
- package/dist/ghidra/GhidraProviderClient.js +209 -0
- package/dist/ghidra/GhidraRequestQueue.js +2 -2
- package/dist/ghidra/GhidraResponseBuffer.js +7 -1
- package/dist/ghidra/GhidraSessionError.js +31 -4
- package/dist/ghidra/GhidraSessionValues.js +10 -7
- package/dist/ghidra/GhidraTargetSnapshot.js +16 -2
- package/dist/ghidra/GhidraTransport.js +12 -0
- package/dist/ghidra/extensions/GhidraExtensionFailures.js +20 -0
- package/dist/ghidra/extensions/GhidraExtensions.js +170 -0
- package/dist/ghidra/extensions/nativeaot/NativeAotAdapter.js +21 -0
- package/dist/ghidra/extensions/nativeaot/NativeAotReport.js +100 -0
- package/dist/hopper/BridgeLauncher.js +4 -2
- package/dist/hopper/HopperAnalysisProfile.js +7 -2
- package/dist/hopper/HopperCleanup.js +55 -9
- package/dist/hopper/HopperClient.js +14 -4
- package/dist/hopper/HopperProcessDiagnostic.js +1 -1
- package/dist/hopper/HopperProvider.js +8 -50
- package/dist/hopper/HopperProviderCapabilities.js +73 -0
- package/dist/hopper/HopperRequestQueue.js +7 -3
- package/dist/hopper/HopperResponseStream.js +7 -1
- package/dist/hopper/HopperSessionValues.js +1 -1
- package/dist/hopper/HopperSocketConnection.js +1 -1
- package/dist/hopper/HopperTargetLease.js +23 -15
- package/dist/hopper/LinuxPrivateDisplayDiagnostic.js +7 -8
- package/dist/hopper/LinuxPrivateDisplayProbe.js +10 -6
- package/dist/hopper/protocol.js +8 -8
- package/dist/ida/IdaConfiguration.js +56 -0
- package/dist/ida/IdaDoctor.js +53 -0
- package/dist/ida/IdaInput.js +62 -0
- package/dist/ida/IdaMcpConnection.js +111 -0
- package/dist/ida/IdaOperationRunner.js +299 -0
- package/dist/ida/IdaProtocolValues.js +178 -0
- package/dist/ida/IdaProvider.js +126 -0
- package/dist/ida/IdaProviderCapabilities.js +52 -0
- package/dist/ida/IdaSessionClient.js +318 -0
- package/dist/ida/IdaWorkspace.js +54 -0
- package/dist/{browser → inspector}/JavaScriptRuntimeScope.js +19 -6
- package/dist/{browser → inspector}/V8InspectorCaptureProjection.js +46 -8
- package/dist/{browser → inspector}/V8InspectorEndpoint.js +3 -2
- package/dist/{browser → inspector}/V8InspectorProvider.js +16 -14
- package/dist/inspector/providerIdentity.js +6 -0
- package/dist/javascript/recovery/RecoveryFiles.js +122 -0
- package/dist/javascript/recovery/WakaruCommand.js +116 -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 +176 -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 +29 -3
- package/dist/main/startup.js +1 -1
- package/dist/main/transport.js +32 -11
- package/dist/main.js +9 -20
- package/dist/native/AppleDispatchCoverage.js +58 -0
- package/dist/native/AppleDispatchMetadata.js +73 -490
- 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/NativeMacOSProvider.js +204 -72
- package/dist/native/NativeMacOSProviderMetadata.js +42 -0
- package/dist/native/NativeMachoInspection.js +87 -26
- package/dist/native/NativeUiHelperRuntime.js +14 -4
- package/dist/native/NativeUiObservation.js +14 -6
- 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 +16 -7
- package/dist/native/parsers/echoedPath.js +14 -0
- package/dist/native/parsers/lipo.js +14 -0
- package/dist/native/parsers/otool.js +5 -2
- package/dist/native/parsers/plist.js +174 -11
- package/dist/process/ExecFileOutput.js +2 -0
- package/dist/process/PrivateRuntimeRoot.js +13 -3
- package/dist/process/ProcessOwnership.js +5 -73
- package/dist/process/ProcessOwnershipObservation.js +62 -2
- package/dist/process/ProcessOwnershipProcessTree.js +13 -0
- package/dist/process/ProviderProcess.js +62 -24
- package/dist/process/ProviderRunLineage.js +1 -1
- package/dist/process/WindowsAuthority.js +20 -1
- package/dist/reference/ReferenceSourceReaderEntries.js +11 -2
- package/dist/reference/ReferenceSourceReaderFile.js +1 -0
- package/dist/server/createServer.js +67 -2
- package/dist/server/mcpClientMetadata.js +6 -3
- package/dist/server/mcpProgress.js +2 -1
- package/dist/server/promptCompletion.js +3 -3
- package/dist/server/registerAndroidTools.js +30 -0
- package/dist/server/registerApplicationTools/compareExportShapes.js +7 -3
- package/dist/server/registerApplicationTools/compareSourceToBundle.js +9 -4
- package/dist/server/registerApplicationTools/compareVersions.js +7 -3
- package/dist/server/registerApplicationTools/projectMobileApplicationGraph.js +43 -0
- package/dist/server/registerApplicationTools/traceFeature.js +8 -3
- package/dist/server/registerApplicationTools/traceSemantics.js +8 -3
- package/dist/server/registerApplicationTools.js +2 -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/registerEnhancedTools.js +28 -1
- package/dist/server/registerFirmwareTools.js +22 -0
- package/dist/server/registerFunctionComparisonTool.js +1 -1
- package/dist/server/registerInvestigationTools/helpers.js +2 -1
- package/dist/server/registerJavaScriptRecoveryTool.js +17 -0
- package/dist/server/registerJavaScriptRuntimeObservationTools.js +9 -4
- package/dist/server/registerManagedTools.js +4 -4
- package/dist/server/registerManagedWorkflowTools/compareManagedMembers.js +2 -2
- package/dist/server/registerManagedWorkflowTools/contract.js +1 -1
- package/dist/server/registerManagedWorkflowTools/evidence.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/registerOfficialTools.js +4 -1
- package/dist/server/registerProcessComparisonTool.js +5 -2
- package/dist/server/registerPrompts.js +5 -1
- package/dist/server/registerSessionTools.js +4 -2
- package/dist/server/registerWebModuleTool.js +17 -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/runDerivedOperation.js +1 -1
- package/dist/server/sessionAvailabilityPolicy.js +24 -9
- package/dist/server/sessionEvidence.js +1 -1
- package/dist/server/toolResult.js +2 -1
- package/dist/windows/WindowsNativeLoader.js +108 -0
- package/dist/windows/WindowsOwnedProcess.js +170 -0
- package/dist/windows/WindowsPrivateRuntime.js +137 -0
- package/install.sh +16 -8
- package/native/windows/README.md +107 -0
- package/native/windows/build/manifest.json +9 -0
- package/native/windows/build/rea-windows-x64.node +0 -0
- package/package.json +70 -35
- package/scripts/hopper-demo-x11.py +67 -8
- package/scripts/rea.mjs +10 -2
- package/scripts/verify-windows-native-artifact.mjs +39 -0
- package/skills/reverse-engineer-anything/SKILL.md +92 -24
- package/skills/reverse-engineer-anything/references/android-applications.md +31 -0
- package/skills/reverse-engineer-anything/references/javascript-applications.md +19 -2
- package/skills/reverse-engineer-anything/references/native-and-artifacts.md +61 -4
- package/dist/application/JavaScriptApplicationService.js +0 -52
- package/dist/application/runtime.js +0 -51
- package/dist/browser/CdpCanonicalJsonDigest.js +0 -9
- package/dist/domain/appleApplication.js +0 -181
- package/dist/domain/errors.js +0 -324
- package/dist/domain/javascriptAstValues.js +0 -13
- package/dist/domain/javascriptSemanticTraversal.js +0 -30
- package/dist/native/NativeHostCapabilities.js +0 -23
- /package/dist/application/{BinarySessionPort.js → DirectAnalysisDependencies.js} +0 -0
- /package/dist/application/{ElectronActiveObservationPort.js → WebModulePorts.js} +0 -0
- /package/dist/application/{ElectronObservationPort.js → WebRuntimePort.js} +0 -0
- /package/dist/application/{JavaScriptArtifactAnalysisTypes.js → WebScriptArtifactPort.js} +0 -0
- /package/dist/application/{JavaScriptRuntimeObservationPort.js → WebSourceLocationPorts.js} +0 -0
- /package/dist/{domain/electronStaticAnalysisTypes.js → application/android/AndroidAnalysisPort.js} +0 -0
- /package/dist/application/{AbortablePromise.js → binary/AbortablePromise.js} +0 -0
- /package/dist/{domain/javascriptSemanticValueTypes.js → application/binary/BinarySessionPort.js} +0 -0
- /package/dist/application/{BinarySessionStatus.js → binary/BinarySessionStatus.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/application/{JavaScriptSemanticGraphValueProjection.js → javascript/JavaScriptSemanticGraphValueProjection.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/{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/{nativeInstruction.js → native/nativeInstruction.js} +0 -0
- /package/dist/domain/{nativeValueFlow.js → native/nativeValueFlow.js} +0 -0
- /package/dist/domain/{nativeValueTrace.js → native/nativeValueTrace.js} +0 -0
|
@@ -58,7 +58,9 @@ export const detectNpmInstallation = async (packageRoot, host) => {
|
|
|
58
58
|
try {
|
|
59
59
|
canonicalPackageRoot = await host.canonicalPath(packageRoot);
|
|
60
60
|
}
|
|
61
|
-
catch {
|
|
61
|
+
catch (cause) {
|
|
62
|
+
// best-effort cleanup: optional install-location probing; unknown means not npm-managed.
|
|
63
|
+
void cause;
|
|
62
64
|
return undefined;
|
|
63
65
|
}
|
|
64
66
|
try {
|
|
@@ -71,8 +73,9 @@ export const detectNpmInstallation = async (packageRoot, host) => {
|
|
|
71
73
|
: { prefix, packageRoot: canonicalPackageRoot };
|
|
72
74
|
}
|
|
73
75
|
}
|
|
74
|
-
catch {
|
|
76
|
+
catch (cause) {
|
|
75
77
|
// The curl installer uses a Unix prefix that may differ from npm's current default.
|
|
78
|
+
void cause;
|
|
76
79
|
}
|
|
77
80
|
const nodeModules = dirname(canonicalPackageRoot);
|
|
78
81
|
const library = dirname(nodeModules);
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { createHash } from "node:crypto";
|
|
2
|
+
import { AnalysisOutputError } from "../domain/analysisErrorCore.js";
|
|
3
|
+
import { err, ok } from "../domain/result.js";
|
|
4
|
+
/** Bind actual source text to the selected manifest entry before analysis. */
|
|
5
|
+
export const validateSelectedWebScript = (input, data, operation) => {
|
|
6
|
+
const selected = data.manifest.scripts[input.script_index];
|
|
7
|
+
if (selected === undefined ||
|
|
8
|
+
selected.content.state !== "exported" ||
|
|
9
|
+
selected.content.sha256 !== data.sourceFile.sha256 ||
|
|
10
|
+
selected.content.bytes !== data.sourceFile.bytes ||
|
|
11
|
+
Buffer.byteLength(data.source) !== data.sourceFile.bytes ||
|
|
12
|
+
createHash("sha256").update(data.source, "utf8").digest("hex") !==
|
|
13
|
+
data.sourceFile.sha256 ||
|
|
14
|
+
data.manifestFile.path !== input.manifest_path)
|
|
15
|
+
return err(new AnalysisOutputError(operation, "Artifact port changed the selected script/source identity."));
|
|
16
|
+
return ok(selected);
|
|
17
|
+
};
|
|
18
|
+
/** Carry reported capture context alongside independently verified manifest bytes. */
|
|
19
|
+
export const capturedWebManifestIdentity = (data) => ({
|
|
20
|
+
...data.manifestFile,
|
|
21
|
+
reported_output_directory: data.manifest.output_directory,
|
|
22
|
+
capture_sha256: data.manifest.capture_sha256,
|
|
23
|
+
capture_path: data.manifest.capture_path,
|
|
24
|
+
capture_kind: data.manifest.capture_kind,
|
|
25
|
+
capture_completeness: data.manifest.capture_completeness,
|
|
26
|
+
source_evidence_id: data.manifest.source_evidence_id,
|
|
27
|
+
});
|
|
@@ -0,0 +1,209 @@
|
|
|
1
|
+
import { isAbsolute } from "node:path";
|
|
2
|
+
import { z } from "zod";
|
|
3
|
+
import { AnalysisCancelledError, AnalysisCapabilityUnavailableError, AnalysisInputError, AnalysisOutputError, } from "../domain/analysisErrorCore.js";
|
|
4
|
+
import { createEvidence } from "../domain/evidence.js";
|
|
5
|
+
import { jsonObjectSchema } from "../domain/jsonValue.js";
|
|
6
|
+
import { projectInputIssues } from "../domain/inputIssueProjection.js";
|
|
7
|
+
import { err, ok } from "../domain/result.js";
|
|
8
|
+
import { collectWebModuleImports, matchCapturedModules, } from "../domain/webModuleImports.js";
|
|
9
|
+
import { webModuleTraceInputSchema, webModuleFileSchema, webModuleResolutionSchema, webModuleTraceResultSchema, } from "../domain/webModuleTrace.js";
|
|
10
|
+
import { selectedWebScriptArtifactsSchema } from "../domain/webScriptArtifacts.js";
|
|
11
|
+
import { capturedWebManifestIdentity, validateSelectedWebScript, } from "./ValidateSelectedWebScript.js";
|
|
12
|
+
const OPERATION = "trace_web_module_imports";
|
|
13
|
+
const artifactsSchema = selectedWebScriptArtifactsSchema.extend({
|
|
14
|
+
importMap: z
|
|
15
|
+
.strictObject({
|
|
16
|
+
file: webModuleFileSchema,
|
|
17
|
+
baseUrl: z.string().min(1),
|
|
18
|
+
value: jsonObjectSchema,
|
|
19
|
+
})
|
|
20
|
+
.nullable(),
|
|
21
|
+
});
|
|
22
|
+
const resolutionBatchSchema = z.strictObject({
|
|
23
|
+
engine: z.strictObject({ id: z.string().min(1), version: z.string().min(1) }),
|
|
24
|
+
resolutions: z.array(webModuleResolutionSchema),
|
|
25
|
+
diagnostics: z.array(z.string()),
|
|
26
|
+
rawResult: jsonObjectSchema,
|
|
27
|
+
});
|
|
28
|
+
const LIMITATIONS = [
|
|
29
|
+
"Resolution is derived under the selected importer URL and optional import map; it does not establish that the map was installed in the captured page.",
|
|
30
|
+
"Reported source URLs do not establish an inline script's document base. Select importer_url explicitly when that context differs or is unknown.",
|
|
31
|
+
"Captured candidates retain reported capture metadata; their bytes are not reverified by this trace unless selected as the source.",
|
|
32
|
+
"A resolved URL or captured source does not prove loading, execution, UI causality, or module namespace identity. Execution remains unknown.",
|
|
33
|
+
"Only native ES module syntax is resolved. Bundler module IDs, computed imports, workers and non-HTTP(S) importer contexts are outside this trace.",
|
|
34
|
+
"Source-map declarations do not establish retained map bytes or executed original-source coverage.",
|
|
35
|
+
"Selected application code is parsed as data and never executed. The owned resolver executes only REA's trusted stub; its page requests are locally fulfilled or blocked.",
|
|
36
|
+
"Manifest, source and import-map limits are 32 MiB, 16 MiB and 4 MiB. Native resolution has a 20-second deadline; cleanup may extend it. One renderer is requested; no aggregate host memory limit is claimed.",
|
|
37
|
+
];
|
|
38
|
+
/** Compose verified captures, inert syntax and a replaceable URL resolution engine. */
|
|
39
|
+
export class WebModuleTraceService {
|
|
40
|
+
artifacts;
|
|
41
|
+
resolver;
|
|
42
|
+
constructor(artifacts, resolver) {
|
|
43
|
+
this.artifacts = artifacts;
|
|
44
|
+
this.resolver = resolver;
|
|
45
|
+
}
|
|
46
|
+
async trace(rawInput, options) {
|
|
47
|
+
if (isAborted(options?.signal))
|
|
48
|
+
return err(new AnalysisCancelledError(OPERATION));
|
|
49
|
+
const parsed = webModuleTraceInputSchema.safeParse(rawInput);
|
|
50
|
+
if (!parsed.success)
|
|
51
|
+
return err(new AnalysisInputError(OPERATION, { cause: parsed.error }, projectInputIssues(parsed.error.issues, rawInput)));
|
|
52
|
+
const input = parsed.data;
|
|
53
|
+
for (const [path, value] of [
|
|
54
|
+
["manifest_path", input.manifest_path],
|
|
55
|
+
["import_map.path", input.import_map?.path],
|
|
56
|
+
])
|
|
57
|
+
if (value !== undefined && !isAbsolute(value))
|
|
58
|
+
return invalid(path.split("."), "Expected an absolute filesystem path on this host.");
|
|
59
|
+
for (const [path, value] of [
|
|
60
|
+
["importer_url", input.importer_url],
|
|
61
|
+
["import_map.base_url", input.import_map?.base_url],
|
|
62
|
+
])
|
|
63
|
+
if (value !== undefined) {
|
|
64
|
+
const admission = admitContext(value, path.split("."));
|
|
65
|
+
if (!admission.ok)
|
|
66
|
+
return admission;
|
|
67
|
+
}
|
|
68
|
+
const loaded = await this.artifacts.load(input, options);
|
|
69
|
+
if (!loaded.ok)
|
|
70
|
+
return loaded;
|
|
71
|
+
const verified = artifactsSchema.safeParse(loaded.value);
|
|
72
|
+
if (!verified.success)
|
|
73
|
+
return err(new AnalysisOutputError(OPERATION, "Artifact port returned a malformed source/manifest report."));
|
|
74
|
+
const data = verified.data;
|
|
75
|
+
if ((input.import_map?.path ?? null) !==
|
|
76
|
+
(data.importMap?.file.path ?? null) ||
|
|
77
|
+
(input.import_map?.base_url ?? null) !== (data.importMap?.baseUrl ?? null))
|
|
78
|
+
return err(new AnalysisOutputError(OPERATION, "Artifact port changed the selected import-map identity/context."));
|
|
79
|
+
const bound = validateSelectedWebScript(input, data, OPERATION);
|
|
80
|
+
if (!bound.ok)
|
|
81
|
+
return bound;
|
|
82
|
+
const selected = bound.value;
|
|
83
|
+
const importerUrl = input.importer_url ?? selected.url;
|
|
84
|
+
const importerAdmission = admitContext(importerUrl, ["importer_url"]);
|
|
85
|
+
if (!importerAdmission.ok)
|
|
86
|
+
return importerAdmission;
|
|
87
|
+
const syntax = collectWebModuleImports(data.source);
|
|
88
|
+
const literals = syntax.imports
|
|
89
|
+
.filter((reference) => reference.specifier !== null)
|
|
90
|
+
.map((reference) => reference.specifier ?? "");
|
|
91
|
+
let resolution = null;
|
|
92
|
+
if (literals.length > 0) {
|
|
93
|
+
const execution = await this.resolver.resolve({
|
|
94
|
+
importerUrl,
|
|
95
|
+
importMap: data.importMap === null
|
|
96
|
+
? null
|
|
97
|
+
: {
|
|
98
|
+
baseUrl: data.importMap.baseUrl,
|
|
99
|
+
value: data.importMap.value,
|
|
100
|
+
},
|
|
101
|
+
specifiers: literals,
|
|
102
|
+
}, options);
|
|
103
|
+
if (!execution.ok)
|
|
104
|
+
return execution;
|
|
105
|
+
const report = resolutionBatchSchema.safeParse(execution.value);
|
|
106
|
+
if (!report.success)
|
|
107
|
+
return err(new AnalysisOutputError(OPERATION, "Resolver returned malformed or incomplete native evidence."));
|
|
108
|
+
resolution = report.data;
|
|
109
|
+
if (resolution.resolutions.length !== literals.length)
|
|
110
|
+
return err(new AnalysisOutputError(OPERATION, "Resolver did not return every selected literal specifier."));
|
|
111
|
+
}
|
|
112
|
+
if (isAborted(options?.signal))
|
|
113
|
+
return err(new AnalysisCancelledError(OPERATION));
|
|
114
|
+
let literalIndex = 0;
|
|
115
|
+
const imports = [];
|
|
116
|
+
for (const reference of syntax.imports) {
|
|
117
|
+
let resolved;
|
|
118
|
+
if (reference.specifier === null)
|
|
119
|
+
resolved = { state: "unknown", reason: "computed-specifier" };
|
|
120
|
+
else {
|
|
121
|
+
const reported = resolution?.resolutions[literalIndex++];
|
|
122
|
+
if (reported === undefined)
|
|
123
|
+
return err(new AnalysisOutputError(OPERATION, "Resolver omitted a selected literal specifier."));
|
|
124
|
+
resolved = reported;
|
|
125
|
+
}
|
|
126
|
+
imports.push({
|
|
127
|
+
...reference,
|
|
128
|
+
resolution: resolved,
|
|
129
|
+
captured_candidates: resolved.state === "resolved"
|
|
130
|
+
? matchCapturedModules(resolved.url, data.manifest.scripts)
|
|
131
|
+
: [],
|
|
132
|
+
execution: "unknown",
|
|
133
|
+
});
|
|
134
|
+
}
|
|
135
|
+
const normalized = webModuleTraceResultSchema.safeParse({
|
|
136
|
+
manifest: capturedWebManifestIdentity(data),
|
|
137
|
+
source: {
|
|
138
|
+
...data.sourceFile,
|
|
139
|
+
script_index: input.script_index,
|
|
140
|
+
script: selected,
|
|
141
|
+
},
|
|
142
|
+
importer: {
|
|
143
|
+
url: importerUrl,
|
|
144
|
+
basis: input.importer_url === undefined
|
|
145
|
+
? "reported-source-url"
|
|
146
|
+
: "caller-selected",
|
|
147
|
+
},
|
|
148
|
+
import_map: data.importMap === null
|
|
149
|
+
? null
|
|
150
|
+
: { ...data.importMap.file, base_url: data.importMap.baseUrl },
|
|
151
|
+
parser: {
|
|
152
|
+
state: syntax.state,
|
|
153
|
+
diagnostics: syntax.diagnostics,
|
|
154
|
+
location_units: "UTF-16 offsets and columns; one-based lines",
|
|
155
|
+
},
|
|
156
|
+
engine: resolution?.engine ?? null,
|
|
157
|
+
imports,
|
|
158
|
+
diagnostics: resolution?.diagnostics ?? [],
|
|
159
|
+
limitations: LIMITATIONS,
|
|
160
|
+
});
|
|
161
|
+
if (!normalized.success)
|
|
162
|
+
return err(new AnalysisOutputError(OPERATION, normalized.error.message));
|
|
163
|
+
return ok(createEvidence({
|
|
164
|
+
path: data.sourceFile.path,
|
|
165
|
+
sha256: data.sourceFile.sha256,
|
|
166
|
+
format: "file",
|
|
167
|
+
}, {
|
|
168
|
+
id: "rea-web-module-trace",
|
|
169
|
+
name: "REA captured module relationship trace",
|
|
170
|
+
version: "1",
|
|
171
|
+
}, {
|
|
172
|
+
operation: OPERATION,
|
|
173
|
+
parameters: jsonObjectSchema.parse(input),
|
|
174
|
+
result: normalized.data,
|
|
175
|
+
rawResult: resolution?.rawResult ?? null,
|
|
176
|
+
confidence: "derived",
|
|
177
|
+
authority: "historical-reference",
|
|
178
|
+
limitations: LIMITATIONS,
|
|
179
|
+
locations: [
|
|
180
|
+
{ kind: "artifact-path", path: data.sourceFile.path },
|
|
181
|
+
{ kind: "artifact-path", path: input.manifest_path },
|
|
182
|
+
],
|
|
183
|
+
evidenceLinks: data.manifest.source_evidence_id === null
|
|
184
|
+
? []
|
|
185
|
+
: [data.manifest.source_evidence_id],
|
|
186
|
+
}));
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
const admitContext = (value, path) => {
|
|
190
|
+
let url;
|
|
191
|
+
try {
|
|
192
|
+
url = new URL(value);
|
|
193
|
+
}
|
|
194
|
+
catch (cause) {
|
|
195
|
+
void cause;
|
|
196
|
+
return invalid(path, "Expected an absolute context URL. Select importer_url explicitly when the reported source URL is unknown.");
|
|
197
|
+
}
|
|
198
|
+
if (url.username !== "" || url.password !== "")
|
|
199
|
+
return invalid(path, "Module context URLs must not contain username/password userinfo.");
|
|
200
|
+
if (url.protocol !== "http:" && url.protocol !== "https:")
|
|
201
|
+
return err(new AnalysisCapabilityUnavailableError("web-module-resolution", OPERATION, "unsupported_context_scheme", {
|
|
202
|
+
userMessage: `${path.join(".")} ${value} uses unsupported ${url.protocol} context. This trace currently supports HTTP(S) importer/map contexts; select a supported context explicitly when appropriate.`,
|
|
203
|
+
}));
|
|
204
|
+
return ok(null);
|
|
205
|
+
};
|
|
206
|
+
const isAborted = (signal) => signal?.aborted === true;
|
|
207
|
+
const invalid = (path, message) => err(new AnalysisInputError(OPERATION, undefined, [
|
|
208
|
+
{ path, reason: "invalid_format", message },
|
|
209
|
+
]));
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { AnalysisCancelledError, AnalysisInputError, AnalysisOutputError, } from "../domain/analysisErrorCore.js";
|
|
3
|
+
import { createEvidence } from "../domain/evidence.js";
|
|
4
|
+
import { jsonObjectSchema, jsonValueSchema } from "../domain/jsonValue.js";
|
|
5
|
+
import { projectInputIssues } from "../domain/inputIssueProjection.js";
|
|
6
|
+
import { err, ok } from "../domain/result.js";
|
|
7
|
+
import { observeWebExecutionInputSchema, webExecutionSchema, } from "../domain/webExecution.js";
|
|
8
|
+
import { inspectWebEventListenersInputSchema, webEventListenersSchema, } from "../domain/webEventListeners.js";
|
|
9
|
+
/** Shared public workflows keep instrumentation and listener inspection independently selectable. */
|
|
10
|
+
export class WebRuntimeService {
|
|
11
|
+
provider;
|
|
12
|
+
constructor(provider) {
|
|
13
|
+
this.provider = provider;
|
|
14
|
+
}
|
|
15
|
+
/** Observe externally triggered execution; selection authorizes the declared instrumentation. */
|
|
16
|
+
async observe(rawInput, options) {
|
|
17
|
+
const operation = "observe_web_execution";
|
|
18
|
+
const parsed = parseInput(observeWebExecutionInputSchema, rawInput, operation, options);
|
|
19
|
+
if (!parsed.ok)
|
|
20
|
+
return parsed;
|
|
21
|
+
const result = await this.provider.observeExecution(parsed.value, options);
|
|
22
|
+
if (!result.ok)
|
|
23
|
+
return result;
|
|
24
|
+
const verified = webExecutionSchema.safeParse(result.value);
|
|
25
|
+
if (!verified.success)
|
|
26
|
+
return err(new AnalysisOutputError(operation, verified.error.message));
|
|
27
|
+
if (verified.data.target.target_id !== parsed.value.target_id ||
|
|
28
|
+
verified.data.window.requested_ms !== parsed.value.observation_ms)
|
|
29
|
+
return err(new AnalysisOutputError(operation, "Provider changed the selected target or requested window."));
|
|
30
|
+
return this.evidence(operation, parsed.value, verified.data, options);
|
|
31
|
+
}
|
|
32
|
+
/** Inspect one selected node's listener declarations without dispatching an event. */
|
|
33
|
+
async inspect(rawInput, options) {
|
|
34
|
+
const operation = "inspect_web_event_listeners";
|
|
35
|
+
const parsed = parseInput(inspectWebEventListenersInputSchema, rawInput, operation, options);
|
|
36
|
+
if (!parsed.ok)
|
|
37
|
+
return parsed;
|
|
38
|
+
const result = await this.provider.inspectEventListeners(parsed.value, options);
|
|
39
|
+
if (!result.ok)
|
|
40
|
+
return result;
|
|
41
|
+
const verified = webEventListenersSchema.safeParse(result.value);
|
|
42
|
+
if (!verified.success)
|
|
43
|
+
return err(new AnalysisOutputError(operation, verified.error.message));
|
|
44
|
+
if (verified.data.target.target_id !== parsed.value.target_id ||
|
|
45
|
+
verified.data.selected_node.selector !== parsed.value.selector)
|
|
46
|
+
return err(new AnalysisOutputError(operation, "Provider changed the selected target or node selector."));
|
|
47
|
+
return this.evidence(operation, parsed.value, verified.data, options);
|
|
48
|
+
}
|
|
49
|
+
evidence(operation, input, result, options) {
|
|
50
|
+
if (options?.signal?.aborted)
|
|
51
|
+
return err(new AnalysisCancelledError(operation));
|
|
52
|
+
if (input.allowed_origins.length > 0 &&
|
|
53
|
+
!input.allowed_origins.includes(result.target.origin))
|
|
54
|
+
return err(new AnalysisOutputError(operation, "Provider returned a document outside the selected origin scope."));
|
|
55
|
+
return ok(createEvidence(undefined, this.provider.identity(), {
|
|
56
|
+
predicateType: `rea.${operation.replaceAll("_", "-")}`,
|
|
57
|
+
operation,
|
|
58
|
+
parameters: jsonObjectSchema.parse(input),
|
|
59
|
+
result: jsonValueSchema.parse(result),
|
|
60
|
+
confidence: "observed",
|
|
61
|
+
authority: "external-service",
|
|
62
|
+
limitations: result.limitations,
|
|
63
|
+
}));
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
const parseInput = (schema, rawInput, operation, options) => {
|
|
67
|
+
if (options?.signal?.aborted)
|
|
68
|
+
return err(new AnalysisCancelledError(operation));
|
|
69
|
+
const parsed = schema.safeParse(rawInput);
|
|
70
|
+
return parsed.success
|
|
71
|
+
? ok(parsed.data)
|
|
72
|
+
: err(new AnalysisInputError(operation, { cause: parsed.error }, projectInputIssues(parsed.error.issues, rawInput)));
|
|
73
|
+
};
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
import { createHash } from "node:crypto";
|
|
2
|
+
import { readFile } from "node:fs/promises";
|
|
3
|
+
import { isAbsolute } from "node:path";
|
|
4
|
+
import { z } from "zod";
|
|
5
|
+
import { ArtifactReaderFailure } from "../artifacts/ArtifactReader.js";
|
|
6
|
+
import { publishWebScripts } from "../browser/assets/PublishWebScripts.js";
|
|
7
|
+
import { selectScriptCapture } from "../browser/assets/ScriptCaptureAdapters.js";
|
|
8
|
+
import { AnalysisCancelledError, AnalysisInputError, AnalysisOutputError, } from "../domain/analysisErrorCore.js";
|
|
9
|
+
import { createEvidence } from "../domain/evidence.js";
|
|
10
|
+
import { projectInputIssues } from "../domain/inputIssueProjection.js";
|
|
11
|
+
import { jsonValueSchema } from "../domain/jsonValue.js";
|
|
12
|
+
import { ProviderAdapterError } from "../domain/providerAdapterError.js";
|
|
13
|
+
import { err, ok } from "../domain/result.js";
|
|
14
|
+
import { safeParseJson } from "../domain/safeJson.js";
|
|
15
|
+
import { exportWebScriptsInputSchema, } from "../domain/webScriptExport.js";
|
|
16
|
+
import { WebScriptExportError } from "../domain/webScriptExportError.js";
|
|
17
|
+
import { WEB_SCRIPT_EXPORT_PROVIDER as PROVIDER } from "./InvestigationProviders.js";
|
|
18
|
+
const OPERATION = "export_web_scripts";
|
|
19
|
+
/** Export one local capture through the shared CLI/MCP application workflow. */
|
|
20
|
+
export const exportWebScripts = async (rawInput, options = {}) => {
|
|
21
|
+
const input = exportWebScriptsInputSchema.safeParse(rawInput);
|
|
22
|
+
return input.success
|
|
23
|
+
? exportWebScriptsValidated(input.data, options)
|
|
24
|
+
: err(new AnalysisInputError(OPERATION, undefined, projectInputIssues(input.error.issues, rawInput)));
|
|
25
|
+
};
|
|
26
|
+
/** Publish input already parsed by a named adapter contract. */
|
|
27
|
+
export const exportWebScriptsValidated = async (input, options = {}) => {
|
|
28
|
+
if (!isAbsolute(input.capture_path) || !isAbsolute(input.output_directory))
|
|
29
|
+
return err(new AnalysisInputError(OPERATION, undefined, [
|
|
30
|
+
{
|
|
31
|
+
path: [],
|
|
32
|
+
reason: "invalid_format",
|
|
33
|
+
message: "capture_path and output_directory must be absolute filesystem paths on this host.",
|
|
34
|
+
},
|
|
35
|
+
]));
|
|
36
|
+
try {
|
|
37
|
+
options.signal?.throwIfAborted();
|
|
38
|
+
const bytes = await readFile(input.capture_path, {
|
|
39
|
+
signal: options.signal,
|
|
40
|
+
});
|
|
41
|
+
const loaded = parseCapture(bytes);
|
|
42
|
+
if (!loaded.ok)
|
|
43
|
+
return loaded;
|
|
44
|
+
options.signal?.throwIfAborted();
|
|
45
|
+
const sha256 = createHash("sha256").update(bytes).digest("hex");
|
|
46
|
+
const result = await publishWebScripts(input, loaded.value, sha256, options.signal);
|
|
47
|
+
return ok(createEvidence({ path: input.capture_path, sha256, format: "file" }, PROVIDER, {
|
|
48
|
+
predicateType: "rea.web-script-export",
|
|
49
|
+
operation: OPERATION,
|
|
50
|
+
parameters: {
|
|
51
|
+
capture_path: input.capture_path,
|
|
52
|
+
output_directory: input.output_directory,
|
|
53
|
+
},
|
|
54
|
+
result: jsonValueSchema.parse(result),
|
|
55
|
+
rawResult: null,
|
|
56
|
+
confidence: "derived",
|
|
57
|
+
authority: "historical-reference",
|
|
58
|
+
limitations: result.limitations,
|
|
59
|
+
locations: [{ kind: "artifact-path", path: result.manifest.path }],
|
|
60
|
+
evidenceLinks: loaded.value.sourceEvidenceId === null
|
|
61
|
+
? []
|
|
62
|
+
: [loaded.value.sourceEvidenceId],
|
|
63
|
+
}));
|
|
64
|
+
}
|
|
65
|
+
catch (cause) {
|
|
66
|
+
if (cause instanceof WebScriptExportError)
|
|
67
|
+
return err(cause);
|
|
68
|
+
if (options.signal?.aborted === true)
|
|
69
|
+
return err(new AnalysisCancelledError(OPERATION));
|
|
70
|
+
if (cause instanceof ArtifactReaderFailure)
|
|
71
|
+
return err(new WebScriptExportError(cause.reason, input.output_directory, cause.message));
|
|
72
|
+
if (cause instanceof z.ZodError)
|
|
73
|
+
return err(new AnalysisOutputError(OPERATION, cause.message, { cause }));
|
|
74
|
+
if (cause instanceof Error &&
|
|
75
|
+
"code" in cause &&
|
|
76
|
+
typeof cause.code === "string")
|
|
77
|
+
return err(new WebScriptExportError("io", `${input.capture_path} → ${input.output_directory}`, cause.message));
|
|
78
|
+
return err(new ProviderAdapterError(PROVIDER.id, OPERATION, {
|
|
79
|
+
cause,
|
|
80
|
+
diagnostics: {
|
|
81
|
+
capture_path: input.capture_path,
|
|
82
|
+
output_directory: input.output_directory,
|
|
83
|
+
error_name: cause instanceof Error ? cause.name : "UnknownError",
|
|
84
|
+
error_message: cause instanceof Error
|
|
85
|
+
? cause.message
|
|
86
|
+
: typeof cause === "string"
|
|
87
|
+
? cause
|
|
88
|
+
: "Unknown script export failure",
|
|
89
|
+
},
|
|
90
|
+
}));
|
|
91
|
+
}
|
|
92
|
+
};
|
|
93
|
+
const parseCapture = (bytes) => {
|
|
94
|
+
try {
|
|
95
|
+
const text = new TextDecoder("utf-8", {
|
|
96
|
+
fatal: true,
|
|
97
|
+
ignoreBOM: true,
|
|
98
|
+
}).decode(bytes);
|
|
99
|
+
const json = safeParseJson(text);
|
|
100
|
+
if (!json.ok)
|
|
101
|
+
throw new TypeError(json.error);
|
|
102
|
+
return ok(selectScriptCapture(json.value));
|
|
103
|
+
}
|
|
104
|
+
catch (cause) {
|
|
105
|
+
return err(new AnalysisInputError(OPERATION, { cause }, [
|
|
106
|
+
{
|
|
107
|
+
path: ["capture_path"],
|
|
108
|
+
reason: "invalid_format",
|
|
109
|
+
message: cause instanceof Error
|
|
110
|
+
? cause.message
|
|
111
|
+
: "Capture is not valid UTF-8 JSON evidence.",
|
|
112
|
+
},
|
|
113
|
+
]));
|
|
114
|
+
}
|
|
115
|
+
};
|
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
import { createHash } from "node:crypto";
|
|
2
|
+
import { isAbsolute } from "node:path";
|
|
3
|
+
import { z } from "zod";
|
|
4
|
+
import { AnalysisCancelledError, AnalysisInputError, AnalysisOutputError, } from "../domain/analysisErrorCore.js";
|
|
5
|
+
import { createEvidence } from "../domain/evidence.js";
|
|
6
|
+
import { projectInputIssues } from "../domain/inputIssueProjection.js";
|
|
7
|
+
import { jsonObjectSchema } from "../domain/jsonValue.js";
|
|
8
|
+
import { err, ok } from "../domain/result.js";
|
|
9
|
+
import { selectedWebScriptArtifactsSchema, webArtifactFileSchema, } from "../domain/webScriptArtifacts.js";
|
|
10
|
+
import { WEB_SOURCE_MAP_LIMITS, webSourceLocationInputSchema, webSourceLocationResultSchema, webSourceMapReportSchema, } from "../domain/webSourceLocation.js";
|
|
11
|
+
import { webSourceOffset } from "../domain/webSourcePosition.js";
|
|
12
|
+
import { capturedWebManifestIdentity, validateSelectedWebScript, } from "./ValidateSelectedWebScript.js";
|
|
13
|
+
const OPERATION = "trace_web_source_location";
|
|
14
|
+
const artifactsSchema = selectedWebScriptArtifactsSchema.extend({
|
|
15
|
+
sourceMap: z.strictObject({
|
|
16
|
+
file: webArtifactFileSchema,
|
|
17
|
+
url: z.string().min(1),
|
|
18
|
+
text: z.string(),
|
|
19
|
+
}),
|
|
20
|
+
});
|
|
21
|
+
const LIMITATIONS = [
|
|
22
|
+
"The source/map pairing and source-map URL context are caller-selected. Deployment authenticity and execution remain unknown.",
|
|
23
|
+
"Capture metadata and its Evidence reference are historical context; this trace independently verifies only the selected manifest, script and map bytes.",
|
|
24
|
+
"Source names and sourceRoot are reported declarations. Resolved URLs are derived by the pinned upstream codec; no original source is fetched or executed.",
|
|
25
|
+
"Embedded source hashes identify the UTF-8 encoding of decoded sourcesContent text, not an independently retained original file. Missing or out-of-range original content positions remain explicit.",
|
|
26
|
+
"Lookup returns all segments at the greatest generated position not greater than the selected point, including earlier lines and generated-only segments. A mapped point does not establish an executed range or UI causality.",
|
|
27
|
+
"Regular maps and inline indexed sections are supported. External section URLs are unsupported; unknown extensions are retained in raw map text and are not interpreted.",
|
|
28
|
+
"Complete evidence has a 4 MiB map, 32 MiB reply, 262144 decoded rows/segments and 64-level section budget. The owned codec has a 20-second deadline, 192 MiB old-generation heap and one V8 worker; cleanup may extend the deadline. V8 heap limits do not establish aggregate RSS limits.",
|
|
29
|
+
];
|
|
30
|
+
/** Join verified captured bytes with an explicitly selected source-map point. */
|
|
31
|
+
export class WebSourceLocationService {
|
|
32
|
+
artifacts;
|
|
33
|
+
decoder;
|
|
34
|
+
constructor(artifacts, decoder) {
|
|
35
|
+
this.artifacts = artifacts;
|
|
36
|
+
this.decoder = decoder;
|
|
37
|
+
}
|
|
38
|
+
/** Shared CLI/MCP workflow preserves raw declarations and every equal-position match. */
|
|
39
|
+
async trace(rawInput, options) {
|
|
40
|
+
if (options?.signal?.aborted)
|
|
41
|
+
return err(new AnalysisCancelledError(OPERATION));
|
|
42
|
+
const parsed = webSourceLocationInputSchema.safeParse(rawInput);
|
|
43
|
+
if (!parsed.success)
|
|
44
|
+
return err(new AnalysisInputError(OPERATION, { cause: parsed.error }, projectInputIssues(parsed.error.issues, rawInput)));
|
|
45
|
+
const input = parsed.data;
|
|
46
|
+
const admitted = admitContext(input);
|
|
47
|
+
if (!admitted.ok)
|
|
48
|
+
return admitted;
|
|
49
|
+
const loaded = await this.artifacts.load(input, options);
|
|
50
|
+
if (!loaded.ok)
|
|
51
|
+
return loaded;
|
|
52
|
+
const verified = artifactsSchema.safeParse(loaded.value);
|
|
53
|
+
if (!verified.success)
|
|
54
|
+
return invalidOutput("Artifact port returned malformed source/map evidence.");
|
|
55
|
+
const data = verified.data;
|
|
56
|
+
const bound = validateSelectedWebScript(input, data, OPERATION);
|
|
57
|
+
if (!bound.ok)
|
|
58
|
+
return bound;
|
|
59
|
+
const map = data.sourceMap;
|
|
60
|
+
const pairing = verifyPairing(input, data);
|
|
61
|
+
if (!pairing.ok)
|
|
62
|
+
return pairing;
|
|
63
|
+
const generatedOffset = pairing.value;
|
|
64
|
+
if (options?.signal?.aborted)
|
|
65
|
+
return err(new AnalysisCancelledError(OPERATION));
|
|
66
|
+
const traced = await this.decoder.trace({
|
|
67
|
+
text: map.text,
|
|
68
|
+
path: map.file.path,
|
|
69
|
+
url: map.url,
|
|
70
|
+
position: input.generated_position,
|
|
71
|
+
}, options);
|
|
72
|
+
if (!traced.ok)
|
|
73
|
+
return traced;
|
|
74
|
+
const report = verifyReport(input, map.file.sha256, traced.value);
|
|
75
|
+
if (!report.ok)
|
|
76
|
+
return report;
|
|
77
|
+
if (options?.signal?.aborted)
|
|
78
|
+
return err(new AnalysisCancelledError(OPERATION));
|
|
79
|
+
const normalized = webSourceLocationResultSchema.safeParse({
|
|
80
|
+
...report.value,
|
|
81
|
+
manifest: capturedWebManifestIdentity(data),
|
|
82
|
+
source: {
|
|
83
|
+
...data.sourceFile,
|
|
84
|
+
script_index: input.script_index,
|
|
85
|
+
script: bound.value,
|
|
86
|
+
},
|
|
87
|
+
source_map: { ...map.file, url: map.url, association: "caller-selected" },
|
|
88
|
+
generated_offset: generatedOffset,
|
|
89
|
+
source_authenticity: "unknown",
|
|
90
|
+
execution: "unknown",
|
|
91
|
+
limitations: LIMITATIONS,
|
|
92
|
+
});
|
|
93
|
+
if (!normalized.success)
|
|
94
|
+
return invalidOutput(normalized.error.message);
|
|
95
|
+
return ok(createEvidence({
|
|
96
|
+
path: data.sourceFile.path,
|
|
97
|
+
sha256: data.sourceFile.sha256,
|
|
98
|
+
format: "file",
|
|
99
|
+
}, {
|
|
100
|
+
id: "rea-web-source-location",
|
|
101
|
+
name: "REA captured source-map point trace",
|
|
102
|
+
version: "1",
|
|
103
|
+
}, {
|
|
104
|
+
operation: OPERATION,
|
|
105
|
+
parameters: jsonObjectSchema.parse(input),
|
|
106
|
+
result: normalized.data,
|
|
107
|
+
rawResult: { source_map_text: map.text },
|
|
108
|
+
confidence: "derived",
|
|
109
|
+
authority: "historical-reference",
|
|
110
|
+
limitations: LIMITATIONS,
|
|
111
|
+
locations: [
|
|
112
|
+
data.sourceFile.path,
|
|
113
|
+
data.manifestFile.path,
|
|
114
|
+
map.file.path,
|
|
115
|
+
].map((path) => ({ kind: "artifact-path", path })),
|
|
116
|
+
evidenceLinks: data.manifest.source_evidence_id === null
|
|
117
|
+
? []
|
|
118
|
+
: [data.manifest.source_evidence_id],
|
|
119
|
+
}));
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
const invalidOutput = (message) => err(new AnalysisOutputError(OPERATION, message));
|
|
123
|
+
const invalid = (path, message) => err(new AnalysisInputError(OPERATION, undefined, [
|
|
124
|
+
{ path, reason: "invalid_format", message },
|
|
125
|
+
]));
|
|
126
|
+
const admitContext = (input) => {
|
|
127
|
+
for (const [path, value] of [
|
|
128
|
+
["manifest_path", input.manifest_path],
|
|
129
|
+
["source_map.path", input.source_map.path],
|
|
130
|
+
])
|
|
131
|
+
if (!isAbsolute(value))
|
|
132
|
+
return invalid(path.split("."), "Expected an absolute filesystem path on this host.");
|
|
133
|
+
if (!URL.canParse(input.source_map.url))
|
|
134
|
+
return invalid(["source_map", "url"], "Expected an absolute source-map URL context. Select its deployment context explicitly; no URL is fetched.");
|
|
135
|
+
return ok(null);
|
|
136
|
+
};
|
|
137
|
+
const verifyPairing = (input, data) => {
|
|
138
|
+
const map = data.sourceMap;
|
|
139
|
+
if (map.file.path !== input.source_map.path ||
|
|
140
|
+
map.url !== input.source_map.url ||
|
|
141
|
+
Buffer.byteLength(map.text) !== map.file.bytes ||
|
|
142
|
+
createHash("sha256").update(map.text).digest("hex") !== map.file.sha256 ||
|
|
143
|
+
map.file.bytes > WEB_SOURCE_MAP_LIMITS.mapBytes)
|
|
144
|
+
return invalidOutput("Artifact port changed the selected source-map byte identity or URL context.");
|
|
145
|
+
const generatedOffset = webSourceOffset(data.source, input.generated_position);
|
|
146
|
+
if (generatedOffset === undefined)
|
|
147
|
+
return invalid(["generated_position"], "Selected generated position is outside the retained script text (one-based lines; zero-based UTF-16 columns).");
|
|
148
|
+
return ok(generatedOffset);
|
|
149
|
+
};
|
|
150
|
+
const verifyReport = (input, sha256, value) => {
|
|
151
|
+
const report = webSourceMapReportSchema.safeParse(value);
|
|
152
|
+
if (!report.success)
|
|
153
|
+
return invalidOutput("Codec port returned malformed source-map point evidence.");
|
|
154
|
+
if (report.data.source_map_sha256 !== sha256 ||
|
|
155
|
+
report.data.url_context !== input.source_map.url ||
|
|
156
|
+
report.data.lookup.requested.line !== input.generated_position.line ||
|
|
157
|
+
report.data.lookup.requested.column !== input.generated_position.column)
|
|
158
|
+
return invalidOutput("Codec port changed the selected map, URL context or generated point.");
|
|
159
|
+
return ok(report.data);
|
|
160
|
+
};
|
|
@@ -22,7 +22,8 @@ export const probeWindowsCapabilities = async (dependencies = systemDependencies
|
|
|
22
22
|
? { available: true, reason: null }
|
|
23
23
|
: { available: false, reason: pty.reason },
|
|
24
24
|
},
|
|
25
|
-
security:
|
|
25
|
+
security: dependencies.nativeCapabilities?.() ??
|
|
26
|
+
windowsNativeCapabilities(dependencies.platform),
|
|
26
27
|
};
|
|
27
28
|
};
|
|
28
29
|
const systemDependencies = () => ({
|
|
@@ -30,10 +31,8 @@ const systemDependencies = () => ({
|
|
|
30
31
|
architecture: process.arch,
|
|
31
32
|
probeSymlinkCreation,
|
|
32
33
|
probeNoFollowOpen: () => systemNoFollowOpenCapability(process.platform, constants.O_NOFOLLOW),
|
|
33
|
-
probePrivateAcl: () => (
|
|
34
|
-
|
|
35
|
-
reason: "Windows ACL enforcement is not implemented by this REA build",
|
|
36
|
-
}),
|
|
34
|
+
probePrivateAcl: () => windowsNativeCapabilities(process.platform).private_runtime_dacl,
|
|
35
|
+
nativeCapabilities: () => windowsNativeCapabilities(process.platform),
|
|
37
36
|
probeUnixDomainSocket: () => process.platform === "win32"
|
|
38
37
|
? {
|
|
39
38
|
available: false,
|
|
@@ -47,7 +46,7 @@ export const systemNoFollowOpenCapability = (platform, noFollow) => {
|
|
|
47
46
|
if (platform === "win32")
|
|
48
47
|
return {
|
|
49
48
|
available: false,
|
|
50
|
-
reason: "Windows
|
|
49
|
+
reason: "Node pathname O_NOFOLLOW is not Windows handle authority; native admission is reported separately in security.",
|
|
51
50
|
};
|
|
52
51
|
return typeof noFollow === "number"
|
|
53
52
|
? { available: true, reason: null }
|
|
@@ -79,9 +78,10 @@ const probeSymlinkCreation = async () => {
|
|
|
79
78
|
try {
|
|
80
79
|
await rm(root, { recursive: true, force: true });
|
|
81
80
|
}
|
|
82
|
-
catch {
|
|
81
|
+
catch (cause) {
|
|
83
82
|
// Cleanup failure must not replace the machine-readable probe outcome.
|
|
84
83
|
// The probe root lives beneath the OS temporary directory and is unique.
|
|
84
|
+
void cause;
|
|
85
85
|
}
|
|
86
86
|
}
|
|
87
87
|
};
|