rea-agents 3.0.0 → 3.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 +83 -108
- package/bridge/ghidra/ReaGhidraBridge.java +609 -841
- package/bridge/hopper_bridge.py +99 -344
- package/dist/application/AbortablePromise.js +6 -3
- package/dist/application/AnalysisContextQueries.js +21 -9
- 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/policy.js +17 -0
- package/dist/application/ArtifactInventory/reader.js +1 -4
- package/dist/application/ArtifactInventory/scanCanonical.js +8 -15
- package/dist/application/ArtifactInventory/scanReader.js +76 -58
- package/dist/application/ArtifactInventory/types.js +1 -5
- package/dist/application/ArtifactInventory.js +6 -14
- package/dist/application/AuthorizedArtifactInventory.js +3 -13
- package/dist/application/BinarySession.js +54 -28
- package/dist/application/BinarySessionComposition.js +0 -11
- package/dist/application/BinarySessionOpen.js +2 -1
- package/dist/application/BinarySessionRecords.js +24 -86
- package/dist/application/BinarySessionStatus.js +16 -21
- package/dist/application/BinaryTargetResolver.js +216 -0
- package/dist/application/BrowserEvidence.js +39 -57
- 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/CapabilityClientRequirements.js +26 -0
- package/dist/application/CapabilityInventory.js +143 -77
- 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 +50 -0
- package/dist/application/ElectronActiveObservationPort.js +1 -0
- package/dist/application/ElectronActiveObservationService.js +78 -0
- 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 +98 -64
- package/dist/application/EvidenceBundleCommands.js +16 -12
- package/dist/application/EvidenceBundleFiles.js +9 -15
- package/dist/application/EvidenceLedger.js +14 -42
- 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/JavaScriptReplayPermission.js +1 -1
- package/dist/application/JavaScriptReplayPlanning.js +9 -3
- package/dist/application/JavaScriptReplayService.js +29 -47
- 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 +14 -13
- package/dist/application/NativeApiInspection.js +2 -7
- package/dist/application/NativeUiActionTrace.js +394 -0
- package/dist/application/NodeRuntimeCharacterizationService.js +11 -16
- 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 +10 -12
- package/dist/application/ProcessCheckpoints.js +29 -11
- package/dist/application/ProcessCli.js +8 -17
- package/dist/application/ProcessEvidence.js +5 -7
- package/dist/application/ProcessHarness.js +60 -20
- package/dist/application/ProcessNormalization.js +2 -1
- 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 -95
- 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 +21 -47
- 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 -88
- 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/application/WindowsCapabilities.js +5 -4
- package/dist/artifacts/ArtifactPaths.js +2 -5
- package/dist/artifacts/ArtifactProvider.js +43 -67
- 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 +21 -31
- 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 -95
- package/dist/browser/CdpCaptureValues.js +21 -21
- package/dist/browser/CdpConnection.js +10 -25
- package/dist/browser/CdpElectronInspection.js +29 -51
- 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 +10 -10
- package/dist/browser/PlaywrightBrowserScenarioProvider.js +31 -64
- package/dist/browser/PlaywrightElectronActiveActions.js +309 -0
- package/dist/browser/PlaywrightElectronActiveProvider.js +274 -0
- 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 +7 -9
- package/dist/browser/PlaywrightScenarioEvents.js +45 -94
- package/dist/browser/PlaywrightScenarioSession.js +18 -34
- package/dist/browser/PngVisualDiff.js +22 -14
- package/dist/browser/SensitiveTextCapture.js +1 -18
- package/dist/browser/V8InspectorCaptureProjection.js +7 -7
- 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 +12 -60
- 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 +6 -271
- package/dist/cli/setupCommands.js +3 -12
- package/dist/cli/utilityCommands.js +7 -41
- package/dist/cli.js +0 -2
- package/dist/cliApplicationCommands.js +44 -114
- package/dist/cliBrowserAdvancedCommands.js +12 -102
- package/dist/cliBrowserCommands.js +19 -124
- package/dist/cliBrowserContext.js +30 -0
- package/dist/cliCommandNames.js +5 -5
- package/dist/cliElectronCommands.js +49 -71
- package/dist/cliEvidenceCommands.js +8 -77
- package/dist/cliJavaScriptRuntimeCommands.js +18 -92
- package/dist/cliJsonInput.js +4 -14
- package/dist/cliObservationOptions.js +11 -92
- package/dist/cliPolicyCommands.js +2 -16
- package/dist/cliProcessCommands.js +3 -3
- package/dist/cliSetup.js +0 -13
- package/dist/config/browserScenario.js +77 -0
- package/dist/config/electronAutomation.js +35 -0
- package/dist/config/environment.js +6 -9
- package/dist/config/javascriptReplay.js +41 -0
- package/dist/config/managedRuntime.js +25 -0
- package/dist/config/parseConfig.js +56 -232
- package/dist/config/parsers.js +16 -28
- package/dist/config/passiveObservation.js +87 -0
- package/dist/config/permissions.js +0 -7
- package/dist/config/processCapture.js +47 -0
- package/dist/contracts/analysisSearchContract.js +2 -5
- package/dist/contracts/applicationToolContracts.js +58 -114
- package/dist/contracts/applicationWorkflowInputContracts.js +29 -114
- package/dist/contracts/artifactComparisonExample.js +58 -60
- package/dist/contracts/artifactToolContracts.js +37 -91
- package/dist/contracts/browserScenarioToolContracts.js +6 -51
- package/dist/contracts/browserToolContracts.js +10 -75
- package/dist/contracts/electronToolContracts.js +27 -98
- package/dist/contracts/enhancedInputs.js +31 -78
- 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 +4 -5
- 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 +10 -104
- package/dist/contracts/managedWorkflowExamples.js +77 -125
- package/dist/contracts/managedWorkflowToolContracts.js +51 -74
- package/dist/contracts/nativeToolContracts.js +9 -14
- 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 +52 -0
- package/dist/contracts/toolContractExamples.js +11 -10
- package/dist/contracts/toolContractHelpers.js +19 -0
- package/dist/contracts/toolContracts.js +60 -143
- package/dist/contracts/toolEffects.js +16 -9
- package/dist/contracts/toolOutputSchemaGroups.js +47 -86
- package/dist/contracts/toolOutputSchemaPrimitives.js +72 -62
- package/dist/contracts/toolSchemaMetadata.js +117 -0
- package/dist/contracts/unknownContractExamples.js +0 -2
- package/dist/doctorRuntime.js +1 -1
- 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 -52
- package/dist/domain/appleApplication.js +24 -65
- 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 -219
- package/dist/domain/binaryTargetTypes.js +1 -0
- package/dist/domain/browserCaptureComparison.js +35 -60
- package/dist/domain/browserObservation.js +45 -197
- 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 +53 -54
- package/dist/domain/callPath.js +50 -169
- 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 +39 -11
- package/dist/domain/conformanceTrustGate.js +174 -30
- package/dist/domain/customProtocolCapture.js +4 -4
- package/dist/domain/electronActiveObservation.js +244 -0
- package/dist/domain/electronObservation.js +21 -83
- 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 +14 -18
- package/dist/domain/errors.js +33 -54
- package/dist/domain/eventProcessTree.js +101 -90
- 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 +8 -8
- package/dist/domain/functionComparisonResults.js +25 -15
- package/dist/domain/functionComparisonSchemas.js +49 -33
- package/dist/domain/functionDossierEvidence.js +31 -151
- package/dist/domain/hopperStartupFailure.js +1 -1
- package/dist/domain/hopperValues.js +17 -141
- package/dist/domain/inputIssueProjection.js +4 -1
- 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 +70 -77
- 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 +100 -101
- package/dist/domain/javascriptRuntimeLoadState.js +3 -8
- package/dist/domain/javascriptRuntimeObservation.js +43 -103
- package/dist/domain/javascriptRuntimeReconciliation.js +1 -3
- package/dist/domain/javascriptRuntimeReconciliationActive.js +80 -0
- package/dist/domain/javascriptRuntimeReconciliationGraph.js +21 -33
- package/dist/domain/javascriptRuntimeReconciliationMatching.js +75 -61
- package/dist/domain/javascriptRuntimeReconciliationParsing.js +21 -46
- package/dist/domain/javascriptRuntimeReconciliationResult.js +25 -19
- package/dist/domain/javascriptRuntimeReconciliationRuntime.js +8 -12
- package/dist/domain/javascriptRuntimeReconciliationSchemas.js +34 -49
- 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 +17 -14
- 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 +15 -18
- 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/processCaptureReactiveValidation.js +8 -3
- package/dist/domain/processCaptureValidation.js +8 -10
- package/dist/domain/processComparison.js +12 -16
- package/dist/domain/processObservation.js +5 -6
- package/dist/domain/processReactiveMatching.js +32 -46
- 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 +42 -21
- package/dist/domain/processScenario.js +62 -93
- package/dist/domain/processTraceComparison.js +0 -7
- package/dist/domain/processTraceEvaluation.js +14 -4
- package/dist/domain/processTraceSpecification.js +11 -17
- package/dist/domain/protocolCapture.js +11 -9
- 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 +66 -40
- 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 +3 -7
- package/dist/domain/replayMachine.js +19 -31
- package/dist/domain/replayMachineRun.js +15 -63
- package/dist/domain/replayMachineRuntime.js +46 -44
- 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 +11 -87
- package/dist/domain/sourceToBundleComparisonSchemas.js +25 -50
- package/dist/domain/sourceToBundleSignals.js +11 -16
- package/dist/domain/staticRuntimeCorrelation.js +44 -54
- 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 +48 -85
- 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 -42
- 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 +5 -13
- package/dist/ghidra/GhidraClientStartup.js +1 -1
- 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 +67 -108
- package/dist/ghidra/GhidraInstallation.js +98 -42
- package/dist/ghidra/GhidraInventoryValues.js +18 -77
- package/dist/ghidra/GhidraLauncher.js +0 -8
- package/dist/ghidra/GhidraProvider.js +32 -31
- package/dist/ghidra/GhidraProviderCapabilities.js +11 -48
- package/dist/ghidra/GhidraRequestQueue.js +6 -30
- package/dist/ghidra/GhidraResponseBuffer.js +1 -7
- package/dist/ghidra/GhidraSessionValues.js +0 -2
- package/dist/ghidra/GhidraSocketConnection.js +1 -1
- package/dist/ghidra/GhidraTransport.js +4 -7
- package/dist/ghidra/protocol.js +19 -42
- package/dist/hopper/BridgeLauncher.js +115 -37
- package/dist/hopper/HopperAnalysisProfile.js +3 -5
- package/dist/hopper/HopperCleanup.js +11 -9
- package/dist/hopper/HopperClient.js +5 -8
- package/dist/hopper/HopperProcessDiagnostic.js +2 -2
- package/dist/hopper/HopperProvider.js +0 -30
- 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 +21 -26
- package/dist/hopper/protocol.js +6 -4
- package/dist/main/reload.js +1 -9
- package/dist/main/shutdown.js +1 -1
- package/dist/main/state.js +0 -23
- package/dist/main/transport.js +27 -39
- package/dist/main.js +17 -15
- package/dist/mcpDoctor.js +27 -69
- 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/PrivateRuntimeRoot.js +17 -0
- package/dist/process/ProcessOwnership.js +67 -130
- package/dist/process/ProcessOwnershipIdentity.js +13 -0
- package/dist/process/ProcessOwnershipObservation.js +87 -0
- package/dist/process/ProcessOwnershipProcessTree.js +22 -0
- package/dist/process/ProviderDeadline.js +8 -12
- package/dist/process/ProviderProcess.js +7 -28
- package/dist/process/WindowsAuthority.js +32 -0
- 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 +95 -13
- package/dist/replay/JavaScriptReplayWorkerTypes.js +1 -0
- package/dist/replay/LinuxJavaScriptReplayRunner.js +42 -43
- package/dist/replay/LinuxJavaScriptReplaySandbox.js +0 -19
- package/dist/replay/LinuxRuntimeClosure.js +1 -3
- package/dist/replay/ReplayOutcome.js +27 -18
- package/dist/replay/ReplayProcessLifecycle.js +32 -7
- package/dist/replay/ReplaySeccompFile.js +29 -0
- package/dist/replay/ReplayWorkerProtocol.js +33 -30
- package/dist/replay/SystemJavaScriptReplayHost.js +45 -74
- package/dist/server/ProcessCaptureElicitation.js +4 -8
- package/dist/server/createServer.js +145 -119
- package/dist/server/mcpClientMetadata.js +32 -0
- package/dist/server/promptCompletion.js +37 -61
- package/dist/server/recordDerivedEvidence.js +1 -1
- package/dist/server/registerApplicationTools/characterization.js +10 -21
- package/dist/server/registerApplicationTools/compareExportShapes.js +6 -16
- package/dist/server/registerApplicationTools/compareSourceToBundle.js +6 -15
- package/dist/server/registerApplicationTools/compareVersions.js +6 -16
- package/dist/server/registerApplicationTools/controlledReplay.js +8 -15
- package/dist/server/registerApplicationTools/coverage.js +7 -78
- package/dist/server/registerApplicationTools/helpers.js +1 -13
- package/dist/server/registerApplicationTools/obligationLedger.js +4 -8
- package/dist/server/registerApplicationTools/traceFeature.js +6 -15
- package/dist/server/registerApplicationTools/traceSemantics.js +5 -13
- package/dist/server/registerApplicationTools.js +0 -2
- package/dist/server/registerArtifactComparisonTool.js +27 -35
- package/dist/server/registerBrowserScenarioTool.js +3 -8
- package/dist/server/registerBrowserTools.js +36 -81
- package/dist/server/registerBundleComparisonTool.js +10 -16
- package/dist/server/registerCloseLifecycleTool.js +5 -27
- package/dist/server/registerElectronTools.js +29 -65
- package/dist/server/registerEnhancedTools.js +118 -127
- package/dist/server/registerEvidenceTools.js +19 -30
- package/dist/server/registerFunctionComparisonTool.js +35 -34
- package/dist/server/registerInvestigationTools/helpers.js +3 -32
- package/dist/server/registerInvestigationTools.js +36 -148
- package/dist/server/registerJavaScriptRuntimeObservationTools.js +15 -27
- package/dist/server/registerManagedWorkflowTools/compareManagedMembers.js +16 -23
- package/dist/server/registerManagedWorkflowTools/contract.js +2 -3
- package/dist/server/registerManagedWorkflowTools/evidence.js +19 -35
- package/dist/server/registerManagedWorkflowTools/importManagedReconstruction.js +4 -14
- package/dist/server/registerManagedWorkflowTools/planManagedRuntimeCorrelation.js +4 -14
- package/dist/server/registerManagedWorkflowTools/projectManagedApplicationGraph.js +11 -20
- package/dist/server/registerManagedWorkflowTools/verifyManagedNativeBoundaries.js +10 -21
- package/dist/server/registerOfficialTools.js +8 -51
- package/dist/server/registerProcessComparisonTool.js +43 -38
- package/dist/server/registerPrompts.js +19 -17
- package/dist/server/registerReplayMachineTool.js +4 -10
- package/dist/server/registerSessionRecordTools.js +36 -153
- package/dist/server/registerSessionStatusTool.js +18 -96
- package/dist/server/registerSessionTools.js +34 -91
- package/dist/server/sessionAvailabilityPolicy.js +2 -3
- package/dist/server/sessionEvidence.js +9 -15
- package/dist/server/sessionToolPolicies.js +1 -13
- package/dist/server/toolRegistrationOptions.js +4 -192
- package/dist/server/toolResult.js +15 -67
- package/dist/serverIdentity.js +0 -20
- package/install.sh +1 -1
- package/package.json +27 -15
- package/scripts/electron-active-hook-boundaries.cjs +394 -0
- package/scripts/electron-active-hook.cjs +469 -0
- package/scripts/hopper-demo-x11.py +13 -32
- package/scripts/rea.mjs +1 -11
- package/skills/reverse-engineer-anything/SKILL.md +46 -11
- 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 -180
- package/dist/application/BoundedJsonFiles.js +0 -86
- package/dist/application/CrossVersionInventory.js +0 -128
- 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 -346
- package/dist/domain/jsonLimits.js +0 -26
- package/dist/domain/knownPageCoverage.js +0 -21
- package/dist/domain/processPairedExperiment.js +0 -128
- package/dist/server/DynamicToolAvailability.js +0 -70
- package/dist/server/LazyToolCatalog.js +0 -134
- package/dist/server/hydrateServerTools.js +0 -191
- package/dist/server/javascriptApplicationResult.js +0 -106
- package/dist/server/permissionFailure.js +0 -12
- package/dist/server/registerApplicationTools/readiness.js +0 -55
- 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
- package/dist/server/toolInputValidation.js +0 -77
- package/scripts/package-runner-bootstrap.mjs +0 -72
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { applicationVersionComparisonResultSchema } from "../domain/javascriptApplicationVersionComparisonSchemas.js";
|
|
2
|
-
import { z } from "zod";
|
|
3
2
|
import { applicationFeatureTraceResultSchema } from "../domain/javascriptFeatureTraceSchemas.js";
|
|
4
3
|
import { javaScriptSemanticTraceResultSchema } from "../domain/javascriptSemanticTraceSchemas.js";
|
|
5
4
|
import { javaScriptExportShapeComparisonResultSchema } from "../domain/javascriptExportShapeComparisonSchemas.js";
|
|
@@ -7,44 +6,25 @@ import { sourceToBundleComparisonResultSchema } from "../domain/sourceToBundleCo
|
|
|
7
6
|
import { compareApplicationVersionsRequestSchema, compareJavaScriptExportShapesRequestSchema, compareSourceToBundleRequestSchema, traceApplicationFeatureRequestSchema, traceJavaScriptSemanticsRequestSchema, } from "./applicationWorkflowInputContracts.js";
|
|
8
7
|
import { controlledReplayInputSchema, controlledReplayOutputSchema, } from "../domain/javascriptReplay.js";
|
|
9
8
|
import { nodeCharacterizationExecutionInputSchema, nodeCharacterizationExecutionOutputSchema, nodeCharacterizationPreparationInputSchema, nodeCharacterizationPreparationOutputSchema, } from "../domain/nodeRuntimeCharacterization.js";
|
|
10
|
-
import {
|
|
9
|
+
import { reconstructionCoverageEvaluationInputSchema } from "../application/ReconstructionCoverageService.js";
|
|
11
10
|
import { reconstructionClosureResultSchema } from "../domain/reconstructionCoverage.js";
|
|
12
|
-
import { reconstructionObligationLedgerInputSchema,
|
|
13
|
-
import { reconstructionReadinessInputSchema, reconstructionReadinessReportSchema, } from "../domain/reconstructionReadinessSchemas.js";
|
|
11
|
+
import { reconstructionObligationLedgerInputSchema, reconstructionObligationLedgerSchema, } from "../domain/reconstructionObligationLedgerSchemas.js";
|
|
14
12
|
import { jsonObjectSchema } from "../domain/jsonValue.js";
|
|
15
13
|
import { toolContractMetadata } from "./toolEffects.js";
|
|
16
14
|
import { evidenceResultOf } from "./toolOutputSchemas.js";
|
|
17
15
|
import { JAVASCRIPT_APPLICATION_VERSION_COMPARISON_EXAMPLE, JAVASCRIPT_EXPORT_SHAPE_COMPARISON_EXAMPLE, JAVASCRIPT_FEATURE_TRACE_EXAMPLE, SOURCE_TO_BUNDLE_COMPARISON_EXAMPLE, } from "./javascriptApplicationWorkflowExamples.js";
|
|
18
|
-
import { RECONSTRUCTION_READINESS_EXAMPLE } from "./reconstructionReadinessExample.js";
|
|
19
16
|
const traceOutputSchema = evidenceResultOf(applicationFeatureTraceResultSchema);
|
|
20
17
|
const semanticTraceOutputSchema = evidenceResultOf(javaScriptSemanticTraceResultSchema);
|
|
21
18
|
const comparisonOutputSchema = evidenceResultOf(applicationVersionComparisonResultSchema);
|
|
22
19
|
const sourceToBundleOutputSchema = evidenceResultOf(sourceToBundleComparisonResultSchema);
|
|
23
20
|
const exportShapeComparisonOutputSchema = evidenceResultOf(javaScriptExportShapeComparisonResultSchema);
|
|
24
|
-
const reconstructionObligationLedgerOutputSchema = evidenceResultOf(
|
|
25
|
-
const reconstructionReadinessOutputSchema = evidenceResultOf(reconstructionReadinessReportSchema
|
|
26
|
-
.pick({
|
|
27
|
-
schema: true,
|
|
28
|
-
schema_version: true,
|
|
29
|
-
report_id: true,
|
|
30
|
-
source_digest: true,
|
|
31
|
-
report_digest: true,
|
|
32
|
-
status: true,
|
|
33
|
-
summary: true,
|
|
34
|
-
metrics: true,
|
|
35
|
-
})
|
|
36
|
-
.extend({
|
|
37
|
-
report_resource_uri: z
|
|
38
|
-
.string()
|
|
39
|
-
.regex(/^rea:\/\/evidence\/ev_[a-f0-9]{64}\/reconstruction-readiness-report$/u),
|
|
40
|
-
}));
|
|
21
|
+
const reconstructionObligationLedgerOutputSchema = evidenceResultOf(reconstructionObligationLedgerSchema);
|
|
41
22
|
const HASH = "0".repeat(64);
|
|
42
23
|
const NODE_PREPARATION_EXAMPLE = jsonObjectSchema.parse({
|
|
43
|
-
preparation_approved: true,
|
|
44
24
|
selected_alias: "bundle",
|
|
45
25
|
expected_effect: "pure",
|
|
46
26
|
instrumentation: {
|
|
47
|
-
artifact_path: "/
|
|
27
|
+
artifact_path: "/tmp/example/bundle.js",
|
|
48
28
|
artifact_sha256: HASH,
|
|
49
29
|
selection: {
|
|
50
30
|
byte_start: 100,
|
|
@@ -59,7 +39,7 @@ const NODE_PREPARATION_EXAMPLE = jsonObjectSchema.parse({
|
|
|
59
39
|
modules: [
|
|
60
40
|
{
|
|
61
41
|
alias: "bundle",
|
|
62
|
-
path: "/
|
|
42
|
+
path: "/tmp/example/bundle.js",
|
|
63
43
|
format: "commonjs-factory",
|
|
64
44
|
role: "module",
|
|
65
45
|
dependencies: {},
|
|
@@ -69,43 +49,14 @@ const NODE_PREPARATION_EXAMPLE = jsonObjectSchema.parse({
|
|
|
69
49
|
entry_export: "selected",
|
|
70
50
|
},
|
|
71
51
|
cases: [{ case_id: "empty", arguments: [""] }],
|
|
72
|
-
approved: false,
|
|
73
52
|
},
|
|
74
53
|
});
|
|
75
|
-
const COVERAGE_WORKSPACE_EXAMPLE = jsonObjectSchema.parse({
|
|
76
|
-
schema_version: 1,
|
|
77
|
-
workspace_id: `rcw_${HASH}`,
|
|
78
|
-
name: "replacement",
|
|
79
|
-
revision: 1,
|
|
80
|
-
previous_revision_sha256: null,
|
|
81
|
-
revision_sha256: HASH,
|
|
82
|
-
evidence_bundle: {
|
|
83
|
-
bundle_version: 2,
|
|
84
|
-
artifacts: [],
|
|
85
|
-
providers: [],
|
|
86
|
-
environments: [],
|
|
87
|
-
scenarios: [],
|
|
88
|
-
captures: [],
|
|
89
|
-
unknowns: [],
|
|
90
|
-
records: [],
|
|
91
|
-
},
|
|
92
|
-
artifacts: [],
|
|
93
|
-
surfaces: [],
|
|
94
|
-
owners: [],
|
|
95
|
-
claims: [],
|
|
96
|
-
verifier_contracts: [],
|
|
97
|
-
verifier_results: [],
|
|
98
|
-
residual_unknown_ids: [],
|
|
99
|
-
contradictions: [],
|
|
100
|
-
package_proofs: [],
|
|
101
|
-
boundaries: [],
|
|
102
|
-
});
|
|
103
54
|
/** Provider-neutral graph workflow contracts shared by MCP and CLI adapters. */
|
|
104
55
|
export const APPLICATION_TOOL_CONTRACTS = [
|
|
105
56
|
{
|
|
106
57
|
name: "trace_application_feature",
|
|
107
58
|
...toolContractMetadata("trace_application_feature"),
|
|
108
|
-
description: "Trace a typed literal seed through an authenticated JavaScript Application Graph supplied as
|
|
59
|
+
description: "Trace a typed literal seed through every reachable part of an authenticated JavaScript Application Graph supplied as inline Evidence. Original static, native, passive-runtime, inferred, and unknown authorities remain distinct; native addon handoffs never open a provider or execute the application.",
|
|
109
60
|
kind: "application",
|
|
110
61
|
inputSchema: traceApplicationFeatureRequestSchema,
|
|
111
62
|
outputSchema: traceOutputSchema,
|
|
@@ -119,7 +70,7 @@ export const APPLICATION_TOOL_CONTRACTS = [
|
|
|
119
70
|
{
|
|
120
71
|
name: "trace_javascript_semantics",
|
|
121
72
|
...toolContractMetadata("trace_javascript_semantics"),
|
|
122
|
-
description: "Trace
|
|
73
|
+
description: "Trace static JavaScript data-flow, direct call/return, and closure relations from inline application Evidence. Dynamic or unsupported semantics remain explicit unknowns; static reachability never claims runtime execution.",
|
|
123
74
|
kind: "application",
|
|
124
75
|
inputSchema: traceJavaScriptSemanticsRequestSchema,
|
|
125
76
|
outputSchema: semanticTraceOutputSchema,
|
|
@@ -127,7 +78,7 @@ export const APPLICATION_TOOL_CONTRACTS = [
|
|
|
127
78
|
{
|
|
128
79
|
title: "Trace backward provenance from one semantic node",
|
|
129
80
|
input: {
|
|
130
|
-
|
|
81
|
+
application: JAVASCRIPT_FEATURE_TRACE_EXAMPLE.application,
|
|
131
82
|
query: {
|
|
132
83
|
seed: { kind: "semantic-node", node_id: `jsrg_node_${HASH}` },
|
|
133
84
|
direction: "backward-provenance",
|
|
@@ -140,7 +91,7 @@ export const APPLICATION_TOOL_CONTRACTS = [
|
|
|
140
91
|
{
|
|
141
92
|
name: "compare_application_versions",
|
|
142
93
|
...toolContractMetadata("compare_application_versions"),
|
|
143
|
-
description: "Compare two authenticated JavaScript Application Graph versions supplied as
|
|
94
|
+
description: "Compare two authenticated JavaScript Application Graph versions supplied as inline Evidence. Uses unique-only exact digest, module source digest, source-map identity, structural fingerprint, and non-module semantic-key tiers. Reports added, removed, changed, ambiguous, and unknown entities plus the complete matching changed_from graph without fuzzy or module-ordinal pairing.",
|
|
144
95
|
kind: "application",
|
|
145
96
|
inputSchema: compareApplicationVersionsRequestSchema,
|
|
146
97
|
outputSchema: comparisonOutputSchema,
|
|
@@ -154,7 +105,7 @@ export const APPLICATION_TOOL_CONTRACTS = [
|
|
|
154
105
|
{
|
|
155
106
|
name: "compare_source_to_bundle",
|
|
156
107
|
...toolContractMetadata("compare_source_to_bundle"),
|
|
157
|
-
description: "Compare a cryptographically committed HistoricalSourceGraph
|
|
108
|
+
description: "Compare a cryptographically committed HistoricalSourceGraph with inline authenticated JavaScript Application Graph Evidence. Uses explicit exact-digest, source-map path, current-path, suffix, and basename signals with stable weights. Classifies unchanged, modified, removed, split, merged, duplicated, and unknown; incomplete coverage and ambiguous weak signals never become absence or forced matches.",
|
|
158
109
|
kind: "application",
|
|
159
110
|
inputSchema: compareSourceToBundleRequestSchema,
|
|
160
111
|
outputSchema: sourceToBundleOutputSchema,
|
|
@@ -168,7 +119,7 @@ export const APPLICATION_TOOL_CONTRACTS = [
|
|
|
168
119
|
{
|
|
169
120
|
name: "compare_javascript_export_shapes",
|
|
170
121
|
...toolContractMetadata("compare_javascript_export_shapes"),
|
|
171
|
-
description: "Compare
|
|
122
|
+
description: "Compare static return shapes for one exact module/export selector on each authenticated JavaScript Application Graph supplied as inline Evidence. Variants pair only by reciprocal unique literal discriminants; dynamic values, incomplete properties, and ambiguous variants remain unknown. Reports JSON Pointer changes and recommends controlled replay separately without executing JavaScript.",
|
|
172
123
|
kind: "application",
|
|
173
124
|
inputSchema: compareJavaScriptExportShapesRequestSchema,
|
|
174
125
|
outputSchema: exportShapeComparisonOutputSchema,
|
|
@@ -182,7 +133,7 @@ export const APPLICATION_TOOL_CONTRACTS = [
|
|
|
182
133
|
{
|
|
183
134
|
name: "run_controlled_replay",
|
|
184
135
|
...toolContractMetadata("run_controlled_replay"),
|
|
185
|
-
description: "Plan or execute a content-bound extracted-module JavaScript replay inside the Linux Bubblewrap, seccomp, and cgroup boundary. Execution requires
|
|
136
|
+
description: "Plan or execute a content-bound extracted-module JavaScript replay inside the Linux Bubblewrap, seccomp, and cgroup boundary. Execution requires the exact plan digest. Supports deterministic boundary cases and optional left/right differential comparison; observations have controlled-replay authority and do not claim real application runtime behavior.",
|
|
186
137
|
kind: "application",
|
|
187
138
|
inputSchema: controlledReplayInputSchema,
|
|
188
139
|
outputSchema: controlledReplayOutputSchema,
|
|
@@ -195,7 +146,7 @@ export const APPLICATION_TOOL_CONTRACTS = [
|
|
|
195
146
|
modules: [
|
|
196
147
|
{
|
|
197
148
|
alias: "parser",
|
|
198
|
-
path: "/
|
|
149
|
+
path: "/tmp/example/parser.mjs",
|
|
199
150
|
format: "esm",
|
|
200
151
|
role: "module",
|
|
201
152
|
dependencies: {},
|
|
@@ -226,7 +177,6 @@ export const APPLICATION_TOOL_CONTRACTS = [
|
|
|
226
177
|
result_depth: 16,
|
|
227
178
|
result_nodes: 10000,
|
|
228
179
|
},
|
|
229
|
-
approved: false,
|
|
230
180
|
},
|
|
231
181
|
},
|
|
232
182
|
],
|
|
@@ -234,7 +184,7 @@ export const APPLICATION_TOOL_CONTRACTS = [
|
|
|
234
184
|
{
|
|
235
185
|
name: "prepare_node_characterization",
|
|
236
186
|
...toolContractMetadata("prepare_node_characterization"),
|
|
237
|
-
description: "Prepare a hash-bound Node/JavaScript characterization plan and deterministic reversible export transformation without executing target code. The exact source, selected byte range, runtime closure, sandbox profile, cases, and limits are committed for
|
|
187
|
+
description: "Prepare a hash-bound Node/JavaScript characterization plan and deterministic reversible export transformation without executing target code. The exact source, selected byte range, runtime closure, sandbox profile, cases, and limits are committed for later execution.",
|
|
238
188
|
kind: "application",
|
|
239
189
|
inputSchema: nodeCharacterizationPreparationInputSchema,
|
|
240
190
|
outputSchema: nodeCharacterizationPreparationOutputSchema,
|
|
@@ -248,15 +198,14 @@ export const APPLICATION_TOOL_CONTRACTS = [
|
|
|
248
198
|
{
|
|
249
199
|
name: "execute_node_characterization",
|
|
250
200
|
...toolContractMetadata("execute_node_characterization"),
|
|
251
|
-
description: "Recompute and execute one
|
|
201
|
+
description: "Recompute and execute one exact Node characterization plan in the owned controlled-replay boundary. Returns transformation, replay, cleanup, and provider-neutral characterization Evidence; stale plans fail before execution.",
|
|
252
202
|
kind: "application",
|
|
253
203
|
inputSchema: nodeCharacterizationExecutionInputSchema,
|
|
254
204
|
outputSchema: nodeCharacterizationExecutionOutputSchema,
|
|
255
205
|
examples: [
|
|
256
206
|
{
|
|
257
|
-
title: "Execute one
|
|
207
|
+
title: "Execute one exact characterization plan",
|
|
258
208
|
input: {
|
|
259
|
-
execution_approved: true,
|
|
260
209
|
approved_plan_sha256: HASH,
|
|
261
210
|
preparation: NODE_PREPARATION_EXAMPLE,
|
|
262
211
|
},
|
|
@@ -266,16 +215,15 @@ export const APPLICATION_TOOL_CONTRACTS = [
|
|
|
266
215
|
{
|
|
267
216
|
name: "build_reconstruction_obligation_ledger",
|
|
268
217
|
...toolContractMetadata("build_reconstruction_obligation_ledger"),
|
|
269
|
-
description: "Generate
|
|
218
|
+
description: "Generate the complete deterministic ReconstructionObligationLedger from an authenticated Evidence bundle, reviewed obligations, and an explicit reconstruction manifest. Static candidates remain candidates; duplicate ownership, missing original or reconstruction cases, missing parser/type, weak verifier authority, unenumerated claims, contradictions, dependencies, and residual unknowns fail closed. The inline result carries the full-ledger closure digest and typed per-obligation diagnostics.",
|
|
270
219
|
kind: "application",
|
|
271
220
|
inputSchema: reconstructionObligationLedgerInputSchema,
|
|
272
221
|
outputSchema: reconstructionObligationLedgerOutputSchema,
|
|
273
222
|
examples: [
|
|
274
223
|
{
|
|
275
|
-
title: "Generate the
|
|
224
|
+
title: "Generate the complete obligation ledger",
|
|
276
225
|
input: {
|
|
277
226
|
evidence_bundle: {
|
|
278
|
-
bundle_version: 2,
|
|
279
227
|
artifacts: [],
|
|
280
228
|
providers: [],
|
|
281
229
|
environments: [],
|
|
@@ -286,71 +234,67 @@ export const APPLICATION_TOOL_CONTRACTS = [
|
|
|
286
234
|
},
|
|
287
235
|
reviewed_obligations: [],
|
|
288
236
|
manifest: {
|
|
289
|
-
schema_version: 1,
|
|
290
237
|
bindings: [],
|
|
291
238
|
contradictions: [],
|
|
292
239
|
},
|
|
293
|
-
limits: { max_obligations: 1_000 },
|
|
294
|
-
page: { offset: 0, limit: 50 },
|
|
295
|
-
},
|
|
296
|
-
},
|
|
297
|
-
],
|
|
298
|
-
},
|
|
299
|
-
{
|
|
300
|
-
name: "evaluate_reconstruction_readiness",
|
|
301
|
-
...toolContractMetadata("evaluate_reconstruction_readiness"),
|
|
302
|
-
description: "Evaluate the fixed nine-stage public reconstruction journey into a deterministic ReconstructionReadinessReport/v1. Exact capability limits, provider routing, CLI/MCP status parity, bounded authority, partial-order comparison, contradictions, obligation closure, cleanup, and replay digests fail closed. Aggregate pass is emitted only when every required stage and check passes with attributable Evidence.",
|
|
303
|
-
kind: "application",
|
|
304
|
-
inputSchema: reconstructionReadinessInputSchema,
|
|
305
|
-
outputSchema: reconstructionReadinessOutputSchema,
|
|
306
|
-
examples: [
|
|
307
|
-
{
|
|
308
|
-
title: "Evaluate the complete synthetic reconstruction journey",
|
|
309
|
-
input: RECONSTRUCTION_READINESS_EXAMPLE,
|
|
310
|
-
},
|
|
311
|
-
],
|
|
312
|
-
},
|
|
313
|
-
{
|
|
314
|
-
name: "commit_reconstruction_coverage",
|
|
315
|
-
...toolContractMetadata("commit_reconstruction_coverage"),
|
|
316
|
-
description: "Atomically commit one canonical evidence-backed reconstruction coverage workspace revision under an approved root. CAS revisions reject lost updates; every Evidence and residual-unknown reference must resolve in the embedded canonical bundle.",
|
|
317
|
-
kind: "application",
|
|
318
|
-
inputSchema: reconstructionCoverageCommitInputSchema,
|
|
319
|
-
outputSchema: reconstructionCoverageCommitOutputSchema,
|
|
320
|
-
examples: [
|
|
321
|
-
{
|
|
322
|
-
title: "Commit the first canonical coverage revision",
|
|
323
|
-
input: {
|
|
324
|
-
approved: true,
|
|
325
|
-
workspace_path: "/approved/coverage.json",
|
|
326
|
-
expected_revision: null,
|
|
327
|
-
workspace: COVERAGE_WORKSPACE_EXAMPLE,
|
|
328
240
|
},
|
|
329
241
|
},
|
|
330
242
|
],
|
|
331
243
|
},
|
|
332
244
|
{
|
|
333
|
-
name: "
|
|
334
|
-
...toolContractMetadata("
|
|
335
|
-
description: "Evaluate
|
|
245
|
+
name: "evaluate_reconstruction_coverage",
|
|
246
|
+
...toolContractMetadata("evaluate_reconstruction_coverage"),
|
|
247
|
+
description: "Evaluate inline evidence-backed reconstruction coverage against one named boundary. Missing ownership or inventory is partial; stale, weak, truncated, skipped, or unresolved proof is unknown; contradictions, failed proof, missing owners, and authority routing fail closed.",
|
|
336
248
|
kind: "application",
|
|
337
|
-
inputSchema:
|
|
249
|
+
inputSchema: reconstructionCoverageEvaluationInputSchema,
|
|
338
250
|
outputSchema: reconstructionClosureResultSchema,
|
|
339
251
|
examples: [
|
|
340
252
|
{
|
|
341
253
|
title: "Evaluate one replacement boundary",
|
|
342
254
|
input: {
|
|
343
|
-
|
|
255
|
+
coverage: {
|
|
256
|
+
evidence_bundle: {
|
|
257
|
+
artifacts: [],
|
|
258
|
+
providers: [],
|
|
259
|
+
environments: [],
|
|
260
|
+
scenarios: [],
|
|
261
|
+
captures: [],
|
|
262
|
+
unknowns: [],
|
|
263
|
+
records: [],
|
|
264
|
+
},
|
|
265
|
+
artifacts: [],
|
|
266
|
+
surfaces: [],
|
|
267
|
+
owners: [],
|
|
268
|
+
claims: [],
|
|
269
|
+
verifier_contracts: [],
|
|
270
|
+
verifier_results: [],
|
|
271
|
+
residual_unknown_ids: [],
|
|
272
|
+
contradictions: [],
|
|
273
|
+
package_proofs: [],
|
|
274
|
+
boundaries: [
|
|
275
|
+
{
|
|
276
|
+
boundary_id: "replacement.cli",
|
|
277
|
+
title: "CLI replacement",
|
|
278
|
+
required_surface_ids: ["cli.help"],
|
|
279
|
+
required_claim_ids: ["claim.cli.help"],
|
|
280
|
+
required_package_proof_kinds: [
|
|
281
|
+
"clean-install",
|
|
282
|
+
"authority-independence",
|
|
283
|
+
],
|
|
284
|
+
allowed_dispositions: [],
|
|
285
|
+
allowed_unknown_ids: [],
|
|
286
|
+
},
|
|
287
|
+
],
|
|
288
|
+
},
|
|
344
289
|
boundary_id: "replacement.cli",
|
|
345
290
|
},
|
|
346
291
|
},
|
|
347
292
|
],
|
|
348
293
|
},
|
|
349
294
|
];
|
|
350
|
-
|
|
351
|
-
export const applicationToolContract = (name) => {
|
|
295
|
+
export function applicationToolContract(name) {
|
|
352
296
|
const contract = APPLICATION_TOOL_CONTRACTS.find(({ name: candidate }) => candidate === name);
|
|
353
297
|
if (contract === undefined)
|
|
354
298
|
throw new Error(`Missing application tool contract: ${name}`);
|
|
355
299
|
return contract;
|
|
356
|
-
}
|
|
300
|
+
}
|
|
@@ -5,133 +5,48 @@ import { compareJavaScriptExportShapesInputSchema } from "../domain/javascriptEx
|
|
|
5
5
|
import { traceApplicationFeatureInputSchema } from "../domain/javascriptFeatureTraceSchemas.js";
|
|
6
6
|
import { javaScriptSemanticQueryInputSchema } from "../domain/javascriptSemanticQuerySchemas.js";
|
|
7
7
|
import { compareSourceToBundleInputSchema } from "../domain/sourceToBundleComparisonSchemas.js";
|
|
8
|
-
const
|
|
9
|
-
.string()
|
|
10
|
-
.regex(/^ev_[a-f0-9]{64}$/u)
|
|
11
|
-
.describe("Evidence ID returned earlier in this session");
|
|
12
|
-
const requireExactlyOne = (context, fields) => {
|
|
13
|
-
const [leftName, left, rightName, right] = fields;
|
|
14
|
-
if ((left === undefined) !== (right === undefined))
|
|
15
|
-
return;
|
|
16
|
-
context.addIssue({
|
|
17
|
-
code: "custom",
|
|
18
|
-
path: [left === undefined ? leftName : rightName],
|
|
19
|
-
message: `Supply exactly one of ${leftName} or ${rightName}`,
|
|
20
|
-
});
|
|
21
|
-
};
|
|
22
|
-
/** MCP/CLI trace request accepting full Evidence or a ledger reference. */
|
|
23
|
-
export const traceApplicationFeatureRequestSchema = z
|
|
24
|
-
.strictObject({
|
|
25
|
-
application: evidenceSchema.optional(),
|
|
26
|
-
application_evidence_id: evidenceIdSchema.optional(),
|
|
8
|
+
const traceApplicationFeatureFacts = {
|
|
27
9
|
native_observations: traceApplicationFeatureInputSchema.shape.native_observations,
|
|
28
|
-
native_observation_evidence_ids: z
|
|
29
|
-
.array(evidenceIdSchema)
|
|
30
|
-
.max(64)
|
|
31
|
-
.default([]),
|
|
32
10
|
seed: traceApplicationFeatureInputSchema.shape.seed,
|
|
33
11
|
direction: traceApplicationFeatureInputSchema.shape.direction,
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
input.application,
|
|
40
|
-
"application_evidence_id",
|
|
41
|
-
input.application_evidence_id,
|
|
42
|
-
]);
|
|
12
|
+
};
|
|
13
|
+
/** MCP/CLI trace request carrying all Evidence inline. */
|
|
14
|
+
export const traceApplicationFeatureRequestSchema = z.strictObject({
|
|
15
|
+
...traceApplicationFeatureFacts,
|
|
16
|
+
application: evidenceSchema,
|
|
43
17
|
});
|
|
44
|
-
/** MCP/CLI semantic trace request
|
|
45
|
-
export const traceJavaScriptSemanticsRequestSchema = z
|
|
46
|
-
|
|
47
|
-
application: evidenceSchema.optional(),
|
|
48
|
-
application_evidence_id: evidenceIdSchema.optional(),
|
|
18
|
+
/** MCP/CLI semantic trace request carrying Evidence inline. */
|
|
19
|
+
export const traceJavaScriptSemanticsRequestSchema = z.strictObject({
|
|
20
|
+
application: evidenceSchema,
|
|
49
21
|
query: javaScriptSemanticQueryInputSchema,
|
|
50
|
-
})
|
|
51
|
-
.superRefine((input, context) => {
|
|
52
|
-
requireExactlyOne(context, [
|
|
53
|
-
"application",
|
|
54
|
-
input.application,
|
|
55
|
-
"application_evidence_id",
|
|
56
|
-
input.application_evidence_id,
|
|
57
|
-
]);
|
|
58
22
|
});
|
|
59
|
-
|
|
60
|
-
export const compareApplicationVersionsRequestSchema = z
|
|
61
|
-
.strictObject({
|
|
62
|
-
left: evidenceSchema.optional(),
|
|
63
|
-
left_evidence_id: evidenceIdSchema.optional(),
|
|
64
|
-
right: evidenceSchema.optional(),
|
|
65
|
-
right_evidence_id: evidenceIdSchema.optional(),
|
|
23
|
+
const compareApplicationVersionsFacts = {
|
|
66
24
|
left_native_observations: compareApplicationVersionsInputSchema.shape.left_native_observations,
|
|
67
|
-
left_native_observation_evidence_ids: z
|
|
68
|
-
.array(evidenceIdSchema)
|
|
69
|
-
.max(64)
|
|
70
|
-
.default([]),
|
|
71
25
|
right_native_observations: compareApplicationVersionsInputSchema.shape.right_native_observations,
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
})
|
|
79
|
-
.superRefine((input, context) => {
|
|
80
|
-
requireExactlyOne(context, [
|
|
81
|
-
"left",
|
|
82
|
-
input.left,
|
|
83
|
-
"left_evidence_id",
|
|
84
|
-
input.left_evidence_id,
|
|
85
|
-
]);
|
|
86
|
-
requireExactlyOne(context, [
|
|
87
|
-
"right",
|
|
88
|
-
input.right,
|
|
89
|
-
"right_evidence_id",
|
|
90
|
-
input.right_evidence_id,
|
|
91
|
-
]);
|
|
26
|
+
};
|
|
27
|
+
/** MCP/CLI comparison request carrying all Evidence inline. */
|
|
28
|
+
export const compareApplicationVersionsRequestSchema = z.strictObject({
|
|
29
|
+
...compareApplicationVersionsFacts,
|
|
30
|
+
left: evidenceSchema,
|
|
31
|
+
right: evidenceSchema,
|
|
92
32
|
});
|
|
93
|
-
|
|
94
|
-
export const compareSourceToBundleRequestSchema = z
|
|
95
|
-
.strictObject({
|
|
33
|
+
const compareSourceToBundleFacts = {
|
|
96
34
|
reference: compareSourceToBundleInputSchema.shape.reference,
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
.superRefine((input, context) => {
|
|
103
|
-
requireExactlyOne(context, [
|
|
104
|
-
"application",
|
|
105
|
-
input.application,
|
|
106
|
-
"application_evidence_id",
|
|
107
|
-
input.application_evidence_id,
|
|
108
|
-
]);
|
|
35
|
+
};
|
|
36
|
+
/** Historical-source comparison carrying application Evidence inline. */
|
|
37
|
+
export const compareSourceToBundleRequestSchema = z.strictObject({
|
|
38
|
+
...compareSourceToBundleFacts,
|
|
39
|
+
application: evidenceSchema,
|
|
109
40
|
});
|
|
110
|
-
|
|
111
|
-
export const compareJavaScriptExportShapesRequestSchema = z
|
|
112
|
-
.strictObject({
|
|
113
|
-
left: evidenceSchema.optional(),
|
|
114
|
-
left_evidence_id: evidenceIdSchema.optional(),
|
|
115
|
-
right: evidenceSchema.optional(),
|
|
116
|
-
right_evidence_id: evidenceIdSchema.optional(),
|
|
41
|
+
const compareJavaScriptExportShapesFacts = {
|
|
117
42
|
left_module_path: compareJavaScriptExportShapesInputSchema.shape.left_module_path,
|
|
118
43
|
left_export_name: compareJavaScriptExportShapesInputSchema.shape.left_export_name,
|
|
119
44
|
right_module_path: compareJavaScriptExportShapesInputSchema.shape.right_module_path,
|
|
120
45
|
right_export_name: compareJavaScriptExportShapesInputSchema.shape.right_export_name,
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
input.left,
|
|
128
|
-
"left_evidence_id",
|
|
129
|
-
input.left_evidence_id,
|
|
130
|
-
]);
|
|
131
|
-
requireExactlyOne(context, [
|
|
132
|
-
"right",
|
|
133
|
-
input.right,
|
|
134
|
-
"right_evidence_id",
|
|
135
|
-
input.right_evidence_id,
|
|
136
|
-
]);
|
|
46
|
+
};
|
|
47
|
+
/** MCP/CLI export-shape request carrying application Evidence inline. */
|
|
48
|
+
export const compareJavaScriptExportShapesRequestSchema = z.strictObject({
|
|
49
|
+
...compareJavaScriptExportShapesFacts,
|
|
50
|
+
left: evidenceSchema,
|
|
51
|
+
right: evidenceSchema,
|
|
137
52
|
});
|
|
@@ -1,76 +1,74 @@
|
|
|
1
|
+
import { createHash } from "node:crypto";
|
|
2
|
+
import canonicalize from "canonicalize";
|
|
1
3
|
import { createEvidence } from "../domain/evidence.js";
|
|
2
4
|
import { jsonValueSchema } from "../domain/jsonValue.js";
|
|
3
5
|
const inventory = (digit) => {
|
|
4
6
|
const sha = digit.repeat(64);
|
|
5
|
-
const artifactId = `art_${sha}`;
|
|
6
|
-
const occurrenceId = `occ_${
|
|
7
|
+
const artifactId = `art_${digestCanonical({ sha256: sha })}`;
|
|
8
|
+
const occurrenceId = `occ_${digestCanonical({ root: artifactId })}`;
|
|
9
|
+
const nodes = [
|
|
10
|
+
{
|
|
11
|
+
artifact_id: artifactId,
|
|
12
|
+
kind: "resource",
|
|
13
|
+
format: "file",
|
|
14
|
+
sha256: sha,
|
|
15
|
+
size: 1,
|
|
16
|
+
media_type: null,
|
|
17
|
+
architecture: null,
|
|
18
|
+
executable: false,
|
|
19
|
+
content_state: "materialized",
|
|
20
|
+
limitations: [],
|
|
21
|
+
},
|
|
22
|
+
];
|
|
23
|
+
const occurrences = [
|
|
24
|
+
{
|
|
25
|
+
occurrence_id: occurrenceId,
|
|
26
|
+
artifact_id: artifactId,
|
|
27
|
+
parent_occurrence_id: null,
|
|
28
|
+
logical_path: ".",
|
|
29
|
+
entry_kind: "file",
|
|
30
|
+
declared_size: 1,
|
|
31
|
+
compressed_size: null,
|
|
32
|
+
executable: false,
|
|
33
|
+
encrypted: false,
|
|
34
|
+
hash_status: "verified",
|
|
35
|
+
source_location: null,
|
|
36
|
+
limitations: [],
|
|
37
|
+
},
|
|
38
|
+
];
|
|
39
|
+
const graphSha256 = digestCanonical({
|
|
40
|
+
nodes,
|
|
41
|
+
occurrences,
|
|
42
|
+
edges: [],
|
|
43
|
+
integrity_contradictions: [],
|
|
44
|
+
});
|
|
7
45
|
return jsonValueSchema.parse({
|
|
8
46
|
manifest: {
|
|
9
|
-
|
|
10
|
-
|
|
47
|
+
manifest_id: `agm_${digestCanonical({
|
|
48
|
+
root_artifact_id: artifactId,
|
|
49
|
+
graph_sha256: graphSha256,
|
|
50
|
+
})}`,
|
|
11
51
|
root_artifact_id: artifactId,
|
|
12
52
|
root_sha256: sha,
|
|
13
53
|
root_format: "file",
|
|
14
|
-
graph_sha256:
|
|
15
|
-
node_count:
|
|
16
|
-
occurrence_count:
|
|
54
|
+
graph_sha256: graphSha256,
|
|
55
|
+
node_count: nodes.length,
|
|
56
|
+
occurrence_count: occurrences.length,
|
|
17
57
|
edge_count: 0,
|
|
18
58
|
},
|
|
19
|
-
nodes
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
artifact_id: artifactId,
|
|
23
|
-
kind: "resource",
|
|
24
|
-
format: "file",
|
|
25
|
-
sha256: sha,
|
|
26
|
-
size: 1,
|
|
27
|
-
media_type: null,
|
|
28
|
-
architecture: null,
|
|
29
|
-
executable: false,
|
|
30
|
-
content_state: "materialized",
|
|
31
|
-
limitations: [],
|
|
32
|
-
},
|
|
33
|
-
],
|
|
34
|
-
offset: 0,
|
|
35
|
-
limit: 100,
|
|
36
|
-
total: 1,
|
|
37
|
-
next_offset: null,
|
|
38
|
-
},
|
|
39
|
-
occurrences: {
|
|
40
|
-
items: [
|
|
41
|
-
{
|
|
42
|
-
occurrence_id: occurrenceId,
|
|
43
|
-
artifact_id: artifactId,
|
|
44
|
-
parent_occurrence_id: null,
|
|
45
|
-
logical_path: ".",
|
|
46
|
-
entry_kind: "file",
|
|
47
|
-
declared_size: 1,
|
|
48
|
-
compressed_size: null,
|
|
49
|
-
executable: false,
|
|
50
|
-
encrypted: false,
|
|
51
|
-
hash_status: "verified",
|
|
52
|
-
source_location: null,
|
|
53
|
-
limitations: [],
|
|
54
|
-
},
|
|
55
|
-
],
|
|
56
|
-
offset: 0,
|
|
57
|
-
limit: 100,
|
|
58
|
-
total: 1,
|
|
59
|
-
next_offset: null,
|
|
60
|
-
},
|
|
61
|
-
edges: { items: [], offset: 0, limit: 100, total: 0, next_offset: null },
|
|
62
|
-
limits: {
|
|
63
|
-
max_entries: 100,
|
|
64
|
-
max_total_bytes: 1024,
|
|
65
|
-
max_entry_bytes: 1024,
|
|
66
|
-
max_compression_ratio: 10,
|
|
67
|
-
max_depth: 10,
|
|
68
|
-
max_path_bytes: 256,
|
|
69
|
-
},
|
|
59
|
+
nodes,
|
|
60
|
+
occurrences,
|
|
61
|
+
edges: [],
|
|
70
62
|
provenance: [],
|
|
71
63
|
limitations: [],
|
|
72
64
|
});
|
|
73
65
|
};
|
|
66
|
+
const digestCanonical = (value) => {
|
|
67
|
+
const encoded = canonicalize(value);
|
|
68
|
+
if (encoded === undefined)
|
|
69
|
+
throw new TypeError("Artifact example is not canonical JSON");
|
|
70
|
+
return createHash("sha256").update(encoded).digest("hex");
|
|
71
|
+
};
|
|
74
72
|
const provider = {
|
|
75
73
|
id: "rea-artifact",
|
|
76
74
|
name: "REA artifact graph",
|
|
@@ -78,14 +76,14 @@ const provider = {
|
|
|
78
76
|
};
|
|
79
77
|
/** Canonical complete inputs used to advertise artifact comparison. */
|
|
80
78
|
export const ARTIFACT_COMPARISON_EXAMPLE = {
|
|
81
|
-
left: createEvidence(
|
|
79
|
+
left: createEvidence({ path: "fixture-left", sha256: "0".repeat(64), format: "file" }, provider, {
|
|
82
80
|
operation: "inventory_artifact",
|
|
83
81
|
parameters: {},
|
|
84
82
|
result: inventory("0"),
|
|
85
83
|
confidence: "observed",
|
|
86
84
|
authority: "shipped-artifact",
|
|
87
85
|
}),
|
|
88
|
-
right: createEvidence(
|
|
86
|
+
right: createEvidence({ path: "fixture-right", sha256: "1".repeat(64), format: "file" }, provider, {
|
|
89
87
|
operation: "inventory_artifact",
|
|
90
88
|
parameters: {},
|
|
91
89
|
result: inventory("1"),
|