rea-agents 6.1.0 → 6.3.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.
Files changed (573) hide show
  1. package/README.md +24 -24
  2. package/bridge/ghidra/ReaGhidraBridge.java +32 -4
  3. package/bridge/hopper_bridge.py +8 -1
  4. package/dist/android/JadxConfiguration.js +87 -7
  5. package/dist/android/JadxMcpTransport.js +14 -2
  6. package/dist/android/JadxProvider.js +64 -36
  7. package/dist/android/JadxSession.js +51 -9
  8. package/dist/application/BinaryTargetResolver.js +68 -20
  9. package/dist/application/BrowserEvidence.js +3 -8
  10. package/dist/application/BrowserScenarioEvidence.js +4 -20
  11. package/dist/application/CapabilityInventory.js +43 -9
  12. package/dist/application/ClientConfigurationDocument.js +97 -25
  13. package/dist/application/ClientRegistrationStatus.js +19 -6
  14. package/dist/application/DirectAnalysis.js +41 -20
  15. package/dist/application/DirectAnalysisCleanup.js +71 -0
  16. package/dist/application/DirectAnalysisStatus.js +3 -7
  17. package/dist/application/Doctor.js +40 -53
  18. package/dist/application/DoctorDiagnostics.js +2 -3
  19. package/dist/application/EnhancedTools.js +51 -6
  20. package/dist/application/EvidenceBundleFiles.js +8 -3
  21. package/dist/application/InvestigationProviders.js +13 -5
  22. package/dist/application/JsonFiles.js +56 -23
  23. package/dist/application/LinuxHopper.js +11 -7
  24. package/dist/application/MacHopper.js +15 -18
  25. package/dist/application/RealHopperAssertions.js +0 -11
  26. package/dist/application/ReconstructionObligationCandidates.js +10 -3
  27. package/dist/application/ReconstructionObligationLedgerProjection.js +3 -1
  28. package/dist/application/ReferenceSourceImportEntries.js +1 -1
  29. package/dist/application/RegularFileRead.js +17 -0
  30. package/dist/application/Setup.js +26 -23
  31. package/dist/application/SetupClientConfiguration.js +18 -7
  32. package/dist/application/SetupHost.js +20 -29
  33. package/dist/application/SetupPlan.js +24 -20
  34. package/dist/application/SetupSkill.js +57 -8
  35. package/dist/application/SupportedClients.js +43 -0
  36. package/dist/application/Uninstall.js +98 -30
  37. package/dist/application/UpdateMaintenance.js +13 -7
  38. package/dist/application/UpdateRuntime.js +12 -12
  39. package/dist/application/Utf8JsonInput.js +64 -0
  40. package/dist/application/WebScriptExportService.js +38 -5
  41. package/dist/application/WorkflowEvidence.js +25 -2
  42. package/dist/application/XrefsAddressResolution.js +45 -0
  43. package/dist/application/analysisView/AnalysisViewService.js +76 -0
  44. package/dist/application/android/AndroidAnalysisService.js +1 -1
  45. package/dist/application/binary/AnalysisClientCleanup.js +30 -5
  46. package/dist/application/binary/AnalysisProviderEvaluation.js +1 -2
  47. package/dist/application/binary/AnalysisProviderRegistry.js +2 -6
  48. package/dist/application/binary/AnalysisSnapshotCache.js +13 -10
  49. package/dist/application/binary/BinarySession.js +86 -29
  50. package/dist/application/binary/BinarySessionComposition.js +1 -3
  51. package/dist/application/binary/BinarySessionExecution.js +3 -5
  52. package/dist/application/binary/BinarySessionOpen.js +10 -2
  53. package/dist/application/binary/BinarySessionRecords.js +1 -1
  54. package/dist/application/binary/BinarySessionStatus.js +1 -6
  55. package/dist/application/binary/CompositeProvider.js +4 -18
  56. package/dist/application/binary/LazyAnalysisProvider.js +5 -5
  57. package/dist/application/binary/SessionProviderRouter.js +27 -135
  58. package/dist/application/homebrew.js +48 -0
  59. package/dist/application/javascript/ElectronActiveEvidence.js +10 -14
  60. package/dist/application/javascript/ElectronBoundaryAnalysis.js +2 -2
  61. package/dist/application/javascript/ElectronBoundaryGraphNative.js +5 -1
  62. package/dist/application/javascript/JavaScriptApplicationEvidence.js +3 -6
  63. package/dist/application/javascript/JavaScriptApplicationEvidenceGraph.js +107 -46
  64. package/dist/application/javascript/JavaScriptApplicationService.js +7 -1
  65. package/dist/application/javascript/JavaScriptApplicationWorkflowService.js +59 -45
  66. package/dist/application/javascript/JavaScriptArtifactAnalysis.js +5 -9
  67. package/dist/application/javascript/JavaScriptArtifactGraphBuilder.js +19 -27
  68. package/dist/application/javascript/JavaScriptArtifactGraphBundlers.js +11 -3
  69. package/dist/application/javascript/JavaScriptArtifactGraphContext.js +9 -0
  70. package/dist/application/javascript/JavaScriptArtifactGraphDocuments.js +8 -5
  71. package/dist/application/javascript/JavaScriptArtifactGraphFindings.js +46 -29
  72. package/dist/application/javascript/JavaScriptArtifactGraphStructure.js +0 -1
  73. package/dist/application/javascript/JavaScriptArtifactPathResolution.js +86 -27
  74. package/dist/application/javascript/JavaScriptArtifactReconstruction.js +52 -9
  75. package/dist/application/javascript/JavaScriptArtifactReconstructionInput.js +1 -0
  76. package/dist/application/javascript/JavaScriptJsonModules.js +2 -2
  77. package/dist/application/javascript/JavaScriptModuleRelationships.js +6 -18
  78. package/dist/application/javascript/JavaScriptRuntimeObservationService.js +3 -3
  79. package/dist/application/javascript/JavaScriptRuntimeReconciliationService.js +11 -27
  80. package/dist/application/javascript/JavaScriptSemanticGraphAsyncProjection.js +4 -5
  81. package/dist/application/javascript/JavaScriptSemanticGraphBuilder.js +8 -6
  82. package/dist/application/javascript/JavaScriptSemanticGraphChildProcessProjection.js +2 -3
  83. package/dist/application/javascript/JavaScriptSemanticGraphConstruction.js +7 -5
  84. package/dist/application/javascript/JavaScriptSemanticGraphDataProjection.js +3 -4
  85. package/dist/application/javascript/JavaScriptSemanticGraphEvidence.js +1 -1
  86. package/dist/application/javascript/JavaScriptSemanticGraphFingerprintProjection.js +2 -2
  87. package/dist/application/javascript/JavaScriptSemanticGraphFlowProjection.js +3 -7
  88. package/dist/application/javascript/JavaScriptSemanticGraphObjectProjection.js +76 -47
  89. package/dist/application/javascript/JavaScriptSemanticGraphProjection.js +4 -4
  90. package/dist/application/javascript/JavaScriptSemanticGraphResourceProjection.js +3 -4
  91. package/dist/application/javascript/JavaScriptSemanticGraphValueProjection.js +51 -25
  92. package/dist/application/javascript/JavaScriptSemanticTraceService.js +15 -10
  93. package/dist/application/managed/ManagedMemberComparisonService.js +2 -1
  94. package/dist/application/managed/ManagedNativeVerificationService.js +2 -1
  95. package/dist/application/native/NativeCallRoutes.js +2 -4
  96. package/dist/application/process/ProcessCli.js +11 -11
  97. package/dist/application/process/ProcessEvidence.js +0 -1
  98. package/dist/artifacts/ArtifactProvider.js +53 -30
  99. package/dist/artifacts/ArtifactProviderMetadata.js +1 -4
  100. package/dist/artifacts/ArtifactReader.js +31 -0
  101. package/dist/artifacts/AsarArtifactReader.js +81 -17
  102. package/dist/artifacts/DirectoryArtifactReader.js +2 -1
  103. package/dist/artifacts/MachOSliceArtifactReader.js +9 -2
  104. package/dist/artifacts/NativeDmgArtifactReader.js +207 -77
  105. package/dist/artifacts/NativeDmgOwnership.js +109 -0
  106. package/dist/artifacts/SafeOutputTree.js +16 -2
  107. package/dist/artifacts/ZipArtifactReader.js +11 -4
  108. package/dist/artifacts/apple/AppleAssetCatalogAnalysis.js +4 -2
  109. package/dist/artifacts/apple/DylibResolutionReader.js +17 -7
  110. package/dist/artifacts/apple/KeyedArchiveReader.js +68 -42
  111. package/dist/artifacts/apple/MachoLoadCommandReader.js +36 -6
  112. package/dist/artifacts/extraction/ArtifactExtraction.js +104 -29
  113. package/dist/artifacts/inventory/ArtifactGraphConstruction.js +71 -66
  114. package/dist/artifacts/inventory/ArtifactInventory.js +0 -1
  115. package/dist/artifacts/inventory/classify.js +33 -14
  116. package/dist/artifacts/inventory/hashStableRootArtifact.js +37 -0
  117. package/dist/artifacts/inventory/reader.js +3 -3
  118. package/dist/artifacts/inventory/scanCanonical.js +64 -34
  119. package/dist/artifacts/inventory/scanReader.js +12 -20
  120. package/dist/artifacts/javascript/JavaScriptArtifactFiles.js +65 -27
  121. package/dist/browser/BrowserScenarioPartialObservation.js +106 -0
  122. package/dist/browser/CdpBrowserProvider.js +6 -6
  123. package/dist/browser/CdpCaptureEventHandlers.js +2 -4
  124. package/dist/browser/CdpCaptureEvents.js +0 -1
  125. package/dist/browser/CdpCaptureStorageFingerprints.js +3 -3
  126. package/dist/browser/CdpCaptureValues.js +20 -0
  127. package/dist/browser/CdpElectronInspection.js +2 -2
  128. package/dist/browser/CdpElectronProvider.js +4 -5
  129. package/dist/browser/CdpElectronScriptEvents.js +2 -8
  130. package/dist/browser/CdpElectronScripts.js +4 -5
  131. package/dist/browser/CdpPageCaptureScripts.js +2 -3
  132. package/dist/browser/CdpSafeMetadata.js +10 -10
  133. package/dist/browser/CdpWebMcpDiscovery.js +16 -13
  134. package/dist/browser/PlaywrightBrowserScenarioProvider.js +64 -49
  135. package/dist/browser/PlaywrightElectronActiveActions.js +2 -56
  136. package/dist/browser/PlaywrightElectronActiveProvider.js +10 -6
  137. package/dist/browser/PlaywrightScenarioArtifacts.js +1 -1
  138. package/dist/browser/PlaywrightScenarioBrowser.js +269 -66
  139. package/dist/browser/PlaywrightScenarioEvents.js +1 -1
  140. package/dist/browser/PlaywrightScenarioSession.js +41 -32
  141. package/dist/browser/WebSourceMapFetcher.js +32 -6
  142. package/dist/browser/assets/ScenarioScriptCapture.js +8 -12
  143. package/dist/browser/assets/ScriptCaptureAdapters.js +1 -1
  144. package/dist/browser/history/CaptureFailures.js +6 -2
  145. package/dist/browser/history/MitmproxyCaptureAdapter.js +4 -2
  146. package/dist/catalogIdentity.js +0 -1
  147. package/dist/cli/analysisViewCommands.js +36 -0
  148. package/dist/cli/artifactCommands.js +11 -12
  149. package/dist/cli/coreAnalysisCommands.js +3 -3
  150. package/dist/cli/coreBinaryCommands.js +37 -28
  151. package/dist/cli/coreNativeCommands.js +9 -10
  152. package/dist/cli/electronCommands.js +12 -13
  153. package/dist/cli/interactiveSetup.js +6 -6
  154. package/dist/cli/javascriptApplicationAnalysis.js +2 -12
  155. package/dist/cli/jsonOutput.js +3 -2
  156. package/dist/cli/managedCommands.js +7 -8
  157. package/dist/cli/nativeCallCommands.js +1 -2
  158. package/dist/cli/omittableDefaults.js +50 -0
  159. package/dist/cli/processCommands.js +3 -2
  160. package/dist/cli/setupCommands.js +16 -15
  161. package/dist/cli/streamedJsonOutput.js +83 -4
  162. package/dist/cli/utilityCommands.js +10 -12
  163. package/dist/cli.js +19 -8
  164. package/dist/cliBrowserScenarioCommands.js +2 -2
  165. package/dist/cliCommandNames.js +1 -0
  166. package/dist/cliJsonFile.js +179 -0
  167. package/dist/cliJsonInput.js +60 -33
  168. package/dist/cliObservationOptions.js +4 -0
  169. package/dist/cliOutput.js +0 -38
  170. package/dist/composition/auxiliaryAnalysisProviders.js +30 -25
  171. package/dist/composition/binary.js +9 -9
  172. package/dist/composition/browserScenario.js +2 -1
  173. package/dist/composition/directAnalysis.js +20 -14
  174. package/dist/composition/electronScenario.js +1 -1
  175. package/dist/composition/optionalObservationProviders.js +12 -7
  176. package/dist/config/environment.js +6 -0
  177. package/dist/config/ghidraStartupTimeout.js +4 -9
  178. package/dist/config/homeDirectory.js +12 -0
  179. package/dist/config/mcpResponseBudget.js +9 -1
  180. package/dist/config/parseConfig.js +7 -3
  181. package/dist/config/parsers.js +19 -22
  182. package/dist/contracts/analysisViewToolContracts.js +56 -0
  183. package/dist/contracts/applicationToolContracts.js +5 -4
  184. package/dist/contracts/artifactComparisonExample.js +7 -7
  185. package/dist/contracts/artifactToolContracts.js +1 -1
  186. package/dist/contracts/browserScenarioToolContracts.js +1 -1
  187. package/dist/contracts/browserToolContracts.js +19 -15
  188. package/dist/contracts/enhancedInputs.js +2 -2
  189. package/dist/contracts/enhancedToolContracts.js +4 -3
  190. package/dist/contracts/errorSchemas.js +3 -1
  191. package/dist/contracts/evm/evmToolContracts.js +1 -1
  192. package/dist/contracts/functionComparisonExample.js +8 -0
  193. package/dist/contracts/functionWorkflowToolContracts.js +1 -1
  194. package/dist/contracts/inputSchemaPresentation.js +181 -0
  195. package/dist/contracts/investigationExamples.js +4 -3
  196. package/dist/contracts/javascript/electronToolContracts.js +3 -2
  197. package/dist/contracts/javascript/javascriptApplicationWorkflowExamples.js +3 -22
  198. package/dist/contracts/javascript/javascriptExportShapeComparisonExample.js +248 -0
  199. package/dist/contracts/javascript/javascriptRuntimeObservationToolContracts.js +1 -1
  200. package/dist/contracts/javascript/javascriptRuntimeReconciliationExample.js +8 -7
  201. package/dist/contracts/managed/managedToolContracts.js +8 -12
  202. package/dist/contracts/managed/managedWorkflowToolContracts.js +1 -1
  203. package/dist/contracts/mobileApplicationGraphExamples.js +8 -8
  204. package/dist/contracts/native/binaryDiagnosticsToolContracts.js +1 -1
  205. package/dist/contracts/native/nativeToolContracts.js +2 -2
  206. package/dist/contracts/officialToolContracts.js +2 -1
  207. package/dist/contracts/promptContracts.js +2 -2
  208. package/dist/contracts/providerSelection.js +1 -1
  209. package/dist/contracts/sessionLifecycleInputs.js +4 -3
  210. package/dist/contracts/sessionStatusContract.js +3 -2
  211. package/dist/contracts/sessionToolContracts.js +17 -4
  212. package/dist/contracts/sessionToolSchemas.js +4 -16
  213. package/dist/contracts/toolContracts.js +2 -0
  214. package/dist/contracts/toolEffects.js +1 -0
  215. package/dist/contracts/toolOutputSchemaGroups.js +138 -94
  216. package/dist/contracts/toolOutputSchemaPrimitives.js +13 -26
  217. package/dist/contracts/toolSchemaMetadata.js +18 -69
  218. package/dist/contracts/webNetworkCaptureToolContracts.js +1 -1
  219. package/dist/contracts/webRuntimeToolContracts.js +1 -1
  220. package/dist/contracts/webScriptToolContracts.js +1 -1
  221. package/dist/doctorRuntime.js +7 -5
  222. package/dist/domain/analysisErrorBase.js +5 -0
  223. package/dist/domain/analysisErrorCore.js +3 -0
  224. package/dist/domain/analysisErrorPresentation.js +22 -5
  225. package/dist/domain/analysisErrorProjection.js +24 -5
  226. package/dist/domain/analysisSnapshot.js +31 -31
  227. package/dist/domain/analysisView/analysisView.js +241 -0
  228. package/dist/domain/analysisView/analysisViewCoverage.js +19 -0
  229. package/dist/domain/analysisView/binaryLayoutView.js +159 -0
  230. package/dist/domain/analysisView/javascriptApplicationView.js +238 -0
  231. package/dist/domain/android/androidApplication.js +1 -1
  232. package/dist/domain/android/androidPartialObservation.js +36 -0
  233. package/dist/domain/apple/appleApplication.js +1 -1
  234. package/dist/domain/apple/dylibResolution.js +10 -3
  235. package/dist/domain/apple/interfaceBuilderGraph.js +0 -1
  236. package/dist/domain/apple/keyedArchive.js +26 -2
  237. package/dist/domain/artifactComparison.js +15 -6
  238. package/dist/domain/artifactGraph.js +17 -4
  239. package/dist/domain/artifactIdentity.js +8 -8
  240. package/dist/domain/artifactInspection.js +8 -8
  241. package/dist/domain/artifactInventoryEvidence.js +9 -16
  242. package/dist/domain/artifactOperationError.js +3 -3
  243. package/dist/domain/artifactPartialObservation.js +1 -0
  244. package/dist/domain/artifactPathSyntax.js +49 -0
  245. package/dist/domain/binaryTarget.js +39 -13
  246. package/dist/domain/browserCaptureComparison.js +13 -49
  247. package/dist/domain/browserCompleteness.js +3 -2
  248. package/dist/domain/browserNetworkEvidence.js +10 -4
  249. package/dist/domain/browserObservation.js +0 -1
  250. package/dist/domain/browserObservationSchemas.js +14 -3
  251. package/dist/domain/browserScenario.js +0 -1
  252. package/dist/domain/browserScenarioCapture.js +1 -2
  253. package/dist/domain/browserScenarioCaptureValues.js +2 -2
  254. package/dist/domain/browserScenarioDiff.js +0 -2
  255. package/dist/domain/browserScenarioDiffEvidence.js +0 -12
  256. package/dist/domain/browserScenarioDiffValues.js +2 -2
  257. package/dist/domain/browserScenarioNormalization.js +3 -3
  258. package/dist/domain/browserScenarioValues.js +6 -6
  259. package/dist/domain/callPath.js +15 -18
  260. package/dist/domain/callPathSchemas.js +2 -2
  261. package/dist/domain/canonicalDigest.js +7 -1
  262. package/dist/domain/canonicalOrdering.js +1 -13
  263. package/dist/domain/changedBehavior.js +5 -6
  264. package/dist/domain/comparisonSemantics.js +0 -5
  265. package/dist/domain/completionLedgerGeneration.js +2 -1
  266. package/dist/domain/configurationErrors.js +12 -0
  267. package/dist/domain/conformancePackage.js +4 -3
  268. package/dist/domain/digests.js +0 -3
  269. package/dist/domain/evidence.js +19 -40
  270. package/dist/domain/evidenceBundle.js +58 -42
  271. package/dist/domain/evidenceCompletionLedger.js +2 -1
  272. package/dist/domain/firmware/firmwareAnalysis.js +4 -3
  273. package/dist/domain/functionComparison.js +6 -6
  274. package/dist/domain/functionComparisonDimensions.js +120 -87
  275. package/dist/domain/functionComparisonNormalization.js +26 -36
  276. package/dist/domain/functionComparisonResults.js +3 -6
  277. package/dist/domain/functionComparisonSchemas.js +2 -8
  278. package/dist/domain/functionDossierEvidence.js +4 -38
  279. package/dist/domain/hopperValues.js +11 -15
  280. package/dist/domain/javascript/electronActiveObservation.js +29 -71
  281. package/dist/domain/javascript/electronObservation.js +14 -3
  282. package/dist/domain/javascript/electronStaticAnalysisBrowser.js +12 -11
  283. package/dist/domain/javascript/electronStaticAnalysisIpc.js +11 -2
  284. package/dist/domain/javascript/electronStaticAnalysisNative.js +7 -4
  285. package/dist/domain/javascript/electronStaticAnalysisValues.js +8 -4
  286. package/dist/domain/javascript/javascriptApplicationAnalysis.js +3 -1
  287. package/dist/domain/javascript/javascriptApplicationChangeGraph.js +12 -8
  288. package/dist/domain/javascript/javascriptApplicationEvidenceSchemas.js +6 -0
  289. package/dist/domain/javascript/javascriptApplicationGraph.js +41 -16
  290. package/dist/domain/javascript/javascriptApplicationGraphSchemas.js +9 -2
  291. package/dist/domain/javascript/javascriptApplicationVersionComparison.js +4 -4
  292. package/dist/domain/javascript/javascriptApplicationVersionComparisonSchemas.js +37 -22
  293. package/dist/domain/javascript/javascriptApplicationVersionItems.js +50 -36
  294. package/dist/domain/javascript/javascriptApplicationVersionKeys.js +9 -8
  295. package/dist/domain/javascript/javascriptAstFingerprint.js +2 -2
  296. package/dist/domain/javascript/javascriptAstValues.js +22 -0
  297. package/dist/{application/javascript/JavaScriptReturnShapeProjection.js → domain/javascript/javascriptExportReturnShapeProjection.js} +4 -4
  298. package/dist/domain/javascript/javascriptExportShapeComparison.js +10 -3
  299. package/dist/domain/javascript/javascriptExportShapeComparisonIdentity.js +6 -1
  300. package/dist/domain/javascript/javascriptExportShapeComparisonSchemas.js +58 -22
  301. package/dist/domain/javascript/javascriptExportShapeSelection.js +7 -7
  302. package/dist/domain/javascript/javascriptExportShapeVariants.js +70 -16
  303. package/dist/domain/javascript/javascriptFeatureSeed.js +25 -3
  304. package/dist/domain/javascript/javascriptFeatureTrace.js +7 -6
  305. package/dist/domain/javascript/javascriptFeatureTraceSchemas.js +17 -9
  306. package/dist/domain/javascript/javascriptFeatureTraversal.js +4 -5
  307. package/dist/domain/javascript/javascriptNativeHandoff.js +7 -7
  308. package/dist/domain/javascript/javascriptRuntimeLoadState.js +0 -1
  309. package/dist/domain/javascript/javascriptRuntimeObservation.js +18 -7
  310. package/dist/domain/javascript/javascriptRuntimeReconciliation.js +12 -6
  311. package/dist/domain/javascript/javascriptRuntimeReconciliationActive.js +9 -8
  312. package/dist/domain/javascript/javascriptRuntimeReconciliationCaptureParsing.js +212 -0
  313. package/dist/domain/javascript/javascriptRuntimeReconciliationGraph.js +5 -4
  314. package/dist/domain/javascript/javascriptRuntimeReconciliationInputValidation.js +28 -0
  315. package/dist/domain/javascript/javascriptRuntimeReconciliationMatching.js +6 -6
  316. package/dist/domain/javascript/javascriptRuntimeReconciliationParsing.js +12 -222
  317. package/dist/domain/javascript/javascriptRuntimeReconciliationResult.js +2 -2
  318. package/dist/domain/javascript/javascriptRuntimeReconciliationRuntime.js +15 -4
  319. package/dist/domain/javascript/javascriptRuntimeReconciliationSchemas.js +2 -2
  320. package/dist/domain/javascript/javascriptRuntimeStaticCandidates.js +7 -7
  321. package/dist/domain/javascript/javascriptSemanticAnalysis.js +209 -11
  322. package/dist/domain/javascript/javascriptSemanticAsyncEffects.js +2 -1
  323. package/dist/domain/javascript/javascriptSemanticCallResolution.js +9 -7
  324. package/dist/domain/javascript/javascriptSemanticCalls.js +2 -1
  325. package/dist/domain/javascript/javascriptSemanticChildProcesses.js +4 -3
  326. package/dist/domain/javascript/javascriptSemanticCoverage.js +20 -0
  327. package/dist/domain/javascript/javascriptSemanticDataEffectHelpers.js +7 -9
  328. package/dist/domain/javascript/javascriptSemanticDataEffects.js +4 -11
  329. package/dist/domain/javascript/javascriptSemanticFingerprints.js +2 -2
  330. package/dist/domain/javascript/javascriptSemanticGraph.js +220 -71
  331. package/dist/domain/javascript/javascriptSemanticGraphSchemas.js +19 -1
  332. package/dist/domain/javascript/javascriptSemanticIr.js +0 -4
  333. package/dist/domain/javascript/javascriptSemanticIterationSources.js +106 -0
  334. package/dist/domain/javascript/javascriptSemanticMemberMutations.js +515 -74
  335. package/dist/domain/javascript/javascriptSemanticMutationInitializers.js +190 -0
  336. package/dist/domain/javascript/javascriptSemanticMutationValues.js +44 -36
  337. package/dist/domain/javascript/javascriptSemanticObjects.js +79 -42
  338. package/dist/domain/javascript/javascriptSemanticPrimitives.js +8 -14
  339. package/dist/domain/javascript/javascriptSemanticProjection.js +21 -16
  340. package/dist/domain/javascript/javascriptSemanticPromises.js +16 -21
  341. package/dist/domain/javascript/javascriptSemanticPropertyPaths.js +23 -0
  342. package/dist/domain/javascript/javascriptSemanticProvenance.js +3 -3
  343. package/dist/domain/javascript/javascriptSemanticQuery.js +8 -2
  344. package/dist/domain/javascript/javascriptSemanticQueryIdentity.js +3 -2
  345. package/dist/domain/javascript/javascriptSemanticQuerySchemas.js +8 -9
  346. package/dist/domain/javascript/javascriptSemanticRequireOrigin.js +16 -10
  347. package/dist/domain/javascript/javascriptSemanticResourceLimits.js +1 -1
  348. package/dist/domain/javascript/javascriptSemanticResources.js +1 -1
  349. package/dist/domain/javascript/javascriptSemanticReturns.js +55 -44
  350. package/dist/domain/javascript/javascriptSemanticSlots.js +72 -0
  351. package/dist/domain/javascript/javascriptSemanticTraversal.js +6 -1
  352. package/dist/domain/javascript/javascriptSemanticValues.js +180 -76
  353. package/dist/domain/javascript/javascriptSourceMapPaths.js +114 -0
  354. package/dist/domain/javascript/javascriptSourceParser.js +34 -9
  355. package/dist/domain/javascript/javascriptStaticAnalysisBundler.js +5 -6
  356. package/dist/domain/javascript/javascriptStaticAnalysisCalls.js +2 -1
  357. package/dist/domain/javascript/javascriptStaticAnalysisHelpers.js +26 -16
  358. package/dist/domain/javascript/sourceToBundleComparison.js +19 -8
  359. package/dist/domain/javascript/sourceToBundleSignals.js +53 -25
  360. package/dist/domain/jsonSerialization.js +109 -55
  361. package/dist/domain/jsonShape.js +46 -19
  362. package/dist/domain/localPath.js +10 -4
  363. package/dist/domain/managed/managedApplicationGraph.js +10 -6
  364. package/dist/domain/managed/managedApplicationGraphNodes.js +82 -57
  365. package/dist/domain/managed/managedArtifact.js +6 -4
  366. package/dist/domain/managed/managedMemberComparison.js +2 -9
  367. package/dist/domain/managed/managedMemberComparisonMatch.js +6 -7
  368. package/dist/domain/managed/managedNativeVerification.js +0 -2
  369. package/dist/domain/managed/managedNativeVerificationMatch.js +9 -3
  370. package/dist/domain/native/binaryLayout.js +2 -3
  371. package/dist/domain/native/nativeApiBoundary.js +1 -1
  372. package/dist/domain/native/nativeCallObservation.js +3 -3
  373. package/dist/domain/native/nativeInstruction.js +7 -0
  374. package/dist/domain/native/nativeValueFlow.js +5 -11
  375. package/dist/domain/native/objcSwiftMetadata.js +15 -17
  376. package/dist/domain/native/recordedCrash.js +2 -3
  377. package/dist/domain/offsetDateTime.js +17 -0
  378. package/dist/domain/process/processCapture.js +22 -20
  379. package/dist/domain/process/processCaptureCoverage.js +70 -0
  380. package/dist/domain/process/processCaptureExample.js +45 -1
  381. package/dist/domain/process/processCaptureParsing.js +1 -34
  382. package/dist/domain/process/processCaptureValidation.js +82 -13
  383. package/dist/domain/process/processComparison.js +39 -43
  384. package/dist/domain/process/processObservation.js +10 -2
  385. package/dist/domain/process/processScenario.js +24 -2
  386. package/dist/domain/process/processTraceComparison.js +0 -2
  387. package/dist/domain/process/processTraceDimensionProjection.js +1 -1
  388. package/dist/domain/process/processTraceEvaluation.js +19 -15
  389. package/dist/domain/process/processTraceSpecification.js +4 -7
  390. package/dist/domain/providerAdapterError.js +2 -0
  391. package/dist/domain/providerCleanupError.js +6 -2
  392. package/dist/domain/reconstructionCoverage.js +7 -3
  393. package/dist/domain/reconstructionObligationLedgerSchemas.js +2 -1
  394. package/dist/domain/reconstructionReadinessSchemas.js +2 -1
  395. package/dist/domain/reconstructionUnknowns.js +4 -3
  396. package/dist/domain/reconstructionVerification.js +6 -5
  397. package/dist/domain/reconstructionVerificationSchemas.js +2 -1
  398. package/dist/domain/referenceSourceGraph.js +27 -28
  399. package/dist/domain/referenceSourceImportParsing.js +34 -45
  400. package/dist/domain/residualUnknown.js +3 -2
  401. package/dist/domain/staticRuntimeCorrelation.js +4 -3
  402. package/dist/domain/stringPatterns.js +6 -0
  403. package/dist/domain/swiftSymbolClassification.js +66 -0
  404. package/dist/domain/symbolAnalysis.js +83 -20
  405. package/dist/domain/unicodeCodePointOrder.js +6 -0
  406. package/dist/domain/webBundleAnalyzerInspection.js +9 -1
  407. package/dist/domain/webCaptureDiff.js +71 -30
  408. package/dist/domain/webCaptureDiffSchemas.js +8 -11
  409. package/dist/domain/webEventListeners.js +3 -2
  410. package/dist/domain/webExecution.js +3 -2
  411. package/dist/domain/webInventory.js +3 -2
  412. package/dist/domain/webMcpDiscovery.js +4 -3
  413. package/dist/domain/webRuntime.js +0 -2
  414. package/dist/domain/webScriptExport.js +2 -2
  415. package/dist/dotnet/ManagedArtifactInspector.js +2 -19
  416. package/dist/dotnet/ManagedMemberInspector.js +12 -18
  417. package/dist/dotnet/ManagedMemberInspectorCore.js +47 -44
  418. package/dist/dotnet/ManagedMemberInstructionDecoder.js +1 -2
  419. package/dist/dotnet/ManagedMemberRows.js +75 -62
  420. package/dist/dotnet/ManagedMetadataInventory.js +16 -22
  421. package/dist/dotnet/ManagedMethodBodyReader.js +4 -0
  422. package/dist/dotnet/ManagedNativeBoundaryHelpers.js +109 -94
  423. package/dist/dotnet/ManagedNativeBoundaryInspector.js +12 -21
  424. package/dist/dotnet/ManagedReaderFailure.js +16 -0
  425. package/dist/dotnet/ManagedStaticProvider.js +13 -12
  426. package/dist/dotnet/ManagedStaticProviderMetadata.js +1 -4
  427. package/dist/evaluation/AgentEvaluationFixtures.js +250 -0
  428. package/dist/evaluation/AgentEvaluationReport.js +28 -0
  429. package/dist/evaluation/CodexAgentEval.js +12 -8
  430. package/dist/evaluation/KnownAnswerEvaluation.js +281 -0
  431. package/dist/evm/EvmoleInterfaceProvider.js +2 -1
  432. package/dist/filesystem/RegularFile.js +41 -0
  433. package/dist/firmware/FirmwareCommand.js +9 -5
  434. package/dist/firmware/FirmwareProvider.js +4 -4
  435. package/dist/generatedPackageMetadata.js +2 -2
  436. package/dist/ghidra/GhidraAnalysisProfile.js +3 -6
  437. package/dist/ghidra/GhidraClient.js +105 -36
  438. package/dist/ghidra/GhidraClientStartup.js +0 -2
  439. package/dist/ghidra/GhidraDoctor.js +6 -5
  440. package/dist/ghidra/GhidraFunctionValues.js +3 -5
  441. package/dist/ghidra/GhidraInstallation.js +151 -22
  442. package/dist/ghidra/GhidraJavaLaunch.js +6 -2
  443. package/dist/ghidra/GhidraLauncher.js +58 -26
  444. package/dist/ghidra/GhidraProvider.js +6 -2
  445. package/dist/ghidra/GhidraProviderCapabilities.js +6 -0
  446. package/dist/ghidra/GhidraProviderClient.js +13 -3
  447. package/dist/ghidra/GhidraSessionError.js +2 -0
  448. package/dist/ghidra/GhidraSessionRoot.js +39 -0
  449. package/dist/ghidra/extensions/GhidraExtensions.js +17 -10
  450. package/dist/ghidra/extensions/nativeaot/NativeAotAdapter.js +8 -2
  451. package/dist/hopper/BridgeLauncher.js +34 -45
  452. package/dist/hopper/HopperAnalysisProfile.js +3 -8
  453. package/dist/hopper/HopperCleanup.js +56 -27
  454. package/dist/hopper/HopperClient.js +86 -65
  455. package/dist/hopper/HopperMachOImage.js +3 -2
  456. package/dist/hopper/HopperProvider.js +16 -18
  457. package/dist/hopper/HopperRegexSearch.js +3 -6
  458. package/dist/hopper/HopperTargetLease.js +132 -49
  459. package/dist/hopper/LinuxPrivateDisplayProbe.js +6 -0
  460. package/dist/ida/IdaConfiguration.js +8 -3
  461. package/dist/ida/IdaInput.js +1 -7
  462. package/dist/ida/IdaMcpConnection.js +8 -4
  463. package/dist/ida/IdaOperationRunner.js +5 -3
  464. package/dist/ida/IdaProvider.js +8 -12
  465. package/dist/ida/IdaSessionClient.js +24 -20
  466. package/dist/ida/IdaWorkspace.js +12 -13
  467. package/dist/inspector/JavaScriptRuntimeScope.js +9 -5
  468. package/dist/inspector/V8InspectorCaptureProjection.js +47 -14
  469. package/dist/inspector/V8InspectorProvider.js +97 -35
  470. package/dist/javascript/recovery/WakaruCommand.js +7 -2
  471. package/dist/javascript/recovery/WakaruExecution.js +5 -2
  472. package/dist/main/shutdown.js +81 -29
  473. package/dist/main/startup.js +9 -2
  474. package/dist/main/transport.js +23 -3
  475. package/dist/main.js +11 -18
  476. package/dist/native/AppleMachoSelection.js +16 -6
  477. package/dist/native/AppleObjcDispatchFacets.js +3 -3
  478. package/dist/native/AppleObjcProperties.js +17 -7
  479. package/dist/native/CommandRunner.js +9 -7
  480. package/dist/native/LldbCallTracer.js +249 -77
  481. package/dist/native/NativeMacOSProvider.js +32 -17
  482. package/dist/native/NativeMacOSProviderMetadata.js +1 -2
  483. package/dist/native/NativeUiHelperRuntime.js +11 -2
  484. package/dist/native/NativeUiObservation.js +2 -2
  485. package/dist/native/pwntools/PwntoolsDecoder.js +2 -1
  486. package/dist/process/DarwinProcessRunTokenReader.js +16 -2
  487. package/dist/process/ExecFileOutput.js +88 -6
  488. package/dist/process/PrivateRuntimeRoot.js +10 -5
  489. package/dist/process/ProcessOwnership.js +1 -4
  490. package/dist/process/ProcessOwnershipObservation.js +18 -16
  491. package/dist/process/ProviderProcess.js +1 -3
  492. package/dist/process/capture/FilesystemSnapshot.js +131 -24
  493. package/dist/process/capture/ProcessCaptureError.js +13 -0
  494. package/dist/process/capture/ProcessCaptureLifecycle.js +148 -74
  495. package/dist/process/capture/ProcessFilesystemEffects.js +51 -6
  496. package/dist/process/capture/ProcessHarness.js +16 -33
  497. package/dist/process/capture/ProcessNormalization.js +20 -2
  498. package/dist/process/capture/ProcessSampling.js +25 -2
  499. package/dist/process/capture/TerminalRenderer.js +14 -0
  500. package/dist/process/snapshotEnvironment.js +14 -0
  501. package/dist/server/EvidenceMcpServer.js +25 -14
  502. package/dist/server/analysisAdmission.js +8 -0
  503. package/dist/server/createServer.js +71 -59
  504. package/dist/server/mcpClientMetadata.js +12 -5
  505. package/dist/server/promptCompletion.js +3 -8
  506. package/dist/server/registerAnalysisViewTool.js +15 -0
  507. package/dist/server/registerAndroidTools.js +2 -3
  508. package/dist/server/registerApplicationTools/compareExportShapes.js +6 -6
  509. package/dist/server/registerApplicationTools/compareSourceToBundle.js +4 -5
  510. package/dist/server/registerApplicationTools/compareVersions.js +4 -5
  511. package/dist/server/registerApplicationTools/coverage.js +1 -2
  512. package/dist/server/registerApplicationTools/helpers.js +4 -4
  513. package/dist/server/registerApplicationTools/obligationLedger.js +4 -5
  514. package/dist/server/registerApplicationTools/projectMobileApplicationGraph.js +3 -4
  515. package/dist/server/registerApplicationTools/traceFeature.js +4 -5
  516. package/dist/server/registerApplicationTools/traceSemantics.js +4 -5
  517. package/dist/server/registerArtifactComparisonTool.js +4 -5
  518. package/dist/server/registerArtifactTools.js +2 -2
  519. package/dist/server/registerBinaryDiagnosticsTools.js +2 -3
  520. package/dist/server/registerBrowserScenarioTool.js +3 -4
  521. package/dist/server/registerBrowserTools.js +13 -16
  522. package/dist/server/registerBundleComparisonTool.js +5 -6
  523. package/dist/server/registerCloseLifecycleTool.js +8 -7
  524. package/dist/server/registerElectronTools.js +10 -13
  525. package/dist/server/registerEnhancedTools.js +82 -77
  526. package/dist/server/registerEvidenceTools.js +54 -47
  527. package/dist/server/registerEvmTools.js +2 -3
  528. package/dist/server/registerFirmwareTools.js +2 -3
  529. package/dist/server/registerFunctionComparisonTool.js +7 -8
  530. package/dist/server/registerInvestigationTools.js +14 -15
  531. package/dist/server/registerJavaScriptRecoveryTool.js +2 -3
  532. package/dist/server/registerJavaScriptRuntimeObservationTools.js +6 -6
  533. package/dist/server/registerManagedTools.js +7 -4
  534. package/dist/server/registerManagedWorkflowTools/compareManagedMembers.js +5 -6
  535. package/dist/server/registerManagedWorkflowTools/importManagedReconstruction.js +4 -5
  536. package/dist/server/registerManagedWorkflowTools/projectManagedApplicationGraph.js +6 -7
  537. package/dist/server/registerManagedWorkflowTools/verifyManagedNativeBoundaries.js +6 -7
  538. package/dist/server/registerOfficialTools.js +32 -41
  539. package/dist/server/registerProcessComparisonTool.js +8 -8
  540. package/dist/server/registerRecordedCrashTools.js +2 -3
  541. package/dist/server/registerSessionRecordTools.js +15 -19
  542. package/dist/server/registerSessionStatusTool.js +3 -4
  543. package/dist/server/registerSessionTools.js +19 -19
  544. package/dist/server/registerWebModuleTool.js +2 -3
  545. package/dist/server/registerWebNetworkCaptureTool.js +2 -3
  546. package/dist/server/registerWebRuntimeTools.js +4 -5
  547. package/dist/server/registerWebScriptTool.js +2 -3
  548. package/dist/server/registerWebSourceLocationTool.js +2 -3
  549. package/dist/server/toolResult.js +66 -94
  550. package/dist/server/toolResultEncoding.js +11 -10
  551. package/dist/windows/WindowsNativeLoader.js +1 -0
  552. package/dist/windows/WindowsOwnedProcess.js +60 -15
  553. package/dist/windows/WindowsPrivateRuntime.js +7 -8
  554. package/native/windows/README.md +3 -1
  555. package/native/windows/build/manifest.json +2 -2
  556. package/native/windows/build/rea-windows-x64.node +0 -0
  557. package/package.json +42 -30
  558. package/scripts/rea.mjs +3 -6
  559. package/skills/reverse-engineer-anything/SKILL.md +14 -13
  560. package/skills/reverse-engineer-anything/references/android-applications.md +6 -3
  561. package/skills/reverse-engineer-anything/references/evidence-workflows.md +8 -4
  562. package/skills/reverse-engineer-anything/references/javascript-applications.md +16 -6
  563. package/skills/reverse-engineer-anything/references/native-and-artifacts.md +18 -0
  564. package/dist/artifacts/inventory/policy.js +0 -2
  565. package/dist/config.js +0 -1
  566. package/dist/contracts/browserCaptureToolInputSchema.js +0 -43
  567. package/dist/contracts/process/processCaptureExample.js +0 -2
  568. package/dist/contracts/toolOutputSchemas.js +0 -2
  569. package/dist/domain/managed/managedApplicationGraphNodeCoverage.js +0 -6
  570. package/dist/main/reload.js +0 -12
  571. package/dist/main/state.js +0 -3
  572. package/dist/server/registerNativeTools.js +0 -6
  573. package/dist/server/sessionToolPolicies.js +0 -2
