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
@@ -1,13 +1,38 @@
1
+ import { temporaryFilterHandle } from "./ReplaySeccompFile.js";
1
2
  import { constants } from "node:fs";
2
- import { mkdtemp, open, readFile, realpath, rm, stat, writeFile, } from "node:fs/promises";
3
- import { tmpdir } from "node:os";
4
- import { join } from "node:path";
3
+ import { open, readFile, realpath, stat } from "node:fs/promises";
5
4
  import { fileURLToPath } from "node:url";
6
5
  import { spawn } from "node:child_process";
7
6
  import { digestBytes } from "../application/JavaScriptReplayPlanning.js";
8
- import { buildLinuxX64ReplaySeccomp, linuxX64ReplaySeccompDigest, } from "./LinuxSeccompPolicy.js";
7
+ import { linuxX64ReplaySeccompDigest } from "./LinuxSeccompPolicy.js";
9
8
  import { resolveLinuxRuntimeClosure } from "./LinuxRuntimeClosure.js";
10
- const VERSION_OUTPUT_LIMIT = 16 * 1024;
9
+ import { readBoundedFileBytes } from "../process/BoundedFileBytes.js";
10
+ const bubblewrapProbeArguments = (command) => [
11
+ "--unshare-all",
12
+ "--unshare-user",
13
+ "--disable-userns",
14
+ "--new-session",
15
+ "--die-with-parent",
16
+ "--cap-drop",
17
+ "ALL",
18
+ "--ro-bind",
19
+ "/usr",
20
+ "/usr",
21
+ "--ro-bind",
22
+ "/lib",
23
+ "/lib",
24
+ "--ro-bind-try",
25
+ "/lib64",
26
+ "/lib64",
27
+ "--proc",
28
+ "/proc",
29
+ "--dev",
30
+ "/dev",
31
+ "--seccomp",
32
+ "3",
33
+ "--",
34
+ ...command,
35
+ ];
11
36
  /** Production planning host for descriptor-backed reads and fail-closed probes. */
