rea-agents 3.1.0 → 3.2.1
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 +72 -95
- package/bridge/ghidra/ReaGhidraBridge.java +609 -841
- package/bridge/hopper_bridge.py +99 -344
- package/dist/application/AbortablePromise.js +6 -3
- package/dist/application/AnalysisSnapshotCache.js +0 -1
- package/dist/application/AnalysisSnapshotFiles.js +7 -7
- package/dist/application/AndroidApplicationService.js +1 -1
- package/dist/application/AppleApplicationService.js +1 -1
- package/dist/application/ArtifactExtraction.js +35 -54
- package/dist/application/ArtifactExtractionDestination.js +17 -0
- package/dist/application/ArtifactGraphConstruction.js +2 -17
- package/dist/application/ArtifactInventory/classify.js +2 -6
- package/dist/application/ArtifactInventory/hash.js +2 -20
- package/dist/application/ArtifactInventory/scanCanonical.js +8 -12
- package/dist/application/ArtifactInventory/scanReader.js +69 -51
- package/dist/application/ArtifactInventory.js +6 -14
- package/dist/application/AuthorizedArtifactInventory.js +3 -13
- package/dist/application/BinarySession.js +41 -13
- package/dist/application/BinarySessionComposition.js +0 -11
- package/dist/application/BinarySessionOpen.js +2 -1
- package/dist/application/BinarySessionRecords.js +5 -93
- package/dist/application/BinarySessionStatus.js +5 -16
- package/dist/application/BinaryTargetResolver.js +216 -0
- package/dist/application/BrowserEvidence.js +42 -58
- package/dist/application/BrowserObservationService.js +3 -6
- package/dist/application/BrowserScenarioCaptureService.js +3 -6
- package/dist/application/BrowserScenarioEvidence.js +3 -3
- package/dist/application/CallPathTracing.js +2 -36
- package/dist/application/CapabilityInventory.js +10 -15
- package/dist/application/ClientConfigurationDocument.js +27 -0
- package/dist/application/ClientRegistrationStatus.js +16 -13
- package/dist/application/CommandShimReplay.js +14 -1
- package/dist/application/DirectAnalysis.js +22 -46
- package/dist/application/DirectAnalysisStatus.js +5 -61
- package/dist/application/Doctor.js +11 -32
- package/dist/application/DoctorDiagnostics.js +1 -2
- package/dist/application/DoctorScope.js +1 -1
- package/dist/application/ElectronActiveEvidence.js +3 -8
- package/dist/application/ElectronActiveObservationService.js +3 -6
- package/dist/application/ElectronBoundaryAnalysis.js +7 -8
- package/dist/application/ElectronBoundaryGraphContext.js +1 -1
- package/dist/application/ElectronBoundaryGraphIpc.js +3 -3
- package/dist/application/ElectronBoundaryGraphNative.js +1 -2
- package/dist/application/ElectronBoundaryGraphWindows.js +6 -8
- package/dist/application/ElectronEvidence.js +4 -7
- package/dist/application/ElectronObservationService.js +5 -9
- package/dist/application/EnhancedLiteralTracing.js +42 -65
- package/dist/application/EnhancedTools.js +76 -44
- package/dist/application/EvidenceBundleCommands.js +11 -11
- package/dist/application/EvidenceBundleFiles.js +9 -15
- package/dist/application/EvidenceLedger.js +6 -41
- package/dist/application/FilesystemSnapshot.js +2 -3
- package/dist/application/InterfaceBuilderAnalysis.js +266 -0
- package/dist/application/InventoryProjectionEvidence.js +4 -2
- package/dist/application/InvestigationProviders.js +1 -1
- package/dist/application/JavaScriptApplicationEvidence.js +2 -5
- package/dist/application/JavaScriptApplicationEvidenceGraph.js +6 -10
- package/dist/application/JavaScriptApplicationService.js +6 -29
- package/dist/application/JavaScriptApplicationWorkflowEvidence.js +5 -5
- package/dist/application/JavaScriptApplicationWorkflowService.js +0 -8
- package/dist/application/JavaScriptArtifactAnalysis.js +38 -127
- package/dist/application/JavaScriptArtifactFiles.js +67 -107
- package/dist/application/JavaScriptArtifactGraphAccumulator.js +0 -7
- package/dist/application/JavaScriptArtifactGraphBuilder.js +7 -58
- package/dist/application/JavaScriptArtifactGraphBundlers.js +1 -6
- package/dist/application/JavaScriptArtifactGraphContext.js +12 -39
- package/dist/application/JavaScriptArtifactGraphDocuments.js +4 -11
- package/dist/application/JavaScriptArtifactGraphEvidence.js +0 -14
- package/dist/application/JavaScriptArtifactGraphFindings.js +3 -3
- package/dist/application/JavaScriptArtifactGraphStructure.js +16 -17
- package/dist/application/JavaScriptArtifactPathResolution.js +61 -49
- package/dist/application/JavaScriptArtifactReconstruction.js +5 -10
- package/dist/application/JavaScriptArtifactReconstructionInput.js +2 -14
- package/dist/application/JavaScriptJsonModules.js +2 -2
- package/dist/application/JavaScriptModuleRelationships.js +22 -27
- package/dist/application/JavaScriptReplayPlanning.js +9 -3
- package/dist/application/JavaScriptReplayService.js +6 -32
- package/dist/application/JavaScriptReturnShapeProjection.js +12 -42
- package/dist/application/JavaScriptRuntimeObservationEvidence.js +7 -8
- package/dist/application/JavaScriptRuntimeObservationService.js +4 -8
- package/dist/application/JavaScriptRuntimeReconciliationEvidence.js +2 -3
- package/dist/application/JavaScriptSemanticGraphBuilder.js +11 -41
- package/dist/application/JavaScriptSemanticGraphConstruction.js +5 -29
- package/dist/application/JavaScriptSemanticGraphEvidence.js +1 -1
- package/dist/application/JavaScriptSemanticGraphFingerprintProjection.js +1 -1
- package/dist/application/JavaScriptSemanticGraphFlowProjection.js +0 -13
- package/dist/application/JavaScriptSemanticGraphProjection.js +1 -3
- package/dist/application/JavaScriptSemanticTraceService.js +1 -10
- package/dist/application/JsonFiles.js +79 -0
- package/dist/application/LinuxHopper.js +11 -9
- package/dist/application/LoopbackReplay.js +26 -23
- package/dist/application/LoopbackReplayRecorder.js +29 -1
- package/dist/application/ManagedApplicationGraphService.js +1 -2
- package/dist/application/ManagedMemberComparisonService.js +11 -41
- package/dist/application/ManagedNativeVerificationService.js +1 -2
- package/dist/application/ManagedReconstructionService.js +1 -1
- package/dist/application/ManagedRuntimeCorrelationService.js +5 -8
- package/dist/application/NativeApiInspection.js +2 -7
- package/dist/application/NativeUiActionTrace.js +394 -0
- package/dist/application/NodeRuntimeCharacterizationService.js +3 -7
- package/dist/application/PermissionAuthority.js +15 -7
- package/dist/application/PermissionFailure.js +5 -0
- package/dist/application/ProcessCaptureAuthority.js +5 -7
- package/dist/application/ProcessCaptureJournal.js +3 -2
- package/dist/application/ProcessCaptureLifecycle.js +5 -12
- package/dist/application/ProcessCheckpoints.js +29 -11
- package/dist/application/ProcessCli.js +6 -16
- package/dist/application/ProcessEvidence.js +5 -7
- package/dist/application/ProcessHarness.js +52 -17
- package/dist/application/ProcessReactiveCoordinator.js +2 -4
- package/dist/application/ProcessReactiveEffects.js +9 -3
- package/dist/application/ProcessReactiveHarness.js +13 -7
- package/dist/application/ProcessSampling.js +2 -4
- package/dist/application/ProcessTimer.js +39 -0
- package/dist/application/ProjectPermissionStore.js +39 -96
- package/dist/application/RealHopperAssertions.js +20 -66
- package/dist/application/ReconstructionCoverageService.js +12 -58
- package/dist/application/ReconstructionObligationAuthority.js +2 -2
- package/dist/application/ReconstructionObligationCandidates.js +4 -4
- package/dist/application/ReconstructionObligationLedgerEvaluation.js +8 -15
- package/dist/application/ReconstructionObligationLedgerProjection.js +3 -7
- package/dist/application/ReconstructionObligationLedgerService.js +19 -38
- package/dist/application/ReferenceSourceImport.js +19 -45
- package/dist/application/ReferenceSourceImportEntries.js +2 -4
- package/dist/application/ReferenceSourceImportPolicy.js +5 -32
- package/dist/application/ReferenceSourceImportTypes.js +0 -16
- package/dist/application/RuntimeExecutableDiagnostics.js +55 -29
- package/dist/application/SessionProviderRouter.js +2 -2
- package/dist/application/Setup.js +1 -3
- package/dist/application/SetupClientConfiguration.js +22 -93
- package/dist/application/SetupRegistrationEnvironment.js +0 -7
- package/dist/application/StoreFileLock.js +119 -0
- package/dist/application/TerminalRenderer.js +2 -3
- package/dist/application/Uninstall.js +9 -14
- package/dist/application/UnknownEvidence.js +1 -1
- package/dist/artifacts/ArtifactPaths.js +2 -5
- package/dist/artifacts/ArtifactProvider.js +36 -58
- package/dist/artifacts/DirectoryArtifactReader.js +13 -8
- package/dist/artifacts/MachOSliceArtifactReader.js +1 -5
- package/dist/artifacts/NativeDmgArtifactReader.js +11 -11
- package/dist/artifacts/NibArchive.js +269 -0
- package/dist/artifacts/SafeOutputTree.js +15 -24
- package/dist/browser/BrowserProcessStartup.js +1 -2
- package/dist/browser/CdpAuthorizedMainFrame.js +16 -0
- package/dist/browser/CdpBrowserProvider.js +3 -13
- package/dist/browser/CdpCanonicalJsonDigest.js +9 -0
- package/dist/browser/CdpCaptureDocuments.js +28 -76
- package/dist/browser/CdpCaptureEventBodyShapes.js +13 -33
- package/dist/browser/CdpCaptureEventHandlers.js +22 -87
- package/dist/browser/CdpCaptureEvents.js +2 -8
- package/dist/browser/CdpCaptureStorage.js +9 -20
- package/dist/browser/CdpCaptureStorageFingerprints.js +85 -98
- package/dist/browser/CdpCaptureValues.js +21 -21
- package/dist/browser/CdpConnection.js +10 -25
- package/dist/browser/CdpElectronInspection.js +26 -50
- package/dist/browser/CdpElectronProvider.js +10 -35
- package/dist/browser/CdpElectronScriptEvents.js +8 -16
- package/dist/browser/CdpElectronScripts.js +6 -35
- package/dist/browser/CdpElectronWorkers.js +6 -10
- package/dist/browser/CdpEndpoint.js +25 -41
- package/dist/browser/CdpObservationSession.js +14 -26
- package/dist/browser/CdpPageCapture.js +34 -48
- package/dist/browser/CdpPageCaptureScripts.js +1 -19
- package/dist/browser/CdpPageCaptureWorkers.js +6 -10
- package/dist/browser/CdpSafeMetadata.js +19 -22
- package/dist/browser/CdpScreenshot.js +3 -5
- package/dist/browser/CdpTargetSession.js +1 -2
- package/dist/browser/CdpWebMcpDiscovery.js +13 -22
- package/dist/browser/ElectronFileScope.js +8 -19
- package/dist/browser/JavaScriptRuntimeScope.js +9 -14
- package/dist/browser/PlaywrightBrowserScenarioProvider.js +31 -64
- package/dist/browser/PlaywrightElectronActiveActions.js +54 -69
- package/dist/browser/PlaywrightElectronActiveProvider.js +14 -34
- package/dist/browser/PlaywrightExecutionBoundary.js +16 -5
- package/dist/browser/PlaywrightScenarioActions.js +3 -7
- package/dist/browser/PlaywrightScenarioArtifacts.js +23 -92
- package/dist/browser/PlaywrightScenarioBrowser.js +3 -5
- package/dist/browser/PlaywrightScenarioEvents.js +45 -94
- package/dist/browser/PlaywrightScenarioSession.js +14 -30
- package/dist/browser/PngVisualDiff.js +22 -14
- package/dist/browser/SensitiveTextCapture.js +0 -17
- package/dist/browser/V8InspectorCaptureProjection.js +7 -8
- package/dist/browser/V8InspectorEndpoint.js +12 -14
- package/dist/browser/V8InspectorProvider.js +20 -61
- package/dist/browser/WebSourceMapFetcher.js +56 -176
- package/dist/catalogIdentity.js +0 -54
- package/dist/cli/artifactCommands.js +49 -77
- package/dist/cli/coreAnalysisCommands.js +83 -133
- package/dist/cli/javascriptApplicationAnalysis.js +1 -9
- package/dist/cli/managedCommands.js +5 -270
- package/dist/cli/setupCommands.js +3 -12
- package/dist/cli/utilityCommands.js +7 -41
- package/dist/cli.js +0 -2
- package/dist/cliApplicationCommands.js +42 -112
- package/dist/cliBrowserAdvancedCommands.js +10 -106
- package/dist/cliBrowserCommands.js +15 -127
- package/dist/cliBrowserContext.js +30 -0
- package/dist/cliCommandNames.js +4 -5
- package/dist/cliElectronCommands.js +8 -72
- package/dist/cliEvidenceCommands.js +8 -77
- package/dist/cliJavaScriptRuntimeCommands.js +9 -91
- package/dist/cliJsonInput.js +4 -14
- package/dist/cliObservationOptions.js +11 -96
- package/dist/cliPolicyCommands.js +2 -17
- package/dist/cliProcessCommands.js +3 -3
- package/dist/cliSetup.js +0 -13
- package/dist/config/browserScenario.js +2 -2
- package/dist/config/environment.js +0 -9
- package/dist/config/parseConfig.js +1 -33
- package/dist/config/parsers.js +6 -27
- package/dist/config/passiveObservation.js +7 -77
- package/dist/config/permissions.js +0 -7
- package/dist/contracts/analysisSearchContract.js +2 -5
- package/dist/contracts/applicationToolContracts.js +56 -109
- package/dist/contracts/applicationWorkflowInputContracts.js +27 -102
- package/dist/contracts/artifactComparisonExample.js +58 -60
- package/dist/contracts/artifactToolContracts.js +20 -67
- package/dist/contracts/browserScenarioToolContracts.js +6 -51
- package/dist/contracts/browserToolContracts.js +8 -73
- package/dist/contracts/electronToolContracts.js +8 -108
- package/dist/contracts/enhancedInputs.js +23 -54
- package/dist/contracts/errorSchemas.js +0 -1
- package/dist/contracts/functionComparisonExample.js +10 -24
- package/dist/contracts/functionInstructionContract.js +1 -3
- package/dist/contracts/functionWorkflowToolContracts.js +2 -2
- package/dist/contracts/hopperMemoryContracts.js +3 -3
- package/dist/contracts/investigationExamples.js +14 -11
- package/dist/contracts/javascriptApplicationWorkflowExamples.js +12 -19
- package/dist/contracts/javascriptRuntimeObservationToolContracts.js +2 -20
- package/dist/contracts/javascriptRuntimeReconciliationExample.js +45 -12
- package/dist/contracts/managedToolContracts.js +6 -95
- package/dist/contracts/managedWorkflowExamples.js +77 -128
- package/dist/contracts/managedWorkflowToolContracts.js +51 -77
- package/dist/contracts/nativeToolContracts.js +7 -11
- package/dist/contracts/processCaptureExample.js +2 -69
- package/dist/contracts/promptContracts.js +49 -67
- package/dist/contracts/providerSelection.js +0 -1
- package/dist/contracts/reconstructionReadinessExample.js +1 -6
- package/dist/contracts/sessionStatusContract.js +1 -17
- package/dist/contracts/sessionToolSchemas.js +6 -15
- package/dist/contracts/toolContractExamples.js +11 -11
- package/dist/contracts/toolContractHelpers.js +0 -4
- package/dist/contracts/toolContracts.js +60 -71
- package/dist/contracts/toolEffects.js +5 -13
- package/dist/contracts/toolOutputSchemaGroups.js +37 -91
- package/dist/contracts/toolOutputSchemaPrimitives.js +16 -56
- package/dist/contracts/toolSchemaMetadata.js +8 -19
- package/dist/contracts/unknownContractExamples.js +0 -2
- package/dist/domain/analysisErrorPresentation.js +46 -54
- package/dist/domain/analysisErrorProjection.js +28 -37
- package/dist/domain/analysisProfile.js +3 -31
- package/dist/domain/analysisSnapshot.js +3 -12
- package/dist/domain/androidApplication.js +15 -54
- package/dist/domain/appleApplication.js +24 -67
- package/dist/domain/artifactComparison.js +11 -29
- package/dist/domain/artifactGraph.js +14 -44
- package/dist/domain/artifactInspection.js +38 -69
- package/dist/domain/artifactInventoryEvidence.js +27 -21
- package/dist/domain/binaryTarget.js +2 -221
- package/dist/domain/browserCaptureComparison.js +47 -24
- package/dist/domain/browserObservation.js +28 -193
- package/dist/domain/browserObservationSchemas.js +5 -23
- package/dist/domain/browserScenario.js +11 -14
- package/dist/domain/browserScenarioCapture.js +11 -12
- package/dist/domain/browserScenarioCaptureValues.js +146 -84
- package/dist/domain/browserScenarioDiff.js +2 -59
- package/dist/domain/browserScenarioDiffEvidence.js +51 -0
- package/dist/domain/browserScenarioDiffValues.js +21 -38
- package/dist/domain/browserScenarioValues.js +80 -109
- package/dist/domain/browserSession.js +4 -7
- package/dist/domain/bundleComparison.js +6 -32
- package/dist/domain/bytecodeProvider.js +20 -19
- package/dist/domain/callPath.js +47 -167
- package/dist/domain/callPathSchemas.js +79 -0
- package/dist/domain/changedBehavior.js +34 -60
- package/dist/domain/completionLedgerGeneration.js +8 -14
- package/dist/domain/conformancePackage.js +126 -97
- package/dist/domain/conformanceReplay.js +36 -8
- package/dist/domain/conformanceTrustGate.js +23 -14
- package/dist/domain/customProtocolCapture.js +1 -1
- package/dist/domain/electronActiveObservation.js +70 -103
- package/dist/domain/electronObservation.js +14 -80
- package/dist/domain/electronStaticAnalysisBrowser.js +36 -46
- package/dist/domain/electronStaticAnalysisIpc.js +38 -14
- package/dist/domain/electronStaticAnalysisNative.js +1 -8
- package/dist/domain/electronStaticAnalysisValues.js +10 -17
- package/dist/domain/errors.js +33 -54
- package/dist/domain/eventProcessTree.js +20 -12
- package/dist/domain/evidence.js +2 -10
- package/dist/domain/evidenceBundle.js +3 -5
- package/dist/domain/evidenceCompletionLedger.js +6 -8
- package/dist/domain/functionComparison.js +4 -14
- package/dist/domain/functionComparisonNormalization.js +4 -11
- package/dist/domain/functionComparisonResults.js +25 -15
- package/dist/domain/functionComparisonSchemas.js +49 -33
- package/dist/domain/functionDossierEvidence.js +31 -156
- package/dist/domain/hopperStartupFailure.js +1 -1
- package/dist/domain/hopperValues.js +15 -136
- package/dist/domain/interfaceBuilderGraph.js +654 -0
- package/dist/domain/javascriptApplicationAnalysis.js +8 -112
- package/dist/domain/javascriptApplicationChangeGraph.js +22 -82
- package/dist/domain/javascriptApplicationEvidenceSchemas.js +59 -47
- package/dist/domain/javascriptApplicationGraph.js +3 -13
- package/dist/domain/javascriptApplicationGraphSchemas.js +12 -34
- package/dist/domain/javascriptApplicationVersionComparison.js +26 -30
- package/dist/domain/javascriptApplicationVersionComparisonSchemas.js +123 -68
- package/dist/domain/javascriptApplicationVersionItems.js +120 -53
- package/dist/domain/javascriptApplicationVersionKeys.js +24 -11
- package/dist/domain/javascriptAstFingerprint.js +25 -58
- package/dist/domain/javascriptAstValues.js +9 -0
- package/dist/domain/javascriptExportInstrumentation.js +2 -4
- package/dist/domain/javascriptExportShapeComparison.js +6 -7
- package/dist/domain/javascriptExportShapeComparisonSchemas.js +68 -75
- package/dist/domain/javascriptExportShapeSelection.js +17 -19
- package/dist/domain/javascriptFeatureSeed.js +20 -12
- package/dist/domain/javascriptFeatureTrace.js +13 -67
- package/dist/domain/javascriptFeatureTraceSchemas.js +24 -52
- package/dist/domain/javascriptFeatureTraversal.js +1 -44
- package/dist/domain/javascriptNativeHandoff.js +1 -1
- package/dist/domain/javascriptReplay.js +24 -41
- package/dist/domain/javascriptRuntimeLoadState.js +3 -8
- package/dist/domain/javascriptRuntimeObservation.js +42 -103
- package/dist/domain/javascriptRuntimeReconciliation.js +1 -3
- package/dist/domain/javascriptRuntimeReconciliationActive.js +8 -17
- package/dist/domain/javascriptRuntimeReconciliationGraph.js +10 -23
- package/dist/domain/javascriptRuntimeReconciliationMatching.js +18 -12
- package/dist/domain/javascriptRuntimeReconciliationParsing.js +16 -45
- package/dist/domain/javascriptRuntimeReconciliationResult.js +4 -5
- package/dist/domain/javascriptRuntimeReconciliationRuntime.js +8 -12
- package/dist/domain/javascriptRuntimeReconciliationSchemas.js +33 -48
- package/dist/domain/javascriptRuntimeStaticCandidates.js +3 -3
- package/dist/domain/javascriptSemanticAnalysis.js +12 -45
- package/dist/domain/javascriptSemanticAsyncEffects.js +1 -9
- package/dist/domain/javascriptSemanticCallResolution.js +6 -16
- package/dist/domain/javascriptSemanticCalls.js +5 -32
- package/dist/domain/javascriptSemanticChildProcesses.js +1 -11
- package/dist/domain/javascriptSemanticCoverage.js +11 -0
- package/dist/domain/javascriptSemanticDataEffectHelpers.js +1 -8
- package/dist/domain/javascriptSemanticDataEffects.js +1 -11
- package/dist/domain/javascriptSemanticFingerprints.js +3 -5
- package/dist/domain/javascriptSemanticGraphSchemas.js +25 -51
- package/dist/domain/javascriptSemanticGraphSerialization.js +2 -13
- package/dist/domain/javascriptSemanticIr.js +1 -29
- package/dist/domain/javascriptSemanticObjects.js +1 -5
- package/dist/domain/javascriptSemanticPrimitives.js +2 -9
- package/dist/domain/javascriptSemanticProjection.js +0 -18
- package/dist/domain/javascriptSemanticPromises.js +9 -16
- package/dist/domain/javascriptSemanticProvenance.js +16 -19
- package/dist/domain/javascriptSemanticQuery.js +17 -139
- package/dist/domain/javascriptSemanticQueryAssessment.js +9 -37
- package/dist/domain/javascriptSemanticQueryIdentity.js +2 -23
- package/dist/domain/javascriptSemanticQuerySchemas.js +14 -107
- package/dist/domain/javascriptSemanticResources.js +1 -6
- package/dist/domain/javascriptSemanticReturns.js +10 -27
- package/dist/domain/javascriptSemanticValueTypes.js +1 -0
- package/dist/domain/javascriptSemanticValues.js +44 -62
- package/dist/domain/javascriptStaticAnalysis.js +21 -43
- package/dist/domain/javascriptStaticAnalysisBundler.js +34 -93
- package/dist/domain/javascriptStaticAnalysisCalls.js +17 -16
- package/dist/domain/javascriptStaticAnalysisFindings.js +3 -19
- package/dist/domain/javascriptStaticAnalysisHelpers.js +47 -88
- package/dist/domain/javascriptStaticAnalysisState.js +1 -5
- package/dist/domain/javascriptStaticAnalysisTypes.js +1 -0
- package/dist/domain/jsonShape.js +7 -33
- package/dist/domain/localPath.js +7 -0
- package/dist/domain/managedApplicationGraph.js +9 -41
- package/dist/domain/managedApplicationGraphCoverage.js +24 -156
- package/dist/domain/managedApplicationGraphNodes.js +10 -13
- package/dist/domain/managedArtifact.js +14 -27
- package/dist/domain/managedMemberComparison.js +90 -92
- package/dist/domain/managedMemberComparisonCoverage.js +11 -33
- package/dist/domain/managedMemberComparisonItems.js +221 -0
- package/dist/domain/managedMemberComparisonMatch.js +8 -208
- package/dist/domain/managedNativeVerification.js +3 -6
- package/dist/domain/managedNativeVerificationMatch.js +55 -59
- package/dist/domain/managedNativeVerificationSchemas.js +83 -47
- package/dist/domain/managedReconstruction.js +19 -23
- package/dist/domain/managedRuntimeCorrelation.js +6 -9
- package/dist/domain/nativeApiBoundary.js +2 -7
- package/dist/domain/nativeInspection.js +0 -2
- package/dist/domain/nativeInvestigationGraph.js +351 -0
- package/dist/domain/nativeValueFlow.js +61 -0
- package/dist/domain/nodeRuntimeCharacterization.js +1 -5
- package/dist/domain/objcSwiftMetadata.js +254 -0
- package/dist/domain/peInspection.js +1 -1
- package/dist/domain/permissionPolicy.js +13 -0
- package/dist/domain/processCapture.js +76 -113
- package/dist/domain/processCaptureExample.js +68 -0
- package/dist/domain/processCaptureParsing.js +21 -0
- package/dist/domain/processCaptureReactiveSchema.js +68 -0
- package/dist/domain/processCaptureValidation.js +1 -7
- package/dist/domain/processComparison.js +3 -12
- package/dist/domain/processReactiveMatching.js +29 -50
- package/dist/domain/processReactiveRuntime.js +4 -8
- package/dist/domain/processReactiveScenario.js +28 -94
- package/dist/domain/processReactiveScenarioPreflight.js +5 -30
- package/dist/domain/processReactiveTransition.js +33 -18
- package/dist/domain/processScenario.js +56 -90
- package/dist/domain/processTraceComparison.js +0 -8
- package/dist/domain/processTraceEvaluation.js +14 -4
- package/dist/domain/processTraceSpecification.js +11 -17
- package/dist/domain/protocolCapture.js +3 -3
- package/dist/domain/reconstructionCoverage.js +62 -129
- package/dist/domain/reconstructionCoverageEvaluation.js +17 -17
- package/dist/domain/reconstructionObligationLedgerSchemas.js +45 -72
- package/dist/domain/reconstructionReadiness.js +1 -2
- package/dist/domain/reconstructionReadinessSchemas.js +36 -38
- package/dist/domain/reconstructionUnknowns.js +3 -3
- package/dist/domain/reconstructionVerification.js +13 -47
- package/dist/domain/reconstructionVerificationSchemas.js +50 -38
- package/dist/domain/referenceSourceGraph.js +53 -61
- package/dist/domain/referenceSourceImportParsing.js +1 -5
- package/dist/domain/replayMachine.js +19 -31
- package/dist/domain/replayMachineRun.js +15 -63
- package/dist/domain/replayMachineRuntime.js +41 -41
- package/dist/domain/replayMachineValues.js +84 -0
- package/dist/domain/residualUnknown.js +25 -30
- package/dist/domain/runtimeCharacterization.js +15 -16
- package/dist/domain/runtimeIdentification.js +48 -47
- package/dist/domain/sourceToBundleComparison.js +9 -85
- package/dist/domain/sourceToBundleComparisonSchemas.js +17 -42
- package/dist/domain/sourceToBundleSignals.js +4 -15
- package/dist/domain/staticRuntimeCorrelation.js +37 -49
- package/dist/domain/symbolAnalysis.js +10 -19
- package/dist/domain/unicodeCodePointOrder.js +12 -0
- package/dist/domain/webBundleAnalysis.js +70 -99
- package/dist/domain/webBundleAnalyzer.js +2 -4
- package/dist/domain/webBundleAnalyzerAst.js +0 -13
- package/dist/domain/webBundleAnalyzerInspection.js +26 -52
- package/dist/domain/webBundleAnalyzerResult.js +7 -24
- package/dist/domain/webCaptureDiff.js +33 -73
- package/dist/domain/webCaptureDiffSchemas.js +86 -0
- package/dist/domain/webContentArtifact.js +1 -10
- package/dist/domain/webMcpDiscovery.js +3 -14
- package/dist/domain/webScreenshot.js +58 -34
- package/dist/domain/zipPackageFormat.js +7 -0
- package/dist/dotnet/ManagedArtifactInspector.js +17 -50
- package/dist/dotnet/ManagedMemberInspector.js +27 -58
- package/dist/dotnet/ManagedMemberInspectorCore.js +14 -51
- package/dist/dotnet/ManagedMemberInstructionDecoder.js +2 -2
- package/dist/dotnet/ManagedMemberRows.js +16 -16
- package/dist/dotnet/ManagedMetadataHeaps.js +26 -8
- package/dist/dotnet/ManagedMetadataInventory.js +21 -30
- package/dist/dotnet/ManagedMetadataInventoryRows.js +57 -63
- package/dist/dotnet/ManagedMetadataLayout.js +3 -5
- package/dist/dotnet/ManagedMethodBodyReader.js +5 -30
- package/dist/dotnet/ManagedNativeBoundaryHelpers.js +19 -49
- package/dist/dotnet/ManagedNativeBoundaryInspector.js +13 -41
- package/dist/dotnet/ManagedPeReader.js +2 -2
- package/dist/dotnet/ManagedStaticProvider.js +13 -71
- package/dist/generatedMcpToolCatalog.js +1 -1
- package/dist/generatedPackageMetadata.js +1 -1
- package/dist/ghidra/GhidraAnalysisProfile.js +3 -8
- package/dist/ghidra/GhidraClient.js +4 -12
- package/dist/ghidra/GhidraClientWire.js +9 -5
- package/dist/ghidra/GhidraDefaults.js +0 -18
- package/dist/ghidra/GhidraDiagnostics.js +0 -2
- package/dist/ghidra/GhidraDoctor.js +16 -12
- package/dist/ghidra/GhidraFunctionValues.js +65 -108
- package/dist/ghidra/GhidraInstallation.js +98 -42
- package/dist/ghidra/GhidraInventoryValues.js +16 -85
- package/dist/ghidra/GhidraLauncher.js +0 -8
- package/dist/ghidra/GhidraProvider.js +15 -22
- package/dist/ghidra/GhidraProviderCapabilities.js +6 -47
- package/dist/ghidra/GhidraRequestQueue.js +6 -30
- package/dist/ghidra/GhidraResponseBuffer.js +1 -7
- package/dist/ghidra/GhidraSessionValues.js +0 -2
- package/dist/ghidra/GhidraTransport.js +4 -7
- package/dist/ghidra/protocol.js +2 -2
- package/dist/hopper/BridgeLauncher.js +112 -36
- package/dist/hopper/HopperAnalysisProfile.js +1 -1
- package/dist/hopper/HopperCleanup.js +6 -3
- package/dist/hopper/HopperClient.js +4 -7
- package/dist/hopper/HopperProcessDiagnostic.js +2 -2
- package/dist/hopper/HopperProvider.js +0 -16
- package/dist/hopper/HopperRequestQueue.js +21 -40
- package/dist/hopper/HopperResponseStream.js +1 -9
- package/dist/hopper/HopperSessionValues.js +3 -2
- package/dist/hopper/HopperTargetLease.js +119 -0
- package/dist/hopper/LinuxPrivateDisplayDiagnostic.js +24 -31
- package/dist/hopper/LinuxPrivateDisplayProbe.js +5 -16
- package/dist/hopper/protocol.js +6 -4
- package/dist/main/reload.js +0 -3
- package/dist/main/shutdown.js +1 -1
- package/dist/main/state.js +0 -9
- package/dist/main/transport.js +0 -5
- package/dist/mcpDoctor.js +25 -45
- package/dist/native/CommandRunner.js +18 -25
- package/dist/native/NativeMacOSProvider.js +13 -38
- package/dist/native/NativeMachoInspection.js +1 -1
- package/dist/process/BoundedFileBytes.js +17 -0
- package/dist/process/ExecFileOutput.js +11 -0
- package/dist/process/PendingOperations.js +8 -6
- package/dist/process/ProcessOwnership.js +3 -2
- package/dist/process/ProcessOwnershipObservation.js +0 -1
- package/dist/process/ProviderProcess.js +7 -28
- package/dist/reference/ReferenceSourceReader.js +8 -24
- package/dist/reference/ReferenceSourceReaderEntries.js +11 -39
- package/dist/reference/ReferenceSourceReaderFile.js +13 -31
- package/dist/reference/ReferenceSourceReaderPaths.js +3 -18
- package/dist/reference/ReferenceSourceReaderValidate.js +3 -6
- package/dist/replay/JavaScriptReplayWorker.js +3 -5
- package/dist/replay/LinuxJavaScriptReplayRunner.js +33 -29
- package/dist/replay/LinuxJavaScriptReplaySandbox.js +0 -19
- package/dist/replay/LinuxRuntimeClosure.js +1 -3
- package/dist/replay/ReplayOutcome.js +1 -3
- package/dist/replay/ReplayProcessLifecycle.js +32 -7
- package/dist/replay/ReplaySeccompFile.js +29 -0
- package/dist/replay/ReplayWorkerProtocol.js +0 -2
- package/dist/replay/SystemJavaScriptReplayHost.js +45 -74
- package/dist/server/ProcessCaptureElicitation.js +4 -8
- package/dist/server/createServer.js +6 -44
- package/dist/server/promptCompletion.js +37 -61
- package/dist/server/recordDerivedEvidence.js +1 -1
- package/dist/server/registerApplicationTools/characterization.js +4 -8
- package/dist/server/registerApplicationTools/compareExportShapes.js +5 -10
- package/dist/server/registerApplicationTools/compareSourceToBundle.js +6 -10
- package/dist/server/registerApplicationTools/compareVersions.js +5 -10
- package/dist/server/registerApplicationTools/controlledReplay.js +3 -5
- package/dist/server/registerApplicationTools/coverage.js +6 -71
- package/dist/server/registerApplicationTools/helpers.js +1 -13
- package/dist/server/registerApplicationTools/obligationLedger.js +3 -2
- package/dist/server/registerApplicationTools/traceFeature.js +5 -9
- package/dist/server/registerApplicationTools/traceSemantics.js +5 -8
- package/dist/server/registerApplicationTools.js +0 -2
- package/dist/server/registerArtifactComparisonTool.js +23 -27
- package/dist/server/registerBrowserScenarioTool.js +4 -4
- package/dist/server/registerBrowserTools.js +5 -8
- package/dist/server/registerBundleComparisonTool.js +5 -7
- package/dist/server/registerCloseLifecycleTool.js +2 -16
- package/dist/server/registerElectronTools.js +10 -29
- package/dist/server/registerEnhancedTools.js +10 -11
- package/dist/server/registerEvidenceTools.js +15 -22
- package/dist/server/registerFunctionComparisonTool.js +30 -25
- package/dist/server/registerInvestigationTools/helpers.js +3 -32
- package/dist/server/registerInvestigationTools.js +20 -116
- package/dist/server/registerJavaScriptRuntimeObservationTools.js +6 -4
- package/dist/server/registerManagedWorkflowTools/compareManagedMembers.js +15 -17
- package/dist/server/registerManagedWorkflowTools/evidence.js +19 -35
- package/dist/server/registerManagedWorkflowTools/importManagedReconstruction.js +3 -8
- package/dist/server/registerManagedWorkflowTools/planManagedRuntimeCorrelation.js +3 -8
- package/dist/server/registerManagedWorkflowTools/projectManagedApplicationGraph.js +10 -14
- package/dist/server/registerManagedWorkflowTools/verifyManagedNativeBoundaries.js +9 -15
- package/dist/server/registerOfficialTools.js +1 -43
- package/dist/server/registerProcessComparisonTool.js +33 -23
- package/dist/server/registerPrompts.js +19 -17
- package/dist/server/registerSessionRecordTools.js +10 -156
- package/dist/server/registerSessionStatusTool.js +6 -69
- package/dist/server/registerSessionTools.js +10 -51
- package/dist/server/sessionAvailabilityPolicy.js +0 -2
- package/dist/server/sessionEvidence.js +9 -15
- package/dist/server/sessionToolPolicies.js +0 -8
- package/dist/server/toolResult.js +14 -50
- package/dist/serverIdentity.js +0 -20
- package/install.sh +1 -1
- package/package.json +11 -7
- package/scripts/electron-active-hook.cjs +23 -55
- package/scripts/hopper-demo-x11.py +13 -32
- package/skills/reverse-engineer-anything/SKILL.md +47 -12
- package/skills/reverse-engineer-anything/references/evidence-workflows.md +6 -4
- package/skills/reverse-engineer-anything/references/javascript-applications.md +13 -13
- package/skills/reverse-engineer-anything/references/native-and-artifacts.md +12 -8
- package/dist/application/ApplicationWorkflowEvidenceResolver.js +0 -188
- package/dist/application/BoundedJsonFiles.js +0 -86
- package/dist/application/CrossVersionInventory.js +0 -129
- package/dist/application/CrossVersionInvestigation.js +0 -301
- package/dist/application/CrossVersionInvestigationCollections.js +0 -23
- package/dist/application/CrossVersionInvestigationEvidence.js +0 -64
- package/dist/application/CrossVersionInvestigationReplay.js +0 -170
- package/dist/application/DeferredFileAuthorization.js +0 -61
- package/dist/application/DoctorProjection.js +0 -43
- package/dist/application/EnhancedToolPagination.js +0 -22
- package/dist/application/EvidenceReferenceResolver.js +0 -26
- package/dist/application/InvestigationWorkspaceStore.js +0 -204
- package/dist/application/ProcessPairedExperiment.js +0 -72
- package/dist/application/ReconstructionCoverageWorkspaceStore.js +0 -31
- package/dist/application/ReconstructionReadinessService.js +0 -48
- package/dist/cliInvestigationCommands.js +0 -173
- package/dist/domain/boundedCartesianProjection.js +0 -15
- package/dist/domain/investigationWorkspace.js +0 -347
- package/dist/domain/jsonLimits.js +0 -26
- package/dist/domain/knownPageCoverage.js +0 -29
- package/dist/domain/processPairedExperiment.js +0 -128
- package/dist/server/javascriptApplicationResult.js +0 -106
- package/dist/server/permissionFailure.js +0 -12
- package/dist/server/registerApplicationTools/readiness.js +0 -50
- package/dist/server/registerEvidenceResources.js +0 -315
- package/dist/server/registerJavaScriptApplicationGraphResource.js +0 -65
- package/dist/server/registerReconstructionObligationLedgerResource.js +0 -32
- package/dist/server/registerReconstructionReadinessResource.js +0 -32
|
@@ -1,30 +1,13 @@
|
|
|
1
1
|
import { Cli, z } from "incur";
|
|
2
|
+
import { browserContext, browserCliError } from "./cliBrowserContext.js";
|
|
2
3
|
import { analyzeWebBundle, inspectWebPage, listBrowserTargets, observeWebSession, } from "./application/BrowserObservationService.js";
|
|
3
|
-
import { loadConfiguredPermissionAuthority } from "./application/PermissionConfiguration.js";
|
|
4
|
-
import { CdpBrowserProvider } from "./browser/CdpBrowserProvider.js";
|
|
5
4
|
import { logCliCommand } from "./cliLogging.js";
|
|
6
|
-
import { parseConfig } from "./config.js";
|
|
7
5
|
import { inspectWebPageInputSchema, listBrowserTargetsInputSchema, } from "./domain/browserObservation.js";
|
|
8
6
|
import { analyzeWebBundleInputSchema } from "./domain/webBundleAnalysis.js";
|
|
9
7
|
import { observeWebSessionInputSchema } from "./domain/browserSession.js";
|
|
10
|
-
import {
|
|
8
|
+
import { AnalysisInputError } from "./domain/errors.js";
|
|
11
9
|
import { CLI_COMMANDS } from "./cliCommandNames.js";
|
|
12
|
-
import { browserPageInspectionOptions } from "./cliObservationOptions.js";
|
|
13
|
-
const browserScopeOptions = {
|
|
14
|
-
allowedOrigins: z
|
|
15
|
-
.array(z.string().min(1))
|
|
16
|
-
.optional()
|
|
17
|
-
.describe("Exact origins to observe; defaults to REA_BROWSER_ALLOWED_ORIGINS_JSON"),
|
|
18
|
-
approved: z.boolean().default(false).describe("Approve passive observation"),
|
|
19
|
-
};
|
|
20
|
-
const boundedCount = (subject, maximum, fallback, minimum = 1) => z
|
|
21
|
-
.number()
|
|
22
|
-
.int()
|
|
23
|
-
.min(minimum)
|
|
24
|
-
.max(maximum)
|
|
25
|
-
.default(fallback)
|
|
26
|
-
.describe(`Maximum ${subject}`);
|
|
27
|
-
const boundedBytes = (subject, maximum, fallback) => boundedCount(`${subject} in bytes`, maximum, fallback);
|
|
10
|
+
import { browserPageInspectionOptions, browserScopeOptions, observationDuration, } from "./cliObservationOptions.js";
|
|
28
11
|
/** Register CLI equivalents of the passive browser MCP tools. */
|
|
29
12
|
export const registerBrowserCommands = (cli, logger) => {
|
|
30
13
|
registerTargetList(cli, logger);
|
|
@@ -38,16 +21,7 @@ const registerTargetList = (cli, logger) => {
|
|
|
38
21
|
args: z.object({
|
|
39
22
|
endpoint: z.string().describe("Configured loopback CDP HTTP endpoint"),
|
|
40
23
|
}),
|
|
41
|
-
options: z.object({
|
|
42
|
-
...browserScopeOptions,
|
|
43
|
-
offset: z
|
|
44
|
-
.number()
|
|
45
|
-
.int()
|
|
46
|
-
.min(0)
|
|
47
|
-
.default(0)
|
|
48
|
-
.describe("Zero-based browser-target offset"),
|
|
49
|
-
limit: boundedCount("browser targets to return", 200, 100),
|
|
50
|
-
}),
|
|
24
|
+
options: z.object({ ...browserScopeOptions }),
|
|
51
25
|
run: ({ args, options }) => logCliCommand(logger, "list-browser-targets", async () => {
|
|
52
26
|
const context = await browserContext("list_browser_targets");
|
|
53
27
|
if (!context.ok)
|
|
@@ -55,14 +29,11 @@ const registerTargetList = (cli, logger) => {
|
|
|
55
29
|
const parsed = listBrowserTargetsInputSchema.safeParse({
|
|
56
30
|
cdp_endpoint: args.endpoint,
|
|
57
31
|
allowed_origins: options.allowedOrigins ?? context.allowedBrowserOrigins,
|
|
58
|
-
approved: options.approved,
|
|
59
|
-
offset: options.offset,
|
|
60
|
-
limit: options.limit,
|
|
61
32
|
});
|
|
62
33
|
if (!parsed.success)
|
|
63
|
-
return
|
|
34
|
+
return browserCliError(new AnalysisInputError("list_browser_targets"));
|
|
64
35
|
const result = await listBrowserTargets(context.provider, context.authority, parsed.data);
|
|
65
|
-
return result.ok ? result.value :
|
|
36
|
+
return result.ok ? result.value : browserCliError(result.error);
|
|
66
37
|
}),
|
|
67
38
|
});
|
|
68
39
|
};
|
|
@@ -81,49 +52,20 @@ const registerPageInspection = (cli, logger) => {
|
|
|
81
52
|
const parsed = inspectWebPageInputSchema.safeParse({
|
|
82
53
|
cdp_endpoint: args.endpoint,
|
|
83
54
|
allowed_origins: options.allowedOrigins ?? context.allowedBrowserOrigins,
|
|
84
|
-
approved: options.approved,
|
|
85
55
|
target_id: args.targetId,
|
|
86
56
|
observation_ms: options.observationMs,
|
|
87
57
|
include_accessibility_text: options.includeAccessibilityText,
|
|
88
58
|
include_console_text: options.includeConsoleText,
|
|
89
|
-
console_text_approved: options.consoleTextApproved,
|
|
90
59
|
include_json_body_shapes: options.includeJsonBodyShapes,
|
|
91
|
-
json_body_schema_approved: options.jsonBodySchemaApproved,
|
|
92
60
|
include_websocket_shapes: options.includeWebsocketShapes,
|
|
93
|
-
websocket_shape_approved: options.websocketShapeApproved,
|
|
94
61
|
include_script_sources: options.includeScriptSources,
|
|
95
|
-
source_capture_approved: options.sourceCaptureApproved,
|
|
96
62
|
include_storage_keys: options.includeStorageKeys,
|
|
97
63
|
include_storage_fingerprints: options.includeStorageFingerprints,
|
|
98
|
-
limits: {
|
|
99
|
-
max_frames: options.maxFrames,
|
|
100
|
-
max_dom_nodes: options.maxDomNodes,
|
|
101
|
-
max_ax_nodes: options.maxAxNodes,
|
|
102
|
-
max_ax_text_field_bytes: options.maxAxTextFieldBytes,
|
|
103
|
-
max_total_ax_text_bytes: options.maxTotalAxTextBytes,
|
|
104
|
-
max_scripts: options.maxScripts,
|
|
105
|
-
max_resources: options.maxResources,
|
|
106
|
-
max_workers: options.maxWorkers,
|
|
107
|
-
max_storage_keys: options.maxStorageKeys,
|
|
108
|
-
max_script_source_bytes: options.maxScriptSourceBytes,
|
|
109
|
-
max_total_script_source_bytes: options.maxTotalScriptSourceBytes,
|
|
110
|
-
max_network_events: options.maxNetworkEvents,
|
|
111
|
-
max_console_events: options.maxConsoleEvents,
|
|
112
|
-
max_console_text_field_bytes: options.maxConsoleTextFieldBytes,
|
|
113
|
-
max_total_console_text_bytes: options.maxTotalConsoleTextBytes,
|
|
114
|
-
max_json_body_bytes: options.maxJsonBodyBytes,
|
|
115
|
-
max_total_json_body_bytes: options.maxTotalJsonBodyBytes,
|
|
116
|
-
max_json_shape_nodes: options.maxJsonShapeNodes,
|
|
117
|
-
max_json_shape_depth: options.maxJsonShapeDepth,
|
|
118
|
-
max_websocket_events: options.maxWebsocketEvents,
|
|
119
|
-
max_websocket_shape_bytes: options.maxWebsocketShapeBytes,
|
|
120
|
-
max_total_websocket_shape_bytes: options.maxTotalWebsocketShapeBytes,
|
|
121
|
-
},
|
|
122
64
|
});
|
|
123
65
|
if (!parsed.success)
|
|
124
|
-
return
|
|
66
|
+
return browserCliError(new AnalysisInputError("inspect_web_page"));
|
|
125
67
|
const result = await inspectWebPage(context.provider, context.authority, parsed.data);
|
|
126
|
-
return result.ok ? result.value :
|
|
68
|
+
return result.ok ? result.value : browserCliError(result.error);
|
|
127
69
|
}),
|
|
128
70
|
});
|
|
129
71
|
};
|
|
@@ -136,26 +78,11 @@ const registerBundleAnalysis = (cli, logger) => {
|
|
|
136
78
|
}),
|
|
137
79
|
options: z.object({
|
|
138
80
|
...browserScopeOptions,
|
|
139
|
-
|
|
140
|
-
.boolean()
|
|
141
|
-
.default(false)
|
|
142
|
-
.describe("Approve capturing bounded script source text"),
|
|
143
|
-
observationMs: boundedCount("observation duration in milliseconds", 10_000, 500, 0),
|
|
81
|
+
observationMs: observationDuration(500),
|
|
144
82
|
fetchSourceMaps: z
|
|
145
83
|
.boolean()
|
|
146
84
|
.default(false)
|
|
147
85
|
.describe("Fetch source maps referenced by captured scripts"),
|
|
148
|
-
sourceMapFetchApproved: z
|
|
149
|
-
.boolean()
|
|
150
|
-
.default(false)
|
|
151
|
-
.describe("Approve fetching referenced source maps from allowed origins"),
|
|
152
|
-
maxFindings: boundedCount("static-analysis findings", 10_000, 1_000),
|
|
153
|
-
maxAstNodes: boundedCount("JavaScript AST nodes", 2_000_000, 250_000),
|
|
154
|
-
maxSourceMaps: boundedCount("source maps", 1_000, 100),
|
|
155
|
-
maxSourceMapBytes: boundedBytes("one source map", 16 * 1_024 * 1_024, 4 * 1_024 * 1_024),
|
|
156
|
-
maxTotalSourceMapBytes: boundedBytes("total source maps", 64 * 1_024 * 1_024, 16 * 1_024 * 1_024),
|
|
157
|
-
maxSourceMapMappings: boundedCount("decoded source-map mappings", 100_000, 10_000),
|
|
158
|
-
maxOriginalSources: boundedCount("original source files", 20_000, 2_000),
|
|
159
86
|
}),
|
|
160
87
|
run: ({ args, options }) => logCliCommand(logger, "analyze-web-bundle", async () => {
|
|
161
88
|
const context = await browserContext("analyze_web_bundle");
|
|
@@ -164,41 +91,28 @@ const registerBundleAnalysis = (cli, logger) => {
|
|
|
164
91
|
const parsed = analyzeWebBundleInputSchema.safeParse({
|
|
165
92
|
cdp_endpoint: args.endpoint,
|
|
166
93
|
allowed_origins: options.allowedOrigins ?? context.allowedBrowserOrigins,
|
|
167
|
-
approved: options.approved,
|
|
168
94
|
target_id: args.targetId,
|
|
169
95
|
observation_ms: options.observationMs,
|
|
170
96
|
include_script_sources: true,
|
|
171
|
-
source_capture_approved: options.sourceCaptureApproved,
|
|
172
97
|
fetch_source_maps: options.fetchSourceMaps,
|
|
173
|
-
source_map_fetch_approved: options.sourceMapFetchApproved,
|
|
174
|
-
analysis_limits: {
|
|
175
|
-
max_findings: options.maxFindings,
|
|
176
|
-
max_ast_nodes: options.maxAstNodes,
|
|
177
|
-
max_source_maps: options.maxSourceMaps,
|
|
178
|
-
max_source_map_bytes: options.maxSourceMapBytes,
|
|
179
|
-
max_total_source_map_bytes: options.maxTotalSourceMapBytes,
|
|
180
|
-
max_source_map_mappings: options.maxSourceMapMappings,
|
|
181
|
-
max_original_sources: options.maxOriginalSources,
|
|
182
|
-
},
|
|
183
98
|
});
|
|
184
99
|
if (!parsed.success)
|
|
185
|
-
return
|
|
100
|
+
return browserCliError(new AnalysisInputError("analyze_web_bundle"));
|
|
186
101
|
const result = await analyzeWebBundle(context.provider, context.authority, parsed.data);
|
|
187
|
-
return result.ok ? result.value :
|
|
102
|
+
return result.ok ? result.value : browserCliError(result.error);
|
|
188
103
|
}),
|
|
189
104
|
});
|
|
190
105
|
};
|
|
191
106
|
const registerObservationSession = (cli, logger) => {
|
|
192
107
|
cli.command(CLI_COMMANDS.observeWebSession, {
|
|
193
|
-
description: "Observe user-driven page navigation during a
|
|
108
|
+
description: "Observe user-driven page navigation during a chosen window",
|
|
194
109
|
args: z.object({
|
|
195
110
|
endpoint: z.string().describe("Configured loopback CDP HTTP endpoint"),
|
|
196
111
|
targetId: z.string().describe("Target ID from list-browser-targets"),
|
|
197
112
|
}),
|
|
198
113
|
options: z.object({
|
|
199
114
|
...browserScopeOptions,
|
|
200
|
-
observationMs:
|
|
201
|
-
maxTimelineEvents: boundedCount("timeline events", 20_000, 2_000),
|
|
115
|
+
observationMs: observationDuration(10_000, 1),
|
|
202
116
|
}),
|
|
203
117
|
run: ({ args, options }) => logCliCommand(logger, "observe-web-session", async () => {
|
|
204
118
|
const context = await browserContext("observe_web_session");
|
|
@@ -208,38 +122,12 @@ const registerObservationSession = (cli, logger) => {
|
|
|
208
122
|
cdp_endpoint: args.endpoint,
|
|
209
123
|
allowed_origins: options.allowedOrigins ?? context.allowedBrowserOrigins,
|
|
210
124
|
target_id: args.targetId,
|
|
211
|
-
approved: options.approved,
|
|
212
125
|
observation_ms: options.observationMs,
|
|
213
|
-
max_timeline_events: options.maxTimelineEvents,
|
|
214
126
|
});
|
|
215
127
|
if (!parsed.success)
|
|
216
|
-
return
|
|
128
|
+
return browserCliError(new AnalysisInputError("observe_web_session"));
|
|
217
129
|
const result = await observeWebSession(context.provider, context.authority, parsed.data);
|
|
218
|
-
return result.ok ? result.value :
|
|
130
|
+
return result.ok ? result.value : browserCliError(result.error);
|
|
219
131
|
}),
|
|
220
132
|
});
|
|
221
133
|
};
|
|
222
|
-
const browserContext = async (operation) => {
|
|
223
|
-
const config = parseConfig(process.env);
|
|
224
|
-
if (!config.ok)
|
|
225
|
-
return { ok: false, error: cliError(config.error) };
|
|
226
|
-
const policy = config.value.browserObservationPolicy;
|
|
227
|
-
if (policy.status === "disabled")
|
|
228
|
-
return {
|
|
229
|
-
ok: false,
|
|
230
|
-
error: cliError(new AnalysisCapabilityUnavailableError("rea-cdp-browser", operation, "browser observation is disabled; configure exact endpoints and origins before enabling it")),
|
|
231
|
-
};
|
|
232
|
-
const authority = await loadConfiguredPermissionAuthority(config.value);
|
|
233
|
-
if (!authority.ok)
|
|
234
|
-
return { ok: false, error: cliError(authority.error) };
|
|
235
|
-
return {
|
|
236
|
-
ok: true,
|
|
237
|
-
authority: authority.value,
|
|
238
|
-
provider: new CdpBrowserProvider(),
|
|
239
|
-
allowedBrowserOrigins: policy.allowedOrigins,
|
|
240
|
-
};
|
|
241
|
-
};
|
|
242
|
-
const cliError = (error) => ({
|
|
243
|
-
error: "Browser observation failed",
|
|
244
|
-
...projectAnalysisError(error),
|
|
245
|
-
});
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { loadConfiguredPermissionAuthority } from "./application/PermissionConfiguration.js";
|
|
2
|
+
import { CdpBrowserProvider } from "./browser/CdpBrowserProvider.js";
|
|
3
|
+
import { parseConfig } from "./config.js";
|
|
4
|
+
import { AnalysisCapabilityUnavailableError, projectAnalysisError, } from "./domain/errors.js";
|
|
5
|
+
/** Load the configured passive browser authority and provider for one CLI operation. */
|
|
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
|
+
};
|
|
26
|
+
/** Project a browser operation failure consistently across CLI command groups. */
|
|
27
|
+
export const browserCliError = (error) => ({
|
|
28
|
+
error: "Browser observation failed",
|
|
29
|
+
...projectAnalysisError(error),
|
|
30
|
+
});
|
package/dist/cliCommandNames.js
CHANGED
|
@@ -9,6 +9,8 @@ export const CLI_COMMANDS = Object.freeze({
|
|
|
9
9
|
upgrade: "upgrade",
|
|
10
10
|
xrefs: "xrefs",
|
|
11
11
|
trace: "trace",
|
|
12
|
+
traceNativeUiAction: "trace-native-ui-action",
|
|
13
|
+
inspectNativeDispatchMetadata: "inspect-native-dispatch-metadata",
|
|
12
14
|
capabilities: "capabilities",
|
|
13
15
|
providers: "providers",
|
|
14
16
|
function: "function",
|
|
@@ -16,9 +18,9 @@ export const CLI_COMMANDS = Object.freeze({
|
|
|
16
18
|
instructions: "instructions",
|
|
17
19
|
search: "search",
|
|
18
20
|
importReferenceSource: "import-reference-source",
|
|
19
|
-
inventoryArtifact: "inventory-artifact",
|
|
20
21
|
inspectArtifact: "inspect-artifact",
|
|
21
22
|
extractArtifact: "extract-artifact",
|
|
23
|
+
decodeInterfaceBuilder: "decode-interface-builder",
|
|
22
24
|
inspectManagedArtifact: "inspect-managed-artifact",
|
|
23
25
|
inspectManagedMembers: "inspect-managed-members",
|
|
24
26
|
inspectManagedNativeBoundaries: "inspect-managed-native-boundaries",
|
|
@@ -35,7 +37,6 @@ export const CLI_COMMANDS = Object.freeze({
|
|
|
35
37
|
evidenceImport: "evidence-import",
|
|
36
38
|
evidenceExport: "evidence-export",
|
|
37
39
|
compare: "compare",
|
|
38
|
-
investigateVersions: "investigate-versions",
|
|
39
40
|
captureProcess: "capture-process",
|
|
40
41
|
compareProcessCaptures: "compare-process-captures",
|
|
41
42
|
policy: "policy",
|
|
@@ -65,9 +66,7 @@ export const CLI_COMMANDS = Object.freeze({
|
|
|
65
66
|
prepareNodeCharacterization: "prepare-node-characterization",
|
|
66
67
|
executeNodeCharacterization: "execute-node-characterization",
|
|
67
68
|
buildReconstructionObligationLedger: "build-reconstruction-obligation-ledger",
|
|
68
|
-
|
|
69
|
-
commitReconstructionCoverage: "commit-reconstruction-coverage",
|
|
70
|
-
queryReconstructionCoverage: "query-reconstruction-coverage",
|
|
69
|
+
evaluateReconstructionCoverage: "evaluate-reconstruction-coverage",
|
|
71
70
|
});
|
|
72
71
|
/** Ordered primary CLI inventory; aliases are intentionally excluded. */
|
|
73
72
|
export const CLI_COMMAND_NAMES = Object.freeze(Object.values(CLI_COMMANDS));
|
|
@@ -14,13 +14,6 @@ import { CLI_COMMANDS } from "./cliCommandNames.js";
|
|
|
14
14
|
import { parseCliJsonInput } from "./cliJsonInput.js";
|
|
15
15
|
import { electronPageInspectionOptions, javascriptApplicationOptions, } from "./cliObservationOptions.js";
|
|
16
16
|
import { runCliJavaScriptApplicationAnalysis } from "./cli/javascriptApplicationAnalysis.js";
|
|
17
|
-
const scopeOptions = {
|
|
18
|
-
allowedFileRoots: z
|
|
19
|
-
.array(z.string().min(1))
|
|
20
|
-
.optional()
|
|
21
|
-
.describe("Filesystem roots; defaults to REA_ELECTRON_FILE_ROOTS_JSON"),
|
|
22
|
-
approved: z.boolean().default(false).describe("Approve passive observation"),
|
|
23
|
-
};
|
|
24
17
|
/** Register CLI equivalents of the Electron MCP tools. */
|
|
25
18
|
export const registerElectronCommands = (cli, logger) => {
|
|
26
19
|
registerElectronObservationCommands(cli, logger);
|
|
@@ -74,38 +67,16 @@ const registerElectronObservationCommands = (cli, logger) => {
|
|
|
74
67
|
};
|
|
75
68
|
const registerElectronTargetList = (cli, logger) => {
|
|
76
69
|
cli.command(CLI_COMMANDS.listElectronTargets, {
|
|
77
|
-
description: "List
|
|
70
|
+
description: "List local file pages exposed by Electron CDP",
|
|
78
71
|
args: z.object({
|
|
79
|
-
endpoint: z
|
|
80
|
-
.string()
|
|
81
|
-
.describe("Configured loopback Electron CDP endpoint"),
|
|
82
|
-
}),
|
|
83
|
-
options: z.object({
|
|
84
|
-
...scopeOptions,
|
|
85
|
-
offset: z
|
|
86
|
-
.number()
|
|
87
|
-
.int()
|
|
88
|
-
.min(0)
|
|
89
|
-
.default(0)
|
|
90
|
-
.describe("Zero-based Electron-target offset"),
|
|
91
|
-
limit: z
|
|
92
|
-
.number()
|
|
93
|
-
.int()
|
|
94
|
-
.min(1)
|
|
95
|
-
.max(200)
|
|
96
|
-
.default(100)
|
|
97
|
-
.describe("Maximum Electron targets to return"),
|
|
72
|
+
endpoint: z.string().describe("Literal-loopback Electron CDP endpoint"),
|
|
98
73
|
}),
|
|
99
|
-
run: ({ args
|
|
74
|
+
run: ({ args }) => logCliCommand(logger, "list-electron-targets", async () => {
|
|
100
75
|
const context = await electronObservationContext("list_electron_targets");
|
|
101
76
|
if (!context.ok)
|
|
102
77
|
return context.error;
|
|
103
78
|
const parsed = listElectronTargetsInputSchema.safeParse({
|
|
104
79
|
cdp_endpoint: args.endpoint,
|
|
105
|
-
allowed_file_roots: options.allowedFileRoots ?? context.allowedFileRoots,
|
|
106
|
-
approved: options.approved,
|
|
107
|
-
offset: options.offset,
|
|
108
|
-
limit: options.limit,
|
|
109
80
|
});
|
|
110
81
|
if (!parsed.success)
|
|
111
82
|
return inputError("list_electron_targets");
|
|
@@ -116,11 +87,9 @@ const registerElectronTargetList = (cli, logger) => {
|
|
|
116
87
|
};
|
|
117
88
|
const registerElectronPageInspection = (cli, logger) => {
|
|
118
89
|
cli.command(CLI_COMMANDS.inspectElectronPage, {
|
|
119
|
-
description: "Passively inspect one
|
|
90
|
+
description: "Passively inspect one Electron file page",
|
|
120
91
|
args: z.object({
|
|
121
|
-
endpoint: z
|
|
122
|
-
.string()
|
|
123
|
-
.describe("Configured loopback Electron CDP endpoint"),
|
|
92
|
+
endpoint: z.string().describe("Literal-loopback Electron CDP endpoint"),
|
|
124
93
|
targetId: z.string().describe("Target ID from list-electron-targets"),
|
|
125
94
|
}),
|
|
126
95
|
options: electronPageInspectionOptions,
|
|
@@ -130,21 +99,9 @@ const registerElectronPageInspection = (cli, logger) => {
|
|
|
130
99
|
return context.error;
|
|
131
100
|
const parsed = inspectElectronPageInputSchema.safeParse({
|
|
132
101
|
cdp_endpoint: args.endpoint,
|
|
133
|
-
allowed_file_roots: options.allowedFileRoots ?? context.allowedFileRoots,
|
|
134
102
|
target_id: args.targetId,
|
|
135
|
-
approved: options.approved,
|
|
136
103
|
observation_ms: options.observationMs,
|
|
137
104
|
include_script_sources: options.includeScriptSources,
|
|
138
|
-
source_capture_approved: options.sourceCaptureApproved,
|
|
139
|
-
limits: {
|
|
140
|
-
max_frames: options.maxFrames,
|
|
141
|
-
max_dom_nodes: options.maxDomNodes,
|
|
142
|
-
max_scripts: options.maxScripts,
|
|
143
|
-
max_resources: options.maxResources,
|
|
144
|
-
max_workers: options.maxWorkers,
|
|
145
|
-
max_script_source_bytes: options.maxScriptSourceBytes,
|
|
146
|
-
max_total_script_source_bytes: options.maxTotalScriptSourceBytes,
|
|
147
|
-
},
|
|
148
105
|
});
|
|
149
106
|
if (!parsed.success)
|
|
150
107
|
return inputError("inspect_electron_page");
|
|
@@ -155,32 +112,14 @@ const registerElectronPageInspection = (cli, logger) => {
|
|
|
155
112
|
};
|
|
156
113
|
const registerJavaScriptApplicationCommand = (cli, logger) => {
|
|
157
114
|
cli.command(CLI_COMMANDS.analyzeJavaScriptApplication, {
|
|
158
|
-
description: "Statically reconstruct
|
|
115
|
+
description: "Statically reconstruct a local JavaScript/Electron application",
|
|
159
116
|
args: z.object({
|
|
160
117
|
path: z.string().describe("Absolute ASAR or extracted application path"),
|
|
161
118
|
}),
|
|
162
119
|
options: javascriptApplicationOptions,
|
|
163
120
|
run: ({ args, options }) => logCliCommand(logger, CLI_COMMANDS.analyzeJavaScriptApplication, () => runCliJavaScriptApplicationAnalysis({
|
|
164
121
|
input_path: args.path,
|
|
165
|
-
approved: options.approved,
|
|
166
122
|
format: options.artifactFormat,
|
|
167
|
-
source_map_read_approved: options.sourceMapReadApproved,
|
|
168
|
-
limits: {
|
|
169
|
-
max_entries: options.maxEntries,
|
|
170
|
-
max_total_artifact_bytes: options.maxTotalArtifactBytes,
|
|
171
|
-
max_artifact_entry_bytes: options.maxArtifactEntryBytes,
|
|
172
|
-
max_compression_ratio: options.maxCompressionRatio,
|
|
173
|
-
max_depth: options.maxDepth,
|
|
174
|
-
max_path_bytes: options.maxPathBytes,
|
|
175
|
-
max_text_files: options.maxTextFiles,
|
|
176
|
-
max_total_text_bytes: options.maxTotalTextBytes,
|
|
177
|
-
max_text_file_bytes: options.maxTextFileBytes,
|
|
178
|
-
max_ast_nodes: options.maxAstNodes,
|
|
179
|
-
max_findings: options.maxFindings,
|
|
180
|
-
max_modules: options.maxModules,
|
|
181
|
-
max_source_map_sources: options.maxSourceMapSources,
|
|
182
|
-
max_parse_milliseconds: options.maxParseMilliseconds,
|
|
183
|
-
},
|
|
184
123
|
})),
|
|
185
124
|
});
|
|
186
125
|
};
|
|
@@ -206,12 +145,9 @@ const electronObservationContext = async (operation) => {
|
|
|
206
145
|
if (context.observationPolicy.status === "disabled")
|
|
207
146
|
return {
|
|
208
147
|
ok: false,
|
|
209
|
-
error: cliError(new AnalysisCapabilityUnavailableError("rea-cdp-electron", operation, "Electron observation is disabled;
|
|
148
|
+
error: cliError(new AnalysisCapabilityUnavailableError("rea-cdp-electron", operation, "Electron observation is disabled; enable REA_ELECTRON_OBSERVE_ENABLED to authorize loopback endpoints")),
|
|
210
149
|
};
|
|
211
|
-
return
|
|
212
|
-
...context,
|
|
213
|
-
allowedFileRoots: context.observationPolicy.fileRoots,
|
|
214
|
-
};
|
|
150
|
+
return context;
|
|
215
151
|
};
|
|
216
152
|
const inputError = (operation) => cliError(new AnalysisInputError(operation));
|
|
217
153
|
const cliError = (error) => ({
|
|
@@ -1,32 +1,22 @@
|
|
|
1
1
|
import { Cli, z } from "incur";
|
|
2
2
|
import { compareEvidenceBundlesCommand, exportEvidenceBundleCommand, importEvidenceBundleCommand, } from "./application/EvidenceBundleCommands.js";
|
|
3
|
-
import { parseConfig } from "./config.js";
|
|
4
3
|
import { logCliCommand } from "./cliLogging.js";
|
|
5
4
|
import { CLI_COMMANDS } from "./cliCommandNames.js";
|
|
6
|
-
import {
|
|
7
|
-
|
|
8
|
-
/** Register filesystem-gated Evidence v2 commands. */
|
|
5
|
+
import { projectAnalysisError } from "./domain/errors.js";
|
|
6
|
+
/** Register caller-path Evidence commands. */
|
|
9
7
|
export const registerEvidenceCommands = (cli, logger) => {
|
|
10
8
|
cli.command(CLI_COMMANDS.evidenceImport, {
|
|
11
|
-
description: "Validate and import a bounded local Evidence
|
|
9
|
+
description: "Validate and import a bounded local Evidence bundle",
|
|
12
10
|
args: z.object({
|
|
13
11
|
path: z.string().describe("Evidence bundle JSON path"),
|
|
14
12
|
}),
|
|
15
13
|
run: ({ args }) => logCliCommand(logger, "evidence-import", async () => {
|
|
16
|
-
const
|
|
17
|
-
if (!config.ok)
|
|
18
|
-
return cliError(config.error);
|
|
19
|
-
const denied = await authorizeEvidence(config.value, [
|
|
20
|
-
{ capability: "evidence_read", path: args.path, access: "read" },
|
|
21
|
-
]);
|
|
22
|
-
if (denied !== undefined)
|
|
23
|
-
return cliError(denied);
|
|
24
|
-
const imported = await importEvidenceBundleCommand(args.path, config.value.evidenceFilePolicy);
|
|
14
|
+
const imported = await importEvidenceBundleCommand(args.path);
|
|
25
15
|
return imported.ok ? imported.value : cliError(imported.error);
|
|
26
16
|
}),
|
|
27
17
|
});
|
|
28
18
|
cli.command(CLI_COMMANDS.evidenceExport, {
|
|
29
|
-
description: "Validate and atomically export canonical Evidence
|
|
19
|
+
description: "Validate and atomically export canonical Evidence JSON",
|
|
30
20
|
args: z.object({
|
|
31
21
|
source: z.string().describe("Existing evidence bundle JSON path"),
|
|
32
22
|
output: z.string().describe("Canonical output JSON path"),
|
|
@@ -35,85 +25,26 @@ export const registerEvidenceCommands = (cli, logger) => {
|
|
|
35
25
|
overwrite: z.boolean().default(false).describe("Replace output file"),
|
|
36
26
|
}),
|
|
37
27
|
run: ({ args, options }) => logCliCommand(logger, "evidence-export", async () => {
|
|
38
|
-
const
|
|
39
|
-
if (!config.ok)
|
|
40
|
-
return cliError(config.error);
|
|
41
|
-
const denied = await authorizeEvidence(config.value, [
|
|
42
|
-
{ capability: "evidence_read", path: args.source, access: "read" },
|
|
43
|
-
{ capability: "evidence_write", path: args.output, access: "write" },
|
|
44
|
-
]);
|
|
45
|
-
if (denied !== undefined)
|
|
46
|
-
return cliError(denied);
|
|
47
|
-
const exported = await exportEvidenceBundleCommand(args.source, args.output, options.overwrite, config.value.evidenceFilePolicy);
|
|
28
|
+
const exported = await exportEvidenceBundleCommand(args.source, args.output, options.overwrite);
|
|
48
29
|
return exported.ok ? exported.value : cliError(exported.error);
|
|
49
30
|
}),
|
|
50
31
|
});
|
|
51
32
|
cli.command(CLI_COMMANDS.compare, {
|
|
52
33
|
aliases: ["compare-bundles"],
|
|
53
|
-
description: "Compare two canonical Evidence
|
|
34
|
+
description: "Compare two canonical Evidence bundles",
|
|
54
35
|
args: z.object({
|
|
55
36
|
left: z.string().describe("Left Evidence bundle JSON path"),
|
|
56
37
|
right: z.string().describe("Right Evidence bundle JSON path"),
|
|
57
38
|
}),
|
|
58
|
-
|
|
59
|
-
offset: z
|
|
60
|
-
.number()
|
|
61
|
-
.int()
|
|
62
|
-
.min(0)
|
|
63
|
-
.default(0)
|
|
64
|
-
.describe("Zero-based changed-record offset"),
|
|
65
|
-
limit: z
|
|
66
|
-
.number()
|
|
67
|
-
.int()
|
|
68
|
-
.min(1)
|
|
69
|
-
.max(500)
|
|
70
|
-
.default(100)
|
|
71
|
-
.describe("Maximum changed records to return"),
|
|
72
|
-
}),
|
|
73
|
-
run: ({ args, options }) => logCliCommand(logger, "compare", async () => {
|
|
74
|
-
const config = parseConfig(process.env);
|
|
75
|
-
if (!config.ok)
|
|
76
|
-
return cliError(config.error);
|
|
77
|
-
const denied = await authorizeEvidence(config.value, [
|
|
78
|
-
{ capability: "evidence_read", path: args.left, access: "read" },
|
|
79
|
-
{ capability: "evidence_read", path: args.right, access: "read" },
|
|
80
|
-
]);
|
|
81
|
-
if (denied !== undefined)
|
|
82
|
-
return cliError(denied);
|
|
39
|
+
run: ({ args }) => logCliCommand(logger, "compare", async () => {
|
|
83
40
|
const compared = await compareEvidenceBundlesCommand({
|
|
84
41
|
leftPath: args.left,
|
|
85
42
|
rightPath: args.right,
|
|
86
|
-
offset: options.offset,
|
|
87
|
-
limit: options.limit,
|
|
88
|
-
policy: config.value.evidenceFilePolicy,
|
|
89
43
|
});
|
|
90
44
|
return compared.ok ? compared.value : cliError(compared.error);
|
|
91
45
|
}),
|
|
92
46
|
});
|
|
93
47
|
};
|
|
94
|
-
const authorizeEvidence = async (config, requests) => {
|
|
95
|
-
const authority = await loadConfiguredPermissionAuthority(config);
|
|
96
|
-
if (!authority.ok)
|
|
97
|
-
return authority.error;
|
|
98
|
-
for (const request of requests) {
|
|
99
|
-
const result = await authority.value.authorize({
|
|
100
|
-
capability: request.capability,
|
|
101
|
-
roots: [request.path],
|
|
102
|
-
executables: [],
|
|
103
|
-
environment_names: [],
|
|
104
|
-
network: "none",
|
|
105
|
-
mount: false,
|
|
106
|
-
operation_identity: `cli:${request.capability}:${request.path}`,
|
|
107
|
-
}, request.access);
|
|
108
|
-
if (!result.ok)
|
|
109
|
-
return result.error instanceof PermissionRequiredError
|
|
110
|
-
? result.error
|
|
111
|
-
: new AnalysisProtocolError(result.error.message, {
|
|
112
|
-
cause: result.error,
|
|
113
|
-
});
|
|
114
|
-
}
|
|
115
|
-
return undefined;
|
|
116
|
-
};
|
|
117
48
|
const cliError = (error) => ({
|
|
118
49
|
error: "Analysis failed",
|
|
119
50
|
...projectAnalysisError(error),
|