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,192 +1,88 @@
1
1
  import { __esmMin } from "./rolldown-runtime-DXoylpqc.js";
2
- import { artifactExtractionResultSchema, artifactInventoryOutputSchema, buildInterfaceBuilderAnalysis, compareUnicodeCodePoints, createArtifactInspection, createEvidence, digestCanonicalValue, err, init_artifactGraph, init_artifactInspection, init_binaryTargetTypes, init_canonicalDigest, init_evidence, init_inputIssueProjection, init_interfaceBuilderGraph, init_interfaceBuilderKeyedArchive, init_result, init_unicodeCodePointOrder, init_zipPackageFormat, interfaceBuilderConnectionFieldNames, interfaceBuilderLimitsSchema, isMachOFormat, isUIKitRuntimeConnectionClass, isZipPackageFormat, ok, projectInputIssues } from "./reconstructionObligationLedgerSchemas-Bao0xMr-.js";
3
- import { AnalysisCapabilityUnavailableError, AnalysisInputError, AnalysisUnsupportedTargetError, freezeJsonSnapshot, init_analysisErrorCore, init_immutableJson, init_jsonValue, jsonValueSchema } from "./errorSchemas-CTRmvMl3.js";
4
- import { ArtifactReaderFailure, init_ArtifactReader, sameArtifactSourceIdentity } from "./ArtifactReader-BXkffc1D.js";
5
- import { createAnalysisExecution, init_AnalysisProvider } from "./AnalysisProvider-D0Us2OTk.js";
6
- import { ArtifactResourceScope, init_ArtifactResourceScope } from "./ArtifactResourceScope-DQWTcUwE.js";
7
- import { ArtifactOperationError, init_artifactOperationError } from "./artifactOperationError-B7n03FbD.js";
8
- import { ProviderCleanupError, init_providerCleanupError } from "./providerCleanupError-Ceq8f0wK.js";
9
- import { init_snapshotEnvironment, snapshotEnvironment } from "./snapshotEnvironment-D_tWyOub.js";
10
- import { execFileOutput, init_ExecFileOutput } from "./ExecFileOutput-BEQs-lDD.js";
11
- import { KeyedArchiveKindError, appleAssetCatalogInputSchema, appleResourceKeyFields, dylibResolutionInputSchema, dylibResolutionResultSchema, init_appleAssetCatalog, init_dyldPaths, init_dylibResolution, init_keyedArchive, keyedArchiveInputSchema, keyedArchiveResultSchema, parseAppleAssetCatalogRecords, projectAppleAssetCatalogPage, projectKeyedArchive, resolveTreePath, traceDylibLoading } from "./toolOutputSchemaGroups-DRiYs1je.js";
12
- import { ARTIFACT_GRAPH_PROVIDER, init_InvestigationProviders } from "./InvestigationProviders-DoQRIHii.js";
13
- import { hasBinaryPlistSignature, hasNibArchiveSignature, init_appleArchiveFormat } from "./appleArchiveFormat-tVoI2ykA.js";
14
- import { ArtifactPathRegistry, hasMachoMagic, init_ArtifactPaths, init_MachoLoadCommandReader, normalizeArtifactPath, readMachoImage } from "./MachoLoadCommandReader-C7e074Ze.js";
15
- import { InterfaceBuilderDecodeBudget, InterfaceBuilderDecodeBudgetExceeded, decodeXmlPlistText, estimateBinaryPlistExpansion, init_InterfaceBuilderDecodeBudget, init_propertyListXmlText, preflightPropertyListDecode } from "./InterfaceBuilderDecodeBudget-D4omRUe4.js";
16
- import { decodeXmlText, init_plistValue, init_propertyListKeys, omittedPrototypeKeysLimitation, parseXmlPropertyList, projectPlistValue } from "./propertyListKeys-G8e74YWb.js";
17
- import { SafeOutputTree, SafeOutputTreeCreationFailure, init_SafeOutputTree, init_SafeOutputTreeCreationFailure } from "./SafeOutputTree-D6U15GXd.js";
18
- import { ZipArtifactReader, init_ZipArtifactReader } from "./ZipArtifactReader-B8ZgNe4D.js";
19
- import { ARTIFACT_ANALYSIS_OPERATIONS, artifactExtractionExecutionSchema, artifactInventoryInputSchema, init_artifactToolContracts } from "./officialToolContracts-CCFF0an9.js";
20
- import { AsarArtifactReader, DirectoryArtifactReader, MachOSliceArtifactReader, abortIfNeeded, init_ArtifactHash, init_AsarArtifactReader, init_DirectoryArtifactReader, init_MachOSliceArtifactReader, init_scanCanonical, scanCanonicalArtifactInventoryInScope } from "./scanCanonical-KP4T9jSl.js";
21
- import { artifactCapabilities, init_ArtifactProviderMetadata } from "./binary-BVOr2mgE.js";
2
+ import { artifactExtractionResultSchema, artifactInventoryResultSchema, buildInterfaceBuilderAnalysis, compareUnicodeCodePoints, createArtifactInspection, createEvidence, createPlistNumberCollector, createPlistNumberProjection, digestCanonicalValue, err, init_artifactGraph, init_artifactInspection, init_binaryTargetTypes, init_canonicalDigest, init_evidence, init_inputIssueProjection, init_interfaceBuilderGraph, init_interfaceBuilderKeyedArchive, init_plistNumbers, init_result, init_unicodeCodePointOrder, init_zipPackageFormat, interfaceBuilderConnectionFieldNames, interfaceBuilderLimitsSchema, isMachOFormat, isUIKitRuntimeConnectionClass, isZipPackageFormat, ok, projectInputIssues } from "./reconstructionObligationLedgerSchemas-Bi6sect1.js";
3
+ import { AnalysisCancelledError, AnalysisCapabilityUnavailableError, AnalysisInputError, AnalysisUnsupportedTargetError, freezeJsonSnapshot, init_analysisErrorCore, init_immutableJson, init_jsonValue, jsonValueSchema } from "./errorSchemas-Ixz_q7qt.js";
4
+ import { NonRegularFileReadError, init_RegularFile, sameRegularFileState } from "./OwnedRegularFile-D1f5nUCx.js";
5
+ import { ArtifactReaderFailure, init_ArtifactReader, sameArtifactSourceIdentity } from "./ArtifactReader-DMwm42bk.js";
6
+ import { artifactFileCancellationCause, assertArtifactReadActive, bindArtifactFileCleanup, init_ArtifactFileOperation, mapArtifactFileFailure, withArtifactRegularFile } from "./ArtifactFileOperation-Dg4BcoEM.js";
7
+ import { createAnalysisExecution, init_AnalysisProvider } from "./AnalysisProvider-BGrYaMVo.js";
8
+ import { ArtifactResourceScope, init_ArtifactResourceScope } from "./ArtifactResourceScope-CokZGcII.js";
9
+ import { ArtifactOperationError, init_artifactOperationError } from "./cliResultOutput-10sd6xGx.js";
10
+ import { ProviderCleanupError, init_providerCleanupError } from "./providerCleanupError-BhsJyAhk.js";
11
+ import { execFileOutput, init_ExecFileOutput } from "./ExecFileOutput-D6KLYTve.js";
12
+ import { init_snapshotEnvironment, snapshotEnvironment } from "./snapshotEnvironment-Yvx5qwsl.js";
13
+ import { InterfaceBuilderDecodeBudget, InterfaceBuilderDecodeBudgetExceeded, decodeXmlPlistText, estimateBinaryPlistExpansion, init_InterfaceBuilderDecodeBudget, init_propertyListXmlText, preflightPropertyListDecode } from "./InterfaceBuilderDecodeBudget-CW1IO3dG.js";
14
+ import { KeyedArchiveKindError, appleAssetCatalogInputSchema, appleResourceKeyFields, dylibResolutionInputSchema, dylibResolutionResultSchema, init_appleAssetCatalog, init_dyldPaths, init_dylibResolution, init_keyedArchive, init_plistValue, keyedArchiveInputSchema, keyedArchiveResultSchema, negativeZeroRealLimitation, nonFiniteRealLimitation, parseAppleAssetCatalogRecords, projectAppleAssetCatalogPage, projectKeyedArchive, projectPlistValue, resolveTreePath, traceDylibLoading, unknownDateLimitation, unknownRealLimitation } from "./toolOutputSchemaGroups-BqdSzySu.js";
15
+ import { ARTIFACT_GRAPH_PROVIDER, init_InvestigationProviders } from "./InvestigationProviders-CFh4a64d.js";
16
+ import { hasBinaryPlistSignature, hasNibArchiveSignature, init_appleArchiveFormat } from "./appleArchiveFormat-Bb3G5CCI.js";
17
+ import { init_readArtifactFileChunks, readArtifactFileChunks } from "./readArtifactFileChunks-BbTL_PtB.js";
18
+ import { init_propertyListKeys, omittedPrototypeKeysLimitation, parseXmlPropertyList } from "./propertyListKeys-D5dSASEy.js";
19
+ import { ArtifactPathRegistry, DirectoryArtifactReader, init_ArtifactPaths, init_DirectoryArtifactReader, normalizeArtifactPath } from "./DirectoryArtifactReader-CokAJ8vo.js";
20
+ import { SafeOutputTree, SafeOutputTreeCreationFailure, init_SafeOutputTree, init_SafeOutputTreeCreationFailure } from "./SafeOutputTree-i904hd_2.js";
21
+ import { ZipArtifactReader, init_ZipArtifactReader } from "./ZipArtifactReader-Jed69LEL.js";
22
+ import { hasMachoMagic, init_MachoLoadCommandReader, readMachoImage } from "./MachoLoadCommandReader-CZm6N5vF.js";
23
+ import { ARTIFACT_ANALYSIS_OPERATIONS, artifactExtractionExecutionSchema, artifactInventoryInputSchema, init_artifactToolContracts } from "./officialToolContracts-CzzVLx8I.js";
24
+ import { AsarArtifactReader, MachOSliceArtifactReader, abortIfNeeded, init_ArtifactHash, init_AsarArtifactReader, init_MachOSliceArtifactReader, init_scanCanonical, scanCanonicalArtifactInventoryInScope } from "./scanCanonical-CcDFUr-w.js";
25
+ import { artifactCapabilities, init_ArtifactProviderMetadata } from "./binary-CWVNJhAC.js";
22
26
  import { z } from "zod";
