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
@@ -1,27 +1,28 @@
1
- import { execFile } from "node:child_process";
2
1
  import { createHash } from "node:crypto";
3
2
  import { constants as fsConstants } from "node:fs";
4
- import { access, lstat, mkdir, rm, stat, writeFile } from "node:fs/promises";
5
- import { basename, join, resolve } from "node:path";
3
+ import { access, copyFile, lstat, mkdtemp, mkdir, rmdir, rm, stat, writeFile, } from "node:fs/promises";
4
+ import { basename, dirname, extname, join, resolve } from "node:path";
5
+ import { providerConfigurationRefusal } from "../domain/providerConfigurationRefusal.js";
6
6
  import { createAnalysisExecution, } from "../application/AnalysisProvider.js";
7
- import { AnalysisArtifactChangedError, AnalysisCapabilityUnavailableError, AnalysisCancelledError, AnalysisInputError, AnalysisOutputError, AnalysisProtocolError, AnalysisResourceConstraintError, AnalysisTimeoutError, AnalysisUnsupportedTargetError, } from "../domain/analysisErrorCore.js";
7
+ import { adbResultSchemas } from "../domain/adb/adbDeviceAnalysis.js";
8
+ import { AnalysisArtifactChangedError, AnalysisCancelledError, AnalysisInputError, AnalysisOutputError, AnalysisProtocolError, AnalysisResourceConstraintError, AnalysisTimeoutError, AnalysisUnsupportedTargetError, } from "../domain/analysisErrorCore.js";
8
9
  import { AnalysisError } from "../domain/analysisErrorBase.js";
9
10
  import { analysisErrorWithCleanupFailure } from "../domain/analysisErrorCleanup.js";
10
11
  import { err, ok } from "../domain/result.js";
11
12
  import { hashStableFile } from "../filesystem/StableFileHash.js";
12
13
  import { ProviderCleanupError } from "../domain/providerCleanupError.js";
13
- import { execFileOutput, execFileOutputFailure, } from "../process/ExecFileOutput.js";
14
+ import { execFileBytes, execFileOutputFailure, } from "../process/ExecFileOutput.js";
14
15
  import { AdbConfigurationFailure, adbConfigurationAvailability, inspectAdbClient, resolveAdbBinary, } from "./AdbConfiguration.js";
15
- import { parseAdbDevicesOutput, parseGetpropOutput, parsePackageListOutput, parsePmPathOutput, } from "./AdbDeviceOutput.js";
16
- import { parseAmStartOutput, parseBugreportCopiedPath, parseDumpsysPackageOutput, parseFeatureListOutput, parseLsOutput, parsePackageChangeOutput, parseProcessListOutput, parsePngDimensions, parseResolveActivityOutput, parseServiceListOutput, parseSettingsGetOutput, parseWindowFocusOutput, parseWmDensityOutput, parseWmSizeOutput, } from "./AdbShellOutput.js";
16
+ import { displayDevicePath, parseAdbDevicesOutput, parseGetpropOutput, parsePackageListOutput, parsePmPathOutput, } from "./AdbDeviceOutput.js";
17
+ import { adbHostFileName } from "./AdbHostFileName.js";
18
+ import { ADB_DIRECTORY_BATCH_SCRIPT, parseAdbDirectoryListing, } from "./AdbDirectoryListing.js";
19
+ import { parseAmStartOutput, parseBugreportCopiedPath, parseDumpsysPackageOutput, parseFeatureListOutput, packageChangeFailureReason, parsePackageChangeOutput, parseProcessListOutput, parsePngDimensions, parseResolveActivityOutput, parseServiceListOutput, parseSettingsGetOutput, parseWindowFocusOutput, parseWmDensityOutput, parseWmSizeOutput, } from "./AdbShellOutput.js";
17
20
  /** Stable identity for the ADB device-acquisition provider. */
18
21
  export const ADB_PROVIDER_IDENTITY = {
19
22
  id: "adb",
20
23
  name: "Android Debug Bridge",
21
24
  version: null,
22
25
  };
23
- const VERSION_TIMEOUT_MS = 10_000;
24
- const VERSION_MAX_OUTPUT_BYTES = 64 * 1024;
25
26
  const DEVICES_TIMEOUT_MS = 20_000;
26
27
  const DEVICES_MAX_OUTPUT_BYTES = 1024 * 1024;
27
28
  const SHELL_TIMEOUT_MS = 30_000;
@@ -47,7 +48,6 @@ const BUGREPORT_TIMEOUT_MS = 600_000;
47
48
  const BUGREPORT_MAX_OUTPUT_BYTES = 1024 * 1024;
48
49
  const STDERR_EXCERPT_BYTES = 512;
49
50
  const UNPARSED_LINES_REPORTED = 10;
