@jshookmcp/jshook 0.3.0 → 0.3.2

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 (346) hide show
  1. package/LICENSE +661 -661
  2. package/README.md +32 -49
  3. package/README.zh.md +32 -47
  4. package/dist/AntiCheatDetector-B6d4Qe9D.mjs +1 -0
  5. package/dist/BrowserSessionCoordinator-BJ-HOxo0.mjs +1 -0
  6. package/dist/CacheAdapters-CsNtQIR8.mjs +1 -0
  7. package/dist/CodeInjector-Cll_7bLJ.mjs +1 -0
  8. package/dist/ConsoleMonitor-CxDJV15E.mjs +306 -0
  9. package/dist/DOMInspector-C19J4zeq.mjs +95 -0
  10. package/dist/DarwinAPI-ZfQdpLNI.mjs +1 -0
  11. package/dist/DetailedDataManager-DmQ1LT-W.mjs +1 -0
  12. package/dist/EventBus-DL8iLA09.mjs +1 -0
  13. package/dist/EvidenceGraphBridge-BtbwXsLC.mjs +1 -0
  14. package/dist/ExtensionManager-BD724zkO.mjs +1 -0
  15. package/dist/ExtensionManager.tools-oVMJgPcN.mjs +1 -0
  16. package/dist/FingerprintManager-DT0EAUEo.mjs +1 -0
  17. package/dist/HardwareBreakpoint-BUfPdp0f.mjs +1 -0
  18. package/dist/HeapAnalyzer-B_aqY8oj.mjs +1 -0
  19. package/dist/{HookGeneratorBuilders.core.generators.storage-CTbB4Lcx.mjs → HookGeneratorBuilders.core.generators.storage-DzD6dIJd.mjs} +66 -101
  20. package/dist/InstrumentationSession-D_G1ZPyd.mjs +1 -0
  21. package/dist/MCPServer.search.handlers.domain-BbS-6LnX.mjs +1 -0
  22. package/dist/MemoryController-X1XNSn1n.mjs +2 -0
  23. package/dist/MemoryScanSession-DG_F-PjE.mjs +1 -0
  24. package/dist/MemoryScanner-g1_L1ub5.mjs +1 -0
  25. package/dist/NativeMemoryManager.impl-DniBe2wf.mjs +1 -0
  26. package/dist/NativeMemoryManager.utils-BHy1P_jM.mjs +1 -0
  27. package/dist/NetworkMonitor-B_-au6aV.mjs +185 -0
  28. package/dist/PEAnalyzer-yWQaGrcx.mjs +1 -0
  29. package/dist/PageController-Dfsm1_o7.mjs +1 -0
  30. package/dist/PointerChainEngine-BhCUkmxY.mjs +1 -0
  31. package/dist/PrerequisiteError-BjCQA-gK.mjs +1 -0
  32. package/dist/ProcessRegistry-C-bN48oR.mjs +1 -0
  33. package/dist/ResponseBuilder-BfWP-uaT.mjs +1 -0
  34. package/dist/ReverseEvidenceGraph-BhSYYdiI.mjs +2 -0
  35. package/dist/RingBuffer-Dm54ELKT.mjs +1 -0
  36. package/dist/ScriptManager-LWGPTdvD.mjs +7 -0
  37. package/dist/ServerRuntimeState-D2bWHqEE.mjs +1 -0
  38. package/dist/Speedhack-yseDPSZ9.mjs +1 -0
  39. package/dist/StealthVerifier-BmcxfwSF.mjs +1 -0
  40. package/dist/StructureAnalyzer-C5lpuZkg.mjs +2 -0
  41. package/dist/ToolCatalog-CYdD9F5f.mjs +1 -0
  42. package/dist/ToolError-DWU_z7gp.mjs +1 -0
  43. package/dist/ToolProbe-C7ZU2x7M.mjs +1 -0
  44. package/dist/ToolRegistry-C5oB8KP8.mjs +1 -0
  45. package/dist/ToolRouter.policy-CfhJczkt.mjs +4 -0
  46. package/dist/TraceRecorder-BiJWBXHX.mjs +272 -0
  47. package/dist/VersionDetector-CHT36Az0.mjs +9 -0
  48. package/dist/Win32API-eUCF57l_.mjs +1 -0
  49. package/dist/Win32Debug-CYrIQBvr.mjs +1 -0
  50. package/dist/WorkflowEngine-D876meOO.mjs +1 -0
  51. package/dist/analysis-D4swdMvq.mjs +6 -0
  52. package/dist/{antidebug-BRKeyt27.mjs → antidebug-7L3ygj_9.mjs} +8 -259
  53. package/dist/apk-packer-BqXcInnX.mjs +1 -0
  54. package/dist/artifactRetention-BCPQASm7.mjs +1 -0
  55. package/dist/artifacts-CkodUM4j.mjs +1 -0
  56. package/dist/authorization-schema-BOFwSXUN.mjs +1 -0
  57. package/dist/betterSqlite3-Brtq-SIQ.mjs +1 -0
  58. package/dist/binary-instrument-DU7V6TUM.mjs +7 -0
  59. package/dist/binary-secrets-PdMVoyt0.mjs +1 -0
  60. package/dist/bind-helpers-m2U8glkF.mjs +1 -0
  61. package/dist/boringssl-inspector-BBaJwwkU.mjs +2 -0
  62. package/dist/browser-Qqco2rOT.mjs +11 -0
  63. package/dist/capabilities-CyXuKUl1.mjs +1 -0
  64. package/dist/chunk-C_pMuVsO.mjs +1 -0
  65. package/dist/collector-Bpl6qy2L.mjs +1 -0
  66. package/dist/concurrency-DCr8WQ2M.mjs +1 -0
  67. package/dist/constants-BYj8Xek8.mjs +1 -0
  68. package/dist/coordination-CWXW1o8K.mjs +1 -0
  69. package/dist/dart-inspector-7AkPeZ_Q.mjs +0 -0
  70. package/dist/debugger-DyALjYMk.mjs +1 -0
  71. package/dist/definitions-BWxBke3r.mjs +1 -0
  72. package/dist/definitions-BYwATKc-.mjs +1 -0
  73. package/dist/definitions-B_83XfNQ.mjs +1 -0
  74. package/dist/definitions-Bf3H1EwV.mjs +1 -0
  75. package/dist/definitions-BftdXgXI.mjs +1 -0
  76. package/dist/definitions-Bio5XJYy.mjs +1 -0
  77. package/dist/definitions-C3qNgSn1.mjs +1 -0
  78. package/dist/definitions-CB6vmOer.mjs +1 -0
  79. package/dist/definitions-CMZRSy3k.mjs +1 -0
  80. package/dist/definitions-CQd7yCQH.mjs +1 -0
  81. package/dist/definitions-CT8ln6GQ.mjs +1 -0
  82. package/dist/definitions-Cenu6mxo.mjs +1 -0
  83. package/dist/definitions-D4g-MS10.mjs +1 -0
  84. package/dist/definitions-D5wl_8HN.mjs +1 -0
  85. package/dist/definitions-DAQm1Xar.mjs +1 -0
  86. package/dist/definitions-DP1vgxEY.mjs +1 -0
  87. package/dist/definitions-DxFNRQNK2.mjs +1 -0
  88. package/dist/definitions-Ibci7e_L.mjs +1 -0
  89. package/dist/definitions-OeLvmlQy.mjs +1 -0
  90. package/dist/definitions-RZYGD_Ey.mjs +1 -0
  91. package/dist/definitions-Tls8c0A0.mjs +1 -0
  92. package/dist/definitions-bybDvnG0.mjs +26 -0
  93. package/dist/definitions-l7TjdE6V.mjs +1 -0
  94. package/dist/encoding-ycOaz8Vr.mjs +2 -0
  95. package/dist/ensure-browser-core-DxWC-NTp.mjs +1 -0
  96. package/dist/evidence-graph-bridge-CV_UdYqj.mjs +1 -0
  97. package/dist/factory-CKr4fAE1.mjs +1 -0
  98. package/dist/flat-target-session-DvcQX7J5.mjs +1 -0
  99. package/dist/formatAddress-vLA_hOJt.mjs +1 -0
  100. package/dist/graphql-B2TiPEow.mjs +62 -0
  101. package/dist/handlers-0yKLRIfo.mjs +2 -0
  102. package/dist/handlers-8zN_vBIz.mjs +1 -0
  103. package/dist/handlers-B62K4FTc.mjs +1 -0
  104. package/dist/handlers-BpDlVVVU.mjs +1 -0
  105. package/dist/handlers-CMJK7m1c.mjs +31 -0
  106. package/dist/handlers-D2ZOul9p.mjs +54 -0
  107. package/dist/handlers-D5E40ssn.mjs +5 -0
  108. package/dist/handlers-DGbdQAgD.mjs +4 -0
  109. package/dist/handlers-DHO3rjsW.mjs +1 -0
  110. package/dist/handlers-FJ80VzUI.mjs +2 -0
  111. package/dist/handlers-VHWrxbM_.mjs +1 -0
  112. package/dist/handlers-l8QIKqBj.mjs +2 -0
  113. package/dist/handlers-mPFiNPe8.mjs +302 -0
  114. package/dist/{handlers-Dz9PYsCa.mjs → handlers-yo_xYzT8.mjs} +118 -904
  115. package/dist/handlers.impl-D9Hh8Bgl.mjs +1 -0
  116. package/dist/hooks-D4XLfgtV.mjs +600 -0
  117. package/dist/index.mjs +13 -5240
  118. package/dist/jadx-search-B_Yse0Zh.mjs +5 -0
  119. package/dist/logger-sBC6IdRT.mjs +1 -0
  120. package/dist/maintenance-BUpIukhg.mjs +1 -0
  121. package/dist/manifest-0Jpt_AQa.mjs +1 -0
  122. package/dist/manifest-B3fZbSWR.mjs +1 -0
  123. package/dist/manifest-B7NB2rh2.mjs +1 -0
  124. package/dist/manifest-BDi4nbH1.mjs +1 -0
  125. package/dist/manifest-BLDfkE7n.mjs +1 -0
  126. package/dist/manifest-BcXbB4gf.mjs +1 -0
  127. package/dist/manifest-Bdnc_vrc.mjs +1 -0
  128. package/dist/manifest-BuYKgCnp.mjs +1 -0
  129. package/dist/manifest-CBfNnGPV.mjs +1 -0
  130. package/dist/manifest-CPS1Xv69.mjs +1 -0
  131. package/dist/manifest-CQH9FhwI.mjs +1 -0
  132. package/dist/manifest-CRryuZF4.mjs +1 -0
  133. package/dist/manifest-CctIumog.mjs +1 -0
  134. package/dist/manifest-CvTe5ZGV2.mjs +1 -0
  135. package/dist/manifest-D-5GH0DV.mjs +1 -0
  136. package/dist/manifest-D3Ssf3IC.mjs +1 -0
  137. package/dist/manifest-D5ck3NvC.mjs +1 -0
  138. package/dist/manifest-D9jUUJAu.mjs +1 -0
  139. package/dist/manifest-DCx6w2XV.mjs +1 -0
  140. package/dist/manifest-DG19q-Ld.mjs +1 -0
  141. package/dist/manifest-DLMlD0Zc.mjs +1 -0
  142. package/dist/manifest-DYpn8w_h.mjs +1 -0
  143. package/dist/manifest-DYzWI8Xs.mjs +1 -0
  144. package/dist/manifest-D_obs5F4.mjs +1 -0
  145. package/dist/manifest-DujQqEQR.mjs +2 -0
  146. package/dist/manifest-DwL2ik8P.mjs +1 -0
  147. package/dist/manifest-ItF5P8A12.mjs +1 -0
  148. package/dist/manifest-KZphqIyX.mjs +1 -0
  149. package/dist/manifest-LG42zPLY2.mjs +1 -0
  150. package/dist/manifest-LLdI5m4T.mjs +1 -0
  151. package/dist/manifest-QYbQXJn0.mjs +1 -0
  152. package/dist/manifest-RcpX_MyZ.mjs +123 -0
  153. package/dist/manifest-YgVd8Sgz.mjs +1 -0
  154. package/dist/manifest-Zy7Odg5J.mjs +1 -0
  155. package/dist/manifest-ff1H7Pdp.mjs +1 -0
  156. package/dist/manifest-iuhF6pTL2.mjs +1 -0
  157. package/dist/manifest-nXHmtMSp2.mjs +1 -0
  158. package/dist/manifest-xWfu6iLo.mjs +1 -0
  159. package/dist/manifest-yC16OhL2.mjs +1 -0
  160. package/dist/manifest-ztWJoXy4.mjs +1 -0
  161. package/dist/matchesWildcardPattern-BAG6LvX5.mjs +1 -0
  162. package/dist/modules-BPBcSaM-.mjs +333 -0
  163. package/dist/mojo-ipc-BhwsdVUW.mjs +9 -0
  164. package/dist/native/scripts/linux/enum-windows.sh +12 -12
  165. package/dist/native/scripts/macos/enum-windows.applescript +22 -22
  166. package/dist/native-j8l473zn.mjs +961 -0
  167. package/dist/network-T0VRwNPd.mjs +7 -0
  168. package/dist/outputPaths-B4Ic4RZh.mjs +2 -0
  169. package/dist/parse-args-Bw413PlW.mjs +1 -0
  170. package/dist/platform-CzaQtISh.mjs +93 -0
  171. package/dist/playwright-cdp-fallback-DqFdx9-s.mjs +1 -0
  172. package/dist/process-CWhsCWrf.mjs +2 -0
  173. package/dist/proxy-DZFlDsG3.mjs +2 -0
  174. package/dist/registry-DH4sc1dt.mjs +1 -0
  175. package/dist/renderer-pid-9tJnZ_9N.mjs +1 -0
  176. package/dist/response-C7rKQst4.mjs +1 -0
  177. package/dist/search-defaults-lYBVn_3L.mjs +1 -0
  178. package/dist/server/plugin-api.d.mts +19 -36
  179. package/dist/server/plugin-api.mjs +1 -293
  180. package/dist/shared-state-board-BSjXLUV1.mjs +1 -0
  181. package/dist/sourcemap-Dh3Ai_ur.mjs +1 -0
  182. package/dist/ssrf-policy-CsIJGkpd.mjs +1 -0
  183. package/dist/streaming-BcJ0B6ao.mjs +1 -0
  184. package/dist/tool-builder-qif8M9-K.mjs +1 -0
  185. package/dist/transform-DOxzeWPB.mjs +103 -0
  186. package/dist/types-D9EiE5o9.mjs +1 -0
  187. package/dist/types-Fz69RzbZ.mjs +1 -0
  188. package/dist/wasm-CZ_HTfKR.mjs +174 -0
  189. package/dist/webcrack-C1iYG_EX.mjs +46 -0
  190. package/dist/workflow-BdwQmARn.mjs +101 -0
  191. package/package.json +55 -82
  192. package/src/native/scripts/linux/enum-windows.sh +12 -12
  193. package/src/native/scripts/macos/enum-windows.applescript +22 -22
  194. package/dist/AntiCheatDetector-CqGDXmfc.mjs +0 -350
  195. package/dist/CacheAdapters-jJFy20G-.mjs +0 -80
  196. package/dist/CodeInjector-BdjRfNx7.mjs +0 -150
  197. package/dist/ConsoleMonitor-DykL3IAw.mjs +0 -2269
  198. package/dist/DarwinAPI-ETyy0xyo.mjs +0 -363
  199. package/dist/DetailedDataManager-HT49OrvF.mjs +0 -217
  200. package/dist/EventBus-DFKvADm3.mjs +0 -141
  201. package/dist/EvidenceGraphBridge-318Oi0Lf.mjs +0 -153
  202. package/dist/ExtensionManager-BDMsY2Dz.mjs +0 -721
  203. package/dist/FingerprintManager-BN4UQWnX.mjs +0 -96
  204. package/dist/HardwareBreakpoint-Cc2AFq1Y.mjs +0 -239
  205. package/dist/HeapAnalyzer-DruMgsgj.mjs +0 -284
  206. package/dist/InstrumentationSession-DLH0vd-z.mjs +0 -244
  207. package/dist/MemoryController-CMtviNW_.mjs +0 -167
  208. package/dist/MemoryScanSession-ITgb_NMi.mjs +0 -278
  209. package/dist/MemoryScanner-CiL7Z3ey.mjs +0 -428
  210. package/dist/NativeMemoryManager.impl-D9Lkovvn.mjs +0 -485
  211. package/dist/NativeMemoryManager.utils-BBlAixF5.mjs +0 -165
  212. package/dist/PEAnalyzer-DMQ44gen.mjs +0 -385
  213. package/dist/PageController-BPJNqqBN.mjs +0 -431
  214. package/dist/PointerChainEngine-K7wN8Z-w.mjs +0 -325
  215. package/dist/PrerequisiteError-TuyZIs6n.mjs +0 -20
  216. package/dist/ProcessRegistry-zGg12QbE.mjs +0 -74
  217. package/dist/ResponseBuilder-CJXWmWNw.mjs +0 -143
  218. package/dist/ReverseEvidenceGraph-C02-gXOh.mjs +0 -269
  219. package/dist/ScriptManager-ZuWD-0Jg.mjs +0 -3003
  220. package/dist/Speedhack-D-z0umeT.mjs +0 -156
  221. package/dist/StealthVerifier-BWmPgQsv.mjs +0 -135
  222. package/dist/StructureAnalyzer-Cav5AVSL.mjs +0 -429
  223. package/dist/ToolCatalog-5OJdMiF0.mjs +0 -582
  224. package/dist/ToolError-jh9whhMd.mjs +0 -15
  225. package/dist/ToolProbe-DbCFGyrg.mjs +0 -45
  226. package/dist/ToolRegistry-B9krbTtI.mjs +0 -180
  227. package/dist/ToolRouter.policy-BGDAGyeH.mjs +0 -344
  228. package/dist/TraceRecorder-B41Z5XBj.mjs +0 -1286
  229. package/dist/VersionDetector-K3V4vGsw.mjs +0 -104
  230. package/dist/Win32API-C2kjj0ze.mjs +0 -346
  231. package/dist/Win32Debug-CKrGOTpo.mjs +0 -274
  232. package/dist/WorkflowEngine-DJ6M4opp.mjs +0 -569
  233. package/dist/analysis-BHeJW2Nb.mjs +0 -1234
  234. package/dist/artifactRetention-CPXkUJXp.mjs +0 -598
  235. package/dist/artifacts-DkfosXH3.mjs +0 -59
  236. package/dist/authorization-schema-DRqyJMSk.mjs +0 -31
  237. package/dist/betterSqlite3-DLSBZodi.mjs +0 -74
  238. package/dist/binary-instrument--V3MAhJ4.mjs +0 -971
  239. package/dist/bind-helpers-ClV34xdn.mjs +0 -42
  240. package/dist/boringssl-inspector-Bo_LOLaS.mjs +0 -180
  241. package/dist/browser-Dx3_S2cG.mjs +0 -4369
  242. package/dist/capabilities-CcHlvWgK.mjs +0 -33
  243. package/dist/chunk-CjcI7cDX.mjs +0 -15
  244. package/dist/concurrency-Drev_Vz9.mjs +0 -41
  245. package/dist/constants-CDZLOoVv.mjs +0 -534
  246. package/dist/coordination-DgItD9DL.mjs +0 -259
  247. package/dist/debugger-RS3RSAqs.mjs +0 -1288
  248. package/dist/definitions-BEoYofW5.mjs +0 -47
  249. package/dist/definitions-BRaefg3u.mjs +0 -365
  250. package/dist/definitions-BbkvZkiv.mjs +0 -96
  251. package/dist/definitions-BtWSHJ3o.mjs +0 -17
  252. package/dist/definitions-C1gCHO0i.mjs +0 -43
  253. package/dist/definitions-CDOg_b-l.mjs +0 -138
  254. package/dist/definitions-CVPD9hzZ.mjs +0 -54
  255. package/dist/definitions-Cea8Lgl7.mjs +0 -94
  256. package/dist/definitions-DAgIyjxM.mjs +0 -10
  257. package/dist/definitions-DJA27nsL.mjs +0 -66
  258. package/dist/definitions-DKPFU3LW.mjs +0 -25
  259. package/dist/definitions-DPRpZQ96.mjs +0 -47
  260. package/dist/definitions-DUE5gmdn.mjs +0 -18
  261. package/dist/definitions-DYVjOtxa.mjs +0 -26
  262. package/dist/definitions-DcYLVLCo.mjs +0 -37
  263. package/dist/definitions-Pp5LI2H4.mjs +0 -27
  264. package/dist/definitions-j9KdHVNR.mjs +0 -14
  265. package/dist/definitions-uzkjBwa7.mjs +0 -258
  266. package/dist/definitions-va-AnLuQ.mjs +0 -28
  267. package/dist/encoding-DJeqHmpd.mjs +0 -1079
  268. package/dist/evidence-graph-bridge-DcYizFk2.mjs +0 -136
  269. package/dist/factory-C90tBff6.mjs +0 -575
  270. package/dist/flat-target-session-Dgax2Cy3.mjs +0 -29
  271. package/dist/formatAddress-nnMvEohD.mjs +0 -17
  272. package/dist/graphql-CoHrhweh.mjs +0 -1197
  273. package/dist/handlers-4jmR0nMs.mjs +0 -898
  274. package/dist/handlers-BAHPxcch.mjs +0 -789
  275. package/dist/handlers-BOs9b907.mjs +0 -2600
  276. package/dist/handlers-BWXEy6ef.mjs +0 -917
  277. package/dist/handlers-Bndn6QvE.mjs +0 -111
  278. package/dist/handlers-BqC4bD4s.mjs +0 -681
  279. package/dist/handlers-BtYq60bM2.mjs +0 -276
  280. package/dist/handlers-BzgcB4iv.mjs +0 -799
  281. package/dist/handlers-CRyRWj2b.mjs +0 -859
  282. package/dist/handlers-CVv2H1uq.mjs +0 -592
  283. package/dist/handlers-Dl5a7JS4.mjs +0 -572
  284. package/dist/handlers-Dx2d7jt7.mjs +0 -2537
  285. package/dist/handlers-HujRKC3b.mjs +0 -661
  286. package/dist/handlers.impl-XWXkQfyi.mjs +0 -807
  287. package/dist/hooks-B1B8NRHL.mjs +0 -898
  288. package/dist/logger-Dh_xb7_2.mjs +0 -93
  289. package/dist/maintenance-PRMkLVRW.mjs +0 -835
  290. package/dist/manifest-67Bok-Si.mjs +0 -58
  291. package/dist/manifest-6lNTMZAB2.mjs +0 -87
  292. package/dist/manifest-B2duEHiH.mjs +0 -90
  293. package/dist/manifest-B6EY9Vm8.mjs +0 -57
  294. package/dist/manifest-B6nKSbyY.mjs +0 -95
  295. package/dist/manifest-BL8AQNPF.mjs +0 -106
  296. package/dist/manifest-BSZvJJmV.mjs +0 -47
  297. package/dist/manifest-BU7qzUyX.mjs +0 -418
  298. package/dist/manifest-Bl62e8WK.mjs +0 -49
  299. package/dist/manifest-Bo5cXjdt.mjs +0 -82
  300. package/dist/manifest-BpS4gtUK.mjs +0 -1347
  301. package/dist/manifest-Bv65_e2W.mjs +0 -101
  302. package/dist/manifest-BytNIF4Z.mjs +0 -117
  303. package/dist/manifest-C-xtsjS3.mjs +0 -81
  304. package/dist/manifest-CDYl7OhA.mjs +0 -66
  305. package/dist/manifest-CRZ3xmkD.mjs +0 -61
  306. package/dist/manifest-CoW6u4Tp.mjs +0 -132
  307. package/dist/manifest-Cq5zN_8A.mjs +0 -50
  308. package/dist/manifest-D7YZM_2e.mjs +0 -194
  309. package/dist/manifest-DE_VrAeQ.mjs +0 -314
  310. package/dist/manifest-DGsXSCpT.mjs +0 -39
  311. package/dist/manifest-DJ2vfEuW.mjs +0 -156
  312. package/dist/manifest-DPXDYhEu.mjs +0 -80
  313. package/dist/manifest-Dd4fQb0a.mjs +0 -322
  314. package/dist/manifest-Deq6opGg.mjs +0 -223
  315. package/dist/manifest-DfJTafJK.mjs +0 -37
  316. package/dist/manifest-DgOdgN_j.mjs +0 -50
  317. package/dist/manifest-DlbMW4v4.mjs +0 -47
  318. package/dist/manifest-DmVfbH0w.mjs +0 -374
  319. package/dist/manifest-Dog6Ddjr.mjs +0 -109
  320. package/dist/manifest-DvgU5FWb.mjs +0 -58
  321. package/dist/manifest-HsfDBs7j.mjs +0 -50
  322. package/dist/manifest-I8oQHvCG.mjs +0 -186
  323. package/dist/manifest-NvH_a-av.mjs +0 -786
  324. package/dist/manifest-cEJU1v0Z.mjs +0 -129
  325. package/dist/manifest-wOl5XLB12.mjs +0 -112
  326. package/dist/modules-tZozf0LQ.mjs +0 -10635
  327. package/dist/mojo-ipc-DXNEXEqb.mjs +0 -640
  328. package/dist/network-CPVvwvFg.mjs +0 -3852
  329. package/dist/outputPaths-um7lCRY3.mjs +0 -1141
  330. package/dist/parse-args-B4cY5Vx5.mjs +0 -39
  331. package/dist/platform-CYeFoTWp.mjs +0 -2161
  332. package/dist/process-BTbgcVc6.mjs +0 -1306
  333. package/dist/proxy-r8YN6nP1.mjs +0 -192
  334. package/dist/registry-Bl8ZQW61.mjs +0 -34
  335. package/dist/response-CWhh2aLo.mjs +0 -34
  336. package/dist/shared-state-board-BoZnSoj-.mjs +0 -586
  337. package/dist/sourcemap-BIDHUVXy.mjs +0 -934
  338. package/dist/ssrf-policy-Dsqd-DTX.mjs +0 -166
  339. package/dist/streaming-Dal6utPp.mjs +0 -725
  340. package/dist/tool-builder-BHJp32mV.mjs +0 -186
  341. package/dist/transform-DRVgGG90.mjs +0 -1011
  342. package/dist/types-Bx92KJfT.mjs +0 -4
  343. package/dist/types-DDBWs9UP.mjs +0 -37
  344. package/dist/wasm-BYx5UOeG.mjs +0 -1044
  345. package/dist/webcrack-Be0_FccV.mjs +0 -747
  346. package/dist/workflow-BpuKEtvn.mjs +0 -725