23
- import { basename, dirname, join, relative, sep } from "node:path";
27
+ import { basename, dirname, isAbsolute, join, relative, sep } from "node:path";
24
28
  import { createHash } from "node:crypto";
25
29
  import { TextDecoder } from "node:util";
26
- import { lstat, open, readlink, realpath } from "node:fs/promises";
27
- import { constants } from "node:fs";
30
+ import { lstat, readlink, realpath } from "node:fs/promises";
28
31
  import { parseBinary } from "plist";
29
32
 
30
- //#region dist/domain/apple/plistNumbers.js
31
- var createPlistNumberProjection;
32
- function init_plistNumbers() {
33
- return (init_plistNumbers = __esmMin((() => {
34
- createPlistNumberProjection = (literals) => {
35
- let exactIntegerCount = 0;
36
- let ambiguousNumberCount = 0;
37
- const mapNumber = (item) => {
38
- if (Number.isSafeInteger(item) || !Number.isInteger(item)) return item;
39
- if (literals.incomplete) {
40
- ambiguousNumberCount += 1;
41
- return item;
42
- }
43
- const decimals = literals.integers.get(item);
44
- if (decimals === undefined) {
45
- if (!literals.reals.has(item)) ambiguousNumberCount += 1;
46
- return item;
47
- }
48
- const [decimal] = decimals;
49
- if (decimals.size !== 1 || decimal === undefined || literals.reals.has(item)) {
50
- ambiguousNumberCount += 1;
51
- return item;
52
- }
53
- exactIntegerCount += 1;
54
- return {
55
- $plist_type: "integer",
56
- decimal
57
- };
58
- };
59
- const map = (item) => {
60
- if (typeof item === "number") return mapNumber(item);
61
- if (Array.isArray(item)) return item.map(map);
62
- if (item !== null && typeof item === "object") {
63
- const keys = Object.keys(item);
64
- const marker = item[keys[0] ?? ""];
65
- const reference = keys.length === 1 && (keys[0] === "UID" || keys[0] === "CF$UID") && typeof marker === "number";
66
- if (reference) {
67
- if (typeof marker === "number" && !Number.isSafeInteger(marker) && (literals.integers.has(marker) || !literals.reals.has(marker))) ambiguousNumberCount += 1;
68
- return item;
69
- }
70
- return Object.fromEntries(Object.entries(item).map(([key, child]) => [key, map(child)]));
71
- }
72
- return item;
73
- };
74
- return {
75
- project: map,
76
- limitations: () => [
77
- ...literals.incomplete ? ["Original archive number metadata could not be completely observed; decoded numbers may lose integer precision and exact integer/real association is unavailable."] : [],
78
- ...literals.unsafeIntegerLiterals === 0 ? [] : [`${String(literals.unsafeIntegerLiterals)} observed integer literal(s) in the original archive exceed the exact range of a JSON number. Decoded numbers may lose integer precision unless represented as { "$plist_type": "integer", "decimal": "<exact digits>" }; the original archive bytes retain those literals.`],
79
- ...exactIntegerCount === 0 ? [] : [`${String(exactIntegerCount)} unambiguous integer value(s) are reported with exact decimal text as { "$plist_type": "integer", "decimal": "<exact digits>" }.`],
80
- ...ambiguousNumberCount === 0 ? [] : [`${String(ambiguousNumberCount)} number(s) beyond the exact integer range remain as decoded because their source integer/real type or reference marker cannot be associated unambiguously; integer precision loss remains possible.`]
81
- ]
82
- };
83
- };
84
- })))();
85
- }
86
-
87
- //#endregion
88
33
  //#region dist/artifacts/apple/PlistNumberLiterals.js
