rea-agents 3.1.0 → 3.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (590) hide show
  1. package/README.md +72 -95
  2. package/bridge/ghidra/ReaGhidraBridge.java +609 -841
  3. package/bridge/hopper_bridge.py +99 -344
  4. package/dist/application/AbortablePromise.js +6 -3
  5. package/dist/application/AnalysisSnapshotCache.js +0 -1
  6. package/dist/application/AnalysisSnapshotFiles.js +7 -7
  7. package/dist/application/AndroidApplicationService.js +1 -1
  8. package/dist/application/AppleApplicationService.js +1 -1
  9. package/dist/application/ArtifactExtraction.js +35 -54
  10. package/dist/application/ArtifactExtractionDestination.js +17 -0
  11. package/dist/application/ArtifactGraphConstruction.js +2 -17
  12. package/dist/application/ArtifactInventory/classify.js +2 -6
  13. package/dist/application/ArtifactInventory/hash.js +2 -20
  14. package/dist/application/ArtifactInventory/scanCanonical.js +8 -12
  15. package/dist/application/ArtifactInventory/scanReader.js +69 -51
  16. package/dist/application/ArtifactInventory.js +6 -14
  17. package/dist/application/AuthorizedArtifactInventory.js +3 -13
  18. package/dist/application/BinarySession.js +41 -13
  19. package/dist/application/BinarySessionComposition.js +0 -11
  20. package/dist/application/BinarySessionOpen.js +2 -1
  21. package/dist/application/BinarySessionRecords.js +5 -93
  22. package/dist/application/BinarySessionStatus.js +5 -16
  23. package/dist/application/BinaryTargetResolver.js +216 -0
  24. package/dist/application/BrowserEvidence.js +42 -58
  25. package/dist/application/BrowserObservationService.js +3 -6
  26. package/dist/application/BrowserScenarioCaptureService.js +3 -6
  27. package/dist/application/BrowserScenarioEvidence.js +3 -3
  28. package/dist/application/CallPathTracing.js +2 -36
  29. package/dist/application/CapabilityInventory.js +10 -15
  30. package/dist/application/ClientConfigurationDocument.js +27 -0
  31. package/dist/application/ClientRegistrationStatus.js +16 -13
  32. package/dist/application/CommandShimReplay.js +14 -1
  33. package/dist/application/DirectAnalysis.js +22 -46
  34. package/dist/application/DirectAnalysisStatus.js +5 -61
  35. package/dist/application/Doctor.js +11 -32
  36. package/dist/application/DoctorDiagnostics.js +1 -2
  37. package/dist/application/DoctorScope.js +1 -1
  38. package/dist/application/ElectronActiveEvidence.js +3 -8
  39. package/dist/application/ElectronActiveObservationService.js +3 -6
  40. package/dist/application/ElectronBoundaryAnalysis.js +7 -8
  41. package/dist/application/ElectronBoundaryGraphContext.js +1 -1
  42. package/dist/application/ElectronBoundaryGraphIpc.js +3 -3
  43. package/dist/application/ElectronBoundaryGraphNative.js +1 -2
  44. package/dist/application/ElectronBoundaryGraphWindows.js +6 -8
  45. package/dist/application/ElectronEvidence.js +4 -7
  46. package/dist/application/ElectronObservationService.js +5 -9
  47. package/dist/application/EnhancedLiteralTracing.js +42 -65
  48. package/dist/application/EnhancedTools.js +76 -44
  49. package/dist/application/EvidenceBundleCommands.js +11 -11
  50. package/dist/application/EvidenceBundleFiles.js +9 -15
  51. package/dist/application/EvidenceLedger.js +6 -41
  52. package/dist/application/FilesystemSnapshot.js +2 -3
  53. package/dist/application/InterfaceBuilderAnalysis.js +266 -0
  54. package/dist/application/InventoryProjectionEvidence.js +4 -2
  55. package/dist/application/InvestigationProviders.js +1 -1
  56. package/dist/application/JavaScriptApplicationEvidence.js +2 -5
  57. package/dist/application/JavaScriptApplicationEvidenceGraph.js +6 -10
  58. package/dist/application/JavaScriptApplicationService.js +6 -29
  59. package/dist/application/JavaScriptApplicationWorkflowEvidence.js +5 -5
  60. package/dist/application/JavaScriptApplicationWorkflowService.js +0 -8
  61. package/dist/application/JavaScriptArtifactAnalysis.js +38 -127
  62. package/dist/application/JavaScriptArtifactFiles.js +67 -107
  63. package/dist/application/JavaScriptArtifactGraphAccumulator.js +0 -7
  64. package/dist/application/JavaScriptArtifactGraphBuilder.js +7 -58
  65. package/dist/application/JavaScriptArtifactGraphBundlers.js +1 -6
  66. package/dist/application/JavaScriptArtifactGraphContext.js +12 -39
  67. package/dist/application/JavaScriptArtifactGraphDocuments.js +4 -11
  68. package/dist/application/JavaScriptArtifactGraphEvidence.js +0 -14
  69. package/dist/application/JavaScriptArtifactGraphFindings.js +3 -3
  70. package/dist/application/JavaScriptArtifactGraphStructure.js +16 -17
  71. package/dist/application/JavaScriptArtifactPathResolution.js +61 -49
  72. package/dist/application/JavaScriptArtifactReconstruction.js +5 -10
  73. package/dist/application/JavaScriptArtifactReconstructionInput.js +2 -14
  74. package/dist/application/JavaScriptJsonModules.js +2 -2
  75. package/dist/application/JavaScriptModuleRelationships.js +22 -27
  76. package/dist/application/JavaScriptReplayPlanning.js +9 -3
  77. package/dist/application/JavaScriptReplayService.js +6 -32
  78. package/dist/application/JavaScriptReturnShapeProjection.js +12 -42
  79. package/dist/application/JavaScriptRuntimeObservationEvidence.js +7 -8
  80. package/dist/application/JavaScriptRuntimeObservationService.js +4 -8
  81. package/dist/application/JavaScriptRuntimeReconciliationEvidence.js +2 -3
  82. package/dist/application/JavaScriptSemanticGraphBuilder.js +11 -41
  83. package/dist/application/JavaScriptSemanticGraphConstruction.js +5 -29
  84. package/dist/application/JavaScriptSemanticGraphEvidence.js +1 -1
  85. package/dist/application/JavaScriptSemanticGraphFingerprintProjection.js +1 -1
  86. package/dist/application/JavaScriptSemanticGraphFlowProjection.js +0 -13
  87. package/dist/application/JavaScriptSemanticGraphProjection.js +1 -3
  88. package/dist/application/JavaScriptSemanticTraceService.js +1 -10
  89. package/dist/application/JsonFiles.js +79 -0
  90. package/dist/application/LinuxHopper.js +11 -9
  91. package/dist/application/LoopbackReplay.js +26 -23
  92. package/dist/application/LoopbackReplayRecorder.js +29 -1
  93. package/dist/application/ManagedApplicationGraphService.js +1 -2
  94. package/dist/application/ManagedMemberComparisonService.js +11 -41
  95. package/dist/application/ManagedNativeVerificationService.js +1 -2
  96. package/dist/application/ManagedReconstructionService.js +1 -1
  97. package/dist/application/ManagedRuntimeCorrelationService.js +5 -8
  98. package/dist/application/NativeApiInspection.js +2 -7
  99. package/dist/application/NativeUiActionTrace.js +394 -0
  100. package/dist/application/NodeRuntimeCharacterizationService.js +3 -7
  101. package/dist/application/PermissionAuthority.js +15 -7
  102. package/dist/application/PermissionFailure.js +5 -0
  103. package/dist/application/ProcessCaptureAuthority.js +5 -7
  104. package/dist/application/ProcessCaptureJournal.js +3 -2
  105. package/dist/application/ProcessCaptureLifecycle.js +5 -12
  106. package/dist/application/ProcessCheckpoints.js +29 -11
  107. package/dist/application/ProcessCli.js +6 -16
  108. package/dist/application/ProcessEvidence.js +5 -7
  109. package/dist/application/ProcessHarness.js +52 -17
  110. package/dist/application/ProcessReactiveCoordinator.js +2 -4
  111. package/dist/application/ProcessReactiveEffects.js +9 -3
  112. package/dist/application/ProcessReactiveHarness.js +13 -7
  113. package/dist/application/ProcessSampling.js +2 -4
  114. package/dist/application/ProcessTimer.js +39 -0
  115. package/dist/application/ProjectPermissionStore.js +39 -96
  116. package/dist/application/RealHopperAssertions.js +20 -66
  117. package/dist/application/ReconstructionCoverageService.js +12 -58
  118. package/dist/application/ReconstructionObligationAuthority.js +2 -2
  119. package/dist/application/ReconstructionObligationCandidates.js +4 -4
  120. package/dist/application/ReconstructionObligationLedgerEvaluation.js +8 -15
  121. package/dist/application/ReconstructionObligationLedgerProjection.js +3 -7
  122. package/dist/application/ReconstructionObligationLedgerService.js +19 -38
  123. package/dist/application/ReferenceSourceImport.js +19 -45
  124. package/dist/application/ReferenceSourceImportEntries.js +2 -4
  125. package/dist/application/ReferenceSourceImportPolicy.js +5 -32
  126. package/dist/application/ReferenceSourceImportTypes.js +0 -16
  127. package/dist/application/RuntimeExecutableDiagnostics.js +55 -29
  128. package/dist/application/SessionProviderRouter.js +2 -2
  129. package/dist/application/Setup.js +1 -3
  130. package/dist/application/SetupClientConfiguration.js +22 -93
  131. package/dist/application/SetupRegistrationEnvironment.js +0 -7
  132. package/dist/application/StoreFileLock.js +119 -0
  133. package/dist/application/TerminalRenderer.js +2 -3
  134. package/dist/application/Uninstall.js +9 -14
  135. package/dist/application/UnknownEvidence.js +1 -1
  136. package/dist/artifacts/ArtifactPaths.js +2 -5
  137. package/dist/artifacts/ArtifactProvider.js +36 -58
  138. package/dist/artifacts/DirectoryArtifactReader.js +13 -8
  139. package/dist/artifacts/MachOSliceArtifactReader.js +1 -5
  140. package/dist/artifacts/NativeDmgArtifactReader.js +11 -11
  141. package/dist/artifacts/NibArchive.js +269 -0
  142. package/dist/artifacts/SafeOutputTree.js +15 -24
  143. package/dist/browser/BrowserProcessStartup.js +1 -2
  144. package/dist/browser/CdpAuthorizedMainFrame.js +16 -0
  145. package/dist/browser/CdpBrowserProvider.js +3 -13
  146. package/dist/browser/CdpCanonicalJsonDigest.js +9 -0
  147. package/dist/browser/CdpCaptureDocuments.js +28 -76
  148. package/dist/browser/CdpCaptureEventBodyShapes.js +13 -33
  149. package/dist/browser/CdpCaptureEventHandlers.js +22 -87
  150. package/dist/browser/CdpCaptureEvents.js +2 -8
  151. package/dist/browser/CdpCaptureStorage.js +9 -20
  152. package/dist/browser/CdpCaptureStorageFingerprints.js +85 -98
  153. package/dist/browser/CdpCaptureValues.js +21 -21
  154. package/dist/browser/CdpConnection.js +10 -25
  155. package/dist/browser/CdpElectronInspection.js +26 -50
  156. package/dist/browser/CdpElectronProvider.js +10 -35
  157. package/dist/browser/CdpElectronScriptEvents.js +8 -16
  158. package/dist/browser/CdpElectronScripts.js +6 -35
  159. package/dist/browser/CdpElectronWorkers.js +6 -10
  160. package/dist/browser/CdpEndpoint.js +25 -41
  161. package/dist/browser/CdpObservationSession.js +14 -26
  162. package/dist/browser/CdpPageCapture.js +34 -48
  163. package/dist/browser/CdpPageCaptureScripts.js +1 -19
  164. package/dist/browser/CdpPageCaptureWorkers.js +6 -10
  165. package/dist/browser/CdpSafeMetadata.js +19 -22
  166. package/dist/browser/CdpScreenshot.js +3 -5
  167. package/dist/browser/CdpTargetSession.js +1 -2
  168. package/dist/browser/CdpWebMcpDiscovery.js +13 -22
  169. package/dist/browser/ElectronFileScope.js +8 -19
  170. package/dist/browser/JavaScriptRuntimeScope.js +9 -14
  171. package/dist/browser/PlaywrightBrowserScenarioProvider.js +31 -64
  172. package/dist/browser/PlaywrightElectronActiveActions.js +54 -69
  173. package/dist/browser/PlaywrightElectronActiveProvider.js +14 -34
  174. package/dist/browser/PlaywrightExecutionBoundary.js +16 -5
  175. package/dist/browser/PlaywrightScenarioActions.js +3 -7
  176. package/dist/browser/PlaywrightScenarioArtifacts.js +23 -92
  177. package/dist/browser/PlaywrightScenarioBrowser.js +3 -5
  178. package/dist/browser/PlaywrightScenarioEvents.js +45 -94
  179. package/dist/browser/PlaywrightScenarioSession.js +14 -30
  180. package/dist/browser/PngVisualDiff.js +22 -14
  181. package/dist/browser/SensitiveTextCapture.js +0 -17
  182. package/dist/browser/V8InspectorCaptureProjection.js +7 -8
  183. package/dist/browser/V8InspectorEndpoint.js +12 -14
  184. package/dist/browser/V8InspectorProvider.js +20 -61
  185. package/dist/browser/WebSourceMapFetcher.js +56 -176
  186. package/dist/catalogIdentity.js +0 -54
  187. package/dist/cli/artifactCommands.js +49 -77
  188. package/dist/cli/coreAnalysisCommands.js +83 -133
  189. package/dist/cli/javascriptApplicationAnalysis.js +1 -9
  190. package/dist/cli/managedCommands.js +5 -270
  191. package/dist/cli/setupCommands.js +3 -12
  192. package/dist/cli/utilityCommands.js +7 -41
  193. package/dist/cli.js +0 -2
  194. package/dist/cliApplicationCommands.js +42 -112
  195. package/dist/cliBrowserAdvancedCommands.js +10 -106
  196. package/dist/cliBrowserCommands.js +15 -127
  197. package/dist/cliBrowserContext.js +30 -0
  198. package/dist/cliCommandNames.js +4 -5
  199. package/dist/cliElectronCommands.js +8 -72
  200. package/dist/cliEvidenceCommands.js +8 -77
  201. package/dist/cliJavaScriptRuntimeCommands.js +9 -91
  202. package/dist/cliJsonInput.js +4 -14
  203. package/dist/cliObservationOptions.js +11 -96
  204. package/dist/cliPolicyCommands.js +2 -17
  205. package/dist/cliProcessCommands.js +3 -3
  206. package/dist/cliSetup.js +0 -13
  207. package/dist/config/browserScenario.js +2 -2
  208. package/dist/config/environment.js +0 -9
  209. package/dist/config/parseConfig.js +1 -33
  210. package/dist/config/parsers.js +6 -27
  211. package/dist/config/passiveObservation.js +7 -77
  212. package/dist/config/permissions.js +0 -7
  213. package/dist/contracts/analysisSearchContract.js +2 -5
  214. package/dist/contracts/applicationToolContracts.js +56 -109
  215. package/dist/contracts/applicationWorkflowInputContracts.js +27 -102
  216. package/dist/contracts/artifactComparisonExample.js +58 -60
  217. package/dist/contracts/artifactToolContracts.js +20 -67
  218. package/dist/contracts/browserScenarioToolContracts.js +6 -51
  219. package/dist/contracts/browserToolContracts.js +8 -73
  220. package/dist/contracts/electronToolContracts.js +8 -108
  221. package/dist/contracts/enhancedInputs.js +23 -54
  222. package/dist/contracts/errorSchemas.js +0 -1
  223. package/dist/contracts/functionComparisonExample.js +10 -24
  224. package/dist/contracts/functionInstructionContract.js +1 -3
  225. package/dist/contracts/functionWorkflowToolContracts.js +2 -2
  226. package/dist/contracts/hopperMemoryContracts.js +3 -3
  227. package/dist/contracts/investigationExamples.js +14 -11
  228. package/dist/contracts/javascriptApplicationWorkflowExamples.js +12 -19
  229. package/dist/contracts/javascriptRuntimeObservationToolContracts.js +2 -20
  230. package/dist/contracts/javascriptRuntimeReconciliationExample.js +45 -12
  231. package/dist/contracts/managedToolContracts.js +6 -95
  232. package/dist/contracts/managedWorkflowExamples.js +77 -128
  233. package/dist/contracts/managedWorkflowToolContracts.js +51 -77
  234. package/dist/contracts/nativeToolContracts.js +7 -11
  235. package/dist/contracts/processCaptureExample.js +2 -69
  236. package/dist/contracts/promptContracts.js +49 -67
  237. package/dist/contracts/providerSelection.js +0 -1
  238. package/dist/contracts/reconstructionReadinessExample.js +1 -6
  239. package/dist/contracts/sessionStatusContract.js +1 -17
  240. package/dist/contracts/sessionToolSchemas.js +6 -15
  241. package/dist/contracts/toolContractExamples.js +11 -11
  242. package/dist/contracts/toolContractHelpers.js +0 -4
  243. package/dist/contracts/toolContracts.js +60 -71
  244. package/dist/contracts/toolEffects.js +5 -13
  245. package/dist/contracts/toolOutputSchemaGroups.js +37 -91
  246. package/dist/contracts/toolOutputSchemaPrimitives.js +16 -56
  247. package/dist/contracts/toolSchemaMetadata.js +8 -19
  248. package/dist/contracts/unknownContractExamples.js +0 -2
  249. package/dist/domain/analysisErrorPresentation.js +46 -54
  250. package/dist/domain/analysisErrorProjection.js +28 -37
  251. package/dist/domain/analysisProfile.js +3 -31
  252. package/dist/domain/analysisSnapshot.js +3 -12
  253. package/dist/domain/androidApplication.js +15 -54
  254. package/dist/domain/appleApplication.js +24 -67
  255. package/dist/domain/artifactComparison.js +11 -29
  256. package/dist/domain/artifactGraph.js +14 -44
  257. package/dist/domain/artifactInspection.js +38 -69
  258. package/dist/domain/artifactInventoryEvidence.js +27 -21
  259. package/dist/domain/binaryTarget.js +2 -221
  260. package/dist/domain/browserCaptureComparison.js +47 -24
  261. package/dist/domain/browserObservation.js +28 -193
  262. package/dist/domain/browserObservationSchemas.js +5 -23
  263. package/dist/domain/browserScenario.js +11 -14
  264. package/dist/domain/browserScenarioCapture.js +11 -12
  265. package/dist/domain/browserScenarioCaptureValues.js +146 -84
  266. package/dist/domain/browserScenarioDiff.js +2 -59
  267. package/dist/domain/browserScenarioDiffEvidence.js +51 -0
  268. package/dist/domain/browserScenarioDiffValues.js +21 -38
  269. package/dist/domain/browserScenarioValues.js +80 -109
  270. package/dist/domain/browserSession.js +4 -7
  271. package/dist/domain/bundleComparison.js +6 -32
  272. package/dist/domain/bytecodeProvider.js +20 -19
  273. package/dist/domain/callPath.js +47 -167
  274. package/dist/domain/callPathSchemas.js +79 -0
  275. package/dist/domain/changedBehavior.js +34 -60
  276. package/dist/domain/completionLedgerGeneration.js +8 -14
  277. package/dist/domain/conformancePackage.js +126 -97
  278. package/dist/domain/conformanceReplay.js +36 -8
  279. package/dist/domain/conformanceTrustGate.js +23 -14
  280. package/dist/domain/customProtocolCapture.js +1 -1
  281. package/dist/domain/electronActiveObservation.js +70 -103
  282. package/dist/domain/electronObservation.js +14 -80
  283. package/dist/domain/electronStaticAnalysisBrowser.js +36 -46
  284. package/dist/domain/electronStaticAnalysisIpc.js +38 -14
  285. package/dist/domain/electronStaticAnalysisNative.js +1 -8
  286. package/dist/domain/electronStaticAnalysisValues.js +10 -17
  287. package/dist/domain/errors.js +33 -54
  288. package/dist/domain/eventProcessTree.js +20 -12
  289. package/dist/domain/evidence.js +2 -10
  290. package/dist/domain/evidenceBundle.js +3 -5
  291. package/dist/domain/evidenceCompletionLedger.js +6 -8
  292. package/dist/domain/functionComparison.js +4 -14
  293. package/dist/domain/functionComparisonNormalization.js +4 -11
  294. package/dist/domain/functionComparisonResults.js +25 -15
  295. package/dist/domain/functionComparisonSchemas.js +49 -33
  296. package/dist/domain/functionDossierEvidence.js +31 -156
  297. package/dist/domain/hopperStartupFailure.js +1 -1
  298. package/dist/domain/hopperValues.js +15 -136
  299. package/dist/domain/interfaceBuilderGraph.js +654 -0
  300. package/dist/domain/javascriptApplicationAnalysis.js +8 -112
  301. package/dist/domain/javascriptApplicationChangeGraph.js +22 -82
  302. package/dist/domain/javascriptApplicationEvidenceSchemas.js +59 -47
  303. package/dist/domain/javascriptApplicationGraph.js +3 -13
  304. package/dist/domain/javascriptApplicationGraphSchemas.js +12 -34
  305. package/dist/domain/javascriptApplicationVersionComparison.js +26 -30
  306. package/dist/domain/javascriptApplicationVersionComparisonSchemas.js +123 -68
  307. package/dist/domain/javascriptApplicationVersionItems.js +120 -53
  308. package/dist/domain/javascriptApplicationVersionKeys.js +24 -11
  309. package/dist/domain/javascriptAstFingerprint.js +25 -58
  310. package/dist/domain/javascriptAstValues.js +9 -0
  311. package/dist/domain/javascriptExportInstrumentation.js +2 -4
  312. package/dist/domain/javascriptExportShapeComparison.js +6 -7
  313. package/dist/domain/javascriptExportShapeComparisonSchemas.js +68 -75
  314. package/dist/domain/javascriptExportShapeSelection.js +17 -19
  315. package/dist/domain/javascriptFeatureSeed.js +20 -12
  316. package/dist/domain/javascriptFeatureTrace.js +13 -67
  317. package/dist/domain/javascriptFeatureTraceSchemas.js +24 -52
  318. package/dist/domain/javascriptFeatureTraversal.js +1 -44
  319. package/dist/domain/javascriptNativeHandoff.js +1 -1
  320. package/dist/domain/javascriptReplay.js +24 -41
  321. package/dist/domain/javascriptRuntimeLoadState.js +3 -8
  322. package/dist/domain/javascriptRuntimeObservation.js +42 -103
  323. package/dist/domain/javascriptRuntimeReconciliation.js +1 -3
  324. package/dist/domain/javascriptRuntimeReconciliationActive.js +8 -17
  325. package/dist/domain/javascriptRuntimeReconciliationGraph.js +10 -23
  326. package/dist/domain/javascriptRuntimeReconciliationMatching.js +18 -12
  327. package/dist/domain/javascriptRuntimeReconciliationParsing.js +16 -45
  328. package/dist/domain/javascriptRuntimeReconciliationResult.js +4 -5
  329. package/dist/domain/javascriptRuntimeReconciliationRuntime.js +8 -12
  330. package/dist/domain/javascriptRuntimeReconciliationSchemas.js +33 -48
  331. package/dist/domain/javascriptRuntimeStaticCandidates.js +3 -3
  332. package/dist/domain/javascriptSemanticAnalysis.js +12 -45
  333. package/dist/domain/javascriptSemanticAsyncEffects.js +1 -9
  334. package/dist/domain/javascriptSemanticCallResolution.js +6 -16
  335. package/dist/domain/javascriptSemanticCalls.js +5 -32
  336. package/dist/domain/javascriptSemanticChildProcesses.js +1 -11
  337. package/dist/domain/javascriptSemanticCoverage.js +11 -0
  338. package/dist/domain/javascriptSemanticDataEffectHelpers.js +1 -8
  339. package/dist/domain/javascriptSemanticDataEffects.js +1 -11
  340. package/dist/domain/javascriptSemanticFingerprints.js +3 -5
  341. package/dist/domain/javascriptSemanticGraphSchemas.js +25 -51
  342. package/dist/domain/javascriptSemanticGraphSerialization.js +2 -13
  343. package/dist/domain/javascriptSemanticIr.js +1 -29
  344. package/dist/domain/javascriptSemanticObjects.js +1 -5
  345. package/dist/domain/javascriptSemanticPrimitives.js +2 -9
  346. package/dist/domain/javascriptSemanticProjection.js +0 -18
  347. package/dist/domain/javascriptSemanticPromises.js +9 -16
  348. package/dist/domain/javascriptSemanticProvenance.js +16 -19
  349. package/dist/domain/javascriptSemanticQuery.js +17 -139
  350. package/dist/domain/javascriptSemanticQueryAssessment.js +9 -37
  351. package/dist/domain/javascriptSemanticQueryIdentity.js +2 -23
  352. package/dist/domain/javascriptSemanticQuerySchemas.js +14 -107
  353. package/dist/domain/javascriptSemanticResources.js +1 -6
  354. package/dist/domain/javascriptSemanticReturns.js +10 -27
  355. package/dist/domain/javascriptSemanticValueTypes.js +1 -0
  356. package/dist/domain/javascriptSemanticValues.js +44 -62
  357. package/dist/domain/javascriptStaticAnalysis.js +21 -43
  358. package/dist/domain/javascriptStaticAnalysisBundler.js +34 -93
  359. package/dist/domain/javascriptStaticAnalysisCalls.js +17 -16
  360. package/dist/domain/javascriptStaticAnalysisFindings.js +3 -19
  361. package/dist/domain/javascriptStaticAnalysisHelpers.js +47 -88
  362. package/dist/domain/javascriptStaticAnalysisState.js +1 -5
  363. package/dist/domain/javascriptStaticAnalysisTypes.js +1 -0
  364. package/dist/domain/jsonShape.js +7 -33
  365. package/dist/domain/localPath.js +7 -0
  366. package/dist/domain/managedApplicationGraph.js +9 -41
  367. package/dist/domain/managedApplicationGraphCoverage.js +24 -156
  368. package/dist/domain/managedApplicationGraphNodes.js +10 -13
  369. package/dist/domain/managedArtifact.js +14 -27
  370. package/dist/domain/managedMemberComparison.js +90 -92
  371. package/dist/domain/managedMemberComparisonCoverage.js +11 -33
  372. package/dist/domain/managedMemberComparisonItems.js +221 -0
  373. package/dist/domain/managedMemberComparisonMatch.js +8 -208
  374. package/dist/domain/managedNativeVerification.js +3 -6
  375. package/dist/domain/managedNativeVerificationMatch.js +55 -59
  376. package/dist/domain/managedNativeVerificationSchemas.js +83 -47
  377. package/dist/domain/managedReconstruction.js +19 -23
  378. package/dist/domain/managedRuntimeCorrelation.js +6 -9
  379. package/dist/domain/nativeApiBoundary.js +2 -7
  380. package/dist/domain/nativeInspection.js +0 -2
  381. package/dist/domain/nativeInvestigationGraph.js +351 -0
  382. package/dist/domain/nativeValueFlow.js +61 -0
  383. package/dist/domain/nodeRuntimeCharacterization.js +1 -5
  384. package/dist/domain/objcSwiftMetadata.js +254 -0
  385. package/dist/domain/peInspection.js +1 -1
  386. package/dist/domain/permissionPolicy.js +13 -0
  387. package/dist/domain/processCapture.js +76 -113
  388. package/dist/domain/processCaptureExample.js +68 -0
  389. package/dist/domain/processCaptureParsing.js +21 -0
  390. package/dist/domain/processCaptureReactiveSchema.js +68 -0
  391. package/dist/domain/processCaptureValidation.js +1 -7
  392. package/dist/domain/processComparison.js +3 -12
  393. package/dist/domain/processReactiveMatching.js +29 -50
  394. package/dist/domain/processReactiveRuntime.js +4 -8
  395. package/dist/domain/processReactiveScenario.js +28 -94
  396. package/dist/domain/processReactiveScenarioPreflight.js +5 -30
  397. package/dist/domain/processReactiveTransition.js +33 -18
  398. package/dist/domain/processScenario.js +56 -90
  399. package/dist/domain/processTraceComparison.js +0 -8
  400. package/dist/domain/processTraceEvaluation.js +14 -4
  401. package/dist/domain/processTraceSpecification.js +11 -17
  402. package/dist/domain/protocolCapture.js +3 -3
  403. package/dist/domain/reconstructionCoverage.js +62 -129
  404. package/dist/domain/reconstructionCoverageEvaluation.js +17 -17
  405. package/dist/domain/reconstructionObligationLedgerSchemas.js +45 -72
  406. package/dist/domain/reconstructionReadiness.js +1 -2
  407. package/dist/domain/reconstructionReadinessSchemas.js +36 -38
  408. package/dist/domain/reconstructionUnknowns.js +3 -3
  409. package/dist/domain/reconstructionVerification.js +13 -47
  410. package/dist/domain/reconstructionVerificationSchemas.js +50 -38
  411. package/dist/domain/referenceSourceGraph.js +53 -61
  412. package/dist/domain/referenceSourceImportParsing.js +1 -5
  413. package/dist/domain/replayMachine.js +19 -31
  414. package/dist/domain/replayMachineRun.js +15 -63
  415. package/dist/domain/replayMachineRuntime.js +41 -41
  416. package/dist/domain/replayMachineValues.js +84 -0
  417. package/dist/domain/residualUnknown.js +25 -30
  418. package/dist/domain/runtimeCharacterization.js +15 -16
  419. package/dist/domain/runtimeIdentification.js +48 -47
  420. package/dist/domain/sourceToBundleComparison.js +9 -85
  421. package/dist/domain/sourceToBundleComparisonSchemas.js +17 -42
  422. package/dist/domain/sourceToBundleSignals.js +4 -15
  423. package/dist/domain/staticRuntimeCorrelation.js +37 -49
  424. package/dist/domain/symbolAnalysis.js +10 -19
  425. package/dist/domain/unicodeCodePointOrder.js +12 -0
  426. package/dist/domain/webBundleAnalysis.js +70 -99
  427. package/dist/domain/webBundleAnalyzer.js +2 -4
  428. package/dist/domain/webBundleAnalyzerAst.js +0 -13
  429. package/dist/domain/webBundleAnalyzerInspection.js +26 -52
  430. package/dist/domain/webBundleAnalyzerResult.js +7 -24
  431. package/dist/domain/webCaptureDiff.js +33 -73
  432. package/dist/domain/webCaptureDiffSchemas.js +86 -0
  433. package/dist/domain/webContentArtifact.js +1 -10
  434. package/dist/domain/webMcpDiscovery.js +3 -14
  435. package/dist/domain/webScreenshot.js +58 -34
  436. package/dist/domain/zipPackageFormat.js +7 -0
  437. package/dist/dotnet/ManagedArtifactInspector.js +17 -50
  438. package/dist/dotnet/ManagedMemberInspector.js +27 -58
  439. package/dist/dotnet/ManagedMemberInspectorCore.js +14 -51
  440. package/dist/dotnet/ManagedMemberInstructionDecoder.js +2 -2
  441. package/dist/dotnet/ManagedMemberRows.js +16 -16
  442. package/dist/dotnet/ManagedMetadataHeaps.js +26 -8
  443. package/dist/dotnet/ManagedMetadataInventory.js +21 -30
  444. package/dist/dotnet/ManagedMetadataInventoryRows.js +57 -63
  445. package/dist/dotnet/ManagedMetadataLayout.js +3 -5
  446. package/dist/dotnet/ManagedMethodBodyReader.js +5 -30
  447. package/dist/dotnet/ManagedNativeBoundaryHelpers.js +19 -49
  448. package/dist/dotnet/ManagedNativeBoundaryInspector.js +13 -41
  449. package/dist/dotnet/ManagedPeReader.js +2 -2
  450. package/dist/dotnet/ManagedStaticProvider.js +13 -71
  451. package/dist/generatedMcpToolCatalog.js +1 -1
  452. package/dist/generatedPackageMetadata.js +1 -1
  453. package/dist/ghidra/GhidraAnalysisProfile.js +3 -8
  454. package/dist/ghidra/GhidraClient.js +4 -12
  455. package/dist/ghidra/GhidraClientWire.js +9 -5
  456. package/dist/ghidra/GhidraDefaults.js +0 -18
  457. package/dist/ghidra/GhidraDiagnostics.js +0 -2
  458. package/dist/ghidra/GhidraDoctor.js +16 -12
  459. package/dist/ghidra/GhidraFunctionValues.js +65 -108
  460. package/dist/ghidra/GhidraInstallation.js +98 -42
  461. package/dist/ghidra/GhidraInventoryValues.js +16 -85
  462. package/dist/ghidra/GhidraLauncher.js +0 -8
  463. package/dist/ghidra/GhidraProvider.js +15 -22
  464. package/dist/ghidra/GhidraProviderCapabilities.js +6 -47
  465. package/dist/ghidra/GhidraRequestQueue.js +6 -30
  466. package/dist/ghidra/GhidraResponseBuffer.js +1 -7
  467. package/dist/ghidra/GhidraSessionValues.js +0 -2
  468. package/dist/ghidra/GhidraTransport.js +4 -7
  469. package/dist/ghidra/protocol.js +2 -2
  470. package/dist/hopper/BridgeLauncher.js +112 -36
  471. package/dist/hopper/HopperAnalysisProfile.js +1 -1
  472. package/dist/hopper/HopperCleanup.js +6 -3
  473. package/dist/hopper/HopperClient.js +4 -7
  474. package/dist/hopper/HopperProcessDiagnostic.js +2 -2
  475. package/dist/hopper/HopperProvider.js +0 -16
  476. package/dist/hopper/HopperRequestQueue.js +21 -40
  477. package/dist/hopper/HopperResponseStream.js +1 -9
  478. package/dist/hopper/HopperSessionValues.js +3 -2
  479. package/dist/hopper/HopperTargetLease.js +119 -0
  480. package/dist/hopper/LinuxPrivateDisplayDiagnostic.js +24 -31
  481. package/dist/hopper/LinuxPrivateDisplayProbe.js +5 -16
  482. package/dist/hopper/protocol.js +6 -4
  483. package/dist/main/reload.js +0 -3
  484. package/dist/main/shutdown.js +1 -1
  485. package/dist/main/state.js +0 -9
  486. package/dist/main/transport.js +0 -5
  487. package/dist/mcpDoctor.js +25 -45
  488. package/dist/native/CommandRunner.js +18 -25
  489. package/dist/native/NativeMacOSProvider.js +13 -38
  490. package/dist/native/NativeMachoInspection.js +1 -1
  491. package/dist/process/BoundedFileBytes.js +17 -0
  492. package/dist/process/ExecFileOutput.js +11 -0
  493. package/dist/process/PendingOperations.js +8 -6
  494. package/dist/process/ProcessOwnership.js +3 -2
  495. package/dist/process/ProcessOwnershipObservation.js +0 -1
  496. package/dist/process/ProviderProcess.js +7 -28
  497. package/dist/reference/ReferenceSourceReader.js +8 -24
  498. package/dist/reference/ReferenceSourceReaderEntries.js +11 -39
  499. package/dist/reference/ReferenceSourceReaderFile.js +13 -31
  500. package/dist/reference/ReferenceSourceReaderPaths.js +3 -18
  501. package/dist/reference/ReferenceSourceReaderValidate.js +3 -6
  502. package/dist/replay/JavaScriptReplayWorker.js +3 -5
  503. package/dist/replay/LinuxJavaScriptReplayRunner.js +33 -29
  504. package/dist/replay/LinuxJavaScriptReplaySandbox.js +0 -19
  505. package/dist/replay/LinuxRuntimeClosure.js +1 -3
  506. package/dist/replay/ReplayOutcome.js +1 -3
  507. package/dist/replay/ReplayProcessLifecycle.js +32 -7
  508. package/dist/replay/ReplaySeccompFile.js +29 -0
  509. package/dist/replay/ReplayWorkerProtocol.js +0 -2
  510. package/dist/replay/SystemJavaScriptReplayHost.js +45 -74
  511. package/dist/server/ProcessCaptureElicitation.js +4 -8
  512. package/dist/server/createServer.js +6 -44
  513. package/dist/server/promptCompletion.js +37 -61
  514. package/dist/server/recordDerivedEvidence.js +1 -1
  515. package/dist/server/registerApplicationTools/characterization.js +4 -8
  516. package/dist/server/registerApplicationTools/compareExportShapes.js +5 -10
  517. package/dist/server/registerApplicationTools/compareSourceToBundle.js +6 -10
  518. package/dist/server/registerApplicationTools/compareVersions.js +5 -10
  519. package/dist/server/registerApplicationTools/controlledReplay.js +3 -5
  520. package/dist/server/registerApplicationTools/coverage.js +6 -71
  521. package/dist/server/registerApplicationTools/helpers.js +1 -13
  522. package/dist/server/registerApplicationTools/obligationLedger.js +3 -2
  523. package/dist/server/registerApplicationTools/traceFeature.js +5 -9
  524. package/dist/server/registerApplicationTools/traceSemantics.js +5 -8
  525. package/dist/server/registerApplicationTools.js +0 -2
  526. package/dist/server/registerArtifactComparisonTool.js +23 -27
  527. package/dist/server/registerBrowserScenarioTool.js +4 -4
  528. package/dist/server/registerBrowserTools.js +5 -8
  529. package/dist/server/registerBundleComparisonTool.js +5 -7
  530. package/dist/server/registerCloseLifecycleTool.js +2 -16
  531. package/dist/server/registerElectronTools.js +10 -29
  532. package/dist/server/registerEnhancedTools.js +10 -11
  533. package/dist/server/registerEvidenceTools.js +15 -22
  534. package/dist/server/registerFunctionComparisonTool.js +30 -25
  535. package/dist/server/registerInvestigationTools/helpers.js +3 -32
  536. package/dist/server/registerInvestigationTools.js +20 -116
  537. package/dist/server/registerJavaScriptRuntimeObservationTools.js +6 -4
  538. package/dist/server/registerManagedWorkflowTools/compareManagedMembers.js +15 -17
  539. package/dist/server/registerManagedWorkflowTools/evidence.js +19 -35
  540. package/dist/server/registerManagedWorkflowTools/importManagedReconstruction.js +3 -8
  541. package/dist/server/registerManagedWorkflowTools/planManagedRuntimeCorrelation.js +3 -8
  542. package/dist/server/registerManagedWorkflowTools/projectManagedApplicationGraph.js +10 -14
  543. package/dist/server/registerManagedWorkflowTools/verifyManagedNativeBoundaries.js +9 -15
  544. package/dist/server/registerOfficialTools.js +1 -43
  545. package/dist/server/registerProcessComparisonTool.js +33 -23
  546. package/dist/server/registerPrompts.js +19 -17
  547. package/dist/server/registerSessionRecordTools.js +10 -156
  548. package/dist/server/registerSessionStatusTool.js +6 -69
  549. package/dist/server/registerSessionTools.js +10 -51
  550. package/dist/server/sessionAvailabilityPolicy.js +0 -2
  551. package/dist/server/sessionEvidence.js +9 -15
  552. package/dist/server/sessionToolPolicies.js +0 -8
  553. package/dist/server/toolResult.js +14 -50
  554. package/dist/serverIdentity.js +0 -20
  555. package/install.sh +1 -1
  556. package/package.json +11 -7
  557. package/scripts/electron-active-hook.cjs +23 -55
  558. package/scripts/hopper-demo-x11.py +13 -32
  559. package/skills/reverse-engineer-anything/SKILL.md +47 -12
  560. package/skills/reverse-engineer-anything/references/evidence-workflows.md +6 -4
  561. package/skills/reverse-engineer-anything/references/javascript-applications.md +13 -13
  562. package/skills/reverse-engineer-anything/references/native-and-artifacts.md +12 -8
  563. package/dist/application/ApplicationWorkflowEvidenceResolver.js +0 -188
  564. package/dist/application/BoundedJsonFiles.js +0 -86
  565. package/dist/application/CrossVersionInventory.js +0 -129
  566. package/dist/application/CrossVersionInvestigation.js +0 -301
  567. package/dist/application/CrossVersionInvestigationCollections.js +0 -23
  568. package/dist/application/CrossVersionInvestigationEvidence.js +0 -64
  569. package/dist/application/CrossVersionInvestigationReplay.js +0 -170
  570. package/dist/application/DeferredFileAuthorization.js +0 -61
  571. package/dist/application/DoctorProjection.js +0 -43
  572. package/dist/application/EnhancedToolPagination.js +0 -22
  573. package/dist/application/EvidenceReferenceResolver.js +0 -26
  574. package/dist/application/InvestigationWorkspaceStore.js +0 -204
  575. package/dist/application/ProcessPairedExperiment.js +0 -72
  576. package/dist/application/ReconstructionCoverageWorkspaceStore.js +0 -31
  577. package/dist/application/ReconstructionReadinessService.js +0 -48
  578. package/dist/cliInvestigationCommands.js +0 -173
  579. package/dist/domain/boundedCartesianProjection.js +0 -15
  580. package/dist/domain/investigationWorkspace.js +0 -347
  581. package/dist/domain/jsonLimits.js +0 -26
  582. package/dist/domain/knownPageCoverage.js +0 -29
  583. package/dist/domain/processPairedExperiment.js +0 -128
  584. package/dist/server/javascriptApplicationResult.js +0 -106
  585. package/dist/server/permissionFailure.js +0 -12
  586. package/dist/server/registerApplicationTools/readiness.js +0 -50
  587. package/dist/server/registerEvidenceResources.js +0 -315
  588. package/dist/server/registerJavaScriptApplicationGraphResource.js +0 -65
  589. package/dist/server/registerReconstructionObligationLedgerResource.js +0 -32
  590. package/dist/server/registerReconstructionReadinessResource.js +0 -32
