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,11 +1,13 @@
1
1
  import { __esmMin } from "./rolldown-runtime-DXoylpqc.js";
2
- import { BINARY_ARCHITECTURES as BINARY_ARCHITECTURES$1, CANONICAL_BASE64_PATTERN, IDENTIFIER_PATTERN, addressCoordinate, addressList, addressedEntry, addressedValue, analysisBookmarkSchema, analysisInputErrorFromIssues, analysisStringSchema, artifactEdgeSchema, artifactExtractionResultSchema, artifactGraphManifestSchema, artifactInspectionOutputSchema, artifactInspectionResultSchema, artifactNodeSchema, artifactOccurrenceSchema, canonicalJson as canonicalJson$1, compareUnicodeCodePoints, compositeKey, containingProcedureResolution, decodeCanonicalBase64, digestCanonicalValue, digestSchema, emptyArraySchema, err, evidenceBundleSchema, evidenceResultOf, evidenceSchema, functionComparisonResultSchema, functionDossierOutput, functionDossierSchema, functionInstructionWindowSchema, graphNode, hasCompleteInventoryCoverage, init_addressCoordinate, init_artifactGraph, init_artifactInspection, init_artifactInventoryEvidence, init_binaryTargetTypes, init_canonicalDigest, init_canonicalOrdering, init_comparisonSemantics, init_digests, init_emptyArraySchema, init_evidence, init_evidenceBundle, init_functionComparisonSchemas, init_hopperValues, init_inputIssueProjection, init_interfaceBuilderGraph, init_localPath, init_machoCpuIdentity, init_nativeApiBoundary, init_nativeInstruction, init_nativeInvestigationGraph, init_nativeValueTrace, init_objcSwiftMetadata, init_processCapture, init_processCaptureCoverage, init_recordedTransportUrl, init_relationshipCoverage, init_residualUnknown, init_result, init_stringPatterns, init_toolOutputSchemaPrimitives, init_unicodeCodePointOrder, init_webScreenshot, integrityContradictionSchema, interfaceBuilderAnalysisSchema, interfaceBuilderDocumentSchema, isMachOFormat, lifecycleResultOf, localPathStringSchema, machoCpuSubtypeBase, nativeApiInspectionResultSchema, nativeCallTargetsSchema, nativeDispatchMetadataResultSchema, nativeInstructionSchema, nativeInvestigationCoverageSchema, nativeInvestigationEdgeSchema, nativeInvestigationNodeSchema, nativeInvestigationTraceSchema, nativeValueTraceSchema, nullableText, ok, parseArtifactInventoryEvidence, parseArtifactInventoryResult, parseEvidence, parseEvidenceBundle, parseRecordedTransportUrl, parseUrlQueryParameterNames, prefixedDigestSchema, procedureIdentitySchema, procedureInfoOutput, processCaptureSchema, processSourceTruncated, referenceEdgeSchema, relationshipCoverageSchema, residualUnknownSchema, segmentOutput, serializeEvidenceBundle, sessionProvider, symbolDiscoveryOutput, targetFormatSchema, targetKindSchema, uniqueSorted, unresolvedCallSchema, validateArtifactInventorySubject } from "./reconstructionObligationLedgerSchemas-Bao0xMr-.js";
3
- import { AnalysisInputError, AnalysisOutputError, AnalysisResourceConstraintError, AnalysisUnsupportedTargetError, MAX_JSON_DEPTH, analysisErrorProjectionSchema, init_analysisErrorCore, init_errorSchemas, init_jsonValue, jsonObjectSchema, jsonValueSchema } from "./errorSchemas-CTRmvMl3.js";
4
- import { init_javascriptApplicationAnalysis, init_javascriptSourceSelection, javaScriptSourceSelectionSchema, parseOwnedJavaScriptApplicationAnalysisSteps } from "./javascriptApplicationAnalysis-HgMzVMQw.js";
5
- import { cliMetadataGuidSchema, init_managedApplicationGraph, init_managedArtifact, init_managedInspectionEvidence, managedApplicationGraphResultSchema, managedArtifactInspectionSchema, managedMemberInspectionSchema, managedNativeBoundaryInspectionSchema, parseManagedInspectionEvidence } from "./managedApplicationGraph-B08jb3jq.js";
2
+ import { BINARY_ARCHITECTURES as BINARY_ARCHITECTURES$1, CANONICAL_BASE64_PATTERN, IDENTIFIER_PATTERN, RAW_ONLY_ARCHITECTURES, UnknownPlistReal, addressCoordinate, addressList, addressedEntry, addressedValue, analysisBookmarkSchema, analysisInputErrorFromIssues, analysisStringSchema, artifactEdgeSchema, artifactExtractionResultSchema, artifactGraphManifestSchema, artifactInspectionResultSchema, artifactNodeSchema, artifactOccurrenceSchema, canonicalJson as canonicalJson$1, compareUnicodeCodePoints, compositeKey, containingProcedureResolution, decodeCanonicalBase64, digestCanonicalValue, digestSchema, electronFuseReportSchema, emptyArraySchema, err, evidenceBundleSchema, evidenceResultOf, evidenceSchema, functionComparisonResultSchema, functionDossierOutput, functionDossierSchema, functionInstructionWindowSchema, graphNode, hasCompleteInventoryCoverage, init_addressCoordinate, init_artifactGraph, init_artifactInspection, init_artifactInventoryEvidence, init_binaryTargetTypes, init_canonicalDigest, init_canonicalOrdering, init_comparisonSemantics, init_digests, init_electronFuses, init_emptyArraySchema, init_evidence, init_evidenceBundle, init_functionComparisonSchemas, init_hopperValues, init_inputIssueProjection, init_interfaceBuilderGraph, init_localPath, init_machoCpuIdentity, init_nativeApiBoundary, init_nativeInstruction, init_nativeInvestigationGraph, init_nativeValueTrace, init_objcSwiftMetadata, init_plistNumbers, init_processCapture, init_processCaptureCoverage, init_recordedTransportUrl, init_relationshipCoverage, init_residualUnknown, init_result, init_stringPatterns, init_toolOutputSchemaPrimitives, init_unicodeCodePointOrder, init_webScreenshot, integrityContradictionSchema, interfaceBuilderAnalysisSchema, interfaceBuilderDocumentSchema, isMachOFormat, lifecycleResultOf, localPathStringSchema, machoCpuSubtypeBase, nativeApiInspectionResultSchema, nativeCallTargetsSchema, nativeDispatchMetadataResultSchema, nativeInstructionSchema, nativeInvestigationCoverageSchema, nativeInvestigationEdgeSchema, nativeInvestigationNodeSchema, nativeInvestigationTraceSchema, nativeValueTraceSchema, nullableText, ok, parseArtifactInspectionInventoryResult, parseArtifactInventoryEvidence, parseArtifactInventoryResult, parseEvidence, parseEvidenceBundle, parseRecordedTransportUrl, parseUrlQueryParameterNames, prefixedDigestSchema, procedureIdentitySchema, procedureInfoOutput, processCaptureSchema, processSourceTruncated, referenceEdgeSchema, relationshipCoverageSchema, residualUnknownSchema, segmentOutput, serializeEvidenceBundle, sessionProvider, symbolDiscoveryOutput, targetFormatSchema, targetKindSchema, uniqueSorted, unresolvedCallSchema } from "./reconstructionObligationLedgerSchemas-Bi6sect1.js";
3
+ import { AnalysisCancelledError, AnalysisInputError, AnalysisOutputError, AnalysisResourceConstraintError, AnalysisUnsupportedTargetError, MAX_JSON_DEPTH, analysisErrorProjectionSchema, init_analysisErrorCore, init_errorSchemas, init_jsonValue, jsonObjectSchema, jsonValueSchema } from "./errorSchemas-Ixz_q7qt.js";
4
+ import { applicationCoverageSchema, applicationGraphEvidenceSchema, applicationNodeIdentitySchema, applicationNodeObservationSchema, applicationNodeSchema, init_javascriptApplicationAnalysis, init_javascriptApplicationEvidenceSchemas, init_javascriptApplicationGraphSchemas, init_javascriptSemanticGraphSchemas, init_javascriptSourceSelection, javaScriptSemanticGraphInputSchema, javaScriptSourceSelectionSchema, parseOwnedJavaScriptApplicationAnalysisSteps } from "./javascriptApplicationAnalysis-Dk6yBV8g.js";
5
+ import { cliMetadataGuidSchema, init_managedApplicationGraph, init_managedArtifact, init_managedInspectionEvidence, managedApplicationGraphResultSchema, managedArtifactInspectionSchema, managedMemberInspectionSchema, managedNativeBoundaryInspectionSchema, parseManagedInspectionEvidence } from "./managedApplicationGraph-BazVqpJv.js";
6
6
  import { z } from "zod";
7
7
  import { createHash } from "node:crypto";
8
8
  import canonicalize from "canonicalize";
9
+ import { types } from "node:util";
10
+ import { isProxy } from "node:util/types";
9
11
 
10
12
  //#region dist/domain/wasm/wasmInterface.js
11
13
  var kind, valueType, limit, signature, wasmInterfaceSchema, WASM_INTERFACE_REPRESENTATION_BYTES, wasmInterfaceEntryRepresentationBytes;
@@ -313,7 +315,7 @@ function init_toolEffects() {
313
315
  accessesNetwork: true,
314
316
  idempotent: false
315
317
  }),
316
- frida_session_status: effects(),
318
+ frida_session_status: evidence,
317
319
  close_frida_session: effects({
318
320
  mutatesTarget: true,
319
321
  mutatesSession: true,
@@ -740,7 +742,11 @@ function init_toolEffects() {
740
742
  }),
741
743
  list_javascript_runtime_targets: browserEvidence,
742
744
  observe_javascript_runtime: browserEvidence,
743
- analyze_javascript_application: evidence,
745
+ analyze_javascript_application: effects({
746
+ mutatesSession: true,
747
+ writesFilesystem: true,
748
+ launchesProcess: true
749
+ }),
744
750
  inspect_electron_fuses: evidence,
745
751
  export_web_scripts: effects({
746
752
  mutatesSession: true,
@@ -966,6 +972,150 @@ function init_analysisDetail() {
966
972
  })))();
967
973
  }
968
974
 
975
+ //#endregion
976
+ //#region dist/domain/analysisView/javascriptModuleReferences.js
977
+ var moduleKindSchema, javascriptModuleReferencesRequestSchema, basisSchema, javascriptModuleReferenceSchema;
978
+ function init_javascriptModuleReferences() {
979
+ return (init_javascriptModuleReferences = __esmMin((() => {
980
+ init_digests();
981
+ init_javascriptApplicationEvidenceSchemas();
982
+ moduleKindSchema = z.enum([
983
+ "javascript-asset",
984
+ "javascript-module",
985
+ "source-module"
986
+ ]);
987
+ javascriptModuleReferencesRequestSchema = z.strictObject({
988
+ kind: z.literal("javascript"),
989
+ collection: z.literal("modules"),
990
+ projection: z.literal("references"),
991
+ where: z.strictObject({
992
+ path: z.string().nullable().optional(),
993
+ kind: moduleKindSchema.optional()
994
+ }).default({}),
995
+ offset: z.number().int().nonnegative().default(0),
996
+ limit: z.number().int().positive().default(64)
997
+ });
998
+ basisSchema = z.strictObject({
999
+ authority: applicationGraphEvidenceSchema.shape.authority,
1000
+ state: applicationGraphEvidenceSchema.shape.state,
1001
+ confidence: applicationGraphEvidenceSchema.shape.confidence
1002
+ });
1003
+ javascriptModuleReferenceSchema = z.strictObject({
1004
+ node_id: prefixedDigestSchema("jag_node"),
1005
+ kind: moduleKindSchema,
1006
+ path: z.string().nullable(),
1007
+ identity: applicationNodeIdentitySchema,
1008
+ retained_source_range_count: z.number().int().nonnegative(),
1009
+ basis: z.array(basisSchema).min(1)
1010
+ });
1011
+ })))();
1012
+ }
1013
+
1014
+ //#endregion
1015
+ //#region dist/domain/analysisView/javascriptApplicationCoverage.js
1016
+ var javascriptApplicationSourceCoverageSchema, javascriptApplicationSourceCoverage;
1017
+ function init_javascriptApplicationCoverage() {
1018
+ return (init_javascriptApplicationCoverage = __esmMin((() => {
1019
+ init_javascriptApplicationEvidenceSchemas();
1020
+ init_javascriptSemanticGraphSchemas();
1021
+ init_javascriptSourceSelection();
1022
+ javascriptApplicationSourceCoverageSchema = z.strictObject({
1023
+ source_selection: javaScriptSourceSelectionSchema.exactOptional(),
1024
+ application: applicationCoverageSchema,
1025
+ semantic: javaScriptSemanticGraphInputSchema.shape.coverage.omit({ families: true }),
1026
+ application_unknown_count: z.number().int().nonnegative(),
1027
+ semantic_unknown_count: z.number().int().nonnegative()
1028
+ });
1029
+ javascriptApplicationSourceCoverage = (analysis) => {
1030
+ const { families: _families, ...semantic } = analysis.semantic_graph.coverage;
1031
+ return {
1032
+ ...analysis.source_selection === undefined ? {} : { source_selection: analysis.source_selection },
1033
+ application: analysis.graph.coverage,
1034
+ semantic,
1035
+ application_unknown_count: analysis.graph.nodes.reduce((count, node) => count + Number(node.kind === "unknown"), 0),
1036
+ semantic_unknown_count: analysis.semantic_graph.unknowns.length
1037
+ };
1038
+ };
1039
+ })))();
1040
+ }
1041
+
1042
+ //#endregion
1043
+ //#region dist/domain/analysisView/javascriptFactsView.js
1044
+ var propertyKeySchema, javascriptFactsViewRequestSchema, javascriptFactRowSchema, observationPath, projectJavaScriptFacts;
1045
+ function init_javascriptFactsView() {
1046
+ return (init_javascriptFactsView = __esmMin((() => {
1047
+ init_javascriptApplicationGraphSchemas();
1048
+ propertyKeySchema = applicationNodeObservationSchema.shape.properties.keyType;
1049
+ javascriptFactsViewRequestSchema = z.strictObject({
1050
+ kind: z.literal("javascript-facts"),
1051
+ where: z.strictObject({
1052
+ paths: z.array(z.string()).optional().describe("Exact Evidence artifact-path or source-range source strings. Omitted includes unknown locations; [] matches none. No filesystem lookup or path normalization."),
1053
+ kinds: z.array(applicationNodeSchema.shape.kind).optional()
1054
+ }).default({}),
1055
+ property_keys: z.array(propertyKeySchema).describe("Exact retained observation-property names to read; [] requests identities/provenance only. Missing properties remain omitted, distinct from retained null. No cross-observation merging or inferred values."),
1056
+ include_available_property_keys: z.boolean().default(false).describe("Opt into original property names for each returned observation, without unselected values. Use with property_keys: [] to discover fields before reading them."),
1057
+ offset: z.number().int().nonnegative().default(0),
1058
+ limit: z.number().int().positive().default(64)
1059
+ });
1060
+ javascriptFactRowSchema = applicationNodeSchema.pick({
1061
+ node_id: true,
1062
+ kind: true,
1063
+ identity: true
1064
+ }).extend(applicationNodeObservationSchema.pick({
1065
+ observation_id: true,
1066
+ source_map_reference: true,
1067
+ properties: true,
1068
+ evidence: true
1069
+ }).shape).extend({ available_property_keys: z.array(propertyKeySchema).exactOptional() });
1070
+ observationPath = (observation) => {
1071
+ const { location } = observation.evidence;
1072
+ if (!location.available) return null;
1073
+ if (location.value.kind === "artifact-path") return location.value.path;
1074
+ if (location.value.kind === "source-range") return location.value.source;
1075
+ return null;
1076
+ };
1077
+ projectJavaScriptFacts = (nodes, view) => {
1078
+ const paths = view.where.paths === undefined ? null : new Set(view.where.paths);
1079
+ const kinds = view.where.kinds === undefined ? null : new Set(view.where.kinds);
1080
+ if (paths?.size === 0 || kinds?.size === 0) return {
1081
+ rows: [],
1082
+ total: 0
1083
+ };
1084
+ const keys = [...new Set(view.property_keys)];
1085
+ const rows = [];
1086
+ let total = 0;
1087
+ for (const node of nodes) {
1088
+ if (kinds !== null && !kinds.has(node.kind)) continue;
1089
+ for (const observation of node.observations) {
1090
+ if (paths !== null) {
1091
+ const path = observationPath(observation);
1092
+ if (path === null || !paths.has(path)) continue;
1093
+ }
1094
+ total += 1;
1095
+ if (total <= view.offset || rows.length >= view.limit) continue;
1096
+ rows.push({
1097
+ node_id: node.node_id,
1098
+ kind: node.kind,
1099
+ identity: node.identity,
1100
+ observation_id: observation.observation_id,
1101
+ source_map_reference: observation.source_map_reference,
1102
+ ...view.include_available_property_keys ? { available_property_keys: Object.keys(observation.properties).sort() } : {},
1103
+ properties: Object.fromEntries(keys.flatMap((key) => {
1104
+ const value = observation.properties[key];
1105
+ return value !== undefined && Object.hasOwn(observation.properties, key) ? [[key, value]] : [];
1106
+ })),
1107
+ evidence: observation.evidence
1108
+ });
1109
+ }
1110
+ }
1111
+ return {
1112
+ rows,
1113
+ total
1114
+ };
1115
+ };
1116
+ })))();
1117
+ }
1118
+
969
1119
  //#endregion
970
1120
  //#region dist/domain/analysisView/analysisViewErrors.js
971
1121
  var INSPECT_ANALYSIS_VIEW_OPERATION, analysisViewInputError;