12
37
  export class SystemJavaScriptReplayHost {
13
38
  async readSource(path, maximumBytes) {
@@ -17,7 +42,9 @@ export class SystemJavaScriptReplayHost {
17
42
  const metadata = await handle.stat();
18
43
  if (!metadata.isFile() || metadata.size > maximumBytes)
19
44
  throw new RangeError(`Replay source exceeds its declared limit: ${canonicalPath}`);
20
- const bytes = await handle.readFile();
45
+ const bytes = await readBoundedFileBytes(handle, maximumBytes);
46
+ if (bytes === undefined)
47
+ throw new RangeError(`Replay source exceeds its declared limit: ${canonicalPath}`);
21
48
  return { canonicalPath, bytes };
22
49
  }
23
50
  finally {
@@ -31,7 +58,7 @@ export class SystemJavaScriptReplayHost {
31
58
  throw new TypeError(`Replay executable is not a file: ${canonicalPath}`);
32
59
  const [bytes, version] = await Promise.all([
33
60
  readFile(canonicalPath),
34
- capture(canonicalPath, versionArguments, VERSION_OUTPUT_LIMIT),
61
+ capture(canonicalPath, versionArguments),
35
62
  ]);
36
63
  return {
37
64
  path: canonicalPath,
@@ -57,65 +84,14 @@ export class SystemJavaScriptReplayHost {
57
84
  if ((await readFile("/sys/fs/cgroup/cgroup.controllers", "utf8")).trim()
58
85
  .length === 0)
59
86
  throw new TypeError("Controlled replay requires delegated cgroup v2");
60
- const directory = await mkdtemp(join(tmpdir(), "rea-replay-probe-"));
61
- const filterPath = join(directory, "seccomp.bpf");
62
- await writeFile(filterPath, buildLinuxX64ReplaySeccomp(), { mode: 0o600 });
63
- const filter = await open(filterPath, "r");
87
+ const filter = await temporaryFilterHandle();
64
88
  try {
65
- await run(policy.bubblewrapPath, [
66
- "--unshare-all",
67
- "--unshare-user",
68
- "--disable-userns",
69
- "--new-session",
70
- "--die-with-parent",
71
- "--cap-drop",
72
- "ALL",
73
- "--ro-bind",
74
- "/usr",
75
- "/usr",
76
- "--ro-bind",
77
- "/lib",
78
- "/lib",
79
- "--ro-bind-try",
80
- "/lib64",
81
- "/lib64",
82
- "--proc",
83
- "/proc",
84
- "--dev",
85
- "/dev",
86
- "--seccomp",
87
- "3",
88
- "--",
89
- "/usr/bin/true",
90
- ], ["ignore", "pipe", "pipe", filter.fd]);
91
- await runExpectFailure(policy.bubblewrapPath, [
92
- "--unshare-all",
93
- "--unshare-user",
94
- "--disable-userns",
95
- "--new-session",
96
- "--die-with-parent",
97
- "--cap-drop",
98
- "ALL",
99
- "--ro-bind",
100
- "/usr",
101
- "/usr",
102
- "--ro-bind",
103
- "/lib",
104
- "/lib",
105
- "--ro-bind-try",
106
- "/lib64",
107
- "/lib64",
108
- "--proc",
109
- "/proc",
110
- "--dev",
111
- "/dev",
112
- "--seccomp",
113
- "3",
114
- "--",
89
+ await run(policy.bubblewrapPath, bubblewrapProbeArguments(["/usr/bin/true"]), ["ignore", "pipe", "pipe", filter.handle.fd]);
90
+ await runExpectFailure(policy.bubblewrapPath, bubblewrapProbeArguments([
115
91
  "/usr/bin/unshare",
116
92
  "--mount",
117
93
  "/usr/bin/true",
118
- ], ["ignore", "pipe", "pipe", filter.fd]);
94
+ ]), ["ignore", "pipe", "pipe", filter.handle.fd]);
119
95
  await run(policy.systemdRunPath, [
120
96
  "--user",
121
97
  "--pipe",
@@ -131,45 +107,40 @@ export class SystemJavaScriptReplayHost {
131
107
  }
132
108
  finally {
133
109
  await filter.close();
134
- await rm(directory, { recursive: true, force: true });
135
110
  }
136
111
  }
137
112
  }
138
- const capture = async (executable, arguments_, maximumBytes) => {
113
+ const capture = async (executable, arguments_) => {
139
114
  if (arguments_.length === 0)
140
115
  return "content-addressed-worker-v1";
141
- const result = await collect(executable, arguments_, maximumBytes);
116
+ const result = await collect(executable, arguments_);
142
117
  if (result.code !== 0)
143
118
  throw new TypeError(`Replay executable probe failed: ${executable}`);
144
119
  return result.stdout.length > 0 ? result.stdout : result.stderr;
145
120
  };
146
121
  const run = async (executable, arguments_, stdio) => {
147
- const result = await collect(executable, arguments_, VERSION_OUTPUT_LIMIT, stdio);
122
+ const result = await collect(executable, arguments_, stdio);
148
123
  if (result.code !== 0)
149
124
  throw new TypeError(`Replay feature probe failed (${String(result.code)}): ${executable}: ${result.stderr.trim()}`);
150
125
  };
151
126
  const runExpectFailure = async (executable, arguments_, stdio) => {
152
- const result = await collect(executable, arguments_, VERSION_OUTPUT_LIMIT, stdio);
127
+ const result = await collect(executable, arguments_, stdio);
153
128
  if (result.code === 0)
154
129
  throw new TypeError(`Replay denial probe unexpectedly succeeded: ${executable}`);
155
130
  };
156
- const collect = async (executable, arguments_, maximumBytes, stdio = ["ignore", "pipe", "pipe"]) => new Promise((resolve, reject) => {
131
+ const collect = async (executable, arguments_, stdio = ["ignore", "pipe", "pipe"]) => new Promise((resolve, reject) => {
157
132
  const child = spawn(executable, [...arguments_], { stdio });
158
133
  const timeout = setTimeout(() => child.kill("SIGKILL"), 5_000);
159
134
  timeout.unref();
160
135
  let stdout = "";
161
136
  let stderr = "";
162
- const retain = (current, chunk) => {
163
- const remaining = Math.max(0, maximumBytes - Buffer.byteLength(current));
164
- return current + chunk.subarray(0, remaining).toString("utf8");
165
- };
166
137
  if (child.stdout !== null)
167
138
  child.stdout.on("data", (chunk) => {
168
- stdout = retain(stdout, chunk);
139
+ stdout += chunk.toString("utf8");
169
140
  });
170
141
  if (child.stderr !== null)
171
142
  child.stderr.on("data", (chunk) => {
172
- stderr = retain(stderr, chunk);
143
+ stderr += chunk.toString("utf8");
173
144
  });
174
145
  child.once("error", (error) => {
175
146
  clearTimeout(timeout);
@@ -4,7 +4,6 @@ import { z } from "zod";
4
4
  import { PermissionRequiredError } from "../domain/errors.js";
5
5
  import { isPermissionRequestWithinCeiling, } from "../domain/permissionPolicy.js";
6
6
  const RESPONSE_KEY = "process_capture_grant";
7
- const STATE_VERSION = 1;
8
7
  /** Shared continuation, replay, and round limits for process capture consent. */
9
8
  export const PROCESS_CAPTURE_ELICITATION_POLICY = {
10
9
  protocolVersions: ["2026-07-28"],
@@ -22,7 +21,6 @@ const grantResponseJsonSchema = { ...z.toJSONSchema(grantResponseSchema) };
22
21
  Reflect.deleteProperty(grantResponseJsonSchema, "$schema");
23
22
  Reflect.deleteProperty(grantResponseJsonSchema, "additionalProperties");
24
23
  const stateSchema = z.strictObject({
25
- version: z.literal(STATE_VERSION),
26
24
  nonce: z.string().uuid(),
27
25
  request: z.strictObject({
28
26
  capability: z.literal("process_capture"),
@@ -37,14 +35,13 @@ const stateSchema = z.strictObject({
37
35
  });
38
36
  /** Authorize capture or return a signed MCP input-required continuation. */
39
37
  export const authorizeProcessCaptureWithElicitation = async (authority, request, context, elicitation) => {
40
- const supported = elicitation.supported(context);
41
38
  const initial = await authority.authorize(request, "read", {
42
- elicitationSupported: supported,
39
+ remediation: elicitation.supported(context) ? "elicit" : "configure",
43
40
  });
44
41
  if (initial.ok || !(initial.error instanceof PermissionRequiredError))
45
42
  return initial;
46
43
  const denied = initial.error;
47
- if (!supported ||
44
+ if (denied.remediation !== "elicit" ||
48
45
  denied.requested.capability !== "process_capture" ||
49
46
  denied.ceiling === null ||
50
47
  !isPermissionRequestWithinCeiling(denied.requested, denied.ceiling))
@@ -70,7 +67,6 @@ export const authorizeProcessCaptureWithElicitation = async (authority, request,
70
67
  return initial;
71
68
  }
72
69
  const state = await elicitation.stateCodec.mint({
73
- version: STATE_VERSION,
74
70
  nonce: randomUUID(),
75
71
  request: {
76
72
  capability: "process_capture",
@@ -106,12 +102,12 @@ const grantAndAuthorize = async (authority, request, lifetime) => {
106
102
  const granted = authority.grant(grant);
107
103
  if (!granted.ok)
108
104
  return authority.authorize(request, "read", {
109
- elicitationSupported: true,
105
+ remediation: "elicit",
110
106
  });
111
107
  let authorized;
112
108
  try {
113
109
  authorized = await authority.authorize(request, "read", {
114
- elicitationSupported: true,
110
+ remediation: "elicit",
115
111
  });
116
112
  }
117
113
  catch (cause) {
@@ -5,7 +5,7 @@ import { PRODUCT_IDENTITY } from "../identity.js";
5
5
  import { silentLogger } from "../logger.js";
6
6
  import { LinuxJavaScriptReplayRunner } from "../replay/LinuxJavaScriptReplayRunner.js";
7
7
  import { SystemJavaScriptReplayHost } from "../replay/SystemJavaScriptReplayHost.js";
8
- import { mcpClientMetadata, mcpEnvelopeValue } from "./mcpClientMetadata.js";
8
+ import { mcpEnvelopeValue } from "./mcpClientMetadata.js";
9
9
  import { PROCESS_CAPTURE_ELICITATION_POLICY, } from "./ProcessCaptureElicitation.js";
10
10
  import { registerApplicationTools } from "./registerApplicationTools.js";
11
11
  import { registerArtifactTools } from "./registerArtifactTools.js";
@@ -13,7 +13,6 @@ import { registerBrowserScenarioTool } from "./registerBrowserScenarioTool.js";
13
13
  import { registerBrowserTools } from "./registerBrowserTools.js";
14
14
  import { registerElectronTools } from "./registerElectronTools.js";
15
15
  import { registerEnhancedTools } from "./registerEnhancedTools.js";
16
- import { registerEvidenceResources } from "./registerEvidenceResources.js";
17
16
  import { registerJavaScriptRuntimeObservationTools } from "./registerJavaScriptRuntimeObservationTools.js";
18
17
  import { registerManagedTools } from "./registerManagedTools.js";
19
18
  import { registerManagedWorkflowTools } from "./registerManagedWorkflowTools.js";
@@ -22,16 +21,14 @@ import { registerOfficialTools } from "./registerOfficialTools.js";
22
21
  import { registerGuidedPrompts } from "./registerPrompts.js";
23
22
  import { registerSessionTools } from "./registerSessionTools.js";
24
23
  import { sessionAvailabilityPolicy } from "./sessionAvailabilityPolicy.js";
25
- import { DENY_EVIDENCE_FILE_POLICY, DENY_PROCESS_POLICY, } from "./sessionToolPolicies.js";
26
- const TARGET_FREE_INSTRUCTIONS = "ASAR/JavaScript -> analyze_javascript_application; archive/package -> open_binary(path), then inspect_artifact/inventory_artifact (active target); managed PE/CLI -> inspect_managed_artifact; browser/Electron -> list_browser_targets/list_electron_targets; approved -> capture_browser_scenario/capture_electron_scenario; Node/Electron Inspector -> list_javascript_runtime_targets; native binary/database -> open_binary, then binary_overview. Start with binary_session; use tools/list; capabilities via binary_session. Use summaries, cite Evidence IDs; Never repeat identical analysis or read full Evidence.";
27
- const ACTIVE_TARGET_INSTRUCTIONS = "REA analyzes the active reverse-engineering target. Start native analysis with binary_overview, then narrow with analyze_function, literal search, callers, callees, and xrefs. Prefer summary views, never repeat an identical call, and read full Evidence only when the task requires it.";
24
+ import { DENY_PROCESS_POLICY } from "./sessionToolPolicies.js";
25
+ const TARGET_FREE_INSTRUCTIONS = "REA provides reverse-engineering tools for local artifacts, native binaries, managed code, browser pages, and runtimes. Use the tool that directly answers the question; discover targets or inspect inventory only when needed. Tool results include inline Evidence and report their coverage and limitations.";
26
+ const ACTIVE_TARGET_INSTRUCTIONS = "REA analyzes the active reverse-engineering target. Use the analysis tool that answers the question directly. Search or list symbols when discovery is needed; analyze_function provides a function dossier, and focused procedure tools return individual facets.";
28
27
  const installSessionToolAvailability = (server, session, options) => {
29
28
  if (session === undefined)
30
29
  return undefined;
31
30
  const policy = sessionAvailabilityPolicy(options.availabilityPolicy, {
32
31
  processPolicy: options.processPolicy?.() ?? DENY_PROCESS_POLICY,
33
- evidenceFilePolicy: options.evidenceFilePolicy ?? DENY_EVIDENCE_FILE_POLICY,
34
- investigationInputRoots: options.investigationInputRoots ?? [],
35
32
  optionalFeatures: {
36
33
  browserObservationEnabled: options.browserObservation !== undefined,
37
34
  browserScenarioEnabled: options.browserScenarioCapture !== undefined,
@@ -66,11 +63,8 @@ const createMcpServer = (processCaptureStateCodec, session) => new McpServer({
66
63
  name: PRODUCT_IDENTITY.mcpServerKey,
67
64
  version: PRODUCT_IDENTITY.packageVersion,
68
65
  }, {
69
- capabilities: {
70
- resources: { subscribe: true },
71
- },
66
+ capabilities: {},
72
67
  inputRequired: {
73
- maxRounds: 3,
74
68
  roundTimeoutMs: PROCESS_CAPTURE_ELICITATION_POLICY.roundTimeoutMs,
75
69
  },
76
70
  requestState: { verify: processCaptureStateCodec.verify },
@@ -96,7 +90,6 @@ export const createServer = (analysis, session, options = {}) => {
96
90
  server.server.onclose = () => {
97
91
  permissionAuthority?.clearSessionGrants();
98
92
  };
99
- registerServerIdentityResource(server, startedAt);
100
93
  const toolLogger = logger.child({ layer: "server" });
101
94
  const { activeTarget, recordEvidence, recordEvidenceWithUnknown } = createSessionRecorders(server, session);
102
95
  const processCaptureElicitation = createProcessCaptureElicitation(processCaptureStateCodec);
@@ -115,7 +108,6 @@ export const createServer = (analysis, session, options = {}) => {
115
108
  registerObservationTools(toolContext);
116
109
  registerGuidedPrompts(server, analysis, session);
117
110
  if (session !== undefined) {
118
- registerEvidenceResources(server, session);
119
111
  registerSessionTools(server, session, toolLogger, {
120
112
  ...options,
121
113
  ...(availability === undefined
@@ -181,7 +173,7 @@ const registerBinaryAnalysisTools = ({ server, analysis, session, options, logge
181
173
  },
182
174
  });
183
175
  };
184
- const registerObservationTools = ({ server, session, options, logger, permissionAuthority, recordEvidence, recordEvidenceWithUnknown, }) => {
176
+ const registerObservationTools = ({ server, options, logger, permissionAuthority, recordEvidence, recordEvidenceWithUnknown, }) => {
185
177
  const common = { logger, permissionAuthority, recordEvidence };
186
178
  registerBrowserTools(server, {
187
179
  ...common,
@@ -204,14 +196,7 @@ const registerObservationTools = ({ server, session, options, logger, permission
204
196
  logger,
205
197
  recordEvidence,
206
198
  recordEvidenceWithUnknown,
207
- evidenceLookup: session === undefined
208
- ? undefined
209
- : (evidenceId) => session.evidenceById(evidenceId),
210
- evidenceFilePolicy: options.evidenceFilePolicy ?? DENY_EVIDENCE_FILE_POLICY,
211
199
  permissionAuthority,
212
- retainCoverageWorkspace: session === undefined
213
- ? undefined
214
- : (workspace) => session.retainReconstructionCoverageWorkspace(workspace),
215
200
  replay: {
216
201
  policy: options.javascriptReplayPolicy ?? (() => ({ status: "disabled" })),
217
202
  host: options.javascriptReplayHost ?? new SystemJavaScriptReplayHost(),
@@ -220,26 +205,3 @@ const registerObservationTools = ({ server, session, options, logger, permission
220
205
  },
221
206
  });
222
207
  };
223
- const registerServerIdentityResource = (server, startedAt) => {
224
- server.registerResource("server-identity", "rea://server/identity", {
225
- title: "REA server identity",
226
- description: "Live package, SDK, protocol, and catalog identity.",
227
- mimeType: "application/json",
228
- }, async (uri, context) => {
229
- const { createServerIdentity } = await import("../serverIdentity.js");
230
- const { client, protocolVersion } = mcpClientMetadata(context);
231
- return {
232
- contents: [
233
- {
234
- uri: uri.href,
235
- mimeType: "application/json",
236
- text: JSON.stringify(createServerIdentity({
237
- startedAt,
238
- ...(client === undefined ? {} : { client }),
239
- ...(protocolVersion === undefined ? {} : { protocolVersion }),
240
- }), null, 2),
241
- },
242
- ],
243
- };
244
- });
245
- };
@@ -1,10 +1,7 @@
1
1
  import { z } from "zod";
2
2
  import { artifactInventoryResultSchema } from "../domain/artifactGraph.js";
3
- import { parseAddressedPage } from "../domain/hopperValues.js";
4
- import { processCaptureSchema, validateProcessCapture, } from "../domain/processCapture.js";
5
- const COMPLETION_SCAN_LIMIT = 10_000;
6
- const PROCEDURE_PAGE_SIZE = 500;
7
- const MAX_COMPLETION_VALUE_LENGTH = 4_096;
3
+ import { artifactInspectionResultSchema } from "../domain/artifactInspection.js";
4
+ import { processCaptureSchema } from "../domain/processCapture.js";
8
5
  const documentListSchema = z.array(z.string().min(1));
9
6
  const providerStatusSchema = z.object({
10
7
  providers: z.array(z.object({ id: z.string().min(1) })),
@@ -12,16 +9,12 @@ const providerStatusSchema = z.object({
12
9
  .array(z.object({ provider: z.object({ id: z.string().min(1) }) }))
13
10
  .optional(),
14
11
  });
15
- /** Build bounded live completion over the active provider and session ledger. */
12
+ /** Build live completion over the active provider and session ledger. */
16
13
  export const createPromptCompletionSource = (analysis, session) => ({
17
14
  async complete(kind, value, context) {
18
- if (value.length > MAX_COMPLETION_VALUE_LENGTH)
19
- return [];
20
15
  const candidates = await completionCandidates(kind, analysis, session, context);
21
16
  const prefix = normalize(value);
22
- return uniqueSorted(candidates)
23
- .filter((candidate) => normalize(candidate).startsWith(prefix))
24
- .slice(0, COMPLETION_SCAN_LIMIT);
17
+ return uniqueSorted(candidates).filter((candidate) => normalize(candidate).startsWith(prefix));
25
18
  },
26
19
  });
27
20
  const completionCandidates = async (kind, analysis, session, context) => {
@@ -46,39 +39,20 @@ const documentCandidates = async (analysis) => {
46
39
  if (!result.ok)
47
40
  return [];
48
41
  const parsed = documentListSchema.safeParse(result.value.result);
49
- return parsed.success ? parsed.data.slice(0, COMPLETION_SCAN_LIMIT) : [];
42
+ return parsed.success ? parsed.data : [];
50
43
  };
51
44
  const procedureCandidates = async (analysis, document) => {
52
- if (document !== undefined && document.length > MAX_COMPLETION_VALUE_LENGTH)
53
- return [];
54
45
  const byAddress = new Map();
55
- let offset = 0;
56
- let exhaustive = false;
57
- while (byAddress.size < COMPLETION_SCAN_LIMIT / 2) {
58
- const result = await analysis.execute("list_procedures", {
59
- offset,
60
- limit: PROCEDURE_PAGE_SIZE,
61
- ...(document === undefined || document.length === 0 ? {} : { document }),
62
- });
63
- if (!result.ok)
64
- break;
65
- const parsed = parseAddressedPage(result.value.result);
66
- if (!parsed.ok)
67
- break;
68
- for (const item of parsed.value.items) {
69
- if (byAddress.size >= COMPLETION_SCAN_LIMIT / 2)
70
- break;
71
- if (!byAddress.has(item.address))
72
- byAddress.set(item.address, item.name);
73
- }
74
- const nextOffset = parsed.value.nextOffset;
75
- if (!parsed.value.hasMore) {
76
- exhaustive = true;
77
- break;
78
- }
79
- if (nextOffset === null || nextOffset <= offset)
80
- break;
81
- offset = nextOffset;
46
+ const input = document === undefined || document.length === 0 ? {} : { document };
47
+ const result = await analysis.execute("list_procedures", input);
48
+ if (result.ok) {
49
+ const parsed = z
50
+ .array(z.object({ address: z.string(), value: z.string() }))
51
+ .safeParse(result.value.result);
52
+ if (parsed.success)
53
+ for (const item of parsed.data)
54
+ if (!byAddress.has(item.address))
55
+ byAddress.set(item.address, item.value);
82
56
  }
83
57
  const addressesByName = new Map();
84
58
  for (const [address, name] of byAddress) {
@@ -87,10 +61,9 @@ const procedureCandidates = async (analysis, document) => {
87
61
  addressesByName.set(name, addresses);
88
62
  }
89
63
  const candidates = [...byAddress.keys()];
90
- if (exhaustive)
91
- for (const [name, addresses] of addressesByName)
92
- if (addresses.size === 1 && name.length > 0)
93
- candidates.push(name);
64
+ for (const [name, addresses] of addressesByName)
65
+ if (addresses.size === 1 && name.length > 0)
66
+ candidates.push(name);
94
67
  return candidates;
95
68
  };
96
69
  const providerCandidates = (session) => {
@@ -102,18 +75,14 @@ const providerCandidates = (session) => {
102
75
  const candidates = (parsed.data.analysis_provider_candidates?.length ?? 0) > 0
103
76
  ? (parsed.data.analysis_provider_candidates?.map(({ provider }) => provider.id) ?? [])
104
77
  : parsed.data.providers.map(({ id }) => id);
105
- return ["auto", ...candidates].slice(0, COMPLETION_SCAN_LIMIT);
78
+ return ["auto", ...candidates];
106
79
  };
107
80
  const evidenceCandidates = (kind, session) => {
108
81
  if (session === undefined)
109
82
  return [];
110
83
  const candidates = [];
111
- for (const evidence of session.exportEvidenceBundle().records) {
112
- const remaining = COMPLETION_SCAN_LIMIT - candidates.length;
113
- candidates.push(...evidenceValues(kind, evidence).slice(0, remaining));
114
- if (candidates.length >= COMPLETION_SCAN_LIMIT)
115
- break;
116
- }
84
+ for (const evidence of session.exportEvidenceBundle().records)
85
+ candidates.push(...evidenceValues(kind, evidence));
117
86
  return candidates;
118
87
  };
119
88
  const evidenceValues = (kind, evidence) => {
@@ -121,30 +90,37 @@ const evidenceValues = (kind, evidence) => {
121
90
  return [evidence.evidence_id];
122
91
  if (kind === "capture")
123
92
  return isProcessCaptureEvidence(evidence) ? [evidence.evidence_id] : [];
124
- if (evidence.operation !== "inventory_artifact")
93
+ const inventoryResult = evidence.operation === "inventory_artifact"
94
+ ? evidence.normalized_result
95
+ : evidence.operation === "inspect_artifact"
96
+ ? (() => {
97
+ const inspection = artifactInspectionResultSchema.safeParse(evidence.normalized_result);
98
+ return inspection.success
99
+ ? inspection.data.substeps[0]?.evidence.normalized_result
100
+ : undefined;
101
+ })()
102
+ : undefined;
103
+ if (inventoryResult === undefined)
125
104
  return [];
126
- const inventory = artifactInventoryResultSchema.safeParse(evidence.normalized_result);
105
+ const inventory = artifactInventoryResultSchema.safeParse(inventoryResult);
127
106
  if (!inventory.success)
128
107
  return [];
129
108
  if (kind === "manifest")
130
109
  return [inventory.data.manifest.manifest_id];
131
- return inventory.data.occurrences.items.map(({ occurrence_id: id }) => id);
110
+ return inventory.data.occurrences.map(({ occurrence_id: id }) => id);
132
111
  };
133
112
  const isProcessCaptureEvidence = (evidence) => {
134
113
  if (evidence.operation !== "capture_process_scenario")
135
114
  return false;
136
115
  const capture = processCaptureSchema.safeParse(evidence.normalized_result);
137
- return capture.success && validateProcessCapture(capture.data).length === 0;
116
+ return capture.success;
138
117
  };
139
118
  const unknownCandidates = (session) => session === undefined
140
119
  ? []
141
120
  : session
142
121
  .listUnknowns()
143
122
  .filter(({ status }) => status !== "resolved")
144
- .map(({ unknown_id: id }) => id)
145
- .slice(0, COMPLETION_SCAN_LIMIT);
146
- const uniqueSorted = (values) => [
147
- ...new Set(values.filter((value) => value.length > 0 && value.length <= MAX_COMPLETION_VALUE_LENGTH)),
148
- ].sort(compareText);
123
+ .map(({ unknown_id: id }) => id);
124
+ const uniqueSorted = (values) => [...new Set(values.filter((value) => value.length > 0))].sort(compareText);
149
125
  const compareText = (left, right) => left < right ? -1 : left > right ? 1 : 0;
150
126
  const normalize = (value) => value.normalize("NFKC").toLowerCase();
@@ -1,5 +1,5 @@
1
1
  import { ok } from "../domain/result.js";
2
- /** Atomically record derived Evidence with an optional approved unknown. */
2
+ /** Atomically record derived Evidence with an optional supported unknown. */
3
3
  export const recordDerivedEvidence = (session, evidence, unknown) => {
4
4
  if (unknown !== undefined) {
5
5
  const recorded = session.recordEvidenceWithUnknown(evidence, unknown);
@@ -1,3 +1,4 @@
1
+ import { recordSessionEvidenceSources } from "../sessionEvidence.js";
1
2
  import { executeNodeCharacterization, prepareNodeCharacterization, } from "../../application/NodeRuntimeCharacterizationService.js";
2
3
  import { applicationToolContract } from "../../contracts/applicationToolContracts.js";
3
4
  import { parseEvidence } from "../../domain/evidence.js";
@@ -6,7 +7,6 @@ import { mcpProgressReporter } from "../mcpProgress.js";
6
7
  import { logToolExecution } from "../toolLogging.js";
7
8
  import { toolRegistrationOptions } from "../toolRegistrationOptions.js";
8
9
  import { toCallToolResult } from "../toolResult.js";
9
- import { recordSources } from "./helpers.js";
10
10
  const prepareContract = applicationToolContract("prepare_node_characterization");
11
11
  const executeContract = applicationToolContract("execute_node_characterization");
12
12
  /** Register node runtime characterization prepare and execute tools. */
@@ -22,9 +22,7 @@ export const registerCharacterizationTools = (server, options) => {
22
22
  const recorded = options.recordEvidence?.(parseEvidence(output.transformation_evidence));
23
23
  if (recorded !== undefined && !recorded.ok)
24
24
  return toCallToolResult(recorded, prepareContract);
25
- return toCallToolResult(result, prepareContract, {
26
- evidenceResourcesAvailable: options.recordEvidence !== undefined,
27
- });
25
+ return toCallToolResult(result, prepareContract);
28
26
  });
29
27
  server.registerTool(executeContract.name, toolRegistrationOptions(executeContract), async (input, context) => {
30
28
  const result = await logToolExecution(options.logger, executeContract.name, () => executeNodeCharacterization(options.replay, input, {
@@ -40,11 +38,9 @@ export const registerCharacterizationTools = (server, options) => {
40
38
  output.replay.evidence,
41
39
  output.evidence,
42
40
  ].map((item) => parseEvidence(item));
43
- const recorded = recordSources(options.recordEvidence, sources);
41
+ const recorded = recordSessionEvidenceSources(options.recordEvidence, sources);
44
42
  if (!recorded.ok)
45
43
  return toCallToolResult(recorded, executeContract);
46
- return toCallToolResult(result, executeContract, {
47
- evidenceResourcesAvailable: options.recordEvidence !== undefined,
48
- });
44
+ return toCallToolResult(result, executeContract);
49
45
  });
50
46
  };
@@ -1,23 +1,20 @@
1
- import { resolveCompareJavaScriptExportShapesRequestValidated } from "../../application/ApplicationWorkflowEvidenceResolver.js";
1
+ import { recordSessionEvidenceSources } from "../sessionEvidence.js";
2
2
  import { compareJavaScriptExportShapesEvidenceValidated } from "../../application/JavaScriptApplicationWorkflowService.js";
3
3
  import { applicationToolContract } from "../../contracts/applicationToolContracts.js";
4
4
  import { javaScriptExportShapeComparisonResultSchema } from "../../domain/javascriptExportShapeComparisonSchemas.js";
5
5
  import { logToolExecution } from "../toolLogging.js";
6
6
  import { toolRegistrationOptions } from "../toolRegistrationOptions.js";
7
7
  import { toCallToolResult } from "../toolResult.js";
8
- import { recordResult, recordSources } from "./helpers.js";
8
+ import { recordResult } from "./helpers.js";
9
9
  const contract = applicationToolContract("compare_javascript_export_shapes");
10
10
  /** Register the execution-free exact JavaScript export-shape comparison. */
11
11
  export const registerCompareJavaScriptExportShapesTool = (server, options) => {
12
12
  server.registerTool(contract.name, toolRegistrationOptions(contract), async (input) => {
13
- const resolved = resolveCompareJavaScriptExportShapesRequestValidated(input, options.evidenceLookup);
14
- if (!resolved.ok)
15
- return toCallToolResult(resolved, contract);
16
- const parsed = resolved.value;
13
+ const parsed = input;
17
14
  const result = await logToolExecution(options.logger, contract.name, () => Promise.resolve(compareJavaScriptExportShapesEvidenceValidated(parsed)));
18
15
  if (!result.ok)
19
16
  return toCallToolResult(result, contract);
20
- const recorded = recordSources(options.recordEvidence, [
17
+ const recorded = recordSessionEvidenceSources(options.recordEvidence, [
21
18
  parsed.left,
22
19
  parsed.right,
23
20
  ]);
@@ -25,8 +22,6 @@ export const registerCompareJavaScriptExportShapesTool = (server, options) => {
25
22
  return toCallToolResult(recorded, contract);
26
23
  const comparison = javaScriptExportShapeComparisonResultSchema.parse(result.value.normalized_result);
27
24
  const unknown = comparison.summary.unknown > 0;
28
- return recordResult(options, contract, result.value, parsed.unknown_registry_approved === true && unknown
29
- ? "javascript-export-shape"
30
- : undefined);
25
+ return recordResult(options, contract, result.value, unknown ? "javascript-export-shape" : undefined);
31
26
  });
32
27
  };
@@ -1,29 +1,25 @@
1
- import { resolveCompareSourceToBundleRequestValidated } from "../../application/ApplicationWorkflowEvidenceResolver.js";
1
+ import { recordSessionEvidenceSources } from "../sessionEvidence.js";
2
2
  import { compareSourceToBundleEvidenceValidated } from "../../application/JavaScriptApplicationWorkflowService.js";
3
3
  import { applicationToolContract } from "../../contracts/applicationToolContracts.js";
4
4
  import { sourceToBundleComparisonResultSchema } from "../../domain/sourceToBundleComparisonSchemas.js";
5
5
  import { logToolExecution } from "../toolLogging.js";
6
6
  import { toolRegistrationOptions } from "../toolRegistrationOptions.js";
7
7
  import { toCallToolResult } from "../toolResult.js";
8
- import { recordResult, recordSources } from "./helpers.js";
8
+ import { recordResult } from "./helpers.js";
9
9
  const contract = applicationToolContract("compare_source_to_bundle");
10
10
  /** Register conservative historical-source to bundle comparison. */
11
11
  export const registerCompareSourceToBundleTool = (server, options) => {
12
12
  server.registerTool(contract.name, toolRegistrationOptions(contract), async (input) => {
13
- const resolved = resolveCompareSourceToBundleRequestValidated(input, options.evidenceLookup);
14
- if (!resolved.ok)
15
- return toCallToolResult(resolved, contract);
16
- const result = await logToolExecution(options.logger, contract.name, () => Promise.resolve(compareSourceToBundleEvidenceValidated(resolved.value)));
13
+ const result = await logToolExecution(options.logger, contract.name, () => Promise.resolve(compareSourceToBundleEvidenceValidated(input)));
17
14
  if (!result.ok)
18
15
  return toCallToolResult(result, contract);
19
- const recorded = recordSources(options.recordEvidence, [
20
- resolved.value.application,
16
+ const recorded = recordSessionEvidenceSources(options.recordEvidence, [
17
+ input.application,
21
18
  ]);
22
19
  if (!recorded.ok)
23
20
  return toCallToolResult(recorded, contract);
24
21
  const comparison = sourceToBundleComparisonResultSchema.parse(result.value.normalized_result);
25
- return recordResult(options, contract, result.value, resolved.value.unknown_registry_approved === true &&
26
- comparison.summary.unknown > 0
22
+ return recordResult(options, contract, result.value, comparison.summary.unknown > 0
27
23
  ? "source-to-bundle-comparison"
28
24
  : undefined);
29
25
  });