rea-agents 6.3.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 (1332) hide show
  1. package/DISCLAIMER.md +136 -0
  2. package/README.md +72 -18
  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/ReaGhidraApplySeeds.java +151 -0
  8. package/bridge/ghidra/ReaGhidraBridge.java +1729 -283
  9. package/bridge/ghidra/ReaGhidraBundleActivator.java +14 -0
  10. package/bridge/ghidra/ReaGhidraMipsSoftFloat.java +176 -0
  11. package/bridge/ghidra/ReaGhidraNoReturnFix.java +123 -0
  12. package/bridge/ghidra/ReaGhidraPrepareRaw.java +49 -0
  13. package/bridge/hopper_bridge.py +103 -69
  14. package/bridge/mitmproxy/capture.py +189 -13
  15. package/bridge/native/rea_lldb_tracer.py +40 -6
  16. package/bridge/process/ProcessRunTokenReader.swift +76 -34
  17. package/bridge/pwntools/layout_impl.py +5 -0
  18. package/bridge/pwntools/recorded_crash_impl.py +31 -10
  19. package/dist/adb/AdbConfiguration.js +100 -0
  20. package/dist/adb/AdbDeviceOutput.js +208 -0
  21. package/dist/adb/AdbDirectoryListing.js +80 -0
  22. package/dist/adb/AdbHostFileName.js +34 -0
  23. package/dist/adb/AdbProvider.js +1433 -0
  24. package/dist/adb/AdbShellOutput.js +307 -0
  25. package/dist/android/AndroidTargetSnapshot.js +104 -22
  26. package/dist/android/JadxAnalysis.js +32 -7
  27. package/dist/android/JadxConfiguration.js +163 -53
  28. package/dist/android/JadxDoctor.js +115 -0
  29. package/dist/android/JadxMcpTransport.js +5 -3
  30. package/dist/android/JadxProtocol.js +14 -0
  31. package/dist/android/JadxProvider.js +63 -25
  32. package/dist/android/JadxRelease.js +12 -1
  33. package/dist/android/JadxWorkspaceRoot.js +157 -0
  34. package/dist/apktool/ApktoolConfiguration.js +227 -0
  35. package/dist/apktool/ApktoolDecodeOutput.js +142 -0
  36. package/dist/apktool/ApktoolProvider.js +543 -0
  37. package/dist/application/AnalysisContextQueries.js +5 -8
  38. package/dist/application/AnalysisProvider.js +24 -14
  39. package/dist/application/AppBundleExecutable.js +30 -25
  40. package/dist/application/BinaryTargetResolver.js +210 -33
  41. package/dist/application/BrowserEvidence.js +1 -1
  42. package/dist/application/BrowserObservationService.js +13 -2
  43. package/dist/application/BrowserScenarioCaptureService.js +0 -1
  44. package/dist/application/CallPathTracing.js +52 -13
  45. package/dist/application/CapabilityInventory.js +179 -29
  46. package/dist/application/ClaudeDesktopConfigLocation.js +152 -0
  47. package/dist/application/ClientConfigurationDocument.js +154 -7
  48. package/dist/application/ClientConfigurationFiles.js +128 -0
  49. package/dist/application/ClientRegistrationEnvironment.js +41 -0
  50. package/dist/application/ClientRegistrationIdentity.js +94 -29
  51. package/dist/application/ClientRegistrationStatus.js +223 -67
  52. package/dist/application/DirectAnalysis.js +86 -31
  53. package/dist/application/DirectAnalysisCleanup.js +1 -1
  54. package/dist/application/DirectAnalysisStatus.js +14 -2
  55. package/dist/application/Doctor.js +117 -34
  56. package/dist/application/DoctorDiagnostics.js +34 -12
  57. package/dist/application/DoctorProviderIds.js +2 -0
  58. package/dist/application/DoctorScope.js +11 -2
  59. package/dist/application/DshCordisPatch.js +355 -0
  60. package/dist/application/DshCordisYaml.js +155 -0
  61. package/dist/application/EnhancedLiteralTracing.js +30 -16
  62. package/dist/application/EnhancedToolTypes.js +0 -1
  63. package/dist/application/EnhancedTools.js +164 -54
  64. package/dist/application/EvidenceBundleCommands.js +36 -19
  65. package/dist/application/EvidenceBundleFiles.js +29 -7
  66. package/dist/application/FunctionAnalysisEvidence.js +3 -0
  67. package/dist/application/GeminiClientSettings.js +151 -0
  68. package/dist/application/HermesClientHome.js +115 -0
  69. package/dist/application/HermesConfigurationYaml.js +272 -0
  70. package/dist/application/HopperDownload.js +39 -0
  71. package/dist/application/InventoryProjectionEvidence.js +0 -1
  72. package/dist/application/InvestigationProviders.js +19 -3
  73. package/dist/application/JsonFiles.js +114 -23
  74. package/dist/application/JsonInputFile.js +410 -0
  75. package/dist/application/LinuxHopper.js +130 -60
  76. package/dist/application/MacHopper.js +177 -150
  77. package/dist/application/MacHopperPaths.js +40 -0
  78. package/dist/application/MipsElfMetadata.js +201 -0
  79. package/dist/application/MipsElfSharedLoad.js +164 -0
  80. package/dist/application/MipsGnuAttributes.js +90 -0
  81. package/dist/application/MsixPackageStorage.js +133 -0
  82. package/dist/application/ProgressReporter.js +1 -1
  83. package/dist/application/ProviderOperationExecution.js +39 -0
  84. package/dist/application/ReconstructionCoverageService.js +0 -1
  85. package/dist/application/ReconstructionObligationCandidates.js +12 -5
  86. package/dist/application/ReconstructionObligationLedgerDiagnostics.js +2 -2
  87. package/dist/application/ReconstructionObligationLedgerEvaluation.js +15 -33
  88. package/dist/application/ReconstructionObligationLedgerProjection.js +3 -72
  89. package/dist/application/ReconstructionObligationLedgerService.js +3 -1
  90. package/dist/application/ReconstructionObligationOriginalCases.js +2 -1
  91. package/dist/application/ReferenceSourceImport.js +94 -31
  92. package/dist/application/ReferenceSourceImportEntries.js +40 -30
  93. package/dist/application/ReferenceSourceImportPolicy.js +99 -23
  94. package/dist/application/ReferenceSourceImportTypes.js +30 -23
  95. package/dist/application/ReferenceSourceVcsAdapter.js +163 -31
  96. package/dist/application/RegularFileRead.js +121 -7
  97. package/dist/application/Setup.js +88 -14
  98. package/dist/application/SetupClientConfiguration.js +307 -38
  99. package/dist/application/SetupClients.js +12 -6
  100. package/dist/application/SetupHost.js +158 -38
  101. package/dist/application/SetupInstallFailure.js +42 -2
  102. package/dist/application/SetupPlan.js +83 -57
  103. package/dist/application/SetupRecoveryBackup.js +66 -0
  104. package/dist/application/SetupRegistrationEnvironment.js +2 -1
  105. package/dist/application/SetupSkill.js +354 -88
  106. package/dist/application/SupportedClients.js +429 -70
  107. package/dist/application/TypeScriptEmittedSourceCandidates.js +26 -0
  108. package/dist/application/Uninstall.js +412 -73
  109. package/dist/application/UninstallFailure.js +14 -0
  110. package/dist/application/Update.js +54 -25
  111. package/dist/application/UpdateFailure.js +17 -0
  112. package/dist/application/UpdateMaintenance.js +25 -47
  113. package/dist/application/UpdateRuntime.js +141 -27
  114. package/dist/application/Utf8JsonInput.js +7 -0
  115. package/dist/application/WebModuleTraceService.js +7 -0
  116. package/dist/application/WebNetworkCaptureService.js +16 -7
  117. package/dist/application/WebScriptExportService.js +131 -65
  118. package/dist/application/WebSourceLocationService.js +22 -3
  119. package/dist/application/WindowsCapabilities.js +18 -15
  120. package/dist/application/WorkflowEvidence.js +24 -1
  121. package/dist/application/adb/AdbDeviceAnalysisPort.js +1 -0
  122. package/dist/application/adb/AdbDeviceAnalysisService.js +13 -0
  123. package/dist/application/analysisView/AnalysisViewService.js +122 -6
  124. package/dist/application/android/AndroidPackageInspection.js +25 -0
  125. package/dist/application/android/AndroidSearchEvidenceSummary.js +100 -0
  126. package/dist/application/apktool/ApktoolResourceAnalysisPort.js +1 -0
  127. package/dist/application/apktool/ApktoolResourceAnalysisService.js +13 -0
  128. package/dist/application/binary/AnalysisClientCleanup.js +0 -24
  129. package/dist/application/binary/AnalysisProviderEvaluation.js +1 -1
  130. package/dist/application/binary/AnalysisProviderRegistry.js +36 -21
  131. package/dist/application/binary/AnalysisSnapshotCache.js +41 -20
  132. package/dist/application/binary/AnalysisSnapshotFiles.js +75 -9
  133. package/dist/application/binary/BinarySession.js +250 -97
  134. package/dist/application/binary/BinarySessionExecution.js +5 -4
  135. package/dist/application/binary/BinarySessionOpen.js +13 -6
  136. package/dist/application/binary/BinarySessionRecords.js +33 -7
  137. package/dist/application/binary/BinarySessionStatus.js +93 -23
  138. package/dist/application/binary/BinaryTargetSummary.js +9 -0
  139. package/dist/application/binary/CompositeProvider.js +71 -28
  140. package/dist/application/binary/LazyAnalysisProvider.js +3 -1
  141. package/dist/application/binary/SessionProviderRouter.js +5 -2
  142. package/dist/application/binaryDiagnostics/BinaryLayoutService.js +13 -2
  143. package/dist/application/binaryDiagnostics/PeResourcesPort.js +1 -0
  144. package/dist/application/binaryDiagnostics/PeResourcesService.js +114 -0
  145. package/dist/application/binaryDiagnostics/RecordedCrashService.js +16 -4
  146. package/dist/application/captures/PacketCaptureService.js +83 -0
  147. package/dist/application/closeOwnedWebResources.js +7 -0
  148. package/dist/application/electron/ElectronFusePort.js +1 -0
  149. package/dist/application/electron/ElectronFuseService.js +80 -0
  150. package/dist/application/evm/EvmInterfaceService.js +4 -0
  151. package/dist/application/firmware/FirmwareAnalysisService.js +3 -0
  152. package/dist/application/flutter/DartAotInspection.js +26 -0
  153. package/dist/application/flutter/FlutterBuildAnalysisPort.js +1 -0
  154. package/dist/application/flutter/FlutterBuildAnalysisService.js +13 -0
  155. package/dist/application/frida/FridaInstrumentationPort.js +8 -0
  156. package/dist/application/frida/FridaInstrumentationService.js +310 -0
  157. package/dist/application/frida/fridaInputErrors.js +17 -0
  158. package/dist/application/go/GoBinaryPort.js +1 -0
  159. package/dist/application/go/GoBinaryService.js +80 -0
  160. package/dist/application/harmony/HarmonyApplicationService.js +17 -0
  161. package/dist/application/investigation/EvidenceLedger.js +40 -14
  162. package/dist/application/investigation/InspectEvidenceBundle.js +18 -0
  163. package/dist/application/investigation/InvestigationRecords.js +12 -21
  164. package/dist/application/investigation/UnknownEvidence.js +22 -18
  165. package/dist/application/javascript/ElectronActiveObservationService.js +55 -25
  166. package/dist/application/javascript/ElectronBoundaryAnalysis.js +17 -3
  167. package/dist/application/javascript/ElectronBoundaryGraph.js +2 -0
  168. package/dist/application/javascript/ElectronBoundaryGraphCallPaths.js +144 -0
  169. package/dist/application/javascript/ElectronBoundaryGraphContext.js +3 -2
  170. package/dist/application/javascript/ElectronBoundaryGraphIpc.js +28 -9
  171. package/dist/application/javascript/ElectronBoundaryGraphNative.js +20 -7
  172. package/dist/application/javascript/ElectronBoundaryGraphWindows.js +50 -12
  173. package/dist/application/javascript/ElectronObservationService.js +0 -1
  174. package/dist/application/javascript/JavaScriptApplicationEvidence.js +15 -0
  175. package/dist/application/javascript/JavaScriptApplicationService.js +44 -18
  176. package/dist/application/javascript/JavaScriptApplicationWorkflowEvidence.js +5 -6
  177. package/dist/application/javascript/JavaScriptApplicationWorkflowService.js +0 -1
  178. package/dist/application/javascript/JavaScriptArtifactAnalysis.js +253 -60
  179. package/dist/application/javascript/JavaScriptArtifactGraphAccumulator.js +51 -23
  180. package/dist/application/javascript/JavaScriptArtifactGraphBuilder.js +93 -21
  181. package/dist/application/javascript/JavaScriptArtifactGraphBundlers.js +4 -3
  182. package/dist/application/javascript/JavaScriptArtifactGraphContext.js +35 -8
  183. package/dist/application/javascript/JavaScriptArtifactGraphDocuments.js +25 -14
  184. package/dist/application/javascript/JavaScriptArtifactGraphFindings.js +163 -54
  185. package/dist/application/javascript/JavaScriptArtifactGraphStructure.js +246 -15
  186. package/dist/application/javascript/JavaScriptArtifactPathResolution.js +1057 -323
  187. package/dist/application/javascript/JavaScriptArtifactReconstruction.js +134 -32
  188. package/dist/application/javascript/JavaScriptArtifactReconstructionInput.js +6 -1
  189. package/dist/application/javascript/JavaScriptModuleRelationships.js +39 -15
  190. package/dist/application/javascript/JavaScriptRecoveryService.js +32 -9
  191. package/dist/application/javascript/JavaScriptRuntimeObservationService.js +2 -1
  192. package/dist/application/javascript/JavaScriptRuntimeReconciliationService.js +0 -1
  193. package/dist/application/javascript/JavaScriptSemanticGraphAsyncProjection.js +9 -3
  194. package/dist/application/javascript/JavaScriptSemanticGraphBuilder.js +228 -74
  195. package/dist/application/javascript/JavaScriptSemanticGraphConstruction.js +12 -19
  196. package/dist/application/javascript/JavaScriptSemanticGraphDataProjection.js +4 -1
  197. package/dist/application/javascript/JavaScriptSemanticGraphElectronProjection.js +67 -0
  198. package/dist/application/javascript/JavaScriptSemanticGraphFlowProjection.js +5 -3
  199. package/dist/application/javascript/JavaScriptSemanticGraphObjectProjection.js +5 -3
  200. package/dist/application/javascript/JavaScriptSemanticGraphValueProjection.js +19 -8
  201. package/dist/application/javascript/JavaScriptSemanticTraceService.js +0 -1
  202. package/dist/application/jeb/JebAnalysisPort.js +1 -0
  203. package/dist/application/jeb/JebAnalysisService.js +13 -0
  204. package/dist/application/managed/ManagedApplicationGraphService.js +1 -2
  205. package/dist/application/managed/ManagedMemberComparisonService.js +72 -54
  206. package/dist/application/managed/ManagedNativeVerificationService.js +0 -1
  207. package/dist/application/managed/ManagedReconstructionService.js +0 -1
  208. package/dist/application/native/NativeCallRoutes.js +54 -34
  209. package/dist/application/native/NativeDispatchMetadataInspection.js +6 -2
  210. package/dist/application/native/NativeUiActionTrace.js +51 -30
  211. package/dist/application/native/NativeValueTrace.js +75 -24
  212. package/dist/application/pcap/PcapAnalysisPort.js +1 -0
  213. package/dist/application/pcap/PcapAnalysisService.js +24 -0
  214. package/dist/application/process/ProcessCli.js +57 -32
  215. package/dist/application/reverse/ReverseEngineeringCommandPort.js +1 -0
  216. package/dist/application/reverse/ReverseEngineeringService.js +688 -0
  217. package/dist/application/rust/RustBinaryPort.js +1 -0
  218. package/dist/application/rust/RustBinaryService.js +80 -0
  219. package/dist/application/signals/SignalRecordingService.js +83 -0
  220. package/dist/application/sqlite/SqliteDatabaseCapability.js +30 -0
  221. package/dist/application/sqlite/SqliteDatabasePort.js +1 -0
  222. package/dist/application/sqlite/SqliteDatabaseService.js +76 -0
  223. package/dist/application/wasm/WasmArtifactPort.js +1 -0
  224. package/dist/application/wasm/WasmArtifactService.js +77 -0
  225. package/dist/application/wasm/WasmInterfaceComparisonService.js +188 -0
  226. package/dist/artifacts/ArtifactHash.js +13 -2
  227. package/dist/artifacts/ArtifactPaths.js +133 -15
  228. package/dist/artifacts/ArtifactProvider.js +28 -19
  229. package/dist/artifacts/ArtifactReader.js +35 -0
  230. package/dist/artifacts/ArtifactResourceScope.js +109 -0
  231. package/dist/artifacts/AsarArtifactReader.js +295 -156
  232. package/dist/artifacts/AsarHeader.js +24 -0
  233. package/dist/artifacts/AsarListing.js +78 -0
  234. package/dist/artifacts/DirectoryArtifactReader.js +247 -74
  235. package/dist/artifacts/MachOSliceArtifactReader.js +198 -48
  236. package/dist/artifacts/NativeDmgArtifactReader.js +188 -78
  237. package/dist/artifacts/OrderedReads.js +57 -0
  238. package/dist/artifacts/SafeOutputTree.js +261 -71
  239. package/dist/artifacts/SafeOutputTreeCleanup.js +45 -0
  240. package/dist/artifacts/SafeOutputTreeCreationFailure.js +20 -0
  241. package/dist/artifacts/SafeOutputTreeIdentity.js +42 -0
  242. package/dist/artifacts/SafeOutputTreeReadback.js +33 -0
  243. package/dist/artifacts/ZipArtifactReader.js +186 -31
  244. package/dist/artifacts/apple/AppleAssetCatalogAnalysis.js +77 -68
  245. package/dist/artifacts/apple/DylibResolutionReader.js +11 -5
  246. package/dist/artifacts/apple/InterfaceBuilderAnalysis.js +114 -38
  247. package/dist/artifacts/apple/InterfaceBuilderDecodeBudget.js +125 -35
  248. package/dist/artifacts/apple/KeyedArchiveReader.js +35 -15
  249. package/dist/artifacts/apple/MachoLoadCommandReader.js +62 -61
  250. package/dist/artifacts/apple/NibArchive.js +11 -4
  251. package/dist/artifacts/apple/PlistNumberLiterals.js +2 -2
  252. package/dist/artifacts/extraction/ArtifactExtraction.js +115 -92
  253. package/dist/artifacts/hostExecutableMarking.js +16 -0
  254. package/dist/artifacts/inventory/ArtifactGraphConstruction.js +236 -69
  255. package/dist/artifacts/inventory/ArtifactInventory.js +7 -6
  256. package/dist/artifacts/inventory/classify.js +95 -35
  257. package/dist/artifacts/inventory/hashStableRootArtifact.js +48 -15
  258. package/dist/artifacts/inventory/reader.js +40 -17
  259. package/dist/artifacts/inventory/scanCanonical.js +84 -40
  260. package/dist/artifacts/inventory/scanReader.js +72 -19
  261. package/dist/artifacts/javascript/JavaScriptArtifactFiles.js +177 -15
  262. package/dist/artifacts/javascript/JavaScriptSourceAnalysis.js +3 -0
  263. package/dist/artifacts/readStableArtifact.js +28 -4
  264. package/dist/browser/BrowserProcessStartup.js +20 -9
  265. package/dist/browser/BrowserScenarioPartialObservation.js +60 -38
  266. package/dist/browser/BrowserScenarioSecrets.js +193 -48
  267. package/dist/browser/CdpBrowserProvider.js +74 -98
  268. package/dist/browser/CdpCaptureDocuments.js +261 -65
  269. package/dist/browser/CdpCaptureDomSvg.js +243 -0
  270. package/dist/browser/CdpCaptureEventBodyShapes.js +12 -12
  271. package/dist/browser/CdpCaptureEventHandlers.js +49 -21
  272. package/dist/browser/CdpCaptureEvents.js +53 -19
  273. package/dist/browser/CdpCaptureStorage.js +22 -5
  274. package/dist/browser/CdpCaptureStorageFingerprints.js +54 -11
  275. package/dist/browser/CdpCaptureValues.js +0 -1
  276. package/dist/browser/CdpConnection.js +25 -9
  277. package/dist/browser/CdpElectronInspection.js +14 -4
  278. package/dist/browser/CdpElectronProvider.js +7 -2
  279. package/dist/browser/CdpElectronScripts.js +2 -1
  280. package/dist/browser/CdpElectronWorkers.js +7 -2
  281. package/dist/browser/CdpEndpoint.js +143 -17
  282. package/dist/browser/CdpObservationSession.js +24 -8
  283. package/dist/browser/CdpPageCapture.js +67 -17
  284. package/dist/browser/CdpPageCaptureScripts.js +4 -3
  285. package/dist/browser/CdpPageCaptureWorkers.js +5 -1
  286. package/dist/browser/CdpSafeMetadata.js +9 -5
  287. package/dist/browser/CdpScreenshot.js +5 -14
  288. package/dist/browser/CdpSnapshotStrings.js +21 -0
  289. package/dist/browser/CdpTargetSession.js +59 -36
  290. package/dist/browser/CdpWebMcpDiscovery.js +55 -16
  291. package/dist/browser/ElectronFileScope.js +99 -9
  292. package/dist/browser/PlaywrightBrowserScenarioProvider.js +64 -8
  293. package/dist/browser/PlaywrightElectronActiveActions.js +4 -4
  294. package/dist/browser/PlaywrightElectronActiveProjection.js +16 -4
  295. package/dist/browser/PlaywrightElectronActiveProvider.js +114 -36
  296. package/dist/browser/PlaywrightExecutionBoundary.js +2 -2
  297. package/dist/browser/PlaywrightScenarioArtifacts.js +5 -5
  298. package/dist/browser/PlaywrightScenarioBrowser.js +78 -13
  299. package/dist/browser/PlaywrightScenarioEvents.js +198 -36
  300. package/dist/browser/PlaywrightScenarioServiceWorkers.js +249 -0
  301. package/dist/browser/PlaywrightScenarioSession.js +180 -75
  302. package/dist/browser/PlaywrightScenarioStorage.js +507 -0
  303. package/dist/browser/PngVisualDiff.js +198 -29
  304. package/dist/browser/WebSourceMapFetcher.js +164 -81
  305. package/dist/browser/assets/LocalWebScriptArtifacts.js +27 -4
  306. package/dist/browser/assets/PublishWebScripts.js +88 -22
  307. package/dist/browser/assets/ScenarioScriptCapture.js +2 -1
  308. package/dist/browser/assets/WebArtifactReads.js +34 -4
  309. package/dist/browser/assets/WebSourceLocationArtifacts.js +39 -3
  310. package/dist/browser/execution/CdpExecutionCapture.js +3 -3
  311. package/dist/browser/execution/CdpPreciseCoverage.js +5 -8
  312. package/dist/browser/history/CaptureFailures.js +22 -8
  313. package/dist/browser/history/CaptureFormatError.js +2 -2
  314. package/dist/browser/history/{HarJson.js → CaptureJson.js} +14 -4
  315. package/dist/browser/history/CaptureRedaction.js +16 -3
  316. package/dist/browser/history/CaptureRelease.js +20 -2
  317. package/dist/browser/history/HarCapture.js +16 -9
  318. package/dist/browser/history/HarSchema.js +36 -36
  319. package/dist/browser/history/HistoricalCaptureDecoder.js +93 -25
  320. package/dist/browser/history/MitmproxyCaptureAdapter.js +3 -1
  321. package/dist/browser/history/NodeCaptureAdapter.js +48 -0
  322. package/dist/browser/history/{HarCaptureProcess.js → NodeCaptureProcess.js} +16 -15
  323. package/dist/browser/history/QlogCapture.js +385 -0
  324. package/dist/browser/history/SazCapture.js +130 -0
  325. package/dist/browser/history/SazHttp.js +61 -0
  326. package/dist/browser/history/SazMetadata.js +92 -0
  327. package/dist/browser/history/SazProjection.js +90 -0
  328. package/dist/browser/modules/NativeModuleResolver.js +177 -110
  329. package/dist/browser/modules/WebModuleArtifacts.js +41 -3
  330. package/dist/browser/network/PlaywrightNetworkContent.js +40 -5
  331. package/dist/browser/network/PlaywrightScenarioNetwork.js +125 -11
  332. package/dist/captures/TsharkCaptureProvider.js +370 -0
  333. package/dist/captures/parseFieldDiscovery.js +66 -0
  334. package/dist/captures/parsePacketOutput.js +21 -0
  335. package/dist/catalogIdentity.js +46 -35
  336. package/dist/cli/adbCommands.js +337 -0
  337. package/dist/cli/analysisViewCommands.js +39 -1
  338. package/dist/cli/androidCommands.js +11 -2
  339. package/dist/cli/apktoolCommands.js +52 -0
  340. package/dist/cli/applicationCommands.js +44 -17
  341. package/dist/cli/artifactCommands.js +9 -12
  342. package/dist/cli/binaryDiagnosticsCommands.js +27 -5
  343. package/dist/cli/browserAdvancedCommands.js +97 -55
  344. package/dist/cli/browserCommands.js +46 -29
  345. package/dist/cli/captureCommands.js +72 -0
  346. package/dist/cli/cliResultOutput.js +188 -0
  347. package/dist/cli/coreBinaryCommands.js +73 -32
  348. package/dist/cli/coreNativeCommands.js +54 -45
  349. package/dist/cli/cutterCommands.js +50 -0
  350. package/dist/cli/electronCommands.js +51 -4
  351. package/dist/cli/evmCommands.js +16 -8
  352. package/dist/cli/finishAnalysisCommand.js +44 -0
  353. package/dist/cli/firmwareCommands.js +21 -38
  354. package/dist/cli/flutterCommands.js +69 -0
  355. package/dist/cli/fridaCommands.js +211 -0
  356. package/dist/cli/goCommands.js +20 -0
  357. package/dist/cli/interactiveSetup.js +11 -1
  358. package/dist/cli/javascriptApplicationAnalysis.js +18 -2
  359. package/dist/cli/javascriptRecoveryCommands.js +29 -15
  360. package/dist/cli/jebCommands.js +99 -0
  361. package/dist/cli/jsonOutput.js +13 -6
  362. package/dist/cli/managedCommands.js +31 -3
  363. package/dist/cli/options.js +20 -2
  364. package/dist/cli/pcapCommands.js +47 -0
  365. package/dist/cli/processCommands.js +1 -1
  366. package/dist/cli/referenceSourceImportStatus.js +7 -0
  367. package/dist/cli/reverseEngineeringCommands.js +268 -0
  368. package/dist/cli/rustCommands.js +21 -0
  369. package/dist/cli/setupCommands.js +55 -15
  370. package/dist/cli/signalCommands.js +72 -0
  371. package/dist/cli/sqliteCommands.js +79 -0
  372. package/dist/cli/utilityCommands.js +179 -89
  373. package/dist/cli/wasmCommands.js +61 -0
  374. package/dist/cli/webModuleCommands.js +36 -32
  375. package/dist/cli/webNetworkCaptureCommands.js +8 -8
  376. package/dist/cli/webScriptCommands.js +20 -1
  377. package/dist/cli/webSourceLocationCommands.js +21 -9
  378. package/dist/cli-runtime/AbortablePromise-BVBemxbD.js +123 -0
  379. package/dist/cli-runtime/AnalysisProvider-D0Us2OTk.js +27 -0
  380. package/dist/cli-runtime/AnalysisSnapshotCache-BXS0wRd2.js +710 -0
  381. package/dist/cli-runtime/ArtifactReader-BXkffc1D.js +55 -0
  382. package/dist/cli-runtime/ArtifactResourceScope-DQWTcUwE.js +114 -0
  383. package/dist/cli-runtime/AsarHeader-CnzOzYEH.js +31 -0
  384. package/dist/cli-runtime/BinarySessionStatus-DnMxMk-r.js +211 -0
  385. package/dist/cli-runtime/BinaryTargetResolver-CVIJ_s1A.js +1308 -0
  386. package/dist/cli-runtime/BoundedFileBytes-BU30odTm.js +39 -0
  387. package/dist/cli-runtime/CdpTargetSession-DGX5pV9w.js +650 -0
  388. package/dist/cli-runtime/ClientConfigPath-c6jr6INc.js +36 -0
  389. package/dist/cli-runtime/ClientConfigurationDocument-ffQ9X0Se.js +1957 -0
  390. package/dist/cli-runtime/ClientRegistrationStatus-DszCyPEU.js +509 -0
  391. package/dist/cli-runtime/CurrentEntrypointPath-D5FRNdkq.js +14 -0
  392. package/dist/cli-runtime/DirectAnalysis-BgvAtpN3.js +528 -0
  393. package/dist/cli-runtime/Doctor-DIpf_I7N.js +588 -0
  394. package/dist/cli-runtime/ElectronFileScope-dpHm2nrS.js +1054 -0
  395. package/dist/cli-runtime/ExecFileOutput-BEQs-lDD.js +117 -0
  396. package/dist/cli-runtime/IdaConfiguration-CtGP7EKo.js +1094 -0
  397. package/dist/cli-runtime/InterfaceBuilderDecodeBudget-D4omRUe4.js +279 -0
  398. package/dist/cli-runtime/InventoryProjectionEvidence-DIsI4DJ6.js +49 -0
  399. package/dist/cli-runtime/InvestigationProviders-DoQRIHii.js +117 -0
  400. package/dist/cli-runtime/JavaScriptApplicationEvidenceGraph-D5aI_FSJ.js +160 -0
  401. package/dist/cli-runtime/JavaScriptApplicationWorkflowEvidence-Bz4-V0Ct.js +75 -0
  402. package/dist/cli-runtime/JavaScriptWorkerMemoryLimit-B1bwMM1a.js +86 -0
  403. package/dist/cli-runtime/JebMcpEndpoint-DUytrn5G.js +428 -0
  404. package/dist/cli-runtime/JsonFiles-DQa1PRKy.js +708 -0
  405. package/dist/cli-runtime/MacCodeSignature-MgYbRK_H.js +24 -0
  406. package/dist/cli-runtime/MacHopperPaths-CwL5lYPX.js +434 -0
  407. package/dist/cli-runtime/MachoLoadCommandReader-C7e074Ze.js +510 -0
  408. package/dist/cli-runtime/ManagedSnapshot-rqyBHcdL.js +4185 -0
  409. package/dist/cli-runtime/OwnedCommand-Cj9GhmPR.js +112 -0
  410. package/dist/cli-runtime/PrivateRuntimeRoot-DAy0PiBM.js +263 -0
  411. package/dist/cli-runtime/ProcessOwnership-DXC5-UWt.js +1378 -0
  412. package/dist/cli-runtime/ProviderDeadline-8m2pFRDc.js +122 -0
  413. package/dist/cli-runtime/RegularFile-B_6KPCNQ.js +139 -0
  414. package/dist/cli-runtime/RegularFileRead-DVlC5faM.js +125 -0
  415. package/dist/cli-runtime/SafeOutputTree-D6U15GXd.js +524 -0
  416. package/dist/cli-runtime/SetupHost-FkYWswsq.js +1098 -0
  417. package/dist/cli-runtime/SupportedClients-DaX6Lt2d.js +1049 -0
  418. package/dist/cli-runtime/UninstallFailure-1blyKXHE.js +22 -0
  419. package/dist/cli-runtime/Update-CbTC_eg1.js +143 -0
  420. package/dist/cli-runtime/UpdateFailure-BcFNxEZZ.js +24 -0
  421. package/dist/cli-runtime/ZipArtifactReader-B8ZgNe4D.js +248 -0
  422. package/dist/cli-runtime/analysisErrorCleanup-Do6YeeoD.js +32 -0
  423. package/dist/cli-runtime/analysisErrorPresentation-DGt7TdsH.js +497 -0
  424. package/dist/cli-runtime/appleArchiveFormat-tVoI2ykA.js +263 -0
  425. package/dist/cli-runtime/application__DirectAnalysisStatus-DpOejOf0.js +150 -0
  426. package/dist/cli-runtime/application__EnhancedTools-oFE2bOjs.js +1787 -0
  427. package/dist/cli-runtime/application__FunctionAnalysisEvidence-B6osuhvW.js +41 -0
  428. package/dist/cli-runtime/application__ReconstructionCoverageService-DN3wTFQj.js +32 -0
  429. package/dist/cli-runtime/application__ReconstructionObligationLedgerService-CKcTppX9.js +815 -0
  430. package/dist/cli-runtime/application__Setup-XpMaRNjy.js +514 -0
  431. package/dist/cli-runtime/application__Uninstall-_23pU2yB.js +427 -0
  432. package/dist/cli-runtime/application__UpdateRuntime-DPvY8ohd.js +345 -0
  433. package/dist/cli-runtime/application__android__AndroidApplicationService-CFgIFPM4.js +31 -0
  434. package/dist/cli-runtime/application__apple__AppleApplicationService-Db6QCsun.js +31 -0
  435. package/dist/cli-runtime/application__harmony__HarmonyApplicationService-CFjocHoK.js +31 -0
  436. package/dist/cli-runtime/application__javascript__ElectronActiveObservationService-CmVDUI_Z.js +118 -0
  437. package/dist/cli-runtime/application__javascript__ElectronObservationService-DEsR8KDN.js +63 -0
  438. package/dist/cli-runtime/application__javascript__JavaScriptApplicationService-CCkp8KBh.js +11450 -0
  439. package/dist/cli-runtime/application__javascript__JavaScriptApplicationWorkflowService-lPy0tzr3.js +2329 -0
  440. package/dist/cli-runtime/application__javascript__JavaScriptRuntimeReconciliationService-DWleA8K9.js +88 -0
  441. package/dist/cli-runtime/application__javascript__JavaScriptSemanticTraceService-DkALH4rL.js +299 -0
  442. package/dist/cli-runtime/artifactOperationError-B7n03FbD.js +27 -0
  443. package/dist/cli-runtime/artifacts__ArtifactProvider-zXI0QjSL.js +2187 -0
  444. package/dist/cli-runtime/binary-BVOr2mgE.js +14206 -0
  445. package/dist/cli-runtime/browserObservationError-Dx6xRTjb.js +40 -0
  446. package/dist/cli-runtime/catalogIdentity-DLoXgfIR.js +933 -0
  447. package/dist/cli-runtime/cli.js +41848 -0
  448. package/dist/cli-runtime/cliOutput-BC1BdAcB.js +122 -0
  449. package/dist/cli-runtime/cliOutput.js +5 -0
  450. package/dist/cli-runtime/cliResultOutput-DsRMI8CJ.js +780 -0
  451. package/dist/cli-runtime/cliResultOutput.js +5 -0
  452. package/dist/cli-runtime/composition__browserScenario-DHXC1a8n.js +2927 -0
  453. package/dist/cli-runtime/composition__electronObservation-GecK2EID.js +555 -0
  454. package/dist/cli-runtime/composition__electronScenario-CEZnVrAL.js +653 -0
  455. package/dist/cli-runtime/cutterToolContracts-TZH9EHr5.js +5134 -0
  456. package/dist/cli-runtime/doctorRuntime-BE5ZX8it.js +258 -0
  457. package/dist/cli-runtime/dotnet__ManagedStaticProvider-C8_yZCDc.js +5 -0
  458. package/dist/cli-runtime/errorSchemas-CTRmvMl3.js +601 -0
  459. package/dist/cli-runtime/javascriptApplicationAnalysis-HgMzVMQw.js +2068 -0
  460. package/dist/cli-runtime/javascriptExportReturnShapeProjection-Dg00g35t.js +78 -0
  461. package/dist/cli-runtime/javascriptExportShapeComparisonSchemas-BYnoIqIk.js +1242 -0
  462. package/dist/cli-runtime/javascriptRuntimeReconciliation-DNjDoL3S.js +1507 -0
  463. package/dist/cli-runtime/javascriptRuntimeReconciliationSchemas-BWpGWNcI.js +247 -0
  464. package/dist/cli-runtime/javascriptSemanticTraceSchemas-BTCNcvbc.js +126 -0
  465. package/dist/cli-runtime/lipo-DSWP6fv-.js +396 -0
  466. package/dist/cli-runtime/logger-CQQCI4a2.js +48 -0
  467. package/dist/cli-runtime/machoContainer-C8BIkkq3.js +172 -0
  468. package/dist/cli-runtime/managedApplicationGraph-B08jb3jq.js +1130 -0
  469. package/dist/cli-runtime/managedToolContracts-D60QmIYj.js +99 -0
  470. package/dist/cli-runtime/mcpDoctor.js +359 -0
  471. package/dist/cli-runtime/mcpStartupPolicy-CVVSOmRc.js +21 -0
  472. package/dist/cli-runtime/native__NativeMacOSProvider-YBTvUeJO.js +4875 -0
  473. package/dist/cli-runtime/officialToolContracts-CCFF0an9.js +1501 -0
  474. package/dist/cli-runtime/propertyListKeys-G8e74YWb.js +248 -0
  475. package/dist/cli-runtime/providerAdapterError-DAjhICdr.js +25 -0
  476. package/dist/cli-runtime/providerCleanupError-Ceq8f0wK.js +27 -0
  477. package/dist/cli-runtime/providerIdentities-Ao1XTvwx.js +31 -0
  478. package/dist/cli-runtime/providerStartupTimeout-B2tF2LtZ.js +17 -0
  479. package/dist/cli-runtime/readFileHandleChunks-dp60iZ6v.js +38 -0
  480. package/dist/cli-runtime/reconstructionObligationLedgerSchemas-Bao0xMr-.js +19478 -0
  481. package/dist/cli-runtime/rolldown-runtime-DXoylpqc.js +121 -0
  482. package/dist/cli-runtime/runtimeVersion-CMGd0bDu.js +23 -0
  483. package/dist/cli-runtime/safeJson-DKKACtdy.js +25 -0
  484. package/dist/cli-runtime/scanCanonical-KP4T9jSl.js +2724 -0
  485. package/dist/cli-runtime/snapshotEnvironment-D_tWyOub.js +813 -0
  486. package/dist/cli-runtime/toolContracts-D2FOG_Nb.js +3721 -0
  487. package/dist/cli-runtime/toolOutputSchemaGroups-DRiYs1je.js +12070 -0
  488. package/dist/cli-runtime/workflowInputError-n8Oo-bLA.js +26 -0
  489. package/dist/cli.js +44 -5
  490. package/dist/cliBrowserScenarioCommands.js +41 -5
  491. package/dist/cliCommandNames.js +80 -0
  492. package/dist/cliEvidenceCommands.js +0 -1
  493. package/dist/cliJavaScriptRuntimeCommands.js +16 -14
  494. package/dist/cliJsonInput.js +14 -6
  495. package/dist/cliLogging.js +50 -14
  496. package/dist/cliObservationOptions.js +9 -0
  497. package/dist/cliOutput.js +38 -5
  498. package/dist/composition/adb.js +3 -0
  499. package/dist/composition/apktool.js +3 -0
  500. package/dist/composition/binary.js +4 -0
  501. package/dist/composition/binaryDiagnostics.js +4 -0
  502. package/dist/composition/captures.js +3 -0
  503. package/dist/composition/directAnalysis.js +36 -11
  504. package/dist/composition/electronFuses.js +4 -0
  505. package/dist/composition/evm.js +12 -0
  506. package/dist/composition/flutter.js +3 -0
  507. package/dist/composition/go.js +4 -0
  508. package/dist/composition/javascriptAnalysisWorkerProcess.js +49 -0
  509. package/dist/composition/jeb.js +35 -0
  510. package/dist/composition/pcap.js +3 -0
  511. package/dist/composition/resolveWindowsProviderExecutable.js +61 -0
  512. package/dist/composition/reverseEngineering.js +29 -0
  513. package/dist/composition/rust.js +4 -0
  514. package/dist/composition/signals.js +3 -0
  515. package/dist/composition/sqlite.js +4 -0
  516. package/dist/composition/wasm.js +22 -0
  517. package/dist/composition/webNetworkCaptures.js +7 -2
  518. package/dist/config/environment.js +55 -4
  519. package/dist/config/ghidraDisabledAnalyzers.js +25 -0
  520. package/dist/config/ghidraLanguageOverride.js +9 -0
  521. package/dist/config/homeDirectory.js +9 -6
  522. package/dist/config/mcpInputSchemaProfile.js +31 -0
  523. package/dist/config/mcpOutputSchemaProfile.js +22 -0
  524. package/dist/config/parseConfig.js +36 -19
  525. package/dist/config/parsers.js +4 -3
  526. package/dist/config/{ghidraStartupTimeout.js → providerStartupTimeout.js} +7 -3
  527. package/dist/contracts/adb/adbToolContracts.js +353 -0
  528. package/dist/contracts/advertisedInputExamples.js +48 -0
  529. package/dist/contracts/analysisDetail.js +13 -0
  530. package/dist/contracts/analysisViewApiSurfaceExample.js +68 -0
  531. package/dist/contracts/analysisViewToolContracts.js +39 -3
  532. package/dist/contracts/android/androidToolContracts.js +17 -8
  533. package/dist/contracts/apktool/apktoolToolContracts.js +33 -0
  534. package/dist/contracts/applicationToolContracts.js +17 -2
  535. package/dist/contracts/artifactToolContracts.js +21 -6
  536. package/dist/contracts/browserToolContracts.js +2 -1
  537. package/dist/contracts/captures/captureToolContracts.js +42 -0
  538. package/dist/contracts/compactInputSchema.js +276 -0
  539. package/dist/contracts/cutterToolContracts.js +84 -0
  540. package/dist/contracts/enhancedToolContracts.js +2 -2
  541. package/dist/contracts/evm/evmToolContracts.js +30 -15
  542. package/dist/contracts/firmware/firmwareToolContracts.js +1 -1
  543. package/dist/contracts/flutter/flutterToolContracts.js +47 -0
  544. package/dist/contracts/fridaRemoteAddress.js +23 -0
  545. package/dist/contracts/fridaToolContracts.js +273 -0
  546. package/dist/contracts/functionComparisonExample.js +12 -1
  547. package/dist/contracts/functionWorkflowToolContracts.js +1 -1
  548. package/dist/contracts/gdbToolContracts.js +103 -0
  549. package/dist/contracts/go/goToolContracts.js +20 -0
  550. package/dist/contracts/hopperMemoryContracts.js +15 -0
  551. package/dist/contracts/inputSchemaPresentation.js +91 -24
  552. package/dist/contracts/investigationExamples.js +1 -0
  553. package/dist/contracts/javascript/electronToolContracts.js +40 -3
  554. package/dist/contracts/javascript/javascriptRecoveryToolContracts.js +13 -1
  555. package/dist/contracts/jeb/jebToolContracts.js +64 -0
  556. package/dist/contracts/managed/managedToolContracts.js +43 -4
  557. package/dist/contracts/managed/managedWorkflowExamples.js +7 -1
  558. package/dist/contracts/managed/managedWorkflowToolContracts.js +4 -30
  559. package/dist/contracts/mobileApplicationGraphExamples.js +12 -0
  560. package/dist/contracts/native/binaryDiagnosticsToolContracts.js +27 -4
  561. package/dist/contracts/native/nativeToolContracts.js +10 -6
  562. package/dist/contracts/officialToolContracts.js +9 -9
  563. package/dist/contracts/pcap/pcapToolContracts.js +33 -0
  564. package/dist/contracts/providerSelection.js +1 -0
  565. package/dist/contracts/reconstructionReadinessExample.js +126 -119
  566. package/dist/contracts/reverseEngineeringToolContracts.js +52 -0
  567. package/dist/contracts/rizinDebugToolContracts.js +96 -0
  568. package/dist/contracts/rust/rustToolContracts.js +20 -0
  569. package/dist/contracts/sessionLifecycleInputs.js +34 -2
  570. package/dist/contracts/sessionToolContracts.js +4 -4
  571. package/dist/contracts/sessionToolSchemas.js +20 -2
  572. package/dist/contracts/signals/signalToolContracts.js +40 -0
  573. package/dist/contracts/sqlite/sqliteToolContracts.js +36 -0
  574. package/dist/contracts/toolContractExamples.js +35 -0
  575. package/dist/contracts/toolContractTypes.js +5 -0
  576. package/dist/contracts/toolContracts.js +32 -0
  577. package/dist/contracts/toolEffects.js +414 -8
  578. package/dist/contracts/toolOutputSchemaGroups.js +78 -33
  579. package/dist/contracts/toolOutputSchemaPrimitives.js +111 -10
  580. package/dist/contracts/toolSchemaMetadata.js +98 -9
  581. package/dist/contracts/unknownContractExamples.js +1 -1
  582. package/dist/contracts/wasm/wasmComparisonContracts.js +52 -0
  583. package/dist/contracts/wasm/wasmToolContracts.js +33 -0
  584. package/dist/contracts/webNetworkCaptureToolContracts.js +15 -4
  585. package/dist/cutter/CutterBridgeClient.js +621 -0
  586. package/dist/cutter/CutterBridgeService.js +139 -0
  587. package/dist/doctorRuntime.js +20 -8
  588. package/dist/domain/adb/adbDeviceAnalysis.js +605 -0
  589. package/dist/domain/analysisErrorBase.js +20 -0
  590. package/dist/domain/analysisErrorCleanup.js +29 -0
  591. package/dist/domain/analysisErrorCore.js +19 -0
  592. package/dist/domain/analysisErrorPresentation.js +75 -22
  593. package/dist/domain/analysisErrorProjection.js +35 -13
  594. package/dist/domain/analysisProfile.js +7 -3
  595. package/dist/domain/analysisSnapshot.js +313 -185
  596. package/dist/domain/analysisView/WebNetworkApiSurfaceAccumulator.js +414 -0
  597. package/dist/domain/analysisView/analysisView.js +417 -45
  598. package/dist/domain/analysisView/analysisViewCoverage.js +32 -0
  599. package/dist/domain/analysisView/analysisViewErrors.js +4 -0
  600. package/dist/domain/analysisView/analysisViewParent.js +12 -0
  601. package/dist/domain/analysisView/analysisViewText.js +29 -0
  602. package/dist/domain/analysisView/androidPackageView.js +102 -0
  603. package/dist/domain/analysisView/artifactInventoryView.js +140 -0
  604. package/dist/domain/analysisView/binaryLayoutView.js +13 -4
  605. package/dist/domain/analysisView/dartAotView.js +93 -0
  606. package/dist/domain/analysisView/evmInterfaceView.js +105 -0
  607. package/dist/domain/analysisView/interfaceBuilderView.js +182 -0
  608. package/dist/domain/analysisView/javascriptApplicationView.js +29 -26
  609. package/dist/domain/analysisView/machoView.js +186 -0
  610. package/dist/domain/analysisView/managedArtifactView.js +108 -0
  611. package/dist/domain/analysisView/managedMemberView.js +209 -0
  612. package/dist/domain/analysisView/nativeFunctionView.js +150 -0
  613. package/dist/domain/analysisView/pcapCaptureView.js +264 -0
  614. package/dist/domain/analysisView/qlogCaptureView.js +198 -0
  615. package/dist/domain/analysisView/wasmArtifactView.js +162 -0
  616. package/dist/domain/analysisView/webNetworkApiSurfaceView.js +123 -0
  617. package/dist/domain/analysisView/webNetworkCaptureView.js +388 -0
  618. package/dist/domain/android/androidAnalysis.js +36 -2
  619. package/dist/domain/android/androidApplication.js +57 -80
  620. package/dist/domain/apktool/apktoolResourceAnalysis.js +89 -0
  621. package/dist/domain/apple/appleApplication.js +71 -52
  622. package/dist/domain/apple/appleArchiveFormat.js +184 -0
  623. package/dist/domain/apple/appleAssetCatalog.js +15 -0
  624. package/dist/domain/apple/appleBundleAnatomy.js +96 -29
  625. package/dist/domain/apple/dyldPaths.js +18 -3
  626. package/dist/domain/apple/dylibResolution.js +21 -11
  627. package/dist/domain/apple/dylibResolutionFindings.js +8 -9
  628. package/dist/domain/apple/interfaceBuilderGraph.js +72 -45
  629. package/dist/domain/apple/interfaceBuilderKeyedArchive.js +38 -9
  630. package/dist/domain/apple/machoContainer.js +120 -8
  631. package/dist/domain/apple/machoCpuIdentity.js +4 -0
  632. package/dist/domain/apple/plistValue.js +6 -1
  633. package/dist/domain/artifactComparison.js +130 -25
  634. package/dist/domain/artifactDecompressionBudget.js +26 -0
  635. package/dist/domain/artifactGraph.js +28 -9
  636. package/dist/domain/artifactIdentity.js +33 -2
  637. package/dist/domain/artifactInspection.js +47 -45
  638. package/dist/domain/artifactIntegrityPolicy.js +10 -0
  639. package/dist/domain/artifactInventoryEvidence.js +148 -51
  640. package/dist/domain/artifactPathSyntax.js +1 -1
  641. package/dist/domain/binaryTarget.js +253 -80
  642. package/dist/domain/binaryTargetTypes.js +21 -1
  643. package/dist/domain/browserNetworkEvidence.js +4 -0
  644. package/dist/domain/browserObservation.js +88 -29
  645. package/dist/domain/browserObservationSchemas.js +12 -5
  646. package/dist/domain/browserScenarioCapture.js +2 -1
  647. package/dist/domain/browserScenarioCaptureValues.js +26 -2
  648. package/dist/domain/browserScenarioDiff.js +120 -11
  649. package/dist/domain/browserScenarioDiffEvidence.js +46 -13
  650. package/dist/domain/browserScenarioDiffValues.js +10 -3
  651. package/dist/domain/browserScenarioNetworkComparison.js +158 -0
  652. package/dist/domain/browserScenarioNormalization.js +10 -13
  653. package/dist/domain/browserScenarioValues.js +2 -12
  654. package/dist/domain/browserSession.js +2 -2
  655. package/dist/domain/bundleComparison.js +1 -5
  656. package/dist/domain/callPath.js +40 -3
  657. package/dist/domain/canonicalJsonDigestSteps.js +34 -12
  658. package/dist/domain/captures/packetCapture.js +138 -0
  659. package/dist/domain/captures/packetFields.js +81 -0
  660. package/dist/domain/changedBehavior.js +43 -41
  661. package/dist/domain/compactStringIdentity.js +9 -0
  662. package/dist/domain/comparisonSourceEvidence.js +6 -0
  663. package/dist/domain/dosCom.js +2 -2
  664. package/dist/domain/dosMz.js +52 -14
  665. package/dist/domain/electron/electronFuses.js +360 -0
  666. package/dist/domain/elfFixedHeader.js +42 -0
  667. package/dist/domain/evidence.js +104 -38
  668. package/dist/domain/evidenceBundle.js +58 -20
  669. package/dist/domain/evidenceErrors.js +5 -0
  670. package/dist/domain/evidenceRecordSummary.js +144 -0
  671. package/dist/domain/evm/evmInterface.js +18 -4
  672. package/dist/domain/evm/solidityMetadata.js +70 -0
  673. package/dist/domain/explicitSensitiveFailure.js +42 -24
  674. package/dist/domain/firmware/firmwareAnalysis.js +29 -0
  675. package/dist/domain/flutter/flutterBuildAnalysis.js +141 -0
  676. package/dist/domain/functionCallCoverage.js +60 -0
  677. package/dist/domain/functionComparisonDimensions.js +101 -10
  678. package/dist/domain/functionComparisonNormalization.js +66 -10
  679. package/dist/domain/functionComparisonResults.js +7 -6
  680. package/dist/domain/functionComparisonSchemas.js +14 -3
  681. package/dist/domain/functionDossierEvidence.js +3 -0
  682. package/dist/domain/go/goBinary.js +96 -0
  683. package/dist/domain/harmony/harmonyApplication.js +156 -0
  684. package/dist/domain/hopperErrors.js +15 -16
  685. package/dist/domain/hopperPublisher.js +12 -0
  686. package/dist/domain/hopperValues.js +112 -34
  687. package/dist/domain/inputIssueProjection.js +16 -1
  688. package/dist/domain/javascript/electronObservation.js +4 -1
  689. package/dist/domain/javascript/electronStaticAnalysisBrowser.js +24 -24
  690. package/dist/domain/javascript/electronStaticAnalysisIpc.js +13 -20
  691. package/dist/domain/javascript/electronStaticAnalysisNative.js +85 -41
  692. package/dist/domain/javascript/electronStaticAnalysisValues.js +30 -8
  693. package/dist/domain/javascript/electronWrappedCallPaths.js +498 -0
  694. package/dist/domain/javascript/htmlArtifactReferences.js +94 -4
  695. package/dist/domain/javascript/javascriptAnalysisResourceControls.js +65 -0
  696. package/dist/domain/javascript/javascriptApplicationAnalysis.js +7 -1
  697. package/dist/domain/javascript/javascriptApplicationChangeGraph.js +13 -8
  698. package/dist/domain/javascript/javascriptApplicationEvidenceSchemas.js +1 -1
  699. package/dist/domain/javascript/javascriptApplicationGraph.js +96 -19
  700. package/dist/domain/javascript/javascriptApplicationGraphSchemas.js +1 -0
  701. package/dist/domain/javascript/javascriptApplicationProjectionResources.js +43 -0
  702. package/dist/domain/javascript/javascriptApplicationVersionItems.js +28 -12
  703. package/dist/domain/javascript/javascriptApplicationVersionKeys.js +40 -19
  704. package/dist/domain/javascript/javascriptArtifactFiles.js +2 -1
  705. package/dist/domain/javascript/javascriptAstFingerprint.js +100 -39
  706. package/dist/domain/javascript/javascriptAstValues.js +81 -0
  707. package/dist/domain/javascript/javascriptBootstrap.js +94 -0
  708. package/dist/domain/javascript/javascriptBootstrapIntegrity.js +372 -0
  709. package/dist/domain/javascript/javascriptBuiltinResourceMethods.js +8 -0
  710. package/dist/domain/javascript/javascriptBundledRequireOrigin.js +291 -0
  711. package/dist/domain/javascript/javascriptContextBridgeExposure.js +23 -0
  712. package/dist/domain/javascript/javascriptElectronMemberWrites.js +114 -0
  713. package/dist/domain/javascript/javascriptExportShapeComparisonSchemas.js +6 -5
  714. package/dist/domain/javascript/javascriptExportShapeVariants.js +1 -1
  715. package/dist/domain/javascript/javascriptFeatureSeed.js +33 -16
  716. package/dist/domain/javascript/javascriptFeatureTrace.js +9 -3
  717. package/dist/domain/javascript/javascriptFeatureTraceSchemas.js +42 -11
  718. package/dist/domain/javascript/javascriptIntrinsicInvocation.js +132 -0
  719. package/dist/domain/javascript/javascriptModuleDeclaration.js +28 -0
  720. package/dist/domain/javascript/javascriptModuleInterop.js +618 -0
  721. package/dist/domain/javascript/javascriptModuleResolutionMode.js +18 -0
  722. package/dist/domain/javascript/javascriptModuleSemanticIr.js +15 -0
  723. package/dist/domain/javascript/javascriptModuleSpecifier.js +5 -0
  724. package/dist/domain/javascript/javascriptNativeHandoff.js +6 -2
  725. package/dist/domain/javascript/javascriptPackageImportAliases.js +58 -0
  726. package/dist/domain/javascript/javascriptRecovery.js +12 -5
  727. package/dist/domain/javascript/javascriptRpcEndpoints.js +331 -0
  728. package/dist/domain/javascript/javascriptRuntimeLoadState.js +12 -3
  729. package/dist/domain/javascript/javascriptRuntimeObservation.js +4 -1
  730. package/dist/domain/javascript/javascriptRuntimeReconciliationCaptureParsing.js +10 -4
  731. package/dist/domain/javascript/javascriptRuntimeReconciliationGraph.js +7 -2
  732. package/dist/domain/javascript/javascriptRuntimeReconciliationMatching.js +15 -2
  733. package/dist/domain/javascript/javascriptRuntimeReconciliationResult.js +0 -1
  734. package/dist/domain/javascript/javascriptRuntimeReconciliationSchemas.js +5 -4
  735. package/dist/domain/javascript/javascriptRuntimeStaticCandidates.js +121 -22
  736. package/dist/domain/javascript/javascriptSemanticAmbientWrites.js +251 -0
  737. package/dist/domain/javascript/javascriptSemanticAnalysis.js +493 -104
  738. package/dist/domain/javascript/javascriptSemanticAsyncEffects.js +17 -34
  739. package/dist/domain/javascript/javascriptSemanticCallResolution.js +4 -3
  740. package/dist/domain/javascript/javascriptSemanticCallableResults.js +42 -0
  741. package/dist/domain/javascript/javascriptSemanticCallableStack.js +52 -0
  742. package/dist/domain/javascript/javascriptSemanticCalls.js +14 -12
  743. package/dist/domain/javascript/javascriptSemanticChildProcesses.js +42 -55
  744. package/dist/domain/javascript/javascriptSemanticDataEffectHelpers.js +428 -32
  745. package/dist/domain/javascript/javascriptSemanticDataEffects.js +14 -20
  746. package/dist/domain/javascript/javascriptSemanticDependencies.js +69 -0
  747. package/dist/domain/javascript/javascriptSemanticDerivedAnalysis.js +15 -4
  748. package/dist/domain/javascript/javascriptSemanticFileProjection.js +1 -0
  749. package/dist/domain/javascript/javascriptSemanticFingerprints.js +51 -53
  750. package/dist/domain/javascript/javascriptSemanticGraph.js +74 -24
  751. package/dist/domain/javascript/javascriptSemanticGraphSchemas.js +2 -11
  752. package/dist/domain/javascript/javascriptSemanticIterationSources.js +41 -8
  753. package/dist/domain/javascript/javascriptSemanticMemberMutations.js +538 -151
  754. package/dist/domain/javascript/javascriptSemanticMutationInitializers.js +199 -3
  755. package/dist/domain/javascript/javascriptSemanticMutationValues.js +78 -35
  756. package/dist/domain/javascript/javascriptSemanticObjectReferences.js +671 -0
  757. package/dist/domain/javascript/javascriptSemanticObjects.js +27 -17
  758. package/dist/domain/javascript/javascriptSemanticProjection.js +202 -56
  759. package/dist/domain/javascript/javascriptSemanticPromises.js +6 -9
  760. package/dist/domain/javascript/javascriptSemanticPropertyPaths.js +77 -0
  761. package/dist/domain/javascript/javascriptSemanticProvenance.js +5 -1
  762. package/dist/domain/javascript/javascriptSemanticQuery.js +34 -31
  763. package/dist/domain/javascript/javascriptSemanticQueryIdentity.js +1 -3
  764. package/dist/domain/javascript/javascriptSemanticReferenceSources.js +25 -0
  765. package/dist/domain/javascript/javascriptSemanticRequireOrigin.js +331 -8
  766. package/dist/domain/javascript/javascriptSemanticResources.js +6 -40
  767. package/dist/domain/javascript/javascriptSemanticReturnedReferences.js +233 -0
  768. package/dist/domain/javascript/javascriptSemanticReturns.js +49 -52
  769. package/dist/domain/javascript/javascriptSemanticState.js +61 -4
  770. package/dist/domain/javascript/javascriptSemanticTraversal.js +25 -5
  771. package/dist/domain/javascript/javascriptSemanticValues.js +260 -35
  772. package/dist/domain/javascript/javascriptSourceAnalysis.js +1 -0
  773. package/dist/domain/javascript/javascriptSourceMapPaths.js +44 -17
  774. package/dist/domain/javascript/javascriptSourceParser.js +72 -3
  775. package/dist/domain/javascript/javascriptSourceSelection.js +11 -0
  776. package/dist/domain/javascript/javascriptStaticAnalysis.js +72 -26
  777. package/dist/domain/javascript/javascriptStaticAnalysisBundler.js +100 -24
  778. package/dist/domain/javascript/javascriptStaticAnalysisCalls.js +271 -47
  779. package/dist/domain/javascript/javascriptStaticAnalysisFindings.js +8 -4
  780. package/dist/domain/javascript/javascriptStaticAnalysisHelpers.js +166 -56
  781. package/dist/domain/javascript/javascriptStaticAnalysisState.js +2 -0
  782. package/dist/domain/javascript/javascriptStaticAnalysisTypes.js +2 -1
  783. package/dist/domain/javascript/javascriptSymbolicBindings.js +836 -0
  784. package/dist/domain/javascript/javascriptSymbolicControlFlow.js +40 -0
  785. package/dist/domain/javascript/javascriptSymbolicValues.js +34 -0
  786. package/dist/domain/javascript/sourceToBundleComparison.js +3 -1
  787. package/dist/domain/javascript/sourceToBundleComparisonSchemas.js +2 -0
  788. package/dist/domain/javascript/sourceToBundleSignals.js +47 -13
  789. package/dist/domain/jeb/jebAnalysis.js +114 -0
  790. package/dist/domain/jsonShape.js +63 -52
  791. package/dist/domain/jsonValue.js +40 -12
  792. package/dist/domain/localPath.js +6 -3
  793. package/dist/domain/managed/managedApplicationGraph.js +42 -0
  794. package/dist/domain/managed/managedApplicationGraphCoverage.js +12 -2
  795. package/dist/domain/managed/managedApplicationGraphNodes.js +32 -23
  796. package/dist/domain/managed/managedArtifact.js +52 -1
  797. package/dist/domain/managed/managedInspectionEvidence.js +12 -0
  798. package/dist/domain/managed/managedMemberComparison.js +3 -0
  799. package/dist/domain/managed/managedMemberComparisonCoverage.js +23 -3
  800. package/dist/domain/managed/managedMemberComparisonItems.js +23 -19
  801. package/dist/domain/managed/managedMemberComparisonMatch.js +209 -18
  802. package/dist/domain/managed/managedNativeVerificationMatch.js +49 -26
  803. package/dist/domain/managed/managedNativeVerificationSchemas.js +13 -2
  804. package/dist/domain/managed/managedReconstruction.js +5 -8
  805. package/dist/domain/mobileApplicationGraphProjection.js +80 -0
  806. package/dist/domain/native/addressCoordinate.js +11 -0
  807. package/dist/domain/native/binaryLayout.js +2 -4
  808. package/dist/domain/native/bytePattern.js +100 -0
  809. package/dist/domain/native/nativeAotPe.js +1408 -0
  810. package/dist/domain/native/nativeInspection.js +38 -4
  811. package/dist/domain/native/nativeInstruction.js +38 -2
  812. package/dist/domain/native/nativeInvestigationGraph.js +9 -5
  813. package/dist/domain/native/nativeLoadImage.js +19 -1
  814. package/dist/domain/native/nativeMetadataRecovery.js +79 -6
  815. package/dist/domain/native/nativeUiObservation.js +5 -6
  816. package/dist/domain/native/objcSwiftMetadata.js +4 -1
  817. package/dist/domain/native/peResources.js +100 -0
  818. package/dist/domain/native/recordedCrash.js +79 -10
  819. package/dist/domain/nativeConvention.js +33 -0
  820. package/dist/domain/offsetDateTime.js +60 -0
  821. package/dist/domain/pcap/pcapAnalysis.js +91 -0
  822. package/dist/domain/pcap/pcapEvidence.js +15 -0
  823. package/dist/domain/peMachine.js +36 -0
  824. package/dist/domain/pngHeader.js +18 -0
  825. package/dist/domain/process/processCapture.js +91 -1
  826. package/dist/domain/process/processCaptureCoverage.js +26 -3
  827. package/dist/domain/process/processCaptureExample.js +26 -0
  828. package/dist/domain/process/processCaptureValidation.js +112 -8
  829. package/dist/domain/process/processComparison.js +41 -13
  830. package/dist/domain/process/processScenario.js +66 -7
  831. package/dist/domain/process/processTraceEvaluation.js +54 -50
  832. package/dist/domain/process/processTraceSpecification.js +243 -89
  833. package/dist/domain/propertyListKeys.js +214 -12
  834. package/dist/domain/propertyListXmlText.js +20 -4
  835. package/dist/domain/providerAdapterError.js +0 -5
  836. package/dist/domain/providerConfigurationRefusal.js +12 -0
  837. package/dist/domain/providerSelectionError.js +2 -1
  838. package/dist/domain/qlogCapture.js +62 -0
  839. package/dist/domain/rawBinary.js +96 -0
  840. package/dist/domain/reconstructionCoverage.js +5 -1
  841. package/dist/domain/reconstructionCoverageEvaluation.js +18 -15
  842. package/dist/domain/reconstructionCoverageVerifierResults.js +35 -0
  843. package/dist/domain/reconstructionObligationLedgerIntegrity.js +114 -0
  844. package/dist/domain/reconstructionObligationLedgerSchemas.js +104 -1
  845. package/dist/domain/reconstructionReadiness.js +4 -8
  846. package/dist/domain/reconstructionReadinessJourneyFindings.js +4 -1
  847. package/dist/domain/reconstructionUnknowns.js +9 -1
  848. package/dist/domain/reconstructionVerification.js +54 -25
  849. package/dist/domain/recordedTransportUrl.js +59 -0
  850. package/dist/domain/referenceSourceClassification.js +27 -23
  851. package/dist/domain/referenceSourceGraph.js +70 -23
  852. package/dist/domain/referenceSourceImportParsing.js +29 -16
  853. package/dist/domain/referenceSourcePathIdentity.js +32 -0
  854. package/dist/domain/referenceSourceRequireBindings.js +130 -0
  855. package/dist/domain/referenceSourceSummary.js +92 -0
  856. package/dist/domain/relationshipCoverage.js +44 -0
  857. package/dist/domain/residualUnknown.js +93 -26
  858. package/dist/domain/reverseEngineering.js +31 -0
  859. package/dist/domain/runtimeVersion.js +8 -0
  860. package/dist/domain/rust/rustBinary.js +200 -0
  861. package/dist/domain/signals/annotationTextWindow.js +31 -0
  862. package/dist/domain/signals/signalDecoders.js +69 -0
  863. package/dist/domain/signals/signalRecording.js +115 -0
  864. package/dist/domain/sourceMapContents.js +10 -3
  865. package/dist/domain/sourceMapEnvelope.js +17 -11
  866. package/dist/domain/sqlite/sqliteDatabase.js +188 -0
  867. package/dist/domain/staticRuntimeCorrelation.js +7 -9
  868. package/dist/domain/swiftSymbolClassification.js +17 -0
  869. package/dist/domain/symbolAnalysis.js +16 -4
  870. package/dist/domain/urlComponents.js +6 -0
  871. package/dist/domain/wasm/wasmArtifact.js +119 -0
  872. package/dist/domain/wasm/wasmInterface.js +89 -0
  873. package/dist/domain/webBundleAnalysis.js +14 -3
  874. package/dist/domain/webBundleAnalyzerAst.js +7 -2
  875. package/dist/domain/webBundleAnalyzerInspection.js +68 -40
  876. package/dist/domain/webBundleAnalyzerResult.js +18 -6
  877. package/dist/domain/webCaptureDiff.js +233 -34
  878. package/dist/domain/webCaptureFrameComparison.js +49 -0
  879. package/dist/domain/webMcpDiscovery.js +5 -2
  880. package/dist/domain/webModuleImports.js +22 -27
  881. package/dist/domain/webModuleTrace.js +3 -8
  882. package/dist/domain/webNetworkCapture.js +101 -39
  883. package/dist/domain/webNetworkCaptureCoordinates.js +21 -0
  884. package/dist/domain/webRuntime.js +0 -1
  885. package/dist/domain/webScreenshot.js +2 -2
  886. package/dist/domain/webScriptArtifacts.js +2 -4
  887. package/dist/domain/webScriptExport.js +6 -8
  888. package/dist/domain/webScriptExportError.js +10 -4
  889. package/dist/domain/webScriptExportPlan.js +9 -15
  890. package/dist/domain/webSourceLocation.js +20 -9
  891. package/dist/domain/zipPackageFormat.js +31 -2
  892. package/dist/domain/zodCollectionSteps.js +24 -0
  893. package/dist/dotnet/ManagedArtifactInspector.js +81 -54
  894. package/dist/dotnet/ManagedDecodeBudget.js +138 -0
  895. package/dist/dotnet/ManagedMemberInspector.js +113 -26
  896. package/dist/dotnet/ManagedMemberInspectorCore.js +356 -140
  897. package/dist/dotnet/ManagedMemberInstructionDecoder.js +112 -38
  898. package/dist/dotnet/ManagedMemberOwnership.js +65 -0
  899. package/dist/dotnet/ManagedMemberPointers.js +69 -0
  900. package/dist/dotnet/ManagedMemberRows.js +182 -44
  901. package/dist/dotnet/ManagedMetadataHeaps.js +123 -27
  902. package/dist/dotnet/ManagedMetadataInventory.js +5 -5
  903. package/dist/dotnet/ManagedMetadataInventoryRows.js +56 -63
  904. package/dist/dotnet/ManagedMetadataLayout.js +19 -5
  905. package/dist/dotnet/ManagedMetadataRowSizes.js +1 -1
  906. package/dist/dotnet/ManagedMethodBodyReader.js +34 -11
  907. package/dist/dotnet/ManagedMethodSpecs.js +78 -0
  908. package/dist/dotnet/ManagedNativeBoundaryHelpers.js +5 -4
  909. package/dist/dotnet/ManagedNativeBoundaryInspector.js +52 -44
  910. package/dist/dotnet/ManagedPeReader.js +96 -52
  911. package/dist/dotnet/ManagedReaderFailure.js +11 -1
  912. package/dist/dotnet/ManagedSnapshot.js +88 -0
  913. package/dist/dotnet/ManagedStaticProvider.js +57 -35
  914. package/dist/dotnet/ManagedTypeMemberLists.js +105 -0
  915. package/dist/dotnet/ManagedTypeNames.js +98 -0
  916. package/dist/dotnet/ManagedUserStrings.js +75 -0
  917. package/dist/electron/ElectronFusePath.js +247 -0
  918. package/dist/electron/ElectronFuseProvider.js +113 -0
  919. package/dist/electron/ElectronFuseReader.js +317 -0
  920. package/dist/evaluation/AgentEvaluationFixtures.js +194 -11
  921. package/dist/evaluation/AgentEvaluationReport.js +9 -5
  922. package/dist/evaluation/CodexAgentEval.js +58 -49
  923. package/dist/evaluation/KnownAnswerEvaluation.js +126 -57
  924. package/dist/evm/EvmoleFailures.js +19 -16
  925. package/dist/evm/EvmoleInterfaceAdapter.js +5 -1
  926. package/dist/evm/EvmoleInterfaceProvider.js +198 -23
  927. package/dist/evm/EvmoleInterfaceWorker.js +2 -0
  928. package/dist/evm/SolidityMetadata.js +139 -0
  929. package/dist/filesystem/OwnedDirectoryHandle.js +29 -0
  930. package/dist/filesystem/OwnedFileHandle.js +36 -0
  931. package/dist/filesystem/OwnedStagedOutput.js +138 -0
  932. package/dist/filesystem/RegularFile.js +81 -5
  933. package/dist/filesystem/StableFileHash.js +46 -0
  934. package/dist/filesystem/readFileHandleChunks.js +35 -0
  935. package/dist/firmware/FirmwareCommand.js +27 -5
  936. package/dist/firmware/FirmwareFiles.js +18 -7
  937. package/dist/firmware/FirmwareProvider.js +158 -32
  938. package/dist/firmware/FirmwarePublication.js +242 -4
  939. package/dist/firmware/FirmwareRelease.js +1 -0
  940. package/dist/firmware/FirmwareReports.js +202 -12
  941. package/dist/flutter/DartElf.js +418 -0
  942. package/dist/flutter/ElfBuildId.js +137 -0
  943. package/dist/flutter/ElfLoadMap.js +91 -0
  944. package/dist/flutter/FlutterBuildProvider.js +826 -0
  945. package/dist/flutter/FlutterPayloadScan.js +180 -0
  946. package/dist/frida/FridaInstrumentationManager.js +1104 -0
  947. package/dist/gdb/GdbSessionManager.js +1451 -0
  948. package/dist/generatedPackageMetadata.js +2 -2
  949. package/dist/ghidra/GhidraAnalysisProfile.js +175 -6
  950. package/dist/ghidra/GhidraAnalysisSeeds.js +211 -0
  951. package/dist/ghidra/GhidraClient.js +208 -29
  952. package/dist/ghidra/GhidraDiagnostics.js +18 -8
  953. package/dist/ghidra/GhidraDoctor.js +15 -12
  954. package/dist/ghidra/GhidraFunctionValues.js +73 -2
  955. package/dist/ghidra/GhidraInstallation.js +216 -20
  956. package/dist/ghidra/GhidraInstallationPolicy.js +79 -29
  957. package/dist/ghidra/GhidraInventoryValues.js +53 -1
  958. package/dist/ghidra/GhidraJavaLaunch.js +91 -10
  959. package/dist/ghidra/GhidraJavaProperties.js +117 -0
  960. package/dist/ghidra/GhidraLanguageCatalog.js +169 -0
  961. package/dist/ghidra/GhidraLauncher.js +306 -88
  962. package/dist/ghidra/GhidraLoadImageAttest.js +74 -7
  963. package/dist/ghidra/GhidraLoadImageValues.js +72 -0
  964. package/dist/ghidra/GhidraMipsProfile.js +315 -0
  965. package/dist/ghidra/GhidraPeProfile.js +21 -0
  966. package/dist/ghidra/GhidraPowerPcProfile.js +51 -0
  967. package/dist/ghidra/GhidraProvider.js +106 -20
  968. package/dist/ghidra/GhidraProviderCapabilities.js +30 -19
  969. package/dist/ghidra/GhidraProviderClient.js +520 -56
  970. package/dist/ghidra/GhidraPspExtension.js +140 -0
  971. package/dist/ghidra/GhidraPspProfile.js +59 -0
  972. package/dist/ghidra/GhidraRawBinaryLanguage.js +40 -0
  973. package/dist/ghidra/GhidraRiscvProfile.js +100 -0
  974. package/dist/ghidra/GhidraSessionError.js +155 -11
  975. package/dist/ghidra/GhidraSessionValues.js +75 -2
  976. package/dist/ghidra/GhidraTransport.js +2 -1
  977. package/dist/go/GoBinaryContainer.js +140 -0
  978. package/dist/go/GoBinaryImage.js +210 -0
  979. package/dist/go/GoBinaryProvider.js +151 -0
  980. package/dist/go/GoElfImage.js +211 -0
  981. package/dist/go/GoMachoImage.js +164 -0
  982. package/dist/go/GoModuleText.js +217 -0
  983. package/dist/go/GoPeImage.js +124 -0
  984. package/dist/hopper/BridgeLauncher.js +35 -2
  985. package/dist/hopper/HopperAnalysisProfile.js +21 -9
  986. package/dist/hopper/HopperCleanup.js +15 -3
  987. package/dist/hopper/HopperClient.js +203 -42
  988. package/dist/hopper/HopperMacPublisher.js +29 -0
  989. package/dist/hopper/HopperMachOImage.js +61 -27
  990. package/dist/hopper/HopperProcessDiagnostic.js +27 -0
  991. package/dist/hopper/HopperProvider.js +68 -26
  992. package/dist/hopper/HopperProviderCapabilities.js +7 -3
  993. package/dist/hopper/HopperRequestQueue.js +17 -5
  994. package/dist/hopper/HopperSessionValues.js +10 -1
  995. package/dist/hopper/HopperTargetLease.js +66 -19
  996. package/dist/ida/IdaBusyHealth.js +44 -0
  997. package/dist/ida/IdaCallGraph.js +134 -0
  998. package/dist/ida/IdaConfiguration.js +7 -2
  999. package/dist/ida/IdaDiagnosticRedactor.js +199 -0
  1000. package/dist/ida/IdaDiagnosticWriter.js +62 -0
  1001. package/dist/ida/IdaDoctor.js +7 -5
  1002. package/dist/ida/IdaJsonDiagnostic.js +138 -0
  1003. package/dist/ida/IdaMcpConnection.js +297 -27
  1004. package/dist/ida/IdaNativeProtocol.js +93 -0
  1005. package/dist/ida/IdaOperationRunner.js +249 -40
  1006. package/dist/ida/IdaProtocolValues.js +86 -4
  1007. package/dist/ida/IdaProvider.js +34 -8
  1008. package/dist/ida/IdaProviderCapabilities.js +37 -8
  1009. package/dist/ida/IdaSessionClient.js +332 -53
  1010. package/dist/ida/IdaWorkspace.js +57 -7
  1011. package/dist/inspector/V8InspectorCaptureProjection.js +7 -2
  1012. package/dist/inspector/V8InspectorEndpoint.js +15 -13
  1013. package/dist/inspector/V8InspectorProvider.js +41 -7
  1014. package/dist/javascript/analysis/JavaScriptAnalysisTransfer.js +337 -0
  1015. package/dist/javascript/analysis/JavaScriptAnalysisWorker.js +594 -0
  1016. package/dist/javascript/analysis/JavaScriptAnalysisWorkerProtocol.js +65 -0
  1017. package/dist/javascript/analysis/JavaScriptAnalysisWorkerSchemas.js +590 -0
  1018. package/dist/javascript/analysis/JavaScriptAnalysisWorkerServer.js +126 -0
  1019. package/dist/javascript/recovery/RecoveryFiles.js +68 -12
  1020. package/dist/javascript/recovery/WakaruCommand.js +22 -9
  1021. package/dist/javascript/recovery/WakaruExecution.js +30 -18
  1022. package/dist/javascript/recovery/WakaruProvider.js +150 -24
  1023. package/dist/javascript/recovery/WakaruPublication.js +38 -14
  1024. package/dist/javascript/recovery/WakaruRelease.js +11 -4
  1025. package/dist/javascript/recovery/WakaruReport.js +15 -9
  1026. package/dist/javascript/recovery/WakaruVersion.js +24 -0
  1027. package/dist/javascript/sourceMaps/DecodedSourceMap.js +2 -16
  1028. package/dist/javascript/sourceMaps/SourceMapCommand.js +38 -7
  1029. package/dist/javascript/sourceMaps/SourceMapDecoder.js +84 -10
  1030. package/dist/javascript/sourceMaps/SourceMapFormat.js +26 -28
  1031. package/dist/javascript/sourceMaps/TraceSourceMap.js +34 -6
  1032. package/dist/jeb/JebMcpConnection.js +186 -0
  1033. package/dist/jeb/JebMcpEndpoint.js +45 -0
  1034. package/dist/jeb/JebProvider.js +297 -0
  1035. package/dist/logger.js +14 -1
  1036. package/dist/main/shutdown.js +3 -0
  1037. package/dist/main/transport.js +48 -4
  1038. package/dist/main.js +14 -3
  1039. package/dist/mcp/AnalysisSnapshotFiles-BAbiJQOc.js +1412 -0
  1040. package/dist/mcp/ArtifactProvider-DViCU_rn.js +2183 -0
  1041. package/dist/mcp/ArtifactProviderMetadata-b7pOK5_t.js +76 -0
  1042. package/dist/mcp/ArtifactReader-OyM03Gjn.js +55 -0
  1043. package/dist/mcp/ArtifactResourceScope-P3tq5z8Z.js +162 -0
  1044. package/dist/mcp/AsarHeader-WsPgoooH.js +31 -0
  1045. package/dist/mcp/BinarySessionStatus-B4P9gf-S.js +212 -0
  1046. package/dist/mcp/BinaryTargetResolver-BMaE_0H1.js +1427 -0
  1047. package/dist/mcp/BoundedFileBytes-DuczXiQZ.js +68 -0
  1048. package/dist/mcp/CdpCaptureDocuments-HDiF2O7k.js +746 -0
  1049. package/dist/mcp/CdpCaptureValues-M-j6CIh1.js +90 -0
  1050. package/dist/mcp/CdpConnection-BpDfz4MK.js +570 -0
  1051. package/dist/mcp/CdpOptionalCommand-BPjRD9Kz.js +120 -0
  1052. package/dist/mcp/CdpTargetSession-BsPoKhEU.js +86 -0
  1053. package/dist/mcp/DirectAnalysis-DrafbXke.js +409 -0
  1054. package/dist/mcp/DirectAnalysisStatus-CjjeDLzW.js +44 -0
  1055. package/dist/mcp/ElectronFileScope-BPG_YoyU.js +110 -0
  1056. package/dist/mcp/InterfaceBuilderDecodeBudget-5F2AkxJT.js +652 -0
  1057. package/dist/mcp/ManagedStaticProvider-BthZbKyZ.js +5028 -0
  1058. package/dist/mcp/NativeMacOSProvider-Bh79k8dI.js +4867 -0
  1059. package/dist/mcp/NativeMacOSProviderMetadata-N1lPOaY_.js +307 -0
  1060. package/dist/mcp/ProcedureAddressResolution-CQpuwm1h.js +19 -0
  1061. package/dist/mcp/ProcessOwnership-Bl_3ejLe.js +1502 -0
  1062. package/dist/mcp/ProviderDeadline-DskQ94YD.js +932 -0
  1063. package/dist/mcp/WorkflowEvidence-umWrB_wm.js +111 -0
  1064. package/dist/mcp/analysisErrorCore-DXRTvF_m.js +235 -0
  1065. package/dist/mcp/analysisErrorProjection-BN0EPM-3.js +892 -0
  1066. package/dist/mcp/artifactOperationError-CkHMMaf7.js +27 -0
  1067. package/dist/mcp/artifactToolContracts-Di4qZlEt.js +72 -0
  1068. package/dist/mcp/browserObservation-C0s4i8UI.js +4468 -0
  1069. package/dist/mcp/browserObservationError-CyLugqX4.js +40 -0
  1070. package/dist/mcp/browserObservationSchemas-tgqjH7aA.js +573 -0
  1071. package/dist/mcp/browserScenario-CAQ8Fns9.js +2929 -0
  1072. package/dist/mcp/browserScenarioCapture-CTNFN-FI.js +479 -0
  1073. package/dist/mcp/canonicalDigest-Bi_0_zGi.js +71 -0
  1074. package/dist/mcp/digests-BFoWUT_-.js +223 -0
  1075. package/dist/mcp/electronActiveObservation-lDvQTMR0.js +226 -0
  1076. package/dist/mcp/electronObservation-DFOFEood.js +112 -0
  1077. package/dist/mcp/electronObservation-i7LcILQ-.js +562 -0
  1078. package/dist/mcp/electronScenario-nCzE6IfJ.js +653 -0
  1079. package/dist/mcp/emptyArraySchema-tL6Qymyd.js +140 -0
  1080. package/dist/mcp/enhancedInputs-DgdEnzHy.js +56 -0
  1081. package/dist/mcp/javascriptRuntimeObservation-61NhCf7H.js +690 -0
  1082. package/dist/mcp/javascriptRuntimeObservation-PIUoLfX6.js +121 -0
  1083. package/dist/mcp/jsonSerialization-V-wWiFRE.js +152 -0
  1084. package/dist/mcp/lipo-Bnkoq_6W.js +502 -0
  1085. package/dist/mcp/localPath-AxvW9aPe.js +19 -0
  1086. package/dist/mcp/logger-BQY5ulYv.js +48 -0
  1087. package/dist/mcp/main-kBXHZ8S5.js +69390 -0
  1088. package/dist/mcp/main.js +6 -0
  1089. package/dist/mcp/managedToolContracts-CK--I_s7.js +101 -0
  1090. package/dist/mcp/nativeValueTrace-DR9UE62L.js +3439 -0
  1091. package/dist/mcp/officialToolContracts-B67NJ2tC.js +1413 -0
  1092. package/dist/mcp/pngHeader-DQ-ObyY2.js +147 -0
  1093. package/dist/mcp/propertyListKeys-DD25WsjI.js +553 -0
  1094. package/dist/mcp/providerAdapterError-sDxToNal.js +25 -0
  1095. package/dist/mcp/providerIdentities--ptAh481.js +31 -0
  1096. package/dist/mcp/providerIdentity-BCQ5n5tw.js +16 -0
  1097. package/dist/mcp/providerOperationHealth-CTYa3iLf.js +48 -0
  1098. package/dist/mcp/rolldown-runtime-BjeaiXFo.js +121 -0
  1099. package/dist/mcp/safeJson-NeGfpkrI.js +25 -0
  1100. package/dist/mcp/scanCanonical-CRXSpule.js +3982 -0
  1101. package/dist/mcp/serverIdentity-Cio4iFV3.js +1328 -0
  1102. package/dist/mcp/sourceMapEnvelope-C0uJlrOh.js +94 -0
  1103. package/dist/mcp/toolContracts-BW05wpcr.js +12200 -0
  1104. package/dist/mcp/toolOutputSchemaGroups-ColvNZ1r.js +17533 -0
  1105. package/dist/mcp/unicodeCodePointOrder-BezCbTpg.js +26 -0
  1106. package/dist/mcp/webContentArtifact-Dzjc1z-R.js +284 -0
  1107. package/dist/mcp/webRuntime-K__NYzXm.js +74 -0
  1108. package/dist/mcp/webSourceLocation-DbMAT2J9.js +11130 -0
  1109. package/dist/mcpDoctor.js +108 -76
  1110. package/dist/mcpStartupPolicy.js +3 -0
  1111. package/dist/native/AppleDispatchCoverage.js +81 -28
  1112. package/dist/native/AppleDispatchMetadata.js +20 -9
  1113. package/dist/native/AppleMachoFixups.js +253 -34
  1114. package/dist/native/AppleMachoSelection.js +44 -17
  1115. package/dist/native/AppleObjcCategories.js +1 -2
  1116. package/dist/native/AppleObjcDispatchFacets.js +76 -7
  1117. package/dist/native/CommandRunner.js +142 -32
  1118. package/dist/native/LldbCallTracer.js +5 -3
  1119. package/dist/native/MachoArchitectureSelection.js +50 -0
  1120. package/dist/native/NativeCallObservation.js +2 -1
  1121. package/dist/native/NativeMacOSProvider.js +173 -37
  1122. package/dist/native/NativeMachoInspection.js +142 -78
  1123. package/dist/native/NativeUiHelperRuntime.js +6 -1
  1124. package/dist/native/NativeUiObservation.js +6 -5
  1125. package/dist/native/SignatureTargetBinding.js +118 -55
  1126. package/dist/native/parsers/codesign.js +27 -10
  1127. package/dist/native/parsers/demangle.js +7 -1
  1128. package/dist/native/parsers/dyldInfo.js +73 -4
  1129. package/dist/native/parsers/lipo.js +53 -19
  1130. package/dist/native/parsers/machoUuid.js +150 -0
  1131. package/dist/native/parsers/otool.js +232 -29
  1132. package/dist/native/pe/PeResourceLayout.js +120 -0
  1133. package/dist/native/pe/PeResourceParser.js +286 -0
  1134. package/dist/native/pe/PeResourcesProvider.js +77 -0
  1135. package/dist/native/pwndbg/PwndbgCoreContext.js +20 -20
  1136. package/dist/native/pwntools/PwntoolsDecoder.js +264 -40
  1137. package/dist/native/pwntools/PwntoolsFailures.js +2 -1
  1138. package/dist/native/pwntools/PwntoolsInputLimit.js +27 -0
  1139. package/dist/native/pwntools/PwntoolsRecordedCrashProvider.js +27 -15
  1140. package/dist/native/pwntools/PwntoolsResourceLimits.js +3 -3
  1141. package/dist/native/pwntools/RecordedCrashSourceBindings.js +12 -8
  1142. package/dist/native/pwntools/RecordedCrashStructureBindings.js +3 -1
  1143. package/dist/objdump/ObjdumpCommand.js +21 -0
  1144. package/dist/pcap/PcapCommand.js +146 -0
  1145. package/dist/pcap/PcapConfiguration.js +93 -0
  1146. package/dist/pcap/PcapNativeBound.js +58 -0
  1147. package/dist/pcap/PcapOutput.js +240 -0
  1148. package/dist/pcap/PcapProvider.js +424 -0
  1149. package/dist/pcap/PcapSnapshot.js +171 -0
  1150. package/dist/process/ArtifactAnalysisResources.js +213 -0
  1151. package/dist/process/BoundedFileBytes.js +30 -7
  1152. package/dist/process/CurrentEntrypointPath.js +6 -0
  1153. package/dist/process/DarwinProcessRunTokenReader.js +125 -16
  1154. package/dist/process/ExecFileBoundedOutput.js +44 -0
  1155. package/dist/process/ExecFileOutput.js +30 -6
  1156. package/dist/process/JavaScriptWorkerMemoryLimit.js +25 -0
  1157. package/dist/process/LinuxResourceLimits.js +80 -0
  1158. package/dist/process/MacCodeSignature.js +3 -0
  1159. package/dist/process/OwnedCommand.js +40 -15
  1160. package/dist/process/PrivateRuntimeRoot.js +9 -19
  1161. package/dist/process/PrivateRuntimeRootUnavailableError.js +10 -0
  1162. package/dist/process/ProcessOwnership.js +173 -128
  1163. package/dist/process/ProcessOwnershipObservation.js +131 -43
  1164. package/dist/process/ProcessOwnershipProcessTree.js +4 -4
  1165. package/dist/process/ProcessRunTokenObservations.js +48 -0
  1166. package/dist/process/ProviderDeadline.js +58 -12
  1167. package/dist/process/ProviderDiagnosticRedaction.js +17 -0
  1168. package/dist/process/ProviderProcess.js +112 -14
  1169. package/dist/process/WindowsAuthority.js +48 -39
  1170. package/dist/process/WindowsBatchCommand.js +46 -0
  1171. package/dist/process/boundedUtf8Text.js +13 -0
  1172. package/dist/process/capture/FilesystemSnapshot.js +87 -12
  1173. package/dist/process/capture/ProcessCaptureClock.js +2 -0
  1174. package/dist/process/capture/ProcessCaptureError.js +22 -3
  1175. package/dist/process/capture/ProcessCaptureJournal.js +2 -1
  1176. package/dist/process/capture/ProcessCaptureLifecycle.js +433 -91
  1177. package/dist/process/capture/ProcessCaptureProgress.js +63 -0
  1178. package/dist/process/capture/ProcessHarness.js +209 -38
  1179. package/dist/process/capture/ProcessNormalization.js +278 -34
  1180. package/dist/process/capture/ProcessSampling.js +3 -2
  1181. package/dist/process/capture/ProcessScenarioRuntimeValidation.js +18 -15
  1182. package/dist/process/capture/TerminalRenderer.js +52 -14
  1183. package/dist/process/ownedDebuggerSession.js +203 -0
  1184. package/dist/reference/ReferenceSourceReader.js +22 -6
  1185. package/dist/reference/ReferenceSourceReaderEntries.js +182 -105
  1186. package/dist/reference/ReferenceSourceReaderErrors.js +17 -1
  1187. package/dist/reference/ReferenceSourceReaderFile.js +50 -11
  1188. package/dist/reference/ReferenceSourceReaderTypes.js +1 -2
  1189. package/dist/reference/ReferenceSourceReaderValidate.js +4 -5
  1190. package/dist/rizin/RizinCommand.js +14 -0
  1191. package/dist/rizin/RizinDebugSessionManager.js +1072 -0
  1192. package/dist/rust/RustAuditableReader.js +309 -0
  1193. package/dist/rust/RustBinaryImage.js +116 -0
  1194. package/dist/rust/RustBinaryProvider.js +162 -0
  1195. package/dist/server/EvidenceMcpServer.js +185 -27
  1196. package/dist/server/admittedToolOperation.js +14 -0
  1197. package/dist/server/contractToolHandler.js +28 -0
  1198. package/dist/server/createServer.js +238 -36
  1199. package/dist/server/externalMutationAdmission.js +50 -0
  1200. package/dist/server/mcpProgress.js +4 -2
  1201. package/dist/server/promptCompletion.js +19 -6
  1202. package/dist/server/providerEnvironment.js +3 -0
  1203. package/dist/server/registerAdbTools.js +36 -0
  1204. package/dist/server/registerAnalysisViewTool.js +9 -10
  1205. package/dist/server/registerAndroidTools.js +22 -13
  1206. package/dist/server/registerApktoolTools.js +14 -0
  1207. package/dist/server/registerApplicationTools/compareExportShapes.js +4 -6
  1208. package/dist/server/registerApplicationTools/compareSourceToBundle.js +4 -5
  1209. package/dist/server/registerApplicationTools/compareVersions.js +3 -2
  1210. package/dist/server/registerApplicationTools/coverage.js +3 -2
  1211. package/dist/server/registerApplicationTools/obligationLedger.js +3 -2
  1212. package/dist/server/registerApplicationTools/projectMobileApplicationGraph.js +11 -3
  1213. package/dist/server/registerApplicationTools/traceFeature.js +3 -2
  1214. package/dist/server/registerApplicationTools/traceSemantics.js +4 -5
  1215. package/dist/server/registerArtifactComparisonTool.js +5 -2
  1216. package/dist/server/registerArtifactTools.js +21 -1
  1217. package/dist/server/registerBinaryDiagnosticsTools.js +16 -4
  1218. package/dist/server/registerBrowserScenarioTool.js +10 -7
  1219. package/dist/server/registerBrowserTools.js +14 -13
  1220. package/dist/server/registerBundleComparisonTool.js +20 -6
  1221. package/dist/server/registerCaptureTools.js +12 -0
  1222. package/dist/server/registerCloseLifecycleTool.js +32 -3
  1223. package/dist/server/registerCutterTools.js +33 -0
  1224. package/dist/server/registerElectronTools.js +38 -17
  1225. package/dist/server/registerEnhancedTools.js +7 -6
  1226. package/dist/server/registerEvidenceTools.js +14 -10
  1227. package/dist/server/registerEvmTools.js +24 -11
  1228. package/dist/server/registerFirmwareTools.js +3 -11
  1229. package/dist/server/registerFlutterTools.js +17 -0
  1230. package/dist/server/registerFridaTools.js +205 -0
  1231. package/dist/server/registerFunctionComparisonTool.js +34 -11
  1232. package/dist/server/registerGdbTools.js +64 -0
  1233. package/dist/server/registerGoTools.js +9 -0
  1234. package/dist/server/registerInvestigationTools/helpers.js +2 -2
  1235. package/dist/server/registerInvestigationTools.js +12 -8
  1236. package/dist/server/registerJavaScriptRecoveryTool.js +4 -9
  1237. package/dist/server/registerJavaScriptRuntimeObservationTools.js +10 -11
  1238. package/dist/server/registerJebTools.js +16 -0
  1239. package/dist/server/registerManagedTools.js +11 -1
  1240. package/dist/server/registerManagedWorkflowTools/compareManagedMembers.js +4 -6
  1241. package/dist/server/registerManagedWorkflowTools/importManagedReconstruction.js +3 -2
  1242. package/dist/server/registerManagedWorkflowTools/projectManagedApplicationGraph.js +3 -2
  1243. package/dist/server/registerManagedWorkflowTools/verifyManagedNativeBoundaries.js +3 -2
  1244. package/dist/server/registerNativeTools.js +14 -0
  1245. package/dist/server/registerOfficialTools.js +5 -0
  1246. package/dist/server/registerPcapTools.js +35 -0
  1247. package/dist/server/registerPeResourcesTool.js +9 -0
  1248. package/dist/server/registerProcessComparisonTool.js +14 -4
  1249. package/dist/server/registerRecordedCrashTools.js +4 -9
  1250. package/dist/server/registerReverseEngineeringTools.js +86 -0
  1251. package/dist/server/registerRizinDebugTools.js +53 -0
  1252. package/dist/server/registerRustTools.js +9 -0
  1253. package/dist/server/registerSessionRecordTools.js +21 -14
  1254. package/dist/server/registerSessionStatusTool.js +22 -4
  1255. package/dist/server/registerSessionTools.js +78 -34
  1256. package/dist/server/registerSignalTools.js +12 -0
  1257. package/dist/server/registerSqliteTools.js +9 -0
  1258. package/dist/server/registerWasmTools.js +46 -0
  1259. package/dist/server/registerWebModuleTool.js +4 -9
  1260. package/dist/server/registerWebNetworkCaptureTool.js +26 -17
  1261. package/dist/server/registerWebRuntimeTools.js +6 -5
  1262. package/dist/server/registerWebScriptTool.js +6 -3
  1263. package/dist/server/registerWebSourceLocationTool.js +4 -9
  1264. package/dist/server/retainedSummaryDelivery.js +28 -0
  1265. package/dist/server/sessionAvailabilityPolicy.js +3 -0
  1266. package/dist/server/toolRegistrationOptions.js +8 -0
  1267. package/dist/server/toolResult.js +68 -16
  1268. package/dist/server/toolResultEncoding.js +36 -3
  1269. package/dist/serverIdentity.js +17 -8
  1270. package/dist/signals/SigrokRecordingProvider.js +339 -0
  1271. package/dist/signals/parseDecoderDiscovery.js +65 -0
  1272. package/dist/sqlite/SqliteDatabaseFailures.js +134 -0
  1273. package/dist/sqlite/SqliteDatabaseInspection.js +421 -0
  1274. package/dist/sqlite/SqliteDatabaseLimits.js +16 -0
  1275. package/dist/sqlite/SqliteDatabaseProvider.js +295 -0
  1276. package/dist/sqlite/SqliteDatabaseSnapshot.js +156 -0
  1277. package/dist/sqlite/SqliteDatabaseWorker.js +46 -0
  1278. package/dist/sqlite/SqliteDatabaseWorkerExecution.js +112 -0
  1279. package/dist/wasm/WabtArtifactProvider.js +336 -0
  1280. package/dist/wasm/WabtFailures.js +101 -0
  1281. package/dist/wasm/WabtInterface.js +309 -0
  1282. package/dist/wasm/WabtOutput.js +60 -0
  1283. package/dist/wasm/WabtRelease.js +12 -0
  1284. package/dist/wasm/WabtString.js +48 -0
  1285. package/dist/wasm/WabtWat.js +147 -0
  1286. package/dist/wasm/WasmGlueAdapter.js +53 -0
  1287. package/dist/wasm/WasmInterfaceBudget.js +11 -0
  1288. package/dist/windows/WindowsNativeLoader.js +37 -7
  1289. package/dist/windows/WindowsOwnedProcess.js +150 -17
  1290. package/dist/windows/WindowsPrivateRuntime.js +34 -6
  1291. package/install.sh +157 -95
  1292. package/licenses/Apache-2.0.txt +202 -0
  1293. package/licenses/GCC-Runtime-Library-Exception-3.1.txt +73 -0
  1294. package/licenses/GPL-3.0.txt +674 -0
  1295. package/licenses/LGPL-2.0.txt +480 -0
  1296. package/licenses/MIT-template.txt +18 -0
  1297. package/licenses/MinGW-w64-runtime.txt +240 -0
  1298. package/licenses/Node-22.19.0-LICENSE.txt +2666 -0
  1299. package/licenses/README.md +68 -0
  1300. package/licenses/cfworker-MIT.txt +21 -0
  1301. package/licenses/dotnet-runtime-MIT.txt +23 -0
  1302. package/licenses/frida-17.23.2-COPYING.txt +50 -0
  1303. package/licenses/ghidra-12.1.4-DISCLAIMER.txt +13 -0
  1304. package/licenses/ghidra-12.1.4-LICENSE.txt +201 -0
  1305. package/licenses/ghidra-12.1.4-NOTICE.txt +49 -0
  1306. package/licenses/nativeaot-parser-MIT.txt +28 -0
  1307. package/licenses/npm-dependencies.txt +3612 -0
  1308. package/licenses/npm-runtime-notices.txt +8548 -0
  1309. package/licenses/upstream-sources.json +72 -0
  1310. package/licenses/xterm-MIT.txt +21 -0
  1311. package/native/windows/README.md +92 -11
  1312. package/native/windows/build/manifest.json +2 -2
  1313. package/native/windows/build/rea-windows-x64.node +0 -0
  1314. package/package.json +117 -22
  1315. package/scripts/electron-active-hook.cjs +4 -1
  1316. package/scripts/hopper-demo-x11.py +53 -3
  1317. package/scripts/prepack.mjs +5 -0
  1318. package/scripts/rea-android-workspace-guardian.mjs +46 -0
  1319. package/scripts/rea.mjs +44 -13
  1320. package/scripts/verify-windows-native-artifact.mjs +2 -2
  1321. package/skills/reverse-engineer-anything/SKILL.md +142 -20
  1322. package/skills/reverse-engineer-anything/references/connection-and-recovery.md +127 -0
  1323. package/skills/reverse-engineer-anything/references/evidence-workflows.md +31 -0
  1324. package/skills/reverse-engineer-anything/references/javascript-applications.md +118 -13
  1325. package/skills/reverse-engineer-anything/references/native-and-artifacts.md +147 -16
  1326. package/skills/reverse-engineer-anything/references/runtime-observation.md +57 -7
  1327. package/third_party/README.md +1 -1
  1328. package/third_party/wabt/README.md +24 -0
  1329. package/dist/browser/history/HarCaptureAdapter.js +0 -20
  1330. package/dist/cli/streamedJsonOutput.js +0 -135
  1331. package/dist/cliJsonFile.js +0 -179
  1332. /package/dist/{application/binary → process}/AbortablePromise.js +0 -0
