rea-agents 6.4.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 (1420) hide show
  1. package/DISCLAIMER.md +136 -0
  2. package/README.md +76 -16
  3. package/THIRD_PARTY_NOTICES.md +135 -0
  4. package/bridge/android/ReaJadxBridge.java +281 -25
  5. package/bridge/cutter/rea_bridge.py +825 -0
  6. package/bridge/ghidra/ReaGhidraAnalysisOptions.java +38 -0
  7. package/bridge/ghidra/ReaGhidraBridge.java +1232 -142
  8. package/bridge/ghidra/ReaGhidraBundleActivator.java +14 -0
  9. package/bridge/ghidra/ReaGhidraMipsSoftFloat.java +176 -0
  10. package/bridge/ghidra/ReaGhidraPrepareRaw.java +49 -0
  11. package/bridge/hopper_bridge.py +111 -69
  12. package/bridge/mitmproxy/capture.py +189 -13
  13. package/bridge/native/rea_lldb_tracer.py +88 -10
  14. package/bridge/process/ProcessRunTokenReader.swift +76 -34
  15. package/bridge/pwndbg/core_context.py +15 -2
  16. package/bridge/pwntools/layout_impl.py +5 -0
  17. package/bridge/pwntools/recorded_crash_impl.py +31 -10
  18. package/dist/adb/AdbCommand.js +148 -0
  19. package/dist/adb/AdbConfiguration.js +41 -7
  20. package/dist/adb/AdbDeviceOutput.js +59 -37
  21. package/dist/adb/AdbDirectoryListing.js +80 -0
  22. package/dist/adb/AdbHostFileName.js +34 -0
  23. package/dist/adb/AdbInputSnapshot.js +126 -0
  24. package/dist/adb/AdbProvider.js +1106 -346
  25. package/dist/adb/AdbShellOutput.js +146 -77
  26. package/dist/android/AndroidTargetSnapshot.js +7 -7
  27. package/dist/android/JadxAnalysis.js +53 -33
  28. package/dist/android/JadxConfiguration.js +283 -145
  29. package/dist/android/JadxDoctor.js +123 -0
  30. package/dist/android/JadxFailure.js +154 -0
  31. package/dist/android/JadxInterruption.js +13 -0
  32. package/dist/android/JadxJavaProbe.js +246 -0
  33. package/dist/android/JadxMcpTransport.js +53 -18
  34. package/dist/android/JadxProtocol.js +43 -2
  35. package/dist/android/JadxProvider.js +183 -102
  36. package/dist/android/JadxRelease.js +17 -2
  37. package/dist/android/JadxSession.js +35 -14
  38. package/dist/android/JadxWorkspaceRoot.js +157 -0
  39. package/dist/apktool/ApktoolCommandCleanup.js +134 -0
  40. package/dist/apktool/ApktoolCommandOutput.js +22 -0
  41. package/dist/apktool/ApktoolConfiguration.js +306 -45
  42. package/dist/apktool/ApktoolDecodeOutput.js +131 -42
  43. package/dist/apktool/ApktoolDecodedInventory.js +52 -0
  44. package/dist/apktool/ApktoolProvider.js +296 -340
  45. package/dist/apktool/ApktoolStringTables.js +178 -0
  46. package/dist/apktool/ApktoolWorkspace.js +162 -0
  47. package/dist/application/AnalysisContextQueries.js +5 -8
  48. package/dist/application/AnalysisDocument.js +19 -4
  49. package/dist/application/AnalysisProvider.js +36 -18
  50. package/dist/application/AppBundleExecutable.js +16 -9
  51. package/dist/application/BinaryTargetResolver.js +204 -40
  52. package/dist/application/BrowserEvidence.js +1 -1
  53. package/dist/application/BrowserObservationService.js +54 -9
  54. package/dist/application/BrowserScenarioCaptureService.js +26 -7
  55. package/dist/application/CallPathTracing.js +52 -13
  56. package/dist/application/CapabilityInventory.js +182 -36
  57. package/dist/application/ClaudeDesktopConfigLocation.js +152 -0
  58. package/dist/application/ClientConfigurationCleanup.js +73 -0
  59. package/dist/application/ClientConfigurationDocument.js +270 -151
  60. package/dist/application/ClientConfigurationFiles.js +51 -14
  61. package/dist/application/ClientConfigurationPublication.js +167 -0
  62. package/dist/application/ClientRegistrationEnvironment.js +40 -4
  63. package/dist/application/ClientRegistrationIdentity.js +112 -32
  64. package/dist/application/ClientRegistrationStatus.js +280 -84
  65. package/dist/application/DirectAnalysis.js +98 -30
  66. package/dist/application/DirectAnalysisCleanup.js +5 -1
  67. package/dist/application/DirectAnalysisStatus.js +13 -1
  68. package/dist/application/Doctor.js +192 -37
  69. package/dist/application/DoctorDiagnostics.js +59 -16
  70. package/dist/application/DoctorProviderIds.js +8 -0
  71. package/dist/application/DoctorScope.js +11 -2
  72. package/dist/application/DshCordisPatch.js +355 -0
  73. package/dist/application/DshCordisYaml.js +155 -0
  74. package/dist/application/EnhancedLiteralTracing.js +30 -16
  75. package/dist/application/EnhancedToolTypes.js +0 -1
  76. package/dist/application/EnhancedTools.js +154 -56
  77. package/dist/application/EvidenceBundleCommands.js +30 -7
  78. package/dist/application/EvidenceBundleFiles.js +29 -7
  79. package/dist/application/FunctionAnalysisEvidence.js +3 -0
  80. package/dist/application/GeminiClientSettings.js +25 -13
  81. package/dist/application/HermesClientHome.js +20 -0
  82. package/dist/application/HermesConfigurationYaml.js +312 -0
  83. package/dist/application/HopperDownload.js +11 -3
  84. package/dist/application/HopperReleaseFeed.js +71 -0
  85. package/dist/application/InventoryProjectionEvidence.js +0 -1
  86. package/dist/application/InvestigationProviders.js +14 -3
  87. package/dist/application/JsonFiles.js +110 -20
  88. package/dist/application/JsonInputFile.js +220 -62
  89. package/dist/application/LinuxHopper.js +218 -115
  90. package/dist/application/LinuxHopperPublisher.js +656 -0
  91. package/dist/application/MacHopper.js +203 -83
  92. package/dist/application/MacHopperPaths.js +40 -0
  93. package/dist/application/{MipsElfAbiFlags.js → MipsElfMetadata.js} +71 -10
  94. package/dist/application/MipsElfSharedLoad.js +164 -0
  95. package/dist/application/MipsGnuAttributes.js +90 -0
  96. package/dist/application/MsixPackageStorage.js +140 -0
  97. package/dist/application/ProgressReporter.js +1 -1
  98. package/dist/application/ProviderOperationExecution.js +15 -14
  99. package/dist/application/ReconstructionCoverageService.js +0 -1
  100. package/dist/application/ReconstructionObligationCandidates.js +20 -4
  101. package/dist/application/ReconstructionObligationLedgerDiagnostics.js +2 -2
  102. package/dist/application/ReconstructionObligationLedgerEvaluation.js +19 -33
  103. package/dist/application/ReconstructionObligationLedgerProjection.js +3 -72
  104. package/dist/application/ReconstructionObligationLedgerService.js +6 -2
  105. package/dist/application/ReconstructionObligationOriginalCases.js +10 -1
  106. package/dist/application/ReferenceSourceImport.js +24 -8
  107. package/dist/application/ReferenceSourceImportEntries.js +180 -37
  108. package/dist/application/ReferenceSourceImportPolicy.js +5 -3
  109. package/dist/application/ReferenceSourceImportTypes.js +0 -1
  110. package/dist/application/ReferenceSourceVcsAdapter.js +36 -17
  111. package/dist/application/RegularFileRead.js +117 -70
  112. package/dist/application/Setup.js +59 -21
  113. package/dist/application/SetupClientConfiguration.js +301 -66
  114. package/dist/application/SetupClients.js +25 -10
  115. package/dist/application/SetupHost.js +149 -51
  116. package/dist/application/SetupInstallFailure.js +58 -3
  117. package/dist/application/SetupPlan.js +94 -55
  118. package/dist/application/SetupRecoveryBackup.js +93 -0
  119. package/dist/application/SetupRegistrationEnvironment.js +14 -1
  120. package/dist/application/SetupSkill.js +303 -76
  121. package/dist/application/SourceLimitations.js +35 -0
  122. package/dist/application/SupportedClients.js +166 -32
  123. package/dist/application/TypeScriptEmittedSourceCandidates.js +26 -0
  124. package/dist/application/Uninstall.js +356 -110
  125. package/dist/application/UninstallFailure.js +14 -0
  126. package/dist/application/Update.js +54 -25
  127. package/dist/application/UpdateCommandProgress.js +66 -0
  128. package/dist/application/UpdateFailure.js +17 -0
  129. package/dist/application/UpdateMaintenance.js +18 -31
  130. package/dist/application/UpdateRuntime.js +198 -54
  131. package/dist/application/WebModuleTraceService.js +42 -22
  132. package/dist/application/WebNetworkCaptureService.js +24 -12
  133. package/dist/application/WebRuntimeService.js +41 -8
  134. package/dist/application/WebScriptExportService.js +6 -4
  135. package/dist/application/WebSourceLocationService.js +23 -8
  136. package/dist/application/WindowsCapabilities.js +18 -15
  137. package/dist/application/WorkflowEvidence.js +31 -1
  138. package/dist/application/analysisView/AnalysisViewService.js +46 -11
  139. package/dist/application/android/AndroidAnalysisService.js +5 -4
  140. package/dist/application/android/AndroidPackageInspection.js +25 -0
  141. package/dist/application/android/AndroidSearchEvidenceSummary.js +98 -0
  142. package/dist/application/artifacts/ArtifactComparisonEvidence.js +32 -0
  143. package/dist/application/binary/AnalysisProviderEvaluation.js +14 -11
  144. package/dist/application/binary/AnalysisProviderRegistry.js +365 -60
  145. package/dist/application/binary/AnalysisSnapshotCache.js +41 -20
  146. package/dist/application/binary/AnalysisSnapshotFiles.js +75 -9
  147. package/dist/application/binary/BinarySession.js +308 -117
  148. package/dist/application/binary/BinarySessionExecution.js +5 -4
  149. package/dist/application/binary/BinarySessionOpen.js +13 -6
  150. package/dist/application/binary/BinarySessionRecords.js +36 -7
  151. package/dist/application/binary/BinarySessionStatus.js +96 -27
  152. package/dist/application/binary/BinaryTargetSummary.js +9 -0
  153. package/dist/application/binary/CompositeProvider.js +116 -28
  154. package/dist/application/binary/LazyAnalysisProvider.js +6 -66
  155. package/dist/application/binary/SessionProviderRouter.js +16 -4
  156. package/dist/application/binaryDiagnostics/BinaryLayoutService.js +14 -5
  157. package/dist/application/binaryDiagnostics/PeResourcesService.js +25 -5
  158. package/dist/application/binaryDiagnostics/RecordedCrashService.js +17 -7
  159. package/dist/application/captures/PacketCaptureService.js +84 -0
  160. package/dist/application/closeOwnedWebResources.js +37 -0
  161. package/dist/application/electron/ElectronFusePort.js +1 -0
  162. package/dist/application/electron/ElectronFuseService.js +45 -0
  163. package/dist/application/evm/EvmInterfaceEvidence.js +11 -0
  164. package/dist/application/evm/EvmInterfaceService.js +5 -15
  165. package/dist/application/firmware/FirmwareAnalysisService.js +4 -3
  166. package/dist/application/flutter/DartAotInspection.js +26 -0
  167. package/dist/application/flutter/FlutterBuildAnalysisPort.js +1 -0
  168. package/dist/application/flutter/FlutterBuildAnalysisService.js +13 -0
  169. package/dist/application/frida/FridaInstrumentationPort.js +8 -0
  170. package/dist/application/frida/FridaInstrumentationService.js +310 -0
  171. package/dist/application/frida/fridaInputErrors.js +17 -0
  172. package/dist/application/go/GoBinaryPort.js +1 -0
  173. package/dist/application/go/GoBinaryService.js +79 -0
  174. package/dist/application/harmony/HarmonyApplicationService.js +17 -0
  175. package/dist/application/investigation/EvidenceLedger.js +43 -18
  176. package/dist/application/investigation/InvestigationRecords.js +12 -21
  177. package/dist/application/investigation/UnknownEvidence.js +22 -18
  178. package/dist/application/javascript/ElectronActiveObservationService.js +55 -25
  179. package/dist/application/javascript/ElectronBoundaryAnalysis.js +17 -3
  180. package/dist/application/javascript/ElectronBoundaryGraph.js +2 -0
  181. package/dist/application/javascript/ElectronBoundaryGraphCallPaths.js +144 -0
  182. package/dist/application/javascript/ElectronBoundaryGraphIpc.js +26 -7
  183. package/dist/application/javascript/ElectronBoundaryGraphNative.js +1 -1
  184. package/dist/application/javascript/ElectronBoundaryGraphWindows.js +61 -11
  185. package/dist/application/javascript/ElectronEvidence.js +1 -2
  186. package/dist/application/javascript/ElectronObservationService.js +41 -8
  187. package/dist/application/javascript/JavaScriptApplicationEvidence.js +21 -0
  188. package/dist/application/javascript/JavaScriptApplicationService.js +29 -14
  189. package/dist/application/javascript/JavaScriptApplicationWorkflowService.js +0 -1
  190. package/dist/application/javascript/JavaScriptArtifactAnalysis.js +119 -49
  191. package/dist/application/javascript/JavaScriptArtifactAnalysisTypes.js +30 -1
  192. package/dist/application/javascript/JavaScriptArtifactGraphAccumulator.js +51 -21
  193. package/dist/application/javascript/JavaScriptArtifactGraphBuilder.js +31 -7
  194. package/dist/application/javascript/JavaScriptArtifactGraphContext.js +28 -6
  195. package/dist/application/javascript/JavaScriptArtifactGraphDocuments.js +25 -14
  196. package/dist/application/javascript/JavaScriptArtifactGraphEvidence.js +3 -3
  197. package/dist/application/javascript/JavaScriptArtifactGraphFindings.js +186 -50
  198. package/dist/application/javascript/JavaScriptArtifactGraphStructure.js +173 -14
  199. package/dist/application/javascript/JavaScriptArtifactPathResolution.js +959 -188
  200. package/dist/application/javascript/JavaScriptArtifactReconstruction.js +57 -32
  201. package/dist/application/javascript/JavaScriptArtifactReconstructionInput.js +2 -0
  202. package/dist/application/javascript/JavaScriptModuleRelationships.js +34 -12
  203. package/dist/application/javascript/JavaScriptRecoveryService.js +29 -9
  204. package/dist/application/javascript/JavaScriptRuntimeObservationEvidence.js +1 -2
  205. package/dist/application/javascript/JavaScriptRuntimeObservationService.js +33 -9
  206. package/dist/application/javascript/JavaScriptRuntimeReconciliationService.js +0 -1
  207. package/dist/application/javascript/JavaScriptSemanticGraphAsyncProjection.js +4 -5
  208. package/dist/application/javascript/JavaScriptSemanticGraphBuilder.js +138 -43
  209. package/dist/application/javascript/JavaScriptSemanticGraphChildProcessProjection.js +13 -4
  210. package/dist/application/javascript/JavaScriptSemanticGraphConstruction.js +23 -3
  211. package/dist/application/javascript/JavaScriptSemanticGraphDataProjection.js +18 -5
  212. package/dist/application/javascript/JavaScriptSemanticGraphElectronProjection.js +67 -0
  213. package/dist/application/javascript/JavaScriptSemanticGraphFlowProjection.js +4 -6
  214. package/dist/application/javascript/JavaScriptSemanticGraphObjectProjection.js +2 -3
  215. package/dist/application/javascript/JavaScriptSemanticGraphResourceProjection.js +2 -3
  216. package/dist/application/javascript/JavaScriptSemanticGraphValueProjection.js +5 -8
  217. package/dist/application/javascript/JavaScriptSemanticTraceService.js +0 -1
  218. package/dist/application/managed/ManagedApplicationGraphService.js +0 -1
  219. package/dist/application/managed/ManagedMemberComparisonService.js +72 -54
  220. package/dist/application/managed/ManagedNativeVerificationService.js +0 -1
  221. package/dist/application/managed/ManagedReconstructionService.js +0 -1
  222. package/dist/application/native/NativeCallRoutes.js +78 -41
  223. package/dist/application/native/NativeDispatchMetadataInspection.js +6 -2
  224. package/dist/application/native/NativeUiActionTrace.js +43 -22
  225. package/dist/application/native/NativeValueTrace.js +65 -23
  226. package/dist/application/pcap/PcapAnalysisPort.js +1 -0
  227. package/dist/application/pcap/PcapAnalysisService.js +24 -0
  228. package/dist/application/process/ProcessCli.js +33 -13
  229. package/dist/application/reverse/ReverseEngineeringCommandPort.js +1 -0
  230. package/dist/application/reverse/ReverseEngineeringService.js +688 -0
  231. package/dist/application/rust/RustBinaryPort.js +1 -0
  232. package/dist/application/rust/RustBinaryService.js +82 -0
  233. package/dist/application/signals/SignalRecordingService.js +84 -0
  234. package/dist/application/sqlite/SqliteDatabaseCapability.js +30 -0
  235. package/dist/application/sqlite/SqliteDatabasePort.js +1 -0
  236. package/dist/application/sqlite/SqliteDatabaseService.js +76 -0
  237. package/dist/application/wasm/WasmArtifactPort.js +1 -0
  238. package/dist/application/wasm/WasmArtifactService.js +76 -0
  239. package/dist/application/wasm/WasmInterfaceComparisonService.js +188 -0
  240. package/dist/artifacts/AnalysisCleanupLease.js +119 -0
  241. package/dist/artifacts/ArtifactFileOperation.js +150 -0
  242. package/dist/artifacts/ArtifactHash.js +15 -3
  243. package/dist/artifacts/ArtifactPaths.js +4 -7
  244. package/dist/artifacts/ArtifactProvider.js +24 -9
  245. package/dist/artifacts/ArtifactReader.js +63 -5
  246. package/dist/artifacts/ArtifactResourceScope.js +92 -9
  247. package/dist/artifacts/AsarArtifactReader.js +186 -120
  248. package/dist/artifacts/AsarEntryStream.js +49 -17
  249. package/dist/artifacts/AsarListing.js +78 -0
  250. package/dist/artifacts/DirectoryArtifactReader.js +119 -28
  251. package/dist/artifacts/MachOSliceArtifactReader.js +153 -23
  252. package/dist/artifacts/NativeDmgArtifactReader.js +264 -62
  253. package/dist/artifacts/OrderedReads.js +57 -0
  254. package/dist/artifacts/SafeOutputTree.js +24 -7
  255. package/dist/artifacts/SafeOutputTreeCreationFailure.js +1 -0
  256. package/dist/artifacts/SafeOutputTreeReadback.js +10 -16
  257. package/dist/artifacts/ZipArtifactReader.js +150 -25
  258. package/dist/artifacts/apple/AppleAssetCatalogAnalysis.js +79 -68
  259. package/dist/artifacts/apple/DylibFileAccess.js +106 -0
  260. package/dist/artifacts/apple/DylibResolutionReader.js +72 -157
  261. package/dist/artifacts/apple/InterfaceBuilderAnalysis.js +108 -29
  262. package/dist/artifacts/apple/InterfaceBuilderDecodeBudget.js +81 -28
  263. package/dist/artifacts/apple/KeyedArchiveReader.js +23 -13
  264. package/dist/artifacts/apple/MachoLoadCommandReader.js +77 -61
  265. package/dist/artifacts/apple/NibArchive.js +11 -4
  266. package/dist/artifacts/apple/PlistNumberLiterals.js +106 -118
  267. package/dist/artifacts/extraction/ArtifactExtraction.js +21 -19
  268. package/dist/artifacts/hostExecutableMarking.js +16 -0
  269. package/dist/artifacts/inventory/ArtifactGraphConstruction.js +139 -41
  270. package/dist/artifacts/inventory/classify.js +36 -17
  271. package/dist/artifacts/inventory/hashStableRootArtifact.js +14 -7
  272. package/dist/artifacts/inventory/reader.js +36 -21
  273. package/dist/artifacts/inventory/scanCanonical.js +27 -21
  274. package/dist/artifacts/inventory/scanReader.js +36 -10
  275. package/dist/artifacts/javascript/JavaScriptArtifactFiles.js +166 -8
  276. package/dist/artifacts/readArtifactFileChunks.js +9 -0
  277. package/dist/artifacts/readStableArtifact.js +13 -11
  278. package/dist/browser/BrowserProcessStartup.js +20 -9
  279. package/dist/browser/BrowserScenarioPartialObservation.js +74 -92
  280. package/dist/browser/BrowserScenarioSecrets.js +176 -46
  281. package/dist/browser/CdpBrowserProvider.js +124 -102
  282. package/dist/browser/CdpCaptureDocuments.js +232 -102
  283. package/dist/browser/CdpCaptureDomSvg.js +80 -76
  284. package/dist/browser/CdpCaptureEventBodyShapes.js +9 -5
  285. package/dist/browser/CdpCaptureEventHandlers.js +23 -12
  286. package/dist/browser/CdpCaptureEvents.js +49 -10
  287. package/dist/browser/CdpCaptureStorage.js +22 -5
  288. package/dist/browser/CdpCaptureStorageFingerprints.js +54 -11
  289. package/dist/browser/CdpCaptureValues.js +12 -1
  290. package/dist/browser/CdpConnection.js +135 -30
  291. package/dist/browser/CdpElectronInspection.js +74 -64
  292. package/dist/browser/CdpElectronProvider.js +63 -6
  293. package/dist/browser/CdpElectronScriptEvents.js +4 -1
  294. package/dist/browser/CdpElectronScripts.js +4 -6
  295. package/dist/browser/CdpElectronWorkers.js +20 -4
  296. package/dist/browser/CdpEndpoint.js +143 -17
  297. package/dist/browser/CdpObservationSession.js +24 -8
  298. package/dist/browser/CdpPageCapture.js +68 -17
  299. package/dist/browser/CdpPageCaptureScripts.js +18 -13
  300. package/dist/browser/CdpPageCaptureWorkers.js +46 -11
  301. package/dist/browser/CdpSafeMetadata.js +32 -24
  302. package/dist/browser/CdpScreenshot.js +5 -14
  303. package/dist/browser/CdpSnapshotNodes.js +103 -0
  304. package/dist/browser/CdpSnapshotStrings.js +15 -0
  305. package/dist/browser/CdpTargetSession.js +76 -7
  306. package/dist/browser/CdpTargetSessionOwner.js +198 -0
  307. package/dist/browser/CdpWebMcpDiscovery.js +23 -6
  308. package/dist/browser/ElectronCaptureCleanup.js +82 -0
  309. package/dist/browser/ElectronProcessCleanup.js +91 -0
  310. package/dist/browser/PlaywrightBrowserScenarioProvider.js +75 -20
  311. package/dist/browser/PlaywrightElectronActiveActions.js +57 -9
  312. package/dist/browser/PlaywrightElectronActiveFuses.js +86 -0
  313. package/dist/browser/PlaywrightElectronActiveProjection.js +21 -4
  314. package/dist/browser/PlaywrightElectronActiveProvider.js +237 -175
  315. package/dist/browser/PlaywrightExecutionBoundary.js +6 -4
  316. package/dist/browser/PlaywrightScenarioBrowser.js +240 -91
  317. package/dist/browser/PlaywrightScenarioEvents.js +287 -38
  318. package/dist/browser/PlaywrightScenarioServiceWorkers.js +336 -0
  319. package/dist/browser/PlaywrightScenarioSession.js +151 -46
  320. package/dist/browser/PlaywrightScenarioStorage.js +15 -7
  321. package/dist/browser/StructuredFieldToken.js +53 -0
  322. package/dist/browser/WebArtifactCleanup.js +53 -0
  323. package/dist/browser/WebSourceMapFetcher.js +181 -89
  324. package/dist/browser/assets/LocalWebScriptArtifacts.js +24 -3
  325. package/dist/browser/assets/PublishWebScripts.js +13 -2
  326. package/dist/browser/assets/ScenarioScriptCapture.js +2 -1
  327. package/dist/browser/assets/WebArtifactReads.js +15 -3
  328. package/dist/browser/assets/WebSourceLocationArtifacts.js +47 -3
  329. package/dist/browser/execution/CdpRuntimeSession.js +36 -7
  330. package/dist/browser/execution/CdpWebRuntimeProvider.js +22 -4
  331. package/dist/browser/history/CaptureFailures.js +29 -10
  332. package/dist/browser/history/CaptureFormatError.js +2 -2
  333. package/dist/browser/history/{HarJson.js → CaptureJson.js} +14 -4
  334. package/dist/browser/history/CaptureRedaction.js +16 -3
  335. package/dist/browser/history/CaptureRelease.js +20 -2
  336. package/dist/browser/history/HarCapture.js +54 -30
  337. package/dist/browser/history/HarSchema.js +36 -36
  338. package/dist/browser/history/HistoricalCaptureDecoder.js +93 -25
  339. package/dist/browser/history/NodeCaptureAdapter.js +48 -0
  340. package/dist/browser/history/{HarCaptureProcess.js → NodeCaptureProcess.js} +18 -9
  341. package/dist/browser/history/QlogCapture.js +385 -0
  342. package/dist/browser/history/SazCapture.js +130 -0
  343. package/dist/browser/history/SazHttp.js +61 -0
  344. package/dist/browser/history/SazMetadata.js +55 -0
  345. package/dist/browser/history/SazProjection.js +90 -0
  346. package/dist/browser/modules/NativeModuleResolver.js +248 -131
  347. package/dist/browser/modules/WebModuleArtifacts.js +49 -3
  348. package/dist/browser/network/PlaywrightNetworkContent.js +67 -9
  349. package/dist/browser/network/PlaywrightScenarioNetwork.js +249 -26
  350. package/dist/captures/TsharkCaptureProvider.js +377 -0
  351. package/dist/captures/parseFieldDiscovery.js +66 -0
  352. package/dist/captures/parsePacketOutput.js +21 -0
  353. package/dist/catalogIdentity.js +58 -42
  354. package/dist/cli/adbCommands.js +20 -21
  355. package/dist/cli/analysisViewCommands.js +1 -1
  356. package/dist/cli/androidCommands.js +13 -16
  357. package/dist/cli/apktoolCommands.js +14 -25
  358. package/dist/cli/applicationCommands.js +44 -17
  359. package/dist/cli/artifactCommands.js +1 -1
  360. package/dist/cli/binaryDiagnosticsCommands.js +17 -13
  361. package/dist/cli/browserAdvancedCommands.js +46 -26
  362. package/dist/cli/browserCommands.js +59 -33
  363. package/dist/cli/captureCommands.js +72 -0
  364. package/dist/cli/cliResultOutput.js +274 -0
  365. package/dist/cli/coreBinaryCommands.js +77 -30
  366. package/dist/cli/coreNativeCommands.js +53 -31
  367. package/dist/cli/cutterCommands.js +88 -0
  368. package/dist/cli/electronCommands.js +76 -13
  369. package/dist/cli/evmCommands.js +9 -19
  370. package/dist/cli/finishAnalysisCommand.js +52 -0
  371. package/dist/cli/firmwareCommands.js +20 -50
  372. package/dist/cli/flutterCommands.js +53 -0
  373. package/dist/cli/fridaCommands.js +219 -0
  374. package/dist/cli/goCommands.js +20 -0
  375. package/dist/cli/interactiveSetup.js +11 -1
  376. package/dist/cli/javascriptApplicationAnalysis.js +1 -1
  377. package/dist/cli/javascriptRecoveryCommands.js +18 -23
  378. package/dist/cli/jebCommands.js +2 -14
  379. package/dist/cli/jsonOutput.js +2 -2
  380. package/dist/cli/managedCommands.js +31 -3
  381. package/dist/cli/options.js +26 -2
  382. package/dist/cli/pcapCommands.js +29 -0
  383. package/dist/cli/processCommands.js +1 -1
  384. package/dist/cli/reverseEngineeringCommands.js +268 -0
  385. package/dist/cli/rustCommands.js +20 -0
  386. package/dist/cli/setupCommands.js +41 -12
  387. package/dist/cli/signalCommands.js +72 -0
  388. package/dist/cli/sqliteCommands.js +52 -0
  389. package/dist/cli/utilityCommands.js +116 -74
  390. package/dist/cli/wasmCommands.js +50 -0
  391. package/dist/cli/webModuleCommands.js +27 -38
  392. package/dist/cli/webNetworkCaptureCommands.js +10 -9
  393. package/dist/cli/webRuntimeCommands.js +15 -6
  394. package/dist/cli/webSourceLocationCommands.js +14 -33
  395. package/dist/cli-runtime/AnalysisCleanupLease-CWfTGYKd.js +103 -0
  396. package/dist/cli-runtime/AnalysisProvider-BGrYaMVo.js +38 -0
  397. package/dist/cli-runtime/AnalysisSnapshotCache-BjRlXeUS.js +711 -0
  398. package/dist/cli-runtime/ArtifactFileOperation-Dg4BcoEM.js +122 -0
  399. package/dist/cli-runtime/ArtifactReader-DMwm42bk.js +78 -0
  400. package/dist/cli-runtime/ArtifactResourceScope-CokZGcII.js +175 -0
  401. package/dist/cli-runtime/AsarHeader-BxwU17DJ.js +31 -0
  402. package/dist/cli-runtime/BinarySessionStatus-DRhjr7Vb.js +212 -0
  403. package/dist/cli-runtime/BinaryTargetResolver-tuCTjBlQ.js +1238 -0
  404. package/dist/cli-runtime/BoundedFileBytes-DRtiQNAQ.js +43 -0
  405. package/dist/cli-runtime/CdpTargetSession-CQ08KHbh.js +925 -0
  406. package/dist/cli-runtime/ClientConfigPath-Dn-V_GUf.js +255 -0
  407. package/dist/cli-runtime/ClientConfigurationDocument-C9T8MNGc.js +2021 -0
  408. package/dist/cli-runtime/ClientRegistrationStatus-PnD29RTX.js +585 -0
  409. package/dist/cli-runtime/CurrentEntrypointPath-m7QCIVN0.js +14 -0
  410. package/dist/cli-runtime/DirectAnalysis-C5NyUryV.js +581 -0
  411. package/dist/cli-runtime/DirectoryArtifactReader-CokAJ8vo.js +448 -0
  412. package/dist/cli-runtime/Doctor-DrkWsav4.js +668 -0
  413. package/dist/cli-runtime/ElectronFileScope-AP7VoVr7.js +1109 -0
  414. package/dist/cli-runtime/ElectronFuseFailures-DsjXR7Xp.js +609 -0
  415. package/dist/cli-runtime/ExecFileOutput-D6KLYTve.js +119 -0
  416. package/dist/cli-runtime/InterfaceBuilderDecodeBudget-CW1IO3dG.js +298 -0
  417. package/dist/cli-runtime/InventoryProjectionEvidence-DTH5QAqL.js +49 -0
  418. package/dist/cli-runtime/InvestigationProviders-CFh4a64d.js +118 -0
  419. package/dist/cli-runtime/JavaScriptApplicationEvidenceGraph-gOmPB2L6.js +160 -0
  420. package/dist/cli-runtime/JavaScriptApplicationWorkflowEvidence-WZgtK_Ok.js +75 -0
  421. package/dist/cli-runtime/JavaScriptWorkerMemoryLimit-B1bwMM1a.js +86 -0
  422. package/dist/cli-runtime/JebMcpEndpoint-BEalGZh9.js +710 -0
  423. package/dist/cli-runtime/JsonFiles-uvd6ZyQi.js +600 -0
  424. package/dist/cli-runtime/KunaInstallation-P0j3x851.js +1781 -0
  425. package/dist/cli-runtime/MacCodeSignature-MgYbRK_H.js +24 -0
  426. package/dist/cli-runtime/MacHopperPaths-bGzqjF1Z.js +34 -0
  427. package/dist/cli-runtime/MachoLoadCommandReader-CZm6N5vF.js +330 -0
  428. package/dist/cli-runtime/ManagedSnapshot-CPE9C3OD.js +4481 -0
  429. package/dist/cli-runtime/OwnedCommandCleanup-BN_V6Erc.js +187 -0
  430. package/dist/cli-runtime/OwnedRegularFile-D1f5nUCx.js +256 -0
  431. package/dist/cli-runtime/OwnedStagedOutput-D31dOozz.js +126 -0
  432. package/dist/cli-runtime/PrivateRuntimeRoot-Cd23u6jd.js +296 -0
  433. package/dist/cli-runtime/ProcessOwnership-CtrNr6ee.js +545 -0
  434. package/dist/cli-runtime/ProcessOwnershipObservation-C006iCtZ.js +920 -0
  435. package/dist/cli-runtime/ProviderDeadline-rSuH4Pm8.js +148 -0
  436. package/dist/cli-runtime/ProviderOperationExecution-CmU-XrQr.js +38 -0
  437. package/dist/cli-runtime/ProviderProcess-D87A7ctp.js +770 -0
  438. package/dist/cli-runtime/RegularFileRead-mbgGYtxe.js +125 -0
  439. package/dist/cli-runtime/SafeOutputTree-i904hd_2.js +525 -0
  440. package/dist/cli-runtime/SetupHost-CMPmPraB.js +1268 -0
  441. package/dist/cli-runtime/SharedStartupAttempt-BxKyf3Uv.js +1424 -0
  442. package/dist/cli-runtime/StableFileHash-Ame_h3lY.js +61 -0
  443. package/dist/cli-runtime/SupportedClients-DMafjitv.js +1066 -0
  444. package/dist/cli-runtime/UninstallFailure-1blyKXHE.js +22 -0
  445. package/dist/cli-runtime/Update-DAsASWlE.js +143 -0
  446. package/dist/cli-runtime/UpdateFailure-BcFNxEZZ.js +24 -0
  447. package/dist/cli-runtime/WindowsBatchCommand-Cx9kaVNf.js +97 -0
  448. package/dist/cli-runtime/WindowsNativeLoader-BqyZO0ZD.js +142 -0
  449. package/dist/cli-runtime/ZipArtifactReader-Jed69LEL.js +252 -0
  450. package/dist/cli-runtime/analysisErrorCleanup-COdAmDsb.js +33 -0
  451. package/dist/cli-runtime/appleArchiveFormat-Bb3G5CCI.js +269 -0
  452. package/dist/cli-runtime/application__DirectAnalysisStatus-F74bu9oy.js +150 -0
  453. package/dist/cli-runtime/application__EnhancedTools-Bg51b0Yp.js +1820 -0
  454. package/dist/cli-runtime/application__FunctionAnalysisEvidence-DBWIaYCh.js +41 -0
  455. package/dist/cli-runtime/application__ReconstructionCoverageService-AEPNpZqJ.js +32 -0
  456. package/dist/cli-runtime/application__ReconstructionObligationLedgerService-Cl9cPEZf.js +828 -0
  457. package/dist/cli-runtime/application__Setup-DwQzEewK.js +526 -0
  458. package/dist/cli-runtime/application__Uninstall-BOf9oyvQ.js +468 -0
  459. package/dist/cli-runtime/application__UpdateRuntime-CzWkRJHa.js +435 -0
  460. package/dist/cli-runtime/application__android__AndroidApplicationService-shW_aKlj.js +31 -0
  461. package/dist/cli-runtime/application__apple__AppleApplicationService-DIv6d3wB.js +31 -0
  462. package/dist/cli-runtime/application__harmony__HarmonyApplicationService-OIUFVQFV.js +31 -0
  463. package/dist/cli-runtime/application__javascript__ElectronActiveObservationService-wvCh72hK.js +118 -0
  464. package/dist/cli-runtime/application__javascript__ElectronObservationService-SydXPCwM.js +88 -0
  465. package/dist/cli-runtime/application__javascript__JavaScriptApplicationService-o0uEsjEc.js +12254 -0
  466. package/dist/cli-runtime/application__javascript__JavaScriptApplicationWorkflowService-BAheG_71.js +2336 -0
  467. package/dist/cli-runtime/application__javascript__JavaScriptRuntimeReconciliationService-Cnn4GP8q.js +88 -0
  468. package/dist/cli-runtime/application__javascript__JavaScriptSemanticTraceService-CmvLfV1A.js +299 -0
  469. package/dist/cli-runtime/artifacts__ArtifactProvider-wx2K0F2I.js +2205 -0
  470. package/dist/cli-runtime/binary-CWVNJhAC.js +19608 -0
  471. package/dist/cli-runtime/catalogIdentity-DAEEsOdX.js +1112 -0
  472. package/dist/cli-runtime/cli.js +44469 -0
  473. package/dist/cli-runtime/cliOutput-CgSuw782.js +163 -0
  474. package/dist/cli-runtime/cliOutput.js +5 -0
  475. package/dist/cli-runtime/cliResultOutput-10sd6xGx.js +1453 -0
  476. package/dist/cli-runtime/cliResultOutput.js +6 -0
  477. package/dist/cli-runtime/composition__browserScenario-BtPb1c1y.js +3414 -0
  478. package/dist/cli-runtime/composition__electronObservation-Bk8R6DJo.js +614 -0
  479. package/dist/cli-runtime/composition__electronScenario-BVF0qStH.js +916 -0
  480. package/dist/cli-runtime/cutterToolContracts-BQtG_Nzo.js +5267 -0
  481. package/dist/cli-runtime/doctorRuntime-B__SIpm-.js +478 -0
  482. package/dist/cli-runtime/dotnet__ManagedStaticProvider-DO5Yzcp4.js +5 -0
  483. package/dist/cli-runtime/errorSchemas-Ixz_q7qt.js +655 -0
  484. package/dist/cli-runtime/homeDirectory-DC_DeJIg.js +18 -0
  485. package/dist/cli-runtime/javascriptApplicationAnalysis-Dk6yBV8g.js +2088 -0
  486. package/dist/cli-runtime/javascriptExportReturnShapeProjection-CObOIiQ6.js +78 -0
  487. package/dist/cli-runtime/javascriptExportShapeComparisonSchemas-DpwuBenh.js +1244 -0
  488. package/dist/cli-runtime/javascriptRuntimeReconciliation-C6ZgWMys.js +1509 -0
  489. package/dist/cli-runtime/javascriptRuntimeReconciliationSchemas-D6tZKUQs.js +247 -0
  490. package/dist/cli-runtime/javascriptSemanticTraceSchemas-C7m0b6_w.js +126 -0
  491. package/dist/cli-runtime/lipo-DPQ6qurH.js +394 -0
  492. package/dist/cli-runtime/logger-BuDJ9xxO.js +48 -0
  493. package/dist/cli-runtime/machoContainer-Cy98bkFm.js +352 -0
  494. package/dist/cli-runtime/managedApplicationGraph-BazVqpJv.js +1136 -0
  495. package/dist/cli-runtime/managedToolContracts-BuFkMBH5.js +99 -0
  496. package/dist/cli-runtime/mcpDoctor.js +361 -0
  497. package/dist/cli-runtime/mcpStartupPolicy-imCbM3qo.js +28 -0
  498. package/dist/cli-runtime/native__NativeMacOSProvider-DTcRhuGA.js +5502 -0
  499. package/dist/cli-runtime/officialToolContracts-CzzVLx8I.js +1522 -0
  500. package/dist/cli-runtime/peMachine-B9ggfSJJ.js +95 -0
  501. package/dist/cli-runtime/propertyListKeys-D5dSASEy.js +355 -0
  502. package/dist/cli-runtime/providerCleanupError-BhsJyAhk.js +25 -0
  503. package/dist/cli-runtime/providerIdentities-Ao1XTvwx.js +31 -0
  504. package/dist/cli-runtime/providerStartupTimeout-B2tF2LtZ.js +17 -0
  505. package/dist/cli-runtime/readArtifactFileChunks-BbTL_PtB.js +129 -0
  506. package/dist/cli-runtime/reconstructionObligationLedgerSchemas-Bi6sect1.js +22156 -0
  507. package/dist/cli-runtime/rolldown-runtime-DXoylpqc.js +121 -0
  508. package/dist/cli-runtime/runtimeVersion-CMGd0bDu.js +23 -0
  509. package/dist/cli-runtime/safeJson-DKKACtdy.js +25 -0
  510. package/dist/cli-runtime/scanCanonical-CcDFUr-w.js +2594 -0
  511. package/dist/cli-runtime/snapshotEnvironment-Yvx5qwsl.js +196 -0
  512. package/dist/cli-runtime/toolContracts-CJzEyZ38.js +3795 -0
  513. package/dist/cli-runtime/toolOutputSchemaGroups-BqdSzySu.js +12249 -0
  514. package/dist/cli-runtime/workflowInputError-BP8z9Wxl.js +26 -0
  515. package/dist/cli.js +48 -5
  516. package/dist/cliBrowserScenarioCommands.js +41 -7
  517. package/dist/cliCommandNames.js +48 -0
  518. package/dist/cliEvidenceCommands.js +0 -1
  519. package/dist/cliJavaScriptRuntimeCommands.js +16 -14
  520. package/dist/cliJsonInput.js +12 -4
  521. package/dist/cliLogging.js +66 -15
  522. package/dist/cliObservationOptions.js +9 -0
  523. package/dist/cliOutput.js +105 -7
  524. package/dist/composition/binary.js +19 -2
  525. package/dist/composition/captures.js +3 -0
  526. package/dist/composition/directAnalysis.js +36 -11
  527. package/dist/composition/electronFuses.js +4 -0
  528. package/dist/composition/evm.js +12 -0
  529. package/dist/composition/flutter.js +3 -0
  530. package/dist/composition/go.js +4 -0
  531. package/dist/composition/javascriptAnalysisWorkerProcess.js +8 -8
  532. package/dist/composition/jeb.js +45 -5
  533. package/dist/composition/pcap.js +3 -0
  534. package/dist/composition/resolveWindowsProviderExecutable.js +61 -0
  535. package/dist/composition/reverseEngineering.js +29 -0
  536. package/dist/composition/rust.js +4 -0
  537. package/dist/composition/signals.js +3 -0
  538. package/dist/composition/sqlite.js +4 -0
  539. package/dist/composition/wasm.js +22 -0
  540. package/dist/composition/webNetworkCaptures.js +7 -2
  541. package/dist/config/environment.js +79 -4
  542. package/dist/config/ghidraDisabledAnalyzers.js +25 -0
  543. package/dist/config/homeDirectory.js +9 -6
  544. package/dist/config/mcpInputSchemaProfile.js +5 -1
  545. package/dist/config/mcpOutputSchemaProfile.js +22 -0
  546. package/dist/config/parseConfig.js +28 -34
  547. package/dist/config/parsers.js +4 -3
  548. package/dist/config/{ghidraStartupTimeout.js → providerStartupTimeout.js} +7 -3
  549. package/dist/contracts/adb/adbToolContracts.js +8 -8
  550. package/dist/contracts/analysisDetail.js +6 -3
  551. package/dist/contracts/analysisViewApiSurfaceExample.js +68 -0
  552. package/dist/contracts/analysisViewToolContracts.js +65 -3
  553. package/dist/contracts/android/androidToolContracts.js +17 -8
  554. package/dist/contracts/apktool/apktoolToolContracts.js +5 -1
  555. package/dist/contracts/applicationToolContracts.js +17 -2
  556. package/dist/contracts/artifactComparisonExample.js +18 -14
  557. package/dist/contracts/artifactToolContracts.js +16 -3
  558. package/dist/contracts/browserScenarioToolContracts.js +1 -1
  559. package/dist/contracts/browserToolContracts.js +13 -1
  560. package/dist/contracts/captures/captureToolContracts.js +42 -0
  561. package/dist/contracts/compactInputSchema.js +39 -12
  562. package/dist/contracts/cutterToolContracts.js +84 -0
  563. package/dist/contracts/enhancedToolContracts.js +2 -2
  564. package/dist/contracts/evm/evmToolContracts.js +30 -15
  565. package/dist/contracts/firmware/firmwareToolContracts.js +1 -1
  566. package/dist/contracts/flutter/flutterToolContracts.js +47 -0
  567. package/dist/contracts/fridaRemoteAddress.js +23 -0
  568. package/dist/contracts/fridaToolContracts.js +274 -0
  569. package/dist/contracts/functionComparisonExample.js +12 -1
  570. package/dist/contracts/gdbToolContracts.js +102 -0
  571. package/dist/contracts/go/goToolContracts.js +20 -0
  572. package/dist/contracts/hopperMemoryContracts.js +15 -0
  573. package/dist/contracts/inputSchemaPresentation.js +199 -38
  574. package/dist/contracts/investigationExamples.js +1 -0
  575. package/dist/contracts/javascript/electronToolContracts.js +27 -2
  576. package/dist/contracts/javascript/javascriptExportShapeComparisonExample.js +1 -0
  577. package/dist/contracts/javascript/javascriptRecoveryToolContracts.js +13 -1
  578. package/dist/contracts/javascript/javascriptRuntimeReconciliationExample.js +1 -0
  579. package/dist/contracts/jsonSchemaKeywords.js +29 -0
  580. package/dist/contracts/managed/managedToolContracts.js +43 -4
  581. package/dist/contracts/managed/managedWorkflowExamples.js +10 -1
  582. package/dist/contracts/managed/managedWorkflowToolContracts.js +4 -30
  583. package/dist/contracts/mobileApplicationGraphExamples.js +27 -12
  584. package/dist/contracts/native/binaryDiagnosticsToolContracts.js +3 -2
  585. package/dist/contracts/native/nativeToolContracts.js +10 -6
  586. package/dist/contracts/officialToolContracts.js +7 -7
  587. package/dist/contracts/pcap/pcapToolContracts.js +33 -0
  588. package/dist/contracts/providerSelection.js +1 -0
  589. package/dist/contracts/reconstructionReadinessExample.js +126 -119
  590. package/dist/contracts/reverseEngineeringToolContracts.js +52 -0
  591. package/dist/contracts/rizinDebugToolContracts.js +97 -0
  592. package/dist/contracts/rust/rustToolContracts.js +20 -0
  593. package/dist/contracts/sessionLifecycleInputs.js +34 -2
  594. package/dist/contracts/sessionToolContracts.js +4 -4
  595. package/dist/contracts/sessionToolSchemas.js +14 -0
  596. package/dist/contracts/signals/signalToolContracts.js +40 -0
  597. package/dist/contracts/sqlite/sqliteToolContracts.js +36 -0
  598. package/dist/contracts/toolContractExamples.js +29 -0
  599. package/dist/contracts/toolContractTypes.js +2 -0
  600. package/dist/contracts/toolContracts.js +26 -0
  601. package/dist/contracts/toolEffects.js +252 -9
  602. package/dist/contracts/toolOutputSchemaGroups.js +78 -32
  603. package/dist/contracts/toolOutputSchemaPrimitives.js +118 -10
  604. package/dist/contracts/toolSchemaMetadata.js +102 -16
  605. package/dist/contracts/unknownContractExamples.js +1 -1
  606. package/dist/contracts/wasm/wasmComparisonContracts.js +52 -0
  607. package/dist/contracts/wasm/wasmToolContracts.js +33 -0
  608. package/dist/contracts/webNetworkCaptureToolContracts.js +15 -4
  609. package/dist/cutter/CutterBridgeClient.js +760 -0
  610. package/dist/cutter/CutterBridgeService.js +187 -0
  611. package/dist/doctorRuntime.js +41 -8
  612. package/dist/domain/adb/adbDeviceAnalysis.js +45 -5
  613. package/dist/domain/analysisErrorBase.js +79 -2
  614. package/dist/domain/analysisErrorCleanup.js +4 -2
  615. package/dist/domain/analysisErrorCore.js +32 -0
  616. package/dist/domain/analysisErrorPresentation.js +80 -20
  617. package/dist/domain/analysisErrorProjection.js +72 -37
  618. package/dist/domain/analysisProfile.js +7 -3
  619. package/dist/domain/analysisSearch.js +26 -0
  620. package/dist/domain/analysisSnapshot.js +312 -185
  621. package/dist/domain/analysisView/WebNetworkApiSurfaceAccumulator.js +353 -0
  622. package/dist/domain/analysisView/analysisView.js +391 -44
  623. package/dist/domain/analysisView/analysisViewCoverage.js +32 -0
  624. package/dist/domain/analysisView/analysisViewDataAdmission.js +86 -0
  625. package/dist/domain/analysisView/analysisViewErrors.js +4 -0
  626. package/dist/domain/analysisView/analysisViewParent.js +12 -0
  627. package/dist/domain/analysisView/analysisViewText.js +29 -0
  628. package/dist/domain/analysisView/androidPackageView.js +102 -0
  629. package/dist/domain/analysisView/artifactInventoryView.js +126 -0
  630. package/dist/domain/analysisView/binaryLayoutView.js +11 -4
  631. package/dist/domain/analysisView/dartAotView.js +93 -0
  632. package/dist/domain/analysisView/evmInterfaceView.js +105 -0
  633. package/dist/domain/analysisView/interfaceBuilderView.js +182 -0
  634. package/dist/domain/analysisView/javascriptApplicationCoverage.js +27 -0
  635. package/dist/domain/analysisView/javascriptApplicationView.js +123 -49
  636. package/dist/domain/analysisView/javascriptFactsView.js +92 -0
  637. package/dist/domain/analysisView/javascriptModuleReferences.js +37 -0
  638. package/dist/domain/analysisView/machoView.js +186 -0
  639. package/dist/domain/analysisView/managedArtifactView.js +108 -0
  640. package/dist/domain/analysisView/managedMemberView.js +215 -0
  641. package/dist/domain/analysisView/nativeFunctionView.js +20 -25
  642. package/dist/domain/analysisView/pcapCaptureView.js +264 -0
  643. package/dist/domain/analysisView/qlogCaptureView.js +198 -0
  644. package/dist/domain/analysisView/wasmArtifactView.js +162 -0
  645. package/dist/domain/analysisView/webNetworkApiSurfaceView.js +123 -0
  646. package/dist/domain/analysisView/webNetworkCaptureView.js +388 -0
  647. package/dist/domain/android/androidAnalysis.js +36 -2
  648. package/dist/domain/android/androidApplication.js +37 -64
  649. package/dist/domain/apktool/apktoolResourceAnalysis.js +70 -8
  650. package/dist/domain/apple/appleApplication.js +70 -87
  651. package/dist/domain/apple/appleArchiveFormat.js +184 -0
  652. package/dist/domain/apple/appleAssetCatalog.js +15 -0
  653. package/dist/domain/apple/appleBundleAnatomy.js +57 -69
  654. package/dist/domain/apple/dyldPaths.js +9 -2
  655. package/dist/domain/apple/dylibResolution.js +24 -10
  656. package/dist/domain/apple/dylibResolutionFindings.js +8 -9
  657. package/dist/domain/apple/interfaceBuilderGraph.js +78 -33
  658. package/dist/domain/apple/interfaceBuilderKeyedArchive.js +39 -12
  659. package/dist/domain/apple/jvmClassFile.js +226 -0
  660. package/dist/domain/apple/keyedArchive.js +39 -17
  661. package/dist/domain/apple/machoContainer.js +123 -8
  662. package/dist/domain/apple/machoCpuIdentity.js +4 -0
  663. package/dist/domain/apple/plistNumbers.js +67 -5
  664. package/dist/domain/apple/plistValue.js +95 -19
  665. package/dist/domain/artifactComparison.js +116 -37
  666. package/dist/domain/artifactDecompressionBudget.js +26 -0
  667. package/dist/domain/artifactGraph.js +18 -9
  668. package/dist/domain/artifactIdentity.js +4 -1
  669. package/dist/domain/artifactInspection.js +34 -3
  670. package/dist/domain/artifactInventoryEvidence.js +146 -40
  671. package/dist/domain/binaryTarget.js +251 -109
  672. package/dist/domain/binaryTargetTypes.js +24 -1
  673. package/dist/domain/browserNetworkEvidence.js +24 -3
  674. package/dist/domain/browserObservation.js +92 -56
  675. package/dist/domain/browserObservationError.js +4 -4
  676. package/dist/domain/browserObservationSchemas.js +4 -1
  677. package/dist/domain/browserScenarioCapture.js +11 -1
  678. package/dist/domain/browserScenarioCaptureLimits.js +34 -0
  679. package/dist/domain/browserScenarioCaptureValues.js +76 -2
  680. package/dist/domain/browserScenarioDiff.js +120 -11
  681. package/dist/domain/browserScenarioDiffEvidence.js +44 -13
  682. package/dist/domain/browserScenarioDiffValues.js +10 -3
  683. package/dist/domain/browserScenarioNetworkComparison.js +158 -0
  684. package/dist/domain/browserScenarioNormalization.js +10 -13
  685. package/dist/domain/browserScenarioValues.js +7 -13
  686. package/dist/domain/browserSession.js +2 -2
  687. package/dist/domain/bundleComparison.js +1 -5
  688. package/dist/domain/callPath.js +40 -3
  689. package/dist/domain/captures/packetCapture.js +139 -0
  690. package/dist/domain/captures/packetFields.js +81 -0
  691. package/dist/domain/changedBehavior.js +43 -41
  692. package/dist/domain/comparisonSourceEvidence.js +6 -0
  693. package/dist/domain/dosCom.js +2 -2
  694. package/dist/domain/dosMz.js +66 -19
  695. package/dist/domain/electron/electronFuseEvidence.js +42 -0
  696. package/dist/domain/electron/electronFuses.js +360 -0
  697. package/dist/domain/elfFixedHeader.js +66 -0
  698. package/dist/domain/evidence.js +105 -39
  699. package/dist/domain/evidenceBundle.js +67 -22
  700. package/dist/domain/evidenceErrors.js +5 -0
  701. package/dist/domain/evm/evmInterface.js +18 -4
  702. package/dist/domain/evm/solidityMetadata.js +70 -0
  703. package/dist/domain/explicitSensitiveFailure.js +44 -23
  704. package/dist/domain/fileSnapshotObservation.js +25 -0
  705. package/dist/domain/firmware/firmwareAnalysis.js +29 -0
  706. package/dist/domain/fixedTupleSchema.js +9 -0
  707. package/dist/domain/flutter/flutterBuildAnalysis.js +141 -0
  708. package/dist/domain/functionCallCoverage.js +60 -0
  709. package/dist/domain/functionComparisonDimensions.js +136 -18
  710. package/dist/domain/functionComparisonNormalization.js +83 -19
  711. package/dist/domain/functionComparisonResults.js +7 -6
  712. package/dist/domain/functionComparisonSchemas.js +14 -3
  713. package/dist/domain/functionDossierEvidence.js +4 -0
  714. package/dist/domain/go/goBinary.js +96 -0
  715. package/dist/domain/harmony/harmonyApplication.js +156 -0
  716. package/dist/domain/hopperErrors.js +19 -18
  717. package/dist/domain/hopperPublisher.js +12 -0
  718. package/dist/domain/hopperValues.js +135 -34
  719. package/dist/domain/javascript/electronActiveObservation.js +1 -0
  720. package/dist/domain/javascript/electronObservation.js +4 -1
  721. package/dist/domain/javascript/electronStaticAnalysisBrowser.js +94 -33
  722. package/dist/domain/javascript/electronStaticAnalysisIpc.js +3 -1
  723. package/dist/domain/javascript/electronStaticAnalysisNative.js +19 -5
  724. package/dist/domain/javascript/electronStaticAnalysisValues.js +14 -28
  725. package/dist/domain/javascript/electronStaticOptionObjects.js +45 -0
  726. package/dist/domain/javascript/electronWrappedCallPaths.js +551 -0
  727. package/dist/domain/javascript/htmlArtifactReferences.js +94 -4
  728. package/dist/domain/javascript/javascriptAnalysisResourceControls.js +37 -1
  729. package/dist/domain/javascript/javascriptApplicationAnalysis.js +7 -0
  730. package/dist/domain/javascript/javascriptApplicationChangeGraph.js +10 -2
  731. package/dist/domain/javascript/javascriptApplicationEvidenceSchemas.js +1 -1
  732. package/dist/domain/javascript/javascriptApplicationGraph.js +17 -1
  733. package/dist/domain/javascript/javascriptApplicationGraphSchemas.js +1 -0
  734. package/dist/domain/javascript/javascriptApplicationProjectionResources.js +8 -0
  735. package/dist/domain/javascript/javascriptApplicationVersionComparisonSchemas.js +3 -1
  736. package/dist/domain/javascript/javascriptApplicationVersionItems.js +49 -21
  737. package/dist/domain/javascript/javascriptApplicationVersionKeys.js +31 -18
  738. package/dist/domain/javascript/javascriptArtifactFiles.js +2 -1
  739. package/dist/domain/javascript/javascriptAstFingerprint.js +89 -24
  740. package/dist/domain/javascript/javascriptAstValues.js +132 -5
  741. package/dist/domain/javascript/javascriptBootstrap.js +94 -0
  742. package/dist/domain/javascript/javascriptBootstrapIntegrity.js +372 -0
  743. package/dist/domain/javascript/javascriptBuiltinResourceMethods.js +8 -0
  744. package/dist/domain/javascript/javascriptBundledRequireOrigin.js +278 -0
  745. package/dist/domain/javascript/javascriptCommonJsExportReceivers.js +231 -0
  746. package/dist/domain/javascript/javascriptContextBridgeExposure.js +23 -0
  747. package/dist/domain/javascript/javascriptElectronMemberWrites.js +96 -22
  748. package/dist/domain/javascript/javascriptExportShapeComparisonSchemas.js +6 -5
  749. package/dist/domain/javascript/javascriptExportShapeVariants.js +1 -1
  750. package/dist/domain/javascript/javascriptFeatureSeed.js +34 -17
  751. package/dist/domain/javascript/javascriptFeatureTrace.js +9 -3
  752. package/dist/domain/javascript/javascriptFeatureTraceSchemas.js +42 -11
  753. package/dist/domain/javascript/javascriptGraphqlOperations.js +382 -0
  754. package/dist/domain/javascript/javascriptIntrinsicInvocation.js +132 -0
  755. package/dist/domain/javascript/javascriptModuleDeclaration.js +48 -0
  756. package/dist/domain/javascript/javascriptModuleInterop.js +618 -0
  757. package/dist/domain/javascript/javascriptModuleResolutionMode.js +18 -0
  758. package/dist/domain/javascript/javascriptModuleSpecifier.js +5 -0
  759. package/dist/domain/javascript/javascriptNativeHandoff.js +7 -12
  760. package/dist/domain/javascript/javascriptPackageImportAliases.js +58 -0
  761. package/dist/domain/javascript/javascriptRecovery.js +12 -5
  762. package/dist/domain/javascript/javascriptRpcEndpoints.js +7 -93
  763. package/dist/domain/javascript/javascriptRuntimeLoadState.js +16 -0
  764. package/dist/domain/javascript/javascriptRuntimeObservation.js +4 -1
  765. package/dist/domain/javascript/javascriptRuntimeReconciliationCaptureParsing.js +45 -16
  766. package/dist/domain/javascript/javascriptRuntimeReconciliationMatching.js +65 -47
  767. package/dist/domain/javascript/javascriptRuntimeReconciliationResult.js +0 -1
  768. package/dist/domain/javascript/javascriptRuntimeReconciliationSchemas.js +5 -4
  769. package/dist/domain/javascript/javascriptRuntimeStaticCandidates.js +113 -11
  770. package/dist/domain/javascript/javascriptSemanticAmbientWrites.js +511 -0
  771. package/dist/domain/javascript/javascriptSemanticAnalysis.js +706 -204
  772. package/dist/domain/javascript/javascriptSemanticAsyncEffects.js +54 -54
  773. package/dist/domain/javascript/javascriptSemanticCallResolution.js +59 -30
  774. package/dist/domain/javascript/javascriptSemanticCallableStack.js +52 -0
  775. package/dist/domain/javascript/javascriptSemanticCalls.js +10 -15
  776. package/dist/domain/javascript/javascriptSemanticChildProcesses.js +163 -92
  777. package/dist/domain/javascript/javascriptSemanticCoverage.js +5 -1
  778. package/dist/domain/javascript/javascriptSemanticDataEffectHelpers.js +435 -45
  779. package/dist/domain/javascript/javascriptSemanticDataEffects.js +46 -29
  780. package/dist/domain/javascript/javascriptSemanticDependencies.js +69 -0
  781. package/dist/domain/javascript/javascriptSemanticDerivedAnalysis.js +1 -1
  782. package/dist/domain/javascript/javascriptSemanticEvaluationOrder.js +126 -0
  783. package/dist/domain/javascript/javascriptSemanticExpressionShapes.js +111 -0
  784. package/dist/domain/javascript/javascriptSemanticFingerprints.js +11 -14
  785. package/dist/domain/javascript/javascriptSemanticGetterQueries.js +147 -0
  786. package/dist/domain/javascript/javascriptSemanticGetterResults.js +264 -0
  787. package/dist/domain/javascript/javascriptSemanticGraph.js +22 -1
  788. package/dist/domain/javascript/javascriptSemanticGraphSchemas.js +13 -1
  789. package/dist/domain/javascript/javascriptSemanticIterationSources.js +5 -4
  790. package/dist/domain/javascript/javascriptSemanticMapOperations.js +51 -0
  791. package/dist/domain/javascript/javascriptSemanticMemberMutations.js +421 -154
  792. package/dist/domain/javascript/javascriptSemanticMutationInitializers.js +500 -27
  793. package/dist/domain/javascript/javascriptSemanticObjectReferences.js +377 -174
  794. package/dist/domain/javascript/javascriptSemanticObjects.js +53 -43
  795. package/dist/domain/javascript/javascriptSemanticOpaqueEffects.js +163 -0
  796. package/dist/domain/javascript/javascriptSemanticPrimitives.js +11 -1
  797. package/dist/domain/javascript/javascriptSemanticProjection.js +180 -95
  798. package/dist/domain/javascript/javascriptSemanticPromises.js +6 -9
  799. package/dist/domain/javascript/javascriptSemanticProvenance.js +5 -1
  800. package/dist/domain/javascript/javascriptSemanticQuery.js +7 -2
  801. package/dist/domain/javascript/javascriptSemanticQueryIdentity.js +2 -1
  802. package/dist/domain/javascript/javascriptSemanticQuerySchemas.js +1 -1
  803. package/dist/domain/javascript/javascriptSemanticReferenceSources.js +25 -0
  804. package/dist/domain/javascript/javascriptSemanticRequireOrigin.js +369 -8
  805. package/dist/domain/javascript/javascriptSemanticResourceLimits.js +3 -19
  806. package/dist/domain/javascript/javascriptSemanticResources.js +33 -44
  807. package/dist/domain/javascript/javascriptSemanticReturnedReferences.js +81 -26
  808. package/dist/domain/javascript/javascriptSemanticReturns.js +37 -30
  809. package/dist/domain/javascript/javascriptSemanticState.js +225 -39
  810. package/dist/domain/javascript/javascriptSemanticTraversal.js +6 -4
  811. package/dist/domain/javascript/javascriptSemanticValues.js +379 -56
  812. package/dist/domain/javascript/javascriptSourceMapPaths.js +44 -17
  813. package/dist/domain/javascript/javascriptSourceParser.js +121 -7
  814. package/dist/domain/javascript/javascriptSourceSelection.js +11 -0
  815. package/dist/domain/javascript/javascriptStaticAnalysis.js +69 -24
  816. package/dist/domain/javascript/javascriptStaticAnalysisBundler.js +97 -23
  817. package/dist/domain/javascript/javascriptStaticAnalysisCalls.js +488 -48
  818. package/dist/domain/javascript/javascriptStaticAnalysisHelpers.js +196 -78
  819. package/dist/domain/javascript/javascriptStaticAnalysisState.js +4 -0
  820. package/dist/domain/javascript/javascriptStaticAnalysisTypes.js +2 -1
  821. package/dist/domain/javascript/javascriptSymbolicBindings.js +1118 -0
  822. package/dist/domain/javascript/javascriptSymbolicControlFlow.js +44 -0
  823. package/dist/domain/javascript/javascriptSymbolicValues.js +45 -0
  824. package/dist/domain/javascript/sourceToBundleComparison.js +3 -1
  825. package/dist/domain/javascript/sourceToBundleComparisonSchemas.js +2 -0
  826. package/dist/domain/javascript/sourceToBundleSignals.js +50 -13
  827. package/dist/domain/jsonValue.js +37 -12
  828. package/dist/domain/localPath.js +6 -3
  829. package/dist/domain/managed/managedApplicationGraph.js +5 -0
  830. package/dist/domain/managed/managedApplicationGraphCoverage.js +6 -2
  831. package/dist/domain/managed/managedApplicationGraphNodes.js +14 -10
  832. package/dist/domain/managed/managedArtifact.js +77 -1
  833. package/dist/domain/managed/managedInspectionEvidence.js +5 -6
  834. package/dist/domain/managed/managedMemberComparison.js +6 -0
  835. package/dist/domain/managed/managedMemberComparisonCoverage.js +36 -3
  836. package/dist/domain/managed/managedMemberComparisonItems.js +135 -59
  837. package/dist/domain/managed/managedMemberComparisonMatch.js +237 -42
  838. package/dist/domain/managed/managedMemberSignatureIdentity.js +40 -0
  839. package/dist/domain/managed/managedNativeVerificationMatch.js +54 -31
  840. package/dist/domain/managed/managedNativeVerificationSchemas.js +15 -4
  841. package/dist/domain/managed/managedReconstruction.js +5 -8
  842. package/dist/domain/mobileApplicationGraphProjection.js +95 -0
  843. package/dist/domain/native/addressCoordinate.js +11 -0
  844. package/dist/domain/native/binaryLayout.js +2 -4
  845. package/dist/domain/native/bytePattern.js +121 -0
  846. package/dist/domain/native/nativeAotPe.js +31 -4
  847. package/dist/domain/native/nativeAotSnapshotObservation.js +18 -0
  848. package/dist/domain/native/nativeCallPartialObservation.js +14 -12
  849. package/dist/domain/native/nativeInspection.js +38 -4
  850. package/dist/domain/native/nativeInstruction.js +17 -2
  851. package/dist/domain/native/nativeInvestigationGraph.js +9 -5
  852. package/dist/domain/native/nativeLoadImage.js +32 -1
  853. package/dist/domain/native/nativeUiObservation.js +5 -6
  854. package/dist/domain/native/objcSwiftMetadata.js +19 -9
  855. package/dist/domain/native/peResources.js +14 -4
  856. package/dist/domain/native/recordedCrash.js +79 -10
  857. package/dist/domain/offsetDateTime.js +60 -0
  858. package/dist/domain/pcap/pcapAnalysis.js +91 -0
  859. package/dist/domain/pcap/pcapEvidence.js +15 -0
  860. package/dist/domain/peMachine.js +38 -0
  861. package/dist/domain/pngHeader.js +18 -0
  862. package/dist/domain/process/processCaptureCoverage.js +26 -3
  863. package/dist/domain/process/processCaptureExample.js +2 -0
  864. package/dist/domain/process/processCaptureValidation.js +33 -8
  865. package/dist/domain/process/processComparison.js +41 -13
  866. package/dist/domain/process/processScenario.js +7 -0
  867. package/dist/domain/process/processTraceDimensionProjection.js +1 -1
  868. package/dist/domain/process/processTraceEvaluation.js +119 -74
  869. package/dist/domain/process/processTraceSpecification.js +243 -89
  870. package/dist/domain/propertyListKeys.js +238 -23
  871. package/dist/domain/propertyListXml.js +149 -0
  872. package/dist/domain/propertyListXmlText.js +20 -4
  873. package/dist/domain/providerAdapterError.js +2 -5
  874. package/dist/domain/providerCleanupError.js +2 -4
  875. package/dist/domain/providerConfigurationRefusal.js +12 -0
  876. package/dist/domain/providerSelectionError.js +2 -1
  877. package/dist/domain/qlogCapture.js +62 -0
  878. package/dist/domain/rawBinary.js +105 -0
  879. package/dist/domain/reconstructionCoverage.js +40 -24
  880. package/dist/domain/reconstructionCoverageEvaluation.js +50 -47
  881. package/dist/domain/reconstructionCoverageEvidence.js +26 -0
  882. package/dist/domain/reconstructionCoverageVerifierResults.js +35 -0
  883. package/dist/domain/reconstructionObligationLedgerIntegrity.js +114 -0
  884. package/dist/domain/reconstructionObligationLedgerSchemas.js +104 -1
  885. package/dist/domain/reconstructionReadiness.js +4 -8
  886. package/dist/domain/reconstructionReadinessJourneyFindings.js +4 -1
  887. package/dist/domain/reconstructionUnknowns.js +9 -1
  888. package/dist/domain/reconstructionVerification.js +86 -43
  889. package/dist/domain/recordedTransportUrl.js +59 -0
  890. package/dist/domain/referenceSourceClassification.js +27 -23
  891. package/dist/domain/referenceSourceGraph.js +51 -13
  892. package/dist/domain/referenceSourceImportParsing.js +27 -13
  893. package/dist/domain/referenceSourcePathIdentity.js +13 -1
  894. package/dist/domain/referenceSourceRequireBindings.js +40 -108
  895. package/dist/domain/referenceSourceSummary.js +92 -0
  896. package/dist/domain/relationshipCoverage.js +43 -0
  897. package/dist/domain/residualUnknown.js +93 -26
  898. package/dist/domain/reverseEngineering.js +31 -0
  899. package/dist/domain/runtimeVersion.js +8 -0
  900. package/dist/domain/rust/rustBinary.js +200 -0
  901. package/dist/domain/signals/annotationTextWindow.js +31 -0
  902. package/dist/domain/signals/signalDecoders.js +69 -0
  903. package/dist/domain/signals/signalRecording.js +115 -0
  904. package/dist/domain/sourceMapContents.js +10 -3
  905. package/dist/domain/sourceMapEnvelope.js +17 -11
  906. package/dist/domain/sqlite/sqliteDatabase.js +189 -0
  907. package/dist/domain/staticRuntimeCorrelation.js +7 -9
  908. package/dist/domain/swiftSymbolClassification.js +17 -0
  909. package/dist/domain/symbolAnalysis.js +20 -7
  910. package/dist/domain/urlComponents.js +6 -0
  911. package/dist/domain/wasm/wasmArtifact.js +119 -0
  912. package/dist/domain/wasm/wasmInterface.js +89 -0
  913. package/dist/domain/webBundleAnalysis.js +14 -3
  914. package/dist/domain/webBundleAnalyzerAst.js +7 -2
  915. package/dist/domain/webBundleAnalyzerInspection.js +113 -57
  916. package/dist/domain/webBundleAnalyzerResult.js +18 -6
  917. package/dist/domain/webCaptureDiff.js +235 -51
  918. package/dist/domain/webCaptureFrameComparison.js +49 -0
  919. package/dist/domain/webInventory.js +28 -14
  920. package/dist/domain/webMcpDiscovery.js +5 -2
  921. package/dist/domain/webModuleImports.js +22 -27
  922. package/dist/domain/webModuleTrace.js +25 -8
  923. package/dist/domain/webNetworkCapture.js +101 -39
  924. package/dist/domain/webNetworkCaptureCoordinates.js +21 -0
  925. package/dist/domain/webRuntime.js +0 -1
  926. package/dist/domain/webScreenshot.js +2 -2
  927. package/dist/domain/webScriptArtifacts.js +2 -4
  928. package/dist/domain/webScriptExport.js +6 -8
  929. package/dist/domain/webScriptExportError.js +2 -3
  930. package/dist/domain/webScriptExportPlan.js +2 -2
  931. package/dist/domain/webSourceLocation.js +20 -9
  932. package/dist/domain/xmlDocument.js +41 -0
  933. package/dist/domain/zipPackageFormat.js +25 -3
  934. package/dist/dotnet/ManagedArtifactInspector.js +25 -12
  935. package/dist/dotnet/ManagedDecodeBudget.js +87 -9
  936. package/dist/dotnet/ManagedMemberInspector.js +127 -22
  937. package/dist/dotnet/ManagedMemberInspectorCore.js +408 -141
  938. package/dist/dotnet/ManagedMemberInstructionDecoder.js +109 -37
  939. package/dist/dotnet/ManagedMemberOwnership.js +65 -0
  940. package/dist/dotnet/ManagedMemberPointers.js +69 -0
  941. package/dist/dotnet/ManagedMemberRows.js +181 -48
  942. package/dist/dotnet/ManagedMetadataHeaps.js +110 -25
  943. package/dist/dotnet/ManagedMetadataInventory.js +5 -5
  944. package/dist/dotnet/ManagedMetadataInventoryRows.js +36 -52
  945. package/dist/dotnet/ManagedMetadataLayout.js +26 -16
  946. package/dist/dotnet/ManagedMetadataRowSizes.js +1 -1
  947. package/dist/dotnet/ManagedMethodBodyReader.js +29 -11
  948. package/dist/dotnet/ManagedMethodSpecs.js +78 -0
  949. package/dist/dotnet/ManagedNativeBoundaryHelpers.js +20 -19
  950. package/dist/dotnet/ManagedNativeBoundaryInspector.js +13 -21
  951. package/dist/dotnet/ManagedPeReader.js +60 -27
  952. package/dist/dotnet/ManagedReaderFailure.js +9 -0
  953. package/dist/dotnet/ManagedSnapshot.js +93 -0
  954. package/dist/dotnet/ManagedStaticProvider.js +55 -64
  955. package/dist/dotnet/ManagedTypeMemberLists.js +105 -0
  956. package/dist/dotnet/ManagedTypeNameDigests.js +177 -0
  957. package/dist/dotnet/ManagedTypeNames.js +58 -0
  958. package/dist/dotnet/ManagedTypeNesting.js +25 -0
  959. package/dist/dotnet/ManagedTypeReferences.js +94 -0
  960. package/dist/dotnet/ManagedUserStrings.js +75 -0
  961. package/dist/electron/ElectronFuseFailures.js +105 -0
  962. package/dist/electron/ElectronFusePath.js +248 -0
  963. package/dist/electron/ElectronFuseProvider.js +88 -0
  964. package/dist/electron/ElectronFuseReader.js +333 -0
  965. package/dist/evaluation/AgentEvaluationFixtures.js +194 -11
  966. package/dist/evaluation/CodexAgentEval.js +19 -40
  967. package/dist/evaluation/KnownAnswerEvaluation.js +126 -57
  968. package/dist/evm/EvmoleFailures.js +20 -14
  969. package/dist/evm/EvmoleInterfaceAdapter.js +5 -1
  970. package/dist/evm/EvmoleInterfaceProvider.js +142 -35
  971. package/dist/evm/EvmoleInterfaceWorker.js +2 -0
  972. package/dist/evm/SolidityMetadata.js +139 -0
  973. package/dist/filesystem/OwnedRegularFile.js +116 -0
  974. package/dist/filesystem/OwnedStagedOutput.js +155 -0
  975. package/dist/filesystem/RegularFile.js +65 -9
  976. package/dist/filesystem/StableFileHash.js +56 -38
  977. package/dist/filesystem/callerPath.js +26 -0
  978. package/dist/filesystem/readFileHandleChunks.js +72 -13
  979. package/dist/filesystem/readStableFileBytes.js +85 -0
  980. package/dist/firmware/FirmwareCommand.js +15 -9
  981. package/dist/firmware/FirmwareFailures.js +56 -0
  982. package/dist/firmware/FirmwareFiles.js +136 -110
  983. package/dist/firmware/FirmwareProvider.js +122 -65
  984. package/dist/firmware/FirmwarePublication.js +244 -12
  985. package/dist/firmware/FirmwareReports.js +202 -12
  986. package/dist/flutter/DartElf.js +445 -0
  987. package/dist/flutter/ElfBuildId.js +137 -0
  988. package/dist/flutter/ElfLoadMap.js +91 -0
  989. package/dist/flutter/FlutterBuildProvider.js +866 -0
  990. package/dist/flutter/FlutterPayloadScan.js +180 -0
  991. package/dist/frida/FridaInstrumentationManager.js +1104 -0
  992. package/dist/gdb/GdbSessionManager.js +1639 -0
  993. package/dist/generatedPackageMetadata.js +2 -2
  994. package/dist/ghidra/GhidraAnalysisProfile.js +146 -14
  995. package/dist/ghidra/GhidraAnalysisSeeds.js +39 -55
  996. package/dist/ghidra/GhidraBridgeSources.js +12 -0
  997. package/dist/ghidra/GhidraClient.js +501 -180
  998. package/dist/ghidra/GhidraClientStartup.js +5 -3
  999. package/dist/ghidra/GhidraClientWire.js +5 -2
  1000. package/dist/ghidra/GhidraDiagnostics.js +23 -5
  1001. package/dist/ghidra/GhidraDoctor.js +60 -26
  1002. package/dist/ghidra/GhidraDosSnapshot.js +83 -0
  1003. package/dist/ghidra/GhidraExecutableHeader.js +54 -0
  1004. package/dist/ghidra/GhidraFileArtifacts.js +93 -0
  1005. package/dist/ghidra/GhidraFunctionValues.js +50 -2
  1006. package/dist/ghidra/GhidraInstallation.js +305 -108
  1007. package/dist/ghidra/GhidraInstallationPolicy.js +94 -103
  1008. package/dist/ghidra/GhidraInstallationProperties.js +57 -0
  1009. package/dist/ghidra/GhidraInventoryValues.js +52 -6
  1010. package/dist/ghidra/GhidraJavaLaunch.js +99 -11
  1011. package/dist/ghidra/GhidraJavaProbe.js +267 -0
  1012. package/dist/ghidra/GhidraJavaProperties.js +119 -0
  1013. package/dist/ghidra/GhidraLanguageCatalog.js +83 -8
  1014. package/dist/ghidra/GhidraLauncher.js +325 -85
  1015. package/dist/ghidra/GhidraLoadImageAttest.js +82 -65
  1016. package/dist/ghidra/GhidraLoadImageValues.js +109 -27
  1017. package/dist/ghidra/GhidraMipsProfile.js +258 -14
  1018. package/dist/ghidra/GhidraNativeAotSnapshotOwner.js +221 -0
  1019. package/dist/ghidra/GhidraPeProfile.js +91 -0
  1020. package/dist/ghidra/GhidraPowerPcProfile.js +51 -0
  1021. package/dist/ghidra/GhidraProvider.js +267 -42
  1022. package/dist/ghidra/GhidraProviderCapabilities.js +29 -15
  1023. package/dist/ghidra/GhidraProviderClient.js +439 -276
  1024. package/dist/ghidra/GhidraPspExtension.js +210 -0
  1025. package/dist/ghidra/GhidraPspProfile.js +62 -0
  1026. package/dist/ghidra/GhidraRawBinaryLanguage.js +49 -0
  1027. package/dist/ghidra/GhidraReleasePolicy.js +93 -0
  1028. package/dist/ghidra/GhidraRequestQueue.js +64 -40
  1029. package/dist/ghidra/GhidraRiscvProfile.js +100 -0
  1030. package/dist/ghidra/GhidraSessionError.js +301 -24
  1031. package/dist/ghidra/GhidraSessionValues.js +76 -0
  1032. package/dist/ghidra/GhidraSocketConnection.js +25 -11
  1033. package/dist/ghidra/GhidraTargetSnapshot.js +67 -50
  1034. package/dist/ghidra/GhidraTransport.js +86 -62
  1035. package/dist/ghidra/extensions/GhidraExtensions.js +30 -45
  1036. package/dist/go/GoBinaryContainer.js +140 -0
  1037. package/dist/go/GoBinaryImage.js +210 -0
  1038. package/dist/go/GoBinaryProvider.js +180 -0
  1039. package/dist/go/GoElfImage.js +211 -0
  1040. package/dist/go/GoMachoImage.js +164 -0
  1041. package/dist/go/GoModuleText.js +217 -0
  1042. package/dist/go/GoPeImage.js +124 -0
  1043. package/dist/hopper/BridgeLauncher.js +78 -6
  1044. package/dist/hopper/HopperAnalysisProfile.js +23 -11
  1045. package/dist/hopper/HopperCleanup.js +29 -4
  1046. package/dist/hopper/HopperClient.js +317 -93
  1047. package/dist/hopper/HopperMacPublisher.js +29 -0
  1048. package/dist/hopper/HopperMachOImage.js +61 -29
  1049. package/dist/hopper/HopperProcessDiagnostic.js +27 -0
  1050. package/dist/hopper/HopperProvider.js +57 -29
  1051. package/dist/hopper/HopperProviderCapabilities.js +9 -4
  1052. package/dist/hopper/HopperRegexSearch.js +21 -60
  1053. package/dist/hopper/HopperRequestQueue.js +17 -5
  1054. package/dist/hopper/HopperSessionValues.js +10 -1
  1055. package/dist/ida/IdaBusyHealth.js +78 -0
  1056. package/dist/ida/IdaCallGraph.js +134 -0
  1057. package/dist/ida/IdaConfiguration.js +7 -2
  1058. package/dist/ida/IdaDiagnosticRedactor.js +199 -0
  1059. package/dist/ida/IdaDiagnosticWriter.js +62 -0
  1060. package/dist/ida/IdaDoctor.js +7 -5
  1061. package/dist/ida/IdaJsonDiagnostic.js +138 -0
  1062. package/dist/ida/IdaMcpConnection.js +308 -32
  1063. package/dist/ida/IdaNativeProtocol.js +85 -0
  1064. package/dist/ida/IdaOperationRunner.js +246 -61
  1065. package/dist/ida/IdaProtocolValues.js +88 -5
  1066. package/dist/ida/IdaProvider.js +45 -10
  1067. package/dist/ida/IdaProviderCapabilities.js +37 -8
  1068. package/dist/ida/IdaSessionClient.js +379 -60
  1069. package/dist/ida/IdaWorkspace.js +54 -6
  1070. package/dist/inspector/V8InspectorCaptureProjection.js +14 -2
  1071. package/dist/inspector/V8InspectorEndpoint.js +15 -13
  1072. package/dist/inspector/V8InspectorProvider.js +43 -7
  1073. package/dist/javascript/analysis/JavaScriptAnalysisTransfer.js +44 -12
  1074. package/dist/javascript/analysis/JavaScriptAnalysisWorker.js +107 -32
  1075. package/dist/javascript/analysis/JavaScriptAnalysisWorkerProtocol.js +7 -4
  1076. package/dist/javascript/analysis/JavaScriptAnalysisWorkerSchemas.js +85 -10
  1077. package/dist/javascript/analysis/JavaScriptAnalysisWorkerServer.js +16 -6
  1078. package/dist/javascript/recovery/RecoveryFiles.js +107 -13
  1079. package/dist/javascript/recovery/WakaruExecution.js +19 -11
  1080. package/dist/javascript/recovery/WakaruProvider.js +12 -9
  1081. package/dist/javascript/recovery/WakaruPublication.js +24 -10
  1082. package/dist/javascript/recovery/WakaruRelease.js +1 -1
  1083. package/dist/javascript/recovery/WakaruReport.js +3 -2
  1084. package/dist/javascript/sourceMaps/DecodedSourceMap.js +2 -16
  1085. package/dist/javascript/sourceMaps/SourceMapCommand.js +22 -4
  1086. package/dist/javascript/sourceMaps/SourceMapDecoder.js +22 -4
  1087. package/dist/javascript/sourceMaps/SourceMapFormat.js +25 -38
  1088. package/dist/javascript/sourceMaps/TraceSourceMap.js +34 -6
  1089. package/dist/jeb/JebMcpConnection.js +148 -82
  1090. package/dist/jeb/JebMcpConnectionOwner.js +116 -0
  1091. package/dist/jeb/JebMcpDeadline.js +46 -0
  1092. package/dist/jeb/JebMcpEndpoint.js +6 -1
  1093. package/dist/jeb/JebProvider.js +82 -58
  1094. package/dist/kuna/KunaAddress.js +11 -0
  1095. package/dist/kuna/KunaCommand.js +217 -0
  1096. package/dist/kuna/KunaConfiguration.js +90 -0
  1097. package/dist/kuna/KunaDoctor.js +198 -0
  1098. package/dist/kuna/KunaInstallation.js +137 -0
  1099. package/dist/kuna/KunaJson.js +23 -0
  1100. package/dist/kuna/KunaJsonStream.js +433 -0
  1101. package/dist/kuna/KunaLimits.js +5 -0
  1102. package/dist/kuna/KunaProjectCache.js +804 -0
  1103. package/dist/kuna/KunaProjectExport.js +202 -0
  1104. package/dist/kuna/KunaProjectFiles.js +191 -0
  1105. package/dist/kuna/KunaProjectReader.js +115 -0
  1106. package/dist/kuna/KunaProvider.js +217 -0
  1107. package/dist/kuna/KunaProviderCapabilities.js +102 -0
  1108. package/dist/kuna/KunaQueryErrors.js +12 -0
  1109. package/dist/kuna/KunaQueryWork.js +113 -0
  1110. package/dist/kuna/KunaReferenceFiles.js +258 -0
  1111. package/dist/kuna/KunaReferenceQueries.js +211 -0
  1112. package/dist/kuna/KunaRelease.js +10 -0
  1113. package/dist/kuna/KunaRunSlots.js +56 -0
  1114. package/dist/kuna/KunaSessionClient.js +1162 -0
  1115. package/dist/kuna/KunaStringInventory.js +145 -0
  1116. package/dist/kuna/KunaStringQueries.js +133 -0
  1117. package/dist/kuna/KunaTargetCommands.js +205 -0
  1118. package/dist/kuna/KunaUnavailable.js +11 -0
  1119. package/dist/logger.js +14 -1
  1120. package/dist/main/processShutdown.js +17 -0
  1121. package/dist/main/shutdown.js +3 -0
  1122. package/dist/main/transport.js +68 -4
  1123. package/dist/main.js +16 -15
  1124. package/dist/mcp/AnalysisProvider-BABWbLoM.js +38 -0
  1125. package/dist/mcp/AnalysisSnapshotFiles-BXz0c37-.js +1423 -0
  1126. package/dist/mcp/ArtifactFileOperation-64cQKI7B.js +1704 -0
  1127. package/dist/mcp/ArtifactProvider-Dx6pmil1.js +2200 -0
  1128. package/dist/mcp/ArtifactProviderMetadata-UCJr2oZW.js +167 -0
  1129. package/dist/mcp/ArtifactReader-BrnwNaKY.js +78 -0
  1130. package/dist/mcp/ArtifactResourceScope-zi3Dkqzy.js +175 -0
  1131. package/dist/mcp/AsarHeader-B_IbppTz.js +31 -0
  1132. package/dist/mcp/BinarySessionStatus-CZ9nnXMt.js +213 -0
  1133. package/dist/mcp/BinaryTargetResolver-BUncASDP.js +1358 -0
  1134. package/dist/mcp/BoundedFileBytes-DYt5q9G2.js +43 -0
  1135. package/dist/mcp/CdpCaptureDocuments-Y2uFcBpl.js +795 -0
  1136. package/dist/mcp/CdpCaptureValues-tNIg-gQK.js +97 -0
  1137. package/dist/mcp/CdpEndpoint-BrhMhpSi.js +641 -0
  1138. package/dist/mcp/CdpOptionalCommand-PZZhlqxv.js +120 -0
  1139. package/dist/mcp/CdpTargetSession-BmmDC3XO.js +290 -0
  1140. package/dist/mcp/DirectAnalysis-B9KuCHTG.js +417 -0
  1141. package/dist/mcp/DirectAnalysisStatus-BgzopkIt.js +44 -0
  1142. package/dist/mcp/ElectronFileScope-FXtK0d6I.js +110 -0
  1143. package/dist/mcp/ElectronFuseFailures-uZ_wOV6T.js +610 -0
  1144. package/dist/mcp/MachoLoadCommandReader-C2VGgHA3.js +330 -0
  1145. package/dist/mcp/ManagedStaticProvider-CZuoPme2.js +5326 -0
  1146. package/dist/mcp/NativeMacOSProvider-CMguKrvN.js +5495 -0
  1147. package/dist/mcp/NativeMacOSProviderMetadata-B_RH4KXF.js +397 -0
  1148. package/dist/mcp/OwnedCommand-BW1jBSt9.js +1241 -0
  1149. package/dist/mcp/ProcedureAddressResolution-H6Qwpb_Y.js +59 -0
  1150. package/dist/mcp/WorkflowEvidence-CO4C7ALz.js +118 -0
  1151. package/dist/mcp/analysisErrorCleanup-Q344SnTO.js +34 -0
  1152. package/dist/mcp/analysisErrorCore-BIEP7tvF.js +509 -0
  1153. package/dist/mcp/analysisErrorProjection-B8teQwwD.js +942 -0
  1154. package/dist/mcp/artifactToolContracts-C9dRDo-D.js +74 -0
  1155. package/dist/mcp/browserObservation-DUraZs62.js +4633 -0
  1156. package/dist/mcp/browserObservationError-C5okJ5el.js +63 -0
  1157. package/dist/mcp/browserObservationSchemas-DwGGxBpu.js +573 -0
  1158. package/dist/mcp/browserScenario-BRUz7yN0.js +3415 -0
  1159. package/dist/mcp/browserScenarioCapture-CiMAsMx8.js +595 -0
  1160. package/dist/mcp/callerPath-CpPnMZyN.js +678 -0
  1161. package/dist/mcp/canonicalDigest-Bi_0_zGi.js +71 -0
  1162. package/dist/mcp/electronActiveObservation-DV0Ffy9X.js +227 -0
  1163. package/dist/mcp/electronFuses-D5SS7XXw.js +367 -0
  1164. package/dist/mcp/electronObservation-DsN-NqY1.js +621 -0
  1165. package/dist/mcp/electronObservation-wOYWwqgF.js +112 -0
  1166. package/dist/mcp/electronScenario-CYrt2zBK.js +913 -0
  1167. package/dist/mcp/emptyArraySchema-C0o2Sxwp.js +140 -0
  1168. package/dist/mcp/enhancedInputs-6CCgB3VB.js +56 -0
  1169. package/dist/mcp/javascriptRuntimeObservation-BVbhkO2-.js +693 -0
  1170. package/dist/mcp/javascriptRuntimeObservation-Cu0Yedqq.js +121 -0
  1171. package/dist/mcp/jsonSerialization-V-wWiFRE.js +152 -0
  1172. package/dist/mcp/lipo-DSTgUqL1.js +395 -0
  1173. package/dist/mcp/localPath-AxvW9aPe.js +19 -0
  1174. package/dist/mcp/logger-BGdGHadX.js +48 -0
  1175. package/dist/mcp/machoContainer-CMSxUBlK.js +605 -0
  1176. package/dist/mcp/main-Cx-Z7m_n.js +80276 -0
  1177. package/dist/mcp/main.js +6 -0
  1178. package/dist/mcp/managedToolContracts-CSlbKJP-.js +101 -0
  1179. package/dist/mcp/nativeValueTrace-BEZbDieM.js +3601 -0
  1180. package/dist/mcp/officialToolContracts-CauCcSsc.js +1432 -0
  1181. package/dist/mcp/peMachine-aP1iYnHq.js +95 -0
  1182. package/dist/mcp/pngHeader-DQ-ObyY2.js +147 -0
  1183. package/dist/mcp/propertyListKeys-BfCo0k4w.js +356 -0
  1184. package/dist/mcp/providerCleanupError-DIRHxzWo.js +125 -0
  1185. package/dist/mcp/providerIdentities--ptAh481.js +31 -0
  1186. package/dist/mcp/providerIdentity-BCQ5n5tw.js +16 -0
  1187. package/dist/mcp/providerOperationHealth-9DRSGM8N.js +71 -0
  1188. package/dist/mcp/rolldown-runtime-BjeaiXFo.js +121 -0
  1189. package/dist/mcp/safeJson-NeGfpkrI.js +25 -0
  1190. package/dist/mcp/scanCanonical-CF3ATd1V.js +3788 -0
  1191. package/dist/mcp/serverIdentity-BK0Ejd_Y.js +1507 -0
  1192. package/dist/mcp/sourceMapEnvelope-DAaRUIGj.js +94 -0
  1193. package/dist/mcp/toolContracts-BPoHQdlC.js +12414 -0
  1194. package/dist/mcp/toolOutputSchemaGroups-MJ_f-PMK.js +17730 -0
  1195. package/dist/mcp/webContentArtifact-DfGkgDcI.js +269 -0
  1196. package/dist/mcp/webRuntime-ccyhkRru.js +74 -0
  1197. package/dist/mcp/webSourceLocation-DKIum0vJ.js +13167 -0
  1198. package/dist/mcpDoctor.js +95 -70
  1199. package/dist/mcpStartupPolicy.js +20 -2
  1200. package/dist/native/AppleDispatchCoverage.js +57 -17
  1201. package/dist/native/AppleDispatchMetadata.js +82 -29
  1202. package/dist/native/AppleMachoFixups.js +208 -35
  1203. package/dist/native/AppleMachoSelection.js +30 -23
  1204. package/dist/native/AppleObjcCategories.js +13 -3
  1205. package/dist/native/AppleObjcDispatchFacets.js +95 -17
  1206. package/dist/native/AppleObjcProperties.js +61 -17
  1207. package/dist/native/AppleObjcProtocols.js +25 -7
  1208. package/dist/native/AppleSwiftVtables.js +2 -0
  1209. package/dist/native/CommandRunner.js +146 -32
  1210. package/dist/native/LldbCallTracer.js +235 -179
  1211. package/dist/native/LldbReadbackFiles.js +70 -0
  1212. package/dist/native/LldbRetainedObservations.js +28 -56
  1213. package/dist/native/MachoArchitectureSelection.js +50 -0
  1214. package/dist/native/NativeCallObservation.js +55 -53
  1215. package/dist/native/NativeCallTarget.js +95 -0
  1216. package/dist/native/NativeMacOSProvider.js +318 -188
  1217. package/dist/native/NativeMachoInspection.js +155 -81
  1218. package/dist/native/NativePlistSource.js +179 -0
  1219. package/dist/native/NativeUiCleanupError.js +30 -0
  1220. package/dist/native/NativeUiHelperRuntime.js +48 -35
  1221. package/dist/native/NativeUiObservation.js +69 -47
  1222. package/dist/native/SignatureTargetBinding.js +147 -65
  1223. package/dist/native/parsers/codesign.js +27 -10
  1224. package/dist/native/parsers/demangle.js +22 -12
  1225. package/dist/native/parsers/dyldInfo.js +73 -4
  1226. package/dist/native/parsers/lipo.js +53 -19
  1227. package/dist/native/parsers/machoUuid.js +150 -0
  1228. package/dist/native/parsers/otool.js +275 -32
  1229. package/dist/native/parsers/plist.js +40 -25
  1230. package/dist/native/pe/PeResourceLayout.js +22 -7
  1231. package/dist/native/pe/PeResourceParser.js +10 -9
  1232. package/dist/native/pe/PeResourcesProvider.js +76 -15
  1233. package/dist/native/pwndbg/CoreFileMappingAuthority.js +51 -0
  1234. package/dist/native/pwndbg/PwndbgCoreContext.js +39 -28
  1235. package/dist/native/pwntools/PwntoolsDecoder.js +339 -52
  1236. package/dist/native/pwntools/PwntoolsFailures.js +19 -4
  1237. package/dist/native/pwntools/PwntoolsInputLimit.js +27 -0
  1238. package/dist/native/pwntools/PwntoolsRecordedCrashProvider.js +38 -16
  1239. package/dist/native/pwntools/PwntoolsResourceLimits.js +3 -3
  1240. package/dist/native/pwntools/RecordedCrashSourceBindings.js +12 -8
  1241. package/dist/native/pwntools/RecordedCrashStructureBindings.js +3 -1
  1242. package/dist/objdump/ObjdumpCommand.js +24 -0
  1243. package/dist/pcap/PcapCommand.js +146 -0
  1244. package/dist/pcap/PcapConfiguration.js +93 -0
  1245. package/dist/pcap/PcapNativeBound.js +58 -0
  1246. package/dist/pcap/PcapOutput.js +276 -0
  1247. package/dist/pcap/PcapProvider.js +454 -0
  1248. package/dist/pcap/PcapSnapshot.js +191 -0
  1249. package/dist/process/ArtifactAnalysisResources.js +306 -0
  1250. package/dist/process/BoundedFileBytes.js +8 -3
  1251. package/dist/process/CurrentEntrypointPath.js +8 -0
  1252. package/dist/process/DarwinProcessRunTokenReader.js +276 -61
  1253. package/dist/process/DetachedPgpSignature.js +57 -0
  1254. package/dist/process/ExecFileBoundedOutput.js +44 -0
  1255. package/dist/process/ExecFileOutput.js +44 -17
  1256. package/dist/{hopper/HopperTargetLease.js → process/HopperLease.js} +76 -19
  1257. package/dist/process/JavaScriptWorkerMemoryLimit.js +25 -0
  1258. package/dist/process/LinuxResourceLimits.js +60 -0
  1259. package/dist/process/MacCodeSignature.js +3 -0
  1260. package/dist/process/OwnedCommand.js +144 -25
  1261. package/dist/process/PrivateRuntimeRoot.js +9 -19
  1262. package/dist/process/PrivateRuntimeRootUnavailableError.js +10 -0
  1263. package/dist/process/ProcessOwnership.js +70 -17
  1264. package/dist/process/ProcessOwnershipObservation.js +35 -4
  1265. package/dist/process/ProviderDeadline.js +58 -12
  1266. package/dist/process/ProviderProcess.js +233 -17
  1267. package/dist/process/RegexMatcher.js +96 -0
  1268. package/dist/process/SharedStartupAttempt.js +59 -0
  1269. package/dist/process/WindowsAuthority.js +48 -39
  1270. package/dist/process/WindowsBatchCommand.js +46 -0
  1271. package/dist/process/boundedUtf8Text.js +13 -0
  1272. package/dist/process/capture/FilesystemSnapshot.js +63 -11
  1273. package/dist/process/capture/ProcessCaptureClock.js +2 -0
  1274. package/dist/process/capture/ProcessCaptureError.js +64 -7
  1275. package/dist/process/capture/ProcessCaptureJournal.js +2 -1
  1276. package/dist/process/capture/ProcessCaptureLifecycle.js +104 -56
  1277. package/dist/process/capture/ProcessCaptureProgress.js +7 -4
  1278. package/dist/process/capture/ProcessHarness.js +34 -17
  1279. package/dist/process/capture/ProcessNormalization.js +278 -36
  1280. package/dist/process/capture/ProcessSampling.js +3 -2
  1281. package/dist/process/capture/ProcessScenarioRuntimeValidation.js +13 -13
  1282. package/dist/process/capture/TerminalRenderer.js +31 -10
  1283. package/dist/process/ownedDebuggerSession.js +203 -0
  1284. package/dist/process/snapshotEnvironment.js +8 -8
  1285. package/dist/{application/binary → providers}/AnalysisClientCleanup.js +3 -3
  1286. package/dist/providers/AnalysisClientCreation.js +193 -0
  1287. package/dist/providers/AnalysisClientFailure.js +191 -0
  1288. package/dist/providers/DeferredAnalysisClient.js +48 -0
  1289. package/dist/providers/OwnedCommandCleanup.js +65 -0
  1290. package/dist/providers/ProviderInspectionScope.js +10 -0
  1291. package/dist/recordedCatalogDigests.js +2 -0
  1292. package/dist/reference/ReferenceSourceReader.js +64 -1
  1293. package/dist/reference/ReferenceSourceReaderEntries.js +79 -56
  1294. package/dist/reference/ReferenceSourceReaderErrors.js +5 -1
  1295. package/dist/reference/ReferenceSourceReaderFile.js +2 -2
  1296. package/dist/reference/ReferenceSourceReaderTypes.js +1 -2
  1297. package/dist/reference/ReferenceSourceReaderValidate.js +0 -1
  1298. package/dist/rizin/RizinCommand.js +14 -0
  1299. package/dist/rizin/RizinDebugSessionManager.js +1111 -0
  1300. package/dist/rust/RustAuditableReader.js +309 -0
  1301. package/dist/rust/RustBinaryImage.js +116 -0
  1302. package/dist/rust/RustBinaryProvider.js +194 -0
  1303. package/dist/server/EvidenceMcpServer.js +160 -37
  1304. package/dist/server/admittedToolOperation.js +7 -2
  1305. package/dist/server/contractToolHandler.js +17 -4
  1306. package/dist/server/createServer.js +179 -30
  1307. package/dist/server/externalMutationAdmission.js +50 -0
  1308. package/dist/server/mcpProgress.js +4 -2
  1309. package/dist/server/promptCompletion.js +43 -28
  1310. package/dist/server/providerEnvironment.js +3 -0
  1311. package/dist/server/registerAnalysisViewTool.js +6 -2
  1312. package/dist/server/registerAndroidTools.js +22 -4
  1313. package/dist/server/registerApplicationTools/projectMobileApplicationGraph.js +8 -1
  1314. package/dist/server/registerArtifactComparisonTool.js +13 -2
  1315. package/dist/server/registerArtifactTools.js +21 -1
  1316. package/dist/server/registerBrowserScenarioTool.js +7 -5
  1317. package/dist/server/registerBrowserTools.js +4 -8
  1318. package/dist/server/registerBundleComparisonTool.js +4 -4
  1319. package/dist/server/registerCaptureTools.js +12 -0
  1320. package/dist/server/registerCutterTools.js +32 -0
  1321. package/dist/server/registerElectronTools.js +13 -21
  1322. package/dist/server/registerEnhancedTools.js +7 -6
  1323. package/dist/server/registerEvidenceTools.js +14 -10
  1324. package/dist/server/registerEvmTools.js +22 -4
  1325. package/dist/server/registerFlutterTools.js +17 -0
  1326. package/dist/server/registerFridaTools.js +201 -0
  1327. package/dist/server/registerFunctionComparisonTool.js +29 -9
  1328. package/dist/server/registerGdbTools.js +64 -0
  1329. package/dist/server/registerGoTools.js +9 -0
  1330. package/dist/server/registerInvestigationTools/helpers.js +2 -2
  1331. package/dist/server/registerInvestigationTools.js +31 -27
  1332. package/dist/server/registerJavaScriptRuntimeObservationTools.js +3 -9
  1333. package/dist/server/registerManagedTools.js +11 -1
  1334. package/dist/server/registerManagedWorkflowTools/evidence.js +14 -7
  1335. package/dist/server/registerNativeTools.js +14 -0
  1336. package/dist/server/registerOfficialTools.js +5 -0
  1337. package/dist/server/registerPcapTools.js +35 -0
  1338. package/dist/server/registerProcessComparisonTool.js +12 -2
  1339. package/dist/server/registerReverseEngineeringTools.js +86 -0
  1340. package/dist/server/registerRizinDebugTools.js +53 -0
  1341. package/dist/server/registerRustTools.js +9 -0
  1342. package/dist/server/registerSessionRecordTools.js +19 -13
  1343. package/dist/server/registerSessionStatusTool.js +33 -8
  1344. package/dist/server/registerSessionTools.js +31 -31
  1345. package/dist/server/registerSignalTools.js +12 -0
  1346. package/dist/server/registerSqliteTools.js +9 -0
  1347. package/dist/server/registerWasmTools.js +46 -0
  1348. package/dist/server/registerWebNetworkCaptureTool.js +24 -10
  1349. package/dist/server/retainedSummaryDelivery.js +28 -0
  1350. package/dist/server/runDerivedOperation.js +2 -0
  1351. package/dist/server/sessionAvailabilityPolicy.js +3 -0
  1352. package/dist/server/toolRegistrationOptions.js +8 -0
  1353. package/dist/server/toolResult.js +52 -19
  1354. package/dist/server/toolResultEncoding.js +36 -3
  1355. package/dist/serverIdentity.js +17 -8
  1356. package/dist/signals/SigrokRecordingProvider.js +346 -0
  1357. package/dist/signals/parseDecoderDiscovery.js +65 -0
  1358. package/dist/sqlite/SqliteDatabaseFailures.js +147 -0
  1359. package/dist/sqlite/SqliteDatabaseInspection.js +436 -0
  1360. package/dist/sqlite/SqliteDatabaseLimits.js +16 -0
  1361. package/dist/sqlite/SqliteDatabaseProvider.js +295 -0
  1362. package/dist/sqlite/SqliteDatabaseSnapshot.js +182 -0
  1363. package/dist/sqlite/SqliteDatabaseWorker.js +46 -0
  1364. package/dist/sqlite/SqliteDatabaseWorkerExecution.js +127 -0
  1365. package/dist/wasm/WabtArtifactProvider.js +358 -0
  1366. package/dist/wasm/WabtFailures.js +119 -0
  1367. package/dist/wasm/WabtInterface.js +309 -0
  1368. package/dist/wasm/WabtOutput.js +60 -0
  1369. package/dist/wasm/WabtRelease.js +12 -0
  1370. package/dist/wasm/WabtRuntime.js +58 -0
  1371. package/dist/wasm/WabtString.js +48 -0
  1372. package/dist/wasm/WabtWat.js +147 -0
  1373. package/dist/wasm/WasmGlueAdapter.js +66 -0
  1374. package/dist/wasm/WasmInterfaceBudget.js +11 -0
  1375. package/dist/windows/WindowsNativeLoader.js +53 -9
  1376. package/dist/windows/WindowsOwnedProcess.js +150 -17
  1377. package/dist/windows/WindowsPrivateRuntime.js +66 -2
  1378. package/install.sh +157 -98
  1379. package/licenses/Apache-2.0.txt +202 -0
  1380. package/licenses/GCC-Runtime-Library-Exception-3.1.txt +73 -0
  1381. package/licenses/GPL-3.0.txt +674 -0
  1382. package/licenses/LGPL-2.0.txt +480 -0
  1383. package/licenses/MIT-template.txt +18 -0
  1384. package/licenses/MinGW-w64-runtime.txt +240 -0
  1385. package/licenses/Node-22.19.0-LICENSE.txt +2666 -0
  1386. package/licenses/README.md +68 -0
  1387. package/licenses/cfworker-MIT.txt +21 -0
  1388. package/licenses/dotnet-runtime-MIT.txt +23 -0
  1389. package/licenses/frida-17.23.2-COPYING.txt +50 -0
  1390. package/licenses/ghidra-12.1.4-DISCLAIMER.txt +13 -0
  1391. package/licenses/ghidra-12.1.4-LICENSE.txt +201 -0
  1392. package/licenses/ghidra-12.1.4-NOTICE.txt +49 -0
  1393. package/licenses/npm-dependencies.txt +3757 -0
  1394. package/licenses/npm-runtime-notices.txt +8722 -0
  1395. package/licenses/upstream-sources.json +72 -0
  1396. package/licenses/xterm-MIT.txt +21 -0
  1397. package/native/windows/README.md +130 -12
  1398. package/native/windows/build/manifest.json +2 -2
  1399. package/native/windows/build/rea-windows-x64.node +0 -0
  1400. package/package.json +97 -22
  1401. package/scripts/electron-active-hook-boundaries.cjs +15 -2
  1402. package/scripts/electron-active-hook.cjs +412 -47
  1403. package/scripts/hopper-demo-x11.py +65 -13
  1404. package/scripts/prepack.mjs +5 -0
  1405. package/scripts/rea-android-workspace-guardian.mjs +46 -0
  1406. package/scripts/rea.mjs +89 -26
  1407. package/scripts/verify-windows-native-artifact.mjs +2 -2
  1408. package/skills/reverse-engineer-anything/SKILL.md +146 -11
  1409. package/skills/reverse-engineer-anything/references/android-applications.md +3 -1
  1410. package/skills/reverse-engineer-anything/references/connection-and-recovery.md +10 -10
  1411. package/skills/reverse-engineer-anything/references/evidence-workflows.md +23 -0
  1412. package/skills/reverse-engineer-anything/references/javascript-applications.md +72 -3
  1413. package/skills/reverse-engineer-anything/references/native-and-artifacts.md +149 -19
  1414. package/skills/reverse-engineer-anything/references/runtime-observation.md +57 -7
  1415. package/third_party/README.md +1 -1
  1416. package/third_party/wabt/README.md +24 -0
  1417. package/dist/browser/history/HarCaptureAdapter.js +0 -20
  1418. package/dist/cli/streamedJsonOutput.js +0 -135
  1419. package/dist/hopper/HopperRegexWorker.js +0 -27
  1420. /package/dist/{application/binary → process}/AbortablePromise.js +0 -0
