rea-agents 3.2.0 → 4.0.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 (434) hide show
  1. package/README.md +183 -332
  2. package/bridge/ghidra/ReaGhidraBridge.java +561 -74
  3. package/bridge/hopper_bridge.py +70 -27
  4. package/bridge/native/ReaNativeUI.swift +157 -0
  5. package/dist/application/AnalysisContextQueries.js +19 -5
  6. package/dist/application/AnalysisSnapshotCache.js +30 -11
  7. package/dist/application/AppleAssetCatalogAnalysis.js +171 -0
  8. package/dist/application/ArtifactExtractionDestination.js +0 -12
  9. package/dist/application/ArtifactGraphConstruction.js +44 -11
  10. package/dist/application/ArtifactInventory/classify.js +7 -15
  11. package/dist/application/ArtifactInventory/hash.js +4 -2
  12. package/dist/application/ArtifactInventory/policy.js +2 -17
  13. package/dist/application/ArtifactInventory/reader.js +3 -3
  14. package/dist/application/ArtifactInventory/scanCanonical.js +2 -2
  15. package/dist/application/ArtifactInventory/scanReader.js +12 -4
  16. package/dist/application/ArtifactInventory/types.js +0 -3
  17. package/dist/application/BinarySession.js +28 -43
  18. package/dist/application/BinarySessionExecution.js +37 -1
  19. package/dist/application/BinaryTargetResolver.js +50 -4
  20. package/dist/application/BrowserEvidence.js +36 -7
  21. package/dist/application/BrowserObservationService.js +17 -44
  22. package/dist/application/BrowserScenarioCaptureService.js +2 -35
  23. package/dist/application/BrowserScenarioEvidence.js +13 -9
  24. package/dist/application/CapabilityClientRequirements.js +2 -11
  25. package/dist/application/CapabilityInventory.js +21 -35
  26. package/dist/application/ClientConfigurationDocument.js +84 -7
  27. package/dist/application/ClientRegistrationIdentity.js +32 -0
  28. package/dist/application/ClientRegistrationStatus.js +59 -6
  29. package/dist/application/DirectAnalysis.js +37 -58
  30. package/dist/application/DirectAnalysisStatus.js +4 -4
  31. package/dist/application/Doctor.js +89 -80
  32. package/dist/application/DoctorDiagnostics.js +2 -26
  33. package/dist/application/DoctorScope.js +8 -14
  34. package/dist/application/ElectronActiveEvidence.js +10 -27
  35. package/dist/application/ElectronActiveObservationService.js +9 -36
  36. package/dist/application/ElectronBoundaryAnalysis.js +2 -0
  37. package/dist/application/ElectronBoundaryGraphNative.js +1 -1
  38. package/dist/application/ElectronEvidence.js +8 -3
  39. package/dist/application/ElectronObservationService.js +9 -25
  40. package/dist/application/EnhancedLiteralTracing.js +4 -8
  41. package/dist/application/EnhancedTools.js +15 -35
  42. package/dist/application/FilesystemSnapshot.js +7 -8
  43. package/dist/application/JavaScriptApplicationEvidenceGraph.js +2 -1
  44. package/dist/application/JavaScriptApplicationWorkflowService.js +31 -7
  45. package/dist/application/JavaScriptArtifactAnalysis.js +6 -4
  46. package/dist/application/JavaScriptArtifactFiles.js +5 -0
  47. package/dist/application/JavaScriptArtifactPathResolution.js +179 -47
  48. package/dist/application/JavaScriptRuntimeObservationEvidence.js +6 -3
  49. package/dist/application/JavaScriptRuntimeObservationService.js +9 -25
  50. package/dist/application/JavaScriptRuntimeReconciliationService.js +45 -4
  51. package/dist/application/JavaScriptSemanticGraphAsyncProjection.js +11 -0
  52. package/dist/application/JavaScriptSemanticGraphChildProcessProjection.js +11 -0
  53. package/dist/application/JavaScriptSemanticGraphDataProjection.js +11 -0
  54. package/dist/application/JavaScriptSemanticGraphFlowProjection.js +14 -5
  55. package/dist/application/JsonFiles.js +1 -1
  56. package/dist/application/LazyAnalysisProvider.js +27 -6
  57. package/dist/application/ManagedMemberComparisonService.js +19 -6
  58. package/dist/application/NativeApiInspection.js +2 -0
  59. package/dist/application/NativeCallRoutes.js +72 -0
  60. package/dist/application/NativeDispatchMetadataInspection.js +33 -0
  61. package/dist/application/NativeUiActionTrace.js +73 -49
  62. package/dist/application/NativeValueTrace.js +320 -0
  63. package/dist/application/ProcessCaptureCapability.js +32 -5
  64. package/dist/application/ProcessCaptureEnvironment.js +9 -26
  65. package/dist/application/ProcessCaptureError.js +1 -5
  66. package/dist/application/ProcessCaptureJournal.js +3 -40
  67. package/dist/application/ProcessCaptureLifecycle.js +102 -111
  68. package/dist/application/ProcessCli.js +18 -25
  69. package/dist/application/ProcessEvidence.js +5 -7
  70. package/dist/application/ProcessFilesystemEffects.js +36 -0
  71. package/dist/application/ProcessHarness.js +41 -120
  72. package/dist/application/ProcessNormalization.js +2 -17
  73. package/dist/application/ProcessScenarioRuntimeValidation.js +76 -0
  74. package/dist/application/ReferenceSourceImport.js +3 -4
  75. package/dist/application/Setup.js +236 -84
  76. package/dist/application/SetupClientConfiguration.js +14 -9
  77. package/dist/application/SetupPlan.js +138 -86
  78. package/dist/application/SetupSkill.js +0 -1
  79. package/dist/application/SupportedClients.js +102 -21
  80. package/dist/application/Uninstall.js +31 -20
  81. package/dist/application/Update.js +93 -0
  82. package/dist/application/UpdateMaintenance.js +108 -0
  83. package/dist/application/UpdateRuntime.js +126 -0
  84. package/dist/application/runtime.js +13 -2
  85. package/dist/artifacts/ArtifactPaths.js +6 -8
  86. package/dist/artifacts/ArtifactProvider.js +94 -41
  87. package/dist/artifacts/AsarArtifactReader.js +19 -4
  88. package/dist/artifacts/KeyedArchiveReader.js +110 -0
  89. package/dist/artifacts/MachOSliceArtifactReader.js +53 -5
  90. package/dist/artifacts/ZipArtifactReader.js +18 -1
  91. package/dist/browser/BrowserScenarioSecrets.js +28 -1
  92. package/dist/browser/CdpBrowserProvider.js +36 -15
  93. package/dist/browser/CdpCaptureDocuments.js +22 -8
  94. package/dist/browser/CdpCaptureEventHandlers.js +14 -5
  95. package/dist/browser/CdpCaptureEventHelpers.js +13 -0
  96. package/dist/browser/CdpCaptureEvents.js +10 -1
  97. package/dist/browser/CdpElectronInspection.js +5 -10
  98. package/dist/browser/CdpElectronProvider.js +1 -5
  99. package/dist/browser/CdpElectronScripts.js +1 -1
  100. package/dist/browser/CdpEndpoint.js +3 -2
  101. package/dist/browser/CdpObservationSession.js +14 -10
  102. package/dist/browser/CdpPageCapture.js +1 -1
  103. package/dist/browser/CdpPageCaptureScripts.js +1 -1
  104. package/dist/browser/CdpSafeMetadata.js +5 -4
  105. package/dist/browser/CdpScreenshot.js +16 -5
  106. package/dist/browser/CdpTargetSession.js +25 -4
  107. package/dist/browser/CdpWebMcpDiscovery.js +93 -20
  108. package/dist/browser/JavaScriptRuntimeScope.js +28 -2
  109. package/dist/browser/PlaywrightBrowserScenarioProvider.js +9 -8
  110. package/dist/browser/PlaywrightElectronActiveActions.js +3 -10
  111. package/dist/browser/PlaywrightElectronActiveProvider.js +5 -5
  112. package/dist/browser/PlaywrightScenarioActions.js +1 -1
  113. package/dist/browser/PlaywrightScenarioArtifacts.js +13 -25
  114. package/dist/browser/PlaywrightScenarioBrowser.js +28 -25
  115. package/dist/browser/PlaywrightScenarioEvents.js +82 -93
  116. package/dist/browser/PlaywrightScenarioSession.js +27 -123
  117. package/dist/browser/PngVisualDiff.js +22 -3
  118. package/dist/browser/V8InspectorCaptureProjection.js +7 -1
  119. package/dist/browser/V8InspectorProvider.js +60 -7
  120. package/dist/browser/WebSourceMapFetcher.js +99 -53
  121. package/dist/cli/artifactCommands.js +56 -12
  122. package/dist/cli/coreAnalysisCommands.js +110 -0
  123. package/dist/cli/managedCommands.js +1 -31
  124. package/dist/cli/setupCommands.js +16 -14
  125. package/dist/cli/utilityCommands.js +61 -4
  126. package/dist/cli.js +5 -7
  127. package/dist/cliApplicationCommands.js +0 -83
  128. package/dist/cliBrowserAdvancedCommands.js +7 -11
  129. package/dist/cliBrowserCommands.js +15 -23
  130. package/dist/cliBrowserContext.js +3 -24
  131. package/dist/cliBrowserScenarioCommands.js +2 -10
  132. package/dist/cliCommandNames.js +82 -7
  133. package/dist/cliElectronCommands.js +10 -36
  134. package/dist/cliJavaScriptRuntimeCommands.js +6 -30
  135. package/dist/cliJsonInput.js +4 -2
  136. package/dist/cliLogging.js +16 -7
  137. package/dist/cliObservationOptions.js +1 -1
  138. package/dist/cliOutput.js +2 -4
  139. package/dist/cliProcessCommands.js +6 -33
  140. package/dist/cliSetup.js +90 -160
  141. package/dist/config/environment.js +2 -78
  142. package/dist/config/parseConfig.js +18 -109
  143. package/dist/config/parsers.js +0 -23
  144. package/dist/contracts/applicationToolContracts.js +1 -118
  145. package/dist/contracts/artifactToolContracts.js +11 -19
  146. package/dist/contracts/browserScenarioToolContracts.js +1 -5
  147. package/dist/contracts/browserToolContracts.js +9 -16
  148. package/dist/contracts/electronToolContracts.js +5 -6
  149. package/dist/contracts/enhancedInputs.js +3 -2
  150. package/dist/contracts/errorSchemas.js +16 -40
  151. package/dist/contracts/functionWorkflowToolContracts.js +2 -2
  152. package/dist/contracts/javascriptApplicationWorkflowExamples.js +2 -2
  153. package/dist/contracts/javascriptRuntimeObservationToolContracts.js +4 -4
  154. package/dist/contracts/javascriptRuntimeReconciliationExample.js +1 -1
  155. package/dist/contracts/managedToolContracts.js +7 -4
  156. package/dist/contracts/managedWorkflowExamples.js +0 -22
  157. package/dist/contracts/managedWorkflowToolContracts.js +16 -31
  158. package/dist/contracts/nativeToolContracts.js +9 -0
  159. package/dist/contracts/promptContracts.js +6 -6
  160. package/dist/contracts/sessionToolSchemas.js +3 -3
  161. package/dist/contracts/toolContractExamples.js +4 -3
  162. package/dist/contracts/toolContracts.js +18 -7
  163. package/dist/contracts/toolEffects.js +34 -21
  164. package/dist/contracts/toolOutputSchemaGroups.js +18 -5
  165. package/dist/contracts/toolOutputSchemaPrimitives.js +9 -6
  166. package/dist/contracts/toolSchemaMetadata.js +5 -8
  167. package/dist/doctorRuntime.js +0 -41
  168. package/dist/domain/analysisErrorPresentation.js +4 -28
  169. package/dist/domain/analysisErrorProjection.js +33 -50
  170. package/dist/domain/analysisProfile.js +1 -1
  171. package/dist/domain/analysisSnapshot.js +77 -3
  172. package/dist/domain/androidApplication.js +5 -4
  173. package/dist/domain/appleApplication.js +5 -4
  174. package/dist/domain/appleAssetCatalog.js +127 -0
  175. package/dist/domain/artifactComparison.js +7 -11
  176. package/dist/domain/artifactGraph.js +8 -6
  177. package/dist/domain/artifactInspection.js +13 -12
  178. package/dist/domain/binaryTarget.js +23 -9
  179. package/dist/domain/browserObservation.js +43 -24
  180. package/dist/domain/browserObservationSchemas.js +2 -1
  181. package/dist/domain/browserScenario.js +7 -107
  182. package/dist/domain/browserScenarioCapture.js +0 -1
  183. package/dist/domain/browserScenarioCaptureValues.js +5 -4
  184. package/dist/domain/browserScenarioDiff.js +1 -3
  185. package/dist/domain/browserScenarioValues.js +16 -107
  186. package/dist/domain/bundleComparison.js +18 -17
  187. package/dist/domain/callPathSchemas.js +17 -7
  188. package/dist/domain/changedBehavior.js +2 -3
  189. package/dist/domain/comparisonSemantics.js +19 -0
  190. package/dist/domain/completionLedgerGeneration.js +3 -2
  191. package/dist/domain/conformancePackage.js +2 -1
  192. package/dist/domain/conformanceTrustGate.js +3 -5
  193. package/dist/domain/customProtocolCapture.js +2 -2
  194. package/dist/domain/digests.js +30 -0
  195. package/dist/domain/dosMz.js +83 -0
  196. package/dist/domain/electronActiveObservation.js +7 -5
  197. package/dist/domain/electronObservation.js +3 -2
  198. package/dist/domain/electronStaticAnalysisNative.js +15 -6
  199. package/dist/domain/emptyArraySchema.js +3 -0
  200. package/dist/domain/errors.js +10 -28
  201. package/dist/domain/evidence.js +5 -3
  202. package/dist/domain/evidenceCompletionLedger.js +3 -2
  203. package/dist/domain/functionComparisonNormalization.js +24 -18
  204. package/dist/domain/functionComparisonResults.js +3 -7
  205. package/dist/domain/functionComparisonSchemas.js +3 -2
  206. package/dist/domain/hopperValues.js +108 -8
  207. package/dist/domain/javascriptApplicationAnalysis.js +4 -7
  208. package/dist/domain/javascriptApplicationEvidenceSchemas.js +4 -3
  209. package/dist/domain/javascriptApplicationGraphSchemas.js +8 -7
  210. package/dist/domain/javascriptApplicationVersionComparisonSchemas.js +9 -7
  211. package/dist/domain/javascriptApplicationVersionItems.js +12 -18
  212. package/dist/domain/javascriptAstValues.js +4 -0
  213. package/dist/domain/javascriptExportShapeComparison.js +1 -6
  214. package/dist/domain/javascriptExportShapeComparisonSchemas.js +6 -10
  215. package/dist/domain/javascriptExportShapeVariants.js +15 -2
  216. package/dist/domain/javascriptFeatureTraceSchemas.js +8 -7
  217. package/dist/domain/javascriptRuntimeObservation.js +14 -2
  218. package/dist/domain/javascriptRuntimeReconciliationMatching.js +8 -0
  219. package/dist/domain/javascriptRuntimeReconciliationParsing.js +4 -2
  220. package/dist/domain/javascriptRuntimeReconciliationResult.js +6 -4
  221. package/dist/domain/javascriptRuntimeReconciliationRuntime.js +15 -4
  222. package/dist/domain/javascriptRuntimeReconciliationSchemas.js +19 -18
  223. package/dist/domain/javascriptRuntimeStaticCandidates.js +18 -6
  224. package/dist/domain/javascriptSemanticAnalysis.js +57 -19
  225. package/dist/domain/javascriptSemanticAsyncEffects.js +39 -40
  226. package/dist/domain/javascriptSemanticCalls.js +46 -27
  227. package/dist/domain/javascriptSemanticChildProcesses.js +43 -50
  228. package/dist/domain/javascriptSemanticDataEffectHelpers.js +91 -18
  229. package/dist/domain/javascriptSemanticDataEffects.js +22 -10
  230. package/dist/domain/javascriptSemanticGraphSchemas.js +8 -6
  231. package/dist/domain/javascriptSemanticObjects.js +13 -3
  232. package/dist/domain/javascriptSemanticProjection.js +144 -38
  233. package/dist/domain/javascriptSemanticPromises.js +14 -27
  234. package/dist/domain/javascriptSemanticQuerySchemas.js +6 -9
  235. package/dist/domain/javascriptSemanticResources.js +2 -5
  236. package/dist/domain/javascriptSemanticState.js +4 -0
  237. package/dist/domain/javascriptSemanticTraceSchemas.js +2 -1
  238. package/dist/domain/javascriptSemanticTraversal.js +13 -5
  239. package/dist/domain/javascriptSemanticValues.js +10 -9
  240. package/dist/domain/javascriptSourceParser.js +5 -1
  241. package/dist/domain/javascriptStaticAnalysisCalls.js +8 -5
  242. package/dist/domain/javascriptStaticAnalysisHelpers.js +16 -7
  243. package/dist/domain/keyedArchive.js +181 -0
  244. package/dist/domain/managedApplicationGraph.js +4 -3
  245. package/dist/domain/managedArtifact.js +2 -1
  246. package/dist/domain/managedMemberComparison.js +18 -13
  247. package/dist/domain/managedMemberComparisonCoverage.js +2 -1
  248. package/dist/domain/managedMemberComparisonItems.js +27 -7
  249. package/dist/domain/managedMemberComparisonMatch.js +22 -6
  250. package/dist/domain/managedNativeVerificationMatch.js +2 -2
  251. package/dist/domain/managedNativeVerificationSchemas.js +7 -5
  252. package/dist/domain/managedReconstruction.js +6 -5
  253. package/dist/domain/nativeApiBoundary.js +7 -0
  254. package/dist/domain/nativeDataType.js +51 -0
  255. package/dist/domain/nativeInspection.js +0 -1
  256. package/dist/domain/nativeInstruction.js +82 -0
  257. package/dist/domain/nativeInvestigationGraph.js +9 -5
  258. package/dist/domain/nativeUiObservation.js +123 -0
  259. package/dist/domain/nativeValueFlow.js +17 -0
  260. package/dist/domain/nativeValueTrace.js +64 -0
  261. package/dist/domain/objcSwiftMetadata.js +39 -0
  262. package/dist/domain/peInspection.js +1 -0
  263. package/dist/domain/processCapture.js +5 -55
  264. package/dist/domain/processCaptureExample.js +0 -9
  265. package/dist/domain/processCaptureValidation.js +13 -144
  266. package/dist/domain/processComparison.js +3 -25
  267. package/dist/domain/processObservation.js +0 -29
  268. package/dist/domain/processScenario.js +28 -228
  269. package/dist/domain/processTraceDimensionProjection.js +0 -15
  270. package/dist/domain/processTraceEvaluation.js +0 -6
  271. package/dist/domain/protocolCapture.js +8 -36
  272. package/dist/domain/reconstructionCoverage.js +3 -2
  273. package/dist/domain/reconstructionObligationLedgerSchemas.js +4 -12
  274. package/dist/domain/reconstructionReadinessSchemas.js +4 -3
  275. package/dist/domain/reconstructionVerification.js +2 -1
  276. package/dist/domain/reconstructionVerificationSchemas.js +6 -13
  277. package/dist/domain/referenceSourceClassification.js +0 -110
  278. package/dist/domain/referenceSourceGraph.js +15 -5
  279. package/dist/domain/residualUnknown.js +3 -2
  280. package/dist/domain/runtimeIdentification.js +6 -5
  281. package/dist/domain/sourceMapContents.js +5 -0
  282. package/dist/domain/sourceToBundleComparison.js +3 -10
  283. package/dist/domain/sourceToBundleComparisonSchemas.js +7 -6
  284. package/dist/domain/sourceToBundleSignals.js +9 -3
  285. package/dist/domain/staticRuntimeCorrelation.js +5 -11
  286. package/dist/domain/webBundleAnalysis.js +17 -9
  287. package/dist/domain/webBundleAnalyzer.js +1 -1
  288. package/dist/domain/webCaptureDiff.js +5 -11
  289. package/dist/domain/webCaptureDiffSchemas.js +2 -1
  290. package/dist/domain/webMcpDiscovery.js +2 -1
  291. package/dist/dotnet/ManagedMemberInspectorCore.js +15 -7
  292. package/dist/dotnet/ManagedMemberInstructionDecoder.js +57 -40
  293. package/dist/dotnet/ManagedMemberRows.js +2 -0
  294. package/dist/dotnet/ManagedMethodBodyReader.js +15 -8
  295. package/dist/dotnet/ManagedPeReader.js +2 -0
  296. package/dist/generatedMcpToolCatalog.js +1 -1
  297. package/dist/generatedPackageMetadata.js +2 -2
  298. package/dist/ghidra/GhidraAnalysisProfile.js +15 -5
  299. package/dist/ghidra/GhidraClient.js +38 -8
  300. package/dist/ghidra/GhidraFunctionValues.js +56 -20
  301. package/dist/ghidra/GhidraInstallation.js +7 -4
  302. package/dist/ghidra/GhidraInventoryValues.js +44 -9
  303. package/dist/ghidra/GhidraLauncher.js +18 -3
  304. package/dist/ghidra/GhidraProvider.js +23 -2
  305. package/dist/ghidra/GhidraRequestQueue.js +45 -4
  306. package/dist/ghidra/GhidraSessionValues.js +5 -0
  307. package/dist/hopper/HopperAnalysisProfile.js +2 -0
  308. package/dist/hopper/HopperProvider.js +29 -6
  309. package/dist/hopper/HopperTargetLease.js +18 -4
  310. package/dist/logger.js +0 -13
  311. package/dist/main/messages.js +0 -1
  312. package/dist/main/reload.js +3 -32
  313. package/dist/main/shutdown.js +1 -2
  314. package/dist/main/transport.js +0 -17
  315. package/dist/main.js +0 -10
  316. package/dist/native/AppleDispatchMetadata.js +582 -0
  317. package/dist/native/AppleObjcProtocols.js +88 -0
  318. package/dist/native/AppleSwiftVtables.js +86 -0
  319. package/dist/native/CommandRunner.js +1 -1
  320. package/dist/native/NativeHostCapabilities.js +23 -0
  321. package/dist/native/NativeMacOSProvider.js +61 -9
  322. package/dist/native/NativeMachoInspection.js +39 -6
  323. package/dist/native/NativeUiHelperRuntime.js +42 -0
  324. package/dist/native/NativeUiObservation.js +174 -0
  325. package/dist/native/parsers/codesign.js +4 -1
  326. package/dist/native/parsers/dyldInfo.js +51 -25
  327. package/dist/native/parsers/lipo.js +13 -4
  328. package/dist/native/parsers/otool.js +84 -39
  329. package/dist/native/parsers/plist.js +2 -1
  330. package/dist/process/ExecFileOutput.js +5 -1
  331. package/dist/process/ProcessOwnership.js +69 -33
  332. package/dist/process/ProcessOwnershipObservation.js +31 -12
  333. package/dist/process/ProviderProcess.js +4 -2
  334. package/dist/reference/ReferenceSourceReaderEntries.js +48 -31
  335. package/dist/reference/ReferenceSourceReaderErrors.js +24 -0
  336. package/dist/reference/ReferenceSourceReaderFile.js +11 -5
  337. package/dist/reference/ReferenceSourceReaderValidate.js +22 -8
  338. package/dist/server/createServer.js +7 -62
  339. package/dist/server/registerApplicationTools/helpers.js +2 -9
  340. package/dist/server/registerApplicationTools.js +0 -4
  341. package/dist/server/registerArtifactComparisonTool.js +1 -1
  342. package/dist/server/registerBrowserScenarioTool.js +4 -2
  343. package/dist/server/registerBrowserTools.js +7 -7
  344. package/dist/server/registerBundleComparisonTool.js +1 -1
  345. package/dist/server/registerCloseLifecycleTool.js +1 -1
  346. package/dist/server/registerElectronTools.js +10 -4
  347. package/dist/server/registerEnhancedTools.js +20 -12
  348. package/dist/server/registerEvidenceTools.js +4 -28
  349. package/dist/server/registerFunctionComparisonTool.js +1 -1
  350. package/dist/server/registerInvestigationTools.js +6 -6
  351. package/dist/server/registerJavaScriptRuntimeObservationTools.js +2 -2
  352. package/dist/server/registerManagedTools.js +28 -14
  353. package/dist/server/registerManagedWorkflowTools.js +0 -2
  354. package/dist/server/registerProcessComparisonTool.js +1 -3
  355. package/dist/server/registerSessionRecordTools.js +9 -9
  356. package/dist/server/registerSessionStatusTool.js +1 -1
  357. package/dist/server/registerSessionTools.js +28 -57
  358. package/dist/server/sessionAvailabilityPolicy.js +2 -3
  359. package/dist/server/sessionToolPolicies.js +0 -4
  360. package/dist/server/toolResult.js +8 -10
  361. package/package.json +32 -22
  362. package/skills/reverse-engineer-anything/SKILL.md +15 -11
  363. package/skills/reverse-engineer-anything/references/evidence-workflows.md +3 -2
  364. package/skills/reverse-engineer-anything/references/javascript-applications.md +3 -2
  365. package/skills/reverse-engineer-anything/references/native-and-artifacts.md +8 -6
  366. package/skills/reverse-engineer-anything/references/runtime-observation.md +15 -11
  367. package/dist/application/CommandShimReplay.js +0 -152
  368. package/dist/application/ConfiguredRoots.js +0 -19
  369. package/dist/application/InstrumentedJavaScriptReplayHost.js +0 -36
  370. package/dist/application/JavaScriptReplayPermission.js +0 -16
  371. package/dist/application/JavaScriptReplayPlanning.js +0 -207
  372. package/dist/application/JavaScriptReplayService.js +0 -274
  373. package/dist/application/LoopbackReplay.js +0 -389
  374. package/dist/application/LoopbackReplayRecorder.js +0 -129
  375. package/dist/application/ManagedRuntimeCorrelationService.js +0 -104
  376. package/dist/application/NodeRuntimeCharacterizationService.js +0 -191
  377. package/dist/application/PermissionAuthority.js +0 -268
  378. package/dist/application/PermissionConfiguration.js +0 -26
  379. package/dist/application/PermissionFailure.js +0 -5
  380. package/dist/application/ProcessCaptureAuthority.js +0 -24
  381. package/dist/application/ProcessCapturePermission.js +0 -13
  382. package/dist/application/ProcessCheckpoints.js +0 -178
  383. package/dist/application/ProcessReactiveCoordinator.js +0 -223
  384. package/dist/application/ProcessReactiveEffects.js +0 -153
  385. package/dist/application/ProcessReactiveHarness.js +0 -106
  386. package/dist/application/ProcessReactiveObservations.js +0 -105
  387. package/dist/application/ProjectPermissionStore.js +0 -199
  388. package/dist/application/RuntimeExecutableDiagnostics.js +0 -198
  389. package/dist/application/Upgrade.js +0 -134
  390. package/dist/browser/SensitiveTextCapture.js +0 -8
  391. package/dist/cliPolicyCommands.js +0 -185
  392. package/dist/config/browserScenario.js +0 -77
  393. package/dist/config/electronAutomation.js +0 -35
  394. package/dist/config/javascriptReplay.js +0 -41
  395. package/dist/config/managedRuntime.js +0 -25
  396. package/dist/config/passiveObservation.js +0 -87
  397. package/dist/config/permissions.js +0 -23
  398. package/dist/config/processCapture.js +0 -47
  399. package/dist/contracts/replayMachineExample.js +0 -37
  400. package/dist/domain/javascriptExportInstrumentation.js +0 -95
  401. package/dist/domain/javascriptReplay.js +0 -360
  402. package/dist/domain/managedRuntimeCorrelation.js +0 -181
  403. package/dist/domain/nodeRuntimeCharacterization.js +0 -63
  404. package/dist/domain/permissionPolicy.js +0 -176
  405. package/dist/domain/processCaptureReactiveSchema.js +0 -68
  406. package/dist/domain/processCaptureReactiveValidation.js +0 -180
  407. package/dist/domain/processReactiveCheckpointDataflow.js +0 -32
  408. package/dist/domain/processReactiveMatching.js +0 -196
  409. package/dist/domain/processReactiveRuntime.js +0 -116
  410. package/dist/domain/processReactiveScenario.js +0 -296
  411. package/dist/domain/processReactiveScenarioPreflight.js +0 -95
  412. package/dist/domain/processReactiveTransition.js +0 -187
  413. package/dist/domain/replayMachine.js +0 -320
  414. package/dist/domain/replayMachineRun.js +0 -168
  415. package/dist/domain/replayMachineRuntime.js +0 -296
  416. package/dist/domain/replayMachineValues.js +0 -84
  417. package/dist/domain/runtimeCharacterization.js +0 -84
  418. package/dist/replay/JavaScriptReplayWorker.js +0 -382
  419. package/dist/replay/JavaScriptReplayWorkerTypes.js +0 -1
  420. package/dist/replay/LinuxJavaScriptReplayRunner.js +0 -216
  421. package/dist/replay/LinuxJavaScriptReplaySandbox.js +0 -121
  422. package/dist/replay/LinuxRuntimeClosure.js +0 -44
  423. package/dist/replay/LinuxSeccompPolicy.js +0 -40
  424. package/dist/replay/ReplayOutcome.js +0 -104
  425. package/dist/replay/ReplayProcessLifecycle.js +0 -96
  426. package/dist/replay/ReplaySeccompFile.js +0 -29
  427. package/dist/replay/ReplayWorkerProtocol.js +0 -58
  428. package/dist/replay/SystemJavaScriptReplayHost.js +0 -153
  429. package/dist/server/ProcessCaptureElicitation.js +0 -153
  430. package/dist/server/registerApplicationTools/characterization.js +0 -46
  431. package/dist/server/registerApplicationTools/controlledReplay.js +0 -31
  432. package/dist/server/registerManagedWorkflowTools/planManagedRuntimeCorrelation.js +0 -29
  433. package/dist/server/registerReplayMachineTool.js +0 -14
  434. package/skills/reverse-engineer-anything/references/controlled-replay.md +0 -12
