rea-agents 3.0.0 → 3.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (628) hide show
  1. package/README.md +83 -108
  2. package/bridge/ghidra/ReaGhidraBridge.java +609 -841
  3. package/bridge/hopper_bridge.py +99 -344
  4. package/dist/application/AbortablePromise.js +6 -3
  5. package/dist/application/AnalysisContextQueries.js +21 -9
  6. package/dist/application/AnalysisSnapshotCache.js +0 -1
  7. package/dist/application/AnalysisSnapshotFiles.js +7 -7
  8. package/dist/application/AndroidApplicationService.js +1 -1
  9. package/dist/application/AppleApplicationService.js +1 -1
  10. package/dist/application/ArtifactExtraction.js +35 -54
  11. package/dist/application/ArtifactExtractionDestination.js +17 -0
  12. package/dist/application/ArtifactGraphConstruction.js +2 -17
  13. package/dist/application/ArtifactInventory/classify.js +2 -6
  14. package/dist/application/ArtifactInventory/hash.js +2 -20
  15. package/dist/application/ArtifactInventory/policy.js +17 -0
  16. package/dist/application/ArtifactInventory/reader.js +1 -4
  17. package/dist/application/ArtifactInventory/scanCanonical.js +8 -15
  18. package/dist/application/ArtifactInventory/scanReader.js +76 -58
  19. package/dist/application/ArtifactInventory/types.js +1 -5
  20. package/dist/application/ArtifactInventory.js +6 -14
  21. package/dist/application/AuthorizedArtifactInventory.js +3 -13
  22. package/dist/application/BinarySession.js +54 -28
  23. package/dist/application/BinarySessionComposition.js +0 -11
  24. package/dist/application/BinarySessionOpen.js +2 -1
  25. package/dist/application/BinarySessionRecords.js +24 -86
  26. package/dist/application/BinarySessionStatus.js +16 -21
  27. package/dist/application/BinaryTargetResolver.js +216 -0
  28. package/dist/application/BrowserEvidence.js +39 -57
  29. package/dist/application/BrowserObservationService.js +3 -6
  30. package/dist/application/BrowserScenarioCaptureService.js +3 -6
  31. package/dist/application/BrowserScenarioEvidence.js +3 -3
  32. package/dist/application/CallPathTracing.js +2 -36
  33. package/dist/application/CapabilityClientRequirements.js +26 -0
  34. package/dist/application/CapabilityInventory.js +143 -77
  35. package/dist/application/ClientConfigurationDocument.js +27 -0
  36. package/dist/application/ClientRegistrationStatus.js +16 -13
  37. package/dist/application/CommandShimReplay.js +14 -1
  38. package/dist/application/DirectAnalysis.js +22 -46
  39. package/dist/application/DirectAnalysisStatus.js +5 -61
  40. package/dist/application/Doctor.js +11 -32
  41. package/dist/application/DoctorDiagnostics.js +1 -2
  42. package/dist/application/DoctorScope.js +1 -1
  43. package/dist/application/ElectronActiveEvidence.js +50 -0
  44. package/dist/application/ElectronActiveObservationPort.js +1 -0
  45. package/dist/application/ElectronActiveObservationService.js +78 -0
  46. package/dist/application/ElectronBoundaryAnalysis.js +7 -8
  47. package/dist/application/ElectronBoundaryGraphContext.js +1 -1
  48. package/dist/application/ElectronBoundaryGraphIpc.js +3 -3
  49. package/dist/application/ElectronBoundaryGraphNative.js +1 -2
  50. package/dist/application/ElectronBoundaryGraphWindows.js +6 -8
  51. package/dist/application/ElectronEvidence.js +4 -7
  52. package/dist/application/ElectronObservationService.js +5 -9
  53. package/dist/application/EnhancedLiteralTracing.js +42 -65
  54. package/dist/application/EnhancedTools.js +98 -64
  55. package/dist/application/EvidenceBundleCommands.js +16 -12
  56. package/dist/application/EvidenceBundleFiles.js +9 -15
  57. package/dist/application/EvidenceLedger.js +14 -42
  58. package/dist/application/FilesystemSnapshot.js +2 -3
  59. package/dist/application/InterfaceBuilderAnalysis.js +266 -0
  60. package/dist/application/InventoryProjectionEvidence.js +4 -2
  61. package/dist/application/InvestigationProviders.js +1 -1
  62. package/dist/application/JavaScriptApplicationEvidence.js +2 -5
  63. package/dist/application/JavaScriptApplicationEvidenceGraph.js +6 -10
  64. package/dist/application/JavaScriptApplicationService.js +6 -29
  65. package/dist/application/JavaScriptApplicationWorkflowEvidence.js +5 -5
  66. package/dist/application/JavaScriptApplicationWorkflowService.js +0 -8
  67. package/dist/application/JavaScriptArtifactAnalysis.js +38 -127
  68. package/dist/application/JavaScriptArtifactFiles.js +67 -107
  69. package/dist/application/JavaScriptArtifactGraphAccumulator.js +0 -7
  70. package/dist/application/JavaScriptArtifactGraphBuilder.js +7 -58
  71. package/dist/application/JavaScriptArtifactGraphBundlers.js +1 -6
  72. package/dist/application/JavaScriptArtifactGraphContext.js +12 -39
  73. package/dist/application/JavaScriptArtifactGraphDocuments.js +4 -11
  74. package/dist/application/JavaScriptArtifactGraphEvidence.js +0 -14
  75. package/dist/application/JavaScriptArtifactGraphFindings.js +3 -3
  76. package/dist/application/JavaScriptArtifactGraphStructure.js +16 -17
  77. package/dist/application/JavaScriptArtifactPathResolution.js +61 -49
  78. package/dist/application/JavaScriptArtifactReconstruction.js +5 -10
  79. package/dist/application/JavaScriptArtifactReconstructionInput.js +2 -14
  80. package/dist/application/JavaScriptJsonModules.js +2 -2
  81. package/dist/application/JavaScriptModuleRelationships.js +22 -27
  82. package/dist/application/JavaScriptReplayPermission.js +1 -1
  83. package/dist/application/JavaScriptReplayPlanning.js +9 -3
  84. package/dist/application/JavaScriptReplayService.js +29 -47
  85. package/dist/application/JavaScriptReturnShapeProjection.js +12 -42
  86. package/dist/application/JavaScriptRuntimeObservationEvidence.js +7 -8
  87. package/dist/application/JavaScriptRuntimeObservationService.js +4 -8
  88. package/dist/application/JavaScriptRuntimeReconciliationEvidence.js +2 -3
  89. package/dist/application/JavaScriptSemanticGraphBuilder.js +11 -41
  90. package/dist/application/JavaScriptSemanticGraphConstruction.js +5 -29
  91. package/dist/application/JavaScriptSemanticGraphEvidence.js +1 -1
  92. package/dist/application/JavaScriptSemanticGraphFingerprintProjection.js +1 -1
  93. package/dist/application/JavaScriptSemanticGraphFlowProjection.js +0 -13
  94. package/dist/application/JavaScriptSemanticGraphProjection.js +1 -3
  95. package/dist/application/JavaScriptSemanticTraceService.js +1 -10
  96. package/dist/application/JsonFiles.js +79 -0
  97. package/dist/application/LinuxHopper.js +11 -9
  98. package/dist/application/LoopbackReplay.js +26 -23
  99. package/dist/application/LoopbackReplayRecorder.js +29 -1
  100. package/dist/application/ManagedApplicationGraphService.js +1 -2
  101. package/dist/application/ManagedMemberComparisonService.js +11 -41
  102. package/dist/application/ManagedNativeVerificationService.js +1 -2
  103. package/dist/application/ManagedReconstructionService.js +1 -1
  104. package/dist/application/ManagedRuntimeCorrelationService.js +14 -13
  105. package/dist/application/NativeApiInspection.js +2 -7
  106. package/dist/application/NativeUiActionTrace.js +394 -0
  107. package/dist/application/NodeRuntimeCharacterizationService.js +11 -16
  108. package/dist/application/PermissionAuthority.js +15 -7
  109. package/dist/application/PermissionFailure.js +5 -0
  110. package/dist/application/ProcessCaptureAuthority.js +5 -7
  111. package/dist/application/ProcessCaptureJournal.js +3 -2
  112. package/dist/application/ProcessCaptureLifecycle.js +10 -12
  113. package/dist/application/ProcessCheckpoints.js +29 -11
  114. package/dist/application/ProcessCli.js +8 -17
  115. package/dist/application/ProcessEvidence.js +5 -7
  116. package/dist/application/ProcessHarness.js +60 -20
  117. package/dist/application/ProcessNormalization.js +2 -1
  118. package/dist/application/ProcessReactiveCoordinator.js +2 -4
  119. package/dist/application/ProcessReactiveEffects.js +9 -3
  120. package/dist/application/ProcessReactiveHarness.js +13 -7
  121. package/dist/application/ProcessSampling.js +2 -4
  122. package/dist/application/ProcessTimer.js +39 -0
  123. package/dist/application/ProjectPermissionStore.js +39 -95
  124. package/dist/application/RealHopperAssertions.js +20 -66
  125. package/dist/application/ReconstructionCoverageService.js +12 -58
  126. package/dist/application/ReconstructionObligationAuthority.js +2 -2
  127. package/dist/application/ReconstructionObligationCandidates.js +4 -4
  128. package/dist/application/ReconstructionObligationLedgerEvaluation.js +8 -15
  129. package/dist/application/ReconstructionObligationLedgerProjection.js +3 -7
  130. package/dist/application/ReconstructionObligationLedgerService.js +19 -38
  131. package/dist/application/ReferenceSourceImport.js +21 -47
  132. package/dist/application/ReferenceSourceImportEntries.js +2 -4
  133. package/dist/application/ReferenceSourceImportPolicy.js +5 -32
  134. package/dist/application/ReferenceSourceImportTypes.js +0 -16
  135. package/dist/application/RuntimeExecutableDiagnostics.js +55 -29
  136. package/dist/application/SessionProviderRouter.js +2 -2
  137. package/dist/application/Setup.js +1 -3
  138. package/dist/application/SetupClientConfiguration.js +22 -88
  139. package/dist/application/SetupRegistrationEnvironment.js +0 -7
  140. package/dist/application/StoreFileLock.js +119 -0
  141. package/dist/application/TerminalRenderer.js +2 -3
  142. package/dist/application/Uninstall.js +9 -14
  143. package/dist/application/UnknownEvidence.js +1 -1
  144. package/dist/application/WindowsCapabilities.js +5 -4
  145. package/dist/artifacts/ArtifactPaths.js +2 -5
  146. package/dist/artifacts/ArtifactProvider.js +43 -67
  147. package/dist/artifacts/DirectoryArtifactReader.js +13 -8
  148. package/dist/artifacts/MachOSliceArtifactReader.js +1 -5
  149. package/dist/artifacts/NativeDmgArtifactReader.js +11 -11
  150. package/dist/artifacts/NibArchive.js +269 -0
  151. package/dist/artifacts/SafeOutputTree.js +21 -31
  152. package/dist/browser/BrowserProcessStartup.js +1 -2
  153. package/dist/browser/CdpAuthorizedMainFrame.js +16 -0
  154. package/dist/browser/CdpBrowserProvider.js +3 -13
  155. package/dist/browser/CdpCanonicalJsonDigest.js +9 -0
  156. package/dist/browser/CdpCaptureDocuments.js +28 -76
  157. package/dist/browser/CdpCaptureEventBodyShapes.js +13 -33
  158. package/dist/browser/CdpCaptureEventHandlers.js +22 -87
  159. package/dist/browser/CdpCaptureEvents.js +2 -8
  160. package/dist/browser/CdpCaptureStorage.js +9 -20
  161. package/dist/browser/CdpCaptureStorageFingerprints.js +85 -95
  162. package/dist/browser/CdpCaptureValues.js +21 -21
  163. package/dist/browser/CdpConnection.js +10 -25
  164. package/dist/browser/CdpElectronInspection.js +29 -51
  165. package/dist/browser/CdpElectronProvider.js +10 -35
  166. package/dist/browser/CdpElectronScriptEvents.js +8 -16
  167. package/dist/browser/CdpElectronScripts.js +6 -35
  168. package/dist/browser/CdpElectronWorkers.js +6 -10
  169. package/dist/browser/CdpEndpoint.js +25 -41
  170. package/dist/browser/CdpObservationSession.js +14 -26
  171. package/dist/browser/CdpPageCapture.js +34 -48
  172. package/dist/browser/CdpPageCaptureScripts.js +1 -19
  173. package/dist/browser/CdpPageCaptureWorkers.js +6 -10
  174. package/dist/browser/CdpSafeMetadata.js +19 -22
  175. package/dist/browser/CdpScreenshot.js +3 -5
  176. package/dist/browser/CdpTargetSession.js +1 -2
  177. package/dist/browser/CdpWebMcpDiscovery.js +13 -22
  178. package/dist/browser/ElectronFileScope.js +8 -19
  179. package/dist/browser/JavaScriptRuntimeScope.js +10 -10
  180. package/dist/browser/PlaywrightBrowserScenarioProvider.js +31 -64
  181. package/dist/browser/PlaywrightElectronActiveActions.js +309 -0
  182. package/dist/browser/PlaywrightElectronActiveProvider.js +274 -0
  183. package/dist/browser/PlaywrightExecutionBoundary.js +16 -5
  184. package/dist/browser/PlaywrightScenarioActions.js +3 -7
  185. package/dist/browser/PlaywrightScenarioArtifacts.js +23 -92
  186. package/dist/browser/PlaywrightScenarioBrowser.js +7 -9
  187. package/dist/browser/PlaywrightScenarioEvents.js +45 -94
  188. package/dist/browser/PlaywrightScenarioSession.js +18 -34
  189. package/dist/browser/PngVisualDiff.js +22 -14
  190. package/dist/browser/SensitiveTextCapture.js +1 -18
  191. package/dist/browser/V8InspectorCaptureProjection.js +7 -7
  192. package/dist/browser/V8InspectorEndpoint.js +12 -14
  193. package/dist/browser/V8InspectorProvider.js +20 -61
  194. package/dist/browser/WebSourceMapFetcher.js +56 -176
  195. package/dist/catalogIdentity.js +12 -60
  196. package/dist/cli/artifactCommands.js +49 -77
  197. package/dist/cli/coreAnalysisCommands.js +83 -133
  198. package/dist/cli/javascriptApplicationAnalysis.js +1 -9
  199. package/dist/cli/managedCommands.js +6 -271
  200. package/dist/cli/setupCommands.js +3 -12
  201. package/dist/cli/utilityCommands.js +7 -41
  202. package/dist/cli.js +0 -2
  203. package/dist/cliApplicationCommands.js +44 -114
  204. package/dist/cliBrowserAdvancedCommands.js +12 -102
  205. package/dist/cliBrowserCommands.js +19 -124
  206. package/dist/cliBrowserContext.js +30 -0
  207. package/dist/cliCommandNames.js +5 -5
  208. package/dist/cliElectronCommands.js +49 -71
  209. package/dist/cliEvidenceCommands.js +8 -77
  210. package/dist/cliJavaScriptRuntimeCommands.js +18 -92
  211. package/dist/cliJsonInput.js +4 -14
  212. package/dist/cliObservationOptions.js +11 -92
  213. package/dist/cliPolicyCommands.js +2 -16
  214. package/dist/cliProcessCommands.js +3 -3
  215. package/dist/cliSetup.js +0 -13
  216. package/dist/config/browserScenario.js +77 -0
  217. package/dist/config/electronAutomation.js +35 -0
  218. package/dist/config/environment.js +6 -9
  219. package/dist/config/javascriptReplay.js +41 -0
  220. package/dist/config/managedRuntime.js +25 -0
  221. package/dist/config/parseConfig.js +56 -232
  222. package/dist/config/parsers.js +16 -28
  223. package/dist/config/passiveObservation.js +87 -0
  224. package/dist/config/permissions.js +0 -7
  225. package/dist/config/processCapture.js +47 -0
  226. package/dist/contracts/analysisSearchContract.js +2 -5
  227. package/dist/contracts/applicationToolContracts.js +58 -114
  228. package/dist/contracts/applicationWorkflowInputContracts.js +29 -114
  229. package/dist/contracts/artifactComparisonExample.js +58 -60
  230. package/dist/contracts/artifactToolContracts.js +37 -91
  231. package/dist/contracts/browserScenarioToolContracts.js +6 -51
  232. package/dist/contracts/browserToolContracts.js +10 -75
  233. package/dist/contracts/electronToolContracts.js +27 -98
  234. package/dist/contracts/enhancedInputs.js +31 -78
  235. package/dist/contracts/errorSchemas.js +0 -1
  236. package/dist/contracts/functionComparisonExample.js +10 -24
  237. package/dist/contracts/functionInstructionContract.js +1 -3
  238. package/dist/contracts/functionWorkflowToolContracts.js +4 -5
  239. package/dist/contracts/hopperMemoryContracts.js +3 -3
  240. package/dist/contracts/investigationExamples.js +14 -11
  241. package/dist/contracts/javascriptApplicationWorkflowExamples.js +12 -19
  242. package/dist/contracts/javascriptRuntimeObservationToolContracts.js +2 -20
  243. package/dist/contracts/javascriptRuntimeReconciliationExample.js +45 -12
  244. package/dist/contracts/managedToolContracts.js +10 -104
  245. package/dist/contracts/managedWorkflowExamples.js +77 -125
  246. package/dist/contracts/managedWorkflowToolContracts.js +51 -74
  247. package/dist/contracts/nativeToolContracts.js +9 -14
  248. package/dist/contracts/processCaptureExample.js +2 -69
  249. package/dist/contracts/promptContracts.js +49 -67
  250. package/dist/contracts/providerSelection.js +0 -1
  251. package/dist/contracts/reconstructionReadinessExample.js +1 -6
  252. package/dist/contracts/sessionStatusContract.js +1 -17
  253. package/dist/contracts/sessionToolSchemas.js +52 -0
  254. package/dist/contracts/toolContractExamples.js +11 -10
  255. package/dist/contracts/toolContractHelpers.js +19 -0
  256. package/dist/contracts/toolContracts.js +60 -143
  257. package/dist/contracts/toolEffects.js +16 -9
  258. package/dist/contracts/toolOutputSchemaGroups.js +47 -86
  259. package/dist/contracts/toolOutputSchemaPrimitives.js +72 -62
  260. package/dist/contracts/toolSchemaMetadata.js +117 -0
  261. package/dist/contracts/unknownContractExamples.js +0 -2
  262. package/dist/doctorRuntime.js +1 -1
  263. package/dist/domain/analysisErrorPresentation.js +46 -54
  264. package/dist/domain/analysisErrorProjection.js +28 -37
  265. package/dist/domain/analysisProfile.js +3 -31
  266. package/dist/domain/analysisSnapshot.js +3 -12
  267. package/dist/domain/androidApplication.js +15 -52
  268. package/dist/domain/appleApplication.js +24 -65
  269. package/dist/domain/artifactComparison.js +11 -29
  270. package/dist/domain/artifactGraph.js +14 -44
  271. package/dist/domain/artifactInspection.js +38 -69
  272. package/dist/domain/artifactInventoryEvidence.js +27 -21
  273. package/dist/domain/binaryTarget.js +2 -219
  274. package/dist/domain/binaryTargetTypes.js +1 -0
  275. package/dist/domain/browserCaptureComparison.js +35 -60
  276. package/dist/domain/browserObservation.js +45 -197
  277. package/dist/domain/browserObservationSchemas.js +5 -23
  278. package/dist/domain/browserScenario.js +11 -14
  279. package/dist/domain/browserScenarioCapture.js +11 -12
  280. package/dist/domain/browserScenarioCaptureValues.js +146 -84
  281. package/dist/domain/browserScenarioDiff.js +2 -59
  282. package/dist/domain/browserScenarioDiffEvidence.js +51 -0
  283. package/dist/domain/browserScenarioDiffValues.js +21 -38
  284. package/dist/domain/browserScenarioValues.js +80 -109
  285. package/dist/domain/browserSession.js +4 -7
  286. package/dist/domain/bundleComparison.js +6 -32
  287. package/dist/domain/bytecodeProvider.js +53 -54
  288. package/dist/domain/callPath.js +50 -169
  289. package/dist/domain/callPathSchemas.js +79 -0
  290. package/dist/domain/changedBehavior.js +34 -60
  291. package/dist/domain/completionLedgerGeneration.js +8 -14
  292. package/dist/domain/conformancePackage.js +126 -97
  293. package/dist/domain/conformanceReplay.js +39 -11
  294. package/dist/domain/conformanceTrustGate.js +174 -30
  295. package/dist/domain/customProtocolCapture.js +4 -4
  296. package/dist/domain/electronActiveObservation.js +244 -0
  297. package/dist/domain/electronObservation.js +21 -83
  298. package/dist/domain/electronStaticAnalysisBrowser.js +36 -46
  299. package/dist/domain/electronStaticAnalysisIpc.js +38 -14
  300. package/dist/domain/electronStaticAnalysisNative.js +1 -8
  301. package/dist/domain/electronStaticAnalysisValues.js +14 -18
  302. package/dist/domain/errors.js +33 -54
  303. package/dist/domain/eventProcessTree.js +101 -90
  304. package/dist/domain/evidence.js +2 -10
  305. package/dist/domain/evidenceBundle.js +3 -5
  306. package/dist/domain/evidenceCompletionLedger.js +6 -8
  307. package/dist/domain/functionComparison.js +4 -14
  308. package/dist/domain/functionComparisonNormalization.js +8 -8
  309. package/dist/domain/functionComparisonResults.js +25 -15
  310. package/dist/domain/functionComparisonSchemas.js +49 -33
  311. package/dist/domain/functionDossierEvidence.js +31 -151
  312. package/dist/domain/hopperStartupFailure.js +1 -1
  313. package/dist/domain/hopperValues.js +17 -141
  314. package/dist/domain/inputIssueProjection.js +4 -1
  315. package/dist/domain/interfaceBuilderGraph.js +654 -0
  316. package/dist/domain/javascriptApplicationAnalysis.js +8 -112
  317. package/dist/domain/javascriptApplicationChangeGraph.js +22 -82
  318. package/dist/domain/javascriptApplicationEvidenceSchemas.js +59 -47
  319. package/dist/domain/javascriptApplicationGraph.js +3 -13
  320. package/dist/domain/javascriptApplicationGraphSchemas.js +12 -34
  321. package/dist/domain/javascriptApplicationVersionComparison.js +26 -30
  322. package/dist/domain/javascriptApplicationVersionComparisonSchemas.js +123 -68
  323. package/dist/domain/javascriptApplicationVersionItems.js +120 -53
  324. package/dist/domain/javascriptApplicationVersionKeys.js +24 -11
  325. package/dist/domain/javascriptAstFingerprint.js +25 -58
  326. package/dist/domain/javascriptAstValues.js +9 -0
  327. package/dist/domain/javascriptExportInstrumentation.js +2 -4
  328. package/dist/domain/javascriptExportShapeComparison.js +6 -7
  329. package/dist/domain/javascriptExportShapeComparisonSchemas.js +70 -77
  330. package/dist/domain/javascriptExportShapeSelection.js +17 -19
  331. package/dist/domain/javascriptFeatureSeed.js +20 -12
  332. package/dist/domain/javascriptFeatureTrace.js +13 -67
  333. package/dist/domain/javascriptFeatureTraceSchemas.js +24 -52
  334. package/dist/domain/javascriptFeatureTraversal.js +1 -44
  335. package/dist/domain/javascriptNativeHandoff.js +1 -1
  336. package/dist/domain/javascriptReplay.js +100 -101
  337. package/dist/domain/javascriptRuntimeLoadState.js +3 -8
  338. package/dist/domain/javascriptRuntimeObservation.js +43 -103
  339. package/dist/domain/javascriptRuntimeReconciliation.js +1 -3
  340. package/dist/domain/javascriptRuntimeReconciliationActive.js +80 -0
  341. package/dist/domain/javascriptRuntimeReconciliationGraph.js +21 -33
  342. package/dist/domain/javascriptRuntimeReconciliationMatching.js +75 -61
  343. package/dist/domain/javascriptRuntimeReconciliationParsing.js +21 -46
  344. package/dist/domain/javascriptRuntimeReconciliationResult.js +25 -19
  345. package/dist/domain/javascriptRuntimeReconciliationRuntime.js +8 -12
  346. package/dist/domain/javascriptRuntimeReconciliationSchemas.js +34 -49
  347. package/dist/domain/javascriptRuntimeStaticCandidates.js +3 -3
  348. package/dist/domain/javascriptSemanticAnalysis.js +12 -45
  349. package/dist/domain/javascriptSemanticAsyncEffects.js +1 -9
  350. package/dist/domain/javascriptSemanticCallResolution.js +6 -16
  351. package/dist/domain/javascriptSemanticCalls.js +5 -32
  352. package/dist/domain/javascriptSemanticChildProcesses.js +1 -11
  353. package/dist/domain/javascriptSemanticCoverage.js +11 -0
  354. package/dist/domain/javascriptSemanticDataEffectHelpers.js +1 -8
  355. package/dist/domain/javascriptSemanticDataEffects.js +1 -11
  356. package/dist/domain/javascriptSemanticFingerprints.js +3 -5
  357. package/dist/domain/javascriptSemanticGraphSchemas.js +25 -51
  358. package/dist/domain/javascriptSemanticGraphSerialization.js +2 -13
  359. package/dist/domain/javascriptSemanticIr.js +1 -29
  360. package/dist/domain/javascriptSemanticObjects.js +1 -5
  361. package/dist/domain/javascriptSemanticPrimitives.js +2 -9
  362. package/dist/domain/javascriptSemanticProjection.js +0 -18
  363. package/dist/domain/javascriptSemanticPromises.js +9 -16
  364. package/dist/domain/javascriptSemanticProvenance.js +16 -19
  365. package/dist/domain/javascriptSemanticQuery.js +17 -139
  366. package/dist/domain/javascriptSemanticQueryAssessment.js +9 -37
  367. package/dist/domain/javascriptSemanticQueryIdentity.js +2 -23
  368. package/dist/domain/javascriptSemanticQuerySchemas.js +14 -107
  369. package/dist/domain/javascriptSemanticResources.js +1 -6
  370. package/dist/domain/javascriptSemanticReturns.js +10 -27
  371. package/dist/domain/javascriptSemanticValueTypes.js +1 -0
  372. package/dist/domain/javascriptSemanticValues.js +44 -62
  373. package/dist/domain/javascriptStaticAnalysis.js +21 -43
  374. package/dist/domain/javascriptStaticAnalysisBundler.js +34 -93
  375. package/dist/domain/javascriptStaticAnalysisCalls.js +17 -16
  376. package/dist/domain/javascriptStaticAnalysisFindings.js +3 -19
  377. package/dist/domain/javascriptStaticAnalysisHelpers.js +47 -88
  378. package/dist/domain/javascriptStaticAnalysisState.js +1 -5
  379. package/dist/domain/javascriptStaticAnalysisTypes.js +1 -0
  380. package/dist/domain/jsonShape.js +7 -33
  381. package/dist/domain/localPath.js +7 -0
  382. package/dist/domain/managedApplicationGraph.js +9 -41
  383. package/dist/domain/managedApplicationGraphCoverage.js +24 -156
  384. package/dist/domain/managedApplicationGraphNodes.js +10 -13
  385. package/dist/domain/managedArtifact.js +14 -27
  386. package/dist/domain/managedMemberComparison.js +90 -92
  387. package/dist/domain/managedMemberComparisonCoverage.js +11 -33
  388. package/dist/domain/managedMemberComparisonItems.js +221 -0
  389. package/dist/domain/managedMemberComparisonMatch.js +8 -208
  390. package/dist/domain/managedNativeVerification.js +3 -6
  391. package/dist/domain/managedNativeVerificationMatch.js +55 -59
  392. package/dist/domain/managedNativeVerificationSchemas.js +83 -47
  393. package/dist/domain/managedReconstruction.js +19 -23
  394. package/dist/domain/managedRuntimeCorrelation.js +6 -9
  395. package/dist/domain/nativeApiBoundary.js +17 -14
  396. package/dist/domain/nativeInspection.js +0 -2
  397. package/dist/domain/nativeInvestigationGraph.js +351 -0
  398. package/dist/domain/nativeValueFlow.js +61 -0
  399. package/dist/domain/nodeRuntimeCharacterization.js +15 -18
  400. package/dist/domain/objcSwiftMetadata.js +254 -0
  401. package/dist/domain/peInspection.js +1 -1
  402. package/dist/domain/permissionPolicy.js +13 -0
  403. package/dist/domain/processCapture.js +76 -113
  404. package/dist/domain/processCaptureExample.js +68 -0
  405. package/dist/domain/processCaptureParsing.js +21 -0
  406. package/dist/domain/processCaptureReactiveSchema.js +68 -0
  407. package/dist/domain/processCaptureReactiveValidation.js +8 -3
  408. package/dist/domain/processCaptureValidation.js +8 -10
  409. package/dist/domain/processComparison.js +12 -16
  410. package/dist/domain/processObservation.js +5 -6
  411. package/dist/domain/processReactiveMatching.js +32 -46
  412. package/dist/domain/processReactiveRuntime.js +4 -8
  413. package/dist/domain/processReactiveScenario.js +28 -94
  414. package/dist/domain/processReactiveScenarioPreflight.js +5 -30
  415. package/dist/domain/processReactiveTransition.js +42 -21
  416. package/dist/domain/processScenario.js +62 -93
  417. package/dist/domain/processTraceComparison.js +0 -7
  418. package/dist/domain/processTraceEvaluation.js +14 -4
  419. package/dist/domain/processTraceSpecification.js +11 -17
  420. package/dist/domain/protocolCapture.js +11 -9
  421. package/dist/domain/reconstructionCoverage.js +62 -129
  422. package/dist/domain/reconstructionCoverageEvaluation.js +17 -17
  423. package/dist/domain/reconstructionObligationLedgerSchemas.js +45 -72
  424. package/dist/domain/reconstructionReadiness.js +1 -2
  425. package/dist/domain/reconstructionReadinessSchemas.js +66 -40
  426. package/dist/domain/reconstructionUnknowns.js +3 -3
  427. package/dist/domain/reconstructionVerification.js +13 -47
  428. package/dist/domain/reconstructionVerificationSchemas.js +50 -38
  429. package/dist/domain/referenceSourceGraph.js +53 -61
  430. package/dist/domain/referenceSourceImportParsing.js +3 -7
  431. package/dist/domain/replayMachine.js +19 -31
  432. package/dist/domain/replayMachineRun.js +15 -63
  433. package/dist/domain/replayMachineRuntime.js +46 -44
  434. package/dist/domain/replayMachineValues.js +84 -0
  435. package/dist/domain/residualUnknown.js +25 -30
  436. package/dist/domain/runtimeCharacterization.js +15 -16
  437. package/dist/domain/runtimeIdentification.js +48 -47
  438. package/dist/domain/sourceToBundleComparison.js +11 -87
  439. package/dist/domain/sourceToBundleComparisonSchemas.js +25 -50
  440. package/dist/domain/sourceToBundleSignals.js +11 -16
  441. package/dist/domain/staticRuntimeCorrelation.js +44 -54
  442. package/dist/domain/symbolAnalysis.js +10 -19
  443. package/dist/domain/unicodeCodePointOrder.js +12 -0
  444. package/dist/domain/webBundleAnalysis.js +70 -99
  445. package/dist/domain/webBundleAnalyzer.js +2 -4
  446. package/dist/domain/webBundleAnalyzerAst.js +0 -13
  447. package/dist/domain/webBundleAnalyzerInspection.js +26 -52
  448. package/dist/domain/webBundleAnalyzerResult.js +7 -24
  449. package/dist/domain/webCaptureDiff.js +48 -85
  450. package/dist/domain/webCaptureDiffSchemas.js +86 -0
  451. package/dist/domain/webContentArtifact.js +1 -10
  452. package/dist/domain/webMcpDiscovery.js +3 -14
  453. package/dist/domain/webScreenshot.js +58 -34
  454. package/dist/domain/zipPackageFormat.js +7 -0
  455. package/dist/dotnet/ManagedArtifactInspector.js +17 -50
  456. package/dist/dotnet/ManagedMemberInspector.js +27 -58
  457. package/dist/dotnet/ManagedMemberInspectorCore.js +14 -51
  458. package/dist/dotnet/ManagedMemberInstructionDecoder.js +2 -2
  459. package/dist/dotnet/ManagedMemberRows.js +16 -16
  460. package/dist/dotnet/ManagedMetadataHeaps.js +26 -8
  461. package/dist/dotnet/ManagedMetadataInventory.js +21 -30
  462. package/dist/dotnet/ManagedMetadataInventoryRows.js +57 -63
  463. package/dist/dotnet/ManagedMetadataLayout.js +3 -5
  464. package/dist/dotnet/ManagedMethodBodyReader.js +5 -30
  465. package/dist/dotnet/ManagedNativeBoundaryHelpers.js +19 -49
  466. package/dist/dotnet/ManagedNativeBoundaryInspector.js +13 -42
  467. package/dist/dotnet/ManagedPeReader.js +2 -2
  468. package/dist/dotnet/ManagedStaticProvider.js +13 -71
  469. package/dist/generatedMcpToolCatalog.js +1 -1
  470. package/dist/generatedPackageMetadata.js +1 -1
  471. package/dist/ghidra/GhidraAnalysisProfile.js +3 -8
  472. package/dist/ghidra/GhidraClient.js +5 -13
  473. package/dist/ghidra/GhidraClientStartup.js +1 -1
  474. package/dist/ghidra/GhidraClientWire.js +9 -5
  475. package/dist/ghidra/GhidraDefaults.js +0 -18
  476. package/dist/ghidra/GhidraDiagnostics.js +0 -2
  477. package/dist/ghidra/GhidraDoctor.js +16 -12
  478. package/dist/ghidra/GhidraFunctionValues.js +67 -108
  479. package/dist/ghidra/GhidraInstallation.js +98 -42
  480. package/dist/ghidra/GhidraInventoryValues.js +18 -77
  481. package/dist/ghidra/GhidraLauncher.js +0 -8
  482. package/dist/ghidra/GhidraProvider.js +32 -31
  483. package/dist/ghidra/GhidraProviderCapabilities.js +11 -48
  484. package/dist/ghidra/GhidraRequestQueue.js +6 -30
  485. package/dist/ghidra/GhidraResponseBuffer.js +1 -7
  486. package/dist/ghidra/GhidraSessionValues.js +0 -2
  487. package/dist/ghidra/GhidraSocketConnection.js +1 -1
  488. package/dist/ghidra/GhidraTransport.js +4 -7
  489. package/dist/ghidra/protocol.js +19 -42
  490. package/dist/hopper/BridgeLauncher.js +115 -37
  491. package/dist/hopper/HopperAnalysisProfile.js +3 -5
  492. package/dist/hopper/HopperCleanup.js +11 -9
  493. package/dist/hopper/HopperClient.js +5 -8
  494. package/dist/hopper/HopperProcessDiagnostic.js +2 -2
  495. package/dist/hopper/HopperProvider.js +0 -30
  496. package/dist/hopper/HopperRequestQueue.js +21 -40
  497. package/dist/hopper/HopperResponseStream.js +1 -9
  498. package/dist/hopper/HopperSessionValues.js +3 -2
  499. package/dist/hopper/HopperTargetLease.js +119 -0
  500. package/dist/hopper/LinuxPrivateDisplayDiagnostic.js +24 -31
  501. package/dist/hopper/LinuxPrivateDisplayProbe.js +21 -26
  502. package/dist/hopper/protocol.js +6 -4
  503. package/dist/main/reload.js +1 -9
  504. package/dist/main/shutdown.js +1 -1
  505. package/dist/main/state.js +0 -23
  506. package/dist/main/transport.js +27 -39
  507. package/dist/main.js +17 -15
  508. package/dist/mcpDoctor.js +27 -69
  509. package/dist/native/CommandRunner.js +18 -25
  510. package/dist/native/NativeMacOSProvider.js +13 -38
  511. package/dist/native/NativeMachoInspection.js +1 -1
  512. package/dist/process/BoundedFileBytes.js +17 -0
  513. package/dist/process/ExecFileOutput.js +11 -0
  514. package/dist/process/PendingOperations.js +8 -6
  515. package/dist/process/PrivateRuntimeRoot.js +17 -0
  516. package/dist/process/ProcessOwnership.js +67 -130
  517. package/dist/process/ProcessOwnershipIdentity.js +13 -0
  518. package/dist/process/ProcessOwnershipObservation.js +87 -0
  519. package/dist/process/ProcessOwnershipProcessTree.js +22 -0
  520. package/dist/process/ProviderDeadline.js +8 -12
  521. package/dist/process/ProviderProcess.js +7 -28
  522. package/dist/process/WindowsAuthority.js +32 -0
  523. package/dist/reference/ReferenceSourceReader.js +8 -24
  524. package/dist/reference/ReferenceSourceReaderEntries.js +11 -39
  525. package/dist/reference/ReferenceSourceReaderFile.js +13 -31
  526. package/dist/reference/ReferenceSourceReaderPaths.js +3 -18
  527. package/dist/reference/ReferenceSourceReaderValidate.js +3 -6
  528. package/dist/replay/JavaScriptReplayWorker.js +95 -13
  529. package/dist/replay/JavaScriptReplayWorkerTypes.js +1 -0
  530. package/dist/replay/LinuxJavaScriptReplayRunner.js +42 -43
  531. package/dist/replay/LinuxJavaScriptReplaySandbox.js +0 -19
  532. package/dist/replay/LinuxRuntimeClosure.js +1 -3
  533. package/dist/replay/ReplayOutcome.js +27 -18
  534. package/dist/replay/ReplayProcessLifecycle.js +32 -7
  535. package/dist/replay/ReplaySeccompFile.js +29 -0
  536. package/dist/replay/ReplayWorkerProtocol.js +33 -30
  537. package/dist/replay/SystemJavaScriptReplayHost.js +45 -74
  538. package/dist/server/ProcessCaptureElicitation.js +4 -8
  539. package/dist/server/createServer.js +145 -119
  540. package/dist/server/mcpClientMetadata.js +32 -0
  541. package/dist/server/promptCompletion.js +37 -61
  542. package/dist/server/recordDerivedEvidence.js +1 -1
  543. package/dist/server/registerApplicationTools/characterization.js +10 -21
  544. package/dist/server/registerApplicationTools/compareExportShapes.js +6 -16
  545. package/dist/server/registerApplicationTools/compareSourceToBundle.js +6 -15
  546. package/dist/server/registerApplicationTools/compareVersions.js +6 -16
  547. package/dist/server/registerApplicationTools/controlledReplay.js +8 -15
  548. package/dist/server/registerApplicationTools/coverage.js +7 -78
  549. package/dist/server/registerApplicationTools/helpers.js +1 -13
  550. package/dist/server/registerApplicationTools/obligationLedger.js +4 -8
  551. package/dist/server/registerApplicationTools/traceFeature.js +6 -15
  552. package/dist/server/registerApplicationTools/traceSemantics.js +5 -13
  553. package/dist/server/registerApplicationTools.js +0 -2
  554. package/dist/server/registerArtifactComparisonTool.js +27 -35
  555. package/dist/server/registerBrowserScenarioTool.js +3 -8
  556. package/dist/server/registerBrowserTools.js +36 -81
  557. package/dist/server/registerBundleComparisonTool.js +10 -16
  558. package/dist/server/registerCloseLifecycleTool.js +5 -27
  559. package/dist/server/registerElectronTools.js +29 -65
  560. package/dist/server/registerEnhancedTools.js +118 -127
  561. package/dist/server/registerEvidenceTools.js +19 -30
  562. package/dist/server/registerFunctionComparisonTool.js +35 -34
  563. package/dist/server/registerInvestigationTools/helpers.js +3 -32
  564. package/dist/server/registerInvestigationTools.js +36 -148
  565. package/dist/server/registerJavaScriptRuntimeObservationTools.js +15 -27
  566. package/dist/server/registerManagedWorkflowTools/compareManagedMembers.js +16 -23
  567. package/dist/server/registerManagedWorkflowTools/contract.js +2 -3
  568. package/dist/server/registerManagedWorkflowTools/evidence.js +19 -35
  569. package/dist/server/registerManagedWorkflowTools/importManagedReconstruction.js +4 -14
  570. package/dist/server/registerManagedWorkflowTools/planManagedRuntimeCorrelation.js +4 -14
  571. package/dist/server/registerManagedWorkflowTools/projectManagedApplicationGraph.js +11 -20
  572. package/dist/server/registerManagedWorkflowTools/verifyManagedNativeBoundaries.js +10 -21
  573. package/dist/server/registerOfficialTools.js +8 -51
  574. package/dist/server/registerProcessComparisonTool.js +43 -38
  575. package/dist/server/registerPrompts.js +19 -17
  576. package/dist/server/registerReplayMachineTool.js +4 -10
  577. package/dist/server/registerSessionRecordTools.js +36 -153
  578. package/dist/server/registerSessionStatusTool.js +18 -96
  579. package/dist/server/registerSessionTools.js +34 -91
  580. package/dist/server/sessionAvailabilityPolicy.js +2 -3
  581. package/dist/server/sessionEvidence.js +9 -15
  582. package/dist/server/sessionToolPolicies.js +1 -13
  583. package/dist/server/toolRegistrationOptions.js +4 -192
  584. package/dist/server/toolResult.js +15 -67
  585. package/dist/serverIdentity.js +0 -20
  586. package/install.sh +1 -1
  587. package/package.json +27 -15
  588. package/scripts/electron-active-hook-boundaries.cjs +394 -0
  589. package/scripts/electron-active-hook.cjs +469 -0
  590. package/scripts/hopper-demo-x11.py +13 -32
  591. package/scripts/rea.mjs +1 -11
  592. package/skills/reverse-engineer-anything/SKILL.md +46 -11
  593. package/skills/reverse-engineer-anything/references/evidence-workflows.md +6 -4
  594. package/skills/reverse-engineer-anything/references/javascript-applications.md +13 -13
  595. package/skills/reverse-engineer-anything/references/native-and-artifacts.md +12 -8
  596. package/dist/application/ApplicationWorkflowEvidenceResolver.js +0 -180
  597. package/dist/application/BoundedJsonFiles.js +0 -86
  598. package/dist/application/CrossVersionInventory.js +0 -128
  599. package/dist/application/CrossVersionInvestigation.js +0 -301
  600. package/dist/application/CrossVersionInvestigationCollections.js +0 -23
  601. package/dist/application/CrossVersionInvestigationEvidence.js +0 -64
  602. package/dist/application/CrossVersionInvestigationReplay.js +0 -170
  603. package/dist/application/DeferredFileAuthorization.js +0 -61
  604. package/dist/application/DoctorProjection.js +0 -43
  605. package/dist/application/EnhancedToolPagination.js +0 -22
  606. package/dist/application/EvidenceReferenceResolver.js +0 -26
  607. package/dist/application/InvestigationWorkspaceStore.js +0 -204
  608. package/dist/application/ProcessPairedExperiment.js +0 -72
  609. package/dist/application/ReconstructionCoverageWorkspaceStore.js +0 -31
  610. package/dist/application/ReconstructionReadinessService.js +0 -48
  611. package/dist/cliInvestigationCommands.js +0 -173
  612. package/dist/domain/boundedCartesianProjection.js +0 -15
  613. package/dist/domain/investigationWorkspace.js +0 -346
  614. package/dist/domain/jsonLimits.js +0 -26
  615. package/dist/domain/knownPageCoverage.js +0 -21
  616. package/dist/domain/processPairedExperiment.js +0 -128
  617. package/dist/server/DynamicToolAvailability.js +0 -70
  618. package/dist/server/LazyToolCatalog.js +0 -134
  619. package/dist/server/hydrateServerTools.js +0 -191
  620. package/dist/server/javascriptApplicationResult.js +0 -106
  621. package/dist/server/permissionFailure.js +0 -12
  622. package/dist/server/registerApplicationTools/readiness.js +0 -55
  623. package/dist/server/registerEvidenceResources.js +0 -315
  624. package/dist/server/registerJavaScriptApplicationGraphResource.js +0 -65
  625. package/dist/server/registerReconstructionObligationLedgerResource.js +0 -32
  626. package/dist/server/registerReconstructionReadinessResource.js +0 -32
  627. package/dist/server/toolInputValidation.js +0 -77
  628. package/scripts/package-runner-bootstrap.mjs +0 -72
