@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,79 +1,79 @@
1
1
  export { GRAPHQL_MAX_PREVIEW_CHARS, GRAPHQL_MAX_SCHEMA_CHARS, GRAPHQL_MAX_QUERY_CHARS, GRAPHQL_MAX_GRAPH_NODES, GRAPHQL_MAX_GRAPH_EDGES, } from '../../../constants.js';
2
- export const INTROSPECTION_QUERY = `
3
- query IntrospectionQuery {
4
- __schema {
5
- queryType { name }
6
- mutationType { name }
7
- subscriptionType { name }
8
- types { ...FullType }
9
- directives {
10
- name
11
- description
12
- locations
13
- args(includeDeprecated: true) { ...InputValue }
14
- }
15
- }
16
- }
17
- fragment FullType on __Type {
18
- kind
19
- name
20
- description
21
- fields(includeDeprecated: true) {
22
- name
23
- description
24
- args(includeDeprecated: true) { ...InputValue }
25
- type { ...TypeRef }
26
- isDeprecated
27
- deprecationReason
28
- }
29
- inputFields(includeDeprecated: true) { ...InputValue }
30
- interfaces { ...TypeRef }
31
- enumValues(includeDeprecated: true) {
32
- name
33
- description
34
- isDeprecated
35
- deprecationReason
36
- }
37
- possibleTypes { ...TypeRef }
38
- }
39
- fragment InputValue on __InputValue {
40
- name
41
- description
42
- type { ...TypeRef }
43
- defaultValue
44
- isDeprecated
45
- deprecationReason
46
- }
47
- fragment TypeRef on __Type {
48
- kind
49
- name
50
- ofType {
51
- kind
52
- name
53
- ofType {
54
- kind
55
- name
56
- ofType {
57
- kind
58
- name
59
- ofType {
60
- kind
61
- name
62
- ofType {
63
- kind
64
- name
65
- ofType {
66
- kind
67
- name
68
- ofType {
69
- kind
70
- name
71
- }
72
- }
73
- }
74
- }
75
- }
76
- }
77
- }
78
- }
2
+ export const INTROSPECTION_QUERY = `
3
+ query IntrospectionQuery {
4
+ __schema {
5
+ queryType { name }
6
+ mutationType { name }
7
+ subscriptionType { name }
8
+ types { ...FullType }
9
+ directives {
10
+ name
11
+ description
12
+ locations
13
+ args(includeDeprecated: true) { ...InputValue }
14
+ }
15
+ }
16
+ }
17
+ fragment FullType on __Type {
18
+ kind
19
+ name
20
+ description
21
+ fields(includeDeprecated: true) {
22
+ name
23
+ description
24
+ args(includeDeprecated: true) { ...InputValue }
25
+ type { ...TypeRef }
26
+ isDeprecated
27
+ deprecationReason
28
+ }
29
+ inputFields(includeDeprecated: true) { ...InputValue }
30
+ interfaces { ...TypeRef }
31
+ enumValues(includeDeprecated: true) {
32
+ name
33
+ description
34
+ isDeprecated
35
+ deprecationReason
36
+ }
37
+ possibleTypes { ...TypeRef }
38
+ }
39
+ fragment InputValue on __InputValue {
40
+ name
41
+ description
42
+ type { ...TypeRef }
43
+ defaultValue
44
+ isDeprecated
45
+ deprecationReason
46
+ }
47
+ fragment TypeRef on __Type {
48
+ kind
49
+ name
50
+ ofType {
51
+ kind
52
+ name
53
+ ofType {
54
+ kind
55
+ name
56
+ ofType {
57
+ kind
58
+ name
59
+ ofType {
60
+ kind
61
+ name
62
+ ofType {
63
+ kind
64
+ name
65
+ ofType {
66
+ kind
67
+ name
68
+ ofType {
69
+ kind
70
+ name
71
+ }
72
+ }
73
+ }
74
+ }
75
+ }
76
+ }
77
+ }
78
+ }
79
79
  `.trim();
@@ -1,15 +1,8 @@
1
1
  import type { PageController } from '../../domains/shared/modules.js';
2
2
  export declare class AIHookToolHandlers {
3
3
  private pageController;
4
- private hookGenerator;
5
4
  private injectedHooks;
6
5
  constructor(pageController: PageController);
7
- handleAIHookGenerate(args: Record<string, unknown>): Promise<{
8
- content: {
9
- type: string;
10
- text: string;
11
- }[];
12
- }>;
13
6
  handleAIHookInject(args: Record<string, unknown>): Promise<{
14
7
  content: {
15
8
  type: string;
@@ -1,77 +1,11 @@
1
- import { AIHookGenerator } from '../../domains/shared/modules.js';
2
- import { evaluateWithTimeout, evaluateOnNewDocumentWithTimeout } from '../../../modules/collector/PageController.js';
1
+ import { evaluateWithTimeout, evaluateOnNewDocumentWithTimeout, } from '../../../modules/collector/PageController.js';
3
2
  import { logger } from '../../../utils/logger.js';
4
3
  import { argString, argStringRequired, argBool } from '../../domains/shared/parse-args.js';
5
4
  export class AIHookToolHandlers {
6
5
  pageController;
7
- hookGenerator;
8
6
  injectedHooks = new Map();
9
7
  constructor(pageController) {
10
8
  this.pageController = pageController;
11
- this.hookGenerator = new AIHookGenerator();
12
- }
13
- async handleAIHookGenerate(args) {
14
- try {
15
- let target;
16
- if (args.target) {
17
- target = args.target;
18
- }
19
- else {
20
- const pattern = argString(args, 'pattern', '');
21
- let targetType = 'function';
22
- let targetName = pattern;
23
- if (pattern === 'fetch' || pattern === 'XMLHttpRequest') {
24
- targetType = 'api';
25
- }
26
- else if (pattern.includes('.')) {
27
- targetType = 'object-method';
28
- targetName = pattern.split('.').pop() || pattern;
29
- }
30
- target = { type: targetType, name: targetName };
31
- }
32
- const request = {
33
- description: argString(args, 'description') || `Hook ${target.name || 'target'}`,
34
- target,
35
- behavior: args.behavior || {
36
- captureArgs: true,
37
- captureReturn: true,
38
- logToConsole: true,
39
- },
40
- condition: args.condition,
41
- customCode: args.customCode,
42
- };
43
- const response = this.hookGenerator.generateHook(request);
44
- return {
45
- content: [
46
- {
47
- type: 'text',
48
- text: JSON.stringify({
49
- success: response.success,
50
- hookId: response.hookId,
51
- generatedCode: response.generatedCode,
52
- explanation: response.explanation,
53
- injectionMethod: response.injectionMethod,
54
- warnings: response.warnings,
55
- usage: ` ai_hook_inject(hookId: "${response.hookId}") Hook`,
56
- }, null, 2),
57
- },
58
- ],
59
- };
60
- }
61
- catch (error) {
62
- logger.error('AI Hook generation failed', error);
63
- return {
64
- content: [
65
- {
66
- type: 'text',
67
- text: JSON.stringify({
68
- success: false,
69
- error: error instanceof Error ? error.message : String(error),
70
- }, null, 2),
71
- },
72
- ],
73
- };
74
- }
75
9
  }
76
10
  async handleAIHookInject(args) {
77
11
  try {
@@ -1,343 +1,77 @@
1
+ import { tool } from '../../registry/tool-builder.js';
1
2
  export const aiHookTools = [
2
- {
3
- name: 'ai_hook_generate',
4
- description: 'Generate hook code for a target function, API, or object method.\n\nHook types:\n- function: Hook a named global function (e.g. window.btoa)\n- object-method: Hook a method on an object (e.g. crypto.subtle.encrypt)\n- api: Hook a built-in API (e.g. fetch, XMLHttpRequest)\n- property: Hook a property getter/setter\n- event: Hook an event listener\n- custom: Provide custom hook code\n\nAfter generating, inject the hook with ai_hook_inject.',
5
- inputSchema: {
6
- type: 'object',
7
- properties: {
8
- description: {
9
- type: 'string',
10
- description: 'What the hook should do (e.g., "Capture all fetch requests to /api")',
11
- },
12
- target: {
13
- type: 'object',
14
- description: 'Hook target specification',
15
- properties: {
16
- type: {
17
- type: 'string',
18
- enum: ['function', 'object-method', 'api', 'property', 'event', 'custom'],
19
- description: 'Hook type',
20
- },
21
- name: {
22
- type: 'string',
23
- description: 'Function or API name (e.g., "btoa", "fetch")',
24
- },
25
- pattern: {
26
- type: 'string',
27
- description: 'Pattern for matching (used with api type)',
28
- },
29
- object: {
30
- type: 'string',
31
- description: 'Object path (e.g., "window.crypto.subtle")',
32
- },
33
- property: {
34
- type: 'string',
35
- description: 'Property name to hook',
36
- },
37
- },
38
- required: ['type'],
39
- },
40
- behavior: {
41
- type: 'object',
42
- description: 'Hook behavior configuration',
43
- properties: {
44
- captureArgs: {
45
- type: 'boolean',
46
- description: 'Capture function arguments',
47
- default: true,
48
- },
49
- captureReturn: {
50
- type: 'boolean',
51
- description: 'Capture return value',
52
- default: true,
53
- },
54
- captureStack: {
55
- type: 'boolean',
56
- description: 'Capture call stack',
57
- default: false,
58
- },
59
- modifyArgs: {
60
- type: 'boolean',
61
- description: 'Allow argument modification',
62
- default: false,
63
- },
64
- modifyReturn: {
65
- type: 'boolean',
66
- description: 'Allow return value modification',
67
- default: false,
68
- },
69
- blockExecution: {
70
- type: 'boolean',
71
- description: 'Block the original function from executing',
72
- default: false,
73
- },
74
- logToConsole: {
75
- type: 'boolean',
76
- description: 'Log hook events to console',
77
- default: true,
78
- },
79
- },
80
- },
81
- condition: {
82
- type: 'object',
83
- description: 'Conditional trigger for the hook',
84
- properties: {
85
- argFilter: {
86
- type: 'string',
87
- description: 'JS expression to filter by args (e.g., "args[0].includes(\'password\')")',
88
- },
89
- returnFilter: {
90
- type: 'string',
91
- description: 'JS expression to filter by return value',
92
- },
93
- urlPattern: {
94
- type: 'string',
95
- description: 'Regex pattern to match request URL',
96
- },
97
- maxCalls: {
98
- type: 'number',
99
- description: 'Stop capturing after this many calls',
100
- },
101
- },
102
- },
103
- customCode: {
104
- type: 'object',
105
- description: 'Custom code to inject at hook points',
106
- properties: {
107
- before: {
108
- type: 'string',
109
- description: 'Code to run before the original function',
110
- },
111
- after: {
112
- type: 'string',
113
- description: 'Code to run after the original function',
114
- },
115
- replace: {
116
- type: 'string',
117
- description: 'Code to replace the original function entirely',
118
- },
119
- },
120
- },
121
- },
122
- required: ['description', 'target', 'behavior'],
123
- },
124
- annotations: {
125
- readOnlyHint: false,
126
- destructiveHint: false,
127
- idempotentHint: false,
128
- openWorldHint: false,
129
- },
130
- },
131
- {
132
- name: 'ai_hook_inject',
133
- description: 'Inject a generated hook into the page.\n\nMethods:\n- evaluateOnNewDocument: Runs before page scripts (use for API hooks like fetch/XHR)\n- evaluate: Runs in current page context (use for hooking already-loaded code)',
134
- inputSchema: {
135
- type: 'object',
136
- properties: {
137
- hookId: {
138
- type: 'string',
139
- description: 'Hook ID returned by ai_hook_generate',
140
- },
141
- code: {
142
- type: 'string',
143
- description: 'Hook code returned by ai_hook_generate',
144
- },
145
- method: {
146
- type: 'string',
147
- enum: ['evaluateOnNewDocument', 'evaluate'],
148
- description: 'Injection method',
149
- default: 'evaluate',
150
- },
151
- },
152
- required: ['hookId', 'code'],
153
- },
154
- annotations: {
155
- readOnlyHint: false,
156
- destructiveHint: false,
157
- idempotentHint: false,
158
- openWorldHint: false,
159
- },
160
- },
161
- {
162
- name: 'ai_hook_get_data',
163
- description: 'Retrieve captured data from an active hook (arguments, return values, timestamps, call count)',
164
- inputSchema: {
165
- type: 'object',
166
- properties: {
167
- hookId: {
168
- type: 'string',
169
- description: 'Hook ID',
170
- },
171
- },
172
- required: ['hookId'],
173
- },
174
- annotations: {
175
- readOnlyHint: false,
176
- destructiveHint: false,
177
- idempotentHint: false,
178
- openWorldHint: false,
179
- },
180
- },
181
- {
182
- name: 'ai_hook_list',
183
- description: 'List all active hooks with their IDs, types, creation time, and call counts',
184
- inputSchema: {
185
- type: 'object',
186
- properties: {},
187
- },
188
- annotations: {
189
- readOnlyHint: false,
190
- destructiveHint: false,
191
- idempotentHint: false,
192
- openWorldHint: false,
193
- },
194
- },
195
- {
196
- name: 'ai_hook_clear',
197
- description: 'Remove one hook by ID or clear all hooks and their captured data',
198
- inputSchema: {
199
- type: 'object',
200
- properties: {
201
- hookId: {
202
- type: 'string',
203
- description: 'Hook ID to clear (omit to clear all hooks)',
204
- },
205
- },
206
- },
207
- annotations: {
208
- readOnlyHint: false,
209
- destructiveHint: false,
210
- idempotentHint: false,
211
- openWorldHint: false,
212
- },
213
- },
214
- {
215
- name: 'ai_hook_toggle',
216
- description: 'Enable or disable a hook without removing it',
217
- inputSchema: {
218
- type: 'object',
219
- properties: {
220
- hookId: {
221
- type: 'string',
222
- description: 'Hook ID',
223
- },
224
- enabled: {
225
- type: 'boolean',
226
- description: 'true to enable, false to disable',
227
- },
3
+ tool('ai_hook_inject')
4
+ .desc('Inject a generated hook into the page.\n\nMethods:\n- evaluateOnNewDocument: Runs before page scripts (use for API hooks like fetch/XHR)\n- evaluate: Runs in current page context (use for hooking already-loaded code)')
5
+ .string('hookId', 'Hook ID for injection')
6
+ .string('code', 'Hook code to inject')
7
+ .enum('method', ['evaluateOnNewDocument', 'evaluate'], 'Injection method', {
8
+ default: 'evaluate',
9
+ })
10
+ .required('hookId', 'code')
11
+ .build(),
12
+ tool('ai_hook_get_data')
13
+ .desc('Retrieve captured data from an active hook (arguments, return values, timestamps, call count)')
14
+ .string('hookId', 'Hook ID')
15
+ .required('hookId')
16
+ .build(),
17
+ tool('ai_hook_list')
18
+ .desc('List all active hooks with their IDs, types, creation time, and call counts')
19
+ .build(),
20
+ tool('ai_hook_clear')
21
+ .desc('Remove one hook by ID or clear all hooks and their captured data')
22
+ .string('hookId', 'Hook ID to clear (omit to clear all hooks)')
23
+ .build(),
24
+ tool('ai_hook_toggle')
25
+ .desc('Enable or disable a hook without removing it')
26
+ .string('hookId', 'Hook ID')
27
+ .boolean('enabled', 'true to enable, false to disable')
28
+ .required('hookId', 'enabled')
29
+ .build(),
30
+ tool('ai_hook_export')
31
+ .desc('Export captured hook data in JSON or CSV format')
32
+ .string('hookId', 'Hook ID to export (omit to export all hooks)')
33
+ .enum('format', ['json', 'csv'], 'Export format', { default: 'json' })
34
+ .build(),
35
+ ];
36
+ export const hookPresetTools = [
37
+ tool('hook_preset')
38
+ .desc('Install a pre-built JavaScript hook from 20+ built-in presets (eval, atob/btoa, Proxy, Reflect, Object.defineProperty, etc.), or provide customTemplate/customTemplates to install your own reusable hook bodies. Use listPresets=true to see all available preset descriptions.')
39
+ .string('preset', 'Single preset name to install. Accepts built-in preset ids or ids provided by customTemplate/customTemplates.')
40
+ .array('presets', { type: 'string' }, 'List of preset names to install simultaneously. Accepts built-in ids and custom template ids.')
41
+ .prop('customTemplate', {
42
+ type: 'object',
43
+ properties: {
44
+ id: { type: 'string', description: 'Stable preset id, for example deobfuscation-sinks' },
45
+ description: {
46
+ type: 'string',
47
+ description: 'Human-readable description for listPresets output.',
228
48
  },
229
- required: ['hookId', 'enabled'],
230
- },
231
- annotations: {
232
- readOnlyHint: false,
233
- destructiveHint: false,
234
- idempotentHint: false,
235
- openWorldHint: false,
236
- },
237
- },
238
- {
239
- name: 'ai_hook_export',
240
- description: 'Export captured hook data in JSON or CSV format',
241
- inputSchema: {
242
- type: 'object',
243
- properties: {
244
- hookId: {
245
- type: 'string',
246
- description: 'Hook ID to export (omit to export all hooks)',
247
- },
248
- format: {
249
- type: 'string',
250
- enum: ['json', 'csv'],
251
- description: 'Export format',
252
- default: 'json',
253
- },
49
+ body: {
50
+ type: 'string',
51
+ description: 'Hook body snippet inserted into the preset wrapper.',
254
52
  },
255
53
  },
256
- annotations: {
257
- readOnlyHint: false,
258
- destructiveHint: false,
259
- idempotentHint: false,
260
- openWorldHint: false,
261
- },
262
- },
263
- ];
264
- export const hookPresetTools = [
265
- {
266
- name: 'hook_preset',
267
- description: 'Install a pre-built JavaScript hook from 20+ built-in presets (eval, atob/btoa, Proxy, Reflect, Object.defineProperty, etc.), or provide customTemplate/customTemplates to install your own reusable hook bodies. Use listPresets=true to see all available preset descriptions.',
268
- inputSchema: {
54
+ required: ['id', 'body'],
55
+ description: 'Inline custom template. body should contain the hook body inserted into the standard buildHookCode wrapper. Use {{STACK_CODE}} and {{LOG_FN}} placeholders when needed.',
56
+ })
57
+ .prop('customTemplates', {
58
+ type: 'array',
59
+ items: {
269
60
  type: 'object',
270
61
  properties: {
271
- preset: {
272
- type: 'string',
273
- description: 'Single preset name to install. Accepts built-in preset ids or ids provided by customTemplate/customTemplates.',
274
- },
275
- presets: {
276
- type: 'array',
277
- description: 'List of preset names to install simultaneously. Accepts built-in ids and custom template ids.',
278
- items: { type: 'string' },
279
- },
280
- customTemplate: {
281
- type: 'object',
282
- description: 'Inline custom template. body should contain the hook body inserted into the standard buildHookCode wrapper. Use {{STACK_CODE}} and {{LOG_FN}} placeholders when needed.',
283
- properties: {
284
- id: {
285
- type: 'string',
286
- description: 'Stable preset id, for example deobfuscation-sinks',
287
- },
288
- description: {
289
- type: 'string',
290
- description: 'Human-readable description for listPresets output.',
291
- },
292
- body: {
293
- type: 'string',
294
- description: 'Hook body snippet inserted into the preset wrapper.',
295
- },
296
- },
297
- required: ['id', 'body'],
298
- },
299
- customTemplates: {
300
- type: 'array',
301
- description: 'List of inline custom templates to register for this invocation.',
302
- items: {
303
- type: 'object',
304
- properties: {
305
- id: { type: 'string' },
306
- description: { type: 'string' },
307
- body: { type: 'string' },
308
- },
309
- required: ['id', 'body'],
310
- },
311
- },
312
- captureStack: {
313
- type: 'boolean',
314
- description: 'Include call stack in captured data (default: false, has performance impact).',
315
- default: false,
316
- },
317
- logToConsole: {
318
- type: 'boolean',
319
- description: 'Log hook events to browser console (default: true).',
320
- default: true,
321
- },
322
- method: {
323
- type: 'string',
324
- enum: ['evaluate', 'evaluateOnNewDocument'],
325
- description: 'Injection method: evaluate=current page, evaluateOnNewDocument=before page scripts (default: evaluate).',
326
- default: 'evaluate',
327
- },
328
- listPresets: {
329
- type: 'boolean',
330
- description: 'Set to true to list all available presets with descriptions instead of installing.',
331
- default: false,
332
- },
62
+ id: { type: 'string' },
63
+ description: { type: 'string' },
64
+ body: { type: 'string' },
333
65
  },
334
- required: [],
335
- },
336
- annotations: {
337
- readOnlyHint: false,
338
- destructiveHint: false,
339
- idempotentHint: false,
340
- openWorldHint: false,
341
- },
342
- },
66
+ required: ['id', 'body'],
67
+ },
68
+ description: 'List of inline custom templates to register for this invocation.',
69
+ })
70
+ .boolean('captureStack', 'Include call stack in captured data (has performance impact)', {
71
+ default: false,
72
+ })
73
+ .boolean('logToConsole', 'Log hook events to browser console', { default: true })
74
+ .enum('method', ['evaluate', 'evaluateOnNewDocument'], 'Injection method: evaluate=current page, evaluateOnNewDocument=before page scripts', { default: 'evaluate' })
75
+ .boolean('listPresets', 'Set to true to list all available presets with descriptions instead of installing.', { default: false })
76
+ .build(),
343
77
  ];
@@ -9,7 +9,7 @@ declare const manifest: {
9
9
  domain: "hooks";
10
10
  depKey: "aiHookHandlers";
11
11
  secondaryDepKeys: string[];
12
- profiles: "full"[];
12
+ profiles: ("workflow" | "full")[];
13
13
  ensure: typeof ensure;
14
14
  registrations: {
15
15
  tool: {