rea-agents 3.0.0 → 3.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (628) hide show
  1. package/README.md +83 -108
  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/AnalysisContextQueries.js +21 -9
  6. package/dist/application/AnalysisSnapshotCache.js +0 -1
  7. package/dist/application/AnalysisSnapshotFiles.js +7 -7
  8. package/dist/application/AndroidApplicationService.js +1 -1
  9. package/dist/application/AppleApplicationService.js +1 -1
  10. package/dist/application/ArtifactExtraction.js +35 -54
  11. package/dist/application/ArtifactExtractionDestination.js +17 -0
  12. package/dist/application/ArtifactGraphConstruction.js +2 -17
  13. package/dist/application/ArtifactInventory/classify.js +2 -6
  14. package/dist/application/ArtifactInventory/hash.js +2 -20
  15. package/dist/application/ArtifactInventory/policy.js +17 -0
  16. package/dist/application/ArtifactInventory/reader.js +1 -4
  17. package/dist/application/ArtifactInventory/scanCanonical.js +8 -15
  18. package/dist/application/ArtifactInventory/scanReader.js +76 -58
  19. package/dist/application/ArtifactInventory/types.js +1 -5
  20. package/dist/application/ArtifactInventory.js +6 -14
  21. package/dist/application/AuthorizedArtifactInventory.js +3 -13
  22. package/dist/application/BinarySession.js +54 -28
  23. package/dist/application/BinarySessionComposition.js +0 -11
  24. package/dist/application/BinarySessionOpen.js +2 -1
  25. package/dist/application/BinarySessionRecords.js +24 -86
  26. package/dist/application/BinarySessionStatus.js +16 -21
  27. package/dist/application/BinaryTargetResolver.js +216 -0
  28. package/dist/application/BrowserEvidence.js +39 -57
  29. package/dist/application/BrowserObservationService.js +3 -6
  30. package/dist/application/BrowserScenarioCaptureService.js +3 -6
  31. package/dist/application/BrowserScenarioEvidence.js +3 -3
  32. package/dist/application/CallPathTracing.js +2 -36
  33. package/dist/application/CapabilityClientRequirements.js +26 -0
  34. package/dist/application/CapabilityInventory.js +143 -77
  35. package/dist/application/ClientConfigurationDocument.js +27 -0
  36. package/dist/application/ClientRegistrationStatus.js +16 -13
  37. package/dist/application/CommandShimReplay.js +14 -1
  38. package/dist/application/DirectAnalysis.js +22 -46
  39. package/dist/application/DirectAnalysisStatus.js +5 -61
  40. package/dist/application/Doctor.js +11 -32
  41. package/dist/application/DoctorDiagnostics.js +1 -2
  42. package/dist/application/DoctorScope.js +1 -1
  43. package/dist/application/ElectronActiveEvidence.js +50 -0
  44. package/dist/application/ElectronActiveObservationPort.js +1 -0
  45. package/dist/application/ElectronActiveObservationService.js +78 -0
  46. package/dist/application/ElectronBoundaryAnalysis.js +7 -8
  47. package/dist/application/ElectronBoundaryGraphContext.js +1 -1
  48. package/dist/application/ElectronBoundaryGraphIpc.js +3 -3
  49. package/dist/application/ElectronBoundaryGraphNative.js +1 -2
  50. package/dist/application/ElectronBoundaryGraphWindows.js +6 -8
  51. package/dist/application/ElectronEvidence.js +4 -7
  52. package/dist/application/ElectronObservationService.js +5 -9
  53. package/dist/application/EnhancedLiteralTracing.js +42 -65
  54. package/dist/application/EnhancedTools.js +98 -64
  55. package/dist/application/EvidenceBundleCommands.js +16 -12
  56. package/dist/application/EvidenceBundleFiles.js +9 -15
  57. package/dist/application/EvidenceLedger.js +14 -42
  58. package/dist/application/FilesystemSnapshot.js +2 -3
  59. package/dist/application/InterfaceBuilderAnalysis.js +266 -0
  60. package/dist/application/InventoryProjectionEvidence.js +4 -2
  61. package/dist/application/InvestigationProviders.js +1 -1
  62. package/dist/application/JavaScriptApplicationEvidence.js +2 -5
  63. package/dist/application/JavaScriptApplicationEvidenceGraph.js +6 -10
  64. package/dist/application/JavaScriptApplicationService.js +6 -29
  65. package/dist/application/JavaScriptApplicationWorkflowEvidence.js +5 -5
  66. package/dist/application/JavaScriptApplicationWorkflowService.js +0 -8
  67. package/dist/application/JavaScriptArtifactAnalysis.js +38 -127
  68. package/dist/application/JavaScriptArtifactFiles.js +67 -107
  69. package/dist/application/JavaScriptArtifactGraphAccumulator.js +0 -7
  70. package/dist/application/JavaScriptArtifactGraphBuilder.js +7 -58
  71. package/dist/application/JavaScriptArtifactGraphBundlers.js +1 -6
  72. package/dist/application/JavaScriptArtifactGraphContext.js +12 -39
  73. package/dist/application/JavaScriptArtifactGraphDocuments.js +4 -11
  74. package/dist/application/JavaScriptArtifactGraphEvidence.js +0 -14
  75. package/dist/application/JavaScriptArtifactGraphFindings.js +3 -3
  76. package/dist/application/JavaScriptArtifactGraphStructure.js +16 -17
  77. package/dist/application/JavaScriptArtifactPathResolution.js +61 -49
  78. package/dist/application/JavaScriptArtifactReconstruction.js +5 -10
  79. package/dist/application/JavaScriptArtifactReconstructionInput.js +2 -14
  80. package/dist/application/JavaScriptJsonModules.js +2 -2
  81. package/dist/application/JavaScriptModuleRelationships.js +22 -27
  82. package/dist/application/JavaScriptReplayPermission.js +1 -1
  83. package/dist/application/JavaScriptReplayPlanning.js +9 -3
  84. package/dist/application/JavaScriptReplayService.js +29 -47
  85. package/dist/application/JavaScriptReturnShapeProjection.js +12 -42
  86. package/dist/application/JavaScriptRuntimeObservationEvidence.js +7 -8
  87. package/dist/application/JavaScriptRuntimeObservationService.js +4 -8
  88. package/dist/application/JavaScriptRuntimeReconciliationEvidence.js +2 -3
  89. package/dist/application/JavaScriptSemanticGraphBuilder.js +11 -41
  90. package/dist/application/JavaScriptSemanticGraphConstruction.js +5 -29
  91. package/dist/application/JavaScriptSemanticGraphEvidence.js +1 -1
  92. package/dist/application/JavaScriptSemanticGraphFingerprintProjection.js +1 -1
  93. package/dist/application/JavaScriptSemanticGraphFlowProjection.js +0 -13
  94. package/dist/application/JavaScriptSemanticGraphProjection.js +1 -3
  95. package/dist/application/JavaScriptSemanticTraceService.js +1 -10
  96. package/dist/application/JsonFiles.js +79 -0
  97. package/dist/application/LinuxHopper.js +11 -9
  98. package/dist/application/LoopbackReplay.js +26 -23
  99. package/dist/application/LoopbackReplayRecorder.js +29 -1
  100. package/dist/application/ManagedApplicationGraphService.js +1 -2
  101. package/dist/application/ManagedMemberComparisonService.js +11 -41
  102. package/dist/application/ManagedNativeVerificationService.js +1 -2
  103. package/dist/application/ManagedReconstructionService.js +1 -1
  104. package/dist/application/ManagedRuntimeCorrelationService.js +14 -13
  105. package/dist/application/NativeApiInspection.js +2 -7
  106. package/dist/application/NativeUiActionTrace.js +394 -0
  107. package/dist/application/NodeRuntimeCharacterizationService.js +11 -16
  108. package/dist/application/PermissionAuthority.js +15 -7
  109. package/dist/application/PermissionFailure.js +5 -0
  110. package/dist/application/ProcessCaptureAuthority.js +5 -7
  111. package/dist/application/ProcessCaptureJournal.js +3 -2
  112. package/dist/application/ProcessCaptureLifecycle.js +10 -12
  113. package/dist/application/ProcessCheckpoints.js +29 -11
  114. package/dist/application/ProcessCli.js +8 -17
  115. package/dist/application/ProcessEvidence.js +5 -7
  116. package/dist/application/ProcessHarness.js +60 -20
  117. package/dist/application/ProcessNormalization.js +2 -1
  118. package/dist/application/ProcessReactiveCoordinator.js +2 -4
  119. package/dist/application/ProcessReactiveEffects.js +9 -3
  120. package/dist/application/ProcessReactiveHarness.js +13 -7
  121. package/dist/application/ProcessSampling.js +2 -4
  122. package/dist/application/ProcessTimer.js +39 -0
  123. package/dist/application/ProjectPermissionStore.js +39 -95
  124. package/dist/application/RealHopperAssertions.js +20 -66
  125. package/dist/application/ReconstructionCoverageService.js +12 -58
  126. package/dist/application/ReconstructionObligationAuthority.js +2 -2
  127. package/dist/application/ReconstructionObligationCandidates.js +4 -4
  128. package/dist/application/ReconstructionObligationLedgerEvaluation.js +8 -15
  129. package/dist/application/ReconstructionObligationLedgerProjection.js +3 -7
  130. package/dist/application/ReconstructionObligationLedgerService.js +19 -38
  131. package/dist/application/ReferenceSourceImport.js +21 -47
  132. package/dist/application/ReferenceSourceImportEntries.js +2 -4
  133. package/dist/application/ReferenceSourceImportPolicy.js +5 -32
  134. package/dist/application/ReferenceSourceImportTypes.js +0 -16
  135. package/dist/application/RuntimeExecutableDiagnostics.js +55 -29
  136. package/dist/application/SessionProviderRouter.js +2 -2
  137. package/dist/application/Setup.js +1 -3
  138. package/dist/application/SetupClientConfiguration.js +22 -88
  139. package/dist/application/SetupRegistrationEnvironment.js +0 -7
  140. package/dist/application/StoreFileLock.js +119 -0
  141. package/dist/application/TerminalRenderer.js +2 -3
  142. package/dist/application/Uninstall.js +9 -14
  143. package/dist/application/UnknownEvidence.js +1 -1
  144. package/dist/application/WindowsCapabilities.js +5 -4
  145. package/dist/artifacts/ArtifactPaths.js +2 -5
  146. package/dist/artifacts/ArtifactProvider.js +43 -67
  147. package/dist/artifacts/DirectoryArtifactReader.js +13 -8
  148. package/dist/artifacts/MachOSliceArtifactReader.js +1 -5
  149. package/dist/artifacts/NativeDmgArtifactReader.js +11 -11
  150. package/dist/artifacts/NibArchive.js +269 -0
  151. package/dist/artifacts/SafeOutputTree.js +21 -31
  152. package/dist/browser/BrowserProcessStartup.js +1 -2
  153. package/dist/browser/CdpAuthorizedMainFrame.js +16 -0
  154. package/dist/browser/CdpBrowserProvider.js +3 -13
  155. package/dist/browser/CdpCanonicalJsonDigest.js +9 -0
  156. package/dist/browser/CdpCaptureDocuments.js +28 -76
  157. package/dist/browser/CdpCaptureEventBodyShapes.js +13 -33
  158. package/dist/browser/CdpCaptureEventHandlers.js +22 -87
  159. package/dist/browser/CdpCaptureEvents.js +2 -8
  160. package/dist/browser/CdpCaptureStorage.js +9 -20
  161. package/dist/browser/CdpCaptureStorageFingerprints.js +85 -95
  162. package/dist/browser/CdpCaptureValues.js +21 -21
  163. package/dist/browser/CdpConnection.js +10 -25
  164. package/dist/browser/CdpElectronInspection.js +29 -51
  165. package/dist/browser/CdpElectronProvider.js +10 -35
  166. package/dist/browser/CdpElectronScriptEvents.js +8 -16
  167. package/dist/browser/CdpElectronScripts.js +6 -35
  168. package/dist/browser/CdpElectronWorkers.js +6 -10
  169. package/dist/browser/CdpEndpoint.js +25 -41
  170. package/dist/browser/CdpObservationSession.js +14 -26
  171. package/dist/browser/CdpPageCapture.js +34 -48
  172. package/dist/browser/CdpPageCaptureScripts.js +1 -19
  173. package/dist/browser/CdpPageCaptureWorkers.js +6 -10
  174. package/dist/browser/CdpSafeMetadata.js +19 -22
  175. package/dist/browser/CdpScreenshot.js +3 -5
  176. package/dist/browser/CdpTargetSession.js +1 -2
  177. package/dist/browser/CdpWebMcpDiscovery.js +13 -22
  178. package/dist/browser/ElectronFileScope.js +8 -19
  179. package/dist/browser/JavaScriptRuntimeScope.js +10 -10
  180. package/dist/browser/PlaywrightBrowserScenarioProvider.js +31 -64
  181. package/dist/browser/PlaywrightElectronActiveActions.js +309 -0
  182. package/dist/browser/PlaywrightElectronActiveProvider.js +274 -0
  183. package/dist/browser/PlaywrightExecutionBoundary.js +16 -5
  184. package/dist/browser/PlaywrightScenarioActions.js +3 -7
  185. package/dist/browser/PlaywrightScenarioArtifacts.js +23 -92
  186. package/dist/browser/PlaywrightScenarioBrowser.js +7 -9
  187. package/dist/browser/PlaywrightScenarioEvents.js +45 -94
  188. package/dist/browser/PlaywrightScenarioSession.js +18 -34
  189. package/dist/browser/PngVisualDiff.js +22 -14
  190. package/dist/browser/SensitiveTextCapture.js +1 -18
  191. package/dist/browser/V8InspectorCaptureProjection.js +7 -7
  192. package/dist/browser/V8InspectorEndpoint.js +12 -14
  193. package/dist/browser/V8InspectorProvider.js +20 -61
  194. package/dist/browser/WebSourceMapFetcher.js +56 -176
  195. package/dist/catalogIdentity.js +12 -60
  196. package/dist/cli/artifactCommands.js +49 -77
  197. package/dist/cli/coreAnalysisCommands.js +83 -133
  198. package/dist/cli/javascriptApplicationAnalysis.js +1 -9
  199. package/dist/cli/managedCommands.js +6 -271
  200. package/dist/cli/setupCommands.js +3 -12
  201. package/dist/cli/utilityCommands.js +7 -41
  202. package/dist/cli.js +0 -2
  203. package/dist/cliApplicationCommands.js +44 -114
  204. package/dist/cliBrowserAdvancedCommands.js +12 -102
  205. package/dist/cliBrowserCommands.js +19 -124
  206. package/dist/cliBrowserContext.js +30 -0
  207. package/dist/cliCommandNames.js +5 -5
  208. package/dist/cliElectronCommands.js +49 -71
  209. package/dist/cliEvidenceCommands.js +8 -77
  210. package/dist/cliJavaScriptRuntimeCommands.js +18 -92
  211. package/dist/cliJsonInput.js +4 -14
  212. package/dist/cliObservationOptions.js +11 -92
  213. package/dist/cliPolicyCommands.js +2 -16
  214. package/dist/cliProcessCommands.js +3 -3
  215. package/dist/cliSetup.js +0 -13
  216. package/dist/config/browserScenario.js +77 -0
  217. package/dist/config/electronAutomation.js +35 -0
  218. package/dist/config/environment.js +6 -9
  219. package/dist/config/javascriptReplay.js +41 -0
  220. package/dist/config/managedRuntime.js +25 -0
  221. package/dist/config/parseConfig.js +56 -232
  222. package/dist/config/parsers.js +16 -28
  223. package/dist/config/passiveObservation.js +87 -0
  224. package/dist/config/permissions.js +0 -7
  225. package/dist/config/processCapture.js +47 -0
  226. package/dist/contracts/analysisSearchContract.js +2 -5
  227. package/dist/contracts/applicationToolContracts.js +58 -114
  228. package/dist/contracts/applicationWorkflowInputContracts.js +29 -114
  229. package/dist/contracts/artifactComparisonExample.js +58 -60
  230. package/dist/contracts/artifactToolContracts.js +37 -91
  231. package/dist/contracts/browserScenarioToolContracts.js +6 -51
  232. package/dist/contracts/browserToolContracts.js +10 -75
  233. package/dist/contracts/electronToolContracts.js +27 -98
  234. package/dist/contracts/enhancedInputs.js +31 -78
  235. package/dist/contracts/errorSchemas.js +0 -1
  236. package/dist/contracts/functionComparisonExample.js +10 -24
  237. package/dist/contracts/functionInstructionContract.js +1 -3
  238. package/dist/contracts/functionWorkflowToolContracts.js +4 -5
  239. package/dist/contracts/hopperMemoryContracts.js +3 -3
  240. package/dist/contracts/investigationExamples.js +14 -11
  241. package/dist/contracts/javascriptApplicationWorkflowExamples.js +12 -19
  242. package/dist/contracts/javascriptRuntimeObservationToolContracts.js +2 -20
  243. package/dist/contracts/javascriptRuntimeReconciliationExample.js +45 -12
  244. package/dist/contracts/managedToolContracts.js +10 -104
  245. package/dist/contracts/managedWorkflowExamples.js +77 -125
  246. package/dist/contracts/managedWorkflowToolContracts.js +51 -74
  247. package/dist/contracts/nativeToolContracts.js +9 -14
  248. package/dist/contracts/processCaptureExample.js +2 -69
  249. package/dist/contracts/promptContracts.js +49 -67
  250. package/dist/contracts/providerSelection.js +0 -1
  251. package/dist/contracts/reconstructionReadinessExample.js +1 -6
  252. package/dist/contracts/sessionStatusContract.js +1 -17
  253. package/dist/contracts/sessionToolSchemas.js +52 -0
  254. package/dist/contracts/toolContractExamples.js +11 -10
  255. package/dist/contracts/toolContractHelpers.js +19 -0
  256. package/dist/contracts/toolContracts.js +60 -143
  257. package/dist/contracts/toolEffects.js +16 -9
  258. package/dist/contracts/toolOutputSchemaGroups.js +47 -86
  259. package/dist/contracts/toolOutputSchemaPrimitives.js +72 -62
  260. package/dist/contracts/toolSchemaMetadata.js +117 -0
  261. package/dist/contracts/unknownContractExamples.js +0 -2
  262. package/dist/doctorRuntime.js +1 -1
  263. package/dist/domain/analysisErrorPresentation.js +46 -54
  264. package/dist/domain/analysisErrorProjection.js +28 -37
  265. package/dist/domain/analysisProfile.js +3 -31
  266. package/dist/domain/analysisSnapshot.js +3 -12
  267. package/dist/domain/androidApplication.js +15 -52
  268. package/dist/domain/appleApplication.js +24 -65
  269. package/dist/domain/artifactComparison.js +11 -29
  270. package/dist/domain/artifactGraph.js +14 -44
  271. package/dist/domain/artifactInspection.js +38 -69
  272. package/dist/domain/artifactInventoryEvidence.js +27 -21
  273. package/dist/domain/binaryTarget.js +2 -219
  274. package/dist/domain/binaryTargetTypes.js +1 -0
  275. package/dist/domain/browserCaptureComparison.js +35 -60
  276. package/dist/domain/browserObservation.js +45 -197
  277. package/dist/domain/browserObservationSchemas.js +5 -23
  278. package/dist/domain/browserScenario.js +11 -14
  279. package/dist/domain/browserScenarioCapture.js +11 -12
  280. package/dist/domain/browserScenarioCaptureValues.js +146 -84
  281. package/dist/domain/browserScenarioDiff.js +2 -59
  282. package/dist/domain/browserScenarioDiffEvidence.js +51 -0
  283. package/dist/domain/browserScenarioDiffValues.js +21 -38
  284. package/dist/domain/browserScenarioValues.js +80 -109
  285. package/dist/domain/browserSession.js +4 -7
  286. package/dist/domain/bundleComparison.js +6 -32
  287. package/dist/domain/bytecodeProvider.js +53 -54
  288. package/dist/domain/callPath.js +50 -169
  289. package/dist/domain/callPathSchemas.js +79 -0
  290. package/dist/domain/changedBehavior.js +34 -60
  291. package/dist/domain/completionLedgerGeneration.js +8 -14
  292. package/dist/domain/conformancePackage.js +126 -97
  293. package/dist/domain/conformanceReplay.js +39 -11
  294. package/dist/domain/conformanceTrustGate.js +174 -30
  295. package/dist/domain/customProtocolCapture.js +4 -4
  296. package/dist/domain/electronActiveObservation.js +244 -0
  297. package/dist/domain/electronObservation.js +21 -83
  298. package/dist/domain/electronStaticAnalysisBrowser.js +36 -46
  299. package/dist/domain/electronStaticAnalysisIpc.js +38 -14
  300. package/dist/domain/electronStaticAnalysisNative.js +1 -8
  301. package/dist/domain/electronStaticAnalysisValues.js +14 -18
  302. package/dist/domain/errors.js +33 -54
  303. package/dist/domain/eventProcessTree.js +101 -90
  304. package/dist/domain/evidence.js +2 -10
  305. package/dist/domain/evidenceBundle.js +3 -5
  306. package/dist/domain/evidenceCompletionLedger.js +6 -8
  307. package/dist/domain/functionComparison.js +4 -14
  308. package/dist/domain/functionComparisonNormalization.js +8 -8
  309. package/dist/domain/functionComparisonResults.js +25 -15
  310. package/dist/domain/functionComparisonSchemas.js +49 -33
  311. package/dist/domain/functionDossierEvidence.js +31 -151
  312. package/dist/domain/hopperStartupFailure.js +1 -1
  313. package/dist/domain/hopperValues.js +17 -141
  314. package/dist/domain/inputIssueProjection.js +4 -1
  315. package/dist/domain/interfaceBuilderGraph.js +654 -0
  316. package/dist/domain/javascriptApplicationAnalysis.js +8 -112
  317. package/dist/domain/javascriptApplicationChangeGraph.js +22 -82
  318. package/dist/domain/javascriptApplicationEvidenceSchemas.js +59 -47
  319. package/dist/domain/javascriptApplicationGraph.js +3 -13
  320. package/dist/domain/javascriptApplicationGraphSchemas.js +12 -34
  321. package/dist/domain/javascriptApplicationVersionComparison.js +26 -30
  322. package/dist/domain/javascriptApplicationVersionComparisonSchemas.js +123 -68
  323. package/dist/domain/javascriptApplicationVersionItems.js +120 -53
  324. package/dist/domain/javascriptApplicationVersionKeys.js +24 -11
  325. package/dist/domain/javascriptAstFingerprint.js +25 -58
  326. package/dist/domain/javascriptAstValues.js +9 -0
  327. package/dist/domain/javascriptExportInstrumentation.js +2 -4
  328. package/dist/domain/javascriptExportShapeComparison.js +6 -7
  329. package/dist/domain/javascriptExportShapeComparisonSchemas.js +70 -77
  330. package/dist/domain/javascriptExportShapeSelection.js +17 -19
  331. package/dist/domain/javascriptFeatureSeed.js +20 -12
  332. package/dist/domain/javascriptFeatureTrace.js +13 -67
  333. package/dist/domain/javascriptFeatureTraceSchemas.js +24 -52
  334. package/dist/domain/javascriptFeatureTraversal.js +1 -44
  335. package/dist/domain/javascriptNativeHandoff.js +1 -1
  336. package/dist/domain/javascriptReplay.js +100 -101
  337. package/dist/domain/javascriptRuntimeLoadState.js +3 -8
  338. package/dist/domain/javascriptRuntimeObservation.js +43 -103
  339. package/dist/domain/javascriptRuntimeReconciliation.js +1 -3
  340. package/dist/domain/javascriptRuntimeReconciliationActive.js +80 -0
  341. package/dist/domain/javascriptRuntimeReconciliationGraph.js +21 -33
  342. package/dist/domain/javascriptRuntimeReconciliationMatching.js +75 -61
  343. package/dist/domain/javascriptRuntimeReconciliationParsing.js +21 -46
  344. package/dist/domain/javascriptRuntimeReconciliationResult.js +25 -19
  345. package/dist/domain/javascriptRuntimeReconciliationRuntime.js +8 -12
  346. package/dist/domain/javascriptRuntimeReconciliationSchemas.js +34 -49
  347. package/dist/domain/javascriptRuntimeStaticCandidates.js +3 -3
  348. package/dist/domain/javascriptSemanticAnalysis.js +12 -45
  349. package/dist/domain/javascriptSemanticAsyncEffects.js +1 -9
  350. package/dist/domain/javascriptSemanticCallResolution.js +6 -16
  351. package/dist/domain/javascriptSemanticCalls.js +5 -32
  352. package/dist/domain/javascriptSemanticChildProcesses.js +1 -11
  353. package/dist/domain/javascriptSemanticCoverage.js +11 -0
  354. package/dist/domain/javascriptSemanticDataEffectHelpers.js +1 -8
  355. package/dist/domain/javascriptSemanticDataEffects.js +1 -11
  356. package/dist/domain/javascriptSemanticFingerprints.js +3 -5
  357. package/dist/domain/javascriptSemanticGraphSchemas.js +25 -51
  358. package/dist/domain/javascriptSemanticGraphSerialization.js +2 -13
  359. package/dist/domain/javascriptSemanticIr.js +1 -29
  360. package/dist/domain/javascriptSemanticObjects.js +1 -5
  361. package/dist/domain/javascriptSemanticPrimitives.js +2 -9
  362. package/dist/domain/javascriptSemanticProjection.js +0 -18
  363. package/dist/domain/javascriptSemanticPromises.js +9 -16
  364. package/dist/domain/javascriptSemanticProvenance.js +16 -19
  365. package/dist/domain/javascriptSemanticQuery.js +17 -139
  366. package/dist/domain/javascriptSemanticQueryAssessment.js +9 -37
  367. package/dist/domain/javascriptSemanticQueryIdentity.js +2 -23
  368. package/dist/domain/javascriptSemanticQuerySchemas.js +14 -107
  369. package/dist/domain/javascriptSemanticResources.js +1 -6
  370. package/dist/domain/javascriptSemanticReturns.js +10 -27
  371. package/dist/domain/javascriptSemanticValueTypes.js +1 -0
  372. package/dist/domain/javascriptSemanticValues.js +44 -62
  373. package/dist/domain/javascriptStaticAnalysis.js +21 -43
  374. package/dist/domain/javascriptStaticAnalysisBundler.js +34 -93
  375. package/dist/domain/javascriptStaticAnalysisCalls.js +17 -16
  376. package/dist/domain/javascriptStaticAnalysisFindings.js +3 -19
  377. package/dist/domain/javascriptStaticAnalysisHelpers.js +47 -88
  378. package/dist/domain/javascriptStaticAnalysisState.js +1 -5
  379. package/dist/domain/javascriptStaticAnalysisTypes.js +1 -0
  380. package/dist/domain/jsonShape.js +7 -33
  381. package/dist/domain/localPath.js +7 -0
  382. package/dist/domain/managedApplicationGraph.js +9 -41
  383. package/dist/domain/managedApplicationGraphCoverage.js +24 -156
  384. package/dist/domain/managedApplicationGraphNodes.js +10 -13
  385. package/dist/domain/managedArtifact.js +14 -27
  386. package/dist/domain/managedMemberComparison.js +90 -92
  387. package/dist/domain/managedMemberComparisonCoverage.js +11 -33
  388. package/dist/domain/managedMemberComparisonItems.js +221 -0
  389. package/dist/domain/managedMemberComparisonMatch.js +8 -208
  390. package/dist/domain/managedNativeVerification.js +3 -6
  391. package/dist/domain/managedNativeVerificationMatch.js +55 -59
  392. package/dist/domain/managedNativeVerificationSchemas.js +83 -47
  393. package/dist/domain/managedReconstruction.js +19 -23
  394. package/dist/domain/managedRuntimeCorrelation.js +6 -9
  395. package/dist/domain/nativeApiBoundary.js +17 -14
  396. package/dist/domain/nativeInspection.js +0 -2
  397. package/dist/domain/nativeInvestigationGraph.js +351 -0
  398. package/dist/domain/nativeValueFlow.js +61 -0
  399. package/dist/domain/nodeRuntimeCharacterization.js +15 -18
  400. package/dist/domain/objcSwiftMetadata.js +254 -0
  401. package/dist/domain/peInspection.js +1 -1
  402. package/dist/domain/permissionPolicy.js +13 -0
  403. package/dist/domain/processCapture.js +76 -113
  404. package/dist/domain/processCaptureExample.js +68 -0
  405. package/dist/domain/processCaptureParsing.js +21 -0
  406. package/dist/domain/processCaptureReactiveSchema.js +68 -0
  407. package/dist/domain/processCaptureReactiveValidation.js +8 -3
  408. package/dist/domain/processCaptureValidation.js +8 -10
  409. package/dist/domain/processComparison.js +12 -16
  410. package/dist/domain/processObservation.js +5 -6
  411. package/dist/domain/processReactiveMatching.js +32 -46
  412. package/dist/domain/processReactiveRuntime.js +4 -8
  413. package/dist/domain/processReactiveScenario.js +28 -94
  414. package/dist/domain/processReactiveScenarioPreflight.js +5 -30
  415. package/dist/domain/processReactiveTransition.js +42 -21
  416. package/dist/domain/processScenario.js +62 -93
  417. package/dist/domain/processTraceComparison.js +0 -7
  418. package/dist/domain/processTraceEvaluation.js +14 -4
  419. package/dist/domain/processTraceSpecification.js +11 -17
  420. package/dist/domain/protocolCapture.js +11 -9
  421. package/dist/domain/reconstructionCoverage.js +62 -129
  422. package/dist/domain/reconstructionCoverageEvaluation.js +17 -17
  423. package/dist/domain/reconstructionObligationLedgerSchemas.js +45 -72
  424. package/dist/domain/reconstructionReadiness.js +1 -2
  425. package/dist/domain/reconstructionReadinessSchemas.js +66 -40
  426. package/dist/domain/reconstructionUnknowns.js +3 -3
  427. package/dist/domain/reconstructionVerification.js +13 -47
  428. package/dist/domain/reconstructionVerificationSchemas.js +50 -38
  429. package/dist/domain/referenceSourceGraph.js +53 -61
  430. package/dist/domain/referenceSourceImportParsing.js +3 -7
  431. package/dist/domain/replayMachine.js +19 -31
  432. package/dist/domain/replayMachineRun.js +15 -63
  433. package/dist/domain/replayMachineRuntime.js +46 -44
  434. package/dist/domain/replayMachineValues.js +84 -0
  435. package/dist/domain/residualUnknown.js +25 -30
  436. package/dist/domain/runtimeCharacterization.js +15 -16
  437. package/dist/domain/runtimeIdentification.js +48 -47
  438. package/dist/domain/sourceToBundleComparison.js +11 -87
  439. package/dist/domain/sourceToBundleComparisonSchemas.js +25 -50
  440. package/dist/domain/sourceToBundleSignals.js +11 -16
  441. package/dist/domain/staticRuntimeCorrelation.js +44 -54
  442. package/dist/domain/symbolAnalysis.js +10 -19
  443. package/dist/domain/unicodeCodePointOrder.js +12 -0
  444. package/dist/domain/webBundleAnalysis.js +70 -99
  445. package/dist/domain/webBundleAnalyzer.js +2 -4
  446. package/dist/domain/webBundleAnalyzerAst.js +0 -13
  447. package/dist/domain/webBundleAnalyzerInspection.js +26 -52
  448. package/dist/domain/webBundleAnalyzerResult.js +7 -24
  449. package/dist/domain/webCaptureDiff.js +48 -85
  450. package/dist/domain/webCaptureDiffSchemas.js +86 -0
  451. package/dist/domain/webContentArtifact.js +1 -10
  452. package/dist/domain/webMcpDiscovery.js +3 -14
  453. package/dist/domain/webScreenshot.js +58 -34
  454. package/dist/domain/zipPackageFormat.js +7 -0
  455. package/dist/dotnet/ManagedArtifactInspector.js +17 -50
  456. package/dist/dotnet/ManagedMemberInspector.js +27 -58
  457. package/dist/dotnet/ManagedMemberInspectorCore.js +14 -51
  458. package/dist/dotnet/ManagedMemberInstructionDecoder.js +2 -2
  459. package/dist/dotnet/ManagedMemberRows.js +16 -16
  460. package/dist/dotnet/ManagedMetadataHeaps.js +26 -8
  461. package/dist/dotnet/ManagedMetadataInventory.js +21 -30
  462. package/dist/dotnet/ManagedMetadataInventoryRows.js +57 -63
  463. package/dist/dotnet/ManagedMetadataLayout.js +3 -5
  464. package/dist/dotnet/ManagedMethodBodyReader.js +5 -30
  465. package/dist/dotnet/ManagedNativeBoundaryHelpers.js +19 -49
  466. package/dist/dotnet/ManagedNativeBoundaryInspector.js +13 -42
  467. package/dist/dotnet/ManagedPeReader.js +2 -2
  468. package/dist/dotnet/ManagedStaticProvider.js +13 -71
  469. package/dist/generatedMcpToolCatalog.js +1 -1
  470. package/dist/generatedPackageMetadata.js +1 -1
  471. package/dist/ghidra/GhidraAnalysisProfile.js +3 -8
  472. package/dist/ghidra/GhidraClient.js +5 -13
  473. package/dist/ghidra/GhidraClientStartup.js +1 -1
  474. package/dist/ghidra/GhidraClientWire.js +9 -5
  475. package/dist/ghidra/GhidraDefaults.js +0 -18
  476. package/dist/ghidra/GhidraDiagnostics.js +0 -2
  477. package/dist/ghidra/GhidraDoctor.js +16 -12
  478. package/dist/ghidra/GhidraFunctionValues.js +67 -108
  479. package/dist/ghidra/GhidraInstallation.js +98 -42
  480. package/dist/ghidra/GhidraInventoryValues.js +18 -77
  481. package/dist/ghidra/GhidraLauncher.js +0 -8
  482. package/dist/ghidra/GhidraProvider.js +32 -31
  483. package/dist/ghidra/GhidraProviderCapabilities.js +11 -48
  484. package/dist/ghidra/GhidraRequestQueue.js +6 -30
  485. package/dist/ghidra/GhidraResponseBuffer.js +1 -7
  486. package/dist/ghidra/GhidraSessionValues.js +0 -2
  487. package/dist/ghidra/GhidraSocketConnection.js +1 -1
  488. package/dist/ghidra/GhidraTransport.js +4 -7
  489. package/dist/ghidra/protocol.js +19 -42
  490. package/dist/hopper/BridgeLauncher.js +115 -37
  491. package/dist/hopper/HopperAnalysisProfile.js +3 -5
  492. package/dist/hopper/HopperCleanup.js +11 -9
  493. package/dist/hopper/HopperClient.js +5 -8
  494. package/dist/hopper/HopperProcessDiagnostic.js +2 -2
  495. package/dist/hopper/HopperProvider.js +0 -30
  496. package/dist/hopper/HopperRequestQueue.js +21 -40
  497. package/dist/hopper/HopperResponseStream.js +1 -9
  498. package/dist/hopper/HopperSessionValues.js +3 -2
  499. package/dist/hopper/HopperTargetLease.js +119 -0
  500. package/dist/hopper/LinuxPrivateDisplayDiagnostic.js +24 -31
  501. package/dist/hopper/LinuxPrivateDisplayProbe.js +21 -26
  502. package/dist/hopper/protocol.js +6 -4
  503. package/dist/main/reload.js +1 -9
  504. package/dist/main/shutdown.js +1 -1
  505. package/dist/main/state.js +0 -23
  506. package/dist/main/transport.js +27 -39
  507. package/dist/main.js +17 -15
  508. package/dist/mcpDoctor.js +27 -69
  509. package/dist/native/CommandRunner.js +18 -25
  510. package/dist/native/NativeMacOSProvider.js +13 -38
  511. package/dist/native/NativeMachoInspection.js +1 -1
  512. package/dist/process/BoundedFileBytes.js +17 -0
  513. package/dist/process/ExecFileOutput.js +11 -0
  514. package/dist/process/PendingOperations.js +8 -6
  515. package/dist/process/PrivateRuntimeRoot.js +17 -0
  516. package/dist/process/ProcessOwnership.js +67 -130
  517. package/dist/process/ProcessOwnershipIdentity.js +13 -0
  518. package/dist/process/ProcessOwnershipObservation.js +87 -0
  519. package/dist/process/ProcessOwnershipProcessTree.js +22 -0
  520. package/dist/process/ProviderDeadline.js +8 -12
  521. package/dist/process/ProviderProcess.js +7 -28
  522. package/dist/process/WindowsAuthority.js +32 -0
  523. package/dist/reference/ReferenceSourceReader.js +8 -24
  524. package/dist/reference/ReferenceSourceReaderEntries.js +11 -39
  525. package/dist/reference/ReferenceSourceReaderFile.js +13 -31
  526. package/dist/reference/ReferenceSourceReaderPaths.js +3 -18
  527. package/dist/reference/ReferenceSourceReaderValidate.js +3 -6
  528. package/dist/replay/JavaScriptReplayWorker.js +95 -13
  529. package/dist/replay/JavaScriptReplayWorkerTypes.js +1 -0
  530. package/dist/replay/LinuxJavaScriptReplayRunner.js +42 -43
  531. package/dist/replay/LinuxJavaScriptReplaySandbox.js +0 -19
  532. package/dist/replay/LinuxRuntimeClosure.js +1 -3
  533. package/dist/replay/ReplayOutcome.js +27 -18
  534. package/dist/replay/ReplayProcessLifecycle.js +32 -7
  535. package/dist/replay/ReplaySeccompFile.js +29 -0
  536. package/dist/replay/ReplayWorkerProtocol.js +33 -30
  537. package/dist/replay/SystemJavaScriptReplayHost.js +45 -74
  538. package/dist/server/ProcessCaptureElicitation.js +4 -8
  539. package/dist/server/createServer.js +145 -119
  540. package/dist/server/mcpClientMetadata.js +32 -0
  541. package/dist/server/promptCompletion.js +37 -61
  542. package/dist/server/recordDerivedEvidence.js +1 -1
  543. package/dist/server/registerApplicationTools/characterization.js +10 -21
  544. package/dist/server/registerApplicationTools/compareExportShapes.js +6 -16
  545. package/dist/server/registerApplicationTools/compareSourceToBundle.js +6 -15
  546. package/dist/server/registerApplicationTools/compareVersions.js +6 -16
  547. package/dist/server/registerApplicationTools/controlledReplay.js +8 -15
  548. package/dist/server/registerApplicationTools/coverage.js +7 -78
  549. package/dist/server/registerApplicationTools/helpers.js +1 -13
  550. package/dist/server/registerApplicationTools/obligationLedger.js +4 -8
  551. package/dist/server/registerApplicationTools/traceFeature.js +6 -15
  552. package/dist/server/registerApplicationTools/traceSemantics.js +5 -13
  553. package/dist/server/registerApplicationTools.js +0 -2
  554. package/dist/server/registerArtifactComparisonTool.js +27 -35
  555. package/dist/server/registerBrowserScenarioTool.js +3 -8
  556. package/dist/server/registerBrowserTools.js +36 -81
  557. package/dist/server/registerBundleComparisonTool.js +10 -16
  558. package/dist/server/registerCloseLifecycleTool.js +5 -27
  559. package/dist/server/registerElectronTools.js +29 -65
  560. package/dist/server/registerEnhancedTools.js +118 -127
  561. package/dist/server/registerEvidenceTools.js +19 -30
  562. package/dist/server/registerFunctionComparisonTool.js +35 -34
  563. package/dist/server/registerInvestigationTools/helpers.js +3 -32
  564. package/dist/server/registerInvestigationTools.js +36 -148
  565. package/dist/server/registerJavaScriptRuntimeObservationTools.js +15 -27
  566. package/dist/server/registerManagedWorkflowTools/compareManagedMembers.js +16 -23
  567. package/dist/server/registerManagedWorkflowTools/contract.js +2 -3
  568. package/dist/server/registerManagedWorkflowTools/evidence.js +19 -35
  569. package/dist/server/registerManagedWorkflowTools/importManagedReconstruction.js +4 -14
  570. package/dist/server/registerManagedWorkflowTools/planManagedRuntimeCorrelation.js +4 -14
  571. package/dist/server/registerManagedWorkflowTools/projectManagedApplicationGraph.js +11 -20
  572. package/dist/server/registerManagedWorkflowTools/verifyManagedNativeBoundaries.js +10 -21
  573. package/dist/server/registerOfficialTools.js +8 -51
  574. package/dist/server/registerProcessComparisonTool.js +43 -38
  575. package/dist/server/registerPrompts.js +19 -17
  576. package/dist/server/registerReplayMachineTool.js +4 -10
  577. package/dist/server/registerSessionRecordTools.js +36 -153
  578. package/dist/server/registerSessionStatusTool.js +18 -96
  579. package/dist/server/registerSessionTools.js +34 -91
  580. package/dist/server/sessionAvailabilityPolicy.js +2 -3
  581. package/dist/server/sessionEvidence.js +9 -15
  582. package/dist/server/sessionToolPolicies.js +1 -13
  583. package/dist/server/toolRegistrationOptions.js +4 -192
  584. package/dist/server/toolResult.js +15 -67
  585. package/dist/serverIdentity.js +0 -20
  586. package/install.sh +1 -1
  587. package/package.json +27 -15
  588. package/scripts/electron-active-hook-boundaries.cjs +394 -0
  589. package/scripts/electron-active-hook.cjs +469 -0
  590. package/scripts/hopper-demo-x11.py +13 -32
  591. package/scripts/rea.mjs +1 -11
  592. package/skills/reverse-engineer-anything/SKILL.md +46 -11
  593. package/skills/reverse-engineer-anything/references/evidence-workflows.md +6 -4
  594. package/skills/reverse-engineer-anything/references/javascript-applications.md +13 -13
  595. package/skills/reverse-engineer-anything/references/native-and-artifacts.md +12 -8
  596. package/dist/application/ApplicationWorkflowEvidenceResolver.js +0 -180
  597. package/dist/application/BoundedJsonFiles.js +0 -86
  598. package/dist/application/CrossVersionInventory.js +0 -128
  599. package/dist/application/CrossVersionInvestigation.js +0 -301
  600. package/dist/application/CrossVersionInvestigationCollections.js +0 -23
  601. package/dist/application/CrossVersionInvestigationEvidence.js +0 -64
  602. package/dist/application/CrossVersionInvestigationReplay.js +0 -170
  603. package/dist/application/DeferredFileAuthorization.js +0 -61
  604. package/dist/application/DoctorProjection.js +0 -43
  605. package/dist/application/EnhancedToolPagination.js +0 -22
  606. package/dist/application/EvidenceReferenceResolver.js +0 -26
  607. package/dist/application/InvestigationWorkspaceStore.js +0 -204
  608. package/dist/application/ProcessPairedExperiment.js +0 -72
  609. package/dist/application/ReconstructionCoverageWorkspaceStore.js +0 -31
  610. package/dist/application/ReconstructionReadinessService.js +0 -48
  611. package/dist/cliInvestigationCommands.js +0 -173
  612. package/dist/domain/boundedCartesianProjection.js +0 -15
  613. package/dist/domain/investigationWorkspace.js +0 -346
  614. package/dist/domain/jsonLimits.js +0 -26
  615. package/dist/domain/knownPageCoverage.js +0 -21
  616. package/dist/domain/processPairedExperiment.js +0 -128
  617. package/dist/server/DynamicToolAvailability.js +0 -70
  618. package/dist/server/LazyToolCatalog.js +0 -134
  619. package/dist/server/hydrateServerTools.js +0 -191
  620. package/dist/server/javascriptApplicationResult.js +0 -106
  621. package/dist/server/permissionFailure.js +0 -12
  622. package/dist/server/registerApplicationTools/readiness.js +0 -55
  623. package/dist/server/registerEvidenceResources.js +0 -315
  624. package/dist/server/registerJavaScriptApplicationGraphResource.js +0 -65
  625. package/dist/server/registerReconstructionObligationLedgerResource.js +0 -32
  626. package/dist/server/registerReconstructionReadinessResource.js +0 -32
  627. package/dist/server/toolInputValidation.js +0 -77
  628. package/scripts/package-runner-bootstrap.mjs +0 -72