@@ -3,7 +3,6 @@ import { compareManagedMembersEvidenceValidated } from "../../application/manage
3
3
  import { managedMemberComparisonResultSchema } from "../../domain/managed/managedMemberComparison.js";
4
4
  import { logToolExecution } from "../toolLogging.js";
5
5
  import { toolRegistrationOptions } from "../toolRegistrationOptions.js";
6
- import { toCallToolResult, toEvidenceToolResult } from "../toolResult.js";
7
6
  import { managedWorkflowContract } from "./contract.js";
8
7
  import { resolveManagedEvidence } from "./evidence.js";
9
8
  const compareContract = managedWorkflowContract("compare_managed_members");
@@ -13,9 +12,9 @@ export const registerCompareManagedMembers = (server, options) => {
13
12
  const leftResolved = resolveManagedEvidence(input.left);
14
13
  const rightResolved = resolveManagedEvidence(input.right);
15
14
  if (!leftResolved.ok)
16
- return toCallToolResult(leftResolved, compareContract);
15
+ return server.delivery.toCallToolResult(leftResolved, compareContract);
17
16
  if (!rightResolved.ok)
18
- return toCallToolResult(rightResolved, compareContract);
17
+ return server.delivery.toCallToolResult(rightResolved, compareContract);
19
18
  const [left] = leftResolved.value;
20
19
  const [right] = rightResolved.value;
21
20
  if (left === undefined || right === undefined)
@@ -23,13 +22,13 @@ export const registerCompareManagedMembers = (server, options) => {
23
22
  const parsed = { left, right };
24
23
  const result = await logToolExecution(options.logger, compareContract.name, () => Promise.resolve(compareManagedMembersEvidenceValidated(parsed)));
25
24
  if (!result.ok)
26
- return toCallToolResult(result, compareContract);
25
+ return server.delivery.toCallToolResult(result, compareContract);
27
26
  const recorded = recordSessionEvidenceSources(options.recordEvidence, [
28
27
  parsed.left,
29
28
  parsed.right,
30
29
  ]);
31
30
  if (!recorded.ok)
32
- return toCallToolResult(recorded, compareContract);
31
+ return server.delivery.toCallToolResult(recorded, compareContract);
33
32
  const comparison = managedMemberComparisonResultSchema.parse(result.value.normalized_result);
34
33
  const unknown = comparison.summary.unknown > 0;
35
34
  const output = unknown
@@ -51,6 +50,6 @@ export const registerCompareManagedMembers = (server, options) => {
51
50
  relationships: [],
52
51
  })
53
52
  : options.recordEvidence?.(result.value);
54
- return toEvidenceToolResult(result.value, compareContract, output);
53
+ return server.delivery.toEvidenceToolResult(result.value, compareContract, output);
55
54
  });
