rea-agents 3.2.0 → 4.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 +183 -332
- package/bridge/ghidra/ReaGhidraBridge.java +561 -74
- package/bridge/hopper_bridge.py +70 -27
- package/bridge/native/ReaNativeUI.swift +157 -0
- package/dist/application/AnalysisContextQueries.js +19 -5
- package/dist/application/AnalysisSnapshotCache.js +30 -11
- package/dist/application/AppleAssetCatalogAnalysis.js +171 -0
- package/dist/application/ArtifactExtractionDestination.js +0 -12
- package/dist/application/ArtifactGraphConstruction.js +44 -11
- package/dist/application/ArtifactInventory/classify.js +7 -15
- package/dist/application/ArtifactInventory/hash.js +4 -2
- package/dist/application/ArtifactInventory/policy.js +2 -17
- package/dist/application/ArtifactInventory/reader.js +3 -3
- package/dist/application/ArtifactInventory/scanCanonical.js +2 -2
- package/dist/application/ArtifactInventory/scanReader.js +12 -4
- package/dist/application/ArtifactInventory/types.js +0 -3
- package/dist/application/BinarySession.js +28 -43
- package/dist/application/BinarySessionExecution.js +37 -1
- package/dist/application/BinaryTargetResolver.js +50 -4
- package/dist/application/BrowserEvidence.js +36 -7
- package/dist/application/BrowserObservationService.js +17 -44
- package/dist/application/BrowserScenarioCaptureService.js +2 -35
- package/dist/application/BrowserScenarioEvidence.js +13 -9
- package/dist/application/CapabilityClientRequirements.js +2 -11
- package/dist/application/CapabilityInventory.js +21 -35
- package/dist/application/ClientConfigurationDocument.js +84 -7
- package/dist/application/ClientRegistrationIdentity.js +32 -0
- package/dist/application/ClientRegistrationStatus.js +59 -6
- package/dist/application/DirectAnalysis.js +37 -58
- package/dist/application/DirectAnalysisStatus.js +4 -4
- package/dist/application/Doctor.js +89 -80
- package/dist/application/DoctorDiagnostics.js +2 -26
- package/dist/application/DoctorScope.js +8 -14
- package/dist/application/ElectronActiveEvidence.js +10 -27
- package/dist/application/ElectronActiveObservationService.js +9 -36
- package/dist/application/ElectronBoundaryAnalysis.js +2 -0
- package/dist/application/ElectronBoundaryGraphNative.js +1 -1
- package/dist/application/ElectronEvidence.js +8 -3
- package/dist/application/ElectronObservationService.js +9 -25
- package/dist/application/EnhancedLiteralTracing.js +4 -8
- package/dist/application/EnhancedTools.js +15 -35
- package/dist/application/FilesystemSnapshot.js +7 -8
- package/dist/application/JavaScriptApplicationEvidenceGraph.js +2 -1
- package/dist/application/JavaScriptApplicationWorkflowService.js +31 -7
- package/dist/application/JavaScriptArtifactAnalysis.js +6 -4
- package/dist/application/JavaScriptArtifactFiles.js +5 -0
- package/dist/application/JavaScriptArtifactPathResolution.js +179 -47
- package/dist/application/JavaScriptRuntimeObservationEvidence.js +6 -3
- package/dist/application/JavaScriptRuntimeObservationService.js +9 -25
- package/dist/application/JavaScriptRuntimeReconciliationService.js +45 -4
- package/dist/application/JavaScriptSemanticGraphAsyncProjection.js +11 -0
- package/dist/application/JavaScriptSemanticGraphChildProcessProjection.js +11 -0
- package/dist/application/JavaScriptSemanticGraphDataProjection.js +11 -0
- package/dist/application/JavaScriptSemanticGraphFlowProjection.js +14 -5
- package/dist/application/JsonFiles.js +1 -1
- package/dist/application/LazyAnalysisProvider.js +27 -6
- package/dist/application/ManagedMemberComparisonService.js +19 -6
- package/dist/application/NativeApiInspection.js +2 -0
- package/dist/application/NativeCallRoutes.js +72 -0
- package/dist/application/NativeDispatchMetadataInspection.js +33 -0
- package/dist/application/NativeUiActionTrace.js +73 -49
- package/dist/application/NativeValueTrace.js +320 -0
- package/dist/application/ProcessCaptureCapability.js +32 -5
- package/dist/application/ProcessCaptureEnvironment.js +9 -26
- package/dist/application/ProcessCaptureError.js +1 -5
- package/dist/application/ProcessCaptureJournal.js +3 -40
- package/dist/application/ProcessCaptureLifecycle.js +102 -111
- package/dist/application/ProcessCli.js +18 -25
- package/dist/application/ProcessEvidence.js +5 -7
- package/dist/application/ProcessFilesystemEffects.js +36 -0
- package/dist/application/ProcessHarness.js +41 -120
- package/dist/application/ProcessNormalization.js +2 -17
- package/dist/application/ProcessScenarioRuntimeValidation.js +76 -0
- package/dist/application/ReferenceSourceImport.js +3 -4
- package/dist/application/Setup.js +236 -84
- package/dist/application/SetupClientConfiguration.js +14 -9
- package/dist/application/SetupPlan.js +138 -86
- package/dist/application/SetupSkill.js +0 -1
- package/dist/application/SupportedClients.js +102 -21
- package/dist/application/Uninstall.js +31 -20
- package/dist/application/Update.js +93 -0
- package/dist/application/UpdateMaintenance.js +108 -0
- package/dist/application/UpdateRuntime.js +126 -0
- package/dist/application/runtime.js +13 -2
- package/dist/artifacts/ArtifactPaths.js +6 -8
- package/dist/artifacts/ArtifactProvider.js +94 -41
- package/dist/artifacts/AsarArtifactReader.js +19 -4
- package/dist/artifacts/KeyedArchiveReader.js +110 -0
- package/dist/artifacts/MachOSliceArtifactReader.js +53 -5
- package/dist/artifacts/ZipArtifactReader.js +18 -1
- package/dist/browser/BrowserScenarioSecrets.js +28 -1
- package/dist/browser/CdpBrowserProvider.js +36 -15
- package/dist/browser/CdpCaptureDocuments.js +22 -8
- package/dist/browser/CdpCaptureEventHandlers.js +14 -5
- package/dist/browser/CdpCaptureEventHelpers.js +13 -0
- package/dist/browser/CdpCaptureEvents.js +10 -1
- package/dist/browser/CdpElectronInspection.js +5 -10
- package/dist/browser/CdpElectronProvider.js +1 -5
- package/dist/browser/CdpElectronScripts.js +1 -1
- package/dist/browser/CdpEndpoint.js +3 -2
- package/dist/browser/CdpObservationSession.js +14 -10
- package/dist/browser/CdpPageCapture.js +1 -1
- package/dist/browser/CdpPageCaptureScripts.js +1 -1
- package/dist/browser/CdpSafeMetadata.js +5 -4
- package/dist/browser/CdpScreenshot.js +16 -5
- package/dist/browser/CdpTargetSession.js +25 -4
- package/dist/browser/CdpWebMcpDiscovery.js +93 -20
- package/dist/browser/JavaScriptRuntimeScope.js +28 -2
- package/dist/browser/PlaywrightBrowserScenarioProvider.js +9 -8
- package/dist/browser/PlaywrightElectronActiveActions.js +3 -10
- package/dist/browser/PlaywrightElectronActiveProvider.js +5 -5
- package/dist/browser/PlaywrightScenarioActions.js +1 -1
- package/dist/browser/PlaywrightScenarioArtifacts.js +13 -25
- package/dist/browser/PlaywrightScenarioBrowser.js +28 -25
- package/dist/browser/PlaywrightScenarioEvents.js +82 -93
- package/dist/browser/PlaywrightScenarioSession.js +27 -123
- package/dist/browser/PngVisualDiff.js +22 -3
- package/dist/browser/V8InspectorCaptureProjection.js +7 -1
- package/dist/browser/V8InspectorProvider.js +60 -7
- package/dist/browser/WebSourceMapFetcher.js +99 -53
- package/dist/cli/artifactCommands.js +56 -12
- package/dist/cli/coreAnalysisCommands.js +110 -0
- package/dist/cli/managedCommands.js +1 -31
- package/dist/cli/setupCommands.js +16 -14
- package/dist/cli/utilityCommands.js +61 -4
- package/dist/cli.js +5 -7
- package/dist/cliApplicationCommands.js +0 -83
- package/dist/cliBrowserAdvancedCommands.js +7 -11
- package/dist/cliBrowserCommands.js +15 -23
- package/dist/cliBrowserContext.js +3 -24
- package/dist/cliBrowserScenarioCommands.js +2 -10
- package/dist/cliCommandNames.js +82 -7
- package/dist/cliElectronCommands.js +10 -36
- package/dist/cliJavaScriptRuntimeCommands.js +6 -30
- package/dist/cliJsonInput.js +4 -2
- package/dist/cliLogging.js +16 -7
- package/dist/cliObservationOptions.js +1 -1
- package/dist/cliOutput.js +2 -4
- package/dist/cliProcessCommands.js +6 -33
- package/dist/cliSetup.js +90 -160
- package/dist/config/environment.js +2 -78
- package/dist/config/parseConfig.js +18 -109
- package/dist/config/parsers.js +0 -23
- package/dist/contracts/applicationToolContracts.js +1 -118
- package/dist/contracts/artifactToolContracts.js +11 -19
- package/dist/contracts/browserScenarioToolContracts.js +1 -5
- package/dist/contracts/browserToolContracts.js +9 -16
- package/dist/contracts/electronToolContracts.js +5 -6
- package/dist/contracts/enhancedInputs.js +3 -2
- package/dist/contracts/errorSchemas.js +16 -40
- package/dist/contracts/functionWorkflowToolContracts.js +2 -2
- package/dist/contracts/javascriptApplicationWorkflowExamples.js +2 -2
- package/dist/contracts/javascriptRuntimeObservationToolContracts.js +4 -4
- package/dist/contracts/javascriptRuntimeReconciliationExample.js +1 -1
- package/dist/contracts/managedToolContracts.js +7 -4
- package/dist/contracts/managedWorkflowExamples.js +0 -22
- package/dist/contracts/managedWorkflowToolContracts.js +16 -31
- package/dist/contracts/nativeToolContracts.js +9 -0
- package/dist/contracts/promptContracts.js +6 -6
- package/dist/contracts/sessionToolSchemas.js +3 -3
- package/dist/contracts/toolContractExamples.js +4 -3
- package/dist/contracts/toolContracts.js +18 -7
- package/dist/contracts/toolEffects.js +34 -21
- package/dist/contracts/toolOutputSchemaGroups.js +18 -5
- package/dist/contracts/toolOutputSchemaPrimitives.js +9 -6
- package/dist/contracts/toolSchemaMetadata.js +5 -8
- package/dist/doctorRuntime.js +0 -41
- package/dist/domain/analysisErrorPresentation.js +4 -28
- package/dist/domain/analysisErrorProjection.js +33 -50
- package/dist/domain/analysisProfile.js +1 -1
- package/dist/domain/analysisSnapshot.js +77 -3
- package/dist/domain/androidApplication.js +5 -4
- package/dist/domain/appleApplication.js +5 -4
- package/dist/domain/appleAssetCatalog.js +127 -0
- package/dist/domain/artifactComparison.js +7 -11
- package/dist/domain/artifactGraph.js +8 -6
- package/dist/domain/artifactInspection.js +13 -12
- package/dist/domain/binaryTarget.js +23 -9
- package/dist/domain/browserObservation.js +43 -24
- package/dist/domain/browserObservationSchemas.js +2 -1
- package/dist/domain/browserScenario.js +7 -107
- package/dist/domain/browserScenarioCapture.js +0 -1
- package/dist/domain/browserScenarioCaptureValues.js +5 -4
- package/dist/domain/browserScenarioDiff.js +1 -3
- package/dist/domain/browserScenarioValues.js +16 -107
- package/dist/domain/bundleComparison.js +18 -17
- package/dist/domain/callPathSchemas.js +17 -7
- package/dist/domain/changedBehavior.js +2 -3
- package/dist/domain/comparisonSemantics.js +19 -0
- package/dist/domain/completionLedgerGeneration.js +3 -2
- package/dist/domain/conformancePackage.js +2 -1
- package/dist/domain/conformanceTrustGate.js +3 -5
- package/dist/domain/customProtocolCapture.js +2 -2
- package/dist/domain/digests.js +30 -0
- package/dist/domain/dosMz.js +83 -0
- package/dist/domain/electronActiveObservation.js +7 -5
- package/dist/domain/electronObservation.js +3 -2
- package/dist/domain/electronStaticAnalysisNative.js +15 -6
- package/dist/domain/emptyArraySchema.js +3 -0
- package/dist/domain/errors.js +10 -28
- package/dist/domain/evidence.js +5 -3
- package/dist/domain/evidenceCompletionLedger.js +3 -2
- package/dist/domain/functionComparisonNormalization.js +24 -18
- package/dist/domain/functionComparisonResults.js +3 -7
- package/dist/domain/functionComparisonSchemas.js +3 -2
- package/dist/domain/hopperValues.js +108 -8
- package/dist/domain/javascriptApplicationAnalysis.js +4 -7
- package/dist/domain/javascriptApplicationEvidenceSchemas.js +4 -3
- package/dist/domain/javascriptApplicationGraphSchemas.js +8 -7
- package/dist/domain/javascriptApplicationVersionComparisonSchemas.js +9 -7
- package/dist/domain/javascriptApplicationVersionItems.js +12 -18
- package/dist/domain/javascriptAstValues.js +4 -0
- package/dist/domain/javascriptExportShapeComparison.js +1 -6
- package/dist/domain/javascriptExportShapeComparisonSchemas.js +6 -10
- package/dist/domain/javascriptExportShapeVariants.js +15 -2
- package/dist/domain/javascriptFeatureTraceSchemas.js +8 -7
- package/dist/domain/javascriptRuntimeObservation.js +14 -2
- package/dist/domain/javascriptRuntimeReconciliationMatching.js +8 -0
- package/dist/domain/javascriptRuntimeReconciliationParsing.js +4 -2
- package/dist/domain/javascriptRuntimeReconciliationResult.js +6 -4
- package/dist/domain/javascriptRuntimeReconciliationRuntime.js +15 -4
- package/dist/domain/javascriptRuntimeReconciliationSchemas.js +19 -18
- package/dist/domain/javascriptRuntimeStaticCandidates.js +18 -6
- package/dist/domain/javascriptSemanticAnalysis.js +57 -19
- package/dist/domain/javascriptSemanticAsyncEffects.js +39 -40
- package/dist/domain/javascriptSemanticCalls.js +46 -27
- package/dist/domain/javascriptSemanticChildProcesses.js +43 -50
- package/dist/domain/javascriptSemanticDataEffectHelpers.js +91 -18
- package/dist/domain/javascriptSemanticDataEffects.js +22 -10
- package/dist/domain/javascriptSemanticGraphSchemas.js +8 -6
- package/dist/domain/javascriptSemanticObjects.js +13 -3
- package/dist/domain/javascriptSemanticProjection.js +144 -38
- package/dist/domain/javascriptSemanticPromises.js +14 -27
- package/dist/domain/javascriptSemanticQuerySchemas.js +6 -9
- package/dist/domain/javascriptSemanticResources.js +2 -5
- package/dist/domain/javascriptSemanticState.js +4 -0
- package/dist/domain/javascriptSemanticTraceSchemas.js +2 -1
- package/dist/domain/javascriptSemanticTraversal.js +13 -5
- package/dist/domain/javascriptSemanticValues.js +10 -9
- package/dist/domain/javascriptSourceParser.js +5 -1
- package/dist/domain/javascriptStaticAnalysisCalls.js +8 -5
- package/dist/domain/javascriptStaticAnalysisHelpers.js +16 -7
- package/dist/domain/keyedArchive.js +181 -0
- package/dist/domain/managedApplicationGraph.js +4 -3
- package/dist/domain/managedArtifact.js +2 -1
- package/dist/domain/managedMemberComparison.js +18 -13
- package/dist/domain/managedMemberComparisonCoverage.js +2 -1
- package/dist/domain/managedMemberComparisonItems.js +27 -7
- package/dist/domain/managedMemberComparisonMatch.js +22 -6
- package/dist/domain/managedNativeVerificationMatch.js +2 -2
- package/dist/domain/managedNativeVerificationSchemas.js +7 -5
- package/dist/domain/managedReconstruction.js +6 -5
- package/dist/domain/nativeApiBoundary.js +7 -0
- package/dist/domain/nativeDataType.js +51 -0
- package/dist/domain/nativeInspection.js +0 -1
- package/dist/domain/nativeInstruction.js +82 -0
- package/dist/domain/nativeInvestigationGraph.js +9 -5
- package/dist/domain/nativeUiObservation.js +123 -0
- package/dist/domain/nativeValueFlow.js +17 -0
- package/dist/domain/nativeValueTrace.js +64 -0
- package/dist/domain/objcSwiftMetadata.js +39 -0
- package/dist/domain/peInspection.js +1 -0
- package/dist/domain/processCapture.js +5 -55
- package/dist/domain/processCaptureExample.js +0 -9
- package/dist/domain/processCaptureValidation.js +13 -144
- package/dist/domain/processComparison.js +3 -25
- package/dist/domain/processObservation.js +0 -29
- package/dist/domain/processScenario.js +28 -228
- package/dist/domain/processTraceDimensionProjection.js +0 -15
- package/dist/domain/processTraceEvaluation.js +0 -6
- package/dist/domain/protocolCapture.js +8 -36
- package/dist/domain/reconstructionCoverage.js +3 -2
- package/dist/domain/reconstructionObligationLedgerSchemas.js +4 -12
- package/dist/domain/reconstructionReadinessSchemas.js +4 -3
- package/dist/domain/reconstructionVerification.js +2 -1
- package/dist/domain/reconstructionVerificationSchemas.js +6 -13
- package/dist/domain/referenceSourceClassification.js +0 -110
- package/dist/domain/referenceSourceGraph.js +15 -5
- package/dist/domain/residualUnknown.js +3 -2
- package/dist/domain/runtimeIdentification.js +6 -5
- package/dist/domain/sourceMapContents.js +5 -0
- package/dist/domain/sourceToBundleComparison.js +3 -10
- package/dist/domain/sourceToBundleComparisonSchemas.js +7 -6
- package/dist/domain/sourceToBundleSignals.js +9 -3
- package/dist/domain/staticRuntimeCorrelation.js +5 -11
- package/dist/domain/webBundleAnalysis.js +17 -9
- package/dist/domain/webBundleAnalyzer.js +1 -1
- package/dist/domain/webCaptureDiff.js +5 -11
- package/dist/domain/webCaptureDiffSchemas.js +2 -1
- package/dist/domain/webMcpDiscovery.js +2 -1
- package/dist/dotnet/ManagedMemberInspectorCore.js +15 -7
- package/dist/dotnet/ManagedMemberInstructionDecoder.js +57 -40
- package/dist/dotnet/ManagedMemberRows.js +2 -0
- package/dist/dotnet/ManagedMethodBodyReader.js +15 -8
- package/dist/dotnet/ManagedPeReader.js +2 -0
- package/dist/generatedMcpToolCatalog.js +1 -1
- package/dist/generatedPackageMetadata.js +2 -2
- package/dist/ghidra/GhidraAnalysisProfile.js +15 -5
- package/dist/ghidra/GhidraClient.js +38 -8
- package/dist/ghidra/GhidraFunctionValues.js +56 -20
- package/dist/ghidra/GhidraInstallation.js +7 -4
- package/dist/ghidra/GhidraInventoryValues.js +44 -9
- package/dist/ghidra/GhidraLauncher.js +18 -3
- package/dist/ghidra/GhidraProvider.js +23 -2
- package/dist/ghidra/GhidraRequestQueue.js +45 -4
- package/dist/ghidra/GhidraSessionValues.js +5 -0
- package/dist/hopper/HopperAnalysisProfile.js +2 -0
- package/dist/hopper/HopperProvider.js +29 -6
- package/dist/hopper/HopperTargetLease.js +18 -4
- package/dist/logger.js +0 -13
- package/dist/main/messages.js +0 -1
- package/dist/main/reload.js +3 -32
- package/dist/main/shutdown.js +1 -2
- package/dist/main/transport.js +0 -17
- package/dist/main.js +0 -10
- package/dist/native/AppleDispatchMetadata.js +582 -0
- package/dist/native/AppleObjcProtocols.js +88 -0
- package/dist/native/AppleSwiftVtables.js +86 -0
- package/dist/native/CommandRunner.js +1 -1
- package/dist/native/NativeHostCapabilities.js +23 -0
- package/dist/native/NativeMacOSProvider.js +61 -9
- package/dist/native/NativeMachoInspection.js +39 -6
- package/dist/native/NativeUiHelperRuntime.js +42 -0
- package/dist/native/NativeUiObservation.js +174 -0
- package/dist/native/parsers/codesign.js +4 -1
- package/dist/native/parsers/dyldInfo.js +51 -25
- package/dist/native/parsers/lipo.js +13 -4
- package/dist/native/parsers/otool.js +84 -39
- package/dist/native/parsers/plist.js +2 -1
- package/dist/process/ExecFileOutput.js +5 -1
- package/dist/process/ProcessOwnership.js +69 -33
- package/dist/process/ProcessOwnershipObservation.js +31 -12
- package/dist/process/ProviderProcess.js +4 -2
- package/dist/reference/ReferenceSourceReaderEntries.js +48 -31
- package/dist/reference/ReferenceSourceReaderErrors.js +24 -0
- package/dist/reference/ReferenceSourceReaderFile.js +11 -5
- package/dist/reference/ReferenceSourceReaderValidate.js +22 -8
- package/dist/server/createServer.js +7 -62
- package/dist/server/registerApplicationTools/helpers.js +2 -9
- package/dist/server/registerApplicationTools.js +0 -4
- package/dist/server/registerArtifactComparisonTool.js +1 -1
- package/dist/server/registerBrowserScenarioTool.js +4 -2
- package/dist/server/registerBrowserTools.js +7 -7
- package/dist/server/registerBundleComparisonTool.js +1 -1
- package/dist/server/registerCloseLifecycleTool.js +1 -1
- package/dist/server/registerElectronTools.js +10 -4
- package/dist/server/registerEnhancedTools.js +20 -12
- package/dist/server/registerEvidenceTools.js +4 -28
- package/dist/server/registerFunctionComparisonTool.js +1 -1
- package/dist/server/registerInvestigationTools.js +6 -6
- package/dist/server/registerJavaScriptRuntimeObservationTools.js +2 -2
- package/dist/server/registerManagedTools.js +28 -14
- package/dist/server/registerManagedWorkflowTools.js +0 -2
- package/dist/server/registerProcessComparisonTool.js +1 -3
- package/dist/server/registerSessionRecordTools.js +9 -9
- package/dist/server/registerSessionStatusTool.js +1 -1
- package/dist/server/registerSessionTools.js +28 -57
- package/dist/server/sessionAvailabilityPolicy.js +2 -3
- package/dist/server/sessionToolPolicies.js +0 -4
- package/dist/server/toolResult.js +8 -10
- package/package.json +32 -22
- package/skills/reverse-engineer-anything/SKILL.md +15 -11
- package/skills/reverse-engineer-anything/references/evidence-workflows.md +3 -2
- package/skills/reverse-engineer-anything/references/javascript-applications.md +3 -2
- package/skills/reverse-engineer-anything/references/native-and-artifacts.md +8 -6
- package/skills/reverse-engineer-anything/references/runtime-observation.md +15 -11
- package/dist/application/CommandShimReplay.js +0 -152
- package/dist/application/ConfiguredRoots.js +0 -19
- package/dist/application/InstrumentedJavaScriptReplayHost.js +0 -36
- package/dist/application/JavaScriptReplayPermission.js +0 -16
- package/dist/application/JavaScriptReplayPlanning.js +0 -207
- package/dist/application/JavaScriptReplayService.js +0 -274
- package/dist/application/LoopbackReplay.js +0 -389
- package/dist/application/LoopbackReplayRecorder.js +0 -129
- package/dist/application/ManagedRuntimeCorrelationService.js +0 -104
- package/dist/application/NodeRuntimeCharacterizationService.js +0 -191
- package/dist/application/PermissionAuthority.js +0 -268
- package/dist/application/PermissionConfiguration.js +0 -26
- package/dist/application/PermissionFailure.js +0 -5
- package/dist/application/ProcessCaptureAuthority.js +0 -24
- package/dist/application/ProcessCapturePermission.js +0 -13
- package/dist/application/ProcessCheckpoints.js +0 -178
- package/dist/application/ProcessReactiveCoordinator.js +0 -223
- package/dist/application/ProcessReactiveEffects.js +0 -153
- package/dist/application/ProcessReactiveHarness.js +0 -106
- package/dist/application/ProcessReactiveObservations.js +0 -105
- package/dist/application/ProjectPermissionStore.js +0 -199
- package/dist/application/RuntimeExecutableDiagnostics.js +0 -198
- package/dist/application/Upgrade.js +0 -134
- package/dist/browser/SensitiveTextCapture.js +0 -8
- package/dist/cliPolicyCommands.js +0 -185
- package/dist/config/browserScenario.js +0 -77
- package/dist/config/electronAutomation.js +0 -35
- package/dist/config/javascriptReplay.js +0 -41
- package/dist/config/managedRuntime.js +0 -25
- package/dist/config/passiveObservation.js +0 -87
- package/dist/config/permissions.js +0 -23
- package/dist/config/processCapture.js +0 -47
- package/dist/contracts/replayMachineExample.js +0 -37
- package/dist/domain/javascriptExportInstrumentation.js +0 -95
- package/dist/domain/javascriptReplay.js +0 -360
- package/dist/domain/managedRuntimeCorrelation.js +0 -181
- package/dist/domain/nodeRuntimeCharacterization.js +0 -63
- package/dist/domain/permissionPolicy.js +0 -176
- package/dist/domain/processCaptureReactiveSchema.js +0 -68
- package/dist/domain/processCaptureReactiveValidation.js +0 -180
- package/dist/domain/processReactiveCheckpointDataflow.js +0 -32
- package/dist/domain/processReactiveMatching.js +0 -196
- package/dist/domain/processReactiveRuntime.js +0 -116
- package/dist/domain/processReactiveScenario.js +0 -296
- package/dist/domain/processReactiveScenarioPreflight.js +0 -95
- package/dist/domain/processReactiveTransition.js +0 -187
- package/dist/domain/replayMachine.js +0 -320
- package/dist/domain/replayMachineRun.js +0 -168
- package/dist/domain/replayMachineRuntime.js +0 -296
- package/dist/domain/replayMachineValues.js +0 -84
- package/dist/domain/runtimeCharacterization.js +0 -84
- package/dist/replay/JavaScriptReplayWorker.js +0 -382
- package/dist/replay/JavaScriptReplayWorkerTypes.js +0 -1
- package/dist/replay/LinuxJavaScriptReplayRunner.js +0 -216
- package/dist/replay/LinuxJavaScriptReplaySandbox.js +0 -121
- package/dist/replay/LinuxRuntimeClosure.js +0 -44
- package/dist/replay/LinuxSeccompPolicy.js +0 -40
- package/dist/replay/ReplayOutcome.js +0 -104
- package/dist/replay/ReplayProcessLifecycle.js +0 -96
- package/dist/replay/ReplaySeccompFile.js +0 -29
- package/dist/replay/ReplayWorkerProtocol.js +0 -58
- package/dist/replay/SystemJavaScriptReplayHost.js +0 -153
- package/dist/server/ProcessCaptureElicitation.js +0 -153
- package/dist/server/registerApplicationTools/characterization.js +0 -46
- package/dist/server/registerApplicationTools/controlledReplay.js +0 -31
- package/dist/server/registerManagedWorkflowTools/planManagedRuntimeCorrelation.js +0 -29
- package/dist/server/registerReplayMachineTool.js +0 -14
- package/skills/reverse-engineer-anything/references/controlled-replay.md +0 -12
|
@@ -2,10 +2,7 @@ import { z } from "incur";
|
|
|
2
2
|
import { compareManagedMemberPaths } from "../application/ManagedMemberComparisonService.js";
|
|
3
3
|
import { verifyManagedNativeBoundariesEvidence } from "../application/ManagedNativeVerificationService.js";
|
|
4
4
|
import { importManagedReconstructionEvidence } from "../application/ManagedReconstructionService.js";
|
|
5
|
-
import { planManagedRuntimeCorrelationEvidence } from "../application/ManagedRuntimeCorrelationService.js";
|
|
6
5
|
import { runProviderAnalysis } from "../application/DirectAnalysis.js";
|
|
7
|
-
import { parseConfig } from "../config.js";
|
|
8
|
-
import { loadConfiguredPermissionAuthority } from "../application/PermissionConfiguration.js";
|
|
9
6
|
import { parseCliJsonInput } from "../cliJsonInput.js";
|
|
10
7
|
import { projectAnalysisError } from "../domain/errors.js";
|
|
11
8
|
import { CLI_COMMANDS } from "../cliCommandNames.js";
|
|
@@ -18,7 +15,6 @@ export const registerManagedCommands = (cli, logger) => {
|
|
|
18
15
|
registerCompareManagedMembers(cli, logger);
|
|
19
16
|
registerImportManagedReconstruction(cli, logger);
|
|
20
17
|
registerVerifyManagedNativeBoundaries(cli, logger);
|
|
21
|
-
registerPlanManagedRuntimeCorrelation(cli, logger);
|
|
22
18
|
registerProjectManagedApplicationGraph(cli, logger);
|
|
23
19
|
};
|
|
24
20
|
const registerInspectManagedArtifact = (cli, logger) => {
|
|
@@ -54,7 +50,7 @@ const compareManagedMemberArgs = z.object({
|
|
|
54
50
|
});
|
|
55
51
|
const registerCompareManagedMembers = (cli, logger) => {
|
|
56
52
|
cli.command(CLI_COMMANDS.compareManagedMembers, {
|
|
57
|
-
description: "Compare
|
|
53
|
+
description: "Compare managed PE/CLI member inventories by exact declared type, name, and signature; names alone never form a match",
|
|
58
54
|
args: compareManagedMemberArgs,
|
|
59
55
|
run: ({ args }) => logCliCommand(logger, "compare-managed-members", async () => {
|
|
60
56
|
const result = await compareManagedMemberPaths({
|
|
@@ -104,29 +100,3 @@ const registerVerifyManagedNativeBoundaries = (cli, logger) => {
|
|
|
104
100
|
}),
|
|
105
101
|
});
|
|
106
102
|
};
|
|
107
|
-
const registerPlanManagedRuntimeCorrelation = (cli, logger) => {
|
|
108
|
-
cli.command(CLI_COMMANDS.planManagedRuntimeCorrelation, {
|
|
109
|
-
description: "Plan a separately authorized managed runtime-correlation experiment without executing target code",
|
|
110
|
-
args: z.object({
|
|
111
|
-
inputJson: z
|
|
112
|
-
.string()
|
|
113
|
-
.describe("Inline managed runtime-correlation JSON or JSON file path"),
|
|
114
|
-
}),
|
|
115
|
-
run: ({ args }) => logCliCommand(logger, "plan-managed-runtime-correlation", async () => {
|
|
116
|
-
const input = await parseCliJsonInput(args.inputJson, "plan-managed-runtime-correlation");
|
|
117
|
-
if (!input.ok)
|
|
118
|
-
return input.error;
|
|
119
|
-
const config = parseConfig(process.env);
|
|
120
|
-
if (!config.ok)
|
|
121
|
-
return projectAnalysisError(config.error);
|
|
122
|
-
const authority = await loadConfiguredPermissionAuthority(config.value);
|
|
123
|
-
if (!authority.ok)
|
|
124
|
-
return projectAnalysisError(authority.error);
|
|
125
|
-
const result = await planManagedRuntimeCorrelationEvidence({
|
|
126
|
-
policy: () => config.value.managedRuntimePolicy,
|
|
127
|
-
authority: authority.value,
|
|
128
|
-
}, input.value);
|
|
129
|
-
return result.ok ? result.value : projectAnalysisError(result.error);
|
|
130
|
-
}),
|
|
131
|
-
});
|
|
132
|
-
};
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { z } from "incur";
|
|
2
2
|
import { DOCTOR_PROVIDER_IDS, runDoctor, } from "../application/Doctor.js";
|
|
3
|
-
import { runSetup, systemSetupHost, } from "../application/Setup.js";
|
|
4
|
-
import { runUninstall } from "../application/Uninstall.js";
|
|
5
|
-
import {
|
|
3
|
+
import { runSetup, isSetupFailure, systemSetupHost, } from "../application/Setup.js";
|
|
4
|
+
import { isUninstallFailure, runUninstall } from "../application/Uninstall.js";
|
|
5
|
+
import { isUpdateFailure, runUpdate } from "../application/Update.js";
|
|
6
|
+
import { systemUpdateHost } from "../application/UpdateRuntime.js";
|
|
6
7
|
import { confirmInteractiveSetup, renderInteractiveSetupResult, renderSetupProgress, } from "../cliSetup.js";
|
|
7
8
|
import { PRODUCT_IDENTITY } from "../identity.js";
|
|
8
9
|
import { logCliCommand } from "../cliLogging.js";
|
|
@@ -13,7 +14,7 @@ const supportedClientIds = SUPPORTED_CLIENT_DEFINITIONS.map(({ name }) => name);
|
|
|
13
14
|
const supportedClientSchema = z
|
|
14
15
|
.string()
|
|
15
16
|
.refine((candidate) => supportedClientIds.some((name) => name === candidate), "Unsupported agent integration");
|
|
16
|
-
/** Register setup, doctor, uninstall, and
|
|
17
|
+
/** Register setup, doctor, uninstall, and update CLI commands. */
|
|
17
18
|
export const registerSetupCommands = (cli, logger) => {
|
|
18
19
|
registerSetupCommand(cli, logger);
|
|
19
20
|
registerDoctorCommand(cli, logger);
|
|
@@ -21,7 +22,7 @@ export const registerSetupCommands = (cli, logger) => {
|
|
|
21
22
|
};
|
|
22
23
|
const registerSetupCommand = (cli, logger) => {
|
|
23
24
|
cli.command(CLI_COMMANDS.setup, {
|
|
24
|
-
description: "
|
|
25
|
+
description: "Configure agent integrations and optional analysis providers",
|
|
25
26
|
outputPolicy: "agent-only",
|
|
26
27
|
options: z.object({
|
|
27
28
|
yes: z
|
|
@@ -54,7 +55,7 @@ const registerSetupCommand = (cli, logger) => {
|
|
|
54
55
|
.describe("Use sequential accessible setup prompts"),
|
|
55
56
|
}),
|
|
56
57
|
alias: { yes: "y" },
|
|
57
|
-
run: ({ options, formatExplicit }) => logCliCommand(logger,
|
|
58
|
+
run: ({ options, formatExplicit }) => logCliCommand(logger, CLI_COMMANDS.setup, () => runSetupCommand({ options, formatExplicit }), isSetupFailure),
|
|
58
59
|
});
|
|
59
60
|
};
|
|
60
61
|
const registerDoctorCommand = (cli, logger) => {
|
|
@@ -88,21 +89,19 @@ const registerMaintenanceCommands = (cli, logger) => {
|
|
|
88
89
|
.describe("Also remove REA caches and state"),
|
|
89
90
|
}),
|
|
90
91
|
alias: { purgeData: "purge-data" },
|
|
91
|
-
run: ({ options }) => logCliCommand(logger, "uninstall", () => runUninstall(options.purgeData)),
|
|
92
|
+
run: ({ options }) => logCliCommand(logger, "uninstall", () => runUninstall(options.purgeData), isUninstallFailure),
|
|
92
93
|
});
|
|
93
|
-
cli.command(CLI_COMMANDS.
|
|
94
|
-
description: "
|
|
95
|
-
run: ({ formatExplicit }) => logCliCommand(logger,
|
|
94
|
+
cli.command(CLI_COMMANDS.update, {
|
|
95
|
+
description: "Update this REA installation and verify the installed release",
|
|
96
|
+
run: ({ formatExplicit }) => logCliCommand(logger, CLI_COMMANDS.update, () => runUpdate(PRODUCT_IDENTITY.packageVersion, systemUpdateHost(), formatExplicit ? "structured" : "human"), isUpdateFailure),
|
|
96
97
|
});
|
|
97
98
|
};
|
|
98
99
|
const runSetupCommand = async (input) => {
|
|
99
100
|
const { options } = input;
|
|
100
101
|
const interactive = setupIsInteractive(options, input.formatExplicit);
|
|
101
102
|
const hasExplicitScope = setupHasExplicitScope(options);
|
|
102
|
-
if (options.yes && !hasExplicitScope)
|
|
103
|
-
process.stderr.write("! Implicit `rea setup --yes` scope is deprecated; use `--all-detected` to retain it.\n");
|
|
104
103
|
const result = await runSetup(setupRunOptions(input, interactive, hasExplicitScope), systemSetupHost(createSystemDoctorHost()), interactive
|
|
105
|
-
? (actions) => confirmInteractiveSetup(actions, options.accessible)
|
|
104
|
+
? (actions, context) => confirmInteractiveSetup(actions, options.accessible, context)
|
|
106
105
|
: undefined);
|
|
107
106
|
if (interactive)
|
|
108
107
|
renderInteractiveSetupResult(result);
|
|
@@ -116,7 +115,9 @@ const setupRunOptions = (input, interactive, hasExplicitScope) => {
|
|
|
116
115
|
approved: options.yes && !options.dryRun,
|
|
117
116
|
installHopper: options.installHopper,
|
|
118
117
|
structured: input.formatExplicit || options.dryRun,
|
|
119
|
-
|
|
118
|
+
dryRun: options.dryRun,
|
|
119
|
+
allDetectedClients: options.allDetected,
|
|
120
|
+
proposeHopper: interactive || options.installHopper,
|
|
120
121
|
...(hasSelectedClients ? { clientIds: options.client } : {}),
|
|
121
122
|
...(hasExplicitScope
|
|
122
123
|
? { installSkill: options.skill ?? agentIntegrationSelected }
|
|
@@ -137,6 +138,7 @@ const setupIsInteractive = (options, formatExplicit) => !options.yes &&
|
|
|
137
138
|
!options.dryRun &&
|
|
138
139
|
!formatExplicit &&
|
|
139
140
|
process.stdin.isTTY === true &&
|
|
141
|
+
process.stdout.isTTY === true &&
|
|
140
142
|
process.stderr.isTTY === true;
|
|
141
143
|
const setupHasExplicitScope = (options) => options.allDetected ||
|
|
142
144
|
options.client.length > 0 ||
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { z } from "incur";
|
|
2
|
+
import { jsonValueSchema } from "../domain/jsonValue.js";
|
|
2
3
|
import { runCapabilityStatus, runProviderAnalysis, runProviderStatus, } from "../application/DirectAnalysis.js";
|
|
3
4
|
import { importReferenceSource } from "../application/ReferenceSourceImport.js";
|
|
4
5
|
import { projectReferenceSourceImportError } from "../application/ReferenceSourceImportTypes.js";
|
|
@@ -7,10 +8,66 @@ import { projectAnalysisError } from "../domain/errors.js";
|
|
|
7
8
|
import { PRODUCT_IDENTITY } from "../identity.js";
|
|
8
9
|
import { logCliCommand } from "../cliLogging.js";
|
|
9
10
|
import { CLI_COMMANDS } from "../cliCommandNames.js";
|
|
10
|
-
export const registerUtilityCommands = (cli, logger) => {
|
|
11
|
+
export const registerUtilityCommands = (cli, logger, environment = process.env) => {
|
|
11
12
|
registerCapabilityCommands(cli, logger);
|
|
12
13
|
registerNativeCommands(cli, logger);
|
|
13
|
-
|
|
14
|
+
for (const [command, operation] of [
|
|
15
|
+
[CLI_COMMANDS.observeNativeUi, "observe_native_ui"],
|
|
16
|
+
[CLI_COMMANDS.captureNativeUiScenario, "capture_native_ui_scenario"],
|
|
17
|
+
]) {
|
|
18
|
+
cli.command(command, {
|
|
19
|
+
description: "Observe or run a scenario in one exact native application window",
|
|
20
|
+
args: z.object({
|
|
21
|
+
path: z.string().describe("Local native executable or app path"),
|
|
22
|
+
}),
|
|
23
|
+
options: z.object({
|
|
24
|
+
pid: z.number().int().positive().describe("Existing application PID"),
|
|
25
|
+
windowId: z
|
|
26
|
+
.number()
|
|
27
|
+
.int()
|
|
28
|
+
.positive()
|
|
29
|
+
.describe("Exact selected application window ID"),
|
|
30
|
+
steps: z
|
|
31
|
+
.string()
|
|
32
|
+
.optional()
|
|
33
|
+
.describe("JSON array of declarative AX actions or waits"),
|
|
34
|
+
screenshot: z
|
|
35
|
+
.boolean()
|
|
36
|
+
.default(true)
|
|
37
|
+
.describe("Capture only the selected window"),
|
|
38
|
+
accessibility: z
|
|
39
|
+
.boolean()
|
|
40
|
+
.default(true)
|
|
41
|
+
.describe("Read the selected window accessibility tree"),
|
|
42
|
+
maxNodes: z
|
|
43
|
+
.number()
|
|
44
|
+
.int()
|
|
45
|
+
.positive()
|
|
46
|
+
.safe()
|
|
47
|
+
.default(500)
|
|
48
|
+
.describe("Maximum accessibility nodes per capture"),
|
|
49
|
+
}),
|
|
50
|
+
alias: {
|
|
51
|
+
windowId: "window-id",
|
|
52
|
+
maxNodes: "max-nodes",
|
|
53
|
+
},
|
|
54
|
+
run: ({ args, options }) => logCliCommand(logger, command, () => runProviderAnalysis(args.path, operation, {
|
|
55
|
+
pid: options.pid,
|
|
56
|
+
window_id: options.windowId,
|
|
57
|
+
screenshot: options.screenshot,
|
|
58
|
+
accessibility: options.accessibility,
|
|
59
|
+
max_nodes: options.maxNodes,
|
|
60
|
+
...(operation === "capture_native_ui_scenario"
|
|
61
|
+
? {
|
|
62
|
+
steps: options.steps === undefined
|
|
63
|
+
? []
|
|
64
|
+
: jsonValueSchema.parse(JSON.parse(options.steps)),
|
|
65
|
+
}
|
|
66
|
+
: {}),
|
|
67
|
+
}, logger)),
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
registerReferenceSourceCommand(cli, logger, environment);
|
|
14
71
|
};
|
|
15
72
|
const registerCapabilityCommands = (cli, logger) => {
|
|
16
73
|
for (const command of [
|
|
@@ -63,7 +120,7 @@ const registerNativeCommands = (cli, logger) => {
|
|
|
63
120
|
run: ({ args }) => logCliCommand(logger, "demangle-swift", () => runProviderAnalysis(args.path, "demangle_swift", { symbols: args.symbols }, logger)),
|
|
64
121
|
});
|
|
65
122
|
};
|
|
66
|
-
const registerReferenceSourceCommand = (cli, logger) => {
|
|
123
|
+
const registerReferenceSourceCommand = (cli, logger, environment = process.env) => {
|
|
67
124
|
cli.command(CLI_COMMANDS.importReferenceSource, {
|
|
68
125
|
description: "Import a source tree as historical reference only",
|
|
69
126
|
args: z.object({
|
|
@@ -72,7 +129,7 @@ const registerReferenceSourceCommand = (cli, logger) => {
|
|
|
72
129
|
.describe("Local source directory to import as historical reference"),
|
|
73
130
|
}),
|
|
74
131
|
run: ({ args }) => logCliCommand(logger, "import-reference-source", async () => {
|
|
75
|
-
const config = parseConfig(
|
|
132
|
+
const config = parseConfig(environment);
|
|
76
133
|
if (!config.ok)
|
|
77
134
|
return {
|
|
78
135
|
error: "Import failed",
|
package/dist/cli.js
CHANGED
|
@@ -9,7 +9,6 @@ import { registerArtifactCommands } from "./cli/artifactCommands.js";
|
|
|
9
9
|
import { registerManagedCommands } from "./cli/managedCommands.js";
|
|
10
10
|
import { registerEvidenceCommands } from "./cliEvidenceCommands.js";
|
|
11
11
|
import { registerProcessCommands } from "./cliProcessCommands.js";
|
|
12
|
-
import { registerPolicyCommands } from "./cliPolicyCommands.js";
|
|
13
12
|
import { registerBrowserCommands } from "./cliBrowserCommands.js";
|
|
14
13
|
import { registerAdvancedBrowserCommands } from "./cliBrowserAdvancedCommands.js";
|
|
15
14
|
import { registerBrowserScenarioCommands } from "./cliBrowserScenarioCommands.js";
|
|
@@ -21,10 +20,10 @@ import { registerApplicationCommands } from "./cliApplicationCommands.js";
|
|
|
21
20
|
* Analysis commands acquire and close their own sessions; bare `mcp` and
|
|
22
21
|
* `--mcp` are intercepted by the executable dispatcher before this module loads.
|
|
23
22
|
*/
|
|
24
|
-
export const createCli = () => {
|
|
25
|
-
const logger = createLogger("cli",
|
|
23
|
+
export const createCli = (environment = process.env) => {
|
|
24
|
+
const logger = createLogger("cli", environment.REA_LOG_LEVEL === undefined
|
|
26
25
|
? "silent"
|
|
27
|
-
: parseLogLevel(
|
|
26
|
+
: parseLogLevel(environment.REA_LOG_LEVEL));
|
|
28
27
|
const cli = Cli.create(PRODUCT_IDENTITY.cliBinary, {
|
|
29
28
|
version: PRODUCT_IDENTITY.packageVersion,
|
|
30
29
|
description: "Reverse engineer anything from your terminal or agent.",
|
|
@@ -44,12 +43,11 @@ export const createCli = () => {
|
|
|
44
43
|
});
|
|
45
44
|
registerSetupCommands(cli, logger);
|
|
46
45
|
registerCoreAnalysisCommands(cli, logger);
|
|
47
|
-
registerUtilityCommands(cli, logger);
|
|
46
|
+
registerUtilityCommands(cli, logger, environment);
|
|
48
47
|
registerArtifactCommands(cli, logger);
|
|
49
48
|
registerManagedCommands(cli, logger);
|
|
50
49
|
registerEvidenceCommands(cli, logger);
|
|
51
|
-
registerProcessCommands(cli, logger);
|
|
52
|
-
registerPolicyCommands(cli, logger);
|
|
50
|
+
registerProcessCommands(cli, logger, environment);
|
|
53
51
|
registerBrowserCommands(cli, logger);
|
|
54
52
|
registerAdvancedBrowserCommands(cli, logger);
|
|
55
53
|
registerBrowserScenarioCommands(cli, logger);
|
|
@@ -1,19 +1,13 @@
|
|
|
1
1
|
import { Cli, z } from "incur";
|
|
2
2
|
import { compareApplicationVersionsEvidenceValidated, compareJavaScriptExportShapesEvidenceValidated, compareSourceToBundleEvidenceValidated, traceApplicationFeatureEvidenceValidated, } from "./application/JavaScriptApplicationWorkflowService.js";
|
|
3
3
|
import { traceJavaScriptSemanticsEvidenceValidated } from "./application/JavaScriptSemanticTraceService.js";
|
|
4
|
-
import { runControlledReplay } from "./application/JavaScriptReplayService.js";
|
|
5
|
-
import { executeNodeCharacterization, prepareNodeCharacterization, } from "./application/NodeRuntimeCharacterizationService.js";
|
|
6
4
|
import { evaluateReconstructionCoverage, reconstructionCoverageEvaluationInputSchema, } from "./application/ReconstructionCoverageService.js";
|
|
7
5
|
import { buildReconstructionObligationLedgerEvidenceValidated } from "./application/ReconstructionObligationLedgerService.js";
|
|
8
|
-
import { loadConfiguredPermissionAuthority } from "./application/PermissionConfiguration.js";
|
|
9
6
|
import { CLI_COMMANDS } from "./cliCommandNames.js";
|
|
10
7
|
import { parseCliJsonInput } from "./cliJsonInput.js";
|
|
11
8
|
import { logCliCommand } from "./cliLogging.js";
|
|
12
9
|
import { AnalysisInputError, projectAnalysisError, } from "./domain/errors.js";
|
|
13
10
|
import { jsonValueSchema } from "./domain/jsonValue.js";
|
|
14
|
-
import { parseConfig } from "./config.js";
|
|
15
|
-
import { LinuxJavaScriptReplayRunner } from "./replay/LinuxJavaScriptReplayRunner.js";
|
|
16
|
-
import { SystemJavaScriptReplayHost } from "./replay/SystemJavaScriptReplayHost.js";
|
|
17
11
|
import { traceApplicationFeatureInputSchema } from "./domain/javascriptFeatureTraceSchemas.js";
|
|
18
12
|
import { traceJavaScriptSemanticsInputSchema } from "./domain/javascriptSemanticTraceSchemas.js";
|
|
19
13
|
import { compareApplicationVersionsInputSchema } from "./domain/javascriptApplicationVersionComparisonSchemas.js";
|
|
@@ -63,44 +57,6 @@ export const registerApplicationCommands = (cli, logger) => {
|
|
|
63
57
|
inputSchema: compareJavaScriptExportShapesInputSchema,
|
|
64
58
|
workflow: compareJavaScriptExportShapesEvidenceValidated,
|
|
65
59
|
});
|
|
66
|
-
cli.command(CLI_COMMANDS.runControlledReplay, {
|
|
67
|
-
description: "Plan or execute an approved extracted-module replay in the Linux sandbox",
|
|
68
|
-
args: z.object({
|
|
69
|
-
inputJson: z.string().describe("Inline replay JSON or JSON file path"),
|
|
70
|
-
}),
|
|
71
|
-
run: ({ args }) => logCliCommand(logger, CLI_COMMANDS.runControlledReplay, async () => {
|
|
72
|
-
const input = await parseCliJsonInput(args.inputJson, CLI_COMMANDS.runControlledReplay);
|
|
73
|
-
if (!input.ok)
|
|
74
|
-
return input.error;
|
|
75
|
-
const config = parseConfig(process.env);
|
|
76
|
-
if (!config.ok)
|
|
77
|
-
return projectAnalysisError(config.error);
|
|
78
|
-
const authority = await loadConfiguredPermissionAuthority(config.value);
|
|
79
|
-
if (!authority.ok)
|
|
80
|
-
return projectAnalysisError(authority.error);
|
|
81
|
-
const result = await runControlledReplay({
|
|
82
|
-
policy: () => config.value.javascriptReplayPolicy,
|
|
83
|
-
host: new SystemJavaScriptReplayHost(),
|
|
84
|
-
runner: new LinuxJavaScriptReplayRunner(),
|
|
85
|
-
authority: authority.value,
|
|
86
|
-
}, input.value);
|
|
87
|
-
return result.ok ? result.value : projectAnalysisError(result.error);
|
|
88
|
-
}),
|
|
89
|
-
});
|
|
90
|
-
registerAuthorizedJsonCommand({
|
|
91
|
-
cli,
|
|
92
|
-
logger,
|
|
93
|
-
name: CLI_COMMANDS.prepareNodeCharacterization,
|
|
94
|
-
description: "Prepare one exact Node/JavaScript characterization without execution",
|
|
95
|
-
workflow: (config, authority, input) => prepareNodeCharacterization(replayDependencies(config, authority), input),
|
|
96
|
-
});
|
|
97
|
-
registerAuthorizedJsonCommand({
|
|
98
|
-
cli,
|
|
99
|
-
logger,
|
|
100
|
-
name: CLI_COMMANDS.executeNodeCharacterization,
|
|
101
|
-
description: "Execute one separately approved exact Node/JavaScript characterization",
|
|
102
|
-
workflow: (config, authority, input) => executeNodeCharacterization(replayDependencies(config, authority), input),
|
|
103
|
-
});
|
|
104
60
|
registerObligationLedgerCommand(cli, logger);
|
|
105
61
|
registerCoverageCommand(cli, logger);
|
|
106
62
|
};
|
|
@@ -117,24 +73,6 @@ const registerObligationLedgerCommand = (cli, logger) => registerJsonCommand({
|
|
|
117
73
|
: result;
|
|
118
74
|
},
|
|
119
75
|
});
|
|
120
|
-
const registerAuthorizedJsonCommand = ({ cli, logger, name, description, workflow, }) => {
|
|
121
|
-
cli.command(name, {
|
|
122
|
-
description,
|
|
123
|
-
args: z.object({
|
|
124
|
-
inputJson: z.string().describe("Inline workflow JSON or JSON file path"),
|
|
125
|
-
}),
|
|
126
|
-
run: ({ args }) => logCliCommand(logger, name, async () => {
|
|
127
|
-
const input = await parseCliJsonInput(args.inputJson, name);
|
|
128
|
-
if (!input.ok)
|
|
129
|
-
return input.error;
|
|
130
|
-
const configured = await configuredAuthority();
|
|
131
|
-
if (!configured.ok)
|
|
132
|
-
return configured.error;
|
|
133
|
-
const result = await workflow(configured.config, configured.authority, input.value);
|
|
134
|
-
return result.ok ? result.value : projectAnalysisError(result.error);
|
|
135
|
-
}),
|
|
136
|
-
});
|
|
137
|
-
};
|
|
138
76
|
const registerCoverageCommand = (cli, logger) => registerJsonCommand({
|
|
139
77
|
cli,
|
|
140
78
|
logger,
|
|
@@ -148,18 +86,6 @@ const registerCoverageCommand = (cli, logger) => registerJsonCommand({
|
|
|
148
86
|
: result;
|
|
149
87
|
},
|
|
150
88
|
});
|
|
151
|
-
const configuredAuthority = async () => {
|
|
152
|
-
const configured = await loadConfiguredAuthority();
|
|
153
|
-
return configured.ok
|
|
154
|
-
? configured
|
|
155
|
-
: { ok: false, error: projectAnalysisError(configured.error) };
|
|
156
|
-
};
|
|
157
|
-
const replayDependencies = (config, authority) => ({
|
|
158
|
-
policy: () => config.javascriptReplayPolicy,
|
|
159
|
-
host: new SystemJavaScriptReplayHost(),
|
|
160
|
-
runner: new LinuxJavaScriptReplayRunner(),
|
|
161
|
-
authority,
|
|
162
|
-
});
|
|
163
89
|
const registerJsonCommand = ({ cli, logger, name, description, inputSchema, workflow, }) => {
|
|
164
90
|
cli.command(name, {
|
|
165
91
|
description,
|
|
@@ -186,12 +112,3 @@ const registerJsonCommand = ({ cli, logger, name, description, inputSchema, work
|
|
|
186
112
|
}),
|
|
187
113
|
});
|
|
188
114
|
};
|
|
189
|
-
const loadConfiguredAuthority = async () => {
|
|
190
|
-
const config = parseConfig(process.env);
|
|
191
|
-
if (!config.ok)
|
|
192
|
-
return config;
|
|
193
|
-
const authority = await loadConfiguredPermissionAuthority(config.value);
|
|
194
|
-
return authority.ok
|
|
195
|
-
? { ok: true, config: config.value, authority: authority.value }
|
|
196
|
-
: authority;
|
|
197
|
-
};
|
|
@@ -33,18 +33,16 @@ const registerWebMcp = (cli, logger) => {
|
|
|
33
33
|
.describe("Observation duration in milliseconds"),
|
|
34
34
|
}),
|
|
35
35
|
run: ({ args, options }) => logCliCommand(logger, "discover-webmcp-tools", async () => {
|
|
36
|
-
const context =
|
|
37
|
-
if (!context.ok)
|
|
38
|
-
return context.error;
|
|
36
|
+
const context = browserContext();
|
|
39
37
|
const parsed = discoverWebMcpToolsInputSchema.safeParse({
|
|
40
38
|
cdp_endpoint: args.endpoint,
|
|
41
|
-
allowed_origins: options.allowedOrigins
|
|
39
|
+
allowed_origins: options.allowedOrigins,
|
|
42
40
|
target_id: args.targetId,
|
|
43
41
|
observation_ms: options.observationMs,
|
|
44
42
|
});
|
|
45
43
|
if (!parsed.success)
|
|
46
44
|
return inputError("discover_webmcp_tools");
|
|
47
|
-
const result = await discoverWebMcpTools(context.provider,
|
|
45
|
+
const result = await discoverWebMcpTools(context.provider, parsed.data);
|
|
48
46
|
return result.ok ? result.value : browserCliError(result.error);
|
|
49
47
|
}),
|
|
50
48
|
});
|
|
@@ -85,7 +83,7 @@ const registerCaptureDiff = (cli, logger) => {
|
|
|
85
83
|
};
|
|
86
84
|
const registerScreenshot = (cli, logger) => {
|
|
87
85
|
cli.command(CLI_COMMANDS.captureWebScreenshot, {
|
|
88
|
-
description: "Capture
|
|
86
|
+
description: "Capture one visible page viewport within the supplied origin scope",
|
|
89
87
|
args: z.object({
|
|
90
88
|
endpoint: z.string().describe("Configured loopback CDP HTTP endpoint"),
|
|
91
89
|
targetId: z.string().describe("Target ID from list-browser-targets"),
|
|
@@ -94,17 +92,15 @@ const registerScreenshot = (cli, logger) => {
|
|
|
94
92
|
...browserScopeOptions,
|
|
95
93
|
}),
|
|
96
94
|
run: ({ args, options }) => logCliCommand(logger, "capture-web-screenshot", async () => {
|
|
97
|
-
const context =
|
|
98
|
-
if (!context.ok)
|
|
99
|
-
return context.error;
|
|
95
|
+
const context = browserContext();
|
|
100
96
|
const parsed = captureWebScreenshotInputSchema.safeParse({
|
|
101
97
|
cdp_endpoint: args.endpoint,
|
|
102
|
-
allowed_origins: options.allowedOrigins
|
|
98
|
+
allowed_origins: options.allowedOrigins,
|
|
103
99
|
target_id: args.targetId,
|
|
104
100
|
});
|
|
105
101
|
if (!parsed.success)
|
|
106
102
|
return inputError("capture_web_screenshot");
|
|
107
|
-
const result = await captureWebScreenshot(context.provider,
|
|
103
|
+
const result = await captureWebScreenshot(context.provider, parsed.data);
|
|
108
104
|
return result.ok ? result.value : browserCliError(result.error);
|
|
109
105
|
}),
|
|
110
106
|
});
|
|
@@ -17,41 +17,37 @@ export const registerBrowserCommands = (cli, logger) => {
|
|
|
17
17
|
};
|
|
18
18
|
const registerTargetList = (cli, logger) => {
|
|
19
19
|
cli.command(CLI_COMMANDS.listBrowserTargets, {
|
|
20
|
-
description: "List
|
|
20
|
+
description: "List page targets from a selected loopback CDP browser, optionally filtered by origin",
|
|
21
21
|
args: z.object({
|
|
22
22
|
endpoint: z.string().describe("Configured loopback CDP HTTP endpoint"),
|
|
23
23
|
}),
|
|
24
24
|
options: z.object({ ...browserScopeOptions }),
|
|
25
25
|
run: ({ args, options }) => logCliCommand(logger, "list-browser-targets", async () => {
|
|
26
|
-
const context =
|
|
27
|
-
if (!context.ok)
|
|
28
|
-
return context.error;
|
|
26
|
+
const context = browserContext();
|
|
29
27
|
const parsed = listBrowserTargetsInputSchema.safeParse({
|
|
30
28
|
cdp_endpoint: args.endpoint,
|
|
31
|
-
allowed_origins: options.allowedOrigins
|
|
29
|
+
allowed_origins: options.allowedOrigins,
|
|
32
30
|
});
|
|
33
31
|
if (!parsed.success)
|
|
34
32
|
return browserCliError(new AnalysisInputError("list_browser_targets"));
|
|
35
|
-
const result = await listBrowserTargets(context.provider,
|
|
33
|
+
const result = await listBrowserTargets(context.provider, parsed.data);
|
|
36
34
|
return result.ok ? result.value : browserCliError(result.error);
|
|
37
35
|
}),
|
|
38
36
|
});
|
|
39
37
|
};
|
|
40
38
|
const registerPageInspection = (cli, logger) => {
|
|
41
39
|
cli.command(CLI_COMMANDS.inspectWebPage, {
|
|
42
|
-
description: "Passively inspect one
|
|
40
|
+
description: "Passively inspect one page through CDP, defaulting to its current origin",
|
|
43
41
|
args: z.object({
|
|
44
42
|
endpoint: z.string().describe("Configured loopback CDP HTTP endpoint"),
|
|
45
43
|
targetId: z.string().describe("Target ID from list-browser-targets"),
|
|
46
44
|
}),
|
|
47
45
|
options: browserPageInspectionOptions,
|
|
48
46
|
run: ({ args, options }) => logCliCommand(logger, "inspect-web-page", async () => {
|
|
49
|
-
const context =
|
|
50
|
-
if (!context.ok)
|
|
51
|
-
return context.error;
|
|
47
|
+
const context = browserContext();
|
|
52
48
|
const parsed = inspectWebPageInputSchema.safeParse({
|
|
53
49
|
cdp_endpoint: args.endpoint,
|
|
54
|
-
allowed_origins: options.allowedOrigins
|
|
50
|
+
allowed_origins: options.allowedOrigins,
|
|
55
51
|
target_id: args.targetId,
|
|
56
52
|
observation_ms: options.observationMs,
|
|
57
53
|
include_accessibility_text: options.includeAccessibilityText,
|
|
@@ -64,14 +60,14 @@ const registerPageInspection = (cli, logger) => {
|
|
|
64
60
|
});
|
|
65
61
|
if (!parsed.success)
|
|
66
62
|
return browserCliError(new AnalysisInputError("inspect_web_page"));
|
|
67
|
-
const result = await inspectWebPage(context.provider,
|
|
63
|
+
const result = await inspectWebPage(context.provider, parsed.data);
|
|
68
64
|
return result.ok ? result.value : browserCliError(result.error);
|
|
69
65
|
}),
|
|
70
66
|
});
|
|
71
67
|
};
|
|
72
68
|
const registerBundleAnalysis = (cli, logger) => {
|
|
73
69
|
cli.command(CLI_COMMANDS.analyzeWebBundle, {
|
|
74
|
-
description: "Capture and statically analyze
|
|
70
|
+
description: "Capture and statically analyze a page bundle, defaulting to the selected target origin",
|
|
75
71
|
args: z.object({
|
|
76
72
|
endpoint: z.string().describe("Configured loopback CDP HTTP endpoint"),
|
|
77
73
|
targetId: z.string().describe("Target ID from list-browser-targets"),
|
|
@@ -85,12 +81,10 @@ const registerBundleAnalysis = (cli, logger) => {
|
|
|
85
81
|
.describe("Fetch source maps referenced by captured scripts"),
|
|
86
82
|
}),
|
|
87
83
|
run: ({ args, options }) => logCliCommand(logger, "analyze-web-bundle", async () => {
|
|
88
|
-
const context =
|
|
89
|
-
if (!context.ok)
|
|
90
|
-
return context.error;
|
|
84
|
+
const context = browserContext();
|
|
91
85
|
const parsed = analyzeWebBundleInputSchema.safeParse({
|
|
92
86
|
cdp_endpoint: args.endpoint,
|
|
93
|
-
allowed_origins: options.allowedOrigins
|
|
87
|
+
allowed_origins: options.allowedOrigins,
|
|
94
88
|
target_id: args.targetId,
|
|
95
89
|
observation_ms: options.observationMs,
|
|
96
90
|
include_script_sources: true,
|
|
@@ -98,7 +92,7 @@ const registerBundleAnalysis = (cli, logger) => {
|
|
|
98
92
|
});
|
|
99
93
|
if (!parsed.success)
|
|
100
94
|
return browserCliError(new AnalysisInputError("analyze_web_bundle"));
|
|
101
|
-
const result = await analyzeWebBundle(context.provider,
|
|
95
|
+
const result = await analyzeWebBundle(context.provider, parsed.data);
|
|
102
96
|
return result.ok ? result.value : browserCliError(result.error);
|
|
103
97
|
}),
|
|
104
98
|
});
|
|
@@ -115,18 +109,16 @@ const registerObservationSession = (cli, logger) => {
|
|
|
115
109
|
observationMs: observationDuration(10_000, 1),
|
|
116
110
|
}),
|
|
117
111
|
run: ({ args, options }) => logCliCommand(logger, "observe-web-session", async () => {
|
|
118
|
-
const context =
|
|
119
|
-
if (!context.ok)
|
|
120
|
-
return context.error;
|
|
112
|
+
const context = browserContext();
|
|
121
113
|
const parsed = observeWebSessionInputSchema.safeParse({
|
|
122
114
|
cdp_endpoint: args.endpoint,
|
|
123
|
-
allowed_origins: options.allowedOrigins
|
|
115
|
+
allowed_origins: options.allowedOrigins,
|
|
124
116
|
target_id: args.targetId,
|
|
125
117
|
observation_ms: options.observationMs,
|
|
126
118
|
});
|
|
127
119
|
if (!parsed.success)
|
|
128
120
|
return browserCliError(new AnalysisInputError("observe_web_session"));
|
|
129
|
-
const result = await observeWebSession(context.provider,
|
|
121
|
+
const result = await observeWebSession(context.provider, parsed.data);
|
|
130
122
|
return result.ok ? result.value : browserCliError(result.error);
|
|
131
123
|
}),
|
|
132
124
|
});
|
|
@@ -1,28 +1,7 @@
|
|
|
1
|
-
import { loadConfiguredPermissionAuthority } from "./application/PermissionConfiguration.js";
|
|
2
1
|
import { CdpBrowserProvider } from "./browser/CdpBrowserProvider.js";
|
|
3
|
-
import {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
export const browserContext = async (operation) => {
|
|
7
|
-
const config = parseConfig(process.env);
|
|
8
|
-
if (!config.ok)
|
|
9
|
-
return { ok: false, error: browserCliError(config.error) };
|
|
10
|
-
const policy = config.value.browserObservationPolicy;
|
|
11
|
-
if (policy.status === "disabled")
|
|
12
|
-
return {
|
|
13
|
-
ok: false,
|
|
14
|
-
error: browserCliError(new AnalysisCapabilityUnavailableError("rea-cdp-browser", operation, "browser observation is disabled; configure exact endpoints and origins before enabling it")),
|
|
15
|
-
};
|
|
16
|
-
const authority = await loadConfiguredPermissionAuthority(config.value);
|
|
17
|
-
if (!authority.ok)
|
|
18
|
-
return { ok: false, error: browserCliError(authority.error) };
|
|
19
|
-
return {
|
|
20
|
-
ok: true,
|
|
21
|
-
authority: authority.value,
|
|
22
|
-
provider: new CdpBrowserProvider(),
|
|
23
|
-
allowedBrowserOrigins: policy.allowedOrigins,
|
|
24
|
-
};
|
|
25
|
-
};
|
|
2
|
+
import { projectAnalysisError } from "./domain/errors.js";
|
|
3
|
+
/** Build the passive browser provider; scope is supplied on each request. */
|
|
4
|
+
export const browserContext = () => ({ provider: new CdpBrowserProvider() });
|
|
26
5
|
/** Project a browser operation failure consistently across CLI command groups. */
|
|
27
6
|
export const browserCliError = (error) => ({
|
|
28
7
|
error: "Browser observation failed",
|
|
@@ -1,19 +1,17 @@
|
|
|
1
1
|
import { Cli } from "incur";
|
|
2
2
|
import { z } from "zod";
|
|
3
3
|
import { captureBrowserScenario } from "./application/BrowserScenarioCaptureService.js";
|
|
4
|
-
import { loadConfiguredPermissionAuthority } from "./application/PermissionConfiguration.js";
|
|
5
4
|
import { PlaywrightBrowserScenarioProvider } from "./browser/PlaywrightBrowserScenarioProvider.js";
|
|
6
5
|
import { CLI_COMMANDS } from "./cliCommandNames.js";
|
|
7
6
|
import { parseCliJsonInput } from "./cliJsonInput.js";
|
|
8
7
|
import { logCliCommand } from "./cliLogging.js";
|
|
9
|
-
import { parseConfig } from "./config.js";
|
|
10
8
|
import { AnalysisInputError, projectAnalysisError } from "./domain/errors.js";
|
|
11
9
|
import { browserScenarioSchema } from "./domain/browserScenario.js";
|
|
12
10
|
const OPERATION = "capture_browser_scenario";
|
|
13
11
|
/** Register the one-shot controlled browser scenario command. */
|
|
14
12
|
export const registerBrowserScenarioCommands = (cli, logger) => {
|
|
15
13
|
cli.command(CLI_COMMANDS.captureBrowserScenario, {
|
|
16
|
-
description: "Run one
|
|
14
|
+
description: "Run one bounded Playwright browser scenario and return Evidence",
|
|
17
15
|
args: z.object({
|
|
18
16
|
inputJson: z
|
|
19
17
|
.string()
|
|
@@ -26,13 +24,7 @@ export const registerBrowserScenarioCommands = (cli, logger) => {
|
|
|
26
24
|
const scenario = browserScenarioSchema.safeParse(input.value);
|
|
27
25
|
if (!scenario.success)
|
|
28
26
|
return cliError(new AnalysisInputError(OPERATION));
|
|
29
|
-
const
|
|
30
|
-
if (!config.ok)
|
|
31
|
-
return cliError(config.error);
|
|
32
|
-
const authority = await loadConfiguredPermissionAuthority(config.value);
|
|
33
|
-
if (!authority.ok)
|
|
34
|
-
return cliError(authority.error);
|
|
35
|
-
const result = await captureBrowserScenario(new PlaywrightBrowserScenarioProvider(), authority.value, scenario.data);
|
|
27
|
+
const result = await captureBrowserScenario(new PlaywrightBrowserScenarioProvider(), scenario.data);
|
|
36
28
|
return result.ok ? result.value : cliError(result.error);
|
|
37
29
|
}),
|
|
38
30
|
});
|