rea-agents 6.2.0 → 6.4.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 +24 -23
- package/bridge/ghidra/ReaGhidraApplySeeds.java +151 -0
- package/bridge/ghidra/ReaGhidraBridge.java +597 -209
- package/bridge/ghidra/ReaGhidraNoReturnFix.java +123 -0
- package/bridge/hopper_bridge.py +2 -0
- package/dist/adb/AdbConfiguration.js +88 -0
- package/dist/adb/AdbDeviceOutput.js +186 -0
- package/dist/adb/AdbProvider.js +1190 -0
- package/dist/adb/AdbShellOutput.js +309 -0
- package/dist/android/AndroidTargetSnapshot.js +104 -22
- package/dist/android/JadxConfiguration.js +44 -24
- package/dist/android/JadxProvider.js +59 -21
- package/dist/android/JadxSession.js +51 -9
- package/dist/apktool/ApktoolConfiguration.js +84 -0
- package/dist/apktool/ApktoolDecodeOutput.js +59 -0
- package/dist/apktool/ApktoolProvider.js +506 -0
- package/dist/application/AnalysisProvider.js +8 -2
- package/dist/application/AppBundleExecutable.js +27 -22
- package/dist/application/BinaryTargetResolver.js +85 -19
- package/dist/application/BrowserScenarioEvidence.js +2 -2
- package/dist/application/CapabilityInventory.js +11 -1
- package/dist/application/ClientConfigurationDocument.js +98 -0
- package/dist/application/ClientConfigurationFiles.js +91 -0
- package/dist/application/ClientRegistrationEnvironment.js +35 -0
- package/dist/application/ClientRegistrationStatus.js +75 -27
- package/dist/application/DirectAnalysis.js +14 -8
- package/dist/application/DirectAnalysisCleanup.js +1 -2
- package/dist/application/DirectAnalysisStatus.js +3 -6
- package/dist/application/Doctor.js +27 -34
- package/dist/application/DoctorDiagnostics.js +1 -1
- package/dist/application/EvidenceBundleCommands.js +6 -12
- package/dist/application/EvidenceBundleFiles.js +1 -1
- package/dist/application/GeminiClientSettings.js +139 -0
- package/dist/application/HermesClientHome.js +115 -0
- package/dist/application/HopperDownload.js +39 -0
- package/dist/application/InvestigationProviders.js +10 -4
- package/dist/application/JsonFiles.js +16 -15
- package/dist/application/JsonInputFile.js +252 -0
- package/dist/application/LinuxHopper.js +6 -13
- package/dist/application/MacHopper.js +172 -149
- package/dist/application/MipsElfAbiFlags.js +140 -0
- package/dist/application/ProviderOperationExecution.js +31 -0
- package/dist/application/ReconstructionObligationCandidates.js +16 -3
- package/dist/application/ReconstructionObligationLedgerProjection.js +3 -1
- package/dist/application/ReferenceSourceImport.js +76 -29
- package/dist/application/ReferenceSourceImportEntries.js +18 -9
- package/dist/application/ReferenceSourceImportPolicy.js +99 -23
- package/dist/application/ReferenceSourceImportTypes.js +30 -22
- package/dist/application/ReferenceSourceVcsAdapter.js +145 -30
- package/dist/application/RegularFileRead.js +103 -0
- package/dist/application/Setup.js +69 -10
- package/dist/application/SetupClientConfiguration.js +134 -23
- package/dist/application/SetupHost.js +102 -22
- package/dist/application/SetupPlan.js +18 -17
- package/dist/application/SetupSkill.js +81 -13
- package/dist/application/SupportedClients.js +305 -37
- package/dist/application/Uninstall.js +172 -8
- package/dist/application/UpdateMaintenance.js +23 -23
- package/dist/application/Utf8JsonInput.js +71 -0
- package/dist/application/WebScriptExportService.js +130 -57
- package/dist/application/WebSourceLocationService.js +3 -0
- package/dist/application/adb/AdbDeviceAnalysisPort.js +1 -0
- package/dist/application/adb/AdbDeviceAnalysisService.js +13 -0
- package/dist/application/analysisView/AnalysisViewService.js +40 -2
- package/dist/application/android/AndroidAnalysisService.js +1 -1
- package/dist/application/apktool/ApktoolResourceAnalysisPort.js +1 -0
- package/dist/application/apktool/ApktoolResourceAnalysisService.js +13 -0
- package/dist/application/binary/AnalysisClientCleanup.js +0 -24
- package/dist/application/binary/AnalysisSnapshotCache.js +5 -4
- package/dist/application/binary/BinarySession.js +18 -1
- package/dist/application/binary/BinarySessionOpen.js +9 -1
- package/dist/application/binaryDiagnostics/BinaryLayoutService.js +2 -1
- package/dist/application/binaryDiagnostics/PeResourcesPort.js +1 -0
- package/dist/application/binaryDiagnostics/PeResourcesService.js +111 -0
- package/dist/application/binaryDiagnostics/RecordedCrashService.js +2 -1
- package/dist/application/evm/EvmInterfaceService.js +3 -0
- package/dist/application/firmware/FirmwareAnalysisService.js +3 -0
- package/dist/application/investigation/InspectEvidenceBundle.js +18 -0
- package/dist/application/javascript/ElectronActiveEvidence.js +2 -2
- package/dist/application/javascript/ElectronBoundaryAnalysis.js +2 -2
- package/dist/application/javascript/ElectronBoundaryGraphContext.js +3 -2
- package/dist/application/javascript/ElectronBoundaryGraphIpc.js +2 -2
- package/dist/application/javascript/ElectronBoundaryGraphNative.js +20 -3
- package/dist/application/javascript/ElectronBoundaryGraphWindows.js +3 -3
- package/dist/application/javascript/JavaScriptApplicationEvidence.js +1 -0
- package/dist/application/javascript/JavaScriptApplicationEvidenceGraph.js +107 -46
- package/dist/application/javascript/JavaScriptApplicationService.js +23 -11
- package/dist/application/javascript/JavaScriptApplicationWorkflowEvidence.js +5 -6
- package/dist/application/javascript/JavaScriptApplicationWorkflowService.js +59 -45
- package/dist/application/javascript/JavaScriptArtifactAnalysis.js +171 -36
- package/dist/application/javascript/JavaScriptArtifactGraphAccumulator.js +14 -16
- package/dist/application/javascript/JavaScriptArtifactGraphBuilder.js +74 -36
- package/dist/application/javascript/JavaScriptArtifactGraphBundlers.js +4 -3
- package/dist/application/javascript/JavaScriptArtifactGraphContext.js +11 -5
- package/dist/application/javascript/JavaScriptArtifactGraphFindings.js +53 -42
- package/dist/application/javascript/JavaScriptArtifactGraphStructure.js +92 -10
- package/dist/application/javascript/JavaScriptArtifactPathResolution.js +293 -238
- package/dist/application/javascript/JavaScriptArtifactReconstruction.js +120 -28
- package/dist/application/javascript/JavaScriptArtifactReconstructionInput.js +4 -0
- package/dist/application/javascript/JavaScriptJsonModules.js +2 -2
- package/dist/application/javascript/JavaScriptModuleRelationships.js +10 -20
- package/dist/application/javascript/JavaScriptRecoveryService.js +3 -0
- package/dist/application/javascript/JavaScriptRuntimeReconciliationService.js +11 -27
- package/dist/application/javascript/JavaScriptSemanticGraphAsyncProjection.js +11 -5
- package/dist/application/javascript/JavaScriptSemanticGraphBuilder.js +206 -66
- package/dist/application/javascript/JavaScriptSemanticGraphChildProcessProjection.js +1 -1
- package/dist/application/javascript/JavaScriptSemanticGraphConstruction.js +18 -23
- package/dist/application/javascript/JavaScriptSemanticGraphDataProjection.js +5 -2
- package/dist/application/javascript/JavaScriptSemanticGraphEvidence.js +1 -1
- package/dist/application/javascript/JavaScriptSemanticGraphFingerprintProjection.js +2 -2
- package/dist/application/javascript/JavaScriptSemanticGraphFlowProjection.js +7 -5
- package/dist/application/javascript/JavaScriptSemanticGraphObjectProjection.js +6 -4
- package/dist/application/javascript/JavaScriptSemanticGraphProjection.js +4 -4
- package/dist/application/javascript/JavaScriptSemanticGraphResourceProjection.js +1 -1
- package/dist/application/javascript/JavaScriptSemanticGraphValueProjection.js +29 -15
- package/dist/application/javascript/JavaScriptSemanticTraceService.js +15 -10
- package/dist/application/jeb/JebAnalysisPort.js +1 -0
- package/dist/application/jeb/JebAnalysisService.js +13 -0
- package/dist/application/managed/ManagedApplicationGraphService.js +1 -1
- package/dist/application/native/NativeCallRoutes.js +2 -4
- package/dist/application/native/NativeUiActionTrace.js +16 -8
- package/dist/application/native/NativeValueTrace.js +23 -6
- package/dist/application/process/ProcessCli.js +25 -20
- package/dist/artifacts/ArtifactPaths.js +129 -8
- package/dist/artifacts/ArtifactProvider.js +34 -31
- package/dist/artifacts/ArtifactProviderMetadata.js +1 -4
- package/dist/artifacts/ArtifactReader.js +23 -0
- package/dist/artifacts/ArtifactResourceScope.js +100 -0
- package/dist/artifacts/AsarArtifactReader.js +218 -80
- package/dist/artifacts/AsarHeader.js +24 -0
- package/dist/artifacts/DirectoryArtifactReader.js +168 -65
- package/dist/artifacts/MachOSliceArtifactReader.js +116 -39
- package/dist/artifacts/NativeDmgArtifactReader.js +179 -87
- package/dist/artifacts/NativeDmgOwnership.js +109 -0
- package/dist/artifacts/SafeOutputTree.js +245 -70
- package/dist/artifacts/SafeOutputTreeCleanup.js +45 -0
- package/dist/artifacts/SafeOutputTreeCreationFailure.js +20 -0
- package/dist/artifacts/SafeOutputTreeIdentity.js +42 -0
- package/dist/artifacts/SafeOutputTreeReadback.js +33 -0
- package/dist/artifacts/ZipArtifactReader.js +77 -27
- package/dist/artifacts/apple/InterfaceBuilderAnalysis.js +58 -18
- package/dist/artifacts/apple/InterfaceBuilderDecodeBudget.js +62 -24
- package/dist/artifacts/apple/KeyedArchiveReader.js +76 -49
- package/dist/artifacts/apple/MachoLoadCommandReader.js +36 -6
- package/dist/artifacts/extraction/ArtifactExtraction.js +134 -92
- package/dist/artifacts/inventory/ArtifactGraphConstruction.js +116 -50
- package/dist/artifacts/inventory/ArtifactInventory.js +5 -4
- package/dist/artifacts/inventory/classify.js +87 -25
- package/dist/artifacts/inventory/hashStableRootArtifact.js +70 -0
- package/dist/artifacts/inventory/reader.js +13 -5
- package/dist/artifacts/inventory/scanCanonical.js +73 -30
- package/dist/artifacts/inventory/scanReader.js +43 -20
- package/dist/artifacts/javascript/JavaScriptArtifactFiles.js +72 -28
- package/dist/artifacts/javascript/JavaScriptSourceAnalysis.js +3 -0
- package/dist/browser/BrowserScenarioPartialObservation.js +8 -2
- package/dist/browser/BrowserScenarioSecrets.js +52 -37
- package/dist/browser/CdpBrowserProvider.js +9 -3
- package/dist/browser/CdpCaptureDocuments.js +40 -6
- package/dist/browser/CdpCaptureDomSvg.js +210 -0
- package/dist/browser/CdpCaptureEventBodyShapes.js +4 -8
- package/dist/browser/CdpCaptureEventHandlers.js +26 -9
- package/dist/browser/CdpCaptureEvents.js +4 -9
- package/dist/browser/CdpCaptureStorageFingerprints.js +3 -3
- package/dist/browser/CdpConnection.js +22 -5
- package/dist/browser/CdpElectronInspection.js +2 -2
- package/dist/browser/CdpElectronProvider.js +4 -3
- package/dist/browser/CdpElectronScripts.js +2 -2
- package/dist/browser/CdpPageCapture.js +1 -1
- package/dist/browser/CdpTargetSession.js +30 -34
- package/dist/browser/CdpWebMcpDiscovery.js +48 -23
- package/dist/browser/ElectronFileScope.js +99 -9
- package/dist/browser/PlaywrightBrowserScenarioProvider.js +63 -7
- package/dist/browser/PlaywrightElectronActiveProvider.js +11 -6
- package/dist/browser/PlaywrightScenarioArtifacts.js +5 -5
- package/dist/browser/PlaywrightScenarioBrowser.js +208 -43
- package/dist/browser/PlaywrightScenarioSession.js +130 -65
- package/dist/browser/PlaywrightScenarioStorage.js +507 -0
- package/dist/browser/PngVisualDiff.js +198 -29
- package/dist/browser/WebSourceMapFetcher.js +35 -9
- package/dist/browser/assets/LocalWebScriptArtifacts.js +3 -1
- package/dist/browser/assets/PublishWebScripts.js +75 -20
- package/dist/browser/assets/ScenarioScriptCapture.js +8 -12
- package/dist/browser/assets/WebArtifactReads.js +23 -1
- package/dist/browser/assets/WebSourceLocationArtifacts.js +1 -0
- package/dist/browser/execution/CdpExecutionCapture.js +3 -3
- package/dist/browser/execution/CdpPreciseCoverage.js +5 -8
- package/dist/browser/history/HarCapture.js +14 -0
- package/dist/browser/history/HarCaptureProcess.js +2 -10
- package/dist/browser/history/MitmproxyCaptureAdapter.js +3 -1
- package/dist/browser/modules/WebModuleArtifacts.js +1 -0
- package/dist/cli/adbCommands.js +337 -0
- package/dist/cli/analysisViewCommands.js +39 -1
- package/dist/cli/apktoolCommands.js +53 -0
- package/dist/cli/artifactCommands.js +8 -11
- package/dist/cli/binaryDiagnosticsCommands.js +19 -1
- package/dist/cli/browserAdvancedCommands.js +65 -36
- package/dist/cli/coreAnalysisCommands.js +2 -2
- package/dist/cli/coreBinaryCommands.js +12 -13
- package/dist/cli/coreNativeCommands.js +1 -14
- package/dist/cli/electronCommands.js +14 -10
- package/dist/cli/evmCommands.js +13 -4
- package/dist/cli/firmwareCommands.js +7 -2
- package/dist/cli/javascriptApplicationAnalysis.js +19 -13
- package/dist/cli/javascriptRecoveryCommands.js +22 -15
- package/dist/cli/jebCommands.js +99 -0
- package/dist/cli/jsonOutput.js +12 -4
- package/dist/cli/referenceSourceImportStatus.js +7 -0
- package/dist/cli/setupCommands.js +15 -3
- package/dist/cli/streamedJsonOutput.js +83 -4
- package/dist/cli/utilityCommands.js +68 -22
- package/dist/cli/webScriptCommands.js +20 -1
- package/dist/cli/webSourceLocationCommands.js +21 -9
- package/dist/cli.js +11 -2
- package/dist/cliBrowserScenarioCommands.js +2 -1
- package/dist/cliCommandNames.js +32 -0
- package/dist/cliJsonInput.js +47 -34
- package/dist/cliObservationOptions.js +7 -0
- package/dist/composition/adb.js +3 -0
- package/dist/composition/apktool.js +3 -0
- package/dist/composition/auxiliaryAnalysisProviders.js +5 -4
- package/dist/composition/binaryDiagnostics.js +4 -0
- package/dist/composition/browserScenario.js +2 -2
- package/dist/composition/directAnalysis.js +14 -7
- package/dist/composition/javascriptAnalysisWorkerProcess.js +48 -0
- package/dist/composition/jeb.js +6 -0
- package/dist/config/environment.js +10 -0
- package/dist/config/ghidraLanguageOverride.js +9 -0
- package/dist/config/mcpInputSchemaProfile.js +27 -0
- package/dist/config/parseConfig.js +28 -1
- package/dist/contracts/adb/adbToolContracts.js +353 -0
- package/dist/contracts/advertisedInputExamples.js +48 -0
- package/dist/contracts/analysisDetail.js +10 -0
- package/dist/contracts/analysisViewToolContracts.js +17 -2
- package/dist/contracts/apktool/apktoolToolContracts.js +33 -0
- package/dist/contracts/artifactComparisonExample.js +5 -5
- package/dist/contracts/artifactToolContracts.js +8 -5
- package/dist/contracts/browserToolContracts.js +1 -1
- package/dist/contracts/compactInputSchema.js +256 -0
- package/dist/contracts/errorSchemas.js +3 -1
- package/dist/contracts/functionComparisonExample.js +8 -0
- package/dist/contracts/functionWorkflowToolContracts.js +1 -1
- package/dist/contracts/inputSchemaPresentation.js +104 -13
- package/dist/contracts/javascript/electronToolContracts.js +16 -3
- package/dist/contracts/javascript/javascriptApplicationWorkflowExamples.js +3 -2
- package/dist/contracts/javascript/javascriptExportShapeComparisonExample.js +6 -3
- package/dist/contracts/javascript/javascriptRecoveryToolContracts.js +1 -1
- package/dist/contracts/javascript/javascriptRuntimeReconciliationExample.js +8 -7
- package/dist/contracts/jeb/jebToolContracts.js +64 -0
- package/dist/contracts/managed/managedToolContracts.js +3 -2
- package/dist/contracts/mobileApplicationGraphExamples.js +5 -5
- package/dist/contracts/native/binaryDiagnosticsToolContracts.js +25 -3
- package/dist/contracts/native/nativeToolContracts.js +1 -1
- package/dist/contracts/officialToolContracts.js +5 -5
- package/dist/contracts/sessionLifecycleInputs.js +4 -3
- package/dist/contracts/sessionStatusContract.js +3 -2
- package/dist/contracts/sessionToolContracts.js +5 -4
- package/dist/contracts/sessionToolSchemas.js +9 -4
- package/dist/contracts/toolContractExamples.js +6 -0
- package/dist/contracts/toolContractTypes.js +3 -0
- package/dist/contracts/toolContracts.js +6 -0
- package/dist/contracts/toolEffects.js +167 -0
- package/dist/contracts/toolOutputSchemaGroups.js +7 -5
- package/dist/contracts/toolOutputSchemaPrimitives.js +2 -5
- package/dist/contracts/toolSchemaMetadata.js +82 -7
- package/dist/domain/adb/adbDeviceAnalysis.js +583 -0
- package/dist/domain/analysisErrorBase.js +5 -0
- package/dist/domain/analysisErrorCleanup.js +29 -0
- package/dist/domain/analysisErrorPresentation.js +18 -4
- package/dist/domain/analysisErrorProjection.js +4 -1
- package/dist/domain/analysisSnapshot.js +5 -2
- package/dist/domain/analysisView/analysisView.js +53 -5
- package/dist/domain/analysisView/binaryLayoutView.js +2 -0
- package/dist/domain/analysisView/javascriptApplicationView.js +2 -0
- package/dist/domain/analysisView/nativeFunctionView.js +155 -0
- package/dist/domain/android/androidApplication.js +25 -20
- package/dist/domain/android/androidPartialObservation.js +36 -0
- package/dist/domain/apktool/apktoolResourceAnalysis.js +77 -0
- package/dist/domain/apple/appleApplication.js +40 -23
- package/dist/domain/apple/appleBundleAnatomy.js +95 -28
- package/dist/domain/apple/dyldPaths.js +9 -1
- package/dist/domain/apple/dylibResolution.js +3 -3
- package/dist/domain/apple/interfaceBuilderGraph.js +22 -19
- package/dist/domain/apple/interfaceBuilderKeyedArchive.js +10 -1
- package/dist/domain/artifactComparison.js +39 -11
- package/dist/domain/artifactGraph.js +6 -4
- package/dist/domain/artifactIdentity.js +37 -9
- package/dist/domain/artifactInspection.js +10 -50
- package/dist/domain/artifactIntegrityPolicy.js +10 -0
- package/dist/domain/artifactInventoryEvidence.js +16 -17
- package/dist/domain/artifactPathSyntax.js +1 -1
- package/dist/domain/binaryTarget.js +16 -0
- package/dist/domain/binaryTargetTypes.js +8 -1
- package/dist/domain/browserCompleteness.js +3 -2
- package/dist/domain/browserObservationSchemas.js +8 -4
- package/dist/domain/browserScenarioCaptureValues.js +2 -2
- package/dist/domain/browserScenarioNormalization.js +3 -3
- package/dist/domain/browserScenarioValues.js +3 -2
- package/dist/domain/callPath.js +8 -10
- package/dist/domain/canonicalDigest.js +7 -1
- package/dist/domain/canonicalJsonDigestSteps.js +34 -12
- package/dist/domain/canonicalOrdering.js +1 -13
- package/dist/domain/changedBehavior.js +2 -3
- package/dist/domain/compactStringIdentity.js +9 -0
- package/dist/domain/comparisonSemantics.js +0 -5
- package/dist/domain/digests.js +0 -3
- package/dist/domain/evidence.js +12 -6
- package/dist/domain/evidenceBundle.js +51 -33
- package/dist/domain/evidenceRecordSummary.js +144 -0
- package/dist/domain/firmware/firmwareAnalysis.js +4 -3
- package/dist/domain/functionComparison.js +2 -1
- package/dist/domain/functionComparisonNormalization.js +4 -3
- package/dist/domain/functionComparisonResults.js +2 -2
- package/dist/domain/functionDossierEvidence.js +2 -1
- package/dist/domain/hopperValues.js +11 -15
- package/dist/domain/inputIssueProjection.js +16 -1
- package/dist/domain/javascript/electronActiveObservation.js +4 -3
- package/dist/domain/javascript/electronStaticAnalysisBrowser.js +14 -15
- package/dist/domain/javascript/electronStaticAnalysisIpc.js +20 -21
- package/dist/domain/javascript/electronStaticAnalysisNative.js +73 -41
- package/dist/domain/javascript/electronStaticAnalysisValues.js +24 -4
- package/dist/domain/javascript/javascriptAnalysisResourceControls.js +45 -0
- package/dist/domain/javascript/javascriptApplicationAnalysis.js +6 -1
- package/dist/domain/javascript/javascriptApplicationChangeGraph.js +18 -14
- package/dist/domain/javascript/javascriptApplicationEvidenceSchemas.js +4 -0
- package/dist/domain/javascript/javascriptApplicationGraph.js +91 -28
- package/dist/domain/javascript/javascriptApplicationProjectionResources.js +35 -0
- package/dist/domain/javascript/javascriptApplicationVersionComparison.js +4 -4
- package/dist/domain/javascript/javascriptApplicationVersionComparisonSchemas.js +37 -22
- package/dist/domain/javascript/javascriptApplicationVersionItems.js +72 -45
- package/dist/domain/javascript/javascriptApplicationVersionKeys.js +16 -8
- package/dist/domain/javascript/javascriptAstFingerprint.js +60 -33
- package/dist/domain/javascript/javascriptAstValues.js +54 -0
- package/dist/domain/javascript/javascriptElectronMemberWrites.js +50 -0
- package/dist/domain/javascript/javascriptExportShapeComparison.js +3 -2
- package/dist/domain/javascript/javascriptExportShapeComparisonSchemas.js +31 -23
- package/dist/domain/javascript/javascriptExportShapeSelection.js +2 -2
- package/dist/domain/javascript/javascriptExportShapeVariants.js +3 -2
- package/dist/domain/javascript/javascriptFeatureSeed.js +5 -3
- package/dist/domain/javascript/javascriptFeatureTrace.js +7 -6
- package/dist/domain/javascript/javascriptFeatureTraceSchemas.js +17 -9
- package/dist/domain/javascript/javascriptFeatureTraversal.js +4 -4
- package/dist/domain/javascript/javascriptModuleSemanticIr.js +15 -0
- package/dist/domain/javascript/javascriptNativeHandoff.js +12 -7
- package/dist/domain/javascript/javascriptRpcEndpoints.js +253 -0
- package/dist/domain/javascript/javascriptRuntimeLoadState.js +1 -3
- package/dist/domain/javascript/javascriptRuntimeObservation.js +8 -5
- package/dist/domain/javascript/javascriptRuntimeReconciliation.js +12 -6
- package/dist/domain/javascript/javascriptRuntimeReconciliationActive.js +9 -8
- package/dist/domain/javascript/javascriptRuntimeReconciliationCaptureParsing.js +212 -0
- package/dist/domain/javascript/javascriptRuntimeReconciliationGraph.js +12 -6
- package/dist/domain/javascript/javascriptRuntimeReconciliationInputValidation.js +28 -0
- package/dist/domain/javascript/javascriptRuntimeReconciliationMatching.js +5 -5
- package/dist/domain/javascript/javascriptRuntimeReconciliationParsing.js +12 -223
- package/dist/domain/javascript/javascriptRuntimeReconciliationResult.js +2 -2
- package/dist/domain/javascript/javascriptRuntimeReconciliationRuntime.js +15 -4
- package/dist/domain/javascript/javascriptRuntimeReconciliationSchemas.js +2 -2
- package/dist/domain/javascript/javascriptRuntimeStaticCandidates.js +15 -17
- package/dist/domain/javascript/javascriptSemanticAnalysis.js +379 -30
- package/dist/domain/javascript/javascriptSemanticCallResolution.js +9 -7
- package/dist/domain/javascript/javascriptSemanticCallableResults.js +42 -0
- package/dist/domain/javascript/javascriptSemanticCalls.js +8 -1
- package/dist/domain/javascript/javascriptSemanticChildProcesses.js +2 -2
- package/dist/domain/javascript/javascriptSemanticCoverage.js +20 -0
- package/dist/domain/javascript/javascriptSemanticDataEffectHelpers.js +7 -9
- package/dist/domain/javascript/javascriptSemanticDataEffects.js +4 -11
- package/dist/domain/javascript/javascriptSemanticDerivedAnalysis.js +15 -4
- package/dist/domain/javascript/javascriptSemanticFileProjection.js +1 -0
- package/dist/domain/javascript/javascriptSemanticFingerprints.js +43 -42
- package/dist/domain/javascript/javascriptSemanticGraph.js +205 -52
- package/dist/domain/javascript/javascriptSemanticGraphSchemas.js +21 -11
- package/dist/domain/javascript/javascriptSemanticIr.js +0 -4
- package/dist/domain/javascript/javascriptSemanticIterationSources.js +139 -0
- package/dist/domain/javascript/javascriptSemanticMemberMutations.js +774 -136
- package/dist/domain/javascript/javascriptSemanticMutationInitializers.js +190 -0
- package/dist/domain/javascript/javascriptSemanticMutationValues.js +98 -41
- package/dist/domain/javascript/javascriptSemanticObjectReferences.js +381 -0
- package/dist/domain/javascript/javascriptSemanticObjects.js +9 -7
- package/dist/domain/javascript/javascriptSemanticPrimitives.js +7 -2
- package/dist/domain/javascript/javascriptSemanticProjection.js +72 -28
- package/dist/domain/javascript/javascriptSemanticPromises.js +15 -21
- package/dist/domain/javascript/javascriptSemanticPropertyPaths.js +100 -0
- package/dist/domain/javascript/javascriptSemanticProvenance.js +3 -3
- package/dist/domain/javascript/javascriptSemanticQuery.js +33 -29
- package/dist/domain/javascript/javascriptSemanticQueryIdentity.js +4 -5
- package/dist/domain/javascript/javascriptSemanticQuerySchemas.js +8 -9
- package/dist/domain/javascript/javascriptSemanticRequireOrigin.js +16 -10
- package/dist/domain/javascript/javascriptSemanticReturnedReferences.js +219 -0
- package/dist/domain/javascript/javascriptSemanticReturns.js +34 -48
- package/dist/domain/javascript/javascriptSemanticState.js +22 -2
- package/dist/domain/javascript/javascriptSemanticTraversal.js +25 -2
- package/dist/domain/javascript/javascriptSemanticValues.js +169 -30
- package/dist/domain/javascript/javascriptSourceAnalysis.js +1 -0
- package/dist/domain/javascript/javascriptSourceMapPaths.js +11 -1
- package/dist/domain/javascript/javascriptSourceParser.js +34 -9
- package/dist/domain/javascript/javascriptStaticAnalysis.js +29 -17
- package/dist/domain/javascript/javascriptStaticAnalysisBundler.js +13 -12
- package/dist/domain/javascript/javascriptStaticAnalysisCalls.js +49 -5
- package/dist/domain/javascript/javascriptStaticAnalysisFindings.js +8 -4
- package/dist/domain/javascript/javascriptStaticAnalysisHelpers.js +26 -15
- package/dist/domain/javascript/javascriptStaticAnalysisState.js +1 -0
- package/dist/domain/javascript/sourceToBundleComparison.js +7 -5
- package/dist/domain/javascript/sourceToBundleSignals.js +7 -7
- package/dist/domain/jeb/jebAnalysis.js +114 -0
- package/dist/domain/jsonSerialization.js +109 -55
- package/dist/domain/jsonShape.js +69 -31
- package/dist/domain/jsonValue.js +3 -0
- package/dist/domain/localPath.js +10 -4
- package/dist/domain/managed/managedApplicationGraph.js +47 -6
- package/dist/domain/managed/managedApplicationGraphCoverage.js +8 -2
- package/dist/domain/managed/managedApplicationGraphNodes.js +94 -59
- package/dist/domain/managed/managedArtifact.js +1 -0
- package/dist/domain/managed/managedInspectionEvidence.js +13 -0
- package/dist/domain/managed/managedMemberComparisonMatch.js +6 -7
- package/dist/domain/native/nativeAotPe.js +1408 -0
- package/dist/domain/native/nativeCallObservation.js +2 -4
- package/dist/domain/native/nativeInstruction.js +21 -0
- package/dist/domain/native/nativeMetadataRecovery.js +79 -6
- package/dist/domain/native/nativeValueFlow.js +5 -11
- package/dist/domain/native/objcSwiftMetadata.js +15 -17
- package/dist/domain/native/peResources.js +94 -0
- package/dist/domain/nativeConvention.js +33 -0
- package/dist/domain/process/processCapture.js +102 -11
- package/dist/domain/process/processCaptureCoverage.js +8 -5
- package/dist/domain/process/processCaptureExample.js +67 -0
- package/dist/domain/process/processCaptureValidation.js +83 -3
- package/dist/domain/process/processComparison.js +0 -23
- package/dist/domain/process/processScenario.js +62 -10
- package/dist/domain/process/processTraceEvaluation.js +4 -4
- package/dist/domain/process/processTraceSpecification.js +1 -3
- package/dist/domain/propertyListKeys.js +3 -1
- package/dist/domain/providerCleanupError.js +6 -2
- package/dist/domain/reconstructionCoverage.js +2 -1
- package/dist/domain/reconstructionUnknowns.js +4 -3
- package/dist/domain/reconstructionVerification.js +3 -2
- package/dist/domain/referenceSourceGraph.js +32 -23
- package/dist/domain/referenceSourceImportParsing.js +40 -48
- package/dist/domain/referenceSourcePathIdentity.js +22 -0
- package/dist/domain/referenceSourceRequireBindings.js +137 -0
- package/dist/domain/residualUnknown.js +3 -2
- package/dist/domain/staticRuntimeCorrelation.js +2 -1
- package/dist/domain/swiftSymbolClassification.js +6 -1
- package/dist/domain/symbolAnalysis.js +17 -2
- package/dist/domain/unicodeCodePointOrder.js +6 -0
- package/dist/domain/webBundleAnalyzerInspection.js +23 -3
- package/dist/domain/webCaptureDiff.js +170 -30
- package/dist/domain/webCaptureDiffSchemas.js +2 -8
- package/dist/domain/webInventory.js +3 -2
- package/dist/domain/webMcpDiscovery.js +4 -3
- package/dist/domain/webScriptExport.js +1 -1
- package/dist/domain/webScriptExportError.js +10 -4
- package/dist/domain/webScriptExportPlan.js +7 -13
- package/dist/domain/zipPackageFormat.js +4 -1
- package/dist/domain/zodCollectionSteps.js +24 -0
- package/dist/dotnet/ManagedArtifactInspector.js +55 -43
- package/dist/dotnet/ManagedDecodeBudget.js +80 -0
- package/dist/dotnet/ManagedMemberInspector.js +13 -6
- package/dist/dotnet/ManagedMemberInspectorCore.js +2 -2
- package/dist/dotnet/ManagedMemberInstructionDecoder.js +5 -4
- package/dist/dotnet/ManagedMemberRows.js +9 -4
- package/dist/dotnet/ManagedMetadataHeaps.js +15 -5
- package/dist/dotnet/ManagedMetadataInventoryRows.js +20 -11
- package/dist/dotnet/ManagedMetadataLayout.js +10 -4
- package/dist/dotnet/ManagedMethodBodyReader.js +8 -3
- package/dist/dotnet/ManagedNativeBoundaryHelpers.js +3 -2
- package/dist/dotnet/ManagedNativeBoundaryInspector.js +49 -34
- package/dist/dotnet/ManagedPeReader.js +41 -25
- package/dist/dotnet/ManagedReaderFailure.js +2 -1
- package/dist/dotnet/ManagedStaticProvider.js +65 -31
- package/dist/dotnet/ManagedStaticProviderMetadata.js +1 -4
- package/dist/evaluation/AgentEvaluationReport.js +9 -5
- package/dist/evaluation/CodexAgentEval.js +43 -13
- package/dist/evm/EvmoleFailures.js +0 -2
- package/dist/evm/EvmoleInterfaceProvider.js +67 -2
- package/dist/filesystem/OwnedDirectoryHandle.js +29 -0
- package/dist/filesystem/OwnedFileHandle.js +36 -0
- package/dist/filesystem/RegularFile.js +73 -0
- package/dist/filesystem/StableFileHash.js +46 -0
- package/dist/filesystem/readFileHandleChunks.js +26 -0
- package/dist/firmware/FirmwareCommand.js +25 -3
- package/dist/firmware/FirmwareFiles.js +23 -8
- package/dist/firmware/FirmwareProvider.js +156 -32
- package/dist/firmware/FirmwarePublication.js +24 -3
- package/dist/firmware/FirmwareRelease.js +1 -0
- package/dist/generatedPackageMetadata.js +2 -2
- package/dist/ghidra/GhidraAnalysisProfile.js +55 -4
- package/dist/ghidra/GhidraAnalysisSeeds.js +211 -0
- package/dist/ghidra/GhidraClient.js +90 -8
- package/dist/ghidra/GhidraDiagnostics.js +11 -8
- package/dist/ghidra/GhidraFunctionValues.js +26 -2
- package/dist/ghidra/GhidraInstallation.js +111 -10
- package/dist/ghidra/GhidraInventoryValues.js +23 -1
- package/dist/ghidra/GhidraLanguageCatalog.js +99 -0
- package/dist/ghidra/GhidraLauncher.js +123 -58
- package/dist/ghidra/GhidraLoadImageAttest.js +49 -2
- package/dist/ghidra/GhidraMipsProfile.js +79 -0
- package/dist/ghidra/GhidraProvider.js +57 -9
- package/dist/ghidra/GhidraProviderCapabilities.js +18 -8
- package/dist/ghidra/GhidraProviderClient.js +282 -21
- package/dist/ghidra/GhidraSessionValues.js +9 -2
- package/dist/hopper/HopperAnalysisProfile.js +2 -0
- package/dist/hopper/HopperCleanup.js +1 -1
- package/dist/hopper/HopperClient.js +15 -6
- package/dist/hopper/HopperMachOImage.js +2 -0
- package/dist/hopper/HopperProvider.js +13 -2
- package/dist/ida/IdaOperationRunner.js +10 -2
- package/dist/ida/IdaProvider.js +7 -0
- package/dist/ida/IdaSessionClient.js +7 -3
- package/dist/ida/IdaWorkspace.js +4 -2
- package/dist/inspector/JavaScriptRuntimeScope.js +9 -5
- package/dist/inspector/V8InspectorCaptureProjection.js +46 -13
- package/dist/inspector/V8InspectorProvider.js +60 -8
- package/dist/javascript/analysis/JavaScriptAnalysisTransfer.js +326 -0
- package/dist/javascript/analysis/JavaScriptAnalysisWorker.js +520 -0
- package/dist/javascript/analysis/JavaScriptAnalysisWorkerProtocol.js +63 -0
- package/dist/javascript/analysis/JavaScriptAnalysisWorkerSchemas.js +521 -0
- package/dist/javascript/analysis/JavaScriptAnalysisWorkerServer.js +116 -0
- package/dist/javascript/recovery/RecoveryFiles.js +18 -7
- package/dist/javascript/recovery/WakaruCommand.js +22 -9
- package/dist/javascript/recovery/WakaruExecution.js +11 -7
- package/dist/javascript/recovery/WakaruProvider.js +139 -16
- package/dist/javascript/recovery/WakaruPublication.js +14 -4
- package/dist/javascript/recovery/WakaruRelease.js +10 -3
- package/dist/javascript/recovery/WakaruReport.js +12 -7
- package/dist/javascript/recovery/WakaruVersion.js +24 -0
- package/dist/javascript/sourceMaps/SourceMapCommand.js +16 -3
- package/dist/javascript/sourceMaps/SourceMapDecoder.js +63 -7
- package/dist/javascript/sourceMaps/SourceMapFormat.js +15 -4
- package/dist/jeb/JebMcpConnection.js +179 -0
- package/dist/jeb/JebMcpEndpoint.js +40 -0
- package/dist/jeb/JebProvider.js +299 -0
- package/dist/main/shutdown.js +76 -32
- package/dist/main/transport.js +1 -1
- package/dist/mcpDoctor.js +15 -6
- package/dist/native/AppleDispatchCoverage.js +25 -12
- package/dist/native/AppleDispatchMetadata.js +14 -7
- package/dist/native/AppleMachoFixups.js +71 -15
- package/dist/native/AppleMachoSelection.js +23 -3
- package/dist/native/AppleObjcDispatchFacets.js +3 -3
- package/dist/native/AppleObjcProperties.js +17 -7
- package/dist/native/LldbCallTracer.js +241 -75
- package/dist/native/NativeMacOSProvider.js +100 -20
- package/dist/native/NativeMacOSProviderMetadata.js +1 -2
- package/dist/native/NativeMachoInspection.js +11 -7
- package/dist/native/NativeUiHelperRuntime.js +6 -1
- package/dist/native/NativeUiObservation.js +4 -3
- package/dist/native/pe/PeResourceLayout.js +120 -0
- package/dist/native/pe/PeResourceParser.js +286 -0
- package/dist/native/pe/PeResourcesProvider.js +63 -0
- package/dist/process/BoundedFileBytes.js +30 -7
- package/dist/process/DarwinProcessRunTokenReader.js +8 -3
- package/dist/process/OwnedCommand.js +4 -3
- package/dist/process/ProcessOwnership.js +104 -112
- package/dist/process/ProcessOwnershipObservation.js +104 -51
- package/dist/process/ProcessOwnershipProcessTree.js +4 -4
- package/dist/process/ProcessRunTokenObservations.js +48 -0
- package/dist/process/ProviderDiagnosticRedaction.js +17 -0
- package/dist/process/ProviderProcess.js +4 -3
- package/dist/process/capture/FilesystemSnapshot.js +116 -22
- package/dist/process/capture/ProcessCaptureLifecycle.js +363 -86
- package/dist/process/capture/ProcessCaptureProgress.js +62 -0
- package/dist/process/capture/ProcessFilesystemEffects.js +19 -4
- package/dist/process/capture/ProcessHarness.js +202 -47
- package/dist/process/capture/ProcessNormalization.js +3 -1
- package/dist/process/capture/ProcessScenarioRuntimeValidation.js +5 -2
- package/dist/process/capture/TerminalRenderer.js +24 -7
- package/dist/reference/ReferenceSourceReader.js +22 -5
- package/dist/reference/ReferenceSourceReaderEntries.js +114 -51
- package/dist/reference/ReferenceSourceReaderErrors.js +12 -0
- package/dist/reference/ReferenceSourceReaderFile.js +50 -10
- package/dist/reference/ReferenceSourceReaderValidate.js +4 -4
- package/dist/server/EvidenceMcpServer.js +36 -1
- package/dist/server/admittedToolOperation.js +9 -0
- package/dist/server/analysisAdmission.js +8 -0
- package/dist/server/contractToolHandler.js +21 -0
- package/dist/server/createServer.js +118 -47
- package/dist/server/registerAdbTools.js +36 -0
- package/dist/server/registerAnalysisViewTool.js +4 -9
- package/dist/server/registerAndroidTools.js +3 -12
- package/dist/server/registerApktoolTools.js +14 -0
- package/dist/server/registerApplicationTools/compareExportShapes.js +6 -7
- package/dist/server/registerApplicationTools/compareSourceToBundle.js +4 -5
- package/dist/server/registerApplicationTools/compareVersions.js +3 -2
- package/dist/server/registerApplicationTools/coverage.js +3 -2
- package/dist/server/registerApplicationTools/helpers.js +3 -2
- package/dist/server/registerApplicationTools/obligationLedger.js +3 -2
- package/dist/server/registerApplicationTools/projectMobileApplicationGraph.js +3 -2
- package/dist/server/registerApplicationTools/traceFeature.js +3 -2
- package/dist/server/registerApplicationTools/traceSemantics.js +4 -5
- package/dist/server/registerArtifactComparisonTool.js +5 -2
- package/dist/server/registerArtifactTools.js +2 -2
- package/dist/server/registerBinaryDiagnosticsTools.js +16 -4
- package/dist/server/registerBrowserScenarioTool.js +10 -7
- package/dist/server/registerBrowserTools.js +12 -9
- package/dist/server/registerBundleComparisonTool.js +16 -2
- package/dist/server/registerCloseLifecycleTool.js +36 -5
- package/dist/server/registerElectronTools.js +28 -10
- package/dist/server/registerEnhancedTools.js +78 -73
- package/dist/server/registerEvidenceTools.js +54 -46
- package/dist/server/registerEvmTools.js +4 -9
- package/dist/server/registerFirmwareTools.js +3 -11
- package/dist/server/registerFunctionComparisonTool.js +5 -2
- package/dist/server/registerJavaScriptRecoveryTool.js +4 -9
- package/dist/server/registerJavaScriptRuntimeObservationTools.js +9 -6
- package/dist/server/registerJebTools.js +16 -0
- package/dist/server/registerManagedTools.js +7 -4
- package/dist/server/registerManagedWorkflowTools/compareManagedMembers.js +4 -6
- package/dist/server/registerManagedWorkflowTools/importManagedReconstruction.js +3 -2
- package/dist/server/registerManagedWorkflowTools/projectManagedApplicationGraph.js +3 -2
- package/dist/server/registerManagedWorkflowTools/verifyManagedNativeBoundaries.js +3 -2
- package/dist/server/registerOfficialTools.js +31 -25
- package/dist/server/registerPeResourcesTool.js +9 -0
- package/dist/server/registerProcessComparisonTool.js +5 -2
- package/dist/server/registerRecordedCrashTools.js +4 -9
- package/dist/server/registerSessionRecordTools.js +2 -1
- package/dist/server/registerSessionTools.js +58 -21
- package/dist/server/registerWebModuleTool.js +4 -9
- package/dist/server/registerWebNetworkCaptureTool.js +4 -9
- package/dist/server/registerWebRuntimeTools.js +6 -5
- package/dist/server/registerWebScriptTool.js +6 -3
- package/dist/server/registerWebSourceLocationTool.js +4 -9
- package/dist/server/toolResult.js +21 -2
- package/dist/windows/WindowsPrivateRuntime.js +12 -5
- package/install.sh +7 -4
- package/licenses/nativeaot-parser-MIT.txt +28 -0
- package/native/windows/build/manifest.json +2 -2
- package/native/windows/build/rea-windows-x64.node +0 -0
- package/package.json +38 -7
- package/scripts/rea.mjs +16 -1
- package/skills/reverse-engineer-anything/SKILL.md +52 -51
- package/skills/reverse-engineer-anything/references/connection-and-recovery.md +127 -0
- package/skills/reverse-engineer-anything/references/evidence-workflows.md +8 -0
- package/skills/reverse-engineer-anything/references/javascript-applications.md +92 -13
- package/skills/reverse-engineer-anything/references/native-and-artifacts.md +31 -1
- package/dist/artifacts/inventory/policy.js +0 -2
- package/dist/domain/managed/managedApplicationGraphNodeCoverage.js +0 -6
- package/dist/server/registerNativeTools.js +0 -6
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { evidenceSchema } from "../domain/evidence.js";
|
|
2
|
+
/** The Evidence identifier of a complete Evidence record, or undefined. */
|
|
3
|
+
const evidenceRecordId = (value) => typeof value.evidence_id === "string" &&
|
|
4
|
+
Object.hasOwn(value, "normalized_result") &&
|
|
5
|
+
evidenceSchema.safeParse(value).success
|
|
6
|
+
? value.evidence_id
|
|
7
|
+
: undefined;
|
|
8
|
+
/** Replace each embedded complete Evidence record with its exact retained reference. */
|
|
9
|
+
const referenceEmbeddedEvidence = (value) => {
|
|
10
|
+
if (Array.isArray(value)) {
|
|
11
|
+
const items = value.map(referenceEmbeddedEvidence);
|
|
12
|
+
return {
|
|
13
|
+
value: items.map((item) => item.value),
|
|
14
|
+
embedsEvidence: items.some((item) => item.embedsEvidence),
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
if (value === null || typeof value !== "object")
|
|
18
|
+
return { value, embedsEvidence: false };
|
|
19
|
+
const evidenceId = evidenceRecordId(value);
|
|
20
|
+
if (evidenceId !== undefined)
|
|
21
|
+
return {
|
|
22
|
+
value: { kind: "retained-evidence", evidence_id: evidenceId },
|
|
23
|
+
embedsEvidence: true,
|
|
24
|
+
};
|
|
25
|
+
const entries = Object.entries(value).map(([key, child]) => [key, referenceEmbeddedEvidence(child)]);
|
|
26
|
+
return {
|
|
27
|
+
value: Object.fromEntries(entries.map(([key, child]) => [key, child.value])),
|
|
28
|
+
embedsEvidence: entries.some(([, child]) => child.embedsEvidence),
|
|
29
|
+
};
|
|
30
|
+
};
|
|
31
|
+
/**
|
|
32
|
+
* Examples advertised in a tool's input schema. Embedded complete Evidence is
|
|
33
|
+
* shown as its exact same-session retained reference when the canonical input
|
|
34
|
+
* schema accepts that form; an example that can only carry inline Evidence
|
|
35
|
+
* stays in the canonical contract and its executable tests but leaves the
|
|
36
|
+
* advertisement. Every advertised example is a distinct valid canonical input.
|
|
37
|
+
*/
|
|
38
|
+
export const advertisedInputExamples = (contract) => {
|
|
39
|
+
const advertised = new Map();
|
|
40
|
+
for (const { input } of contract.examples) {
|
|
41
|
+
const projection = referenceEmbeddedEvidence(input);
|
|
42
|
+
if (projection.embedsEvidence &&
|
|
43
|
+
!contract.inputSchema.safeParse(projection.value).success)
|
|
44
|
+
continue;
|
|
45
|
+
advertised.set(JSON.stringify(projection.value), projection.value);
|
|
46
|
+
}
|
|
47
|
+
return [...advertised.values()];
|
|
48
|
+
};
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { analysisViewResultSchema } from "../domain/analysisView/analysisView.js";
|
|
3
|
+
import { evidenceResultOf } from "./toolOutputSchemaPrimitives.js";
|
|
4
|
+
/** Caller-selected delivery of completed analysis Evidence that supports retained views. */
|
|
5
|
+
export const analysisDetailSchema = z
|
|
6
|
+
.enum(["complete", "summary"])
|
|
7
|
+
.default("complete")
|
|
8
|
+
.describe("complete returns the complete analysis Evidence inline. summary retains that complete Evidence in this session and returns its inspect_analysis_view summary; inspect pages, items or facets through normalized_result.parent_evidence_id.");
|
|
9
|
+
/** Complete analysis Evidence, or the summary view of its retained record. */
|
|
10
|
+
export const analysisDetailOutputSchemaOf = (analysis) => evidenceResultOf(z.union([analysis, analysisViewResultSchema]));
|
|
@@ -2,13 +2,13 @@ import { analysisViewResultSchema, inspectAnalysisViewInputSchema, } from "../do
|
|
|
2
2
|
import { toolContractMetadata } from "./toolEffects.js";
|
|
3
3
|
import { evidenceResultOf } from "./toolOutputSchemaPrimitives.js";
|
|
4
4
|
const RETAINED_EXAMPLE_ID = `ev_${"a".repeat(64)}`;
|
|
5
|
-
/** Selected views of already completed layout and
|
|
5
|
+
/** Selected views of already completed layout, JavaScript and native function Evidence. */
|
|
6
6
|
export const ANALYSIS_VIEW_TOOL_CONTRACTS = [
|
|
7
7
|
{
|
|
8
8
|
name: "inspect_analysis_view",
|
|
9
9
|
...toolContractMetadata("inspect_analysis_view"),
|
|
10
10
|
kind: "application",
|
|
11
|
-
description: "Inspect
|
|
11
|
+
description: "Inspect selected views of completed binary-layout, JavaScript application or native analyze_function Evidence without repeating analysis. Use an exact same-session retained evidence_id or portable inline Evidence. Select a summary, layout mitigations/linkage facet, one section/symbol/module, or a stable page. Module pages include assets, bundled and source modules; use node_id for ambiguous or unavailable paths. Native views select procedure, pseudocode, assembly, basic blocks, comments, callers/callees, references, unresolved calls, referenced strings/names, native API and high-pcode. Use nonnegative offset and a positive caller-selected limit (defaults 0 and 64); pseudocode uses UTF-16 code units, other native pages use rows. Returns artifact identity, parent Evidence ID, a distinct view digest, coverage, limitations and unknowns. Actual serialized size determines MCP transport admission; choose a smaller page or export the complete retained Evidence if needed.",
|
|
12
12
|
inputSchema: inspectAnalysisViewInputSchema,
|
|
13
13
|
outputSchema: evidenceResultOf(analysisViewResultSchema),
|
|
14
14
|
examples: [
|
|
@@ -36,6 +36,21 @@ export const ANALYSIS_VIEW_TOOL_CONTRACTS = [
|
|
|
36
36
|
},
|
|
37
37
|
},
|
|
38
38
|
},
|
|
39
|
+
{
|
|
40
|
+
title: "Page native high-pcode operations from retained Evidence",
|
|
41
|
+
input: {
|
|
42
|
+
source: {
|
|
43
|
+
kind: "retained-evidence",
|
|
44
|
+
evidence_id: RETAINED_EXAMPLE_ID,
|
|
45
|
+
},
|
|
46
|
+
view: {
|
|
47
|
+
kind: "native",
|
|
48
|
+
facet: "value_flow_operations",
|
|
49
|
+
offset: 0,
|
|
50
|
+
limit: 32,
|
|
51
|
+
},
|
|
52
|
+
},
|
|
53
|
+
},
|
|
39
54
|
{
|
|
40
55
|
title: "Page module identities from retained application Evidence",
|
|
41
56
|
input: {
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { apktoolInputSchemas, apktoolResultSchemas, } from "../../domain/apktool/apktoolResourceAnalysis.js";
|
|
2
|
+
import { evidenceResultOf } from "../toolOutputSchemaPrimitives.js";
|
|
3
|
+
import { toolContractMetadata } from "../toolEffects.js";
|
|
4
|
+
/** Apktool resource decoding served by a caller-supplied launcher. */
|
|
5
|
+
export const APKTOOL_TOOL_CONTRACTS = [
|
|
6
|
+
{
|
|
7
|
+
name: "inspect_apktool_client",
|
|
8
|
+
...toolContractMetadata("inspect_apktool_client"),
|
|
9
|
+
description: "Inspect the caller-selected apktool launcher: resolved command, selection source, and version. Decodes nothing. REA never installs Apktool or Java; select a launcher with REA_APKTOOL_COMMAND (absolute) or apktool on PATH.",
|
|
10
|
+
kind: "apktool-provider",
|
|
11
|
+
inputSchema: apktoolInputSchemas.inspect_apktool_client,
|
|
12
|
+
outputSchema: evidenceResultOf(apktoolResultSchemas.inspect_apktool_client),
|
|
13
|
+
examples: [{ title: "Check the Apktool launcher", input: {} }],
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
name: "decode_android_resources",
|
|
17
|
+
...toolContractMetadata("decode_android_resources"),
|
|
18
|
+
description: "Decode one local APK's resources with `apktool d --no-src` in a provider-owned workspace that is removed after projection: the readable AndroidManifest.xml, apktool.yml version and SDK facts, the app's string resources (default or one locale, bounded to 2000 entries), available string locales, and the decoded file count. The target APK is digest with SHA-256 before decoding; smali is skipped because Java-source recovery belongs to the JADX family.",
|
|
19
|
+
kind: "apktool-provider",
|
|
20
|
+
inputSchema: apktoolInputSchemas.decode_android_resources,
|
|
21
|
+
outputSchema: evidenceResultOf(apktoolResultSchemas.decode_android_resources),
|
|
22
|
+
examples: [
|
|
23
|
+
{
|
|
24
|
+
title: "Decode an APK's resources",
|
|
25
|
+
input: { path: "/targets/Example.apk" },
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
title: "Decode one locale's strings",
|
|
29
|
+
input: { path: "/targets/Example.apk", locale: "de" },
|
|
30
|
+
},
|
|
31
|
+
],
|
|
32
|
+
},
|
|
33
|
+
];
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { digestCanonicalValue } from "../domain/canonicalDigest.js";
|
|
2
2
|
import { createEvidence } from "../domain/evidence.js";
|
|
3
3
|
import { jsonValueSchema } from "../domain/jsonValue.js";
|
|
4
4
|
const inventory = (digit) => {
|
|
5
5
|
const sha = digit.repeat(64);
|
|
6
|
-
const artifactId = `art_${
|
|
7
|
-
const occurrenceId = `occ_${
|
|
6
|
+
const artifactId = `art_${digestCanonicalValue({ sha256: sha }, "Artifact example")}`;
|
|
7
|
+
const occurrenceId = `occ_${digestCanonicalValue({ root: artifactId }, "Artifact example")}`;
|
|
8
8
|
const nodes = [
|
|
9
9
|
{
|
|
10
10
|
artifact_id: artifactId,
|
|
@@ -35,7 +35,7 @@ const inventory = (digit) => {
|
|
|
35
35
|
limitations: [],
|
|
36
36
|
},
|
|
37
37
|
];
|
|
38
|
-
const graphSha256 =
|
|
38
|
+
const graphSha256 = digestCanonicalValue({
|
|
39
39
|
nodes,
|
|
40
40
|
occurrences,
|
|
41
41
|
edges: [],
|
|
@@ -43,7 +43,7 @@ const inventory = (digit) => {
|
|
|
43
43
|
}, "Artifact example");
|
|
44
44
|
return jsonValueSchema.parse({
|
|
45
45
|
manifest: {
|
|
46
|
-
manifest_id: `agm_${
|
|
46
|
+
manifest_id: `agm_${digestCanonicalValue({
|
|
47
47
|
root_artifact_id: artifactId,
|
|
48
48
|
graph_sha256: graphSha256,
|
|
49
49
|
}, "Artifact example")}`,
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
2
|
import { artifactOutputSchemas } from "./toolOutputSchemaGroups.js";
|
|
3
|
+
import { artifactIntegrityPolicySchema } from "../domain/artifactIntegrityPolicy.js";
|
|
3
4
|
import { jsonValueSchema } from "../domain/jsonValue.js";
|
|
4
5
|
import { toolContractMetadata } from "./toolEffects.js";
|
|
5
6
|
import { requireOutputSchema } from "./toolOutputSchemaPrimitives.js";
|
|
@@ -8,12 +9,14 @@ import { dylibResolutionInputSchema } from "../domain/apple/dylibResolution.js";
|
|
|
8
9
|
import { keyedArchiveInputSchema } from "../domain/apple/keyedArchive.js";
|
|
9
10
|
/** Exact caller boundary for deterministic artifact inventory. */
|
|
10
11
|
export const artifactInventoryInputSchema = z.strictObject({
|
|
11
|
-
integrity_policy:
|
|
12
|
+
integrity_policy: artifactIntegrityPolicySchema,
|
|
12
13
|
});
|
|
13
14
|
/** Extraction needs no selector: it materializes every regular child file. */
|
|
14
|
-
export const artifactExtractionInputSchema = z.strictObject({
|
|
15
|
+
export const artifactExtractionInputSchema = z.strictObject({
|
|
16
|
+
integrity_policy: artifactIntegrityPolicySchema,
|
|
17
|
+
});
|
|
15
18
|
/** Provider input containing the destination chosen by the local adapter. */
|
|
16
|
-
export const artifactExtractionExecutionSchema =
|
|
19
|
+
export const artifactExtractionExecutionSchema = artifactExtractionInputSchema.extend({
|
|
17
20
|
output_root: z.string().min(1),
|
|
18
21
|
});
|
|
19
22
|
const exampleInputSchema = z.record(z.string(), jsonValueSchema);
|
|
@@ -47,8 +50,8 @@ const artifact = (name, description, inputSchema) => {
|
|
|
47
50
|
};
|
|
48
51
|
/** Artifact-graph inventory and safe extraction contracts. */
|
|
49
52
|
export const ARTIFACT_TOOL_CONTRACTS = [
|
|
50
|
-
artifact("inspect_artifact", "Inspect an active archive or application package in one call. Returns the complete content-addressed artifact graph,
|
|
51
|
-
artifact("extract_artifact", "Extract all regular files from the active archive or application package into a fresh temporary directory chosen by REA. The result includes its location. Rejects traversal and symlink escapes, never overwrites,
|
|
53
|
+
artifact("inspect_artifact", "Inspect an active archive or application package in one call. Returns the complete content-addressed artifact graph once, as the nested inventory Evidence, with root and integrity observations, integrity contradictions, hypotheses, unexplored branches, limitations, and next probes inline. Read-only DMG mounting is used automatically on supported macOS hosts. Integrity mismatches fail by default; record-and-continue keeps mismatches explicitly untrusted. It does not extract files; use extract_artifact to materialize its regular contents.", artifactInventoryInputSchema),
|
|
54
|
+
artifact("extract_artifact", "Extract all regular files from the active archive or application package into a fresh temporary directory chosen by REA. The result includes its location. Rejects traversal and symlink escapes, never overwrites, and verifies cleanup. Integrity mismatches fail by default; record-and-continue extracts the observed bytes and returns each mismatch as an explicitly untrusted integrity contradiction.", artifactExtractionInputSchema),
|
|
52
55
|
artifact("decode_interface_builder", "Decode compiled storyboard and nib archives inside the active Apple app bundle, including keyed property lists and NIBArchive object tables, into a bounded object, hierarchy, and connection graph. This is static archive parsing; unrecognized archive classes and unresolved code handlers remain explicit unknowns.", z.strictObject({
|
|
53
56
|
max_documents: z.number().int().min(1).max(64).default(64),
|
|
54
57
|
max_objects: z.number().int().min(1).max(20_000).default(20_000),
|
|
@@ -186,7 +186,7 @@ export const BROWSER_TOOL_CONTRACTS = [
|
|
|
186
186
|
{
|
|
187
187
|
name: "compare_web_captures",
|
|
188
188
|
...toolContractMetadata("compare_web_captures"),
|
|
189
|
-
description: "Compare passive web captures by providing before and after, each with the complete inspect_web_page normalized_result in inspection and an optional complete discover_webmcp_tools normalized_result in webmcp; or compare recorded scenarios by passing complete capture_browser_scenario normalized_result objects in before_scenario and after_scenario with an optional normalization policy. Use exactly one input group. Scenario comparison aligns exact step IDs, records deterministic literal normalization, and returns every artifact-level difference plus alignment failures inline. Missing or truncated evidence never proves equality.",
|
|
189
|
+
description: "Compare passive web captures by providing before and after, each with the complete inspect_web_page normalized_result in inspection and an optional complete discover_webmcp_tools normalized_result in webmcp; or compare recorded scenarios by passing complete capture_browser_scenario normalized_result objects in before_scenario and after_scenario with an optional normalization policy. Use exactly one input group. Network comparison includes observed HTTP requests and WebSocket frame streams; same-URL connections are compared as an unordered collection of ordered streams, retaining connection counts without claiming stable identity between individual connections. Scenario comparison aligns exact step IDs, records deterministic literal normalization, and returns every artifact-level difference plus alignment failures inline. Missing or truncated evidence never proves equality.",
|
|
190
190
|
kind: "browser-provider",
|
|
191
191
|
inputSchema: browserCaptureComparisonInputSchema,
|
|
192
192
|
outputSchema: captureDiffOutputSchema,
|
|
@@ -0,0 +1,256 @@
|
|
|
1
|
+
import { schemaArrays, schemaChildren, schemaMaps, } from "./inputSchemaPresentation.js";
|
|
2
|
+
// Kimi expands schema-local references before sending tools to Moonshot.
|
|
3
|
+
// Compact advertisements must fit after expansion, independently of client
|
|
4
|
+
// reference handling. Canonical server-side validation remains unchanged.
|
|
5
|
+
/** Annotation keys that carry guidance but no validation semantics. */
|
|
6
|
+
const annotationKeys = new Set(["description", "examples", "default", "title"]);
|
|
7
|
+
/** Keys whose values are literal data, never nested schemas to rewrite. */
|
|
8
|
+
const dataKeys = new Set(["const", "enum", "examples", "default"]);
|
|
9
|
+
const definitionKeys = new Set(["$defs", "definitions"]);
|
|
10
|
+
// An empty schema accepts every JSON value. Kimi otherwise infers string.
|
|
11
|
+
const jsonValueTypes = [
|
|
12
|
+
"null",
|
|
13
|
+
"boolean",
|
|
14
|
+
"object",
|
|
15
|
+
"array",
|
|
16
|
+
"number",
|
|
17
|
+
"string",
|
|
18
|
+
];
|
|
19
|
+
const isSchemaObject = (value) => typeof value === "object" && value !== null && !Array.isArray(value);
|
|
20
|
+
const serializedBytes = (value) => Buffer.byteLength(JSON.stringify(value), "utf8");
|
|
21
|
+
/** Rewrite every schema-valued position; literal data stays opaque. */
|
|
22
|
+
const rebuildSchemaPositions = (node, rebuild) => {
|
|
23
|
+
if (Array.isArray(node))
|
|
24
|
+
return node.map((child) => rebuild(child));
|
|
25
|
+
if (!isSchemaObject(node))
|
|
26
|
+
return node;
|
|
27
|
+
const out = {};
|
|
28
|
+
for (const [key, value] of Object.entries(node)) {
|
|
29
|
+
if (dataKeys.has(key)) {
|
|
30
|
+
out[key] = value;
|
|
31
|
+
continue;
|
|
32
|
+
}
|
|
33
|
+
if (schemaMaps.has(key) && isSchemaObject(value)) {
|
|
34
|
+
out[key] = Object.fromEntries(Object.entries(value).map(([name, child]) => [name, rebuild(child)]));
|
|
35
|
+
continue;
|
|
36
|
+
}
|
|
37
|
+
if (schemaArrays.has(key) && Array.isArray(value)) {
|
|
38
|
+
out[key] = value.map((child) => rebuild(child));
|
|
39
|
+
continue;
|
|
40
|
+
}
|
|
41
|
+
if (schemaChildren.has(key)) {
|
|
42
|
+
out[key] = Array.isArray(value)
|
|
43
|
+
? value.map((child) => rebuild(child))
|
|
44
|
+
: rebuild(value);
|
|
45
|
+
continue;
|
|
46
|
+
}
|
|
47
|
+
out[key] = value;
|
|
48
|
+
}
|
|
49
|
+
return out;
|
|
50
|
+
};
|
|
51
|
+
/**
|
|
52
|
+
* Drop annotation prose from every subschema while preserving all validation
|
|
53
|
+
* keywords. The root keeps its own description because the root-union
|
|
54
|
+
* projection encodes accepted input groups there; the root's echoed literal
|
|
55
|
+
* examples leave with the rest of the annotation prose.
|
|
56
|
+
*/
|
|
57
|
+
const stripAnnotations = (schema) => {
|
|
58
|
+
const rebuilt = rebuildSchemaPositions(schema, stripChildAnnotations);
|
|
59
|
+
const out = {};
|
|
60
|
+
for (const [key, value] of Object.entries(rebuilt)) {
|
|
61
|
+
if (annotationKeys.has(key) && key !== "description")
|
|
62
|
+
continue;
|
|
63
|
+
out[key] = value;
|
|
64
|
+
}
|
|
65
|
+
return out;
|
|
66
|
+
};
|
|
67
|
+
const stripChildAnnotations = (child) => {
|
|
68
|
+
const rebuilt = rebuildSchemaPositions(child, stripChildAnnotations);
|
|
69
|
+
if (!isSchemaObject(rebuilt))
|
|
70
|
+
return rebuilt;
|
|
71
|
+
const kept = {};
|
|
72
|
+
for (const [key, value] of Object.entries(rebuilt))
|
|
73
|
+
if (!annotationKeys.has(key))
|
|
74
|
+
kept[key] = value;
|
|
75
|
+
return kept;
|
|
76
|
+
};
|
|
77
|
+
const resolveLocalReference = (root, reference) => {
|
|
78
|
+
if (reference === "#")
|
|
79
|
+
return root;
|
|
80
|
+
if (!reference.startsWith("#/"))
|
|
81
|
+
return undefined;
|
|
82
|
+
let value = root;
|
|
83
|
+
for (const token of reference.slice(2).split("/")) {
|
|
84
|
+
const key = token.replaceAll("~1", "/").replaceAll("~0", "~");
|
|
85
|
+
if (!isSchemaObject(value) || !Object.hasOwn(value, key))
|
|
86
|
+
return undefined;
|
|
87
|
+
value = value[key];
|
|
88
|
+
}
|
|
89
|
+
return value;
|
|
90
|
+
};
|
|
91
|
+
/** Stop serialization at the budget before allocating an expanded schema. */
|
|
92
|
+
const inlineWithinBudget = (root, budgetBytes) => {
|
|
93
|
+
let resolved = true;
|
|
94
|
+
function* serialize(value, position, active) {
|
|
95
|
+
if (Array.isArray(value)) {
|
|
96
|
+
yield "[";
|
|
97
|
+
for (const [index, child] of value.entries()) {
|
|
98
|
+
if (index > 0)
|
|
99
|
+
yield ",";
|
|
100
|
+
yield* serialize(child, position, active);
|
|
101
|
+
}
|
|
102
|
+
yield "]";
|
|
103
|
+
}
|
|
104
|
+
else if (isSchemaObject(value)) {
|
|
105
|
+
if (position === "schema" && Object.keys(value).length === 0) {
|
|
106
|
+
yield JSON.stringify({ type: jsonValueTypes });
|
|
107
|
+
return;
|
|
108
|
+
}
|
|
109
|
+
if (position === "schema" && typeof value.$ref === "string") {
|
|
110
|
+
const target = resolveLocalReference(root, value.$ref);
|
|
111
|
+
if (target === undefined || active.has(value.$ref)) {
|
|
112
|
+
resolved = false;
|
|
113
|
+
return;
|
|
114
|
+
}
|
|
115
|
+
const { $ref, ...siblings } = value;
|
|
116
|
+
// Reference siblings are independent constraints in draft 2020-12.
|
|
117
|
+
// Merging their keys into the target would overwrite validation rules.
|
|
118
|
+
yield* serialize(Object.keys(siblings).length === 0
|
|
119
|
+
? target
|
|
120
|
+
: { allOf: [target, siblings] }, "schema", new Set([...active, $ref]));
|
|
121
|
+
return;
|
|
122
|
+
}
|
|
123
|
+
yield "{";
|
|
124
|
+
let first = true;
|
|
125
|
+
for (const [key, child] of Object.entries(value)) {
|
|
126
|
+
if (position === "schema" && definitionKeys.has(key))
|
|
127
|
+
continue;
|
|
128
|
+
if (!first)
|
|
129
|
+
yield ",";
|
|
130
|
+
first = false;
|
|
131
|
+
yield JSON.stringify(key) + ":";
|
|
132
|
+
const childPosition = position === "map"
|
|
133
|
+
? "schema"
|
|
134
|
+
: position === "schema" && schemaMaps.has(key)
|
|
135
|
+
? "map"
|
|
136
|
+
: position === "schema" &&
|
|
137
|
+
(schemaArrays.has(key) || schemaChildren.has(key))
|
|
138
|
+
? "schema"
|
|
139
|
+
: "data";
|
|
140
|
+
yield* serialize(child, childPosition, active);
|
|
141
|
+
}
|
|
142
|
+
yield "}";
|
|
143
|
+
}
|
|
144
|
+
else {
|
|
145
|
+
yield JSON.stringify(value);
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
const chunks = [];
|
|
149
|
+
let bytes = 0;
|
|
150
|
+
for (const chunk of serialize(root, "schema", new Set())) {
|
|
151
|
+
bytes += Buffer.byteLength(chunk, "utf8");
|
|
152
|
+
if (bytes > budgetBytes || !resolved)
|
|
153
|
+
return undefined;
|
|
154
|
+
chunks.push(chunk);
|
|
155
|
+
}
|
|
156
|
+
return resolved
|
|
157
|
+
? JSON.parse(chunks.join(""))
|
|
158
|
+
: undefined;
|
|
159
|
+
};
|
|
160
|
+
/** Preserve every possible type, including referenced and nullable unions. */
|
|
161
|
+
const detectedTypes = (schema, root, active = new Set()) => {
|
|
162
|
+
if (!isSchemaObject(schema))
|
|
163
|
+
return undefined;
|
|
164
|
+
if (typeof schema.$ref === "string") {
|
|
165
|
+
if (active.has(schema.$ref))
|
|
166
|
+
return undefined;
|
|
167
|
+
return detectedTypes(resolveLocalReference(root, schema.$ref), root, new Set([...active, schema.$ref]));
|
|
168
|
+
}
|
|
169
|
+
if (typeof schema.type === "string")
|
|
170
|
+
return [schema.type];
|
|
171
|
+
if (Array.isArray(schema.type) &&
|
|
172
|
+
schema.type.every((type) => typeof type === "string"))
|
|
173
|
+
return schema.type;
|
|
174
|
+
const alternatives = Array.isArray(schema.anyOf)
|
|
175
|
+
? schema.anyOf
|
|
176
|
+
: Array.isArray(schema.oneOf)
|
|
177
|
+
? schema.oneOf
|
|
178
|
+
: [];
|
|
179
|
+
if (alternatives.length === 0)
|
|
180
|
+
return undefined;
|
|
181
|
+
const types = alternatives.map((branch) => detectedTypes(branch, root, active));
|
|
182
|
+
if (types.some((type) => type === undefined))
|
|
183
|
+
return undefined;
|
|
184
|
+
return [...new Set(types.flatMap((type) => type ?? []))];
|
|
185
|
+
};
|
|
186
|
+
const REDUCED_ANNOTATION = "Advertised in reduced form by the compact input schema profile; the server still validates complete canonical inputs.";
|
|
187
|
+
/**
|
|
188
|
+
* Present only the root property shape with per-property guidance. Used for
|
|
189
|
+
* schemas whose validation structure alone exceeds the compact budget; the
|
|
190
|
+
* canonical schema still rejects malformed calls server-side.
|
|
191
|
+
*/
|
|
192
|
+
const reduceToShallowProperties = (schema) => {
|
|
193
|
+
const properties = isSchemaObject(schema.properties) ? schema.properties : {};
|
|
194
|
+
const description = [
|
|
195
|
+
typeof schema.description === "string" ? schema.description : undefined,
|
|
196
|
+
REDUCED_ANNOTATION,
|
|
197
|
+
]
|
|
198
|
+
.filter((text) => text !== undefined)
|
|
199
|
+
.join(" ");
|
|
200
|
+
const $schema = typeof schema.$schema === "string" ? { $schema: schema.$schema } : {};
|
|
201
|
+
const shallow = Object.fromEntries(Object.entries(properties).map(([name, value]) => {
|
|
202
|
+
const types = detectedTypes(value, schema);
|
|
203
|
+
const type = types?.length === 1 ? types[0] : types;
|
|
204
|
+
const description = isSchemaObject(value) && typeof value.description === "string"
|
|
205
|
+
? { description: value.description }
|
|
206
|
+
: {};
|
|
207
|
+
return [
|
|
208
|
+
name,
|
|
209
|
+
{ ...(type === undefined ? {} : { type }), ...description },
|
|
210
|
+
];
|
|
211
|
+
}));
|
|
212
|
+
return {
|
|
213
|
+
...$schema,
|
|
214
|
+
type: "object",
|
|
215
|
+
description,
|
|
216
|
+
properties: shallow,
|
|
217
|
+
...(Array.isArray(schema.required)
|
|
218
|
+
? { required: [...schema.required] }
|
|
219
|
+
: {}),
|
|
220
|
+
...(typeof schema.minProperties === "number"
|
|
221
|
+
? { minProperties: schema.minProperties }
|
|
222
|
+
: {}),
|
|
223
|
+
...(isSchemaObject(schema.dependentRequired)
|
|
224
|
+
? { dependentRequired: { ...schema.dependentRequired } }
|
|
225
|
+
: {}),
|
|
226
|
+
...(schema.additionalProperties === false
|
|
227
|
+
? { additionalProperties: false }
|
|
228
|
+
: {}),
|
|
229
|
+
};
|
|
230
|
+
};
|
|
231
|
+
/**
|
|
232
|
+
* Render an advertised input schema within a per-schema byte budget for
|
|
233
|
+
* providers that validate the literal serialized schema size. Validation
|
|
234
|
+
* keywords and the canonical contract are preserved; only
|
|
235
|
+
* annotation prose and, for structurally oversized schemas, nested
|
|
236
|
+
* validation detail leave the advertised form.
|
|
237
|
+
*/
|
|
238
|
+
export const compactAdvertisedInputSchema = (schema, budgetBytes) => {
|
|
239
|
+
const inline = inlineWithinBudget(stripAnnotations(schema), budgetBytes);
|
|
240
|
+
if (inline !== undefined)
|
|
241
|
+
return { schema: inline, presentation: "inline" };
|
|
242
|
+
const reduced = reduceToShallowProperties(schema);
|
|
243
|
+
if (serializedBytes(reduced) <= budgetBytes)
|
|
244
|
+
return { schema: reduced, presentation: "reduced" };
|
|
245
|
+
// A future contract with an extreme root-property count still advertises
|
|
246
|
+
// an honest, budget-fitting shape instead of an oversized one.
|
|
247
|
+
return {
|
|
248
|
+
schema: reduceToShallowProperties({
|
|
249
|
+
type: "object",
|
|
250
|
+
description: (typeof schema.description === "string"
|
|
251
|
+
? `${schema.description} `
|
|
252
|
+
: "") + REDUCED_ANNOTATION,
|
|
253
|
+
}),
|
|
254
|
+
presentation: "reduced",
|
|
255
|
+
};
|
|
256
|
+
};
|
|
@@ -68,7 +68,9 @@ export const analysisCliErrorEnvelopeSchema = z
|
|
|
68
68
|
.object({
|
|
69
69
|
error: z.string().min(1),
|
|
70
70
|
input_path: z.string().optional(),
|
|
71
|
-
input_reason: z
|
|
71
|
+
input_reason: z
|
|
72
|
+
.enum(["invalid-json", "read-failed", "too-large"])
|
|
73
|
+
.optional(),
|
|
72
74
|
})
|
|
73
75
|
.passthrough()
|
|
74
76
|
.superRefine((value, context) => {
|
|
@@ -5,6 +5,11 @@ const dossier = (text) => jsonValueSchema.parse({
|
|
|
5
5
|
procedure: {
|
|
6
6
|
address: "0x1000",
|
|
7
7
|
name: "main",
|
|
8
|
+
classification: null,
|
|
9
|
+
body: {
|
|
10
|
+
available: false,
|
|
11
|
+
reason: "The fixture omits function-body extent observations.",
|
|
12
|
+
},
|
|
8
13
|
signature: "int main(void)",
|
|
9
14
|
locals: [],
|
|
10
15
|
},
|
|
@@ -18,6 +23,9 @@ const dossier = (text) => jsonValueSchema.parse({
|
|
|
18
23
|
referenced_strings: [],
|
|
19
24
|
referenced_names: [],
|
|
20
25
|
basic_blocks: [{ start: "0x1000", end: "0x1001", successors: [] }],
|
|
26
|
+
native_api: null,
|
|
27
|
+
native_value_flow: null,
|
|
28
|
+
limitations: ["The fixture omits native API and value-flow observations."],
|
|
21
29
|
});
|
|
22
30
|
const observe = (digit, text) => createEvidence({
|
|
23
31
|
path: `/tmp/function-${digit}`,
|
|
@@ -24,6 +24,6 @@ const functionWorkflow = (name, description) => {
|
|
|
24
24
|
};
|
|
25
25
|
/** Function dossier and native API reconstruction workflow contracts. */
|
|
26
26
|
export const FUNCTION_WORKFLOW_TOOL_CONTRACTS = [
|
|
27
|
-
functionWorkflow("analyze_function", "Build a dossier for one native function identified by symbol or provider-returned address. Returns identity with complete inclusive body ranges or explicit unknown, provider-specific pseudocode and assembly, comments, calls, references, referenced strings/names, local CFG blocks, and available native API boundary observations."),
|
|
27
|
+
functionWorkflow("analyze_function", "Build a dossier for one native function identified by symbol or provider-returned address. Returns identity with complete inclusive analyzed body ranges or explicit unknown, provider-specific pseudocode and assembly, comments, calls, references, referenced strings/names, local CFG blocks, and available native API boundary observations. Ghidra terminal-call assumptions that may cut the analyzed body are reported in limitations with available callee identities."),
|
|
28
28
|
functionWorkflow("inspect_native_api", "Analyze a native API boundary in one function identified by symbol or provider-returned address. Returns confidence, evidence, jump-table dispatch/data/case mappings, separately evidenced default targets, unsupported branches, and residual unknowns. Null case values mean unresolved cases, never a known default."),
|
|
29
29
|
];
|