rea-agents 3.1.0 → 3.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (590) hide show
  1. package/README.md +72 -95
  2. package/bridge/ghidra/ReaGhidraBridge.java +609 -841
  3. package/bridge/hopper_bridge.py +99 -344
  4. package/dist/application/AbortablePromise.js +6 -3
  5. package/dist/application/AnalysisSnapshotCache.js +0 -1
  6. package/dist/application/AnalysisSnapshotFiles.js +7 -7
  7. package/dist/application/AndroidApplicationService.js +1 -1
  8. package/dist/application/AppleApplicationService.js +1 -1
  9. package/dist/application/ArtifactExtraction.js +35 -54
  10. package/dist/application/ArtifactExtractionDestination.js +17 -0
  11. package/dist/application/ArtifactGraphConstruction.js +2 -17
  12. package/dist/application/ArtifactInventory/classify.js +2 -6
  13. package/dist/application/ArtifactInventory/hash.js +2 -20
  14. package/dist/application/ArtifactInventory/scanCanonical.js +8 -12
  15. package/dist/application/ArtifactInventory/scanReader.js +69 -51
  16. package/dist/application/ArtifactInventory.js +6 -14
  17. package/dist/application/AuthorizedArtifactInventory.js +3 -13
  18. package/dist/application/BinarySession.js +41 -13
  19. package/dist/application/BinarySessionComposition.js +0 -11
  20. package/dist/application/BinarySessionOpen.js +2 -1
  21. package/dist/application/BinarySessionRecords.js +5 -93
  22. package/dist/application/BinarySessionStatus.js +5 -16
  23. package/dist/application/BinaryTargetResolver.js +216 -0
  24. package/dist/application/BrowserEvidence.js +42 -58
  25. package/dist/application/BrowserObservationService.js +3 -6
  26. package/dist/application/BrowserScenarioCaptureService.js +3 -6
  27. package/dist/application/BrowserScenarioEvidence.js +3 -3
  28. package/dist/application/CallPathTracing.js +2 -36
  29. package/dist/application/CapabilityInventory.js +10 -15
  30. package/dist/application/ClientConfigurationDocument.js +27 -0
  31. package/dist/application/ClientRegistrationStatus.js +16 -13
  32. package/dist/application/CommandShimReplay.js +14 -1
  33. package/dist/application/DirectAnalysis.js +22 -46
  34. package/dist/application/DirectAnalysisStatus.js +5 -61
  35. package/dist/application/Doctor.js +11 -32
  36. package/dist/application/DoctorDiagnostics.js +1 -2
  37. package/dist/application/DoctorScope.js +1 -1
  38. package/dist/application/ElectronActiveEvidence.js +3 -8
  39. package/dist/application/ElectronActiveObservationService.js +3 -6
  40. package/dist/application/ElectronBoundaryAnalysis.js +7 -8
  41. package/dist/application/ElectronBoundaryGraphContext.js +1 -1
  42. package/dist/application/ElectronBoundaryGraphIpc.js +3 -3
  43. package/dist/application/ElectronBoundaryGraphNative.js +1 -2
  44. package/dist/application/ElectronBoundaryGraphWindows.js +6 -8
  45. package/dist/application/ElectronEvidence.js +4 -7
  46. package/dist/application/ElectronObservationService.js +5 -9
  47. package/dist/application/EnhancedLiteralTracing.js +42 -65
  48. package/dist/application/EnhancedTools.js +76 -44
  49. package/dist/application/EvidenceBundleCommands.js +11 -11
  50. package/dist/application/EvidenceBundleFiles.js +9 -15
  51. package/dist/application/EvidenceLedger.js +6 -41
  52. package/dist/application/FilesystemSnapshot.js +2 -3
  53. package/dist/application/InterfaceBuilderAnalysis.js +266 -0
  54. package/dist/application/InventoryProjectionEvidence.js +4 -2
  55. package/dist/application/InvestigationProviders.js +1 -1
  56. package/dist/application/JavaScriptApplicationEvidence.js +2 -5
  57. package/dist/application/JavaScriptApplicationEvidenceGraph.js +6 -10
  58. package/dist/application/JavaScriptApplicationService.js +6 -29
  59. package/dist/application/JavaScriptApplicationWorkflowEvidence.js +5 -5
  60. package/dist/application/JavaScriptApplicationWorkflowService.js +0 -8
  61. package/dist/application/JavaScriptArtifactAnalysis.js +38 -127
  62. package/dist/application/JavaScriptArtifactFiles.js +67 -107
  63. package/dist/application/JavaScriptArtifactGraphAccumulator.js +0 -7
  64. package/dist/application/JavaScriptArtifactGraphBuilder.js +7 -58
  65. package/dist/application/JavaScriptArtifactGraphBundlers.js +1 -6
  66. package/dist/application/JavaScriptArtifactGraphContext.js +12 -39
  67. package/dist/application/JavaScriptArtifactGraphDocuments.js +4 -11
  68. package/dist/application/JavaScriptArtifactGraphEvidence.js +0 -14
  69. package/dist/application/JavaScriptArtifactGraphFindings.js +3 -3
  70. package/dist/application/JavaScriptArtifactGraphStructure.js +16 -17
  71. package/dist/application/JavaScriptArtifactPathResolution.js +61 -49
  72. package/dist/application/JavaScriptArtifactReconstruction.js +5 -10
  73. package/dist/application/JavaScriptArtifactReconstructionInput.js +2 -14
  74. package/dist/application/JavaScriptJsonModules.js +2 -2
  75. package/dist/application/JavaScriptModuleRelationships.js +22 -27
  76. package/dist/application/JavaScriptReplayPlanning.js +9 -3
  77. package/dist/application/JavaScriptReplayService.js +6 -32
  78. package/dist/application/JavaScriptReturnShapeProjection.js +12 -42
  79. package/dist/application/JavaScriptRuntimeObservationEvidence.js +7 -8
  80. package/dist/application/JavaScriptRuntimeObservationService.js +4 -8
  81. package/dist/application/JavaScriptRuntimeReconciliationEvidence.js +2 -3
  82. package/dist/application/JavaScriptSemanticGraphBuilder.js +11 -41
  83. package/dist/application/JavaScriptSemanticGraphConstruction.js +5 -29
  84. package/dist/application/JavaScriptSemanticGraphEvidence.js +1 -1
  85. package/dist/application/JavaScriptSemanticGraphFingerprintProjection.js +1 -1
  86. package/dist/application/JavaScriptSemanticGraphFlowProjection.js +0 -13
  87. package/dist/application/JavaScriptSemanticGraphProjection.js +1 -3
  88. package/dist/application/JavaScriptSemanticTraceService.js +1 -10
  89. package/dist/application/JsonFiles.js +79 -0
  90. package/dist/application/LinuxHopper.js +11 -9
  91. package/dist/application/LoopbackReplay.js +26 -23
  92. package/dist/application/LoopbackReplayRecorder.js +29 -1
  93. package/dist/application/ManagedApplicationGraphService.js +1 -2
  94. package/dist/application/ManagedMemberComparisonService.js +11 -41
  95. package/dist/application/ManagedNativeVerificationService.js +1 -2
  96. package/dist/application/ManagedReconstructionService.js +1 -1
  97. package/dist/application/ManagedRuntimeCorrelationService.js +5 -8
  98. package/dist/application/NativeApiInspection.js +2 -7
  99. package/dist/application/NativeUiActionTrace.js +394 -0
  100. package/dist/application/NodeRuntimeCharacterizationService.js +3 -7
  101. package/dist/application/PermissionAuthority.js +15 -7
  102. package/dist/application/PermissionFailure.js +5 -0
  103. package/dist/application/ProcessCaptureAuthority.js +5 -7
  104. package/dist/application/ProcessCaptureJournal.js +3 -2
  105. package/dist/application/ProcessCaptureLifecycle.js +5 -12
  106. package/dist/application/ProcessCheckpoints.js +29 -11
  107. package/dist/application/ProcessCli.js +6 -16
  108. package/dist/application/ProcessEvidence.js +5 -7
  109. package/dist/application/ProcessHarness.js +52 -17
  110. package/dist/application/ProcessReactiveCoordinator.js +2 -4
  111. package/dist/application/ProcessReactiveEffects.js +9 -3
  112. package/dist/application/ProcessReactiveHarness.js +13 -7
  113. package/dist/application/ProcessSampling.js +2 -4
  114. package/dist/application/ProcessTimer.js +39 -0
  115. package/dist/application/ProjectPermissionStore.js +39 -96
  116. package/dist/application/RealHopperAssertions.js +20 -66
  117. package/dist/application/ReconstructionCoverageService.js +12 -58
  118. package/dist/application/ReconstructionObligationAuthority.js +2 -2
  119. package/dist/application/ReconstructionObligationCandidates.js +4 -4
  120. package/dist/application/ReconstructionObligationLedgerEvaluation.js +8 -15
  121. package/dist/application/ReconstructionObligationLedgerProjection.js +3 -7
  122. package/dist/application/ReconstructionObligationLedgerService.js +19 -38
  123. package/dist/application/ReferenceSourceImport.js +19 -45
  124. package/dist/application/ReferenceSourceImportEntries.js +2 -4
  125. package/dist/application/ReferenceSourceImportPolicy.js +5 -32
  126. package/dist/application/ReferenceSourceImportTypes.js +0 -16
  127. package/dist/application/RuntimeExecutableDiagnostics.js +55 -29
  128. package/dist/application/SessionProviderRouter.js +2 -2
  129. package/dist/application/Setup.js +1 -3
  130. package/dist/application/SetupClientConfiguration.js +22 -93
  131. package/dist/application/SetupRegistrationEnvironment.js +0 -7
  132. package/dist/application/StoreFileLock.js +119 -0
  133. package/dist/application/TerminalRenderer.js +2 -3
  134. package/dist/application/Uninstall.js +9 -14
  135. package/dist/application/UnknownEvidence.js +1 -1
  136. package/dist/artifacts/ArtifactPaths.js +2 -5
  137. package/dist/artifacts/ArtifactProvider.js +36 -58
  138. package/dist/artifacts/DirectoryArtifactReader.js +13 -8
  139. package/dist/artifacts/MachOSliceArtifactReader.js +1 -5
  140. package/dist/artifacts/NativeDmgArtifactReader.js +11 -11
  141. package/dist/artifacts/NibArchive.js +269 -0
  142. package/dist/artifacts/SafeOutputTree.js +15 -24
  143. package/dist/browser/BrowserProcessStartup.js +1 -2
  144. package/dist/browser/CdpAuthorizedMainFrame.js +16 -0
  145. package/dist/browser/CdpBrowserProvider.js +3 -13
  146. package/dist/browser/CdpCanonicalJsonDigest.js +9 -0
  147. package/dist/browser/CdpCaptureDocuments.js +28 -76
  148. package/dist/browser/CdpCaptureEventBodyShapes.js +13 -33
  149. package/dist/browser/CdpCaptureEventHandlers.js +22 -87
  150. package/dist/browser/CdpCaptureEvents.js +2 -8
  151. package/dist/browser/CdpCaptureStorage.js +9 -20
  152. package/dist/browser/CdpCaptureStorageFingerprints.js +85 -98
  153. package/dist/browser/CdpCaptureValues.js +21 -21
  154. package/dist/browser/CdpConnection.js +10 -25
  155. package/dist/browser/CdpElectronInspection.js +26 -50
  156. package/dist/browser/CdpElectronProvider.js +10 -35
  157. package/dist/browser/CdpElectronScriptEvents.js +8 -16
  158. package/dist/browser/CdpElectronScripts.js +6 -35
  159. package/dist/browser/CdpElectronWorkers.js +6 -10
  160. package/dist/browser/CdpEndpoint.js +25 -41
  161. package/dist/browser/CdpObservationSession.js +14 -26
  162. package/dist/browser/CdpPageCapture.js +34 -48
  163. package/dist/browser/CdpPageCaptureScripts.js +1 -19
  164. package/dist/browser/CdpPageCaptureWorkers.js +6 -10
  165. package/dist/browser/CdpSafeMetadata.js +19 -22
  166. package/dist/browser/CdpScreenshot.js +3 -5
  167. package/dist/browser/CdpTargetSession.js +1 -2
  168. package/dist/browser/CdpWebMcpDiscovery.js +13 -22
  169. package/dist/browser/ElectronFileScope.js +8 -19
  170. package/dist/browser/JavaScriptRuntimeScope.js +9 -14
  171. package/dist/browser/PlaywrightBrowserScenarioProvider.js +31 -64
  172. package/dist/browser/PlaywrightElectronActiveActions.js +54 -69
  173. package/dist/browser/PlaywrightElectronActiveProvider.js +14 -34
  174. package/dist/browser/PlaywrightExecutionBoundary.js +16 -5
  175. package/dist/browser/PlaywrightScenarioActions.js +3 -7
  176. package/dist/browser/PlaywrightScenarioArtifacts.js +23 -92
  177. package/dist/browser/PlaywrightScenarioBrowser.js +3 -5
  178. package/dist/browser/PlaywrightScenarioEvents.js +45 -94
  179. package/dist/browser/PlaywrightScenarioSession.js +14 -30
  180. package/dist/browser/PngVisualDiff.js +22 -14
  181. package/dist/browser/SensitiveTextCapture.js +0 -17
  182. package/dist/browser/V8InspectorCaptureProjection.js +7 -8
  183. package/dist/browser/V8InspectorEndpoint.js +12 -14
  184. package/dist/browser/V8InspectorProvider.js +20 -61
  185. package/dist/browser/WebSourceMapFetcher.js +56 -176
  186. package/dist/catalogIdentity.js +0 -54
  187. package/dist/cli/artifactCommands.js +49 -77
  188. package/dist/cli/coreAnalysisCommands.js +83 -133
  189. package/dist/cli/javascriptApplicationAnalysis.js +1 -9
  190. package/dist/cli/managedCommands.js +5 -270
  191. package/dist/cli/setupCommands.js +3 -12
  192. package/dist/cli/utilityCommands.js +7 -41
  193. package/dist/cli.js +0 -2
  194. package/dist/cliApplicationCommands.js +42 -112
  195. package/dist/cliBrowserAdvancedCommands.js +10 -106
  196. package/dist/cliBrowserCommands.js +15 -127
  197. package/dist/cliBrowserContext.js +30 -0
  198. package/dist/cliCommandNames.js +4 -5
  199. package/dist/cliElectronCommands.js +8 -72
  200. package/dist/cliEvidenceCommands.js +8 -77
  201. package/dist/cliJavaScriptRuntimeCommands.js +9 -91
  202. package/dist/cliJsonInput.js +4 -14
  203. package/dist/cliObservationOptions.js +11 -96
  204. package/dist/cliPolicyCommands.js +2 -17
  205. package/dist/cliProcessCommands.js +3 -3
  206. package/dist/cliSetup.js +0 -13
  207. package/dist/config/browserScenario.js +2 -2
  208. package/dist/config/environment.js +0 -9
  209. package/dist/config/parseConfig.js +1 -33
  210. package/dist/config/parsers.js +6 -27
  211. package/dist/config/passiveObservation.js +7 -77
  212. package/dist/config/permissions.js +0 -7
  213. package/dist/contracts/analysisSearchContract.js +2 -5
  214. package/dist/contracts/applicationToolContracts.js +56 -109
  215. package/dist/contracts/applicationWorkflowInputContracts.js +27 -102
  216. package/dist/contracts/artifactComparisonExample.js +58 -60
  217. package/dist/contracts/artifactToolContracts.js +20 -67
  218. package/dist/contracts/browserScenarioToolContracts.js +6 -51
  219. package/dist/contracts/browserToolContracts.js +8 -73
  220. package/dist/contracts/electronToolContracts.js +8 -108
  221. package/dist/contracts/enhancedInputs.js +23 -54
  222. package/dist/contracts/errorSchemas.js +0 -1
  223. package/dist/contracts/functionComparisonExample.js +10 -24
  224. package/dist/contracts/functionInstructionContract.js +1 -3
  225. package/dist/contracts/functionWorkflowToolContracts.js +2 -2
  226. package/dist/contracts/hopperMemoryContracts.js +3 -3
  227. package/dist/contracts/investigationExamples.js +14 -11
  228. package/dist/contracts/javascriptApplicationWorkflowExamples.js +12 -19
  229. package/dist/contracts/javascriptRuntimeObservationToolContracts.js +2 -20
  230. package/dist/contracts/javascriptRuntimeReconciliationExample.js +45 -12
  231. package/dist/contracts/managedToolContracts.js +6 -95
  232. package/dist/contracts/managedWorkflowExamples.js +77 -128
  233. package/dist/contracts/managedWorkflowToolContracts.js +51 -77
  234. package/dist/contracts/nativeToolContracts.js +7 -11
  235. package/dist/contracts/processCaptureExample.js +2 -69
  236. package/dist/contracts/promptContracts.js +49 -67
  237. package/dist/contracts/providerSelection.js +0 -1
  238. package/dist/contracts/reconstructionReadinessExample.js +1 -6
  239. package/dist/contracts/sessionStatusContract.js +1 -17
  240. package/dist/contracts/sessionToolSchemas.js +6 -15
  241. package/dist/contracts/toolContractExamples.js +11 -11
  242. package/dist/contracts/toolContractHelpers.js +0 -4
  243. package/dist/contracts/toolContracts.js +60 -71
  244. package/dist/contracts/toolEffects.js +5 -13
  245. package/dist/contracts/toolOutputSchemaGroups.js +37 -91
  246. package/dist/contracts/toolOutputSchemaPrimitives.js +16 -56
  247. package/dist/contracts/toolSchemaMetadata.js +8 -19
  248. package/dist/contracts/unknownContractExamples.js +0 -2
  249. package/dist/domain/analysisErrorPresentation.js +46 -54
  250. package/dist/domain/analysisErrorProjection.js +28 -37
  251. package/dist/domain/analysisProfile.js +3 -31
  252. package/dist/domain/analysisSnapshot.js +3 -12
  253. package/dist/domain/androidApplication.js +15 -54
  254. package/dist/domain/appleApplication.js +24 -67
  255. package/dist/domain/artifactComparison.js +11 -29
  256. package/dist/domain/artifactGraph.js +14 -44
  257. package/dist/domain/artifactInspection.js +38 -69
  258. package/dist/domain/artifactInventoryEvidence.js +27 -21
  259. package/dist/domain/binaryTarget.js +2 -221
  260. package/dist/domain/browserCaptureComparison.js +47 -24
  261. package/dist/domain/browserObservation.js +28 -193
  262. package/dist/domain/browserObservationSchemas.js +5 -23
  263. package/dist/domain/browserScenario.js +11 -14
  264. package/dist/domain/browserScenarioCapture.js +11 -12
  265. package/dist/domain/browserScenarioCaptureValues.js +146 -84
  266. package/dist/domain/browserScenarioDiff.js +2 -59
  267. package/dist/domain/browserScenarioDiffEvidence.js +51 -0
  268. package/dist/domain/browserScenarioDiffValues.js +21 -38
  269. package/dist/domain/browserScenarioValues.js +80 -109
  270. package/dist/domain/browserSession.js +4 -7
  271. package/dist/domain/bundleComparison.js +6 -32
  272. package/dist/domain/bytecodeProvider.js +20 -19
  273. package/dist/domain/callPath.js +47 -167
  274. package/dist/domain/callPathSchemas.js +79 -0
  275. package/dist/domain/changedBehavior.js +34 -60
  276. package/dist/domain/completionLedgerGeneration.js +8 -14
  277. package/dist/domain/conformancePackage.js +126 -97
  278. package/dist/domain/conformanceReplay.js +36 -8
  279. package/dist/domain/conformanceTrustGate.js +23 -14
  280. package/dist/domain/customProtocolCapture.js +1 -1
  281. package/dist/domain/electronActiveObservation.js +70 -103
  282. package/dist/domain/electronObservation.js +14 -80
  283. package/dist/domain/electronStaticAnalysisBrowser.js +36 -46
  284. package/dist/domain/electronStaticAnalysisIpc.js +38 -14
  285. package/dist/domain/electronStaticAnalysisNative.js +1 -8
  286. package/dist/domain/electronStaticAnalysisValues.js +10 -17
  287. package/dist/domain/errors.js +33 -54
  288. package/dist/domain/eventProcessTree.js +20 -12
  289. package/dist/domain/evidence.js +2 -10
  290. package/dist/domain/evidenceBundle.js +3 -5
  291. package/dist/domain/evidenceCompletionLedger.js +6 -8
  292. package/dist/domain/functionComparison.js +4 -14
  293. package/dist/domain/functionComparisonNormalization.js +4 -11
  294. package/dist/domain/functionComparisonResults.js +25 -15
  295. package/dist/domain/functionComparisonSchemas.js +49 -33
  296. package/dist/domain/functionDossierEvidence.js +31 -156
  297. package/dist/domain/hopperStartupFailure.js +1 -1
  298. package/dist/domain/hopperValues.js +15 -136
  299. package/dist/domain/interfaceBuilderGraph.js +654 -0
  300. package/dist/domain/javascriptApplicationAnalysis.js +8 -112
  301. package/dist/domain/javascriptApplicationChangeGraph.js +22 -82
  302. package/dist/domain/javascriptApplicationEvidenceSchemas.js +59 -47
  303. package/dist/domain/javascriptApplicationGraph.js +3 -13
  304. package/dist/domain/javascriptApplicationGraphSchemas.js +12 -34
  305. package/dist/domain/javascriptApplicationVersionComparison.js +26 -30
  306. package/dist/domain/javascriptApplicationVersionComparisonSchemas.js +123 -68
  307. package/dist/domain/javascriptApplicationVersionItems.js +120 -53
  308. package/dist/domain/javascriptApplicationVersionKeys.js +24 -11
  309. package/dist/domain/javascriptAstFingerprint.js +25 -58
  310. package/dist/domain/javascriptAstValues.js +9 -0
  311. package/dist/domain/javascriptExportInstrumentation.js +2 -4
  312. package/dist/domain/javascriptExportShapeComparison.js +6 -7
  313. package/dist/domain/javascriptExportShapeComparisonSchemas.js +68 -75
  314. package/dist/domain/javascriptExportShapeSelection.js +17 -19
  315. package/dist/domain/javascriptFeatureSeed.js +20 -12
  316. package/dist/domain/javascriptFeatureTrace.js +13 -67
  317. package/dist/domain/javascriptFeatureTraceSchemas.js +24 -52
  318. package/dist/domain/javascriptFeatureTraversal.js +1 -44
  319. package/dist/domain/javascriptNativeHandoff.js +1 -1
  320. package/dist/domain/javascriptReplay.js +24 -41
  321. package/dist/domain/javascriptRuntimeLoadState.js +3 -8
  322. package/dist/domain/javascriptRuntimeObservation.js +42 -103
  323. package/dist/domain/javascriptRuntimeReconciliation.js +1 -3
  324. package/dist/domain/javascriptRuntimeReconciliationActive.js +8 -17
  325. package/dist/domain/javascriptRuntimeReconciliationGraph.js +10 -23
  326. package/dist/domain/javascriptRuntimeReconciliationMatching.js +18 -12
  327. package/dist/domain/javascriptRuntimeReconciliationParsing.js +16 -45
  328. package/dist/domain/javascriptRuntimeReconciliationResult.js +4 -5
  329. package/dist/domain/javascriptRuntimeReconciliationRuntime.js +8 -12
  330. package/dist/domain/javascriptRuntimeReconciliationSchemas.js +33 -48
  331. package/dist/domain/javascriptRuntimeStaticCandidates.js +3 -3
  332. package/dist/domain/javascriptSemanticAnalysis.js +12 -45
  333. package/dist/domain/javascriptSemanticAsyncEffects.js +1 -9
  334. package/dist/domain/javascriptSemanticCallResolution.js +6 -16
  335. package/dist/domain/javascriptSemanticCalls.js +5 -32
  336. package/dist/domain/javascriptSemanticChildProcesses.js +1 -11
  337. package/dist/domain/javascriptSemanticCoverage.js +11 -0
  338. package/dist/domain/javascriptSemanticDataEffectHelpers.js +1 -8
  339. package/dist/domain/javascriptSemanticDataEffects.js +1 -11
  340. package/dist/domain/javascriptSemanticFingerprints.js +3 -5
  341. package/dist/domain/javascriptSemanticGraphSchemas.js +25 -51
  342. package/dist/domain/javascriptSemanticGraphSerialization.js +2 -13
  343. package/dist/domain/javascriptSemanticIr.js +1 -29
  344. package/dist/domain/javascriptSemanticObjects.js +1 -5
  345. package/dist/domain/javascriptSemanticPrimitives.js +2 -9
  346. package/dist/domain/javascriptSemanticProjection.js +0 -18
  347. package/dist/domain/javascriptSemanticPromises.js +9 -16
  348. package/dist/domain/javascriptSemanticProvenance.js +16 -19
  349. package/dist/domain/javascriptSemanticQuery.js +17 -139
  350. package/dist/domain/javascriptSemanticQueryAssessment.js +9 -37
  351. package/dist/domain/javascriptSemanticQueryIdentity.js +2 -23
  352. package/dist/domain/javascriptSemanticQuerySchemas.js +14 -107
  353. package/dist/domain/javascriptSemanticResources.js +1 -6
  354. package/dist/domain/javascriptSemanticReturns.js +10 -27
  355. package/dist/domain/javascriptSemanticValueTypes.js +1 -0
  356. package/dist/domain/javascriptSemanticValues.js +44 -62
  357. package/dist/domain/javascriptStaticAnalysis.js +21 -43
  358. package/dist/domain/javascriptStaticAnalysisBundler.js +34 -93
  359. package/dist/domain/javascriptStaticAnalysisCalls.js +17 -16
  360. package/dist/domain/javascriptStaticAnalysisFindings.js +3 -19
  361. package/dist/domain/javascriptStaticAnalysisHelpers.js +47 -88
  362. package/dist/domain/javascriptStaticAnalysisState.js +1 -5
  363. package/dist/domain/javascriptStaticAnalysisTypes.js +1 -0
  364. package/dist/domain/jsonShape.js +7 -33
  365. package/dist/domain/localPath.js +7 -0
  366. package/dist/domain/managedApplicationGraph.js +9 -41
  367. package/dist/domain/managedApplicationGraphCoverage.js +24 -156
  368. package/dist/domain/managedApplicationGraphNodes.js +10 -13
  369. package/dist/domain/managedArtifact.js +14 -27
  370. package/dist/domain/managedMemberComparison.js +90 -92
  371. package/dist/domain/managedMemberComparisonCoverage.js +11 -33
  372. package/dist/domain/managedMemberComparisonItems.js +221 -0
  373. package/dist/domain/managedMemberComparisonMatch.js +8 -208
  374. package/dist/domain/managedNativeVerification.js +3 -6
  375. package/dist/domain/managedNativeVerificationMatch.js +55 -59
  376. package/dist/domain/managedNativeVerificationSchemas.js +83 -47
  377. package/dist/domain/managedReconstruction.js +19 -23
  378. package/dist/domain/managedRuntimeCorrelation.js +6 -9
  379. package/dist/domain/nativeApiBoundary.js +2 -7
  380. package/dist/domain/nativeInspection.js +0 -2
  381. package/dist/domain/nativeInvestigationGraph.js +351 -0
  382. package/dist/domain/nativeValueFlow.js +61 -0
  383. package/dist/domain/nodeRuntimeCharacterization.js +1 -5
  384. package/dist/domain/objcSwiftMetadata.js +254 -0
  385. package/dist/domain/peInspection.js +1 -1
  386. package/dist/domain/permissionPolicy.js +13 -0
  387. package/dist/domain/processCapture.js +76 -113
  388. package/dist/domain/processCaptureExample.js +68 -0
  389. package/dist/domain/processCaptureParsing.js +21 -0
  390. package/dist/domain/processCaptureReactiveSchema.js +68 -0
  391. package/dist/domain/processCaptureValidation.js +1 -7
  392. package/dist/domain/processComparison.js +3 -12
  393. package/dist/domain/processReactiveMatching.js +29 -50
  394. package/dist/domain/processReactiveRuntime.js +4 -8
  395. package/dist/domain/processReactiveScenario.js +28 -94
  396. package/dist/domain/processReactiveScenarioPreflight.js +5 -30
  397. package/dist/domain/processReactiveTransition.js +33 -18
  398. package/dist/domain/processScenario.js +56 -90
  399. package/dist/domain/processTraceComparison.js +0 -8
  400. package/dist/domain/processTraceEvaluation.js +14 -4
  401. package/dist/domain/processTraceSpecification.js +11 -17
  402. package/dist/domain/protocolCapture.js +3 -3
  403. package/dist/domain/reconstructionCoverage.js +62 -129
  404. package/dist/domain/reconstructionCoverageEvaluation.js +17 -17
  405. package/dist/domain/reconstructionObligationLedgerSchemas.js +45 -72
  406. package/dist/domain/reconstructionReadiness.js +1 -2
  407. package/dist/domain/reconstructionReadinessSchemas.js +36 -38
  408. package/dist/domain/reconstructionUnknowns.js +3 -3
  409. package/dist/domain/reconstructionVerification.js +13 -47
  410. package/dist/domain/reconstructionVerificationSchemas.js +50 -38
  411. package/dist/domain/referenceSourceGraph.js +53 -61
  412. package/dist/domain/referenceSourceImportParsing.js +1 -5
  413. package/dist/domain/replayMachine.js +19 -31
  414. package/dist/domain/replayMachineRun.js +15 -63
  415. package/dist/domain/replayMachineRuntime.js +41 -41
  416. package/dist/domain/replayMachineValues.js +84 -0
  417. package/dist/domain/residualUnknown.js +25 -30
  418. package/dist/domain/runtimeCharacterization.js +15 -16
  419. package/dist/domain/runtimeIdentification.js +48 -47
  420. package/dist/domain/sourceToBundleComparison.js +9 -85
  421. package/dist/domain/sourceToBundleComparisonSchemas.js +17 -42
  422. package/dist/domain/sourceToBundleSignals.js +4 -15
  423. package/dist/domain/staticRuntimeCorrelation.js +37 -49
  424. package/dist/domain/symbolAnalysis.js +10 -19
  425. package/dist/domain/unicodeCodePointOrder.js +12 -0
  426. package/dist/domain/webBundleAnalysis.js +70 -99
  427. package/dist/domain/webBundleAnalyzer.js +2 -4
  428. package/dist/domain/webBundleAnalyzerAst.js +0 -13
  429. package/dist/domain/webBundleAnalyzerInspection.js +26 -52
  430. package/dist/domain/webBundleAnalyzerResult.js +7 -24
  431. package/dist/domain/webCaptureDiff.js +33 -73
  432. package/dist/domain/webCaptureDiffSchemas.js +86 -0
  433. package/dist/domain/webContentArtifact.js +1 -10
  434. package/dist/domain/webMcpDiscovery.js +3 -14
  435. package/dist/domain/webScreenshot.js +58 -34
  436. package/dist/domain/zipPackageFormat.js +7 -0
  437. package/dist/dotnet/ManagedArtifactInspector.js +17 -50
  438. package/dist/dotnet/ManagedMemberInspector.js +27 -58
  439. package/dist/dotnet/ManagedMemberInspectorCore.js +14 -51
  440. package/dist/dotnet/ManagedMemberInstructionDecoder.js +2 -2
  441. package/dist/dotnet/ManagedMemberRows.js +16 -16
  442. package/dist/dotnet/ManagedMetadataHeaps.js +26 -8
  443. package/dist/dotnet/ManagedMetadataInventory.js +21 -30
  444. package/dist/dotnet/ManagedMetadataInventoryRows.js +57 -63
  445. package/dist/dotnet/ManagedMetadataLayout.js +3 -5
  446. package/dist/dotnet/ManagedMethodBodyReader.js +5 -30
  447. package/dist/dotnet/ManagedNativeBoundaryHelpers.js +19 -49
  448. package/dist/dotnet/ManagedNativeBoundaryInspector.js +13 -41
  449. package/dist/dotnet/ManagedPeReader.js +2 -2
  450. package/dist/dotnet/ManagedStaticProvider.js +13 -71
  451. package/dist/generatedMcpToolCatalog.js +1 -1
  452. package/dist/generatedPackageMetadata.js +1 -1
  453. package/dist/ghidra/GhidraAnalysisProfile.js +3 -8
  454. package/dist/ghidra/GhidraClient.js +4 -12
  455. package/dist/ghidra/GhidraClientWire.js +9 -5
  456. package/dist/ghidra/GhidraDefaults.js +0 -18
  457. package/dist/ghidra/GhidraDiagnostics.js +0 -2
  458. package/dist/ghidra/GhidraDoctor.js +16 -12
  459. package/dist/ghidra/GhidraFunctionValues.js +65 -108
  460. package/dist/ghidra/GhidraInstallation.js +98 -42
  461. package/dist/ghidra/GhidraInventoryValues.js +16 -85
  462. package/dist/ghidra/GhidraLauncher.js +0 -8
  463. package/dist/ghidra/GhidraProvider.js +15 -22
  464. package/dist/ghidra/GhidraProviderCapabilities.js +6 -47
  465. package/dist/ghidra/GhidraRequestQueue.js +6 -30
  466. package/dist/ghidra/GhidraResponseBuffer.js +1 -7
  467. package/dist/ghidra/GhidraSessionValues.js +0 -2
  468. package/dist/ghidra/GhidraTransport.js +4 -7
  469. package/dist/ghidra/protocol.js +2 -2
  470. package/dist/hopper/BridgeLauncher.js +112 -36
  471. package/dist/hopper/HopperAnalysisProfile.js +1 -1
  472. package/dist/hopper/HopperCleanup.js +6 -3
  473. package/dist/hopper/HopperClient.js +4 -7
  474. package/dist/hopper/HopperProcessDiagnostic.js +2 -2
  475. package/dist/hopper/HopperProvider.js +0 -16
  476. package/dist/hopper/HopperRequestQueue.js +21 -40
  477. package/dist/hopper/HopperResponseStream.js +1 -9
  478. package/dist/hopper/HopperSessionValues.js +3 -2
  479. package/dist/hopper/HopperTargetLease.js +119 -0
  480. package/dist/hopper/LinuxPrivateDisplayDiagnostic.js +24 -31
  481. package/dist/hopper/LinuxPrivateDisplayProbe.js +5 -16
  482. package/dist/hopper/protocol.js +6 -4
  483. package/dist/main/reload.js +0 -3
  484. package/dist/main/shutdown.js +1 -1
  485. package/dist/main/state.js +0 -9
  486. package/dist/main/transport.js +0 -5
  487. package/dist/mcpDoctor.js +25 -45
  488. package/dist/native/CommandRunner.js +18 -25
  489. package/dist/native/NativeMacOSProvider.js +13 -38
  490. package/dist/native/NativeMachoInspection.js +1 -1
  491. package/dist/process/BoundedFileBytes.js +17 -0
  492. package/dist/process/ExecFileOutput.js +11 -0
  493. package/dist/process/PendingOperations.js +8 -6
  494. package/dist/process/ProcessOwnership.js +3 -2
  495. package/dist/process/ProcessOwnershipObservation.js +0 -1
  496. package/dist/process/ProviderProcess.js +7 -28
  497. package/dist/reference/ReferenceSourceReader.js +8 -24
  498. package/dist/reference/ReferenceSourceReaderEntries.js +11 -39
  499. package/dist/reference/ReferenceSourceReaderFile.js +13 -31
  500. package/dist/reference/ReferenceSourceReaderPaths.js +3 -18
  501. package/dist/reference/ReferenceSourceReaderValidate.js +3 -6
  502. package/dist/replay/JavaScriptReplayWorker.js +3 -5
  503. package/dist/replay/LinuxJavaScriptReplayRunner.js +33 -29
  504. package/dist/replay/LinuxJavaScriptReplaySandbox.js +0 -19
  505. package/dist/replay/LinuxRuntimeClosure.js +1 -3
  506. package/dist/replay/ReplayOutcome.js +1 -3
  507. package/dist/replay/ReplayProcessLifecycle.js +32 -7
  508. package/dist/replay/ReplaySeccompFile.js +29 -0
  509. package/dist/replay/ReplayWorkerProtocol.js +0 -2
  510. package/dist/replay/SystemJavaScriptReplayHost.js +45 -74
  511. package/dist/server/ProcessCaptureElicitation.js +4 -8
  512. package/dist/server/createServer.js +6 -44
  513. package/dist/server/promptCompletion.js +37 -61
  514. package/dist/server/recordDerivedEvidence.js +1 -1
  515. package/dist/server/registerApplicationTools/characterization.js +4 -8
  516. package/dist/server/registerApplicationTools/compareExportShapes.js +5 -10
  517. package/dist/server/registerApplicationTools/compareSourceToBundle.js +6 -10
  518. package/dist/server/registerApplicationTools/compareVersions.js +5 -10
  519. package/dist/server/registerApplicationTools/controlledReplay.js +3 -5
  520. package/dist/server/registerApplicationTools/coverage.js +6 -71
  521. package/dist/server/registerApplicationTools/helpers.js +1 -13
  522. package/dist/server/registerApplicationTools/obligationLedger.js +3 -2
  523. package/dist/server/registerApplicationTools/traceFeature.js +5 -9
  524. package/dist/server/registerApplicationTools/traceSemantics.js +5 -8
  525. package/dist/server/registerApplicationTools.js +0 -2
  526. package/dist/server/registerArtifactComparisonTool.js +23 -27
  527. package/dist/server/registerBrowserScenarioTool.js +4 -4
  528. package/dist/server/registerBrowserTools.js +5 -8
  529. package/dist/server/registerBundleComparisonTool.js +5 -7
  530. package/dist/server/registerCloseLifecycleTool.js +2 -16
  531. package/dist/server/registerElectronTools.js +10 -29
  532. package/dist/server/registerEnhancedTools.js +10 -11
  533. package/dist/server/registerEvidenceTools.js +15 -22
  534. package/dist/server/registerFunctionComparisonTool.js +30 -25
  535. package/dist/server/registerInvestigationTools/helpers.js +3 -32
  536. package/dist/server/registerInvestigationTools.js +20 -116
  537. package/dist/server/registerJavaScriptRuntimeObservationTools.js +6 -4
  538. package/dist/server/registerManagedWorkflowTools/compareManagedMembers.js +15 -17
  539. package/dist/server/registerManagedWorkflowTools/evidence.js +19 -35
  540. package/dist/server/registerManagedWorkflowTools/importManagedReconstruction.js +3 -8
  541. package/dist/server/registerManagedWorkflowTools/planManagedRuntimeCorrelation.js +3 -8
  542. package/dist/server/registerManagedWorkflowTools/projectManagedApplicationGraph.js +10 -14
  543. package/dist/server/registerManagedWorkflowTools/verifyManagedNativeBoundaries.js +9 -15
  544. package/dist/server/registerOfficialTools.js +1 -43
  545. package/dist/server/registerProcessComparisonTool.js +33 -23
  546. package/dist/server/registerPrompts.js +19 -17
  547. package/dist/server/registerSessionRecordTools.js +10 -156
  548. package/dist/server/registerSessionStatusTool.js +6 -69
  549. package/dist/server/registerSessionTools.js +10 -51
  550. package/dist/server/sessionAvailabilityPolicy.js +0 -2
  551. package/dist/server/sessionEvidence.js +9 -15
  552. package/dist/server/sessionToolPolicies.js +0 -8
  553. package/dist/server/toolResult.js +14 -50
  554. package/dist/serverIdentity.js +0 -20
  555. package/install.sh +1 -1
  556. package/package.json +11 -7
  557. package/scripts/electron-active-hook.cjs +23 -55
  558. package/scripts/hopper-demo-x11.py +13 -32
  559. package/skills/reverse-engineer-anything/SKILL.md +47 -12
  560. package/skills/reverse-engineer-anything/references/evidence-workflows.md +6 -4
  561. package/skills/reverse-engineer-anything/references/javascript-applications.md +13 -13
  562. package/skills/reverse-engineer-anything/references/native-and-artifacts.md +12 -8
  563. package/dist/application/ApplicationWorkflowEvidenceResolver.js +0 -188
  564. package/dist/application/BoundedJsonFiles.js +0 -86
  565. package/dist/application/CrossVersionInventory.js +0 -129
  566. package/dist/application/CrossVersionInvestigation.js +0 -301
  567. package/dist/application/CrossVersionInvestigationCollections.js +0 -23
  568. package/dist/application/CrossVersionInvestigationEvidence.js +0 -64
  569. package/dist/application/CrossVersionInvestigationReplay.js +0 -170
  570. package/dist/application/DeferredFileAuthorization.js +0 -61
  571. package/dist/application/DoctorProjection.js +0 -43
  572. package/dist/application/EnhancedToolPagination.js +0 -22
  573. package/dist/application/EvidenceReferenceResolver.js +0 -26
  574. package/dist/application/InvestigationWorkspaceStore.js +0 -204
  575. package/dist/application/ProcessPairedExperiment.js +0 -72
  576. package/dist/application/ReconstructionCoverageWorkspaceStore.js +0 -31
  577. package/dist/application/ReconstructionReadinessService.js +0 -48
  578. package/dist/cliInvestigationCommands.js +0 -173
  579. package/dist/domain/boundedCartesianProjection.js +0 -15
  580. package/dist/domain/investigationWorkspace.js +0 -347
  581. package/dist/domain/jsonLimits.js +0 -26
  582. package/dist/domain/knownPageCoverage.js +0 -29
  583. package/dist/domain/processPairedExperiment.js +0 -128
  584. package/dist/server/javascriptApplicationResult.js +0 -106
  585. package/dist/server/permissionFailure.js +0 -12
  586. package/dist/server/registerApplicationTools/readiness.js +0 -50
  587. package/dist/server/registerEvidenceResources.js +0 -315
  588. package/dist/server/registerJavaScriptApplicationGraphResource.js +0 -65
  589. package/dist/server/registerReconstructionObligationLedgerResource.js +0 -32
  590. package/dist/server/registerReconstructionReadinessResource.js +0 -32
