rea-agents 3.1.0 → 3.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (590) hide show
  1. package/README.md +72 -95
  2. package/bridge/ghidra/ReaGhidraBridge.java +609 -841
  3. package/bridge/hopper_bridge.py +99 -344
  4. package/dist/application/AbortablePromise.js +6 -3
  5. package/dist/application/AnalysisSnapshotCache.js +0 -1
  6. package/dist/application/AnalysisSnapshotFiles.js +7 -7
  7. package/dist/application/AndroidApplicationService.js +1 -1
  8. package/dist/application/AppleApplicationService.js +1 -1
  9. package/dist/application/ArtifactExtraction.js +35 -54
  10. package/dist/application/ArtifactExtractionDestination.js +17 -0
  11. package/dist/application/ArtifactGraphConstruction.js +2 -17
  12. package/dist/application/ArtifactInventory/classify.js +2 -6
  13. package/dist/application/ArtifactInventory/hash.js +2 -20
  14. package/dist/application/ArtifactInventory/scanCanonical.js +8 -12
  15. package/dist/application/ArtifactInventory/scanReader.js +69 -51
  16. package/dist/application/ArtifactInventory.js +6 -14
  17. package/dist/application/AuthorizedArtifactInventory.js +3 -13
  18. package/dist/application/BinarySession.js +41 -13
  19. package/dist/application/BinarySessionComposition.js +0 -11
  20. package/dist/application/BinarySessionOpen.js +2 -1
  21. package/dist/application/BinarySessionRecords.js +5 -93
  22. package/dist/application/BinarySessionStatus.js +5 -16
  23. package/dist/application/BinaryTargetResolver.js +216 -0
  24. package/dist/application/BrowserEvidence.js +42 -58
  25. package/dist/application/BrowserObservationService.js +3 -6
  26. package/dist/application/BrowserScenarioCaptureService.js +3 -6
  27. package/dist/application/BrowserScenarioEvidence.js +3 -3
  28. package/dist/application/CallPathTracing.js +2 -36
  29. package/dist/application/CapabilityInventory.js +10 -15
  30. package/dist/application/ClientConfigurationDocument.js +27 -0
  31. package/dist/application/ClientRegistrationStatus.js +16 -13
  32. package/dist/application/CommandShimReplay.js +14 -1
  33. package/dist/application/DirectAnalysis.js +22 -46
  34. package/dist/application/DirectAnalysisStatus.js +5 -61
  35. package/dist/application/Doctor.js +11 -32
  36. package/dist/application/DoctorDiagnostics.js +1 -2
  37. package/dist/application/DoctorScope.js +1 -1
  38. package/dist/application/ElectronActiveEvidence.js +3 -8
  39. package/dist/application/ElectronActiveObservationService.js +3 -6
  40. package/dist/application/ElectronBoundaryAnalysis.js +7 -8
  41. package/dist/application/ElectronBoundaryGraphContext.js +1 -1
  42. package/dist/application/ElectronBoundaryGraphIpc.js +3 -3
  43. package/dist/application/ElectronBoundaryGraphNative.js +1 -2
  44. package/dist/application/ElectronBoundaryGraphWindows.js +6 -8
  45. package/dist/application/ElectronEvidence.js +4 -7
  46. package/dist/application/ElectronObservationService.js +5 -9
  47. package/dist/application/EnhancedLiteralTracing.js +42 -65
  48. package/dist/application/EnhancedTools.js +76 -44
  49. package/dist/application/EvidenceBundleCommands.js +11 -11
  50. package/dist/application/EvidenceBundleFiles.js +9 -15
  51. package/dist/application/EvidenceLedger.js +6 -41
  52. package/dist/application/FilesystemSnapshot.js +2 -3
  53. package/dist/application/InterfaceBuilderAnalysis.js +266 -0
  54. package/dist/application/InventoryProjectionEvidence.js +4 -2
  55. package/dist/application/InvestigationProviders.js +1 -1
  56. package/dist/application/JavaScriptApplicationEvidence.js +2 -5
  57. package/dist/application/JavaScriptApplicationEvidenceGraph.js +6 -10
  58. package/dist/application/JavaScriptApplicationService.js +6 -29
  59. package/dist/application/JavaScriptApplicationWorkflowEvidence.js +5 -5
  60. package/dist/application/JavaScriptApplicationWorkflowService.js +0 -8
  61. package/dist/application/JavaScriptArtifactAnalysis.js +38 -127
  62. package/dist/application/JavaScriptArtifactFiles.js +67 -107
  63. package/dist/application/JavaScriptArtifactGraphAccumulator.js +0 -7
  64. package/dist/application/JavaScriptArtifactGraphBuilder.js +7 -58
  65. package/dist/application/JavaScriptArtifactGraphBundlers.js +1 -6
  66. package/dist/application/JavaScriptArtifactGraphContext.js +12 -39
  67. package/dist/application/JavaScriptArtifactGraphDocuments.js +4 -11
  68. package/dist/application/JavaScriptArtifactGraphEvidence.js +0 -14
  69. package/dist/application/JavaScriptArtifactGraphFindings.js +3 -3
  70. package/dist/application/JavaScriptArtifactGraphStructure.js +16 -17
  71. package/dist/application/JavaScriptArtifactPathResolution.js +61 -49
  72. package/dist/application/JavaScriptArtifactReconstruction.js +5 -10
  73. package/dist/application/JavaScriptArtifactReconstructionInput.js +2 -14
  74. package/dist/application/JavaScriptJsonModules.js +2 -2
  75. package/dist/application/JavaScriptModuleRelationships.js +22 -27
  76. package/dist/application/JavaScriptReplayPlanning.js +9 -3
  77. package/dist/application/JavaScriptReplayService.js +6 -32
  78. package/dist/application/JavaScriptReturnShapeProjection.js +12 -42
  79. package/dist/application/JavaScriptRuntimeObservationEvidence.js +7 -8
  80. package/dist/application/JavaScriptRuntimeObservationService.js +4 -8
  81. package/dist/application/JavaScriptRuntimeReconciliationEvidence.js +2 -3
  82. package/dist/application/JavaScriptSemanticGraphBuilder.js +11 -41
  83. package/dist/application/JavaScriptSemanticGraphConstruction.js +5 -29
  84. package/dist/application/JavaScriptSemanticGraphEvidence.js +1 -1
  85. package/dist/application/JavaScriptSemanticGraphFingerprintProjection.js +1 -1
  86. package/dist/application/JavaScriptSemanticGraphFlowProjection.js +0 -13
  87. package/dist/application/JavaScriptSemanticGraphProjection.js +1 -3
  88. package/dist/application/JavaScriptSemanticTraceService.js +1 -10
  89. package/dist/application/JsonFiles.js +79 -0
  90. package/dist/application/LinuxHopper.js +11 -9
  91. package/dist/application/LoopbackReplay.js +26 -23
  92. package/dist/application/LoopbackReplayRecorder.js +29 -1
  93. package/dist/application/ManagedApplicationGraphService.js +1 -2
  94. package/dist/application/ManagedMemberComparisonService.js +11 -41
  95. package/dist/application/ManagedNativeVerificationService.js +1 -2
  96. package/dist/application/ManagedReconstructionService.js +1 -1
  97. package/dist/application/ManagedRuntimeCorrelationService.js +5 -8
  98. package/dist/application/NativeApiInspection.js +2 -7
  99. package/dist/application/NativeUiActionTrace.js +394 -0
  100. package/dist/application/NodeRuntimeCharacterizationService.js +3 -7
  101. package/dist/application/PermissionAuthority.js +15 -7
  102. package/dist/application/PermissionFailure.js +5 -0
  103. package/dist/application/ProcessCaptureAuthority.js +5 -7
  104. package/dist/application/ProcessCaptureJournal.js +3 -2
  105. package/dist/application/ProcessCaptureLifecycle.js +5 -12
  106. package/dist/application/ProcessCheckpoints.js +29 -11
  107. package/dist/application/ProcessCli.js +6 -16
  108. package/dist/application/ProcessEvidence.js +5 -7
  109. package/dist/application/ProcessHarness.js +52 -17
  110. package/dist/application/ProcessReactiveCoordinator.js +2 -4
  111. package/dist/application/ProcessReactiveEffects.js +9 -3
  112. package/dist/application/ProcessReactiveHarness.js +13 -7
  113. package/dist/application/ProcessSampling.js +2 -4
  114. package/dist/application/ProcessTimer.js +39 -0
  115. package/dist/application/ProjectPermissionStore.js +39 -96
  116. package/dist/application/RealHopperAssertions.js +20 -66
  117. package/dist/application/ReconstructionCoverageService.js +12 -58
  118. package/dist/application/ReconstructionObligationAuthority.js +2 -2
  119. package/dist/application/ReconstructionObligationCandidates.js +4 -4
  120. package/dist/application/ReconstructionObligationLedgerEvaluation.js +8 -15
  121. package/dist/application/ReconstructionObligationLedgerProjection.js +3 -7
  122. package/dist/application/ReconstructionObligationLedgerService.js +19 -38
  123. package/dist/application/ReferenceSourceImport.js +19 -45
  124. package/dist/application/ReferenceSourceImportEntries.js +2 -4
  125. package/dist/application/ReferenceSourceImportPolicy.js +5 -32
  126. package/dist/application/ReferenceSourceImportTypes.js +0 -16
  127. package/dist/application/RuntimeExecutableDiagnostics.js +55 -29
  128. package/dist/application/SessionProviderRouter.js +2 -2
  129. package/dist/application/Setup.js +1 -3
  130. package/dist/application/SetupClientConfiguration.js +22 -93
  131. package/dist/application/SetupRegistrationEnvironment.js +0 -7
  132. package/dist/application/StoreFileLock.js +119 -0
  133. package/dist/application/TerminalRenderer.js +2 -3
  134. package/dist/application/Uninstall.js +9 -14
  135. package/dist/application/UnknownEvidence.js +1 -1
  136. package/dist/artifacts/ArtifactPaths.js +2 -5
  137. package/dist/artifacts/ArtifactProvider.js +36 -58
  138. package/dist/artifacts/DirectoryArtifactReader.js +13 -8
  139. package/dist/artifacts/MachOSliceArtifactReader.js +1 -5
  140. package/dist/artifacts/NativeDmgArtifactReader.js +11 -11
  141. package/dist/artifacts/NibArchive.js +269 -0
  142. package/dist/artifacts/SafeOutputTree.js +15 -24
  143. package/dist/browser/BrowserProcessStartup.js +1 -2
  144. package/dist/browser/CdpAuthorizedMainFrame.js +16 -0
  145. package/dist/browser/CdpBrowserProvider.js +3 -13
  146. package/dist/browser/CdpCanonicalJsonDigest.js +9 -0
  147. package/dist/browser/CdpCaptureDocuments.js +28 -76
  148. package/dist/browser/CdpCaptureEventBodyShapes.js +13 -33
  149. package/dist/browser/CdpCaptureEventHandlers.js +22 -87
  150. package/dist/browser/CdpCaptureEvents.js +2 -8
  151. package/dist/browser/CdpCaptureStorage.js +9 -20
  152. package/dist/browser/CdpCaptureStorageFingerprints.js +85 -98
  153. package/dist/browser/CdpCaptureValues.js +21 -21
  154. package/dist/browser/CdpConnection.js +10 -25
  155. package/dist/browser/CdpElectronInspection.js +26 -50
  156. package/dist/browser/CdpElectronProvider.js +10 -35
  157. package/dist/browser/CdpElectronScriptEvents.js +8 -16
  158. package/dist/browser/CdpElectronScripts.js +6 -35
  159. package/dist/browser/CdpElectronWorkers.js +6 -10
  160. package/dist/browser/CdpEndpoint.js +25 -41
  161. package/dist/browser/CdpObservationSession.js +14 -26
  162. package/dist/browser/CdpPageCapture.js +34 -48
  163. package/dist/browser/CdpPageCaptureScripts.js +1 -19
  164. package/dist/browser/CdpPageCaptureWorkers.js +6 -10
  165. package/dist/browser/CdpSafeMetadata.js +19 -22
  166. package/dist/browser/CdpScreenshot.js +3 -5
  167. package/dist/browser/CdpTargetSession.js +1 -2
  168. package/dist/browser/CdpWebMcpDiscovery.js +13 -22
  169. package/dist/browser/ElectronFileScope.js +8 -19
  170. package/dist/browser/JavaScriptRuntimeScope.js +9 -14
  171. package/dist/browser/PlaywrightBrowserScenarioProvider.js +31 -64
  172. package/dist/browser/PlaywrightElectronActiveActions.js +54 -69
  173. package/dist/browser/PlaywrightElectronActiveProvider.js +14 -34
  174. package/dist/browser/PlaywrightExecutionBoundary.js +16 -5
  175. package/dist/browser/PlaywrightScenarioActions.js +3 -7
  176. package/dist/browser/PlaywrightScenarioArtifacts.js +23 -92
  177. package/dist/browser/PlaywrightScenarioBrowser.js +3 -5
  178. package/dist/browser/PlaywrightScenarioEvents.js +45 -94
  179. package/dist/browser/PlaywrightScenarioSession.js +14 -30
  180. package/dist/browser/PngVisualDiff.js +22 -14
  181. package/dist/browser/SensitiveTextCapture.js +0 -17
  182. package/dist/browser/V8InspectorCaptureProjection.js +7 -8
  183. package/dist/browser/V8InspectorEndpoint.js +12 -14
  184. package/dist/browser/V8InspectorProvider.js +20 -61
  185. package/dist/browser/WebSourceMapFetcher.js +56 -176
  186. package/dist/catalogIdentity.js +0 -54
  187. package/dist/cli/artifactCommands.js +49 -77
  188. package/dist/cli/coreAnalysisCommands.js +83 -133
  189. package/dist/cli/javascriptApplicationAnalysis.js +1 -9
  190. package/dist/cli/managedCommands.js +5 -270
  191. package/dist/cli/setupCommands.js +3 -12
  192. package/dist/cli/utilityCommands.js +7 -41
  193. package/dist/cli.js +0 -2
  194. package/dist/cliApplicationCommands.js +42 -112
  195. package/dist/cliBrowserAdvancedCommands.js +10 -106
  196. package/dist/cliBrowserCommands.js +15 -127
  197. package/dist/cliBrowserContext.js +30 -0
  198. package/dist/cliCommandNames.js +4 -5
  199. package/dist/cliElectronCommands.js +8 -72
  200. package/dist/cliEvidenceCommands.js +8 -77
  201. package/dist/cliJavaScriptRuntimeCommands.js +9 -91
  202. package/dist/cliJsonInput.js +4 -14
  203. package/dist/cliObservationOptions.js +11 -96
  204. package/dist/cliPolicyCommands.js +2 -17
  205. package/dist/cliProcessCommands.js +3 -3
  206. package/dist/cliSetup.js +0 -13
  207. package/dist/config/browserScenario.js +2 -2
  208. package/dist/config/environment.js +0 -9
  209. package/dist/config/parseConfig.js +1 -33
  210. package/dist/config/parsers.js +6 -27
  211. package/dist/config/passiveObservation.js +7 -77
  212. package/dist/config/permissions.js +0 -7
  213. package/dist/contracts/analysisSearchContract.js +2 -5
  214. package/dist/contracts/applicationToolContracts.js +56 -109
  215. package/dist/contracts/applicationWorkflowInputContracts.js +27 -102
  216. package/dist/contracts/artifactComparisonExample.js +58 -60
  217. package/dist/contracts/artifactToolContracts.js +20 -67
  218. package/dist/contracts/browserScenarioToolContracts.js +6 -51
  219. package/dist/contracts/browserToolContracts.js +8 -73
  220. package/dist/contracts/electronToolContracts.js +8 -108
  221. package/dist/contracts/enhancedInputs.js +23 -54
  222. package/dist/contracts/errorSchemas.js +0 -1
  223. package/dist/contracts/functionComparisonExample.js +10 -24
  224. package/dist/contracts/functionInstructionContract.js +1 -3
  225. package/dist/contracts/functionWorkflowToolContracts.js +2 -2
  226. package/dist/contracts/hopperMemoryContracts.js +3 -3
  227. package/dist/contracts/investigationExamples.js +14 -11
  228. package/dist/contracts/javascriptApplicationWorkflowExamples.js +12 -19
  229. package/dist/contracts/javascriptRuntimeObservationToolContracts.js +2 -20
  230. package/dist/contracts/javascriptRuntimeReconciliationExample.js +45 -12
  231. package/dist/contracts/managedToolContracts.js +6 -95
  232. package/dist/contracts/managedWorkflowExamples.js +77 -128
  233. package/dist/contracts/managedWorkflowToolContracts.js +51 -77
  234. package/dist/contracts/nativeToolContracts.js +7 -11
  235. package/dist/contracts/processCaptureExample.js +2 -69
  236. package/dist/contracts/promptContracts.js +49 -67
  237. package/dist/contracts/providerSelection.js +0 -1
  238. package/dist/contracts/reconstructionReadinessExample.js +1 -6
  239. package/dist/contracts/sessionStatusContract.js +1 -17
  240. package/dist/contracts/sessionToolSchemas.js +6 -15
  241. package/dist/contracts/toolContractExamples.js +11 -11
  242. package/dist/contracts/toolContractHelpers.js +0 -4
  243. package/dist/contracts/toolContracts.js +60 -71
  244. package/dist/contracts/toolEffects.js +5 -13
  245. package/dist/contracts/toolOutputSchemaGroups.js +37 -91
  246. package/dist/contracts/toolOutputSchemaPrimitives.js +16 -56
  247. package/dist/contracts/toolSchemaMetadata.js +8 -19
  248. package/dist/contracts/unknownContractExamples.js +0 -2
  249. package/dist/domain/analysisErrorPresentation.js +46 -54
  250. package/dist/domain/analysisErrorProjection.js +28 -37
  251. package/dist/domain/analysisProfile.js +3 -31
  252. package/dist/domain/analysisSnapshot.js +3 -12
  253. package/dist/domain/androidApplication.js +15 -54
  254. package/dist/domain/appleApplication.js +24 -67
  255. package/dist/domain/artifactComparison.js +11 -29
  256. package/dist/domain/artifactGraph.js +14 -44
  257. package/dist/domain/artifactInspection.js +38 -69
  258. package/dist/domain/artifactInventoryEvidence.js +27 -21
  259. package/dist/domain/binaryTarget.js +2 -221
  260. package/dist/domain/browserCaptureComparison.js +47 -24
  261. package/dist/domain/browserObservation.js +28 -193
  262. package/dist/domain/browserObservationSchemas.js +5 -23
  263. package/dist/domain/browserScenario.js +11 -14
  264. package/dist/domain/browserScenarioCapture.js +11 -12
  265. package/dist/domain/browserScenarioCaptureValues.js +146 -84
  266. package/dist/domain/browserScenarioDiff.js +2 -59
  267. package/dist/domain/browserScenarioDiffEvidence.js +51 -0
  268. package/dist/domain/browserScenarioDiffValues.js +21 -38
  269. package/dist/domain/browserScenarioValues.js +80 -109
  270. package/dist/domain/browserSession.js +4 -7
  271. package/dist/domain/bundleComparison.js +6 -32
  272. package/dist/domain/bytecodeProvider.js +20 -19
  273. package/dist/domain/callPath.js +47 -167
  274. package/dist/domain/callPathSchemas.js +79 -0
  275. package/dist/domain/changedBehavior.js +34 -60
  276. package/dist/domain/completionLedgerGeneration.js +8 -14
  277. package/dist/domain/conformancePackage.js +126 -97
  278. package/dist/domain/conformanceReplay.js +36 -8
  279. package/dist/domain/conformanceTrustGate.js +23 -14
  280. package/dist/domain/customProtocolCapture.js +1 -1
  281. package/dist/domain/electronActiveObservation.js +70 -103
  282. package/dist/domain/electronObservation.js +14 -80
  283. package/dist/domain/electronStaticAnalysisBrowser.js +36 -46
  284. package/dist/domain/electronStaticAnalysisIpc.js +38 -14
  285. package/dist/domain/electronStaticAnalysisNative.js +1 -8
  286. package/dist/domain/electronStaticAnalysisValues.js +10 -17
  287. package/dist/domain/errors.js +33 -54
  288. package/dist/domain/eventProcessTree.js +20 -12
  289. package/dist/domain/evidence.js +2 -10
  290. package/dist/domain/evidenceBundle.js +3 -5
  291. package/dist/domain/evidenceCompletionLedger.js +6 -8
  292. package/dist/domain/functionComparison.js +4 -14
  293. package/dist/domain/functionComparisonNormalization.js +4 -11
  294. package/dist/domain/functionComparisonResults.js +25 -15
  295. package/dist/domain/functionComparisonSchemas.js +49 -33
  296. package/dist/domain/functionDossierEvidence.js +31 -156
  297. package/dist/domain/hopperStartupFailure.js +1 -1
  298. package/dist/domain/hopperValues.js +15 -136
  299. package/dist/domain/interfaceBuilderGraph.js +654 -0
  300. package/dist/domain/javascriptApplicationAnalysis.js +8 -112
  301. package/dist/domain/javascriptApplicationChangeGraph.js +22 -82
  302. package/dist/domain/javascriptApplicationEvidenceSchemas.js +59 -47
  303. package/dist/domain/javascriptApplicationGraph.js +3 -13
  304. package/dist/domain/javascriptApplicationGraphSchemas.js +12 -34
  305. package/dist/domain/javascriptApplicationVersionComparison.js +26 -30
  306. package/dist/domain/javascriptApplicationVersionComparisonSchemas.js +123 -68
  307. package/dist/domain/javascriptApplicationVersionItems.js +120 -53
  308. package/dist/domain/javascriptApplicationVersionKeys.js +24 -11
  309. package/dist/domain/javascriptAstFingerprint.js +25 -58
  310. package/dist/domain/javascriptAstValues.js +9 -0
  311. package/dist/domain/javascriptExportInstrumentation.js +2 -4
  312. package/dist/domain/javascriptExportShapeComparison.js +6 -7
  313. package/dist/domain/javascriptExportShapeComparisonSchemas.js +68 -75
  314. package/dist/domain/javascriptExportShapeSelection.js +17 -19
  315. package/dist/domain/javascriptFeatureSeed.js +20 -12
  316. package/dist/domain/javascriptFeatureTrace.js +13 -67
  317. package/dist/domain/javascriptFeatureTraceSchemas.js +24 -52
  318. package/dist/domain/javascriptFeatureTraversal.js +1 -44
  319. package/dist/domain/javascriptNativeHandoff.js +1 -1
  320. package/dist/domain/javascriptReplay.js +24 -41
  321. package/dist/domain/javascriptRuntimeLoadState.js +3 -8
  322. package/dist/domain/javascriptRuntimeObservation.js +42 -103
  323. package/dist/domain/javascriptRuntimeReconciliation.js +1 -3
  324. package/dist/domain/javascriptRuntimeReconciliationActive.js +8 -17
  325. package/dist/domain/javascriptRuntimeReconciliationGraph.js +10 -23
  326. package/dist/domain/javascriptRuntimeReconciliationMatching.js +18 -12
  327. package/dist/domain/javascriptRuntimeReconciliationParsing.js +16 -45
  328. package/dist/domain/javascriptRuntimeReconciliationResult.js +4 -5
  329. package/dist/domain/javascriptRuntimeReconciliationRuntime.js +8 -12
  330. package/dist/domain/javascriptRuntimeReconciliationSchemas.js +33 -48
  331. package/dist/domain/javascriptRuntimeStaticCandidates.js +3 -3
  332. package/dist/domain/javascriptSemanticAnalysis.js +12 -45
  333. package/dist/domain/javascriptSemanticAsyncEffects.js +1 -9
  334. package/dist/domain/javascriptSemanticCallResolution.js +6 -16
  335. package/dist/domain/javascriptSemanticCalls.js +5 -32
  336. package/dist/domain/javascriptSemanticChildProcesses.js +1 -11
  337. package/dist/domain/javascriptSemanticCoverage.js +11 -0
  338. package/dist/domain/javascriptSemanticDataEffectHelpers.js +1 -8
  339. package/dist/domain/javascriptSemanticDataEffects.js +1 -11
  340. package/dist/domain/javascriptSemanticFingerprints.js +3 -5
  341. package/dist/domain/javascriptSemanticGraphSchemas.js +25 -51
  342. package/dist/domain/javascriptSemanticGraphSerialization.js +2 -13
  343. package/dist/domain/javascriptSemanticIr.js +1 -29
  344. package/dist/domain/javascriptSemanticObjects.js +1 -5
  345. package/dist/domain/javascriptSemanticPrimitives.js +2 -9
  346. package/dist/domain/javascriptSemanticProjection.js +0 -18
  347. package/dist/domain/javascriptSemanticPromises.js +9 -16
  348. package/dist/domain/javascriptSemanticProvenance.js +16 -19
  349. package/dist/domain/javascriptSemanticQuery.js +17 -139
  350. package/dist/domain/javascriptSemanticQueryAssessment.js +9 -37
  351. package/dist/domain/javascriptSemanticQueryIdentity.js +2 -23
  352. package/dist/domain/javascriptSemanticQuerySchemas.js +14 -107
  353. package/dist/domain/javascriptSemanticResources.js +1 -6
  354. package/dist/domain/javascriptSemanticReturns.js +10 -27
  355. package/dist/domain/javascriptSemanticValueTypes.js +1 -0
  356. package/dist/domain/javascriptSemanticValues.js +44 -62
  357. package/dist/domain/javascriptStaticAnalysis.js +21 -43
  358. package/dist/domain/javascriptStaticAnalysisBundler.js +34 -93
  359. package/dist/domain/javascriptStaticAnalysisCalls.js +17 -16
  360. package/dist/domain/javascriptStaticAnalysisFindings.js +3 -19
  361. package/dist/domain/javascriptStaticAnalysisHelpers.js +47 -88
  362. package/dist/domain/javascriptStaticAnalysisState.js +1 -5
  363. package/dist/domain/javascriptStaticAnalysisTypes.js +1 -0
  364. package/dist/domain/jsonShape.js +7 -33
  365. package/dist/domain/localPath.js +7 -0
  366. package/dist/domain/managedApplicationGraph.js +9 -41
  367. package/dist/domain/managedApplicationGraphCoverage.js +24 -156
  368. package/dist/domain/managedApplicationGraphNodes.js +10 -13
  369. package/dist/domain/managedArtifact.js +14 -27
  370. package/dist/domain/managedMemberComparison.js +90 -92
  371. package/dist/domain/managedMemberComparisonCoverage.js +11 -33
  372. package/dist/domain/managedMemberComparisonItems.js +221 -0
  373. package/dist/domain/managedMemberComparisonMatch.js +8 -208
  374. package/dist/domain/managedNativeVerification.js +3 -6
  375. package/dist/domain/managedNativeVerificationMatch.js +55 -59
  376. package/dist/domain/managedNativeVerificationSchemas.js +83 -47
  377. package/dist/domain/managedReconstruction.js +19 -23
  378. package/dist/domain/managedRuntimeCorrelation.js +6 -9
  379. package/dist/domain/nativeApiBoundary.js +2 -7
  380. package/dist/domain/nativeInspection.js +0 -2
  381. package/dist/domain/nativeInvestigationGraph.js +351 -0
  382. package/dist/domain/nativeValueFlow.js +61 -0
  383. package/dist/domain/nodeRuntimeCharacterization.js +1 -5
  384. package/dist/domain/objcSwiftMetadata.js +254 -0
  385. package/dist/domain/peInspection.js +1 -1
  386. package/dist/domain/permissionPolicy.js +13 -0
  387. package/dist/domain/processCapture.js +76 -113
  388. package/dist/domain/processCaptureExample.js +68 -0
  389. package/dist/domain/processCaptureParsing.js +21 -0
  390. package/dist/domain/processCaptureReactiveSchema.js +68 -0
  391. package/dist/domain/processCaptureValidation.js +1 -7
  392. package/dist/domain/processComparison.js +3 -12
  393. package/dist/domain/processReactiveMatching.js +29 -50
  394. package/dist/domain/processReactiveRuntime.js +4 -8
  395. package/dist/domain/processReactiveScenario.js +28 -94
  396. package/dist/domain/processReactiveScenarioPreflight.js +5 -30
  397. package/dist/domain/processReactiveTransition.js +33 -18
  398. package/dist/domain/processScenario.js +56 -90
  399. package/dist/domain/processTraceComparison.js +0 -8
  400. package/dist/domain/processTraceEvaluation.js +14 -4
  401. package/dist/domain/processTraceSpecification.js +11 -17
  402. package/dist/domain/protocolCapture.js +3 -3
  403. package/dist/domain/reconstructionCoverage.js +62 -129
  404. package/dist/domain/reconstructionCoverageEvaluation.js +17 -17
  405. package/dist/domain/reconstructionObligationLedgerSchemas.js +45 -72
  406. package/dist/domain/reconstructionReadiness.js +1 -2
  407. package/dist/domain/reconstructionReadinessSchemas.js +36 -38
  408. package/dist/domain/reconstructionUnknowns.js +3 -3
  409. package/dist/domain/reconstructionVerification.js +13 -47
  410. package/dist/domain/reconstructionVerificationSchemas.js +50 -38
  411. package/dist/domain/referenceSourceGraph.js +53 -61
  412. package/dist/domain/referenceSourceImportParsing.js +1 -5
  413. package/dist/domain/replayMachine.js +19 -31
  414. package/dist/domain/replayMachineRun.js +15 -63
  415. package/dist/domain/replayMachineRuntime.js +41 -41
  416. package/dist/domain/replayMachineValues.js +84 -0
  417. package/dist/domain/residualUnknown.js +25 -30
  418. package/dist/domain/runtimeCharacterization.js +15 -16
  419. package/dist/domain/runtimeIdentification.js +48 -47
  420. package/dist/domain/sourceToBundleComparison.js +9 -85
  421. package/dist/domain/sourceToBundleComparisonSchemas.js +17 -42
  422. package/dist/domain/sourceToBundleSignals.js +4 -15
  423. package/dist/domain/staticRuntimeCorrelation.js +37 -49
  424. package/dist/domain/symbolAnalysis.js +10 -19
  425. package/dist/domain/unicodeCodePointOrder.js +12 -0
  426. package/dist/domain/webBundleAnalysis.js +70 -99
  427. package/dist/domain/webBundleAnalyzer.js +2 -4
  428. package/dist/domain/webBundleAnalyzerAst.js +0 -13
  429. package/dist/domain/webBundleAnalyzerInspection.js +26 -52
  430. package/dist/domain/webBundleAnalyzerResult.js +7 -24
  431. package/dist/domain/webCaptureDiff.js +33 -73
  432. package/dist/domain/webCaptureDiffSchemas.js +86 -0
  433. package/dist/domain/webContentArtifact.js +1 -10
  434. package/dist/domain/webMcpDiscovery.js +3 -14
  435. package/dist/domain/webScreenshot.js +58 -34
  436. package/dist/domain/zipPackageFormat.js +7 -0
  437. package/dist/dotnet/ManagedArtifactInspector.js +17 -50
  438. package/dist/dotnet/ManagedMemberInspector.js +27 -58
  439. package/dist/dotnet/ManagedMemberInspectorCore.js +14 -51
  440. package/dist/dotnet/ManagedMemberInstructionDecoder.js +2 -2
  441. package/dist/dotnet/ManagedMemberRows.js +16 -16
  442. package/dist/dotnet/ManagedMetadataHeaps.js +26 -8
  443. package/dist/dotnet/ManagedMetadataInventory.js +21 -30
  444. package/dist/dotnet/ManagedMetadataInventoryRows.js +57 -63
  445. package/dist/dotnet/ManagedMetadataLayout.js +3 -5
  446. package/dist/dotnet/ManagedMethodBodyReader.js +5 -30
  447. package/dist/dotnet/ManagedNativeBoundaryHelpers.js +19 -49
  448. package/dist/dotnet/ManagedNativeBoundaryInspector.js +13 -41
  449. package/dist/dotnet/ManagedPeReader.js +2 -2
  450. package/dist/dotnet/ManagedStaticProvider.js +13 -71
  451. package/dist/generatedMcpToolCatalog.js +1 -1
  452. package/dist/generatedPackageMetadata.js +1 -1
  453. package/dist/ghidra/GhidraAnalysisProfile.js +3 -8
  454. package/dist/ghidra/GhidraClient.js +4 -12
  455. package/dist/ghidra/GhidraClientWire.js +9 -5
  456. package/dist/ghidra/GhidraDefaults.js +0 -18
  457. package/dist/ghidra/GhidraDiagnostics.js +0 -2
  458. package/dist/ghidra/GhidraDoctor.js +16 -12
  459. package/dist/ghidra/GhidraFunctionValues.js +65 -108
  460. package/dist/ghidra/GhidraInstallation.js +98 -42
  461. package/dist/ghidra/GhidraInventoryValues.js +16 -85
  462. package/dist/ghidra/GhidraLauncher.js +0 -8
  463. package/dist/ghidra/GhidraProvider.js +15 -22
  464. package/dist/ghidra/GhidraProviderCapabilities.js +6 -47
  465. package/dist/ghidra/GhidraRequestQueue.js +6 -30
  466. package/dist/ghidra/GhidraResponseBuffer.js +1 -7
  467. package/dist/ghidra/GhidraSessionValues.js +0 -2
  468. package/dist/ghidra/GhidraTransport.js +4 -7
  469. package/dist/ghidra/protocol.js +2 -2
  470. package/dist/hopper/BridgeLauncher.js +112 -36
  471. package/dist/hopper/HopperAnalysisProfile.js +1 -1
  472. package/dist/hopper/HopperCleanup.js +6 -3
  473. package/dist/hopper/HopperClient.js +4 -7
  474. package/dist/hopper/HopperProcessDiagnostic.js +2 -2
  475. package/dist/hopper/HopperProvider.js +0 -16
  476. package/dist/hopper/HopperRequestQueue.js +21 -40
  477. package/dist/hopper/HopperResponseStream.js +1 -9
  478. package/dist/hopper/HopperSessionValues.js +3 -2
  479. package/dist/hopper/HopperTargetLease.js +119 -0
  480. package/dist/hopper/LinuxPrivateDisplayDiagnostic.js +24 -31
  481. package/dist/hopper/LinuxPrivateDisplayProbe.js +5 -16
  482. package/dist/hopper/protocol.js +6 -4
  483. package/dist/main/reload.js +0 -3
  484. package/dist/main/shutdown.js +1 -1
  485. package/dist/main/state.js +0 -9
  486. package/dist/main/transport.js +0 -5
  487. package/dist/mcpDoctor.js +25 -45
  488. package/dist/native/CommandRunner.js +18 -25
  489. package/dist/native/NativeMacOSProvider.js +13 -38
  490. package/dist/native/NativeMachoInspection.js +1 -1
  491. package/dist/process/BoundedFileBytes.js +17 -0
  492. package/dist/process/ExecFileOutput.js +11 -0
  493. package/dist/process/PendingOperations.js +8 -6
  494. package/dist/process/ProcessOwnership.js +3 -2
  495. package/dist/process/ProcessOwnershipObservation.js +0 -1
  496. package/dist/process/ProviderProcess.js +7 -28
  497. package/dist/reference/ReferenceSourceReader.js +8 -24
  498. package/dist/reference/ReferenceSourceReaderEntries.js +11 -39
  499. package/dist/reference/ReferenceSourceReaderFile.js +13 -31
  500. package/dist/reference/ReferenceSourceReaderPaths.js +3 -18
  501. package/dist/reference/ReferenceSourceReaderValidate.js +3 -6
  502. package/dist/replay/JavaScriptReplayWorker.js +3 -5
  503. package/dist/replay/LinuxJavaScriptReplayRunner.js +33 -29
  504. package/dist/replay/LinuxJavaScriptReplaySandbox.js +0 -19
  505. package/dist/replay/LinuxRuntimeClosure.js +1 -3
  506. package/dist/replay/ReplayOutcome.js +1 -3
  507. package/dist/replay/ReplayProcessLifecycle.js +32 -7
  508. package/dist/replay/ReplaySeccompFile.js +29 -0
  509. package/dist/replay/ReplayWorkerProtocol.js +0 -2
  510. package/dist/replay/SystemJavaScriptReplayHost.js +45 -74
  511. package/dist/server/ProcessCaptureElicitation.js +4 -8
  512. package/dist/server/createServer.js +6 -44
  513. package/dist/server/promptCompletion.js +37 -61
  514. package/dist/server/recordDerivedEvidence.js +1 -1
  515. package/dist/server/registerApplicationTools/characterization.js +4 -8
  516. package/dist/server/registerApplicationTools/compareExportShapes.js +5 -10
  517. package/dist/server/registerApplicationTools/compareSourceToBundle.js +6 -10
  518. package/dist/server/registerApplicationTools/compareVersions.js +5 -10
  519. package/dist/server/registerApplicationTools/controlledReplay.js +3 -5
  520. package/dist/server/registerApplicationTools/coverage.js +6 -71
  521. package/dist/server/registerApplicationTools/helpers.js +1 -13
  522. package/dist/server/registerApplicationTools/obligationLedger.js +3 -2
  523. package/dist/server/registerApplicationTools/traceFeature.js +5 -9
  524. package/dist/server/registerApplicationTools/traceSemantics.js +5 -8
  525. package/dist/server/registerApplicationTools.js +0 -2
  526. package/dist/server/registerArtifactComparisonTool.js +23 -27
  527. package/dist/server/registerBrowserScenarioTool.js +4 -4
  528. package/dist/server/registerBrowserTools.js +5 -8
  529. package/dist/server/registerBundleComparisonTool.js +5 -7
  530. package/dist/server/registerCloseLifecycleTool.js +2 -16
  531. package/dist/server/registerElectronTools.js +10 -29
  532. package/dist/server/registerEnhancedTools.js +10 -11
  533. package/dist/server/registerEvidenceTools.js +15 -22
  534. package/dist/server/registerFunctionComparisonTool.js +30 -25
  535. package/dist/server/registerInvestigationTools/helpers.js +3 -32
  536. package/dist/server/registerInvestigationTools.js +20 -116
  537. package/dist/server/registerJavaScriptRuntimeObservationTools.js +6 -4
  538. package/dist/server/registerManagedWorkflowTools/compareManagedMembers.js +15 -17
  539. package/dist/server/registerManagedWorkflowTools/evidence.js +19 -35
  540. package/dist/server/registerManagedWorkflowTools/importManagedReconstruction.js +3 -8
  541. package/dist/server/registerManagedWorkflowTools/planManagedRuntimeCorrelation.js +3 -8
  542. package/dist/server/registerManagedWorkflowTools/projectManagedApplicationGraph.js +10 -14
  543. package/dist/server/registerManagedWorkflowTools/verifyManagedNativeBoundaries.js +9 -15
  544. package/dist/server/registerOfficialTools.js +1 -43
  545. package/dist/server/registerProcessComparisonTool.js +33 -23
  546. package/dist/server/registerPrompts.js +19 -17
  547. package/dist/server/registerSessionRecordTools.js +10 -156
  548. package/dist/server/registerSessionStatusTool.js +6 -69
  549. package/dist/server/registerSessionTools.js +10 -51
  550. package/dist/server/sessionAvailabilityPolicy.js +0 -2
  551. package/dist/server/sessionEvidence.js +9 -15
  552. package/dist/server/sessionToolPolicies.js +0 -8
  553. package/dist/server/toolResult.js +14 -50
  554. package/dist/serverIdentity.js +0 -20
  555. package/install.sh +1 -1
  556. package/package.json +11 -7
  557. package/scripts/electron-active-hook.cjs +23 -55
  558. package/scripts/hopper-demo-x11.py +13 -32
  559. package/skills/reverse-engineer-anything/SKILL.md +47 -12
  560. package/skills/reverse-engineer-anything/references/evidence-workflows.md +6 -4
  561. package/skills/reverse-engineer-anything/references/javascript-applications.md +13 -13
  562. package/skills/reverse-engineer-anything/references/native-and-artifacts.md +12 -8
  563. package/dist/application/ApplicationWorkflowEvidenceResolver.js +0 -188
  564. package/dist/application/BoundedJsonFiles.js +0 -86
  565. package/dist/application/CrossVersionInventory.js +0 -129
  566. package/dist/application/CrossVersionInvestigation.js +0 -301
  567. package/dist/application/CrossVersionInvestigationCollections.js +0 -23
  568. package/dist/application/CrossVersionInvestigationEvidence.js +0 -64
  569. package/dist/application/CrossVersionInvestigationReplay.js +0 -170
  570. package/dist/application/DeferredFileAuthorization.js +0 -61
  571. package/dist/application/DoctorProjection.js +0 -43
  572. package/dist/application/EnhancedToolPagination.js +0 -22
  573. package/dist/application/EvidenceReferenceResolver.js +0 -26
  574. package/dist/application/InvestigationWorkspaceStore.js +0 -204
  575. package/dist/application/ProcessPairedExperiment.js +0 -72
  576. package/dist/application/ReconstructionCoverageWorkspaceStore.js +0 -31
  577. package/dist/application/ReconstructionReadinessService.js +0 -48
  578. package/dist/cliInvestigationCommands.js +0 -173
  579. package/dist/domain/boundedCartesianProjection.js +0 -15
  580. package/dist/domain/investigationWorkspace.js +0 -347
  581. package/dist/domain/jsonLimits.js +0 -26
  582. package/dist/domain/knownPageCoverage.js +0 -29
  583. package/dist/domain/processPairedExperiment.js +0 -128
  584. package/dist/server/javascriptApplicationResult.js +0 -106
  585. package/dist/server/permissionFailure.js +0 -12
  586. package/dist/server/registerApplicationTools/readiness.js +0 -50
  587. package/dist/server/registerEvidenceResources.js +0 -315
  588. package/dist/server/registerJavaScriptApplicationGraphResource.js +0 -65
  589. package/dist/server/registerReconstructionObligationLedgerResource.js +0 -32
  590. package/dist/server/registerReconstructionReadinessResource.js +0 -32
