@jshookmcp/jshook 0.2.3 → 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 (385) hide show
  1. package/README.md +14 -5
  2. package/README.zh.md +18 -3
  3. package/dist/packages/extension-sdk/src/bridges/shared.js +2 -2
  4. package/dist/packages/extension-sdk/src/plugin.d.ts +5 -0
  5. package/dist/packages/extension-sdk/src/plugin.js +119 -33
  6. package/dist/packages/extension-sdk/src/workflow.d.ts +156 -0
  7. package/dist/packages/extension-sdk/src/workflow.js +236 -0
  8. package/dist/src/config/search-defaults.js +161 -0
  9. package/dist/src/constants.d.ts +3 -0
  10. package/dist/src/constants.js +4 -1
  11. package/dist/src/index.d.ts +1 -1
  12. package/dist/src/index.js +13 -17
  13. package/dist/src/modules/analyzer/CodeAnalyzer.d.ts +1 -3
  14. package/dist/src/modules/analyzer/CodeAnalyzer.js +16 -28
  15. package/dist/src/modules/analyzer/CodeAnalyzerDataFlow.d.ts +1 -2
  16. package/dist/src/modules/analyzer/CodeAnalyzerDataFlow.js +1 -45
  17. package/dist/src/modules/analyzer/IntelligentAnalyzer.d.ts +1 -37
  18. package/dist/src/modules/analyzer/IntelligentAnalyzer.js +9 -142
  19. package/dist/src/modules/analyzer/PatternDetector.js +3 -3
  20. package/dist/src/modules/analyzer/PatternDetectorAuthPatterns.js +1 -1
  21. package/dist/src/modules/browser/BrowserDiscovery.js +2 -2
  22. package/dist/src/modules/browser/BrowserModeManager.js +11 -10
  23. package/dist/src/modules/browser/TabRegistry.js +2 -2
  24. package/dist/src/modules/browser/UnifiedBrowserManager.d.ts +1 -0
  25. package/dist/src/modules/browser/UnifiedBrowserManager.js +18 -3
  26. package/dist/src/modules/captcha/AICaptchaDetector.d.ts +1 -10
  27. package/dist/src/modules/captcha/AICaptchaDetector.js +7 -201
  28. package/dist/src/modules/collector/CodeCollector.js +4 -5
  29. package/dist/src/modules/collector/DOMInspector.js +48 -58
  30. package/dist/src/modules/collector/PageController.d.ts +17 -4
  31. package/dist/src/modules/collector/PageController.js +2 -5
  32. package/dist/src/modules/collector/PageScriptCollectors.js +3 -3
  33. package/dist/src/modules/crypto/CryptoDetector.d.ts +1 -4
  34. package/dist/src/modules/crypto/CryptoDetector.js +2 -42
  35. package/dist/src/modules/crypto/CryptoRules.js +1 -1
  36. package/dist/src/modules/debugger/BlackboxManager.js +1 -1
  37. package/dist/src/modules/debugger/DebuggerManager.impl.core.scope.js +1 -1
  38. package/dist/src/modules/debugger/ScriptManager.impl.extract-function-tree.js +4 -2
  39. package/dist/src/modules/debugger/WatchExpressionManager.js +1 -1
  40. package/dist/src/modules/deobfuscator/Deobfuscator.d.ts +1 -4
  41. package/dist/src/modules/deobfuscator/Deobfuscator.js +4 -39
  42. package/dist/src/modules/deobfuscator/JSVMPDeobfuscator.d.ts +0 -3
  43. package/dist/src/modules/deobfuscator/JSVMPDeobfuscator.js +2 -8
  44. package/dist/src/modules/deobfuscator/JSVMPDeobfuscator.restore.d.ts +1 -2
  45. package/dist/src/modules/deobfuscator/JSVMPDeobfuscator.restore.js +3 -55
  46. package/dist/src/modules/deobfuscator/JScramblerDeobfuscator.js +3 -4
  47. package/dist/src/modules/deobfuscator/VMDeobfuscator.d.ts +2 -10
  48. package/dist/src/modules/deobfuscator/VMDeobfuscator.js +3 -128
  49. package/dist/src/modules/deobfuscator/webcrack.js +15 -2
  50. package/dist/src/modules/emulator/AIEnvironmentAnalyzer.d.ts +5 -8
  51. package/dist/src/modules/emulator/AIEnvironmentAnalyzer.js +10 -102
  52. package/dist/src/modules/emulator/EnvironmentEmulator.d.ts +1 -5
  53. package/dist/src/modules/emulator/EnvironmentEmulator.js +7 -91
  54. package/dist/src/modules/emulator/EnvironmentEmulatorFetch.js +58 -61
  55. package/dist/src/modules/emulator/templates/chrome-env.d.ts +17 -7
  56. package/dist/src/modules/emulator/templates/chrome-env.js +14 -7
  57. package/dist/src/modules/external/ExternalToolRunner.js +25 -22
  58. package/dist/src/modules/hook/HookGeneratorBuilders.core.generators.compose.js +5 -5
  59. package/dist/src/modules/hook/HookGeneratorBuilders.core.generators.network.js +311 -311
  60. package/dist/src/modules/hook/HookGeneratorBuilders.core.generators.runtime.js +410 -410
  61. package/dist/src/modules/hook/HookGeneratorBuilders.core.generators.storage.js +122 -122
  62. package/dist/src/modules/monitor/ConsoleMonitor.impl.core.class.d.ts +13 -0
  63. package/dist/src/modules/monitor/ConsoleMonitor.impl.core.class.js +42 -0
  64. package/dist/src/modules/monitor/ConsoleMonitor.impl.core.dynamic.js +194 -194
  65. package/dist/src/modules/monitor/FetchInterceptor.d.ts +46 -0
  66. package/dist/src/modules/monitor/FetchInterceptor.js +191 -0
  67. package/dist/src/modules/monitor/PerformanceMonitor.js +8 -7
  68. package/dist/src/modules/monitor/PlaywrightNetworkMonitor.js +62 -62
  69. package/dist/src/modules/process/BaseMemoryManager.d.ts +1 -1
  70. package/dist/src/modules/process/LinuxProcessManager.js +2 -0
  71. package/dist/src/modules/process/MacProcessManager.js +25 -25
  72. package/dist/src/modules/process/MemoryManager.d.ts +1 -1
  73. package/dist/src/modules/process/MemoryManager.js +2 -2
  74. package/dist/src/modules/process/memory/AuditTrail.js +1 -1
  75. package/dist/src/modules/process/memory/availability.js +49 -49
  76. package/dist/src/modules/process/memory/injector.js +185 -185
  77. package/dist/src/modules/process/memory/reader.js +85 -53
  78. package/dist/src/modules/process/memory/regions.dump.js +51 -51
  79. package/dist/src/modules/process/memory/regions.enumerate.js +108 -108
  80. package/dist/src/modules/process/memory/regions.modules.js +80 -80
  81. package/dist/src/modules/process/memory/regions.protection.js +148 -115
  82. package/dist/src/modules/process/memory/scanner.d.ts +5 -1
  83. package/dist/src/modules/process/memory/scanner.darwin.js +98 -41
  84. package/dist/src/modules/process/memory/scanner.js +88 -4
  85. package/dist/src/modules/process/memory/scanner.windows.js +124 -124
  86. package/dist/src/modules/process/memory/writer.js +98 -58
  87. package/dist/src/modules/security/ExecutionSandbox.js +51 -52
  88. package/dist/src/modules/stealth/FingerprintManager.js +1 -1
  89. package/dist/src/modules/stealth/StealthScripts.d.ts +1 -0
  90. package/dist/src/modules/stealth/StealthScripts.js +18 -13
  91. package/dist/src/modules/stealth/StealthVerifier.js +1 -3
  92. package/dist/src/modules/symbolic/JSVMPSymbolicExecutor.d.ts +14 -0
  93. package/dist/src/modules/symbolic/JSVMPSymbolicExecutor.js +181 -2
  94. package/dist/src/modules/trace/TraceDB.js +75 -69
  95. package/dist/src/modules/trace/TraceRecorder.js +1 -5
  96. package/dist/src/native/AntiCheatDetector.js +67 -16
  97. package/dist/src/native/CodeInjector.js +3 -3
  98. package/dist/src/native/HardwareBreakpoint.js +24 -15
  99. package/dist/src/native/HeapAnalyzer.js +2 -2
  100. package/dist/src/native/MemoryController.js +1 -1
  101. package/dist/src/native/MemoryScanSession.js +2 -2
  102. package/dist/src/native/MemoryScanner.js +4 -8
  103. package/dist/src/native/NativeMemoryManager.impl.js +2 -2
  104. package/dist/src/native/PEAnalyzer.js +14 -15
  105. package/dist/src/native/PointerChainEngine.js +2 -4
  106. package/dist/src/native/ScriptLoader.js +4 -9
  107. package/dist/src/native/Speedhack.js +1 -1
  108. package/dist/src/native/StructureAnalyzer.js +52 -33
  109. package/dist/src/native/Win32API.d.ts +1 -0
  110. package/dist/src/native/Win32API.js +13 -0
  111. package/dist/src/native/Win32Debug.js +19 -19
  112. package/dist/src/native/platform/darwin/DarwinAPI.d.ts +2 -0
  113. package/dist/src/native/platform/darwin/DarwinAPI.js +8 -0
  114. package/dist/src/native/platform/darwin/DarwinMemoryProvider.js +6 -1
  115. package/dist/src/server/MCPServer.context.d.ts +2 -1
  116. package/dist/src/server/MCPServer.d.ts +2 -1
  117. package/dist/src/server/MCPServer.domain.d.ts +1 -1
  118. package/dist/src/server/MCPServer.domain.js +81 -16
  119. package/dist/src/server/MCPServer.js +41 -14
  120. package/dist/src/server/MCPServer.resources.d.ts +2 -0
  121. package/dist/src/server/MCPServer.resources.js +91 -0
  122. package/dist/src/server/MCPServer.search.handlers.call.js +2 -1
  123. package/dist/src/server/MCPServer.search.helpers.js +1 -1
  124. package/dist/src/server/MCPServer.transport.js +12 -0
  125. package/dist/src/server/ToolCallContextGuard.js +8 -0
  126. package/dist/src/server/ToolRouter.d.ts +25 -9
  127. package/dist/src/server/ToolRouter.intent.d.ts +26 -0
  128. package/dist/src/server/ToolRouter.intent.js +77 -0
  129. package/dist/src/server/ToolRouter.js +103 -284
  130. package/dist/src/server/ToolRouter.policy.d.ts +22 -0
  131. package/dist/src/server/ToolRouter.policy.js +163 -0
  132. package/dist/src/server/ToolRouter.probe.d.ts +17 -0
  133. package/dist/src/server/ToolRouter.probe.js +103 -0
  134. package/dist/src/server/ToolRouter.renderer.d.ts +9 -0
  135. package/dist/src/server/ToolRouter.renderer.js +52 -0
  136. package/dist/src/server/activation/ActivationController.js +15 -12
  137. package/dist/src/server/activation/CompoundConditionEngine.js +1 -1
  138. package/dist/src/server/activation/PredictiveBooster.js +1 -3
  139. package/dist/src/server/domains/analysis/definitions.js +155 -655
  140. package/dist/src/server/domains/analysis/handlers.impl.js +26 -20
  141. package/dist/src/server/domains/analysis/handlers.web-tools.js +2 -1
  142. package/dist/src/server/domains/analysis/manifest.js +6 -4
  143. package/dist/src/server/domains/antidebug/definitions.js +25 -111
  144. package/dist/src/server/domains/browser/definitions.tools.advanced.js +59 -88
  145. package/dist/src/server/domains/browser/definitions.tools.behavior.js +120 -227
  146. package/dist/src/server/domains/browser/definitions.tools.page-core.js +210 -439
  147. package/dist/src/server/domains/browser/definitions.tools.page-system.js +108 -250
  148. package/dist/src/server/domains/browser/definitions.tools.runtime.js +98 -211
  149. package/dist/src/server/domains/browser/definitions.tools.security.js +194 -339
  150. package/dist/src/server/domains/browser/handlers/camoufox-browser.js +3 -2
  151. package/dist/src/server/domains/browser/handlers/captcha-solver.js +3 -3
  152. package/dist/src/server/domains/browser/handlers/dom-query.js +2 -1
  153. package/dist/src/server/domains/browser/handlers/framework-state.js +27 -9
  154. package/dist/src/server/domains/browser/handlers/indexeddb-dump.js +21 -20
  155. package/dist/src/server/domains/browser/handlers/script-management.js +1 -1
  156. package/dist/src/server/domains/browser/handlers.impl.d.ts +1 -2
  157. package/dist/src/server/domains/browser/handlers.impl.js +2 -3
  158. package/dist/src/server/domains/browser/manifest.js +37 -13
  159. package/dist/src/server/domains/coordination/definitions.js +50 -216
  160. package/dist/src/server/domains/coordination/index.d.ts +2 -1
  161. package/dist/src/server/domains/coordination/index.js +1 -0
  162. package/dist/src/server/domains/debugger/definitions.tools.advanced.js +72 -189
  163. package/dist/src/server/domains/debugger/definitions.tools.core.js +114 -288
  164. package/dist/src/server/domains/debugger/manifest.js +9 -2
  165. package/dist/src/server/domains/encoding/definitions.js +43 -153
  166. package/dist/src/server/domains/encoding/handlers.base.js +2 -2
  167. package/dist/src/server/domains/evidence/definitions.d.ts +2 -0
  168. package/dist/src/server/domains/evidence/definitions.js +42 -0
  169. package/dist/src/server/domains/evidence/handlers.d.ts +582 -0
  170. package/dist/src/server/domains/evidence/handlers.js +60 -0
  171. package/dist/src/server/domains/evidence/index.d.ts +2 -0
  172. package/dist/src/server/domains/evidence/index.js +2 -0
  173. package/dist/src/server/domains/evidence/manifest.d.ts +63 -0
  174. package/dist/src/server/domains/evidence/manifest.js +78 -0
  175. package/dist/src/server/domains/graphql/definitions.js +53 -141
  176. package/dist/src/server/domains/graphql/handlers.impl.core.runtime.replay.js +92 -114
  177. package/dist/src/server/domains/graphql/handlers.impl.core.runtime.shared.js +77 -77
  178. package/dist/src/server/domains/hooks/ai-handlers.d.ts +0 -7
  179. package/dist/src/server/domains/hooks/ai-handlers.js +1 -67
  180. package/dist/src/server/domains/hooks/definitions.js +69 -335
  181. package/dist/src/server/domains/hooks/manifest.d.ts +1 -1
  182. package/dist/src/server/domains/hooks/manifest.js +1 -2
  183. package/dist/src/server/domains/instrumentation/definitions.d.ts +2 -0
  184. package/dist/src/server/domains/instrumentation/definitions.js +99 -0
  185. package/dist/src/server/domains/instrumentation/handlers.d.ts +78 -0
  186. package/dist/src/server/domains/instrumentation/handlers.js +206 -0
  187. package/dist/src/server/domains/instrumentation/index.d.ts +2 -0
  188. package/dist/src/server/domains/instrumentation/index.js +2 -0
  189. package/dist/src/server/domains/instrumentation/manifest.d.ts +63 -0
  190. package/dist/src/server/domains/instrumentation/manifest.js +114 -0
  191. package/dist/src/server/domains/macro/definitions.js +16 -43
  192. package/dist/src/server/domains/maintenance/definitions.js +60 -219
  193. package/dist/src/server/domains/maintenance/handlers.extensions.js +78 -20
  194. package/dist/src/server/domains/memory/definitions.js +387 -559
  195. package/dist/src/server/domains/memory/handlers/hooks.d.ts +55 -0
  196. package/dist/src/server/domains/memory/handlers/hooks.js +115 -0
  197. package/dist/src/server/domains/memory/handlers/integrity.d.ts +77 -0
  198. package/dist/src/server/domains/memory/handlers/integrity.js +180 -0
  199. package/dist/src/server/domains/memory/handlers/pointer-chain.d.ts +29 -0
  200. package/dist/src/server/domains/memory/handlers/pointer-chain.js +82 -0
  201. package/dist/src/server/domains/memory/handlers/readwrite.d.ts +41 -0
  202. package/dist/src/server/domains/memory/handlers/readwrite.js +78 -0
  203. package/dist/src/server/domains/memory/handlers/scan.d.ts +35 -0
  204. package/dist/src/server/domains/memory/handlers/scan.js +97 -0
  205. package/dist/src/server/domains/memory/handlers/session.d.ts +23 -0
  206. package/dist/src/server/domains/memory/handlers/session.js +49 -0
  207. package/dist/src/server/domains/memory/handlers/structure.d.ts +29 -0
  208. package/dist/src/server/domains/memory/handlers/structure.js +74 -0
  209. package/dist/src/server/domains/memory/handlers.impl.d.ts +49 -54
  210. package/dist/src/server/domains/memory/handlers.impl.js +63 -494
  211. package/dist/src/server/domains/memory/manifest.js +236 -64
  212. package/dist/src/server/domains/native-bridge/definitions.js +54 -192
  213. package/dist/src/server/domains/native-bridge/index.d.ts +1 -0
  214. package/dist/src/server/domains/native-bridge/index.js +2 -1
  215. package/dist/src/server/domains/network/auth-extractor.js +1 -1
  216. package/dist/src/server/domains/network/definitions.js +175 -578
  217. package/dist/src/server/domains/network/handlers.base.core.d.ts +64 -0
  218. package/dist/src/server/domains/network/handlers.base.core.js +623 -0
  219. package/dist/src/server/domains/network/handlers.base.d.ts +2 -124
  220. package/dist/src/server/domains/network/handlers.base.js +3 -878
  221. package/dist/src/server/domains/network/handlers.base.performance.d.ts +63 -0
  222. package/dist/src/server/domains/network/handlers.base.performance.js +193 -0
  223. package/dist/src/server/domains/network/handlers.base.types.d.ts +42 -0
  224. package/dist/src/server/domains/network/handlers.base.types.js +89 -0
  225. package/dist/src/server/domains/network/handlers.impl.core.runtime.d.ts +1 -1
  226. package/dist/src/server/domains/network/handlers.impl.core.runtime.intercept.d.ts +21 -0
  227. package/dist/src/server/domains/network/handlers.impl.core.runtime.intercept.js +186 -0
  228. package/dist/src/server/domains/network/handlers.impl.core.runtime.js +1 -1
  229. package/dist/src/server/domains/network/manifest.js +15 -0
  230. package/dist/src/server/domains/network/replay.js +1 -4
  231. package/dist/src/server/domains/platform/definitions.js +121 -112
  232. package/dist/src/server/domains/platform/handlers/bridge-handlers.d.ts +4 -0
  233. package/dist/src/server/domains/platform/handlers/bridge-handlers.js +193 -4
  234. package/dist/src/server/domains/platform/handlers/electron-asar-helpers.js +26 -6
  235. package/dist/src/server/domains/platform/handlers/electron-dual-cdp.d.ts +3 -0
  236. package/dist/src/server/domains/platform/handlers/electron-dual-cdp.js +170 -0
  237. package/dist/src/server/domains/platform/handlers/electron-fuse-handler.d.ts +3 -0
  238. package/dist/src/server/domains/platform/handlers/electron-fuse-handler.js +193 -0
  239. package/dist/src/server/domains/platform/handlers/electron-handlers.d.ts +6 -0
  240. package/dist/src/server/domains/platform/handlers/electron-handlers.js +95 -2
  241. package/dist/src/server/domains/platform/handlers/electron-ipc-sniffer.d.ts +2 -0
  242. package/dist/src/server/domains/platform/handlers/electron-ipc-sniffer.js +370 -0
  243. package/dist/src/server/domains/platform/handlers/electron-userdata-handler.d.ts +2 -0
  244. package/dist/src/server/domains/platform/handlers/electron-userdata-handler.js +78 -0
  245. package/dist/src/server/domains/platform/handlers/miniapp-handlers.js +3 -3
  246. package/dist/src/server/domains/platform/handlers/v8-bytecode-handler.d.ts +2 -0
  247. package/dist/src/server/domains/platform/handlers/v8-bytecode-handler.js +207 -0
  248. package/dist/src/server/domains/platform/handlers.d.ts +48 -0
  249. package/dist/src/server/domains/platform/handlers.js +29 -0
  250. package/dist/src/server/domains/platform/manifest.js +38 -0
  251. package/dist/src/server/domains/process/definitions.js +163 -647
  252. package/dist/src/server/domains/process/handlers.base.d.ts +3 -95
  253. package/dist/src/server/domains/process/handlers.base.js +7 -462
  254. package/dist/src/server/domains/process/handlers.base.process.d.ts +61 -0
  255. package/dist/src/server/domains/process/handlers.base.process.js +417 -0
  256. package/dist/src/server/domains/process/handlers.base.types.d.ts +57 -0
  257. package/dist/src/server/domains/process/handlers.base.types.js +50 -0
  258. package/dist/src/server/domains/process/handlers.impl.core.runtime.inject.js +18 -16
  259. package/dist/src/server/domains/process/manifest.js +6 -1
  260. package/dist/src/server/domains/sandbox/definitions.js +11 -33
  261. package/dist/src/server/domains/sandbox/handlers.js +8 -3
  262. package/dist/src/server/domains/shared/ResponseBuilder.d.ts +209 -0
  263. package/dist/src/server/domains/shared/ResponseBuilder.js +48 -0
  264. package/dist/src/server/domains/shared/modules.d.ts +0 -2
  265. package/dist/src/server/domains/shared/modules.js +0 -1
  266. package/dist/src/server/domains/sourcemap/definitions.js +27 -111
  267. package/dist/src/server/domains/sourcemap/handlers.impl.sourcemap-common.js +7 -2
  268. package/dist/src/server/domains/sourcemap/handlers.impl.sourcemap-main.js +1 -1
  269. package/dist/src/server/domains/sourcemap/handlers.impl.sourcemap-parse-base.js +1 -1
  270. package/dist/src/server/domains/sourcemap/manifest.d.ts +1 -1
  271. package/dist/src/server/domains/sourcemap/manifest.js +1 -1
  272. package/dist/src/server/domains/streaming/definitions.js +36 -148
  273. package/dist/src/server/domains/streaming/handlers.impl.streaming-sse.js +163 -164
  274. package/dist/src/server/domains/streaming/handlers.impl.streaming-ws.js +1 -1
  275. package/dist/src/server/domains/trace/TraceSummarizer.js +8 -5
  276. package/dist/src/server/domains/trace/definitions.tools.js +51 -206
  277. package/dist/src/server/domains/trace/handlers.js +10 -12
  278. package/dist/src/server/domains/trace/index.d.ts +2 -1
  279. package/dist/src/server/domains/trace/index.js +2 -1
  280. package/dist/src/server/domains/trace/manifest.js +15 -3
  281. package/dist/src/server/domains/transform/definitions.js +50 -210
  282. package/dist/src/server/domains/transform/handlers.impl.transform-base.js +108 -108
  283. package/dist/src/server/domains/transform/handlers.impl.transform-crypto.js +18 -19
  284. package/dist/src/server/domains/transform/manifest.d.ts +1 -1
  285. package/dist/src/server/domains/transform/manifest.js +1 -1
  286. package/dist/src/server/domains/wasm/definitions.js +55 -232
  287. package/dist/src/server/domains/wasm/handlers.js +1 -1
  288. package/dist/src/server/domains/workflow/definitions.js +144 -414
  289. package/dist/src/server/domains/workflow/handlers.impl.workflow-account-bundle.js +1 -1
  290. package/dist/src/server/domains/workflow/handlers.impl.workflow-api.js +51 -51
  291. package/dist/src/server/domains/workflow/handlers.impl.workflow-base.d.ts +2 -0
  292. package/dist/src/server/domains/workflow/handlers.impl.workflow-base.js +126 -87
  293. package/dist/src/server/domains/workflow/handlers.impl.workflow-batch.js +5 -5
  294. package/dist/src/server/evidence/ReverseEvidenceGraph.d.ts +20 -0
  295. package/dist/src/server/evidence/ReverseEvidenceGraph.js +208 -0
  296. package/dist/src/server/evidence/index.d.ts +2 -0
  297. package/dist/src/server/evidence/index.js +1 -0
  298. package/dist/src/server/evidence/types.d.ts +22 -0
  299. package/dist/src/server/evidence/types.js +1 -0
  300. package/dist/src/server/extensions/ExtensionManager.d.ts +1 -0
  301. package/dist/src/server/extensions/ExtensionManager.discovery.js +72 -9
  302. package/dist/src/server/extensions/ExtensionManager.integrity.js +1 -1
  303. package/dist/src/server/extensions/ExtensionManager.js +193 -40
  304. package/dist/src/server/extensions/ExtensionManager.roots.d.ts +1 -1
  305. package/dist/src/server/extensions/ExtensionManager.roots.js +4 -4
  306. package/dist/src/server/extensions/plugin-config.js +1 -1
  307. package/dist/src/server/extensions/plugin-env.d.ts +1 -1
  308. package/dist/src/server/extensions/plugin-env.js +10 -4
  309. package/dist/src/server/extensions/types.d.ts +17 -0
  310. package/dist/src/server/extensions/types.js +1 -1
  311. package/dist/src/server/instrumentation/EvidenceGraphBridge.d.ts +13 -0
  312. package/dist/src/server/instrumentation/EvidenceGraphBridge.js +150 -0
  313. package/dist/src/server/instrumentation/InstrumentationSession.d.ts +60 -0
  314. package/dist/src/server/instrumentation/InstrumentationSession.js +269 -0
  315. package/dist/src/server/instrumentation/index.d.ts +2 -0
  316. package/dist/src/server/instrumentation/index.js +2 -0
  317. package/dist/src/server/instrumentation/types.d.ts +62 -0
  318. package/dist/src/server/instrumentation/types.js +7 -0
  319. package/dist/src/server/macros/MacroConfigLoader.d.ts +6 -5
  320. package/dist/src/server/macros/MacroConfigLoader.js +61 -59
  321. package/dist/src/server/macros/MacroRunner.js +6 -2
  322. package/dist/src/server/macros/builtins/index.d.ts +2 -3
  323. package/dist/src/server/macros/builtins/index.js +51 -7
  324. package/dist/src/server/plugins/PluginContract.d.ts +1 -1
  325. package/dist/src/server/registry/contracts.d.ts +1 -1
  326. package/dist/src/server/registry/discovery.js +5 -4
  327. package/dist/src/server/registry/ensure-browser-core.js +0 -3
  328. package/dist/src/server/registry/index.js +4 -4
  329. package/dist/src/server/registry/tool-builder.d.ts +46 -0
  330. package/dist/src/server/registry/tool-builder.js +105 -0
  331. package/dist/src/server/sandbox/QuickJSSandbox.js +16 -5
  332. package/dist/src/server/sandbox/SandboxHelpers.js +250 -250
  333. package/dist/src/server/search/EmbeddingWorker.js +5 -3
  334. package/dist/src/server/search/FeedbackTracker.d.ts +9 -0
  335. package/dist/src/server/search/FeedbackTracker.js +26 -0
  336. package/dist/src/server/search/QueryNormalizer.d.ts +6 -0
  337. package/dist/src/server/search/QueryNormalizer.js +94 -0
  338. package/dist/src/server/search/ToolSearchEngineImpl.d.ts +2 -3
  339. package/dist/src/server/search/ToolSearchEngineImpl.js +38 -88
  340. package/dist/src/server/workflows/WorkflowContract.d.ts +24 -0
  341. package/dist/src/server/workflows/WorkflowContract.js +12 -0
  342. package/dist/src/server/workflows/WorkflowEngine.d.ts +1 -0
  343. package/dist/src/server/workflows/WorkflowEngine.js +136 -3
  344. package/dist/src/types/config.d.ts +0 -14
  345. package/dist/src/types/deobfuscator.d.ts +0 -1
  346. package/dist/src/types/index.d.ts +1 -1
  347. package/dist/src/utils/DetailedDataManager.js +2 -0
  348. package/dist/src/utils/RingBuffer.js +5 -5
  349. package/dist/src/utils/TokenBudgetManager.js +1 -1
  350. package/dist/src/utils/UnifiedCacheManager.js +1 -1
  351. package/dist/src/utils/artifactRetention.js +2 -2
  352. package/dist/src/utils/betterSqlite3.d.ts +11 -0
  353. package/dist/src/utils/betterSqlite3.js +88 -0
  354. package/dist/src/utils/browserExecutable.js +2 -2
  355. package/dist/src/utils/cliFastPath.js +5 -8
  356. package/dist/src/utils/config.js +4 -26
  357. package/dist/src/utils/environmentDoctor.js +138 -11
  358. package/dist/src/utils/outputPaths.js +16 -9
  359. package/dist/src/utils/parallel.js +1 -3
  360. package/package.json +74 -72
  361. package/workflows/.gitkeep +0 -0
  362. package/dist/src/modules/analyzer/AISummarizer.d.ts +0 -39
  363. package/dist/src/modules/analyzer/AISummarizer.js +0 -122
  364. package/dist/src/modules/hook/AIHookGenerator.d.ts +0 -52
  365. package/dist/src/modules/hook/AIHookGenerator.js +0 -360
  366. package/dist/src/modules/hook/AIHookGeneratorTemplates.d.ts +0 -9
  367. package/dist/src/modules/hook/AIHookGeneratorTemplates.js +0 -157
  368. package/dist/src/server/macros/builtins/deobfuscate-ast-flow.d.ts +0 -2
  369. package/dist/src/server/macros/builtins/deobfuscate-ast-flow.js +0 -25
  370. package/dist/src/server/macros/builtins/unpacker-flow.d.ts +0 -2
  371. package/dist/src/server/macros/builtins/unpacker-flow.js +0 -25
  372. package/dist/src/services/LLMService.d.ts +0 -37
  373. package/dist/src/services/LLMService.js +0 -233
  374. package/dist/src/services/prompts/analysis.d.ts +0 -9
  375. package/dist/src/services/prompts/analysis.js +0 -158
  376. package/dist/src/services/prompts/crypto.d.ts +0 -2
  377. package/dist/src/services/prompts/crypto.js +0 -108
  378. package/dist/src/services/prompts/deobfuscation.d.ts +0 -6
  379. package/dist/src/services/prompts/deobfuscation.js +0 -300
  380. package/dist/src/services/prompts/environment.d.ts +0 -16
  381. package/dist/src/services/prompts/environment.js +0 -372
  382. package/dist/src/services/prompts/intelligence.d.ts +0 -4
  383. package/dist/src/services/prompts/intelligence.js +0 -250
  384. package/dist/src/services/prompts/taint.d.ts +0 -2
  385. package/dist/src/services/prompts/taint.js +0 -54