@@ -1,57 +1,28 @@
1
1
  import { managedNativeBoundaryInspectionSchema, } from "../domain/managedArtifact.js";
2
- import { metadataRowOffset, } from "./ManagedMetadataLayout.js";
3
- import { MetadataRowCursor, metadataToken, readMetadataString, } from "./ManagedMetadataHeaps.js";
2
+ import {} from "./ManagedMetadataLayout.js";
3
+ import { metadataRowCursor, metadataCodedToken, metadataToken, readMetadataString, } from "./ManagedMetadataHeaps.js";
4
4
  import { managedTableRowCounts } from "./ManagedMetadataInventory.js";
5
- import { managedFailure } from "./ManagedReaderFailure.js";
6
- const rowCursor = ({ bytes, layout, table, row, }) => {
7
- const descriptor = layout.table(table);
8
- const start = metadataRowOffset(layout, table, row);
9
- if (descriptor === undefined)
10
- throw managedFailure("invalid-row", `metadata.${String(table)}`, "Metadata table is absent", start);
11
- return new MetadataRowCursor(bytes, start, start + descriptor.rowSize, `metadata.${descriptor.name}`);
12
- };
13
- const codedToken = (raw, tagBits, tables) => {
14
- const tagMask = (1 << tagBits) - 1;
15
- const table = tables[raw & tagMask];
16
- const row = raw >> tagBits;
17
- if (table === undefined || row === 0)
18
- return null;
19
- return metadataToken(table, row);
20
- };
21
5
  const flagsHex = (value) => `0x${value.toString(16).padStart(4, "0")}`;