@@ -1533,12 +1683,23 @@ function init_binaryLayoutView() {
1533
1683
 
1534
1684
  //#endregion
1535
1685
  //#region dist/domain/analysisView/javascriptApplicationView.js
1536
- var OPERATION$1, inputError$1, jsIncompatible, javascriptModulePath, moduleEntries, exportNames, nodeHashes, sourceRanges, moduleItem, applicationUnknownCount, javascriptCoverageUnknowns, parentFields$1, selectModule, projectJavaScriptApplicationView;
1686
+ /** One owner for the module kinds and path semantics of every module view. */
1687
+ function* moduleEntries(nodes) {
1688
+ for (const node of nodes) {
1689
+ if (isModuleNode(node)) yield {
1690
+ node,
1691
+ path: javascriptModulePath(node)
1692
+ };
1693
+ }
1694
+ }
1695
+ var OPERATION$1, inputError$1, jsIncompatible, javascriptModulePath, isModuleNode, modulePage, exportNames, nodeHashes, sourceRanges, moduleItem, moduleReference, javascriptCoverageUnknowns, parentFields$1, selectModule, projectJavaScriptApplicationView;
1537
1696
  function init_javascriptApplicationView() {
1538
1697
  return (init_javascriptApplicationView = __esmMin((() => {
1539
1698
  init_analysisErrorCore();
1540
1699
  init_jsonValue();
1541
1700
  init_result();
1701
+ init_javascriptApplicationCoverage();
1702
+ init_javascriptFactsView();
1542
1703
  init_analysisViewCoverage();
1543
1704
  OPERATION$1 = "inspect_analysis_view";
1544
1705
  inputError$1 = (issues) => new AnalysisInputError(OPERATION$1, undefined, issues);
@@ -1559,10 +1720,21 @@ function init_javascriptApplicationView() {
1559
1720
  }
1560
1721
  return null;
1561
1722
  };
1562
- moduleEntries = (nodes) => nodes.filter((node) => node.kind === "javascript-asset" || node.kind === "javascript-module" || node.kind === "source-module").map((node) => ({
1563
- node,
1564
- path: javascriptModulePath(node)
1565
- }));
1723
+ isModuleNode = (node) => node.kind === "javascript-asset" || node.kind === "javascript-module" || node.kind === "source-module";
1724
+ modulePage = (nodes, view) => {
1725
+ const entries = [];
1726
+ let total = 0;
1727
+ for (const entry of moduleEntries(nodes)) {
1728
+ if (view.where?.kind !== undefined && entry.node.kind !== view.where.kind) continue;
1729
+ if (view.where?.path !== undefined && entry.path !== view.where.path) continue;
1730
+ if (total >= view.offset && entries.length < view.limit) entries.push(entry);
1731
+ total += 1;
1732
+ }
1733
+ return {
1734
+ entries,
1735
+ total
1736
+ };
1737
+ };
1566
1738
  exportNames = (node) => {
1567
1739
  const names = new Set();
1568
1740
  for (const observation of node.observations) {
@@ -1616,17 +1788,37 @@ function init_javascriptApplicationView() {
1616
1788
  }
1617
1789
  }))
1618
1790
  });
1619
- applicationUnknownCount = (analysis) => analysis.graph.nodes.reduce((count, node) => count + Number(node.kind === "unknown"), 0);
1620
- javascriptCoverageUnknowns = (analysis) => {
1791
+ moduleReference = ({ node, path }) => {
1792
+ let ranges = 0;
1793
+ const support = new Map();
1794
+ for (const { evidence } of node.observations) {
1795
+ if (evidence.location.available && evidence.location.value.kind === "source-range") ranges += 1;
1796
+ const { authority, state, confidence } = evidence;
1797
+ support.set(`${authority}:${state}:${confidence}`, {
1798
+ authority,
1799
+ state,
1800
+ confidence
1801
+ });
1802
+ }
1803
+ return {
1804
+ node_id: node.node_id,
1805
+ kind: node.kind,
1806
+ path,
1807
+ identity: node.identity,
1808
+ retained_source_range_count: ranges,
1809
+ basis: [...support.values()]
1810
+ };
1811
+ };
1812
+ javascriptCoverageUnknowns = (coverage) => {
1621
1813
  const unknowns = [];
1622
- if (analysis.graph.coverage.status !== "complete") unknowns.push(`graph.coverage.status is ${analysis.graph.coverage.status}`);
1623
- if (analysis.semantic_graph.coverage.status !== "complete") unknowns.push(`semantic_graph.coverage.status is ${analysis.semantic_graph.coverage.status}`);
1624
- const applicationUnknowns = applicationUnknownCount(analysis);
1814
+ if (coverage.application.status !== "complete") unknowns.push(`graph.coverage.status is ${coverage.application.status}`);
1815
+ if (coverage.semantic.status !== "complete") unknowns.push(`semantic_graph.coverage.status is ${coverage.semantic.status}`);
1816
+ const applicationUnknowns = coverage.application_unknown_count;
1625
1817
  if (applicationUnknowns > 0) unknowns.push(`${String(applicationUnknowns)} application graph unknowns remain in the parent Evidence.`);
1626
- if (analysis.semantic_graph.unknowns.length > 0) unknowns.push(`${String(analysis.semantic_graph.unknowns.length)} semantic graph unknowns remain in the parent Evidence.`);
1818
+ if (coverage.semantic_unknown_count > 0) unknowns.push(`${String(coverage.semantic_unknown_count)} semantic graph unknowns remain in the parent Evidence.`);
1627
1819
  return unknowns;
1628
1820
  };
1629
- parentFields$1 = (parent, analysis) => {
1821
+ parentFields$1 = (parent, analysis, sourceCoverage) => {
1630
1822
  const limitations = [
1631
1823
  ...analysis.limitations,
1632
1824
  ...analysis.graph.limitations,
@@ -1641,7 +1833,7 @@ function init_javascriptApplicationView() {
1641
1833
  sha256: analysis.root_artifact_sha256
1642
1834
  },
1643
1835
  limitations: boundedViewMessages([...parent.limitations, ...limitations], parent.evidenceId, "limitations"),
1644
- unknowns: boundedViewMessages(limitations, parent.evidenceId, "unknowns", javascriptCoverageUnknowns(analysis))
1836
+ unknowns: boundedViewMessages(limitations, parent.evidenceId, "unknowns", javascriptCoverageUnknowns(sourceCoverage))
1645
1837
  };
1646
1838
  };
1647
1839
  selectModule = (modules, selector) => {
@@ -1690,38 +1882,65 @@ function init_javascriptApplicationView() {
1690
1882
  return err(jsIncompatible("Module items are selected by exact path or node_id."));
1691
1883
  };
1692
1884
  projectJavaScriptApplicationView = (parent, analysis, view) => {
1693
- if (view.kind !== "summary" && view.kind !== "item" && view.kind !== "page") return err(jsIncompatible("JavaScript application Evidence supports summary, module item or module page views."));
1694
- const shared = parentFields$1(parent, analysis);
1695
- const modules = moduleEntries(analysis.graph.nodes);
1696
- if (view.kind === "summary") return ok({
1697
- kind: "summary",
1698
- view,
1699
- summary: {
1700
- input_path: analysis.input_path,
1701
- format: analysis.format,
1702
- root_artifact_sha256: analysis.root_artifact_sha256,
1703
- ...analysis.source_selection === undefined ? {} : { source_selection: analysis.source_selection },
1704
- statistics: jsonObjectSchema.parse(analysis.statistics),
1705
- electron: jsonObjectSchema.parse(analysis.summary),
1706
- coverage: jsonObjectSchema.parse({
1707
- application: analysis.graph.coverage,
1708
- semantic: {
1709
- ...analysis.semantic_graph.coverage,
1710
- families: analysis.semantic_graph.coverage.families.map(({ unknown_ids, ...family }) => ({
1711
- ...family,
1712
- unknown_count: unknown_ids.length
1713
- }))
1714
- },
1715
- application_unknowns: applicationUnknownCount(analysis),
1716
- semantic_unknowns: analysis.semantic_graph.unknowns.length
1717
- }),
1718
- limitation_count: analysis.limitations.length
1719
- },
1720
- coverage: completeWithinViewCoverage(modules.length, analysis.graph.nodes.length),
1721
- ...shared
1722
- });
1885
+ if (view.kind !== "summary" && view.kind !== "item" && view.kind !== "page" && view.kind !== "javascript" && view.kind !== "javascript-facts") return err(jsIncompatible("JavaScript application Evidence supports summary, module item/page, typed module references or selected JavaScript facts."));
1886
+ const sourceCoverage = javascriptApplicationSourceCoverage(analysis);
1887
+ const shared = parentFields$1(parent, analysis, sourceCoverage);
1888
+ if (view.kind === "javascript-facts") {
1889
+ const { rows, total } = projectJavaScriptFacts(analysis.graph.nodes, view);
1890
+ return ok({
1891
+ ...shared,
1892
+ kind: "javascript-facts",
1893
+ view,
1894
+ rows,
1895
+ source_coverage: sourceCoverage,
1896
+ coverage: pageViewCoverage(view.offset, rows.length, total)
1897
+ });
1898
+ }
1899
+ if (view.kind === "javascript") {
1900
+ const { entries, total } = modulePage(analysis.graph.nodes, view);
1901
+ const rows = entries.map(moduleReference);
1902
+ return ok({
1903
+ ...shared,
1904
+ kind: "javascript",
1905
+ view,
1906
+ rows,
1907
+ source_coverage: sourceCoverage,
1908
+ coverage: pageViewCoverage(view.offset, rows.length, total)
1909
+ });
1910
+ }
1911
+ if (view.kind === "summary") {
1912
+ const moduleCount = analysis.graph.nodes.reduce((count, node) => count + Number(isModuleNode(node)), 0);
1913
+ return ok({
1914
+ kind: "summary",
1915
+ view,
1916
+ summary: {
1917
+ input_path: analysis.input_path,
1918
+ format: analysis.format,
1919
+ root_artifact_sha256: analysis.root_artifact_sha256,
1920
+ ...analysis.source_selection === undefined ? {} : { source_selection: analysis.source_selection },
1921
+ statistics: jsonObjectSchema.parse(analysis.statistics),
1922
+ electron: jsonObjectSchema.parse(analysis.summary),
1923
+ coverage: jsonObjectSchema.parse({
1924
+ application: analysis.graph.coverage,
1925
+ semantic: {
1926
+ ...analysis.semantic_graph.coverage,
1927
+ families: analysis.semantic_graph.coverage.families.map(({ unknown_ids, ...family }) => ({
1928
+ ...family,
1929
+ unknown_count: unknown_ids.length
1930
+ }))
1931
+ },
1932
+ application_unknowns: sourceCoverage.application_unknown_count,
1933
+ semantic_unknowns: sourceCoverage.semantic_unknown_count
1934
+ }),
1935
+ limitation_count: analysis.limitations.length
1936
+ },
1937
+ coverage: completeWithinViewCoverage(moduleCount, analysis.graph.nodes.length),
1938
+ ...shared
1939
+ });
1940
+ }
1723
1941
  if (view.kind === "item") {
1724
1942
  if (view.collection !== "modules") return err(jsIncompatible("Section and symbol collections apply to inspect_binary_layout Evidence."));
1943
+ const modules = [...moduleEntries(analysis.graph.nodes)];
1725
1944
  const selected = selectModule(modules, view.selector);
1726
1945
  if (!selected.ok) return selected;
1727
1946
  return ok({
@@ -1733,7 +1952,8 @@ function init_javascriptApplicationView() {
1733
1952
  });
1734
1953
  }
1735
1954
  if (view.kind !== "page" || view.collection !== "modules") return err(jsIncompatible("Section and symbol collections apply to inspect_binary_layout Evidence."));
1736
- const items = modules.slice(view.offset, view.offset + view.limit).map(({ node, path }) => ({
1955
+ const { entries, total } = modulePage(analysis.graph.nodes, view);
1956
+ const items = entries.map(({ node, path }) => ({
1737
1957
  node_id: node.node_id,
1738
1958
  kind: node.kind,
1739
1959
  path
@@ -1742,7 +1962,7 @@ function init_javascriptApplicationView() {
1742
1962
  kind: "page",
1743
1963
  view,
1744
1964
  items,
1745
- coverage: pageViewCoverage(view.offset, items.length, modules.length),
1965
+ coverage: pageViewCoverage(view.offset, items.length, total),
1746
1966
  ...shared
1747
1967
  });
1748
1968
  };
@@ -1980,16 +2200,73 @@ function init_webNetworkCapture() {
1980
2200
  })))();
1981
2201
  }
1982
2202
 
2203
+ //#endregion
2204
+ //#region dist/domain/analysisView/analysisViewDataAdmission.js
2205
+ var MEMBER_BYTES, CONTAINER_BYTES, textBytes$1, admitAnalysisViewData;
2206
+ function init_analysisViewDataAdmission() {
2207
+ return (init_analysisViewDataAdmission = __esmMin((() => {
2208
+ init_analysisErrorCore();
2209
+ init_jsonValue();
2210
+ init_result();
2211
+ MEMBER_BYTES = 256;
2212
+ CONTAINER_BYTES = 512;
2213
+ textBytes$1 = (length) => 32 + length * 14;
2214
+ admitAnalysisViewData = (value, inline, reserve) => {
2215
+ const ancestors = new Set();
2216
+ const path = inline ? ["source", "evidence"] : ["source"];
2217
+ const invalid = () => err(new AnalysisInputError("inspect_analysis_view", undefined, [{
2218
+ path: [...path],
2219
+ reason: "invalid_value",
2220
+ message: "Parent data must contain bounded ordinary JSON data without cycles or accessors."
2221
+ }]));
2222
+ const visit = (item, depth) => {
2223
+ if (isProxy(item) || typeof item === "function") return invalid();
2224
+ if (depth > 1e3 + (inline ? 4 : 3) || typeof item === "object" && item !== null && ancestors.has(item)) return invalid();
2225
+ const member = reserve?.(MEMBER_BYTES + (inline && typeof item === "string" ? textBytes$1(item.length) : 0) + (typeof item === "object" && item !== null ? CONTAINER_BYTES : 0));
2226
+ if (member !== undefined && !member.ok) return member;
2227
+ if (typeof item !== "object" || item === null) return ok(undefined);
2228
+ ancestors.add(item);
2229
+ const child = (key) => {
2230
+ path.push(key);
2231
+ const descriptor = Object.getOwnPropertyDescriptor(item, key);
2232
+ const admitted = descriptor === undefined || !Object.hasOwn(descriptor, "value") ? invalid() : visit(descriptor.value, depth + 1);
2233
+ path.pop();
2234
+ return admitted;
2235
+ };
2236
+ if (Array.isArray(item)) {
2237
+ if (Object.getPrototypeOf(item) !== Array.prototype || Object.hasOwn(item, Symbol.iterator) || Object.hasOwn(item, "map") || Object.hasOwn(item, "constructor")) return invalid();
2238
+ for (let index = 0; index < item.length; index += 1) {
2239
+ const admitted = child(index);
2240
+ if (!admitted.ok) return admitted;
2241
+ }
2242
+ } else {
2243
+ const prototype = Object.getPrototypeOf(item);
2244
+ if (prototype !== Object.prototype && prototype !== null) return invalid();
2245
+ for (const key of Object.getOwnPropertyNames(item)) {
2246
+ const keyAdmission = inline ? reserve?.(textBytes$1(key.length)) : undefined;
2247
+ if (keyAdmission !== undefined && !keyAdmission.ok) return keyAdmission;
2248
+ const admitted = child(key);
2249
+ if (!admitted.ok) return admitted;
2250
+ }
2251
+ }
2252
+ ancestors.delete(item);
2253
+ return ok(undefined);
2254
+ };
2255
+ return visit(value, 0);
2256
+ };
2257
+ })))();
2258
+ }
2259
+
1983
2260
  //#endregion
1984
2261
  //#region dist/domain/analysisView/WebNetworkApiSurfaceAccumulator.js
1985
- var requestSchema, responseSchema, contentSchema, MEDIA_TYPE_ESSENCE, mediaTypeEssence, GROUP_BYTES, SEGMENT_BYTES, ENTRY_BYTES, RECORD_SCRATCH_BYTES, SEGMENT_SCRATCH_BYTES, CAPTURE_CONTAINER_BYTES, CAPTURE_MEMBER_BYTES, textBytes, segmentRule, WebNetworkApiSurfaceAccumulator;
2262
+ var requestSchema, responseSchema, contentSchema, MEDIA_TYPE_ESSENCE, mediaTypeEssence, GROUP_BYTES, SEGMENT_BYTES, ENTRY_BYTES, RECORD_SCRATCH_BYTES, SEGMENT_SCRATCH_BYTES, CAPTURE_CONTAINER_BYTES, textBytes, segmentRule, WebNetworkApiSurfaceAccumulator;
1986
2263
  function init_WebNetworkApiSurfaceAccumulator() {
1987
2264
  return (init_WebNetworkApiSurfaceAccumulator = __esmMin((() => {
1988
2265
  init_analysisErrorCore();
1989
2266
  init_unicodeCodePointOrder();
1990
2267
  init_recordedTransportUrl();
1991
2268
  init_result();
1992
- init_jsonValue();
2269
+ init_analysisViewDataAdmission();
1993
2270
  init_webNetworkCapture();
1994
2271
  init_analysisViewCoverage();
1995
2272
  requestSchema = z.object({ request: z.object({
@@ -2017,7 +2294,6 @@ function init_WebNetworkApiSurfaceAccumulator() {
2017
2294
  RECORD_SCRATCH_BYTES = 512;
2018
2295
  SEGMENT_SCRATCH_BYTES = 512;
2019
2296
  CAPTURE_CONTAINER_BYTES = 512;
2020
- CAPTURE_MEMBER_BYTES = 256;
2021
2297
  textBytes = (length) => 32 + length * 14;
2022
2298
  segmentRule = (value) => {
2023
2299
  if (/^[0-9]+$/u.test(value)) return "numeric";
@@ -2058,46 +2334,11 @@ function init_WebNetworkApiSurfaceAccumulator() {
2058
2334
  }
2059
2335
  /** Reserve schema output and validation scratch while the borrowed parent stays live. */
2060
2336
  admitCaptureClone(value) {
2061
- return this.#admitCaptureValue(value, new Set(), 0, false);
2337
+ return admitAnalysisViewData(value, false, (bytes) => this.#retain(bytes) ? ok(undefined) : this.#overBudget());
2062
2338
  }
2063
2339
  /** Admit the complete portable envelope before cloning or authenticating it. */
2064
2340
  admitInlineEvidence(value) {
2065
- return this.#admitCaptureValue(value, new Set(), 0, true);
2066
- }
2067
- #admitCaptureValue(value, ancestors, depth, inline) {
2068
- if (depth > 1e3 + (inline ? 4 : 3) || typeof value === "object" && value !== null && ancestors.has(value)) return this.#invalidCapture();
2069
- if (!this.#retain(CAPTURE_MEMBER_BYTES)) return this.#overBudget();
2070
- if (inline && typeof value === "string" && !this.#retain(textBytes(value.length))) return this.#overBudget();
2071
- if (typeof value !== "object" || value === null) return ok(undefined);
2072
- if (!this.#retain(CAPTURE_CONTAINER_BYTES)) return this.#overBudget();
2073
- ancestors.add(value);
2074
- if (Array.isArray(value)) {
2075
- for (let index = 0; index < value.length; index += 1) {
2076
- const descriptor = Object.getOwnPropertyDescriptor(value, index);
2077
- if (descriptor === undefined || !Object.hasOwn(descriptor, "value")) return this.#invalidCapture();
2078
- const admitted = this.#admitCaptureValue(descriptor.value, ancestors, depth + 1, inline);
2079
- if (!admitted.ok) return admitted;
2080
- }
2081
- } else {
2082
- const prototype = Object.getPrototypeOf(value);
2083
- if (prototype !== Object.prototype && prototype !== null) return this.#invalidCapture();
2084
- for (const key of Object.getOwnPropertyNames(value)) {
2085
- if (inline && !this.#retain(textBytes(key.length))) return this.#overBudget();
2086
- const descriptor = Object.getOwnPropertyDescriptor(value, key);
2087
- if (descriptor === undefined || !Object.hasOwn(descriptor, "value")) return this.#invalidCapture();
2088
- const admitted = this.#admitCaptureValue(descriptor.value, ancestors, depth + 1, inline);
2089
- if (!admitted.ok) return admitted;
2090
- }
2091
- }
2092
- ancestors.delete(value);
2093
- return ok(undefined);
2094
- }
2095
- #invalidCapture() {
2096
- return err(new AnalysisInputError("inspect_analysis_view", undefined, [{
2097
- path: ["source"],
2098
- reason: "invalid_value",
2099
- message: "Parent capture must contain bounded ordinary JSON data without cycles or accessors."
2100
- }]));
2341
+ return admitAnalysisViewData(value, true, (bytes) => this.#retain(bytes) ? ok(undefined) : this.#overBudget());
2101
2342
  }
2102
2343
  addLimitations(limitations) {
2103
2344
  for (const limitation of limitations) {
@@ -2861,7 +3102,6 @@ function init_artifactInventoryView() {
2861
3102
  init_canonicalOrdering();
2862
3103
  init_result();
2863
3104
  init_artifactInventoryEvidence();
2864
- init_artifactInspection();
2865
3105
  init_analysisViewCoverage();
2866
3106
  inputError = (message) => new AnalysisInputError("inspect_analysis_view", undefined, [{
2867
3107
  path: ["source"],
@@ -2875,18 +3115,11 @@ function init_artifactInventoryView() {
2875
3115
  evidenceIds: [parent.evidenceId],
2876
3116
  inspection: null
2877
3117
  });
2878
- const inspection = artifactInspectionResultSchema.parse(parent.normalizedResult);
2879
- for (const step of inspection.substeps) {
2880
- if (step.evidence_id !== step.evidence.evidence_id || step.evidence.operation !== step.operation) throw new TypeError("Inspection substep identity differs from its source Evidence");
2881
- }
2882
- const parsed = parseArtifactInventoryEvidence(inspection.substeps.map(({ evidence }) => evidence));
2883
- const manifest = parsed.inventory.manifest;
2884
- validateArtifactInventorySubject(parent.subject ?? null, manifest);
2885
- if (inspection.subject.manifest_id !== manifest.manifest_id || inspection.subject.root_artifact_id !== manifest.root_artifact_id || inspection.subject.root_sha256 !== manifest.root_sha256 || inspection.subject.root_format !== manifest.root_format) throw new TypeError("Inspection subject differs from its inventory manifest");
3118
+ const parsed = parseArtifactInspectionInventoryResult(parent.normalizedResult, parent.subject ?? null);
2886
3119
  return ok({
2887
3120
  inventory: parsed.inventory,
2888
- evidenceIds: parsed.evidence.map(({ evidence_id }) => evidence_id),
2889
- inspection
3121
+ evidenceIds: parsed.evidenceIds,
3122
+ inspection: parsed.inspection
2890
3123
  });
2891
3124
  } catch (cause) {
2892
3125
  if (!(cause instanceof TypeError) && !(cause instanceof z.ZodError)) throw cause;
@@ -3119,6 +3352,8 @@ function init_managedMemberView() {
3119
3352
  ]);
3120
3353
  nullableCount = z.number().int().nonnegative().nullable();
3121
3354
  managedMemberSummarySchema = z.strictObject({
3355
+ signature_resolution: member.signature_resolution,
3356
+ nesting_read: member.nesting_read,
3122
3357
  artifact: member.artifact,
3123
3358
  module: member.module,
3124
3359
  metadata: member.metadata,
@@ -3142,6 +3377,8 @@ function init_managedMemberView() {
3142
3377
  })
3143
3378
  });
3144
3379
  managedMembersViewContextSchema = z.strictObject({
3380
+ signature_resolution: member.signature_resolution,
3381
+ nesting_read: member.nesting_read,
3145
3382
  identity_scope: member.identity_scope,
3146
3383
  selection: member.selection.unwrap(),
3147
3384
  source_metadata_status: member.metadata.shape.status,
@@ -3244,6 +3481,8 @@ function init_managedMemberView() {
3244
3481
  view,
3245
3482
  page,
3246
3483
  ...shared,
3484
+ signature_resolution: report.signature_resolution,
3485
+ nesting_read: report.nesting_read,
3247
3486
  identity_scope: report.identity_scope,
3248
3487
  selection: report.selection,
3249
3488
  source_metadata_status: report.metadata.status,
@@ -5115,9 +5354,12 @@ function init_dartAotView() {
5115
5354
 
5116
5355
  //#endregion
5117
5356
  //#region dist/domain/analysisView/analysisView.js
5118
- var summaryViewSchema, facetViewSchema, indexSelectorSchema, nameSelectorSchema, pathSelectorSchema, nodeIdSelectorSchema, moduleItemViewSchema, sectionOrSymbolItemViewSchema, itemViewSchema, pageViewSchema, nativeViewSchema, inventoryViewSchema, analysisViewRequestSchema, inlineEvidenceInputSchema, analysisViewSourceSchema, inspectAnalysisViewInputSchema, coverageSchema, artifactSchema, layoutSummarySchema, javascriptSummarySchema, inventorySummarySchema, viewResultBase, summaryViewResultBase, binaryLayoutSummaryViewResultSchema, javascriptApplicationSummaryViewResultSchema, artifactInventorySummaryViewResultSchema, wasmArtifactSummaryViewResultSchema, machoSummaryViewResultSchema, interfaceBuilderSummaryViewResultSchema, evmInterfaceSummaryViewResultSchema, managedArtifactSummaryViewResultSchema, managedMemberSummaryViewResultSchema, webNetworkCaptureSummaryViewResultSchema, androidPackageSummaryViewResultSchema, pcapCaptureSummaryViewResultSchema, dartAotSummaryViewResultSchema, analysisViewResultSchema, sealAnalysisView, parentDigest, parseJavaScriptParent, unsupportedParent, parentArtifactPath, retainedViewProjectors, projectAnalysisView;
5357
+ var summaryViewSchema, facetViewSchema, indexSelectorSchema, nameSelectorSchema, pathSelectorSchema, nodeIdSelectorSchema, moduleItemViewSchema, sectionOrSymbolItemViewSchema, itemViewSchema, pageViewSchema, nativeViewSchema, inventoryViewSchema, analysisViewRequestSchema, inlineEvidenceInputSchema, analysisViewSourceSchema, inspectAnalysisViewInputSchema, coverageSchema, artifactSchema, layoutSummarySchema, javascriptSummarySchema, inventorySummarySchema, viewResultBase, summaryViewResultBase, binaryLayoutSummaryViewResultSchema, javascriptApplicationSummaryViewResultSchema, javascriptModuleReferencesViewResultSchema, javascriptFactsViewResultSchema, artifactInventorySummaryViewResultSchema, wasmArtifactSummaryViewResultSchema, machoSummaryViewResultSchema, interfaceBuilderSummaryViewResultSchema, evmInterfaceSummaryViewResultSchema, managedArtifactSummaryViewResultSchema, managedMemberSummaryViewResultSchema, webNetworkCaptureSummaryViewResultSchema, androidPackageSummaryViewResultSchema, pcapCaptureSummaryViewResultSchema, dartAotSummaryViewResultSchema, analysisViewResultSchema, sealAnalysisView, parentDigest, parseJavaScriptParent, unsupportedParent, parentArtifactPath, retainedViewProjectors, projectAnalysisView;
5119
5358
  function init_analysisView() {
5120
5359
  return (init_analysisView = __esmMin((() => {
5360
+ init_javascriptModuleReferences();
5361
+ init_javascriptApplicationCoverage();
5362
+ init_javascriptFactsView();
5121
5363
  init_javascriptSourceSelection();
5122
5364
  init_analysisErrorCore();
5123
5365
  init_analysisViewErrors();
@@ -5227,6 +5469,8 @@ function init_analysisView() {
5227
5469
  facetViewSchema,
5228
5470
  itemViewSchema,
5229
5471
  pageViewSchema,
5472
+ javascriptModuleReferencesRequestSchema,
5473
+ javascriptFactsViewRequestSchema,
5230
5474
  nativeViewSchema,
5231
5475
  inventoryViewSchema,
5232
5476
  wasmViewRequestSchema,
@@ -5373,6 +5617,22 @@ function init_analysisView() {
5373
5617
  summary: javascriptSummarySchema,
5374
5618
  parent_operation: z.literal("analyze_javascript_application")
5375
5619
  });
5620
+ javascriptModuleReferencesViewResultSchema = z.strictObject({
5621
+ ...viewResultBase,
5622
+ kind: z.literal("javascript"),
5623
+ view: javascriptModuleReferencesRequestSchema,
5624
+ parent_operation: z.literal("analyze_javascript_application"),
5625
+ rows: z.array(javascriptModuleReferenceSchema),
5626
+ source_coverage: javascriptApplicationSourceCoverageSchema
5627
+ });
5628
+ javascriptFactsViewResultSchema = z.strictObject({
5629
+ ...viewResultBase,
5630
+ kind: z.literal("javascript-facts"),
5631
+ view: javascriptFactsViewRequestSchema,
5632
+ parent_operation: z.literal("analyze_javascript_application"),
5633
+ rows: z.array(javascriptFactRowSchema),
5634
+ source_coverage: javascriptApplicationSourceCoverageSchema
5635
+ });
5376
5636
  artifactInventorySummaryViewResultSchema = z.strictObject({
5377
5637
  ...summaryViewResultBase,
5378
5638
  parent_operation: z.enum(["inspect_artifact", "inventory_artifact"]),
@@ -5499,6 +5759,8 @@ function init_analysisView() {
5499
5759
  items: z.array(jsonValueSchema),
5500
5760
  ...viewResultBase
5501
5761
  }),
5762
+ javascriptModuleReferencesViewResultSchema,
5763
+ javascriptFactsViewResultSchema,
5502
5764
  z.strictObject({
5503
5765
  kind: z.literal("native"),
5504
5766
  view: nativeViewSchema,
@@ -6425,7 +6687,8 @@ function init_rawBinary() {
6425
6687
  "x86_64",
6426
6688
  "arm",
6427
6689
  "arm64",
6428
- "6502"
6690
+ "6502",
6691
+ "m68k"
6429
6692
  ];
6430
6693
  binaryArchitectureSchema = z.enum(BINARY_ARCHITECTURES);
6431
6694
  RAW_BINARY_ENTRY_POINT = /^0x[0-9A-Fa-f]{1,16}$/u;
@@ -6440,11 +6703,11 @@ function init_rawBinary() {
6440
6703
  });
6441
6704
  };
6442
6705
  validateRawBinaryLength = (length) => Number.isSafeInteger(length) && length >= 1 ? ok(null) : err("raw-binary requires at least one file byte");
6443
- addressWidth = (architecture) => architecture === "6502" ? 65535n : architecture === "x86" || architecture === "arm" ? 4294967295n : 18446744073709551615n;
6706
+ addressWidth = (architecture) => architecture === "6502" ? 65535n : architecture === "x86" || architecture === "arm" || architecture === "m68k" ? 4294967295n : 18446744073709551615n;
6444
6707
  admitRawBinary = (input) => {
6445
6708
  const architecture = binaryArchitectureSchema.safeParse(input.architecture);
6446
6709
  if (!architecture.success) return err({
6447
- reason: "raw-binary format requires architecture (x86, x86_64, arm, arm64, or 6502)",
6710
+ reason: "raw-binary format requires architecture (x86, x86_64, arm, arm64, 6502, or m68k)",
6448
6711
  constraint: "load_selection_rejected"
6449
6712
  });
6450
6713
  if (typeof input.entryPoint !== "string") return err({
@@ -6460,6 +6723,10 @@ function init_rawBinary() {
6460
6723
  reason: `raw-binary ${architecture.data} entry_point ${entry.value.canonical} must be 4-byte aligned`,
6461
6724
  constraint: "load_selection_rejected"
6462
6725
  });
6726
+ if (architecture.data === "m68k" && entry.value.value % 2n !== 0n) return err({
6727
+ reason: `raw-binary m68k entry_point ${entry.value.canonical} must be 2-byte aligned`,
6728
+ constraint: "load_selection_rejected"
6729
+ });
6463
6730
  const length = validateRawBinaryLength(input.fileBytes);
6464
6731
  if (!length.ok) return err({
6465
6732
  reason: length.error,
@@ -6848,6 +7115,23 @@ function init_bytePattern() {
6848
7115
  code: "custom",
6849
7116
  message: "Byte search coverage and continuation disagree"
6850
7117
  });
7118
+ const ranges = value.searched.blocks.map((block) => ({
7119
+ segment: block.segment,
7120
+ start: addressCoordinate(block.start),
7121
+ end: addressCoordinate(block.end)
7122
+ }));
7123
+ for (const [index, match] of value.matches.entries()) {
7124
+ const address = addressCoordinate(match.address);
7125
+ if (address === null || !ranges.some((range) => range.segment === match.segment && range.start !== null && range.end !== null && range.start.space === address.space && range.end.space === address.space && range.start.offset <= address.offset && address.offset <= range.end.offset)) context.addIssue({
7126
+ code: "custom",
7127
+ path: [
7128
+ "matches",
7129
+ index,
7130
+ "address"
7131
+ ],
7132
+ message: "Byte match must lie within reported searched coverage in the same segment and address space"
7133
+ });
7134
+ }
6851
7135
  });
6852
7136
  })))();
6853
7137
  }
@@ -7004,7 +7288,7 @@ function init_nativeMetadataRecovery() {
7004
7288
 
7005
7289
  //#endregion
7006
7290
  //#region dist/domain/native/nativeLoadImage.js
7007
- var integer, digest, hexBytes, address, nativeLoadImageObservationSchema, nativeLoadImageCheckSchema, nativeLoadImageSchema;
7291
+ var integer, digest, hexBytes, address, nativeLoadImageObservationSchema, nativeLoadImageCheckSchema, nativeLoadImageSchema, nativeLoadImagePartialObservationSchema;
7008
7292
  function init_nativeLoadImage() {
7009
7293
  return (init_nativeLoadImage = __esmMin((() => {
7010
7294
  init_nativeMetadataRecovery();
@@ -7109,6 +7393,15 @@ function init_nativeLoadImage() {
7109
7393
  limitations: z.array(z.string().min(1))
7110
7394
  })
7111
7395
  ]);
7396
+ nativeLoadImagePartialObservationSchema = z.discriminatedUnion("stage", [z.strictObject({
7397
+ kind: z.literal("native-load-image"),
7398
+ stage: z.literal("measured"),
7399
+ observations: nativeLoadImageObservationSchema
7400
+ }), z.strictObject({
7401
+ kind: z.literal("native-load-image"),
7402
+ stage: z.literal("completed"),
7403
+ result: nativeLoadImageSchema
7404
+ })]);
7112
7405
  })))();
7113
7406
  }
7114
7407
 
@@ -7249,25 +7542,65 @@ function init_processTraceEvaluation() {
7249
7542
  locations: [...input.locations]
7250
7543
  }
7251
7544
  });
7252
- evaluateFiniteTrace = (ids, specification) => {
7253
- if (specification.language.kind !== "finite_traces") return null;
7254
- for (const variant of specification.language.variants) {
7545
+ evaluateFiniteTrace = (ids, language) => {
7546
+ let bestPrefix = -1;
7547
+ const bestEventIds = new Set();
7548
+ const bestLocationIndexes = new Set();
7549
+ const recordMismatch = (offset, missing, unexpected) => {
7550
+ if (offset > bestPrefix) {
7551
+ bestPrefix = offset;
7552
+ bestEventIds.clear();
7553
+ bestLocationIndexes.clear();
7554
+ }
7555
+ if (offset !== bestPrefix) return;
7556
+ for (const eventId of missing) bestEventIds.add(eventId);
7557
+ for (const { id, index } of unexpected) {
7558
+ bestEventIds.add(id);
7559
+ bestLocationIndexes.add(index);
7560
+ }
7561
+ };
7562
+ for (const variant of language.variants) {
7255
7563
  let offset = 0;
7256
- let accepted = true;
7564
+ let mismatched = false;
7257
7565
  for (const token of variant.trace) {
7258
- if (typeof token === "string") {
7259
- if (ids[offset] !== token) accepted = false;
7260
- offset += 1;
7261
- continue;
7566
+ const expected = typeof token === "string" ? [token] : token.unordered;
7567
+ const actual = ids.slice(offset, offset + expected.length);
7568
+ const remaining = new Map();
7569
+ for (const eventId of expected) remaining.set(eventId, (remaining.get(eventId) ?? 0) + 1);
7570
+ const unexpected = [];
7571
+ for (const [index, eventId] of actual.entries()) {
7572
+ const count = remaining.get(eventId) ?? 0;
7573
+ if (count === 0) unexpected.push({
7574
+ id: eventId,
7575
+ index: offset + index
7576
+ });
7577
+ else if (count === 1) remaining.delete(eventId);
7578
+ else remaining.set(eventId, count - 1);
7262
7579
  }
7263
- const actual = ids.slice(offset, offset + token.unordered.length).sort();
7264
- const expected = [...token.unordered].sort();
7265
- if (canonicalTraceJson(actual) !== canonicalTraceJson(expected)) accepted = false;
7266
- offset += token.unordered.length;
7580
+ const missing = [...remaining].flatMap(([eventId, count]) => Array.from({ length: count }, () => eventId));
7581
+ if (missing.length > 0 || unexpected.length > 0 || actual.length < expected.length) {
7582
+ recordMismatch(offset, missing, unexpected);
7583
+ mismatched = true;
7584
+ break;
7585
+ }
7586
+ offset += expected.length;
7267
7587
  }
7268
- if (accepted && offset === ids.length) return variant.id;
7588
+ if (mismatched) continue;
7589
+ if (offset === ids.length) return {
7590
+ status: "pass",
7591
+ variant: variant.id
7592
+ };
7593
+ const unexpected = ids[offset];
7594
+ recordMismatch(offset, [], unexpected === undefined ? [] : [{
7595
+ id: unexpected,
7596
+ index: offset
7597
+ }]);
7269
7598
  }
7270
- return null;
7599
+ return {
7600
+ status: "fail",
7601
+ eventIds: [...bestEventIds],
7602
+ locationIndexes: [...bestLocationIndexes]
7603
+ };
7271
7604
  };
7272
7605
  collectRecords = (capture, sources) => {
7273
7606
  const records = [];
@@ -7427,18 +7760,21 @@ function init_processTraceEvaluation() {
7427
7760
  if (invalidCardinality !== null) return invalidCardinality;
7428
7761
  if (specification.language.kind === "partial_order") return evaluatePartialOrder(trace, specification.language);
7429
7762
  const ids = trace.rawTrace.map(({ event_id }) => event_id);
7430
- const variant = evaluateFiniteTrace(ids, specification);
7431
- return variant === null ? failure({
7763
+ const evaluation = evaluateFiniteTrace(ids, specification.language);
7764
+ return evaluation.status === "fail" ? failure({
7432
7765
  kind: "trace",
7433
7766
  message: "Observed events do not match any finite trace variant.",
7434
- eventIds: ids,
7435
- locations: trace.rawTrace.map(({ location }) => location),
7767
+ eventIds: evaluation.eventIds,
7768
+ locations: evaluation.locationIndexes.flatMap((index) => {
7769
+ const location = trace.rawTrace[index]?.location;
7770
+ return location === undefined ? [] : [location];
7771
+ }),
7436
7772
  rawTrace: trace.rawTrace
7437
7773
  }) : {
7438
7774
  result: {
7439
7775
  status: "pass",
7440
- matched_variant: variant,
7441
- satisfied_constraints: [`variant:${variant}`],
7776
+ matched_variant: evaluation.variant,
7777
+ satisfied_constraints: [`variant:${evaluation.variant}`],
7442
7778
  raw_trace: trace.rawTrace
7443
7779
  },
7444
7780
  diagnostic: null
@@ -7489,7 +7825,7 @@ function init_processTraceDimensionProjection() {
7489
7825
  case "terminal": return (!any(left.frames, right.frames) || sources.has("terminal_raw")) && (!any(left.rendered_frames, right.rendered_frames) || sources.has("terminal_rendered"));
7490
7826
  case "interaction": return sources.has("interaction");
7491
7827
  case "exit": return sources.has("lifecycle");
7492
- case "filesystem": return false;
7828
+ case "filesystem": return sources.has("filesystem");
7493
7829
  case "process": return sources.has("process");
7494
7830
  }
7495
7831
  };
@@ -7720,7 +8056,7 @@ function init_processComparison() {
7720
8056
  const exact = dimensions[dimension];
7721
8057
  if (!covered.has(dimension)) return exact;
7722
8058
  if (trace.verdict === "nonconforming") return exact;
7723
- if (trace.verdict === "different") return traceShowsDifference && (exact !== "unchanged" || attributed.has(dimension)) ? "changed" : exact;
8059
+ if (trace.verdict === "different") return traceShowsDifference && attributed.has(dimension) ? "changed" : exact;
7724
8060
  if (trace.verdict === "unknown" && [
7725
8061
  "changed",
7726
8062
  "added",
@@ -8022,6 +8358,7 @@ function init_dylibResolutionFindings() {
8022
8358
  var ROOT_RELATIVE_PATH, rootRelativePathSchema, dylibResolutionInputSchema, dependencyCommandSchema, dependencySchema, machoSliceSchema, candidateSchema, edgeSchema, findingSchema$1, imageSchema, dylibResolutionResultSchema, candidateTemplates, evaluateCandidate, platformLoadability, imageLoadabilityForPlatform, isKnownPlatform, imageFacts, resolution, resolveDependency, traceProcess, traceDylibLoading, withoutDependencies, compare;
8023
8359
  function init_dylibResolution() {
8024
8360
  return (init_dylibResolution = __esmMin((() => {
8361
+ init_analysisErrorCore();
8025
8362
  init_dyldPaths();
8026
8363
  init_digests();
8027
8364
  init_dyldEnvironment();
@@ -8347,7 +8684,7 @@ function init_dylibResolution() {
8347
8684
  if (rootSlice.install_name !== null && rootSlice.install_name.startsWith("@rpath/")) context.byInstallName.set(rootSlice.install_name, context.root);
8348
8685
  const pending = [context.root];
8349
8686
  while (pending.length > 0) {
8350
- signal?.throwIfAborted();
8687
+ if (signal?.aborted) throw new AnalysisCancelledError("trace_dylib_resolution", { cause: signal.reason });
8351
8688
  const loader = pending.pop() ?? "";
8352
8689
  const current = context.loaded.get(loader);
8353
8690
  if (current === undefined) continue;
@@ -8459,6 +8796,109 @@ function init_dylibResolution() {
8459
8796
  })))();
8460
8797
  }
8461
8798
 
8799
+ //#endregion
8800
+ //#region dist/domain/apple/plistValue.js
8801
+ var MAX_PLIST_DEPTH, unknownDateLimitation, nonFiniteRealLimitation, unknownRealLimitation, negativeZeroReal, negativeZeroRealLimitation, projectPlistValue;
8802
+ function init_plistValue() {
8803
+ return (init_plistValue = __esmMin((() => {
8804
+ init_plistNumbers();
8805
+ MAX_PLIST_DEPTH = 128;
8806
+ unknownDateLimitation = (count) => `${String(count)} date value(s) are reported as { "$plist_type": "date", "iso8601": null } because the decoder could not represent them, such as XML dates with years beyond 9999 or negative years, or dates outside the JavaScript date range.`;
8807
+ nonFiniteRealLimitation = (count) => `${String(count)} non-finite real value(s) are reported as { "$plist_type": "real", "value": "<spelling>" } using canonical numeric labels nan, +infinity or -infinity because a JSON number cannot carry them.`;
8808
+ unknownRealLimitation = (count) => `${String(count)} numeric value(s) are reported as { "$plist_type": "real", "value": null } because XML numeric decoding could not establish their value identity.`;
8809
+ negativeZeroReal = () => ({
8810
+ $plist_type: "real",
8811
+ value: "-0"
8812
+ });
8813
+ negativeZeroRealLimitation = (count) => `${String(count)} negative-zero real value(s) are reported as { "$plist_type": "real", "value": "-0" } because a JSON number cannot carry the sign of zero.`;
8814
+ projectPlistValue = (value, onWrappedScalar) => {
8815
+ let nonFiniteRealCount = 0;
8816
+ let unknownRealCount = 0;
8817
+ let negativeZeroRealCount = 0;
8818
+ let unknownDateCount = 0;
8819
+ const scalar = (value) => {
8820
+ onWrappedScalar?.(value);
8821
+ return value;
8822
+ };
8823
+ const project = (item, depth) => {
8824
+ if (depth > 128) throw new RangeError(`Plist exceeds ${String(128)} nesting levels`);
8825
+ if (item !== null && typeof item === "object" && types.isProxy(item)) throw new TypeError("Plist values cannot contain proxies");
8826
+ if (item instanceof Uint8Array) return scalar({
8827
+ $plist_type: "data",
8828
+ base64: Buffer.from(item).toString("base64")
8829
+ });
8830
+ if (item instanceof UnknownPlistReal) {
8831
+ unknownRealCount += 1;
8832
+ return scalar({
8833
+ $plist_type: "real",
8834
+ value: null
8835
+ });
8836
+ }
8837
+ if (item instanceof Date) {
8838
+ if (!Number.isNaN(Date.prototype.getTime.call(item))) return scalar({
8839
+ $plist_type: "date",
8840
+ iso8601: Date.prototype.toISOString.call(item)
8841
+ });
8842
+ unknownDateCount += 1;
8843
+ return scalar({
8844
+ $plist_type: "date",
8845
+ iso8601: null
8846
+ });
8847
+ }
8848
+ if (typeof item === "number" && !Number.isFinite(item)) {
8849
+ nonFiniteRealCount += 1;
8850
+ const label = Number.isNaN(item) ? "nan" : item > 0 ? "+infinity" : "-infinity";
8851
+ return scalar({
8852
+ $plist_type: "real",
8853
+ value: label
8854
+ });
8855
+ }
8856
+ if (typeof item === "number" && Object.is(item, -0)) {
8857
+ negativeZeroRealCount += 1;
8858
+ return scalar(negativeZeroReal());
8859
+ }
8860
+ if (typeof item === "bigint") return scalar({
8861
+ $plist_type: "integer",
8862
+ decimal: item.toString()
8863
+ });
8864
+ if (Array.isArray(item)) {
8865
+ const result = [];
8866
+ for (let index = 0; index < item.length; index++) {
8867
+ const descriptor = Object.getOwnPropertyDescriptor(item, index);
8868
+ if (descriptor === undefined || !Object.hasOwn(descriptor, "value")) throw new TypeError("Plist arrays require dense data properties without accessors");
8869
+ result.push(project(descriptor.value, depth + 1));
8870
+ }
8871
+ return result;
8872
+ }
8873
+ if (item !== null && typeof item === "object") {
8874
+ const entries = [];
8875
+ for (const key of Reflect.ownKeys(item)) {
8876
+ const descriptor = Object.getOwnPropertyDescriptor(item, key);
8877
+ if (descriptor?.enumerable !== true) continue;
8878
+ if (typeof key !== "string" || !Object.hasOwn(descriptor, "value")) throw new TypeError("Plist dictionary entries require string keys and data properties");
8879
+ entries.push([key, project(descriptor.value, depth + 1)]);
8880
+ }
8881
+ return Object.fromEntries(entries);
8882
+ }
8883
+ return z.union([
8884
+ z.string(),
8885
+ z.number(),
8886
+ z.boolean(),
8887
+ z.null()
8888
+ ]).parse(item);
8889
+ };
8890
+ const projected = project(value, 0);
8891
+ return {
8892
+ value: projected,
8893
+ nonFiniteRealCount,
8894
+ unknownRealCount,
8895
+ negativeZeroRealCount,
8896
+ unknownDateCount
8897
+ };
8898
+ };
8899
+ })))();
8900
+ }
8901
+
8462
8902
  //#endregion
8463
8903
  //#region dist/domain/apple/keyedArchive.js
8464
8904
  var KeyedArchiveKindError, keyedArchiveInputSchema, linkSchema, keyedArchiveResultSchema, record, uid, archiverMismatch, projectKeyedArchive;
@@ -8466,6 +8906,8 @@ function init_keyedArchive() {
8466
8906
  return (init_keyedArchive = __esmMin((() => {
8467
8907
  init_analysisErrorCore();
8468
8908
  init_jsonValue();
8909
+ init_localPath();
8910
+ init_plistValue();
8469
8911
  KeyedArchiveKindError = class extends TypeError {
8470
8912
  kind;
8471
8913
  name = "KeyedArchiveKindError";
@@ -8475,7 +8917,7 @@ function init_keyedArchive() {
8475
8917
  }
8476
8918
  };
8477
8919
  keyedArchiveInputSchema = z.strictObject({
8478
- path: z.string().min(1).default("."),
8920
+ path: localPathStringSchema.default("."),
8479
8921
  root: z.string().optional(),
8480
8922
  offset: z.number().int().min(0).default(0),
8481
8923
  limit: z.number().int().min(1).max(2e4).default(2e4)
@@ -8526,9 +8968,9 @@ function init_keyedArchive() {
8526
8968
  truncated: z.boolean(),
8527
8969
  limitations: z.array(z.string())
8528
8970
  });
8529
- record = (value) => value !== null && typeof value === "object" && !Array.isArray(value) ? value : undefined;
8530
- uid = (value) => {
8531
- const object = record(value);
8971
+ record = (value, wrappedScalars) => value !== null && typeof value === "object" && !Array.isArray(value) && !wrappedScalars.has(value) ? value : undefined;
8972
+ uid = (value, wrappedScalars) => {
8973
+ const object = record(value, wrappedScalars);
8532
8974
  if (object === undefined || Object.keys(object).length !== 1) return undefined;
8533
8975
  const marker = Object.hasOwn(object, "UID") ? object.UID : object["CF$UID"];
8534
8976
  return typeof marker === "number" ? marker : undefined;
@@ -8539,12 +8981,14 @@ function init_keyedArchive() {
8539
8981
  return typeof archive.$archiver === "string" ? `its $archiver is ${JSON.stringify(archive.$archiver)}` : "its $archiver is not a string";
8540
8982
  };
8541
8983
  projectKeyedArchive = (value, selection) => {
8542
- const archive = record(jsonValueSchema.parse(value));
8984
+ const wrappedScalars = new WeakSet();
8985
+ const projected = projectPlistValue(value, (scalar) => wrappedScalars.add(scalar));
8986
+ const archive = record(projected.value, wrappedScalars);
8543
8987
  if (archive?.$archiver !== "NSKeyedArchiver") throw new KeyedArchiveKindError(`Selected property list is not an NSKeyedArchiver archive: ${archiverMismatch(archive)}`, "property-list");
8544
8988
  if (!Array.isArray(archive.$objects)) throw new TypeError("Expected NSKeyedArchiver with an $objects array");
8545
8989
  const table = archive.$objects;
8546
8990
  if (table.length > 2e5) throw new RangeError("Archive exceeds 200000 object-table entries");
8547
- const top = record(archive.$top);
8991
+ const top = record(archive.$top, wrappedScalars);
8548
8992
  if (top === undefined || Object.keys(top).length === 0) throw new TypeError("Keyed archive has no $top roots");
8549
8993
  if (selection.root !== undefined && !Object.hasOwn(top, selection.root)) throw new AnalysisInputError("inspect_keyed_archive", undefined, [{
8550
8994
  path: ["root"],
@@ -8555,16 +8999,13 @@ function init_keyedArchive() {
8555
8999
  const roots = selection.root === undefined ? top : { [selection.root]: top[selection.root] ?? null };
8556
9000
  const references = [];
8557
9001
  const scan = (source, initial) => {
8558
- const pending = [{
8559
- value: initial,
8560
- path: []
8561
- }];
9002
+ const pending = initial;
8562
9003
  let visited = 0;
8563
9004
  while (pending.length > 0) {
8564
9005
  const item = pending.pop();
8565
9006
  if (item === undefined) break;
8566
9007
  if (++visited > 2e5 || item.path.length > 128) throw new RangeError("Archive exceeds 200000 values per object or 128 nesting levels");
8567
- const target = uid(item.value);
9008
+ const target = uid(item.value, wrappedScalars);
8568
9009
  if (target !== undefined) {
8569
9010
  const index = Number.isSafeInteger(target) && target >= 0 ? target : null;
8570
9011
  references.push({
@@ -8583,7 +9024,7 @@ function init_keyedArchive() {
8583
9024
  });
8584
9025
  }
8585
9026
  } else {
8586
- const fields = record(item.value);
9027
+ const fields = record(item.value, wrappedScalars);
8587
9028
  if (fields !== undefined) for (const key of Object.keys(fields).sort().reverse()) {
8588
9029
  const child = fields[key];
8589
9030
  if (child !== undefined) pending.push({
@@ -8595,13 +9036,22 @@ function init_keyedArchive() {
8595
9036
  if (references.length > 2e5) throw new RangeError("Archive exceeds 200000 reference edges");
8596
9037
  }
8597
9038
  };
8598
- scan(null, roots);
9039
+ scan(null, Object.keys(roots).sort().reverse().flatMap((key) => {
9040
+ const value = roots[key];
9041
+ return value === undefined ? [] : [{
9042
+ value,
9043
+ path: [key]
9044
+ }];
9045
+ }));
8599
9046
  const objects = table.map((value, id) => {
8600
- scan(id, value);
8601
- const fields = record(value);
8602
- const classUid = uid(fields?.$class);
9047
+ scan(id, [{
9048
+ value,
9049
+ path: []
9050
+ }]);
9051
+ const fields = record(value, wrappedScalars);
9052
+ const classUid = uid(fields?.$class, wrappedScalars);
8603
9053
  const classId = classUid !== undefined && Number.isSafeInteger(classUid) && classUid >= 0 ? classUid : null;
8604
- const descriptor = classId === null ? undefined : record(table[classId]);
9054
+ const descriptor = classId === null ? undefined : record(table[classId], wrappedScalars);
8605
9055
  const className = typeof descriptor?.$classname === "string" ? descriptor.$classname : null;
8606
9056
  const isNil = id === 0 && value === "$null";
8607
9057
  return {
@@ -8617,6 +9067,10 @@ function init_keyedArchive() {
8617
9067
  const page = objects.slice(selection.offset, end);
8618
9068
  const ids = new Set(page.map(({ id }) => id));
8619
9069
  return {
9070
+ nonFiniteRealCount: projected.nonFiniteRealCount,
9071
+ unknownRealCount: projected.unknownRealCount,
9072
+ negativeZeroRealCount: projected.negativeZeroRealCount,
9073
+ unknownDateCount: projected.unknownDateCount,
8620
9074
  roots,
8621
9075
  objects: page,
8622
9076
  references: references.filter(({ source }) => source === null || ids.has(source)),
@@ -8766,11 +9220,41 @@ function init_appleAssetCatalog() {
8766
9220
  })))();
8767
9221
  }
8768
9222
 
9223
+ //#endregion
9224
+ //#region dist/domain/managed/managedMemberSignatureIdentity.js
9225
+ var signatureIdentity, hasSignatureResolution, withoutResolution, comparableSides;
9226
+ function init_managedMemberSignatureIdentity() {
9227
+ return (init_managedMemberSignatureIdentity = __esmMin((() => {
9228
+ signatureIdentity = ({ raw_sha256, resolved_sha256 }) => resolved_sha256 === null ? `raw:${raw_sha256}` : `resolved:${resolved_sha256}`;
9229
+ hasSignatureResolution = (result) => result.signature_resolution !== null || result.methods.length === 0 && result.fields.length === 0;
9230
+ withoutResolution = (members) => members.map((member) => ({
9231
+ ...member,
9232
+ signature: {
9233
+ ...member.signature,
9234
+ resolved_sha256: null
9235
+ }
9236
+ }));
9237
+ comparableSides = (left, right) => {
9238
+ if (hasSignatureResolution(left.result) && hasSignatureResolution(right.result)) return [left, right];
9239
+ const raw = (side) => ({
9240
+ ...side,
9241
+ result: {
9242
+ ...side.result,
9243
+ methods: withoutResolution(side.result.methods),
9244
+ fields: withoutResolution(side.result.fields)
9245
+ }
9246
+ });
9247
+ return [raw(left), raw(right)];
9248
+ };
9249
+ })))();
9250
+ }
9251
+
8769
9252
  //#endregion
8770
9253
  //#region dist/domain/managed/managedMemberComparisonCoverage.js
8771
9254
  var buildComparisonCoverage, sameSelection, sideCoverageStatus, sideManifest, buildComparisonSummary, buildComparisonMatching, comparisonLimitations;
8772
9255
  function init_managedMemberComparisonCoverage() {
8773
9256
  return (init_managedMemberComparisonCoverage = __esmMin((() => {
9257
+ init_managedMemberSignatureIdentity();
8774
9258
  buildComparisonCoverage = ({ left, right }) => {
8775
9259
  const leftStatus = sideCoverageStatus(left);
8776
9260
  const rightStatus = sideCoverageStatus(right);
@@ -8815,11 +9299,15 @@ function init_managedMemberComparisonCoverage() {
8815
9299
  const limitations = [
8816
9300
  "Metadata tokens are build-local coordinates; matched pairs are remaps, not persistent identities.",
8817
9301
  "Methods pair within one declared type and name by exact CIL/signature, then signature, then structural shape; only then may exact CIL/signature or structural shape alone remap across declared types or names, never taking a member whose own declared type and name remain unpaired on the other side or whose declaring type is unresolved. Names alone are never a matching basis.",
8818
- "Fields pair by declared type, name, and signature, then remap by exact decoded signature alone under the same rule; an undecoded signature is compared only by its raw bytes, and an unmatched member with one stays unknown."
9302
+ "Fields pair by declared type, name, and signature, then remap by exact decoded signature alone under the same rule; an undecoded signature is compared only for an exact signature match, and an unmatched member with one stays unknown."
8819
9303
  ];
9304
+ const namesTypes = (result) => result.methods.some(({ signature }) => signature.resolved_sha256 !== null && signature.resolved_sha256 !== signature.raw_sha256) || result.fields.some(({ signature }) => signature.resolved_sha256 !== null && signature.resolved_sha256 !== signature.raw_sha256);
9305
+ if (hasSignatureResolution(left) && hasSignatureResolution(right) && (namesTypes(left) || namesTypes(right))) limitations.push("Signature type operands compare by namespace, name, and enclosing names only; defining assemblies and CLR type identity are not established by this comparison.");
8820
9306
  if (left.coverage.state !== "complete" || right.coverage.state !== "complete") limitations.push("At least one managed member observation is partial.");
8821
9307
  if (!sameSelection(left, right)) limitations.push("The observations select different declaring types; a member outside the other side's selection is unknown, not added or removed.");
8822
9308
  else if (left.selection !== null) limitations.push(`Both observations cover only the selected declaring types (${left.selection.type_names.join(", ")}); member totals and statuses describe those types, not the whole assembly.`);
9309
+ if (!hasSignatureResolution(left) || !hasSignatureResolution(right)) limitations.push("At least one managed member observation does not attest signature type-name resolution, so signatures compare by raw bytes, which name types by build-local metadata row.");
9310
+ if (left.nesting_read === null || right.nesting_read === null) limitations.push("At least one managed member observation predates enclosing-name identity. The legacy bare-name comparison does not establish the enclosing owner of a nested type.");
8823
9311
  if (left.exported_types === null || right.exported_types === null) limitations.push("At least one managed member observation predates ExportedType inspection; its exported and forwarded types are unknown.");
8824
9312
  if ((left.exported_types?.length ?? 0) > 0 || (right.exported_types?.length ?? 0) > 0) limitations.push("ExportedType rows, including type forwarders, are observed but not compared; an unchanged comparison does not establish an unchanged exported or forwarded type set.");
8825
9313
  limitations.push("ldstr literals are not compared; normalized CIL keeps #US tokens rather than decoded text, so an unchanged method does not establish unchanged string literals.");
@@ -8830,40 +9318,40 @@ function init_managedMemberComparisonCoverage() {
8830
9318
 
8831
9319
  //#endregion
8832
9320
  //#region dist/domain/managed/managedMemberComparisonMatch.js
8833
- var sha256$1, keyMethod, keyField, matchMethods, matchFields, identityOf, declaredAs, matchByKeys, unresolvedSignatureAmbiguities, unpairedOf, competitionIdentityKey, ownerlessContested, remappable, ownerlessDeclarable, groupBy, observedBy, matchObserved, keyMembers, parseManagedMemberEvidence;
9321
+ var sha256$1, keyMethod, keyField, matchMethods, matchFields, identityOf, declaredAs, matchByKeys, unresolvedSignatureAmbiguities, unpairedOf, competitionIdentityKey, ownerlessContested, remappable, declaredCandidates, groupBy, observedBy, matchObserved, keyMembers, parseManagedMemberEvidence;
8834
9322
  function init_managedMemberComparisonMatch() {
8835
9323
  return (init_managedMemberComparisonMatch = __esmMin((() => {
8836
9324
  init_managedArtifact();
8837
9325
  init_managedInspectionEvidence();
9326
+ init_managedMemberSignatureIdentity();
8838
9327
  sha256$1 = (value) => {
8839
9328
  const serialized = canonicalize(value);
8840
9329
  if (serialized === undefined) throw new TypeError("Managed comparison canonicalization failed");
8841
9330
  return createHash("sha256").update(serialized).digest("hex");
8842
9331
  };
8843
- keyMethod = (item) => ({
9332
+ keyMethod = (item, declared) => ({
8844
9333
  item,
8845
- identity: identityOf(item),
8846
- rawSignatureKey: item.signature.raw_sha256,
9334
+ identity: identityOf({
9335
+ declaring_type: declared(item),
9336
+ name: item.name
9337
+ }),
9338
+ identityUnavailable: declared(item) === null,
9339
+ signatureId: signatureIdentity(item.signature),
8847
9340
  exactKey: item.body.status === "present" && item.body.il_sha256 !== null && item.body.normalized_il_sha256 !== null ? sha256$1([
8848
9341
  "method-exact",
8849
- item.signature.raw_sha256,
9342
+ signatureIdentity(item.signature),
8850
9343
  item.body.il_sha256,
8851
9344
  item.body.normalized_il_sha256
8852
9345
  ]) : null,
8853
- signatureKey: sha256$1([
9346
+ signatureKey: declared(item) === null ? null : sha256$1([
8854
9347
  "method-signature",
8855
- item.declaring_type,
9348
+ declared(item),
8856
9349
  item.name,
8857
- item.signature.raw_sha256
9350
+ signatureIdentity(item.signature)
8858
9351
  ]),
8859
9352
  structuralKey: item.signature.parse_status === "decoded" && item.body.status === "present" ? sha256$1([
8860
9353
  "method-structural",
8861
- item.signature.kind,
8862
- item.signature.calling_convention,
8863
- item.signature.generic_parameter_count,
8864
- item.signature.parameter_count,
8865
- item.signature.return_type,
8866
- item.signature.parameter_types,
9354
+ signatureIdentity(item.signature),
8867
9355
  item.body.status,
8868
9356
  item.body.header_format,
8869
9357
  item.body.il_size,
@@ -8884,16 +9372,20 @@ function init_managedMemberComparisonMatch() {
8884
9372
  ])
8885
9373
  ]) : null
8886
9374
  });
8887
- keyField = (item) => ({
9375
+ keyField = (item, declared) => ({
8888
9376
  item,
8889
- identity: identityOf(item),
8890
- rawSignatureKey: item.signature.raw_sha256,
8891
- exactKey: item.signature.parse_status === "decoded" ? sha256$1(["field-exact", item.signature.raw_sha256]) : null,
8892
- signatureKey: sha256$1([
9377
+ identity: identityOf({
9378
+ declaring_type: declared(item),
9379
+ name: item.name
9380
+ }),
9381
+ identityUnavailable: declared(item) === null,
9382
+ signatureId: signatureIdentity(item.signature),
9383
+ exactKey: item.signature.parse_status === "decoded" ? sha256$1(["field-exact", signatureIdentity(item.signature)]) : null,
9384
+ signatureKey: declared(item) === null ? null : sha256$1([
8893
9385
  "field-signature",
8894
- item.declaring_type,
9386
+ declared(item),
8895
9387
  item.name,
8896
- item.signature.raw_sha256
9388
+ signatureIdentity(item.signature)
8897
9389
  ]),
8898
9390
  structuralKey: sha256$1([
8899
9391
  "field-structural",
@@ -8913,11 +9405,11 @@ function init_managedMemberComparisonMatch() {
8913
9405
  {
8914
9406
  basis: "exact-signature",
8915
9407
  key: ({ signatureKey }) => signatureKey,
8916
- competitionKey: ({ rawSignatureKey }) => rawSignatureKey
9408
+ competitionKey: ({ signatureId }) => signatureId
8917
9409
  },
8918
9410
  {
8919
9411
  basis: "structural-method-shape",
8920
- key: declaredAs((keyed) => keyed.item.declaring_type === null ? null : keyed.structuralKey),
9412
+ key: declaredAs((keyed) => keyed.identityUnavailable ? null : keyed.structuralKey),
8921
9413
  competitionKey: ({ structuralKey }) => structuralKey
8922
9414
  },
8923
9415
  {
@@ -8944,7 +9436,7 @@ function init_managedMemberComparisonMatch() {
8944
9436
  {
8945
9437
  basis: "exact-signature",
8946
9438
  key: ({ signatureKey }) => signatureKey,
8947
- competitionKey: ({ rawSignatureKey }) => rawSignatureKey
9439
+ competitionKey: ({ signatureId }) => signatureId
8948
9440
  },
8949
9441
  {
8950
9442
  basis: "field-signature",
@@ -8956,7 +9448,7 @@ function init_managedMemberComparisonMatch() {
8956
9448
  identityOf = ({ declaring_type, name }) => sha256$1([declaring_type, name]);
8957
9449
  declaredAs = (key) => (item) => {
8958
9450
  const value = key(item);
8959
- return value === null ? null : sha256$1([item.identity, value]);
9451
+ return value === null || item.identityUnavailable ? null : sha256$1([item.identity, value]);
8960
9452
  };
8961
9453
  matchByKeys = ({ left, right, rounds }) => {
8962
9454
  const usedLeft = new Set();
@@ -8969,7 +9461,7 @@ function init_managedMemberComparisonMatch() {
8969
9461
  const competitionKey = round.competitionKey ?? ((item) => item.exactKey);
8970
9462
  const unpairedLeft = unpairedOf(left, pairedLeft);
8971
9463
  const unpairedRight = unpairedOf(right, pairedRight);
8972
- const declarable = ownerlessDeclarable(unpairedLeft, unpairedRight, competitionKey);
9464
+ const declarable = declaredCandidates(unpairedLeft, unpairedRight, competitionKey);
8973
9465
  const openLeft = left.filter((item) => !usedLeft.has(item));
8974
9466
  const openRight = right.filter((item) => !usedRight.has(item));
8975
9467
  const remapContested = round.remap === true ? ownerlessContested([openLeft, openRight], competitionKey) : new Set();
@@ -8978,7 +9470,7 @@ function init_managedMemberComparisonMatch() {
8978
9470
  for (const [key, leftItems] of leftGroups) {
8979
9471
  const rightItems = rightGroups.get(key);
8980
9472
  if (rightItems === undefined) continue;
8981
- const refused = round.remap === true && [...leftItems, ...rightItems].some(({ item }) => item.declaring_type === null);
9473
+ const refused = round.remap === true && [...leftItems, ...rightItems].some(({ identityUnavailable }) => identityUnavailable);
8982
9474
  if (!refused && leftItems.length === 1 && rightItems.length === 1) {
8983
9475
  const [leftItem] = leftItems;
8984
9476
  const [rightItem] = rightItems;
@@ -9004,7 +9496,7 @@ function init_managedMemberComparisonMatch() {
9004
9496
  }
9005
9497
  }
9006
9498
  }
9007
- for (const group of unresolvedSignatureAmbiguities(left.filter((item) => !usedLeft.has(item)), right.filter((item) => !usedRight.has(item)), ownerlessContested([unpairedOf(left, pairedLeft), unpairedOf(right, pairedRight)], (member) => member.rawSignatureKey))) {
9499
+ for (const group of unresolvedSignatureAmbiguities(left.filter((item) => !usedLeft.has(item)), right.filter((item) => !usedRight.has(item)), ownerlessContested([unpairedOf(left, pairedLeft), unpairedOf(right, pairedRight)], (member) => member.signatureId))) {
9008
9500
  for (const item of group.left) usedLeft.add(item);
9009
9501
  for (const item of group.right) usedRight.add(item);
9010
9502
  ambiguous.push(group);
@@ -9017,7 +9509,7 @@ function init_managedMemberComparisonMatch() {
9017
9509
  };
9018
9510
  };
9019
9511
  unresolvedSignatureAmbiguities = (left, right, contested) => {
9020
- const key = (member) => competitionIdentityKey(member, member.rawSignatureKey) ?? "";
9512
+ const key = (member) => competitionIdentityKey(member, member.signatureId) ?? "";
9021
9513
  const leftGroups = groupBy(left, key);
9022
9514
  const rightGroups = groupBy(right, key);
9023
9515
  const groups = [];
@@ -9043,7 +9535,7 @@ function init_managedMemberComparisonMatch() {
9043
9535
  const key = competitionIdentityKey(member, keyOf(member));
9044
9536
  if (key === null) continue;
9045
9537
  seen.set(key, (seen.get(key) ?? 0) + 1);
9046
- if (member.item.declaring_type === null) ownerless.add(key);
9538
+ if (member.identityUnavailable) ownerless.add(key);
9047
9539
  }
9048
9540
  for (const key of ownerless) if ((seen.get(key) ?? 0) > 1) contested.add(key);
9049
9541
  }
@@ -9053,24 +9545,15 @@ function init_managedMemberComparisonMatch() {
9053
9545
  const kept = new Set(others.map(({ identity }) => identity));
9054
9546
  return items.filter((member) => {
9055
9547
  const key = keyOf(member);
9056
- return key !== null && contested.has(competitionIdentityKey(member, key) ?? "") || member.item.declaring_type === null || !kept.has(member.identity);
9548
+ return key !== null && contested.has(competitionIdentityKey(member, key) ?? "") || member.identityUnavailable || !kept.has(member.identity);
9057
9549
  });
9058
9550
  };
9059
- ownerlessDeclarable = (left, right, keyOf) => {
9060
- const count = (side) => {
9061
- const seen = new Map();
9062
- for (const member of side) {
9063
- const key = keyOf(member);
9064
- if (key !== null) seen.set(key, (seen.get(key) ?? 0) + 1);
9065
- }
9066
- return seen;
9067
- };
9068
- const leftSeen = count(left);
9069
- const rightSeen = count(right);
9551
+ declaredCandidates = (left, right, keyOf) => {
9070
9552
  const contested = ownerlessContested([left, right], keyOf);
9071
9553
  return (member) => {
9072
- const key = keyOf(member);
9073
- return key !== null && contested.has(competitionIdentityKey(member, key) ?? "") ? false : member.item.declaring_type !== null || key === null || (leftSeen.get(key) ?? 0) <= 1 && (rightSeen.get(key) ?? 0) <= 1;
9554
+ if (member.identityUnavailable) return false;
9555
+ const key = competitionIdentityKey(member, keyOf(member));
9556
+ return key === null || !contested.has(key);
9074
9557
  };
9075
9558
  };
9076
9559
  groupBy = (items, keyOf) => {
@@ -9085,22 +9568,36 @@ function init_managedMemberComparisonMatch() {
9085
9568
  return grouped;
9086
9569
  };
9087
9570
  observedBy = (side) => ({ declaring_type }) => side.result.selection === null || declaring_type !== null && side.result.selection.type_names.includes(declaring_type);
9088
- matchObserved = (left, right, sides, match, key) => {
9089
- const matched = match(left.filter(sides.inRight).map(key), right.filter(sides.inLeft).map(key));
9571
+ matchObserved = (left, right, sides, match, keyLeft, keyRight) => {
9572
+ const matched = match(left.filter(sides.inRight).map(keyLeft), right.filter(sides.inLeft).map(keyRight));
9090
9573
  return {
9091
9574
  ...matched,
9092
- leftOnly: [...matched.leftOnly, ...left.filter((item) => !sides.inRight(item)).map(key)],
9093
- rightOnly: [...matched.rightOnly, ...right.filter((item) => !sides.inLeft(item)).map(key)]
9575
+ leftOnly: [...matched.leftOnly, ...left.filter((item) => !sides.inRight(item)).map(keyLeft)],
9576
+ rightOnly: [...matched.rightOnly, ...right.filter((item) => !sides.inLeft(item)).map(keyRight)]
9094
9577
  };
9095
9578
  };
9096
- keyMembers = (left, right) => {
9579
+ keyMembers = (observedLeft, observedRight) => {
9580
+ const [left, right] = comparableSides(observedLeft, observedRight);
9097
9581
  const sides = {
9098
9582
  inLeft: observedBy(left),
9099
9583
  inRight: observedBy(right)
9100
9584
  };
9585
+ const modern = left.result.nesting_read !== null && right.result.nesting_read !== null;
9586
+ const declared = (inspection) => {
9587
+ const names = new Map(inspection.types.map((type) => [type.token, type.name_sha256]));
9588
+ return (item) => {
9589
+ if (inspection.nesting_read === false) return null;
9590
+ const digest = names.get(item.declaring_type_token ?? "");
9591
+ if (inspection.nesting_read !== null && digest == null) return null;
9592
+ if (!modern) return item.declaring_type;
9593
+ return digest == null ? null : ["nominal-name-sha256", digest];
9594
+ };
9595
+ };
9596
+ const declaredLeft = declared(left.result);
9597
+ const declaredRight = declared(right.result);
9101
9598
  return {
9102
- methodMatches: matchObserved(left.result.methods, right.result.methods, sides, matchMethods, keyMethod),
9103
- fieldMatches: matchObserved(left.result.fields, right.result.fields, sides, matchFields, keyField)
9599
+ methodMatches: matchObserved(left.result.methods, right.result.methods, sides, matchMethods, (item) => keyMethod(item, declaredLeft), (item) => keyMethod(item, declaredRight)),
9600
+ fieldMatches: matchObserved(left.result.fields, right.result.fields, sides, matchFields, (item) => keyField(item, declaredLeft), (item) => keyField(item, declaredRight))
9104
9601
  };
9105
9602
  };
9106
9603
  parseManagedMemberEvidence = (evidence) => {
@@ -9115,15 +9612,16 @@ function init_managedMemberComparisonMatch() {
9115
9612
 
9116
9613
  //#endregion
9117
9614
  //#region dist/domain/managed/managedMemberComparisonItems.js
9118
- var inventoryCovers, methodDimensions, callShape, fieldShape, methodIdentity, fieldIdentity, unmatchedComparison, methodOnlyItem, absenceLimitations, undecodedOneSidedNames, fieldOnlyItem, ambiguityLimitation, buildMethodItems, buildFieldItems;
9615
+ var inventoryCovers, methodDimensions, callShape, fieldShape, methodIdentity, fieldIdentity, unmatchedComparison, methodOnlyItem, absenceLimitations, unresolved, pairedSignatureLimitations, undecodedOneSidedNames, fieldOnlyItem, ambiguityLimitation, buildMethodItems, buildFieldItems;
9119
9616
  function init_managedMemberComparisonItems() {
9120
9617
  return (init_managedMemberComparisonItems = __esmMin((() => {
9121
9618
  init_managedMemberComparisonMatch();
9619
+ init_managedMemberSignatureIdentity();
9122
9620
  inventoryCovers = (complete, selection, member) => complete && (selection === null || member.declaring_type !== null && selection.has(member.declaring_type));
9123
9621
  methodDimensions = (left, right) => {
9124
9622
  const dimensions = [];
9125
9623
  if (left.flags !== right.flags || left.impl_flags !== right.impl_flags) dimensions.push("metadata");
9126
- if (left.signature.raw_sha256 !== right.signature.raw_sha256) dimensions.push("signature");
9624
+ if (signatureIdentity(left.signature) !== signatureIdentity(right.signature)) dimensions.push("signature");
9127
9625
  const leftBodyComplete = left.body.status === "present" && left.body.truncated_instructions === 0;
9128
9626
  const rightBodyComplete = right.body.status === "present" && right.body.truncated_instructions === 0;
9129
9627
  const bothAbsent = left.body.status === "absent" && right.body.status === "absent";
@@ -9168,11 +9666,12 @@ function init_managedMemberComparisonItems() {
9168
9666
  candidate_left_tokens: [],
9169
9667
  candidate_right_tokens: []
9170
9668
  });
9171
- methodOnlyItem = (member, context, undecoded) => {
9669
+ methodOnlyItem = (member, identity, identityUnavailable, context, undecoded) => {
9172
9670
  if (member.left !== undefined) {
9173
- const limitations = absenceLimitations(member.left, {
9671
+ const limitations = absenceLimitations(member.left, identity, {
9174
9672
  oppositeComplete: inventoryCovers(context.rightComplete, context.rightSelection, member.left),
9175
- oppositeUndecodedNames: undecoded.right,
9673
+ unpaired: undecoded,
9674
+ ownIdentityUnavailable: identityUnavailable,
9176
9675
  opposite: "right",
9177
9676
  inventory: "method"
9178
9677
  });
@@ -9190,9 +9689,10 @@ function init_managedMemberComparisonItems() {
9190
9689
  limitations
9191
9690
  };
9192
9691
  }
9193
- const limitations = absenceLimitations(member.right, {
9692
+ const limitations = absenceLimitations(member.right, identity, {
9194
9693
  oppositeComplete: inventoryCovers(context.leftComplete, context.leftSelection, member.right),
9195
- oppositeUndecodedNames: undecoded.left,
9694
+ unpaired: undecoded,
9695
+ ownIdentityUnavailable: identityUnavailable,
9196
9696
  opposite: "left",
9197
9697
  inventory: "method"
9198
9698
  });
@@ -9210,23 +9710,47 @@ function init_managedMemberComparisonItems() {
9210
9710
  limitations
9211
9711
  };
9212
9712
  };
9213
- absenceLimitations = (member, opposite) => [
9713
+ absenceLimitations = (member, identity, opposite) => [
9714
+ ...opposite.ownIdentityUnavailable ? ["declaring-type-name-not-resolved: Declared type identity could not be resolved; a bare display name cannot establish a counterpart or absence."] : [],
9715
+ ...opposite.unpaired.unknownOwners[opposite.opposite].has(member.name) ? [`counterpart-declaring-type-name-not-resolved: The ${opposite.opposite} ${opposite.inventory} inventory has an unpaired same-named member with unresolved enclosing-name identity, so absence was not established.`] : [],
9214
9716
  ...opposite.oppositeComplete ? [] : [`unknown-within-incomplete-metadata: The ${opposite.opposite} ${opposite.inventory} inventory is incomplete, so absence was not observed.`],
9215
- ...member.signature.parse_status === "decoded" ? [] : [`signature-not-decoded: The member's ${member.signature.parse_status} signature was compared only by exact declared type, name, and raw bytes, so a changed or renamed counterpart could not be sought.`],
9216
- ...member.signature.parse_status === "decoded" && opposite.oppositeUndecodedNames.size > 0 && opposite.oppositeUndecodedNames.has(identityOf(member)) ? [`counterpart-signature-not-decoded: The ${opposite.opposite} ${opposite.inventory} inventory has an unpaired member with the same declared type and name whose signature was not decoded, so it may be this member with a changed signature.`] : []
9717
+ ...member.signature.parse_status === "decoded" ? [] : [`signature-not-decoded: The member's ${member.signature.parse_status} signature was compared only by exact declared type, name, and signature bytes, so a changed or renamed counterpart could not be sought.`],
9718
+ ...member.signature.parse_status === "decoded" && opposite.unpaired.undecoded[opposite.opposite].has(identity) ? [`counterpart-signature-not-decoded: The ${opposite.opposite} ${opposite.inventory} inventory has an unpaired member with the same declared type and name whose signature was not decoded, so it may be this member with a changed signature.`] : [],
9719
+ ...unresolved(member, opposite.unpaired.resolved) ? [`signature-not-resolved: The member's signature names a type REA could not name, so it was compared by raw bytes, which name types by build-local metadata row; a counterpart whose referenced type moved rows could not be found.`] : [],
9720
+ ...member.signature.parse_status === "decoded" && !unresolved(member, opposite.unpaired.resolved) && opposite.unpaired.unresolved[opposite.opposite].has(identity) ? [`counterpart-signature-not-resolved: The ${opposite.opposite} ${opposite.inventory} inventory has an unpaired member with the same declared type and name whose signature names a type REA could not name, so it may be this member.`] : []
9217
9721
  ];
9218
- undecodedOneSidedNames = (members) => {
9219
- const names = (side) => new Set(side.filter(({ item }) => item.signature.parse_status !== "decoded").map(({ identity }) => identity));
9722
+ unresolved = (member, resolved) => resolved && member.signature.kind !== "unknown" && member.signature.resolved_sha256 === null;
9723
+ pairedSignatureLimitations = (left, right, examined) => unresolved(left, examined) || unresolved(right, examined) ? ["signature-not-resolved: At least one signature names a type REA could not resolve; equal build-local row bytes do not establish equivalent signature types."] : [];
9724
+ undecodedOneSidedNames = (members, resolved) => {
9725
+ const sides = {
9726
+ left: [...members.leftOnly, ...members.ambiguous.flatMap(({ left }) => left)],
9727
+ right: [...members.rightOnly, ...members.ambiguous.flatMap(({ right }) => right)]
9728
+ };
9729
+ const names = (side, keep) => new Set(side.filter(({ item }) => keep(item)).map(({ identity }) => identity));
9730
+ const undecoded = (item) => item.signature.parse_status !== "decoded";
9731
+ const notResolved = (item) => unresolved(item, resolved);
9220
9732
  return {
9221
- left: names([...members.leftOnly, ...members.ambiguous.flatMap(({ left }) => left)]),
9222
- right: names([...members.rightOnly, ...members.ambiguous.flatMap(({ right }) => right)])
9733
+ resolved,
9734
+ unknownOwners: {
9735
+ left: new Set(sides.left.filter((x) => x.identityUnavailable).map((x) => x.item.name)),
9736
+ right: new Set(sides.right.filter((x) => x.identityUnavailable).map((x) => x.item.name))
9737
+ },
9738
+ undecoded: {
9739
+ left: names(sides.left, undecoded),
9740
+ right: names(sides.right, undecoded)
9741
+ },
9742
+ unresolved: {
9743
+ left: names(sides.left, notResolved),
9744
+ right: names(sides.right, notResolved)
9745
+ }
9223
9746
  };
9224
9747
  };
9225
- fieldOnlyItem = (member, context, undecoded) => {
9748
+ fieldOnlyItem = (member, identity, identityUnavailable, context, undecoded) => {
9226
9749
  if (member.left !== undefined) {
9227
- const limitations = absenceLimitations(member.left, {
9750
+ const limitations = absenceLimitations(member.left, identity, {
9228
9751
  oppositeComplete: inventoryCovers(context.rightComplete, context.rightSelection, member.left),
9229
- oppositeUndecodedNames: undecoded.right,
9752
+ unpaired: undecoded,
9753
+ ownIdentityUnavailable: identityUnavailable,
9230
9754
  opposite: "right",
9231
9755
  inventory: "field"
9232
9756
  });
@@ -9243,9 +9767,10 @@ function init_managedMemberComparisonItems() {
9243
9767
  limitations
9244
9768
  };
9245
9769
  }
9246
- const limitations = absenceLimitations(member.right, {
9770
+ const limitations = absenceLimitations(member.right, identity, {
9247
9771
  oppositeComplete: inventoryCovers(context.leftComplete, context.leftSelection, member.right),
9248
- oppositeUndecodedNames: undecoded.left,
9772
+ unpaired: undecoded,
9773
+ ownIdentityUnavailable: identityUnavailable,
9249
9774
  opposite: "left",
9250
9775
  inventory: "field"
9251
9776
  });
@@ -9262,10 +9787,11 @@ function init_managedMemberComparisonItems() {
9262
9787
  limitations
9263
9788
  };
9264
9789
  };
9265
- ambiguityLimitation = (members, basis) => basis === "exact-signature" ? `Multiple managed ${members} share the same raw signature; REA did not guess declared ownership or a token remap.` : basis === "exact-il-signature" ? "Multiple managed methods share the same CIL and signature; REA did not guess a token remap." : members === "methods" ? "Multiple managed methods share the same structural shape; REA did not guess a token remap." : "Multiple managed fields share the same signature; REA did not guess a token remap.";
9790
+ ambiguityLimitation = (members, basis, identityUnavailable) => identityUnavailable ? "declaring-type-name-not-resolved: Declared type identity remains unresolved; REA did not guess a counterpart from display names, signatures or CIL." : basis === "exact-signature" ? `Multiple managed ${members} share the same signature; REA did not guess declared ownership or a token remap.` : basis === "exact-il-signature" ? "Multiple managed methods share the same CIL and signature; REA did not guess a token remap." : members === "methods" ? "Multiple managed methods share the same structural shape; REA did not guess a token remap." : "Multiple managed fields share the same signature; REA did not guess a token remap.";
9266
9791
  buildMethodItems = (matches, context) => {
9267
9792
  const items = [];
9268
9793
  for (const pair of matches.pairs) {
9794
+ const signatureLimitations = pairedSignatureLimitations(pair.left.item, pair.right.item, context.signatureResolutionExamined);
9269
9795
  const { dimensions: observedDimensions, bodyUnknown } = methodDimensions(pair.left.item, pair.right.item);
9270
9796
  const dimensions = bodyUnknown ? [...observedDimensions, "body-coverage"] : observedDimensions;
9271
9797
  const observedChange = observedDimensions.length > 0;
@@ -9275,7 +9801,7 @@ function init_managedMemberComparisonItems() {
9275
9801
  right: pair.right.item.token,
9276
9802
  basis: pair.basis
9277
9803
  })}`,
9278
- status: observedChange ? "changed" : bodyUnknown ? "unknown" : "unchanged",
9804
+ status: observedChange ? "changed" : bodyUnknown || signatureLimitations.length > 0 ? "unknown" : "unchanged",
9279
9805
  left: methodIdentity(pair.left.item),
9280
9806
  right: methodIdentity(pair.right.item),
9281
9807
  match: {
@@ -9287,7 +9813,7 @@ function init_managedMemberComparisonItems() {
9287
9813
  },
9288
9814
  dimensions,
9289
9815
  evidence_links: [context.leftEvidenceId, context.rightEvidenceId],
9290
- limitations: bodyUnknown ? ["Method body facets are unknown because at least one side has unavailable or partial body data."] : []
9816
+ limitations: [...signatureLimitations, ...bodyUnknown ? ["Method body facets are unknown because at least one side has unavailable or partial body data."] : []]
9291
9817
  });
9292
9818
  }
9293
9819
  for (const ambiguous of matches.ambiguous) {
@@ -9309,24 +9835,25 @@ function init_managedMemberComparisonItems() {
9309
9835
  },
9310
9836
  dimensions: ["availability"],
9311
9837
  evidence_links: [context.leftEvidenceId, context.rightEvidenceId],
9312
- limitations: [ambiguityLimitation("methods", ambiguous.basis)]
9838
+ limitations: [ambiguityLimitation("methods", ambiguous.basis, ambiguous.left.some((item) => item.identityUnavailable) || ambiguous.right.some((item) => item.identityUnavailable))]
9313
9839
  });
9314
9840
  }
9315
- const undecoded = undecodedOneSidedNames(matches);
9316
- for (const item of matches.leftOnly) items.push(methodOnlyItem({ left: item.item }, context, undecoded));
9317
- for (const item of matches.rightOnly) items.push(methodOnlyItem({ right: item.item }, context, undecoded));
9841
+ const undecoded = undecodedOneSidedNames(matches, context.signatureResolutionExamined);
9842
+ for (const item of matches.leftOnly) items.push(methodOnlyItem({ left: item.item }, item.identity, item.identityUnavailable, context, undecoded));
9843
+ for (const item of matches.rightOnly) items.push(methodOnlyItem({ right: item.item }, item.identity, item.identityUnavailable, context, undecoded));
9318
9844
  return items;
9319
9845
  };
9320
9846
  buildFieldItems = (matches, context) => {
9321
9847
  const items = [];
9322
9848
  for (const pair of matches.pairs) {
9323
- const changed = pair.left.item.signature.raw_sha256 !== pair.right.item.signature.raw_sha256 || pair.left.item.flags !== pair.right.item.flags;
9849
+ const signatureLimitations = pairedSignatureLimitations(pair.left.item, pair.right.item, context.signatureResolutionExamined);
9850
+ const changed = signatureIdentity(pair.left.item.signature) !== signatureIdentity(pair.right.item.signature) || pair.left.item.flags !== pair.right.item.flags;
9324
9851
  items.push({
9325
9852
  item_id: `mmc_field_${sha256$1({
9326
9853
  left: pair.left.item.token,
9327
9854
  right: pair.right.item.token
9328
9855
  })}`,
9329
- status: changed ? "changed" : "unchanged",
9856
+ status: changed ? "changed" : signatureLimitations.length > 0 ? "unknown" : "unchanged",
9330
9857
  left: fieldIdentity(pair.left.item),
9331
9858
  right: fieldIdentity(pair.right.item),
9332
9859
  match: {
@@ -9337,7 +9864,7 @@ function init_managedMemberComparisonItems() {
9337
9864
  candidate_right_tokens: []
9338
9865
  },
9339
9866
  evidence_links: [context.leftEvidenceId, context.rightEvidenceId],
9340
- limitations: []
9867
+ limitations: signatureLimitations
9341
9868
  });
9342
9869
  }
9343
9870
  for (const ambiguous of matches.ambiguous) items.push({
@@ -9356,11 +9883,11 @@ function init_managedMemberComparisonItems() {
9356
9883
  candidate_right_tokens: ambiguous.right.map(({ item }) => item.token)
9357
9884
  },
9358
9885
  evidence_links: [context.leftEvidenceId, context.rightEvidenceId],
9359
- limitations: [ambiguityLimitation("fields", ambiguous.basis)]
9886
+ limitations: [ambiguityLimitation("fields", ambiguous.basis, ambiguous.left.some((item) => item.identityUnavailable) || ambiguous.right.some((item) => item.identityUnavailable))]
9360
9887
  });
9361
- const undecoded = undecodedOneSidedNames(matches);
9362
- for (const item of matches.leftOnly) items.push(fieldOnlyItem({ left: item.item }, context, undecoded));
9363
- for (const item of matches.rightOnly) items.push(fieldOnlyItem({ right: item.item }, context, undecoded));
9888
+ const undecoded = undecodedOneSidedNames(matches, context.signatureResolutionExamined);
9889
+ for (const item of matches.leftOnly) items.push(fieldOnlyItem({ left: item.item }, item.identity, item.identityUnavailable, context, undecoded));
9890
+ for (const item of matches.rightOnly) items.push(fieldOnlyItem({ right: item.item }, item.identity, item.identityUnavailable, context, undecoded));
9364
9891
  return items;
9365
9892
  };
9366
9893
  })))();
@@ -9377,6 +9904,7 @@ function init_managedMemberComparison() {
9377
9904
  init_managedMemberComparisonCoverage();
9378
9905
  init_managedMemberComparisonItems();
9379
9906
  init_managedMemberComparisonMatch();
9907
+ init_managedMemberSignatureIdentity();
9380
9908
  init_digests();
9381
9909
  evidenceIdSchema$9 = prefixedDigestSchema("ev");
9382
9910
  tokenSchema$2 = z.string().regex(/^0x[0-9a-f]{8}$/u);
@@ -9560,7 +10088,8 @@ function init_managedMemberComparison() {
9560
10088
  leftComplete: left.result.metadata.status === "complete",
9561
10089
  rightComplete: right.result.metadata.status === "complete",
9562
10090
  leftSelection: selectedTypes(left.result),
9563
- rightSelection: selectedTypes(right.result)
10091
+ rightSelection: selectedTypes(right.result),
10092
+ signatureResolutionExamined: hasSignatureResolution(left.result) && hasSignatureResolution(right.result)
9564
10093
  };
9565
10094
  const methodItems = buildMethodItems(methodMatches, itemContext);
9566
10095
  const fieldItems = buildFieldItems(fieldMatches, itemContext);
@@ -9650,7 +10179,7 @@ function init_managedNativeVerificationSchemas() {
9650
10179
  evidence_links: z.array(evidenceIdSchema$8).min(1),
9651
10180
  limitations: z.array(textSchema$1)
9652
10181
  };
9653
- observedCandidatesSchema = z.tuple([nativeSymbolSchema]).rest(nativeSymbolSchema);
10182
+ observedCandidatesSchema = z.tuple([nativeSymbolSchema], nativeSymbolSchema).check(z.minLength(1));
9654
10183
  pinvokeVerificationSchema = z.union([
9655
10184
  z.strictObject({
9656
10185
  ...pinvokeVerificationContextShape,
@@ -10262,8 +10791,9 @@ function init_artifactComparison() {
10262
10791
  contradiction: 0
10263
10792
  };
10264
10793
  for (const change of changes) counts[change.classification] += 1;
10794
+ const changedPaths = new Set(changes.filter(({ classification }) => classification !== "added").map(({ logical_path: path }) => path));
10265
10795
  return {
10266
- unchanged: covered ? Math.max(0, left.occurrences.length - counts.removed - counts.changed - counts.contradiction - counts.unknown) : 0,
10796
+ unchanged: covered ? left.occurrences.filter(({ logical_path: path }) => !changedPaths.has(path)).length : 0,
10267
10797
  ...counts,
10268
10798
  unknown: covered ? counts.unknown : Math.max(counts.unknown, Math.max(left.manifest.occurrence_count, right.manifest.occurrence_count) - counts.added - counts.removed - counts.changed - counts.contradiction)
10269
10799
  };
@@ -11343,357 +11873,6 @@ function init_reconstructionVerificationSchemas() {
11343
11873
  })))();
11344
11874
  }
11345
11875
 
11346
- //#endregion
11347
- //#region dist/domain/electron/electronFuses.js
11348
- var ELECTRON_FUSE_SENTINEL, ELECTRON_FUSE_STATE_BYTES, ELECTRON_FUSE_V1_NAMES, FUSE_IMPLICATIONS, OTHER_MEANS_LIMITATION, MISSING_SENTINEL_LIMITATION, byteSchema, fuseStateSchema, electronFuseSchema, electronFuseSentinelSchema, electronFuseSliceSchema, implicationLocation, electronFuseImplicationSchema, electronFuseReportSchema, inspectElectronFusesInputSchema, electronFuseState, electronFuseName, describeElectronFuseFindings, embeddedAsarIntegrityApplies, describeSentinel, implicationFor, validateReportBounds, implicationKey, validateSentinel;
11349
- function init_electronFuses() {
11350
- return (init_electronFuses = __esmMin((() => {
11351
- init_digests();
11352
- init_localPath();
11353
- ELECTRON_FUSE_SENTINEL = "dL7pKGdnNz796PbbjQWNKmHXBZaB9tsX";
11354
- ELECTRON_FUSE_STATE_BYTES = {
11355
- disabled: 48,
11356
- enabled: 49,
11357
- removed: 114
11358
- };
11359
- ELECTRON_FUSE_V1_NAMES = [
11360
- "RunAsNode",
11361
- "EnableCookieEncryption",
11362
- "EnableNodeOptionsEnvironmentVariable",
11363
- "EnableNodeCliInspectArguments",
11364
- "EnableEmbeddedAsarIntegrityValidation",
11365
- "OnlyLoadAppFromAsar",
11366
- "LoadBrowserProcessSpecificV8Snapshot",
11367
- "GrantFileProtocolExtraPrivileges",
11368
- "WasmTrapHandlers"
11369
- ];
11370
- FUSE_IMPLICATIONS = [
11371
- {
11372
- subject: "node_cli_inspect_arguments",
11373
- fuseIndex: 3,
11374
- enabled: "honored",
11375
- inactive: "not_honored"
11376
- },
11377
- {
11378
- subject: "electron_run_as_node",
11379
- fuseIndex: 0,
11380
- enabled: "honored",
11381
- inactive: "not_honored"
11382
- },
11383
- {
11384
- subject: "embedded_asar_integrity_validation",
11385
- fuseIndex: 4,
11386
- enabled: "enforced",
11387
- inactive: "not_enforced"
11388
- },
11389
- {
11390
- subject: "only_load_app_from_asar",
11391
- fuseIndex: 5,
11392
- enabled: "restricted_to_app_asar",
11393
- inactive: "not_restricted_to_app_asar"
11394
- }
11395
- ];
11396
- OTHER_MEANS_LIMITATION = "Fuse state does not prove the application enables Inspector through other means, such as app.commandLine or a remote-debugging switch in application code.";
11397
- MISSING_SENTINEL_LIMITATION = "A missing sentinel means fuse state is unknown, not that every fuse is disabled.";
11398
- byteSchema = z.number().int().min(0).max(255);
11399
- fuseStateSchema = z.enum([
11400
- "enabled",
11401
- "disabled",
11402
- "removed",
11403
- "unknown"
11404
- ]);
11405
- electronFuseSchema = z.strictObject({
11406
- index: z.number().int().nonnegative(),
11407
- name: z.string().min(1).nullable(),
11408
- state: fuseStateSchema,
11409
- raw_byte: byteSchema
11410
- });
11411
- electronFuseSentinelSchema = z.strictObject({
11412
- sentinel_offset: z.number().int().nonnegative(),
11413
- wire_version: byteSchema.nullable(),
11414
- declared_length: byteSchema.nullable(),
11415
- fuses: z.array(electronFuseSchema),
11416
- complete: z.boolean()
11417
- });
11418
- electronFuseSliceSchema = z.strictObject({
11419
- index: z.number().int().nonnegative(),
11420
- file_offset: z.number().int().nonnegative(),
11421
- size: z.number().int().nonnegative(),
11422
- architecture: z.string().min(1).nullable(),
11423
- sentinel_count: z.number().int().nonnegative(),
11424
- sentinels: z.array(electronFuseSentinelSchema)
11425
- });
11426
- implicationLocation = {
11427
- relationship: z.literal("derivation"),
11428
- slice_index: z.number().int().nonnegative(),
11429
- sentinel_offset: z.number().int().nonnegative()
11430
- };
11431
- electronFuseImplicationSchema = z.discriminatedUnion("subject", [
11432
- z.strictObject({
11433
- ...implicationLocation,
11434
- subject: z.literal("node_cli_inspect_arguments"),
11435
- fuse_index: z.literal(3),
11436
- outcome: z.enum([
11437
- "honored",
11438
- "not_honored",
11439
- "unknown"
11440
- ])
11441
- }),
11442
- z.strictObject({
11443
- ...implicationLocation,
11444
- subject: z.literal("electron_run_as_node"),
11445
- fuse_index: z.literal(0),
11446
- outcome: z.enum([
11447
- "honored",
11448
- "not_honored",
11449
- "unknown"
11450
- ])
11451
- }),
11452
- z.strictObject({
11453
- ...implicationLocation,
11454
- subject: z.literal("embedded_asar_integrity_validation"),
11455
- fuse_index: z.literal(4),
11456
- outcome: z.enum([
11457
- "enforced",
11458
- "not_enforced",
11459
- "unknown"
11460
- ])
11461
- }),
11462
- z.strictObject({
11463
- ...implicationLocation,
11464
- subject: z.literal("only_load_app_from_asar"),
11465
- fuse_index: z.literal(5),
11466
- outcome: z.enum([
11467
- "restricted_to_app_asar",
11468
- "not_restricted_to_app_asar",
11469
- "unknown"
11470
- ])
11471
- })
11472
- ]);
11473
- electronFuseReportSchema = z.strictObject({
11474
- artifact: z.strictObject({
11475
- selected_path: localPathStringSchema,
11476
- resolved_path: localPathStringSchema,
11477
- sha256: digestSchema,
11478
- bytes: z.number().int().nonnegative(),
11479
- format: z.enum([
11480
- "mach-o",
11481
- "mach-o-universal",
11482
- "pe",
11483
- "elf"
11484
- ])
11485
- }).describe("Caller-selected path, resolved regular file, and the container that was read"),
11486
- slices: z.array(electronFuseSliceSchema).describe("One entry per universal Mach-O slice, or a single entry for a thin Mach-O, PE, or ELF file. Sentinel offsets are file-absolute."),
11487
- runtime_implications: z.array(electronFuseImplicationSchema).describe("Derivations from version-1 fuse bytes. Each entry names the fuse index it came from."),
11488
- limitations: z.array(z.string().min(1))
11489
- }).superRefine((report, context) => {
11490
- validateReportBounds(report, context);
11491
- });
11492
- inspectElectronFusesInputSchema = z.strictObject({ path: localPathStringSchema.describe("Absolute filesystem path to a macOS .app bundle, Electron Framework binary, Windows PE executable, or Linux ELF executable") });
11493
- electronFuseState = (byte) => {
11494
- if (byte === ELECTRON_FUSE_STATE_BYTES.disabled) return "disabled";
11495
- if (byte === ELECTRON_FUSE_STATE_BYTES.enabled) return "enabled";
11496
- if (byte === ELECTRON_FUSE_STATE_BYTES.removed) return "removed";
11497
- return "unknown";
11498
- };
11499
- electronFuseName = (wireVersion, index) => wireVersion === 1 ? ELECTRON_FUSE_V1_NAMES[index] ?? null : null;
11500
- describeElectronFuseFindings = (slices, container) => {
11501
- const runtime_implications = [];
11502
- const limitations = [OTHER_MEANS_LIMITATION, MISSING_SENTINEL_LIMITATION];
11503
- for (const slice of slices) {
11504
- if (slice.sentinel_count === 0) limitations.push(`Slice ${slice.index} at file offset ${slice.file_offset} contains no Electron fuse sentinel; fuse state for that slice is unknown, not disabled.`);
11505
- else if (slice.sentinel_count > 1) limitations.push(`Slice ${slice.index} at file offset ${slice.file_offset} contains ${slice.sentinel_count} Electron fuse sentinels; every sentinel is reported and none is selected.`);
11506
- for (const sentinel of slice.sentinels) describeSentinel(slice.index, sentinel, container, runtime_implications, limitations);
11507
- }
11508
- return {
11509
- runtime_implications,
11510
- limitations
11511
- };
11512
- };
11513
- embeddedAsarIntegrityApplies = (container) => container === "mach-o" || container === "mach-o-universal" || container === "pe";
11514
- describeSentinel = (sliceIndex, sentinel, container, implications, limitations) => {
11515
- if (!sentinel.complete) limitations.push(`Electron fuse wire at file offset ${sentinel.sentinel_offset} is truncated; fuse bytes past the slice stay unknown.`);
11516
- if (sentinel.wire_version === null) return;
11517
- if (sentinel.wire_version !== 1) {
11518
- limitations.push(`Electron fuse wire at file offset ${sentinel.sentinel_offset} uses wire version ${sentinel.wire_version}; version 1 is the only pinned name table, so runtime implications for this wire are unknown.`);
11519
- return;
11520
- }
11521
- for (const spec of FUSE_IMPLICATIONS) {
11522
- const fuse = sentinel.fuses.find((item) => item.index === spec.fuseIndex);
11523
- if (fuse === undefined) {
11524
- limitations.push(`Electron fuse wire at file offset ${sentinel.sentinel_offset} does not include fuse index ${spec.fuseIndex}; that runtime implication is unknown.`);
11525
- continue;
11526
- }
11527
- const applicabilityUnknown = spec.subject === "embedded_asar_integrity_validation" && !embeddedAsarIntegrityApplies(container);
11528
- if (applicabilityUnknown) limitations.push(`Electron compiles embedded ASAR integrity validation only on macOS and Windows; the observed fuse byte at file offset ${sentinel.sentinel_offset} does not establish enforcement.`);
11529
- implications.push(implicationFor(spec, applicabilityUnknown ? "unknown" : fuse.state, {
11530
- slice_index: sliceIndex,
11531
- sentinel_offset: sentinel.sentinel_offset
11532
- }));
11533
- }
11534
- };
11535
- implicationFor = (spec, state, location) => {
11536
- const outcome = state === "enabled" ? spec.enabled : state === "unknown" ? "unknown" : spec.inactive;
11537
- return {
11538
- relationship: "derivation",
11539
- subject: spec.subject,
11540
- fuse_index: spec.fuseIndex,
11541
- outcome,
11542
- ...location
11543
- };
11544
- };
11545
- validateReportBounds = (report, context) => {
11546
- const size = report.artifact.bytes;
11547
- for (const [sliceIndex, slice] of report.slices.entries()) {
11548
- if (slice.index !== sliceIndex) context.addIssue({
11549
- code: "custom",
11550
- path: [
11551
- "slices",
11552
- sliceIndex,
11553
- "index"
11554
- ],
11555
- message: "Slice index does not match its position in the report."
11556
- });
11557
- if (slice.sentinel_count !== slice.sentinels.length) context.addIssue({
11558
- code: "custom",
11559
- path: [
11560
- "slices",
11561
- sliceIndex,
11562
- "sentinel_count"
11563
- ],
11564
- message: "Sentinel count does not match the reported sentinels."
11565
- });
11566
- if (slice.file_offset > size || slice.size > size - slice.file_offset) context.addIssue({
11567
- code: "custom",
11568
- path: ["slices", sliceIndex],
11569
- message: "Slice range extends outside the selected artifact."
11570
- });
11571
- for (const [sentinelIndex, sentinel] of slice.sentinels.entries()) validateSentinel(slice, sentinel, sliceIndex, sentinelIndex, context);
11572
- }
11573
- const expected = new Set(describeElectronFuseFindings(report.slices, report.artifact.format).runtime_implications.map(implicationKey));
11574
- for (const [index, implication] of report.runtime_implications.entries()) {
11575
- if (!expected.has(implicationKey(implication))) context.addIssue({
11576
- code: "custom",
11577
- path: ["runtime_implications", index],
11578
- message: "Runtime implication is not supported by the reported fuse bytes and applicability."
11579
- });
11580
- const slice = report.slices[implication.slice_index];
11581
- if (slice?.sentinels.some((sentinel) => sentinel.sentinel_offset === implication.sentinel_offset) !== true) context.addIssue({
11582
- code: "custom",
11583
- path: ["runtime_implications", index],
11584
- message: "Runtime implication does not reference a reported sentinel."
11585
- });
11586
- }
11587
- };
11588
- implicationKey = (fact) => JSON.stringify([
11589
- fact.slice_index,
11590
- fact.sentinel_offset,
11591
- fact.subject,
11592
- fact.fuse_index,
11593
- fact.outcome
11594
- ]);
11595
- validateSentinel = (slice, sentinel, sliceIndex, sentinelIndex, context) => {
11596
- const sentinelEnd = sentinel.sentinel_offset + ELECTRON_FUSE_SENTINEL.length;
11597
- const wireEnd = sentinelEnd + (sentinel.wire_version === null ? 0 : 1) + (sentinel.declared_length === null ? 0 : 1) + sentinel.fuses.length;
11598
- if (wireEnd > slice.file_offset + slice.size) context.addIssue({
11599
- code: "custom",
11600
- path: [
11601
- "slices",
11602
- sliceIndex,
11603
- "sentinels",
11604
- sentinelIndex
11605
- ],
11606
- message: "Reported wire header or fuse bytes extend outside the slice."
11607
- });
11608
- if (sentinel.sentinel_offset < slice.file_offset || sentinelEnd > slice.file_offset + slice.size) context.addIssue({
11609
- code: "custom",
11610
- path: [
11611
- "slices",
11612
- sliceIndex,
11613
- "sentinels",
11614
- sentinelIndex,
11615
- "sentinel_offset"
11616
- ],
11617
- message: "Sentinel is outside its slice."
11618
- });
11619
- if (sentinel.wire_version === null && sentinel.declared_length !== null) context.addIssue({
11620
- code: "custom",
11621
- path: [
11622
- "slices",
11623
- sliceIndex,
11624
- "sentinels",
11625
- sentinelIndex,
11626
- "declared_length"
11627
- ],
11628
- message: "A wire without a version byte cannot declare a fuse count."
11629
- });
11630
- if (sentinel.complete && (sentinel.declared_length === null || sentinel.fuses.length !== sentinel.declared_length)) context.addIssue({
11631
- code: "custom",
11632
- path: [
11633
- "slices",
11634
- sliceIndex,
11635
- "sentinels",
11636
- sentinelIndex,
11637
- "complete"
11638
- ],
11639
- message: "A complete wire must contain every declared fuse byte."
11640
- });
11641
- if (!sentinel.complete && sentinel.declared_length !== null && sentinel.fuses.length >= sentinel.declared_length) context.addIssue({
11642
- code: "custom",
11643
- path: [
11644
- "slices",
11645
- sliceIndex,
11646
- "sentinels",
11647
- sentinelIndex,
11648
- "complete"
11649
- ],
11650
- message: "An incomplete wire must omit at least one declared fuse byte."
11651
- });
11652
- for (const [fuseIndex, fuse] of sentinel.fuses.entries()) {
11653
- if (fuse.index !== fuseIndex) context.addIssue({
11654
- code: "custom",
11655
- path: [
11656
- "slices",
11657
- sliceIndex,
11658
- "sentinels",
11659
- sentinelIndex,
11660
- "fuses",
11661
- fuseIndex,
11662
- "index"
11663
- ],
11664
- message: "Fuse index does not match its wire position."
11665
- });
11666
- if (fuse.state !== electronFuseState(fuse.raw_byte)) context.addIssue({
11667
- code: "custom",
11668
- path: [
11669
- "slices",
11670
- sliceIndex,
11671
- "sentinels",
11672
- sentinelIndex,
11673
- "fuses",
11674
- fuseIndex,
11675
- "state"
11676
- ],
11677
- message: "Fuse state does not match its raw byte."
11678
- });
11679
- if (sentinel.wire_version !== null && fuse.name !== electronFuseName(sentinel.wire_version, fuse.index)) context.addIssue({
11680
- code: "custom",
11681
- path: [
11682
- "slices",
11683
- sliceIndex,
11684
- "sentinels",
11685
- sentinelIndex,
11686
- "fuses",
11687
- fuseIndex,
11688
- "name"
11689
- ],
11690
- message: "Fuse name does not match the pinned version-1 table."
11691
- });
11692
- }
11693
- };
11694
- })))();
11695
- }
11696
-
11697
11876
  //#endregion
11698
11877
  //#region dist/contracts/toolOutputSchemaGroups.js
11699
11878
  var contextFacetSchema, bookmarkFacetSchema, officialOutputSchemas, literalTraceOutput, callPathTraceOutput, batchProcedureIdentity, enhancedOutputSchemas, nativeOutputSchemas, artifactOutputSchemas, managedOutputSchemas, managedWorkflowOutputSchemas, lifecycleTargetFields, detectedLifecycleTargetSchema, rawLifecycleTargetSchema, sessionOutputSchemas, electronFuseOutputSchemas;
@@ -11958,7 +12137,7 @@ function init_toolOutputSchemaGroups() {
11958
12137
  demangle_swift: evidenceResultOf(demangleSwiftSchema)
11959
12138
  };
11960
12139
  artifactOutputSchemas = {
11961
- inspect_artifact: evidenceResultOf(z.union([artifactInspectionOutputSchema, artifactInventorySummaryViewResultSchema])),
12140
+ inspect_artifact: evidenceResultOf(z.union([artifactInspectionResultSchema, artifactInventorySummaryViewResultSchema])),
11962
12141
  extract_artifact: evidenceResultOf(artifactExtractionResultSchema),
11963
12142
  decode_interface_builder: evidenceResultOf(z.union([interfaceBuilderAnalysisSchema, interfaceBuilderSummaryViewResultSchema])),
11964
12143
  inspect_keyed_archive: evidenceResultOf(keyedArchiveResultSchema),
@@ -11984,7 +12163,7 @@ function init_toolOutputSchemaGroups() {
11984
12163
  detectedLifecycleTargetSchema = z.object({
11985
12164
  ...lifecycleTargetFields,
11986
12165
  format: targetFormatSchema.exclude(["raw-binary"]),
11987
- architecture: z.enum(BINARY_ARCHITECTURES$1).exclude(["6502"]).nullable()
12166
+ architecture: z.enum(BINARY_ARCHITECTURES$1).exclude([...RAW_ONLY_ARCHITECTURES]).nullable()
11988
12167
  });
11989
12168
  rawLifecycleTargetSchema = z.object({
11990
12169
  ...lifecycleTargetFields,
@@ -12067,4 +12246,4 @@ function init_toolOutputSchemaGroups() {
12067
12246
  }
12068
12247
 
12069
12248
  //#endregion
12070
- export { ELECTRON_FUSE_SENTINEL, INSPECT_ANALYSIS_VIEW_OPERATION, KeyedArchiveKindError, PROCESS_PROVIDER, WASM_INTERFACE_REPRESENTATION_BYTES, WEB_NETWORK_CAPTURE_FORMATS, WEB_NETWORK_CAPTURE_LIMITS, WebNetworkApiSurfaceAccumulator, admitRawBinary, analysisDetailOutputSchemaOf, analysisDetailSchema, analysisViewResultSchema, androidInputSchemas, androidPackageInspectionInputSchema, androidPackageSummaryViewResultSchema, androidRequestSchema, androidResultSchemas, appleAssetCatalogInputSchema, appleResourceKeyFields, artifactComparisonInputSchema, artifactOutputSchemas, binaryArchitectureSchema, binaryLayoutPayloadSchema, binaryLayoutSchema, binaryLayoutSummaryViewResultSchema, bundleComparisonInputSchema, bytePatternFields, byteSearchResultSchema, callPathInputSchema, captureSensitiveValues, changedBehaviorInputSchema, compareBundles, compareManagedMembers, compareProcessCaptures, dartAotInspectionInputSchema, dartAotSummaryViewResultSchema, demangleSwiftSchema, describeElectronFuseFindings, dexDescriptorSchema, dylibResolutionInputSchema, dylibResolutionResultSchema, electronFuseName, electronFuseOutputSchemas, electronFuseReportSchema, electronFuseState, enhancedOutputSchemas, evidenceRecordFiltersSchema, evmInterfaceSchema, evmInterfaceSummaryViewResultSchema, flutterInputSchemas, flutterRequestSchema, flutterResultSchemas, importManagedReconstruction, init_WebNetworkApiSurfaceAccumulator, init_analysisDetail, init_analysisView, init_analysisViewErrors, init_androidAnalysis, init_appleAssetCatalog, init_artifactComparison, init_binaryLayout, init_bundleComparison, init_bytePattern, init_callPathSchemas, init_changedBehavior, init_dyldPaths, init_dylibResolution, init_electronFuses, init_evidenceRecordSummary, init_evmInterface, init_flutterBuildAnalysis, init_keyedArchive, init_managedMemberComparison, init_managedMemberComparisonMatch, init_managedNativeVerificationSchemas, init_managedReconstruction, init_nativeCallObservation, init_nativeDataType, init_nativeFunctionAnnotations, init_nativeInspection, init_nativeLoadImage, init_nativeUiObservation, init_pcapAnalysis, init_pngHeader, init_processComparison, init_processEvidenceProvider, init_processTraceSpecification, init_rawBinary, init_reconstructionVerificationSchemas, init_solidityMetadata, init_staticRuntimeCorrelation, init_toolEffects, init_toolOutputSchemaGroups, init_wasmArtifact, init_wasmInterface, init_webNetworkCapture, inspectAnalysisViewInputSchema, inspectBinaryLayoutInputSchema, inspectElectronFusesInputSchema, inspectEvmInterfaceInputSchema, inspectMachoSchema, inspectPlistSchema, inspectSignatureSchema, inspectWasmArtifactInputSchema, inspectWebNetworkCaptureInputSchema, isProcessEvidenceProvider, javascriptApplicationSummaryViewResultSchema, keyedArchiveInputSchema, keyedArchiveResultSchema, listArchitecturesSchema, managedNativeVerificationInputSchema, managedNativeVerificationResultSchema, managedOutputSchemas, managedReconstructionImportInputSchema, managedWorkflowOutputSchemas, nativeCallEventSchema, nativeCallObservationInputSchema, nativeCallObservationResultSchema, nativeCodeLocationSchema, nativeDataTypeInputSchema, nativeDataTypeSchema, nativeFunctionAnnotationsInputSchema, nativeFunctionAnnotationsSchema, nativeLoadImageObservationSchema, nativeLoadImageSchema, nativeOutputSchemas, nativeUiObservationInputSchema, nativeUiResultSchema, nativeUiScenarioInputSchema, nativeUiSnapshotSchema, officialOutputSchemas, parseAppleAssetCatalogRecords, parseManagedMemberEvidence, pcapCaptureSummaryViewResultSchema, pcapInputSchemas, pcapRequestSchema, pcapResultSchemas, pinvokeVerificationSchema, processTraceSpecificationSchema, projectAnalysisView, projectAppleAssetCatalogPage, projectKeyedArchive, rawBinaryEntryPointSchema, rawBinarySelectionError, readPngHeaderDimensions, reconstructionVerificationInputSchema, resolveTreePath, sessionOutputSchemas, solidityMetadataSchema, staticRuntimeCorrelationInputSchema, summarizeEvidenceBundle, toolContractMetadata, traceDylibLoading, validateBytePattern, wasmArtifactMatchesSubject, wasmArtifactSchema, wasmArtifactSummaryViewResultSchema, wasmInterfaceEntryRepresentationBytes, wasmInterfaceSchema, webNetworkCapturePayloadSchema, webNetworkCaptureSchema, webNetworkCaptureSummaryViewResultSchema };
12249
+ export { INSPECT_ANALYSIS_VIEW_OPERATION, KeyedArchiveKindError, PROCESS_PROVIDER, WASM_INTERFACE_REPRESENTATION_BYTES, WEB_NETWORK_CAPTURE_FORMATS, WEB_NETWORK_CAPTURE_LIMITS, WebNetworkApiSurfaceAccumulator, admitAnalysisViewData, admitRawBinary, analysisDetailOutputSchemaOf, analysisDetailSchema, analysisViewResultSchema, androidInputSchemas, androidPackageInspectionInputSchema, androidPackageSummaryViewResultSchema, androidRequestSchema, androidResultSchemas, appleAssetCatalogInputSchema, appleResourceKeyFields, artifactComparisonInputSchema, artifactOutputSchemas, binaryArchitectureSchema, binaryLayoutPayloadSchema, binaryLayoutSchema, binaryLayoutSummaryViewResultSchema, bundleComparisonInputSchema, bytePatternFields, byteSearchResultSchema, callPathInputSchema, captureSensitiveValues, changedBehaviorInputSchema, compareBundles, compareManagedMembers, compareProcessCaptures, dartAotInspectionInputSchema, dartAotSummaryViewResultSchema, demangleSwiftSchema, dexDescriptorSchema, dylibResolutionInputSchema, dylibResolutionResultSchema, electronFuseOutputSchemas, enhancedOutputSchemas, evidenceRecordFiltersSchema, evmInterfaceSchema, evmInterfaceSummaryViewResultSchema, flutterInputSchemas, flutterRequestSchema, flutterResultSchemas, importManagedReconstruction, init_WebNetworkApiSurfaceAccumulator, init_analysisDetail, init_analysisView, init_analysisViewDataAdmission, init_analysisViewErrors, init_androidAnalysis, init_appleAssetCatalog, init_artifactComparison, init_binaryLayout, init_bundleComparison, init_bytePattern, init_callPathSchemas, init_changedBehavior, init_dyldPaths, init_dylibResolution, init_evidenceRecordSummary, init_evmInterface, init_flutterBuildAnalysis, init_keyedArchive, init_managedMemberComparison, init_managedMemberComparisonMatch, init_managedNativeVerificationSchemas, init_managedReconstruction, init_nativeCallObservation, init_nativeDataType, init_nativeFunctionAnnotations, init_nativeInspection, init_nativeLoadImage, init_nativeMetadataRecovery, init_nativeUiObservation, init_pcapAnalysis, init_plistValue, init_pngHeader, init_processComparison, init_processEvidenceProvider, init_processTraceSpecification, init_rawBinary, init_reconstructionVerificationSchemas, init_solidityMetadata, init_staticRuntimeCorrelation, init_toolEffects, init_toolOutputSchemaGroups, init_wasmArtifact, init_wasmInterface, init_webNetworkCapture, inspectAnalysisViewInputSchema, inspectBinaryLayoutInputSchema, inspectEvmInterfaceInputSchema, inspectMachoSchema, inspectPlistSchema, inspectSignatureSchema, inspectWasmArtifactInputSchema, inspectWebNetworkCaptureInputSchema, isProcessEvidenceProvider, javascriptApplicationSummaryViewResultSchema, keyedArchiveInputSchema, keyedArchiveResultSchema, listArchitecturesSchema, managedNativeVerificationInputSchema, managedNativeVerificationResultSchema, managedOutputSchemas, managedReconstructionImportInputSchema, managedWorkflowOutputSchemas, nativeCallEventSchema, nativeCallObservationInputSchema, nativeCallObservationResultSchema, nativeCapturedOutputSchema, nativeCodeLocationSchema, nativeDataTypeInputSchema, nativeDataTypeSchema, nativeFunctionAnnotationsInputSchema, nativeFunctionAnnotationsSchema, nativeLoadImageObservationSchema, nativeLoadImagePartialObservationSchema, nativeLoadImageSchema, nativeMetadataRecoverySummarySchema, nativeOutputSchemas, nativeUiObservationInputSchema, nativeUiResultSchema, nativeUiScenarioInputSchema, nativeUiSnapshotSchema, negativeZeroReal, negativeZeroRealLimitation, nonFiniteRealLimitation, officialOutputSchemas, parseAppleAssetCatalogRecords, parseManagedMemberEvidence, pcapCaptureSummaryViewResultSchema, pcapInputSchemas, pcapRequestSchema, pcapResultSchemas, pinvokeVerificationSchema, processTraceSpecificationSchema, projectAnalysisView, projectAppleAssetCatalogPage, projectKeyedArchive, projectPlistValue, rawBinaryEntryPointSchema, rawBinarySelectionError, readPngHeaderDimensions, reconstructionVerificationInputSchema, resolveTreePath, sessionOutputSchemas, solidityMetadataSchema, staticRuntimeCorrelationInputSchema, summarizeEvidenceBundle, toolContractMetadata, traceDylibLoading, unknownDateLimitation, unknownRealLimitation, validateBytePattern, wasmArtifactMatchesSubject, wasmArtifactSchema, wasmArtifactSummaryViewResultSchema, wasmInterfaceEntryRepresentationBytes, wasmInterfaceSchema, webNetworkCapturePayloadSchema, webNetworkCaptureSchema, webNetworkCaptureSummaryViewResultSchema };