rea-agents 6.0.0 → 6.2.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 +26 -18
- package/bridge/android/ReaJadxBridge.java +14 -5
- package/bridge/ghidra/ReaGhidraBridge.java +205 -51
- package/bridge/hopper_bridge.py +314 -127
- package/bridge/mitmproxy/capture.py +0 -2
- package/bridge/native/rea_lldb_tracer.py +630 -94
- package/bridge/process/ProcessRunTokenReader.swift +39 -5
- package/bridge/pwntools/recorded_crash_impl.py +4 -0
- package/dist/android/JadxConfiguration.js +274 -31
- package/dist/android/JadxMcpTransport.js +18 -2
- package/dist/android/JadxProtocol.js +6 -0
- package/dist/android/JadxProvider.js +76 -37
- package/dist/android/JadxSession.js +23 -4
- package/dist/application/AnalysisContextQueries.js +8 -35
- package/dist/application/AnalysisDocument.js +32 -0
- package/dist/application/AppBundleExecutable.js +67 -21
- package/dist/application/BinaryTargetResolver.js +5 -3
- package/dist/application/BrowserEvidence.js +3 -8
- package/dist/application/BrowserScenarioEvidence.js +2 -18
- package/dist/application/CallPathTracing.js +19 -3
- package/dist/application/CapabilityInventory.js +48 -11
- package/dist/application/ClientConfigurationDocument.js +917 -8
- package/dist/application/ClientRegistrationIdentity.js +26 -5
- package/dist/application/ClientRegistrationStatus.js +29 -14
- package/dist/application/DirectAnalysis.js +56 -51
- package/dist/application/DirectAnalysisCleanup.js +72 -0
- package/dist/application/DirectAnalysisStatus.js +4 -5
- package/dist/application/Doctor.js +19 -21
- package/dist/application/DoctorDiagnostics.js +1 -2
- package/dist/application/DoctorScope.js +25 -13
- package/dist/application/EnhancedLiteralTracing.js +22 -25
- package/dist/application/EnhancedTools.js +64 -17
- package/dist/application/EvidenceBundleFiles.js +30 -13
- package/dist/application/FunctionAnalysisEvidence.js +2 -3
- package/dist/application/InventoryProjectionEvidence.js +4 -3
- package/dist/application/InvestigationProviders.js +11 -2
- package/dist/application/JsonFiles.js +83 -28
- package/dist/application/LinuxHopper.js +9 -6
- package/dist/application/MacHopper.js +15 -18
- package/dist/application/ProcedureAddressResolution.js +11 -0
- package/dist/application/RealHopperAssertions.js +0 -11
- package/dist/application/ReconstructionCoverageService.js +7 -4
- package/dist/application/ReconstructionObligationCandidates.js +1 -1
- package/dist/application/ReconstructionObligationLedgerService.js +4 -3
- package/dist/application/ReferenceSourceImportEntries.js +1 -1
- package/dist/application/Setup.js +21 -17
- package/dist/application/SetupClientConfiguration.js +10 -15
- package/dist/application/SetupHost.js +21 -29
- package/dist/application/SetupPlan.js +11 -9
- package/dist/application/SupportedClients.js +34 -1
- package/dist/application/Uninstall.js +82 -29
- package/dist/application/Update.js +18 -3
- package/dist/application/UpdateMaintenance.js +7 -5
- package/dist/application/UpdateRuntime.js +57 -36
- package/dist/application/WebModuleTraceService.js +4 -2
- package/dist/application/WebNetworkCaptureService.js +4 -2
- package/dist/application/WebRuntimeService.js +5 -3
- package/dist/application/WebScriptExportService.js +32 -6
- package/dist/application/WebSourceLocationService.js +4 -2
- package/dist/application/WorkflowEvidence.js +105 -0
- package/dist/application/XrefsAddressResolution.js +45 -0
- package/dist/application/analysisView/AnalysisViewService.js +76 -0
- package/dist/application/binary/AnalysisClientCleanup.js +30 -5
- package/dist/application/binary/AnalysisProviderEvaluation.js +22 -7
- package/dist/application/binary/AnalysisProviderRegistry.js +4 -6
- package/dist/application/binary/AnalysisSnapshotCache.js +13 -14
- package/dist/application/binary/BinarySession.js +161 -93
- package/dist/application/binary/BinarySessionComposition.js +1 -3
- package/dist/application/binary/BinarySessionExecution.js +3 -5
- package/dist/application/binary/BinarySessionOpen.js +4 -4
- package/dist/application/binary/BinarySessionRecords.js +26 -4
- package/dist/application/binary/BinarySessionStatus.js +18 -7
- package/dist/application/binary/CompositeProvider.js +16 -17
- package/dist/application/binary/LazyAnalysisProvider.js +8 -5
- package/dist/application/binary/SessionProviderRouter.js +27 -135
- package/dist/application/binaryDiagnostics/BinaryLayoutService.js +4 -2
- package/dist/application/binaryDiagnostics/RecordedCrashService.js +4 -2
- package/dist/application/evm/EvmInterfaceService.js +4 -2
- package/dist/application/homebrew.js +48 -0
- package/dist/application/investigation/EvidenceLedger.js +21 -7
- package/dist/application/investigation/InvestigationRecords.js +8 -0
- package/dist/application/javascript/ElectronActiveEvidence.js +9 -13
- package/dist/application/javascript/JavaScriptAnalysisControl.js +34 -0
- package/dist/application/javascript/JavaScriptApplicationEvidence.js +21 -4
- package/dist/application/javascript/JavaScriptApplicationEvidenceGraph.js +19 -2
- package/dist/application/javascript/JavaScriptApplicationService.js +27 -15
- package/dist/application/javascript/JavaScriptApplicationWorkflowService.js +5 -5
- package/dist/application/javascript/JavaScriptArtifactAnalysis.js +10 -7
- package/dist/application/javascript/JavaScriptArtifactGraphBuilder.js +44 -10
- package/dist/application/javascript/JavaScriptArtifactGraphBundlers.js +11 -3
- package/dist/application/javascript/JavaScriptArtifactGraphContext.js +9 -0
- package/dist/application/javascript/JavaScriptArtifactGraphDocuments.js +8 -5
- package/dist/application/javascript/JavaScriptArtifactGraphFindings.js +12 -3
- package/dist/application/javascript/JavaScriptArtifactGraphStructure.js +0 -1
- package/dist/application/javascript/JavaScriptArtifactPathResolution.js +49 -19
- package/dist/application/javascript/JavaScriptArtifactReconstruction.js +56 -8
- package/dist/application/javascript/JavaScriptModuleRelationships.js +38 -9
- package/dist/application/javascript/JavaScriptRecoveryService.js +4 -2
- package/dist/application/javascript/JavaScriptRuntimeObservationService.js +6 -4
- package/dist/application/javascript/JavaScriptRuntimeReconciliationService.js +3 -3
- package/dist/application/javascript/JavaScriptSemanticGraphAsyncProjection.js +2 -3
- package/dist/application/javascript/JavaScriptSemanticGraphBuilder.js +63 -61
- package/dist/application/javascript/JavaScriptSemanticGraphChildProcessProjection.js +1 -2
- package/dist/application/javascript/JavaScriptSemanticGraphDataProjection.js +2 -3
- package/dist/application/javascript/JavaScriptSemanticGraphFlowProjection.js +1 -5
- package/dist/application/javascript/JavaScriptSemanticGraphObjectProjection.js +75 -46
- package/dist/application/javascript/JavaScriptSemanticGraphResourceProjection.js +2 -3
- package/dist/application/javascript/JavaScriptSemanticGraphValueProjection.js +64 -19
- package/dist/application/managed/ManagedApplicationGraphService.js +4 -3
- package/dist/application/managed/ManagedMemberComparisonService.js +9 -5
- package/dist/application/managed/ManagedNativeVerificationService.js +6 -4
- package/dist/application/managed/ManagedReconstructionService.js +4 -3
- package/dist/application/process/ProcessCli.js +25 -17
- package/dist/application/process/ProcessEvidence.js +4 -4
- package/dist/application/workflowInputError.js +18 -0
- package/dist/artifacts/ArtifactProvider.js +48 -13
- package/dist/artifacts/ArtifactReader.js +31 -0
- package/dist/artifacts/DirectoryArtifactReader.js +2 -1
- package/dist/artifacts/MachOSliceArtifactReader.js +106 -15
- package/dist/artifacts/NativeDmgArtifactReader.js +73 -21
- package/dist/artifacts/SafeOutputTree.js +16 -2
- package/dist/artifacts/ZipArtifactReader.js +11 -4
- package/dist/artifacts/apple/AppleAssetCatalogAnalysis.js +26 -5
- package/dist/artifacts/apple/DylibResolutionReader.js +17 -7
- package/dist/artifacts/apple/InterfaceBuilderAnalysis.js +176 -56
- package/dist/artifacts/apple/InterfaceBuilderDecodeBudget.js +195 -0
- package/dist/artifacts/apple/KeyedArchiveReader.js +55 -23
- package/dist/artifacts/apple/MachoLoadCommandReader.js +92 -31
- package/dist/artifacts/apple/NibArchive.js +81 -14
- package/dist/artifacts/apple/NibViewHierarchy.js +10 -3
- package/dist/artifacts/apple/PlistNumberLiterals.js +164 -0
- package/dist/artifacts/extraction/ArtifactExtraction.js +78 -21
- package/dist/artifacts/inventory/ArtifactGraphConstruction.js +79 -68
- package/dist/artifacts/inventory/ArtifactInventory.js +0 -1
- package/dist/artifacts/inventory/reader.js +3 -3
- package/dist/artifacts/inventory/scanCanonical.js +59 -38
- package/dist/artifacts/inventory/scanReader.js +5 -9
- package/dist/artifacts/javascript/JavaScriptArtifactFiles.js +6 -2
- package/dist/browser/BrowserScenarioPartialObservation.js +106 -0
- package/dist/browser/CdpBrowserProvider.js +2 -3
- package/dist/browser/CdpCaptureCompleteness.js +2 -0
- package/dist/browser/CdpCaptureEventHandlers.js +78 -15
- package/dist/browser/CdpCaptureEventTypes.js +5 -1
- package/dist/browser/CdpCaptureEvents.js +25 -1
- package/dist/browser/CdpCaptureValues.js +20 -0
- package/dist/browser/CdpConnection.js +30 -11
- package/dist/browser/CdpElectronProvider.js +0 -2
- package/dist/browser/CdpElectronScriptEvents.js +2 -8
- package/dist/browser/CdpElectronScripts.js +2 -3
- package/dist/browser/CdpOptionalCommand.js +2 -3
- package/dist/browser/CdpPageCapture.js +23 -1
- package/dist/browser/CdpPageCaptureScripts.js +2 -3
- package/dist/browser/CdpSafeMetadata.js +10 -10
- package/dist/browser/PlaywrightBrowserScenarioProvider.js +59 -44
- package/dist/browser/PlaywrightElectronActiveActions.js +34 -79
- package/dist/browser/PlaywrightElectronActiveProjection.js +141 -0
- package/dist/browser/PlaywrightElectronActiveProvider.js +133 -130
- package/dist/browser/PlaywrightScenarioArtifacts.js +1 -1
- package/dist/browser/PlaywrightScenarioBrowser.js +139 -39
- package/dist/browser/PlaywrightScenarioEvents.js +1 -1
- package/dist/browser/PlaywrightScenarioSession.js +39 -22
- package/dist/browser/WebSourceMapFetcher.js +426 -72
- package/dist/browser/assets/LocalWebScriptArtifacts.js +2 -2
- package/dist/browser/assets/ScriptCaptureAdapters.js +1 -1
- package/dist/browser/history/CaptureFailures.js +41 -1
- package/dist/browser/history/CaptureRelease.js +5 -0
- package/dist/browser/history/HarCaptureAdapter.js +3 -3
- package/dist/browser/history/HarJson.js +3 -2
- package/dist/browser/history/HistoricalCaptureDecoder.js +4 -2
- package/dist/browser/history/MitmproxyCaptureAdapter.js +4 -2
- package/dist/catalogIdentity.js +0 -1
- package/dist/cli/analysisSelector.js +23 -0
- package/dist/cli/analysisViewCommands.js +36 -0
- package/dist/cli/applicationCommands.js +2 -3
- package/dist/cli/artifactCommands.js +11 -12
- package/dist/cli/coreAnalysisCommands.js +3 -3
- package/dist/cli/coreBinaryCommands.js +100 -37
- package/dist/cli/coreNativeCommands.js +9 -10
- package/dist/cli/electronCommands.js +10 -9
- package/dist/cli/interactiveSetup.js +6 -6
- package/dist/cli/javascriptApplicationAnalysis.js +7 -3
- package/dist/cli/jsonOutput.js +4 -99
- package/dist/cli/managedCommands.js +7 -8
- package/dist/cli/nativeCallCommands.js +3 -5
- package/dist/cli/omittableDefaults.js +50 -0
- package/dist/cli/processCommands.js +3 -2
- package/dist/cli/setupCommands.js +16 -15
- package/dist/cli/utilityCommands.js +9 -9
- package/dist/cli/webRuntimeCommands.js +8 -8
- package/dist/cli.js +18 -9
- package/dist/cliBrowserScenarioCommands.js +2 -2
- package/dist/cliCommandNames.js +1 -1
- package/dist/cliJsonInput.js +24 -5
- package/dist/cliOutput.js +0 -38
- package/dist/composition/auxiliaryAnalysisProviders.js +27 -23
- package/dist/composition/binary.js +9 -9
- package/dist/composition/browserScenario.js +2 -1
- package/dist/composition/directAnalysis.js +20 -13
- package/dist/composition/electronScenario.js +1 -1
- package/dist/composition/optionalObservationProviders.js +12 -7
- package/dist/config/environment.js +10 -0
- package/dist/config/ghidraStartupTimeout.js +12 -0
- package/dist/config/homeDirectory.js +12 -0
- package/dist/config/mcpResponseBudget.js +30 -0
- package/dist/config/parseConfig.js +8 -3
- package/dist/config/parsers.js +19 -22
- package/dist/contracts/analysisViewToolContracts.js +56 -0
- package/dist/contracts/applicationToolContracts.js +5 -4
- package/dist/contracts/artifactComparisonExample.js +2 -2
- package/dist/contracts/artifactToolContracts.js +1 -1
- package/dist/contracts/browserScenarioToolContracts.js +1 -1
- package/dist/contracts/browserToolContracts.js +19 -15
- package/dist/contracts/enhancedInputs.js +7 -5
- package/dist/contracts/enhancedToolContracts.js +7 -6
- package/dist/contracts/evm/evmToolContracts.js +1 -1
- package/dist/contracts/functionWorkflowToolContracts.js +1 -1
- package/dist/contracts/hopperMemoryContracts.js +2 -5
- package/dist/contracts/inputSchemaPresentation.js +90 -0
- package/dist/contracts/investigationExamples.js +4 -3
- package/dist/contracts/javascript/electronToolContracts.js +2 -2
- package/dist/contracts/javascript/javascriptApplicationWorkflowExamples.js +0 -20
- package/dist/contracts/javascript/javascriptExportShapeComparisonExample.js +245 -0
- package/dist/contracts/javascript/javascriptRuntimeObservationToolContracts.js +1 -1
- package/dist/contracts/managed/managedToolContracts.js +7 -14
- package/dist/contracts/managed/managedWorkflowToolContracts.js +1 -1
- package/dist/contracts/mobileApplicationGraphExamples.js +3 -3
- package/dist/contracts/native/binaryDiagnosticsToolContracts.js +1 -1
- package/dist/contracts/native/nativeToolContracts.js +5 -3
- package/dist/contracts/officialToolContracts.js +16 -16
- package/dist/contracts/promptContracts.js +5 -5
- package/dist/contracts/providerSelection.js +1 -1
- package/dist/contracts/sessionLifecycleInputs.js +3 -7
- package/dist/contracts/sessionStatusContract.js +2 -4
- package/dist/contracts/sessionToolContracts.js +18 -8
- package/dist/contracts/sessionToolSchemas.js +3 -19
- package/dist/contracts/toolContractExamples.js +0 -1
- package/dist/contracts/toolContractHelpers.js +4 -1
- package/dist/contracts/toolContracts.js +2 -0
- package/dist/contracts/toolEffects.js +1 -1
- package/dist/contracts/toolOutputSchemaGroups.js +160 -115
- package/dist/contracts/toolOutputSchemaPrimitives.js +28 -20
- package/dist/contracts/toolSchemaMetadata.js +41 -33
- package/dist/contracts/webNetworkCaptureToolContracts.js +2 -2
- package/dist/contracts/webRuntimeToolContracts.js +1 -1
- package/dist/contracts/webScriptToolContracts.js +1 -1
- package/dist/doctorRuntime.js +7 -5
- package/dist/domain/analysisErrorBase.js +8 -3
- package/dist/domain/analysisErrorCore.js +6 -1
- package/dist/domain/analysisErrorPresentation.js +90 -20
- package/dist/domain/analysisErrorProjection.js +130 -32
- package/dist/domain/analysisSnapshot.js +29 -31
- package/dist/domain/analysisView/analysisView.js +243 -0
- package/dist/domain/analysisView/analysisViewCoverage.js +19 -0
- package/dist/domain/analysisView/binaryLayoutView.js +159 -0
- package/dist/domain/analysisView/javascriptApplicationView.js +238 -0
- package/dist/domain/android/androidAnalysis.js +2 -4
- package/dist/domain/android/androidApplication.js +18 -10
- package/dist/domain/apple/appleApplication.js +42 -15
- package/dist/domain/apple/dyldEnvironment.js +73 -0
- package/dist/domain/apple/dylibResolution.js +130 -12
- package/dist/domain/apple/dylibResolutionFindings.js +9 -7
- package/dist/domain/apple/interfaceBuilderGraph.js +25 -14
- package/dist/domain/apple/interfaceBuilderKeyedArchive.js +13 -3
- package/dist/domain/apple/keyedArchive.js +35 -3
- package/dist/domain/apple/machoContainer.js +54 -0
- package/dist/domain/apple/plistNumbers.js +76 -0
- package/dist/domain/artifactComparison.js +15 -6
- package/dist/domain/artifactGraph.js +16 -3
- package/dist/domain/artifactIdentity.js +29 -0
- package/dist/domain/artifactInventoryEvidence.js +28 -40
- package/dist/domain/artifactOperationError.js +3 -3
- package/dist/domain/artifactPartialObservation.js +1 -0
- package/dist/domain/artifactPathSyntax.js +49 -0
- package/dist/domain/binaryTarget.js +39 -13
- package/dist/domain/bridgeCandidateProjection.js +71 -0
- package/dist/domain/browserCaptureComparison.js +13 -49
- package/dist/domain/browserCompleteness.js +1 -0
- package/dist/domain/browserNetworkEvidence.js +10 -4
- package/dist/domain/browserObservation.js +0 -1
- package/dist/domain/browserObservationError.js +24 -5
- package/dist/domain/browserObservationSchemas.js +14 -3
- package/dist/domain/browserScenario.js +0 -1
- package/dist/domain/browserScenarioCapture.js +1 -2
- package/dist/domain/browserScenarioDiff.js +0 -2
- package/dist/domain/browserScenarioDiffEvidence.js +0 -12
- package/dist/domain/browserScenarioDiffValues.js +2 -2
- package/dist/domain/browserScenarioValues.js +5 -10
- package/dist/domain/bundleComparison.js +3 -2
- package/dist/domain/callPath.js +8 -9
- package/dist/domain/callPathSchemas.js +2 -2
- package/dist/domain/canonicalJsonDigestSteps.js +133 -0
- package/dist/domain/canonicalOrdering.js +9 -5
- package/dist/domain/changedBehavior.js +9 -9
- package/dist/domain/comparisonSourceEvidence.js +40 -0
- package/dist/domain/completionLedgerGeneration.js +2 -1
- package/dist/domain/configurationErrors.js +13 -1
- package/dist/domain/conformancePackage.js +4 -3
- package/dist/domain/evidence.js +65 -36
- package/dist/domain/evidenceBundle.js +47 -8
- package/dist/domain/evidenceCompletionLedger.js +2 -1
- package/dist/domain/evidenceErrors.js +12 -1
- package/dist/domain/explicitSensitiveFailure.js +17 -1
- package/dist/domain/firmware/firmwareAnalysis.js +6 -7
- package/dist/domain/functionComparison.js +4 -5
- package/dist/domain/functionComparisonDimensions.js +120 -87
- package/dist/domain/functionComparisonNormalization.js +23 -34
- package/dist/domain/functionComparisonResults.js +1 -4
- package/dist/domain/functionComparisonSchemas.js +2 -8
- package/dist/domain/functionDossierEvidence.js +2 -37
- package/dist/domain/hopperErrors.js +23 -2
- package/dist/domain/hopperValues.js +51 -8
- package/dist/domain/immutableJson.js +114 -0
- package/dist/domain/inputIssueProjection.js +3 -0
- package/dist/domain/javascript/electronActiveObservation.js +47 -64
- package/dist/domain/javascript/electronObservation.js +14 -3
- package/dist/domain/javascript/electronStaticAnalysisBrowser.js +10 -9
- package/dist/domain/javascript/electronStaticAnalysisIpc.js +2 -1
- package/dist/domain/javascript/electronStaticAnalysisNative.js +2 -1
- package/dist/domain/javascript/electronStaticAnalysisValues.js +6 -12
- package/dist/domain/javascript/javascriptApplicationAnalysis.js +71 -23
- package/dist/domain/javascript/javascriptApplicationEvidenceSchemas.js +2 -0
- package/dist/domain/javascript/javascriptApplicationGraph.js +39 -3
- package/dist/domain/javascript/javascriptApplicationGraphSchemas.js +9 -2
- package/dist/domain/javascript/javascriptApplicationVersionItems.js +5 -2
- package/dist/domain/javascript/javascriptApplicationVersionKeys.js +2 -1
- package/dist/domain/javascript/javascriptAstValues.js +20 -0
- package/dist/{application/javascript/JavaScriptReturnShapeProjection.js → domain/javascript/javascriptExportReturnShapeProjection.js} +4 -4
- package/dist/domain/javascript/javascriptExportShapeComparison.js +7 -1
- package/dist/domain/javascript/javascriptExportShapeComparisonIdentity.js +6 -1
- package/dist/domain/javascript/javascriptExportShapeComparisonSchemas.js +29 -1
- package/dist/domain/javascript/javascriptExportShapeSelection.js +5 -5
- package/dist/domain/javascript/javascriptExportShapeVariants.js +67 -14
- package/dist/domain/javascript/javascriptFeatureSeed.js +20 -0
- package/dist/domain/javascript/javascriptFeatureTraversal.js +0 -1
- package/dist/domain/javascript/javascriptNativeHandoff.js +1 -1
- package/dist/domain/javascript/javascriptRecovery.js +3 -8
- package/dist/domain/javascript/javascriptRuntimeLoadState.js +0 -1
- package/dist/domain/javascript/javascriptRuntimeObservation.js +10 -2
- package/dist/domain/javascript/javascriptRuntimeReconciliationMatching.js +1 -1
- package/dist/domain/javascript/javascriptRuntimeReconciliationParsing.js +3 -2
- package/dist/domain/javascript/javascriptRuntimeStaticCandidates.js +0 -1
- package/dist/domain/javascript/javascriptSemanticAnalysis.js +106 -5
- package/dist/domain/javascript/javascriptSemanticAsyncEffects.js +2 -1
- package/dist/domain/javascript/javascriptSemanticCalls.js +2 -1
- package/dist/domain/javascript/javascriptSemanticChildProcesses.js +2 -1
- package/dist/domain/javascript/javascriptSemanticCoverage.js +6 -5
- package/dist/domain/javascript/javascriptSemanticDataEffectHelpers.js +9 -17
- package/dist/domain/javascript/javascriptSemanticDataEffects.js +23 -6
- package/dist/domain/javascript/javascriptSemanticGraph.js +98 -43
- package/dist/domain/javascript/javascriptSemanticGraphSchemas.js +1 -0
- package/dist/domain/javascript/javascriptSemanticMemberMutations.js +77 -20
- package/dist/domain/javascript/javascriptSemanticMutationValues.js +21 -27
- package/dist/domain/javascript/javascriptSemanticObjects.js +83 -42
- package/dist/domain/javascript/javascriptSemanticPrimitives.js +18 -21
- package/dist/domain/javascript/javascriptSemanticProjection.js +2 -3
- package/dist/domain/javascript/javascriptSemanticPromises.js +2 -1
- package/dist/domain/javascript/javascriptSemanticQuerySchemas.js +8 -4
- package/dist/domain/javascript/javascriptSemanticResourceLimits.js +77 -0
- package/dist/domain/javascript/javascriptSemanticResources.js +1 -1
- package/dist/domain/javascript/javascriptSemanticReturns.js +32 -17
- package/dist/domain/javascript/javascriptSemanticSlots.js +72 -0
- package/dist/domain/javascript/javascriptSemanticValues.js +126 -61
- package/dist/domain/javascript/javascriptSourceMapPaths.js +104 -0
- package/dist/domain/javascript/javascriptSourceParser.js +6 -2
- package/dist/domain/javascript/javascriptStaticAnalysis.js +22 -17
- package/dist/domain/javascript/javascriptStaticAnalysisBundler.js +5 -3
- package/dist/domain/javascript/javascriptStaticAnalysisCalls.js +16 -5
- package/dist/domain/javascript/javascriptStaticAnalysisFindings.js +66 -7
- package/dist/domain/javascript/javascriptStaticAnalysisHelpers.js +28 -17
- package/dist/domain/javascript/javascriptStaticAnalysisState.js +3 -2
- package/dist/domain/javascript/sourceToBundleComparison.js +12 -3
- package/dist/domain/javascript/sourceToBundleSignals.js +47 -19
- package/dist/domain/jsonSerialization.js +109 -0
- package/dist/domain/jsonValue.js +90 -6
- package/dist/domain/localPath.js +6 -0
- package/dist/domain/managed/managedApplicationGraph.js +10 -10
- package/dist/domain/managed/managedArtifact.js +6 -4
- package/dist/domain/managed/managedInspectionEvidence.js +16 -0
- package/dist/domain/managed/managedMemberComparison.js +2 -9
- package/dist/domain/managed/managedMemberComparisonMatch.js +5 -9
- package/dist/domain/managed/managedNativeVerification.js +3 -11
- package/dist/domain/managed/managedNativeVerificationMatch.js +9 -3
- package/dist/domain/native/binaryLayout.js +2 -3
- package/dist/domain/native/fileOffsetPartialObservation.js +1 -0
- package/dist/domain/native/nativeApiBoundary.js +1 -1
- package/dist/domain/native/nativeCallObservation.js +37 -13
- package/dist/domain/native/nativeCallPartialObservation.js +33 -0
- package/dist/domain/native/nativeInstruction.js +7 -0
- package/dist/domain/native/recordedCrash.js +2 -3
- package/dist/domain/offsetDateTime.js +17 -0
- package/dist/domain/process/processCapture.js +21 -16
- package/dist/domain/process/processCaptureCoverage.js +67 -0
- package/dist/domain/process/processCaptureExample.js +2 -1
- package/dist/domain/process/processCaptureParsing.js +1 -34
- package/dist/domain/process/processCaptureValidation.js +81 -13
- package/dist/domain/process/processComparison.js +79 -26
- package/dist/domain/process/processObservation.js +10 -2
- package/dist/domain/process/processScenario.js +35 -12
- package/dist/domain/process/processTraceComparison.js +0 -2
- package/dist/domain/process/processTraceDimensionProjection.js +1 -1
- package/dist/domain/process/processTraceEvaluation.js +15 -11
- package/dist/domain/process/processTraceSpecification.js +3 -4
- package/dist/domain/propertyListKeys.js +1 -1
- package/dist/domain/propertyListXmlText.js +19 -0
- package/dist/domain/providerAdapterError.js +3 -1
- package/dist/domain/providerOperationHealth.js +54 -0
- package/dist/domain/reconstructionCoverage.js +5 -2
- package/dist/domain/reconstructionObligationLedgerSchemas.js +2 -1
- package/dist/domain/reconstructionReadinessSchemas.js +2 -1
- package/dist/domain/reconstructionVerification.js +9 -46
- package/dist/domain/reconstructionVerificationSchemas.js +4 -3
- package/dist/domain/referenceSourceGraph.js +20 -21
- package/dist/domain/staticRuntimeCorrelation.js +8 -45
- package/dist/domain/stringPatterns.js +6 -0
- package/dist/domain/swiftSymbolClassification.js +61 -0
- package/dist/domain/symbolAnalysis.js +66 -18
- package/dist/domain/webBundleAnalysis.js +20 -8
- package/dist/domain/webBundleAnalyzerInspection.js +13 -8
- package/dist/domain/webBundleAnalyzerResult.js +41 -2
- package/dist/domain/webCaptureDiff.js +0 -1
- package/dist/domain/webCaptureDiffSchemas.js +6 -3
- package/dist/domain/webEventListeners.js +3 -2
- package/dist/domain/webExecution.js +3 -2
- package/dist/domain/webRuntime.js +19 -7
- package/dist/domain/webScriptExport.js +1 -1
- package/dist/domain/webSourceLocation.js +1 -0
- package/dist/dotnet/ManagedArtifactInspector.js +2 -19
- package/dist/dotnet/ManagedMemberInspector.js +12 -18
- package/dist/dotnet/ManagedMemberInspectorCore.js +47 -44
- package/dist/dotnet/ManagedMemberRows.js +75 -62
- package/dist/dotnet/ManagedMetadataInventory.js +16 -22
- package/dist/dotnet/ManagedMethodBodyReader.js +4 -0
- package/dist/dotnet/ManagedNativeBoundaryHelpers.js +109 -94
- package/dist/dotnet/ManagedNativeBoundaryInspector.js +12 -21
- package/dist/dotnet/ManagedReaderFailure.js +16 -0
- package/dist/dotnet/ManagedStaticProvider.js +3 -5
- package/dist/evaluation/AgentEvaluationFixtures.js +250 -0
- package/dist/evaluation/AgentEvaluationReport.js +28 -0
- package/dist/evaluation/CodexAgentEval.js +12 -8
- package/dist/evaluation/KnownAnswerEvaluation.js +281 -0
- package/dist/evm/EvmoleInterfaceProvider.js +2 -1
- package/dist/firmware/FirmwareCommand.js +9 -5
- package/dist/firmware/FirmwareFiles.js +1 -1
- package/dist/firmware/FirmwareProvider.js +4 -4
- package/dist/generatedPackageMetadata.js +2 -2
- package/dist/ghidra/GhidraAnalysisProfile.js +7 -5
- package/dist/ghidra/GhidraClient.js +126 -34
- package/dist/ghidra/GhidraClientStartup.js +0 -2
- package/dist/ghidra/GhidraDiagnostics.js +7 -7
- package/dist/ghidra/GhidraDoctor.js +6 -5
- package/dist/ghidra/GhidraFunctionValues.js +13 -12
- package/dist/ghidra/GhidraInstallation.js +58 -33
- package/dist/ghidra/GhidraInventoryValues.js +14 -4
- package/dist/ghidra/GhidraJavaLaunch.js +66 -0
- package/dist/ghidra/GhidraLauncher.js +47 -22
- package/dist/ghidra/GhidraProvider.js +6 -2
- package/dist/ghidra/GhidraProviderCapabilities.js +20 -2
- package/dist/ghidra/GhidraProviderClient.js +36 -15
- package/dist/ghidra/GhidraSessionError.js +13 -7
- package/dist/ghidra/GhidraSessionRoot.js +39 -0
- package/dist/ghidra/GhidraTargetSnapshot.js +47 -12
- package/dist/ghidra/GhidraTransport.js +20 -0
- package/dist/ghidra/extensions/GhidraExtensions.js +17 -10
- package/dist/ghidra/extensions/nativeaot/NativeAotAdapter.js +8 -2
- package/dist/hopper/BridgeLauncher.js +65 -56
- package/dist/hopper/HopperAnalysisProfile.js +65 -12
- package/dist/hopper/HopperCleanup.js +63 -22
- package/dist/hopper/HopperClient.js +288 -59
- package/dist/hopper/HopperFileOffset.js +237 -0
- package/dist/hopper/HopperMachOImage.js +197 -0
- package/dist/hopper/HopperOperationStage.js +6 -0
- package/dist/hopper/HopperProvider.js +71 -19
- package/dist/hopper/HopperProviderCapabilities.js +19 -1
- package/dist/hopper/HopperRegexSearch.js +134 -0
- package/dist/hopper/HopperRegexWorker.js +27 -0
- package/dist/hopper/HopperRequestQueue.js +68 -19
- package/dist/hopper/HopperTargetLease.js +133 -49
- package/dist/hopper/LinuxPrivateDisplayProbe.js +6 -0
- package/dist/ida/IdaConfiguration.js +8 -3
- package/dist/ida/IdaInput.js +1 -7
- package/dist/ida/IdaMcpConnection.js +8 -4
- package/dist/ida/IdaOperationRunner.js +3 -3
- package/dist/ida/IdaProvider.js +8 -12
- package/dist/ida/IdaSessionClient.js +20 -18
- package/dist/ida/IdaWorkspace.js +12 -13
- package/dist/inspector/JavaScriptRuntimeScope.js +9 -1
- package/dist/inspector/V8InspectorCaptureProjection.js +9 -4
- package/dist/inspector/V8InspectorProvider.js +82 -36
- package/dist/javascript/recovery/WakaruCommand.js +7 -2
- package/dist/javascript/recovery/WakaruExecution.js +5 -2
- package/dist/javascript/sourceMaps/DecodedSourceMap.js +47 -0
- package/dist/javascript/sourceMaps/SourceMapCommand.js +16 -0
- package/dist/javascript/sourceMaps/SourceMapFormat.js +79 -31
- package/dist/javascript/sourceMaps/TraceSourceMap.js +14 -28
- package/dist/main/shutdown.js +11 -3
- package/dist/main/startup.js +9 -2
- package/dist/main/transport.js +22 -2
- package/dist/main.js +11 -18
- package/dist/mcpDoctor.js +62 -2
- package/dist/native/AppleDispatchCoverage.js +47 -6
- package/dist/native/AppleDispatchDecodeFacts.js +6 -0
- package/dist/native/AppleDispatchMetadata.js +6 -3
- package/dist/native/AppleMachoFixups.js +48 -24
- package/dist/native/AppleMachoSelection.js +48 -22
- package/dist/native/AppleObjcCategories.js +6 -2
- package/dist/native/AppleObjcDispatchFacets.js +5 -2
- package/dist/native/AppleObjcProperties.js +2 -1
- package/dist/native/AppleSwiftDispatchFacets.js +27 -21
- package/dist/native/AppleSwiftVtables.js +21 -15
- package/dist/native/CommandRunner.js +87 -88
- package/dist/native/LldbCallTracer.js +372 -103
- package/dist/native/LldbRetainedObservations.js +178 -0
- package/dist/native/NativeCallObservation.js +62 -3
- package/dist/native/NativeMacOSProvider.js +122 -31
- package/dist/native/NativeUiHelperRuntime.js +11 -2
- package/dist/native/NativeUiObservation.js +2 -2
- package/dist/native/SignatureTargetBinding.js +155 -0
- package/dist/native/parsers/lipo.js +71 -1
- package/dist/native/pwndbg/PwndbgCoreContext.js +25 -5
- package/dist/native/pwntools/PwntoolsDecoder.js +2 -1
- package/dist/native/pwntools/RecordedCrashStructureBindings.js +2 -0
- package/dist/process/DarwinProcessRunTokenReader.js +23 -10
- package/dist/process/ExecFileOutput.js +108 -6
- package/dist/process/OwnedCommand.js +7 -2
- package/dist/process/PrivateRuntimeRoot.js +10 -5
- package/dist/process/ProcessOwnership.js +204 -57
- package/dist/process/ProcessOwnershipObservation.js +60 -9
- package/dist/process/ProviderProcess.js +39 -10
- package/dist/process/capture/FilesystemSnapshot.js +50 -13
- package/dist/process/capture/ProcessCaptureError.js +15 -2
- package/dist/process/capture/ProcessCaptureLifecycle.js +235 -81
- package/dist/process/capture/ProcessFilesystemEffects.js +33 -3
- package/dist/process/capture/ProcessHarness.js +21 -25
- package/dist/process/capture/ProcessNormalization.js +20 -2
- package/dist/process/capture/ProcessSampling.js +25 -2
- package/dist/process/capture/TerminalRenderer.js +14 -0
- package/dist/process/snapshotEnvironment.js +14 -0
- package/dist/server/EvidenceMcpServer.js +157 -0
- package/dist/server/createServer.js +61 -41
- package/dist/server/mcpClientMetadata.js +12 -5
- package/dist/server/promptCompletion.js +3 -8
- package/dist/server/registerAnalysisViewTool.js +15 -0
- package/dist/server/registerAndroidTools.js +2 -5
- package/dist/server/registerApplicationTools/compareExportShapes.js +4 -5
- package/dist/server/registerApplicationTools/compareSourceToBundle.js +4 -5
- package/dist/server/registerApplicationTools/compareVersions.js +4 -5
- package/dist/server/registerApplicationTools/coverage.js +1 -2
- package/dist/server/registerApplicationTools/helpers.js +1 -4
- package/dist/server/registerApplicationTools/obligationLedger.js +4 -5
- package/dist/server/registerApplicationTools/projectMobileApplicationGraph.js +3 -4
- package/dist/server/registerApplicationTools/traceFeature.js +4 -5
- package/dist/server/registerApplicationTools/traceSemantics.js +4 -5
- package/dist/server/registerArtifactComparisonTool.js +13 -10
- package/dist/server/registerBinaryDiagnosticsTools.js +2 -5
- package/dist/server/registerBrowserScenarioTool.js +3 -6
- package/dist/server/registerBrowserTools.js +13 -18
- package/dist/server/registerBundleComparisonTool.js +5 -7
- package/dist/server/registerCloseLifecycleTool.js +9 -20
- package/dist/server/registerElectronTools.js +10 -15
- package/dist/server/registerEnhancedTools.js +36 -77
- package/dist/server/registerEvidenceTools.js +3 -6
- package/dist/server/registerEvmTools.js +2 -5
- package/dist/server/registerFirmwareTools.js +2 -5
- package/dist/server/registerFunctionComparisonTool.js +15 -12
- package/dist/server/registerInvestigationTools.js +16 -17
- package/dist/server/registerJavaScriptRecoveryTool.js +2 -5
- package/dist/server/registerJavaScriptRuntimeObservationTools.js +6 -8
- package/dist/server/registerManagedWorkflowTools/compareManagedMembers.js +5 -8
- package/dist/server/registerManagedWorkflowTools/importManagedReconstruction.js +4 -7
- package/dist/server/registerManagedWorkflowTools/projectManagedApplicationGraph.js +6 -9
- package/dist/server/registerManagedWorkflowTools/verifyManagedNativeBoundaries.js +6 -9
- package/dist/server/registerOfficialTools.js +4 -21
- package/dist/server/registerProcessComparisonTool.js +74 -48
- package/dist/server/registerRecordedCrashTools.js +2 -5
- package/dist/server/registerSessionRecordTools.js +19 -24
- package/dist/server/registerSessionStatusTool.js +19 -6
- package/dist/server/registerSessionTools.js +20 -18
- package/dist/server/registerWebModuleTool.js +2 -5
- package/dist/server/registerWebNetworkCaptureTool.js +2 -5
- package/dist/server/registerWebRuntimeTools.js +4 -9
- package/dist/server/registerWebScriptTool.js +2 -5
- package/dist/server/registerWebSourceLocationTool.js +2 -5
- package/dist/server/runDerivedOperation.js +15 -3
- package/dist/server/sessionAvailabilityPolicy.js +0 -1
- package/dist/server/toolRegistrationOptions.js +2 -2
- package/dist/server/toolResult.js +75 -51
- package/dist/server/toolResultEncoding.js +34 -0
- package/dist/windows/WindowsNativeLoader.js +1 -0
- package/dist/windows/WindowsOwnedProcess.js +60 -15
- package/dist/windows/WindowsPrivateRuntime.js +7 -8
- package/install.sh +1 -1
- package/native/windows/README.md +3 -1
- package/native/windows/build/manifest.json +2 -2
- package/native/windows/build/rea-windows-x64.node +0 -0
- package/package.json +44 -30
- package/scripts/electron-active-hook-boundaries.cjs +18 -20
- package/scripts/electron-active-hook.cjs +241 -37
- package/scripts/rea.mjs +3 -6
- package/skills/reverse-engineer-anything/SKILL.md +12 -3
- package/skills/reverse-engineer-anything/references/android-applications.md +6 -3
- package/skills/reverse-engineer-anything/references/evidence-workflows.md +8 -4
- package/skills/reverse-engineer-anything/references/javascript-applications.md +20 -3
- package/skills/reverse-engineer-anything/references/native-and-artifacts.md +9 -0
- package/dist/config.js +0 -1
- package/dist/contracts/browserCaptureToolInputSchema.js +0 -43
- package/dist/contracts/process/processCaptureExample.js +0 -2
- package/dist/contracts/toolOutputSchemas.js +0 -2
- package/dist/ghidra/GhidraDefaults.js +0 -2
- package/dist/main/reload.js +0 -12
- package/dist/main/state.js +0 -3
- package/dist/server/sessionToolPolicies.js +0 -2
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { exportWebScriptsInputSchema, webScriptExportResultSchema, } from "../domain/webScriptExport.js";
|
|
2
2
|
import { webModuleTraceInputSchema, webModuleTraceResultSchema, } from "../domain/webModuleTrace.js";
|
|
3
3
|
import { toolContractMetadata } from "./toolEffects.js";
|
|
4
|
-
import { evidenceResultOf } from "./
|
|
4
|
+
import { evidenceResultOf } from "./toolOutputSchemaPrimitives.js";
|
|
5
5
|
import { webSourceLocationInputSchema, webSourceLocationResultSchema, } from "../domain/webSourceLocation.js";
|
|
6
6
|
/** Local captured-script publication contracts shared by CLI and MCP. */
|
|
7
7
|
export const WEB_SCRIPT_TOOL_CONTRACTS = [
|
package/dist/doctorRuntime.js
CHANGED
|
@@ -4,17 +4,19 @@ import { inspectSystemGhidraProvider } from "./ghidra/GhidraDoctor.js";
|
|
|
4
4
|
import { inspectIdaRegistration } from "./ida/IdaDoctor.js";
|
|
5
5
|
import { selectLinuxPrivateDisplayStrategy } from "./hopper/LinuxPrivateDisplayProbe.js";
|
|
6
6
|
/** Compose provider diagnostics at the outer CLI adapter boundary. */
|
|
7
|
-
export const createSystemDoctorHost = () => systemDoctorHost({
|
|
7
|
+
export const createSystemDoctorHost = (environment = process.env) => systemDoctorHost({
|
|
8
|
+
environment,
|
|
8
9
|
providerInspections: async () => [
|
|
9
|
-
await inspectSystemGhidraProvider(),
|
|
10
|
-
inspectIdaRegistration(
|
|
10
|
+
await inspectSystemGhidraProvider(environment),
|
|
11
|
+
inspectIdaRegistration(environment.REA_IDA_MCP_CONFIG),
|
|
11
12
|
],
|
|
12
|
-
linuxDemoRuntimeCheck: inspectLinuxPrivateDisplay,
|
|
13
|
+
linuxDemoRuntimeCheck: () => inspectLinuxPrivateDisplay(environment),
|
|
13
14
|
});
|
|
14
15
|
const HOPPER_DEMO_HELPER_PATH = fileURLToPath(new URL("../scripts/hopper-demo-x11.py", import.meta.url));
|
|
15
|
-
const inspectLinuxPrivateDisplay = async () => {
|
|
16
|
+
const inspectLinuxPrivateDisplay = async (environment) => {
|
|
16
17
|
const selection = await selectLinuxPrivateDisplayStrategy({
|
|
17
18
|
helperPath: HOPPER_DEMO_HELPER_PATH,
|
|
19
|
+
environment,
|
|
18
20
|
});
|
|
19
21
|
const value = selection.diagnostic;
|
|
20
22
|
const detail = [
|
|
@@ -31,18 +31,23 @@ const ANALYSIS_ERROR_TAGS = [
|
|
|
31
31
|
/** Base class for expected analysis, provider, and session failures. */
|
|
32
32
|
export class AnalysisError extends Error {
|
|
33
33
|
capturedOutput;
|
|
34
|
+
cleanup;
|
|
35
|
+
cleanupIncomplete;
|
|
36
|
+
cleanupResources;
|
|
34
37
|
constructor(message, options) {
|
|
35
38
|
super(message, options);
|
|
36
39
|
this.capturedOutput =
|
|
37
40
|
options?.capturedOutput === undefined
|
|
38
41
|
? undefined
|
|
39
42
|
: { ...options.capturedOutput };
|
|
43
|
+
this.cleanup = options?.cleanup;
|
|
44
|
+
this.cleanupIncomplete = options?.cleanup !== undefined;
|
|
45
|
+
this.cleanupResources = options?.cleanup?.resources ?? [];
|
|
46
|
+
this.partialObservation = options?.partialObservation;
|
|
40
47
|
}
|
|
41
48
|
userMessage = undefined;
|
|
42
49
|
userCategory = undefined;
|
|
43
|
-
cleanupIncomplete = false;
|
|
44
|
-
cleanupResources = [];
|
|
45
50
|
executionFailure = undefined;
|
|
46
|
-
partialObservation
|
|
51
|
+
partialObservation;
|
|
47
52
|
cleanupReport = undefined;
|
|
48
53
|
}
|
|
@@ -5,26 +5,31 @@ export class AnalysisUnsupportedTargetError extends AnalysisError {
|
|
|
5
5
|
path;
|
|
6
6
|
reason;
|
|
7
7
|
_tag = "AnalysisUnsupportedTargetError";
|
|
8
|
+
/** Refusal-specific recovery, when the producer knows an available workflow. */
|
|
9
|
+
remediationAction;
|
|
8
10
|
constructor(operation, path, reason, options) {
|
|
9
11
|
super(`Unsupported target for ${operation} at ${path}: ${reason}`, options);
|
|
10
12
|
this.operation = operation;
|
|
11
13
|
this.path = path;
|
|
12
14
|
this.reason = reason;
|
|
15
|
+
this.remediationAction = options?.remediationAction;
|
|
13
16
|
}
|
|
14
17
|
}
|
|
15
|
-
/**
|
|
18
|
+
/** An analysis or transport resource failure, distinct from malformed input or unsupported coverage. */
|
|
16
19
|
export class AnalysisResourceConstraintError extends AnalysisError {
|
|
17
20
|
operation;
|
|
18
21
|
resource;
|
|
19
22
|
reason;
|
|
20
23
|
reportedLimits;
|
|
21
24
|
_tag = "AnalysisResourceConstraintError";
|
|
25
|
+
remediationAction;
|
|
22
26
|
constructor(operation, resource, reason, reportedLimits, options) {
|
|
23
27
|
super(`Resource constraint during ${operation}: ${reason}`, options);
|
|
24
28
|
this.operation = operation;
|
|
25
29
|
this.resource = resource;
|
|
26
30
|
this.reason = reason;
|
|
27
31
|
this.reportedLimits = reportedLimits;
|
|
32
|
+
this.remediationAction = options?.remediationAction;
|
|
28
33
|
}
|
|
29
34
|
}
|
|
30
35
|
/** Provider-neutral invalid analysis input or output at an application boundary. */
|
|
@@ -2,42 +2,56 @@ import { AnalysisAccessDeniedError, AnalysisArtifactChangedError, AnalysisInputE
|
|
|
2
2
|
import { ArtifactOperationError } from "./artifactOperationError.js";
|
|
3
3
|
import { BinaryTargetError, ConfigurationError, NoBinaryOpenError, } from "./configurationErrors.js";
|
|
4
4
|
import { BrowserObservationError } from "./browserObservationError.js";
|
|
5
|
-
import { EvidenceFileError, EvidenceIntegrityError, EvidenceReferenceError, } from "./evidenceErrors.js";
|
|
5
|
+
import { EvidenceFileError, EvidenceIntegrityError, EvidenceReferenceError, AnalysisSnapshotMismatchError, } from "./evidenceErrors.js";
|
|
6
6
|
import { HopperRemoteError, HopperProcessError, HopperStartError, HopperTimeoutError, } from "./hopperErrors.js";
|
|
7
7
|
import { ProviderSelectionError } from "./providerSelectionError.js";
|
|
8
8
|
import { UnknownRegistryError } from "./unknownRegistryError.js";
|
|
9
|
+
import { providerRetryAction } from "./providerOperationHealth.js";
|
|
9
10
|
import {} from "./analysisErrorBase.js";
|
|
10
11
|
import {} from "./analysisErrorProjection.js";
|
|
11
12
|
export const analysisErrorRemediationAction = (error) => {
|
|
13
|
+
if (error instanceof AnalysisSnapshotMismatchError)
|
|
14
|
+
return "Run analysis without this snapshot, then save a fresh snapshot using the intended artifact, provider, and analysis profile.";
|
|
12
15
|
if (error instanceof AnalysisUnsupportedTargetError)
|
|
13
|
-
return
|
|
16
|
+
return (error.remediationAction ??
|
|
17
|
+
"Select a target supported by this operation or choose an operation supporting the reported target format.");
|
|
14
18
|
if (error instanceof AnalysisResourceConstraintError)
|
|
15
|
-
return error.
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
19
|
+
return (error.remediationAction ??
|
|
20
|
+
(error.resource === "transport"
|
|
21
|
+
? "Export retained session evidence through export_evidence_bundle to a caller-selected path, or use complete CLI JSON output. Tools that accept retained-evidence references can inspect compatible records. The connection remains usable."
|
|
22
|
+
: error.resource === "cpu"
|
|
23
|
+
? "Review the reported worker CPU limits and observed signal. Retry with sufficient CPU time or a smaller artifact; REA retains tighter inherited limits."
|
|
24
|
+
: error.resource === "file-size"
|
|
25
|
+
? "Review the reported worker file-size limits and write failure. Retry with a sufficient file-size allowance for the evidence reply; REA retains tighter inherited limits."
|
|
26
|
+
: "Review the reported worker memory limits and available host memory. Retry with sufficient memory or a smaller artifact; REA retains tighter inherited limits."));
|
|
20
27
|
if (error instanceof HopperTimeoutError)
|
|
21
|
-
return error.
|
|
22
|
-
? "
|
|
23
|
-
:
|
|
28
|
+
return error.operation === undefined
|
|
29
|
+
? "Inspect Hopper for a loader or license dialog and review details.launcher. Correct the loader configuration or complete Hopper setup, then open the target again."
|
|
30
|
+
: error.providerState === "busy"
|
|
31
|
+
? "Check binary_session.analysis_activity, wait for the active Hopper request to finish, then retry."
|
|
32
|
+
: "Check binary_session for Hopper health, then retry the operation.";
|
|
24
33
|
if (error instanceof HopperProcessError)
|
|
25
|
-
return
|
|
34
|
+
return hopperProcessRemediation(error);
|
|
26
35
|
if (error instanceof HopperStartError)
|
|
27
36
|
return error.ownerRunId === undefined
|
|
28
37
|
? "Check the Hopper launcher and target details, then retry opening the target."
|
|
29
38
|
: `Use the active REA session ${error.ownerRunId} or close it before opening this target again.`;
|
|
30
39
|
if (error instanceof HopperRemoteError)
|
|
31
|
-
return
|
|
40
|
+
return error.diagnosticType === "invalid_request"
|
|
41
|
+
? "Correct the reported address, document, or arguments and retry."
|
|
42
|
+
: "Review the Hopper diagnostic details; correct the request or retry if the failure was transient.";
|
|
32
43
|
if (error instanceof EvidenceReferenceError)
|
|
33
44
|
return "Use an exact Evidence reference retained by this session, supply the complete inline Evidence, re-run its producer, or import its Evidence bundle. close_binary clears retained records.";
|
|
34
45
|
if (error instanceof BinaryTargetError &&
|
|
35
46
|
error.constraint === "directory_requires_file")
|
|
36
47
|
return "For a JavaScript/Electron application directory, call analyze_javascript_application with input_path or run `rea analyze <directory>`. For binary analysis, select its executable file.";
|
|
37
|
-
if (error instanceof AnalysisAccessDeniedError
|
|
48
|
+
if (error instanceof AnalysisAccessDeniedError ||
|
|
49
|
+
(error instanceof BinaryTargetError && error.systemCode !== undefined))
|
|
38
50
|
return "Check the current process's read access to the selected path. Retry with a readable local file.";
|
|
39
51
|
if (error instanceof AnalysisArtifactChangedError)
|
|
40
|
-
return "Wait until the selected file is stable,
|
|
52
|
+
return "Wait until the selected file is stable. For an active binary session, reopen the target with open_binary before retrying so REA acquires its current identity; for a CLI command or target-free tool, rerun the operation.";
|
|
53
|
+
if (error instanceof ConfigurationError && error.settings.length > 0)
|
|
54
|
+
return `Correct ${[...new Set(error.settings.map(({ setting }) => setting))].join(", ")} in the environment that starts REA (your shell or the MCP client's registration), then rerun.`;
|
|
41
55
|
if (error instanceof AnalysisInputError)
|
|
42
56
|
return "Correct the listed arguments and retry.";
|
|
43
57
|
if (error instanceof UnknownRegistryError && error.reason === "not-found")
|
|
@@ -51,7 +65,10 @@ export const analysisErrorCategory = (error) => {
|
|
|
51
65
|
if (error._tag === "ProcessCaptureError")
|
|
52
66
|
return error.userCategory ?? "execution_failure";
|
|
53
67
|
if (error instanceof BrowserObservationError)
|
|
54
|
-
return browserErrorCategory(error.reason);
|
|
68
|
+
return error.userCategory ?? browserErrorCategory(error.reason);
|
|
69
|
+
if (error instanceof HopperRemoteError &&
|
|
70
|
+
error.diagnosticType === "invalid_request")
|
|
71
|
+
return "invalid_input";
|
|
55
72
|
if (error instanceof HopperRemoteError &&
|
|
56
73
|
error.diagnosticType === "authorization")
|
|
57
74
|
return "unavailable";
|
|
@@ -59,9 +76,18 @@ export const analysisErrorCategory = (error) => {
|
|
|
59
76
|
return "unavailable";
|
|
60
77
|
if (error instanceof ArtifactOperationError)
|
|
61
78
|
return artifactErrorCategory(error.reason);
|
|
79
|
+
if (error instanceof EvidenceFileError &&
|
|
80
|
+
(error.reason === "missing" ||
|
|
81
|
+
error.reason === "not-file" ||
|
|
82
|
+
error.reason === "exists"))
|
|
83
|
+
return "invalid_input";
|
|
62
84
|
return STATIC_ERROR_CATEGORIES[error._tag] ?? "execution_failure";
|
|
63
85
|
};
|
|
64
86
|
const browserErrorCategory = (reason) => {
|
|
87
|
+
if (reason === "cancelled")
|
|
88
|
+
return "cancelled";
|
|
89
|
+
if (reason === "timeout")
|
|
90
|
+
return "timeout";
|
|
65
91
|
if (reason === "payload_limit")
|
|
66
92
|
return "truncated";
|
|
67
93
|
if (reason === "target_not_found" ||
|
|
@@ -100,6 +126,8 @@ const STATIC_ERROR_CATEGORIES = {
|
|
|
100
126
|
BinaryTargetError: "unavailable",
|
|
101
127
|
};
|
|
102
128
|
export const analysisErrorUserMessage = (error) => {
|
|
129
|
+
if (error instanceof AnalysisSnapshotMismatchError)
|
|
130
|
+
return error.message;
|
|
103
131
|
if (error instanceof AnalysisUnsupportedTargetError)
|
|
104
132
|
return error.message;
|
|
105
133
|
if (error instanceof AnalysisResourceConstraintError)
|
|
@@ -127,13 +155,19 @@ export const analysisErrorUserMessage = (error) => {
|
|
|
127
155
|
if (error instanceof EvidenceIntegrityError)
|
|
128
156
|
return "Evidence is invalid or has changed. Recreate or re-import it, then try again.";
|
|
129
157
|
if (error instanceof EvidenceFileError)
|
|
130
|
-
return evidenceFileMessage(error
|
|
158
|
+
return evidenceFileMessage(error);
|
|
131
159
|
if (error instanceof UnknownRegistryError && error.reason === "not-found")
|
|
132
160
|
return "The requested residual unknown does not exist in this session. Check the unknown_id and try again.";
|
|
133
161
|
if (error instanceof UnknownRegistryError)
|
|
134
162
|
return "Evidence state changed before the update completed. Refresh the current state and try again.";
|
|
135
163
|
if (error instanceof ConfigurationError)
|
|
136
|
-
return
|
|
164
|
+
return error.settings.length === 0
|
|
165
|
+
? "REA configuration is invalid. Run `rea doctor` and fix the reported setting."
|
|
166
|
+
: `REA configuration is invalid: ${error.settings
|
|
167
|
+
.map(({ setting, constraint }) => constraint.includes(setting)
|
|
168
|
+
? constraint.replace(/\.$/u, "")
|
|
169
|
+
: `${setting}: ${constraint}`)
|
|
170
|
+
.join("; ")}.`;
|
|
137
171
|
if (error instanceof NoBinaryOpenError)
|
|
138
172
|
return error.message;
|
|
139
173
|
if (error instanceof BinaryTargetError)
|
|
@@ -147,13 +181,15 @@ export const analysisErrorUserMessage = (error) => {
|
|
|
147
181
|
};
|
|
148
182
|
const hopperErrorUserMessage = (error) => {
|
|
149
183
|
if (error instanceof HopperTimeoutError) {
|
|
150
|
-
|
|
184
|
+
if (error.operation === undefined)
|
|
185
|
+
return "REA timed out waiting for Hopper bridge readiness. Hopper may be waiting for a loader or license dialog; inspect its window and the captured launcher outcome before retrying.";
|
|
186
|
+
const request = error.operation;
|
|
151
187
|
return error.providerState === "busy"
|
|
152
188
|
? `Hopper timed out during ${request} while the provider remained busy. Check binary_session.analysis_activity, wait for the active request to finish, then retry.`
|
|
153
189
|
: `Hopper timed out during ${request} before it started. Check binary_session for provider health, then retry.`;
|
|
154
190
|
}
|
|
155
191
|
if (error instanceof HopperProcessError)
|
|
156
|
-
return
|
|
192
|
+
return hopperProcessMessage(error);
|
|
157
193
|
if (error instanceof HopperStartError)
|
|
158
194
|
return (error.userMessage ??
|
|
159
195
|
"Hopper could not start. Check the launcher and target details, then retry opening the target.");
|
|
@@ -161,6 +197,36 @@ const hopperErrorUserMessage = (error) => {
|
|
|
161
197
|
return `Hopper ${error.operation ?? "analysis"} failed (${String(error.code)}, ${error.diagnosticType}): ${error.safeMessage}`;
|
|
162
198
|
return undefined;
|
|
163
199
|
};
|
|
200
|
+
const RESTART_OWNED_PROVIDER = "Restart the owned provider by calling close_binary, then open the target again and retry.";
|
|
201
|
+
const hopperProcessRemediation = (error) => {
|
|
202
|
+
if (error.failureCode !== undefined && error.userMessage !== undefined)
|
|
203
|
+
return error.userMessage;
|
|
204
|
+
if (error.stage === "launch")
|
|
205
|
+
return "Review the captured launcher diagnostics and Hopper setup, then retry opening the target.";
|
|
206
|
+
if (providerRetryAction(error.providerState) === "restart_provider")
|
|
207
|
+
return RESTART_OWNED_PROVIDER;
|
|
208
|
+
return "Read binary_session.provider_operation_health for this request before retrying or restarting the owned provider.";
|
|
209
|
+
};
|
|
210
|
+
const hopperProcessMessage = (error) => {
|
|
211
|
+
const stage = error.stage;
|
|
212
|
+
const where = error.operation ?? stage;
|
|
213
|
+
const request = error.requestId === undefined
|
|
214
|
+
? ""
|
|
215
|
+
: ` Request id ${String(error.requestId)}.`;
|
|
216
|
+
const startup = error.userMessage === undefined ? "" : ` ${error.userMessage}`;
|
|
217
|
+
if (error.providerState === "exited") {
|
|
218
|
+
const exit = error.exitCode === null
|
|
219
|
+
? "no exit code was observed"
|
|
220
|
+
: `exit code ${String(error.exitCode)}`;
|
|
221
|
+
const recovery = error.failureCode === undefined && stage !== "launch"
|
|
222
|
+
? ` ${RESTART_OWNED_PROVIDER}`
|
|
223
|
+
: "";
|
|
224
|
+
return `Hopper exited during ${where} (${exit}).${startup}${recovery}${request}`;
|
|
225
|
+
}
|
|
226
|
+
if (error.providerState === "unreachable")
|
|
227
|
+
return `Hopper became unreachable during ${where}; its process exit was not observed. ${RESTART_OWNED_PROVIDER}${startup}${request}`;
|
|
228
|
+
return `Hopper failed during ${where} and REA could not determine whether the provider is busy, exited, or unreachable.${startup} Read binary_session.provider_operation_health for this request before retrying or restarting.${request}`;
|
|
229
|
+
};
|
|
164
230
|
const standardErrorMessage = (tag) => {
|
|
165
231
|
if (UNREADABLE_OUTPUT_TAGS.has(tag))
|
|
166
232
|
return "Analysis returned an unreadable result. Retry once; if it continues, run `rea doctor`.";
|
|
@@ -214,7 +280,11 @@ const artifactMessage = (reason) => {
|
|
|
214
280
|
return "Artifact is invalid or has changed. Get a fresh copy and try again.";
|
|
215
281
|
return "Artifact could not be read or written. Check file access and try again.";
|
|
216
282
|
};
|
|
217
|
-
const evidenceFileMessage = (reason) => {
|
|
283
|
+
const evidenceFileMessage = ({ operation, reason, }) => {
|
|
284
|
+
if (reason === "missing")
|
|
285
|
+
return operation === "read"
|
|
286
|
+
? "Evidence file does not exist at the selected path. Check the path and try again."
|
|
287
|
+
: "Evidence output directory does not exist. Choose an existing directory and try again.";
|
|
218
288
|
if (reason === "not-file")
|
|
219
289
|
return "Evidence path does not point to a regular file. Choose a file and try again.";
|
|
220
290
|
if (reason === "exists")
|
|
@@ -2,22 +2,42 @@ import { jsonValueSchema } from "./jsonValue.js";
|
|
|
2
2
|
import { analysisErrorCategory, analysisErrorRemediationAction, analysisErrorUserMessage, assertKnownAnalysisErrorTag, } from "./analysisErrorPresentation.js";
|
|
3
3
|
import { AnalysisAccessDeniedError, AnalysisArtifactChangedError, AnalysisCancelledError, AnalysisCapabilityUnavailableError, AnalysisUnsupportedTargetError, AnalysisInputError, AnalysisOutputError, AnalysisTimeoutError, AnalysisResourceConstraintError, } from "./analysisErrorCore.js";
|
|
4
4
|
import { ArtifactOperationError } from "./artifactOperationError.js";
|
|
5
|
-
import { BinaryTargetError } from "./configurationErrors.js";
|
|
5
|
+
import { BinaryTargetError, ConfigurationError, } from "./configurationErrors.js";
|
|
6
6
|
import { BrowserObservationError } from "./browserObservationError.js";
|
|
7
|
-
import { EvidenceFileError, EvidenceReferenceError } from "./evidenceErrors.js";
|
|
8
|
-
import { HopperCancelledError, HopperProcessError, HopperRemoteError, HopperTimeoutError, } from "./hopperErrors.js";
|
|
7
|
+
import { EvidenceFileError, EvidenceIntegrityError, EvidenceReferenceError, } from "./evidenceErrors.js";
|
|
8
|
+
import { HopperCancelledError, HopperProcessError, HopperRemoteError, HopperStartError, HopperTimeoutError, } from "./hopperErrors.js";
|
|
9
9
|
import { ProviderAdapterError } from "./providerAdapterError.js";
|
|
10
10
|
import { ProviderSelectionError } from "./providerSelectionError.js";
|
|
11
11
|
import { UnknownRegistryError } from "./unknownRegistryError.js";
|
|
12
|
+
import { providerRetryAction } from "./providerOperationHealth.js";
|
|
12
13
|
import {} from "./analysisErrorBase.js";
|
|
13
14
|
/** Project expected failures into exhaustive, secret-safe caller fields. */
|
|
14
15
|
export const projectAnalysisError = (error) => {
|
|
15
16
|
assertKnownAnalysisErrorTag(error._tag);
|
|
16
|
-
const
|
|
17
|
+
const underlyingCode = underlyingErrorCode(error);
|
|
18
|
+
const code = error.cleanupIncomplete ? "cleanup_incomplete" : underlyingCode;
|
|
17
19
|
const primaryDetails = errorDetails(error);
|
|
18
|
-
const details =
|
|
19
|
-
|
|
20
|
-
|
|
20
|
+
const details = {
|
|
21
|
+
...primaryDetails,
|
|
22
|
+
...(error.cleanupIncomplete
|
|
23
|
+
? {
|
|
24
|
+
cleanup: "incomplete",
|
|
25
|
+
resources: [...error.cleanupResources],
|
|
26
|
+
...(error.cleanup === undefined
|
|
27
|
+
? {}
|
|
28
|
+
: { cleanup_reason: error.cleanup.reason }),
|
|
29
|
+
execution_failure: primaryDetails?.execution_failure ?? underlyingCode,
|
|
30
|
+
}
|
|
31
|
+
: {}),
|
|
32
|
+
...(error.capturedOutput === undefined
|
|
33
|
+
? {}
|
|
34
|
+
: { captured_output: { ...error.capturedOutput } }),
|
|
35
|
+
...(error.partialObservation === undefined
|
|
36
|
+
? {}
|
|
37
|
+
: {
|
|
38
|
+
partial_observation: jsonValueSchema.parse(error.partialObservation),
|
|
39
|
+
}),
|
|
40
|
+
};
|
|
21
41
|
return {
|
|
22
42
|
code,
|
|
23
43
|
category: analysisErrorCategory(error),
|
|
@@ -26,20 +46,27 @@ export const projectAnalysisError = (error) => {
|
|
|
26
46
|
remediation: {
|
|
27
47
|
action: analysisErrorRemediationAction(error),
|
|
28
48
|
},
|
|
29
|
-
...(details ===
|
|
49
|
+
...(Object.keys(details).length === 0 ? {} : { details }),
|
|
30
50
|
};
|
|
31
51
|
};
|
|
32
|
-
const
|
|
33
|
-
if (error
|
|
34
|
-
|
|
52
|
+
const underlyingErrorCode = (error) => {
|
|
53
|
+
if (error instanceof HopperRemoteError &&
|
|
54
|
+
error.diagnosticType === "invalid_request")
|
|
55
|
+
return "invalid_request";
|
|
35
56
|
if (error instanceof ProviderSelectionError)
|
|
36
57
|
return error.reason === "provider_unavailable"
|
|
37
58
|
? "provider_unavailable"
|
|
38
59
|
: "capability_unavailable";
|
|
39
60
|
if (error instanceof BrowserObservationError)
|
|
40
|
-
return
|
|
61
|
+
return error.userCategory === "cancelled"
|
|
62
|
+
? "cancelled"
|
|
63
|
+
: browserErrorCode(error.reason);
|
|
41
64
|
if (error instanceof ArtifactOperationError)
|
|
42
65
|
return artifactOperationCode(error);
|
|
66
|
+
if (error instanceof BinaryTargetError)
|
|
67
|
+
return error.systemCode === undefined
|
|
68
|
+
? "target_unavailable"
|
|
69
|
+
: "access_denied";
|
|
43
70
|
if (error instanceof EvidenceFileError)
|
|
44
71
|
return evidenceFileCode(error.reason);
|
|
45
72
|
if (error instanceof UnknownRegistryError)
|
|
@@ -49,6 +76,10 @@ const errorCode = (error) => {
|
|
|
49
76
|
return staticErrorCode(error._tag);
|
|
50
77
|
};
|
|
51
78
|
const browserErrorCode = (reason) => {
|
|
79
|
+
if (reason === "cancelled")
|
|
80
|
+
return "cancelled";
|
|
81
|
+
if (reason === "timeout")
|
|
82
|
+
return "provider_timeout";
|
|
52
83
|
if (reason === "payload_limit")
|
|
53
84
|
return "truncated";
|
|
54
85
|
if (reason === "target_not_found" ||
|
|
@@ -68,9 +99,14 @@ const artifactOperationCode = (error) => {
|
|
|
68
99
|
return "cancelled";
|
|
69
100
|
return "artifact_operation_failed";
|
|
70
101
|
};
|
|
71
|
-
const evidenceFileCode = (reason) =>
|
|
72
|
-
|
|
73
|
-
|
|
102
|
+
const evidenceFileCode = (reason) => {
|
|
103
|
+
if (reason === "invalid-json")
|
|
104
|
+
return "evidence_integrity_mismatch";
|
|
105
|
+
// A missing, non-file or already-existing path is the caller's selection.
|
|
106
|
+
if (reason === "io")
|
|
107
|
+
return "execution_failure";
|
|
108
|
+
return "invalid_request";
|
|
109
|
+
};
|
|
74
110
|
const unknownRegistryCode = (reason) => {
|
|
75
111
|
if (reason === "revision-conflict" || reason === "already-exists")
|
|
76
112
|
return "revision_conflict";
|
|
@@ -105,7 +141,6 @@ const STATIC_ERROR_CODES = {
|
|
|
105
141
|
HopperStartError: "provider_unavailable",
|
|
106
142
|
ConfigurationError: "configuration_invalid",
|
|
107
143
|
NoBinaryOpenError: "target_unavailable",
|
|
108
|
-
BinaryTargetError: "target_unavailable",
|
|
109
144
|
EvidenceIntegrityError: "evidence_integrity_mismatch",
|
|
110
145
|
ProviderAdapterError: "execution_failure",
|
|
111
146
|
HopperRemoteError: "execution_failure",
|
|
@@ -113,6 +148,7 @@ const STATIC_ERROR_CODES = {
|
|
|
113
148
|
const staticErrorCode = (tag) => {
|
|
114
149
|
switch (tag) {
|
|
115
150
|
case "ArtifactOperationError":
|
|
151
|
+
case "BinaryTargetError":
|
|
116
152
|
case "BrowserObservationError":
|
|
117
153
|
case "EvidenceFileError":
|
|
118
154
|
case "ProcessCaptureError":
|
|
@@ -176,6 +212,8 @@ const requestErrorDetails = (error) => {
|
|
|
176
212
|
expected: error.expected,
|
|
177
213
|
actual: error.actual,
|
|
178
214
|
};
|
|
215
|
+
if (error instanceof EvidenceIntegrityError)
|
|
216
|
+
return { reason: error.message };
|
|
179
217
|
return undefined;
|
|
180
218
|
};
|
|
181
219
|
const artifactStateErrorDetails = (error) => {
|
|
@@ -196,7 +234,11 @@ const artifactStateErrorDetails = (error) => {
|
|
|
196
234
|
if (error instanceof UnknownRegistryError)
|
|
197
235
|
return { reason: error.reason };
|
|
198
236
|
if (error instanceof EvidenceFileError)
|
|
199
|
-
return {
|
|
237
|
+
return {
|
|
238
|
+
operation: error.operation,
|
|
239
|
+
reason: error.reason,
|
|
240
|
+
...(error.path === undefined ? {} : { path: error.path }),
|
|
241
|
+
};
|
|
200
242
|
return undefined;
|
|
201
243
|
};
|
|
202
244
|
const providerErrorDetails = (error) => {
|
|
@@ -257,10 +299,13 @@ const providerErrorDetails = (error) => {
|
|
|
257
299
|
...(error.operation === undefined ? {} : { operation: error.operation }),
|
|
258
300
|
...(error.requestId === undefined ? {} : { request_id: error.requestId }),
|
|
259
301
|
};
|
|
260
|
-
if (error instanceof HopperProcessError)
|
|
302
|
+
if (error instanceof HopperProcessError) {
|
|
303
|
+
const stage = error.stage;
|
|
261
304
|
return {
|
|
262
305
|
exit_code: error.exitCode,
|
|
263
|
-
stage
|
|
306
|
+
stage,
|
|
307
|
+
provider_state: error.providerState,
|
|
308
|
+
retry_action: providerRetryAction(error.providerState, error.failureCode !== undefined || error.stage === "launch"),
|
|
264
309
|
...(error.failureCode === undefined
|
|
265
310
|
? {}
|
|
266
311
|
: { failure_code: error.failureCode }),
|
|
@@ -269,6 +314,22 @@ const providerErrorDetails = (error) => {
|
|
|
269
314
|
...(error.diagnostic === undefined
|
|
270
315
|
? {}
|
|
271
316
|
: { diagnostics: { ...error.diagnostic } }),
|
|
317
|
+
...(error.launcherFailure === undefined
|
|
318
|
+
? {}
|
|
319
|
+
: { launcher: error.launcherFailure }),
|
|
320
|
+
};
|
|
321
|
+
}
|
|
322
|
+
if (error instanceof HopperStartError)
|
|
323
|
+
return {
|
|
324
|
+
stage: "launch",
|
|
325
|
+
provider_state: "unknown",
|
|
326
|
+
retry_action: error.ownerRunId === undefined ? "retry" : "unknown",
|
|
327
|
+
...(error.ownerRunId === undefined
|
|
328
|
+
? {}
|
|
329
|
+
: { owner_run_id: error.ownerRunId }),
|
|
330
|
+
...(error.launcherFailure === undefined
|
|
331
|
+
? {}
|
|
332
|
+
: { launcher: error.launcherFailure }),
|
|
272
333
|
};
|
|
273
334
|
return undefined;
|
|
274
335
|
};
|
|
@@ -290,16 +351,40 @@ const primaryBrowserFailureReason = (error) => {
|
|
|
290
351
|
};
|
|
291
352
|
const lifecycleErrorDetails = (error) => {
|
|
292
353
|
if (error instanceof AnalysisCancelledError)
|
|
293
|
-
return {
|
|
354
|
+
return {
|
|
355
|
+
operation: error.operation,
|
|
356
|
+
cleanup: error.cleanup === undefined ? "complete" : "incomplete",
|
|
357
|
+
...(error.cleanup === undefined
|
|
358
|
+
? {}
|
|
359
|
+
: {
|
|
360
|
+
cleanup_reason: error.cleanup.reason,
|
|
361
|
+
resources: [...error.cleanup.resources],
|
|
362
|
+
execution_failure: "cancelled",
|
|
363
|
+
}),
|
|
364
|
+
};
|
|
294
365
|
if (error instanceof HopperCancelledError)
|
|
295
366
|
return { operation: "hopper", cleanup: "complete" };
|
|
296
367
|
if (error instanceof AnalysisTimeoutError)
|
|
297
|
-
return {
|
|
368
|
+
return {
|
|
369
|
+
operation: error.operation,
|
|
370
|
+
timeout_ms: error.timeoutMs,
|
|
371
|
+
...(error.cleanup === undefined
|
|
372
|
+
? {}
|
|
373
|
+
: {
|
|
374
|
+
cleanup: "incomplete",
|
|
375
|
+
cleanup_reason: error.cleanup.reason,
|
|
376
|
+
resources: [...error.cleanup.resources],
|
|
377
|
+
}),
|
|
378
|
+
};
|
|
298
379
|
if (error instanceof HopperTimeoutError)
|
|
299
380
|
return {
|
|
300
|
-
stage: error.operation === undefined ? "startup" :
|
|
381
|
+
stage: error.operation === undefined ? "startup" : error.stage,
|
|
301
382
|
timeout_ms: error.timeoutMs,
|
|
383
|
+
...(error.launcherOutcome === undefined
|
|
384
|
+
? {}
|
|
385
|
+
: { launcher: error.launcherOutcome }),
|
|
302
386
|
provider_state: error.providerState,
|
|
387
|
+
retry_action: error.providerState === "busy" ? "wait" : "retry",
|
|
303
388
|
...(error.operation === undefined ? {} : { operation: error.operation }),
|
|
304
389
|
...(error.requestId === undefined ? {} : { request_id: error.requestId }),
|
|
305
390
|
};
|
|
@@ -313,18 +398,28 @@ const lifecycleErrorDetails = (error) => {
|
|
|
313
398
|
...(error.executionFailure === undefined
|
|
314
399
|
? {}
|
|
315
400
|
: { execution_failure: error.executionFailure }),
|
|
316
|
-
|
|
401
|
+
};
|
|
402
|
+
if (error._tag === "ProcessCaptureError") {
|
|
403
|
+
const details = {
|
|
404
|
+
...(error.userCategory === "cancelled"
|
|
405
|
+
? { operation: "process_capture", cleanup: "complete" }
|
|
406
|
+
: {}),
|
|
407
|
+
...(error.cleanupReport === undefined
|
|
317
408
|
? {}
|
|
318
|
-
: {
|
|
319
|
-
|
|
320
|
-
}
|
|
409
|
+
: { cleanup_report: jsonValueSchema.parse(error.cleanupReport) }),
|
|
410
|
+
...(error.executionFailure === undefined
|
|
411
|
+
? {}
|
|
412
|
+
: { execution_failure: error.executionFailure }),
|
|
413
|
+
};
|
|
414
|
+
return Object.keys(details).length === 0 ? undefined : details;
|
|
415
|
+
}
|
|
416
|
+
if (error instanceof ConfigurationError && error.settings.length > 0)
|
|
417
|
+
return {
|
|
418
|
+
settings: error.settings.map(({ setting, constraint }) => ({
|
|
419
|
+
setting,
|
|
420
|
+
constraint,
|
|
421
|
+
})),
|
|
321
422
|
};
|
|
322
|
-
if (error._tag === "ProcessCaptureError" &&
|
|
323
|
-
error.userCategory === "cancelled")
|
|
324
|
-
return { operation: "process_capture", cleanup: "complete" };
|
|
325
|
-
if (error._tag === "ProcessCaptureError" &&
|
|
326
|
-
error.executionFailure !== undefined)
|
|
327
|
-
return { execution_failure: error.executionFailure };
|
|
328
423
|
if (error instanceof BinaryTargetError)
|
|
329
424
|
return {
|
|
330
425
|
path: error.path,
|
|
@@ -332,6 +427,9 @@ const lifecycleErrorDetails = (error) => {
|
|
|
332
427
|
...(error.constraint === undefined
|
|
333
428
|
? {}
|
|
334
429
|
: { constraint: error.constraint }),
|
|
430
|
+
...(error.systemCode === undefined
|
|
431
|
+
? {}
|
|
432
|
+
: { system_code: error.systemCode, boundary: "filesystem-read" }),
|
|
335
433
|
};
|
|
336
434
|
return undefined;
|
|
337
435
|
};
|