@@ -1,442 +1,213 @@
1
+ import { tool } from '../../registry/tool-builder.js';
1
2
  export const browserPageCoreTools = [
2
- {
3
- name: 'page_navigate',
4
- description: `Navigate to a URL
5
-
6
- Features:
7
- - Automatic CAPTCHA detection
8
- - Optional network monitoring (set enableNetworkMonitoring=true to auto-enable)
9
- - Waits for page load based on waitUntil strategy
10
-
11
- Network Monitoring:
12
- If you want to capture network requests, you have two options:
13
- 1. Call network_enable before page_navigate (recommended for full control)
14
- 2. Set enableNetworkMonitoring=true in page_navigate (convenient for quick capture)
15
-
16
- Example with network monitoring:
17
- page_navigate(url="https:
18
- -> Network monitoring auto-enabled
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
- },
3
+ tool('page_navigate')
4
+ .desc(`Navigate to a URL
5
+
6
+ Features:
7
+ - Automatic CAPTCHA detection
8
+ - Optional network monitoring (set enableNetworkMonitoring=true to auto-enable)
9
+ - Waits for page load based on waitUntil strategy
10
+
11
+ Network Monitoring:
12
+ If you want to capture network requests, you have two options:
13
+ 1. Call network_enable before page_navigate (recommended for full control)
14
+ 2. Set enableNetworkMonitoring=true in page_navigate (convenient for quick capture)
15
+
16
+ Example with network monitoring:
17
+ page_navigate(url="https:")
18
+ -> Network monitoring auto-enabled
19
+ -> Page loads
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).
50
+
51
+ IMPORTANT: Large DOM structures (>50KB) automatically return summary + detailId.
52
+
53
+ Best Practices:
54
+ 1. Use maxDepth=2 for initial exploration (faster, smaller)
55
+ 2. Use maxDepth=3 only when needed (may be large)
56
+ 3. Set includeText=false to reduce size if text not needed
57
+
58
+ Example:
59
+ dom_get_structure(maxDepth=2, includeText=false)
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.
126
+
127
+ IMPORTANT: Large results (>50KB) automatically return summary + detailId to prevent context overflow.
128
+ Use get_detailed_data(detailId) to retrieve full data if needed.
129
+
130
+ Best Practices:
131
+ - Query specific properties: { hasAcrawler: !!window.byted_acrawler }
132
+ - Return only needed data: Object.keys(window.byted_acrawler)
133
+ - Avoid returning entire objects: window (too large!)
134
+
135
+ Example:
136
+ page_evaluate("({ keys: Object.keys(window.byted_acrawler), type: typeof window.byted_acrawler })")
137
+ -> Returns small summary
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.
151
+
152
+ Modes:
153
+ - Full page: omit selector or pass "all"
154
+ - Single element: selector = ".my-class"
155
+ - Multiple elements: selector = [".header", "#main", ".footer"] — returns one screenshot per element
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',
44
164
  },
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).
113
-
114
- IMPORTANT: Large DOM structures (>50KB) automatically return summary + detailId.
115
-
116
- Best Practices:
117
- 1. Use maxDepth=2 for initial exploration (faster, smaller)
118
- 2. Use maxDepth=3 only when needed (may be large)
119
- 3. Set includeText=false to reduce size if text not needed
120
-
121
- Example:
122
- 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.
280
-
281
- IMPORTANT: Large results (>50KB) automatically return summary + detailId to prevent context overflow.
282
- Use get_detailed_data(detailId) to retrieve full data if needed.
283
-
284
- Best Practices:
285
- - Query specific properties: { hasAcrawler: !!window.byted_acrawler }
286
- - Return only needed data: Object.keys(window.byted_acrawler)
287
- - Avoid returning entire objects: window (too large!)
288
-
289
- Example:
290
- page_evaluate("({ keys: Object.keys(window.byted_acrawler), type: typeof window.byted_acrawler })")
291
- -> 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.
327
-
328
- Modes:
329
- - Full page: omit selector or pass "all"
330
- - Single element: selector = ".my-class"
331
- - 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
- },
391
- },
392
- },
393
- },
394
- {
395
- name: 'get_script_source',
396
- description: `Get source code of a specific script.
397
-
398
- IMPORTANT: Large scripts (>50KB) automatically return summary + detailId.
399
- Use preview mode first to check script size before fetching full source.
400
-
401
- Best Practices:
402
- 1. Use preview=true first to see script overview
403
- 2. If script is large, use detailId to get full source
404
- 3. Or use startLine/endLine to get specific sections
405
-
406
- Example:
407
- get_script_source(scriptId="abc", preview=true)
408
- -> 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
- },
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.
191
+
192
+ IMPORTANT: Large scripts (>50KB) automatically return summary + detailId.
193
+ Use preview mode first to check script size before fetching full source.
194
+
195
+ Best Practices:
196
+ 1. Use preview=true first to see script overview
197
+ 2. If script is large, use detailId to get full source
198
+ 3. Or use startLine/endLine to get specific sections
199
+
200
+ Example:
201
+ get_script_source(scriptId="abc", preview=true)
202
+ -> Returns: { lines: 5000, size: "500KB", preview: "...", detailId: "..." }
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
  ];