@jshookmcp/jshook 0.3.2 → 0.3.3

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 (241) hide show
  1. package/README.md +3 -3
  2. package/README.zh.md +3 -3
  3. package/dist/{AntiCheatDetector-B6d4Qe9D.mjs → AntiCheatDetector-CUpZBh5O.mjs} +1 -1
  4. package/dist/{BrowserSessionCoordinator-BJ-HOxo0.mjs → BrowserSessionCoordinator-QIt3tetp.mjs} +1 -1
  5. package/dist/CodeInjector-Btj9upnf.mjs +1 -0
  6. package/dist/{ConsoleMonitor-CxDJV15E.mjs → ConsoleMonitor-DIjN5Afa.mjs} +5 -5
  7. package/dist/{DarwinAPI-ZfQdpLNI.mjs → DarwinAPI-BuMPGzHm.mjs} +1 -1
  8. package/dist/DetailedDataManager-Z77fDl9Z.mjs +5 -0
  9. package/dist/ExtensionManager.tools-CIGOWViz.mjs +1 -0
  10. package/dist/{FingerprintManager-DT0EAUEo.mjs → FingerprintManager-BkDSsjjP.mjs} +1 -1
  11. package/dist/{HardwareBreakpoint-BUfPdp0f.mjs → HardwareBreakpoint-DMAMcPyB.mjs} +1 -1
  12. package/dist/{HeapAnalyzer-B_aqY8oj.mjs → HeapAnalyzer-Yj348FYt.mjs} +1 -1
  13. package/dist/{ExtensionManager.tools-oVMJgPcN.mjs → MCPServer.activation.ttl-CEGNBycZ.mjs} +1 -1
  14. package/dist/MCPServer.search.helpers-Cs1JpKbu.mjs +1 -0
  15. package/dist/MCPServer.search.validation-DnifPCCv.mjs +1 -0
  16. package/dist/{MemoryController-X1XNSn1n.mjs → MemoryController-DjtgiING.mjs} +1 -1
  17. package/dist/{MemoryScanSession-DG_F-PjE.mjs → MemoryScanSession-zfoVZJB0.mjs} +1 -1
  18. package/dist/MemoryScanner-Dxd657li.mjs +1 -0
  19. package/dist/{NativeMemoryManager.utils-BHy1P_jM.mjs → NativeMemoryManager.utils-Bu8srMEF.mjs} +1 -1
  20. package/dist/{PEAnalyzer-yWQaGrcx.mjs → PEAnalyzer-CMu9Ua9T.mjs} +1 -1
  21. package/dist/PointerChainEngine-CaSC1Mry.mjs +1 -0
  22. package/dist/{ProcessRegistry-C-bN48oR.mjs → ProcessRegistry-D5y1yuP2.mjs} +1 -1
  23. package/dist/{ReverseEvidenceGraph-BhSYYdiI.mjs → ReverseEvidenceGraph-BksOpsPs.mjs} +1 -1
  24. package/dist/ServerRuntimeState-CgqBBwfd.mjs +1 -0
  25. package/dist/{Speedhack-yseDPSZ9.mjs → Speedhack-pwXTHxOY.mjs} +1 -1
  26. package/dist/{StructureAnalyzer-C5lpuZkg.mjs → StructureAnalyzer-BseGzsSl.mjs} +2 -2
  27. package/dist/ToolCatalog-DgmQXdsm.mjs +1 -0
  28. package/dist/ToolHandlerMap-7HWoIgQO.mjs +1 -0
  29. package/dist/{ToolProbe-C7ZU2x7M.mjs → ToolProbe-DQiREmNp.mjs} +1 -1
  30. package/dist/{ToolRegistry-C5oB8KP8.mjs → ToolRegistry-eMZEBiR1.mjs} +1 -1
  31. package/dist/ToolRouter.policy-UKBlFlbh.mjs +4 -0
  32. package/dist/{TraceRecorder-BiJWBXHX.mjs → TraceRecorder-B5ktv3nP.mjs} +2 -2
  33. package/dist/VersionDetector-CmPJmaJg.mjs +1 -0
  34. package/dist/{Win32API-eUCF57l_.mjs → Win32API-DoP3MMHS.mjs} +1 -1
  35. package/dist/{Win32Debug-CYrIQBvr.mjs → Win32Debug-DwF8mQGm.mjs} +1 -1
  36. package/dist/{WorkflowEngine-D876meOO.mjs → WorkflowEngine-CldHG5b4.mjs} +1 -1
  37. package/dist/{analysis-D4swdMvq.mjs → analysis-C-ln0Brh.mjs} +3 -3
  38. package/dist/antidebug-CsnpOR9z.mjs +1 -0
  39. package/dist/{artifactRetention-BCPQASm7.mjs → artifactRetention-DkYKLOvi.mjs} +1 -1
  40. package/dist/{artifacts-CkodUM4j.mjs → artifacts-D-4pSS_N.mjs} +1 -1
  41. package/dist/{betterSqlite3-Brtq-SIQ.mjs → betterSqlite3-Bdo_ifuJ.mjs} +1 -1
  42. package/dist/binary-instrument-BeZ224mZ.mjs +9 -0
  43. package/dist/{boringssl-inspector-BBaJwwkU.mjs → boringssl-inspector-ZOCkaipa.mjs} +2 -2
  44. package/dist/browser-BUaB25bk.mjs +11 -0
  45. package/dist/{handlers-yo_xYzT8.mjs → canvas-396ieNv5.mjs} +22 -22
  46. package/dist/collector-CB2syQEg.mjs +1 -0
  47. package/dist/constants-DMv3svps.mjs +2 -0
  48. package/dist/coordination-Dbohmj6D.mjs +1 -0
  49. package/dist/dart-inspector-LhEqRITQ.mjs +0 -0
  50. package/dist/debugger-CLzkObIO.mjs +1 -0
  51. package/dist/{definitions-OeLvmlQy.mjs → definitions-0hxnrDU72.mjs} +1 -1
  52. package/dist/definitions-B3a9QC2t.mjs +1 -0
  53. package/dist/{definitions-Ibci7e_L.mjs → definitions-BOvju5t2.mjs} +1 -1
  54. package/dist/{definitions-D4g-MS10.mjs → definitions-CXj_cEVt.mjs} +1 -1
  55. package/dist/{definitions-C3qNgSn1.mjs → definitions-Co6AvTjH.mjs} +1 -1
  56. package/dist/{definitions-DxFNRQNK2.mjs → definitions-Cv5r8xwq.mjs} +1 -1
  57. package/dist/definitions-DBYSxChX.mjs +1 -0
  58. package/dist/{definitions-CQd7yCQH.mjs → definitions-D_dTDX9B.mjs} +1 -1
  59. package/dist/{definitions-l7TjdE6V.mjs → definitions-Db9t2ddh.mjs} +1 -1
  60. package/dist/{definitions-BWxBke3r.mjs → definitions-DbN2CjI2.mjs} +1 -1
  61. package/dist/{definitions-DAQm1Xar.mjs → definitions-DlmmHmZc.mjs} +1 -1
  62. package/dist/{definitions-Bf3H1EwV.mjs → definitions-DnYpoGig.mjs} +1 -1
  63. package/dist/{definitions-BYwATKc-.mjs → definitions-DtZ6Ktx2.mjs} +1 -1
  64. package/dist/{definitions-D5wl_8HN.mjs → definitions-DuIPS8gq.mjs} +1 -1
  65. package/dist/{definitions-RZYGD_Ey.mjs → definitions-DywfwPMb.mjs} +1 -1
  66. package/dist/definitions-EGmqr85H.mjs +1 -0
  67. package/dist/{definitions-bybDvnG0.mjs → definitions-Fetw_Cge.mjs} +3 -3
  68. package/dist/{definitions-CB6vmOer.mjs → definitions-LdkeuOeA.mjs} +1 -1
  69. package/dist/{definitions-B_83XfNQ.mjs → definitions-Ym8niHDb.mjs} +1 -1
  70. package/dist/{definitions-Cenu6mxo.mjs → definitions-aeRd5DAR.mjs} +1 -1
  71. package/dist/{definitions-CT8ln6GQ.mjs → definitions-cnG6tj17.mjs} +1 -1
  72. package/dist/{encoding-ycOaz8Vr.mjs → encoding-B4xZWErf.mjs} +2 -2
  73. package/dist/ensure-browser-core-JHwDo5ql.mjs +285 -0
  74. package/dist/{factory-CKr4fAE1.mjs → factory-BxNdBiZa.mjs} +1 -1
  75. package/dist/{graphql-B2TiPEow.mjs → graphql-GBWsZ9xC.mjs} +4 -4
  76. package/dist/{handlers-D5E40ssn.mjs → handlers-5nzR8B0a.mjs} +2 -2
  77. package/dist/handlers-6iNsXOVT.mjs +7 -0
  78. package/dist/{handlers-BpDlVVVU.mjs → handlers-BZ8n6Hvf.mjs} +1 -1
  79. package/dist/{handlers-0yKLRIfo.mjs → handlers-BbLxNbbT.mjs} +1 -1
  80. package/dist/{handlers-DGbdQAgD.mjs → handlers-BbS4hssc.mjs} +2 -2
  81. package/dist/{handlers-l8QIKqBj.mjs → handlers-CIKOP4aI.mjs} +2 -2
  82. package/dist/handlers-CWKBBjai.mjs +1 -0
  83. package/dist/{handlers-B62K4FTc.mjs → handlers-Cmb6SoRC.mjs} +1 -1
  84. package/dist/handlers-CrJsKnEI.mjs +1 -0
  85. package/dist/{antidebug-7L3ygj_9.mjs → handlers-DB6xVVWq.mjs} +2 -2
  86. package/dist/{handlers-CMJK7m1c.mjs → handlers-DOOCWUNR.mjs} +3 -3
  87. package/dist/{handlers-D2ZOul9p.mjs → handlers-Z_B5aVaU.mjs} +2 -2
  88. package/dist/handlers-gVscChvl.mjs +1 -0
  89. package/dist/handlers-xFvI9P_y.mjs +1 -0
  90. package/dist/{handlers.impl-D9Hh8Bgl.mjs → handlers.impl-BsFTW6SD.mjs} +1 -1
  91. package/dist/{hooks-D4XLfgtV.mjs → hooks-DPouiS7I.mjs} +9 -9
  92. package/dist/index.mjs +11 -11
  93. package/dist/macro-p8kuJVcm.mjs +2 -0
  94. package/dist/maintenance-DAqADb6Z.mjs +302 -0
  95. package/dist/manifest-4lmM6MZR.mjs +1 -0
  96. package/dist/{manifest-DujQqEQR.mjs → manifest-AxaxRSt6.mjs} +2 -2
  97. package/dist/{manifest-DYpn8w_h.mjs → manifest-BIqRE1Qz.mjs} +1 -1
  98. package/dist/manifest-Box-jWfr.mjs +1 -0
  99. package/dist/manifest-Bp33di0Q.mjs +1 -0
  100. package/dist/{manifest-CQH9FhwI.mjs → manifest-BvRX4nRP.mjs} +1 -1
  101. package/dist/{manifest-0Jpt_AQa.mjs → manifest-C6KoB1XE.mjs} +1 -1
  102. package/dist/manifest-C7TdXCWY.mjs +1 -0
  103. package/dist/manifest-CM-n64K0.mjs +1 -0
  104. package/dist/{manifest-nXHmtMSp2.mjs → manifest-CUokxCUN.mjs} +1 -1
  105. package/dist/manifest-CWJS45iO.mjs +1 -0
  106. package/dist/{manifest-LLdI5m4T.mjs → manifest-Cdxdgo-D.mjs} +1 -1
  107. package/dist/{manifest-D_obs5F4.mjs → manifest-Cf6SmamD.mjs} +1 -1
  108. package/dist/manifest-Cgxu2qdv.mjs +1 -0
  109. package/dist/{manifest-ztWJoXy4.mjs → manifest-CowGSURa2.mjs} +1 -1
  110. package/dist/{manifest-DYzWI8Xs.mjs → manifest-CsGIrh34.mjs} +1 -1
  111. package/dist/manifest-CvDpVToN.mjs +1 -0
  112. package/dist/manifest-D8TL9RLE.mjs +1 -0
  113. package/dist/{manifest-DCx6w2XV.mjs → manifest-DIhtCBe6.mjs} +1 -1
  114. package/dist/{manifest-D9jUUJAu.mjs → manifest-DJbruNOg.mjs} +1 -1
  115. package/dist/manifest-DLGtZH-0.mjs +1 -0
  116. package/dist/manifest-DXHdPt2T.mjs +1 -0
  117. package/dist/{manifest-B3fZbSWR.mjs → manifest-Dg5ScOyW.mjs} +1 -1
  118. package/dist/{manifest-xWfu6iLo.mjs → manifest-DzGoTS0R.mjs} +1 -1
  119. package/dist/manifest-G2H52LKz.mjs +131 -0
  120. package/dist/{manifest-CctIumog.mjs → manifest-P0Futrgb.mjs} +1 -1
  121. package/dist/{manifest-YgVd8Sgz.mjs → manifest-Qw7xgvjv.mjs} +1 -1
  122. package/dist/{manifest-QYbQXJn0.mjs → manifest-W3qvVrP2.mjs} +1 -1
  123. package/dist/manifest-dG6MuR1U.mjs +1 -0
  124. package/dist/manifest-nWXtgq5Y2.mjs +1 -0
  125. package/dist/{manifest-LG42zPLY2.mjs → manifest-vp1upSSq.mjs} +1 -1
  126. package/dist/{modules-BPBcSaM-.mjs → modules-DO3jXCgj.mjs} +10 -10
  127. package/dist/{mojo-ipc-BhwsdVUW.mjs → mojo-ipc-Be-ccWrc.mjs} +1 -1
  128. package/dist/native-g095qhpK.mjs +961 -0
  129. package/dist/network-Dvxm7eEI.mjs +7 -0
  130. package/dist/outputPaths-D2ddHrOJ.mjs +2 -0
  131. package/dist/{parse-args-Bw413PlW.mjs → parse-args-ngRrvF9e.mjs} +1 -1
  132. package/dist/platform-DjWbuiF8.mjs +93 -0
  133. package/dist/process-Dq5I-KZW.mjs +2 -0
  134. package/dist/proxy-DPNgM7TE.mjs +2 -0
  135. package/dist/{registry-DH4sc1dt.mjs → registry-xB8Wgmyj.mjs} +1 -1
  136. package/dist/{renderer-pid-9tJnZ_9N.mjs → renderer-pid-7jbTR8f5.mjs} +1 -1
  137. package/dist/search-defaults-CJik67or.mjs +1 -0
  138. package/dist/server/plugin-api.mjs +1 -1
  139. package/dist/sourcemap-DqEW15Ao.mjs +1 -0
  140. package/dist/streaming-Dbk4eStJ.mjs +1 -0
  141. package/dist/{transform-DOxzeWPB.mjs → transform-D-peM3aO.mjs} +2 -2
  142. package/dist/{wasm-CZ_HTfKR.mjs → wasm-CZajRaad.mjs} +6 -6
  143. package/dist/{webcrack-C1iYG_EX.mjs → webcrack-phEfVt5y.mjs} +3 -3
  144. package/dist/{workflow-BdwQmARn.mjs → workflow-wkXb3x-U.mjs} +3 -3
  145. package/package.json +2 -2
  146. package/dist/CodeInjector-Cll_7bLJ.mjs +0 -1
  147. package/dist/DOMInspector-C19J4zeq.mjs +0 -95
  148. package/dist/DetailedDataManager-DmQ1LT-W.mjs +0 -1
  149. package/dist/ExtensionManager-BD724zkO.mjs +0 -1
  150. package/dist/MCPServer.search.handlers.domain-BbS-6LnX.mjs +0 -1
  151. package/dist/MemoryScanner-g1_L1ub5.mjs +0 -1
  152. package/dist/NativeMemoryManager.impl-DniBe2wf.mjs +0 -1
  153. package/dist/NetworkMonitor-B_-au6aV.mjs +0 -185
  154. package/dist/PageController-Dfsm1_o7.mjs +0 -1
  155. package/dist/PointerChainEngine-BhCUkmxY.mjs +0 -1
  156. package/dist/PrerequisiteError-BjCQA-gK.mjs +0 -1
  157. package/dist/ScriptManager-LWGPTdvD.mjs +0 -7
  158. package/dist/ServerRuntimeState-D2bWHqEE.mjs +0 -1
  159. package/dist/ToolCatalog-CYdD9F5f.mjs +0 -1
  160. package/dist/ToolRouter.policy-CfhJczkt.mjs +0 -4
  161. package/dist/VersionDetector-CHT36Az0.mjs +0 -9
  162. package/dist/apk-packer-BqXcInnX.mjs +0 -1
  163. package/dist/binary-instrument-DU7V6TUM.mjs +0 -7
  164. package/dist/binary-secrets-PdMVoyt0.mjs +0 -1
  165. package/dist/browser-Qqco2rOT.mjs +0 -11
  166. package/dist/collector-Bpl6qy2L.mjs +0 -1
  167. package/dist/constants-BYj8Xek8.mjs +0 -1
  168. package/dist/coordination-CWXW1o8K.mjs +0 -1
  169. package/dist/dart-inspector-7AkPeZ_Q.mjs +0 -0
  170. package/dist/debugger-DyALjYMk.mjs +0 -1
  171. package/dist/definitions-BftdXgXI.mjs +0 -1
  172. package/dist/definitions-Bio5XJYy.mjs +0 -1
  173. package/dist/definitions-CMZRSy3k.mjs +0 -1
  174. package/dist/definitions-DP1vgxEY.mjs +0 -1
  175. package/dist/definitions-Tls8c0A0.mjs +0 -1
  176. package/dist/ensure-browser-core-DxWC-NTp.mjs +0 -1
  177. package/dist/flat-target-session-DvcQX7J5.mjs +0 -1
  178. package/dist/handlers-8zN_vBIz.mjs +0 -1
  179. package/dist/handlers-DHO3rjsW.mjs +0 -1
  180. package/dist/handlers-FJ80VzUI.mjs +0 -2
  181. package/dist/handlers-VHWrxbM_.mjs +0 -1
  182. package/dist/handlers-mPFiNPe8.mjs +0 -302
  183. package/dist/jadx-search-B_Yse0Zh.mjs +0 -5
  184. package/dist/maintenance-BUpIukhg.mjs +0 -1
  185. package/dist/manifest-B7NB2rh2.mjs +0 -1
  186. package/dist/manifest-BDi4nbH1.mjs +0 -1
  187. package/dist/manifest-BLDfkE7n.mjs +0 -1
  188. package/dist/manifest-BcXbB4gf.mjs +0 -1
  189. package/dist/manifest-Bdnc_vrc.mjs +0 -1
  190. package/dist/manifest-BuYKgCnp.mjs +0 -1
  191. package/dist/manifest-CBfNnGPV.mjs +0 -1
  192. package/dist/manifest-CPS1Xv69.mjs +0 -1
  193. package/dist/manifest-CRryuZF4.mjs +0 -1
  194. package/dist/manifest-CvTe5ZGV2.mjs +0 -1
  195. package/dist/manifest-D-5GH0DV.mjs +0 -1
  196. package/dist/manifest-D3Ssf3IC.mjs +0 -1
  197. package/dist/manifest-D5ck3NvC.mjs +0 -1
  198. package/dist/manifest-DG19q-Ld.mjs +0 -1
  199. package/dist/manifest-DLMlD0Zc.mjs +0 -1
  200. package/dist/manifest-DwL2ik8P.mjs +0 -1
  201. package/dist/manifest-ItF5P8A12.mjs +0 -1
  202. package/dist/manifest-KZphqIyX.mjs +0 -1
  203. package/dist/manifest-RcpX_MyZ.mjs +0 -123
  204. package/dist/manifest-Zy7Odg5J.mjs +0 -1
  205. package/dist/manifest-ff1H7Pdp.mjs +0 -1
  206. package/dist/manifest-iuhF6pTL2.mjs +0 -1
  207. package/dist/manifest-yC16OhL2.mjs +0 -1
  208. package/dist/matchesWildcardPattern-BAG6LvX5.mjs +0 -1
  209. package/dist/native-j8l473zn.mjs +0 -961
  210. package/dist/network-T0VRwNPd.mjs +0 -7
  211. package/dist/outputPaths-B4Ic4RZh.mjs +0 -2
  212. package/dist/platform-CzaQtISh.mjs +0 -93
  213. package/dist/playwright-cdp-fallback-DqFdx9-s.mjs +0 -1
  214. package/dist/process-CWhsCWrf.mjs +0 -2
  215. package/dist/proxy-DZFlDsG3.mjs +0 -2
  216. package/dist/search-defaults-lYBVn_3L.mjs +0 -1
  217. package/dist/shared-state-board-BSjXLUV1.mjs +0 -1
  218. package/dist/sourcemap-Dh3Ai_ur.mjs +0 -1
  219. package/dist/streaming-BcJ0B6ao.mjs +0 -1
  220. package/dist/types-D9EiE5o9.mjs +0 -1
  221. /package/dist/{CacheAdapters-CsNtQIR8.mjs → CacheAdapters-BlDrQg8f.mjs} +0 -0
  222. /package/dist/{EventBus-DL8iLA09.mjs → EventBus-Cm-t-B65.mjs} +0 -0
  223. /package/dist/{EvidenceGraphBridge-BtbwXsLC.mjs → EvidenceGraphBridge-DBDc0wUA.mjs} +0 -0
  224. /package/dist/{HookGeneratorBuilders.core.generators.storage-DzD6dIJd.mjs → HookGeneratorBuilders.core.generators.storage-CWaWpOHa.mjs} +0 -0
  225. /package/dist/{InstrumentationSession-D_G1ZPyd.mjs → InstrumentationSession-c5qZyp7d.mjs} +0 -0
  226. /package/dist/{ResponseBuilder-BfWP-uaT.mjs → ResponseBuilder-nPXl_khE.mjs} +0 -0
  227. /package/dist/{RingBuffer-Dm54ELKT.mjs → RingBuffer-B6RTHmij.mjs} +0 -0
  228. /package/dist/{StealthVerifier-BmcxfwSF.mjs → StealthVerifier-DMBrtkhN.mjs} +0 -0
  229. /package/dist/{ToolError-DWU_z7gp.mjs → ToolError-g3rjWzhx.mjs} +0 -0
  230. /package/dist/{authorization-schema-BOFwSXUN.mjs → authorization-schema-Jtikc5Yt.mjs} +0 -0
  231. /package/dist/{bind-helpers-m2U8glkF.mjs → bind-helpers-D0mGAOof.mjs} +0 -0
  232. /package/dist/{capabilities-CyXuKUl1.mjs → capabilities-L1ax5EHS.mjs} +0 -0
  233. /package/dist/{chunk-C_pMuVsO.mjs → chunk-88NL7fhV.mjs} +0 -0
  234. /package/dist/{concurrency-DCr8WQ2M.mjs → concurrency-Dehnw4JC.mjs} +0 -0
  235. /package/dist/{evidence-graph-bridge-CV_UdYqj.mjs → evidence-graph-bridge-eT9icP6a.mjs} +0 -0
  236. /package/dist/{formatAddress-vLA_hOJt.mjs → formatAddress-DAcw4Ckg.mjs} +0 -0
  237. /package/dist/{logger-sBC6IdRT.mjs → logger-CCikqqvj.mjs} +0 -0
  238. /package/dist/{response-C7rKQst4.mjs → response-B1RuVVfD.mjs} +0 -0
  239. /package/dist/{ssrf-policy-CsIJGkpd.mjs → ssrf-policy-B72vdy23.mjs} +0 -0
  240. /package/dist/{tool-builder-qif8M9-K.mjs → tool-builder-CpLh-UQd.mjs} +0 -0
  241. /package/dist/{types-Fz69RzbZ.mjs → types-BzPBzmVB.mjs} +0 -0
