@jshookmcp/jshook 0.3.3 → 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 (311) 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-QIt3tetp.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-Z77fDl9Z.mjs → DetailedDataManager-Dgh402Gp.mjs} +2 -2
  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/MemoryController-CCsGuGJS.mjs +2 -0
  25. package/dist/{MemoryScanSession-zfoVZJB0.mjs → MemoryScanSession-BZ2A9Ph1.mjs} +1 -1
  26. package/dist/MemoryScanner-DAxsq7Sx.mjs +1 -0
  27. package/dist/NativeMemoryManager.impl-BIJzXMqH.mjs +1 -0
  28. package/dist/{NativeMemoryManager.utils-Bu8srMEF.mjs → NativeMemoryManager.utils-CMoul2an.mjs} +1 -1
  29. package/dist/PEAnalyzer-CB_kaTis.mjs +1 -0
  30. package/dist/PackerDeobfuscator-BpwGjxDL.mjs +7 -0
  31. package/dist/PointerChainEngine-B6SYv6ZM.mjs +1 -0
  32. package/dist/ProcessRegistry-C5W1Tkn9.mjs +1 -0
  33. package/dist/QuickJSSandbox-CIde-jzG.mjs +299 -0
  34. package/dist/{ResponseBuilder-nPXl_khE.mjs → ResponseBuilder-BLicSCjn.mjs} +1 -1
  35. package/dist/ReverseEvidenceGraph-DJzk0GQz.mjs +2 -0
  36. package/dist/ServerRuntimeState-DGXNv8Ji.mjs +1 -0
  37. package/dist/Speedhack-MGoeq1ZS.mjs +1 -0
  38. package/dist/StructureAnalyzer-CCTWAXR3.mjs +2 -0
  39. package/dist/ToolHandlerMap-C40EmuLT.mjs +1 -0
  40. package/dist/{ToolProbe-DQiREmNp.mjs → ToolProbe-B02GC3ZY.mjs} +1 -1
  41. package/dist/ToolRegistry-CzqQxFqf.mjs +1 -0
  42. package/dist/{ToolRouter.policy-UKBlFlbh.mjs → ToolRouter.policy-Bgb3S8jc.mjs} +2 -2
  43. package/dist/TraceRecorder-BfeCTQUj.mjs +407 -0
  44. package/dist/VMDeobfuscator-BHtkV850.mjs +1 -0
  45. package/dist/Win32API-G7QPyckq.mjs +1 -0
  46. package/dist/{Win32Debug-DwF8mQGm.mjs → Win32Debug-6yzmtv5b.mjs} +1 -1
  47. package/dist/allocation-track-CiI-CnaI.mjs +1 -0
  48. package/dist/analysis-CojUzwX-.mjs +27 -0
  49. package/dist/{antidebug-CsnpOR9z.mjs → antidebug-CgU84TE1.mjs} +1 -1
  50. package/dist/apk-DrPBsOq8.mjs +1 -0
  51. package/dist/artifactRetention-Bk6fW2uF.mjs +1 -0
  52. package/dist/artifacts-Bx9GLx4J.mjs +1 -0
  53. package/dist/ast-bridge-BlOrmVAv.mjs +1 -0
  54. package/dist/ast-utils-B9E5k_v1.mjs +1 -0
  55. package/dist/binary-instrument-DiE1BP0x.mjs +12 -0
  56. package/dist/boringssl-inspector-C6M3sOga.mjs +2 -0
  57. package/dist/browser-QDUu5ML9.mjs +29 -0
  58. package/dist/{canvas-396ieNv5.mjs → canvas-g5kmLdY-.mjs} +1098 -24
  59. package/dist/{capabilities-L1ax5EHS.mjs → capabilities-DwzyxL2w.mjs} +1 -1
  60. package/dist/cdp-session-Dy4OwMOP.mjs +1 -0
  61. package/dist/collector-Cld4i-E4.mjs +1 -0
  62. package/dist/config-5ODJ3Aj0.mjs +3 -0
  63. package/dist/constants-nvsLpSri.mjs +1 -0
  64. package/dist/coordination-C6y2gM9O.mjs +98 -0
  65. package/dist/coverage-and-block--cWjjEe5.mjs +1 -0
  66. package/dist/dart-inspector-D4IKxZ6u.mjs +0 -0
  67. package/dist/debugger-C2SpiXoO.mjs +1 -0
  68. package/dist/definitions-0mtilYzG.mjs +1 -0
  69. package/dist/definitions-9csunmeX.mjs +1 -0
  70. package/dist/definitions-B11MudW_.mjs +1 -0
  71. package/dist/definitions-BKpRDjcI.mjs +1 -0
  72. package/dist/definitions-BXE3H4re.mjs +1 -0
  73. package/dist/definitions-BlPHe5DX.mjs +1 -0
  74. package/dist/definitions-Bob4XMxI.mjs +27 -0
  75. package/dist/definitions-BpIQN2nm.mjs +1 -0
  76. package/dist/{definitions-Ym8niHDb.mjs → definitions-BvolWeSu.mjs} +1 -1
  77. package/dist/definitions-C-6j3Ejl.mjs +1 -0
  78. package/dist/definitions-C-AdFfFu.mjs +1 -0
  79. package/dist/definitions-CArdw_9T.mjs +1 -0
  80. package/dist/definitions-CCvIcRrT.mjs +1 -0
  81. package/dist/definitions-CJPE5PIl.mjs +1 -0
  82. package/dist/definitions-CbqeW06u.mjs +1 -0
  83. package/dist/definitions-Cexmkypg.mjs +1 -0
  84. package/dist/definitions-D1dxl8qt.mjs +1 -0
  85. package/dist/definitions-D3uT-ZbU.mjs +1 -0
  86. package/dist/definitions-DtOY5iUc.mjs +1 -0
  87. package/dist/{definitions-Cv5r8xwq.mjs → definitions-DvrYdDCJ2.mjs} +1 -1
  88. package/dist/definitions-ihxOqOC4.mjs +1 -0
  89. package/dist/deopt-trace-qnAcC931.mjs +17 -0
  90. package/dist/disasm-DoxSucGp.mjs +1 -0
  91. package/dist/dumpsys-parser-Du-5ruEe.mjs +2 -0
  92. package/dist/encoding-UMtwgy4M.mjs +2 -0
  93. package/dist/ensure-browser-core-BP70x0TB.mjs +285 -0
  94. package/dist/factory-BeND77hf.mjs +2 -0
  95. package/dist/graphql-CF7QKJME.mjs +68 -0
  96. package/dist/grpc-raw-Dp7ps2sv.mjs +1 -0
  97. package/dist/handlers--qCl9vNv.mjs +1 -0
  98. package/dist/handlers-BHIu1LqA.mjs +1 -0
  99. package/dist/{handlers-DB6xVVWq.mjs → handlers-BQ4K8Jbr.mjs} +1 -1
  100. package/dist/handlers-BxQv-wtf.mjs +8 -0
  101. package/dist/handlers-ByYG27-5.mjs +1 -0
  102. package/dist/handlers-C0I9-BtX.mjs +5 -0
  103. package/dist/{handlers-CWKBBjai.mjs → handlers-CL0Iokmw.mjs} +1 -1
  104. package/dist/handlers-CNbhIdSK.mjs +4 -0
  105. package/dist/handlers-CnTTSJFs.mjs +109 -0
  106. package/dist/handlers-CoDx6akJ2.mjs +49 -0
  107. package/dist/{handlers-BbLxNbbT.mjs → handlers-DASJI0Pn.mjs} +1 -1
  108. package/dist/handlers-DRKMaA-_.mjs +74 -0
  109. package/dist/handlers-Dalu0olz.mjs +2 -0
  110. package/dist/handlers-KY0g31ny.mjs +9 -0
  111. package/dist/handlers-oGo60aVv.mjs +1 -0
  112. package/dist/handlers.impl-BTXLw6Qc.mjs +1 -0
  113. package/dist/heap-sampling-BqdiU-5j.mjs +1 -0
  114. package/dist/{hooks-DPouiS7I.mjs → hooks-COK3t5rT.mjs} +51 -32
  115. package/dist/index.mjs +11 -11
  116. package/dist/logger-BGCcd-jJ.mjs +1 -0
  117. package/dist/macro-nUYUjKNZ.mjs +2 -0
  118. package/dist/maintenance-CfnE7ZKU.mjs +4 -0
  119. package/dist/manifest-7EOTUc0D.mjs +1 -0
  120. package/dist/manifest-B5ujuQmf.mjs +1 -0
  121. package/dist/manifest-BErXl3zn.mjs +1 -0
  122. package/dist/manifest-BKA-mD3J.mjs +1 -0
  123. package/dist/manifest-BUXj23bX.mjs +1 -0
  124. package/dist/manifest-BfXt9cau.mjs +1 -0
  125. package/dist/manifest-Bx-tpURK.mjs +1 -0
  126. package/dist/manifest-C0owVAdq.mjs +1 -0
  127. package/dist/manifest-C5XqYc9o.mjs +1 -0
  128. package/dist/manifest-CVKzLjsA.mjs +1 -0
  129. package/dist/manifest-CaeFjdhj.mjs +1 -0
  130. package/dist/manifest-CegBgip0.mjs +1 -0
  131. package/dist/manifest-CoJHqlgS.mjs +1 -0
  132. package/dist/manifest-D0dbtDqd.mjs +1 -0
  133. package/dist/manifest-D5Gr8ujd.mjs +12 -0
  134. package/dist/manifest-D82z-5og.mjs +1 -0
  135. package/dist/manifest-DA2afIwh.mjs +1 -0
  136. package/dist/manifest-DAbiFP5o.mjs +1 -0
  137. package/dist/manifest-DEY0s1O72.mjs +1 -0
  138. package/dist/manifest-DTOqNqiA.mjs +1 -0
  139. package/dist/manifest-DZ6ELNgX.mjs +1 -0
  140. package/dist/manifest-DjHkjddT.mjs +1 -0
  141. package/dist/manifest-DocA_itf2.mjs +1 -0
  142. package/dist/manifest-Dpnhvfq0.mjs +1 -0
  143. package/dist/manifest-DucPMG_a.mjs +1 -0
  144. package/dist/manifest-Dw5yYEac.mjs +1 -0
  145. package/dist/manifest-Ic_Cg66S.mjs +1 -0
  146. package/dist/manifest-JHaG6GMN.mjs +1 -0
  147. package/dist/manifest-QdkIzmYM.mjs +1 -0
  148. package/dist/manifest-YZqaCe25.mjs +1 -0
  149. package/dist/manifest-f0lUeXwq.mjs +1 -0
  150. package/dist/manifest-h-Ebisf8.mjs +1 -0
  151. package/dist/manifest-oOfTymBS.mjs +1 -0
  152. package/dist/manifest-qXqrO6KC.mjs +2 -0
  153. package/dist/mapsParser-DrJoeC0c.mjs +1 -0
  154. package/dist/modules-CC_ADmwi.mjs +333 -0
  155. package/dist/mojo-ipc-kVztXYw-.mjs +140 -0
  156. package/dist/native-D9ouskXO.mjs +961 -0
  157. package/dist/native-bridge-Dzd7hYoq.mjs +1 -0
  158. package/dist/network-C5Y-S87J.mjs +7 -0
  159. package/dist/one-gadget-CiWFE17F.mjs +1 -0
  160. package/dist/outputPaths-CHtELDyi.mjs +1 -0
  161. package/dist/parse-args-B6dwWc9k.mjs +1 -0
  162. package/dist/platform-BIXgJaM3.mjs +94 -0
  163. package/dist/process-aDIfLC0v.mjs +6 -0
  164. package/dist/proxy-DsHsQ1I4.mjs +2 -0
  165. package/dist/registry-7h8jJ9y9.mjs +1 -0
  166. package/dist/{registry-xB8Wgmyj.mjs → registry-DJDnkQW2.mjs} +1 -1
  167. package/dist/response-R8ghbZSb.mjs +1 -0
  168. package/dist/retry-policy-DtYv0kDi.mjs +1 -0
  169. package/dist/reverseEngineeringConfig-BhZLOa3C.mjs +1 -0
  170. package/dist/safeOutput-Dt4mfjXA.mjs +1 -0
  171. package/dist/{search-defaults-CJik67or.mjs → search-defaults-BBRJNAzC.mjs} +1 -1
  172. package/dist/server/search/EmbeddingWorker.d.mts +1 -0
  173. package/dist/server/search/EmbeddingWorker.mjs +1 -0
  174. package/dist/shared-BKtWZDGN.mjs +1 -0
  175. package/dist/sourcemap-2VIeVeKw.mjs +3 -0
  176. package/dist/streaming-DkpE3GGU.mjs +15 -0
  177. package/dist/syscall-DGZoYM_U.mjs +1 -0
  178. package/dist/transform-BJqsBC_-.mjs +105 -0
  179. package/dist/turbofan-graph-CbGHNVtl.mjs +1 -0
  180. package/dist/turbofan-inspect--NdCuYXi.mjs +23 -0
  181. package/dist/types-CWSvzmIh.mjs +1 -0
  182. package/dist/v8-inspector-CTJo08-K.mjs +297 -0
  183. package/dist/wasm-DX4Qm2Vs.mjs +235 -0
  184. package/dist/weakrefs-inspect-CnhaF-rN.mjs +57 -0
  185. package/dist/webgpu-D4-DxbxZ.mjs +6 -0
  186. package/dist/workflow-DHktRNF2.mjs +108 -0
  187. package/package.json +33 -27
  188. package/dist/AntiCheatDetector-CUpZBh5O.mjs +0 -1
  189. package/dist/CodeInjector-Btj9upnf.mjs +0 -1
  190. package/dist/ConsoleMonitor-DIjN5Afa.mjs +0 -306
  191. package/dist/DarwinAPI-BuMPGzHm.mjs +0 -1
  192. package/dist/ExtensionManager.tools-CIGOWViz.mjs +0 -1
  193. package/dist/FingerprintManager-BkDSsjjP.mjs +0 -1
  194. package/dist/HardwareBreakpoint-DMAMcPyB.mjs +0 -1
  195. package/dist/HeapAnalyzer-Yj348FYt.mjs +0 -1
  196. package/dist/InstrumentationSession-c5qZyp7d.mjs +0 -1
  197. package/dist/MCPServer.activation.ttl-CEGNBycZ.mjs +0 -1
  198. package/dist/MCPServer.search.helpers-Cs1JpKbu.mjs +0 -1
  199. package/dist/MemoryController-DjtgiING.mjs +0 -2
  200. package/dist/MemoryScanner-Dxd657li.mjs +0 -1
  201. package/dist/PEAnalyzer-CMu9Ua9T.mjs +0 -1
  202. package/dist/PointerChainEngine-CaSC1Mry.mjs +0 -1
  203. package/dist/ProcessRegistry-D5y1yuP2.mjs +0 -1
  204. package/dist/ReverseEvidenceGraph-BksOpsPs.mjs +0 -2
  205. package/dist/ServerRuntimeState-CgqBBwfd.mjs +0 -1
  206. package/dist/Speedhack-pwXTHxOY.mjs +0 -1
  207. package/dist/StructureAnalyzer-BseGzsSl.mjs +0 -2
  208. package/dist/ToolCatalog-DgmQXdsm.mjs +0 -1
  209. package/dist/ToolHandlerMap-7HWoIgQO.mjs +0 -1
  210. package/dist/ToolRegistry-eMZEBiR1.mjs +0 -1
  211. package/dist/TraceRecorder-B5ktv3nP.mjs +0 -272
  212. package/dist/VersionDetector-CmPJmaJg.mjs +0 -1
  213. package/dist/Win32API-DoP3MMHS.mjs +0 -1
  214. package/dist/WorkflowEngine-CldHG5b4.mjs +0 -1
  215. package/dist/analysis-C-ln0Brh.mjs +0 -6
  216. package/dist/artifactRetention-DkYKLOvi.mjs +0 -1
  217. package/dist/artifacts-D-4pSS_N.mjs +0 -1
  218. package/dist/binary-instrument-BeZ224mZ.mjs +0 -9
  219. package/dist/boringssl-inspector-ZOCkaipa.mjs +0 -2
  220. package/dist/browser-BUaB25bk.mjs +0 -11
  221. package/dist/collector-CB2syQEg.mjs +0 -1
  222. package/dist/constants-DMv3svps.mjs +0 -2
  223. package/dist/coordination-Dbohmj6D.mjs +0 -1
  224. package/dist/dart-inspector-LhEqRITQ.mjs +0 -0
  225. package/dist/debugger-CLzkObIO.mjs +0 -1
  226. package/dist/definitions-0hxnrDU72.mjs +0 -1
  227. package/dist/definitions-B3a9QC2t.mjs +0 -1
  228. package/dist/definitions-BOvju5t2.mjs +0 -1
  229. package/dist/definitions-CXj_cEVt.mjs +0 -1
  230. package/dist/definitions-Co6AvTjH.mjs +0 -1
  231. package/dist/definitions-DBYSxChX.mjs +0 -1
  232. package/dist/definitions-D_dTDX9B.mjs +0 -1
  233. package/dist/definitions-Db9t2ddh.mjs +0 -1
  234. package/dist/definitions-DbN2CjI2.mjs +0 -1
  235. package/dist/definitions-DlmmHmZc.mjs +0 -1
  236. package/dist/definitions-DnYpoGig.mjs +0 -1
  237. package/dist/definitions-DtZ6Ktx2.mjs +0 -1
  238. package/dist/definitions-DuIPS8gq.mjs +0 -1
  239. package/dist/definitions-DywfwPMb.mjs +0 -1
  240. package/dist/definitions-EGmqr85H.mjs +0 -1
  241. package/dist/definitions-Fetw_Cge.mjs +0 -26
  242. package/dist/definitions-LdkeuOeA.mjs +0 -1
  243. package/dist/definitions-cnG6tj17.mjs +0 -1
  244. package/dist/encoding-B4xZWErf.mjs +0 -2
  245. package/dist/ensure-browser-core-JHwDo5ql.mjs +0 -285
  246. package/dist/factory-BxNdBiZa.mjs +0 -1
  247. package/dist/graphql-GBWsZ9xC.mjs +0 -62
  248. package/dist/handlers-5nzR8B0a.mjs +0 -5
  249. package/dist/handlers-6iNsXOVT.mjs +0 -7
  250. package/dist/handlers-BZ8n6Hvf.mjs +0 -1
  251. package/dist/handlers-BbS4hssc.mjs +0 -4
  252. package/dist/handlers-CIKOP4aI.mjs +0 -2
  253. package/dist/handlers-Cmb6SoRC.mjs +0 -1
  254. package/dist/handlers-CrJsKnEI.mjs +0 -1
  255. package/dist/handlers-DOOCWUNR.mjs +0 -31
  256. package/dist/handlers-Z_B5aVaU.mjs +0 -54
  257. package/dist/handlers-gVscChvl.mjs +0 -1
  258. package/dist/handlers-xFvI9P_y.mjs +0 -1
  259. package/dist/handlers.impl-BsFTW6SD.mjs +0 -1
  260. package/dist/logger-CCikqqvj.mjs +0 -1
  261. package/dist/macro-p8kuJVcm.mjs +0 -2
  262. package/dist/maintenance-DAqADb6Z.mjs +0 -302
  263. package/dist/manifest-4lmM6MZR.mjs +0 -1
  264. package/dist/manifest-AxaxRSt6.mjs +0 -2
  265. package/dist/manifest-BIqRE1Qz.mjs +0 -1
  266. package/dist/manifest-Box-jWfr.mjs +0 -1
  267. package/dist/manifest-Bp33di0Q.mjs +0 -1
  268. package/dist/manifest-BvRX4nRP.mjs +0 -1
  269. package/dist/manifest-C6KoB1XE.mjs +0 -1
  270. package/dist/manifest-C7TdXCWY.mjs +0 -1
  271. package/dist/manifest-CM-n64K0.mjs +0 -1
  272. package/dist/manifest-CUokxCUN.mjs +0 -1
  273. package/dist/manifest-CWJS45iO.mjs +0 -1
  274. package/dist/manifest-Cdxdgo-D.mjs +0 -1
  275. package/dist/manifest-Cf6SmamD.mjs +0 -1
  276. package/dist/manifest-Cgxu2qdv.mjs +0 -1
  277. package/dist/manifest-CowGSURa2.mjs +0 -1
  278. package/dist/manifest-CsGIrh34.mjs +0 -1
  279. package/dist/manifest-CvDpVToN.mjs +0 -1
  280. package/dist/manifest-D8TL9RLE.mjs +0 -1
  281. package/dist/manifest-DIhtCBe6.mjs +0 -1
  282. package/dist/manifest-DJbruNOg.mjs +0 -1
  283. package/dist/manifest-DLGtZH-0.mjs +0 -1
  284. package/dist/manifest-DXHdPt2T.mjs +0 -1
  285. package/dist/manifest-Dg5ScOyW.mjs +0 -1
  286. package/dist/manifest-DzGoTS0R.mjs +0 -1
  287. package/dist/manifest-G2H52LKz.mjs +0 -131
  288. package/dist/manifest-P0Futrgb.mjs +0 -1
  289. package/dist/manifest-Qw7xgvjv.mjs +0 -1
  290. package/dist/manifest-W3qvVrP2.mjs +0 -1
  291. package/dist/manifest-dG6MuR1U.mjs +0 -1
  292. package/dist/manifest-nWXtgq5Y2.mjs +0 -1
  293. package/dist/manifest-vp1upSSq.mjs +0 -1
  294. package/dist/modules-DO3jXCgj.mjs +0 -333
  295. package/dist/mojo-ipc-Be-ccWrc.mjs +0 -9
  296. package/dist/native-g095qhpK.mjs +0 -961
  297. package/dist/network-Dvxm7eEI.mjs +0 -7
  298. package/dist/outputPaths-D2ddHrOJ.mjs +0 -2
  299. package/dist/parse-args-ngRrvF9e.mjs +0 -1
  300. package/dist/platform-DjWbuiF8.mjs +0 -93
  301. package/dist/process-Dq5I-KZW.mjs +0 -2
  302. package/dist/proxy-DPNgM7TE.mjs +0 -2
  303. package/dist/renderer-pid-7jbTR8f5.mjs +0 -1
  304. package/dist/response-B1RuVVfD.mjs +0 -1
  305. package/dist/sourcemap-DqEW15Ao.mjs +0 -1
  306. package/dist/streaming-Dbk4eStJ.mjs +0 -1
  307. package/dist/transform-D-peM3aO.mjs +0 -103
  308. package/dist/wasm-CZajRaad.mjs +0 -174
  309. package/dist/webcrack-phEfVt5y.mjs +0 -46
  310. package/dist/workflow-wkXb3x-U.mjs +0 -101
  311. /package/dist/{chunk-88NL7fhV.mjs → rolldown-runtime-88NL7fhV.mjs} +0 -0
