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
package/dist/cliCommandNames.js
CHANGED
|
@@ -6,7 +6,7 @@ export const CLI_COMMANDS = Object.freeze({
|
|
|
6
6
|
setup: "setup",
|
|
7
7
|
doctor: "doctor",
|
|
8
8
|
uninstall: "uninstall",
|
|
9
|
-
|
|
9
|
+
update: "update",
|
|
10
10
|
xrefs: "xrefs",
|
|
11
11
|
trace: "trace",
|
|
12
12
|
traceNativeUiAction: "trace-native-ui-action",
|
|
@@ -21,14 +21,21 @@ export const CLI_COMMANDS = Object.freeze({
|
|
|
21
21
|
inspectArtifact: "inspect-artifact",
|
|
22
22
|
extractArtifact: "extract-artifact",
|
|
23
23
|
decodeInterfaceBuilder: "decode-interface-builder",
|
|
24
|
+
inspectKeyedArchive: "inspect-keyed-archive",
|
|
25
|
+
inspectNativeDataType: "inspect-native-data-type",
|
|
26
|
+
traceNativeValues: "trace-native-values",
|
|
27
|
+
inspectNativeInstruction: "inspect-native-instruction",
|
|
28
|
+
resolveNativeCallTargets: "resolve-native-call-targets",
|
|
29
|
+
inspectAssetCatalog: "inspect-asset-catalog",
|
|
24
30
|
inspectManagedArtifact: "inspect-managed-artifact",
|
|
25
31
|
inspectManagedMembers: "inspect-managed-members",
|
|
26
32
|
inspectManagedNativeBoundaries: "inspect-managed-native-boundaries",
|
|
27
33
|
compareManagedMembers: "compare-managed-members",
|
|
28
34
|
verifyManagedNativeBoundaries: "verify-managed-native-boundaries",
|
|
29
35
|
importManagedReconstruction: "import-managed-reconstruction",
|
|
30
|
-
planManagedRuntimeCorrelation: "plan-managed-runtime-correlation",
|
|
31
36
|
projectManagedApplicationGraph: "project-managed-application-graph",
|
|
37
|
+
observeNativeUi: "observe-native-ui",
|
|
38
|
+
captureNativeUiScenario: "capture-native-ui-scenario",
|
|
32
39
|
inspectMacho: "inspect-macho",
|
|
33
40
|
inspectSignature: "inspect-signature",
|
|
34
41
|
listArchitectures: "list-architectures",
|
|
@@ -39,7 +46,6 @@ export const CLI_COMMANDS = Object.freeze({
|
|
|
39
46
|
compare: "compare",
|
|
40
47
|
captureProcess: "capture-process",
|
|
41
48
|
compareProcessCaptures: "compare-process-captures",
|
|
42
|
-
policy: "policy",
|
|
43
49
|
listBrowserTargets: "list-browser-targets",
|
|
44
50
|
inspectWebPage: "inspect-web-page",
|
|
45
51
|
analyzeWebBundle: "analyze-web-bundle",
|
|
@@ -61,12 +67,81 @@ export const CLI_COMMANDS = Object.freeze({
|
|
|
61
67
|
compareApplicationVersions: "compare-application-versions",
|
|
62
68
|
compareSourceToBundle: "compare-source-to-bundle",
|
|
63
69
|
compareJavaScriptExportShapes: "compare-javascript-export-shapes",
|
|
64
|
-
runReplayMachine: "run-replay-machine",
|
|
65
|
-
runControlledReplay: "run-controlled-replay",
|
|
66
|
-
prepareNodeCharacterization: "prepare-node-characterization",
|
|
67
|
-
executeNodeCharacterization: "execute-node-characterization",
|
|
68
70
|
buildReconstructionObligationLedger: "build-reconstruction-obligation-ledger",
|
|
69
71
|
evaluateReconstructionCoverage: "evaluate-reconstruction-coverage",
|
|
70
72
|
});
|
|
71
73
|
/** Ordered primary CLI inventory; aliases are intentionally excluded. */
|
|
72
74
|
export const CLI_COMMAND_NAMES = Object.freeze(Object.values(CLI_COMMANDS));
|
|
75
|
+
/** Command aliases registered on top of the primary CLI command inventory. */
|
|
76
|
+
export const CLI_COMMAND_ALIASES = Object.freeze(["compare-bundles"]);
|
|
77
|
+
/** Canonical MCP operations reached by CLI commands with different names. */
|
|
78
|
+
export const CLI_COMMAND_TOOL_ALIASES = Object.freeze({
|
|
79
|
+
analyze: ["binary_overview"],
|
|
80
|
+
inspect: ["binary_overview"],
|
|
81
|
+
decompile: ["procedure_pseudo_code"],
|
|
82
|
+
function: ["analyze_function"],
|
|
83
|
+
instructions: ["read_function_instructions"],
|
|
84
|
+
trace: ["trace_feature"],
|
|
85
|
+
search: ["search_strings", "search_procedures"],
|
|
86
|
+
"capture-process": ["capture_process_scenario"],
|
|
87
|
+
"compare-bundles": ["compare_bundles"],
|
|
88
|
+
});
|
|
89
|
+
/** MCP operations without a dedicated CLI command or direct command alias. */
|
|
90
|
+
export const MCP_TOOLS_WITHOUT_DEDICATED_CLI = Object.freeze([
|
|
91
|
+
"address_name",
|
|
92
|
+
"comment",
|
|
93
|
+
"current_address",
|
|
94
|
+
"current_procedure",
|
|
95
|
+
"current_document",
|
|
96
|
+
"goto_address",
|
|
97
|
+
"inline_comment",
|
|
98
|
+
"list_bookmarks",
|
|
99
|
+
"list_documents",
|
|
100
|
+
"list_names",
|
|
101
|
+
"list_procedures",
|
|
102
|
+
"list_segments",
|
|
103
|
+
"list_strings",
|
|
104
|
+
"next_address",
|
|
105
|
+
"prev_address",
|
|
106
|
+
"procedure_address",
|
|
107
|
+
"procedure_assembly",
|
|
108
|
+
"procedure_callees",
|
|
109
|
+
"procedure_callers",
|
|
110
|
+
"procedure_info",
|
|
111
|
+
"read_bytes",
|
|
112
|
+
"address_to_file_offset",
|
|
113
|
+
"procedure_references",
|
|
114
|
+
"resolve_containing_procedure",
|
|
115
|
+
"set_address_name",
|
|
116
|
+
"set_addresses_names",
|
|
117
|
+
"set_bookmark",
|
|
118
|
+
"set_comment",
|
|
119
|
+
"set_current_document",
|
|
120
|
+
"set_inline_comment",
|
|
121
|
+
"unset_bookmark",
|
|
122
|
+
"get_objc_classes",
|
|
123
|
+
"get_objc_protocols",
|
|
124
|
+
"batch_decompile",
|
|
125
|
+
"get_call_graph",
|
|
126
|
+
"analyze_swift_types",
|
|
127
|
+
"find_xrefs_to_name",
|
|
128
|
+
"trace_call_path",
|
|
129
|
+
"open_binary",
|
|
130
|
+
"close_binary",
|
|
131
|
+
"binary_session",
|
|
132
|
+
"export_evidence_bundle",
|
|
133
|
+
"import_evidence_bundle",
|
|
134
|
+
"compare_artifacts",
|
|
135
|
+
"compare_functions",
|
|
136
|
+
"find_changed_behavior",
|
|
137
|
+
"build_call_path",
|
|
138
|
+
"correlate_static_and_runtime",
|
|
139
|
+
"verify_reconstruction",
|
|
140
|
+
"list_unknowns",
|
|
141
|
+
"record_unknown",
|
|
142
|
+
"update_unknown",
|
|
143
|
+
"verify_unknown_resolution",
|
|
144
|
+
"get_evidence_bundle",
|
|
145
|
+
"get_navigation_context",
|
|
146
|
+
"inspect_address_context",
|
|
147
|
+
]);
|
|
@@ -2,14 +2,12 @@ import { Cli, z } from "incur";
|
|
|
2
2
|
import { inspectElectronPage, listElectronTargets, } from "./application/ElectronObservationService.js";
|
|
3
3
|
import { captureElectronScenario } from "./application/ElectronActiveObservationService.js";
|
|
4
4
|
import { reconcileJavaScriptRuntimeEvidence } from "./application/JavaScriptRuntimeReconciliationService.js";
|
|
5
|
-
import { loadConfiguredPermissionAuthority } from "./application/PermissionConfiguration.js";
|
|
6
5
|
import { CdpElectronProvider } from "./browser/CdpElectronProvider.js";
|
|
7
6
|
import { PlaywrightElectronActiveProvider } from "./browser/PlaywrightElectronActiveProvider.js";
|
|
8
7
|
import { logCliCommand } from "./cliLogging.js";
|
|
9
|
-
import { parseConfig } from "./config.js";
|
|
10
8
|
import { inspectElectronPageInputSchema, listElectronTargetsInputSchema, } from "./domain/electronObservation.js";
|
|
11
9
|
import { electronActiveObservationInputSchema } from "./domain/electronActiveObservation.js";
|
|
12
|
-
import {
|
|
10
|
+
import { AnalysisInputError, projectAnalysisError } from "./domain/errors.js";
|
|
13
11
|
import { CLI_COMMANDS } from "./cliCommandNames.js";
|
|
14
12
|
import { parseCliJsonInput } from "./cliJsonInput.js";
|
|
15
13
|
import { electronPageInspectionOptions, javascriptApplicationOptions, } from "./cliObservationOptions.js";
|
|
@@ -23,7 +21,7 @@ export const registerElectronCommands = (cli, logger) => {
|
|
|
23
21
|
};
|
|
24
22
|
const registerElectronActiveCommand = (cli, logger) => {
|
|
25
23
|
cli.command(CLI_COMMANDS.captureElectronScenario, {
|
|
26
|
-
description: "Run one
|
|
24
|
+
description: "Run one bounded owned Electron scenario",
|
|
27
25
|
args: z.object({
|
|
28
26
|
inputJson: z
|
|
29
27
|
.string()
|
|
@@ -37,9 +35,7 @@ const registerElectronActiveCommand = (cli, logger) => {
|
|
|
37
35
|
if (!parsed.success)
|
|
38
36
|
return inputError("capture_electron_scenario");
|
|
39
37
|
const context = await electronContext();
|
|
40
|
-
|
|
41
|
-
return context.error;
|
|
42
|
-
const result = await captureElectronScenario(context.activeProvider, context.authority, parsed.data);
|
|
38
|
+
const result = await captureElectronScenario(context.activeProvider, parsed.data);
|
|
43
39
|
return result.ok ? result.value : cliError(result.error);
|
|
44
40
|
}),
|
|
45
41
|
});
|
|
@@ -67,20 +63,18 @@ const registerElectronObservationCommands = (cli, logger) => {
|
|
|
67
63
|
};
|
|
68
64
|
const registerElectronTargetList = (cli, logger) => {
|
|
69
65
|
cli.command(CLI_COMMANDS.listElectronTargets, {
|
|
70
|
-
description: "List local file pages exposed by Electron CDP",
|
|
66
|
+
description: "List local file pages exposed by the selected Electron CDP endpoint",
|
|
71
67
|
args: z.object({
|
|
72
68
|
endpoint: z.string().describe("Literal-loopback Electron CDP endpoint"),
|
|
73
69
|
}),
|
|
74
70
|
run: ({ args }) => logCliCommand(logger, "list-electron-targets", async () => {
|
|
75
|
-
const context = await electronObservationContext(
|
|
76
|
-
if (!context.ok)
|
|
77
|
-
return context.error;
|
|
71
|
+
const context = await electronObservationContext();
|
|
78
72
|
const parsed = listElectronTargetsInputSchema.safeParse({
|
|
79
73
|
cdp_endpoint: args.endpoint,
|
|
80
74
|
});
|
|
81
75
|
if (!parsed.success)
|
|
82
76
|
return inputError("list_electron_targets");
|
|
83
|
-
const result = await listElectronTargets(context.provider,
|
|
77
|
+
const result = await listElectronTargets(context.provider, parsed.data);
|
|
84
78
|
return result.ok ? result.value : cliError(result.error);
|
|
85
79
|
}),
|
|
86
80
|
});
|
|
@@ -94,9 +88,7 @@ const registerElectronPageInspection = (cli, logger) => {
|
|
|
94
88
|
}),
|
|
95
89
|
options: electronPageInspectionOptions,
|
|
96
90
|
run: ({ args, options }) => logCliCommand(logger, "inspect-electron-page", async () => {
|
|
97
|
-
const context = await electronObservationContext(
|
|
98
|
-
if (!context.ok)
|
|
99
|
-
return context.error;
|
|
91
|
+
const context = await electronObservationContext();
|
|
100
92
|
const parsed = inspectElectronPageInputSchema.safeParse({
|
|
101
93
|
cdp_endpoint: args.endpoint,
|
|
102
94
|
target_id: args.targetId,
|
|
@@ -105,7 +97,7 @@ const registerElectronPageInspection = (cli, logger) => {
|
|
|
105
97
|
});
|
|
106
98
|
if (!parsed.success)
|
|
107
99
|
return inputError("inspect_electron_page");
|
|
108
|
-
const result = await inspectElectronPage(context.provider,
|
|
100
|
+
const result = await inspectElectronPage(context.provider, parsed.data);
|
|
109
101
|
return result.ok ? result.value : cliError(result.error);
|
|
110
102
|
}),
|
|
111
103
|
});
|
|
@@ -114,7 +106,7 @@ const registerJavaScriptApplicationCommand = (cli, logger) => {
|
|
|
114
106
|
cli.command(CLI_COMMANDS.analyzeJavaScriptApplication, {
|
|
115
107
|
description: "Statically reconstruct a local JavaScript/Electron application",
|
|
116
108
|
args: z.object({
|
|
117
|
-
path: z.string().describe("
|
|
109
|
+
path: z.string().describe("ASAR or extracted application path"),
|
|
118
110
|
}),
|
|
119
111
|
options: javascriptApplicationOptions,
|
|
120
112
|
run: ({ args, options }) => logCliCommand(logger, CLI_COMMANDS.analyzeJavaScriptApplication, () => runCliJavaScriptApplicationAnalysis({
|
|
@@ -124,31 +116,13 @@ const registerJavaScriptApplicationCommand = (cli, logger) => {
|
|
|
124
116
|
});
|
|
125
117
|
};
|
|
126
118
|
const electronContext = async () => {
|
|
127
|
-
const config = parseConfig(process.env);
|
|
128
|
-
if (!config.ok)
|
|
129
|
-
return { ok: false, error: cliError(config.error) };
|
|
130
|
-
const authority = await loadConfiguredPermissionAuthority(config.value);
|
|
131
|
-
if (!authority.ok)
|
|
132
|
-
return { ok: false, error: cliError(authority.error) };
|
|
133
119
|
return {
|
|
134
120
|
ok: true,
|
|
135
|
-
authority: authority.value,
|
|
136
121
|
provider: new CdpElectronProvider(),
|
|
137
122
|
activeProvider: new PlaywrightElectronActiveProvider(),
|
|
138
|
-
observationPolicy: config.value.electronObservationPolicy,
|
|
139
123
|
};
|
|
140
124
|
};
|
|
141
|
-
const electronObservationContext =
|
|
142
|
-
const context = await electronContext();
|
|
143
|
-
if (!context.ok)
|
|
144
|
-
return context;
|
|
145
|
-
if (context.observationPolicy.status === "disabled")
|
|
146
|
-
return {
|
|
147
|
-
ok: false,
|
|
148
|
-
error: cliError(new AnalysisCapabilityUnavailableError("rea-cdp-electron", operation, "Electron observation is disabled; enable REA_ELECTRON_OBSERVE_ENABLED to authorize loopback endpoints")),
|
|
149
|
-
};
|
|
150
|
-
return context;
|
|
151
|
-
};
|
|
125
|
+
const electronObservationContext = electronContext;
|
|
152
126
|
const inputError = (operation) => cliError(new AnalysisInputError(operation));
|
|
153
127
|
const cliError = (error) => ({
|
|
154
128
|
error: "Electron analysis failed",
|
|
@@ -1,12 +1,10 @@
|
|
|
1
1
|
import { Cli, z } from "incur";
|
|
2
2
|
import { listJavaScriptRuntimeTargets, observeJavaScriptRuntime, } from "./application/JavaScriptRuntimeObservationService.js";
|
|
3
|
-
import { loadConfiguredPermissionAuthority } from "./application/PermissionConfiguration.js";
|
|
4
3
|
import { V8InspectorProvider } from "./browser/V8InspectorProvider.js";
|
|
5
4
|
import { CLI_COMMANDS } from "./cliCommandNames.js";
|
|
6
5
|
import { logCliCommand } from "./cliLogging.js";
|
|
7
|
-
import { parseConfig } from "./config.js";
|
|
8
6
|
import { javascriptRuntimeKindSchema, listJavaScriptRuntimeTargetsInputSchema, observeJavaScriptRuntimeInputSchema, } from "./domain/javascriptRuntimeObservation.js";
|
|
9
|
-
import {
|
|
7
|
+
import { AnalysisInputError, projectAnalysisError } from "./domain/errors.js";
|
|
10
8
|
const observeOptionsSchema = z.object({
|
|
11
9
|
runtimeKind: javascriptRuntimeKindSchema
|
|
12
10
|
.optional()
|
|
@@ -26,15 +24,13 @@ export const registerJavaScriptRuntimeObservationCommands = (cli, logger) => {
|
|
|
26
24
|
endpoint: z.string().describe("Literal-loopback Inspector endpoint"),
|
|
27
25
|
}),
|
|
28
26
|
run: ({ args }) => logCliCommand(logger, CLI_COMMANDS.listJavaScriptRuntimeTargets, async () => {
|
|
29
|
-
const context =
|
|
30
|
-
if (!context.ok)
|
|
31
|
-
return context.error;
|
|
27
|
+
const context = runtimeContext();
|
|
32
28
|
const parsed = listJavaScriptRuntimeTargetsInputSchema.safeParse({
|
|
33
29
|
inspector_endpoint: args.endpoint,
|
|
34
30
|
});
|
|
35
31
|
if (!parsed.success)
|
|
36
32
|
return inputError("list_javascript_runtime_targets");
|
|
37
|
-
const result = await listJavaScriptRuntimeTargets(context.provider,
|
|
33
|
+
const result = await listJavaScriptRuntimeTargets(context.provider, parsed.data);
|
|
38
34
|
return result.ok ? result.value : cliError(result.error);
|
|
39
35
|
}),
|
|
40
36
|
});
|
|
@@ -48,9 +44,7 @@ export const registerJavaScriptRuntimeObservationCommands = (cli, logger) => {
|
|
|
48
44
|
}),
|
|
49
45
|
options: observeOptionsSchema,
|
|
50
46
|
run: ({ args, options }) => logCliCommand(logger, CLI_COMMANDS.observeJavaScriptRuntime, async () => {
|
|
51
|
-
const context =
|
|
52
|
-
if (!context.ok)
|
|
53
|
-
return context.error;
|
|
47
|
+
const context = runtimeContext();
|
|
54
48
|
const parsed = observeJavaScriptRuntimeInputSchema.safeParse({
|
|
55
49
|
inspector_endpoint: args.endpoint,
|
|
56
50
|
target_id: args.targetId,
|
|
@@ -59,30 +53,12 @@ export const registerJavaScriptRuntimeObservationCommands = (cli, logger) => {
|
|
|
59
53
|
});
|
|
60
54
|
if (!parsed.success)
|
|
61
55
|
return inputError("observe_javascript_runtime");
|
|
62
|
-
const result = await observeJavaScriptRuntime(context.provider,
|
|
56
|
+
const result = await observeJavaScriptRuntime(context.provider, parsed.data);
|
|
63
57
|
return result.ok ? result.value : cliError(result.error);
|
|
64
58
|
}),
|
|
65
59
|
});
|
|
66
60
|
};
|
|
67
|
-
const runtimeContext =
|
|
68
|
-
const config = parseConfig(process.env);
|
|
69
|
-
if (!config.ok)
|
|
70
|
-
return { ok: false, error: cliError(config.error) };
|
|
71
|
-
const policy = config.value.v8InspectorObservationPolicy;
|
|
72
|
-
if (policy.status === "disabled")
|
|
73
|
-
return {
|
|
74
|
-
ok: false,
|
|
75
|
-
error: cliError(new AnalysisCapabilityUnavailableError("rea-v8-inspector", operation, "V8 Inspector observation is disabled; enable REA_V8_INSPECTOR_OBSERVE_ENABLED to authorize loopback endpoints")),
|
|
76
|
-
};
|
|
77
|
-
const authority = await loadConfiguredPermissionAuthority(config.value);
|
|
78
|
-
if (!authority.ok)
|
|
79
|
-
return { ok: false, error: cliError(authority.error) };
|
|
80
|
-
return {
|
|
81
|
-
ok: true,
|
|
82
|
-
authority: authority.value,
|
|
83
|
-
provider: new V8InspectorProvider(),
|
|
84
|
-
};
|
|
85
|
-
};
|
|
61
|
+
const runtimeContext = () => ({ provider: new V8InspectorProvider() });
|
|
86
62
|
const inputError = (operation) => cliError(new AnalysisInputError(operation));
|
|
87
63
|
const cliError = (error) => ({
|
|
88
64
|
error: "JavaScript runtime observation failed",
|
package/dist/cliJsonInput.js
CHANGED
|
@@ -8,7 +8,7 @@ export const parseCliJsonInput = async (value, operation) => {
|
|
|
8
8
|
if (["{", "["].includes(value.trimStart()[0] ?? ""))
|
|
9
9
|
return { ok: false, error: inputError(operation) };
|
|
10
10
|
try {
|
|
11
|
-
const parsed = parseJson(await readFile(value
|
|
11
|
+
const parsed = parseJson(await readFile(value));
|
|
12
12
|
return parsed === undefined
|
|
13
13
|
? jsonFileError(value, operation, "invalid-json")
|
|
14
14
|
: { ok: true, value: parsed };
|
|
@@ -19,7 +19,9 @@ export const parseCliJsonInput = async (value, operation) => {
|
|
|
19
19
|
};
|
|
20
20
|
const parseJson = (value) => {
|
|
21
21
|
try {
|
|
22
|
-
return JSON.parse(value
|
|
22
|
+
return JSON.parse(typeof value === "string"
|
|
23
|
+
? value
|
|
24
|
+
: new TextDecoder("utf-8", { fatal: true, ignoreBOM: true }).decode(value));
|
|
23
25
|
}
|
|
24
26
|
catch {
|
|
25
27
|
return undefined;
|
package/dist/cliLogging.js
CHANGED
|
@@ -1,23 +1,27 @@
|
|
|
1
|
+
import { analysisCliErrorEnvelopeSchema, analysisErrorProjectionSchema, } from "./contracts/errorSchemas.js";
|
|
2
|
+
import { AnalysisError, projectAnalysisError, } from "./domain/errors.js";
|
|
1
3
|
const isRecord = (value) => typeof value === "object" && value !== null && !Array.isArray(value);
|
|
2
4
|
/** Identify caller-visible CLI outcomes that mean the requested operation failed. */
|
|
3
5
|
export const isCliOperationFailure = (value) => {
|
|
4
6
|
if (!isRecord(value))
|
|
5
7
|
return false;
|
|
6
|
-
if (
|
|
8
|
+
if (isRecord(value.error) &&
|
|
9
|
+
analysisErrorProjectionSchema.safeParse(value.error).success)
|
|
10
|
+
return true;
|
|
11
|
+
if (analysisCliErrorEnvelopeSchema.safeParse(value).success)
|
|
12
|
+
return true;
|
|
13
|
+
if (analysisErrorProjectionSchema.safeParse(value).success)
|
|
7
14
|
return true;
|
|
8
15
|
if (value.healthy === false)
|
|
9
16
|
return true;
|
|
10
|
-
return
|
|
11
|
-
value.status === "needs_confirmation" ||
|
|
12
|
-
value.status === "needs_human" ||
|
|
13
|
-
value.status === "planned");
|
|
17
|
+
return false;
|
|
14
18
|
};
|
|
15
19
|
/** Log one CLI command with duration and a stable success or failure status. */
|
|
16
|
-
export const logCliCommand = async (logger, command, execute) => {
|
|
20
|
+
export const logCliCommand = async (logger, command, execute, isCommandFailure) => {
|
|
17
21
|
const startedAt = performance.now();
|
|
18
22
|
try {
|
|
19
23
|
const value = await execute();
|
|
20
|
-
const failed = isCliOperationFailure(value);
|
|
24
|
+
const failed = isCommandFailure?.(value) ?? isCliOperationFailure(value);
|
|
21
25
|
logger[failed ? "error" : "info"]({
|
|
22
26
|
command,
|
|
23
27
|
durationMs: Math.round((performance.now() - startedAt) * 100) / 100,
|
|
@@ -28,11 +32,16 @@ export const logCliCommand = async (logger, command, execute) => {
|
|
|
28
32
|
return value;
|
|
29
33
|
}
|
|
30
34
|
catch (cause) {
|
|
35
|
+
process.exitCode = 1;
|
|
31
36
|
logger.error({
|
|
32
37
|
command,
|
|
33
38
|
durationMs: Math.round((performance.now() - startedAt) * 100) / 100,
|
|
34
39
|
status: "error",
|
|
35
40
|
}, "CLI command failed");
|
|
41
|
+
if (cause instanceof AnalysisError) {
|
|
42
|
+
process.exitCode = 1;
|
|
43
|
+
return projectAnalysisError(cause);
|
|
44
|
+
}
|
|
36
45
|
throw cause;
|
|
37
46
|
}
|
|
38
47
|
};
|
|
@@ -11,7 +11,7 @@ export const browserScopeOptions = {
|
|
|
11
11
|
allowedOrigins: z
|
|
12
12
|
.array(z.string().min(1))
|
|
13
13
|
.optional()
|
|
14
|
-
.describe("
|
|
14
|
+
.describe("Optional exact-origin filter"),
|
|
15
15
|
};
|
|
16
16
|
export const browserPageInspectionOptions = z.object({
|
|
17
17
|
...browserScopeOptions,
|
package/dist/cliOutput.js
CHANGED
|
@@ -2,8 +2,6 @@ const SAFE_VALIDATION_MESSAGE = "REA could not read the command arguments. Run `
|
|
|
2
2
|
const UNSUPPORTED_OUTPUT_COMBINATION_MESSAGE = "Token windows cannot preserve structured output. Remove --token-limit/--token-offset and use --filter-output or command pagination.";
|
|
3
3
|
const isRecord = (value) => typeof value === "object" && value !== null && !Array.isArray(value);
|
|
4
4
|
const validationError = (value) => {
|
|
5
|
-
if (!isRecord(value))
|
|
6
|
-
return undefined;
|
|
7
5
|
if (value.code === "VALIDATION_ERROR")
|
|
8
6
|
return value;
|
|
9
7
|
if (value.ok === false && isRecord(value.error))
|
|
@@ -71,6 +69,8 @@ export const sanitizeCliOutput = (output) => {
|
|
|
71
69
|
if (trimmed.startsWith("{")) {
|
|
72
70
|
try {
|
|
73
71
|
const parsed = JSON.parse(trimmed);
|
|
72
|
+
if (!isRecord(parsed))
|
|
73
|
+
return output;
|
|
74
74
|
const error = validationError(parsed);
|
|
75
75
|
if (error !== undefined) {
|
|
76
76
|
const safeError = {
|
|
@@ -79,8 +79,6 @@ export const sanitizeCliOutput = (output) => {
|
|
|
79
79
|
};
|
|
80
80
|
if (error === parsed)
|
|
81
81
|
return `${JSON.stringify(safeError)}\n`;
|
|
82
|
-
if (!isRecord(parsed))
|
|
83
|
-
return output;
|
|
84
82
|
return `${JSON.stringify({ ...parsed, error: safeError })}\n`;
|
|
85
83
|
}
|
|
86
84
|
}
|
|
@@ -1,18 +1,13 @@
|
|
|
1
1
|
import { Cli, z } from "incur";
|
|
2
|
-
import { captureProcessScenarioFile, compareProcessEvidenceFiles, } from "./application/ProcessCli.js";
|
|
2
|
+
import { captureProcessScenarioFile, compareProcessEvidenceFiles, isProcessCliFailure, } from "./application/ProcessCli.js";
|
|
3
3
|
import { logCliCommand } from "./cliLogging.js";
|
|
4
4
|
import { CLI_COMMANDS } from "./cliCommandNames.js";
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
import { AnalysisInputError, projectAnalysisError } from "./domain/errors.js";
|
|
8
|
-
import { projectInputIssues } from "./domain/inputIssueProjection.js";
|
|
9
|
-
/** Register process capture one-shot commands through shared application services. */
|
|
10
|
-
export const registerProcessCommands = (cli, logger) => {
|
|
11
|
-
registerReplayMachineCommand(cli, logger);
|
|
5
|
+
/** Register direct process capture and comparison commands. */
|
|
6
|
+
export const registerProcessCommands = (cli, logger, environment = process.env) => {
|
|
12
7
|
cli.command(CLI_COMMANDS.captureProcess, {
|
|
13
|
-
description: "Capture one
|
|
8
|
+
description: "Capture one caller-selected process scenario",
|
|
14
9
|
args: z.object({ scenario: z.string().describe("Scenario JSON path") }),
|
|
15
|
-
run: ({ args }) => logCliCommand(logger, "capture-process", () => captureProcessScenarioFile(args.scenario)),
|
|
10
|
+
run: ({ args }) => logCliCommand(logger, "capture-process", () => captureProcessScenarioFile(args.scenario, environment), isProcessCliFailure),
|
|
16
11
|
});
|
|
17
12
|
cli.command(CLI_COMMANDS.compareProcessCaptures, {
|
|
18
13
|
description: "Compare two process capture Evidence JSON files",
|
|
@@ -24,28 +19,6 @@ export const registerProcessCommands = (cli, logger) => {
|
|
|
24
19
|
.optional()
|
|
25
20
|
.describe("Optional partial-order or finite-trace specification path"),
|
|
26
21
|
}),
|
|
27
|
-
run: ({ args }) => logCliCommand(logger, "compare-process-captures", () => compareProcessEvidenceFiles(args.left, args.right, args.traceSpec)),
|
|
28
|
-
});
|
|
29
|
-
};
|
|
30
|
-
const registerReplayMachineCommand = (cli, logger) => {
|
|
31
|
-
cli.command(CLI_COMMANDS.runReplayMachine, {
|
|
32
|
-
description: "Run ordered protocol events directly through a finite replay machine",
|
|
33
|
-
args: z.object({
|
|
34
|
-
inputJson: z.string().describe("Inline replay JSON or JSON file path"),
|
|
35
|
-
}),
|
|
36
|
-
run: ({ args }) => logCliCommand(logger, CLI_COMMANDS.runReplayMachine, async () => {
|
|
37
|
-
const input = await parseCliJsonInput(args.inputJson, CLI_COMMANDS.runReplayMachine);
|
|
38
|
-
if (!input.ok)
|
|
39
|
-
return input.error;
|
|
40
|
-
const parsed = replayMachineRunInputSchema.safeParse(input.value);
|
|
41
|
-
return parsed.success
|
|
42
|
-
? runReplayMachine(parsed.data)
|
|
43
|
-
: {
|
|
44
|
-
error: "Process command failed",
|
|
45
|
-
...projectAnalysisError(new AnalysisInputError(CLI_COMMANDS.runReplayMachine, {
|
|
46
|
-
cause: parsed.error,
|
|
47
|
-
}, projectInputIssues(parsed.error.issues, input.value))),
|
|
48
|
-
};
|
|
49
|
-
}),
|
|
22
|
+
run: ({ args }) => logCliCommand(logger, "compare-process-captures", () => compareProcessEvidenceFiles(args.left, args.right, args.traceSpec), isProcessCliFailure),
|
|
50
23
|
});
|
|
51
24
|
};
|