rea-agents 6.2.0 → 6.4.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 (636) hide show
  1. package/README.md +24 -23
  2. package/bridge/ghidra/ReaGhidraApplySeeds.java +151 -0
  3. package/bridge/ghidra/ReaGhidraBridge.java +597 -209
  4. package/bridge/ghidra/ReaGhidraNoReturnFix.java +123 -0
  5. package/bridge/hopper_bridge.py +2 -0
  6. package/dist/adb/AdbConfiguration.js +88 -0
  7. package/dist/adb/AdbDeviceOutput.js +186 -0
  8. package/dist/adb/AdbProvider.js +1190 -0
  9. package/dist/adb/AdbShellOutput.js +309 -0
  10. package/dist/android/AndroidTargetSnapshot.js +104 -22
  11. package/dist/android/JadxConfiguration.js +44 -24
  12. package/dist/android/JadxProvider.js +59 -21
  13. package/dist/android/JadxSession.js +51 -9
  14. package/dist/apktool/ApktoolConfiguration.js +84 -0
  15. package/dist/apktool/ApktoolDecodeOutput.js +59 -0
  16. package/dist/apktool/ApktoolProvider.js +506 -0
  17. package/dist/application/AnalysisProvider.js +8 -2
  18. package/dist/application/AppBundleExecutable.js +27 -22
  19. package/dist/application/BinaryTargetResolver.js +85 -19
  20. package/dist/application/BrowserScenarioEvidence.js +2 -2
  21. package/dist/application/CapabilityInventory.js +11 -1
  22. package/dist/application/ClientConfigurationDocument.js +98 -0
  23. package/dist/application/ClientConfigurationFiles.js +91 -0
  24. package/dist/application/ClientRegistrationEnvironment.js +35 -0
  25. package/dist/application/ClientRegistrationStatus.js +75 -27
  26. package/dist/application/DirectAnalysis.js +14 -8
  27. package/dist/application/DirectAnalysisCleanup.js +1 -2
  28. package/dist/application/DirectAnalysisStatus.js +3 -6
  29. package/dist/application/Doctor.js +27 -34
  30. package/dist/application/DoctorDiagnostics.js +1 -1
  31. package/dist/application/EvidenceBundleCommands.js +6 -12
  32. package/dist/application/EvidenceBundleFiles.js +1 -1
  33. package/dist/application/GeminiClientSettings.js +139 -0
  34. package/dist/application/HermesClientHome.js +115 -0
  35. package/dist/application/HopperDownload.js +39 -0
  36. package/dist/application/InvestigationProviders.js +10 -4
  37. package/dist/application/JsonFiles.js +16 -15
  38. package/dist/application/JsonInputFile.js +252 -0
  39. package/dist/application/LinuxHopper.js +6 -13
  40. package/dist/application/MacHopper.js +172 -149
  41. package/dist/application/MipsElfAbiFlags.js +140 -0
  42. package/dist/application/ProviderOperationExecution.js +31 -0
  43. package/dist/application/ReconstructionObligationCandidates.js +16 -3
  44. package/dist/application/ReconstructionObligationLedgerProjection.js +3 -1
  45. package/dist/application/ReferenceSourceImport.js +76 -29
  46. package/dist/application/ReferenceSourceImportEntries.js +18 -9
  47. package/dist/application/ReferenceSourceImportPolicy.js +99 -23
  48. package/dist/application/ReferenceSourceImportTypes.js +30 -22
  49. package/dist/application/ReferenceSourceVcsAdapter.js +145 -30
  50. package/dist/application/RegularFileRead.js +103 -0
  51. package/dist/application/Setup.js +69 -10
  52. package/dist/application/SetupClientConfiguration.js +134 -23
  53. package/dist/application/SetupHost.js +102 -22
  54. package/dist/application/SetupPlan.js +18 -17
  55. package/dist/application/SetupSkill.js +81 -13
  56. package/dist/application/SupportedClients.js +305 -37
  57. package/dist/application/Uninstall.js +172 -8
  58. package/dist/application/UpdateMaintenance.js +23 -23
  59. package/dist/application/Utf8JsonInput.js +71 -0
  60. package/dist/application/WebScriptExportService.js +130 -57
  61. package/dist/application/WebSourceLocationService.js +3 -0
  62. package/dist/application/adb/AdbDeviceAnalysisPort.js +1 -0
  63. package/dist/application/adb/AdbDeviceAnalysisService.js +13 -0
  64. package/dist/application/analysisView/AnalysisViewService.js +40 -2
  65. package/dist/application/android/AndroidAnalysisService.js +1 -1
  66. package/dist/application/apktool/ApktoolResourceAnalysisPort.js +1 -0
  67. package/dist/application/apktool/ApktoolResourceAnalysisService.js +13 -0
  68. package/dist/application/binary/AnalysisClientCleanup.js +0 -24
  69. package/dist/application/binary/AnalysisSnapshotCache.js +5 -4
  70. package/dist/application/binary/BinarySession.js +18 -1
  71. package/dist/application/binary/BinarySessionOpen.js +9 -1
  72. package/dist/application/binaryDiagnostics/BinaryLayoutService.js +2 -1
  73. package/dist/application/binaryDiagnostics/PeResourcesPort.js +1 -0
  74. package/dist/application/binaryDiagnostics/PeResourcesService.js +111 -0
  75. package/dist/application/binaryDiagnostics/RecordedCrashService.js +2 -1
  76. package/dist/application/evm/EvmInterfaceService.js +3 -0
  77. package/dist/application/firmware/FirmwareAnalysisService.js +3 -0
  78. package/dist/application/investigation/InspectEvidenceBundle.js +18 -0
  79. package/dist/application/javascript/ElectronActiveEvidence.js +2 -2
  80. package/dist/application/javascript/ElectronBoundaryAnalysis.js +2 -2
  81. package/dist/application/javascript/ElectronBoundaryGraphContext.js +3 -2
  82. package/dist/application/javascript/ElectronBoundaryGraphIpc.js +2 -2
  83. package/dist/application/javascript/ElectronBoundaryGraphNative.js +20 -3
  84. package/dist/application/javascript/ElectronBoundaryGraphWindows.js +3 -3
  85. package/dist/application/javascript/JavaScriptApplicationEvidence.js +1 -0
  86. package/dist/application/javascript/JavaScriptApplicationEvidenceGraph.js +107 -46
  87. package/dist/application/javascript/JavaScriptApplicationService.js +23 -11
  88. package/dist/application/javascript/JavaScriptApplicationWorkflowEvidence.js +5 -6
  89. package/dist/application/javascript/JavaScriptApplicationWorkflowService.js +59 -45
  90. package/dist/application/javascript/JavaScriptArtifactAnalysis.js +171 -36
  91. package/dist/application/javascript/JavaScriptArtifactGraphAccumulator.js +14 -16
  92. package/dist/application/javascript/JavaScriptArtifactGraphBuilder.js +74 -36
  93. package/dist/application/javascript/JavaScriptArtifactGraphBundlers.js +4 -3
  94. package/dist/application/javascript/JavaScriptArtifactGraphContext.js +11 -5
  95. package/dist/application/javascript/JavaScriptArtifactGraphFindings.js +53 -42
  96. package/dist/application/javascript/JavaScriptArtifactGraphStructure.js +92 -10
  97. package/dist/application/javascript/JavaScriptArtifactPathResolution.js +293 -238
  98. package/dist/application/javascript/JavaScriptArtifactReconstruction.js +120 -28
  99. package/dist/application/javascript/JavaScriptArtifactReconstructionInput.js +4 -0
  100. package/dist/application/javascript/JavaScriptJsonModules.js +2 -2
  101. package/dist/application/javascript/JavaScriptModuleRelationships.js +10 -20
  102. package/dist/application/javascript/JavaScriptRecoveryService.js +3 -0
  103. package/dist/application/javascript/JavaScriptRuntimeReconciliationService.js +11 -27
  104. package/dist/application/javascript/JavaScriptSemanticGraphAsyncProjection.js +11 -5
  105. package/dist/application/javascript/JavaScriptSemanticGraphBuilder.js +206 -66
  106. package/dist/application/javascript/JavaScriptSemanticGraphChildProcessProjection.js +1 -1
  107. package/dist/application/javascript/JavaScriptSemanticGraphConstruction.js +18 -23
  108. package/dist/application/javascript/JavaScriptSemanticGraphDataProjection.js +5 -2
  109. package/dist/application/javascript/JavaScriptSemanticGraphEvidence.js +1 -1
  110. package/dist/application/javascript/JavaScriptSemanticGraphFingerprintProjection.js +2 -2
  111. package/dist/application/javascript/JavaScriptSemanticGraphFlowProjection.js +7 -5
  112. package/dist/application/javascript/JavaScriptSemanticGraphObjectProjection.js +6 -4
  113. package/dist/application/javascript/JavaScriptSemanticGraphProjection.js +4 -4
  114. package/dist/application/javascript/JavaScriptSemanticGraphResourceProjection.js +1 -1
  115. package/dist/application/javascript/JavaScriptSemanticGraphValueProjection.js +29 -15
  116. package/dist/application/javascript/JavaScriptSemanticTraceService.js +15 -10
  117. package/dist/application/jeb/JebAnalysisPort.js +1 -0
  118. package/dist/application/jeb/JebAnalysisService.js +13 -0
  119. package/dist/application/managed/ManagedApplicationGraphService.js +1 -1
  120. package/dist/application/native/NativeCallRoutes.js +2 -4
  121. package/dist/application/native/NativeUiActionTrace.js +16 -8
  122. package/dist/application/native/NativeValueTrace.js +23 -6
  123. package/dist/application/process/ProcessCli.js +25 -20
  124. package/dist/artifacts/ArtifactPaths.js +129 -8
  125. package/dist/artifacts/ArtifactProvider.js +34 -31
  126. package/dist/artifacts/ArtifactProviderMetadata.js +1 -4
  127. package/dist/artifacts/ArtifactReader.js +23 -0
  128. package/dist/artifacts/ArtifactResourceScope.js +100 -0
  129. package/dist/artifacts/AsarArtifactReader.js +218 -80
  130. package/dist/artifacts/AsarHeader.js +24 -0
  131. package/dist/artifacts/DirectoryArtifactReader.js +168 -65
  132. package/dist/artifacts/MachOSliceArtifactReader.js +116 -39
  133. package/dist/artifacts/NativeDmgArtifactReader.js +179 -87
  134. package/dist/artifacts/NativeDmgOwnership.js +109 -0
  135. package/dist/artifacts/SafeOutputTree.js +245 -70
  136. package/dist/artifacts/SafeOutputTreeCleanup.js +45 -0
  137. package/dist/artifacts/SafeOutputTreeCreationFailure.js +20 -0
  138. package/dist/artifacts/SafeOutputTreeIdentity.js +42 -0
  139. package/dist/artifacts/SafeOutputTreeReadback.js +33 -0
  140. package/dist/artifacts/ZipArtifactReader.js +77 -27
  141. package/dist/artifacts/apple/InterfaceBuilderAnalysis.js +58 -18
  142. package/dist/artifacts/apple/InterfaceBuilderDecodeBudget.js +62 -24
  143. package/dist/artifacts/apple/KeyedArchiveReader.js +76 -49
  144. package/dist/artifacts/apple/MachoLoadCommandReader.js +36 -6
  145. package/dist/artifacts/extraction/ArtifactExtraction.js +134 -92
  146. package/dist/artifacts/inventory/ArtifactGraphConstruction.js +116 -50
  147. package/dist/artifacts/inventory/ArtifactInventory.js +5 -4
  148. package/dist/artifacts/inventory/classify.js +87 -25
  149. package/dist/artifacts/inventory/hashStableRootArtifact.js +70 -0
  150. package/dist/artifacts/inventory/reader.js +13 -5
  151. package/dist/artifacts/inventory/scanCanonical.js +73 -30
  152. package/dist/artifacts/inventory/scanReader.js +43 -20
  153. package/dist/artifacts/javascript/JavaScriptArtifactFiles.js +72 -28
  154. package/dist/artifacts/javascript/JavaScriptSourceAnalysis.js +3 -0
  155. package/dist/browser/BrowserScenarioPartialObservation.js +8 -2
  156. package/dist/browser/BrowserScenarioSecrets.js +52 -37
  157. package/dist/browser/CdpBrowserProvider.js +9 -3
  158. package/dist/browser/CdpCaptureDocuments.js +40 -6
  159. package/dist/browser/CdpCaptureDomSvg.js +210 -0
  160. package/dist/browser/CdpCaptureEventBodyShapes.js +4 -8
  161. package/dist/browser/CdpCaptureEventHandlers.js +26 -9
  162. package/dist/browser/CdpCaptureEvents.js +4 -9
  163. package/dist/browser/CdpCaptureStorageFingerprints.js +3 -3
  164. package/dist/browser/CdpConnection.js +22 -5
  165. package/dist/browser/CdpElectronInspection.js +2 -2
  166. package/dist/browser/CdpElectronProvider.js +4 -3
  167. package/dist/browser/CdpElectronScripts.js +2 -2
  168. package/dist/browser/CdpPageCapture.js +1 -1
  169. package/dist/browser/CdpTargetSession.js +30 -34
  170. package/dist/browser/CdpWebMcpDiscovery.js +48 -23
  171. package/dist/browser/ElectronFileScope.js +99 -9
  172. package/dist/browser/PlaywrightBrowserScenarioProvider.js +63 -7
  173. package/dist/browser/PlaywrightElectronActiveProvider.js +11 -6
  174. package/dist/browser/PlaywrightScenarioArtifacts.js +5 -5
  175. package/dist/browser/PlaywrightScenarioBrowser.js +208 -43
  176. package/dist/browser/PlaywrightScenarioSession.js +130 -65
  177. package/dist/browser/PlaywrightScenarioStorage.js +507 -0
  178. package/dist/browser/PngVisualDiff.js +198 -29
  179. package/dist/browser/WebSourceMapFetcher.js +35 -9
  180. package/dist/browser/assets/LocalWebScriptArtifacts.js +3 -1
  181. package/dist/browser/assets/PublishWebScripts.js +75 -20
  182. package/dist/browser/assets/ScenarioScriptCapture.js +8 -12
  183. package/dist/browser/assets/WebArtifactReads.js +23 -1
  184. package/dist/browser/assets/WebSourceLocationArtifacts.js +1 -0
  185. package/dist/browser/execution/CdpExecutionCapture.js +3 -3
  186. package/dist/browser/execution/CdpPreciseCoverage.js +5 -8
  187. package/dist/browser/history/HarCapture.js +14 -0
  188. package/dist/browser/history/HarCaptureProcess.js +2 -10
  189. package/dist/browser/history/MitmproxyCaptureAdapter.js +3 -1
  190. package/dist/browser/modules/WebModuleArtifacts.js +1 -0
  191. package/dist/cli/adbCommands.js +337 -0
  192. package/dist/cli/analysisViewCommands.js +39 -1
  193. package/dist/cli/apktoolCommands.js +53 -0
  194. package/dist/cli/artifactCommands.js +8 -11
  195. package/dist/cli/binaryDiagnosticsCommands.js +19 -1
  196. package/dist/cli/browserAdvancedCommands.js +65 -36
  197. package/dist/cli/coreAnalysisCommands.js +2 -2
  198. package/dist/cli/coreBinaryCommands.js +12 -13
  199. package/dist/cli/coreNativeCommands.js +1 -14
  200. package/dist/cli/electronCommands.js +14 -10
  201. package/dist/cli/evmCommands.js +13 -4
  202. package/dist/cli/firmwareCommands.js +7 -2
  203. package/dist/cli/javascriptApplicationAnalysis.js +19 -13
  204. package/dist/cli/javascriptRecoveryCommands.js +22 -15
  205. package/dist/cli/jebCommands.js +99 -0
  206. package/dist/cli/jsonOutput.js +12 -4
  207. package/dist/cli/referenceSourceImportStatus.js +7 -0
  208. package/dist/cli/setupCommands.js +15 -3
  209. package/dist/cli/streamedJsonOutput.js +83 -4
  210. package/dist/cli/utilityCommands.js +68 -22
  211. package/dist/cli/webScriptCommands.js +20 -1
  212. package/dist/cli/webSourceLocationCommands.js +21 -9
  213. package/dist/cli.js +11 -2
  214. package/dist/cliBrowserScenarioCommands.js +2 -1
  215. package/dist/cliCommandNames.js +32 -0
  216. package/dist/cliJsonInput.js +47 -34
  217. package/dist/cliObservationOptions.js +7 -0
  218. package/dist/composition/adb.js +3 -0
  219. package/dist/composition/apktool.js +3 -0
  220. package/dist/composition/auxiliaryAnalysisProviders.js +5 -4
  221. package/dist/composition/binaryDiagnostics.js +4 -0
  222. package/dist/composition/browserScenario.js +2 -2
  223. package/dist/composition/directAnalysis.js +14 -7
  224. package/dist/composition/javascriptAnalysisWorkerProcess.js +48 -0
  225. package/dist/composition/jeb.js +6 -0
  226. package/dist/config/environment.js +10 -0
  227. package/dist/config/ghidraLanguageOverride.js +9 -0
  228. package/dist/config/mcpInputSchemaProfile.js +27 -0
  229. package/dist/config/parseConfig.js +28 -1
  230. package/dist/contracts/adb/adbToolContracts.js +353 -0
  231. package/dist/contracts/advertisedInputExamples.js +48 -0
  232. package/dist/contracts/analysisDetail.js +10 -0
  233. package/dist/contracts/analysisViewToolContracts.js +17 -2
  234. package/dist/contracts/apktool/apktoolToolContracts.js +33 -0
  235. package/dist/contracts/artifactComparisonExample.js +5 -5
  236. package/dist/contracts/artifactToolContracts.js +8 -5
  237. package/dist/contracts/browserToolContracts.js +1 -1
  238. package/dist/contracts/compactInputSchema.js +256 -0
  239. package/dist/contracts/errorSchemas.js +3 -1
  240. package/dist/contracts/functionComparisonExample.js +8 -0
  241. package/dist/contracts/functionWorkflowToolContracts.js +1 -1
  242. package/dist/contracts/inputSchemaPresentation.js +104 -13
  243. package/dist/contracts/javascript/electronToolContracts.js +16 -3
  244. package/dist/contracts/javascript/javascriptApplicationWorkflowExamples.js +3 -2
  245. package/dist/contracts/javascript/javascriptExportShapeComparisonExample.js +6 -3
  246. package/dist/contracts/javascript/javascriptRecoveryToolContracts.js +1 -1
  247. package/dist/contracts/javascript/javascriptRuntimeReconciliationExample.js +8 -7
  248. package/dist/contracts/jeb/jebToolContracts.js +64 -0
  249. package/dist/contracts/managed/managedToolContracts.js +3 -2
  250. package/dist/contracts/mobileApplicationGraphExamples.js +5 -5
  251. package/dist/contracts/native/binaryDiagnosticsToolContracts.js +25 -3
  252. package/dist/contracts/native/nativeToolContracts.js +1 -1
  253. package/dist/contracts/officialToolContracts.js +5 -5
  254. package/dist/contracts/sessionLifecycleInputs.js +4 -3
  255. package/dist/contracts/sessionStatusContract.js +3 -2
  256. package/dist/contracts/sessionToolContracts.js +5 -4
  257. package/dist/contracts/sessionToolSchemas.js +9 -4
  258. package/dist/contracts/toolContractExamples.js +6 -0
  259. package/dist/contracts/toolContractTypes.js +3 -0
  260. package/dist/contracts/toolContracts.js +6 -0
  261. package/dist/contracts/toolEffects.js +167 -0
  262. package/dist/contracts/toolOutputSchemaGroups.js +7 -5
  263. package/dist/contracts/toolOutputSchemaPrimitives.js +2 -5
  264. package/dist/contracts/toolSchemaMetadata.js +82 -7
  265. package/dist/domain/adb/adbDeviceAnalysis.js +583 -0
  266. package/dist/domain/analysisErrorBase.js +5 -0
  267. package/dist/domain/analysisErrorCleanup.js +29 -0
  268. package/dist/domain/analysisErrorPresentation.js +18 -4
  269. package/dist/domain/analysisErrorProjection.js +4 -1
  270. package/dist/domain/analysisSnapshot.js +5 -2
  271. package/dist/domain/analysisView/analysisView.js +53 -5
  272. package/dist/domain/analysisView/binaryLayoutView.js +2 -0
  273. package/dist/domain/analysisView/javascriptApplicationView.js +2 -0
  274. package/dist/domain/analysisView/nativeFunctionView.js +155 -0
  275. package/dist/domain/android/androidApplication.js +25 -20
  276. package/dist/domain/android/androidPartialObservation.js +36 -0
  277. package/dist/domain/apktool/apktoolResourceAnalysis.js +77 -0
  278. package/dist/domain/apple/appleApplication.js +40 -23
  279. package/dist/domain/apple/appleBundleAnatomy.js +95 -28
  280. package/dist/domain/apple/dyldPaths.js +9 -1
  281. package/dist/domain/apple/dylibResolution.js +3 -3
  282. package/dist/domain/apple/interfaceBuilderGraph.js +22 -19
  283. package/dist/domain/apple/interfaceBuilderKeyedArchive.js +10 -1
  284. package/dist/domain/artifactComparison.js +39 -11
  285. package/dist/domain/artifactGraph.js +6 -4
  286. package/dist/domain/artifactIdentity.js +37 -9
  287. package/dist/domain/artifactInspection.js +10 -50
  288. package/dist/domain/artifactIntegrityPolicy.js +10 -0
  289. package/dist/domain/artifactInventoryEvidence.js +16 -17
  290. package/dist/domain/artifactPathSyntax.js +1 -1
  291. package/dist/domain/binaryTarget.js +16 -0
  292. package/dist/domain/binaryTargetTypes.js +8 -1
  293. package/dist/domain/browserCompleteness.js +3 -2
  294. package/dist/domain/browserObservationSchemas.js +8 -4
  295. package/dist/domain/browserScenarioCaptureValues.js +2 -2
  296. package/dist/domain/browserScenarioNormalization.js +3 -3
  297. package/dist/domain/browserScenarioValues.js +3 -2
  298. package/dist/domain/callPath.js +8 -10
  299. package/dist/domain/canonicalDigest.js +7 -1
  300. package/dist/domain/canonicalJsonDigestSteps.js +34 -12
  301. package/dist/domain/canonicalOrdering.js +1 -13
  302. package/dist/domain/changedBehavior.js +2 -3
  303. package/dist/domain/compactStringIdentity.js +9 -0
  304. package/dist/domain/comparisonSemantics.js +0 -5
  305. package/dist/domain/digests.js +0 -3
  306. package/dist/domain/evidence.js +12 -6
  307. package/dist/domain/evidenceBundle.js +51 -33
  308. package/dist/domain/evidenceRecordSummary.js +144 -0
  309. package/dist/domain/firmware/firmwareAnalysis.js +4 -3
  310. package/dist/domain/functionComparison.js +2 -1
  311. package/dist/domain/functionComparisonNormalization.js +4 -3
  312. package/dist/domain/functionComparisonResults.js +2 -2
  313. package/dist/domain/functionDossierEvidence.js +2 -1
  314. package/dist/domain/hopperValues.js +11 -15
  315. package/dist/domain/inputIssueProjection.js +16 -1
  316. package/dist/domain/javascript/electronActiveObservation.js +4 -3
  317. package/dist/domain/javascript/electronStaticAnalysisBrowser.js +14 -15
  318. package/dist/domain/javascript/electronStaticAnalysisIpc.js +20 -21
  319. package/dist/domain/javascript/electronStaticAnalysisNative.js +73 -41
  320. package/dist/domain/javascript/electronStaticAnalysisValues.js +24 -4
  321. package/dist/domain/javascript/javascriptAnalysisResourceControls.js +45 -0
  322. package/dist/domain/javascript/javascriptApplicationAnalysis.js +6 -1
  323. package/dist/domain/javascript/javascriptApplicationChangeGraph.js +18 -14
  324. package/dist/domain/javascript/javascriptApplicationEvidenceSchemas.js +4 -0
  325. package/dist/domain/javascript/javascriptApplicationGraph.js +91 -28
  326. package/dist/domain/javascript/javascriptApplicationProjectionResources.js +35 -0
  327. package/dist/domain/javascript/javascriptApplicationVersionComparison.js +4 -4
  328. package/dist/domain/javascript/javascriptApplicationVersionComparisonSchemas.js +37 -22
  329. package/dist/domain/javascript/javascriptApplicationVersionItems.js +72 -45
  330. package/dist/domain/javascript/javascriptApplicationVersionKeys.js +16 -8
  331. package/dist/domain/javascript/javascriptAstFingerprint.js +60 -33
  332. package/dist/domain/javascript/javascriptAstValues.js +54 -0
  333. package/dist/domain/javascript/javascriptElectronMemberWrites.js +50 -0
  334. package/dist/domain/javascript/javascriptExportShapeComparison.js +3 -2
  335. package/dist/domain/javascript/javascriptExportShapeComparisonSchemas.js +31 -23
  336. package/dist/domain/javascript/javascriptExportShapeSelection.js +2 -2
  337. package/dist/domain/javascript/javascriptExportShapeVariants.js +3 -2
  338. package/dist/domain/javascript/javascriptFeatureSeed.js +5 -3
  339. package/dist/domain/javascript/javascriptFeatureTrace.js +7 -6
  340. package/dist/domain/javascript/javascriptFeatureTraceSchemas.js +17 -9
  341. package/dist/domain/javascript/javascriptFeatureTraversal.js +4 -4
  342. package/dist/domain/javascript/javascriptModuleSemanticIr.js +15 -0
  343. package/dist/domain/javascript/javascriptNativeHandoff.js +12 -7
  344. package/dist/domain/javascript/javascriptRpcEndpoints.js +253 -0
  345. package/dist/domain/javascript/javascriptRuntimeLoadState.js +1 -3
  346. package/dist/domain/javascript/javascriptRuntimeObservation.js +8 -5
  347. package/dist/domain/javascript/javascriptRuntimeReconciliation.js +12 -6
  348. package/dist/domain/javascript/javascriptRuntimeReconciliationActive.js +9 -8
  349. package/dist/domain/javascript/javascriptRuntimeReconciliationCaptureParsing.js +212 -0
  350. package/dist/domain/javascript/javascriptRuntimeReconciliationGraph.js +12 -6
  351. package/dist/domain/javascript/javascriptRuntimeReconciliationInputValidation.js +28 -0
  352. package/dist/domain/javascript/javascriptRuntimeReconciliationMatching.js +5 -5
  353. package/dist/domain/javascript/javascriptRuntimeReconciliationParsing.js +12 -223
  354. package/dist/domain/javascript/javascriptRuntimeReconciliationResult.js +2 -2
  355. package/dist/domain/javascript/javascriptRuntimeReconciliationRuntime.js +15 -4
  356. package/dist/domain/javascript/javascriptRuntimeReconciliationSchemas.js +2 -2
  357. package/dist/domain/javascript/javascriptRuntimeStaticCandidates.js +15 -17
  358. package/dist/domain/javascript/javascriptSemanticAnalysis.js +379 -30
  359. package/dist/domain/javascript/javascriptSemanticCallResolution.js +9 -7
  360. package/dist/domain/javascript/javascriptSemanticCallableResults.js +42 -0
  361. package/dist/domain/javascript/javascriptSemanticCalls.js +8 -1
  362. package/dist/domain/javascript/javascriptSemanticChildProcesses.js +2 -2
  363. package/dist/domain/javascript/javascriptSemanticCoverage.js +20 -0
  364. package/dist/domain/javascript/javascriptSemanticDataEffectHelpers.js +7 -9
  365. package/dist/domain/javascript/javascriptSemanticDataEffects.js +4 -11
  366. package/dist/domain/javascript/javascriptSemanticDerivedAnalysis.js +15 -4
  367. package/dist/domain/javascript/javascriptSemanticFileProjection.js +1 -0
  368. package/dist/domain/javascript/javascriptSemanticFingerprints.js +43 -42
  369. package/dist/domain/javascript/javascriptSemanticGraph.js +205 -52
  370. package/dist/domain/javascript/javascriptSemanticGraphSchemas.js +21 -11
  371. package/dist/domain/javascript/javascriptSemanticIr.js +0 -4
  372. package/dist/domain/javascript/javascriptSemanticIterationSources.js +139 -0
  373. package/dist/domain/javascript/javascriptSemanticMemberMutations.js +774 -136
  374. package/dist/domain/javascript/javascriptSemanticMutationInitializers.js +190 -0
  375. package/dist/domain/javascript/javascriptSemanticMutationValues.js +98 -41
  376. package/dist/domain/javascript/javascriptSemanticObjectReferences.js +381 -0
  377. package/dist/domain/javascript/javascriptSemanticObjects.js +9 -7
  378. package/dist/domain/javascript/javascriptSemanticPrimitives.js +7 -2
  379. package/dist/domain/javascript/javascriptSemanticProjection.js +72 -28
  380. package/dist/domain/javascript/javascriptSemanticPromises.js +15 -21
  381. package/dist/domain/javascript/javascriptSemanticPropertyPaths.js +100 -0
  382. package/dist/domain/javascript/javascriptSemanticProvenance.js +3 -3
  383. package/dist/domain/javascript/javascriptSemanticQuery.js +33 -29
  384. package/dist/domain/javascript/javascriptSemanticQueryIdentity.js +4 -5
  385. package/dist/domain/javascript/javascriptSemanticQuerySchemas.js +8 -9
  386. package/dist/domain/javascript/javascriptSemanticRequireOrigin.js +16 -10
  387. package/dist/domain/javascript/javascriptSemanticReturnedReferences.js +219 -0
  388. package/dist/domain/javascript/javascriptSemanticReturns.js +34 -48
  389. package/dist/domain/javascript/javascriptSemanticState.js +22 -2
  390. package/dist/domain/javascript/javascriptSemanticTraversal.js +25 -2
  391. package/dist/domain/javascript/javascriptSemanticValues.js +169 -30
  392. package/dist/domain/javascript/javascriptSourceAnalysis.js +1 -0
  393. package/dist/domain/javascript/javascriptSourceMapPaths.js +11 -1
  394. package/dist/domain/javascript/javascriptSourceParser.js +34 -9
  395. package/dist/domain/javascript/javascriptStaticAnalysis.js +29 -17
  396. package/dist/domain/javascript/javascriptStaticAnalysisBundler.js +13 -12
  397. package/dist/domain/javascript/javascriptStaticAnalysisCalls.js +49 -5
  398. package/dist/domain/javascript/javascriptStaticAnalysisFindings.js +8 -4
  399. package/dist/domain/javascript/javascriptStaticAnalysisHelpers.js +26 -15
  400. package/dist/domain/javascript/javascriptStaticAnalysisState.js +1 -0
  401. package/dist/domain/javascript/sourceToBundleComparison.js +7 -5
  402. package/dist/domain/javascript/sourceToBundleSignals.js +7 -7
  403. package/dist/domain/jeb/jebAnalysis.js +114 -0
  404. package/dist/domain/jsonSerialization.js +109 -55
  405. package/dist/domain/jsonShape.js +69 -31
  406. package/dist/domain/jsonValue.js +3 -0
  407. package/dist/domain/localPath.js +10 -4
  408. package/dist/domain/managed/managedApplicationGraph.js +47 -6
  409. package/dist/domain/managed/managedApplicationGraphCoverage.js +8 -2
  410. package/dist/domain/managed/managedApplicationGraphNodes.js +94 -59
  411. package/dist/domain/managed/managedArtifact.js +1 -0
  412. package/dist/domain/managed/managedInspectionEvidence.js +13 -0
  413. package/dist/domain/managed/managedMemberComparisonMatch.js +6 -7
  414. package/dist/domain/native/nativeAotPe.js +1408 -0
  415. package/dist/domain/native/nativeCallObservation.js +2 -4
  416. package/dist/domain/native/nativeInstruction.js +21 -0
  417. package/dist/domain/native/nativeMetadataRecovery.js +79 -6
  418. package/dist/domain/native/nativeValueFlow.js +5 -11
  419. package/dist/domain/native/objcSwiftMetadata.js +15 -17
  420. package/dist/domain/native/peResources.js +94 -0
  421. package/dist/domain/nativeConvention.js +33 -0
  422. package/dist/domain/process/processCapture.js +102 -11
  423. package/dist/domain/process/processCaptureCoverage.js +8 -5
  424. package/dist/domain/process/processCaptureExample.js +67 -0
  425. package/dist/domain/process/processCaptureValidation.js +83 -3
  426. package/dist/domain/process/processComparison.js +0 -23
  427. package/dist/domain/process/processScenario.js +62 -10
  428. package/dist/domain/process/processTraceEvaluation.js +4 -4
  429. package/dist/domain/process/processTraceSpecification.js +1 -3
  430. package/dist/domain/propertyListKeys.js +3 -1
  431. package/dist/domain/providerCleanupError.js +6 -2
  432. package/dist/domain/reconstructionCoverage.js +2 -1
  433. package/dist/domain/reconstructionUnknowns.js +4 -3
  434. package/dist/domain/reconstructionVerification.js +3 -2
  435. package/dist/domain/referenceSourceGraph.js +32 -23
  436. package/dist/domain/referenceSourceImportParsing.js +40 -48
  437. package/dist/domain/referenceSourcePathIdentity.js +22 -0
  438. package/dist/domain/referenceSourceRequireBindings.js +137 -0
  439. package/dist/domain/residualUnknown.js +3 -2
  440. package/dist/domain/staticRuntimeCorrelation.js +2 -1
  441. package/dist/domain/swiftSymbolClassification.js +6 -1
  442. package/dist/domain/symbolAnalysis.js +17 -2
  443. package/dist/domain/unicodeCodePointOrder.js +6 -0
  444. package/dist/domain/webBundleAnalyzerInspection.js +23 -3
  445. package/dist/domain/webCaptureDiff.js +170 -30
  446. package/dist/domain/webCaptureDiffSchemas.js +2 -8
  447. package/dist/domain/webInventory.js +3 -2
  448. package/dist/domain/webMcpDiscovery.js +4 -3
  449. package/dist/domain/webScriptExport.js +1 -1
  450. package/dist/domain/webScriptExportError.js +10 -4
  451. package/dist/domain/webScriptExportPlan.js +7 -13
  452. package/dist/domain/zipPackageFormat.js +4 -1
  453. package/dist/domain/zodCollectionSteps.js +24 -0
  454. package/dist/dotnet/ManagedArtifactInspector.js +55 -43
  455. package/dist/dotnet/ManagedDecodeBudget.js +80 -0
  456. package/dist/dotnet/ManagedMemberInspector.js +13 -6
  457. package/dist/dotnet/ManagedMemberInspectorCore.js +2 -2
  458. package/dist/dotnet/ManagedMemberInstructionDecoder.js +5 -4
  459. package/dist/dotnet/ManagedMemberRows.js +9 -4
  460. package/dist/dotnet/ManagedMetadataHeaps.js +15 -5
  461. package/dist/dotnet/ManagedMetadataInventoryRows.js +20 -11
  462. package/dist/dotnet/ManagedMetadataLayout.js +10 -4
  463. package/dist/dotnet/ManagedMethodBodyReader.js +8 -3
  464. package/dist/dotnet/ManagedNativeBoundaryHelpers.js +3 -2
  465. package/dist/dotnet/ManagedNativeBoundaryInspector.js +49 -34
  466. package/dist/dotnet/ManagedPeReader.js +41 -25
  467. package/dist/dotnet/ManagedReaderFailure.js +2 -1
  468. package/dist/dotnet/ManagedStaticProvider.js +65 -31
  469. package/dist/dotnet/ManagedStaticProviderMetadata.js +1 -4
  470. package/dist/evaluation/AgentEvaluationReport.js +9 -5
  471. package/dist/evaluation/CodexAgentEval.js +43 -13
  472. package/dist/evm/EvmoleFailures.js +0 -2
  473. package/dist/evm/EvmoleInterfaceProvider.js +67 -2
  474. package/dist/filesystem/OwnedDirectoryHandle.js +29 -0
  475. package/dist/filesystem/OwnedFileHandle.js +36 -0
  476. package/dist/filesystem/RegularFile.js +73 -0
  477. package/dist/filesystem/StableFileHash.js +46 -0
  478. package/dist/filesystem/readFileHandleChunks.js +26 -0
  479. package/dist/firmware/FirmwareCommand.js +25 -3
  480. package/dist/firmware/FirmwareFiles.js +23 -8
  481. package/dist/firmware/FirmwareProvider.js +156 -32
  482. package/dist/firmware/FirmwarePublication.js +24 -3
  483. package/dist/firmware/FirmwareRelease.js +1 -0
  484. package/dist/generatedPackageMetadata.js +2 -2
  485. package/dist/ghidra/GhidraAnalysisProfile.js +55 -4
  486. package/dist/ghidra/GhidraAnalysisSeeds.js +211 -0
  487. package/dist/ghidra/GhidraClient.js +90 -8
  488. package/dist/ghidra/GhidraDiagnostics.js +11 -8
  489. package/dist/ghidra/GhidraFunctionValues.js +26 -2
  490. package/dist/ghidra/GhidraInstallation.js +111 -10
  491. package/dist/ghidra/GhidraInventoryValues.js +23 -1
  492. package/dist/ghidra/GhidraLanguageCatalog.js +99 -0
  493. package/dist/ghidra/GhidraLauncher.js +123 -58
  494. package/dist/ghidra/GhidraLoadImageAttest.js +49 -2
  495. package/dist/ghidra/GhidraMipsProfile.js +79 -0
  496. package/dist/ghidra/GhidraProvider.js +57 -9
  497. package/dist/ghidra/GhidraProviderCapabilities.js +18 -8
  498. package/dist/ghidra/GhidraProviderClient.js +282 -21
  499. package/dist/ghidra/GhidraSessionValues.js +9 -2
  500. package/dist/hopper/HopperAnalysisProfile.js +2 -0
  501. package/dist/hopper/HopperCleanup.js +1 -1
  502. package/dist/hopper/HopperClient.js +15 -6
  503. package/dist/hopper/HopperMachOImage.js +2 -0
  504. package/dist/hopper/HopperProvider.js +13 -2
  505. package/dist/ida/IdaOperationRunner.js +10 -2
  506. package/dist/ida/IdaProvider.js +7 -0
  507. package/dist/ida/IdaSessionClient.js +7 -3
  508. package/dist/ida/IdaWorkspace.js +4 -2
  509. package/dist/inspector/JavaScriptRuntimeScope.js +9 -5
  510. package/dist/inspector/V8InspectorCaptureProjection.js +46 -13
  511. package/dist/inspector/V8InspectorProvider.js +60 -8
  512. package/dist/javascript/analysis/JavaScriptAnalysisTransfer.js +326 -0
  513. package/dist/javascript/analysis/JavaScriptAnalysisWorker.js +520 -0
  514. package/dist/javascript/analysis/JavaScriptAnalysisWorkerProtocol.js +63 -0
  515. package/dist/javascript/analysis/JavaScriptAnalysisWorkerSchemas.js +521 -0
  516. package/dist/javascript/analysis/JavaScriptAnalysisWorkerServer.js +116 -0
  517. package/dist/javascript/recovery/RecoveryFiles.js +18 -7
  518. package/dist/javascript/recovery/WakaruCommand.js +22 -9
  519. package/dist/javascript/recovery/WakaruExecution.js +11 -7
  520. package/dist/javascript/recovery/WakaruProvider.js +139 -16
  521. package/dist/javascript/recovery/WakaruPublication.js +14 -4
  522. package/dist/javascript/recovery/WakaruRelease.js +10 -3
  523. package/dist/javascript/recovery/WakaruReport.js +12 -7
  524. package/dist/javascript/recovery/WakaruVersion.js +24 -0
  525. package/dist/javascript/sourceMaps/SourceMapCommand.js +16 -3
  526. package/dist/javascript/sourceMaps/SourceMapDecoder.js +63 -7
  527. package/dist/javascript/sourceMaps/SourceMapFormat.js +15 -4
  528. package/dist/jeb/JebMcpConnection.js +179 -0
  529. package/dist/jeb/JebMcpEndpoint.js +40 -0
  530. package/dist/jeb/JebProvider.js +299 -0
  531. package/dist/main/shutdown.js +76 -32
  532. package/dist/main/transport.js +1 -1
  533. package/dist/mcpDoctor.js +15 -6
  534. package/dist/native/AppleDispatchCoverage.js +25 -12
  535. package/dist/native/AppleDispatchMetadata.js +14 -7
  536. package/dist/native/AppleMachoFixups.js +71 -15
  537. package/dist/native/AppleMachoSelection.js +23 -3
  538. package/dist/native/AppleObjcDispatchFacets.js +3 -3
  539. package/dist/native/AppleObjcProperties.js +17 -7
  540. package/dist/native/LldbCallTracer.js +241 -75
  541. package/dist/native/NativeMacOSProvider.js +100 -20
  542. package/dist/native/NativeMacOSProviderMetadata.js +1 -2
  543. package/dist/native/NativeMachoInspection.js +11 -7
  544. package/dist/native/NativeUiHelperRuntime.js +6 -1
  545. package/dist/native/NativeUiObservation.js +4 -3
  546. package/dist/native/pe/PeResourceLayout.js +120 -0
  547. package/dist/native/pe/PeResourceParser.js +286 -0
  548. package/dist/native/pe/PeResourcesProvider.js +63 -0
  549. package/dist/process/BoundedFileBytes.js +30 -7
  550. package/dist/process/DarwinProcessRunTokenReader.js +8 -3
  551. package/dist/process/OwnedCommand.js +4 -3
  552. package/dist/process/ProcessOwnership.js +104 -112
  553. package/dist/process/ProcessOwnershipObservation.js +104 -51
  554. package/dist/process/ProcessOwnershipProcessTree.js +4 -4
  555. package/dist/process/ProcessRunTokenObservations.js +48 -0
  556. package/dist/process/ProviderDiagnosticRedaction.js +17 -0
  557. package/dist/process/ProviderProcess.js +4 -3
  558. package/dist/process/capture/FilesystemSnapshot.js +116 -22
  559. package/dist/process/capture/ProcessCaptureLifecycle.js +363 -86
  560. package/dist/process/capture/ProcessCaptureProgress.js +62 -0
  561. package/dist/process/capture/ProcessFilesystemEffects.js +19 -4
  562. package/dist/process/capture/ProcessHarness.js +202 -47
  563. package/dist/process/capture/ProcessNormalization.js +3 -1
  564. package/dist/process/capture/ProcessScenarioRuntimeValidation.js +5 -2
  565. package/dist/process/capture/TerminalRenderer.js +24 -7
  566. package/dist/reference/ReferenceSourceReader.js +22 -5
  567. package/dist/reference/ReferenceSourceReaderEntries.js +114 -51
  568. package/dist/reference/ReferenceSourceReaderErrors.js +12 -0
  569. package/dist/reference/ReferenceSourceReaderFile.js +50 -10
  570. package/dist/reference/ReferenceSourceReaderValidate.js +4 -4
  571. package/dist/server/EvidenceMcpServer.js +36 -1
  572. package/dist/server/admittedToolOperation.js +9 -0
  573. package/dist/server/analysisAdmission.js +8 -0
  574. package/dist/server/contractToolHandler.js +21 -0
  575. package/dist/server/createServer.js +118 -47
  576. package/dist/server/registerAdbTools.js +36 -0
  577. package/dist/server/registerAnalysisViewTool.js +4 -9
  578. package/dist/server/registerAndroidTools.js +3 -12
  579. package/dist/server/registerApktoolTools.js +14 -0
  580. package/dist/server/registerApplicationTools/compareExportShapes.js +6 -7
  581. package/dist/server/registerApplicationTools/compareSourceToBundle.js +4 -5
  582. package/dist/server/registerApplicationTools/compareVersions.js +3 -2
  583. package/dist/server/registerApplicationTools/coverage.js +3 -2
  584. package/dist/server/registerApplicationTools/helpers.js +3 -2
  585. package/dist/server/registerApplicationTools/obligationLedger.js +3 -2
  586. package/dist/server/registerApplicationTools/projectMobileApplicationGraph.js +3 -2
  587. package/dist/server/registerApplicationTools/traceFeature.js +3 -2
  588. package/dist/server/registerApplicationTools/traceSemantics.js +4 -5
  589. package/dist/server/registerArtifactComparisonTool.js +5 -2
  590. package/dist/server/registerArtifactTools.js +2 -2
  591. package/dist/server/registerBinaryDiagnosticsTools.js +16 -4
  592. package/dist/server/registerBrowserScenarioTool.js +10 -7
  593. package/dist/server/registerBrowserTools.js +12 -9
  594. package/dist/server/registerBundleComparisonTool.js +16 -2
  595. package/dist/server/registerCloseLifecycleTool.js +36 -5
  596. package/dist/server/registerElectronTools.js +28 -10
  597. package/dist/server/registerEnhancedTools.js +78 -73
  598. package/dist/server/registerEvidenceTools.js +54 -46
  599. package/dist/server/registerEvmTools.js +4 -9
  600. package/dist/server/registerFirmwareTools.js +3 -11
  601. package/dist/server/registerFunctionComparisonTool.js +5 -2
  602. package/dist/server/registerJavaScriptRecoveryTool.js +4 -9
  603. package/dist/server/registerJavaScriptRuntimeObservationTools.js +9 -6
  604. package/dist/server/registerJebTools.js +16 -0
  605. package/dist/server/registerManagedTools.js +7 -4
  606. package/dist/server/registerManagedWorkflowTools/compareManagedMembers.js +4 -6
  607. package/dist/server/registerManagedWorkflowTools/importManagedReconstruction.js +3 -2
  608. package/dist/server/registerManagedWorkflowTools/projectManagedApplicationGraph.js +3 -2
  609. package/dist/server/registerManagedWorkflowTools/verifyManagedNativeBoundaries.js +3 -2
  610. package/dist/server/registerOfficialTools.js +31 -25
  611. package/dist/server/registerPeResourcesTool.js +9 -0
  612. package/dist/server/registerProcessComparisonTool.js +5 -2
  613. package/dist/server/registerRecordedCrashTools.js +4 -9
  614. package/dist/server/registerSessionRecordTools.js +2 -1
  615. package/dist/server/registerSessionTools.js +58 -21
  616. package/dist/server/registerWebModuleTool.js +4 -9
  617. package/dist/server/registerWebNetworkCaptureTool.js +4 -9
  618. package/dist/server/registerWebRuntimeTools.js +6 -5
  619. package/dist/server/registerWebScriptTool.js +6 -3
  620. package/dist/server/registerWebSourceLocationTool.js +4 -9
  621. package/dist/server/toolResult.js +21 -2
  622. package/dist/windows/WindowsPrivateRuntime.js +12 -5
  623. package/install.sh +7 -4
  624. package/licenses/nativeaot-parser-MIT.txt +28 -0
  625. package/native/windows/build/manifest.json +2 -2
  626. package/native/windows/build/rea-windows-x64.node +0 -0
  627. package/package.json +38 -7
  628. package/scripts/rea.mjs +16 -1
  629. package/skills/reverse-engineer-anything/SKILL.md +52 -51
  630. package/skills/reverse-engineer-anything/references/connection-and-recovery.md +127 -0
  631. package/skills/reverse-engineer-anything/references/evidence-workflows.md +8 -0
  632. package/skills/reverse-engineer-anything/references/javascript-applications.md +92 -13
  633. package/skills/reverse-engineer-anything/references/native-and-artifacts.md +31 -1
  634. package/dist/artifacts/inventory/policy.js +0 -2
  635. package/dist/domain/managed/managedApplicationGraphNodeCoverage.js +0 -6
  636. package/dist/server/registerNativeTools.js +0 -6
