@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
package/README.md CHANGED
@@ -1,14 +1,14 @@
1
1
  # @jshookmcp/jshook
2
2
 
3
3
  [![License: AGPLv3](https://img.shields.io/badge/License-AGPLv3-red.svg)](LICENSE)
4
- [![Node.js >= 22](https://img.shields.io/badge/node-%3E%3D20-brightgreen.svg)](https://nodejs.org/)
4
+ [![Node.js >= 20](https://img.shields.io/badge/node-%3E%3D20-brightgreen.svg)](https://nodejs.org/)
5
5
  [![TypeScript](https://img.shields.io/badge/TypeScript-5.x-3178C6.svg)](https://www.typescriptlang.org/)
6
6
  [![MCP](https://img.shields.io/badge/MCP-current-8A2BE2.svg)](https://modelcontextprotocol.io/)
7
7
  [![pnpm](https://img.shields.io/badge/pnpm-10.x-F69220.svg)](https://pnpm.io/)
8
8
 
9
9
  English | [中文](./README.zh.md)
10
10
 
11
- An MCP (Model Context Protocol) server providing **290+ built-in tools** across **17+ domains** (including core meta-tools) — with runtime extension loading from `plugins/` and `workflows/` for AI-assisted JavaScript analysis and security analysis. Combines browser automation, Chrome DevTools Protocol debugging, network monitoring, intelligent JavaScript hooks, LLM-powered code analysis, process/memory inspection, WASM toolchain, binary encoding, anti-anti-debug, GraphQL discovery, source map reconstruction, AST transforms, crypto reconstruction, platform package analysis, Burp Suite / native analysis tool bridges, human behavior simulation, CAPTCHA solving, batch account workflows, and high-level composite workflow orchestration in a single server.
11
+ An MCP (Model Context Protocol) server with a runtime-registry-driven catalog of built-in tools for AI-assisted JavaScript analysis and security analysis. It combines browser automation, Chrome DevTools Protocol debugging, network monitoring, intelligent JavaScript hooks, LLM-powered code analysis, process and memory inspection, WASM tooling, source-map reconstruction, AST transforms, and composite workflows in a single server.
12
12
 
13
13
  ## Documentation / Quick Links
14
14
 
@@ -42,11 +42,20 @@ Provides a comprehensive suite of tools for AI-assisted JavaScript analysis, bro
42
42
  - **Lazy Domain Initialization**: Handler classes instantiated via Proxy on first invocation, not during startup
43
43
  - **Domain Self-Discovery**: Runtime manifest scanning (`domains/*/manifest.ts`) replaces hardcoded imports; add new domains by creating a single manifest file
44
44
  - **B-Skeleton Contracts**: Extensibility contracts for plugins (`PluginContract`), workflows (`WorkflowContract`), and observability (`InstrumentationContract`)
45
- - **Context Efficiency Benchmark**: Built-in tool-schema init delta (Claude server-side count): `search` 3,000 tokens vs `full` 40,000+ tokens (10+ vs 290+ built-in tools; values change as tools/descriptions evolve)
45
+ - **MCP ToolAnnotations**: Every tool carries semantic annotations (`readOnlyHint`, `destructiveHint`, `idempotentHint`, `openWorldHint`) enabling AI orchestrators to reason about tool safety and side-effects before invocation
46
+ - **Context Efficiency Benchmark**: Built-in tool-schema init delta (Claude server-side count): `search` ≈ 3K tokens vs `full` ≈ 40K+ tokens; values change as tools/descriptions evolve
46
47
 
47
- ## Tool Domains
48
+ ## Registry Snapshot
48
49
 
49
- The server provides **290+ built-in tools** across **17+ domains** (`antidebug`, `browser`, `coordination`, `core`, `debugger`, `encoding`, `graphql`, `hooks`, `maintenance`, `network`, `platform`, `process`, `sourcemap`, `streaming`, `transform`, `wasm`, and `workflow`).
50
+ The built-in surface below is generated from the runtime registry and checked in CI.
51
+
52
+ <!-- metadata-sync:start -->
53
+ - Package version: `0.2.5`
54
+ - Built-in domains: `23`
55
+ - Built-in tools: `327`
56
+ - Domains: `antidebug`, `browser`, `coordination`, `core`, `debugger`, `encoding`, `evidence`, `graphql`, `hooks`, `instrumentation`, `macro`, `maintenance`, `memory`, `network`, `platform`, `process`, `sandbox`, `sourcemap`, `streaming`, `trace`, `transform`, `wasm`, `workflow`
57
+ - Note: this snapshot is generated from the runtime registry; do not edit the counts by hand.
58
+ <!-- metadata-sync:end -->
50
59
 
51
60
  > **[View the complete Tool Reference ↗](https://vmoranv.github.io/jshookmcp/reference/)**
52
61
 
package/README.zh.md CHANGED
@@ -1,14 +1,14 @@
1
1
  # @jshookmcp/jshook
2
2
 
3
3
  [![License: AGPLv3](https://img.shields.io/badge/License-AGPLv3-red.svg)](LICENSE)
4
- [![Node.js >= 22](https://img.shields.io/badge/node-%3E%3D20-brightgreen.svg)](https://nodejs.org/)
4
+ [![Node.js >= 20](https://img.shields.io/badge/node-%3E%3D20-brightgreen.svg)](https://nodejs.org/)
5
5
  [![TypeScript](https://img.shields.io/badge/TypeScript-5.x-3178C6.svg)](https://www.typescriptlang.org/)
6
6
  [![MCP](https://img.shields.io/badge/MCP-current-8A2BE2.svg)](https://modelcontextprotocol.io/)
7
7
  [![pnpm](https://img.shields.io/badge/pnpm-10.x-F69220.svg)](https://pnpm.io/)
8
8
 
9
9
  [English](./README.md) | 中文
10
10
 
11
- 面向 AI 辅助 JavaScript 分析与安全分析的 MCP(模型上下文协议)服务器,提供 **290+ 个内置工具**——跨越 **17+ 个工具域**(包含核心元工具)——并支持从 `plugins/` 与 `workflows/` 目录运行时动态扩展。集成浏览器自动化、Chrome DevTools Protocol 调试、网络监控、智能 JavaScript Hook、LLM 驱动代码分析、进程/内存操作、WASM 工具链、二进制编码、反反调试、GraphQL 发现、Source Map 重建、AST 变换、加密重构、平台包分析、Burp Suite / Native 分析工具桥接及高层复合工作流编排。
11
+ 面向 AI 辅助 JavaScript 分析与安全分析的 MCP(模型上下文协议)服务器,内置工具面来自运行时 registry,而不是手写清单。它将浏览器自动化、Chrome DevTools Protocol 调试、网络监控、JavaScript Hook、LLM 驱动代码分析、进程与内存检查、WASM 工具链、Source Map 重建、AST 变换与复合工作流整合到同一服务中。
12
12
 
13
13
  ## 文档与快速导航
14
14
 
@@ -42,7 +42,22 @@
42
42
  - **域延迟初始化**:处理器类通过 Proxy 在首次调用时实例化,而非启动时预加载
43
43
  - **域自发现架构**:运行时扫描 `domains/*/manifest.ts` 替代硬编码导入;新增域只需创建一个 manifest 文件
44
44
  - **B-Skeleton 契约**:插件(`PluginContract`)、工作流(`WorkflowContract`)、可观测性(`InstrumentationContract`)的扩展性契约
45
- - **上下文效率基准**:基于 Claude 服务端对当前内置工具 schema 的实测计数,`search` 档 ≈ 3,000 tokens,`full` 档 ≈ 40,000+ tokens(当前分别为 10+ 与 290+ 个 built-in tools;数值会随工具与描述变更而变化)
45
+ - **MCP ToolAnnotations**:每个工具均带有语义标注(`readOnlyHint`、`destructiveHint`、`idempotentHint`、`openWorldHint`),使 AI 协调器能在调用前推理工具安全性与副作用
46
+ - **上下文效率基准**:基于 Claude 服务端实测,`search` 档 ≈ 3K tokens,`full` 档 ≈ 40K+ tokens;数值会随工具与描述变更而变化
47
+
48
+ ## 注册表快照
49
+
50
+ 下面的内置能力快照由运行时 registry 动态生成,并在 CI 中校验。
51
+
52
+ <!-- metadata-sync:start -->
53
+ - 包版本:`0.2.5`
54
+ - 内置工具域:`23`
55
+ - 内置工具数:`327`
56
+ - 域列表:`antidebug`, `browser`, `coordination`, `core`, `debugger`, `encoding`, `evidence`, `graphql`, `hooks`, `instrumentation`, `macro`, `maintenance`, `memory`, `network`, `platform`, `process`, `sandbox`, `sourcemap`, `streaming`, `trace`, `transform`, `wasm`, `workflow`
57
+ - 说明:以上数据由运行时 registry 动态生成,不要手改计数。
58
+ <!-- metadata-sync:end -->
59
+
60
+ > **[查看完整工具参考 ↗](https://vmoranv.github.io/jshookmcp/reference/)**
46
61
 
47
62
  ## 项目统计
48
63
 
@@ -52,7 +52,7 @@ export async function checkExternalCommand(command, versionArgs, label, installH
52
52
  const { stdout, stderr } = await execFileAsync(command, versionArgs, {
53
53
  timeout: 10_000,
54
54
  });
55
- const version = (stdout || stderr).trim().split('\n')[0] ?? '';
55
+ const version = (stdout || stderr).trim().split('\n')[0];
56
56
  return toTextResponse({
57
57
  success: true,
58
58
  tool: label,
@@ -179,7 +179,7 @@ export async function requestJson(url, method = 'GET', bodyObj, timeoutMs = 15_0
179
179
  Accept: 'application/json',
180
180
  ...(body ? { 'Content-Type': 'application/json' } : {}),
181
181
  },
182
- body,
182
+ ...(body === undefined ? {} : { body }),
183
183
  signal: AbortSignal.timeout(timeoutMs),
184
184
  });
185
185
  const text = await response.text();
@@ -1,4 +1,5 @@
1
1
  import type { CallToolResult } from '@modelcontextprotocol/sdk/types.js';
2
+ import type { WorkflowContract } from './workflow.js';
2
3
  export type ToolProfileId = 'search' | 'workflow' | 'full';
3
4
  export type ToolArgs = Record<string, unknown>;
4
5
  export type ToolResponse = CallToolResult;
@@ -23,6 +24,7 @@ export interface ExtensionToolDefinition {
23
24
  handler: ExtensionToolHandler;
24
25
  profiles?: ToolProfileId[];
25
26
  }
27
+ export type ExtensionWorkflowDefinition = WorkflowContract;
26
28
  export declare const jsonResponse: (payload: Record<string, unknown>) => ToolResponse;
27
29
  export declare const errorResponse: (tool: string, error: unknown, extra?: Record<string, unknown>) => ToolResponse;
28
30
  export declare class ExtensionBuilder {
@@ -35,6 +37,7 @@ export declare class ExtensionBuilder {
35
37
  private _compatibleCore;
36
38
  private _profiles;
37
39
  private _tools;
40
+ private _workflows;
38
41
  private _allowCommands;
39
42
  private _allowHosts;
40
43
  private _allowTools;
@@ -54,6 +57,7 @@ export declare class ExtensionBuilder {
54
57
  get compatibleCoreRange(): string;
55
58
  get profiles(): ToolProfileId[];
56
59
  get tools(): ExtensionToolDefinition[];
60
+ get workflows(): ExtensionWorkflowDefinition[];
57
61
  get allowedCommands(): string[];
58
62
  get allowedHosts(): string[];
59
63
  get allowedTools(): string[];
@@ -87,6 +91,7 @@ export declare class ExtensionBuilder {
87
91
  metric(m: string | string[]): this;
88
92
  configDefault(key: string, value: unknown): this;
89
93
  tool(name: string, desc: string, schema: Record<string, unknown>, handler: ExtensionToolHandler, profiles?: ToolProfileId[]): this;
94
+ workflow(workflow: ExtensionWorkflowDefinition | ExtensionWorkflowDefinition[]): this;
90
95
  onLoad(h: (ctx: PluginLifecycleContext) => Promise<void> | void): this;
91
96
  onValidate(h: (ctx: PluginLifecycleContext) => Promise<{
92
97
  valid: boolean;
@@ -1,4 +1,4 @@
1
- import { toTextResponse, toErrorResponse, } from './bridges/shared.js';
1
+ import { toTextResponse, toErrorResponse } from './bridges/shared.js';
2
2
  export const jsonResponse = toTextResponse;
3
3
  export const errorResponse = toErrorResponse;
4
4
  export class ExtensionBuilder {
@@ -11,6 +11,7 @@ export class ExtensionBuilder {
11
11
  _compatibleCore = '>=0.1.0';
12
12
  _profiles = ['full'];
13
13
  _tools = [];
14
+ _workflows = [];
14
15
  _allowCommands = [];
15
16
  _allowHosts = [];
16
17
  _allowTools = [];
@@ -24,29 +25,83 @@ export class ExtensionBuilder {
24
25
  this._id = id;
25
26
  this._version = version;
26
27
  }
27
- get id() { return this._id; }
28
- get version() { return this._version; }
29
- get pluginName() { return this._name; }
30
- get pluginDescription() { return this._description; }
31
- get pluginAuthor() { return this._author; }
32
- get pluginSourceRepo() { return this._sourceRepo; }
33
- get compatibleCoreRange() { return this._compatibleCore; }
34
- get profiles() { return this._profiles; }
35
- get tools() { return this._tools; }
36
- get allowedCommands() { return this._allowCommands; }
37
- get allowedHosts() { return this._allowHosts; }
38
- get allowedTools() { return this._allowTools; }
39
- get declaredMetrics() { return this._metrics; }
40
- get configDefaults() { return this._configDefaults; }
41
- get onLoadHandler() { return this._onLoadHandler; }
42
- get onValidateHandler() { return this._onValidateHandler; }
43
- get onActivateHandler() { return this._onActivateHandler; }
44
- get onDeactivateHandler() { return this._onDeactivateHandler; }
45
- name(n) { this._name = n; return this; }
46
- description(desc) { this._description = desc; return this; }
47
- author(a) { this._author = a; return this; }
48
- sourceRepo(url) { this._sourceRepo = url; return this; }
49
- compatibleCore(range) { this._compatibleCore = range; return this; }
28
+ get id() {
29
+ return this._id;
30
+ }
31
+ get version() {
32
+ return this._version;
33
+ }
34
+ get pluginName() {
35
+ return this._name;
36
+ }
37
+ get pluginDescription() {
38
+ return this._description;
39
+ }
40
+ get pluginAuthor() {
41
+ return this._author;
42
+ }
43
+ get pluginSourceRepo() {
44
+ return this._sourceRepo;
45
+ }
46
+ get compatibleCoreRange() {
47
+ return this._compatibleCore;
48
+ }
49
+ get profiles() {
50
+ return this._profiles;
51
+ }
52
+ get tools() {
53
+ return this._tools;
54
+ }
55
+ get workflows() {
56
+ return this._workflows;
57
+ }
58
+ get allowedCommands() {
59
+ return this._allowCommands;
60
+ }
61
+ get allowedHosts() {
62
+ return this._allowHosts;
63
+ }
64
+ get allowedTools() {
65
+ return this._allowTools;
66
+ }
67
+ get declaredMetrics() {
68
+ return this._metrics;
69
+ }
70
+ get configDefaults() {
71
+ return this._configDefaults;
72
+ }
73
+ get onLoadHandler() {
74
+ return this._onLoadHandler;
75
+ }
76
+ get onValidateHandler() {
77
+ return this._onValidateHandler;
78
+ }
79
+ get onActivateHandler() {
80
+ return this._onActivateHandler;
81
+ }
82
+ get onDeactivateHandler() {
83
+ return this._onDeactivateHandler;
84
+ }
85
+ name(n) {
86
+ this._name = n;
87
+ return this;
88
+ }
89
+ description(desc) {
90
+ this._description = desc;
91
+ return this;
92
+ }
93
+ author(a) {
94
+ this._author = a;
95
+ return this;
96
+ }
97
+ sourceRepo(url) {
98
+ this._sourceRepo = url;
99
+ return this;
100
+ }
101
+ compatibleCore(range) {
102
+ this._compatibleCore = range;
103
+ return this;
104
+ }
50
105
  mergeMetadata(meta) {
51
106
  if (!this._name && meta.name)
52
107
  this._name = meta.name;
@@ -62,11 +117,26 @@ export class ExtensionBuilder {
62
117
  this._profiles = Array.isArray(p) ? p : [p];
63
118
  return this;
64
119
  }
65
- allowCommand(cmd) { this._allowCommands.push(...(Array.isArray(cmd) ? cmd : [cmd])); return this; }
66
- allowHost(host) { this._allowHosts.push(...(Array.isArray(host) ? host : [host])); return this; }
67
- allowTool(tool) { this._allowTools.push(...(Array.isArray(tool) ? tool : [tool])); return this; }
68
- metric(m) { this._metrics.push(...(Array.isArray(m) ? m : [m])); return this; }
69
- configDefault(key, value) { this._configDefaults[key] = value; return this; }
120
+ allowCommand(cmd) {
121
+ this._allowCommands.push(...(Array.isArray(cmd) ? cmd : [cmd]));
122
+ return this;
123
+ }
124
+ allowHost(host) {
125
+ this._allowHosts.push(...(Array.isArray(host) ? host : [host]));
126
+ return this;
127
+ }
128
+ allowTool(tool) {
129
+ this._allowTools.push(...(Array.isArray(tool) ? tool : [tool]));
130
+ return this;
131
+ }
132
+ metric(m) {
133
+ this._metrics.push(...(Array.isArray(m) ? m : [m]));
134
+ return this;
135
+ }
136
+ configDefault(key, value) {
137
+ this._configDefaults[key] = value;
138
+ return this;
139
+ }
70
140
  tool(name, desc, schema, handler, profiles) {
71
141
  this._tools.push({
72
142
  name,
@@ -77,10 +147,26 @@ export class ExtensionBuilder {
77
147
  });
78
148
  return this;
79
149
  }
80
- onLoad(h) { this._onLoadHandler = h; return this; }
81
- onValidate(h) { this._onValidateHandler = h; return this; }
82
- onActivate(h) { this._onActivateHandler = h; return this; }
83
- onDeactivate(h) { this._onDeactivateHandler = h; return this; }
150
+ workflow(workflow) {
151
+ this._workflows.push(...(Array.isArray(workflow) ? workflow : [workflow]));
152
+ return this;
153
+ }
154
+ onLoad(h) {
155
+ this._onLoadHandler = h;
156
+ return this;
157
+ }
158
+ onValidate(h) {
159
+ this._onValidateHandler = h;
160
+ return this;
161
+ }
162
+ onActivate(h) {
163
+ this._onActivateHandler = h;
164
+ return this;
165
+ }
166
+ onDeactivate(h) {
167
+ this._onDeactivateHandler = h;
168
+ return this;
169
+ }
84
170
  }
85
171
  export function createExtension(id, version) {
86
172
  return new ExtensionBuilder(id, version);
@@ -0,0 +1,156 @@
1
+ export interface RetryPolicy {
2
+ maxAttempts: number;
3
+ backoffMs: number;
4
+ multiplier?: number;
5
+ }
6
+ export type WorkflowNodeType = 'tool' | 'sequence' | 'parallel' | 'branch';
7
+ export interface ToolNode {
8
+ readonly kind: 'tool';
9
+ readonly id: string;
10
+ readonly toolName: string;
11
+ readonly input?: Record<string, unknown>;
12
+ readonly timeoutMs?: number;
13
+ readonly retry?: RetryPolicy;
14
+ }
15
+ export interface SequenceNode {
16
+ readonly kind: 'sequence';
17
+ readonly id: string;
18
+ readonly steps: WorkflowNode[];
19
+ }
20
+ export interface ParallelNode {
21
+ readonly kind: 'parallel';
22
+ readonly id: string;
23
+ readonly steps: WorkflowNode[];
24
+ readonly maxConcurrency?: number;
25
+ readonly failFast?: boolean;
26
+ }
27
+ export interface BranchNode {
28
+ readonly kind: 'branch';
29
+ readonly id: string;
30
+ readonly predicateId: string;
31
+ readonly predicateFn?: (ctx: WorkflowExecutionContext) => boolean | Promise<boolean>;
32
+ readonly whenTrue: WorkflowNode;
33
+ readonly whenFalse?: WorkflowNode;
34
+ }
35
+ export type WorkflowNode = ToolNode | SequenceNode | ParallelNode | BranchNode;
36
+ export interface ToolNodeOptions {
37
+ input?: Record<string, unknown>;
38
+ retry?: RetryPolicy;
39
+ timeoutMs?: number;
40
+ }
41
+ export interface WorkflowExecutionContext {
42
+ readonly workflowRunId: string;
43
+ readonly profile: string;
44
+ invokeTool(toolName: string, args: Record<string, unknown>): Promise<unknown>;
45
+ emitSpan(name: string, attrs?: Record<string, unknown>): void;
46
+ emitMetric(name: string, value: number, type: 'counter' | 'gauge' | 'histogram', attrs?: Record<string, unknown>): void;
47
+ getConfig<T = unknown>(path: string, fallback?: T): T;
48
+ }
49
+ export interface WorkflowRouteStep {
50
+ readonly id: string;
51
+ readonly toolName: string;
52
+ readonly description: string;
53
+ readonly prerequisites: string[];
54
+ readonly parallel?: boolean;
55
+ readonly expectedInputs?: Record<string, string>;
56
+ readonly evidenceNodeType?: string;
57
+ }
58
+ export type WorkflowRouteKind = 'preset' | 'workflow';
59
+ export interface WorkflowRouteMetadata {
60
+ readonly kind: WorkflowRouteKind;
61
+ readonly triggerPatterns: RegExp[];
62
+ readonly steps: WorkflowRouteStep[];
63
+ readonly requiredDomains: string[];
64
+ readonly priority: number;
65
+ }
66
+ export interface WorkflowContract {
67
+ readonly kind: 'workflow-contract';
68
+ readonly version: 1;
69
+ readonly id: string;
70
+ readonly displayName: string;
71
+ readonly description?: string;
72
+ readonly tags?: string[];
73
+ readonly timeoutMs?: number;
74
+ readonly defaultMaxConcurrency?: number;
75
+ readonly route?: WorkflowRouteMetadata;
76
+ build(ctx: WorkflowExecutionContext): WorkflowNode;
77
+ onStart?(ctx: WorkflowExecutionContext): Promise<void> | void;
78
+ onFinish?(ctx: WorkflowExecutionContext, result: unknown): Promise<void> | void;
79
+ onError?(ctx: WorkflowExecutionContext, error: Error): Promise<void> | void;
80
+ }
81
+ export declare abstract class WorkflowNodeBuilder<T extends WorkflowNode> {
82
+ protected id: string;
83
+ constructor(id: string);
84
+ abstract build(): T;
85
+ }
86
+ type AnyWorkflowNodeBuilder = WorkflowNodeBuilder<WorkflowNode>;
87
+ export declare class ToolNodeBuilder extends WorkflowNodeBuilder<ToolNode> {
88
+ private toolName;
89
+ private _input?;
90
+ private _retry?;
91
+ private _timeoutMs?;
92
+ constructor(id: string, toolName: string);
93
+ input(input: Record<string, unknown>): this;
94
+ retry(policy: RetryPolicy): this;
95
+ timeout(ms: number): this;
96
+ build(): ToolNode;
97
+ }
98
+ declare abstract class CompositeNodeBuilder<T extends WorkflowNode> extends WorkflowNodeBuilder<T> {
99
+ protected _steps: AnyWorkflowNodeBuilder[];
100
+ step(nodeBuilder: AnyWorkflowNodeBuilder): this;
101
+ tool(id: string, toolName: string, config?: ToolNodeOptions | ((b: ToolNodeBuilder) => void)): this;
102
+ sequence(id: string, config?: (b: SequenceNodeBuilder) => void): this;
103
+ parallel(id: string, config?: (b: ParallelNodeBuilder) => void): this;
104
+ branch(id: string, predicateId: string, config?: (b: BranchNodeBuilder) => void): this;
105
+ }
106
+ export declare class SequenceNodeBuilder extends CompositeNodeBuilder<SequenceNode> {
107
+ build(): SequenceNode;
108
+ }
109
+ export declare class ParallelNodeBuilder extends CompositeNodeBuilder<ParallelNode> {
110
+ private _maxConcurrency?;
111
+ private _failFast?;
112
+ maxConcurrency(concurrency: number): this;
113
+ failFast(ff: boolean): this;
114
+ build(): ParallelNode;
115
+ }
116
+ export declare class BranchNodeBuilder extends WorkflowNodeBuilder<BranchNode> {
117
+ private predicateId;
118
+ private _predicateFn?;
119
+ private _whenTrue?;
120
+ private _whenFalse?;
121
+ constructor(id: string, predicateId: string);
122
+ predicateFn(fn: (ctx: WorkflowExecutionContext) => boolean | Promise<boolean>): this;
123
+ whenTrue(nodeBuilder: AnyWorkflowNodeBuilder): this;
124
+ whenFalse(nodeBuilder: AnyWorkflowNodeBuilder): this;
125
+ build(): BranchNode;
126
+ }
127
+ export declare class WorkflowBuilder {
128
+ private _id;
129
+ private _displayName;
130
+ private _description?;
131
+ private _tags?;
132
+ private _timeoutMs?;
133
+ private _defaultMaxConcurrency?;
134
+ private _route?;
135
+ private _buildFn;
136
+ private _onStart?;
137
+ private _onFinish?;
138
+ private _onError?;
139
+ constructor(id: string, displayName: string);
140
+ description(desc: string): this;
141
+ tags(tags: string[]): this;
142
+ timeoutMs(timeout: number): this;
143
+ defaultMaxConcurrency(max: number): this;
144
+ route(route: WorkflowRouteMetadata): this;
145
+ buildGraph(fn: (ctx: WorkflowExecutionContext) => AnyWorkflowNodeBuilder): this;
146
+ onStart(fn: (ctx: WorkflowExecutionContext) => Promise<void> | void): this;
147
+ onFinish(fn: (ctx: WorkflowExecutionContext, result: unknown) => Promise<void> | void): this;
148
+ onError(fn: (ctx: WorkflowExecutionContext, error: Error) => Promise<void> | void): this;
149
+ build(): WorkflowContract;
150
+ }
151
+ export declare function createWorkflow(id: string, displayName: string): WorkflowBuilder;
152
+ export declare function toolNode(id: string, toolName: string): ToolNodeBuilder;
153
+ export declare function sequenceNode(id: string): SequenceNodeBuilder;
154
+ export declare function parallelNode(id: string): ParallelNodeBuilder;
155
+ export declare function branchNode(id: string, predicateId: string): BranchNodeBuilder;
156
+ export {};