@@ -0,0 +1,1433 @@
1
+ import { createHash } from "node:crypto";
2
+ import { constants as fsConstants } from "node:fs";
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
+ import { createAnalysisExecution, } from "../application/AnalysisProvider.js";
7
+ import { adbResultSchemas } from "../domain/adb/adbDeviceAnalysis.js";
8
+ import { AnalysisArtifactChangedError, AnalysisCancelledError, AnalysisInputError, AnalysisOutputError, AnalysisProtocolError, AnalysisResourceConstraintError, AnalysisTimeoutError, AnalysisUnsupportedTargetError, } from "../domain/analysisErrorCore.js";
9
+ import { AnalysisError } from "../domain/analysisErrorBase.js";
10
+ import { analysisErrorWithCleanupFailure } from "../domain/analysisErrorCleanup.js";
11
+ import { err, ok } from "../domain/result.js";
12
+ import { hashStableFile } from "../filesystem/StableFileHash.js";
13
+ import { ProviderCleanupError } from "../domain/providerCleanupError.js";
14
+ import { execFileBytes, execFileOutputFailure, } from "../process/ExecFileOutput.js";
15
+ import { AdbConfigurationFailure, adbConfigurationAvailability, inspectAdbClient, resolveAdbBinary, } from "./AdbConfiguration.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";
20
+ /** Stable identity for the ADB device-acquisition provider. */
21
+ export const ADB_PROVIDER_IDENTITY = {
22
+ id: "adb",
23
+ name: "Android Debug Bridge",
24
+ version: null,
25
+ };
26
+ const DEVICES_TIMEOUT_MS = 20_000;
27
+ const DEVICES_MAX_OUTPUT_BYTES = 1024 * 1024;
28
+ const SHELL_TIMEOUT_MS = 30_000;
29
+ const GETPROP_MAX_OUTPUT_BYTES = 2 * 1024 * 1024;
30
+ const PACKAGE_LIST_TIMEOUT_MS = 60_000;
31
+ const PACKAGE_LIST_MAX_OUTPUT_BYTES = 8 * 1024 * 1024;
32
+ const PM_PATH_TIMEOUT_MS = 30_000;
33
+ const PM_PATH_MAX_OUTPUT_BYTES = 64 * 1024;
34
+ const PULL_TIMEOUT_MS = 600_000;
35
+ const PULL_MAX_OUTPUT_BYTES = 1024 * 1024;
36
+ const LOGCAT_TIMEOUT_MS = 60_000;
37
+ const LOGCAT_MAX_OUTPUT_BYTES = 4 * 1024 * 1024;
38
+ const DUMPSYS_PACKAGE_TIMEOUT_MS = 60_000;
39
+ const DUMPSYS_PACKAGE_MAX_OUTPUT_BYTES = 8 * 1024 * 1024;
40
+ const DUMPSYS_WINDOW_MAX_OUTPUT_BYTES = 8 * 1024 * 1024;
41
+ const LISTING_TIMEOUT_MS = 30_000;
42
+ const LISTING_MAX_OUTPUT_BYTES = 4 * 1024 * 1024;
43
+ const SETTINGS_TIMEOUT_MS = 20_000;
44
+ const SETTINGS_MAX_OUTPUT_BYTES = 1024 * 1024;
45
+ const SCREEN_TIMEOUT_MS = 60_000;
46
+ const SCREEN_MAX_OUTPUT_BYTES = 32 * 1024 * 1024;
47
+ const BUGREPORT_TIMEOUT_MS = 600_000;
48
+ const BUGREPORT_MAX_OUTPUT_BYTES = 1024 * 1024;
49
+ const STDERR_EXCERPT_BYTES = 512;
50
+ const UNPARSED_LINES_REPORTED = 10;
51
+ const hashAdbFile = async (path, operation, signal) => {
52
+ try {
53
+ return await hashStableFile(path, signal);
54
+ }
55
+ catch (cause) {
56
+ if (signal?.aborted === true)
57
+ throw new AnalysisCancelledError(operation, { cause });
58
+ throw cause;
59
+ }
60
+ };
61
+ /** adb joins shell operands into a remote POSIX command; quote at that boundary. */
62
+ const quoteShellOperand = (value) => /^[A-Za-z0-9_./:=@+,-]+$/u.test(value)
63
+ ? value
64
+ : "'" + value.replaceAll("'", "'\\''") + "'";
65
+ const adbArguments = (serial, arguments_) => {
66
+ const operands = arguments_[0] === "shell"
67
+ ? ["shell", ...arguments_.slice(1).map(quoteShellOperand)]
68
+ : [...arguments_];
69
+ return serial === undefined ? operands : ["-s", serial, ...operands];
70
+ };
71
+ /** Run one bounded adb invocation and keep its exact failure shape. */
72
+ const runAdbCapture = async (operation, targetPath, binary, arguments_, limits, signal) => {
73
+ if (signal?.aborted === true)
74
+ return err(new AnalysisCancelledError(operation));
75
+ try {
76
+ return ok(await execFileBytes(binary, arguments_, {
77
+ timeout: limits.timeoutMs,
78
+ maxBuffer: limits.maxOutputBytes,
79
+ stopSignal: "SIGTERM",
80
+ ...(signal === undefined ? {} : { signal }),
81
+ }));
82
+ }
83
+ catch (cause) {
84
+ if (signal?.aborted || execFileOutputFailure(cause)?.code === "ABORT_ERR")
85
+ return err(new AnalysisCancelledError(operation, { cause }));
86
+ const failure = execFileOutputFailure(cause);
87
+ if (failure === undefined)
88
+ return err(new AnalysisProtocolError(`adb failed for ${operation}`, { cause }));
89
+ if (failure.outputTruncated)
90
+ return err(new AnalysisResourceConstraintError(operation, "memory", `adb output exceeded the ${String(limits.maxOutputBytes)}-byte capture budget`, { max_output_bytes: limits.maxOutputBytes }, { cause }));
91
+ const excerpt = failure.stderr.trim().slice(0, STDERR_EXCERPT_BYTES);
92
+ if (/unauthorized/iu.test(excerpt))
93
+ return err(new AnalysisUnsupportedTargetError(operation, targetPath, excerpt, {
94
+ cause,
95
+ }));
96
+ if (/device[^\n]*not found|device offline|still authorizing|more than one device/iu.test(excerpt))
97
+ return err(new AnalysisUnsupportedTargetError(operation, targetPath, excerpt, {
98
+ cause,
99
+ }));
100
+ if (/No such file or directory|Permission denied|read: Permission denied/iu.test(excerpt))
101
+ return err(new AnalysisUnsupportedTargetError(operation, targetPath, excerpt, {
102
+ cause,
103
+ }));
104
+ if (failure.killed)
105
+ return err(new AnalysisTimeoutError(operation, limits.timeoutMs, { cause }));
106
+ return err(new AnalysisProtocolError(excerpt === ""
107
+ ? `adb exited with code ${String(failure.code)} for ${operation}`
108
+ : excerpt, { cause }));
109
+ }
110
+ };
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,
122
+ });
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
+ };
142
+ const clientIdentityResult = (selection, identity) => ({
143
+ binary_path: selection.binary,
144
+ path_source: selection.pathSource,
145
+ version: identity.version,
146
+ installed_path: identity.installedPath,
147
+ });
148
+ const reported = (unparsedLines, coverage) => ({
149
+ unparsed_lines: unparsedLines.slice(0, UNPARSED_LINES_REPORTED),
150
+ coverage: coverage === "partial" || unparsedLines.length > 0 ? "partial" : "complete",
151
+ });
152
+ const unparsedOverflowLimitation = (unparsedLines) => unparsedLines.length > UNPARSED_LINES_REPORTED
153
+ ? [
154
+ `unparsed_lines reports the first ${String(UNPARSED_LINES_REPORTED)} of ${String(unparsedLines.length)} unrecognized lines`,
155
+ ]
156
+ : [];
157
+ /** Materialize the caller's output directory, refusing existing files inside. */
158
+ const prepareOutputDirectory = async (operation, directory) => {
159
+ const root = resolve(directory);
160
+ try {
161
+ await mkdir(root, { recursive: true });
162
+ await access(root, fsConstants.W_OK);
163
+ }
164
+ catch (cause) {
165
+ return err(new AnalysisOutputError(operation, `The output directory is not writable or could not be created: ${root}`, { cause }));
166
+ }
167
+ return ok(root);
168
+ };
169
+ const refuseExistingTarget = async (operation, path) => {
170
+ if (await lstat(path).then(() => true, () => false))
171
+ return new AnalysisOutputError(operation, `The output file already exists: ${path}`);
172
+ return undefined;
173
+ };
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) => {
193
+ if (identity === undefined)
194
+ throw new Error(`Cannot verify the created output directory identity; refusing to remove ${path}`);
195
+ let current;
196
+ try {
197
+ current = await lstat(path);
198
+ }
199
+ catch (cause) {
200
+ if (cause instanceof Error && Reflect.get(cause, "code") === "ENOENT")
201
+ return;
202
+ throw cause;
203
+ }
204
+ if (!current.isDirectory() ||
205
+ current.isSymbolicLink() ||
206
+ current.dev !== identity.dev ||
207
+ current.ino !== identity.ino ||
208
+ current.mode !== identity.mode)
209
+ throw new Error(`The created output directory was replaced or changed; refusing to remove ${path}`);
210
+ await rm(path, { recursive: true, force: true });
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
+ };
285
+ /**
286
+ * ADB device inspection and acquisition over a caller-selected adb binary.
287
+ *
288
+ * Every operation composes fixed adb argument vectors: caller values occupy
289
+ * positional arguments, escaped when adb forwards them to the device shell. The provider never
290
+ * starts an emulator, installs platform tools, or drives the device UI; the
291
+ * only device mutation is the caller-requested file push, which requires an
292
+ * explicit overwrite choice and verifies its transfer digest.
293
+ */
294
+ export class AdbProvider {
295
+ environment;
296
+ #pendingOutputDirectoryCleanup = new Set();
297
+ #activeOperations = new Set();
298
+ #closing = false;
299
+ #closePromise;
300
+ #outputCleanupPromise;
301
+ constructor(options = {}) {
302
+ this.environment = options.environment ?? process.env;
303
+ }
304
+ selection() {
305
+ return resolveAdbBinary(this.environment);
306
+ }
307
+ /** Probe the selected adb binary; never contacts devices or the server. */
308
+ async inspectAvailability(signal) {
309
+ try {
310
+ const selection = this.selection();
311
+ await inspectAdbClient(selection, signal);
312
+ return {
313
+ status: "available",
314
+ code: null,
315
+ reason: null,
316
+ diagnostics: {
317
+ selected_binary: selection.binary,
318
+ path_source: selection.pathSource,
319
+ },
320
+ };
321
+ }
322
+ catch (cause) {
323
+ if (cause instanceof AdbConfigurationFailure)
324
+ return adbConfigurationAvailability(cause);
325
+ throw cause;
326
+ }
327
+ }
328
+ /** Retry removal of owned output directories retained after failed cleanup. */
329
+ close() {
330
+ this.#closing = true;
331
+ if (this.#closePromise !== undefined)
332
+ return this.#closePromise;
333
+ const closing = (async () => {
334
+ await Promise.all(this.#activeOperations);
335
+ await this.#retryOutputDirectoryCleanup();
336
+ })().finally(() => {
337
+ if (this.#closePromise === closing)
338
+ this.#closePromise = undefined;
339
+ });
340
+ this.#closePromise = closing;
341
+ return this.#closePromise;
342
+ }
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;
349
+ });
350
+ this.#outputCleanupPromise = cleanup;
351
+ return cleanup;
352
+ }
353
+ async #performOutputDirectoryCleanup() {
354
+ const failures = [];
355
+ for (const owner of this.#pendingOutputDirectoryCleanup) {
356
+ try {
357
+ await owner.remove();
358
+ this.#pendingOutputDirectoryCleanup.delete(owner);
359
+ }
360
+ catch (cause) {
361
+ const cleanup = new ProviderCleanupError(ADB_PROVIDER_IDENTITY.id, [owner.path], {
362
+ reason: cause instanceof Error ? cause.message : String(cause),
363
+ }, { operation: owner.operation, cause });
364
+ failures.push(analysisErrorWithCleanupFailure(owner.primary, cleanup, owner.operation));
365
+ }
366
+ }
367
+ if (failures.length === 1)
368
+ throw failures[0];
369
+ if (failures.length > 1)
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),
373
+ failures: failures.map(({ message, cleanupResources }) => ({
374
+ message,
375
+ resources: [...cleanupResources],
376
+ })),
377
+ }, {
378
+ operation: "close_binary",
379
+ cause: new AggregateError(failures, "Multiple ADB output directory cleanups failed"),
380
+ });
381
+ }
382
+ async execute(request, options) {
383
+ if (this.#closing)
384
+ return err(new AnalysisCancelledError(request.operation));
385
+ let release;
386
+ const active = new Promise((resolve) => {
387
+ release = resolve;
388
+ });
389
+ this.#activeOperations.add(active);
390
+ try {
391
+ if (this.#pendingOutputDirectoryCleanup.size > 0) {
392
+ try {
393
+ await this.#retryOutputDirectoryCleanup();
394
+ }
395
+ catch (cause) {
396
+ return err(cause instanceof AnalysisError
397
+ ? cause
398
+ : new ProviderCleanupError(ADB_PROVIDER_IDENTITY.id, [...this.#pendingOutputDirectoryCleanup].map(({ path }) => path), {
399
+ reason: cause instanceof Error ? cause.message : String(cause),
400
+ }, { operation: request.operation, cause }));
401
+ }
402
+ }
403
+ return await this.#executeOperation(request, options);
404
+ }
405
+ finally {
406
+ this.#activeOperations.delete(active);
407
+ release();
408
+ }
409
+ }
410
+ async #executeOperation(request, options) {
411
+ const signal = options?.signal;
412
+ if (signal?.aborted === true)
413
+ return err(new AnalysisCancelledError(request.operation));
414
+ let selection;
415
+ let identity;
416
+ try {
417
+ selection = this.selection();
418
+ identity = await inspectAdbClient(selection, signal);
419
+ }
420
+ catch (cause) {
421
+ if (cause instanceof AnalysisCancelledError)
422
+ return err(cause);
423
+ if (cause instanceof AdbConfigurationFailure)
424
+ return err(providerConfigurationRefusal(ADB_PROVIDER_IDENTITY.id, request.operation, cause));
425
+ return err(new AnalysisProtocolError(`adb version probe failed for ${request.operation}`, { cause }));
426
+ }
427
+ const client = clientIdentityResult(selection, identity);
428
+ const provider = {
429
+ ...ADB_PROVIDER_IDENTITY,
430
+ version: identity.version,
431
+ };
432
+ const { operation } = request;
433
+ const shell = (arguments_, limits) => runAdb(operation, "serial" in request.input ? request.input.serial : operation, selection.binary, adbArguments("serial" in request.input ? request.input.serial : undefined, ["shell", ...arguments_]), limits, signal);
434
+ switch (operation) {
435
+ case "inspect_adb_client":
436
+ return ok(createAnalysisExecution({ client, contacted_adb_server: false }, provider));
437
+ case "list_adb_devices": {
438
+ const ran = await runAdb(operation, "adb-devices", selection.binary, ["devices", "-l"], {
439
+ timeoutMs: DEVICES_TIMEOUT_MS,
440
+ maxOutputBytes: DEVICES_MAX_OUTPUT_BYTES,
441
+ }, signal);
442
+ if (!ran.ok)
443
+ return ran;
444
+ const { devices, unparsedLines, daemonStarted } = parseAdbDevicesOutput(ran.value.stdout, ran.value.stderr);
445
+ if (unparsedLines.length > 0)
446
+ return err(new AnalysisProtocolError(`adb devices reported an unrecognized line: ${unparsedLines[0]}`));
447
+ return ok(createAnalysisExecution({ client, devices, may_have_started_adb_server: daemonStarted }, provider, {
448
+ limitations: [
449
+ "Device kind is inferred from the emulator serial prefix and USB transport metadata, not from device attestation",
450
+ "Kind stays unknown for TCP transports unless the serial is an emulator port",
451
+ ],
452
+ }));
453
+ }
454
+ case "inspect_adb_device": {
455
+ const ran = await runAdb(operation, request.input.serial, selection.binary, adbArguments(request.input.serial, ["shell", "getprop"]), {
456
+ timeoutMs: SHELL_TIMEOUT_MS,
457
+ maxOutputBytes: GETPROP_MAX_OUTPUT_BYTES,
458
+ }, signal);
459
+ if (!ran.ok)
460
+ return ran;
461
+ const { properties, emulatorObserved } = parseGetpropOutput(ran.value.stdout);
462
+ return ok(createAnalysisExecution({
463
+ client,
464
+ serial: request.input.serial,
465
+ properties,
466
+ property_count: properties.length,
467
+ emulator_observed: emulatorObserved,
468
+ }, provider, {
469
+ limitations: [
470
+ "Properties are a fixed whitelist of build identity facts, not the full getprop dump",
471
+ "emulator_observed is null when the build does not report ro.kernel.qemu",
472
+ ],
473
+ }));
474
+ }
475
+ case "list_adb_packages": {
476
+ const scopeFlag = request.input.scope === "third_party"
477
+ ? "-3"
478
+ : request.input.scope === "system"
479
+ ? "-s"
480
+ : null;
481
+ const ran = await shell([
482
+ "pm",
483
+ "list",
484
+ "packages",
485
+ "-f",
486
+ ...(scopeFlag === null ? [] : [scopeFlag]),
487
+ ], {
488
+ timeoutMs: PACKAGE_LIST_TIMEOUT_MS,
489
+ maxOutputBytes: PACKAGE_LIST_MAX_OUTPUT_BYTES,
490
+ });
491
+ if (!ran.ok)
492
+ return ran;
493
+ const { packages, unparsedLines } = parsePackageListOutput(ran.value.stdout);
494
+ return ok(createAnalysisExecution({
495
+ client,
496
+ serial: request.input.serial,
497
+ scope: request.input.scope,
498
+ packages,
499
+ ...reported(unparsedLines, "complete"),
500
+ }, provider, {
501
+ limitations: [
502
+ "base_apk_device_path is a device filesystem path, not a host-local path",
503
+ ...unparsedOverflowLimitation(unparsedLines),
504
+ ],
505
+ }));
506
+ }
507
+ case "pull_adb_package":
508
+ return this.pullPackage(operation, selection, client, provider, request.input, signal);
509
+ case "read_adb_logcat": {
510
+ const ran = await shell([
511
+ "logcat",
512
+ "-d",
513
+ "-b",
514
+ request.input.buffer,
515
+ "-t",
516
+ String(request.input.count),
517
+ ...(request.input.pid === undefined
518
+ ? []
519
+ : ["--pid", String(request.input.pid)]),
520
+ ], {
521
+ timeoutMs: LOGCAT_TIMEOUT_MS,
522
+ maxOutputBytes: LOGCAT_MAX_OUTPUT_BYTES,
523
+ });
524
+ if (!ran.ok)
525
+ return ran;
526
+ const lines = ran.value.stdout.split(/\r?\n/u);
527
+ if (lines.length > 0 && lines[lines.length - 1] === "")
528
+ lines.pop();
529
+ const bounded = lines.slice(-request.input.count);
530
+ return ok(createAnalysisExecution({
531
+ client,
532
+ serial: request.input.serial,
533
+ count: request.input.count,
534
+ buffer: request.input.buffer,
535
+ pid: request.input.pid ?? null,
536
+ lines: bounded,
537
+ total_bytes: ran.value.stdoutBytes,
538
+ coverage: bounded.length !== lines.length ||
539
+ bounded.length === request.input.count
540
+ ? "partial"
541
+ : "complete",
542
+ }, provider, {
543
+ limitations: [
544
+ "Reads a bounded dump (logcat -d); the newest lines are kept when the count cap trims",
545
+ "coverage is partial when the requested count or capture budget truncated the dump",
546
+ ],
547
+ }));
548
+ }
549
+ case "inspect_adb_package": {
550
+ const ran = await shell(["dumpsys", "package", request.input.package], {
551
+ timeoutMs: DUMPSYS_PACKAGE_TIMEOUT_MS,
552
+ maxOutputBytes: DUMPSYS_PACKAGE_MAX_OUTPUT_BYTES,
553
+ });
554
+ if (!ran.ok)
555
+ return ran;
556
+ const stdout = ran.value.stdout;
557
+ if (/Unable to find package:/u.test(stdout) || stdout.trim() === "")
558
+ return err(new AnalysisUnsupportedTargetError(operation, request.input.serial, `Package Manager did not report details for ${request.input.package}; it may not be installed for user 0`));
559
+ const details = parseDumpsysPackageOutput(stdout);
560
+ return ok(createAnalysisExecution({
561
+ client,
562
+ serial: request.input.serial,
563
+ package_name: request.input.package,
564
+ version_name: details.versionName,
565
+ version_code: details.versionCode,
566
+ first_install_time: details.firstInstallTime,
567
+ last_update_time: details.lastUpdateTime,
568
+ installer_package_name: details.installerPackageName,
569
+ user_id: details.userId,
570
+ pkg_flags: details.pkgFlags,
571
+ requested_permissions_count: details.requestedPermissions,
572
+ coverage: details.versionCode === null && details.versionName === null
573
+ ? "partial"
574
+ : "complete",
575
+ }, provider, {
576
+ limitations: [
577
+ "Fields are a fixed projection of dumpsys package output; version-dependent sections are ignored rather than guessed",
578
+ "requested_permissions_count counts the listed requested permissions section only",
579
+ ],
580
+ }));
581
+ }
582
+ case "pull_adb_file":
583
+ return this.pullFile(operation, selection, client, provider, request.input, signal);
584
+ case "push_adb_file":
585
+ return this.pushFile(operation, selection, client, provider, request.input, signal);
586
+ case "capture_adb_screen":
587
+ return this.captureScreen(operation, selection, client, provider, request.input, signal);
588
+ case "collect_adb_bugreport":
589
+ return this.collectBugreport(operation, selection, client, provider, request.input, signal);
590
+ case "list_adb_processes": {
591
+ const ran = await shell(["ps", "-A"], {
592
+ timeoutMs: LISTING_TIMEOUT_MS,
593
+ maxOutputBytes: LISTING_MAX_OUTPUT_BYTES,
594
+ });
595
+ if (!ran.ok)
596
+ return ran;
597
+ const { columns, processes, unparsedLines } = parseProcessListOutput(ran.value.stdout);
598
+ return ok(createAnalysisExecution({
599
+ client,
600
+ serial: request.input.serial,
601
+ columns,
602
+ processes,
603
+ ...reported(unparsedLines, "complete"),
604
+ }, provider, { limitations: unparsedOverflowLimitation(unparsedLines) }));
605
+ }
606
+ case "list_adb_directory": {
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
+ ]), {
616
+ timeoutMs: LISTING_TIMEOUT_MS,
617
+ maxOutputBytes: LISTING_MAX_OUTPUT_BYTES,
618
+ }, signal);
619
+ if (!ran.ok)
620
+ return ran;
621
+ const { entries, unparsedLines } = parseAdbDirectoryListing(ran.value.stdout);
622
+ return ok(createAnalysisExecution({
623
+ client,
624
+ serial: request.input.serial,
625
+ device_path: request.input.device_path,
626
+ entries,
627
+ ...reported(unparsedLines, "complete"),
628
+ }, provider, {
629
+ limitations: [
630
+ "Entry kinds derive from stat permission mode; directory contents and link targets may change during capture",
631
+ ...unparsedOverflowLimitation(unparsedLines),
632
+ ],
633
+ }));
634
+ }
635
+ case "list_adb_features": {
636
+ const ran = await shell(["pm", "list", "features"], {
637
+ timeoutMs: LISTING_TIMEOUT_MS,
638
+ maxOutputBytes: LISTING_MAX_OUTPUT_BYTES,
639
+ });
640
+ if (!ran.ok)
641
+ return ran;
642
+ const { features, unparsedLines } = parseFeatureListOutput(ran.value.stdout);
643
+ return ok(createAnalysisExecution({
644
+ client,
645
+ serial: request.input.serial,
646
+ features,
647
+ ...reported(unparsedLines, "complete"),
648
+ }, provider, { limitations: unparsedOverflowLimitation(unparsedLines) }));
649
+ }
650
+ case "list_adb_services": {
651
+ const ran = await shell(["service", "list"], {
652
+ timeoutMs: LISTING_TIMEOUT_MS,
653
+ maxOutputBytes: LISTING_MAX_OUTPUT_BYTES,
654
+ });
655
+ if (!ran.ok)
656
+ return ran;
657
+ const { services, unparsedLines } = parseServiceListOutput(ran.value.stdout);
658
+ return ok(createAnalysisExecution({
659
+ client,
660
+ serial: request.input.serial,
661
+ services,
662
+ ...reported(unparsedLines, "complete"),
663
+ }, provider, { limitations: unparsedOverflowLimitation(unparsedLines) }));
664
+ }
665
+ case "inspect_adb_display": {
666
+ const size = await shell(["wm", "size"], {
667
+ timeoutMs: SETTINGS_TIMEOUT_MS,
668
+ maxOutputBytes: SETTINGS_MAX_OUTPUT_BYTES,
669
+ });
670
+ if (!size.ok)
671
+ return size;
672
+ const density = await shell(["wm", "density"], {
673
+ timeoutMs: SETTINGS_TIMEOUT_MS,
674
+ maxOutputBytes: SETTINGS_MAX_OUTPUT_BYTES,
675
+ });
676
+ if (!density.ok)
677
+ return density;
678
+ const parsedSize = parseWmSizeOutput(size.value.stdout);
679
+ if (parsedSize.physical === null)
680
+ return err(new AnalysisProtocolError("wm size did not report a physical size; the build may use an unsupported format"));
681
+ const parsedDensity = parseWmDensityOutput(density.value.stdout);
682
+ return ok(createAnalysisExecution({
683
+ client,
684
+ serial: request.input.serial,
685
+ physical_size: parsedSize.physical,
686
+ override_size: parsedSize.override,
687
+ physical_density: parsedDensity.physical,
688
+ override_density: parsedDensity.override,
689
+ }, provider, {
690
+ limitations: [
691
+ "Override values are present only when a build has overridden the physical values",
692
+ ],
693
+ }));
694
+ }
695
+ case "inspect_adb_window": {
696
+ let section = "windows";
697
+ const ran = await shell(["dumpsys", "window", section], {
698
+ timeoutMs: SHELL_TIMEOUT_MS,
699
+ maxOutputBytes: DUMPSYS_WINDOW_MAX_OUTPUT_BYTES,
700
+ });
701
+ if (!ran.ok)
702
+ return ran;
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;
715
+ return ok(createAnalysisExecution({
716
+ client,
717
+ serial: request.input.serial,
718
+ focused_window: focusedWindow,
719
+ focused_app: focusedApp,
720
+ observed_lines: [
721
+ ...(focusedWindow === null ? [] : [focusedWindow]),
722
+ ...(focusedApp === null ? [] : [focusedApp]),
723
+ ],
724
+ }, provider, {
725
+ limitations: [
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",
730
+ ],
731
+ }));
732
+ }
733
+ case "read_adb_setting": {
734
+ const ran = await shell(["settings", "get", request.input.namespace, request.input.key], {
735
+ timeoutMs: SETTINGS_TIMEOUT_MS,
736
+ maxOutputBytes: SETTINGS_MAX_OUTPUT_BYTES,
737
+ });
738
+ if (!ran.ok)
739
+ return ran;
740
+ const { value, deviceReportedNull } = parseSettingsGetOutput(ran.value.stdout);
741
+ return ok(createAnalysisExecution({
742
+ client,
743
+ serial: request.input.serial,
744
+ namespace: request.input.namespace,
745
+ key: request.input.key,
746
+ value,
747
+ device_reported_null: deviceReportedNull,
748
+ }, provider, {
749
+ limitations: [
750
+ "Android prints the literal string null for absent keys; that is reported as a device-side null observation",
751
+ ],
752
+ }));
753
+ }
754
+ case "resolve_adb_packages": {
755
+ const ran = await shell(["pm", "list", "packages", "-f"], {
756
+ timeoutMs: PACKAGE_LIST_TIMEOUT_MS,
757
+ maxOutputBytes: PACKAGE_LIST_MAX_OUTPUT_BYTES,
758
+ });
759
+ if (!ran.ok)
760
+ return ran;
761
+ const { packages, unparsedLines } = parsePackageListOutput(ran.value.stdout);
762
+ const needle = request.input.query.toLowerCase();
763
+ const matches = packages.filter((entry) => entry.package_name.toLowerCase().includes(needle));
764
+ return ok(createAnalysisExecution({
765
+ client,
766
+ serial: request.input.serial,
767
+ query: request.input.query,
768
+ matches,
769
+ exact_match: matches.length === 1 &&
770
+ matches[0].package_name.toLowerCase() === needle,
771
+ coverage: unparsedLines.length > 0 ? "partial" : "complete",
772
+ }, provider, {
773
+ limitations: [
774
+ "Matching is a case-insensitive substring over package names; application display labels are not part of pm output",
775
+ ...unparsedOverflowLimitation(unparsedLines),
776
+ ],
777
+ }));
778
+ }
779
+ case "install_adb_package":
780
+ return this.installPackage(operation, selection, client, provider, request.input, signal);
781
+ case "uninstall_adb_package":
782
+ return this.uninstallPackage(operation, selection, client, provider, request.input, signal);
783
+ case "start_adb_app":
784
+ return this.startApp(operation, selection, client, provider, request.input, signal);
785
+ case "start_adb_activity":
786
+ return this.startActivity(operation, selection, client, provider, request.input, signal);
787
+ case "stop_adb_app":
788
+ return this.stopApp(operation, selection, client, provider, request.input, signal);
789
+ }
790
+ }
791
+ async pullPackage(operation, selection, client, provider, input, signal) {
792
+ const { serial, package: packageName } = input;
793
+ const paths = await runAdb(operation, serial, selection.binary, adbArguments(serial, ["shell", "pm", "path", packageName]), {
794
+ timeoutMs: PM_PATH_TIMEOUT_MS,
795
+ maxOutputBytes: PM_PATH_MAX_OUTPUT_BYTES,
796
+ }, signal);
797
+ if (!paths.ok)
798
+ return paths;
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
+ }
821
+ if (parsed.paths.length === 0 && parsed.unparsedLines.length === 0)
822
+ return err(new AnalysisUnsupportedTargetError(operation, serial, `Package Manager reported no APK paths for ${packageName}; it may not be installed for user 0`));
823
+ if (parsed.unparsedLines.length > 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
+ }
842
+ const directory = await prepareOutputDirectory(operation, input.output_directory);
843
+ if (!directory.ok)
844
+ return directory;
845
+ const packageDirectory = join(directory.value, packageName);
846
+ let packageDirectoryCreated = false;
847
+ let packageDirectoryIdentity;
848
+ try {
849
+ if (await lstat(packageDirectory).then(() => true, () => false))
850
+ throw new Error(`The package output directory already exists: ${packageDirectory}`);
851
+ await mkdir(packageDirectory);
852
+ packageDirectoryCreated = true;
853
+ const created = await lstat(packageDirectory);
854
+ if (!created.isDirectory() || created.isSymbolicLink())
855
+ throw new Error(`The created package output is not a regular directory: ${packageDirectory}`);
856
+ packageDirectoryIdentity = {
857
+ dev: created.dev,
858
+ ino: created.ino,
859
+ mode: created.mode,
860
+ };
861
+ }
862
+ catch (cause) {
863
+ const primary = new AnalysisOutputError(operation, cause instanceof Error ? cause.message : String(cause), { cause });
864
+ if (!packageDirectoryCreated)
865
+ return err(primary);
866
+ const owner = {
867
+ operation,
868
+ path: packageDirectory,
869
+ identity: packageDirectoryIdentity,
870
+ primary,
871
+ remove: () => removeOwnedOutputDirectory(packageDirectory, packageDirectoryIdentity),
872
+ };
873
+ this.#pendingOutputDirectoryCleanup.add(owner);
874
+ const cleanup = new ProviderCleanupError(ADB_PROVIDER_IDENTITY.id, [packageDirectory], {
875
+ reason: "Could not establish an owned package directory identity",
876
+ }, { operation, cause });
877
+ return err(analysisErrorWithCleanupFailure(primary, cleanup, operation));
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);
900
+ const artifacts = [];
901
+ const failures = [];
902
+ const cancelledPackagePull = (error, localPath, devicePath, stage) => {
903
+ error.retainPartialObservation({
904
+ provider_id: "adb",
905
+ operation,
906
+ result: {
907
+ client,
908
+ serial,
909
+ package_name: packageName,
910
+ output_directory: directory.value,
911
+ artifacts,
912
+ failures: [
913
+ ...failures,
914
+ {
915
+ device_path: devicePath,
916
+ stage,
917
+ message: stage === "pull"
918
+ ? `Pull cancelled; any incomplete file is retained at ${localPath}. Remaining APKs were not attempted.`
919
+ : `Digesting the pulled file was cancelled; the file is retained at ${localPath}. Remaining APKs were not attempted.`,
920
+ },
921
+ ],
922
+ coverage: "partial",
923
+ },
924
+ });
925
+ return err(error);
926
+ };
927
+ for (const entry of parsed.paths) {
928
+ const localPath = join(packageDirectory, entry.file_name);
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);
930
+ if (!pulled.ok) {
931
+ if (pulled.error instanceof AnalysisCancelledError)
932
+ return cancelledPackagePull(pulled.error, localPath, entry.device_path, "pull");
933
+ failures.push({
934
+ device_path: entry.device_path,
935
+ stage: "pull",
936
+ message: pulled.error.message,
937
+ });
938
+ continue;
939
+ }
940
+ try {
941
+ const digest = await hashAdbFile(localPath, operation, signal);
942
+ artifacts.push({
943
+ device_path: entry.device_path,
944
+ file_name: entry.file_name,
945
+ local_path: localPath,
946
+ bytes: digest.bytes,
947
+ sha256: digest.sha256,
948
+ role: entry.role,
949
+ role_basis: "file_name",
950
+ });
951
+ }
952
+ catch (cause) {
953
+ if (cause instanceof AnalysisCancelledError)
954
+ return cancelledPackagePull(cause, localPath, entry.device_path, "digest");
955
+ failures.push({
956
+ device_path: entry.device_path,
957
+ stage: "digest",
958
+ message: `The pulled file could not be read back after pulling: ${localPath}`,
959
+ });
960
+ }
961
+ }
962
+ if (artifacts.length === 0 && failures.length > 0) {
963
+ const primary = new AnalysisProtocolError(`Every APK pull failed for ${packageName} on ${serial}: ${failures[0].message}`);
964
+ return failOwnedPackage(primary);
965
+ }
966
+ return ok(createAnalysisExecution({
967
+ client,
968
+ serial,
969
+ package_name: packageName,
970
+ output_directory: directory.value,
971
+ artifacts,
972
+ failures,
973
+ coverage: failures.length === 0 ? "complete" : "partial",
974
+ }, provider, {
975
+ limitations: [
976
+ "APK role names derive from the pulled file names (base.apk, split_*.apk)",
977
+ "Pulled artifacts are host-local copies; the device retains the originals",
978
+ ],
979
+ }));
980
+ }
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
+ ]));
991
+ const directory = await prepareOutputDirectory(operation, input.output_directory);
992
+ if (!directory.ok)
993
+ return directory;
994
+ const localPath = join(directory.value, derived.fileName);
995
+ const existing = await refuseExistingTarget(operation, localPath);
996
+ if (existing !== undefined)
997
+ return err(existing);
998
+ const pulled = await runAdb(operation, input.serial, selection.binary, adbArguments(input.serial, ["pull", input.device_path, localPath]), { timeoutMs: PULL_TIMEOUT_MS, maxOutputBytes: PULL_MAX_OUTPUT_BYTES }, signal);
999
+ if (!pulled.ok)
1000
+ return pulled;
1001
+ try {
1002
+ const digest = await hashAdbFile(localPath, operation, signal);
1003
+ return ok(createAnalysisExecution({
1004
+ client,
1005
+ serial: input.serial,
1006
+ device_path: input.device_path,
1007
+ local_path: localPath,
1008
+ bytes: digest.bytes,
1009
+ sha256: digest.sha256,
1010
+ }, provider, {
1011
+ limitations: [
1012
+ "The pulled file is a host-local copy; the device retains the original",
1013
+ ],
1014
+ }));
1015
+ }
1016
+ catch (cause) {
1017
+ if (cause instanceof AnalysisCancelledError) {
1018
+ cause.retainPartialObservation({
1019
+ provider_id: "adb",
1020
+ operation,
1021
+ result: {
1022
+ client,
1023
+ serial: input.serial,
1024
+ local_path: localPath,
1025
+ device_path: input.device_path,
1026
+ digest_status: "unknown",
1027
+ },
1028
+ });
1029
+ return err(cause);
1030
+ }
1031
+ return err(new AnalysisOutputError(operation, `The pulled file could not be read back after pulling: ${localPath}`, { cause }));
1032
+ }
1033
+ }
1034
+ async pushFile(operation, selection, client, provider, input, signal) {
1035
+ const localPath = resolve(input.local_path);
1036
+ const info = await stat(localPath).then((value) => value, () => null);
1037
+ if (info === null || !info.isFile())
1038
+ return err(new AnalysisInputError(operation, {
1039
+ cause: new Error(`The local file does not exist: ${localPath}`),
1040
+ }));
1041
+ let digest;
1042
+ try {
1043
+ digest = await hashAdbFile(localPath, operation, signal);
1044
+ }
1045
+ catch (cause) {
1046
+ if (cause instanceof AnalysisCancelledError)
1047
+ return err(cause);
1048
+ throw cause;
1049
+ }
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);
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))
1056
+ return existsProbe;
1057
+ const deviceExists = existsProbe.ok;
1058
+ if (deviceExists && !input.overwrite)
1059
+ return err(new AnalysisOutputError(operation, `The device path already exists and overwrite was not requested: ${input.device_path}`));
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);
1061
+ if (!pushed.ok)
1062
+ return pushed;
1063
+ const deviceDigest = await runAdb(operation, input.device_path, selection.binary, adbArguments(input.serial, ["shell", "sha256sum", input.device_path]), { timeoutMs: SHELL_TIMEOUT_MS, maxOutputBytes: 1024 }, signal);
1064
+ if (deviceDigest.ok) {
1065
+ const digestMatch = /^([a-f0-9]{64})\s/u.exec(deviceDigest.value.stdout);
1066
+ if (digestMatch !== null && digestMatch[1] !== digest.sha256)
1067
+ return err(new AnalysisArtifactChangedError(operation, input.device_path, `The device-reported digest does not match the pushed local file: ${localPath}`));
1068
+ return ok(createAnalysisExecution({
1069
+ client,
1070
+ serial: input.serial,
1071
+ local_path: localPath,
1072
+ device_path: input.device_path,
1073
+ bytes: digest.bytes,
1074
+ sha256: digest.sha256,
1075
+ device_sha256: digestMatch?.[1] ?? null,
1076
+ overwritten: deviceExists,
1077
+ device_digest_source: "device_sha256sum",
1078
+ }, provider, {
1079
+ limitations: ["Push writes the caller's file to the device"],
1080
+ }));
1081
+ }
1082
+ return ok(createAnalysisExecution({
1083
+ client,
1084
+ serial: input.serial,
1085
+ local_path: localPath,
1086
+ device_path: input.device_path,
1087
+ bytes: digest.bytes,
1088
+ sha256: digest.sha256,
1089
+ device_sha256: null,
1090
+ overwritten: deviceExists,
1091
+ device_digest_source: "unavailable",
1092
+ }, provider, {
1093
+ limitations: [
1094
+ "The device did not answer sha256sum, so the transfer is not device-side verified",
1095
+ "Push writes the caller's file to the device",
1096
+ ],
1097
+ }));
1098
+ }
1099
+ async installPackage(operation, selection, client, provider, input, signal) {
1100
+ const apkPath = resolve(input.apk_path);
1101
+ const info = await stat(apkPath).then((value) => value, () => null);
1102
+ if (info === null || !info.isFile())
1103
+ return err(new AnalysisInputError(operation, {
1104
+ cause: new Error(`The local APK does not exist: ${apkPath}`),
1105
+ }));
1106
+ let digest;
1107
+ try {
1108
+ digest = await hashAdbFile(apkPath, operation, signal);
1109
+ }
1110
+ catch (cause) {
1111
+ if (cause instanceof AnalysisCancelledError)
1112
+ return err(cause);
1113
+ throw cause;
1114
+ }
1115
+ const installed = await runAdb(operation, input.serial, selection.binary, adbArguments(input.serial, [
1116
+ "install",
1117
+ ...(input.replace ? ["-r"] : []),
1118
+ apkPath,
1119
+ ]), { timeoutMs: PULL_TIMEOUT_MS, maxOutputBytes: PULL_MAX_OUTPUT_BYTES }, signal);
1120
+ if (!installed.ok)
1121
+ return (packageChangeRefusal(operation, input.serial, installed.error) ??
1122
+ installed);
1123
+ const verdict = parsePackageChangeOutput(installed.value.stdout);
1124
+ if (verdict.status === "failure")
1125
+ return err(new AnalysisUnsupportedTargetError(operation, input.serial, verdict.reason ?? "the device refused the installation"));
1126
+ return ok(createAnalysisExecution({
1127
+ client,
1128
+ serial: input.serial,
1129
+ apk_path: apkPath,
1130
+ bytes: digest.bytes,
1131
+ sha256: digest.sha256,
1132
+ replace_requested: input.replace,
1133
+ replaced: null,
1134
+ }, provider, {
1135
+ limitations: [
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",
1138
+ ],
1139
+ }));
1140
+ }
1141
+ async uninstallPackage(operation, selection, client, provider, input, signal) {
1142
+ const uninstalled = await runAdb(operation, input.serial, selection.binary, adbArguments(input.serial, ["uninstall", input.package]), {
1143
+ timeoutMs: PACKAGE_LIST_TIMEOUT_MS,
1144
+ maxOutputBytes: PULL_MAX_OUTPUT_BYTES,
1145
+ }, signal);
1146
+ if (!uninstalled.ok)
1147
+ return (packageChangeRefusal(operation, input.serial, uninstalled.error) ??
1148
+ uninstalled);
1149
+ const verdict = parsePackageChangeOutput(uninstalled.value.stdout);
1150
+ if (verdict.status === "failure")
1151
+ return err(new AnalysisUnsupportedTargetError(operation, input.serial, verdict.reason ?? "the device refused the removal"));
1152
+ return ok(createAnalysisExecution({
1153
+ client,
1154
+ serial: input.serial,
1155
+ package_name: input.package,
1156
+ }, provider, {
1157
+ limitations: [
1158
+ "Uninstall removes the package and its data for user 0; keeping data (-k) is not exposed",
1159
+ ],
1160
+ }));
1161
+ }
1162
+ async startApp(operation, selection, client, provider, input, signal) {
1163
+ const resolved = await runAdb(operation, input.serial, selection.binary, adbArguments(input.serial, [
1164
+ "shell",
1165
+ "cmd",
1166
+ "package",
1167
+ "resolve-activity",
1168
+ "--brief",
1169
+ "-c",
1170
+ "android.intent.category.LAUNCHER",
1171
+ input.package,
1172
+ ]), { timeoutMs: SHELL_TIMEOUT_MS, maxOutputBytes: PM_PATH_MAX_OUTPUT_BYTES }, signal);
1173
+ if (!resolved.ok)
1174
+ return resolved;
1175
+ const component = parseResolveActivityOutput(resolved.value.stdout);
1176
+ if (component === null)
1177
+ return err(new AnalysisUnsupportedTargetError(operation, input.serial, `No launcher activity is declared for ${input.package}`));
1178
+ return this.runAmStart(operation, selection, client, provider, input.serial, ["-n", component], {
1179
+ client,
1180
+ serial: input.serial,
1181
+ package_name: input.package,
1182
+ component,
1183
+ }, signal);
1184
+ }
1185
+ async startActivity(operation, selection, client, provider, input, signal) {
1186
+ const extraFlags = {
1187
+ string: "--es",
1188
+ boolean: "--ez",
1189
+ int: "--ei",
1190
+ long: "--el",
1191
+ float: "--ef",
1192
+ };
1193
+ for (const extra of input.extras)
1194
+ if (extra.type === "boolean" && !/^(true|false)$/u.test(extra.value))
1195
+ return err(new AnalysisInputError(operation, {
1196
+ cause: new Error(`Boolean extra ${extra.key} must be true or false`),
1197
+ }));
1198
+ else if ((extra.type === "int" || extra.type === "long") &&
1199
+ !/^-?\d+$/u.test(extra.value))
1200
+ return err(new AnalysisInputError(operation, {
1201
+ cause: new Error(`${extra.type === "int" ? "Integer" : "Long"} extra ${extra.key} must be an integer`),
1202
+ }));
1203
+ else if (extra.type === "float" && !/^-?\d+(\.\d+)?$/u.test(extra.value))
1204
+ return err(new AnalysisInputError(operation, {
1205
+ cause: new Error(`Float extra ${extra.key} must be a number`),
1206
+ }));
1207
+ const arguments_ = [
1208
+ "-a",
1209
+ input.action,
1210
+ ...(input.data_uri === undefined ? [] : ["-d", input.data_uri]),
1211
+ ...(input.component === undefined ? [] : ["-n", input.component]),
1212
+ ...input.extras.flatMap((extra) => [
1213
+ extraFlags[extra.type],
1214
+ extra.key,
1215
+ extra.value,
1216
+ ]),
1217
+ ];
1218
+ return this.runAmStart(operation, selection, client, provider, input.serial, arguments_, {
1219
+ client,
1220
+ serial: input.serial,
1221
+ action: input.action,
1222
+ data_uri: input.data_uri ?? null,
1223
+ component: input.component ?? null,
1224
+ extras: input.extras.map((extra) => ({ ...extra })),
1225
+ }, signal);
1226
+ }
1227
+ async runAmStart(operation, selection, client, provider, serial, arguments_, resultFields, signal) {
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);
1229
+ if (!started.ok)
1230
+ return started;
1231
+ const verdict = parseAmStartOutput(started.value.stdout, started.value.stderr);
1232
+ const result = {
1233
+ ...resultFields,
1234
+ started_activity: verdict.startedActivity,
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
+ },
1264
+ limitations: [
1265
+ "Starting an activity changes device state; am start -W waits for launch completion but no lifecycle observation is captured",
1266
+ ],
1267
+ }));
1268
+ }
1269
+ async stopApp(operation, selection, client, provider, input, signal) {
1270
+ const stopped = await runAdb(operation, input.serial, selection.binary, adbArguments(input.serial, ["shell", "am", "force-stop", input.package]), { timeoutMs: SHELL_TIMEOUT_MS, maxOutputBytes: PM_PATH_MAX_OUTPUT_BYTES }, signal);
1271
+ if (!stopped.ok)
1272
+ return stopped;
1273
+ return ok(createAnalysisExecution({
1274
+ client,
1275
+ serial: input.serial,
1276
+ package_name: input.package,
1277
+ }, provider, {
1278
+ limitations: [
1279
+ "Force-stop succeeds even for packages with no running process; it reports completion, not prior state",
1280
+ ],
1281
+ }));
1282
+ }
1283
+ async captureScreen(operation, selection, client, provider, input, signal) {
1284
+ const directory = await prepareOutputDirectory(operation, input.output_directory);
1285
+ if (!directory.ok)
1286
+ return directory;
1287
+ const localPath = join(directory.value, "screen.png");
1288
+ const existing = await refuseExistingTarget(operation, localPath);
1289
+ if (existing !== undefined)
1290
+ return err(existing);
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);
1292
+ if (!captured.ok)
1293
+ return captured;
1294
+ const dimensions = parsePngDimensions(captured.value.stdout);
1295
+ if (dimensions.width === null)
1296
+ return err(new AnalysisProtocolError("screencap did not return a PNG payload; the device may not expose a display"));
1297
+ try {
1298
+ await writeFile(localPath, captured.value.stdout, { flag: "wx" });
1299
+ }
1300
+ catch (cause) {
1301
+ return err(new AnalysisOutputError(operation, `The screen output could not be created exclusively: ${localPath}`, { cause }));
1302
+ }
1303
+ const sha256 = createHash("sha256")
1304
+ .update(captured.value.stdout)
1305
+ .digest("hex");
1306
+ return ok(createAnalysisExecution({
1307
+ client,
1308
+ serial: input.serial,
1309
+ local_path: localPath,
1310
+ bytes: captured.value.stdout.byteLength,
1311
+ sha256,
1312
+ width: dimensions.width,
1313
+ height: dimensions.height,
1314
+ }, provider, {
1315
+ limitations: [
1316
+ "The capture is one frame at read time; no recording or interaction occurred",
1317
+ ],
1318
+ }));
1319
+ }
1320
+ async collectBugreport(operation, selection, client, provider, input, signal) {
1321
+ const directory = await prepareOutputDirectory(operation, input.output_directory);
1322
+ if (!directory.ok)
1323
+ return directory;
1324
+ let stagingDirectory;
1325
+ let stagingIdentity;
1326
+ let retainedObservation;
1327
+ let publishedPath;
1328
+ try {
1329
+ stagingDirectory = await mkdtemp(join(directory.value, ".rea-bugreport-"));
1330
+ }
1331
+ catch (cause) {
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 = {
1360
+ provider_id: "adb",
1361
+ operation,
1362
+ result: {
1363
+ client,
1364
+ serial: input.serial,
1365
+ local_path: reportedPath,
1366
+ adb_reported_path: reportedPath,
1367
+ digest_status: "unknown",
1368
+ },
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
+ }));
1399
+ }
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));
1430
+ }
1431
+ return collectedResult;
1432
+ }
1433
+ }