@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
@@ -0,0 +1,236 @@
1
+ export class WorkflowNodeBuilder {
2
+ id;
3
+ constructor(id) {
4
+ this.id = id;
5
+ }
6
+ }
7
+ export class ToolNodeBuilder extends WorkflowNodeBuilder {
8
+ toolName;
9
+ _input;
10
+ _retry;
11
+ _timeoutMs;
12
+ constructor(id, toolName) {
13
+ super(id);
14
+ this.toolName = toolName;
15
+ }
16
+ input(input) {
17
+ this._input = input;
18
+ return this;
19
+ }
20
+ retry(policy) {
21
+ this._retry = policy;
22
+ return this;
23
+ }
24
+ timeout(ms) {
25
+ this._timeoutMs = ms;
26
+ return this;
27
+ }
28
+ build() {
29
+ return {
30
+ kind: 'tool',
31
+ id: this.id,
32
+ toolName: this.toolName,
33
+ input: this._input,
34
+ retry: this._retry,
35
+ timeoutMs: this._timeoutMs,
36
+ };
37
+ }
38
+ }
39
+ class CompositeNodeBuilder extends WorkflowNodeBuilder {
40
+ _steps = [];
41
+ step(nodeBuilder) {
42
+ this._steps.push(nodeBuilder);
43
+ return this;
44
+ }
45
+ tool(id, toolName, config) {
46
+ const builder = new ToolNodeBuilder(id, toolName);
47
+ if (config) {
48
+ if (typeof config === 'function') {
49
+ config(builder);
50
+ }
51
+ else {
52
+ if (config.input)
53
+ builder.input(config.input);
54
+ if (config.retry)
55
+ builder.retry(config.retry);
56
+ if (config.timeoutMs !== undefined)
57
+ builder.timeout(config.timeoutMs);
58
+ }
59
+ }
60
+ this._steps.push(builder);
61
+ return this;
62
+ }
63
+ sequence(id, config) {
64
+ const builder = new SequenceNodeBuilder(id);
65
+ if (config)
66
+ config(builder);
67
+ this._steps.push(builder);
68
+ return this;
69
+ }
70
+ parallel(id, config) {
71
+ const builder = new ParallelNodeBuilder(id);
72
+ if (config)
73
+ config(builder);
74
+ this._steps.push(builder);
75
+ return this;
76
+ }
77
+ branch(id, predicateId, config) {
78
+ const builder = new BranchNodeBuilder(id, predicateId);
79
+ if (config)
80
+ config(builder);
81
+ this._steps.push(builder);
82
+ return this;
83
+ }
84
+ }
85
+ export class SequenceNodeBuilder extends CompositeNodeBuilder {
86
+ build() {
87
+ return {
88
+ kind: 'sequence',
89
+ id: this.id,
90
+ steps: this._steps.map((b) => b.build()),
91
+ };
92
+ }
93
+ }
94
+ export class ParallelNodeBuilder extends CompositeNodeBuilder {
95
+ _maxConcurrency = 4;
96
+ _failFast = false;
97
+ maxConcurrency(concurrency) {
98
+ this._maxConcurrency = concurrency;
99
+ return this;
100
+ }
101
+ failFast(ff) {
102
+ this._failFast = ff;
103
+ return this;
104
+ }
105
+ build() {
106
+ return {
107
+ kind: 'parallel',
108
+ id: this.id,
109
+ steps: this._steps.map((b) => b.build()),
110
+ maxConcurrency: this._maxConcurrency,
111
+ failFast: this._failFast,
112
+ };
113
+ }
114
+ }
115
+ export class BranchNodeBuilder extends WorkflowNodeBuilder {
116
+ predicateId;
117
+ _predicateFn;
118
+ _whenTrue;
119
+ _whenFalse;
120
+ constructor(id, predicateId) {
121
+ super(id);
122
+ this.predicateId = predicateId;
123
+ }
124
+ predicateFn(fn) {
125
+ this._predicateFn = fn;
126
+ return this;
127
+ }
128
+ whenTrue(nodeBuilder) {
129
+ this._whenTrue = nodeBuilder;
130
+ return this;
131
+ }
132
+ whenFalse(nodeBuilder) {
133
+ this._whenFalse = nodeBuilder;
134
+ return this;
135
+ }
136
+ build() {
137
+ if (!this._whenTrue) {
138
+ throw new Error(`BranchNode '${this.id}' requires a whenTrue step`);
139
+ }
140
+ return {
141
+ kind: 'branch',
142
+ id: this.id,
143
+ predicateId: this.predicateId,
144
+ predicateFn: this._predicateFn,
145
+ whenTrue: this._whenTrue.build(),
146
+ whenFalse: this._whenFalse ? this._whenFalse.build() : undefined,
147
+ };
148
+ }
149
+ }
150
+ export class WorkflowBuilder {
151
+ _id;
152
+ _displayName;
153
+ _description;
154
+ _tags;
155
+ _timeoutMs;
156
+ _defaultMaxConcurrency;
157
+ _route;
158
+ _buildFn;
159
+ _onStart;
160
+ _onFinish;
161
+ _onError;
162
+ constructor(id, displayName) {
163
+ this._id = id;
164
+ this._displayName = displayName;
165
+ }
166
+ description(desc) {
167
+ this._description = desc;
168
+ return this;
169
+ }
170
+ tags(tags) {
171
+ this._tags = tags;
172
+ return this;
173
+ }
174
+ timeoutMs(timeout) {
175
+ this._timeoutMs = timeout;
176
+ return this;
177
+ }
178
+ defaultMaxConcurrency(max) {
179
+ this._defaultMaxConcurrency = max;
180
+ return this;
181
+ }
182
+ route(route) {
183
+ this._route = route;
184
+ return this;
185
+ }
186
+ buildGraph(fn) {
187
+ this._buildFn = (ctx) => fn(ctx).build();
188
+ return this;
189
+ }
190
+ onStart(fn) {
191
+ this._onStart = fn;
192
+ return this;
193
+ }
194
+ onFinish(fn) {
195
+ this._onFinish = fn;
196
+ return this;
197
+ }
198
+ onError(fn) {
199
+ this._onError = fn;
200
+ return this;
201
+ }
202
+ build() {
203
+ if (!this._buildFn)
204
+ throw new Error(`WorkflowBuilder '${this._id}' needs a buildGraph() function.`);
205
+ return {
206
+ kind: 'workflow-contract',
207
+ version: 1,
208
+ id: this._id,
209
+ displayName: this._displayName,
210
+ description: this._description,
211
+ tags: this._tags,
212
+ timeoutMs: this._timeoutMs,
213
+ defaultMaxConcurrency: this._defaultMaxConcurrency,
214
+ route: this._route,
215
+ build: this._buildFn,
216
+ onStart: this._onStart,
217
+ onFinish: this._onFinish,
218
+ onError: this._onError,
219
+ };
220
+ }
221
+ }
222
+ export function createWorkflow(id, displayName) {
223
+ return new WorkflowBuilder(id, displayName);
224
+ }
225
+ export function toolNode(id, toolName) {
226
+ return new ToolNodeBuilder(id, toolName);
227
+ }
228
+ export function sequenceNode(id) {
229
+ return new SequenceNodeBuilder(id);
230
+ }
231
+ export function parallelNode(id) {
232
+ return new ParallelNodeBuilder(id);
233
+ }
234
+ export function branchNode(id, predicateId) {
235
+ return new BranchNodeBuilder(id, predicateId);
236
+ }
@@ -58,6 +58,14 @@ export const DEFAULT_QUERY_CATEGORY_PROFILE_CONFIGS = [
58
58
  { domain: 'browser', weight: 1.1 },
59
59
  ],