22
- const page = (items, offset, limit) => {
23
- const safeOffset = Math.min(offset, items.length);
24
- const selected = items.slice(safeOffset, safeOffset + limit);
25
- return {
26
- items: selected,
27
- offset,
28
- limit,
29
- total: items.length,
30
- returned: selected.length,
31
- dropped: Math.max(0, items.length - safeOffset - selected.length),
32
- complete: safeOffset === 0 && selected.length === items.length,
33
- };
34
- };
35
- export const parseModuleRefs = (bytes, layout, maxBytes) => {
6
+ export const parseModuleRefs = (bytes, layout, heapExtent) => {
36
7
  const refs = [];
37
8
  const table = layout.table(26);
38
9
  for (let row = 1; row <= (table?.rowCount ?? 0); row += 1) {
39
- const cursor = rowCursor({ bytes, layout, table: 26, row });
10
+ const cursor = metadataRowCursor(bytes, layout, 26, row);
40
11
  refs.push({
41
12
  token: metadataToken(26, row),
42
13
  row_offset: cursor.start,
43
- name: readMetadataString(bytes, layout, cursor.readIndex(layout.stringIndexSize), maxBytes),
14
+ name: readMetadataString(bytes, layout, cursor.readIndex(layout.stringIndexSize), heapExtent),
44
15
  });
45
16
  }
46
17
  return refs;
47
18
  };
48
- export const parseFields = (bytes, layout, maxBytes) => {
19
+ export const parseFields = (bytes, layout, heapExtent) => {
49
20
  const fields = new Map();
50
21
  const table = layout.table(4);
51
22
  for (let row = 1; row <= (table?.rowCount ?? 0); row += 1) {
52
- const cursor = rowCursor({ bytes, layout, table: 4, row });
23
+ const cursor = metadataRowCursor(bytes, layout, 4, row);
53
24
  const flags = cursor.readUInt16();
54
- const name = readMetadataString(bytes, layout, cursor.readIndex(layout.stringIndexSize), maxBytes);
25
+ const name = readMetadataString(bytes, layout, cursor.readIndex(layout.stringIndexSize), heapExtent);
55
26
  cursor.readIndex(layout.blobIndexSize);
56
27
  const token = metadataToken(4, row);
57
28
  fields.set(token, {
@@ -66,15 +37,15 @@ export const parseFields = (bytes, layout, maxBytes) => {
66
37
  }
67
38
  return fields;
68
39
  };
69
- export const parseMethods = (bytes, layout, maxBytes) => {
40
+ export const parseMethods = (bytes, layout, heapExtent) => {
70
41
  const methods = new Map();
71
42
  const table = layout.table(6);
72
43
  for (let row = 1; row <= (table?.rowCount ?? 0); row += 1) {
73
- const cursor = rowCursor({ bytes, layout, table: 6, row });
44
+ const cursor = metadataRowCursor(bytes, layout, 6, row);
74
45
  const rva = cursor.readUInt32();
75
46
  const implFlags = cursor.readUInt16();
76
47
  const flags = cursor.readUInt16();
77
- const name = readMetadataString(bytes, layout, cursor.readIndex(layout.stringIndexSize), maxBytes);
48
+ const name = readMetadataString(bytes, layout, cursor.readIndex(layout.stringIndexSize), heapExtent);
78
49
  cursor.readIndex(layout.blobIndexSize);
79
50
  cursor.readIndex(layout.tableIndexSize(8));
80
51
  const token = metadataToken(6, row);
@@ -90,15 +61,15 @@ export const parseMethods = (bytes, layout, maxBytes) => {
90
61
  }
91
62
  return methods;
92
63
  };
93
- export const parseImplMaps = ({ bytes, layout, maxBytes, modules, members, }) => {
64
+ export const parseImplMaps = ({ bytes, layout, heapExtent, modules, members, }) => {
94
65
  const moduleNames = new Map(modules.map((module) => [module.token, module]));
95
66
  const imports = [];
96
67
  const table = layout.table(28);
97
68
  for (let row = 1; row <= (table?.rowCount ?? 0); row += 1) {
98
- const cursor = rowCursor({ bytes, layout, table: 28, row });
69
+ const cursor = metadataRowCursor(bytes, layout, 28, row);
99
70
  const mappingFlags = cursor.readUInt16();
100
- const memberToken = codedToken(cursor.readIndex(layout.codedIndexSize("MemberForwarded")), 1, [4, 6]);
101
- const importName = readMetadataString(bytes, layout, cursor.readIndex(layout.stringIndexSize), maxBytes);
71
+ const memberToken = metadataCodedToken(cursor.readIndex(layout.codedIndexSize("MemberForwarded")), 1, [4, 6]);
72
+ const importName = readMetadataString(bytes, layout, cursor.readIndex(layout.stringIndexSize), heapExtent);
102
73
  const importScopeRow = cursor.readIndex(layout.tableIndexSize(26));
103
74
  const importScopeToken = importScopeRow === 0 ? null : metadataToken(26, importScopeRow);
104
75
  const member = memberToken === null ? undefined : members.get(memberToken);
@@ -267,8 +238,7 @@ export const cliNative = (pe) => {
267
238
  managed_native_header_size: pe.cli.managedNativeHeader.size,
268
239
  };
269
240
  };
270
- export const buildNativeBoundaryInspection = ({ target, bytes, limits, layout, inventory, moduleRefs, imports, implementations, native, issues, }) => managedNativeBoundaryInspectionSchema.parse({
271
- schema_version: 1,
241
+ export const buildNativeBoundaryInspection = ({ target, bytes, layout, inventory, moduleRefs, imports, implementations, native, issues, }) => managedNativeBoundaryInspectionSchema.parse({
272
242
  artifact: {
273
243
  path: target.path,
274
244
  sha256: target.sha256,
@@ -287,9 +257,9 @@ export const buildNativeBoundaryInspection = ({ target, bytes, limits, layout, i
287
257
  requires_mvid: inventory.module?.mvid ?? null,
288
258
  },
289
259
  cli_native: native,
290
- module_refs: page(moduleRefs, limits.moduleRefOffset, limits.moduleRefLimit),
291
- pinvoke_imports: page(imports, limits.importOffset, limits.importLimit),
292
- native_implementations: page(implementations, limits.implementationOffset, limits.implementationLimit),
260
+ module_refs: moduleRefs,
261
+ pinvoke_imports: imports,
262
+ native_implementations: implementations,
293
263
  summary: {
294
264
  module_ref_count: moduleRefs.length,
295
265
  pinvoke_import_count: imports.length,
@@ -4,17 +4,7 @@ import { readManagedMetadataLayout, } from "./ManagedMetadataLayout.js";
4
4
  import { readManagedPeLayout, } from "./ManagedPeReader.js";
5
5
  import { ManagedReaderFailure } from "./ManagedReaderFailure.js";
6
6
  import { buildNativeBoundaryInspection, cliNative, nativeImplementations, parseFields, parseImplMaps, parseMethods, parseModuleRefs, } from "./ManagedNativeBoundaryHelpers.js";
7
- const emptyPage = () => ({
8
- items: [],
9
- offset: 0,
10
- limit: 0,
11
- total: 0,
12
- returned: 0,
13
- dropped: 0,
14
- complete: true,
15
- });
16
7
  const emptyInspection = (target, bytes, classification, issues = []) => managedNativeBoundaryInspectionSchema.parse({
17
- schema_version: 1,
18
8
  artifact: {
19
9
  path: target.path,
20
10
  sha256: target.sha256,
@@ -43,9 +33,9 @@ const emptyInspection = (target, bytes, classification, issues = []) => managedN
43
33
  managed_native_header_rva: 0,
44
34
  managed_native_header_size: 0,
45
35
  },
46
- module_refs: emptyPage(),
47
- pinvoke_imports: emptyPage(),
48
- native_implementations: emptyPage(),
36
+ module_refs: [],
37
+ pinvoke_imports: [],
38
+ native_implementations: [],
49
39
  summary: {
50
40
  module_ref_count: 0,
51
41
  pinvoke_import_count: 0,
@@ -59,32 +49,18 @@ const emptyInspection = (target, bytes, classification, issues = []) => managedN
59
49
  "Static inspection does not load or execute target code, so native export resolution is not performed.",
60
50
  ],
61
51
  });
62
- const readBoundaryInventory = (bytes, pe, cli, limits) => {
52
+ const readBoundaryInventory = (bytes, pe, cli) => {
63
53
  const metadataOffset = pe.rvaToOffset(cli.metadata.rva, cli.metadata.size, "cli.metadata");
64
- const layout = readManagedMetadataLayout(bytes, metadataOffset, cli.metadata.size, limits.maxTableRows);
54
+ const layout = readManagedMetadataLayout(bytes, metadataOffset, cli.metadata.size);
65
55
  const resourceDirectory = {
66
56
  offset: pe.rvaToOffset(cli.resources.rva, cli.resources.size, "cli.resources"),
67
57
  size: cli.resources.size,
68
58
  };
69
- const inventory = readManagedMetadataInventory(bytes, layout, {
70
- referenceOffset: 0,
71
- referenceLimit: 0,
72
- resourceOffset: 0,
73
- resourceLimit: 0,
74
- attributeOffset: 0,
75
- attributeLimit: 0,
76
- maxHeapItemBytes: limits.maxHeapItemBytes,
77
- }, resourceDirectory);
59
+ const inventory = readManagedMetadataInventory(bytes, layout, resourceDirectory);
78
60
  return { layout, inventory };
79
61
  };
80
- const metadataLimitIssue = (cli, maxBytes) => ({
81
- code: "limit-exceeded",
82
- scope: "cli.metadata",
83
- offset: cli.headerOffset + 8,
84
- detail: `CLI metadata size exceeds max_metadata_bytes ${String(maxBytes)}`,
85
- });
86
62
  /** Inspect managed/native boundary declarations from PE metadata without execution. */
87
- export const inspectManagedNativeBoundariesBytes = (bytes, target, limits) => {
63
+ export const inspectManagedNativeBoundariesBytes = (bytes, target) => {
88
64
  let pe;
89
65
  try {
90
66
  pe = readManagedPeLayout(bytes);
@@ -96,29 +72,26 @@ export const inspectManagedNativeBoundariesBytes = (bytes, target, limits) => {
96
72
  }
97
73
  if (pe.cli === null)
98
74
  return emptyInspection(target, bytes, pe.cliDirectoryPresent ? "malformed" : "not-managed", pe.cliIssue === null ? [] : [pe.cliIssue]);
99
- if (pe.cli.metadata.size > limits.maxMetadataBytes)
100
- return emptyInspection(target, bytes, "malformed", [
101
- metadataLimitIssue(pe.cli, limits.maxMetadataBytes),
102
- ]);
103
75
  let layout;
104
76
  let inventory;
105
77
  try {
106
- ({ layout, inventory } = readBoundaryInventory(bytes, pe, pe.cli, limits));
78
+ ({ layout, inventory } = readBoundaryInventory(bytes, pe, pe.cli));
107
79
  }
108
80
  catch (cause) {
109
81
  if (!(cause instanceof ManagedReaderFailure))
110
82
  throw cause;
111
83
  return emptyInspection(target, bytes, "malformed", [cause.issue]);
112
84
  }
113
- const moduleRefs = parseModuleRefs(bytes, layout, limits.maxHeapItemBytes);
85
+ const heapExtent = Math.max(layout.strings.size, layout.blob.size);
86
+ const moduleRefs = parseModuleRefs(bytes, layout, heapExtent);
114
87
  const members = new Map([
115
- ...parseFields(bytes, layout, limits.maxHeapItemBytes),
116
- ...parseMethods(bytes, layout, limits.maxHeapItemBytes),
88
+ ...parseFields(bytes, layout, heapExtent),
89
+ ...parseMethods(bytes, layout, heapExtent),
117
90
  ]);
118
91
  const imports = parseImplMaps({
119
92
  bytes,
120
93
  layout,
121
- maxBytes: limits.maxHeapItemBytes,
94
+ heapExtent,
122
95
  modules: moduleRefs,
123
96
  members,
124
97
  });
@@ -129,7 +102,6 @@ export const inspectManagedNativeBoundariesBytes = (bytes, target, limits) => {
129
102
  return buildNativeBoundaryInspection({
130
103
  target,
131
104
  bytes,
132
- limits,
133
105
  pe,
134
106
  layout,
135
107
  inventory,
@@ -104,8 +104,8 @@ const readCoffHeader = (bytes) => {
104
104
  const coff = peOffset + 4;
105
105
  const machine = bytes.readUInt16LE(coff);
106
106
  const sectionCount = bytes.readUInt16LE(coff + 2);
107
- if (sectionCount === 0 || sectionCount > 96)
108
- throw managedFailure("invalid-directory", "pe.sections", "PE section count is outside the admitted range", coff + 2);
107
+ if (sectionCount === 0)
108
+ throw managedFailure("invalid-directory", "pe.sections", "PE section count must be positive", coff + 2);
109
109
  const optionalSize = bytes.readUInt16LE(coff + 16);
110
110
  const characteristics = bytes.readUInt16LE(coff + 18);
111
111
  return { coff, machine, sectionCount, optionalSize, characteristics };
@@ -1,6 +1,6 @@
1
1
  import { createHash } from "node:crypto";
2
2
  import { createReadStream } from "node:fs";
3
- import { readFile, stat } from "node:fs/promises";
3
+ import { readFile } from "node:fs/promises";
4
4
  import { createAnalysisExecution, } from "../application/AnalysisProvider.js";
5
5
  import { MANAGED_STATIC_PROVIDER } from "../application/InvestigationProviders.js";
6
6
  import { MANAGED_TOOL_CONTRACTS, managedArtifactInputSchema, managedMemberInputSchema, managedNativeBoundaryInputSchema, } from "../contracts/managedToolContracts.js";
@@ -15,12 +15,8 @@ export class ManagedStaticProvider {
15
15
  #capabilities = Object.freeze(MANAGED_TOOL_CONTRACTS.map((contract) => Object.freeze({
16
16
  provider: IDENTITY,
17
17
  operation: contract.name,
18
- inputContractVersion: 1,
19
- outputContractVersion: 1,
20
18
  available: true,
21
19
  reason: null,
22
- pagination: "offset",
23
- exhaustive: false,
24
20
  effects: Object.freeze({
25
21
  mutatesArtifact: false,
26
22
  launchesProcess: false,
@@ -30,11 +26,6 @@ export class ManagedStaticProvider {
30
26
  changesPermissions: false,
31
27
  requiresRoot: false,
32
28
  }),
33
- limits: Object.freeze({
34
- maxResults: 500,
35
- maxPayloadBytes: 4 * 1024 * 1024,
36
- timeoutMs: null,
37
- }),
38
29
  limitations: limitationsFor(contract.name),
39
30
  })));
40
31
  identity() {
@@ -63,16 +54,10 @@ class ManagedStaticClient {
63
54
  try {
64
55
  if (options?.signal?.aborted === true)
65
56
  return err(new AnalysisCancelledError(operation));
66
- const maxFileBytes = maxRequestedFileBytes(operation, parameters);
67
- const metadata = await stat(this.target.path);
68
- if (metadata.size > maxFileBytes)
69
- return err(new AnalysisCapabilityUnavailableError(IDENTITY.id, operation, `Artifact size ${String(metadata.size)} exceeds max_file_bytes ${String(maxFileBytes)}.`));
70
57
  const snapshot = this.#snapshotBytes;
71
58
  const observed = snapshot === undefined
72
59
  ? await readManagedSnapshot(this.target.path, options?.signal)
73
60
  : await hashManagedSource(this.target.path, options?.signal);
74
- if (observed.byteLength > maxFileBytes)
75
- return err(new AnalysisCapabilityUnavailableError(IDENTITY.id, operation, `Artifact grew beyond max_file_bytes ${String(maxFileBytes)} while it was read.`));
76
61
  if (observed.sha256 !== this.target.sha256)
77
62
  return err(new EvidenceIntegrityError(`Managed artifact digest changed after open: expected ${this.target.sha256}, observed ${observed.sha256} at ${this.target.path}`));
78
63
  const bytes = snapshot ?? observed.bytes;
@@ -113,6 +98,8 @@ const hashManagedSource = async (path, signal) => {
113
98
  for await (const chunk of stream) {
114
99
  if (!Buffer.isBuffer(chunk))
115
100
  throw new TypeError("Managed source stream returned non-buffer data");
101
+ if (chunk.length > Number.MAX_SAFE_INTEGER - byteLength)
102
+ throw new RangeError("Managed source byte length overflowed");
116
103
  byteLength += chunk.length;
117
104
  digest.update(chunk);
118
105
  }
@@ -121,7 +108,7 @@ const hashManagedSource = async (path, signal) => {
121
108
  const isManagedOperation = (operation) => MANAGED_TOOL_CONTRACTS.some(({ name }) => name === operation);
122
109
  const limitationsFor = (operation) => Object.freeze(operation === "inspect_managed_artifact"
123
110
  ? [
124
- "This capability inventories PE/CLI identity only; inspect_managed_members admits bounded metadata members, signatures, and CIL anchors.",
111
+ "This capability inventories PE/CLI identity only; inspect_managed_members admits metadata members, signatures, and CIL anchors.",
125
112
  "It never loads the target assembly, resolves dependencies through a CLR, decompiles C#, or executes target code.",
126
113
  ]
127
114
  : operation === "inspect_managed_native_boundaries"
@@ -130,64 +117,20 @@ const limitationsFor = (operation) => Object.freeze(operation === "inspect_manag
130
117
  "It never loads the target assembly, resolves dependencies through a CLR, decompiles C#, or executes target code.",
131
118
  ]
132
119
  : [
133
- "This capability decodes bounded PE/CLI metadata members, signatures, and file-backed method bodies; decompiled C# and cross-build matching are separate future contracts.",
120
+ "This capability decodes PE/CLI metadata members, signatures, and file-backed method bodies; decompiled C# reconstruction and cross-build member comparison are separate operations.",
134
121
  "It never loads the target assembly, resolves dependencies through a CLR, decompiles C#, or executes target code.",
135
122
  ]);
136
- const maxRequestedFileBytes = (operation, parameters) => {
137
- if (operation === "inspect_managed_artifact")
138
- return managedArtifactInputSchema.parse(parameters).max_file_bytes;
139
- if (operation === "inspect_managed_native_boundaries")
140
- return managedNativeBoundaryInputSchema.parse(parameters).max_file_bytes;
141
- return managedMemberInputSchema.parse(parameters).max_file_bytes;
142
- };
143
123
  const inspectManagedOperation = (operation, parameters, bytes, target) => {
144
124
  if (operation === "inspect_managed_artifact") {
145
- const input = managedArtifactInputSchema.parse(parameters);
146
- return inspectManagedArtifactBytes(bytes, target, {
147
- referenceOffset: input.reference_offset,
148
- referenceLimit: input.reference_limit,
149
- resourceOffset: input.resource_offset,
150
- resourceLimit: input.resource_limit,
151
- attributeOffset: input.attribute_offset,
152
- attributeLimit: input.attribute_limit,
153
- maxMetadataBytes: input.max_metadata_bytes,
154
- maxTableRows: input.max_table_rows,
155
- maxHeapItemBytes: input.max_heap_item_bytes,
156
- });
125
+ managedArtifactInputSchema.parse(parameters);
126
+ return inspectManagedArtifactBytes(bytes, target);
157
127
  }
158
128
  if (operation === "inspect_managed_native_boundaries") {
159
- const input = managedNativeBoundaryInputSchema.parse(parameters);
160
- return inspectManagedNativeBoundariesBytes(bytes, target, {
161
- moduleRefOffset: input.module_ref_offset,
162
- moduleRefLimit: input.module_ref_limit,
163
- importOffset: input.import_offset,
164
- importLimit: input.import_limit,
165
- implementationOffset: input.implementation_offset,
166
- implementationLimit: input.implementation_limit,
167
- maxMetadataBytes: input.max_metadata_bytes,
168
- maxTableRows: input.max_table_rows,
169
- maxHeapItemBytes: input.max_heap_item_bytes,
170
- });
129
+ managedNativeBoundaryInputSchema.parse(parameters);
130
+ return inspectManagedNativeBoundariesBytes(bytes, target);
171
131
  }
172
- const input = managedMemberInputSchema.parse(parameters);
173
- return inspectManagedMembersBytes(bytes, target, {
174
- typeOffset: input.type_offset,
175
- typeLimit: input.type_limit,
176
- methodOffset: input.method_offset,
177
- methodLimit: input.method_limit,
178
- fieldOffset: input.field_offset,
179
- fieldLimit: input.field_limit,
180
- memberRefOffset: input.member_ref_offset,
181
- memberRefLimit: input.member_ref_limit,
182
- edgeOffset: input.edge_offset,
183
- edgeLimit: input.edge_limit,
184
- instructionAnchorLimit: input.instruction_anchor_limit,
185
- maxMetadataBytes: input.max_metadata_bytes,
186
- maxTableRows: input.max_table_rows,
187
- maxHeapItemBytes: input.max_heap_item_bytes,
188
- maxMethodBodyBytes: input.max_method_body_bytes,
189
- maxMethodInstructions: input.max_method_instructions,
190
- });
132
+ managedMemberInputSchema.parse(parameters);
133
+ return inspectManagedMembersBytes(bytes, target);
191
134
  };
192
135
  const managedLocations = (result) => {
193
136
  if ("pe" in result) {
@@ -212,9 +155,8 @@ const managedLocations = (result) => {
212
155
  ...(result.module === null
213
156
  ? [{ kind: "file-offset", offset: 0 }]
214
157
  : [{ kind: "file-offset", offset: result.module.row_offset }]),
215
- ...result.methods.items
158
+ ...result.methods
216
159
  .filter((method) => method.body.file_offset !== null)
217
- .slice(0, 8)
218
160
  .map((method) => ({
219
161
  kind: "file-offset",
220
162
  offset: method.body.file_offset ?? 0,
@@ -224,7 +166,7 @@ const managedLocations = (result) => {
224
166
  ...(result.module === null
225
167
  ? [{ kind: "file-offset", offset: 0 }]
226
168
  : [{ kind: "file-offset", offset: result.module.row_offset }]),
227
- ...result.pinvoke_imports.items.slice(0, 8).map((mapping) => ({
169
+ ...result.pinvoke_imports.map((mapping) => ({
228
170
  kind: "file-offset",
229
171
  offset: mapping.row_offset,
230
172
  })),