@@ -1,9 +1,6 @@
1
1
  import { readEvidenceBundle, writeEvidenceBundle, } from "../application/EvidenceBundleFiles.js";
2
- import { exportEvidenceBundleInputSchema, importEvidenceBundleInputSchema, listUnknownsInputSchema, snapshotEvidenceBundleInputSchema, SESSION_TOOL_CONTRACTS, verifyUnknownResolutionInputSchema, } from "../contracts/toolContracts.js";
3
- import { AnalysisProtocolError, PermissionRequiredError, } from "../domain/errors.js";
4
- import { recordUnknownInputSchema, updateUnknownInputSchema, } from "../domain/residualUnknown.js";
5
- import { err, ok } from "../domain/result.js";
6
- import { safeParseToolInput } from "./toolInputValidation.js";
2
+ import { SESSION_TOOL_CONTRACTS } from "../contracts/toolContracts.js";
3
+ import { ok } from "../domain/result.js";
7
4
  import { toolRegistrationOptions } from "./toolRegistrationOptions.js";
8
5
  import { toCallToolResult } from "./toolResult.js";
9
6
  /** Register evidence bundle import and export tools. */
@@ -12,23 +9,10 @@ export const registerEvidenceTools = (registration) => {
12
9
  registerImportEvidenceTool(registration);
13
10
  registerSnapshotEvidenceTool(registration);
14
11
  };
