rea-agents 3.1.0 → 3.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +72 -95
- package/bridge/ghidra/ReaGhidraBridge.java +609 -841
- package/bridge/hopper_bridge.py +99 -344
- package/dist/application/AbortablePromise.js +6 -3
- package/dist/application/AnalysisSnapshotCache.js +0 -1
- package/dist/application/AnalysisSnapshotFiles.js +7 -7
- package/dist/application/AndroidApplicationService.js +1 -1
- package/dist/application/AppleApplicationService.js +1 -1
- package/dist/application/ArtifactExtraction.js +35 -54
- package/dist/application/ArtifactExtractionDestination.js +17 -0
- package/dist/application/ArtifactGraphConstruction.js +2 -17
- package/dist/application/ArtifactInventory/classify.js +2 -6
- package/dist/application/ArtifactInventory/hash.js +2 -20
- package/dist/application/ArtifactInventory/scanCanonical.js +8 -12
- package/dist/application/ArtifactInventory/scanReader.js +69 -51
- package/dist/application/ArtifactInventory.js +6 -14
- package/dist/application/AuthorizedArtifactInventory.js +3 -13
- package/dist/application/BinarySession.js +41 -13
- package/dist/application/BinarySessionComposition.js +0 -11
- package/dist/application/BinarySessionOpen.js +2 -1
- package/dist/application/BinarySessionRecords.js +5 -93
- package/dist/application/BinarySessionStatus.js +5 -16
- package/dist/application/BinaryTargetResolver.js +216 -0
- package/dist/application/BrowserEvidence.js +42 -58
- package/dist/application/BrowserObservationService.js +3 -6
- package/dist/application/BrowserScenarioCaptureService.js +3 -6
- package/dist/application/BrowserScenarioEvidence.js +3 -3
- package/dist/application/CallPathTracing.js +2 -36
- package/dist/application/CapabilityInventory.js +10 -15
- package/dist/application/ClientConfigurationDocument.js +27 -0
- package/dist/application/ClientRegistrationStatus.js +16 -13
- package/dist/application/CommandShimReplay.js +14 -1
- package/dist/application/DirectAnalysis.js +22 -46
- package/dist/application/DirectAnalysisStatus.js +5 -61
- package/dist/application/Doctor.js +11 -32
- package/dist/application/DoctorDiagnostics.js +1 -2
- package/dist/application/DoctorScope.js +1 -1
- package/dist/application/ElectronActiveEvidence.js +3 -8
- package/dist/application/ElectronActiveObservationService.js +3 -6
- package/dist/application/ElectronBoundaryAnalysis.js +7 -8
- package/dist/application/ElectronBoundaryGraphContext.js +1 -1
- package/dist/application/ElectronBoundaryGraphIpc.js +3 -3
- package/dist/application/ElectronBoundaryGraphNative.js +1 -2
- package/dist/application/ElectronBoundaryGraphWindows.js +6 -8
- package/dist/application/ElectronEvidence.js +4 -7
- package/dist/application/ElectronObservationService.js +5 -9
- package/dist/application/EnhancedLiteralTracing.js +42 -65
- package/dist/application/EnhancedTools.js +76 -44
- package/dist/application/EvidenceBundleCommands.js +11 -11
- package/dist/application/EvidenceBundleFiles.js +9 -15
- package/dist/application/EvidenceLedger.js +6 -41
- package/dist/application/FilesystemSnapshot.js +2 -3
- package/dist/application/InterfaceBuilderAnalysis.js +266 -0
- package/dist/application/InventoryProjectionEvidence.js +4 -2
- package/dist/application/InvestigationProviders.js +1 -1
- package/dist/application/JavaScriptApplicationEvidence.js +2 -5
- package/dist/application/JavaScriptApplicationEvidenceGraph.js +6 -10
- package/dist/application/JavaScriptApplicationService.js +6 -29
- package/dist/application/JavaScriptApplicationWorkflowEvidence.js +5 -5
- package/dist/application/JavaScriptApplicationWorkflowService.js +0 -8
- package/dist/application/JavaScriptArtifactAnalysis.js +38 -127
- package/dist/application/JavaScriptArtifactFiles.js +67 -107
- package/dist/application/JavaScriptArtifactGraphAccumulator.js +0 -7
- package/dist/application/JavaScriptArtifactGraphBuilder.js +7 -58
- package/dist/application/JavaScriptArtifactGraphBundlers.js +1 -6
- package/dist/application/JavaScriptArtifactGraphContext.js +12 -39
- package/dist/application/JavaScriptArtifactGraphDocuments.js +4 -11
- package/dist/application/JavaScriptArtifactGraphEvidence.js +0 -14
- package/dist/application/JavaScriptArtifactGraphFindings.js +3 -3
- package/dist/application/JavaScriptArtifactGraphStructure.js +16 -17
- package/dist/application/JavaScriptArtifactPathResolution.js +61 -49
- package/dist/application/JavaScriptArtifactReconstruction.js +5 -10
- package/dist/application/JavaScriptArtifactReconstructionInput.js +2 -14
- package/dist/application/JavaScriptJsonModules.js +2 -2
- package/dist/application/JavaScriptModuleRelationships.js +22 -27
- package/dist/application/JavaScriptReplayPlanning.js +9 -3
- package/dist/application/JavaScriptReplayService.js +6 -32
- package/dist/application/JavaScriptReturnShapeProjection.js +12 -42
- package/dist/application/JavaScriptRuntimeObservationEvidence.js +7 -8
- package/dist/application/JavaScriptRuntimeObservationService.js +4 -8
- package/dist/application/JavaScriptRuntimeReconciliationEvidence.js +2 -3
- package/dist/application/JavaScriptSemanticGraphBuilder.js +11 -41
- package/dist/application/JavaScriptSemanticGraphConstruction.js +5 -29
- package/dist/application/JavaScriptSemanticGraphEvidence.js +1 -1
- package/dist/application/JavaScriptSemanticGraphFingerprintProjection.js +1 -1
- package/dist/application/JavaScriptSemanticGraphFlowProjection.js +0 -13
- package/dist/application/JavaScriptSemanticGraphProjection.js +1 -3
- package/dist/application/JavaScriptSemanticTraceService.js +1 -10
- package/dist/application/JsonFiles.js +79 -0
- package/dist/application/LinuxHopper.js +11 -9
- package/dist/application/LoopbackReplay.js +26 -23
- package/dist/application/LoopbackReplayRecorder.js +29 -1
- package/dist/application/ManagedApplicationGraphService.js +1 -2
- package/dist/application/ManagedMemberComparisonService.js +11 -41
- package/dist/application/ManagedNativeVerificationService.js +1 -2
- package/dist/application/ManagedReconstructionService.js +1 -1
- package/dist/application/ManagedRuntimeCorrelationService.js +5 -8
- package/dist/application/NativeApiInspection.js +2 -7
- package/dist/application/NativeUiActionTrace.js +394 -0
- package/dist/application/NodeRuntimeCharacterizationService.js +3 -7
- package/dist/application/PermissionAuthority.js +15 -7
- package/dist/application/PermissionFailure.js +5 -0
- package/dist/application/ProcessCaptureAuthority.js +5 -7
- package/dist/application/ProcessCaptureJournal.js +3 -2
- package/dist/application/ProcessCaptureLifecycle.js +5 -12
- package/dist/application/ProcessCheckpoints.js +29 -11
- package/dist/application/ProcessCli.js +6 -16
- package/dist/application/ProcessEvidence.js +5 -7
- package/dist/application/ProcessHarness.js +52 -17
- package/dist/application/ProcessReactiveCoordinator.js +2 -4
- package/dist/application/ProcessReactiveEffects.js +9 -3
- package/dist/application/ProcessReactiveHarness.js +13 -7
- package/dist/application/ProcessSampling.js +2 -4
- package/dist/application/ProcessTimer.js +39 -0
- package/dist/application/ProjectPermissionStore.js +39 -96
- package/dist/application/RealHopperAssertions.js +20 -66
- package/dist/application/ReconstructionCoverageService.js +12 -58
- package/dist/application/ReconstructionObligationAuthority.js +2 -2
- package/dist/application/ReconstructionObligationCandidates.js +4 -4
- package/dist/application/ReconstructionObligationLedgerEvaluation.js +8 -15
- package/dist/application/ReconstructionObligationLedgerProjection.js +3 -7
- package/dist/application/ReconstructionObligationLedgerService.js +19 -38
- package/dist/application/ReferenceSourceImport.js +19 -45
- package/dist/application/ReferenceSourceImportEntries.js +2 -4
- package/dist/application/ReferenceSourceImportPolicy.js +5 -32
- package/dist/application/ReferenceSourceImportTypes.js +0 -16
- package/dist/application/RuntimeExecutableDiagnostics.js +55 -29
- package/dist/application/SessionProviderRouter.js +2 -2
- package/dist/application/Setup.js +1 -3
- package/dist/application/SetupClientConfiguration.js +22 -93
- package/dist/application/SetupRegistrationEnvironment.js +0 -7
- package/dist/application/StoreFileLock.js +119 -0
- package/dist/application/TerminalRenderer.js +2 -3
- package/dist/application/Uninstall.js +9 -14
- package/dist/application/UnknownEvidence.js +1 -1
- package/dist/artifacts/ArtifactPaths.js +2 -5
- package/dist/artifacts/ArtifactProvider.js +36 -58
- package/dist/artifacts/DirectoryArtifactReader.js +13 -8
- package/dist/artifacts/MachOSliceArtifactReader.js +1 -5
- package/dist/artifacts/NativeDmgArtifactReader.js +11 -11
- package/dist/artifacts/NibArchive.js +269 -0
- package/dist/artifacts/SafeOutputTree.js +15 -24
- package/dist/browser/BrowserProcessStartup.js +1 -2
- package/dist/browser/CdpAuthorizedMainFrame.js +16 -0
- package/dist/browser/CdpBrowserProvider.js +3 -13
- package/dist/browser/CdpCanonicalJsonDigest.js +9 -0
- package/dist/browser/CdpCaptureDocuments.js +28 -76
- package/dist/browser/CdpCaptureEventBodyShapes.js +13 -33
- package/dist/browser/CdpCaptureEventHandlers.js +22 -87
- package/dist/browser/CdpCaptureEvents.js +2 -8
- package/dist/browser/CdpCaptureStorage.js +9 -20
- package/dist/browser/CdpCaptureStorageFingerprints.js +85 -98
- package/dist/browser/CdpCaptureValues.js +21 -21
- package/dist/browser/CdpConnection.js +10 -25
- package/dist/browser/CdpElectronInspection.js +26 -50
- package/dist/browser/CdpElectronProvider.js +10 -35
- package/dist/browser/CdpElectronScriptEvents.js +8 -16
- package/dist/browser/CdpElectronScripts.js +6 -35
- package/dist/browser/CdpElectronWorkers.js +6 -10
- package/dist/browser/CdpEndpoint.js +25 -41
- package/dist/browser/CdpObservationSession.js +14 -26
- package/dist/browser/CdpPageCapture.js +34 -48
- package/dist/browser/CdpPageCaptureScripts.js +1 -19
- package/dist/browser/CdpPageCaptureWorkers.js +6 -10
- package/dist/browser/CdpSafeMetadata.js +19 -22
- package/dist/browser/CdpScreenshot.js +3 -5
- package/dist/browser/CdpTargetSession.js +1 -2
- package/dist/browser/CdpWebMcpDiscovery.js +13 -22
- package/dist/browser/ElectronFileScope.js +8 -19
- package/dist/browser/JavaScriptRuntimeScope.js +9 -14
- package/dist/browser/PlaywrightBrowserScenarioProvider.js +31 -64
- package/dist/browser/PlaywrightElectronActiveActions.js +54 -69
- package/dist/browser/PlaywrightElectronActiveProvider.js +14 -34
- package/dist/browser/PlaywrightExecutionBoundary.js +16 -5
- package/dist/browser/PlaywrightScenarioActions.js +3 -7
- package/dist/browser/PlaywrightScenarioArtifacts.js +23 -92
- package/dist/browser/PlaywrightScenarioBrowser.js +3 -5
- package/dist/browser/PlaywrightScenarioEvents.js +45 -94
- package/dist/browser/PlaywrightScenarioSession.js +14 -30
- package/dist/browser/PngVisualDiff.js +22 -14
- package/dist/browser/SensitiveTextCapture.js +0 -17
- package/dist/browser/V8InspectorCaptureProjection.js +7 -8
- package/dist/browser/V8InspectorEndpoint.js +12 -14
- package/dist/browser/V8InspectorProvider.js +20 -61
- package/dist/browser/WebSourceMapFetcher.js +56 -176
- package/dist/catalogIdentity.js +0 -54
- package/dist/cli/artifactCommands.js +49 -77
- package/dist/cli/coreAnalysisCommands.js +83 -133
- package/dist/cli/javascriptApplicationAnalysis.js +1 -9
- package/dist/cli/managedCommands.js +5 -270
- package/dist/cli/setupCommands.js +3 -12
- package/dist/cli/utilityCommands.js +7 -41
- package/dist/cli.js +0 -2
- package/dist/cliApplicationCommands.js +42 -112
- package/dist/cliBrowserAdvancedCommands.js +10 -106
- package/dist/cliBrowserCommands.js +15 -127
- package/dist/cliBrowserContext.js +30 -0
- package/dist/cliCommandNames.js +4 -5
- package/dist/cliElectronCommands.js +8 -72
- package/dist/cliEvidenceCommands.js +8 -77
- package/dist/cliJavaScriptRuntimeCommands.js +9 -91
- package/dist/cliJsonInput.js +4 -14
- package/dist/cliObservationOptions.js +11 -96
- package/dist/cliPolicyCommands.js +2 -17
- package/dist/cliProcessCommands.js +3 -3
- package/dist/cliSetup.js +0 -13
- package/dist/config/browserScenario.js +2 -2
- package/dist/config/environment.js +0 -9
- package/dist/config/parseConfig.js +1 -33
- package/dist/config/parsers.js +6 -27
- package/dist/config/passiveObservation.js +7 -77
- package/dist/config/permissions.js +0 -7
- package/dist/contracts/analysisSearchContract.js +2 -5
- package/dist/contracts/applicationToolContracts.js +56 -109
- package/dist/contracts/applicationWorkflowInputContracts.js +27 -102
- package/dist/contracts/artifactComparisonExample.js +58 -60
- package/dist/contracts/artifactToolContracts.js +20 -67
- package/dist/contracts/browserScenarioToolContracts.js +6 -51
- package/dist/contracts/browserToolContracts.js +8 -73
- package/dist/contracts/electronToolContracts.js +8 -108
- package/dist/contracts/enhancedInputs.js +23 -54
- package/dist/contracts/errorSchemas.js +0 -1
- package/dist/contracts/functionComparisonExample.js +10 -24
- package/dist/contracts/functionInstructionContract.js +1 -3
- package/dist/contracts/functionWorkflowToolContracts.js +2 -2
- package/dist/contracts/hopperMemoryContracts.js +3 -3
- package/dist/contracts/investigationExamples.js +14 -11
- package/dist/contracts/javascriptApplicationWorkflowExamples.js +12 -19
- package/dist/contracts/javascriptRuntimeObservationToolContracts.js +2 -20
- package/dist/contracts/javascriptRuntimeReconciliationExample.js +45 -12
- package/dist/contracts/managedToolContracts.js +6 -95
- package/dist/contracts/managedWorkflowExamples.js +77 -128
- package/dist/contracts/managedWorkflowToolContracts.js +51 -77
- package/dist/contracts/nativeToolContracts.js +7 -11
- package/dist/contracts/processCaptureExample.js +2 -69
- package/dist/contracts/promptContracts.js +49 -67
- package/dist/contracts/providerSelection.js +0 -1
- package/dist/contracts/reconstructionReadinessExample.js +1 -6
- package/dist/contracts/sessionStatusContract.js +1 -17
- package/dist/contracts/sessionToolSchemas.js +6 -15
- package/dist/contracts/toolContractExamples.js +11 -11
- package/dist/contracts/toolContractHelpers.js +0 -4
- package/dist/contracts/toolContracts.js +60 -71
- package/dist/contracts/toolEffects.js +5 -13
- package/dist/contracts/toolOutputSchemaGroups.js +37 -91
- package/dist/contracts/toolOutputSchemaPrimitives.js +16 -56
- package/dist/contracts/toolSchemaMetadata.js +8 -19
- package/dist/contracts/unknownContractExamples.js +0 -2
- package/dist/domain/analysisErrorPresentation.js +46 -54
- package/dist/domain/analysisErrorProjection.js +28 -37
- package/dist/domain/analysisProfile.js +3 -31
- package/dist/domain/analysisSnapshot.js +3 -12
- package/dist/domain/androidApplication.js +15 -54
- package/dist/domain/appleApplication.js +24 -67
- package/dist/domain/artifactComparison.js +11 -29
- package/dist/domain/artifactGraph.js +14 -44
- package/dist/domain/artifactInspection.js +38 -69
- package/dist/domain/artifactInventoryEvidence.js +27 -21
- package/dist/domain/binaryTarget.js +2 -221
- package/dist/domain/browserCaptureComparison.js +47 -24
- package/dist/domain/browserObservation.js +28 -193
- package/dist/domain/browserObservationSchemas.js +5 -23
- package/dist/domain/browserScenario.js +11 -14
- package/dist/domain/browserScenarioCapture.js +11 -12
- package/dist/domain/browserScenarioCaptureValues.js +146 -84
- package/dist/domain/browserScenarioDiff.js +2 -59
- package/dist/domain/browserScenarioDiffEvidence.js +51 -0
- package/dist/domain/browserScenarioDiffValues.js +21 -38
- package/dist/domain/browserScenarioValues.js +80 -109
- package/dist/domain/browserSession.js +4 -7
- package/dist/domain/bundleComparison.js +6 -32
- package/dist/domain/bytecodeProvider.js +20 -19
- package/dist/domain/callPath.js +47 -167
- package/dist/domain/callPathSchemas.js +79 -0
- package/dist/domain/changedBehavior.js +34 -60
- package/dist/domain/completionLedgerGeneration.js +8 -14
- package/dist/domain/conformancePackage.js +126 -97
- package/dist/domain/conformanceReplay.js +36 -8
- package/dist/domain/conformanceTrustGate.js +23 -14
- package/dist/domain/customProtocolCapture.js +1 -1
- package/dist/domain/electronActiveObservation.js +70 -103
- package/dist/domain/electronObservation.js +14 -80
- package/dist/domain/electronStaticAnalysisBrowser.js +36 -46
- package/dist/domain/electronStaticAnalysisIpc.js +38 -14
- package/dist/domain/electronStaticAnalysisNative.js +1 -8
- package/dist/domain/electronStaticAnalysisValues.js +10 -17
- package/dist/domain/errors.js +33 -54
- package/dist/domain/eventProcessTree.js +20 -12
- package/dist/domain/evidence.js +2 -10
- package/dist/domain/evidenceBundle.js +3 -5
- package/dist/domain/evidenceCompletionLedger.js +6 -8
- package/dist/domain/functionComparison.js +4 -14
- package/dist/domain/functionComparisonNormalization.js +4 -11
- package/dist/domain/functionComparisonResults.js +25 -15
- package/dist/domain/functionComparisonSchemas.js +49 -33
- package/dist/domain/functionDossierEvidence.js +31 -156
- package/dist/domain/hopperStartupFailure.js +1 -1
- package/dist/domain/hopperValues.js +15 -136
- package/dist/domain/interfaceBuilderGraph.js +654 -0
- package/dist/domain/javascriptApplicationAnalysis.js +8 -112
- package/dist/domain/javascriptApplicationChangeGraph.js +22 -82
- package/dist/domain/javascriptApplicationEvidenceSchemas.js +59 -47
- package/dist/domain/javascriptApplicationGraph.js +3 -13
- package/dist/domain/javascriptApplicationGraphSchemas.js +12 -34
- package/dist/domain/javascriptApplicationVersionComparison.js +26 -30
- package/dist/domain/javascriptApplicationVersionComparisonSchemas.js +123 -68
- package/dist/domain/javascriptApplicationVersionItems.js +120 -53
- package/dist/domain/javascriptApplicationVersionKeys.js +24 -11
- package/dist/domain/javascriptAstFingerprint.js +25 -58
- package/dist/domain/javascriptAstValues.js +9 -0
- package/dist/domain/javascriptExportInstrumentation.js +2 -4
- package/dist/domain/javascriptExportShapeComparison.js +6 -7
- package/dist/domain/javascriptExportShapeComparisonSchemas.js +68 -75
- package/dist/domain/javascriptExportShapeSelection.js +17 -19
- package/dist/domain/javascriptFeatureSeed.js +20 -12
- package/dist/domain/javascriptFeatureTrace.js +13 -67
- package/dist/domain/javascriptFeatureTraceSchemas.js +24 -52
- package/dist/domain/javascriptFeatureTraversal.js +1 -44
- package/dist/domain/javascriptNativeHandoff.js +1 -1
- package/dist/domain/javascriptReplay.js +24 -41
- package/dist/domain/javascriptRuntimeLoadState.js +3 -8
- package/dist/domain/javascriptRuntimeObservation.js +42 -103
- package/dist/domain/javascriptRuntimeReconciliation.js +1 -3
- package/dist/domain/javascriptRuntimeReconciliationActive.js +8 -17
- package/dist/domain/javascriptRuntimeReconciliationGraph.js +10 -23
- package/dist/domain/javascriptRuntimeReconciliationMatching.js +18 -12
- package/dist/domain/javascriptRuntimeReconciliationParsing.js +16 -45
- package/dist/domain/javascriptRuntimeReconciliationResult.js +4 -5
- package/dist/domain/javascriptRuntimeReconciliationRuntime.js +8 -12
- package/dist/domain/javascriptRuntimeReconciliationSchemas.js +33 -48
- package/dist/domain/javascriptRuntimeStaticCandidates.js +3 -3
- package/dist/domain/javascriptSemanticAnalysis.js +12 -45
- package/dist/domain/javascriptSemanticAsyncEffects.js +1 -9
- package/dist/domain/javascriptSemanticCallResolution.js +6 -16
- package/dist/domain/javascriptSemanticCalls.js +5 -32
- package/dist/domain/javascriptSemanticChildProcesses.js +1 -11
- package/dist/domain/javascriptSemanticCoverage.js +11 -0
- package/dist/domain/javascriptSemanticDataEffectHelpers.js +1 -8
- package/dist/domain/javascriptSemanticDataEffects.js +1 -11
- package/dist/domain/javascriptSemanticFingerprints.js +3 -5
- package/dist/domain/javascriptSemanticGraphSchemas.js +25 -51
- package/dist/domain/javascriptSemanticGraphSerialization.js +2 -13
- package/dist/domain/javascriptSemanticIr.js +1 -29
- package/dist/domain/javascriptSemanticObjects.js +1 -5
- package/dist/domain/javascriptSemanticPrimitives.js +2 -9
- package/dist/domain/javascriptSemanticProjection.js +0 -18
- package/dist/domain/javascriptSemanticPromises.js +9 -16
- package/dist/domain/javascriptSemanticProvenance.js +16 -19
- package/dist/domain/javascriptSemanticQuery.js +17 -139
- package/dist/domain/javascriptSemanticQueryAssessment.js +9 -37
- package/dist/domain/javascriptSemanticQueryIdentity.js +2 -23
- package/dist/domain/javascriptSemanticQuerySchemas.js +14 -107
- package/dist/domain/javascriptSemanticResources.js +1 -6
- package/dist/domain/javascriptSemanticReturns.js +10 -27
- package/dist/domain/javascriptSemanticValueTypes.js +1 -0
- package/dist/domain/javascriptSemanticValues.js +44 -62
- package/dist/domain/javascriptStaticAnalysis.js +21 -43
- package/dist/domain/javascriptStaticAnalysisBundler.js +34 -93
- package/dist/domain/javascriptStaticAnalysisCalls.js +17 -16
- package/dist/domain/javascriptStaticAnalysisFindings.js +3 -19
- package/dist/domain/javascriptStaticAnalysisHelpers.js +47 -88
- package/dist/domain/javascriptStaticAnalysisState.js +1 -5
- package/dist/domain/javascriptStaticAnalysisTypes.js +1 -0
- package/dist/domain/jsonShape.js +7 -33
- package/dist/domain/localPath.js +7 -0
- package/dist/domain/managedApplicationGraph.js +9 -41
- package/dist/domain/managedApplicationGraphCoverage.js +24 -156
- package/dist/domain/managedApplicationGraphNodes.js +10 -13
- package/dist/domain/managedArtifact.js +14 -27
- package/dist/domain/managedMemberComparison.js +90 -92
- package/dist/domain/managedMemberComparisonCoverage.js +11 -33
- package/dist/domain/managedMemberComparisonItems.js +221 -0
- package/dist/domain/managedMemberComparisonMatch.js +8 -208
- package/dist/domain/managedNativeVerification.js +3 -6
- package/dist/domain/managedNativeVerificationMatch.js +55 -59
- package/dist/domain/managedNativeVerificationSchemas.js +83 -47
- package/dist/domain/managedReconstruction.js +19 -23
- package/dist/domain/managedRuntimeCorrelation.js +6 -9
- package/dist/domain/nativeApiBoundary.js +2 -7
- package/dist/domain/nativeInspection.js +0 -2
- package/dist/domain/nativeInvestigationGraph.js +351 -0
- package/dist/domain/nativeValueFlow.js +61 -0
- package/dist/domain/nodeRuntimeCharacterization.js +1 -5
- package/dist/domain/objcSwiftMetadata.js +254 -0
- package/dist/domain/peInspection.js +1 -1
- package/dist/domain/permissionPolicy.js +13 -0
- package/dist/domain/processCapture.js +76 -113
- package/dist/domain/processCaptureExample.js +68 -0
- package/dist/domain/processCaptureParsing.js +21 -0
- package/dist/domain/processCaptureReactiveSchema.js +68 -0
- package/dist/domain/processCaptureValidation.js +1 -7
- package/dist/domain/processComparison.js +3 -12
- package/dist/domain/processReactiveMatching.js +29 -50
- package/dist/domain/processReactiveRuntime.js +4 -8
- package/dist/domain/processReactiveScenario.js +28 -94
- package/dist/domain/processReactiveScenarioPreflight.js +5 -30
- package/dist/domain/processReactiveTransition.js +33 -18
- package/dist/domain/processScenario.js +56 -90
- package/dist/domain/processTraceComparison.js +0 -8
- package/dist/domain/processTraceEvaluation.js +14 -4
- package/dist/domain/processTraceSpecification.js +11 -17
- package/dist/domain/protocolCapture.js +3 -3
- package/dist/domain/reconstructionCoverage.js +62 -129
- package/dist/domain/reconstructionCoverageEvaluation.js +17 -17
- package/dist/domain/reconstructionObligationLedgerSchemas.js +45 -72
- package/dist/domain/reconstructionReadiness.js +1 -2
- package/dist/domain/reconstructionReadinessSchemas.js +36 -38
- package/dist/domain/reconstructionUnknowns.js +3 -3
- package/dist/domain/reconstructionVerification.js +13 -47
- package/dist/domain/reconstructionVerificationSchemas.js +50 -38
- package/dist/domain/referenceSourceGraph.js +53 -61
- package/dist/domain/referenceSourceImportParsing.js +1 -5
- package/dist/domain/replayMachine.js +19 -31
- package/dist/domain/replayMachineRun.js +15 -63
- package/dist/domain/replayMachineRuntime.js +41 -41
- package/dist/domain/replayMachineValues.js +84 -0
- package/dist/domain/residualUnknown.js +25 -30
- package/dist/domain/runtimeCharacterization.js +15 -16
- package/dist/domain/runtimeIdentification.js +48 -47
- package/dist/domain/sourceToBundleComparison.js +9 -85
- package/dist/domain/sourceToBundleComparisonSchemas.js +17 -42
- package/dist/domain/sourceToBundleSignals.js +4 -15
- package/dist/domain/staticRuntimeCorrelation.js +37 -49
- package/dist/domain/symbolAnalysis.js +10 -19
- package/dist/domain/unicodeCodePointOrder.js +12 -0
- package/dist/domain/webBundleAnalysis.js +70 -99
- package/dist/domain/webBundleAnalyzer.js +2 -4
- package/dist/domain/webBundleAnalyzerAst.js +0 -13
- package/dist/domain/webBundleAnalyzerInspection.js +26 -52
- package/dist/domain/webBundleAnalyzerResult.js +7 -24
- package/dist/domain/webCaptureDiff.js +33 -73
- package/dist/domain/webCaptureDiffSchemas.js +86 -0
- package/dist/domain/webContentArtifact.js +1 -10
- package/dist/domain/webMcpDiscovery.js +3 -14
- package/dist/domain/webScreenshot.js +58 -34
- package/dist/domain/zipPackageFormat.js +7 -0
- package/dist/dotnet/ManagedArtifactInspector.js +17 -50
- package/dist/dotnet/ManagedMemberInspector.js +27 -58
- package/dist/dotnet/ManagedMemberInspectorCore.js +14 -51
- package/dist/dotnet/ManagedMemberInstructionDecoder.js +2 -2
- package/dist/dotnet/ManagedMemberRows.js +16 -16
- package/dist/dotnet/ManagedMetadataHeaps.js +26 -8
- package/dist/dotnet/ManagedMetadataInventory.js +21 -30
- package/dist/dotnet/ManagedMetadataInventoryRows.js +57 -63
- package/dist/dotnet/ManagedMetadataLayout.js +3 -5
- package/dist/dotnet/ManagedMethodBodyReader.js +5 -30
- package/dist/dotnet/ManagedNativeBoundaryHelpers.js +19 -49
- package/dist/dotnet/ManagedNativeBoundaryInspector.js +13 -41
- package/dist/dotnet/ManagedPeReader.js +2 -2
- package/dist/dotnet/ManagedStaticProvider.js +13 -71
- package/dist/generatedMcpToolCatalog.js +1 -1
- package/dist/generatedPackageMetadata.js +1 -1
- package/dist/ghidra/GhidraAnalysisProfile.js +3 -8
- package/dist/ghidra/GhidraClient.js +4 -12
- package/dist/ghidra/GhidraClientWire.js +9 -5
- package/dist/ghidra/GhidraDefaults.js +0 -18
- package/dist/ghidra/GhidraDiagnostics.js +0 -2
- package/dist/ghidra/GhidraDoctor.js +16 -12
- package/dist/ghidra/GhidraFunctionValues.js +65 -108
- package/dist/ghidra/GhidraInstallation.js +98 -42
- package/dist/ghidra/GhidraInventoryValues.js +16 -85
- package/dist/ghidra/GhidraLauncher.js +0 -8
- package/dist/ghidra/GhidraProvider.js +15 -22
- package/dist/ghidra/GhidraProviderCapabilities.js +6 -47
- package/dist/ghidra/GhidraRequestQueue.js +6 -30
- package/dist/ghidra/GhidraResponseBuffer.js +1 -7
- package/dist/ghidra/GhidraSessionValues.js +0 -2
- package/dist/ghidra/GhidraTransport.js +4 -7
- package/dist/ghidra/protocol.js +2 -2
- package/dist/hopper/BridgeLauncher.js +112 -36
- package/dist/hopper/HopperAnalysisProfile.js +1 -1
- package/dist/hopper/HopperCleanup.js +6 -3
- package/dist/hopper/HopperClient.js +4 -7
- package/dist/hopper/HopperProcessDiagnostic.js +2 -2
- package/dist/hopper/HopperProvider.js +0 -16
- package/dist/hopper/HopperRequestQueue.js +21 -40
- package/dist/hopper/HopperResponseStream.js +1 -9
- package/dist/hopper/HopperSessionValues.js +3 -2
- package/dist/hopper/HopperTargetLease.js +119 -0
- package/dist/hopper/LinuxPrivateDisplayDiagnostic.js +24 -31
- package/dist/hopper/LinuxPrivateDisplayProbe.js +5 -16
- package/dist/hopper/protocol.js +6 -4
- package/dist/main/reload.js +0 -3
- package/dist/main/shutdown.js +1 -1
- package/dist/main/state.js +0 -9
- package/dist/main/transport.js +0 -5
- package/dist/mcpDoctor.js +25 -45
- package/dist/native/CommandRunner.js +18 -25
- package/dist/native/NativeMacOSProvider.js +13 -38
- package/dist/native/NativeMachoInspection.js +1 -1
- package/dist/process/BoundedFileBytes.js +17 -0
- package/dist/process/ExecFileOutput.js +11 -0
- package/dist/process/PendingOperations.js +8 -6
- package/dist/process/ProcessOwnership.js +3 -2
- package/dist/process/ProcessOwnershipObservation.js +0 -1
- package/dist/process/ProviderProcess.js +7 -28
- package/dist/reference/ReferenceSourceReader.js +8 -24
- package/dist/reference/ReferenceSourceReaderEntries.js +11 -39
- package/dist/reference/ReferenceSourceReaderFile.js +13 -31
- package/dist/reference/ReferenceSourceReaderPaths.js +3 -18
- package/dist/reference/ReferenceSourceReaderValidate.js +3 -6
- package/dist/replay/JavaScriptReplayWorker.js +3 -5
- package/dist/replay/LinuxJavaScriptReplayRunner.js +33 -29
- package/dist/replay/LinuxJavaScriptReplaySandbox.js +0 -19
- package/dist/replay/LinuxRuntimeClosure.js +1 -3
- package/dist/replay/ReplayOutcome.js +1 -3
- package/dist/replay/ReplayProcessLifecycle.js +32 -7
- package/dist/replay/ReplaySeccompFile.js +29 -0
- package/dist/replay/ReplayWorkerProtocol.js +0 -2
- package/dist/replay/SystemJavaScriptReplayHost.js +45 -74
- package/dist/server/ProcessCaptureElicitation.js +4 -8
- package/dist/server/createServer.js +6 -44
- package/dist/server/promptCompletion.js +37 -61
- package/dist/server/recordDerivedEvidence.js +1 -1
- package/dist/server/registerApplicationTools/characterization.js +4 -8
- package/dist/server/registerApplicationTools/compareExportShapes.js +5 -10
- package/dist/server/registerApplicationTools/compareSourceToBundle.js +6 -10
- package/dist/server/registerApplicationTools/compareVersions.js +5 -10
- package/dist/server/registerApplicationTools/controlledReplay.js +3 -5
- package/dist/server/registerApplicationTools/coverage.js +6 -71
- package/dist/server/registerApplicationTools/helpers.js +1 -13
- package/dist/server/registerApplicationTools/obligationLedger.js +3 -2
- package/dist/server/registerApplicationTools/traceFeature.js +5 -9
- package/dist/server/registerApplicationTools/traceSemantics.js +5 -8
- package/dist/server/registerApplicationTools.js +0 -2
- package/dist/server/registerArtifactComparisonTool.js +23 -27
- package/dist/server/registerBrowserScenarioTool.js +4 -4
- package/dist/server/registerBrowserTools.js +5 -8
- package/dist/server/registerBundleComparisonTool.js +5 -7
- package/dist/server/registerCloseLifecycleTool.js +2 -16
- package/dist/server/registerElectronTools.js +10 -29
- package/dist/server/registerEnhancedTools.js +10 -11
- package/dist/server/registerEvidenceTools.js +15 -22
- package/dist/server/registerFunctionComparisonTool.js +30 -25
- package/dist/server/registerInvestigationTools/helpers.js +3 -32
- package/dist/server/registerInvestigationTools.js +20 -116
- package/dist/server/registerJavaScriptRuntimeObservationTools.js +6 -4
- package/dist/server/registerManagedWorkflowTools/compareManagedMembers.js +15 -17
- package/dist/server/registerManagedWorkflowTools/evidence.js +19 -35
- package/dist/server/registerManagedWorkflowTools/importManagedReconstruction.js +3 -8
- package/dist/server/registerManagedWorkflowTools/planManagedRuntimeCorrelation.js +3 -8
- package/dist/server/registerManagedWorkflowTools/projectManagedApplicationGraph.js +10 -14
- package/dist/server/registerManagedWorkflowTools/verifyManagedNativeBoundaries.js +9 -15
- package/dist/server/registerOfficialTools.js +1 -43
- package/dist/server/registerProcessComparisonTool.js +33 -23
- package/dist/server/registerPrompts.js +19 -17
- package/dist/server/registerSessionRecordTools.js +10 -156
- package/dist/server/registerSessionStatusTool.js +6 -69
- package/dist/server/registerSessionTools.js +10 -51
- package/dist/server/sessionAvailabilityPolicy.js +0 -2
- package/dist/server/sessionEvidence.js +9 -15
- package/dist/server/sessionToolPolicies.js +0 -8
- package/dist/server/toolResult.js +14 -50
- package/dist/serverIdentity.js +0 -20
- package/install.sh +1 -1
- package/package.json +11 -7
- package/scripts/electron-active-hook.cjs +23 -55
- package/scripts/hopper-demo-x11.py +13 -32
- package/skills/reverse-engineer-anything/SKILL.md +47 -12
- package/skills/reverse-engineer-anything/references/evidence-workflows.md +6 -4
- package/skills/reverse-engineer-anything/references/javascript-applications.md +13 -13
- package/skills/reverse-engineer-anything/references/native-and-artifacts.md +12 -8
- package/dist/application/ApplicationWorkflowEvidenceResolver.js +0 -188
- package/dist/application/BoundedJsonFiles.js +0 -86
- package/dist/application/CrossVersionInventory.js +0 -129
- package/dist/application/CrossVersionInvestigation.js +0 -301
- package/dist/application/CrossVersionInvestigationCollections.js +0 -23
- package/dist/application/CrossVersionInvestigationEvidence.js +0 -64
- package/dist/application/CrossVersionInvestigationReplay.js +0 -170
- package/dist/application/DeferredFileAuthorization.js +0 -61
- package/dist/application/DoctorProjection.js +0 -43
- package/dist/application/EnhancedToolPagination.js +0 -22
- package/dist/application/EvidenceReferenceResolver.js +0 -26
- package/dist/application/InvestigationWorkspaceStore.js +0 -204
- package/dist/application/ProcessPairedExperiment.js +0 -72
- package/dist/application/ReconstructionCoverageWorkspaceStore.js +0 -31
- package/dist/application/ReconstructionReadinessService.js +0 -48
- package/dist/cliInvestigationCommands.js +0 -173
- package/dist/domain/boundedCartesianProjection.js +0 -15
- package/dist/domain/investigationWorkspace.js +0 -347
- package/dist/domain/jsonLimits.js +0 -26
- package/dist/domain/knownPageCoverage.js +0 -29
- package/dist/domain/processPairedExperiment.js +0 -128
- package/dist/server/javascriptApplicationResult.js +0 -106
- package/dist/server/permissionFailure.js +0 -12
- package/dist/server/registerApplicationTools/readiness.js +0 -50
- package/dist/server/registerEvidenceResources.js +0 -315
- package/dist/server/registerJavaScriptApplicationGraphResource.js +0 -65
- package/dist/server/registerReconstructionObligationLedgerResource.js +0 -32
- package/dist/server/registerReconstructionReadinessResource.js +0 -32
|
@@ -1,29 +1,30 @@
|
|
|
1
|
+
import { recordSessionEvidenceSources } from "../sessionEvidence.js";
|
|
1
2
|
import { compareManagedMembersEvidenceValidated } from "../../application/ManagedMemberComparisonService.js";
|
|
2
3
|
import { managedMemberComparisonResultSchema } from "../../domain/managedMemberComparison.js";
|
|
3
4
|
import { logToolExecution } from "../toolLogging.js";
|
|
4
5
|
import { toolRegistrationOptions } from "../toolRegistrationOptions.js";
|
|
5
6
|
import { toCallToolResult } from "../toolResult.js";
|
|
6
7
|
import { managedWorkflowContract } from "./contract.js";
|
|
7
|
-
import {
|
|
8
|
+
import { resolveManagedEvidence } from "./evidence.js";
|
|
8
9
|
const compareContract = managedWorkflowContract("compare_managed_members");
|
|
9
10
|
/** Register the managed member comparison workflow tool. */
|
|
10
11
|
export const registerCompareManagedMembers = (server, options) => {
|
|
11
12
|
server.registerTool(compareContract.name, toolRegistrationOptions(compareContract), async (input) => {
|
|
12
|
-
const
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
if (!
|
|
17
|
-
return toCallToolResult(
|
|
18
|
-
const [left
|
|
13
|
+
const leftResolved = resolveManagedEvidence(input.left);
|
|
14
|
+
const rightResolved = resolveManagedEvidence(input.right);
|
|
15
|
+
if (!leftResolved.ok)
|
|
16
|
+
return toCallToolResult(leftResolved, compareContract);
|
|
17
|
+
if (!rightResolved.ok)
|
|
18
|
+
return toCallToolResult(rightResolved, compareContract);
|
|
19
|
+
const [left] = leftResolved.value;
|
|
20
|
+
const [right] = rightResolved.value;
|
|
19
21
|
if (left === undefined || right === undefined)
|
|
20
22
|
throw new TypeError("Managed comparison Evidence resolution failed");
|
|
21
|
-
const
|
|
22
|
-
const parsed = { ...referencedInput, left, right };
|
|
23
|
+
const parsed = { left, right };
|
|
23
24
|
const result = await logToolExecution(options.logger, compareContract.name, () => Promise.resolve(compareManagedMembersEvidenceValidated(parsed)));
|
|
24
25
|
if (!result.ok)
|
|
25
26
|
return toCallToolResult(result, compareContract);
|
|
26
|
-
const recorded =
|
|
27
|
+
const recorded = recordSessionEvidenceSources(options.recordEvidence, [
|
|
27
28
|
parsed.left,
|
|
28
29
|
parsed.right,
|
|
29
30
|
]);
|
|
@@ -31,9 +32,8 @@ export const registerCompareManagedMembers = (server, options) => {
|
|
|
31
32
|
return toCallToolResult(recorded, compareContract);
|
|
32
33
|
const comparison = managedMemberComparisonResultSchema.parse(result.value.normalized_result);
|
|
33
34
|
const unknown = comparison.summary.unknown > 0;
|
|
34
|
-
const output =
|
|
35
|
+
const output = unknown
|
|
35
36
|
? options.recordEvidenceWithUnknown?.(result.value, {
|
|
36
|
-
approved: true,
|
|
37
37
|
question: "Which managed members remain unmatched or ambiguous across these versions?",
|
|
38
38
|
severity: "medium",
|
|
39
39
|
domain: "managed-member-comparison",
|
|
@@ -45,7 +45,7 @@ export const registerCompareManagedMembers = (server, options) => {
|
|
|
45
45
|
recommended_probes: [
|
|
46
46
|
{
|
|
47
47
|
operation: "inspect_managed_members",
|
|
48
|
-
rationale: "
|
|
48
|
+
rationale: "Review the inspection Evidence coverage and limit diagnostics; this operation has no page override, so unresolved members must remain unknown.",
|
|
49
49
|
},
|
|
50
50
|
],
|
|
51
51
|
relationships: [],
|
|
@@ -53,8 +53,6 @@ export const registerCompareManagedMembers = (server, options) => {
|
|
|
53
53
|
: options.recordEvidence?.(result.value);
|
|
54
54
|
if (output !== undefined && !output.ok)
|
|
55
55
|
return toCallToolResult(output, compareContract);
|
|
56
|
-
return toCallToolResult({ ok: true, value: result.value }, compareContract
|
|
57
|
-
evidenceResourcesAvailable: output !== undefined,
|
|
58
|
-
});
|
|
56
|
+
return toCallToolResult({ ok: true, value: result.value }, compareContract);
|
|
59
57
|
});
|
|
60
58
|
};
|
|
@@ -1,40 +1,24 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
predicate: "rea.analysis/v2",
|
|
13
|
-
});
|
|
14
|
-
export const resolveNativeEvidence = (session, evidenceIds) => {
|
|
15
|
-
const records = [];
|
|
16
|
-
for (const evidenceId of evidenceIds) {
|
|
17
|
-
const operation = session.evidenceById(evidenceId)?.operation;
|
|
18
|
-
const expectedOperation = operation === "inspect_macho" || operation === "analyze_function"
|
|
19
|
-
? operation
|
|
20
|
-
: "inspect_macho or analyze_function";
|
|
21
|
-
const resolved = resolveSessionEvidenceIds(session, [evidenceId], {
|
|
22
|
-
operation: expectedOperation,
|
|
23
|
-
predicate: "rea.analysis/v2",
|
|
24
|
-
});
|
|
25
|
-
if (!resolved.ok)
|
|
26
|
-
return resolved;
|
|
27
|
-
records.push(...resolved.value);
|
|
1
|
+
import { parseEvidence } from "../../domain/evidence.js";
|
|
2
|
+
import { EvidenceIntegrityError } from "../../domain/errors.js";
|
|
3
|
+
import { err, ok } from "../../domain/result.js";
|
|
4
|
+
const parseExpectedEvidence = (rawEvidence, expectedOperations) => {
|
|
5
|
+
try {
|
|
6
|
+
const evidence = rawEvidence.map(parseEvidence);
|
|
7
|
+
for (const record of evidence)
|
|
8
|
+
if (!expectedOperations.includes(record.operation) ||
|
|
9
|
+
record.predicate_type !== "rea.analysis")
|
|
10
|
+
throw new TypeError(`Expected ${expectedOperations.join(" or ")} Evidence, received ${record.operation}`);
|
|
11
|
+
return ok(evidence);
|
|
28
12
|
}
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
export const recordManagedSources = (recordEvidence, sources) => {
|
|
32
|
-
for (const source of sources) {
|
|
33
|
-
const recorded = recordEvidence?.(source);
|
|
34
|
-
if (recorded !== undefined && !recorded.ok)
|
|
35
|
-
return recorded;
|
|
13
|
+
catch (cause) {
|
|
14
|
+
return err(new EvidenceIntegrityError(cause instanceof Error ? cause.message : "Invalid Evidence"));
|
|
36
15
|
}
|
|
37
|
-
|
|
16
|
+
};
|
|
17
|
+
export const resolveManagedEvidence = (evidence) => parseExpectedEvidence([evidence], ["inspect_managed_members"]);
|
|
18
|
+
export const resolveManagedArtifactEvidence = (evidence) => parseExpectedEvidence([evidence], ["inspect_managed_artifact"]);
|
|
19
|
+
export const resolveManagedBoundaryEvidence = (evidence) => parseExpectedEvidence([evidence], ["inspect_managed_native_boundaries"]);
|
|
20
|
+
export const resolveNativeEvidence = (evidence) => {
|
|
21
|
+
return parseExpectedEvidence(evidence, ["inspect_macho", "analyze_function"]);
|
|
38
22
|
};
|
|
39
23
|
export const sourceEvidence = (input) => [
|
|
40
24
|
input.managed_artifact,
|
|
@@ -8,16 +8,13 @@ const reconstructionContract = managedWorkflowContract("import_managed_reconstru
|
|
|
8
8
|
/** Register the managed reconstruction import workflow tool. */
|
|
9
9
|
export const registerImportManagedReconstruction = (server, options) => {
|
|
10
10
|
server.registerTool(reconstructionContract.name, toolRegistrationOptions(reconstructionContract), async (input) => {
|
|
11
|
-
const resolved = resolveManagedEvidence(
|
|
12
|
-
input.static_members_evidence_id,
|
|
13
|
-
]);
|
|
11
|
+
const resolved = resolveManagedEvidence(input.static_members);
|
|
14
12
|
if (!resolved.ok)
|
|
15
13
|
return toCallToolResult(resolved, reconstructionContract);
|
|
16
14
|
const staticMembers = resolved.value[0];
|
|
17
15
|
if (staticMembers === undefined)
|
|
18
16
|
throw new TypeError("Managed reconstruction Evidence resolution failed");
|
|
19
|
-
const
|
|
20
|
-
const parsed = { ...referencedInput, static_members: staticMembers };
|
|
17
|
+
const parsed = { ...input, static_members: staticMembers };
|
|
21
18
|
const result = await logToolExecution(options.logger, reconstructionContract.name, () => Promise.resolve(importManagedReconstructionEvidenceValidated(parsed)));
|
|
22
19
|
if (!result.ok)
|
|
23
20
|
return toCallToolResult(result, reconstructionContract);
|
|
@@ -27,8 +24,6 @@ export const registerImportManagedReconstruction = (server, options) => {
|
|
|
27
24
|
const recorded = options.recordEvidence?.(result.value);
|
|
28
25
|
if (recorded !== undefined && !recorded.ok)
|
|
29
26
|
return toCallToolResult(recorded, reconstructionContract);
|
|
30
|
-
return toCallToolResult(result, reconstructionContract
|
|
31
|
-
evidenceResourcesAvailable: recorded !== undefined,
|
|
32
|
-
});
|
|
27
|
+
return toCallToolResult(result, reconstructionContract);
|
|
33
28
|
});
|
|
34
29
|
};
|
|
@@ -8,16 +8,13 @@ const runtimeContract = managedWorkflowContract("plan_managed_runtime_correlatio
|
|
|
8
8
|
/** Register the managed runtime correlation planning workflow tool. */
|
|
9
9
|
export const registerPlanManagedRuntimeCorrelation = (server, options) => {
|
|
10
10
|
server.registerTool(runtimeContract.name, toolRegistrationOptions(runtimeContract), async (input) => {
|
|
11
|
-
const resolved = resolveManagedEvidence(
|
|
12
|
-
input.static_members_evidence_id,
|
|
13
|
-
]);
|
|
11
|
+
const resolved = resolveManagedEvidence(input.static_members);
|
|
14
12
|
if (!resolved.ok)
|
|
15
13
|
return toCallToolResult(resolved, runtimeContract);
|
|
16
14
|
const staticMembers = resolved.value[0];
|
|
17
15
|
if (staticMembers === undefined)
|
|
18
16
|
throw new TypeError("Managed runtime Evidence resolution failed");
|
|
19
|
-
const
|
|
20
|
-
const parsed = { ...referencedInput, static_members: staticMembers };
|
|
17
|
+
const parsed = { ...input, static_members: staticMembers };
|
|
21
18
|
const result = await logToolExecution(options.logger, runtimeContract.name, () => Promise.resolve(planManagedRuntimeCorrelationEvidenceValidated(options.runtime, parsed)));
|
|
22
19
|
if (!result.ok)
|
|
23
20
|
return toCallToolResult(result, runtimeContract);
|
|
@@ -27,8 +24,6 @@ export const registerPlanManagedRuntimeCorrelation = (server, options) => {
|
|
|
27
24
|
const recorded = options.recordEvidence?.(result.value);
|
|
28
25
|
if (recorded !== undefined && !recorded.ok)
|
|
29
26
|
return toCallToolResult(recorded, runtimeContract);
|
|
30
|
-
return toCallToolResult(result, runtimeContract
|
|
31
|
-
evidenceResourcesAvailable: recorded !== undefined,
|
|
32
|
-
});
|
|
27
|
+
return toCallToolResult(result, runtimeContract);
|
|
33
28
|
});
|
|
34
29
|
};
|
|
@@ -1,32 +1,30 @@
|
|
|
1
|
+
import { recordSessionEvidenceSources } from "../sessionEvidence.js";
|
|
1
2
|
import { projectManagedApplicationGraphEvidence } from "../../application/ManagedApplicationGraphService.js";
|
|
2
3
|
import { logToolExecution } from "../toolLogging.js";
|
|
3
4
|
import { toolRegistrationOptions } from "../toolRegistrationOptions.js";
|
|
4
5
|
import { toCallToolResult } from "../toolResult.js";
|
|
5
6
|
import { managedWorkflowContract } from "./contract.js";
|
|
6
|
-
import {
|
|
7
|
+
import { resolveManagedArtifactEvidence, resolveManagedBoundaryEvidence, resolveManagedEvidence, sourceEvidence, } from "./evidence.js";
|
|
7
8
|
const graphContract = managedWorkflowContract("project_managed_application_graph");
|
|
8
9
|
/** Register the managed application graph projection workflow tool. */
|
|
9
10
|
export const registerProjectManagedApplicationGraph = (server, options) => {
|
|
10
11
|
server.registerTool(graphContract.name, toolRegistrationOptions(graphContract), async (input) => {
|
|
11
|
-
const managedArtifact = input.
|
|
12
|
+
const managedArtifact = input.managed_artifact === undefined
|
|
12
13
|
? undefined
|
|
13
|
-
: resolveManagedArtifactEvidence(
|
|
14
|
+
: resolveManagedArtifactEvidence(input.managed_artifact);
|
|
14
15
|
if (managedArtifact !== undefined && !managedArtifact.ok)
|
|
15
16
|
return toCallToolResult(managedArtifact, graphContract);
|
|
16
|
-
const managedMembers = input.
|
|
17
|
+
const managedMembers = input.managed_members === undefined
|
|
17
18
|
? undefined
|
|
18
|
-
: resolveManagedEvidence(
|
|
19
|
-
input.managed_members_evidence_id,
|
|
20
|
-
]);
|
|
19
|
+
: resolveManagedEvidence(input.managed_members);
|
|
21
20
|
if (managedMembers !== undefined && !managedMembers.ok)
|
|
22
21
|
return toCallToolResult(managedMembers, graphContract);
|
|
23
|
-
const managedBoundaries = input.
|
|
22
|
+
const managedBoundaries = input.managed_native_boundaries === undefined
|
|
24
23
|
? undefined
|
|
25
|
-
: resolveManagedBoundaryEvidence(
|
|
24
|
+
: resolveManagedBoundaryEvidence(input.managed_native_boundaries);
|
|
26
25
|
if (managedBoundaries !== undefined && !managedBoundaries.ok)
|
|
27
26
|
return toCallToolResult(managedBoundaries, graphContract);
|
|
28
27
|
const parsed = {
|
|
29
|
-
limits: input.limits,
|
|
30
28
|
managed_artifact: managedArtifact?.value[0],
|
|
31
29
|
managed_members: managedMembers?.value[0],
|
|
32
30
|
managed_native_boundaries: managedBoundaries?.value[0],
|
|
@@ -34,14 +32,12 @@ export const registerProjectManagedApplicationGraph = (server, options) => {
|
|
|
34
32
|
const result = await logToolExecution(options.logger, graphContract.name, () => Promise.resolve(projectManagedApplicationGraphEvidence(parsed)));
|
|
35
33
|
if (!result.ok)
|
|
36
34
|
return toCallToolResult(result, graphContract);
|
|
37
|
-
const recordedSources =
|
|
35
|
+
const recordedSources = recordSessionEvidenceSources(options.recordEvidence, sourceEvidence(parsed));
|
|
38
36
|
if (!recordedSources.ok)
|
|
39
37
|
return toCallToolResult(recordedSources, graphContract);
|
|
40
38
|
const recorded = options.recordEvidence?.(result.value);
|
|
41
39
|
if (recorded !== undefined && !recorded.ok)
|
|
42
40
|
return toCallToolResult(recorded, graphContract);
|
|
43
|
-
return toCallToolResult(result, graphContract
|
|
44
|
-
evidenceResourcesAvailable: recorded !== undefined,
|
|
45
|
-
});
|
|
41
|
+
return toCallToolResult(result, graphContract);
|
|
46
42
|
});
|
|
47
43
|
};
|
|
@@ -1,45 +1,41 @@
|
|
|
1
|
+
import { recordSessionEvidenceSources } from "../sessionEvidence.js";
|
|
1
2
|
import { verifyManagedNativeBoundariesEvidence } from "../../application/ManagedNativeVerificationService.js";
|
|
2
3
|
import { managedNativeVerificationResultSchema } from "../../domain/managedNativeVerification.js";
|
|
3
4
|
import { logToolExecution } from "../toolLogging.js";
|
|
4
5
|
import { toolRegistrationOptions } from "../toolRegistrationOptions.js";
|
|
5
6
|
import { toCallToolResult } from "../toolResult.js";
|
|
6
7
|
import { managedWorkflowContract } from "./contract.js";
|
|
7
|
-
import {
|
|
8
|
+
import { resolveManagedBoundaryEvidence, resolveNativeEvidence, } from "./evidence.js";
|
|
8
9
|
const nativeVerificationContract = managedWorkflowContract("verify_managed_native_boundaries");
|
|
9
10
|
/** Register the managed/native boundary verification workflow tool. */
|
|
10
11
|
export const registerVerifyManagedNativeBoundaries = (server, options) => {
|
|
11
12
|
server.registerTool(nativeVerificationContract.name, toolRegistrationOptions(nativeVerificationContract), async (input) => {
|
|
12
|
-
const managedBoundaries = resolveManagedBoundaryEvidence(
|
|
13
|
+
const managedBoundaries = resolveManagedBoundaryEvidence(input.managed_boundaries);
|
|
13
14
|
if (!managedBoundaries.ok)
|
|
14
15
|
return toCallToolResult(managedBoundaries, nativeVerificationContract);
|
|
15
|
-
const nativeObservations = resolveNativeEvidence(
|
|
16
|
+
const nativeObservations = resolveNativeEvidence(input.native_observations);
|
|
16
17
|
if (!nativeObservations.ok)
|
|
17
18
|
return toCallToolResult(nativeObservations, nativeVerificationContract);
|
|
18
19
|
const managedBoundary = managedBoundaries.value[0];
|
|
19
20
|
if (managedBoundary === undefined)
|
|
20
21
|
throw new TypeError("Managed boundary Evidence resolution failed");
|
|
21
|
-
const { managed_boundaries_evidence_id: _managedBoundariesEvidenceId, native_observation_evidence_ids: _nativeObservationEvidenceIds, ...referencedInput } = input;
|
|
22
22
|
const parsed = {
|
|
23
|
-
...
|
|
23
|
+
...input,
|
|
24
24
|
managed_boundaries: managedBoundary,
|
|
25
25
|
native_observations: nativeObservations.value,
|
|
26
26
|
};
|
|
27
27
|
const result = await logToolExecution(options.logger, nativeVerificationContract.name, () => Promise.resolve(verifyManagedNativeBoundariesEvidence(parsed)));
|
|
28
28
|
if (!result.ok)
|
|
29
29
|
return toCallToolResult(result, nativeVerificationContract);
|
|
30
|
-
const recordedSources =
|
|
31
|
-
parsed.managed_boundaries,
|
|
32
|
-
...parsed.native_observations,
|
|
33
|
-
]);
|
|
30
|
+
const recordedSources = recordSessionEvidenceSources(options.recordEvidence, [parsed.managed_boundaries, ...parsed.native_observations]);
|
|
34
31
|
if (!recordedSources.ok)
|
|
35
32
|
return toCallToolResult(recordedSources, nativeVerificationContract);
|
|
36
33
|
const verification = managedNativeVerificationResultSchema.parse(result.value.normalized_result);
|
|
37
34
|
const unknown = verification.summary.unresolved > 0 ||
|
|
38
35
|
verification.summary.contradicted > 0 ||
|
|
39
36
|
verification.summary.native_body_unresolved > 0;
|
|
40
|
-
const output =
|
|
37
|
+
const output = unknown
|
|
41
38
|
? options.recordEvidenceWithUnknown?.(result.value, {
|
|
42
|
-
approved: true,
|
|
43
39
|
question: "Which managed/native boundaries remain unresolved or contradicted by the supplied native Evidence?",
|
|
44
40
|
severity: "medium",
|
|
45
41
|
domain: "managed-native-verification",
|
|
@@ -51,7 +47,7 @@ export const registerVerifyManagedNativeBoundaries = (server, options) => {
|
|
|
51
47
|
recommended_probes: [
|
|
52
48
|
{
|
|
53
49
|
operation: "inspect_managed_native_boundaries",
|
|
54
|
-
rationale: "
|
|
50
|
+
rationale: "Review the inspection Evidence coverage and limit diagnostics; this operation has no page override, so unresolved declarations must remain unknown.",
|
|
55
51
|
},
|
|
56
52
|
{
|
|
57
53
|
operation: "analyze_function",
|
|
@@ -63,8 +59,6 @@ export const registerVerifyManagedNativeBoundaries = (server, options) => {
|
|
|
63
59
|
: options.recordEvidence?.(result.value);
|
|
64
60
|
if (output !== undefined && !output.ok)
|
|
65
61
|
return toCallToolResult(output, nativeVerificationContract);
|
|
66
|
-
return toCallToolResult(result, nativeVerificationContract
|
|
67
|
-
evidenceResourcesAvailable: output !== undefined,
|
|
68
|
-
});
|
|
62
|
+
return toCallToolResult(result, nativeVerificationContract);
|
|
69
63
|
});
|
|
70
64
|
};
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
2
|
import { OFFICIAL_TOOL_CONTRACTS } from "../contracts/toolContracts.js";
|
|
3
|
-
import { AnalysisCapabilityUnavailableError, UnknownRegistryError, } from "../domain/errors.js";
|
|
4
3
|
import { createEvidence } from "../domain/evidence.js";
|
|
5
4
|
import { jsonObjectSchema, jsonValueSchema, } from "../domain/jsonValue.js";
|
|
6
5
|
import { mcpProgressReporter } from "./mcpProgress.js";
|
|
@@ -14,7 +13,6 @@ export const registerOfficialTools = (server, analysis, options) => {
|
|
|
14
13
|
logger: options.logger,
|
|
15
14
|
activeTarget: options.activeTarget,
|
|
16
15
|
recordEvidence: options.recordEvidence,
|
|
17
|
-
recordUnknown: options.recordUnknown,
|
|
18
16
|
});
|
|
19
17
|
}
|
|
20
18
|
};
|
|
@@ -28,9 +26,6 @@ const registerOfficialTool = (server, analysis, contract, registration) => {
|
|
|
28
26
|
progress,
|
|
29
27
|
});
|
|
30
28
|
if (!result.ok) {
|
|
31
|
-
const unknownError = recordOfficialUnknown(input, result.error, contract, registration.recordUnknown);
|
|
32
|
-
if (unknownError !== undefined)
|
|
33
|
-
return toCallToolResult(unknownError, contract);
|
|
34
29
|
return toCallToolResult(result, contract);
|
|
35
30
|
}
|
|
36
31
|
const evidence = createEvidence(result.value.subject ?? registration.activeTarget?.(), result.value.provider, {
|
|
@@ -47,9 +42,7 @@ const registerOfficialTool = (server, analysis, contract, registration) => {
|
|
|
47
42
|
const recorded = registration.recordEvidence?.(evidence);
|
|
48
43
|
if (recorded !== undefined && !recorded.ok)
|
|
49
44
|
return toCallToolResult(recorded, contract);
|
|
50
|
-
return toCallToolResult({ ok: true, value: evidence }, contract
|
|
51
|
-
evidenceResourcesAvailable: recorded !== undefined,
|
|
52
|
-
});
|
|
45
|
+
return toCallToolResult({ ok: true, value: evidence }, contract);
|
|
53
46
|
});
|
|
54
47
|
};
|
|
55
48
|
const runOfficialOperation = async (analysis, contract, arguments_, execution) => {
|
|
@@ -72,48 +65,13 @@ const runOfficialOperation = async (analysis, contract, arguments_, execution) =
|
|
|
72
65
|
});
|
|
73
66
|
return result;
|
|
74
67
|
};
|
|
75
|
-
const recordOfficialUnknown = (input, error, contract, recordUnknown) => {
|
|
76
|
-
if (!(error instanceof AnalysisCapabilityUnavailableError) ||
|
|
77
|
-
!approvedUnknownTracking(input) ||
|
|
78
|
-
recordUnknown === undefined)
|
|
79
|
-
return undefined;
|
|
80
|
-
const unknown = recordUnknown({
|
|
81
|
-
approved: true,
|
|
82
|
-
question: "The requested analysis is unavailable for the current target.",
|
|
83
|
-
severity: "medium",
|
|
84
|
-
domain: "analysis-capability",
|
|
85
|
-
supporting_evidence_ids: [],
|
|
86
|
-
contradicting_evidence_ids: [],
|
|
87
|
-
required_authority: "shipped-artifact",
|
|
88
|
-
required_confidence: "observed",
|
|
89
|
-
required_environment: null,
|
|
90
|
-
recommended_probes: [
|
|
91
|
-
{
|
|
92
|
-
operation: contract.name,
|
|
93
|
-
rationale: "Choose another analysis or target that can answer this question.",
|
|
94
|
-
},
|
|
95
|
-
],
|
|
96
|
-
relationships: [],
|
|
97
|
-
});
|
|
98
|
-
if (!unknown.ok &&
|
|
99
|
-
!(unknown.error instanceof UnknownRegistryError &&
|
|
100
|
-
unknown.error.reason === "already-exists"))
|
|
101
|
-
return unknown;
|
|
102
|
-
return undefined;
|
|
103
|
-
};
|
|
104
68
|
const projectOfficialArguments = (contract, input) => {
|
|
105
69
|
const parsed = jsonObjectSchema.parse(input);
|
|
106
70
|
if (!(contract.inputSchema instanceof z.ZodObject))
|
|
107
71
|
throw new TypeError("Official tool input contract must be an object schema");
|
|
108
72
|
const projected = {};
|
|
109
73
|
for (const key of Object.keys(contract.inputSchema.shape)) {
|
|
110
|
-
if (key === "unknown_registry_approved")
|
|
111
|
-
continue;
|
|
112
74
|
projected[key] = jsonValueSchema.parse(parsed[key] ?? null);
|
|
113
75
|
}
|
|
114
76
|
return projected;
|
|
115
77
|
};
|
|
116
|
-
const approvedUnknownTracking = (input) => typeof input === "object" &&
|
|
117
|
-
input !== null &&
|
|
118
|
-
"unknown_registry_approved" in input &&
|
|
119
|
-
input.unknown_registry_approved === true;
|
|
@@ -1,35 +1,43 @@
|
|
|
1
1
|
import { SESSION_TOOL_CONTRACTS } from "../contracts/toolContracts.js";
|
|
2
2
|
import { EvidenceIntegrityError } from "../domain/errors.js";
|
|
3
|
-
import { createEvidence } from "../domain/evidence.js";
|
|
3
|
+
import { createEvidence, parseEvidence, } from "../domain/evidence.js";
|
|
4
4
|
import { jsonValueSchema } from "../domain/jsonValue.js";
|
|
5
5
|
import { compareProcessCaptures, parseProcessCapture, } from "../domain/processCapture.js";
|
|
6
6
|
import { err } from "../domain/result.js";
|
|
7
7
|
import { recordDerivedEvidence } from "./recordDerivedEvidence.js";
|
|
8
|
+
import { recordSessionEvidenceSources } from "./sessionEvidence.js";
|
|
8
9
|
import { runDerivedOperation } from "./runDerivedOperation.js";
|
|
9
|
-
import { resolveSessionEvidenceIds } from "./sessionEvidence.js";
|
|
10
10
|
import { PROCESS_PROVIDER } from "./sessionToolPolicies.js";
|
|
11
11
|
import { toolRegistrationOptions } from "./toolRegistrationOptions.js";
|
|
12
12
|
import { toCallToolResult } from "./toolResult.js";
|
|
13
13
|
const PROCESS_CAPTURE_EVIDENCE = {
|
|
14
14
|
operation: "capture_process_scenario",
|
|
15
|
-
predicate: "rea.process-capture
|
|
15
|
+
predicate: "rea.process-capture",
|
|
16
16
|
};
|
|
17
17
|
const sourceLocations = (left, right) => [...(left ?? []), ...(right ?? [])];
|
|
18
18
|
/** Register deterministic process-capture comparison and contradiction tracking. */
|
|
19
19
|
export const registerProcessComparisonTool = (server, session, contract, now = Date.now) => {
|
|
20
20
|
server.registerTool(contract.name, toolRegistrationOptions(contract), async (input, context) => {
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
21
|
+
let leftRecord;
|
|
22
|
+
let rightRecord;
|
|
23
|
+
try {
|
|
24
|
+
leftRecord = parseEvidence(input.left);
|
|
25
|
+
rightRecord = parseEvidence(input.right);
|
|
26
|
+
if (leftRecord.operation !== PROCESS_CAPTURE_EVIDENCE.operation ||
|
|
27
|
+
rightRecord.operation !== PROCESS_CAPTURE_EVIDENCE.operation ||
|
|
28
|
+
leftRecord.predicate_type !== PROCESS_CAPTURE_EVIDENCE.predicate ||
|
|
29
|
+
rightRecord.predicate_type !== PROCESS_CAPTURE_EVIDENCE.predicate)
|
|
30
|
+
throw new TypeError("Expected process capture Evidence");
|
|
31
|
+
}
|
|
32
|
+
catch (cause) {
|
|
33
|
+
return toCallToolResult(err(new EvidenceIntegrityError(cause instanceof Error ? cause.message : "Invalid Evidence")), contract);
|
|
34
|
+
}
|
|
27
35
|
let comparison;
|
|
28
36
|
let leftCapture;
|
|
29
37
|
let rightCapture;
|
|
30
38
|
try {
|
|
31
|
-
leftCapture = parseProcessCapture(leftRecord.
|
|
32
|
-
rightCapture = parseProcessCapture(rightRecord.
|
|
39
|
+
leftCapture = parseProcessCapture(leftRecord.normalized_result);
|
|
40
|
+
rightCapture = parseProcessCapture(rightRecord.normalized_result);
|
|
33
41
|
const computed = await runDerivedOperation(context, contract.name, () => compareProcessCaptures(leftCapture, rightCapture, {
|
|
34
42
|
...(input.max_capture_age_ms === undefined
|
|
35
43
|
? {}
|
|
@@ -46,16 +54,14 @@ export const registerProcessComparisonTool = (server, session, contract, now = D
|
|
|
46
54
|
catch (cause) {
|
|
47
55
|
return toCallToolResult(err(new EvidenceIntegrityError(cause instanceof Error
|
|
48
56
|
? cause.message
|
|
49
|
-
: "Invalid
|
|
57
|
+
: "Invalid process capture")), contract);
|
|
50
58
|
}
|
|
51
59
|
const evidence = createEvidence(undefined, PROCESS_PROVIDER, {
|
|
52
|
-
predicateType:
|
|
53
|
-
? "rea.process-comparison/v3"
|
|
54
|
-
: "rea.process-comparison/v4",
|
|
60
|
+
predicateType: "rea.process-comparison",
|
|
55
61
|
operation: contract.name,
|
|
56
62
|
parameters: {
|
|
57
|
-
left_evidence_id:
|
|
58
|
-
right_evidence_id:
|
|
63
|
+
left_evidence_id: leftRecord.evidence_id,
|
|
64
|
+
right_evidence_id: rightRecord.evidence_id,
|
|
59
65
|
left_normalization: leftCapture.normalization,
|
|
60
66
|
right_normalization: rightCapture.normalization,
|
|
61
67
|
...(input.trace_spec === undefined
|
|
@@ -66,15 +72,20 @@ export const registerProcessComparisonTool = (server, session, contract, now = D
|
|
|
66
72
|
confidence: "derived",
|
|
67
73
|
authority: "analyst-inference",
|
|
68
74
|
limitations: comparison.limitations,
|
|
69
|
-
locations: sourceLocations(leftRecord.
|
|
70
|
-
evidenceLinks: [
|
|
75
|
+
locations: sourceLocations(leftRecord.locations, rightRecord.locations),
|
|
76
|
+
evidenceLinks: [leftRecord.evidence_id, rightRecord.evidence_id],
|
|
71
77
|
});
|
|
72
|
-
|
|
78
|
+
const recordedSources = recordSessionEvidenceSources((evidence) => session.recordEvidence(evidence), [leftRecord, rightRecord]);
|
|
79
|
+
if (!recordedSources.ok)
|
|
80
|
+
return toCallToolResult(recordedSources, contract);
|
|
81
|
+
return toCallToolResult(recordDerivedEvidence(session, evidence, comparisonUnknownInput({
|
|
82
|
+
left_evidence_id: leftRecord.evidence_id,
|
|
83
|
+
right_evidence_id: rightRecord.evidence_id,
|
|
84
|
+
}, comparison)), contract);
|
|
73
85
|
});
|
|
74
86
|
};
|
|
75
87
|
const comparisonUnknownInput = (parsed, comparison) => {
|
|
76
|
-
if (
|
|
77
|
-
comparison.status === "unchanged")
|
|
88
|
+
if (comparison.status === "unchanged")
|
|
78
89
|
return undefined;
|
|
79
90
|
const differingScopes = [
|
|
80
91
|
["terminal", comparison.terminal],
|
|
@@ -89,7 +100,6 @@ const comparisonUnknownInput = (parsed, comparison) => {
|
|
|
89
100
|
.map(([scope]) => scope)
|
|
90
101
|
.join(", ");
|
|
91
102
|
return {
|
|
92
|
-
approved: true,
|
|
93
103
|
question: `Process captures disagree across: ${differingScopes}`,
|
|
94
104
|
severity: "high",
|
|
95
105
|
domain: "process-comparison",
|
|
@@ -39,12 +39,7 @@ const promptArgumentsSchema = (contract, completion) => {
|
|
|
39
39
|
return z.object(shape);
|
|
40
40
|
};
|
|
41
41
|
const argumentSchema = (argument, completion) => {
|
|
42
|
-
const value = z
|
|
43
|
-
.string()
|
|
44
|
-
.trim()
|
|
45
|
-
.min(1)
|
|
46
|
-
.max(4_096)
|
|
47
|
-
.describe(argument.description);
|
|
42
|
+
const value = z.string().trim().min(1).describe(argument.description);
|
|
48
43
|
const kind = argument.completion;
|
|
49
44
|
const completed = kind === undefined
|
|
50
45
|
? value
|
|
@@ -53,15 +48,22 @@ const argumentSchema = (argument, completion) => {
|
|
|
53
48
|
]);
|
|
54
49
|
return argument.required ? completed : completed.optional();
|
|
55
50
|
};
|
|
56
|
-
const promptResult = (contract, arguments_) =>
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
51
|
+
const promptResult = (contract, arguments_) => {
|
|
52
|
+
const values = promptValuesSchema.parse(arguments_);
|
|
53
|
+
for (const [name, argument] of Object.entries(contract.arguments))
|
|
54
|
+
if (argument.required &&
|
|
55
|
+
(values[name] === undefined || values[name]?.trim().length === 0))
|
|
56
|
+
throw new TypeError(`Invalid arguments: ${name} must not be empty`);
|
|
57
|
+
return {
|
|
58
|
+
description: contract.description,
|
|
59
|
+
messages: [
|
|
60
|
+
{
|
|
61
|
+
role: "user",
|
|
62
|
+
content: {
|
|
63
|
+
type: "text",
|
|
64
|
+
text: renderGuidedPrompt(contract, values),
|
|
65
|
+
},
|
|
64
66
|
},
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
}
|
|
67
|
+
],
|
|
68
|
+
};
|
|
69
|
+
};
|