@@ -1,170 +1,38 @@
1
- import { assessKnownPageCoverage, } from "./knownPageCoverage.js";
2
- /** Complete application-graph fact coverage. */
3
- const completeManagedGraphCoverage = () => ({
1
+ const completeCoverage = () => ({
4
2
  status: "complete",
5
3
  truncated: false,
6
4
  omitted_count: 0,
7
5
  limits: [],
8
6
  });
9
- /** Translate one managed parser coverage state without inventing omissions. */
7
+ /** Preserve the source parser's coverage state on projected observations. */
10
8
  export const managedSourceCoverage = (state) => state === "complete"
11
- ? completeManagedGraphCoverage()
9
+ ? completeCoverage()
12
10
  : {
13
11
  status: state,
14
12
  truncated: false,
15
13
  omitted_count: null,
16
14
  limits: [],
17
15
  };
18
- /** Preserve one known source page's coverage on a projected graph fact. */
19
- export const managedSourcePageCoverage = (state, page, scope) => {
20
- if (state !== "complete")
21
- return managedSourceCoverage(state);
22
- const assessment = assessKnownPageCoverage(page);
23
- if (assessment.complete)
24
- return completeManagedGraphCoverage();
25
- return {
26
- status: "partial",
27
- truncated: assessment.omittedCount > 0,
28
- omitted_count: assessment.omittedCount,
29
- limits: assessment.omittedCount > 0
30
- ? [
31
- { name: `${scope}_offset`, value: page.offset, unit: "items" },
32
- { name: `${scope}_limit`, value: page.limit, unit: "items" },
33
- ]
34
- : [],
35
- };
36
- };
37
- /** Assess exact source-page and local-limit omissions for graph projection. */
38
- export const assessManagedGraphOmissions = (sources, limits) => {
39
- const { typeAssessment, methodAssessment, fieldAssessment } = assessMemberPages(sources.members, limits);
40
- const { pinvokeAssessment, implementationAssessment } = assessBoundaryPages(sources.boundaries, limits);
41
- const pageAssessments = [
42
- typeAssessment,
43
- methodAssessment,
44
- fieldAssessment,
45
- pinvokeAssessment,
46
- implementationAssessment,
47
- ];
48
- const unknownInputCoverage = hasUnknownInputCoverage(sources);
49
- return {
50
- limits,
51
- unknownInputCoverage,
52
- partialInput: pageAssessments.some(({ sourceComplete }) => !sourceComplete) ||
53
- unknownInputCoverage,
54
- types: typeAssessment.omittedCount,
55
- methods: methodAssessment.omittedCount,
56
- fields: fieldAssessment.omittedCount,
57
- pinvokeImports: pinvokeAssessment.omittedCount,
58
- nativeImplementations: implementationAssessment.omittedCount,
59
- sourceLimits: [
60
- ...memberSourceLimits(sources.members),
61
- ...boundarySourceLimits(sources.boundaries),
62
- ],
63
- };
64
- };
65
- /** Project aggregate omissions into the application graph coverage contract. */
66
- export const managedGraphEvidenceCoverage = (omissions) => {
67
- const omitted = totalManagedGraphOmitted(omissions);
68
- if (omissions.unknownInputCoverage)
69
- return {
70
- status: "partial",
71
- truncated: false,
72
- omitted_count: null,
73
- limits: [],
74
- };
75
- return {
76
- status: omitted === 0 && !omissions.partialInput ? "complete" : "partial",
77
- truncated: omitted > 0,
78
- omitted_count: omitted > 0 ? omitted : omissions.partialInput ? null : 0,
79
- limits: omitted > 0 ? projectionLimits(omissions) : [],
80
- };
81
- };
82
- /** Project aggregate omissions into the managed workflow result contract. */
83
- export const managedGraphResultCoverage = (omissions) => {
84
- const omitted = totalManagedGraphOmitted(omissions);
85
- return {
86
- status: omissions.unknownInputCoverage
87
- ? "partial"
88
- : omitted > 0
89
- ? "truncated"
90
- : omissions.partialInput
91
- ? "partial"
92
- : "complete-within-inputs",
93
- omitted_types: omissions.types,
94
- omitted_methods: omissions.methods,
95
- omitted_fields: omissions.fields,
96
- omitted_pinvoke_imports: omissions.pinvokeImports,
97
- omitted_native_implementations: omissions.nativeImplementations,
98
- };
99
- };
100
- /** Sum all exact entity omissions represented by the managed graph result. */
101
- export const totalManagedGraphOmitted = (omissions) => omissions.types +
102
- omissions.methods +
103
- omissions.fields +
104
- omissions.pinvokeImports +
105
- omissions.nativeImplementations;
106
- const COMPLETE_EMPTY_PAGE = {
107
- complete: true,
108
- sourceComplete: true,
109
- includedCount: 0,
110
- omittedCount: 0,
111
- sourceOmittedCount: 0,
112
- };
113
- const assessMemberPages = (members, limits) => members === null
114
- ? {
115
- typeAssessment: COMPLETE_EMPTY_PAGE,
116
- methodAssessment: COMPLETE_EMPTY_PAGE,
117
- fieldAssessment: COMPLETE_EMPTY_PAGE,
118
- }
119
- : {
120
- typeAssessment: assessKnownPageCoverage(members.types, limits.max_types),
121
- methodAssessment: assessKnownPageCoverage(members.methods, limits.max_methods),
122
- fieldAssessment: assessKnownPageCoverage(members.fields, limits.max_fields),
123
- };
124
- const assessBoundaryPages = (boundaries, limits) => boundaries === null
16
+ /** Determine whether any supplied managed inspection was partial. */
17
+ export const assessManagedGraphOmissions = (sources) => ({
18
+ partialInput: [
19
+ sources.members?.coverage.state,
20
+ sources.boundaries?.coverage.state,
21
+ sources.artifact?.coverage.state,
22
+ ].some((state) => state !== undefined && state !== "complete"),
23
+ });
24
+ /** Derive graph coverage solely from the coverage of supplied source evidence. */
25
+ export const managedGraphEvidenceCoverage = (omissions) => omissions.partialInput
125
26
  ? {
126
- pinvokeAssessment: COMPLETE_EMPTY_PAGE,
127
- implementationAssessment: COMPLETE_EMPTY_PAGE,
27
+ status: "partial",
28
+ truncated: false,
29
+ omitted_count: null,
30
+ limits: [],
128
31
  }
129
- : {
130
- pinvokeAssessment: assessKnownPageCoverage(boundaries.pinvoke_imports, limits.max_pinvoke_imports),
131
- implementationAssessment: assessKnownPageCoverage(boundaries.native_implementations, limits.max_native_implementations),
132
- };
133
- const hasUnknownInputCoverage = (sources) => [
134
- sources.members?.coverage.state,
135
- sources.boundaries?.coverage.state,
136
- sources.artifact?.coverage.state,
137
- ].some((state) => state !== undefined && state !== "complete");
138
- const pageLimits = (name, page) => [
139
- { name: `${name}_offset`, value: page.offset, unit: "items" },
140
- { name: `${name}_limit`, value: page.limit, unit: "items" },
141
- ];
142
- const memberSourceLimits = (members) => members === null
143
- ? []
144
- : [
145
- ...pageLimits("source_types", members.types),
146
- ...pageLimits("source_methods", members.methods),
147
- ...pageLimits("source_fields", members.fields),
148
- ];
149
- const boundarySourceLimits = (boundaries) => boundaries === null
150
- ? []
151
- : [
152
- ...pageLimits("source_pinvoke_imports", boundaries.pinvoke_imports),
153
- ...pageLimits("source_native_implementations", boundaries.native_implementations),
154
- ];
155
- const projectionLimits = (omissions) => [
156
- { name: "max_types", value: omissions.limits.max_types, unit: "items" },
157
- { name: "max_methods", value: omissions.limits.max_methods, unit: "items" },
158
- { name: "max_fields", value: omissions.limits.max_fields, unit: "items" },
159
- {
160
- name: "max_pinvoke_imports",
161
- value: omissions.limits.max_pinvoke_imports,
162
- unit: "items",
163
- },
164
- {
165
- name: "max_native_implementations",
166
- value: omissions.limits.max_native_implementations,
167
- unit: "items",
168
- },
169
- ...omissions.sourceLimits,
170
- ];
32
+ : completeCoverage();
33
+ /** Report whether all supplied source evidence was complete. */
34
+ export const managedGraphResultCoverage = (omissions) => ({
35
+ status: omissions.partialInput
36
+ ? "partial"
37
+ : "complete-within-inputs",
38
+ });
@@ -1,6 +1,6 @@
1
1
  import { basename } from "node:path";
2
2
  import { createJavaScriptApplicationEdge, createJavaScriptApplicationNode, } from "./javascriptApplicationGraph.js";
3
- import { managedSourceCoverage, managedSourcePageCoverage, } from "./managedApplicationGraphCoverage.js";
3
+ import { managedSourceCoverage } from "./managedApplicationGraphCoverage.js";
4
4
  import {} from "./managedArtifact.js";
5
5
  import { moduleCoverageState } from "./managedApplicationGraphNodeCoverage.js";
6
6
  /** Add the root managed artifact node to the graph state. */
@@ -82,16 +82,14 @@ export const addArtifactIdentityNodes = (state, artifactNode, parsed) => {
82
82
  }
83
83
  };
84
84
  /** Add managed type, method, and field nodes from member evidence. */
85
- export const addMemberNodes = (state, artifactNode, parsed, limits) => {
85
+ export const addMemberNodes = (state, artifactNode, parsed) => {
86
86
  const members = parsed.members?.result;
87
87
  if (members === undefined)
88
88
  return { types: 0, methods: 0, fields: 0 };
89
- const types = members.types.items.slice(0, limits.max_types);
90
- const methods = members.methods.items.slice(0, limits.max_methods);
91
- const fields = members.fields.items.slice(0, limits.max_fields);
92
- const typeCoverage = managedSourcePageCoverage(members.coverage.state, members.types, "types");
93
- const methodCoverage = managedSourcePageCoverage(members.coverage.state, members.methods, "methods");
94
- const fieldCoverage = managedSourcePageCoverage(members.coverage.state, members.fields, "fields");
89
+ const { types, methods, fields } = members;
90
+ const typeCoverage = managedSourceCoverage(members.coverage.state);
91
+ const methodCoverage = managedSourceCoverage(members.coverage.state);
92
+ const fieldCoverage = managedSourceCoverage(members.coverage.state);
95
93
  for (const type of types) {
96
94
  const node = typeNode(state, type, typeCoverage);
97
95
  state.nodes.push(node);
@@ -198,14 +196,13 @@ const fieldNode = (state, field, coverage) => createJavaScriptApplicationNode({
198
196
  ],
199
197
  });
200
198
  /** Add P/Invoke import and native implementation boundary nodes. */
201
- export const addBoundaryNodes = (state, artifactNode, parsed, limits) => {
199
+ export const addBoundaryNodes = (state, artifactNode, parsed) => {
202
200
  const boundaries = parsed.boundaries?.result;
203
201
  if (boundaries === undefined)
204
202
  return { pinvoke_imports: 0, native_implementations: 0 };
205
- const pinvokes = boundaries.pinvoke_imports.items.slice(0, limits.max_pinvoke_imports);
206
- const implementations = boundaries.native_implementations.items.slice(0, limits.max_native_implementations);
207
- const pinvokeCoverage = managedSourcePageCoverage(boundaries.coverage.state, boundaries.pinvoke_imports, "pinvoke_imports");
208
- const implementationCoverage = managedSourcePageCoverage(boundaries.coverage.state, boundaries.native_implementations, "native_implementations");
203
+ const { pinvoke_imports: pinvokes, native_implementations: implementations } = boundaries;
204
+ const pinvokeCoverage = managedSourceCoverage(boundaries.coverage.state);
205
+ const implementationCoverage = managedSourceCoverage(boundaries.coverage.state);
209
206
  for (const pinvoke of pinvokes) {
210
207
  const node = pinvokeNode(state, pinvoke, pinvokeCoverage);
211
208
  state.nodes.push(node);
@@ -6,15 +6,6 @@ const offsetSchema = z.number().int().min(0);
6
6
  export const cliMetadataGuidSchema = z
7
7
  .string()
8
8
  .regex(/^[0-9a-fA-F]{8}(?:-[0-9a-fA-F]{4}){3}-[0-9a-fA-F]{12}$/u);
9
- const managedPage = (item) => z.object({
10
- items: z.array(item),
11
- offset: offsetSchema,
12
- limit: z.number().int().min(1),
13
- total: z.number().int().min(0),
14
- returned: z.number().int().min(0),
15
- dropped: z.number().int().min(0),
16
- complete: z.boolean(),
17
- });
18
9
  const publicKeyIdentitySchema = z.object({
19
10
  kind: z.enum(["none", "public-key", "public-key-token"]),
20
11
  byte_length: z.number().int().min(0),
@@ -146,7 +137,7 @@ const managedInstructionAnchorSchema = z.object({
146
137
  operand: z.string().nullable(),
147
138
  });
148
139
  const managedMethodBodySchema = z.object({
149
- status: z.enum(["present", "partial", "absent", "malformed", "too-large"]),
140
+ status: z.enum(["present", "partial", "absent", "malformed"]),
150
141
  header_format: z.enum(["tiny", "fat", "none", "unknown"]),
151
142
  rva: z.number().int().min(0).max(0xffff_ffff),
152
143
  file_offset: offsetSchema.nullable(),
@@ -277,7 +268,6 @@ const managedParseIssueSchema = z.object({
277
268
  "invalid-blob",
278
269
  "invalid-guid",
279
270
  "invalid-resource",
280
- "limit-exceeded",
281
271
  ]),
282
272
  scope: z.string().min(1),
283
273
  offset: offsetSchema.nullable(),
@@ -285,7 +275,6 @@ const managedParseIssueSchema = z.object({
285
275
  });
286
276
  /** Provider-neutral, execution-free PE/CLI triage and identity result. */
287
277
  export const managedArtifactInspectionSchema = z.object({
288
- schema_version: z.literal(1),
289
278
  artifact: z.object({
290
279
  path: z.string().min(1),
291
280
  sha256: digestSchema,
@@ -297,7 +286,7 @@ export const managedArtifactInspectionSchema = z.object({
297
286
  machine_hex: z.string().regex(/^0x[0-9a-f]{4}$/u),
298
287
  architecture: z.enum(["x86", "x86_64", "arm", "arm64"]),
299
288
  optional_header: z.enum(["pe32", "pe32-plus"]),
300
- section_count: z.number().int().min(1).max(96),
289
+ section_count: z.number().int().min(1).max(0xffff),
301
290
  characteristics: z.number().int().min(0).max(0xffff),
302
291
  cli: z
303
292
  .object({
@@ -364,9 +353,9 @@ export const managedArtifactInspectionSchema = z.object({
364
353
  module: moduleIdentitySchema.nullable(),
365
354
  assembly: assemblyIdentitySchema.nullable(),
366
355
  target_frameworks: z.array(z.string()),
367
- references: managedPage(assemblyReferenceSchema),
368
- resources: managedPage(managedResourceSchema),
369
- attributes: managedPage(customAttributeSchema),
356
+ references: z.array(assemblyReferenceSchema),
357
+ resources: z.array(managedResourceSchema),
358
+ attributes: z.array(customAttributeSchema),
370
359
  coverage: z.object({
371
360
  state: z.enum(["complete", "partial", "unavailable"]),
372
361
  issues: z.array(managedParseIssueSchema),
@@ -375,7 +364,6 @@ export const managedArtifactInspectionSchema = z.object({
375
364
  });
376
365
  /** Provider-neutral, execution-free metadata/signature/IL member inspection. */
377
366
  export const managedMemberInspectionSchema = z.object({
378
- schema_version: z.literal(1),
379
367
  artifact: z.object({
380
368
  path: z.string().min(1),
381
369
  sha256: digestSchema,
@@ -393,12 +381,12 @@ export const managedMemberInspectionSchema = z.object({
393
381
  requires_artifact_sha256: digestSchema,
394
382
  requires_mvid: cliMetadataGuidSchema.nullable(),
395
383
  }),
396
- types: managedPage(managedTypeSchema),
397
- fields: managedPage(managedFieldSchema),
398
- methods: managedPage(managedMethodSchema),
399
- member_refs: managedPage(managedMemberReferenceSchema),
400
- call_edges: managedPage(managedCallEdgeSchema),
401
- field_accesses: managedPage(managedFieldAccessSchema),
384
+ types: z.array(managedTypeSchema),
385
+ fields: z.array(managedFieldSchema),
386
+ methods: z.array(managedMethodSchema),
387
+ member_refs: z.array(managedMemberReferenceSchema),
388
+ call_edges: z.array(managedCallEdgeSchema),
389
+ field_accesses: z.array(managedFieldAccessSchema),
402
390
  coverage: z.object({
403
391
  state: z.enum(["complete", "partial", "unavailable"]),
404
392
  issues: z.array(managedParseIssueSchema),
@@ -407,7 +395,6 @@ export const managedMemberInspectionSchema = z.object({
407
395
  });
408
396
  /** Provider-neutral managed/native boundary observations from PE/CLI metadata. */
409
397
  export const managedNativeBoundaryInspectionSchema = z.object({
410
- schema_version: z.literal(1),
411
398
  artifact: z.object({
412
399
  path: z.string().min(1),
413
400
  sha256: digestSchema,
@@ -434,9 +421,9 @@ export const managedNativeBoundaryInspectionSchema = z.object({
434
421
  managed_native_header_rva: z.number().int().min(0).max(0xffff_ffff),
435
422
  managed_native_header_size: z.number().int().min(0).max(0xffff_ffff),
436
423
  }),
437
- module_refs: managedPage(managedModuleReferenceSchema),
438
- pinvoke_imports: managedPage(managedNativeImportSchema),
439
- native_implementations: managedPage(managedNativeImplementationSchema),
424
+ module_refs: z.array(managedModuleReferenceSchema),
425
+ pinvoke_imports: z.array(managedNativeImportSchema),
426
+ native_implementations: z.array(managedNativeImplementationSchema),
440
427
  summary: z.object({
441
428
  module_ref_count: z.number().int().min(0),
442
429
  pinvoke_import_count: z.number().int().min(0),
@@ -1,29 +1,18 @@
1
1
  import { z } from "zod";
2
2
  import { evidenceSchema } from "./evidence.js";
3
3
  import { cliMetadataGuidSchema, } from "./managedArtifact.js";
4
- import { assessKnownPageCoverage } from "./knownPageCoverage.js";
5
4
  import { buildComparisonCoverage, buildComparisonMatching, buildComparisonSummary, comparisonLimitations, sideManifest, } from "./managedMemberComparisonCoverage.js";
6
- import { buildFieldItems, buildMethodItems, keyMembers, sha256, } from "./managedMemberComparisonMatch.js";
5
+ import { buildFieldItems, buildMethodItems, } from "./managedMemberComparisonItems.js";
6
+ import { keyMembers, sha256 } from "./managedMemberComparisonMatch.js";
7
7
  const digestSchema = z.string().regex(/^[a-f0-9]{64}$/u);
8
8
  const evidenceIdSchema = z.string().regex(/^ev_[a-f0-9]{64}$/u);
9
9
  const tokenSchema = z.string().regex(/^0x[0-9a-f]{8}$/u);
10
- const boundedTextSchema = z.string().min(1).max(4_096);
11
- const comparisonLimitsSchema = z.strictObject({
12
- max_method_matches: z.number().int().min(1).max(50_000).default(10_000),
13
- max_field_matches: z.number().int().min(0).max(50_000).default(5_000),
14
- max_candidates: z.number().int().min(1).max(500).default(50),
15
- });
16
- /** Two authenticated managed member observations and deterministic bounds. */
10
+ const boundedTextSchema = z.string().min(1);
11
+ /** Two authenticated managed member observations. */
17
12
  export const compareManagedMembersInputSchema = z
18
13
  .strictObject({
19
14
  left: evidenceSchema,
20
15
  right: evidenceSchema,
21
- limits: comparisonLimitsSchema.default({
22
- max_method_matches: 10_000,
23
- max_field_matches: 5_000,
24
- max_candidates: 50,
25
- }),
26
- unknown_registry_approved: z.literal(true).optional(),
27
16
  })
28
17
  .superRefine((input, context) => {
29
18
  if (input.left.evidence_id === input.right.evidence_id)
@@ -33,20 +22,33 @@ export const compareManagedMembersInputSchema = z
33
22
  message: "Managed member Evidence must be distinct",
34
23
  });
35
24
  });
36
- const matchBasisSchema = z.enum([
25
+ const concreteMatchBasisSchema = z.enum([
37
26
  "exact-il-signature",
38
27
  "structural-method-shape",
39
28
  "field-signature",
40
- "none",
41
- ]);
42
- const matchStatusSchema = z.enum(["matched", "unmatched", "ambiguous"]);
43
- const itemStatusSchema = z.enum([
44
- "unchanged",
45
- "changed",
46
- "added",
47
- "removed",
48
- "unknown",
49
29
  ]);
30
+ const candidateTokensSchema = z.array(tokenSchema).min(1);
31
+ const matchedComparisonSchema = z.strictObject({
32
+ status: z.literal("matched"),
33
+ basis: concreteMatchBasisSchema,
34
+ confidence: z.enum(["exact", "high"]),
35
+ candidate_left_tokens: z.tuple([]),
36
+ candidate_right_tokens: z.tuple([]),
37
+ });
38
+ const unmatchedComparisonSchema = z.strictObject({
39
+ status: z.literal("unmatched"),
40
+ basis: z.literal("none"),
41
+ confidence: z.literal("unknown"),
42
+ candidate_left_tokens: z.tuple([]),
43
+ candidate_right_tokens: z.tuple([]),
44
+ });
45
+ const ambiguousComparisonSchema = z.strictObject({
46
+ status: z.literal("ambiguous"),
47
+ basis: concreteMatchBasisSchema,
48
+ confidence: z.literal("unknown"),
49
+ candidate_left_tokens: candidateTokensSchema,
50
+ candidate_right_tokens: candidateTokensSchema,
51
+ });
50
52
  const memberIdentitySchema = z.strictObject({
51
53
  token: tokenSchema,
52
54
  declaring_type: z.string().nullable(),
@@ -54,20 +56,44 @@ const memberIdentitySchema = z.strictObject({
54
56
  signature_sha256: digestSchema,
55
57
  normalized_il_sha256: digestSchema.nullable(),
56
58
  });
57
- const methodComparisonItemSchema = z.strictObject({
58
- item_id: z.string().regex(/^mmc_method_[a-f0-9]{64}$/u),
59
- status: itemStatusSchema,
60
- left: memberIdentitySchema.nullable(),
61
- right: memberIdentitySchema.nullable(),
62
- match: z.strictObject({
63
- status: matchStatusSchema,
64
- basis: matchBasisSchema,
65
- confidence: z.enum(["exact", "high", "unknown"]),
66
- candidate_left_tokens: z.array(tokenSchema).max(500),
67
- candidate_right_tokens: z.array(tokenSchema).max(500),
59
+ const comparisonItemSchema = (base, identity) => z.union([
60
+ z.strictObject({
61
+ ...base,
62
+ status: z.enum(["unchanged", "changed"]),
63
+ left: identity,
64
+ right: identity,
65
+ match: matchedComparisonSchema,
66
+ }),
67
+ z.strictObject({
68
+ ...base,
69
+ status: z.enum(["removed", "unknown"]),
70
+ left: identity,
71
+ right: z.null(),
72
+ match: unmatchedComparisonSchema,
73
+ }),
74
+ z.strictObject({
75
+ ...base,
76
+ status: z.enum(["added", "unknown"]),
77
+ left: z.null(),
78
+ right: identity,
79
+ match: unmatchedComparisonSchema,
68
80
  }),
69
- dimensions: z
70
- .array(z.enum([
81
+ z.strictObject({
82
+ ...base,
83
+ status: z.literal("unknown"),
84
+ left: z.null(),
85
+ right: z.null(),
86
+ match: ambiguousComparisonSchema,
87
+ }),
88
+ ]);
89
+ const comparisonItemContextShape = {
90
+ evidence_links: z.array(evidenceIdSchema).length(2),
91
+ limitations: z.array(boundedTextSchema),
92
+ };
93
+ const methodComparisonItemSchema = comparisonItemSchema({
94
+ ...comparisonItemContextShape,
95
+ item_id: z.string().regex(/^mmc_method_[a-f0-9]{64}$/u),
96
+ dimensions: z.array(z.enum([
71
97
  "signature",
72
98
  "cil",
73
99
  "opcode-shape",
@@ -75,33 +101,17 @@ const methodComparisonItemSchema = z.strictObject({
75
101
  "field-shape",
76
102
  "exception-shape",
77
103
  "availability",
78
- ]))
79
- .max(7),
80
- evidence_links: z.array(evidenceIdSchema).length(2),
81
- limitations: z.array(boundedTextSchema).max(100),
82
- });
83
- const fieldComparisonItemSchema = z.strictObject({
104
+ ])),
105
+ }, memberIdentitySchema);
106
+ const fieldComparisonItemSchema = comparisonItemSchema({
107
+ ...comparisonItemContextShape,
84
108
  item_id: z.string().regex(/^mmc_field_[a-f0-9]{64}$/u),
85
- status: itemStatusSchema,
86
- left: memberIdentitySchema.omit({ normalized_il_sha256: true }).nullable(),
87
- right: memberIdentitySchema.omit({ normalized_il_sha256: true }).nullable(),
88
- match: z.strictObject({
89
- status: matchStatusSchema,
90
- basis: matchBasisSchema,
91
- confidence: z.enum(["exact", "high", "unknown"]),
92
- candidate_left_tokens: z.array(tokenSchema).max(500),
93
- candidate_right_tokens: z.array(tokenSchema).max(500),
94
- }),
95
- evidence_links: z.array(evidenceIdSchema).length(2),
96
- limitations: z.array(boundedTextSchema).max(100),
97
- });
109
+ }, memberIdentitySchema.omit({ normalized_il_sha256: true }));
98
110
  /** Obfuscation-resistant, execution-free managed member comparison. */
99
111
  export const managedMemberComparisonResultSchema = z.strictObject({
100
- schema_version: z.literal(1),
101
112
  comparison_id: z.string().regex(/^mmc_[a-f0-9]{64}$/u),
102
113
  algorithm: z.strictObject({
103
114
  name: z.literal("rea-managed-member-comparison"),
104
- version: z.literal(1),
105
115
  token_identity: z.literal("build-local"),
106
116
  name_matching: z.literal("not-used"),
107
117
  }),
@@ -137,62 +147,50 @@ export const managedMemberComparisonResultSchema = z.strictObject({
137
147
  ambiguous: z.number().int().min(0),
138
148
  unmatched: z.number().int().min(0),
139
149
  }),
140
- methods: z.array(methodComparisonItemSchema).max(50_000),
141
- fields: z.array(fieldComparisonItemSchema).max(50_000),
150
+ methods: z.array(methodComparisonItemSchema),
151
+ fields: z.array(fieldComparisonItemSchema),
142
152
  coverage: z.strictObject({
143
- status: z.enum(["complete-within-inputs", "partial", "truncated"]),
153
+ status: z.enum(["complete-within-inputs", "partial"]),
144
154
  left_status: z.enum(["complete", "partial", "unavailable"]),
145
155
  right_status: z.enum(["complete", "partial", "unavailable"]),
146
- omitted_methods: z.number().int().min(0),
147
- omitted_fields: z.number().int().min(0),
148
- omitted_candidates: z.number().int().min(0),
149
156
  }),
150
157
  evidence_links: z.array(evidenceIdSchema).length(2),
151
- limitations: z.array(boundedTextSchema).max(1_000),
158
+ limitations: z.array(boundedTextSchema),
152
159
  });
153
160
  /** Compare two parsed managed member observations without name-based matching. */
154
- export const compareManagedMembers = (left, right, limits) => {
155
- const leftMethodPage = assessKnownPageCoverage(left.result.methods);
156
- const rightMethodPage = assessKnownPageCoverage(right.result.methods);
157
- const leftFieldPage = assessKnownPageCoverage(left.result.fields);
158
- const rightFieldPage = assessKnownPageCoverage(right.result.fields);
159
- const { methodMatches, fieldMatches } = keyMembers(left, right, limits.max_candidates);
161
+ export const compareManagedMembers = (left, right) => {
162
+ const leftCoverage = {
163
+ sourceComplete: left.result.coverage.state === "complete",
164
+ };
165
+ const rightCoverage = {
166
+ sourceComplete: right.result.coverage.state === "complete",
167
+ };
168
+ const { methodMatches, fieldMatches } = keyMembers(left, right);
160
169
  const itemContext = {
161
170
  leftEvidenceId: left.evidenceId,
162
171
  rightEvidenceId: right.evidenceId,
163
- leftComplete: leftMethodPage.sourceComplete && leftFieldPage.sourceComplete,
164
- rightComplete: rightMethodPage.sourceComplete && rightFieldPage.sourceComplete,
165
- limits,
172
+ leftComplete: leftCoverage.sourceComplete,
173
+ rightComplete: rightCoverage.sourceComplete,
166
174
  };
167
175
  const methodItems = buildMethodItems(methodMatches, itemContext);
168
176
  const fieldItems = buildFieldItems(fieldMatches, itemContext);
169
- const allItems = [...methodItems.items, ...fieldItems.items];
177
+ const allItems = [...methodItems, ...fieldItems];
170
178
  const summary = buildComparisonSummary(allItems);
171
- const matching = buildComparisonMatching(methodItems.items, fieldItems.items);
179
+ const matching = buildComparisonMatching(methodItems, fieldItems);
172
180
  const coverage = buildComparisonCoverage({
173
181
  left: left.result,
174
182
  right: right.result,
175
- leftMethodPage,
176
- rightMethodPage,
177
- leftFieldPage,
178
- rightFieldPage,
179
- omittedMethodItems: methodItems.omitted,
180
- omittedFieldItems: fieldItems.omitted,
181
- omittedCandidates: methodMatches.omittedCandidates + fieldMatches.omittedCandidates,
182
183
  });
183
- const limitations = comparisonLimitations(left.result, right.result, coverage.omitted_methods + coverage.omitted_fields, coverage.omitted_candidates);
184
+ const limitations = comparisonLimitations(left.result, right.result);
184
185
  const result = {
185
- schema_version: 1,
186
186
  comparison_id: `mmc_${sha256({
187
187
  left: left.evidenceId,
188
188
  right: right.evidenceId,
189
- methods: [...methodItems.items],
190
- fields: [...fieldItems.items],
191
- limits,
189
+ methods: [...methodItems],
190
+ fields: [...fieldItems],
192
191
  })}`,
193
192
  algorithm: {
194
193
  name: "rea-managed-member-comparison",
195
- version: 1,
196
194
  token_identity: "build-local",
197
195
  name_matching: "not-used",
198
196
  },
@@ -200,8 +198,8 @@ export const compareManagedMembers = (left, right, limits) => {
200
198
  right: sideManifest(right),
201
199
  summary,
202
200
  matching,
203
- methods: methodItems.items,
204
- fields: fieldItems.items,
201
+ methods: methodItems,
202
+ fields: fieldItems,
205
203
  coverage,
206
204
  evidence_links: [left.evidenceId, right.evidenceId],
207
205
  limitations,