@@ -1,4 +1,6 @@
1
1
  import { snapshotEnvironment } from "../process/snapshotEnvironment.js";
2
+ import { createPeResourcesService } from "../composition/binaryDiagnostics.js";
3
+ import { registerPeResourcesTool } from "./registerPeResourcesTool.js";
2
4
  import { createEvmInterfaceService } from "../composition/evm.js";
3
5
  import { registerEvmTools } from "./registerEvmTools.js";
4
6
  import { registerRecordedCrashTools } from "./registerRecordedCrashTools.js";
@@ -9,6 +11,7 @@ import { createBinaryLayoutService } from "../composition/binaryDiagnostics.js";
9
11
  import { EvidenceMcpServer } from "./EvidenceMcpServer.js";
10
12
  import { createToolResultDelivery, } from "./toolResult.js";
11
13
  import { parseMcpResponseBudget } from "../config/mcpResponseBudget.js";
14
+ import { COMPACT_INPUT_SCHEMA_BUDGET_BYTES, parseMcpInputSchemaProfile, } from "../config/mcpInputSchemaProfile.js";
12
15
  import { isAbsolute } from "node:path";
13
16
  import { PRODUCT_IDENTITY } from "../identity.js";
14
17
  import { silentLogger } from "../logger.js";
@@ -29,6 +32,7 @@ import { registerJavaScriptRecoveryTool } from "./registerJavaScriptRecoveryTool
29
32
  import { JavaScriptRecoveryService } from "../application/javascript/JavaScriptRecoveryService.js";