@@ -1,6 +1,6 @@
1
1
  import { EnhancedTools, } from "../application/EnhancedTools.js";
2
2
  import { REA_WORKFLOW_PROVIDER, workflowAnalysisProfile, } from "../application/InvestigationProviders.js";
3
- import { ENHANCED_TOOL_CONTRACTS, } from "../contracts/toolContracts.js";
3
+ import { toolContract } from "../contracts/toolContracts.js";
4
4
  import { UnknownRegistryError } from "../domain/errors.js";
5
5
  import { createEvidence } from "../domain/evidence.js";
6
6
  import { mcpProgressReporter } from "./mcpProgress.js";
@@ -10,7 +10,24 @@ import { toCallToolResult } from "./toolResult.js";
10
10
  /** Register composed workflows against the same port as direct bridge tools. */
11
11
  // oxlint-disable-next-line max-lines-per-function -- direct SDK calls retain each schema-handler type correlation.
12
12
  export const registerEnhancedTools = (server, analysis, options) => {
13
- const [nativeDispatchMetadata, objcClasses, objcProtocols, batchDecompile, callGraph, swiftTypes, xrefsToName, binaryOverview, analyzeFunction, inspectNativeApi, traceFeature, codeForString, traceCallPath, traceNativeUiAction,] = ENHANCED_TOOL_CONTRACTS;
13
+ const nativeDispatchMetadata = toolContract("inspect_native_dispatch_metadata");
14
+ const objcClasses = toolContract("get_objc_classes");
15
+ const objcProtocols = toolContract("get_objc_protocols");
16
+ const batchDecompile = toolContract("batch_decompile");
17
+ const callGraph = toolContract("get_call_graph");
18
+ const swiftTypes = toolContract("analyze_swift_types");
19
+ const xrefsToName = toolContract("find_xrefs_to_name");
20
+ const binaryOverview = toolContract("binary_overview");
21
+ const analyzeFunction = toolContract("analyze_function");
22
+ const inspectNativeApi = toolContract("inspect_native_api");
23
+ const traceFeature = toolContract("trace_feature");
24
+ const traceCallPath = toolContract("trace_call_path");
25
+ const traceNativeUiAction = toolContract("trace_native_ui_action");
26
+ const traceNativeValues = toolContract("trace_native_values");
27
+ server.registerTool(traceNativeValues.name, toolRegistrationOptions(traceNativeValues), (input, context) => executeEnhancedTool(analysis, options, traceNativeValues, {
28
+ validatedCall: { name: "trace_native_values", input },
29
+ context,
30
+ }));
14
31
  server.registerTool(nativeDispatchMetadata.name, toolRegistrationOptions(nativeDispatchMetadata), (input, context) => executeEnhancedTool(analysis, options, nativeDispatchMetadata, {
15
32
  validatedCall: { name: "inspect_native_dispatch_metadata", input },
16
33
  context,
@@ -55,10 +72,6 @@ export const registerEnhancedTools = (server, analysis, options) => {
55
72
  validatedCall: { name: "trace_feature", input },
56
73
  context,
57
74
  }));
58
- server.registerTool(codeForString.name, toolRegistrationOptions(codeForString), (input, context) => executeEnhancedTool(analysis, options, codeForString, {
59
- validatedCall: { name: "find_code_for_string", input },
60
- context,
61
- }));
62
75
  server.registerTool(traceCallPath.name, toolRegistrationOptions(traceCallPath), (input, context) => executeEnhancedTool(analysis, options, traceCallPath, {
63
76
  validatedCall: { name: "trace_call_path", input },
64
77
  context,
@@ -127,12 +140,7 @@ const executeEnhancedTool = async (analysis, registration, contract, request) =>
127
140
  };
128
141
  const jsonParameters = (input) => Object.fromEntries(Object.entries(input).filter((entry) => entry[1] !== undefined));
129
142
  const recordWorkflowUnknowns = ({ name, result, evidenceId, recordUnknown, }) => {
130
- if (![
131
- "trace_feature",
132
- "find_code_for_string",
133
- "trace_call_path",
134
- "inspect_native_api",
135
- ].includes(name) ||
143
+ if (!["trace_feature", "trace_call_path", "inspect_native_api"].includes(name) ||
136
144
  recordUnknown === undefined ||
137
145
  typeof result !== "object" ||
138
146
  result === null ||
@@ -1,12 +1,10 @@
1
- import { projectPermissionFailure } from "../application/PermissionFailure.js";
2
1
  import { createEvidence } from "../domain/evidence.js";
3
2
  import { jsonObjectSchema } from "../domain/jsonValue.js";
4
- import { err } from "../domain/result.js";
5
3
  import { mcpProgressReporter } from "./mcpProgress.js";
6
4
  import { logToolExecution } from "./toolLogging.js";
7
5
  import { toolRegistrationOptions } from "./toolRegistrationOptions.js";
8
6
  import { toCallToolResult } from "./toolResult.js";
9
- import { artifactExtractionPermissionRequest, createArtifactExtractionDestination, } from "../application/ArtifactExtractionDestination.js";
7
+ import { createArtifactExtractionDestination } from "../application/ArtifactExtractionDestination.js";
10
8
  /** Register provider-backed contracts that return atomic Evidence observations. */
11
9
  export const registerEvidenceTools = (server, analysis, contracts, options) => {
12
10
  for (const contract of contracts) {
@@ -25,14 +23,6 @@ export const registerEvidenceTools = (server, analysis, contracts, options) => {
25
23
  output_root: createArtifactExtractionDestination(),
26
24
  }
27
25
  : parameters;
28
- if (options.permissionAuthority !== undefined) {
29
- const request = permissionRequest(contract.name, executionParameters);
30
- if (request !== undefined) {
31
- const authorized = await options.permissionAuthority.authorize(request, contract.name === "extract_artifact" ? "write" : "read");
32
- if (!authorized.ok)
33
- return toCallToolResult(err(projectPermissionFailure(authorized.error)), contract);
34
- }
35
- }
36
26
  const execution = await logToolExecution(options.logger, contract.name, () => analysis.execute(contract.name, executionParameters, {
37
27
  signal: context.mcpReq.signal,
38
28
  progress,
@@ -51,6 +41,9 @@ export const registerEvidenceTools = (server, analysis, contracts, options) => {
51
41
  operation: contract.name,
52
42
  parameters,
53
43
  result: execution.value.result,
44
+ ...(execution.value.analysisProfile === undefined
45
+ ? {}
46
+ : { analysisProfile: execution.value.analysisProfile }),
54
47
  rawResult: execution.value.rawResult,
55
48
  limitations: execution.value.limitations,
56
49
  locations: execution.value.locations,
@@ -68,20 +61,3 @@ export const registerEvidenceTools = (server, analysis, contracts, options) => {
68
61
  });
69
62
  }
70
63
  };
71
- const permissionRequest = (operation, parameters) => {
72
- if (operation === "extract_artifact" &&
73
- typeof parameters.output_root === "string")
74
- return artifactExtractionPermissionRequest();
75
- if (operation === "inspect_artifact" &&
76
- parameters.native_mount_approved === true)
77
- return {
78
- capability: "native_mount",
79
- roots: [],
80
- executables: [],
81
- environment_names: [],
82
- network: "none",
83
- mount: true,
84
- operation_identity: `${operation}:native_mount`,
85
- };
86
- return undefined;
87
- };
@@ -1,4 +1,4 @@
1
- import { SESSION_TOOL_CONTRACTS } from "../contracts/toolContracts.js";
1
+ import { toolContract } from "../contracts/toolContracts.js";
2
2
  import { createEvidence, parseEvidence, } from "../domain/evidence.js";
3
3
  import { EvidenceIntegrityError } from "../domain/errors.js";
4
4
  import { err } from "../domain/result.js";
@@ -1,4 +1,4 @@
1
- import { SESSION_TOOL_CONTRACTS } from "../contracts/toolContracts.js";
1
+ import { toolContract } from "../contracts/toolContracts.js";
2
2
  import { buildCallPath } from "../domain/callPath.js";
3
3
  import { findChangedBehavior } from "../domain/changedBehavior.js";
4
4
  import { createEvidence } from "../domain/evidence.js";
@@ -11,11 +11,11 @@ import { CALL_PATH_PROVIDER, CHANGED_BEHAVIOR_PROVIDER, RECONSTRUCTION_PROVIDER,
11
11
  import { toolRegistrationOptions } from "./toolRegistrationOptions.js";
12
12
  import { toCallToolResult } from "./toolResult.js";
13
13
  /** Register Evidence-composed differential investigation workflows. */
14
- export const registerInvestigationTools = (server, session, contracts) => {
15
- registerChangedBehavior(server, session, contracts[0]);
16
- registerCallPath(server, session, contracts[1]);
17
- registerStaticRuntime(server, session, contracts[2]);
18
- registerReconstruction(server, session, contracts[3]);
14
+ export const registerInvestigationTools = (server, session) => {
15
+ registerChangedBehavior(server, session, toolContract("find_changed_behavior"));
16
+ registerCallPath(server, session, toolContract("build_call_path"));
17
+ registerStaticRuntime(server, session, toolContract("correlate_static_and_runtime"));
18
+ registerReconstruction(server, session, toolContract("verify_reconstruction"));
19
19
  };
20
20
  const registerChangedBehavior = (server, session, contract) => {
21
21
  server.registerTool(contract.name, toolRegistrationOptions(contract), async (input, context) => {
@@ -7,10 +7,10 @@ import { toCallToolResult } from "./toolResult.js";
7
7
  /** Register passive Inspector tools even when policy keeps them unavailable. */
8
8
  export const registerJavaScriptRuntimeObservationTools = (server, options) => {
9
9
  const [listContract, observeContract] = JAVASCRIPT_RUNTIME_OBSERVATION_TOOL_CONTRACTS;
10
- server.registerTool(listContract.name, toolRegistrationOptions(listContract), (input, context) => runRuntimeTool(options, listContract, { input, context }, (parsed, signal) => listJavaScriptRuntimeTargets(options.runtime, options.permissionAuthority, parsed, { signal })));
10
+ server.registerTool(listContract.name, toolRegistrationOptions(listContract), (input, context) => runRuntimeTool(options, listContract, { input, context }, (parsed, signal) => listJavaScriptRuntimeTargets(options.runtime, parsed, { signal })));
11
11
  server.registerTool(observeContract.name, toolRegistrationOptions(observeContract), (input, context) => runRuntimeTool(options, observeContract, { input, context }, async (parsed, signal) => {
12
12
  const request = observeJavaScriptRuntimeInputSchema.parse(parsed);
13
- return observeJavaScriptRuntime(options.runtime, options.permissionAuthority, request, { signal });
13
+ return observeJavaScriptRuntime(options.runtime, request, { signal });
14
14
  }));
15
15
  };
16
16
  const runRuntimeTool = async (options, contract, request, execute) => {
@@ -1,23 +1,37 @@
1
1
  import { MANAGED_TOOL_CONTRACTS } from "../contracts/managedToolContracts.js";
2
+ import { AnalysisInputError } from "../domain/errors.js";
2
3
  import { err } from "../domain/result.js";
3
4
  import { registerEvidenceTools } from "./registerEvidenceTools.js";
5
+ import { runManagedProviderExecution } from "../application/DirectAnalysis.js";
6
+ import { isManagedToolName } from "../contracts/managedToolContracts.js";
4
7
  /** Register execution-free managed PE/CLI inspection. */
5
8
  export const registerManagedTools = (server, analysis, options) => {
6
- const targetAwareAnalysis = {
9
+ let selectedManagedPath;
10
+ const managedAnalysis = {
7
11
  execute: async (operation, parameters, executionOptions) => {
8
- const path = operation === "inspect_managed_artifact" &&
9
- typeof parameters.path === "string"
10
- ? parameters.path
11
- : undefined;
12
- if (path !== undefined && options.session !== undefined) {
13
- const opened = await options.session.open(path, executionOptions?.signal === undefined
14
- ? undefined
15
- : { signal: executionOptions.signal });
16
- if (!opened.ok)
17
- return err(opened.error);
18
- }
19
- return analysis.execute(operation, parameters, executionOptions);
12
+ if (!isManagedToolName(operation))
13
+ return analysis.execute(operation, parameters, executionOptions);
14
+ const requestedPath = parameters.path;
15
+ const activeTarget = options.activeTarget?.();
16
+ const path = typeof requestedPath === "string"
17
+ ? requestedPath
18
+ : (selectedManagedPath ??
19
+ (activeTarget?.format === "pe" && activeTarget.managed
20
+ ? activeTarget.path
21
+ : undefined));
22
+ if (path === undefined)
23
+ return err(new AnalysisInputError(operation, undefined, [
24
+ {
25
+ path: ["path"],
26
+ reason: "missing_argument",
27
+ message: "Provide a managed PE/CLI path or first select one with inspect_managed_artifact.",
28
+ },
29
+ ]));
30
+ const execution = await runManagedProviderExecution(path, operation, executionOptions?.signal);
31
+ if (execution.ok && typeof requestedPath === "string")
32
+ selectedManagedPath = requestedPath;
33
+ return execution;
20
34
  },
21
35
  };
22
- registerEvidenceTools(server, targetAwareAnalysis, MANAGED_TOOL_CONTRACTS, options);
36
+ registerEvidenceTools(server, managedAnalysis, MANAGED_TOOL_CONTRACTS, options);
23
37
  };
@@ -1,13 +1,11 @@
1
1
  import { registerCompareManagedMembers } from "./registerManagedWorkflowTools/compareManagedMembers.js";
2
2
  import { registerVerifyManagedNativeBoundaries } from "./registerManagedWorkflowTools/verifyManagedNativeBoundaries.js";
3
3
  import { registerImportManagedReconstruction } from "./registerManagedWorkflowTools/importManagedReconstruction.js";
4
- import { registerPlanManagedRuntimeCorrelation } from "./registerManagedWorkflowTools/planManagedRuntimeCorrelation.js";
5
4
  import { registerProjectManagedApplicationGraph } from "./registerManagedWorkflowTools/projectManagedApplicationGraph.js";
6
5
  /** Register provider-neutral managed-code workflows. */
7
6
  export const registerManagedWorkflowTools = (server, options) => {
8
7
  registerCompareManagedMembers(server, options);
9
8
  registerVerifyManagedNativeBoundaries(server, options);
10
9
  registerImportManagedReconstruction(server, options);
11
- registerPlanManagedRuntimeCorrelation(server, options);
12
10
  registerProjectManagedApplicationGraph(server, options);
13
11
  };
@@ -1,4 +1,4 @@
1
- import { SESSION_TOOL_CONTRACTS } from "../contracts/toolContracts.js";
1
+ import { toolContract } from "../contracts/toolContracts.js";
2
2
  import { EvidenceIntegrityError } from "../domain/errors.js";
3
3
  import { createEvidence, parseEvidence, } from "../domain/evidence.js";
4
4
  import { jsonValueSchema } from "../domain/jsonValue.js";
@@ -92,9 +92,7 @@ const comparisonUnknownInput = (parsed, comparison) => {
92
92
  ["interaction", comparison.interaction],
93
93
  ["exit", comparison.exit],
94
94
  ["filesystem", comparison.filesystem],
95
- ["protocol", comparison.protocol],
96
95
  ["process", comparison.process],
97
- ["shim", comparison.shim],
98
96
  ]
99
97
  .filter(([, status]) => status !== "unchanged")
100
98
  .map(([scope]) => scope)
@@ -1,5 +1,5 @@
1
1
  import { readEvidenceBundle, writeEvidenceBundle, } from "../application/EvidenceBundleFiles.js";
2
- import { SESSION_TOOL_CONTRACTS } from "../contracts/toolContracts.js";
2
+ import { toolContract } from "../contracts/toolContracts.js";
3
3
  import { ok } from "../domain/result.js";
4
4
  import { toolRegistrationOptions } from "./toolRegistrationOptions.js";
5
5
  import { toCallToolResult } from "./toolResult.js";
@@ -47,8 +47,8 @@ const registerImportEvidenceTool = ({ server, session, importContract, }) => {
47
47
  };
48
48
  const unknownRevisionKey = (unknown) => `${unknown.unknown_id}:${String(unknown.revision)}`;
49
49
  /** Register residual-unknown query and mutation tools. */
50
- const registerListUnknownsTool = ({ server, session, contracts, }) => {
51
- const listContract = contracts[14];
50
+ const registerListUnknownsTool = ({ server, session, }) => {
51
+ const listContract = toolContract("list_unknowns");
52
52
  server.registerTool(listContract.name, toolRegistrationOptions(listContract), (input) => {
53
53
  const filters = input;
54
54
  const all = session.listUnknowns({
@@ -64,22 +64,22 @@ const registerListUnknownsTool = ({ server, session, contracts, }) => {
64
64
  }), listContract);
65
65
  });
66
66
  };
67
- const registerRecordUnknownTool = ({ server, session, contracts, }) => {
68
- const recordContract = contracts[15];
67
+ const registerRecordUnknownTool = ({ server, session, }) => {
68
+ const recordContract = toolContract("record_unknown");
69
69
  server.registerTool(recordContract.name, toolRegistrationOptions(recordContract), (input) => {
70
70
  const result = session.recordUnknown(input);
71
71
  return toCallToolResult(result, recordContract);
72
72
  });
73
73
  };
74
- const registerUpdateUnknownTool = ({ server, session, contracts, }) => {
75
- const updateContract = contracts[16];
74
+ const registerUpdateUnknownTool = ({ server, session, }) => {
75
+ const updateContract = toolContract("update_unknown");
76
76
  server.registerTool(updateContract.name, toolRegistrationOptions(updateContract), (input) => {
77
77
  const result = session.updateUnknown(input);
78
78
  return toCallToolResult(result, updateContract);
79
79
  });
80
80
  };
81
- const registerVerifyUnknownTool = ({ server, session, contracts, }) => {
82
- const verifyContract = contracts[17];
81
+ const registerVerifyUnknownTool = ({ server, session, }) => {
82
+ const verifyContract = toolContract("verify_unknown_resolution");
83
83
  server.registerTool(verifyContract.name, toolRegistrationOptions(verifyContract), (input) => toCallToolResult(session.verifyUnknownResolution(input.unknown_id), verifyContract));
84
84
  };
85
85
  export const registerUnknownTools = (registration) => {
@@ -1,5 +1,5 @@
1
1
  import { buildCapabilityInventory } from "../application/CapabilityInventory.js";
2
- import { SESSION_TOOL_CONTRACTS } from "../contracts/toolContracts.js";
2
+ import { toolContract } from "../contracts/toolContracts.js";
3
3
  import { jsonObjectSchema } from "../domain/jsonValue.js";
4
4
  import { createServerIdentity } from "../serverIdentity.js";
5
5
  import { mcpClientMetadata } from "./mcpClientMetadata.js";
@@ -1,31 +1,25 @@
1
1
  import { z } from "zod";
2
- import { isInputRequiredResult } from "@modelcontextprotocol/server";
3
2
  import { getNavigationContext, inspectAddressContext, } from "../application/AnalysisContextQueries.js";
4
3
  import { readAnalysisSnapshot } from "../application/AnalysisSnapshotFiles.js";
5
- import { processCapturePermissionRequest } from "../application/ProcessCapturePermission.js";
6
4
  import { createProcessCaptureEvidence } from "../application/ProcessEvidence.js";
7
5
  import { captureProcessScenario } from "../application/ProcessHarness.js";
8
- import { SESSION_TOOL_CONTRACTS } from "../contracts/toolContracts.js";
6
+ import { toolContract } from "../contracts/toolContracts.js";
9
7
  import { UnknownRegistryError } from "../domain/errors.js";
10
- import { err, ok } from "../domain/result.js";
11
- import { projectPermissionFailure } from "../application/PermissionFailure.js";
8
+ import { ok } from "../domain/result.js";
12
9
  import { mcpProgressReporter } from "./mcpProgress.js";
13
- import { authorizeProcessCaptureWithElicitation, } from "./ProcessCaptureElicitation.js";
14
10
  import { registerArtifactComparisonTool } from "./registerArtifactComparisonTool.js";
15
11
  import { registerBundleComparisonTool } from "./registerBundleComparisonTool.js";
16
12
  import { registerCloseLifecycleTool } from "./registerCloseLifecycleTool.js";
17
13
  import { registerFunctionComparisonTool } from "./registerFunctionComparisonTool.js";
18
14
  import { registerInvestigationTools } from "./registerInvestigationTools.js";
19
15
  import { registerProcessComparisonTool } from "./registerProcessComparisonTool.js";
20
- import { registerReplayMachineTool } from "./registerReplayMachineTool.js";
21
16
  import { registerEvidenceTools, registerUnknownTools, } from "./registerSessionRecordTools.js";
22
17
  import { registerSessionStatusTool } from "./registerSessionStatusTool.js";
23
18
  import { sessionAvailabilityPolicy, } from "./sessionAvailabilityPolicy.js";
24
- import { DENY_PROCESS_POLICY } from "./sessionToolPolicies.js";
25
19
  import { logToolExecution } from "./toolLogging.js";
26
20
  import { toolRegistrationOptions } from "./toolRegistrationOptions.js";
27
21
  import { toCallToolResult } from "./toolResult.js";
28
- const recordProcessResidualUnknowns = (session, scenario, evidence, residuals) => {
22
+ const recordProcessResidualUnknowns = (session, evidence, residuals) => {
29
23
  for (const residual of residuals) {
30
24
  const unknown = session.recordUnknown({
31
25
  question: `Was ${residual.scope} behavior fully observed during capture?`,
@@ -51,19 +45,9 @@ const recordProcessResidualUnknowns = (session, scenario, evidence, residuals) =
51
45
  }
52
46
  return ok(null);
53
47
  };
54
- const registerProcessTools = ({ server, session, logger, processPolicy, captureContract, permissionAuthority, processCaptureElicitation, }) => {
48
+ const registerProcessTools = ({ server, session, logger, captureContract, }) => {
55
49
  server.registerTool(captureContract.name, toolRegistrationOptions(captureContract), async (input, context) => {
56
50
  const scenario = input;
57
- if (permissionAuthority !== undefined) {
58
- const request = processCapturePermissionRequest(scenario);
59
- const authorized = processCaptureElicitation === undefined
60
- ? await permissionAuthority.authorize(request, "read")
61
- : await authorizeProcessCaptureWithElicitation(permissionAuthority, request, context, processCaptureElicitation);
62
- if (isInputRequiredResult(authorized))
63
- return authorized;
64
- if (!authorized.ok)
65
- return toCallToolResult(err(projectPermissionFailure(authorized.error)), captureContract);
66
- }
67
51
  const progress = mcpProgressReporter(context);
68
52
  await progress.report({
69
53
  phase: captureContract.name,
@@ -71,7 +55,7 @@ const registerProcessTools = ({ server, session, logger, processPolicy, captureC
71
55
  total: 1,
72
56
  message: "started",
73
57
  });
74
- const captured = await logToolExecution(logger, captureContract.name, () => captureProcessScenario(scenario, processPolicy(), context.mcpReq.signal));
58
+ const captured = await logToolExecution(logger, captureContract.name, () => captureProcessScenario(scenario, context.mcpReq.signal));
75
59
  await progress.report({
76
60
  phase: captureContract.name,
77
61
  completed: 1,
@@ -85,25 +69,25 @@ const registerProcessTools = ({ server, session, logger, processPolicy, captureC
85
69
  const recorded = session.recordEvidence(evidence);
86
70
  if (!recorded.ok)
87
71
  return toCallToolResult(recorded, captureContract);
88
- const unknowns = recordProcessResidualUnknowns(session, scenario, evidence, captured.value.residual_unknowns);
72
+ const unknowns = recordProcessResidualUnknowns(session, evidence, captured.value.residual_unknowns);
89
73
  if (!unknowns.ok)
90
74
  return toCallToolResult(unknowns, captureContract);
91
75
  return toCallToolResult(ok(evidence), captureContract);
92
76
  });
93
77
  };
94
78
  const registerLifecycleTools = (registration) => {
95
- const { server, session, contracts, startedAt, availabilityPolicy } = registration;
79
+ const { server, session, statusContract, startedAt, availabilityPolicy } = registration;
96
80
  registerOpenLifecycleTool(registration);
97
81
  registerCloseLifecycleTool(registration);
98
82
  registerSessionStatusTool({
99
83
  server,
100
84
  session,
101
- contract: contracts[2],
85
+ contract: statusContract,
102
86
  startedAt,
103
87
  availabilityPolicy,
104
88
  });
105
89
  };
106
- const registerOpenLifecycleTool = ({ server, session, logger, contracts: [openContract], }) => {
90
+ const registerOpenLifecycleTool = ({ server, session, logger, openContract, }) => {
107
91
  server.registerTool(openContract.name, toolRegistrationOptions(openContract), async (input, context) => {
108
92
  let snapshot;
109
93
  if (input.snapshot_path !== undefined) {
@@ -136,17 +120,9 @@ const registerOpenLifecycleTool = ({ server, session, logger, contracts: [openCo
136
120
  : toCallToolResult(opened, openContract);
137
121
  });
138
122
  };
139
- const registerRecordAndReplayTools = (server, session, logger) => {
140
- registerUnknownTools({
141
- server,
142
- session,
143
- contracts: SESSION_TOOL_CONTRACTS,
144
- });
145
- registerReplayMachineTool(server, logger);
146
- };
147
123
  const registerContextTools = (server, session) => {
148
- const navigationContract = SESSION_TOOL_CONTRACTS[20];
149
- const addressContract = SESSION_TOOL_CONTRACTS[21];
124
+ const navigationContract = toolContract("get_navigation_context");
125
+ const addressContract = toolContract("inspect_address_context");
150
126
  server.registerTool(navigationContract.name, toolRegistrationOptions(navigationContract), async (input, context) => {
151
127
  return toCallToolResult(await getNavigationContext(session, input, context.mcpReq.signal), navigationContract);
152
128
  });
@@ -155,18 +131,26 @@ const registerContextTools = (server, session) => {
155
131
  });
156
132
  };
157
133
  export const registerSessionTools = (server, session, logger, options = {}) => {
158
- const processPolicy = options.processPolicy ?? (() => DENY_PROCESS_POLICY);
159
- const [openContract, closeContract, statusContract, exportContract, importContract, captureContract, compareContract, compareArtifactsContract, compareFunctionsContract, compareBundlesContract, changedBehaviorContract, callPathContract, staticRuntimeContract, reconstructionContract,] = SESSION_TOOL_CONTRACTS;
160
- const snapshotContract = SESSION_TOOL_CONTRACTS[19];
134
+ const openContract = toolContract("open_binary");
135
+ const closeContract = toolContract("close_binary");
136
+ const statusContract = toolContract("binary_session");
137
+ const exportContract = toolContract("export_evidence_bundle");
138
+ const importContract = toolContract("import_evidence_bundle");
139
+ const captureContract = toolContract("capture_process_scenario");
140
+ const compareContract = toolContract("compare_process_captures");
141
+ const compareArtifactsContract = toolContract("compare_artifacts");
142
+ const compareFunctionsContract = toolContract("compare_functions");
143
+ const compareBundlesContract = toolContract("compare_bundles");
144
+ const snapshotContract = toolContract("get_evidence_bundle");
161
145
  registerLifecycleTools({
162
146
  server,
163
147
  session,
164
148
  logger,
165
- contracts: [openContract, closeContract, statusContract],
149
+ openContract,
150
+ closeContract,
151
+ statusContract,
166
152
  startedAt: options.startedAt ?? new Date().toISOString(),
167
- availabilityPolicy: sessionAvailabilityPolicy(options.availabilityPolicy, {
168
- processPolicy: processPolicy(),
169
- }),
153
+ availabilityPolicy: sessionAvailabilityPolicy(options.availabilityPolicy, {}),
170
154
  });
171
155
  registerEvidenceTools({
172
156
  server,
@@ -179,26 +163,13 @@ export const registerSessionTools = (server, session, logger, options = {}) => {
179
163
  server,
180
164
  session,
181
165
  logger,
182
- processPolicy,
183
166
  captureContract,
184
- ...(options.permissionAuthority === undefined
185
- ? {}
186
- : { permissionAuthority: options.permissionAuthority }),
187
- ...(options.processCaptureElicitation === undefined
188
- ? {}
189
- : { processCaptureElicitation: options.processCaptureElicitation }),
190
167
  });
191
168
  registerProcessComparisonTool(server, session, compareContract);
192
169
  registerArtifactComparisonTool(server, session, compareArtifactsContract);
193
170
  registerFunctionComparisonTool(server, session, compareFunctionsContract);
194
171
  registerBundleComparisonTool(server, session, compareBundlesContract);
195
- const investigationContracts = [
196
- changedBehaviorContract,
197
- callPathContract,
198
- staticRuntimeContract,
199
- reconstructionContract,
200
- ];
201
- registerInvestigationTools(server, session, investigationContracts);
202
- registerRecordAndReplayTools(server, session, logger);
172
+ registerInvestigationTools(server, session);
173
+ registerUnknownTools({ server, session });
203
174
  registerContextTools(server, session);
204
175
  };
@@ -1,12 +1,11 @@
1
+ import { platform } from "node:process";
1
2
  /** Select configured availability reporting or the target-free defaults. */
2
3
  export const sessionAvailabilityPolicy = (configured, defaults) => configured ??
3
4
  (() => ({
4
- processCaptureEnabled: defaults.processPolicy.status === "enabled",
5
+ processCaptureEnabled: platform !== "win32",
5
6
  browserObservationEnabled: defaults.optionalFeatures?.browserObservationEnabled ?? false,
6
7
  browserScenarioEnabled: defaults.optionalFeatures?.browserScenarioEnabled ?? false,
7
8
  electronObservationEnabled: defaults.optionalFeatures?.electronObservationEnabled ?? false,
8
9
  electronAutomationEnabled: defaults.optionalFeatures?.electronAutomationEnabled ?? false,
9
10
  v8InspectorObservationEnabled: defaults.optionalFeatures?.v8InspectorObservationEnabled ?? false,
10
- javascriptReplayEnabled: defaults.optionalFeatures?.javascriptReplayEnabled ?? false,
11
- managedRuntimeEnabled: defaults.optionalFeatures?.managedRuntimeEnabled ?? false,
12
11
  }));
@@ -1,6 +1,2 @@
1
- /** Fail-closed process policy used when operator configuration is absent. */
2
- export const DENY_PROCESS_POLICY = {
3
- status: "disabled",
4
- };
5
1
  export { PROCESS_PROVIDER } from "../application/ProcessEvidence.js";
6
2
  export { ARTIFACT_COMPARISON_PROVIDER, BUNDLE_COMPARISON_PROVIDER, CALL_PATH_PROVIDER, CHANGED_BEHAVIOR_PROVIDER, FUNCTION_COMPARISON_PROVIDER, RECONSTRUCTION_PROVIDER, STATIC_RUNTIME_PROVIDER, } from "../application/InvestigationProviders.js";
@@ -1,8 +1,8 @@
1
1
  import { projectAnalysisError } from "../domain/errors.js";
2
2
  /**
3
- * Translate an application result into MCP text content.
4
- * Error tags and safe messages remain visible while underlying causes, process
5
- * output, and other potentially sensitive details stay private.
3
+ * Serialize an application result as MCP text and structured content.
4
+ * Shared error projection preserves actionable local diagnostics while omitting
5
+ * raw causes and captured process output.
6
6
  */
7
7
  export const toCallToolResult = (result, contract) => result.ok ? successResult(result.value, contract) : errorResult(result.error);
8
8
  const errorResult = (error) => {
@@ -20,7 +20,7 @@ const errorResult = (error) => {
20
20
  };
21
21
  };
22
22
  const successResult = (value, contract) => {
23
- const candidate = compactEvidence(value) ??
23
+ const candidate = projectEvidence(value) ??
24
24
  (contract.kind === "session" ? { result: value } : value);
25
25
  return {
26
26
  content: [
@@ -32,7 +32,7 @@ const successResult = (value, contract) => {
32
32
  structuredContent: candidate,
33
33
  };
34
34
  };
35
- const compactEvidence = (value) => {
35
+ const projectEvidence = (value) => {
36
36
  if (typeof value !== "object" ||
37
37
  value === null ||
38
38
  Array.isArray(value) ||
@@ -40,15 +40,13 @@ const compactEvidence = (value) => {
40
40
  !/^ev_[a-f0-9]{64}$/u.test(value.evidence_id) ||
41
41
  !("normalized_result" in value))
42
42
  return undefined;
43
- const evidence = value;
44
- const normalizedResult = evidence.normalized_result;
45
- const evidenceId = evidence.evidence_id;
43
+ const normalizedResult = value.normalized_result;
44
+ const evidenceId = value.evidence_id;
46
45
  if (normalizedResult === undefined || typeof evidenceId !== "string")
47
46
  return undefined;
48
- const inlineEvidence = Object.fromEntries(Object.entries(evidence).filter(([key]) => key !== "normalized_result"));
49
47
  return {
50
48
  result: normalizedResult,
51
49
  evidence_id: evidenceId,
52
- evidence: inlineEvidence,
50
+ evidence: value,
53
51
  };
54
52
  };