rea-agents 6.4.0 → 6.5.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 (1211) hide show
  1. package/DISCLAIMER.md +136 -0
  2. package/README.md +67 -16
  3. package/THIRD_PARTY_NOTICES.md +134 -0
  4. package/bridge/android/ReaJadxBridge.java +123 -11
  5. package/bridge/cutter/rea_bridge.py +816 -0
  6. package/bridge/ghidra/ReaGhidraAnalysisOptions.java +38 -0
  7. package/bridge/ghidra/ReaGhidraBridge.java +1181 -123
  8. package/bridge/ghidra/ReaGhidraBundleActivator.java +14 -0
  9. package/bridge/ghidra/ReaGhidraMipsSoftFloat.java +176 -0
  10. package/bridge/ghidra/ReaGhidraPrepareRaw.java +49 -0
  11. package/bridge/hopper_bridge.py +103 -69
  12. package/bridge/mitmproxy/capture.py +189 -13
  13. package/bridge/native/rea_lldb_tracer.py +40 -6
  14. package/bridge/process/ProcessRunTokenReader.swift +76 -34
  15. package/bridge/pwntools/layout_impl.py +5 -0
  16. package/bridge/pwntools/recorded_crash_impl.py +31 -10
  17. package/dist/adb/AdbConfiguration.js +15 -3
  18. package/dist/adb/AdbDeviceOutput.js +59 -37
  19. package/dist/adb/AdbDirectoryListing.js +80 -0
  20. package/dist/adb/AdbHostFileName.js +34 -0
  21. package/dist/adb/AdbProvider.js +416 -173
  22. package/dist/adb/AdbShellOutput.js +55 -57
  23. package/dist/android/JadxAnalysis.js +32 -7
  24. package/dist/android/JadxConfiguration.js +119 -29
  25. package/dist/android/JadxDoctor.js +115 -0
  26. package/dist/android/JadxMcpTransport.js +5 -3
  27. package/dist/android/JadxProtocol.js +14 -0
  28. package/dist/android/JadxProvider.js +15 -9
  29. package/dist/android/JadxRelease.js +12 -1
  30. package/dist/android/JadxWorkspaceRoot.js +157 -0
  31. package/dist/apktool/ApktoolConfiguration.js +165 -22
  32. package/dist/apktool/ApktoolDecodeOutput.js +124 -41
  33. package/dist/apktool/ApktoolProvider.js +70 -33
  34. package/dist/application/AnalysisContextQueries.js +5 -8
  35. package/dist/application/AnalysisProvider.js +24 -20
  36. package/dist/application/AppBundleExecutable.js +5 -5
  37. package/dist/application/BinaryTargetResolver.js +195 -38
  38. package/dist/application/BrowserEvidence.js +1 -1
  39. package/dist/application/BrowserObservationService.js +13 -2
  40. package/dist/application/BrowserScenarioCaptureService.js +0 -1
  41. package/dist/application/CallPathTracing.js +52 -13
  42. package/dist/application/CapabilityInventory.js +168 -28
  43. package/dist/application/ClaudeDesktopConfigLocation.js +152 -0
  44. package/dist/application/ClientConfigurationDocument.js +102 -25
  45. package/dist/application/ClientConfigurationFiles.js +51 -14
  46. package/dist/application/ClientRegistrationEnvironment.js +10 -4
  47. package/dist/application/ClientRegistrationIdentity.js +94 -29
  48. package/dist/application/ClientRegistrationStatus.js +180 -59
  49. package/dist/application/DirectAnalysis.js +85 -30
  50. package/dist/application/DirectAnalysisStatus.js +13 -1
  51. package/dist/application/Doctor.js +113 -32
  52. package/dist/application/DoctorDiagnostics.js +34 -12
  53. package/dist/application/DoctorProviderIds.js +2 -0
  54. package/dist/application/DoctorScope.js +11 -2
  55. package/dist/application/DshCordisPatch.js +355 -0
  56. package/dist/application/DshCordisYaml.js +155 -0
  57. package/dist/application/EnhancedLiteralTracing.js +30 -16
  58. package/dist/application/EnhancedToolTypes.js +0 -1
  59. package/dist/application/EnhancedTools.js +164 -54
  60. package/dist/application/EvidenceBundleCommands.js +30 -7
  61. package/dist/application/EvidenceBundleFiles.js +29 -7
  62. package/dist/application/FunctionAnalysisEvidence.js +3 -0
  63. package/dist/application/GeminiClientSettings.js +25 -13
  64. package/dist/application/HermesConfigurationYaml.js +272 -0
  65. package/dist/application/InventoryProjectionEvidence.js +0 -1
  66. package/dist/application/InvestigationProviders.js +13 -3
  67. package/dist/application/JsonFiles.js +110 -20
  68. package/dist/application/JsonInputFile.js +220 -62
  69. package/dist/application/LinuxHopper.js +126 -48
  70. package/dist/application/MacHopper.js +21 -17
  71. package/dist/application/MacHopperPaths.js +40 -0
  72. package/dist/application/{MipsElfAbiFlags.js → MipsElfMetadata.js} +70 -9
  73. package/dist/application/MipsElfSharedLoad.js +164 -0
  74. package/dist/application/MipsGnuAttributes.js +90 -0
  75. package/dist/application/MsixPackageStorage.js +133 -0
  76. package/dist/application/ProgressReporter.js +1 -1
  77. package/dist/application/ProviderOperationExecution.js +11 -3
  78. package/dist/application/ReconstructionCoverageService.js +0 -1
  79. package/dist/application/ReconstructionObligationCandidates.js +3 -2
  80. package/dist/application/ReconstructionObligationLedgerDiagnostics.js +2 -2
  81. package/dist/application/ReconstructionObligationLedgerEvaluation.js +15 -33
  82. package/dist/application/ReconstructionObligationLedgerProjection.js +3 -72
  83. package/dist/application/ReconstructionObligationLedgerService.js +3 -1
  84. package/dist/application/ReconstructionObligationOriginalCases.js +2 -1
  85. package/dist/application/ReferenceSourceImport.js +24 -8
  86. package/dist/application/ReferenceSourceImportEntries.js +22 -21
  87. package/dist/application/ReferenceSourceImportTypes.js +0 -1
  88. package/dist/application/ReferenceSourceVcsAdapter.js +33 -16
  89. package/dist/application/RegularFileRead.js +46 -18
  90. package/dist/application/Setup.js +36 -10
  91. package/dist/application/SetupClientConfiguration.js +206 -37
  92. package/dist/application/SetupClients.js +12 -6
  93. package/dist/application/SetupHost.js +66 -24
  94. package/dist/application/SetupInstallFailure.js +42 -2
  95. package/dist/application/SetupPlan.js +79 -50
  96. package/dist/application/SetupRecoveryBackup.js +66 -0
  97. package/dist/application/SetupRegistrationEnvironment.js +2 -1
  98. package/dist/application/SetupSkill.js +323 -76
  99. package/dist/application/SupportedClients.js +162 -28
  100. package/dist/application/TypeScriptEmittedSourceCandidates.js +26 -0
  101. package/dist/application/Uninstall.js +273 -82
  102. package/dist/application/UninstallFailure.js +14 -0
  103. package/dist/application/Update.js +54 -25
  104. package/dist/application/UpdateFailure.js +17 -0
  105. package/dist/application/UpdateMaintenance.js +11 -29
  106. package/dist/application/UpdateRuntime.js +141 -27
  107. package/dist/application/WebModuleTraceService.js +7 -0
  108. package/dist/application/WebNetworkCaptureService.js +16 -7
  109. package/dist/application/WebSourceLocationService.js +20 -4
  110. package/dist/application/WindowsCapabilities.js +18 -15
  111. package/dist/application/WorkflowEvidence.js +24 -1
  112. package/dist/application/analysisView/AnalysisViewService.js +90 -12
  113. package/dist/application/android/AndroidPackageInspection.js +25 -0
  114. package/dist/application/android/AndroidSearchEvidenceSummary.js +100 -0
  115. package/dist/application/binary/AnalysisProviderEvaluation.js +1 -1
  116. package/dist/application/binary/AnalysisProviderRegistry.js +36 -21
  117. package/dist/application/binary/AnalysisSnapshotCache.js +41 -20
  118. package/dist/application/binary/AnalysisSnapshotFiles.js +75 -9
  119. package/dist/application/binary/BinarySession.js +248 -96
  120. package/dist/application/binary/BinarySessionExecution.js +5 -4
  121. package/dist/application/binary/BinarySessionOpen.js +13 -6
  122. package/dist/application/binary/BinarySessionRecords.js +33 -7
  123. package/dist/application/binary/BinarySessionStatus.js +93 -23
  124. package/dist/application/binary/BinaryTargetSummary.js +9 -0
  125. package/dist/application/binary/CompositeProvider.js +71 -28
  126. package/dist/application/binary/LazyAnalysisProvider.js +3 -1
  127. package/dist/application/binary/SessionProviderRouter.js +5 -2
  128. package/dist/application/binaryDiagnostics/BinaryLayoutService.js +11 -1
  129. package/dist/application/binaryDiagnostics/PeResourcesService.js +3 -0
  130. package/dist/application/binaryDiagnostics/RecordedCrashService.js +14 -3
  131. package/dist/application/captures/PacketCaptureService.js +83 -0
  132. package/dist/application/closeOwnedWebResources.js +7 -0
  133. package/dist/application/electron/ElectronFusePort.js +1 -0
  134. package/dist/application/electron/ElectronFuseService.js +80 -0
  135. package/dist/application/evm/EvmInterfaceService.js +1 -0
  136. package/dist/application/flutter/DartAotInspection.js +26 -0
  137. package/dist/application/flutter/FlutterBuildAnalysisPort.js +1 -0
  138. package/dist/application/flutter/FlutterBuildAnalysisService.js +13 -0
  139. package/dist/application/frida/FridaInstrumentationPort.js +8 -0
  140. package/dist/application/frida/FridaInstrumentationService.js +310 -0
  141. package/dist/application/frida/fridaInputErrors.js +17 -0
  142. package/dist/application/go/GoBinaryPort.js +1 -0
  143. package/dist/application/go/GoBinaryService.js +80 -0
  144. package/dist/application/harmony/HarmonyApplicationService.js +17 -0
  145. package/dist/application/investigation/EvidenceLedger.js +40 -14
  146. package/dist/application/investigation/InvestigationRecords.js +12 -21
  147. package/dist/application/investigation/UnknownEvidence.js +22 -18
  148. package/dist/application/javascript/ElectronActiveObservationService.js +55 -25
  149. package/dist/application/javascript/ElectronBoundaryAnalysis.js +17 -3
  150. package/dist/application/javascript/ElectronBoundaryGraph.js +2 -0
  151. package/dist/application/javascript/ElectronBoundaryGraphCallPaths.js +144 -0
  152. package/dist/application/javascript/ElectronBoundaryGraphIpc.js +26 -7
  153. package/dist/application/javascript/ElectronBoundaryGraphNative.js +1 -1
  154. package/dist/application/javascript/ElectronBoundaryGraphWindows.js +47 -9
  155. package/dist/application/javascript/ElectronObservationService.js +0 -1
  156. package/dist/application/javascript/JavaScriptApplicationEvidence.js +15 -0
  157. package/dist/application/javascript/JavaScriptApplicationService.js +29 -14
  158. package/dist/application/javascript/JavaScriptApplicationWorkflowService.js +0 -1
  159. package/dist/application/javascript/JavaScriptArtifactAnalysis.js +86 -34
  160. package/dist/application/javascript/JavaScriptArtifactGraphAccumulator.js +51 -21
  161. package/dist/application/javascript/JavaScriptArtifactGraphBuilder.js +31 -7
  162. package/dist/application/javascript/JavaScriptArtifactGraphContext.js +25 -4
  163. package/dist/application/javascript/JavaScriptArtifactGraphDocuments.js +25 -14
  164. package/dist/application/javascript/JavaScriptArtifactGraphFindings.js +147 -41
  165. package/dist/application/javascript/JavaScriptArtifactGraphStructure.js +156 -7
  166. package/dist/application/javascript/JavaScriptArtifactPathResolution.js +892 -181
  167. package/dist/application/javascript/JavaScriptArtifactReconstruction.js +43 -30
  168. package/dist/application/javascript/JavaScriptArtifactReconstructionInput.js +2 -0
  169. package/dist/application/javascript/JavaScriptModuleRelationships.js +33 -11
  170. package/dist/application/javascript/JavaScriptRecoveryService.js +29 -9
  171. package/dist/application/javascript/JavaScriptRuntimeObservationService.js +2 -1
  172. package/dist/application/javascript/JavaScriptRuntimeReconciliationService.js +0 -1
  173. package/dist/application/javascript/JavaScriptSemanticGraphBuilder.js +42 -26
  174. package/dist/application/javascript/JavaScriptSemanticGraphElectronProjection.js +67 -0
  175. package/dist/application/javascript/JavaScriptSemanticTraceService.js +0 -1
  176. package/dist/application/managed/ManagedApplicationGraphService.js +0 -1
  177. package/dist/application/managed/ManagedMemberComparisonService.js +72 -54
  178. package/dist/application/managed/ManagedNativeVerificationService.js +0 -1
  179. package/dist/application/managed/ManagedReconstructionService.js +0 -1
  180. package/dist/application/native/NativeCallRoutes.js +54 -34
  181. package/dist/application/native/NativeDispatchMetadataInspection.js +6 -2
  182. package/dist/application/native/NativeUiActionTrace.js +35 -22
  183. package/dist/application/native/NativeValueTrace.js +57 -23
  184. package/dist/application/pcap/PcapAnalysisPort.js +1 -0
  185. package/dist/application/pcap/PcapAnalysisService.js +24 -0
  186. package/dist/application/process/ProcessCli.js +33 -13
  187. package/dist/application/reverse/ReverseEngineeringCommandPort.js +1 -0
  188. package/dist/application/reverse/ReverseEngineeringService.js +688 -0
  189. package/dist/application/rust/RustBinaryPort.js +1 -0
  190. package/dist/application/rust/RustBinaryService.js +80 -0
  191. package/dist/application/signals/SignalRecordingService.js +83 -0
  192. package/dist/application/sqlite/SqliteDatabaseCapability.js +30 -0
  193. package/dist/application/sqlite/SqliteDatabasePort.js +1 -0
  194. package/dist/application/sqlite/SqliteDatabaseService.js +76 -0
  195. package/dist/application/wasm/WasmArtifactPort.js +1 -0
  196. package/dist/application/wasm/WasmArtifactService.js +77 -0
  197. package/dist/application/wasm/WasmInterfaceComparisonService.js +188 -0
  198. package/dist/artifacts/ArtifactHash.js +13 -2
  199. package/dist/artifacts/ArtifactPaths.js +4 -7
  200. package/dist/artifacts/ArtifactProvider.js +8 -4
  201. package/dist/artifacts/ArtifactReader.js +13 -1
  202. package/dist/artifacts/ArtifactResourceScope.js +12 -3
  203. package/dist/artifacts/AsarArtifactReader.js +177 -112
  204. package/dist/artifacts/AsarListing.js +78 -0
  205. package/dist/artifacts/DirectoryArtifactReader.js +94 -24
  206. package/dist/artifacts/MachOSliceArtifactReader.js +83 -10
  207. package/dist/artifacts/NativeDmgArtifactReader.js +161 -58
  208. package/dist/artifacts/OrderedReads.js +57 -0
  209. package/dist/artifacts/SafeOutputTree.js +19 -4
  210. package/dist/artifacts/ZipArtifactReader.js +117 -12
  211. package/dist/artifacts/apple/AppleAssetCatalogAnalysis.js +77 -68
  212. package/dist/artifacts/apple/DylibResolutionReader.js +11 -5
  213. package/dist/artifacts/apple/InterfaceBuilderAnalysis.js +57 -21
  214. package/dist/artifacts/apple/InterfaceBuilderDecodeBudget.js +64 -12
  215. package/dist/artifacts/apple/KeyedArchiveReader.js +3 -2
  216. package/dist/artifacts/apple/MachoLoadCommandReader.js +62 -61
  217. package/dist/artifacts/apple/NibArchive.js +11 -4
  218. package/dist/artifacts/apple/PlistNumberLiterals.js +2 -2
  219. package/dist/artifacts/extraction/ArtifactExtraction.js +6 -7
  220. package/dist/artifacts/hostExecutableMarking.js +16 -0
  221. package/dist/artifacts/inventory/ArtifactGraphConstruction.js +134 -34
  222. package/dist/artifacts/inventory/ArtifactInventory.js +2 -2
  223. package/dist/artifacts/inventory/classify.js +32 -15
  224. package/dist/artifacts/inventory/reader.js +36 -21
  225. package/dist/artifacts/inventory/scanCanonical.js +25 -18
  226. package/dist/artifacts/inventory/scanReader.js +36 -10
  227. package/dist/artifacts/javascript/JavaScriptArtifactFiles.js +163 -7
  228. package/dist/artifacts/readStableArtifact.js +28 -4
  229. package/dist/browser/BrowserProcessStartup.js +20 -9
  230. package/dist/browser/BrowserScenarioPartialObservation.js +60 -44
  231. package/dist/browser/BrowserScenarioSecrets.js +176 -46
  232. package/dist/browser/CdpBrowserProvider.js +70 -99
  233. package/dist/browser/CdpCaptureDocuments.js +231 -69
  234. package/dist/browser/CdpCaptureDomSvg.js +94 -61
  235. package/dist/browser/CdpCaptureEventBodyShapes.js +9 -5
  236. package/dist/browser/CdpCaptureEventHandlers.js +23 -12
  237. package/dist/browser/CdpCaptureEvents.js +49 -10
  238. package/dist/browser/CdpCaptureStorage.js +22 -5
  239. package/dist/browser/CdpCaptureStorageFingerprints.js +54 -11
  240. package/dist/browser/CdpCaptureValues.js +0 -1
  241. package/dist/browser/CdpConnection.js +3 -4
  242. package/dist/browser/CdpElectronInspection.js +14 -4
  243. package/dist/browser/CdpElectronProvider.js +7 -2
  244. package/dist/browser/CdpElectronScripts.js +2 -1
  245. package/dist/browser/CdpElectronWorkers.js +7 -2
  246. package/dist/browser/CdpEndpoint.js +143 -17
  247. package/dist/browser/CdpObservationSession.js +24 -8
  248. package/dist/browser/CdpPageCapture.js +66 -16
  249. package/dist/browser/CdpPageCaptureScripts.js +4 -3
  250. package/dist/browser/CdpPageCaptureWorkers.js +5 -1
  251. package/dist/browser/CdpSafeMetadata.js +9 -5
  252. package/dist/browser/CdpScreenshot.js +5 -14
  253. package/dist/browser/CdpSnapshotStrings.js +21 -0
  254. package/dist/browser/CdpTargetSession.js +29 -2
  255. package/dist/browser/CdpWebMcpDiscovery.js +23 -6
  256. package/dist/browser/PlaywrightBrowserScenarioProvider.js +4 -4
  257. package/dist/browser/PlaywrightElectronActiveActions.js +4 -4
  258. package/dist/browser/PlaywrightElectronActiveProjection.js +16 -4
  259. package/dist/browser/PlaywrightElectronActiveProvider.js +103 -30
  260. package/dist/browser/PlaywrightExecutionBoundary.js +2 -2
  261. package/dist/browser/PlaywrightScenarioBrowser.js +9 -6
  262. package/dist/browser/PlaywrightScenarioEvents.js +198 -36
  263. package/dist/browser/PlaywrightScenarioServiceWorkers.js +249 -0
  264. package/dist/browser/PlaywrightScenarioSession.js +61 -29
  265. package/dist/browser/WebSourceMapFetcher.js +163 -80
  266. package/dist/browser/assets/LocalWebScriptArtifacts.js +24 -3
  267. package/dist/browser/assets/PublishWebScripts.js +13 -2
  268. package/dist/browser/assets/ScenarioScriptCapture.js +2 -1
  269. package/dist/browser/assets/WebArtifactReads.js +11 -3
  270. package/dist/browser/assets/WebSourceLocationArtifacts.js +38 -3
  271. package/dist/browser/history/CaptureFailures.js +22 -8
  272. package/dist/browser/history/CaptureFormatError.js +2 -2
  273. package/dist/browser/history/{HarJson.js → CaptureJson.js} +14 -4
  274. package/dist/browser/history/CaptureRedaction.js +16 -3
  275. package/dist/browser/history/CaptureRelease.js +20 -2
  276. package/dist/browser/history/HarCapture.js +16 -23
  277. package/dist/browser/history/HarSchema.js +36 -36
  278. package/dist/browser/history/HistoricalCaptureDecoder.js +93 -25
  279. package/dist/browser/history/NodeCaptureAdapter.js +48 -0
  280. package/dist/browser/history/{HarCaptureProcess.js → NodeCaptureProcess.js} +18 -9
  281. package/dist/browser/history/QlogCapture.js +385 -0
  282. package/dist/browser/history/SazCapture.js +130 -0
  283. package/dist/browser/history/SazHttp.js +61 -0
  284. package/dist/browser/history/SazMetadata.js +92 -0
  285. package/dist/browser/history/SazProjection.js +90 -0
  286. package/dist/browser/modules/NativeModuleResolver.js +177 -110
  287. package/dist/browser/modules/WebModuleArtifacts.js +40 -3
  288. package/dist/browser/network/PlaywrightNetworkContent.js +40 -5
  289. package/dist/browser/network/PlaywrightScenarioNetwork.js +125 -11
  290. package/dist/captures/TsharkCaptureProvider.js +370 -0
  291. package/dist/captures/parseFieldDiscovery.js +66 -0
  292. package/dist/captures/parsePacketOutput.js +21 -0
  293. package/dist/catalogIdentity.js +46 -35
  294. package/dist/cli/adbCommands.js +2 -2
  295. package/dist/cli/analysisViewCommands.js +1 -1
  296. package/dist/cli/androidCommands.js +11 -2
  297. package/dist/cli/apktoolCommands.js +10 -11
  298. package/dist/cli/applicationCommands.js +44 -17
  299. package/dist/cli/artifactCommands.js +1 -1
  300. package/dist/cli/binaryDiagnosticsCommands.js +14 -10
  301. package/dist/cli/browserAdvancedCommands.js +37 -24
  302. package/dist/cli/browserCommands.js +46 -29
  303. package/dist/cli/captureCommands.js +72 -0
  304. package/dist/cli/cliResultOutput.js +188 -0
  305. package/dist/cli/coreBinaryCommands.js +73 -27
  306. package/dist/cli/coreNativeCommands.js +53 -31
  307. package/dist/cli/cutterCommands.js +50 -0
  308. package/dist/cli/electronCommands.js +45 -3
  309. package/dist/cli/evmCommands.js +4 -5
  310. package/dist/cli/finishAnalysisCommand.js +44 -0
  311. package/dist/cli/firmwareCommands.js +14 -36
  312. package/dist/cli/flutterCommands.js +69 -0
  313. package/dist/cli/fridaCommands.js +211 -0
  314. package/dist/cli/goCommands.js +20 -0
  315. package/dist/cli/interactiveSetup.js +11 -1
  316. package/dist/cli/javascriptApplicationAnalysis.js +1 -1
  317. package/dist/cli/javascriptRecoveryCommands.js +7 -0
  318. package/dist/cli/jsonOutput.js +2 -2
  319. package/dist/cli/managedCommands.js +31 -3
  320. package/dist/cli/options.js +20 -2
  321. package/dist/cli/pcapCommands.js +47 -0
  322. package/dist/cli/processCommands.js +1 -1
  323. package/dist/cli/reverseEngineeringCommands.js +268 -0
  324. package/dist/cli/rustCommands.js +21 -0
  325. package/dist/cli/setupCommands.js +40 -12
  326. package/dist/cli/signalCommands.js +72 -0
  327. package/dist/cli/sqliteCommands.js +79 -0
  328. package/dist/cli/utilityCommands.js +116 -74
  329. package/dist/cli/wasmCommands.js +61 -0
  330. package/dist/cli/webModuleCommands.js +36 -32
  331. package/dist/cli/webNetworkCaptureCommands.js +8 -8
  332. package/dist/cli-runtime/AbortablePromise-BVBemxbD.js +123 -0
  333. package/dist/cli-runtime/AnalysisProvider-D0Us2OTk.js +27 -0
  334. package/dist/cli-runtime/AnalysisSnapshotCache-BXS0wRd2.js +710 -0
  335. package/dist/cli-runtime/ArtifactReader-BXkffc1D.js +55 -0
  336. package/dist/cli-runtime/ArtifactResourceScope-DQWTcUwE.js +114 -0
  337. package/dist/cli-runtime/AsarHeader-CnzOzYEH.js +31 -0
  338. package/dist/cli-runtime/BinarySessionStatus-DnMxMk-r.js +211 -0
  339. package/dist/cli-runtime/BinaryTargetResolver-CVIJ_s1A.js +1308 -0
  340. package/dist/cli-runtime/BoundedFileBytes-BU30odTm.js +39 -0
  341. package/dist/cli-runtime/CdpTargetSession-DGX5pV9w.js +650 -0
  342. package/dist/cli-runtime/ClientConfigPath-c6jr6INc.js +36 -0
  343. package/dist/cli-runtime/ClientConfigurationDocument-ffQ9X0Se.js +1957 -0
  344. package/dist/cli-runtime/ClientRegistrationStatus-DszCyPEU.js +509 -0
  345. package/dist/cli-runtime/CurrentEntrypointPath-D5FRNdkq.js +14 -0
  346. package/dist/cli-runtime/DirectAnalysis-BgvAtpN3.js +528 -0
  347. package/dist/cli-runtime/Doctor-DIpf_I7N.js +588 -0
  348. package/dist/cli-runtime/ElectronFileScope-dpHm2nrS.js +1054 -0
  349. package/dist/cli-runtime/ExecFileOutput-BEQs-lDD.js +117 -0
  350. package/dist/cli-runtime/IdaConfiguration-CtGP7EKo.js +1094 -0
  351. package/dist/cli-runtime/InterfaceBuilderDecodeBudget-D4omRUe4.js +279 -0
  352. package/dist/cli-runtime/InventoryProjectionEvidence-DIsI4DJ6.js +49 -0
  353. package/dist/cli-runtime/InvestigationProviders-DoQRIHii.js +117 -0
  354. package/dist/cli-runtime/JavaScriptApplicationEvidenceGraph-D5aI_FSJ.js +160 -0
  355. package/dist/cli-runtime/JavaScriptApplicationWorkflowEvidence-Bz4-V0Ct.js +75 -0
  356. package/dist/cli-runtime/JavaScriptWorkerMemoryLimit-B1bwMM1a.js +86 -0
  357. package/dist/cli-runtime/JebMcpEndpoint-DUytrn5G.js +428 -0
  358. package/dist/cli-runtime/JsonFiles-DQa1PRKy.js +708 -0
  359. package/dist/cli-runtime/MacCodeSignature-MgYbRK_H.js +24 -0
  360. package/dist/cli-runtime/MacHopperPaths-CwL5lYPX.js +434 -0
  361. package/dist/cli-runtime/MachoLoadCommandReader-C7e074Ze.js +510 -0
  362. package/dist/cli-runtime/ManagedSnapshot-rqyBHcdL.js +4185 -0
  363. package/dist/cli-runtime/OwnedCommand-Cj9GhmPR.js +112 -0
  364. package/dist/cli-runtime/PrivateRuntimeRoot-DAy0PiBM.js +263 -0
  365. package/dist/cli-runtime/ProcessOwnership-DXC5-UWt.js +1378 -0
  366. package/dist/cli-runtime/ProviderDeadline-8m2pFRDc.js +122 -0
  367. package/dist/cli-runtime/RegularFile-B_6KPCNQ.js +139 -0
  368. package/dist/cli-runtime/RegularFileRead-DVlC5faM.js +125 -0
  369. package/dist/cli-runtime/SafeOutputTree-D6U15GXd.js +524 -0
  370. package/dist/cli-runtime/SetupHost-FkYWswsq.js +1098 -0
  371. package/dist/cli-runtime/SupportedClients-DaX6Lt2d.js +1049 -0
  372. package/dist/cli-runtime/UninstallFailure-1blyKXHE.js +22 -0
  373. package/dist/cli-runtime/Update-CbTC_eg1.js +143 -0
  374. package/dist/cli-runtime/UpdateFailure-BcFNxEZZ.js +24 -0
  375. package/dist/cli-runtime/ZipArtifactReader-B8ZgNe4D.js +248 -0
  376. package/dist/cli-runtime/analysisErrorCleanup-Do6YeeoD.js +32 -0
  377. package/dist/cli-runtime/analysisErrorPresentation-DGt7TdsH.js +497 -0
  378. package/dist/cli-runtime/appleArchiveFormat-tVoI2ykA.js +263 -0
  379. package/dist/cli-runtime/application__DirectAnalysisStatus-DpOejOf0.js +150 -0
  380. package/dist/cli-runtime/application__EnhancedTools-oFE2bOjs.js +1787 -0
  381. package/dist/cli-runtime/application__FunctionAnalysisEvidence-B6osuhvW.js +41 -0
  382. package/dist/cli-runtime/application__ReconstructionCoverageService-DN3wTFQj.js +32 -0
  383. package/dist/cli-runtime/application__ReconstructionObligationLedgerService-CKcTppX9.js +815 -0
  384. package/dist/cli-runtime/application__Setup-XpMaRNjy.js +514 -0
  385. package/dist/cli-runtime/application__Uninstall-_23pU2yB.js +427 -0
  386. package/dist/cli-runtime/application__UpdateRuntime-DPvY8ohd.js +345 -0
  387. package/dist/cli-runtime/application__android__AndroidApplicationService-CFgIFPM4.js +31 -0
  388. package/dist/cli-runtime/application__apple__AppleApplicationService-Db6QCsun.js +31 -0
  389. package/dist/cli-runtime/application__harmony__HarmonyApplicationService-CFjocHoK.js +31 -0
  390. package/dist/cli-runtime/application__javascript__ElectronActiveObservationService-CmVDUI_Z.js +118 -0
  391. package/dist/cli-runtime/application__javascript__ElectronObservationService-DEsR8KDN.js +63 -0
  392. package/dist/cli-runtime/application__javascript__JavaScriptApplicationService-CCkp8KBh.js +11450 -0
  393. package/dist/cli-runtime/application__javascript__JavaScriptApplicationWorkflowService-lPy0tzr3.js +2329 -0
  394. package/dist/cli-runtime/application__javascript__JavaScriptRuntimeReconciliationService-DWleA8K9.js +88 -0
  395. package/dist/cli-runtime/application__javascript__JavaScriptSemanticTraceService-DkALH4rL.js +299 -0
  396. package/dist/cli-runtime/artifactOperationError-B7n03FbD.js +27 -0
  397. package/dist/cli-runtime/artifacts__ArtifactProvider-zXI0QjSL.js +2187 -0
  398. package/dist/cli-runtime/binary-BVOr2mgE.js +14206 -0
  399. package/dist/cli-runtime/browserObservationError-Dx6xRTjb.js +40 -0
  400. package/dist/cli-runtime/catalogIdentity-DLoXgfIR.js +933 -0
  401. package/dist/cli-runtime/cli.js +41848 -0
  402. package/dist/cli-runtime/cliOutput-BC1BdAcB.js +122 -0
  403. package/dist/cli-runtime/cliOutput.js +5 -0
  404. package/dist/cli-runtime/cliResultOutput-DsRMI8CJ.js +780 -0
  405. package/dist/cli-runtime/cliResultOutput.js +5 -0
  406. package/dist/cli-runtime/composition__browserScenario-DHXC1a8n.js +2927 -0
  407. package/dist/cli-runtime/composition__electronObservation-GecK2EID.js +555 -0
  408. package/dist/cli-runtime/composition__electronScenario-CEZnVrAL.js +653 -0
  409. package/dist/cli-runtime/cutterToolContracts-TZH9EHr5.js +5134 -0
  410. package/dist/cli-runtime/doctorRuntime-BE5ZX8it.js +258 -0
  411. package/dist/cli-runtime/dotnet__ManagedStaticProvider-C8_yZCDc.js +5 -0
  412. package/dist/cli-runtime/errorSchemas-CTRmvMl3.js +601 -0
  413. package/dist/cli-runtime/javascriptApplicationAnalysis-HgMzVMQw.js +2068 -0
  414. package/dist/cli-runtime/javascriptExportReturnShapeProjection-Dg00g35t.js +78 -0
  415. package/dist/cli-runtime/javascriptExportShapeComparisonSchemas-BYnoIqIk.js +1242 -0
  416. package/dist/cli-runtime/javascriptRuntimeReconciliation-DNjDoL3S.js +1507 -0
  417. package/dist/cli-runtime/javascriptRuntimeReconciliationSchemas-BWpGWNcI.js +247 -0
  418. package/dist/cli-runtime/javascriptSemanticTraceSchemas-BTCNcvbc.js +126 -0
  419. package/dist/cli-runtime/lipo-DSWP6fv-.js +396 -0
  420. package/dist/cli-runtime/logger-CQQCI4a2.js +48 -0
  421. package/dist/cli-runtime/machoContainer-C8BIkkq3.js +172 -0
  422. package/dist/cli-runtime/managedApplicationGraph-B08jb3jq.js +1130 -0
  423. package/dist/cli-runtime/managedToolContracts-D60QmIYj.js +99 -0
  424. package/dist/cli-runtime/mcpDoctor.js +359 -0
  425. package/dist/cli-runtime/mcpStartupPolicy-CVVSOmRc.js +21 -0
  426. package/dist/cli-runtime/native__NativeMacOSProvider-YBTvUeJO.js +4875 -0
  427. package/dist/cli-runtime/officialToolContracts-CCFF0an9.js +1501 -0
  428. package/dist/cli-runtime/propertyListKeys-G8e74YWb.js +248 -0
  429. package/dist/cli-runtime/providerAdapterError-DAjhICdr.js +25 -0
  430. package/dist/cli-runtime/providerCleanupError-Ceq8f0wK.js +27 -0
  431. package/dist/cli-runtime/providerIdentities-Ao1XTvwx.js +31 -0
  432. package/dist/cli-runtime/providerStartupTimeout-B2tF2LtZ.js +17 -0
  433. package/dist/cli-runtime/readFileHandleChunks-dp60iZ6v.js +38 -0
  434. package/dist/cli-runtime/reconstructionObligationLedgerSchemas-Bao0xMr-.js +19478 -0
  435. package/dist/cli-runtime/rolldown-runtime-DXoylpqc.js +121 -0
  436. package/dist/cli-runtime/runtimeVersion-CMGd0bDu.js +23 -0
  437. package/dist/cli-runtime/safeJson-DKKACtdy.js +25 -0
  438. package/dist/cli-runtime/scanCanonical-KP4T9jSl.js +2724 -0
  439. package/dist/cli-runtime/snapshotEnvironment-D_tWyOub.js +813 -0
  440. package/dist/cli-runtime/toolContracts-D2FOG_Nb.js +3721 -0
  441. package/dist/cli-runtime/toolOutputSchemaGroups-DRiYs1je.js +12070 -0
  442. package/dist/cli-runtime/workflowInputError-n8Oo-bLA.js +26 -0
  443. package/dist/cli.js +38 -5
  444. package/dist/cliBrowserScenarioCommands.js +39 -4
  445. package/dist/cliCommandNames.js +48 -0
  446. package/dist/cliEvidenceCommands.js +0 -1
  447. package/dist/cliJavaScriptRuntimeCommands.js +16 -14
  448. package/dist/cliJsonInput.js +12 -4
  449. package/dist/cliLogging.js +50 -14
  450. package/dist/cliObservationOptions.js +6 -0
  451. package/dist/cliOutput.js +38 -5
  452. package/dist/composition/binary.js +4 -0
  453. package/dist/composition/captures.js +3 -0
  454. package/dist/composition/directAnalysis.js +28 -11
  455. package/dist/composition/electronFuses.js +4 -0
  456. package/dist/composition/evm.js +12 -0
  457. package/dist/composition/flutter.js +3 -0
  458. package/dist/composition/go.js +4 -0
  459. package/dist/composition/javascriptAnalysisWorkerProcess.js +5 -4
  460. package/dist/composition/jeb.js +33 -4
  461. package/dist/composition/pcap.js +3 -0
  462. package/dist/composition/resolveWindowsProviderExecutable.js +61 -0
  463. package/dist/composition/reverseEngineering.js +29 -0
  464. package/dist/composition/rust.js +4 -0
  465. package/dist/composition/signals.js +3 -0
  466. package/dist/composition/sqlite.js +4 -0
  467. package/dist/composition/wasm.js +22 -0
  468. package/dist/composition/webNetworkCaptures.js +7 -2
  469. package/dist/config/environment.js +45 -4
  470. package/dist/config/ghidraDisabledAnalyzers.js +25 -0
  471. package/dist/config/homeDirectory.js +9 -6
  472. package/dist/config/mcpInputSchemaProfile.js +4 -0
  473. package/dist/config/mcpOutputSchemaProfile.js +22 -0
  474. package/dist/config/parseConfig.js +21 -31
  475. package/dist/config/parsers.js +4 -3
  476. package/dist/config/{ghidraStartupTimeout.js → providerStartupTimeout.js} +7 -3
  477. package/dist/contracts/adb/adbToolContracts.js +7 -7
  478. package/dist/contracts/analysisDetail.js +6 -3
  479. package/dist/contracts/analysisViewApiSurfaceExample.js +68 -0
  480. package/dist/contracts/analysisViewToolContracts.js +24 -3
  481. package/dist/contracts/android/androidToolContracts.js +17 -8
  482. package/dist/contracts/applicationToolContracts.js +17 -2
  483. package/dist/contracts/artifactToolContracts.js +14 -2
  484. package/dist/contracts/browserToolContracts.js +1 -0
  485. package/dist/contracts/captures/captureToolContracts.js +42 -0
  486. package/dist/contracts/compactInputSchema.js +26 -6
  487. package/dist/contracts/cutterToolContracts.js +84 -0
  488. package/dist/contracts/enhancedToolContracts.js +2 -2
  489. package/dist/contracts/evm/evmToolContracts.js +30 -15
  490. package/dist/contracts/firmware/firmwareToolContracts.js +1 -1
  491. package/dist/contracts/flutter/flutterToolContracts.js +47 -0
  492. package/dist/contracts/fridaRemoteAddress.js +23 -0
  493. package/dist/contracts/fridaToolContracts.js +273 -0
  494. package/dist/contracts/functionComparisonExample.js +12 -1
  495. package/dist/contracts/gdbToolContracts.js +103 -0
  496. package/dist/contracts/go/goToolContracts.js +20 -0
  497. package/dist/contracts/hopperMemoryContracts.js +15 -0
  498. package/dist/contracts/inputSchemaPresentation.js +81 -14
  499. package/dist/contracts/investigationExamples.js +1 -0
  500. package/dist/contracts/javascript/electronToolContracts.js +27 -2
  501. package/dist/contracts/javascript/javascriptRecoveryToolContracts.js +13 -1
  502. package/dist/contracts/managed/managedToolContracts.js +43 -4
  503. package/dist/contracts/managed/managedWorkflowExamples.js +7 -1
  504. package/dist/contracts/managed/managedWorkflowToolContracts.js +4 -30
  505. package/dist/contracts/mobileApplicationGraphExamples.js +12 -0
  506. package/dist/contracts/native/binaryDiagnosticsToolContracts.js +3 -2
  507. package/dist/contracts/native/nativeToolContracts.js +10 -6
  508. package/dist/contracts/officialToolContracts.js +5 -5
  509. package/dist/contracts/pcap/pcapToolContracts.js +33 -0
  510. package/dist/contracts/providerSelection.js +1 -0
  511. package/dist/contracts/reconstructionReadinessExample.js +126 -119
  512. package/dist/contracts/reverseEngineeringToolContracts.js +52 -0
  513. package/dist/contracts/rizinDebugToolContracts.js +96 -0
  514. package/dist/contracts/rust/rustToolContracts.js +20 -0
  515. package/dist/contracts/sessionLifecycleInputs.js +34 -2
  516. package/dist/contracts/sessionToolContracts.js +2 -2
  517. package/dist/contracts/sessionToolSchemas.js +14 -0
  518. package/dist/contracts/signals/signalToolContracts.js +40 -0
  519. package/dist/contracts/sqlite/sqliteToolContracts.js +36 -0
  520. package/dist/contracts/toolContractExamples.js +29 -0
  521. package/dist/contracts/toolContractTypes.js +2 -0
  522. package/dist/contracts/toolContracts.js +26 -0
  523. package/dist/contracts/toolEffects.js +247 -8
  524. package/dist/contracts/toolOutputSchemaGroups.js +75 -32
  525. package/dist/contracts/toolOutputSchemaPrimitives.js +111 -10
  526. package/dist/contracts/toolSchemaMetadata.js +16 -2
  527. package/dist/contracts/unknownContractExamples.js +1 -1
  528. package/dist/contracts/wasm/wasmComparisonContracts.js +52 -0
  529. package/dist/contracts/wasm/wasmToolContracts.js +33 -0
  530. package/dist/contracts/webNetworkCaptureToolContracts.js +15 -4
  531. package/dist/cutter/CutterBridgeClient.js +621 -0
  532. package/dist/cutter/CutterBridgeService.js +139 -0
  533. package/dist/doctorRuntime.js +20 -8
  534. package/dist/domain/adb/adbDeviceAnalysis.js +26 -4
  535. package/dist/domain/analysisErrorBase.js +20 -0
  536. package/dist/domain/analysisErrorCleanup.js +1 -1
  537. package/dist/domain/analysisErrorCore.js +19 -0
  538. package/dist/domain/analysisErrorPresentation.js +58 -17
  539. package/dist/domain/analysisErrorProjection.js +31 -12
  540. package/dist/domain/analysisProfile.js +7 -3
  541. package/dist/domain/analysisSnapshot.js +311 -184
  542. package/dist/domain/analysisView/WebNetworkApiSurfaceAccumulator.js +414 -0
  543. package/dist/domain/analysisView/analysisView.js +366 -44
  544. package/dist/domain/analysisView/analysisViewCoverage.js +32 -0
  545. package/dist/domain/analysisView/analysisViewErrors.js +4 -0
  546. package/dist/domain/analysisView/analysisViewParent.js +12 -0
  547. package/dist/domain/analysisView/analysisViewText.js +29 -0
  548. package/dist/domain/analysisView/androidPackageView.js +102 -0
  549. package/dist/domain/analysisView/artifactInventoryView.js +140 -0
  550. package/dist/domain/analysisView/binaryLayoutView.js +11 -4
  551. package/dist/domain/analysisView/dartAotView.js +93 -0
  552. package/dist/domain/analysisView/evmInterfaceView.js +105 -0
  553. package/dist/domain/analysisView/interfaceBuilderView.js +182 -0
  554. package/dist/domain/analysisView/javascriptApplicationView.js +29 -28
  555. package/dist/domain/analysisView/machoView.js +186 -0
  556. package/dist/domain/analysisView/managedArtifactView.js +108 -0
  557. package/dist/domain/analysisView/managedMemberView.js +209 -0
  558. package/dist/domain/analysisView/nativeFunctionView.js +20 -25
  559. package/dist/domain/analysisView/pcapCaptureView.js +264 -0
  560. package/dist/domain/analysisView/qlogCaptureView.js +198 -0
  561. package/dist/domain/analysisView/wasmArtifactView.js +162 -0
  562. package/dist/domain/analysisView/webNetworkApiSurfaceView.js +123 -0
  563. package/dist/domain/analysisView/webNetworkCaptureView.js +388 -0
  564. package/dist/domain/android/androidAnalysis.js +36 -2
  565. package/dist/domain/android/androidApplication.js +32 -60
  566. package/dist/domain/apktool/apktoolResourceAnalysis.js +19 -7
  567. package/dist/domain/apple/appleApplication.js +31 -29
  568. package/dist/domain/apple/appleArchiveFormat.js +184 -0
  569. package/dist/domain/apple/appleAssetCatalog.js +15 -0
  570. package/dist/domain/apple/appleBundleAnatomy.js +1 -1
  571. package/dist/domain/apple/dyldPaths.js +9 -2
  572. package/dist/domain/apple/dylibResolution.js +19 -9
  573. package/dist/domain/apple/dylibResolutionFindings.js +8 -9
  574. package/dist/domain/apple/interfaceBuilderGraph.js +50 -26
  575. package/dist/domain/apple/interfaceBuilderKeyedArchive.js +28 -8
  576. package/dist/domain/apple/machoContainer.js +120 -8
  577. package/dist/domain/apple/machoCpuIdentity.js +4 -0
  578. package/dist/domain/apple/plistValue.js +6 -1
  579. package/dist/domain/artifactComparison.js +109 -32
  580. package/dist/domain/artifactDecompressionBudget.js +26 -0
  581. package/dist/domain/artifactGraph.js +23 -6
  582. package/dist/domain/artifactIdentity.js +4 -1
  583. package/dist/domain/artifactInspection.js +44 -2
  584. package/dist/domain/artifactInventoryEvidence.js +137 -39
  585. package/dist/domain/binaryTarget.js +251 -94
  586. package/dist/domain/binaryTargetTypes.js +14 -1
  587. package/dist/domain/browserNetworkEvidence.js +4 -0
  588. package/dist/domain/browserObservation.js +88 -29
  589. package/dist/domain/browserObservationSchemas.js +4 -1
  590. package/dist/domain/browserScenarioCapture.js +2 -1
  591. package/dist/domain/browserScenarioCaptureValues.js +26 -2
  592. package/dist/domain/browserScenarioDiff.js +120 -11
  593. package/dist/domain/browserScenarioDiffEvidence.js +46 -13
  594. package/dist/domain/browserScenarioDiffValues.js +10 -3
  595. package/dist/domain/browserScenarioNetworkComparison.js +158 -0
  596. package/dist/domain/browserScenarioNormalization.js +10 -13
  597. package/dist/domain/browserScenarioValues.js +2 -12
  598. package/dist/domain/browserSession.js +2 -2
  599. package/dist/domain/bundleComparison.js +1 -5
  600. package/dist/domain/callPath.js +40 -3
  601. package/dist/domain/captures/packetCapture.js +138 -0
  602. package/dist/domain/captures/packetFields.js +81 -0
  603. package/dist/domain/changedBehavior.js +43 -41
  604. package/dist/domain/comparisonSourceEvidence.js +6 -0
  605. package/dist/domain/dosCom.js +2 -2
  606. package/dist/domain/dosMz.js +52 -14
  607. package/dist/domain/electron/electronFuses.js +360 -0
  608. package/dist/domain/elfFixedHeader.js +42 -0
  609. package/dist/domain/evidence.js +103 -38
  610. package/dist/domain/evidenceBundle.js +58 -20
  611. package/dist/domain/evidenceErrors.js +5 -0
  612. package/dist/domain/evm/evmInterface.js +18 -4
  613. package/dist/domain/evm/solidityMetadata.js +70 -0
  614. package/dist/domain/explicitSensitiveFailure.js +42 -24
  615. package/dist/domain/firmware/firmwareAnalysis.js +29 -0
  616. package/dist/domain/flutter/flutterBuildAnalysis.js +141 -0
  617. package/dist/domain/functionCallCoverage.js +60 -0
  618. package/dist/domain/functionComparisonDimensions.js +101 -10
  619. package/dist/domain/functionComparisonNormalization.js +66 -10
  620. package/dist/domain/functionComparisonResults.js +7 -6
  621. package/dist/domain/functionComparisonSchemas.js +14 -3
  622. package/dist/domain/functionDossierEvidence.js +3 -0
  623. package/dist/domain/go/goBinary.js +96 -0
  624. package/dist/domain/harmony/harmonyApplication.js +156 -0
  625. package/dist/domain/hopperErrors.js +15 -16
  626. package/dist/domain/hopperPublisher.js +12 -0
  627. package/dist/domain/hopperValues.js +112 -34
  628. package/dist/domain/javascript/electronObservation.js +4 -1
  629. package/dist/domain/javascript/electronStaticAnalysisBrowser.js +15 -14
  630. package/dist/domain/javascript/electronStaticAnalysisIpc.js +3 -1
  631. package/dist/domain/javascript/electronStaticAnalysisNative.js +19 -5
  632. package/dist/domain/javascript/electronStaticAnalysisValues.js +14 -8
  633. package/dist/domain/javascript/electronWrappedCallPaths.js +498 -0
  634. package/dist/domain/javascript/htmlArtifactReferences.js +94 -4
  635. package/dist/domain/javascript/javascriptAnalysisResourceControls.js +21 -1
  636. package/dist/domain/javascript/javascriptApplicationAnalysis.js +3 -0
  637. package/dist/domain/javascript/javascriptApplicationChangeGraph.js +7 -2
  638. package/dist/domain/javascript/javascriptApplicationEvidenceSchemas.js +1 -1
  639. package/dist/domain/javascript/javascriptApplicationGraph.js +17 -1
  640. package/dist/domain/javascript/javascriptApplicationGraphSchemas.js +1 -0
  641. package/dist/domain/javascript/javascriptApplicationProjectionResources.js +8 -0
  642. package/dist/domain/javascript/javascriptApplicationVersionKeys.js +31 -18
  643. package/dist/domain/javascript/javascriptArtifactFiles.js +2 -1
  644. package/dist/domain/javascript/javascriptAstFingerprint.js +51 -17
  645. package/dist/domain/javascript/javascriptAstValues.js +52 -3
  646. package/dist/domain/javascript/javascriptBootstrap.js +94 -0
  647. package/dist/domain/javascript/javascriptBootstrapIntegrity.js +372 -0
  648. package/dist/domain/javascript/javascriptBuiltinResourceMethods.js +8 -0
  649. package/dist/domain/javascript/javascriptBundledRequireOrigin.js +291 -0
  650. package/dist/domain/javascript/javascriptContextBridgeExposure.js +23 -0
  651. package/dist/domain/javascript/javascriptElectronMemberWrites.js +86 -22
  652. package/dist/domain/javascript/javascriptExportShapeComparisonSchemas.js +6 -5
  653. package/dist/domain/javascript/javascriptExportShapeVariants.js +1 -1
  654. package/dist/domain/javascript/javascriptFeatureSeed.js +33 -16
  655. package/dist/domain/javascript/javascriptFeatureTrace.js +9 -3
  656. package/dist/domain/javascript/javascriptFeatureTraceSchemas.js +42 -11
  657. package/dist/domain/javascript/javascriptIntrinsicInvocation.js +132 -0
  658. package/dist/domain/javascript/javascriptModuleDeclaration.js +28 -0
  659. package/dist/domain/javascript/javascriptModuleInterop.js +618 -0
  660. package/dist/domain/javascript/javascriptModuleResolutionMode.js +18 -0
  661. package/dist/domain/javascript/javascriptModuleSpecifier.js +5 -0
  662. package/dist/domain/javascript/javascriptNativeHandoff.js +0 -1
  663. package/dist/domain/javascript/javascriptPackageImportAliases.js +58 -0
  664. package/dist/domain/javascript/javascriptRecovery.js +12 -5
  665. package/dist/domain/javascript/javascriptRpcEndpoints.js +119 -41
  666. package/dist/domain/javascript/javascriptRuntimeLoadState.js +11 -0
  667. package/dist/domain/javascript/javascriptRuntimeObservation.js +4 -1
  668. package/dist/domain/javascript/javascriptRuntimeReconciliationCaptureParsing.js +10 -4
  669. package/dist/domain/javascript/javascriptRuntimeReconciliationMatching.js +15 -2
  670. package/dist/domain/javascript/javascriptRuntimeReconciliationResult.js +0 -1
  671. package/dist/domain/javascript/javascriptRuntimeReconciliationSchemas.js +5 -4
  672. package/dist/domain/javascript/javascriptRuntimeStaticCandidates.js +113 -11
  673. package/dist/domain/javascript/javascriptSemanticAmbientWrites.js +251 -0
  674. package/dist/domain/javascript/javascriptSemanticAnalysis.js +340 -108
  675. package/dist/domain/javascript/javascriptSemanticAsyncEffects.js +17 -34
  676. package/dist/domain/javascript/javascriptSemanticCallResolution.js +4 -3
  677. package/dist/domain/javascript/javascriptSemanticCallableStack.js +52 -0
  678. package/dist/domain/javascript/javascriptSemanticCalls.js +6 -11
  679. package/dist/domain/javascript/javascriptSemanticChildProcesses.js +42 -55
  680. package/dist/domain/javascript/javascriptSemanticDataEffectHelpers.js +428 -32
  681. package/dist/domain/javascript/javascriptSemanticDataEffects.js +14 -20
  682. package/dist/domain/javascript/javascriptSemanticDependencies.js +69 -0
  683. package/dist/domain/javascript/javascriptSemanticFingerprints.js +11 -14
  684. package/dist/domain/javascript/javascriptSemanticGraph.js +5 -1
  685. package/dist/domain/javascript/javascriptSemanticGraphSchemas.js +0 -1
  686. package/dist/domain/javascript/javascriptSemanticIterationSources.js +2 -2
  687. package/dist/domain/javascript/javascriptSemanticMemberMutations.js +224 -91
  688. package/dist/domain/javascript/javascriptSemanticMutationInitializers.js +199 -3
  689. package/dist/domain/javascript/javascriptSemanticObjectReferences.js +333 -43
  690. package/dist/domain/javascript/javascriptSemanticObjects.js +20 -16
  691. package/dist/domain/javascript/javascriptSemanticProjection.js +151 -43
  692. package/dist/domain/javascript/javascriptSemanticPromises.js +6 -9
  693. package/dist/domain/javascript/javascriptSemanticProvenance.js +5 -1
  694. package/dist/domain/javascript/javascriptSemanticQuery.js +7 -2
  695. package/dist/domain/javascript/javascriptSemanticReferenceSources.js +25 -0
  696. package/dist/domain/javascript/javascriptSemanticRequireOrigin.js +331 -8
  697. package/dist/domain/javascript/javascriptSemanticResources.js +6 -40
  698. package/dist/domain/javascript/javascriptSemanticReturnedReferences.js +14 -0
  699. package/dist/domain/javascript/javascriptSemanticReturns.js +37 -30
  700. package/dist/domain/javascript/javascriptSemanticState.js +39 -2
  701. package/dist/domain/javascript/javascriptSemanticTraversal.js +6 -4
  702. package/dist/domain/javascript/javascriptSemanticValues.js +227 -30
  703. package/dist/domain/javascript/javascriptSourceMapPaths.js +44 -17
  704. package/dist/domain/javascript/javascriptSourceParser.js +72 -3
  705. package/dist/domain/javascript/javascriptSourceSelection.js +11 -0
  706. package/dist/domain/javascript/javascriptStaticAnalysis.js +51 -17
  707. package/dist/domain/javascript/javascriptStaticAnalysisBundler.js +97 -23
  708. package/dist/domain/javascript/javascriptStaticAnalysisCalls.js +224 -44
  709. package/dist/domain/javascript/javascriptStaticAnalysisHelpers.js +166 -56
  710. package/dist/domain/javascript/javascriptStaticAnalysisState.js +1 -0
  711. package/dist/domain/javascript/javascriptStaticAnalysisTypes.js +2 -1
  712. package/dist/domain/javascript/javascriptSymbolicBindings.js +836 -0
  713. package/dist/domain/javascript/javascriptSymbolicControlFlow.js +40 -0
  714. package/dist/domain/javascript/javascriptSymbolicValues.js +34 -0
  715. package/dist/domain/javascript/sourceToBundleComparison.js +3 -1
  716. package/dist/domain/javascript/sourceToBundleComparisonSchemas.js +2 -0
  717. package/dist/domain/javascript/sourceToBundleSignals.js +47 -13
  718. package/dist/domain/jsonValue.js +37 -12
  719. package/dist/domain/localPath.js +6 -3
  720. package/dist/domain/managed/managedApplicationGraph.js +5 -0
  721. package/dist/domain/managed/managedApplicationGraphCoverage.js +6 -2
  722. package/dist/domain/managed/managedApplicationGraphNodes.js +0 -1
  723. package/dist/domain/managed/managedArtifact.js +51 -1
  724. package/dist/domain/managed/managedInspectionEvidence.js +5 -6
  725. package/dist/domain/managed/managedMemberComparison.js +3 -0
  726. package/dist/domain/managed/managedMemberComparisonCoverage.js +23 -3
  727. package/dist/domain/managed/managedMemberComparisonItems.js +23 -19
  728. package/dist/domain/managed/managedMemberComparisonMatch.js +209 -18
  729. package/dist/domain/managed/managedNativeVerificationMatch.js +49 -26
  730. package/dist/domain/managed/managedNativeVerificationSchemas.js +13 -2
  731. package/dist/domain/managed/managedReconstruction.js +5 -8
  732. package/dist/domain/mobileApplicationGraphProjection.js +80 -0
  733. package/dist/domain/native/addressCoordinate.js +11 -0
  734. package/dist/domain/native/binaryLayout.js +2 -4
  735. package/dist/domain/native/bytePattern.js +100 -0
  736. package/dist/domain/native/nativeAotPe.js +2 -2
  737. package/dist/domain/native/nativeInspection.js +38 -4
  738. package/dist/domain/native/nativeInstruction.js +17 -2
  739. package/dist/domain/native/nativeInvestigationGraph.js +9 -5
  740. package/dist/domain/native/nativeLoadImage.js +19 -1
  741. package/dist/domain/native/nativeUiObservation.js +5 -6
  742. package/dist/domain/native/objcSwiftMetadata.js +4 -1
  743. package/dist/domain/native/peResources.js +8 -2
  744. package/dist/domain/native/recordedCrash.js +79 -10
  745. package/dist/domain/offsetDateTime.js +60 -0
  746. package/dist/domain/pcap/pcapAnalysis.js +91 -0
  747. package/dist/domain/pcap/pcapEvidence.js +15 -0
  748. package/dist/domain/peMachine.js +36 -0
  749. package/dist/domain/pngHeader.js +18 -0
  750. package/dist/domain/process/processCaptureCoverage.js +26 -3
  751. package/dist/domain/process/processCaptureExample.js +2 -0
  752. package/dist/domain/process/processCaptureValidation.js +33 -8
  753. package/dist/domain/process/processComparison.js +41 -13
  754. package/dist/domain/process/processScenario.js +7 -0
  755. package/dist/domain/process/processTraceEvaluation.js +54 -50
  756. package/dist/domain/process/processTraceSpecification.js +243 -89
  757. package/dist/domain/propertyListKeys.js +211 -11
  758. package/dist/domain/propertyListXmlText.js +20 -4
  759. package/dist/domain/providerAdapterError.js +0 -5
  760. package/dist/domain/providerConfigurationRefusal.js +12 -0
  761. package/dist/domain/providerSelectionError.js +2 -1
  762. package/dist/domain/qlogCapture.js +62 -0
  763. package/dist/domain/rawBinary.js +96 -0
  764. package/dist/domain/reconstructionCoverage.js +5 -1
  765. package/dist/domain/reconstructionCoverageEvaluation.js +18 -15
  766. package/dist/domain/reconstructionCoverageVerifierResults.js +35 -0
  767. package/dist/domain/reconstructionObligationLedgerIntegrity.js +114 -0
  768. package/dist/domain/reconstructionObligationLedgerSchemas.js +104 -1
  769. package/dist/domain/reconstructionReadiness.js +4 -8
  770. package/dist/domain/reconstructionReadinessJourneyFindings.js +4 -1
  771. package/dist/domain/reconstructionUnknowns.js +9 -1
  772. package/dist/domain/reconstructionVerification.js +54 -25
  773. package/dist/domain/recordedTransportUrl.js +59 -0
  774. package/dist/domain/referenceSourceClassification.js +27 -23
  775. package/dist/domain/referenceSourceGraph.js +51 -13
  776. package/dist/domain/referenceSourceImportParsing.js +23 -13
  777. package/dist/domain/referenceSourcePathIdentity.js +11 -1
  778. package/dist/domain/referenceSourceRequireBindings.js +5 -12
  779. package/dist/domain/referenceSourceSummary.js +92 -0
  780. package/dist/domain/relationshipCoverage.js +44 -0
  781. package/dist/domain/residualUnknown.js +93 -26
  782. package/dist/domain/reverseEngineering.js +31 -0
  783. package/dist/domain/runtimeVersion.js +8 -0
  784. package/dist/domain/rust/rustBinary.js +200 -0
  785. package/dist/domain/signals/annotationTextWindow.js +31 -0
  786. package/dist/domain/signals/signalDecoders.js +69 -0
  787. package/dist/domain/signals/signalRecording.js +115 -0
  788. package/dist/domain/sourceMapContents.js +10 -3
  789. package/dist/domain/sourceMapEnvelope.js +17 -11
  790. package/dist/domain/sqlite/sqliteDatabase.js +188 -0
  791. package/dist/domain/staticRuntimeCorrelation.js +7 -9
  792. package/dist/domain/swiftSymbolClassification.js +17 -0
  793. package/dist/domain/symbolAnalysis.js +16 -4
  794. package/dist/domain/urlComponents.js +6 -0
  795. package/dist/domain/wasm/wasmArtifact.js +119 -0
  796. package/dist/domain/wasm/wasmInterface.js +89 -0
  797. package/dist/domain/webBundleAnalysis.js +14 -3
  798. package/dist/domain/webBundleAnalyzerAst.js +7 -2
  799. package/dist/domain/webBundleAnalyzerInspection.js +54 -38
  800. package/dist/domain/webBundleAnalyzerResult.js +18 -6
  801. package/dist/domain/webCaptureDiff.js +140 -39
  802. package/dist/domain/webCaptureFrameComparison.js +49 -0
  803. package/dist/domain/webMcpDiscovery.js +5 -2
  804. package/dist/domain/webModuleImports.js +22 -27
  805. package/dist/domain/webModuleTrace.js +3 -8
  806. package/dist/domain/webNetworkCapture.js +101 -39
  807. package/dist/domain/webNetworkCaptureCoordinates.js +21 -0
  808. package/dist/domain/webRuntime.js +0 -1
  809. package/dist/domain/webScreenshot.js +2 -2
  810. package/dist/domain/webScriptArtifacts.js +2 -4
  811. package/dist/domain/webScriptExport.js +6 -8
  812. package/dist/domain/webScriptExportPlan.js +2 -2
  813. package/dist/domain/webSourceLocation.js +20 -9
  814. package/dist/domain/zipPackageFormat.js +29 -3
  815. package/dist/dotnet/ManagedArtifactInspector.js +27 -12
  816. package/dist/dotnet/ManagedDecodeBudget.js +66 -8
  817. package/dist/dotnet/ManagedMemberInspector.js +101 -21
  818. package/dist/dotnet/ManagedMemberInspectorCore.js +356 -140
  819. package/dist/dotnet/ManagedMemberInstructionDecoder.js +109 -37
  820. package/dist/dotnet/ManagedMemberOwnership.js +65 -0
  821. package/dist/dotnet/ManagedMemberPointers.js +69 -0
  822. package/dist/dotnet/ManagedMemberRows.js +179 -46
  823. package/dist/dotnet/ManagedMetadataHeaps.js +110 -24
  824. package/dist/dotnet/ManagedMetadataInventory.js +5 -5
  825. package/dist/dotnet/ManagedMetadataInventoryRows.js +36 -52
  826. package/dist/dotnet/ManagedMetadataLayout.js +9 -1
  827. package/dist/dotnet/ManagedMetadataRowSizes.js +1 -1
  828. package/dist/dotnet/ManagedMethodBodyReader.js +29 -11
  829. package/dist/dotnet/ManagedMethodSpecs.js +78 -0
  830. package/dist/dotnet/ManagedNativeBoundaryHelpers.js +2 -2
  831. package/dist/dotnet/ManagedNativeBoundaryInspector.js +6 -13
  832. package/dist/dotnet/ManagedPeReader.js +55 -27
  833. package/dist/dotnet/ManagedReaderFailure.js +9 -0
  834. package/dist/dotnet/ManagedSnapshot.js +88 -0
  835. package/dist/dotnet/ManagedStaticProvider.js +55 -64
  836. package/dist/dotnet/ManagedTypeMemberLists.js +105 -0
  837. package/dist/dotnet/ManagedTypeNames.js +98 -0
  838. package/dist/dotnet/ManagedUserStrings.js +75 -0
  839. package/dist/electron/ElectronFusePath.js +247 -0
  840. package/dist/electron/ElectronFuseProvider.js +113 -0
  841. package/dist/electron/ElectronFuseReader.js +317 -0
  842. package/dist/evaluation/AgentEvaluationFixtures.js +194 -11
  843. package/dist/evaluation/CodexAgentEval.js +19 -40
  844. package/dist/evaluation/KnownAnswerEvaluation.js +126 -57
  845. package/dist/evm/EvmoleFailures.js +19 -14
  846. package/dist/evm/EvmoleInterfaceAdapter.js +5 -1
  847. package/dist/evm/EvmoleInterfaceProvider.js +141 -31
  848. package/dist/evm/EvmoleInterfaceWorker.js +2 -0
  849. package/dist/evm/SolidityMetadata.js +139 -0
  850. package/dist/filesystem/OwnedStagedOutput.js +138 -0
  851. package/dist/filesystem/RegularFile.js +48 -4
  852. package/dist/filesystem/readFileHandleChunks.js +17 -8
  853. package/dist/firmware/FirmwareCommand.js +2 -2
  854. package/dist/firmware/FirmwareFiles.js +8 -12
  855. package/dist/firmware/FirmwareProvider.js +2 -0
  856. package/dist/firmware/FirmwarePublication.js +218 -1
  857. package/dist/firmware/FirmwareReports.js +202 -12
  858. package/dist/flutter/DartElf.js +418 -0
  859. package/dist/flutter/ElfBuildId.js +137 -0
  860. package/dist/flutter/ElfLoadMap.js +91 -0
  861. package/dist/flutter/FlutterBuildProvider.js +826 -0
  862. package/dist/flutter/FlutterPayloadScan.js +180 -0
  863. package/dist/frida/FridaInstrumentationManager.js +1104 -0
  864. package/dist/gdb/GdbSessionManager.js +1451 -0
  865. package/dist/generatedPackageMetadata.js +2 -2
  866. package/dist/ghidra/GhidraAnalysisProfile.js +130 -12
  867. package/dist/ghidra/GhidraClient.js +195 -88
  868. package/dist/ghidra/GhidraDiagnostics.js +7 -0
  869. package/dist/ghidra/GhidraDoctor.js +15 -12
  870. package/dist/ghidra/GhidraFunctionValues.js +49 -2
  871. package/dist/ghidra/GhidraInstallation.js +215 -19
  872. package/dist/ghidra/GhidraInstallationPolicy.js +79 -29
  873. package/dist/ghidra/GhidraInventoryValues.js +30 -0
  874. package/dist/ghidra/GhidraJavaLaunch.js +91 -10
  875. package/dist/ghidra/GhidraJavaProperties.js +117 -0
  876. package/dist/ghidra/GhidraLanguageCatalog.js +74 -4
  877. package/dist/ghidra/GhidraLauncher.js +234 -57
  878. package/dist/ghidra/GhidraLoadImageAttest.js +28 -8
  879. package/dist/ghidra/GhidraLoadImageValues.js +72 -0
  880. package/dist/ghidra/GhidraMipsProfile.js +250 -14
  881. package/dist/ghidra/GhidraPeProfile.js +21 -0
  882. package/dist/ghidra/GhidraPowerPcProfile.js +51 -0
  883. package/dist/ghidra/GhidraProvider.js +54 -16
  884. package/dist/ghidra/GhidraProviderCapabilities.js +13 -12
  885. package/dist/ghidra/GhidraProviderClient.js +260 -57
  886. package/dist/ghidra/GhidraPspExtension.js +140 -0
  887. package/dist/ghidra/GhidraPspProfile.js +59 -0
  888. package/dist/ghidra/GhidraRawBinaryLanguage.js +40 -0
  889. package/dist/ghidra/GhidraRiscvProfile.js +100 -0
  890. package/dist/ghidra/GhidraSessionError.js +155 -11
  891. package/dist/ghidra/GhidraSessionValues.js +66 -0
  892. package/dist/ghidra/GhidraTransport.js +2 -1
  893. package/dist/go/GoBinaryContainer.js +140 -0
  894. package/dist/go/GoBinaryImage.js +210 -0
  895. package/dist/go/GoBinaryProvider.js +151 -0
  896. package/dist/go/GoElfImage.js +211 -0
  897. package/dist/go/GoMachoImage.js +164 -0
  898. package/dist/go/GoModuleText.js +217 -0
  899. package/dist/go/GoPeImage.js +124 -0
  900. package/dist/hopper/BridgeLauncher.js +35 -2
  901. package/dist/hopper/HopperAnalysisProfile.js +21 -11
  902. package/dist/hopper/HopperCleanup.js +15 -3
  903. package/dist/hopper/HopperClient.js +188 -36
  904. package/dist/hopper/HopperMacPublisher.js +29 -0
  905. package/dist/hopper/HopperMachOImage.js +61 -29
  906. package/dist/hopper/HopperProcessDiagnostic.js +27 -0
  907. package/dist/hopper/HopperProvider.js +59 -28
  908. package/dist/hopper/HopperProviderCapabilities.js +7 -3
  909. package/dist/hopper/HopperRequestQueue.js +17 -5
  910. package/dist/hopper/HopperSessionValues.js +10 -1
  911. package/dist/hopper/HopperTargetLease.js +66 -19
  912. package/dist/ida/IdaBusyHealth.js +44 -0
  913. package/dist/ida/IdaCallGraph.js +134 -0
  914. package/dist/ida/IdaConfiguration.js +7 -2
  915. package/dist/ida/IdaDiagnosticRedactor.js +199 -0
  916. package/dist/ida/IdaDiagnosticWriter.js +62 -0
  917. package/dist/ida/IdaDoctor.js +7 -5
  918. package/dist/ida/IdaJsonDiagnostic.js +138 -0
  919. package/dist/ida/IdaMcpConnection.js +297 -27
  920. package/dist/ida/IdaNativeProtocol.js +93 -0
  921. package/dist/ida/IdaOperationRunner.js +246 -43
  922. package/dist/ida/IdaProtocolValues.js +86 -4
  923. package/dist/ida/IdaProvider.js +29 -10
  924. package/dist/ida/IdaProviderCapabilities.js +37 -8
  925. package/dist/ida/IdaSessionClient.js +331 -54
  926. package/dist/ida/IdaWorkspace.js +54 -6
  927. package/dist/inspector/V8InspectorCaptureProjection.js +7 -2
  928. package/dist/inspector/V8InspectorEndpoint.js +15 -13
  929. package/dist/inspector/V8InspectorProvider.js +41 -7
  930. package/dist/javascript/analysis/JavaScriptAnalysisTransfer.js +19 -8
  931. package/dist/javascript/analysis/JavaScriptAnalysisWorker.js +103 -29
  932. package/dist/javascript/analysis/JavaScriptAnalysisWorkerProtocol.js +6 -4
  933. package/dist/javascript/analysis/JavaScriptAnalysisWorkerSchemas.js +78 -9
  934. package/dist/javascript/analysis/JavaScriptAnalysisWorkerServer.js +15 -5
  935. package/dist/javascript/recovery/RecoveryFiles.js +51 -6
  936. package/dist/javascript/recovery/WakaruExecution.js +19 -11
  937. package/dist/javascript/recovery/WakaruProvider.js +12 -9
  938. package/dist/javascript/recovery/WakaruPublication.js +24 -10
  939. package/dist/javascript/recovery/WakaruRelease.js +1 -1
  940. package/dist/javascript/recovery/WakaruReport.js +3 -2
  941. package/dist/javascript/sourceMaps/DecodedSourceMap.js +2 -16
  942. package/dist/javascript/sourceMaps/SourceMapCommand.js +22 -4
  943. package/dist/javascript/sourceMaps/SourceMapDecoder.js +22 -4
  944. package/dist/javascript/sourceMaps/SourceMapFormat.js +25 -38
  945. package/dist/javascript/sourceMaps/TraceSourceMap.js +34 -6
  946. package/dist/jeb/JebMcpConnection.js +19 -12
  947. package/dist/jeb/JebMcpEndpoint.js +6 -1
  948. package/dist/jeb/JebProvider.js +5 -7
  949. package/dist/logger.js +14 -1
  950. package/dist/main/shutdown.js +3 -0
  951. package/dist/main/transport.js +48 -4
  952. package/dist/main.js +14 -3
  953. package/dist/mcp/AnalysisSnapshotFiles-BAbiJQOc.js +1412 -0
  954. package/dist/mcp/ArtifactProvider-DViCU_rn.js +2183 -0
  955. package/dist/mcp/ArtifactProviderMetadata-b7pOK5_t.js +76 -0
  956. package/dist/mcp/ArtifactReader-OyM03Gjn.js +55 -0
  957. package/dist/mcp/ArtifactResourceScope-P3tq5z8Z.js +162 -0
  958. package/dist/mcp/AsarHeader-WsPgoooH.js +31 -0
  959. package/dist/mcp/BinarySessionStatus-B4P9gf-S.js +212 -0
  960. package/dist/mcp/BinaryTargetResolver-BMaE_0H1.js +1427 -0
  961. package/dist/mcp/BoundedFileBytes-DuczXiQZ.js +68 -0
  962. package/dist/mcp/CdpCaptureDocuments-HDiF2O7k.js +746 -0
  963. package/dist/mcp/CdpCaptureValues-M-j6CIh1.js +90 -0
  964. package/dist/mcp/CdpConnection-BpDfz4MK.js +570 -0
  965. package/dist/mcp/CdpOptionalCommand-BPjRD9Kz.js +120 -0
  966. package/dist/mcp/CdpTargetSession-BsPoKhEU.js +86 -0
  967. package/dist/mcp/DirectAnalysis-DrafbXke.js +409 -0
  968. package/dist/mcp/DirectAnalysisStatus-CjjeDLzW.js +44 -0
  969. package/dist/mcp/ElectronFileScope-BPG_YoyU.js +110 -0
  970. package/dist/mcp/InterfaceBuilderDecodeBudget-5F2AkxJT.js +652 -0
  971. package/dist/mcp/ManagedStaticProvider-BthZbKyZ.js +5028 -0
  972. package/dist/mcp/NativeMacOSProvider-Bh79k8dI.js +4867 -0
  973. package/dist/mcp/NativeMacOSProviderMetadata-N1lPOaY_.js +307 -0
  974. package/dist/mcp/ProcedureAddressResolution-CQpuwm1h.js +19 -0
  975. package/dist/mcp/ProcessOwnership-Bl_3ejLe.js +1502 -0
  976. package/dist/mcp/ProviderDeadline-DskQ94YD.js +932 -0
  977. package/dist/mcp/WorkflowEvidence-umWrB_wm.js +111 -0
  978. package/dist/mcp/analysisErrorCore-DXRTvF_m.js +235 -0
  979. package/dist/mcp/analysisErrorProjection-BN0EPM-3.js +892 -0
  980. package/dist/mcp/artifactOperationError-CkHMMaf7.js +27 -0
  981. package/dist/mcp/artifactToolContracts-Di4qZlEt.js +72 -0
  982. package/dist/mcp/browserObservation-C0s4i8UI.js +4468 -0
  983. package/dist/mcp/browserObservationError-CyLugqX4.js +40 -0
  984. package/dist/mcp/browserObservationSchemas-tgqjH7aA.js +573 -0
  985. package/dist/mcp/browserScenario-CAQ8Fns9.js +2929 -0
  986. package/dist/mcp/browserScenarioCapture-CTNFN-FI.js +479 -0
  987. package/dist/mcp/canonicalDigest-Bi_0_zGi.js +71 -0
  988. package/dist/mcp/digests-BFoWUT_-.js +223 -0
  989. package/dist/mcp/electronActiveObservation-lDvQTMR0.js +226 -0
  990. package/dist/mcp/electronObservation-DFOFEood.js +112 -0
  991. package/dist/mcp/electronObservation-i7LcILQ-.js +562 -0
  992. package/dist/mcp/electronScenario-nCzE6IfJ.js +653 -0
  993. package/dist/mcp/emptyArraySchema-tL6Qymyd.js +140 -0
  994. package/dist/mcp/enhancedInputs-DgdEnzHy.js +56 -0
  995. package/dist/mcp/javascriptRuntimeObservation-61NhCf7H.js +690 -0
  996. package/dist/mcp/javascriptRuntimeObservation-PIUoLfX6.js +121 -0
  997. package/dist/mcp/jsonSerialization-V-wWiFRE.js +152 -0
  998. package/dist/mcp/lipo-Bnkoq_6W.js +502 -0
  999. package/dist/mcp/localPath-AxvW9aPe.js +19 -0
  1000. package/dist/mcp/logger-BQY5ulYv.js +48 -0
  1001. package/dist/mcp/main-kBXHZ8S5.js +69390 -0
  1002. package/dist/mcp/main.js +6 -0
  1003. package/dist/mcp/managedToolContracts-CK--I_s7.js +101 -0
  1004. package/dist/mcp/nativeValueTrace-DR9UE62L.js +3439 -0
  1005. package/dist/mcp/officialToolContracts-B67NJ2tC.js +1413 -0
  1006. package/dist/mcp/pngHeader-DQ-ObyY2.js +147 -0
  1007. package/dist/mcp/propertyListKeys-DD25WsjI.js +553 -0
  1008. package/dist/mcp/providerAdapterError-sDxToNal.js +25 -0
  1009. package/dist/mcp/providerIdentities--ptAh481.js +31 -0
  1010. package/dist/mcp/providerIdentity-BCQ5n5tw.js +16 -0
  1011. package/dist/mcp/providerOperationHealth-CTYa3iLf.js +48 -0
  1012. package/dist/mcp/rolldown-runtime-BjeaiXFo.js +121 -0
  1013. package/dist/mcp/safeJson-NeGfpkrI.js +25 -0
  1014. package/dist/mcp/scanCanonical-CRXSpule.js +3982 -0
  1015. package/dist/mcp/serverIdentity-Cio4iFV3.js +1328 -0
  1016. package/dist/mcp/sourceMapEnvelope-C0uJlrOh.js +94 -0
  1017. package/dist/mcp/toolContracts-BW05wpcr.js +12200 -0
  1018. package/dist/mcp/toolOutputSchemaGroups-ColvNZ1r.js +17533 -0
  1019. package/dist/mcp/unicodeCodePointOrder-BezCbTpg.js +26 -0
  1020. package/dist/mcp/webContentArtifact-Dzjc1z-R.js +284 -0
  1021. package/dist/mcp/webRuntime-K__NYzXm.js +74 -0
  1022. package/dist/mcp/webSourceLocation-DbMAT2J9.js +11130 -0
  1023. package/dist/mcpDoctor.js +93 -70
  1024. package/dist/mcpStartupPolicy.js +3 -0
  1025. package/dist/native/AppleDispatchCoverage.js +57 -17
  1026. package/dist/native/AppleDispatchMetadata.js +6 -2
  1027. package/dist/native/AppleMachoFixups.js +188 -25
  1028. package/dist/native/AppleMachoSelection.js +30 -23
  1029. package/dist/native/AppleObjcCategories.js +1 -2
  1030. package/dist/native/AppleObjcDispatchFacets.js +76 -7
  1031. package/dist/native/CommandRunner.js +142 -32
  1032. package/dist/native/LldbCallTracer.js +5 -3
  1033. package/dist/native/MachoArchitectureSelection.js +50 -0
  1034. package/dist/native/NativeCallObservation.js +2 -1
  1035. package/dist/native/NativeMacOSProvider.js +90 -29
  1036. package/dist/native/NativeMachoInspection.js +136 -76
  1037. package/dist/native/NativeUiObservation.js +2 -2
  1038. package/dist/native/SignatureTargetBinding.js +118 -55
  1039. package/dist/native/parsers/codesign.js +27 -10
  1040. package/dist/native/parsers/demangle.js +7 -1
  1041. package/dist/native/parsers/dyldInfo.js +73 -4
  1042. package/dist/native/parsers/lipo.js +53 -19
  1043. package/dist/native/parsers/machoUuid.js +150 -0
  1044. package/dist/native/parsers/otool.js +232 -29
  1045. package/dist/native/pe/PeResourcesProvider.js +20 -6
  1046. package/dist/native/pwndbg/PwndbgCoreContext.js +20 -20
  1047. package/dist/native/pwntools/PwntoolsDecoder.js +264 -40
  1048. package/dist/native/pwntools/PwntoolsFailures.js +2 -1
  1049. package/dist/native/pwntools/PwntoolsInputLimit.js +27 -0
  1050. package/dist/native/pwntools/PwntoolsRecordedCrashProvider.js +27 -15
  1051. package/dist/native/pwntools/PwntoolsResourceLimits.js +3 -3
  1052. package/dist/native/pwntools/RecordedCrashSourceBindings.js +12 -8
  1053. package/dist/native/pwntools/RecordedCrashStructureBindings.js +3 -1
  1054. package/dist/objdump/ObjdumpCommand.js +21 -0
  1055. package/dist/pcap/PcapCommand.js +146 -0
  1056. package/dist/pcap/PcapConfiguration.js +93 -0
  1057. package/dist/pcap/PcapNativeBound.js +58 -0
  1058. package/dist/pcap/PcapOutput.js +240 -0
  1059. package/dist/pcap/PcapProvider.js +424 -0
  1060. package/dist/pcap/PcapSnapshot.js +171 -0
  1061. package/dist/process/ArtifactAnalysisResources.js +213 -0
  1062. package/dist/process/CurrentEntrypointPath.js +6 -0
  1063. package/dist/process/DarwinProcessRunTokenReader.js +117 -13
  1064. package/dist/process/ExecFileBoundedOutput.js +44 -0
  1065. package/dist/process/ExecFileOutput.js +30 -6
  1066. package/dist/process/JavaScriptWorkerMemoryLimit.js +25 -0
  1067. package/dist/process/LinuxResourceLimits.js +80 -0
  1068. package/dist/process/MacCodeSignature.js +3 -0
  1069. package/dist/process/OwnedCommand.js +37 -13
  1070. package/dist/process/PrivateRuntimeRoot.js +9 -19
  1071. package/dist/process/PrivateRuntimeRootUnavailableError.js +10 -0
  1072. package/dist/process/ProcessOwnership.js +70 -17
  1073. package/dist/process/ProcessOwnershipObservation.js +35 -4
  1074. package/dist/process/ProviderDeadline.js +58 -12
  1075. package/dist/process/ProviderProcess.js +108 -11
  1076. package/dist/process/WindowsAuthority.js +48 -39
  1077. package/dist/process/WindowsBatchCommand.js +46 -0
  1078. package/dist/process/boundedUtf8Text.js +13 -0
  1079. package/dist/process/capture/FilesystemSnapshot.js +60 -9
  1080. package/dist/process/capture/ProcessCaptureClock.js +2 -0
  1081. package/dist/process/capture/ProcessCaptureError.js +22 -3
  1082. package/dist/process/capture/ProcessCaptureJournal.js +2 -1
  1083. package/dist/process/capture/ProcessCaptureLifecycle.js +87 -36
  1084. package/dist/process/capture/ProcessCaptureProgress.js +2 -1
  1085. package/dist/process/capture/ProcessHarness.js +17 -14
  1086. package/dist/process/capture/ProcessNormalization.js +278 -36
  1087. package/dist/process/capture/ProcessSampling.js +3 -2
  1088. package/dist/process/capture/ProcessScenarioRuntimeValidation.js +13 -13
  1089. package/dist/process/capture/TerminalRenderer.js +31 -10
  1090. package/dist/process/ownedDebuggerSession.js +203 -0
  1091. package/dist/reference/ReferenceSourceReader.js +0 -1
  1092. package/dist/reference/ReferenceSourceReaderEntries.js +68 -54
  1093. package/dist/reference/ReferenceSourceReaderErrors.js +5 -1
  1094. package/dist/reference/ReferenceSourceReaderFile.js +0 -1
  1095. package/dist/reference/ReferenceSourceReaderTypes.js +1 -2
  1096. package/dist/reference/ReferenceSourceReaderValidate.js +0 -1
  1097. package/dist/rizin/RizinCommand.js +14 -0
  1098. package/dist/rizin/RizinDebugSessionManager.js +1072 -0
  1099. package/dist/rust/RustAuditableReader.js +309 -0
  1100. package/dist/rust/RustBinaryImage.js +116 -0
  1101. package/dist/rust/RustBinaryProvider.js +162 -0
  1102. package/dist/server/EvidenceMcpServer.js +160 -37
  1103. package/dist/server/admittedToolOperation.js +7 -2
  1104. package/dist/server/contractToolHandler.js +8 -1
  1105. package/dist/server/createServer.js +157 -27
  1106. package/dist/server/externalMutationAdmission.js +50 -0
  1107. package/dist/server/mcpProgress.js +4 -2
  1108. package/dist/server/promptCompletion.js +19 -6
  1109. package/dist/server/providerEnvironment.js +3 -0
  1110. package/dist/server/registerAnalysisViewTool.js +6 -2
  1111. package/dist/server/registerAndroidTools.js +22 -4
  1112. package/dist/server/registerApplicationTools/projectMobileApplicationGraph.js +8 -1
  1113. package/dist/server/registerArtifactTools.js +21 -1
  1114. package/dist/server/registerBrowserTools.js +2 -4
  1115. package/dist/server/registerBundleComparisonTool.js +4 -4
  1116. package/dist/server/registerCaptureTools.js +12 -0
  1117. package/dist/server/registerCutterTools.js +33 -0
  1118. package/dist/server/registerElectronTools.js +12 -9
  1119. package/dist/server/registerEnhancedTools.js +7 -6
  1120. package/dist/server/registerEvidenceTools.js +14 -10
  1121. package/dist/server/registerEvmTools.js +22 -4
  1122. package/dist/server/registerFlutterTools.js +17 -0
  1123. package/dist/server/registerFridaTools.js +205 -0
  1124. package/dist/server/registerFunctionComparisonTool.js +29 -9
  1125. package/dist/server/registerGdbTools.js +64 -0
  1126. package/dist/server/registerGoTools.js +9 -0
  1127. package/dist/server/registerInvestigationTools/helpers.js +2 -2
  1128. package/dist/server/registerInvestigationTools.js +12 -8
  1129. package/dist/server/registerJavaScriptRuntimeObservationTools.js +1 -5
  1130. package/dist/server/registerManagedTools.js +11 -1
  1131. package/dist/server/registerNativeTools.js +14 -0
  1132. package/dist/server/registerOfficialTools.js +5 -0
  1133. package/dist/server/registerPcapTools.js +35 -0
  1134. package/dist/server/registerProcessComparisonTool.js +9 -2
  1135. package/dist/server/registerReverseEngineeringTools.js +86 -0
  1136. package/dist/server/registerRizinDebugTools.js +53 -0
  1137. package/dist/server/registerRustTools.js +9 -0
  1138. package/dist/server/registerSessionRecordTools.js +19 -13
  1139. package/dist/server/registerSessionStatusTool.js +22 -4
  1140. package/dist/server/registerSessionTools.js +29 -16
  1141. package/dist/server/registerSignalTools.js +12 -0
  1142. package/dist/server/registerSqliteTools.js +9 -0
  1143. package/dist/server/registerWasmTools.js +46 -0
  1144. package/dist/server/registerWebNetworkCaptureTool.js +24 -10
  1145. package/dist/server/retainedSummaryDelivery.js +28 -0
  1146. package/dist/server/sessionAvailabilityPolicy.js +3 -0
  1147. package/dist/server/toolRegistrationOptions.js +8 -0
  1148. package/dist/server/toolResult.js +52 -19
  1149. package/dist/server/toolResultEncoding.js +36 -3
  1150. package/dist/serverIdentity.js +17 -8
  1151. package/dist/signals/SigrokRecordingProvider.js +339 -0
  1152. package/dist/signals/parseDecoderDiscovery.js +65 -0
  1153. package/dist/sqlite/SqliteDatabaseFailures.js +134 -0
  1154. package/dist/sqlite/SqliteDatabaseInspection.js +421 -0
  1155. package/dist/sqlite/SqliteDatabaseLimits.js +16 -0
  1156. package/dist/sqlite/SqliteDatabaseProvider.js +295 -0
  1157. package/dist/sqlite/SqliteDatabaseSnapshot.js +156 -0
  1158. package/dist/sqlite/SqliteDatabaseWorker.js +46 -0
  1159. package/dist/sqlite/SqliteDatabaseWorkerExecution.js +112 -0
  1160. package/dist/wasm/WabtArtifactProvider.js +336 -0
  1161. package/dist/wasm/WabtFailures.js +101 -0
  1162. package/dist/wasm/WabtInterface.js +309 -0
  1163. package/dist/wasm/WabtOutput.js +60 -0
  1164. package/dist/wasm/WabtRelease.js +12 -0
  1165. package/dist/wasm/WabtString.js +48 -0
  1166. package/dist/wasm/WabtWat.js +147 -0
  1167. package/dist/wasm/WasmGlueAdapter.js +53 -0
  1168. package/dist/wasm/WasmInterfaceBudget.js +11 -0
  1169. package/dist/windows/WindowsNativeLoader.js +37 -7
  1170. package/dist/windows/WindowsOwnedProcess.js +150 -17
  1171. package/dist/windows/WindowsPrivateRuntime.js +22 -1
  1172. package/install.sh +157 -98
  1173. package/licenses/Apache-2.0.txt +202 -0
  1174. package/licenses/GCC-Runtime-Library-Exception-3.1.txt +73 -0
  1175. package/licenses/GPL-3.0.txt +674 -0
  1176. package/licenses/LGPL-2.0.txt +480 -0
  1177. package/licenses/MIT-template.txt +18 -0
  1178. package/licenses/MinGW-w64-runtime.txt +240 -0
  1179. package/licenses/Node-22.19.0-LICENSE.txt +2666 -0
  1180. package/licenses/README.md +68 -0
  1181. package/licenses/cfworker-MIT.txt +21 -0
  1182. package/licenses/dotnet-runtime-MIT.txt +23 -0
  1183. package/licenses/frida-17.23.2-COPYING.txt +50 -0
  1184. package/licenses/ghidra-12.1.4-DISCLAIMER.txt +13 -0
  1185. package/licenses/ghidra-12.1.4-LICENSE.txt +201 -0
  1186. package/licenses/ghidra-12.1.4-NOTICE.txt +49 -0
  1187. package/licenses/npm-dependencies.txt +3612 -0
  1188. package/licenses/npm-runtime-notices.txt +8548 -0
  1189. package/licenses/upstream-sources.json +72 -0
  1190. package/licenses/xterm-MIT.txt +21 -0
  1191. package/native/windows/README.md +92 -11
  1192. package/native/windows/build/manifest.json +2 -2
  1193. package/native/windows/build/rea-windows-x64.node +0 -0
  1194. package/package.json +89 -22
  1195. package/scripts/electron-active-hook.cjs +4 -1
  1196. package/scripts/hopper-demo-x11.py +53 -3
  1197. package/scripts/prepack.mjs +5 -0
  1198. package/scripts/rea-android-workspace-guardian.mjs +46 -0
  1199. package/scripts/rea.mjs +28 -12
  1200. package/scripts/verify-windows-native-artifact.mjs +2 -2
  1201. package/skills/reverse-engineer-anything/SKILL.md +131 -10
  1202. package/skills/reverse-engineer-anything/references/connection-and-recovery.md +10 -10
  1203. package/skills/reverse-engineer-anything/references/evidence-workflows.md +23 -0
  1204. package/skills/reverse-engineer-anything/references/javascript-applications.md +28 -2
  1205. package/skills/reverse-engineer-anything/references/native-and-artifacts.md +125 -15
  1206. package/skills/reverse-engineer-anything/references/runtime-observation.md +57 -7
  1207. package/third_party/README.md +1 -1
  1208. package/third_party/wabt/README.md +24 -0
  1209. package/dist/browser/history/HarCaptureAdapter.js +0 -20
  1210. package/dist/cli/streamedJsonOutput.js +0 -135
  1211. /package/dist/{application/binary → process}/AbortablePromise.js +0 -0
