rea-agents 3.1.0 → 3.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (590) hide show
  1. package/README.md +72 -95
  2. package/bridge/ghidra/ReaGhidraBridge.java +609 -841
  3. package/bridge/hopper_bridge.py +99 -344
  4. package/dist/application/AbortablePromise.js +6 -3
  5. package/dist/application/AnalysisSnapshotCache.js +0 -1
  6. package/dist/application/AnalysisSnapshotFiles.js +7 -7
  7. package/dist/application/AndroidApplicationService.js +1 -1
  8. package/dist/application/AppleApplicationService.js +1 -1
  9. package/dist/application/ArtifactExtraction.js +35 -54
  10. package/dist/application/ArtifactExtractionDestination.js +17 -0
  11. package/dist/application/ArtifactGraphConstruction.js +2 -17
  12. package/dist/application/ArtifactInventory/classify.js +2 -6
  13. package/dist/application/ArtifactInventory/hash.js +2 -20
  14. package/dist/application/ArtifactInventory/scanCanonical.js +8 -12
  15. package/dist/application/ArtifactInventory/scanReader.js +69 -51
  16. package/dist/application/ArtifactInventory.js +6 -14
  17. package/dist/application/AuthorizedArtifactInventory.js +3 -13
  18. package/dist/application/BinarySession.js +41 -13
  19. package/dist/application/BinarySessionComposition.js +0 -11
  20. package/dist/application/BinarySessionOpen.js +2 -1
  21. package/dist/application/BinarySessionRecords.js +5 -93
  22. package/dist/application/BinarySessionStatus.js +5 -16
  23. package/dist/application/BinaryTargetResolver.js +216 -0
  24. package/dist/application/BrowserEvidence.js +42 -58
  25. package/dist/application/BrowserObservationService.js +3 -6
  26. package/dist/application/BrowserScenarioCaptureService.js +3 -6
  27. package/dist/application/BrowserScenarioEvidence.js +3 -3
  28. package/dist/application/CallPathTracing.js +2 -36
  29. package/dist/application/CapabilityInventory.js +10 -15
  30. package/dist/application/ClientConfigurationDocument.js +27 -0
  31. package/dist/application/ClientRegistrationStatus.js +16 -13
  32. package/dist/application/CommandShimReplay.js +14 -1
  33. package/dist/application/DirectAnalysis.js +22 -46
  34. package/dist/application/DirectAnalysisStatus.js +5 -61
  35. package/dist/application/Doctor.js +11 -32
  36. package/dist/application/DoctorDiagnostics.js +1 -2
  37. package/dist/application/DoctorScope.js +1 -1
  38. package/dist/application/ElectronActiveEvidence.js +3 -8
  39. package/dist/application/ElectronActiveObservationService.js +3 -6
  40. package/dist/application/ElectronBoundaryAnalysis.js +7 -8
  41. package/dist/application/ElectronBoundaryGraphContext.js +1 -1
  42. package/dist/application/ElectronBoundaryGraphIpc.js +3 -3
  43. package/dist/application/ElectronBoundaryGraphNative.js +1 -2
  44. package/dist/application/ElectronBoundaryGraphWindows.js +6 -8
  45. package/dist/application/ElectronEvidence.js +4 -7
  46. package/dist/application/ElectronObservationService.js +5 -9
  47. package/dist/application/EnhancedLiteralTracing.js +42 -65
  48. package/dist/application/EnhancedTools.js +76 -44
  49. package/dist/application/EvidenceBundleCommands.js +11 -11
  50. package/dist/application/EvidenceBundleFiles.js +9 -15
  51. package/dist/application/EvidenceLedger.js +6 -41
  52. package/dist/application/FilesystemSnapshot.js +2 -3
  53. package/dist/application/InterfaceBuilderAnalysis.js +266 -0
  54. package/dist/application/InventoryProjectionEvidence.js +4 -2
  55. package/dist/application/InvestigationProviders.js +1 -1
  56. package/dist/application/JavaScriptApplicationEvidence.js +2 -5
  57. package/dist/application/JavaScriptApplicationEvidenceGraph.js +6 -10
  58. package/dist/application/JavaScriptApplicationService.js +6 -29
  59. package/dist/application/JavaScriptApplicationWorkflowEvidence.js +5 -5
  60. package/dist/application/JavaScriptApplicationWorkflowService.js +0 -8
  61. package/dist/application/JavaScriptArtifactAnalysis.js +38 -127
  62. package/dist/application/JavaScriptArtifactFiles.js +67 -107
  63. package/dist/application/JavaScriptArtifactGraphAccumulator.js +0 -7
  64. package/dist/application/JavaScriptArtifactGraphBuilder.js +7 -58
  65. package/dist/application/JavaScriptArtifactGraphBundlers.js +1 -6
  66. package/dist/application/JavaScriptArtifactGraphContext.js +12 -39
  67. package/dist/application/JavaScriptArtifactGraphDocuments.js +4 -11
  68. package/dist/application/JavaScriptArtifactGraphEvidence.js +0 -14
  69. package/dist/application/JavaScriptArtifactGraphFindings.js +3 -3
  70. package/dist/application/JavaScriptArtifactGraphStructure.js +16 -17
  71. package/dist/application/JavaScriptArtifactPathResolution.js +61 -49
  72. package/dist/application/JavaScriptArtifactReconstruction.js +5 -10
  73. package/dist/application/JavaScriptArtifactReconstructionInput.js +2 -14
  74. package/dist/application/JavaScriptJsonModules.js +2 -2
  75. package/dist/application/JavaScriptModuleRelationships.js +22 -27
  76. package/dist/application/JavaScriptReplayPlanning.js +9 -3
  77. package/dist/application/JavaScriptReplayService.js +6 -32
  78. package/dist/application/JavaScriptReturnShapeProjection.js +12 -42
  79. package/dist/application/JavaScriptRuntimeObservationEvidence.js +7 -8
  80. package/dist/application/JavaScriptRuntimeObservationService.js +4 -8
  81. package/dist/application/JavaScriptRuntimeReconciliationEvidence.js +2 -3
  82. package/dist/application/JavaScriptSemanticGraphBuilder.js +11 -41
  83. package/dist/application/JavaScriptSemanticGraphConstruction.js +5 -29
  84. package/dist/application/JavaScriptSemanticGraphEvidence.js +1 -1
  85. package/dist/application/JavaScriptSemanticGraphFingerprintProjection.js +1 -1
  86. package/dist/application/JavaScriptSemanticGraphFlowProjection.js +0 -13
  87. package/dist/application/JavaScriptSemanticGraphProjection.js +1 -3
  88. package/dist/application/JavaScriptSemanticTraceService.js +1 -10
  89. package/dist/application/JsonFiles.js +79 -0
  90. package/dist/application/LinuxHopper.js +11 -9
  91. package/dist/application/LoopbackReplay.js +26 -23
  92. package/dist/application/LoopbackReplayRecorder.js +29 -1
  93. package/dist/application/ManagedApplicationGraphService.js +1 -2
  94. package/dist/application/ManagedMemberComparisonService.js +11 -41
  95. package/dist/application/ManagedNativeVerificationService.js +1 -2
  96. package/dist/application/ManagedReconstructionService.js +1 -1
  97. package/dist/application/ManagedRuntimeCorrelationService.js +5 -8
  98. package/dist/application/NativeApiInspection.js +2 -7
  99. package/dist/application/NativeUiActionTrace.js +394 -0
  100. package/dist/application/NodeRuntimeCharacterizationService.js +3 -7
  101. package/dist/application/PermissionAuthority.js +15 -7
  102. package/dist/application/PermissionFailure.js +5 -0
  103. package/dist/application/ProcessCaptureAuthority.js +5 -7
  104. package/dist/application/ProcessCaptureJournal.js +3 -2
  105. package/dist/application/ProcessCaptureLifecycle.js +5 -12
  106. package/dist/application/ProcessCheckpoints.js +29 -11
  107. package/dist/application/ProcessCli.js +6 -16
  108. package/dist/application/ProcessEvidence.js +5 -7
  109. package/dist/application/ProcessHarness.js +52 -17
  110. package/dist/application/ProcessReactiveCoordinator.js +2 -4
  111. package/dist/application/ProcessReactiveEffects.js +9 -3
  112. package/dist/application/ProcessReactiveHarness.js +13 -7
  113. package/dist/application/ProcessSampling.js +2 -4
  114. package/dist/application/ProcessTimer.js +39 -0
  115. package/dist/application/ProjectPermissionStore.js +39 -96
  116. package/dist/application/RealHopperAssertions.js +20 -66
  117. package/dist/application/ReconstructionCoverageService.js +12 -58
  118. package/dist/application/ReconstructionObligationAuthority.js +2 -2
  119. package/dist/application/ReconstructionObligationCandidates.js +4 -4
  120. package/dist/application/ReconstructionObligationLedgerEvaluation.js +8 -15
  121. package/dist/application/ReconstructionObligationLedgerProjection.js +3 -7
  122. package/dist/application/ReconstructionObligationLedgerService.js +19 -38
  123. package/dist/application/ReferenceSourceImport.js +19 -45
  124. package/dist/application/ReferenceSourceImportEntries.js +2 -4
  125. package/dist/application/ReferenceSourceImportPolicy.js +5 -32
  126. package/dist/application/ReferenceSourceImportTypes.js +0 -16
  127. package/dist/application/RuntimeExecutableDiagnostics.js +55 -29
  128. package/dist/application/SessionProviderRouter.js +2 -2
  129. package/dist/application/Setup.js +1 -3
  130. package/dist/application/SetupClientConfiguration.js +22 -93
  131. package/dist/application/SetupRegistrationEnvironment.js +0 -7
  132. package/dist/application/StoreFileLock.js +119 -0
  133. package/dist/application/TerminalRenderer.js +2 -3
  134. package/dist/application/Uninstall.js +9 -14
  135. package/dist/application/UnknownEvidence.js +1 -1
  136. package/dist/artifacts/ArtifactPaths.js +2 -5
  137. package/dist/artifacts/ArtifactProvider.js +36 -58
  138. package/dist/artifacts/DirectoryArtifactReader.js +13 -8
  139. package/dist/artifacts/MachOSliceArtifactReader.js +1 -5
  140. package/dist/artifacts/NativeDmgArtifactReader.js +11 -11
  141. package/dist/artifacts/NibArchive.js +269 -0
  142. package/dist/artifacts/SafeOutputTree.js +15 -24
  143. package/dist/browser/BrowserProcessStartup.js +1 -2
  144. package/dist/browser/CdpAuthorizedMainFrame.js +16 -0
  145. package/dist/browser/CdpBrowserProvider.js +3 -13
  146. package/dist/browser/CdpCanonicalJsonDigest.js +9 -0
  147. package/dist/browser/CdpCaptureDocuments.js +28 -76
  148. package/dist/browser/CdpCaptureEventBodyShapes.js +13 -33
  149. package/dist/browser/CdpCaptureEventHandlers.js +22 -87
  150. package/dist/browser/CdpCaptureEvents.js +2 -8
  151. package/dist/browser/CdpCaptureStorage.js +9 -20
  152. package/dist/browser/CdpCaptureStorageFingerprints.js +85 -98
  153. package/dist/browser/CdpCaptureValues.js +21 -21
  154. package/dist/browser/CdpConnection.js +10 -25
  155. package/dist/browser/CdpElectronInspection.js +26 -50
  156. package/dist/browser/CdpElectronProvider.js +10 -35
  157. package/dist/browser/CdpElectronScriptEvents.js +8 -16
  158. package/dist/browser/CdpElectronScripts.js +6 -35
  159. package/dist/browser/CdpElectronWorkers.js +6 -10
  160. package/dist/browser/CdpEndpoint.js +25 -41
  161. package/dist/browser/CdpObservationSession.js +14 -26
  162. package/dist/browser/CdpPageCapture.js +34 -48
  163. package/dist/browser/CdpPageCaptureScripts.js +1 -19
  164. package/dist/browser/CdpPageCaptureWorkers.js +6 -10
  165. package/dist/browser/CdpSafeMetadata.js +19 -22
  166. package/dist/browser/CdpScreenshot.js +3 -5
  167. package/dist/browser/CdpTargetSession.js +1 -2
  168. package/dist/browser/CdpWebMcpDiscovery.js +13 -22
  169. package/dist/browser/ElectronFileScope.js +8 -19
  170. package/dist/browser/JavaScriptRuntimeScope.js +9 -14
  171. package/dist/browser/PlaywrightBrowserScenarioProvider.js +31 -64
  172. package/dist/browser/PlaywrightElectronActiveActions.js +54 -69
  173. package/dist/browser/PlaywrightElectronActiveProvider.js +14 -34
  174. package/dist/browser/PlaywrightExecutionBoundary.js +16 -5
  175. package/dist/browser/PlaywrightScenarioActions.js +3 -7
  176. package/dist/browser/PlaywrightScenarioArtifacts.js +23 -92
  177. package/dist/browser/PlaywrightScenarioBrowser.js +3 -5
  178. package/dist/browser/PlaywrightScenarioEvents.js +45 -94
  179. package/dist/browser/PlaywrightScenarioSession.js +14 -30
  180. package/dist/browser/PngVisualDiff.js +22 -14
  181. package/dist/browser/SensitiveTextCapture.js +0 -17
  182. package/dist/browser/V8InspectorCaptureProjection.js +7 -8
  183. package/dist/browser/V8InspectorEndpoint.js +12 -14
  184. package/dist/browser/V8InspectorProvider.js +20 -61
  185. package/dist/browser/WebSourceMapFetcher.js +56 -176
  186. package/dist/catalogIdentity.js +0 -54
  187. package/dist/cli/artifactCommands.js +49 -77
  188. package/dist/cli/coreAnalysisCommands.js +83 -133
  189. package/dist/cli/javascriptApplicationAnalysis.js +1 -9
  190. package/dist/cli/managedCommands.js +5 -270
  191. package/dist/cli/setupCommands.js +3 -12
  192. package/dist/cli/utilityCommands.js +7 -41
  193. package/dist/cli.js +0 -2
  194. package/dist/cliApplicationCommands.js +42 -112
  195. package/dist/cliBrowserAdvancedCommands.js +10 -106
  196. package/dist/cliBrowserCommands.js +15 -127
  197. package/dist/cliBrowserContext.js +30 -0
  198. package/dist/cliCommandNames.js +4 -5
  199. package/dist/cliElectronCommands.js +8 -72
  200. package/dist/cliEvidenceCommands.js +8 -77
  201. package/dist/cliJavaScriptRuntimeCommands.js +9 -91
  202. package/dist/cliJsonInput.js +4 -14
  203. package/dist/cliObservationOptions.js +11 -96
  204. package/dist/cliPolicyCommands.js +2 -17
  205. package/dist/cliProcessCommands.js +3 -3
  206. package/dist/cliSetup.js +0 -13
  207. package/dist/config/browserScenario.js +2 -2
  208. package/dist/config/environment.js +0 -9
  209. package/dist/config/parseConfig.js +1 -33
  210. package/dist/config/parsers.js +6 -27
  211. package/dist/config/passiveObservation.js +7 -77
  212. package/dist/config/permissions.js +0 -7
  213. package/dist/contracts/analysisSearchContract.js +2 -5
  214. package/dist/contracts/applicationToolContracts.js +56 -109
  215. package/dist/contracts/applicationWorkflowInputContracts.js +27 -102
  216. package/dist/contracts/artifactComparisonExample.js +58 -60
  217. package/dist/contracts/artifactToolContracts.js +20 -67
  218. package/dist/contracts/browserScenarioToolContracts.js +6 -51
  219. package/dist/contracts/browserToolContracts.js +8 -73
  220. package/dist/contracts/electronToolContracts.js +8 -108
  221. package/dist/contracts/enhancedInputs.js +23 -54
  222. package/dist/contracts/errorSchemas.js +0 -1
  223. package/dist/contracts/functionComparisonExample.js +10 -24
  224. package/dist/contracts/functionInstructionContract.js +1 -3
  225. package/dist/contracts/functionWorkflowToolContracts.js +2 -2
  226. package/dist/contracts/hopperMemoryContracts.js +3 -3
  227. package/dist/contracts/investigationExamples.js +14 -11
  228. package/dist/contracts/javascriptApplicationWorkflowExamples.js +12 -19
  229. package/dist/contracts/javascriptRuntimeObservationToolContracts.js +2 -20
  230. package/dist/contracts/javascriptRuntimeReconciliationExample.js +45 -12
  231. package/dist/contracts/managedToolContracts.js +6 -95
  232. package/dist/contracts/managedWorkflowExamples.js +77 -128
  233. package/dist/contracts/managedWorkflowToolContracts.js +51 -77
  234. package/dist/contracts/nativeToolContracts.js +7 -11
  235. package/dist/contracts/processCaptureExample.js +2 -69
  236. package/dist/contracts/promptContracts.js +49 -67
  237. package/dist/contracts/providerSelection.js +0 -1
  238. package/dist/contracts/reconstructionReadinessExample.js +1 -6
  239. package/dist/contracts/sessionStatusContract.js +1 -17
  240. package/dist/contracts/sessionToolSchemas.js +6 -15
  241. package/dist/contracts/toolContractExamples.js +11 -11
  242. package/dist/contracts/toolContractHelpers.js +0 -4
  243. package/dist/contracts/toolContracts.js +60 -71
  244. package/dist/contracts/toolEffects.js +5 -13
  245. package/dist/contracts/toolOutputSchemaGroups.js +37 -91
  246. package/dist/contracts/toolOutputSchemaPrimitives.js +16 -56
  247. package/dist/contracts/toolSchemaMetadata.js +8 -19
  248. package/dist/contracts/unknownContractExamples.js +0 -2
  249. package/dist/domain/analysisErrorPresentation.js +46 -54
  250. package/dist/domain/analysisErrorProjection.js +28 -37
  251. package/dist/domain/analysisProfile.js +3 -31
  252. package/dist/domain/analysisSnapshot.js +3 -12
  253. package/dist/domain/androidApplication.js +15 -54
  254. package/dist/domain/appleApplication.js +24 -67
  255. package/dist/domain/artifactComparison.js +11 -29
  256. package/dist/domain/artifactGraph.js +14 -44
  257. package/dist/domain/artifactInspection.js +38 -69
  258. package/dist/domain/artifactInventoryEvidence.js +27 -21
  259. package/dist/domain/binaryTarget.js +2 -221
  260. package/dist/domain/browserCaptureComparison.js +47 -24
  261. package/dist/domain/browserObservation.js +28 -193
  262. package/dist/domain/browserObservationSchemas.js +5 -23
  263. package/dist/domain/browserScenario.js +11 -14
  264. package/dist/domain/browserScenarioCapture.js +11 -12
  265. package/dist/domain/browserScenarioCaptureValues.js +146 -84
  266. package/dist/domain/browserScenarioDiff.js +2 -59
  267. package/dist/domain/browserScenarioDiffEvidence.js +51 -0
  268. package/dist/domain/browserScenarioDiffValues.js +21 -38
  269. package/dist/domain/browserScenarioValues.js +80 -109
  270. package/dist/domain/browserSession.js +4 -7
  271. package/dist/domain/bundleComparison.js +6 -32
  272. package/dist/domain/bytecodeProvider.js +20 -19
  273. package/dist/domain/callPath.js +47 -167
  274. package/dist/domain/callPathSchemas.js +79 -0
  275. package/dist/domain/changedBehavior.js +34 -60
  276. package/dist/domain/completionLedgerGeneration.js +8 -14
  277. package/dist/domain/conformancePackage.js +126 -97
  278. package/dist/domain/conformanceReplay.js +36 -8
  279. package/dist/domain/conformanceTrustGate.js +23 -14
  280. package/dist/domain/customProtocolCapture.js +1 -1
  281. package/dist/domain/electronActiveObservation.js +70 -103
  282. package/dist/domain/electronObservation.js +14 -80
  283. package/dist/domain/electronStaticAnalysisBrowser.js +36 -46
  284. package/dist/domain/electronStaticAnalysisIpc.js +38 -14
  285. package/dist/domain/electronStaticAnalysisNative.js +1 -8
  286. package/dist/domain/electronStaticAnalysisValues.js +10 -17
  287. package/dist/domain/errors.js +33 -54
  288. package/dist/domain/eventProcessTree.js +20 -12
  289. package/dist/domain/evidence.js +2 -10
  290. package/dist/domain/evidenceBundle.js +3 -5
  291. package/dist/domain/evidenceCompletionLedger.js +6 -8
  292. package/dist/domain/functionComparison.js +4 -14
  293. package/dist/domain/functionComparisonNormalization.js +4 -11
  294. package/dist/domain/functionComparisonResults.js +25 -15
  295. package/dist/domain/functionComparisonSchemas.js +49 -33
  296. package/dist/domain/functionDossierEvidence.js +31 -156
  297. package/dist/domain/hopperStartupFailure.js +1 -1
  298. package/dist/domain/hopperValues.js +15 -136
  299. package/dist/domain/interfaceBuilderGraph.js +654 -0
  300. package/dist/domain/javascriptApplicationAnalysis.js +8 -112
  301. package/dist/domain/javascriptApplicationChangeGraph.js +22 -82
  302. package/dist/domain/javascriptApplicationEvidenceSchemas.js +59 -47
  303. package/dist/domain/javascriptApplicationGraph.js +3 -13
  304. package/dist/domain/javascriptApplicationGraphSchemas.js +12 -34
  305. package/dist/domain/javascriptApplicationVersionComparison.js +26 -30
  306. package/dist/domain/javascriptApplicationVersionComparisonSchemas.js +123 -68
  307. package/dist/domain/javascriptApplicationVersionItems.js +120 -53
  308. package/dist/domain/javascriptApplicationVersionKeys.js +24 -11
  309. package/dist/domain/javascriptAstFingerprint.js +25 -58
  310. package/dist/domain/javascriptAstValues.js +9 -0
  311. package/dist/domain/javascriptExportInstrumentation.js +2 -4
  312. package/dist/domain/javascriptExportShapeComparison.js +6 -7
  313. package/dist/domain/javascriptExportShapeComparisonSchemas.js +68 -75
  314. package/dist/domain/javascriptExportShapeSelection.js +17 -19
  315. package/dist/domain/javascriptFeatureSeed.js +20 -12
  316. package/dist/domain/javascriptFeatureTrace.js +13 -67
  317. package/dist/domain/javascriptFeatureTraceSchemas.js +24 -52
  318. package/dist/domain/javascriptFeatureTraversal.js +1 -44
  319. package/dist/domain/javascriptNativeHandoff.js +1 -1
  320. package/dist/domain/javascriptReplay.js +24 -41
  321. package/dist/domain/javascriptRuntimeLoadState.js +3 -8
  322. package/dist/domain/javascriptRuntimeObservation.js +42 -103
  323. package/dist/domain/javascriptRuntimeReconciliation.js +1 -3
  324. package/dist/domain/javascriptRuntimeReconciliationActive.js +8 -17
  325. package/dist/domain/javascriptRuntimeReconciliationGraph.js +10 -23
  326. package/dist/domain/javascriptRuntimeReconciliationMatching.js +18 -12
  327. package/dist/domain/javascriptRuntimeReconciliationParsing.js +16 -45
  328. package/dist/domain/javascriptRuntimeReconciliationResult.js +4 -5
  329. package/dist/domain/javascriptRuntimeReconciliationRuntime.js +8 -12
  330. package/dist/domain/javascriptRuntimeReconciliationSchemas.js +33 -48
  331. package/dist/domain/javascriptRuntimeStaticCandidates.js +3 -3
  332. package/dist/domain/javascriptSemanticAnalysis.js +12 -45
  333. package/dist/domain/javascriptSemanticAsyncEffects.js +1 -9
  334. package/dist/domain/javascriptSemanticCallResolution.js +6 -16
  335. package/dist/domain/javascriptSemanticCalls.js +5 -32
  336. package/dist/domain/javascriptSemanticChildProcesses.js +1 -11
  337. package/dist/domain/javascriptSemanticCoverage.js +11 -0
  338. package/dist/domain/javascriptSemanticDataEffectHelpers.js +1 -8
  339. package/dist/domain/javascriptSemanticDataEffects.js +1 -11
  340. package/dist/domain/javascriptSemanticFingerprints.js +3 -5
  341. package/dist/domain/javascriptSemanticGraphSchemas.js +25 -51
  342. package/dist/domain/javascriptSemanticGraphSerialization.js +2 -13
  343. package/dist/domain/javascriptSemanticIr.js +1 -29
  344. package/dist/domain/javascriptSemanticObjects.js +1 -5
  345. package/dist/domain/javascriptSemanticPrimitives.js +2 -9
  346. package/dist/domain/javascriptSemanticProjection.js +0 -18
  347. package/dist/domain/javascriptSemanticPromises.js +9 -16
  348. package/dist/domain/javascriptSemanticProvenance.js +16 -19
  349. package/dist/domain/javascriptSemanticQuery.js +17 -139
  350. package/dist/domain/javascriptSemanticQueryAssessment.js +9 -37
  351. package/dist/domain/javascriptSemanticQueryIdentity.js +2 -23
  352. package/dist/domain/javascriptSemanticQuerySchemas.js +14 -107
  353. package/dist/domain/javascriptSemanticResources.js +1 -6
  354. package/dist/domain/javascriptSemanticReturns.js +10 -27
  355. package/dist/domain/javascriptSemanticValueTypes.js +1 -0
  356. package/dist/domain/javascriptSemanticValues.js +44 -62
  357. package/dist/domain/javascriptStaticAnalysis.js +21 -43
  358. package/dist/domain/javascriptStaticAnalysisBundler.js +34 -93
  359. package/dist/domain/javascriptStaticAnalysisCalls.js +17 -16
  360. package/dist/domain/javascriptStaticAnalysisFindings.js +3 -19
  361. package/dist/domain/javascriptStaticAnalysisHelpers.js +47 -88
  362. package/dist/domain/javascriptStaticAnalysisState.js +1 -5
  363. package/dist/domain/javascriptStaticAnalysisTypes.js +1 -0
  364. package/dist/domain/jsonShape.js +7 -33
  365. package/dist/domain/localPath.js +7 -0
  366. package/dist/domain/managedApplicationGraph.js +9 -41
  367. package/dist/domain/managedApplicationGraphCoverage.js +24 -156
  368. package/dist/domain/managedApplicationGraphNodes.js +10 -13
  369. package/dist/domain/managedArtifact.js +14 -27
  370. package/dist/domain/managedMemberComparison.js +90 -92
  371. package/dist/domain/managedMemberComparisonCoverage.js +11 -33
  372. package/dist/domain/managedMemberComparisonItems.js +221 -0
  373. package/dist/domain/managedMemberComparisonMatch.js +8 -208
  374. package/dist/domain/managedNativeVerification.js +3 -6
  375. package/dist/domain/managedNativeVerificationMatch.js +55 -59
  376. package/dist/domain/managedNativeVerificationSchemas.js +83 -47
  377. package/dist/domain/managedReconstruction.js +19 -23
  378. package/dist/domain/managedRuntimeCorrelation.js +6 -9
  379. package/dist/domain/nativeApiBoundary.js +2 -7
  380. package/dist/domain/nativeInspection.js +0 -2
  381. package/dist/domain/nativeInvestigationGraph.js +351 -0
  382. package/dist/domain/nativeValueFlow.js +61 -0
  383. package/dist/domain/nodeRuntimeCharacterization.js +1 -5
  384. package/dist/domain/objcSwiftMetadata.js +254 -0
  385. package/dist/domain/peInspection.js +1 -1
  386. package/dist/domain/permissionPolicy.js +13 -0
  387. package/dist/domain/processCapture.js +76 -113
  388. package/dist/domain/processCaptureExample.js +68 -0
  389. package/dist/domain/processCaptureParsing.js +21 -0
  390. package/dist/domain/processCaptureReactiveSchema.js +68 -0
  391. package/dist/domain/processCaptureValidation.js +1 -7
  392. package/dist/domain/processComparison.js +3 -12
  393. package/dist/domain/processReactiveMatching.js +29 -50
  394. package/dist/domain/processReactiveRuntime.js +4 -8
  395. package/dist/domain/processReactiveScenario.js +28 -94
  396. package/dist/domain/processReactiveScenarioPreflight.js +5 -30
  397. package/dist/domain/processReactiveTransition.js +33 -18
  398. package/dist/domain/processScenario.js +56 -90
  399. package/dist/domain/processTraceComparison.js +0 -8
  400. package/dist/domain/processTraceEvaluation.js +14 -4
  401. package/dist/domain/processTraceSpecification.js +11 -17
  402. package/dist/domain/protocolCapture.js +3 -3
  403. package/dist/domain/reconstructionCoverage.js +62 -129
  404. package/dist/domain/reconstructionCoverageEvaluation.js +17 -17
  405. package/dist/domain/reconstructionObligationLedgerSchemas.js +45 -72
  406. package/dist/domain/reconstructionReadiness.js +1 -2
  407. package/dist/domain/reconstructionReadinessSchemas.js +36 -38
  408. package/dist/domain/reconstructionUnknowns.js +3 -3
  409. package/dist/domain/reconstructionVerification.js +13 -47
  410. package/dist/domain/reconstructionVerificationSchemas.js +50 -38
  411. package/dist/domain/referenceSourceGraph.js +53 -61
  412. package/dist/domain/referenceSourceImportParsing.js +1 -5
  413. package/dist/domain/replayMachine.js +19 -31
  414. package/dist/domain/replayMachineRun.js +15 -63
  415. package/dist/domain/replayMachineRuntime.js +41 -41
  416. package/dist/domain/replayMachineValues.js +84 -0
  417. package/dist/domain/residualUnknown.js +25 -30
  418. package/dist/domain/runtimeCharacterization.js +15 -16
  419. package/dist/domain/runtimeIdentification.js +48 -47
  420. package/dist/domain/sourceToBundleComparison.js +9 -85
  421. package/dist/domain/sourceToBundleComparisonSchemas.js +17 -42
  422. package/dist/domain/sourceToBundleSignals.js +4 -15
  423. package/dist/domain/staticRuntimeCorrelation.js +37 -49
  424. package/dist/domain/symbolAnalysis.js +10 -19
  425. package/dist/domain/unicodeCodePointOrder.js +12 -0
  426. package/dist/domain/webBundleAnalysis.js +70 -99
  427. package/dist/domain/webBundleAnalyzer.js +2 -4
  428. package/dist/domain/webBundleAnalyzerAst.js +0 -13
  429. package/dist/domain/webBundleAnalyzerInspection.js +26 -52
  430. package/dist/domain/webBundleAnalyzerResult.js +7 -24
  431. package/dist/domain/webCaptureDiff.js +33 -73
  432. package/dist/domain/webCaptureDiffSchemas.js +86 -0
  433. package/dist/domain/webContentArtifact.js +1 -10
  434. package/dist/domain/webMcpDiscovery.js +3 -14
  435. package/dist/domain/webScreenshot.js +58 -34
  436. package/dist/domain/zipPackageFormat.js +7 -0
  437. package/dist/dotnet/ManagedArtifactInspector.js +17 -50
  438. package/dist/dotnet/ManagedMemberInspector.js +27 -58
  439. package/dist/dotnet/ManagedMemberInspectorCore.js +14 -51
  440. package/dist/dotnet/ManagedMemberInstructionDecoder.js +2 -2
  441. package/dist/dotnet/ManagedMemberRows.js +16 -16
  442. package/dist/dotnet/ManagedMetadataHeaps.js +26 -8
  443. package/dist/dotnet/ManagedMetadataInventory.js +21 -30
  444. package/dist/dotnet/ManagedMetadataInventoryRows.js +57 -63
  445. package/dist/dotnet/ManagedMetadataLayout.js +3 -5
  446. package/dist/dotnet/ManagedMethodBodyReader.js +5 -30
  447. package/dist/dotnet/ManagedNativeBoundaryHelpers.js +19 -49
  448. package/dist/dotnet/ManagedNativeBoundaryInspector.js +13 -41
  449. package/dist/dotnet/ManagedPeReader.js +2 -2
  450. package/dist/dotnet/ManagedStaticProvider.js +13 -71
  451. package/dist/generatedMcpToolCatalog.js +1 -1
  452. package/dist/generatedPackageMetadata.js +1 -1
  453. package/dist/ghidra/GhidraAnalysisProfile.js +3 -8
  454. package/dist/ghidra/GhidraClient.js +4 -12
  455. package/dist/ghidra/GhidraClientWire.js +9 -5
  456. package/dist/ghidra/GhidraDefaults.js +0 -18
  457. package/dist/ghidra/GhidraDiagnostics.js +0 -2
  458. package/dist/ghidra/GhidraDoctor.js +16 -12
  459. package/dist/ghidra/GhidraFunctionValues.js +65 -108
  460. package/dist/ghidra/GhidraInstallation.js +98 -42
  461. package/dist/ghidra/GhidraInventoryValues.js +16 -85
  462. package/dist/ghidra/GhidraLauncher.js +0 -8
  463. package/dist/ghidra/GhidraProvider.js +15 -22
  464. package/dist/ghidra/GhidraProviderCapabilities.js +6 -47
  465. package/dist/ghidra/GhidraRequestQueue.js +6 -30
  466. package/dist/ghidra/GhidraResponseBuffer.js +1 -7
  467. package/dist/ghidra/GhidraSessionValues.js +0 -2
  468. package/dist/ghidra/GhidraTransport.js +4 -7
  469. package/dist/ghidra/protocol.js +2 -2
  470. package/dist/hopper/BridgeLauncher.js +112 -36
  471. package/dist/hopper/HopperAnalysisProfile.js +1 -1
  472. package/dist/hopper/HopperCleanup.js +6 -3
  473. package/dist/hopper/HopperClient.js +4 -7
  474. package/dist/hopper/HopperProcessDiagnostic.js +2 -2
  475. package/dist/hopper/HopperProvider.js +0 -16
  476. package/dist/hopper/HopperRequestQueue.js +21 -40
  477. package/dist/hopper/HopperResponseStream.js +1 -9
  478. package/dist/hopper/HopperSessionValues.js +3 -2
  479. package/dist/hopper/HopperTargetLease.js +119 -0
  480. package/dist/hopper/LinuxPrivateDisplayDiagnostic.js +24 -31
  481. package/dist/hopper/LinuxPrivateDisplayProbe.js +5 -16
  482. package/dist/hopper/protocol.js +6 -4
  483. package/dist/main/reload.js +0 -3
  484. package/dist/main/shutdown.js +1 -1
  485. package/dist/main/state.js +0 -9
  486. package/dist/main/transport.js +0 -5
  487. package/dist/mcpDoctor.js +25 -45
  488. package/dist/native/CommandRunner.js +18 -25
  489. package/dist/native/NativeMacOSProvider.js +13 -38
  490. package/dist/native/NativeMachoInspection.js +1 -1
  491. package/dist/process/BoundedFileBytes.js +17 -0
  492. package/dist/process/ExecFileOutput.js +11 -0
  493. package/dist/process/PendingOperations.js +8 -6
  494. package/dist/process/ProcessOwnership.js +3 -2
  495. package/dist/process/ProcessOwnershipObservation.js +0 -1
  496. package/dist/process/ProviderProcess.js +7 -28
  497. package/dist/reference/ReferenceSourceReader.js +8 -24
  498. package/dist/reference/ReferenceSourceReaderEntries.js +11 -39
  499. package/dist/reference/ReferenceSourceReaderFile.js +13 -31
  500. package/dist/reference/ReferenceSourceReaderPaths.js +3 -18
  501. package/dist/reference/ReferenceSourceReaderValidate.js +3 -6
  502. package/dist/replay/JavaScriptReplayWorker.js +3 -5
  503. package/dist/replay/LinuxJavaScriptReplayRunner.js +33 -29
  504. package/dist/replay/LinuxJavaScriptReplaySandbox.js +0 -19
  505. package/dist/replay/LinuxRuntimeClosure.js +1 -3
  506. package/dist/replay/ReplayOutcome.js +1 -3
  507. package/dist/replay/ReplayProcessLifecycle.js +32 -7
  508. package/dist/replay/ReplaySeccompFile.js +29 -0
  509. package/dist/replay/ReplayWorkerProtocol.js +0 -2
  510. package/dist/replay/SystemJavaScriptReplayHost.js +45 -74
  511. package/dist/server/ProcessCaptureElicitation.js +4 -8
  512. package/dist/server/createServer.js +6 -44
  513. package/dist/server/promptCompletion.js +37 -61
  514. package/dist/server/recordDerivedEvidence.js +1 -1
  515. package/dist/server/registerApplicationTools/characterization.js +4 -8
  516. package/dist/server/registerApplicationTools/compareExportShapes.js +5 -10
  517. package/dist/server/registerApplicationTools/compareSourceToBundle.js +6 -10
  518. package/dist/server/registerApplicationTools/compareVersions.js +5 -10
  519. package/dist/server/registerApplicationTools/controlledReplay.js +3 -5
  520. package/dist/server/registerApplicationTools/coverage.js +6 -71
  521. package/dist/server/registerApplicationTools/helpers.js +1 -13
  522. package/dist/server/registerApplicationTools/obligationLedger.js +3 -2
  523. package/dist/server/registerApplicationTools/traceFeature.js +5 -9
  524. package/dist/server/registerApplicationTools/traceSemantics.js +5 -8
  525. package/dist/server/registerApplicationTools.js +0 -2
  526. package/dist/server/registerArtifactComparisonTool.js +23 -27
  527. package/dist/server/registerBrowserScenarioTool.js +4 -4
  528. package/dist/server/registerBrowserTools.js +5 -8
  529. package/dist/server/registerBundleComparisonTool.js +5 -7
  530. package/dist/server/registerCloseLifecycleTool.js +2 -16
  531. package/dist/server/registerElectronTools.js +10 -29
  532. package/dist/server/registerEnhancedTools.js +10 -11
  533. package/dist/server/registerEvidenceTools.js +15 -22
  534. package/dist/server/registerFunctionComparisonTool.js +30 -25
  535. package/dist/server/registerInvestigationTools/helpers.js +3 -32
  536. package/dist/server/registerInvestigationTools.js +20 -116
  537. package/dist/server/registerJavaScriptRuntimeObservationTools.js +6 -4
  538. package/dist/server/registerManagedWorkflowTools/compareManagedMembers.js +15 -17
  539. package/dist/server/registerManagedWorkflowTools/evidence.js +19 -35
  540. package/dist/server/registerManagedWorkflowTools/importManagedReconstruction.js +3 -8
  541. package/dist/server/registerManagedWorkflowTools/planManagedRuntimeCorrelation.js +3 -8
  542. package/dist/server/registerManagedWorkflowTools/projectManagedApplicationGraph.js +10 -14
  543. package/dist/server/registerManagedWorkflowTools/verifyManagedNativeBoundaries.js +9 -15
  544. package/dist/server/registerOfficialTools.js +1 -43
  545. package/dist/server/registerProcessComparisonTool.js +33 -23
  546. package/dist/server/registerPrompts.js +19 -17
  547. package/dist/server/registerSessionRecordTools.js +10 -156
  548. package/dist/server/registerSessionStatusTool.js +6 -69
  549. package/dist/server/registerSessionTools.js +10 -51
  550. package/dist/server/sessionAvailabilityPolicy.js +0 -2
  551. package/dist/server/sessionEvidence.js +9 -15
  552. package/dist/server/sessionToolPolicies.js +0 -8
  553. package/dist/server/toolResult.js +14 -50
  554. package/dist/serverIdentity.js +0 -20
  555. package/install.sh +1 -1
  556. package/package.json +11 -7
  557. package/scripts/electron-active-hook.cjs +23 -55
  558. package/scripts/hopper-demo-x11.py +13 -32
  559. package/skills/reverse-engineer-anything/SKILL.md +47 -12
  560. package/skills/reverse-engineer-anything/references/evidence-workflows.md +6 -4
  561. package/skills/reverse-engineer-anything/references/javascript-applications.md +13 -13
  562. package/skills/reverse-engineer-anything/references/native-and-artifacts.md +12 -8
  563. package/dist/application/ApplicationWorkflowEvidenceResolver.js +0 -188
  564. package/dist/application/BoundedJsonFiles.js +0 -86
  565. package/dist/application/CrossVersionInventory.js +0 -129
  566. package/dist/application/CrossVersionInvestigation.js +0 -301
  567. package/dist/application/CrossVersionInvestigationCollections.js +0 -23
  568. package/dist/application/CrossVersionInvestigationEvidence.js +0 -64
  569. package/dist/application/CrossVersionInvestigationReplay.js +0 -170
  570. package/dist/application/DeferredFileAuthorization.js +0 -61
  571. package/dist/application/DoctorProjection.js +0 -43
  572. package/dist/application/EnhancedToolPagination.js +0 -22
  573. package/dist/application/EvidenceReferenceResolver.js +0 -26
  574. package/dist/application/InvestigationWorkspaceStore.js +0 -204
  575. package/dist/application/ProcessPairedExperiment.js +0 -72
  576. package/dist/application/ReconstructionCoverageWorkspaceStore.js +0 -31
  577. package/dist/application/ReconstructionReadinessService.js +0 -48
  578. package/dist/cliInvestigationCommands.js +0 -173
  579. package/dist/domain/boundedCartesianProjection.js +0 -15
  580. package/dist/domain/investigationWorkspace.js +0 -347
  581. package/dist/domain/jsonLimits.js +0 -26
  582. package/dist/domain/knownPageCoverage.js +0 -29
  583. package/dist/domain/processPairedExperiment.js +0 -128
  584. package/dist/server/javascriptApplicationResult.js +0 -106
  585. package/dist/server/permissionFailure.js +0 -12
  586. package/dist/server/registerApplicationTools/readiness.js +0 -50
  587. package/dist/server/registerEvidenceResources.js +0 -315
  588. package/dist/server/registerJavaScriptApplicationGraphResource.js +0 -65
  589. package/dist/server/registerReconstructionObligationLedgerResource.js +0 -32
  590. package/dist/server/registerReconstructionReadinessResource.js +0 -32