60
60
  },
61
+ {
62
+ pattern: '(?:reverse|mission|signature|hook|crypto|encrypt|websocket|\\bws\\b|protocol|bundle|webpack|deobfusc|stealth|fingerprint|evidence|\\bhar\\b|逆向|签名|加签|协议|反混淆|反检测|指纹|证据|报告)',
63
+ flags: 'i',
64
+ domainBoosts: [
65
+ { domain: 'workflow', weight: 1.8 },
66
+ { domain: 'analysis', weight: 1.1 },
67
+ ],
68
+ },
61
69
  ];
62
70
  export const DEFAULT_CJK_QUERY_ALIAS_CONFIGS = [
63
71
  { pattern: '工作流|流程编排|流程自动化|编排', tokens: ['workflow', 'flow', 'orchestration'] },
@@ -74,6 +82,14 @@ export const DEFAULT_CJK_QUERY_ALIAS_CONFIGS = [
74
82
  { pattern: '批量|并发', tokens: ['batch', 'parallel'] },
75
83
  { pattern: '令牌|凭证|鉴权|认证', tokens: ['token', 'auth', 'credential'] },
76
84
  { pattern: '提取|抽取|解析', tokens: ['extract', 'parse'] },
85
+ { pattern: '签名|加签|加密|hook', tokens: ['signature', 'crypto', 'hook', 'sign'] },
86
+ { pattern: '协议|消息|帧|handler', tokens: ['websocket', 'protocol', 'ws', 'handler'] },
87
+ { pattern: '打包|webpack|混淆|反混淆', tokens: ['bundle', 'webpack', 'deobfuscate', 'unpack'] },
88
+ {
89
+ pattern: '反爬|反检测|指纹|stealth',
90
+ tokens: ['antibot', 'stealth', 'fingerprint', 'detection'],
91
+ },
92
+ { pattern: '证据|取证|导出|报告|快照', tokens: ['evidence', 'export', 'report', 'forensic'] },
77
93
  { pattern: '多标签页|多标签|标签页', tokens: ['tab', 'multi'] },
78
94
  { pattern: '脚本库|脚本仓库', tokens: ['script', 'library'] },
79
95
  { pattern: '脚本', tokens: ['script'] },
@@ -81,6 +97,19 @@ export const DEFAULT_CJK_QUERY_ALIAS_CONFIGS = [
81
97
  { pattern: '导出', tokens: ['export'] },
82
98
  { pattern: '回放|重放', tokens: ['replay'] },
83
99
  { pattern: '请求', tokens: ['request'] },
100
+ { pattern: '鉴权面|认证面|授权面|凭证枚举', tokens: ['auth', 'surface', 'token', 'credential'] },
101
+ { pattern: '通道|通信|协议注册|协议枚举', tokens: ['protocol', 'channel', 'registry'] },
102
+ { pattern: '人机|挑战|风控|拦截页', tokens: ['challenge', 'captcha', 'cloudflare', 'turnstile'] },
103
+ {
104
+ pattern: '签名谱系|签名链路|加签链路|签名追踪',
105
+ tokens: ['signing', 'lineage', 'signature', 'trace'],
106
+ },
107
+ { pattern: '复现|重发|篡改|参数篡改', tokens: ['replay', 'tamper', 'request'] },
108
+ {
109
+ pattern: '反混淆链|反混淆管道|清洗|还原',
110
+ tokens: ['deobfuscate', 'pipeline', 'transform', 'ast'],
111
+ },
112
+ { pattern: '桌面应用|electron|nwjs|预加载', tokens: ['electron', 'bridge', 'preload', 'ipc'] },
84
113
  ];
85
114
  export const DEFAULT_INTENT_TOOL_BOOST_RULE_CONFIGS = [
86
115
  {
@@ -139,6 +168,138 @@ export const DEFAULT_INTENT_TOOL_BOOST_RULE_CONFIGS = [
139
168
  { tool: 'network_extract_auth', bonus: 18 },
140
169
  ],
141
170
  },
171
+ {
172
+ pattern: '(?:signature|crypto|encrypt|hash|hook|签名|加签|加密)',
173
+ flags: 'i',
174
+ boosts: [
175
+ { tool: 'run_extension_workflow', bonus: 40 },
176
+ { tool: 'list_extension_workflows', bonus: 24 },
177
+ { tool: 'search_in_scripts', bonus: 12 },
178
+ { tool: 'detect_crypto', bonus: 10 },
179
+ { tool: 'manage_hooks', bonus: 8 },
180
+ ],
181
+ },
182
+ {
183
+ pattern: '(?:websocket|\\bws\\b|protocol|socket|handler|协议|消息|帧)',
184
+ flags: 'i',
185
+ boosts: [
186
+ { tool: 'run_extension_workflow', bonus: 40 },
187
+ { tool: 'list_extension_workflows', bonus: 24 },
188
+ { tool: 'ws_monitor_enable', bonus: 12 },
189
+ { tool: 'ws_get_frames', bonus: 10 },
190
+ { tool: 'ws_get_connections', bonus: 8 },
191
+ ],
192
+ },
193
+ {
194
+ pattern: '(?:bundle|webpack|chunk|source.*map|deobfusc|源码|打包|混淆|反混淆)',
195
+ flags: 'i',
196
+ boosts: [
197
+ { tool: 'run_extension_workflow', bonus: 40 },
198
+ { tool: 'list_extension_workflows', bonus: 24 },
199
+ { tool: 'js_bundle_search', bonus: 14 },
200
+ { tool: 'collect_code', bonus: 10 },
201
+ { tool: 'source_map_extract', bonus: 8 },
202
+ ],
203
+ },
204
+ {
205
+ pattern: '(?:stealth|fingerprint|webdriver|antibot|bot.*detect|反爬|反检测|指纹)',
206
+ flags: 'i',
207
+ boosts: [
208
+ { tool: 'run_extension_workflow', bonus: 40 },
209
+ { tool: 'list_extension_workflows', bonus: 24 },
210
+ { tool: 'stealth_inject', bonus: 10 },
211
+ { tool: 'stealth_generate_fingerprint', bonus: 10 },
212
+ { tool: 'stealth_verify', bonus: 8 },
213
+ ],
214
+ },
215
+ {
216
+ pattern: '(?:evidence|export|har|report|snapshot|证据|导出|报告|快照|取证)',
217
+ flags: 'i',
218
+ boosts: [
219
+ { tool: 'run_extension_workflow', bonus: 40 },
220
+ { tool: 'list_extension_workflows', bonus: 24 },
221
+ { tool: 'evidence_query_url', bonus: 14 },
222
+ { tool: 'evidence_export_markdown', bonus: 12 },
223
+ { tool: 'evidence_export_json', bonus: 10 },
224
+ ],
225
+ },
226
+ {
227
+ pattern: '(?:auth.*surface|token.*enum|credential.*map|鉴权面|认证面|凭证枚举|jwt|csrf|api.?key|授权)',
228
+ flags: 'i',
229
+ boosts: [
230
+ { tool: 'run_extension_workflow', bonus: 40 },
231
+ { tool: 'list_extension_workflows', bonus: 24 },
232
+ { tool: 'network_extract_auth', bonus: 14 },
233
+ { tool: 'page_get_cookies', bonus: 8 },
234
+ ],
235
+ },
236
+ {
237
+ pattern: '(?:protocol.*registry|channel.*enum|通道枚举|协议注册|协议归类|SSE|EventSource|beacon|postMessage)',
238
+ flags: 'i',
239
+ boosts: [
240
+ { tool: 'run_extension_workflow', bonus: 40 },
241
+ { tool: 'list_extension_workflows', bonus: 24 },
242
+ { tool: 'ws_monitor_enable', bonus: 10 },
243
+ { tool: 'sse_monitor_enable', bonus: 10 },
244
+ { tool: 'network_get_requests', bonus: 8 },
245
+ ],
246
+ },
247
+ {
248
+ pattern: '(?:challenge|turnstile|cloudflare|hcaptcha|datadome|akamai|perimeterx|kasada|人机|挑战|风控|拦截页)',
249
+ flags: 'i',
250
+ boosts: [
251
+ { tool: 'run_extension_workflow', bonus: 40 },
252
+ { tool: 'list_extension_workflows', bonus: 24 },
253
+ { tool: 'captcha_detect', bonus: 14 },
254
+ { tool: 'stealth_verify', bonus: 10 },
255
+ ],
256
+ },
257
+ {
258
+ pattern: '(?:signing.*lineage|签名谱系|签名链路|加签链路|签名追踪|plaintext.*cipher|明文.*密文)',
259
+ flags: 'i',
260
+ boosts: [
261
+ { tool: 'run_extension_workflow', bonus: 40 },
262
+ { tool: 'list_extension_workflows', bonus: 24 },
263
+ { tool: 'detect_crypto', bonus: 12 },
264
+ { tool: 'extract_function_tree', bonus: 10 },
265
+ { tool: 'manage_hooks', bonus: 8 },
266
+ ],
267
+ },
268
+ {
269
+ pattern: '(?:replay.*lab|request.*replay|复现|重发|篡改|参数篡改|request.*tamper)',
270
+ flags: 'i',
271
+ boosts: [
272
+ { tool: 'run_extension_workflow', bonus: 40 },
273
+ { tool: 'list_extension_workflows', bonus: 24 },
274
+ { tool: 'network_replay_request', bonus: 14 },
275
+ { tool: 'instrumentation_network_replay', bonus: 12 },
276
+ { tool: 'network_export_har', bonus: 8 },
277
+ ],
278
+ },
279
+ {
280
+ pattern: '(?:deobfusc.*pipeline|反混淆链|反混淆管道|清洗|还原|ast.*transform|packer|unpack)',
281
+ flags: 'i',
282
+ boosts: [
283
+ { tool: 'run_extension_workflow', bonus: 40 },
284
+ { tool: 'list_extension_workflows', bonus: 24 },
285
+ { tool: 'webcrack_unpack', bonus: 14 },
286
+ { tool: 'ast_transform_apply', bonus: 12 },
287
+ { tool: 'deobfuscate', bonus: 10 },
288
+ { tool: 'detect_obfuscation', bonus: 8 },
289
+ ],
290
+ },
291
+ {
292
+ pattern: '(?:electron|nwjs|preload|ipc|asar|桌面应用|预加载|桥接|electron.*bridge)',
293
+ flags: 'i',
294
+ boosts: [
295
+ { tool: 'run_extension_workflow', bonus: 40 },
296
+ { tool: 'list_extension_workflows', bonus: 24 },
297
+ { tool: 'electron_inspect_app', bonus: 14 },
298
+ { tool: 'electron_ipc_sniff', bonus: 12 },
299
+ { tool: 'asar_search', bonus: 10 },
300
+ { tool: 'electron_check_fuses', bonus: 8 },
301
+ ],
302
+ },
142
303
  ];
143
304
  export const DEFAULT_SEARCH_CONFIG = {
144
305
  queryCategoryProfiles: DEFAULT_QUERY_CATEGORY_PROFILE_CONFIGS,
@@ -1,3 +1,6 @@
1
+ export declare const SHUTDOWN_TIMEOUT_MS: number;
2
+ export declare const RUNTIME_ERROR_WINDOW_MS: number;
3
+ export declare const RUNTIME_ERROR_THRESHOLD: number;
1
4
  export declare const DEBUG_PORT_CANDIDATES: number[];
2
5
  export declare const DEFAULT_DEBUG_PORT: number;
3
6
  export declare const GHIDRA_BRIDGE_ENDPOINT: string;
@@ -40,6 +40,9 @@ const csv = (key, fallback) => {
40
40
  .filter(Boolean);
41
41
  return parsed.length > 0 ? parsed : fallback;
42
42
  };
43
+ export const SHUTDOWN_TIMEOUT_MS = int('SHUTDOWN_TIMEOUT_MS', 10_000);
44
+ export const RUNTIME_ERROR_WINDOW_MS = int('RUNTIME_ERROR_WINDOW_MS', 60_000);
45
+ export const RUNTIME_ERROR_THRESHOLD = int('RUNTIME_ERROR_THRESHOLD', 5);
43
46
  export const DEBUG_PORT_CANDIDATES = list('DEBUG_PORT_CANDIDATES', [9222, 9229, 9333, 2039]);
44
47
  export const DEFAULT_DEBUG_PORT = int('DEFAULT_DEBUG_PORT', 9222);
45
48
  export const GHIDRA_BRIDGE_ENDPOINT = str('GHIDRA_BRIDGE_URL', 'http://127.0.0.1:18080');
@@ -146,7 +149,7 @@ export const PARALLEL_DEFAULT_TIMEOUT_MS = int('PARALLEL_DEFAULT_TIMEOUT_MS', 60
146
149
  export const PARALLEL_DEFAULT_MAX_RETRIES = int('PARALLEL_DEFAULT_MAX_RETRIES', 2);
147
150
  export const PARALLEL_RETRY_BACKOFF_BASE_MS = int('PARALLEL_RETRY_BACKOFF_BASE_MS', 1_000);
148
151
  export const CACHE_GLOBAL_MAX_SIZE_BYTES = int('CACHE_GLOBAL_MAX_SIZE_BYTES', 500 * 1024 * 1024);
149
- export const CACHE_LOW_HIT_RATE_THRESHOLD = parseFloat(process.env.CACHE_LOW_HIT_RATE_THRESHOLD || '0.3');
152
+ export const CACHE_LOW_HIT_RATE_THRESHOLD = float('CACHE_LOW_HIT_RATE_THRESHOLD', 0.3);
150
153
  export const TOKEN_BUDGET_MAX_TOKENS = int('TOKEN_BUDGET_MAX_TOKENS', 200_000);
151
154
  export const DETAILED_DATA_DEFAULT_TTL_MS = int('DETAILED_DATA_DEFAULT_TTL_MS', 30 * 60 * 1000);
152
155
  export const DETAILED_DATA_MAX_TTL_MS = int('DETAILED_DATA_MAX_TTL_MS', 60 * 60 * 1000);
@@ -1,2 +1,2 @@
1
1
  #!/usr/bin/env node
2
- export {};
2
+ export declare function main(): Promise<void>;
package/dist/src/index.js CHANGED
@@ -5,7 +5,7 @@ import { logger } from './utils/logger.js';
5
5
  import { initRegistry } from './server/registry/index.js';
6
6
  import { resolveCliFastPath } from './utils/cliFastPath.js';
7
7
  import { cleanupArtifacts, getArtifactRetentionConfig, startArtifactRetentionScheduler, } from './utils/artifactRetention.js';
8
- const SHUTDOWN_TIMEOUT_MS = 10_000;
8
+ import { SHUTDOWN_TIMEOUT_MS, RUNTIME_ERROR_WINDOW_MS, RUNTIME_ERROR_THRESHOLD, } from './constants.js';
9
9
  const FATAL_ERROR_CODES = new Set([
10
10
  'ERR_WORKER_OUT_OF_MEMORY',
11
11
  'ERR_MEMORY_ALLOCATION_FAILED',
@@ -41,8 +41,16 @@ function formatUnknownError(input) {
41
41
  return String(input);
42
42
  }
43
43
  }
44
- async function main() {
44
+ export async function main() {
45
45
  try {
46
+ const cliFastPath = resolveCliFastPath(process.argv.slice(2), import.meta.url);
47
+ if (cliFastPath.handled) {
48
+ if (cliFastPath.output) {
49
+ process.stdout.write(cliFastPath.output);
50
+ }
51
+ process.exit(cliFastPath.exitCode);
52
+ return;
53
+ }
46
54
  const config = getConfig();
47
55
  logger.debug('Configuration loaded:', config);
48
56
  const validation = validateConfig(config);
@@ -50,12 +58,7 @@ async function main() {
50
58
  logger.error('Configuration validation failed:');
51
59
  validation.errors.forEach((error) => logger.error(` - ${error}`));
52
60
  process.exit(1);
53
- }
54
- if (config.llm.provider === 'openai' && !config.llm.openai?.apiKey) {
55
- logger.warn('OPENAI_API_KEY is not configured. AI-assisted tools may return configuration errors.');
56
- }
57
- if (config.llm.provider === 'anthropic' && !config.llm.anthropic?.apiKey) {
58
- logger.warn('ANTHROPIC_API_KEY is not configured. AI-assisted tools may return configuration errors.');
61
+ return;
59
62
  }
60
63
  const artifactRetention = getArtifactRetentionConfig();
61
64
  if (artifactRetention.cleanupOnStart && artifactRetention.enabled) {
@@ -68,8 +71,8 @@ async function main() {
68
71
  await initRegistry();
69
72
  const server = new MCPServer(config);
70
73
  const stopArtifactRetentionScheduler = startArtifactRetentionScheduler();
71
- const recoveryWindowMs = Math.max(1000, parseInt(process.env.RUNTIME_ERROR_WINDOW_MS ?? '60000', 10));
72
- const maxRecoverableErrors = Math.max(1, parseInt(process.env.RUNTIME_ERROR_THRESHOLD ?? '5', 10));
74
+ const recoveryWindowMs = Math.max(1000, RUNTIME_ERROR_WINDOW_MS);
75
+ const maxRecoverableErrors = Math.max(1, RUNTIME_ERROR_THRESHOLD);
73
76
  const runtimeRecovery = {
74
77
  windowStart: Date.now(),
75
78
  errorCount: 0,
@@ -175,11 +178,4 @@ async function main() {
175
178
  process.exit(1);
176
179
  }
177
180
  }
178
- const cliFastPath = resolveCliFastPath(process.argv.slice(2), import.meta.url);
179
- if (cliFastPath.handled) {
180
- if (cliFastPath.output) {
181
- process.stdout.write(cliFastPath.output);
182
- }
183
- process.exit(cliFastPath.exitCode);
184
- }
185
181
  void main();
@@ -1,8 +1,6 @@
1
1
  import type { UnderstandCodeOptions, UnderstandCodeResult } from '../../types/index.js';
2
- import { type LLMService } from '../../services/LLMService.js';
3
2
  export declare class CodeAnalyzer {
4
- private llm;
5
- constructor(llm: LLMService);
3
+ constructor(legacyDependency?: unknown);
6
4
  understand(options: UnderstandCodeOptions): Promise<UnderstandCodeResult>;
7
5
  private analyzeStructure;
8
6
  private aiAnalyze;
@@ -1,7 +1,5 @@
1
1
  import * as parser from '@babel/parser';
2
2
  import traverse from '@babel/traverse';
3
- import {} from '../../services/LLMService.js';
4
- import { generateCodeAnalysisPrompt } from '../../services/prompts/analysis.js';
5
3
  import { logger } from '../../utils/logger.js';
6
4
  import { identifySecurityRisks } from '../analyzer/SecurityCodeAnalyzer.js';
7
5
  import { calculateQualityScore, detectCodePatterns, analyzeComplexityMetrics, } from '../analyzer/QualityAnalyzer.js';
@@ -11,9 +9,8 @@ const isTraversablePath = (value) => typeof value === 'object' &&
11
9
  'traverse' in value &&
12
10
  typeof value.traverse === 'function';
13
11
  export class CodeAnalyzer {
14
- llm;
15
- constructor(llm) {
16
- this.llm = llm;
12
+ constructor(legacyDependency) {
13
+ void legacyDependency;
17
14
  }
18
15
  async understand(options) {
19
16
  logger.info('Starting code understanding...');
@@ -64,9 +61,8 @@ export class CodeAnalyzer {
64
61
  sourceType: 'module',
65
62
  plugins: ['jsx', 'typescript'],
66
63
  });
67
- const self = this;
68
64
  traverse(ast, {
69
- FunctionDeclaration(path) {
65
+ FunctionDeclaration: (path) => {
70
66
  const node = path.node;
71
67
  functions.push({
72
68
  name: node.id?.name || 'anonymous',
@@ -76,10 +72,10 @@ export class CodeAnalyzer {
76
72
  line: node.loc?.start.line || 0,
77
73
  column: node.loc?.start.column,
78
74
  },
79
- complexity: self.calculateComplexity(path),
75
+ complexity: this.calculateComplexity(path),
80
76
  });
81
77
  },
82
- FunctionExpression(path) {
78
+ FunctionExpression: (path) => {
83
79
  const node = path.node;
84
80
  const parent = path.parent;
85
81
  let name = 'anonymous';
@@ -91,16 +87,20 @@ export class CodeAnalyzer {
91
87
  }
92
88
  functions.push({
93
89
  name,
94
- params: node.params.map((p) => (p.type === 'Identifier' ? p.name : 'unknown')),
90
+ params: node.params.map((p) => {
91
+ if (p.type !== 'Identifier')
92
+ return 'unknown';
93
+ return p.name;
94
+ }),
95
95
  location: {
96
96
  file: 'current',
97
97
  line: node.loc?.start.line || 0,
98
98
  column: node.loc?.start.column,
99
99
  },
100
- complexity: self.calculateComplexity(path),
100
+ complexity: this.calculateComplexity(path),
101
101
  });
102
102
  },
103
- ArrowFunctionExpression(path) {
103
+ ArrowFunctionExpression: (path) => {
104
104
  const node = path.node;
105
105
  const parent = path.parent;
106
106
  let name = 'arrow';
@@ -115,7 +115,7 @@ export class CodeAnalyzer {
115
115
  line: node.loc?.start.line || 0,
116
116
  column: node.loc?.start.column,
117
117
  },
118
- complexity: self.calculateComplexity(path),
118
+ complexity: this.calculateComplexity(path),
119
119
  });
120
120
  },
121
121
  ClassDeclaration(path) {
@@ -172,20 +172,8 @@ export class CodeAnalyzer {
172
172
  callGraph,
173
173
  };
174
174
  }
175
- async aiAnalyze(code, focus) {
176
- try {
177
- const messages = generateCodeAnalysisPrompt(code, focus);
178
- const response = await this.llm.chat(messages, { temperature: 0.3, maxTokens: 2000 });
179
- const jsonMatch = response.content.match(/\{[\s\S]*\}/);
180
- if (jsonMatch) {
181
- return JSON.parse(jsonMatch[0]);
182
- }
183
- return { rawAnalysis: response.content };
184
- }
185
- catch (error) {
186
- logger.warn('AI analysis failed, using fallback', error);
187
- return {};
188
- }
175
+ async aiAnalyze(_code, _focus) {
176
+ return {};
189
177
  }
190
178
  detectTechStack(code, aiAnalysis) {
191
179
  const techStack = {
@@ -363,6 +351,6 @@ export class CodeAnalyzer {
363
351
  return complexity;
364
352
  }
365
353
  async analyzeDataFlow(code) {
366
- return analyzeDataFlowWithTaint(code, this.llm);
354
+ return analyzeDataFlowWithTaint(code);
367
355
  }
368
356
  }
@@ -1,3 +1,2 @@
1
1
  import type { DataFlow } from '../../types/index.js';
2
- import type { LLMService } from '../../services/LLMService.js';
3
- export declare function analyzeDataFlowWithTaint(code: string, llm?: LLMService): Promise<DataFlow>;
2
+ export declare function analyzeDataFlowWithTaint(code: string): Promise<DataFlow>;