56
55
  };
@@ -1,7 +1,6 @@
1
1
  import { importManagedReconstructionEvidenceValidated } from "../../application/managed/ManagedReconstructionService.js";
2
2
  import { logToolExecution } from "../toolLogging.js";
3
3
  import { toolRegistrationOptions } from "../toolRegistrationOptions.js";
4
- import { toCallToolResult, toEvidenceToolResult } from "../toolResult.js";
5
4
  import { managedWorkflowContract } from "./contract.js";
6
5
  import { resolveManagedEvidence } from "./evidence.js";
7
6
  const reconstructionContract = managedWorkflowContract("import_managed_reconstruction");
@@ -10,18 +9,18 @@ export const registerImportManagedReconstruction = (server, options) => {
10
9
  server.registerTool(reconstructionContract.name, toolRegistrationOptions(reconstructionContract), async (input) => {
11
10
  const resolved = resolveManagedEvidence(input.static_members);
12
11
  if (!resolved.ok)
13
- return toCallToolResult(resolved, reconstructionContract);
12
+ return server.delivery.toCallToolResult(resolved, reconstructionContract);
14
13
  const staticMembers = resolved.value[0];
15
14
  if (staticMembers === undefined)
16
15
  throw new TypeError("Managed reconstruction Evidence resolution failed");
17
16
  const parsed = { ...input, static_members: staticMembers };
18
17
  const result = await logToolExecution(options.logger, reconstructionContract.name, () => Promise.resolve(importManagedReconstructionEvidenceValidated(parsed)));
19
18
  if (!result.ok)
20
- return toCallToolResult(result, reconstructionContract);
19
+ return server.delivery.toCallToolResult(result, reconstructionContract);
21
20
  const recordedSource = options.recordEvidence?.(parsed.static_members);
22
21
  if (recordedSource !== undefined && !recordedSource.ok)
23
- return toCallToolResult(recordedSource, reconstructionContract);
22
+ return server.delivery.toCallToolResult(recordedSource, reconstructionContract);
24
23
  const recorded = options.recordEvidence?.(result.value);
25
- return toEvidenceToolResult(result.value, reconstructionContract, recorded);
24
+ return server.delivery.toEvidenceToolResult(result.value, reconstructionContract, recorded);
26
25
  });
27
26
  };