30
33
  import { createJavaScriptRecoveryProvider } from "../composition/javascriptRecovery.js";
31
34
  import { registerElectronTools } from "./registerElectronTools.js";
35
+ import { ArtifactResourceScope } from "../artifacts/ArtifactResourceScope.js";
32
36
  import { registerEnhancedTools } from "./registerEnhancedTools.js";
33
37
  import { registerJavaScriptRuntimeObservationTools } from "./registerJavaScriptRuntimeObservationTools.js";
34
38
  import { registerManagedTools } from "./registerManagedTools.js";
@@ -36,14 +40,25 @@ import { registerFirmwareTools } from "./registerFirmwareTools.js";
36
40
  import { FirmwareAnalysisService } from "../application/firmware/FirmwareAnalysisService.js";
37
41
  import { createFirmwareAnalysisProvider } from "../composition/firmware.js";
38
42
  import { registerAndroidTools } from "./registerAndroidTools.js";
43
+ import { registerApktoolTools } from "./registerApktoolTools.js";
44
+ import { registerJebTools } from "./registerJebTools.js";
45
+ import { registerAdbTools } from "./registerAdbTools.js";
39
46
  import { AndroidAnalysisService } from "../application/android/AndroidAnalysisService.js";
47
+ import { JebAnalysisService } from "../application/jeb/JebAnalysisService.js";
48
+ import { ApktoolResourceAnalysisService } from "../application/apktool/ApktoolResourceAnalysisService.js";
40
49
  import { createAndroidAnalysisProvider } from "../composition/android.js";