@@ -0,0 +1,3601 @@
1
+ import { t as __esmMin } from "./rolldown-runtime-BjeaiXFo.js";
2
+ import { A as err, C as freezeJsonSnapshot, E as isImmutableJsonSnapshot, M as ok, S as jsonValueValidationSteps, T as init_immutableJson, b as jsonValueSchema, f as init_analysisErrorCore, g as prefixedDigestSchema, j as init_result, m as init_digests, p as digestSchema, s as AnalysisOutputError, v as init_jsonValue, x as jsonValueValidationIssue, y as jsonObjectSchema } from "./analysisErrorCore-BIEP7tvF.js";
3
+ import { i as nulFreeStringSchema, t as init_localPath } from "./localPath-AxvW9aPe.js";
4
+ import { n as init_canonicalDigest, t as digestCanonicalValue } from "./canonicalDigest-Bi_0_zGi.js";
5
+ import { c as compositeKey, i as init_providerOperationHealth, l as init_unicodeCodePointOrder, n as PROVIDER_OPERATION_STATES, r as PROVIDER_RETRY_ACTIONS, s as compareUnicodeCodePoints, t as PROVIDER_FAILURE_STAGES } from "./providerOperationHealth-9DRSGM8N.js";
6
+ import { basename } from "node:path";
7
+ import { z } from "zod";
8
+ import { createHash } from "node:crypto";
9
+ import canonicalize from "canonicalize";
10
+
11
+ //#region dist/contracts/providerSelection.js
12
+ var analysisProviderIdSchema, analysisProviderSelectorSchema, PROVIDER_REJECTION_CODES;
13
+ function init_providerSelection() {
14
+ return (init_providerSelection = __esmMin((() => {
15
+ analysisProviderIdSchema = z.string().min(1).regex(/^[a-z][a-z0-9\x2d]*$/u).refine((value) => value !== "auto", { message: "auto is reserved for provider selection" });
16
+ analysisProviderSelectorSchema = z.union([z.literal("auto"), analysisProviderIdSchema]);
17
+ PROVIDER_REJECTION_CODES = [
18
+ "not_configured",
19
+ "executable_missing",
20
+ "runtime_missing",
21
+ "runtime_unavailable",
22
+ "unsupported_host",
23
+ "unsupported_version",
24
+ "target_kind_unsupported",
25
+ "target_format_unsupported",
26
+ "architecture_unsupported",
27
+ "target_role_unsupported",
28
+ "managed_target_unsupported",
29
+ "open_options_invalid",
30
+ "version_unresolved"
31
+ ];
32
+ })))();
33
+ }
34
+
35
+ //#endregion
36
+ //#region dist/domain/binaryTargetTypes.js
37
+ var BINARY_ARCHITECTURES, RAW_ONLY_ARCHITECTURES, ELF_METADATA_ARCHITECTURES, isElfMetadataArchitecture, isMachOFormat;
38
+ function init_binaryTargetTypes() {
39
+ return (init_binaryTargetTypes = __esmMin((() => {
40
+ BINARY_ARCHITECTURES = [
41
+ "x86",
42
+ "x86_64",
43
+ "arm",
44
+ "arm64",
45
+ "mips",
46
+ "6502",
47
+ "riscv",
48
+ "powerpc",
49
+ "m68k",
50
+ "hexagon"
51
+ ];
52
+ RAW_ONLY_ARCHITECTURES = ["6502", "m68k"];
53
+ ELF_METADATA_ARCHITECTURES = [
54
+ "mips",
55
+ "riscv",
56
+ "powerpc"
57
+ ];
58
+ isElfMetadataArchitecture = (architecture) => ELF_METADATA_ARCHITECTURES.includes(architecture);
59
+ isMachOFormat = (format) => format === "mach-o" || format === "mach-o-universal";
60
+ })))();
61
+ }
62
+
63
+ //#endregion
64
+ //#region dist/domain/canonicalJsonDigestSteps.js
65
+ /** Hash owned, validated JSON in bounded steps without a document-sized string. */
66
+ function* canonicalJsonDigestSteps(value) {
67
+ const hash = createHash("sha256");
68
+ const ancestors = new Set();
69
+ const stack = [{
70
+ kind: "value",
71
+ value
72
+ }];
73
+ const encodedKeys = new Map();
74
+ let remainingKeyCodeUnits = 8192;
75
+ let buffered = "";
76
+ let flushed = false;
77
+ const emit = (part) => {
78
+ buffered += part;
79
+ if (buffered.length >= 8192) {
80
+ hash.update(buffered);
81
+ buffered = "";
82
+ flushed = true;
83
+ }
84
+ };
85
+ try {
86
+ while (stack.length > 0) {
87
+ if (flushed) {
88
+ flushed = false;
89
+ yield;
90
+ }
91
+ const frame = stack.pop();
92
+ if (frame === undefined) break;
93
+ if (frame.kind === "separator") {
94
+ emit(":");
95
+ continue;
96
+ }
97
+ if (frame.kind === "string") {
98
+ if (frame.index === frame.value.length) {
99
+ emit("\"");
100
+ continue;
101
+ }
102
+ let end = Math.min(frame.index + 8192, frame.value.length);
103
+ const last = frame.value.charCodeAt(end - 1);
104
+ const next = frame.value.charCodeAt(end);
105
+ if (end < frame.value.length && last >= 55296 && last <= 56319 && next >= 56320 && next <= 57343) end -= 1;
106
+ emit(JSON.stringify(frame.value.slice(frame.index, end)).slice(1, -1));
107
+ frame.index = end;
108
+ stack.push(frame);
109
+ continue;
110
+ }
111
+ let item;
112
+ if (frame.kind === "array") {
113
+ if (frame.index === frame.length) {
114
+ emit("]");
115
+ ancestors.delete(frame.value);
116
+ continue;
117
+ }
118
+ const element = frame.value[frame.index];
119
+ if (element === undefined) throw new TypeError("Canonical JSON digest requires dense JSON arrays");
120
+ if (frame.index++ > 0) emit(",");
121
+ stack.push(frame);
122
+ item = element;
123
+ } else if (frame.kind === "object") {
124
+ if (frame.index === frame.keys.length) {
125
+ emit("}");
126
+ ancestors.delete(frame.value);
127
+ continue;
128
+ }
129
+ const key = frame.keys[frame.index++];
130
+ if (key === undefined) throw new TypeError("Canonical JSON object changed during hashing");
131
+ const property = frame.value[key];
132
+ if (property === undefined) {
133
+ stack.push(frame);
134
+ continue;
135
+ }
136
+ if (frame.written++ > 0) emit(",");
137
+ if (key.length > 8192) {
138
+ emit("\"");
139
+ stack.push(frame, {
140
+ kind: "value",
141
+ value: property
142
+ }, { kind: "separator" }, {
143
+ kind: "string",
144
+ value: key,
145
+ index: 0
146
+ });
147
+ continue;
148
+ }
149
+ let encodedKey = encodedKeys.get(key);
150
+ if (encodedKey === undefined) {
151
+ encodedKey = JSON.stringify(key);
152
+ if (encodedKey.length <= remainingKeyCodeUnits) {
153
+ encodedKeys.set(key, encodedKey);
154
+ remainingKeyCodeUnits -= encodedKey.length;
155
+ }
156
+ }
157
+ emit(encodedKey);
158
+ emit(":");
159
+ stack.push(frame);
160
+ item = property;
161
+ } else {
162
+ item = frame.value;
163
+ }
164
+ if (flushed) {
165
+ flushed = false;
166
+ yield;
167
+ }
168
+ if (typeof item === "string" && item.length > 8192) {
169
+ emit("\"");
170
+ stack.push({
171
+ kind: "string",
172
+ value: item,
173
+ index: 0
174
+ });
175
+ } else if (item === null || typeof item !== "object") {
176
+ if (typeof item === "number" && !Number.isFinite(item)) throw new Error(Number.isNaN(item) ? "NaN is not allowed" : "Infinity is not allowed");
177
+ emit(JSON.stringify(item));
178
+ } else {
179
+ if (ancestors.has(item)) throw new Error("Circular reference detected");
180
+ ancestors.add(item);
181
+ if (Array.isArray(item)) {
182
+ emit("[");
183
+ stack.push({
184
+ kind: "array",
185
+ value: item,
186
+ length: item.length,
187
+ index: 0
188
+ });
189
+ } else {
190
+ emit("{");
191
+ stack.push({
192
+ kind: "object",
193
+ value: item,
194
+ keys: Object.keys(item).sort(),
195
+ index: 0,
196
+ written: 0
197
+ });
198
+ }
199
+ }
200
+ }
201
+ if (buffered !== "") hash.update(buffered);
202
+ return hash.digest("hex");
203
+ } finally {
204
+ stack.length = 0;
205
+ ancestors.clear();
206
+ encodedKeys.clear();
207
+ buffered = "";
208
+ }
209
+ }
210
+ function init_canonicalJsonDigestSteps() {
211
+ return (init_canonicalJsonDigestSteps = __esmMin((() => {})))();
212
+ }
213
+
214
+ //#endregion
215
+ //#region dist/domain/analysisProfile.js
216
+ var committedProviderSchema, unsignedAnalysisProfileSchema, analysisProfileSchema, createAnalysisProfile, analysisProfilesEqual, profileDigest, canonicalJson;
217
+ function init_analysisProfile() {
218
+ return (init_analysisProfile = __esmMin((() => {
219
+ init_jsonValue();
220
+ init_digests();
221
+ committedProviderSchema = z.strictObject({
222
+ id: z.string().min(1),
223
+ name: z.string().min(1),
224
+ version: z.string().min(1)
225
+ });
226
+ unsignedAnalysisProfileSchema = z.strictObject({
227
+ provider: committedProviderSchema,
228
+ parameters: jsonObjectSchema
229
+ });
230
+ analysisProfileSchema = unsignedAnalysisProfileSchema.extend({ digest: digestSchema }).superRefine((profile, context) => {
231
+ const { digest: _digest, ...unsigned } = profile;
232
+ if (profileDigest(unsigned) !== profile.digest) context.addIssue({
233
+ code: "custom",
234
+ path: ["digest"],
235
+ message: "Analysis profile digest does not match its parameters"
236
+ });
237
+ });
238
+ createAnalysisProfile = (provider, parameters) => {
239
+ const unsigned = unsignedAnalysisProfileSchema.parse({
240
+ provider: {
241
+ id: provider.id,
242
+ name: provider.name,
243
+ version: provider.version
244
+ },
245
+ parameters
246
+ });
247
+ return analysisProfileSchema.parse({
248
+ ...unsigned,
249
+ digest: profileDigest(unsigned)
250
+ });
251
+ };
252
+ analysisProfilesEqual = (left, right) => left.digest === right.digest && left.provider.id === right.provider.id && left.provider.name === right.provider.name && left.provider.version === right.provider.version;
253
+ profileDigest = (profile) => createHash("sha256").update(canonicalJson(profile)).digest("hex");
254
+ canonicalJson = (value) => {
255
+ const encoded = canonicalize(value);
256
+ if (encoded === undefined) throw new TypeError("RFC 8785 canonicalization rejected analysis profile");
257
+ return encoded;
258
+ };
259
+ })))();
260
+ }
261
+
262
+ //#endregion
263
+ //#region dist/domain/fixedTupleSchema.js
264
+ var fixedTupleSchema;
265
+ function init_fixedTupleSchema() {
266
+ return (init_fixedTupleSchema = __esmMin((() => {
267
+ fixedTupleSchema = (items) => z.tuple(items, z.union(items)).check(z.minLength(items.length), z.maxLength(items.length));
268
+ })))();
269
+ }
270
+
271
+ //#endregion
272
+ //#region dist/domain/relationshipCoverage.js
273
+ var diagnostics, completeCoverage, limitedDirections, partialCoverage, unknownCoverage, relationshipCoverageSchema, relationshipCoverageLimitations;
274
+ function init_relationshipCoverage() {
275
+ return (init_relationshipCoverage = __esmMin((() => {
276
+ init_fixedTupleSchema();
277
+ diagnostics = z.array(z.string().min(1)).min(1).exactOptional();
278
+ completeCoverage = z.strictObject({
279
+ status: z.literal("complete"),
280
+ diagnostics
281
+ });
282
+ limitedDirections = z.union([
283
+ fixedTupleSchema([z.literal("callers")]),
284
+ fixedTupleSchema([z.literal("callees")]),
285
+ fixedTupleSchema([z.literal("callers"), z.literal("callees")])
286
+ ]);
287
+ partialCoverage = z.strictObject({
288
+ status: z.literal("partial"),
289
+ limitations: z.array(z.string().min(1)).min(1),
290
+ limited_directions: limitedDirections.exactOptional(),
291
+ diagnostics
292
+ });
293
+ unknownCoverage = z.strictObject({
294
+ status: z.literal("unknown"),
295
+ reason: z.string().min(1),
296
+ limited_directions: limitedDirections.exactOptional(),
297
+ diagnostics
298
+ });
299
+ relationshipCoverageSchema = z.discriminatedUnion("status", [
300
+ completeCoverage,
301
+ partialCoverage,
302
+ unknownCoverage
303
+ ]);
304
+ relationshipCoverageLimitations = (coverage) => {
305
+ switch (coverage?.status) {
306
+ case undefined: return ["Provider did not report relationship coverage."];
307
+ case "complete": return [];
308
+ case "partial": return coverage.limitations;
309
+ case "unknown": return [coverage.reason];
310
+ }
311
+ };
312
+ })))();
313
+ }
314
+
315
+ //#endregion
316
+ //#region dist/domain/evidence.js
317
+ /** Create Evidence from owned immutable JSON while exposing cooperative computation steps. */
318
+ function* createImmutableEvidenceSteps(target, provider, observation) {
319
+ if (!isImmutableJsonSnapshot(observation.result)) throw new TypeError("Cooperative Evidence requires an authenticated immutable result");
320
+ yield* jsonValueValidationSteps(observation.result);
321
+ const { normalized } = normalizeEvidenceObservation(target, provider, observation);
322
+ const digest = yield* canonicalJsonDigestSteps(semanticProjection(normalized));
323
+ return rememberImmutableEvidence({
324
+ ...normalized,
325
+ evidence_id: `ev_${digest}`
326
+ });
327
+ }
328
+ var providerSchema, subjectFormatSchema, subjectBaseSchema, subjectSchema, evidenceLocationSchema, evidenceAuthoritySchema, executionEnvironmentSchema, evidenceBaseSchema, validateAnalysisProfileProvider, evidenceSchema, authenticatedEvidenceSchema, immutableEvidenceSnapshots, immutableResultSchema, rebindEvidenceSubjectTargetPath, semanticProjection, computeEvidenceId, parseEvidence, immutableEvidence, rebindEvidenceToTargetPath, isImmutableEvidence, rememberImmutableEvidence, createEvidence, normalizeEvidenceObservation;
329
+ function init_evidence() {
330
+ return (init_evidence = __esmMin((() => {
331
+ init_canonicalDigest();
332
+ init_canonicalJsonDigestSteps();
333
+ init_localPath();
334
+ init_analysisProfile();
335
+ init_binaryTargetTypes();
336
+ init_jsonValue();
337
+ init_immutableJson();
338
+ init_digests();
339
+ init_relationshipCoverage();
340
+ providerSchema = z.strictObject({
341
+ id: z.string().min(1),
342
+ name: z.string().min(1),
343
+ version: z.string().nullable()
344
+ });
345
+ subjectFormatSchema = z.enum([
346
+ "hopper",
347
+ "analysis-database",
348
+ "mach-o",
349
+ "elf",
350
+ "pe",
351
+ "dos-mz",
352
+ "dos-com",
353
+ "raw-binary",
354
+ "zip",
355
+ "ipa",
356
+ "apk",
357
+ "msix",
358
+ "appx",
359
+ "hap",
360
+ "hsp",
361
+ "app-pack",
362
+ "asar",
363
+ "dmg",
364
+ "pkg",
365
+ "plist",
366
+ "javascript",
367
+ "source-map",
368
+ "directory",
369
+ "file",
370
+ "unknown",
371
+ "mach-o-universal",
372
+ "javascript-bundle",
373
+ "entitlements"
374
+ ]);
375
+ subjectBaseSchema = z.strictObject({
376
+ name: z.string().min(1),
377
+ digest: z.strictObject({ sha256: digestSchema }),
378
+ local_path: nulFreeStringSchema
379
+ });
380
+ subjectSchema = z.discriminatedUnion("format", [subjectBaseSchema.extend({
381
+ format: subjectFormatSchema.exclude(["raw-binary"]),
382
+ architecture: z.enum(BINARY_ARCHITECTURES).exclude([...RAW_ONLY_ARCHITECTURES]).nullable()
383
+ }), subjectBaseSchema.extend({
384
+ format: z.literal("raw-binary"),
385
+ architecture: z.enum(BINARY_ARCHITECTURES).nullable()
386
+ })]);
387
+ evidenceLocationSchema = z.discriminatedUnion("kind", [
388
+ z.strictObject({
389
+ kind: z.literal("address"),
390
+ address: z.string().min(1)
391
+ }),
392
+ z.strictObject({
393
+ kind: z.literal("address-range"),
394
+ start: z.string().min(1),
395
+ end: z.string().min(1)
396
+ }),
397
+ z.strictObject({
398
+ kind: z.literal("artifact-path"),
399
+ path: z.string().min(1)
400
+ }),
401
+ z.strictObject({
402
+ kind: z.literal("file-offset"),
403
+ offset: z.number().int().min(0)
404
+ }),
405
+ z.strictObject({
406
+ kind: z.literal("file-offset-range"),
407
+ start: z.number().int().min(0),
408
+ end: z.number().int().min(0)
409
+ })
410
+ ]);
411
+ evidenceAuthoritySchema = z.enum([
412
+ "shipped-artifact",
413
+ "controlled-replay",
414
+ "historical-reference",
415
+ "external-service",
416
+ "analyst-inference"
417
+ ]);
418
+ executionEnvironmentSchema = z.strictObject({
419
+ id: z.string().min(1),
420
+ platform: z.string().min(1),
421
+ architecture: z.string().min(1),
422
+ isolation: z.enum([
423
+ "none",
424
+ "process",
425
+ "container",
426
+ "virtual-machine"
427
+ ])
428
+ });
429
+ evidenceBaseSchema = z.object({
430
+ evidence_id: prefixedDigestSchema("ev"),
431
+ subject: subjectSchema.nullable(),
432
+ provider: providerSchema,
433
+ analysis_profile: analysisProfileSchema.nullable(),
434
+ predicate_type: z.string().min(1),
435
+ operation: z.string().min(1),
436
+ parameters: jsonObjectSchema,
437
+ raw_result: jsonValueSchema.nullable(),
438
+ normalized_result: jsonValueSchema,
439
+ confidence: z.enum([
440
+ "observed",
441
+ "derived",
442
+ "inferred"
443
+ ]),
444
+ authority: evidenceAuthoritySchema,
445
+ environment: executionEnvironmentSchema.nullable(),
446
+ limitations: z.array(z.string()),
447
+ relationship_coverage: relationshipCoverageSchema.nullable(),
448
+ locations: z.array(evidenceLocationSchema),
449
+ evidence_links: z.array(prefixedDigestSchema("ev"))
450
+ }).strict();
451
+ validateAnalysisProfileProvider = (evidence, context) => {
452
+ const profile = evidence.analysis_profile;
453
+ if (profile !== null && (profile.provider.id !== evidence.provider.id || profile.provider.name !== evidence.provider.name || profile.provider.version !== evidence.provider.version)) context.addIssue({
454
+ code: "custom",
455
+ path: ["analysis_profile", "provider"],
456
+ message: "Analysis profile provider does not match Evidence provider"
457
+ });
458
+ };
459
+ evidenceSchema = evidenceBaseSchema.superRefine(validateAnalysisProfileProvider);
460
+ authenticatedEvidenceSchema = evidenceSchema.superRefine((evidence, context) => {
461
+ const { evidence_id: evidenceId, ...withoutId } = evidence;
462
+ if (computeEvidenceId(withoutId) !== evidenceId) context.addIssue({
463
+ code: "custom",
464
+ path: ["evidence_id"],
465
+ message: "Evidence semantic identifier does not match its record"
466
+ });
467
+ });
468
+ immutableEvidenceSnapshots = new WeakMap();
469
+ immutableResultSchema = z.custom(isImmutableJsonSnapshot).superRefine((value, context) => {
470
+ const issue = jsonValueValidationIssue(value);
471
+ if (issue !== undefined) context.addIssue({
472
+ code: "custom",
473
+ message: issue
474
+ });
475
+ });
476
+ rebindEvidenceSubjectTargetPath = (subject, target) => subject.sha256 === target.sha256 && subject.format === target.format && (subject.architecture ?? null) === (target.architecture ?? null) ? {
477
+ ...subject,
478
+ path: target.path
479
+ } : subject;
480
+ semanticProjection = (evidence) => ({
481
+ subject: evidence.subject === null ? null : {
482
+ digest: evidence.subject.digest,
483
+ format: evidence.subject.format,
484
+ architecture: evidence.subject.architecture
485
+ },
486
+ provider: evidence.provider,
487
+ analysis_profile: evidence.analysis_profile,
488
+ predicate_type: evidence.predicate_type,
489
+ operation: evidence.operation,
490
+ parameters: evidence.parameters,
491
+ raw_result: evidence.raw_result,
492
+ normalized_result: evidence.normalized_result,
493
+ confidence: evidence.confidence,
494
+ authority: evidence.authority,
495
+ environment: evidence.environment,
496
+ limitations: evidence.limitations,
497
+ relationship_coverage: evidence.relationship_coverage,
498
+ locations: evidence.locations,
499
+ evidence_links: evidence.evidence_links
500
+ });
501
+ computeEvidenceId = (evidence) => `ev_${digestCanonicalValue(semanticProjection(evidence), "Evidence")}`;
502
+ parseEvidence = (input) => {
503
+ const immutable = typeof input === "object" && input !== null ? immutableEvidenceSnapshots.get(input) : undefined;
504
+ if (immutable !== undefined) return immutable;
505
+ return authenticatedEvidenceSchema.parse(input);
506
+ };
507
+ immutableEvidence = (input) => rememberImmutableEvidence(parseEvidence(input));
508
+ rebindEvidenceToTargetPath = (evidence, target) => {
509
+ const subject = evidence.subject;
510
+ if (subject === null) return evidence;
511
+ const rebound = rebindEvidenceSubjectTargetPath({
512
+ path: subject.local_path,
513
+ sha256: subject.digest.sha256,
514
+ format: subject.format,
515
+ ...subject.architecture === null ? {} : { architecture: subject.architecture }
516
+ }, target);
517
+ if (rebound.path === subject.local_path) return evidence;
518
+ const reboundSubject = subjectSchema.parse({
519
+ ...subject,
520
+ name: basename(target.path) || "artifact",
521
+ local_path: target.path
522
+ });
523
+ const reboundEvidence = {
524
+ ...evidence,
525
+ subject: reboundSubject
526
+ };
527
+ if (!isImmutableEvidence(evidence)) return immutableEvidence(reboundEvidence);
528
+ Object.freeze(reboundSubject.digest);
529
+ Object.freeze(reboundSubject);
530
+ Object.freeze(reboundEvidence);
531
+ immutableEvidenceSnapshots.set(reboundEvidence, reboundEvidence);
532
+ return reboundEvidence;
533
+ };
534
+ isImmutableEvidence = (evidence) => immutableEvidenceSnapshots.has(evidence);
535
+ rememberImmutableEvidence = (evidence) => {
536
+ freezeJsonSnapshot(evidence);
537
+ immutableEvidenceSnapshots.set(evidence, evidence);
538
+ return evidence;
539
+ };
540
+ createEvidence = (target, provider, observation) => {
541
+ const { normalized, sharedResult } = normalizeEvidenceObservation(target, provider, observation);
542
+ const evidence = {
543
+ ...normalized,
544
+ evidence_id: computeEvidenceId(normalized)
545
+ };
546
+ return sharedResult ? rememberImmutableEvidence(evidence) : evidence;
547
+ };
548
+ normalizeEvidenceObservation = (target, provider, observation) => {
549
+ const subject = target === undefined ? null : {
550
+ name: basename(target.path) || "artifact",
551
+ digest: { sha256: target.sha256 },
552
+ format: target.format,
553
+ architecture: target.architecture ?? null,
554
+ local_path: target.path
555
+ };
556
+ const semantic = {
557
+ subject: subject === null ? null : {
558
+ digest: subject.digest,
559
+ format: subject.format,
560
+ architecture: subject.architecture
561
+ },
562
+ provider: {
563
+ id: provider.id,
564
+ name: provider.name,
565
+ version: provider.version
566
+ },
567
+ analysis_profile: observation.analysisProfile ?? null,
568
+ predicate_type: observation.predicateType ?? "rea.analysis",
569
+ operation: observation.operation,
570
+ parameters: observation.parameters,
571
+ raw_result: observation.rawResult ?? null,
572
+ normalized_result: observation.result,
573
+ confidence: observation.confidence ?? "observed",
574
+ authority: observation.authority ?? "shipped-artifact",
575
+ environment: observation.environment ?? null,
576
+ limitations: [...target === undefined ? [observation.subjectUnavailableReason ?? "Artifact identity is unavailable for this observation."] : [], ...observation.limitations ?? []],
577
+ ...observation.relationshipCoverage === undefined ? { relationship_coverage: null } : { relationship_coverage: observation.relationshipCoverage },
578
+ locations: [...observation.locations ?? []],
579
+ evidence_links: [...observation.evidenceLinks ?? []]
580
+ };
581
+ const sharedResult = typeof observation.result === "object" && observation.result !== null && isImmutableJsonSnapshot(observation.result);
582
+ const selectedSchema = sharedResult ? evidenceSchema.safeExtend({ normalized_result: immutableResultSchema }) : evidenceSchema;
583
+ const normalized = selectedSchema.parse({
584
+ ...semantic,
585
+ evidence_id: `ev_${"0".repeat(64)}`,
586
+ subject
587
+ });
588
+ return {
589
+ normalized,
590
+ sharedResult
591
+ };
592
+ };
593
+ })))();
594
+ }
595
+
596
+ //#endregion
597
+ //#region dist/domain/swiftSymbolClassification.js
598
+ var LEGACY_CATEGORIES, NOMINAL_CATEGORIES, classifySwiftSymbol, SWIFT_MANGLING_PREFIXES, isSwiftMangledSymbolName, identifierEnd;
599
+ function init_swiftSymbolClassification() {
600
+ return (init_swiftSymbolClassification = __esmMin((() => {
601
+ LEGACY_CATEGORIES = [
602
+ ["_TtC", "classes"],
603
+ ["_TtV", "structs"],
604
+ ["_TtO", "enums"],
605
+ ["_TtP", "protocols"],
606
+ ["_TtE", "extensions"]
607
+ ];
608
+ NOMINAL_CATEGORIES = new Map([
609
+ ["C", "classes"],
610
+ ["V", "structs"],
611
+ ["O", "enums"],
612
+ ["P", "protocols"]
613
+ ]);
614
+ classifySwiftSymbol = (name) => {
615
+ const prefix = /^_?(?:\$[sS]|_T0)/u.exec(name);
616
+ if (prefix === null) {
617
+ if (!name.includes("_Tt")) return undefined;
618
+ return { category: LEGACY_CATEGORIES.find(([prefix]) => name.startsWith(prefix))?.[1] ?? null };
619
+ }
620
+ const mangling = name.slice(prefix[0].length);
621
+ let offset = identifierEnd(mangling, 0);
622
+ if (offset === undefined) return { category: null };
623
+ let category = null;
624
+ for (;;) {
625
+ const end = identifierEnd(mangling, offset);
626
+ if (end === undefined) break;
627
+ const kind = mangling.charAt(end);
628
+ const nominal = NOMINAL_CATEGORIES.get(kind);
629
+ if (nominal === undefined) {
630
+ if (mangling.slice(end) === "Mp") category = "protocols";
631
+ else if (kind === "E" && category !== null) category = "extensions";
632
+ break;
633
+ }
634
+ category = nominal;
635
+ offset = end + 1;
636
+ }
637
+ return { category };
638
+ };
639
+ SWIFT_MANGLING_PREFIXES = [
640
+ "_T0",
641
+ "$S",
642
+ "_$S",
643
+ "$s",
644
+ "_$s",
645
+ "@__swiftmacro_",
646
+ "$e",
647
+ "_$e"
648
+ ];
649
+ isSwiftMangledSymbolName = (name) => SWIFT_MANGLING_PREFIXES.some((prefix) => name.startsWith(prefix));
650
+ identifierEnd = (mangling, offset) => {
651
+ const lengthToken = /^[1-9][0-9]*/u.exec(mangling.slice(offset))?.[0];
652
+ if (lengthToken === undefined) return undefined;
653
+ const start = offset + lengthToken.length;
654
+ const end = start + Number(lengthToken);
655
+ if (!Number.isSafeInteger(end) || end > mangling.length || !/^[A-Za-z_][A-Za-z0-9_]*$/u.test(mangling.slice(start, end))) return undefined;
656
+ return end;
657
+ };
658
+ })))();
659
+ }
660
+
661
+ //#endregion
662
+ //#region dist/domain/native/objcSwiftMetadata.js
663
+ var isAppleDispatchMetadataTarget, objcMethodTypeSchema, objcPropertyAttributeSchema, objcMethodSchema, objcPropertySchema, objcProtocolSchema, objcClassSchema, nativeMetadataLocationSchema, nativeMetadataDecodeSchema, nativeMetadataEvidenceSchema, objcIvarSchema, objcProtocolRecordSchema, objcDispatchImplementationSchema, objcCategorySchema, swiftConformanceSchema, swiftDispatchSlotSchema, relativePointerSchema, swiftSymbolSchema, nativeMetadataCoverageSchema, swiftDeclKindSchema, swiftAccessLevelSchema, swiftDeclSchema, dbOperationSchema, dbSaveResultSchema, objcSwiftMetadataSchema, nativeDispatchMetadataResultSchema, inspectNativeDispatchMetadata, parseMetadataAddress;
664
+ function init_objcSwiftMetadata() {
665
+ return (init_objcSwiftMetadata = __esmMin((() => {
666
+ init_binaryTargetTypes();
667
+ init_evidence();
668
+ init_swiftSymbolClassification();
669
+ init_unicodeCodePointOrder();
670
+ isAppleDispatchMetadataTarget = (target) => target.kind === "executable" && isMachOFormat(target.format);
671
+ objcMethodTypeSchema = z.enum([
672
+ "instance",
673
+ "class",
674
+ "ivar_getter",
675
+ "ivar_setter"
676
+ ]);
677
+ objcPropertyAttributeSchema = z.strictObject({
678
+ name: z.string().min(1),
679
+ value: z.string()
680
+ });
681
+ objcMethodSchema = z.strictObject({
682
+ selector: z.string().min(1),
683
+ method_type: objcMethodTypeSchema,
684
+ address: z.number().int().nullable(),
685
+ is_required: z.boolean().nullable(),
686
+ is_optional: z.boolean().nullable()
687
+ });
688
+ objcPropertySchema = z.strictObject({
689
+ name: z.string().min(1),
690
+ type_encoding: z.string().nullable(),
691
+ attributes: z.array(objcPropertyAttributeSchema),
692
+ atomicity: z.enum(["atomic", "nonatomic"]).nullable(),
693
+ is_readonly: z.boolean().nullable(),
694
+ getter: z.string().nullable(),
695
+ setter: z.string().nullable()
696
+ });
697
+ objcProtocolSchema = z.strictObject({
698
+ name: z.string().min(1),
699
+ methods: z.array(objcMethodSchema).default([]),
700
+ optional_methods: z.array(objcMethodSchema).default([]),
701
+ properties: z.array(objcPropertySchema).default([])
702
+ });
703
+ objcClassSchema = z.strictObject({
704
+ name: z.string().min(1),
705
+ super_class: z.string().nullable(),
706
+ is_meta_class: z.boolean().nullable(),
707
+ is_root_class: z.boolean().nullable(),
708
+ methods: z.array(objcMethodSchema).default([]),
709
+ properties: z.array(objcPropertySchema).default([]),
710
+ protocols: z.array(z.string()).default([]),
711
+ ivar_count: z.number().int().nonnegative().nullable(),
712
+ instance_size: z.number().int().nonnegative().nullable(),
713
+ location: z.object({
714
+ address: z.string().nullable(),
715
+ file_offset: z.number().int().nonnegative().nullable()
716
+ }).optional(),
717
+ superclass_address: z.string().nullable().optional(),
718
+ metaclass_address: z.string().nullable().optional(),
719
+ decode: z.object({
720
+ status: z.enum([
721
+ "decoded",
722
+ "partial",
723
+ "unsupported",
724
+ "invalid"
725
+ ]),
726
+ reason: z.string().nullable()
727
+ }).optional(),
728
+ evidence: z.array(z.object({
729
+ kind: z.literal("binary_metadata"),
730
+ description: z.string(),
731
+ location: z.object({
732
+ address: z.string().nullable(),
733
+ file_offset: z.number().int().nonnegative().nullable()
734
+ }),
735
+ artifact_path: z.string(),
736
+ artifact_sha256: z.string()
737
+ })).optional()
738
+ });
739
+ nativeMetadataLocationSchema = z.strictObject({
740
+ address: z.string().nullable(),
741
+ file_offset: z.number().int().nonnegative().nullable()
742
+ });
743
+ nativeMetadataDecodeSchema = z.strictObject({
744
+ status: z.enum([
745
+ "decoded",
746
+ "partial",
747
+ "unsupported",
748
+ "invalid"
749
+ ]),
750
+ reason: z.string().nullable()
751
+ });
752
+ nativeMetadataEvidenceSchema = z.strictObject({
753
+ kind: z.enum([
754
+ "binary_metadata",
755
+ "interface_builder_resource",
756
+ "symbol",
757
+ "reference",
758
+ "decompiler"
759
+ ]),
760
+ description: z.string().min(1),
761
+ provider: providerSchema.optional(),
762
+ location: nativeMetadataLocationSchema,
763
+ /** Preserve a provider's source value when it does not establish a location. */
764
+ reported_address: z.string().optional(),
765
+ artifact_path: z.string().min(1).nullable().default(null),
766
+ artifact_sha256: z.string().regex(/^[a-f0-9]{64}$/u).nullable().default(null)
767
+ });
768
+ objcIvarSchema = z.strictObject({
769
+ class_name: z.string().min(1),
770
+ name: z.string().min(1),
771
+ type_encoding: z.string().nullable(),
772
+ offset: z.number().int().nonnegative().nullable(),
773
+ size: z.number().int().nonnegative().nullable().default(null),
774
+ alignment: z.number().int().positive().nullable().default(null),
775
+ location: nativeMetadataLocationSchema,
776
+ decode: nativeMetadataDecodeSchema,
777
+ evidence: z.array(nativeMetadataEvidenceSchema).min(1)
778
+ });
779
+ objcProtocolRecordSchema = z.strictObject({
780
+ name: z.string(),
781
+ adopted_protocols: z.array(z.string()),
782
+ methods: z.array(objcMethodSchema),
783
+ optional_methods: z.array(objcMethodSchema),
784
+ location: nativeMetadataLocationSchema,
785
+ decode: nativeMetadataDecodeSchema,
786
+ evidence: z.array(nativeMetadataEvidenceSchema).min(1)
787
+ });
788
+ objcDispatchImplementationSchema = z.strictObject({
789
+ class_name: z.string().min(1),
790
+ selector: z.string().min(1),
791
+ method_type: z.enum(["instance", "class"]),
792
+ implementation_address: z.string().nullable(),
793
+ /** Category that adds this method, when it is not defined by the class itself. */
794
+ category: z.string().nullable().optional(),
795
+ location: nativeMetadataLocationSchema,
796
+ decode: nativeMetadataDecodeSchema,
797
+ evidence: z.array(nativeMetadataEvidenceSchema).min(1)
798
+ });
799
+ objcCategorySchema = z.strictObject({
800
+ name: z.string().min(1),
801
+ /** Extended class; external classes come from the category's bind symbol. */
802
+ class_name: z.string().min(1).nullable(),
803
+ class_source: z.enum([
804
+ "local",
805
+ "external",
806
+ "unresolved"
807
+ ]),
808
+ instance_methods: z.array(z.string()),
809
+ class_methods: z.array(z.string()),
810
+ protocols: z.array(z.string()),
811
+ properties: z.array(objcPropertySchema),
812
+ location: nativeMetadataLocationSchema,
813
+ decode: nativeMetadataDecodeSchema,
814
+ evidence: z.array(nativeMetadataEvidenceSchema).min(1)
815
+ });
816
+ swiftConformanceSchema = z.strictObject({
817
+ type_name: z.string().min(1),
818
+ protocol_name: z.string().min(1),
819
+ module: z.string().nullable(),
820
+ witness_table: nativeMetadataLocationSchema,
821
+ location: nativeMetadataLocationSchema,
822
+ decode: nativeMetadataDecodeSchema,
823
+ evidence: z.array(nativeMetadataEvidenceSchema).min(1)
824
+ });
825
+ swiftDispatchSlotSchema = z.strictObject({
826
+ owner: z.string().min(1),
827
+ table_kind: z.enum(["witness_table", "class_vtable"]),
828
+ slot_index: z.number().int().nonnegative(),
829
+ requirement: z.string().nullable(),
830
+ implementation: z.string().nullable(),
831
+ implementation_address: z.string().nullable(),
832
+ thunk_address: z.string().nullable(),
833
+ location: nativeMetadataLocationSchema,
834
+ decode: nativeMetadataDecodeSchema,
835
+ evidence: z.array(nativeMetadataEvidenceSchema).min(1)
836
+ });
837
+ relativePointerSchema = z.strictObject({
838
+ field: nativeMetadataLocationSchema,
839
+ target: nativeMetadataLocationSchema,
840
+ displacement: z.number().int(),
841
+ indirectable: z.boolean(),
842
+ indirect: z.boolean().nullable(),
843
+ decode: nativeMetadataDecodeSchema,
844
+ evidence: z.array(nativeMetadataEvidenceSchema).min(1)
845
+ });
846
+ swiftSymbolSchema = z.strictObject({
847
+ mangled_name: z.string().min(1),
848
+ address: z.string().min(1).nullable(),
849
+ decode: nativeMetadataDecodeSchema,
850
+ evidence: z.array(nativeMetadataEvidenceSchema).min(1)
851
+ });
852
+ nativeMetadataCoverageSchema = z.strictObject({
853
+ facet: z.string().min(1),
854
+ status: z.enum([
855
+ "complete",
856
+ "partial",
857
+ "unsupported",
858
+ "not_requested"
859
+ ]),
860
+ reason: z.string().nullable(),
861
+ examined: z.number().int().nonnegative(),
862
+ decoded: z.number().int().nonnegative()
863
+ });
864
+ swiftDeclKindSchema = z.enum([
865
+ "class",
866
+ "struct",
867
+ "enum",
868
+ "protocol",
869
+ "extension",
870
+ "actor",
871
+ "global_var",
872
+ "global_func"
873
+ ]);
874
+ swiftAccessLevelSchema = z.enum([
875
+ "private",
876
+ "fileprivate",
877
+ "internal",
878
+ "public",
879
+ "open"
880
+ ]);
881
+ swiftDeclSchema = z.strictObject({
882
+ kind: swiftDeclKindSchema,
883
+ name: z.string().min(1),
884
+ module: z.string().nullable(),
885
+ access_level: swiftAccessLevelSchema.default("internal"),
886
+ super_class: z.string().nullable(),
887
+ protocols: z.array(z.string()).default([]),
888
+ is_final: z.boolean().default(false),
889
+ is_required: z.boolean().default(false),
890
+ is_convenience_init: z.boolean().default(false),
891
+ is_override: z.boolean().default(false)
892
+ });
893
+ dbOperationSchema = z.enum([
894
+ "save",
895
+ "readback",
896
+ "open_database",
897
+ "close_database",
898
+ "export",
899
+ "import"
900
+ ]);
901
+ dbSaveResultSchema = z.strictObject({
902
+ operation: dbOperationSchema,
903
+ succeeded: z.boolean(),
904
+ preserved_names: z.number().int().nonnegative().default(0),
905
+ preserved_comments: z.number().int().nonnegative().default(0),
906
+ preserved_bookmarks: z.number().int().nonnegative().default(0),
907
+ database_path: z.string().nullable(),
908
+ error: z.string().nullable()
909
+ });
910
+ objcSwiftMetadataSchema = z.strictObject({
911
+ objc_classes: z.array(objcClassSchema).default([]),
912
+ objc_protocols: z.array(objcProtocolSchema).default([]),
913
+ objc_categories: z.array(objcCategorySchema).default([]),
914
+ swift_decls: z.array(swiftDeclSchema).default([]),
915
+ objc_ivars: z.array(objcIvarSchema).default([]),
916
+ objc_protocol_records: z.array(objcProtocolRecordSchema).default([]),
917
+ objc_dispatch_implementations: z.array(objcDispatchImplementationSchema).default([]),
918
+ swift_conformances: z.array(swiftConformanceSchema).default([]),
919
+ swift_dispatch_slots: z.array(swiftDispatchSlotSchema).default([]),
920
+ swift_symbols: z.array(swiftSymbolSchema).default([]),
921
+ relative_pointers: z.array(relativePointerSchema).default([]),
922
+ coverage: z.array(nativeMetadataCoverageSchema).default([]),
923
+ db_save_result: dbSaveResultSchema.nullable()
924
+ });
925
+ nativeDispatchMetadataResultSchema = z.strictObject({
926
+ target_sha256: z.string().regex(/^[a-f0-9]{64}$/u).nullable(),
927
+ provider: z.strictObject({
928
+ id: z.string().min(1),
929
+ name: z.string().min(1),
930
+ version: z.string().nullable()
931
+ }),
932
+ analysis_profile_digest: z.string().min(1).nullable(),
933
+ result: objcSwiftMetadataSchema
934
+ });
935
+ inspectNativeDispatchMetadata = (names, maxRecords = 5e3) => {
936
+ const symbolEvidence = (entry, address) => [{
937
+ kind: "symbol",
938
+ description: `Provider symbol ${entry.name}`,
939
+ location: {
940
+ address,
941
+ file_offset: null
942
+ },
943
+ ...address === null ? { reported_address: entry.address } : {},
944
+ artifact_path: null,
945
+ artifact_sha256: null
946
+ }];
947
+ const classNames = new Set();
948
+ const implementations = new Map();
949
+ const swiftSymbols = [];
950
+ const examinedNames = names.slice(0, maxRecords);
951
+ for (const entry of examinedNames) {
952
+ const address = entry.address === "" ? null : entry.address;
953
+ const classMatch = /(?:OBJC_CLASS_|OBJC_METACLASS_)\$_([^\s]+)/u.exec(entry.name);
954
+ if (classMatch?.[1] !== undefined) classNames.add(classMatch[1]);
955
+ const methodMatch = /^([+-])\[([^\s\]]+)\s+([^\]]+)\]$/u.exec(entry.name);
956
+ if (methodMatch?.[1] !== undefined && methodMatch[2] && methodMatch[3]) {
957
+ const methodType = methodMatch[1] === "+" ? "class" : "instance";
958
+ const selector = methodMatch[3];
959
+ implementations.set(`${methodMatch[2]}:${selector}:${methodType}`, {
960
+ class_name: methodMatch[2],
961
+ selector,
962
+ method_type: methodType,
963
+ implementation_address: address,
964
+ location: {
965
+ address,
966
+ file_offset: null
967
+ },
968
+ decode: {
969
+ status: "partial",
970
+ reason: "symbol_name_only"
971
+ },
972
+ evidence: symbolEvidence(entry, address)
973
+ });
974
+ classNames.add(methodMatch[2]);
975
+ }
976
+ if (isSwiftMangledSymbolName(entry.name) || entry.name.startsWith("_Tt")) swiftSymbols.push({
977
+ mangled_name: entry.name,
978
+ address,
979
+ decode: {
980
+ status: "partial",
981
+ reason: "mangled_symbol_not_demangled"
982
+ },
983
+ evidence: symbolEvidence(entry, address)
984
+ });
985
+ }
986
+ const methodsByClass = new Map();
987
+ for (const implementation of implementations.values()) {
988
+ const methods = methodsByClass.get(implementation.class_name) ?? [];
989
+ methods.push({
990
+ selector: implementation.selector,
991
+ method_type: implementation.method_type,
992
+ address: parseMetadataAddress(implementation.implementation_address),
993
+ is_required: null,
994
+ is_optional: null
995
+ });
996
+ methodsByClass.set(implementation.class_name, methods);
997
+ }
998
+ const classes = [...classNames].sort().map((name) => ({
999
+ name,
1000
+ super_class: null,
1001
+ is_meta_class: null,
1002
+ is_root_class: null,
1003
+ methods: methodsByClass.get(name) ?? [],
1004
+ properties: [],
1005
+ protocols: [],
1006
+ ivar_count: null,
1007
+ instance_size: null
1008
+ }));
1009
+ const decodedImplementations = [...implementations.values()].sort((left, right) => compareUnicodeCodePoints(compositeKey([left.class_name, left.selector]), compositeKey([right.class_name, right.selector])));
1010
+ const swift = swiftSymbols.length > 0;
1011
+ return objcSwiftMetadataSchema.parse({
1012
+ objc_classes: classes,
1013
+ objc_dispatch_implementations: decodedImplementations,
1014
+ swift_symbols: swiftSymbols,
1015
+ coverage: [
1016
+ {
1017
+ facet: "objc_class_symbols",
1018
+ status: "partial",
1019
+ reason: names.length > examinedNames.length ? "record_limit_reached_and_symbol_names_are_not_runtime_class_metadata" : "symbol_names_do_not_recover_all_runtime_class_metadata",
1020
+ examined: examinedNames.length,
1021
+ decoded: classes.length
1022
+ },
1023
+ {
1024
+ facet: "objc_dispatch_implementations",
1025
+ status: decodedImplementations.length > 0 ? "partial" : "unsupported",
1026
+ reason: names.length > examinedNames.length ? "record_limit_reached_and_only_symbolized_methods_are_resolved" : decodedImplementations.length > 0 ? "only_symbolized_methods_are_resolved" : "provider_name_inventory_has_no_objc_method_symbols",
1027
+ examined: examinedNames.length,
1028
+ decoded: decodedImplementations.length
1029
+ },
1030
+ {
1031
+ facet: "objc_ivar_layouts",
1032
+ status: "unsupported",
1033
+ reason: "symbol_inventory_does_not_expose_runtime_ivar_layouts",
1034
+ examined: 0,
1035
+ decoded: 0
1036
+ },
1037
+ {
1038
+ facet: "swift_declarations",
1039
+ status: swift ? "partial" : "unsupported",
1040
+ reason: swift ? "symbols_are_not_demangled_declarations" : "no_swift_symbols_observed",
1041
+ examined: swiftSymbols.length,
1042
+ decoded: 0
1043
+ },
1044
+ {
1045
+ facet: "swift_dispatch_tables",
1046
+ status: "unsupported",
1047
+ reason: "provider_name_inventory_does_not_decode_witness_or_class_vtables",
1048
+ examined: 0,
1049
+ decoded: 0
1050
+ },
1051
+ {
1052
+ facet: "relative_pointers",
1053
+ status: "unsupported",
1054
+ reason: "provider_name_inventory_does_not_decode_binary_relative_pointers",
1055
+ examined: 0,
1056
+ decoded: 0
1057
+ }
1058
+ ],
1059
+ db_save_result: null
1060
+ });
1061
+ };
1062
+ parseMetadataAddress = (address) => {
1063
+ if (address === null) return null;
1064
+ const match = /(?:^|:)0x([0-9a-f]+)$/iu.exec(address);
1065
+ if (match?.[1] === undefined) return null;
1066
+ const value = Number.parseInt(match[1], 16);
1067
+ return Number.isSafeInteger(value) ? value : null;
1068
+ };
1069
+ })))();
1070
+ }
1071
+
1072
+ //#endregion
1073
+ //#region dist/domain/native/addressCoordinate.js
1074
+ var addressCoordinate;
1075
+ function init_addressCoordinate() {
1076
+ return (init_addressCoordinate = __esmMin((() => {
1077
+ addressCoordinate = (value) => {
1078
+ const separator = value.lastIndexOf(":0x");
1079
+ if (separator === 0) return null;
1080
+ const space = separator < 0 ? null : value.slice(0, separator);
1081
+ const offset = separator < 0 ? value : value.slice(separator + 1);
1082
+ if (!/^0x[0-9a-f]+$/u.test(offset)) return null;
1083
+ return {
1084
+ space,
1085
+ offset: BigInt(offset)
1086
+ };
1087
+ };
1088
+ })))();
1089
+ }
1090
+
1091
+ //#endregion
1092
+ //#region dist/domain/native/nativeApiBoundary.js
1093
+ var inferenceConfidenceSchema, inferenceEvidenceSchema, inferredBoundaryTypeFacts, inferredReturnTypeSchema, inferredParameterTypeSchema, jumpTableDataSourceSchema, jumpTableMappingSchema, jumpTableDefaultTargetSchema, inferredJumpTableSchema, availableNativeApiBoundarySchema, unavailableNativeApiBoundarySchema, nativeApiBoundarySchema, nativeApiInspectionSubstepSchema, nativeApiInspectionResultSchema;
1094
+ function init_nativeApiBoundary() {
1095
+ return (init_nativeApiBoundary = __esmMin((() => {
1096
+ inferenceConfidenceSchema = z.enum([
1097
+ "low",
1098
+ "medium",
1099
+ "high"
1100
+ ]);
1101
+ inferenceEvidenceSchema = z.object({
1102
+ kind: z.enum([
1103
+ "signature-source",
1104
+ "decompiler-type",
1105
+ "type-lock",
1106
+ "calling-convention",
1107
+ "jump-table"
1108
+ ]),
1109
+ source: z.string().min(1),
1110
+ detail: z.string().min(1)
1111
+ }).strict();
1112
+ inferredBoundaryTypeFacts = {
1113
+ ordinal: z.number().int().min(0).nullable(),
1114
+ name: z.string().min(1).nullable(),
1115
+ data_type: z.string().min(1),
1116
+ size_bytes: z.number().int().min(0).nullable(),
1117
+ storage: z.string().min(1).nullable(),
1118
+ confidence: inferenceConfidenceSchema,
1119
+ evidence: z.array(inferenceEvidenceSchema).min(1),
1120
+ decompiler_artifacts: z.array(z.enum([
1121
+ "recovered-signature",
1122
+ "register-or-stack-storage",
1123
+ "compiler-generated-variable"
1124
+ ]))
1125
+ };
1126
+ inferredReturnTypeSchema = z.strictObject({
1127
+ ...inferredBoundaryTypeFacts,
1128
+ role: z.literal("return"),
1129
+ ordinal: z.null(),
1130
+ name: z.null()
1131
+ });
1132
+ inferredParameterTypeSchema = z.strictObject({
1133
+ ...inferredBoundaryTypeFacts,
1134
+ role: z.literal("parameter"),
1135
+ ordinal: z.number().int().min(0)
1136
+ });
1137
+ jumpTableDataSourceSchema = z.object({
1138
+ address: z.string().min(1),
1139
+ provenance: z.enum([
1140
+ "ghidra-decompiler-load-table",
1141
+ "ghidra-dispatch-block-data-reference",
1142
+ "ghidra-aarch64-byte-table",
1143
+ "ghidra-aarch64-halfword-table"
1144
+ ]),
1145
+ entry_size_bytes: z.number().int().min(1).nullable(),
1146
+ entry_count: z.number().int().min(0).nullable(),
1147
+ confidence: inferenceConfidenceSchema,
1148
+ evidence: z.array(inferenceEvidenceSchema).min(1)
1149
+ }).strict();
1150
+ jumpTableMappingSchema = z.object({
1151
+ case_value: z.number().int().nullable(),
1152
+ target_address: z.string().min(1),
1153
+ confidence: inferenceConfidenceSchema,
1154
+ evidence: z.array(inferenceEvidenceSchema).min(1)
1155
+ }).strict();
1156
+ jumpTableDefaultTargetSchema = z.strictObject({
1157
+ target_address: z.string().min(1),
1158
+ confidence: inferenceConfidenceSchema,
1159
+ evidence: z.array(inferenceEvidenceSchema).min(1)
1160
+ });
1161
+ inferredJumpTableSchema = z.object({
1162
+ dispatch_address: z.string().min(1),
1163
+ data_sources: z.array(jumpTableDataSourceSchema),
1164
+ mappings: z.array(jumpTableMappingSchema),
1165
+ default_targets: z.array(jumpTableDefaultTargetSchema),
1166
+ limitations: z.array(z.string())
1167
+ }).strict();
1168
+ availableNativeApiBoundarySchema = z.object({
1169
+ available: z.literal(true),
1170
+ provenance: z.string().min(1),
1171
+ signature_source: z.string().min(1),
1172
+ calling_convention: z.string().min(1),
1173
+ return_type: inferredReturnTypeSchema,
1174
+ parameters: z.array(inferredParameterTypeSchema),
1175
+ jump_tables: z.array(inferredJumpTableSchema),
1176
+ pseudocode: z.object({
1177
+ classification: z.literal("decompiler-generated-non-source"),
1178
+ compilable: z.literal(false)
1179
+ }).strict(),
1180
+ decompiler_artifacts: z.array(z.enum([
1181
+ "recovered-signature",
1182
+ "register-and-stack-variables",
1183
+ "compiler-generated-control-flow",
1184
+ "pointer-arithmetic",
1185
+ "pseudocode"
1186
+ ])),
1187
+ limitations: z.array(z.string())
1188
+ }).strict();
1189
+ unavailableNativeApiBoundarySchema = z.object({
1190
+ available: z.literal(false),
1191
+ reason: z.string().min(1),
1192
+ residual_unknowns: z.array(z.string().min(1)).min(1)
1193
+ }).strict();
1194
+ nativeApiBoundarySchema = z.discriminatedUnion("available", [unavailableNativeApiBoundarySchema, availableNativeApiBoundarySchema]);
1195
+ nativeApiInspectionSubstepSchema = z.object({
1196
+ operation: z.enum([
1197
+ "analyze_function",
1198
+ "project_native_api_boundary",
1199
+ "preserve_residual_unknowns"
1200
+ ]),
1201
+ status: z.enum(["completed", "unsupported"]),
1202
+ observations: z.array(z.string().min(1))
1203
+ }).strict();
1204
+ nativeApiInspectionResultSchema = z.object({
1205
+ procedure: z.object({
1206
+ address: z.string().min(1),
1207
+ name: z.string().min(1)
1208
+ }).strict(),
1209
+ boundary: nativeApiBoundarySchema,
1210
+ substeps: z.array(nativeApiInspectionSubstepSchema).length(3),
1211
+ unsupported_branches: z.array(z.string().min(1)),
1212
+ residual_unknowns: z.array(z.string().min(1))
1213
+ }).strict();
1214
+ })))();
1215
+ }
1216
+
1217
+ //#endregion
1218
+ //#region dist/domain/native/nativeValueFlow.js
1219
+ var nativeVarnodeSchema, nativePcodeOperationSchema, nativePcodeDefUseSchema, nativePcodeEffectSchema, nativeValueFlowSchema;
1220
+ function init_nativeValueFlow() {
1221
+ return (init_nativeValueFlow = __esmMin((() => {
1222
+ nativeVarnodeSchema = z.strictObject({
1223
+ kind: z.enum([
1224
+ "constant",
1225
+ "address",
1226
+ "register",
1227
+ "unique",
1228
+ "other"
1229
+ ]),
1230
+ size_bytes: z.number().int().nonnegative(),
1231
+ location: z.string().nullable(),
1232
+ constant_hex: z.string().regex(/^[0-9a-f]+$/u).nullable()
1233
+ });
1234
+ nativePcodeOperationSchema = z.strictObject({
1235
+ id: z.string().min(1),
1236
+ address: z.string().min(1),
1237
+ sequence: z.number().int().nonnegative(),
1238
+ opcode: z.string().min(1),
1239
+ is_dead: z.boolean(),
1240
+ block_membership: z.enum([
1241
+ "member",
1242
+ "detached",
1243
+ "unavailable"
1244
+ ]),
1245
+ inputs: z.array(nativeVarnodeSchema),
1246
+ output: nativeVarnodeSchema.nullable()
1247
+ });
1248
+ nativePcodeDefUseSchema = z.strictObject({
1249
+ definition: z.string().min(1),
1250
+ use: z.string().min(1),
1251
+ input_index: z.number().int().nonnegative()
1252
+ });
1253
+ nativePcodeEffectSchema = z.strictObject({
1254
+ operation: z.string().min(1),
1255
+ kind: z.enum([
1256
+ "memory_read",
1257
+ "memory_write",
1258
+ "conditional_branch",
1259
+ "indirect_branch",
1260
+ "direct_call",
1261
+ "indirect_call"
1262
+ ]),
1263
+ operand_input: z.number().int().nonnegative().nullable(),
1264
+ value_input: z.number().int().nonnegative().nullable()
1265
+ });
1266
+ nativeValueFlowSchema = z.discriminatedUnion("available", [z.strictObject({
1267
+ available: z.literal(true),
1268
+ provenance: z.literal("ghidra-high-pcode"),
1269
+ operations: z.array(nativePcodeOperationSchema),
1270
+ def_use: z.array(nativePcodeDefUseSchema),
1271
+ effects: z.array(nativePcodeEffectSchema),
1272
+ parameters: z.array(z.strictObject({
1273
+ ordinal: z.number().int().nonnegative(),
1274
+ name: z.string(),
1275
+ data_type: z.string()
1276
+ })),
1277
+ parameter_uses: z.array(z.strictObject({
1278
+ ordinal: z.number().int().nonnegative(),
1279
+ use: z.string(),
1280
+ input_index: z.number().int().nonnegative()
1281
+ })),
1282
+ truncated: z.boolean(),
1283
+ omitted_operations_lower_bound: z.number().int().nonnegative(),
1284
+ known_omitted_inputs: z.number().int().nonnegative(),
1285
+ known_omitted_edges: z.number().int().nonnegative(),
1286
+ limitations: z.array(z.string().min(1))
1287
+ }), z.strictObject({
1288
+ available: z.literal(false),
1289
+ reason: z.string().min(1),
1290
+ limitations: z.array(z.string().min(1))
1291
+ })]);
1292
+ })))();
1293
+ }
1294
+
1295
+ //#endregion
1296
+ //#region dist/domain/hopperValues.js
1297
+ var addressDistance, procedureMapSchema, addressedNamesSchema, addressedNameMapSchema, segmentSchema, unavailableAnalysisFactSchema, analysisStringSchema, analysisBookmarkSchema, functionBodySchema, functionBodyEntryAgrees, procedureClassificationSchema, procedureIdentitySchema, localVariableSchema, functionInstructionWindowSchema, availableReferenceKindSchema, referenceKindSchema, unresolvedCallSchema, swiftStringLiteralFields, swiftStringLiteralSchema, swiftStringLiteralOmissionFields, swiftStringLiteralOmissionSchema, referenceEdgeSchema, facetAvailabilitySchema, functionDossierSchema, parseFunctionDossier, parseProcedures, parseNames, parseRelatedAddresses, parseSegments, parseSegmentImageBase, projectBinaryOverview, parseDocuments, parseListCount, unwrapProperty, invalid;
1298
+ function init_hopperValues() {
1299
+ return (init_hopperValues = __esmMin((() => {
1300
+ init_fixedTupleSchema();
1301
+ init_addressCoordinate();
1302
+ init_result();
1303
+ init_nativeApiBoundary();
1304
+ init_nativeValueFlow();
1305
+ init_analysisErrorCore();
1306
+ addressDistance = (start, end) => {
1307
+ const left = addressCoordinate(start);
1308
+ const right = addressCoordinate(end);
1309
+ if (left === null || right === null || left.space !== right.space) return null;
1310
+ const distance = right.offset - left.offset;
1311
+ if (distance < 0n || distance > BigInt(Number.MAX_SAFE_INTEGER)) return null;
1312
+ return Number(distance);
1313
+ };
1314
+ procedureMapSchema = z.record(z.string(), z.string());
1315
+ addressedNamesSchema = z.array(z.object({
1316
+ address: z.string(),
1317
+ name: z.string()
1318
+ }));
1319
+ addressedNameMapSchema = z.record(z.string(), z.string());
1320
+ segmentSchema = z.object({
1321
+ name: z.string(),
1322
+ start: z.string(),
1323
+ end: z.string(),
1324
+ readable: z.boolean().nullable(),
1325
+ writable: z.boolean().nullable(),
1326
+ executable: z.boolean().nullable(),
1327
+ image_base: z.string().min(1).exactOptional(),
1328
+ address_space: z.string().min(1).exactOptional()
1329
+ });
1330
+ unavailableAnalysisFactSchema = z.object({
1331
+ available: z.literal(false),
1332
+ reason: z.string()
1333
+ }).strict();
1334
+ analysisStringSchema = z.object({
1335
+ address: z.string(),
1336
+ value: z.string(),
1337
+ provider_value: z.string().exactOptional().describe("Original provider display text, which may shorten the typed object."),
1338
+ decoding: unavailableAnalysisFactSchema.exactOptional().describe("When present, value retains native display text because typed bytes could not be decoded."),
1339
+ string: z.object({
1340
+ encoding: z.string().min(1),
1341
+ encoding_status: z.enum(["observed", "inferred"]).exactOptional().describe("Whether the provider declares the encoding or REA infers it from the typed bytes and native display. This does not establish the original source's intended encoding."),
1342
+ termination: z.enum(["missing", "present_or_not_required"]),
1343
+ byte_length: z.number().int().min(0)
1344
+ }).exactOptional()
1345
+ });
1346
+ analysisBookmarkSchema = z.strictObject({
1347
+ address: z.string(),
1348
+ name: z.string().nullable()
1349
+ });
1350
+ functionBodySchema = z.discriminatedUnion("available", [unavailableAnalysisFactSchema, z.strictObject({
1351
+ available: z.literal(true),
1352
+ provenance: z.string().min(1),
1353
+ ranges: z.array(z.strictObject({
1354
+ start: z.string(),
1355
+ end: z.string().describe("Inclusive last address of this observed body range.")
1356
+ })),
1357
+ total_bytes: z.number().int().min(0).max(Number.MAX_SAFE_INTEGER),
1358
+ span_bytes: z.number().int().min(0).max(Number.MAX_SAFE_INTEGER).nullable(),
1359
+ non_contiguous: z.boolean(),
1360
+ contains_entry: z.boolean()
1361
+ }).superRefine((body, context) => {
1362
+ let total = 0n;
1363
+ const bounds = new Map();
1364
+ const closedSpaces = new Set();
1365
+ let previousSpace;
1366
+ for (const range of body.ranges) {
1367
+ const start = addressCoordinate(range.start);
1368
+ const end = addressCoordinate(range.end);
1369
+ if (start === null || end === null || start.space !== end.space || end.offset < start.offset) {
1370
+ context.addIssue({
1371
+ code: "custom",
1372
+ message: "Function body range has invalid inclusive endpoints"
1373
+ });
1374
+ return;
1375
+ }
1376
+ if (previousSpace !== undefined && previousSpace !== start.space) closedSpaces.add(previousSpace);
1377
+ const previous = bounds.get(start.space);
1378
+ if (closedSpaces.has(start.space) || previous !== undefined && start.offset <= previous.end + 1n) {
1379
+ context.addIssue({
1380
+ code: "custom",
1381
+ message: "Function body ranges must be ordered, disjoint and maximal within each address space"
1382
+ });
1383
+ return;
1384
+ }
1385
+ bounds.set(start.space, {
1386
+ start: previous?.start ?? start.offset,
1387
+ end: end.offset
1388
+ });
1389
+ previousSpace = start.space;
1390
+ total += end.offset - start.offset + 1n;
1391
+ }
1392
+ const onlyBounds = bounds.size === 1 ? [...bounds.values()][0] : undefined;
1393
+ const span = bounds.size === 0 ? 0n : onlyBounds === undefined ? null : onlyBounds.end - onlyBounds.start + 1n;
1394
+ const reportedSpan = body.span_bytes === null ? null : BigInt(body.span_bytes);
1395
+ if (total !== BigInt(body.total_bytes) || span !== reportedSpan || body.non_contiguous !== body.ranges.length > 1) context.addIssue({
1396
+ code: "custom",
1397
+ message: "Function body counts, enclosing span or contiguity disagree with inclusive ranges"
1398
+ });
1399
+ })]);
1400
+ functionBodyEntryAgrees = (body, address) => {
1401
+ if (!body.available) return true;
1402
+ const entry = addressCoordinate(address);
1403
+ if (entry === null) return false;
1404
+ const contains = body.ranges.some((range) => {
1405
+ const start = addressCoordinate(range.start);
1406
+ const end = addressCoordinate(range.end);
1407
+ return start !== null && end !== null && start.space === entry.space && entry.offset >= start.offset && entry.offset <= end.offset;
1408
+ });
1409
+ return contains === body.contains_entry;
1410
+ };
1411
+ procedureClassificationSchema = z.object({
1412
+ external: z.boolean(),
1413
+ thunk: z.boolean(),
1414
+ thunk_target: z.string().nullable(),
1415
+ provenance: z.string().min(1)
1416
+ }).strict();
1417
+ procedureIdentitySchema = z.object({
1418
+ address: z.string(),
1419
+ name: z.string(),
1420
+ classification: procedureClassificationSchema.nullable(),
1421
+ body: functionBodySchema
1422
+ }).strict().superRefine((identity, context) => {
1423
+ if (!functionBodyEntryAgrees(identity.body, identity.address)) context.addIssue({
1424
+ code: "custom",
1425
+ message: "Function body entry membership disagrees with procedure identity"
1426
+ });
1427
+ });
1428
+ localVariableSchema = z.object({
1429
+ description: z.string(),
1430
+ provenance: z.string().min(1),
1431
+ name: z.string().nullable().exactOptional(),
1432
+ stack_displacement: z.string().regex(/^-?\d+$/u).nullable().exactOptional().describe("Observed signed stack byte displacement, encoded as decimal to preserve precision.")
1433
+ }).strict();
1434
+ functionInstructionWindowSchema = z.object({
1435
+ procedure: procedureIdentitySchema,
1436
+ instructions: z.array(z.string()),
1437
+ limitations: z.array(z.string())
1438
+ }).strict();
1439
+ availableReferenceKindSchema = z.object({
1440
+ available: z.literal(true),
1441
+ provenance: z.string().min(1),
1442
+ type: z.string(),
1443
+ flow: z.boolean(),
1444
+ call: z.boolean(),
1445
+ jump: z.boolean(),
1446
+ data: z.boolean(),
1447
+ read: z.boolean(),
1448
+ write: z.boolean(),
1449
+ indirect: z.boolean(),
1450
+ computed: z.boolean(),
1451
+ conditional: z.boolean(),
1452
+ terminal: z.boolean(),
1453
+ primary: z.boolean(),
1454
+ operand_index: z.number().int(),
1455
+ external: z.boolean()
1456
+ }).strict();
1457
+ referenceKindSchema = z.discriminatedUnion("available", [unavailableAnalysisFactSchema, availableReferenceKindSchema]);
1458
+ unresolvedCallSchema = z.strictObject({
1459
+ address: z.string(),
1460
+ reason: z.string()
1461
+ });
1462
+ swiftStringLiteralFields = {
1463
+ source_address: z.string().describe("Instruction that consumes both words: a call, tail call, return, or paired store."),
1464
+ value: z.string().describe("Decoded UTF-8 text, including the canonical empty string."),
1465
+ registers: fixedTupleSchema([z.string(), z.string()]),
1466
+ words: fixedTupleSchema([z.string(), z.string()]).describe("Observed constant register values, in register order.")
1467
+ };
1468
+ swiftStringLiteralSchema = z.discriminatedUnion("representation", [z.strictObject({
1469
+ ...swiftStringLiteralFields,
1470
+ representation: z.literal("small").describe("The UTF-8 bytes are inside the two words."),
1471
+ address: z.null().describe("A small literal has no storage of its own.")
1472
+ }), z.strictObject({
1473
+ ...swiftStringLiteralFields,
1474
+ representation: z.literal("large").describe("An immortal literal whose words hold its count and a pointer to its bytes."),
1475
+ address: z.string().describe("Address of a large literal's bytes.")
1476
+ })]);
1477
+ swiftStringLiteralOmissionFields = {
1478
+ source_address: swiftStringLiteralFields.source_address,
1479
+ byte_length: z.number().int().min(0).max(Number.MAX_SAFE_INTEGER),
1480
+ reason: z.enum(["capacity", "unresolved_jump"]).describe("Why this candidate is omitted: capacity stopped decoding, or an unresolved jump left its use unknown."),
1481
+ registers: swiftStringLiteralFields.registers,
1482
+ words: swiftStringLiteralFields.words
1483
+ };
1484
+ swiftStringLiteralOmissionSchema = z.discriminatedUnion("representation", [z.strictObject({
1485
+ ...swiftStringLiteralOmissionFields,
1486
+ representation: z.literal("small"),
1487
+ address: z.null()
1488
+ }), z.strictObject({
1489
+ ...swiftStringLiteralOmissionFields,
1490
+ representation: z.literal("large"),
1491
+ address: z.string().describe("Address of the literal's bytes.")
1492
+ })]);
1493
+ referenceEdgeSchema = z.object({
1494
+ source_address: z.string(),
1495
+ target_address: z.string(),
1496
+ source_procedure: procedureIdentitySchema.nullable(),
1497
+ target_procedure: procedureIdentitySchema.nullable(),
1498
+ kind: referenceKindSchema,
1499
+ call: z.strictObject({
1500
+ classification: z.enum([
1501
+ "none",
1502
+ "unknown",
1503
+ "direct",
1504
+ "objective_c"
1505
+ ]),
1506
+ provider_type: z.number().int(),
1507
+ provenance: z.string().min(1)
1508
+ }).exactOptional()
1509
+ }).strict();
1510
+ facetAvailabilitySchema = z.discriminatedUnion("available", [z.object({ available: z.literal(true) }).strict(), z.object({
1511
+ available: z.literal(false),
1512
+ reason: z.string().min(1)
1513
+ }).strict()]);
1514
+ functionDossierSchema = z.object({
1515
+ procedure: procedureIdentitySchema.safeExtend({
1516
+ signature: z.string().nullable(),
1517
+ locals: z.array(localVariableSchema)
1518
+ }),
1519
+ pseudocode: z.string(),
1520
+ assembly: z.array(z.string()),
1521
+ comments: z.array(z.object({
1522
+ address: z.string(),
1523
+ kind: z.enum(["comment", "inline"]),
1524
+ text: z.string()
1525
+ }).strict()),
1526
+ callers: z.array(procedureIdentitySchema),
1527
+ callees: z.array(procedureIdentitySchema),
1528
+ incoming_references: z.array(referenceEdgeSchema),
1529
+ outgoing_references: z.array(referenceEdgeSchema),
1530
+ unresolved_calls: z.array(unresolvedCallSchema).exactOptional(),
1531
+ referenced_strings: z.array(analysisStringSchema.extend({ source_address: z.string() })),
1532
+ referenced_names: z.array(z.object({
1533
+ address: z.string(),
1534
+ value: z.string(),
1535
+ source_address: z.string()
1536
+ }).strict()),
1537
+ swift_string_literals: z.array(swiftStringLiteralSchema).exactOptional().describe("Swift String literals decoded from constant register values. Absent when the provider does not decode them for this target."),
1538
+ swift_string_literal_omissions: z.array(swiftStringLiteralOmissionSchema).exactOptional().describe("Literal candidates omitted for capacity or unresolved control flow. Present exactly when swift_string_literals is present; empty when all examined use sites were classified."),
1539
+ basic_blocks: z.array(z.object({
1540
+ start: z.string(),
1541
+ end: z.string(),
1542
+ successors: z.array(z.string())
1543
+ }).strict()),
1544
+ native_api: nativeApiBoundarySchema.nullable(),
1545
+ native_value_flow: nativeValueFlowSchema.nullable(),
1546
+ facet_availability: z.object({
1547
+ pseudocode: facetAvailabilitySchema.exactOptional(),
1548
+ assembly: facetAvailabilitySchema.exactOptional(),
1549
+ comments: facetAvailabilitySchema.exactOptional(),
1550
+ callers: facetAvailabilitySchema.exactOptional(),
1551
+ callees: facetAvailabilitySchema.exactOptional(),
1552
+ references: facetAvailabilitySchema.exactOptional(),
1553
+ strings_names: facetAvailabilitySchema.exactOptional(),
1554
+ cfg: facetAvailabilitySchema.exactOptional()
1555
+ }).strict().exactOptional(),
1556
+ limitations: z.array(z.string())
1557
+ }).strict();
1558
+ parseFunctionDossier = (value) => {
1559
+ const parsed = functionDossierSchema.safeParse(value);
1560
+ return parsed.success ? ok(parsed.data) : err(new AnalysisOutputError("analyze_function", "provider output did not match the dossier contract", { cause: parsed.error }));
1561
+ };
1562
+ parseProcedures = (value, operation = "list_procedures") => {
1563
+ const parsed = procedureMapSchema.safeParse(unwrapProperty(value, "procedures"));
1564
+ return parsed.success ? ok(Object.entries(parsed.data).map(([address, name]) => ({
1565
+ address,
1566
+ name
1567
+ }))) : invalid(operation, "procedure map", parsed.error);
1568
+ };
1569
+ parseNames = (value, operation = "list_names") => {
1570
+ const unwrapped = unwrapProperty(value, "names");
1571
+ const records = addressedNamesSchema.safeParse(unwrapped);
1572
+ if (records.success) return ok(records.data);
1573
+ const map = addressedNameMapSchema.safeParse(unwrapped);
1574
+ return map.success ? ok(Object.entries(map.data).map(([address, name]) => ({
1575
+ address,
1576
+ name
1577
+ }))) : invalid(operation, "name list", map.error);
1578
+ };
1579
+ parseRelatedAddresses = (value, relation, operation = relation === "callees" ? "procedure_callees" : "procedure_callers") => {
1580
+ const parsed = z.array(z.string()).safeParse(unwrapProperty(value, relation));
1581
+ return parsed.success ? ok(parsed.data) : invalid(operation, `${relation} list`, parsed.error);
1582
+ };
1583
+ parseSegments = (value, operation = "list_segments") => {
1584
+ const parsed = z.array(segmentSchema).safeParse(unwrapProperty(value, "segments"));
1585
+ return parsed.success ? ok(parsed.data) : invalid(operation, "segment list", parsed.error);
1586
+ };
1587
+ parseSegmentImageBase = (segments) => {
1588
+ const base = segments[0]?.image_base;
1589
+ return base !== undefined && segments.every((segment) => segment.image_base === base) ? base : undefined;
1590
+ };
1591
+ projectBinaryOverview = (input) => {
1592
+ const { document, procedure_count, string_count, segments } = input;
1593
+ const imageBase = segments === undefined ? undefined : parseSegmentImageBase(segments);
1594
+ return {
1595
+ document,
1596
+ ...imageBase === undefined ? {} : { image_base: imageBase },
1597
+ ...segments === undefined ? {} : {
1598
+ segments: segments.map(({ name, start, end, image_base, address_space }) => ({
1599
+ name,
1600
+ start,
1601
+ end,
1602
+ length: addressDistance(start, end),
1603
+ ...image_base === undefined ? {} : { image_base },
1604
+ ...address_space === undefined ? {} : { address_space }
1605
+ })),
1606
+ segment_count: segments.length
1607
+ },
1608
+ procedure_count,
1609
+ string_count
1610
+ };
1611
+ };
1612
+ parseDocuments = (value, operation = "list_documents") => {
1613
+ const parsed = z.array(z.string()).safeParse(unwrapProperty(value, "documents"));
1614
+ return parsed.success ? ok(parsed.data) : invalid(operation, "document list", parsed.error);
1615
+ };
1616
+ parseListCount = (value, property, operation = property === "procedures" ? "list_procedures" : "list_strings") => {
1617
+ const unwrapped = unwrapProperty(value, property);
1618
+ const list = z.array(z.unknown()).safeParse(unwrapped);
1619
+ if (list.success) return ok(list.data.length);
1620
+ const map = z.record(z.string(), z.unknown()).safeParse(unwrapped);
1621
+ return map.success ? ok(Object.keys(map.data).length) : invalid(operation, `${property} list`, map.error);
1622
+ };
1623
+ unwrapProperty = (value, property) => {
1624
+ if (typeof value === "object" && value !== null && !Array.isArray(value) && property in value) {
1625
+ return value[property] ?? null;
1626
+ }
1627
+ return value;
1628
+ };
1629
+ invalid = (operation, expected, cause) => err(new AnalysisOutputError(operation, `Provider returned an invalid ${expected}`, { cause }));
1630
+ })))();
1631
+ }
1632
+
1633
+ //#endregion
1634
+ //#region dist/domain/native/nativeInstruction.js
1635
+ var nativeInstructionInputSchema, reference, nativeInstructionSchema, nativeCallTargetsSchema;
1636
+ function init_nativeInstruction() {
1637
+ return (init_nativeInstruction = __esmMin((() => {
1638
+ nativeInstructionInputSchema = z.strictObject({
1639
+ address: z.string().min(1),
1640
+ document: z.string().optional()
1641
+ });
1642
+ reference = z.strictObject({
1643
+ target_address: z.string(),
1644
+ type: z.string(),
1645
+ call: z.boolean(),
1646
+ jump: z.boolean(),
1647
+ indirect: z.boolean(),
1648
+ computed: z.boolean(),
1649
+ operand_index: z.number().int(),
1650
+ source_address: z.string().min(1).nullable().optional(),
1651
+ data: z.boolean().nullable().optional(),
1652
+ read: z.boolean().nullable().optional(),
1653
+ write: z.boolean().nullable().optional(),
1654
+ primary: z.boolean().nullable().optional().describe("Provider primary-reference status, not proof of literal addressing or a runtime access. Null or omission means unavailable."),
1655
+ provenance: z.string().min(1).nullable().optional().describe("Provider subsystem reporting this reference; null or omission means unavailable."),
1656
+ source: z.string().min(1).nullable().optional().describe("Provider reference origin, such as analysis, default, imported or user_defined; null or omission means unavailable.")
1657
+ });
1658
+ nativeInstructionSchema = z.strictObject({
1659
+ address: z.string(),
1660
+ status: z.enum([
1661
+ "decoded",
1662
+ "not-instruction-boundary",
1663
+ "data",
1664
+ "undecodable",
1665
+ "outside-memory"
1666
+ ]),
1667
+ procedure: z.string().nullable(),
1668
+ architecture: z.string(),
1669
+ mode: z.string().describe("Provider-reported mode label. Per-address decoder context, when available, is reported separately; a program-wide label does not establish runtime encoding mode."),
1670
+ decoder_context: z.array(z.strictObject({
1671
+ register: z.string().min(1),
1672
+ value: z.string().min(1).nullable(),
1673
+ source: z.string().min(1)
1674
+ })).optional().describe("Observed per-address decoder context. Null means no value was available; omission means the provider or older capture does not expose this facet. The separate mode field retains the program language variant."),
1675
+ bytes: z.string().nullable(),
1676
+ length: z.number().int().positive().nullable(),
1677
+ mnemonic: z.string().nullable(),
1678
+ raw_disassembly: z.string().nullable(),
1679
+ operands: z.array(z.strictObject({
1680
+ index: z.number().int().nonnegative(),
1681
+ raw: z.string(),
1682
+ provider_type: z.number().int(),
1683
+ components: z.array(z.strictObject({
1684
+ kind: z.enum([
1685
+ "register",
1686
+ "immediate",
1687
+ "address",
1688
+ "unknown"
1689
+ ]),
1690
+ text: z.string(),
1691
+ value: z.string().nullable(),
1692
+ bit_width: z.number().int().nonnegative().nullable()
1693
+ })),
1694
+ memory_addressing: z.literal("unavailable")
1695
+ })),
1696
+ flow: z.strictObject({
1697
+ kind: z.enum([
1698
+ "call",
1699
+ "jump",
1700
+ "return",
1701
+ "fallthrough",
1702
+ "terminal",
1703
+ "unavailable"
1704
+ ]),
1705
+ conditional: z.boolean(),
1706
+ computed: z.boolean(),
1707
+ direct_destinations: z.array(z.string()),
1708
+ classification_evidence: z.array(z.strictObject({
1709
+ source: z.string().min(1),
1710
+ value: z.string().min(1)
1711
+ })).optional().describe("Observed provider facts used to classify flow; older captures or other providers may omit them.")
1712
+ }),
1713
+ references: z.array(reference),
1714
+ incoming_references: z.array(reference).nullable().optional().describe("Static references to this exact code or data address, excluding synthetic entry-point references. An empty array means the provider examined the address and found none; null or omission means unavailable. Analyzer references do not prove literal addressing or runtime access."),
1715
+ limitations: z.array(z.string())
1716
+ });
1717
+ nativeCallTargetsSchema = z.strictObject({
1718
+ call_site: z.string(),
1719
+ procedure: z.string().nullable(),
1720
+ status: z.enum([
1721
+ "direct",
1722
+ "resolved-indirect",
1723
+ "ambiguous",
1724
+ "unresolved",
1725
+ "not-call",
1726
+ "unavailable"
1727
+ ]),
1728
+ mechanism: z.enum([
1729
+ "direct",
1730
+ "computed",
1731
+ "indirect",
1732
+ "unavailable"
1733
+ ]),
1734
+ targets: z.array(z.strictObject({
1735
+ address: z.string(),
1736
+ procedure: z.string().nullable(),
1737
+ status: z.enum([
1738
+ "direct",
1739
+ "resolved-indirect",
1740
+ "candidate"
1741
+ ]),
1742
+ basis: z.literal("provider-reference"),
1743
+ references: z.array(reference)
1744
+ })),
1745
+ limitations: z.array(z.string())
1746
+ });
1747
+ })))();
1748
+ }
1749
+
1750
+ //#endregion
1751
+ //#region dist/contracts/errorSchemas.js
1752
+ var categorySchema, remediationSchema, common, genericDetails, generic, analysisErrorProjectionSchema, analysisCliErrorEnvelopeSchema, analysisErrorJsonSchema;
1753
+ function init_errorSchemas() {
1754
+ return (init_errorSchemas = __esmMin((() => {
1755
+ init_jsonValue();
1756
+ categorySchema = z.enum([
1757
+ "invalid_input",
1758
+ "unsupported_provider",
1759
+ "unsupported_target",
1760
+ "integrity_mismatch",
1761
+ "truncated",
1762
+ "cancelled",
1763
+ "timeout",
1764
+ "resource_constraint",
1765
+ "unavailable",
1766
+ "execution_failure"
1767
+ ]);
1768
+ remediationSchema = z.object({ action: z.string().min(1) }).strict();
1769
+ common = {
1770
+ category: categorySchema,
1771
+ message: z.string().min(1),
1772
+ retryable: z.boolean(),
1773
+ remediation: remediationSchema
1774
+ };
1775
+ genericDetails = z.record(z.string(), jsonValueSchema).optional();
1776
+ generic = (code) => z.object({
1777
+ code: z.literal(code),
1778
+ ...common,
1779
+ details: genericDetails
1780
+ }).strict();
1781
+ analysisErrorProjectionSchema = z.discriminatedUnion("code", [
1782
+ generic("invalid_request"),
1783
+ generic("access_denied"),
1784
+ generic("artifact_changed"),
1785
+ generic("unreadable_output"),
1786
+ generic("capability_unavailable"),
1787
+ generic("unsupported_target"),
1788
+ generic("provider_unavailable"),
1789
+ generic("provider_timeout"),
1790
+ generic("resource_constraint"),
1791
+ generic("cancelled"),
1792
+ z.object({
1793
+ code: z.literal("artifact_integrity_mismatch"),
1794
+ ...common,
1795
+ details: z.object({
1796
+ logical_path: z.string(),
1797
+ declared_sha256: z.string().nullable(),
1798
+ calculated_sha256: z.string().nullable(),
1799
+ unpacked: z.boolean()
1800
+ }).strict()
1801
+ }).strict(),
1802
+ generic("artifact_operation_failed"),
1803
+ generic("evidence_integrity_mismatch"),
1804
+ generic("truncated"),
1805
+ generic("process_capture_failed"),
1806
+ generic("cleanup_incomplete"),
1807
+ generic("revision_conflict"),
1808
+ generic("configuration_invalid"),
1809
+ generic("target_unavailable"),
1810
+ generic("execution_failure")
1811
+ ]);
1812
+ analysisCliErrorEnvelopeSchema = z.object({
1813
+ error: z.string().min(1),
1814
+ input_path: z.string().optional(),
1815
+ input_reason: z.enum([
1816
+ "invalid-json",
1817
+ "read-failed",
1818
+ "too-large"
1819
+ ]).optional()
1820
+ }).passthrough().superRefine((value, context) => {
1821
+ const { error: _label, input_path: _inputPath, input_reason: _inputReason, ...projection } = value;
1822
+ const parsed = analysisErrorProjectionSchema.safeParse(projection);
1823
+ if (!parsed.success) {
1824
+ context.addIssue({
1825
+ code: "custom",
1826
+ message: "CLI error envelope must contain a canonical analysis error projection"
1827
+ });
1828
+ }
1829
+ });
1830
+ analysisErrorJsonSchema = z.toJSONSchema(analysisErrorProjectionSchema);
1831
+ })))();
1832
+ }
1833
+
1834
+ //#endregion
1835
+ //#region dist/domain/zipPackageFormat.js
1836
+ var ZIP_PACKAGE_FORMATS, isZipPackageFormat, hasZipSignature, zipPackageFormatForPath, ZIP_NON_ENTRY_LIMITATION;
1837
+ function init_zipPackageFormat() {
1838
+ return (init_zipPackageFormat = __esmMin((() => {
1839
+ ZIP_PACKAGE_FORMATS = [
1840
+ "zip",
1841
+ "ipa",
1842
+ "apk",
1843
+ "msix",
1844
+ "appx",
1845
+ "hap",
1846
+ "hsp",
1847
+ "app-pack"
1848
+ ];
1849
+ isZipPackageFormat = (format) => ZIP_PACKAGE_FORMATS.some((candidate) => candidate === format);
1850
+ hasZipSignature = (bytes) => bytes.length >= 4 && bytes[0] === 80 && bytes[1] === 75 && (bytes[2] === 3 && bytes[3] === 4 || bytes[2] === 5 && bytes[3] === 6 || bytes[2] === 7 && bytes[3] === 8);
1851
+ zipPackageFormatForPath = (path) => {
1852
+ const lower = path.toLowerCase();
1853
+ if (lower.endsWith(".zip")) return "zip";
1854
+ if (lower.endsWith(".ipa")) return "ipa";
1855
+ if (lower.endsWith(".apk")) return "apk";
1856
+ if (lower.endsWith(".msix") || lower.endsWith(".msixbundle")) return "msix";
1857
+ if (lower.endsWith(".appx") || lower.endsWith(".appxbundle")) return "appx";
1858
+ if (lower.endsWith(".hap")) return "hap";
1859
+ if (lower.endsWith(".hsp")) return "hsp";
1860
+ return undefined;
1861
+ };
1862
+ ZIP_NON_ENTRY_LIMITATION = "ZIP inventory lists central-directory entries only. Non-entry bytes, including an APK Signing Block before the central directory or a ZIP comment after it, are not occurrences.";
1863
+ })))();
1864
+ }
1865
+
1866
+ //#endregion
1867
+ //#region dist/contracts/toolOutputSchemaPrimitives.js
1868
+ var evidenceResultOf, lifecycleResultOf, requireOutputSchema, targetFormatSchema, targetKindSchema, providerCapabilityFacts, providerCapability, PROVIDER_EFFECT_NAMES, providerIdentity, providerCapabilityGroupFacts, providerCapabilityGroup, providerCapabilitySet, expandProviderCapabilities, processCoordinates, processLineageObservation, analysisRun, analysisActivity, providerOperationRequest, providerOperationHealth, providerRejectionCode, providerDiagnostics, providerAvailability, providerTargetSupport, clientFeatureNameSchema, clientFeatureAvailabilitySchema, toolAvailabilityMode, toolAvailabilityFacts, toolUnavailabilityReason, toolAvailability, TOOL_EFFECT_NAMES, TOOL_ANNOTATION_NAMES, toolAvailabilityGroupFacts, toolAvailabilityGroup, toolAvailabilityInventory, expandToolAvailability, sessionProvider, nullableText, addressList, addressedEntry, containingProcedureResolution, unavailable, availableMemoryPermissions, addressedValue, memoryRegionOutput, segmentOutput, procedureInfoOutput, symbolDiscoveryOutput, graphNode, functionDossierOutput;
1869
+ function init_toolOutputSchemaPrimitives() {
1870
+ return (init_toolOutputSchemaPrimitives = __esmMin((() => {
1871
+ init_hopperValues();
1872
+ init_analysisProfile();
1873
+ init_evidence();
1874
+ init_jsonValue();
1875
+ init_providerSelection();
1876
+ init_providerOperationHealth();
1877
+ init_errorSchemas();
1878
+ init_relationshipCoverage();
1879
+ init_zipPackageFormat();
1880
+ evidenceResultOf = (schema) => z.strictObject({
1881
+ ...evidenceSchema.shape,
1882
+ normalized_result: schema
1883
+ }).superRefine(validateAnalysisProfileProvider);
1884
+ lifecycleResultOf = (schema) => z.object({ result: schema });
1885
+ requireOutputSchema = (schemas, name) => {
1886
+ const schema = schemas[name];
1887
+ if (schema === undefined) throw new Error(`Missing output schema for ${name}`);
1888
+ return schema;
1889
+ };
1890
+ targetFormatSchema = z.enum([
1891
+ "hopper",
1892
+ "analysis-database",
1893
+ "mach-o",
1894
+ "mach-o-universal",
1895
+ "elf",
1896
+ "pe",
1897
+ "dos-mz",
1898
+ "dos-com",
1899
+ "raw-binary",
1900
+ ...ZIP_PACKAGE_FORMATS,
1901
+ "asar",
1902
+ "dmg",
1903
+ "pkg",
1904
+ "plist",
1905
+ "javascript",
1906
+ "source-map"
1907
+ ]);
1908
+ targetKindSchema = z.enum([
1909
+ "executable",
1910
+ "database",
1911
+ "archive",
1912
+ "artifact"
1913
+ ]);
1914
+ providerCapabilityFacts = {
1915
+ operation: z.string(),
1916
+ effects: z.object({
1917
+ mutates_artifact: z.boolean(),
1918
+ launches_process: z.boolean(),
1919
+ may_show_ui: z.boolean(),
1920
+ may_access_network: z.boolean(),
1921
+ may_write_filesystem: z.boolean(),
1922
+ changes_permissions: z.boolean(),
1923
+ requires_root: z.boolean()
1924
+ }),
1925
+ limitations: z.array(z.string())
1926
+ };
1927
+ providerCapability = z.discriminatedUnion("available", [z.object({
1928
+ ...providerCapabilityFacts,
1929
+ available: z.literal(true),
1930
+ reason: z.null(),
1931
+ availability_code: z.null()
1932
+ }), z.object({
1933
+ ...providerCapabilityFacts,
1934
+ available: z.literal(false),
1935
+ reason: z.string().nullable(),
1936
+ availability_code: z.enum(PROVIDER_REJECTION_CODES).nullable()
1937
+ })]);
1938
+ PROVIDER_EFFECT_NAMES = Object.keys(providerCapabilityFacts.effects.shape);
1939
+ providerIdentity = z.object({
1940
+ id: z.string(),
1941
+ name: z.string(),
1942
+ version: z.string().nullable()
1943
+ });
1944
+ providerCapabilityGroupFacts = {
1945
+ operations: z.array(z.string().min(1)).min(1),
1946
+ effects: z.array(providerCapabilityFacts.effects.keyof()),
1947
+ limitations: z.array(z.string())
1948
+ };
1949
+ providerCapabilityGroup = z.discriminatedUnion("available", [z.strictObject({
1950
+ ...providerCapabilityGroupFacts,
1951
+ available: z.literal(true),
1952
+ reason: z.null(),
1953
+ availability_code: z.null()
1954
+ }), z.strictObject({
1955
+ ...providerCapabilityGroupFacts,
1956
+ available: z.literal(false),
1957
+ reason: z.string().nullable(),
1958
+ availability_code: z.enum(PROVIDER_REJECTION_CODES).nullable()
1959
+ })]);
1960
+ providerCapabilitySet = z.strictObject({
1961
+ provider: providerIdentity,
1962
+ shared_limitations: z.array(z.string()),
1963
+ groups: z.array(providerCapabilityGroup)
1964
+ });
1965
+ expandProviderCapabilities = (sets) => sets.flatMap((set) => set.groups.flatMap((group) => group.operations.map((operation) => ({
1966
+ ...providerCapability.parse({
1967
+ operation,
1968
+ available: group.available,
1969
+ reason: group.reason,
1970
+ availability_code: group.availability_code,
1971
+ effects: Object.fromEntries(PROVIDER_EFFECT_NAMES.map((name) => [name, group.effects.includes(name)])),
1972
+ limitations: [...set.shared_limitations, ...group.limitations]
1973
+ }),
1974
+ provider: set.provider
1975
+ }))));
1976
+ processCoordinates = {
1977
+ launcher_pid: z.number().int().min(1),
1978
+ process_group_id: z.number().int().min(1)
1979
+ };
1980
+ processLineageObservation = z.discriminatedUnion("status", [z.object({
1981
+ status: z.literal("unavailable"),
1982
+ observed_at: z.iso.datetime(),
1983
+ ...processCoordinates,
1984
+ reason: z.string().min(1)
1985
+ }), z.object({
1986
+ status: z.literal("verified"),
1987
+ observed_at: z.iso.datetime(),
1988
+ ...processCoordinates,
1989
+ launcher_parent_pid: z.number().int().min(0),
1990
+ descendants: z.array(z.object({
1991
+ pid: z.number().int().min(1),
1992
+ parent_pid: z.number().int().min(0),
1993
+ process_group_id: z.number().int().min(1)
1994
+ }))
1995
+ })]);
1996
+ analysisRun = z.object({
1997
+ run_id: z.string().uuid(),
1998
+ process_lineage: z.discriminatedUnion("status", [z.object({ status: z.literal("not_observed") }), z.object({
1999
+ status: z.literal("snapshots"),
2000
+ snapshots: z.array(z.object({
2001
+ provider: providerIdentity,
2002
+ observation: processLineageObservation
2003
+ }))
2004
+ })])
2005
+ }).nullable();
2006
+ analysisActivity = z.object({
2007
+ status: z.enum([
2008
+ "not_observed",
2009
+ "idle",
2010
+ "busy"
2011
+ ]),
2012
+ providers: z.array(z.object({
2013
+ provider: providerIdentity,
2014
+ active: z.object({
2015
+ request_id: z.number().int().min(1),
2016
+ operation: z.string().min(1),
2017
+ elapsed_ms: z.number().int().min(0),
2018
+ caller_state: z.enum(["waiting", "cancelled"])
2019
+ }).nullable(),
2020
+ queued_requests: z.number().int().min(0)
2021
+ }))
2022
+ });
2023
+ providerOperationRequest = z.object({
2024
+ request_id: z.number().int().min(1),
2025
+ operation: z.string().min(1),
2026
+ stage: z.enum(PROVIDER_FAILURE_STAGES)
2027
+ });
2028
+ providerOperationHealth = z.object({
2029
+ state: z.enum(PROVIDER_OPERATION_STATES),
2030
+ stage: z.enum(PROVIDER_FAILURE_STAGES).nullable(),
2031
+ retry_action: z.enum(PROVIDER_RETRY_ACTIONS).nullable(),
2032
+ exit_code: z.number().int().nullable(),
2033
+ requests: z.array(providerOperationRequest)
2034
+ }).nullable();
2035
+ providerRejectionCode = z.enum(PROVIDER_REJECTION_CODES);
2036
+ providerDiagnostics = z.record(z.string(), jsonValueSchema);
2037
+ providerAvailability = z.discriminatedUnion("status", [
2038
+ z.object({
2039
+ status: z.literal("unknown"),
2040
+ code: z.null(),
2041
+ reason: z.string().min(1),
2042
+ diagnostics: providerDiagnostics
2043
+ }),
2044
+ z.object({
2045
+ status: z.literal("available"),
2046
+ code: z.null(),
2047
+ reason: z.null(),
2048
+ diagnostics: providerDiagnostics
2049
+ }),
2050
+ z.object({
2051
+ status: z.literal("unavailable"),
2052
+ code: providerRejectionCode,
2053
+ reason: z.string().min(1),
2054
+ diagnostics: providerDiagnostics
2055
+ })
2056
+ ]);
2057
+ providerTargetSupport = z.discriminatedUnion("status", [
2058
+ z.object({
2059
+ status: z.literal("unknown"),
2060
+ code: z.null(),
2061
+ reason: z.string().min(1),
2062
+ diagnostics: providerDiagnostics
2063
+ }),
2064
+ z.object({
2065
+ status: z.literal("supported"),
2066
+ code: z.null(),
2067
+ reason: z.null(),
2068
+ diagnostics: providerDiagnostics
2069
+ }),
2070
+ z.object({
2071
+ status: z.literal("unsupported"),
2072
+ code: z.enum([
2073
+ "target_kind_unsupported",
2074
+ "target_format_unsupported",
2075
+ "architecture_unsupported",
2076
+ "target_role_unsupported",
2077
+ "managed_target_unsupported"
2078
+ ]),
2079
+ reason: z.string().min(1),
2080
+ diagnostics: providerDiagnostics
2081
+ })
2082
+ ]);
2083
+ clientFeatureNameSchema = z.enum([
2084
+ "elicitation_form",
2085
+ "elicitation_url",
2086
+ "roots",
2087
+ "sampling"
2088
+ ]);
2089
+ clientFeatureAvailabilitySchema = z.object({
2090
+ elicitation_form: z.boolean(),
2091
+ elicitation_url: z.boolean(),
2092
+ roots: z.boolean(),
2093
+ sampling: z.boolean()
2094
+ });
2095
+ toolAvailabilityMode = z.discriminatedUnion("available", [z.object({
2096
+ name: z.string(),
2097
+ available: z.literal(true),
2098
+ missing_operations: z.array(z.string()).length(0),
2099
+ remediation: z.null()
2100
+ }), z.object({
2101
+ name: z.string(),
2102
+ available: z.literal(false),
2103
+ missing_operations: z.array(z.string()).min(1),
2104
+ remediation: z.string().nullable()
2105
+ })]);
2106
+ toolAvailabilityFacts = {
2107
+ name: z.string(),
2108
+ surface: z.string(),
2109
+ default_mode_available: z.boolean().optional(),
2110
+ modes: z.array(toolAvailabilityMode).optional(),
2111
+ client_requirements: z.object({
2112
+ required: z.array(clientFeatureNameSchema),
2113
+ optional: z.array(clientFeatureNameSchema),
2114
+ missing_required: z.array(clientFeatureNameSchema),
2115
+ missing_optional: z.array(clientFeatureNameSchema)
2116
+ }),
2117
+ effects: z.strictObject({
2118
+ mutatesTarget: z.boolean(),
2119
+ mutatesSession: z.boolean(),
2120
+ writesFilesystem: z.boolean(),
2121
+ launchesProcess: z.boolean(),
2122
+ accessesNetwork: z.boolean(),
2123
+ changesUiState: z.boolean(),
2124
+ mayDiscardData: z.boolean(),
2125
+ executesForeignCode: z.boolean(),
2126
+ mutatesDevice: z.boolean(),
2127
+ idempotent: z.boolean()
2128
+ }),
2129
+ annotations: z.object({
2130
+ read_only: z.boolean(),
2131
+ destructive: z.boolean(),
2132
+ idempotent: z.boolean(),
2133
+ open_world: z.boolean()
2134
+ })
2135
+ };
2136
+ toolUnavailabilityReason = z.enum([
2137
+ "client_capability_missing",
2138
+ "target_required",
2139
+ "provider_missing",
2140
+ "provider_unavailable",
2141
+ "target_unsupported",
2142
+ "unsupported_host"
2143
+ ]);
2144
+ toolAvailability = z.discriminatedUnion("available", [z.object({
2145
+ ...toolAvailabilityFacts,
2146
+ available: z.literal(true),
2147
+ reason: z.literal("available"),
2148
+ remediation: z.null()
2149
+ }), z.object({
2150
+ ...toolAvailabilityFacts,
2151
+ available: z.literal(false),
2152
+ reason: toolUnavailabilityReason,
2153
+ remediation: z.string().nullable()
2154
+ })]);
2155
+ TOOL_EFFECT_NAMES = Object.keys(toolAvailabilityFacts.effects.shape);
2156
+ TOOL_ANNOTATION_NAMES = Object.keys(toolAvailabilityFacts.annotations.shape);
2157
+ toolAvailabilityGroupFacts = {
2158
+ names: z.array(z.string().min(1)).min(1),
2159
+ surface: toolAvailabilityFacts.surface,
2160
+ default_mode_available: toolAvailabilityFacts.default_mode_available,
2161
+ modes: toolAvailabilityFacts.modes,
2162
+ client_requirements: toolAvailabilityFacts.client_requirements.optional(),
2163
+ effects: z.array(toolAvailabilityFacts.effects.keyof()),
2164
+ annotations: z.array(toolAvailabilityFacts.annotations.keyof())
2165
+ };
2166
+ toolAvailabilityGroup = z.discriminatedUnion("available", [z.strictObject({
2167
+ ...toolAvailabilityGroupFacts,
2168
+ available: z.literal(true),
2169
+ reason: z.literal("available"),
2170
+ remediation: z.null()
2171
+ }), z.strictObject({
2172
+ ...toolAvailabilityGroupFacts,
2173
+ available: z.literal(false),
2174
+ reason: toolUnavailabilityReason,
2175
+ remediation: z.string().nullable()
2176
+ })]);
2177
+ toolAvailabilityInventory = z.strictObject({
2178
+ client_requirements: toolAvailabilityFacts.client_requirements,
2179
+ groups: z.array(toolAvailabilityGroup)
2180
+ });
2181
+ expandToolAvailability = (inventory) => inventory.groups.flatMap((group) => group.names.map((name) => toolAvailability.parse({
2182
+ ...group,
2183
+ name,
2184
+ client_requirements: group.client_requirements ?? inventory.client_requirements,
2185
+ effects: Object.fromEntries(TOOL_EFFECT_NAMES.map((effect) => [effect, group.effects.includes(effect)])),
2186
+ annotations: Object.fromEntries(TOOL_ANNOTATION_NAMES.map((annotation) => [annotation, group.annotations.includes(annotation)]))
2187
+ })));
2188
+ sessionProvider = z.object({
2189
+ cleanup_pending: z.boolean(),
2190
+ capabilities: z.array(providerCapabilitySet),
2191
+ analysis_run: analysisRun,
2192
+ analysis_activity: analysisActivity,
2193
+ provider_operation_health: providerOperationHealth,
2194
+ analysis_provider_binding: z.object({
2195
+ provider: providerIdentity,
2196
+ selection_source: z.enum([
2197
+ "request",
2198
+ "environment",
2199
+ "auto-single-candidate"
2200
+ ]),
2201
+ analysis_profile: analysisProfileSchema
2202
+ }).nullable(),
2203
+ analysis_provider_candidates: z.array(z.object({
2204
+ provider: providerIdentity,
2205
+ availability: providerAvailability,
2206
+ target_support: providerTargetSupport,
2207
+ selected: z.boolean(),
2208
+ capabilities: z.array(providerCapabilitySet)
2209
+ })),
2210
+ tool_availability: toolAvailabilityInventory,
2211
+ client_features: z.object({
2212
+ elicitation_form: z.boolean(),
2213
+ elicitation_url: z.boolean(),
2214
+ roots: z.boolean(),
2215
+ sampling: z.boolean()
2216
+ }),
2217
+ server_identity: z.object({
2218
+ package: z.object({
2219
+ name: z.string(),
2220
+ version: z.string(),
2221
+ root_path: z.string(),
2222
+ build_commit: z.string().nullable()
2223
+ }),
2224
+ server: z.object({
2225
+ name: z.string(),
2226
+ version: z.string(),
2227
+ started_at: z.string(),
2228
+ command_path: z.string().nullable()
2229
+ }),
2230
+ sdk: z.object({
2231
+ server: z.string(),
2232
+ client_test: z.string(),
2233
+ core: z.string()
2234
+ }),
2235
+ negotiated_protocol_version: z.string().nullable(),
2236
+ client: z.object({
2237
+ name: z.string(),
2238
+ version: z.string()
2239
+ }).nullable(),
2240
+ skill: z.object({
2241
+ name: z.string(),
2242
+ expected_version: z.string()
2243
+ }),
2244
+ catalog: z.strictObject({
2245
+ counts: z.strictObject({
2246
+ cli_commands: z.number().int().min(0),
2247
+ mcp_tools: z.number().int().min(0),
2248
+ mcp_prompts: z.number().int().min(0)
2249
+ }),
2250
+ digests: z.strictObject({
2251
+ tools_sha256: z.string().regex(/^[a-f0-9]{64}$/u),
2252
+ prompts_sha256: z.string().regex(/^[a-f0-9]{64}$/u),
2253
+ combined_sha256: z.string().regex(/^[a-f0-9]{64}$/u)
2254
+ })
2255
+ }),
2256
+ protocol_features: z.object({
2257
+ progress: z.boolean(),
2258
+ cancellation: z.boolean(),
2259
+ elicitation: z.boolean()
2260
+ }),
2261
+ alignment: z.object({
2262
+ state: z.enum([
2263
+ "aligned",
2264
+ "mcp_server_restart_required",
2265
+ "unknown"
2266
+ ]),
2267
+ reasons: z.array(z.string()),
2268
+ remediation: z.string().nullable()
2269
+ })
2270
+ })
2271
+ }).passthrough();
2272
+ nullableText = z.string().nullable();
2273
+ addressList = z.array(z.string());
2274
+ addressedEntry = z.object({
2275
+ address: z.string(),
2276
+ name: z.string()
2277
+ });
2278
+ containingProcedureResolution = z.discriminatedUnion("found", [z.object({
2279
+ query_address: z.string(),
2280
+ found: z.literal(true),
2281
+ procedure: procedureIdentitySchema
2282
+ }), z.object({
2283
+ query_address: z.string(),
2284
+ found: z.literal(false),
2285
+ procedure: z.null(),
2286
+ reason: z.enum(["outside_segments", "not_in_procedure"])
2287
+ })]);
2288
+ unavailable = z.object({
2289
+ available: z.literal(false),
2290
+ reason: z.string()
2291
+ });
2292
+ availableMemoryPermissions = z.object({
2293
+ available: z.literal(true),
2294
+ source: z.literal("ghidra-memory-block")
2295
+ });
2296
+ addressedValue = z.object({
2297
+ address: z.string(),
2298
+ value: z.string(),
2299
+ symbol: z.object({
2300
+ primary: z.boolean(),
2301
+ dynamic: z.boolean(),
2302
+ external: z.boolean(),
2303
+ type: z.string(),
2304
+ source: z.enum([
2305
+ "default",
2306
+ "analysis",
2307
+ "ai",
2308
+ "imported",
2309
+ "user_defined"
2310
+ ])
2311
+ }).optional(),
2312
+ procedure: z.object({
2313
+ external: z.boolean(),
2314
+ thunk: z.boolean(),
2315
+ thunk_target: z.string().nullable()
2316
+ }).optional(),
2317
+ string: z.object({
2318
+ encoding: z.string(),
2319
+ termination: z.enum(["missing", "present_or_not_required"]),
2320
+ byte_length: z.number().int().min(0)
2321
+ }).optional()
2322
+ });
2323
+ memoryRegionOutput = z.object({
2324
+ name: z.string(),
2325
+ start: z.string(),
2326
+ end: z.string(),
2327
+ readable: z.boolean().nullable(),
2328
+ writable: z.boolean().nullable(),
2329
+ executable: z.boolean().nullable(),
2330
+ permissions: z.union([unavailable, availableMemoryPermissions]),
2331
+ provenance: z.enum(["hopper-public-python-api", "ghidra-memory-block"]),
2332
+ address_space: z.string().optional(),
2333
+ image_base: z.string().optional(),
2334
+ initialized: z.boolean().optional(),
2335
+ overlay: z.boolean().optional()
2336
+ });
2337
+ segmentOutput = evidenceResultOf(z.array(memoryRegionOutput.extend({ sections: z.array(memoryRegionOutput) })));
2338
+ procedureInfoOutput = evidenceResultOf(z.object({
2339
+ name: z.string(),
2340
+ entrypoint: z.string(),
2341
+ basicblock_count: z.number().int().min(0),
2342
+ length: z.number().min(0),
2343
+ signature: nullableText,
2344
+ locals: z.array(localVariableSchema),
2345
+ classification: procedureClassificationSchema.nullable(),
2346
+ body: functionBodySchema
2347
+ }));
2348
+ symbolDiscoveryOutput = (property) => evidenceResultOf(z.object({
2349
+ count: z.number().int().min(0),
2350
+ [property]: z.array(addressedEntry)
2351
+ }));
2352
+ graphNode = z.discriminatedUnion("status", [z.object({
2353
+ address: z.string(),
2354
+ status: z.literal("ok"),
2355
+ calls: z.array(z.string()),
2356
+ relationship_coverage: relationshipCoverageSchema,
2357
+ limitations: z.array(z.string()).optional()
2358
+ }), z.object({
2359
+ address: z.string(),
2360
+ status: z.literal("error"),
2361
+ error: analysisErrorProjectionSchema
2362
+ })]);
2363
+ functionDossierOutput = evidenceResultOf(functionDossierSchema);
2364
+ })))();
2365
+ }
2366
+
2367
+ //#endregion
2368
+ //#region dist/domain/apple/plistNumbers.js
2369
+ var UnknownPlistReal, parsePlistIntegerLiteral, incompletePlistNumberLimitation, createPlistNumberCollector, createPlistNumberProjection, parsePlistNonFiniteRealLiteral;
2370
+ function init_plistNumbers() {
2371
+ return (init_plistNumbers = __esmMin((() => {
2372
+ UnknownPlistReal = class {};
2373
+ parsePlistIntegerLiteral = (text) => {
2374
+ const match = /^([+-]?)(?:0[xX]([\da-fA-F]+)|(\d+))$/u.exec(text.trim());
2375
+ if (match === null) return undefined;
2376
+ const magnitude = BigInt(match[2] === undefined ? match[3] : `0x${match[2]}`);
2377
+ return match[1] === "-" ? -magnitude : magnitude;
2378
+ };
2379
+ incompletePlistNumberLimitation = "Property-list number metadata could not be completely observed; decoded numbers may lose integer precision and exact integer/real association is unavailable.";
2380
+ createPlistNumberCollector = () => {
2381
+ const integers = new Map();
2382
+ const reals = new Set();
2383
+ let unsafeIntegerLiterals = 0;
2384
+ let incompleteMetadata = false;
2385
+ return {
2386
+ integer: (exact) => {
2387
+ if (exact >= BigInt(Number.MIN_SAFE_INTEGER) && exact <= BigInt(Number.MAX_SAFE_INTEGER)) return;
2388
+ unsafeIntegerLiterals++;
2389
+ const rounded = Number(exact);
2390
+ integers.set(rounded, (integers.get(rounded) ?? new Set()).add(exact.toString()));
2391
+ },
2392
+ real: (value) => {
2393
+ reals.add(value);
2394
+ },
2395
+ markIncomplete: () => {
2396
+ incompleteMetadata = true;
2397
+ },
2398
+ result: (incomplete = false) => ({
2399
+ integers,
2400
+ reals,
2401
+ unsafeIntegerLiterals,
2402
+ incomplete: incomplete || incompleteMetadata
2403
+ })
2404
+ };
2405
+ };
2406
+ createPlistNumberProjection = (literals) => {
2407
+ let exactIntegerCount = 0;
2408
+ let ambiguousNumberCount = 0;
2409
+ const mapNumber = (item) => {
2410
+ if (Number.isSafeInteger(item) || !Number.isInteger(item)) return item;
2411
+ if (literals.incomplete) {
2412
+ ambiguousNumberCount += 1;
2413
+ return item;
2414
+ }
2415
+ const decimals = literals.integers.get(item);
2416
+ if (decimals === undefined) {
2417
+ if (!literals.reals.has(item)) ambiguousNumberCount += 1;
2418
+ return item;
2419
+ }
2420
+ const [decimal] = decimals;
2421
+ if (decimals.size !== 1 || decimal === undefined || literals.reals.has(item)) {
2422
+ ambiguousNumberCount += 1;
2423
+ return item;
2424
+ }
2425
+ exactIntegerCount += 1;
2426
+ return {
2427
+ $plist_type: "integer",
2428
+ decimal
2429
+ };
2430
+ };
2431
+ const map = (item) => {
2432
+ if (typeof item === "number") return mapNumber(item);
2433
+ if (Array.isArray(item)) return item.map(map);
2434
+ if (item !== null && typeof item === "object") {
2435
+ const keys = Object.keys(item);
2436
+ const marker = item[keys[0] ?? ""];
2437
+ const reference = keys.length === 1 && (keys[0] === "UID" || keys[0] === "CF$UID") && typeof marker === "number";
2438
+ if (reference) {
2439
+ if (typeof marker === "number" && !Number.isSafeInteger(marker) && (literals.integers.has(marker) || !literals.reals.has(marker))) ambiguousNumberCount += 1;
2440
+ return item;
2441
+ }
2442
+ return Object.fromEntries(Object.entries(item).map(([key, child]) => [key, map(child)]));
2443
+ }
2444
+ return item;
2445
+ };
2446
+ return {
2447
+ project: map,
2448
+ limitations: () => [
2449
+ ...literals.incomplete ? [incompletePlistNumberLimitation] : [],
2450
+ ...literals.unsafeIntegerLiterals === 0 ? [] : [`${String(literals.unsafeIntegerLiterals)} observed integer literal(s) in the original archive exceed the exact range of a JSON number. Decoded numbers may lose integer precision unless represented as { "$plist_type": "integer", "decimal": "<exact digits>" }; the original archive bytes retain those literals.`],
2451
+ ...exactIntegerCount === 0 ? [] : [`${String(exactIntegerCount)} unambiguous integer value(s) are reported with exact decimal text as { "$plist_type": "integer", "decimal": "<exact digits>" }.`],
2452
+ ...ambiguousNumberCount === 0 ? [] : [`${String(ambiguousNumberCount)} number(s) beyond the exact integer range remain as decoded because their source integer/real type or reference marker cannot be associated unambiguously; integer precision loss remains possible.`]
2453
+ ]
2454
+ };
2455
+ };
2456
+ parsePlistNonFiniteRealLiteral = (text) => {
2457
+ if (text.length < 3 || text.length > 9) return undefined;
2458
+ switch (text.toLowerCase()) {
2459
+ case "nan": return Number.NaN;
2460
+ case "+infinity":
2461
+ case "infinity":
2462
+ case "+inf":
2463
+ case "inf": return Number.POSITIVE_INFINITY;
2464
+ case "-infinity":
2465
+ case "-inf": return Number.NEGATIVE_INFINITY;
2466
+ default: return undefined;
2467
+ }
2468
+ };
2469
+ })))();
2470
+ }
2471
+
2472
+ //#endregion
2473
+ //#region dist/domain/apple/interfaceBuilderKeyedArchive.js
2474
+ var recordSchema, objectNode, connection, isUIKitRuntimeConnectionClass, interfaceBuilderConnectionFieldNames, parseInterfaceBuilderRecords, archiveUid, HIERARCHY_KEY, keyedArchiveTable, parseKeyedArchive, record, firstString, archivedObjectReference, firstObjectReference, classifyObject, classifyConnection, jsonSafeRecord;
2475
+ function init_interfaceBuilderKeyedArchive() {
2476
+ return (init_interfaceBuilderKeyedArchive = __esmMin((() => {
2477
+ init_jsonValue();
2478
+ recordSchema = z.record(z.string(), z.unknown());
2479
+ objectNode = z.strictObject({
2480
+ id: z.string().min(1),
2481
+ kind: z.enum([
2482
+ "view_controller",
2483
+ "view",
2484
+ "control",
2485
+ "constraint",
2486
+ "layout_guide",
2487
+ "resource",
2488
+ "placeholder",
2489
+ "external_object",
2490
+ "other"
2491
+ ]),
2492
+ class_name: z.string().nullable(),
2493
+ name: z.string().min(1),
2494
+ attributes: z.record(z.string(), jsonValueSchema)
2495
+ });
2496
+ connection = z.strictObject({
2497
+ id: z.string().min(1),
2498
+ kind: z.enum([
2499
+ "outlet",
2500
+ "action",
2501
+ "segue",
2502
+ "other"
2503
+ ]),
2504
+ source_id: z.string().min(1),
2505
+ destination_id: z.string().nullable(),
2506
+ label: z.string().nullable(),
2507
+ attributes: z.record(z.string(), jsonValueSchema)
2508
+ });
2509
+ isUIKitRuntimeConnectionClass = (className) => /^UIRuntime\w*Connection$/u.test(className);
2510
+ interfaceBuilderConnectionFieldNames = (className) => isUIKitRuntimeConnectionClass(className) ? {
2511
+ source: "UISource",
2512
+ destination: "UIDestination",
2513
+ label: "UILabel"
2514
+ } : {
2515
+ source: "NSSource",
2516
+ destination: "NSDestination",
2517
+ label: "NSLabel"
2518
+ };
2519
+ parseInterfaceBuilderRecords = (value) => {
2520
+ const root = record(value);
2521
+ const keyed = parseKeyedArchive(root);
2522
+ if (keyed !== null) return keyed;
2523
+ const objectsRaw = record(root["com.apple.ibtool.document.objects"]);
2524
+ const connectionsRaw = record(root["com.apple.ibtool.document.connections"]);
2525
+ const hierarchyRaw = root["com.apple.ibtool.document.hierarchy"];
2526
+ const classesRaw = record(root["com.apple.ibtool.document.classes"]);
2527
+ const objects = [];
2528
+ const connections = [];
2529
+ let omittedConnections = 0;
2530
+ const objectEntries = Object.entries(objectsRaw);
2531
+ for (const [id, raw] of objectEntries.slice(0, 2e4)) {
2532
+ const attributes = record(raw);
2533
+ const className = firstString(attributes["customClass"], attributes["class"], attributes["isa"]);
2534
+ const label = firstString(attributes["label"], attributes["title"], attributes["name"], className);
2535
+ const carried = new Set();
2536
+ if (attributes["customClass"] === className) carried.add("customClass");
2537
+ if (attributes["label"] === label) carried.add("label");
2538
+ if (attributes["objectID"] === id) carried.add("objectID");
2539
+ objects.push(objectNode.parse({
2540
+ id,
2541
+ kind: classifyObject(className),
2542
+ class_name: className,
2543
+ name: label ?? id,
2544
+ attributes: jsonSafeRecord(Object.fromEntries(Object.entries(attributes).filter(([key]) => !carried.has(key))))
2545
+ }));
2546
+ }
2547
+ for (const [sourceId, rawConnections] of Object.entries(connectionsRaw)) {
2548
+ if (!Array.isArray(rawConnections)) continue;
2549
+ for (const [index, raw] of rawConnections.entries()) {
2550
+ if (connections.length >= 4e4) {
2551
+ omittedConnections += rawConnections.length - index;
2552
+ break;
2553
+ }
2554
+ const item = record(raw);
2555
+ const type = firstString(item.type, item.connectionType) ?? "unknown";
2556
+ const destination = firstString(item["destination-id"], item.destinationId);
2557
+ const label = firstString(item.label, item.selector, item.identifier);
2558
+ connections.push(connection.parse({
2559
+ id: `${sourceId}:connection:${index}`,
2560
+ kind: classifyConnection(type),
2561
+ source_id: sourceId,
2562
+ destination_id: destination,
2563
+ label,
2564
+ attributes: jsonSafeRecord(item)
2565
+ }));
2566
+ }
2567
+ }
2568
+ return {
2569
+ objects,
2570
+ connections,
2571
+ hierarchy: Array.isArray(hierarchyRaw) ? hierarchyRaw : [],
2572
+ classes: classesRaw,
2573
+ objectCount: objectEntries.length,
2574
+ omittedObjects: Math.max(0, objectEntries.length - 2e4),
2575
+ omittedConnections,
2576
+ unresolvedConnections: 0,
2577
+ omittedHierarchyReferences: 0
2578
+ };
2579
+ };
2580
+ archiveUid = (value) => {
2581
+ if (typeof value !== "object" || value === null || Array.isArray(value)) return undefined;
2582
+ if (Object.keys(value).length !== 1) return undefined;
2583
+ const item = record(value);
2584
+ const marker = Object.hasOwn(item, "UID") ? item.UID : item["CF$UID"];
2585
+ return typeof marker === "number" && Number.isInteger(marker) ? marker : undefined;
2586
+ };
2587
+ HIERARCHY_KEY = /(?:subviews|contentview|childviewcontrollers|children|views)$/iu;
2588
+ keyedArchiveTable = (objectTable) => {
2589
+ const classNameOf = (value) => {
2590
+ const classReference = record(value).$class;
2591
+ const uid = archiveUid(classReference);
2592
+ return firstString(record(uid === undefined ? classReference : objectTable[uid]).$classname);
2593
+ };
2594
+ /** The string an archived string object holds, if it is one. */
2595
+ const archivedString = (target) => {
2596
+ if (typeof target === "string") return target;
2597
+ const text = record(target)["NS.string"];
2598
+ return typeof text === "string" && /^NS(?:Mutable)?String$/u.test(classNameOf(target) ?? "") ? text : undefined;
2599
+ };
2600
+ const text = (value) => {
2601
+ const uid = archiveUid(value);
2602
+ return firstString(uid === undefined ? value : archivedString(objectTable[uid]));
2603
+ };
2604
+ const authoredId = (item) => firstString(text(item.objectID), text(item["object-id"]));
2605
+ const reference = (uid) => {
2606
+ const target = uid === 0 ? null : objectTable[uid];
2607
+ if (target === undefined || target === null) return null;
2608
+ if (typeof target !== "object") return target;
2609
+ const string = archivedString(target);
2610
+ if (string !== undefined) return string;
2611
+ const objectId = authoredId(record(target));
2612
+ return {
2613
+ archiveUID: uid,
2614
+ ...objectId === null ? {} : { objectID: objectId },
2615
+ className: classNameOf(target)
2616
+ };
2617
+ };
2618
+ /** Resolve one object's own fields, leaving references to other objects as stubs. */
2619
+ const resolve = (value) => {
2620
+ const uid = archiveUid(value);
2621
+ if (uid !== undefined) return reference(uid);
2622
+ if (Array.isArray(value)) return value.map(resolve);
2623
+ if (typeof value !== "object" || value === null) return value;
2624
+ const output = {};
2625
+ for (const [key, child] of Object.entries(value)) {
2626
+ if (key === "$class") output.className = classNameOf(value);
2627
+ else output[key] = resolve(child);
2628
+ }
2629
+ return output;
2630
+ };
2631
+ const hierarchy = (start) => {
2632
+ let omittedReferences = 0;
2633
+ const visited = new Set();
2634
+ const root = [];
2635
+ const pending = [{
2636
+ value: start,
2637
+ output: root
2638
+ }];
2639
+ const appendNode = (item, uid, output) => {
2640
+ const objectId = firstString(authoredId(item), text(item.id), uid === undefined ? null : String(uid));
2641
+ if (objectId === null) {
2642
+ for (const [key, child] of Object.entries(item).reverse()) if (HIERARCHY_KEY.test(key)) pending.push({
2643
+ value: child,
2644
+ output
2645
+ });
2646
+ return;
2647
+ }
2648
+ const children = [];
2649
+ output.push({
2650
+ objectID: objectId,
2651
+ children
2652
+ });
2653
+ for (const [key, child] of Object.entries(item).reverse()) if (HIERARCHY_KEY.test(key)) pending.push({
2654
+ value: child,
2655
+ output: children
2656
+ });
2657
+ };
2658
+ while (pending.length > 0) {
2659
+ const entry = pending.pop();
2660
+ if (entry === undefined) break;
2661
+ const { value, output } = entry;
2662
+ const uid = archiveUid(value);
2663
+ if (uid !== undefined) {
2664
+ if (uid === 0) continue;
2665
+ const target = objectTable[uid];
2666
+ if (target === undefined) {
2667
+ omittedReferences += 1;
2668
+ continue;
2669
+ }
2670
+ if (visited.has(uid)) continue;
2671
+ visited.add(uid);
2672
+ if (Array.isArray(target)) {
2673
+ for (let index = target.length - 1; index >= 0; index -= 1) {
2674
+ const child = target[index];
2675
+ if (child !== undefined) pending.push({
2676
+ value: child,
2677
+ output
2678
+ });
2679
+ }
2680
+ continue;
2681
+ }
2682
+ if (typeof target !== "object" || target === null) continue;
2683
+ const item = record(target);
2684
+ if (archivedArrayClass(item.$class)) {
2685
+ const members = item["NS.objects"];
2686
+ if (Array.isArray(members)) for (let index = members.length - 1; index >= 0; index -= 1) {
2687
+ const child = members[index];
2688
+ if (child !== undefined) pending.push({
2689
+ value: child,
2690
+ output
2691
+ });
2692
+ }
2693
+ continue;
2694
+ }
2695
+ appendNode(item, uid, output);
2696
+ continue;
2697
+ }
2698
+ if (Array.isArray(value)) {
2699
+ for (let index = value.length - 1; index >= 0; index -= 1) {
2700
+ const child = value[index];
2701
+ if (child !== undefined) pending.push({
2702
+ value: child,
2703
+ output
2704
+ });
2705
+ }
2706
+ } else if (typeof value === "object" && value !== null) {
2707
+ appendNode(record(value), undefined, output);
2708
+ }
2709
+ }
2710
+ return {
2711
+ items: root,
2712
+ omittedReferences
2713
+ };
2714
+ };
2715
+ const archivedArrayClass = (classReference) => {
2716
+ const uid = archiveUid(classReference);
2717
+ const descriptor = record(uid === undefined ? classReference : objectTable[uid]);
2718
+ const classNames = Array.isArray(descriptor.$classes) ? descriptor.$classes.filter((name) => typeof name === "string") : [];
2719
+ return classNames.includes("NSArray") || classNames.includes("NSMutableArray");
2720
+ };
2721
+ return {
2722
+ resolve,
2723
+ hierarchy
2724
+ };
2725
+ };
2726
+ parseKeyedArchive = (root) => {
2727
+ if (root.$archiver !== "NSKeyedArchiver" || !Array.isArray(root.$objects)) return null;
2728
+ const objectTable = root.$objects;
2729
+ const { resolve, hierarchy: toHierarchy } = keyedArchiveTable(objectTable);
2730
+ const objects = [];
2731
+ const connections = [];
2732
+ let objectCount = 0;
2733
+ let omittedConnections = 0;
2734
+ let unresolvedConnections = 0;
2735
+ for (const [index, raw] of objectTable.entries()) {
2736
+ if (index === 0) continue;
2737
+ const resolved = record(resolve(raw));
2738
+ const className = firstString(resolved.className);
2739
+ if (className === null && !Object.hasOwn(record(raw), "$class")) continue;
2740
+ objectCount += 1;
2741
+ const fields = Object.fromEntries(Object.entries(resolved).filter(([key]) => key !== "className"));
2742
+ if (className === null) fields.$class = record(raw).$class;
2743
+ const authoredId = firstString(fields.objectID, fields["object-id"]);
2744
+ const objectId = authoredId ?? (typeof fields.archiveUID === "number" ? String(fields.archiveUID) : String(index));
2745
+ const kind = classifyObject(className);
2746
+ if (objects.length < 2e4) objects.push(objectNode.parse({
2747
+ id: objectId,
2748
+ kind,
2749
+ class_name: className,
2750
+ name: firstString(fields.label, fields.title, fields.identifier, fields.accessibilityLabel, className) ?? `object ${String(index)}`,
2751
+ attributes: jsonSafeRecord(fields)
2752
+ }));
2753
+ if (className !== null && /(?:Outlet|Connection|Segue|ActionConnection|ControlConnector)/iu.test(className)) {
2754
+ const controlAction = /ControlConnector/iu.test(className);
2755
+ const uiKit = isUIKitRuntimeConnectionClass(className);
2756
+ const connectionFields = interfaceBuilderConnectionFieldNames(className);
2757
+ const source = uiKit ? archivedObjectReference(fields[connectionFields.source]) : firstObjectReference(controlAction ? fields.destination : fields.source, archivedObjectReference(fields[connectionFields.source]), controlAction ? fields.to : fields.from, controlAction ? fields.target : fields.owner);
2758
+ if (source === null) {
2759
+ unresolvedConnections += 1;
2760
+ continue;
2761
+ }
2762
+ const kind = controlAction ? "action" : classifyConnection(className);
2763
+ const parsedConnection = connection.parse({
2764
+ id: `archive:${objectId}`,
2765
+ kind,
2766
+ source_id: source,
2767
+ destination_id: uiKit ? archivedObjectReference(fields[connectionFields.destination]) : firstObjectReference(controlAction ? fields.source : fields.destination, archivedObjectReference(fields[connectionFields.destination]), controlAction ? fields.from : fields.to, controlAction ? fields.owner : fields.target),
2768
+ label: uiKit ? firstString(fields[connectionFields.label]) : firstString(fields.label, fields[connectionFields.label], fields.selector, fields.identifier, fields.action),
2769
+ attributes: jsonSafeRecord(fields)
2770
+ });
2771
+ if (connections.length < 4e4) connections.push(parsedConnection);
2772
+ else omittedConnections += 1;
2773
+ }
2774
+ }
2775
+ const top = record(root.$top);
2776
+ const hierarchy = toHierarchy(top.root ?? top.UITopLevelObjectsKey);
2777
+ const classes = Object.fromEntries(objectTable.flatMap((raw) => {
2778
+ const item = record(raw);
2779
+ const name = firstString(item.$classname);
2780
+ return name === null ? [] : [[name, { superclasses: Array.isArray(item.$classes) ? item.$classes : [] }]];
2781
+ }));
2782
+ return {
2783
+ objects,
2784
+ connections,
2785
+ hierarchy: hierarchy.items,
2786
+ classes,
2787
+ objectCount,
2788
+ omittedObjects: Math.max(0, objectCount - 2e4),
2789
+ omittedConnections,
2790
+ unresolvedConnections,
2791
+ omittedHierarchyReferences: hierarchy.omittedReferences
2792
+ };
2793
+ };
2794
+ record = (value) => recordSchema.safeParse(value).data ?? {};
2795
+ firstString = (...values) => {
2796
+ for (const value of values) if (typeof value === "string" && value.length > 0) return value;
2797
+ return null;
2798
+ };
2799
+ archivedObjectReference = (value) => {
2800
+ const item = record(value);
2801
+ if (typeof item.archiveUID !== "number") return null;
2802
+ return firstString(item.objectID, item["object-id"]) ?? String(item.archiveUID);
2803
+ };
2804
+ firstObjectReference = (...values) => {
2805
+ for (const value of values) {
2806
+ const direct = firstString(value);
2807
+ if (direct !== null) return direct;
2808
+ const item = record(value);
2809
+ const objectId = firstString(item.objectID, item["object-id"], item.id, item.identifier, typeof item.archiveUID === "number" ? String(item.archiveUID) : null);
2810
+ if (objectId !== null) return objectId;
2811
+ }
2812
+ return null;
2813
+ };
2814
+ classifyObject = (className) => {
2815
+ const value = className?.toLowerCase() ?? "";
2816
+ if (value.includes("constraint")) return "constraint";
2817
+ if (value.includes("layoutguide")) return "layout_guide";
2818
+ if (value.includes("placeholder") || value.includes("firstresponder") || value === "uiproxyobject") return "placeholder";
2819
+ if (value.includes("image") || value.includes("color") || value.includes("font")) return "resource";
2820
+ if (value.includes("external")) return "external_object";
2821
+ if (value.includes("viewcontroller") || value.includes("windowcontroller")) return "view_controller";
2822
+ if (value.includes("button") || value.includes("control") || value.includes("textfield") || value.includes("slider") || value.includes("menuitem")) return "control";
2823
+ if (value.includes("view") || value.includes("window") || value.includes("cell")) return "view";
2824
+ return "other";
2825
+ };
2826
+ classifyConnection = (type) => {
2827
+ const value = type.toLowerCase();
2828
+ if (value.includes("outlet")) return "outlet";
2829
+ if (value.includes("action") || value.includes("eventconnection")) return "action";
2830
+ if (value.includes("segue")) return "segue";
2831
+ return "other";
2832
+ };
2833
+ jsonSafeRecord = (value) => Object.fromEntries(Object.entries(value).flatMap(([key, item]) => {
2834
+ try {
2835
+ const serialized = JSON.stringify(item);
2836
+ if (serialized === undefined) return [];
2837
+ const parsed = jsonValueSchema.safeParse(JSON.parse(serialized));
2838
+ return parsed.success ? [[key, parsed.data]] : [];
2839
+ } catch (cause) {
2840
+ void cause;
2841
+ return [];
2842
+ }
2843
+ }));
2844
+ })))();
2845
+ }
2846
+
2847
+ //#endregion
2848
+ //#region dist/domain/native/nativeInvestigationGraph.js
2849
+ var nativeInvestigationNodeKindSchema, nativeInvestigationNodeSchema, nativeInvestigationRelationSchema, nativeInvestigationEdgeSchema, nativeInvestigationCoverageSchema, nativeInvestigationGraphSchema, nativeInvestigationTraceLimitsSchema, nativeInvestigationTraceSchema, traceNativeInvestigationGraph, joinInterfaceBuilderDispatch;
2850
+ function init_nativeInvestigationGraph() {
2851
+ return (init_nativeInvestigationGraph = __esmMin((() => {
2852
+ init_objcSwiftMetadata();
2853
+ init_jsonValue();
2854
+ nativeInvestigationNodeKindSchema = z.enum([
2855
+ "storyboard",
2856
+ "scene",
2857
+ "view_controller",
2858
+ "view",
2859
+ "control",
2860
+ "constraint",
2861
+ "layout_guide",
2862
+ "resource",
2863
+ "placeholder",
2864
+ "external_object",
2865
+ "outlet",
2866
+ "action",
2867
+ "segue",
2868
+ "objc_class",
2869
+ "objc_selector",
2870
+ "swift_declaration",
2871
+ "swift_requirement",
2872
+ "dispatch_table",
2873
+ "dispatch_slot",
2874
+ "thunk",
2875
+ "function",
2876
+ "state_value",
2877
+ "global_value",
2878
+ "field",
2879
+ "branch_condition",
2880
+ "sink",
2881
+ "unknown"
2882
+ ]);
2883
+ nativeInvestigationNodeSchema = z.strictObject({
2884
+ id: z.string().min(1),
2885
+ kind: nativeInvestigationNodeKindSchema,
2886
+ name: z.string().min(1),
2887
+ location: nativeMetadataLocationSchema.nullable(),
2888
+ attributes: z.record(z.string(), jsonValueSchema),
2889
+ evidence: z.array(nativeMetadataEvidenceSchema)
2890
+ });
2891
+ nativeInvestigationRelationSchema = z.enum([
2892
+ "contains",
2893
+ "outlet_to",
2894
+ "target_action",
2895
+ "segue_to",
2896
+ "objc_dispatch",
2897
+ "swift_witness_dispatch",
2898
+ "swift_vtable_dispatch",
2899
+ "thunk_to",
2900
+ "direct_call",
2901
+ "indirect_call",
2902
+ "provider_call",
2903
+ "reads",
2904
+ "writes",
2905
+ "flows_to",
2906
+ "controls"
2907
+ ]);
2908
+ nativeInvestigationEdgeSchema = z.discriminatedUnion("resolution", [z.strictObject({
2909
+ id: z.string().min(1),
2910
+ from: z.string().min(1),
2911
+ to: z.string().min(1),
2912
+ relation: nativeInvestigationRelationSchema,
2913
+ resolution: z.enum([
2914
+ "observed",
2915
+ "inferred",
2916
+ "resolved",
2917
+ "ambiguous"
2918
+ ]),
2919
+ evidence: z.array(nativeMetadataEvidenceSchema).min(1),
2920
+ limitations: z.array(z.string())
2921
+ }), z.strictObject({
2922
+ id: z.string().min(1),
2923
+ from: z.string().min(1),
2924
+ to: z.null(),
2925
+ relation: nativeInvestigationRelationSchema,
2926
+ resolution: z.literal("unresolved"),
2927
+ reason: z.string().min(1),
2928
+ evidence: z.array(nativeMetadataEvidenceSchema),
2929
+ limitations: z.array(z.string())
2930
+ })]);
2931
+ nativeInvestigationCoverageSchema = z.strictObject({
2932
+ facet: z.string().min(1),
2933
+ status: z.enum([
2934
+ "complete",
2935
+ "partial",
2936
+ "unsupported",
2937
+ "not_requested"
2938
+ ]),
2939
+ reason: z.string().nullable(),
2940
+ examined: z.number().int().nonnegative(),
2941
+ omitted: z.number().int().nonnegative()
2942
+ });
2943
+ nativeInvestigationGraphSchema = z.strictObject({
2944
+ target_sha256: z.string().regex(/^[a-f0-9]{64}$/u),
2945
+ provider: z.strictObject({
2946
+ id: z.string().min(1),
2947
+ version: z.string().nullable(),
2948
+ tool_version: z.string().min(1)
2949
+ }),
2950
+ nodes: z.array(nativeInvestigationNodeSchema),
2951
+ edges: z.array(nativeInvestigationEdgeSchema),
2952
+ coverage: z.array(nativeInvestigationCoverageSchema),
2953
+ truncated: z.boolean()
2954
+ });
2955
+ nativeInvestigationTraceLimitsSchema = z.strictObject({
2956
+ max_depth: z.number().int().min(0).max(32).default(8),
2957
+ max_nodes: z.number().int().min(1).max(2e3).default(250),
2958
+ max_edges: z.number().int().min(1).max(5e3).default(500)
2959
+ });
2960
+ nativeInvestigationTraceSchema = z.strictObject({
2961
+ target_sha256: z.string().regex(/^[a-f0-9]{64}$/u),
2962
+ provider: nativeInvestigationGraphSchema.shape.provider,
2963
+ start: z.string().min(1),
2964
+ direction: z.enum(["forward", "backward"]),
2965
+ nodes: z.array(nativeInvestigationNodeSchema),
2966
+ edges: z.array(nativeInvestigationEdgeSchema),
2967
+ unresolved: z.array(nativeInvestigationEdgeSchema),
2968
+ reached_depth: z.number().int().nonnegative(),
2969
+ truncated: z.boolean(),
2970
+ reason: z.string().nullable(),
2971
+ coverage: z.array(nativeInvestigationCoverageSchema),
2972
+ limitations: z.array(z.string().min(1))
2973
+ });
2974
+ traceNativeInvestigationGraph = (graph, input) => {
2975
+ const start = graph.nodes.find(({ id }) => id === input.start);
2976
+ if (start === undefined) return {
2977
+ target_sha256: graph.target_sha256,
2978
+ provider: graph.provider,
2979
+ start: input.start,
2980
+ direction: input.direction ?? "forward",
2981
+ nodes: [],
2982
+ edges: [],
2983
+ unresolved: [],
2984
+ reached_depth: 0,
2985
+ truncated: false,
2986
+ reason: "start_node_missing",
2987
+ coverage: graph.coverage,
2988
+ limitations: ["The requested start node is absent from the supplied graph."]
2989
+ };
2990
+ const limits = nativeInvestigationTraceLimitsSchema.parse(input.limits ?? {});
2991
+ const direction = input.direction ?? "forward";
2992
+ const nodeById = new Map(graph.nodes.map((node) => [node.id, node]));
2993
+ const visited = new Set([start.id]);
2994
+ const selectedEdges = new Map();
2995
+ const unresolved = new Map();
2996
+ const queue = [{
2997
+ id: start.id,
2998
+ depth: 0
2999
+ }];
3000
+ let reachedDepth = 0;
3001
+ let truncated = false;
3002
+ let reason = null;
3003
+ const adjacency = new Map();
3004
+ for (const edge of graph.edges) {
3005
+ const nodeId = direction === "forward" ? edge.from : edge.to;
3006
+ if (nodeId === null) continue;
3007
+ const entries = adjacency.get(nodeId);
3008
+ if (entries === undefined) adjacency.set(nodeId, [edge]);
3009
+ else entries.push(edge);
3010
+ }
3011
+ while (queue.length > 0) {
3012
+ const current = queue.shift();
3013
+ if (current === undefined) break;
3014
+ const adjacent = adjacency.get(current.id) ?? [];
3015
+ for (const edge of adjacent) {
3016
+ if (selectedEdges.size + unresolved.size >= limits.max_edges) {
3017
+ truncated = true;
3018
+ reason = "max_edges_reached";
3019
+ break;
3020
+ }
3021
+ if (edge.resolution === "unresolved") {
3022
+ unresolved.set(edge.id, edge);
3023
+ continue;
3024
+ }
3025
+ const nextId = direction === "forward" ? edge.to : edge.from;
3026
+ const alreadyVisited = visited.has(nextId);
3027
+ if (!alreadyVisited && current.depth >= limits.max_depth) {
3028
+ truncated = true;
3029
+ reason ??= "max_depth_reached";
3030
+ continue;
3031
+ }
3032
+ if (!alreadyVisited && visited.size >= limits.max_nodes) {
3033
+ truncated = true;
3034
+ reason = "max_nodes_reached";
3035
+ break;
3036
+ }
3037
+ selectedEdges.set(edge.id, edge);
3038
+ if (alreadyVisited) continue;
3039
+ if (!nodeById.has(nextId)) {
3040
+ truncated = true;
3041
+ reason ??= "edge_target_missing_from_graph";
3042
+ continue;
3043
+ }
3044
+ visited.add(nextId);
3045
+ reachedDepth = Math.max(reachedDepth, current.depth + 1);
3046
+ queue.push({
3047
+ id: nextId,
3048
+ depth: current.depth + 1
3049
+ });
3050
+ }
3051
+ if (reason === "max_edges_reached" || reason === "max_nodes_reached") break;
3052
+ }
3053
+ return {
3054
+ target_sha256: graph.target_sha256,
3055
+ provider: graph.provider,
3056
+ start: start.id,
3057
+ direction,
3058
+ nodes: [...visited].flatMap((id) => {
3059
+ const node = nodeById.get(id);
3060
+ return node === undefined ? [] : [node];
3061
+ }),
3062
+ edges: [...selectedEdges.values()],
3063
+ unresolved: [...unresolved.values()],
3064
+ reached_depth: reachedDepth,
3065
+ truncated,
3066
+ reason,
3067
+ coverage: graph.coverage,
3068
+ limitations: ["Static analysis does not prove that an authored UI action is reachable or executed at runtime.", "Provider call graphs may omit unresolved indirect dispatch."]
3069
+ };
3070
+ };
3071
+ joinInterfaceBuilderDispatch = (graph, metadata) => {
3072
+ const nodes = new Map(graph.nodes.map((node) => [node.id, node]));
3073
+ const edges = [...graph.edges];
3074
+ const existingEdgeIds = new Set(edges.map(({ id }) => id));
3075
+ const selectorNodesByAction = new Map();
3076
+ for (const edge of edges) {
3077
+ if (edge.resolution === "observed" && edge.relation === "target_action" && nodes.get(edge.to)?.kind === "objc_selector") selectorNodesByAction.set(edge.from, edge.to);
3078
+ }
3079
+ let examined = 0;
3080
+ let resolved = 0;
3081
+ let inferredWithoutOwnerClass = 0;
3082
+ for (const action of nodes.values()) {
3083
+ if (action.kind !== "action") continue;
3084
+ const selector = action.attributes.selector;
3085
+ if (typeof selector !== "string" || selector.length === 0) continue;
3086
+ const selectorNodeId = selectorNodesByAction.get(action.id);
3087
+ if (selectorNodeId === undefined) continue;
3088
+ const destinationEdge = edges.find((edge) => edge.resolution === "observed" && edge.relation === "target_action" && edge.from === action.id && [
3089
+ "view_controller",
3090
+ "placeholder",
3091
+ "external_object"
3092
+ ].includes(nodes.get(edge.to)?.kind ?? ""));
3093
+ if (destinationEdge === undefined || destinationEdge.resolution !== "observed") continue;
3094
+ const owner = nodes.get(destinationEdge.to);
3095
+ examined += 1;
3096
+ const declaredClass = owner?.attributes.class_name;
3097
+ const className = typeof declaredClass === "string" && declaredClass.length > 0 && owner?.kind === "view_controller" ? declaredClass : null;
3098
+ const candidates = metadata.objc_dispatch_implementations.filter((candidate) => candidate.method_type === "instance" && candidate.selector === selector && (className === null || candidate.class_name.replace(/\([^)]*\)$/u, "") === className));
3099
+ const implementation = candidates.length === 1 ? candidates[0] : undefined;
3100
+ const edgeId = `dispatch:${selectorNodeId}:${className ?? owner?.id ?? "unknown"}:${selector}`;
3101
+ if (existingEdgeIds.has(edgeId)) continue;
3102
+ existingEdgeIds.add(edgeId);
3103
+ if (implementation === undefined || implementation.implementation_address === null) {
3104
+ edges.push({
3105
+ id: edgeId,
3106
+ from: selectorNodeId,
3107
+ to: null,
3108
+ relation: "objc_dispatch",
3109
+ resolution: "unresolved",
3110
+ reason: candidates.length > 1 ? "selector_has_multiple_candidate_implementations" : "implementation_not_resolved_from_binary_metadata_or_provider_symbols",
3111
+ evidence: [...action.evidence, ...candidates.flatMap(({ evidence }) => evidence)],
3112
+ limitations: ["A missing or ambiguous symbol match does not prove that the runtime implementation is absent."]
3113
+ });
3114
+ continue;
3115
+ }
3116
+ const functionId = `native:function:${implementation.implementation_address}`;
3117
+ if (!nodes.has(functionId)) nodes.set(functionId, {
3118
+ id: functionId,
3119
+ kind: "function",
3120
+ name: `${implementation.class_name} ${selector}`,
3121
+ location: {
3122
+ address: implementation.implementation_address,
3123
+ file_offset: implementation.location.file_offset
3124
+ },
3125
+ attributes: {
3126
+ class_name: implementation.class_name,
3127
+ selector,
3128
+ method_type: implementation.method_type
3129
+ },
3130
+ evidence: implementation.evidence
3131
+ });
3132
+ edges.push({
3133
+ id: edgeId,
3134
+ from: selectorNodeId,
3135
+ to: functionId,
3136
+ relation: "objc_dispatch",
3137
+ resolution: className !== null && implementation.decode.status === "decoded" ? "resolved" : "inferred",
3138
+ evidence: [...action.evidence, ...implementation.evidence],
3139
+ limitations: className === null ? ["The selector uniquely matches a encoded or symbolized method, but the Interface Builder receiver is an unresolved placeholder; runtime dispatch was not observed."] : ["The Interface Builder target and encoded or symbolized method agree on class and selector; runtime dispatch and dynamically supplied targets were not observed."]
3140
+ });
3141
+ resolved += 1;
3142
+ if (className === null) inferredWithoutOwnerClass += 1;
3143
+ }
3144
+ return nativeInvestigationGraphSchema.parse({
3145
+ ...graph,
3146
+ provider: {
3147
+ id: "rea-native-investigation",
3148
+ version: null,
3149
+ tool_version: "rea-native-investigation/1"
3150
+ },
3151
+ nodes: [...nodes.values()],
3152
+ edges,
3153
+ coverage: [...graph.coverage, {
3154
+ facet: "ui_to_objc_dispatch",
3155
+ status: examined === resolved && inferredWithoutOwnerClass === 0 ? "complete" : "partial",
3156
+ reason: examined === resolved && inferredWithoutOwnerClass === 0 ? null : inferredWithoutOwnerClass > 0 ? "some_action_receivers_remain_placeholders" : "some_action_implementations_not_resolved",
3157
+ examined,
3158
+ omitted: examined - resolved + inferredWithoutOwnerClass
3159
+ }]
3160
+ });
3161
+ };
3162
+ })))();
3163
+ }
3164
+
3165
+ //#endregion
3166
+ //#region dist/domain/apple/interfaceBuilderGraph.js
3167
+ var interfaceBuilderDocumentSchema, interfaceBuilderAnalysisSchema, buildInterfaceBuilderAnalysis, interfaceBuilderLimitsSchema;
3168
+ function init_interfaceBuilderGraph() {
3169
+ return (init_interfaceBuilderGraph = __esmMin((() => {
3170
+ init_plistNumbers();
3171
+ init_interfaceBuilderKeyedArchive();
3172
+ init_nativeInvestigationGraph();
3173
+ interfaceBuilderDocumentSchema = z.strictObject({
3174
+ relative_path: z.string().min(1),
3175
+ archive_sha256: z.string().regex(/^[a-f0-9]{64}$/u),
3176
+ document_kind: z.enum(["nib", "storyboard_scene"]),
3177
+ object_count: z.number().int().nonnegative(),
3178
+ connection_count: z.number().int().nonnegative(),
3179
+ hierarchy_complete: z.boolean()
3180
+ });
3181
+ interfaceBuilderAnalysisSchema = z.strictObject({
3182
+ target_sha256: z.string().regex(/^[a-f0-9]{64}$/u),
3183
+ documents: z.array(interfaceBuilderDocumentSchema).max(64),
3184
+ graph: nativeInvestigationGraphSchema,
3185
+ limitations: z.array(z.string())
3186
+ });
3187
+ buildInterfaceBuilderAnalysis = (input) => {
3188
+ const nodes = new Map();
3189
+ const edges = [];
3190
+ const coverage = [];
3191
+ const summaries = [];
3192
+ const numberLimitations = [];
3193
+ let truncated = false;
3194
+ let omittedObjects = 0;
3195
+ let omittedConnections = 0;
3196
+ let omittedGraphNodes = 0;
3197
+ let omittedHierarchyReferences = 0;
3198
+ for (const document of input.documents.slice(0, input.limits.max_documents)) {
3199
+ const parsed = parseInterfaceBuilderRecords(document.raw);
3200
+ const numbers = document.numberLiterals === undefined ? undefined : createPlistNumberProjection(document.numberLiterals);
3201
+ const prefix = `ib:${JSON.stringify(document.relativePath)}:`;
3202
+ const graphId = (kind, parts = []) => `${prefix}${kind}:${JSON.stringify(parts)}`;
3203
+ const rootId = `${prefix}root`;
3204
+ const objectIds = new Set(parsed.objects.map(({ id }) => id));
3205
+ const evidenceFor = (description) => [{
3206
+ kind: "interface_builder_resource",
3207
+ description,
3208
+ location: {
3209
+ address: null,
3210
+ file_offset: null
3211
+ },
3212
+ artifact_path: document.relativePath,
3213
+ artifact_sha256: document.archiveSha256
3214
+ }];
3215
+ const addNode = (node) => {
3216
+ if (nodes.has(node.id)) return true;
3217
+ if (nodes.size >= input.limits.max_objects) {
3218
+ truncated = true;
3219
+ omittedGraphNodes += 1;
3220
+ return false;
3221
+ }
3222
+ nodes.set(node.id, numbers === undefined ? node : {
3223
+ ...node,
3224
+ attributes: Object.fromEntries(Object.entries(node.attributes).map(([key, value]) => [key, numbers.project(value)]))
3225
+ });
3226
+ return true;
3227
+ };
3228
+ const rootNode = {
3229
+ id: rootId,
3230
+ kind: document.documentKind === "nib" ? "scene" : "storyboard",
3231
+ name: document.relativePath,
3232
+ location: null,
3233
+ attributes: { document_kind: document.documentKind },
3234
+ evidence: evidenceFor("compiled document")
3235
+ };
3236
+ addNode(rootNode);
3237
+ let documentObjectCount = 0;
3238
+ for (const object of parsed.objects.slice(0, input.limits.max_objects)) {
3239
+ const id = graphId("object", [object.id]);
3240
+ const kind = object.kind === "other" ? "unknown" : object.kind;
3241
+ if (!addNode({
3242
+ id,
3243
+ kind,
3244
+ name: object.name,
3245
+ location: null,
3246
+ attributes: {
3247
+ ...object.attributes,
3248
+ interface_builder_object_id: object.id,
3249
+ class_name: object.class_name
3250
+ },
3251
+ evidence: evidenceFor(`object ${object.id}`)
3252
+ })) {
3253
+ break;
3254
+ }
3255
+ documentObjectCount += 1;
3256
+ }
3257
+ let connectionEdgeCount = 0;
3258
+ let hierarchyEdgeCount = 0;
3259
+ let documentOmittedConnections = 0;
3260
+ let documentOmittedHierarchyEdges = 0;
3261
+ let hierarchyTruncated = false;
3262
+ const objectNodeId = (objectId) => graphId("object", [objectId]);
3263
+ const addEdge = (edge, isHierarchy) => {
3264
+ if (isHierarchy ? hierarchyEdgeCount >= input.limits.max_objects : connectionEdgeCount >= input.limits.max_connections * 3) {
3265
+ truncated = true;
3266
+ if (isHierarchy) {
3267
+ hierarchyTruncated = true;
3268
+ documentOmittedHierarchyEdges += 1;
3269
+ } else {
3270
+ omittedConnections += 1;
3271
+ documentOmittedConnections += 1;
3272
+ }
3273
+ return;
3274
+ }
3275
+ edges.push(edge);
3276
+ if (isHierarchy) hierarchyEdgeCount += 1;
3277
+ else connectionEdgeCount += 1;
3278
+ };
3279
+ const connect = (id, from, to, relation, description, reason) => {
3280
+ const isHierarchy = relation === "contains" && id.includes(":hierarchy:");
3281
+ if (!nodes.has(from)) {
3282
+ truncated = true;
3283
+ if (isHierarchy) {
3284
+ hierarchyTruncated = true;
3285
+ documentOmittedHierarchyEdges += 1;
3286
+ } else {
3287
+ omittedConnections += 1;
3288
+ documentOmittedConnections += 1;
3289
+ }
3290
+ return;
3291
+ }
3292
+ const evidence = evidenceFor(description);
3293
+ const unresolvedEndpoint = to !== null && !nodes.has(to);
3294
+ if (unresolvedEndpoint) {
3295
+ truncated = true;
3296
+ if (isHierarchy) hierarchyTruncated = true;
3297
+ }
3298
+ const edgeTo = unresolvedEndpoint ? null : to;
3299
+ const edgeReason = unresolvedEndpoint ? "endpoint_omitted_by_object_limit" : reason ?? "destination_unresolved";
3300
+ addEdge(edgeTo === null ? {
3301
+ id,
3302
+ from,
3303
+ to: null,
3304
+ relation,
3305
+ resolution: "unresolved",
3306
+ reason: edgeReason,
3307
+ evidence,
3308
+ limitations: []
3309
+ } : {
3310
+ id,
3311
+ from,
3312
+ to: edgeTo,
3313
+ relation,
3314
+ resolution: "observed",
3315
+ evidence,
3316
+ limitations: []
3317
+ }, isHierarchy);
3318
+ };
3319
+ let hierarchyCount = 0;
3320
+ let documentOmittedHierarchyNodes = 0;
3321
+ const visitHierarchy = (initial, initialParentId) => {
3322
+ const pending = [{
3323
+ value: initial,
3324
+ parentId: initialParentId
3325
+ }];
3326
+ while (pending.length > 0) {
3327
+ const entry = pending.pop();
3328
+ if (entry === undefined) break;
3329
+ const { value, parentId } = entry;
3330
+ if (Array.isArray(value)) {
3331
+ for (let index = value.length - 1; index >= 0; index -= 1) {
3332
+ const child = value[index];
3333
+ if (child !== undefined) pending.push({
3334
+ value: child,
3335
+ parentId
3336
+ });
3337
+ }
3338
+ continue;
3339
+ }
3340
+ if (typeof value !== "object" || value === null) continue;
3341
+ const item = record(value);
3342
+ const objectId = firstString(item.objectID, item["object-id"], item.id, typeof item.archiveUID === "number" ? String(item.archiveUID) : null);
3343
+ let nextParent = parentId;
3344
+ if (objectId !== null && hierarchyCount >= input.limits.max_objects) {
3345
+ truncated = true;
3346
+ hierarchyTruncated = true;
3347
+ documentOmittedHierarchyNodes += 1;
3348
+ } else if (objectId !== null) {
3349
+ const known = objectIds.has(objectId);
3350
+ const childId = known ? objectNodeId(objectId) : graphId("unknown", [objectId]);
3351
+ if (!known && !addNode({
3352
+ id: childId,
3353
+ kind: "unknown",
3354
+ name: firstString(item.label, item.name) ?? objectId,
3355
+ location: null,
3356
+ attributes: { interface_builder_object_id: objectId },
3357
+ evidence: evidenceFor(`hierarchy item ${objectId}`)
3358
+ })) hierarchyTruncated = true;
3359
+ connect(graphId("hierarchy", [parentId, childId]), parentId, childId, "contains", `hierarchy ${objectId}`);
3360
+ nextParent = childId;
3361
+ hierarchyCount += 1;
3362
+ }
3363
+ pending.push({
3364
+ value: item.children,
3365
+ parentId: nextParent
3366
+ });
3367
+ }
3368
+ };
3369
+ for (const hierarchy of parsed.hierarchy) visitHierarchy(hierarchy, rootId);
3370
+ for (const [index, item] of parsed.connections.slice(0, input.limits.max_connections).entries()) {
3371
+ const sourceId = objectNodeId(item.source_id);
3372
+ if (!nodes.has(sourceId)) addNode({
3373
+ id: sourceId,
3374
+ kind: "unknown",
3375
+ name: item.source_id,
3376
+ location: null,
3377
+ attributes: { interface_builder_object_id: item.source_id },
3378
+ evidence: evidenceFor(`connection source ${item.source_id}`)
3379
+ });
3380
+ const destinationId = item.destination_id === null ? null : objectNodeId(item.destination_id);
3381
+ if (item.kind === "action") {
3382
+ const actionId = graphId("action", [item.id]);
3383
+ const selectorId = item.label === null ? null : graphId("selector", [item.destination_id, item.label]);
3384
+ addNode({
3385
+ id: actionId,
3386
+ kind: "action",
3387
+ name: item.label ?? "unlabeled action",
3388
+ location: null,
3389
+ attributes: {
3390
+ selector: item.label,
3391
+ destination_id: item.destination_id,
3392
+ ...item.attributes
3393
+ },
3394
+ evidence: evidenceFor(`action ${item.id}`)
3395
+ });
3396
+ connect(graphId("action-edge", [item.id, "source"]), sourceId, actionId, "target_action", `action source ${item.source_id}`);
3397
+ if (selectorId !== null) {
3398
+ addNode({
3399
+ id: selectorId,
3400
+ kind: "objc_selector",
3401
+ name: item.label ?? "unknown selector",
3402
+ location: null,
3403
+ attributes: { destination_id: item.destination_id },
3404
+ evidence: evidenceFor(`selector ${item.label}`)
3405
+ });
3406
+ connect(graphId("action-edge", [item.id, "selector"]), actionId, selectorId, "target_action", `selector ${item.label}`);
3407
+ }
3408
+ if (destinationId === null || !nodes.has(destinationId)) connect(graphId("action-edge", [item.id, "destination"]), actionId, null, "target_action", `action destination ${item.destination_id ?? "missing"}`, "destination_object_missing_or_external");
3409
+ else connect(graphId("action-edge", [item.id, "destination"]), actionId, destinationId, "target_action", `action destination ${item.destination_id}`);
3410
+ } else if (item.kind === "outlet") {
3411
+ const outletId = graphId("outlet", [item.id]);
3412
+ addNode({
3413
+ id: outletId,
3414
+ kind: "outlet",
3415
+ name: item.label ?? item.id,
3416
+ location: null,
3417
+ attributes: item.attributes,
3418
+ evidence: evidenceFor(`outlet ${item.id}`)
3419
+ });
3420
+ connect(graphId("outlet-edge", [item.id, "source"]), sourceId, outletId, "contains", `outlet source ${item.source_id}`);
3421
+ if (destinationId === null || !nodes.has(destinationId)) connect(graphId("outlet-edge", [item.id, "destination"]), outletId, null, "outlet_to", `outlet ${item.label ?? item.id}`, "destination_object_missing_or_external");
3422
+ else connect(graphId("outlet-edge", [item.id, "destination"]), outletId, destinationId, "outlet_to", `outlet ${item.label ?? item.id}`);
3423
+ } else if (item.kind === "segue") {
3424
+ if (destinationId === null || !nodes.has(destinationId)) connect(graphId("segue", [index]), sourceId, null, "segue_to", `segue ${item.label ?? item.id}`, "destination_scene_missing");
3425
+ else connect(graphId("segue", [index]), sourceId, destinationId, "segue_to", `segue ${item.label ?? item.id}`);
3426
+ } else {
3427
+ connect(graphId("unknown-connection", [index]), sourceId, null, "contains", `connection type ${item.kind}`, "unsupported_connection_type");
3428
+ }
3429
+ }
3430
+ const objectsTruncated = parsed.omittedObjects > 0 || parsed.objects.length > documentObjectCount;
3431
+ const parserOmittedHierarchyReferences = parsed.omittedHierarchyReferences;
3432
+ const omittedSerializedHierarchyReferences = document.omittedSerializedHierarchyReferences ?? 0;
3433
+ omittedHierarchyReferences += parserOmittedHierarchyReferences + omittedSerializedHierarchyReferences;
3434
+ const parserOmittedConnections = parsed.omittedConnections;
3435
+ const connectionsTruncated = parserOmittedConnections > 0 || parsed.connections.length > input.limits.max_connections;
3436
+ const connectionsUnresolved = parsed.unresolvedConnections > 0;
3437
+ omittedObjects += parsed.omittedObjects + Math.max(0, parsed.objects.length - documentObjectCount);
3438
+ omittedConnections += Math.max(0, parsed.connections.length - input.limits.max_connections) + parserOmittedConnections + parsed.unresolvedConnections;
3439
+ const hierarchyStatus = parserOmittedHierarchyReferences > 0 || omittedSerializedHierarchyReferences > 0 ? "partial" : parsed.hierarchy.length === 0 ? "unsupported" : hierarchyTruncated ? "partial" : "complete";
3440
+ numberLimitations.push(...(numbers?.limitations() ?? []).map((note) => `${document.relativePath}: ${note}`));
3441
+ summaries.push({
3442
+ relative_path: document.relativePath,
3443
+ archive_sha256: document.archiveSha256,
3444
+ document_kind: document.documentKind,
3445
+ object_count: parsed.objectCount,
3446
+ connection_count: parsed.connections.length + parserOmittedConnections + parsed.unresolvedConnections,
3447
+ hierarchy_complete: hierarchyStatus === "complete"
3448
+ });
3449
+ coverage.push({
3450
+ facet: `objects:${document.relativePath}`,
3451
+ status: objectsTruncated ? "partial" : "complete",
3452
+ reason: objectsTruncated ? "object_limit_reached" : null,
3453
+ examined: documentObjectCount,
3454
+ omitted: parsed.omittedObjects + Math.max(0, parsed.objects.length - documentObjectCount)
3455
+ }, {
3456
+ facet: `connections:${document.relativePath}`,
3457
+ status: connectionsTruncated || documentOmittedConnections > 0 || connectionsUnresolved ? "partial" : "complete",
3458
+ reason: connectionsTruncated || documentOmittedConnections > 0 ? "connection_limit_reached" : connectionsUnresolved ? "connection_unresolved" : null,
3459
+ examined: Math.min(parsed.connections.length, input.limits.max_connections),
3460
+ omitted: Math.max(0, parsed.connections.length - input.limits.max_connections) + documentOmittedConnections + parserOmittedConnections + parsed.unresolvedConnections
3461
+ }, {
3462
+ facet: `hierarchy:${document.relativePath}`,
3463
+ status: hierarchyStatus,
3464
+ reason: parserOmittedHierarchyReferences > 0 ? "archive_hierarchy_references_missing" : omittedSerializedHierarchyReferences > 0 ? "serialized_view_hierarchy_incomplete" : parsed.hierarchy.length === 0 ? "archive_hierarchy_not_decoded" : hierarchyTruncated ? "graph_limit_reached" : null,
3465
+ examined: hierarchyCount,
3466
+ omitted: documentOmittedHierarchyNodes + documentOmittedHierarchyEdges + parserOmittedHierarchyReferences + omittedSerializedHierarchyReferences
3467
+ }, {
3468
+ facet: `classes:${document.relativePath}`,
3469
+ status: Object.keys(parsed.classes).length > 0 ? "complete" : "unsupported",
3470
+ reason: Object.keys(parsed.classes).length > 0 ? null : "archive_class_table_not_decoded",
3471
+ examined: Object.keys(parsed.classes).length,
3472
+ omitted: 0
3473
+ });
3474
+ }
3475
+ if (input.documents.length > input.limits.max_documents) {
3476
+ truncated = true;
3477
+ coverage.push({
3478
+ facet: "documents",
3479
+ status: "partial",
3480
+ reason: "document_limit_reached",
3481
+ examined: input.limits.max_documents,
3482
+ omitted: input.documents.length - input.limits.max_documents
3483
+ });
3484
+ }
3485
+ if (omittedGraphNodes > 0) coverage.push({
3486
+ facet: "graph_nodes",
3487
+ status: "partial",
3488
+ reason: "max_objects_reached",
3489
+ examined: nodes.size,
3490
+ omitted: omittedGraphNodes
3491
+ });
3492
+ return interfaceBuilderAnalysisSchema.parse({
3493
+ target_sha256: input.targetSha256,
3494
+ documents: summaries,
3495
+ graph: {
3496
+ target_sha256: input.targetSha256,
3497
+ provider: {
3498
+ id: "rea-artifact-graph",
3499
+ version: "1",
3500
+ tool_version: input.toolVersion
3501
+ },
3502
+ nodes: [...nodes.values()],
3503
+ edges,
3504
+ coverage,
3505
+ truncated: truncated || omittedObjects > 0 || omittedConnections > 0 || omittedHierarchyReferences > 0
3506
+ },
3507
+ limitations: [
3508
+ ...numberLimitations,
3509
+ "The graph reflects recognized Interface Builder archive fields and connections; omitted private or unrecognized archive fields remain unknown.",
3510
+ "A target-action selector is an Interface Builder observation and does not prove that the binary contains a matching implementation.",
3511
+ "Decoded constraints, runtime visibility, dynamic UI creation, and pixel geometry are not inferred from these archives."
3512
+ ]
3513
+ });
3514
+ };
3515
+ interfaceBuilderLimitsSchema = z.strictObject({
3516
+ max_documents: z.number().int().min(1).max(64).default(64),
3517
+ max_objects: z.number().int().min(1).max(2e4).default(2e4),
3518
+ max_connections: z.number().int().min(1).max(4e4).default(4e4),
3519
+ trace: nativeInvestigationTraceLimitsSchema.default({
3520
+ max_depth: 8,
3521
+ max_nodes: 250,
3522
+ max_edges: 500
3523
+ })
3524
+ });
3525
+ })))();
3526
+ }
3527
+
3528
+ //#endregion
3529
+ //#region dist/domain/native/nativeValueTrace.js
3530
+ var nativeValueTraceInputSchema, nativeValueTraceSchema;
3531
+ function init_nativeValueTrace() {
3532
+ return (init_nativeValueTrace = __esmMin((() => {
3533
+ init_nativeValueFlow();
3534
+ nativeValueTraceInputSchema = z.strictObject({
3535
+ procedure: z.string().min(1),
3536
+ max_depth: z.number().int().min(0).max(16).default(3),
3537
+ max_functions: z.number().int().min(1).max(64).default(16),
3538
+ max_call_sites: z.number().int().min(1).max(4096).default(256),
3539
+ max_nodes: z.number().int().min(1).max(2e4).default(5e3),
3540
+ max_edges: z.number().int().min(1).max(4e4).default(1e4),
3541
+ offset: z.number().int().min(0).default(0),
3542
+ limit: z.number().int().min(1).max(5e3).default(1e3)
3543
+ });
3544
+ nativeValueTraceSchema = z.strictObject({
3545
+ seed: z.string(),
3546
+ target_sha256: z.string(),
3547
+ nodes: z.array(z.strictObject({
3548
+ id: z.string(),
3549
+ procedure: z.string(),
3550
+ evidence_id: z.string(),
3551
+ kind: z.enum(["operation", "parameter"]),
3552
+ operation: nativePcodeOperationSchema.nullable(),
3553
+ parameter: z.strictObject({
3554
+ ordinal: z.number().int().nonnegative(),
3555
+ name: z.string(),
3556
+ data_type: z.string()
3557
+ }).nullable()
3558
+ })),
3559
+ edges: z.array(z.strictObject({
3560
+ source: z.string(),
3561
+ target: z.string(),
3562
+ input_index: z.number().int().nonnegative().nullable(),
3563
+ kind: z.enum([
3564
+ "def-use",
3565
+ "call",
3566
+ "parameter-use",
3567
+ "argument-binding",
3568
+ "return-binding"
3569
+ ]),
3570
+ status: z.enum([
3571
+ "derived",
3572
+ "direct",
3573
+ "resolved-indirect",
3574
+ "candidate"
3575
+ ]),
3576
+ evidence_id: z.string()
3577
+ })),
3578
+ procedures: z.array(z.strictObject({
3579
+ address: z.string(),
3580
+ depth: z.number().int().nonnegative(),
3581
+ evidence_id: z.string(),
3582
+ provider: z.string(),
3583
+ analysis_profile_digest: z.string().nullable()
3584
+ })),
3585
+ unknowns: z.array(z.strictObject({
3586
+ procedure: z.string(),
3587
+ address: z.string().nullable(),
3588
+ reason: z.string()
3589
+ })),
3590
+ total_nodes: z.number().int().nonnegative(),
3591
+ total_edges: z.number().int().nonnegative(),
3592
+ decompilations: z.number().int().nonnegative(),
3593
+ next_offset: z.number().int().nonnegative().nullable(),
3594
+ truncated: z.boolean(),
3595
+ limitations: z.array(z.string())
3596
+ });
3597
+ })))();
3598
+ }
3599
+
3600
+ //#endregion
3601
+ export { isZipPackageFormat as $, fixedTupleSchema as $t, addressList as A, init_addressCoordinate as At, nullableText as B, createImmutableEvidenceSteps as Bt, incompletePlistNumberLimitation as C, unresolvedCallSchema as Ct, PROVIDER_EFFECT_NAMES as D, nativeApiBoundarySchema as Dt, parsePlistNonFiniteRealLiteral as E, init_nativeApiBoundary as Et, expandProviderCapabilities as F, objcSwiftMetadataSchema as Ft, sessionProvider as G, isImmutableEvidence as Gt, providerCapabilitySet as H, evidenceSchema as Ht, functionDossierOutput as I, classifySwiftSymbol as It, targetKindSchema as J, rebindEvidenceSubjectTargetPath as Jt, symbolDiscoveryOutput as K, parseEvidence as Kt, graphNode as L, init_swiftSymbolClassification as Lt, addressedValue as M, inspectNativeDispatchMetadata as Mt, containingProcedureResolution as N, isAppleDispatchMetadataTarget as Nt, TOOL_ANNOTATION_NAMES as O, nativeApiInspectionResultSchema as Ot, evidenceResultOf as P, nativeDispatchMetadataResultSchema as Pt, init_zipPackageFormat as Q, relationshipCoverageSchema as Qt, init_toolOutputSchemaPrimitives as R, isSwiftMangledSymbolName as Rt, createPlistNumberProjection as S, referenceKindSchema as St, parsePlistIntegerLiteral as T, nativeValueFlowSchema as Tt, requireOutputSchema as U, immutableEvidence as Ut, procedureInfoOutput as V, evidenceLocationSchema as Vt, segmentOutput as W, init_evidence as Wt, ZIP_NON_ENTRY_LIMITATION as X, init_relationshipCoverage as Xt, toolAvailabilityInventory as Y, rebindEvidenceToTargetPath as Yt, hasZipSignature as Z, relationshipCoverageLimitations as Zt, init_interfaceBuilderKeyedArchive as _, parseRelatedAddresses as _t, init_interfaceBuilderGraph as a, init_analysisProfile as an, nativeInstructionInputSchema as at, UnknownPlistReal as b, projectBinaryOverview as bt, interfaceBuilderLimitsSchema as c, BINARY_ARCHITECTURES as cn, analysisStringSchema as ct, nativeInvestigationCoverageSchema as d, isElfMetadataArchitecture as dn, functionDossierSchema as dt, init_fixedTupleSchema as en, zipPackageFormatForPath as et, nativeInvestigationEdgeSchema as f, isMachOFormat as fn, functionInstructionWindowSchema as ft, traceNativeInvestigationGraph as g, parseListCount as gt, nativeInvestigationTraceSchema as h, init_providerSelection as hn, parseFunctionDossier as ht, buildInterfaceBuilderAnalysis as i, createAnalysisProfile as in, nativeCallTargetsSchema as it, addressedEntry as j, init_objcSwiftMetadata as jt, TOOL_EFFECT_NAMES as k, addressCoordinate as kt, init_nativeInvestigationGraph as l, RAW_ONLY_ARCHITECTURES as ln, functionBodyEntryAgrees as lt, nativeInvestigationNodeSchema as m, analysisProviderSelectorSchema as mn, parseDocuments as mt, nativeValueTraceInputSchema as n, analysisProfilesEqual as nn, init_errorSchemas as nt, interfaceBuilderAnalysisSchema as o, canonicalJsonDigestSteps as on, nativeInstructionSchema as ot, nativeInvestigationGraphSchema as p, analysisProviderIdSchema as pn, init_hopperValues as pt, targetFormatSchema as q, providerSchema as qt, nativeValueTraceSchema as r, committedProviderSchema as rn, init_nativeInstruction as rt, interfaceBuilderDocumentSchema as s, init_canonicalJsonDigestSteps as sn, analysisBookmarkSchema as st, init_nativeValueTrace as t, analysisProfileSchema as tn, analysisErrorProjectionSchema as tt, joinInterfaceBuilderDispatch as u, init_binaryTargetTypes as un, functionBodySchema as ut, interfaceBuilderConnectionFieldNames as v, parseSegments as vt, init_plistNumbers as w, init_nativeValueFlow as wt, createPlistNumberCollector as x, referenceEdgeSchema as xt, isUIKitRuntimeConnectionClass as y, procedureIdentitySchema as yt, lifecycleResultOf as z, createEvidence as zt };