@@ -2,7 +2,6 @@ import { recordSessionEvidenceSources } from "../sessionEvidence.js";
2
2
  import { projectManagedApplicationGraphEvidence } from "../../application/managed/ManagedApplicationGraphService.js";
3
3
  import { logToolExecution } from "../toolLogging.js";
4
4
  import { toolRegistrationOptions } from "../toolRegistrationOptions.js";
5
- import { toCallToolResult, toEvidenceToolResult } from "../toolResult.js";
6
5
  import { managedWorkflowContract } from "./contract.js";
7
6
  import { resolveManagedArtifactEvidence, resolveManagedBoundaryEvidence, resolveManagedEvidence, sourceEvidence, } from "./evidence.js";
8
7
  const graphContract = managedWorkflowContract("project_managed_application_graph");
@@ -13,17 +12,17 @@ export const registerProjectManagedApplicationGraph = (server, options) => {
13
12
  ? undefined
14
13
  : resolveManagedArtifactEvidence(input.managed_artifact);
15
14
  if (managedArtifact !== undefined && !managedArtifact.ok)
16
- return toCallToolResult(managedArtifact, graphContract);
15
+ return server.delivery.toCallToolResult(managedArtifact, graphContract);
17
16
  const managedMembers = input.managed_members === undefined
18
17
  ? undefined
19
18
  : resolveManagedEvidence(input.managed_members);
20
19
  if (managedMembers !== undefined && !managedMembers.ok)
21
- return toCallToolResult(managedMembers, graphContract);
20
+ return server.delivery.toCallToolResult(managedMembers, graphContract);
22
21
  const managedBoundaries = input.managed_native_boundaries === undefined
23
22
  ? undefined
24
23
  : resolveManagedBoundaryEvidence(input.managed_native_boundaries);
25
24
  if (managedBoundaries !== undefined && !managedBoundaries.ok)
26
- return toCallToolResult(managedBoundaries, graphContract);
25
+ return server.delivery.toCallToolResult(managedBoundaries, graphContract);
27
26
  const parsed = {
28
27
  managed_artifact: managedArtifact?.value[0],
29
28
  managed_members: managedMembers?.value[0],
@@ -31,11 +30,11 @@ export const registerProjectManagedApplicationGraph = (server, options) => {
31
30
  };
32
31
  const result = await logToolExecution(options.logger, graphContract.name, () => Promise.resolve(projectManagedApplicationGraphEvidence(parsed)));
33
32
  if (!result.ok)
34
- return toCallToolResult(result, graphContract);
33
+ return server.delivery.toCallToolResult(result, graphContract);
35
34
  const recordedSources = recordSessionEvidenceSources(options.recordEvidence, sourceEvidence(parsed));
36
35
  if (!recordedSources.ok)
37
- return toCallToolResult(recordedSources, graphContract);
36
+ return server.delivery.toCallToolResult(recordedSources, graphContract);
38
37
  const recorded = options.recordEvidence?.(result.value);
39
- return toEvidenceToolResult(result.value, graphContract, recorded);
38
+ return server.delivery.toEvidenceToolResult(result.value, graphContract, recorded);
40
39
  });