50
+ import { createApktoolResourceAnalysisProvider } from "../composition/apktool.js";
51
+ import { createJebAnalysisProvider } from "../composition/jeb.js";
52
+ import { AdbDeviceAnalysisService } from "../application/adb/AdbDeviceAnalysisService.js";
53
+ import { createAdbDeviceAnalysisProvider } from "../composition/adb.js";
41
54
  import { registerManagedWorkflowTools } from "./registerManagedWorkflowTools.js";
42
- import { registerNativeTools } from "./registerNativeTools.js";
55
+ import { NATIVE_TOOL_CONTRACTS } from "../contracts/native/nativeToolContracts.js";
56
+ import { registerEvidenceTools } from "./registerEvidenceTools.js";
43
57
  import { registerOfficialTools } from "./registerOfficialTools.js";
44
58
  import { registerGuidedPrompts } from "./registerPrompts.js";
45
59
  import { registerSessionTools } from "./registerSessionTools.js";
46
60
  import { sessionAvailabilityPolicy } from "./sessionAvailabilityPolicy.js";
61
+ import { withAdmittedAnalysis, } from "./analysisAdmission.js";
47
62
  const TARGET_FREE_INSTRUCTIONS = "REA provides reverse-engineering tools for local artifacts, native binaries, managed code, browser pages, and runtimes. Use the tool that directly answers the question; discover targets or inspect inventory only when needed. Tool results include inline Evidence and report their coverage and limitations.";