@@ -94,44 +94,57 @@ const candidateNames = (managed) => {
94
94
  }
95
95
  return [...names];
96
96
  };
97
- const selectCandidates = (managed, symbols, maxCandidates) => {
97
+ const matchPinvoke = (managed, symbols, supportedNativeEvidence) => {
98
98
  const names = candidateNames(managed);
99
99
  const allCandidates = symbols.filter((symbol) => names.some((name) => sameSymbolName(name, symbol.name)));
100
- const candidates = allCandidates.slice(0, maxCandidates);
100
+ const [first, ...remaining] = allCandidates;
101
+ if (first === undefined)
102
+ return {
103
+ match: {
104
+ status: "unresolved",
105
+ basis: supportedNativeEvidence > 0
106
+ ? "no-native-candidate"
107
+ : "unsupported-native-evidence",
108
+ confidence: "unknown",
109
+ matched_native: null,
110
+ candidates: [],
111
+ },
112
+ };
113
+ const candidates = [first, ...remaining];
101
114
  const exact = candidates.find((symbol) => sameSymbolName(managed.import_name, symbol.name) &&
102
115
  moduleCompatible(managed.import_scope_name, symbol));
103
116
  const decorated = candidates.find((symbol) => moduleCompatible(managed.import_scope_name, symbol));
104
- const selected = exact ?? decorated ?? candidates[0] ?? null;
105
- return { allCandidates, candidates, selected, exact, decorated };
106
- };
107
- const basisAndStatus = (managed, selection, hasSupportedNativeEvidence) => {
108
- const { selected, exact } = selection;
109
- if (selected === null)
110
- return {
111
- basis: hasSupportedNativeEvidence
112
- ? "no-native-candidate"
113
- : "unsupported-native-evidence",
114
- status: "unresolved",
115
- confidence: "unknown",
116
- };
117
+ const selected = exact ?? decorated ?? first;
117
118
  if (!moduleCompatible(managed.import_scope_name, selected))
118
119
  return {
119
- basis: "module-mismatch",
120
- status: "contradicted",
121
- confidence: "unknown",
120
+ match: {
121
+ status: "contradicted",
122
+ basis: "module-mismatch",
123
+ confidence: "unknown",
124
+ matched_native: selected,
125
+ candidates,
126
+ },
122
127
  };
123
128
  if (exact !== undefined)
124
129
  return {
125
- basis: selected.source === "macho-export"
126
- ? "exact-export-name"
127
- : "exact-function-name",
128
- status: "verified",
129
- confidence: "observed",
130
+ match: {
131
+ status: "verified",
132
+ basis: selected.source === "macho-export"
133
+ ? "exact-export-name"
134
+ : "exact-function-name",
135
+ confidence: "observed",
136
+ matched_native: selected,
137
+ candidates,
138
+ },
130
139
  };
131
140
  return {
132
- basis: "decorated-name-candidate",
133
- status: "inferred",
134
- confidence: "inferred",
141
+ match: {
142
+ basis: "decorated-name-candidate",
143
+ status: "inferred",
144
+ confidence: "inferred",
145
+ matched_native: selected,
146
+ candidates,
147
+ },
135
148
  };
136
149
  };
137
150
  const pinvokeLimitations = (status, managed) => [
@@ -154,7 +167,7 @@ const pinvokeLimitations = (status, managed) => [
154
167
  ]
155
168
  : []),
156
169
  ];