89
- var collector, XML_TOKEN, OPAQUE_ELEMENTS, xmlPlistNumberLiterals, binaryPlistNumberLiterals;
34
+ var binaryObjectEnd, scanBinaryPlistNumberLiterals, decodeBinaryPlistNumbers;
90
35
  function init_PlistNumberLiterals() {
91
36
  return (init_PlistNumberLiterals = __esmMin((() => {
92
- init_propertyListKeys();
37
+ init_plistNumbers();
93
38
  init_appleArchiveFormat();
94
- collector = () => {
95
- const integers = new Map();
96
- const reals = new Set();
97
- let unsafeIntegerLiterals = 0;
98
- let incompleteMetadata = false;
99
- return {
100
- integer: (literal) => {
101
- if (!/^[+-]?\d+$/u.test(literal)) {
102
- incompleteMetadata = true;
103
- return;
104
- }
105
- const exact = BigInt(literal);
106
- if (exact >= BigInt(Number.MIN_SAFE_INTEGER) && exact <= BigInt(Number.MAX_SAFE_INTEGER)) return;
107
- unsafeIntegerLiterals += 1;
108
- const rounded = Number(exact);
109
- integers.set(rounded, (integers.get(rounded) ?? new Set()).add(exact.toString()));
110
- },
111
- real: (value) => {
112
- reals.add(value);
113
- },
114
- markIncomplete: () => {
115
- incompleteMetadata = true;
116
- },
117
- result: (incomplete = false) => ({
118
- incomplete: incomplete || incompleteMetadata,
119
- integers,
120
- reals,
121
- unsafeIntegerLiterals
122
- })
123
- };
124
- };
125
- XML_TOKEN = /<!--[\s\S]*?-->|<!\[CDATA\[[\s\S]*?\]\]>|<(?:[^>"']|"[^"]*"|'[^']*')*>/gu;
126
- OPAQUE_ELEMENTS = new Set([
127
- "string",
128
- "key",
129
- "data",
130
- "date"
131
- ]);
132
- xmlPlistNumberLiterals = (xml) => {
133
- const output = collector();
134
- const elements = [];
135
- let number;
136
- let cursor = 0;
137
- for (const match of xml.matchAll(XML_TOKEN)) {
138
- const index = match.index;
139
- if (number !== undefined) number.text += xml.slice(cursor, index);
140
- const token = match[0];
141
- cursor = index + token.length;
142
- if (token.startsWith("<!--") || token.startsWith("<![CDATA[")) {
143
- if (number !== undefined) {
144
- number.plainText = false;
145
- output.markIncomplete();
146
- }
147
- continue;
148
- }
149
- const tag = /^<\s*(\/?)\s*([\w:-]+)/u.exec(token);
150
- if (tag === null) {
151
- if (number !== undefined) {
152
- number.plainText = false;
153
- output.markIncomplete();
154
- }
155
- continue;
156
- }
157
- const closing = tag[1] === "/";
158
- const name = tag[2];
159
- if (name === undefined) continue;
160
- if (closing) {
161
- if (number !== undefined && number.kind === name && number.depth === elements.length) {
162
- if (number.plainText) {
163
- const text = decodeXmlText(number.text).trim();
164
- if (number.kind === "integer") output.integer(text);
165
- else output.real(Number.parseFloat(text));
166
- }
167
- number = undefined;
168
- }
169
- elements.pop();
170
- continue;
171
- }
172
- if (number !== undefined) {
173
- number.plainText = false;
174
- output.markIncomplete();
175
- }
176
- if (/\/\s*>$/u.test(token)) continue;
177
- if (number === undefined && (name === "integer" || name === "real") && !elements.some((parent) => OPAQUE_ELEMENTS.has(parent))) number = {
178
- kind: name,
179
- text: "",
180
- depth: elements.length + 1,
181
- plainText: true
182
- };
183
- elements.push(name);
39
+ binaryObjectEnd = (bytes, offset, objectEnd, referenceWidth) => {
40
+ const marker = bytes[offset];
41
+ if (marker === undefined) return undefined;
42
+ const type = marker >> 4;
43
+ let length = marker & 15;
44
+ let cursor = offset + 1;
45
+ if (length === 15 && type !== 0 && type !== 8) {
46
+ const extendedMarker = bytes[cursor];
47
+ if (extendedMarker === undefined || extendedMarker >> 4 !== 1) return undefined;
48
+ const width = 1 << (extendedMarker & 15);
49
+ if (width > 8 || cursor + 1 + width > objectEnd) return undefined;
50
+ cursor += 1;
51
+ let extendedLength = 0n;
52
+ for (let index = 0; index < width; index += 1) extendedLength = extendedLength << 8n | BigInt(bytes[cursor + index] ?? 0);
53
+ if (extendedLength > BigInt(Number.MAX_SAFE_INTEGER)) return undefined;
54
+ length = Number(extendedLength);
55
+ cursor += width;
184
56
  }
185
- return output.result();
186
- };
187
- binaryPlistNumberLiterals = (bytes) => {
188
- const output = collector();
189
- if (bytes.length < 40 || !hasBinaryPlistSignature(bytes)) return output.result(true);
57
+ let payloadLength;
58
+ if (type === 0) payloadLength = 0;
59
+ else if (type === 1 || type === 2) {
60
+ if ((marker & 15) > 4) return undefined;
61
+ payloadLength = 1 << (marker & 15);
62
+ } else if (type === 3) {
63
+ if (marker !== 51) return undefined;
64
+ payloadLength = 8;
65
+ } else if (type === 4 || type === 5 || type === 7) {
66
+ payloadLength = length;
67
+ } else if (type === 6) {
68
+ payloadLength = length * 2;
69
+ } else if (type === 8) {
70
+ payloadLength = (marker & 15) + 1;
71
+ } else if (type === 10 || type === 11 || type === 12) {
72
+ payloadLength = length * referenceWidth;
73
+ } else if (type === 13) {
74
+ payloadLength = length * 2 * referenceWidth;
75
+ } else return undefined;
76
+ const end = cursor + payloadLength;
77
+ return Number.isSafeInteger(end) && end <= objectEnd ? end : undefined;
78
+ };
79
+ scanBinaryPlistNumberLiterals = (bytes) => {
80
+ const output = createPlistNumberCollector();
81
+ const wideIntegers = [];
82
+ if (bytes.length < 40 || !hasBinaryPlistSignature(bytes)) return {
83
+ literals: output.result(true),
84
+ wideIntegers
85
+ };
190
86
  const view = new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength);
191
87
  const trailer = bytes.length - 32;
192
88
  const offsetWidth = bytes[trailer + 6] ?? 0;
@@ -195,16 +91,38 @@ function init_PlistNumberLiterals() {
195
91
  2,
196
92
  4,
197
93
  8
198
- ].includes(offsetWidth)) return output.result(true);
94
+ ].includes(offsetWidth)) return {
95
+ literals: output.result(true),
96
+ wideIntegers
97
+ };
199
98
  const countRaw = view.getBigUint64(trailer + 8);
200
99
  const tableRaw = view.getBigUint64(trailer + 24);
201
100
  const safeMaximum = BigInt(Number.MAX_SAFE_INTEGER);
202
- if (countRaw === 0n || countRaw > safeMaximum || tableRaw > safeMaximum) return output.result(true);
203
- if (tableRaw < 8n || tableRaw >= BigInt(trailer)) return output.result(true);
101
+ if (countRaw === 0n || countRaw > safeMaximum || tableRaw > safeMaximum) return {
102
+ literals: output.result(true),
103
+ wideIntegers
104
+ };
105
+ if (tableRaw < 8n || tableRaw >= BigInt(trailer)) return {
106
+ literals: output.result(true),
107
+ wideIntegers
108
+ };
204
109
  const offsetTable = Number(tableRaw);
205
110
  const capacity = Math.floor((trailer - offsetTable) / offsetWidth);
206
- if (countRaw > BigInt(capacity)) return output.result(true);
111
+ if (countRaw > BigInt(capacity)) return {
112
+ literals: output.result(true),
113
+ wideIntegers
114
+ };
207
115
  const count = Number(countRaw);
116
+ const referenceWidth = bytes[trailer + 7] ?? 0;
117
+ if (![
118
+ 1,
119
+ 2,
120
+ 4,
121
+ 8
122
+ ].includes(referenceWidth)) return {
123
+ literals: output.result(true),
124
+ wideIntegers
125
+ };
208
126
  const unsigned = (offset) => {
209
127
  if (offset < offsetTable || offset + offsetWidth > trailer) return undefined;
210
128
  if (offsetWidth === 1) return view.getUint8(offset);
@@ -213,21 +131,66 @@ function init_PlistNumberLiterals() {
213
131
  const value = view.getBigUint64(offset);
214
132
  return value > safeMaximum ? undefined : Number(value);
215
133
  };
134
+ const objectOffsets = [];
216
135
  for (let index = 0; index < count; index += 1) {
217
136
  const offset = unsigned(offsetTable + index * offsetWidth);
218
- if (offset === undefined || offset < 8 || offset >= offsetTable) return output.result(true);
137
+ if (offset === undefined || offset < 8 || offset >= offsetTable) return {
138
+ literals: output.result(true),
139
+ wideIntegers
140
+ };
141
+ objectOffsets.push(offset);
142
+ }
143
+ const sortedOffsets = [...new Set(objectOffsets)].sort((a, b) => a - b);
144
+ for (let index = 0; index < sortedOffsets.length; index += 1) {
145
+ const offset = sortedOffsets[index];
146
+ if (offset === undefined) continue;
147
+ const nextOffset = sortedOffsets[index + 1] ?? offsetTable;
148
+ if (binaryObjectEnd(bytes, offset, nextOffset, referenceWidth) === undefined) return {
149
+ literals: output.result(true),
150
+ wideIntegers: []
151
+ };
152
+ }
153
+ for (const offset of objectOffsets) {
219
154
  const marker = bytes[offset] ?? 0;
220
155
  const type = marker >> 4;
221
156
  if (type !== 1 && type !== 2) continue;
222
157
  const width = 2 ** (marker & 15);
223
- if (offset + 1 + width > offsetTable) return output.result(true);
224
- if (type === 1 && width === 8) output.integer(view.getBigInt64(offset + 1).toString());
225
- else if (type === 1 && width > 4) return output.result(true);
158
+ if (offset + 1 + width > offsetTable) return {
159
+ literals: output.result(true),
160
+ wideIntegers
161
+ };
162
+ if (type === 1 && width === 8) output.integer(view.getBigInt64(offset + 1));
163
+ else if (type === 1 && width === 16) {
164
+ const value = BigInt.asIntN(128, view.getBigUint64(offset + 1) << 64n | view.getBigUint64(offset + 9));
165
+ output.integer(value);
166
+ wideIntegers.push({
167
+ offset,
168
+ value
169
+ });
170
+ } else if (type === 1 && width > 4) return {
171
+ literals: output.result(true),
172
+ wideIntegers
173
+ };
226
174
  else if (type === 2 && width === 4) output.real(view.getFloat32(offset + 1));
227
175
  else if (type === 2 && width === 8) output.real(view.getFloat64(offset + 1));
228
- else if (type === 2) return output.result(true);
176
+ else if (type === 2) return {
177
+ literals: output.result(true),
178
+ wideIntegers
179
+ };
229
180
  }
230
- return output.result();
181
+ return {
182
+ literals: output.result(),
183
+ wideIntegers
184
+ };
185
+ };
186
+ decodeBinaryPlistNumbers = (bytes, metadata) => {
187
+ if (metadata.wideIntegers.length === 0) return bytes;
188
+ const compatible = Buffer.from(bytes);
189
+ for (const { offset, value } of metadata.wideIntegers) {
190
+ compatible[offset] = 35;
191
+ compatible.writeDoubleBE(Number(value), offset + 1);
192
+ }
193
+ return compatible;
231
194
  };
232
195
  })))();
233
196
  }
@@ -258,15 +221,17 @@ function init_KeyedArchiveReader() {
258
221
  const binaryExpansion = binary ? estimateBinaryPlistExpansion(bytes, MAX_DECODE_BYTES, {
259
222
  budget: "the keyed archive decode budget",
260
223
  fail: (kind, message) => kind === "cycle" ? new TypeError("binary plist object references form a cycle, which a property list cannot represent") : new RangeError(message),
261
- bounds: "decoder"
224
+ bounds: "decoder",
225
+ numberProjection: true
262
226
  }) : undefined;
227
+ const binaryNumberMetadata = binary ? scanBinaryPlistNumberLiterals(bytes) : undefined;
263
228
  const parsed = binaryExpansion !== undefined ? {
264
- value: parseBinary(bytes),
229
+ value: parseBinary(decodeBinaryPlistNumbers(bytes, binaryNumberMetadata)),
230
+ numberLiterals: binaryNumberMetadata.literals,
265
231
  omittedPrototypeKeys: binaryExpansion.binaryPrototypeKeyObserved ? null : 0
266
232
  } : parseXmlPropertyList(xmlText ?? "");
267
- const { value: plistValue, unknownRealCount } = projectPlistValue(parsed.value);
268
- const graph = projectKeyedArchive(plistValue, selection);
269
- const numbers = createPlistNumberProjection(binary ? binaryPlistNumberLiterals(bytes) : xmlPlistNumberLiterals(xmlText ?? ""));
233
+ const { nonFiniteRealCount, unknownRealCount, negativeZeroRealCount, unknownDateCount, ...graph } = projectKeyedArchive(parsed.value, selection);
234
+ const numbers = createPlistNumberProjection(parsed.numberLiterals);
270
235
  const roots = Object.fromEntries(Object.entries(graph.roots).map(([name, value]) => [name, numbers.project(value)]));
271
236
  const objects = graph.objects.map((object) => ({
272
237
  ...object,
@@ -281,7 +246,10 @@ function init_KeyedArchiveReader() {
281
246
  ...graph.limitations,
282
247
  ...numbers.limitations(),
283
248
  ...parsed.omittedPrototypeKeys === 0 ? [] : [omittedPrototypeKeysLimitation(parsed.omittedPrototypeKeys)],
284
- ...unknownRealCount === 0 ? [] : [`${String(unknownRealCount)} non-finite real value(s) are reported as { "$plist_type": "real", "value": null } because JSON evidence cannot preserve NaN vs infinity.`]
249
+ ...nonFiniteRealCount === 0 ? [] : [nonFiniteRealLimitation(nonFiniteRealCount)],
250
+ ...unknownRealCount === 0 ? [] : [unknownRealLimitation(unknownRealCount)],
251
+ ...negativeZeroRealCount === 0 ? [] : [negativeZeroRealLimitation(negativeZeroRealCount)],
252
+ ...unknownDateCount === 0 ? [] : [unknownDateLimitation(unknownDateCount)]
285
253
  ]
286
254
  };
287
255
  };
@@ -401,9 +369,102 @@ function init_OrderedReads() {
401
369
  })))();