@@ -1 +1 @@
1
- import{an as e}from"./constants-BYj8Xek8.mjs";import{n as t}from"./ResponseBuilder-BfWP-uaT.mjs";import{t as n}from"./renderer-pid-9tJnZ_9N.mjs";var r=class{sessionManager;constructor(e){this.sessionManager=e}async handleScanList(e){return t(async()=>{let e=this.sessionManager.listSessions();return{sessions:e,count:e.length}})}async handleScanDelete(e){return t(async()=>({deleted:this.sessionManager.deleteSession(e.sessionId)}))}async handleScanExport(e){return t(async()=>({exportedData:this.sessionManager.exportSession(e.sessionId)}))}};async function i(e,t,r){return await n(e,t,r)}function a(t){return t===void 0||!Number.isFinite(t)||t<=0?e:Math.min(t,e)}var o=class{scanner;eventBus;processManager;ctx;constructor(e,t,n,r){this.scanner=e,this.eventBus=t,this.processManager=n,this.ctx=r}async resolvePid(e){return this.processManager?await i(e,this.processManager,this.ctx):e}async handleFirstScan(e){return t(async()=>{let t=await this.resolvePid(e.pid),n={valueType:e.valueType,alignment:e.alignment,maxResults:a(e.maxResults),regionFilter:e.regionFilter,onProgress:e.onProgress},r=await this.scanner.firstScan(t,e.value,n);return this.eventBus?.emit(`memory:scan_completed`,{scanType:`first`,resultCount:r.totalMatches??0,timestamp:new Date().toISOString()}),{...r,hint:r.totalMatches>0?`Found ${r.totalMatches} matches. Use memory_next_scan with sessionId "${r.sessionId}" to narrow down.`:`No matches found. Try a different value or type.`}})}async handleNextScan(e){return t(async()=>{let t=await this.scanner.nextScan(e.sessionId,e.mode,e.value,e.value2);return{...t,hint:t.totalMatches<=10?`Few matches remaining — inspect these addresses.`:`${t.totalMatches} matches remain. Continue narrowing with memory_next_scan.`}})}async handleUnknownScan(e){return t(async()=>{let t=await this.resolvePid(e.pid),n={valueType:e.valueType,alignment:e.alignment,maxResults:a(e.maxResults),regionFilter:e.regionFilter,onProgress:e.onProgress},r=await this.scanner.unknownInitialScan(t,n);return{...r,hint:`Captured ${r.totalMatches} addresses. Use memory_next_scan with changed/unchanged/increased/decreased to narrow.`}})}async handlePointerScan(e){return t(async()=>{let t=await this.resolvePid(e.pid);return{...await this.scanner.pointerScan(t,e.targetAddress,{maxResults:a(e.maxResults),moduleOnly:e.moduleOnly})}})}async handleGroupScan(e){return t(async()=>{let t=await this.resolvePid(e.pid);return{...await this.scanner.groupScan(t,e.pattern,{alignment:e.alignment,maxResults:a(e.maxResults)})}})}},s=class{ptrEngine;processManager;ctx;constructor(e,t,n){this.ptrEngine=e,this.processManager=t,this.ctx=n}async resolvePid(e){return this.processManager?await i(e,this.processManager,this.ctx):e}async handlePointerChainScan(e){return t(async()=>{let t=await this.resolvePid(e.pid),n=await this.ptrEngine.scan(t,e.targetAddress,{maxDepth:e.maxDepth,maxOffset:e.maxOffset,staticOnly:e.staticOnly,modules:e.modules,maxResults:e.maxResults});return{...n,hint:n.totalFound>0?`Found ${n.totalFound} pointer chains. Static chains survive process restarts.`:`No pointer chains found. Try increasing maxDepth or maxOffset.`}})}async handlePointerChainValidate(e){return t(async()=>{let t=await this.resolvePid(e.pid),n=JSON.parse(e.chains),r=await this.ptrEngine.validateChains(t,n);return{results:r,validCount:r.filter(e=>e.isValid).length,totalChecked:n.length}})}async handlePointerChainResolve(e){return t(async()=>{let t=await this.resolvePid(e.pid),n=JSON.parse(e.chain),r=await this.ptrEngine.resolveChain(t,n);return{chainId:n.id,resolvedAddress:r,isResolvable:r!==null}})}async handlePointerChainExport(e){return t(async()=>{let t=JSON.parse(e.chains);return{exportedData:this.ptrEngine.exportChains(t),chainCount:t.length}})}};const c={int8_t:`int8`,uint8_t:`uint8`,int16_t:`int16`,uint16_t:`uint16`,int32_t:`int32`,uint32_t:`uint32`,int64_t:`int64`,uint64_t:`uint64`,void_ptr:`pointer`,char_ptr:`string_ptr`};function l(e){if(typeof e!=`string`||e.length===0)return`unknown`;let t=e.toLowerCase().replace(/\s+/g,`_`).replace(/\*/g,`_ptr`);return c[t]??t}function u(e){if(!e||typeof e!=`object`)throw Error(`structure must be a JSON object`);let t=e,n=(Array.isArray(t.fields)?t.fields:[]).map((e,t)=>{let n=e;return{offset:typeof n.offset==`number`?n.offset:0,size:typeof n.size==`number`?n.size:1,type:l(n.type),name:typeof n.name==`string`&&n.name.length>0?n.name:`field_${t}`,value:typeof n.value==`string`?n.value:``,confidence:typeof n.confidence==`number`?n.confidence:1,notes:typeof n.notes==`string`?n.notes:void 0}}),r=n.reduce((e,t)=>Math.max(e,t.offset+t.size),0),i=typeof t.totalSize==`number`?t.totalSize:typeof t.size==`number`?t.size:r;return{baseAddress:typeof t.baseAddress==`string`?t.baseAddress:`0x0`,totalSize:i,fields:n,vtableAddress:typeof t.vtableAddress==`string`?t.vtableAddress:void 0,className:typeof t.className==`string`?t.className:void 0,baseClasses:Array.isArray(t.baseClasses)?t.baseClasses.filter(e=>typeof e==`string`):void 0,timestamp:typeof t.timestamp==`number`?t.timestamp:Date.now()}}var d=class{structAnalyzer;processManager;ctx;constructor(e,t,n){this.structAnalyzer=e,this.processManager=t,this.ctx=n}async resolvePid(e){return this.processManager?await i(e,this.processManager,this.ctx):e}async handleStructureAnalyze(e){return t(async()=>{let t=await this.resolvePid(e.pid),n=await this.structAnalyzer.analyzeStructure(t,e.address,{size:e.size,otherInstances:e.otherInstances,parseRtti:e.parseRtti});return{...n,hint:n.className?`Detected class: ${n.className}${n.baseClasses?.length?` (inherits: ${n.baseClasses.join(` → `)})`:``}`:`Inferred ${n.fields.length} fields. Use memory_structure_export_c to export as C struct.`}})}async handleVtableParse(e){return t(async()=>{let t=await this.resolvePid(e.pid);return{...await this.structAnalyzer.parseVtable(t,e.vtableAddress)}})}async handleStructureExportC(e){return t(async()=>{let t=u(JSON.parse(e.structure));return{...this.structAnalyzer.exportToCStruct(t,e.name)}})}async handleStructureCompare(e){return t(async()=>{let t=await this.resolvePid(e.pid),n=await this.structAnalyzer.compareInstances(t,e.address1,e.address2,e.size);return{matchingFieldCount:n.matching.length,differingFieldCount:n.differing.length,...n}})}},f=class{bpEngine;injector;processManager;ctx;constructor(e,t,n,r){this.bpEngine=e,this.injector=t,this.processManager=n,this.ctx=r}async resolvePid(e){return this.processManager?await i(e,this.processManager,this.ctx):e}async handleBreakpointSet(e){return t(async()=>{let t=await this.resolvePid(e.pid);return{...await this.bpEngine.setBreakpoint(t,e.address,e.access,e.size??4),hint:`Hardware breakpoint set on DR register. Use memory_breakpoint with action='trace' to collect hits.`}})}async handleBreakpointRemove(e){return t(async()=>({removed:await this.bpEngine.removeBreakpoint(e.breakpointId)}))}async handleBreakpointList(e){return t(async()=>{let e=this.bpEngine.listBreakpoints();return{breakpoints:e,count:e.length}})}async handleBreakpointTrace(e){return t(async()=>{let t=await this.resolvePid(e.pid),n=await this.bpEngine.traceAccess(t,e.address,e.access,e.maxHits,e.timeoutMs);return{hits:n,hitCount:n.length,hint:n.length>0?`${n.length} accesses captured. Check instructionAddress to find the code accessing this address.`:`No hits captured within timeout.`}})}async handlePatchBytes(e){return t(async()=>{let t=await this.resolvePid(e.pid),n=await this.injector.patchBytes(t,e.address,e.bytes);return{...n,hint:`Patch applied. Use memory_patch_undo with patchId "${n.id}" to restore.`}})}async handlePatchNop(e){return t(async()=>{let t=await this.resolvePid(e.pid);return{...await this.injector.nopBytes(t,e.address,e.count),hint:`${e.count} bytes NOP'd. Use memory_patch_undo to restore.`}})}async handlePatchUndo(e){return t(async()=>({restored:await this.injector.unpatch(e.patchId)}))}async handleCodeCaves(e){return t(async()=>{let t=await this.resolvePid(e.pid),n=await this.injector.findCodeCaves(t,e.minSize);return{caves:n,count:n.length}})}},p=class{memCtrl;processManager;ctx;constructor(e,t,n){this.memCtrl=e,this.processManager=t,this.ctx=n}async resolvePid(e){return this.processManager?await i(e,this.processManager,this.ctx):e}async handleWriteValue(e){return t(async()=>{let t=await this.resolvePid(e.pid);return{...await this.memCtrl.writeValue(t,e.address,e.value,e.valueType),hint:`Use memory_write_history with action='undo' to revert.`}})}async handleFreeze(e){return t(async()=>{let t=await this.resolvePid(e.pid),n=await this.memCtrl.freeze(t,e.address,e.value,e.valueType,e.intervalMs);return{...n,hint:`Frozen. Use memory_freeze with action="unfreeze" and freezeId "${n.id}" to stop.`}})}async handleUnfreeze(e){return t(async()=>({unfrozen:await this.memCtrl.unfreeze(e.freezeId)}))}async handleDump(e){return t(async()=>{let t=await this.resolvePid(e.pid);return{dump:await this.memCtrl.dumpMemoryHex(t,e.address,e.size??256)}})}async handleWriteUndo(e){return t(async()=>{let e=await this.memCtrl.undo();return{undone:e!==null,entry:e}})}async handleWriteRedo(e){return t(async()=>{let e=await this.memCtrl.redo();return{redone:e!==null,entry:e}})}},m=class{speedhackEngine;heapAnalyzer;peAnalyzer;antiCheatDetector;processManager;ctx;constructor(e,t,n,r,i,a){this.speedhackEngine=e,this.heapAnalyzer=t,this.peAnalyzer=n,this.antiCheatDetector=r,this.processManager=i,this.ctx=a}async resolvePid(e){return this.processManager?await i(e,this.processManager,this.ctx):e}async handleSpeedhackApply(e){return t(async()=>{let t=await this.resolvePid(e.pid);return{...await this.speedhackEngine.apply(t,e.speed),hint:`Speedhack active (${e.speed}x). Use memory_speedhack({ action: 'set' }) to adjust.`}})}async handleSpeedhackSet(e){return t(async()=>{let t=await this.resolvePid(e.pid);return{updated:await this.speedhackEngine.setSpeed(t,e.speed),newSpeed:e.speed}})}async handleHeapEnumerate(e){return t(async()=>{let t=await this.resolvePid(e.pid),n=await this.heapAnalyzer.enumerateHeaps(t);return{...n,hint:`Enumerated ${n.heaps.length} heaps. Use memory_heap_stats for statistics or memory_heap_anomalies to check for issues.`}})}async handleHeapStats(e){return t(async()=>{let t=await this.resolvePid(e.pid);return{...await this.heapAnalyzer.getStats(t)}})}async handleHeapAnomalies(e){return t(async()=>{let t=await this.resolvePid(e.pid),n=await this.heapAnalyzer.detectAnomalies(t);return{anomalies:n,count:n.length,hint:n.length>0?`Found ${n.length} anomalies — inspect types for spray, UAF, or suspicious patterns.`:`No heap anomalies detected.`}})}async handlePEHeaders(e){return t(async()=>{let t=await this.resolvePid(e.pid);return{...await this.peAnalyzer.parseHeaders(t,e.moduleBase)}})}async handlePEImportsExports(e){return t(async()=>{let t=e.table||`both`,n=e.moduleBase,r=await this.resolvePid(e.pid),i={};return(t===`imports`||t===`both`)&&(i.imports=await this.peAnalyzer.parseImports(r,n)),(t===`exports`||t===`both`)&&(i.exports=await this.peAnalyzer.parseExports(r,n)),i})}async handleInlineHookDetect(e){return t(async()=>{let t=await this.resolvePid(e.pid),n=await this.peAnalyzer.detectInlineHooks(t,e.moduleName);return{hooks:n,count:n.length,hint:n.length>0?`Detected ${n.length} inline hooks — check hookType and jumpTarget for each.`:`No inline hooks detected — exports match disk bytes.`}})}async handleAntiCheatDetect(e){return t(async()=>{let t=await this.resolvePid(e.pid),n=await this.antiCheatDetector.detect(t);return{detections:n,count:n.length,hint:n.length>0?`Found ${n.length} anti-debug mechanisms. Each includes a bypassSuggestion.`:`No anti-debug mechanisms detected in imports.`}})}async handleGuardPages(e){return t(async()=>{let t=await this.resolvePid(e.pid),{guardPages:n,stats:r}=await this.antiCheatDetector.scanGuardPages(t);return{guardPages:n,count:n.length,scan:r,hint:r.truncated?`Scan stopped after ${r.scannedRegions} regions in ${r.durationMs}ms to avoid hanging. Results may be partial.`:n.length>0?`Found ${n.length} guard page regions — these may indicate anti-tampering.`:`No guard pages found.`}})}async handleIntegrityCheck(e){return t(async()=>{let t=await this.resolvePid(e.pid),{sections:n,stats:r}=await this.antiCheatDetector.scanIntegrity(t,e.moduleName),i=n.filter(e=>e.isModified);return{sections:n,totalChecked:n.length,modifiedCount:i.length,scan:r,hint:r.truncated?`Checked ${r.scannedSections} executable section(s) across ${r.scannedModules} module(s) before hitting safety limits. Results may be partial.`:i.length>0?`${i.length} section(s) modified — code may have been patched or hooked.`:`All checked sections match disk — no runtime modifications detected.`}})}},h=class{sessions;scans;ptrChains;structures;hooks;readwrite;integrity;constructor(e,t,n,i,a,c,l,u,h,g,_,v,y,b){this.sessions=new r(t),this.scans=new o(e,v,y,b),this.ptrChains=new s(n,y,b),this.structures=new d(i,y,b),this.hooks=new f(a,c,y,b),this.readwrite=new p(l,y,b),this.integrity=new m(u,h,g,_,y,b)}handleScanSessionDispatch(e){switch(String(e.action??``)){case`delete`:return this.sessions.handleScanDelete(e);case`export`:return this.sessions.handleScanExport(e);default:return this.sessions.handleScanList(e)}}handleScanList=e=>this.sessions.handleScanList(e);handleScanDelete=e=>this.sessions.handleScanDelete(e);handleScanExport=e=>this.sessions.handleScanExport(e);handleFirstScan=e=>this.scans.handleFirstScan(e);handleNextScan=e=>this.scans.handleNextScan(e);handleUnknownScan=e=>this.scans.handleUnknownScan(e);handlePointerScan=e=>this.scans.handlePointerScan(e);handleGroupScan=e=>this.scans.handleGroupScan(e);handlePointerChainDispatch(e){switch(String(e.action??``)){case`validate`:return this.ptrChains.handlePointerChainValidate(e);case`resolve`:return this.ptrChains.handlePointerChainResolve(e);case`export`:return this.ptrChains.handlePointerChainExport(e);default:return this.ptrChains.handlePointerChainScan(e)}}handlePointerChainScan=e=>this.ptrChains.handlePointerChainScan(e);handlePointerChainValidate=e=>this.ptrChains.handlePointerChainValidate(e);handlePointerChainResolve=e=>this.ptrChains.handlePointerChainResolve(e);handlePointerChainExport=e=>this.ptrChains.handlePointerChainExport(e);handleStructureAnalyze=e=>this.structures.handleStructureAnalyze(e);handleVtableParse=e=>this.structures.handleVtableParse(e);handleStructureExportC=e=>this.structures.handleStructureExportC(e);handleStructureCompare=e=>this.structures.handleStructureCompare(e);handleBreakpointDispatch(e){switch(String(e.action??``)){case`remove`:return this.hooks.handleBreakpointRemove(e);case`list`:return this.hooks.handleBreakpointList(e);case`trace`:return this.hooks.handleBreakpointTrace(e);default:return this.hooks.handleBreakpointSet(e)}}handleBreakpointSet=e=>this.hooks.handleBreakpointSet(e);handleBreakpointRemove=e=>this.hooks.handleBreakpointRemove(e);handleBreakpointList=e=>this.hooks.handleBreakpointList(e);handleBreakpointTrace=e=>this.hooks.handleBreakpointTrace(e);handlePatchBytes=e=>this.hooks.handlePatchBytes(e);handlePatchNop=e=>this.hooks.handlePatchNop(e);handlePatchUndo=e=>this.hooks.handlePatchUndo(e);handleCodeCaves=e=>this.hooks.handleCodeCaves(e);handleFreezeDispatch(e){return String(e.action??``)===`unfreeze`?this.readwrite.handleUnfreeze(e):this.readwrite.handleFreeze(e)}handleWriteHistoryDispatch(e){return String(e.action??``)===`redo`?this.readwrite.handleWriteRedo(e):this.readwrite.handleWriteUndo(e)}handleWriteValue=e=>this.readwrite.handleWriteValue(e);handleFreeze=e=>this.readwrite.handleFreeze(e);handleUnfreeze=e=>this.readwrite.handleUnfreeze(e);handleDump=e=>this.readwrite.handleDump(e);handleWriteUndo=e=>this.readwrite.handleWriteUndo(e);handleWriteRedo=e=>this.readwrite.handleWriteRedo(e);handleSpeedhackDispatch(e){return String(e.action??``)===`set`?this.integrity.handleSpeedhackSet(e):this.integrity.handleSpeedhackApply(e)}handleSpeedhackApply=e=>this.integrity.handleSpeedhackApply(e);handleSpeedhackSet=e=>this.integrity.handleSpeedhackSet(e);handleHeapEnumerate=e=>this.integrity.handleHeapEnumerate(e);handleHeapStats=e=>this.integrity.handleHeapStats(e);handleHeapAnomalies=e=>this.integrity.handleHeapAnomalies(e);handlePEHeaders=e=>this.integrity.handlePEHeaders(e);handlePEImportsExports=e=>this.integrity.handlePEImportsExports(e);handleInlineHookDetect=e=>this.integrity.handleInlineHookDetect(e);handleAntiCheatDetect=e=>this.integrity.handleAntiCheatDetect(e);handleGuardPages=e=>this.integrity.handleGuardPages(e);handleIntegrityCheck=e=>this.integrity.handleIntegrityCheck(e)};export{h as MemoryScanHandlers};
1
+ import{Un as e}from"./constants-DMv3svps.mjs";import{n as t}from"./ResponseBuilder-nPXl_khE.mjs";import{t as n}from"./renderer-pid-7jbTR8f5.mjs";var r=class{sessionManager;constructor(e){this.sessionManager=e}async handleScanList(e){return t(async()=>{let e=this.sessionManager.listSessions();return{sessions:e,count:e.length}})}async handleScanDelete(e){return t(async()=>({deleted:this.sessionManager.deleteSession(e.sessionId)}))}async handleScanExport(e){return t(async()=>({exportedData:this.sessionManager.exportSession(e.sessionId)}))}};async function i(e,t,r){return await n(e,t,r)}function a(t){return t===void 0||!Number.isFinite(t)||t<=0?e:Math.min(t,e)}var o=class{scanner;eventBus;processManager;ctx;constructor(e,t,n,r){this.scanner=e,this.eventBus=t,this.processManager=n,this.ctx=r}async resolvePid(e){return this.processManager?await i(e,this.processManager,this.ctx):e}async handleFirstScan(e){return t(async()=>{let t=await this.resolvePid(e.pid),n={valueType:e.valueType,alignment:e.alignment,maxResults:a(e.maxResults),regionFilter:e.regionFilter,onProgress:e.onProgress},r=await this.scanner.firstScan(t,e.value,n);return this.eventBus?.emit(`memory:scan_completed`,{scanType:`first`,resultCount:r.totalMatches??0,timestamp:new Date().toISOString()}),{...r,hint:r.totalMatches>0?`Found ${r.totalMatches} matches. Use memory_next_scan with sessionId "${r.sessionId}" to narrow down.`:`No matches found. Try a different value or type.`}})}async handleNextScan(e){return t(async()=>{let t=await this.scanner.nextScan(e.sessionId,e.mode,e.value,e.value2);return{...t,hint:t.totalMatches<=10?`Few matches remaining — inspect these addresses.`:`${t.totalMatches} matches remain. Continue narrowing with memory_next_scan.`}})}async handleUnknownScan(e){return t(async()=>{let t=await this.resolvePid(e.pid),n={valueType:e.valueType,alignment:e.alignment,maxResults:a(e.maxResults),regionFilter:e.regionFilter,onProgress:e.onProgress},r=await this.scanner.unknownInitialScan(t,n);return{...r,hint:`Captured ${r.totalMatches} addresses. Use memory_next_scan with changed/unchanged/increased/decreased to narrow.`}})}async handlePointerScan(e){return t(async()=>{let t=await this.resolvePid(e.pid);return{...await this.scanner.pointerScan(t,e.targetAddress,{maxResults:a(e.maxResults),moduleOnly:e.moduleOnly})}})}async handleGroupScan(e){return t(async()=>{let t=await this.resolvePid(e.pid);return{...await this.scanner.groupScan(t,e.pattern,{alignment:e.alignment,maxResults:a(e.maxResults)})}})}},s=class{ptrEngine;processManager;ctx;constructor(e,t,n){this.ptrEngine=e,this.processManager=t,this.ctx=n}async resolvePid(e){return this.processManager?await i(e,this.processManager,this.ctx):e}async handlePointerChainScan(e){return t(async()=>{let t=await this.resolvePid(e.pid),n=await this.ptrEngine.scan(t,e.targetAddress,{maxDepth:e.maxDepth,maxOffset:e.maxOffset,staticOnly:e.staticOnly,modules:e.modules,maxResults:e.maxResults});return{...n,hint:n.totalFound>0?`Found ${n.totalFound} pointer chains. Static chains survive process restarts.`:`No pointer chains found. Try increasing maxDepth or maxOffset.`}})}async handlePointerChainValidate(e){return t(async()=>{let t=await this.resolvePid(e.pid),n=JSON.parse(e.chains),r=await this.ptrEngine.validateChains(t,n);return{results:r,validCount:r.filter(e=>e.isValid).length,totalChecked:n.length}})}async handlePointerChainResolve(e){return t(async()=>{let t=await this.resolvePid(e.pid),n=JSON.parse(e.chain),r=await this.ptrEngine.resolveChain(t,n);return{chainId:n.id,resolvedAddress:r,isResolvable:r!==null}})}async handlePointerChainExport(e){return t(async()=>{let t=JSON.parse(e.chains);return{exportedData:this.ptrEngine.exportChains(t),chainCount:t.length}})}};const c={int8_t:`int8`,uint8_t:`uint8`,int16_t:`int16`,uint16_t:`uint16`,int32_t:`int32`,uint32_t:`uint32`,int64_t:`int64`,uint64_t:`uint64`,void_ptr:`pointer`,char_ptr:`string_ptr`};function l(e){if(typeof e!=`string`||e.length===0)return`unknown`;let t=e.toLowerCase().replace(/\s+/g,`_`).replace(/\*/g,`_ptr`);return c[t]??t}function u(e){if(!e||typeof e!=`object`)throw Error(`structure must be a JSON object`);let t=e,n=(Array.isArray(t.fields)?t.fields:[]).map((e,t)=>{let n=e;return{offset:typeof n.offset==`number`?n.offset:0,size:typeof n.size==`number`?n.size:1,type:l(n.type),name:typeof n.name==`string`&&n.name.length>0?n.name:`field_${t}`,value:typeof n.value==`string`?n.value:``,confidence:typeof n.confidence==`number`?n.confidence:1,notes:typeof n.notes==`string`?n.notes:void 0}}),r=n.reduce((e,t)=>Math.max(e,t.offset+t.size),0),i=typeof t.totalSize==`number`?t.totalSize:typeof t.size==`number`?t.size:r;return{baseAddress:typeof t.baseAddress==`string`?t.baseAddress:`0x0`,totalSize:i,fields:n,vtableAddress:typeof t.vtableAddress==`string`?t.vtableAddress:void 0,className:typeof t.className==`string`?t.className:void 0,baseClasses:Array.isArray(t.baseClasses)?t.baseClasses.filter(e=>typeof e==`string`):void 0,timestamp:typeof t.timestamp==`number`?t.timestamp:Date.now()}}var d=class{structAnalyzer;processManager;ctx;constructor(e,t,n){this.structAnalyzer=e,this.processManager=t,this.ctx=n}async resolvePid(e){return this.processManager?await i(e,this.processManager,this.ctx):e}async handleStructureAnalyze(e){return t(async()=>{let t=await this.resolvePid(e.pid),n=await this.structAnalyzer.analyzeStructure(t,e.address,{size:e.size,otherInstances:e.otherInstances,parseRtti:e.parseRtti});return{...n,hint:n.className?`Detected class: ${n.className}${n.baseClasses?.length?` (inherits: ${n.baseClasses.join(` → `)})`:``}`:`Inferred ${n.fields.length} fields. Use memory_structure_export_c to export as C struct.`}})}async handleVtableParse(e){return t(async()=>{let t=await this.resolvePid(e.pid);return{...await this.structAnalyzer.parseVtable(t,e.vtableAddress)}})}async handleStructureExportC(e){return t(async()=>{let t=u(JSON.parse(e.structure));return{...this.structAnalyzer.exportToCStruct(t,e.name)}})}async handleStructureCompare(e){return t(async()=>{let t=await this.resolvePid(e.pid),n=await this.structAnalyzer.compareInstances(t,e.address1,e.address2,e.size);return{matchingFieldCount:n.matching.length,differingFieldCount:n.differing.length,...n}})}},f=class{bpEngine;injector;processManager;ctx;constructor(e,t,n,r){this.bpEngine=e,this.injector=t,this.processManager=n,this.ctx=r}async resolvePid(e){return this.processManager?await i(e,this.processManager,this.ctx):e}async handleBreakpointSet(e){return t(async()=>{let t=await this.resolvePid(e.pid);return{...await this.bpEngine.setBreakpoint(t,e.address,e.access,e.size??4),hint:`Hardware breakpoint set on DR register. Use memory_breakpoint with action='trace' to collect hits.`}})}async handleBreakpointRemove(e){return t(async()=>({removed:await this.bpEngine.removeBreakpoint(e.breakpointId)}))}async handleBreakpointList(e){return t(async()=>{let e=this.bpEngine.listBreakpoints();return{breakpoints:e,count:e.length}})}async handleBreakpointTrace(e){return t(async()=>{let t=await this.resolvePid(e.pid),n=await this.bpEngine.traceAccess(t,e.address,e.access,e.maxHits,e.timeoutMs);return{hits:n,hitCount:n.length,hint:n.length>0?`${n.length} accesses captured. Check instructionAddress to find the code accessing this address.`:`No hits captured within timeout.`}})}async handlePatchBytes(e){return t(async()=>{let t=await this.resolvePid(e.pid),n=await this.injector.patchBytes(t,e.address,e.bytes);return{...n,hint:`Patch applied. Use memory_patch_undo with patchId "${n.id}" to restore.`}})}async handlePatchNop(e){return t(async()=>{let t=await this.resolvePid(e.pid);return{...await this.injector.nopBytes(t,e.address,e.count),hint:`${e.count} bytes NOP'd. Use memory_patch_undo to restore.`}})}async handlePatchUndo(e){return t(async()=>({restored:await this.injector.unpatch(e.patchId)}))}async handleCodeCaves(e){return t(async()=>{let t=await this.resolvePid(e.pid),n=await this.injector.findCodeCaves(t,e.minSize);return{caves:n,count:n.length}})}},p=class{memCtrl;processManager;ctx;constructor(e,t,n){this.memCtrl=e,this.processManager=t,this.ctx=n}async resolvePid(e){return this.processManager?await i(e,this.processManager,this.ctx):e}async handleWriteValue(e){return t(async()=>{let t=await this.resolvePid(e.pid);return{...await this.memCtrl.writeValue(t,e.address,e.value,e.valueType),hint:`Use memory_write_history with action='undo' to revert.`}})}async handleFreeze(e){return t(async()=>{let t=await this.resolvePid(e.pid),n=await this.memCtrl.freeze(t,e.address,e.value,e.valueType,e.intervalMs);return{...n,hint:`Frozen. Use memory_freeze with action="unfreeze" and freezeId "${n.id}" to stop.`}})}async handleUnfreeze(e){return t(async()=>({unfrozen:await this.memCtrl.unfreeze(e.freezeId)}))}async handleDump(e){return t(async()=>{let t=await this.resolvePid(e.pid);return{dump:await this.memCtrl.dumpMemoryHex(t,e.address,e.size??256)}})}async handleWriteUndo(e){return t(async()=>{let e=await this.memCtrl.undo();return{undone:e!==null,entry:e}})}async handleWriteRedo(e){return t(async()=>{let e=await this.memCtrl.redo();return{redone:e!==null,entry:e}})}},m=class{speedhackEngine;heapAnalyzer;peAnalyzer;antiCheatDetector;processManager;ctx;constructor(e,t,n,r,i,a){this.speedhackEngine=e,this.heapAnalyzer=t,this.peAnalyzer=n,this.antiCheatDetector=r,this.processManager=i,this.ctx=a}async resolvePid(e){return this.processManager?await i(e,this.processManager,this.ctx):e}async handleSpeedhackApply(e){return t(async()=>{let t=await this.resolvePid(e.pid);return{...await this.speedhackEngine.apply(t,e.speed),hint:`Speedhack active (${e.speed}x). Use memory_speedhack({ action: 'set' }) to adjust.`}})}async handleSpeedhackSet(e){return t(async()=>{let t=await this.resolvePid(e.pid);return{updated:await this.speedhackEngine.setSpeed(t,e.speed),newSpeed:e.speed}})}async handleHeapEnumerate(e){return t(async()=>{let t=await this.resolvePid(e.pid),n=await this.heapAnalyzer.enumerateHeaps(t);return{...n,hint:`Enumerated ${n.heaps.length} heaps. Use memory_heap_stats for statistics or memory_heap_anomalies to check for issues.`}})}async handleHeapStats(e){return t(async()=>{let t=await this.resolvePid(e.pid);return{...await this.heapAnalyzer.getStats(t)}})}async handleHeapAnomalies(e){return t(async()=>{let t=await this.resolvePid(e.pid),n=await this.heapAnalyzer.detectAnomalies(t);return{anomalies:n,count:n.length,hint:n.length>0?`Found ${n.length} anomalies — inspect types for spray, UAF, or suspicious patterns.`:`No heap anomalies detected.`}})}async handlePEHeaders(e){return t(async()=>{let t=await this.resolvePid(e.pid);return{...await this.peAnalyzer.parseHeaders(t,e.moduleBase)}})}async handlePEImportsExports(e){return t(async()=>{let t=e.table||`both`,n=e.moduleBase,r=await this.resolvePid(e.pid),i={};return(t===`imports`||t===`both`)&&(i.imports=await this.peAnalyzer.parseImports(r,n)),(t===`exports`||t===`both`)&&(i.exports=await this.peAnalyzer.parseExports(r,n)),i})}async handleInlineHookDetect(e){return t(async()=>{let t=await this.resolvePid(e.pid),n=await this.peAnalyzer.detectInlineHooks(t,e.moduleName);return{hooks:n,count:n.length,hint:n.length>0?`Detected ${n.length} inline hooks — check hookType and jumpTarget for each.`:`No inline hooks detected — exports match disk bytes.`}})}async handleAntiCheatDetect(e){return t(async()=>{let t=await this.resolvePid(e.pid),n=await this.antiCheatDetector.detect(t);return{detections:n,count:n.length,hint:n.length>0?`Found ${n.length} anti-debug mechanisms. Each includes a bypassSuggestion.`:`No anti-debug mechanisms detected in imports.`}})}async handleGuardPages(e){return t(async()=>{let t=await this.resolvePid(e.pid),{guardPages:n,stats:r}=await this.antiCheatDetector.scanGuardPages(t);return{guardPages:n,count:n.length,scan:r,hint:r.truncated?`Scan stopped after ${r.scannedRegions} regions in ${r.durationMs}ms to avoid hanging. Results may be partial.`:n.length>0?`Found ${n.length} guard page regions — these may indicate anti-tampering.`:`No guard pages found.`}})}async handleIntegrityCheck(e){return t(async()=>{let t=await this.resolvePid(e.pid),{sections:n,stats:r}=await this.antiCheatDetector.scanIntegrity(t,e.moduleName),i=n.filter(e=>e.isModified);return{sections:n,totalChecked:n.length,modifiedCount:i.length,scan:r,hint:r.truncated?`Checked ${r.scannedSections} executable section(s) across ${r.scannedModules} module(s) before hitting safety limits. Results may be partial.`:i.length>0?`${i.length} section(s) modified — code may have been patched or hooked.`:`All checked sections match disk — no runtime modifications detected.`}})}},h=class{sessions;scans;ptrChains;structures;hooks;readwrite;integrity;constructor(e,t,n,i,a,c,l,u,h,g,_,v,y,b){this.sessions=new r(t),this.scans=new o(e,v,y,b),this.ptrChains=new s(n,y,b),this.structures=new d(i,y,b),this.hooks=new f(a,c,y,b),this.readwrite=new p(l,y,b),this.integrity=new m(u,h,g,_,y,b)}handleScanSessionDispatch(e){switch(String(e.action??``)){case`delete`:return this.sessions.handleScanDelete(e);case`export`:return this.sessions.handleScanExport(e);default:return this.sessions.handleScanList(e)}}handleScanList=e=>this.sessions.handleScanList(e);handleScanDelete=e=>this.sessions.handleScanDelete(e);handleScanExport=e=>this.sessions.handleScanExport(e);handleFirstScan=e=>this.scans.handleFirstScan(e);handleNextScan=e=>this.scans.handleNextScan(e);handleUnknownScan=e=>this.scans.handleUnknownScan(e);handlePointerScan=e=>this.scans.handlePointerScan(e);handleGroupScan=e=>this.scans.handleGroupScan(e);handlePointerChainDispatch(e){switch(String(e.action??``)){case`validate`:return this.ptrChains.handlePointerChainValidate(e);case`resolve`:return this.ptrChains.handlePointerChainResolve(e);case`export`:return this.ptrChains.handlePointerChainExport(e);default:return this.ptrChains.handlePointerChainScan(e)}}handlePointerChainScan=e=>this.ptrChains.handlePointerChainScan(e);handlePointerChainValidate=e=>this.ptrChains.handlePointerChainValidate(e);handlePointerChainResolve=e=>this.ptrChains.handlePointerChainResolve(e);handlePointerChainExport=e=>this.ptrChains.handlePointerChainExport(e);handleStructureAnalyze=e=>this.structures.handleStructureAnalyze(e);handleVtableParse=e=>this.structures.handleVtableParse(e);handleStructureExportC=e=>this.structures.handleStructureExportC(e);handleStructureCompare=e=>this.structures.handleStructureCompare(e);handleBreakpointDispatch(e){switch(String(e.action??``)){case`remove`:return this.hooks.handleBreakpointRemove(e);case`list`:return this.hooks.handleBreakpointList(e);case`trace`:return this.hooks.handleBreakpointTrace(e);default:return this.hooks.handleBreakpointSet(e)}}handleBreakpointSet=e=>this.hooks.handleBreakpointSet(e);handleBreakpointRemove=e=>this.hooks.handleBreakpointRemove(e);handleBreakpointList=e=>this.hooks.handleBreakpointList(e);handleBreakpointTrace=e=>this.hooks.handleBreakpointTrace(e);handlePatchBytes=e=>this.hooks.handlePatchBytes(e);handlePatchNop=e=>this.hooks.handlePatchNop(e);handlePatchUndo=e=>this.hooks.handlePatchUndo(e);handleCodeCaves=e=>this.hooks.handleCodeCaves(e);handleFreezeDispatch(e){return String(e.action??``)===`unfreeze`?this.readwrite.handleUnfreeze(e):this.readwrite.handleFreeze(e)}handleWriteHistoryDispatch(e){return String(e.action??``)===`redo`?this.readwrite.handleWriteRedo(e):this.readwrite.handleWriteUndo(e)}handleWriteValue=e=>this.readwrite.handleWriteValue(e);handleFreeze=e=>this.readwrite.handleFreeze(e);handleUnfreeze=e=>this.readwrite.handleUnfreeze(e);handleDump=e=>this.readwrite.handleDump(e);handleWriteUndo=e=>this.readwrite.handleWriteUndo(e);handleWriteRedo=e=>this.readwrite.handleWriteRedo(e);handleSpeedhackDispatch(e){return String(e.action??``)===`set`?this.integrity.handleSpeedhackSet(e):this.integrity.handleSpeedhackApply(e)}handleSpeedhackApply=e=>this.integrity.handleSpeedhackApply(e);handleSpeedhackSet=e=>this.integrity.handleSpeedhackSet(e);handleHeapEnumerate=e=>this.integrity.handleHeapEnumerate(e);handleHeapStats=e=>this.integrity.handleHeapStats(e);handleHeapAnomalies=e=>this.integrity.handleHeapAnomalies(e);handlePEHeaders=e=>this.integrity.handlePEHeaders(e);handlePEImportsExports=e=>this.integrity.handlePEImportsExports(e);handleInlineHookDetect=e=>this.integrity.handleInlineHookDetect(e);handleAntiCheatDetect=e=>this.integrity.handleAntiCheatDetect(e);handleGuardPages=e=>this.integrity.handleGuardPages(e);handleIntegrityCheck=e=>this.integrity.handleIntegrityCheck(e)};export{h as MemoryScanHandlers};
@@ -1,4 +1,4 @@
1
- import{t as e}from"./logger-sBC6IdRT.mjs";import{a as t,o as n,s as r,t as i}from"./parse-args-Bw413PlW.mjs";import{o as a,s as o}from"./PageController-Dfsm1_o7.mjs";import"./definitions-OeLvmlQy.mjs";var s=class{pageController;injectedHooks=new Map;constructor(e){this.pageController=e}hasAttachedTargetSession(){return this.pageController.hasAttachedTargetSession()}async evaluateInAttachedTarget(e){return await this.pageController.evaluateAttachedTarget(e,{returnByValue:!0,awaitPromise:!0})}async addPersistentScriptToManagedTargets(e,t){await this.pageController.addScriptToPageEvaluateOnNewDocument(t,{id:`ai-hook:${e}`}),await this.pageController.addPersistentScriptToManagedTargets(t,{id:`ai-hook:${e}`,evaluateNow:!0,targetTypes:[`page`,`iframe`]})}async handleAIHookInject(n){try{let i=r(n,`hookId`),s=r(n,`code`),c=t(n,`method`,`evaluate`);if(this.hasAttachedTargetSession())c===`evaluateOnNewDocument`?(await this.addPersistentScriptToManagedTargets(i,s),e.info(`Hook injected into attached target (evaluateOnNewDocument): ${i}`)):(await this.evaluateInAttachedTarget(s),e.info(`Hook injected into attached target (evaluate): ${i}`));else{let t=await this.pageController.getPage();c===`evaluateOnNewDocument`?(await a(t,s),e.info(`Hook injected (evaluateOnNewDocument): ${i}`)):(await o(t,s),e.info(`Hook injected (evaluate): ${i}`))}return this.injectedHooks.set(i,{code:s,injectionTime:Date.now()}),{content:[{type:`text`,text:JSON.stringify({success:!0,hookId:i,message:`Hook (: ${c})`,injectionTime:new Date().toISOString()},null,2)}]}}catch(t){return e.error(`Hook injection failed`,t),{content:[{type:`text`,text:JSON.stringify({success:!1,error:t instanceof Error?t.message:String(t)},null,2)}]}}}async handleAIHookGetData(t){try{let e=r(t,`hookId`),n=this.hasAttachedTargetSession()?await this.evaluateInAttachedTarget(`(() => {
1
+ import{t as e}from"./logger-CCikqqvj.mjs";import{d as t,u as n}from"./ensure-browser-core-JHwDo5ql.mjs";import{c as r,o as i,s as a,t as o}from"./parse-args-ngRrvF9e.mjs";import"./definitions-0hxnrDU72.mjs";var s=class{pageController;injectedHooks=new Map;constructor(e){this.pageController=e}hasAttachedTargetSession(){return this.pageController.hasAttachedTargetSession()}async evaluateInAttachedTarget(e){return await this.pageController.evaluateAttachedTarget(e,{returnByValue:!0,awaitPromise:!0})}async addPersistentScriptToManagedTargets(e,t){await this.pageController.addScriptToPageEvaluateOnNewDocument(t,{id:`ai-hook:${e}`}),await this.pageController.addPersistentScriptToManagedTargets(t,{id:`ai-hook:${e}`,evaluateNow:!0,targetTypes:[`page`,`iframe`]})}async handleAIHookInject(a){try{let o=r(a,`hookId`),s=r(a,`code`),c=i(a,`method`,`evaluate`);if(this.hasAttachedTargetSession())c===`evaluateOnNewDocument`?(await this.addPersistentScriptToManagedTargets(o,s),e.info(`Hook injected into attached target (evaluateOnNewDocument): ${o}`)):(await this.evaluateInAttachedTarget(s),e.info(`Hook injected into attached target (evaluate): ${o}`));else{let r=await this.pageController.getPage();c===`evaluateOnNewDocument`?(await n(r,s),e.info(`Hook injected (evaluateOnNewDocument): ${o}`)):(await t(r,s),e.info(`Hook injected (evaluate): ${o}`))}return this.injectedHooks.set(o,{code:s,injectionTime:Date.now()}),{content:[{type:`text`,text:JSON.stringify({success:!0,hookId:o,message:`Hook (: ${c})`,injectionTime:new Date().toISOString()},null,2)}]}}catch(t){return e.error(`Hook injection failed`,t),{content:[{type:`text`,text:JSON.stringify({success:!1,error:t instanceof Error?t.message:String(t)},null,2)}]}}}async handleAIHookGetData(n){try{let e=r(n,`hookId`),i=this.hasAttachedTargetSession()?await this.evaluateInAttachedTarget(`(() => {
2
2
  const hookId = ${JSON.stringify(e)};
3
3
  const hooks = globalThis.__aiHooks;
4
4
  if (!hooks?.[hookId]) {
@@ -10,7 +10,7 @@ import{t as e}from"./logger-sBC6IdRT.mjs";import{a as t,o as n,s as r,t as i}fro
10
10
  records: hooks[hookId],
11
11
  totalRecords: hooks[hookId].length,
12
12
  };
13
- })()`):await o(await this.pageController.getPage(),e=>window.__aiHooks?.[e]?{hookId:e,metadata:window.__aiHookMetadata?.[e],records:window.__aiHooks[e],totalRecords:window.__aiHooks[e].length}:null,e);return n?{content:[{type:`text`,text:JSON.stringify({success:!0,...n},null,2)}]}:{content:[{type:`text`,text:JSON.stringify({success:!1,message:`Hook: ${e}`},null,2)}]}}catch(t){return e.error(`Failed to get hook data`,t),{content:[{type:`text`,text:JSON.stringify({success:!1,error:t instanceof Error?t.message:String(t)},null,2)}]}}}async handleAIHookList(t){try{let e=this.hasAttachedTargetSession()?await this.evaluateInAttachedTarget(`(() => {
13
+ })()`):await t(await this.pageController.getPage(),e=>window.__aiHooks?.[e]?{hookId:e,metadata:window.__aiHookMetadata?.[e],records:window.__aiHooks[e],totalRecords:window.__aiHooks[e].length}:null,e);return i?{content:[{type:`text`,text:JSON.stringify({success:!0,...i},null,2)}]}:{content:[{type:`text`,text:JSON.stringify({success:!1,message:`Hook: ${e}`},null,2)}]}}catch(t){return e.error(`Failed to get hook data`,t),{content:[{type:`text`,text:JSON.stringify({success:!1,error:t instanceof Error?t.message:String(t)},null,2)}]}}}async handleAIHookList(n){try{let e=this.hasAttachedTargetSession()?await this.evaluateInAttachedTarget(`(() => {
14
14
  const metadata = globalThis.__aiHookMetadata;
15
15
  const hooks = globalThis.__aiHooks;
16
16
  if (!metadata) {
@@ -21,27 +21,27 @@ import{t as e}from"./logger-sBC6IdRT.mjs";import{a as t,o as n,s as r,t as i}fro
21
21
  metadata: metadata[hookId],
22
22
  recordCount: hooks?.[hookId]?.length || 0,
23
23
  }));
24
- })()`):await o(await this.pageController.getPage(),()=>window.__aiHookMetadata?Object.keys(window.__aiHookMetadata).map(e=>({hookId:e,metadata:window.__aiHookMetadata[e],recordCount:window.__aiHooks?.[e]?.length||0})):[]);return{content:[{type:`text`,text:JSON.stringify({success:!0,totalHooks:e.length,hooks:e},null,2)}]}}catch(t){return e.error(`Failed to list hooks`,t),{content:[{type:`text`,text:JSON.stringify({success:!1,error:t instanceof Error?t.message:String(t)},null,2)}]}}}async handleAIHookClear(n){try{let e=t(n,`hookId`);return e?(this.hasAttachedTargetSession()?await this.evaluateInAttachedTarget(`(() => {
24
+ })()`):await t(await this.pageController.getPage(),()=>window.__aiHookMetadata?Object.keys(window.__aiHookMetadata).map(e=>({hookId:e,metadata:window.__aiHookMetadata[e],recordCount:window.__aiHooks?.[e]?.length||0})):[]);return{content:[{type:`text`,text:JSON.stringify({success:!0,totalHooks:e.length,hooks:e},null,2)}]}}catch(t){return e.error(`Failed to list hooks`,t),{content:[{type:`text`,text:JSON.stringify({success:!1,error:t instanceof Error?t.message:String(t)},null,2)}]}}}async handleAIHookClear(n){try{let e=i(n,`hookId`);return e?(this.hasAttachedTargetSession()?await this.evaluateInAttachedTarget(`(() => {
25
25
  const hookId = ${JSON.stringify(e)};
26
26
  if (globalThis.__aiHooks?.[hookId]) {
27
27
  globalThis.__aiHooks[hookId] = [];
28
28
  }
29
29
  return true;
30
- })()`):await o(await this.pageController.getPage(),e=>{window.__aiHooks?.[e]&&(window.__aiHooks[e]=[])},e),{content:[{type:`text`,text:JSON.stringify({success:!0,message:`Hook: ${e}`},null,2)}]}):(this.hasAttachedTargetSession()?await this.evaluateInAttachedTarget(`(() => {
30
+ })()`):await t(await this.pageController.getPage(),e=>{window.__aiHooks?.[e]&&(window.__aiHooks[e]=[])},e),{content:[{type:`text`,text:JSON.stringify({success:!0,message:`Hook: ${e}`},null,2)}]}):(this.hasAttachedTargetSession()?await this.evaluateInAttachedTarget(`(() => {
31
31
  if (globalThis.__aiHooks) {
32
32
  for (const key in globalThis.__aiHooks) {
33
33
  globalThis.__aiHooks[key] = [];
34
34
  }
35
35
  }
36
36
  return true;
37
- })()`):await o(await this.pageController.getPage(),()=>{if(window.__aiHooks)for(let e in window.__aiHooks)window.__aiHooks[e]=[]}),{content:[{type:`text`,text:JSON.stringify({success:!0,message:`Hook`},null,2)}]})}catch(t){return e.error(`Failed to clear hook data`,t),{content:[{type:`text`,text:JSON.stringify({success:!1,error:t instanceof Error?t.message:String(t)},null,2)}]}}}async handleAIHookToggle(t){try{let e=r(t,`hookId`),n=i(t,`enabled`);return this.hasAttachedTargetSession()?await this.evaluateInAttachedTarget(`(() => {
37
+ })()`):await t(await this.pageController.getPage(),()=>{if(window.__aiHooks)for(let e in window.__aiHooks)window.__aiHooks[e]=[]}),{content:[{type:`text`,text:JSON.stringify({success:!0,message:`Hook`},null,2)}]})}catch(t){return e.error(`Failed to clear hook data`,t),{content:[{type:`text`,text:JSON.stringify({success:!1,error:t instanceof Error?t.message:String(t)},null,2)}]}}}async handleAIHookToggle(n){try{let e=r(n,`hookId`),i=o(n,`enabled`);return this.hasAttachedTargetSession()?await this.evaluateInAttachedTarget(`(() => {
38
38
  const hookId = ${JSON.stringify(e)};
39
- const enabled = ${JSON.stringify(n)};
39
+ const enabled = ${JSON.stringify(i)};
40
40
  if (globalThis.__aiHookMetadata?.[hookId]) {
41
41
  globalThis.__aiHookMetadata[hookId].enabled = enabled;
42
42
  }
43
43
  return true;
44
- })()`):await o(await this.pageController.getPage(),(e,t)=>{window.__aiHookMetadata?.[e]&&(window.__aiHookMetadata[e].enabled=t)},e,n),{content:[{type:`text`,text:JSON.stringify({success:!0,hookId:e,enabled:n,message:`Hook`},null,2)}]}}catch(t){return e.error(`Failed to toggle hook`,t),{content:[{type:`text`,text:JSON.stringify({success:!1,error:t instanceof Error?t.message:String(t)},null,2)}]}}}async handleAIHookExport(n){try{let e=t(n,`hookId`),r=t(n,`format`,`json`),i=this.hasAttachedTargetSession()?await this.evaluateInAttachedTarget(`(() => {
44
+ })()`):await t(await this.pageController.getPage(),(e,t)=>{window.__aiHookMetadata?.[e]&&(window.__aiHookMetadata[e].enabled=t)},e,i),{content:[{type:`text`,text:JSON.stringify({success:!0,hookId:e,enabled:i,message:`Hook`},null,2)}]}}catch(t){return e.error(`Failed to toggle hook`,t),{content:[{type:`text`,text:JSON.stringify({success:!1,error:t instanceof Error?t.message:String(t)},null,2)}]}}}async handleAIHookExport(n){try{let e=i(n,`hookId`),r=i(n,`format`,`json`),a=this.hasAttachedTargetSession()?await this.evaluateInAttachedTarget(`(() => {
45
45
  const hookId = ${JSON.stringify(e)};
46
46
  if (hookId) {
47
47
  return {
@@ -54,7 +54,7 @@ import{t as e}from"./logger-sBC6IdRT.mjs";import{a as t,o as n,s as r,t as i}fro
54
54
  metadata: globalThis.__aiHookMetadata || {},
55
55
  records: globalThis.__aiHooks || {},
56
56
  };
57
- })()`):await o(await this.pageController.getPage(),e=>e?{hookId:e,metadata:window.__aiHookMetadata?.[e],records:window.__aiHooks?.[e]||[]}:{metadata:window.__aiHookMetadata||{},records:window.__aiHooks||{}},e);return{content:[{type:`text`,text:JSON.stringify({success:!0,format:r,data:i,exportTime:new Date().toISOString()},null,2)}]}}catch(t){return e.error(`Failed to export hook data`,t),{content:[{type:`text`,text:JSON.stringify({success:!1,error:t instanceof Error?t.message:String(t)},null,2)}]}}}async handleAIHook(e){let t=String(e.action??``);switch(t){case`inject`:return this.handleAIHookInject(e);case`get_data`:return this.handleAIHookGetData(e);case`list`:return this.handleAIHookList(e);case`clear`:return this.handleAIHookClear(e);case`toggle`:return this.handleAIHookToggle(e);case`export`:return this.handleAIHookExport(e);default:return{content:[{type:`text`,text:JSON.stringify({success:!1,error:`Unknown action: ${t}. Valid actions: inject, get_data, list, clear, toggle, export`})}]}}}};function c(e,t,n,r){let i=n?`const __stack = new Error().stack?.split('\\n').slice(1,4).join(' | ') || '';`:`const __stack = '';`,a=r?`console.log(__msg + (__stack ? ' | Stack: ' + __stack : ''));`:``;return`
57
+ })()`):await t(await this.pageController.getPage(),e=>e?{hookId:e,metadata:window.__aiHookMetadata?.[e],records:window.__aiHooks?.[e]||[]}:{metadata:window.__aiHookMetadata||{},records:window.__aiHooks||{}},e);return{content:[{type:`text`,text:JSON.stringify({success:!0,format:r,data:a,exportTime:new Date().toISOString()},null,2)}]}}catch(t){return e.error(`Failed to export hook data`,t),{content:[{type:`text`,text:JSON.stringify({success:!1,error:t instanceof Error?t.message:String(t)},null,2)}]}}}async handleAIHook(e){let t=String(e.action??``);switch(t){case`inject`:return this.handleAIHookInject(e);case`get_data`:return this.handleAIHookGetData(e);case`list`:return this.handleAIHookList(e);case`clear`:return this.handleAIHookClear(e);case`toggle`:return this.handleAIHookToggle(e);case`export`:return this.handleAIHookExport(e);default:return{content:[{type:`text`,text:JSON.stringify({success:!1,error:`Unknown action: ${t}. Valid actions: inject, get_data, list, clear, toggle, export`})}]}}}};function c(e,t,n,r){let i=n?`const __stack = new Error().stack?.split('\\n').slice(1,4).join(' | ') || '';`:`const __stack = '';`,a=r?`console.log(__msg + (__stack ? ' | Stack: ' + __stack : ''));`:``;return`
58
58
  (function() {
59
59
  if (window.__hookPresets === undefined) window.__hookPresets = {};
60
60
  if (window.__hookPresets['${e}']) return;
@@ -597,4 +597,4 @@ import{t as e}from"./logger-sBC6IdRT.mjs";import{a as t,o as n,s as r,t as i}fro
597
597
  return new _Memory(descriptor);
598
598
  };
599
599
  WebAssembly.Memory.prototype = _Memory.prototype;
600
- }`,e,t)}},d={...l,...u},f=Object.entries(d).map(([e,t])=>({id:e,description:t.description}));var p=class{pageController;constructor(e){this.pageController=e}async handleHookPreset(r){try{let a=this.buildCustomPresetMap(r),o={...d,...a},s=[...f,...Object.entries(a).map(([e,t])=>({id:e,description:`${t.description} (custom)`}))];if(r.listPresets===!0)return{content:[{type:`text`,text:JSON.stringify({success:!0,totalPresets:s.length,presets:s},null,2)}]};let c=i(r,`captureStack`,!1),l=i(r,`logToConsole`,!0),u=t(r,`method`,`evaluate`),p=[];if(r.preset)p=[t(r,`preset`)];else if(Array.isArray(r.presets))p=n(r,`presets`);else return{content:[{type:`text`,text:JSON.stringify({success:!1,error:` Provide either preset (single) or presets (multiple), or set listPresets=true to list available presets`},null,2)}]};let m=p.filter(e=>!o[e]);if(m.length>0)return{content:[{type:`text`,text:JSON.stringify({success:!1,error:`: ${m.join(`, `)}`,availablePresets:s.map(e=>e.id)},null,2)}]};let h=await this.pageController.getPage(),g=[],_=[];for(let t of p)try{let n=o[t].buildCode(c,l);u===`evaluateOnNewDocument`?await h.evaluateOnNewDocument(n):await h.evaluate(n),g.push(t),e.info(` Hook preset injected: ${t}`)}catch(n){let r=n instanceof Error?n.message:String(n);_.push({preset:t,error:r}),e.error(` Failed to inject preset ${t}:`,n)}return{content:[{type:`text`,text:JSON.stringify({success:_.length===0,injected:g,failed:_,method:u,captureStack:c,message:` ${g.length}/${p.length} Hook`,usage:` ai_hook_get_data(hookId: "preset-<>") `},null,2)}]}}catch(t){return e.error(`Hook preset injection failed`,t),{content:[{type:`text`,text:JSON.stringify({success:!1,error:t instanceof Error?t.message:String(t)},null,2)}]}}}buildCustomPresetMap(e){let t=[];e.customTemplate&&typeof e.customTemplate==`object`&&t.push(e.customTemplate),Array.isArray(e.customTemplates)&&t.push(...e.customTemplates);let n={};for(let e of t){let t=e.id?.trim(),r=e.body?.trim();if(!t||!r)throw Error(`Each custom template requires non-empty id and body`);if(d[t])throw Error(`Custom template id conflicts with built-in preset: ${t}`);n[t]={description:e.description?.trim()||`Custom inline preset: ${t}`,buildCode:(e,n)=>c(t,r,e,n)}}return n}};export{s as AIHookToolHandlers,p as HookPresetToolHandlers};
600
+ }`,e,t)}},d={...l,...u},f=Object.entries(d).map(([e,t])=>({id:e,description:t.description}));var p=class{pageController;constructor(e){this.pageController=e}async handleHookPreset(t){try{let n=this.buildCustomPresetMap(t),r={...d,...n},s=[...f,...Object.entries(n).map(([e,t])=>({id:e,description:`${t.description} (custom)`}))];if(t.listPresets===!0)return{content:[{type:`text`,text:JSON.stringify({success:!0,totalPresets:s.length,presets:s},null,2)}]};let c=o(t,`captureStack`,!1),l=o(t,`logToConsole`,!0),u=i(t,`method`,`evaluate`),p=[];if(t.preset)p=[i(t,`preset`)];else if(Array.isArray(t.presets))p=a(t,`presets`);else return{content:[{type:`text`,text:JSON.stringify({success:!1,error:` Provide either preset (single) or presets (multiple), or set listPresets=true to list available presets`},null,2)}]};let m=p.filter(e=>!r[e]);if(m.length>0)return{content:[{type:`text`,text:JSON.stringify({success:!1,error:`: ${m.join(`, `)}`,availablePresets:s.map(e=>e.id)},null,2)}]};let h=await this.pageController.getPage(),g=[],_=[];for(let t of p)try{let n=r[t].buildCode(c,l);u===`evaluateOnNewDocument`?await h.evaluateOnNewDocument(n):await h.evaluate(n),g.push(t),e.info(` Hook preset injected: ${t}`)}catch(n){let r=n instanceof Error?n.message:String(n);_.push({preset:t,error:r}),e.error(` Failed to inject preset ${t}:`,n)}return{content:[{type:`text`,text:JSON.stringify({success:_.length===0,injected:g,failed:_,method:u,captureStack:c,message:` ${g.length}/${p.length} Hook`,usage:` ai_hook_get_data(hookId: "preset-<>") `},null,2)}]}}catch(t){return e.error(`Hook preset injection failed`,t),{content:[{type:`text`,text:JSON.stringify({success:!1,error:t instanceof Error?t.message:String(t)},null,2)}]}}}buildCustomPresetMap(e){let t=[];e.customTemplate&&typeof e.customTemplate==`object`&&t.push(e.customTemplate),Array.isArray(e.customTemplates)&&t.push(...e.customTemplates);let n={};for(let e of t){let t=e.id?.trim(),r=e.body?.trim();if(!t||!r)throw Error(`Each custom template requires non-empty id and body`);if(d[t])throw Error(`Custom template id conflicts with built-in preset: ${t}`);n[t]={description:e.description?.trim()||`Custom inline preset: ${t}`,buildCode:(e,n)=>c(t,r,e,n)}}return n}};export{s as AIHookToolHandlers,p as HookPresetToolHandlers};