@@ -2,11 +2,10 @@ import { managedMemberInspectionSchema, } from "../domain/managedArtifact.js";
2
2
  import { readManagedPeLayout, } from "./ManagedPeReader.js";
3
3
  import { managedTableRowCounts, readManagedMetadataInventory, } from "./ManagedMetadataInventory.js";
4
4
  import { readManagedMetadataLayout } from "./ManagedMetadataLayout.js";
5
- import { ManagedReaderFailure, managedFailure, } from "./ManagedReaderFailure.js";
6
- import { emptyPage, page, parseTypes, typeRanges, } from "./ManagedMemberInspectorCore.js";
5
+ import { ManagedReaderFailure } from "./ManagedReaderFailure.js";
6
+ import { parseTypes, typeRanges } from "./ManagedMemberInspectorCore.js";
7
7
  import { edges, parseFields, parseMemberRefs, parseMethods, } from "./ManagedMemberRows.js";
8
- const unavailable = (target, bytes, limits, issue) => managedMemberInspectionSchema.parse({
9
- schema_version: 1,
8
+ const unavailable = (target, bytes, issue) => managedMemberInspectionSchema.parse({
10
9
  artifact: {
11
10
  path: target.path,
12
11
  sha256: target.sha256,
@@ -24,12 +23,12 @@ const unavailable = (target, bytes, limits, issue) => managedMemberInspectionSch
24
23
  requires_artifact_sha256: target.sha256,
25
24
  requires_mvid: null,
26
25
  },
27
- types: emptyPage(limits.typeOffset, limits.typeLimit),
28
- fields: emptyPage(limits.fieldOffset, limits.fieldLimit),
29
- methods: emptyPage(limits.methodOffset, limits.methodLimit),
30
- member_refs: emptyPage(limits.memberRefOffset, limits.memberRefLimit),
31
- call_edges: emptyPage(limits.edgeOffset, limits.edgeLimit),
32
- field_accesses: emptyPage(limits.edgeOffset, limits.edgeLimit),
26
+ types: [],
27
+ fields: [],
28
+ methods: [],
29
+ member_refs: [],
30
+ call_edges: [],
31
+ field_accesses: [],
33
32
  coverage: {
34
33
  state: "unavailable",
35
34
  issues: issue === null ? [] : [issue],
@@ -50,62 +49,37 @@ const resourceDirectory = (pe) => {
50
49
  size: pe.cli.resources.size,
51
50
  };
52
51
  };
53
- const collectMethodBodyIssues = (methods, limits) => methods.methods.flatMap((method) => method.body.status === "partial"
54
- ? [
55
- {
56
- code: "limit-exceeded",
57
- scope: `method.${method.token}.body.instructions`,
58
- offset: method.body.file_offset,
59
- detail: method.body.issue ??
60
- `Instruction decode reached max_method_instructions ${String(limits.maxMethodInstructions)}`,
61
- },
62
- ]
63
- : []);
64
- const readMemberInventory = (bytes, pe, limits) => {
52
+ const readMemberInventory = (bytes, pe) => {
65
53
  const cli = pe.cli;
66
54
  if (cli === null)
67
55
  throw new TypeError("Managed inventory requires CLI metadata");
68
56
  const rootOffset = pe.rvaToOffset(cli.metadata.rva, cli.metadata.size, "cli.metadata");
69
- if (cli.metadata.size > limits.maxMetadataBytes)
70
- throw managedFailure("limit-exceeded", "metadata.root", `CLI metadata size exceeds max_metadata_bytes ${String(limits.maxMetadataBytes)}`, rootOffset);
71
- const layout = readManagedMetadataLayout(bytes, rootOffset, cli.metadata.size, limits.maxTableRows);
72
- const inventory = readManagedMetadataInventory(bytes, layout, {
73
- referenceOffset: 0,
74
- referenceLimit: 1,
75
- resourceOffset: 0,
76
- resourceLimit: 1,
77
- attributeOffset: 0,
78
- attributeLimit: 1,
79
- maxHeapItemBytes: limits.maxHeapItemBytes,
80
- }, resourceDirectory(pe));
57
+ const layout = readManagedMetadataLayout(bytes, rootOffset, cli.metadata.size);
58
+ const inventory = readManagedMetadataInventory(bytes, layout, resourceDirectory(pe));
81
59
  return { layout, inventory };
82
60
  };
83
61
  /** Inspect metadata members and method bodies without loading target code. */
84
- export const inspectManagedMembersBytes = (bytes, target, limits) => {
62
+ export const inspectManagedMembersBytes = (bytes, target) => {
85
63
  const pe = readManagedPeLayout(bytes);
86
64
  if (pe.cli === null)
87
- return unavailable(target, bytes, limits, pe.cliIssue);
65
+ return unavailable(target, bytes, pe.cliIssue);
88
66
  const issues = [];
89
67
  try {
90
- const { layout, inventory } = readMemberInventory(bytes, pe, limits);
68
+ const { layout, inventory } = readMemberInventory(bytes, pe);
91
69
  issues.push(...inventory.issues);
92
- const ranges = typeRanges(bytes, layout, limits.maxHeapItemBytes);
93
- const types = parseTypes(bytes, layout, ranges, limits.maxHeapItemBytes);
94
- const fields = parseFields(bytes, layout, ranges, limits.maxHeapItemBytes);
95
- const memberRefs = parseMemberRefs(bytes, layout, limits.maxHeapItemBytes);
70
+ const ranges = typeRanges(bytes, layout);
71
+ const types = parseTypes(bytes, layout, ranges);
72
+ const fields = parseFields(bytes, layout, ranges);
73
+ const memberRefs = parseMemberRefs(bytes, layout);
96
74
  const methods = parseMethods({
97
75
  bytes,
98
76
  layout,
99
77
  pe,
100
78
  ranges,
101
- maxBytes: limits.maxHeapItemBytes,
102
- limits,
103
79
  });
104
- const methodBodyIssues = collectMethodBodyIssues(methods, limits);
105
- const coverageIssues = [...issues, ...methodBodyIssues];
80
+ const coverageIssues = issues;
106
81
  const related = edges(methods.methods, methods.core, fields.core, memberRefs.core);
107
82
  return managedMemberInspectionSchema.parse({
108
- schema_version: 1,
109
83
  artifact: {
110
84
  path: target.path,
111
85
  sha256: target.sha256,
@@ -123,12 +97,12 @@ export const inspectManagedMembersBytes = (bytes, target, limits) => {
123
97
  requires_artifact_sha256: target.sha256,
124
98
  requires_mvid: inventory.module?.mvid ?? null,
125
99
  },
126
- types: page(types, limits.typeOffset, limits.typeLimit),
127
- fields: page(fields.fields, limits.fieldOffset, limits.fieldLimit),
128
- methods: page(methods.methods, limits.methodOffset, limits.methodLimit),
129
- member_refs: page(memberRefs.refs, limits.memberRefOffset, limits.memberRefLimit),
130
- call_edges: page(related.callEdges, limits.edgeOffset, limits.edgeLimit),
131
- field_accesses: page(related.fieldAccesses, limits.edgeOffset, limits.edgeLimit),
100
+ types,
101
+ fields: fields.fields,
102
+ methods: methods.methods,
103
+ member_refs: memberRefs.refs,
104
+ call_edges: related.callEdges,
105
+ field_accesses: related.fieldAccesses,
132
106
  coverage: {
133
107
  state: coverageIssues.length === 0 ? "complete" : "partial",
134
108
  issues: coverageIssues,
@@ -137,17 +111,12 @@ export const inspectManagedMembersBytes = (bytes, target, limits) => {
137
111
  "Metadata tokens are build-local coordinates and are only meaningful with the reported artifact SHA-256 and MVID.",
138
112
  "CIL instruction anchors are decoded from file-backed method bodies only; no target assembly is loaded or executed.",
139
113
  "Signatures are decoded for common ECMA-335 primitive, class, valuetype, pointer, byref, array, and generic variable forms; unsupported forms retain raw signature hashes.",
140
- ...(methodBodyIssues.length > 0
141
- ? [
142
- "At least one CIL method body reached max_method_instructions; its decoded prefix is partial and has no normalized CIL identity.",
143
- ]
144
- : []),
145
114
  ],
146
115
  });
147
116
  }
148
117
  catch (cause) {
149
118
  if (cause instanceof ManagedReaderFailure)
150
- return unavailable(target, bytes, limits, cause.issue);
119
+ return unavailable(target, bytes, cause.issue);
151
120
  throw cause;
152
121
  }
153
122
  };
@@ -1,42 +1,5 @@
1
- import { metadataRowOffset, } from "./ManagedMetadataLayout.js";
2
- import { MetadataRowCursor, metadataToken, readMetadataString, sha256Bytes, } from "./ManagedMetadataHeaps.js";
3
- import { managedFailure } from "./ManagedReaderFailure.js";
4
- export const emptyPage = (offset, limit) => ({
5
- items: [],
6
- offset,
7
- limit,
8
- total: 0,
9
- returned: 0,
10
- dropped: 0,
11
- complete: offset === 0,
12
- });
13
- export const page = (all, offset, limit) => {
14
- const items = all.slice(offset, offset + limit);
15
- return {
16
- items,
17
- offset,
18
- limit,
19
- total: all.length,
20
- returned: items.length,
21
- dropped: all.length - items.length,
22
- complete: offset === 0 && offset + limit >= all.length,
23
- };
24
- };
25
- export const rowCursor = (bytes, layout, table, row) => {
26
- const descriptor = layout.table(table);
27
- const start = metadataRowOffset(layout, table, row);
28
- if (descriptor === undefined)
29
- throw managedFailure("invalid-row", `metadata.${String(table)}`, "Metadata table is absent", start);
30
- return new MetadataRowCursor(bytes, start, start + descriptor.rowSize, `metadata.${descriptor.name}`);
31
- };
32
- export const codedToken = (raw, bits, tables) => {
33
- if (raw === 0)
34
- return null;
35
- const tag = raw & (2 ** bits - 1);
36
- const row = Math.floor(raw / 2 ** bits);
37
- const table = tables[tag];
38
- return table === undefined || row === 0 ? null : metadataToken(table, row);
39
- };
1
+ import {} from "./ManagedMetadataLayout.js";
2
+ import { metadataRowCursor, metadataCodedToken, metadataToken, readMetadataString, sha256Bytes, } from "./ManagedMetadataHeaps.js";
40
3
  const rowRange = (table, start, nextStart) => {
41
4
  const total = table?.rowCount ?? 0;
42
5
  if (total === 0 || start === 0)
@@ -47,13 +10,13 @@ const rowRange = (table, start, nextStart) => {
47
10
  return { first: start, last: end - 1, count: end - start };
48
11
  };
49
12
  const fullName = (namespace, name) => namespace.length === 0 ? name : `${namespace}.${name}`;
50
- const readTypeRange = (bytes, layout, row, maxBytes) => {
13
+ const readTypeRange = (bytes, layout, row) => {
51
14
  const methods = layout.table(6);
52
15
  const fields = layout.table(4);
53
- const cursor = rowCursor(bytes, layout, 2, row);
16
+ const cursor = metadataRowCursor(bytes, layout, 2, row);
54
17
  cursor.readUInt32();
55
- const name = readMetadataString(bytes, layout, cursor.readIndex(layout.stringIndexSize), maxBytes);
56
- const namespace = readMetadataString(bytes, layout, cursor.readIndex(layout.stringIndexSize), maxBytes);
18
+ const name = readMetadataString(bytes, layout, cursor.readIndex(layout.stringIndexSize), layout.strings.size);
19
+ const namespace = readMetadataString(bytes, layout, cursor.readIndex(layout.stringIndexSize), layout.strings.size);
57
20
  cursor.readIndex(layout.codedIndexSize("TypeDefOrRef"));
58
21
  const fieldStart = cursor.readIndex(layout.tableIndexSize(4));
59
22
  const methodStart = cursor.readIndex(layout.tableIndexSize(6));
@@ -61,7 +24,7 @@ const readTypeRange = (bytes, layout, row, maxBytes) => {
61
24
  let nextMethod = (methods?.rowCount ?? 0) + 1;
62
25
  const typeTable = layout.table(2);
63
26
  if (typeTable !== undefined && row < typeTable.rowCount) {
64
- const next = rowCursor(bytes, layout, 2, row + 1);
27
+ const next = metadataRowCursor(bytes, layout, 2, row + 1);
65
28
  next.readUInt32();
66
29
  next.readIndex(layout.stringIndexSize);
67
30
  next.readIndex(layout.stringIndexSize);
@@ -78,11 +41,11 @@ const readTypeRange = (bytes, layout, row, maxBytes) => {
78
41
  methodEnd: nextMethod,
79
42
  };
80
43
  };
81
- export const typeRanges = (bytes, layout, maxBytes) => {
44
+ export const typeRanges = (bytes, layout) => {
82
45
  const typeTable = layout.table(2);
83
46
  const ranges = [];
84
47
  for (let row = 1; row <= (typeTable?.rowCount ?? 0); row += 1)
85
- ranges.push(readTypeRange(bytes, layout, row, maxBytes));
48
+ ranges.push(readTypeRange(bytes, layout, row));
86
49
  return ranges;
87
50
  };
88
51
  export const declaringType = (ranges, table, row) => {
@@ -94,16 +57,16 @@ export const declaringType = (ranges, table, row) => {
94
57
  }
95
58
  return null;
96
59
  };
97
- export const parseTypes = (bytes, layout, ranges, maxBytes) => {
60
+ export const parseTypes = (bytes, layout, ranges) => {
98
61
  const typeTable = layout.table(2);
99
62
  const fields = layout.table(4);
100
63
  const methods = layout.table(6);
101
64
  const items = [];
102
65
  for (let row = 1; row <= (typeTable?.rowCount ?? 0); row += 1) {
103
- const cursor = rowCursor(bytes, layout, 2, row);
66
+ const cursor = metadataRowCursor(bytes, layout, 2, row);
104
67
  const flags = cursor.readUInt32();
105
- const name = readMetadataString(bytes, layout, cursor.readIndex(layout.stringIndexSize), maxBytes);
106
- const namespace = readMetadataString(bytes, layout, cursor.readIndex(layout.stringIndexSize), maxBytes);
68
+ const name = readMetadataString(bytes, layout, cursor.readIndex(layout.stringIndexSize), layout.strings.size);
69
+ const namespace = readMetadataString(bytes, layout, cursor.readIndex(layout.stringIndexSize), layout.strings.size);
107
70
  const extendsRaw = cursor.readIndex(layout.codedIndexSize("TypeDefOrRef"));
108
71
  const fieldStart = cursor.readIndex(layout.tableIndexSize(4));
109
72
  const methodStart = cursor.readIndex(layout.tableIndexSize(6));
@@ -117,7 +80,7 @@ export const parseTypes = (bytes, layout, ranges, maxBytes) => {
117
80
  name,
118
81
  full_name: fullName(namespace, name),
119
82
  flags,
120
- extends_token: codedToken(extendsRaw, 2, [2, 1, 27]),
83
+ extends_token: metadataCodedToken(extendsRaw, 2, [2, 1, 27]),
121
84
  field_list: {
122
85
  first_row: fieldRange.first,
123
86
  last_row: fieldRange.last,
@@ -342,12 +342,12 @@ const readOperand = (il, offset, kind) => {
342
342
  return { next: offset + 4, anchorKind: tokenKind(token), value: token };
343
343
  return { next: offset, anchorKind: "unknown", value: null };
344
344
  };
345
- export const decodeInstructions = (il, limit) => {
345
+ export const decodeInstructions = (il) => {
346
346
  const parsed = [];
347
347
  let offset = 0;
348
348
  let issue = null;
349
349
  try {
350
- while (offset < il.length && parsed.length < limit) {
350
+ while (offset < il.length) {
351
351
  const start = offset;
352
352
  const first = il.readUInt8(offset);
353
353
  offset += 1;
@@ -1,15 +1,15 @@
1
- import { codedToken, declaringType, rowCursor, signature, } from "./ManagedMemberInspectorCore.js";
2
- import { metadataToken, readMetadataBlob, readMetadataString, } from "./ManagedMetadataHeaps.js";
1
+ import { declaringType, signature, } from "./ManagedMemberInspectorCore.js";
2
+ import { metadataToken, metadataRowCursor, metadataCodedToken, readMetadataBlob, readMetadataString, } from "./ManagedMetadataHeaps.js";
3
3
  import { methodBody } from "./ManagedMethodBodyReader.js";
4
- export const parseFields = (bytes, layout, ranges, maxBytes) => {
4
+ export const parseFields = (bytes, layout, ranges) => {
5
5
  const fields = [];
6
6
  const core = new Map();
7
7
  const table = layout.table(4);
8
8
  for (let row = 1; row <= (table?.rowCount ?? 0); row += 1) {
9
- const cursor = rowCursor(bytes, layout, 4, row);
9
+ const cursor = metadataRowCursor(bytes, layout, 4, row);
10
10
  const flags = cursor.readUInt16();
11
- const name = readMetadataString(bytes, layout, cursor.readIndex(layout.stringIndexSize), maxBytes);
12
- const sig = readMetadataBlob(bytes, layout, cursor.readIndex(layout.blobIndexSize), maxBytes);
11
+ const name = readMetadataString(bytes, layout, cursor.readIndex(layout.stringIndexSize), layout.strings.size);
12
+ const sig = readMetadataBlob(bytes, layout, cursor.readIndex(layout.blobIndexSize), layout.blob.size);
13
13
  const declared = declaringType(ranges, "field", row);
14
14
  const token = metadataToken(4, row);
15
15
  fields.push({
@@ -25,20 +25,20 @@ export const parseFields = (bytes, layout, ranges, maxBytes) => {
25
25
  }
26
26
  return { fields, core };
27
27
  };
28
- export const parseMemberRefs = (bytes, layout, maxBytes) => {
28
+ export const parseMemberRefs = (bytes, layout) => {
29
29
  const refs = [];
30
30
  const core = new Map();
31
31
  const table = layout.table(10);
32
32
  for (let row = 1; row <= (table?.rowCount ?? 0); row += 1) {
33
- const cursor = rowCursor(bytes, layout, 10, row);
33
+ const cursor = metadataRowCursor(bytes, layout, 10, row);
34
34
  const parentRaw = cursor.readIndex(layout.codedIndexSize("MemberRefParent"));
35
- const name = readMetadataString(bytes, layout, cursor.readIndex(layout.stringIndexSize), maxBytes);
36
- const sig = readMetadataBlob(bytes, layout, cursor.readIndex(layout.blobIndexSize), maxBytes);
35
+ const name = readMetadataString(bytes, layout, cursor.readIndex(layout.stringIndexSize), layout.strings.size);
36
+ const sig = readMetadataBlob(bytes, layout, cursor.readIndex(layout.blobIndexSize), layout.blob.size);
37
37
  const token = metadataToken(10, row);
38
38
  refs.push({
39
39
  token,
40
40
  row_offset: cursor.start,
41
- parent_token: codedToken(parentRaw, 3, [2, 1, 26, 6, 27]),
41
+ parent_token: metadataCodedToken(parentRaw, 3, [2, 1, 26, 6, 27]),
42
42
  name,
43
43
  signature: signature(sig),
44
44
  });
@@ -46,17 +46,17 @@ export const parseMemberRefs = (bytes, layout, maxBytes) => {
46
46
  }
47
47
  return { refs, core };
48
48
  };
49
- export const parseMethods = ({ bytes, layout, pe, ranges, maxBytes, limits, }) => {
49
+ export const parseMethods = ({ bytes, layout, pe, ranges, }) => {
50
50
  const methods = [];
51
51
  const core = new Map();
52
52
  const table = layout.table(6);
53
53
  for (let row = 1; row <= (table?.rowCount ?? 0); row += 1) {
54
- const cursor = rowCursor(bytes, layout, 6, row);
54
+ const cursor = metadataRowCursor(bytes, layout, 6, row);
55
55
  const rva = cursor.readUInt32();
56
56
  const implFlags = cursor.readUInt16();
57
57
  const flags = cursor.readUInt16();
58
- const name = readMetadataString(bytes, layout, cursor.readIndex(layout.stringIndexSize), maxBytes);
59
- const sig = readMetadataBlob(bytes, layout, cursor.readIndex(layout.blobIndexSize), maxBytes);
58
+ const name = readMetadataString(bytes, layout, cursor.readIndex(layout.stringIndexSize), layout.strings.size);
59
+ const sig = readMetadataBlob(bytes, layout, cursor.readIndex(layout.blobIndexSize), layout.blob.size);
60
60
  cursor.readIndex(layout.tableIndexSize(8));
61
61
  const declared = declaringType(ranges, "method", row);
62
62
  const token = metadataToken(6, row);
@@ -70,7 +70,7 @@ export const parseMethods = ({ bytes, layout, pe, ranges, maxBytes, limits, }) =
70
70
  impl_flags: implFlags,
71
71
  flags,
72
72
  signature: signature(sig),
73
- body: methodBody(bytes, pe, rva, limits),
73
+ body: methodBody(bytes, pe, rva),
74
74
  });
75
75
  core.set(token, { token, name, declaringType: declared?.fullName ?? null });
76
76
  }
@@ -1,4 +1,5 @@
1
1
  import { createHash } from "node:crypto";
2
+ import { metadataRowOffset, } from "./ManagedMetadataLayout.js";
2
3
  import { managedFailure } from "./ManagedReaderFailure.js";
3
4
  const requireRange = (bytes, offset, length, scope) => {
4
5
  if (offset < 0 || length < 0 || offset > bytes.length - length)
@@ -65,19 +66,19 @@ const compressedLength = (bytes, offset, scope) => {
65
66
  }
66
67
  throw managedFailure("invalid-blob", scope, "Metadata blob uses a reserved compressed-length prefix", offset);
67
68
  };
68
- /** Read one bounded UTF-8 value from #Strings. */
69
- export const readMetadataString = (bytes, layout, index, maxBytes) => {
69
+ /** Read one UTF-8 value from #Strings within its PE/CLI stream extent. */
70
+ export const readMetadataString = (bytes, layout, index, heapExtent) => {
70
71
  if (index === 0)
71
72
  return "";
72
73
  if (index < 0 || index >= layout.strings.size)
73
74
  throw managedFailure("invalid-heap-index", "metadata.#Strings", "String heap index is outside #Strings", layout.strings.offset + Math.max(index, 0));
74
75
  const start = layout.strings.offset + index;
75
- const maximum = Math.min(layout.strings.offset + layout.strings.size, start + maxBytes + 1);
76
+ const maximum = Math.min(layout.strings.offset + layout.strings.size, start + heapExtent + 1);
76
77
  let end = start;
77
78
  while (end < maximum && bytes[end] !== 0)
78
79
  end += 1;
79
80
  if (end === maximum)
80
- throw managedFailure("limit-exceeded", "metadata.#Strings", `String heap item exceeds max_heap_item_bytes ${String(maxBytes)}`, start);
81
+ throw managedFailure("invalid-string", "metadata.#Strings", "String heap item has no terminator within #Strings", start);
81
82
  try {
82
83
  return new TextDecoder("utf-8", { fatal: true }).decode(bytes.subarray(start, end));
83
84
  }
@@ -85,16 +86,16 @@ export const readMetadataString = (bytes, layout, index, maxBytes) => {
85
86
  throw managedFailure("invalid-string", "metadata.#Strings", "String heap item is not valid UTF-8", start);
86
87
  }
87
88
  };
88
- /** Read one bounded item from #Blob without interpreting its contents. */
89
- export const readMetadataBlob = (bytes, layout, index, maxBytes) => {
89
+ /** Read one #Blob item while validating its encoded extent against the heap. */
90
+ export const readMetadataBlob = (bytes, layout, index, heapExtent) => {
90
91
  if (index === 0)
91
92
  return Buffer.alloc(0);
92
93
  if (index < 0 || index >= layout.blob.size)
93
94
  throw managedFailure("invalid-heap-index", "metadata.#Blob", "Blob heap index is outside #Blob", layout.blob.offset + Math.max(index, 0));
94
95
  const start = layout.blob.offset + index;
95
96
  const decoded = compressedLength(bytes, start, "metadata.#Blob");
96
- if (decoded.length > maxBytes)
97
- throw managedFailure("limit-exceeded", "metadata.#Blob", `Blob heap item exceeds max_heap_item_bytes ${String(maxBytes)}`, start);
97
+ if (decoded.length > heapExtent)
98
+ throw managedFailure("invalid-blob", "metadata.#Blob", "Blob length exceeds the admitted heap extent", start);
98
99
  const content = start + decoded.prefix;
99
100
  if (content > layout.blob.offset + layout.blob.size - decoded.length)
100
101
  throw managedFailure("invalid-blob", "metadata.#Blob", "Blob heap item leaves #Blob", start);
@@ -129,3 +130,20 @@ export const sha256Bytes = (bytes) => createHash("sha256").update(bytes).digest(
129
130
  export const strongNameToken = (publicKey) => Buffer.from(createHash("sha1").update(publicKey).digest().subarray(-8))
130
131
  .reverse()
131
132
  .toString("hex");
133
+ /** Create a cursor bounded to one admitted metadata table row. */
134
+ export const metadataRowCursor = (bytes, layout, table, row) => {
135
+ const descriptor = layout.table(table);
136
+ const start = metadataRowOffset(layout, table, row);
137
+ if (descriptor === undefined)
138
+ throw managedFailure("invalid-row", `metadata.${String(table)}`, "Metadata table is absent", start);
139
+ return new MetadataRowCursor(bytes, start, start + descriptor.rowSize, `metadata.${descriptor.name}`);
140
+ };
141
+ /** Decode a metadata coded index without signed 32-bit coercion. */
142
+ export const metadataCodedToken = (raw, bits, tables) => {
143
+ if (raw === 0)
144
+ return null;
145
+ const tag = raw & (2 ** bits - 1);
146
+ const row = Math.floor(raw / 2 ** bits);
147
+ const table = tables[tag];
148
+ return table === undefined || row === 0 ? null : metadataToken(table, row);
149
+ };
@@ -13,53 +13,44 @@ const safeRead = (operation, issues) => {
13
13
  return undefined;
14
14
  }
15
15
  };
16
- const pageRows = (descriptor, offset, limit, read) => {
16
+ const readRows = (descriptor, read) => {
17
17
  const total = descriptor?.rowCount ?? 0;
18
18
  const items = [];
19
- const end = Math.min(total, offset + limit);
20
- for (let index = offset; index < end; index += 1) {
19
+ for (let index = 0; index < total; index += 1) {
21
20
  const item = read(index + 1);
22
21
  if (item !== undefined)
23
22
  items.push(item);
24
23
  }
25
- return {
26
- items,
27
- offset,
28
- limit,
29
- total,
30
- returned: items.length,
31
- dropped: total - items.length,
32
- complete: offset === 0 && end === total && items.length === total,
33
- };
24
+ return items;
34
25
  };
35
26
  const uniqueIssues = (issues) => [
36
27
  ...new Map(issues.map((issue) => [JSON.stringify(issue), issue])).values(),
37
28
  ];
38
- const readPagedReferences = (bytes, layout, input, issues) => pageRows(layout.table(35), input.referenceOffset, input.referenceLimit, (row) => safeRead(() => readAssemblyReference(bytes, layout, row, input.maxHeapItemBytes), issues));
39
- const readPagedResources = ({ bytes, layout, input, resourceDirectory, issues, }) => pageRows(layout.table(40), input.resourceOffset, input.resourceLimit, (row) => safeRead(() => readResource({
29
+ const heapExtent = (layout) => Math.max(layout.strings.size, layout.blob.size);
30
+ const readReferences = (bytes, layout, issues) => readRows(layout.table(35), (row) => safeRead(() => readAssemblyReference(bytes, layout, row, heapExtent(layout)), issues));
31
+ const readResources = ({ bytes, layout, resourceDirectory, issues, }) => readRows(layout.table(40), (row) => safeRead(() => readResource({
40
32
  bytes,
41
33
  layout,
42
34
  row,
43
- maxBytes: input.maxHeapItemBytes,
44
35
  directory: resourceDirectory,
45
36
  issues,
46
37
  }), issues));
47
- const readPagedAttributes = (bytes, layout, input, issues) => pageRows(layout.table(12), input.attributeOffset, input.attributeLimit, (row) => safeRead(() => readCustomAttribute(bytes, layout, row, input.maxHeapItemBytes), issues));
48
- const collectReferenceNames = (bytes, layout, maxBytes, issues) => {
38
+ const readAttributes = (bytes, layout, issues) => readRows(layout.table(12), (row) => safeRead(() => readCustomAttribute(bytes, layout, row, heapExtent(layout)), issues));
39
+ const collectReferenceNames = (bytes, layout, issues) => {
49
40
  const names = [];
50
41
  const referenceTable = layout.table(35);
51
42
  for (let row = 1; row <= (referenceTable?.rowCount ?? 0); row += 1) {
52
- const reference = safeRead(() => readAssemblyReference(bytes, layout, row, maxBytes), issues);
43
+ const reference = safeRead(() => readAssemblyReference(bytes, layout, row, heapExtent(layout)), issues);
53
44
  if (reference !== undefined)
54
45
  names.push(reference.name);
55
46
  }
56
47
  return names;
57
48
  };
58
- const collectTargetFrameworks = (bytes, layout, maxBytes, issues) => {
49
+ const collectTargetFrameworks = (bytes, layout, issues) => {
59
50
  const targetFrameworks = [];
60
51
  const attributeTable = layout.table(12);
61
52
  for (let row = 1; row <= (attributeTable?.rowCount ?? 0); row += 1) {
62
- const attribute = safeRead(() => readCustomAttribute(bytes, layout, row, maxBytes), issues);
53
+ const attribute = safeRead(() => readCustomAttribute(bytes, layout, row, heapExtent(layout)), issues);
63
54
  if (attribute?.parent_token === metadataToken(32, 1) &&
64
55
  attribute.type_name ===
65
56
  "System.Runtime.Versioning.TargetFrameworkAttribute" &&
@@ -69,23 +60,23 @@ const collectTargetFrameworks = (bytes, layout, maxBytes, issues) => {
69
60
  }
70
61
  return targetFrameworks;
71
62
  };
72
- /** Inventory bounded identity tables without CLR reflection or execution. */
73
- export const readManagedMetadataInventory = (bytes, layout, input, resourceDirectory) => {
63
+ /** Inventory identity tables without CLR reflection or execution. */
64
+ export const readManagedMetadataInventory = (bytes, layout, resourceDirectory) => {
74
65
  const issues = [];
75
- const module = safeRead(() => readModule(bytes, layout, input.maxHeapItemBytes), issues) ??
66
+ const module = safeRead(() => readModule(bytes, layout, heapExtent(layout)), issues) ??
67
+ null;
68
+ const assembly = safeRead(() => readAssembly(bytes, layout, heapExtent(layout)), issues) ??
76
69
  null;
77
- const assembly = safeRead(() => readAssembly(bytes, layout, input.maxHeapItemBytes), issues) ?? null;
78
- const references = readPagedReferences(bytes, layout, input, issues);
79
- const resources = readPagedResources({
70
+ const references = readReferences(bytes, layout, issues);
71
+ const resources = readResources({
80
72
  bytes,
81
73
  layout,
82
- input,
83
74
  resourceDirectory,
84
75
  issues,
85
76
  });
86
- const attributes = readPagedAttributes(bytes, layout, input, issues);
87
- const referenceNames = collectReferenceNames(bytes, layout, input.maxHeapItemBytes, issues);
88
- const targetFrameworks = collectTargetFrameworks(bytes, layout, input.maxHeapItemBytes, issues);
77
+ const attributes = readAttributes(bytes, layout, issues);
78
+ const referenceNames = collectReferenceNames(bytes, layout, issues);
79
+ const targetFrameworks = collectTargetFrameworks(bytes, layout, issues);
89
80
  return {
90
81
  module,
91
82
  assembly,