402
370
  }
403
371
 
372
+ //#endregion
373
+ //#region dist/artifacts/apple/DylibFileAccess.js
374
+ var DylibFileAccess, classifyDylibReadFailure, deniedDisplayPath, changed;
375
+ function init_DylibFileAccess() {
376
+ return (init_DylibFileAccess = __esmMin((() => {
377
+ init_RegularFile();
378
+ init_ArtifactReader();
379
+ init_ArtifactFileOperation();
380
+ init_readArtifactFileChunks();
381
+ init_MachoLoadCommandReader();
382
+ DylibFileAccess = class {
383
+ resources;
384
+ root;
385
+ signal;
386
+ constructor(resources, root, signal) {
387
+ this.resources = resources;
388
+ this.root = root;
389
+ this.signal = signal;
390
+ }
391
+ startsWithMachoMagic(entry) {
392
+ return this.#read(entry.adapterKey, async (file, initial) => {
393
+ if (!sameArtifactSourceIdentity(entry.sourceIdentity, initial)) throw changed(entry.adapterKey);
394
+ const bytes = new Uint8Array(4);
395
+ const { bytesRead } = await file.read(bytes, 0, bytes.length, 0);
396
+ return hasMachoMagic(bytes.subarray(0, bytesRead));
397
+ });
398
+ }
399
+ image(path) {
400
+ return this.#read(path, async (file, identity) => {
401
+ const size = Number(identity.size);
402
+ if (!Number.isSafeInteger(size)) throw new ArtifactReaderFailure("limit", `Mach-O file extent is not safely addressable: ${path}`);
403
+ const facts = await readMachoImage(async (offset, length) => {
404
+ assertArtifactReadActive(this.signal);
405
+ const bytes = new Uint8Array(Math.max(0, Math.min(length, size - offset)));
406
+ const { bytesRead } = await file.read(bytes, 0, bytes.length, offset);
407
+ assertArtifactReadActive(this.signal);
408
+ return bytes.subarray(0, bytesRead);
409
+ }, size);
410
+ return {
411
+ facts,
412
+ identity
413
+ };
414
+ });
415
+ }
416
+ sha256(path, expected) {
417
+ return this.#read(path, async (file, initial) => {
418
+ if (expected !== undefined && !sameRegularFileState(expected, initial)) throw changed(path);
419
+ const hash = createHash("sha256");
420
+ const source = readArtifactFileChunks(file, {
421
+ end: initial.size,
422
+ signal: this.signal
423
+ });
424
+ for await (const chunk of source) hash.update(chunk);
425
+ const coverage = source.readCoverage();
426
+ if (coverage.kind !== "complete" || coverage.bytes !== initial.size) throw changed(path);
427
+ return hash.digest("hex");
428
+ });
429
+ }
430
+ async #read(path, operation) {
431
+ try {
432
+ return await withArtifactRegularFile(path, this.resources, this.signal, async (file) => {
433
+ const initial = await file.stat({ bigint: true });
434
+ assertArtifactReadActive(this.signal);
435
+ const result = await operation(file, initial);
436
+ const opened = await file.stat({ bigint: true });
437
+ const named = await lstat(path, { bigint: true });
438
+ if (!sameRegularFileState(initial, opened) || !sameRegularFileState(initial, named)) throw changed(path);
439
+ assertArtifactReadActive(this.signal);
440
+ return result;
441
+ });
442
+ } catch (cause) {
443
+ throw classifyDylibReadFailure(this.root, cause);
444
+ }
445
+ }
446
+ };
447
+ classifyDylibReadFailure = (root, cause) => mapArtifactFileFailure(cause, (primary) => {
448
+ if (primary instanceof NonRegularFileReadError) return new ArtifactReaderFailure("format", `Dyld input is not a regular file: ${primary.path}`, { cause: primary });
449
+ if (primary instanceof Error && "code" in primary && (primary.code === "EACCES" || primary.code === "EPERM")) {
450
+ const path = "path" in primary && typeof primary.path === "string" ? primary.path : undefined;
451
+ const display = path === undefined ? "a file in the analyzed root" : deniedDisplayPath(root, path);
452
+ return new ArtifactReaderFailure("unavailable", `Permission denied (${primary.code}) reading ${display}`, { cause: primary });
453
+ }
454
+ return primary;
455
+ });
456
+ deniedDisplayPath = (root, path) => {
457
+ const inside = relative(root, path);
458
+ const outside = isAbsolute(inside) || inside === ".." || inside.startsWith(`..${sep}`);
459
+ return inside === "" || outside ? path : inside;
460
+ };
461
+ changed = (path) => new ArtifactReaderFailure("integrity", `${path} changed while its dyld load commands were traced`);
462
+ })))();
463
+ }
464
+
404
465
  //#endregion
