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
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { setImmediate } from "node:timers/promises";
|
|
2
|
-
import { AnalysisCancelledError, AnalysisInputError, } from "../domain/
|
|
2
|
+
import { AnalysisCancelledError, AnalysisInputError, } from "../domain/analysisErrorCore.js";
|
|
3
3
|
import { err, ok } from "../domain/result.js";
|
|
4
4
|
import { mcpProgressReporter } from "./mcpProgress.js";
|
|
5
5
|
/** Run synchronous derived work with transport yields and a publication guard. */
|
|
@@ -1,11 +1,26 @@
|
|
|
1
1
|
import { platform } from "node:process";
|
|
2
2
|
/** Select configured availability reporting or the target-free defaults. */
|
|
3
|
-
export const sessionAvailabilityPolicy = (configured, defaults) =>
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
3
|
+
export const sessionAvailabilityPolicy = (configured, defaults) => {
|
|
4
|
+
const policy = configured ??
|
|
5
|
+
(() => ({
|
|
6
|
+
processCaptureEnabled: platform !== "win32",
|
|
7
|
+
firmwareInspectionEnabled: defaults.optionalFeatures?.firmwareInspectionEnabled ?? false,
|
|
8
|
+
firmwareExtractionEnabled: defaults.optionalFeatures?.firmwareExtractionEnabled ?? false,
|
|
9
|
+
androidAnalysisEnabled: defaults.optionalFeatures?.androidAnalysisEnabled ?? false,
|
|
10
|
+
javascriptRecoveryEnabled: defaults.optionalFeatures?.javascriptRecoveryEnabled ?? false,
|
|
11
|
+
webModuleResolutionEnabled: defaults.optionalFeatures?.webModuleResolutionEnabled ?? false,
|
|
12
|
+
browserObservationEnabled: defaults.optionalFeatures?.browserObservationEnabled ?? false,
|
|
13
|
+
browserScenarioEnabled: defaults.optionalFeatures?.browserScenarioEnabled ?? false,
|
|
14
|
+
electronObservationEnabled: defaults.optionalFeatures?.electronObservationEnabled ?? false,
|
|
15
|
+
electronAutomationEnabled: defaults.optionalFeatures?.electronAutomationEnabled ?? false,
|
|
16
|
+
v8InspectorObservationEnabled: defaults.optionalFeatures?.v8InspectorObservationEnabled ?? false,
|
|
17
|
+
}));
|
|
18
|
+
return () => ({
|
|
19
|
+
...policy(),
|
|
20
|
+
...(defaults.optionalProviderLoadFailures === undefined
|
|
21
|
+
? {}
|
|
22
|
+
: {
|
|
23
|
+
optionalProviderLoadFailures: defaults.optionalProviderLoadFailures,
|
|
24
|
+
}),
|
|
25
|
+
});
|
|
26
|
+
};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { EvidenceIntegrityError } from "../domain/
|
|
1
|
+
import { EvidenceIntegrityError } from "../domain/evidenceErrors.js";
|
|
2
2
|
import { ok } from "../domain/result.js";
|
|
3
3
|
/** Record source evidence in order, stopping at the first session rejection. */
|
|
4
4
|
export const recordSessionEvidenceSources = (recordEvidence, sources) => {
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import { projectAnalysisError } from "../domain/
|
|
1
|
+
import { projectAnalysisError } from "../domain/analysisErrorProjection.js";
|
|
2
|
+
import {} from "../domain/analysisErrorBase.js";
|
|
2
3
|
/**
|
|
3
4
|
* Serialize an application result as MCP text and structured content.
|
|
4
5
|
* Shared error projection preserves actionable local diagnostics while omitting
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
import { createHash } from "node:crypto";
|
|
2
|
+
import { readFileSync } from "node:fs";
|
|
3
|
+
import { createRequire } from "node:module";
|
|
4
|
+
import { fileURLToPath } from "node:url";
|
|
5
|
+
import { z } from "zod";
|
|
6
|
+
import { PACKAGE_METADATA } from "../generatedPackageMetadata.js";
|
|
7
|
+
/** A native resource remains opaque until the addon validates its object tag. */
|
|
8
|
+
export const windowsHandleSchema = z.custom((value) => typeof value === "object" && value !== null && !Array.isArray(value));
|
|
9
|
+
/** Observed identity of an opened local NTFS object. */
|
|
10
|
+
export const windowsFileIdentitySchema = z.strictObject({
|
|
11
|
+
requestedPath: z.string(),
|
|
12
|
+
finalPath: z.string(),
|
|
13
|
+
filesystem: z.literal("NTFS"),
|
|
14
|
+
volumeSerial: z.string().regex(/^[a-f0-9]{16}$/u),
|
|
15
|
+
fileId: z.string().regex(/^[a-f0-9]{32}$/u),
|
|
16
|
+
size: z.number().int().nonnegative().max(Number.MAX_SAFE_INTEGER),
|
|
17
|
+
directory: z.boolean(),
|
|
18
|
+
});
|
|
19
|
+
/** Metadata bound to one packaged Windows x64 Node-API artifact. */
|
|
20
|
+
export const windowsNativeManifestSchema = z.strictObject({
|
|
21
|
+
packageVersion: z.string(),
|
|
22
|
+
platform: z.literal("win32"),
|
|
23
|
+
architecture: z.literal("x64"),
|
|
24
|
+
abiVersion: z.literal(1),
|
|
25
|
+
nodeApiVersion: z.literal(8),
|
|
26
|
+
artifact: z.literal("rea-windows-x64.node"),
|
|
27
|
+
artifactSha256: z.string().regex(/^[a-f0-9]{64}$/u),
|
|
28
|
+
});
|
|
29
|
+
const inspectionSchema = z.strictObject({
|
|
30
|
+
abiVersion: z.literal(1),
|
|
31
|
+
nodeApiVersion: z.literal(8),
|
|
32
|
+
architecture: z.literal("x64"),
|
|
33
|
+
filesystem: windowsFileIdentitySchema,
|
|
34
|
+
privateDacl: z.literal(true),
|
|
35
|
+
atomicJobAssignment: z.literal(true),
|
|
36
|
+
killOnOwnerClose: z.literal(true),
|
|
37
|
+
});
|
|
38
|
+
const bindingSchema = z.strictObject({
|
|
39
|
+
call: z.custom((value) => typeof value === "function"),
|
|
40
|
+
});
|
|
41
|
+
/** Validate compatibility and artifact identity before invoking the native addon. */
|
|
42
|
+
export const loadWindowsNativeAuthority = (host) => {
|
|
43
|
+
if (host.platform !== "win32" || host.architecture !== "x64")
|
|
44
|
+
return {
|
|
45
|
+
available: false,
|
|
46
|
+
reason: "REA Windows native controls require a Windows x64 host.",
|
|
47
|
+
};
|
|
48
|
+
try {
|
|
49
|
+
const manifest = windowsNativeManifestSchema.parse(host.readManifest());
|
|
50
|
+
if (manifest.packageVersion !== host.packageVersion)
|
|
51
|
+
throw new Error("Windows native artifact belongs to another REA version");
|
|
52
|
+
const nodeApiVersion = Number(host.nodeApiVersion);
|
|
53
|
+
if (!Number.isSafeInteger(nodeApiVersion) || nodeApiVersion < 8)
|
|
54
|
+
throw new Error("Windows native artifact requires Node-API 8 or newer");
|
|
55
|
+
const artifact = host.readArtifact();
|
|
56
|
+
if (createHash("sha256").update(artifact).digest("hex") !==
|
|
57
|
+
manifest.artifactSha256)
|
|
58
|
+
throw new Error("Windows native artifact SHA-256 does not match package metadata");
|
|
59
|
+
assertWindowsX64Artifact(artifact);
|
|
60
|
+
const binding = bindingSchema.parse(host.loadArtifact());
|
|
61
|
+
const inspection = inspectionSchema.parse(binding.call("inspect", []));
|
|
62
|
+
return { available: true, authority: { call: binding.call, inspection } };
|
|
63
|
+
}
|
|
64
|
+
catch (cause) {
|
|
65
|
+
return {
|
|
66
|
+
available: false,
|
|
67
|
+
reason: `REA Windows native controls are unavailable: ${cause instanceof Error ? cause.message : String(cause)}`,
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
};
|
|
71
|
+
const assertWindowsX64Artifact = (bytes) => {
|
|
72
|
+
if (bytes.length < 64 || bytes.toString("ascii", 0, 2) !== "MZ")
|
|
73
|
+
throw new Error("Windows native artifact is not a PE image");
|
|
74
|
+
const offset = bytes.readUInt32LE(0x3c);
|
|
75
|
+
if (offset > bytes.length - 26 ||
|
|
76
|
+
bytes.toString("ascii", offset, offset + 4) !== "PE\0\0" ||
|
|
77
|
+
bytes.readUInt16LE(offset + 4) !== 0x8664 ||
|
|
78
|
+
bytes.readUInt16LE(offset + 24) !== 0x20b)
|
|
79
|
+
throw new Error("Windows native artifact is not a Windows x64 PE32+ image");
|
|
80
|
+
};
|
|
81
|
+
let cached;
|
|
82
|
+
/** Load only the package-owned artifact, lazily and once per process. */
|
|
83
|
+
export const systemWindowsNativeAuthority = () => {
|
|
84
|
+
cached ??= loadWindowsNativeAuthority({
|
|
85
|
+
platform: process.platform,
|
|
86
|
+
architecture: process.arch,
|
|
87
|
+
nodeApiVersion: process.versions.napi,
|
|
88
|
+
packageVersion: PACKAGE_METADATA.version,
|
|
89
|
+
readManifest: () => {
|
|
90
|
+
const encoded = readFileSync(new URL("../../native/windows/build/manifest.json", import.meta.url), "utf8");
|
|
91
|
+
const value = JSON.parse(encoded);
|
|
92
|
+
return value;
|
|
93
|
+
},
|
|
94
|
+
readArtifact: () => readFileSync(new URL("../../native/windows/build/rea-windows-x64.node", import.meta.url)),
|
|
95
|
+
loadArtifact: () => {
|
|
96
|
+
const value = createRequire(import.meta.url)(fileURLToPath(new URL("../../native/windows/build/rea-windows-x64.node", import.meta.url)));
|
|
97
|
+
return value;
|
|
98
|
+
},
|
|
99
|
+
});
|
|
100
|
+
return cached;
|
|
101
|
+
};
|
|
102
|
+
/** Require the verified backend when an operation depends on native authority. */
|
|
103
|
+
export const requireWindowsNativeAuthority = () => {
|
|
104
|
+
const loaded = systemWindowsNativeAuthority();
|
|
105
|
+
if (!loaded.available)
|
|
106
|
+
throw new Error(loaded.reason);
|
|
107
|
+
return loaded.authority;
|
|
108
|
+
};
|
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
import { EventEmitter } from "node:events";
|
|
2
|
+
import { PassThrough } from "node:stream";
|
|
3
|
+
import { z } from "zod";
|
|
4
|
+
import { requireWindowsNativeAuthority, windowsHandleSchema, } from "./WindowsNativeLoader.js";
|
|
5
|
+
const launchSchema = z.strictObject({
|
|
6
|
+
pid: z.number().int().positive().max(0xffff_ffff),
|
|
7
|
+
handle: windowsHandleSchema,
|
|
8
|
+
jobAssigned: z.literal(true),
|
|
9
|
+
killOnOwnerClose: z.literal(true),
|
|
10
|
+
});
|
|
11
|
+
const pollSchema = z.strictObject({
|
|
12
|
+
stdout: z.instanceof(Buffer),
|
|
13
|
+
stderr: z.instanceof(Buffer),
|
|
14
|
+
stdoutEnded: z.boolean(),
|
|
15
|
+
stderrEnded: z.boolean(),
|
|
16
|
+
exitCode: z.number().int().nonnegative().max(0xffff_ffff).nullable(),
|
|
17
|
+
activeProcesses: z.number().int().nonnegative(),
|
|
18
|
+
});
|
|
19
|
+
/** Encode one ordinary Windows argv token using the CRT backslash rules. */
|
|
20
|
+
export const quoteWindowsProcessArgument = (value) => {
|
|
21
|
+
if (value.includes("\0"))
|
|
22
|
+
throw new TypeError("Windows process argument contains NUL");
|
|
23
|
+
return `"${value.replace(/(\\*)"/gu, '$1$1\\"').replace(/(\\+)$/u, "$1$1")}"`;
|
|
24
|
+
};
|
|
25
|
+
/** Process events and streams backed by a retained native Job Object. */
|
|
26
|
+
export class WindowsOwnedProcess extends EventEmitter {
|
|
27
|
+
stdout = new PassThrough();
|
|
28
|
+
stderr = new PassThrough();
|
|
29
|
+
signalCode = null;
|
|
30
|
+
exitCode = null;
|
|
31
|
+
pid;
|
|
32
|
+
#handle;
|
|
33
|
+
#authority;
|
|
34
|
+
#settled;
|
|
35
|
+
#settle;
|
|
36
|
+
#closed = false;
|
|
37
|
+
#verifiedSettlement = false;
|
|
38
|
+
#failure;
|
|
39
|
+
#timer;
|
|
40
|
+
#cleanup;
|
|
41
|
+
constructor(command, arguments_, cwd, environment, verbatim) {
|
|
42
|
+
super();
|
|
43
|
+
this.#authority = requireWindowsNativeAuthority();
|
|
44
|
+
const entries = Object.entries(environment)
|
|
45
|
+
.filter((entry) => entry[1] !== undefined)
|
|
46
|
+
.map(([key, value]) => `${key}=${value}`);
|
|
47
|
+
const line = [
|
|
48
|
+
// cmd.exe parses its own command line rather than the CRT argv rules;
|
|
49
|
+
// its executable token must match the native drive-path representation.
|
|
50
|
+
quoteWindowsProcessArgument(command.replaceAll("/", "\\")),
|
|
51
|
+
...arguments_.map((value) => verbatim ? value : quoteWindowsProcessArgument(value)),
|
|
52
|
+
].join(" ");
|
|
53
|
+
const launched = launchSchema.parse(this.#authority.call("process_spawn", [
|
|
54
|
+
command,
|
|
55
|
+
line,
|
|
56
|
+
cwd ?? "",
|
|
57
|
+
entries,
|
|
58
|
+
]));
|
|
59
|
+
this.pid = launched.pid;
|
|
60
|
+
this.#handle = launched.handle;
|
|
61
|
+
this.#settled = new Promise((resolve) => {
|
|
62
|
+
this.#settle = resolve;
|
|
63
|
+
});
|
|
64
|
+
this.#schedule();
|
|
65
|
+
}
|
|
66
|
+
/** Terminate the retained job, never a PID supplied by another caller. */
|
|
67
|
+
kill(signal) {
|
|
68
|
+
if (signal === 0)
|
|
69
|
+
return (!this.#closed &&
|
|
70
|
+
z
|
|
71
|
+
.number()
|
|
72
|
+
.parse(this.#authority.call("process_alive", [this.#handle])) > 0);
|
|
73
|
+
return this.#closed
|
|
74
|
+
? false
|
|
75
|
+
: z
|
|
76
|
+
.boolean()
|
|
77
|
+
.parse(this.#authority.call("process_terminate", [this.#handle]));
|
|
78
|
+
}
|
|
79
|
+
/** Terminate and verify that the entire job has settled before releasing it. */
|
|
80
|
+
cleanup() {
|
|
81
|
+
this.#cleanup ??= this.#stop();
|
|
82
|
+
return this.#cleanup;
|
|
83
|
+
}
|
|
84
|
+
async #stop() {
|
|
85
|
+
if (this.#closed)
|
|
86
|
+
return this.#verifiedSettlement
|
|
87
|
+
? { cleaned: true, signaled: false }
|
|
88
|
+
: {
|
|
89
|
+
cleaned: false,
|
|
90
|
+
reason: this.#failure ?? "Windows Job Object settlement was not verified",
|
|
91
|
+
};
|
|
92
|
+
let timer;
|
|
93
|
+
try {
|
|
94
|
+
const signaled = this.kill();
|
|
95
|
+
const settled = await Promise.race([
|
|
96
|
+
this.#settled.then(() => true),
|
|
97
|
+
new Promise((resolve) => {
|
|
98
|
+
timer = setTimeout(() => resolve(false), 5_000);
|
|
99
|
+
}),
|
|
100
|
+
]);
|
|
101
|
+
return settled && this.#verifiedSettlement
|
|
102
|
+
? { cleaned: true, signaled }
|
|
103
|
+
: {
|
|
104
|
+
cleaned: false,
|
|
105
|
+
reason: this.#failure ??
|
|
106
|
+
"Windows Job Object did not settle within the cleanup deadline",
|
|
107
|
+
};
|
|
108
|
+
}
|
|
109
|
+
catch (cause) {
|
|
110
|
+
return {
|
|
111
|
+
cleaned: false,
|
|
112
|
+
reason: cause instanceof Error ? cause.message : String(cause),
|
|
113
|
+
};
|
|
114
|
+
}
|
|
115
|
+
finally {
|
|
116
|
+
if (timer !== undefined)
|
|
117
|
+
clearTimeout(timer);
|
|
118
|
+
if (!this.#closed)
|
|
119
|
+
this.#release();
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
#schedule() {
|
|
123
|
+
this.#timer = setTimeout(() => this.#poll(), 25);
|
|
124
|
+
}
|
|
125
|
+
#poll() {
|
|
126
|
+
if (this.#closed)
|
|
127
|
+
return;
|
|
128
|
+
try {
|
|
129
|
+
const state = pollSchema.parse(this.#authority.call("process_poll", [this.#handle]));
|
|
130
|
+
if (state.stdout.length > 0)
|
|
131
|
+
this.stdout.write(state.stdout);
|
|
132
|
+
if (state.stderr.length > 0)
|
|
133
|
+
this.stderr.write(state.stderr);
|
|
134
|
+
if (state.exitCode !== null && this.exitCode === null) {
|
|
135
|
+
this.exitCode = state.exitCode;
|
|
136
|
+
this.emit("exit", state.exitCode, null);
|
|
137
|
+
}
|
|
138
|
+
if (state.exitCode !== null &&
|
|
139
|
+
state.stdoutEnded &&
|
|
140
|
+
state.stderrEnded &&
|
|
141
|
+
state.activeProcesses === 0) {
|
|
142
|
+
this.#verifiedSettlement = true;
|
|
143
|
+
this.#release();
|
|
144
|
+
}
|
|
145
|
+
else
|
|
146
|
+
this.#schedule();
|
|
147
|
+
}
|
|
148
|
+
catch (cause) {
|
|
149
|
+
const failure = cause instanceof Error ? cause : new Error(String(cause));
|
|
150
|
+
this.#failure = failure.message;
|
|
151
|
+
// Native lifecycle failures belong to the error/cleanup channels, never
|
|
152
|
+
// the captured stderr observation produced by the child itself.
|
|
153
|
+
if (this.listenerCount("error") > 0)
|
|
154
|
+
this.emit("error", failure);
|
|
155
|
+
this.#release();
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
#release() {
|
|
159
|
+
if (this.#closed)
|
|
160
|
+
return;
|
|
161
|
+
if (this.#timer !== undefined)
|
|
162
|
+
clearTimeout(this.#timer);
|
|
163
|
+
this.#authority.call("process_close", [this.#handle]);
|
|
164
|
+
this.#closed = true;
|
|
165
|
+
this.stdout.end();
|
|
166
|
+
this.stderr.end();
|
|
167
|
+
this.#settle?.();
|
|
168
|
+
this.emit("close", this.exitCode, null);
|
|
169
|
+
}
|
|
170
|
+
}
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
import { win32 } from "node:path";
|
|
2
|
+
import { z } from "zod";
|
|
3
|
+
import { requireWindowsNativeAuthority, windowsFileIdentitySchema, windowsHandleSchema, } from "./WindowsNativeLoader.js";
|
|
4
|
+
const runtimeSchema = windowsFileIdentitySchema.extend({
|
|
5
|
+
path: z.string(),
|
|
6
|
+
handle: windowsHandleSchema,
|
|
7
|
+
privateDacl: z.literal(true),
|
|
8
|
+
});
|
|
9
|
+
const snapshotSchema = z.strictObject({
|
|
10
|
+
sha256: z.string().regex(/^[a-f0-9]{64}$/u),
|
|
11
|
+
source: windowsFileIdentitySchema,
|
|
12
|
+
snapshot: windowsFileIdentitySchema,
|
|
13
|
+
});
|
|
14
|
+
const fileSchema = windowsFileIdentitySchema.extend({
|
|
15
|
+
handle: windowsHandleSchema,
|
|
16
|
+
});
|
|
17
|
+
const runtimes = new Map();
|
|
18
|
+
/** Retain private DACL and path handles until native recursive cleanup settles. */
|
|
19
|
+
export class WindowsPrivateRuntime {
|
|
20
|
+
observation;
|
|
21
|
+
authority;
|
|
22
|
+
// One native snapshot can own cancellation for this runtime at a time. A
|
|
23
|
+
// second request throws ERROR_BUSY before #pending or its abort listener is
|
|
24
|
+
// replaced, so aborting a rejected request cannot cancel the accepted copy.
|
|
25
|
+
#pending;
|
|
26
|
+
#closed = false;
|
|
27
|
+
#closePromise;
|
|
28
|
+
constructor(observation, authority) {
|
|
29
|
+
this.observation = observation;
|
|
30
|
+
this.authority = authority;
|
|
31
|
+
}
|
|
32
|
+
/** Create a new directory with its private DACL installed at creation. */
|
|
33
|
+
static create(parent, prefix) {
|
|
34
|
+
const authority = requireWindowsNativeAuthority();
|
|
35
|
+
const observation = runtimeSchema.parse(authority.call("runtime_create", [parent, prefix]));
|
|
36
|
+
const runtime = new WindowsPrivateRuntime(observation, authority);
|
|
37
|
+
runtimes.set(observation.path.toLowerCase(), runtime);
|
|
38
|
+
return runtime;
|
|
39
|
+
}
|
|
40
|
+
/** Open a private child directory through retained, verified parent handles. */
|
|
41
|
+
mkdir(relativePath) {
|
|
42
|
+
this.authority.call("runtime_mkdir", [
|
|
43
|
+
this.observation.handle,
|
|
44
|
+
relativePath,
|
|
45
|
+
]);
|
|
46
|
+
}
|
|
47
|
+
/** Write a new private file once and retain its immutable handle. */
|
|
48
|
+
writeFile(relativePath, content) {
|
|
49
|
+
this.authority.call("runtime_write", [
|
|
50
|
+
this.observation.handle,
|
|
51
|
+
relativePath,
|
|
52
|
+
Buffer.from(content),
|
|
53
|
+
]);
|
|
54
|
+
}
|
|
55
|
+
/** Copy admitted source bytes and digest the bytes actually written. */
|
|
56
|
+
async snapshot(sourcePath, relativePath, signal) {
|
|
57
|
+
// Admission is synchronous; record ownership only after native acceptance.
|
|
58
|
+
const pending = Promise.resolve(this.authority.call("runtime_snapshot", [
|
|
59
|
+
this.observation.handle,
|
|
60
|
+
sourcePath,
|
|
61
|
+
relativePath,
|
|
62
|
+
]));
|
|
63
|
+
this.#pending = pending;
|
|
64
|
+
const cancel = () => {
|
|
65
|
+
this.authority.call("runtime_snapshot_cancel", [this.observation.handle]);
|
|
66
|
+
};
|
|
67
|
+
signal?.addEventListener("abort", cancel, { once: true });
|
|
68
|
+
if (signal?.aborted === true)
|
|
69
|
+
cancel();
|
|
70
|
+
try {
|
|
71
|
+
return snapshotSchema.parse(await pending);
|
|
72
|
+
}
|
|
73
|
+
finally {
|
|
74
|
+
signal?.removeEventListener("abort", cancel);
|
|
75
|
+
if (this.#pending === pending)
|
|
76
|
+
this.#pending = undefined;
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
/** Read a private endpoint from an opened file, without re-opening its path. */
|
|
80
|
+
readFile(relativePath) {
|
|
81
|
+
const file = fileSchema.parse(this.authority.call("runtime_open", [
|
|
82
|
+
this.observation.handle,
|
|
83
|
+
relativePath,
|
|
84
|
+
]));
|
|
85
|
+
try {
|
|
86
|
+
const chunks = [];
|
|
87
|
+
for (let offset = 0; offset < file.size;) {
|
|
88
|
+
const value = z
|
|
89
|
+
.instanceof(Buffer)
|
|
90
|
+
.parse(this.authority.call("read", [
|
|
91
|
+
file.handle,
|
|
92
|
+
offset,
|
|
93
|
+
Math.min(65_536, file.size - offset),
|
|
94
|
+
]));
|
|
95
|
+
if (value.length === 0)
|
|
96
|
+
throw new Error("Private runtime file ended before its observed size");
|
|
97
|
+
offset += value.length;
|
|
98
|
+
chunks.push(value);
|
|
99
|
+
}
|
|
100
|
+
return Buffer.concat(chunks).toString("utf8");
|
|
101
|
+
}
|
|
102
|
+
finally {
|
|
103
|
+
this.authority.call("close", [file.handle]);
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
/** Remove owned objects by handle, unlinking reparse entries without traversal. */
|
|
107
|
+
close() {
|
|
108
|
+
this.#closePromise ??= this.#remove();
|
|
109
|
+
return this.#closePromise;
|
|
110
|
+
}
|
|
111
|
+
async #remove() {
|
|
112
|
+
if (this.#closed)
|
|
113
|
+
return;
|
|
114
|
+
if (this.#pending !== undefined)
|
|
115
|
+
this.authority.call("runtime_snapshot_cancel", [this.observation.handle]);
|
|
116
|
+
await this.#pending?.catch(() => undefined);
|
|
117
|
+
try {
|
|
118
|
+
this.authority.call("runtime_close", [this.observation.handle]);
|
|
119
|
+
}
|
|
120
|
+
finally {
|
|
121
|
+
this.#closed = true;
|
|
122
|
+
runtimes.delete(this.observation.path.toLowerCase());
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
/** Select an already-owned runtime; an arbitrary pathname cannot grant authority. */
|
|
127
|
+
export const windowsPrivateRuntime = (rootPath) => {
|
|
128
|
+
const runtime = runtimes.get(rootPath.toLowerCase());
|
|
129
|
+
if (runtime === undefined)
|
|
130
|
+
throw new Error(`No native private runtime owns ${rootPath}`);
|
|
131
|
+
return runtime;
|
|
132
|
+
};
|
|
133
|
+
/** Read a runtime endpoint using the lease that owns its parent directory. */
|
|
134
|
+
export const readWindowsPrivateRuntimeFile = (path) => {
|
|
135
|
+
const parent = win32.dirname(path);
|
|
136
|
+
return windowsPrivateRuntime(parent).readFile(win32.basename(path));
|
|
137
|
+
};
|
package/install.sh
CHANGED
|
@@ -3,6 +3,10 @@ set -euo pipefail
|
|
|
3
3
|
|
|
4
4
|
PACKAGE="rea-agents"
|
|
5
5
|
REPOSITORY="morluto/rea"
|
|
6
|
+
numeric_identifier='(0|[1-9][0-9]*)'
|
|
7
|
+
prerelease_identifier="(${numeric_identifier}|[0-9A-Za-z-]*[A-Za-z-][0-9A-Za-z-]*)"
|
|
8
|
+
build_identifier='[0-9A-Za-z-]+'
|
|
9
|
+
version_pattern="${numeric_identifier}\\.${numeric_identifier}\\.${numeric_identifier}(-${prerelease_identifier}(\\.${prerelease_identifier})*)?(\\+${build_identifier}(\\.${build_identifier})*)?"
|
|
6
10
|
version="${REA_VERSION:-}"
|
|
7
11
|
dry_run=false
|
|
8
12
|
start_setup=true
|
|
@@ -55,28 +59,32 @@ fi
|
|
|
55
59
|
platform="$(uname -s)"
|
|
56
60
|
[[ "$platform" == "Darwin" || "$platform" == "Linux" ]] || fail "REA supports macOS and selected 64-bit Linux distributions."
|
|
57
61
|
command -v curl >/dev/null 2>&1 || fail "curl is required. Install curl, then rerun this installer."
|
|
58
|
-
command -v node >/dev/null 2>&1 || fail "Node.js 22.19
|
|
62
|
+
command -v node >/dev/null 2>&1 || fail "Node.js 22.x (>=22.19), 24.x (>=24.11), or 26+ is required; install it from https://nodejs.org and retry."
|
|
59
63
|
command -v npm >/dev/null 2>&1 || fail "npm is required; install it with Node.js and retry."
|
|
60
64
|
|
|
61
65
|
node_version="$(node -p 'process.versions.node' 2>/dev/null || true)"
|
|
62
66
|
IFS=. read -r node_major node_minor _node_patch <<<"$node_version"
|
|
63
67
|
[[ "$node_major" =~ ^[0-9]+$ && "$node_minor" =~ ^[0-9]+$ ]] || fail "the active Node.js version could not be read. Check that node works and is on PATH, then retry."
|
|
64
|
-
if !
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
if ((node_major == 24 && node_minor < 11)); then
|
|
68
|
-
fail "Node.js $node_version is unsupported; use Node.js 24.11 or newer."
|
|
68
|
+
if ! [[ "$_node_patch" =~ ^[0-9]+(\+[0-9A-Za-z.-]+)?$ ]] ||
|
|
69
|
+
! ((node_major == 22 && node_minor >= 19 || node_major == 24 && node_minor >= 11 || node_major >= 26)); then
|
|
70
|
+
fail "Node.js $node_version is unsupported; use Node.js 22.x (>=22.19), 24.x (>=24.11), or 26+."
|
|
69
71
|
fi
|
|
70
72
|
|
|
71
73
|
if [[ -n "$version" ]]; then
|
|
72
|
-
[[ "$version" =~
|
|
74
|
+
[[ "$version" =~ ^${version_pattern}$ ]] || fail "version must be an exact semantic version."
|
|
73
75
|
else
|
|
74
76
|
release_json="$(curl -fsSL --proto '=https' --tlsv1.2 --retry 3 -H 'Accept: application/vnd.github+json' "https://api.github.com/repos/$REPOSITORY/releases/latest")" || fail "the latest REA release could not be resolved. Check network access or pass --version VERSION, then retry."
|
|
75
77
|
tag="$(printf '%s' "$release_json" | node -e 'let s="";process.stdin.on("data",c=>s+=c).on("end",()=>{const v=JSON.parse(s).tag_name;if(typeof v!=="string")process.exit(1);process.stdout.write(v)})' 2>/dev/null)" || fail "the release response was invalid. Retry later or pass --version VERSION."
|
|
76
|
-
[[ "$tag" =~ ^rea-agents-(
|
|
78
|
+
[[ "$tag" =~ ^rea-agents-(${version_pattern})$ ]] || fail "the latest release tag was invalid. Retry later or pass --version VERSION."
|
|
77
79
|
version="${BASH_REMATCH[1]}"
|
|
78
80
|
fi
|
|
79
81
|
|
|
82
|
+
# npm's exact-version resolver cleans build metadata from the requested version,
|
|
83
|
+
# so it may install the base release and make the post-install identity check fail.
|
|
84
|
+
if [[ "$version" =~ \+ ]]; then
|
|
85
|
+
fail "npm cannot install an exact version with build metadata. Pass a version without build metadata, then retry."
|
|
86
|
+
fi
|
|
87
|
+
|
|
80
88
|
prefix_args=()
|
|
81
89
|
if [[ "$platform" == "Linux" ]]; then
|
|
82
90
|
prefix_args=(--prefix "$HOME/.local")
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
# Windows native controls
|
|
2
|
+
|
|
3
|
+
REA ships one Windows x64 Node-API 8 addon. Users do not compile it or install
|
|
4
|
+
another runtime. Ghidra and a full JDK remain bring-your-own prerequisites.
|
|
5
|
+
The addon uses Windows 10+ APIs and admits fixed local NTFS volumes only.
|
|
6
|
+
|
|
7
|
+
The package owns the artifact path. The loader checks the package version,
|
|
8
|
+
ABI, Node-API compatibility, PE architecture, and SHA-256 before loading it.
|
|
9
|
+
There is no environment override for loading an arbitrary native module.
|
|
10
|
+
|
|
11
|
+
## Build
|
|
12
|
+
|
|
13
|
+
The artifact lane requires Linux, MinGW-w64 `x86_64-w64-mingw32-g++`,
|
|
14
|
+
`x86_64-w64-mingw32-dlltool`, and `tar`. It never installs these commands.
|
|
15
|
+
Node-API headers are reused from the build cache or downloaded from the
|
|
16
|
+
pinned official Node release with its published SHA-256 checked.
|
|
17
|
+
|
|
18
|
+
```sh
|
|
19
|
+
npm run build:windows-native
|
|
20
|
+
npm run verify:windows-native:artifact
|
|
21
|
+
npm pack
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
`build/` is ignored by Git. The npm file inventory includes only the addon and
|
|
25
|
+
its manifest. Release CI builds both, and `prepublishOnly` rejects a missing,
|
|
26
|
+
stale, mismatched, or wrong-architecture artifact. A development tarball built
|
|
27
|
+
without this lane reports Windows native controls as unavailable.
|
|
28
|
+
|
|
29
|
+
## Boundaries
|
|
30
|
+
|
|
31
|
+
- Opaque Node objects carry a native type tag, resource kind, and closed state.
|
|
32
|
+
A pathname, serialized object, or forged handle cannot grant authority.
|
|
33
|
+
- Input admission opens every component with `OPEN_REPARSE_POINT`, verifies
|
|
34
|
+
the actual NTFS object, and retains handles that deny replacement and source
|
|
35
|
+
writing. An admitted child keeps each ancestor nonempty; ancestor handles
|
|
36
|
+
permit unrelated writes while NTFS rejects in-place reparse conversion. Volume serial, 128-bit file ID, final handle path,
|
|
37
|
+
requested path, size, and digest observations are preserved separately.
|
|
38
|
+
- New runtime roots and private child objects are created relative to admitted
|
|
39
|
+
parent handles with `NtCreateFile`. A protected DACL and current-user owner
|
|
40
|
+
are installed at creation. Readback permits exactly the current user and SYSTEM. Child
|
|
41
|
+
files inherit this boundary; private files are also checked by handle.
|
|
42
|
+
- Snapshots stream through a 64 KiB buffer on a Node async worker. Cancellation
|
|
43
|
+
is checked between reads, cleanup waits for settlement, and the digest
|
|
44
|
+
commits to the bytes written. Descriptor and snapshot handles remain held
|
|
45
|
+
until runtime cleanup.
|
|
46
|
+
Snapshot ownership is single-flight per runtime: an overlapping request fails
|
|
47
|
+
with `ERROR_BUSY` before acquiring cancellation ownership. The TypeScript owner
|
|
48
|
+
records only the accepted promise and abort listener; aborting a rejected copy
|
|
49
|
+
must not cancel the active copy.
|
|
50
|
+
- `PROC_THREAD_ATTRIBUTE_JOB_LIST` assigns a suspended child atomically to an
|
|
51
|
+
unnamed, non-inherited Job Object. Membership and kill-on-close policy are
|
|
52
|
+
checked before resume. Breakaway is disabled, and cleanup waits for all
|
|
53
|
+
job members and captured output, including detached descendants.
|
|
54
|
+
- Only the suspended child's default file owner is normalized. Caller token
|
|
55
|
+
privileges and ownership remain unchanged. Caller CPU affinity and process
|
|
56
|
+
priority are preserved in the child. Environment names are sorted and
|
|
57
|
+
deduplicated using Windows ordinal comparison, preserving their native Unicode
|
|
58
|
+
semantics and caller-selected values.
|
|
59
|
+
- Cleanup walks locked directory objects, removes files by handle, and unlinks
|
|
60
|
+
reparse entries without traversing their targets. Normal close, cancellation,
|
|
61
|
+
startup failure, and timeout release provider resources. Abrupt owner death
|
|
62
|
+
kills the owned job; it can leave private runtime files for later operator
|
|
63
|
+
cleanup and does not claim transactional deletion after a crash.
|
|
64
|
+
|
|
65
|
+
Windows failures retain their constraint, requested coordinate, Win32 code,
|
|
66
|
+
and system message. Unsupported filesystems and reparse paths are distinct
|
|
67
|
+
from OS access denial and missing packaged controls.
|
|
68
|
+
|
|
69
|
+
Ordinary drive-absolute paths accept backslashes, forward slashes, or mixed
|
|
70
|
+
separators. File identity retains the original requested spelling. Separator
|
|
71
|
+
translation does not resolve dot components, repeated separators, or extend
|
|
72
|
+
the supported device/UNC namespaces; existing admission checks still apply.
|
|
73
|
+
|
|
74
|
+
The bearer-token descriptor remains under its immutable private lease until
|
|
75
|
+
`runtime_close` on Windows; POSIX removes the descriptor after the bridge reads
|
|
76
|
+
it. Job ownership guarantees process termination on owner death, not deletion
|
|
77
|
+
of private files after a crash. SUBST drive aliases and changing DOS-device
|
|
78
|
+
namespaces are outside the verified P0 scope and are not detected as a separate
|
|
79
|
+
alias policy. Mounted-folder paths that report a reparse tag are rejected by
|
|
80
|
+
component admission; broader namespace variants remain unverified. Preserve
|
|
81
|
+
requested and final handle coordinates rather than treating them as one identity.
|
|
82
|
+
|
|
83
|
+
## Real verification
|
|
84
|
+
|
|
85
|
+
```powershell
|
|
86
|
+
npm run verify:windows-native
|
|
87
|
+
npm run verify:ghidra:windows
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
The native lane checks DACL readback independently, source write/replacement
|
|
91
|
+
rejection, unrelated sibling renames, reparse rejection, immutable snapshots,
|
|
92
|
+
asynchronous cancellation, cleanup containment,
|
|
93
|
+
descendant termination, unrelated-process preservation, normal exit, owner
|
|
94
|
+
close, and forced owner exit. An optional independently built
|
|
95
|
+
`tests/fixtures/windows/processBoundary.cc` executable adds breakaway and
|
|
96
|
+
caller/child token observations and an in-place ancestor reparse attempt:
|
|
97
|
+
|
|
98
|
+
```powershell
|
|
99
|
+
node scripts/verify-windows-native.mjs . C:\fixtures\process-boundary.exe
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
`nonAdminRunner.cc` is a test-only launcher for an elevated development shell.
|
|
103
|
+
It duplicates an existing non-elevated Explorer token belonging to the same
|
|
104
|
+
user, creates private temporary window-station objects, and launches the test
|
|
105
|
+
inside a kill-on-close fixture job. It does not create accounts, modify host
|
|
106
|
+
policy, or change the caller's token. A real-provider claim must additionally
|
|
107
|
+
verify the packaged CLI and MCP on that ordinary-user token.
|
|
Binary file
|