157
- export const verifyPinvoke = ({ item, managedEvidenceId, symbols, hasSupportedNativeEvidence, input, }) => {
170
+ export const verifyPinvoke = ({ item, managedEvidenceId, native, }) => {
158
171
  const managed = {
159
172
  token: item.token,
160
173
  member_token: item.member_token,
@@ -166,9 +179,8 @@ export const verifyPinvoke = ({ item, managedEvidenceId, symbols, hasSupportedNa
166
179
  call_convention: item.call_convention,
167
180
  declaration_verification: item.verification,
168
181
  };
169
- const selection = selectCandidates(item, symbols, input.limits.max_candidates_per_import);
170
- const { status, basis, confidence } = basisAndStatus(item, selection, hasSupportedNativeEvidence);
171
- const limitations = pinvokeLimitations(status, item);
182
+ const selection = matchPinvoke(item, native.symbols, native.accepted);
183
+ const limitations = pinvokeLimitations(selection.match.status, item);
172
184
  return {
173
185
  verification: pinvokeVerificationSchema.parse({
174
186
  item_id: `mnv_pinvoke_${digest({
@@ -176,21 +188,16 @@ export const verifyPinvoke = ({ item, managedEvidenceId, symbols, hasSupportedNa
176
188
  token: item.token,
177
189
  importName: item.import_name,
178
190
  importScope: item.import_scope_name,
179
- candidates: [...selection.candidates],
191
+ candidates: selection.match.candidates,
180
192
  })}`,
181
193
  managed,
182
- status,
183
- basis,
184
- confidence,
185
- matched_native: selection.selected,
186
- candidates: selection.candidates,
194
+ ...selection.match,
187
195
  evidence_links: [
188
196
  managedEvidenceId,
189
- ...new Set(selection.candidates.map(({ evidence_id: id }) => id)),
197
+ ...new Set(selection.match.candidates.map(({ evidence_id: id }) => id)),
190
198
  ],
191
199
  limitations,
192
200
  }),
193
- omittedCandidates: Math.max(0, selection.allCandidates.length - selection.candidates.length),
194
201
  };
195
202
  };
196
203
  const countStatuses = (items) => ({
@@ -199,21 +206,17 @@ const countStatuses = (items) => ({
199
206
  unresolved: items.filter(({ status }) => status === "unresolved").length,
200
207
  contradicted: items.filter(({ status }) => status === "contradicted").length,
201
208
  });
202
- export const buildVerificationResult = ({ managedEvidence, managed, native, pinvokeImports, verifiedPinvokes, input, }) => {
209
+ export const buildVerificationResult = ({ managedEvidence, managed, native, pinvokeImports, input, }) => {
203
210
  const counts = countStatuses(pinvokeImports);
204
- const omittedNativeObservations = Math.max(0, input.native_observations.length - input.limits.max_native_observations);
205
- const omittedCandidates = verifiedPinvokes.reduce((sum, item) => sum + item.omittedCandidates, 0);
206
- const nativeBodyUnresolved = managed.native_implementations.items.filter(({ boundary_kind: kind }) => kind !== "pinvoke").length;
207
- const coverageStatus = omittedNativeObservations > 0 || omittedCandidates > 0
208
- ? "truncated"
209
- : managed.coverage.state === "complete" && native.unsupported === 0
211
+ const nativeBodyUnresolved = managed.native_implementations.filter(({ boundary_kind: kind }) => kind !== "pinvoke").length;
212
+ const coverage = {
213
+ status: managed.coverage.state === "complete" && native.unsupported === 0
210
214
  ? "complete-within-inputs"
211
- : "partial";
215
+ : "partial",
216
+ };
212
217
  return {
213
- schema_version: 1,
214
218
  algorithm: {
215
219
  name: "rea-managed-native-verification",
216
- version: 1,
217
220
  token_identity: "build-local",
218
221
  token_to_address_mapping: "not-inferred",
219
222
  },
@@ -223,8 +226,8 @@ export const buildVerificationResult = ({ managedEvidence, managed, native, pinv
223
226
  artifact_path: managed.artifact.path,
224
227
  mvid: managed.module?.mvid ?? null,
225
228
  metadata_status: managed.metadata.status,
226
- pinvoke_imports_total: managed.pinvoke_imports.total,
227
- native_implementations_total: managed.native_implementations.total,
229
+ pinvoke_imports_total: managed.pinvoke_imports.length,
230
+ native_implementations_total: managed.native_implementations.length,
228
231
  coverage_state: managed.coverage.state,
229
232
  },
230
233
  native_observations: {
@@ -232,7 +235,6 @@ export const buildVerificationResult = ({ managedEvidence, managed, native, pinv
232
235
  accepted: native.accepted,
233
236
  unsupported: native.unsupported,
234
237
  symbols: native.symbols.length,
235
- truncated: omittedNativeObservations > 0,
236
238
  },
237
239
  summary: {
238
240
  ...counts,
@@ -243,16 +245,10 @@ export const buildVerificationResult = ({ managedEvidence, managed, native, pinv
243
245
  unresolved: nativeBodyUnresolved,
244
246
  reason: "Managed metadata tokens and RVAs are not translated to native provider addresses by this workflow; C++/CLI, ReadyToRun, and native-body mappings require explicit provider-supported bridge evidence.",
245
247
  },
246
- coverage: {
247
- status: coverageStatus,
248
- omitted_native_observations: omittedNativeObservations,
249
- omitted_candidates: omittedCandidates,
250
- },
248
+ coverage,
251
249
  evidence_links: [
252
250
  managedEvidence.evidence_id,
253
- ...input.native_observations
254
- .slice(0, input.limits.max_native_observations)
255
- .map(({ evidence_id: id }) => id),
251
+ ...input.native_observations.map(({ evidence_id: id }) => id),
256
252
  ],
257
253
  limitations: [
258
254
  "P/Invoke verification checks declared import names against supplied native export or function-name Evidence only.",
@@ -4,25 +4,7 @@ import { cliMetadataGuidSchema } from "./managedArtifact.js";
4
4
  const digestSchema = z.string().regex(/^[a-f0-9]{64}$/u);
5
5
  const evidenceIdSchema = z.string().regex(/^ev_[a-f0-9]{64}$/u);
6
6
  const tokenSchema = z.string().regex(/^0x[0-9a-f]{8}$/u);
7
- const boundedTextSchema = z.string().min(1).max(4_096);
8
- const matchStatusSchema = z.enum([
9
- "verified",
10
- "inferred",
11
- "unresolved",
12
- "contradicted",
13
- ]);
14
- const matchBasisSchema = z.enum([
15
- "exact-export-name",
16
- "exact-function-name",
17
- "decorated-name-candidate",
18
- "module-mismatch",
19
- "no-native-candidate",
20
- "unsupported-native-evidence",
21
- ]);
22
- const nativeVerificationLimitsSchema = z.strictObject({
23
- max_native_observations: z.number().int().min(1).max(50).default(20),
24
- max_candidates_per_import: z.number().int().min(1).max(100).default(25),
25
- });
7
+ const textSchema = z.string().min(1);
26
8
  const nativeSymbolSchema = z.strictObject({
27
9
  evidence_id: evidenceIdSchema,
28
10
  operation: z.string().min(1),
@@ -32,7 +14,7 @@ const nativeSymbolSchema = z.strictObject({
32
14
  module_path: z.string().nullable(),
33
15
  source: z.enum(["macho-export", "function-dossier"]),
34
16
  });
35
- export const pinvokeVerificationSchema = z.strictObject({
17
+ const pinvokeVerificationContextShape = {
36
18
  item_id: z.string().regex(/^mnv_pinvoke_[a-f0-9]{64}$/u),
37
19
  managed: z.strictObject({
38
20
  token: tokenSchema,
@@ -53,24 +35,51 @@ export const pinvokeVerificationSchema = z.strictObject({
53
35
  ]),
54
36
  declaration_verification: z.literal("managed-declaration-only"),
55
37
  }),
56
- status: matchStatusSchema,
57
- basis: matchBasisSchema,
58
- confidence: z.enum(["observed", "inferred", "unknown"]),
59
- matched_native: nativeSymbolSchema.nullable(),
60
- candidates: z.array(nativeSymbolSchema).max(100),
61
- evidence_links: z.array(evidenceIdSchema).min(1).max(51),
62
- limitations: z.array(boundedTextSchema).max(100),
63
- });
38
+ evidence_links: z.array(evidenceIdSchema).min(1),
39
+ limitations: z.array(textSchema),
40
+ };
41
+ const observedCandidatesSchema = z
42
+ .tuple([nativeSymbolSchema])
43
+ .rest(nativeSymbolSchema);
44
+ export const pinvokeVerificationSchema = z.discriminatedUnion("status", [
45
+ z.strictObject({
46
+ ...pinvokeVerificationContextShape,
47
+ status: z.literal("verified"),
48
+ basis: z.enum(["exact-export-name", "exact-function-name"]),
49
+ confidence: z.literal("observed"),
50
+ matched_native: nativeSymbolSchema,
51
+ candidates: observedCandidatesSchema,
52
+ }),
53
+ z.strictObject({
54
+ ...pinvokeVerificationContextShape,
55
+ status: z.literal("inferred"),
56
+ basis: z.literal("decorated-name-candidate"),
57
+ confidence: z.literal("inferred"),
58
+ matched_native: nativeSymbolSchema,
59
+ candidates: observedCandidatesSchema,
60
+ }),
61
+ z.strictObject({
62
+ ...pinvokeVerificationContextShape,
63
+ status: z.literal("unresolved"),
64
+ basis: z.enum(["no-native-candidate", "unsupported-native-evidence"]),
65
+ confidence: z.literal("unknown"),
66
+ matched_native: z.null(),
67
+ candidates: z.tuple([]),
68
+ }),
69
+ z.strictObject({
70
+ ...pinvokeVerificationContextShape,
71
+ status: z.literal("contradicted"),
72
+ basis: z.literal("module-mismatch"),
73
+ confidence: z.literal("unknown"),
74
+ matched_native: nativeSymbolSchema,
75
+ candidates: observedCandidatesSchema,
76
+ }),
77
+ ]);
64
78
  /** Authenticated managed boundary Evidence plus native observations. */
65
79
  export const managedNativeVerificationInputSchema = z
66
80
  .strictObject({
67
81
  managed_boundaries: evidenceSchema,
68
- native_observations: z.array(evidenceSchema).min(1).max(50),
69
- limits: nativeVerificationLimitsSchema.default({
70
- max_native_observations: 20,
71
- max_candidates_per_import: 25,
72
- }),
73
- unknown_registry_approved: z.literal(true).optional(),
82
+ native_observations: z.array(evidenceSchema).min(1),
74
83
  })
75
84
  .superRefine((input, context) => {
76
85
  const ids = new Set();
@@ -92,13 +101,15 @@ export const managedNativeVerificationInputSchema = z
92
101
  ids.add(evidence.evidence_id);
93
102
  }
94
103
  });
104
+ const verificationCoverageSchema = z.strictObject({
105
+ status: z.enum(["complete-within-inputs", "partial"]),
106
+ });
95
107
  /** Provider-neutral managed/native verification result. */
96
- export const managedNativeVerificationResultSchema = z.strictObject({
97
- schema_version: z.literal(1),
108
+ export const managedNativeVerificationResultSchema = z
109
+ .strictObject({
98
110
  verification_id: z.string().regex(/^mnv_[a-f0-9]{64}$/u),
99
111
  algorithm: z.strictObject({
100
112
  name: z.literal("rea-managed-native-verification"),
101
- version: z.literal(1),
102
113
  token_identity: z.literal("build-local"),
103
114
  token_to_address_mapping: z.literal("not-inferred"),
104
115
  }),
@@ -117,7 +128,6 @@ export const managedNativeVerificationResultSchema = z.strictObject({
117
128
  accepted: z.number().int().min(0),
118
129
  unsupported: z.number().int().min(0),
119
130
  symbols: z.number().int().min(0),
120
- truncated: z.boolean(),
121
131
  }),
122
132
  summary: z.strictObject({
123
133
  verified: z.number().int().min(0),
@@ -126,16 +136,42 @@ export const managedNativeVerificationResultSchema = z.strictObject({
126
136
  contradicted: z.number().int().min(0),
127
137
  native_body_unresolved: z.number().int().min(0),
128
138
  }),
129
- pinvoke_imports: z.array(pinvokeVerificationSchema).max(50_000),
139
+ pinvoke_imports: z.array(pinvokeVerificationSchema),
130
140
  native_implementations: z.strictObject({
131
141
  unresolved: z.number().int().min(0),
132
- reason: boundedTextSchema,
133
- }),
134
- coverage: z.strictObject({
135
- status: z.enum(["complete-within-inputs", "partial", "truncated"]),
136
- omitted_native_observations: z.number().int().min(0),
137
- omitted_candidates: z.number().int().min(0),
142
+ reason: textSchema,
138
143
  }),
139
- evidence_links: z.array(evidenceIdSchema).min(2).max(51),
140
- limitations: z.array(boundedTextSchema).max(1_000),
144
+ coverage: verificationCoverageSchema,
145
+ evidence_links: z.array(evidenceIdSchema).min(2),
146
+ limitations: z.array(textSchema),
147
+ })
148
+ .superRefine((result, context) => {
149
+ const observedNativeCount = result.native_observations.accepted +
150
+ result.native_observations.unsupported;
151
+ if (observedNativeCount !== result.native_observations.total)
152
+ context.addIssue({
153
+ code: "custom",
154
+ path: ["native_observations"],
155
+ message: "Native observation counts must account for the total input",
156
+ });
157
+ for (const status of [
158
+ "verified",
159
+ "inferred",
160
+ "unresolved",
161
+ "contradicted",
162
+ ])
163
+ if (result.summary[status] !==
164
+ result.pinvoke_imports.filter((item) => item.status === status).length)
165
+ context.addIssue({
166
+ code: "custom",
167
+ path: ["summary", status],
168
+ message: `P/Invoke ${status} count must match the item results`,
169
+ });
170
+ if (result.summary.native_body_unresolved !==
171
+ result.native_implementations.unresolved)
172
+ context.addIssue({
173
+ code: "custom",
174
+ path: ["summary", "native_body_unresolved"],
175
+ message: "Native body summary must match unresolved implementations",
176
+ });
141
177
  });
@@ -6,14 +6,13 @@ import { cliMetadataGuidSchema, managedMemberInspectionSchema, } from "./managed
6
6
  const digestSchema = z.string().regex(/^[a-f0-9]{64}$/u);
7
7
  const evidenceIdSchema = z.string().regex(/^ev_[a-f0-9]{64}$/u);
8
8
  const tokenSchema = z.string().regex(/^0x[0-9a-f]{8}$/u);
9
- const boundedTextSchema = z.string().min(1).max(65_536);
10
- const boundedLabelSchema = z.string().min(1).max(512);
9
+ const textSchema = z.string().min(1);
11
10
  const decompilerSchema = z.strictObject({
12
- name: boundedLabelSchema,
13
- version: z.string().min(1).max(128).nullable(),
11
+ name: textSchema,
12
+ version: textSchema.nullable(),
14
13
  family: z.enum(["ilspy", "dnspy", "dnlib", "mono-cecil", "other"]),
15
14
  executable_sha256: digestSchema.nullable(),
16
- options: z.array(z.string().max(512)).max(50).default([]),
15
+ options: z.array(z.string()).default([]),
17
16
  });
18
17
  const managedReconstructionMethodInputSchema = z.strictObject({
19
18
  token: tokenSchema,
@@ -22,9 +21,9 @@ const managedReconstructionMethodInputSchema = z.strictObject({
22
21
  reconstruction: z.strictObject({
23
22
  kind: z.enum(["decompiled-csharp", "decompiled-il", "semantic-pseudocode"]),
24
23
  language: z.enum(["csharp", "il", "pseudocode"]),
25
- text: boundedTextSchema,
24
+ text: textSchema,
26
25
  text_sha256: digestSchema.optional(),
27
- source_path: z.string().min(1).max(4_096).nullable().optional(),
26
+ source_path: textSchema.nullable().optional(),
28
27
  start_line: z.number().int().min(1).nullable().optional(),
29
28
  end_line: z.number().int().min(1).nullable().optional(),
30
29
  }),
@@ -32,9 +31,8 @@ const managedReconstructionMethodInputSchema = z.strictObject({
32
31
  export const managedReconstructionImportInputSchema = z.strictObject({
33
32
  static_members: evidenceSchema,
34
33
  decompiler: decompilerSchema,
35
- methods: z.array(managedReconstructionMethodInputSchema).min(1).max(50),
36
- notes: z.array(z.string().min(1).max(4_096)).max(100).default([]),
37
- unknown_registry_approved: z.literal(true).optional(),
34
+ methods: z.array(managedReconstructionMethodInputSchema).min(1),
35
+ notes: z.array(textSchema).default([]),
38
36
  });
39
37
  const importedMethodSchema = z.strictObject({
40
38
  token: tokenSchema,
@@ -47,11 +45,11 @@ const importedMethodSchema = z.strictObject({
47
45
  reconstruction: z.strictObject({
48
46
  kind: z.enum(["decompiled-csharp", "decompiled-il", "semantic-pseudocode"]),
49
47
  language: z.enum(["csharp", "il", "pseudocode"]),
50
- text: boundedTextSchema,
48
+ text: textSchema,
51
49
  text_sha256: digestSchema,
52
- text_length: z.number().int().min(1).max(65_536),
50
+ text_length: z.number().int().min(1),
53
51
  line_count: z.number().int().min(1),
54
- source_path: z.string().min(1).max(4_096).nullable(),
52
+ source_path: textSchema.nullable(),
55
53
  start_line: z.number().int().min(1).nullable(),
56
54
  end_line: z.number().int().min(1).nullable(),
57
55
  }),
@@ -63,7 +61,6 @@ const importedMethodSchema = z.strictObject({
63
61
  }),
64
62
  });
65
63
  export const managedReconstructionImportResultSchema = z.strictObject({
66
- schema_version: z.literal(1),
67
64
  reconstruction_id: z.string().regex(/^mre_[a-f0-9]{64}$/u),
68
65
  phase: z.literal("reconstruction-import"),
69
66
  executed: z.literal(false),
@@ -80,16 +77,16 @@ export const managedReconstructionImportResultSchema = z.strictObject({
80
77
  options_sha256: digestSchema,
81
78
  }),
82
79
  summary: z.strictObject({
83
- imported_methods: z.number().int().min(1).max(50),
84
- decompiled_csharp_methods: z.number().int().min(0).max(50),
85
- decompiled_il_methods: z.number().int().min(0).max(50),
86
- pseudocode_methods: z.number().int().min(0).max(50),
80
+ imported_methods: z.number().int().min(1),
81
+ decompiled_csharp_methods: z.number().int().min(0),
82
+ decompiled_il_methods: z.number().int().min(0),
83
+ pseudocode_methods: z.number().int().min(0),
87
84
  total_text_bytes: z.number().int().min(1),
88
85
  }),
89
- methods: z.array(importedMethodSchema).min(1).max(50),
90
- notes: z.array(z.string().min(1).max(4_096)).max(100),
86
+ methods: z.array(importedMethodSchema).min(1),
87
+ notes: z.array(textSchema),
91
88
  evidence_links: z.array(evidenceIdSchema).length(1),
92
- limitations: z.array(z.string().min(1).max(4_096)).max(1_000),
89
+ limitations: z.array(textSchema),
93
90
  });
94
91
  const sha256Text = (value) => createHash("sha256").update(value).digest("hex");
95
92
  const sha256Json = (value) => {
@@ -99,7 +96,7 @@ const sha256Json = (value) => {
99
96
  return createHash("sha256").update(serialized).digest("hex");
100
97
  };
101
98
  const countLines = (text) => text.length === 0 ? 0 : text.split(/\r\n|\r|\n/u).length;
102
- const findObservedMethod = (members, candidate) => members.methods.items.find((item) => item.token === candidate.token &&
99
+ const findObservedMethod = (members, candidate) => members.methods.find((item) => item.token === candidate.token &&
103
100
  item.signature.raw_sha256 === candidate.signature_sha256 &&
104
101
  item.body.status === "present" &&
105
102
  item.body.normalized_il_sha256 !== null &&
@@ -163,7 +160,6 @@ const RECONSTRUCTION_LIMITATIONS = [
163
160
  "Obfuscated names, decompiler variables, and control-flow restructuring are not treated as proof without separate validation.",
164
161
  ];
165
162
  const buildReconstructionWithoutId = (input, staticEvidence, members, methods) => ({
166
- schema_version: 1,
167
163
  phase: "reconstruction-import",
168
164
  executed: false,
169
165
  static_observation: buildStaticObservation(staticEvidence, members),
@@ -6,7 +6,7 @@ import { cliMetadataGuidSchema, managedMemberInspectionSchema, } from "./managed
6
6
  const digestSchema = z.string().regex(/^[a-f0-9]{64}$/u);
7
7
  const evidenceIdSchema = z.string().regex(/^ev_[a-f0-9]{64}$/u);
8
8
  const tokenSchema = z.string().regex(/^0x[0-9a-f]{8}$/u);
9
- const boundedTextSchema = z.string().min(1).max(4_096);
9
+ const boundedTextSchema = z.string().min(1);
10
10
  const managedRuntimeEffectSchema = z.enum([
11
11
  "attach",
12
12
  "load",
@@ -20,9 +20,9 @@ const managedRuntimeHostSchema = z.strictObject({
20
20
  architecture: z.enum(["x86", "x86_64", "arm", "arm64"]),
21
21
  });
22
22
  const managedRuntimeBoundsSchema = z.strictObject({
23
- timeout_ms: z.number().int().min(1).max(60_000).default(5_000),
24
- max_threads: z.number().int().min(1).max(256).default(32),
25
- max_output_bytes: z.number().int().min(0).max(1_048_576).default(65_536),
23
+ timeout_ms: z.number().int().min(1).default(5_000),
24
+ max_threads: z.number().int().min(1).default(32),
25
+ max_output_bytes: z.number().int().min(0).default(65_536),
26
26
  allow_network: z.literal(false).default(false),
27
27
  allow_ui: z.literal(false).default(false),
28
28
  });
@@ -42,10 +42,8 @@ export const managedRuntimeCorrelationInputSchema = z.strictObject({
42
42
  allow_network: false,
43
43
  allow_ui: false,
44
44
  }),
45
- unknown_registry_approved: z.literal(true).optional(),
46
45
  });
47
46
  export const managedRuntimeCorrelationResultSchema = z.strictObject({
48
- schema_version: z.literal(1),
49
47
  correlation_id: z.string().regex(/^mrc_[a-f0-9]{64}$/u),
50
48
  phase: z.literal("admission-plan"),
51
49
  executed: z.literal(false),
@@ -99,7 +97,7 @@ export const managedRuntimeCorrelationResultSchema = z.strictObject({
99
97
  bounds: managedRuntimeBoundsSchema,
100
98
  unsupported_until_executor_exists: z.literal(true),
101
99
  evidence_links: z.array(evidenceIdSchema).length(1),
102
- limitations: z.array(boundedTextSchema).max(1_000),
100
+ limitations: z.array(boundedTextSchema),
103
101
  });
104
102
  const sha256 = (value) => {
105
103
  const serialized = canonicalize(value);
@@ -113,7 +111,7 @@ export const planManagedRuntimeCorrelation = (input, executablePath, permissionG
113
111
  if (staticEvidence.operation !== "inspect_managed_members")
114
112
  throw new TypeError("Evidence operation is not inspect_managed_members");
115
113
  const members = managedMemberInspectionSchema.parse(staticEvidence.normalized_result);
116
- const method = members.methods.items.find((item) => item.token === input.method.token &&
114
+ const method = members.methods.find((item) => item.token === input.method.token &&
117
115
  item.signature.raw_sha256 === input.method.signature_sha256 &&
118
116
  item.body.status === "present" &&
119
117
  item.body.normalized_il_sha256 !== null &&
@@ -122,7 +120,6 @@ export const planManagedRuntimeCorrelation = (input, executablePath, permissionG
122
120
  if (method === undefined)
123
121
  throw new TypeError("Requested method lock does not match a static managed member observation");
124
122
  const withoutId = {
125
- schema_version: 1,
126
123
  phase: "admission-plan",
127
124
  executed: false,
128
125
  authority_model: {
@@ -44,6 +44,7 @@ const jumpTableDataSourceSchema = z
44
44
  provenance: z.enum([
45
45
  "ghidra-decompiler-load-table",
46
46
  "ghidra-dispatch-block-data-reference",
47
+ "ghidra-aarch64-byte-table",
47
48
  ]),
48
49
  entry_size_bytes: z.number().int().min(1).nullable(),
49
50
  entry_count: z.number().int().min(0).nullable(),
@@ -55,7 +56,6 @@ const jumpTableMappingSchema = z
55
56
  .object({
56
57
  case_value: z.number().int().nullable(),
57
58
  target_address: z.string().min(1),
58
- data_addresses: z.array(z.string().min(1)),
59
59
  confidence: inferenceConfidenceSchema,
60
60
  evidence: z.array(inferenceEvidenceSchema).min(1),
61
61
  })
@@ -64,9 +64,7 @@ const inferredJumpTableSchema = z
64
64
  .object({
65
65
  dispatch_address: z.string().min(1),
66
66
  data_sources: z.array(jumpTableDataSourceSchema),
67
- data_sources_truncated: z.boolean(),
68
67
  mappings: z.array(jumpTableMappingSchema),
69
- mappings_truncated: z.boolean(),
70
68
  limitations: z.array(z.string()),
71
69
  })
72
70
  .strict();
@@ -78,9 +76,7 @@ const availableNativeApiBoundarySchema = z
78
76
  calling_convention: z.string().min(1),
79
77
  return_type: inferredReturnTypeSchema,
80
78
  parameters: z.array(inferredParameterTypeSchema),
81
- parameters_truncated: z.boolean(),
82
79
  jump_tables: z.array(inferredJumpTableSchema),
83
- jump_tables_truncated: z.boolean(),
84
80
  pseudocode: z
85
81
  .object({
86
82
  classification: z.literal("decompiler-generated-non-source"),
@@ -123,7 +119,6 @@ const nativeApiInspectionSubstepSchema = z
123
119
  /** Agent-facing projection of structured native API reconstruction substeps. */
124
120
  export const nativeApiInspectionResultSchema = z
125
121
  .object({
126
- schema_version: z.literal(1),
127
122
  procedure: z
128
123
  .object({
129
124
  address: z.string().min(1),
@@ -131,7 +126,7 @@ export const nativeApiInspectionResultSchema = z
131
126
  })
132
127
  .strict(),
133
128
  boundary: nativeApiBoundarySchema,
134
- substeps: z.array(nativeApiInspectionSubstepSchema).min(3).max(3),
129
+ substeps: z.array(nativeApiInspectionSubstepSchema).length(3),
135
130
  unsupported_branches: z.array(z.string().min(1)),
136
131
  residual_unknowns: z.array(z.string().min(1)),
137
132
  })
@@ -19,8 +19,6 @@ const nativeCommandInvocationSchema = z.object({
19
19
  }),
20
20
  stdout_bytes: z.number().int().min(0),
21
21
  stderr_bytes: z.number().int().min(0),
22
- stdout_truncated: z.boolean(),
23
- stderr_truncated: z.boolean(),
24
22
  });
25
23
  const architectureSchema = z.object({
26
24
  name: z.string(),