reverseport 0.0.0-stage → 1.2.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 (1489) hide show
  1. package/DISCLAIMER.md +136 -0
  2. package/LICENSE +22 -0
  3. package/README.md +289 -2
  4. package/RESPONSIBLE-USE.md +22 -0
  5. package/THIRD_PARTY_NOTICES.md +130 -0
  6. package/bin/reverseport.mjs +136 -0
  7. package/bridge/android/ReaJadxBridge.java +270 -0
  8. package/bridge/ghidra/ReaGhidraAnalysisOptions.java +38 -0
  9. package/bridge/ghidra/ReaGhidraApplySeeds.java +151 -0
  10. package/bridge/ghidra/ReaGhidraBridge.java +3858 -0
  11. package/bridge/ghidra/ReaGhidraBundleActivator.java +14 -0
  12. package/bridge/ghidra/ReaGhidraExtensions.java +113 -0
  13. package/bridge/ghidra/ReaGhidraMipsSoftFloat.java +176 -0
  14. package/bridge/ghidra/ReaGhidraNoReturnFix.java +123 -0
  15. package/bridge/ghidra/ReaGhidraPrepareCom.java +32 -0
  16. package/bridge/ghidra/ReaGhidraPrepareRaw.java +36 -0
  17. package/bridge/hopper_bridge.py +1162 -0
  18. package/bridge/mitmproxy/capture.py +208 -0
  19. package/bridge/native/NativeUIChildren.swift +27 -0
  20. package/bridge/native/ReaNativeUI.swift +171 -0
  21. package/bridge/native/rea_lldb_tracer.py +839 -0
  22. package/bridge/process/ProcessRunTokenReader.swift +339 -0
  23. package/bridge/process/ProcessRunTokenReaderMain.swift +35 -0
  24. package/bridge/pwndbg/core_context.py +101 -0
  25. package/bridge/pwndbg/launch.py +39 -0
  26. package/bridge/pwndbg/launch_impl.py +34 -0
  27. package/bridge/pwntools/decoder_runtime.py +59 -0
  28. package/bridge/pwntools/layout.py +39 -0
  29. package/bridge/pwntools/layout_impl.py +314 -0
  30. package/bridge/pwntools/recorded_crash.py +39 -0
  31. package/bridge/pwntools/recorded_crash_impl.py +147 -0
  32. package/dist/adb/AdbConfiguration.js +88 -0
  33. package/dist/adb/AdbDeviceOutput.js +191 -0
  34. package/dist/adb/AdbDirectoryListing.js +80 -0
  35. package/dist/adb/AdbHostFileName.js +34 -0
  36. package/dist/adb/AdbProvider.js +1227 -0
  37. package/dist/adb/AdbShellOutput.js +267 -0
  38. package/dist/android/AndroidTargetSnapshot.js +118 -0
  39. package/dist/android/JadxAnalysis.js +201 -0
  40. package/dist/android/JadxConfiguration.js +320 -0
  41. package/dist/android/JadxMcpTransport.js +188 -0
  42. package/dist/android/JadxProtocol.js +115 -0
  43. package/dist/android/JadxProvider.js +337 -0
  44. package/dist/android/JadxRelease.js +27 -0
  45. package/dist/android/JadxSession.js +172 -0
  46. package/dist/apktool/ApktoolConfiguration.js +120 -0
  47. package/dist/apktool/ApktoolDecodeOutput.js +142 -0
  48. package/dist/apktool/ApktoolProvider.js +522 -0
  49. package/dist/application/AnalysisContextQueries.js +128 -0
  50. package/dist/application/AnalysisDocument.js +32 -0
  51. package/dist/application/AnalysisProvider.js +27 -0
  52. package/dist/application/AppBundleExecutable.js +192 -0
  53. package/dist/application/BinaryTargetResolver.js +356 -0
  54. package/dist/application/BrowserEvidence.js +127 -0
  55. package/dist/application/BrowserObservationPort.js +1 -0
  56. package/dist/application/BrowserObservationService.js +86 -0
  57. package/dist/application/BrowserScenarioCapturePort.js +1 -0
  58. package/dist/application/BrowserScenarioCaptureService.js +17 -0
  59. package/dist/application/BrowserScenarioEvidence.js +28 -0
  60. package/dist/application/CallPathTracing.js +182 -0
  61. package/dist/application/CapabilityClientRequirements.js +17 -0
  62. package/dist/application/CapabilityInventory.js +525 -0
  63. package/dist/application/ClientConfigPath.js +35 -0
  64. package/dist/application/ClientConfigurationDocument.js +1196 -0
  65. package/dist/application/ClientConfigurationFiles.js +91 -0
  66. package/dist/application/ClientRegistrationEnvironment.js +39 -0
  67. package/dist/application/ClientRegistrationIdentity.js +80 -0
  68. package/dist/application/ClientRegistrationStatus.js +233 -0
  69. package/dist/application/DirectAnalysis.js +371 -0
  70. package/dist/application/DirectAnalysisCleanup.js +71 -0
  71. package/dist/application/DirectAnalysisDependencies.js +1 -0
  72. package/dist/application/DirectAnalysisStatus.js +22 -0
  73. package/dist/application/Doctor.js +349 -0
  74. package/dist/application/DoctorDiagnostics.js +169 -0
  75. package/dist/application/DoctorProviderIds.js +2 -0
  76. package/dist/application/DoctorScope.js +113 -0
  77. package/dist/application/DshCordisPatch.js +342 -0
  78. package/dist/application/DshCordisYaml.js +155 -0
  79. package/dist/application/EnhancedLiteralTracing.js +88 -0
  80. package/dist/application/EnhancedToolTypes.js +4 -0
  81. package/dist/application/EnhancedTools.js +428 -0
  82. package/dist/application/EvidenceBundleCommands.js +70 -0
  83. package/dist/application/EvidenceBundleFiles.js +79 -0
  84. package/dist/application/EvidenceInputResolver.js +30 -0
  85. package/dist/application/FunctionAnalysisEvidence.js +34 -0
  86. package/dist/application/GeminiClientSettings.js +139 -0
  87. package/dist/application/HermesClientHome.js +115 -0
  88. package/dist/application/HopperDownload.js +39 -0
  89. package/dist/application/InventoryProjectionEvidence.js +44 -0
  90. package/dist/application/InvestigationProviders.js +130 -0
  91. package/dist/application/JsonFiles.js +225 -0
  92. package/dist/application/JsonInputFile.js +410 -0
  93. package/dist/application/LinuxHopper.js +232 -0
  94. package/dist/application/MacHopper.js +235 -0
  95. package/dist/application/MipsElfMetadata.js +175 -0
  96. package/dist/application/MipsElfSharedLoad.js +164 -0
  97. package/dist/application/OptionalObservationProviders.js +3 -0
  98. package/dist/application/ProcedureAddressResolution.js +11 -0
  99. package/dist/application/ProgressReporter.js +30 -0
  100. package/dist/application/ProviderOperationExecution.js +31 -0
  101. package/dist/application/RealHopperAssertions.js +135 -0
  102. package/dist/application/ReconstructionCoverageService.js +22 -0
  103. package/dist/application/ReconstructionObligationAuthority.js +72 -0
  104. package/dist/application/ReconstructionObligationCandidates.js +286 -0
  105. package/dist/application/ReconstructionObligationLedgerDiagnostics.js +47 -0
  106. package/dist/application/ReconstructionObligationLedgerEvaluation.js +238 -0
  107. package/dist/application/ReconstructionObligationLedgerProjection.js +15 -0
  108. package/dist/application/ReconstructionObligationLedgerService.js +54 -0
  109. package/dist/application/ReconstructionObligationOriginalCases.js +34 -0
  110. package/dist/application/ReconstructionObligationPolicies.js +132 -0
  111. package/dist/application/ReferenceSourceImport.js +200 -0
  112. package/dist/application/ReferenceSourceImportEntries.js +151 -0
  113. package/dist/application/ReferenceSourceImportPolicy.js +125 -0
  114. package/dist/application/ReferenceSourceImportTypes.js +47 -0
  115. package/dist/application/ReferenceSourceVcsAdapter.js +180 -0
  116. package/dist/application/RegularFileRead.js +120 -0
  117. package/dist/application/Setup.js +408 -0
  118. package/dist/application/SetupClientConfiguration.js +314 -0
  119. package/dist/application/SetupClients.js +44 -0
  120. package/dist/application/SetupHost.js +203 -0
  121. package/dist/application/SetupInstallFailure.js +77 -0
  122. package/dist/application/SetupPlan.js +210 -0
  123. package/dist/application/SetupRegistrationEnvironment.js +5 -0
  124. package/dist/application/SetupSkill.js +248 -0
  125. package/dist/application/SetupTypes.js +17 -0
  126. package/dist/application/SupportedClients.js +469 -0
  127. package/dist/application/TypeScriptEmittedSourceCandidates.js +23 -0
  128. package/dist/application/Uninstall.js +452 -0
  129. package/dist/application/UninstallFailure.js +14 -0
  130. package/dist/application/Update.js +137 -0
  131. package/dist/application/UpdateFailure.js +17 -0
  132. package/dist/application/UpdateMaintenance.js +111 -0
  133. package/dist/application/UpdateRuntime.js +264 -0
  134. package/dist/application/Utf8JsonInput.js +71 -0
  135. package/dist/application/ValidateSelectedWebScript.js +27 -0
  136. package/dist/application/WebModulePorts.js +1 -0
  137. package/dist/application/WebModuleTraceService.js +214 -0
  138. package/dist/application/WebNetworkCapturePort.js +1 -0
  139. package/dist/application/WebNetworkCaptureService.js +134 -0
  140. package/dist/application/WebRuntimePort.js +1 -0
  141. package/dist/application/WebRuntimeService.js +75 -0
  142. package/dist/application/WebScriptArtifactPort.js +1 -0
  143. package/dist/application/WebScriptExportService.js +214 -0
  144. package/dist/application/WebSourceLocationPorts.js +1 -0
  145. package/dist/application/WebSourceLocationService.js +177 -0
  146. package/dist/application/WindowsCapabilities.js +87 -0
  147. package/dist/application/WorkflowEvidence.js +105 -0
  148. package/dist/application/XrefsAddressResolution.js +45 -0
  149. package/dist/application/adb/AdbDeviceAnalysisPort.js +1 -0
  150. package/dist/application/adb/AdbDeviceAnalysisService.js +13 -0
  151. package/dist/application/analysisView/AnalysisViewService.js +133 -0
  152. package/dist/application/android/AndroidAnalysisPort.js +1 -0
  153. package/dist/application/android/AndroidAnalysisService.js +37 -0
  154. package/dist/application/android/AndroidApplicationService.js +17 -0
  155. package/dist/application/android/AndroidSearchEvidenceSummary.js +100 -0
  156. package/dist/application/apktool/ApktoolResourceAnalysisPort.js +1 -0
  157. package/dist/application/apktool/ApktoolResourceAnalysisService.js +13 -0
  158. package/dist/application/apple/AppleApplicationService.js +17 -0
  159. package/dist/application/artifacts/ArtifactExtractionDestination.js +5 -0
  160. package/dist/application/binary/AbortablePromise.js +28 -0
  161. package/dist/application/binary/AnalysisClientCleanup.js +15 -0
  162. package/dist/application/binary/AnalysisProviderEvaluation.js +77 -0
  163. package/dist/application/binary/AnalysisProviderRegistry.js +235 -0
  164. package/dist/application/binary/AnalysisSnapshotCache.js +232 -0
  165. package/dist/application/binary/AnalysisSnapshotFiles.js +96 -0
  166. package/dist/application/binary/BinarySession.js +605 -0
  167. package/dist/application/binary/BinarySessionComposition.js +9 -0
  168. package/dist/application/binary/BinarySessionExecution.js +66 -0
  169. package/dist/application/binary/BinarySessionOpen.js +66 -0
  170. package/dist/application/binary/BinarySessionPort.js +1 -0
  171. package/dist/application/binary/BinarySessionRecords.js +216 -0
  172. package/dist/application/binary/BinarySessionStatus.js +219 -0
  173. package/dist/application/binary/BinaryTargetSummary.js +9 -0
  174. package/dist/application/binary/CompositeProvider.js +103 -0
  175. package/dist/application/binary/LazyAnalysisProvider.js +105 -0
  176. package/dist/application/binary/SessionProviderRouter.js +118 -0
  177. package/dist/application/binaryDiagnostics/BinaryLayoutPort.js +1 -0
  178. package/dist/application/binaryDiagnostics/BinaryLayoutService.js +60 -0
  179. package/dist/application/binaryDiagnostics/PeResourcesPort.js +1 -0
  180. package/dist/application/binaryDiagnostics/PeResourcesService.js +111 -0
  181. package/dist/application/binaryDiagnostics/RecordedCrashPort.js +1 -0
  182. package/dist/application/binaryDiagnostics/RecordedCrashService.js +63 -0
  183. package/dist/application/evm/EvmInterfacePort.js +1 -0
  184. package/dist/application/evm/EvmInterfaceService.js +67 -0
  185. package/dist/application/firmware/FirmwareAnalysisPort.js +1 -0
  186. package/dist/application/firmware/FirmwareAnalysisService.js +38 -0
  187. package/dist/application/go/GoBinaryPort.js +1 -0
  188. package/dist/application/go/GoBinaryService.js +77 -0
  189. package/dist/application/harmony/HarmonyApplicationService.js +17 -0
  190. package/dist/application/homebrew.js +67 -0
  191. package/dist/application/investigation/EvidenceLedger.js +338 -0
  192. package/dist/application/investigation/InspectEvidenceBundle.js +18 -0
  193. package/dist/application/investigation/InvestigationRecordPort.js +1 -0
  194. package/dist/application/investigation/InvestigationRecords.js +65 -0
  195. package/dist/application/investigation/UnknownEvidence.js +37 -0
  196. package/dist/application/javascript/ElectronActiveEvidence.js +29 -0
  197. package/dist/application/javascript/ElectronActiveObservationPort.js +1 -0
  198. package/dist/application/javascript/ElectronActiveObservationService.js +51 -0
  199. package/dist/application/javascript/ElectronBoundaryAnalysis.js +118 -0
  200. package/dist/application/javascript/ElectronBoundaryGraph.js +11 -0
  201. package/dist/application/javascript/ElectronBoundaryGraphCallPaths.js +134 -0
  202. package/dist/application/javascript/ElectronBoundaryGraphContext.js +63 -0
  203. package/dist/application/javascript/ElectronBoundaryGraphIpc.js +261 -0
  204. package/dist/application/javascript/ElectronBoundaryGraphNative.js +102 -0
  205. package/dist/application/javascript/ElectronBoundaryGraphWindows.js +224 -0
  206. package/dist/application/javascript/ElectronEvidence.js +37 -0
  207. package/dist/application/javascript/ElectronObservationPort.js +1 -0
  208. package/dist/application/javascript/ElectronObservationService.js +26 -0
  209. package/dist/application/javascript/JavaScriptAnalysisControl.js +34 -0
  210. package/dist/application/javascript/JavaScriptApplicationEvidence.js +49 -0
  211. package/dist/application/javascript/JavaScriptApplicationEvidenceGraph.js +173 -0
  212. package/dist/application/javascript/JavaScriptApplicationService.js +170 -0
  213. package/dist/application/javascript/JavaScriptApplicationWorkflowEvidence.js +67 -0
  214. package/dist/application/javascript/JavaScriptApplicationWorkflowService.js +194 -0
  215. package/dist/application/javascript/JavaScriptArtifactAnalysis.js +431 -0
  216. package/dist/application/javascript/JavaScriptArtifactAnalysisTypes.js +1 -0
  217. package/dist/application/javascript/JavaScriptArtifactGraphAccumulator.js +89 -0
  218. package/dist/application/javascript/JavaScriptArtifactGraphBuilder.js +193 -0
  219. package/dist/application/javascript/JavaScriptArtifactGraphBundlers.js +229 -0
  220. package/dist/application/javascript/JavaScriptArtifactGraphContext.js +194 -0
  221. package/dist/application/javascript/JavaScriptArtifactGraphDocuments.js +160 -0
  222. package/dist/application/javascript/JavaScriptArtifactGraphEvidence.js +85 -0
  223. package/dist/application/javascript/JavaScriptArtifactGraphFindings.js +349 -0
  224. package/dist/application/javascript/JavaScriptArtifactGraphStructure.js +424 -0
  225. package/dist/application/javascript/JavaScriptArtifactPathResolution.js +836 -0
  226. package/dist/application/javascript/JavaScriptArtifactReconstruction.js +245 -0
  227. package/dist/application/javascript/JavaScriptArtifactReconstructionInput.js +12 -0
  228. package/dist/application/javascript/JavaScriptJsonModules.js +40 -0
  229. package/dist/application/javascript/JavaScriptModuleRelationships.js +304 -0
  230. package/dist/application/javascript/JavaScriptRecoveryPort.js +1 -0
  231. package/dist/application/javascript/JavaScriptRecoveryService.js +77 -0
  232. package/dist/application/javascript/JavaScriptRuntimeObservationEvidence.js +36 -0
  233. package/dist/application/javascript/JavaScriptRuntimeObservationPort.js +1 -0
  234. package/dist/application/javascript/JavaScriptRuntimeObservationService.js +28 -0
  235. package/dist/application/javascript/JavaScriptRuntimeReconciliationEvidence.js +24 -0
  236. package/dist/application/javascript/JavaScriptRuntimeReconciliationService.js +52 -0
  237. package/dist/application/javascript/JavaScriptSemanticGraphAsyncProjection.js +163 -0
  238. package/dist/application/javascript/JavaScriptSemanticGraphBuilder.js +527 -0
  239. package/dist/application/javascript/JavaScriptSemanticGraphChildProcessProjection.js +165 -0
  240. package/dist/application/javascript/JavaScriptSemanticGraphConstruction.js +156 -0
  241. package/dist/application/javascript/JavaScriptSemanticGraphDataProjection.js +216 -0
  242. package/dist/application/javascript/JavaScriptSemanticGraphElectronProjection.js +61 -0
  243. package/dist/application/javascript/JavaScriptSemanticGraphEvidence.js +86 -0
  244. package/dist/application/javascript/JavaScriptSemanticGraphFingerprintProjection.js +25 -0
  245. package/dist/application/javascript/JavaScriptSemanticGraphFlowProjection.js +183 -0
  246. package/dist/application/javascript/JavaScriptSemanticGraphObjectProjection.js +112 -0
  247. package/dist/application/javascript/JavaScriptSemanticGraphProjection.js +144 -0
  248. package/dist/application/javascript/JavaScriptSemanticGraphResourceProjection.js +58 -0
  249. package/dist/application/javascript/JavaScriptSemanticGraphValueProjection.js +136 -0
  250. package/dist/application/javascript/JavaScriptSemanticTraceService.js +41 -0
  251. package/dist/application/jeb/JebAnalysisPort.js +1 -0
  252. package/dist/application/jeb/JebAnalysisService.js +13 -0
  253. package/dist/application/managed/ManagedApplicationGraphService.js +55 -0
  254. package/dist/application/managed/ManagedMemberComparisonService.js +125 -0
  255. package/dist/application/managed/ManagedNativeVerificationService.js +40 -0
  256. package/dist/application/managed/ManagedReconstructionService.js +59 -0
  257. package/dist/application/native/NativeApiInspection.js +77 -0
  258. package/dist/application/native/NativeCallRoutes.js +73 -0
  259. package/dist/application/native/NativeDispatchMetadataInspection.js +33 -0
  260. package/dist/application/native/NativeUiActionTrace.js +427 -0
  261. package/dist/application/native/NativeValueTrace.js +340 -0
  262. package/dist/application/process/ProcessCli.js +190 -0
  263. package/dist/application/process/ProcessEvidence.js +30 -0
  264. package/dist/application/wasm/WasmArtifactPort.js +1 -0
  265. package/dist/application/wasm/WasmArtifactService.js +72 -0
  266. package/dist/application/workflowInputError.js +18 -0
  267. package/dist/artifacts/ArtifactHash.js +29 -0
  268. package/dist/artifacts/ArtifactPaths.js +167 -0
  269. package/dist/artifacts/ArtifactProvider.js +280 -0
  270. package/dist/artifacts/ArtifactProviderMetadata.js +34 -0
  271. package/dist/artifacts/ArtifactReader.js +77 -0
  272. package/dist/artifacts/ArtifactResourceScope.js +103 -0
  273. package/dist/artifacts/AsarArtifactReader.js +518 -0
  274. package/dist/artifacts/AsarEntryStream.js +76 -0
  275. package/dist/artifacts/AsarHeader.js +24 -0
  276. package/dist/artifacts/DirectoryArtifactReader.js +292 -0
  277. package/dist/artifacts/MachOSliceArtifactReader.js +342 -0
  278. package/dist/artifacts/NativeDmgArtifactReader.js +508 -0
  279. package/dist/artifacts/NativeDmgOwnership.js +109 -0
  280. package/dist/artifacts/SafeOutputTree.js +394 -0
  281. package/dist/artifacts/SafeOutputTreeCleanup.js +45 -0
  282. package/dist/artifacts/SafeOutputTreeCreationFailure.js +20 -0
  283. package/dist/artifacts/SafeOutputTreeIdentity.js +42 -0
  284. package/dist/artifacts/SafeOutputTreeReadback.js +33 -0
  285. package/dist/artifacts/StreamBytes.js +10 -0
  286. package/dist/artifacts/ZipArtifactReader.js +222 -0
  287. package/dist/artifacts/apple/AppleAssetCatalogAnalysis.js +190 -0
  288. package/dist/artifacts/apple/DylibResolutionReader.js +269 -0
  289. package/dist/artifacts/apple/InterfaceBuilderAnalysis.js +500 -0
  290. package/dist/artifacts/apple/InterfaceBuilderDecodeBudget.js +233 -0
  291. package/dist/artifacts/apple/KeyedArchiveReader.js +163 -0
  292. package/dist/artifacts/apple/MachoLoadCommandReader.js +393 -0
  293. package/dist/artifacts/apple/NibArchive.js +338 -0
  294. package/dist/artifacts/apple/NibViewHierarchy.js +157 -0
  295. package/dist/artifacts/apple/PlistNumberLiterals.js +164 -0
  296. package/dist/artifacts/extraction/ArtifactExtraction.js +253 -0
  297. package/dist/artifacts/hostExecutableMarking.js +16 -0
  298. package/dist/artifacts/inventory/ArtifactGraphConstruction.js +343 -0
  299. package/dist/artifacts/inventory/ArtifactInventory.js +16 -0
  300. package/dist/artifacts/inventory/classify.js +94 -0
  301. package/dist/artifacts/inventory/hashStableRootArtifact.js +70 -0
  302. package/dist/artifacts/inventory/reader.js +40 -0
  303. package/dist/artifacts/inventory/scanCanonical.js +213 -0
  304. package/dist/artifacts/inventory/scanReader.js +169 -0
  305. package/dist/artifacts/inventory/types.js +3 -0
  306. package/dist/artifacts/javascript/JavaScriptArtifactFiles.js +317 -0
  307. package/dist/artifacts/javascript/JavaScriptArtifactReader.js +6 -0
  308. package/dist/artifacts/javascript/JavaScriptSourceAnalysis.js +3 -0
  309. package/dist/artifacts/readStableArtifact.js +68 -0
  310. package/dist/browser/BrowserProcessStartup.js +89 -0
  311. package/dist/browser/BrowserScenarioPartialObservation.js +127 -0
  312. package/dist/browser/BrowserScenarioSecrets.js +137 -0
  313. package/dist/browser/BrowserScenarioSessionPort.js +1 -0
  314. package/dist/browser/CdpAuthorizedMainFrame.js +16 -0
  315. package/dist/browser/CdpAuthorizedTarget.js +22 -0
  316. package/dist/browser/CdpBrowserProvider.js +276 -0
  317. package/dist/browser/CdpCaptureCompleteness.js +92 -0
  318. package/dist/browser/CdpCaptureDocuments.js +375 -0
  319. package/dist/browser/CdpCaptureDomSvg.js +210 -0
  320. package/dist/browser/CdpCaptureEventBodyShapes.js +55 -0
  321. package/dist/browser/CdpCaptureEventHandlers.js +463 -0
  322. package/dist/browser/CdpCaptureEventHelpers.js +84 -0
  323. package/dist/browser/CdpCaptureEventState.js +1 -0
  324. package/dist/browser/CdpCaptureEventTypes.js +5 -0
  325. package/dist/browser/CdpCaptureEvents.js +199 -0
  326. package/dist/browser/CdpCaptureStorage.js +86 -0
  327. package/dist/browser/CdpCaptureStorageFingerprints.js +320 -0
  328. package/dist/browser/CdpCaptureValues.js +91 -0
  329. package/dist/browser/CdpCommandRejection.js +17 -0
  330. package/dist/browser/CdpConnection.js +303 -0
  331. package/dist/browser/CdpElectronInspection.js +253 -0
  332. package/dist/browser/CdpElectronProvider.js +115 -0
  333. package/dist/browser/CdpElectronScriptEvents.js +55 -0
  334. package/dist/browser/CdpElectronScripts.js +65 -0
  335. package/dist/browser/CdpElectronWorkers.js +57 -0
  336. package/dist/browser/CdpEndpoint.js +217 -0
  337. package/dist/browser/CdpObservationSession.js +332 -0
  338. package/dist/browser/CdpOptionalCommand.js +14 -0
  339. package/dist/browser/CdpPageCapture.js +278 -0
  340. package/dist/browser/CdpPageCaptureScripts.js +79 -0
  341. package/dist/browser/CdpPageCaptureWorkers.js +46 -0
  342. package/dist/browser/CdpSafeMetadata.js +284 -0
  343. package/dist/browser/CdpScreenshot.js +110 -0
  344. package/dist/browser/CdpTargetEvents.js +8 -0
  345. package/dist/browser/CdpTargetSession.js +65 -0
  346. package/dist/browser/CdpWebMcpDiscovery.js +361 -0
  347. package/dist/browser/ElectronFileScope.js +135 -0
  348. package/dist/browser/PlaywrightBrowserScenarioProvider.js +301 -0
  349. package/dist/browser/PlaywrightElectronActiveActions.js +257 -0
  350. package/dist/browser/PlaywrightElectronActiveProjection.js +141 -0
  351. package/dist/browser/PlaywrightElectronActiveProvider.js +293 -0
  352. package/dist/browser/PlaywrightExecutionBoundary.js +53 -0
  353. package/dist/browser/PlaywrightScenarioActions.js +58 -0
  354. package/dist/browser/PlaywrightScenarioArtifacts.js +162 -0
  355. package/dist/browser/PlaywrightScenarioBrowser.js +412 -0
  356. package/dist/browser/PlaywrightScenarioEvents.js +253 -0
  357. package/dist/browser/PlaywrightScenarioSession.js +279 -0
  358. package/dist/browser/PlaywrightScenarioStorage.js +507 -0
  359. package/dist/browser/PngVisualDiff.js +380 -0
  360. package/dist/browser/WebSourceMapFetcher.js +718 -0
  361. package/dist/browser/assets/LocalWebScriptArtifacts.js +89 -0
  362. package/dist/browser/assets/PageScriptCapture.js +32 -0
  363. package/dist/browser/assets/PublishWebScripts.js +140 -0
  364. package/dist/browser/assets/ScenarioScriptCapture.js +73 -0
  365. package/dist/browser/assets/ScriptCaptureAdapters.js +57 -0
  366. package/dist/browser/assets/WebArtifactReads.js +78 -0
  367. package/dist/browser/assets/WebSourceLocationArtifacts.js +41 -0
  368. package/dist/browser/execution/CdpEventListeners.js +79 -0
  369. package/dist/browser/execution/CdpExecutionCapture.js +135 -0
  370. package/dist/browser/execution/CdpExecutionCollection.js +57 -0
  371. package/dist/browser/execution/CdpExecutionWindow.js +100 -0
  372. package/dist/browser/execution/CdpListenerSelector.js +22 -0
  373. package/dist/browser/execution/CdpPreciseCoverage.js +45 -0
  374. package/dist/browser/execution/CdpRuntimeInitiator.js +18 -0
  375. package/dist/browser/execution/CdpRuntimeProtocol.js +106 -0
  376. package/dist/browser/execution/CdpRuntimeRequests.js +81 -0
  377. package/dist/browser/execution/CdpRuntimeSession.js +163 -0
  378. package/dist/browser/execution/CdpRuntimeSources.js +223 -0
  379. package/dist/browser/execution/CdpWebRuntimeProvider.js +51 -0
  380. package/dist/browser/history/CaptureFailures.js +153 -0
  381. package/dist/browser/history/CaptureFormatError.js +10 -0
  382. package/dist/browser/history/CaptureRedaction.js +68 -0
  383. package/dist/browser/history/CaptureRelease.js +23 -0
  384. package/dist/browser/history/HarCapture.js +179 -0
  385. package/dist/browser/history/HarCaptureAdapter.js +23 -0
  386. package/dist/browser/history/HarCaptureProcess.js +49 -0
  387. package/dist/browser/history/HarJson.js +92 -0
  388. package/dist/browser/history/HarSchema.js +72 -0
  389. package/dist/browser/history/HistoricalCaptureDecoder.js +198 -0
  390. package/dist/browser/history/HistoricalCaptureFormatAdapter.js +1 -0
  391. package/dist/browser/history/MitmproxyCaptureAdapter.js +46 -0
  392. package/dist/browser/modules/NativeModuleResolver.js +277 -0
  393. package/dist/browser/modules/WebModuleArtifacts.js +41 -0
  394. package/dist/browser/network/PlaywrightNetworkContent.js +71 -0
  395. package/dist/browser/network/PlaywrightScenarioNetwork.js +180 -0
  396. package/dist/browser/providerIdentities.js +24 -0
  397. package/dist/catalogIdentity.js +65 -0
  398. package/dist/cli/adbCommands.js +337 -0
  399. package/dist/cli/analysisSelector.js +23 -0
  400. package/dist/cli/analysisViewCommands.js +74 -0
  401. package/dist/cli/androidCommands.js +91 -0
  402. package/dist/cli/apktoolCommands.js +53 -0
  403. package/dist/cli/applicationCommands.js +173 -0
  404. package/dist/cli/artifactCommands.js +160 -0
  405. package/dist/cli/binaryDiagnosticsCommands.js +57 -0
  406. package/dist/cli/browserAdvancedCommands.js +189 -0
  407. package/dist/cli/browserCommands.js +125 -0
  408. package/dist/cli/commandCancellation.js +24 -0
  409. package/dist/cli/coreAnalysisCommands.js +7 -0
  410. package/dist/cli/coreBinaryCommands.js +283 -0
  411. package/dist/cli/coreNativeCommands.js +269 -0
  412. package/dist/cli/electronCommands.js +150 -0
  413. package/dist/cli/evmCommands.js +33 -0
  414. package/dist/cli/firmwareCommands.js +61 -0
  415. package/dist/cli/goCommands.js +21 -0
  416. package/dist/cli/interactiveSetup.js +236 -0
  417. package/dist/cli/javascriptApplicationAnalysis.js +34 -0
  418. package/dist/cli/javascriptRecoveryCommands.js +59 -0
  419. package/dist/cli/jebCommands.js +99 -0
  420. package/dist/cli/jsonOutput.js +46 -0
  421. package/dist/cli/managedCommands.js +129 -0
  422. package/dist/cli/managedProjectGraphCommand.js +24 -0
  423. package/dist/cli/nativeCallCommands.js +33 -0
  424. package/dist/cli/omittableDefaults.js +50 -0
  425. package/dist/cli/options.js +33 -0
  426. package/dist/cli/processCommands.js +25 -0
  427. package/dist/cli/referenceSourceImportStatus.js +22 -0
  428. package/dist/cli/setupCommands.js +189 -0
  429. package/dist/cli/streamedJsonOutput.js +134 -0
  430. package/dist/cli/types.js +1 -0
  431. package/dist/cli/utilityCommands.js +226 -0
  432. package/dist/cli/wasmCommands.js +44 -0
  433. package/dist/cli/webModuleCommands.js +60 -0
  434. package/dist/cli/webNetworkCaptureCommands.js +40 -0
  435. package/dist/cli/webRuntimeCommands.js +60 -0
  436. package/dist/cli/webScriptCommands.js +50 -0
  437. package/dist/cli/webSourceLocationCommands.js +54 -0
  438. package/dist/cli-runtime/AnalysisProvider-CeyX2u-b.js +25 -0
  439. package/dist/cli-runtime/AnalysisSnapshotFiles-BuK_ymw5.js +523 -0
  440. package/dist/cli-runtime/ArtifactReader-BXkffc1D.js +55 -0
  441. package/dist/cli-runtime/ArtifactResourceScope-CZqLEfbb.js +108 -0
  442. package/dist/cli-runtime/AsarHeader-CnzOzYEH.js +31 -0
  443. package/dist/cli-runtime/BinaryTargetResolver-CKRfFhLj.js +965 -0
  444. package/dist/cli-runtime/BoundedFileBytes-BU30odTm.js +39 -0
  445. package/dist/cli-runtime/ClientConfigPath-c6jr6INc.js +36 -0
  446. package/dist/cli-runtime/ClientConfigurationDocument-D0ZqgTCv.js +1522 -0
  447. package/dist/cli-runtime/ClientRegistrationStatus-DGpwJ4ry.js +422 -0
  448. package/dist/cli-runtime/DirectAnalysis-DW3MvxW0.js +500 -0
  449. package/dist/cli-runtime/Doctor-CzwYS9nB.js +862 -0
  450. package/dist/cli-runtime/ElectronFileScope-C1hUEp36.js +1419 -0
  451. package/dist/cli-runtime/ExecFileOutput-Czbj-HpV.js +106 -0
  452. package/dist/cli-runtime/IdaConfiguration-rEjpuRQ1.js +854 -0
  453. package/dist/cli-runtime/InterfaceBuilderDecodeBudget-DT74BY9z.js +225 -0
  454. package/dist/cli-runtime/InventoryProjectionEvidence-Dt4Og45O.js +49 -0
  455. package/dist/cli-runtime/InvestigationProviders-D-QCy-4c.js +117 -0
  456. package/dist/cli-runtime/JavaScriptApplicationEvidenceGraph-CODAjVru.js +160 -0
  457. package/dist/cli-runtime/JavaScriptApplicationWorkflowEvidence-CCtwSg8r.js +75 -0
  458. package/dist/cli-runtime/JavaScriptWorkerMemoryLimit-CJeBSMPx.js +83 -0
  459. package/dist/cli-runtime/JsonFiles-Ce_O5NcH.js +708 -0
  460. package/dist/cli-runtime/ManagedSnapshot-DthWfmy9.js +3622 -0
  461. package/dist/cli-runtime/OwnedCommand-CnK8-h3N.js +106 -0
  462. package/dist/cli-runtime/PrivateRuntimeRoot-KNg6qLwo.js +237 -0
  463. package/dist/cli-runtime/ProcessOwnership-AOJaszxt.js +1310 -0
  464. package/dist/cli-runtime/ProviderDeadline-BSbNOmuW.js +89 -0
  465. package/dist/cli-runtime/RegularFile-CL6meBxi.js +114 -0
  466. package/dist/cli-runtime/RegularFileRead-BMh5FMXd.js +115 -0
  467. package/dist/cli-runtime/SafeOutputTree-D8z2Zrnu.js +512 -0
  468. package/dist/cli-runtime/SetupHost-CzzRF89z.js +842 -0
  469. package/dist/cli-runtime/SupportedClients-BrZ2qZVg.js +671 -0
  470. package/dist/cli-runtime/UninstallFailure-1blyKXHE.js +22 -0
  471. package/dist/cli-runtime/Update-DF55X_N2.js +143 -0
  472. package/dist/cli-runtime/UpdateFailure-BcFNxEZZ.js +24 -0
  473. package/dist/cli-runtime/WindowsBatchCommand-5gT-d7O4.js +45 -0
  474. package/dist/cli-runtime/ZipArtifactReader-Db65WuM_.js +380 -0
  475. package/dist/cli-runtime/analysisErrorCleanup-DaUQNiQd.js +32 -0
  476. package/dist/cli-runtime/analysisErrorPresentation-DZrKL8kS.js +331 -0
  477. package/dist/cli-runtime/application__DirectAnalysisStatus-OZFIFjZr.js +93 -0
  478. package/dist/cli-runtime/application__EnhancedTools-C__HAdqG.js +1728 -0
  479. package/dist/cli-runtime/application__FunctionAnalysisEvidence-fWSgvV74.js +41 -0
  480. package/dist/cli-runtime/application__ReconstructionCoverageService-DlNt-4TY.js +32 -0
  481. package/dist/cli-runtime/application__ReconstructionObligationLedgerService-CEpbUv-7.js +813 -0
  482. package/dist/cli-runtime/application__Setup-BExVGpqG.js +540 -0
  483. package/dist/cli-runtime/application__Uninstall-BVgWDCPN.js +349 -0
  484. package/dist/cli-runtime/application__UpdateRuntime-Dj6UIhHQ.js +358 -0
  485. package/dist/cli-runtime/application__android__AndroidApplicationService-CyynwW6Z.js +31 -0
  486. package/dist/cli-runtime/application__apple__AppleApplicationService-BNPcWeL8.js +31 -0
  487. package/dist/cli-runtime/application__harmony__HarmonyApplicationService-W66PwMvx.js +31 -0
  488. package/dist/cli-runtime/application__javascript__ElectronActiveObservationService-D8VbeCxz.js +85 -0
  489. package/dist/cli-runtime/application__javascript__ElectronObservationService-FmXFG4f2.js +63 -0
  490. package/dist/cli-runtime/application__javascript__JavaScriptApplicationService-D-dVrmAY.js +10467 -0
  491. package/dist/cli-runtime/application__javascript__JavaScriptApplicationWorkflowService-Cb0jmh8J.js +2284 -0
  492. package/dist/cli-runtime/application__javascript__JavaScriptRuntimeReconciliationService-D55gO7Gq.js +88 -0
  493. package/dist/cli-runtime/application__javascript__JavaScriptSemanticTraceService-DivM-Ym-.js +298 -0
  494. package/dist/cli-runtime/artifactOperationError-Wd0PRLIZ.js +27 -0
  495. package/dist/cli-runtime/artifacts__ArtifactProvider-B_4h3RAw.js +2091 -0
  496. package/dist/cli-runtime/binary-9Gt3vJ1P.js +12990 -0
  497. package/dist/cli-runtime/browserObservationError-D73SM55P.js +40 -0
  498. package/dist/cli-runtime/browserScenario-CTNr5ISp.js +5543 -0
  499. package/dist/cli-runtime/catalogIdentity-EYVhBUYJ.js +339 -0
  500. package/dist/cli-runtime/cli.js +28528 -0
  501. package/dist/cli-runtime/cliOutput-CoDmWVu5.js +98 -0
  502. package/dist/cli-runtime/cliOutput.js +5 -0
  503. package/dist/cli-runtime/composition__browserScenario-DNr3A_BM.js +2318 -0
  504. package/dist/cli-runtime/composition__electronObservation-DNw1f38M.js +550 -0
  505. package/dist/cli-runtime/composition__electronScenario-Cu7PX270.js +586 -0
  506. package/dist/cli-runtime/configurationErrors-ByuF6gMR.js +49 -0
  507. package/dist/cli-runtime/doctorRuntime-D5y43lEp.js +162 -0
  508. package/dist/cli-runtime/dosMz-pwwUuxyC.js +65 -0
  509. package/dist/cli-runtime/dotnet__ManagedStaticProvider-BSnWggeb.js +5 -0
  510. package/dist/cli-runtime/enhancedInputs-K8C_o3b4.js +56 -0
  511. package/dist/cli-runtime/javascriptApplicationGraph-DUWeec4O.js +940 -0
  512. package/dist/cli-runtime/javascriptExportReturnShapeProjection-BVbnAdOd.js +78 -0
  513. package/dist/cli-runtime/javascriptExportShapeComparisonSchemas-BzSil7ft.js +1153 -0
  514. package/dist/cli-runtime/javascriptRuntimeObservation-9xTNoKY2.js +1215 -0
  515. package/dist/cli-runtime/javascriptRuntimeReconciliation-CneBtMvx.js +1437 -0
  516. package/dist/cli-runtime/javascriptRuntimeReconciliationSchemas-D1Mrb_Y0.js +245 -0
  517. package/dist/cli-runtime/javascriptSemanticTraceSchemas-BHItrqIA.js +126 -0
  518. package/dist/cli-runtime/lipo-BCA3wVyN.js +365 -0
  519. package/dist/cli-runtime/logger-CKq3JfbZ.js +34 -0
  520. package/dist/cli-runtime/machoContainer-DxxkB2b0.js +52 -0
  521. package/dist/cli-runtime/managedApplicationGraph-BqOr01E6.js +1116 -0
  522. package/dist/cli-runtime/managedToolContracts-BSy4TRaK.js +80 -0
  523. package/dist/cli-runtime/mcpDoctor.js +342 -0
  524. package/dist/cli-runtime/mcpStartupPolicy-Bb7TMLzn.js +18 -0
  525. package/dist/cli-runtime/native__NativeMacOSProvider-BIG9iCcj.js +4415 -0
  526. package/dist/cli-runtime/plistValue-KM-SqiXe.js +47 -0
  527. package/dist/cli-runtime/propertyListKeys-DejfMb-U.js +86 -0
  528. package/dist/cli-runtime/providerAdapterError-SRSE_gzN.js +27 -0
  529. package/dist/cli-runtime/providerCleanupError-Do66qCEp.js +27 -0
  530. package/dist/cli-runtime/providerIdentities-Ao1XTvwx.js +31 -0
  531. package/dist/cli-runtime/providerOperationHealth-DSTcYPJe.js +577 -0
  532. package/dist/cli-runtime/providerStartupTimeout-Be8B1Ro8.js +16 -0
  533. package/dist/cli-runtime/readFileHandleChunks-dp60iZ6v.js +38 -0
  534. package/dist/cli-runtime/reconstructionObligationLedgerSchemas-dvp6PEnZ.js +15839 -0
  535. package/dist/cli-runtime/rolldown-runtime-DXoylpqc.js +121 -0
  536. package/dist/cli-runtime/runtimeVersion-CMGd0bDu.js +23 -0
  537. package/dist/cli-runtime/safeJson-DKKACtdy.js +25 -0
  538. package/dist/cli-runtime/scanCanonical-Bi6si9nb.js +2773 -0
  539. package/dist/cli-runtime/snapshotEnvironment-B5Ai0mha.js +678 -0
  540. package/dist/cli-runtime/streamedJsonOutput-VYlQZsM7.js +654 -0
  541. package/dist/cli-runtime/streamedJsonOutput.js +5 -0
  542. package/dist/cli-runtime/toolContracts-C7pvYKxF.js +4516 -0
  543. package/dist/cli-runtime/toolEffects-DW31yTSx.js +7004 -0
  544. package/dist/cli-runtime/workflowInputError-26EGiDpx.js +26 -0
  545. package/dist/cli.js +91 -0
  546. package/dist/cliBrowserContext.js +11 -0
  547. package/dist/cliBrowserScenarioCommands.js +73 -0
  548. package/dist/cliCommandNames.js +205 -0
  549. package/dist/cliEvidenceCommands.js +51 -0
  550. package/dist/cliJavaScriptRuntimeCommands.js +69 -0
  551. package/dist/cliJsonInput.js +129 -0
  552. package/dist/cliLogging.js +48 -0
  553. package/dist/cliObservationOptions.js +73 -0
  554. package/dist/cliOutput.js +97 -0
  555. package/dist/composition/adb.js +3 -0
  556. package/dist/composition/android.js +3 -0
  557. package/dist/composition/apktool.js +3 -0
  558. package/dist/composition/auxiliaryAnalysisProviders.js +35 -0
  559. package/dist/composition/binary.js +25 -0
  560. package/dist/composition/binaryDiagnostics.js +12 -0
  561. package/dist/composition/browserObservation.js +3 -0
  562. package/dist/composition/browserScenario.js +4 -0
  563. package/dist/composition/directAnalysis.js +44 -0
  564. package/dist/composition/electronObservation.js +3 -0
  565. package/dist/composition/electronScenario.js +3 -0
  566. package/dist/composition/evm.js +4 -0
  567. package/dist/composition/firmware.js +3 -0
  568. package/dist/composition/go.js +4 -0
  569. package/dist/composition/javascriptAnalysisWorkerProcess.js +48 -0
  570. package/dist/composition/javascriptRecovery.js +3 -0
  571. package/dist/composition/javascriptRuntimeObservation.js +3 -0
  572. package/dist/composition/jeb.js +6 -0
  573. package/dist/composition/optionalObservationProviders.js +54 -0
  574. package/dist/composition/wasm.js +4 -0
  575. package/dist/composition/webModules.js +5 -0
  576. package/dist/composition/webNetworkCaptures.js +6 -0
  577. package/dist/composition/webRuntime.js +4 -0
  578. package/dist/composition/webSourceLocations.js +5 -0
  579. package/dist/config/environment.js +73 -0
  580. package/dist/config/ghidraDisabledAnalyzers.js +25 -0
  581. package/dist/config/ghidraLanguageOverride.js +9 -0
  582. package/dist/config/homeDirectory.js +12 -0
  583. package/dist/config/mcpInputSchemaProfile.js +27 -0
  584. package/dist/config/mcpResponseBudget.js +30 -0
  585. package/dist/config/parseConfig.js +93 -0
  586. package/dist/config/parsers.js +30 -0
  587. package/dist/config/providerStartupTimeout.js +13 -0
  588. package/dist/config/types.js +1 -0
  589. package/dist/contracts/adb/adbToolContracts.js +353 -0
  590. package/dist/contracts/advertisedInputExamples.js +48 -0
  591. package/dist/contracts/analysisDetail.js +13 -0
  592. package/dist/contracts/analysisSearchContract.js +14 -0
  593. package/dist/contracts/analysisViewApiSurfaceExample.js +68 -0
  594. package/dist/contracts/analysisViewToolContracts.js +76 -0
  595. package/dist/contracts/android/androidToolContracts.js +77 -0
  596. package/dist/contracts/apktool/apktoolToolContracts.js +33 -0
  597. package/dist/contracts/applicationToolContracts.js +261 -0
  598. package/dist/contracts/artifactComparisonExample.js +86 -0
  599. package/dist/contracts/artifactToolContracts.js +68 -0
  600. package/dist/contracts/browserProviderToolContracts.js +7 -0
  601. package/dist/contracts/browserScenarioToolContracts.js +32 -0
  602. package/dist/contracts/browserToolContracts.js +256 -0
  603. package/dist/contracts/compactInputSchema.js +256 -0
  604. package/dist/contracts/enhancedInputs.js +74 -0
  605. package/dist/contracts/enhancedToolContracts.js +32 -0
  606. package/dist/contracts/errorSchemas.js +87 -0
  607. package/dist/contracts/evidenceInputContracts.js +13 -0
  608. package/dist/contracts/evm/evmToolContracts.js +20 -0
  609. package/dist/contracts/firmware/firmwareToolContracts.js +38 -0
  610. package/dist/contracts/functionComparisonExample.js +51 -0
  611. package/dist/contracts/functionInstructionContract.js +6 -0
  612. package/dist/contracts/functionWorkflowToolContracts.js +29 -0
  613. package/dist/contracts/go/goToolContracts.js +20 -0
  614. package/dist/contracts/hopperMemoryContracts.js +19 -0
  615. package/dist/contracts/inputSchemaPresentation.js +181 -0
  616. package/dist/contracts/investigationExamples.js +116 -0
  617. package/dist/contracts/javascript/applicationWorkflowInputContracts.js +52 -0
  618. package/dist/contracts/javascript/electronToolContracts.js +118 -0
  619. package/dist/contracts/javascript/javascriptApplicationWorkflowExamples.js +85 -0
  620. package/dist/contracts/javascript/javascriptExportShapeComparisonExample.js +248 -0
  621. package/dist/contracts/javascript/javascriptRecoveryToolContracts.js +35 -0
  622. package/dist/contracts/javascript/javascriptRuntimeObservationToolContracts.js +40 -0
  623. package/dist/contracts/javascript/javascriptRuntimeReconciliationExample.js +242 -0
  624. package/dist/contracts/jeb/jebToolContracts.js +64 -0
  625. package/dist/contracts/managed/managedToolContracts.js +87 -0
  626. package/dist/contracts/managed/managedWorkflowExamples.js +281 -0
  627. package/dist/contracts/managed/managedWorkflowToolContracts.js +165 -0
  628. package/dist/contracts/mobileApplicationGraphExamples.js +117 -0
  629. package/dist/contracts/native/binaryDiagnosticsToolContracts.js +65 -0
  630. package/dist/contracts/native/nativeToolContracts.js +77 -0
  631. package/dist/contracts/officialToolContracts.js +69 -0
  632. package/dist/contracts/promptContracts.js +253 -0
  633. package/dist/contracts/providerSelection.js +29 -0
  634. package/dist/contracts/reconstructionReadinessExample.js +438 -0
  635. package/dist/contracts/sessionLifecycleInputs.js +63 -0
  636. package/dist/contracts/sessionStatusContract.js +17 -0
  637. package/dist/contracts/sessionToolContracts.js +61 -0
  638. package/dist/contracts/sessionToolSchemas.js +51 -0
  639. package/dist/contracts/toolContractExamples.js +77 -0
  640. package/dist/contracts/toolContractHelpers.js +22 -0
  641. package/dist/contracts/toolContractTypes.js +18 -0
  642. package/dist/contracts/toolContracts.js +60 -0
  643. package/dist/contracts/toolEffects.js +544 -0
  644. package/dist/contracts/toolOutputSchemaGroups.js +411 -0
  645. package/dist/contracts/toolOutputSchemaPrimitives.js +532 -0
  646. package/dist/contracts/toolSchemaMetadata.js +197 -0
  647. package/dist/contracts/unknownContractExamples.js +31 -0
  648. package/dist/contracts/wasm/wasmToolContracts.js +24 -0
  649. package/dist/contracts/webNetworkCaptureToolContracts.js +24 -0
  650. package/dist/contracts/webRuntimeToolContracts.js +43 -0
  651. package/dist/contracts/webScriptToolContracts.js +68 -0
  652. package/dist/doctorRuntime.js +53 -0
  653. package/dist/domain/adb/adbDeviceAnalysis.js +583 -0
  654. package/dist/domain/analysisErrorBase.js +58 -0
  655. package/dist/domain/analysisErrorCleanup.js +29 -0
  656. package/dist/domain/analysisErrorCore.js +123 -0
  657. package/dist/domain/analysisErrorPresentation.js +372 -0
  658. package/dist/domain/analysisErrorProjection.js +454 -0
  659. package/dist/domain/analysisProfile.js +50 -0
  660. package/dist/domain/analysisSnapshot.js +538 -0
  661. package/dist/domain/analysisView/WebNetworkApiSurfaceAccumulator.js +362 -0
  662. package/dist/domain/analysisView/analysisView.js +340 -0
  663. package/dist/domain/analysisView/analysisViewCoverage.js +19 -0
  664. package/dist/domain/analysisView/binaryLayoutView.js +161 -0
  665. package/dist/domain/analysisView/javascriptApplicationView.js +245 -0
  666. package/dist/domain/analysisView/nativeFunctionView.js +155 -0
  667. package/dist/domain/analysisView/webNetworkApiSurfaceView.js +108 -0
  668. package/dist/domain/android/androidAnalysis.js +143 -0
  669. package/dist/domain/android/androidApplication.js +144 -0
  670. package/dist/domain/android/androidPartialObservation.js +36 -0
  671. package/dist/domain/apktool/apktoolResourceAnalysis.js +75 -0
  672. package/dist/domain/apple/appleApplication.js +315 -0
  673. package/dist/domain/apple/appleAssetCatalog.js +127 -0
  674. package/dist/domain/apple/appleBundleAnatomy.js +303 -0
  675. package/dist/domain/apple/dyldEnvironment.js +73 -0
  676. package/dist/domain/apple/dyldPaths.js +89 -0
  677. package/dist/domain/apple/dylibResolution.js +485 -0
  678. package/dist/domain/apple/dylibResolutionFindings.js +77 -0
  679. package/dist/domain/apple/interfaceBuilderGraph.js +403 -0
  680. package/dist/domain/apple/interfaceBuilderKeyedArchive.js +430 -0
  681. package/dist/domain/apple/keyedArchive.js +214 -0
  682. package/dist/domain/apple/machoContainer.js +54 -0
  683. package/dist/domain/apple/plistNumbers.js +76 -0
  684. package/dist/domain/apple/plistValue.js +35 -0
  685. package/dist/domain/artifactComparison.js +348 -0
  686. package/dist/domain/artifactGraph.js +213 -0
  687. package/dist/domain/artifactIdentity.js +57 -0
  688. package/dist/domain/artifactInspection.js +279 -0
  689. package/dist/domain/artifactIntegrityPolicy.js +10 -0
  690. package/dist/domain/artifactInventoryEvidence.js +166 -0
  691. package/dist/domain/artifactInventorySnapshot.js +1 -0
  692. package/dist/domain/artifactOperationError.js +20 -0
  693. package/dist/domain/artifactPartialObservation.js +1 -0
  694. package/dist/domain/artifactPathSyntax.js +75 -0
  695. package/dist/domain/binaryTarget.js +233 -0
  696. package/dist/domain/binaryTargetTypes.js +10 -0
  697. package/dist/domain/bridgeCandidateProjection.js +71 -0
  698. package/dist/domain/browserCaptureComparison.js +21 -0
  699. package/dist/domain/browserCompleteness.js +103 -0
  700. package/dist/domain/browserNetworkEvidence.js +92 -0
  701. package/dist/domain/browserObservation.js +187 -0
  702. package/dist/domain/browserObservationError.js +44 -0
  703. package/dist/domain/browserObservationErrors.js +1 -0
  704. package/dist/domain/browserObservationSchemas.js +327 -0
  705. package/dist/domain/browserScenario.js +61 -0
  706. package/dist/domain/browserScenarioCapture.js +76 -0
  707. package/dist/domain/browserScenarioCaptureValues.js +292 -0
  708. package/dist/domain/browserScenarioDiff.js +266 -0
  709. package/dist/domain/browserScenarioDiffEvidence.js +73 -0
  710. package/dist/domain/browserScenarioDiffValues.js +140 -0
  711. package/dist/domain/browserScenarioNormalization.js +40 -0
  712. package/dist/domain/browserScenarioValues.js +268 -0
  713. package/dist/domain/browserSession.js +55 -0
  714. package/dist/domain/bundleComparison.js +243 -0
  715. package/dist/domain/callPath.js +301 -0
  716. package/dist/domain/callPathSchemas.js +89 -0
  717. package/dist/domain/canonicalDigest.js +83 -0
  718. package/dist/domain/canonicalJsonDigestSteps.js +155 -0
  719. package/dist/domain/canonicalOrdering.js +3 -0
  720. package/dist/domain/changedBehavior.js +282 -0
  721. package/dist/domain/compactStringIdentity.js +9 -0
  722. package/dist/domain/comparisonSemantics.js +12 -0
  723. package/dist/domain/comparisonSourceEvidence.js +40 -0
  724. package/dist/domain/comparisonStatus.js +11 -0
  725. package/dist/domain/completionLedgerGeneration.js +186 -0
  726. package/dist/domain/configurationErrors.js +37 -0
  727. package/dist/domain/conformancePackage.js +200 -0
  728. package/dist/domain/conformanceReplay.js +132 -0
  729. package/dist/domain/conformanceTrustGate.js +319 -0
  730. package/dist/domain/digests.js +27 -0
  731. package/dist/domain/dosCom.js +8 -0
  732. package/dist/domain/dosMz.js +83 -0
  733. package/dist/domain/emptyArraySchema.js +3 -0
  734. package/dist/domain/evidence.js +305 -0
  735. package/dist/domain/evidenceBundle.js +413 -0
  736. package/dist/domain/evidenceCompletionLedger.js +113 -0
  737. package/dist/domain/evidenceErrors.js +46 -0
  738. package/dist/domain/evidenceRecordSummary.js +144 -0
  739. package/dist/domain/evm/evmInterface.js +61 -0
  740. package/dist/domain/explicitSensitiveFailure.js +108 -0
  741. package/dist/domain/explicitSensitiveValues.js +10 -0
  742. package/dist/domain/firmware/firmwareAnalysis.js +128 -0
  743. package/dist/domain/functionComparison.js +38 -0
  744. package/dist/domain/functionComparisonDimensions.js +199 -0
  745. package/dist/domain/functionComparisonNormalization.js +150 -0
  746. package/dist/domain/functionComparisonResults.js +54 -0
  747. package/dist/domain/functionComparisonSchemas.js +88 -0
  748. package/dist/domain/functionDossierEvidence.js +20 -0
  749. package/dist/domain/go/goBinary.js +96 -0
  750. package/dist/domain/harmony/harmonyApplication.js +169 -0
  751. package/dist/domain/hopperErrors.js +98 -0
  752. package/dist/domain/hopperStartupFailure.js +64 -0
  753. package/dist/domain/hopperValues.js +368 -0
  754. package/dist/domain/immutableJson.js +114 -0
  755. package/dist/domain/inputIssueProjection.js +94 -0
  756. package/dist/domain/javascript/electronActiveObservation.js +237 -0
  757. package/dist/domain/javascript/electronObservation.js +122 -0
  758. package/dist/domain/javascript/electronStaticAnalysis.js +9 -0
  759. package/dist/domain/javascript/electronStaticAnalysisBrowser.js +187 -0
  760. package/dist/domain/javascript/electronStaticAnalysisIpc.js +197 -0
  761. package/dist/domain/javascript/electronStaticAnalysisNative.js +199 -0
  762. package/dist/domain/javascript/electronStaticAnalysisTypes.js +1 -0
  763. package/dist/domain/javascript/electronStaticAnalysisValues.js +134 -0
  764. package/dist/domain/javascript/electronWrappedCallPaths.js +399 -0
  765. package/dist/domain/javascript/htmlArtifactReferences.js +40 -0
  766. package/dist/domain/javascript/javascriptAnalysisResourceControls.js +65 -0
  767. package/dist/domain/javascript/javascriptApplicationAnalysis.js +146 -0
  768. package/dist/domain/javascript/javascriptApplicationChangeGraph.js +175 -0
  769. package/dist/domain/javascript/javascriptApplicationEvidenceSchemas.js +400 -0
  770. package/dist/domain/javascript/javascriptApplicationGraph.js +378 -0
  771. package/dist/domain/javascript/javascriptApplicationGraphSchemas.js +126 -0
  772. package/dist/domain/javascript/javascriptApplicationProjectionResources.js +43 -0
  773. package/dist/domain/javascript/javascriptApplicationVersionComparison.js +104 -0
  774. package/dist/domain/javascript/javascriptApplicationVersionComparisonSchemas.js +211 -0
  775. package/dist/domain/javascript/javascriptApplicationVersionItems.js +324 -0
  776. package/dist/domain/javascript/javascriptApplicationVersionKeys.js +199 -0
  777. package/dist/domain/javascript/javascriptArtifactFiles.js +1 -0
  778. package/dist/domain/javascript/javascriptAstFingerprint.js +153 -0
  779. package/dist/domain/javascript/javascriptAstValues.js +99 -0
  780. package/dist/domain/javascript/javascriptBootstrap.js +94 -0
  781. package/dist/domain/javascript/javascriptElectronMemberWrites.js +119 -0
  782. package/dist/domain/javascript/javascriptExportReturnShapeProjection.js +81 -0
  783. package/dist/domain/javascript/javascriptExportShapeComparison.js +161 -0
  784. package/dist/domain/javascript/javascriptExportShapeComparisonIdentity.js +16 -0
  785. package/dist/domain/javascript/javascriptExportShapeComparisonSchemas.js +302 -0
  786. package/dist/domain/javascript/javascriptExportShapeSelection.js +130 -0
  787. package/dist/domain/javascript/javascriptExportShapeVariants.js +333 -0
  788. package/dist/domain/javascript/javascriptFeatureSeed.js +193 -0
  789. package/dist/domain/javascript/javascriptFeatureTrace.js +177 -0
  790. package/dist/domain/javascript/javascriptFeatureTraceSchemas.js +131 -0
  791. package/dist/domain/javascript/javascriptFeatureTraversal.js +61 -0
  792. package/dist/domain/javascript/javascriptIntrinsicInvocation.js +93 -0
  793. package/dist/domain/javascript/javascriptModuleInterop.js +617 -0
  794. package/dist/domain/javascript/javascriptModuleSemanticIr.js +15 -0
  795. package/dist/domain/javascript/javascriptNativeHandoff.js +90 -0
  796. package/dist/domain/javascript/javascriptPackageImportAliases.js +58 -0
  797. package/dist/domain/javascript/javascriptRecovery.js +90 -0
  798. package/dist/domain/javascript/javascriptRpcEndpoints.js +253 -0
  799. package/dist/domain/javascript/javascriptRuntimeLoadState.js +98 -0
  800. package/dist/domain/javascript/javascriptRuntimeObservation.js +136 -0
  801. package/dist/domain/javascript/javascriptRuntimeReconciliation.js +46 -0
  802. package/dist/domain/javascript/javascriptRuntimeReconciliationActive.js +74 -0
  803. package/dist/domain/javascript/javascriptRuntimeReconciliationCaptureParsing.js +212 -0
  804. package/dist/domain/javascript/javascriptRuntimeReconciliationGraph.js +163 -0
  805. package/dist/domain/javascript/javascriptRuntimeReconciliationInputValidation.js +28 -0
  806. package/dist/domain/javascript/javascriptRuntimeReconciliationMatching.js +270 -0
  807. package/dist/domain/javascript/javascriptRuntimeReconciliationParsing.js +39 -0
  808. package/dist/domain/javascript/javascriptRuntimeReconciliationResult.js +126 -0
  809. package/dist/domain/javascript/javascriptRuntimeReconciliationRuntime.js +334 -0
  810. package/dist/domain/javascript/javascriptRuntimeReconciliationSchemas.js +234 -0
  811. package/dist/domain/javascript/javascriptRuntimeStaticCandidates.js +206 -0
  812. package/dist/domain/javascript/javascriptSemanticAnalysis.js +910 -0
  813. package/dist/domain/javascript/javascriptSemanticAsyncEffects.js +246 -0
  814. package/dist/domain/javascript/javascriptSemanticCallResolution.js +127 -0
  815. package/dist/domain/javascript/javascriptSemanticCallableResults.js +42 -0
  816. package/dist/domain/javascript/javascriptSemanticCalls.js +272 -0
  817. package/dist/domain/javascript/javascriptSemanticChildProcesses.js +224 -0
  818. package/dist/domain/javascript/javascriptSemanticCoverage.js +32 -0
  819. package/dist/domain/javascript/javascriptSemanticDataEffectHelpers.js +182 -0
  820. package/dist/domain/javascript/javascriptSemanticDataEffects.js +299 -0
  821. package/dist/domain/javascript/javascriptSemanticDerivedAnalysis.js +52 -0
  822. package/dist/domain/javascript/javascriptSemanticFileProjection.js +1 -0
  823. package/dist/domain/javascript/javascriptSemanticFingerprints.js +187 -0
  824. package/dist/domain/javascript/javascriptSemanticGraph.js +575 -0
  825. package/dist/domain/javascript/javascriptSemanticGraphSchemas.js +316 -0
  826. package/dist/domain/javascript/javascriptSemanticGraphSerialization.js +12 -0
  827. package/dist/domain/javascript/javascriptSemanticIr.js +31 -0
  828. package/dist/domain/javascript/javascriptSemanticIterationSources.js +139 -0
  829. package/dist/domain/javascript/javascriptSemanticMemberMutations.js +865 -0
  830. package/dist/domain/javascript/javascriptSemanticMutationInitializers.js +190 -0
  831. package/dist/domain/javascript/javascriptSemanticMutationValues.js +104 -0
  832. package/dist/domain/javascript/javascriptSemanticObjectReferences.js +381 -0
  833. package/dist/domain/javascript/javascriptSemanticObjects.js +164 -0
  834. package/dist/domain/javascript/javascriptSemanticPrimitives.js +38 -0
  835. package/dist/domain/javascript/javascriptSemanticProjection.js +571 -0
  836. package/dist/domain/javascript/javascriptSemanticPromises.js +321 -0
  837. package/dist/domain/javascript/javascriptSemanticPropertyPaths.js +100 -0
  838. package/dist/domain/javascript/javascriptSemanticProvenance.js +29 -0
  839. package/dist/domain/javascript/javascriptSemanticQuery.js +175 -0
  840. package/dist/domain/javascript/javascriptSemanticQueryAssessment.js +45 -0
  841. package/dist/domain/javascript/javascriptSemanticQueryIdentity.js +63 -0
  842. package/dist/domain/javascript/javascriptSemanticQueryRelations.js +15 -0
  843. package/dist/domain/javascript/javascriptSemanticQuerySchemas.js +95 -0
  844. package/dist/domain/javascript/javascriptSemanticRequireOrigin.js +34 -0
  845. package/dist/domain/javascript/javascriptSemanticResourceLimits.js +77 -0
  846. package/dist/domain/javascript/javascriptSemanticResources.js +129 -0
  847. package/dist/domain/javascript/javascriptSemanticReturnedReferences.js +219 -0
  848. package/dist/domain/javascript/javascriptSemanticReturns.js +159 -0
  849. package/dist/domain/javascript/javascriptSemanticSlots.js +72 -0
  850. package/dist/domain/javascript/javascriptSemanticState.js +116 -0
  851. package/dist/domain/javascript/javascriptSemanticTraceSchemas.js +15 -0
  852. package/dist/domain/javascript/javascriptSemanticTraversal.js +80 -0
  853. package/dist/domain/javascript/javascriptSemanticValueTypes.js +1 -0
  854. package/dist/domain/javascript/javascriptSemanticValues.js +581 -0
  855. package/dist/domain/javascript/javascriptSourceAnalysis.js +1 -0
  856. package/dist/domain/javascript/javascriptSourceMapPaths.js +114 -0
  857. package/dist/domain/javascript/javascriptSourceParser.js +50 -0
  858. package/dist/domain/javascript/javascriptSourceSelection.js +11 -0
  859. package/dist/domain/javascript/javascriptStaticAnalysis.js +142 -0
  860. package/dist/domain/javascript/javascriptStaticAnalysisBundler.js +239 -0
  861. package/dist/domain/javascript/javascriptStaticAnalysisCalls.js +271 -0
  862. package/dist/domain/javascript/javascriptStaticAnalysisFindings.js +86 -0
  863. package/dist/domain/javascript/javascriptStaticAnalysisHelpers.js +561 -0
  864. package/dist/domain/javascript/javascriptStaticAnalysisState.js +21 -0
  865. package/dist/domain/javascript/javascriptStaticAnalysisTypes.js +2 -0
  866. package/dist/domain/javascript/javascriptSymbolicBindings.js +795 -0
  867. package/dist/domain/javascript/javascriptSymbolicControlFlow.js +40 -0
  868. package/dist/domain/javascript/javascriptSymbolicValues.js +34 -0
  869. package/dist/domain/javascript/sourceToBundleComparison.js +261 -0
  870. package/dist/domain/javascript/sourceToBundleComparisonSchemas.js +109 -0
  871. package/dist/domain/javascript/sourceToBundleSignals.js +231 -0
  872. package/dist/domain/jeb/jebAnalysis.js +114 -0
  873. package/dist/domain/jsonSerialization.js +163 -0
  874. package/dist/domain/jsonShape.js +141 -0
  875. package/dist/domain/jsonValue.js +96 -0
  876. package/dist/domain/localPath.js +24 -0
  877. package/dist/domain/managed/managedApplicationGraph.js +221 -0
  878. package/dist/domain/managed/managedApplicationGraphCoverage.js +48 -0
  879. package/dist/domain/managed/managedApplicationGraphNodes.js +367 -0
  880. package/dist/domain/managed/managedArtifact.js +465 -0
  881. package/dist/domain/managed/managedInspectionEvidence.js +28 -0
  882. package/dist/domain/managed/managedMemberComparison.js +211 -0
  883. package/dist/domain/managed/managedMemberComparisonCoverage.js +71 -0
  884. package/dist/domain/managed/managedMemberComparisonItems.js +304 -0
  885. package/dist/domain/managed/managedMemberComparisonMatch.js +204 -0
  886. package/dist/domain/managed/managedNativeVerification.js +35 -0
  887. package/dist/domain/managed/managedNativeVerificationMatch.js +276 -0
  888. package/dist/domain/managed/managedNativeVerificationSchemas.js +180 -0
  889. package/dist/domain/managed/managedReconstruction.js +190 -0
  890. package/dist/domain/mobileApplicationGraphProjection.js +61 -0
  891. package/dist/domain/native/binaryLayout.js +354 -0
  892. package/dist/domain/native/fileOffsetPartialObservation.js +1 -0
  893. package/dist/domain/native/nativeAotPe.js +1408 -0
  894. package/dist/domain/native/nativeApiBoundary.js +140 -0
  895. package/dist/domain/native/nativeCallObservation.js +186 -0
  896. package/dist/domain/native/nativeCallPartialObservation.js +33 -0
  897. package/dist/domain/native/nativeDataType.js +53 -0
  898. package/dist/domain/native/nativeFunctionAnnotations.js +43 -0
  899. package/dist/domain/native/nativeInspection.js +174 -0
  900. package/dist/domain/native/nativeInstruction.js +125 -0
  901. package/dist/domain/native/nativeInvestigationGraph.js +364 -0
  902. package/dist/domain/native/nativeLoadImage.js +112 -0
  903. package/dist/domain/native/nativeMetadataRecovery.js +128 -0
  904. package/dist/domain/native/nativeUiObservation.js +137 -0
  905. package/dist/domain/native/nativeValueFlow.js +72 -0
  906. package/dist/domain/native/nativeValueTrace.js +64 -0
  907. package/dist/domain/native/objcSwiftMetadata.js +419 -0
  908. package/dist/domain/native/peResources.js +100 -0
  909. package/dist/domain/native/recordedCrash.js +263 -0
  910. package/dist/domain/native/recordedCrashNoteCoverage.js +73 -0
  911. package/dist/domain/nativeConvention.js +33 -0
  912. package/dist/domain/offsetDateTime.js +17 -0
  913. package/dist/domain/peMachine.js +36 -0
  914. package/dist/domain/process/processCapture.js +412 -0
  915. package/dist/domain/process/processCaptureCoverage.js +70 -0
  916. package/dist/domain/process/processCaptureExample.js +132 -0
  917. package/dist/domain/process/processCaptureParsing.js +21 -0
  918. package/dist/domain/process/processCaptureValidation.js +246 -0
  919. package/dist/domain/process/processComparison.js +315 -0
  920. package/dist/domain/process/processEvidenceProvider.js +11 -0
  921. package/dist/domain/process/processObservation.js +140 -0
  922. package/dist/domain/process/processScenario.js +247 -0
  923. package/dist/domain/process/processTraceComparison.js +34 -0
  924. package/dist/domain/process/processTraceDimensionProjection.js +35 -0
  925. package/dist/domain/process/processTraceEvaluation.js +320 -0
  926. package/dist/domain/process/processTraceSpecification.js +382 -0
  927. package/dist/domain/propertyListKeys.js +107 -0
  928. package/dist/domain/propertyListXmlText.js +19 -0
  929. package/dist/domain/providerAdapterError.js +19 -0
  930. package/dist/domain/providerCleanupError.js +18 -0
  931. package/dist/domain/providerConfigurationRefusal.js +12 -0
  932. package/dist/domain/providerOperationHealth.js +54 -0
  933. package/dist/domain/providerSelectionError.js +46 -0
  934. package/dist/domain/rawBinary.js +93 -0
  935. package/dist/domain/reconstructionCoverage.js +325 -0
  936. package/dist/domain/reconstructionCoverageEvaluation.js +234 -0
  937. package/dist/domain/reconstructionCoverageInput.js +7 -0
  938. package/dist/domain/reconstructionObligationLedgerIntegrity.js +114 -0
  939. package/dist/domain/reconstructionObligationLedgerSchemas.js +347 -0
  940. package/dist/domain/reconstructionReadiness.js +116 -0
  941. package/dist/domain/reconstructionReadinessFindingHelpers.js +17 -0
  942. package/dist/domain/reconstructionReadinessIntegrityFindings.js +118 -0
  943. package/dist/domain/reconstructionReadinessJourneyFindings.js +193 -0
  944. package/dist/domain/reconstructionReadinessSchemas.js +268 -0
  945. package/dist/domain/reconstructionUnknowns.js +91 -0
  946. package/dist/domain/reconstructionVerification.js +218 -0
  947. package/dist/domain/reconstructionVerificationSchemas.js +141 -0
  948. package/dist/domain/recordedTransportUrl.js +51 -0
  949. package/dist/domain/referenceSourceClassification.js +385 -0
  950. package/dist/domain/referenceSourceGraph.js +380 -0
  951. package/dist/domain/referenceSourceImportParsing.js +238 -0
  952. package/dist/domain/referenceSourcePathIdentity.js +22 -0
  953. package/dist/domain/referenceSourcePolicy.js +1 -0
  954. package/dist/domain/referenceSourceRequireBindings.js +137 -0
  955. package/dist/domain/relationshipCoverage.js +20 -0
  956. package/dist/domain/residualUnknown.js +252 -0
  957. package/dist/domain/result.js +4 -0
  958. package/dist/domain/runtimeVersion.js +15 -0
  959. package/dist/domain/safeJson.js +13 -0
  960. package/dist/domain/sourceMapContents.js +6 -0
  961. package/dist/domain/sourceMapEnvelope.js +44 -0
  962. package/dist/domain/staticRuntimeCorrelation.js +334 -0
  963. package/dist/domain/stringPatterns.js +6 -0
  964. package/dist/domain/swiftSymbolClassification.js +66 -0
  965. package/dist/domain/symbolAnalysis.js +122 -0
  966. package/dist/domain/unicodeCodePointOrder.js +23 -0
  967. package/dist/domain/unknownRegistryError.js +10 -0
  968. package/dist/domain/wasm/wasmArtifact.js +105 -0
  969. package/dist/domain/webBundleAnalysis.js +192 -0
  970. package/dist/domain/webBundleAnalyzer.js +15 -0
  971. package/dist/domain/webBundleAnalyzerAst.js +49 -0
  972. package/dist/domain/webBundleAnalyzerInspection.js +315 -0
  973. package/dist/domain/webBundleAnalyzerResult.js +142 -0
  974. package/dist/domain/webCaptureDiff.js +423 -0
  975. package/dist/domain/webCaptureDiffSchemas.js +84 -0
  976. package/dist/domain/webContentArtifact.js +38 -0
  977. package/dist/domain/webEventListeners.js +29 -0
  978. package/dist/domain/webExecution.js +75 -0
  979. package/dist/domain/webInventory.js +62 -0
  980. package/dist/domain/webMcpDiscovery.js +53 -0
  981. package/dist/domain/webModuleImports.js +99 -0
  982. package/dist/domain/webModuleTrace.js +101 -0
  983. package/dist/domain/webNetworkCapture.js +142 -0
  984. package/dist/domain/webNetworkCaptureCoordinates.js +58 -0
  985. package/dist/domain/webRuntime.js +80 -0
  986. package/dist/domain/webScreenshot.js +132 -0
  987. package/dist/domain/webScriptArtifacts.js +37 -0
  988. package/dist/domain/webScriptExport.js +84 -0
  989. package/dist/domain/webScriptExportError.js +19 -0
  990. package/dist/domain/webScriptExportPlan.js +104 -0
  991. package/dist/domain/webSourceLocation.js +118 -0
  992. package/dist/domain/webSourcePosition.js +21 -0
  993. package/dist/domain/zipPackageFormat.js +52 -0
  994. package/dist/domain/zodCollectionSteps.js +24 -0
  995. package/dist/dotnet/ManagedArtifactInspector.js +308 -0
  996. package/dist/dotnet/ManagedDecodeBudget.js +138 -0
  997. package/dist/dotnet/ManagedExceptionRegionValidation.js +41 -0
  998. package/dist/dotnet/ManagedMemberInspector.js +173 -0
  999. package/dist/dotnet/ManagedMemberInspectorCore.js +446 -0
  1000. package/dist/dotnet/ManagedMemberInstructionDecoder.js +468 -0
  1001. package/dist/dotnet/ManagedMemberOwnership.js +71 -0
  1002. package/dist/dotnet/ManagedMemberPointers.js +62 -0
  1003. package/dist/dotnet/ManagedMemberRows.js +227 -0
  1004. package/dist/dotnet/ManagedMetadataHeaps.js +179 -0
  1005. package/dist/dotnet/ManagedMetadataInventory.js +99 -0
  1006. package/dist/dotnet/ManagedMetadataInventoryRows.js +295 -0
  1007. package/dist/dotnet/ManagedMetadataLayout.js +270 -0
  1008. package/dist/dotnet/ManagedMetadataRowSizes.js +54 -0
  1009. package/dist/dotnet/ManagedMethodBodyReader.js +155 -0
  1010. package/dist/dotnet/ManagedNativeBoundaryHelpers.js +314 -0
  1011. package/dist/dotnet/ManagedNativeBoundaryInspector.js +128 -0
  1012. package/dist/dotnet/ManagedPeReader.js +233 -0
  1013. package/dist/dotnet/ManagedReaderFailure.js +27 -0
  1014. package/dist/dotnet/ManagedSnapshot.js +88 -0
  1015. package/dist/dotnet/ManagedStaticProvider.js +158 -0
  1016. package/dist/dotnet/ManagedStaticProviderMetadata.js +33 -0
  1017. package/dist/evaluation/AgentEvaluationFixtures.js +250 -0
  1018. package/dist/evaluation/AgentEvaluationReport.js +32 -0
  1019. package/dist/evaluation/CodexAgentEval.js +188 -0
  1020. package/dist/evaluation/KnownAnswerEvaluation.js +323 -0
  1021. package/dist/evm/EvmBytecodeCarrier.js +21 -0
  1022. package/dist/evm/EvmWorkerLimits.js +40 -0
  1023. package/dist/evm/EvmoleFailures.js +124 -0
  1024. package/dist/evm/EvmoleInterfaceAdapter.js +53 -0
  1025. package/dist/evm/EvmoleInterfaceProvider.js +339 -0
  1026. package/dist/evm/EvmoleInterfaceWorker.js +87 -0
  1027. package/dist/evm/EvmoleRelease.js +16 -0
  1028. package/dist/filesystem/OwnedDirectoryHandle.js +29 -0
  1029. package/dist/filesystem/OwnedFileHandle.js +36 -0
  1030. package/dist/filesystem/OwnedStagedOutput.js +138 -0
  1031. package/dist/filesystem/RegularFile.js +73 -0
  1032. package/dist/filesystem/StableFileHash.js +46 -0
  1033. package/dist/filesystem/readFileHandleChunks.js +35 -0
  1034. package/dist/firmware/FirmwareCommand.js +190 -0
  1035. package/dist/firmware/FirmwareFiles.js +206 -0
  1036. package/dist/firmware/FirmwareProvider.js +388 -0
  1037. package/dist/firmware/FirmwarePublication.js +105 -0
  1038. package/dist/firmware/FirmwareRelease.js +33 -0
  1039. package/dist/firmware/FirmwareReports.js +287 -0
  1040. package/dist/firmware/FirmwareVersion.js +80 -0
  1041. package/dist/generatedPackageMetadata.js +9 -0
  1042. package/dist/ghidra/GhidraAnalysisProfile.js +219 -0
  1043. package/dist/ghidra/GhidraAnalysisSeeds.js +211 -0
  1044. package/dist/ghidra/GhidraClient.js +725 -0
  1045. package/dist/ghidra/GhidraClientStartup.js +27 -0
  1046. package/dist/ghidra/GhidraClientTypes.js +1 -0
  1047. package/dist/ghidra/GhidraClientWire.js +38 -0
  1048. package/dist/ghidra/GhidraDiagnostics.js +53 -0
  1049. package/dist/ghidra/GhidraDoctor.js +88 -0
  1050. package/dist/ghidra/GhidraFunctionValues.js +328 -0
  1051. package/dist/ghidra/GhidraInstallation.js +443 -0
  1052. package/dist/ghidra/GhidraInstallationPolicy.js +140 -0
  1053. package/dist/ghidra/GhidraInventoryValues.js +262 -0
  1054. package/dist/ghidra/GhidraJavaLaunch.js +66 -0
  1055. package/dist/ghidra/GhidraLanguageCatalog.js +99 -0
  1056. package/dist/ghidra/GhidraLauncher.js +490 -0
  1057. package/dist/ghidra/GhidraLoadImageAttest.js +103 -0
  1058. package/dist/ghidra/GhidraLoadImageValues.js +260 -0
  1059. package/dist/ghidra/GhidraMipsProfile.js +187 -0
  1060. package/dist/ghidra/GhidraProvider.js +250 -0
  1061. package/dist/ghidra/GhidraProviderCapabilities.js +208 -0
  1062. package/dist/ghidra/GhidraProviderClient.js +613 -0
  1063. package/dist/ghidra/GhidraPspExtension.js +144 -0
  1064. package/dist/ghidra/GhidraPspProfile.js +50 -0
  1065. package/dist/ghidra/GhidraRawBinaryLanguage.js +18 -0
  1066. package/dist/ghidra/GhidraRequestQueue.js +115 -0
  1067. package/dist/ghidra/GhidraResponseBuffer.js +31 -0
  1068. package/dist/ghidra/GhidraResponseRouter.js +24 -0
  1069. package/dist/ghidra/GhidraSessionError.js +180 -0
  1070. package/dist/ghidra/GhidraSessionRoot.js +39 -0
  1071. package/dist/ghidra/GhidraSessionValues.js +86 -0
  1072. package/dist/ghidra/GhidraSocketConnection.js +83 -0
  1073. package/dist/ghidra/GhidraTargetSnapshot.js +79 -0
  1074. package/dist/ghidra/GhidraTransport.js +101 -0
  1075. package/dist/ghidra/extensions/GhidraExtensionFailures.js +20 -0
  1076. package/dist/ghidra/extensions/GhidraExtensions.js +177 -0
  1077. package/dist/ghidra/extensions/nativeaot/NativeAotAdapter.js +27 -0
  1078. package/dist/ghidra/extensions/nativeaot/NativeAotReport.js +100 -0
  1079. package/dist/ghidra/protocol.js +46 -0
  1080. package/dist/go/GoBinaryContainer.js +125 -0
  1081. package/dist/go/GoBinaryImage.js +172 -0
  1082. package/dist/go/GoBinaryProvider.js +137 -0
  1083. package/dist/go/GoElfImage.js +149 -0
  1084. package/dist/go/GoMachoImage.js +113 -0
  1085. package/dist/go/GoModuleText.js +217 -0
  1086. package/dist/go/GoPeImage.js +102 -0
  1087. package/dist/hopper/BridgeLauncher.js +305 -0
  1088. package/dist/hopper/HopperAnalysisProfile.js +168 -0
  1089. package/dist/hopper/HopperCleanup.js +245 -0
  1090. package/dist/hopper/HopperClient.js +767 -0
  1091. package/dist/hopper/HopperDiagnostics.js +14 -0
  1092. package/dist/hopper/HopperFileOffset.js +237 -0
  1093. package/dist/hopper/HopperMachOImage.js +200 -0
  1094. package/dist/hopper/HopperOperationStage.js +6 -0
  1095. package/dist/hopper/HopperProcessDiagnostic.js +26 -0
  1096. package/dist/hopper/HopperProvider.js +269 -0
  1097. package/dist/hopper/HopperProviderCapabilities.js +91 -0
  1098. package/dist/hopper/HopperRegexSearch.js +134 -0
  1099. package/dist/hopper/HopperRegexWorker.js +27 -0
  1100. package/dist/hopper/HopperRequestQueue.js +261 -0
  1101. package/dist/hopper/HopperResponseStream.js +44 -0
  1102. package/dist/hopper/HopperSessionValues.js +30 -0
  1103. package/dist/hopper/HopperSocketConnection.js +31 -0
  1104. package/dist/hopper/HopperTargetLease.js +233 -0
  1105. package/dist/hopper/LinuxPrivateDisplayDiagnostic.js +64 -0
  1106. package/dist/hopper/LinuxPrivateDisplayProbe.js +224 -0
  1107. package/dist/hopper/protocol.js +88 -0
  1108. package/dist/ida/IdaBusyHealth.js +44 -0
  1109. package/dist/ida/IdaCallGraph.js +134 -0
  1110. package/dist/ida/IdaConfiguration.js +61 -0
  1111. package/dist/ida/IdaDoctor.js +53 -0
  1112. package/dist/ida/IdaInput.js +56 -0
  1113. package/dist/ida/IdaMcpConnection.js +115 -0
  1114. package/dist/ida/IdaOperationRunner.js +376 -0
  1115. package/dist/ida/IdaProtocolValues.js +208 -0
  1116. package/dist/ida/IdaProvider.js +136 -0
  1117. package/dist/ida/IdaProviderCapabilities.js +64 -0
  1118. package/dist/ida/IdaSessionClient.js +444 -0
  1119. package/dist/ida/IdaWorkspace.js +55 -0
  1120. package/dist/identity.js +25 -0
  1121. package/dist/inspector/JavaScriptRuntimeScope.js +89 -0
  1122. package/dist/inspector/V8InspectorCaptureProjection.js +197 -0
  1123. package/dist/inspector/V8InspectorEndpoint.js +70 -0
  1124. package/dist/inspector/V8InspectorProvider.js +378 -0
  1125. package/dist/inspector/providerIdentity.js +6 -0
  1126. package/dist/javascript/analysis/JavaScriptAnalysisTransfer.js +337 -0
  1127. package/dist/javascript/analysis/JavaScriptAnalysisWorker.js +574 -0
  1128. package/dist/javascript/analysis/JavaScriptAnalysisWorkerProtocol.js +64 -0
  1129. package/dist/javascript/analysis/JavaScriptAnalysisWorkerSchemas.js +558 -0
  1130. package/dist/javascript/analysis/JavaScriptAnalysisWorkerServer.js +121 -0
  1131. package/dist/javascript/recovery/RecoveryFiles.js +175 -0
  1132. package/dist/javascript/recovery/WakaruCommand.js +137 -0
  1133. package/dist/javascript/recovery/WakaruExecution.js +115 -0
  1134. package/dist/javascript/recovery/WakaruProvider.js +218 -0
  1135. package/dist/javascript/recovery/WakaruPublication.js +126 -0
  1136. package/dist/javascript/recovery/WakaruRelease.js +36 -0
  1137. package/dist/javascript/recovery/WakaruReport.js +140 -0
  1138. package/dist/javascript/recovery/WakaruVersion.js +24 -0
  1139. package/dist/javascript/sourceMaps/DecodedSourceMap.js +47 -0
  1140. package/dist/javascript/sourceMaps/SourceMapCodecProcess.js +37 -0
  1141. package/dist/javascript/sourceMaps/SourceMapCodecProtocol.js +20 -0
  1142. package/dist/javascript/sourceMaps/SourceMapCommand.js +223 -0
  1143. package/dist/javascript/sourceMaps/SourceMapDecoder.js +135 -0
  1144. package/dist/javascript/sourceMaps/SourceMapFormat.js +238 -0
  1145. package/dist/javascript/sourceMaps/TraceSourceMap.js +152 -0
  1146. package/dist/jeb/JebMcpConnection.js +186 -0
  1147. package/dist/jeb/JebMcpEndpoint.js +40 -0
  1148. package/dist/jeb/JebProvider.js +297 -0
  1149. package/dist/logger.js +14 -0
  1150. package/dist/main/messages.js +4 -0
  1151. package/dist/main/shutdown.js +102 -0
  1152. package/dist/main/startup.js +21 -0
  1153. package/dist/main/transport.js +72 -0
  1154. package/dist/main/types.js +1 -0
  1155. package/dist/main.js +92 -0
  1156. package/dist/mcp/AnalysisSnapshotFiles-DbgHi36O.js +1225 -0
  1157. package/dist/mcp/ArtifactProvider-BNxKlaKX.js +2090 -0
  1158. package/dist/mcp/ArtifactProviderMetadata--hy-wyJK.js +76 -0
  1159. package/dist/mcp/ArtifactReader-OyM03Gjn.js +55 -0
  1160. package/dist/mcp/ArtifactResourceScope-CBR5q4aK.js +108 -0
  1161. package/dist/mcp/AsarHeader-WsPgoooH.js +31 -0
  1162. package/dist/mcp/BinaryTargetResolver-DbiUzRLh.js +1073 -0
  1163. package/dist/mcp/BoundedFileBytes-CJPW_TzE.js +68 -0
  1164. package/dist/mcp/CdpConnection-CM0tkVfW.js +557 -0
  1165. package/dist/mcp/CdpOptionalCommand-H8_fL7Q_.js +120 -0
  1166. package/dist/mcp/CdpTargetSession-OYD1d6XM.js +647 -0
  1167. package/dist/mcp/DirectAnalysis-BWAu8Ro5.js +395 -0
  1168. package/dist/mcp/DirectAnalysisStatus-DofNPhKd.js +33 -0
  1169. package/dist/mcp/ElectronFileScope-DEayib6K.js +110 -0
  1170. package/dist/mcp/InterfaceBuilderDecodeBudget-CUrOtfNo.js +401 -0
  1171. package/dist/mcp/ManagedStaticProvider-CXE93Bow.js +4460 -0
  1172. package/dist/mcp/NativeMacOSProvider-BbITFLHW.js +4408 -0
  1173. package/dist/mcp/NativeMacOSProviderMetadata-mxDhaNJf.js +281 -0
  1174. package/dist/mcp/ProcedureAddressResolution-Gnjf9Hya.js +19 -0
  1175. package/dist/mcp/ProcessOwnership-nOFZsmD3.js +1411 -0
  1176. package/dist/mcp/WorkflowEvidence-DJyEy3K0.js +94 -0
  1177. package/dist/mcp/analysisErrorCore-BqyeMw3_.js +201 -0
  1178. package/dist/mcp/analysisErrorProjection-B7pHef2y.js +724 -0
  1179. package/dist/mcp/artifactOperationError-B_jxO8at.js +27 -0
  1180. package/dist/mcp/artifactToolContracts-TXegBBr1.js +159 -0
  1181. package/dist/mcp/browserObservation-BCgaDRyQ.js +4398 -0
  1182. package/dist/mcp/browserObservationError-BKBEX85K.js +40 -0
  1183. package/dist/mcp/browserObservationSchemas-yzRJ90-E.js +573 -0
  1184. package/dist/mcp/browserScenario-z7jveI9P.js +2319 -0
  1185. package/dist/mcp/browserScenarioCapture-BvnKTmtZ.js +460 -0
  1186. package/dist/mcp/canonicalDigest-Bi_0_zGi.js +71 -0
  1187. package/dist/mcp/digests-Dugt3H71.js +199 -0
  1188. package/dist/mcp/electronActiveObservation-lDvQTMR0.js +226 -0
  1189. package/dist/mcp/electronObservation-DjQQYGw4.js +556 -0
  1190. package/dist/mcp/electronObservation-DuhMHCmQ.js +112 -0
  1191. package/dist/mcp/electronScenario-9mLG6h-g.js +586 -0
  1192. package/dist/mcp/emptyArraySchema-DEEefG2V.js +140 -0
  1193. package/dist/mcp/enhancedInputs-CLdEXv88.js +56 -0
  1194. package/dist/mcp/interfaceBuilderGraph-BOKqQzjK.js +2613 -0
  1195. package/dist/mcp/javascriptRuntimeObservation-C_wglsz_.js +661 -0
  1196. package/dist/mcp/javascriptRuntimeObservation-CxQ1UT_y.js +121 -0
  1197. package/dist/mcp/lipo-Do-2eBrl.js +465 -0
  1198. package/dist/mcp/localPath-AxvW9aPe.js +19 -0
  1199. package/dist/mcp/logger-CZ4Hlc6u.js +34 -0
  1200. package/dist/mcp/machoContainer-9En6pSkd.js +813 -0
  1201. package/dist/mcp/main-WQSCuTNt.js +52791 -0
  1202. package/dist/mcp/main.js +6 -0
  1203. package/dist/mcp/managedToolContracts-o5LHFwHc.js +81 -0
  1204. package/dist/mcp/plistValue-DsU7z4yF.js +47 -0
  1205. package/dist/mcp/propertyListKeys-cX-BUv2y.js +197 -0
  1206. package/dist/mcp/providerAdapterError-CdPaQ6-Z.js +27 -0
  1207. package/dist/mcp/providerCleanupError-DvE79aUX.js +49 -0
  1208. package/dist/mcp/providerIdentities--ptAh481.js +31 -0
  1209. package/dist/mcp/providerIdentity-BCQ5n5tw.js +16 -0
  1210. package/dist/mcp/providerOperationHealth-CUeCJZiP.js +212 -0
  1211. package/dist/mcp/rolldown-runtime-BjeaiXFo.js +121 -0
  1212. package/dist/mcp/safeJson-NeGfpkrI.js +25 -0
  1213. package/dist/mcp/scanCanonical-2GN0h-BE.js +3647 -0
  1214. package/dist/mcp/serverIdentity-rOY69sxc.js +633 -0
  1215. package/dist/mcp/sourceMapEnvelope-D8Zezqyi.js +252 -0
  1216. package/dist/mcp/toolContracts-CrfYDTUz.js +14561 -0
  1217. package/dist/mcp/toolOutputSchemaGroups-ChxVLGoy.js +11114 -0
  1218. package/dist/mcp/unicodeCodePointOrder-BezCbTpg.js +26 -0
  1219. package/dist/mcp/webContentArtifact-DUBgMzVO.js +185 -0
  1220. package/dist/mcp/webRuntime-C2Tx-fgS.js +74 -0
  1221. package/dist/mcp/webSourceLocation-Dnkpf0R2.js +8532 -0
  1222. package/dist/mcpDoctor.js +360 -0
  1223. package/dist/mcpStartupPolicy.js +14 -0
  1224. package/dist/native/AppleDispatchCoverage.js +112 -0
  1225. package/dist/native/AppleDispatchDecodeFacts.js +6 -0
  1226. package/dist/native/AppleDispatchMetadata.js +176 -0
  1227. package/dist/native/AppleMachoFixups.js +372 -0
  1228. package/dist/native/AppleMachoSelection.js +234 -0
  1229. package/dist/native/AppleObjcCategories.js +63 -0
  1230. package/dist/native/AppleObjcDispatchFacets.js +260 -0
  1231. package/dist/native/AppleObjcProperties.js +79 -0
  1232. package/dist/native/AppleObjcProtocols.js +89 -0
  1233. package/dist/native/AppleSwiftDispatchFacets.js +156 -0
  1234. package/dist/native/AppleSwiftVtables.js +92 -0
  1235. package/dist/native/CommandRunner.js +240 -0
  1236. package/dist/native/LldbCallTracer.js +713 -0
  1237. package/dist/native/LldbRetainedObservations.js +178 -0
  1238. package/dist/native/NativeCallObservation.js +195 -0
  1239. package/dist/native/NativeMacOSProvider.js +701 -0
  1240. package/dist/native/NativeMacOSProviderMetadata.js +46 -0
  1241. package/dist/native/NativeMachoInspection.js +273 -0
  1242. package/dist/native/NativeUiHelperRuntime.js +66 -0
  1243. package/dist/native/NativeUiObservation.js +183 -0
  1244. package/dist/native/NativeUiOutputBudget.js +8 -0
  1245. package/dist/native/SignatureTargetBinding.js +155 -0
  1246. package/dist/native/parsers/codesign.js +93 -0
  1247. package/dist/native/parsers/demangle.js +30 -0
  1248. package/dist/native/parsers/dyldInfo.js +60 -0
  1249. package/dist/native/parsers/echoedPath.js +14 -0
  1250. package/dist/native/parsers/lipo.js +177 -0
  1251. package/dist/native/parsers/machoUuid.js +150 -0
  1252. package/dist/native/parsers/otool.js +379 -0
  1253. package/dist/native/parsers/plist.js +187 -0
  1254. package/dist/native/pe/PeResourceLayout.js +120 -0
  1255. package/dist/native/pe/PeResourceParser.js +286 -0
  1256. package/dist/native/pe/PeResourcesProvider.js +63 -0
  1257. package/dist/native/pwndbg/PwndbgCoreContext.js +180 -0
  1258. package/dist/native/pwntools/PwntoolsDecoder.js +206 -0
  1259. package/dist/native/pwntools/PwntoolsFailures.js +180 -0
  1260. package/dist/native/pwntools/PwntoolsLayoutProvider.js +36 -0
  1261. package/dist/native/pwntools/PwntoolsRecordedCrashProvider.js +75 -0
  1262. package/dist/native/pwntools/PwntoolsRelease.js +19 -0
  1263. package/dist/native/pwntools/PwntoolsResourceLimits.js +76 -0
  1264. package/dist/native/pwntools/RecordedCrashSourceBindings.js +46 -0
  1265. package/dist/native/pwntools/RecordedCrashStructureBindings.js +103 -0
  1266. package/dist/process/BoundedFileBytes.js +40 -0
  1267. package/dist/process/DarwinProcessRunTokenReader.js +376 -0
  1268. package/dist/process/ExecFileOutput.js +124 -0
  1269. package/dist/process/JavaScriptWorkerMemoryLimit.js +25 -0
  1270. package/dist/process/OwnedCommand.js +131 -0
  1271. package/dist/process/PendingOperations.js +61 -0
  1272. package/dist/process/PrivateRuntimeRoot.js +61 -0
  1273. package/dist/process/ProcessCommandIdentity.js +19 -0
  1274. package/dist/process/ProcessOwnership.js +636 -0
  1275. package/dist/process/ProcessOwnershipIdentity.js +13 -0
  1276. package/dist/process/ProcessOwnershipObservation.js +407 -0
  1277. package/dist/process/ProcessOwnershipProcessTree.js +35 -0
  1278. package/dist/process/ProcessRunTokenObservations.js +48 -0
  1279. package/dist/process/ProviderDeadline.js +91 -0
  1280. package/dist/process/ProviderDiagnosticRedaction.js +17 -0
  1281. package/dist/process/ProviderProcess.js +381 -0
  1282. package/dist/process/ProviderRunLineage.js +21 -0
  1283. package/dist/process/WindowsAuthority.js +51 -0
  1284. package/dist/process/WindowsBatchCommand.js +46 -0
  1285. package/dist/process/boundedUtf8Text.js +13 -0
  1286. package/dist/process/capture/FilesystemSnapshot.js +268 -0
  1287. package/dist/process/capture/ProcessCaptureCapability.js +65 -0
  1288. package/dist/process/capture/ProcessCaptureEnvironment.js +9 -0
  1289. package/dist/process/capture/ProcessCaptureError.js +74 -0
  1290. package/dist/process/capture/ProcessCaptureJournal.js +61 -0
  1291. package/dist/process/capture/ProcessCaptureLifecycle.js +1050 -0
  1292. package/dist/process/capture/ProcessCaptureProgress.js +62 -0
  1293. package/dist/process/capture/ProcessFilesystemEffects.js +81 -0
  1294. package/dist/process/capture/ProcessHarness.js +602 -0
  1295. package/dist/process/capture/ProcessNormalization.js +88 -0
  1296. package/dist/process/capture/ProcessSampling.js +415 -0
  1297. package/dist/process/capture/ProcessScenarioRuntimeValidation.js +79 -0
  1298. package/dist/process/capture/ProcessTimer.js +39 -0
  1299. package/dist/process/capture/TerminalRenderer.js +124 -0
  1300. package/dist/process/snapshotEnvironment.js +14 -0
  1301. package/dist/reference/ReferenceSourceReader.js +73 -0
  1302. package/dist/reference/ReferenceSourceReaderEntries.js +273 -0
  1303. package/dist/reference/ReferenceSourceReaderErrors.js +54 -0
  1304. package/dist/reference/ReferenceSourceReaderFile.js +147 -0
  1305. package/dist/reference/ReferenceSourceReaderPaths.js +8 -0
  1306. package/dist/reference/ReferenceSourceReaderTypes.js +1 -0
  1307. package/dist/reference/ReferenceSourceReaderValidate.js +81 -0
  1308. package/dist/server/EvidenceMcpServer.js +216 -0
  1309. package/dist/server/admittedToolOperation.js +9 -0
  1310. package/dist/server/analysisAdmission.js +8 -0
  1311. package/dist/server/contractToolHandler.js +21 -0
  1312. package/dist/server/createServer.js +344 -0
  1313. package/dist/server/lifecycleProgress.js +10 -0
  1314. package/dist/server/mcpClientMetadata.js +42 -0
  1315. package/dist/server/mcpProgress.js +26 -0
  1316. package/dist/server/promptCompletion.js +141 -0
  1317. package/dist/server/recordDerivedEvidence.js +10 -0
  1318. package/dist/server/registerAdbTools.js +36 -0
  1319. package/dist/server/registerAnalysisViewTool.js +10 -0
  1320. package/dist/server/registerAndroidTools.js +31 -0
  1321. package/dist/server/registerApktoolTools.js +14 -0
  1322. package/dist/server/registerApplicationTools/compareExportShapes.js +29 -0
  1323. package/dist/server/registerApplicationTools/compareSourceToBundle.js +29 -0
  1324. package/dist/server/registerApplicationTools/compareVersions.js +34 -0
  1325. package/dist/server/registerApplicationTools/coverage.js +13 -0
  1326. package/dist/server/registerApplicationTools/helpers.js +37 -0
  1327. package/dist/server/registerApplicationTools/obligationLedger.js +23 -0
  1328. package/dist/server/registerApplicationTools/projectMobileApplicationGraph.js +50 -0
  1329. package/dist/server/registerApplicationTools/traceFeature.js +26 -0
  1330. package/dist/server/registerApplicationTools/traceSemantics.js +25 -0
  1331. package/dist/server/registerApplicationTools/types.js +1 -0
  1332. package/dist/server/registerApplicationTools.js +19 -0
  1333. package/dist/server/registerArtifactComparisonTool.js +71 -0
  1334. package/dist/server/registerArtifactTools.js +14 -0
  1335. package/dist/server/registerBinaryDiagnosticsTools.js +26 -0
  1336. package/dist/server/registerBrowserScenarioTool.js +26 -0
  1337. package/dist/server/registerBrowserTools.js +58 -0
  1338. package/dist/server/registerBundleComparisonTool.js +54 -0
  1339. package/dist/server/registerCloseLifecycleTool.js +55 -0
  1340. package/dist/server/registerElectronTools.js +70 -0
  1341. package/dist/server/registerEnhancedTools.js +169 -0
  1342. package/dist/server/registerEvidenceTools.js +68 -0
  1343. package/dist/server/registerEvmTools.js +9 -0
  1344. package/dist/server/registerFirmwareTools.js +11 -0
  1345. package/dist/server/registerFunctionComparisonTool.js +86 -0
  1346. package/dist/server/registerGoTools.js +9 -0
  1347. package/dist/server/registerInvestigationTools/helpers.js +46 -0
  1348. package/dist/server/registerInvestigationTools/types.js +1 -0
  1349. package/dist/server/registerInvestigationTools.js +168 -0
  1350. package/dist/server/registerJavaScriptRecoveryTool.js +9 -0
  1351. package/dist/server/registerJavaScriptRuntimeObservationTools.js +27 -0
  1352. package/dist/server/registerJebTools.js +16 -0
  1353. package/dist/server/registerManagedTools.js +40 -0
  1354. package/dist/server/registerManagedWorkflowTools/compareManagedMembers.js +53 -0
  1355. package/dist/server/registerManagedWorkflowTools/contract.js +7 -0
  1356. package/dist/server/registerManagedWorkflowTools/evidence.js +27 -0
  1357. package/dist/server/registerManagedWorkflowTools/importManagedReconstruction.js +27 -0
  1358. package/dist/server/registerManagedWorkflowTools/projectManagedApplicationGraph.js +41 -0
  1359. package/dist/server/registerManagedWorkflowTools/types.js +1 -0
  1360. package/dist/server/registerManagedWorkflowTools/verifyManagedNativeBoundaries.js +62 -0
  1361. package/dist/server/registerManagedWorkflowTools.js +11 -0
  1362. package/dist/server/registerOfficialTools.js +74 -0
  1363. package/dist/server/registerPeResourcesTool.js +9 -0
  1364. package/dist/server/registerProcessComparisonTool.js +156 -0
  1365. package/dist/server/registerPrompts.js +73 -0
  1366. package/dist/server/registerRecordedCrashTools.js +9 -0
  1367. package/dist/server/registerSessionRecordTools.js +90 -0
  1368. package/dist/server/registerSessionStatusTool.js +61 -0
  1369. package/dist/server/registerSessionTools.js +217 -0
  1370. package/dist/server/registerWasmTools.js +9 -0
  1371. package/dist/server/registerWebModuleTool.js +9 -0
  1372. package/dist/server/registerWebNetworkCaptureTool.js +20 -0
  1373. package/dist/server/registerWebRuntimeTools.js +27 -0
  1374. package/dist/server/registerWebScriptTool.js +18 -0
  1375. package/dist/server/registerWebSourceLocationTool.js +9 -0
  1376. package/dist/server/runDerivedOperation.js +55 -0
  1377. package/dist/server/sessionAvailabilityPolicy.js +29 -0
  1378. package/dist/server/sessionEvidence.js +11 -0
  1379. package/dist/server/toolLogging.js +11 -0
  1380. package/dist/server/toolRegistrationOptions.js +9 -0
  1381. package/dist/server/toolResult.js +119 -0
  1382. package/dist/server/toolResultEncoding.js +34 -0
  1383. package/dist/serverIdentity.js +69 -0
  1384. package/dist/wasm/WabtArtifactProvider.js +313 -0
  1385. package/dist/wasm/WabtFailures.js +62 -0
  1386. package/dist/wasm/WabtOutput.js +60 -0
  1387. package/dist/wasm/WabtRelease.js +12 -0
  1388. package/dist/wasm/WabtWat.js +184 -0
  1389. package/dist/wasm/WasmGlueAdapter.js +51 -0
  1390. package/dist/windows/WindowsNativeLoader.js +124 -0
  1391. package/dist/windows/WindowsOwnedProcess.js +265 -0
  1392. package/dist/windows/WindowsPrivateRuntime.js +143 -0
  1393. package/hooks/hooks.json +17 -0
  1394. package/install.sh +172 -0
  1395. package/licenses/Apache-2.0.txt +202 -0
  1396. package/licenses/GCC-Runtime-Library-Exception-3.1.txt +73 -0
  1397. package/licenses/GPL-3.0.txt +674 -0
  1398. package/licenses/MIT-template.txt +18 -0
  1399. package/licenses/MinGW-w64-runtime.txt +240 -0
  1400. package/licenses/Node-22.19.0-LICENSE.txt +2666 -0
  1401. package/licenses/README.md +54 -0
  1402. package/licenses/cfworker-MIT.txt +21 -0
  1403. package/licenses/digfox-MIT.txt +21 -0
  1404. package/licenses/dotnet-runtime-MIT.txt +23 -0
  1405. package/licenses/ghidra-12.1.4-DISCLAIMER.txt +13 -0
  1406. package/licenses/ghidra-12.1.4-LICENSE.txt +201 -0
  1407. package/licenses/ghidra-12.1.4-NOTICE.txt +49 -0
  1408. package/licenses/nativeaot-parser-MIT.txt +28 -0
  1409. package/licenses/npm-dependencies.txt +2812 -0
  1410. package/licenses/npm-runtime-notices.txt +6632 -0
  1411. package/licenses/rea-jev-MIT.txt +21 -0
  1412. package/licenses/rea-lab-MIT.txt +21 -0
  1413. package/licenses/upstream-sources.json +62 -0
  1414. package/licenses/xterm-MIT.txt +21 -0
  1415. package/native/windows/README.md +156 -0
  1416. package/native/windows/build/manifest.json +9 -0
  1417. package/native/windows/build/rea-windows-x64.node +0 -0
  1418. package/package.json +371 -4
  1419. package/port/cli.mjs +210 -0
  1420. package/port/hooks/guard.mjs +140 -0
  1421. package/port/knowledge/engines.json +67 -0
  1422. package/port/knowledge/footprints.json +189 -0
  1423. package/port/knowledge/maps/godot-godot-csharp.json +38 -0
  1424. package/port/knowledge/maps/godot-threejs.json +42 -0
  1425. package/port/knowledge/maps/godot-unity.json +62 -0
  1426. package/port/knowledge/maps/godot-unreal.json +48 -0
  1427. package/port/knowledge/maps/unity-godot.json +52 -0
  1428. package/port/knowledge/maps/unity-unreal.json +33 -0
  1429. package/port/knowledge/systems.json +1554 -0
  1430. package/port/mcp.mjs +62 -0
  1431. package/port/plugin/mcp-launch.mjs +19 -0
  1432. package/port/server.mjs +129 -0
  1433. package/port/src/agent.mjs +257 -0
  1434. package/port/src/archive.mjs +324 -0
  1435. package/port/src/binary.mjs +606 -0
  1436. package/port/src/blueprint.mjs +225 -0
  1437. package/port/src/compare.mjs +165 -0
  1438. package/port/src/connect.mjs +58 -0
  1439. package/port/src/convert.mjs +134 -0
  1440. package/port/src/formats.mjs +229 -0
  1441. package/port/src/graph.mjs +275 -0
  1442. package/port/src/knowledge.mjs +90 -0
  1443. package/port/src/lookup.mjs +615 -0
  1444. package/port/src/main-module.mjs +10 -0
  1445. package/port/src/plan.mjs +606 -0
  1446. package/port/src/porters.mjs +360 -0
  1447. package/port/src/proofcase.mjs +343 -0
  1448. package/port/src/relay.mjs +493 -0
  1449. package/port/src/scan.mjs +189 -0
  1450. package/port/src/scene.mjs +338 -0
  1451. package/port/src/stashpad.mjs +114 -0
  1452. package/port/src/symbols.mjs +201 -0
  1453. package/port/src/tools.mjs +198 -0
  1454. package/port/src/util.mjs +162 -0
  1455. package/port/src/workspace.mjs +39 -0
  1456. package/port/templates/unity/ReversePortSceneBuilder.cs +258 -0
  1457. package/scripts/electron-active-hook-boundaries.cjs +392 -0
  1458. package/scripts/electron-active-hook.cjs +673 -0
  1459. package/scripts/hopper-demo-x11.py +787 -0
  1460. package/scripts/prepack.mjs +60 -0
  1461. package/scripts/prepare.mjs +28 -0
  1462. package/scripts/rea.mjs +110 -0
  1463. package/scripts/verify-windows-native-artifact.mjs +39 -0
  1464. package/skills/build-inspector/SKILL.md +44 -0
  1465. package/skills/godot-port/SKILL.md +42 -0
  1466. package/skills/port-project/SKILL.md +59 -0
  1467. package/skills/port-verify/SKILL.md +35 -0
  1468. package/skills/proof-case/SKILL.md +52 -0
  1469. package/skills/rebuild/SKILL.md +66 -0
  1470. package/skills/reverse-engineer/SKILL.md +67 -0
  1471. package/skills/reverse-engineer-anything/SKILL.md +204 -0
  1472. package/skills/reverse-engineer-anything/references/android-applications.md +34 -0
  1473. package/skills/reverse-engineer-anything/references/connection-and-recovery.md +130 -0
  1474. package/skills/reverse-engineer-anything/references/evidence-workflows.md +54 -0
  1475. package/skills/reverse-engineer-anything/references/godot-source.md +37 -0
  1476. package/skills/reverse-engineer-anything/references/javascript-applications.md +175 -0
  1477. package/skills/reverse-engineer-anything/references/native-and-artifacts.md +252 -0
  1478. package/skills/reverse-engineer-anything/references/porting-and-rebuilds.md +92 -0
  1479. package/skills/reverse-engineer-anything/references/runtime-observation.md +28 -0
  1480. package/skills/reverse-engineer-anything/references/unity-source.md +32 -0
  1481. package/skills/troubleshoot/SKILL.md +27 -0
  1482. package/skills/unity-to-godot/SKILL.md +37 -0
  1483. package/third_party/README.md +60 -0
  1484. package/third_party/evmole/LICENSE +21 -0
  1485. package/third_party/evmole/README.md +22 -0
  1486. package/third_party/pwndbg/LICENSE.md +21 -0
  1487. package/third_party/pwndbg/README.md +23 -0
  1488. package/third_party/pwntools/README.md +40 -0
  1489. package/third_party/wabt/README.md +24 -0