@@ -1,1141 +0,0 @@
1
- import { $n as SEARCH_VECTOR_DYNAMIC_WEIGHT, Qn as SEARCH_VECTOR_COSINE_WEIGHT, er as SEARCH_VECTOR_ENABLED, ir as SEARCH_VECTOR_MODEL_ID } from "./constants-CDZLOoVv.mjs";
2
- import { homedir } from "node:os";
3
- import { z } from "zod";
4
- import { basename, dirname, extname, isAbsolute, join, normalize, relative, resolve, sep } from "node:path";
5
- import { fileURLToPath } from "node:url";
6
- import { mkdir } from "node:fs/promises";
7
- import { config } from "dotenv";
8
- const DEFAULT_SEARCH_CONFIG = {
9
- queryCategoryProfiles: [
10
- {
11
- pattern: "(?:security|vuln|xss|injection|csrf|exploit|attack|prototype\\s*pollution|漏洞|安全|注入|攻击)",
12
- flags: "i",
13
- domainBoosts: [
14
- {
15
- domain: "hooks",
16
- weight: 1.35
17
- },
18
- {
19
- domain: "antidebug",
20
- weight: 1.2
21
- },
22
- {
23
- domain: "core",
24
- weight: 1.1
25
- }
26
- ]
27
- },
28
- {
29
- pattern: "(?:debug|breakpoint|pause|step\\s*over|step\\s*into|stack\\s*trace|断点|调试|单步)",
30
- flags: "i",
31
- domainBoosts: [{
32
- domain: "debugger",
33
- weight: 1.6
34
- }, {
35
- domain: "v8-inspector",
36
- weight: 1.2
37
- }]
38
- },
39
- {
40
- pattern: "(?:network|request|response|header|cookie|fetch|xhr|网络|请求|抓包)",
41
- flags: "i",
42
- domainBoosts: [{
43
- domain: "network",
44
- weight: 1.6
45
- }, {
46
- domain: "browser",
47
- weight: 1.1
48
- }]
49
- },
50
- {
51
- pattern: "(?:transform|deobfuscate|beautify|minify|decode|encode|解密|混淆|反混淆|转换)",
52
- flags: "i",
53
- domainBoosts: [{
54
- domain: "transform",
55
- weight: 1.6
56
- }, {
57
- domain: "core",
58
- weight: 1.2
59
- }]
60
- },
61
- {
62
- pattern: "(?:memory|heap|dump|scan|inject|内存|堆|扫描)",
63
- flags: "i",
64
- domainBoosts: [
65
- {
66
- domain: "memory",
67
- weight: 1.6
68
- },
69
- {
70
- domain: "process",
71
- weight: 1.15
72
- },
73
- {
74
- domain: "binary-instrument",
75
- weight: 1.1
76
- }
77
- ]
78
- },
79
- {
80
- pattern: "(?:wasm|webassembly)",
81
- flags: "i",
82
- domainBoosts: [{
83
- domain: "wasm",
84
- weight: 1.6
85
- }]
86
- },
87
- {
88
- pattern: "(?:browser|page|tab|navigate|click|screenshot|浏览器|页面|标签)",
89
- flags: "i",
90
- domainBoosts: [{
91
- domain: "browser",
92
- weight: 1.4
93
- }]
94
- },
95
- {
96
- pattern: "(?:captcha|人机验证|验证码|图形验证)",
97
- flags: "i",
98
- domainBoosts: [{
99
- domain: "browser",
100
- weight: 1.65
101
- }]
102
- },
103
- {
104
- pattern: "(?:reverse|mission|signature|hook|crypto|encrypt|websocket|\\bws\\b|protocol|bundle|webpack|deobfusc|stealth|fingerprint|evidence|\\bhar\\b|逆向|签名|加签|协议|反混淆|反检测|指纹|证据|报告)",
105
- flags: "i",
106
- domainBoosts: [{
107
- domain: "workflow",
108
- weight: 1.8
109
- }, {
110
- domain: "core",
111
- weight: 1.1
112
- }]
113
- },
114
- {
115
- pattern: "(?:v8|heap\\s?(?:snapshot|dump|profile)|bytecode|jit|turbofan|ignition|hidden\\s?class)",
116
- flags: "i",
117
- domainBoosts: [{
118
- domain: "v8-inspector",
119
- weight: 1.6
120
- }, {
121
- domain: "memory",
122
- weight: 1.2
123
- }]
124
- },
125
- {
126
- pattern: "(?:tls|ssl|boringssl|cert(?:ificate)?|pinning|handshake|keylog|nss)",
127
- flags: "i",
128
- domainBoosts: [{
129
- domain: "boringssl-inspector",
130
- weight: 1.6
131
- }, {
132
- domain: "network",
133
- weight: 1.1
134
- }]
135
- },
136
- {
137
- pattern: "(?:skia|gpu|render|scenegraph|scene\\s?tree|raster|draw\\s?call|layer)",
138
- flags: "i",
139
- domainBoosts: [{
140
- domain: "skia-capture",
141
- weight: 1.6
142
- }, {
143
- domain: "browser",
144
- weight: 1.1
145
- }]
146
- },
147
- {
148
- pattern: "(?:frida|ghidra|ida|unidbg|jadx|disassemble|instrument)",
149
- flags: "i",
150
- domainBoosts: [{
151
- domain: "binary-instrument",
152
- weight: 1.6
153
- }, {
154
- domain: "memory",
155
- weight: 1.2
156
- }]
157
- },
158
- {
159
- pattern: "(?:adb|android|webview|apk|dalvik|art\\s?(?:runtime)?)",
160
- flags: "i",
161
- domainBoosts: [{
162
- domain: "adb-bridge",
163
- weight: 1.6
164
- }, {
165
- domain: "browser",
166
- weight: 1.1
167
- }]
168
- },
169
- {
170
- pattern: "(?:mojo|ipc|chromium.*ipc|broker|chromium.*interface)",
171
- flags: "i",
172
- domainBoosts: [{
173
- domain: "mojo-ipc",
174
- weight: 1.6
175
- }, {
176
- domain: "debugger",
177
- weight: 1.1
178
- }]
179
- },
180
- {
181
- pattern: "(?:syscall|etw|strace|dtrace|kernel.*call|system\\s?call|tracefs)",
182
- flags: "i",
183
- domainBoosts: [{
184
- domain: "syscall-hook",
185
- weight: 1.6
186
- }, {
187
- domain: "process",
188
- weight: 1.1
189
- }]
190
- },
191
- {
192
- pattern: "(?:protocol.*analy|state\\s?machine|packet.*decode|field.*extract)",
193
- flags: "i",
194
- domainBoosts: [{
195
- domain: "protocol-analysis",
196
- weight: 1.6
197
- }, {
198
- domain: "network",
199
- weight: 1.1
200
- }]
201
- },
202
- {
203
- pattern: "(?:extension.*(?:install|registry|list)|plugin.*(?:install|manage)|addon|webhook.*(?:create|manage))",
204
- flags: "i",
205
- domainBoosts: [{
206
- domain: "extension-registry",
207
- weight: 1.6
208
- }, {
209
- domain: "workflow",
210
- weight: 1.1
211
- }]
212
- }
213
- ],
214
- cjkQueryAliases: [
215
- {
216
- pattern: "工作流|流程编排|流程自动化|编排",
217
- tokens: [
218
- "workflow",
219
- "flow",
220
- "orchestration"
221
- ]
222
- },
223
- {
224
- pattern: "抓包|抓取|采集|捕获",
225
- tokens: [
226
- "capture",
227
- "sniff",
228
- "collect"
229
- ]
230
- },
231
- {
232
- pattern: "接口|端点",
233
- tokens: [
234
- "api",
235
- "endpoint",
236
- "request"
237
- ]
238
- },
239
- {
240
- pattern: "探测|探针|扫描",
241
- tokens: ["probe", "scan"]
242
- },
243
- {
244
- pattern: "账号|账户|用户",
245
- tokens: ["account", "user"]
246
- },
247
- {
248
- pattern: "注册|开户|报名",
249
- tokens: ["register", "signup"]
250
- },
251
- {
252
- pattern: "验证|校验|激活",
253
- tokens: [
254
- "verify",
255
- "verification",
256
- "activation"
257
- ]
258
- },
259
- {
260
- pattern: "验证码|图形验证码|人机验证",
261
- tokens: [
262
- "captcha",
263
- "verify",
264
- "verification"
265
- ]
266
- },
267
- {
268
- pattern: "邮箱|邮件",
269
- tokens: ["email", "mail"]
270
- },
271
- {
272
- pattern: "keygen|密钥|注册码|激活码",
273
- tokens: [
274
- "keygen",
275
- "key",
276
- "activation"
277
- ]
278
- },
279
- {
280
- pattern: "轮询|监听",
281
- tokens: ["poll", "watch"]
282
- },
283
- {
284
- pattern: "批量|并发",
285
- tokens: ["batch", "parallel"]
286
- },
287
- {
288
- pattern: "令牌|凭证|鉴权|认证",
289
- tokens: [
290
- "token",
291
- "auth",
292
- "credential"
293
- ]
294
- },
295
- {
296
- pattern: "提取|抽取|解析",
297
- tokens: ["extract", "parse"]
298
- },
299
- {
300
- pattern: "签名|加签|加密|hook",
301
- tokens: [
302
- "signature",
303
- "crypto",
304
- "hook",
305
- "sign"
306
- ]
307
- },
308
- {
309
- pattern: "协议|消息|帧|handler",
310
- tokens: [
311
- "websocket",
312
- "protocol",
313
- "ws",
314
- "handler"
315
- ]
316
- },
317
- {
318
- pattern: "打包|webpack|混淆|反混淆",
319
- tokens: [
320
- "bundle",
321
- "webpack",
322
- "deobfuscate",
323
- "unpack"
324
- ]
325
- },
326
- {
327
- pattern: "反爬|反检测|指纹|stealth",
328
- tokens: [
329
- "antibot",
330
- "stealth",
331
- "fingerprint",
332
- "detection"
333
- ]
334
- },
335
- {
336
- pattern: "证据|取证|导出|报告|快照",
337
- tokens: [
338
- "evidence",
339
- "export",
340
- "report",
341
- "forensic"
342
- ]
343
- },
344
- {
345
- pattern: "多标签页|多标签|标签页",
346
- tokens: ["tab", "multi"]
347
- },
348
- {
349
- pattern: "脚本库|脚本仓库",
350
- tokens: ["script", "library"]
351
- },
352
- {
353
- pattern: "脚本",
354
- tokens: ["script"]
355
- },
356
- {
357
- pattern: "执行|运行",
358
- tokens: ["run", "execute"]
359
- },
360
- {
361
- pattern: "导出",
362
- tokens: ["export"]
363
- },
364
- {
365
- pattern: "回放|重放",
366
- tokens: ["replay"]
367
- },
368
- {
369
- pattern: "请求",
370
- tokens: ["request"]
371
- },
372
- {
373
- pattern: "鉴权面|认证面|授权面|凭证枚举",
374
- tokens: [
375
- "auth",
376
- "surface",
377
- "token",
378
- "credential"
379
- ]
380
- },
381
- {
382
- pattern: "通道|通信|协议注册|协议枚举",
383
- tokens: [
384
- "protocol",
385
- "channel",
386
- "registry"
387
- ]
388
- },
389
- {
390
- pattern: "人机|挑战|风控|拦截页",
391
- tokens: [
392
- "challenge",
393
- "captcha",
394
- "cloudflare",
395
- "turnstile"
396
- ]
397
- },
398
- {
399
- pattern: "签名谱系|签名链路|加签链路|签名追踪",
400
- tokens: [
401
- "signing",
402
- "lineage",
403
- "signature",
404
- "trace"
405
- ]
406
- },
407
- {
408
- pattern: "复现|重发|篡改|参数篡改",
409
- tokens: [
410
- "replay",
411
- "tamper",
412
- "request"
413
- ]
414
- },
415
- {
416
- pattern: "反混淆链|反混淆管道|清洗|还原",
417
- tokens: [
418
- "deobfuscate",
419
- "pipeline",
420
- "transform",
421
- "ast"
422
- ]
423
- },
424
- {
425
- pattern: "桌面应用|electron|nwjs|预加载",
426
- tokens: [
427
- "electron",
428
- "bridge",
429
- "preload",
430
- "ipc"
431
- ]
432
- }
433
- ],
434
- intentToolBoostRules: [
435
- {
436
- pattern: "(?:端到端闭环|全链路闭环|一键闭环|api(?:[_\\s-]*)capture(?:[_\\s-]*)session|抓取接口|抓包流程)",
437
- flags: "i",
438
- boosts: [
439
- {
440
- tool: "run_extension_workflow",
441
- bonus: 18
442
- },
443
- {
444
- tool: "list_extension_workflows",
445
- bonus: 12
446
- },
447
- {
448
- tool: "api_probe_batch",
449
- bonus: 18
450
- },
451
- {
452
- tool: "network_extract_auth",
453
- bonus: 10
454
- },
455
- {
456
- tool: "network_export_har",
457
- bonus: 8
458
- }
459
- ]
460
- },
461
- {
462
- pattern: "(?:register|signup|sign\\s*up|账号注册|账户注册|邮箱验证|验证账号|激活账号|注册验证|验证码|邮箱激活|激活链接|mail\\s*verify|email\\s*verify|account\\s*pending|keygen)",
463
- flags: "i",
464
- boosts: [
465
- {
466
- tool: "run_extension_workflow",
467
- bonus: 12
468
- },
469
- {
470
- tool: "list_extension_workflows",
471
- bonus: 8
472
- },
473
- {
474
- tool: "tab_workflow",
475
- bonus: 8
476
- }
477
- ]
478
- },
479
- {
480
- pattern: "(?:script\\s*library|script\\s*preset|run\\s*script|脚本库执行|脚本库|执行脚本)",
481
- flags: "i",
482
- boosts: [
483
- {
484
- tool: "page_script_run",
485
- bonus: 22
486
- },
487
- {
488
- tool: "page_script_register",
489
- bonus: 16
490
- },
491
- {
492
- tool: "run_extension_workflow",
493
- bonus: 10
494
- }
495
- ]
496
- },
497
- {
498
- pattern: "(?:bundle|webpack|js\\s*bundle|脚本包|静态包|源码包)",
499
- flags: "i",
500
- boosts: [
501
- {
502
- tool: "js_bundle_search",
503
- bonus: 20
504
- },
505
- {
506
- tool: "sourcemap_fetch_and_parse",
507
- bonus: 10
508
- },
509
- {
510
- tool: "webpack_enumerate",
511
- bonus: 8
512
- }
513
- ]
514
- },
515
- {
516
- pattern: "(?:workflow|orchestration|工作流|流程编排|流程自动化)",
517
- flags: "i",
518
- boosts: [{
519
- tool: "run_extension_workflow",
520
- bonus: 26
521
- }, {
522
- tool: "list_extension_workflows",
523
- bonus: 16
524
- }]
525
- },
526
- {
527
- pattern: "(?=.*(?:抓包|抓取|捕获|capture|sniff|collect))(?=.*(?:鉴权|认证|令牌|凭证|jwt|token|auth|credential))",
528
- flags: "i",
529
- boosts: [
530
- {
531
- tool: "run_extension_workflow",
532
- bonus: 18
533
- },
534
- {
535
- tool: "list_extension_workflows",
536
- bonus: 12
537
- },
538
- {
539
- tool: "network_extract_auth",
540
- bonus: 18
541
- }
542
- ]
543
- },
544
- {
545
- pattern: "(?:signature|crypto|encrypt|hash|hook|签名|加签|加密)",
546
- flags: "i",
547
- boosts: [
548
- {
549
- tool: "search_in_scripts",
550
- bonus: 14
551
- },
552
- {
553
- tool: "detect_crypto",
554
- bonus: 12
555
- },
556
- {
557
- tool: "manage_hooks",
558
- bonus: 10
559
- },
560
- {
561
- tool: "run_extension_workflow",
562
- bonus: 6
563
- }
564
- ]
565
- },
566
- {
567
- pattern: "(?:websocket|\\bws\\b|protocol|socket|handler|协议|消息|帧)",
568
- flags: "i",
569
- boosts: [
570
- {
571
- tool: "ws_monitor",
572
- bonus: 14
573
- },
574
- {
575
- tool: "ws_get_frames",
576
- bonus: 12
577
- },
578
- {
579
- tool: "ws_get_connections",
580
- bonus: 10
581
- },
582
- {
583
- tool: "run_extension_workflow",
584
- bonus: 6
585
- }
586
- ]
587
- },
588
- {
589
- pattern: "(?:bundle|webpack|chunk|source.*map|deobfusc|源码|打包|混淆|反混淆)",
590
- flags: "i",
591
- boosts: [
592
- {
593
- tool: "js_bundle_search",
594
- bonus: 18
595
- },
596
- {
597
- tool: "collect_code",
598
- bonus: 12
599
- },
600
- {
601
- tool: "sourcemap_fetch_and_parse",
602
- bonus: 10
603
- },
604
- {
605
- tool: "run_extension_workflow",
606
- bonus: 6
607
- }
608
- ]
609
- },
610
- {
611
- pattern: "(?:stealth|fingerprint|webdriver|antibot|bot.*detect|反爬|反检测|指纹)",
612
- flags: "i",
613
- boosts: [
614
- {
615
- tool: "stealth_inject",
616
- bonus: 14
617
- },
618
- {
619
- tool: "stealth_generate_fingerprint",
620
- bonus: 12
621
- },
622
- {
623
- tool: "stealth_verify",
624
- bonus: 10
625
- },
626
- {
627
- tool: "run_extension_workflow",
628
- bonus: 6
629
- }
630
- ]
631
- },
632
- {
633
- pattern: "(?:evidence|export.*(?:har|markdown|json)|har|report|证据|导出|报告|取证)",
634
- flags: "i",
635
- boosts: [
636
- {
637
- tool: "evidence_query",
638
- bonus: 16
639
- },
640
- {
641
- tool: "evidence_export",
642
- bonus: 14
643
- },
644
- {
645
- tool: "run_extension_workflow",
646
- bonus: 6
647
- }
648
- ]
649
- },
650
- {
651
- pattern: "(?:auth.*surface|token.*enum|credential.*map|鉴权面|认证面|凭证枚举|jwt|csrf|api.?key|授权)",
652
- flags: "i",
653
- boosts: [
654
- {
655
- tool: "network_extract_auth",
656
- bonus: 16
657
- },
658
- {
659
- tool: "run_extension_workflow",
660
- bonus: 6
661
- },
662
- {
663
- tool: "list_extension_workflows",
664
- bonus: 4
665
- }
666
- ]
667
- },
668
- {
669
- pattern: "(?:protocol.*registry|channel.*enum|通道枚举|协议注册|协议归类|SSE|EventSource|beacon|postMessage)",
670
- flags: "i",
671
- boosts: [
672
- {
673
- tool: "ws_monitor",
674
- bonus: 12
675
- },
676
- {
677
- tool: "network_get_requests",
678
- bonus: 10
679
- },
680
- {
681
- tool: "sse_monitor_enable",
682
- bonus: 10
683
- },
684
- {
685
- tool: "run_extension_workflow",
686
- bonus: 6
687
- }
688
- ]
689
- },
690
- {
691
- pattern: "(?:challenge|turnstile|cloudflare|hcaptcha|datadome|akamai|perimeterx|kasada|人机|挑战|风控|拦截页)",
692
- flags: "i",
693
- boosts: [
694
- {
695
- tool: "captcha_detect",
696
- bonus: 16
697
- },
698
- {
699
- tool: "stealth_verify",
700
- bonus: 12
701
- },
702
- {
703
- tool: "run_extension_workflow",
704
- bonus: 6
705
- }
706
- ]
707
- },
708
- {
709
- pattern: "(?:signing.*lineage|签名谱系|签名链路|加签链路|签名追踪|plaintext.*cipher|明文.*密文)",
710
- flags: "i",
711
- boosts: [
712
- {
713
- tool: "detect_crypto",
714
- bonus: 14
715
- },
716
- {
717
- tool: "extract_function_tree",
718
- bonus: 12
719
- },
720
- {
721
- tool: "manage_hooks",
722
- bonus: 10
723
- },
724
- {
725
- tool: "run_extension_workflow",
726
- bonus: 6
727
- }
728
- ]
729
- },
730
- {
731
- pattern: "(?:replay.*lab|request.*replay|复现|重发|篡改|参数篡改|request.*tamper)",
732
- flags: "i",
733
- boosts: [
734
- {
735
- tool: "network_replay_request",
736
- bonus: 16
737
- },
738
- {
739
- tool: "instrumentation_network_replay",
740
- bonus: 14
741
- },
742
- {
743
- tool: "network_export_har",
744
- bonus: 10
745
- },
746
- {
747
- tool: "run_extension_workflow",
748
- bonus: 6
749
- }
750
- ]
751
- },
752
- {
753
- pattern: "(?:deobfusc.*pipeline|反混淆链|反混淆管道|清洗|还原|ast.*transform|packer|unpack)",
754
- flags: "i",
755
- boosts: [
756
- {
757
- tool: "webcrack_unpack",
758
- bonus: 16
759
- },
760
- {
761
- tool: "ast_transform_apply",
762
- bonus: 14
763
- },
764
- {
765
- tool: "deobfuscate",
766
- bonus: 12
767
- },
768
- {
769
- tool: "detect_obfuscation",
770
- bonus: 10
771
- },
772
- {
773
- tool: "run_extension_workflow",
774
- bonus: 6
775
- }
776
- ]
777
- },
778
- {
779
- pattern: "(?:electron|nwjs|preload|ipc|asar|桌面应用|预加载|桥接|electron.*bridge)",
780
- flags: "i",
781
- boosts: [
782
- {
783
- tool: "electron_inspect_app",
784
- bonus: 16
785
- },
786
- {
787
- tool: "electron_ipc_sniff",
788
- bonus: 14
789
- },
790
- {
791
- tool: "asar_search",
792
- bonus: 12
793
- },
794
- {
795
- tool: "electron_check_fuses",
796
- bonus: 10
797
- },
798
- {
799
- tool: "run_extension_workflow",
800
- bonus: 6
801
- }
802
- ]
803
- }
804
- ],
805
- vectorEnabled: SEARCH_VECTOR_ENABLED,
806
- vectorModelId: SEARCH_VECTOR_MODEL_ID,
807
- vectorCosineWeight: SEARCH_VECTOR_COSINE_WEIGHT,
808
- vectorDynamicWeight: SEARCH_VECTOR_DYNAMIC_WEIGHT
809
- };
810
- //#endregion
811
- //#region src/utils/config.ts
812
- const projectRoot = fileURLToPath(new URL("../..", import.meta.url));
813
- const envPath = fileURLToPath(new URL("../../.env", import.meta.url));
814
- let envLoaded = false;
815
- const CONFIG_DEFAULTS = {
816
- puppeteer: {
817
- headless: false,
818
- timeout: 3e4
819
- },
820
- mcp: {
821
- name: "jshookmcp",
822
- version: "0.1.8"
823
- },
824
- cache: {
825
- enabled: false,
826
- dir: ".cache",
827
- ttl: 3600
828
- },
829
- paths: {
830
- screenshotDir: "screenshots",
831
- captchaScreenshotDir: "screenshots/captcha",
832
- debuggerSessionsDir: "debugger-sessions",
833
- extensionRegistryDir: "artifacts/extension-registry",
834
- tlsKeyLogDir: "artifacts/tmp",
835
- registryCacheDir: ".jshookmcp/cache"
836
- },
837
- performance: {
838
- maxConcurrentAnalysis: 3,
839
- maxCodeSizeMB: 10
840
- }
841
- };
842
- function loadEnvIfNeeded() {
843
- if (envLoaded) return;
844
- envLoaded = true;
845
- const result = config({
846
- path: envPath,
847
- quiet: true
848
- });
849
- const errorCode = result.error?.code;
850
- if (result.error && errorCode !== "ENOENT") {
851
- console.error("[Config] Warning: Failed to load .env file from configured path");
852
- console.error(`[Config] Error: ${result.error.message}`);
853
- console.error("[Config] Will use environment variables or defaults");
854
- } else if (!result.error && process.env.DEBUG === "true") console.info("[Config] .env file loaded (debug mode)");
855
- }
856
- const envInt = (fallback) => z.string().optional().transform((v) => v ? parseInt(v, 10) : fallback).pipe(z.number().int().finite());
857
- const envBool = (fallback) => z.string().optional().transform((v) => v === void 0 ? fallback : v === "true");
858
- function resolveConfigPath(inputPath, baseDir) {
859
- return normalize(isAbsolute(inputPath) ? inputPath : resolve(baseDir, inputPath));
860
- }
861
- const ConfigSchema = z.object({
862
- PUPPETEER_HEADLESS: envBool(CONFIG_DEFAULTS.puppeteer.headless),
863
- PUPPETEER_TIMEOUT: envInt(CONFIG_DEFAULTS.puppeteer.timeout).pipe(z.number().min(1e3).max(3e5)),
864
- PUPPETEER_EXECUTABLE_PATH: z.string().optional(),
865
- CHROME_PATH: z.string().optional(),
866
- BROWSER_EXECUTABLE_PATH: z.string().optional(),
867
- MCP_SERVER_NAME: z.string().optional().default(CONFIG_DEFAULTS.mcp.name),
868
- MCP_SERVER_VERSION: z.string().optional().default(CONFIG_DEFAULTS.mcp.version),
869
- ENABLE_CACHE: envBool(CONFIG_DEFAULTS.cache.enabled),
870
- CACHE_DIR: z.string().optional().default(CONFIG_DEFAULTS.cache.dir),
871
- CACHE_TTL: envInt(CONFIG_DEFAULTS.cache.ttl).pipe(z.number().min(0)),
872
- MCP_SCREENSHOT_DIR: z.string().optional().default(CONFIG_DEFAULTS.paths.screenshotDir),
873
- CAPTCHA_SCREENSHOT_DIR: z.string().optional().default(CONFIG_DEFAULTS.paths.captchaScreenshotDir),
874
- MCP_DEBUGGER_SESSIONS_DIR: z.string().optional().default(CONFIG_DEFAULTS.paths.debuggerSessionsDir),
875
- MCP_EXTENSION_REGISTRY_DIR: z.string().optional().default(CONFIG_DEFAULTS.paths.extensionRegistryDir),
876
- MCP_TLS_KEYLOG_DIR: z.string().optional().default(CONFIG_DEFAULTS.paths.tlsKeyLogDir),
877
- MCP_REGISTRY_CACHE_DIR: z.string().optional().default(CONFIG_DEFAULTS.paths.registryCacheDir),
878
- MAX_CONCURRENT_ANALYSIS: envInt(CONFIG_DEFAULTS.performance.maxConcurrentAnalysis).pipe(z.number().min(1).max(32)),
879
- MAX_CODE_SIZE_MB: envInt(CONFIG_DEFAULTS.performance.maxCodeSizeMB).pipe(z.number().min(1).max(500))
880
- });
881
- function isRecord(value) {
882
- return typeof value === "object" && value !== null && !Array.isArray(value);
883
- }
884
- function parseJsonArrayEnv(key) {
885
- const raw = process.env[key];
886
- if (!raw) return;
887
- try {
888
- const parsed = JSON.parse(raw);
889
- return Array.isArray(parsed) ? parsed : void 0;
890
- } catch {
891
- return;
892
- }
893
- }
894
- function parseSearchQueryCategoryProfiles() {
895
- const parsed = parseJsonArrayEnv("SEARCH_QUERY_CATEGORY_PROFILES_JSON");
896
- if (parsed === void 0) return;
897
- return parsed.flatMap((entry) => {
898
- if (!isRecord(entry) || typeof entry.pattern !== "string" || !Array.isArray(entry.domainBoosts)) return [];
899
- const domainBoosts = entry.domainBoosts.flatMap((boost) => {
900
- if (!isRecord(boost) || typeof boost.domain !== "string" || typeof boost.weight !== "number") return [];
901
- return [{
902
- domain: boost.domain,
903
- weight: boost.weight
904
- }];
905
- });
906
- return [{
907
- pattern: entry.pattern,
908
- flags: typeof entry.flags === "string" ? entry.flags : void 0,
909
- domainBoosts
910
- }];
911
- });
912
- }
913
- function parseCjkQueryAliases() {
914
- const parsed = parseJsonArrayEnv("SEARCH_CJK_QUERY_ALIASES_JSON");
915
- if (parsed === void 0) return;
916
- return parsed.flatMap((entry) => {
917
- if (!isRecord(entry) || typeof entry.pattern !== "string" || !Array.isArray(entry.tokens)) return [];
918
- const tokens = entry.tokens.filter((token) => typeof token === "string");
919
- return [{
920
- pattern: entry.pattern,
921
- flags: typeof entry.flags === "string" ? entry.flags : void 0,
922
- tokens
923
- }];
924
- });
925
- }
926
- function parseIntentToolBoostRules() {
927
- const parsed = parseJsonArrayEnv("SEARCH_INTENT_TOOL_BOOST_RULES_JSON");
928
- if (parsed === void 0) return;
929
- return parsed.flatMap((entry) => {
930
- if (!isRecord(entry) || typeof entry.pattern !== "string" || !Array.isArray(entry.boosts)) return [];
931
- const boosts = entry.boosts.flatMap((boost) => {
932
- if (!isRecord(boost) || typeof boost.tool !== "string" || typeof boost.bonus !== "number") return [];
933
- return [{
934
- tool: boost.tool,
935
- bonus: boost.bonus
936
- }];
937
- });
938
- return [{
939
- pattern: entry.pattern,
940
- flags: typeof entry.flags === "string" ? entry.flags : void 0,
941
- boosts
942
- }];
943
- });
944
- }
945
- function cloneSearchConfig(search) {
946
- return {
947
- queryCategoryProfiles: search.queryCategoryProfiles.map((profile) => ({
948
- pattern: profile.pattern,
949
- flags: profile.flags,
950
- domainBoosts: profile.domainBoosts.map((boost) => ({
951
- domain: boost.domain,
952
- weight: boost.weight
953
- }))
954
- })),
955
- cjkQueryAliases: search.cjkQueryAliases.map((alias) => ({
956
- pattern: alias.pattern,
957
- flags: alias.flags,
958
- tokens: [...alias.tokens]
959
- })),
960
- intentToolBoostRules: search.intentToolBoostRules.map((rule) => ({
961
- pattern: rule.pattern,
962
- flags: rule.flags,
963
- boosts: rule.boosts.map((boost) => ({
964
- tool: boost.tool,
965
- bonus: boost.bonus
966
- }))
967
- }))
968
- };
969
- }
970
- function buildSearchConfig() {
971
- const defaults = cloneSearchConfig(DEFAULT_SEARCH_CONFIG);
972
- return {
973
- queryCategoryProfiles: parseSearchQueryCategoryProfiles() ?? defaults.queryCategoryProfiles,
974
- cjkQueryAliases: parseCjkQueryAliases() ?? defaults.cjkQueryAliases,
975
- intentToolBoostRules: parseIntentToolBoostRules() ?? defaults.intentToolBoostRules
976
- };
977
- }
978
- function coerceBooleanEnv(value, fallback) {
979
- if (typeof value === "boolean") return value;
980
- if (typeof value === "string") return value === "true";
981
- return fallback;
982
- }
983
- function coerceIntegerEnv(value, fallback) {
984
- if (typeof value === "number" && Number.isFinite(value)) return value;
985
- if (typeof value === "string") {
986
- const parsed = Number.parseInt(value, 10);
987
- if (Number.isFinite(parsed)) return parsed;
988
- }
989
- return fallback;
990
- }
991
- function getConfig() {
992
- loadEnvIfNeeded();
993
- const parsed = ConfigSchema.safeParse(process.env);
994
- if (!parsed.success) {
995
- const issues = parsed.error.issues.map((i) => ` ${i.path.join(".")}: ${i.message}`);
996
- console.error(`[Config] Validation errors:\n${issues.join("\n")}`);
997
- console.error("[Config] Falling back to safe defaults for invalid fields");
998
- }
999
- const env = parsed.success ? parsed.data : process.env;
1000
- const cacheDir = env.CACHE_DIR || CONFIG_DEFAULTS.cache.dir;
1001
- const configuredExecutablePath = env.PUPPETEER_EXECUTABLE_PATH || env.CHROME_PATH || env.BROWSER_EXECUTABLE_PATH;
1002
- const absoluteCacheDir = cacheDir.startsWith("/") || cacheDir.match(/^[A-Za-z]:/) ? cacheDir : join(projectRoot, cacheDir);
1003
- const search = buildSearchConfig();
1004
- const paths = {
1005
- screenshotDir: resolveConfigPath(env.MCP_SCREENSHOT_DIR || CONFIG_DEFAULTS.paths.screenshotDir, projectRoot),
1006
- captchaScreenshotDir: resolveConfigPath(env.CAPTCHA_SCREENSHOT_DIR || CONFIG_DEFAULTS.paths.captchaScreenshotDir, projectRoot),
1007
- debuggerSessionsDir: resolveConfigPath(env.MCP_DEBUGGER_SESSIONS_DIR || CONFIG_DEFAULTS.paths.debuggerSessionsDir, process.cwd()),
1008
- extensionRegistryDir: resolveConfigPath(env.MCP_EXTENSION_REGISTRY_DIR || CONFIG_DEFAULTS.paths.extensionRegistryDir, projectRoot),
1009
- tlsKeyLogDir: resolveConfigPath(env.MCP_TLS_KEYLOG_DIR || CONFIG_DEFAULTS.paths.tlsKeyLogDir, projectRoot),
1010
- registryCacheDir: resolveConfigPath(env.MCP_REGISTRY_CACHE_DIR || CONFIG_DEFAULTS.paths.registryCacheDir, homedir())
1011
- };
1012
- return {
1013
- puppeteer: {
1014
- headless: coerceBooleanEnv(env.PUPPETEER_HEADLESS, CONFIG_DEFAULTS.puppeteer.headless),
1015
- timeout: coerceIntegerEnv(env.PUPPETEER_TIMEOUT, CONFIG_DEFAULTS.puppeteer.timeout),
1016
- executablePath: configuredExecutablePath?.trim() || void 0
1017
- },
1018
- mcp: {
1019
- name: env.MCP_SERVER_NAME || CONFIG_DEFAULTS.mcp.name,
1020
- version: env.MCP_SERVER_VERSION || CONFIG_DEFAULTS.mcp.version
1021
- },
1022
- cache: {
1023
- enabled: coerceBooleanEnv(env.ENABLE_CACHE, CONFIG_DEFAULTS.cache.enabled),
1024
- dir: absoluteCacheDir,
1025
- ttl: coerceIntegerEnv(env.CACHE_TTL, CONFIG_DEFAULTS.cache.ttl)
1026
- },
1027
- paths,
1028
- performance: {
1029
- maxConcurrentAnalysis: coerceIntegerEnv(env.MAX_CONCURRENT_ANALYSIS, CONFIG_DEFAULTS.performance.maxConcurrentAnalysis),
1030
- maxCodeSizeMB: coerceIntegerEnv(env.MAX_CODE_SIZE_MB, CONFIG_DEFAULTS.performance.maxCodeSizeMB)
1031
- },
1032
- search
1033
- };
1034
- }
1035
- function validateConfig(config) {
1036
- const errors = [];
1037
- if (config.performance.maxConcurrentAnalysis < 1) errors.push("maxConcurrentAnalysis must be at least 1");
1038
- if (config.performance.maxCodeSizeMB < 1) errors.push("maxCodeSizeMB must be at least 1");
1039
- if (config.puppeteer.timeout < 1e3) errors.push("puppeteer.timeout must be at least 1000ms");
1040
- if (config.cache.ttl < 0) errors.push("cache.ttl must be non-negative");
1041
- for (const profile of config.search.queryCategoryProfiles) try {
1042
- new RegExp(profile.pattern, profile.flags);
1043
- } catch {
1044
- errors.push(`search.queryCategoryProfiles contains invalid regex: ${profile.pattern}`);
1045
- }
1046
- for (const alias of config.search.cjkQueryAliases) try {
1047
- new RegExp(alias.pattern, alias.flags);
1048
- } catch {
1049
- errors.push(`search.cjkQueryAliases contains invalid regex: ${alias.pattern}`);
1050
- }
1051
- for (const rule of config.search.intentToolBoostRules) try {
1052
- new RegExp(rule.pattern, rule.flags);
1053
- } catch {
1054
- errors.push(`search.intentToolBoostRules contains invalid regex: ${rule.pattern}`);
1055
- }
1056
- return {
1057
- valid: errors.length === 0,
1058
- errors
1059
- };
1060
- }
1061
- //#endregion
1062
- //#region src/utils/outputPaths.ts
1063
- const currentFileUrl = fileURLToPath(import.meta.url);
1064
- const defaultProjectRoot = currentFileUrl.includes("/src/utils/") || currentFileUrl.includes("\\src\\utils\\") ? fileURLToPath(new URL("../..", import.meta.url)) : fileURLToPath(new URL("..", import.meta.url));
1065
- function resolveProjectRoot(env = process.env) {
1066
- const requestedRoot = env.MCP_PROJECT_ROOT?.trim();
1067
- if (!requestedRoot) return defaultProjectRoot;
1068
- return normalize(isAbsolute(requestedRoot) ? requestedRoot : resolve(defaultProjectRoot, requestedRoot));
1069
- }
1070
- function isInside(baseDir, targetPath) {
1071
- const rel = relative(baseDir, targetPath);
1072
- if (!rel || rel === ".." || rel.startsWith(`..${sep}`) || isAbsolute(rel)) return false;
1073
- return true;
1074
- }
1075
- function resolveWithinProject(inputPath, baseRoot = getProjectRoot()) {
1076
- const candidate = isAbsolute(inputPath) ? normalize(inputPath) : resolve(baseRoot, inputPath);
1077
- return isInside(baseRoot, candidate) ? candidate : resolve(baseRoot, "screenshots", "external", normalize(inputPath).split(/[\\/]/).pop() || "output.bin");
1078
- }
1079
- function withDefaultExtension(filePath, extension) {
1080
- if (extname(filePath)) return filePath;
1081
- return `${filePath}.${extension.replace(/^\./, "")}`;
1082
- }
1083
- function getProjectRoot() {
1084
- return resolveProjectRoot();
1085
- }
1086
- function resolveOutputDirectory(inputDir, fallbackDir = "screenshots") {
1087
- const projectRoot = getProjectRoot();
1088
- const requested = inputDir?.trim();
1089
- if (!requested) return resolve(projectRoot, fallbackDir);
1090
- const resolved = resolveWithinProject(requested, projectRoot);
1091
- if (isInside(projectRoot, resolved)) return resolved;
1092
- /* v8 ignore next */
1093
- return resolve(projectRoot, fallbackDir);
1094
- }
1095
- function getDebuggerSessionsDir() {
1096
- return getConfig().paths.debuggerSessionsDir;
1097
- }
1098
- function getExtensionRegistryDir() {
1099
- return getConfig().paths.extensionRegistryDir;
1100
- }
1101
- function getCodeCacheDir() {
1102
- return resolve(getConfig().cache.dir, "code");
1103
- }
1104
- function getTlsKeyLogDir() {
1105
- return getConfig().paths.tlsKeyLogDir;
1106
- }
1107
- async function resolveScreenshotOutputPath(options) {
1108
- const projectRoot = getProjectRoot();
1109
- const extension = options.type === "jpeg" ? "jpg" : "png";
1110
- const fallbackDir = options.fallbackDir || "screenshots/manual";
1111
- const fallbackName = options.fallbackName || "page";
1112
- const screenshotRoot = resolveOutputDirectory(getConfig().paths.screenshotDir, fallbackDir);
1113
- const requested = options.requestedPath?.trim();
1114
- let absolutePath;
1115
- let pathRewritten = false;
1116
- if (!requested) {
1117
- absolutePath = resolve(screenshotRoot, `${fallbackName}-${Date.now()}.${extension}`);
1118
- pathRewritten = true;
1119
- } else {
1120
- const requestedWithExt = withDefaultExtension(requested, extension);
1121
- if (isAbsolute(requestedWithExt)) {
1122
- absolutePath = resolve(screenshotRoot, basename(requestedWithExt));
1123
- pathRewritten = true;
1124
- } else {
1125
- absolutePath = resolve(screenshotRoot, requestedWithExt);
1126
- if (!isInside(screenshotRoot, absolutePath)) {
1127
- absolutePath = resolve(screenshotRoot, basename(absolutePath));
1128
- pathRewritten = true;
1129
- }
1130
- }
1131
- }
1132
- await mkdir(dirname(absolutePath), { recursive: true });
1133
- const displayPath = isAbsolute(requested || "") ? absolutePath.replace(/\\/g, "/") : relative(projectRoot, absolutePath).replace(/\\/g, "/");
1134
- return {
1135
- absolutePath,
1136
- displayPath,
1137
- pathRewritten
1138
- };
1139
- }
1140
- //#endregion
1141
- export { getTlsKeyLogDir as a, getConfig as c, DEFAULT_SEARCH_CONFIG as d, getProjectRoot as i, projectRoot as l, getDebuggerSessionsDir as n, resolveOutputDirectory as o, getExtensionRegistryDir as r, resolveScreenshotOutputPath as s, getCodeCacheDir as t, validateConfig as u };