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,6 +1,4 @@
1
- import { createHash } from "node:crypto";
2
- import { constants } from "node:fs";
3
- import { lstat, open, readlink, realpath } from "node:fs/promises";
1
+ import { lstat, readlink, realpath } from "node:fs/promises";
4
2
  import { join, relative, sep } from "node:path";
5
3
  import { AnalysisInputError } from "../../domain/analysisErrorCore.js";
6
4
  import { resolveTreePath } from "../../domain/apple/dyldPaths.js";
@@ -9,20 +7,23 @@ import { projectInputIssues } from "../../domain/inputIssueProjection.js";
9
7
  import { ArtifactReaderFailure } from "../ArtifactReader.js";
10
8
  import { DirectoryArtifactReader } from "../DirectoryArtifactReader.js";
11
9
  import { consumeWithOrderedReads } from "../OrderedReads.js";
12
- import { hasMachoMagic, readMachoImage } from "./MachoLoadCommandReader.js";
10
+ import { DylibFileAccess, classifyDylibReadFailure, } from "./DylibFileAccess.js";
11
+ import { ArtifactResourceScope } from "../ArtifactResourceScope.js";
12
+ import { assertArtifactReadActive } from "../ArtifactFileOperation.js";
13
13
  const OPERATION = "trace_dylib_resolution";
14
- const HASH_CHUNK_BYTES = 1024 * 1024;
15
14
  /** Concurrent four-byte magic reads while enumerating bundle roots. */
16
15
  const MAGIC_READ_CONCURRENCY = 8;
17
16
  /** Lazily probed, symlink-preserving view of one analyzed directory. */
