@jshookmcp/jshook 0.3.2 → 0.3.4

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 (357) hide show
  1. package/README.md +19 -4
  2. package/README.zh.md +19 -4
  3. package/dist/AntiCheatDetector-B-mz4DK_.mjs +1 -0
  4. package/dist/{BrowserSessionCoordinator-BJ-HOxo0.mjs → BrowserSessionCoordinator-Cdic8FsH.mjs} +1 -1
  5. package/dist/CodeAnalyzerDataFlow-a-NkwcaG.mjs +2 -0
  6. package/dist/CodeInjector-B099WO6x.mjs +1 -0
  7. package/dist/ConsoleMonitor-BZRqrBH-.mjs +306 -0
  8. package/dist/CpuEngine-BC8jayy9.mjs +1 -0
  9. package/dist/DartAotExecutor-B7WVTKsd.mjs +1 -0
  10. package/dist/DartAotLoader-BxdhW-K2.mjs +2 -0
  11. package/dist/DarwinAPI-DzojdfjF.mjs +1 -0
  12. package/dist/DetailedDataManager-Dgh402Gp.mjs +5 -0
  13. package/dist/ExecutionSandbox-QbWQmzuC.mjs +45 -0
  14. package/dist/ExtensionManager.tools-D3h818Xs.mjs +1 -0
  15. package/dist/FingerprintManager-D9Zlr6be.mjs +1 -0
  16. package/dist/HardwareBreakpoint-C_lJ22bj.mjs +1 -0
  17. package/dist/HeapAnalyzer-bJbLvzp6.mjs +1 -0
  18. package/dist/HookPatternScanner-yx4vJ9sd.mjs +1 -0
  19. package/dist/InstrumentationSession-Cv1wikLA.mjs +1 -0
  20. package/dist/IntegrityScanner-BB7sw-SA.mjs +1 -0
  21. package/dist/JScramblerDeobfuscator-NVR5VatT.mjs +1 -0
  22. package/dist/MCPServer.activation.ttl-C2wOCMLV.mjs +1 -0
  23. package/dist/MCPServer.search.helpers-DlassAew.mjs +2 -0
  24. package/dist/MCPServer.search.validation-DnifPCCv.mjs +1 -0
  25. package/dist/MemoryController-CCsGuGJS.mjs +2 -0
  26. package/dist/{MemoryScanSession-DG_F-PjE.mjs → MemoryScanSession-BZ2A9Ph1.mjs} +1 -1
  27. package/dist/MemoryScanner-DAxsq7Sx.mjs +1 -0
  28. package/dist/NativeMemoryManager.impl-BIJzXMqH.mjs +1 -0
  29. package/dist/{NativeMemoryManager.utils-BHy1P_jM.mjs → NativeMemoryManager.utils-CMoul2an.mjs} +1 -1
  30. package/dist/PEAnalyzer-CB_kaTis.mjs +1 -0
  31. package/dist/PackerDeobfuscator-BpwGjxDL.mjs +7 -0
  32. package/dist/PointerChainEngine-B6SYv6ZM.mjs +1 -0
  33. package/dist/ProcessRegistry-C5W1Tkn9.mjs +1 -0
  34. package/dist/{handlers-mPFiNPe8.mjs → QuickJSSandbox-CIde-jzG.mjs} +2 -5
  35. package/dist/{ResponseBuilder-BfWP-uaT.mjs → ResponseBuilder-BLicSCjn.mjs} +1 -1
  36. package/dist/ReverseEvidenceGraph-DJzk0GQz.mjs +2 -0
  37. package/dist/ServerRuntimeState-DGXNv8Ji.mjs +1 -0
  38. package/dist/Speedhack-MGoeq1ZS.mjs +1 -0
  39. package/dist/StructureAnalyzer-CCTWAXR3.mjs +2 -0
  40. package/dist/ToolHandlerMap-C40EmuLT.mjs +1 -0
  41. package/dist/{ToolProbe-C7ZU2x7M.mjs → ToolProbe-B02GC3ZY.mjs} +1 -1
  42. package/dist/ToolRegistry-CzqQxFqf.mjs +1 -0
  43. package/dist/ToolRouter.policy-Bgb3S8jc.mjs +4 -0
  44. package/dist/TraceRecorder-BfeCTQUj.mjs +407 -0
  45. package/dist/VMDeobfuscator-BHtkV850.mjs +1 -0
  46. package/dist/Win32API-G7QPyckq.mjs +1 -0
  47. package/dist/{Win32Debug-CYrIQBvr.mjs → Win32Debug-6yzmtv5b.mjs} +1 -1
  48. package/dist/allocation-track-CiI-CnaI.mjs +1 -0
  49. package/dist/analysis-CojUzwX-.mjs +27 -0
  50. package/dist/antidebug-CgU84TE1.mjs +1 -0
  51. package/dist/apk-DrPBsOq8.mjs +1 -0
  52. package/dist/artifactRetention-Bk6fW2uF.mjs +1 -0
  53. package/dist/artifacts-Bx9GLx4J.mjs +1 -0
  54. package/dist/ast-bridge-BlOrmVAv.mjs +1 -0
  55. package/dist/ast-utils-B9E5k_v1.mjs +1 -0
  56. package/dist/{betterSqlite3-Brtq-SIQ.mjs → betterSqlite3-Bdo_ifuJ.mjs} +1 -1
  57. package/dist/binary-instrument-DiE1BP0x.mjs +12 -0
  58. package/dist/boringssl-inspector-C6M3sOga.mjs +2 -0
  59. package/dist/browser-QDUu5ML9.mjs +29 -0
  60. package/dist/{handlers-yo_xYzT8.mjs → canvas-g5kmLdY-.mjs} +1098 -24
  61. package/dist/{capabilities-CyXuKUl1.mjs → capabilities-DwzyxL2w.mjs} +1 -1
  62. package/dist/cdp-session-Dy4OwMOP.mjs +1 -0
  63. package/dist/collector-Cld4i-E4.mjs +1 -0
  64. package/dist/config-5ODJ3Aj0.mjs +3 -0
  65. package/dist/constants-nvsLpSri.mjs +1 -0
  66. package/dist/coordination-C6y2gM9O.mjs +98 -0
  67. package/dist/coverage-and-block--cWjjEe5.mjs +1 -0
  68. package/dist/dart-inspector-D4IKxZ6u.mjs +0 -0
  69. package/dist/debugger-C2SpiXoO.mjs +1 -0
  70. package/dist/definitions-0mtilYzG.mjs +1 -0
  71. package/dist/definitions-9csunmeX.mjs +1 -0
  72. package/dist/definitions-B11MudW_.mjs +1 -0
  73. package/dist/definitions-BKpRDjcI.mjs +1 -0
  74. package/dist/definitions-BXE3H4re.mjs +1 -0
  75. package/dist/definitions-BlPHe5DX.mjs +1 -0
  76. package/dist/definitions-Bob4XMxI.mjs +27 -0
  77. package/dist/definitions-BpIQN2nm.mjs +1 -0
  78. package/dist/definitions-BvolWeSu.mjs +1 -0
  79. package/dist/definitions-C-6j3Ejl.mjs +1 -0
  80. package/dist/definitions-C-AdFfFu.mjs +1 -0
  81. package/dist/definitions-CArdw_9T.mjs +1 -0
  82. package/dist/definitions-CCvIcRrT.mjs +1 -0
  83. package/dist/definitions-CJPE5PIl.mjs +1 -0
  84. package/dist/definitions-CbqeW06u.mjs +1 -0
  85. package/dist/definitions-Cexmkypg.mjs +1 -0
  86. package/dist/definitions-D1dxl8qt.mjs +1 -0
  87. package/dist/definitions-D3uT-ZbU.mjs +1 -0
  88. package/dist/definitions-DtOY5iUc.mjs +1 -0
  89. package/dist/{definitions-DxFNRQNK2.mjs → definitions-DvrYdDCJ2.mjs} +1 -1
  90. package/dist/{definitions-Cenu6mxo.mjs → definitions-aeRd5DAR.mjs} +1 -1
  91. package/dist/definitions-ihxOqOC4.mjs +1 -0
  92. package/dist/deopt-trace-qnAcC931.mjs +17 -0
  93. package/dist/disasm-DoxSucGp.mjs +1 -0
  94. package/dist/dumpsys-parser-Du-5ruEe.mjs +2 -0
  95. package/dist/encoding-UMtwgy4M.mjs +2 -0
  96. package/dist/ensure-browser-core-BP70x0TB.mjs +285 -0
  97. package/dist/factory-BeND77hf.mjs +2 -0
  98. package/dist/graphql-CF7QKJME.mjs +68 -0
  99. package/dist/grpc-raw-Dp7ps2sv.mjs +1 -0
  100. package/dist/handlers--qCl9vNv.mjs +1 -0
  101. package/dist/handlers-BHIu1LqA.mjs +1 -0
  102. package/dist/{antidebug-7L3ygj_9.mjs → handlers-BQ4K8Jbr.mjs} +2 -2
  103. package/dist/handlers-BxQv-wtf.mjs +8 -0
  104. package/dist/handlers-ByYG27-5.mjs +1 -0
  105. package/dist/handlers-C0I9-BtX.mjs +5 -0
  106. package/dist/handlers-CL0Iokmw.mjs +1 -0
  107. package/dist/handlers-CNbhIdSK.mjs +4 -0
  108. package/dist/handlers-CnTTSJFs.mjs +109 -0
  109. package/dist/handlers-CoDx6akJ2.mjs +49 -0
  110. package/dist/{handlers-0yKLRIfo.mjs → handlers-DASJI0Pn.mjs} +1 -1
  111. package/dist/handlers-DRKMaA-_.mjs +74 -0
  112. package/dist/handlers-Dalu0olz.mjs +2 -0
  113. package/dist/handlers-KY0g31ny.mjs +9 -0
  114. package/dist/handlers-oGo60aVv.mjs +1 -0
  115. package/dist/handlers.impl-BTXLw6Qc.mjs +1 -0
  116. package/dist/heap-sampling-BqdiU-5j.mjs +1 -0
  117. package/dist/{hooks-D4XLfgtV.mjs → hooks-COK3t5rT.mjs} +52 -33
  118. package/dist/index.mjs +11 -11
  119. package/dist/logger-BGCcd-jJ.mjs +1 -0
  120. package/dist/macro-nUYUjKNZ.mjs +2 -0
  121. package/dist/maintenance-CfnE7ZKU.mjs +4 -0
  122. package/dist/manifest-7EOTUc0D.mjs +1 -0
  123. package/dist/manifest-B5ujuQmf.mjs +1 -0
  124. package/dist/manifest-BErXl3zn.mjs +1 -0
  125. package/dist/manifest-BKA-mD3J.mjs +1 -0
  126. package/dist/manifest-BUXj23bX.mjs +1 -0
  127. package/dist/manifest-BfXt9cau.mjs +1 -0
  128. package/dist/manifest-Bx-tpURK.mjs +1 -0
  129. package/dist/manifest-C0owVAdq.mjs +1 -0
  130. package/dist/manifest-C5XqYc9o.mjs +1 -0
  131. package/dist/manifest-CVKzLjsA.mjs +1 -0
  132. package/dist/manifest-CaeFjdhj.mjs +1 -0
  133. package/dist/manifest-CegBgip0.mjs +1 -0
  134. package/dist/manifest-CoJHqlgS.mjs +1 -0
  135. package/dist/manifest-D0dbtDqd.mjs +1 -0
  136. package/dist/manifest-D5Gr8ujd.mjs +12 -0
  137. package/dist/manifest-D82z-5og.mjs +1 -0
  138. package/dist/manifest-DA2afIwh.mjs +1 -0
  139. package/dist/manifest-DAbiFP5o.mjs +1 -0
  140. package/dist/manifest-DEY0s1O72.mjs +1 -0
  141. package/dist/manifest-DTOqNqiA.mjs +1 -0
  142. package/dist/manifest-DZ6ELNgX.mjs +1 -0
  143. package/dist/manifest-DjHkjddT.mjs +1 -0
  144. package/dist/manifest-DocA_itf2.mjs +1 -0
  145. package/dist/manifest-Dpnhvfq0.mjs +1 -0
  146. package/dist/manifest-DucPMG_a.mjs +1 -0
  147. package/dist/manifest-Dw5yYEac.mjs +1 -0
  148. package/dist/manifest-Ic_Cg66S.mjs +1 -0
  149. package/dist/manifest-JHaG6GMN.mjs +1 -0
  150. package/dist/manifest-QdkIzmYM.mjs +1 -0
  151. package/dist/manifest-YZqaCe25.mjs +1 -0
  152. package/dist/manifest-f0lUeXwq.mjs +1 -0
  153. package/dist/manifest-h-Ebisf8.mjs +1 -0
  154. package/dist/manifest-oOfTymBS.mjs +1 -0
  155. package/dist/manifest-qXqrO6KC.mjs +2 -0
  156. package/dist/mapsParser-DrJoeC0c.mjs +1 -0
  157. package/dist/modules-CC_ADmwi.mjs +333 -0
  158. package/dist/mojo-ipc-kVztXYw-.mjs +140 -0
  159. package/dist/native-D9ouskXO.mjs +961 -0
  160. package/dist/native-bridge-Dzd7hYoq.mjs +1 -0
  161. package/dist/network-C5Y-S87J.mjs +7 -0
  162. package/dist/one-gadget-CiWFE17F.mjs +1 -0
  163. package/dist/outputPaths-CHtELDyi.mjs +1 -0
  164. package/dist/parse-args-B6dwWc9k.mjs +1 -0
  165. package/dist/platform-BIXgJaM3.mjs +94 -0
  166. package/dist/process-aDIfLC0v.mjs +6 -0
  167. package/dist/proxy-DsHsQ1I4.mjs +2 -0
  168. package/dist/registry-7h8jJ9y9.mjs +1 -0
  169. package/dist/{registry-DH4sc1dt.mjs → registry-DJDnkQW2.mjs} +1 -1
  170. package/dist/response-R8ghbZSb.mjs +1 -0
  171. package/dist/retry-policy-DtYv0kDi.mjs +1 -0
  172. package/dist/reverseEngineeringConfig-BhZLOa3C.mjs +1 -0
  173. package/dist/safeOutput-Dt4mfjXA.mjs +1 -0
  174. package/dist/search-defaults-BBRJNAzC.mjs +1 -0
  175. package/dist/server/plugin-api.mjs +1 -1
  176. package/dist/server/search/EmbeddingWorker.d.mts +1 -0
  177. package/dist/server/search/EmbeddingWorker.mjs +1 -0
  178. package/dist/shared-BKtWZDGN.mjs +1 -0
  179. package/dist/sourcemap-2VIeVeKw.mjs +3 -0
  180. package/dist/streaming-DkpE3GGU.mjs +15 -0
  181. package/dist/syscall-DGZoYM_U.mjs +1 -0
  182. package/dist/transform-BJqsBC_-.mjs +105 -0
  183. package/dist/turbofan-graph-CbGHNVtl.mjs +1 -0
  184. package/dist/turbofan-inspect--NdCuYXi.mjs +23 -0
  185. package/dist/types-CWSvzmIh.mjs +1 -0
  186. package/dist/v8-inspector-CTJo08-K.mjs +297 -0
  187. package/dist/wasm-DX4Qm2Vs.mjs +235 -0
  188. package/dist/weakrefs-inspect-CnhaF-rN.mjs +57 -0
  189. package/dist/webgpu-D4-DxbxZ.mjs +6 -0
  190. package/dist/workflow-DHktRNF2.mjs +108 -0
  191. package/package.json +33 -27
  192. package/dist/AntiCheatDetector-B6d4Qe9D.mjs +0 -1
  193. package/dist/CodeInjector-Cll_7bLJ.mjs +0 -1
  194. package/dist/ConsoleMonitor-CxDJV15E.mjs +0 -306
  195. package/dist/DOMInspector-C19J4zeq.mjs +0 -95
  196. package/dist/DarwinAPI-ZfQdpLNI.mjs +0 -1
  197. package/dist/DetailedDataManager-DmQ1LT-W.mjs +0 -1
  198. package/dist/ExtensionManager-BD724zkO.mjs +0 -1
  199. package/dist/ExtensionManager.tools-oVMJgPcN.mjs +0 -1
  200. package/dist/FingerprintManager-DT0EAUEo.mjs +0 -1
  201. package/dist/HardwareBreakpoint-BUfPdp0f.mjs +0 -1
  202. package/dist/HeapAnalyzer-B_aqY8oj.mjs +0 -1
  203. package/dist/InstrumentationSession-D_G1ZPyd.mjs +0 -1
  204. package/dist/MCPServer.search.handlers.domain-BbS-6LnX.mjs +0 -1
  205. package/dist/MemoryController-X1XNSn1n.mjs +0 -2
  206. package/dist/MemoryScanner-g1_L1ub5.mjs +0 -1
  207. package/dist/NativeMemoryManager.impl-DniBe2wf.mjs +0 -1
  208. package/dist/NetworkMonitor-B_-au6aV.mjs +0 -185
  209. package/dist/PEAnalyzer-yWQaGrcx.mjs +0 -1
  210. package/dist/PageController-Dfsm1_o7.mjs +0 -1
  211. package/dist/PointerChainEngine-BhCUkmxY.mjs +0 -1
  212. package/dist/PrerequisiteError-BjCQA-gK.mjs +0 -1
  213. package/dist/ProcessRegistry-C-bN48oR.mjs +0 -1
  214. package/dist/ReverseEvidenceGraph-BhSYYdiI.mjs +0 -2
  215. package/dist/ScriptManager-LWGPTdvD.mjs +0 -7
  216. package/dist/ServerRuntimeState-D2bWHqEE.mjs +0 -1
  217. package/dist/Speedhack-yseDPSZ9.mjs +0 -1
  218. package/dist/StructureAnalyzer-C5lpuZkg.mjs +0 -2
  219. package/dist/ToolCatalog-CYdD9F5f.mjs +0 -1
  220. package/dist/ToolRegistry-C5oB8KP8.mjs +0 -1
  221. package/dist/ToolRouter.policy-CfhJczkt.mjs +0 -4
  222. package/dist/TraceRecorder-BiJWBXHX.mjs +0 -272
  223. package/dist/VersionDetector-CHT36Az0.mjs +0 -9
  224. package/dist/Win32API-eUCF57l_.mjs +0 -1
  225. package/dist/WorkflowEngine-D876meOO.mjs +0 -1
  226. package/dist/analysis-D4swdMvq.mjs +0 -6
  227. package/dist/apk-packer-BqXcInnX.mjs +0 -1
  228. package/dist/artifactRetention-BCPQASm7.mjs +0 -1
  229. package/dist/artifacts-CkodUM4j.mjs +0 -1
  230. package/dist/binary-instrument-DU7V6TUM.mjs +0 -7
  231. package/dist/binary-secrets-PdMVoyt0.mjs +0 -1
  232. package/dist/boringssl-inspector-BBaJwwkU.mjs +0 -2
  233. package/dist/browser-Qqco2rOT.mjs +0 -11
  234. package/dist/collector-Bpl6qy2L.mjs +0 -1
  235. package/dist/constants-BYj8Xek8.mjs +0 -1
  236. package/dist/coordination-CWXW1o8K.mjs +0 -1
  237. package/dist/dart-inspector-7AkPeZ_Q.mjs +0 -0
  238. package/dist/debugger-DyALjYMk.mjs +0 -1
  239. package/dist/definitions-BWxBke3r.mjs +0 -1
  240. package/dist/definitions-BYwATKc-.mjs +0 -1
  241. package/dist/definitions-B_83XfNQ.mjs +0 -1
  242. package/dist/definitions-Bf3H1EwV.mjs +0 -1
  243. package/dist/definitions-BftdXgXI.mjs +0 -1
  244. package/dist/definitions-Bio5XJYy.mjs +0 -1
  245. package/dist/definitions-C3qNgSn1.mjs +0 -1
  246. package/dist/definitions-CB6vmOer.mjs +0 -1
  247. package/dist/definitions-CMZRSy3k.mjs +0 -1
  248. package/dist/definitions-CQd7yCQH.mjs +0 -1
  249. package/dist/definitions-CT8ln6GQ.mjs +0 -1
  250. package/dist/definitions-D4g-MS10.mjs +0 -1
  251. package/dist/definitions-D5wl_8HN.mjs +0 -1
  252. package/dist/definitions-DAQm1Xar.mjs +0 -1
  253. package/dist/definitions-DP1vgxEY.mjs +0 -1
  254. package/dist/definitions-Ibci7e_L.mjs +0 -1
  255. package/dist/definitions-OeLvmlQy.mjs +0 -1
  256. package/dist/definitions-RZYGD_Ey.mjs +0 -1
  257. package/dist/definitions-Tls8c0A0.mjs +0 -1
  258. package/dist/definitions-bybDvnG0.mjs +0 -26
  259. package/dist/definitions-l7TjdE6V.mjs +0 -1
  260. package/dist/encoding-ycOaz8Vr.mjs +0 -2
  261. package/dist/ensure-browser-core-DxWC-NTp.mjs +0 -1
  262. package/dist/factory-CKr4fAE1.mjs +0 -1
  263. package/dist/flat-target-session-DvcQX7J5.mjs +0 -1
  264. package/dist/graphql-B2TiPEow.mjs +0 -62
  265. package/dist/handlers-8zN_vBIz.mjs +0 -1
  266. package/dist/handlers-B62K4FTc.mjs +0 -1
  267. package/dist/handlers-BpDlVVVU.mjs +0 -1
  268. package/dist/handlers-CMJK7m1c.mjs +0 -31
  269. package/dist/handlers-D2ZOul9p.mjs +0 -54
  270. package/dist/handlers-D5E40ssn.mjs +0 -5
  271. package/dist/handlers-DGbdQAgD.mjs +0 -4
  272. package/dist/handlers-DHO3rjsW.mjs +0 -1
  273. package/dist/handlers-FJ80VzUI.mjs +0 -2
  274. package/dist/handlers-VHWrxbM_.mjs +0 -1
  275. package/dist/handlers-l8QIKqBj.mjs +0 -2
  276. package/dist/handlers.impl-D9Hh8Bgl.mjs +0 -1
  277. package/dist/jadx-search-B_Yse0Zh.mjs +0 -5
  278. package/dist/logger-sBC6IdRT.mjs +0 -1
  279. package/dist/maintenance-BUpIukhg.mjs +0 -1
  280. package/dist/manifest-0Jpt_AQa.mjs +0 -1
  281. package/dist/manifest-B3fZbSWR.mjs +0 -1
  282. package/dist/manifest-B7NB2rh2.mjs +0 -1
  283. package/dist/manifest-BDi4nbH1.mjs +0 -1
  284. package/dist/manifest-BLDfkE7n.mjs +0 -1
  285. package/dist/manifest-BcXbB4gf.mjs +0 -1
  286. package/dist/manifest-Bdnc_vrc.mjs +0 -1
  287. package/dist/manifest-BuYKgCnp.mjs +0 -1
  288. package/dist/manifest-CBfNnGPV.mjs +0 -1
  289. package/dist/manifest-CPS1Xv69.mjs +0 -1
  290. package/dist/manifest-CQH9FhwI.mjs +0 -1
  291. package/dist/manifest-CRryuZF4.mjs +0 -1
  292. package/dist/manifest-CctIumog.mjs +0 -1
  293. package/dist/manifest-CvTe5ZGV2.mjs +0 -1
  294. package/dist/manifest-D-5GH0DV.mjs +0 -1
  295. package/dist/manifest-D3Ssf3IC.mjs +0 -1
  296. package/dist/manifest-D5ck3NvC.mjs +0 -1
  297. package/dist/manifest-D9jUUJAu.mjs +0 -1
  298. package/dist/manifest-DCx6w2XV.mjs +0 -1
  299. package/dist/manifest-DG19q-Ld.mjs +0 -1
  300. package/dist/manifest-DLMlD0Zc.mjs +0 -1
  301. package/dist/manifest-DYpn8w_h.mjs +0 -1
  302. package/dist/manifest-DYzWI8Xs.mjs +0 -1
  303. package/dist/manifest-D_obs5F4.mjs +0 -1
  304. package/dist/manifest-DujQqEQR.mjs +0 -2
  305. package/dist/manifest-DwL2ik8P.mjs +0 -1
  306. package/dist/manifest-ItF5P8A12.mjs +0 -1
  307. package/dist/manifest-KZphqIyX.mjs +0 -1
  308. package/dist/manifest-LG42zPLY2.mjs +0 -1
  309. package/dist/manifest-LLdI5m4T.mjs +0 -1
  310. package/dist/manifest-QYbQXJn0.mjs +0 -1
  311. package/dist/manifest-RcpX_MyZ.mjs +0 -123
  312. package/dist/manifest-YgVd8Sgz.mjs +0 -1
  313. package/dist/manifest-Zy7Odg5J.mjs +0 -1
  314. package/dist/manifest-ff1H7Pdp.mjs +0 -1
  315. package/dist/manifest-iuhF6pTL2.mjs +0 -1
  316. package/dist/manifest-nXHmtMSp2.mjs +0 -1
  317. package/dist/manifest-xWfu6iLo.mjs +0 -1
  318. package/dist/manifest-yC16OhL2.mjs +0 -1
  319. package/dist/manifest-ztWJoXy4.mjs +0 -1
  320. package/dist/matchesWildcardPattern-BAG6LvX5.mjs +0 -1
  321. package/dist/modules-BPBcSaM-.mjs +0 -333
  322. package/dist/mojo-ipc-BhwsdVUW.mjs +0 -9
  323. package/dist/native-j8l473zn.mjs +0 -961
  324. package/dist/network-T0VRwNPd.mjs +0 -7
  325. package/dist/outputPaths-B4Ic4RZh.mjs +0 -2
  326. package/dist/parse-args-Bw413PlW.mjs +0 -1
  327. package/dist/platform-CzaQtISh.mjs +0 -93
  328. package/dist/playwright-cdp-fallback-DqFdx9-s.mjs +0 -1
  329. package/dist/process-CWhsCWrf.mjs +0 -2
  330. package/dist/proxy-DZFlDsG3.mjs +0 -2
  331. package/dist/renderer-pid-9tJnZ_9N.mjs +0 -1
  332. package/dist/response-C7rKQst4.mjs +0 -1
  333. package/dist/search-defaults-lYBVn_3L.mjs +0 -1
  334. package/dist/shared-state-board-BSjXLUV1.mjs +0 -1
  335. package/dist/sourcemap-Dh3Ai_ur.mjs +0 -1
  336. package/dist/streaming-BcJ0B6ao.mjs +0 -1
  337. package/dist/transform-DOxzeWPB.mjs +0 -103
  338. package/dist/types-D9EiE5o9.mjs +0 -1
  339. package/dist/wasm-CZ_HTfKR.mjs +0 -174
  340. package/dist/webcrack-C1iYG_EX.mjs +0 -46
  341. package/dist/workflow-BdwQmARn.mjs +0 -101
  342. /package/dist/{CacheAdapters-CsNtQIR8.mjs → CacheAdapters-BlDrQg8f.mjs} +0 -0
  343. /package/dist/{EventBus-DL8iLA09.mjs → EventBus-Cm-t-B65.mjs} +0 -0
  344. /package/dist/{EvidenceGraphBridge-BtbwXsLC.mjs → EvidenceGraphBridge-DBDc0wUA.mjs} +0 -0
  345. /package/dist/{HookGeneratorBuilders.core.generators.storage-DzD6dIJd.mjs → HookGeneratorBuilders.core.generators.storage-CWaWpOHa.mjs} +0 -0
  346. /package/dist/{RingBuffer-Dm54ELKT.mjs → RingBuffer-B6RTHmij.mjs} +0 -0
  347. /package/dist/{StealthVerifier-BmcxfwSF.mjs → StealthVerifier-DMBrtkhN.mjs} +0 -0
  348. /package/dist/{ToolError-DWU_z7gp.mjs → ToolError-g3rjWzhx.mjs} +0 -0
  349. /package/dist/{authorization-schema-BOFwSXUN.mjs → authorization-schema-Jtikc5Yt.mjs} +0 -0
  350. /package/dist/{bind-helpers-m2U8glkF.mjs → bind-helpers-D0mGAOof.mjs} +0 -0
  351. /package/dist/{concurrency-DCr8WQ2M.mjs → concurrency-Dehnw4JC.mjs} +0 -0
  352. /package/dist/{evidence-graph-bridge-CV_UdYqj.mjs → evidence-graph-bridge-eT9icP6a.mjs} +0 -0
  353. /package/dist/{formatAddress-vLA_hOJt.mjs → formatAddress-DAcw4Ckg.mjs} +0 -0
  354. /package/dist/{chunk-C_pMuVsO.mjs → rolldown-runtime-88NL7fhV.mjs} +0 -0
  355. /package/dist/{ssrf-policy-CsIJGkpd.mjs → ssrf-policy-B72vdy23.mjs} +0 -0
  356. /package/dist/{tool-builder-qif8M9-K.mjs → tool-builder-CpLh-UQd.mjs} +0 -0
  357. /package/dist/{types-Fz69RzbZ.mjs → types-BzPBzmVB.mjs} +0 -0