50
- const STOP_GRACE_MS = 5_000;
51
51
  const hashAdbFile = async (path, operation, signal) => {
52
52
  try {
53
53
  return await hashStableFile(path, signal);
@@ -69,11 +69,11 @@ const adbArguments = (serial, arguments_) => {
69
69
  return serial === undefined ? operands : ["-s", serial, ...operands];
70
70
  };
71
71
  /** Run one bounded adb invocation and keep its exact failure shape. */
72
- const runAdb = async (operation, targetPath, binary, arguments_, limits, signal) => {
72
+ const runAdbCapture = async (operation, targetPath, binary, arguments_, limits, signal) => {
73
73
  if (signal?.aborted === true)
74
74
  return err(new AnalysisCancelledError(operation));
75
75
  try {
76
- return ok(await execFileOutput(binary, arguments_, {
76
+ return ok(await execFileBytes(binary, arguments_, {
77
77
  timeout: limits.timeoutMs,
78
78
  maxBuffer: limits.maxOutputBytes,
79
79
  stopSignal: "SIGTERM",
@@ -108,41 +108,37 @@ const runAdb = async (operation, targetPath, binary, arguments_, limits, signal)
108
108
  : excerpt, { cause }));
109
109
  }
110
110
  };
111
- /** Capture one adb invocation's raw binary stdout (screencap PNG). */
112
- const runAdbBinary = (operation, binary, arguments_, limits, signal) => new Promise((settle) => {
113
- if (signal?.aborted === true)
114
- return settle(err(new AnalysisCancelledError(operation)));
115
- let stopped;
116
- let deadline;
117
- let grace;
118
- const child = execFile(binary, [...arguments_], {
119
- encoding: "buffer",
120
- maxBuffer: limits.maxOutputBytes,
121
- killSignal: "SIGTERM",
122
- timeout: 0,
123
- }, (error, stdout) => {
124
- signal?.removeEventListener("abort", onAbort);
125
- clearTimeout(deadline);
126
- clearTimeout(grace);
127
- if (stopped === "abort")
128
- return settle(err(new AnalysisCancelledError(operation)));
129
- if (stopped === "timeout")
130
- return settle(err(new AnalysisTimeoutError(operation, limits.timeoutMs)));
131
- if (error !== null)
132
- return settle(err(new AnalysisProtocolError(`adb failed for ${operation}: ${error.message}`, { cause: error })));
133
- settle(ok(stdout));
111
+ /** Decode textual adb protocols after the shared byte capture and error boundary. */
112
+ const runAdb = async (...arguments_) => {
113
+ const captured = await runAdbCapture(...arguments_);
114
+ if (!captured.ok)
115
+ return captured;
116
+ return ok({
117
+ stdout: captured.value.stdout.toString("utf8"),
118
+ stderr: captured.value.stderr.toString("utf8"),
119
+ // Byte count of the captured output before UTF-8 decoding, so malformed
120
+ // sequences replaced by U+FFFD still report their true captured size.
121
+ stdoutBytes: captured.value.stdout.byteLength,
134
122
  });
135
- const stop = (reason) => {
136
- if (stopped !== undefined)
137
- return;
138
- stopped = reason;
139
- child.kill("SIGTERM");
140
- grace = setTimeout(() => child.kill("SIGKILL"), STOP_GRACE_MS);
141
- };
142
- const onAbort = () => stop("abort");
143
- signal?.addEventListener("abort", onAbort, { once: true });
144
- deadline = setTimeout(() => stop("timeout"), limits.timeoutMs);
145
- });
123
+ };
124
+ /**
125
+ * adb exits nonzero when the device refuses a package change, printing the
126
+ * `Failure [...]` verdict to stderr (install) or stdout (uninstall). Read the
127
+ * refusal from that failed run so it is not reported as unreadable output.
128
+ */
129
+ const packageChangeRefusal = (operation, serial, error) => {
130
+ if (!(error instanceof AnalysisProtocolError))
131
+ return undefined;
132
+ const failure = execFileOutputFailure(error.cause);
133
+ if (failure === undefined)
134
+ return undefined;
135
+ const reason = packageChangeFailureReason(`${failure.stdout}\n${failure.stderr}`);
136
+ return reason === null
137
+ ? undefined
138
+ : err(new AnalysisUnsupportedTargetError(operation, serial, reason, {
139
+ cause: error,
140
+ }));
141
+ };
146
142
  const clientIdentityResult = (selection, identity) => ({
147
143
  binary_path: selection.binary,
148
144
  path_source: selection.pathSource,
@@ -175,9 +171,27 @@ const refuseExistingTarget = async (operation, path) => {
175
171
  return new AnalysisOutputError(operation, `The output file already exists: ${path}`);
176
172
  return undefined;
177
173
  };
178
- const removeOwnedPackageDirectory = async (path, identity) => {
174
+ /** Publish an ADB-produced archive without replacing an existing caller file. */
175
+ const publishBugreport = async (source, directory) => {
176
+ const fileName = basename(source);
177
+ const extension = extname(fileName);
178
+ const stem = extension === "" ? fileName : fileName.slice(0, -extension.length);
179
+ for (let suffix = 0;; suffix += 1) {
180
+ const destination = join(directory, suffix === 0 ? fileName : `${stem} (${String(suffix)})${extension}`);
181
+ try {
182
+ await copyFile(source, destination, fsConstants.COPYFILE_EXCL);
183
+ return destination;
184
+ }
185
+ catch (cause) {
186
+ if (cause instanceof Error && "code" in cause && cause.code === "EEXIST")
187
+ continue;
188
+ throw cause;
189
+ }
190
+ }
191
+ };
192
+ const removeOwnedOutputDirectory = async (path, identity) => {
179
193
  if (identity === undefined)
180
- throw new Error(`Cannot verify the created package directory identity; refusing to remove ${path}`);
194
+ throw new Error(`Cannot verify the created output directory identity; refusing to remove ${path}`);
181
195
  let current;
182
196
  try {
183
197
  current = await lstat(path);
@@ -192,9 +206,82 @@ const removeOwnedPackageDirectory = async (path, identity) => {
192
206
  current.dev !== identity.dev ||
193
207
  current.ino !== identity.ino ||
194
208
  current.mode !== identity.mode)
195
- throw new Error(`The created package directory was replaced or changed; refusing to remove ${path}`);
209
+ throw new Error(`The created output directory was replaced or changed; refusing to remove ${path}`);
196
210
  await rm(path, { recursive: true, force: true });
197
211
  };
212
+ const reservePackageDestinations = async (operation, packageName, packageDirectory, entries, capturedOutput) => {
213
+ const reservations = [];
214
+ for (const entry of entries) {
215
+ const path = join(packageDirectory, entry.file_name);
216
+ try {
217
+ await mkdir(path);
218
+ const created = await lstat(path);
219
+ if (!created.isDirectory() || created.isSymbolicLink())
220
+ throw new Error(`Could not reserve local filename ${entry.file_name}`);
221
+ reservations.push({
222
+ path,
223
+ file_name: entry.file_name,
224
+ device_path: entry.device_path,
225
+ identity: {
226
+ dev: created.dev,
227
+ ino: created.ino,
228
+ mode: created.mode,
229
+ },
230
+ });
231
+ }
232
+ catch (cause) {
233
+ const errorCode = cause instanceof Error &&
234
+ "code" in cause &&
235
+ typeof cause.code === "string"
236
+ ? cause.code
237
+ : null;
238
+ return new AnalysisOutputError(operation, "local_destination_unavailable", {
239
+ cause,
240
+ capturedOutput,
241
+ userMessage: `pm path for ${packageName} reported ${displayDevicePath(entry.device_path)}, whose file name ${displayDevicePath(entry.file_name)} cannot be written to a unique local destination (${errorCode ?? "unknown error"}). No APK was pulled.`,
242
+ remediationAction: "Review details.diagnostics and details.captured_output for the refused destination. Correct the output filesystem conflict before retrying; REA does not rename APKs.",
243
+ diagnostics: {
244
+ package_name: packageName,
245
+ device_path: entry.device_path,
246
+ file_name: entry.file_name,
247
+ error_code: errorCode,
248
+ },
249
+ });
250
+ }
251
+ }
252
+ for (const reservation of reservations) {
253
+ try {
254
+ const current = await lstat(reservation.path);
255
+ if (!current.isDirectory() ||
256
+ current.isSymbolicLink() ||
257
+ current.dev !== reservation.identity.dev ||
258
+ current.ino !== reservation.identity.ino ||
259
+ current.mode !== reservation.identity.mode)
260
+ throw new Error(`The local filename reservation changed before release: ${reservation.path}`);
261
+ await rmdir(reservation.path);
262
+ }
263
+ catch (cause) {
264
+ const errorCode = cause instanceof Error &&
265
+ "code" in cause &&
266
+ typeof cause.code === "string"
267
+ ? cause.code
268
+ : null;
269
+ return new AnalysisOutputError(operation, "local_destination_unavailable", {
270
+ cause,
271
+ capturedOutput,
272
+ userMessage: `Could not release the local filename reservation for ${displayDevicePath(reservation.device_path)} (${errorCode ?? "unknown error"}); no APK was pulled.`,
273
+ remediationAction: "Review details.diagnostics and details.captured_output for the refused destination. Correct the output filesystem conflict before retrying; REA does not rename APKs.",
274
+ diagnostics: {
275
+ package_name: packageName,
276
+ device_path: reservation.device_path,
277
+ file_name: reservation.file_name,
278
+ error_code: errorCode,
279
+ },
280
+ });
281
+ }
282
+ }
283
+ return undefined;
284
+ };
198
285
  /**
199
286
  * ADB device inspection and acquisition over a caller-selected adb binary.
200
287
  *
@@ -206,11 +293,11 @@ const removeOwnedPackageDirectory = async (path, identity) => {
206
293
  */
207
294
  export class AdbProvider {
208
295
  environment;
209
- #pendingPackageDirectoryCleanup = new Set();
296
+ #pendingOutputDirectoryCleanup = new Set();
210
297
  #activeOperations = new Set();
211
298
  #closing = false;
212
299
  #closePromise;
213
- #packageCleanupPromise;
300
+ #outputCleanupPromise;
214
301
  constructor(options = {}) {
215
302
  this.environment = options.environment ?? process.env;
216
303
  }
@@ -219,8 +306,8 @@ export class AdbProvider {
219
306
  }
220
307
  /** Probe the selected adb binary; never contacts devices or the server. */
221
308
  async inspectAvailability(signal) {
222
- const selection = this.selection();
223
309
  try {
310
+ const selection = this.selection();
224
311
  await inspectAdbClient(selection, signal);
225
312
  return {
226
313
  status: "available",
@@ -238,14 +325,14 @@ export class AdbProvider {
238
325
  throw cause;
239
326
  }
240
327
  }
241
- /** Retry removal of package directories retained after failed rollback. */
328
+ /** Retry removal of owned output directories retained after failed cleanup. */
242
329
  close() {
243
330
  this.#closing = true;
244
331
  if (this.#closePromise !== undefined)
245
332
  return this.#closePromise;
246
333
  const closing = (async () => {
247
334
  await Promise.all(this.#activeOperations);
248
- await this.#retryPackageDirectoryCleanup();
335
+ await this.#retryOutputDirectoryCleanup();
249
336
  })().finally(() => {
250
337
  if (this.#closePromise === closing)
251
338
  this.#closePromise = undefined;
@@ -253,42 +340,43 @@ export class AdbProvider {
253
340
  this.#closePromise = closing;
254
341
  return this.#closePromise;
255
342
  }
256
- #retryPackageDirectoryCleanup() {
257
- if (this.#packageCleanupPromise !== undefined)
258
- return this.#packageCleanupPromise;
259
- const cleanup = this.#performPackageDirectoryCleanup().finally(() => {
260
- if (this.#packageCleanupPromise === cleanup)
261
- this.#packageCleanupPromise = undefined;
343
+ #retryOutputDirectoryCleanup() {
344
+ if (this.#outputCleanupPromise !== undefined)
345
+ return this.#outputCleanupPromise;
346
+ const cleanup = this.#performOutputDirectoryCleanup().finally(() => {
347
+ if (this.#outputCleanupPromise === cleanup)
348
+ this.#outputCleanupPromise = undefined;
262
349
  });
263
- this.#packageCleanupPromise = cleanup;
350
+ this.#outputCleanupPromise = cleanup;
264
351
  return cleanup;
265
352
  }
266
- async #performPackageDirectoryCleanup() {
353
+ async #performOutputDirectoryCleanup() {
267
354
  const failures = [];
268
- for (const owner of this.#pendingPackageDirectoryCleanup) {
355
+ for (const owner of this.#pendingOutputDirectoryCleanup) {
269
356
  try {
270
357
  await owner.remove();
271
- this.#pendingPackageDirectoryCleanup.delete(owner);
358
+ this.#pendingOutputDirectoryCleanup.delete(owner);
272
359
  }
273
360
  catch (cause) {
274
361
  const cleanup = new ProviderCleanupError(ADB_PROVIDER_IDENTITY.id, [owner.path], {
275
362
  reason: cause instanceof Error ? cause.message : String(cause),
276
- }, { operation: "pull_adb_package", cause });
277
- failures.push(analysisErrorWithCleanupFailure(owner.primary, cleanup, "pull_adb_package"));
363
+ }, { operation: owner.operation, cause });
364
+ failures.push(analysisErrorWithCleanupFailure(owner.primary, cleanup, owner.operation));
278
365
  }
279
366
  }
280
367
  if (failures.length === 1)
281
368
  throw failures[0];
282
369
  if (failures.length > 1)
283
- throw new ProviderCleanupError(ADB_PROVIDER_IDENTITY.id, [...this.#pendingPackageDirectoryCleanup].map(({ path }) => path), {
284
- reason: "Failed package output directories remain after cleanup retry",
370
+ throw new ProviderCleanupError(ADB_PROVIDER_IDENTITY.id, [...this.#pendingOutputDirectoryCleanup].map(({ path }) => path), {
371
+ reason: "Failed ADB output directories remain after cleanup retry",
372
+ operations: [...this.#pendingOutputDirectoryCleanup].map(({ operation }) => operation),
285
373
  failures: failures.map(({ message, cleanupResources }) => ({
286
374
  message,
287
375
  resources: [...cleanupResources],
288
376
  })),
289
377
  }, {
290
- operation: "pull_adb_package",
291
- cause: new AggregateError(failures, "Multiple ADB package rollback cleanups failed"),
378
+ operation: "close_binary",
379
+ cause: new AggregateError(failures, "Multiple ADB output directory cleanups failed"),
292
380
  });
293
381
  }
294
382
  async execute(request, options) {
@@ -300,14 +388,14 @@ export class AdbProvider {
300
388
  });
301
389
  this.#activeOperations.add(active);
302
390
  try {
303
- if (this.#pendingPackageDirectoryCleanup.size > 0) {
391
+ if (this.#pendingOutputDirectoryCleanup.size > 0) {
304
392
  try {
305
- await this.#retryPackageDirectoryCleanup();
393
+ await this.#retryOutputDirectoryCleanup();
306
394
  }
307
395
  catch (cause) {
308
396
  return err(cause instanceof AnalysisError
309
397
  ? cause
310
- : new ProviderCleanupError(ADB_PROVIDER_IDENTITY.id, [...this.#pendingPackageDirectoryCleanup].map(({ path }) => path), {
398
+ : new ProviderCleanupError(ADB_PROVIDER_IDENTITY.id, [...this.#pendingOutputDirectoryCleanup].map(({ path }) => path), {
311
399
  reason: cause instanceof Error ? cause.message : String(cause),
312
400
  }, { operation: request.operation, cause }));
313
401
  }
@@ -323,18 +411,17 @@ export class AdbProvider {
323
411
  const signal = options?.signal;
324
412
  if (signal?.aborted === true)
325
413
  return err(new AnalysisCancelledError(request.operation));
326
- const selection = this.selection();
414
+ let selection;
327
415
  let identity;
328
416
  try {
417
+ selection = this.selection();
329
418
  identity = await inspectAdbClient(selection, signal);
330
419
  }
331
420
  catch (cause) {
332
421
  if (cause instanceof AnalysisCancelledError)
333
422
  return err(cause);
334
423
  if (cause instanceof AdbConfigurationFailure)
335
- return err(new AnalysisCapabilityUnavailableError(ADB_PROVIDER_IDENTITY.id, request.operation, typeof cause.diagnostics.remediation === "string"
336
- ? `${cause.message} ${cause.diagnostics.remediation}`
337
- : cause.message, { cause }));
424
+ return err(providerConfigurationRefusal(ADB_PROVIDER_IDENTITY.id, request.operation, cause));
338
425
  return err(new AnalysisProtocolError(`adb version probe failed for ${request.operation}`, { cause }));
339
426
  }
340
427
  const client = clientIdentityResult(selection, identity);
@@ -354,7 +441,7 @@ export class AdbProvider {
354
441
  }, signal);
355
442
  if (!ran.ok)
356
443
  return ran;
357
- const { devices, unparsedLines, daemonStarted } = parseAdbDevicesOutput(ran.value.stdout);
444
+ const { devices, unparsedLines, daemonStarted } = parseAdbDevicesOutput(ran.value.stdout, ran.value.stderr);
358
445
  if (unparsedLines.length > 0)
359
446
  return err(new AnalysisProtocolError(`adb devices reported an unrecognized line: ${unparsedLines[0]}`));
360
447
  return ok(createAnalysisExecution({ client, devices, may_have_started_adb_server: daemonStarted }, provider, {
@@ -447,7 +534,7 @@ export class AdbProvider {
447
534
  buffer: request.input.buffer,
448
535
  pid: request.input.pid ?? null,
449
536
  lines: bounded,
450
- total_bytes: ran.value.stdout.length,
537
+ total_bytes: ran.value.stdoutBytes,
451
538
  coverage: bounded.length !== lines.length ||
452
539
  bounded.length === request.input.count
453
540
  ? "partial"
@@ -517,13 +604,21 @@ export class AdbProvider {
517
604
  }, provider, { limitations: unparsedOverflowLimitation(unparsedLines) }));
518
605
  }
519
606
  case "list_adb_directory": {
520
- const ran = await shell(["ls", "-la", request.input.device_path], {
607
+ const ran = await runAdbCapture(operation, request.input.serial, selection.binary, adbArguments(request.input.serial, [
608
+ "shell",
609
+ "sh",
610
+ "-c",
611
+ 'cd "$1" || exit\nexec find . -mindepth 1 -maxdepth 1 -exec sh -c "$2" rea-list-directory {} +',
612
+ "rea-list-directory",
613
+ request.input.device_path,
614
+ ADB_DIRECTORY_BATCH_SCRIPT,
615
+ ]), {
521
616
  timeoutMs: LISTING_TIMEOUT_MS,
522
617
  maxOutputBytes: LISTING_MAX_OUTPUT_BYTES,
523
- });
618
+ }, signal);
524
619
  if (!ran.ok)
525
620
  return ran;
526
- const { entries, unparsedLines } = parseLsOutput(ran.value.stdout);
621
+ const { entries, unparsedLines } = parseAdbDirectoryListing(ran.value.stdout);
527
622
  return ok(createAnalysisExecution({
528
623
  client,
529
624
  serial: request.input.serial,
@@ -532,7 +627,7 @@ export class AdbProvider {
532
627
  ...reported(unparsedLines, "complete"),
533
628
  }, provider, {
534
629
  limitations: [
535
- "Entry kinds derive from the permission string's type character",
630
+ "Entry kinds derive from stat permission mode; directory contents and link targets may change during capture",
536
631
  ...unparsedOverflowLimitation(unparsedLines),
537
632
  ],
538
633
  }));
@@ -598,13 +693,25 @@ export class AdbProvider {
598
693
  }));
599
694
  }
600
695
  case "inspect_adb_window": {
601
- const ran = await shell(["dumpsys", "window", "windows"], {
696
+ let section = "windows";
697
+ const ran = await shell(["dumpsys", "window", section], {
602
698
  timeoutMs: SHELL_TIMEOUT_MS,
603
699
  maxOutputBytes: DUMPSYS_WINDOW_MAX_OUTPUT_BYTES,
604
700
  });
605
701
  if (!ran.ok)
606
702
  return ran;
607
- const { focusedWindow, focusedApp } = parseWindowFocusOutput(ran.value.stdout);
703
+ let { focusedWindow, focusedApp } = parseWindowFocusOutput(ran.value.stdout);
704
+ if (focusedWindow === null && focusedApp === null) {
705
+ section = "displays";
706
+ const fallback = await shell(["dumpsys", "window", section], {
707
+ timeoutMs: SHELL_TIMEOUT_MS,
708
+ maxOutputBytes: DUMPSYS_WINDOW_MAX_OUTPUT_BYTES,
709
+ });
710
+ if (!fallback.ok)
711
+ return fallback;
712
+ ({ focusedWindow, focusedApp } = parseWindowFocusOutput(fallback.value.stdout));
713
+ }
714
+ const declared = focusedWindow !== null || focusedApp !== null;
608
715
  return ok(createAnalysisExecution({
609
716
  client,
610
717
  serial: request.input.serial,
@@ -617,6 +724,9 @@ export class AdbProvider {
617
724
  }, provider, {
618
725
  limitations: [
619
726
  "Focus values are the window manager's declarations at read time; no interaction occurred",
727
+ declared
728
+ ? `Focus declarations were read from \`dumpsys window ${section}\``
729
+ : "Neither `dumpsys window windows` nor `dumpsys window displays` declared mCurrentFocus or mFocusedApp; focus is unknown, not absent",
620
730
  ],
621
731
  }));
622
732
  }
@@ -687,10 +797,48 @@ export class AdbProvider {
687
797
  if (!paths.ok)
688
798
  return paths;
689
799
  const parsed = parsePmPathOutput(paths.value.stdout);
800
+ const capturedOutput = {
801
+ stdout: paths.value.stdout,
802
+ stderr: paths.value.stderr,
803
+ truncated: false,
804
+ };
805
+ if (parsed.rejectedPaths.length > 0) {
806
+ const first = parsed.rejectedPaths[0];
807
+ const otherCount = parsed.rejectedPaths.length - 1;
808
+ return err(new AnalysisOutputError(operation, "unsafe_device_path", {
809
+ capturedOutput,
810
+ userMessage: `pm path for ${packageName} reported an APK path that cannot be written as a file on this host: ${displayDevicePath(first.device_path)} (${first.reason})${otherCount > 0 ? ` and ${String(otherCount)} other path(s)` : ""}. No APK was pulled.`,
811
+ remediationAction: "Review details.diagnostics for the refused device paths and details.captured_output for the retained pm path output. REA does not rename device-reported APK paths; correct the device path policy before retrying.",
812
+ diagnostics: {
813
+ package_name: packageName,
814
+ rejected_paths: parsed.rejectedPaths.map(({ device_path, reason }) => ({
815
+ device_path,
816
+ reason,
817
+ })),
818
+ },
819
+ }));
820
+ }
690
821
  if (parsed.paths.length === 0 && parsed.unparsedLines.length === 0)
691
822
  return err(new AnalysisUnsupportedTargetError(operation, serial, `Package Manager reported no APK paths for ${packageName}; it may not be installed for user 0`));
692
823
  if (parsed.unparsedLines.length > 0)
693
- return err(new AnalysisProtocolError(`pm path reported an unrecognized line: ${parsed.unparsedLines[0]}`));
824
+ return err(new AnalysisProtocolError(`pm path reported an unrecognized line: ${parsed.unparsedLines[0]}`, { capturedOutput }));
825
+ const destinationNames = new Set();
826
+ for (const entry of parsed.paths) {
827
+ if (destinationNames.has(entry.file_name))
828
+ return err(new AnalysisOutputError(operation, "duplicate_local_destination", {
829
+ capturedOutput,
830
+ userMessage: `pm path for ${packageName} reported multiple APK paths with the same local file name ${displayDevicePath(entry.file_name)}; no APK was pulled.`,
831
+ remediationAction: "Review details.diagnostics and details.captured_output for the conflicting device paths. REA does not rename device-reported paths; correct Package Manager's path response before retrying.",
832
+ diagnostics: {
833
+ package_name: packageName,
834
+ file_name: entry.file_name,
835
+ device_paths: parsed.paths
836
+ .filter((candidate) => candidate.file_name === entry.file_name)
837
+ .map((candidate) => candidate.device_path),
838
+ },
839
+ }));
840
+ destinationNames.add(entry.file_name);
841
+ }
694
842
  const directory = await prepareOutputDirectory(operation, input.output_directory);
695
843
  if (!directory.ok)
696
844
  return directory;
@@ -716,17 +864,39 @@ export class AdbProvider {
716
864
  if (!packageDirectoryCreated)
717
865
  return err(primary);
718
866
  const owner = {
867
+ operation,
719
868
  path: packageDirectory,
720
869
  identity: packageDirectoryIdentity,
721
870
  primary,
722
- remove: () => removeOwnedPackageDirectory(packageDirectory, packageDirectoryIdentity),
871
+ remove: () => removeOwnedOutputDirectory(packageDirectory, packageDirectoryIdentity),
723
872
  };
724
- this.#pendingPackageDirectoryCleanup.add(owner);
873
+ this.#pendingOutputDirectoryCleanup.add(owner);
725
874
  const cleanup = new ProviderCleanupError(ADB_PROVIDER_IDENTITY.id, [packageDirectory], {
726
875
  reason: "Could not establish an owned package directory identity",
727
876
  }, { operation, cause });
728
877
  return err(analysisErrorWithCleanupFailure(primary, cleanup, operation));
729
878
  }
879
+ const failOwnedPackage = async (primary) => {
880
+ const owner = {
881
+ operation,
882
+ path: packageDirectory,
883
+ identity: packageDirectoryIdentity,
884
+ primary,
885
+ remove: () => removeOwnedOutputDirectory(packageDirectory, packageDirectoryIdentity),
886
+ };
887
+ try {
888
+ await owner.remove();
889
+ }
890
+ catch (cause) {
891
+ this.#pendingOutputDirectoryCleanup.add(owner);
892
+ const cleanup = new ProviderCleanupError(ADB_PROVIDER_IDENTITY.id, [packageDirectory], { reason: cause instanceof Error ? cause.message : String(cause) }, { operation, cause });
893
+ return err(analysisErrorWithCleanupFailure(primary, cleanup, operation));
894
+ }
895
+ return err(primary);
896
+ };
897
+ const destinationError = await reservePackageDestinations(operation, packageName, packageDirectory, parsed.paths, capturedOutput);
898
+ if (destinationError !== undefined)
899
+ return failOwnedPackage(destinationError);
730
900
  const artifacts = [];
731
901
  const failures = [];
732
902
  const cancelledPackagePull = (error, localPath, devicePath, stage) => {
@@ -754,17 +924,7 @@ export class AdbProvider {
754
924
  });
755
925
  return err(error);
756
926
  };
757
- const seenFileNames = new Set();
758
927
  for (const entry of parsed.paths) {
759
- if (seenFileNames.has(entry.file_name)) {
760
- failures.push({
761
- device_path: entry.device_path,
762
- stage: "pull",
763
- message: `Duplicate file name ${entry.file_name} in the APK set; refusing to overwrite`,
764
- });
765
- continue;
766
- }
767
- seenFileNames.add(entry.file_name);
768
928
  const localPath = join(packageDirectory, entry.file_name);
769
929
  const pulled = await runAdb(operation, serial, selection.binary, adbArguments(serial, ["pull", entry.device_path, localPath]), { timeoutMs: PULL_TIMEOUT_MS, maxOutputBytes: PULL_MAX_OUTPUT_BYTES }, signal);
770
930
  if (!pulled.ok) {
@@ -801,23 +961,7 @@ export class AdbProvider {
801
961
  }
802
962
  if (artifacts.length === 0 && failures.length > 0) {
803
963
  const primary = new AnalysisProtocolError(`Every APK pull failed for ${packageName} on ${serial}: ${failures[0].message}`);
804
- const owner = {
805
- path: packageDirectory,
806
- identity: packageDirectoryIdentity,
807
- primary,
808
- remove: () => removeOwnedPackageDirectory(packageDirectory, packageDirectoryIdentity),
809
- };
810
- try {
811
- await owner.remove();
812
- }
813
- catch (cause) {
814
- this.#pendingPackageDirectoryCleanup.add(owner);
815
- const cleanup = new ProviderCleanupError(ADB_PROVIDER_IDENTITY.id, [packageDirectory], {
816
- reason: cause instanceof Error ? cause.message : String(cause),
817
- }, { operation: operation, cause });
818
- return err(analysisErrorWithCleanupFailure(primary, cleanup, operation));
819
- }
820
- return err(primary);
964
+ return failOwnedPackage(primary);
821
965
  }
822
966
  return ok(createAnalysisExecution({
823
967
  client,
@@ -835,11 +979,19 @@ export class AdbProvider {
835
979
  }));
836
980
  }
837
981
  async pullFile(operation, selection, client, provider, input, signal) {
982
+ const derived = adbHostFileName(input.device_path);
983
+ if (!derived.ok)
984
+ return err(new AnalysisInputError(operation, undefined, [
985
+ {
986
+ path: ["device_path"],
987
+ reason: "invalid_value",
988
+ message: `The device path ${JSON.stringify(input.device_path)} does not name a file that can be written on this host (${derived.reason}); REA never renames a device-reported file.`,
989
+ },
990
+ ]));
838
991
  const directory = await prepareOutputDirectory(operation, input.output_directory);
839
992
  if (!directory.ok)
840
993
  return directory;
841
- const fileName = basename(input.device_path) || "pulled";
842
- const localPath = join(directory.value, fileName);
994
+ const localPath = join(directory.value, derived.fileName);
843
995
  const existing = await refuseExistingTarget(operation, localPath);
844
996
  if (existing !== undefined)
845
997
  return err(existing);
@@ -896,19 +1048,13 @@ export class AdbProvider {
896
1048
  throw cause;
897
1049
  }
898
1050
  const existsProbe = await runAdb(operation, input.device_path, selection.binary, adbArguments(input.serial, ["shell", "test", "-e", input.device_path]), { timeoutMs: SETTINGS_TIMEOUT_MS, maxOutputBytes: 1024 }, signal);
899
- let deviceExists;
900
- if (existsProbe.ok)
901
- deviceExists = true;
902
- else if (existsProbe.error instanceof AnalysisProtocolError)
903
- deviceExists = false;
904
- else if (existsProbe.error instanceof AnalysisTimeoutError)
905
- return existsProbe;
906
- else if (existsProbe.error instanceof AnalysisCancelledError)
907
- return existsProbe;
908
- else if (existsProbe.error instanceof AnalysisResourceConstraintError)
1051
+ // `test -e` exits nonzero with no adb diagnosis when the path is absent.
1052
+ // Any other probe failure leaves existence unknown, so it is reported as
1053
+ // is rather than read as an existing path or followed by a push.
1054
+ if (!existsProbe.ok &&
1055
+ !(existsProbe.error instanceof AnalysisProtocolError))
909
1056
  return existsProbe;
910
- else
911
- deviceExists = true; // authorization/refusal states surface on push instead
1057
+ const deviceExists = existsProbe.ok;
912
1058
  if (deviceExists && !input.overwrite)
913
1059
  return err(new AnalysisOutputError(operation, `The device path already exists and overwrite was not requested: ${input.device_path}`));
914
1060
  const pushed = await runAdb(operation, input.device_path, selection.binary, adbArguments(input.serial, ["push", localPath, input.device_path]), { timeoutMs: PULL_TIMEOUT_MS, maxOutputBytes: PULL_MAX_OUTPUT_BYTES }, signal);
@@ -930,9 +1076,7 @@ export class AdbProvider {
930
1076
  overwritten: deviceExists,
931
1077
  device_digest_source: "device_sha256sum",
932
1078
  }, provider, {
933
- limitations: [
934
- "Push writes the caller's file to the device; this is the only device-mutating ADB tool",
935
- ],
1079
+ limitations: ["Push writes the caller's file to the device"],
936
1080
  }));
937
1081
  }
938
1082
  return ok(createAnalysisExecution({
@@ -948,7 +1092,7 @@ export class AdbProvider {
948
1092
  }, provider, {
949
1093
  limitations: [
950
1094
  "The device did not answer sha256sum, so the transfer is not device-side verified",
951
- "Push writes the caller's file to the device; this is the only device-mutating ADB tool",
1095
+ "Push writes the caller's file to the device",
952
1096
  ],
953
1097
  }));
954
1098
  }
@@ -974,7 +1118,8 @@ export class AdbProvider {
974
1118
  apkPath,
975
1119
  ]), { timeoutMs: PULL_TIMEOUT_MS, maxOutputBytes: PULL_MAX_OUTPUT_BYTES }, signal);
976
1120
  if (!installed.ok)
977
- return installed;
1121
+ return (packageChangeRefusal(operation, input.serial, installed.error) ??
1122
+ installed);
978
1123
  const verdict = parsePackageChangeOutput(installed.value.stdout);
979
1124
  if (verdict.status === "failure")
980
1125
  return err(new AnalysisUnsupportedTargetError(operation, input.serial, verdict.reason ?? "the device refused the installation"));
@@ -984,10 +1129,12 @@ export class AdbProvider {
984
1129
  apk_path: apkPath,
985
1130
  bytes: digest.bytes,
986
1131
  sha256: digest.sha256,
987
- replaced: input.replace,
1132
+ replace_requested: input.replace,
1133
+ replaced: null,
988
1134
  }, provider, {
989
1135
  limitations: [
990
1136
  "Install changes device state; the installed APK's digest is the host file's digest",
1137
+ "Whether an existing package was replaced is unknown; replace_requested records only the adb install mode",
991
1138
  ],
992
1139
  }));
993
1140
  }
@@ -997,7 +1144,8 @@ export class AdbProvider {
997
1144
  maxOutputBytes: PULL_MAX_OUTPUT_BYTES,
998
1145
  }, signal);
999
1146
  if (!uninstalled.ok)
1000
- return uninstalled;
1147
+ return (packageChangeRefusal(operation, input.serial, uninstalled.error) ??
1148
+ uninstalled);
1001
1149
  const verdict = parsePackageChangeOutput(uninstalled.value.stdout);
1002
1150
  if (verdict.status === "failure")
1003
1151
  return err(new AnalysisUnsupportedTargetError(operation, input.serial, verdict.reason ?? "the device refused the removal"));
@@ -1080,13 +1228,39 @@ export class AdbProvider {
1080
1228
  const started = await runAdb(operation, serial, selection.binary, adbArguments(serial, ["shell", "am", "start", "-W", ...arguments_]), { timeoutMs: SHELL_TIMEOUT_MS, maxOutputBytes: PM_PATH_MAX_OUTPUT_BYTES }, signal);
1081
1229
  if (!started.ok)
1082
1230
  return started;
1083
- const verdict = parseAmStartOutput(started.value.stdout);
1084
- if (verdict.status === "refused")
1085
- return err(new AnalysisUnsupportedTargetError(operation, serial, verdict.reason ?? "am start refused the intent"));
1086
- return ok(createAnalysisExecution({
1231
+ const verdict = parseAmStartOutput(started.value.stdout, started.value.stderr);
1232
+ const result = {
1087
1233
  ...resultFields,
1088
1234
  started_activity: verdict.startedActivity,
1089
- }, provider, {
1235
+ reported_activity: verdict.activity,
1236
+ reported_status: verdict.reportedStatus,
1237
+ };
1238
+ if (verdict.status === "refused") {
1239
+ const partialObservation = operation === "start_adb_app"
1240
+ ? {
1241
+ provider_id: "adb",
1242
+ operation,
1243
+ result: adbResultSchemas.start_adb_app.parse(result),
1244
+ }
1245
+ : {
1246
+ provider_id: "adb",
1247
+ operation,
1248
+ result: adbResultSchemas.start_adb_activity.parse(result),
1249
+ };
1250
+ return err(new AnalysisUnsupportedTargetError(operation, serial, verdict.reason ?? "am start refused the intent", {
1251
+ capturedOutput: {
1252
+ stdout: started.value.stdout,
1253
+ stderr: started.value.stderr,
1254
+ truncated: false,
1255
+ },
1256
+ partialObservation,
1257
+ }));
1258
+ }
1259
+ return ok(createAnalysisExecution(result, provider, {
1260
+ rawResult: {
1261
+ stdout: started.value.stdout,
1262
+ stderr: started.value.stderr,
1263
+ },
1090
1264
  limitations: [
1091
1265
  "Starting an activity changes device state; am start -W waits for launch completion but no lifecycle observation is captured",
1092
1266
  ],
@@ -1114,24 +1288,26 @@ export class AdbProvider {
1114
1288
  const existing = await refuseExistingTarget(operation, localPath);
1115
1289
  if (existing !== undefined)
1116
1290
  return err(existing);
1117
- const captured = await runAdbBinary(operation, selection.binary, adbArguments(input.serial, ["exec-out", "screencap", "-p"]), { timeoutMs: SCREEN_TIMEOUT_MS, maxOutputBytes: SCREEN_MAX_OUTPUT_BYTES }, signal);
1291
+ const captured = await runAdbCapture(operation, input.serial, selection.binary, adbArguments(input.serial, ["exec-out", "screencap", "-p"]), { timeoutMs: SCREEN_TIMEOUT_MS, maxOutputBytes: SCREEN_MAX_OUTPUT_BYTES }, signal);
1118
1292
  if (!captured.ok)
1119
1293
  return captured;
1120
- const dimensions = parsePngDimensions(captured.value);
1294
+ const dimensions = parsePngDimensions(captured.value.stdout);
1121
1295
  if (dimensions.width === null)
1122
1296
  return err(new AnalysisProtocolError("screencap did not return a PNG payload; the device may not expose a display"));
1123
1297
  try {
1124
- await writeFile(localPath, captured.value, { flag: "wx" });
1298
+ await writeFile(localPath, captured.value.stdout, { flag: "wx" });
1125
1299
  }
1126
1300
  catch (cause) {
1127
1301
  return err(new AnalysisOutputError(operation, `The screen output could not be created exclusively: ${localPath}`, { cause }));
1128
1302
  }
1129
- const sha256 = createHash("sha256").update(captured.value).digest("hex");
1303
+ const sha256 = createHash("sha256")
1304
+ .update(captured.value.stdout)
1305
+ .digest("hex");
1130
1306
  return ok(createAnalysisExecution({
1131
1307
  client,
1132
1308
  serial: input.serial,
1133
1309
  local_path: localPath,
1134
- bytes: captured.value.byteLength,
1310
+ bytes: captured.value.stdout.byteLength,
1135
1311
  sha256,
1136
1312
  width: dimensions.width,
1137
1313
  height: dimensions.height,
@@ -1145,33 +1321,42 @@ export class AdbProvider {
1145
1321
  const directory = await prepareOutputDirectory(operation, input.output_directory);
1146
1322
  if (!directory.ok)
1147
1323
  return directory;
1148
- const collected = await runAdb(operation, input.serial, selection.binary, adbArguments(input.serial, ["bugreport", directory.value]), {
1149
- timeoutMs: BUGREPORT_TIMEOUT_MS,
1150
- maxOutputBytes: BUGREPORT_MAX_OUTPUT_BYTES,
1151
- }, signal);
1152
- if (!collected.ok)
1153
- return collected;
1154
- const reportedPath = parseBugreportCopiedPath(collected.value.stdout);
1155
- if (reportedPath === null)
1156
- return err(new AnalysisProtocolError("adb bugreport did not report an archive path; the build may use an unsupported format"));
1324
+ let stagingDirectory;
1325
+ let stagingIdentity;
1326
+ let retainedObservation;
1327
+ let publishedPath;
1157
1328
  try {
1158
- const digest = await hashAdbFile(reportedPath, operation, signal);
1159
- return ok(createAnalysisExecution({
1160
- client,
1161
- serial: input.serial,
1162
- local_path: reportedPath,
1163
- bytes: digest.bytes,
1164
- sha256: digest.sha256,
1165
- adb_reported_path: reportedPath,
1166
- }, provider, {
1167
- limitations: [
1168
- "The archive is device-generated: dumpstate, dumpsys, and logcat content is the device's own report",
1169
- ],
1170
- }));
1329
+ stagingDirectory = await mkdtemp(join(directory.value, ".rea-bugreport-"));
1171
1330
  }
1172
1331
  catch (cause) {
1173
- if (cause instanceof AnalysisCancelledError) {
1174
- cause.retainPartialObservation({
1332
+ return err(new AnalysisOutputError(operation, "The bugreport staging directory could not be created", { cause }));
1333
+ }
1334
+ const collectedResult = await (async () => {
1335
+ let reportedPath = null;
1336
+ try {
1337
+ const created = await lstat(stagingDirectory);
1338
+ if (!created.isDirectory() || created.isSymbolicLink())
1339
+ throw new Error(`The created bugreport staging output is not a regular directory: ${stagingDirectory}`);
1340
+ stagingIdentity = {
1341
+ dev: created.dev,
1342
+ ino: created.ino,
1343
+ mode: created.mode,
1344
+ };
1345
+ const collected = await runAdb(operation, input.serial, selection.binary, adbArguments(input.serial, ["bugreport", stagingDirectory]), {
1346
+ timeoutMs: BUGREPORT_TIMEOUT_MS,
1347
+ maxOutputBytes: BUGREPORT_MAX_OUTPUT_BYTES,
1348
+ }, signal);
1349
+ if (!collected.ok)
1350
+ return collected;
1351
+ reportedPath = parseBugreportCopiedPath(collected.value.stdout);
1352
+ if (reportedPath === null)
1353
+ return err(new AnalysisProtocolError("adb bugreport did not report an archive path; the build may use an unsupported format"));
1354
+ if (dirname(resolve(reportedPath)) !== stagingDirectory)
1355
+ return err(new AnalysisProtocolError(`adb bugreport reported an archive outside its staging directory: ${reportedPath}`));
1356
+ const archive = await lstat(reportedPath);
1357
+ if (!archive.isFile() || archive.isSymbolicLink())
1358
+ return err(new AnalysisProtocolError(`adb bugreport did not report a regular archive file: ${reportedPath}`));
1359
+ retainedObservation = {
1175
1360
  provider_id: "adb",
1176
1361
  operation,
1177
1362
  result: {
@@ -1181,10 +1366,68 @@ export class AdbProvider {
1181
1366
  adb_reported_path: reportedPath,
1182
1367
  digest_status: "unknown",
1183
1368
  },
1184
- });
1185
- return err(cause);
1369
+ };
1370
+ try {
1371
+ publishedPath = await publishBugreport(reportedPath, directory.value);
1372
+ }
1373
+ catch (cause) {
1374
+ return err(new AnalysisOutputError(operation, `The reported bugreport archive could not be published: ${reportedPath}`, { cause, partialObservation: retainedObservation }));
1375
+ }
1376
+ retainedObservation = {
1377
+ ...retainedObservation,
1378
+ result: { ...retainedObservation.result, local_path: publishedPath },
1379
+ };
1380
+ const digest = await hashAdbFile(publishedPath, operation, signal);
1381
+ const report = {
1382
+ client,
1383
+ serial: input.serial,
1384
+ local_path: publishedPath,
1385
+ bytes: digest.bytes,
1386
+ sha256: digest.sha256,
1387
+ adb_reported_path: reportedPath,
1388
+ };
1389
+ retainedObservation = {
1390
+ provider_id: "adb",
1391
+ operation,
1392
+ result: report,
1393
+ };
1394
+ return ok(createAnalysisExecution(report, provider, {
1395
+ limitations: [
1396
+ "The archive is device-generated: dumpstate, dumpsys, and logcat content is the device's own report",
1397
+ ],
1398
+ }));
1186
1399
  }
1187
- return err(new AnalysisOutputError(operation, `The reported bugreport archive could not be read back: ${reportedPath}`, { cause }));
1400
+ catch (cause) {
1401
+ if (cause instanceof AnalysisCancelledError) {
1402
+ if (retainedObservation !== undefined)
1403
+ cause.retainPartialObservation(retainedObservation);
1404
+ return err(cause);
1405
+ }
1406
+ return err(new AnalysisOutputError(operation, `The reported bugreport archive could not be read back: ${reportedPath ?? stagingDirectory}`, { cause, partialObservation: retainedObservation }));
1407
+ }
1408
+ })();
1409
+ // A completed acquisition becomes caller evidence even if publication fails.
1410
+ // Its staging directory must not enter automatic cleanup or cleanup retries.
1411
+ if (retainedObservation !== undefined && publishedPath === undefined)
1412
+ return collectedResult;
1413
+ try {
1414
+ await removeOwnedOutputDirectory(stagingDirectory, stagingIdentity);
1415
+ }
1416
+ catch (cause) {
1417
+ const primary = collectedResult.ok
1418
+ ? new AnalysisOutputError(operation, "The archive was published, but its staging directory could not be removed")
1419
+ : collectedResult.error;
1420
+ if (retainedObservation !== undefined)
1421
+ primary.retainPartialObservation(retainedObservation);
1422
+ this.#pendingOutputDirectoryCleanup.add({
1423
+ operation,
1424
+ path: stagingDirectory,
1425
+ identity: stagingIdentity,
1426
+ primary,
1427
+ remove: () => removeOwnedOutputDirectory(stagingDirectory, stagingIdentity),
1428
+ });
1429
+ return err(analysisErrorWithCleanupFailure(primary, new ProviderCleanupError(ADB_PROVIDER_IDENTITY.id, [stagingDirectory], { reason: cause instanceof Error ? cause.message : String(cause) }, { operation, cause }), operation));
1188
1430
  }
1431
+ return collectedResult;
1189
1432
  }
1190
1433
  }