48
63
  const ACTIVE_TARGET_INSTRUCTIONS = "REA analyzes the active reverse-engineering target. Use the analysis tool that answers the question directly. Search or list symbols when discovery is needed; analyze_function provides a function dossier, and focused procedure tools return individual facets.";
49
64
  const installSessionToolAvailability = (session, options, environment) => {
@@ -77,7 +92,7 @@ const installSessionToolAvailability = (session, options, environment) => {
77
92
  policy,
78
93
  };
79
94
  };
80
- const createMcpServer = (session, delivery) => new EvidenceMcpServer({
95
+ const createMcpServer = (session, delivery, compactPresentation) => new EvidenceMcpServer({
81
96
  name: PRODUCT_IDENTITY.mcpServerKey,
82
97
  version: PRODUCT_IDENTITY.packageVersion,
83
98
  }, {
@@ -87,26 +102,69 @@ const createMcpServer = (session, delivery) => new EvidenceMcpServer({
87
102
  : TARGET_FREE_INSTRUCTIONS,
88
103
  }, session === undefined
89
104
  ? undefined
90
- : (evidence) => session.recordEvidence(evidence), delivery);
105
+ : (evidence) => session.recordEvidence(evidence), delivery, compactPresentation);
91
106
  /**
92
107
  * Construct one MCP server without acquiring subprocess resources.
93
108
  * Supplying a session adds target lifecycle tools; omitting it retains the
94
109
  * fixed-target seam used by focused tests and embedders.
95
110
  */
96
- export const createServer = (analysis, session, options = {}) => {
111
+ export const createServer = (source, options = {}) => {
112
+ const session = source.kind === "session" ? source.session : undefined;
113
+ const analysis = source.kind === "session" ? source.session : source.analysis;
97
114
  const environment = snapshotEnvironment(options.environment ?? process.env);
98
115
  const delivery = selectToolResultDelivery(environment, options.delivery);
99
- const selectedOptions = { ...options, environment, delivery };
116
+ const evmInterface = options.evmInterface ?? createEvmInterfaceService(environment);
117
+ const webSourceLocation = options.webSourceLocation ?? createWebSourceLocationService(environment);
118
+ const javascriptRecovery = options.javascriptRecovery ?? createJavaScriptRecoveryProvider(environment);
119
+ const artifactResources = new ArtifactResourceScope();
120
+ const firmwareAnalysis = new FirmwareAnalysisService(options.firmwareAnalysis ?? createFirmwareAnalysisProvider(environment));
121
+ const selectedOptions = {
122
+ ...options,
123
+ environment,
124
+ delivery,
125
+ evmInterface,
126
+ webSourceLocation,
127
+ javascriptRecovery,
128
+ };
100
129
  const startedAt = new Date().toISOString();
101
130
  const logger = options.logger ?? silentLogger;
102
- const server = createMcpServer(session, delivery);
131
+ const server = createMcpServer(session, delivery, selectCompactInputSchemaPresentation(environment));
103
132
  const android = options.androidAnalysis ?? createAndroidAnalysisProvider(environment);
104
- const availability = installSessionToolAvailability(session, selectedOptions, environment);
133
+ const apktool = options.apktoolAnalysis ??
134
+ createApktoolResourceAnalysisProvider(environment);
135
+ const jeb = options.jebAnalysis ?? createJebAnalysisProvider(environment);
136
+ const adbDevice = options.adbDeviceAnalysis ?? createAdbDeviceAnalysisProvider(environment);
137
+ let providerClose;
138
+ const closeProviders = () => {
139
+ providerClose ??= Promise.allSettled([
140
+ android.close(),
141
+ apktool.close(),
142
+ jeb.close(),
143
+ adbDevice.close(),
144
+ evmInterface.close(),
145
+ webSourceLocation.close(),
146
+ javascriptRecovery.close?.() ?? Promise.resolve(),
147
+ artifactResources.close(),
148
+ firmwareAnalysis.close(),
149
+ options.browserScenarioCapture?.close?.() ?? Promise.resolve(),
150
+ ])
151
+ .then((results) => {
152
+ const failures = results.flatMap((result) => result.status === "rejected" ? [result.reason] : []);
153
+ if (failures.length > 0)
154
+ throw new AggregateError(failures, "REA provider cleanup failed");
155
+ })
156
+ .catch((cause) => {
157
+ providerClose = undefined;
158
+ throw cause;
159
+ });
160
+ return providerClose;
161
+ };
162
+ const availability = installSessionToolAvailability(session, options, environment);
105
163
  const toolLogger = logger.child({ layer: "server" });
106
164
  const { evidenceById, activeTarget, recordEvidence, recordEvidenceWithUnknown, } = createSessionRecorders(server, session);
165
+ const analysisAdmission = withAdmittedAnalysis(source);
107
166
  const toolContext = {
108
167
  server,
109
- analysis,
110
168
  session,
111
169
  options: selectedOptions,
112
170
  environment,
@@ -115,23 +173,27 @@ export const createServer = (analysis, session, options = {}) => {
115
173
  activeTarget,
116
174
  recordEvidence,
117
175
  recordEvidenceWithUnknown,
176
+ withAdmittedAnalysis: analysisAdmission,
177
+ artifactResources,
118
178
  };
119
179
  registerBinaryAnalysisTools(toolContext);
120
180
  const previousOnclose = server.server.onclose;
121
181
  server.server.onclose = () => {
122
182
  previousOnclose?.();
123
- void android.close().catch((cause) => {
124
- logger.error({ error: cause instanceof Error ? cause.message : String(cause) }, "Android provider cleanup failed");
183
+ void closeProviders().catch((cause) => {
184
+ logger.error({ error: cause instanceof Error ? cause.message : String(cause) }, "Provider cleanup failed during server shutdown");
125
185
  });
126
186
  };
127
187
  const closeServer = server.close.bind(server);
128
188
  server.close = async () => {
129
- const results = await Promise.allSettled([closeServer(), android.close()]);
189
+ const results = await Promise.allSettled([closeServer(), closeProviders()]);
130
190
  for (const result of results)
131
191
  if (result.status === "rejected")
132
192
  throw result.reason;
133
193
  };
134
- registerConfiguredAnalysisTools(toolContext, android);
194
+ registerConfiguredAnalysisTools(toolContext, android, jeb, firmwareAnalysis);
195
+ registerAdbTools(server, new AdbDeviceAnalysisService(adbDevice), toolLogger, recordEvidence, analysisAdmission);
196
+ registerApktoolTools(server, new ApktoolResourceAnalysisService(apktool), toolLogger, recordEvidence, analysisAdmission);
135
197
  registerObservationTools(toolContext);
136
198
  registerGuidedPrompts(server, analysis, session);
137
199
  if (session !== undefined) {
@@ -154,19 +216,29 @@ const selectToolResultDelivery = (environment, selected) => {
154
216
  throw configured.error;
155
217
  return createToolResultDelivery(configured.value);
156
218
  };
157
- const registerConfiguredAnalysisTools = ({ server, options, environment, logger: toolLogger, evidenceById, recordEvidence, }, android) => {
158
- registerAndroidTools(server, new AndroidAnalysisService(android), toolLogger, recordEvidence);
159
- registerBinaryDiagnosticsTools(server, options.binaryLayout ?? createBinaryLayoutService(environment), toolLogger, recordEvidence);
160
- registerAnalysisViewTool(server, toolLogger, evidenceById, recordEvidence);
161
- registerEvmTools(server, options.evmInterface ?? createEvmInterfaceService(environment), toolLogger, recordEvidence);
162
- registerRecordedCrashTools(server, options.recordedCrash ?? createRecordedCrashService(environment), toolLogger, recordEvidence);
163
- registerFirmwareTools(server, new FirmwareAnalysisService(options.firmwareAnalysis ?? createFirmwareAnalysisProvider(environment)), toolLogger, recordEvidence);
164
- registerWebModuleTool(server, options.webModuleTrace ?? createWebModuleTraceService(environment), toolLogger, recordEvidence);
165
- registerWebSourceLocationTool(server, options.webSourceLocation ?? createWebSourceLocationService(environment), toolLogger, recordEvidence);
166
- registerWebRuntimeTools(server, options.webRuntime ?? createWebRuntimeService(), toolLogger, recordEvidence);
167
- registerWebNetworkCaptureTool(server, options.webNetworkCapture ?? createWebNetworkCaptureService(environment), toolLogger, recordEvidence);
219
+ const selectCompactInputSchemaPresentation = (environment) => {
220
+ const configured = parseMcpInputSchemaProfile(environment.REA_MCP_INPUT_SCHEMA_PROFILE);
221
+ if (!configured.ok)
222
+ throw configured.error;
223
+ return configured.value === "compact"
224
+ ? { budgetBytes: COMPACT_INPUT_SCHEMA_BUDGET_BYTES }
225
+ : undefined;
226
+ };
227
+ const registerConfiguredAnalysisTools = ({ server, options, environment, logger: toolLogger, evidenceById, recordEvidence, withAdmittedAnalysis, }, android, jeb, firmwareAnalysis) => {
228
+ registerAndroidTools(server, new AndroidAnalysisService(android), toolLogger, recordEvidence, withAdmittedAnalysis);
229
+ registerJebTools(server, new JebAnalysisService(jeb), toolLogger, recordEvidence, withAdmittedAnalysis);
230
+ registerBinaryDiagnosticsTools(server, options.binaryLayout ?? createBinaryLayoutService(environment), toolLogger, recordEvidence, evidenceById, withAdmittedAnalysis);
231
+ registerAnalysisViewTool(server, toolLogger, evidenceById, recordEvidence, withAdmittedAnalysis);
232
+ registerPeResourcesTool(server, createPeResourcesService(), toolLogger, recordEvidence, withAdmittedAnalysis);
233
+ registerEvmTools(server, options.evmInterface ?? createEvmInterfaceService(environment), toolLogger, recordEvidence, withAdmittedAnalysis);
234
+ registerRecordedCrashTools(server, options.recordedCrash ?? createRecordedCrashService(environment), toolLogger, recordEvidence, withAdmittedAnalysis);
235
+ registerFirmwareTools(server, firmwareAnalysis, toolLogger, recordEvidence, withAdmittedAnalysis);
236
+ registerWebModuleTool(server, options.webModuleTrace ?? createWebModuleTraceService(environment), toolLogger, recordEvidence, withAdmittedAnalysis);
237
+ registerWebSourceLocationTool(server, options.webSourceLocation ?? createWebSourceLocationService(environment), toolLogger, recordEvidence, withAdmittedAnalysis);
238
+ registerWebRuntimeTools(server, options.webRuntime ?? createWebRuntimeService(), toolLogger, recordEvidence, withAdmittedAnalysis);
239
+ registerWebNetworkCaptureTool(server, options.webNetworkCapture ?? createWebNetworkCaptureService(environment), toolLogger, recordEvidence, withAdmittedAnalysis);
168
240
  registerJavaScriptRecoveryTool(server, new JavaScriptRecoveryService(options.javascriptRecovery ??
169
- createJavaScriptRecoveryProvider(environment)), toolLogger, recordEvidence);
241
+ createJavaScriptRecoveryProvider(environment)), toolLogger, recordEvidence, withAdmittedAnalysis);
170
242
  };
171
243
  const createSessionRecorders = (server, session) => ({
172
244
  evidenceById: session === undefined
@@ -176,18 +248,12 @@ const createSessionRecorders = (server, session) => ({
176
248
  activeTarget: session === undefined ? undefined : () => session.activeTarget(),
177
249
  recordEvidence: session === undefined
178
250
  ? undefined
179
- : (evidence) => {
180
- const recorded = session.recordEvidence(evidence);
181
- return recorded;
182
- },
251
+ : (evidence) => session.recordEvidence(evidence),
183
252
  recordEvidenceWithUnknown: session === undefined
184
253
  ? undefined
185
- : (evidence, input) => {
186
- const recorded = session.recordEvidenceWithUnknown(evidence, input);
187
- return recorded;
188
- },
254
+ : (evidence, input) => session.recordEvidenceWithUnknown(evidence, input),
189
255
  });
190
- const registerBinaryAnalysisTools = ({ server, analysis, session, logger, activeTarget, recordEvidence, recordEvidenceWithUnknown, }) => {
256
+ const registerBinaryAnalysisTools = ({ server, session, logger, activeTarget, recordEvidence, recordEvidenceWithUnknown, withAdmittedAnalysis, }) => {
191
257
  const recordUnknown = session === undefined
192
258
  ? undefined
193
259
  : (input) => session.recordUnknown(input);
@@ -196,9 +262,10 @@ const registerBinaryAnalysisTools = ({ server, analysis, session, logger, active
196
262
  activeTarget,
197
263
  recordEvidence,
198
264
  recordUnknown,
265
+ withAdmittedAnalysis,
199
266
  };
200
- registerOfficialTools(server, analysis, analysisOptions);
201
- registerEnhancedTools(server, analysis, {
267
+ registerOfficialTools(server, analysisOptions);
268
+ registerEnhancedTools(server, {
202
269
  ...analysisOptions,
203
270
  analysisProfile: session === undefined ? undefined : () => session.analysisProfile(),
204
271
  allowsSnapshotReplay: session === undefined
@@ -208,26 +275,27 @@ const registerBinaryAnalysisTools = ({ server, analysis, session, logger, active
208
275
  ? undefined
209
276
  : (input) => session.recordWorkflowSnapshot(input),
210
277
  });
211
- const evidenceOptions = { logger, activeTarget, recordEvidence };
212
- registerNativeTools(server, analysis, evidenceOptions);
213
- registerArtifactTools(server, analysis, {
214
- ...evidenceOptions,
215
- });
216
- registerManagedTools(server, analysis, {
217
- ...evidenceOptions,
218
- session,
219
- });
278
+ const evidenceOptions = {
279
+ logger,
280
+ activeTarget,
281
+ recordEvidence,
282
+ withAdmittedAnalysis,
283
+ };
284
+ registerEvidenceTools(server, NATIVE_TOOL_CONTRACTS, evidenceOptions);
285
+ registerArtifactTools(server, evidenceOptions);
286
+ registerManagedTools(server, evidenceOptions);
220
287
  if (session !== undefined)
221
288
  registerManagedWorkflowTools(server, {
222
289
  logger,
223
290
  recordEvidence,
224
291
  recordEvidenceWithUnknown,
225
292
  session,
293
+ withAdmittedAnalysis,
226
294
  });
227
295
  };
228
- const registerObservationTools = ({ evidenceById, server, options, logger, recordEvidence, recordEvidenceWithUnknown, }) => {
229
- const common = { logger, recordEvidence };
230
- registerWebScriptTool(server, common);
296
+ const registerObservationTools = ({ evidenceById, server, options, logger, recordEvidence, recordEvidenceWithUnknown, withAdmittedAnalysis, artifactResources, }) => {
297
+ const common = { logger, recordEvidence, withAdmittedAnalysis };
298
+ registerWebScriptTool(server, { ...common, artifactResources });
231
299
  registerBrowserTools(server, {
232
300
  ...common,
233
301
  browser: options.browserObservation,
@@ -240,6 +308,8 @@ const registerObservationTools = ({ evidenceById, server, options, logger, recor
240
308
  });
241
309
  registerElectronTools(server, {
242
310
  ...common,
311
+ artifactResources,
312
+ evidenceById,
243
313
  electron: options.electronObservation,
244
314
  electronActive: options.electronActiveObservation,
245
315
  observationLoadFailure: options.optionalProviderLoadFailures?.electronObservation,
@@ -255,5 +325,6 @@ const registerObservationTools = ({ evidenceById, server, options, logger, recor
255
325
  logger,
256
326
  recordEvidence,
257
327
  recordEvidenceWithUnknown,
328
+ withAdmittedAnalysis,
258
329
  });
259
330
  };
@@ -0,0 +1,36 @@
1
+ import { AdbDeviceAnalysisService } from "../application/adb/AdbDeviceAnalysisService.js";
2
+ import { toolContract } from "../contracts/toolContracts.js";
3
+ import { createContractToolHandler } from "./contractToolHandler.js";
4
+ import { toolRegistrationOptions } from "./toolRegistrationOptions.js";
5
+ /** Bind ADB handlers to their exact named contracts through shared workflows. */
6
+ export const registerAdbTools = (server, service, logger, recordEvidence, withAdmittedAnalysis) => {
7
+ const handler = createContractToolHandler(server, service, logger, recordEvidence, withAdmittedAnalysis);
8
+ for (const contract of [
9
+ toolContract("inspect_adb_client"),
10
+ toolContract("list_adb_devices"),
11
+ toolContract("inspect_adb_device"),
12
+ toolContract("list_adb_packages"),
13
+ toolContract("pull_adb_package"),
14
+ toolContract("read_adb_logcat"),
15
+ toolContract("inspect_adb_package"),
16
+ toolContract("pull_adb_file"),
17
+ toolContract("push_adb_file"),
18
+ toolContract("capture_adb_screen"),
19
+ toolContract("list_adb_processes"),
20
+ toolContract("list_adb_directory"),
21
+ toolContract("list_adb_features"),
22
+ toolContract("list_adb_services"),
23
+ toolContract("inspect_adb_display"),
24
+ toolContract("inspect_adb_window"),
25
+ toolContract("read_adb_setting"),
26
+ toolContract("collect_adb_bugreport"),
27
+ toolContract("resolve_adb_packages"),
28
+ toolContract("install_adb_package"),
29
+ toolContract("uninstall_adb_package"),
30
+ toolContract("start_adb_app"),
31
+ toolContract("start_adb_activity"),
32
+ toolContract("stop_adb_app"),
33
+ ]) {
34
+ server.registerTool(contract.name, toolRegistrationOptions(contract), handler(contract));
35
+ }
36
+ };
@@ -1,15 +1,10 @@
1
1
  import { inspectAnalysisView } from "../application/analysisView/AnalysisViewService.js";
2
2
  import { toolContract } from "../contracts/toolContracts.js";
3
- import { logToolExecution } from "./toolLogging.js";
3
+ import { createEvidenceToolHandler } from "./contractToolHandler.js";
4
4
  import { toolRegistrationOptions } from "./toolRegistrationOptions.js";
5
5
  /** Bind selected-view projection to its named contract and session Evidence owner. */
6
- export const registerAnalysisViewTool = (server, logger, evidenceById, recordEvidence) => {
6
+ export const registerAnalysisViewTool = (server, logger, evidenceById, recordEvidence, withAdmittedAnalysis) => {
7
7
  const contract = toolContract("inspect_analysis_view");
8
- server.registerTool(contract.name, toolRegistrationOptions(contract), async (input) => {
9
- const result = await logToolExecution(logger, contract.name, () => Promise.resolve(inspectAnalysisView(input, evidenceById)));
10
- if (!result.ok)
11
- return server.delivery.toCallToolResult(result, contract);
12
- const recorded = recordEvidence?.(result.value);
13
- return server.delivery.toEvidenceToolResult(result.value, contract, recorded);
14
- });
8
+ const handler = createEvidenceToolHandler(server, (input) => Promise.resolve(inspectAnalysisView(input, evidenceById)), logger, recordEvidence, withAdmittedAnalysis);
9
+ server.registerTool(contract.name, toolRegistrationOptions(contract), handler(contract));
15
10
  };
@@ -1,19 +1,10 @@
1
1
  import { AndroidAnalysisService } from "../application/android/AndroidAnalysisService.js";
2
2
  import { toolContract } from "../contracts/toolContracts.js";
3
- import { logToolExecution } from "./toolLogging.js";
3
+ import { createContractToolHandler } from "./contractToolHandler.js";
4
4
  import { toolRegistrationOptions } from "./toolRegistrationOptions.js";
5
5
  /** Bind Android handlers to their exact named contracts through shared workflows. */
6
- export const registerAndroidTools = (server, service, logger, recordEvidence) => {
7
- const handler = (contract) => {
8
- const name = contract.name;
9
- return async (input, context) => {
10
- const result = await logToolExecution(logger, name, () => service.execute(name, input, { signal: context.mcpReq.signal }));
11
- if (!result.ok)
12
- return server.delivery.toCallToolResult(result, contract);
13
- const recorded = recordEvidence?.(result.value);
14
- return server.delivery.toEvidenceToolResult(result.value, contract, recorded);
15
- };
16
- };
6
+ export const registerAndroidTools = (server, service, logger, recordEvidence, withAdmittedAnalysis) => {
7
+ const handler = createContractToolHandler(server, service, logger, recordEvidence, withAdmittedAnalysis);
17
8
  const packageContract = toolContract("inspect_android_package");
18
9
  server.registerTool(packageContract.name, toolRegistrationOptions(packageContract), handler(packageContract));
19
10
  const searchContract = toolContract("search_android_classes");
@@ -0,0 +1,14 @@
1
+ import { ApktoolResourceAnalysisService } from "../application/apktool/ApktoolResourceAnalysisService.js";
2
+ import { toolContract } from "../contracts/toolContracts.js";
3
+ import { createContractToolHandler } from "./contractToolHandler.js";
4
+ import { toolRegistrationOptions } from "./toolRegistrationOptions.js";
5
+ /** Bind Apktool handlers to their exact named contracts. */
6
+ export const registerApktoolTools = (server, service, logger, recordEvidence, withAdmittedAnalysis) => {
7
+ const handler = createContractToolHandler(server, service, logger, recordEvidence, withAdmittedAnalysis);
8
+ for (const contract of [
9
+ toolContract("inspect_apktool_client"),
10
+ toolContract("decode_android_resources"),
11
+ ]) {
12
+ server.registerTool(contract.name, toolRegistrationOptions(contract), handler(contract));
13
+ }
14
+ };
@@ -1,3 +1,4 @@
1
+ import { runAdmittedToolOperation } from "../admittedToolOperation.js";
1
2
  import { resolvePairedEvidenceRequest } from "../../application/EvidenceInputResolver.js";
2
3
  import { recordSessionEvidenceSources } from "../sessionEvidence.js";
3
4
  import { compareJavaScriptExportShapesEvidenceValidated } from "../../application/javascript/JavaScriptApplicationWorkflowService.js";
@@ -9,7 +10,7 @@ import { recordResult } from "./helpers.js";
9
10
  const contract = applicationToolContract("compare_javascript_export_shapes");
10
11
  /** Register the execution-free exact JavaScript export-shape comparison. */
11
12
  export const registerCompareJavaScriptExportShapesTool = (server, options) => {
12
- server.registerTool(contract.name, toolRegistrationOptions(contract), async (input) => {
13
+ server.registerTool(contract.name, toolRegistrationOptions(contract), async (input, context) => runAdmittedToolOperation(server, options.withAdmittedAnalysis, contract.name, context.mcpReq.signal, async () => {
13
14
  const resolved = resolvePairedEvidenceRequest(input, options.evidenceById);
14
15
  if (!resolved.ok)
15
16
  return server.delivery.toCallToolResult(resolved, contract);
@@ -17,14 +18,12 @@ export const registerCompareJavaScriptExportShapesTool = (server, options) => {
17
18
  const result = await logToolExecution(options.logger, contract.name, () => Promise.resolve(compareJavaScriptExportShapesEvidenceValidated(parsed)));
18
19
  if (!result.ok)
19
20
  return server.delivery.toCallToolResult(result, contract);
20
- const recorded = recordSessionEvidenceSources(options.recordEvidence, [
21
- parsed.left,
22
- parsed.right,
23
- ]);
21
+ const recorded = recordSessionEvidenceSources(options.recordEvidence, [parsed.left, parsed.right]);
24
22
  if (!recorded.ok)
25
23
  return server.delivery.toCallToolResult(recorded, contract);
26
24
  const comparison = javaScriptExportShapeComparisonResultSchema.parse(result.value.normalized_result);
27
- const unknown = comparison.summary.unknown > 0;
25
+ const unknown = comparison.summary.unknown > 0 ||
26
+ comparison.coverage.status !== "complete-within-inputs";
28
27
  return recordResult({ ...options, delivery: server.delivery }, contract, result.value, unknown ? "javascript-export-shape" : undefined);
29
- });
28
+ }));
30
29
  };
@@ -1,3 +1,4 @@
1
+ import { runAdmittedToolOperation } from "../admittedToolOperation.js";
1
2
  import { resolveApplicationEvidenceRequest } from "../../application/EvidenceInputResolver.js";
2
3
  import { recordSessionEvidenceSources } from "../sessionEvidence.js";
3
4
  import { compareSourceToBundleEvidenceValidated } from "../../application/javascript/JavaScriptApplicationWorkflowService.js";
@@ -9,7 +10,7 @@ import { recordResult } from "./helpers.js";
9
10
  const contract = applicationToolContract("compare_source_to_bundle");
10
11
  /** Register conservative historical-source to bundle comparison. */
11
12
  export const registerCompareSourceToBundleTool = (server, options) => {
12
- server.registerTool(contract.name, toolRegistrationOptions(contract), async (input) => {
13
+ server.registerTool(contract.name, toolRegistrationOptions(contract), async (input, context) => runAdmittedToolOperation(server, options.withAdmittedAnalysis, contract.name, context.mcpReq.signal, async () => {
13
14
  const resolved = resolveApplicationEvidenceRequest(input, options.evidenceById);
14
15
  if (!resolved.ok)
15
16
  return server.delivery.toCallToolResult(resolved, contract);
@@ -17,14 +18,12 @@ export const registerCompareSourceToBundleTool = (server, options) => {
17
18
  const result = await logToolExecution(options.logger, contract.name, () => Promise.resolve(compareSourceToBundleEvidenceValidated(parsed)));
18
19
  if (!result.ok)
19
20
  return server.delivery.toCallToolResult(result, contract);
20
- const recorded = recordSessionEvidenceSources(options.recordEvidence, [
21
- parsed.application,
22
- ]);
21
+ const recorded = recordSessionEvidenceSources(options.recordEvidence, [parsed.application]);
23
22
  if (!recorded.ok)
24
23
  return server.delivery.toCallToolResult(recorded, contract);
25
24
  const comparison = sourceToBundleComparisonResultSchema.parse(result.value.normalized_result);
26
25
  return recordResult({ ...options, delivery: server.delivery }, contract, result.value, comparison.summary.unknown > 0
27
26
  ? "source-to-bundle-comparison"
28
27
  : undefined);
29
- });
28
+ }));
30
29
  };
@@ -1,3 +1,4 @@
1
+ import { runAdmittedToolOperation } from "../admittedToolOperation.js";
1
2
  import { resolvePairedEvidenceRequest } from "../../application/EvidenceInputResolver.js";
2
3
  import { recordSessionEvidenceSources } from "../sessionEvidence.js";
3
4
  import { compareApplicationVersionsEvidenceValidated } from "../../application/javascript/JavaScriptApplicationWorkflowService.js";
@@ -9,7 +10,7 @@ import { recordResult } from "./helpers.js";
9
10
  const compareContract = applicationToolContract("compare_application_versions");
10
11
  /** Register the provider-neutral JavaScript version comparison tool. */
11
12
  export const registerCompareApplicationVersionsTool = (server, options) => {
12
- server.registerTool(compareContract.name, toolRegistrationOptions(compareContract), async (input) => {
13
+ server.registerTool(compareContract.name, toolRegistrationOptions(compareContract), async (input, context) => runAdmittedToolOperation(server, options.withAdmittedAnalysis, compareContract.name, context.mcpReq.signal, async () => {
13
14
  const resolved = resolvePairedEvidenceRequest(input, options.evidenceById);
14
15
  if (!resolved.ok)
15
16
  return server.delivery.toCallToolResult(resolved, compareContract);
@@ -29,5 +30,5 @@ export const registerCompareApplicationVersionsTool = (server, options) => {
29
30
  const comparison = applicationVersionComparisonResultSchema.parse(result.value.normalized_result);
30
31
  const unknown = comparison.summary.unknown > 0;
31
32
  return recordResult({ ...options, delivery: server.delivery }, compareContract, result.value, unknown ? "application-version-comparison" : undefined);
32
- });
33
+ }));
33
34
  };
@@ -1,3 +1,4 @@
1
+ import { runAdmittedToolOperation } from "../admittedToolOperation.js";
1
2
  import { evaluateReconstructionCoverage } from "../../application/ReconstructionCoverageService.js";
2
3
  import { applicationToolContract } from "../../contracts/applicationToolContracts.js";
3
4
  import { logToolExecution } from "../toolLogging.js";
@@ -5,8 +6,8 @@ import { toolRegistrationOptions } from "../toolRegistrationOptions.js";
5
6
  const contract = applicationToolContract("evaluate_reconstruction_coverage");
6
7
  /** Register the inline fail-closed reconstruction coverage evaluator. */
7
8
  export const registerCoverageTools = (server, options) => {
8
- server.registerTool(contract.name, toolRegistrationOptions(contract), async (input) => {
9
+ server.registerTool(contract.name, toolRegistrationOptions(contract), async (input, context) => runAdmittedToolOperation(server, options.withAdmittedAnalysis, contract.name, context.mcpReq.signal, async () => {
9
10
  const result = await logToolExecution(options.logger, contract.name, () => Promise.resolve(evaluateReconstructionCoverage(input)));
10
11
  return server.delivery.toCallToolResult(result, contract);
11
- });
12
+ }));
12
13
  };
@@ -6,11 +6,12 @@ export const recordResult = (options, contract, evidence, unknownKind) => {
6
6
  return options.delivery.toEvidenceToolResult(evidence, contract, recorded);
7
7
  };
8
8
  const unknownRegistration = (evidence, kind) => ({
9
- question: kind === "application-version-comparison"
9
+ // Scope unknown identity to the comparison while keeping exact replays stable.
10
+ question: `${kind === "application-version-comparison"
10
11
  ? "Which application entities remain unmatched or ambiguous across these versions?"
11
12
  : kind === "source-to-bundle-comparison"
12
13
  ? "Which historical source files remain unmatched or ambiguously mapped to the shipped bundle?"
13
- : "Which selected JavaScript export return shapes remain dynamic, incomplete, or ambiguously paired?",
14
+ : "Which selected JavaScript export return shapes remain dynamic, incomplete, or ambiguously paired?"} (comparison ${evidence.evidence_id})`,
14
15
  severity: "medium",
15
16
  domain: kind,
16
17
  supporting_evidence_ids: [evidence.evidence_id],
@@ -1,3 +1,4 @@
1
+ import { runAdmittedToolOperation } from "../admittedToolOperation.js";
1
2
  import { recordSessionEvidenceSources } from "../sessionEvidence.js";
2
3
  import { buildReconstructionObligationLedgerEvidenceValidated, resolveReconstructionObligationLedgerRequest, } from "../../application/ReconstructionObligationLedgerService.js";
3
4
  import { applicationToolContract } from "../../contracts/applicationToolContracts.js";
@@ -7,7 +8,7 @@ import { recordResult } from "./helpers.js";
7
8
  const contract = applicationToolContract("build_reconstruction_obligation_ledger");
8
9
  /** Register conservative reconstruction-obligation generation and closure. */
9
10
  export const registerReconstructionObligationLedgerTool = (server, options) => {
10
- server.registerTool(contract.name, toolRegistrationOptions(contract), async (input) => {
11
+ server.registerTool(contract.name, toolRegistrationOptions(contract), async (input, context) => runAdmittedToolOperation(server, options.withAdmittedAnalysis, contract.name, context.mcpReq.signal, async () => {
11
12
  const resolved = resolveReconstructionObligationLedgerRequest(input);
12
13
  if (!resolved.ok)
13
14
  return server.delivery.toCallToolResult(resolved, contract);
@@ -18,5 +19,5 @@ export const registerReconstructionObligationLedgerTool = (server, options) => {
18
19
  if (!recorded.ok)
19
20
  return server.delivery.toCallToolResult(recorded, contract);
20
21
  return recordResult({ ...options, delivery: server.delivery }, contract, result.value);
21
- });
22
+ }));
22
23
  };
@@ -1,3 +1,4 @@
1
+ import { runAdmittedToolOperation } from "../admittedToolOperation.js";
1
2
  import { projectAndroidApplicationEvidence } from "../../application/android/AndroidApplicationService.js";
2
3
  import { projectAppleApplicationEvidence } from "../../application/apple/AppleApplicationService.js";
3
4
  import { APPLICATION_TOOL_CONTRACTS, applicationToolContract, } from "../../contracts/applicationToolContracts.js";
@@ -22,7 +23,7 @@ export const registerProjectMobileApplicationGraphTools = (server, options) => {
22
23
  };
23
24
  const registerProjection = (context) => {
24
25
  const { server, options, contract, project } = context;
25
- server.registerTool(contract.name, toolRegistrationOptions(contract), async (input) => {
26
+ server.registerTool(contract.name, toolRegistrationOptions(contract), async (input, request) => runAdmittedToolOperation(server, options.withAdmittedAnalysis, contract.name, request.mcpReq.signal, async () => {
26
27
  const result = await logToolExecution(options.logger, contract.name, () => Promise.resolve(project(input)));
27
28
  if (!result.ok)
28
29
  return server.delivery.toCallToolResult(result, contract);
@@ -30,7 +31,7 @@ const registerProjection = (context) => {
30
31
  if (!recordedSources.ok)
31
32
  return server.delivery.toCallToolResult(recordedSources, contract);
32
33
  return recordResult({ ...options, delivery: server.delivery }, contract, result.value);
33
- });
34
+ }));
34
35
  };
35
36
  const inventoryEvidenceSources = (input) => {
36
37
  if (typeof input !== "object" ||
@@ -1,3 +1,4 @@
1
+ import { runAdmittedToolOperation } from "../admittedToolOperation.js";
1
2
  import { resolveApplicationEvidenceRequest } from "../../application/EvidenceInputResolver.js";
2
3
  import { recordSessionEvidenceSources } from "../sessionEvidence.js";
3
4
  import { traceApplicationFeatureEvidenceValidated } from "../../application/javascript/JavaScriptApplicationWorkflowService.js";
@@ -8,7 +9,7 @@ import { recordResult } from "./helpers.js";
8
9
  const traceContract = applicationToolContract("trace_application_feature");
9
10
  /** Register the provider-neutral JavaScript feature trace tool. */
10
11
  export const registerTraceFeatureTool = (server, options) => {
11
- server.registerTool(traceContract.name, toolRegistrationOptions(traceContract), async (input) => {
12
+ server.registerTool(traceContract.name, toolRegistrationOptions(traceContract), async (input, context) => runAdmittedToolOperation(server, options.withAdmittedAnalysis, traceContract.name, context.mcpReq.signal, async () => {
12
13
  const resolved = resolveApplicationEvidenceRequest(input, options.evidenceById);
13
14
  if (!resolved.ok)
14
15
  return server.delivery.toCallToolResult(resolved, traceContract);
@@ -21,5 +22,5 @@ export const registerTraceFeatureTool = (server, options) => {
21
22
  if (!recorded.ok)
22
23
  return server.delivery.toCallToolResult(recorded, traceContract);
23
24
  return recordResult({ ...options, delivery: server.delivery }, traceContract, result.value);
24
- });
25
+ }));
25
26
  };
@@ -1,3 +1,4 @@
1
+ import { runAdmittedToolOperation } from "../admittedToolOperation.js";
1
2
  import { resolveApplicationEvidenceRequest } from "../../application/EvidenceInputResolver.js";
2
3
  import { recordSessionEvidenceSources } from "../sessionEvidence.js";
3
4
  import { traceJavaScriptSemanticsEvidenceValidated } from "../../application/javascript/JavaScriptSemanticTraceService.js";
@@ -8,7 +9,7 @@ import { recordResult } from "./helpers.js";
8
9
  const contract = applicationToolContract("trace_javascript_semantics");
9
10
  /** Register the bounded JavaScript semantic relation trace tool. */
10
11
  export const registerTraceJavaScriptSemanticsTool = (server, options) => {
11
- server.registerTool(contract.name, toolRegistrationOptions(contract), async (input) => {
12
+ server.registerTool(contract.name, toolRegistrationOptions(contract), async (input, context) => runAdmittedToolOperation(server, options.withAdmittedAnalysis, contract.name, context.mcpReq.signal, async () => {
12
13
  const resolved = resolveApplicationEvidenceRequest(input, options.evidenceById);
13
14
  if (!resolved.ok)
14
15
  return server.delivery.toCallToolResult(resolved, contract);
@@ -16,11 +17,9 @@ export const registerTraceJavaScriptSemanticsTool = (server, options) => {
16
17
  const result = await logToolExecution(options.logger, contract.name, () => Promise.resolve(traceJavaScriptSemanticsEvidenceValidated(parsed)));
17
18
  if (!result.ok)
18
19
  return server.delivery.toCallToolResult(result, contract);
19
- const recorded = recordSessionEvidenceSources(options.recordEvidence, [
20
- parsed.application,
21
- ]);
20
+ const recorded = recordSessionEvidenceSources(options.recordEvidence, [parsed.application]);
22
21
  if (!recorded.ok)
23
22
  return server.delivery.toCallToolResult(recorded, contract);
24
23
  return recordResult({ ...options, delivery: server.delivery }, contract, result.value);
25
- });
24
+ }));
26
25
  };