41
40
  };
@@ -1,9 +1,8 @@
1
1
  import { recordSessionEvidenceSources } from "../sessionEvidence.js";
2
2
  import { verifyManagedNativeBoundariesEvidence } from "../../application/managed/ManagedNativeVerificationService.js";
3
- import { managedNativeVerificationResultSchema } from "../../domain/managed/managedNativeVerification.js";
3
+ import { managedNativeVerificationResultSchema } from "../../domain/managed/managedNativeVerificationSchemas.js";
4
4
  import { logToolExecution } from "../toolLogging.js";
5
5
  import { toolRegistrationOptions } from "../toolRegistrationOptions.js";
6
- import { toCallToolResult, toEvidenceToolResult } from "../toolResult.js";
7
6
  import { managedWorkflowContract } from "./contract.js";
8
7
  import { resolveManagedBoundaryEvidence, resolveNativeEvidence, } from "./evidence.js";
9
8
  const nativeVerificationContract = managedWorkflowContract("verify_managed_native_boundaries");
@@ -12,10 +11,10 @@ export const registerVerifyManagedNativeBoundaries = (server, options) => {
12
11
  server.registerTool(nativeVerificationContract.name, toolRegistrationOptions(nativeVerificationContract), async (input) => {
13
12
  const managedBoundaries = resolveManagedBoundaryEvidence(input.managed_boundaries);
14
13
  if (!managedBoundaries.ok)
15
- return toCallToolResult(managedBoundaries, nativeVerificationContract);
14
+ return server.delivery.toCallToolResult(managedBoundaries, nativeVerificationContract);
16
15
  const nativeObservations = resolveNativeEvidence(input.native_observations);
17
16
  if (!nativeObservations.ok)
18
- return toCallToolResult(nativeObservations, nativeVerificationContract);
17
+ return server.delivery.toCallToolResult(nativeObservations, nativeVerificationContract);
19
18
  const managedBoundary = managedBoundaries.value[0];
20
19
  if (managedBoundary === undefined)
21
20
  throw new TypeError("Managed boundary Evidence resolution failed");
@@ -26,10 +25,10 @@ export const registerVerifyManagedNativeBoundaries = (server, options) => {
26
25
  };
27
26
  const result = await logToolExecution(options.logger, nativeVerificationContract.name, () => Promise.resolve(verifyManagedNativeBoundariesEvidence(parsed)));
28
27
  if (!result.ok)
29
- return toCallToolResult(result, nativeVerificationContract);
28
+ return server.delivery.toCallToolResult(result, nativeVerificationContract);
30
29
  const recordedSources = recordSessionEvidenceSources(options.recordEvidence, [parsed.managed_boundaries, ...parsed.native_observations]);
31
30
  if (!recordedSources.ok)
32
- return toCallToolResult(recordedSources, nativeVerificationContract);
31
+ return server.delivery.toCallToolResult(recordedSources, nativeVerificationContract);
33
32
  const verification = managedNativeVerificationResultSchema.parse(result.value.normalized_result);
34
33
  const unknown = verification.summary.unresolved > 0 ||
35
34
  verification.summary.contradicted > 0 ||
@@ -57,6 +56,6 @@ export const registerVerifyManagedNativeBoundaries = (server, options) => {
57
56
  relationships: [],
58
57
  })
59
58
  : options.recordEvidence?.(result.value);
60
- return toEvidenceToolResult(result.value, nativeVerificationContract, output);
59
+ return server.delivery.toEvidenceToolResult(result.value, nativeVerificationContract, output);
61
60
  });