15
- const registerExportEvidenceTool = ({ server, session, exportContract, filePolicy, permissionAuthority, }) => {
12
+ const registerExportEvidenceTool = ({ server, session, exportContract, }) => {
16
13
  server.registerTool(exportContract.name, toolRegistrationOptions(exportContract), async (input) => {
17
- const parsedInput = safeParseToolInput(exportEvidenceBundleInputSchema, input, exportContract.name);
18
- if (!parsedInput.ok)
19
- return toCallToolResult(parsedInput, exportContract);
20
- const parsed = parsedInput.value;
21
14
  const bundle = session.exportEvidenceBundle();
22
- const denied = await authorizeEvidencePath({
23
- authority: permissionAuthority,
24
- capability: "evidence_write",
25
- path: parsed.path,
26
- access: "write",
27
- operationIdentity: `export_evidence:${parsed.path}`,
28
- });
29
- if (denied !== undefined)
30
- return toCallToolResult(denied, exportContract);
31
- const written = await writeEvidenceBundle(bundle, parsed.path, parsed.overwrite, filePolicy);
15
+ const written = await writeEvidenceBundle(bundle, input.path, input.overwrite);
32
16
  return written.ok
33
17
  ? toCallToolResult(ok({
34
18
  path: written.value.path,
@@ -40,84 +24,33 @@ const registerExportEvidenceTool = ({ server, session, exportContract, filePolic
40
24
  });
41
25
  };
42
26
  const registerSnapshotEvidenceTool = ({ server, session, snapshotContract, }) => {
43
- server.registerTool(snapshotContract.name, toolRegistrationOptions(snapshotContract), (input) => {
44
- const parsed = safeParseToolInput(snapshotEvidenceBundleInputSchema, input, snapshotContract.name);
45
- if (!parsed.ok)
46
- return toCallToolResult(parsed, snapshotContract);
47
- const snapshot = session.snapshotEvidenceBundle();
48
- if (!snapshot.ok)
49
- return toCallToolResult(snapshot, snapshotContract);
50
- const value = {
51
- bundle_digest: snapshot.value.bundleDigest,
52
- bundle_version: snapshot.value.bundleVersion,
53
- bytes: snapshot.value.bytes,
54
- records: snapshot.value.records,
55
- unknowns: snapshot.value.unknowns,
56
- bundle_uri: snapshot.value.uri,
57
- };
58
- return toCallToolResult(ok(value), snapshotContract, {
59
- resourceLinks: [
60
- {
61
- uri: snapshot.value.uri,
62
- name: snapshot.value.bundleDigest,
63
- description: "Immutable session-retained Evidence v2 bundle",
64
- },
65
- ],
66
- });
67
- });
27
+ server.registerTool(snapshotContract.name, toolRegistrationOptions(snapshotContract), () => toCallToolResult(ok(session.exportEvidenceBundle()), snapshotContract));
68
28
  };
69
- const registerImportEvidenceTool = ({ server, session, importContract, filePolicy, permissionAuthority, }) => {
29
+ const registerImportEvidenceTool = ({ server, session, importContract, }) => {
70
30
  server.registerTool(importContract.name, toolRegistrationOptions(importContract), async (input) => {
71
- const parsedInput = safeParseToolInput(importEvidenceBundleInputSchema, input, importContract.name);
72
- if (!parsedInput.ok)
73
- return toCallToolResult(parsedInput, importContract);
74
- const path = parsedInput.value.path;
75
- const denied = await authorizeEvidencePath({
76
- authority: permissionAuthority,
77
- capability: "evidence_read",
78
- path,
79
- access: "read",
80
- operationIdentity: `import_evidence:${path}`,
81
- });
82
- if (denied !== undefined)
83
- return toCallToolResult(denied, importContract);
84
- const loaded = await readEvidenceBundle(path, filePolicy);
31
+ const path = input.path;
32
+ const loaded = await readEvidenceBundle(path);
85
33
  if (!loaded.ok)
86
34
  return toCallToolResult(loaded, importContract);
35
+ const retainedUnknownRevisions = new Set(session
36
+ .exportEvidenceBundle()
37
+ .unknowns.map((unknown) => unknownRevisionKey(unknown)));
87
38
  const imported = session.importEvidenceBundle(loaded.value);
88
39
  return imported.ok
89
40
  ? toCallToolResult(ok({
90
41
  imported: imported.value,
42
+ unknowns_added: loaded.value.unknowns.filter((unknown) => !retainedUnknownRevisions.has(unknownRevisionKey(unknown))).length,
91
43
  total: session.exportEvidenceBundle().records.length,
92
44
  }), importContract)
93
45
  : toCallToolResult(imported, importContract);
94
46
  });
95
47
  };
96
- const authorizeEvidencePath = async (input) => {
97
- if (input.authority === undefined)
98
- return undefined;
99
- const authorized = await input.authority.authorize({
100
- capability: input.capability,
101
- roots: [input.path],
102
- executables: [],
103
- environment_names: [],
104
- network: "none",
105
- mount: false,
106
- operation_identity: input.operationIdentity,
107
- }, input.access);
108
- return authorized.ok ? undefined : permissionFailure(authorized);
109
- };
48
+ const unknownRevisionKey = (unknown) => `${unknown.unknown_id}:${String(unknown.revision)}`;
110
49
  /** Register residual-unknown query and mutation tools. */
111
- export const registerUnknownTools = ({ server, session, contracts, }) => {
50
+ const registerListUnknownsTool = ({ server, session, contracts, }) => {
112
51
  const listContract = contracts[14];
113
- const recordContract = contracts[15];
114
- const updateContract = contracts[16];
115
- const verifyContract = contracts[17];
116
52
  server.registerTool(listContract.name, toolRegistrationOptions(listContract), (input) => {
117
- const parsed = safeParseToolInput(listUnknownsInputSchema, input, listContract.name);
118
- if (!parsed.ok)
119
- return toCallToolResult(parsed, listContract);
120
- const filters = parsed.value;
53
+ const filters = input;
121
54
  const all = session.listUnknowns({
122
55
  ...(filters.status === undefined ? {} : { status: filters.status }),
123
56
  ...(filters.severity === undefined
@@ -125,83 +58,33 @@ export const registerUnknownTools = ({ server, session, contracts, }) => {
125
58
  : { severity: filters.severity }),
126
59
  ...(filters.domain === undefined ? {} : { domain: filters.domain }),
127
60
  });
128
- const items = all
129
- .slice(filters.offset, filters.offset + filters.limit)
130
- .map((unknown) => ({
131
- unknown,
132
- uri: `rea://unknown/${unknown.unknown_id}`,
133
- }));
134
- const nextOffset = filters.offset + items.length < all.length
135
- ? filters.offset + items.length
136
- : null;
137
61
  return toCallToolResult(ok({
138
- items,
139
- offset: filters.offset,
140
- limit: filters.limit,
62
+ items: all,
141
63
  total: all.length,
142
- next_offset: nextOffset,
143
- has_more: nextOffset !== null,
144
- }), listContract, {
145
- resourceLinks: items.map((unknown) => ({
146
- uri: unknown.uri,
147
- name: unknown.unknown.unknown_id,
148
- description: `Current ${unknown.unknown.status} residual unknown revision`,
149
- })),
150
- });
64
+ }), listContract);
151
65
  });
66
+ };
67
+ const registerRecordUnknownTool = ({ server, session, contracts, }) => {
68
+ const recordContract = contracts[15];
152
69
  server.registerTool(recordContract.name, toolRegistrationOptions(recordContract), (input) => {
153
- const parsed = safeParseToolInput(recordUnknownInputSchema, input, recordContract.name);
154
- if (!parsed.ok)
155
- return toCallToolResult(parsed, recordContract);
156
- const result = session.recordUnknown(parsed.value);
157
- return result.ok
158
- ? toCallToolResult(result, recordContract, {
159
- resourceLinks: [
160
- {
161
- uri: `rea://unknown/${result.value.unknown_id}`,
162
- name: result.value.unknown_id,
163
- description: "Current residual unknown head",
164
- },
165
- ],
166
- })
167
- : toCallToolResult(result, recordContract);
70
+ const result = session.recordUnknown(input);
71
+ return toCallToolResult(result, recordContract);
168
72
  });
73
+ };
74
+ const registerUpdateUnknownTool = ({ server, session, contracts, }) => {
75
+ const updateContract = contracts[16];
169
76
  server.registerTool(updateContract.name, toolRegistrationOptions(updateContract), (input) => {
170
- const parsed = safeParseToolInput(updateUnknownInputSchema, input, updateContract.name);
171
- if (!parsed.ok)
172
- return toCallToolResult(parsed, updateContract);
173
- const result = session.updateUnknown(parsed.value);
174
- if (result.ok)
175
- void server.server
176
- .sendResourceUpdated({
177
- uri: `rea://unknown/${result.value.unknown_id}`,
178
- })
179
- .catch(() => undefined);
180
- return result.ok
181
- ? toCallToolResult(result, updateContract, {
182
- resourceLinks: [
183
- {
184
- uri: `rea://unknown/${result.value.unknown_id}`,
185
- name: result.value.unknown_id,
186
- description: "Updated residual unknown head",
187
- },
188
- ],
189
- })
190
- : toCallToolResult(result, updateContract);
191
- });
192
- server.registerTool(verifyContract.name, toolRegistrationOptions(verifyContract), (input) => {
193
- const parsed = safeParseToolInput(verifyUnknownResolutionInputSchema, input, verifyContract.name);
194
- return parsed.ok
195
- ? toCallToolResult(session.verifyUnknownResolution(parsed.value.unknown_id), verifyContract)
196
- : toCallToolResult(parsed, verifyContract);
77
+ const result = session.updateUnknown(input);
78
+ return toCallToolResult(result, updateContract);
197
79
  });
198
80
  };
199
- const permissionFailure = (failure) => {
200
- if (failure.ok)
201
- return err(new AnalysisProtocolError("Expected a denied permission"));
202
- return err(failure.error instanceof PermissionRequiredError
203
- ? failure.error
204
- : new AnalysisProtocolError(failure.error.message, {
205
- cause: failure.error,
206
- }));
81
+ const registerVerifyUnknownTool = ({ server, session, contracts, }) => {
82
+ const verifyContract = contracts[17];
83
+ server.registerTool(verifyContract.name, toolRegistrationOptions(verifyContract), (input) => toCallToolResult(session.verifyUnknownResolution(input.unknown_id), verifyContract));
84
+ };
85
+ export const registerUnknownTools = (registration) => {
86
+ registerListUnknownsTool(registration);
87
+ registerRecordUnknownTool(registration);
88
+ registerUpdateUnknownTool(registration);
89
+ registerVerifyUnknownTool(registration);
207
90
  };
@@ -1,53 +1,37 @@
1
- import { binarySessionInputSchema, SESSION_TOOL_CONTRACTS, } from "../contracts/toolContracts.js";
2
- import { toCallToolResult } from "./toolResult.js";
1
+ import { buildCapabilityInventory } from "../application/CapabilityInventory.js";
2
+ import { SESSION_TOOL_CONTRACTS } from "../contracts/toolContracts.js";
3
3
  import { jsonObjectSchema } from "../domain/jsonValue.js";
4
4
  import { createServerIdentity } from "../serverIdentity.js";
5
- import { buildCapabilityInventory } from "../application/CapabilityInventory.js";
5
+ import { mcpClientMetadata } from "./mcpClientMetadata.js";
6
6
  import { toolRegistrationOptions } from "./toolRegistrationOptions.js";
7
- import { safeParseToolInput } from "./toolInputValidation.js";
7
+ import { toCallToolResult } from "./toolResult.js";
8
8
  /** Register the read-only provider and target status operation. */
9
9
  export const registerSessionStatusTool = (options) => {
10
10
  const { server, session, contract, startedAt, availabilityPolicy } = options;
11
- server.registerTool(contract.name, toolRegistrationOptions(contract), (input) => {
12
- const parsedInput = safeParseToolInput(binarySessionInputSchema, input, contract.name);
13
- if (!parsedInput.ok)
14
- return toCallToolResult(parsedInput, contract);
15
- const parsed = parsedInput.value;
16
- const client = server.server.getClientVersion();
17
- const clientCapabilities = server.server.getClientCapabilities();
18
- const clientFeatures = {
19
- elicitation_form: clientCapabilities?.elicitation?.form !== undefined,
20
- elicitation_url: clientCapabilities?.elicitation?.url !== undefined,
21
- roots: clientCapabilities?.roots !== undefined,
22
- sampling: clientCapabilities?.sampling !== undefined,
23
- };
11
+ server.registerTool(contract.name, toolRegistrationOptions(contract), (input, context) => {
12
+ const { client, clientFeatures, protocolVersion } = mcpClientMetadata(context);
24
13
  const status = session.status();
25
14
  const statusObject = jsonObjectSchema.parse(status);
26
15
  const toolAvailability = buildCapabilityInventory(status, availabilityPolicy(), clientFeatures);
27
16
  const serverIdentity = createServerIdentity({
28
17
  startedAt,
29
18
  expected: {
30
- ...(parsed.expected_package_version === undefined
19
+ ...(input.expected_package_version === undefined
31
20
  ? {}
32
- : { package_version: parsed.expected_package_version }),
33
- ...(parsed.expected_catalog_digest === undefined
21
+ : { package_version: input.expected_package_version }),
22
+ ...(input.expected_catalog_digest === undefined
34
23
  ? {}
35
- : { catalog_digest: parsed.expected_catalog_digest }),
36
- ...(parsed.expected_server_path === undefined
24
+ : { catalog_digest: input.expected_catalog_digest }),
25
+ ...(input.expected_server_path === undefined
37
26
  ? {}
38
- : { server_path: parsed.expected_server_path }),
27
+ : { server_path: input.expected_server_path }),
39
28
  },
40
29
  ...(client === undefined ? {} : { client }),
41
- ...(server.server.getNegotiatedProtocolVersion() === undefined
42
- ? {}
43
- : {
44
- protocolVersion: server.server.getNegotiatedProtocolVersion(),
45
- }),
30
+ ...(protocolVersion === undefined ? {} : { protocolVersion }),
46
31
  });
47
32
  return toCallToolResult({
48
33
  ok: true,
49
34
  value: projectSessionStatus({
50
- input: parsed,
51
35
  status: statusObject,
52
36
  toolAvailability,
53
37
  serverIdentity,
@@ -56,71 +40,9 @@ export const registerSessionStatusTool = (options) => {
56
40
  }, contract);
57
41
  });
58
42
  };
59
- const projectSessionStatus = (options) => {
60
- if (options.input.detail === "full")
61
- return jsonObjectSchema.parse({
62
- view: "full",
63
- ...options.status,
64
- tool_availability: options.toolAvailability,
65
- client_features: options.clientFeatures,
66
- server_identity: options.serverIdentity,
67
- });
68
- const open = options.status.open === true;
69
- const activeProvider = activeProviderFrom(options.status);
70
- if (options.input.detail === "capabilities") {
71
- const filtered = options.input.capability_family === undefined
72
- ? options.toolAvailability
73
- : options.toolAvailability.filter(({ surface }) => surface === options.input.capability_family);
74
- const items = filtered.slice(options.input.cursor, options.input.cursor + options.input.limit);
75
- const nextCursor = options.input.cursor + items.length;
76
- return jsonObjectSchema.parse({
77
- view: "capabilities",
78
- open,
79
- provider: options.status.provider,
80
- active_provider: activeProvider,
81
- capability_family: options.input.capability_family ?? null,
82
- capabilities: {
83
- items,
84
- cursor: options.input.cursor,
85
- limit: options.input.limit,
86
- total: filtered.length,
87
- next_cursor: nextCursor < filtered.length ? nextCursor : null,
88
- has_more: nextCursor < filtered.length,
89
- },
90
- client_features: options.clientFeatures,
91
- });
92
- }
93
- return jsonObjectSchema.parse({
94
- view: "summary",
95
- open,
96
- provider: options.status.provider,
97
- active_provider: activeProvider,
98
- target: open ? targetFrom(options.status) : null,
99
- alignment: options.serverIdentity.alignment,
100
- analysis_activity: options.status.analysis_activity,
101
- recommended_actions: recommendedActions(open, options.serverIdentity.alignment.state),
102
- });
103
- };
104
- const activeProviderFrom = (status) => {
105
- const binding = jsonObjectSchema.safeParse(status.analysis_provider_binding);
106
- return binding.success ? (binding.data.provider ?? null) : null;
107
- };
108
- const targetFrom = (status) => ({
109
- path: status.path,
110
- format: status.format,
111
- kind: status.kind,
112
- sha256: status.sha256,
113
- architecture: status.architecture ?? null,
43
+ const projectSessionStatus = (options) => jsonObjectSchema.parse({
44
+ ...options.status,
45
+ tool_availability: options.toolAvailability,
46
+ client_features: options.clientFeatures,
47
+ server_identity: options.serverIdentity,
114
48
  });
115
- const recommendedActions = (open, alignment) => [
116
- ...(alignment === "mcp_server_restart_required"
117
- ? ["Restart the registered MCP server or client before continuing."]
118
- : []),
119
- ...(!open
120
- ? [
121
- "For a supplied target, route by format: ASAR/JavaScript to analyze_javascript_application; archive/package to open_binary(path), then inspect_artifact or inventory_artifact on the active target; managed PE/CLI to inspect_managed_artifact; browser/Electron runtimes to their list-target tools; native binaries to open_binary.",
122
- ]
123
- : [
124
- "Continue from the active target with binary_overview or a bounded target-specific query.",
125
- ]),
126
- ];
@@ -1,39 +1,33 @@
1
1
  import { z } from "zod";
2
- import { addressContextInputSchema, navigationContextInputSchema, SESSION_TOOL_CONTRACTS, } from "../contracts/toolContracts.js";
3
- import { toCallToolResult } from "./toolResult.js";
4
- import { logToolExecution } from "./toolLogging.js";
5
- import { ok } from "../domain/result.js";
6
- import { processScenarioSchema } from "../domain/processCapture.js";
7
- import { captureProcessScenario } from "../application/ProcessHarness.js";
8
- import { processCapturePermissionRequest } from "../application/ProcessCapturePermission.js";
2
+ import { isInputRequiredResult } from "@modelcontextprotocol/server";
3
+ import { getNavigationContext, inspectAddressContext, } from "../application/AnalysisContextQueries.js";
9
4
  import { readAnalysisSnapshot } from "../application/AnalysisSnapshotFiles.js";
10
- import { UnknownRegistryError } from "../domain/errors.js";
11
- import { DENY_EVIDENCE_FILE_POLICY, DENY_PROCESS_POLICY, } from "./sessionToolPolicies.js";
5
+ import { processCapturePermissionRequest } from "../application/ProcessCapturePermission.js";
12
6
  import { createProcessCaptureEvidence } from "../application/ProcessEvidence.js";
13
- import { registerProcessComparisonTool } from "./registerProcessComparisonTool.js";
7
+ import { captureProcessScenario } from "../application/ProcessHarness.js";
8
+ import { SESSION_TOOL_CONTRACTS } from "../contracts/toolContracts.js";
9
+ import { UnknownRegistryError } from "../domain/errors.js";
10
+ import { err, ok } from "../domain/result.js";
11
+ import { projectPermissionFailure } from "../application/PermissionFailure.js";
12
+ import { mcpProgressReporter } from "./mcpProgress.js";
13
+ import { authorizeProcessCaptureWithElicitation, } from "./ProcessCaptureElicitation.js";
14
14
  import { registerArtifactComparisonTool } from "./registerArtifactComparisonTool.js";
15
- import { registerFunctionComparisonTool } from "./registerFunctionComparisonTool.js";
16
- import { toolRegistrationOptions } from "./toolRegistrationOptions.js";
17
- import { safeParseToolInput } from "./toolInputValidation.js";
18
15
  import { registerBundleComparisonTool } from "./registerBundleComparisonTool.js";
16
+ import { registerCloseLifecycleTool } from "./registerCloseLifecycleTool.js";
17
+ import { registerFunctionComparisonTool } from "./registerFunctionComparisonTool.js";
19
18
  import { registerInvestigationTools } from "./registerInvestigationTools.js";
20
- import { openBinaryInputSchema } from "../contracts/sessionLifecycleInputs.js";
21
- import { registerSessionStatusTool } from "./registerSessionStatusTool.js";
22
- import { mcpProgressReporter } from "./mcpProgress.js";
23
- import { authorizeProcessCaptureWithElicitation, } from "./ProcessCaptureElicitation.js";
24
- import { isInputRequiredResult } from "@modelcontextprotocol/server";
25
- import { registerEvidenceTools, registerUnknownTools, } from "./registerSessionRecordTools.js";
19
+ import { registerProcessComparisonTool } from "./registerProcessComparisonTool.js";
26
20
  import { registerReplayMachineTool } from "./registerReplayMachineTool.js";
21
+ import { registerEvidenceTools, registerUnknownTools, } from "./registerSessionRecordTools.js";
22
+ import { registerSessionStatusTool } from "./registerSessionStatusTool.js";
27
23
  import { sessionAvailabilityPolicy, } from "./sessionAvailabilityPolicy.js";
28
- import { permissionFailure } from "./permissionFailure.js";
29
- import { registerCloseLifecycleTool } from "./registerCloseLifecycleTool.js";
30
- import { getNavigationContext, inspectAddressContext, } from "../application/AnalysisContextQueries.js";
24
+ import { DENY_PROCESS_POLICY } from "./sessionToolPolicies.js";
25
+ import { logToolExecution } from "./toolLogging.js";
26
+ import { toolRegistrationOptions } from "./toolRegistrationOptions.js";
27
+ import { toCallToolResult } from "./toolResult.js";
31
28
  const recordProcessResidualUnknowns = (session, scenario, evidence, residuals) => {
32
- if (scenario.unknown_registry_approved !== true)
33
- return ok(null);
34
29
  for (const residual of residuals) {
35
30
  const unknown = session.recordUnknown({
36
- approved: true,
37
31
  question: `Was ${residual.scope} behavior fully observed during capture?`,
38
32
  severity: "medium",
39
33
  domain: `process-${residual.scope}`,
@@ -59,10 +53,7 @@ const recordProcessResidualUnknowns = (session, scenario, evidence, residuals) =
59
53
  };
60
54
  const registerProcessTools = ({ server, session, logger, processPolicy, captureContract, permissionAuthority, processCaptureElicitation, }) => {
61
55
  server.registerTool(captureContract.name, toolRegistrationOptions(captureContract), async (input, context) => {
62
- const parsedInput = safeParseToolInput(processScenarioSchema, input, captureContract.name);
63
- if (!parsedInput.ok)
64
- return toCallToolResult(parsedInput, captureContract);
65
- const scenario = parsedInput.value;
56
+ const scenario = input;
66
57
  if (permissionAuthority !== undefined) {
67
58
  const request = processCapturePermissionRequest(scenario);
68
59
  const authorized = processCaptureElicitation === undefined
@@ -71,7 +62,7 @@ const registerProcessTools = ({ server, session, logger, processPolicy, captureC
71
62
  if (isInputRequiredResult(authorized))
72
63
  return authorized;
73
64
  if (!authorized.ok)
74
- return toCallToolResult(permissionFailure(authorized), captureContract);
65
+ return toCallToolResult(err(projectPermissionFailure(authorized.error)), captureContract);
75
66
  }
76
67
  const progress = mcpProgressReporter(context);
77
68
  await progress.report({
@@ -80,7 +71,7 @@ const registerProcessTools = ({ server, session, logger, processPolicy, captureC
80
71
  total: 1,
81
72
  message: "started",
82
73
  });
83
- const captured = await logToolExecution(logger, captureContract.name, () => captureProcessScenario(scenario, processPolicy, context.mcpReq.signal));
74
+ const captured = await logToolExecution(logger, captureContract.name, () => captureProcessScenario(scenario, processPolicy(), context.mcpReq.signal));
84
75
  await progress.report({
85
76
  phase: captureContract.name,
86
77
  completed: 1,
@@ -112,41 +103,22 @@ const registerLifecycleTools = (registration) => {
112
103
  availabilityPolicy,
113
104
  });
114
105
  };
115
- const registerOpenLifecycleTool = ({ server, session, logger, contracts: [openContract], snapshotFilePolicy, permissionAuthority, }) => {
106
+ const registerOpenLifecycleTool = ({ server, session, logger, contracts: [openContract], }) => {
116
107
  server.registerTool(openContract.name, toolRegistrationOptions(openContract), async (input, context) => {
117
- const parsedInput = safeParseToolInput(openBinaryInputSchema, input, openContract.name);
118
- if (!parsedInput.ok)
119
- return toCallToolResult(parsedInput, openContract);
120
- const parsed = parsedInput.value;
121
108
  let snapshot;
122
- if (parsed.snapshot_path !== undefined) {
123
- if (permissionAuthority !== undefined) {
124
- const authorized = await permissionAuthority.authorize({
125
- capability: "snapshot_read",
126
- roots: [parsed.snapshot_path],
127
- executables: [],
128
- environment_names: [],
129
- network: "none",
130
- mount: false,
131
- operation_identity: `open_binary:snapshot:${parsed.snapshot_path}`,
132
- }, "read");
133
- if (!authorized.ok)
134
- return toCallToolResult(permissionFailure(authorized), openContract);
135
- }
136
- const loaded = await readAnalysisSnapshot(parsed.snapshot_path, snapshotFilePolicy);
109
+ if (input.snapshot_path !== undefined) {
110
+ const loaded = await readAnalysisSnapshot(input.snapshot_path);
137
111
  if (!loaded.ok)
138
112
  return toCallToolResult(loaded, openContract);
139
113
  snapshot = loaded.value;
140
114
  }
141
- const opened = await logToolExecution(logger, openContract.name, () => session.open(parsed.path, {
115
+ const opened = await logToolExecution(logger, openContract.name, () => session.open(input.path, {
142
116
  signal: context.mcpReq.signal,
143
- ...(parsed.provider_id === undefined
117
+ ...(input.provider_id === undefined
144
118
  ? {}
145
- : { providerId: parsed.provider_id }),
119
+ : { providerId: input.provider_id }),
146
120
  ...(snapshot === undefined ? {} : { snapshot }),
147
121
  }));
148
- if (opened.ok)
149
- server.sendToolListChanged();
150
122
  return opened.ok
151
123
  ? toCallToolResult({
152
124
  ok: true,
@@ -176,22 +148,14 @@ const registerContextTools = (server, session) => {
176
148
  const navigationContract = SESSION_TOOL_CONTRACTS[20];
177
149
  const addressContract = SESSION_TOOL_CONTRACTS[21];
178
150
  server.registerTool(navigationContract.name, toolRegistrationOptions(navigationContract), async (input, context) => {
179
- const parsed = safeParseToolInput(navigationContextInputSchema, input, navigationContract.name);
180
- if (!parsed.ok)
181
- return toCallToolResult(parsed, navigationContract);
182
- return toCallToolResult(await getNavigationContext(session, parsed.value, context.mcpReq.signal), navigationContract);
151
+ return toCallToolResult(await getNavigationContext(session, input, context.mcpReq.signal), navigationContract);
183
152
  });
184
153
  server.registerTool(addressContract.name, toolRegistrationOptions(addressContract), async (input, context) => {
185
- const parsed = safeParseToolInput(addressContextInputSchema, input, addressContract.name);
186
- if (!parsed.ok)
187
- return toCallToolResult(parsed, addressContract);
188
- return toCallToolResult(await inspectAddressContext(session, parsed.value, context.mcpReq.signal), addressContract);
154
+ return toCallToolResult(await inspectAddressContext(session, input, context.mcpReq.signal), addressContract);
189
155
  });
190
156
  };
191
157
  export const registerSessionTools = (server, session, logger, options = {}) => {
192
- const processPolicy = options.processPolicy ?? DENY_PROCESS_POLICY;
193
- const evidenceFilePolicy = options.evidenceFilePolicy ?? DENY_EVIDENCE_FILE_POLICY;
194
- const analysisSnapshotFilePolicy = options.analysisSnapshotFilePolicy ?? DENY_EVIDENCE_FILE_POLICY;
158
+ const processPolicy = options.processPolicy ?? (() => DENY_PROCESS_POLICY);
195
159
  const [openContract, closeContract, statusContract, exportContract, importContract, captureContract, compareContract, compareArtifactsContract, compareFunctionsContract, compareBundlesContract, changedBehaviorContract, callPathContract, staticRuntimeContract, reconstructionContract,] = SESSION_TOOL_CONTRACTS;
196
160
  const snapshotContract = SESSION_TOOL_CONTRACTS[19];
197
161
  registerLifecycleTools({
@@ -199,16 +163,10 @@ export const registerSessionTools = (server, session, logger, options = {}) => {
199
163
  session,
200
164
  logger,
201
165
  contracts: [openContract, closeContract, statusContract],
202
- snapshotFilePolicy: analysisSnapshotFilePolicy,
203
166
  startedAt: options.startedAt ?? new Date().toISOString(),
204
167
  availabilityPolicy: sessionAvailabilityPolicy(options.availabilityPolicy, {
205
- processPolicy,
206
- evidenceFilePolicy,
207
- investigationInputRoots: options.investigationInputRoots ?? [],
168
+ processPolicy: processPolicy(),
208
169
  }),
209
- ...(options.permissionAuthority === undefined
210
- ? {}
211
- : { permissionAuthority: options.permissionAuthority }),
212
170
  });
213
171
  registerEvidenceTools({
214
172
  server,
@@ -216,10 +174,6 @@ export const registerSessionTools = (server, session, logger, options = {}) => {
216
174
  exportContract,
217
175
  importContract,
218
176
  snapshotContract,
219
- filePolicy: evidenceFilePolicy,
220
- ...(options.permissionAuthority === undefined
221
- ? {}
222
- : { permissionAuthority: options.permissionAuthority }),
223
177
  });
224
178
  registerProcessTools({
225
179
  server,
@@ -237,25 +191,14 @@ export const registerSessionTools = (server, session, logger, options = {}) => {
237
191
  registerProcessComparisonTool(server, session, compareContract);
238
192
  registerArtifactComparisonTool(server, session, compareArtifactsContract);
239
193
  registerFunctionComparisonTool(server, session, compareFunctionsContract);
240
- registerBundleComparisonTool(server, session, compareBundlesContract, evidenceFilePolicy);
194
+ registerBundleComparisonTool(server, session, compareBundlesContract);
241
195
  const investigationContracts = [
242
196
  changedBehaviorContract,
243
197
  callPathContract,
244
198
  staticRuntimeContract,
245
199
  reconstructionContract,
246
200
  ];
247
- registerInvestigationTools(server, session, investigationContracts, {
248
- evidenceFiles: evidenceFilePolicy,
249
- inputRoots: options.investigationInputRoots ?? [],
250
- ...(options.artifactIntegrityContinueEnabled === undefined
251
- ? {}
252
- : {
253
- integrityContinueEnabled: options.artifactIntegrityContinueEnabled,
254
- }),
255
- ...(options.permissionAuthority === undefined
256
- ? {}
257
- : { permissionAuthority: options.permissionAuthority }),
258
- });
201
+ registerInvestigationTools(server, session, investigationContracts);
259
202
  registerRecordAndReplayTools(server, session, logger);
260
203
  registerContextTools(server, session);
261
204
  };
@@ -1,12 +1,11 @@
1
1
  /** Select configured availability reporting or the target-free defaults. */
2
2
  export const sessionAvailabilityPolicy = (configured, defaults) => configured ??
3
3
  (() => ({
4
- processCaptureEnabled: defaults.processPolicy.enabled,
5
- evidenceFileRoots: defaults.evidenceFilePolicy.roots.length,
6
- investigationInputRoots: defaults.investigationInputRoots.length,
4
+ processCaptureEnabled: defaults.processPolicy.status === "enabled",
7
5
  browserObservationEnabled: defaults.optionalFeatures?.browserObservationEnabled ?? false,
8
6
  browserScenarioEnabled: defaults.optionalFeatures?.browserScenarioEnabled ?? false,
9
7
  electronObservationEnabled: defaults.optionalFeatures?.electronObservationEnabled ?? false,
8
+ electronAutomationEnabled: defaults.optionalFeatures?.electronAutomationEnabled ?? false,
10
9
  v8InspectorObservationEnabled: defaults.optionalFeatures?.v8InspectorObservationEnabled ?? false,
11
10
  javascriptReplayEnabled: defaults.optionalFeatures?.javascriptReplayEnabled ?? false,
12
11
  managedRuntimeEnabled: defaults.optionalFeatures?.managedRuntimeEnabled ?? false,
@@ -1,17 +1,11 @@
1
- import { EvidenceIntegrityError, EvidenceReferenceError, } from "../domain/errors.js";
2
- import { err, ok } from "../domain/result.js";
3
- /** Resolve bounded IDs to authoritative records with exact semantic identity. */
4
- export const resolveSessionEvidenceIds = (session, evidenceIds, expected) => {
5
- const records = [];
6
- for (const evidenceId of evidenceIds) {
7
- const record = session.evidenceById(evidenceId);
8
- if (record === undefined)
9
- return err(new EvidenceReferenceError(evidenceId, "missing", expected.operation, null));
10
- if (record.operation !== expected.operation)
11
- return err(new EvidenceReferenceError(evidenceId, "wrong_operation", expected.operation, record.operation));
12
- if (record.predicate_type !== expected.predicate)
13
- return err(new EvidenceReferenceError(evidenceId, "wrong_predicate", expected.predicate, record.predicate_type));
14
- records.push(record);
1
+ import { EvidenceIntegrityError } from "../domain/errors.js";
2
+ import { ok } from "../domain/result.js";
3
+ /** Record source evidence in order, stopping at the first session rejection. */
4
+ export const recordSessionEvidenceSources = (recordEvidence, sources) => {
5
+ for (const source of sources) {
6
+ const recorded = recordEvidence?.(source);
7
+ if (recorded !== undefined && !recorded.ok)
8
+ return recorded;
15
9
  }
16
- return ok(records);
10
+ return ok(null);
17
11
  };