@@ -10,9 +10,9 @@ import { toCallToolResult } from "./toolResult.js";
10
10
  /** Register composed workflows against the same port as direct bridge tools. */
11
11
  // oxlint-disable-next-line max-lines-per-function -- direct SDK calls retain each schema-handler type correlation.
12
12
  export const registerEnhancedTools = (server, analysis, options) => {
13
- const [swiftClasses, objcClasses, objcProtocols, batchDecompile, callGraph, swiftTypes, xrefsToName, binaryOverview, analyzeFunction, inspectNativeApi, traceFeature, codeForString, traceCallPath,] = ENHANCED_TOOL_CONTRACTS;
14
- server.registerTool(swiftClasses.name, toolRegistrationOptions(swiftClasses), (input, context) => executeEnhancedTool(analysis, options, swiftClasses, {
15
- validatedCall: { name: "swift_classes", input },
13
+ const [nativeDispatchMetadata, objcClasses, objcProtocols, batchDecompile, callGraph, swiftTypes, xrefsToName, binaryOverview, analyzeFunction, inspectNativeApi, traceFeature, codeForString, traceCallPath, traceNativeUiAction,] = ENHANCED_TOOL_CONTRACTS;
14
+ server.registerTool(nativeDispatchMetadata.name, toolRegistrationOptions(nativeDispatchMetadata), (input, context) => executeEnhancedTool(analysis, options, nativeDispatchMetadata, {
15
+ validatedCall: { name: "inspect_native_dispatch_metadata", input },
16
16
  context,
17
17
  }));
18
18
  server.registerTool(objcClasses.name, toolRegistrationOptions(objcClasses), (input, context) => executeEnhancedTool(analysis, options, objcClasses, {
@@ -63,6 +63,10 @@ export const registerEnhancedTools = (server, analysis, options) => {
63
63
  validatedCall: { name: "trace_call_path", input },
64
64
  context,
65
65
  }));
66
+ server.registerTool(traceNativeUiAction.name, toolRegistrationOptions(traceNativeUiAction), (input, context) => executeEnhancedTool(analysis, options, traceNativeUiAction, {
67
+ validatedCall: { name: "trace_native_ui_action", input },
68
+ context,
69
+ }));
66
70
  };
67
71
  const executeEnhancedTool = async (analysis, registration, contract, request) => {
68
72
  const { validatedCall, context } = request;
@@ -111,28 +115,24 @@ const executeEnhancedTool = async (analysis, registration, contract, request) =>
111
115
  return toCallToolResult(recorded, contract);
112
116
  const unknowns = recordWorkflowUnknowns({
113
117
  name,
114
- input: parameters,
115
118
  result: result.value,
116
119
  evidenceId: evidence.evidence_id,
117
120
  recordUnknown: registration.recordUnknown,
118
121
  });
119
122
  if (!unknowns.ok)
120
123
  return toCallToolResult(unknowns, contract);
121
- return toCallToolResult({ ok: true, value: evidence }, contract, {
122
- evidenceResourcesAvailable: recorded !== undefined,
123
- });
124
+ return toCallToolResult({ ok: true, value: evidence }, contract);
124
125
  }
125
126
  return toCallToolResult(result, contract);
126
127
  };
127
128
  const jsonParameters = (input) => Object.fromEntries(Object.entries(input).filter((entry) => entry[1] !== undefined));
128
- const recordWorkflowUnknowns = ({ name, input, result, evidenceId, recordUnknown, }) => {
129
+ const recordWorkflowUnknowns = ({ name, result, evidenceId, recordUnknown, }) => {
129
130
  if (![
130
131
  "trace_feature",
131
132
  "find_code_for_string",
132
133
  "trace_call_path",
133
134
  "inspect_native_api",
134
135
  ].includes(name) ||
135
- input.unknown_registry_approved !== true ||
136
136
  recordUnknown === undefined ||
137
137
  typeof result !== "object" ||
138
138
  result === null ||
@@ -143,7 +143,6 @@ const recordWorkflowUnknowns = ({ name, input, result, evidenceId, recordUnknown
143
143
  if (typeof question !== "string")
144
144
  continue;
145
145
  const recorded = recordUnknown({
146
- approved: true,
147
146
  question,
148
147
  severity: "medium",
149
148
  domain: name === "inspect_native_api" ? "native-api" : "control-flow",
@@ -157,7 +156,7 @@ const recordWorkflowUnknowns = ({ name, input, result, evidenceId, recordUnknown
157
156
  operation: name,
158
157
  rationale: name === "inspect_native_api"
159
158
  ? "Confirm the unsupported boundary with a capable provider or ABI probe."
160
- : "Continue with a larger bounded budget.",
159
+ : "Continue with a focused query or another available provider.",
161
160
  },
162
161
  ],
163
162
  relationships: [],
@@ -1,4 +1,4 @@
1
- import { AnalysisProtocolError, PermissionRequiredError, } from "../domain/errors.js";
1
+ import { projectPermissionFailure } from "../application/PermissionFailure.js";
2
2
  import { createEvidence } from "../domain/evidence.js";
3
3
  import { jsonObjectSchema } from "../domain/jsonValue.js";
4
4
  import { err } from "../domain/result.js";
@@ -6,7 +6,8 @@ import { mcpProgressReporter } from "./mcpProgress.js";
6
6
  import { logToolExecution } from "./toolLogging.js";
7
7
  import { toolRegistrationOptions } from "./toolRegistrationOptions.js";
8
8
  import { toCallToolResult } from "./toolResult.js";
9
- /** Register provider-backed contracts that return atomic Evidence v2 observations. */
9
+ import { artifactExtractionPermissionRequest, createArtifactExtractionDestination, } from "../application/ArtifactExtractionDestination.js";
10
+ /** Register provider-backed contracts that return atomic Evidence observations. */
10
11
  export const registerEvidenceTools = (server, analysis, contracts, options) => {
11
12
  for (const contract of contracts) {
12
13
  server.registerTool(contract.name, toolRegistrationOptions(contract), async (input, context) => {
@@ -18,19 +19,21 @@ export const registerEvidenceTools = (server, analysis, contracts, options) => {
18
19
  message: "started",
19
20
  });
20
21
  const parameters = jsonObjectSchema.parse(input);
22
+ const executionParameters = contract.name === "extract_artifact"
23
+ ? {
24
+ ...parameters,
25
+ output_root: createArtifactExtractionDestination(),
26
+ }
27
+ : parameters;
21
28
  if (options.permissionAuthority !== undefined) {
22
- const request = permissionRequest(contract.name, parameters);
29
+ const request = permissionRequest(contract.name, executionParameters);
23
30
  if (request !== undefined) {
24
31
  const authorized = await options.permissionAuthority.authorize(request, contract.name === "extract_artifact" ? "write" : "read");
25
32
  if (!authorized.ok)
26
- return toCallToolResult(err(authorized.error instanceof PermissionRequiredError
27
- ? authorized.error
28
- : new AnalysisProtocolError(authorized.error.message, {
29
- cause: authorized.error,
30
- })), contract);
33
+ return toCallToolResult(err(projectPermissionFailure(authorized.error)), contract);
31
34
  }
32
35
  }
33
- const execution = await logToolExecution(options.logger, contract.name, () => analysis.execute(contract.name, parameters, {
36
+ const execution = await logToolExecution(options.logger, contract.name, () => analysis.execute(contract.name, executionParameters, {
34
37
  signal: context.mcpReq.signal,
35
38
  progress,
36
39
  }));
@@ -61,25 +64,15 @@ export const registerEvidenceTools = (server, analysis, contracts, options) => {
61
64
  const recorded = options.recordEvidence?.(evidence);
62
65
  return recorded !== undefined && !recorded.ok
63
66
  ? toCallToolResult(recorded, contract)
64
- : toCallToolResult({ ok: true, value: evidence }, contract, {
65
- evidenceResourcesAvailable: recorded !== undefined,
66
- });
67
+ : toCallToolResult({ ok: true, value: evidence }, contract);
67
68
  });
68
69
  }
69
70
  };
70
71
  const permissionRequest = (operation, parameters) => {
71
72
  if (operation === "extract_artifact" &&
72
73
  typeof parameters.output_root === "string")
73
- return {
74
- capability: "artifact_extract",
75
- roots: [parameters.output_root],
76
- executables: [],
77
- environment_names: [],
78
- network: "none",
79
- mount: false,
80
- operation_identity: `extract_artifact:${parameters.output_root}`,
81
- };
82
- if (["inventory_artifact", "inspect_artifact"].includes(operation) &&
74
+ return artifactExtractionPermissionRequest();
75
+ if (operation === "inspect_artifact" &&
83
76
  parameters.native_mount_approved === true)
84
77
  return {
85
78
  capability: "native_mount",
@@ -1,40 +1,47 @@
1
1
  import { SESSION_TOOL_CONTRACTS } from "../contracts/toolContracts.js";
2
- import { createEvidence } from "../domain/evidence.js";
2
+ import { createEvidence, parseEvidence, } from "../domain/evidence.js";
3
+ import { EvidenceIntegrityError } from "../domain/errors.js";
4
+ import { err } from "../domain/result.js";
3
5
  import { compareFunctions } from "../domain/functionComparison.js";
4
6
  import { jsonValueSchema } from "../domain/jsonValue.js";
5
7
  import { recordDerivedEvidence } from "./recordDerivedEvidence.js";
8
+ import { recordSessionEvidenceSources } from "./sessionEvidence.js";
6
9
  import { runDerivedOperation } from "./runDerivedOperation.js";
7
- import { resolveSessionEvidenceIds } from "./sessionEvidence.js";
8
10
  import { FUNCTION_COMPARISON_PROVIDER } from "./sessionToolPolicies.js";
9
11
  import { toolRegistrationOptions } from "./toolRegistrationOptions.js";
10
12
  import { toCallToolResult } from "./toolResult.js";
11
13
  /** Register explicit Evidence-backed function comparison. */
12
14
  export const registerFunctionComparisonTool = (server, session, contract) => {
13
15
  server.registerTool(contract.name, toolRegistrationOptions(contract), async (input, context) => {
14
- const expected = {
15
- operation: "analyze_function",
16
- predicate: "rea.analysis/v2",
17
- };
18
- const left = resolveSessionEvidenceIds(session, input.left_evidence_ids, expected);
19
- if (!left.ok)
20
- return toCallToolResult(left, contract);
21
- const right = resolveSessionEvidenceIds(session, input.right_evidence_ids, expected);
22
- if (!right.ok)
23
- return toCallToolResult(right, contract);
24
- const leftIds = left.value.map(({ evidence_id: id }) => id);
25
- const rightIds = right.value.map(({ evidence_id: id }) => id);
26
- const computed = await runDerivedOperation(context, contract.name, () => compareFunctions(left.value, right.value, input.offset, input.limit));
16
+ let leftEvidence;
17
+ let rightEvidence;
18
+ try {
19
+ leftEvidence = parseEvidence(input.left);
20
+ rightEvidence = parseEvidence(input.right);
21
+ }
22
+ catch (cause) {
23
+ return toCallToolResult(err(new EvidenceIntegrityError(cause instanceof Error ? cause.message : "Invalid Evidence")), contract);
24
+ }
25
+ if (leftEvidence.operation !== "analyze_function" ||
26
+ rightEvidence.operation !== "analyze_function" ||
27
+ leftEvidence.predicate_type !== "rea.analysis" ||
28
+ rightEvidence.predicate_type !== "rea.analysis")
29
+ return toCallToolResult(err(new EvidenceIntegrityError("Expected analyze_function Evidence")), contract);
30
+ const leftIds = [leftEvidence.evidence_id];
31
+ const rightIds = [rightEvidence.evidence_id];
32
+ const computed = await runDerivedOperation(context, contract.name, () => compareFunctions(leftEvidence, rightEvidence));
27
33
  if (!computed.ok)
28
34
  return toCallToolResult(computed, contract);
29
35
  const comparison = computed.value;
36
+ const recordedSources = recordSessionEvidenceSources((evidence) => session.recordEvidence(evidence), [leftEvidence, rightEvidence]);
37
+ if (!recordedSources.ok)
38
+ return toCallToolResult(recordedSources, contract);
30
39
  const evidence = createEvidence(undefined, FUNCTION_COMPARISON_PROVIDER, {
31
- predicateType: "rea.function-comparison/v1",
40
+ predicateType: "rea.function-comparison",
32
41
  operation: contract.name,
33
42
  parameters: {
34
- left_evidence_ids: leftIds,
35
- right_evidence_ids: rightIds,
36
- offset: input.offset,
37
- limit: input.limit,
43
+ left_evidence_id: leftEvidence.evidence_id,
44
+ right_evidence_id: rightEvidence.evidence_id,
38
45
  },
39
46
  result: jsonValueSchema.parse(comparison),
40
47
  confidence: "derived",
@@ -43,7 +50,6 @@ export const registerFunctionComparisonTool = (server, session, contract) => {
43
50
  evidenceLinks: [...leftIds, ...rightIds],
44
51
  });
45
52
  const recorded = recordDerivedEvidence(session, evidence, functionUnknownInput({
46
- approved: input.unknown_registry_approved,
47
53
  status: comparison.status,
48
54
  leftIds,
49
55
  rightIds,
@@ -51,11 +57,10 @@ export const registerFunctionComparisonTool = (server, session, contract) => {
51
57
  return toCallToolResult(recorded, contract);
52
58
  });
53
59
  };
54
- const functionUnknownInput = ({ approved, status, leftIds, rightIds, }) => {
55
- if (approved !== true || status === "unchanged")
60
+ const functionUnknownInput = ({ status, leftIds, rightIds, }) => {
61
+ if (status === "unchanged")
56
62
  return undefined;
57
63
  return {
58
- approved: true,
59
64
  question: `Function comparison is ${status}`,
60
65
  severity: status === "changed" ? "medium" : "high",
61
66
  domain: "function-comparison",
@@ -67,7 +72,7 @@ const functionUnknownInput = ({ approved, status, leftIds, rightIds, }) => {
67
72
  recommended_probes: [
68
73
  {
69
74
  operation: "analyze_function",
70
- rationale: "Capture complete dossiers for both functions under the same target context and analysis limits.",
75
+ rationale: "Capture complete dossiers for both functions under the same target context.",
71
76
  },
72
77
  ],
73
78
  relationships: [],
@@ -1,22 +1,12 @@
1
1
  import { EvidenceIntegrityError, } from "../../domain/errors.js";
2
2
  import { err, ok } from "../../domain/result.js";
3
3
  import { recordDerivedEvidence } from "../recordDerivedEvidence.js";
4
- import { evaluateReconstructionClosure } from "../../domain/reconstructionCoverage.js";
5
- import { AnalysisInputError } from "../../domain/errors.js";
6
- /** Build the execution context passed to cross-version investigation. */
7
- export const investigationContext = ({ session, signal, inputRoots, integrityContinueEnabled, progress, }) => ({
8
- session,
9
- signal,
10
- inputRoots,
11
- integrityContinueEnabled,
12
- ...(progress === undefined ? {} : { progress }),
13
- });
14
4
  export const isIncomplete = (status) => status === "unknown" || status === "truncated";
15
5
  export const comparisonClosure = (comparisons) => uniqueIds(comparisons.flatMap((evidence) => [
16
6
  evidence.evidence_id,
17
7
  ...evidence.evidence_links,
18
8
  ]));
19
- export const functionEvidenceIds = (groups) => uniqueIds(groups.flatMap((group) => (Array.isArray(group) ? group : [group]).map(({ evidence_id: id }) => id)));
9
+ export const functionEvidenceIds = (records) => uniqueIds(records.map(({ evidence_id }) => evidence_id));
20
10
  const uniqueIds = (ids) => [...new Set(ids)].sort((left, right) => left.localeCompare(right));
21
11
  export const evidenceClosure = (session, seedIds) => {
22
12
  const records = new Map(session
@@ -36,30 +26,11 @@ export const evidenceClosure = (session, seedIds) => {
36
26
  }
37
27
  return ok(uniqueIds([...visited]));
38
28
  };
39
- /** Verify a retained coverage boundary before reconstruction evidence is derived. */
40
- export const verifyCoverageReadiness = (session, coverage) => {
41
- if (coverage === undefined)
42
- return ok(null);
43
- const workspace = session.reconstructionCoverageWorkspace(coverage.workspace_id, coverage.revision);
44
- if (workspace === undefined ||
45
- workspace.revision_sha256 !== coverage.revision_sha256)
46
- return err(new EvidenceIntegrityError("The requested reconstruction coverage revision is not retained by this session"));
47
- try {
48
- const result = evaluateReconstructionClosure(workspace, coverage.boundary_id, Date.now());
49
- return result.status === "ready"
50
- ? ok(null)
51
- : err(new EvidenceIntegrityError(`Reconstruction coverage boundary is ${result.status}; readiness requires ready`));
52
- }
53
- catch (cause) {
54
- return err(new AnalysisInputError("verify_reconstruction", { cause }));
55
- }
56
- };
57
- export const recordWorkflowEvidence = (...[session, evidence, approved, unresolved, input]) => {
58
- if (approved !== true || !unresolved) {
29
+ export const recordWorkflowEvidence = (...[session, evidence, unresolved, input]) => {
30
+ if (!unresolved) {
59
31
  return recordDerivedEvidence(session, evidence, undefined);
60
32
  }
61
33
  return recordDerivedEvidence(session, evidence, {
62
- approved: true,
63
34
  question: input.question,
64
35
  severity: "high",
65
36
  domain: input.domain,
@@ -1,54 +1,37 @@
1
- import { runCrossVersionInvestigationValidated } from "../application/CrossVersionInvestigation.js";
2
- import { authorizeFileReadWithDeferredWrite, authorizeRootPermission, } from "../application/DeferredFileAuthorization.js";
3
1
  import { SESSION_TOOL_CONTRACTS } from "../contracts/toolContracts.js";
4
2
  import { buildCallPath } from "../domain/callPath.js";
5
- import { changedBehaviorInputSchema, changedBehaviorResultSchema, findChangedBehavior, } from "../domain/changedBehavior.js";
6
- import {} from "../domain/errors.js";
3
+ import { findChangedBehavior } from "../domain/changedBehavior.js";
7
4
  import { createEvidence } from "../domain/evidence.js";
8
5
  import { jsonValueSchema } from "../domain/jsonValue.js";
9
6
  import { verifyReconstruction } from "../domain/reconstructionVerification.js";
10
7
  import { correlateStaticAndRuntime } from "../domain/staticRuntimeCorrelation.js";
11
- import { mcpProgressReporter } from "./mcpProgress.js";
12
- import { comparisonClosure, evidenceClosure, functionEvidenceIds, investigationContext, isIncomplete, recordWorkflowEvidence, verifyCoverageReadiness, } from "./registerInvestigationTools/helpers.js";
13
- import { runDerivedOperation, } from "./runDerivedOperation.js";
8
+ import { comparisonClosure, evidenceClosure, functionEvidenceIds, isIncomplete, recordWorkflowEvidence, } from "./registerInvestigationTools/helpers.js";
9
+ import { runDerivedOperation } from "./runDerivedOperation.js";
14
10
  import { CALL_PATH_PROVIDER, CHANGED_BEHAVIOR_PROVIDER, RECONSTRUCTION_PROVIDER, STATIC_RUNTIME_PROVIDER, } from "./sessionToolPolicies.js";
15
11
  import { toolRegistrationOptions } from "./toolRegistrationOptions.js";
16
12
  import { toCallToolResult } from "./toolResult.js";
17
13
  /** Register Evidence-composed differential investigation workflows. */
18
- export const registerInvestigationTools = (server, session, contracts, policies) => {
19
- registerChangedBehavior(server, session, contracts[0], policies);
14
+ export const registerInvestigationTools = (server, session, contracts) => {
15
+ registerChangedBehavior(server, session, contracts[0]);
20
16
  registerCallPath(server, session, contracts[1]);
21
17
  registerStaticRuntime(server, session, contracts[2]);
22
18
  registerReconstruction(server, session, contracts[3]);
23
19
  };
24
- const registerChangedBehavior = (server, session, contract, policies) => {
25
- server.registerTool(contract.name, contractOptions(contract), async (input, context) => {
26
- const investigationRun = input.investigation_run;
27
- if (investigationRun !== undefined)
28
- return runAutomaticInvestigation({
29
- server,
30
- session,
31
- contract,
32
- policies,
33
- investigationRun,
34
- unknownRegistryApproved: input.unknown_registry_approved,
35
- context,
36
- });
20
+ const registerChangedBehavior = (server, session, contract) => {
21
+ server.registerTool(contract.name, toolRegistrationOptions(contract), async (input, context) => {
37
22
  const closure = evidenceClosure(session, comparisonClosure(input.comparisons));
38
23
  if (!closure.ok)
39
24
  return toCallToolResult(closure, contract);
40
25
  const links = closure.value;
41
- const computed = await runDerivedOperation(context, contract.name, () => findChangedBehavior(input.comparisons, input.offset, input.limit));
26
+ const computed = await runDerivedOperation(context, contract.name, () => findChangedBehavior(input.comparisons));
42
27
  if (!computed.ok)
43
28
  return toCallToolResult(computed, contract);
44
29
  const result = computed.value;
45
30
  const evidence = createEvidence(undefined, CHANGED_BEHAVIOR_PROVIDER, {
46
- predicateType: "rea.changed-behavior/v1",
31
+ predicateType: "rea.changed-behavior",
47
32
  operation: contract.name,
48
33
  parameters: {
49
34
  comparison_evidence_ids: input.comparisons.map(({ evidence_id: id }) => id),
50
- offset: input.offset,
51
- limit: input.limit,
52
35
  },
53
36
  result: jsonValueSchema.parse(result),
54
37
  confidence: "derived",
@@ -56,7 +39,7 @@ const registerChangedBehavior = (server, session, contract, policies) => {
56
39
  limitations: result.limitations,
57
40
  evidenceLinks: links,
58
41
  });
59
- const recorded = recordWorkflowEvidence(session, evidence, input.unknown_registry_approved, isIncomplete(result.behavior_status), {
42
+ const recorded = recordWorkflowEvidence(session, evidence, isIncomplete(result.behavior_status), {
60
43
  question: "Did both versions behave the same under a complete controlled replay?",
61
44
  domain: "changed-behavior",
62
45
  requiredAuthority: "controlled-replay",
@@ -71,75 +54,8 @@ const registerChangedBehavior = (server, session, contract, policies) => {
71
54
  return toCallToolResult(recorded, contract);
72
55
  });
73
56
  };
74
- const runAutomaticInvestigation = async (input) => {
75
- const { policies, investigationRun, contract, session } = input;
76
- const progress = mcpProgressReporter(input.context);
77
- let workspaceAuthorization;
78
- let authorizeInputRead;
79
- if (policies.permissionAuthority !== undefined) {
80
- const authority = policies.permissionAuthority;
81
- const authorizedWorkspace = await authorizeFileReadWithDeferredWrite(authority, {
82
- path: investigationRun.workspace_path,
83
- readCapability: "investigation_workspace_read",
84
- writeCapability: "investigation_workspace_write",
85
- operation: contract.name,
86
- });
87
- if (!authorizedWorkspace.ok)
88
- return toCallToolResult(authorizedWorkspace, contract);
89
- workspaceAuthorization = authorizedWorkspace.value;
90
- authorizeInputRead = () => authorizeRootPermission(authority, {
91
- capability: "investigation_input",
92
- roots: [investigationRun.left_path, investigationRun.right_path],
93
- access: "read",
94
- operation: contract.name,
95
- });
96
- }
97
- const investigated = await runCrossVersionInvestigationValidated(investigationRun, policies.evidenceFiles, {
98
- ...investigationContext({
99
- session,
100
- signal: input.context.mcpReq.signal,
101
- inputRoots: policies.inputRoots,
102
- integrityContinueEnabled: policies.integrityContinueEnabled?.() ?? false,
103
- progress,
104
- }),
105
- ...(workspaceAuthorization === undefined
106
- ? {}
107
- : { authorizeWorkspaceWrite: workspaceAuthorization.authorizeWrite }),
108
- ...(authorizeInputRead === undefined ? {} : { authorizeInputRead }),
109
- });
110
- if (!investigated.ok)
111
- return toCallToolResult(investigated, contract);
112
- const workspace = investigated.value.workspace;
113
- session.retainInvestigationWorkspace(workspace);
114
- const result = changedBehaviorResultSchema.parse(investigated.value.evidence.normalized_result);
115
- const toolResult = toCallToolResult(recordWorkflowEvidence(session, investigated.value.evidence, input.unknownRegistryApproved, isIncomplete(result.behavior_status), {
116
- question: `Automatic changed behavior run ${result.investigation_run?.run_id ?? "unknown"} remains ${result.behavior_status}`,
117
- domain: "changed-behavior",
118
- requiredAuthority: "controlled-replay",
119
- requiredConfidence: "observed",
120
- probes: [
121
- {
122
- operation: "capture_process_scenario",
123
- rationale: "Capture both versions under the same bounded scenario and environment.",
124
- },
125
- ],
126
- }), contract);
127
- return {
128
- ...toolResult,
129
- content: [
130
- ...toolResult.content,
131
- {
132
- type: "resource_link",
133
- uri: `rea://workspace/${workspace.workspace_id}/revision/${String(workspace.revision)}`,
134
- name: `${workspace.workspace_id} revision ${String(workspace.revision)}`,
135
- description: "Immutable CAS-linked investigation workspace revision",
136
- mimeType: "application/json",
137
- },
138
- ],
139
- };
140
- };
141
57
  const registerCallPath = (server, session, contract) => {
142
- server.registerTool(contract.name, contractOptions(contract), async (input, context) => {
58
+ server.registerTool(contract.name, toolRegistrationOptions(contract), async (input, context) => {
143
59
  const closure = evidenceClosure(session, functionEvidenceIds(input.functions));
144
60
  if (!closure.ok)
145
61
  return toCallToolResult(closure, contract);
@@ -149,15 +65,11 @@ const registerCallPath = (server, session, contract) => {
149
65
  return toCallToolResult(computed, contract);
150
66
  const result = computed.value;
151
67
  const evidence = createEvidence(undefined, CALL_PATH_PROVIDER, {
152
- predicateType: "rea.call-path/v1",
68
+ predicateType: "rea.call-path",
153
69
  operation: contract.name,
154
70
  parameters: {
155
71
  start: input.start.address,
156
72
  goal: input.goal.address,
157
- max_depth: input.max_depth,
158
- max_paths: input.max_paths,
159
- offset: input.offset,
160
- limit: input.limit,
161
73
  },
162
74
  result: jsonValueSchema.parse(result),
163
75
  confidence: "derived",
@@ -165,7 +77,7 @@ const registerCallPath = (server, session, contract) => {
165
77
  limitations: result.limitations,
166
78
  evidenceLinks: links,
167
79
  });
168
- const recorded = recordWorkflowEvidence(session, evidence, input.unknown_registry_approved, result.status === "unknown" || result.status === "truncated", {
80
+ const recorded = recordWorkflowEvidence(session, evidence, result.status === "unknown", {
169
81
  question: "Can the requested call path be established from complete analysis?",
170
82
  domain: "call-path",
171
83
  requiredAuthority: "shipped-artifact",
@@ -181,7 +93,7 @@ const registerCallPath = (server, session, contract) => {
181
93
  });
182
94
  };
183
95
  const registerStaticRuntime = (server, session, contract) => {
184
- server.registerTool(contract.name, contractOptions(contract), async (input, context) => {
96
+ server.registerTool(contract.name, toolRegistrationOptions(contract), async (input, context) => {
185
97
  const closure = evidenceClosure(session, comparisonClosure([
186
98
  ...input.static_comparisons,
187
99
  ...input.runtime_comparisons,
@@ -194,12 +106,10 @@ const registerStaticRuntime = (server, session, contract) => {
194
106
  return toCallToolResult(computed, contract);
195
107
  const result = computed.value;
196
108
  const evidence = createEvidence(undefined, STATIC_RUNTIME_PROVIDER, {
197
- predicateType: "rea.static-runtime-correlation/v1",
109
+ predicateType: "rea.static-runtime-correlation",
198
110
  operation: contract.name,
199
111
  parameters: {
200
112
  mapping_count: input.mappings.length,
201
- offset: input.offset,
202
- limit: input.limit,
203
113
  },
204
114
  result: jsonValueSchema.parse(result),
205
115
  confidence: "inferred",
@@ -207,7 +117,7 @@ const registerStaticRuntime = (server, session, contract) => {
207
117
  limitations: result.limitations,
208
118
  evidenceLinks: links,
209
119
  });
210
- return toCallToolResult(recordWorkflowEvidence(session, evidence, input.unknown_registry_approved, result.status === "unknown" || result.status === "truncated", {
120
+ return toCallToolResult(recordWorkflowEvidence(session, evidence, result.status === "unknown" || result.status === "truncated", {
211
121
  question: "Does runtime behavior match the available static analysis?",
212
122
  domain: "static-runtime-correlation",
213
123
  requiredAuthority: null,
@@ -222,12 +132,9 @@ const registerStaticRuntime = (server, session, contract) => {
222
132
  });
223
133
  };
224
134
  const registerReconstruction = (server, session, contract) => {
225
- server.registerTool(contract.name, contractOptions(contract), async (input, context) => {
226
- const coverage = verifyCoverageReadiness(session, input.coverage);
227
- if (!coverage.ok)
228
- return toCallToolResult(coverage, contract);
135
+ server.registerTool(contract.name, toolRegistrationOptions(contract), async (input, context) => {
229
136
  const owned = session.exportEvidenceBundle();
230
- const computed = await runDerivedOperation(context, contract.name, () => verifyReconstruction(input.specification, owned, input.offset, input.limit));
137
+ const computed = await runDerivedOperation(context, contract.name, () => verifyReconstruction(input.specification, owned));
231
138
  if (!computed.ok)
232
139
  return toCallToolResult(computed, contract);
233
140
  const result = computed.value;
@@ -236,13 +143,11 @@ const registerReconstruction = (server, session, contract) => {
236
143
  return toCallToolResult(closure, contract);
237
144
  const links = closure.value;
238
145
  const evidence = createEvidence(undefined, RECONSTRUCTION_PROVIDER, {
239
- predicateType: "rea.reconstruction-verification/v1",
146
+ predicateType: "rea.reconstruction-verification",
240
147
  operation: contract.name,
241
148
  parameters: {
242
149
  specification_sha256: result.specification_sha256,
243
150
  claim_ids: input.specification.claims.map(({ claim_id: id }) => id),
244
- offset: input.offset,
245
- limit: input.limit,
246
151
  },
247
152
  result: jsonValueSchema.parse(result),
248
153
  confidence: "derived",
@@ -250,7 +155,7 @@ const registerReconstruction = (server, session, contract) => {
250
155
  limitations: result.limitations,
251
156
  evidenceLinks: links,
252
157
  });
253
- return toCallToolResult(recordWorkflowEvidence(session, evidence, input.unknown_registry_approved, result.status === "unknown", {
158
+ return toCallToolResult(recordWorkflowEvidence(session, evidence, result.status === "unknown", {
254
159
  question: "Does the reconstruction satisfy every declared claim?",
255
160
  domain: "reconstruction-verification",
256
161
  requiredAuthority: null,
@@ -262,4 +167,3 @@ const registerReconstruction = (server, session, contract) => {
262
167
  }), contract);
263
168
  });
264
169
  };
265
- const contractOptions = toolRegistrationOptions;
@@ -1,5 +1,6 @@
1
1
  import { listJavaScriptRuntimeTargets, observeJavaScriptRuntime, } from "../application/JavaScriptRuntimeObservationService.js";
2
2
  import { JAVASCRIPT_RUNTIME_OBSERVATION_TOOL_CONTRACTS } from "../contracts/javascriptRuntimeObservationToolContracts.js";
3
+ import { observeJavaScriptRuntimeInputSchema } from "../domain/javascriptRuntimeObservation.js";
3
4
  import { logToolExecution } from "./toolLogging.js";
4
5
  import { toolRegistrationOptions } from "./toolRegistrationOptions.js";
5
6
  import { toCallToolResult } from "./toolResult.js";
@@ -7,7 +8,10 @@ import { toCallToolResult } from "./toolResult.js";
7
8
  export const registerJavaScriptRuntimeObservationTools = (server, options) => {
8
9
  const [listContract, observeContract] = JAVASCRIPT_RUNTIME_OBSERVATION_TOOL_CONTRACTS;
9
10
  server.registerTool(listContract.name, toolRegistrationOptions(listContract), (input, context) => runRuntimeTool(options, listContract, { input, context }, (parsed, signal) => listJavaScriptRuntimeTargets(options.runtime, options.permissionAuthority, parsed, { signal })));
10
- server.registerTool(observeContract.name, toolRegistrationOptions(observeContract), (input, context) => runRuntimeTool(options, observeContract, { input, context }, (parsed, signal) => observeJavaScriptRuntime(options.runtime, options.permissionAuthority, parsed, { signal })));
11
+ server.registerTool(observeContract.name, toolRegistrationOptions(observeContract), (input, context) => runRuntimeTool(options, observeContract, { input, context }, async (parsed, signal) => {
12
+ const request = observeJavaScriptRuntimeInputSchema.parse(parsed);
13
+ return observeJavaScriptRuntime(options.runtime, options.permissionAuthority, request, { signal });
14
+ }));
11
15
  };
12
16
  const runRuntimeTool = async (options, contract, request, execute) => {
13
17
  const { input, context } = request;
@@ -17,7 +21,5 @@ const runRuntimeTool = async (options, contract, request, execute) => {
17
21
  const recorded = options.recordEvidence?.(result.value);
18
22
  return recorded !== undefined && !recorded.ok
19
23
  ? toCallToolResult(recorded, contract)
20
- : toCallToolResult({ ok: true, value: result.value }, contract, {
21
- evidenceResourcesAvailable: recorded !== undefined,
22
- });
24
+ : toCallToolResult({ ok: true, value: result.value }, contract);
23
25
  };