@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
@@ -0,0 +1,112 @@
1
+ export function summarizeEvents(events, detail = 'balanced') {
2
+ if (events.length === 0) {
3
+ return {
4
+ detail,
5
+ totalEvents: 0,
6
+ timeRange: { start: 0, end: 0, durationMs: 0 },
7
+ categories: [],
8
+ keyMoments: detail !== 'compact' ? [] : undefined,
9
+ };
10
+ }
11
+ const timestamps = events.map((e) => e.timestamp);
12
+ const start = Math.min(...timestamps);
13
+ const end = Math.max(...timestamps);
14
+ const catMap = new Map();
15
+ for (const event of events) {
16
+ let cat = catMap.get(event.category);
17
+ if (!cat) {
18
+ cat = { count: 0, first: event.timestamp, last: event.timestamp, types: new Map() };
19
+ catMap.set(event.category, cat);
20
+ }
21
+ cat.count++;
22
+ cat.first = Math.min(cat.first, event.timestamp);
23
+ cat.last = Math.max(cat.last, event.timestamp);
24
+ cat.types.set(event.eventType, (cat.types.get(event.eventType) ?? 0) + 1);
25
+ }
26
+ const categories = [...catMap.entries()]
27
+ .toSorted((a, b) => b[1].count - a[1].count)
28
+ .map(([category, info]) => ({
29
+ category,
30
+ count: info.count,
31
+ firstTimestamp: info.first,
32
+ lastTimestamp: info.last,
33
+ topEventTypes: [...info.types.entries()]
34
+ .toSorted((a, b) => b[1] - a[1])
35
+ .slice(0, 5)
36
+ .map(([type, count]) => ({ type, count })),
37
+ }));
38
+ const summary = {
39
+ detail,
40
+ totalEvents: events.length,
41
+ timeRange: { start, end, durationMs: end - start },
42
+ categories,
43
+ };
44
+ if (detail === 'balanced' || detail === 'full') {
45
+ summary.keyMoments = extractKeyMoments(events);
46
+ }
47
+ return summary;
48
+ }
49
+ export function extractKeyMoments(events) {
50
+ const moments = [];
51
+ for (const event of events) {
52
+ if (event.eventType === 'Debugger.paused') {
53
+ moments.push({
54
+ timestamp: event.timestamp,
55
+ type: 'breakpoint',
56
+ description: `Debugger paused${event.scriptId ? ` at script ${event.scriptId}` : ''}${event.lineNumber ? `:${event.lineNumber}` : ''}`,
57
+ data: event.data,
58
+ });
59
+ }
60
+ else if (event.eventType === 'Network.loadingFinished') {
61
+ moments.push({
62
+ timestamp: event.timestamp,
63
+ type: 'network_complete',
64
+ description: 'Network request completed',
65
+ data: event.data,
66
+ });
67
+ }
68
+ else if (event.eventType === 'Runtime.exceptionThrown') {
69
+ moments.push({
70
+ timestamp: event.timestamp,
71
+ type: 'exception',
72
+ description: 'Runtime exception thrown',
73
+ data: event.data,
74
+ });
75
+ }
76
+ else if (event.eventType === 'Page.frameNavigated' ||
77
+ event.eventType === 'Page.navigatedWithinDocument') {
78
+ moments.push({
79
+ timestamp: event.timestamp,
80
+ type: 'navigation',
81
+ description: 'Page navigation',
82
+ data: event.data,
83
+ });
84
+ }
85
+ }
86
+ return moments;
87
+ }
88
+ export function summarizeMemoryDeltas(deltas) {
89
+ if (deltas.length === 0) {
90
+ return { totalDeltas: 0, uniqueAddresses: 0, anomalies: [], topAddresses: [] };
91
+ }
92
+ const writeMap = new Map();
93
+ for (const delta of deltas) {
94
+ writeMap.set(delta.address, (writeMap.get(delta.address) ?? 0) + 1);
95
+ }
96
+ const uniqueAddresses = writeMap.size;
97
+ const totalWrites = deltas.length;
98
+ const meanWrites = totalWrites / uniqueAddresses;
99
+ const sorted = [...writeMap.entries()].toSorted((a, b) => b[1] - a[1]);
100
+ const topAddresses = sorted
101
+ .slice(0, 10)
102
+ .map(([address, writeCount]) => ({ address, writeCount }));
103
+ const anomalyThreshold = meanWrites * 3;
104
+ const anomalies = sorted
105
+ .filter(([, count]) => count > anomalyThreshold)
106
+ .map(([address, writeCount]) => ({
107
+ address,
108
+ writeCount,
109
+ description: `${writeCount} writes (${(writeCount / meanWrites).toFixed(1)}× average)`,
110
+ }));
111
+ return { totalDeltas: totalWrites, uniqueAddresses, anomalies, topAddresses };
112
+ }
@@ -1,178 +1,53 @@
1
+ import { tool } from '../../registry/tool-builder.js';
1
2
  export const TRACE_TOOLS = [
2
- {
3
- name: 'start_trace_recording',
4
- description: `Start recording CDP events, debugger state, and memory writes into a SQLite trace database.
5
-
6
- Recording captures events from:
7
- - Debugger: breakpoints, pauses, script parsing
8
- - Runtime: console calls, exceptions
9
- - Network: requests, responses
10
- - Page: navigation events
11
- - EventBus: tool calls, memory scans, browser events
12
-
13
- Call stop_trace_recording to end the recording session.
14
-
15
- Examples:
16
- start_trace_recording()
17
- start_trace_recording(cdpDomains=["Debugger", "Network"])`,
18
- inputSchema: {
19
- type: 'object',
20
- properties: {
21
- cdpDomains: {
22
- type: 'array',
23
- items: { type: 'string' },
24
- description: 'CDP domains to record (default: Debugger, Runtime, Network, Page)',
25
- },
26
- recordMemoryDeltas: {
27
- type: 'boolean',
28
- description: 'Record memory write deltas (default: true)',
29
- },
30
- },
31
- },
32
- },
33
- {
34
- name: 'stop_trace_recording',
35
- description: `Stop the active trace recording and finalize the SQLite database.
36
-
37
- Returns session summary including:
38
- - Database file path
39
- - Total event count
40
- - Memory delta count
41
- - Heap snapshot count
42
- - Recording duration
43
-
44
- Examples:
45
- stop_trace_recording()`,
46
- inputSchema: {
47
- type: 'object',
48
- properties: {},
49
- },
50
- },
51
- {
52
- name: 'query_trace_sql',
53
- description: `Execute a read-only SQL query against a trace database.
54
-
55
- Available tables:
56
- - events(id, timestamp, category, event_type, data, script_id, line_number)
57
- - memory_deltas(id, timestamp, address, old_value, new_value, size, value_type)
58
- - heap_snapshots(id, timestamp, snapshot_data, summary)
59
- - metadata(key, value)
60
-
61
- Returns columns, rows, and row count.
62
-
63
- Examples:
64
- query_trace_sql(sql="SELECT * FROM events WHERE category='debugger' ORDER BY timestamp")
65
- query_trace_sql(sql="SELECT address, COUNT(*) as writes FROM memory_deltas GROUP BY address ORDER BY writes DESC LIMIT 10")
66
- query_trace_sql(sql="SELECT * FROM events WHERE timestamp BETWEEN 1000 AND 2000", dbPath="artifacts/traces/my-trace.db")`,
67
- inputSchema: {
68
- type: 'object',
69
- properties: {
70
- sql: {
71
- type: 'string',
72
- description: 'SQL query to execute (SELECT only — write operations are rejected)',
73
- },
74
- dbPath: {
75
- type: 'string',
76
- description: 'Path to trace DB file. Uses the active recording if omitted.',
77
- },
78
- },
79
- required: ['sql'],
80
- },
81
- },
82
- {
83
- name: 'seek_to_timestamp',
84
- description: `Reconstruct application state at a specific timestamp from a recorded trace.
85
-
86
- Returns a structured snapshot including:
87
- - Events near the timestamp
88
- - Debugger state (last pause, call stack)
89
- - Memory state (latest values per address)
90
- - Network state (completed requests)
91
- - Nearest heap snapshot
92
-
93
- Examples:
94
- seek_to_timestamp(timestamp=1711000000000)
95
- seek_to_timestamp(timestamp=1711000000000, windowMs=500)
96
- seek_to_timestamp(timestamp=1711000000000, dbPath="artifacts/traces/my-trace.db")`,
97
- inputSchema: {
98
- type: 'object',
99
- properties: {
100
- timestamp: {
101
- type: 'number',
102
- description: 'Target timestamp in milliseconds since epoch',
103
- },
104
- dbPath: {
105
- type: 'string',
106
- description: 'Path to trace DB file. Uses the active recording if omitted.',
107
- },
108
- windowMs: {
109
- type: 'number',
110
- description: 'Time window around timestamp to include in ms (default: 100)',
111
- },
112
- },
113
- required: ['timestamp'],
114
- },
115
- },
116
- {
117
- name: 'diff_heap_snapshots',
118
- description: `Compare two heap snapshots from a trace and return the differences.
119
-
120
- Shows:
121
- - New object types (in snapshot 2 but not 1)
122
- - Deleted object types (in snapshot 1 but not 2)
123
- - Changed objects (count or size differs)
124
- - Total size delta
125
-
126
- Useful for identifying state changes in obfuscated code.
127
-
128
- Examples:
129
- diff_heap_snapshots(snapshotId1=1, snapshotId2=2)
130
- diff_heap_snapshots(snapshotId1=1, snapshotId2=3, dbPath="artifacts/traces/my-trace.db")`,
131
- inputSchema: {
132
- type: 'object',
133
- properties: {
134
- snapshotId1: {
135
- type: 'number',
136
- description: 'First snapshot ID (earlier)',
137
- },
138
- snapshotId2: {
139
- type: 'number',
140
- description: 'Second snapshot ID (later)',
141
- },
142
- dbPath: {
143
- type: 'string',
144
- description: 'Path to trace DB file. Uses the active recording if omitted.',
145
- },
146
- },
147
- required: ['snapshotId1', 'snapshotId2'],
148
- },
149
- },
150
- {
151
- name: 'export_trace',
152
- description: `Export a trace database to Chrome Trace Event JSON format.
153
-
154
- The resulting file can be loaded in:
155
- - chrome://tracing
156
- - Perfetto UI (ui.perfetto.dev)
157
-
158
- Maps events to the standard trace event format with name, category, phase, timestamp.
159
-
160
- Examples:
161
- export_trace()
162
- export_trace(dbPath="artifacts/traces/my-trace.db")
163
- export_trace(outputPath="my-export.json")`,
164
- inputSchema: {
165
- type: 'object',
166
- properties: {
167
- dbPath: {
168
- type: 'string',
169
- description: 'Path to trace DB file. Uses the active recording if omitted.',
170
- },
171
- outputPath: {
172
- type: 'string',
173
- description: 'Output JSON file path. Auto-generated if omitted.',
174
- },
175
- },
176
- },
177
- },
3
+ tool('start_trace_recording')
4
+ .desc('Start recording CDP events, debugger state, and memory writes into a SQLite trace database.\n\nRecording captures events from:\n- Debugger: breakpoints, pauses, script parsing\n- Runtime: console calls, exceptions\n- Network: requests, responses\n- Page: navigation events\n- EventBus: tool calls, memory scans, browser events\n\nCall stop_trace_recording to end the recording session.\n\nExamples:\nstart_trace_recording()\nstart_trace_recording(cdpDomains=["Debugger", "Network"])')
5
+ .array('cdpDomains', { type: 'string' }, 'CDP domains to record (default: Debugger, Runtime, Network, Page)')
6
+ .boolean('recordMemoryDeltas', 'Record memory write deltas', { default: true })
7
+ .idempotent()
8
+ .build(),
9
+ tool('stop_trace_recording')
10
+ .desc('Stop the active trace recording and finalize the SQLite database.\n\nReturns session summary including:\n- Database file path\n- Total event count\n- Memory delta count\n- Heap snapshot count\n- Recording duration\n\nExamples:\nstop_trace_recording()')
11
+ .build(),
12
+ tool('query_trace_sql')
13
+ .desc('Execute a read-only SQL query against a trace database.\n\nAvailable tables:\n- events(id, timestamp, category, event_type, data, script_id, line_number)\n- memory_deltas(id, timestamp, address, old_value, new_value, size, value_type)\n- heap_snapshots(id, timestamp, snapshot_data, summary)\n- metadata(key, value)\n\nReturns columns, rows, and row count.\n\nExamples:\nquery_trace_sql(sql="SELECT * FROM events WHERE category=\'debugger\' ORDER BY timestamp")\nquery_trace_sql(sql="SELECT address, COUNT(*) as writes FROM memory_deltas GROUP BY address ORDER BY writes DESC LIMIT 10")\nquery_trace_sql(sql="SELECT * FROM events WHERE timestamp BETWEEN 1000 AND 2000", dbPath="artifacts/traces/my-trace.db")')
14
+ .string('sql', 'SQL query to execute (SELECT only — write operations are rejected)')
15
+ .string('dbPath', 'Path to trace DB file. Uses the active recording if omitted.')
16
+ .required('sql')
17
+ .readOnly()
18
+ .idempotent()
19
+ .build(),
20
+ tool('seek_to_timestamp')
21
+ .desc('Reconstruct application state at a specific timestamp from a recorded trace.\n\nReturns a structured snapshot including:\n- Events near the timestamp\n- Debugger state (last pause, call stack)\n- Memory state (latest values per address)\n- Network state (completed requests)\n- Nearest heap snapshot\n\nExamples:\nseek_to_timestamp(timestamp=1711000000000)\nseek_to_timestamp(timestamp=1711000000000, windowMs=500)\nseek_to_timestamp(timestamp=1711000000000, dbPath="artifacts/traces/my-trace.db")')
22
+ .number('timestamp', 'Target timestamp in milliseconds since epoch')
23
+ .string('dbPath', 'Path to trace DB file. Uses the active recording if omitted.')
24
+ .number('windowMs', 'Time window around timestamp to include in ms', { default: 100 })
25
+ .required('timestamp')
26
+ .readOnly()
27
+ .idempotent()
28
+ .build(),
29
+ tool('diff_heap_snapshots')
30
+ .desc('Compare two heap snapshots from a trace and return the differences.\n\nShows:\n- New object types (in snapshot 2 but not 1)\n- Deleted object types (in snapshot 1 but not 2)\n- Changed objects (count or size differs)\n- Total size delta\n\nUseful for identifying state changes in obfuscated code.\n\nExamples:\ndiff_heap_snapshots(snapshotId1=1, snapshotId2=2)\ndiff_heap_snapshots(snapshotId1=1, snapshotId2=3, dbPath="artifacts/traces/my-trace.db")')
31
+ .number('snapshotId1', 'First snapshot ID (earlier)')
32
+ .number('snapshotId2', 'Second snapshot ID (later)')
33
+ .string('dbPath', 'Path to trace DB file. Uses the active recording if omitted.')
34
+ .required('snapshotId1', 'snapshotId2')
35
+ .readOnly()
36
+ .idempotent()
37
+ .build(),
38
+ tool('export_trace')
39
+ .desc('Export a trace database to Chrome Trace Event JSON format.\n\nThe resulting file can be loaded in:\n- chrome://tracing\n- Perfetto UI (ui.perfetto.dev)\n\nMaps events to the standard trace event format with name, category, phase, timestamp.\n\nExamples:\nexport_trace()\nexport_trace(dbPath="artifacts/traces/my-trace.db")\nexport_trace(outputPath="my-export.json")')
40
+ .string('dbPath', 'Path to trace DB file. Uses the active recording if omitted.')
41
+ .string('outputPath', 'Output JSON file path. Auto-generated if omitted.')
42
+ .idempotent()
43
+ .build(),
44
+ tool('summarize_trace')
45
+ .desc('Generate a compact, LLM-friendly summary of a trace database.\n\nAvoids sending raw trace data that may exceed context windows. Three detail levels:\n- compact: category aggregation + timeline overview (~10% of raw size)\n- balanced: compact + key moments (breakpoints, exceptions, network completions) [DEFAULT]\n- full: passthrough — returns all events without compression\n\nAlso detects memory anomalies: addresses with significantly more writes than average.\n\nExamples:\nsummarize_trace()\nsummarize_trace(detail="compact")\nsummarize_trace(detail="balanced", dbPath="artifacts/traces/my-trace.db")')
46
+ .enum('detail', ['compact', 'balanced', 'full'], 'Summary detail level', {
47
+ default: 'balanced',
48
+ })
49
+ .string('dbPath', 'Path to trace DB file. Uses the active recording if omitted.')
50
+ .readOnly()
51
+ .idempotent()
52
+ .build(),
178
53
  ];
