rea-agents 6.5.0 → 6.7.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 (921) hide show
  1. package/README.md +12 -3
  2. package/THIRD_PARTY_NOTICES.md +1 -0
  3. package/bridge/android/ReaJadxBridge.java +167 -23
  4. package/bridge/cutter/rea_bridge.py +19 -10
  5. package/bridge/ghidra/ReaGhidraBridge.java +98 -66
  6. package/bridge/hopper_bridge.py +9 -1
  7. package/bridge/native/rea_lldb_tracer.py +48 -4
  8. package/bridge/pwndbg/core_context.py +15 -2
  9. package/dist/adb/AdbCommand.js +148 -0
  10. package/dist/adb/AdbConfiguration.js +26 -4
  11. package/dist/adb/AdbInputSnapshot.js +126 -0
  12. package/dist/adb/AdbProvider.js +765 -248
  13. package/dist/adb/AdbShellOutput.js +92 -21
  14. package/dist/android/AndroidTargetSnapshot.js +7 -7
  15. package/dist/android/JadxAnalysis.js +27 -32
  16. package/dist/android/JadxConfiguration.js +173 -125
  17. package/dist/android/JadxDoctor.js +11 -3
  18. package/dist/android/JadxFailure.js +154 -0
  19. package/dist/android/JadxInterruption.js +13 -0
  20. package/dist/android/JadxJavaProbe.js +246 -0
  21. package/dist/android/JadxMcpTransport.js +48 -15
  22. package/dist/android/JadxProtocol.js +29 -2
  23. package/dist/android/JadxProvider.js +171 -96
  24. package/dist/android/JadxRelease.js +5 -1
  25. package/dist/android/JadxSession.js +35 -14
  26. package/dist/apktool/ApktoolCommandCleanup.js +134 -0
  27. package/dist/apktool/ApktoolCommandOutput.js +22 -0
  28. package/dist/apktool/ApktoolConfiguration.js +162 -44
  29. package/dist/apktool/ApktoolDecodeOutput.js +29 -23
  30. package/dist/apktool/ApktoolDecodedInventory.js +52 -0
  31. package/dist/apktool/ApktoolProvider.js +254 -335
  32. package/dist/apktool/ApktoolStringTables.js +178 -0
  33. package/dist/apktool/ApktoolWorkspace.js +162 -0
  34. package/dist/application/AnalysisDocument.js +19 -4
  35. package/dist/application/AnalysisProvider.js +15 -1
  36. package/dist/application/AppBundleExecutable.js +11 -4
  37. package/dist/application/BinaryTargetResolver.js +9 -2
  38. package/dist/application/BrowserObservationService.js +54 -20
  39. package/dist/application/BrowserScenarioCaptureService.js +26 -6
  40. package/dist/application/CapabilityInventory.js +14 -8
  41. package/dist/application/ClaudeDesktopConfigLocation.js +5 -5
  42. package/dist/application/ClientConfigurationCleanup.js +73 -0
  43. package/dist/application/ClientConfigurationDocument.js +170 -128
  44. package/dist/application/ClientConfigurationPublication.js +167 -0
  45. package/dist/application/ClientRegistrationEnvironment.js +31 -1
  46. package/dist/application/ClientRegistrationIdentity.js +54 -39
  47. package/dist/application/ClientRegistrationStatus.js +123 -48
  48. package/dist/application/DirectAnalysis.js +15 -2
  49. package/dist/application/DirectAnalysisCleanup.js +5 -1
  50. package/dist/application/DirectAnalysisStatus.js +1 -1
  51. package/dist/application/Doctor.js +83 -9
  52. package/dist/application/DoctorDiagnostics.js +25 -4
  53. package/dist/application/DoctorProviderIds.js +7 -1
  54. package/dist/application/DshCordisPatch.js +1 -1
  55. package/dist/application/EnhancedTools.js +9 -21
  56. package/dist/application/HermesClientHome.js +20 -0
  57. package/dist/application/HermesConfigurationYaml.js +43 -3
  58. package/dist/application/HopperDownload.js +11 -3
  59. package/dist/application/HopperReleaseFeed.js +71 -0
  60. package/dist/application/InvestigationProviders.js +4 -3
  61. package/dist/application/JsonFiles.js +1 -1
  62. package/dist/application/LinuxHopper.js +96 -71
  63. package/dist/application/LinuxHopperPublisher.js +656 -0
  64. package/dist/application/MacHopper.js +182 -66
  65. package/dist/application/MipsElfMetadata.js +1 -1
  66. package/dist/application/MsixPackageStorage.js +13 -6
  67. package/dist/application/ProviderOperationExecution.js +13 -20
  68. package/dist/application/ReconstructionObligationCandidates.js +17 -2
  69. package/dist/application/ReconstructionObligationLedgerEvaluation.js +4 -0
  70. package/dist/application/ReconstructionObligationLedgerService.js +5 -3
  71. package/dist/application/ReconstructionObligationOriginalCases.js +8 -0
  72. package/dist/application/ReferenceSourceImportEntries.js +160 -18
  73. package/dist/application/ReferenceSourceImportPolicy.js +5 -3
  74. package/dist/application/ReferenceSourceVcsAdapter.js +3 -1
  75. package/dist/application/RegularFileRead.js +107 -88
  76. package/dist/application/Setup.js +23 -11
  77. package/dist/application/SetupClientConfiguration.js +155 -89
  78. package/dist/application/SetupClients.js +22 -13
  79. package/dist/application/SetupHost.js +90 -34
  80. package/dist/application/SetupInstallFailure.js +18 -3
  81. package/dist/application/SetupPlan.js +15 -5
  82. package/dist/application/SetupRecoveryBackup.js +40 -13
  83. package/dist/application/SetupRegistrationEnvironment.js +12 -0
  84. package/dist/application/SetupSkill.js +10 -30
  85. package/dist/application/SourceLimitations.js +35 -0
  86. package/dist/application/SupportedClients.js +4 -4
  87. package/dist/application/Uninstall.js +91 -36
  88. package/dist/application/UpdateCommandProgress.js +66 -0
  89. package/dist/application/UpdateMaintenance.js +7 -2
  90. package/dist/application/UpdateRuntime.js +60 -30
  91. package/dist/application/WebModuleTraceService.js +35 -22
  92. package/dist/application/WebNetworkCaptureService.js +8 -5
  93. package/dist/application/WebRuntimeService.js +41 -8
  94. package/dist/application/WebScriptExportService.js +6 -4
  95. package/dist/application/WebSourceLocationService.js +3 -4
  96. package/dist/application/WorkflowEvidence.js +11 -4
  97. package/dist/application/analysisView/AnalysisViewService.js +9 -52
  98. package/dist/application/android/AndroidAnalysisService.js +5 -4
  99. package/dist/application/android/AndroidSearchEvidenceSummary.js +6 -8
  100. package/dist/application/artifacts/ArtifactComparisonEvidence.js +32 -0
  101. package/dist/application/binary/AnalysisProviderEvaluation.js +14 -11
  102. package/dist/application/binary/AnalysisProviderRegistry.js +340 -50
  103. package/dist/application/binary/BinarySession.js +73 -34
  104. package/dist/application/binary/BinarySessionRecords.js +3 -0
  105. package/dist/application/binary/BinarySessionStatus.js +3 -4
  106. package/dist/application/binary/CompositeProvider.js +75 -30
  107. package/dist/application/binary/LazyAnalysisProvider.js +6 -68
  108. package/dist/application/binary/SessionProviderRouter.js +11 -2
  109. package/dist/application/binaryDiagnostics/BinaryLayoutService.js +3 -4
  110. package/dist/application/binaryDiagnostics/PeResourcesService.js +22 -5
  111. package/dist/application/binaryDiagnostics/RecordedCrashService.js +3 -4
  112. package/dist/application/captures/PacketCaptureService.js +3 -2
  113. package/dist/application/closeOwnedWebResources.js +32 -2
  114. package/dist/application/electron/ElectronFuseService.js +8 -43
  115. package/dist/application/evm/EvmInterfaceEvidence.js +11 -0
  116. package/dist/application/evm/EvmInterfaceService.js +4 -15
  117. package/dist/application/firmware/FirmwareAnalysisService.js +4 -3
  118. package/dist/application/go/GoBinaryService.js +4 -5
  119. package/dist/application/investigation/EvidenceLedger.js +3 -4
  120. package/dist/application/javascript/ElectronBoundaryGraphWindows.js +14 -2
  121. package/dist/application/javascript/ElectronEvidence.js +1 -2
  122. package/dist/application/javascript/ElectronObservationService.js +41 -7
  123. package/dist/application/javascript/JavaScriptApplicationEvidence.js +6 -0
  124. package/dist/application/javascript/JavaScriptArtifactAnalysis.js +35 -17
  125. package/dist/application/javascript/JavaScriptArtifactAnalysisTypes.js +30 -1
  126. package/dist/application/javascript/JavaScriptArtifactGraphContext.js +3 -2
  127. package/dist/application/javascript/JavaScriptArtifactGraphEvidence.js +3 -3
  128. package/dist/application/javascript/JavaScriptArtifactGraphFindings.js +41 -11
  129. package/dist/application/javascript/JavaScriptArtifactGraphStructure.js +18 -8
  130. package/dist/application/javascript/JavaScriptArtifactPathResolution.js +84 -24
  131. package/dist/application/javascript/JavaScriptArtifactReconstruction.js +15 -3
  132. package/dist/application/javascript/JavaScriptModuleRelationships.js +1 -1
  133. package/dist/application/javascript/JavaScriptRuntimeObservationEvidence.js +1 -2
  134. package/dist/application/javascript/JavaScriptRuntimeObservationService.js +33 -10
  135. package/dist/application/javascript/JavaScriptSemanticGraphAsyncProjection.js +4 -5
  136. package/dist/application/javascript/JavaScriptSemanticGraphBuilder.js +103 -24
  137. package/dist/application/javascript/JavaScriptSemanticGraphChildProcessProjection.js +13 -4
  138. package/dist/application/javascript/JavaScriptSemanticGraphConstruction.js +23 -3
  139. package/dist/application/javascript/JavaScriptSemanticGraphDataProjection.js +18 -5
  140. package/dist/application/javascript/JavaScriptSemanticGraphFlowProjection.js +4 -6
  141. package/dist/application/javascript/JavaScriptSemanticGraphObjectProjection.js +2 -3
  142. package/dist/application/javascript/JavaScriptSemanticGraphResourceProjection.js +2 -3
  143. package/dist/application/javascript/JavaScriptSemanticGraphValueProjection.js +5 -8
  144. package/dist/application/native/NativeCallRoutes.js +40 -23
  145. package/dist/application/native/NativeUiActionTrace.js +8 -0
  146. package/dist/application/native/NativeValueTrace.js +8 -0
  147. package/dist/application/reverse/ReverseEngineeringService.js +2 -2
  148. package/dist/application/rust/RustBinaryService.js +6 -4
  149. package/dist/application/signals/SignalRecordingService.js +3 -2
  150. package/dist/application/wasm/WasmArtifactService.js +4 -5
  151. package/dist/artifacts/AnalysisCleanupLease.js +119 -0
  152. package/dist/artifacts/ArtifactFileOperation.js +150 -0
  153. package/dist/artifacts/ArtifactHash.js +2 -1
  154. package/dist/artifacts/ArtifactProvider.js +16 -5
  155. package/dist/artifacts/ArtifactReader.js +50 -4
  156. package/dist/artifacts/ArtifactResourceScope.js +80 -6
  157. package/dist/artifacts/AsarArtifactReader.js +12 -11
  158. package/dist/artifacts/AsarEntryStream.js +49 -17
  159. package/dist/artifacts/DirectoryArtifactReader.js +28 -7
  160. package/dist/artifacts/MachOSliceArtifactReader.js +70 -13
  161. package/dist/artifacts/NativeDmgArtifactReader.js +112 -13
  162. package/dist/artifacts/SafeOutputTree.js +5 -3
  163. package/dist/artifacts/SafeOutputTreeCreationFailure.js +1 -0
  164. package/dist/artifacts/SafeOutputTreeReadback.js +10 -16
  165. package/dist/artifacts/ZipArtifactReader.js +34 -14
  166. package/dist/artifacts/apple/AppleAssetCatalogAnalysis.js +3 -1
  167. package/dist/artifacts/apple/DylibFileAccess.js +106 -0
  168. package/dist/artifacts/apple/DylibResolutionReader.js +64 -155
  169. package/dist/artifacts/apple/InterfaceBuilderAnalysis.js +52 -9
  170. package/dist/artifacts/apple/InterfaceBuilderDecodeBudget.js +25 -24
  171. package/dist/artifacts/apple/KeyedArchiveReader.js +20 -11
  172. package/dist/artifacts/apple/MachoLoadCommandReader.js +17 -2
  173. package/dist/artifacts/apple/PlistNumberLiterals.js +104 -116
  174. package/dist/artifacts/extraction/ArtifactExtraction.js +15 -12
  175. package/dist/artifacts/inventory/ArtifactGraphConstruction.js +9 -11
  176. package/dist/artifacts/inventory/ArtifactInventory.js +2 -2
  177. package/dist/artifacts/inventory/classify.js +4 -2
  178. package/dist/artifacts/inventory/hashStableRootArtifact.js +14 -7
  179. package/dist/artifacts/inventory/scanCanonical.js +3 -4
  180. package/dist/artifacts/javascript/JavaScriptArtifactFiles.js +3 -1
  181. package/dist/artifacts/readArtifactFileChunks.js +9 -0
  182. package/dist/artifacts/readStableArtifact.js +12 -34
  183. package/dist/browser/BrowserScenarioPartialObservation.js +14 -48
  184. package/dist/browser/CdpBrowserProvider.js +81 -30
  185. package/dist/browser/CdpCaptureDocuments.js +99 -131
  186. package/dist/browser/CdpCaptureDomSvg.js +31 -60
  187. package/dist/browser/CdpCaptureValues.js +12 -0
  188. package/dist/browser/CdpConnection.js +133 -27
  189. package/dist/browser/CdpElectronInspection.js +60 -60
  190. package/dist/browser/CdpElectronProvider.js +56 -4
  191. package/dist/browser/CdpElectronScriptEvents.js +4 -1
  192. package/dist/browser/CdpElectronScripts.js +2 -5
  193. package/dist/browser/CdpElectronWorkers.js +13 -2
  194. package/dist/browser/CdpPageCapture.js +2 -1
  195. package/dist/browser/CdpPageCaptureScripts.js +14 -10
  196. package/dist/browser/CdpPageCaptureWorkers.js +45 -14
  197. package/dist/browser/CdpSafeMetadata.js +23 -19
  198. package/dist/browser/CdpSnapshotNodes.js +103 -0
  199. package/dist/browser/CdpSnapshotStrings.js +0 -6
  200. package/dist/browser/CdpTargetSession.js +52 -10
  201. package/dist/browser/CdpTargetSessionOwner.js +198 -0
  202. package/dist/browser/ElectronCaptureCleanup.js +82 -0
  203. package/dist/browser/ElectronProcessCleanup.js +91 -0
  204. package/dist/browser/PlaywrightBrowserScenarioProvider.js +71 -16
  205. package/dist/browser/PlaywrightElectronActiveActions.js +53 -5
  206. package/dist/browser/PlaywrightElectronActiveFuses.js +86 -0
  207. package/dist/browser/PlaywrightElectronActiveProjection.js +5 -0
  208. package/dist/browser/PlaywrightElectronActiveProvider.js +140 -151
  209. package/dist/browser/PlaywrightExecutionBoundary.js +4 -2
  210. package/dist/browser/PlaywrightScenarioBrowser.js +236 -90
  211. package/dist/browser/PlaywrightScenarioEvents.js +135 -48
  212. package/dist/browser/PlaywrightScenarioServiceWorkers.js +121 -34
  213. package/dist/browser/PlaywrightScenarioSession.js +95 -22
  214. package/dist/browser/PlaywrightScenarioStorage.js +15 -7
  215. package/dist/browser/StructuredFieldToken.js +53 -0
  216. package/dist/browser/WebArtifactCleanup.js +53 -0
  217. package/dist/browser/WebSourceMapFetcher.js +19 -10
  218. package/dist/browser/assets/WebArtifactReads.js +6 -2
  219. package/dist/browser/assets/WebSourceLocationArtifacts.js +12 -3
  220. package/dist/browser/execution/CdpRuntimeSession.js +36 -7
  221. package/dist/browser/execution/CdpWebRuntimeProvider.js +22 -4
  222. package/dist/browser/history/CaptureFailures.js +7 -2
  223. package/dist/browser/history/HarCapture.js +42 -11
  224. package/dist/browser/history/SazMetadata.js +10 -47
  225. package/dist/browser/modules/NativeModuleResolver.js +108 -58
  226. package/dist/browser/modules/WebModuleArtifacts.js +12 -3
  227. package/dist/browser/network/PlaywrightNetworkContent.js +40 -17
  228. package/dist/browser/network/PlaywrightScenarioNetwork.js +182 -73
  229. package/dist/captures/TsharkCaptureProvider.js +13 -6
  230. package/dist/catalogIdentity.js +19 -14
  231. package/dist/cli/adbCommands.js +18 -19
  232. package/dist/cli/androidCommands.js +2 -14
  233. package/dist/cli/apktoolCommands.js +4 -14
  234. package/dist/cli/binaryDiagnosticsCommands.js +5 -5
  235. package/dist/cli/browserAdvancedCommands.js +11 -4
  236. package/dist/cli/browserCommands.js +21 -12
  237. package/dist/cli/captureCommands.js +4 -4
  238. package/dist/cli/cliResultOutput.js +175 -89
  239. package/dist/cli/coreBinaryCommands.js +4 -3
  240. package/dist/cli/cutterCommands.js +51 -13
  241. package/dist/cli/electronCommands.js +34 -13
  242. package/dist/cli/evmCommands.js +6 -15
  243. package/dist/cli/finishAnalysisCommand.js +10 -2
  244. package/dist/cli/firmwareCommands.js +6 -14
  245. package/dist/cli/flutterCommands.js +2 -18
  246. package/dist/cli/fridaCommands.js +8 -0
  247. package/dist/cli/goCommands.js +2 -2
  248. package/dist/cli/javascriptRecoveryCommands.js +14 -26
  249. package/dist/cli/jebCommands.js +2 -14
  250. package/dist/cli/options.js +6 -0
  251. package/dist/cli/pcapCommands.js +2 -20
  252. package/dist/cli/rustCommands.js +6 -7
  253. package/dist/cli/setupCommands.js +4 -3
  254. package/dist/cli/signalCommands.js +4 -4
  255. package/dist/cli/sqliteCommands.js +17 -44
  256. package/dist/cli/wasmCommands.js +7 -18
  257. package/dist/cli/webModuleCommands.js +19 -34
  258. package/dist/cli/webNetworkCaptureCommands.js +3 -2
  259. package/dist/cli/webRuntimeCommands.js +15 -6
  260. package/dist/cli/webSourceLocationCommands.js +14 -33
  261. package/dist/cli-runtime/AnalysisCleanupLease-CWfTGYKd.js +103 -0
  262. package/dist/cli-runtime/{AnalysisProvider-D0Us2OTk.js → AnalysisProvider-BGrYaMVo.js} +14 -3
  263. package/dist/cli-runtime/{AnalysisSnapshotCache-BXS0wRd2.js → AnalysisSnapshotCache-BjRlXeUS.js} +14 -13
  264. package/dist/cli-runtime/ArtifactFileOperation-Dg4BcoEM.js +122 -0
  265. package/dist/cli-runtime/{ArtifactReader-BXkffc1D.js → ArtifactReader-DMwm42bk.js} +29 -6
  266. package/dist/cli-runtime/ArtifactResourceScope-CokZGcII.js +175 -0
  267. package/dist/cli-runtime/{AsarHeader-CnzOzYEH.js → AsarHeader-BxwU17DJ.js} +1 -1
  268. package/dist/cli-runtime/{BinarySessionStatus-DnMxMk-r.js → BinarySessionStatus-DRhjr7Vb.js} +4 -3
  269. package/dist/cli-runtime/{BinaryTargetResolver-CVIJ_s1A.js → BinaryTargetResolver-tuCTjBlQ.js} +38 -108
  270. package/dist/cli-runtime/{BoundedFileBytes-BU30odTm.js → BoundedFileBytes-DRtiQNAQ.js} +7 -3
  271. package/dist/cli-runtime/{CdpTargetSession-DGX5pV9w.js → CdpTargetSession-CQ08KHbh.js} +318 -43
  272. package/dist/cli-runtime/ClientConfigPath-Dn-V_GUf.js +255 -0
  273. package/dist/cli-runtime/{ClientConfigurationDocument-ffQ9X0Se.js → ClientConfigurationDocument-C9T8MNGc.js} +206 -142
  274. package/dist/cli-runtime/{ClientRegistrationStatus-DszCyPEU.js → ClientRegistrationStatus-PnD29RTX.js} +112 -36
  275. package/dist/cli-runtime/{CurrentEntrypointPath-D5FRNdkq.js → CurrentEntrypointPath-m7QCIVN0.js} +1 -1
  276. package/dist/cli-runtime/{DirectAnalysis-BgvAtpN3.js → DirectAnalysis-C5NyUryV.js} +76 -23
  277. package/dist/cli-runtime/DirectoryArtifactReader-CokAJ8vo.js +448 -0
  278. package/dist/cli-runtime/{Doctor-DIpf_I7N.js → Doctor-DrkWsav4.js} +105 -25
  279. package/dist/cli-runtime/{ElectronFileScope-dpHm2nrS.js → ElectronFileScope-AP7VoVr7.js} +204 -149
  280. package/dist/cli-runtime/ElectronFuseFailures-DsjXR7Xp.js +609 -0
  281. package/dist/cli-runtime/{ExecFileOutput-BEQs-lDD.js → ExecFileOutput-D6KLYTve.js} +11 -9
  282. package/dist/cli-runtime/{InterfaceBuilderDecodeBudget-D4omRUe4.js → InterfaceBuilderDecodeBudget-CW1IO3dG.js} +40 -21
  283. package/dist/cli-runtime/{InventoryProjectionEvidence-DIsI4DJ6.js → InventoryProjectionEvidence-DTH5QAqL.js} +3 -3
  284. package/dist/cli-runtime/{InvestigationProviders-DoQRIHii.js → InvestigationProviders-CFh4a64d.js} +3 -2
  285. package/dist/cli-runtime/{JavaScriptApplicationEvidenceGraph-D5aI_FSJ.js → JavaScriptApplicationEvidenceGraph-gOmPB2L6.js} +6 -6
  286. package/dist/cli-runtime/{JavaScriptApplicationWorkflowEvidence-Bz4-V0Ct.js → JavaScriptApplicationWorkflowEvidence-WZgtK_Ok.js} +2 -2
  287. package/dist/cli-runtime/JebMcpEndpoint-BEalGZh9.js +710 -0
  288. package/dist/cli-runtime/{JsonFiles-DQa1PRKy.js → JsonFiles-uvd6ZyQi.js} +10 -118
  289. package/dist/cli-runtime/KunaInstallation-P0j3x851.js +1781 -0
  290. package/dist/cli-runtime/MacHopperPaths-bGzqjF1Z.js +34 -0
  291. package/dist/cli-runtime/{MachoLoadCommandReader-C7e074Ze.js → MachoLoadCommandReader-CZm6N5vF.js} +12 -192
  292. package/dist/cli-runtime/{ManagedSnapshot-rqyBHcdL.js → ManagedSnapshot-CPE9C3OD.js} +406 -110
  293. package/dist/cli-runtime/OwnedCommandCleanup-BN_V6Erc.js +187 -0
  294. package/dist/cli-runtime/OwnedRegularFile-D1f5nUCx.js +256 -0
  295. package/dist/cli-runtime/OwnedStagedOutput-D31dOozz.js +126 -0
  296. package/dist/cli-runtime/{PrivateRuntimeRoot-DAy0PiBM.js → PrivateRuntimeRoot-Cd23u6jd.js} +39 -6
  297. package/dist/cli-runtime/ProcessOwnership-CtrNr6ee.js +545 -0
  298. package/dist/cli-runtime/{ProcessOwnership-DXC5-UWt.js → ProcessOwnershipObservation-C006iCtZ.js} +149 -607
  299. package/dist/cli-runtime/{ProviderDeadline-8m2pFRDc.js → ProviderDeadline-rSuH4Pm8.js} +27 -1
  300. package/dist/cli-runtime/ProviderOperationExecution-CmU-XrQr.js +38 -0
  301. package/dist/cli-runtime/{snapshotEnvironment-D_tWyOub.js → ProviderProcess-D87A7ctp.js} +117 -160
  302. package/dist/cli-runtime/RegularFileRead-mbgGYtxe.js +125 -0
  303. package/dist/cli-runtime/{SafeOutputTree-D6U15GXd.js → SafeOutputTree-i904hd_2.js} +21 -20
  304. package/dist/cli-runtime/{SetupHost-FkYWswsq.js → SetupHost-CMPmPraB.js} +365 -195
  305. package/dist/cli-runtime/SharedStartupAttempt-BxKyf3Uv.js +1424 -0
  306. package/dist/cli-runtime/StableFileHash-Ame_h3lY.js +61 -0
  307. package/dist/cli-runtime/{SupportedClients-DaX6Lt2d.js → SupportedClients-DMafjitv.js} +89 -72
  308. package/dist/cli-runtime/{Update-CbTC_eg1.js → Update-DAsASWlE.js} +1 -1
  309. package/dist/cli-runtime/{AbortablePromise-BVBemxbD.js → WindowsBatchCommand-Cx9kaVNf.js} +2 -28
  310. package/dist/cli-runtime/WindowsNativeLoader-BqyZO0ZD.js +142 -0
  311. package/dist/cli-runtime/{ZipArtifactReader-B8ZgNe4D.js → ZipArtifactReader-Jed69LEL.js} +20 -16
  312. package/dist/cli-runtime/{analysisErrorCleanup-Do6YeeoD.js → analysisErrorCleanup-COdAmDsb.js} +4 -3
  313. package/dist/cli-runtime/{appleArchiveFormat-tVoI2ykA.js → appleArchiveFormat-Bb3G5CCI.js} +13 -7
  314. package/dist/cli-runtime/{application__DirectAnalysisStatus-DpOejOf0.js → application__DirectAnalysisStatus-F74bu9oy.js} +10 -10
  315. package/dist/cli-runtime/{application__EnhancedTools-oFE2bOjs.js → application__EnhancedTools-Bg51b0Yp.js} +84 -51
  316. package/dist/cli-runtime/{application__FunctionAnalysisEvidence-B6osuhvW.js → application__FunctionAnalysisEvidence-DBWIaYCh.js} +3 -3
  317. package/dist/cli-runtime/{application__ReconstructionCoverageService-DN3wTFQj.js → application__ReconstructionCoverageService-AEPNpZqJ.js} +3 -3
  318. package/dist/cli-runtime/{application__ReconstructionObligationLedgerService-CKcTppX9.js → application__ReconstructionObligationLedgerService-Cl9cPEZf.js} +22 -9
  319. package/dist/cli-runtime/{application__Setup-XpMaRNjy.js → application__Setup-DwQzEewK.js} +30 -18
  320. package/dist/cli-runtime/{application__Uninstall-_23pU2yB.js → application__Uninstall-BOf9oyvQ.js} +78 -37
  321. package/dist/cli-runtime/{application__UpdateRuntime-DPvY8ohd.js → application__UpdateRuntime-CzWkRJHa.js} +119 -29
  322. package/dist/cli-runtime/{application__android__AndroidApplicationService-CFgIFPM4.js → application__android__AndroidApplicationService-shW_aKlj.js} +3 -3
  323. package/dist/cli-runtime/{application__apple__AppleApplicationService-Db6QCsun.js → application__apple__AppleApplicationService-DIv6d3wB.js} +3 -3
  324. package/dist/cli-runtime/{application__harmony__HarmonyApplicationService-CFjocHoK.js → application__harmony__HarmonyApplicationService-OIUFVQFV.js} +3 -3
  325. package/dist/cli-runtime/{application__javascript__ElectronActiveObservationService-CmVDUI_Z.js → application__javascript__ElectronActiveObservationService-wvCh72hK.js} +3 -3
  326. package/dist/cli-runtime/application__javascript__ElectronObservationService-SydXPCwM.js +88 -0
  327. package/dist/cli-runtime/{application__javascript__JavaScriptApplicationService-CCkp8KBh.js → application__javascript__JavaScriptApplicationService-o0uEsjEc.js} +1120 -316
  328. package/dist/cli-runtime/{application__javascript__JavaScriptApplicationWorkflowService-lPy0tzr3.js → application__javascript__JavaScriptApplicationWorkflowService-BAheG_71.js} +51 -44
  329. package/dist/cli-runtime/{application__javascript__JavaScriptRuntimeReconciliationService-DWleA8K9.js → application__javascript__JavaScriptRuntimeReconciliationService-Cnn4GP8q.js} +5 -5
  330. package/dist/cli-runtime/{application__javascript__JavaScriptSemanticTraceService-DkALH4rL.js → application__javascript__JavaScriptSemanticTraceService-CmvLfV1A.js} +6 -6
  331. package/dist/cli-runtime/{artifacts__ArtifactProvider-zXI0QjSL.js → artifacts__ArtifactProvider-wx2K0F2I.js} +377 -359
  332. package/dist/cli-runtime/{binary-BVOr2mgE.js → binary-CWVNJhAC.js} +8561 -3159
  333. package/dist/cli-runtime/{catalogIdentity-DLoXgfIR.js → catalogIdentity-DAEEsOdX.js} +260 -81
  334. package/dist/cli-runtime/cli.js +6177 -3556
  335. package/dist/cli-runtime/{cliOutput-BC1BdAcB.js → cliOutput-CgSuw782.js} +47 -6
  336. package/dist/cli-runtime/cliOutput.js +2 -2
  337. package/dist/cli-runtime/cliResultOutput-10sd6xGx.js +1453 -0
  338. package/dist/cli-runtime/cliResultOutput.js +2 -1
  339. package/dist/cli-runtime/{composition__browserScenario-DHXC1a8n.js → composition__browserScenario-BtPb1c1y.js} +843 -356
  340. package/dist/cli-runtime/{composition__electronObservation-GecK2EID.js → composition__electronObservation-Bk8R6DJo.js} +128 -69
  341. package/dist/cli-runtime/{composition__electronScenario-CEZnVrAL.js → composition__electronScenario-BVF0qStH.js} +398 -135
  342. package/dist/cli-runtime/{cutterToolContracts-TZH9EHr5.js → cutterToolContracts-BQtG_Nzo.js} +195 -62
  343. package/dist/cli-runtime/{doctorRuntime-BE5ZX8it.js → doctorRuntime-B__SIpm-.js} +241 -21
  344. package/dist/cli-runtime/{dotnet__ManagedStaticProvider-C8_yZCDc.js → dotnet__ManagedStaticProvider-DO5Yzcp4.js} +1 -1
  345. package/dist/cli-runtime/{errorSchemas-CTRmvMl3.js → errorSchemas-Ixz_q7qt.js} +58 -4
  346. package/dist/cli-runtime/homeDirectory-DC_DeJIg.js +18 -0
  347. package/dist/cli-runtime/{javascriptApplicationAnalysis-HgMzVMQw.js → javascriptApplicationAnalysis-Dk6yBV8g.js} +688 -668
  348. package/dist/cli-runtime/{javascriptExportReturnShapeProjection-Dg00g35t.js → javascriptExportReturnShapeProjection-CObOIiQ6.js} +3 -3
  349. package/dist/cli-runtime/{javascriptExportShapeComparisonSchemas-BYnoIqIk.js → javascriptExportShapeComparisonSchemas-DpwuBenh.js} +5 -3
  350. package/dist/cli-runtime/{javascriptRuntimeReconciliation-DNjDoL3S.js → javascriptRuntimeReconciliation-C6ZgWMys.js} +61 -59
  351. package/dist/cli-runtime/{javascriptRuntimeReconciliationSchemas-BWpGWNcI.js → javascriptRuntimeReconciliationSchemas-D6tZKUQs.js} +2 -2
  352. package/dist/cli-runtime/{javascriptSemanticTraceSchemas-BTCNcvbc.js → javascriptSemanticTraceSchemas-C7m0b6_w.js} +3 -3
  353. package/dist/cli-runtime/{lipo-DSWP6fv-.js → lipo-DPQ6qurH.js} +9 -11
  354. package/dist/cli-runtime/{logger-CQQCI4a2.js → logger-BuDJ9xxO.js} +2 -2
  355. package/dist/cli-runtime/{machoContainer-C8BIkkq3.js → machoContainer-Cy98bkFm.js} +180 -0
  356. package/dist/cli-runtime/{managedApplicationGraph-B08jb3jq.js → managedApplicationGraph-BazVqpJv.js} +16 -10
  357. package/dist/cli-runtime/{managedToolContracts-D60QmIYj.js → managedToolContracts-BuFkMBH5.js} +2 -2
  358. package/dist/cli-runtime/mcpDoctor.js +8 -6
  359. package/dist/cli-runtime/mcpStartupPolicy-imCbM3qo.js +28 -0
  360. package/dist/cli-runtime/{native__NativeMacOSProvider-YBTvUeJO.js → native__NativeMacOSProvider-DTcRhuGA.js} +1384 -757
  361. package/dist/cli-runtime/{officialToolContracts-CCFF0an9.js → officialToolContracts-CzzVLx8I.js} +74 -53
  362. package/dist/cli-runtime/peMachine-B9ggfSJJ.js +95 -0
  363. package/dist/cli-runtime/propertyListKeys-D5dSASEy.js +355 -0
  364. package/dist/cli-runtime/{providerCleanupError-Ceq8f0wK.js → providerCleanupError-BhsJyAhk.js} +3 -5
  365. package/dist/cli-runtime/readArtifactFileChunks-BbTL_PtB.js +129 -0
  366. package/dist/cli-runtime/{reconstructionObligationLedgerSchemas-Bao0xMr-.js → reconstructionObligationLedgerSchemas-Bi6sect1.js} +6329 -3651
  367. package/dist/cli-runtime/{scanCanonical-KP4T9jSl.js → scanCanonical-CcDFUr-w.js} +233 -363
  368. package/dist/cli-runtime/snapshotEnvironment-Yvx5qwsl.js +196 -0
  369. package/dist/cli-runtime/{toolContracts-D2FOG_Nb.js → toolContracts-CJzEyZ38.js} +126 -52
  370. package/dist/cli-runtime/{toolOutputSchemaGroups-DRiYs1je.js → toolOutputSchemaGroups-BqdSzySu.js} +768 -589
  371. package/dist/cli-runtime/{workflowInputError-n8Oo-bLA.js → workflowInputError-BP8z9Wxl.js} +2 -2
  372. package/dist/cli.js +10 -0
  373. package/dist/cliBrowserScenarioCommands.js +2 -3
  374. package/dist/cliLogging.js +22 -7
  375. package/dist/cliObservationOptions.js +3 -0
  376. package/dist/cliOutput.js +68 -3
  377. package/dist/composition/binary.js +15 -2
  378. package/dist/composition/directAnalysis.js +8 -0
  379. package/dist/composition/javascriptAnalysisWorkerProcess.js +4 -5
  380. package/dist/composition/jeb.js +32 -21
  381. package/dist/config/environment.js +36 -2
  382. package/dist/config/mcpInputSchemaProfile.js +1 -1
  383. package/dist/config/parseConfig.js +7 -3
  384. package/dist/contracts/adb/adbToolContracts.js +2 -2
  385. package/dist/contracts/analysisViewApiSurfaceExample.js +4 -4
  386. package/dist/contracts/analysisViewToolContracts.js +42 -1
  387. package/dist/contracts/android/androidToolContracts.js +1 -1
  388. package/dist/contracts/apktool/apktoolToolContracts.js +5 -1
  389. package/dist/contracts/artifactComparisonExample.js +18 -14
  390. package/dist/contracts/artifactToolContracts.js +2 -1
  391. package/dist/contracts/browserScenarioToolContracts.js +1 -1
  392. package/dist/contracts/browserToolContracts.js +12 -1
  393. package/dist/contracts/compactInputSchema.js +13 -6
  394. package/dist/contracts/fridaToolContracts.js +5 -4
  395. package/dist/contracts/gdbToolContracts.js +2 -3
  396. package/dist/contracts/inputSchemaPresentation.js +173 -79
  397. package/dist/contracts/javascript/javascriptExportShapeComparisonExample.js +1 -0
  398. package/dist/contracts/javascript/javascriptRuntimeReconciliationExample.js +1 -0
  399. package/dist/contracts/jsonSchemaKeywords.js +29 -0
  400. package/dist/contracts/managed/managedWorkflowExamples.js +3 -0
  401. package/dist/contracts/managed/managedWorkflowToolContracts.js +1 -1
  402. package/dist/contracts/mobileApplicationGraphExamples.js +15 -12
  403. package/dist/contracts/officialToolContracts.js +2 -2
  404. package/dist/contracts/rizinDebugToolContracts.js +3 -2
  405. package/dist/contracts/sessionToolContracts.js +3 -3
  406. package/dist/contracts/toolEffects.js +6 -2
  407. package/dist/contracts/toolOutputSchemaGroups.js +7 -4
  408. package/dist/contracts/toolOutputSchemaPrimitives.js +7 -0
  409. package/dist/contracts/toolSchemaMetadata.js +99 -27
  410. package/dist/cutter/CutterBridgeClient.js +206 -67
  411. package/dist/cutter/CutterBridgeService.js +52 -4
  412. package/dist/doctorRuntime.js +25 -4
  413. package/dist/domain/adb/adbDeviceAnalysis.js +19 -1
  414. package/dist/domain/analysisErrorBase.js +59 -2
  415. package/dist/domain/analysisErrorCleanup.js +3 -1
  416. package/dist/domain/analysisErrorCore.js +13 -0
  417. package/dist/domain/analysisErrorPresentation.js +23 -4
  418. package/dist/domain/analysisErrorProjection.js +44 -28
  419. package/dist/domain/analysisSearch.js +26 -0
  420. package/dist/domain/analysisSnapshot.js +11 -11
  421. package/dist/domain/analysisView/WebNetworkApiSurfaceAccumulator.js +4 -65
  422. package/dist/domain/analysisView/analysisView.js +25 -0
  423. package/dist/domain/analysisView/analysisViewDataAdmission.js +86 -0
  424. package/dist/domain/analysisView/artifactInventoryView.js +4 -18
  425. package/dist/domain/analysisView/javascriptApplicationCoverage.js +27 -0
  426. package/dist/domain/analysisView/javascriptApplicationView.js +100 -27
  427. package/dist/domain/analysisView/javascriptFactsView.js +92 -0
  428. package/dist/domain/analysisView/javascriptModuleReferences.js +37 -0
  429. package/dist/domain/analysisView/managedMemberView.js +6 -0
  430. package/dist/domain/android/androidApplication.js +8 -7
  431. package/dist/domain/apktool/apktoolResourceAnalysis.js +52 -2
  432. package/dist/domain/apple/appleApplication.js +41 -60
  433. package/dist/domain/apple/appleBundleAnatomy.js +56 -68
  434. package/dist/domain/apple/dylibResolution.js +5 -1
  435. package/dist/domain/apple/interfaceBuilderGraph.js +29 -8
  436. package/dist/domain/apple/interfaceBuilderKeyedArchive.js +11 -4
  437. package/dist/domain/apple/jvmClassFile.js +226 -0
  438. package/dist/domain/apple/keyedArchive.js +39 -17
  439. package/dist/domain/apple/machoContainer.js +3 -0
  440. package/dist/domain/apple/plistNumbers.js +67 -5
  441. package/dist/domain/apple/plistValue.js +89 -18
  442. package/dist/domain/artifactComparison.js +7 -5
  443. package/dist/domain/artifactGraph.js +4 -12
  444. package/dist/domain/artifactInspection.js +6 -17
  445. package/dist/domain/artifactInventoryEvidence.js +68 -60
  446. package/dist/domain/binaryTarget.js +11 -26
  447. package/dist/domain/binaryTargetTypes.js +10 -0
  448. package/dist/domain/browserNetworkEvidence.js +20 -3
  449. package/dist/domain/browserObservation.js +5 -28
  450. package/dist/domain/browserObservationError.js +4 -4
  451. package/dist/domain/browserScenarioCapture.js +11 -2
  452. package/dist/domain/browserScenarioCaptureLimits.js +34 -0
  453. package/dist/domain/browserScenarioCaptureValues.js +50 -0
  454. package/dist/domain/browserScenarioDiffEvidence.js +1 -3
  455. package/dist/domain/browserScenarioValues.js +5 -1
  456. package/dist/domain/captures/packetCapture.js +2 -1
  457. package/dist/domain/dosMz.js +14 -5
  458. package/dist/domain/electron/electronFuseEvidence.js +42 -0
  459. package/dist/domain/elfFixedHeader.js +24 -0
  460. package/dist/domain/evidence.js +7 -6
  461. package/dist/domain/evidenceBundle.js +9 -2
  462. package/dist/domain/explicitSensitiveFailure.js +3 -0
  463. package/dist/domain/fileSnapshotObservation.js +25 -0
  464. package/dist/domain/fixedTupleSchema.js +9 -0
  465. package/dist/domain/functionCallCoverage.js +6 -6
  466. package/dist/domain/functionComparisonDimensions.js +38 -11
  467. package/dist/domain/functionComparisonNormalization.js +17 -9
  468. package/dist/domain/functionDossierEvidence.js +4 -3
  469. package/dist/domain/harmony/harmonyApplication.js +8 -8
  470. package/dist/domain/hopperErrors.js +4 -2
  471. package/dist/domain/hopperValues.js +27 -4
  472. package/dist/domain/javascript/electronActiveObservation.js +1 -0
  473. package/dist/domain/javascript/electronStaticAnalysisBrowser.js +80 -20
  474. package/dist/domain/javascript/electronStaticAnalysisValues.js +0 -20
  475. package/dist/domain/javascript/electronStaticOptionObjects.js +45 -0
  476. package/dist/domain/javascript/electronWrappedCallPaths.js +70 -17
  477. package/dist/domain/javascript/javascriptAnalysisResourceControls.js +20 -4
  478. package/dist/domain/javascript/javascriptApplicationAnalysis.js +4 -0
  479. package/dist/domain/javascript/javascriptApplicationChangeGraph.js +3 -0
  480. package/dist/domain/javascript/javascriptApplicationVersionComparisonSchemas.js +3 -1
  481. package/dist/domain/javascript/javascriptApplicationVersionItems.js +49 -21
  482. package/dist/domain/javascript/javascriptAstFingerprint.js +41 -10
  483. package/dist/domain/javascript/javascriptAstValues.js +83 -5
  484. package/dist/domain/javascript/javascriptBundledRequireOrigin.js +23 -36
  485. package/dist/domain/javascript/javascriptCommonJsExportReceivers.js +231 -0
  486. package/dist/domain/javascript/javascriptElectronMemberWrites.js +14 -4
  487. package/dist/domain/javascript/javascriptFeatureSeed.js +1 -1
  488. package/dist/domain/javascript/javascriptGraphqlOperations.js +382 -0
  489. package/dist/domain/javascript/javascriptModuleDeclaration.js +20 -0
  490. package/dist/domain/javascript/javascriptNativeHandoff.js +7 -11
  491. package/dist/domain/javascript/javascriptRpcEndpoints.js +7 -171
  492. package/dist/domain/javascript/javascriptRuntimeLoadState.js +9 -4
  493. package/dist/domain/javascript/javascriptRuntimeReconciliationCaptureParsing.js +35 -12
  494. package/dist/domain/javascript/javascriptRuntimeReconciliationMatching.js +50 -45
  495. package/dist/domain/javascript/javascriptSemanticAmbientWrites.js +284 -24
  496. package/dist/domain/javascript/javascriptSemanticAnalysis.js +452 -182
  497. package/dist/domain/javascript/javascriptSemanticAsyncEffects.js +37 -20
  498. package/dist/domain/javascript/javascriptSemanticCallResolution.js +55 -27
  499. package/dist/domain/javascript/javascriptSemanticCalls.js +4 -4
  500. package/dist/domain/javascript/javascriptSemanticChildProcesses.js +134 -50
  501. package/dist/domain/javascript/javascriptSemanticCoverage.js +5 -1
  502. package/dist/domain/javascript/javascriptSemanticDataEffectHelpers.js +7 -13
  503. package/dist/domain/javascript/javascriptSemanticDataEffects.js +33 -10
  504. package/dist/domain/javascript/javascriptSemanticDerivedAnalysis.js +1 -1
  505. package/dist/domain/javascript/javascriptSemanticEvaluationOrder.js +126 -0
  506. package/dist/domain/javascript/javascriptSemanticExpressionShapes.js +111 -0
  507. package/dist/domain/javascript/javascriptSemanticGetterQueries.js +147 -0
  508. package/dist/domain/javascript/javascriptSemanticGetterResults.js +264 -0
  509. package/dist/domain/javascript/javascriptSemanticGraph.js +18 -1
  510. package/dist/domain/javascript/javascriptSemanticGraphSchemas.js +13 -0
  511. package/dist/domain/javascript/javascriptSemanticIterationSources.js +3 -2
  512. package/dist/domain/javascript/javascriptSemanticMapOperations.js +51 -0
  513. package/dist/domain/javascript/javascriptSemanticMemberMutations.js +215 -81
  514. package/dist/domain/javascript/javascriptSemanticMutationInitializers.js +395 -118
  515. package/dist/domain/javascript/javascriptSemanticObjectReferences.js +241 -328
  516. package/dist/domain/javascript/javascriptSemanticObjects.js +33 -27
  517. package/dist/domain/javascript/javascriptSemanticOpaqueEffects.js +163 -0
  518. package/dist/domain/javascript/javascriptSemanticPrimitives.js +11 -1
  519. package/dist/domain/javascript/javascriptSemanticProjection.js +44 -67
  520. package/dist/domain/javascript/javascriptSemanticQueryIdentity.js +2 -1
  521. package/dist/domain/javascript/javascriptSemanticQuerySchemas.js +1 -1
  522. package/dist/domain/javascript/javascriptSemanticRequireOrigin.js +45 -7
  523. package/dist/domain/javascript/javascriptSemanticResourceLimits.js +3 -19
  524. package/dist/domain/javascript/javascriptSemanticResources.js +27 -4
  525. package/dist/domain/javascript/javascriptSemanticReturnedReferences.js +78 -37
  526. package/dist/domain/javascript/javascriptSemanticReturns.js +2 -2
  527. package/dist/domain/javascript/javascriptSemanticState.js +191 -42
  528. package/dist/domain/javascript/javascriptSemanticValues.js +167 -41
  529. package/dist/domain/javascript/javascriptSourceParser.js +54 -9
  530. package/dist/domain/javascript/javascriptStaticAnalysis.js +24 -13
  531. package/dist/domain/javascript/javascriptStaticAnalysisCalls.js +276 -16
  532. package/dist/domain/javascript/javascriptStaticAnalysisHelpers.js +33 -25
  533. package/dist/domain/javascript/javascriptStaticAnalysisState.js +3 -0
  534. package/dist/domain/javascript/javascriptStaticAnalysisTypes.js +1 -1
  535. package/dist/domain/javascript/javascriptSymbolicBindings.js +424 -142
  536. package/dist/domain/javascript/javascriptSymbolicControlFlow.js +4 -0
  537. package/dist/domain/javascript/javascriptSymbolicValues.js +12 -1
  538. package/dist/domain/javascript/sourceToBundleSignals.js +3 -0
  539. package/dist/domain/managed/managedApplicationGraphNodes.js +14 -9
  540. package/dist/domain/managed/managedArtifact.js +26 -0
  541. package/dist/domain/managed/managedMemberComparison.js +3 -0
  542. package/dist/domain/managed/managedMemberComparisonCoverage.js +14 -1
  543. package/dist/domain/managed/managedMemberComparisonItems.js +124 -52
  544. package/dist/domain/managed/managedMemberComparisonMatch.js +76 -72
  545. package/dist/domain/managed/managedMemberSignatureIdentity.js +40 -0
  546. package/dist/domain/managed/managedNativeVerificationMatch.js +5 -5
  547. package/dist/domain/managed/managedNativeVerificationSchemas.js +2 -2
  548. package/dist/domain/mobileApplicationGraphProjection.js +33 -18
  549. package/dist/domain/native/bytePattern.js +21 -0
  550. package/dist/domain/native/nativeAotPe.js +29 -2
  551. package/dist/domain/native/nativeAotSnapshotObservation.js +18 -0
  552. package/dist/domain/native/nativeCallPartialObservation.js +14 -12
  553. package/dist/domain/native/nativeLoadImage.js +13 -0
  554. package/dist/domain/native/objcSwiftMetadata.js +15 -8
  555. package/dist/domain/native/peResources.js +6 -2
  556. package/dist/domain/peMachine.js +2 -0
  557. package/dist/domain/process/processComparison.js +3 -3
  558. package/dist/domain/process/processTraceDimensionProjection.js +1 -1
  559. package/dist/domain/process/processTraceEvaluation.js +65 -24
  560. package/dist/domain/propertyListKeys.js +84 -69
  561. package/dist/domain/propertyListXml.js +149 -0
  562. package/dist/domain/providerAdapterError.js +2 -0
  563. package/dist/domain/providerCleanupError.js +2 -4
  564. package/dist/domain/rawBinary.js +11 -2
  565. package/dist/domain/reconstructionCoverage.js +35 -23
  566. package/dist/domain/reconstructionCoverageEvaluation.js +36 -36
  567. package/dist/domain/reconstructionCoverageEvidence.js +26 -0
  568. package/dist/domain/reconstructionVerification.js +40 -26
  569. package/dist/domain/referenceSourceImportParsing.js +4 -0
  570. package/dist/domain/referenceSourcePathIdentity.js +2 -0
  571. package/dist/domain/referenceSourceRequireBindings.js +40 -101
  572. package/dist/domain/relationshipCoverage.js +4 -5
  573. package/dist/domain/sqlite/sqliteDatabase.js +2 -1
  574. package/dist/domain/symbolAnalysis.js +9 -8
  575. package/dist/domain/webBundleAnalyzerInspection.js +65 -25
  576. package/dist/domain/webCaptureDiff.js +124 -41
  577. package/dist/domain/webInventory.js +28 -14
  578. package/dist/domain/webModuleTrace.js +22 -0
  579. package/dist/domain/webScriptExportError.js +2 -3
  580. package/dist/domain/xmlDocument.js +41 -0
  581. package/dist/domain/zipPackageFormat.js +0 -4
  582. package/dist/dotnet/ManagedArtifactInspector.js +2 -4
  583. package/dist/dotnet/ManagedDecodeBudget.js +21 -1
  584. package/dist/dotnet/ManagedMemberInspector.js +31 -6
  585. package/dist/dotnet/ManagedMemberInspectorCore.js +63 -12
  586. package/dist/dotnet/ManagedMemberRows.js +8 -8
  587. package/dist/dotnet/ManagedMetadataHeaps.js +0 -1
  588. package/dist/dotnet/ManagedMetadataLayout.js +17 -15
  589. package/dist/dotnet/ManagedNativeBoundaryHelpers.js +20 -19
  590. package/dist/dotnet/ManagedNativeBoundaryInspector.js +7 -8
  591. package/dist/dotnet/ManagedPeReader.js +5 -0
  592. package/dist/dotnet/ManagedSnapshot.js +25 -20
  593. package/dist/dotnet/ManagedTypeNameDigests.js +177 -0
  594. package/dist/dotnet/ManagedTypeNames.js +6 -46
  595. package/dist/dotnet/ManagedTypeNesting.js +25 -0
  596. package/dist/dotnet/ManagedTypeReferences.js +94 -0
  597. package/dist/electron/ElectronFuseFailures.js +105 -0
  598. package/dist/electron/ElectronFusePath.js +4 -3
  599. package/dist/electron/ElectronFuseProvider.js +67 -92
  600. package/dist/electron/ElectronFuseReader.js +46 -30
  601. package/dist/evm/EvmoleFailures.js +1 -0
  602. package/dist/evm/EvmoleInterfaceProvider.js +13 -16
  603. package/dist/filesystem/OwnedRegularFile.js +116 -0
  604. package/dist/filesystem/OwnedStagedOutput.js +28 -11
  605. package/dist/filesystem/RegularFile.js +20 -8
  606. package/dist/filesystem/StableFileHash.js +56 -38
  607. package/dist/filesystem/callerPath.js +26 -0
  608. package/dist/filesystem/readFileHandleChunks.js +55 -5
  609. package/dist/filesystem/readStableFileBytes.js +85 -0
  610. package/dist/firmware/FirmwareCommand.js +13 -7
  611. package/dist/firmware/FirmwareFailures.js +56 -0
  612. package/dist/firmware/FirmwareFiles.js +128 -98
  613. package/dist/firmware/FirmwareProvider.js +120 -65
  614. package/dist/firmware/FirmwarePublication.js +26 -11
  615. package/dist/flutter/DartElf.js +27 -0
  616. package/dist/flutter/FlutterBuildProvider.js +44 -4
  617. package/dist/gdb/GdbSessionManager.js +202 -14
  618. package/dist/generatedPackageMetadata.js +1 -1
  619. package/dist/ghidra/GhidraAnalysisProfile.js +24 -10
  620. package/dist/ghidra/GhidraAnalysisSeeds.js +39 -55
  621. package/dist/ghidra/GhidraBridgeSources.js +12 -0
  622. package/dist/ghidra/GhidraClient.js +362 -148
  623. package/dist/ghidra/GhidraClientStartup.js +5 -3
  624. package/dist/ghidra/GhidraClientWire.js +5 -2
  625. package/dist/ghidra/GhidraDiagnostics.js +16 -5
  626. package/dist/ghidra/GhidraDoctor.js +45 -14
  627. package/dist/ghidra/GhidraDosSnapshot.js +83 -0
  628. package/dist/ghidra/GhidraExecutableHeader.js +54 -0
  629. package/dist/ghidra/GhidraFileArtifacts.js +93 -0
  630. package/dist/ghidra/GhidraFunctionValues.js +1 -0
  631. package/dist/ghidra/GhidraInstallation.js +143 -142
  632. package/dist/ghidra/GhidraInstallationPolicy.js +20 -79
  633. package/dist/ghidra/GhidraInstallationProperties.js +57 -0
  634. package/dist/ghidra/GhidraInventoryValues.js +22 -6
  635. package/dist/ghidra/GhidraJavaLaunch.js +11 -4
  636. package/dist/ghidra/GhidraJavaProbe.js +267 -0
  637. package/dist/ghidra/GhidraJavaProperties.js +9 -7
  638. package/dist/ghidra/GhidraLanguageCatalog.js +12 -7
  639. package/dist/ghidra/GhidraLauncher.js +128 -65
  640. package/dist/ghidra/GhidraLoadImageAttest.js +75 -78
  641. package/dist/ghidra/GhidraLoadImageValues.js +39 -29
  642. package/dist/ghidra/GhidraMipsProfile.js +13 -5
  643. package/dist/ghidra/GhidraNativeAotSnapshotOwner.js +221 -0
  644. package/dist/ghidra/GhidraPeProfile.js +88 -18
  645. package/dist/ghidra/GhidraProvider.js +219 -32
  646. package/dist/ghidra/GhidraProviderCapabilities.js +17 -4
  647. package/dist/ghidra/GhidraProviderClient.js +199 -239
  648. package/dist/ghidra/GhidraPspExtension.js +104 -34
  649. package/dist/ghidra/GhidraPspProfile.js +4 -1
  650. package/dist/ghidra/GhidraRawBinaryLanguage.js +13 -4
  651. package/dist/ghidra/GhidraReleasePolicy.js +93 -0
  652. package/dist/ghidra/GhidraRequestQueue.js +64 -40
  653. package/dist/ghidra/GhidraSessionError.js +152 -19
  654. package/dist/ghidra/GhidraSessionValues.js +13 -3
  655. package/dist/ghidra/GhidraSocketConnection.js +25 -11
  656. package/dist/ghidra/GhidraTargetSnapshot.js +67 -50
  657. package/dist/ghidra/GhidraTransport.js +86 -63
  658. package/dist/ghidra/extensions/GhidraExtensions.js +30 -45
  659. package/dist/go/GoBinaryProvider.js +89 -60
  660. package/dist/go/GoElfImage.js +3 -3
  661. package/dist/hopper/BridgeLauncher.js +43 -4
  662. package/dist/hopper/HopperAnalysisProfile.js +4 -2
  663. package/dist/hopper/HopperCleanup.js +14 -1
  664. package/dist/hopper/HopperClient.js +135 -63
  665. package/dist/hopper/HopperProvider.js +4 -7
  666. package/dist/hopper/HopperProviderCapabilities.js +2 -1
  667. package/dist/hopper/HopperRegexSearch.js +21 -60
  668. package/dist/ida/IdaBusyHealth.js +36 -2
  669. package/dist/ida/IdaMcpConnection.js +17 -11
  670. package/dist/ida/IdaNativeProtocol.js +1 -9
  671. package/dist/ida/IdaOperationRunner.js +8 -26
  672. package/dist/ida/IdaProtocolValues.js +2 -1
  673. package/dist/ida/IdaProvider.js +18 -2
  674. package/dist/ida/IdaSessionClient.js +54 -12
  675. package/dist/inspector/V8InspectorCaptureProjection.js +7 -0
  676. package/dist/inspector/V8InspectorProvider.js +2 -0
  677. package/dist/javascript/analysis/JavaScriptAnalysisTransfer.js +25 -4
  678. package/dist/javascript/analysis/JavaScriptAnalysisWorker.js +4 -3
  679. package/dist/javascript/analysis/JavaScriptAnalysisWorkerProtocol.js +3 -2
  680. package/dist/javascript/analysis/JavaScriptAnalysisWorkerSchemas.js +7 -1
  681. package/dist/javascript/analysis/JavaScriptAnalysisWorkerServer.js +1 -1
  682. package/dist/javascript/recovery/RecoveryFiles.js +57 -8
  683. package/dist/jeb/JebMcpConnection.js +129 -70
  684. package/dist/jeb/JebMcpConnectionOwner.js +116 -0
  685. package/dist/jeb/JebMcpDeadline.js +46 -0
  686. package/dist/jeb/JebProvider.js +77 -51
  687. package/dist/kuna/KunaAddress.js +11 -0
  688. package/dist/kuna/KunaCommand.js +217 -0
  689. package/dist/kuna/KunaConfiguration.js +90 -0
  690. package/dist/kuna/KunaDoctor.js +198 -0
  691. package/dist/kuna/KunaInstallation.js +137 -0
  692. package/dist/kuna/KunaJson.js +23 -0
  693. package/dist/kuna/KunaJsonStream.js +433 -0
  694. package/dist/kuna/KunaLimits.js +5 -0
  695. package/dist/kuna/KunaProjectCache.js +804 -0
  696. package/dist/kuna/KunaProjectExport.js +202 -0
  697. package/dist/kuna/KunaProjectFiles.js +191 -0
  698. package/dist/kuna/KunaProjectReader.js +115 -0
  699. package/dist/kuna/KunaProvider.js +217 -0
  700. package/dist/kuna/KunaProviderCapabilities.js +102 -0
  701. package/dist/kuna/KunaQueryErrors.js +12 -0
  702. package/dist/kuna/KunaQueryWork.js +113 -0
  703. package/dist/kuna/KunaReferenceFiles.js +258 -0
  704. package/dist/kuna/KunaReferenceQueries.js +211 -0
  705. package/dist/kuna/KunaRelease.js +10 -0
  706. package/dist/kuna/KunaRunSlots.js +56 -0
  707. package/dist/kuna/KunaSessionClient.js +1162 -0
  708. package/dist/kuna/KunaStringInventory.js +145 -0
  709. package/dist/kuna/KunaStringQueries.js +133 -0
  710. package/dist/kuna/KunaTargetCommands.js +205 -0
  711. package/dist/kuna/KunaUnavailable.js +11 -0
  712. package/dist/main/processShutdown.js +17 -0
  713. package/dist/main/transport.js +21 -1
  714. package/dist/main.js +2 -12
  715. package/dist/mcp/AnalysisProvider-BABWbLoM.js +38 -0
  716. package/dist/mcp/{AnalysisSnapshotFiles-BAbiJQOc.js → AnalysisSnapshotFiles-BXz0c37-.js} +39 -28
  717. package/dist/mcp/{ProcessOwnership-Bl_3ejLe.js → ArtifactFileOperation-64cQKI7B.js} +274 -72
  718. package/dist/mcp/{ArtifactProvider-DViCU_rn.js → ArtifactProvider-Dx6pmil1.js} +371 -354
  719. package/dist/mcp/ArtifactProviderMetadata-UCJr2oZW.js +167 -0
  720. package/dist/mcp/{ArtifactReader-OyM03Gjn.js → ArtifactReader-BrnwNaKY.js} +29 -6
  721. package/dist/mcp/ArtifactResourceScope-zi3Dkqzy.js +175 -0
  722. package/dist/mcp/{AsarHeader-WsPgoooH.js → AsarHeader-B_IbppTz.js} +1 -1
  723. package/dist/mcp/{BinarySessionStatus-B4P9gf-S.js → BinarySessionStatus-CZ9nnXMt.js} +5 -4
  724. package/dist/mcp/{BinaryTargetResolver-BMaE_0H1.js → BinaryTargetResolver-BUncASDP.js} +146 -215
  725. package/dist/mcp/BoundedFileBytes-DYt5q9G2.js +43 -0
  726. package/dist/mcp/{CdpCaptureDocuments-HDiF2O7k.js → CdpCaptureDocuments-Y2uFcBpl.js} +194 -145
  727. package/dist/mcp/{CdpCaptureValues-M-j6CIh1.js → CdpCaptureValues-tNIg-gQK.js} +12 -5
  728. package/dist/mcp/{CdpConnection-BpDfz4MK.js → CdpEndpoint-BrhMhpSi.js} +352 -281
  729. package/dist/mcp/{CdpOptionalCommand-BPjRD9Kz.js → CdpOptionalCommand-PZZhlqxv.js} +2 -2
  730. package/dist/mcp/CdpTargetSession-BmmDC3XO.js +290 -0
  731. package/dist/mcp/{DirectAnalysis-DrafbXke.js → DirectAnalysis-B9KuCHTG.js} +29 -21
  732. package/dist/mcp/{DirectAnalysisStatus-CjjeDLzW.js → DirectAnalysisStatus-BgzopkIt.js} +7 -7
  733. package/dist/mcp/{ElectronFileScope-BPG_YoyU.js → ElectronFileScope-FXtK0d6I.js} +1 -1
  734. package/dist/mcp/ElectronFuseFailures-uZ_wOV6T.js +610 -0
  735. package/dist/mcp/MachoLoadCommandReader-C2VGgHA3.js +330 -0
  736. package/dist/mcp/{ManagedStaticProvider-BthZbKyZ.js → ManagedStaticProvider-CZuoPme2.js} +429 -131
  737. package/dist/mcp/{NativeMacOSProvider-Bh79k8dI.js → NativeMacOSProvider-CMguKrvN.js} +1376 -748
  738. package/dist/mcp/{NativeMacOSProviderMetadata-N1lPOaY_.js → NativeMacOSProviderMetadata-B_RH4KXF.js} +97 -7
  739. package/dist/mcp/{ProviderDeadline-DskQ94YD.js → OwnedCommand-BW1jBSt9.js} +436 -127
  740. package/dist/mcp/ProcedureAddressResolution-H6Qwpb_Y.js +59 -0
  741. package/dist/mcp/{WorkflowEvidence-umWrB_wm.js → WorkflowEvidence-CO4C7ALz.js} +16 -9
  742. package/dist/mcp/analysisErrorCleanup-Q344SnTO.js +34 -0
  743. package/dist/mcp/analysisErrorCore-BIEP7tvF.js +509 -0
  744. package/dist/mcp/{analysisErrorProjection-BN0EPM-3.js → analysisErrorProjection-B8teQwwD.js} +80 -30
  745. package/dist/mcp/{artifactToolContracts-Di4qZlEt.js → artifactToolContracts-C9dRDo-D.js} +6 -4
  746. package/dist/mcp/{browserObservation-C0s4i8UI.js → browserObservation-DUraZs62.js} +272 -107
  747. package/dist/mcp/{browserObservationError-CyLugqX4.js → browserObservationError-C5okJ5el.js} +27 -4
  748. package/dist/mcp/{browserObservationSchemas-tgqjH7aA.js → browserObservationSchemas-DwGGxBpu.js} +3 -3
  749. package/dist/mcp/{browserScenario-CAQ8Fns9.js → browserScenario-BRUz7yN0.js} +844 -358
  750. package/dist/mcp/{browserScenarioCapture-CTNFN-FI.js → browserScenarioCapture-CiMAsMx8.js} +127 -11
  751. package/dist/mcp/{InterfaceBuilderDecodeBudget-5F2AkxJT.js → callerPath-CpPnMZyN.js} +91 -65
  752. package/dist/mcp/{electronActiveObservation-lDvQTMR0.js → electronActiveObservation-DV0Ffy9X.js} +1 -0
  753. package/dist/mcp/electronFuses-D5SS7XXw.js +367 -0
  754. package/dist/mcp/{electronObservation-i7LcILQ-.js → electronObservation-DsN-NqY1.js} +134 -75
  755. package/dist/mcp/{electronObservation-DFOFEood.js → electronObservation-wOYWwqgF.js} +3 -3
  756. package/dist/mcp/{electronScenario-nCzE6IfJ.js → electronScenario-CYrt2zBK.js} +395 -135
  757. package/dist/mcp/{emptyArraySchema-tL6Qymyd.js → emptyArraySchema-C0o2Sxwp.js} +2 -2
  758. package/dist/mcp/{enhancedInputs-DgdEnzHy.js → enhancedInputs-6CCgB3VB.js} +1 -1
  759. package/dist/mcp/{javascriptRuntimeObservation-61NhCf7H.js → javascriptRuntimeObservation-BVbhkO2-.js} +12 -9
  760. package/dist/mcp/{javascriptRuntimeObservation-PIUoLfX6.js → javascriptRuntimeObservation-Cu0Yedqq.js} +2 -2
  761. package/dist/mcp/{lipo-Bnkoq_6W.js → lipo-DSTgUqL1.js} +11 -118
  762. package/dist/mcp/{logger-BQY5ulYv.js → logger-BGdGHadX.js} +2 -2
  763. package/dist/mcp/machoContainer-CMSxUBlK.js +605 -0
  764. package/dist/mcp/{main-kBXHZ8S5.js → main-Cx-Z7m_n.js} +16788 -5902
  765. package/dist/mcp/main.js +1 -1
  766. package/dist/mcp/{managedToolContracts-CK--I_s7.js → managedToolContracts-CSlbKJP-.js} +3 -3
  767. package/dist/mcp/{nativeValueTrace-DR9UE62L.js → nativeValueTrace-BEZbDieM.js} +2630 -2468
  768. package/dist/mcp/{officialToolContracts-B67NJ2tC.js → officialToolContracts-CauCcSsc.js} +74 -55
  769. package/dist/mcp/peMachine-aP1iYnHq.js +95 -0
  770. package/dist/mcp/propertyListKeys-BfCo0k4w.js +356 -0
  771. package/dist/mcp/providerCleanupError-DIRHxzWo.js +125 -0
  772. package/dist/mcp/{providerOperationHealth-CTYa3iLf.js → providerOperationHealth-9DRSGM8N.js} +24 -1
  773. package/dist/mcp/{scanCanonical-CRXSpule.js → scanCanonical-CF3ATd1V.js} +269 -463
  774. package/dist/mcp/{serverIdentity-Cio4iFV3.js → serverIdentity-BK0Ejd_Y.js} +262 -83
  775. package/dist/mcp/{sourceMapEnvelope-C0uJlrOh.js → sourceMapEnvelope-DAaRUIGj.js} +4 -4
  776. package/dist/mcp/{toolContracts-BW05wpcr.js → toolContracts-BPoHQdlC.js} +541 -327
  777. package/dist/mcp/{toolOutputSchemaGroups-ColvNZ1r.js → toolOutputSchemaGroups-MJ_f-PMK.js} +2551 -2354
  778. package/dist/mcp/{webContentArtifact-Dzjc1z-R.js → webContentArtifact-DfGkgDcI.js} +2 -17
  779. package/dist/mcp/{webRuntime-K__NYzXm.js → webRuntime-ccyhkRru.js} +2 -2
  780. package/dist/mcp/{webSourceLocation-DbMAT2J9.js → webSourceLocation-DKIum0vJ.js} +6451 -4414
  781. package/dist/mcpDoctor.js +4 -2
  782. package/dist/mcpStartupPolicy.js +18 -3
  783. package/dist/native/AppleDispatchMetadata.js +76 -27
  784. package/dist/native/AppleMachoFixups.js +20 -10
  785. package/dist/native/AppleObjcCategories.js +12 -1
  786. package/dist/native/AppleObjcDispatchFacets.js +21 -12
  787. package/dist/native/AppleObjcProperties.js +61 -17
  788. package/dist/native/AppleObjcProtocols.js +25 -7
  789. package/dist/native/AppleSwiftVtables.js +2 -0
  790. package/dist/native/CommandRunner.js +13 -9
  791. package/dist/native/LldbCallTracer.js +232 -178
  792. package/dist/native/LldbReadbackFiles.js +70 -0
  793. package/dist/native/LldbRetainedObservations.js +28 -56
  794. package/dist/native/NativeCallObservation.js +53 -52
  795. package/dist/native/NativeCallTarget.js +95 -0
  796. package/dist/native/NativeMacOSProvider.js +240 -171
  797. package/dist/native/NativeMachoInspection.js +21 -7
  798. package/dist/native/NativePlistSource.js +179 -0
  799. package/dist/native/NativeUiCleanupError.js +30 -0
  800. package/dist/native/NativeUiHelperRuntime.js +48 -35
  801. package/dist/native/NativeUiObservation.js +67 -45
  802. package/dist/native/SignatureTargetBinding.js +72 -53
  803. package/dist/native/parsers/demangle.js +16 -12
  804. package/dist/native/parsers/machoUuid.js +4 -4
  805. package/dist/native/parsers/otool.js +57 -17
  806. package/dist/native/parsers/plist.js +40 -25
  807. package/dist/native/pe/PeResourceLayout.js +22 -7
  808. package/dist/native/pe/PeResourceParser.js +10 -9
  809. package/dist/native/pe/PeResourcesProvider.js +63 -16
  810. package/dist/native/pwndbg/CoreFileMappingAuthority.js +51 -0
  811. package/dist/native/pwndbg/PwndbgCoreContext.js +26 -15
  812. package/dist/native/pwntools/PwntoolsDecoder.js +116 -53
  813. package/dist/native/pwntools/PwntoolsFailures.js +17 -3
  814. package/dist/native/pwntools/PwntoolsRecordedCrashProvider.js +11 -1
  815. package/dist/objdump/ObjdumpCommand.js +5 -2
  816. package/dist/pcap/PcapOutput.js +38 -2
  817. package/dist/pcap/PcapProvider.js +45 -15
  818. package/dist/pcap/PcapSnapshot.js +24 -4
  819. package/dist/process/ArtifactAnalysisResources.js +145 -52
  820. package/dist/process/BoundedFileBytes.js +8 -3
  821. package/dist/process/CurrentEntrypointPath.js +3 -1
  822. package/dist/process/DarwinProcessRunTokenReader.js +174 -63
  823. package/dist/process/DetachedPgpSignature.js +57 -0
  824. package/dist/process/ExecFileOutput.js +14 -11
  825. package/dist/{hopper/HopperTargetLease.js → process/HopperLease.js} +10 -0
  826. package/dist/process/LinuxResourceLimits.js +4 -24
  827. package/dist/process/OwnedCommand.js +109 -14
  828. package/dist/process/ProviderProcess.js +129 -10
  829. package/dist/process/RegexMatcher.js +96 -0
  830. package/dist/process/SharedStartupAttempt.js +59 -0
  831. package/dist/process/WindowsAuthority.js +1 -1
  832. package/dist/process/capture/FilesystemSnapshot.js +3 -2
  833. package/dist/process/capture/ProcessCaptureError.js +55 -17
  834. package/dist/process/capture/ProcessCaptureLifecycle.js +17 -20
  835. package/dist/process/capture/ProcessCaptureProgress.js +5 -3
  836. package/dist/process/capture/ProcessHarness.js +17 -3
  837. package/dist/process/snapshotEnvironment.js +8 -8
  838. package/dist/{application/binary → providers}/AnalysisClientCleanup.js +3 -3
  839. package/dist/providers/AnalysisClientCreation.js +193 -0
  840. package/dist/providers/AnalysisClientFailure.js +191 -0
  841. package/dist/providers/DeferredAnalysisClient.js +48 -0
  842. package/dist/providers/OwnedCommandCleanup.js +65 -0
  843. package/dist/providers/ProviderInspectionScope.js +10 -0
  844. package/dist/recordedCatalogDigests.js +2 -0
  845. package/dist/reference/ReferenceSourceReader.js +64 -0
  846. package/dist/reference/ReferenceSourceReaderEntries.js +12 -3
  847. package/dist/reference/ReferenceSourceReaderFile.js +2 -1
  848. package/dist/rizin/RizinCommand.js +2 -2
  849. package/dist/rizin/RizinDebugSessionManager.js +249 -210
  850. package/dist/rust/RustBinaryProvider.js +55 -23
  851. package/dist/server/EvidenceMcpServer.js +2 -2
  852. package/dist/server/contractToolHandler.js +17 -11
  853. package/dist/server/createServer.js +27 -8
  854. package/dist/server/promptCompletion.js +24 -22
  855. package/dist/server/registerArtifactComparisonTool.js +13 -2
  856. package/dist/server/registerBrowserScenarioTool.js +7 -5
  857. package/dist/server/registerBrowserTools.js +2 -4
  858. package/dist/server/registerCutterTools.js +2 -3
  859. package/dist/server/registerElectronTools.js +2 -13
  860. package/dist/server/registerFridaTools.js +8 -12
  861. package/dist/server/registerInvestigationTools.js +20 -20
  862. package/dist/server/registerJavaScriptRuntimeObservationTools.js +2 -4
  863. package/dist/server/registerManagedWorkflowTools/evidence.js +14 -7
  864. package/dist/server/registerProcessComparisonTool.js +3 -0
  865. package/dist/server/registerSessionStatusTool.js +13 -6
  866. package/dist/server/registerSessionTools.js +16 -29
  867. package/dist/server/runDerivedOperation.js +2 -0
  868. package/dist/signals/SigrokRecordingProvider.js +13 -6
  869. package/dist/sqlite/SqliteDatabaseFailures.js +25 -12
  870. package/dist/sqlite/SqliteDatabaseInspection.js +27 -12
  871. package/dist/sqlite/SqliteDatabaseSnapshot.js +58 -32
  872. package/dist/sqlite/SqliteDatabaseWorkerExecution.js +18 -3
  873. package/dist/wasm/WabtArtifactProvider.js +64 -42
  874. package/dist/wasm/WabtFailures.js +19 -1
  875. package/dist/wasm/WabtRuntime.js +58 -0
  876. package/dist/wasm/WasmGlueAdapter.js +20 -7
  877. package/dist/windows/WindowsNativeLoader.js +16 -2
  878. package/dist/windows/WindowsPrivateRuntime.js +44 -1
  879. package/licenses/npm-dependencies.txt +146 -1
  880. package/licenses/npm-runtime-notices.txt +175 -1
  881. package/native/windows/README.md +44 -7
  882. package/native/windows/build/manifest.json +2 -2
  883. package/native/windows/build/rea-windows-x64.node +0 -0
  884. package/package.json +11 -3
  885. package/scripts/electron-active-hook-boundaries.cjs +15 -2
  886. package/scripts/electron-active-hook.cjs +408 -46
  887. package/scripts/hopper-demo-x11.py +12 -10
  888. package/scripts/rea.mjs +62 -15
  889. package/skills/reverse-engineer-anything/SKILL.md +21 -7
  890. package/skills/reverse-engineer-anything/references/android-applications.md +3 -1
  891. package/skills/reverse-engineer-anything/references/javascript-applications.md +44 -1
  892. package/skills/reverse-engineer-anything/references/native-and-artifacts.md +30 -10
  893. package/dist/cli-runtime/ArtifactResourceScope-DQWTcUwE.js +0 -114
  894. package/dist/cli-runtime/ClientConfigPath-c6jr6INc.js +0 -36
  895. package/dist/cli-runtime/IdaConfiguration-CtGP7EKo.js +0 -1094
  896. package/dist/cli-runtime/JebMcpEndpoint-DUytrn5G.js +0 -428
  897. package/dist/cli-runtime/MacHopperPaths-CwL5lYPX.js +0 -434
  898. package/dist/cli-runtime/OwnedCommand-Cj9GhmPR.js +0 -112
  899. package/dist/cli-runtime/RegularFile-B_6KPCNQ.js +0 -139
  900. package/dist/cli-runtime/RegularFileRead-DVlC5faM.js +0 -125
  901. package/dist/cli-runtime/analysisErrorPresentation-DGt7TdsH.js +0 -497
  902. package/dist/cli-runtime/application__javascript__ElectronObservationService-DEsR8KDN.js +0 -63
  903. package/dist/cli-runtime/artifactOperationError-B7n03FbD.js +0 -27
  904. package/dist/cli-runtime/browserObservationError-Dx6xRTjb.js +0 -40
  905. package/dist/cli-runtime/cliResultOutput-DsRMI8CJ.js +0 -780
  906. package/dist/cli-runtime/mcpStartupPolicy-CVVSOmRc.js +0 -21
  907. package/dist/cli-runtime/propertyListKeys-G8e74YWb.js +0 -248
  908. package/dist/cli-runtime/providerAdapterError-DAjhICdr.js +0 -25
  909. package/dist/cli-runtime/readFileHandleChunks-dp60iZ6v.js +0 -38
  910. package/dist/hopper/HopperRegexWorker.js +0 -27
  911. package/dist/mcp/ArtifactProviderMetadata-b7pOK5_t.js +0 -76
  912. package/dist/mcp/ArtifactResourceScope-P3tq5z8Z.js +0 -162
  913. package/dist/mcp/BoundedFileBytes-DuczXiQZ.js +0 -68
  914. package/dist/mcp/CdpTargetSession-BsPoKhEU.js +0 -86
  915. package/dist/mcp/ProcedureAddressResolution-CQpuwm1h.js +0 -19
  916. package/dist/mcp/analysisErrorCore-DXRTvF_m.js +0 -235
  917. package/dist/mcp/artifactOperationError-CkHMMaf7.js +0 -27
  918. package/dist/mcp/digests-BFoWUT_-.js +0 -223
  919. package/dist/mcp/propertyListKeys-DD25WsjI.js +0 -553
  920. package/dist/mcp/providerAdapterError-sDxToNal.js +0 -25
  921. package/dist/mcp/unicodeCodePointOrder-BezCbTpg.js +0 -26