@@ -0,0 +1,1072 @@
1
+ import { randomUUID } from "node:crypto";
2
+ import { isUtf8 } from "node:buffer";
3
+ import { open, readFile, readlink, realpath, stat } from "node:fs/promises";
4
+ import { constants as fsConstants } from "node:fs";
5
+ import { isatty } from "node:tty";
6
+ import { resolve } from "node:path";
7
+ import { AnalysisCancelledError, AnalysisCapabilityUnavailableError, AnalysisInputError, AnalysisResourceConstraintError, AnalysisTimeoutError, } from "../domain/analysisErrorCore.js";
8
+ import { createEvidence } from "../domain/evidence.js";
9
+ import { err, ok } from "../domain/result.js";
10
+ import { ProviderProcessSupervisor, spawnOwnedProviderProcess, } from "../process/ProviderProcess.js";
11
+ import { closeOwnedDebuggerSessions, stopOwnedDebuggerProcess, verifyOwnedInferiorsEnded, } from "../process/ownedDebuggerSession.js";
12
+ const MAX_SESSIONS = 8;
13
+ const MAX_PENDING_COMMANDS = 16;
14
+ const FRAME_TIMEOUT_MS = 120_000;
15
+ const CLEANUP_COMMAND_TIMEOUT_MS = 1_000;
16
+ const STARTUP_TIMEOUT_MS = 30_000;
17
+ const MAX_FRAME_BYTES = 16 * 1024 * 1024;
18
+ const MAX_COMMAND_OUTPUT_BYTES = 16 * 1024 * 1024;
19
+ const MAX_QUEUED_FRAME_BYTES = 4 * 1024 * 1024;
20
+ const MAX_QUEUED_FRAMES = 4096;
21
+ const MIN_QUEUED_FRAME_CHARGE_BYTES = 64;
22
+ const MAX_COMMAND_FRAMES = 4096;
23
+ const MAX_RECENT_FRAME_BYTES = 16 * 1024;
24
+ const MAX_DIAGNOSTIC_BYTES = 64 * 1024;
25
+ export const RIZIN_DEBUGGER_PROVIDER_IDENTITY = {
26
+ id: "rizin.debugger",
27
+ name: "Rizin debugger",
28
+ version: null,
29
+ };
30
+ const RIZIN_LAUNCH_PROVENANCE_LIMITATION = "Launch provenance records the original and resolved startup paths; it does not establish the current target after unrestricted debugger commands.";
31
+ const createRizinCommandEvidence = ({ sessionId, command, result, inferiorTty, launchProvenance, limitations, }) => createEvidence(undefined, RIZIN_DEBUGGER_PROVIDER_IDENTITY, {
32
+ predicateType: "rea.debugger.command-observation",
33
+ operation: "rizin_debug_command",
34
+ parameters: {
35
+ session_id: sessionId,
36
+ command,
37
+ inferior_tty: inferiorTty,
38
+ launch_provenance: { ...launchProvenance },
39
+ },
40
+ result: { ...result },
41
+ rawResult: { ...result },
42
+ subjectUnavailableReason: "The current debugger target identity is not established by the Rizin session identifier.",
43
+ limitations: [
44
+ ...limitations,
45
+ ...(result.output_invalid_utf8
46
+ ? [
47
+ "Collected command frames contained invalid UTF-8 bytes; decoded text may contain replacement characters.",
48
+ ]
49
+ : []),
50
+ RIZIN_LAUNCH_PROVENANCE_LIMITATION,
51
+ ],
52
+ });
53
+ export class RizinCommandTimeoutError extends Error {
54
+ partialOutput;
55
+ outputInvalidUtf8;
56
+ constructor(partialOutput, outputInvalidUtf8 = false) {
57
+ super("Timed out waiting for Rizin's command-completion marker");
58
+ this.partialOutput = partialOutput;
59
+ this.outputInvalidUtf8 = outputInvalidUtf8;
60
+ }
61
+ }
62
+ export const isRizinCommandDeadlineExpired = (remainingMs) => remainingMs <= 0;
63
+ export const createRizinCommandTimeoutError = (partialFrames, outputInvalidUtf8 = false) => new RizinCommandTimeoutError(partialFrames.join("\n"), outputInvalidUtf8);
64
+ export const createRizinCommandTimeoutEvidence = ({ sessionId, command, result, inferiorTty, cleanupFailure, launchProvenance, }) => createRizinCommandEvidence({
65
+ sessionId,
66
+ command,
67
+ result,
68
+ inferiorTty,
69
+ launchProvenance,
70
+ limitations: [
71
+ "The command timed out before its completion marker; retained output is partial and completion is unknown.",
72
+ ...(result.output_invalid_utf8
73
+ ? [
74
+ "Collected command frame bytes did not form valid UTF-8; displayed output contains replacement characters.",
75
+ ]
76
+ : []),
77
+ ...(cleanupFailure === undefined
78
+ ? [
79
+ "The owned debugger session was stopped because output correlation could no longer be guaranteed.",
80
+ ]
81
+ : [
82
+ `The owned debugger session remains retained because cleanup could not be verified: ${cleanupFailure}`,
83
+ ]),
84
+ "The command is unrestricted and may access local files, the shell, network, or mutate the target.",
85
+ ],
86
+ });
87
+ class RizinProcessExitError extends Error {
88
+ partialOutput;
89
+ outputInvalidUtf8;
90
+ constructor(partialOutput, outputInvalidUtf8 = false) {
91
+ super("Rizin process exited before completing the active command");
92
+ this.partialOutput = partialOutput;
93
+ this.outputInvalidUtf8 = outputInvalidUtf8;
94
+ }
95
+ }
96
+ class RizinCommandCancelledError extends AnalysisCancelledError {
97
+ partialOutput;
98
+ outputInvalidUtf8;
99
+ constructor(partialOutput, outputInvalidUtf8, cause) {
100
+ super("rizin_debug_command", {
101
+ cause,
102
+ capturedOutput: {
103
+ stdout: partialOutput,
104
+ stderr: "",
105
+ truncated: false,
106
+ },
107
+ });
108
+ this.partialOutput = partialOutput;
109
+ this.outputInvalidUtf8 = outputInvalidUtf8;
110
+ }
111
+ }
112
+ class RizinFrameTimeoutError extends Error {
113
+ constructor() {
114
+ super("Timed out waiting for the next Rizin NUL frame");
115
+ }
116
+ }
117
+ /** Owns persistent Rizin debugger processes independently from BinarySession. */
118
+ export class RizinDebugSessionManager {
119
+ #sessions = new Map();
120
+ #activeStarts = 0;
121
+ #sessionReservations = 0;
122
+ #environment;
123
+ #closingAll = false;
124
+ #startDrainWaiters = [];
125
+ #command;
126
+ #frameTimeoutMs;
127
+ #startupTimeoutMs;
128
+ #maxCommandOutputBytes;
129
+ #platform;
130
+ #stopProcess;
131
+ #spawnProcess;
132
+ constructor(environment = process.env, options = {}) {
133
+ this.#environment = { ...environment };
134
+ this.#command = environment.REA_RIZIN_COMMAND ?? "rizin";
135
+ this.#frameTimeoutMs = options.frameTimeoutMs ?? FRAME_TIMEOUT_MS;
136
+ this.#startupTimeoutMs = options.startupTimeoutMs ?? STARTUP_TIMEOUT_MS;
137
+ this.#maxCommandOutputBytes =
138
+ options.maxCommandOutputBytes ?? MAX_COMMAND_OUTPUT_BYTES;
139
+ this.#platform = options.platform ?? process.platform;
140
+ this.#stopProcess = options.stopProcess ?? stopOwnedDebuggerProcess;
141
+ this.#spawnProcess = options.spawnProcess ?? spawnOwnedProviderProcess;
142
+ }
143
+ async start(input, signal) {
144
+ if (this.#closingAll)
145
+ return err(new AnalysisInputError("start_rizin_debug_session"));
146
+ const occupied = this.#sessions.size + this.#sessionReservations;
147
+ if (occupied >= MAX_SESSIONS)
148
+ return err(new AnalysisResourceConstraintError("start_rizin_debug_session", "memory", "Rizin session capacity reached.", { max_sessions: MAX_SESSIONS, active_or_reserved_sessions: occupied }));
149
+ this.#activeStarts += 1;
150
+ this.#sessionReservations += 1;
151
+ let reserved = true;
152
+ const releaseReservation = () => {
153
+ if (!reserved)
154
+ return;
155
+ reserved = false;
156
+ this.#sessionReservations -= 1;
157
+ };
158
+ try {
159
+ return await this.#start(input, signal, releaseReservation);
160
+ }
161
+ finally {
162
+ releaseReservation();
163
+ this.#activeStarts -= 1;
164
+ if (this.#activeStarts === 0)
165
+ for (const resolve of this.#startDrainWaiters.splice(0))
166
+ resolve();
167
+ }
168
+ }
169
+ async #start(input, signal, releaseReservation) {
170
+ if (signal?.aborted)
171
+ return err(new AnalysisCancelledError("start_rizin_debug_session"));
172
+ if (this.#platform !== "linux")
173
+ return err(new AnalysisCapabilityUnavailableError("rizin", "start_rizin_debug_session", "Persistent Rizin debugger sessions require Linux /proc descriptor readback to verify inferior detachment and output routing."));
174
+ if (input.inferior_tty === undefined || input.inferior_tty.length === 0)
175
+ return err(new AnalysisInputError("start_rizin_debug_session"));
176
+ let ttyPath;
177
+ let ttyDevice;
178
+ let ttyInode;
179
+ try {
180
+ ttyPath = await realpath(input.inferior_tty);
181
+ const ttyHandle = await open(ttyPath, fsConstants.O_RDWR | fsConstants.O_NOCTTY | fsConstants.O_NONBLOCK);
182
+ try {
183
+ const ttyStat = await ttyHandle.stat();
184
+ if (!isatty(ttyHandle.fd) ||
185
+ (ttyStat.mode & fsConstants.S_IFMT) !== fsConstants.S_IFCHR)
186
+ throw new Error("The selected inferior_tty is not a character TTY.");
187
+ ttyDevice = ttyStat.dev;
188
+ ttyInode = ttyStat.ino;
189
+ }
190
+ finally {
191
+ await ttyHandle.close();
192
+ }
193
+ }
194
+ catch (cause) {
195
+ return err(new AnalysisInputError("start_rizin_debug_session", { cause }));
196
+ }
197
+ // TTY identity validation is asynchronous. Cancellation may arrive while
198
+ // realpath/open/stat are pending, and must prevent the debugger spawn.
199
+ if (signal?.aborted)
200
+ return err(new AnalysisCancelledError("start_rizin_debug_session"));
201
+ const id = randomUUID();
202
+ const resolvedPath = resolve(input.path);
203
+ const launchProvenance = {
204
+ caller_selected_path: input.path,
205
+ resolved_path: resolvedPath,
206
+ };
207
+ const arguments_ = [
208
+ "-N",
209
+ "-0",
210
+ "-d",
211
+ "-R",
212
+ `stdout=${ttyPath}`,
213
+ "-R",
214
+ `stderr=${ttyPath}`,
215
+ "-e",
216
+ "dbg.exitkills=false",
217
+ ...(input.backend === undefined ? [] : ["-D", input.backend]),
218
+ resolvedPath,
219
+ ];
220
+ let launched;
221
+ try {
222
+ launched = await this.#spawnProcess({
223
+ command: this.#command,
224
+ arguments: arguments_,
225
+ hostEnvironment: this.#environment,
226
+ runId: id,
227
+ stdin: "pipe",
228
+ ...(signal === undefined ? {} : { signal }),
229
+ });
230
+ }
231
+ catch (cause) {
232
+ if (signal?.aborted)
233
+ return err(new AnalysisCancelledError("start_rizin_debug_session", { cause }));
234
+ return err(new AnalysisCapabilityUnavailableError("rizin", "start_rizin_debug_session", cause instanceof Error
235
+ ? cause.message
236
+ : "Unable to start Rizin debugger"));
237
+ }
238
+ const session = {
239
+ id,
240
+ launched,
241
+ launchProvenance,
242
+ backend: input.backend ?? null,
243
+ inferiorTty: ttyPath,
244
+ inferiorTtyDevice: ttyDevice,
245
+ inferiorTtyInode: ttyInode,
246
+ knownInferiorIdentities: new Map(),
247
+ inferiorInventoryComplete: false,
248
+ inferiorStateUnknown: () => !session.inferiorInventoryComplete,
249
+ verifyInferiorsEndedAfterExit: async () => {
250
+ if (!session.inferiorInventoryComplete)
251
+ return false;
252
+ const ended = await verifyOwnedInferiorsEnded(session.knownInferiorIdentities.values());
253
+ if (ended)
254
+ session.knownInferiorIdentities.clear();
255
+ return ended;
256
+ },
257
+ detachInferior: () => session.cleanupCommandTurnHeld
258
+ ? this.#detachInferiorUnlocked(session)
259
+ : this.#detachInferior(session),
260
+ cleanupCommandTurnHeld: false,
261
+ stopAttempt: undefined,
262
+ cleanupFailures: new Set(),
263
+ pendingCommandCount: 0,
264
+ invalidUtf8Observed: false,
265
+ closing: false,
266
+ supervisor: new ProviderProcessSupervisor({ process: launched.process, ownsProcessLifetime: false }, {
267
+ captureStdout: false,
268
+ maxDiagnosticBytes: MAX_DIAGNOSTIC_BYTES,
269
+ }),
270
+ frames: [],
271
+ frameWaiters: [],
272
+ history: [],
273
+ queuedFrameBytes: 0,
274
+ historyTruncated: false,
275
+ frameChunks: [],
276
+ bufferedFrameBytes: 0,
277
+ ready: false,
278
+ exited: false,
279
+ commandTail: Promise.resolve(),
280
+ protocolError: undefined,
281
+ commandCaptureActive: false,
282
+ discardingOversizedFrame: false,
283
+ };
284
+ this.#sessions.set(id, session);
285
+ releaseReservation();
286
+ launched.process.stdout?.on("data", (chunk) => this.#receive(session, Buffer.from(chunk)));
287
+ launched.process.stdin?.on("error", (cause) => this.#failProtocol(session, `Rizin stdin stream failed: ${cause.message}`));
288
+ launched.process.stdin?.once("close", () => {
289
+ if (!session.exited && session.protocolError === undefined)
290
+ this.#failProtocol(session, "Rizin stdin stream closed unexpectedly.");
291
+ });
292
+ launched.process.once("exit", () => {
293
+ session.exited = true;
294
+ for (const waiter of session.frameWaiters)
295
+ waiter.reject(new RizinProcessExitError(""));
296
+ session.frameWaiters.length = 0;
297
+ });
298
+ try {
299
+ await waitForFrame(session, this.#startupTimeoutMs, signal);
300
+ // Let process and stream lifecycle notifications queued alongside the
301
+ // initial frame run before publishing the session as ready.
302
+ await new Promise((resolve) => setImmediate(resolve));
303
+ if (signal?.aborted)
304
+ throw new AnalysisCancelledError("start_rizin_debug_session");
305
+ if (session.exited)
306
+ throw new RizinProcessExitError("Rizin exited during startup.");
307
+ if (session.protocolError !== undefined)
308
+ throw new Error(session.protocolError);
309
+ session.ready = true;
310
+ return ok({ session_id: id, backend: input.backend ?? null });
311
+ }
312
+ catch (cause) {
313
+ const stopped = await this.#stopDebuggerOnly(session);
314
+ const capturedOutput = this.#startupCapturedOutput(session);
315
+ if (stopped.status !== "incomplete")
316
+ this.#sessions.delete(id);
317
+ if (stopped.status === "incomplete")
318
+ return err(this.#retainCleanupFailure(session, "start_rizin_debug_session", stopped.reason, { cause, capturedOutput }));
319
+ if (signal?.aborted || cause instanceof AnalysisCancelledError)
320
+ return err(new AnalysisCancelledError("start_rizin_debug_session", {
321
+ cause,
322
+ capturedOutput,
323
+ }));
324
+ if (session.protocolError !== undefined)
325
+ return err(new AnalysisCapabilityUnavailableError("rizin", "start_rizin_debug_session", session.protocolError, { cause, capturedOutput }));
326
+ if (cause instanceof RizinProcessExitError) {
327
+ return err(new AnalysisCapabilityUnavailableError("rizin", "start_rizin_debug_session", cause.message, {
328
+ cause,
329
+ capturedOutput,
330
+ }));
331
+ }
332
+ return err(new AnalysisTimeoutError("start_rizin_debug_session", this.#startupTimeoutMs, { cause, capturedOutput }));
333
+ }
334
+ }
335
+ async execute(sessionId, command, signal) {
336
+ const session = this.#sessions.get(sessionId);
337
+ if (session === undefined ||
338
+ !session.ready ||
339
+ session.exited ||
340
+ session.protocolError !== undefined ||
341
+ session.closing ||
342
+ this.#closingAll)
343
+ return err(new AnalysisInputError("rizin_debug_command"));
344
+ if (signal?.aborted)
345
+ return err(new AnalysisCancelledError("rizin_debug_command"));
346
+ if (session.pendingCommandCount >= MAX_PENDING_COMMANDS)
347
+ return err(new AnalysisResourceConstraintError("rizin_debug_command", "transport", "Rizin command queue capacity reached.", {
348
+ max_pending_commands: MAX_PENDING_COMMANDS,
349
+ active_or_queued_commands: session.pendingCommandCount,
350
+ }));
351
+ session.pendingCommandCount += 1;
352
+ let release;
353
+ let acquired = false;
354
+ let commandSent = false;
355
+ const previous = session.commandTail;
356
+ session.commandTail = new Promise((resolve) => {
357
+ release = resolve;
358
+ });
359
+ try {
360
+ await waitForTurn(previous, signal);
361
+ acquired = true;
362
+ if (signal?.aborted)
363
+ return err(new AnalysisCancelledError("rizin_debug_command"));
364
+ if (!session.ready ||
365
+ session.exited ||
366
+ session.closing ||
367
+ this.#closingAll ||
368
+ session.protocolError !== undefined)
369
+ return err(new AnalysisInputError("rizin_debug_command"));
370
+ if (session.frames.length > 0) {
371
+ const message = "Unsolicited Rizin frames arrived before a command; command output can no longer be safely correlated.";
372
+ this.#failProtocol(session, message);
373
+ return err(await this.#stopAfterProtocolFailure(session, undefined, true));
374
+ }
375
+ const marker = `__REA_COMMAND_COMPLETE_${randomUUID().replaceAll("-", "")}__`;
376
+ // Arbitrary debugger commands can create or replace inferiors. Discard
377
+ // the prior inventory before any command bytes reach the provider.
378
+ session.inferiorInventoryComplete = false;
379
+ session.knownInferiorIdentities.clear();
380
+ commandSent = true;
381
+ const stdin = session.launched.process.stdin;
382
+ if (stdin === null ||
383
+ stdin === undefined ||
384
+ stdin.destroyed ||
385
+ !stdin.writable) {
386
+ this.#failProtocol(session, "Rizin stdin stream is closed.");
387
+ }
388
+ else {
389
+ try {
390
+ stdin.write(`${command}\n!echo ${marker}\n`, "utf8", (cause) => {
391
+ if (cause)
392
+ this.#failProtocol(session, `Rizin stdin write failed: ${cause.message}`);
393
+ });
394
+ }
395
+ catch (cause) {
396
+ this.#failProtocol(session, `Rizin stdin write failed: ${cause instanceof Error ? cause.message : "unknown error"}`);
397
+ }
398
+ }
399
+ if (session.protocolError !== undefined)
400
+ throw new Error(session.protocolError);
401
+ session.commandCaptureActive = true;
402
+ const captured = await waitForCommandFrames(session, marker, this.#frameTimeoutMs, signal, this.#maxCommandOutputBytes);
403
+ if (signal?.aborted)
404
+ throw new AnalysisCancelledError("rizin_debug_command");
405
+ let cleanupFailure;
406
+ if (captured.outputTruncated) {
407
+ // Stryker disable next-line BooleanLiteral -- `waitForCommandFrames` sets `protocolError` before reporting truncation; both detach wrappers therefore fail closed before a queued command can be awaited, so the held-tail flag cannot change this public path.
408
+ const stopped = await this.#stopDebuggerOnly(session, true);
409
+ if (stopped.status === "incomplete")
410
+ cleanupFailure = stopped.reason;
411
+ }
412
+ const result = {
413
+ command,
414
+ output: captured.output,
415
+ output_scope: "command_and_interleaved_session_output",
416
+ output_truncated: captured.outputTruncated,
417
+ completion_status: captured.outputTruncated
418
+ ? "unknown"
419
+ : "complete",
420
+ backend: session.backend,
421
+ ...(captured.outputInvalidUtf8
422
+ ? { output_invalid_utf8: true }
423
+ : {}),
424
+ };
425
+ const evidence = createRizinCommandEvidence({
426
+ sessionId,
427
+ command,
428
+ result,
429
+ inferiorTty: session.inferiorTty,
430
+ launchProvenance: session.launchProvenance,
431
+ limitations: [
432
+ "Rizin commands and debugger effects depend on the loaded IO plugin and target.",
433
+ "Output contains all NUL frames through an explicit command-completion marker; backend output interleaved before that marker cannot be distinguished from command output.",
434
+ ...(captured.outputTruncated
435
+ ? [
436
+ `The Rizin command exceeded the output or frame limit. Retained output is partial and command completion is unknown.${cleanupFailure === undefined ? " The owned debugger session was stopped." : ` The owned debugger session remains retained because cleanup could not be verified: ${cleanupFailure}`}`,
437
+ ]
438
+ : []),
439
+ "The command is unrestricted and may access local files, the shell, network, or mutate the target.",
440
+ ],
441
+ });
442
+ if (cleanupFailure !== undefined)
443
+ return err(this.#retainCleanupFailure(session, "rizin_debug_command", cleanupFailure, {
444
+ partialObservation: evidence,
445
+ }));
446
+ return ok({ result, evidence });
447
+ }
448
+ catch (cause) {
449
+ if (signal?.aborted || cause instanceof AnalysisCancelledError) {
450
+ if (!commandSent)
451
+ return err(new AnalysisCancelledError("rizin_debug_command", { cause }));
452
+ const partialOutput = cause instanceof RizinCommandCancelledError
453
+ ? cause.partialOutput
454
+ : undefined;
455
+ const commandInvalidUtf8 = cause instanceof RizinCommandCancelledError &&
456
+ cause.outputInvalidUtf8;
457
+ const partialEvidence = partialOutput === undefined
458
+ ? undefined
459
+ : createRizinCommandEvidence({
460
+ sessionId,
461
+ command,
462
+ result: {
463
+ command,
464
+ output: partialOutput,
465
+ output_scope: "command_and_interleaved_session_output",
466
+ output_truncated: false,
467
+ completion_status: "unknown",
468
+ backend: session.backend,
469
+ ...(commandInvalidUtf8
470
+ ? { output_invalid_utf8: true }
471
+ : {}),
472
+ },
473
+ inferiorTty: session.inferiorTty,
474
+ launchProvenance: session.launchProvenance,
475
+ limitations: [
476
+ "The Rizin command was cancelled; collected frame output is partial and command completion is unknown.",
477
+ "The owned debugger session was stopped because command output can no longer be correlated safely.",
478
+ "The command is unrestricted and may access local files, the shell, network, or mutate the target.",
479
+ ],
480
+ });
481
+ session.protocolError =
482
+ "A Rizin command was cancelled; the owned session was stopped because command output can no longer be correlated safely.";
483
+ const stopped = await this.#stopDebuggerOnly(session, true);
484
+ if (stopped.status === "incomplete")
485
+ return err(this.#retainCleanupFailure(session, "rizin_debug_command", stopped.reason, {
486
+ cause: new AnalysisCancelledError("rizin_debug_command", {
487
+ cause,
488
+ ...(cause instanceof RizinCommandCancelledError
489
+ ? { capturedOutput: cause.capturedOutput }
490
+ : {}),
491
+ }),
492
+ ...(partialEvidence === undefined
493
+ ? {}
494
+ : { partialObservation: partialEvidence }),
495
+ }));
496
+ return err(new AnalysisCancelledError("rizin_debug_command", {
497
+ cause,
498
+ ...(cause instanceof RizinCommandCancelledError
499
+ ? { capturedOutput: cause.capturedOutput }
500
+ : {}),
501
+ ...(partialEvidence === undefined
502
+ ? {}
503
+ : { partialObservation: partialEvidence }),
504
+ }));
505
+ }
506
+ if (session.protocolError !== undefined)
507
+ return err(await this.#stopAfterProtocolFailure(session, cause, true));
508
+ if (cause instanceof RizinCommandTimeoutError) {
509
+ session.protocolError =
510
+ "Rizin command timed out before its completion marker; output correlation is no longer safe.";
511
+ const stopped = await this.#stopDebuggerOnly(session, true);
512
+ const result = {
513
+ command,
514
+ output: cause.partialOutput,
515
+ output_scope: "command_and_interleaved_session_output",
516
+ output_truncated: true,
517
+ completion_status: "unknown",
518
+ backend: session.backend,
519
+ ...(cause.outputInvalidUtf8
520
+ ? { output_invalid_utf8: true }
521
+ : {}),
522
+ };
523
+ const evidence = createRizinCommandTimeoutEvidence({
524
+ sessionId,
525
+ command,
526
+ result,
527
+ inferiorTty: session.inferiorTty,
528
+ cleanupFailure: stopped.status === "incomplete" ? stopped.reason : undefined,
529
+ launchProvenance: session.launchProvenance,
530
+ });
531
+ if (stopped.status === "incomplete")
532
+ return err(this.#retainCleanupFailure(session, "rizin_debug_command", stopped.reason, {
533
+ cause,
534
+ partialObservation: evidence,
535
+ }));
536
+ return ok({ result, evidence });
537
+ }
538
+ if (cause instanceof RizinProcessExitError) {
539
+ const result = {
540
+ command,
541
+ output: cause.partialOutput,
542
+ output_scope: "command_and_interleaved_session_output",
543
+ output_truncated: false,
544
+ completion_status: "unknown",
545
+ backend: session.backend,
546
+ ...(cause.outputInvalidUtf8
547
+ ? { output_invalid_utf8: true }
548
+ : {}),
549
+ };
550
+ const evidence = createRizinCommandEvidence({
551
+ sessionId,
552
+ command,
553
+ result,
554
+ inferiorTty: session.inferiorTty,
555
+ launchProvenance: session.launchProvenance,
556
+ limitations: [
557
+ "Rizin exited before the command-completion marker; retained frame output is partial and command completion is unknown.",
558
+ "The command is unrestricted and may access local files, the shell, network, or mutate the target.",
559
+ ],
560
+ });
561
+ const stopped = await this.#stopDebuggerOnly(session, true);
562
+ if (stopped.status === "incomplete")
563
+ return err(this.#retainCleanupFailure(session, "rizin_debug_command", stopped.reason, { cause, partialObservation: evidence }));
564
+ return ok({ result, evidence });
565
+ }
566
+ session.protocolError =
567
+ "Rizin did not return the current command-completion marker; the session was stopped to prevent late output from being attributed to a later command.";
568
+ const stopped = await this.#stopDebuggerOnly(session, true);
569
+ if (stopped.status === "incomplete")
570
+ return err(this.#retainCleanupFailure(session, "rizin_debug_command", stopped.reason, { cause }));
571
+ return err(new AnalysisTimeoutError("rizin_debug_command", this.#frameTimeoutMs, {
572
+ cause,
573
+ }));
574
+ }
575
+ finally {
576
+ if (acquired) {
577
+ session.commandCaptureActive = false;
578
+ session.pendingCommandCount -= 1;
579
+ release?.();
580
+ }
581
+ else
582
+ void previous.then(() => {
583
+ session.pendingCommandCount -= 1;
584
+ release?.();
585
+ });
586
+ }
587
+ }
588
+ status(sessionId) {
589
+ const session = this.#sessions.get(sessionId);
590
+ return session === undefined
591
+ ? undefined
592
+ : {
593
+ session_id: session.id,
594
+ state: session.exited ||
595
+ session.protocolError !== undefined ||
596
+ session.closing ||
597
+ !session.ready
598
+ ? "closed"
599
+ : "ready",
600
+ inferior_tty: session.inferiorTty,
601
+ recent_output: [...session.history],
602
+ recent_output_truncated: session.historyTruncated,
603
+ diagnostics_truncated: session.supervisor.snapshot().diagnosticTruncated === true,
604
+ output_invalid_utf8: session.invalidUtf8Observed,
605
+ };
606
+ }
607
+ async close(sessionId) {
608
+ if (this.#closingAll)
609
+ return err(new AnalysisInputError("close_rizin_debug_session"));
610
+ const session = this.#sessions.get(sessionId);
611
+ if (session === undefined)
612
+ return err(new AnalysisInputError("close_rizin_debug_session"));
613
+ session.closing = true;
614
+ const stopped = await this.#stopDebuggerOnly(session);
615
+ if (stopped.status === "incomplete")
616
+ return err(this.#retainCleanupFailure(session, "close_rizin_debug_session", stopped.reason));
617
+ this.#sessions.delete(sessionId);
618
+ return ok({ target_state: "unknown" });
619
+ }
620
+ async retryCleanupFailures() {
621
+ for (const session of this.#sessions.values()) {
622
+ if (session.cleanupFailures.size === 0)
623
+ continue;
624
+ const stopped = await this.#stopDebuggerOnly(session);
625
+ if (stopped.status === "incomplete")
626
+ return err([...session.cleanupFailures].at(-1) ??
627
+ this.#retainCleanupFailure(session, "close_rizin_debug_session", stopped.reason));
628
+ this.#sessions.delete(session.id);
629
+ }
630
+ return ok(null);
631
+ }
632
+ async closeAll() {
633
+ this.#closingAll = true;
634
+ if (this.#activeStarts > 0)
635
+ await new Promise((resolve) => this.#startDrainWaiters.push(resolve));
636
+ for (const session of this.#sessions.values())
637
+ session.closing = true;
638
+ return closeOwnedDebuggerSessions(this.#sessions, (session) => this.#stopDebuggerOnly(session), "Rizin");
639
+ }
640
+ #receive(session, chunk) {
641
+ let offset = 0;
642
+ while (offset < chunk.length) {
643
+ const boundary = chunk.indexOf(0, offset);
644
+ const end = boundary < 0 ? chunk.length : boundary;
645
+ const nextOffset = boundary + 1;
646
+ if (boundary >= 0 && nextOffset <= offset) {
647
+ this.#failProtocol(session, "Rizin frame parser failed to advance past a NUL delimiter.");
648
+ return;
649
+ }
650
+ const piece = chunk.subarray(offset, end);
651
+ if (session.discardingOversizedFrame) {
652
+ if (boundary < 0)
653
+ return;
654
+ session.discardingOversizedFrame = false;
655
+ this.#deliverBufferedFrame(session, true);
656
+ offset = nextOffset;
657
+ continue;
658
+ }
659
+ if (session.bufferedFrameBytes + piece.length > MAX_FRAME_BYTES) {
660
+ const message = "Rizin emitted an NUL frame exceeding the 16 MiB protocol limit.";
661
+ if (!session.commandCaptureActive) {
662
+ this.#failProtocol(session, message);
663
+ return;
664
+ }
665
+ session.protocolError = message;
666
+ session.historyTruncated = true;
667
+ const remainingBytes = MAX_FRAME_BYTES - session.bufferedFrameBytes;
668
+ if (remainingBytes > 0) {
669
+ session.frameChunks.push(Buffer.from(piece.subarray(0, remainingBytes)));
670
+ session.bufferedFrameBytes += remainingBytes;
671
+ }
672
+ if (boundary < 0) {
673
+ session.discardingOversizedFrame = true;
674
+ return;
675
+ }
676
+ this.#deliverBufferedFrame(session, true);
677
+ offset = nextOffset;
678
+ continue;
679
+ }
680
+ if (piece.length > 0) {
681
+ session.frameChunks.push(Buffer.from(piece));
682
+ session.bufferedFrameBytes += piece.length;
683
+ }
684
+ if (boundary < 0)
685
+ return;
686
+ this.#deliverBufferedFrame(session, false);
687
+ offset = nextOffset;
688
+ }
689
+ }
690
+ #deliverBufferedFrame(session, truncated) {
691
+ const frameBytes = Buffer.concat(session.frameChunks, session.bufferedFrameBytes);
692
+ session.frameChunks = [];
693
+ session.bufferedFrameBytes = 0;
694
+ const invalidUtf8 = !isUtf8(frameBytes);
695
+ session.invalidUtf8Observed ||= invalidUtf8;
696
+ this.#deliverFrame(session, { text: frameBytes.toString("utf8"), truncated, invalidUtf8 }, frameBytes.length);
697
+ }
698
+ #startupCapturedOutput(session) {
699
+ const output = session.supervisor.snapshot();
700
+ const partialFrame = session.bufferedFrameBytes === 0
701
+ ? ""
702
+ : Buffer.concat(session.frameChunks, session.bufferedFrameBytes).toString("utf8");
703
+ const protocolOutput = [...session.history, partialFrame]
704
+ .filter((frame) => frame.length > 0)
705
+ .join("\n");
706
+ const protocolBytes = Buffer.from(protocolOutput, "utf8");
707
+ let stdoutBytes = Math.min(protocolBytes.length, MAX_DIAGNOSTIC_BYTES);
708
+ while (stdoutBytes > 0 &&
709
+ stdoutBytes < protocolBytes.length &&
710
+ (protocolBytes[stdoutBytes] & 0xc0) === 0x80)
711
+ stdoutBytes -= 1;
712
+ return {
713
+ stdout: protocolBytes.subarray(0, stdoutBytes).toString("utf8"),
714
+ stderr: output.stderr.text,
715
+ truncated: session.historyTruncated ||
716
+ protocolBytes.length > stdoutBytes ||
717
+ output.diagnosticTruncated === true ||
718
+ output.stdout.observedBytes > output.stdout.bytes ||
719
+ output.stderr.observedBytes > output.stderr.bytes,
720
+ };
721
+ }
722
+ #deliverFrame(session, frame, frameBytes) {
723
+ const historyFrame = frameBytes > MAX_RECENT_FRAME_BYTES || frame.truncated
724
+ ? `${frame.text.slice(0, MAX_RECENT_FRAME_BYTES)}[recent frame truncated]`
725
+ : frame.text;
726
+ if (frameBytes > MAX_RECENT_FRAME_BYTES || frame.truncated)
727
+ session.historyTruncated = true;
728
+ session.history.push(historyFrame);
729
+ if (session.history.length > 64) {
730
+ session.history.splice(0, session.history.length - 64);
731
+ session.historyTruncated = true;
732
+ }
733
+ const waiter = session.frameWaiters.shift();
734
+ if (waiter !== undefined) {
735
+ waiter.resolve(frame);
736
+ return;
737
+ }
738
+ const queueChargeBytes = Math.max(frameBytes, MIN_QUEUED_FRAME_CHARGE_BYTES);
739
+ if (session.frames.length >= MAX_QUEUED_FRAMES ||
740
+ session.queuedFrameBytes + queueChargeBytes > MAX_QUEUED_FRAME_BYTES) {
741
+ this.#failProtocol(session, "Rizin produced unsolicited frames exceeding the bounded queue limit.");
742
+ return;
743
+ }
744
+ session.frames.push({ frame, queueChargeBytes });
745
+ session.queuedFrameBytes += queueChargeBytes;
746
+ }
747
+ #failProtocol(session, message) {
748
+ session.protocolError = message;
749
+ session.frameChunks = [];
750
+ session.bufferedFrameBytes = 0;
751
+ for (const waiter of session.frameWaiters)
752
+ waiter.reject(new Error(message));
753
+ session.frameWaiters.length = 0;
754
+ }
755
+ #stopDebuggerOnly(session, commandTurnHeld = false) {
756
+ session.closing = true;
757
+ if (session.stopAttempt !== undefined)
758
+ return session.stopAttempt;
759
+ session.cleanupCommandTurnHeld = commandTurnHeld;
760
+ session.stopAttempt = Promise.resolve()
761
+ .then(() => this.#stopProcess(session, "Rizin debugger", {
762
+ platform: this.#platform,
763
+ }))
764
+ .then((stopped) => {
765
+ if (stopped.status !== "incomplete") {
766
+ for (const failure of session.cleanupFailures)
767
+ failure.resolveCleanup();
768
+ session.cleanupFailures.clear();
769
+ }
770
+ return stopped;
771
+ })
772
+ .finally(() => {
773
+ session.stopAttempt = undefined;
774
+ });
775
+ return session.stopAttempt;
776
+ }
777
+ async #detachInferior(session) {
778
+ if (session.exited || session.protocolError !== undefined)
779
+ throw new Error("Rizin protocol state is ambiguous; inferior detach is unverified.");
780
+ const previous = session.commandTail;
781
+ let release;
782
+ session.commandTail = new Promise((resolve) => (release = resolve));
783
+ await previous;
784
+ try {
785
+ return await this.#detachInferiorUnlocked(session);
786
+ }
787
+ finally {
788
+ release();
789
+ }
790
+ }
791
+ async #detachInferiorUnlocked(session) {
792
+ if (session.exited || session.protocolError !== undefined)
793
+ throw new Error("Rizin protocol state is ambiguous; inferior detach is unverified.");
794
+ {
795
+ session.inferiorInventoryComplete = false;
796
+ session.knownInferiorIdentities.clear();
797
+ const initial = parseRizinPtraceRows(await this.#runInternalCommand(session, "olj"));
798
+ const inferior = initial;
799
+ if (inferior.length === 0) {
800
+ session.knownInferiorIdentities.clear();
801
+ session.inferiorInventoryComplete = true;
802
+ return { status: "no-inferior" };
803
+ }
804
+ session.knownInferiorIdentities.clear();
805
+ for (const [, pid] of inferior) {
806
+ if (session.knownInferiorIdentities.has(pid))
807
+ continue;
808
+ const startTime = await readProcStartTime(pid);
809
+ session.knownInferiorIdentities.set(pid, {
810
+ pid,
811
+ startTime,
812
+ });
813
+ }
814
+ session.inferiorInventoryComplete = true;
815
+ if (inferior.length !== 1)
816
+ throw new Error("Rizin reported multiple or ambiguous ptrace inferiors.");
817
+ const [fd, pid] = inferior[0];
818
+ const processStartTime = await readProcStartTime(pid);
819
+ await this.#verifyInferiorOutputConfiguration(session, pid);
820
+ await this.#runInternalCommand(session, `o- ${fd}`);
821
+ const after = parseRizinPtraceRows(await this.#runInternalCommand(session, "olj"));
822
+ if (after.some(([activeFd, activePid]) => activeFd === fd || activePid === pid) ||
823
+ after.length !== 0)
824
+ throw new Error("Rizin did not confirm that the selected inferior FD was detached.");
825
+ assertRizinProcessStartTimeStable(processStartTime, await readProcStartTime(pid));
826
+ await this.#verifyInferiorOutputConfiguration(session, pid);
827
+ return { status: "detached", outputSink: "durable" };
828
+ }
829
+ }
830
+ async #verifyInferiorOutputConfiguration(session, pid) {
831
+ const exitKills = (await this.#runInternalCommand(session, "e dbg.exitkills")).trim();
832
+ if (exitKills !== "false")
833
+ throw new Error("Rizin dbg.exitkills readback did not confirm false.");
834
+ for (const descriptor of ["1", "2"]) {
835
+ const descriptorPath = `/proc/${pid}/fd/${descriptor}`;
836
+ const destination = await readlink(descriptorPath);
837
+ const destinationStat = await stat(descriptorPath);
838
+ if (destinationStat.dev !== session.inferiorTtyDevice ||
839
+ destinationStat.ino !== session.inferiorTtyInode ||
840
+ (destinationStat.mode & fsConstants.S_IFMT) !== fsConstants.S_IFCHR ||
841
+ (await realpath(destination)) !== session.inferiorTty)
842
+ throw new Error(`Inferior descriptor ${descriptor} is not routed to the selected TTY.`);
843
+ }
844
+ }
845
+ async #runInternalCommand(session, command) {
846
+ const marker = `__REA_CLEANUP_COMPLETE_${randomUUID().replaceAll("-", "")}__`;
847
+ const stdin = session.launched.process.stdin;
848
+ if (stdin === null ||
849
+ stdin === undefined ||
850
+ stdin.destroyed ||
851
+ !stdin.writable)
852
+ throw new Error("Rizin stdin is unavailable during cleanup.");
853
+ stdin.write(`${command}\n!echo ${marker}\n`);
854
+ const captured = await waitForCommandFrames(session, marker, CLEANUP_COMMAND_TIMEOUT_MS, undefined, this.#maxCommandOutputBytes);
855
+ if (captured.outputTruncated)
856
+ throw new Error("Rizin cleanup readback was truncated.");
857
+ return captured.output;
858
+ }
859
+ #retainCleanupFailure(session, operation, reason, options = {}) {
860
+ const failure = new AnalysisCapabilityUnavailableError("rizin", operation, `The owned Rizin process could not be confirmed stopped: ${reason}`, { ...options, cleanup: { reason, resources: [session.id] } });
861
+ session.cleanupFailures.add(failure);
862
+ return failure;
863
+ }
864
+ async #stopAfterProtocolFailure(session, cause, commandTurnHeld = false) {
865
+ const stopped = await this.#stopDebuggerOnly(session, commandTurnHeld);
866
+ return stopped.status === "incomplete"
867
+ ? this.#retainCleanupFailure(session, "rizin_debug_command", stopped.reason, { cause })
868
+ : new AnalysisCapabilityUnavailableError("rizin", "rizin_debug_command", session.protocolError, { cause });
869
+ }
870
+ }
871
+ const parseRizinPtraceRows = (output) => {
872
+ let parsed;
873
+ try {
874
+ parsed = JSON.parse(output);
875
+ }
876
+ catch (cause) {
877
+ throw new Error("Rizin returned malformed JSON for `olj`.", { cause });
878
+ }
879
+ if (!Array.isArray(parsed))
880
+ throw new Error("Rizin `olj` response is not an array.");
881
+ const rows = [];
882
+ for (const row of parsed) {
883
+ if (typeof row !== "object" ||
884
+ row === null ||
885
+ typeof row.fd !== "number" ||
886
+ !Number.isSafeInteger(row.fd) ||
887
+ row.fd < 0 ||
888
+ typeof row.raised !== "boolean" ||
889
+ typeof row.uri !== "string")
890
+ throw new Error("Rizin `olj` response contains a malformed descriptor row.");
891
+ const uri = row.uri;
892
+ const match = /^ptrace:\/\/(\d+)$/u.exec(uri);
893
+ if (match !== null) {
894
+ if (row.raised !== true)
895
+ throw new Error("Rizin `olj` ptrace descriptor is not active.");
896
+ rows.push([String(row.fd), match[1]]);
897
+ }
898
+ else if (uri.startsWith("ptrace://"))
899
+ throw new Error("Rizin `olj` returned a malformed ptrace URI.");
900
+ }
901
+ return rows;
902
+ };
903
+ /** @internal Pure parser kept separately testable from live `/proc` access. */
904
+ export const parseRizinProcStartTime = (statContents) => {
905
+ const commandEnd = statContents.lastIndexOf(")");
906
+ if (commandEnd < 0)
907
+ throw new Error("Inferior process identity is malformed.");
908
+ const fieldsAfterCommand = statContents
909
+ .slice(commandEnd + 1)
910
+ .trim()
911
+ .split(/\s+/u);
912
+ const startTime = fieldsAfterCommand[19];
913
+ if (startTime === undefined || !/^\d+$/u.test(startTime))
914
+ throw new Error("Inferior process start time could not be verified.");
915
+ return startTime;
916
+ };
917
+ /** @internal Reject a PID that changed identity during inferior detach. */
918
+ export const assertRizinProcessStartTimeStable = (before, after) => {
919
+ if (after !== before)
920
+ throw new Error("The inferior PID disappeared or was reused during detach verification.");
921
+ };
922
+ const readProcStartTime = async (pid) => parseRizinProcStartTime(await readFile(`/proc/${pid}/stat`, "utf8"));
923
+ const waitForCommandFrames = async (session, marker, timeoutMs, signal, maxCommandOutputBytes = MAX_COMMAND_OUTPUT_BYTES) => {
924
+ const deadline = Date.now() + timeoutMs;
925
+ const output = [];
926
+ let outputInvalidUtf8 = false;
927
+ const commandTimeoutError = () => createRizinCommandTimeoutError(output, outputInvalidUtf8);
928
+ let outputBytes = 0;
929
+ let frameCount = 0;
930
+ for (;;) {
931
+ const remaining = deadline - Date.now();
932
+ if (isRizinCommandDeadlineExpired(remaining))
933
+ throw commandTimeoutError();
934
+ let received;
935
+ try {
936
+ received = await waitForFrame(session, remaining, signal, commandTimeoutError);
937
+ }
938
+ catch (cause) {
939
+ if (cause instanceof AnalysisCancelledError)
940
+ throw new RizinCommandCancelledError(output.join("\n"), outputInvalidUtf8, cause);
941
+ if (cause instanceof RizinProcessExitError)
942
+ throw new RizinProcessExitError(output.join("\n"), outputInvalidUtf8);
943
+ throw cause;
944
+ }
945
+ outputInvalidUtf8 ||= received.invalidUtf8;
946
+ frameCount += 1;
947
+ if (frameCount > MAX_COMMAND_FRAMES) {
948
+ const message = "Rizin emitted more than 4096 frames for one command; the session was stopped because output correlation is ambiguous.";
949
+ session.protocolError = message;
950
+ return {
951
+ output: output.join("\n"),
952
+ outputTruncated: true,
953
+ outputInvalidUtf8,
954
+ };
955
+ }
956
+ if (received.truncated) {
957
+ const separatorBytes = output.length > 0 ? 1 : 0;
958
+ output.push(truncateUtf8(received.text, maxCommandOutputBytes - outputBytes - separatorBytes));
959
+ return {
960
+ output: output.join("\n"),
961
+ outputTruncated: true,
962
+ outputInvalidUtf8,
963
+ };
964
+ }
965
+ const frame = received.text;
966
+ const markerIndex = frame.indexOf(marker);
967
+ if (markerIndex >= 0) {
968
+ const beforeMarker = frame.slice(0, markerIndex).trimEnd();
969
+ if (beforeMarker.length > 0) {
970
+ const beforeMarkerBytes = Buffer.byteLength(beforeMarker, "utf8");
971
+ const separatorBytes = output.length > 0 ? 1 : 0;
972
+ if (outputBytes + separatorBytes + beforeMarkerBytes >
973
+ maxCommandOutputBytes) {
974
+ const message = "Rizin command output exceeded the 16 MiB command limit.";
975
+ session.protocolError = message;
976
+ const retained = truncateUtf8(beforeMarker, maxCommandOutputBytes - outputBytes - separatorBytes);
977
+ if (retained.length > 0)
978
+ output.push(retained);
979
+ return {
980
+ output: output.join("\n"),
981
+ outputTruncated: true,
982
+ outputInvalidUtf8,
983
+ };
984
+ }
985
+ outputBytes += separatorBytes + beforeMarkerBytes;
986
+ output.push(beforeMarker);
987
+ }
988
+ return {
989
+ output: output.join("\n"),
990
+ outputTruncated: false,
991
+ outputInvalidUtf8,
992
+ };
993
+ }
994
+ const frameBytes = Buffer.byteLength(frame, "utf8");
995
+ const separatorBytes = output.length > 0 ? 1 : 0;
996
+ if (outputBytes + separatorBytes + frameBytes > maxCommandOutputBytes) {
997
+ const message = "Rizin command output exceeded the 16 MiB command limit.";
998
+ session.protocolError = message;
999
+ output.push(truncateUtf8(frame, maxCommandOutputBytes - outputBytes - separatorBytes));
1000
+ return {
1001
+ output: output.join("\n"),
1002
+ outputTruncated: true,
1003
+ outputInvalidUtf8,
1004
+ };
1005
+ }
1006
+ outputBytes += separatorBytes + frameBytes;
1007
+ output.push(frame);
1008
+ }
1009
+ };
1010
+ const truncateUtf8 = (value, maximumBytes) => {
1011
+ if (maximumBytes <= 0)
1012
+ return "";
1013
+ const bytes = Buffer.from(value, "utf8").subarray(0, maximumBytes);
1014
+ return bytes.toString("utf8").replace(/\uFFFD$/u, "");
1015
+ };
1016
+ const waitForFrame = (session, timeoutMs, signal, timeoutError) => {
1017
+ if (signal?.aborted)
1018
+ return Promise.reject(new AnalysisCancelledError("rizin_debug_command"));
1019
+ const queued = session.frames.shift();
1020
+ if (queued !== undefined) {
1021
+ session.queuedFrameBytes -= queued.queueChargeBytes;
1022
+ return Promise.resolve(queued.frame);
1023
+ }
1024
+ if (session.exited)
1025
+ return Promise.reject(new RizinProcessExitError(""));
1026
+ return new Promise((resolve, reject) => {
1027
+ // Settlement removes all three trigger paths before resolving or rejecting.
1028
+ const cleanup = () => {
1029
+ clearTimeout(timer);
1030
+ signal?.removeEventListener("abort", onAbort);
1031
+ const index = session.frameWaiters.indexOf(waiter);
1032
+ if (index >= 0)
1033
+ session.frameWaiters.splice(index, 1);
1034
+ };
1035
+ const onAbort = () => {
1036
+ cleanup();
1037
+ reject(new AnalysisCancelledError("rizin_debug_command"));
1038
+ };
1039
+ const timer = setTimeout(() => {
1040
+ cleanup();
1041
+ reject(timeoutError?.() ?? new RizinFrameTimeoutError());
1042
+ }, timeoutMs);
1043
+ const waiter = {
1044
+ resolve: (frame) => {
1045
+ cleanup();
1046
+ resolve(frame);
1047
+ },
1048
+ reject: (cause) => {
1049
+ cleanup();
1050
+ reject(cause);
1051
+ },
1052
+ };
1053
+ session.frameWaiters.push(waiter);
1054
+ signal?.addEventListener("abort", onAbort, { once: true });
1055
+ if (signal?.aborted)
1056
+ onAbort();
1057
+ });
1058
+ };
1059
+ const waitForTurn = (previous, signal) => {
1060
+ if (signal === undefined)
1061
+ return previous;
1062
+ if (signal.aborted)
1063
+ return Promise.reject(new AnalysisCancelledError("rizin_debug_command"));
1064
+ return new Promise((resolve, reject) => {
1065
+ const onAbort = () => reject(new AnalysisCancelledError("rizin_debug_command"));
1066
+ signal.addEventListener("abort", onAbort, { once: true });
1067
+ previous.then(() => {
1068
+ signal.removeEventListener("abort", onAbort);
1069
+ resolve();
1070
+ });
1071
+ });
1072
+ };