18
17
  class FilesystemTreeView {
19
18
  root;
19
+ files;
20
20
  signal;
21
21
  #entries = new Map();
22
22
  #images = new Map();
23
23
  #identities = new Map();
24
- constructor(root, signal) {
24
+ constructor(root, files, signal) {
25
25
  this.root = root;
26
+ this.files = files;
26
27
  this.signal = signal;
27
28
  }
28
29
  entry(path) {
@@ -37,7 +38,9 @@ class FilesystemTreeView {
37
38
  const cached = this.#images.get(path);
38
39
  if (cached !== undefined)
39
40
  return cached;
40
- const pending = readImage(join(this.root, path), this.signal).then(({ facts, identity }) => {
41
+ const pending = this.files
42
+ .image(join(this.root, path))
43
+ .then(({ facts, identity }) => {
41
44
  this.#identities.set(path, identity);
42
45
  return facts;
43
46
  });
@@ -49,7 +52,7 @@ class FilesystemTreeView {
49
52
  return this.#identities.get(path);
50
53
  }
51
54
  async #readEntry(path) {
52
- cancelled(this.signal);
55
+ assertArtifactReadActive(this.signal);
53
56
  const absolute = join(this.root, path);
54
57
  try {
55
58
  const metadata = await lstat(absolute);
@@ -71,77 +74,70 @@ export const traceDylibResolution = async (options) => {
71
74
  const parsed = dylibResolutionInputSchema.safeParse(options.parameters);
72
75
  if (!parsed.success)
73
76
  throw new AnalysisInputError(OPERATION, { cause: parsed.error }, projectInputIssues(parsed.error.issues, options.parameters));
74
- // Canonicalization is inside the translated region: a revoked permission
75
- // keeps its reason and path.
76
- let root = options.rootPath;
77
- try {
78
- root = await realpath(options.rootPath);
79
- const target = relative(root, await realpath(options.targetPath))
80
- .split(sep)
81
- .join("/");
82
- const view = new FilesystemTreeView(root, options.signal);
83
- const { roots: requested, unclassified } = parsed.data.roots !== undefined
84
- ? { roots: parsed.data.roots, unclassified: [] }
85
- : options.enumerateRoots
86
- ? await executableRoots(root, view, options.signal)
87
- : { roots: [target], unclassified: [] };
88
- const roots = await requireMachoRoots(view, requested, parsed.data.roots !== undefined);
89
- const trace = await traceDylibLoading(view, {
90
- roots,
91
- unclassified,
92
- ...(parsed.data.architecture === undefined
93
- ? {}
94
- : { architecture: parsed.data.architecture }),
95
- ...(options.signal === undefined ? {} : { signal: options.signal }),
96
- });
97
- // Each digest must describe the same file whose headers were parsed.
98
- const digests = new Map();
99
- for (const { path } of trace.images)
100
- digests.set(path, await fileSha256(join(root, path), {
101
- path,
102
- expected: view.identity(path),
103
- ...(options.signal === undefined ? {} : { signal: options.signal }),
104
- }));
105
- const targetDigest = digests.get(target) ??
106
- (await fileSha256(join(root, target), {
107
- path: target,
108
- expected: undefined,
77
+ const resources = options.resourceScope ?? new ArtifactResourceScope();
78
+ return await resources.run(async () => {
79
+ // Canonicalization is inside the translated region: a revoked permission
80
+ // keeps its reason and path.
81
+ let root = options.rootPath;
82
+ try {
83
+ assertArtifactReadActive(options.signal);
84
+ root = await realpath(options.rootPath);
85
+ assertArtifactReadActive(options.signal);
86
+ const files = new DylibFileAccess(resources, root, options.signal);
87
+ const target = relative(root, await realpath(options.targetPath))
88
+ .split(sep)
89
+ .join("/");
90
+ assertArtifactReadActive(options.signal);
91
+ const view = new FilesystemTreeView(root, files, options.signal);
92
+ const { roots: requested, unclassified } = parsed.data.roots !== undefined
93
+ ? { roots: parsed.data.roots, unclassified: [] }
94
+ : options.enumerateRoots
95
+ ? await executableRoots(root, view, files, options.signal)
96
+ : { roots: [target], unclassified: [] };
97
+ const roots = await requireMachoRoots(view, requested, parsed.data.roots !== undefined);
98
+ const trace = await traceDylibLoading(view, {
99
+ roots,
100
+ unclassified,
101
+ ...(parsed.data.architecture === undefined
102
+ ? {}
103
+ : { architecture: parsed.data.architecture }),
109
104
  ...(options.signal === undefined ? {} : { signal: options.signal }),
110
- }));
111
- if (targetDigest !== options.targetSha256)
112
- throw new ArtifactReaderFailure("integrity", `Active target digest changed: expected ${options.targetSha256}, observed ${targetDigest}`);
113
- return dylibResolutionResultSchema.parse({
114
- ...trace,
115
- root_path: options.rootPath,
116
- target_sha256: options.targetSha256,
117
- images: trace.images.map((image) => ({
118
- ...image,
119
- sha256: digests.get(image.path),
120
- })),
121
- });
122
- }
123
- catch (cause) {
124
- if (options.signal?.aborted === true)
125
- throw new ArtifactReaderFailure("cancelled", "Dylib resolution was cancelled", { cause });
126
- const denied = permissionDenied(cause);
127
- if (denied !== undefined)
128
- throw new ArtifactReaderFailure("unavailable", `Permission denied (${denied.code}) reading ${deniedPath(root, denied.path)}`, { cause });
129
- throw cause;
130
- }
105
+ });
106
+ // Each digest must describe the same file whose headers were parsed.
107
+ const digests = new Map();
108
+ for (const { path } of trace.images)
109
+ digests.set(path, await files.sha256(join(root, path), view.identity(path)));
110
+ const targetDigest = digests.get(target) ??
111
+ (await files.sha256(join(root, target), undefined));
112
+ if (targetDigest !== options.targetSha256)
113
+ throw new ArtifactReaderFailure("integrity", `Active target digest changed: expected ${options.targetSha256}, observed ${targetDigest}`);
114
+ assertArtifactReadActive(options.signal);
115
+ return dylibResolutionResultSchema.parse({
116
+ ...trace,
117
+ root_path: options.rootPath,
118
+ target_sha256: options.targetSha256,
119
+ images: trace.images.map((image) => ({
120
+ ...image,
121
+ sha256: digests.get(image.path),
122
+ })),
123
+ });
124
+ }
125
+ catch (cause) {
126
+ throw classifyDylibReadFailure(root, cause);
127
+ }
128
+ });
131
129
  };
132
130
  /**
133
131
  * Every Mach-O in the bundle with an executable slice is its own process root.
134
132
  * Mach-O files that do not parse are returned separately: whether they are
135
133
  * executables is unknown, so they make coverage partial instead of vanishing.
136
134
  */
137
- const executableRoots = async (root, view, signal) => {
135
+ const executableRoots = async (root, view, files, signal) => {
138
136
  const roots = [];
139
137
  const unclassified = [];
140
138
  // Bundles hold tens of thousands of files and few Mach-O images, so the
141
139
  // magic reads overlap the walk while results are classified in walk order.
142
- await consumeWithOrderedReads(new DirectoryArtifactReader(root).entries(signal), MAGIC_READ_CONCURRENCY, (entry) => entry.kind === "file"
143
- ? startsWithMachoMagic(entry.adapterKey)
144
- : undefined, async (entry, macho) => {
140
+ await consumeWithOrderedReads(new DirectoryArtifactReader(root).entries(signal), MAGIC_READ_CONCURRENCY, (entry) => entry.kind === "file" ? files.startsWithMachoMagic(entry) : undefined, async (entry, macho) => {
145
141
  if (!macho)
146
142
  return;
147
143
  const facts = await view.image(entry.path);
@@ -183,93 +179,6 @@ const requireMachoRoots = async (view, roots, callerSelected) => {
183
179
  }
184
180
  return resolved;
185
181
  };
186
- const startsWithMachoMagic = async (path) => {
187
- const handle = await open(path, constants.O_RDONLY | constants.O_NOFOLLOW);
188
- try {
189
- const buffer = new Uint8Array(4);
190
- const { bytesRead } = await handle.read(buffer, 0, 4, 0);
191
- return hasMachoMagic(buffer.subarray(0, bytesRead));
192
- }
193
- finally {
194
- await handle.close();
195
- }
196
- };
197
- const identityOf = (metadata) => [
198
- metadata.dev,
199
- metadata.ino,
200
- metadata.size,
201
- metadata.mtimeNs,
202
- metadata.ctimeNs,
203
- ].join(":");
204
- const readImage = async (path, signal) => {
205
- cancelled(signal);
206
- const handle = await open(path, constants.O_RDONLY | constants.O_NOFOLLOW);
207
- try {
208
- const metadata = await handle.stat({ bigint: true });
209
- const size = Number(metadata.size);
210
- const facts = await readMachoImage(async (offset, length) => {
211
- cancelled(signal);
212
- const buffer = new Uint8Array(Math.max(0, Math.min(length, size - offset)));
213
- const { bytesRead } = await handle.read(buffer, 0, buffer.length, offset);
214
- return buffer.subarray(0, bytesRead);
215
- }, size);
216
- return { facts, identity: identityOf(metadata) };
217
- }
218
- finally {
219
- await handle.close();
220
- }
221
- };
222
- /** Hash a file, failing if it is not the file (or the version) that was parsed. */
223
- const fileSha256 = async (absolute, options) => {
224
- const { signal } = options;
225
- const handle = await open(absolute, constants.O_RDONLY | constants.O_NOFOLLOW);
226
- const unchanged = async () => {
227
- if (options.expected !== undefined &&
228
- identityOf(await handle.stat({ bigint: true })) !== options.expected)
229
- throw new ArtifactReaderFailure("integrity", `${options.path} changed while its dyld load commands were traced`);
230
- };
231
- try {
232
- await unchanged();
233
- const hash = createHash("sha256");
234
- const buffer = new Uint8Array(HASH_CHUNK_BYTES);
235
- for (;;) {
236
- cancelled(signal);
237
- const { bytesRead } = await handle.read(buffer, 0, buffer.length, null);
238
- if (bytesRead === 0)
239
- break;
240
- hash.update(buffer.subarray(0, bytesRead));
241
- }
242
- await unchanged();
243
- return hash.digest("hex");
244
- }
245
- finally {
246
- await handle.close();
247
- }
248
- };
249
- const cancelled = (signal) => {
250
- if (signal?.aborted === true)
251
- throw new ArtifactReaderFailure("cancelled", "Dylib resolution was cancelled");
252
- };
253
- /** A denied path relative to the analyzed root, or absolute when outside it. */
254
- const deniedPath = (root, path) => {
255
- if (path === undefined)
256
- return "a file in the analyzed root";
257
- const inside = relative(root, path);
258
- return inside === "" || inside.startsWith("..") ? path : inside;
259
- };
260
- /** Host permission denials, kept distinct from malformed or missing files. */
261
- const permissionDenied = (cause) => {
262
- if (!(cause instanceof Error) || !("code" in cause))
263
- return undefined;
264
- if (cause.code !== "EACCES" && cause.code !== "EPERM")
265
- return undefined;
266
- return {
267
- code: cause.code,
268
- path: "path" in cause && typeof cause.path === "string"
269
- ? cause.path
270
- : undefined,
271
- };
272
- };
273
182
  const missing = (cause) => cause instanceof Error &&
274
183
  "code" in cause &&
275
184
  (cause.code === "ENOENT" || cause.code === "ENOTDIR");
@@ -3,7 +3,7 @@ import { parseBinary } from "plist";
3
3
  import { appleResourceKeyFields } from "../../domain/apple/appleAssetCatalog.js";
4
4
  import { interfaceBuilderConnectionFieldNames, isUIKitRuntimeConnectionClass, } from "../../domain/apple/interfaceBuilderKeyedArchive.js";
5
5
  import { DirectoryArtifactReader } from "../DirectoryArtifactReader.js";
6
- import { projectPlistValue } from "../../domain/apple/plistValue.js";
6
+ import { projectPlistValue, unknownDateLimitation, } from "../../domain/apple/plistValue.js";
7
7
  import { omittedPrototypeKeysLimitation, parseXmlPropertyList, } from "../../domain/propertyListKeys.js";
8
8
  import { decodeNibArchive } from "./NibArchive.js";
9
9
  import { preflightPropertyListDecode, InterfaceBuilderDecodeBudget, InterfaceBuilderDecodeBudgetExceeded, } from "./InterfaceBuilderDecodeBudget.js";
@@ -12,6 +12,7 @@ import { mergeNibHierarchies, projectNibViewHierarchy, } from "./NibViewHierarch
12
12
  import { jsonValueSchema } from "../../domain/jsonValue.js";
13
13
  import { compareUnicodeCodePoints } from "../../domain/unicodeCodePointOrder.js";
14
14
  import { decodeXmlPlistText } from "../../domain/propertyListXmlText.js";
15
+ import { decodeBinaryPlistNumbers, scanBinaryPlistNumberLiterals, } from "./PlistNumberLiterals.js";
15
16
  import { hasBinaryPlistSignature, hasNibArchiveSignature, } from "../../domain/apple/appleArchiveFormat.js";
16
17
  const MAX_AGGREGATE_INPUT_BYTES = 32 * 1024 * 1024;
17
18
  const MAX_AGGREGATE_DECODE_BYTES = 256 * 1024 * 1024;
@@ -27,6 +28,7 @@ export const analyzeInterfaceBuilderBundle = async (input) => {
27
28
  const incompleteHierarchies = new Map();
28
29
  const unresolvedConnections = new Map();
29
30
  const prototypeKeyOmissions = new Map();
31
+ const unknownDates = new Map();
30
32
  let omitted = 0;
31
33
  let attempted = 0;
32
34
  let aggregateInputBytes = 0;
@@ -44,6 +46,8 @@ export const analyzeInterfaceBuilderBundle = async (input) => {
44
46
  recordOmittedArchive(entry.path, "max_documents");
45
47
  unreportedOmittedArchives += selection.unreportedOmitted;
46
48
  for (const entry of selection.selected) {
49
+ // Plist representation reserved for this document before decoding.
50
+ let plistReservation = 0;
47
51
  try {
48
52
  const remainingInputBytes = MAX_AGGREGATE_INPUT_BYTES - aggregateInputBytes;
49
53
  if (entry.declaredSize !== null &&
@@ -67,20 +71,28 @@ export const analyzeInterfaceBuilderBundle = async (input) => {
67
71
  else {
68
72
  if (!hasBinaryPlistSignature(bytes))
69
73
  xmlText = decodeXmlPlistText(bytes);
70
- const decodedReservation = preflightPropertyListDecode(bytes, decodeBudget.remainingBytes, xmlText);
74
+ const decodedReservation = preflightPropertyListDecode(bytes, decodeBudget.remainingBytes, xmlText, { numberProjection: true });
71
75
  decodeBudget.reserve(decodedReservation.estimatedBytes, "plist representation exceeds the aggregate Interface Builder decode budget");
76
+ plistReservation = decodedReservation.estimatedBytes;
72
77
  binaryPrototypeKeyObserved =
73
78
  decodedReservation.binaryPrototypeKeyObserved;
74
79
  }
75
- const { value: raw, omittedPrototypeKeys } = nib === null
80
+ const { value: raw, omittedPrototypeKeys, unknownDateCount, numberLiterals, } = nib === null
76
81
  ? decodePlist(bytes, xmlText, binaryPrototypeKeyObserved)
77
- : { value: nib.raw, omittedPrototypeKeys: 0 };
82
+ : {
83
+ value: nib.raw,
84
+ omittedPrototypeKeys: 0,
85
+ unknownDateCount: 0,
86
+ numberLiterals: undefined,
87
+ };
78
88
  if (nib !== null && nib.omitted > 0)
79
89
  incompleteHierarchies.set(entry.path, nib.omitted);
80
90
  if (nib !== null && nib.unresolvedConnections > 0)
81
91
  unresolvedConnections.set(entry.path, nib.unresolvedConnections);
82
92
  if (omittedPrototypeKeys !== 0)
83
93
  prototypeKeyOmissions.set(entry.path, omittedPrototypeKeys);
94
+ if (unknownDateCount !== 0)
95
+ unknownDates.set(entry.path, unknownDateCount);
84
96
  const documentHash = createHash("sha256").update(bytes).digest("hex");
85
97
  documents.push({
86
98
  relativePath: entry.path,
@@ -89,6 +101,7 @@ export const analyzeInterfaceBuilderBundle = async (input) => {
89
101
  ? "storyboard_scene"
90
102
  : "nib",
91
103
  raw,
104
+ ...(numberLiterals === undefined ? {} : { numberLiterals }),
92
105
  ...(nib === null || nib.omitted === 0
93
106
  ? {}
94
107
  : { omittedSerializedHierarchyReferences: nib.omitted }),
@@ -98,6 +111,9 @@ export const analyzeInterfaceBuilderBundle = async (input) => {
98
111
  if (input.signal?.aborted === true)
99
112
  throw cause;
100
113
  if (cause instanceof InterfaceBuilderDecodeBudgetExceeded) {
114
+ // A document rejected while decoding, e.g. beyond the shared depth
115
+ // limit, retains no representation; later documents keep its share.
116
+ decodeBudget.release(plistReservation);
101
117
  omitted += 1;
102
118
  recordOmittedArchive(entry.path, cause.reason);
103
119
  continue;
@@ -119,6 +135,7 @@ export const analyzeInterfaceBuilderBundle = async (input) => {
119
135
  incompleteHierarchies,
120
136
  unresolvedConnections,
121
137
  prototypeKeyOmissions,
138
+ unknownDates,
122
139
  invalid,
123
140
  omittedArchives,
124
141
  unreportedOmittedArchives,
@@ -163,7 +180,7 @@ const retainCandidate = (candidates, entry, maximum) => {
163
180
  candidates.pop();
164
181
  };
165
182
  const finalizeHierarchyCoverage = (result, counts) => {
166
- const { incompleteHierarchies, unresolvedConnections, prototypeKeyOmissions, invalid, omittedArchives, unreportedOmittedArchives, } = counts;
183
+ const { incompleteHierarchies, unresolvedConnections, prototypeKeyOmissions, unknownDates, invalid, omittedArchives, unreportedOmittedArchives, } = counts;
167
184
  const archiveDecodePartial = invalid.length > 0 ||
168
185
  prototypeKeyOmissions.size > 0 ||
169
186
  omittedArchives.length > 0;
@@ -236,6 +253,7 @@ const finalizeHierarchyCoverage = (result, counts) => {
236
253
  `Some Interface Builder archives could not be decoded: ${invalid.slice(0, 16).join("; ")}`,
237
254
  ]),
238
255
  ...[...prototypeKeyOmissions].map(([path, count]) => `${path}: ${omittedPrototypeKeysLimitation(count)}`),
256
+ ...[...unknownDates].map(([path, count]) => `${path}: ${unknownDateLimitation(count)}`),
239
257
  ...omittedArchives.map(({ path, reason }) => `${path}: omitted because ${reason.replaceAll("_", " ")}.`),
240
258
  ...(unreportedOmittedArchives === 0
241
259
  ? []
@@ -523,14 +541,39 @@ const readEntry = async (reader, entry, signal, maxInputBytes = MAX_AGGREGATE_IN
523
541
  }
524
542
  return Buffer.concat(chunks, length);
525
543
  };
544
+ /**
545
+ * The shared parser bounds plist value nesting before its recursive decode and
546
+ * reports the limit as a RangeError; that is an omitted archive, not a
547
+ * malformed one.
548
+ */
549
+ const parseXmlWithinDecodeBudget = (text) => {
550
+ try {
551
+ return parseXmlPropertyList(text);
552
+ }
553
+ catch (cause) {
554
+ if (cause instanceof RangeError)
555
+ throw new InterfaceBuilderDecodeBudgetExceeded("aggregate_decode_budget_exhausted", cause.message);
556
+ throw cause;
557
+ }
558
+ };
526
559
  /** Project decoded plist data and dates while retaining omitted-key coverage. */
527
560
  const decodePlist = (bytes, xmlText, binaryPrototypeKeyObserved) => {
528
561
  const binary = hasBinaryPlistSignature(bytes);
529
- const { value, omittedPrototypeKeys } = binary
562
+ const binaryNumberMetadata = binary
563
+ ? scanBinaryPlistNumberLiterals(bytes)
564
+ : undefined;
565
+ const { value, omittedPrototypeKeys, numberLiterals } = binary
530
566
  ? {
531
- value: parseBinary(bytes),
567
+ value: parseBinary(decodeBinaryPlistNumbers(bytes, binaryNumberMetadata)),
532
568
  omittedPrototypeKeys: binaryPrototypeKeyObserved ? null : 0,
569
+ numberLiterals: binaryNumberMetadata.literals,
533
570
  }
534
- : parseXmlPropertyList(xmlText ?? decodeXmlPlistText(bytes));
535
- return { value: projectPlistValue(value).value, omittedPrototypeKeys };
571
+ : parseXmlWithinDecodeBudget(xmlText ?? decodeXmlPlistText(bytes));
572
+ const projected = projectPlistValue(value);
573
+ return {
574
+ value: projected.value,
575
+ omittedPrototypeKeys,
576
+ unknownDateCount: projected.unknownDateCount,
577
+ numberLiterals,
578
+ };
536
579
  };
@@ -33,6 +33,10 @@ export class InterfaceBuilderDecodeBudget {
33
33
  throw new InterfaceBuilderDecodeBudgetExceeded("aggregate_decode_budget_exhausted", message);
34
34
  this.#remainingBytes -= bytes;
35
35
  }
36
+ /** Return a reservation whose representation was rejected and not retained. */
37
+ release(bytes) {
38
+ this.#remainingBytes = Math.min(this.#initialBytes, this.#remainingBytes + bytes);
39
+ }
36
40
  /** Reserve an upper bound for one JSON-serialized string occurrence. */
37
41
  reserveJsonStringOccurrence(value) {
38
42
  // JSON escaping uses at most six ASCII bytes per UTF-16 code unit, plus
@@ -59,22 +63,26 @@ export class InterfaceBuilderDecodeBudget {
59
63
  }
60
64
  }
61
65
  /** Preflight the representation created by the pinned plist decoder. */
62
- export const preflightPropertyListDecode = (bytes, maxBytes, xmlText) => {
66
+ export const preflightPropertyListDecode = (bytes, maxBytes, xmlText, options = {}) => {
67
+ const { numberProjection = false } = options;
63
68
  const expansion = hasBinaryPlistSignature(bytes)
64
- ? estimateBinaryPlistExpansion(bytes, maxBytes)
69
+ ? estimateBinaryPlistExpansion(bytes, maxBytes, { numberProjection })
65
70
  : {
66
- estimatedBytes: estimateXmlPlistExpansion(bytes, maxBytes, xmlText),
71
+ estimatedBytes: estimateXmlPlistExpansion(bytes, maxBytes, xmlText, numberProjection),
67
72
  binaryPrototypeKeyObserved: false,
68
73
  };
69
74
  if (expansion.estimatedBytes > maxBytes)
70
75
  throw new InterfaceBuilderDecodeBudgetExceeded("aggregate_decode_budget_exhausted", "plist representation exceeds the aggregate Interface Builder decode budget");
71
76
  return expansion;
72
77
  };
73
- const estimateXmlPlistExpansion = (bytes, maxBytes, xmlText) => {
78
+ const estimateXmlPlistExpansion = (bytes, maxBytes, xmlText, numberProjection = false) => {
74
79
  const xml = xmlText ?? decodeXmlPlistText(bytes);
75
80
  const decodedSourceBytes = xml.length * 2;
76
81
  let elementCount = 0;
77
- let xmlDepth = 0;
82
+ // Reserve room for numeric source metadata and the projected attribute copy.
83
+ const elementBytes = numberProjection ? 256 : 128;
84
+ // Value nesting is bounded by the shared plist parser, which counts plist
85
+ // value depth; raw element depth would also count the envelope and keys.
78
86
  for (const token of xmlPreflightTokens(xml)) {
79
87
  if (token.doctype) {
80
88
  // Only a declaration outside opaque text can introduce an internal
@@ -84,17 +92,10 @@ const estimateXmlPlistExpansion = (bytes, maxBytes, xmlText) => {
84
92
  continue;
85
93
  }
86
94
  elementCount += 1;
87
- if (token.closing)
88
- xmlDepth -= 1;
89
- else if (!token.selfClosing) {
90
- xmlDepth += 1;
91
- if (xmlDepth > 128)
92
- throw new InterfaceBuilderDecodeBudgetExceeded("aggregate_decode_budget_exhausted", "XML plist nesting exceeds the aggregate Interface Builder decode budget");
93
- }
94
- if (decodedSourceBytes * 2 + elementCount * 128 > maxBytes)
95
+ if (decodedSourceBytes * 2 + elementCount * elementBytes > maxBytes)
95
96
  return maxBytes + 1;
96
97
  }
97
- return decodedSourceBytes * 2 + elementCount * 128;
98
+ return decodedSourceBytes * 2 + elementCount * elementBytes;
98
99
  };
99
100
  /** Consume each XML span once; malformed tokens cannot restart suffix scans. */
100
101
  function* xmlPreflightTokens(xml) {
@@ -139,12 +140,7 @@ function* xmlPreflightTokens(xml) {
139
140
  return;
140
141
  cursor = end + 1;
141
142
  if (doctype || element)
142
- yield {
143
- doctype,
144
- internalSubset,
145
- closing: xml[start + 1] === "/",
146
- selfClosing: xml[end - 1] === "/",
147
- };
143
+ yield { doctype, internalSubset };
148
144
  }
149
145
  }
150
146
  const interfaceBuilderBudgetFailure = (_kind, message) => new InterfaceBuilderDecodeBudgetExceeded("aggregate_decode_budget_exhausted", message);
@@ -154,7 +150,7 @@ const PROTOTYPE_KEY = "__proto__";
154
150
  * which recurses on each reference and copies shared containers. Malformed
155
151
  * structure throws TypeError; budget, depth, and cycle failures use `fail`.
156
152
  */
157
- export const estimateBinaryPlistExpansion = (bytes, maxBytes, { budget = "the aggregate Interface Builder decode budget", fail = interfaceBuilderBudgetFailure, bounds = "strict", } = {}) => {
153
+ export const estimateBinaryPlistExpansion = (bytes, maxBytes, { budget = "the aggregate Interface Builder decode budget", fail = interfaceBuilderBudgetFailure, bounds = "strict", numberProjection = false, } = {}) => {
158
154
  if (bytes.length < 40)
159
155
  throw new TypeError("binary plist trailer is truncated");
160
156
  const trailer = bytes.length - 32;
@@ -182,7 +178,12 @@ export const estimateBinaryPlistExpansion = (bytes, maxBytes, { budget = "the ag
182
178
  offsetTable < 8 ||
183
179
  offsetTable + objectCount * offsetSize > tableEnd)
184
180
  throw new TypeError("binary plist trailer or object table is invalid");
185
- let estimate = bytes.length * 2 + objectCount * 16;
181
+ // Metadata covers the full object table; projected values may repeat through references.
182
+ const objectBytes = numberProjection ? 144 : 16;
183
+ const expandedNodeBytes = numberProjection ? 224 : 96;
184
+ // Number projection may require a same-sized parser-compatible input copy
185
+ // for wide integers. Reserve for it before the caller allocates that copy.
186
+ let estimate = bytes.length * (numberProjection ? 3 : 2) + objectCount * objectBytes;
186
187
  let binaryPrototypeKeyObserved = false;
187
188
  if (estimate > maxBytes)
188
189
  throw fail("expansion", `binary plist object table exceeds ${budget}`);
@@ -202,7 +203,7 @@ export const estimateBinaryPlistExpansion = (bytes, maxBytes, { budget = "the ag
202
203
  throw fail("depth", `binary plist nesting exceeds ${budget}`);
203
204
  if (active.has(entry.object))
204
205
  throw fail("cycle", `binary plist reference cycle exceeds ${budget}`);
205
- estimate += 96;
206
+ estimate += expandedNodeBytes;
206
207
  if (estimate > maxBytes)
207
208
  throw fail("expansion", `binary plist reference expansion exceeds ${budget}`);
208
209
  const offset = readInteger(offsetTable + entry.object * offsetSize, offsetSize);
@@ -258,7 +259,7 @@ export const estimateBinaryPlistExpansion = (bytes, maxBytes, { budget = "the ag
258
259
  const refsEnd = cursor + childCount * referenceSize;
259
260
  if (!Number.isSafeInteger(refsEnd) || refsEnd > objectsEnd)
260
261
  throw new TypeError("binary plist reference table is truncated");
261
- const availableNodes = Math.floor((maxBytes - estimate) / 96);
262
+ const availableNodes = Math.floor((maxBytes - estimate) / expandedNodeBytes);
262
263
  if (childCount > availableNodes - pendingObjectCount)
263
264
  throw fail("expansion", `binary plist reference expansion exceeds ${budget}`);
264
265
  active.add(entry.object);
@@ -3,9 +3,9 @@ import { join } from "node:path";
3
3
  import { parseBinary } from "plist";
4
4
  import { z } from "zod";
5
5
  import { AnalysisInputError, AnalysisUnsupportedTargetError, } from "../../domain/analysisErrorCore.js";
6
- import { projectPlistValue } from "../../domain/apple/plistValue.js";
6
+ import { negativeZeroRealLimitation, nonFiniteRealLimitation, unknownDateLimitation, unknownRealLimitation, } from "../../domain/apple/plistValue.js";
7
7
  import { createPlistNumberProjection } from "../../domain/apple/plistNumbers.js";
8
- import { binaryPlistNumberLiterals, xmlPlistNumberLiterals, } from "./PlistNumberLiterals.js";
8
+ import { decodeBinaryPlistNumbers, scanBinaryPlistNumberLiterals, } from "./PlistNumberLiterals.js";
9
9
  import { omittedPrototypeKeysLimitation, parseXmlPropertyList, } from "../../domain/propertyListKeys.js";
10
10
  import { KeyedArchiveKindError, keyedArchiveInputSchema, keyedArchiveResultSchema, projectKeyedArchive, } from "../../domain/apple/keyedArchive.js";
11
11
  import { DirectoryArtifactReader } from "../DirectoryArtifactReader.js";
@@ -34,21 +34,23 @@ export const decodeKeyedArchiveBytes = (bytes, selection) => {
34
34
  ? new TypeError("binary plist object references form a cycle, which a property list cannot represent")
35
35
  : new RangeError(message),
36
36
  bounds: "decoder",
37
+ numberProjection: true,
37
38
  })
38
39
  : undefined;
40
+ const binaryNumberMetadata = binary
41
+ ? scanBinaryPlistNumberLiterals(bytes)
42
+ : undefined;
39
43
  const parsed = binaryExpansion !== undefined
40
44
  ? {
41
- value: parseBinary(bytes),
45
+ value: parseBinary(decodeBinaryPlistNumbers(bytes, binaryNumberMetadata)),
46
+ numberLiterals: binaryNumberMetadata.literals,
42
47
  omittedPrototypeKeys: binaryExpansion.binaryPrototypeKeyObserved
43
48
  ? null
44
49
  : 0,
45
50
  }
46
51
  : parseXmlPropertyList(xmlText ?? "");
47
- const { value: plistValue, unknownRealCount } = projectPlistValue(parsed.value);
48
- const graph = projectKeyedArchive(plistValue, selection);
49
- const numbers = createPlistNumberProjection(binary
50
- ? binaryPlistNumberLiterals(bytes)
51
- : xmlPlistNumberLiterals(xmlText ?? ""));
52
+ const { nonFiniteRealCount, unknownRealCount, negativeZeroRealCount, unknownDateCount, ...graph } = projectKeyedArchive(parsed.value, selection);
53
+ const numbers = createPlistNumberProjection(parsed.numberLiterals);
52
54
  // Classify the serialized graph before projecting values to typed decimals.
53
55
  // Numeric IDs, node kinds, references and pagination retain their original meaning.
54
56
  const roots = Object.fromEntries(Object.entries(graph.roots).map(([name, value]) => [
@@ -70,11 +72,18 @@ export const decodeKeyedArchiveBytes = (bytes, selection) => {
70
72
  ...(parsed.omittedPrototypeKeys === 0
71
73
  ? []
72
74
  : [omittedPrototypeKeysLimitation(parsed.omittedPrototypeKeys)]),
75
+ ...(nonFiniteRealCount === 0
76
+ ? []
77
+ : [nonFiniteRealLimitation(nonFiniteRealCount)]),
73
78
  ...(unknownRealCount === 0
74
79
  ? []
75
- : [
76
- `${String(unknownRealCount)} non-finite real value(s) are reported as { "$plist_type": "real", "value": null } because JSON evidence cannot preserve NaN vs infinity.`,
77
- ]),
80
+ : [unknownRealLimitation(unknownRealCount)]),
81
+ ...(negativeZeroRealCount === 0
82
+ ? []
83
+ : [negativeZeroRealLimitation(negativeZeroRealCount)]),
84
+ ...(unknownDateCount === 0
85
+ ? []
86
+ : [unknownDateLimitation(unknownDateCount)]),
78
87
  ],
79
88
  };
80
89
  };
@@ -107,7 +107,16 @@ export const readMachoImage = async (readAt, size) => {
107
107
  : { status: "not-mach-o" };
108
108
  const view = viewOf(head);
109
109
  const magic = view.getUint32(0, false);
110
- let header = readFatContainerHeader(head, size);
110
+ let header;
111
+ if (magic === FAT_MAGIC && size <= MAX_LOAD_COMMAND_BYTES) {
112
+ const complete = await readAt(0, size);
113
+ header =
114
+ complete.byteLength === size
115
+ ? readFatContainerHeader(complete, size)
116
+ : readFatContainerHeader(head, size);
117
+ }
118
+ else
119
+ header = readFatContainerHeader(head, size);
111
120
  if (header.state !== "not-fat") {
112
121
  if (header.state === "needs-data") {
113
122
  header = readFatContainerHeader(await readAt(0, header.requiredBytes), size);
@@ -129,8 +138,14 @@ export const readMachoImage = async (readAt, size) => {
129
138
  }
130
139
  if (identity.state === "not-mach-o")
131
140
  return { status: "not-mach-o" };
132
- if (identity.state === "malformed")
141
+ if (identity.state === "malformed") {
142
+ // A large CAFEBABE input whose bounded prefix resembles an invalid
143
+ // known-CPU FAT table remains unknown until its JVM identity can be
144
+ // checked; do not turn the resource limit into a malformed claim.
145
+ if (magic === FAT_MAGIC && size > MAX_LOAD_COMMAND_BYTES)
146
+ throw new MachoFormatIssue("unsupported", "FAT/JVM identity is unresolved because the class identity scan exceeds the 16 MiB limit");
133
147
  throw new MachoFormatIssue(identity.category, identity.reason);
148
+ }
134
149
  if (identity.state === "needs-slice-header")
135
150
  return { status: "not-mach-o" };
136
151
  return {