@@ -1,23 +1,31 @@
1
- import { createHash, randomUUID } from "node:crypto";
2
- import { createWriteStream } from "node:fs";
3
- import { access, chmod, mkdir, mkdtemp, opendir, open, rm, stat, } from "node:fs/promises";
4
- import { tmpdir } from "node:os";
1
+ import { countDecodedFiles } from "./ApktoolDecodedInventory.js";
2
+ import { ApktoolWorkspace } from "./ApktoolWorkspace.js";
3
+ import { ArtifactResourceScope } from "../artifacts/ArtifactResourceScope.js";
4
+ import { AnalysisCleanupLease, AnalysisCleanupLeaseGroup, } from "../artifacts/AnalysisCleanupLease.js";
5
+ import { ArtifactReaderFailure } from "../artifacts/ArtifactReader.js";
6
+ import { ArtifactFileCleanupFailure, artifactFilePrimaryFailure, artifactFileCancellationCause, } from "../artifacts/ArtifactFileOperation.js";
7
+ import { PrivateRuntimeRoot } from "../process/PrivateRuntimeRoot.js";
8
+ import { capturedApktoolFailureOutput } from "./ApktoolCommandOutput.js";
9
+ import { ApktoolCommandCleanup } from "./ApktoolCommandCleanup.js";
10
+ import { AnalysisError } from "../domain/analysisErrorBase.js";
11
+ import { analysisClientFailureForOperation } from "../providers/AnalysisClientFailure.js";
12
+ import { randomUUID } from "node:crypto";
13
+ import { mkdir } from "node:fs/promises";
5
14
  import { join } from "node:path";