405
466
  //#region dist/artifacts/apple/DylibResolutionReader.js
406
- var OPERATION, HASH_CHUNK_BYTES, MAGIC_READ_CONCURRENCY, FilesystemTreeView, traceDylibResolution, executableRoots, compare, requireMachoRoots, startsWithMachoMagic, identityOf, readImage, fileSha256, cancelled, deniedPath, permissionDenied, missing;
467
+ var OPERATION, MAGIC_READ_CONCURRENCY, FilesystemTreeView, traceDylibResolution, executableRoots, compare, requireMachoRoots, missing;
407
468
  function init_DylibResolutionReader() {
408
469
  return (init_DylibResolutionReader = __esmMin((() => {
409
470
  init_analysisErrorCore();
@@ -413,18 +474,21 @@ function init_DylibResolutionReader() {
413
474
  init_ArtifactReader();
414
475
  init_DirectoryArtifactReader();
415
476
  init_OrderedReads();
416
- init_MachoLoadCommandReader();
477
+ init_DylibFileAccess();
478
+ init_ArtifactResourceScope();
479
+ init_ArtifactFileOperation();
417
480
  OPERATION = "trace_dylib_resolution";
418
- HASH_CHUNK_BYTES = 1024 * 1024;
419
481
  MAGIC_READ_CONCURRENCY = 8;
420
482
  FilesystemTreeView = class {
421
483
  root;
484
+ files;
422
485
  signal;
423
486
  #entries = new Map();
424
487
  #images = new Map();
425
488
  #identities = new Map();
426
- constructor(root, signal) {
489
+ constructor(root, files, signal) {
427
490
  this.root = root;
491
+ this.files = files;
428
492
  this.signal = signal;
429
493
  }
430
494
  entry(path) {
@@ -437,7 +501,7 @@ function init_DylibResolutionReader() {
437
501
  image(path) {
438
502
  const cached = this.#images.get(path);
439
503
  if (cached !== undefined) return cached;
440
- const pending = readImage(join(this.root, path), this.signal).then(({ facts, identity }) => {
504
+ const pending = this.files.image(join(this.root, path)).then(({ facts, identity }) => {
441
505
  this.#identities.set(path, identity);
442
506
  return facts;
443
507
  });
@@ -449,7 +513,7 @@ function init_DylibResolutionReader() {
449
513
  return this.#identities.get(path);
450
514
  }
451
515
  async #readEntry(path) {
452
- cancelled(this.signal);
516
+ assertArtifactReadActive(this.signal);
453
517
  const absolute = join(this.root, path);
454
518
  try {
455
519
  const metadata = await lstat(absolute);
@@ -468,57 +532,54 @@ function init_DylibResolutionReader() {
468
532
  traceDylibResolution = async (options) => {
469
533
  const parsed = dylibResolutionInputSchema.safeParse(options.parameters);
470
534
  if (!parsed.success) throw new AnalysisInputError(OPERATION, { cause: parsed.error }, projectInputIssues(parsed.error.issues, options.parameters));
471
- let root = options.rootPath;
472
- try {
473
- root = await realpath(options.rootPath);
474
- const target = relative(root, await realpath(options.targetPath)).split(sep).join("/");
475
- const view = new FilesystemTreeView(root, options.signal);
476
- const { roots: requested, unclassified } = parsed.data.roots !== undefined ? {
477
- roots: parsed.data.roots,
478
- unclassified: []
479
- } : options.enumerateRoots ? await executableRoots(root, view, options.signal) : {
480
- roots: [target],
481
- unclassified: []
482
- };
483
- const roots = await requireMachoRoots(view, requested, parsed.data.roots !== undefined);
484
- const trace = await traceDylibLoading(view, {
485
- roots,
486
- unclassified,
487
- ...parsed.data.architecture === undefined ? {} : { architecture: parsed.data.architecture },
488
- ...options.signal === undefined ? {} : { signal: options.signal }
489
- });
490
- const digests = new Map();
491
- for (const { path } of trace.images) digests.set(path, await fileSha256(join(root, path), {
492
- path,
493
- expected: view.identity(path),
494
- ...options.signal === undefined ? {} : { signal: options.signal }
495
- }));
496
- const targetDigest = digests.get(target) ?? await fileSha256(join(root, target), {
497
- path: target,
498
- expected: undefined,
499
- ...options.signal === undefined ? {} : { signal: options.signal }
500
- });
501
- if (targetDigest !== options.targetSha256) throw new ArtifactReaderFailure("integrity", `Active target digest changed: expected ${options.targetSha256}, observed ${targetDigest}`);
502
- return dylibResolutionResultSchema.parse({
503
- ...trace,
504
- root_path: options.rootPath,
505
- target_sha256: options.targetSha256,
506
- images: trace.images.map((image) => ({
507
- ...image,
508
- sha256: digests.get(image.path)
509
- }))
510
- });
511
- } catch (cause) {
512
- if (options.signal?.aborted === true) throw new ArtifactReaderFailure("cancelled", "Dylib resolution was cancelled", { cause });
513
- const denied = permissionDenied(cause);
514
- if (denied !== undefined) throw new ArtifactReaderFailure("unavailable", `Permission denied (${denied.code}) reading ${deniedPath(root, denied.path)}`, { cause });
515
- throw cause;
516
- }
535
+ const resources = options.resourceScope ?? new ArtifactResourceScope();
536
+ return await resources.run(async () => {
537
+ let root = options.rootPath;
538
+ try {
539
+ assertArtifactReadActive(options.signal);
540
+ root = await realpath(options.rootPath);
541
+ assertArtifactReadActive(options.signal);
542
+ const files = new DylibFileAccess(resources, root, options.signal);
543
+ const target = relative(root, await realpath(options.targetPath)).split(sep).join("/");
544
+ assertArtifactReadActive(options.signal);
545
+ const view = new FilesystemTreeView(root, files, options.signal);
546
+ const { roots: requested, unclassified } = parsed.data.roots !== undefined ? {
547
+ roots: parsed.data.roots,
548
+ unclassified: []
549
+ } : options.enumerateRoots ? await executableRoots(root, view, files, options.signal) : {
550
+ roots: [target],
551
+ unclassified: []
552
+ };
553
+ const roots = await requireMachoRoots(view, requested, parsed.data.roots !== undefined);
554
+ const trace = await traceDylibLoading(view, {
555
+ roots,
556
+ unclassified,
557
+ ...parsed.data.architecture === undefined ? {} : { architecture: parsed.data.architecture },
558
+ ...options.signal === undefined ? {} : { signal: options.signal }
559
+ });
560
+ const digests = new Map();
561
+ for (const { path } of trace.images) digests.set(path, await files.sha256(join(root, path), view.identity(path)));
562
+ const targetDigest = digests.get(target) ?? await files.sha256(join(root, target), undefined);
563
+ if (targetDigest !== options.targetSha256) throw new ArtifactReaderFailure("integrity", `Active target digest changed: expected ${options.targetSha256}, observed ${targetDigest}`);
564
+ assertArtifactReadActive(options.signal);
565
+ return dylibResolutionResultSchema.parse({
566
+ ...trace,
567
+ root_path: options.rootPath,
568
+ target_sha256: options.targetSha256,
569
+ images: trace.images.map((image) => ({
570
+ ...image,
571
+ sha256: digests.get(image.path)
572
+ }))
573
+ });
574
+ } catch (cause) {
575
+ throw classifyDylibReadFailure(root, cause);
576
+ }
577
+ });
517
578
  };
518
- executableRoots = async (root, view, signal) => {
579
+ executableRoots = async (root, view, files, signal) => {
519
580
  const roots = [];
520
581
  const unclassified = [];
521
- await consumeWithOrderedReads(new DirectoryArtifactReader(root).entries(signal), MAGIC_READ_CONCURRENCY, (entry) => entry.kind === "file" ? startsWithMachoMagic(entry.adapterKey) : undefined, async (entry, macho) => {
582
+ await consumeWithOrderedReads(new DirectoryArtifactReader(root).entries(signal), MAGIC_READ_CONCURRENCY, (entry) => entry.kind === "file" ? files.startsWithMachoMagic(entry) : undefined, async (entry, macho) => {
522
583
  if (!macho) return;
523
584
  const facts = await view.image(entry.path);
524
585
  if (facts.status === "malformed" || facts.status === "unsupported") unclassified.push(entry.path);
@@ -546,81 +607,6 @@ function init_DylibResolutionReader() {
546
607
  }
547
608
  return resolved;
548
609
  };
549
- startsWithMachoMagic = async (path) => {
550
- const handle = await open(path, constants.O_RDONLY | constants.O_NOFOLLOW);
551
- try {
552
- const buffer = new Uint8Array(4);
553
- const { bytesRead } = await handle.read(buffer, 0, 4, 0);
554
- return hasMachoMagic(buffer.subarray(0, bytesRead));
555
- } finally {
556
- await handle.close();
557
- }
558
- };
559
- identityOf = (metadata) => [
560
- metadata.dev,
561
- metadata.ino,
562
- metadata.size,
563
- metadata.mtimeNs,
564
- metadata.ctimeNs
565
- ].join(":");
566
- readImage = async (path, signal) => {
567
- cancelled(signal);
568
- const handle = await open(path, constants.O_RDONLY | constants.O_NOFOLLOW);
569
- try {
570
- const metadata = await handle.stat({ bigint: true });
571
- const size = Number(metadata.size);
572
- const facts = await readMachoImage(async (offset, length) => {
573
- cancelled(signal);
574
- const buffer = new Uint8Array(Math.max(0, Math.min(length, size - offset)));
575
- const { bytesRead } = await handle.read(buffer, 0, buffer.length, offset);
576
- return buffer.subarray(0, bytesRead);
577
- }, size);
578
- return {
579
- facts,
580
- identity: identityOf(metadata)
581
- };
582
- } finally {
583
- await handle.close();
584
- }
585
- };
586
- fileSha256 = async (absolute, options) => {
587
- const { signal } = options;
588
- const handle = await open(absolute, constants.O_RDONLY | constants.O_NOFOLLOW);
589
- const unchanged = async () => {
590
- if (options.expected !== undefined && identityOf(await handle.stat({ bigint: true })) !== options.expected) throw new ArtifactReaderFailure("integrity", `${options.path} changed while its dyld load commands were traced`);
591
- };
592
- try {
593
- await unchanged();
594
- const hash = createHash("sha256");
595
- const buffer = new Uint8Array(HASH_CHUNK_BYTES);
596
- for (;;) {
597
- cancelled(signal);
598
- const { bytesRead } = await handle.read(buffer, 0, buffer.length, null);
599
- if (bytesRead === 0) break;
600
- hash.update(buffer.subarray(0, bytesRead));
601
- }
602
- await unchanged();
603
- return hash.digest("hex");
604
- } finally {
605
- await handle.close();
606
- }
607
- };
608
- cancelled = (signal) => {
609
- if (signal?.aborted === true) throw new ArtifactReaderFailure("cancelled", "Dylib resolution was cancelled");
610
- };
611
- deniedPath = (root, path) => {
612
- if (path === undefined) return "a file in the analyzed root";
613
- const inside = relative(root, path);
614
- return inside === "" || inside.startsWith("..") ? path : inside;
615
- };
616
- permissionDenied = (cause) => {
617
- if (!(cause instanceof Error) || !("code" in cause)) return undefined;
618
- if (cause.code !== "EACCES" && cause.code !== "EPERM") return undefined;
619
- return {
620
- code: cause.code,
621
- path: "path" in cause && typeof cause.path === "string" ? cause.path : undefined
622
- };
623
- };
624
610
  missing = (cause) => cause instanceof Error && "code" in cause && (cause.code === "ENOENT" || cause.code === "ENOTDIR");
625
611
  })))();
626
612
  }
@@ -635,7 +621,7 @@ function init_ArtifactInventory() {
635
621
  init_scanCanonical();
636
622
  inventoryArtifact = async (inputPath, options) => {
637
623
  const snapshot = await scanArtifactInventory(inputPath, options);
638
- return artifactInventoryOutputSchema.parse(snapshot);
624
+ return artifactInventoryResultSchema.parse(snapshot);
639
625
  };
640
626
  scanArtifactInventory = async (inputPath, options) => options.resourceScope.run(() => scanArtifactInventoryInScope(inputPath, options));
641
627
  scanArtifactInventoryInScope = async (inputPath, options) => {
@@ -728,7 +714,12 @@ function init_ArtifactExtraction() {
728
714
  });
729
715
  };
730
716
  materializeSelection = async ({ input, sourcePath, inventory, selected, signal }) => {
731
- const byPath = new Map(selected.map((item) => [item.occurrence.logical_path, item]));
717
+ const byPath = new Map();
718
+ for (const item of selected) {
719
+ const path = item.occurrence.logical_path;
720
+ if (byPath.has(path)) throw new ArtifactReaderFailure("path", `Artifact extraction path collision: ${JSON.stringify(path)}. Multiple selected occurrences share this normalized logical path; they cannot be materialized at the same destination path, even when the archive is valid. Inventory retains each occurrence.`);
721
+ byPath.set(path, item);
722
+ }
732
723
  const reader = await createReader(sourcePath, input);
733
724
  const readerOwner = {
734
725
  kind: "reader",
@@ -755,19 +746,19 @@ function init_ArtifactExtraction() {
755
746
  });
756
747
  localReaderOwner = undefined;
757
748
  const closeAttempt = await input.resourceScope.release(readerOwner);
758
- if (closeAttempt.kind === "failed") throw ArtifactReaderFailure.withCleanup(closeAttempt.cause, ArtifactReaderFailure.cleanupObservation(closeAttempt.cause, readerOwner.resource));
749
+ if (closeAttempt.kind === "failed") throw input.resourceScope.cleanupFailure({ kind: "completed" }, [closeAttempt]);
759
750
  extracted.sort((left, right) => compareUnicodeCodePoints(left.relative_path, right.relative_path));
760
751
  completed = createExtractionResult(input, inventory, selected, extracted);
761
752
  await output.commit(signal);
762
753
  return completed;
763
754
  } catch (cause) {
764
755
  const cleanupFailures = await releaseExtractionOwners(input.resourceScope, localReaderOwner, output, input.outputRoot);
765
- if (cleanupFailures.length > 0) {
766
- const observations = cleanupFailures.map(({ cause: cleanupCause, resource }) => ArtifactReaderFailure.cleanupObservation(cleanupCause, resource));
767
- throw ArtifactReaderFailure.withCleanup(cause, {
768
- reason: observations.map(({ reason }) => reason).join("; "),
769
- resources: [...new Set(observations.flatMap(({ resources }) => resources))]
770
- }, output?.published === true && completed !== undefined ? {
756
+ const [firstCleanup, ...remainingCleanup] = cleanupFailures;
757
+ if (firstCleanup !== undefined) {
758
+ throw input.resourceScope.cleanupFailure({
759
+ kind: "failed",
760
+ cause
761
+ }, [firstCleanup, ...remainingCleanup], output?.published === true && completed !== undefined ? {
771
762
  kind: "artifact-extraction",
772
763
  extraction: completed
773
764
  } : undefined);
@@ -807,10 +798,7 @@ function init_ArtifactExtraction() {
807
798
  const failures = [];
808
799
  if (readerOwner !== undefined) {
809
800
  const attempt = await resourceScope.release(readerOwner);
810
- if (attempt.kind === "failed") failures.push({
811
- cause: attempt.cause,
812
- resource: readerOwner.resource
813
- });
801
+ if (attempt.kind === "failed") failures.push(attempt);
814
802
  }
815
803
  if (output !== undefined) {
816
804
  const owner = {
@@ -819,10 +807,7 @@ function init_ArtifactExtraction() {
819
807
  resource: outputRoot
820
808
  };
821
809
  const attempt = await resourceScope.release(owner);
822
- if (attempt.kind === "failed") failures.push({
823
- cause: attempt.cause,
824
- resource: owner.resource
825
- });
810
+ if (attempt.kind === "failed") failures.push(attempt);
826
811
  }
827
812
  return failures;
828
813
  };
@@ -1341,7 +1326,7 @@ function init_NibViewHierarchy() {
1341
1326
 
1342
1327
  //#endregion
1343
1328
  //#region dist/artifacts/apple/InterfaceBuilderAnalysis.js
1344
- var MAX_AGGREGATE_INPUT_BYTES, MAX_AGGREGATE_DECODE_BYTES, MAX_REPORTED_OMITTED_ARCHIVES, analyzeInterfaceBuilderBundle, selectInterfaceBuilderCandidates, retainCandidate, finalizeHierarchyCoverage, projectNibArchive, isInterfaceBuilderArchive, readEntry, decodePlist;
1329
+ var MAX_AGGREGATE_INPUT_BYTES, MAX_AGGREGATE_DECODE_BYTES, MAX_REPORTED_OMITTED_ARCHIVES, analyzeInterfaceBuilderBundle, selectInterfaceBuilderCandidates, retainCandidate, finalizeHierarchyCoverage, projectNibArchive, isInterfaceBuilderArchive, readEntry, parseXmlWithinDecodeBudget, decodePlist;
1345
1330
  function init_InterfaceBuilderAnalysis() {
1346
1331
  return (init_InterfaceBuilderAnalysis = __esmMin((() => {
1347
1332
  init_appleAssetCatalog();
@@ -1356,6 +1341,7 @@ function init_InterfaceBuilderAnalysis() {
1356
1341
  init_jsonValue();
1357
1342
  init_unicodeCodePointOrder();
1358
1343
  init_propertyListXmlText();
1344
+ init_PlistNumberLiterals();
1359
1345
  init_appleArchiveFormat();
1360
1346
  MAX_AGGREGATE_INPUT_BYTES = 32 * 1024 * 1024;
1361
1347
  MAX_AGGREGATE_DECODE_BYTES = 256 * 1024 * 1024;
@@ -1370,6 +1356,7 @@ function init_InterfaceBuilderAnalysis() {
1370
1356
  const incompleteHierarchies = new Map();
1371
1357
  const unresolvedConnections = new Map();
1372
1358
  const prototypeKeyOmissions = new Map();
1359
+ const unknownDates = new Map();
1373
1360
  let omitted = 0;
1374
1361
  let attempted = 0;
1375
1362
  let aggregateInputBytes = 0;
@@ -1387,6 +1374,7 @@ function init_InterfaceBuilderAnalysis() {
1387
1374
  for (const entry of selection.omittedSamples) recordOmittedArchive(entry.path, "max_documents");
1388
1375
  unreportedOmittedArchives += selection.unreportedOmitted;
1389
1376
  for (const entry of selection.selected) {
1377
+ let plistReservation = 0;
1390
1378
  try {
1391
1379
  const remainingInputBytes = MAX_AGGREGATE_INPUT_BYTES - aggregateInputBytes;
1392
1380
  if (entry.declaredSize !== null && entry.declaredSize > remainingInputBytes) {
@@ -1407,28 +1395,34 @@ function init_InterfaceBuilderAnalysis() {
1407
1395
  decodeBudget.reserve(documentBudget.usedBytes, "NIBArchive representation exceeds the aggregate Interface Builder decode budget");
1408
1396
  } else {
1409
1397
  if (!hasBinaryPlistSignature(bytes)) xmlText = decodeXmlPlistText(bytes);
1410
- const decodedReservation = preflightPropertyListDecode(bytes, decodeBudget.remainingBytes, xmlText);
1398
+ const decodedReservation = preflightPropertyListDecode(bytes, decodeBudget.remainingBytes, xmlText, { numberProjection: true });
1411
1399
  decodeBudget.reserve(decodedReservation.estimatedBytes, "plist representation exceeds the aggregate Interface Builder decode budget");
1400
+ plistReservation = decodedReservation.estimatedBytes;
1412
1401
  binaryPrototypeKeyObserved = decodedReservation.binaryPrototypeKeyObserved;
1413
1402
  }
1414
- const { value: raw, omittedPrototypeKeys } = nib === null ? decodePlist(bytes, xmlText, binaryPrototypeKeyObserved) : {
1403
+ const { value: raw, omittedPrototypeKeys, unknownDateCount, numberLiterals } = nib === null ? decodePlist(bytes, xmlText, binaryPrototypeKeyObserved) : {
1415
1404
  value: nib.raw,
1416
- omittedPrototypeKeys: 0
1405
+ omittedPrototypeKeys: 0,
1406
+ unknownDateCount: 0,
1407
+ numberLiterals: undefined
1417
1408
  };
1418
1409
  if (nib !== null && nib.omitted > 0) incompleteHierarchies.set(entry.path, nib.omitted);
1419
1410
  if (nib !== null && nib.unresolvedConnections > 0) unresolvedConnections.set(entry.path, nib.unresolvedConnections);
1420
1411
  if (omittedPrototypeKeys !== 0) prototypeKeyOmissions.set(entry.path, omittedPrototypeKeys);
1412
+ if (unknownDateCount !== 0) unknownDates.set(entry.path, unknownDateCount);
1421
1413
  const documentHash = createHash("sha256").update(bytes).digest("hex");
1422
1414
  documents.push({
1423
1415
  relativePath: entry.path,
1424
1416
  archiveSha256: documentHash,
1425
1417
  documentKind: entry.path.includes(".storyboardc/") ? "storyboard_scene" : "nib",
1426
1418
  raw,
1419
+ ...numberLiterals === undefined ? {} : { numberLiterals },
1427
1420
  ...nib === null || nib.omitted === 0 ? {} : { omittedSerializedHierarchyReferences: nib.omitted }
1428
1421
  });
1429
1422
  } catch (cause) {
1430
1423
  if (input.signal?.aborted === true) throw cause;
1431
1424
  if (cause instanceof InterfaceBuilderDecodeBudgetExceeded) {
1425
+ decodeBudget.release(plistReservation);
1432
1426
  omitted += 1;
1433
1427
  recordOmittedArchive(entry.path, cause.reason);
1434
1428
  continue;
@@ -1449,6 +1443,7 @@ function init_InterfaceBuilderAnalysis() {
1449
1443
  incompleteHierarchies,
1450
1444
  unresolvedConnections,
1451
1445
  prototypeKeyOmissions,
1446
+ unknownDates,
1452
1447
  invalid,
1453
1448
  omittedArchives,
1454
1449
  unreportedOmittedArchives,
@@ -1486,7 +1481,7 @@ function init_InterfaceBuilderAnalysis() {
1486
1481
  if (candidates.length > maximum) candidates.pop();
1487
1482
  };
1488
1483
  finalizeHierarchyCoverage = (result, counts) => {
1489
- const { incompleteHierarchies, unresolvedConnections, prototypeKeyOmissions, invalid, omittedArchives, unreportedOmittedArchives } = counts;
1484
+ const { incompleteHierarchies, unresolvedConnections, prototypeKeyOmissions, unknownDates, invalid, omittedArchives, unreportedOmittedArchives } = counts;
1490
1485
  const archiveDecodePartial = invalid.length > 0 || prototypeKeyOmissions.size > 0 || omittedArchives.length > 0;
1491
1486
  return {
1492
1487
  ...result,
@@ -1520,6 +1515,7 @@ function init_InterfaceBuilderAnalysis() {
1520
1515
  ...unresolvedConnections.size === 0 ? [] : ["Some recognized NIBArchive connectors declare no resolvable owner; they carry no connection evidence and are reported as omissions."],
1521
1516
  ...invalid.length === 0 ? [] : [`Some Interface Builder archives could not be decoded: ${invalid.slice(0, 16).join("; ")}`],
1522
1517
  ...[...prototypeKeyOmissions].map(([path, count]) => `${path}: ${omittedPrototypeKeysLimitation(count)}`),
1518
+ ...[...unknownDates].map(([path, count]) => `${path}: ${unknownDateLimitation(count)}`),
1523
1519
  ...omittedArchives.map(({ path, reason }) => `${path}: omitted because ${reason.replaceAll("_", " ")}.`),
1524
1520
  ...unreportedOmittedArchives === 0 ? [] : [`${unreportedOmittedArchives} additional omitted archive path(s) and their reasons were not retained; reporting is bounded to ${MAX_REPORTED_OMITTED_ARCHIVES} paths.`]
1525
1521
  ]
@@ -1754,15 +1750,28 @@ function init_InterfaceBuilderAnalysis() {
1754
1750
  }
1755
1751
  return Buffer.concat(chunks, length);
1756
1752
  };
1753
+ parseXmlWithinDecodeBudget = (text) => {
1754
+ try {
1755
+ return parseXmlPropertyList(text);
1756
+ } catch (cause) {
1757
+ if (cause instanceof RangeError) throw new InterfaceBuilderDecodeBudgetExceeded("aggregate_decode_budget_exhausted", cause.message);
1758
+ throw cause;
1759
+ }
1760
+ };
1757
1761
  decodePlist = (bytes, xmlText, binaryPrototypeKeyObserved) => {
1758
1762
  const binary = hasBinaryPlistSignature(bytes);
1759
- const { value, omittedPrototypeKeys } = binary ? {
1760
- value: parseBinary(bytes),
1761
- omittedPrototypeKeys: binaryPrototypeKeyObserved ? null : 0
1762
- } : parseXmlPropertyList(xmlText ?? decodeXmlPlistText(bytes));
1763
+ const binaryNumberMetadata = binary ? scanBinaryPlistNumberLiterals(bytes) : undefined;
1764
+ const { value, omittedPrototypeKeys, numberLiterals } = binary ? {
1765
+ value: parseBinary(decodeBinaryPlistNumbers(bytes, binaryNumberMetadata)),
1766
+ omittedPrototypeKeys: binaryPrototypeKeyObserved ? null : 0,
1767
+ numberLiterals: binaryNumberMetadata.literals
1768
+ } : parseXmlWithinDecodeBudget(xmlText ?? decodeXmlPlistText(bytes));
1769
+ const projected = projectPlistValue(value);
1763
1770
  return {
1764
- value: projectPlistValue(value).value,
1765
- omittedPrototypeKeys
1771
+ value: projected.value,
1772
+ omittedPrototypeKeys,
1773
+ unknownDateCount: projected.unknownDateCount,
1774
+ numberLiterals
1766
1775
  };
1767
1776
  };
1768
1777
  })))();
@@ -1834,7 +1843,7 @@ function init_AppleAssetCatalogAnalysis() {
1834
1843
  let totalMetadataBytes = 0;
1835
1844
  try {
1836
1845
  for await (const entry of reader.entries(input.signal)) {
1837
- if (!entry.path.endsWith("Assets.car")) continue;
1846
+ if (entry.path.split("/").at(-1) !== "Assets.car") continue;
1838
1847
  if (entry.kind !== "file") {
1839
1848
  uninspected.push(`${entry.path} (${entry.kind})`);
1840
1849
  continue;
@@ -1951,6 +1960,7 @@ function init_ArtifactProvider() {
1951
1960
  init_result();
1952
1961
  init_ArtifactReader();
1953
1962
  init_ArtifactResourceScope();
1963
+ init_ArtifactFileOperation();
1954
1964
  init_ArtifactProviderMetadata();
1955
1965
  init_InvestigationProviders();
1956
1966
  init_evidence();
@@ -2076,10 +2086,12 @@ function init_ArtifactProvider() {
2076
2086
  close() {
2077
2087
  return this.#resourceScope.close().then(() => ok(null), (cause) => {
2078
2088
  const failure = cause instanceof ArtifactReaderFailure ? cause : undefined;
2079
- return err(new ProviderCleanupError(ARTIFACT_GRAPH_PROVIDER.id, failure?.cleanup?.resources ?? ["artifact resources"], { reason: failure?.cleanup?.reason ?? (cause instanceof Error ? cause.message : String(cause)) }, {
2089
+ const error = new ProviderCleanupError(ARTIFACT_GRAPH_PROVIDER.id, failure?.cleanup?.resources ?? ["artifact resources"], { reason: failure?.cleanup?.reason ?? (cause instanceof Error ? cause.message : String(cause)) }, {
2080
2090
  cause,
2081
2091
  operation: "close_binary"
2082
- }));
2092
+ });
2093
+ bindArtifactFileCleanup(cause, error);
2094
+ return err(error);
2083
2095
  });
2084
2096
  }
2085
2097
  /** The active target's kind is outside this operation's supported targets. */
@@ -2113,6 +2125,7 @@ function init_ArtifactProvider() {
2113
2125
  targetSha256: this.target.sha256,
2114
2126
  enumerateRoots: bundle !== undefined,
2115
2127
  parameters,
2128
+ resourceScope: this.#resourceScope,
2116
2129
  ...options?.signal === undefined ? {} : { signal: options.signal }
2117
2130
  });
2118
2131
  return ok(createAnalysisExecution(result, ARTIFACT_GRAPH_PROVIDER, {
@@ -2167,11 +2180,16 @@ function init_ArtifactProvider() {
2167
2180
  };
2168
2181
  isArtifactOperation = (operation) => ARTIFACT_ANALYSIS_OPERATIONS.includes(operation);
2169
2182
  translateArtifactFailure = (operation, cause) => {
2170
- if (cause instanceof ArtifactReaderFailure) return new ArtifactOperationError(operation, cause.reason, cause.details, cause.message, {
2171
- ...cause.cleanup === undefined ? {} : { cleanup: cause.cleanup },
2172
- ...cause.partialObservation === undefined ? {} : { partialObservation: cause.partialObservation }
2173
- });
2174
- if (cause instanceof AnalysisInputError || cause instanceof AnalysisUnsupportedTargetError) return cause;
2183
+ if (cause instanceof ArtifactReaderFailure) {
2184
+ const error = new ArtifactOperationError(operation, cause.reason, cause.details, cause.message, {
2185
+ cause: cause.reason === "cancelled" ? artifactFileCancellationCause(cause) : cause,
2186
+ ...cause.cleanup === undefined ? {} : { cleanup: cause.cleanup },
2187
+ ...cause.partialObservation === undefined ? {} : { partialObservation: cause.partialObservation }
2188
+ });
2189
+ bindArtifactFileCleanup(cause, error);
2190
+ return error;
2191
+ }
2192
+ if (cause instanceof AnalysisInputError || cause instanceof AnalysisCancelledError || cause instanceof AnalysisUnsupportedTargetError) return cause;
2175
2193
  return new ArtifactOperationError(operation, "io");
2176
2194
  };
2177
2195
  subjectFor = (path, manifest) => ({