@@ -0,0 +1,2613 @@
1
+ import { t as __esmMin } from "./rolldown-runtime-BjeaiXFo.js";
2
+ import { d as init_analysisErrorCore, f as err, m as ok, o as AnalysisOutputError, p as init_result } from "./analysisErrorCore-BqyeMw3_.js";
3
+ import { c as jsonValueSchema, d as freezeJsonSnapshot, i as prefixedDigestSchema, l as jsonValueValidationIssue, m as isImmutableJsonSnapshot, n as init_digests, o as init_jsonValue, p as init_immutableJson, s as jsonObjectSchema, t as digestSchema, u as jsonValueValidationSteps } from "./digests-Dugt3H71.js";
4
+ import { l as HopperProtocolError, p as init_hopperErrors } from "./providerOperationHealth-CUeCJZiP.js";
5
+ import { n as compositeKey, r as init_unicodeCodePointOrder, t as compareUnicodeCodePoints } from "./unicodeCodePointOrder-BezCbTpg.js";
6
+ import { i as nulFreeStringSchema, t as init_localPath } from "./localPath-AxvW9aPe.js";
7
+ import { n as init_canonicalDigest, t as digestCanonicalValue } from "./canonicalDigest-Bi_0_zGi.js";
8
+ import { basename } from "node:path";
9
+ import { z } from "zod";
10
+ import { createHash } from "node:crypto";
11
+ import canonicalize from "canonicalize";
12
+
13
+ //#region dist/domain/relationshipCoverage.js
14
+ var diagnostics, completeCoverage, partialCoverage, unknownCoverage, relationshipCoverageSchema;
15
+ function init_relationshipCoverage() {
16
+ return (init_relationshipCoverage = __esmMin((() => {
17
+ diagnostics = z.array(z.string().min(1)).min(1);
18
+ completeCoverage = z.strictObject({ status: z.literal("complete") });
19
+ partialCoverage = z.strictObject({
20
+ status: z.literal("partial"),
21
+ limitations: z.array(z.string().min(1)).min(1)
22
+ });
23
+ unknownCoverage = z.strictObject({
24
+ status: z.literal("unknown"),
25
+ reason: z.string().min(1)
26
+ });
27
+ relationshipCoverageSchema = z.union([
28
+ completeCoverage,
29
+ completeCoverage.extend({ diagnostics }),
30
+ partialCoverage,
31
+ partialCoverage.extend({ diagnostics }),
32
+ unknownCoverage,
33
+ unknownCoverage.extend({ diagnostics })
34
+ ]);
35
+ })))();
36
+ }
37
+
38
+ //#endregion
39
+ //#region dist/domain/binaryTargetTypes.js
40
+ var BINARY_ARCHITECTURES, isMachOFormat;
41
+ function init_binaryTargetTypes() {
42
+ return (init_binaryTargetTypes = __esmMin((() => {
43
+ BINARY_ARCHITECTURES = [
44
+ "x86",
45
+ "x86_64",
46
+ "arm",
47
+ "arm64",
48
+ "mips"
49
+ ];
50
+ isMachOFormat = (format) => format === "mach-o" || format === "mach-o-universal";
51
+ })))();
52
+ }
53
+
54
+ //#endregion
55
+ //#region dist/domain/analysisProfile.js
56
+ var committedProviderSchema, unsignedAnalysisProfileSchema, analysisProfileSchema, createAnalysisProfile, analysisProfilesEqual, profileDigest, canonicalJson;
57
+ function init_analysisProfile() {
58
+ return (init_analysisProfile = __esmMin((() => {
59
+ init_jsonValue();
60
+ init_digests();
61
+ committedProviderSchema = z.object({
62
+ id: z.string().min(1),
63
+ name: z.string().min(1),
64
+ version: z.string().min(1)
65
+ });
66
+ unsignedAnalysisProfileSchema = z.object({
67
+ provider: committedProviderSchema,
68
+ parameters: jsonObjectSchema
69
+ });
70
+ analysisProfileSchema = unsignedAnalysisProfileSchema.extend({ digest: digestSchema }).superRefine((profile, context) => {
71
+ const { digest: _digest, ...unsigned } = profile;
72
+ if (profileDigest(unsigned) !== profile.digest) context.addIssue({
73
+ code: "custom",
74
+ path: ["digest"],
75
+ message: "Analysis profile digest does not match its parameters"
76
+ });
77
+ });
78
+ createAnalysisProfile = (provider, parameters) => {
79
+ const unsigned = unsignedAnalysisProfileSchema.parse({
80
+ provider,
81
+ parameters
82
+ });
83
+ return analysisProfileSchema.parse({
84
+ ...unsigned,
85
+ digest: profileDigest(unsigned)
86
+ });
87
+ };
88
+ 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;
89
+ profileDigest = (profile) => createHash("sha256").update(canonicalJson(profile)).digest("hex");
90
+ canonicalJson = (value) => {
91
+ const encoded = canonicalize(value);
92
+ if (encoded === undefined) throw new TypeError("RFC 8785 canonicalization rejected analysis profile");
93
+ return encoded;
94
+ };
95
+ })))();
96
+ }
97
+
98
+ //#endregion
99
+ //#region dist/domain/native/nativeApiBoundary.js
100
+ var inferenceConfidenceSchema, inferenceEvidenceSchema, inferredBoundaryTypeFacts, inferredReturnTypeSchema, inferredParameterTypeSchema, jumpTableDataSourceSchema, jumpTableMappingSchema, jumpTableDefaultTargetSchema, inferredJumpTableSchema, availableNativeApiBoundarySchema, unavailableNativeApiBoundarySchema, nativeApiBoundarySchema, nativeApiInspectionSubstepSchema, nativeApiInspectionResultSchema;
101
+ function init_nativeApiBoundary() {
102
+ return (init_nativeApiBoundary = __esmMin((() => {
103
+ inferenceConfidenceSchema = z.enum([
104
+ "low",
105
+ "medium",
106
+ "high"
107
+ ]);
108
+ inferenceEvidenceSchema = z.object({
109
+ kind: z.enum([
110
+ "signature-source",
111
+ "decompiler-type",
112
+ "type-lock",
113
+ "calling-convention",
114
+ "jump-table"
115
+ ]),
116
+ source: z.string().min(1),
117
+ detail: z.string().min(1)
118
+ }).strict();
119
+ inferredBoundaryTypeFacts = {
120
+ ordinal: z.number().int().min(0).nullable(),
121
+ name: z.string().min(1).nullable(),
122
+ data_type: z.string().min(1),
123
+ size_bytes: z.number().int().min(0).nullable(),
124
+ storage: z.string().min(1).nullable(),
125
+ confidence: inferenceConfidenceSchema,
126
+ evidence: z.array(inferenceEvidenceSchema).min(1),
127
+ decompiler_artifacts: z.array(z.enum([
128
+ "recovered-signature",
129
+ "register-or-stack-storage",
130
+ "compiler-generated-variable"
131
+ ]))
132
+ };
133
+ inferredReturnTypeSchema = z.strictObject({
134
+ ...inferredBoundaryTypeFacts,
135
+ role: z.literal("return"),
136
+ ordinal: z.null(),
137
+ name: z.null()
138
+ });
139
+ inferredParameterTypeSchema = z.strictObject({
140
+ ...inferredBoundaryTypeFacts,
141
+ role: z.literal("parameter"),
142
+ ordinal: z.number().int().min(0)
143
+ });
144
+ jumpTableDataSourceSchema = z.object({
145
+ address: z.string().min(1),
146
+ provenance: z.enum([
147
+ "ghidra-decompiler-load-table",
148
+ "ghidra-dispatch-block-data-reference",
149
+ "ghidra-aarch64-byte-table",
150
+ "ghidra-aarch64-halfword-table"
151
+ ]),
152
+ entry_size_bytes: z.number().int().min(1).nullable(),
153
+ entry_count: z.number().int().min(0).nullable(),
154
+ confidence: inferenceConfidenceSchema,
155
+ evidence: z.array(inferenceEvidenceSchema).min(1)
156
+ }).strict();
157
+ jumpTableMappingSchema = z.object({
158
+ case_value: z.number().int().nullable(),
159
+ target_address: z.string().min(1),
160
+ confidence: inferenceConfidenceSchema,
161
+ evidence: z.array(inferenceEvidenceSchema).min(1)
162
+ }).strict();
163
+ jumpTableDefaultTargetSchema = z.strictObject({
164
+ target_address: z.string().min(1),
165
+ confidence: inferenceConfidenceSchema,
166
+ evidence: z.array(inferenceEvidenceSchema).min(1)
167
+ });
168
+ inferredJumpTableSchema = z.object({
169
+ dispatch_address: z.string().min(1),
170
+ data_sources: z.array(jumpTableDataSourceSchema),
171
+ mappings: z.array(jumpTableMappingSchema),
172
+ default_targets: z.array(jumpTableDefaultTargetSchema),
173
+ limitations: z.array(z.string())
174
+ }).strict();
175
+ availableNativeApiBoundarySchema = z.object({
176
+ available: z.literal(true),
177
+ provenance: z.string().min(1),
178
+ signature_source: z.string().min(1),
179
+ calling_convention: z.string().min(1),
180
+ return_type: inferredReturnTypeSchema,
181
+ parameters: z.array(inferredParameterTypeSchema),
182
+ jump_tables: z.array(inferredJumpTableSchema),
183
+ pseudocode: z.object({
184
+ classification: z.literal("decompiler-generated-non-source"),
185
+ compilable: z.literal(false)
186
+ }).strict(),
187
+ decompiler_artifacts: z.array(z.enum([
188
+ "recovered-signature",
189
+ "register-and-stack-variables",
190
+ "compiler-generated-control-flow",
191
+ "pointer-arithmetic",
192
+ "pseudocode"
193
+ ])),
194
+ limitations: z.array(z.string())
195
+ }).strict();
196
+ unavailableNativeApiBoundarySchema = z.object({
197
+ available: z.literal(false),
198
+ reason: z.string().min(1),
199
+ residual_unknowns: z.array(z.string().min(1)).min(1)
200
+ }).strict();
201
+ nativeApiBoundarySchema = z.discriminatedUnion("available", [unavailableNativeApiBoundarySchema, availableNativeApiBoundarySchema]);
202
+ nativeApiInspectionSubstepSchema = z.object({
203
+ operation: z.enum([
204
+ "analyze_function",
205
+ "project_native_api_boundary",
206
+ "preserve_residual_unknowns"
207
+ ]),
208
+ status: z.enum(["completed", "unsupported"]),
209
+ observations: z.array(z.string().min(1))
210
+ }).strict();
211
+ nativeApiInspectionResultSchema = z.object({
212
+ procedure: z.object({
213
+ address: z.string().min(1),
214
+ name: z.string().min(1)
215
+ }).strict(),
216
+ boundary: nativeApiBoundarySchema,
217
+ substeps: z.array(nativeApiInspectionSubstepSchema).length(3),
218
+ unsupported_branches: z.array(z.string().min(1)),
219
+ residual_unknowns: z.array(z.string().min(1))
220
+ }).strict();
221
+ })))();
222
+ }
223
+
224
+ //#endregion
225
+ //#region dist/domain/native/nativeValueFlow.js
226
+ var nativeVarnodeSchema, nativePcodeOperationSchema, nativePcodeDefUseSchema, nativePcodeEffectSchema, nativeValueFlowSchema;
227
+ function init_nativeValueFlow() {
228
+ return (init_nativeValueFlow = __esmMin((() => {
229
+ nativeVarnodeSchema = z.strictObject({
230
+ kind: z.enum([
231
+ "constant",
232
+ "address",
233
+ "register",
234
+ "unique",
235
+ "other"
236
+ ]),
237
+ size_bytes: z.number().int().nonnegative(),
238
+ location: z.string().nullable(),
239
+ constant_hex: z.string().regex(/^[0-9a-f]+$/u).nullable()
240
+ });
241
+ nativePcodeOperationSchema = z.strictObject({
242
+ id: z.string().min(1),
243
+ address: z.string().min(1),
244
+ sequence: z.number().int().nonnegative(),
245
+ opcode: z.string().min(1),
246
+ is_dead: z.boolean(),
247
+ block_membership: z.enum([
248
+ "member",
249
+ "detached",
250
+ "unavailable"
251
+ ]),
252
+ inputs: z.array(nativeVarnodeSchema),
253
+ output: nativeVarnodeSchema.nullable()
254
+ });
255
+ nativePcodeDefUseSchema = z.strictObject({
256
+ definition: z.string().min(1),
257
+ use: z.string().min(1),
258
+ input_index: z.number().int().nonnegative()
259
+ });
260
+ nativePcodeEffectSchema = z.strictObject({
261
+ operation: z.string().min(1),
262
+ kind: z.enum([
263
+ "memory_read",
264
+ "memory_write",
265
+ "conditional_branch",
266
+ "indirect_branch",
267
+ "direct_call",
268
+ "indirect_call"
269
+ ]),
270
+ operand_input: z.number().int().nonnegative().nullable(),
271
+ value_input: z.number().int().nonnegative().nullable()
272
+ });
273
+ nativeValueFlowSchema = z.discriminatedUnion("available", [z.strictObject({
274
+ available: z.literal(true),
275
+ provenance: z.literal("ghidra-high-pcode"),
276
+ operations: z.array(nativePcodeOperationSchema),
277
+ def_use: z.array(nativePcodeDefUseSchema),
278
+ effects: z.array(nativePcodeEffectSchema),
279
+ parameters: z.array(z.strictObject({
280
+ ordinal: z.number().int().nonnegative(),
281
+ name: z.string(),
282
+ data_type: z.string()
283
+ })),
284
+ parameter_uses: z.array(z.strictObject({
285
+ ordinal: z.number().int().nonnegative(),
286
+ use: z.string(),
287
+ input_index: z.number().int().nonnegative()
288
+ })),
289
+ truncated: z.boolean(),
290
+ omitted_operations_lower_bound: z.number().int().nonnegative(),
291
+ known_omitted_inputs: z.number().int().nonnegative(),
292
+ known_omitted_edges: z.number().int().nonnegative(),
293
+ limitations: z.array(z.string().min(1))
294
+ }), z.strictObject({
295
+ available: z.literal(false),
296
+ reason: z.string().min(1),
297
+ limitations: z.array(z.string().min(1))
298
+ })]);
299
+ })))();
300
+ }
301
+
302
+ //#endregion
303
+ //#region dist/domain/hopperValues.js
304
+ var addressDistance, addressCoordinate, procedureMapSchema, addressedNamesSchema, addressedNameMapSchema, segmentSchema, unavailableAnalysisFactSchema, analysisStringSchema, analysisBookmarkSchema, functionBodySchema, functionBodyEntryAgrees, procedureClassificationSchema, procedureIdentitySchema, localVariableSchema, functionInstructionWindowSchema, availableReferenceKindSchema, referenceKindSchema, unresolvedCallSchema, referenceEdgeSchema, functionDossierSchema, parseFunctionDossier, parseProcedures, parseNames, parseRelatedAddresses, parseSegments, parseDocuments, parseListCount, unwrapProperty, invalid;
305
+ function init_hopperValues() {
306
+ return (init_hopperValues = __esmMin((() => {
307
+ init_result();
308
+ init_nativeApiBoundary();
309
+ init_nativeValueFlow();
310
+ init_analysisErrorCore();
311
+ init_hopperErrors();
312
+ addressDistance = (start, end) => {
313
+ const left = addressCoordinate(start);
314
+ const right = addressCoordinate(end);
315
+ if (left === null || right === null || left.space !== right.space) return 0;
316
+ const distance = right.offset - left.offset;
317
+ if (distance <= 0n) return 0;
318
+ return Number(distance > BigInt(Number.MAX_SAFE_INTEGER) ? BigInt(Number.MAX_SAFE_INTEGER) : distance);
319
+ };
320
+ addressCoordinate = (value) => {
321
+ const separator = value.lastIndexOf(":0x");
322
+ const space = separator < 0 ? "default" : value.slice(0, separator);
323
+ const offset = separator < 0 ? value : value.slice(separator + 1);
324
+ if (!/^0x[0-9a-f]+$/u.test(offset)) return null;
325
+ return {
326
+ space,
327
+ offset: BigInt(offset)
328
+ };
329
+ };
330
+ procedureMapSchema = z.record(z.string(), z.string());
331
+ addressedNamesSchema = z.array(z.object({
332
+ address: z.string(),
333
+ name: z.string()
334
+ }));
335
+ addressedNameMapSchema = z.record(z.string(), z.string());
336
+ segmentSchema = z.object({
337
+ name: z.string(),
338
+ start: z.string(),
339
+ end: z.string(),
340
+ readable: z.boolean().nullable(),
341
+ writable: z.boolean().nullable(),
342
+ executable: z.boolean().nullable()
343
+ });
344
+ unavailableAnalysisFactSchema = z.object({
345
+ available: z.literal(false),
346
+ reason: z.string()
347
+ }).strict();
348
+ analysisStringSchema = z.object({
349
+ address: z.string(),
350
+ value: z.string(),
351
+ provider_value: z.string().exactOptional().describe("Original provider display text, which may shorten the typed object."),
352
+ decoding: unavailableAnalysisFactSchema.exactOptional().describe("When present, value retains native display text because typed bytes could not be decoded."),
353
+ string: z.object({
354
+ encoding: z.string().min(1),
355
+ 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."),
356
+ termination: z.enum(["missing", "present_or_not_required"]),
357
+ byte_length: z.number().int().min(0)
358
+ }).exactOptional()
359
+ });
360
+ analysisBookmarkSchema = z.strictObject({
361
+ address: z.string(),
362
+ name: z.string().nullable()
363
+ });
364
+ functionBodySchema = z.discriminatedUnion("available", [unavailableAnalysisFactSchema, z.strictObject({
365
+ available: z.literal(true),
366
+ provenance: z.string().min(1),
367
+ ranges: z.array(z.strictObject({
368
+ start: z.string(),
369
+ end: z.string().describe("Inclusive last address of this observed body range.")
370
+ })),
371
+ total_bytes: z.number().int().min(0).max(Number.MAX_SAFE_INTEGER),
372
+ span_bytes: z.number().int().min(0).max(Number.MAX_SAFE_INTEGER).nullable(),
373
+ non_contiguous: z.boolean(),
374
+ contains_entry: z.boolean()
375
+ }).superRefine((body, context) => {
376
+ let total = 0n;
377
+ const bounds = new Map();
378
+ const closedSpaces = new Set();
379
+ let previousSpace = null;
380
+ for (const range of body.ranges) {
381
+ const start = addressCoordinate(range.start);
382
+ const end = addressCoordinate(range.end);
383
+ if (start === null || end === null || start.space !== end.space || end.offset < start.offset) {
384
+ context.addIssue({
385
+ code: "custom",
386
+ message: "Function body range has invalid inclusive endpoints"
387
+ });
388
+ return;
389
+ }
390
+ if (previousSpace !== null && previousSpace !== start.space) closedSpaces.add(previousSpace);
391
+ const previous = bounds.get(start.space);
392
+ if (closedSpaces.has(start.space) || previous !== undefined && start.offset <= previous.end + 1n) {
393
+ context.addIssue({
394
+ code: "custom",
395
+ message: "Function body ranges must be ordered, disjoint and maximal within each address space"
396
+ });
397
+ return;
398
+ }
399
+ bounds.set(start.space, {
400
+ start: previous?.start ?? start.offset,
401
+ end: end.offset
402
+ });
403
+ previousSpace = start.space;
404
+ total += end.offset - start.offset + 1n;
405
+ }
406
+ const onlyBounds = bounds.size === 1 ? [...bounds.values()][0] : undefined;
407
+ const span = bounds.size === 0 ? 0n : onlyBounds === undefined ? null : onlyBounds.end - onlyBounds.start + 1n;
408
+ const reportedSpan = body.span_bytes === null ? null : BigInt(body.span_bytes);
409
+ if (total !== BigInt(body.total_bytes) || span !== reportedSpan || body.non_contiguous !== body.ranges.length > 1) context.addIssue({
410
+ code: "custom",
411
+ message: "Function body counts, enclosing span or contiguity disagree with inclusive ranges"
412
+ });
413
+ })]);
414
+ functionBodyEntryAgrees = (body, address) => {
415
+ if (!body.available) return true;
416
+ const entry = addressCoordinate(address);
417
+ if (entry === null) return false;
418
+ const contains = body.ranges.some((range) => {
419
+ const start = addressCoordinate(range.start);
420
+ const end = addressCoordinate(range.end);
421
+ return start !== null && end !== null && start.space === entry.space && entry.offset >= start.offset && entry.offset <= end.offset;
422
+ });
423
+ return contains === body.contains_entry;
424
+ };
425
+ procedureClassificationSchema = z.object({
426
+ external: z.boolean(),
427
+ thunk: z.boolean(),
428
+ thunk_target: z.string().nullable(),
429
+ provenance: z.string().min(1)
430
+ }).strict();
431
+ procedureIdentitySchema = z.object({
432
+ address: z.string(),
433
+ name: z.string(),
434
+ classification: procedureClassificationSchema.nullable(),
435
+ body: functionBodySchema
436
+ }).strict().superRefine((identity, context) => {
437
+ if (!functionBodyEntryAgrees(identity.body, identity.address)) context.addIssue({
438
+ code: "custom",
439
+ message: "Function body entry membership disagrees with procedure identity"
440
+ });
441
+ });
442
+ localVariableSchema = z.object({
443
+ description: z.string(),
444
+ provenance: z.string().min(1),
445
+ name: z.string().nullable().exactOptional(),
446
+ stack_displacement: z.string().regex(/^-?\d+$/u).nullable().exactOptional().describe("Observed signed stack byte displacement, encoded as decimal to preserve precision.")
447
+ }).strict();
448
+ functionInstructionWindowSchema = z.object({
449
+ procedure: procedureIdentitySchema,
450
+ instructions: z.array(z.string()),
451
+ limitations: z.array(z.string())
452
+ }).strict();
453
+ availableReferenceKindSchema = z.object({
454
+ available: z.literal(true),
455
+ provenance: z.string().min(1),
456
+ type: z.string(),
457
+ flow: z.boolean(),
458
+ call: z.boolean(),
459
+ jump: z.boolean(),
460
+ data: z.boolean(),
461
+ read: z.boolean(),
462
+ write: z.boolean(),
463
+ indirect: z.boolean(),
464
+ computed: z.boolean(),
465
+ conditional: z.boolean(),
466
+ terminal: z.boolean(),
467
+ primary: z.boolean(),
468
+ operand_index: z.number().int(),
469
+ external: z.boolean()
470
+ }).strict();
471
+ referenceKindSchema = z.discriminatedUnion("available", [unavailableAnalysisFactSchema, availableReferenceKindSchema]);
472
+ unresolvedCallSchema = z.strictObject({
473
+ address: z.string(),
474
+ reason: z.string()
475
+ });
476
+ referenceEdgeSchema = z.object({
477
+ source_address: z.string(),
478
+ target_address: z.string(),
479
+ source_procedure: procedureIdentitySchema.nullable(),
480
+ target_procedure: procedureIdentitySchema.nullable(),
481
+ kind: referenceKindSchema,
482
+ call: z.strictObject({
483
+ classification: z.enum([
484
+ "none",
485
+ "unknown",
486
+ "direct",
487
+ "objective_c"
488
+ ]),
489
+ provider_type: z.number().int(),
490
+ provenance: z.string().min(1)
491
+ }).exactOptional()
492
+ }).strict();
493
+ functionDossierSchema = z.object({
494
+ procedure: procedureIdentitySchema.safeExtend({
495
+ signature: z.string().nullable(),
496
+ locals: z.array(localVariableSchema)
497
+ }),
498
+ pseudocode: z.string(),
499
+ assembly: z.array(z.string()),
500
+ comments: z.array(z.object({
501
+ address: z.string(),
502
+ kind: z.enum(["comment", "inline"]),
503
+ text: z.string()
504
+ }).strict()),
505
+ callers: z.array(procedureIdentitySchema),
506
+ callees: z.array(procedureIdentitySchema),
507
+ incoming_references: z.array(referenceEdgeSchema),
508
+ outgoing_references: z.array(referenceEdgeSchema),
509
+ unresolved_calls: z.array(unresolvedCallSchema).exactOptional(),
510
+ referenced_strings: z.array(analysisStringSchema.extend({ source_address: z.string() })),
511
+ referenced_names: z.array(z.object({
512
+ address: z.string(),
513
+ value: z.string(),
514
+ source_address: z.string()
515
+ }).strict()),
516
+ basic_blocks: z.array(z.object({
517
+ start: z.string(),
518
+ end: z.string(),
519
+ successors: z.array(z.string())
520
+ }).strict()),
521
+ native_api: nativeApiBoundarySchema.nullable(),
522
+ native_value_flow: nativeValueFlowSchema.nullable(),
523
+ limitations: z.array(z.string())
524
+ }).strict();
525
+ parseFunctionDossier = (value) => {
526
+ const parsed = functionDossierSchema.safeParse(value);
527
+ return parsed.success ? ok(parsed.data) : err(new AnalysisOutputError("analyze_function", "provider output did not match the dossier contract", { cause: parsed.error }));
528
+ };
529
+ parseProcedures = (value) => {
530
+ const parsed = procedureMapSchema.safeParse(unwrapProperty(value, "procedures"));
531
+ return parsed.success ? ok(Object.entries(parsed.data).map(([address, name]) => ({
532
+ address,
533
+ name
534
+ }))) : invalid("procedure map", parsed.error);
535
+ };
536
+ parseNames = (value) => {
537
+ const unwrapped = unwrapProperty(value, "names");
538
+ const records = addressedNamesSchema.safeParse(unwrapped);
539
+ if (records.success) return ok(records.data);
540
+ const map = addressedNameMapSchema.safeParse(unwrapped);
541
+ return map.success ? ok(Object.entries(map.data).map(([address, name]) => ({
542
+ address,
543
+ name
544
+ }))) : invalid("name list", map.error);
545
+ };
546
+ parseRelatedAddresses = (value, relation) => {
547
+ const parsed = z.array(z.string()).safeParse(unwrapProperty(value, relation));
548
+ return parsed.success ? ok(parsed.data) : invalid(`${relation} list`, parsed.error);
549
+ };
550
+ parseSegments = (value) => {
551
+ const parsed = z.array(segmentSchema).safeParse(unwrapProperty(value, "segments"));
552
+ return parsed.success ? ok(parsed.data) : invalid("segment list", parsed.error);
553
+ };
554
+ parseDocuments = (value) => {
555
+ const parsed = z.array(z.string()).safeParse(unwrapProperty(value, "documents"));
556
+ return parsed.success ? ok(parsed.data) : invalid("document list", parsed.error);
557
+ };
558
+ parseListCount = (value, property) => {
559
+ const unwrapped = unwrapProperty(value, property);
560
+ const list = z.array(z.unknown()).safeParse(unwrapped);
561
+ if (list.success) return ok(list.data.length);
562
+ const map = z.record(z.string(), z.unknown()).safeParse(unwrapped);
563
+ return map.success ? ok(Object.keys(map.data).length) : invalid(`${property} list`, map.error);
564
+ };
565
+ unwrapProperty = (value, property) => {
566
+ if (typeof value === "object" && value !== null && !Array.isArray(value) && property in value) {
567
+ return value[property] ?? null;
568
+ }
569
+ return value;
570
+ };
571
+ invalid = (expected, cause) => err(new HopperProtocolError(`Hopper returned an invalid ${expected}`, { cause }));
572
+ })))();
573
+ }
574
+
575
+ //#endregion
576
+ //#region dist/domain/native/nativeInstruction.js
577
+ var nativeInstructionInputSchema, reference, nativeInstructionSchema, nativeCallTargetsSchema;
578
+ function init_nativeInstruction() {
579
+ return (init_nativeInstruction = __esmMin((() => {
580
+ nativeInstructionInputSchema = z.strictObject({
581
+ address: z.string().min(1),
582
+ document: z.string().optional()
583
+ });
584
+ reference = z.strictObject({
585
+ target_address: z.string(),
586
+ type: z.string(),
587
+ call: z.boolean(),
588
+ jump: z.boolean(),
589
+ indirect: z.boolean(),
590
+ computed: z.boolean(),
591
+ operand_index: z.number().int(),
592
+ source_address: z.string().min(1).nullable().optional(),
593
+ data: z.boolean().nullable().optional(),
594
+ read: z.boolean().nullable().optional(),
595
+ write: z.boolean().nullable().optional(),
596
+ primary: z.boolean().nullable().optional().describe("Provider primary-reference status, not proof of literal addressing or a runtime access. Null or omission means unavailable."),
597
+ provenance: z.string().min(1).nullable().optional().describe("Provider subsystem reporting this reference; null or omission means unavailable."),
598
+ source: z.string().min(1).nullable().optional().describe("Provider reference origin, such as analysis, default, imported or user_defined; null or omission means unavailable.")
599
+ });
600
+ nativeInstructionSchema = z.strictObject({
601
+ address: z.string(),
602
+ status: z.enum([
603
+ "decoded",
604
+ "not-instruction-boundary",
605
+ "data",
606
+ "undecodable",
607
+ "outside-memory"
608
+ ]),
609
+ procedure: z.string().nullable(),
610
+ architecture: z.string(),
611
+ 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."),
612
+ decoder_context: z.array(z.strictObject({
613
+ register: z.string().min(1),
614
+ value: z.string().min(1).nullable(),
615
+ source: z.string().min(1)
616
+ })).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."),
617
+ bytes: z.string().nullable(),
618
+ length: z.number().int().positive().nullable(),
619
+ mnemonic: z.string().nullable(),
620
+ raw_disassembly: z.string().nullable(),
621
+ operands: z.array(z.strictObject({
622
+ index: z.number().int().nonnegative(),
623
+ raw: z.string(),
624
+ provider_type: z.number().int(),
625
+ components: z.array(z.strictObject({
626
+ kind: z.enum([
627
+ "register",
628
+ "immediate",
629
+ "address",
630
+ "unknown"
631
+ ]),
632
+ text: z.string(),
633
+ value: z.string().nullable(),
634
+ bit_width: z.number().int().nonnegative().nullable()
635
+ })),
636
+ memory_addressing: z.literal("unavailable")
637
+ })),
638
+ flow: z.strictObject({
639
+ kind: z.enum([
640
+ "call",
641
+ "jump",
642
+ "return",
643
+ "fallthrough",
644
+ "terminal",
645
+ "unavailable"
646
+ ]),
647
+ conditional: z.boolean(),
648
+ computed: z.boolean(),
649
+ direct_destinations: z.array(z.string()),
650
+ classification_evidence: z.array(z.strictObject({
651
+ source: z.string().min(1),
652
+ value: z.string().min(1)
653
+ })).optional().describe("Observed provider facts used to classify flow; older captures or other providers may omit them.")
654
+ }),
655
+ references: z.array(reference),
656
+ 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."),
657
+ limitations: z.array(z.string())
658
+ });
659
+ nativeCallTargetsSchema = z.strictObject({
660
+ call_site: z.string(),
661
+ procedure: z.string().nullable(),
662
+ status: z.enum([
663
+ "direct",
664
+ "resolved-indirect",
665
+ "ambiguous",
666
+ "unresolved",
667
+ "not-call",
668
+ "unavailable"
669
+ ]),
670
+ mechanism: z.enum([
671
+ "direct",
672
+ "computed",
673
+ "indirect",
674
+ "unavailable"
675
+ ]),
676
+ targets: z.array(z.strictObject({
677
+ address: z.string(),
678
+ procedure: z.string().nullable(),
679
+ status: z.enum([
680
+ "direct",
681
+ "resolved-indirect",
682
+ "candidate"
683
+ ]),
684
+ basis: z.literal("provider-reference"),
685
+ references: z.array(reference)
686
+ })),
687
+ limitations: z.array(z.string())
688
+ });
689
+ })))();
690
+ }
691
+
692
+ //#endregion
693
+ //#region dist/domain/canonicalJsonDigestSteps.js
694
+ /** Hash owned, validated JSON in bounded steps without a document-sized string. */
695
+ function* canonicalJsonDigestSteps(value) {
696
+ const hash = createHash("sha256");
697
+ const ancestors = new Set();
698
+ const stack = [{
699
+ kind: "value",
700
+ value
701
+ }];
702
+ const encodedKeys = new Map();
703
+ let remainingKeyCodeUnits = 8192;
704
+ let buffered = "";
705
+ let flushed = false;
706
+ const emit = (part) => {
707
+ buffered += part;
708
+ if (buffered.length >= 8192) {
709
+ hash.update(buffered);
710
+ buffered = "";
711
+ flushed = true;
712
+ }
713
+ };
714
+ try {
715
+ while (stack.length > 0) {
716
+ if (flushed) {
717
+ flushed = false;
718
+ yield;
719
+ }
720
+ const frame = stack.pop();
721
+ if (frame === undefined) break;
722
+ if (frame.kind === "separator") {
723
+ emit(":");
724
+ continue;
725
+ }
726
+ if (frame.kind === "string") {
727
+ if (frame.index === frame.value.length) {
728
+ emit("\"");
729
+ continue;
730
+ }
731
+ let end = Math.min(frame.index + 8192, frame.value.length);
732
+ const last = frame.value.charCodeAt(end - 1);
733
+ const next = frame.value.charCodeAt(end);
734
+ if (end < frame.value.length && last >= 55296 && last <= 56319 && next >= 56320 && next <= 57343) end -= 1;
735
+ emit(JSON.stringify(frame.value.slice(frame.index, end)).slice(1, -1));
736
+ frame.index = end;
737
+ stack.push(frame);
738
+ continue;
739
+ }
740
+ let item;
741
+ if (frame.kind === "array") {
742
+ if (frame.index === frame.length) {
743
+ emit("]");
744
+ ancestors.delete(frame.value);
745
+ continue;
746
+ }
747
+ const element = frame.value[frame.index];
748
+ if (element === undefined) throw new TypeError("Canonical JSON digest requires dense JSON arrays");
749
+ if (frame.index++ > 0) emit(",");
750
+ stack.push(frame);
751
+ item = element;
752
+ } else if (frame.kind === "object") {
753
+ if (frame.index === frame.keys.length) {
754
+ emit("}");
755
+ ancestors.delete(frame.value);
756
+ continue;
757
+ }
758
+ const key = frame.keys[frame.index++];
759
+ if (key === undefined) throw new TypeError("Canonical JSON object changed during hashing");
760
+ const property = frame.value[key];
761
+ if (property === undefined) {
762
+ stack.push(frame);
763
+ continue;
764
+ }
765
+ if (frame.written++ > 0) emit(",");
766
+ if (key.length > 8192) {
767
+ emit("\"");
768
+ stack.push(frame, {
769
+ kind: "value",
770
+ value: property
771
+ }, { kind: "separator" }, {
772
+ kind: "string",
773
+ value: key,
774
+ index: 0
775
+ });
776
+ continue;
777
+ }
778
+ let encodedKey = encodedKeys.get(key);
779
+ if (encodedKey === undefined) {
780
+ encodedKey = JSON.stringify(key);
781
+ if (encodedKey.length <= remainingKeyCodeUnits) {
782
+ encodedKeys.set(key, encodedKey);
783
+ remainingKeyCodeUnits -= encodedKey.length;
784
+ }
785
+ }
786
+ emit(encodedKey);
787
+ emit(":");
788
+ stack.push(frame);
789
+ item = property;
790
+ } else {
791
+ item = frame.value;
792
+ }
793
+ if (flushed) {
794
+ flushed = false;
795
+ yield;
796
+ }
797
+ if (typeof item === "string" && item.length > 8192) {
798
+ emit("\"");
799
+ stack.push({
800
+ kind: "string",
801
+ value: item,
802
+ index: 0
803
+ });
804
+ } else if (item === null || typeof item !== "object") {
805
+ if (typeof item === "number" && !Number.isFinite(item)) throw new Error(Number.isNaN(item) ? "NaN is not allowed" : "Infinity is not allowed");
806
+ emit(JSON.stringify(item));
807
+ } else {
808
+ if (ancestors.has(item)) throw new Error("Circular reference detected");
809
+ ancestors.add(item);
810
+ if (Array.isArray(item)) {
811
+ emit("[");
812
+ stack.push({
813
+ kind: "array",
814
+ value: item,
815
+ length: item.length,
816
+ index: 0
817
+ });
818
+ } else {
819
+ emit("{");
820
+ stack.push({
821
+ kind: "object",
822
+ value: item,
823
+ keys: Object.keys(item).sort(),
824
+ index: 0,
825
+ written: 0
826
+ });
827
+ }
828
+ }
829
+ }
830
+ if (buffered !== "") hash.update(buffered);
831
+ return hash.digest("hex");
832
+ } finally {
833
+ stack.length = 0;
834
+ ancestors.clear();
835
+ encodedKeys.clear();
836
+ buffered = "";
837
+ }
838
+ }
839
+ function init_canonicalJsonDigestSteps() {
840
+ return (init_canonicalJsonDigestSteps = __esmMin((() => {})))();
841
+ }
842
+
843
+ //#endregion
844
+ //#region dist/domain/evidence.js
845
+ /** Create Evidence from owned immutable JSON while exposing cooperative computation steps. */
846
+ function* createImmutableEvidenceSteps(target, provider, observation) {
847
+ if (!isImmutableJsonSnapshot(observation.result)) throw new TypeError("Cooperative Evidence requires an authenticated immutable result");
848
+ yield* jsonValueValidationSteps(observation.result);
849
+ const { normalized } = normalizeEvidenceObservation(target, provider, observation);
850
+ const digest = yield* canonicalJsonDigestSteps(semanticProjection(normalized));
851
+ return rememberImmutableEvidence({
852
+ ...normalized,
853
+ evidence_id: `ev_${digest}`
854
+ });
855
+ }
856
+ var providerSchema, subjectSchema, evidenceLocationSchema, evidenceAuthoritySchema, executionEnvironmentSchema, evidenceBaseSchema, validateAnalysisProfileProvider, evidenceSchema, authenticatedEvidenceSchema, immutableEvidenceSnapshots, immutableResultSchema, rebindEvidenceSubjectTargetPath, semanticProjection, computeEvidenceId, parseEvidence, immutableEvidence, rebindEvidenceToTargetPath, isImmutableEvidence, rememberImmutableEvidence, createEvidence, normalizeEvidenceObservation;
857
+ function init_evidence() {
858
+ return (init_evidence = __esmMin((() => {
859
+ init_canonicalDigest();
860
+ init_canonicalJsonDigestSteps();
861
+ init_localPath();
862
+ init_analysisProfile();
863
+ init_binaryTargetTypes();
864
+ init_jsonValue();
865
+ init_immutableJson();
866
+ init_digests();
867
+ init_relationshipCoverage();
868
+ providerSchema = z.object({
869
+ id: z.string().min(1),
870
+ name: z.string().min(1),
871
+ version: z.string().nullable()
872
+ });
873
+ subjectSchema = z.object({
874
+ name: z.string().min(1),
875
+ digest: z.object({ sha256: digestSchema }),
876
+ format: z.enum([
877
+ "hopper",
878
+ "analysis-database",
879
+ "mach-o",
880
+ "elf",
881
+ "pe",
882
+ "dos-mz",
883
+ "dos-com",
884
+ "raw-binary",
885
+ "zip",
886
+ "ipa",
887
+ "apk",
888
+ "msix",
889
+ "appx",
890
+ "hap",
891
+ "hsp",
892
+ "app-pack",
893
+ "asar",
894
+ "dmg",
895
+ "pkg",
896
+ "plist",
897
+ "javascript",
898
+ "source-map",
899
+ "directory",
900
+ "file",
901
+ "unknown",
902
+ "mach-o-universal",
903
+ "javascript-bundle",
904
+ "entitlements"
905
+ ]),
906
+ architecture: z.enum(BINARY_ARCHITECTURES).nullable(),
907
+ local_path: nulFreeStringSchema
908
+ });
909
+ evidenceLocationSchema = z.discriminatedUnion("kind", [
910
+ z.object({
911
+ kind: z.literal("address"),
912
+ address: z.string().min(1)
913
+ }),
914
+ z.object({
915
+ kind: z.literal("address-range"),
916
+ start: z.string().min(1),
917
+ end: z.string().min(1)
918
+ }),
919
+ z.object({
920
+ kind: z.literal("artifact-path"),
921
+ path: z.string().min(1)
922
+ }),
923
+ z.object({
924
+ kind: z.literal("file-offset"),
925
+ offset: z.number().int().min(0)
926
+ }),
927
+ z.object({
928
+ kind: z.literal("file-offset-range"),
929
+ start: z.number().int().min(0),
930
+ end: z.number().int().min(0)
931
+ })
932
+ ]);
933
+ evidenceAuthoritySchema = z.enum([
934
+ "shipped-artifact",
935
+ "controlled-replay",
936
+ "historical-reference",
937
+ "external-service",
938
+ "analyst-inference"
939
+ ]);
940
+ executionEnvironmentSchema = z.object({
941
+ id: z.string().min(1),
942
+ platform: z.string().min(1),
943
+ architecture: z.string().min(1),
944
+ isolation: z.enum([
945
+ "none",
946
+ "process",
947
+ "container",
948
+ "virtual-machine"
949
+ ])
950
+ });
951
+ evidenceBaseSchema = z.object({
952
+ evidence_id: prefixedDigestSchema("ev"),
953
+ subject: subjectSchema.nullable(),
954
+ provider: providerSchema,
955
+ analysis_profile: analysisProfileSchema.nullable(),
956
+ predicate_type: z.string().min(1),
957
+ operation: z.string().min(1),
958
+ parameters: jsonObjectSchema,
959
+ raw_result: jsonValueSchema.nullable(),
960
+ normalized_result: jsonValueSchema,
961
+ confidence: z.enum([
962
+ "observed",
963
+ "derived",
964
+ "inferred"
965
+ ]),
966
+ authority: evidenceAuthoritySchema,
967
+ environment: executionEnvironmentSchema.nullable(),
968
+ limitations: z.array(z.string()),
969
+ relationship_coverage: relationshipCoverageSchema.nullable().default(null),
970
+ locations: z.array(evidenceLocationSchema),
971
+ evidence_links: z.array(prefixedDigestSchema("ev"))
972
+ }).strict();
973
+ validateAnalysisProfileProvider = (evidence, context) => {
974
+ const profile = evidence.analysis_profile;
975
+ if (profile !== null && (profile.provider.id !== evidence.provider.id || profile.provider.name !== evidence.provider.name || profile.provider.version !== evidence.provider.version)) context.addIssue({
976
+ code: "custom",
977
+ path: ["analysis_profile", "provider"],
978
+ message: "Analysis profile provider does not match Evidence provider"
979
+ });
980
+ };
981
+ evidenceSchema = evidenceBaseSchema.superRefine(validateAnalysisProfileProvider);
982
+ authenticatedEvidenceSchema = evidenceSchema.superRefine((evidence, context) => {
983
+ const { evidence_id: evidenceId, ...withoutId } = evidence;
984
+ if (computeEvidenceId(withoutId) !== evidenceId) context.addIssue({
985
+ code: "custom",
986
+ path: ["evidence_id"],
987
+ message: "Evidence semantic identifier does not match its record"
988
+ });
989
+ });
990
+ immutableEvidenceSnapshots = new WeakMap();
991
+ immutableResultSchema = z.custom(isImmutableJsonSnapshot).superRefine((value, context) => {
992
+ const issue = jsonValueValidationIssue(value);
993
+ if (issue !== undefined) context.addIssue({
994
+ code: "custom",
995
+ message: issue
996
+ });
997
+ });
998
+ rebindEvidenceSubjectTargetPath = (subject, target) => subject.sha256 === target.sha256 && subject.format === target.format && (subject.architecture ?? null) === (target.architecture ?? null) ? {
999
+ ...subject,
1000
+ path: target.path
1001
+ } : subject;
1002
+ semanticProjection = (evidence) => ({
1003
+ subject: evidence.subject === null ? null : {
1004
+ digest: evidence.subject.digest,
1005
+ format: evidence.subject.format,
1006
+ architecture: evidence.subject.architecture
1007
+ },
1008
+ provider: evidence.provider,
1009
+ analysis_profile: evidence.analysis_profile,
1010
+ predicate_type: evidence.predicate_type,
1011
+ operation: evidence.operation,
1012
+ parameters: evidence.parameters,
1013
+ raw_result: evidence.raw_result,
1014
+ normalized_result: evidence.normalized_result,
1015
+ confidence: evidence.confidence,
1016
+ authority: evidence.authority,
1017
+ environment: evidence.environment,
1018
+ limitations: evidence.limitations,
1019
+ ...evidence.relationship_coverage === null ? {} : { relationship_coverage: evidence.relationship_coverage },
1020
+ locations: evidence.locations,
1021
+ evidence_links: evidence.evidence_links
1022
+ });
1023
+ computeEvidenceId = (evidence) => `ev_${digestCanonicalValue(semanticProjection(evidence), "Evidence")}`;
1024
+ parseEvidence = (input) => {
1025
+ const immutable = typeof input === "object" && input !== null ? immutableEvidenceSnapshots.get(input) : undefined;
1026
+ if (immutable !== undefined) return immutable;
1027
+ return authenticatedEvidenceSchema.parse(input);
1028
+ };
1029
+ immutableEvidence = (input) => rememberImmutableEvidence(parseEvidence(input));
1030
+ rebindEvidenceToTargetPath = (evidence, target) => {
1031
+ const subject = evidence.subject;
1032
+ if (subject === null) return evidence;
1033
+ const rebound = rebindEvidenceSubjectTargetPath({
1034
+ path: subject.local_path,
1035
+ sha256: subject.digest.sha256,
1036
+ format: subject.format,
1037
+ ...subject.architecture === null ? {} : { architecture: subject.architecture }
1038
+ }, target);
1039
+ if (rebound.path === subject.local_path) return evidence;
1040
+ const reboundSubject = subjectSchema.parse({
1041
+ ...subject,
1042
+ name: basename(target.path) || "artifact",
1043
+ local_path: target.path
1044
+ });
1045
+ const reboundEvidence = {
1046
+ ...evidence,
1047
+ subject: reboundSubject
1048
+ };
1049
+ if (!isImmutableEvidence(evidence)) return immutableEvidence(reboundEvidence);
1050
+ Object.freeze(reboundSubject.digest);
1051
+ Object.freeze(reboundSubject);
1052
+ Object.freeze(reboundEvidence);
1053
+ immutableEvidenceSnapshots.set(reboundEvidence, reboundEvidence);
1054
+ return reboundEvidence;
1055
+ };
1056
+ isImmutableEvidence = (evidence) => immutableEvidenceSnapshots.has(evidence);
1057
+ rememberImmutableEvidence = (evidence) => {
1058
+ freezeJsonSnapshot(evidence);
1059
+ immutableEvidenceSnapshots.set(evidence, evidence);
1060
+ return evidence;
1061
+ };
1062
+ createEvidence = (target, provider, observation) => {
1063
+ const { normalized, sharedResult } = normalizeEvidenceObservation(target, provider, observation);
1064
+ const evidence = {
1065
+ ...normalized,
1066
+ evidence_id: computeEvidenceId(normalized)
1067
+ };
1068
+ return sharedResult ? rememberImmutableEvidence(evidence) : evidence;
1069
+ };
1070
+ normalizeEvidenceObservation = (target, provider, observation) => {
1071
+ const subject = target === undefined ? null : {
1072
+ name: basename(target.path) || "artifact",
1073
+ digest: { sha256: target.sha256 },
1074
+ format: target.format,
1075
+ architecture: target.architecture ?? null,
1076
+ local_path: target.path
1077
+ };
1078
+ const semantic = {
1079
+ subject: subject === null ? null : {
1080
+ digest: subject.digest,
1081
+ format: subject.format,
1082
+ architecture: subject.architecture
1083
+ },
1084
+ provider: {
1085
+ id: provider.id,
1086
+ name: provider.name,
1087
+ version: provider.version
1088
+ },
1089
+ analysis_profile: observation.analysisProfile ?? null,
1090
+ predicate_type: observation.predicateType ?? "rea.analysis",
1091
+ operation: observation.operation,
1092
+ parameters: observation.parameters,
1093
+ raw_result: observation.rawResult ?? null,
1094
+ normalized_result: observation.result,
1095
+ confidence: observation.confidence ?? "observed",
1096
+ authority: observation.authority ?? "shipped-artifact",
1097
+ environment: observation.environment ?? null,
1098
+ limitations: [...target === undefined ? [observation.subjectUnavailableReason ?? "Artifact identity is unavailable for this observation."] : [], ...observation.limitations ?? []],
1099
+ ...observation.relationshipCoverage === undefined ? { relationship_coverage: null } : { relationship_coverage: observation.relationshipCoverage },
1100
+ locations: [...observation.locations ?? []],
1101
+ evidence_links: [...observation.evidenceLinks ?? []]
1102
+ };
1103
+ const sharedResult = typeof observation.result === "object" && observation.result !== null && isImmutableJsonSnapshot(observation.result);
1104
+ const selectedSchema = sharedResult ? evidenceSchema.safeExtend({ normalized_result: immutableResultSchema }) : evidenceSchema;
1105
+ const normalized = selectedSchema.parse({
1106
+ ...semantic,
1107
+ evidence_id: `ev_${"0".repeat(64)}`,
1108
+ subject
1109
+ });
1110
+ return {
1111
+ normalized,
1112
+ sharedResult
1113
+ };
1114
+ };
1115
+ })))();
1116
+ }
1117
+
1118
+ //#endregion
1119
+ //#region dist/domain/native/nativeValueTrace.js
1120
+ var nativeValueTraceInputSchema, nativeValueTraceSchema;
1121
+ function init_nativeValueTrace() {
1122
+ return (init_nativeValueTrace = __esmMin((() => {
1123
+ init_nativeValueFlow();
1124
+ nativeValueTraceInputSchema = z.strictObject({
1125
+ procedure: z.string().min(1),
1126
+ max_depth: z.number().int().min(0).max(16).default(3),
1127
+ max_functions: z.number().int().min(1).max(64).default(16),
1128
+ max_call_sites: z.number().int().min(1).max(4096).default(256),
1129
+ max_nodes: z.number().int().min(1).max(2e4).default(5e3),
1130
+ max_edges: z.number().int().min(1).max(4e4).default(1e4),
1131
+ offset: z.number().int().min(0).default(0),
1132
+ limit: z.number().int().min(1).max(5e3).default(1e3)
1133
+ });
1134
+ nativeValueTraceSchema = z.strictObject({
1135
+ seed: z.string(),
1136
+ target_sha256: z.string(),
1137
+ nodes: z.array(z.strictObject({
1138
+ id: z.string(),
1139
+ procedure: z.string(),
1140
+ evidence_id: z.string(),
1141
+ kind: z.enum(["operation", "parameter"]),
1142
+ operation: nativePcodeOperationSchema.nullable(),
1143
+ parameter: z.strictObject({
1144
+ ordinal: z.number().int().nonnegative(),
1145
+ name: z.string(),
1146
+ data_type: z.string()
1147
+ }).nullable()
1148
+ })),
1149
+ edges: z.array(z.strictObject({
1150
+ source: z.string(),
1151
+ target: z.string(),
1152
+ input_index: z.number().int().nonnegative().nullable(),
1153
+ kind: z.enum([
1154
+ "def-use",
1155
+ "call",
1156
+ "parameter-use",
1157
+ "argument-binding",
1158
+ "return-binding"
1159
+ ]),
1160
+ status: z.enum([
1161
+ "derived",
1162
+ "direct",
1163
+ "resolved-indirect",
1164
+ "candidate"
1165
+ ]),
1166
+ evidence_id: z.string()
1167
+ })),
1168
+ procedures: z.array(z.strictObject({
1169
+ address: z.string(),
1170
+ depth: z.number().int().nonnegative(),
1171
+ evidence_id: z.string(),
1172
+ provider: z.string(),
1173
+ analysis_profile_digest: z.string().nullable()
1174
+ })),
1175
+ unknowns: z.array(z.strictObject({
1176
+ procedure: z.string(),
1177
+ address: z.string().nullable(),
1178
+ reason: z.string()
1179
+ })),
1180
+ total_nodes: z.number().int().nonnegative(),
1181
+ total_edges: z.number().int().nonnegative(),
1182
+ decompilations: z.number().int().nonnegative(),
1183
+ next_offset: z.number().int().nonnegative().nullable(),
1184
+ truncated: z.boolean(),
1185
+ limitations: z.array(z.string())
1186
+ });
1187
+ })))();
1188
+ }
1189
+
1190
+ //#endregion
1191
+ //#region dist/domain/apple/interfaceBuilderKeyedArchive.js
1192
+ var recordSchema, objectNode, connection, parseInterfaceBuilderRecords, archiveUid, HIERARCHY_KEY, keyedArchiveTable, parseKeyedArchive, record, firstString, archivedObjectReference, firstObjectReference, classifyObject, classifyConnection, jsonSafeRecord;
1193
+ function init_interfaceBuilderKeyedArchive() {
1194
+ return (init_interfaceBuilderKeyedArchive = __esmMin((() => {
1195
+ init_jsonValue();
1196
+ recordSchema = z.record(z.string(), z.unknown());
1197
+ objectNode = z.strictObject({
1198
+ id: z.string().min(1),
1199
+ kind: z.enum([
1200
+ "view_controller",
1201
+ "view",
1202
+ "control",
1203
+ "constraint",
1204
+ "layout_guide",
1205
+ "resource",
1206
+ "placeholder",
1207
+ "external_object",
1208
+ "other"
1209
+ ]),
1210
+ class_name: z.string().nullable(),
1211
+ name: z.string().min(1),
1212
+ attributes: z.record(z.string(), jsonValueSchema)
1213
+ });
1214
+ connection = z.strictObject({
1215
+ id: z.string().min(1),
1216
+ kind: z.enum([
1217
+ "outlet",
1218
+ "action",
1219
+ "segue",
1220
+ "other"
1221
+ ]),
1222
+ source_id: z.string().min(1),
1223
+ destination_id: z.string().nullable(),
1224
+ label: z.string().nullable(),
1225
+ attributes: z.record(z.string(), jsonValueSchema)
1226
+ });
1227
+ parseInterfaceBuilderRecords = (value) => {
1228
+ const root = record(value);
1229
+ const keyed = parseKeyedArchive(root);
1230
+ if (keyed !== null) return keyed;
1231
+ const objectsRaw = record(root["com.apple.ibtool.document.objects"]);
1232
+ const connectionsRaw = record(root["com.apple.ibtool.document.connections"]);
1233
+ const hierarchyRaw = root["com.apple.ibtool.document.hierarchy"];
1234
+ const classesRaw = record(root["com.apple.ibtool.document.classes"]);
1235
+ const objects = [];
1236
+ const connections = [];
1237
+ let omittedConnections = 0;
1238
+ const objectEntries = Object.entries(objectsRaw);
1239
+ for (const [id, raw] of objectEntries.slice(0, 2e4)) {
1240
+ const attributes = record(raw);
1241
+ const className = firstString(attributes["customClass"], attributes["class"], attributes["isa"]);
1242
+ const label = firstString(attributes["label"], attributes["title"], attributes["name"], className);
1243
+ const carried = new Set();
1244
+ if (attributes["customClass"] === className) carried.add("customClass");
1245
+ if (attributes["label"] === label) carried.add("label");
1246
+ if (attributes["objectID"] === id) carried.add("objectID");
1247
+ objects.push(objectNode.parse({
1248
+ id,
1249
+ kind: classifyObject(className),
1250
+ class_name: className,
1251
+ name: label ?? id,
1252
+ attributes: jsonSafeRecord(Object.fromEntries(Object.entries(attributes).filter(([key]) => !carried.has(key))))
1253
+ }));
1254
+ }
1255
+ for (const [sourceId, rawConnections] of Object.entries(connectionsRaw)) {
1256
+ if (!Array.isArray(rawConnections)) continue;
1257
+ for (const [index, raw] of rawConnections.entries()) {
1258
+ if (connections.length >= 4e4) {
1259
+ omittedConnections += rawConnections.length - index;
1260
+ break;
1261
+ }
1262
+ const item = record(raw);
1263
+ const type = firstString(item.type, item.connectionType) ?? "unknown";
1264
+ const destination = firstString(item["destination-id"], item.destinationId);
1265
+ const label = firstString(item.label, item.selector, item.identifier);
1266
+ connections.push(connection.parse({
1267
+ id: `${sourceId}:connection:${index}`,
1268
+ kind: classifyConnection(type),
1269
+ source_id: sourceId,
1270
+ destination_id: destination,
1271
+ label,
1272
+ attributes: jsonSafeRecord(item)
1273
+ }));
1274
+ }
1275
+ }
1276
+ return {
1277
+ objects,
1278
+ connections,
1279
+ hierarchy: Array.isArray(hierarchyRaw) ? hierarchyRaw.slice(0, 2e4) : [],
1280
+ classes: classesRaw,
1281
+ objectCount: objectEntries.length,
1282
+ omittedObjects: Math.max(0, objectEntries.length - 2e4),
1283
+ omittedConnections,
1284
+ omittedHierarchyReferences: 0
1285
+ };
1286
+ };
1287
+ archiveUid = (value) => {
1288
+ if (typeof value !== "object" || value === null || Array.isArray(value)) return undefined;
1289
+ if (Object.keys(value).length !== 1) return undefined;
1290
+ const item = record(value);
1291
+ const marker = Object.hasOwn(item, "UID") ? item.UID : item["CF$UID"];
1292
+ return typeof marker === "number" && Number.isInteger(marker) ? marker : undefined;
1293
+ };
1294
+ HIERARCHY_KEY = /(?:subviews|contentview|childviewcontrollers|children|views)$/iu;
1295
+ keyedArchiveTable = (objectTable) => {
1296
+ const classNameOf = (value) => {
1297
+ const classReference = record(value).$class;
1298
+ const uid = archiveUid(classReference);
1299
+ return firstString(record(uid === undefined ? classReference : objectTable[uid]).$classname);
1300
+ };
1301
+ /** The string an archived string object holds, if it is one. */
1302
+ const archivedString = (target) => {
1303
+ if (typeof target === "string") return target;
1304
+ const text = record(target)["NS.string"];
1305
+ return typeof text === "string" && /^NS(?:Mutable)?String$/u.test(classNameOf(target) ?? "") ? text : undefined;
1306
+ };
1307
+ const text = (value) => {
1308
+ const uid = archiveUid(value);
1309
+ return firstString(uid === undefined ? value : archivedString(objectTable[uid]));
1310
+ };
1311
+ const authoredId = (item) => firstString(text(item.objectID), text(item["object-id"]));
1312
+ const reference = (uid) => {
1313
+ const target = uid === 0 ? null : objectTable[uid];
1314
+ if (target === undefined || target === null) return null;
1315
+ if (typeof target !== "object") return target;
1316
+ const string = archivedString(target);
1317
+ if (string !== undefined) return string;
1318
+ const objectId = authoredId(record(target));
1319
+ return {
1320
+ archiveUID: uid,
1321
+ ...objectId === null ? {} : { objectID: objectId },
1322
+ className: classNameOf(target)
1323
+ };
1324
+ };
1325
+ /** Resolve one object's own fields, leaving references to other objects as stubs. */
1326
+ const resolve = (value) => {
1327
+ const uid = archiveUid(value);
1328
+ if (uid !== undefined) return reference(uid);
1329
+ if (Array.isArray(value)) return value.map(resolve);
1330
+ if (typeof value !== "object" || value === null) return value;
1331
+ const output = {};
1332
+ for (const [key, child] of Object.entries(value)) {
1333
+ if (key === "$class") output.className = classNameOf(value);
1334
+ else output[key] = resolve(child);
1335
+ }
1336
+ return output;
1337
+ };
1338
+ const hierarchy = (start) => {
1339
+ let omittedReferences = 0;
1340
+ const visited = new Set();
1341
+ const root = [];
1342
+ const pending = [{
1343
+ value: start,
1344
+ output: root
1345
+ }];
1346
+ const appendNode = (item, uid, output) => {
1347
+ const objectId = firstString(authoredId(item), text(item.id), uid === undefined ? null : String(uid));
1348
+ if (objectId === null) {
1349
+ for (const [key, child] of Object.entries(item).reverse()) if (HIERARCHY_KEY.test(key)) pending.push({
1350
+ value: child,
1351
+ output
1352
+ });
1353
+ return;
1354
+ }
1355
+ const children = [];
1356
+ output.push({
1357
+ objectID: objectId,
1358
+ children
1359
+ });
1360
+ for (const [key, child] of Object.entries(item).reverse()) if (HIERARCHY_KEY.test(key)) pending.push({
1361
+ value: child,
1362
+ output: children
1363
+ });
1364
+ };
1365
+ while (pending.length > 0) {
1366
+ const entry = pending.pop();
1367
+ if (entry === undefined) break;
1368
+ const { value, output } = entry;
1369
+ const uid = archiveUid(value);
1370
+ if (uid !== undefined) {
1371
+ if (uid === 0) continue;
1372
+ const target = objectTable[uid];
1373
+ if (target === undefined) {
1374
+ omittedReferences += 1;
1375
+ continue;
1376
+ }
1377
+ if (visited.has(uid)) continue;
1378
+ visited.add(uid);
1379
+ if (Array.isArray(target)) {
1380
+ for (let index = target.length - 1; index >= 0; index -= 1) {
1381
+ const child = target[index];
1382
+ if (child !== undefined) pending.push({
1383
+ value: child,
1384
+ output
1385
+ });
1386
+ }
1387
+ continue;
1388
+ }
1389
+ if (typeof target !== "object" || target === null) continue;
1390
+ const item = record(target);
1391
+ if (archivedArrayClass(item.$class)) {
1392
+ const members = item["NS.objects"];
1393
+ if (Array.isArray(members)) for (let index = members.length - 1; index >= 0; index -= 1) {
1394
+ const child = members[index];
1395
+ if (child !== undefined) pending.push({
1396
+ value: child,
1397
+ output
1398
+ });
1399
+ }
1400
+ continue;
1401
+ }
1402
+ appendNode(item, uid, output);
1403
+ continue;
1404
+ }
1405
+ if (Array.isArray(value)) {
1406
+ for (let index = value.length - 1; index >= 0; index -= 1) {
1407
+ const child = value[index];
1408
+ if (child !== undefined) pending.push({
1409
+ value: child,
1410
+ output
1411
+ });
1412
+ }
1413
+ } else if (typeof value === "object" && value !== null) {
1414
+ appendNode(record(value), undefined, output);
1415
+ }
1416
+ }
1417
+ return {
1418
+ items: root,
1419
+ omittedReferences
1420
+ };
1421
+ };
1422
+ const archivedArrayClass = (classReference) => {
1423
+ const uid = archiveUid(classReference);
1424
+ const descriptor = record(uid === undefined ? classReference : objectTable[uid]);
1425
+ const classNames = Array.isArray(descriptor.$classes) ? descriptor.$classes.filter((name) => typeof name === "string") : [];
1426
+ return classNames.includes("NSArray") || classNames.includes("NSMutableArray");
1427
+ };
1428
+ return {
1429
+ resolve,
1430
+ hierarchy
1431
+ };
1432
+ };
1433
+ parseKeyedArchive = (root) => {
1434
+ if (root.$archiver !== "NSKeyedArchiver" || !Array.isArray(root.$objects)) return null;
1435
+ const objectTable = root.$objects;
1436
+ const { resolve, hierarchy: toHierarchy } = keyedArchiveTable(objectTable);
1437
+ const objects = [];
1438
+ const connections = [];
1439
+ let objectCount = 0;
1440
+ let omittedConnections = 0;
1441
+ for (const [index, raw] of objectTable.entries()) {
1442
+ if (index === 0) continue;
1443
+ const resolved = record(resolve(raw));
1444
+ const className = firstString(resolved.className);
1445
+ if (className === null) continue;
1446
+ objectCount += 1;
1447
+ const fields = Object.fromEntries(Object.entries(resolved).filter(([key]) => key !== "className"));
1448
+ const authoredId = firstString(fields.objectID, fields["object-id"]);
1449
+ const objectId = authoredId ?? (typeof fields.archiveUID === "number" ? String(fields.archiveUID) : String(index));
1450
+ const kind = classifyObject(className);
1451
+ if (objects.length < 2e4) objects.push(objectNode.parse({
1452
+ id: objectId,
1453
+ kind,
1454
+ class_name: className,
1455
+ name: firstString(fields.label, fields.title, fields.identifier, fields.accessibilityLabel, className) ?? `object ${String(index)}`,
1456
+ attributes: jsonSafeRecord(fields)
1457
+ }));
1458
+ if (/(?:Outlet|Connection|Segue|ActionConnection|ControlConnector)/iu.test(className)) {
1459
+ const controlAction = /ControlConnector/iu.test(className);
1460
+ const source = firstObjectReference(controlAction ? fields.destination : fields.source, archivedObjectReference(fields.NSSource), controlAction ? fields.to : fields.from, controlAction ? fields.target : fields.owner);
1461
+ if (source === null) continue;
1462
+ const kind = controlAction ? "action" : classifyConnection(className);
1463
+ const parsedConnection = connection.parse({
1464
+ id: `archive:${objectId}`,
1465
+ kind,
1466
+ source_id: source,
1467
+ destination_id: firstObjectReference(controlAction ? fields.source : fields.destination, archivedObjectReference(fields.NSDestination), controlAction ? fields.from : fields.to, controlAction ? fields.owner : fields.target),
1468
+ label: firstString(fields.label, fields.NSLabel, fields.selector, fields.identifier, fields.action),
1469
+ attributes: jsonSafeRecord(fields)
1470
+ });
1471
+ if (connections.length < 4e4) connections.push(parsedConnection);
1472
+ else omittedConnections += 1;
1473
+ }
1474
+ }
1475
+ const top = record(root.$top);
1476
+ const hierarchy = toHierarchy(top.root ?? top.UITopLevelObjectsKey);
1477
+ const classes = Object.fromEntries(objectTable.flatMap((raw) => {
1478
+ const item = record(raw);
1479
+ const name = firstString(item.$classname);
1480
+ return name === null ? [] : [[name, { superclasses: Array.isArray(item.$classes) ? item.$classes : [] }]];
1481
+ }));
1482
+ return {
1483
+ objects,
1484
+ connections,
1485
+ hierarchy: hierarchy.items,
1486
+ classes,
1487
+ objectCount,
1488
+ omittedObjects: Math.max(0, objectCount - 2e4),
1489
+ omittedConnections,
1490
+ omittedHierarchyReferences: hierarchy.omittedReferences
1491
+ };
1492
+ };
1493
+ record = (value) => recordSchema.safeParse(value).data ?? {};
1494
+ firstString = (...values) => {
1495
+ for (const value of values) if (typeof value === "string" && value.length > 0) return value;
1496
+ return null;
1497
+ };
1498
+ archivedObjectReference = (value) => {
1499
+ const item = record(value);
1500
+ if (typeof item.archiveUID !== "number") return null;
1501
+ return firstString(item.objectID, item["object-id"]) ?? String(item.archiveUID);
1502
+ };
1503
+ firstObjectReference = (...values) => {
1504
+ for (const value of values) {
1505
+ const direct = firstString(value);
1506
+ if (direct !== null) return direct;
1507
+ const item = record(value);
1508
+ const objectId = firstString(item.objectID, item["object-id"], item.id, item.identifier, typeof item.archiveUID === "number" ? String(item.archiveUID) : null);
1509
+ if (objectId !== null) return objectId;
1510
+ }
1511
+ return null;
1512
+ };
1513
+ classifyObject = (className) => {
1514
+ const value = className?.toLowerCase() ?? "";
1515
+ if (value.includes("constraint")) return "constraint";
1516
+ if (value.includes("layoutguide")) return "layout_guide";
1517
+ if (value.includes("placeholder") || value.includes("firstresponder") || value === "uiproxyobject") return "placeholder";
1518
+ if (value.includes("image") || value.includes("color") || value.includes("font")) return "resource";
1519
+ if (value.includes("external")) return "external_object";
1520
+ if (value.includes("viewcontroller") || value.includes("windowcontroller")) return "view_controller";
1521
+ if (value.includes("button") || value.includes("control") || value.includes("textfield") || value.includes("slider") || value.includes("menuitem")) return "control";
1522
+ if (value.includes("view") || value.includes("window") || value.includes("cell")) return "view";
1523
+ return "other";
1524
+ };
1525
+ classifyConnection = (type) => {
1526
+ const value = type.toLowerCase();
1527
+ if (value.includes("outlet")) return "outlet";
1528
+ if (value.includes("action")) return "action";
1529
+ if (value.includes("segue")) return "segue";
1530
+ return "other";
1531
+ };
1532
+ jsonSafeRecord = (value) => Object.fromEntries(Object.entries(value).flatMap(([key, item]) => {
1533
+ try {
1534
+ const serialized = JSON.stringify(item);
1535
+ if (serialized === undefined) return [];
1536
+ const parsed = jsonValueSchema.safeParse(JSON.parse(serialized));
1537
+ return parsed.success ? [[key, parsed.data]] : [];
1538
+ } catch (cause) {
1539
+ void cause;
1540
+ return [];
1541
+ }
1542
+ }));
1543
+ })))();
1544
+ }
1545
+
1546
+ //#endregion
1547
+ //#region dist/domain/native/objcSwiftMetadata.js
1548
+ var 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;
1549
+ function init_objcSwiftMetadata() {
1550
+ return (init_objcSwiftMetadata = __esmMin((() => {
1551
+ init_unicodeCodePointOrder();
1552
+ objcMethodTypeSchema = z.enum([
1553
+ "instance",
1554
+ "class",
1555
+ "ivar_getter",
1556
+ "ivar_setter"
1557
+ ]);
1558
+ objcPropertyAttributeSchema = z.strictObject({
1559
+ name: z.string().min(1),
1560
+ value: z.string()
1561
+ });
1562
+ objcMethodSchema = z.strictObject({
1563
+ selector: z.string().min(1),
1564
+ method_type: objcMethodTypeSchema,
1565
+ address: z.number().int().nullable(),
1566
+ is_required: z.boolean().nullable(),
1567
+ is_optional: z.boolean().nullable()
1568
+ });
1569
+ objcPropertySchema = z.strictObject({
1570
+ name: z.string().min(1),
1571
+ type_encoding: z.string().nullable(),
1572
+ attributes: z.array(objcPropertyAttributeSchema),
1573
+ atomicity: z.enum(["atomic", "nonatomic"]).nullable(),
1574
+ is_readonly: z.boolean().nullable(),
1575
+ getter: z.string().nullable(),
1576
+ setter: z.string().nullable()
1577
+ });
1578
+ objcProtocolSchema = z.strictObject({
1579
+ name: z.string().min(1),
1580
+ methods: z.array(objcMethodSchema).default([]),
1581
+ optional_methods: z.array(objcMethodSchema).default([]),
1582
+ properties: z.array(objcPropertySchema).default([])
1583
+ });
1584
+ objcClassSchema = z.strictObject({
1585
+ name: z.string().min(1),
1586
+ super_class: z.string().nullable(),
1587
+ is_meta_class: z.boolean().nullable(),
1588
+ is_root_class: z.boolean().nullable(),
1589
+ methods: z.array(objcMethodSchema).default([]),
1590
+ properties: z.array(objcPropertySchema).default([]),
1591
+ protocols: z.array(z.string()).default([]),
1592
+ ivar_count: z.number().int().nonnegative().nullable(),
1593
+ instance_size: z.number().int().nonnegative().nullable(),
1594
+ location: z.object({
1595
+ address: z.string().nullable(),
1596
+ file_offset: z.number().int().nonnegative().nullable()
1597
+ }).optional(),
1598
+ superclass_address: z.string().nullable().optional(),
1599
+ metaclass_address: z.string().nullable().optional(),
1600
+ decode: z.object({
1601
+ status: z.enum([
1602
+ "decoded",
1603
+ "partial",
1604
+ "unsupported",
1605
+ "invalid"
1606
+ ]),
1607
+ reason: z.string().nullable()
1608
+ }).optional(),
1609
+ evidence: z.array(z.object({
1610
+ kind: z.literal("binary_metadata"),
1611
+ description: z.string(),
1612
+ location: z.object({
1613
+ address: z.string().nullable(),
1614
+ file_offset: z.number().int().nonnegative().nullable()
1615
+ }),
1616
+ artifact_path: z.string(),
1617
+ artifact_sha256: z.string()
1618
+ })).optional()
1619
+ });
1620
+ nativeMetadataLocationSchema = z.strictObject({
1621
+ address: z.string().nullable(),
1622
+ file_offset: z.number().int().nonnegative().nullable()
1623
+ });
1624
+ nativeMetadataDecodeSchema = z.strictObject({
1625
+ status: z.enum([
1626
+ "decoded",
1627
+ "partial",
1628
+ "unsupported",
1629
+ "invalid"
1630
+ ]),
1631
+ reason: z.string().nullable()
1632
+ });
1633
+ nativeMetadataEvidenceSchema = z.strictObject({
1634
+ kind: z.enum([
1635
+ "binary_metadata",
1636
+ "interface_builder_resource",
1637
+ "symbol",
1638
+ "reference",
1639
+ "decompiler"
1640
+ ]),
1641
+ description: z.string().min(1),
1642
+ location: nativeMetadataLocationSchema,
1643
+ artifact_path: z.string().min(1).nullable().default(null),
1644
+ artifact_sha256: z.string().regex(/^[a-f0-9]{64}$/u).nullable().default(null)
1645
+ });
1646
+ objcIvarSchema = z.strictObject({
1647
+ class_name: z.string().min(1),
1648
+ name: z.string().min(1),
1649
+ type_encoding: z.string().nullable(),
1650
+ offset: z.number().int().nonnegative().nullable(),
1651
+ size: z.number().int().nonnegative().nullable().default(null),
1652
+ alignment: z.number().int().positive().nullable().default(null),
1653
+ location: nativeMetadataLocationSchema,
1654
+ decode: nativeMetadataDecodeSchema,
1655
+ evidence: z.array(nativeMetadataEvidenceSchema).min(1)
1656
+ });
1657
+ objcProtocolRecordSchema = z.strictObject({
1658
+ name: z.string(),
1659
+ adopted_protocols: z.array(z.string()),
1660
+ methods: z.array(objcMethodSchema),
1661
+ optional_methods: z.array(objcMethodSchema),
1662
+ location: nativeMetadataLocationSchema,
1663
+ decode: nativeMetadataDecodeSchema,
1664
+ evidence: z.array(nativeMetadataEvidenceSchema).min(1)
1665
+ });
1666
+ objcDispatchImplementationSchema = z.strictObject({
1667
+ class_name: z.string().min(1),
1668
+ selector: z.string().min(1),
1669
+ method_type: z.enum(["instance", "class"]),
1670
+ implementation_address: z.string().nullable(),
1671
+ /** Category that adds this method, when it is not defined by the class itself. */
1672
+ category: z.string().nullable().optional(),
1673
+ location: nativeMetadataLocationSchema,
1674
+ decode: nativeMetadataDecodeSchema,
1675
+ evidence: z.array(nativeMetadataEvidenceSchema).min(1)
1676
+ });
1677
+ objcCategorySchema = z.strictObject({
1678
+ name: z.string().min(1),
1679
+ /** Extended class; external classes come from the category's bind symbol. */
1680
+ class_name: z.string().min(1).nullable(),
1681
+ class_source: z.enum([
1682
+ "local",
1683
+ "external",
1684
+ "unresolved"
1685
+ ]),
1686
+ instance_methods: z.array(z.string()),
1687
+ class_methods: z.array(z.string()),
1688
+ protocols: z.array(z.string()),
1689
+ properties: z.array(objcPropertySchema),
1690
+ location: nativeMetadataLocationSchema,
1691
+ decode: nativeMetadataDecodeSchema,
1692
+ evidence: z.array(nativeMetadataEvidenceSchema).min(1)
1693
+ });
1694
+ swiftConformanceSchema = z.strictObject({
1695
+ type_name: z.string().min(1),
1696
+ protocol_name: z.string().min(1),
1697
+ module: z.string().nullable(),
1698
+ witness_table: nativeMetadataLocationSchema,
1699
+ location: nativeMetadataLocationSchema,
1700
+ decode: nativeMetadataDecodeSchema,
1701
+ evidence: z.array(nativeMetadataEvidenceSchema).min(1)
1702
+ });
1703
+ swiftDispatchSlotSchema = z.strictObject({
1704
+ owner: z.string().min(1),
1705
+ table_kind: z.enum(["witness_table", "class_vtable"]),
1706
+ slot_index: z.number().int().nonnegative(),
1707
+ requirement: z.string().nullable(),
1708
+ implementation: z.string().nullable(),
1709
+ implementation_address: z.string().nullable(),
1710
+ thunk_address: z.string().nullable(),
1711
+ location: nativeMetadataLocationSchema,
1712
+ decode: nativeMetadataDecodeSchema,
1713
+ evidence: z.array(nativeMetadataEvidenceSchema).min(1)
1714
+ });
1715
+ relativePointerSchema = z.strictObject({
1716
+ field: nativeMetadataLocationSchema,
1717
+ target: nativeMetadataLocationSchema,
1718
+ displacement: z.number().int(),
1719
+ indirectable: z.boolean(),
1720
+ indirect: z.boolean().nullable(),
1721
+ decode: nativeMetadataDecodeSchema,
1722
+ evidence: z.array(nativeMetadataEvidenceSchema).min(1)
1723
+ });
1724
+ swiftSymbolSchema = z.strictObject({
1725
+ mangled_name: z.string().min(1),
1726
+ address: z.string().min(1),
1727
+ decode: nativeMetadataDecodeSchema,
1728
+ evidence: z.array(nativeMetadataEvidenceSchema).min(1)
1729
+ });
1730
+ nativeMetadataCoverageSchema = z.strictObject({
1731
+ facet: z.string().min(1),
1732
+ status: z.enum([
1733
+ "complete",
1734
+ "partial",
1735
+ "unsupported",
1736
+ "not_requested"
1737
+ ]),
1738
+ reason: z.string().nullable(),
1739
+ examined: z.number().int().nonnegative(),
1740
+ decoded: z.number().int().nonnegative()
1741
+ });
1742
+ swiftDeclKindSchema = z.enum([
1743
+ "class",
1744
+ "struct",
1745
+ "enum",
1746
+ "protocol",
1747
+ "extension",
1748
+ "actor",
1749
+ "global_var",
1750
+ "global_func"
1751
+ ]);
1752
+ swiftAccessLevelSchema = z.enum([
1753
+ "private",
1754
+ "fileprivate",
1755
+ "internal",
1756
+ "public",
1757
+ "open"
1758
+ ]);
1759
+ swiftDeclSchema = z.strictObject({
1760
+ kind: swiftDeclKindSchema,
1761
+ name: z.string().min(1),
1762
+ module: z.string().nullable(),
1763
+ access_level: swiftAccessLevelSchema.default("internal"),
1764
+ super_class: z.string().nullable(),
1765
+ protocols: z.array(z.string()).default([]),
1766
+ is_final: z.boolean().default(false),
1767
+ is_required: z.boolean().default(false),
1768
+ is_convenience_init: z.boolean().default(false),
1769
+ is_override: z.boolean().default(false)
1770
+ });
1771
+ dbOperationSchema = z.enum([
1772
+ "save",
1773
+ "readback",
1774
+ "open_database",
1775
+ "close_database",
1776
+ "export",
1777
+ "import"
1778
+ ]);
1779
+ dbSaveResultSchema = z.strictObject({
1780
+ operation: dbOperationSchema,
1781
+ succeeded: z.boolean(),
1782
+ preserved_names: z.number().int().nonnegative().default(0),
1783
+ preserved_comments: z.number().int().nonnegative().default(0),
1784
+ preserved_bookmarks: z.number().int().nonnegative().default(0),
1785
+ database_path: z.string().nullable(),
1786
+ error: z.string().nullable()
1787
+ });
1788
+ objcSwiftMetadataSchema = z.strictObject({
1789
+ objc_classes: z.array(objcClassSchema).default([]),
1790
+ objc_protocols: z.array(objcProtocolSchema).default([]),
1791
+ objc_categories: z.array(objcCategorySchema).default([]),
1792
+ swift_decls: z.array(swiftDeclSchema).default([]),
1793
+ objc_ivars: z.array(objcIvarSchema).default([]),
1794
+ objc_protocol_records: z.array(objcProtocolRecordSchema).default([]),
1795
+ objc_dispatch_implementations: z.array(objcDispatchImplementationSchema).default([]),
1796
+ swift_conformances: z.array(swiftConformanceSchema).default([]),
1797
+ swift_dispatch_slots: z.array(swiftDispatchSlotSchema).default([]),
1798
+ swift_symbols: z.array(swiftSymbolSchema).default([]),
1799
+ relative_pointers: z.array(relativePointerSchema).default([]),
1800
+ coverage: z.array(nativeMetadataCoverageSchema).default([]),
1801
+ db_save_result: dbSaveResultSchema.nullable()
1802
+ });
1803
+ nativeDispatchMetadataResultSchema = z.strictObject({
1804
+ target_sha256: z.string().regex(/^[a-f0-9]{64}$/u).nullable(),
1805
+ provider: z.strictObject({
1806
+ id: z.string().min(1),
1807
+ name: z.string().min(1),
1808
+ version: z.string().nullable()
1809
+ }),
1810
+ analysis_profile_digest: z.string().min(1).nullable(),
1811
+ result: objcSwiftMetadataSchema
1812
+ });
1813
+ inspectNativeDispatchMetadata = (names, maxRecords = 5e3) => {
1814
+ const symbolEvidence = (name, address) => [{
1815
+ kind: "symbol",
1816
+ description: `Provider symbol ${name}`,
1817
+ location: {
1818
+ address,
1819
+ file_offset: null
1820
+ },
1821
+ artifact_path: null,
1822
+ artifact_sha256: null
1823
+ }];
1824
+ const classNames = new Set();
1825
+ const implementations = new Map();
1826
+ const swiftSymbols = [];
1827
+ const examinedNames = names.slice(0, maxRecords);
1828
+ for (const entry of examinedNames) {
1829
+ const classMatch = /(?:OBJC_CLASS_|OBJC_METACLASS_)\$_([^\s]+)/u.exec(entry.name);
1830
+ if (classMatch?.[1] !== undefined) classNames.add(classMatch[1]);
1831
+ const methodMatch = /^([+-])\[([^\s\]]+)\s+([^\]]+)\]$/u.exec(entry.name);
1832
+ if (methodMatch?.[1] !== undefined && methodMatch[2] && methodMatch[3]) {
1833
+ const methodType = methodMatch[1] === "+" ? "class" : "instance";
1834
+ const selector = methodMatch[3];
1835
+ implementations.set(`${methodMatch[2]}:${selector}:${methodType}`, {
1836
+ class_name: methodMatch[2],
1837
+ selector,
1838
+ method_type: methodType,
1839
+ implementation_address: entry.address,
1840
+ location: {
1841
+ address: entry.address,
1842
+ file_offset: null
1843
+ },
1844
+ decode: {
1845
+ status: "partial",
1846
+ reason: "symbol_name_only"
1847
+ },
1848
+ evidence: symbolEvidence(entry.name, entry.address)
1849
+ });
1850
+ classNames.add(methodMatch[2]);
1851
+ }
1852
+ if (/^(?:_?\$s|_Tt)/u.test(entry.name)) swiftSymbols.push({
1853
+ mangled_name: entry.name,
1854
+ address: entry.address,
1855
+ decode: {
1856
+ status: "partial",
1857
+ reason: "mangled_symbol_not_demangled"
1858
+ },
1859
+ evidence: symbolEvidence(entry.name, entry.address)
1860
+ });
1861
+ }
1862
+ const methodsByClass = new Map();
1863
+ for (const implementation of implementations.values()) {
1864
+ const methods = methodsByClass.get(implementation.class_name) ?? [];
1865
+ methods.push({
1866
+ selector: implementation.selector,
1867
+ method_type: implementation.method_type,
1868
+ address: parseMetadataAddress(implementation.implementation_address),
1869
+ is_required: null,
1870
+ is_optional: null
1871
+ });
1872
+ methodsByClass.set(implementation.class_name, methods);
1873
+ }
1874
+ const classes = [...classNames].sort().map((name) => ({
1875
+ name,
1876
+ super_class: null,
1877
+ is_meta_class: null,
1878
+ is_root_class: null,
1879
+ methods: methodsByClass.get(name) ?? [],
1880
+ properties: [],
1881
+ protocols: [],
1882
+ ivar_count: null,
1883
+ instance_size: null
1884
+ }));
1885
+ const decodedImplementations = [...implementations.values()].sort((left, right) => compareUnicodeCodePoints(compositeKey([left.class_name, left.selector]), compositeKey([right.class_name, right.selector])));
1886
+ const swift = swiftSymbols.length > 0;
1887
+ return objcSwiftMetadataSchema.parse({
1888
+ objc_classes: classes,
1889
+ objc_dispatch_implementations: decodedImplementations,
1890
+ swift_symbols: swiftSymbols,
1891
+ coverage: [
1892
+ {
1893
+ facet: "objc_class_symbols",
1894
+ status: "partial",
1895
+ 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",
1896
+ examined: examinedNames.length,
1897
+ decoded: classes.length
1898
+ },
1899
+ {
1900
+ facet: "objc_dispatch_implementations",
1901
+ status: decodedImplementations.length > 0 ? "partial" : "unsupported",
1902
+ 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",
1903
+ examined: examinedNames.length,
1904
+ decoded: decodedImplementations.length
1905
+ },
1906
+ {
1907
+ facet: "objc_ivar_layouts",
1908
+ status: "unsupported",
1909
+ reason: "symbol_inventory_does_not_expose_runtime_ivar_layouts",
1910
+ examined: 0,
1911
+ decoded: 0
1912
+ },
1913
+ {
1914
+ facet: "swift_declarations",
1915
+ status: swift ? "partial" : "unsupported",
1916
+ reason: swift ? "symbols_are_not_demangled_declarations" : "no_swift_symbols_observed",
1917
+ examined: swiftSymbols.length,
1918
+ decoded: 0
1919
+ },
1920
+ {
1921
+ facet: "swift_dispatch_tables",
1922
+ status: "unsupported",
1923
+ reason: "provider_name_inventory_does_not_decode_witness_or_class_vtables",
1924
+ examined: 0,
1925
+ decoded: 0
1926
+ },
1927
+ {
1928
+ facet: "relative_pointers",
1929
+ status: "unsupported",
1930
+ reason: "provider_name_inventory_does_not_decode_binary_relative_pointers",
1931
+ examined: 0,
1932
+ decoded: 0
1933
+ }
1934
+ ],
1935
+ db_save_result: null
1936
+ });
1937
+ };
1938
+ parseMetadataAddress = (address) => {
1939
+ if (address === null) return null;
1940
+ const match = /(?:^|:)0x([0-9a-f]+)$/iu.exec(address);
1941
+ if (match?.[1] === undefined) return null;
1942
+ const value = Number.parseInt(match[1], 16);
1943
+ return Number.isSafeInteger(value) ? value : null;
1944
+ };
1945
+ })))();
1946
+ }
1947
+
1948
+ //#endregion
1949
+ //#region dist/domain/native/nativeInvestigationGraph.js
1950
+ var nativeInvestigationNodeKindSchema, nativeInvestigationNodeSchema, nativeInvestigationRelationSchema, nativeInvestigationEdgeSchema, nativeInvestigationCoverageSchema, nativeInvestigationGraphSchema, nativeInvestigationTraceLimitsSchema, nativeInvestigationTraceSchema, traceNativeInvestigationGraph, joinInterfaceBuilderDispatch;
1951
+ function init_nativeInvestigationGraph() {
1952
+ return (init_nativeInvestigationGraph = __esmMin((() => {
1953
+ init_objcSwiftMetadata();
1954
+ init_jsonValue();
1955
+ nativeInvestigationNodeKindSchema = z.enum([
1956
+ "storyboard",
1957
+ "scene",
1958
+ "view_controller",
1959
+ "view",
1960
+ "control",
1961
+ "constraint",
1962
+ "layout_guide",
1963
+ "resource",
1964
+ "placeholder",
1965
+ "external_object",
1966
+ "outlet",
1967
+ "action",
1968
+ "segue",
1969
+ "objc_class",
1970
+ "objc_selector",
1971
+ "swift_declaration",
1972
+ "swift_requirement",
1973
+ "dispatch_table",
1974
+ "dispatch_slot",
1975
+ "thunk",
1976
+ "function",
1977
+ "state_value",
1978
+ "global_value",
1979
+ "field",
1980
+ "branch_condition",
1981
+ "sink",
1982
+ "unknown"
1983
+ ]);
1984
+ nativeInvestigationNodeSchema = z.strictObject({
1985
+ id: z.string().min(1),
1986
+ kind: nativeInvestigationNodeKindSchema,
1987
+ name: z.string().min(1),
1988
+ location: nativeMetadataLocationSchema.nullable(),
1989
+ attributes: z.record(z.string(), jsonValueSchema),
1990
+ evidence: z.array(nativeMetadataEvidenceSchema)
1991
+ });
1992
+ nativeInvestigationRelationSchema = z.enum([
1993
+ "contains",
1994
+ "outlet_to",
1995
+ "target_action",
1996
+ "segue_to",
1997
+ "objc_dispatch",
1998
+ "swift_witness_dispatch",
1999
+ "swift_vtable_dispatch",
2000
+ "thunk_to",
2001
+ "direct_call",
2002
+ "indirect_call",
2003
+ "provider_call",
2004
+ "reads",
2005
+ "writes",
2006
+ "flows_to",
2007
+ "controls"
2008
+ ]);
2009
+ nativeInvestigationEdgeSchema = z.discriminatedUnion("resolution", [z.strictObject({
2010
+ id: z.string().min(1),
2011
+ from: z.string().min(1),
2012
+ to: z.string().min(1),
2013
+ relation: nativeInvestigationRelationSchema,
2014
+ resolution: z.enum([
2015
+ "observed",
2016
+ "inferred",
2017
+ "resolved",
2018
+ "ambiguous"
2019
+ ]),
2020
+ evidence: z.array(nativeMetadataEvidenceSchema).min(1),
2021
+ limitations: z.array(z.string())
2022
+ }), z.strictObject({
2023
+ id: z.string().min(1),
2024
+ from: z.string().min(1),
2025
+ to: z.null(),
2026
+ relation: nativeInvestigationRelationSchema,
2027
+ resolution: z.literal("unresolved"),
2028
+ reason: z.string().min(1),
2029
+ evidence: z.array(nativeMetadataEvidenceSchema),
2030
+ limitations: z.array(z.string())
2031
+ })]);
2032
+ nativeInvestigationCoverageSchema = z.strictObject({
2033
+ facet: z.string().min(1),
2034
+ status: z.enum([
2035
+ "complete",
2036
+ "partial",
2037
+ "unsupported",
2038
+ "not_requested"
2039
+ ]),
2040
+ reason: z.string().nullable(),
2041
+ examined: z.number().int().nonnegative(),
2042
+ omitted: z.number().int().nonnegative()
2043
+ });
2044
+ nativeInvestigationGraphSchema = z.strictObject({
2045
+ target_sha256: z.string().regex(/^[a-f0-9]{64}$/u),
2046
+ provider: z.strictObject({
2047
+ id: z.string().min(1),
2048
+ version: z.string().nullable(),
2049
+ tool_version: z.string().min(1)
2050
+ }),
2051
+ nodes: z.array(nativeInvestigationNodeSchema),
2052
+ edges: z.array(nativeInvestigationEdgeSchema),
2053
+ coverage: z.array(nativeInvestigationCoverageSchema),
2054
+ truncated: z.boolean()
2055
+ });
2056
+ nativeInvestigationTraceLimitsSchema = z.strictObject({
2057
+ max_depth: z.number().int().min(0).max(32).default(8),
2058
+ max_nodes: z.number().int().min(1).max(2e3).default(250),
2059
+ max_edges: z.number().int().min(1).max(5e3).default(500)
2060
+ });
2061
+ nativeInvestigationTraceSchema = z.strictObject({
2062
+ target_sha256: z.string().regex(/^[a-f0-9]{64}$/u),
2063
+ provider: nativeInvestigationGraphSchema.shape.provider,
2064
+ start: z.string().min(1),
2065
+ direction: z.enum(["forward", "backward"]),
2066
+ nodes: z.array(nativeInvestigationNodeSchema),
2067
+ edges: z.array(nativeInvestigationEdgeSchema),
2068
+ unresolved: z.array(nativeInvestigationEdgeSchema),
2069
+ reached_depth: z.number().int().nonnegative(),
2070
+ truncated: z.boolean(),
2071
+ reason: z.string().nullable(),
2072
+ coverage: z.array(nativeInvestigationCoverageSchema),
2073
+ limitations: z.array(z.string().min(1))
2074
+ });
2075
+ traceNativeInvestigationGraph = (graph, input) => {
2076
+ const start = graph.nodes.find(({ id }) => id === input.start);
2077
+ if (start === undefined) return {
2078
+ target_sha256: graph.target_sha256,
2079
+ provider: graph.provider,
2080
+ start: input.start,
2081
+ direction: input.direction ?? "forward",
2082
+ nodes: [],
2083
+ edges: [],
2084
+ unresolved: [],
2085
+ reached_depth: 0,
2086
+ truncated: false,
2087
+ reason: "start_node_missing",
2088
+ coverage: graph.coverage,
2089
+ limitations: ["The requested start node is absent from the supplied graph."]
2090
+ };
2091
+ const limits = nativeInvestigationTraceLimitsSchema.parse(input.limits ?? {});
2092
+ const direction = input.direction ?? "forward";
2093
+ const nodeById = new Map(graph.nodes.map((node) => [node.id, node]));
2094
+ const visited = new Set([start.id]);
2095
+ const selectedEdges = new Map();
2096
+ const unresolved = new Map();
2097
+ const queue = [{
2098
+ id: start.id,
2099
+ depth: 0
2100
+ }];
2101
+ let reachedDepth = 0;
2102
+ let truncated = false;
2103
+ let reason = null;
2104
+ const adjacency = new Map();
2105
+ for (const edge of graph.edges) {
2106
+ const nodeId = direction === "forward" ? edge.from : edge.to;
2107
+ if (nodeId === null) continue;
2108
+ const entries = adjacency.get(nodeId);
2109
+ if (entries === undefined) adjacency.set(nodeId, [edge]);
2110
+ else entries.push(edge);
2111
+ }
2112
+ while (queue.length > 0) {
2113
+ const current = queue.shift();
2114
+ if (current === undefined) break;
2115
+ reachedDepth = Math.max(reachedDepth, current.depth);
2116
+ const adjacent = adjacency.get(current.id) ?? [];
2117
+ for (const edge of adjacent) {
2118
+ if (selectedEdges.size + unresolved.size >= limits.max_edges) {
2119
+ truncated = true;
2120
+ reason = "max_edges_reached";
2121
+ break;
2122
+ }
2123
+ if (edge.resolution === "unresolved") {
2124
+ unresolved.set(edge.id, edge);
2125
+ continue;
2126
+ }
2127
+ const nextId = direction === "forward" ? edge.to : edge.from;
2128
+ const alreadyVisited = visited.has(nextId);
2129
+ if (!alreadyVisited && current.depth >= limits.max_depth) {
2130
+ truncated = true;
2131
+ reason ??= "max_depth_reached";
2132
+ continue;
2133
+ }
2134
+ selectedEdges.set(edge.id, edge);
2135
+ if (alreadyVisited) continue;
2136
+ if (visited.size >= limits.max_nodes) {
2137
+ truncated = true;
2138
+ reason = "max_nodes_reached";
2139
+ break;
2140
+ }
2141
+ if (!nodeById.has(nextId)) {
2142
+ truncated = true;
2143
+ reason ??= "edge_target_missing_from_graph";
2144
+ continue;
2145
+ }
2146
+ visited.add(nextId);
2147
+ queue.push({
2148
+ id: nextId,
2149
+ depth: current.depth + 1
2150
+ });
2151
+ }
2152
+ if (reason === "max_edges_reached" || reason === "max_nodes_reached") break;
2153
+ }
2154
+ return {
2155
+ target_sha256: graph.target_sha256,
2156
+ provider: graph.provider,
2157
+ start: start.id,
2158
+ direction,
2159
+ nodes: [...visited].flatMap((id) => {
2160
+ const node = nodeById.get(id);
2161
+ return node === undefined ? [] : [node];
2162
+ }),
2163
+ edges: [...selectedEdges.values()],
2164
+ unresolved: [...unresolved.values()],
2165
+ reached_depth: reachedDepth,
2166
+ truncated,
2167
+ reason,
2168
+ coverage: graph.coverage,
2169
+ 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."]
2170
+ };
2171
+ };
2172
+ joinInterfaceBuilderDispatch = (graph, metadata) => {
2173
+ const nodes = new Map(graph.nodes.map((node) => [node.id, node]));
2174
+ const edges = [...graph.edges];
2175
+ const existingEdgeIds = new Set(edges.map(({ id }) => id));
2176
+ const selectorNodesByAction = new Map();
2177
+ for (const edge of edges) {
2178
+ if (edge.resolution === "observed" && edge.relation === "target_action" && nodes.get(edge.to)?.kind === "objc_selector") selectorNodesByAction.set(edge.from, edge.to);
2179
+ }
2180
+ let examined = 0;
2181
+ let resolved = 0;
2182
+ let inferredWithoutOwnerClass = 0;
2183
+ for (const action of nodes.values()) {
2184
+ if (action.kind !== "action") continue;
2185
+ const selector = action.attributes.selector;
2186
+ if (typeof selector !== "string" || selector.length === 0) continue;
2187
+ const selectorNodeId = selectorNodesByAction.get(action.id);
2188
+ if (selectorNodeId === undefined) continue;
2189
+ const destinationEdge = edges.find((edge) => edge.resolution === "observed" && edge.relation === "target_action" && edge.from === action.id && [
2190
+ "view_controller",
2191
+ "placeholder",
2192
+ "external_object"
2193
+ ].includes(nodes.get(edge.to)?.kind ?? ""));
2194
+ if (destinationEdge === undefined || destinationEdge.resolution !== "observed") continue;
2195
+ const owner = nodes.get(destinationEdge.to);
2196
+ examined += 1;
2197
+ const declaredClass = owner?.attributes.class_name;
2198
+ const className = typeof declaredClass === "string" && declaredClass.length > 0 && owner?.kind === "view_controller" ? declaredClass : null;
2199
+ const candidates = metadata.objc_dispatch_implementations.filter((candidate) => candidate.method_type === "instance" && candidate.selector === selector && (className === null || candidate.class_name.replace(/\([^)]*\)$/u, "") === className));
2200
+ const implementation = candidates.length === 1 ? candidates[0] : undefined;
2201
+ const edgeId = `dispatch:${selectorNodeId}:${className ?? owner?.id ?? "unknown"}:${selector}`;
2202
+ if (existingEdgeIds.has(edgeId)) continue;
2203
+ existingEdgeIds.add(edgeId);
2204
+ if (implementation === undefined || implementation.implementation_address === null) {
2205
+ edges.push({
2206
+ id: edgeId,
2207
+ from: selectorNodeId,
2208
+ to: null,
2209
+ relation: "objc_dispatch",
2210
+ resolution: "unresolved",
2211
+ reason: candidates.length > 1 ? "selector_has_multiple_candidate_implementations" : "implementation_not_resolved_from_binary_metadata_or_provider_symbols",
2212
+ evidence: [...action.evidence, ...candidates.flatMap(({ evidence }) => evidence)],
2213
+ limitations: ["A missing or ambiguous symbol match does not prove that the runtime implementation is absent."]
2214
+ });
2215
+ continue;
2216
+ }
2217
+ const functionId = `native:function:${implementation.implementation_address}`;
2218
+ if (!nodes.has(functionId)) nodes.set(functionId, {
2219
+ id: functionId,
2220
+ kind: "function",
2221
+ name: `${implementation.class_name} ${selector}`,
2222
+ location: {
2223
+ address: implementation.implementation_address,
2224
+ file_offset: implementation.location.file_offset
2225
+ },
2226
+ attributes: {
2227
+ class_name: implementation.class_name,
2228
+ selector,
2229
+ method_type: implementation.method_type
2230
+ },
2231
+ evidence: implementation.evidence
2232
+ });
2233
+ edges.push({
2234
+ id: edgeId,
2235
+ from: selectorNodeId,
2236
+ to: functionId,
2237
+ relation: "objc_dispatch",
2238
+ resolution: className !== null && implementation.decode.status === "decoded" ? "resolved" : "inferred",
2239
+ evidence: [...action.evidence, ...implementation.evidence],
2240
+ 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."]
2241
+ });
2242
+ resolved += 1;
2243
+ if (className === null) inferredWithoutOwnerClass += 1;
2244
+ }
2245
+ return nativeInvestigationGraphSchema.parse({
2246
+ ...graph,
2247
+ provider: {
2248
+ id: "rea-native-investigation",
2249
+ version: null,
2250
+ tool_version: "rea-native-investigation/1"
2251
+ },
2252
+ nodes: [...nodes.values()],
2253
+ edges,
2254
+ coverage: [...graph.coverage, {
2255
+ facet: "ui_to_objc_dispatch",
2256
+ status: examined === resolved && inferredWithoutOwnerClass === 0 ? "complete" : "partial",
2257
+ reason: examined === resolved && inferredWithoutOwnerClass === 0 ? null : inferredWithoutOwnerClass > 0 ? "some_action_receivers_remain_placeholders" : "some_action_implementations_not_resolved",
2258
+ examined,
2259
+ omitted: examined - resolved + inferredWithoutOwnerClass
2260
+ }]
2261
+ });
2262
+ };
2263
+ })))();
2264
+ }
2265
+
2266
+ //#endregion
2267
+ //#region dist/domain/apple/interfaceBuilderGraph.js
2268
+ var interfaceBuilderDocumentSchema, interfaceBuilderAnalysisSchema, buildInterfaceBuilderAnalysis, interfaceBuilderLimitsSchema;
2269
+ function init_interfaceBuilderGraph() {
2270
+ return (init_interfaceBuilderGraph = __esmMin((() => {
2271
+ init_interfaceBuilderKeyedArchive();
2272
+ init_nativeInvestigationGraph();
2273
+ interfaceBuilderDocumentSchema = z.strictObject({
2274
+ relative_path: z.string().min(1),
2275
+ archive_sha256: z.string().regex(/^[a-f0-9]{64}$/u),
2276
+ document_kind: z.enum(["nib", "storyboard_scene"]),
2277
+ object_count: z.number().int().nonnegative(),
2278
+ connection_count: z.number().int().nonnegative(),
2279
+ hierarchy_complete: z.boolean()
2280
+ });
2281
+ interfaceBuilderAnalysisSchema = z.strictObject({
2282
+ target_sha256: z.string().regex(/^[a-f0-9]{64}$/u),
2283
+ documents: z.array(interfaceBuilderDocumentSchema).max(64),
2284
+ graph: nativeInvestigationGraphSchema,
2285
+ limitations: z.array(z.string())
2286
+ });
2287
+ buildInterfaceBuilderAnalysis = (input) => {
2288
+ const nodes = new Map();
2289
+ const edges = [];
2290
+ const coverage = [];
2291
+ const summaries = [];
2292
+ let truncated = false;
2293
+ let omittedObjects = 0;
2294
+ let omittedConnections = 0;
2295
+ let omittedGraphNodes = 0;
2296
+ let omittedHierarchyReferences = 0;
2297
+ for (const document of input.documents.slice(0, input.limits.max_documents)) {
2298
+ const parsed = parseInterfaceBuilderRecords(document.raw);
2299
+ const prefix = `ib:${JSON.stringify(document.relativePath)}:`;
2300
+ const graphId = (kind, parts = []) => `${prefix}${kind}:${JSON.stringify(parts)}`;
2301
+ const rootId = `${prefix}root`;
2302
+ const objectIds = new Set(parsed.objects.map(({ id }) => id));
2303
+ const evidenceFor = (description) => [{
2304
+ kind: "interface_builder_resource",
2305
+ description,
2306
+ location: {
2307
+ address: null,
2308
+ file_offset: null
2309
+ },
2310
+ artifact_path: document.relativePath,
2311
+ artifact_sha256: document.archiveSha256
2312
+ }];
2313
+ const addNode = (node) => {
2314
+ if (nodes.has(node.id)) return true;
2315
+ if (nodes.size >= input.limits.max_objects) {
2316
+ truncated = true;
2317
+ omittedGraphNodes += 1;
2318
+ return false;
2319
+ }
2320
+ nodes.set(node.id, node);
2321
+ return true;
2322
+ };
2323
+ const rootNode = {
2324
+ id: rootId,
2325
+ kind: document.documentKind === "nib" ? "scene" : "storyboard",
2326
+ name: document.relativePath,
2327
+ location: null,
2328
+ attributes: { document_kind: document.documentKind },
2329
+ evidence: evidenceFor("compiled document")
2330
+ };
2331
+ addNode(rootNode);
2332
+ let documentObjectCount = 0;
2333
+ for (const object of parsed.objects.slice(0, input.limits.max_objects)) {
2334
+ const id = graphId("object", [object.id]);
2335
+ const kind = object.kind === "other" ? "unknown" : object.kind;
2336
+ if (!addNode({
2337
+ id,
2338
+ kind,
2339
+ name: object.name,
2340
+ location: null,
2341
+ attributes: {
2342
+ ...object.attributes,
2343
+ interface_builder_object_id: object.id,
2344
+ class_name: object.class_name
2345
+ },
2346
+ evidence: evidenceFor(`object ${object.id}`)
2347
+ })) {
2348
+ break;
2349
+ }
2350
+ documentObjectCount += 1;
2351
+ }
2352
+ let connectionEdgeCount = 0;
2353
+ let hierarchyEdgeCount = 0;
2354
+ let documentOmittedConnections = 0;
2355
+ let documentOmittedHierarchyEdges = 0;
2356
+ const objectNodeId = (objectId) => graphId("object", [objectId]);
2357
+ const addEdge = (edge, isHierarchy) => {
2358
+ if (isHierarchy ? hierarchyEdgeCount >= input.limits.max_objects : connectionEdgeCount >= input.limits.max_connections * 3) {
2359
+ truncated = true;
2360
+ if (isHierarchy) {
2361
+ documentOmittedHierarchyEdges += 1;
2362
+ } else {
2363
+ omittedConnections += 1;
2364
+ documentOmittedConnections += 1;
2365
+ }
2366
+ return;
2367
+ }
2368
+ edges.push(edge);
2369
+ if (isHierarchy) hierarchyEdgeCount += 1;
2370
+ else connectionEdgeCount += 1;
2371
+ };
2372
+ const connect = (id, from, to, relation, description, reason) => {
2373
+ if (!nodes.has(from)) {
2374
+ truncated = true;
2375
+ if (relation === "contains" && id.includes(":hierarchy:")) {
2376
+ documentOmittedHierarchyEdges += 1;
2377
+ } else {
2378
+ omittedConnections += 1;
2379
+ documentOmittedConnections += 1;
2380
+ }
2381
+ return;
2382
+ }
2383
+ const evidence = evidenceFor(description);
2384
+ const unresolvedEndpoint = to !== null && !nodes.has(to);
2385
+ if (unresolvedEndpoint) truncated = true;
2386
+ const edgeTo = unresolvedEndpoint ? null : to;
2387
+ const edgeReason = unresolvedEndpoint ? "endpoint_omitted_by_object_limit" : reason ?? "destination_unresolved";
2388
+ addEdge(edgeTo === null ? {
2389
+ id,
2390
+ from,
2391
+ to: null,
2392
+ relation,
2393
+ resolution: "unresolved",
2394
+ reason: edgeReason,
2395
+ evidence,
2396
+ limitations: []
2397
+ } : {
2398
+ id,
2399
+ from,
2400
+ to: edgeTo,
2401
+ relation,
2402
+ resolution: "observed",
2403
+ evidence,
2404
+ limitations: []
2405
+ }, relation === "contains" && id.includes(":hierarchy:"));
2406
+ };
2407
+ let hierarchyCount = 0;
2408
+ let hierarchyTruncated = false;
2409
+ const visitHierarchy = (initial, initialParentId) => {
2410
+ const pending = [{
2411
+ value: initial,
2412
+ parentId: initialParentId
2413
+ }];
2414
+ while (pending.length > 0) {
2415
+ if (hierarchyCount >= input.limits.max_objects) {
2416
+ truncated = true;
2417
+ hierarchyTruncated = true;
2418
+ return;
2419
+ }
2420
+ const entry = pending.pop();
2421
+ if (entry === undefined) break;
2422
+ const { value, parentId } = entry;
2423
+ if (Array.isArray(value)) {
2424
+ for (let index = value.length - 1; index >= 0; index -= 1) {
2425
+ const child = value[index];
2426
+ if (child !== undefined) pending.push({
2427
+ value: child,
2428
+ parentId
2429
+ });
2430
+ }
2431
+ continue;
2432
+ }
2433
+ if (typeof value !== "object" || value === null) continue;
2434
+ const item = record(value);
2435
+ const objectId = firstString(item.objectID, item["object-id"], item.id, typeof item.archiveUID === "number" ? String(item.archiveUID) : null);
2436
+ let nextParent = parentId;
2437
+ if (objectId !== null) {
2438
+ const known = objectIds.has(objectId);
2439
+ const childId = known ? objectNodeId(objectId) : graphId("unknown", [objectId]);
2440
+ if (!known && !addNode({
2441
+ id: childId,
2442
+ kind: "unknown",
2443
+ name: firstString(item.label, item.name) ?? objectId,
2444
+ location: null,
2445
+ attributes: { interface_builder_object_id: objectId },
2446
+ evidence: evidenceFor(`hierarchy item ${objectId}`)
2447
+ })) hierarchyTruncated = true;
2448
+ connect(graphId("hierarchy", [parentId, childId]), parentId, childId, "contains", `hierarchy ${objectId}`);
2449
+ nextParent = childId;
2450
+ hierarchyCount += 1;
2451
+ }
2452
+ pending.push({
2453
+ value: item.children,
2454
+ parentId: nextParent
2455
+ });
2456
+ }
2457
+ };
2458
+ for (const hierarchy of parsed.hierarchy) visitHierarchy(hierarchy, rootId);
2459
+ for (const [index, item] of parsed.connections.slice(0, input.limits.max_connections).entries()) {
2460
+ const sourceId = objectNodeId(item.source_id);
2461
+ if (!nodes.has(sourceId)) addNode({
2462
+ id: sourceId,
2463
+ kind: "unknown",
2464
+ name: item.source_id,
2465
+ location: null,
2466
+ attributes: { interface_builder_object_id: item.source_id },
2467
+ evidence: evidenceFor(`connection source ${item.source_id}`)
2468
+ });
2469
+ const destinationId = item.destination_id === null ? null : objectNodeId(item.destination_id);
2470
+ if (item.kind === "action") {
2471
+ const actionId = graphId("action", [item.id]);
2472
+ const selectorId = item.label === null ? null : graphId("selector", [item.destination_id, item.label]);
2473
+ addNode({
2474
+ id: actionId,
2475
+ kind: "action",
2476
+ name: item.label ?? "unlabeled action",
2477
+ location: null,
2478
+ attributes: {
2479
+ selector: item.label,
2480
+ destination_id: item.destination_id,
2481
+ ...item.attributes
2482
+ },
2483
+ evidence: evidenceFor(`action ${item.id}`)
2484
+ });
2485
+ connect(graphId("action-edge", [item.id, "source"]), sourceId, actionId, "target_action", `action source ${item.source_id}`);
2486
+ if (selectorId !== null) {
2487
+ addNode({
2488
+ id: selectorId,
2489
+ kind: "objc_selector",
2490
+ name: item.label ?? "unknown selector",
2491
+ location: null,
2492
+ attributes: { destination_id: item.destination_id },
2493
+ evidence: evidenceFor(`selector ${item.label}`)
2494
+ });
2495
+ connect(graphId("action-edge", [item.id, "selector"]), actionId, selectorId, "target_action", `selector ${item.label}`);
2496
+ }
2497
+ 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");
2498
+ else connect(graphId("action-edge", [item.id, "destination"]), actionId, destinationId, "target_action", `action destination ${item.destination_id}`);
2499
+ } else if (item.kind === "outlet") {
2500
+ const outletId = graphId("outlet", [item.id]);
2501
+ addNode({
2502
+ id: outletId,
2503
+ kind: "outlet",
2504
+ name: item.label ?? item.id,
2505
+ location: null,
2506
+ attributes: item.attributes,
2507
+ evidence: evidenceFor(`outlet ${item.id}`)
2508
+ });
2509
+ connect(graphId("outlet-edge", [item.id, "source"]), sourceId, outletId, "contains", `outlet source ${item.source_id}`);
2510
+ 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");
2511
+ else connect(graphId("outlet-edge", [item.id, "destination"]), outletId, destinationId, "outlet_to", `outlet ${item.label ?? item.id}`);
2512
+ } else if (item.kind === "segue") {
2513
+ if (destinationId === null || !nodes.has(destinationId)) connect(graphId("segue", [index]), sourceId, null, "segue_to", `segue ${item.label ?? item.id}`, "destination_scene_missing");
2514
+ else connect(graphId("segue", [index]), sourceId, destinationId, "segue_to", `segue ${item.label ?? item.id}`);
2515
+ } else {
2516
+ connect(graphId("unknown-connection", [index]), sourceId, null, "contains", `connection type ${item.kind}`, "unsupported_connection_type");
2517
+ }
2518
+ }
2519
+ const objectsTruncated = parsed.omittedObjects > 0 || parsed.objects.length > documentObjectCount;
2520
+ const parserOmittedHierarchyReferences = parsed.omittedHierarchyReferences;
2521
+ omittedHierarchyReferences += parserOmittedHierarchyReferences;
2522
+ const parserOmittedConnections = parsed.omittedConnections;
2523
+ const connectionsTruncated = parserOmittedConnections > 0 || parsed.connections.length > input.limits.max_connections;
2524
+ omittedObjects += parsed.omittedObjects + Math.max(0, parsed.objects.length - documentObjectCount);
2525
+ omittedConnections += Math.max(0, parsed.connections.length - input.limits.max_connections) + parserOmittedConnections;
2526
+ summaries.push({
2527
+ relative_path: document.relativePath,
2528
+ archive_sha256: document.archiveSha256,
2529
+ document_kind: document.documentKind,
2530
+ object_count: parsed.objectCount,
2531
+ connection_count: parsed.connections.length + parserOmittedConnections,
2532
+ hierarchy_complete: parsed.hierarchy.length > 0 && !truncated && parserOmittedHierarchyReferences === 0
2533
+ });
2534
+ coverage.push({
2535
+ facet: `objects:${document.relativePath}`,
2536
+ status: objectsTruncated ? "partial" : "complete",
2537
+ reason: objectsTruncated ? "object_limit_reached" : null,
2538
+ examined: documentObjectCount,
2539
+ omitted: parsed.omittedObjects + Math.max(0, parsed.objects.length - documentObjectCount)
2540
+ }, {
2541
+ facet: `connections:${document.relativePath}`,
2542
+ status: connectionsTruncated || documentOmittedConnections > 0 ? "partial" : "complete",
2543
+ reason: connectionsTruncated || documentOmittedConnections > 0 ? "connection_limit_reached" : null,
2544
+ examined: Math.min(parsed.connections.length, input.limits.max_connections),
2545
+ omitted: Math.max(0, parsed.connections.length - input.limits.max_connections) + documentOmittedConnections + parserOmittedConnections
2546
+ }, {
2547
+ facet: `hierarchy:${document.relativePath}`,
2548
+ status: parserOmittedHierarchyReferences > 0 ? "partial" : parsed.hierarchy.length === 0 ? "unsupported" : hierarchyTruncated || documentOmittedHierarchyEdges > 0 ? "partial" : "complete",
2549
+ reason: parserOmittedHierarchyReferences > 0 ? "archive_hierarchy_references_missing" : parsed.hierarchy.length === 0 ? "archive_hierarchy_not_decoded" : hierarchyTruncated || documentOmittedHierarchyEdges > 0 ? "graph_limit_reached" : null,
2550
+ examined: hierarchyCount,
2551
+ omitted: documentOmittedHierarchyEdges + parserOmittedHierarchyReferences
2552
+ }, {
2553
+ facet: `classes:${document.relativePath}`,
2554
+ status: Object.keys(parsed.classes).length > 0 ? "complete" : "unsupported",
2555
+ reason: Object.keys(parsed.classes).length > 0 ? null : "archive_class_table_not_decoded",
2556
+ examined: Object.keys(parsed.classes).length,
2557
+ omitted: 0
2558
+ });
2559
+ }
2560
+ if (input.documents.length > input.limits.max_documents) {
2561
+ truncated = true;
2562
+ coverage.push({
2563
+ facet: "documents",
2564
+ status: "partial",
2565
+ reason: "document_limit_reached",
2566
+ examined: input.limits.max_documents,
2567
+ omitted: input.documents.length - input.limits.max_documents
2568
+ });
2569
+ }
2570
+ if (omittedGraphNodes > 0) coverage.push({
2571
+ facet: "graph_nodes",
2572
+ status: "partial",
2573
+ reason: "max_objects_reached",
2574
+ examined: nodes.size,
2575
+ omitted: omittedGraphNodes
2576
+ });
2577
+ return interfaceBuilderAnalysisSchema.parse({
2578
+ target_sha256: input.targetSha256,
2579
+ documents: summaries,
2580
+ graph: {
2581
+ target_sha256: input.targetSha256,
2582
+ provider: {
2583
+ id: "rea-artifact-graph",
2584
+ version: "1",
2585
+ tool_version: input.toolVersion
2586
+ },
2587
+ nodes: [...nodes.values()],
2588
+ edges,
2589
+ coverage,
2590
+ truncated: truncated || omittedObjects > 0 || omittedConnections > 0 || omittedHierarchyReferences > 0
2591
+ },
2592
+ limitations: [
2593
+ "The graph reflects recognized Interface Builder archive fields and connections; omitted private or unrecognized archive fields remain unknown.",
2594
+ "A target-action selector is an Interface Builder observation and does not prove that the binary contains a matching implementation.",
2595
+ "Decoded constraints, runtime visibility, dynamic UI creation, and pixel geometry are not inferred from these archives."
2596
+ ]
2597
+ });
2598
+ };
2599
+ interfaceBuilderLimitsSchema = z.strictObject({
2600
+ max_documents: z.number().int().min(1).max(64).default(64),
2601
+ max_objects: z.number().int().min(1).max(2e4).default(2e4),
2602
+ max_connections: z.number().int().min(1).max(4e4).default(4e4),
2603
+ trace: nativeInvestigationTraceLimitsSchema.default({
2604
+ max_depth: 8,
2605
+ max_nodes: 250,
2606
+ max_edges: 500
2607
+ })
2608
+ });
2609
+ })))();
2610
+ }
2611
+
2612
+ //#endregion
2613
+ export { unresolvedCallSchema as $, init_canonicalJsonDigestSteps as A, functionDossierSchema as B, isImmutableEvidence as C, rebindEvidenceToTargetPath as D, rebindEvidenceSubjectTargetPath as E, addressDistance as F, parseFunctionDossier as G, init_hopperValues as H, analysisBookmarkSchema as I, parseSegments as J, parseListCount as K, analysisStringSchema as L, nativeCallTargetsSchema as M, nativeInstructionInputSchema as N, validateAnalysisProfileProvider as O, nativeInstructionSchema as P, referenceKindSchema as Q, functionBodyEntryAgrees as R, init_evidence as S, providerSchema as T, localVariableSchema as U, functionInstructionWindowSchema as V, parseDocuments as W, procedureIdentitySchema as X, procedureClassificationSchema as Y, referenceEdgeSchema as Z, createEvidence as _, init_nativeInvestigationGraph as a, analysisProfileSchema as at, evidenceSchema as b, nativeInvestigationTraceSchema as c, createAnalysisProfile as ct, inspectNativeDispatchMetadata as d, init_binaryTargetTypes as dt, init_nativeValueFlow as et, nativeDispatchMetadataResultSchema as f, isMachOFormat as ft, nativeValueTraceSchema as g, nativeValueTraceInputSchema as h, interfaceBuilderLimitsSchema as i, nativeApiInspectionResultSchema as it, init_nativeInstruction as j, canonicalJsonDigestSteps as k, traceNativeInvestigationGraph as l, init_analysisProfile as lt, init_nativeValueTrace as m, relationshipCoverageSchema as mt, init_interfaceBuilderGraph as n, init_nativeApiBoundary as nt, joinInterfaceBuilderDispatch as o, analysisProfilesEqual as ot, objcSwiftMetadataSchema as p, init_relationshipCoverage as pt, parseRelatedAddresses as q, interfaceBuilderAnalysisSchema as r, nativeApiBoundarySchema as rt, nativeInvestigationGraphSchema as s, committedProviderSchema as st, buildInterfaceBuilderAnalysis as t, nativeValueFlowSchema as tt, init_objcSwiftMetadata as u, BINARY_ARCHITECTURES as ut, createImmutableEvidenceSteps as v, parseEvidence as w, immutableEvidence as x, evidenceLocationSchema as y, functionBodySchema as z };