6
- import { Transform } from "node:stream";
7
- import { pipeline } from "node:stream/promises";
8
15
  import { providerConfigurationRefusal } from "../domain/providerConfigurationRefusal.js";
9
- import { createAnalysisExecution, } from "../application/AnalysisProvider.js";
10
- import { androidLocaleQualifierSchema, } from "../domain/apktool/apktoolResourceAnalysis.js";
11
- import { AnalysisCapabilityUnavailableError, AnalysisCancelledError, AnalysisInputError, AnalysisProtocolError, AnalysisResourceConstraintError, AnalysisTimeoutError, AnalysisUnsupportedTargetError, } from "../domain/analysisErrorCore.js";
16
+ import { createAnalysisExecution, createAnalysisExecutionEvidence, } from "../application/AnalysisProvider.js";
17
+ import { apktoolResultSchemas, } from "../domain/apktool/apktoolResourceAnalysis.js";
18
+ import { projectApktoolStringTables } from "./ApktoolStringTables.js";
19
+ import { AnalysisCapabilityUnavailableError, AnalysisCancelledError, AnalysisProtocolError, AnalysisResourceConstraintError, AnalysisTimeoutError, AnalysisUnsupportedTargetError, } from "../domain/analysisErrorCore.js";
12
20
  import { analysisErrorWithCleanupFailure } from "../domain/analysisErrorCleanup.js";