@@ -0,0 +1,2 @@
1
+ import{ti as e,ur as t}from"./constants-nvsLpSri.mjs";import{d as n,g as r,p as i,t as a,w as o,y as s}from"./Win32API-G7QPyckq.mjs";import{t as c}from"./factory-BeND77hf.mjs";import{i as l}from"./NativeMemoryManager.utils-CMoul2an.mjs";import{randomUUID as u}from"node:crypto";var d=class{freezes=new Map;writeHistory=[];undoneStack=[];platformProvider=null;getPortableProvider(){return this.platformProvider??=c(),this.platformProvider}readBuffer(e,t,n){if(process.platform===`win32`){let r=o(e,!1);try{return i(r,t,n)}finally{a(r)}}let r=this.getPortableProvider(),s=r.openProcess(e,!1);try{let e=r.readMemory(s,t,n);return e.data.subarray(0,e.bytesRead)}finally{r.closeProcess(s)}}writeBuffer(e,t,i){if(process.platform===`win32`){let c=o(e,!0);try{let{oldProtect:e}=r(c,t,i.length,n.READWRITE);s(c,t,i),r(c,t,i.length,e)}finally{a(c)}return}let c=this.getPortableProvider(),l=c.openProcess(e,!0),u;try{c.queryRegion(l,t)?.isWritable||(u=c.changeProtection(l,t,i.length,3).oldProtection),c.writeMemory(l,t,i)}finally{try{u!==void 0&&c.changeProtection(l,t,i.length,u)}finally{c.closeProcess(l)}}}async writeValue(t,n,r,i){let a=BigInt(n.startsWith(`0x`)?n:`0x${n}`),{patternBytes:o}=l(r,i),s=Buffer.from(o),c=this.readBuffer(t,a,s.length);this.writeBuffer(t,a,s);let d={id:u(),pid:t,address:`0x${a.toString(16).toUpperCase()}`,oldValue:Array.from(c),newValue:Array.from(s),timestamp:Date.now(),undone:!1};return this.writeHistory.push(d),this.undoneStack=[],this.writeHistory.length>e&&(this.writeHistory=this.writeHistory.slice(-e)),d}async undo(e){for(let t=this.writeHistory.length-1;t>=0;t--){let n=this.writeHistory[t];if(n.undone||e!==void 0&&n.pid!==e)continue;let r=BigInt(n.address),i=Buffer.from(n.oldValue);return this.writeBuffer(n.pid,r,i),n.undone=!0,this.undoneStack.push(n),n}return null}async redo(e){for(let t=this.undoneStack.length-1;t>=0;t--){let n=this.undoneStack[t];if(e!==void 0&&n.pid!==e)continue;this.undoneStack.splice(t,1);let r=BigInt(n.address),i=Buffer.from(n.newValue);return this.writeBuffer(n.pid,r,i),n.undone=!1,n}return null}async freeze(e,n,r,i,a){let o=BigInt(n.startsWith(`0x`)?n:`0x${n}`),{patternBytes:s}=l(r,i),c=Buffer.from(s),d=a??t,f={id:u(),pid:e,address:`0x${o.toString(16).toUpperCase()}`,value:Array.from(c),valueType:i,intervalMs:d,isActive:!0};return f.timer=setInterval(()=>{try{this.writeBuffer(e,o,c)}catch{f.isActive=!1,f.timer&&clearInterval(f.timer),this.freezes.delete(f.id)}},d),typeof f.timer.unref==`function`&&f.timer.unref(),this.freezes.set(f.id,f),f}async unfreeze(e){let t=this.freezes.get(e);return t?(t.timer&&clearInterval(t.timer),t.isActive=!1,this.freezes.delete(e),!0):!1}async unfreezeAll(){let e=0;for(let[t]of this.freezes)await this.unfreeze(t),e++;return e}listFreezes(){return Array.from(this.freezes.values()).map(({timer:e,...t})=>t)}async dumpMemory(e,t,n){let r=BigInt(t.startsWith(`0x`)?t:`0x${t}`);return this.readBuffer(e,r,n)}async dumpMemoryHex(e,t,n){let r=await this.dumpMemory(e,t,n),i=[],a=BigInt(t.startsWith(`0x`)?t:`0x${t}`);for(let e=0;e<r.length;e+=16){let t=a+BigInt(e),n=Array.from(r.subarray(e,Math.min(e+16,r.length))).map(e=>e.toString(16).padStart(2,`0`)).join(` `),o=Array.from(r.subarray(e,Math.min(e+16,r.length))).map(e=>e>=32&&e<=126?String.fromCharCode(e):`.`).join(``);i.push(`${t.toString(16).padStart(12,`0`)} ${n.padEnd(47)} |${o}|`)}return i.join(`
2
+ `)}getWriteHistory(){return[...this.writeHistory]}};const f=new d;export{d as MemoryController,f as memoryController};
@@ -1 +1 @@
1
- import{Ur as e,Wr as t}from"./constants-DMv3svps.mjs";import{n,t as r}from"./formatAddress-DAcw4Ckg.mjs";import{randomUUID as i}from"node:crypto";function a(e){switch(e){case`byte`:case`int8`:return 1;case`int16`:case`uint16`:return 2;case`int32`:case`uint32`:case`float`:return 4;case`int64`:case`uint64`:case`double`:case`pointer`:return 8;case`hex`:case`string`:return 0;default:return 4}}function o(e){switch(e){case`byte`:case`int8`:return 1;case`int16`:case`uint16`:return 2;case`int32`:case`uint32`:case`float`:return 4;case`int64`:case`uint64`:case`double`:case`pointer`:return 8;default:return 1}}function s(e){switch(e){case`byte`:return e=>e.readUInt8(0);case`int8`:return e=>e.readInt8(0);case`int16`:return e=>e.readInt16LE(0);case`uint16`:return e=>e.readUInt16LE(0);case`int32`:return e=>e.readInt32LE(0);case`uint32`:return e=>e.readUInt32LE(0);case`int64`:return e=>e.readBigInt64LE(0);case`uint64`:case`pointer`:return e=>e.readBigUInt64LE(0);case`float`:return e=>e.readFloatLE(0);case`double`:return e=>e.readDoubleLE(0);default:return e=>e.readInt32LE(0)}}function c(e){return e===`float`?(e,t)=>Math.abs(Number(e)-Number(t))<1e-6:e===`double`?(e,t)=>Math.abs(Number(e)-Number(t))<1e-12:e===`int64`||e===`uint64`||e===`pointer`?(e,t)=>e===t:(e,t)=>Number(e)===Number(t)}function l(e,t){let n=s(t),r=c(t),i=t===`int64`||t===`uint64`||t===`pointer`?(e,t)=>{let n=BigInt(e),r=BigInt(t);return n<r?-1:+(n>r)}:(e,t)=>Number(e)-Number(t);switch(e){case`exact`:return(e,t,i,a)=>i?r(n(e),n(i)):!1;case`unknown_initial`:return()=>!0;case`changed`:return(e,t,i,a)=>t?!r(n(e),n(t)):!1;case`unchanged`:return(e,t,i,a)=>t?r(n(e),n(t)):!0;case`increased`:return(e,t,r,a)=>t?i(n(e),n(t))>0:!1;case`decreased`:return(e,t,r,a)=>t?i(n(e),n(t))<0:!1;case`greater_than`:return(e,t,r,a)=>r?i(n(e),n(r))>0:!1;case`less_than`:return(e,t,r,a)=>r?i(n(e),n(r))<0:!1;case`between`:return(e,t,r,a)=>!r||!a?!1:i(n(e),n(r))>=0&&i(n(e),n(a))<=0;case`not_equal`:return(e,t,i,a)=>i?!r(n(e),n(i)):!1;default:return()=>!1}}const u=new Map;function d(e,t){let n=`${e}:${t}`,r=u.get(n);return r||(r=l(e,t),u.set(n,r)),r}function f(e,t,n,r,i,a){return d(i,a)(e,t,n,r)}var p=class{sessions=new Map;maxSessions;sessionTtlMs;constructor(n=e,r=t){this.maxSessions=n,this.sessionTtlMs=r}createSession(e,t){if(this.cleanup(),this.sessions.size>=this.maxSessions){let e=null,t=1/0;for(let[n,r]of this.sessions)r.createdAt<t&&(t=r.createdAt,e=n);e&&this.sessions.delete(e)}let n=i(),r=t.alignment??o(t.valueType),a=Date.now(),s={id:n,pid:e,valueType:t.valueType,alignment:r,createdAt:a,lastScanAt:a,scanCount:0,addresses:[],previousValues:new Map};return this.sessions.set(n,s),n}getSession(e){let t=this.sessions.get(e);if(!t)throw Error(`Scan session not found: ${e}`);if(Date.now()-t.lastScanAt>this.sessionTtlMs)throw this.sessions.delete(e),Error(`Scan session expired: ${e}`);return t}updateSession(e,t,n){let r=this.getSession(e);r.addresses=t,r.previousValues=n,r.lastScanAt=Date.now(),r.scanCount++}listSessions(){this.cleanup();let e=[],t=Date.now();for(let n of this.sessions.values()){let r=t-n.createdAt,i=Math.floor(r/6e4),a=Math.floor(r%6e4/1e3);e.push({id:n.id,pid:n.pid,valueType:n.valueType,addressCount:n.addresses.length,scanCount:n.scanCount,age:i>0?`${i}m${a}s`:`${a}s`})}return e}deleteSession(e){return this.sessions.delete(e)}cleanup(){let e=Date.now(),t=0;for(let[n,r]of this.sessions)e-r.lastScanAt>this.sessionTtlMs&&(this.sessions.delete(n),t++);return t}exportSession(e){let t=this.getSession(e),n={...t,addresses:t.addresses.map(e=>r(e)),previousValues:Array.from(t.previousValues.entries()).map(([e,t])=>[r(e),t.toString(`hex`)])};return JSON.stringify(n)}importSession(e){let t=JSON.parse(e),r=i(),a=Date.now(),o=new Map;if(Array.isArray(t.previousValues))for(let[e,r]of t.previousValues)typeof e==`string`&&typeof r==`string`&&o.set(n(e),Buffer.from(r,`hex`));let s=[];if(Array.isArray(t.addresses))for(let e of t.addresses)typeof e==`string`&&s.push(n(e));let c={id:r,pid:t.pid,valueType:t.valueType,alignment:t.alignment??4,createdAt:a,lastScanAt:a,scanCount:t.scanCount??0,addresses:s,previousValues:o};return this.sessions.set(r,c),r}};const m=new p;export{p as MemoryScanSessionManager,o as n,a as r,m as scanSessionManager,f as t};
1
+ import{Jr as e,Yr as t}from"./constants-nvsLpSri.mjs";import{n,t as r}from"./formatAddress-DAcw4Ckg.mjs";import{randomUUID as i}from"node:crypto";function a(e){switch(e){case`byte`:case`int8`:return 1;case`int16`:case`uint16`:return 2;case`int32`:case`uint32`:case`float`:return 4;case`int64`:case`uint64`:case`double`:case`pointer`:return 8;case`hex`:case`string`:return 0;default:return 4}}function o(e){switch(e){case`byte`:case`int8`:return 1;case`int16`:case`uint16`:return 2;case`int32`:case`uint32`:case`float`:return 4;case`int64`:case`uint64`:case`double`:case`pointer`:return 8;default:return 1}}function s(e){switch(e){case`byte`:return e=>e.readUInt8(0);case`int8`:return e=>e.readInt8(0);case`int16`:return e=>e.readInt16LE(0);case`uint16`:return e=>e.readUInt16LE(0);case`int32`:return e=>e.readInt32LE(0);case`uint32`:return e=>e.readUInt32LE(0);case`int64`:return e=>e.readBigInt64LE(0);case`uint64`:case`pointer`:return e=>e.readBigUInt64LE(0);case`float`:return e=>e.readFloatLE(0);case`double`:return e=>e.readDoubleLE(0);default:return e=>e.readInt32LE(0)}}function c(e){return e===`float`?(e,t)=>Math.abs(Number(e)-Number(t))<1e-6:e===`double`?(e,t)=>Math.abs(Number(e)-Number(t))<1e-12:e===`int64`||e===`uint64`||e===`pointer`?(e,t)=>e===t:(e,t)=>Number(e)===Number(t)}function l(e,t){let n=s(t),r=c(t),i=t===`int64`||t===`uint64`||t===`pointer`?(e,t)=>{let n=BigInt(e),r=BigInt(t);return n<r?-1:+(n>r)}:(e,t)=>Number(e)-Number(t);switch(e){case`exact`:return(e,t,i,a)=>i?r(n(e),n(i)):!1;case`unknown_initial`:return()=>!0;case`changed`:return(e,t,i,a)=>t?!r(n(e),n(t)):!1;case`unchanged`:return(e,t,i,a)=>t?r(n(e),n(t)):!0;case`increased`:return(e,t,r,a)=>t?i(n(e),n(t))>0:!1;case`decreased`:return(e,t,r,a)=>t?i(n(e),n(t))<0:!1;case`greater_than`:return(e,t,r,a)=>r?i(n(e),n(r))>0:!1;case`less_than`:return(e,t,r,a)=>r?i(n(e),n(r))<0:!1;case`between`:return(e,t,r,a)=>!r||!a?!1:i(n(e),n(r))>=0&&i(n(e),n(a))<=0;case`not_equal`:return(e,t,i,a)=>i?!r(n(e),n(i)):!1;default:return()=>!1}}const u=new Map;function d(e,t){let n=`${e}:${t}`,r=u.get(n);return r||(r=l(e,t),u.set(n,r)),r}function f(e,t,n,r,i,a){return d(i,a)(e,t,n,r)}var p=class{sessions=new Map;maxSessions;sessionTtlMs;constructor(n=e,r=t){this.maxSessions=n,this.sessionTtlMs=r}createSession(e,t){if(this.cleanup(),this.sessions.size>=this.maxSessions){let e=null,t=1/0;for(let[n,r]of this.sessions)r.createdAt<t&&(t=r.createdAt,e=n);e&&this.sessions.delete(e)}let n=i(),r=t.alignment??o(t.valueType),a=Date.now(),s={id:n,pid:e,valueType:t.valueType,alignment:r,createdAt:a,lastScanAt:a,scanCount:0,addresses:[],previousValues:new Map};return this.sessions.set(n,s),n}getSession(e){let t=this.sessions.get(e);if(!t)throw Error(`Scan session not found: ${e}`);if(Date.now()-t.lastScanAt>this.sessionTtlMs)throw this.sessions.delete(e),Error(`Scan session expired: ${e}`);return t}updateSession(e,t,n){let r=this.getSession(e);r.addresses=t,r.previousValues=n,r.lastScanAt=Date.now(),r.scanCount++}listSessions(){this.cleanup();let e=[],t=Date.now();for(let n of this.sessions.values()){let r=t-n.createdAt,i=Math.floor(r/6e4),a=Math.floor(r%6e4/1e3);e.push({id:n.id,pid:n.pid,valueType:n.valueType,addressCount:n.addresses.length,scanCount:n.scanCount,age:i>0?`${i}m${a}s`:`${a}s`})}return e}deleteSession(e){return this.sessions.delete(e)}cleanup(){let e=Date.now(),t=0;for(let[n,r]of this.sessions)e-r.lastScanAt>this.sessionTtlMs&&(this.sessions.delete(n),t++);return t}exportSession(e){let t=this.getSession(e),n={...t,addresses:t.addresses.map(e=>r(e)),previousValues:Array.from(t.previousValues.entries()).map(([e,t])=>[r(e),t.toString(`hex`)])};return JSON.stringify(n)}importSession(e){let t=JSON.parse(e),r=i(),a=Date.now(),o=new Map;if(Array.isArray(t.previousValues))for(let[e,r]of t.previousValues)typeof e==`string`&&typeof r==`string`&&o.set(n(e),Buffer.from(r,`hex`));let s=[];if(Array.isArray(t.addresses))for(let e of t.addresses)typeof e==`string`&&s.push(n(e));let c={id:r,pid:t.pid,valueType:t.valueType,alignment:t.alignment??4,createdAt:a,lastScanAt:a,scanCount:t.scanCount??0,addresses:s,previousValues:o};return this.sessions.set(r,c),r}};const m=new p;export{p as MemoryScanSessionManager,o as n,a as r,m as scanSessionManager,f as t};
@@ -0,0 +1 @@
1
+ import{Gr as e,Kr as t,Wr as n,Xr as r,ei as i,qr as a}from"./constants-nvsLpSri.mjs";import{t as o}from"./ToolError-g3rjWzhx.mjs";import{t as s}from"./factory-BeND77hf.mjs";import{i as c}from"./NativeMemoryManager.utils-CMoul2an.mjs";import{t as l}from"./NativeMemoryManager.impl-BIJzXMqH.mjs";import{n as u,t as d}from"./formatAddress-DAcw4Ckg.mjs";import{n as f,r as p,scanSessionManager as m,t as h}from"./MemoryScanSession-BZ2A9Ph1.mjs";var g=class{nmm;providerCache=null;get provider(){return this.providerCache||=s(),this.providerCache}set provider(e){this.providerCache=e}constructor(e){this.nmm=e}async firstScan(e,r,i){let a=performance.now(),s=i.valueType,l=p(s),u=i.alignment??f(s),h=i.maxResults??t;if(l===0)return this.patternFirstScan(e,r,s,i);let{patternBytes:g}=c(r,s===`pointer`?`uint64`:s);if(g.length===0)throw new o(`VALIDATION`,`Invalid pattern for type ${s}: "${r}"`);let _=Buffer.from(g),v=m.createSession(e,i),y=[],b=new Map,x=this.provider.openProcess(e,!1);try{let e=this.getFilteredRegions(x,i),t=e.length,n=0;for(let r of e){if(i.onProgress&&i.onProgress(n,t),n++,y.length>=h)break;let e=r.baseAddress,a=r.size,o=16*1024*1024;for(let t=0;t<a&&y.length<h;t+=o){let n=Math.min(o,a-t),r=e+BigInt(t),i;try{i=this.provider.readMemory(x,r,n).data}catch{break}if(u===l&&l>0){let e=this.getAlignStep(u),t=this.getAlignedChunkStart(r,e);for(;t<=i.length-l&&y.length<h;){let n=i.indexOf(_,t);if(n===-1)break;if(!this.isAlignedAddress(r+BigInt(n),e)){t=n+1;continue}let a=r+BigInt(n);y.push(a),b.set(a,Buffer.from(i.subarray(n,n+l))),t=n+e}}else{let e=this.getAlignStep(u),t=this.getAlignedChunkStart(r,e);for(let n=t;n<=i.length-l;n+=e)if(Buffer.compare(i.subarray(n,n+l),_)===0){let e=r+BigInt(n);if(y.push(e),b.set(e,Buffer.from(i.subarray(n,n+l))),y.length>=h)break}}}}}finally{this.provider.closeProcess(x)}m.updateSession(v,y,b);let S=`${(performance.now()-a).toFixed(1)}ms`,C=y.slice(0,n).map(d);return{sessionId:v,matchCount:y.length,scanNumber:1,addresses:C,totalMatches:y.length,truncated:y.length>n,elapsed:S}}async nextScan(e,t,r,i){let a=performance.now(),s=m.getSession(e),{pid:l,valueType:u,addresses:f,previousValues:g}=s,_=p(u);if(_===0)throw new o(`VALIDATION`,`Next-scan is not supported for variable-length types (hex/string)`);let v=null,y=null;if(r!==void 0){let{patternBytes:e}=c(r,u===`pointer`?`uint64`:u);v=Buffer.from(e)}if(i!==void 0){let{patternBytes:e}=c(i,u===`pointer`?`uint64`:u);y=Buffer.from(e)}let b=[],x=new Map,S=this.provider.openProcess(l,!1);try{for(let e of f){let n;try{n=this.provider.readMemory(S,e,_).data}catch{continue}let r=g.get(e)??null;h(n,r,v,y,t,u)&&(b.push(e),x.set(e,Buffer.from(n)))}}finally{this.provider.closeProcess(S)}m.updateSession(e,b,x);let C=`${(performance.now()-a).toFixed(1)}ms`,w=b.slice(0,n).map(d);return{sessionId:e,matchCount:b.length,scanNumber:s.scanCount,addresses:w,totalMatches:b.length,truncated:b.length>n,elapsed:C}}async unknownInitialScan(e,t){let i=performance.now(),a=t.valueType,s=p(a),c=t.alignment??f(a),l=t.maxResults??r;if(s===0)throw new o(`VALIDATION`,`Unknown initial scan is not supported for variable-length types`);let u=m.createSession(e,t),h=[],g=new Map,_=this.provider.openProcess(e,!1);try{let e=this.getFilteredRegions(_,t),n=e.length,r=0;for(let i of e){if(t.onProgress&&t.onProgress(r,n),r++,h.length>=l)break;let e=i.baseAddress,a=i.size,o=16*1024*1024;for(let t=0;t<a&&h.length<l;t+=o){let n=Math.min(o,a-t),r=e+BigInt(t),i;try{i=this.provider.readMemory(_,r,n).data}catch{break}let u=this.getAlignStep(c),d=this.getAlignedChunkStart(r,u);for(let e=d;e<=i.length-s;e+=u){let t=r+BigInt(e);if(h.push(t),g.set(t,Buffer.from(i.subarray(e,e+s))),h.length>=l)break}}}}finally{this.provider.closeProcess(_)}m.updateSession(u,h,g);let v=`${(performance.now()-i).toFixed(1)}ms`;return{sessionId:u,matchCount:h.length,scanNumber:1,addresses:h.slice(0,n).map(d),totalMatches:h.length,truncated:h.length>n,elapsed:v}}async pointerScan(e,t,r={}){let i=performance.now(),o=r.maxResults??a,s=u(t),c={valueType:`pointer`,alignment:8,regionFilter:{moduleOnly:r.moduleOnly}},l=m.createSession(e,c),f=[],p=this.provider.openProcess(e,!1);try{let e=this.getFilteredRegions(p,c);for(let t of e){if(f.length>=o)break;let e=t.baseAddress,n=t.size,r=16*1024*1024;for(let t=0;t<n&&f.length<o;t+=r){let i=Math.min(r,n-t),a=e+BigInt(t),c;try{c=this.provider.readMemory(p,a,i).data}catch{break}for(let e=0;e<=c.length-8;e+=8){let t=c.readBigUInt64LE(e);if(Number(t>s?t-s:s-t)<=4096){let n=a+BigInt(e),r=t>=s?Number(t-s):-Number(s-t);if(f.push({address:d(n),value:d(t),offsetFromTarget:r}),f.length>=o)break}}}}}finally{this.provider.closeProcess(p)}let h=f.map(e=>u(e.address));m.updateSession(l,h,new Map);let g=`${(performance.now()-i).toFixed(1)}ms`;return{sessionId:l,pointers:f.slice(0,n),totalFound:f.length,elapsed:g}}async groupScan(r,i,a){let s=performance.now();if(i.length===0)throw new o(`VALIDATION`,`Group scan requires at least one value pattern`);let l=Math.max(...i.map(e=>e.offset+p(e.type)));if(l>e)throw new o(`VALIDATION`,`Group pattern too large: ${l} bytes (max ${e})`);let u=Array.from({length:l},()=>0),f=Array.from({length:l},()=>0);for(let e of i){let t=e.type===`pointer`?`uint64`:e.type,{patternBytes:n,mask:r}=c(e.value,t);for(let t=0;t<n.length;t++)u[e.offset+t]=n[t],f[e.offset+t]=r[t]}let h=a?.alignment??4,g=a?.maxResults??t,_={valueType:`int32`,alignment:h},v=m.createSession(r,_),y=[],b=this.provider.openProcess(r,!1);try{let e=this.getFilteredRegions(b,_);for(let t of e){if(y.length>=g)break;let e=t.baseAddress,n=t.size,r=16*1024*1024,i=l-1;for(let t=0;t<n&&y.length<g;t+=r){let a=Math.min(r+i,n-t),o=e+BigInt(t),s;try{s=this.provider.readMemory(b,o,a).data}catch{break}let c=this.getAlignStep(h),d=this.getAlignedChunkStart(o,c);for(let e=d;e<=s.length-l;e+=c){let t=!0;for(let n=0;n<l;n++)if(f[n]===1&&s[e+n]!==u[n]){t=!1;break}if(t){let t=o+BigInt(e);if(y.push(t),y.length>=g)break}}}}}finally{this.provider.closeProcess(b)}m.updateSession(v,y,new Map);let x=`${(performance.now()-s).toFixed(1)}ms`;return{sessionId:v,matchCount:y.length,scanNumber:1,addresses:y.slice(0,n).map(d),totalMatches:y.length,truncated:y.length>n,elapsed:x}}async aobScan(e,t,n={}){let r=performance.now(),i=n.maxResults??1e4,a=[],o=t.trim().split(/\s+/);for(let e of o)if(e===`??`||e===`?`||e===`???`)a.push(null);else{let t=e.startsWith(`0x`)||e.startsWith(`0X`)?e.slice(2):e;if(t.length!==2||!/^[0-9a-fA-F]{2}$/.test(t))throw Error(`Invalid AOB pattern byte: "${e}" (expected 2 hex chars or "??")`);a.push(parseInt(t,16))}if(a.length===0)throw Error(`AOB pattern must contain at least one byte or wildcard`);let s=Buffer.from(a.map(e=>e??0)),c=a.map(e=>e!==null),l=[],u=this.provider.openProcess(e,!1);try{let e=this.getFilteredRegions(u,{valueType:`byte`});if(n.moduleName){let t=n.moduleName.toLowerCase(),i=this.provider.enumerateModules(u).filter(e=>e.name.toLowerCase().includes(t)).map(e=>({baseAddress:e.baseAddress,size:e.size}));if(i.length===0)return{matches:[],totalMatches:0,elapsed:`${(performance.now()-r).toFixed(1)}ms`};e=e.filter(e=>i.some(t=>e.baseAddress>=t.baseAddress&&e.baseAddress<t.baseAddress+BigInt(t.size)))}let t=a.length;for(let n of e){if(l.length>=i)break;let e=16*1024*1024;for(let r=0;r<n.size&&l.length<i;r+=e){let a=Math.min(e,n.size-r),o=n.baseAddress+BigInt(r),d;try{d=this.provider.readMemory(u,o,a).data}catch{break}for(let e=0;e<=d.length-t&&l.length<i;e++){let n=!0;for(let r=0;r<t;r++)if(c[r]&&d[e+r]!==s[r]){n=!1;break}n&&l.push(o+BigInt(e))}}}}finally{this.provider.closeProcess(u)}let f=`${(performance.now()-r).toFixed(1)}ms`;return{matches:l.map(d),totalMatches:l.length,elapsed:f}}getAlignStep(e){return e>0?e:1}getAlignedChunkStart(e,t){let n=BigInt(t),r=e%n;return r===0n?0:Number(n-r)}isAlignedAddress(e,t){return e%BigInt(t)===0n}async patternFirstScan(e,r,i,a){let s=performance.now(),c=i===`hex`?`hex`:`string`,l=await this.nmm.scanMemory(e,r,c);if(!l.success)throw new o(`RUNTIME`,l.error??`Scan failed`);let f=m.createSession(e,a),p=a.maxResults??t,h=l.addresses.slice(0,p).map(u);m.updateSession(f,h,new Map);let g=`${(performance.now()-s).toFixed(1)}ms`;return{sessionId:f,matchCount:h.length,scanNumber:1,addresses:h.slice(0,n).map(d),totalMatches:l.addresses.length,truncated:h.length>n,elapsed:g}}getFilteredRegions(e,t){let n=[],r=0n,a=i,o=t.regionFilter;for(;r<a;){let t=this.provider.queryRegion(e,r);if(!t)break;let i=t.size;if(t.isReadable&&i>0&&i<=2**53-1){let e=!0;o?.writable&&!t.isWritable&&(e=!1),o?.executable&&!t.isExecutable&&(e=!1),o?.moduleOnly&&t.type!==`image`&&(e=!1),e&&n.push({baseAddress:t.baseAddress,size:i})}r=t.baseAddress+BigInt(t.size)}return n}};const _=new g(l);export{g as MemoryScanner,_ as memoryScanner};
@@ -0,0 +1 @@
1
+ import{t as e}from"./logger-BGCcd-jJ.mjs";import{ei as t}from"./constants-nvsLpSri.mjs";import{n}from"./concurrency-Dehnw4JC.mjs";import{C as r,S as i}from"./Win32API-G7QPyckq.mjs";import{t as a}from"./factory-BeND77hf.mjs";import{i as o,t as s}from"./NativeMemoryManager.utils-CMoul2an.mjs";import{promisify as c}from"node:util";import{exec as l}from"node:child_process";async function u(e){if(process.platform===`darwin`)return d(e);if(process.platform===`linux`)return{available:!0};if(!r())return{available:!1,reason:`Native memory operations require Windows, macOS, or Linux. Current platform: ${process.platform}`};if(!i())return{available:!1,reason:`koffi library not available. Install with: pnpm add koffi`};try{let{stdout:t}=await e(`powershell.exe -NoProfile -Command "([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)"`,{timeout:5e3});if(t.trim().toLowerCase()!==`true`)return{available:!1,reason:`Native memory operations require Administrator privileges. Run as Administrator.`}}catch{return{available:!1,reason:`Failed to check Administrator privileges.`}}return{available:!0}}async function d(e){try{(await import(`koffi`)).default.load(`/usr/lib/libSystem.B.dylib`).unload()}catch{return{available:!1,reason:`koffi library cannot load libSystem.B.dylib. Install koffi with: pnpm add koffi`}}let t=``;try{let{stdout:n}=await e(`csrutil status 2>&1 || true`,{timeout:5e3});t=n.trim()}catch{}return process.getuid&&process.getuid()!==0?{available:!1,reason:`macOS memory operations require root privileges for task_for_pid. Run with: sudo node <your-script>.${t?` SIP status: ${t}`:``}`}:{available:!0}}const f=c(l);function p(e,t,n,r,i=16777216){if(t.length===0||e.regionSize<t.length||i<=0)return[];let a=Math.max(t.length-1,0),o=Buffer.alloc(0),c=[];for(let l=0;l<e.regionSize;l+=i){let u=Math.min(i,e.regionSize-l),d=r(e.baseAddress+BigInt(l),u),f=o.length>0?Buffer.concat([o,d]):d,p=s(f,t,n);for(let t of p){let n=l+t-o.length;c.push(e.baseAddress+BigInt(n))}if(a===0||l+u>=e.regionSize){o=Buffer.alloc(0);continue}let m=Math.min(a,f.length);o=f.subarray(f.length-m)}return c}var m=class{providerCache=null;get provider(){return this.providerCache||=a(),this.providerCache}set provider(e){this.providerCache=e}async checkAvailability(){return u(f)}async readMemory(t,n,r){try{let e=BigInt(n.startsWith(`0x`)?n:`0x${n}`),i=this.provider.openProcess(t,!1);try{let{data:t}=this.provider.readMemory(i,e,r);return{success:!0,data:t.toString(`hex`).toUpperCase().match(/.{2}/g)?.join(` `)||``}}finally{this.provider.closeProcess(i)}}catch(i){return e.error(`Native memory read failed`,{pid:t,address:n,size:r,error:i instanceof Error?i.message:String(i)}),{success:!1,error:i instanceof Error?i.message:String(i)}}}async writeMemory(t,n,r,i=`hex`){try{let e=BigInt(n.startsWith(`0x`)?n:`0x${n}`),a;a=i===`base64`?Buffer.from(r,`base64`):Buffer.from(r.replace(/\s/g,``),`hex`);let o=this.provider.openProcess(t,!0);try{let{bytesWritten:t}=this.provider.writeMemory(o,e,a);return{success:!0,bytesWritten:t}}finally{this.provider.closeProcess(o)}}catch(a){return e.error(`Native memory write failed`,{pid:t,address:n,encoding:i,dataLength:r.length,error:a instanceof Error?a.message:String(a)}),{success:!1,error:a instanceof Error?a.message:String(a)}}}async enumerateRegions(n){try{let e=this.provider.openProcess(n,!1),r=[];try{let n=0n,i=t;for(;n<i;){let t=this.provider.queryRegion(e,n);if(!t)break;r.push(h(t)),n=t.baseAddress+BigInt(t.size)}return{success:!0,regions:r}}finally{this.provider.closeProcess(e)}}catch(t){return e.error(`Native region enumeration failed`,{pid:n,error:t instanceof Error?t.message:String(t)}),{success:!1,error:t instanceof Error?t.message:String(t)}}}async checkMemoryProtection(t,n){try{let e=BigInt(n.startsWith(`0x`)?n:`0x${n}`),r=this.provider.openProcess(t,!1);try{let t=this.provider.queryRegion(r,e);return t?{success:!0,protection:g(t.protection),isWritable:t.isWritable,isReadable:t.isReadable,isExecutable:t.isExecutable,regionStart:`0x${t.baseAddress.toString(16).toUpperCase()}`,regionSize:t.size}:{success:!1,error:`Failed to query memory region`}}finally{this.provider.closeProcess(r)}}catch(r){return e.error(`Native protection check failed`,{pid:t,address:n,error:r instanceof Error?r.message:String(r)}),{success:!1,error:r instanceof Error?r.message:String(r)}}}async scanMemory(r,i,a=`hex`){try{let{patternBytes:e,mask:s}=o(i,a);if(e.length===0)return{success:!1,addresses:[],error:`Invalid pattern`};let c=1e4,l=[],u=this.provider.openProcess(r,!1),d=[];try{let r=0n,i=t;for(;r<i;){let e=this.provider.queryRegion(u,r);if(!e)break;e.isReadable&&e.size>0&&e.size<=2**53-1&&l.push({baseAddress:e.baseAddress,regionSize:e.size}),r=e.baseAddress+BigInt(e.size)}let a=this.provider;d=await Promise.all(l.map(t=>n(async()=>{try{return p(t,e,s,(e,t)=>a.readMemory(u,e,t).data)}catch{return[]}})))}finally{this.provider.closeProcess(u)}let f=[];for(let e of d){for(let t of e)if(f.push(`0x${t.toString(16).toUpperCase()}`),f.length>=c)break;if(f.length>=c)break}return{success:!0,addresses:f,stats:{patternLength:e.length,resultsFound:f.length}}}catch(t){return e.error(`Native memory scan failed`,{pid:r,patternType:a,patternLength:i.length,error:t instanceof Error?t.message:String(t)}),{success:!1,addresses:[],error:t instanceof Error?t.message:String(t)}}}async enumerateModules(t){try{let e=this.provider.openProcess(t,!1);try{return{success:!0,modules:this.provider.enumerateModules(e).map(e=>({name:e.name,baseAddress:`0x${e.baseAddress.toString(16).toUpperCase()}`,size:e.size}))}}finally{this.provider.closeProcess(e)}}catch(n){return e.error(`Native module enumeration failed`,{pid:t,error:n instanceof Error?n.message:String(n)}),{success:!1,error:n instanceof Error?n.message:String(n)}}}async injectDll(t,n){if(process.platform!==`win32`)return{success:!1,error:`DLL injection is only supported on Windows`};try{let{openProcessForMemory:e,CloseHandle:r,WriteProcessMemory:i,VirtualAllocEx:a,CreateRemoteThread:o,GetModuleHandle:s,GetProcAddress:c,PAGE:l,MEM:u}=await import(`./Win32API-G7QPyckq.mjs`).then(e=>e.v),d=e(t,!0);try{let e=c(s(`kernel32.dll`),`LoadLibraryA`);if(!e)return{success:!1,error:`Failed to get LoadLibraryA address`};let t=Buffer.from(n+`\0`,`ascii`),f=a(d,0n,t.length,u.COMMIT|u.RESERVE,l.READWRITE);if(!f)return{success:!1,error:`Failed to allocate remote memory`};i(d,f,t);let{handle:p,threadId:m}=o(d,e,f);return p?(r(p),{success:!0,remoteThreadId:m}):{success:!1,error:`Failed to create remote thread`}}finally{r(d)}}catch(r){return e.error(`Native DLL injection failed`,{pid:t,dllPath:n,error:r instanceof Error?r.message:String(r)}),{success:!1,error:r instanceof Error?r.message:String(r)}}}async injectShellcode(t,n,r=`hex`){if(process.platform!==`win32`)return{success:!1,error:`Shellcode injection is only supported on Windows`};try{let e;e=r===`base64`?Buffer.from(n,`base64`):Buffer.from(n.replace(/\s/g,``),`hex`);let{openProcessForMemory:i,CloseHandle:a,WriteProcessMemory:o,VirtualAllocEx:s,VirtualProtectEx:c,CreateRemoteThread:l,PAGE:u,MEM:d}=await import(`./Win32API-G7QPyckq.mjs`).then(e=>e.v),f=i(t,!0);try{let t=s(f,0n,e.length,d.COMMIT|d.RESERVE,u.READWRITE);if(!t)return{success:!1,error:`Failed to allocate remote memory`};o(f,t,e);let{success:n}=c(f,t,e.length,u.EXECUTE_READWRITE);if(!n)return{success:!1,error:`Failed to change memory protection`};let{handle:r,threadId:i}=l(f,t,0n);return r?(a(r),{success:!0,remoteThreadId:i}):{success:!1,error:`Failed to create remote thread`}}finally{a(f)}}catch(i){return e.error(`Native shellcode injection failed`,{pid:t,encoding:r,shellcodeLength:n.length,error:i instanceof Error?i.message:String(i)}),{success:!1,error:i instanceof Error?i.message:String(i)}}}async checkDebugPort(t){if(process.platform!==`win32`)return{success:!1,error:`Debug port check is only supported on Windows`};try{let{openProcessForMemory:e,CloseHandle:n,NtQueryInformationProcess:r}=await import(`./Win32API-G7QPyckq.mjs`).then(e=>e.v),i=e(t,!1);try{let{status:e,debugPort:t}=r(i,7);return e===0?{success:!0,isDebugged:t!==0}:{success:!1,error:`NtQueryInformationProcess failed with status 0x${e.toString(16)}`}}finally{n(i)}}catch(n){return e.error(`Native debug port check failed`,{pid:t,error:n instanceof Error?n.message:String(n)}),{success:!1,error:n instanceof Error?n.message:String(n)}}}};function h(e){return{baseAddress:`0x${e.baseAddress.toString(16).toUpperCase()}`,size:e.size,state:e.state.toUpperCase(),protection:g(e.protection),isReadable:e.isReadable,isWritable:e.isWritable,isExecutable:e.isExecutable,type:e.type.toUpperCase()}}function g(e){if(e===0)return`NOACCESS`;let t=[],n=(e&1)!=0,r=(e&2)!=0,i=(e&4)!=0,a=(e&8)!=0;return n&&r&&i?t.push(`RWX`):n&&i?t.push(`RX`):n&&r?t.push(`RW`):n?t.push(`R`):i&&t.push(`X`),a&&t.push(`GUARD`),t.join(` `)||`UNKNOWN`}const _=new m;export{_ as t};
@@ -1 +1 @@
1
- import{u as e,v as t}from"./Win32API-DoP3MMHS.mjs";function n(){return t()}function r(e,t){let n=[],r=[];switch(t){case`hex`:{let t=e.trim().split(/\s+/);for(let e of t)if(e===`??`||e===`**`||e===`?`)n.push(0),r.push(0);else{let t=parseInt(e,16);isNaN(t)||(n.push(t),r.push(1))}break}case`int32`:{let t=parseInt(e);if(!isNaN(t)){let e=Buffer.allocUnsafe(4);e.writeInt32LE(t,0),n.push(...e),r.push(1,1,1,1)}break}case`int64`:{let t=BigInt(e),i=Buffer.allocUnsafe(8);i.writeBigInt64LE(t,0),n.push(...i),r.push(1,1,1,1,1,1,1,1);break}case`float`:{let t=parseFloat(e);if(!isNaN(t)){let e=Buffer.allocUnsafe(4);e.writeFloatLE(t,0),n.push(...e),r.push(1,1,1,1)}break}case`double`:{let t=parseFloat(e);if(!isNaN(t)){let e=Buffer.allocUnsafe(8);e.writeDoubleLE(t,0),n.push(...e),r.push(1,1,1,1,1,1,1,1)}break}case`string`:{let t=Buffer.from(e,`utf8`);n.push(...t),r.push(...t.map(()=>1));break}case`byte`:{let t=parseInt(e)&255;n.push(t),r.push(1);break}case`int8`:{let t=parseInt(e),i=Buffer.allocUnsafe(1);i.writeInt8(t,0),n.push(...i),r.push(1);break}case`int16`:{let t=parseInt(e),i=Buffer.allocUnsafe(2);i.writeInt16LE(t,0),n.push(...i),r.push(1,1);break}case`uint16`:{let t=parseInt(e),i=Buffer.allocUnsafe(2);i.writeUInt16LE(t,0),n.push(...i),r.push(1,1);break}case`uint32`:{let t=parseInt(e)>>>0,i=Buffer.allocUnsafe(4);i.writeUInt32LE(t,0),n.push(...i),r.push(1,1,1,1);break}case`uint64`:case`pointer`:{let t=BigInt(e),i=Buffer.allocUnsafe(8);i.writeBigUInt64LE(t,0),n.push(...i),r.push(1,1,1,1,1,1,1,1);break}}return{patternBytes:n,mask:r}}function i(e,t){let n=[],r=t.length;if(r===0||e.length<r)return n;let i=r-1,a=new Uint32Array(256);a.fill(r);for(let e=0;e<i;e++){let n=t[e];n!==void 0&&(a[n]=i-e)}let o=0;for(;o<=e.length-r;){let s=i;for(;s>=0&&e[o+s]===t[s];)s--;if(s<0){n.push(o),o+=1;continue}let c=e[o+i];if(c===void 0)break;o+=a[c]??r}return n}function a(e,t,n){if(t.length===0)return[];if(n.every(e=>e===1))return i(e,t);let r=[];for(let i=0;i<=e.length-t.length;i++){let a=!0;for(let r=0;r<t.length;r++)if(n[r]===1&&e[i+r]!==t[r]){a=!1;break}a&&r.push(i)}return r}function o(t){return(t&e.EXECUTE)!==0||(t&e.EXECUTE_READ)!==0||(t&e.EXECUTE_READWRITE)!==0}export{r as i,o as n,n as r,a as t};
1
+ import{S as e,d as t}from"./Win32API-G7QPyckq.mjs";function n(){return e()}function r(e,t){let n=[],r=[];switch(t){case`hex`:{let t=e.trim().split(/\s+/);for(let e of t)if(e===`??`||e===`**`||e===`?`)n.push(0),r.push(0);else{let t=parseInt(e,16);isNaN(t)||(n.push(t),r.push(1))}break}case`int32`:{let t=parseInt(e);if(!isNaN(t)){let e=Buffer.allocUnsafe(4);e.writeInt32LE(t,0),n.push(...e),r.push(1,1,1,1)}break}case`int64`:{let t=BigInt(e),i=Buffer.allocUnsafe(8);i.writeBigInt64LE(t,0),n.push(...i),r.push(1,1,1,1,1,1,1,1);break}case`float`:{let t=parseFloat(e);if(!isNaN(t)){let e=Buffer.allocUnsafe(4);e.writeFloatLE(t,0),n.push(...e),r.push(1,1,1,1)}break}case`double`:{let t=parseFloat(e);if(!isNaN(t)){let e=Buffer.allocUnsafe(8);e.writeDoubleLE(t,0),n.push(...e),r.push(1,1,1,1,1,1,1,1)}break}case`string`:{let t=Buffer.from(e,`utf8`);n.push(...t),r.push(...t.map(()=>1));break}case`byte`:{let t=parseInt(e)&255;n.push(t),r.push(1);break}case`int8`:{let t=parseInt(e),i=Buffer.allocUnsafe(1);i.writeInt8(t,0),n.push(...i),r.push(1);break}case`int16`:{let t=parseInt(e),i=Buffer.allocUnsafe(2);i.writeInt16LE(t,0),n.push(...i),r.push(1,1);break}case`uint16`:{let t=parseInt(e),i=Buffer.allocUnsafe(2);i.writeUInt16LE(t,0),n.push(...i),r.push(1,1);break}case`uint32`:{let t=parseInt(e)>>>0,i=Buffer.allocUnsafe(4);i.writeUInt32LE(t,0),n.push(...i),r.push(1,1,1,1);break}case`uint64`:case`pointer`:{let t=BigInt(e),i=Buffer.allocUnsafe(8);i.writeBigUInt64LE(t,0),n.push(...i),r.push(1,1,1,1,1,1,1,1);break}}return{patternBytes:n,mask:r}}function i(e,t){let n=[],r=t.length;if(r===0||e.length<r)return n;let i=r-1,a=new Uint32Array(256);a.fill(r);for(let e=0;e<i;e++){let n=t[e];n!==void 0&&(a[n]=i-e)}let o=0;for(;o<=e.length-r;){let s=i;for(;s>=0&&e[o+s]===t[s];)s--;if(s<0){n.push(o),o+=1;continue}let c=e[o+i];if(c===void 0)break;o+=a[c]??r}return n}function a(e,t,n){if(t.length===0)return[];if(n.every(e=>e===1))return i(e,t);let r=[];for(let i=0;i<=e.length-t.length;i++){let a=!0;for(let r=0;r<t.length;r++)if(n[r]===1&&e[i+r]!==t[r]){a=!1;break}a&&r.push(i)}return r}function o(e){return(e&t.EXECUTE)!==0||(e&t.EXECUTE_READ)!==0||(e&t.EXECUTE_READWRITE)!==0}export{r as i,o as n,n as r,a as t};
@@ -0,0 +1 @@
1
+ import{t as e}from"./rolldown-runtime-88NL7fhV.mjs";import{t}from"./logger-BGCcd-jJ.mjs";import{a as n,i as r,n as i,p as a,s as o,t as s,w as c}from"./Win32API-G7QPyckq.mjs";import{n as l,t as u}from"./HookPatternScanner-yx4vJ9sd.mjs";import{promises as d}from"node:fs";const f={CNT_CODE:32,CNT_INITIALIZED_DATA:64,CNT_UNINITIALIZED_DATA:128,MEM_EXECUTE:536870912,MEM_READ:1073741824,MEM_WRITE:2147483648},p={EXPORT:0,IMPORT:1,RESOURCE:2,EXCEPTION:3,IAT:12,DELAY_IMPORT:13};var m=e({PEAnalyzer:()=>_,peAnalyzer:()=>v});const h=23117,g=17744;var _=class{async parseHeaders(e,t){let n=BigInt(t),r=c(e);try{let e=a(r,n,64),t=e.readUInt16LE(0);if(t!==h)throw Error(`Invalid DOS header: expected 0x5A4D, got 0x${t.toString(16)}`);let i=e.readUInt32LE(60),o=a(r,n+BigInt(i),264),s=o.readUInt32LE(0);if(s!==g)throw Error(`Invalid PE signature: expected 0x4550, got 0x${s.toString(16)}`);let c=o.readUInt16LE(4),l=o.readUInt16LE(6),u=o.readUInt32LE(8),d=o.readUInt16LE(22),f=o.readUInt16LE(24),p=f===523,m,_,v,y;return p?(_=o.readUInt32LE(40),m=o.readBigUInt64LE(48),v=o.readUInt32LE(80),y=o.readUInt32LE(132)):(_=o.readUInt32LE(40),m=BigInt(o.readUInt32LE(52)),v=o.readUInt32LE(80),y=o.readUInt32LE(116)),{dosHeader:{e_magic:t,e_lfanew:i},ntSignature:s,fileHeader:{machine:c,numberOfSections:l,timeDateStamp:u,characteristics:d},optionalHeader:{magic:f,imageBase:`0x${m.toString(16)}`,entryPoint:`0x${_.toString(16)}`,sizeOfImage:v,numberOfRvaAndSizes:y}}}finally{s(r)}}async listSections(e,t){let n=BigInt(t),r=c(e);try{let e=await this.readCoreHeaders(r,n),t=[];for(let i=0;i<e.numSections;i++){let o=e.firstSectionOffset+i*40,s=a(r,n+BigInt(o),40),c=s.indexOf(0),l=s.subarray(0,c>0&&c<=8?c:8).toString(`ascii`),u=s.readUInt32LE(8),d=s.readUInt32LE(12),p=s.readUInt32LE(16),m=s.readUInt32LE(36);t.push({name:l,virtualAddress:`0x${d.toString(16)}`,virtualSize:u,rawSize:p,characteristics:m,isExecutable:(m&f.MEM_EXECUTE)!==0,isWritable:(m&f.MEM_WRITE)!==0,isReadable:(m&f.MEM_READ)!==0})}return t}finally{s(r)}}async parseImports(e,t){let n=BigInt(t),r=c(e);try{let e=await this.readCoreHeaders(r,n),t=e.dataDirectories[p.IMPORT];if(!t||t.rva===0)return[];let i=[],o=t.rva;for(let t=0;t<500;t++){let t=a(r,n+BigInt(o),20),s=t.readUInt32LE(12);if(s===0)break;let c=a(r,n+BigInt(s),256),l=c.indexOf(0),u=c.subarray(0,l>0?l:256).toString(`ascii`),d=t.readUInt32LE(0)||t.readUInt32LE(16),f=this.readThunkArray(r,n,d,e.isPE32Plus);i.push({dllName:u,functions:f}),o+=20}return i}finally{s(r)}}async parseExports(e,t){let n=BigInt(t),r=c(e);try{let e=(await this.readCoreHeaders(r,n)).dataDirectories[p.EXPORT];if(!e||e.rva===0)return[];let t=a(r,n+BigInt(e.rva),40),i=t.readUInt32LE(24),o=t.readUInt32LE(28),s=t.readUInt32LE(32),c=t.readUInt32LE(36),l=t.readUInt32LE(16),u=[],d=a(r,n+BigInt(s),i*4),f=a(r,n+BigInt(c),i*2);for(let t=0;t<Math.min(i,2e3);t++){let i=d.readUInt32LE(t*4),s=f.readUInt16LE(t*2),c=a(r,n+BigInt(i),256),p=c.indexOf(0),m=c.subarray(0,p>0?p:256).toString(`ascii`),h=a(r,n+BigInt(o+s*4),4).readUInt32LE(0),g=null;if(h>=e.rva&&h<e.rva+e.size){let e=a(r,n+BigInt(h),256),t=e.indexOf(0);g=e.subarray(0,t>0?t:256).toString(`ascii`)}u.push({name:m,ordinal:l+s,rva:`0x${h.toString(16)}`,forwardedTo:g})}return u}finally{s(r)}}async detectInlineHooks(e,n){let r=c(e),i=[];try{let o=this.enumerateModulesInternal(r),s=n?o.filter(e=>e.name.toLowerCase().includes(n.toLowerCase())):o;for(let n of s)try{let t=await d.readFile(n.path),o=await this.parseExports(e,n.base);for(let e of o){let o=parseInt(e.rva,16);if(o===0||e.forwardedTo)continue;let s=a(r,BigInt(n.base)+BigInt(o),16),c=this.rvaToFileOffset(t,o);if(c<0||c+16>t.length)continue;let l=t.subarray(c,c+16);if(!s.equals(l)){let t=this.classifyHook(s),r=this.decodeJumpTarget(s,BigInt(n.base)+BigInt(o));i.push({address:`0x${(BigInt(n.base)+BigInt(o)).toString(16)}`,moduleName:n.name,functionName:e.name,originalBytes:Array.from(l),currentBytes:Array.from(s),hookType:t,jumpTarget:r})}}}catch(e){t.debug(`Hook check skipped for ${n.name}: ${e}`)}}finally{s(r)}return i}async detectIATHooks(e,n){let r=c(e),i=[];try{let e=this.enumerateModulesInternal(r),o=n?e.filter(e=>e.name.toLowerCase().includes(n.toLowerCase())):e;for(let n of o)try{let t=BigInt(n.base),o=await this.readCoreHeaders(r,t),s=o.dataDirectories[p.IMPORT];if(!s||s.rva===0)continue;let c=o.isPE32Plus?8:4,l=o.isPE32Plus?9223372036854775808n:2147483648n,u=s.rva;for(let s=0;s<500;s++){let s=a(r,t+BigInt(u),20),d=s.readUInt32LE(12);if(d===0)break;let f=s.readUInt32LE(16),p=s.readUInt32LE(0),m=a(r,t+BigInt(d),256),h=m.indexOf(0),g=m.subarray(0,h>0?h:256).toString(`ascii`),_=g.toLowerCase().replace(/\.dll$/i,``),v=e.find(e=>e.name.toLowerCase()===g.toLowerCase())??e.find(e=>e.name.toLowerCase().replace(/\.dll$/i,``)===_),y=v?BigInt(v.base):0n,b=v?y+BigInt(v.size):0n;for(let s=0;s<2e3;s++){let u=t+BigInt(f+s*c),d=a(r,u,c),m=o.isPE32Plus?d.readBigUInt64LE(0):BigInt(d.readUInt32LE(0));if(m===0n)break;let h=`Ordinal#0`,_=p||f;if(_){let e=a(r,t+BigInt(_+s*c),c),n=o.isPE32Plus?e.readBigUInt64LE(0):BigInt(e.readUInt32LE(0));if((n&l)!==0n)h=`Ordinal#${Number(n&65535n)}`;else if(n!==0n){let e=a(r,t+BigInt(Number(n)),258),i=e.indexOf(0,2);h=e.subarray(2,i>2?i:258).toString(`ascii`)}}if(v&&(m<y||m>=b)){let t=null;for(let n of e){let e=BigInt(n.base);if(m>=e&&m<e+BigInt(n.size)){t=n.name;break}}i.push({moduleName:n.name,importDll:g,functionName:h,iatAddress:`0x${u.toString(16)}`,expectedModule:v.name,actualTarget:`0x${m.toString(16)}`,actualModule:t})}}u+=20}}catch(e){t.debug(`IAT hook check skipped for ${n.name}: ${e}`)}}finally{s(r)}return i}async analyzeSections(e,t){let n=await this.listSections(e,t),r=[];for(let e of n)e.isReadable&&e.isWritable&&e.isExecutable?r.push({sectionName:e.name,anomalyType:`rwx`,severity:`high`,details:`Section ${e.name} has Read+Write+Execute permissions — unusual and potentially malicious`}):e.isWritable&&e.isExecutable?r.push({sectionName:e.name,anomalyType:`writable_code`,severity:`high`,details:`Section ${e.name} is writable and executable — code may be self-modifying or packed`}):e.isExecutable&&!e.name.startsWith(`.text`)&&!e.name.startsWith(`.code`)&&(e.characteristics&f.CNT_INITIALIZED_DATA)!==0&&r.push({sectionName:e.name,anomalyType:`executable_data`,severity:`medium`,details:`Data section ${e.name} has execute permission`});return r}async readCoreHeaders(e,t){let n=a(e,t,64).readUInt32LE(60),r=a(e,t+BigInt(n),264),i=r.readUInt16LE(6),o=r.readUInt16LE(20),s=r.readUInt16LE(24)===523,c=s?r.readUInt32LE(132):r.readUInt32LE(116),l=s?136:120,u=[];for(let e=0;e<Math.min(c,16);e++){let t=l+e*8;t+8<=r.length&&u.push({rva:r.readUInt32LE(t),size:r.readUInt32LE(t+4)})}return{numSections:i,isPE32Plus:s,firstSectionOffset:n+4+20+o,dataDirectories:u}}readThunkArray(e,t,n,r){let i=r?8:4,o=[],s=r?9223372036854775808n:2147483648n;for(let c=0;c<2e3;c++){let l=a(e,t+BigInt(n+c*i),i),u=r?l.readBigUInt64LE(0):BigInt(l.readUInt32LE(0));if(u===0n)break;if((u&s)!==0n)o.push({name:`Ordinal#${Number(u&65535n)}`,ordinal:Number(u&65535n),hint:0,thunkRva:`0x${(n+c*i).toString(16)}`});else{let r=Number(u),s=a(e,t+BigInt(r),258),l=s.readUInt16LE(0),d=s.indexOf(0,2),f=s.subarray(2,d>2?d:258).toString(`ascii`);o.push({name:f,ordinal:0,hint:l,thunkRva:`0x${(n+c*i).toString(16)}`})}}return o}enumerateModulesInternal(e){let a=[];try{let{modules:t,count:s}=i(e);for(let i=0;i<s;i++){let s=t[i],c=r(e,s),l=o(e,s),u=n(e,s)??c;l.success&&a.push({name:c,base:`0x${l.info.lpBaseOfDll.toString(16)}`,path:u,size:l.info.SizeOfImage})}}catch(e){t.debug(`Module enumeration failed: ${e}`)}return a}rvaToFileOffset(e,t){let n=e.readUInt32LE(60),r=e.readUInt16LE(n+6),i=e.readUInt16LE(n+20),a=n+24+i;for(let n=0;n<r;n++){let r=a+n*40;if(r+40>e.length)break;let i=e.readUInt32LE(r+12),o=e.readUInt32LE(r+8),s=e.readUInt32LE(r+20);if(t>=i&&t<i+o)return s+(t-i)}return-1}classifyHook(e){return u(e)}decodeJumpTarget(e,t){return l(e,t)}parsePEFromBuffer(e){let t=e.readUInt16LE(0);if(t!==h)throw Error(`Invalid DOS header in buffer: expected 0x5A4D, got 0x${t.toString(16)}`);let n=e.readUInt32LE(60),r=e.readUInt32LE(n);if(r!==g)throw Error(`Invalid PE signature in buffer: expected 0x4550, got 0x${r.toString(16)}`);let i=n+4,a=e.readUInt16LE(i),o=e.readUInt16LE(i+2),s=e.readUInt32LE(i+4),c=e.readUInt16LE(i+16),l=n+24+c,u=[];for(let t=0;t<o;t++){let n=l+t*40,r=e.subarray(n,n+8).toString(`utf8`).split(`\0`)[0],i=e.readUInt32LE(n+8),a=e.readUInt32LE(n+12),o=e.readUInt32LE(n+16),s=e.readUInt32LE(n+20);u.push({name:r,virtualAddress:a,virtualSize:i,pointerToRawData:s,sizeOfRawData:o})}return{fileHeader:{machine:a,numberOfSections:o,timeDateStamp:s},sections:u}}async compareMemoryWithDisk(e,n,r){let i=BigInt(n.startsWith(`0x`)?n:`0x${n}`),o=c(e);try{let e=a(o,i,64).readUInt32LE(60),n=a(o,i+BigInt(e),264),s=n.readUInt16LE(6),c=n.readUInt16LE(20),l=e+24+c,u=[];for(let e=0;e<s;e++){let t=l+e*40,n=a(o,i+BigInt(t),40),r=n.subarray(0,8).toString(`utf8`).split(`\0`)[0],s=n.readUInt32LE(8),c=n.readUInt32LE(12);u.push({name:r,virtualAddress:c,virtualSize:s})}let f=await d.readFile(r),p=this.parsePEFromBuffer(f),m=[`.text`,`.data`,`.rdata`],h=[],g=0,_=0;for(let e of u){if(!m.includes(e.name))continue;let n=p.sections.find(t=>t.name===e.name);if(!n){t.warn(`Section ${e.name} not found in disk PE`);continue}let r=a(o,i+BigInt(e.virtualAddress),Math.min(e.virtualSize,n.sizeOfRawData)),s=f.subarray(n.pointerToRawData,n.pointerToRawData+Math.min(n.sizeOfRawData,r.length)),c=Math.min(r.length,s.length),l=r.subarray(0,c),u=s.subarray(0,c);g+=c;let{createHash:d}=await import(`node:crypto`),v=d(`sha256`).update(l).digest(`hex`),y=d(`sha256`).update(u).digest(`hex`);v===y?_+=c:h.push({sectionName:e.name,offsetStart:e.virtualAddress,offsetEnd:e.virtualAddress+c,memoryHash:v,diskHash:y,bytesCompared:c})}let v=g>0?Math.round(_/g*100):0;return{isMatch:h.length===0,confidence:v,differences:h}}finally{s(o)}}};const v=new _;export{m as n,_ as t};
@@ -0,0 +1,7 @@
1
+ import{t as e}from"./rolldown-runtime-88NL7fhV.mjs";import{t}from"./logger-BGCcd-jJ.mjs";import{vt as n}from"./constants-nvsLpSri.mjs";import{t as r}from"./ExecutionSandbox-QbWQmzuC.mjs";var i=e({AAEncodeDeobfuscator:()=>o,PackerDeobfuscator:()=>a,URLEncodeDeobfuscator:()=>s,UniversalUnpacker:()=>c}),a=class e{sandbox=new r;static detect(e){return/eval\s*\(\s*function\s*\(\s*p\s*,\s*a\s*,\s*c\s*,\s*k\s*,\s*e\s*,\s*[dr]\s*\)/.test(e)}async deobfuscate(n){let{code:r,maxIterations:i=5}=n;t.info(` Packer...`);let a=[],o=r,s=0;try{for(;e.detect(o)&&s<i;){let e=await this.unpack(o);if(!e||e===o){a.push(`Packer unpack produced no change, stopping early`);break}o=e,s++,t.info(` ${s} `)}return t.info(`Packer deobfuscation complete in ${s} iterations`),{code:o,success:!0,iterations:s,warnings:a}}catch(e){return t.error(`Packer`,e),{code:o,success:!1,iterations:s,warnings:[...a,String(e)]}}}async unpack(e){let n=e.match(/eval\s*\(\s*function\s*\(\s*p\s*,\s*a\s*,\s*c\s*,\s*k\s*,\s*e\s*,\s*[dr]\s*\)\s*{([\s\S]*?)}\s*\((.*?)\)\s*\)/);if(!n?.[2])return e;let r=n[2],i=await this.parsePackerParams(r);if(!i)return e;try{return this.executeUnpacker(i)||e}catch(n){return t.warn(``,n),e}}async parsePackerParams(e){try{let t=await this.sandbox.execute({code:`return [${e}];`,timeoutMs:n});if(!t.ok)return null;let r=t.output;return!Array.isArray(r)||r.length<4?null:{p:r[0]||``,a:r[1]||0,c:r[2]||0,k:(typeof r[3]==`string`?r[3]:``).split(`|`),e:r[4]||function(e){return e},d:r[5]||function(){return``}}}catch{return null}}executeUnpacker(e){let{p:t,a:n,k:r}=e,{c:i}=e,a=t;for(;i--;){let e=r[i];if(e){let t=RegExp(`\\b`+this.base(i,n)+`\\b`,`g`);a=a.replace(t,e)}}return a}base(e,t){if(e===0)return`0`;let n=``;for(;e>0;)n=`0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ`[e%t]+n,e=Math.floor(e/t);return n||`0`}beautify(e){let t=e;return t=t.replace(/;/g,`;
2
+ `),t=t.replace(/{/g,`{
3
+ `),t=t.replace(/}/g,`
4
+ }
5
+ `),t=t.replace(/\n\n+/g,`
6
+
7
+ `),t.trim()}},o=class{sandbox=new r;static detect(e){return e.includes(`゜-゜`)||e.includes(`ω゜`)||e.includes(`o゜)`)}async deobfuscate(e){t.info(` AAEncode...`);try{let n=await this.sandbox.execute({code:`return (${e})`,timeoutMs:5e3}),r=n.ok?n.output:void 0;return typeof r==`string`?(t.info(` AAEncode`),r):e}catch(n){return t.error(`AAEncode`,n),e}}},s=class{static detect(e){return(e.match(/%[0-9A-Fa-f]{2}/g)||[]).length>10}async deobfuscate(e){t.info(` URLEncode...`);try{let n=decodeURIComponent(e);return t.info(` URLEncode`),n}catch(n){return t.error(`URLEncode`,n),e}}},c=class{packerDeobfuscator=new a;aaencodeDeobfuscator=new o;urlencodeDeobfuscator=new s;async deobfuscate(e){if(t.info(` ...`),a.detect(e)){t.info(`: Packer`);let n=await this.packerDeobfuscator.deobfuscate({code:e});return{code:n.code,type:`Packer`,success:n.success}}if(o.detect(e)){t.info(`: AAEncode`);let n=await this.aaencodeDeobfuscator.deobfuscate(e);return{code:n,type:`AAEncode`,success:n!==e}}if(s.detect(e)){t.info(`: URLEncode`);let n=await this.urlencodeDeobfuscator.deobfuscate(e);return{code:n,type:`URLEncode`,success:n!==e}}return t.info(``),{code:e,type:`Unknown`,success:!1}}};export{i as t};
@@ -0,0 +1 @@
1
+ import{Br as e,Hr as t,Ur as n,Vr as r,ei as i}from"./constants-nvsLpSri.mjs";import{t as a}from"./factory-BeND77hf.mjs";import{t as o}from"./NativeMemoryManager.impl-BIJzXMqH.mjs";import{n as s,t as c}from"./formatAddress-DAcw4Ckg.mjs";import{randomUUID as l}from"node:crypto";var u=class{providerCache=null;get provider(){return this.providerCache||=a(),this.providerCache}set provider(e){this.providerCache=e}async scan(n,i,a){let o=performance.now(),l=Math.min(a?.maxDepth??4,e),u=a?.maxOffset??r,d=a?.maxResults??t,f=a?.alignment??8,p=a?.staticOnly??!1,m=s(i),h=this.provider.openProcess(n,!1);try{let e=await this.getModuleMap(n),t=[],r=new Set([m]);for(let e=0;e<l&&r.size!==0;e++){let e=this.scanLevel(h,r,u,f,a?.modules?{modules:a.modules}:void 0);if(e.length===0)break;t.push(e),r=new Set;for(let t of e)if(r.add(t.pointerAddress),r.size>5e4)break}let i=this.buildChains(t,m,e,d,p),s=`${(performance.now()-o).toFixed(1)}ms`;return{pid:n,targetAddress:c(m),chains:i,totalFound:i.length,maxDepth:l,elapsed:s}}finally{this.provider.closeProcess(h)}}async validateChain(e,t){let n=this.provider.openProcess(e,!1);try{let e=s(t.baseAddress);for(let r=0;r<t.links.length;r++){let i=t.links[r],a;try{a=this.provider.readMemory(n,e,8).data.readBigUInt64LE(0)}catch{return{chainId:t.id,isValid:!1,resolvedAddress:null,expectedAddress:t.targetAddress,brokenAt:r}}e=a+BigInt(i.offset)}let r=c(e),i=s(t.targetAddress),a=e===i;return{chainId:t.id,isValid:a,resolvedAddress:r,expectedAddress:t.targetAddress,brokenAt:a?void 0:t.links.length-1}}finally{this.provider.closeProcess(n)}}async validateChains(e,t){let n=[];for(let r of t)n.push(await this.validateChain(e,r));return n}async resolveChain(e,t){let n=this.provider.openProcess(e,!1);try{let e=s(t.baseAddress);for(let r of t.links){let t;try{t=this.provider.readMemory(n,e,8).data.readBigUInt64LE(0)}catch{return null}e=t+BigInt(r.offset)}return c(e)}finally{this.provider.closeProcess(n)}}exportChains(e){return JSON.stringify(e,null,2)}importChains(e){let t=JSON.parse(e);if(!Array.isArray(t))throw Error(`Invalid chain data: expected array`);return t}async getModuleMap(e){let t=new Map;try{let n=await o.enumerateModules(e);if(n.success&&n.modules)for(let e of n.modules){let n=s(e.baseAddress);t.set(e.name.toLowerCase(),{name:e.name,base:n,size:e.size})}}catch{}return t}resolveToModule(e,t){for(let n of t.values())if(e>=n.base&&e<n.base+BigInt(n.size))return{module:n.name,offset:Number(e-n.base)};return null}scanLevel(e,t,r,a,o){let s=[],c=n,l=Array.from(t).toSorted((e,t)=>e<t?-1:+(e>t));if(l.length===0)return s;let u=BigInt(r),d=l[0]-u,f=l[l.length-1]+u,p=0n,m=i;for(;p<m;){let t=this.provider.queryRegion(e,p);if(!t)break;let n=t.size;if(t.isReadable&&n>0&&n<=2**53-1){let i=t.baseAddress;for(let t=0;t<n&&s.length<1e5;t+=c){let o=Math.min(c,n-t),p=i+BigInt(t),m;try{m=this.provider.readMemory(e,p,o).data}catch{break}for(let e=0;e<=m.length-8;e+=a){let t=m.readBigUInt64LE(e);if(t<d||t>f)continue;let n=t-u,i=t+u,a=0,o=l.length;for(;a<o;){let e=a+o>>>1;l[e]<n?a=e+1:o=e}for(let n=a;n<l.length&&l[n]<=i;n++){let i=l[n];if(Number(t>i?t-i:i-t)<=r){let n=p+BigInt(e),r=Number(i-t);s.push({pointerAddress:n,pointsTo:t,offset:r});break}}}}}p=t.baseAddress+BigInt(t.size)}return s}buildChains(e,t,n,i,a){if(e.length===0)return[];let o=[],s=c(t);for(let t=0;t<e.length&&o.length<i;t++){let u=e[t];if(t===0)for(let e of u){if(o.length>=i)break;let t=c(e.pointerAddress),r=this.resolveToModule(e.pointerAddress,n),u=r!==null;if(a&&!u)continue;let d={address:t,module:r?.module,moduleOffset:r?.offset,offset:e.offset};o.push({id:l(),links:[d],targetAddress:s,baseAddress:t,isStatic:u,depth:1,lastValidated:Date.now(),isValid:!0})}else{let d=e[t-1],f=new Map;for(let e of d)f.set(e.pointerAddress,e);let p=BigInt(r);for(let e of u){if(o.length>=i)break;let t;if(t=f.get(e.pointsTo),!t){for(let n of d)if((e.pointsTo>n.pointerAddress?e.pointsTo-n.pointerAddress:n.pointerAddress-e.pointsTo)<=p){t=n;break}}if(!t)continue;let r=c(e.pointerAddress),u=this.resolveToModule(e.pointerAddress,n),m=u!==null;if(a&&!m)continue;let h=[{address:r,module:u?.module,moduleOffset:u?.offset,offset:Number(t.pointerAddress-e.pointsTo)},{address:c(t.pointerAddress),offset:t.offset}];o.push({id:l(),links:h,targetAddress:s,baseAddress:r,isStatic:m,depth:h.length,lastValidated:Date.now(),isValid:!0})}}}return o.sort((e,t)=>e.isStatic===t.isStatic?e.depth-t.depth:e.isStatic?-1:1),o.slice(0,i)}};const d=new u;export{u as PointerChainEngine,d as pointerChainEngine};
@@ -0,0 +1 @@
1
+ import{t as e}from"./logger-BGCcd-jJ.mjs";import{X as t}from"./constants-nvsLpSri.mjs";const n=new class{processes=new Set;register(e){e&&(this.processes.add(e),`kill`in e?e.once(`close`,()=>this.unregister(e)):`terminate`in e&&(typeof e.once==`function`?e.once(`exit`,()=>this.unregister(e)):typeof e.on==`function`&&e.on(`exit`,()=>this.unregister(e))))}unregister(e){e&&this.processes.delete(e)}async terminateAll(){if(this.processes.size===0)return;e.debug(`[ProcessRegistry] Attempting to terminate ${this.processes.size} active processes/workers...`);let n=[];for(let r of this.processes)`terminate`in r?n.push(r.terminate().then(()=>{this.processes.delete(r)}).catch(t=>{e.warn(`[ProcessRegistry] Error terminating worker: ${t.message}`)})):`kill`in r&&n.push(new Promise(n=>{if(r.killed||r.exitCode!==null||r.signalCode!==null)return this.processes.delete(r),n();r.kill(`SIGTERM`);let i=!1,a=()=>{i||(i=!0,this.processes.delete(r),n())};r.once(`exit`,a),r.once(`close`,a),setTimeout(()=>{if(!i&&!r.killed&&r.exitCode===null){e.debug(`[ProcessRegistry] Force killing child process PID ${r.pid}`);try{r.kill(`SIGKILL`)}catch{}a()}},t).unref()}));await Promise.race([Promise.all(n),new Promise(e=>setTimeout(e,t+1e3).unref())]),this.processes.clear(),e.debug(`[ProcessRegistry] Termination sweep complete.`)}};export{n as t};
@@ -0,0 +1,299 @@
1
+ import{t as e}from"./rolldown-runtime-88NL7fhV.mjs";import{St as t,yt as n}from"./constants-nvsLpSri.mjs";var r=e({QuickJSSandbox:()=>u});const i=n,a=t*1024*1024;let o=null;function s(){return o||=import(`quickjs-emscripten`).then(e=>e.getQuickJS()),o}function c(e,t){if(t==null)return e.undefined;switch(typeof t){case`string`:return e.newString(t);case`number`:return e.newNumber(t);case`boolean`:return t?e.true:e.false;case`object`:{if(Array.isArray(t)){let n=e.newArray();for(let r=0;r<t.length;r++){let i=c(e,t[r]);e.setProp(n,r,i),i.dispose()}return n}let n=e.newObject();for(let[r,i]of Object.entries(t)){let t=c(e,i);e.setProp(n,r,t),t.dispose()}return n}default:return e.newString(String(t))}}function l(e,t){switch(e.typeof(t)){case`undefined`:return;case`number`:return e.getNumber(t);case`string`:return e.getString(t);case`boolean`:return e.dump(t);case`object`:return e.dump(t);default:return e.dump(t)}}var u=class{bridge=null;setBridge(e){this.bridge=e}async execute(e,t={}){let n=t.timeoutMs??i,r=t.memoryLimitBytes??a,o=(await s()).newRuntime();o.setMemoryLimit(r);let c=Date.now(),u=!1;o.setInterruptHandler(()=>Date.now()-c>n?(u=!0,!0):!1);let d=o.newContext(),f=[];try{this.injectConsole(d,f),this.injectHelpers(d),this.bridge&&this.injectBridge(d,this.bridge,f),t.globals&&this.injectGlobals(d,t.globals);let n=d.evalCode(e,`sandbox-eval.js`);if(n.error){let e=d.dump(n.error);return n.error.dispose(),u?{ok:!1,error:`Execution timed out`,timedOut:!0,durationMs:Date.now()-c,logs:f}:{ok:!1,error:typeof e==`object`?JSON.stringify(e):String(e),timedOut:!1,durationMs:Date.now()-c,logs:f}}let r=l(d,n.value);return n.value.dispose(),{ok:!0,output:r,timedOut:!1,durationMs:Date.now()-c,logs:f}}catch(e){return{ok:!1,error:e instanceof Error?e.message:String(e),timedOut:u,durationMs:Date.now()-c,logs:f}}finally{d.dispose(),o.dispose()}}async executeWithOrchestration(e,t,n={}){let r=n.maxBridgeCalls??10,i=Date.now(),a=[],o=[];n.bridgeAllowlist&&t.setAllowlist(n.bridgeAllowlist);let s={},c,l=0;for(;l<=r;){let r={...n.globals,__bridgeRound:l};l>0&&(r.__bridgeResults=s);let u=await this.executeOneRound(e,t,{...n,globals:r});if(a.push(...u.logs),!u.ok||u.timedOut)return{...u,logs:a,durationMs:Date.now()-i,bridgeCallCount:o.length,bridgeCalls:o};if(c=u.output,!t.hasPending())break;let d=t.drainPending(),f={};for(let e of d)try{let n=await t.call(e.toolName,e.args);f[e.id]=n,o.push({toolName:e.toolName,args:e.args,result:n})}catch(t){let n=t instanceof Error?t.message:String(t);f[e.id]={__error:!0,message:n},o.push({toolName:e.toolName,args:e.args,result:{__error:!0,message:n}})}s={...s,...f},l++}return{ok:!0,output:c,timedOut:!1,durationMs:Date.now()-i,logs:a,bridgeCallCount:o.length,bridgeCalls:o}}async executeOneRound(e,t,n={}){let r=n.timeoutMs??i,o=n.memoryLimitBytes??a,c=(await s()).newRuntime();c.setMemoryLimit(o);let u=Date.now(),d=!1;c.setInterruptHandler(()=>Date.now()-u>r?(d=!0,!0):!1);let f=c.newContext(),p=[];try{this.injectConsole(f,p),this.injectHelpers(f),this.injectBridgeForOrchestration(f,t,p),n.globals&&this.injectGlobals(f,n.globals);let r=f.evalCode(e,`sandbox-eval.js`);if(r.error){let e=f.dump(r.error);return r.error.dispose(),d?{ok:!1,error:`Execution timed out`,timedOut:!0,durationMs:Date.now()-u,logs:p}:{ok:!1,error:typeof e==`object`?JSON.stringify(e):String(e),timedOut:!1,durationMs:Date.now()-u,logs:p}}let i=l(f,r.value);return r.value.dispose(),{ok:!0,output:i,timedOut:!1,durationMs:Date.now()-u,logs:p}}catch(e){return{ok:!1,error:e instanceof Error?e.message:String(e),timedOut:d,durationMs:Date.now()-u,logs:p}}finally{f.dispose(),c.dispose()}}injectConsole(e,t){let n=e.newObject(),r=e.newFunction(`log`,(...n)=>{let r=n.map(t=>{let n=l(e,t);return typeof n==`string`?n:JSON.stringify(n)});t.push(r.join(` `))});e.setProp(n,`log`,r),e.setProp(n,`warn`,r),e.setProp(n,`error`,r),e.setProp(e.global,`console`,n),r.dispose(),n.dispose()}injectGlobals(e,t){for(let[n,r]of Object.entries(t)){let t=c(e,r);e.setProp(e.global,n,t),t.dispose()}}injectHelpers(e){let t=e.evalCode(`
2
+ (function() {
3
+ var helpers = {};
4
+
5
+ // ── base64 ──
6
+ helpers.base64 = {
7
+ _chars: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=',
8
+ encode: function(str) {
9
+ var output = '';
10
+ var chr1, chr2, chr3, enc1, enc2, enc3, enc4;
11
+ var i = 0;
12
+ while (i < str.length) {
13
+ chr1 = str.charCodeAt(i++);
14
+ chr2 = str.charCodeAt(i++);
15
+ chr3 = str.charCodeAt(i++);
16
+ enc1 = chr1 >> 2;
17
+ enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);
18
+ enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);
19
+ enc4 = chr3 & 63;
20
+ if (isNaN(chr2)) { enc3 = enc4 = 64; }
21
+ else if (isNaN(chr3)) { enc4 = 64; }
22
+ output += this._chars.charAt(enc1) + this._chars.charAt(enc2) +
23
+ this._chars.charAt(enc3) + this._chars.charAt(enc4);
24
+ }
25
+ return output;
26
+ },
27
+ decode: function(str) {
28
+ var output = '';
29
+ var chr1, chr2, chr3, enc1, enc2, enc3, enc4;
30
+ var i = 0;
31
+ str = str.replace(/[^A-Za-z0-9+/=]/g, '');
32
+ while (i < str.length) {
33
+ enc1 = this._chars.indexOf(str.charAt(i++));
34
+ enc2 = this._chars.indexOf(str.charAt(i++));
35
+ enc3 = this._chars.indexOf(str.charAt(i++));
36
+ enc4 = this._chars.indexOf(str.charAt(i++));
37
+ chr1 = (enc1 << 2) | (enc2 >> 4);
38
+ chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);
39
+ chr3 = ((enc3 & 3) << 6) | enc4;
40
+ output += String.fromCharCode(chr1);
41
+ if (enc3 !== 64) output += String.fromCharCode(chr2);
42
+ if (enc4 !== 64) output += String.fromCharCode(chr3);
43
+ }
44
+ return output;
45
+ }
46
+ };
47
+
48
+ // ── hex ──
49
+ helpers.hex = {
50
+ encode: function(str) {
51
+ var hex = '';
52
+ for (var i = 0; i < str.length; i++) {
53
+ hex += ('0' + str.charCodeAt(i).toString(16)).slice(-2);
54
+ }
55
+ return hex;
56
+ },
57
+ decode: function(hex) {
58
+ var str = '';
59
+ for (var i = 0; i < hex.length; i += 2) {
60
+ str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));
61
+ }
62
+ return str;
63
+ }
64
+ };
65
+
66
+ // ── hash (simple djb2/fnv for in-sandbox use; NOT cryptographic!) ──
67
+ helpers.hash = {
68
+ djb2: function(str) {
69
+ var hash = 5381;
70
+ for (var i = 0; i < str.length; i++) {
71
+ hash = ((hash << 5) + hash) + str.charCodeAt(i);
72
+ hash = hash & hash; // Convert to 32-bit
73
+ }
74
+ return (hash >>> 0).toString(16);
75
+ },
76
+ fnv1a: function(str) {
77
+ var hash = 0x811c9dc5;
78
+ for (var i = 0; i < str.length; i++) {
79
+ hash ^= str.charCodeAt(i);
80
+ hash = Math.imul(hash, 0x01000193);
81
+ }
82
+ return (hash >>> 0).toString(16);
83
+ },
84
+ /** Simple MD5 — pure JS implementation */
85
+ md5: function(str) {
86
+ // Lightweight MD5 for sandbox use
87
+ function md5cycle(x, k) {
88
+ var a = x[0], b = x[1], c = x[2], d = x[3];
89
+ a = ff(a,b,c,d,k[0],7,0xd76aa478);
90
+ d=ff(d,a,b,c,k[1],12,0xe8c7b756);
91
+ c=ff(c,d,a,b,k[2],17,0x242070db);
92
+ b=ff(b,c,d,a,k[3],22,0xc1bdceee);
93
+ a=ff(a,b,c,d,k[4],7,0xf57c0faf);
94
+ d=ff(d,a,b,c,k[5],12,0x4787c62a);
95
+ c=ff(c,d,a,b,k[6],17,0xa8304613);
96
+ b=ff(b,c,d,a,k[7],22,0xfd469501);
97
+ a=ff(a,b,c,d,k[8],7,0x698098d8);
98
+ d=ff(d,a,b,c,k[9],12,0x8b44f7af);
99
+ c=ff(c,d,a,b,k[10],17,0xffff5bb1);
100
+ b=ff(b,c,d,a,k[11],22,0x895cd7be);
101
+ a=ff(a,b,c,d,k[12],7,0x6b901122);
102
+ d=ff(d,a,b,c,k[13],12,0xfd987193);
103
+ c=ff(c,d,a,b,k[14],17,0xa679438e);
104
+ b=ff(b,c,d,a,k[15],22,0x49b40821);
105
+ a=gg(a,b,c,d,k[1],5,0xf61e2562);
106
+ d=gg(d,a,b,c,k[6],9,0xc040b340);
107
+ c=gg(c,d,a,b,k[11],14,0x265e5a51);
108
+ b=gg(b,c,d,a,k[0],20,0xe9b6c7aa);
109
+ a=gg(a,b,c,d,k[5],5,0xd62f105d);
110
+ d=gg(d,a,b,c,k[10],9,0x02441453);
111
+ c=gg(c,d,a,b,k[15],14,0xd8a1e681);
112
+ b=gg(b,c,d,a,k[4],20,0xe7d3fbc8);
113
+ a=gg(a,b,c,d,k[9],5,0x21e1cde6);
114
+ d=gg(d,a,b,c,k[14],9,0xc33707d6);
115
+ c=gg(c,d,a,b,k[3],14,0xf4d50d87);
116
+ b=gg(b,c,d,a,k[8],20,0x455a14ed);
117
+ a=gg(a,b,c,d,k[13],5,0xa9e3e905);
118
+ d=gg(d,a,b,c,k[2],9,0xfcefa3f8);
119
+ c=gg(c,d,a,b,k[7],14,0x676f02d9);
120
+ b=gg(b,c,d,a,k[12],20,0x8d2a4c8a);
121
+ a=hh(a,b,c,d,k[5],4,0xfffa3942);
122
+ d=hh(d,a,b,c,k[8],11,0x8771f681);
123
+ c=hh(c,d,a,b,k[11],16,0x6d9d6122);
124
+ b=hh(b,c,d,a,k[14],23,0xfde5380c);
125
+ a=hh(a,b,c,d,k[1],4,0xa4beea44);
126
+ d=hh(d,a,b,c,k[4],11,0x4bdecfa9);
127
+ c=hh(c,d,a,b,k[7],16,0xf6bb4b60);
128
+ b=hh(b,c,d,a,k[10],23,0xbebfbc70);
129
+ a=hh(a,b,c,d,k[13],4,0x289b7ec6);
130
+ d=hh(d,a,b,c,k[0],11,0xeaa127fa);
131
+ c=hh(c,d,a,b,k[3],16,0xd4ef3085);
132
+ b=hh(b,c,d,a,k[6],23,0x04881d05);
133
+ a=hh(a,b,c,d,k[9],4,0xd9d4d039);
134
+ d=hh(d,a,b,c,k[12],11,0xe6db99e5);
135
+ c=hh(c,d,a,b,k[15],16,0x1fa27cf8);
136
+ b=hh(b,c,d,a,k[2],23,0xc4ac5665);
137
+ a=ii(a,b,c,d,k[0],6,0xf4292244);
138
+ d=ii(d,a,b,c,k[7],10,0x432aff97);
139
+ c=ii(c,d,a,b,k[14],15,0xab9423a7);
140
+ b=ii(b,c,d,a,k[5],21,0xfc93a039);
141
+ a=ii(a,b,c,d,k[12],6,0x655b59c3);
142
+ d=ii(d,a,b,c,k[3],10,0x8f0ccc92);
143
+ c=ii(c,d,a,b,k[10],15,0xffeff47d);
144
+ b=ii(b,c,d,a,k[1],21,0x85845dd1);
145
+ a=ii(a,b,c,d,k[8],6,0x6fa87e4f);
146
+ d=ii(d,a,b,c,k[15],10,0xfe2ce6e0);
147
+ c=ii(c,d,a,b,k[6],15,0xa3014314);
148
+ b=ii(b,c,d,a,k[13],21,0x4e0811a1);
149
+ a=ii(a,b,c,d,k[4],6,0xf7537e82);
150
+ d=ii(d,a,b,c,k[11],10,0xbd3af235);
151
+ c=ii(c,d,a,b,k[2],15,0x2ad7d2bb);
152
+ b=ii(b,c,d,a,k[9],21,0xeb86d391);
153
+ x[0]=add32(a,x[0]);x[1]=add32(b,x[1]);x[2]=add32(c,x[2]);x[3]=add32(d,x[3]);
154
+ }
155
+ function cmn(q,a,b,x,s,t){a=add32(add32(a,q),add32(x,t));return add32((a<<s)|(a>>>(32-s)),b)}
156
+ function ff(a,b,c,d,x,s,t){return cmn((b&c)|((~b)&d),a,b,x,s,t)}
157
+ function gg(a,b,c,d,x,s,t){return cmn((b&d)|(c&(~d)),a,b,x,s,t)}
158
+ function hh(a,b,c,d,x,s,t){return cmn(b^c^d,a,b,x,s,t)}
159
+ function ii(a,b,c,d,x,s,t){return cmn(c^(b|(~d)),a,b,x,s,t)}
160
+ function add32(a,b){return(a+b)&0xFFFFFFFF}
161
+
162
+ var n = str.length;
163
+ var state = [1732584193,-271733879,-1732584194,271733878];
164
+ var tail = [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];
165
+ var i;
166
+ for (i = 64; i <= n; i += 64) {
167
+ var blk = [];
168
+ for (var j = i - 64; j < i; j += 4) {
169
+ blk.push(str.charCodeAt(j)|(str.charCodeAt(j+1)<<8)|(str.charCodeAt(j+2)<<16)|(str.charCodeAt(j+3)<<24));
170
+ }
171
+ md5cycle(state, blk);
172
+ }
173
+ for (var j = 0; j < 16; j++) tail[j] = 0;
174
+ for (i = i - 64; i < n; i++) {
175
+ tail[i>>2] |= str.charCodeAt(i) << ((i%4)<<3);
176
+ }
177
+ tail[i>>2] |= 0x80 << ((i%4)<<3);
178
+ if (i > 55) { md5cycle(state, tail); for (j = 0; j < 16; j++) tail[j] = 0; }
179
+ tail[14] = n * 8;
180
+ md5cycle(state, tail);
181
+
182
+ var hex_chr = '0123456789abcdef';
183
+ var s = '';
184
+ for (i = 0; i < 4; i++) {
185
+ for (j = 0; j < 4; j++) {
186
+ s += hex_chr.charAt((state[i] >> (j*8+4)) & 0x0F) + hex_chr.charAt((state[i] >> (j*8)) & 0x0F);
187
+ }
188
+ }
189
+ return s;
190
+ },
191
+ sha256: function(str) {
192
+ // Minimal pure-JS SHA-256
193
+ var K = [0x428a2f98,0x71374491,0xb5c0fbcf,0xe9b5dba5,0x3956c25b,0x59f111f1,0x923f82a4,0xab1c5ed5,
194
+ 0xd807aa98,0x12835b01,0x243185be,0x550c7dc3,0x72be5d74,0x80deb1fe,0x9bdc06a7,0xc19bf174,
195
+ 0xe49b69c1,0xefbe4786,0x0fc19dc6,0x240ca1cc,0x2de92c6f,0x4a7484aa,0x5cb0a9dc,0x76f988da,
196
+ 0x983e5152,0xa831c66d,0xb00327c8,0xbf597fc7,0xc6e00bf3,0xd5a79147,0x06ca6351,0x14292967,
197
+ 0x27b70a85,0x2e1b2138,0x4d2c6dfc,0x53380d13,0x650a7354,0x766a0abb,0x81c2c92e,0x92722c85,
198
+ 0xa2bfe8a1,0xa81a664b,0xc24b8b70,0xc76c51a3,0xd192e819,0xd6990624,0xf40e3585,0x106aa070,
199
+ 0x19a4c116,0x1e376c08,0x2748774c,0x34b0bcb5,0x391c0cb3,0x4ed8aa4a,0x5b9cca4f,0x682e6ff3,
200
+ 0x748f82ee,0x78a5636f,0x84c87814,0x8cc70208,0x90befffa,0xa4506ceb,0xbef9a3f7,0xc67178f2];
201
+ function rr(x,n){return(x>>>n)|(x<<(32-n))}
202
+ var H=[0x6a09e667,0xbb67ae85,0x3c6ef372,0xa54ff53a,0x510e527f,0x9b05688c,0x1f83d9ab,0x5be0cd19];
203
+ var msg=[];
204
+ for(var i=0;i<str.length;i++)msg.push(str.charCodeAt(i));
205
+ msg.push(0x80);
206
+ var l=msg.length;
207
+ while(l%64!==56){msg.push(0);l++;}
208
+ var bits=str.length*8;
209
+ for(i=7;i>=0;i--)msg.push((bits>>>(i*8))&0xff);
210
+ for(var offset=0;offset<msg.length;offset+=64){
211
+ var W=[];
212
+ for(i=0;i<16;i++)W[i]=(msg[offset+i*4]<<24)|(msg[offset+i*4+1]<<16)|(msg[offset+i*4+2]<<8)|msg[offset+i*4+3];
213
+ for(i=16;i<64;i++){
214
+ var s0=rr(W[i-15],7)^rr(W[i-15],18)^(W[i-15]>>>3);
215
+ var s1=rr(W[i-2],17)^rr(W[i-2],19)^(W[i-2]>>>10);
216
+ W[i]=(W[i-16]+s0+W[i-7]+s1)|0;
217
+ }
218
+ var a=H[0],b=H[1],c=H[2],d=H[3],e=H[4],f=H[5],g=H[6],h=H[7];
219
+ for(i=0;i<64;i++){
220
+ var S1=rr(e,6)^rr(e,11)^rr(e,25);
221
+ var ch=(e&f)^((~e)&g);
222
+ var t1=(h+S1+ch+K[i]+W[i])|0;
223
+ var S0=rr(a,2)^rr(a,13)^rr(a,22);
224
+ var maj=(a&b)^(a&c)^(b&c);
225
+ var t2=(S0+maj)|0;
226
+ h=g;g=f;f=e;e=(d+t1)|0;d=c;c=b;b=a;a=(t1+t2)|0;
227
+ }
228
+ H[0]=(H[0]+a)|0;H[1]=(H[1]+b)|0;H[2]=(H[2]+c)|0;H[3]=(H[3]+d)|0;
229
+ H[4]=(H[4]+e)|0;H[5]=(H[5]+f)|0;H[6]=(H[6]+g)|0;H[7]=(H[7]+h)|0;
230
+ }
231
+ var hex='';
232
+ for(i=0;i<8;i++)for(var j=7;j>=0;j--)hex+='0123456789abcdef'.charAt((H[i]>>>(j*4))&0xf);
233
+ return hex;
234
+ }
235
+ };
236
+
237
+ // ── json ──
238
+ helpers.json = {
239
+ safeParse: function(str) {
240
+ try { return { ok: true, value: JSON.parse(str) }; }
241
+ catch(e) { return { ok: false, error: e.message }; }
242
+ }
243
+ };
244
+
245
+ // ── array ──
246
+ helpers.array = {
247
+ chunk: function(arr, size) {
248
+ var result = [];
249
+ for (var i = 0; i < arr.length; i += size) {
250
+ result.push(arr.slice(i, i + size));
251
+ }
252
+ return result;
253
+ },
254
+ flatten: function(arr) {
255
+ var result = [];
256
+ for (var i = 0; i < arr.length; i++) {
257
+ if (Array.isArray(arr[i])) {
258
+ result = result.concat(this.flatten(arr[i]));
259
+ } else {
260
+ result.push(arr[i]);
261
+ }
262
+ }
263
+ return result;
264
+ },
265
+ unique: function(arr) {
266
+ var seen = {};
267
+ var result = [];
268
+ for (var i = 0; i < arr.length; i++) {
269
+ var key = JSON.stringify(arr[i]);
270
+ if (!seen[key]) {
271
+ seen[key] = true;
272
+ result.push(arr[i]);
273
+ }
274
+ }
275
+ return result;
276
+ }
277
+ };
278
+
279
+ // ── string ──
280
+ helpers.string = {
281
+ camelCase: function(s) {
282
+ return s.replace(/[-_\\s]+(\\w)/g, function(_, c) { return c.toUpperCase(); })
283
+ .replace(/^\\w/, function(c) { return c.toLowerCase(); });
284
+ },
285
+ snakeCase: function(s) {
286
+ return s.replace(/([A-Z])/g, '_$1').toLowerCase()
287
+ .replace(/[-\\s]+/g, '_')
288
+ .replace(/^_/, '');
289
+ },
290
+ truncate: function(s, len) {
291
+ if (s.length <= len) return s;
292
+ return s.slice(0, len - 3) + '...';
293
+ }
294
+ };
295
+
296
+ // Expose to global scope
297
+ globalThis.helpers = helpers;
298
+ })();
299
+ `,`sandbox-helpers.js`);t.error?(e.dump(t.error),t.error.dispose()):t.value.dispose()}injectBridge(e,t,n){let r=e.newObject(),i=e.newFunction(`call`,(r,i)=>{let a=e.getString(r),o=e.dump(i)??{};try{t.assertCallable(a)}catch(t){let r=t instanceof Error?t.message:String(t);return n.push(`[mcp.call] rejected ${a}: ${r}`),c(e,{pending:!1,tool:a,error:r})}return n.push(`[mcp.call] ${a}(${JSON.stringify(o)})`),c(e,{pending:!0,tool:a})}),a=e.newFunction(`listTools`,()=>c(e,t.listAvailableTools()));e.setProp(r,`call`,i),e.setProp(r,`listTools`,a),e.setProp(e.global,`mcp`,r),i.dispose(),a.dispose(),r.dispose()}injectBridgeForOrchestration(e,t,n){let r=e.newObject(),i=e.newFunction(`call`,(r,i)=>{let a=e.getString(r),o=e.dump(i)??{};try{let r=t.enqueue(a,o);return n.push(`[mcp.call] enqueued ${a}(${JSON.stringify(o)}) → ${r}`),c(e,{__bridgeCall:!0,callId:r})}catch(t){let r=t instanceof Error?t.message:String(t);return n.push(`[mcp.call] rejected ${a}: ${r}`),c(e,{__bridgeCall:!1,error:r})}}),a=e.newFunction(`listTools`,()=>c(e,t.listAvailableTools()));e.setProp(r,`call`,i),e.setProp(r,`listTools`,a),e.setProp(e.global,`mcp`,r),i.dispose(),a.dispose(),r.dispose()}};export{r as n,u as t};
@@ -1 +1 @@
1
- var e=class{payload={};hasMcpError=!1;additionalContent=[];useStructuredContent=!1;ok(){return this.payload.success=!0,this}fail(e){this.payload.success=!1;let t=e instanceof Error?e.message:String(e);return this.payload.error=t,this.payload.message=t,this}set(e,t){return this.payload[e]=t,this}merge(e){return Object.assign(this.payload,e),this}mcpError(){return this.hasMcpError=!0,this}image(e,t){return this.additionalContent.push({type:`image`,data:e,mimeType:t}),this}embeddedResource(e,t,n=`text/plain`){return this.additionalContent.push({type:`resource`,resource:{uri:e,text:t,mimeType:n}}),this}structured(){return this.useStructuredContent=!0,this}json(e){return e&&this.merge(e),{content:[{type:`text`,text:JSON.stringify(this.payload,null,2)},...this.additionalContent],...this.hasMcpError?{isError:!0}:{},...this.useStructuredContent?{structuredContent:this.payload}:{}}}build(e){return this.json(e)}static raw(e){return{content:[{type:`text`,text:JSON.stringify(e,null,2)}]}}static text(e,t=!1){return{content:[{type:`text`,text:e}],...t?{isError:!0}:{}}}static parse(e){if(!e.content||e.content.length===0)throw Error(`ToolResponse has no content`);let t=e.content.find(e=>e.type===`text`);if(!t||!(`text`in t))throw Error(`ToolResponse has no text content block`);try{return JSON.parse(t.text)}catch(e){throw Error(`Failed to parse tool result as JSON: ${String(e)}\nRaw text: ${t.text.substring(0,500)}`,{cause:e})}}};function t(t){return t().then(t=>new e().ok().merge(t).json()).catch(t=>new e().fail(t).json())}const n={ok:()=>new e().ok(),fail:t=>new e().fail(t),raw:t=>e.raw(t),text:(t,n=!1)=>e.text(t,n),parse:t=>e.parse(t)};export{t as n,n as t};
1
+ var e=class{payload={};hasMcpError=!1;additionalContent=[];useStructuredContent=!1;ok(){return this.payload.success=!0,this}fail(e){this.payload.success=!1;let t=e instanceof Error?e.message:String(e);return this.payload.error=t,this.payload.message=t,this}set(e,t){return this.payload[e]=t,this}merge(e){return Object.assign(this.payload,e),this}mcpError(){return this.hasMcpError=!0,this}image(e,t){return this.additionalContent.push({type:`image`,data:e,mimeType:t}),this}embeddedResource(e,t,n=`text/plain`){return this.additionalContent.push({type:`resource`,resource:{uri:e,text:t,mimeType:n}}),this}structured(){return this.useStructuredContent=!0,this}json(e){return e&&this.merge(e),{content:[{type:`text`,text:JSON.stringify(this.payload,null,2)},...this.additionalContent],...this.hasMcpError?{isError:!0}:{},...this.useStructuredContent?{structuredContent:this.payload}:{}}}build(e){return this.json(e)}static raw(e){return{content:[{type:`text`,text:JSON.stringify(e,null,2)}]}}static text(e,t=!1){return{content:[{type:`text`,text:e}],...t?{isError:!0}:{}}}static parse(e){if(!e.content||e.content.length===0)throw Error(`ToolResponse has no content`);let t=e.content.find(e=>e.type===`text`);if(!t||!(`text`in t))throw Error(`ToolResponse has no text content block`);try{return JSON.parse(t.text)}catch(e){throw Error(`Failed to parse tool result as JSON: ${String(e)}\nRaw text: ${t.text.substring(0,500)}`,{cause:e})}}};function t(e){return typeof e==`object`&&!!e}function n(e){if(!t(e)||!Array.isArray(e.content))return!1;let[n]=e.content;return t(n)&&typeof n.type==`string`}function r(t){return t().then(t=>n(t)?t:new e().ok().merge(t).json()).catch(t=>new e().fail(t).json())}const i={ok:()=>new e().ok(),fail:t=>new e().fail(t),raw:t=>e.raw(t),text:(t,n=!1)=>e.text(t,n),parse:t=>e.parse(t)};export{e as n,r,i as t};
@@ -0,0 +1,2 @@
1
+ import{t as e}from"./rolldown-runtime-88NL7fhV.mjs";var t=e({ReverseEvidenceGraph:()=>i});let n=1;function r(e){return`${e}-${n++}`}var i=class{nodes=new Map;edges=new Map;eventBus;isDirty=!1;mutationSeq=0;lastPersistedSeq=0;persistNotifier;setEventBus(e){this.eventBus=e}setPersistNotifier(e){this.persistNotifier=e}markDirty(){this.isDirty=!0,this.mutationSeq++,this.persistNotifier?.()}commit(){this.isDirty&&this.eventBus&&(this.isDirty=!1,this.eventBus.emit(`evidence:updated`,{timestamp:new Date().toISOString(),reason:`Tool execution committed changes`}))}addNode(e,t,n={}){let i={id:r(e),type:e,label:t,metadata:n,createdAt:Date.now()};return this.nodes.set(i.id,i),this.markDirty(),i}addEdge(e,t,n,i){if(!this.nodes.has(e))throw Error(`Source node "${e}" not found`);if(!this.nodes.has(t))throw Error(`Target node "${t}" not found`);let a={id:r(`edge`),source:e,target:t,type:n,metadata:i};return this.edges.set(a.id,a),this.markDirty(),a}getNode(e){return this.nodes.get(e)}removeNode(e){if(!this.nodes.has(e))return!1;this.nodes.delete(e);for(let[t,n]of this.edges)(n.source===e||n.target===e)&&this.edges.delete(t);return this.markDirty(),!0}getEdgesFrom(e){return[...this.edges.values()].filter(t=>t.source===e)}getEdgesTo(e){return[...this.edges.values()].filter(t=>t.target===e)}get nodeCount(){return this.nodes.size}get edgeCount(){return this.edges.size}getEvidenceChain(e,t=`forward`){if(!this.nodes.get(e))return[];let n=new Set,r=[e],i=[];for(;r.length>0;){let e=r.shift();if(n.has(e))continue;n.add(e);let a=this.nodes.get(e);a&&i.push(a);let o=t===`forward`?this.getEdgesFrom(e):this.getEdgesTo(e);for(let e of o){let i=t===`forward`?e.target:e.source;n.has(i)||r.push(i)}}return i}queryByUrl(e){let t=[...this.nodes.values()].filter(t=>t.type===`request`&&typeof t.metadata.url==`string`||typeof t.metadata.url==`string`?t.metadata.url.includes(e):!1),n=new Set;for(let e of t){for(let t of this.getEvidenceChain(e.id,`forward`))n.add(t.id);for(let t of this.getEvidenceChain(e.id,`backward`))n.add(t.id)}return[...n].map(e=>this.nodes.get(e)).filter(Boolean)}queryByFunction(e){let t=[...this.nodes.values()].filter(t=>t.type===`function`&&typeof t.metadata.functionName==`string`?t.metadata.functionName.includes(e):!!(t.label.includes(e)&&(t.type===`function`||t.type===`breakpoint-hook`))),n=new Set;for(let e of t){for(let t of this.getEvidenceChain(e.id,`forward`))n.add(t.id);for(let t of this.getEvidenceChain(e.id,`backward`))n.add(t.id)}return[...n].map(e=>this.nodes.get(e)).filter(Boolean)}queryByScriptId(e){let t=[...this.nodes.values()].filter(t=>t.type===`script`&&t.metadata.scriptId===e),n=new Set;for(let e of t){for(let t of this.getEvidenceChain(e.id,`forward`))n.add(t.id);for(let t of this.getEvidenceChain(e.id,`backward`))n.add(t.id)}return[...n].map(e=>this.nodes.get(e)).filter(Boolean)}exportJson(){return{version:1,nodes:[...this.nodes.values()],edges:[...this.edges.values()],exportedAt:new Date().toISOString()}}exportMarkdown(){let e=[];e.push(`# Reverse Evidence Graph Report`),e.push(``),e.push(`**Exported:** ${new Date().toISOString()}`),e.push(`**Nodes:** ${this.nodes.size} | **Edges:** ${this.edges.size}`),e.push(``);let t=new Map;for(let e of this.nodes.values()){let n=t.get(e.type)??[];n.push(e),t.set(e.type,n)}for(let n of[`request`,`initiator-stack`,`script`,`function`,`breakpoint-hook`,`captured-data`,`replay-artifact`,`v8-heap-object`,`v8-hidden-class`,`network-request`,`network-response`,`canvas-scene-node`,`canvas-render-node`,`skia-draw-call`,`syscall-event`,`mojo-message`,`mojo-interface`,`binary-symbol`,`binary-function`,`binary-module`,`proto-message`,`proto-state`]){let r=t.get(n);if(!(!r||r.length===0)){e.push(`## ${n} (${r.length})`),e.push(``);for(let t of r){e.push(`### ${t.label}`),e.push(`- **ID:** \`${t.id}\``),e.push(`- **Created:** ${new Date(t.createdAt).toISOString()}`);let n=Object.keys(t.metadata);if(n.length>0)for(let r of n){let n=t.metadata[r],i=typeof n==`string`?n:JSON.stringify(n);e.push(`- **${r}:** ${i}`)}let r=this.getEdgesFrom(t.id),i=this.getEdgesTo(t.id);r.length>0&&e.push(`- **→ Out:** ${r.map(e=>`${e.type} → \`${e.target}\``).join(`, `)}`),i.length>0&&e.push(`- **← In:** ${i.map(e=>`\`${e.source}\` ${e.type} →`).join(`, `)}`),e.push(``)}}}return e.join(`
2
+ `)}getSnapshotSeq(){return this.mutationSeq}getLastPersistedSeq(){return this.lastPersistedSeq}markPersisted(){this.lastPersistedSeq=this.mutationSeq}isPersistDirty(){return this.mutationSeq!==this.lastPersistedSeq}exportSnapshot(){return{schemaVersion:1,savedAt:new Date().toISOString(),graph:this.exportJson()}}restoreSnapshot(e){if(!e||typeof e!=`object`)return;let t=e;if(t.schemaVersion!==1||!t.graph)return;let{nodes:n,edges:r}=t.graph;this.nodes.clear(),this.edges.clear();for(let e of n)this.nodes.set(e.id,e);for(let e of r)this.edges.set(e.id,e);this.mutationSeq=n.length+r.length,this.lastPersistedSeq=this.mutationSeq,this.isDirty=!1}};export{t};
@@ -0,0 +1 @@
1
+ import{t as e}from"./logger-BGCcd-jJ.mjs";import{d as t}from"./registry-7h8jJ9y9.mjs";const n={endpoint:null,selectedIndex:null,selectedUrl:null,selectedTitle:null,selectedTargetId:null,browserPid:null,rendererPid:null,attachedAt:null};var r=class{dirty=!1;persistedRevision=0;revision=0;pendingActivatedDomains=new Set;pendingDomainTtls=new Map;browserAttach={...n};toolCoverage=new Map;markPersisted(){this.persistedRevision=this.revision,this.dirty=!1}isPersistDirty(){return this.dirty||this.revision!==this.persistedRevision}exportSnapshot(){return{schemaVersion:1,savedAt:new Date().toISOString(),activatedDomains:[...this.pendingActivatedDomains].toSorted(),domainTtls:Object.fromEntries([...this.pendingDomainTtls.entries()].toSorted(([e],[t])=>e.localeCompare(t)).map(([e,t])=>[e,{ttlMinutes:t.ttlMinutes,toolNames:[...t.toolNames]}])),browserAttach:{...this.browserAttach},toolCoverage:Object.fromEntries([...this.toolCoverage.entries()].toSorted(([e],[t])=>e.localeCompare(t)).map(([e,t])=>[e,{...t,lastArgsKeys:[...t.lastArgsKeys]}]))}}restoreSnapshot(e){if(!e||typeof e!=`object`)return;let t=e;if(t.schemaVersion!==1)return;if(this.pendingActivatedDomains=new Set(Array.isArray(t.activatedDomains)?t.activatedDomains.filter(e=>typeof e==`string`):[]),this.pendingDomainTtls=new Map,t.domainTtls&&typeof t.domainTtls==`object`)for(let[e,n]of Object.entries(t.domainTtls)){if(!n||typeof n!=`object`)continue;let t=n,r=Number(t.ttlMinutes),i=Array.isArray(t.toolNames)?t.toolNames.filter(e=>typeof e==`string`):[];Number.isFinite(r)&&this.pendingDomainTtls.set(e,{ttlMinutes:r,toolNames:i})}let r=t.browserAttach;if(this.browserAttach=r&&typeof r==`object`?{endpoint:typeof r.endpoint==`string`?r.endpoint:null,selectedIndex:typeof r.selectedIndex==`number`&&Number.isInteger(r.selectedIndex)?r.selectedIndex:null,selectedUrl:typeof r.selectedUrl==`string`?r.selectedUrl:null,selectedTitle:typeof r.selectedTitle==`string`?r.selectedTitle:null,selectedTargetId:typeof r.selectedTargetId==`string`?r.selectedTargetId:null,browserPid:typeof r.browserPid==`number`&&Number.isInteger(r.browserPid)?r.browserPid:null,rendererPid:typeof r.rendererPid==`number`&&Number.isInteger(r.rendererPid)?r.rendererPid:null,attachedAt:typeof r.attachedAt==`string`?r.attachedAt:null}:{...n},this.toolCoverage.clear(),t.toolCoverage&&typeof t.toolCoverage==`object`)for(let[e,n]of Object.entries(t.toolCoverage)){if(!n||typeof n!=`object`)continue;let t=n;this.toolCoverage.set(e,{count:typeof t.count==`number`&&Number.isFinite(t.count)&&t.count>=0?Math.trunc(t.count):0,lastCalledAt:typeof t.lastCalledAt==`string`?t.lastCalledAt:null,lastArgsKeys:Array.isArray(t.lastArgsKeys)?t.lastArgsKeys.filter(e=>typeof e==`string`):[]})}this.revision+=1,this.persistedRevision=this.revision,this.dirty=!1}noteDirty(){this.revision+=1,this.dirty=!0}setPendingDomainActivation(e,t,n){this.pendingActivatedDomains.add(e),this.pendingDomainTtls.set(e,{ttlMinutes:t,toolNames:[...n]}),this.noteDirty()}clearPendingDomainActivation(e){let t=this.pendingActivatedDomains.delete(e),n=this.pendingDomainTtls.delete(e);(t||n)&&this.noteDirty()}getPendingActivatedDomains(){return[...this.pendingActivatedDomains]}getPendingDomainTtl(e){return this.pendingDomainTtls.get(e)??null}setBrowserAttach(e){this.browserAttach={...this.browserAttach,...e},this.noteDirty()}clearBrowserAttach(){this.browserAttach={...n},this.noteDirty()}getBrowserAttach(){return{...this.browserAttach}}recordToolCall(e,t){let n={count:(this.toolCoverage.get(e)?.count??0)+1,lastCalledAt:new Date().toISOString(),lastArgsKeys:Object.keys(t).filter(e=>e!==`_meta`).toSorted()};this.toolCoverage.set(e,n),this.noteDirty()}getCoverageSummary(e){let n=Object.fromEntries([...this.toolCoverage.entries()].toSorted(([e],[t])=>e.localeCompare(t)).map(([e,t])=>[e,{...t,lastArgsKeys:[...t.lastArgsKeys]}])),r=new Set([...t.map(e=>e.name),...e.selectedTools.map(e=>e.name),...e.activatedToolNames,...e.extensionToolsByName.keys(),...e.metaToolsByName.keys()]),i=[...this.toolCoverage.keys()].filter(e=>!r.has(e)).toSorted((e,t)=>e.localeCompare(t)),a=[...r].filter(e=>!this.toolCoverage.has(e)).toSorted((e,t)=>e.localeCompare(t));return{called:n,calledCount:this.toolCoverage.size,uncataloguedCalls:i,uncataloguedCallCount:i.length,totalKnownTools:r.size,uncalled:a,uncalledCount:a.length}}};function i(e){return!e||typeof e.getDomainInstance!=`function`?null:e.getDomainInstance(`serverRuntimeState`)??null}async function a(t){let n=i(t);if(!n)return;let r=n.getPendingActivatedDomains();if(r.length!==0){for(let i of r)if(!(t.enabledDomains.has(i)&&t.domainTtlEntries.has(i)))try{let{handleActivateDomain:e}=await import(`./index.mjs`).then(e=>e.n),r=n.getPendingDomainTtl(i);await e(t,{domain:i,...r?{ttlMinutes:r.ttlMinutes}:{}})}catch(t){e.warn(`Failed to restore activated domain "${i}":`,t)}}}export{i as n,a as r,r as t};
@@ -0,0 +1 @@
1
+ import{c as e,d as t,g as n,h as r,l as i,m as a,o,p as s,t as c,w as l,y as u}from"./Win32API-G7QPyckq.mjs";import{FlushInstructionCache as d}from"./Win32Debug-6yzmtv5b.mjs";const f=3072,p=[{kind:`gtc64`,apiName:`GetTickCount64`,scaleOff:256,trampOff:384,baseOff:8},{kind:`qpc`,apiName:`QueryPerformanceCounter`,scaleOff:448,trampOff:576,baseOff:16},{kind:`gtc32`,apiName:`GetTickCount`,scaleOff:640,trampOff:768,baseOff:24}];var m=class{states=new Map;async apply(n,r){this.states.has(n)&&await this.remove(n);let s=l(n,!0),d=[],f=[];try{let c=o(`kernel32.dll`);if(c===0n)throw Error(`Cannot find kernel32.dll`);let l=a(s,0n,4096,i.COMMIT|i.RESERVE,t.EXECUTE_READWRITE);if(l===0n)throw Error(`VirtualAllocEx failed for speedhack shared memory`);let m=Buffer.alloc(8);m.writeDoubleLE(r,0),u(s,l+BigInt(0),m),u(s,l+BigInt(8),Buffer.alloc(8,0)),u(s,l+BigInt(16),Buffer.alloc(8,0)),u(s,l+BigInt(24),Buffer.alloc(8,0));let h=0;for(let t of p){let n=e(c,t.apiName);if(n!==0n)try{this.installHook(s,n,l,t,h)&&(d.push(t.apiName),f.push(t.kind),h+=1)}catch{}}return this.states.set(n,{pid:n,speed:r,hookedApis:d,isActive:!0,allocatedMemory:`0x${l.toString(16).toUpperCase()}`,patchIds:f}),{success:d.length>0,hookedApis:d}}catch(e){throw c(s),e}finally{c(s)}}async setSpeed(e,t){let n=this.states.get(e);if(!n||!n.isActive||!n.allocatedMemory)return!1;let r=BigInt(n.allocatedMemory),i=l(e,!0);try{let e=Buffer.alloc(8);return e.writeDoubleLE(t,0),u(i,r+BigInt(0),e),n.speed=t,!0}finally{c(i)}}getSpeed(e){let t=this.states.get(e);return t?.isActive?t.speed:null}async restore(e){return await this.remove(e)}async remove(e){let a=this.states.get(e);if(!a)return!1;let o=l(e,!0);try{if(a.allocatedMemory){let e=BigInt(a.allocatedMemory);for(let r=0;r<a.patchIds.length;r++)try{let i=s(o,e+BigInt(f+r*32),32),a=i.readBigUInt64LE(0),c=i.readUInt32LE(8);if(a!==0n&&c>0&&c<=14){let e=i.subarray(12,12+c),{oldProtect:r}=n(o,a,c,t.EXECUTE_READWRITE);u(o,a,e),d(o,a,c),n(o,a,c,r)}}catch{}r(o,e,0,i.RELEASE)}}finally{c(o)}return a.isActive=!1,this.states.delete(e),!0}isActive(e){return this.states.get(e)?.isActive??!1}listActive(){return Array.from(this.states.values()).filter(e=>e.isActive)}installHook(e,r,i,a,o){let c=s(e,r,14),l=i+BigInt(a.trampOff);u(e,l,c);let p=this.buildAbsoluteJump(r+BigInt(14));u(e,l+BigInt(14),Buffer.from(p));let m=this.buildScaleHandler(a.kind,i,a.scaleOff,a.trampOff);u(e,i+BigInt(a.scaleOff),m);let h=i+BigInt(a.scaleOff),g=this.buildAbsoluteJump(h),{oldProtect:_}=n(e,r,14,t.EXECUTE_READWRITE);u(e,r,Buffer.from(g)),d(e,r,14),n(e,r,14,_);let v=Buffer.alloc(32,0);return v.writeBigUInt64LE(r,0),v.writeUInt32LE(14,8),c.copy(v,12),u(e,i+BigInt(f+o*32),v),d(e,h,m.length),!0}buildScaleHandler(e,t,n,r){let i=e===`qpc`,a=e===`gtc64`?8:e===`qpc`?16:24,o=[];o.push(83),i&&o.push(86),o.push(72,131,236,i?40:32),i&&o.push(72,137,203);let s=o.length;o.push(232,0,0,0,0),i?(o.push(72,137,198),o.push(72,139,3)):o.push(72,137,195),o.push(73,184);for(let e=0;e<8;e+=1)o.push(Number(t>>BigInt(e*8)&255n));o.push(242,72,15,42,i?192:195),o.push(242,65,15,16,72,a),o.push(242,65,15,16,16),o.push(102,15,239,219),o.push(102,15,46,203);let c=o.length;o.push(117,0),o.push(242,65,15,17,64,a),i?o.push(72,137,3):o.push(72,137,216);let l=o.length;o.push(235,0);let u=o.length;o.push(242,15,92,193),o.push(242,15,89,194),o.push(242,15,88,193),o.push(242,72,15,44,192),i&&o.push(72,137,3);let d=o.length;i&&o.push(72,137,240),o.push(72,131,196,i?40:32),i&&o.push(94),o.push(91),o.push(195);let f=r-(n+s+5);return o[s+1]=f&255,o[s+2]=f>>8&255,o[s+3]=f>>16&255,o[s+4]=f>>24&255,o[c+1]=u-(c+2),o[l+1]=d-(l+2),Buffer.from(o)}buildAbsoluteJump(e){let t=Buffer.alloc(14);return t[0]=255,t[1]=37,t.writeUInt32LE(0,2),t.writeBigUInt64LE(e,6),Array.from(t)}};const h=new m;export{m as Speedhack,h as speedhack};
@@ -0,0 +1,2 @@
1
+ import{$r as e,Qr as t,Zr as n}from"./constants-nvsLpSri.mjs";import{t as r}from"./factory-BeND77hf.mjs";import{t as i}from"./NativeMemoryManager.impl-BIJzXMqH.mjs";var a=class{provider;readCString;isValidReadablePointer;constructor(e,t,n){this.provider=e,this.readCString=t,this.isValidReadablePointer=n}async parseRtti(e,t){try{let n=this.provider.readMemory(t,e-8n,8).data.readBigUInt64LE(0);if(!this.isValidReadablePointer(t,n))return null;let r=this.readCompleteObjectLocator(t,n);if(!r)return null;let i=n-BigInt(r.objectLocRVA),a=i+BigInt(r.typeDescRVA),o=this.readTypeDescriptor(t,a);return o?{className:o,baseClasses:await this.readClassDescriptor(t,i,r.classDescRVA)}:null}catch{return null}}readCompleteObjectLocator(e,t){try{let n=this.provider.readMemory(e,t,24).data,r=n.readUInt32LE(0);return r===1?{signature:r,typeDescRVA:n.readUInt32LE(12),classDescRVA:n.readUInt32LE(16),objectLocRVA:n.readUInt32LE(20)}:null}catch{return null}}readTypeDescriptor(e,n){let r=this.readCString(e,n+16n,t);return r?this.demangleMsvcName(r):null}async readClassDescriptor(e,n,r){let i=[];try{let a=n+BigInt(r),o=this.provider.readMemory(e,a,16).data,s=o.readUInt32LE(8),c=o.readUInt32LE(12);if(s>0&&s<20){let r=n+BigInt(c),a=this.provider.readMemory(e,r,s*4).data;for(let r=1;r<s;r++){let o=a.readUInt32LE(r*4),s=n+BigInt(o);try{let r=this.provider.readMemory(e,s,8).data.readUInt32LE(0),a=n+BigInt(r),o=this.readCString(e,a+16n,t);o&&i.push(this.demangleMsvcName(o))}catch{break}}}}catch{}return i}demangleMsvcName(e){let t=e.match(/\.?\?A[VU](.+?)@@/);if(t)return t[1];let n=e.match(/\.?\?AW4(.+?)@@/);return n?n[1]:e.replace(/^\./,``).replace(/@@$/,``)}},o=class{provider;readCString;isValidReadablePointer;isValidExecutablePointer;constructor(e,t,n,r){this.provider=e,this.readCString=t,this.isValidReadablePointer=n,this.isValidExecutablePointer=r}classifyValue(e,t,n,r){if(r>=8){let r=e.readBigUInt64LE(n),i=this.checkVtablePointer(t,n,r);if(i)return i;let a=this.checkPointer(t,r);if(a)return a}if(r>=4){let t=e.readUInt32LE(n),i=e.readInt32LE(n),a=e.readFloatLE(n);return this.checkPadding(e,n,r,t)||(t===0?{type:`int32`,size:4,value:`0`,confidence:.4,notes:`zero value — could be int, bool, or padding`}:this.checkBool(t)||this.checkFloat(a,t)||this.checkInt32(t,i))}return r>=2?{type:`uint16`,size:2,value:e.readUInt16LE(n).toString(),confidence:.4}:{type:`uint8`,size:1,value:e.readUInt8(n).toString(),confidence:.3}}checkVtablePointer(e,t,n){if(t!==0||n===0n||!this.isValidExecutablePointer(e,n))return null;try{let t=this.provider.readMemory(e,n,16).data.readBigUInt64LE(0);if(this.isValidExecutablePointer(e,t))return{type:`vtable_ptr`,size:8,value:`0x${n.toString(16).toUpperCase()}`,confidence:.9,notes:`likely vtable pointer (points to array of executable pointers)`}}catch{}return null}checkPointer(e,t){return t===0n||t<=65536n||t>=140737488355327n||!this.isValidReadablePointer(e,t)?null:this.checkStringPointer(e,t)||{type:`pointer`,size:8,value:`0x${t.toString(16).toUpperCase()}`,confidence:.7,notes:`valid pointer to readable memory`}}checkStringPointer(e,t){let n=this.readCString(e,t,64);return!n||n.length<2?null:{type:`string_ptr`,size:8,value:`0x${t.toString(16).toUpperCase()} → "${n.slice(0,32)}${n.length>32?`...`:``}"`,confidence:.75,notes:`string pointer: "${n.slice(0,64)}"`}}checkPadding(e,t,n,r){if(r!==0||n<8||e.readUInt32LE(t+4)!==0)return null;let i=0;for(let n=t;n<e.length&&e[n]===0;n++)i++;let a=Math.min(i,n)&-8;return{type:`padding`,size:a,value:`0x${`00`.repeat(Math.min(a,8))}`,confidence:.6}}checkBool(e){return e===1?{type:`bool`,size:4,value:`true`,confidence:.5,notes:`value is 1 — could be boolean`}:null}checkFloat(e,t){if(!isFinite(e)||isNaN(e)||Math.abs(e)<=1e-10||Math.abs(e)>=1e8)return null;let n=t>0&&t<1e5,r=Math.abs(e-Math.round(e))>.001;return r||!n&&Math.abs(e)<1e4?{type:`float`,size:4,value:e.toFixed(6),confidence:r?.8:.5,notes:r?`IEEE 754 float with fractional part`:`could be float or int`}:null}checkInt32(e,t){return e<2147483648?{type:`int32`,size:4,value:t.toString(),confidence:.6}:{type:`uint32`,size:4,value:e.toString(),confidence:.5}}},s=class{provider;constructor(e){this.provider=e}readCString(e,t,n){try{let r=this.provider.readMemory(e,t,n).data,i=r.indexOf(0);if(i<0)return null;let a=r.subarray(0,i).toString(`ascii`);return/^[\x20-\x7E]+$/.test(a)&&a.length>=1?a:null}catch{return null}}fieldTypeToCType(e,t){switch(e){case`int8`:return`int8_t`;case`uint8`:return`uint8_t`;case`int16`:return`int16_t`;case`uint16`:return`uint16_t`;case`int32`:return`int32_t`;case`uint32`:return`uint32_t`;case`int64`:return`int64_t`;case`uint64`:return`uint64_t`;case`float`:return`float`;case`double`:return`double`;case`pointer`:return`void*`;case`vtable_ptr`:return`void**`;case`string_ptr`:return`char*`;case`bool`:return`bool`;case`padding`:return`uint8_t[${t}]`;case`unknown`:return`uint8_t[${t}]`;default:return`uint8_t[${t}]`}}async getModuleEntries(e){let t=new Map;try{let n=await i.enumerateModules(e);if(n.success&&n.modules)for(let e of n.modules){let n=BigInt(e.baseAddress.startsWith(`0x`)?e.baseAddress:`0x${e.baseAddress}`);t.set(e.name.toLowerCase(),{name:e.name,base:n,size:e.size})}}catch{}return t}resolveToModule(e,t){for(let n of t.values())if(e>=n.base&&e<n.base+BigInt(n.size))return{module:n.name,offset:Number(e-n.base)};return null}isValidReadablePointer(e,t){try{let n=this.provider.queryRegion(e,t);return n?n.isReadable:!1}catch{return!1}}isValidExecutablePointer(e,t){try{let n=this.provider.queryRegion(e,t);return n?n.isReadable&&n.isExecutable:!1}catch{return!1}}},c=class{providerCache=null;utils=null;classifier=null;rttiParser=null;get provider(){return this.providerCache||(this.providerCache=r(),this.initializeComponents()),this.providerCache}set provider(e){this.providerCache=e,e&&this.initializeComponents()}ensureComponents(){this.utils||this.provider}initializeComponents(){this.providerCache&&(this.utils=new s(this.providerCache),this.classifier=new o(this.providerCache,this.utils.readCString.bind(this.utils),this.utils.isValidReadablePointer.bind(this.utils),this.utils.isValidExecutablePointer.bind(this.utils)),this.rttiParser=new a(this.providerCache,this.utils.readCString.bind(this.utils),this.utils.isValidReadablePointer.bind(this.utils)))}async analyzeStructure(e,t,r){let i=r?.size??n,a=BigInt(t.startsWith(`0x`)?t:`0x${t}`),o=this.provider.openProcess(e,!1);try{let e=this.provider.readMemory(o,a,i).data,t=[],n=0;for(;n<i;){let r=i-n;if(r<1)break;let a=this.classifier.classifyValue(e,o,n,r);t.push({offset:n,size:a.size,type:a.type,name:`field_0x${n.toString(16).padStart(2,`0`).toUpperCase()}`,value:a.value,confidence:a.confidence,notes:a.notes}),n+=a.size}let s,c,l;if(t.length>0&&t[0].type===`vtable_ptr`&&(s=t[0].value,r?.parseRtti!==!1&&s))try{let e=BigInt(s.startsWith(`0x`)?s:`0x${s}`),t=await this.rttiParser.parseRtti(e,o);t&&(c=t.className,l=t.baseClasses)}catch{}return{baseAddress:`0x${a.toString(16).toUpperCase()}`,totalSize:i,fields:t,vtableAddress:s,className:c,baseClasses:l,timestamp:Date.now()}}finally{this.provider.closeProcess(o)}}async parseVtable(t,n){let r=BigInt(n.startsWith(`0x`)?n:`0x${n}`),i=this.provider.openProcess(t,!1);try{let n=[],a=await this.utils.getModuleEntries(t);for(let t=0;t<e;t++){let e=r+BigInt(t*8),o;try{o=this.provider.readMemory(i,e,8).data.readBigUInt64LE(0)}catch{break}if(!this.utils.isValidExecutablePointer(i,o))break;let s=this.utils.resolveToModule(o,a);n.push({index:t,address:`0x${o.toString(16).toUpperCase()}`,module:s?.module,moduleOffset:s?.offset})}let o,s;try{let e=await this.rttiParser.parseRtti(r,i);e&&(o=e.className,s=e.baseClasses)}catch{}return{address:`0x${r.toString(16).toUpperCase()}`,functionCount:n.length,functions:n,rttiName:o,baseClasses:s}}finally{this.provider.closeProcess(i)}}exportToCStruct(e,t){this.ensureComponents();let n=t??e.className??`UnknownStruct`,r=[];r.push(`struct ${n} { // size: 0x${e.totalSize.toString(16).toUpperCase()} (${e.totalSize} bytes)`);for(let t of e.fields){let e=this.utils.fieldTypeToCType(t.type,t.size),n=`0x${t.offset.toString(16).padStart(2,`0`).toUpperCase()}`,i=t.notes?`// +${n} ${t.notes}`:`// +${n} = ${t.value}`;t.type===`padding`?r.push(` uint8_t _pad_${t.offset.toString(16)}[${t.size}]; ${i}`):r.push(` ${e} ${t.name}; ${i}`)}return r.push(`};`),{name:n,definition:r.join(`
2
+ `),size:e.totalSize,fieldCount:e.fields.filter(e=>e.type!==`padding`).length}}async compareInstances(e,t,r,i){let a=i??n,[o,s]=await Promise.all([this.analyzeStructure(e,t,{size:a,parseRtti:!1}),this.analyzeStructure(e,r,{size:a,parseRtti:!1})]),c=[],l=[],u=new Map(s.fields.map(e=>[e.offset,e]));for(let e of o.fields){let t=u.get(e.offset);t&&(e.value===t.value&&e.type===t.type?c.push(e):l.push({offset:e.offset,value1:e.value,value2:t.value,type:e.type}))}return{matching:c,differing:l}}async parseRtti(e,t,n){let r=BigInt(t.startsWith(`0x`)?t:`0x${t}`),i=!n,a=n??this.provider.openProcess(e,!1);try{return await this.rttiParser.parseRtti(r,a)}finally{i&&this.provider.closeProcess(a)}}demangleMsvcName(e){let t=e.match(/\.?\?A[VU](.+?)@@/);if(t)return t[1];let n=e.match(/\.?\?AW4(.+?)@@/);return n?n[1]:e.replace(/^\./,``).replace(/@@$/,``)}isValidReadablePointer(e,t){return this.ensureComponents(),this.utils.isValidReadablePointer(e,t)}isValidExecutablePointer(e,t){return this.ensureComponents(),this.utils.isValidExecutablePointer(e,t)}fieldTypeToCType(e,t){return this.ensureComponents(),this.utils.fieldTypeToCType(e,t)}classifyValue(e,t,n,r,i){return this.ensureComponents(),i===void 0?this.classifier.classifyValue(e,t,n,r):this.classifier.classifyValue(e,t,r,i)}};const l=new c;export{c as StructureAnalyzer,l as structureAnalyzer};
@@ -0,0 +1 @@
1
+ import{t as e}from"./registry-7h8jJ9y9.mjs";function t(t,n){return e(t,n)}export{t};
@@ -1 +1 @@
1
- import"./logger-CCikqqvj.mjs";import{Kt as e}from"./constants-DMv3svps.mjs";import{promisify as t}from"node:util";import{execFile as n}from"node:child_process";const r=t(n);async function i(t,n=[`--version`],i=e){try{let{stdout:e}=await r(process.platform===`win32`?`where`:`which`,[t],{timeout:i,windowsHide:!0}),a=e.trim().split(/\r?\n/)[0],o;try{let{stdout:e}=await r(t,n,{timeout:i,windowsHide:!0}),a=e.trim().split(/\r?\n/)[0];o=a?a.substring(0,100):void 0}catch{}return{available:!0,path:a,version:o}}catch(e){let n=typeof e==`object`&&e&&`code`in e?e.code:void 0,r=e instanceof Error?e.message:typeof e==`object`&&e&&`message`in e?String(e.message??``):String(e??``);return{available:!1,reason:n===`ENOENT`?`Command '${t}' not found in PATH`:`Probe failed: ${r.substring(0,200)}`}}}export{i as t};
1
+ import"./logger-BGCcd-jJ.mjs";import{et as e}from"./constants-nvsLpSri.mjs";import{promisify as t}from"node:util";import{execFile as n}from"node:child_process";const r=t(n);async function i(t,n=[`--version`],i=e){try{let{stdout:e}=await r(process.platform===`win32`?`where`:`which`,[t],{timeout:i,windowsHide:!0}),a=e.trim().split(/\r?\n/)[0],o;try{let{stdout:e}=await r(t,n,{timeout:i,windowsHide:!0}),a=e.trim().split(/\r?\n/)[0];o=a?a.substring(0,100):void 0}catch{}return{available:!0,path:a,version:o}}catch(e){let n=typeof e==`object`&&e&&`code`in e?e.code:void 0,r=e instanceof Error?e.message:typeof e==`object`&&e&&`message`in e?String(e.message??``):String(e??``);return{available:!1,reason:n===`ENOENT`?`Command '${t}' not found in PATH`:`Probe failed: ${r.substring(0,200)}`}}}export{i as t};
@@ -0,0 +1 @@
1
+ import{t as e}from"./logger-BGCcd-jJ.mjs";import{$ as t}from"./constants-nvsLpSri.mjs";import{t as n}from"./ToolProbe-B02GC3ZY.mjs";const r=[{name:`wabt.wasm2wat`,command:`wasm2wat`,versionArgs:[`--version`],required:!1,envAllowlist:[]},{name:`wabt.wasm-objdump`,command:`wasm-objdump`,versionArgs:[`--version`],required:!1,envAllowlist:[]},{name:`wabt.wasm-decompile`,command:`wasm-decompile`,versionArgs:[`--version`],required:!1,envAllowlist:[]},{name:`wabt.wasm2c`,command:`wasm2c`,versionArgs:[`--version`],required:!1,envAllowlist:[]},{name:`wabt.wat2wasm`,command:`wat2wasm`,versionArgs:[`--version`],required:!1,envAllowlist:[]},{name:`binaryen.wasm-opt`,command:`wasm-opt`,versionArgs:[`--version`],required:!1,envAllowlist:[]},{name:`runtime.wasmtime`,command:`wasmtime`,versionArgs:[`--version`],required:!1,envAllowlist:[]},{name:`runtime.wasmer`,command:`wasmer`,versionArgs:[`--version`],required:!1,envAllowlist:[]},{name:`miniapp.unpacker`,command:`unveilr`,versionArgs:[`--version`],required:!1,envAllowlist:[]},{name:`platform.jadx`,command:`jadx`,versionArgs:[`--version`],required:!1,envAllowlist:[]},{name:`analysis.ast-grep`,command:`ast-grep`,versionArgs:[`--version`],required:!1,envAllowlist:[]},{name:`analysis.wakaru`,command:`wakaru`,versionArgs:[`--version`],required:!1,envAllowlist:[]},{name:`analysis.restringer`,command:`restringer`,versionArgs:[`--version`],required:!1,envAllowlist:[]},{name:`analysis.z3`,command:`z3`,versionArgs:[`--version`],required:!1,envAllowlist:[]},{name:`syscall.strace`,command:`strace`,versionArgs:[`--version`],required:!1,envAllowlist:[]},{name:`syscall.bpftrace`,command:`bpftrace`,versionArgs:[`--version`],required:!1,envAllowlist:[]}];var i=class{specs=new Map;probeCache=new Map;probeCacheExpiry=0;PROBE_CACHE_TTL=t;constructor(e){for(let e of r)this.specs.set(e.name,e);if(e)for(let t of e)this.specs.set(t.name,t)}getSpec(e){let t=this.specs.get(e);if(!t)throw Error(`Tool '${e}' is not registered in the allowlist`);return t}isRegistered(e){return this.specs.has(e)}getRegisteredTools(){return Array.from(this.specs.keys())}async probeAll(t=!1){let r=Date.now();if(!t&&this.probeCache.size>0&&r<this.probeCacheExpiry)return Object.fromEntries(this.probeCache);let i={},a=[];for(let[e,t]of this.specs)a.push(n(t.command,t.versionArgs).then(t=>{i[e]=t,this.probeCache.set(e,t)}));await Promise.all(a),this.probeCacheExpiry=r+this.PROBE_CACHE_TTL;let o=Object.values(i).filter(e=>e.available).length;return e.info(`[ToolRegistry] Probed ${this.specs.size} tools: ${o} available`),i}getCachedProbe(e){return this.probeCache.get(e)}register(t){this.specs.set(t.name,t),this.probeCache.delete(t.name),e.debug(`[ToolRegistry] Registered tool: ${t.name} -> ${t.command}`)}};export{i as t};
@@ -1,4 +1,4 @@
1
- import{Ar as e,Cr as t,Dr as n,Er as r,Or as i,Tr as a,jr as o,kr as s,wr as c}from"./constants-DMv3svps.mjs";import{i as l,n as u,p as d}from"./ToolCatalog-DgmQXdsm.mjs";import{t as f}from"./MCPServer.search.validation-DnifPCCv.mjs";const p=/(browser|page|navigate|click|type|screenshot|scrape|network|request|response|api|traffic|hook|capture|intercept|monitor|浏览器|页面|导航|点击|输入|截图|爬取|网络|请求|响应|接口|流量|抓包|拦截|监控)/i,m=/(token budget|cache|artifact|extension|plugin|reload|doctor|cleanup|memory|profile|tool list|令牌预算|缓存|工件|扩展|插件|重载|环境诊断|清理|内存|配置)/i,h=/(stateless|deterministic|pure compute|offline|decode|encode|hex|base64|protobuf|msgpack|checksum|hash|payload|frame|packet|bytes?|bytecode|pcap|protocol|state machine|field inference|ast transform|crypto harness|无状态|确定性|纯算|离线|解码|编码|十六进制|校验和|载荷|字节|协议|报文|帧|字段推断|状态机|构包)/i;let g=null;const _=new Map;function v(){if(g)return g;let e=[];for(let t of d())t.workflowRule&&e.push({patterns:[...t.workflowRule.patterns],domain:t.domain,priority:t.workflowRule.priority,tools:[...t.workflowRule.tools],hint:t.workflowRule.hint});return g=[...e].toSorted((e,t)=>t.priority-e.priority),_.clear(),g}function y(e){let t=_.get(e);if(t!==void 0)return t;let n=[];for(let t of v())for(let r of t.patterns)if(r.test(e)){n.push(t);break}let r=n.length===0?null:n.toSorted((e,t)=>t.priority-e.priority)[0];if(_.size>=64){let e=_.keys().next().value;e!==void 0&&_.delete(e)}return _.set(e,r),r}function b(e,t){let n=null;for(let[r,i]of t.extensionWorkflowRuntimeById.entries()){let a=i.route??i.workflow.route;if(!a)continue;let o=t.extensionWorkflowsById.get(r),s=o?.displayName??i.workflow.displayName,c=o?.description??i.workflow.description??`Workflow route`;for(let t of a.triggerPatterns){if(!t.test(e))continue;let i=a.priority/100;(!n||i>n.confidence)&&(n={workflow:{id:r,name:s,description:c,route:a},confidence:i,matchedPattern:t.source});break}}return n}function x(e,t){return t?.domain!==`browser`&&t?.domain!==`network`&&C(e)?!1:t?.domain===`browser`||t?.domain===`network`||p.test(e)}function S(e){return m.test(e)}function C(e){return h.test(e)}function w(e,t){if(e.length<2)return null;let n=d();if(n.length===0)return null;let r=new Map,i=new Map;for(let e of n)if(e.toolDependencies)for(let a of e.toolDependencies){let e=new Set(E(a,n)),o=T(a.from,n),s=T(a.to,n);if(o&&s&&o!==s){let e=r.get(o)??new Set;e.add(s),r.set(o,e);let n=i.get(o)??new Set;n.add(a.from),t.has(a.to)&&n.add(a.to),i.set(o,n)}for(let t of e)if(t!==o&&o){let e=r.get(o)??new Set;e.add(t),r.set(o,e)}}let a=new Set;for(let t of e)t.domain&&a.add(t.domain);if(a.size<2)return null;let o=[...a];for(let e=0;e<o.length;e++)for(let i=e+1;i<o.length;i++){let a=o[e],s=o[i];if(!(r.get(a)?.has(s)||r.get(s)?.has(a)))continue;let c=new Set;for(let e of n)if(e.toolDependencies)for(let r of e.toolDependencies){let e=T(r.from,n),i=T(r.to,n);(e===a&&i===s||e===s&&i===a)&&(t.has(r.from)&&c.add(r.from),t.has(r.to)&&c.add(r.to))}let l=[...c];if(!(l.length<2))return{id:`dynamic-${a}-${s}`,hint:`${a} ↔ ${s} (declared dependency)`,domains:[a,s],tools:l.slice(0,5),priority:75}}return null}function T(e,t){for(let n of t)for(let t of n.registrations)if(t.tool.name===e)return t.domain??n.domain;return null}function E(e,t){return[T(e.from,t),T(e.to,t)].filter(e=>e!==null)}let D=null;function O(){return D||=new Map(u.map(e=>[e.name,e])),D}function k(e,t){let n=f(e),r=O().get(n);if(r)return r.inputSchema;let i=t.extensionToolsByName.get(n);if(i)return i.tool.inputSchema;let a=t.metaToolsByName.get(n);if(a)return a.inputSchema}function A(e,t){let n=f(e),r=O().get(n);if(r?.description)return r.description.split(`
1
+ import{ci as e,di as t,fi as n,li as r,mi as i,oi as a,pi as o,si as s,ui as c}from"./constants-nvsLpSri.mjs";import{d as l,o as u,p as d}from"./registry-7h8jJ9y9.mjs";import{t as f}from"./MCPServer.search.validation-DnifPCCv.mjs";const p=/(browser|page|navigate|click|type|screenshot|scrape|network|request|response|api|traffic|hook|capture|intercept|monitor|浏览器|页面|导航|点击|输入|截图|爬取|网络|请求|响应|接口|流量|抓包|拦截|监控)/i,m=/(token budget|cache|artifact|extension|plugin|reload|doctor|cleanup|memory|profile|tool list|令牌预算|缓存|工件|扩展|插件|重载|环境诊断|清理|内存|配置)/i,h=/(stateless|deterministic|pure compute|offline|decode|encode|hex|base64|protobuf|msgpack|checksum|hash|payload|frame|packet|bytes?|bytecode|pcap|protocol|state machine|field inference|ast transform|crypto harness|无状态|确定性|纯算|离线|解码|编码|十六进制|校验和|载荷|字节|协议|报文|帧|字段推断|状态机|构包)/i;let g=null;const _=new Map;function v(){if(g)return g;let e=[];for(let t of u())t.workflowRule&&e.push({patterns:[...t.workflowRule.patterns],domain:t.domain,priority:t.workflowRule.priority,tools:[...t.workflowRule.tools],hint:t.workflowRule.hint});return g=[...e].toSorted((e,t)=>t.priority-e.priority),_.clear(),g}function y(e){let t=_.get(e);if(t!==void 0)return t;let n=[];for(let t of v())for(let r of t.patterns)if(r.test(e)){n.push(t);break}let r=n.length===0?null:n.toSorted((e,t)=>t.priority-e.priority)[0];if(_.size>=64){let e=_.keys().next().value;e!==void 0&&_.delete(e)}return _.set(e,r),r}function b(e,t){let n=null;for(let[r,i]of t.extensionWorkflowRuntimeById.entries()){let a=i.route??i.workflow.route;if(!a)continue;let o=t.extensionWorkflowsById.get(r),s=o?.displayName??i.workflow.displayName,c=o?.description??i.workflow.description??`Workflow route`;for(let t of a.triggerPatterns){if(!t.test(e))continue;let i=a.priority/100;(!n||i>n.confidence)&&(n={workflow:{id:r,name:s,description:c,route:a},confidence:i,matchedPattern:t.source});break}}return n}function x(e,t){return t?.domain!==`browser`&&t?.domain!==`network`&&C(e)?!1:t?.domain===`browser`||t?.domain===`network`||p.test(e)}function S(e){return m.test(e)}function C(e){return h.test(e)}function w(e,t){if(e.length<2)return null;let n=u();if(n.length===0)return null;let r=new Map,i=new Map;for(let e of n)if(e.toolDependencies)for(let a of e.toolDependencies){let e=new Set(E(a,n)),o=T(a.from,n),s=T(a.to,n);if(o&&s&&o!==s){let e=r.get(o)??new Set;e.add(s),r.set(o,e);let n=i.get(o)??new Set;n.add(a.from),t.has(a.to)&&n.add(a.to),i.set(o,n)}for(let t of e)if(t!==o&&o){let e=r.get(o)??new Set;e.add(t),r.set(o,e)}}let a=new Set;for(let t of e)t.domain&&a.add(t.domain);if(a.size<2)return null;let o=[...a];for(let e=0;e<o.length;e++)for(let i=e+1;i<o.length;i++){let a=o[e],s=o[i];if(!(r.get(a)?.has(s)||r.get(s)?.has(a)))continue;let c=new Set;for(let e of n)if(e.toolDependencies)for(let r of e.toolDependencies){let e=T(r.from,n),i=T(r.to,n);(e===a&&i===s||e===s&&i===a)&&(t.has(r.from)&&c.add(r.from),t.has(r.to)&&c.add(r.to))}let l=[...c];if(!(l.length<2))return{id:`dynamic-${a}-${s}`,hint:`${a} ↔ ${s} (declared dependency)`,domains:[a,s],tools:l.slice(0,5),priority:75}}return null}function T(e,t){for(let n of t)for(let t of n.registrations)if(t.tool.name===e)return t.domain??n.domain;return null}function E(e,t){return[T(e.from,t),T(e.to,t)].filter(e=>e!==null)}let D=null;function O(){return D||=new Map(l.map(e=>[e.name,e])),D}function k(e,t){let n=f(e),r=O().get(n);if(r)return r.inputSchema;let i=t.extensionToolsByName.get(n);if(i)return i.tool.inputSchema;let a=t.metaToolsByName.get(n);if(a)return a.inputSchema}function A(e,t){let n=f(e),r=O().get(n);if(r?.description)return r.description.split(`
2
2
  `)[0]||`No description available`;let i=t.extensionToolsByName.get(n);if(i?.tool?.description)return i.tool.description.split(`
3
3
  `)[0]||`No description available`;let a=t.metaToolsByName.get(n);return a?.description&&a.description.split(`
4
- `)[0]||`No description available`}function j(e,t){let n=f(e);return new Set([...t.selectedTools.map(e=>e.name),...t.activatedToolNames]).has(n)}function M(e){return new Set([...u.map(e=>e.name),...e.extensionToolsByName.keys()])}function N(e,t){return l(e)??t.extensionToolsByName.get(e)?.domain??null}async function P(e){if(!e.pageController||typeof e.pageController.getPage!=`function`)return!1;try{return!!await e.pageController.getPage()}catch{return!1}}function F(e){if(!e.consoleMonitor)return!1;try{if(typeof e.consoleMonitor.getNetworkStatus==`function`)return!!e.consoleMonitor.getNetworkStatus().enabled;if(typeof e.consoleMonitor.isNetworkEnabled==`function`)return!!e.consoleMonitor.isNetworkEnabled()}catch{}return!1}function I(e){if(!e.consoleMonitor||typeof e.consoleMonitor.getNetworkRequests!=`function`)return 0;try{let t=e.consoleMonitor.getNetworkRequests({limit:1});return Array.isArray(t)?t.length:0}catch{try{let t=e.consoleMonitor.getNetworkRequests();return Array.isArray(t)?t.length:0}catch{return 0}}}async function L(e){return{hasActivePage:await P(e),networkEnabled:F(e),capturedRequestCount:I(e)}}function R(e,t){if(!C(e))return[];let n=[],r=(e,r)=>{t.has(e)&&!n.some(t=>t.name===e)&&n.push({name:e,description:r})};return r(`binary_detect_format`,`Detect the payload encoding or container before decoding`),r(`binary_decode`,`Decode the payload into deterministic offline bytes or structured output`),r(`proto_auto_detect`,`Infer a likely protocol layout from repeated payload samples`),r(`proto_infer_fields`,`Derive stable field boundaries and candidate semantics`),r(`proto_infer_state_machine`,`Infer request/response state transitions from repeated samples`),r(`crypto_test_harness`,`Validate extracted signing or crypto logic with deterministic test vectors`),r(`crypto_compare`,`Compare competing crypto implementations against the same vectors`),r(`network_get_requests`,`Collect request or response samples only if payload bytes still need to be extracted`),n}function z(e){return e.includes(`Browser must be launched`)?e=>e.hasActivePage:e.includes(`Network monitoring must be enabled`)?e=>e.networkEnabled:e.includes(`Debugger must be enabled`)||e.includes(`Debugger must be attached`)||e.includes(`Page must be navigated`)||e.includes(`WebSocket monitoring`)?e=>e.hasActivePage:()=>!1}let B=null;function V(){if(B)return B;let e={};for(let t of d())if(t.prerequisites)for(let[n,r]of Object.entries(t.prerequisites))e[n]=r.map(e=>({condition:e.condition,check:z(e.condition),fix:e.fix}));return B=e,B}function H(e,t,n){let r=[],i=e=>{n.has(e)&&!r.includes(e)&&r.push(e)};(e.domain===`browser`||e.domain===`network`)&&!t.hasActivePage&&(i(`browser_launch`),i(`browser_attach`)),e.domain===`network`&&(t.hasActivePage&&!t.networkEnabled&&i(`network_monitor`),t.hasActivePage&&t.networkEnabled&&t.capturedRequestCount>0&&i(`network_get_requests`));for(let t of e.tools)i(t);return e.domain===`network`&&t.hasActivePage&&t.networkEnabled&&i(`network_get_requests`),r}function U(e,t,n){let r=[],i=new Set,a=e.workflow.route.requiredDomains.includes(`browser`)||e.workflow.route.requiredDomains.includes(`network`),o=(e,t)=>{!n.has(e)||i.has(e)||(i.add(e),r.push({name:e,description:t}))};!t.hasActivePage&&a&&(o(`browser_launch`,`Launch a browser session before executing the preset`),o(`browser_attach`,`Attach preset tooling to the active browser session before capture begins`));for(let t of e.workflow.route.steps)o(t.toolName,t.description);return r}function W(e,t,n,r){return U(e,t,r).map((t,r)=>({name:t.name,domain:N(t.name,n),shortDescription:t.description,score:e.workflow.route.priority+e.confidence-r*.01,isActive:j(t.name,n)}))}function G(e,t,n){return R(e,n).map((e,n)=>({name:e.name,domain:N(e.name,t),shortDescription:e.description,score:90-n*.01,isActive:j(e.name,t)}))}function K(e,t){return{name:`run_extension_workflow`,domain:N(`run_extension_workflow`,t),shortDescription:`Execute routed workflow ${e.workflow.name} (${e.workflow.id}) via run_extension_workflow`,score:e.workflow.route.priority+e.confidence,isActive:j(`run_extension_workflow`,t)}}function q(e,t){return{kind:e.workflow.route.kind,id:e.workflow.id,name:e.workflow.name,description:e.workflow.description,confidence:e.confidence,matchedPattern:e.matchedPattern,requiredDomains:[...e.workflow.route.requiredDomains],steps:e.workflow.route.steps.map(e=>({id:e.id,toolName:e.toolName,domain:l(e.toolName)??t.extensionToolsByName.get(e.toolName)?.domain??null,description:e.description,prerequisites:[...e.prerequisites],parallel:e.parallel,isActive:j(e.toolName,t)}))}}function J(l,u,d,f){let p=x(u,d),m=S(u),h=C(u),g=l.map(l=>{let u=l.score;return p&&!m&&l.domain===`maintenance`&&(u*=a),h&&((l.domain===`browser`||l.domain===`network`||l.domain===`debugger`||l.domain===`instrumentation`||l.domain===`maintenance`)&&(u*=e),(l.domain===`core`||l.domain===`streaming`||l.domain===`workflow`)&&(u*=s),(l.domain===`encoding`||l.domain===`transform`||l.domain===`protocol-analysis`||l.domain===`sourcemap`||l.domain===`core`)&&(u*=i),(l.name===`binary_detect_format`||l.name===`binary_decode`||l.name===`crypto_test_harness`||l.name===`ast_transform_apply`||l.name===`proto_auto_detect`||l.name===`proto_infer_fields`||l.name===`proto_infer_state_machine`||l.name===`proto_fingerprint`)&&(u*=o)),p&&(!f.hasActivePage&&l.name===`browser_launch`&&(u*=c),!f.hasActivePage&&l.name===`browser_attach`&&(u*=t),f.hasActivePage&&!f.networkEnabled&&l.name===`network_monitor`&&(u*=n),f.hasActivePage&&f.networkEnabled&&f.capturedRequestCount>0&&l.name===`network_get_requests`&&(u*=r)),{...l,score:u}});return g.sort((e,t)=>t.score-e.score),g}export{S as _,H as a,M as c,N as d,k as f,x as g,y as h,K as i,L as l,w as m,q as n,V as o,j as p,G as r,J as s,W as t,A as u,C as v,b as y};
4
+ `)[0]||`No description available`}function j(e,t){let n=f(e);return new Set([...t.selectedTools.map(e=>e.name),...t.activatedToolNames]).has(n)}function M(e){return new Set([...l.map(e=>e.name),...e.extensionToolsByName.keys()])}function N(e,t){return d(e)??t.extensionToolsByName.get(e)?.domain??null}async function P(e){if(!e.pageController||typeof e.pageController.getPage!=`function`)return!1;try{return!!await e.pageController.getPage()}catch{return!1}}function F(e){if(!e.consoleMonitor)return!1;try{if(typeof e.consoleMonitor.getNetworkStatus==`function`)return!!e.consoleMonitor.getNetworkStatus().enabled;if(typeof e.consoleMonitor.isNetworkEnabled==`function`)return!!e.consoleMonitor.isNetworkEnabled()}catch{}return!1}function I(e){if(!e.consoleMonitor||typeof e.consoleMonitor.getNetworkRequests!=`function`)return 0;try{let t=e.consoleMonitor.getNetworkRequests({limit:1});return Array.isArray(t)?t.length:0}catch{try{let t=e.consoleMonitor.getNetworkRequests();return Array.isArray(t)?t.length:0}catch{return 0}}}async function L(e){return{hasActivePage:await P(e),networkEnabled:F(e),capturedRequestCount:I(e)}}function R(e,t){if(!C(e))return[];let n=[],r=(e,r)=>{t.has(e)&&!n.some(t=>t.name===e)&&n.push({name:e,description:r})};return r(`binary_detect_format`,`Detect the payload encoding or container before decoding`),r(`binary_decode`,`Decode the payload into deterministic offline bytes or structured output`),r(`proto_auto_detect`,`Infer a likely protocol layout from repeated payload samples`),r(`proto_infer_fields`,`Derive stable field boundaries and candidate semantics`),r(`proto_infer_state_machine`,`Infer request/response state transitions from repeated samples`),r(`crypto_test_harness`,`Validate extracted signing or crypto logic with deterministic test vectors`),r(`crypto_compare`,`Compare competing crypto implementations against the same vectors`),r(`network_get_requests`,`Collect request or response samples only if payload bytes still need to be extracted`),n}function z(e){return e.includes(`Browser must be launched`)?e=>e.hasActivePage:e.includes(`Network monitoring must be enabled`)?e=>e.networkEnabled:e.includes(`Debugger must be enabled`)||e.includes(`Debugger must be attached`)||e.includes(`Page must be navigated`)||e.includes(`WebSocket monitoring`)?e=>e.hasActivePage:()=>!1}let B=null;function V(){if(B)return B;let e={};for(let t of u())if(t.prerequisites)for(let[n,r]of Object.entries(t.prerequisites))e[n]=r.map(e=>({condition:e.condition,check:z(e.condition),fix:e.fix}));return B=e,B}function H(e,t,n){let r=[],i=e=>{n.has(e)&&!r.includes(e)&&r.push(e)};(e.domain===`browser`||e.domain===`network`)&&!t.hasActivePage&&(i(`browser_launch`),i(`browser_attach`)),e.domain===`network`&&(t.hasActivePage&&!t.networkEnabled&&i(`network_monitor`),t.hasActivePage&&t.networkEnabled&&t.capturedRequestCount>0&&i(`network_get_requests`));for(let t of e.tools)i(t);return e.domain===`network`&&t.hasActivePage&&t.networkEnabled&&i(`network_get_requests`),r}function U(e,t,n){let r=[],i=new Set,a=e.workflow.route.requiredDomains.includes(`browser`)||e.workflow.route.requiredDomains.includes(`network`),o=(e,t)=>{!n.has(e)||i.has(e)||(i.add(e),r.push({name:e,description:t}))};!t.hasActivePage&&a&&(o(`browser_launch`,`Launch a browser session before executing the preset`),o(`browser_attach`,`Attach preset tooling to the active browser session before capture begins`));for(let t of e.workflow.route.steps)o(t.toolName,t.description);return r}function W(e,t,n,r){return U(e,t,r).map((t,r)=>({name:t.name,domain:N(t.name,n),shortDescription:t.description,score:e.workflow.route.priority+e.confidence-r*.01,isActive:j(t.name,n)}))}function G(e,t,n){return R(e,n).map((e,n)=>({name:e.name,domain:N(e.name,t),shortDescription:e.description,score:90-n*.01,isActive:j(e.name,t)}))}function K(e,t){return{name:`run_extension_workflow`,domain:N(`run_extension_workflow`,t),shortDescription:`Execute routed workflow ${e.workflow.name} (${e.workflow.id}) via run_extension_workflow`,score:e.workflow.route.priority+e.confidence,isActive:j(`run_extension_workflow`,t)}}function q(e,t){return{kind:e.workflow.route.kind,id:e.workflow.id,name:e.workflow.name,description:e.workflow.description,confidence:e.confidence,matchedPattern:e.matchedPattern,requiredDomains:[...e.workflow.route.requiredDomains],steps:e.workflow.route.steps.map(e=>({id:e.id,toolName:e.toolName,domain:d(e.toolName)??t.extensionToolsByName.get(e.toolName)?.domain??null,description:e.description,prerequisites:[...e.prerequisites],parallel:e.parallel,isActive:j(e.toolName,t)}))}}function J(l,u,d,f){let p=x(u,d),m=S(u),h=C(u),g=l.map(l=>{let u=l.score;return p&&!m&&l.domain===`maintenance`&&(u*=e),h&&((l.domain===`browser`||l.domain===`network`||l.domain===`debugger`||l.domain===`instrumentation`||l.domain===`maintenance`)&&(u*=o),(l.domain===`core`||l.domain===`streaming`||l.domain===`workflow`)&&(u*=n),(l.domain===`encoding`||l.domain===`transform`||l.domain===`protocol-analysis`||l.domain===`sourcemap`||l.domain===`core`)&&(u*=t),(l.name===`binary_detect_format`||l.name===`binary_decode`||l.name===`crypto_test_harness`||l.name===`ast_transform_apply`||l.name===`proto_auto_detect`||l.name===`proto_infer_fields`||l.name===`proto_infer_state_machine`||l.name===`proto_fingerprint`)&&(u*=i)),p&&(!f.hasActivePage&&l.name===`browser_launch`&&(u*=s),!f.hasActivePage&&l.name===`browser_attach`&&(u*=a),f.hasActivePage&&!f.networkEnabled&&l.name===`network_monitor`&&(u*=c),f.hasActivePage&&f.networkEnabled&&f.capturedRequestCount>0&&l.name===`network_get_requests`&&(u*=r)),{...l,score:u}});return g.sort((e,t)=>t.score-e.score),g}export{S as _,H as a,M as c,N as d,k as f,x as g,y as h,K as i,L as l,w as m,q as n,V as o,j as p,G as r,J as s,W as t,A as u,C as v,b as y};