@jshookmcp/jshook 0.2.2 → 0.2.5

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 (414) hide show
  1. package/LICENSE +661 -661
  2. package/README.md +15 -6
  3. package/README.zh.md +19 -4
  4. package/dist/native/scripts/linux/enum-windows.sh +12 -12
  5. package/dist/native/scripts/macos/enum-windows.applescript +22 -22
  6. package/dist/native/scripts/windows/enum-windows-by-class.ps1 +51 -51
  7. package/dist/native/scripts/windows/enum-windows.ps1 +44 -44
  8. package/dist/native/scripts/windows/inject-dll.ps1 +21 -21
  9. package/dist/packages/extension-sdk/src/bridges/shared.js +2 -2
  10. package/dist/packages/extension-sdk/src/plugin.d.ts +5 -0
  11. package/dist/packages/extension-sdk/src/plugin.js +119 -33
  12. package/dist/packages/extension-sdk/src/workflow.d.ts +156 -0
  13. package/dist/packages/extension-sdk/src/workflow.js +236 -0
  14. package/dist/src/config/search-defaults.js +161 -0
  15. package/dist/src/constants.d.ts +3 -0
  16. package/dist/src/constants.js +4 -1
  17. package/dist/src/index.d.ts +1 -1
  18. package/dist/src/index.js +13 -17
  19. package/dist/src/modules/analyzer/CodeAnalyzer.d.ts +1 -3
  20. package/dist/src/modules/analyzer/CodeAnalyzer.js +16 -28
  21. package/dist/src/modules/analyzer/CodeAnalyzerDataFlow.d.ts +1 -2
  22. package/dist/src/modules/analyzer/CodeAnalyzerDataFlow.js +1 -45
  23. package/dist/src/modules/analyzer/IntelligentAnalyzer.d.ts +1 -37
  24. package/dist/src/modules/analyzer/IntelligentAnalyzer.js +9 -142
  25. package/dist/src/modules/analyzer/PatternDetector.js +3 -3
  26. package/dist/src/modules/analyzer/PatternDetectorAuthPatterns.js +1 -1
  27. package/dist/src/modules/browser/BrowserDiscovery.d.ts +6 -5
  28. package/dist/src/modules/browser/BrowserDiscovery.js +3 -3
  29. package/dist/src/modules/browser/BrowserModeManager.d.ts +1 -1
  30. package/dist/src/modules/browser/BrowserModeManager.js +11 -10
  31. package/dist/src/modules/browser/TabRegistry.js +2 -2
  32. package/dist/src/modules/browser/UnifiedBrowserManager.d.ts +1 -0
  33. package/dist/src/modules/browser/UnifiedBrowserManager.js +19 -4
  34. package/dist/src/modules/captcha/AICaptchaDetector.d.ts +14 -23
  35. package/dist/src/modules/captcha/AICaptchaDetector.js +8 -202
  36. package/dist/src/modules/captcha/CaptchaDetector.d.ts +31 -17
  37. package/dist/src/modules/captcha/CaptchaDetector.js +1 -1
  38. package/dist/src/modules/collector/CodeCache.d.ts +2 -2
  39. package/dist/src/modules/collector/CodeCollector.d.ts +12 -9
  40. package/dist/src/modules/collector/CodeCollector.js +5 -6
  41. package/dist/src/modules/collector/DOMInspector.d.ts +3 -2
  42. package/dist/src/modules/collector/DOMInspector.js +49 -59
  43. package/dist/src/modules/collector/PageController.d.ts +17 -4
  44. package/dist/src/modules/collector/PageController.js +2 -5
  45. package/dist/src/modules/collector/PageScriptCollectors.js +3 -3
  46. package/dist/src/modules/crypto/CryptoDetector.d.ts +1 -4
  47. package/dist/src/modules/crypto/CryptoDetector.js +2 -42
  48. package/dist/src/modules/crypto/CryptoRules.js +1 -1
  49. package/dist/src/modules/debugger/BlackboxManager.js +1 -1
  50. package/dist/src/modules/debugger/DebuggerManager.impl.core.scope.js +1 -1
  51. package/dist/src/modules/debugger/ScriptManager.impl.extract-function-tree.js +5 -3
  52. package/dist/src/modules/debugger/WatchExpressionManager.js +1 -1
  53. package/dist/src/modules/deobfuscator/Deobfuscator.d.ts +1 -4
  54. package/dist/src/modules/deobfuscator/Deobfuscator.js +4 -39
  55. package/dist/src/modules/deobfuscator/JSVMPDeobfuscator.d.ts +0 -3
  56. package/dist/src/modules/deobfuscator/JSVMPDeobfuscator.js +2 -8
  57. package/dist/src/modules/deobfuscator/JSVMPDeobfuscator.restore.d.ts +2 -3
  58. package/dist/src/modules/deobfuscator/JSVMPDeobfuscator.restore.js +5 -57
  59. package/dist/src/modules/deobfuscator/JScramblerDeobfuscator.js +3 -4
  60. package/dist/src/modules/deobfuscator/PackerDeobfuscator.js +1 -1
  61. package/dist/src/modules/deobfuscator/VMDeobfuscator.d.ts +2 -10
  62. package/dist/src/modules/deobfuscator/VMDeobfuscator.js +3 -128
  63. package/dist/src/modules/deobfuscator/webcrack.js +15 -2
  64. package/dist/src/modules/emulator/AIEnvironmentAnalyzer.d.ts +5 -8
  65. package/dist/src/modules/emulator/AIEnvironmentAnalyzer.js +10 -102
  66. package/dist/src/modules/emulator/EnvironmentEmulator.d.ts +1 -5
  67. package/dist/src/modules/emulator/EnvironmentEmulator.js +7 -91
  68. package/dist/src/modules/emulator/EnvironmentEmulatorFetch.js +58 -61
  69. package/dist/src/modules/emulator/templates/chrome-env.d.ts +17 -7
  70. package/dist/src/modules/emulator/templates/chrome-env.js +14 -7
  71. package/dist/src/modules/external/ExternalToolRunner.d.ts +1 -1
  72. package/dist/src/modules/external/ExternalToolRunner.js +26 -23
  73. package/dist/src/modules/monitor/ConsoleMonitor.impl.core.class.d.ts +13 -0
  74. package/dist/src/modules/monitor/ConsoleMonitor.impl.core.class.js +42 -0
  75. package/dist/src/modules/monitor/FetchInterceptor.d.ts +46 -0
  76. package/dist/src/modules/monitor/FetchInterceptor.js +191 -0
  77. package/dist/src/modules/monitor/PerformanceMonitor.js +8 -7
  78. package/dist/src/modules/process/BaseMemoryManager.d.ts +1 -1
  79. package/dist/src/modules/process/LinuxProcessManager.js +4 -2
  80. package/dist/src/modules/process/MacProcessManager.js +1 -1
  81. package/dist/src/modules/process/MemoryManager.d.ts +1 -1
  82. package/dist/src/modules/process/MemoryManager.js +2 -2
  83. package/dist/src/modules/process/ProcessManager.impl.js +1 -1
  84. package/dist/src/modules/process/memory/AuditTrail.js +1 -1
  85. package/dist/src/modules/process/memory/reader.js +35 -3
  86. package/dist/src/modules/process/memory/regions.enumerate.js +1 -1
  87. package/dist/src/modules/process/memory/regions.protection.js +42 -9
  88. package/dist/src/modules/process/memory/scanner.d.ts +5 -1
  89. package/dist/src/modules/process/memory/scanner.darwin.js +57 -0
  90. package/dist/src/modules/process/memory/scanner.js +88 -4
  91. package/dist/src/modules/process/memory/writer.js +44 -4
  92. package/dist/src/modules/security/ExecutionSandbox.js +7 -8
  93. package/dist/src/modules/stealth/FingerprintManager.js +1 -1
  94. package/dist/src/modules/stealth/StealthScripts.d.ts +4 -2
  95. package/dist/src/modules/stealth/StealthScripts.js +53 -14
  96. package/dist/src/modules/stealth/StealthVerifier.d.ts +1 -1
  97. package/dist/src/modules/stealth/StealthVerifier.js +2 -4
  98. package/dist/src/modules/symbolic/JSVMPSymbolicExecutor.d.ts +14 -0
  99. package/dist/src/modules/symbolic/JSVMPSymbolicExecutor.js +181 -2
  100. package/dist/src/modules/trace/TraceDB.js +12 -6
  101. package/dist/src/modules/trace/TraceRecorder.js +1 -5
  102. package/dist/src/native/AntiCheatDetector.js +67 -16
  103. package/dist/src/native/CodeInjector.js +4 -4
  104. package/dist/src/native/HardwareBreakpoint.js +25 -16
  105. package/dist/src/native/HeapAnalyzer.js +2 -2
  106. package/dist/src/native/MemoryController.js +1 -1
  107. package/dist/src/native/MemoryScanSession.js +2 -2
  108. package/dist/src/native/MemoryScanner.js +4 -8
  109. package/dist/src/native/NativeMemoryManager.impl.js +2 -2
  110. package/dist/src/native/PEAnalyzer.js +14 -15
  111. package/dist/src/native/PointerChainEngine.js +2 -4
  112. package/dist/src/native/ScriptLoader.js +4 -9
  113. package/dist/src/native/Speedhack.js +1 -1
  114. package/dist/src/native/StructureAnalyzer.js +52 -33
  115. package/dist/src/native/Win32API.d.ts +1 -0
  116. package/dist/src/native/Win32API.js +13 -0
  117. package/dist/src/native/Win32Debug.js +19 -19
  118. package/dist/src/native/platform/darwin/DarwinAPI.d.ts +2 -0
  119. package/dist/src/native/platform/darwin/DarwinAPI.js +8 -0
  120. package/dist/src/native/platform/darwin/DarwinMemoryProvider.js +6 -1
  121. package/dist/src/server/MCPServer.context.d.ts +2 -1
  122. package/dist/src/server/MCPServer.d.ts +2 -1
  123. package/dist/src/server/MCPServer.domain.d.ts +1 -1
  124. package/dist/src/server/MCPServer.domain.js +81 -16
  125. package/dist/src/server/MCPServer.js +42 -14
  126. package/dist/src/server/MCPServer.resources.d.ts +2 -0
  127. package/dist/src/server/MCPServer.resources.js +91 -0
  128. package/dist/src/server/MCPServer.search.handlers.call.js +2 -1
  129. package/dist/src/server/MCPServer.search.helpers.js +2 -2
  130. package/dist/src/server/MCPServer.tools.js +1 -1
  131. package/dist/src/server/MCPServer.transport.js +12 -0
  132. package/dist/src/server/ToolCallContextGuard.d.ts +5 -0
  133. package/dist/src/server/ToolCallContextGuard.js +85 -0
  134. package/dist/src/server/ToolRouter.d.ts +26 -10
  135. package/dist/src/server/ToolRouter.intent.d.ts +26 -0
  136. package/dist/src/server/ToolRouter.intent.js +77 -0
  137. package/dist/src/server/ToolRouter.js +103 -284
  138. package/dist/src/server/ToolRouter.policy.d.ts +22 -0
  139. package/dist/src/server/ToolRouter.policy.js +163 -0
  140. package/dist/src/server/ToolRouter.probe.d.ts +17 -0
  141. package/dist/src/server/ToolRouter.probe.js +103 -0
  142. package/dist/src/server/ToolRouter.renderer.d.ts +9 -0
  143. package/dist/src/server/ToolRouter.renderer.js +52 -0
  144. package/dist/src/server/activation/ActivationController.js +15 -12
  145. package/dist/src/server/activation/CompoundConditionEngine.js +1 -1
  146. package/dist/src/server/activation/PredictiveBooster.js +1 -3
  147. package/dist/src/server/domains/analysis/definitions.js +155 -655
  148. package/dist/src/server/domains/analysis/handlers.impl.d.ts +8 -8
  149. package/dist/src/server/domains/analysis/handlers.impl.js +34 -28
  150. package/dist/src/server/domains/analysis/handlers.web-tools.js +4 -3
  151. package/dist/src/server/domains/analysis/manifest.js +6 -4
  152. package/dist/src/server/domains/antidebug/definitions.js +25 -111
  153. package/dist/src/server/domains/browser/definitions.tools.advanced.js +59 -88
  154. package/dist/src/server/domains/browser/definitions.tools.behavior.js +120 -227
  155. package/dist/src/server/domains/browser/definitions.tools.page-core.js +157 -386
  156. package/dist/src/server/domains/browser/definitions.tools.page-system.js +108 -250
  157. package/dist/src/server/domains/browser/definitions.tools.runtime.js +61 -174
  158. package/dist/src/server/domains/browser/definitions.tools.security.js +92 -237
  159. package/dist/src/server/domains/browser/handlers/camoufox-browser.js +3 -2
  160. package/dist/src/server/domains/browser/handlers/captcha-solver.js +3 -3
  161. package/dist/src/server/domains/browser/handlers/dom-query.js +2 -1
  162. package/dist/src/server/domains/browser/handlers/facade-initializer.d.ts +3 -3
  163. package/dist/src/server/domains/browser/handlers/facade-initializer.js +3 -3
  164. package/dist/src/server/domains/browser/handlers/framework-state.js +231 -3
  165. package/dist/src/server/domains/browser/handlers/indexeddb-dump.js +21 -20
  166. package/dist/src/server/domains/browser/handlers/script-management.js +1 -1
  167. package/dist/src/server/domains/browser/handlers/stealth-injection.js +8 -2
  168. package/dist/src/server/domains/browser/handlers.impl.d.ts +15 -12
  169. package/dist/src/server/domains/browser/handlers.impl.js +5 -6
  170. package/dist/src/server/domains/browser/manifest.js +37 -13
  171. package/dist/src/server/domains/coordination/definitions.js +50 -149
  172. package/dist/src/server/domains/coordination/index.d.ts +20 -1
  173. package/dist/src/server/domains/coordination/index.js +133 -0
  174. package/dist/src/server/domains/coordination/manifest.js +15 -0
  175. package/dist/src/server/domains/debugger/definitions.tools.advanced.js +72 -189
  176. package/dist/src/server/domains/debugger/definitions.tools.core.js +114 -288
  177. package/dist/src/server/domains/debugger/manifest.js +9 -2
  178. package/dist/src/server/domains/encoding/definitions.js +43 -153
  179. package/dist/src/server/domains/encoding/handlers.base.js +2 -2
  180. package/dist/src/server/domains/evidence/definitions.d.ts +2 -0
  181. package/dist/src/server/domains/evidence/definitions.js +42 -0
  182. package/dist/src/server/domains/evidence/handlers.d.ts +582 -0
  183. package/dist/src/server/domains/evidence/handlers.js +60 -0
  184. package/dist/src/server/domains/evidence/index.d.ts +2 -0
  185. package/dist/src/server/domains/evidence/index.js +2 -0
  186. package/dist/src/server/domains/evidence/manifest.d.ts +63 -0
  187. package/dist/src/server/domains/evidence/manifest.js +78 -0
  188. package/dist/src/server/domains/graphql/definitions.js +53 -141
  189. package/dist/src/server/domains/graphql/handlers.impl.core.runtime.replay.js +92 -114
  190. package/dist/src/server/domains/hooks/ai-handlers.d.ts +0 -7
  191. package/dist/src/server/domains/hooks/ai-handlers.js +4 -70
  192. package/dist/src/server/domains/hooks/definitions.js +69 -335
  193. package/dist/src/server/domains/hooks/manifest.d.ts +1 -1
  194. package/dist/src/server/domains/hooks/manifest.js +1 -2
  195. package/dist/src/server/domains/instrumentation/definitions.d.ts +2 -0
  196. package/dist/src/server/domains/instrumentation/definitions.js +99 -0
  197. package/dist/src/server/domains/instrumentation/handlers.d.ts +78 -0
  198. package/dist/src/server/domains/instrumentation/handlers.js +206 -0
  199. package/dist/src/server/domains/instrumentation/index.d.ts +2 -0
  200. package/dist/src/server/domains/instrumentation/index.js +2 -0
  201. package/dist/src/server/domains/instrumentation/manifest.d.ts +63 -0
  202. package/dist/src/server/domains/instrumentation/manifest.js +114 -0
  203. package/dist/src/server/domains/macro/definitions.js +16 -43
  204. package/dist/src/server/domains/maintenance/definitions.js +60 -219
  205. package/dist/src/server/domains/maintenance/handlers.d.ts +2 -2
  206. package/dist/src/server/domains/maintenance/handlers.extensions.js +78 -20
  207. package/dist/src/server/domains/maintenance/handlers.js +2 -2
  208. package/dist/src/server/domains/memory/definitions.js +387 -559
  209. package/dist/src/server/domains/memory/handlers/hooks.d.ts +55 -0
  210. package/dist/src/server/domains/memory/handlers/hooks.js +115 -0
  211. package/dist/src/server/domains/memory/handlers/integrity.d.ts +77 -0
  212. package/dist/src/server/domains/memory/handlers/integrity.js +180 -0
  213. package/dist/src/server/domains/memory/handlers/pointer-chain.d.ts +29 -0
  214. package/dist/src/server/domains/memory/handlers/pointer-chain.js +82 -0
  215. package/dist/src/server/domains/memory/handlers/readwrite.d.ts +41 -0
  216. package/dist/src/server/domains/memory/handlers/readwrite.js +78 -0
  217. package/dist/src/server/domains/memory/handlers/scan.d.ts +35 -0
  218. package/dist/src/server/domains/memory/handlers/scan.js +97 -0
  219. package/dist/src/server/domains/memory/handlers/session.d.ts +23 -0
  220. package/dist/src/server/domains/memory/handlers/session.js +49 -0
  221. package/dist/src/server/domains/memory/handlers/structure.d.ts +29 -0
  222. package/dist/src/server/domains/memory/handlers/structure.js +74 -0
  223. package/dist/src/server/domains/memory/handlers.impl.d.ts +49 -54
  224. package/dist/src/server/domains/memory/handlers.impl.js +63 -494
  225. package/dist/src/server/domains/memory/manifest.js +236 -64
  226. package/dist/src/server/domains/native-bridge/definitions.js +54 -192
  227. package/dist/src/server/domains/native-bridge/index.d.ts +1 -0
  228. package/dist/src/server/domains/native-bridge/index.js +2 -1
  229. package/dist/src/server/domains/network/auth-extractor.js +1 -1
  230. package/dist/src/server/domains/network/definitions.js +175 -578
  231. package/dist/src/server/domains/network/handlers.base.core.d.ts +64 -0
  232. package/dist/src/server/domains/network/handlers.base.core.js +623 -0
  233. package/dist/src/server/domains/network/handlers.base.d.ts +2 -124
  234. package/dist/src/server/domains/network/handlers.base.js +3 -878
  235. package/dist/src/server/domains/network/handlers.base.performance.d.ts +63 -0
  236. package/dist/src/server/domains/network/handlers.base.performance.js +193 -0
  237. package/dist/src/server/domains/network/handlers.base.types.d.ts +42 -0
  238. package/dist/src/server/domains/network/handlers.base.types.js +89 -0
  239. package/dist/src/server/domains/network/handlers.impl.core.runtime.d.ts +1 -1
  240. package/dist/src/server/domains/network/handlers.impl.core.runtime.intercept.d.ts +21 -0
  241. package/dist/src/server/domains/network/handlers.impl.core.runtime.intercept.js +186 -0
  242. package/dist/src/server/domains/network/handlers.impl.core.runtime.js +1 -1
  243. package/dist/src/server/domains/network/manifest.js +15 -0
  244. package/dist/src/server/domains/network/replay.js +1 -4
  245. package/dist/src/server/domains/platform/definitions.js +121 -112
  246. package/dist/src/server/domains/platform/handlers/bridge-handlers.d.ts +5 -1
  247. package/dist/src/server/domains/platform/handlers/bridge-handlers.js +194 -5
  248. package/dist/src/server/domains/platform/handlers/electron-asar-helpers.js +26 -6
  249. package/dist/src/server/domains/platform/handlers/electron-dual-cdp.d.ts +3 -0
  250. package/dist/src/server/domains/platform/handlers/electron-dual-cdp.js +170 -0
  251. package/dist/src/server/domains/platform/handlers/electron-fuse-handler.d.ts +3 -0
  252. package/dist/src/server/domains/platform/handlers/electron-fuse-handler.js +193 -0
  253. package/dist/src/server/domains/platform/handlers/electron-handlers.d.ts +6 -0
  254. package/dist/src/server/domains/platform/handlers/electron-handlers.js +95 -2
  255. package/dist/src/server/domains/platform/handlers/electron-ipc-sniffer.d.ts +2 -0
  256. package/dist/src/server/domains/platform/handlers/electron-ipc-sniffer.js +370 -0
  257. package/dist/src/server/domains/platform/handlers/electron-userdata-handler.d.ts +2 -0
  258. package/dist/src/server/domains/platform/handlers/electron-userdata-handler.js +78 -0
  259. package/dist/src/server/domains/platform/handlers/miniapp-handlers.d.ts +1 -1
  260. package/dist/src/server/domains/platform/handlers/miniapp-handlers.js +4 -4
  261. package/dist/src/server/domains/platform/handlers/v8-bytecode-handler.d.ts +2 -0
  262. package/dist/src/server/domains/platform/handlers/v8-bytecode-handler.js +207 -0
  263. package/dist/src/server/domains/platform/handlers.d.ts +48 -0
  264. package/dist/src/server/domains/platform/handlers.js +29 -0
  265. package/dist/src/server/domains/platform/manifest.js +38 -0
  266. package/dist/src/server/domains/process/definitions.js +163 -647
  267. package/dist/src/server/domains/process/handlers.base.d.ts +3 -95
  268. package/dist/src/server/domains/process/handlers.base.js +7 -462
  269. package/dist/src/server/domains/process/handlers.base.process.d.ts +61 -0
  270. package/dist/src/server/domains/process/handlers.base.process.js +417 -0
  271. package/dist/src/server/domains/process/handlers.base.types.d.ts +57 -0
  272. package/dist/src/server/domains/process/handlers.base.types.js +50 -0
  273. package/dist/src/server/domains/process/handlers.impl.core.runtime.inject.js +19 -17
  274. package/dist/src/server/domains/process/manifest.js +6 -1
  275. package/dist/src/server/domains/sandbox/definitions.js +11 -33
  276. package/dist/src/server/domains/sandbox/handlers.js +8 -3
  277. package/dist/src/server/domains/shared/ResponseBuilder.d.ts +209 -0
  278. package/dist/src/server/domains/shared/ResponseBuilder.js +48 -0
  279. package/dist/src/server/domains/shared/modules.d.ts +0 -2
  280. package/dist/src/server/domains/shared/modules.js +0 -1
  281. package/dist/src/server/domains/sourcemap/definitions.js +27 -111
  282. package/dist/src/server/domains/sourcemap/handlers.impl.sourcemap-common.js +7 -2
  283. package/dist/src/server/domains/sourcemap/handlers.impl.sourcemap-main.js +1 -1
  284. package/dist/src/server/domains/sourcemap/handlers.impl.sourcemap-parse-base.js +1 -1
  285. package/dist/src/server/domains/sourcemap/manifest.d.ts +1 -1
  286. package/dist/src/server/domains/sourcemap/manifest.js +1 -1
  287. package/dist/src/server/domains/streaming/definitions.js +36 -148
  288. package/dist/src/server/domains/streaming/handlers.impl.streaming-sse.js +163 -164
  289. package/dist/src/server/domains/streaming/handlers.impl.streaming-ws.js +1 -1
  290. package/dist/src/server/domains/trace/TraceSummarizer.d.ts +60 -0
  291. package/dist/src/server/domains/trace/TraceSummarizer.js +112 -0
  292. package/dist/src/server/domains/trace/definitions.tools.js +51 -176
  293. package/dist/src/server/domains/trace/handlers.d.ts +2 -1
  294. package/dist/src/server/domains/trace/handlers.js +62 -9
  295. package/dist/src/server/domains/trace/index.d.ts +2 -1
  296. package/dist/src/server/domains/trace/index.js +2 -1
  297. package/dist/src/server/domains/trace/manifest.js +18 -4
  298. package/dist/src/server/domains/transform/definitions.js +50 -210
  299. package/dist/src/server/domains/transform/handlers.impl.transform-base.js +6 -6
  300. package/dist/src/server/domains/transform/handlers.impl.transform-crypto.js +18 -19
  301. package/dist/src/server/domains/transform/manifest.d.ts +1 -1
  302. package/dist/src/server/domains/transform/manifest.js +1 -1
  303. package/dist/src/server/domains/wasm/definitions.js +55 -232
  304. package/dist/src/server/domains/wasm/handlers.js +3 -3
  305. package/dist/src/server/domains/workflow/definitions.js +144 -414
  306. package/dist/src/server/domains/workflow/handlers.impl.workflow-account-bundle.js +2 -2
  307. package/dist/src/server/domains/workflow/handlers.impl.workflow-base.d.ts +2 -0
  308. package/dist/src/server/domains/workflow/handlers.impl.workflow-base.js +126 -87
  309. package/dist/src/server/domains/workflow/handlers.impl.workflow-batch.js +5 -5
  310. package/dist/src/server/evidence/ReverseEvidenceGraph.d.ts +20 -0
  311. package/dist/src/server/evidence/ReverseEvidenceGraph.js +208 -0
  312. package/dist/src/server/evidence/index.d.ts +2 -0
  313. package/dist/src/server/evidence/index.js +1 -0
  314. package/dist/src/server/evidence/types.d.ts +22 -0
  315. package/dist/src/server/evidence/types.js +1 -0
  316. package/dist/src/server/extensions/ExtensionManager.d.ts +1 -0
  317. package/dist/src/server/extensions/ExtensionManager.discovery.js +72 -9
  318. package/dist/src/server/extensions/ExtensionManager.integrity.js +1 -1
  319. package/dist/src/server/extensions/ExtensionManager.js +193 -40
  320. package/dist/src/server/extensions/ExtensionManager.roots.d.ts +1 -1
  321. package/dist/src/server/extensions/ExtensionManager.roots.js +19 -9
  322. package/dist/src/server/extensions/plugin-config.js +1 -1
  323. package/dist/src/server/extensions/plugin-env.d.ts +1 -1
  324. package/dist/src/server/extensions/plugin-env.js +10 -4
  325. package/dist/src/server/extensions/types.d.ts +17 -0
  326. package/dist/src/server/extensions/types.js +1 -1
  327. package/dist/src/server/http/HttpMiddleware.js +1 -1
  328. package/dist/src/server/instrumentation/EvidenceGraphBridge.d.ts +13 -0
  329. package/dist/src/server/instrumentation/EvidenceGraphBridge.js +150 -0
  330. package/dist/src/server/instrumentation/InstrumentationSession.d.ts +60 -0
  331. package/dist/src/server/instrumentation/InstrumentationSession.js +269 -0
  332. package/dist/src/server/instrumentation/index.d.ts +2 -0
  333. package/dist/src/server/instrumentation/index.js +2 -0
  334. package/dist/src/server/instrumentation/types.d.ts +62 -0
  335. package/dist/src/server/instrumentation/types.js +7 -0
  336. package/dist/src/server/macros/MacroConfigLoader.d.ts +6 -5
  337. package/dist/src/server/macros/MacroConfigLoader.js +61 -59
  338. package/dist/src/server/macros/MacroRunner.js +6 -2
  339. package/dist/src/server/macros/builtins/index.d.ts +2 -3
  340. package/dist/src/server/macros/builtins/index.js +51 -7
  341. package/dist/src/server/plugins/PluginContract.d.ts +1 -1
  342. package/dist/src/server/registry/contracts.d.ts +7 -1
  343. package/dist/src/server/registry/discovery.js +5 -4
  344. package/dist/src/server/registry/ensure-browser-core.js +0 -3
  345. package/dist/src/server/registry/index.js +4 -4
  346. package/dist/src/server/registry/tool-builder.d.ts +46 -0
  347. package/dist/src/server/registry/tool-builder.js +105 -0
  348. package/dist/src/server/sandbox/MCPBridge.d.ts +9 -0
  349. package/dist/src/server/sandbox/MCPBridge.js +22 -0
  350. package/dist/src/server/sandbox/QuickJSSandbox.d.ts +4 -1
  351. package/dist/src/server/sandbox/QuickJSSandbox.js +162 -2
  352. package/dist/src/server/sandbox/types.d.ts +13 -0
  353. package/dist/src/server/search/AffinityGraph.d.ts +7 -1
  354. package/dist/src/server/search/AffinityGraph.js +24 -3
  355. package/dist/src/server/search/EmbeddingWorker.js +5 -3
  356. package/dist/src/server/search/FeedbackTracker.d.ts +9 -0
  357. package/dist/src/server/search/FeedbackTracker.js +26 -0
  358. package/dist/src/server/search/QueryNormalizer.d.ts +6 -0
  359. package/dist/src/server/search/QueryNormalizer.js +94 -0
  360. package/dist/src/server/search/ToolSearchEngineImpl.d.ts +2 -3
  361. package/dist/src/server/search/ToolSearchEngineImpl.js +38 -88
  362. package/dist/src/server/workflows/WorkflowContract.d.ts +24 -0
  363. package/dist/src/server/workflows/WorkflowContract.js +12 -0
  364. package/dist/src/server/workflows/WorkflowEngine.d.ts +1 -0
  365. package/dist/src/server/workflows/WorkflowEngine.js +136 -3
  366. package/dist/src/types/config.d.ts +0 -14
  367. package/dist/src/types/deobfuscator.d.ts +0 -1
  368. package/dist/src/types/index.d.ts +1 -1
  369. package/dist/src/utils/DetailedDataManager.js +2 -0
  370. package/dist/src/utils/RingBuffer.js +5 -5
  371. package/dist/src/utils/TokenBudgetManager.js +1 -1
  372. package/dist/src/utils/UnifiedCacheManager.d.ts +1 -1
  373. package/dist/src/utils/UnifiedCacheManager.js +3 -3
  374. package/dist/src/utils/artifactRetention.js +2 -2
  375. package/dist/src/utils/betterSqlite3.d.ts +11 -0
  376. package/dist/src/utils/betterSqlite3.js +88 -0
  377. package/dist/src/utils/browserExecutable.js +2 -2
  378. package/dist/src/utils/cliFastPath.js +17 -6
  379. package/dist/src/utils/config.js +4 -26
  380. package/dist/src/utils/environmentDoctor.js +138 -11
  381. package/dist/src/utils/outputPaths.js +16 -9
  382. package/dist/src/utils/parallel.js +1 -3
  383. package/package.json +76 -72
  384. package/scripts/postinstall.cjs +37 -37
  385. package/src/native/scripts/linux/enum-windows.sh +12 -12
  386. package/src/native/scripts/macos/enum-windows.applescript +22 -22
  387. package/src/native/scripts/windows/enum-windows-by-class.ps1 +51 -51
  388. package/src/native/scripts/windows/enum-windows.ps1 +44 -44
  389. package/src/native/scripts/windows/inject-dll.ps1 +21 -21
  390. package/workflows/.gitkeep +0 -0
  391. package/dist/src/modules/analyzer/AISummarizer.d.ts +0 -39
  392. package/dist/src/modules/analyzer/AISummarizer.js +0 -122
  393. package/dist/src/modules/hook/AIHookGenerator.d.ts +0 -52
  394. package/dist/src/modules/hook/AIHookGenerator.js +0 -360
  395. package/dist/src/modules/hook/AIHookGeneratorTemplates.d.ts +0 -9
  396. package/dist/src/modules/hook/AIHookGeneratorTemplates.js +0 -157
  397. package/dist/src/server/macros/builtins/deobfuscate-ast-flow.d.ts +0 -2
  398. package/dist/src/server/macros/builtins/deobfuscate-ast-flow.js +0 -25
  399. package/dist/src/server/macros/builtins/unpacker-flow.d.ts +0 -2
  400. package/dist/src/server/macros/builtins/unpacker-flow.js +0 -25
  401. package/dist/src/services/LLMService.d.ts +0 -37
  402. package/dist/src/services/LLMService.js +0 -233
  403. package/dist/src/services/prompts/analysis.d.ts +0 -9
  404. package/dist/src/services/prompts/analysis.js +0 -158
  405. package/dist/src/services/prompts/crypto.d.ts +0 -2
  406. package/dist/src/services/prompts/crypto.js +0 -108
  407. package/dist/src/services/prompts/deobfuscation.d.ts +0 -6
  408. package/dist/src/services/prompts/deobfuscation.js +0 -300
  409. package/dist/src/services/prompts/environment.d.ts +0 -16
  410. package/dist/src/services/prompts/environment.js +0 -372
  411. package/dist/src/services/prompts/intelligence.d.ts +0 -4
  412. package/dist/src/services/prompts/intelligence.js +0 -250
  413. package/dist/src/services/prompts/taint.d.ts +0 -2
  414. package/dist/src/services/prompts/taint.js +0 -54