13
21
  import { err, ok } from "../domain/result.js";
22
+ import { ProviderAdapterError } from "../domain/providerAdapterError.js";
14
23
  import { ProviderCleanupError } from "../domain/providerCleanupError.js";
15
- import { openRegularFile, sameRegularFileState, } from "../filesystem/RegularFile.js";
16
24
  import { OwnedCommandFailure, runOwnedCommand, } from "../process/OwnedCommand.js";
17
25
  import { snapshotEnvironment } from "../process/snapshotEnvironment.js";
18
26
  import { WindowsBatchCommandError } from "../process/WindowsBatchCommand.js";
19
27
  import { APKTOOL_COMMAND_ENV, ApktoolConfigurationFailure, apktoolConfigurationAvailability, apktoolInvocation, inspectApktoolClient, resolveApktoolCommand, } from "./ApktoolConfiguration.js";
20
- import { parseApktoolYml, parseDecodedStrings, parseManifestPackage, } from "./ApktoolDecodeOutput.js";
28
+ import { parseApktoolYml, parseManifestPackage, } from "./ApktoolDecodeOutput.js";
21
29
  /** Stable identity for the Apktool resource-decoding provider. */
22
30
  export const APKTOOL_PROVIDER_IDENTITY = {
23
31
  id: "apktool",
@@ -27,58 +35,15 @@ export const APKTOOL_PROVIDER_IDENTITY = {
27
35
  const DECODE_TIMEOUT_MS = 600_000;
28
36
  const DECODE_MAX_OUTPUT_BYTES = 4 * 1024 * 1024;
29
37
  const MANIFEST_MAX_BYTES = 512 * 1024;
30
- const STRINGS_XML_MAX_BYTES = 8 * 1024 * 1024;
31
- const MAX_STRINGS = 2_000;
32
38
  const MAX_DECODED_ENTRIES_VISITED = 100_000;
33
39
  const STDERR_EXCERPT_BYTES = 512;
34
40
  const throwIfCancelled = (operation, signal) => {
35
41
  if (signal?.aborted === true)
36
- throw new AnalysisCancelledError(operation);
42
+ throw new AnalysisCancelledError(operation, { cause: signal.reason });
37
43
  };
38
- /** Read at most the byte budget plus one byte, before decoding UTF-8. */
39
- const readBoundedText = async (path, budget, operation, signal) => {
40
- const file = await open(path, "r").catch((cause) => {
41
- if (cause.code === "ENOENT")
42
- return null;
43
- throw cause;
44
- });
45
- if (file === null)
46
- return { text: null, truncated: false };
47
- try {
48
- throwIfCancelled(operation, signal);
49
- const bytes = Buffer.alloc(budget + 1);
50
- let length = 0;
51
- while (length < bytes.length) {
52
- throwIfCancelled(operation, signal);
53
- const result = await file.read(bytes, length, bytes.length - length, null);
54
- if (result.bytesRead === 0)
55
- break;
56
- length += result.bytesRead;
57
- }
58
- throwIfCancelled(operation, signal);
59
- const truncated = length > budget;
60
- // A prefix may end within a UTF-8 character; omit those trailing bytes.
61
- try {
62
- const decoder = new TextDecoder("utf-8", { fatal: true });
63
- return {
64
- text: decoder.decode(bytes.subarray(0, Math.min(length, budget)), {
65
- stream: truncated,
66
- }),
67
- truncated,
68
- };
69
- }
70
- catch (cause) {
71
- throw new AnalysisProtocolError(`apktool produced invalid UTF-8 in ${path}`, { cause });
72
- }
73
- }
74
- finally {
75
- await file.close();
76
- }
77
- };
78
- const localeQualifier = (locale) => locale.replace(/^([a-z]{2,3})-([A-Z]{2}|[0-9]{3})$/u, "$1-r$2");
79
- const runApktool = async (operation, selection, arguments_, limits, signal, environment, onCleanupOwner) => {
44
+ const runApktool = async (operation, targetPath, selection, arguments_, limits, signal, environment, commands, root) => {
80
45
  if (signal?.aborted === true)
81
- return err(new AnalysisCancelledError(operation));
46
+ return err(new AnalysisCancelledError(operation, { cause: signal?.reason }));
82
47
  let invocation;
83
48
  try {
84
49
  invocation = apktoolInvocation(selection, arguments_, environment);
@@ -94,6 +59,9 @@ const runApktool = async (operation, selection, arguments_, limits, signal, envi
94
59
  command: invocation.command,
95
60
  arguments: invocation.arguments,
96
61
  windowsVerbatimArguments: invocation.windowsVerbatimArguments,
62
+ // Apktool launchers are commonly interpreter scripts, so ownership is
63
+ // proved by the run token rather than the launcher's argv prefix.
64
+ expectedCommand: null,
97
65
  runId: randomUUID(),
98
66
  hostEnvironment: environment,
99
67
  }, {
@@ -103,87 +71,62 @@ const runApktool = async (operation, selection, arguments_, limits, signal, envi
103
71
  return ok({ stdout: output.stdout.text, stderr: output.stderr.text });
104
72
  }
105
73
  catch (cause) {
106
- if (!(cause instanceof OwnedCommandFailure))
107
- return err(new AnalysisProtocolError(`apktool failed for ${operation}`, { cause }));
108
- if (cause.cleanupOwner !== undefined)
109
- onCleanupOwner(cause.cleanupOwner);
110
- const output = cause.snapshot;
111
- const capturedOutput = output === null
112
- ? undefined
113
- : {
114
- stdout: output.stdout.text,
115
- stderr: output.stderr.text,
116
- truncated: output.diagnosticTruncated === true,
117
- stdout_bytes: output.stdout.bytes,
118
- stderr_bytes: output.stderr.bytes,
119
- exit_code: output.exitCode ?? null,
120
- signal: output.signal ?? null,
121
- };
122
- const cleanup = cause.cleanupFailure === null
123
- ? undefined
124
- : {
125
- reason: cause.cleanupFailure,
126
- resources: cause.resources,
127
- };
128
- if (cause.reason === "cancelled")
129
- return err(new AnalysisCancelledError(operation, {
130
- cause,
131
- ...(cleanup === undefined ? {} : { cleanup }),
132
- ...(capturedOutput === undefined ? {} : { capturedOutput }),
133
- }));
134
- if (cause.reason === "timeout")
135
- return err(new AnalysisTimeoutError(operation, limits.timeoutMs, {
136
- cause,
137
- ...(cleanup === undefined ? {} : { cleanup }),
138
- ...(capturedOutput === undefined ? {} : { capturedOutput }),
139
- }));
140
- if (cause.reason === "output-limit")
141
- return err(new AnalysisResourceConstraintError(operation, "memory", `apktool output exceeded the ${String(limits.maxOutputBytes)}-byte capture budget`, { max_output_bytes: limits.maxOutputBytes }, {
142
- cause,
143
- ...(cleanup === undefined ? {} : { cleanup }),
144
- ...(capturedOutput === undefined ? {} : { capturedOutput }),
145
- }));
146
- return err(new AnalysisUnsupportedTargetError(operation, selection.command, output?.stderr.text.trim().slice(0, STDERR_EXCERPT_BYTES) ||
147
- `apktool exited with code ${String(output?.exitCode ?? "unknown")} for ${operation}`, {
148
- cause,
149
- ...(cleanup === undefined ? {} : { cleanup }),
150
- ...(capturedOutput === undefined ? {} : { capturedOutput }),
151
- }));
74
+ return err(commands.retainFailure(cause, apktoolCommandFailure(cause, operation, targetPath, selection, limits), operation, root));
152
75
  }
153
76
  };
154
- /** Count files while bounding streamed directory-entry traversal. */
155
- const countDecodedFiles = async (root, signal, operation) => {
156
- let count = 0;
157
- let capped = false;
158
- let visited = 0;
159
- const directories = [root];
160
- const locales = [];
161
- while (directories.length > 0 && !capped) {
162
- throwIfCancelled(operation, signal);
163
- const directory = directories.pop();
164
- for await (const entry of await opendir(directory)) {
165
- throwIfCancelled(operation, signal);
166
- if (visited >= MAX_DECODED_ENTRIES_VISITED) {
167
- capped = true;
168
- break;
169
- }
170
- visited += 1;
171
- const path = join(directory, entry.name);
172
- if (entry.isDirectory()) {
173
- directories.push(path);
174
- if (directory === join(root, "res")) {
175
- const match = /^values-(.+)$/u.exec(entry.name);
176
- if (match !== null &&
177
- androidLocaleQualifierSchema.safeParse(match[1]).success &&
178
- (await access(join(path, "strings.xml")).then(() => true, () => false)))
179
- locales.push(match[1]);
180
- }
181
- }
182
- else if (entry.isFile())
183
- count += 1;
184
- }
185
- }
186
- return { count, capped, locales: locales.sort() };
77
+ const apktoolCommandFailure = (cause, operation, targetPath, selection, limits) => {
78
+ const capturedOutput = capturedApktoolFailureOutput(cause);
79
+ if (!(cause instanceof OwnedCommandFailure))
80
+ return new ProviderAdapterError("apktool", operation, {
81
+ cause,
82
+ diagnostics: {
83
+ selected_command: selection.command,
84
+ target_path: targetPath,
85
+ },
86
+ ...(capturedOutput === undefined ? {} : { capturedOutput }),
87
+ });
88
+ const output = cause.snapshot;
89
+ if (cause.reason === "cancelled")
90
+ return new AnalysisCancelledError(operation, {
91
+ cause: cause.cancellation?.reason,
92
+ ...(capturedOutput === undefined ? {} : { capturedOutput }),
93
+ });
94
+ if (cause.reason === "timeout")
95
+ return new AnalysisTimeoutError(operation, limits.timeoutMs, {
96
+ cause,
97
+ ...(capturedOutput === undefined ? {} : { capturedOutput }),
98
+ });
99
+ if (cause.reason === "output-limit")
100
+ return new AnalysisResourceConstraintError(operation, "memory", `apktool output exceeded the ${String(limits.maxOutputBytes)}-byte capture budget`, { max_output_bytes: limits.maxOutputBytes }, {
101
+ cause,
102
+ ...(capturedOutput === undefined ? {} : { capturedOutput }),
103
+ });
104
+ // A physical launcher/capture failure does not establish target refusal.
105
+ // Only a fully collected ordinary nonzero decode exit carries that meaning.
106
+ if (cause.processError !== undefined ||
107
+ cause.collectionFailure ||
108
+ cause.preparationFailure !== undefined ||
109
+ output === null ||
110
+ output.exitCode === null ||
111
+ output.exitCode === undefined ||
112
+ output.exitCode === 0 ||
113
+ output.signal !== null ||
114
+ output.outputIncomplete === true ||
115
+ output.diagnosticTruncated === true)
116
+ return new ProviderAdapterError("apktool", operation, {
117
+ cause,
118
+ userMessage: `The selected Apktool command failed while decoding ${targetPath}`,
119
+ diagnostics: {
120
+ selected_command: selection.command,
121
+ target_path: targetPath,
122
+ },
123
+ ...(capturedOutput === undefined ? {} : { capturedOutput }),
124
+ });
125
+ return new AnalysisUnsupportedTargetError(operation, targetPath, output?.stderr.text.trim().slice(0, STDERR_EXCERPT_BYTES) ||
126
+ `apktool exited with code ${String(output?.exitCode ?? "unknown")} for ${operation}`, {
127
+ cause,
128
+ ...(capturedOutput === undefined ? {} : { capturedOutput }),
129
+ });
187
130
  };
188
131
  /**
189
132
  * Apktool resource decoding over a caller-selected launcher.
@@ -194,9 +137,9 @@ const countDecodedFiles = async (root, signal, operation) => {
194
137
  */
195
138
  export class ApktoolProvider {
196
139
  selectedEnvironment;
197
- workspaces = new Set();
140
+ #artifacts = new ArtifactResourceScope();
198
141
  removeWorkspace;
199
- #pendingCommandOwners = new Map();
142
+ #commands = new ApktoolCommandCleanup();
200
143
  #shutdown = new AbortController();
201
144
  #active = new Set();
202
145
  #closing = false;
@@ -206,9 +149,7 @@ export class ApktoolProvider {
206
149
  options.environment === undefined
207
150
  ? undefined
208
151
  : snapshotEnvironment(options.environment);
209
- this.removeWorkspace =
210
- options.removeWorkspace ??
211
- ((path) => rm(path, { recursive: true, force: true }));
152
+ this.removeWorkspace = options.removeWorkspace;
212
153
  }
213
154
  operationEnvironment() {
214
155
  const ambient = snapshotEnvironment(process.env);
@@ -229,13 +170,20 @@ export class ApktoolProvider {
229
170
  const operationSignal = signal === undefined
230
171
  ? this.#shutdown.signal
231
172
  : AbortSignal.any([signal, this.#shutdown.signal]);
232
- return this.#track(this.#inspectAvailability(operationSignal));
173
+ return this.#track(this.#commands
174
+ .run(() => this.#artifacts.run(() => this.#inspectAvailability(operationSignal)), "inspect_apktool_client")
175
+ .catch((cause) => {
176
+ throw analysisClientFailureForOperation(cause, "apktool", "inspect_apktool_client");
177
+ }));
233
178
  }
234
179
  async #inspectAvailability(signal) {
235
180
  const environment = this.operationEnvironment();
236
181
  try {
237
182
  const selection = await resolveApktoolCommand(environment, process.platform, signal);
238
- await inspectApktoolClient(selection, signal, environment);
183
+ await inspectApktoolClient(selection, this.#commands, {
184
+ signal,
185
+ environment,
186
+ });
239
187
  throwIfCancelled("inspect_apktool_client", signal);
240
188
  return {
241
189
  status: "available",
@@ -248,8 +196,9 @@ export class ApktoolProvider {
248
196
  };
249
197
  }
250
198
  catch (cause) {
251
- if (cause instanceof ApktoolConfigurationFailure)
199
+ if (cause instanceof ApktoolConfigurationFailure) {
252
200
  return apktoolConfigurationAvailability(cause);
201
+ }
253
202
  throw cause;
254
203
  }
255
204
  }
@@ -269,29 +218,33 @@ export class ApktoolProvider {
269
218
  const signal = options?.signal === undefined
270
219
  ? this.#shutdown.signal
271
220
  : AbortSignal.any([options.signal, this.#shutdown.signal]);
272
- return this.#track(this.#execute(request, signal));
221
+ return this.#track(this.#commands
222
+ .run(() => this.#artifacts.run(() => this.#execute(request, signal)), request.operation)
223
+ .catch((cause) => err(analysisClientFailureForOperation(cause, "apktool", request.operation))));
273
224
  }
274
225
  async #execute(request, signal) {
275
226
  if (signal?.aborted === true)
276
- return err(new AnalysisCancelledError(request.operation));
227
+ return err(new AnalysisCancelledError(request.operation, { cause: signal.reason }));
277
228
  const environment = this.operationEnvironment();
278
229
  let selection;
279
230
  let identity;
280
231
  try {
281
232
  selection = await resolveApktoolCommand(environment, process.platform, signal);
282
- identity = await inspectApktoolClient(selection, signal, environment);
233
+ identity = await inspectApktoolClient(selection, this.#commands, {
234
+ signal,
235
+ environment,
236
+ });
283
237
  }
284
238
  catch (cause) {
285
- if (cause instanceof AnalysisCancelledError ||
286
- cause instanceof AnalysisTimeoutError)
287
- return err(cause);
239
+ if (cause instanceof AnalysisError)
240
+ return err(analysisClientFailureForOperation(cause, "apktool", request.operation));
288
241
  if (cause instanceof ApktoolConfigurationFailure) {
289
242
  return err(providerConfigurationRefusal(APKTOOL_PROVIDER_IDENTITY.id, request.operation, cause));
290
243
  }
291
244
  return err(new AnalysisProtocolError(`apktool version probe failed for ${request.operation}`, { cause }));
292
245
  }
293
246
  if (signal.aborted)
294
- return err(new AnalysisCancelledError(request.operation));
247
+ return err(new AnalysisCancelledError(request.operation, { cause: signal.reason }));
295
248
  const client = {
296
249
  command: selection.command,
297
250
  command_source: selection.commandSource,
@@ -302,8 +255,10 @@ export class ApktoolProvider {
302
255
  version: identity.version,
303
256
  };
304
257
  if (request.operation === "inspect_apktool_client")
305
- return ok(createAnalysisExecution({ client }, provider));
306
- return this.decodeResources(request.operation, selection, environment, client, provider, request.input, signal);
258
+ return ok(createAnalysisExecution({ client }, provider, {
259
+ limitations: identity.limitations,
260
+ }));
261
+ return this.decodeResources(request.operation, selection, environment, client, provider, request.input, identity.limitations, signal);
307
262
  }
308
263
  #track(operation) {
309
264
  const settled = operation.then(() => undefined, () => undefined);
@@ -314,104 +269,45 @@ export class ApktoolProvider {
314
269
  async #drainAndClean() {
315
270
  await Promise.all(this.#active);
316
271
  const failures = [];
317
- for (const [owner, root] of this.#pendingCommandOwners) {
318
- try {
319
- const stopped = await owner.stop();
320
- if (stopped.status === "incomplete")
321
- throw new Error(stopped.reason);
322
- this.#pendingCommandOwners.delete(owner);
323
- }
324
- catch (cause) {
325
- failures.push(new Error(`apktool process cleanup remains incomplete for ${root}: ${cause instanceof Error ? cause.message : String(cause)}`, { cause }));
326
- }
327
- }
328
- if (failures.length > 0)
329
- throw new AggregateError(failures, "Apktool process cleanup failed");
330
- for (const path of this.workspaces) {
272
+ for (const close of [
273
+ () => this.#commands.close(),
274
+ () => this.#artifacts.close(),
275
+ ]) {
331
276
  try {
332
- await this.removeWorkspace(path);
333
- this.workspaces.delete(path);
277
+ await close();
334
278
  }
335
279
  catch (cause) {
336
- failures.push(cause);
280
+ failures.push(analysisClientFailureForOperation(cause, "apktool", "close"));
337
281
  }
338
282
  }
339
- if (failures.length > 0)
340
- throw new AggregateError(failures, "Apktool workspace cleanup failed");
283
+ const first = failures.shift();
284
+ if (first === undefined)
285
+ return;
286
+ throw failures.reduce((primary, cleanup) => analysisErrorWithCleanupFailure(primary, cleanup, "close").bindCleanupDependencies([primary, cleanup]), first);
341
287
  }
342
- async decodeResources(operation, selection, environment, client, provider, input, signal) {
343
- const root = await mkdtemp(join(tmpdir(), "rea-apktool-"));
344
- this.workspaces.add(root);
288
+ async decodeResources(operation, selection, environment, client, provider, input, clientLimitations, signal) {
289
+ const runtime = await PrivateRuntimeRoot.create({ prefix: "rea-apktool-" });
290
+ const resources = new ApktoolWorkspace(runtime, this.#commands, this.removeWorkspace);
291
+ const root = resources.path;
345
292
  const workspace = join(root, "decoded");
346
293
  const snapshot = join(root, "input.apk");
347
294
  const framework = join(root, "framework");
348
- let cleanupFailure = null;
349
- // The workspace is removed before the result is returned, so an
350
- // unremovable workspace is reported instead of silently abandoned.
351
- const removeWorkspace = async () => {
352
- if ([...this.#pendingCommandOwners.values()].includes(root)) {
353
- cleanupFailure = `The decode workspace is retained until its apktool process stops: ${root}`;
354
- return;
355
- }
356
- try {
357
- await this.removeWorkspace(root);
358
- this.workspaces.delete(root);
359
- }
360
- catch {
361
- cleanupFailure = `The decode workspace could not be removed: ${root}`;
362
- }
363
- };
364
- const failureWithCleanup = (failure) => cleanupFailure === null
365
- ? failure
366
- : analysisErrorWithCleanupFailure(failure, new ProviderCleanupError(APKTOOL_PROVIDER_IDENTITY.id, [root], { reason: cleanupFailure }, { operation }), operation);
367
- let source;
368
- let sourceAdmissionFailed = false;
295
+ const lease = new AnalysisCleanupLease(() => resources.close(), [root]);
296
+ const owner = { kind: "lease", resource: root, lease };
297
+ this.#artifacts.retain(owner);
298
+ let result;
299
+ let completedDecode;
300
+ let stoppedAt = "metadata";
301
+ const limitations = [
302
+ ...clientLimitations,
303
+ "Decoding skips smali (--no-src); Java-source recovery belongs to the JADX family",
304
+ ];
369
305
  try {
370
- throwIfCancelled(operation, signal);
371
- sourceAdmissionFailed = true;
372
- source = await openRegularFile(input.path, {
373
- symlinks: "follow",
374
- ...(signal === undefined ? {} : { signal }),
375
- });
376
- const sourceInfo = await source.stat();
377
- sourceAdmissionFailed = false;
378
- const sourceSize = sourceInfo.size;
379
- let copiedBytes = 0;
380
- const sourceHash = createHash("sha256");
381
- const boundedSource = new Transform({
382
- transform(chunk, _encoding, callback) {
383
- copiedBytes += chunk.length;
384
- if (copiedBytes > sourceSize) {
385
- callback(new AnalysisInputError(operation, {
386
- cause: new Error(`The selected APK changed while being copied: ${input.path}`),
387
- }));
388
- return;
389
- }
390
- sourceHash.update(chunk);
391
- callback(null, chunk);
392
- },
393
- });
394
- await pipeline(source.createReadStream({
395
- start: 0,
396
- end: sourceSize,
397
- autoClose: false,
398
- ...(signal === undefined ? {} : { signal }),
399
- }), boundedSource, createWriteStream(snapshot, { flags: "wx", mode: 0o600 }), signal === undefined ? {} : { signal });
400
- const finalSourceInfo = await source.stat();
401
- if (copiedBytes !== sourceSize ||
402
- !sameRegularFileState(sourceInfo, finalSourceInfo))
403
- throw new AnalysisInputError(operation, {
404
- cause: new Error(`The selected APK changed while being copied: ${input.path}`),
405
- });
406
- const sha256 = sourceHash.digest("hex");
407
- await source.close();
408
- source = undefined;
409
- await chmod(snapshot, 0o400);
410
- throwIfCancelled(operation, signal);
411
- const snapshotInfo = await stat(snapshot);
306
+ const identity = await resources.snapshotInput(input.path, operation, signal);
307
+ const sha256 = identity.sha256;
412
308
  await mkdir(workspace);
413
309
  await mkdir(framework);
414
- const decoded = await runApktool(operation, selection, [
310
+ const decoded = await runApktool(operation, input.path, selection, [
415
311
  "d",
416
312
  "--no-src",
417
313
  "-f",
@@ -423,121 +319,144 @@ export class ApktoolProvider {
423
319
  ], {
424
320
  timeoutMs: DECODE_TIMEOUT_MS,
425
321
  maxOutputBytes: DECODE_MAX_OUTPUT_BYTES,
426
- }, signal, environment, (owner) => this.#pendingCommandOwners.set(owner, root));
322
+ }, signal, environment, this.#commands, root);
427
323
  if (!decoded.ok) {
428
- await removeWorkspace();
429
- return err(failureWithCleanup(decoded.error));
324
+ throw decoded.error;
430
325
  }
326
+ completedDecode = {
327
+ client,
328
+ target: { path: input.path, bytes: identity.bytes, sha256 },
329
+ locale: input.locale ?? null,
330
+ coverage: "partial",
331
+ };
431
332
  throwIfCancelled(operation, signal);
432
- const yml = await readBoundedText(join(workspace, "apktool.yml"), MANIFEST_MAX_BYTES, operation, signal);
333
+ const yml = await resources.readText(join(workspace, "apktool.yml"), MANIFEST_MAX_BYTES, signal);
433
334
  if (yml.text === null || yml.truncated) {
434
335
  throw new AnalysisProtocolError(`apktool produced missing or oversized apktool.yml: ${input.path}`);
435
336
  }
436
337
  const metadata = parseApktoolYml(yml.text);
437
- const manifestRead = await readBoundedText(join(workspace, "AndroidManifest.xml"), MANIFEST_MAX_BYTES, operation, signal);
338
+ completedDecode.metadata = {
339
+ version_name: metadata.versionName,
340
+ version_code: metadata.versionCode,
341
+ min_sdk_version: metadata.minSdkVersion,
342
+ target_sdk_version: metadata.targetSdkVersion,
343
+ };
344
+ stoppedAt = "manifest";
345
+ const manifestRead = await resources.readText(join(workspace, "AndroidManifest.xml"), MANIFEST_MAX_BYTES, signal);
438
346
  const manifest = manifestRead.text;
347
+ completedDecode.manifest = manifest;
348
+ if (manifestRead.truncated) {
349
+ limitations.push(`manifest is truncated at ${String(MANIFEST_MAX_BYTES)} bytes`);
350
+ }
439
351
  const packageName = manifest === null || manifestRead.truncated
440
352
  ? null
441
353
  : parseManifestPackage(manifest);
442
- const stringsDirectory = input.locale === undefined
443
- ? "values"
444
- : `values-${localeQualifier(input.locale)}`;
445
- const stringsRead = input.include_strings
446
- ? await readBoundedText(join(workspace, "res", stringsDirectory, "strings.xml"), STRINGS_XML_MAX_BYTES, operation, signal)
447
- : { text: null, truncated: false };
448
- // Do not parse an incomplete XML document as though its projection were complete.
449
- const stringsXml = stringsRead.truncated ? null : stringsRead.text;
450
- const parsedStrings = stringsXml === null
451
- ? { entries: [], unparsedCount: 0 }
452
- : parseDecodedStrings(stringsXml);
453
- const bounded = parsedStrings.entries.slice(0, MAX_STRINGS);
454
- const files = await countDecodedFiles(workspace, signal, operation);
354
+ completedDecode.metadata.package_name = packageName;
355
+ stoppedAt = "inventory";
356
+ const inventory = await countDecodedFiles(resources, workspace, signal, MAX_DECODED_ENTRIES_VISITED);
357
+ const files = inventory.ok ? inventory.value : inventory.error.partial;
358
+ completedDecode.locales = [...files.locales];
359
+ completedDecode.decoded_file_count = files.count;
360
+ if (files.unreadableStringsTables.length > 0) {
361
+ limitations.push(`String tables omitted because they are not regular files: ${files.unreadableStringsTables.map((table) => `${JSON.stringify(table.path)} (${table.kind})`).join(", ")}`);
362
+ }
363
+ if (files.otherStringsTables.length > 0) {
364
+ limitations.push(`Other strings tables are not selected by locale; their resource configuration suffixes are preserved without inferring Android runtime matching: ${files.otherStringsTables.map((table) => JSON.stringify(table)).join(", ")}`);
365
+ }
366
+ if (files.capped) {
367
+ limitations.push(`Decoded workspace enumeration stopped after ${String(MAX_DECODED_ENTRIES_VISITED)} entries; decoded_file_count and locales may be partial`);
368
+ }
369
+ if (!inventory.ok)
370
+ throw inventory.error.cause;
455
371
  throwIfCancelled(operation, signal);
456
- const coverage = (stringsXml !== null && parsedStrings.entries.length > MAX_STRINGS) ||
372
+ stoppedAt = "string projection";
373
+ const projection = await projectApktoolStringTables(resources, workspace, input, signal);
374
+ const projectedStrings = projection.ok
375
+ ? projection.value
376
+ : projection.error.partial;
377
+ limitations.push(...projectedStrings.limitations);
378
+ const coverage = projectedStrings.coverage === "partial" ||
457
379
  manifestRead.truncated ||
458
- stringsRead.truncated ||
459
- parsedStrings.unparsedCount > 0 ||
460
- files.capped
380
+ files.capped ||
381
+ files.unreadableStringsTables.length > 0
461
382
  ? "partial"
462
383
  : "complete";
463
- await removeWorkspace();
464
- return ok(createAnalysisExecution({
465
- client,
466
- target: { path: input.path, bytes: snapshotInfo.size, sha256 },
467
- metadata: {
468
- version_name: metadata.versionName,
469
- version_code: metadata.versionCode,
470
- min_sdk_version: metadata.minSdkVersion,
471
- target_sdk_version: metadata.targetSdkVersion,
472
- package_name: packageName,
473
- },
474
- manifest,
475
- strings: bounded,
476
- locale: input.locale ?? null,
477
- locales: files.locales,
478
- decoded_file_count: files.count,
479
- coverage,
480
- }, provider, {
481
- limitations: [
482
- "Decoding skips smali (--no-src); Java-source recovery belongs to the JADX family",
483
- ...(input.locale !== undefined &&
484
- stringsRead.text === null &&
485
- input.include_strings
486
- ? [`No strings.xml was found for locale ${input.locale}`]
487
- : []),
488
- ...(input.include_strings &&
489
- stringsRead.text === null &&
490
- input.locale === undefined
491
- ? [
492
- "No default res/values/strings.xml was found in the decoded workspace",
493
- ]
494
- : []),
495
- ...(parsedStrings.unparsedCount > 0
496
- ? [
497
- `String entries omitted due to malformed XML or unsupported markup: ${String(parsedStrings.unparsedCount)}`,
498
- ]
499
- : []),
500
- ...(parsedStrings.entries.length > MAX_STRINGS
501
- ? [
502
- `strings reports the first ${String(MAX_STRINGS)} of ${String(parsedStrings.entries.length)} entries`,
503
- ]
504
- : []),
505
- ...(manifestRead.truncated
506
- ? [
507
- `manifest is truncated at ${String(MANIFEST_MAX_BYTES)} bytes`,
508
- ]
509
- : []),
510
- ...(stringsRead.truncated
511
- ? [
512
- `strings.xml exceeds the ${String(STRINGS_XML_MAX_BYTES)}-byte projection budget`,
513
- ]
514
- : []),
515
- ...(files.capped
516
- ? [
517
- `Decoded workspace enumeration stopped after ${String(MAX_DECODED_ENTRIES_VISITED)} entries; decoded_file_count and locales may be partial`,
518
- ]
519
- : []),
520
- ...(cleanupFailure === null ? [] : [cleanupFailure]),
521
- ],
384
+ completedDecode.strings = [...projectedStrings.strings];
385
+ if (input.locales !== undefined)
386
+ completedDecode.string_tables = [...projectedStrings.tables];
387
+ completedDecode.coverage = coverage;
388
+ if (!projection.ok)
389
+ throw projection.error.cause;
390
+ result = ok(createAnalysisExecution(apktoolResultSchemas.decode_android_resources.parse(completedDecode), provider, {
391
+ subject: { path: input.path, sha256, format: "apk" },
392
+ limitations,
522
393
  }));
523
394
  }
524
395
  catch (cause) {
525
- await removeWorkspace();
526
- return err(failureWithCleanup(signal?.aborted === true
527
- ? new AnalysisCancelledError(operation, { cause })
528
- : sourceAdmissionFailed
529
- ? new AnalysisInputError(operation, { cause })
530
- : cause instanceof AnalysisInputError
531
- ? cause
532
- : cause instanceof AnalysisCancelledError ||
533
- cause instanceof AnalysisProtocolError
534
- ? cause
535
- : new AnalysisProtocolError("Apktool resource projection failed", {
536
- cause,
537
- })));
396
+ const physical = artifactFilePrimaryFailure(cause);
397
+ const primary = physical instanceof AnalysisError
398
+ ? physical
399
+ : physical instanceof ArtifactReaderFailure &&
400
+ physical.reason === "cancelled"
401
+ ? new AnalysisCancelledError(operation, {
402
+ cause: artifactFileCancellationCause(physical),
403
+ })
404
+ : new AnalysisProtocolError("Apktool resource projection failed", {
405
+ cause: physical,
406
+ });
407
+ const failure = analysisClientFailureForOperation(cause, "apktool", operation);
408
+ if (cause instanceof ArtifactReaderFailure &&
409
+ cause.cleanup !== undefined &&
410
+ !(cause instanceof ArtifactFileCleanupFailure))
411
+ new AnalysisCleanupLeaseGroup(failure, [lease]);
412
+ const retained = physical === cause && cause instanceof AnalysisError
413
+ ? cause
414
+ : failure.cleanupIncomplete
415
+ ? analysisErrorWithCleanupFailure(primary, failure, operation).bindCleanupDependencies([primary, failure])
416
+ : primary;
417
+ if (completedDecode !== undefined &&
418
+ retained.partialObservation === undefined) {
419
+ limitations.push(`Decode observation stopped during ${stoppedAt}; fields not yet observed are omitted`);
420
+ const partialExecution = createAnalysisExecution({ ...completedDecode, coverage: "partial" }, provider, {
421
+ subject: {
422
+ path: input.path,
423
+ sha256: completedDecode.target.sha256,
424
+ format: "apk",
425
+ },
426
+ limitations,
427
+ });
428
+ retained.retainPartialObservation(createAnalysisExecutionEvidence(operation, input, partialExecution, "observed"));
429
+ }
430
+ if (resources.snapshot !== undefined &&
431
+ retained.partialObservation === undefined)
432
+ retained.retainPartialObservation({
433
+ kind: "file-snapshot-hash",
434
+ ...resources.snapshot,
435
+ });
436
+ result = err(retained);
538
437
  }
539
- finally {
540
- await source?.close().catch(() => undefined);
438
+ const released = await this.#artifacts.release(owner);
439
+ const observation = result.ok && (released.kind === "failed" || signal?.aborted === true)
440
+ ? createAnalysisExecutionEvidence(operation, input, result.value, "observed")
441
+ : undefined;
442
+ if (result.ok && signal?.aborted)
443
+ result = err(new AnalysisCancelledError(operation, {
444
+ cause: signal.reason,
445
+ partialObservation: observation,
446
+ }));
447
+ if (released.kind === "failed") {
448
+ const cleanup = new ProviderCleanupError("apktool", [root], {}, {
449
+ operation,
450
+ cause: released.cause,
451
+ ...(observation === undefined
452
+ ? {}
453
+ : { partialObservation: observation }),
454
+ });
455
+ new AnalysisCleanupLeaseGroup(cleanup, [lease]);
456
+ return err(result.ok
457
+ ? cleanup
458
+ : analysisErrorWithCleanupFailure(result.error, cleanup, operation).bindCleanupDependencies([result.error, cleanup]));
541
459
  }
460
+ return result;
542
461
  }
543
462
  }