@@ -1,5 +1,5 @@
1
1
  import type { MCPServerContext } from '../../MCPServer.context.js';
2
- import { TraceRecorder } from '../../../modules/trace/TraceRecorder.js';
2
+ import { type TraceRecorder } from '../../../modules/trace/TraceRecorder.js';
3
3
  export declare class TraceToolHandlers {
4
4
  private readonly recorder;
5
5
  private readonly ctx;
@@ -13,4 +13,5 @@ export declare class TraceToolHandlers {
13
13
  private getDbForReading;
14
14
  private rowToObject;
15
15
  private safeParseJSON;
16
+ handleSummarizeTrace(args: Record<string, unknown>): Promise<unknown>;
16
17
  }
@@ -1,7 +1,8 @@
1
1
  import { writeFile } from 'node:fs/promises';
2
2
  import { TraceDB } from '../../../modules/trace/TraceDB.js';
3
- import { TraceRecorder } from '../../../modules/trace/TraceRecorder.js';
3
+ import {} from '../../../modules/trace/TraceRecorder.js';
4
4
  import { resolveArtifactPath } from '../../../utils/artifacts.js';
5
+ import { summarizeEvents, summarizeMemoryDeltas, } from '../../domains/trace/TraceSummarizer.js';
5
6
  export class TraceToolHandlers {
6
7
  recorder;
7
8
  ctx;
@@ -41,9 +42,7 @@ export class TraceToolHandlers {
41
42
  }
42
43
  async handleStopTraceRecording() {
43
44
  const session = this.recorder.stop();
44
- const duration = session.stoppedAt
45
- ? session.stoppedAt - session.startedAt
46
- : 0;
45
+ const duration = session.stoppedAt ? session.stoppedAt - session.startedAt : 0;
47
46
  return {
48
47
  status: 'stopped',
49
48
  sessionId: session.sessionId,
@@ -111,7 +110,7 @@ export class TraceToolHandlers {
111
110
  return {
112
111
  seekTimestamp: timestamp,
113
112
  windowMs,
114
- events: events.map(e => ({
113
+ events: events.map((e) => ({
115
114
  timestamp: e.timestamp,
116
115
  category: e.category,
117
116
  eventType: e.eventType,
@@ -120,13 +119,13 @@ export class TraceToolHandlers {
120
119
  lineNumber: e.lineNumber,
121
120
  })),
122
121
  debuggerState: {
123
- recentEvents: debuggerEventsResult.rows.map(row => this.rowToObject(debuggerEventsResult.columns, row)),
122
+ recentEvents: debuggerEventsResult.rows.map((row) => this.rowToObject(debuggerEventsResult.columns, row)),
124
123
  },
125
124
  memoryState: {
126
- addressValues: memoryStateResult.rows.map(row => this.rowToObject(memoryStateResult.columns, row)),
125
+ addressValues: memoryStateResult.rows.map((row) => this.rowToObject(memoryStateResult.columns, row)),
127
126
  },
128
127
  networkState: {
129
- completedRequests: networkResult.rows.map(row => this.rowToObject(networkResult.columns, row)),
128
+ completedRequests: networkResult.rows.map((row) => this.rowToObject(networkResult.columns, row)),
130
129
  },
131
130
  nearestHeapSnapshot: snapshotResult.rows.length > 0
132
131
  ? this.rowToObject(snapshotResult.columns, snapshotResult.rows[0])
@@ -224,7 +223,7 @@ export class TraceToolHandlers {
224
223
  const allEvents = db.query('SELECT timestamp, category, event_type, data, script_id, line_number FROM events ORDER BY timestamp ASC');
225
224
  const PAIRED_BEGIN = new Set(['Debugger.paused']);
226
225
  const PAIRED_END = new Set(['Debugger.resumed']);
227
- const traceEvents = allEvents.rows.map(row => {
226
+ const traceEvents = allEvents.rows.map((row) => {
228
227
  const ts = row[0] * 1000;
229
228
  const cat = row[1];
230
229
  const name = row[2];
@@ -297,4 +296,58 @@ export class TraceToolHandlers {
297
296
  return str;
298
297
  }
299
298
  }
299
+ async handleSummarizeTrace(args) {
300
+ const detail = args['detail'] ?? 'balanced';
301
+ const dbPath = args['dbPath'];
302
+ let db;
303
+ let shouldClose = false;
304
+ if (dbPath) {
305
+ db = new TraceDB({ dbPath });
306
+ shouldClose = true;
307
+ }
308
+ else if (this.recorder.getState() === 'recording') {
309
+ const activeDb = this.recorder.getDB();
310
+ if (!activeDb)
311
+ throw new Error('Active recording has no database');
312
+ db = activeDb;
313
+ }
314
+ else {
315
+ throw new Error('No trace database specified and no active recording');
316
+ }
317
+ try {
318
+ const eventsResult = db.query('SELECT timestamp, category, event_type, data, script_id, line_number FROM events ORDER BY timestamp');
319
+ const events = eventsResult.rows.map((row) => ({
320
+ timestamp: row[0],
321
+ category: row[1],
322
+ eventType: row[2],
323
+ data: typeof row[3] === 'string' ? this.safeParseJSON(row[3]) : row[3],
324
+ scriptId: row[4],
325
+ lineNumber: row[5],
326
+ }));
327
+ const deltasResult = db.query('SELECT timestamp, address, old_value, new_value, size, value_type FROM memory_deltas ORDER BY timestamp');
328
+ const deltas = deltasResult.rows.map((row) => ({
329
+ timestamp: row[0],
330
+ address: row[1],
331
+ oldValue: row[2],
332
+ newValue: row[3],
333
+ size: row[4],
334
+ valueType: row[5],
335
+ }));
336
+ const eventSummary = summarizeEvents(events, detail);
337
+ const memorySummary = summarizeMemoryDeltas(deltas);
338
+ return {
339
+ events: eventSummary,
340
+ memory: memorySummary,
341
+ metadata: {
342
+ dbPath: dbPath ?? 'active recording',
343
+ generatedAt: new Date().toISOString(),
344
+ },
345
+ };
346
+ }
347
+ finally {
348
+ if (shouldClose) {
349
+ db.close();
350
+ }
351
+ }
352
+ }
300
353
  }
@@ -1 +1,2 @@
1
- export { TraceToolHandlers } from '../../domains/trace/handlers.js';
1
+ export * from './definitions.tools.js';
2
+ export { TraceToolHandlers } from './handlers.js';
@@ -1 +1,2 @@
1
- export { TraceToolHandlers } from '../../domains/trace/handlers.js';
1
+ export * from './definitions.tools.js';
2
+ export { TraceToolHandlers } from './handlers.js';
@@ -33,16 +33,30 @@ const manifest = {
33
33
  'seek_to_timestamp',
34
34
  'diff_heap_snapshots',
35
35
  'export_trace',
36
+ 'summarize_trace',
36
37
  ],
37
- hint: 'Start recording → perform actions → stop recording → query/seek/diff/export',
38
+ hint: 'Start recording → perform actions → stop recording → summarize/query/seek/diff/export',
38
39
  },
39
40
  registrations: [
40
- { tool: t('start_trace_recording'), domain: DOMAIN, bind: b((h, a) => h.handleStartTraceRecording(a)) },
41
- { tool: t('stop_trace_recording'), domain: DOMAIN, bind: b((h) => h.handleStopTraceRecording()) },
41
+ {
42
+ tool: t('start_trace_recording'),
43
+ domain: DOMAIN,
44
+ bind: b((h, a) => h.handleStartTraceRecording(a)),
45
+ },
46
+ {
47
+ tool: t('stop_trace_recording'),
48
+ domain: DOMAIN,
49
+ bind: b((h) => h.handleStopTraceRecording()),
50
+ },
42
51
  { tool: t('query_trace_sql'), domain: DOMAIN, bind: b((h, a) => h.handleQueryTraceSql(a)) },
43
52
  { tool: t('seek_to_timestamp'), domain: DOMAIN, bind: b((h, a) => h.handleSeekToTimestamp(a)) },
44
- { tool: t('diff_heap_snapshots'), domain: DOMAIN, bind: b((h, a) => h.handleDiffHeapSnapshots(a)) },
53
+ {
54
+ tool: t('diff_heap_snapshots'),
55
+ domain: DOMAIN,
56
+ bind: b((h, a) => h.handleDiffHeapSnapshots(a)),
57
+ },
45
58
  { tool: t('export_trace'), domain: DOMAIN, bind: b((h, a) => h.handleExportTrace(a)) },
59
+ { tool: t('summarize_trace'), domain: DOMAIN, bind: b((h, a) => h.handleSummarizeTrace(a)) },
46
60
  ],
47
61
  };
48
62
  export default manifest;