@@ -1,7 +1,7 @@
1
+ import { tool } from '../../registry/tool-builder.js';
1
2
  export const browserPageCoreTools = [
2
- {
3
- name: 'page_navigate',
4
- description: `Navigate to a URL
3
+ tool('page_navigate')
4
+ .desc(`Navigate to a URL
5
5
 
6
6
  Features:
7
7
  - Automatic CAPTCHA detection
@@ -14,102 +14,39 @@ If you want to capture network requests, you have two options:
14
14
  2. Set enableNetworkMonitoring=true in page_navigate (convenient for quick capture)
15
15
 
16
16
  Example with network monitoring:
17
- page_navigate(url="https:
17
+ page_navigate(url="https:")
18
18
  -> Network monitoring auto-enabled
19
19
  -> Page loads
20
- -> Use network_get_requests to see captured requests`,
21
- inputSchema: {
22
- type: 'object',
23
- properties: {
24
- url: {
25
- type: 'string',
26
- description: 'Target URL to navigate to',
27
- },
28
- waitUntil: {
29
- type: 'string',
30
- description: 'When to consider navigation succeeded',
31
- enum: ['load', 'domcontentloaded', 'networkidle', 'commit'],
32
- default: 'networkidle',
33
- },
34
- timeout: {
35
- type: 'number',
36
- description: 'Navigation timeout in milliseconds',
37
- default: 30000,
38
- },
39
- enableNetworkMonitoring: {
40
- type: 'boolean',
41
- description: ' Auto-enable network monitoring before navigation to capture all requests. If already enabled, this has no effect.',
42
- default: false,
43
- },
44
- },
45
- required: ['url'],
46
- },
47
- },
48
- {
49
- name: 'page_reload',
50
- description: 'Reload current page',
51
- inputSchema: {
52
- type: 'object',
53
- properties: {},
54
- },
55
- },
56
- {
57
- name: 'page_back',
58
- description: 'Navigate back in history',
59
- inputSchema: {
60
- type: 'object',
61
- properties: {},
62
- },
63
- },
64
- {
65
- name: 'page_forward',
66
- description: 'Navigate forward in history',
67
- inputSchema: {
68
- type: 'object',
69
- properties: {},
70
- },
71
- },
72
- {
73
- name: 'dom_query_selector',
74
- description: 'Query single element (like document.querySelector). AI should use this BEFORE clicking to verify element exists.',
75
- inputSchema: {
76
- type: 'object',
77
- properties: {
78
- selector: {
79
- type: 'string',
80
- description: 'CSS selector',
81
- },
82
- getAttributes: {
83
- type: 'boolean',
84
- description: 'Whether to get element attributes',
85
- default: true,
86
- },
87
- },
88
- required: ['selector'],
89
- },
90
- },
91
- {
92
- name: 'dom_query_all',
93
- description: 'Query all matching elements (like document.querySelectorAll)',
94
- inputSchema: {
95
- type: 'object',
96
- properties: {
97
- selector: {
98
- type: 'string',
99
- description: 'CSS selector',
100
- },
101
- limit: {
102
- type: 'number',
103
- description: 'Maximum number of elements to return',
104
- default: 100,
105
- },
106
- },
107
- required: ['selector'],
108
- },
109
- },
110
- {
111
- name: 'dom_get_structure',
112
- description: `Get page DOM structure (for AI to understand page layout).
20
+ -> Use network_get_requests to see captured requests`)
21
+ .string('url', 'Target URL to navigate to')
22
+ .enum('waitUntil', ['load', 'domcontentloaded', 'networkidle', 'commit'], 'When to consider navigation succeeded', { default: 'networkidle' })
23
+ .number('timeout', 'Navigation timeout in milliseconds', { default: 30000 })
24
+ .boolean('enableNetworkMonitoring', 'Auto-enable network monitoring before navigation to capture all requests. If already enabled, this has no effect.', { default: false })
25
+ .required('url')
26
+ .idempotent()
27
+ .openWorld()
28
+ .build(),
29
+ tool('page_reload').desc('Reload current page').idempotent().openWorld().build(),
30
+ tool('page_back').desc('Navigate back in history').openWorld().build(),
31
+ tool('page_forward').desc('Navigate forward in history').openWorld().build(),
32
+ tool('dom_query_selector')
33
+ .desc('Query single element (like document.querySelector). AI should use this BEFORE clicking to verify element exists.')
34
+ .string('selector', 'CSS selector')
35
+ .boolean('getAttributes', 'Whether to get element attributes', { default: true })
36
+ .required('selector')
37
+ .readOnly()
38
+ .idempotent()
39
+ .build(),
40
+ tool('dom_query_all')
41
+ .desc('Query all matching elements (like document.querySelectorAll)')
42
+ .string('selector', 'CSS selector')
43
+ .number('limit', 'Maximum number of elements to return', { default: 100 })
44
+ .required('selector')
45
+ .readOnly()
46
+ .idempotent()
47
+ .build(),
48
+ tool('dom_get_structure')
49
+ .desc(`Get page DOM structure (for AI to understand page layout).
113
50
 
114
51
  IMPORTANT: Large DOM structures (>50KB) automatically return summary + detailId.
115
52
 
@@ -120,163 +57,72 @@ Best Practices:
120
57
 
121
58
  Example:
122
59
  dom_get_structure(maxDepth=2, includeText=false)
123
- -> Returns compact structure without text content`,
124
- inputSchema: {
125
- type: 'object',
126
- properties: {
127
- maxDepth: {
128
- type: 'number',
129
- description: 'Maximum depth of DOM tree (default: 3, recommend: 2 for large pages)',
130
- default: 3,
131
- },
132
- includeText: {
133
- type: 'boolean',
134
- description: 'Whether to include text content (set false to reduce size)',
135
- default: true,
136
- },
137
- },
138
- },
139
- },
140
- {
141
- name: 'dom_find_clickable',
142
- description: 'Find all clickable elements (buttons, links). Use this to discover what can be clicked.',
143
- inputSchema: {
144
- type: 'object',
145
- properties: {
146
- filterText: {
147
- type: 'string',
148
- description: 'Filter by text content (optional)',
149
- },
150
- },
151
- },
152
- },
153
- {
154
- name: 'page_click',
155
- description: 'Click an element. Use dom_query_selector FIRST to verify element exists.',
156
- inputSchema: {
157
- type: 'object',
158
- properties: {
159
- selector: {
160
- type: 'string',
161
- description: 'CSS selector of element to click',
162
- },
163
- button: {
164
- type: 'string',
165
- description: 'Mouse button to click',
166
- enum: ['left', 'right', 'middle'],
167
- default: 'left',
168
- },
169
- clickCount: {
170
- oneOf: [{ type: 'number' }, { type: 'string' }],
171
- description: 'Number of clicks (numeric string is accepted and auto-normalized)',
172
- default: 1,
173
- },
174
- delay: {
175
- oneOf: [{ type: 'number' }, { type: 'string' }],
176
- description: 'Delay between mousedown and mouseup in milliseconds (numeric string is accepted)',
177
- },
178
- },
179
- required: ['selector'],
180
- },
181
- },
182
- {
183
- name: 'page_type',
184
- description: 'Type text into an input element',
185
- inputSchema: {
186
- type: 'object',
187
- properties: {
188
- selector: {
189
- type: 'string',
190
- description: 'CSS selector of input element',
191
- },
192
- text: {
193
- type: 'string',
194
- description: 'Text to type',
195
- },
196
- delay: {
197
- type: 'number',
198
- description: 'Delay between key presses in milliseconds',
199
- },
200
- },
201
- required: ['selector', 'text'],
202
- },
203
- },
204
- {
205
- name: 'page_select',
206
- description: 'Select option(s) in a <select> element',
207
- inputSchema: {
208
- type: 'object',
209
- properties: {
210
- selector: {
211
- type: 'string',
212
- description: 'CSS selector of select element',
213
- },
214
- values: {
215
- type: 'array',
216
- description: 'Values to select',
217
- items: {
218
- type: 'string',
219
- },
220
- },
221
- },
222
- required: ['selector', 'values'],
223
- },
224
- },
225
- {
226
- name: 'page_hover',
227
- description: 'Hover over an element',
228
- inputSchema: {
229
- type: 'object',
230
- properties: {
231
- selector: {
232
- type: 'string',
233
- description: 'CSS selector of element to hover',
234
- },
235
- },
236
- required: ['selector'],
237
- },
238
- },
239
- {
240
- name: 'page_scroll',
241
- description: 'Scroll the page',
242
- inputSchema: {
243
- type: 'object',
244
- properties: {
245
- x: {
246
- type: 'number',
247
- description: 'Horizontal scroll position',
248
- default: 0,
249
- },
250
- y: {
251
- type: 'number',
252
- description: 'Vertical scroll position',
253
- default: 0,
254
- },
255
- },
256
- },
257
- },
258
- {
259
- name: 'page_wait_for_selector',
260
- description: 'Wait for an element to appear',
261
- inputSchema: {
262
- type: 'object',
263
- properties: {
264
- selector: {
265
- type: 'string',
266
- description: 'CSS selector to wait for',
267
- },
268
- timeout: {
269
- type: 'number',
270
- description: 'Timeout in milliseconds',
271
- default: 30000,
272
- },
273
- },
274
- required: ['selector'],
275
- },
276
- },
277
- {
278
- name: 'page_evaluate',
279
- description: `Execute JavaScript code in page context and get result.
60
+ -> Returns compact structure without text content`)
61
+ .number('maxDepth', 'Maximum depth of DOM tree (default: 3, recommend: 2 for large pages)', {
62
+ default: 3,
63
+ })
64
+ .boolean('includeText', 'Whether to include text content (set false to reduce size)', {
65
+ default: true,
66
+ })
67
+ .readOnly()
68
+ .idempotent()
69
+ .build(),
70
+ tool('dom_find_clickable')
71
+ .desc('Find all clickable elements (buttons, links). Use this to discover what can be clicked.')
72
+ .string('filterText', 'Filter by text content (optional)')
73
+ .readOnly()
74
+ .idempotent()
75
+ .build(),
76
+ tool('page_click')
77
+ .desc('Click an element. Use dom_query_selector FIRST to verify element exists.')
78
+ .string('selector', 'CSS selector of element to click')
79
+ .enum('button', ['left', 'right', 'middle'], 'Mouse button to click', { default: 'left' })
80
+ .number('clickCount', 'Number of clicks (numeric string is accepted and auto-normalized)', {
81
+ default: 1,
82
+ })
83
+ .number('delay', 'Delay between mousedown and mouseup in milliseconds (numeric string is accepted)')
84
+ .required('selector')
85
+ .openWorld()
86
+ .build(),
87
+ tool('page_type')
88
+ .desc('Type text into an input element')
89
+ .string('selector', 'CSS selector of input element')
90
+ .string('text', 'Text to type')
91
+ .number('delay', 'Delay between key presses in milliseconds')
92
+ .required('selector', 'text')
93
+ .openWorld()
94
+ .build(),
95
+ tool('page_select')
96
+ .desc('Select option(s) in a <select> element')
97
+ .string('selector', 'CSS selector of select element')
98
+ .array('values', { type: 'string' }, 'Values to select')
99
+ .required('selector', 'values')
100
+ .idempotent()
101
+ .openWorld()
102
+ .build(),
103
+ tool('page_hover')
104
+ .desc('Hover over an element')
105
+ .string('selector', 'CSS selector of element to hover')
106
+ .required('selector')
107
+ .idempotent()
108
+ .openWorld()
109
+ .build(),
110
+ tool('page_scroll')
111
+ .desc('Scroll the page')
112
+ .number('x', 'Horizontal scroll position', { default: 0 })
113
+ .number('y', 'Vertical scroll position', { default: 0 })
114
+ .idempotent()
115
+ .build(),
116
+ tool('page_wait_for_selector')
117
+ .desc('Wait for an element to appear')
118
+ .string('selector', 'CSS selector to wait for')
119
+ .number('timeout', 'Timeout in milliseconds', { default: 30000 })
120
+ .required('selector')
121
+ .readOnly()
122
+ .idempotent()
123
+ .build(),
124
+ tool('page_evaluate')
125
+ .desc(`Execute JavaScript code in page context and get result.
280
126
 
281
127
  IMPORTANT: Large results (>50KB) automatically return summary + detailId to prevent context overflow.
282
128
  Use get_detailed_data(detailId) to retrieve full data if needed.
@@ -289,111 +135,59 @@ Best Practices:
289
135
  Example:
290
136
  page_evaluate("({ keys: Object.keys(window.byted_acrawler), type: typeof window.byted_acrawler })")
291
137
  -> Returns small summary
292
- -> If you need full object, use the returned detailId`,
293
- inputSchema: {
294
- type: 'object',
295
- properties: {
296
- code: {
297
- type: 'string',
298
- description: 'JavaScript code to execute',
299
- },
300
- autoSummarize: {
301
- type: 'boolean',
302
- description: 'Auto-summarize large results (default: true)',
303
- default: true,
304
- },
305
- maxSize: {
306
- type: 'number',
307
- description: 'Max result size in bytes before auto-summarizing (default: 50KB)',
308
- default: 51200,
309
- },
310
- fieldFilter: {
311
- type: 'array',
312
- items: { type: 'string' },
313
- description: 'Server-side field filter: remove keys matching these names from the result object (recursive). Useful to strip noise fields like "icon", "avatar", "base64Image".',
314
- },
315
- stripBase64: {
316
- type: 'boolean',
317
- description: 'Strip data URI and bare base64 strings from the result, replacing them with a size placeholder. Prevents context overflow from embedded images/fonts (default: false).',
318
- default: false,
319
- },
320
- },
321
- required: ['code'],
322
- },
323
- },
324
- {
325
- name: 'page_screenshot',
326
- description: `Take a screenshot of the page, a specific DOM element, multiple elements, or a pixel region.
138
+ -> If you need full object, use the returned detailId`)
139
+ .string('code', 'JavaScript code to execute')
140
+ .boolean('autoSummarize', 'Auto-summarize large results (default: true)', { default: true })
141
+ .number('maxSize', 'Max result size in bytes before auto-summarizing (default: 50KB)', {
142
+ default: 51200,
143
+ })
144
+ .array('fieldFilter', { type: 'string' }, 'Server-side field filter: remove keys matching these names from the result object (recursive). Useful to strip noise fields like "icon", "avatar", "base64Image".')
145
+ .boolean('stripBase64', 'Strip data URI and bare base64 strings from the result, replacing them with a size placeholder. Prevents context overflow from embedded images/fonts (default: false).', { default: false })
146
+ .required('code')
147
+ .openWorld()
148
+ .build(),
149
+ tool('page_screenshot')
150
+ .desc(`Take a screenshot of the page, a specific DOM element, multiple elements, or a pixel region.
327
151
 
328
152
  Modes:
329
153
  - Full page: omit selector or pass "all"
330
154
  - Single element: selector = ".my-class"
331
155
  - Multiple elements: selector = [".header", "#main", ".footer"] — returns one screenshot per element
332
- - Pixel region: pass clip = {x, y, width, height} (ignored when selector is set)`,
333
- inputSchema: {
334
- type: 'object',
335
- properties: {
336
- selector: {
337
- oneOf: [
338
- { type: 'string', description: 'Single CSS selector' },
339
- {
340
- type: 'array',
341
- items: { type: 'string' },
342
- description: 'Array of CSS selectors for batch element screenshots',
343
- },
344
- ],
345
- description: 'CSS selector(s) of the element(s) to screenshot. Omit or pass "all" for full page viewport.',
346
- },
347
- clip: {
348
- type: 'object',
349
- description: 'Pixel region to capture (ignored when selector is set)',
350
- properties: {
351
- x: { type: 'number', description: 'Left offset in pixels' },
352
- y: { type: 'number', description: 'Top offset in pixels' },
353
- width: { type: 'number', description: 'Region width in pixels' },
354
- height: { type: 'number', description: 'Region height in pixels' },
355
- },
356
- required: ['x', 'y', 'width', 'height'],
357
- },
358
- path: {
359
- type: 'string',
360
- description: 'File path to save screenshot (optional). For batch mode, used as directory or base name.',
361
- },
362
- type: {
363
- type: 'string',
364
- description: 'Image format',
365
- enum: ['png', 'jpeg'],
366
- default: 'png',
367
- },
368
- quality: {
369
- type: 'number',
370
- description: 'Image quality (0-100, only for jpeg)',
371
- },
372
- fullPage: {
373
- type: 'boolean',
374
- description: 'Capture full scrollable page (ignored when selector or clip is set)',
375
- default: false,
376
- },
377
- },
378
- },
379
- },
380
- {
381
- name: 'get_all_scripts',
382
- description: 'Get list of all loaded scripts on the page',
383
- inputSchema: {
384
- type: 'object',
385
- properties: {
386
- includeSource: {
387
- type: 'boolean',
388
- description: 'Whether to include script source code',
389
- default: false,
390
- },
156
+ - Pixel region: pass clip = {x, y, width, height} (ignored when selector is set)`)
157
+ .prop('selector', {
158
+ oneOf: [
159
+ { type: 'string', description: 'Single CSS selector' },
160
+ {
161
+ type: 'array',
162
+ items: { type: 'string' },
163
+ description: 'Array of CSS selectors for batch element screenshots',
391
164
  },
392
- },
393
- },
394
- {
395
- name: 'get_script_source',
396
- description: `Get source code of a specific script.
165
+ ],
166
+ description: 'CSS selector(s) of the element(s) to screenshot. Omit or pass "all" for full page viewport.',
167
+ })
168
+ .object('clip', {
169
+ x: { type: 'number', description: 'Left offset in pixels' },
170
+ y: { type: 'number', description: 'Top offset in pixels' },
171
+ width: { type: 'number', description: 'Region width in pixels' },
172
+ height: { type: 'number', description: 'Region height in pixels' },
173
+ }, 'Pixel region to capture (ignored when selector is set)', { required: ['x', 'y', 'width', 'height'] })
174
+ .string('path', 'File path to save screenshot (optional). For batch mode, used as directory or base name.')
175
+ .enum('type', ['png', 'jpeg'], 'Image format', { default: 'png' })
176
+ .number('quality', 'Image quality (0-100, only for jpeg)')
177
+ .boolean('fullPage', 'Capture full scrollable page (ignored when selector or clip is set)', {
178
+ default: false,
179
+ })
180
+ .readOnly()
181
+ .idempotent()
182
+ .build(),
183
+ tool('get_all_scripts')
184
+ .desc('Get list of all loaded scripts on the page')
185
+ .boolean('includeSource', 'Whether to include script source code', { default: false })
186
+ .readOnly()
187
+ .idempotent()
188
+ .build(),
189
+ tool('get_script_source')
190
+ .desc(`Get source code of a specific script.
397
191
 
398
192
  IMPORTANT: Large scripts (>50KB) automatically return summary + detailId.
399
193
  Use preview mode first to check script size before fetching full source.
@@ -406,37 +200,14 @@ Best Practices:
406
200
  Example:
407
201
  get_script_source(scriptId="abc", preview=true)
408
202
  -> Returns: { lines: 5000, size: "500KB", preview: "...", detailId: "..." }
409
- -> Then: get_detailed_data(detailId) to get full source`,
410
- inputSchema: {
411
- type: 'object',
412
- properties: {
413
- scriptId: {
414
- type: 'string',
415
- description: 'Script ID from get_all_scripts',
416
- },
417
- url: {
418
- type: 'string',
419
- description: 'Script URL (supports wildcards like *.js)',
420
- },
421
- preview: {
422
- type: 'boolean',
423
- description: 'Return preview only (first 100 lines + metadata)',
424
- default: false,
425
- },
426
- maxLines: {
427
- type: 'number',
428
- description: 'Max lines to return in preview mode (default: 100)',
429
- default: 100,
430
- },
431
- startLine: {
432
- type: 'number',
433
- description: 'Start line number (1-based, for partial fetch)',
434
- },
435
- endLine: {
436
- type: 'number',
437
- description: 'End line number (1-based, for partial fetch)',
438
- },
439
- },
440
- },
441
- },
203
+ -> Then: get_detailed_data(detailId) to get full source`)
204
+ .string('scriptId', 'Script ID from get_all_scripts')
205
+ .string('url', 'Script URL (supports wildcards like *.js)')
206
+ .boolean('preview', 'Return preview only (first 100 lines + metadata)', { default: false })
207
+ .number('maxLines', 'Max lines to return in preview mode (default: 100)', { default: 100 })
208
+ .number('startLine', 'Start line number (1-based, for partial fetch)')
209
+ .number('endLine', 'End line number (1-based, for partial fetch)')
210
+ .readOnly()
211
+ .idempotent()
212
+ .build(),
442
213
  ];