@@ -0,0 +1,140 @@
1
+ import{n as e}from"./rolldown-runtime-88NL7fhV.mjs";import{it as t,o as n}from"./constants-nvsLpSri.mjs";import{c as r,i,n as a,r as o,t as s}from"./parse-args-B6dwWc9k.mjs";import{r as c}from"./ResponseBuilder-BLicSCjn.mjs";import{n as l,r as u,t as d}from"./capabilities-DwzyxL2w.mjs";import"./manifest-YZqaCe25.mjs";import{spawn as f}from"node:child_process";function p(e){if(typeof e!=`string`)return;let t=e.replace(/\s+/g,``).toLowerCase();if(t.length<4||!/^[0-9a-f]+$/.test(t))return;let n=Number.parseInt(t.slice(2,4),16);if(!Number.isFinite(n))return;let r=(n&2)!=0,i=(n&4)!=0;return r?`response`:i?`sync`:`request`}function m(e,t){return t.count-e.count}function h(){return[{name:`blink.mojom.WidgetHost`,version:1,pendingMessages:0},{name:`content.mojom.FrameHost`,version:2,pendingMessages:0},{name:`network.mojom.URLLoaderFactory`,version:3,pendingMessages:0}]}function g(){try{return e.resolve(`frida`),!0}catch{return!1}}async function _(){return new Promise(e=>{let t=f(`frida`,[`--version`],{timeout:n,windowsHide:!0}),r=``;t.stdout?.on(`data`,e=>{r+=e.toString()}),t.on(`close`,t=>{if(t===0&&r.trim().length>0){e(`frida`);return}e(null)}),t.on(`error`,()=>{e(null)})})}async function v(){let e=process.env.JSHOOK_ENABLE_MOJO_IPC,t=g(),n=await _(),r=t||n!==null;return e===`0`||e===`false`?{available:!1,fridaAvailable:r,fridaCliAvailable:n!==null,reason:`Mojo IPC disabled by JSHOOK_ENABLE_MOJO_IPC=0.`}:{available:r,fridaAvailable:r,fridaCliAvailable:n!==null,reason:r?void 0:`Mojo IPC backend is not connected. Install Frida for real IPC monitoring: https://frida.re/docs/installation/`}}function y(e,t){if(t.interfaceName&&e.interfaceName!==t.interfaceName||t.messageType!==void 0&&e.messageType!==String(t.messageType)||typeof t.pid==`number`&&e.sourcePid!==t.pid&&e.targetPid!==t.pid||typeof t.sinceTimestamp==`number`&&e.timestamp<t.sinceTimestamp)return!1;if(t.hexSearch){let n=t.hexSearch.replace(/\s+/g,``).toLowerCase();if(n.length>0&&!e.payload.toLowerCase().includes(n))return!1}return!(t.direction&&e.direction!==t.direction)}function b(e){let t;try{t=JSON.parse(e)}catch{return null}if(t&&typeof t==`object`){let e=t;if(e.type===`send`&&e.payload&&typeof e.payload==`object`)return e.payload;if(typeof e.type==`string`&&e.type.startsWith(`mojo-`))return e}return null}function x(){return`'use strict';
2
+ var CANDIDATE_SYMBOLS = ['MojoWriteMessage', 'MojoWriteMessageNew'];
3
+ function findMojoWrite() {
4
+ var modules = Process.enumerateModules();
5
+ for (var i = 0; i < modules.length; i++) {
6
+ for (var s = 0; s < CANDIDATE_SYMBOLS.length; s++) {
7
+ var addr = Module.findExportByName(modules[i].name, CANDIDATE_SYMBOLS[s]);
8
+ if (addr) return { module: modules[i].name, symbol: CANDIDATE_SYMBOLS[s], address: addr };
9
+ }
10
+ }
11
+ return null;
12
+ }
13
+ function toHex(arrayBuffer) {
14
+ var view = new Uint8Array(arrayBuffer);
15
+ var out = '';
16
+ for (var i = 0; i < view.length; i++) {
17
+ out += ('00' + view[i].toString(16)).slice(-2);
18
+ }
19
+ return out;
20
+ }
21
+ var target = findMojoWrite();
22
+ if (!target) {
23
+ send({ type: 'mojo-hook-warning', reason: 'No Mojo write-path export found in any module', tried: CANDIDATE_SYMBOLS });
24
+ } else {
25
+ send({ type: 'mojo-hook-attached', module: target.module, symbol: target.symbol });
26
+ Interceptor.attach(target.address, {
27
+ onEnter: function (args) {
28
+ try {
29
+ var dumpPtr = args[1];
30
+ var size = 256;
31
+ var hex = toHex(dumpPtr.readByteArray(size));
32
+ send({ type: 'mojo-message', hex: hex, size: size, iface: null, method: null });
33
+ } catch (e) {
34
+ send({ type: 'mojo-hook-error', error: String(e) });
35
+ }
36
+ }
37
+ });
38
+ }
39
+ `}var S=class{active=!1;simulationMode=!1;fridaProbeSucceeded=!1;deviceId;fridaChild;messages=[];interfaces=new Map;observedInterfaceNames=new Set;availability={available:!1,fridaAvailable:!1,fridaCliAvailable:!1,reason:`Not yet initialized. Call start() to probe availability.`};constructor(){this.resetInterfaces()}isAvailable(){return this.availability.available}getUnavailableReason(){return this.availability.reason}getAvailabilitySnapshot(){return{...this.availability}}async probeAvailability(){return this.availability=await v(),this.getAvailabilitySnapshot()}isSimulationMode(){return this.simulationMode}didFridaProbeSucceed(){return this.fridaProbeSucceeded}isLiveCapture(){return this.fridaProbeSucceeded&&!this.simulationMode}setSimulationMode(e){this.simulationMode=e}isActive(){return this.active}getDeviceId(){return this.deviceId}async start(e){if(this.deviceId=e,this.availability=await v(),this.resetInterfaces(),this.simulationMode=!1,this.fridaProbeSucceeded=!1,!this.availability.available){this.active=!1;return}this.active=!0,this.availability.fridaCliAvailable?await this.captureWithFrida(e):this.simulationMode=!0}async stop(){this.active=!1,this.deviceId=void 0,this.fridaProbeSucceeded=!1,this.fridaChild?.kill(),this.fridaChild=void 0,this.resetInterfaces()}async captureMessages(e={}){if(!this.active)return[];let t=[],n=[];for(let r of this.messages)y(r,e)?t.push({...r}):n.push(r);return this.messages.length=0,this.messages.push(...n),this.recomputePendingCounts(),t}async listInterfaces(){return[...this.interfaces.values()].map(e=>({name:e.name,version:e.version,pendingMessages:e.pendingMessages})).toSorted((e,t)=>e.name.localeCompare(t.name))}hasObservedInterfaces(){return this.observedInterfaceNames.size>0}getObservedInterfaceCount(){return this.observedInterfaceNames.size}getInterfaceCatalogSource(){return this.observedInterfaceNames.size===0?`seeded-defaults`:this.observedInterfaceNames.size>=this.interfaces.size?`observed`:`mixed`}async getMessages(e){if(!this.active)return{messages:[],totalAvailable:0,filtered:!1,simulation:this.simulationMode};let t=this.buildFilter(e),n=await this.captureMessages(t),r=e?.limit??100;return{messages:n.slice(0,r),totalAvailable:n.length,filtered:this.filterIsApplied(e),simulation:this.simulationMode}}async summarizeMessages(e){let t={total:0,totalBytes:0,byDirection:{request:0,response:0,sync:0,unknown:0},byInterface:[],byMethod:[],topInterfaces:[],topMethods:[],timeWindow:{earliest:null,latest:null,durationMs:0},filtered:this.filterIsApplied(e),simulation:this.simulationMode};if(!this.active)return t;let n=this.buildFilter(e),r=this.messages.filter(e=>y(e,n));return this.aggregateMessages(r,e?.topN,t)}buildFilter(e){let t={};return e?.interfaceName&&(t.interfaceName=e.interfaceName),e?.messageType!==void 0&&(t.messageType=e.messageType),e?.sinceTimestamp!==void 0&&(t.sinceTimestamp=e.sinceTimestamp),e?.hexSearch&&(t.hexSearch=e.hexSearch),e?.direction&&(t.direction=e.direction),t}filterIsApplied(e){return!!(e?.interfaceName||e?.messageType!==void 0||e?.sinceTimestamp!==void 0||e?.hexSearch||e?.direction)}aggregateMessages(e,t,n){if(e.length===0)return n;let r=typeof t==`number`&&t>0?Math.trunc(t):5,i=new Map,a=new Map,o={request:0,response:0,sync:0,unknown:0},s=0,c=null,l=null;for(let t of e){let e=typeof t.size==`number`&&t.size>=0?t.size:0;s+=e,(c===null||t.timestamp<c)&&(c=t.timestamp),(l===null||t.timestamp>l)&&(l=t.timestamp);let n=t.direction??`unknown`;o[n]+=1;let r=i.get(t.interfaceName)??{count:0,bytes:0,directionBreakdown:{request:0,response:0,sync:0,unknown:0},methods:new Set};r.count+=1,r.bytes+=e,r.directionBreakdown[n]+=1,r.methods.add(t.messageType),i.set(t.interfaceName,r);let u=`${t.interfaceName}\u{0}:${t.messageType}`,d=a.get(u)??{count:0,bytes:0};d.count+=1,d.bytes+=e,a.set(u,d)}let u=[...i.entries()].map(([e,t])=>({interface:e,count:t.count,bytes:t.bytes,distinctMethods:t.methods.size,directionBreakdown:t.directionBreakdown})).toSorted(m),d=[...a.entries()].map(([e,t])=>{let n=e.indexOf(`\0:`);return{interface:n>=0?e.slice(0,n):e,method:n>=0?e.slice(n+2):``,count:t.count,bytes:t.bytes}}).toSorted(m),f=c!==null&&l!==null?Math.max(0,l-c):0;return{total:e.length,totalBytes:s,byDirection:o,byInterface:u,byMethod:d,topInterfaces:u.slice(0,r),topMethods:d.slice(0,r),timeWindow:{earliest:c,latest:l,durationMs:f},filtered:n.filtered,simulation:this.simulationMode}}recordMessage(e,t=1){if(!this.active)return;let n=e.direction===void 0?{...e,direction:p(e.payload)}:{...e};this.messages.push(n),this.observedInterfaceNames.add(n.interfaceName);let r=this.interfaces.get(n.interfaceName);if(r){r.pendingMessages+=1;return}this.interfaces.set(n.interfaceName,{name:n.interfaceName,version:t,pendingMessages:1})}async captureWithFrida(e){let n=e??`chromium`,r=x();this.simulationMode=!0,this.fridaProbeSucceeded=!1,await new Promise(e=>{let i=f(`frida`,[`-q`,`-n`,n,`-l`,`-`,`--runtime=v8`],{windowsHide:!0});this.fridaChild=i;let a=!1,o=()=>{a||(a=!0,e())},s=setTimeout(o,t);i.stdout?.setEncoding(`utf8`),i.stdout?.on(`data`,e=>{let t=typeof e==`string`?e:e.toString(`utf8`);for(let e of t.split(`
40
+ `)){let t=e.trim();if(t.length===0)continue;let n=b(t);n&&this.handleFridaMessage(n)}}),i.on(`error`,()=>{clearTimeout(s),o()}),i.on(`close`,()=>{clearTimeout(s),o()}),i.stdin?.end(r)})}handleFridaMessage(e){if(e.type===`mojo-message`){this.simulationMode=!1,this.fridaProbeSucceeded=!0;let t=p(e.hex);this.recordMessage({timestamp:Date.now(),sourcePid:0,targetPid:0,interfaceName:e.iface??`unknown`,messageType:String(e.method??``),payload:e.hex??``,size:e.size??0,direction:t})}else e.type===`mojo-hook-attached`&&(this.fridaProbeSucceeded=!0)}recomputePendingCounts(){this.resetPendingCounts();for(let e of this.messages){this.observedInterfaceNames.add(e.interfaceName);let t=this.interfaces.get(e.interfaceName);t?t.pendingMessages+=1:this.interfaces.set(e.interfaceName,{name:e.interfaceName,version:1,pendingMessages:1})}}resetPendingCounts(){for(let e of this.interfaces.values())e.pendingMessages=0}resetInterfaces(){this.messages.length=0,this.interfaces.clear(),this.observedInterfaceNames.clear();for(let e of h())this.interfaces.set(e.name,{...e})}};function C(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}const w={bool:1,boolean:1,int16:4,uint16:5,int32:6,int64:7,uint32:8,uint64:9,float:10,double:11,string:12,nullable_string:13,nullableString:13,array:14,struct:15,handle:16,interface:17,pending_remote:18,pendingRemote:18,pending_receiver:19,pendingReceiver:19,pending_associated_remote:20,pendingAssociatedRemote:20,pending_associated_receiver:21,pendingAssociatedReceiver:21},T=new Set([16,17,18,19,20,21]),E={"network.mojom.networkservice:createnetworkcontext":[`receiver`,`params`],"network.mojom.networkservice:configurestubhostresolver":[`config`],"network.mojom.networkservice:setrawheadersaccess":[`processId`,`origins`],"network.mojom.urlloaderfactory:createloaderandstart":[`routingId`,`requestId`,`options`,`request`,`client`,`trafficAnnotation`],"network.mojom.urlloaderfactory:clone":[`receiver`],"network.mojom.urlloader:followredirect":[`removedHeaders`,`modifiedHeaders`,`newUrl`],"network.mojom.urlloader:setpriority":[`priority`,`intraPriorityValue`],"blink.mojom.widgethost:setcursor":[`cursor`],"blink.mojom.widgethost:updatevisualproperties":[`visualProperties`],"blink.mojom.widgethost:dispatchinputevent":[`event`,`callback`]};function D(e){return C(e)&&typeof e.handle==`number`}function O(e){return C(e)&&typeof e.type==`string`}function k(e){let t=e.replace(/\s+/g,``);return t.length%2==0?t.toLowerCase():`0${t.toLowerCase()}`}function A(e){for(let[t,n]of Object.entries(w))if(n===e)return t;return`0x${e.toString(16).padStart(2,`0`)}`}var j=class{decodePayload(e,t){let n=this.cleanHex(e),r=Buffer.from(n,`hex`),i=this.decodeHeader(r),a=this.normalizeDecodeContext(t),o=this.resolveFieldNames(a),s={},c=[],l=i.headerSize,u=0;for(let e=0;e<i.numFields;e+=1){if(l>=r.length){c.push(`payload ended before all fields were decoded`);break}let t=o[e]??`field${e}`,n=this.decodeField(r,l,t);if(s[t]=n.value,u+=n.handles,l=n.cursor,n.summary&&c.push(n.summary),!n.complete)break}let d=c.length>0?c.join(`; `):this.buildSummary(a.label,Object.keys(s).length,i.numFields,u);return{header:i,fields:s,handles:u,raw:n,_raw_summary:d}}encodeMessage(e,t,n,r){let i=[],a=0;for(let e of n){let t=this.encodeField(e);i.push(t.buffer),a+=t.handles}let o=this.resolveMessageType(e,t),s=Math.min(n.length,255),c=this.buildHeader(o,s,a,r);return Buffer.concat([c,...i]).toString(`hex`)}buildHeader(e,t,n,r){if(!(r&&(r.expectsResponse||r.isResponse||r.isSync||r.interfaceId!==void 0||r.requestId!==void 0))){let r=Buffer.alloc(6);return r.writeUInt8(1,0),r.writeUInt8(0,1),r.writeUInt8(e,2),r.writeUInt8(t,3),r.writeUInt16LE(n,4),r}let i=0;r.expectsResponse&&(i|=1),r.isResponse&&(i|=2),r.isSync&&(i|=4);let a=typeof r.interfaceId==`number`&&Number.isFinite(r.interfaceId)?Math.trunc(r.interfaceId)>>>0:0,o=0n;r.requestId!==void 0&&(o=BigInt(String(r.requestId)));let s=Buffer.alloc(18);return s.writeUInt8(2,0),s.writeUInt8(i,1),s.writeUInt8(e,2),s.writeUInt8(t,3),s.writeUInt16LE(n,4),s.writeUInt32LE(a,6),s.writeBigUInt64LE(o,10),s}cleanHex(e){return k(e)}decodeHeader(e){let t=this.readUInt8(e,0),n=this.readUInt8(e,1),r={version:t,flags:n,...this.decodeFlags(n),messageType:this.readUInt8(e,2),numFields:this.readUInt8(e,3),handles:this.readUInt16LE(e,4),headerSize:t>=2&&e.length>=18?18:6};return r.headerSize>=18&&(r.interfaceId=this.readUInt32LE(e,6),r.requestId=this.readBigUInt64LE(e,10)),r}decodeFlags(e){let t=(e&1)!=0,n=(e&2)!=0,r=(e&4)!=0,i=[];return t&&i.push(`expects_response`),n&&i.push(`is_response`),r&&i.push(`is_sync`),{flagNames:i,expectsResponse:t,isResponse:n,isSync:r}}decodeField(e,t,n){let r=this.readUInt8(e,t);return this.decodeFieldValue(e,t+1,r,n)}decodeFieldValue(e,t,n,r){if(n===1)return this.hasBytes(e,t,1)?{value:this.readUInt8(e,t)!==0,cursor:t+1,handles:0,complete:!0}:this.truncated(r,`bool`,e);if(n===4)return this.hasBytes(e,t,2)?{value:e.readInt16LE(t),cursor:t+2,handles:0,complete:!0}:this.truncated(r,`int16`,e);if(n===5)return this.hasBytes(e,t,2)?{value:e.readUInt16LE(t),cursor:t+2,handles:0,complete:!0}:this.truncated(r,`uint16`,e);if(n===6)return this.hasBytes(e,t,4)?{value:e.readInt32LE(t),cursor:t+4,handles:0,complete:!0}:this.truncated(r,`int32`,e);if(n===8)return this.hasBytes(e,t,4)?{value:e.readUInt32LE(t),cursor:t+4,handles:0,complete:!0}:this.truncated(r,`uint32`,e);if(n===7)return this.hasBytes(e,t,8)?{value:e.readBigInt64LE(t),cursor:t+8,handles:0,complete:!0}:this.truncated(r,`int64`,e);if(n===9)return this.hasBytes(e,t,8)?{value:e.readBigUInt64LE(t),cursor:t+8,handles:0,complete:!0}:this.truncated(r,`uint64`,e);if(n===10)return this.hasBytes(e,t,4)?{value:e.readFloatLE(t),cursor:t+4,handles:0,complete:!0}:this.truncated(r,`float`,e);if(n===11)return this.hasBytes(e,t,8)?{value:e.readDoubleLE(t),cursor:t+8,handles:0,complete:!0}:this.truncated(r,`double`,e);if(n===12||n===13)return this.decodeString(e,t,r,n===13);if(n===14)return this.decodeArray(e,t,r);if(n===15)return this.decodeStruct(e,t,r);if(T.has(n)){if(!this.hasBytes(e,t,4))return this.truncated(r,A(n),e);let i=e.readUInt32LE(t);return{value:n===16?{handle:i}:{kind:A(n),handle:i},cursor:t+4,handles:1,complete:!0}}let i=+(t<e.length);return{value:{unknownType:n,skippedBytes:i},cursor:t+i,handles:0,complete:!0,summary:`unknown field type 0x${n.toString(16).padStart(2,`0`)}`}}decodeString(e,t,n,r){if(!this.hasBytes(e,t,2))return this.truncated(n,`length prefix`,e);let i=this.readUInt16LE(e,t);return t+=2,r&&i===65535?{value:null,cursor:t,handles:0,complete:!0}:this.hasBytes(e,t,i)?{value:e.subarray(t,t+i).toString(`utf8`),cursor:t+i,handles:0,complete:!0}:this.truncated(n,`string data`,e)}decodeArray(e,t,n){if(!this.hasBytes(e,t,3))return this.truncated(n,`array header`,e);let r=this.readUInt8(e,t),i=this.readUInt16LE(e,t+1);t+=3;let a=[],o=0,s=[];for(let c=0;c<i;c+=1){let i=this.decodeFieldValue(e,t,r,`${n}[${c}]`);if(a.push(i.value),o+=i.handles,t=i.cursor,i.summary&&s.push(i.summary),!i.complete)return{value:a,cursor:t,handles:o,complete:!1,summary:s.join(`; `)||i.summary}}return{value:a,cursor:t,handles:o,complete:!0,summary:s.length>0?s.join(`; `):void 0}}decodeStruct(e,t,n){if(!this.hasBytes(e,t,1))return this.truncated(n,`struct header`,e);let r=this.readUInt8(e,t);t+=1;let i={},a=0,o=[];for(let s=0;s<r;s+=1){let r=this.decodeField(e,t,`${n}.${s}`);if(i[`field${s}`]=r.value,a+=r.handles,t=r.cursor,r.summary&&o.push(r.summary),!r.complete)return{value:i,cursor:t,handles:a,complete:!1,summary:o.join(`; `)||r.summary}}return{value:i,cursor:t,handles:a,complete:!0,summary:o.length>0?o.join(`; `):void 0}}encodeField(e){if(O(e)){let t=this.typeCodeFor(e.type);return{buffer:Buffer.concat([Buffer.from([t]),this.encodeValue(t,e)]),handles:T.has(t)?1:this.countHandles(e)}}if(typeof e==`boolean`)return{buffer:Buffer.from([1,+!!e]),handles:0};if(typeof e==`bigint`){let t=Buffer.alloc(9),n=e<0n?7:9;return t.writeUInt8(n,0),n===7?t.writeBigInt64LE(e,1):t.writeBigUInt64LE(e,1),{buffer:t,handles:0}}if(typeof e==`number`&&Number.isInteger(e)&&e>=0){let t=Buffer.alloc(5);return t.writeUInt8(8,0),t.writeUInt32LE(e,1),{buffer:t,handles:0}}if(typeof e==`number`&&Number.isInteger(e)){let t=Buffer.alloc(5);return t.writeUInt8(6,0),t.writeInt32LE(e,1),{buffer:t,handles:0}}if(D(e)){let t=Buffer.alloc(5);return t.writeUInt8(16,0),t.writeUInt32LE(e.handle,1),{buffer:t,handles:1}}return{buffer:Buffer.concat([Buffer.from([12]),this.encodeStringValue(e)]),handles:0}}encodeValue(e,t){let n=t.value;switch(e){case 1:return Buffer.from([+!!n]);case 4:{let e=Buffer.alloc(2);return e.writeInt16LE(Number(n??0),0),e}case 5:{let e=Buffer.alloc(2);return e.writeUInt16LE(Number(n??0),0),e}case 6:{let e=Buffer.alloc(4);return e.writeInt32LE(Number(n??0),0),e}case 8:{let e=Buffer.alloc(4);return e.writeUInt32LE(Number(n??0),0),e}case 7:{let e=Buffer.alloc(8);return e.writeBigInt64LE(BigInt(String(n??0)),0),e}case 9:{let e=Buffer.alloc(8);return e.writeBigUInt64LE(BigInt(String(n??0)),0),e}case 10:{let e=Buffer.alloc(4);return e.writeFloatLE(Number(n??0),0),e}case 11:{let e=Buffer.alloc(8);return e.writeDoubleLE(Number(n??0),0),e}case 12:return this.encodeStringValue(n);case 13:return n==null?Buffer.from([255,255]):this.encodeStringValue(n);case 14:return this.encodeArrayValue(t);case 15:return this.encodeStructValue(t.fields??[]);default:if(T.has(e)){let e=Buffer.alloc(4);return e.writeUInt32LE(Number(t.handle??n??0),0),e}return Buffer.alloc(0)}}encodeStringValue(e){let t=typeof e==`string`?e:JSON.stringify(e),n=Buffer.from(t??``,`utf8`),r=Buffer.alloc(2);return r.writeUInt16LE(n.length,0),Buffer.concat([r,n])}encodeArrayValue(e){let t=this.typeCodeFor(e.elementType??`string`),n=Array.isArray(e.values)?e.values:[],r=Buffer.alloc(3);r.writeUInt8(t,0),r.writeUInt16LE(Math.min(n.length,65535),1);let i=n.map(e=>this.encodeValue(t,{type:A(t),value:e}));return Buffer.concat([r,...i])}encodeStructValue(e){let t=Buffer.from([Math.min(e.length,255)]),n=e.map(e=>this.encodeField(e).buffer);return Buffer.concat([t,...n])}countHandles(e){let t=this.typeCodeFor(e.type);if(T.has(t))return 1;if(t===14){let t=this.typeCodeFor(e.elementType??`string`);return T.has(t)?e.values?.length??0:0}return t===15?(e.fields??[]).reduce((e,t)=>e+this.encodeField(t).handles,0):0}typeCodeFor(e){let t=w[e];if(t!==void 0)return t;let n=e.trim().toLowerCase();return n.startsWith(`0x`)?Number.parseInt(n.slice(2),16)&255:w[n]??12}resolveMessageType(e,t){if(typeof t==`number`&&Number.isFinite(t))return Math.trunc(t)&255;if(t=String(t),/^[0-9]+$/.test(t))return Number.parseInt(t,10)&255;if(/^0x[0-9a-f]+$/i.test(t))return Number.parseInt(t.slice(2),16)&255;let n=0,r=`${e}:${t}`;for(let e of r)n=n*31+e.charCodeAt(0)&255;return n}normalizeDecodeContext(e){if(typeof e==`string`)return{label:e};if(!e)return{};let t=e.interfaceName?.trim(),n=typeof e.messageType==`string`?e.messageType.trim():e.messageType;return{interfaceName:t,messageType:n,label:(e.label??[t,n===void 0?void 0:String(n)].filter(Boolean).join(`.`))||void 0}}resolveFieldNames(e){return!e.interfaceName||e.messageType===void 0?[]:E[`${e.interfaceName.trim().toLowerCase()}:${String(e.messageType).trim().toLowerCase()}`]??[]}buildSummary(e,t,n,r){return`${e?`${e}: `:``}decoded ${t}/${n} fields, ${r} handle(s)`}truncated(e,t,n){return{value:null,cursor:n.length,handles:0,complete:!1,summary:`${e} ${t} truncated`}}readUInt8(e,t){return this.hasBytes(e,t,1)?e.readUInt8(t):0}readUInt16LE(e,t){return this.hasBytes(e,t,2)?e.readUInt16LE(t):0}readUInt32LE(e,t){return this.hasBytes(e,t,4)?e.readUInt32LE(t):0}readBigUInt64LE(e,t){return this.hasBytes(e,t,8)?e.readBigUInt64LE(t):0n}hasBytes(e,t,n){return t>=0&&n>=0&&t+n<=e.length}};const M=[{symbol:`MojoWriteMessage`,module:`chrome.dll`,platform:`win32`,versionMin:96,versionMax:120,channel:`stable`,notes:`Primary Mojo C API export in chrome.dll. Renamed to MojoWriteMessageNew in ≥ M121.`},{symbol:`MojoWriteMessageNew`,module:`chrome.dll`,platform:`win32`,versionMin:121,channel:`stable`,notes:`Replacement for MojoWriteMessage in Chromium ≥ M121.`},{symbol:`MojoGetTimeTicksNow`,module:`chrome.dll`,platform:`win32`,versionMin:96,channel:`stable`,notes:`Mojo core API — present alongside the write function.`},{symbol:`MojoWriteMessage`,module:`chrome`,platform:`linux`,versionMin:96,versionMax:120,channel:`stable`,notes:`Exported from the main chrome ELF binary.`},{symbol:`MojoWriteMessageNew`,module:`chrome`,platform:`linux`,versionMin:121,channel:`stable`,notes:`Replacement in ≥ M121.`},{symbol:`MojoWriteMessage`,module:`libcontent.so`,platform:`linux`,versionMin:96,channel:`stable`,notes:`Alternative location in content shared library (component builds).`},{symbol:`_MojoWriteMessage`,module:`Chromium Framework`,platform:`darwin`,versionMin:96,versionMax:120,channel:`stable`,notes:`macOS Mach-O uses underscore-prefixed C symbols.`},{symbol:`_MojoWriteMessageNew`,module:`Chromium Framework`,platform:`darwin`,versionMin:121,channel:`stable`,notes:`Replacement in ≥ M121 with underscore prefix.`},{symbol:`MojoWriteMessage`,module:`electron.exe`,platform:`win32`,versionMin:22,versionMax:28,notes:`Electron 22-28 bundles MojoWriteMessage in electron.exe static build.`},{symbol:`MojoWriteMessageNew`,module:`electron.exe`,platform:`win32`,versionMin:29,notes:`Electron ≥ 29 uses the newer symbol.`},{symbol:`MojoWriteMessage`,module:`msedge.dll`,platform:`win32`,versionMin:96,versionMax:120,notes:`Edge browser uses msedge.dll.`},{symbol:`MojoWriteMessageNew`,module:`msedge.dll`,platform:`win32`,versionMin:121,notes:`Edge ≥ M121.`},{symbol:`MojoWriteMessage`,module:`brave.exe`,platform:`win32`,versionMin:1,notes:`Brave (Chromium-based) main process.`},{symbol:`MojoWriteMessage`,module:`opera.exe`,platform:`win32`,versionMin:80,notes:`Opera (Chromium-based).`},{symbol:`MojoWriteMessage`,module:`*`,platform:`win32`,notes:`Fallback: probe every loaded module for MojoWriteMessage.`},{symbol:`MojoWriteMessageNew`,module:`*`,platform:`win32`,notes:`Fallback: probe every loaded module for MojoWriteMessageNew.`}];function N(e){return`{ symbol: ${JSON.stringify(e.symbol)}, module: ${JSON.stringify(e.module)}, versionMin: ${e.versionMin??0}, notes: ${JSON.stringify(e.notes??``)} }`}function P(e){let t=e.platform,n=e.chromiumVersion??0,r=e.channel??`stable`,i=M.filter(e=>!(e.platform!==t||e.versionMin&&n>0&&n<e.versionMin||e.versionMax&&n>0&&n>e.versionMax||e.channel&&e.channel!==r&&r!==`stable`)),a=new Set,o=[];for(let e of i)e.module!==`*`&&!a.has(e.symbol)&&(a.add(e.symbol),o.push(e));for(let e of M)e.module===`*`&&e.platform===t&&o.push(e);let s=o.map(e=>` ${N(e)}`);return{fridaScript:`'use strict';
41
+ // Mojo IPC Symbol Verification Script — generated by jshookmcp
42
+ // Platform: ${t}, Chromium ${n||`unknown`}, Channel: ${r}
43
+ // Target: ${e.targetProcess??`any Chromium process`}
44
+ // Generated: ${new Date().toISOString()}
45
+ //
46
+ // Probes all loaded modules for known Mojo C-API exports.
47
+ // Reports found symbols, their addresses, and the module they were found in.
48
+
49
+ var PROBE_SYMBOLS = [
50
+ ${s.join(`,
51
+ `)}
52
+ ];
53
+
54
+ var results = [];
55
+
56
+ function probeSymbols() {
57
+ var modules = Process.enumerateModules();
58
+ for (var i = 0; i < PROBE_SYMBOLS.length; i++) {
59
+ var entry = PROBE_SYMBOLS[i];
60
+ var found = false;
61
+ for (var j = 0; j < modules.length; j++) {
62
+ // Skip wildcard-only entries that already have a specific match
63
+ if (entry.module === '*') continue;
64
+ try {
65
+ var addr = Module.findExportByName(modules[j].name, entry.symbol);
66
+ if (addr) {
67
+ // Check version hints
68
+ var versionNote = '';
69
+ if (entry.versionMin && entry.versionMin > 0) {
70
+ versionNote = ' (expected ≥ M' + entry.versionMin + ')';
71
+ }
72
+ results.push({
73
+ symbol: entry.symbol,
74
+ module: modules[j].name,
75
+ address: addr.toString(),
76
+ versionHint: versionNote,
77
+ notes: entry.notes,
78
+ status: 'found'
79
+ });
80
+ found = true;
81
+ break;
82
+ }
83
+ } catch (e) {
84
+ // Skip modules that throw on findExportByName
85
+ }
86
+ }
87
+ if (!found && entry.module !== '*') {
88
+ results.push({
89
+ symbol: entry.symbol,
90
+ module: entry.module,
91
+ address: null,
92
+ notes: entry.notes,
93
+ status: 'not_found'
94
+ });
95
+ }
96
+ }
97
+
98
+ // Wildcard probe: scan all modules for symbols not yet found
99
+ for (var k = 0; k < PROBE_SYMBOLS.length; k++) {
100
+ var wildEntry = PROBE_SYMBOLS[k];
101
+ if (wildEntry.module !== '*') continue;
102
+ var alreadyFound = false;
103
+ for (var r = 0; r < results.length; r++) {
104
+ if (results[r].symbol === wildEntry.symbol && results[r].status === 'found') {
105
+ alreadyFound = true;
106
+ break;
107
+ }
108
+ }
109
+ if (alreadyFound) continue;
110
+ for (var m = 0; m < modules.length; m++) {
111
+ try {
112
+ var waddr = Module.findExportByName(modules[m].name, wildEntry.symbol);
113
+ if (waddr) {
114
+ results.push({
115
+ symbol: wildEntry.symbol,
116
+ module: modules[m].name,
117
+ address: waddr.toString(),
118
+ notes: 'Found via wildcard module scan',
119
+ status: 'found_wildcard'
120
+ });
121
+ break;
122
+ }
123
+ } catch (e) {}
124
+ }
125
+ }
126
+
127
+ send(JSON.stringify({
128
+ type: 'mojo-verify-result',
129
+ platform: '${t}',
130
+ chromiumVersion: ${n||0},
131
+ channel: '${r}',
132
+ totalProbed: PROBE_SYMBOLS.length,
133
+ totalFound: results.filter(function(r) { return r.status === 'found' || r.status === 'found_wildcard'; }).length,
134
+ results: results
135
+ }));
136
+ }
137
+
138
+ // Run immediately on script load
139
+ probeSymbols();
140
+ `,runCommand:`frida -n ${e.targetProcess??`chrome`} -l verify-mojo.js --runtime=v8`,probedSymbols:o,moduleCount:new Set(o.filter(e=>e.module!==`*`).map(e=>e.module)).size,verified:!1,note:`This is a verification script — it probes exports but does NOT hook or capture live Mojo messages. Use the result to confirm which symbols are available, then pass them to mojo_monitor for live capture. B-class: this DB is manually curated. Chromium internal Mojo C API symbols may change across versions and build configurations. Always verify on the target binary before relying on these entries.`}}const F=new Set([`request`,`response`,`sync`]);function I(e){return e.includes(`JSHOOK_ENABLE_MOJO_IPC`)?`Unset JSHOOK_ENABLE_MOJO_IPC or set it to 1, then retry.`:`Install Frida and ensure the Chromium target is running.`}function L(e,t){return{...d(t,`mojo_ipc_monitoring`,e,I(e)),error:e}}function R(e){let t=e;return typeof t.didFridaProbeSucceed==`function`?t.didFridaProbeSucceed():!1}function z(e,t){let n=e[t];return typeof n==`string`||typeof n==`number`?n:void 0}function B(e){return typeof e==`bigint`?e.toString():Array.isArray(e)?e.map(e=>B(e)):typeof e==`object`&&e?Object.fromEntries(Object.entries(e).map(([e,t])=>[e,B(t)])):e}var V=class{monitor;decoder;eventBus;constructor(e,t,n){this.monitor=e,this.decoder=t,this.eventBus=n}async handleMojoMonitorDispatchTool(e){return c(async()=>await this.handleMojoMonitorDispatch(e))}async handleMojoIpcCapabilitiesTool(){return c(async()=>await this.handleMojoIpcCapabilities())}async handleMojoDecodeMessageTool(e){return c(async()=>await this.handleMojoDecodeMessage(e))}async handleMojoEncodeMessageTool(e){return c(async()=>await this.handleMojoEncodeMessage(e))}async handleMojoListInterfacesTool(){return c(async()=>await this.handleMojoListInterfaces())}async handleMojoMessagesGetTool(e){return c(async()=>await this.handleMojoMessagesGet(e))}async handleMojoMessagesSummarizeTool(e){return c(async()=>await this.handleMojoMessagesSummarize(e))}async handleMojoMonitorDispatch(e){return String(e.action??``)===`stop`?this.handleMojoMonitorStop():this.handleMojoMonitorStart(e)}async handleMojoIpcCapabilities(){let e=this.getMonitor(),t=R(e),n=typeof e.probeAvailability==`function`?await e.probeAvailability():{available:e.isAvailable(),reason:e.getUnavailableReason(),fridaAvailable:e.isAvailable(),fridaCliAvailable:!1};return l(`mojo_ipc_capabilities`,[{capability:`mojo_ipc_monitoring`,status:n.available?`available`:`unavailable`,reason:n.reason,fix:n.available?void 0:I(n.reason??``),details:{tools:[`mojo_monitor`,`mojo_list_interfaces`,`mojo_messages_get`,`mojo_messages_summarize`],fridaAvailable:n.fridaAvailable,fridaCliAvailable:n.fridaCliAvailable,fridaProbeSucceeded:t,active:e.isActive(),simulationMode:e.isSimulationMode(),interfaceCatalogSource:e.getInterfaceCatalogSource(),observedInterfaceCount:e.getObservedInterfaceCount(),liveCaptureImplemented:!0,liveCaptureVerified:!1}},{capability:`mojo_live_capture`,status:e.isLiveCapture()?`available`:`unavailable`,reason:e.isLiveCapture()?void 0:`Live capture requires Frida attached to a Chromium target whose build exports a Mojo write-path symbol (MojoWriteMessage/MojoWriteMessageNew). The hook script ships with real Interceptor.attach logic, but the symbol is Chromium-version-specific and not verified in CI; without a matching target the monitor stays simulated.`,fix:e.isLiveCapture()?void 0:`Attach Frida to a Chromium process whose Mojo write-path export resolves; the monitor flips out of simulation once the first real message is captured.`,details:{tools:[`mojo_monitor`,`mojo_list_interfaces`,`mojo_messages_get`,`mojo_messages_summarize`],fridaAvailable:n.fridaAvailable,fridaCliAvailable:n.fridaCliAvailable,fridaProbeSucceeded:t,active:e.isActive(),simulationMode:e.isSimulationMode(),interfaceCatalogSource:e.getInterfaceCatalogSource(),observedInterfaceCount:e.getObservedInterfaceCount(),fallbackMode:n.available?`simulation`:`none`,liveCaptureImplemented:!0,liveCaptureVerified:!1}},{capability:`mojo_payload_decode`,status:`available`,details:{tools:[`mojo_decode_message`,`mojo_encode_message`]}}])}async handleMojoMonitorStart(e){let t=this.getMonitor(),n=r(e,`deviceId`);return await t.start(n),t.isAvailable()?t.isSimulationMode()?u({tool:`mojo_monitor`,stubType:`simulated`,reason:`Real Frida-backed message capture is not active`,fix:`Install Frida and attach to a Chromium target with Mojo IPC traffic`,data:{available:!0,started:t.isActive(),deviceId:t.getDeviceId()??null,simulation:!0,interfaceCatalogSource:t.getInterfaceCatalogSource(),observedInterfaceCount:t.getObservedInterfaceCount()},warning:`Mojo IPC monitor is running in simulation mode. Real Frida-backed message capture is not active.`}):{success:!0,available:!0,started:t.isActive(),deviceId:t.getDeviceId()??null,simulation:!1,interfaceCatalogSource:t.getInterfaceCatalogSource(),observedInterfaceCount:t.getObservedInterfaceCount()}:L(t.getUnavailableReason()??`Mojo IPC monitoring is not available`,`mojo_monitor`)}async handleMojoMonitorStop(){let e=this.getMonitor();return e.isAvailable()?(await e.stop(),{success:!0,available:!0,started:!1,simulation:e.isSimulationMode()}):L(e.getUnavailableReason()??`Mojo IPC monitoring is not available`,`mojo_monitor`)}async handleMojoDecodeMessage(e){let t=r(e,`hexPayload`,``);if(t.length===0)return{success:!1,error:`hexPayload is required`};let n=r(e,`interfaceName`)?.trim(),i=z(e,`messageType`);return{success:!0,decoded:B(n||i!==void 0?this.getDecoder().decodePayload(t,{interfaceName:n,messageType:i}):this.getDecoder().decodePayload(t))}}async handleMojoEncodeMessage(e){let t=r(e,`interfaceName`,``).trim();if(t.length===0)return{success:!1,error:`interfaceName is required`};let n=z(e,`messageType`);if(n===void 0||typeof n==`string`&&n.trim().length===0||typeof n==`number`&&!Number.isFinite(n))return{success:!1,error:`messageType is required`};let i=s(e,`fields`);if(!i)return{success:!1,error:`fields must be an array`};let a=this.resolveEncodeHeader(e.header);return{success:!0,hexPayload:this.getDecoder().encodeMessage(t,n,i,a)}}resolveEncodeHeader(e){if(!e||typeof e!=`object`||Array.isArray(e))return;let t=e,n={},r=a(t,`expectsResponse`);r!==void 0&&(n.expectsResponse=r);let o=a(t,`isResponse`);o!==void 0&&(n.isResponse=o);let s=a(t,`isSync`);s!==void 0&&(n.isSync=s);let c=i(t,`interfaceId`);if(c!==void 0){if(!Number.isFinite(c)||c<0||c>4294967295)throw Error(`header.interfaceId must be a uint32 (0..4294967295), got ${c}`);n.interfaceId=Math.trunc(c)}let l=t.requestId;if(l!==void 0){if(typeof l!=`number`&&typeof l!=`string`)throw Error(`header.requestId must be a number or numeric string`);let e=String(l);if(!/^-?[0-9]+$/.test(e))throw Error(`header.requestId must be numeric, got "${e}"`);let t=BigInt(e);if(t<0n||t>18446744073709551615n)throw Error(`header.requestId must fit in uint64 (0..18446744073709551615), got ${e}`);n.requestId=t}return n}async handleMojoListInterfaces(){let e=this.getMonitor();if(!e.isAvailable())return{...L(e.getUnavailableReason()??`Mojo IPC monitoring is not available`,`mojo_list_interfaces`),interfaces:[]};let t=e.isSimulationMode(),n=e.getInterfaceCatalogSource(),r=await e.listInterfaces();if(t||n===`seeded-defaults`){let i=n===`seeded-defaults`?`Interface list currently comes from the seeded default catalog; no live observed Mojo interfaces have been captured yet.`:`Mojo IPC monitor is running in simulation mode. Interface counts may not reflect live traffic.`;return u({tool:`mojo_list_interfaces`,stubType:`simulated`,reason:i,fix:`Install Frida and attach to a Chromium target to capture live Mojo interfaces`,data:{available:!0,active:e.isActive(),interfaces:r,simulation:t,interfaceCatalogSource:n,observedInterfaceCount:e.getObservedInterfaceCount()},warning:i})}return{success:!0,available:!0,active:e.isActive(),interfaces:r,simulation:!1,interfaceCatalogSource:n,observedInterfaceCount:e.getObservedInterfaceCount()}}async handleMojoMessagesGet(e){let t=this.getMonitor();if(!t.isAvailable())return{...L(t.getUnavailableReason()??`Mojo IPC monitoring is not available`,`mojo_messages_get`),messages:[],totalAvailable:0,filtered:!1,simulation:!0};let n=i(e,`limit`),a=r(e,`interface`),s=z(e,`messageType`),c=i(e,`sinceTimestamp`),l=r(e,`hexSearch`),d=o(e,`direction`,F),f=await t.getMessages({limit:n===void 0?100:Math.min(n,1e4),interfaceName:a,messageType:s,sinceTimestamp:c,hexSearch:l,direction:d});return f.messages&&Array.isArray(f.messages)&&f.messages.length>0&&this.eventBus?.emit(`mojo:message_captured`,{messageCount:f.messages.length,timestamp:new Date().toISOString()}),f.simulation||t.isSimulationMode()?u({tool:`mojo_messages_get`,stubType:`simulated`,reason:`Mojo IPC is operating in simulation mode. Messages are not captured from real Frida hooks.`,fix:`Install Frida for live IPC monitoring`,data:{available:!0,active:t.isActive(),messages:f.messages,totalAvailable:f.totalAvailable,filtered:f.filtered,simulation:!0,interfaceCatalogSource:t.getInterfaceCatalogSource(),observedInterfaceCount:t.getObservedInterfaceCount()},warning:`Mojo IPC is operating in simulation mode. Messages are not captured from real Frida hooks. Install Frida for live IPC monitoring.`}):{success:!0,available:!0,active:t.isActive(),messages:f.messages,totalAvailable:f.totalAvailable,filtered:f.filtered,simulation:!1,interfaceCatalogSource:t.getInterfaceCatalogSource(),observedInterfaceCount:t.getObservedInterfaceCount()}}async handleMojoMessagesSummarize(e){let t=this.getMonitor();if(!t.isAvailable())return{...L(t.getUnavailableReason()??`Mojo IPC monitoring is not available`,`mojo_messages_summarize`),total:0,byDirection:{request:0,response:0,sync:0,unknown:0},byInterface:[],byMethod:[],topInterfaces:[],topMethods:[]};let n=r(e,`interface`),a=z(e,`messageType`),s=i(e,`sinceTimestamp`),c=r(e,`hexSearch`),l=o(e,`direction`,F),d=i(e,`topN`),f=await t.summarizeMessages({interfaceName:n,messageType:a,sinceTimestamp:s,hexSearch:c,direction:l,topN:d}),p=f.simulation||t.isSimulationMode(),m={success:!0,available:!0,active:t.isActive(),summary:B(f),interfaceCatalogSource:t.getInterfaceCatalogSource(),observedInterfaceCount:t.getObservedInterfaceCount()};return p?u({tool:`mojo_messages_summarize`,stubType:`simulated`,reason:`Mojo IPC is operating in simulation mode. Summary reflects the seeded/simulated buffer, not real Frida-captured traffic.`,fix:`Install Frida for live IPC monitoring`,data:m,warning:`Mojo IPC is operating in simulation mode. Summary reflects the seeded/simulated buffer, not real Frida-captured traffic.`}):m}getMonitor(){return this.monitor||=new S,this.monitor}getDecoder(){return this.decoder||=new j,this.decoder}async handleMojoVerifyLiveTool(e){return c(async()=>{let t=r(e,`platform`);if(!t||![`win32`,`linux`,`darwin`].includes(t))throw Error(`platform must be one of: win32, linux, darwin`);return P({platform:t,chromiumVersion:i(e,`chromiumVersion`),channel:r(e,`channel`)??`stable`,targetProcess:r(e,`targetProcess`)})})}};export{V as MojoIPCHandlers};