62
61
  };
@@ -1,46 +1,50 @@
1
- import { z } from "zod";
2
1
  import { OFFICIAL_TOOL_CONTRACTS } from "../contracts/officialToolContracts.js";
3
2
  import { createEvidence } from "../domain/evidence.js";
4
- import { jsonObjectSchema, jsonValueSchema, } from "../domain/jsonValue.js";
3
+ import { jsonObjectSchema } from "../domain/jsonValue.js";
5
4
  import { mcpProgressReporter } from "./mcpProgress.js";
6
5
  import { logToolExecution } from "./toolLogging.js";
7
6
  import { toolRegistrationOptions } from "./toolRegistrationOptions.js";
8
- import { toCallToolResult, toEvidenceToolResult } from "./toolResult.js";
9
7
  /** Register direct bridge proxies, preserving MCP cancellation and typed errors. */
10
- export const registerOfficialTools = (server, analysis, options) => {
8
+ export const registerOfficialTools = (server, options) => {
11
9
  for (const contract of OFFICIAL_TOOL_CONTRACTS) {
12
- registerOfficialTool(server, analysis, contract, {
10
+ registerOfficialTool(server, contract, {
13
11
  logger: options.logger,
14
12
  activeTarget: options.activeTarget,
15
13
  recordEvidence: options.recordEvidence,
14
+ withAdmittedAnalysis: options.withAdmittedAnalysis,
16
15
  });
17
16
  }
18
17
  };
19
- const registerOfficialTool = (server, analysis, contract, registration) => {
18
+ const registerOfficialTool = (server, contract, registration) => {
20
19
  server.registerTool(contract.name, toolRegistrationOptions(contract), async (input, context) => {
21
- const arguments_ = projectOfficialArguments(contract, input);
22
- const progress = mcpProgressReporter(context);
23
- const result = await runOfficialOperation(analysis, contract, arguments_, {
24
- logger: registration.logger,
25
- signal: context.mcpReq.signal,
26
- progress,
20
+ const admitted = await registration.withAdmittedAnalysis(contract.name, context.mcpReq.signal, async (admittedAnalysis) => {
21
+ const arguments_ = jsonObjectSchema.parse(contract.inputSchema.parse(input));
22
+ const progress = mcpProgressReporter(context);
23
+ const result = await runOfficialOperation(admittedAnalysis, contract, arguments_, {
24
+ logger: registration.logger,
25
+ signal: context.mcpReq.signal,
26
+ progress,
27
+ });
28
+ if (!result.ok) {
29
+ return server.delivery.toCallToolResult(result, contract);
30
+ }
31
+ const evidence = createEvidence(result.value.subject ?? registration.activeTarget?.(), result.value.provider, {
32
+ operation: contract.name,
33
+ parameters: arguments_,
34
+ result: result.value.result,
35
+ ...(result.value.analysisProfile === undefined
36
+ ? {}
37
+ : { analysisProfile: result.value.analysisProfile }),
38
+ rawResult: result.value.rawResult,
39
+ limitations: result.value.limitations,
40
+ locations: result.value.locations,
41
+ });
42
+ const recorded = registration.recordEvidence?.(evidence);
43
+ return server.delivery.toEvidenceToolResult(evidence, contract, recorded);
27
44
  });
28
- if (!result.ok) {
29
- return toCallToolResult(result, contract);
30
- }
31
- const evidence = createEvidence(result.value.subject ?? registration.activeTarget?.(), result.value.provider, {
32
- operation: contract.name,
33
- parameters: arguments_,
34
- result: result.value.result,
35
- ...(result.value.analysisProfile === undefined
36
- ? {}
37
- : { analysisProfile: result.value.analysisProfile }),
38
- rawResult: result.value.rawResult,
39
- limitations: result.value.limitations,
40
- locations: result.value.locations,
41
- });
42
- const recorded = registration.recordEvidence?.(evidence);
43
- return toEvidenceToolResult(evidence, contract, recorded);
45
+ return admitted.ok
46
+ ? admitted.value
47
+ : server.delivery.toCallToolResult(admitted, contract);
44
48
  });
45
49
  };
46
50
  const runOfficialOperation = async (analysis, contract, arguments_, execution) => {
@@ -63,16 +67,3 @@ const runOfficialOperation = async (analysis, contract, arguments_, execution) =
63
67
  });
64
68
  return result;
65
69
  };
66
- const projectOfficialArguments = (contract, input) => {
67
- // Annotation omissions preserve existing values; they are not Python defaults.
68
- if (contract.name === "annotate_native_function")
69
- return jsonObjectSchema.parse(contract.inputSchema.parse(input));
70
- const parsed = jsonObjectSchema.parse(input);
71
- if (!(contract.inputSchema instanceof z.ZodObject))
72
- throw new TypeError("Official tool input contract must be an object schema");
73
- const projected = {};
74
- for (const key of Object.keys(contract.inputSchema.shape)) {
75
- projected[key] = jsonValueSchema.parse(parsed[key] ?? null);
76
- }
77
- return projected;
78
- };
@@ -5,14 +5,14 @@ import { describeValidationFailure } from "../domain/evidenceBundle.js";
5
5
  import { EvidenceIntegrityError } from "../domain/evidenceErrors.js";
6
6
  import { createEvidence, parseEvidence, } from "../domain/evidence.js";
7
7
  import { jsonValueSchema } from "../domain/jsonValue.js";
8
- import { compareProcessCaptures, parseProcessCapture, } from "../domain/process/processCapture.js";
8
+ import { compareProcessCaptures } from "../domain/process/processComparison.js";
9
+ import { parseProcessCapture, } from "../domain/process/processCaptureParsing.js";
9
10
  import { err, ok } from "../domain/result.js";
10
11
  import { recordDerivedEvidence } from "./recordDerivedEvidence.js";
11
12
  import { recordSessionEvidenceSources } from "./sessionEvidence.js";
12
13
  import { runDerivedOperation } from "./runDerivedOperation.js";
13
- import { PROCESS_PROVIDER } from "./sessionToolPolicies.js";
14
+ import { PROCESS_PROVIDER } from "../domain/process/processEvidenceProvider.js";
14
15
  import { toolRegistrationOptions } from "./toolRegistrationOptions.js";
15
- import { toCallToolResult, toEvidenceToolResult } from "./toolResult.js";
16
16
  const PROCESS_CAPTURE_EVIDENCE = {
17
17
  operation: "capture_process_scenario",
18
18
  predicate: "rea.process-capture",
@@ -60,10 +60,10 @@ export const registerProcessComparisonTool = (server, session, contract, now = D
60
60
  server.registerTool(contract.name, toolRegistrationOptions(contract), async (input, context) => {
61
61
  const left = parseCaptureSide(contract.name, "left", input.left);
62
62
  if (!left.ok)
63
- return toCallToolResult(left, contract);
63
+ return server.delivery.toCallToolResult(left, contract);
64
64
  const right = parseCaptureSide(contract.name, "right", input.right);
65
65
  if (!right.ok)
66
- return toCallToolResult(right, contract);
66
+ return server.delivery.toCallToolResult(right, contract);
67
67
  const { record: leftRecord, capture: leftCapture } = left.value;
68
68
  const { record: rightRecord, capture: rightCapture } = right.value;
69
69
  const computed = await runDerivedOperation(context, contract.name, () => compareProcessCaptures(leftCapture, rightCapture, {
@@ -76,7 +76,7 @@ export const registerProcessComparisonTool = (server, session, contract, now = D
76
76
  now,
77
77
  }));
78
78
  if (!computed.ok)
79
- return toCallToolResult(computed, contract);
79
+ return server.delivery.toCallToolResult(computed, contract);
80
80
  const comparison = computed.value;
81
81
  const evidence = createEvidence(undefined, PROCESS_PROVIDER, {
82
82
  predicateType: "rea.process-comparison",
@@ -99,8 +99,8 @@ export const registerProcessComparisonTool = (server, session, contract, now = D
99
99
  });
100
100
  const recordedSources = recordSessionEvidenceSources((evidence) => session.recordEvidence(evidence), [leftRecord, rightRecord]);
101
101
  if (!recordedSources.ok)
102
- return toCallToolResult(recordedSources, contract);
103
- return toEvidenceToolResult(evidence, contract, recordDerivedEvidence(session, evidence, comparisonUnknownInput({
102
+ return server.delivery.toCallToolResult(recordedSources, contract);
103
+ return server.delivery.toEvidenceToolResult(evidence, contract, recordDerivedEvidence(session, evidence, comparisonUnknownInput({
104
104
  left_evidence_id: leftRecord.evidence_id,
105
105
  right_evidence_id: rightRecord.evidence_id,
106
106
  comparison_evidence_id: evidence.evidence_id,
@@ -1,15 +1,14 @@
1
1
  import { toolContract } from "../contracts/toolContracts.js";
2
2
  import { logToolExecution } from "./toolLogging.js";
3
3
  import { toolRegistrationOptions } from "./toolRegistrationOptions.js";
4
- import { toCallToolResult, toEvidenceToolResult } from "./toolResult.js";
5
4
  /** Bind recorded crash inspection to its named contract and session Evidence owner. */
6
5
  export const registerRecordedCrashTools = (server, service, logger, recordEvidence) => {
7
6
  const contract = toolContract("inspect_recorded_crash");
8
7
  server.registerTool(contract.name, toolRegistrationOptions(contract), async (input, context) => {
9
8
  const result = await logToolExecution(logger, contract.name, () => service.inspect(input, { signal: context.mcpReq.signal }));
10
9
  if (!result.ok)
11
- return toCallToolResult(result, contract);
10
+ return server.delivery.toCallToolResult(result, contract);
12
11
  const recorded = recordEvidence?.(result.value);
13
- return toEvidenceToolResult(result.value, contract, recorded);
12
+ return server.delivery.toEvidenceToolResult(result.value, contract, recorded);
14
13
  });
15
14
  };
@@ -2,7 +2,6 @@ import { readEvidenceBundle, writeEvidenceBundle, } from "../application/Evidenc
2
2
  import { toolContract } from "../contracts/toolContracts.js";
3
3
  import { ok } from "../domain/result.js";
4
4
  import { toolRegistrationOptions } from "./toolRegistrationOptions.js";
5
- import { toCallToolResult } from "./toolResult.js";
6
5
  /** Register evidence bundle import and export tools. */
7
6
  export const registerEvidenceTools = (registration) => {
8
7
  registerExportEvidenceTool(registration);
@@ -10,37 +9,37 @@ export const registerEvidenceTools = (registration) => {
10
9
  registerSnapshotEvidenceTool(registration);
11
10
  };
12
11
  const registerExportEvidenceTool = ({ server, session, exportContract, }) => {
13
- server.registerTool(exportContract.name, toolRegistrationOptions(exportContract), async (input) => {
12
+ server.registerTool(exportContract.name, toolRegistrationOptions(exportContract), async (input, context) => {
14
13
  const bundle = bundleForSerialization(session);
15
- const written = await writeEvidenceBundle(bundle, input.path, input.overwrite);
14
+ const written = await writeEvidenceBundle(bundle, input.path, input.overwrite, context.mcpReq.signal);
16
15
  return written.ok
17
- ? toCallToolResult(ok({
16
+ ? server.delivery.toCallToolResult(ok({
18
17
  path: written.value.path,
19
18
  bytes: written.value.bytes,
20
19
  records: bundle.records.length,
21
20
  unknowns: bundle.unknowns.length,
22
21
  }), exportContract)
23
- : toCallToolResult(written, exportContract);
22
+ : server.delivery.toCallToolResult(written, exportContract);
24
23
  });
25
24
  };
26
25
  const registerSnapshotEvidenceTool = ({ server, session, snapshotContract, }) => {
27
- server.registerTool(snapshotContract.name, toolRegistrationOptions(snapshotContract), () => toCallToolResult(ok(bundleForSerialization(session)), snapshotContract));
26
+ server.registerTool(snapshotContract.name, toolRegistrationOptions(snapshotContract), () => server.delivery.toCallToolResult(ok(bundleForSerialization(session)), snapshotContract));
28
27
  };
29
28
  const registerImportEvidenceTool = ({ server, session, importContract, }) => {
30
29
  server.registerTool(importContract.name, toolRegistrationOptions(importContract), async (input) => {
31
30
  const path = input.path;
32
31
  const loaded = await readEvidenceBundle(path);
33
32
  if (!loaded.ok)
34
- return toCallToolResult(loaded, importContract);
33
+ return server.delivery.toCallToolResult(loaded, importContract);
35
34
  const retainedUnknownRevisions = new Set(bundleForSerialization(session).unknowns.map((unknown) => unknownRevisionKey(unknown)));
36
35
  const imported = session.importEvidenceBundle(loaded.value);
37
36
  return imported.ok
38
- ? toCallToolResult(ok({
37
+ ? server.delivery.toCallToolResult(ok({
39
38
  imported: imported.value,
40
39
  unknowns_added: loaded.value.unknowns.filter((unknown) => !retainedUnknownRevisions.has(unknownRevisionKey(unknown))).length,
41
40
  total: bundleForSerialization(session).records.length,
42
41
  }), importContract)
43
- : toCallToolResult(imported, importContract);
42
+ : server.delivery.toCallToolResult(imported, importContract);
44
43
  });
45
44
  };
46
45
  const bundleForSerialization = (session) => session.evidenceBundleForSerialization?.() ?? session.exportEvidenceBundle();
@@ -49,15 +48,12 @@ const unknownRevisionKey = (unknown) => `${unknown.unknown_id}:${String(unknown.
49
48
  const registerListUnknownsTool = ({ server, session, }) => {
50
49
  const listContract = toolContract("list_unknowns");
51
50
  server.registerTool(listContract.name, toolRegistrationOptions(listContract), (input) => {
52
- const filters = input;
53
51
  const all = session.listUnknowns({
54
- ...(filters.status === undefined ? {} : { status: filters.status }),
55
- ...(filters.severity === undefined
56
- ? {}
57
- : { severity: filters.severity }),
58
- ...(filters.domain === undefined ? {} : { domain: filters.domain }),
52
+ ...(input.status === undefined ? {} : { status: input.status }),
53
+ ...(input.severity === undefined ? {} : { severity: input.severity }),
54
+ ...(input.domain === undefined ? {} : { domain: input.domain }),
59
55
  });
60
- return toCallToolResult(ok({
56
+ return server.delivery.toCallToolResult(ok({
61
57
  items: all,
62
58
  total: all.length,
63
59
  }), listContract);
@@ -67,19 +63,19 @@ const registerRecordUnknownTool = ({ server, session, }) => {
67
63
  const recordContract = toolContract("record_unknown");
68
64
  server.registerTool(recordContract.name, toolRegistrationOptions(recordContract), (input) => {
69
65
  const result = session.recordUnknown(input);
70
- return toCallToolResult(result, recordContract);
66
+ return server.delivery.toCallToolResult(result, recordContract);
71
67
  });
72
68
  };
73
69
  const registerUpdateUnknownTool = ({ server, session, }) => {
74
70
  const updateContract = toolContract("update_unknown");
75
71
  server.registerTool(updateContract.name, toolRegistrationOptions(updateContract), (input) => {
76
72
  const result = session.updateUnknown(input);
77
- return toCallToolResult(result, updateContract);
73
+ return server.delivery.toCallToolResult(result, updateContract);
78
74
  });
79
75
  };
80
76
  const registerVerifyUnknownTool = ({ server, session, }) => {
81
77
  const verifyContract = toolContract("verify_unknown_resolution");
82
- server.registerTool(verifyContract.name, toolRegistrationOptions(verifyContract), (input) => toCallToolResult(session.verifyUnknownResolution(input.unknown_id), verifyContract));
78
+ server.registerTool(verifyContract.name, toolRegistrationOptions(verifyContract), (input) => server.delivery.toCallToolResult(session.verifyUnknownResolution(input.unknown_id), verifyContract));
83
79
  };
84
80
  export const registerUnknownTools = (registration) => {
85
81
  registerListUnknownsTool(registration);
@@ -5,13 +5,12 @@ import { jsonObjectSchema } from "../domain/jsonValue.js";
5
5
  import { createServerIdentity } from "../serverIdentity.js";
6
6
  import { mcpClientMetadata } from "./mcpClientMetadata.js";
7
7
  import { toolRegistrationOptions } from "./toolRegistrationOptions.js";
8
- import { toCallToolResult } from "./toolResult.js";
9
8
  import { err } from "../domain/result.js";
10
9
  /** Register the read-only provider and target status operation. */
11
10
  export const registerSessionStatusTool = (options) => {
12
11
  const { server, session, contract, startedAt, availabilityPolicy, androidAnalysisAvailability, } = options;
13
12
  server.registerTool(contract.name, toolRegistrationOptions(contract), async (input, context) => {
14
- const { client, clientFeatures, protocolVersion } = mcpClientMetadata(context);
13
+ const { client, clientFeatures, protocolVersion } = mcpClientMetadata(context, server.server);
15
14
  let androidAvailability;
16
15
  try {
17
16
  androidAvailability = await androidAnalysisAvailability(context.mcpReq.signal);
@@ -19,7 +18,7 @@ export const registerSessionStatusTool = (options) => {
19
18
  catch (cause) {
20
19
  if (!context.mcpReq.signal.aborted)
21
20
  throw cause;
22
- return toCallToolResult(err(new AnalysisCancelledError("binary_session")), contract);
21
+ return server.delivery.toCallToolResult(err(new AnalysisCancelledError("binary_session")), contract);
23
22
  }
24
23
  const status = session.status();
25
24
  const statusObject = jsonObjectSchema.parse(status);
@@ -43,7 +42,7 @@ export const registerSessionStatusTool = (options) => {
43
42
  ...(client === undefined ? {} : { client }),
44
43
  ...(protocolVersion === undefined ? {} : { protocolVersion }),
45
44
  });
46
- return toCallToolResult({
45
+ return server.delivery.toCallToolResult({
47
46
  ok: true,
48
47
  value: projectSessionStatus({
49
48
  status: statusObject,
@@ -1,4 +1,3 @@
1
- import { z } from "zod";
2
1
  import { getNavigationContext, inspectAddressContext, } from "../application/AnalysisContextQueries.js";
3
2
  import { readAnalysisSnapshot } from "../application/binary/AnalysisSnapshotFiles.js";
4
3
  import { createProcessCaptureEvidence } from "../application/process/ProcessEvidence.js";
@@ -16,10 +15,9 @@ import { registerInvestigationTools } from "./registerInvestigationTools.js";
16
15
  import { registerProcessComparisonTool } from "./registerProcessComparisonTool.js";
17
16
  import { registerEvidenceTools, registerUnknownTools, } from "./registerSessionRecordTools.js";
18
17
  import { registerSessionStatusTool } from "./registerSessionStatusTool.js";
19
- import { sessionAvailabilityPolicy, } from "./sessionAvailabilityPolicy.js";
18
+ import { sessionAvailabilityPolicy } from "./sessionAvailabilityPolicy.js";
20
19
  import { logToolExecution } from "./toolLogging.js";
21
20
  import { toolRegistrationOptions } from "./toolRegistrationOptions.js";
22
- import { toCallToolResult, toEvidenceToolResult } from "./toolResult.js";
23
21
  const recordProcessResidualUnknowns = (session, evidence, residuals) => {
24
22
  for (const residual of residuals) {
25
23
  const unknown = session.recordUnknown({
@@ -48,7 +46,6 @@ const recordProcessResidualUnknowns = (session, evidence, residuals) => {
48
46
  };
49
47
  const registerProcessTools = ({ server, session, logger, captureContract, }) => {
50
48
  server.registerTool(captureContract.name, toolRegistrationOptions(captureContract), async (input, context) => {
51
- const scenario = input;
52
49
  const progress = mcpProgressReporter(context);
53
50
  await progress.report({
54
51
  phase: captureContract.name,
@@ -56,7 +53,7 @@ const registerProcessTools = ({ server, session, logger, captureContract, }) =>
56
53
  total: 1,
57
54
  message: "started",
58
55
  });
59
- const captured = await logToolExecution(logger, captureContract.name, () => captureProcessScenario(scenario, context.mcpReq.signal));
56
+ const captured = await logToolExecution(logger, captureContract.name, () => captureProcessScenario(input, context.mcpReq.signal));
60
57
  await progress.report({
61
58
  phase: captureContract.name,
62
59
  completed: 1,
@@ -65,15 +62,15 @@ const registerProcessTools = ({ server, session, logger, captureContract, }) =>
65
62
  terminal: true,
66
63
  });
67
64
  if (!captured.ok)
68
- return toCallToolResult(captured, captureContract);
69
- const evidence = createProcessCaptureEvidence(scenario, captured.value);
65
+ return server.delivery.toCallToolResult(captured, captureContract);
66
+ const evidence = createProcessCaptureEvidence(input, captured.value);
70
67
  const recorded = session.recordEvidence(evidence);
71
68
  if (!recorded.ok)
72
- return toCallToolResult(recorded, captureContract);
69
+ return server.delivery.toCallToolResult(recorded, captureContract);
73
70
  const unknowns = recordProcessResidualUnknowns(session, evidence, captured.value.residual_unknowns);
74
71
  if (!unknowns.ok)
75
- return toCallToolResult(unknowns, captureContract);
76
- return toEvidenceToolResult(evidence, captureContract, recorded);
72
+ return server.delivery.toCallToolResult(unknowns, captureContract);
73
+ return server.delivery.toEvidenceToolResult(evidence, captureContract, recorded);
77
74
  });
78
75
  };
79
76
  const registerLifecycleTools = (registration) => {
@@ -95,7 +92,7 @@ const registerOpenLifecycleTool = ({ server, session, logger, openContract, }) =
95
92
  if (input.snapshot_path !== undefined) {
96
93
  const loaded = await readAnalysisSnapshot(input.snapshot_path);
97
94
  if (!loaded.ok)
98
- return toCallToolResult(loaded, openContract);
95
+ return server.delivery.toCallToolResult(loaded, openContract);
99
96
  snapshot = loaded.value;
100
97
  }
101
98
  const opened = await logToolExecution(logger, openContract.name, () => session.open(input.path, {
@@ -107,30 +104,33 @@ const registerOpenLifecycleTool = ({ server, session, logger, openContract, }) =
107
104
  ...(snapshot === undefined ? {} : { snapshot }),
108
105
  }));
109
106
  return opened.ok
110
- ? toCallToolResult({
107
+ ? server.delivery.toCallToolResult({
111
108
  ok: true,
112
109
  value: {
113
110
  path: opened.value.path,
114
111
  format: opened.value.format,
115
112
  kind: opened.value.kind,
116
- loaderArgs: z
117
- .array(z.string())
118
- .parse(session.openCompatibility().loaderArgs ?? []),
119
113
  sha256: opened.value.sha256,
120
114
  architecture: opened.value.architecture ?? null,
121
115
  },
122
116
  }, openContract)
123
- : toCallToolResult(opened, openContract);
117
+ : server.delivery.toCallToolResult(opened, openContract);
124
118
  });
125
119
  };
126
120
  const registerContextTools = (server, session) => {
127
121
  const navigationContract = toolContract("get_navigation_context");
128
122
  const addressContract = toolContract("inspect_address_context");
129
123
  server.registerTool(navigationContract.name, toolRegistrationOptions(navigationContract), async (input, context) => {
130
- return toCallToolResult(await getNavigationContext(session, input, context.mcpReq.signal), navigationContract);
124
+ const admitted = await session.withAdmittedAnalysis(navigationContract.name, context.mcpReq.signal, async (analysis) => server.delivery.toCallToolResult(await getNavigationContext(analysis, input, context.mcpReq.signal), navigationContract));
125
+ return admitted.ok
126
+ ? admitted.value
127
+ : server.delivery.toCallToolResult(admitted, navigationContract);
131
128
  });
132
129
  server.registerTool(addressContract.name, toolRegistrationOptions(addressContract), async (input, context) => {
133
- return toCallToolResult(await inspectAddressContext(session, input, context.mcpReq.signal), addressContract);
130
+ const admitted = await session.withAdmittedAnalysis(addressContract.name, context.mcpReq.signal, async (analysis) => server.delivery.toCallToolResult(await inspectAddressContext(analysis, input, context.mcpReq.signal), addressContract));
131
+ return admitted.ok
132
+ ? admitted.value
133
+ : server.delivery.toCallToolResult(admitted, addressContract);
134
134
  });
135
135
  };
136
136
  export const registerSessionTools = (server, session, logger, options = {}) => {
@@ -180,6 +180,6 @@ export const registerSessionTools = (server, session, logger, options = {}) => {
180
180
  const missingAndroidAvailability = async () => ({
181
181
  status: "unavailable",
182
182
  code: "not_configured",
183
- reason: "Set REA_JADX_MCP_JAR to a caller-supplied jadx-headless-mcp 0.7.1 JAR and provide a full JDK on Linux or macOS.",
183
+ reason: "Set REA_JADX_MCP_JAR to a caller-supplied jadx-headless-mcp 0.7.1 JAR and provide a full JDK on Linux, macOS, or Windows x64 with its matching bundled native controls.",
184
184
  diagnostics: { configured: false },
185
185
  });
@@ -1,15 +1,14 @@
1
1
  import { toolContract } from "../contracts/toolContracts.js";
2
2
  import { logToolExecution } from "./toolLogging.js";
3
3
  import { toolRegistrationOptions } from "./toolRegistrationOptions.js";
4
- import { toCallToolResult, toEvidenceToolResult } from "./toolResult.js";
5
4
  /** Bind the module relationship workflow to its exact canonical contract. */
6
5
  export const registerWebModuleTool = (server, service, logger, recordEvidence) => {
7
6
  const contract = toolContract("trace_web_module_imports");
8
7
  server.registerTool(contract.name, toolRegistrationOptions(contract), async (input, context) => {
9
8
  const result = await logToolExecution(logger, contract.name, () => service.trace(input, { signal: context.mcpReq.signal }));
10
9
  if (!result.ok)
11
- return toCallToolResult(result, contract);
10
+ return server.delivery.toCallToolResult(result, contract);
12
11
  const recorded = recordEvidence?.(result.value);
13
- return toEvidenceToolResult(result.value, contract, recorded);
12
+ return server.delivery.toEvidenceToolResult(result.value, contract, recorded);
14
13
  });
15
14
  };
@@ -1,7 +1,6 @@
1
1
  import { toolContract } from "../contracts/toolContracts.js";
2
2
  import { logToolExecution } from "./toolLogging.js";
3
3
  import { toolRegistrationOptions } from "./toolRegistrationOptions.js";
4
- import { toCallToolResult, toEvidenceToolResult } from "./toolResult.js";
5
4
  /** Bind historical inspection to its named contract and caller-owned Evidence writer. */
6
5
  export const registerWebNetworkCaptureTool = (server, service, logger, recordEvidence) => {
7
6
  const contract = toolContract("inspect_web_network_capture");
@@ -19,8 +18,8 @@ export const registerWebNetworkCaptureTool = (server, service, logger, recordEvi
19
18
  server.registerTool(contract.name, { ...registration, inputSchema }, async (input, context) => {
20
19
  const result = await logToolExecution(logger, contract.name, () => service.inspect(input, { signal: context.mcpReq.signal }));
21
20
  if (!result.ok)
22
- return toCallToolResult(result, contract);
21
+ return server.delivery.toCallToolResult(result, contract);
23
22
  const recorded = recordEvidence?.(result.value);
24
- return toEvidenceToolResult(result.value, contract, recorded);
23
+ return server.delivery.toEvidenceToolResult(result.value, contract, recorded);
25
24
  });
26
25
  };