@jshookmcp/jshook 0.2.3 → 0.2.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (385) hide show
  1. package/README.md +14 -5
  2. package/README.zh.md +18 -3
  3. package/dist/packages/extension-sdk/src/bridges/shared.js +2 -2
  4. package/dist/packages/extension-sdk/src/plugin.d.ts +5 -0
  5. package/dist/packages/extension-sdk/src/plugin.js +119 -33
  6. package/dist/packages/extension-sdk/src/workflow.d.ts +156 -0
  7. package/dist/packages/extension-sdk/src/workflow.js +236 -0
  8. package/dist/src/config/search-defaults.js +161 -0
  9. package/dist/src/constants.d.ts +3 -0
  10. package/dist/src/constants.js +4 -1
  11. package/dist/src/index.d.ts +1 -1
  12. package/dist/src/index.js +13 -17
  13. package/dist/src/modules/analyzer/CodeAnalyzer.d.ts +1 -3
  14. package/dist/src/modules/analyzer/CodeAnalyzer.js +16 -28
  15. package/dist/src/modules/analyzer/CodeAnalyzerDataFlow.d.ts +1 -2
  16. package/dist/src/modules/analyzer/CodeAnalyzerDataFlow.js +1 -45
  17. package/dist/src/modules/analyzer/IntelligentAnalyzer.d.ts +1 -37
  18. package/dist/src/modules/analyzer/IntelligentAnalyzer.js +9 -142
  19. package/dist/src/modules/analyzer/PatternDetector.js +3 -3
  20. package/dist/src/modules/analyzer/PatternDetectorAuthPatterns.js +1 -1
  21. package/dist/src/modules/browser/BrowserDiscovery.js +2 -2
  22. package/dist/src/modules/browser/BrowserModeManager.js +11 -10
  23. package/dist/src/modules/browser/TabRegistry.js +2 -2
  24. package/dist/src/modules/browser/UnifiedBrowserManager.d.ts +1 -0
  25. package/dist/src/modules/browser/UnifiedBrowserManager.js +18 -3
  26. package/dist/src/modules/captcha/AICaptchaDetector.d.ts +1 -10
  27. package/dist/src/modules/captcha/AICaptchaDetector.js +7 -201
  28. package/dist/src/modules/collector/CodeCollector.js +4 -5
  29. package/dist/src/modules/collector/DOMInspector.js +48 -58
  30. package/dist/src/modules/collector/PageController.d.ts +17 -4
  31. package/dist/src/modules/collector/PageController.js +2 -5
  32. package/dist/src/modules/collector/PageScriptCollectors.js +3 -3
  33. package/dist/src/modules/crypto/CryptoDetector.d.ts +1 -4
  34. package/dist/src/modules/crypto/CryptoDetector.js +2 -42
  35. package/dist/src/modules/crypto/CryptoRules.js +1 -1
  36. package/dist/src/modules/debugger/BlackboxManager.js +1 -1
  37. package/dist/src/modules/debugger/DebuggerManager.impl.core.scope.js +1 -1
  38. package/dist/src/modules/debugger/ScriptManager.impl.extract-function-tree.js +4 -2
  39. package/dist/src/modules/debugger/WatchExpressionManager.js +1 -1
  40. package/dist/src/modules/deobfuscator/Deobfuscator.d.ts +1 -4
  41. package/dist/src/modules/deobfuscator/Deobfuscator.js +4 -39
  42. package/dist/src/modules/deobfuscator/JSVMPDeobfuscator.d.ts +0 -3
  43. package/dist/src/modules/deobfuscator/JSVMPDeobfuscator.js +2 -8
  44. package/dist/src/modules/deobfuscator/JSVMPDeobfuscator.restore.d.ts +1 -2
  45. package/dist/src/modules/deobfuscator/JSVMPDeobfuscator.restore.js +3 -55
  46. package/dist/src/modules/deobfuscator/JScramblerDeobfuscator.js +3 -4
  47. package/dist/src/modules/deobfuscator/VMDeobfuscator.d.ts +2 -10
  48. package/dist/src/modules/deobfuscator/VMDeobfuscator.js +3 -128
  49. package/dist/src/modules/deobfuscator/webcrack.js +15 -2
  50. package/dist/src/modules/emulator/AIEnvironmentAnalyzer.d.ts +5 -8
  51. package/dist/src/modules/emulator/AIEnvironmentAnalyzer.js +10 -102
  52. package/dist/src/modules/emulator/EnvironmentEmulator.d.ts +1 -5
  53. package/dist/src/modules/emulator/EnvironmentEmulator.js +7 -91
  54. package/dist/src/modules/emulator/EnvironmentEmulatorFetch.js +58 -61
  55. package/dist/src/modules/emulator/templates/chrome-env.d.ts +17 -7
  56. package/dist/src/modules/emulator/templates/chrome-env.js +14 -7
  57. package/dist/src/modules/external/ExternalToolRunner.js +25 -22
  58. package/dist/src/modules/hook/HookGeneratorBuilders.core.generators.compose.js +5 -5
  59. package/dist/src/modules/hook/HookGeneratorBuilders.core.generators.network.js +311 -311
  60. package/dist/src/modules/hook/HookGeneratorBuilders.core.generators.runtime.js +410 -410
  61. package/dist/src/modules/hook/HookGeneratorBuilders.core.generators.storage.js +122 -122
  62. package/dist/src/modules/monitor/ConsoleMonitor.impl.core.class.d.ts +13 -0
  63. package/dist/src/modules/monitor/ConsoleMonitor.impl.core.class.js +42 -0
  64. package/dist/src/modules/monitor/ConsoleMonitor.impl.core.dynamic.js +194 -194
  65. package/dist/src/modules/monitor/FetchInterceptor.d.ts +46 -0
  66. package/dist/src/modules/monitor/FetchInterceptor.js +191 -0
  67. package/dist/src/modules/monitor/PerformanceMonitor.js +8 -7
  68. package/dist/src/modules/monitor/PlaywrightNetworkMonitor.js +62 -62
  69. package/dist/src/modules/process/BaseMemoryManager.d.ts +1 -1
  70. package/dist/src/modules/process/LinuxProcessManager.js +2 -0
  71. package/dist/src/modules/process/MacProcessManager.js +25 -25
  72. package/dist/src/modules/process/MemoryManager.d.ts +1 -1
  73. package/dist/src/modules/process/MemoryManager.js +2 -2
  74. package/dist/src/modules/process/memory/AuditTrail.js +1 -1
  75. package/dist/src/modules/process/memory/availability.js +49 -49
  76. package/dist/src/modules/process/memory/injector.js +185 -185
  77. package/dist/src/modules/process/memory/reader.js +85 -53
  78. package/dist/src/modules/process/memory/regions.dump.js +51 -51
  79. package/dist/src/modules/process/memory/regions.enumerate.js +108 -108
  80. package/dist/src/modules/process/memory/regions.modules.js +80 -80
  81. package/dist/src/modules/process/memory/regions.protection.js +148 -115
  82. package/dist/src/modules/process/memory/scanner.d.ts +5 -1
  83. package/dist/src/modules/process/memory/scanner.darwin.js +98 -41
  84. package/dist/src/modules/process/memory/scanner.js +88 -4
  85. package/dist/src/modules/process/memory/scanner.windows.js +124 -124
  86. package/dist/src/modules/process/memory/writer.js +98 -58
  87. package/dist/src/modules/security/ExecutionSandbox.js +51 -52
  88. package/dist/src/modules/stealth/FingerprintManager.js +1 -1
  89. package/dist/src/modules/stealth/StealthScripts.d.ts +1 -0
  90. package/dist/src/modules/stealth/StealthScripts.js +18 -13
  91. package/dist/src/modules/stealth/StealthVerifier.js +1 -3
  92. package/dist/src/modules/symbolic/JSVMPSymbolicExecutor.d.ts +14 -0
  93. package/dist/src/modules/symbolic/JSVMPSymbolicExecutor.js +181 -2
  94. package/dist/src/modules/trace/TraceDB.js +75 -69
  95. package/dist/src/modules/trace/TraceRecorder.js +1 -5
  96. package/dist/src/native/AntiCheatDetector.js +67 -16
  97. package/dist/src/native/CodeInjector.js +3 -3
  98. package/dist/src/native/HardwareBreakpoint.js +24 -15
  99. package/dist/src/native/HeapAnalyzer.js +2 -2
  100. package/dist/src/native/MemoryController.js +1 -1
  101. package/dist/src/native/MemoryScanSession.js +2 -2
  102. package/dist/src/native/MemoryScanner.js +4 -8
  103. package/dist/src/native/NativeMemoryManager.impl.js +2 -2
  104. package/dist/src/native/PEAnalyzer.js +14 -15
  105. package/dist/src/native/PointerChainEngine.js +2 -4
  106. package/dist/src/native/ScriptLoader.js +4 -9
  107. package/dist/src/native/Speedhack.js +1 -1
  108. package/dist/src/native/StructureAnalyzer.js +52 -33
  109. package/dist/src/native/Win32API.d.ts +1 -0
  110. package/dist/src/native/Win32API.js +13 -0
  111. package/dist/src/native/Win32Debug.js +19 -19
  112. package/dist/src/native/platform/darwin/DarwinAPI.d.ts +2 -0
  113. package/dist/src/native/platform/darwin/DarwinAPI.js +8 -0
  114. package/dist/src/native/platform/darwin/DarwinMemoryProvider.js +6 -1
  115. package/dist/src/server/MCPServer.context.d.ts +2 -1
  116. package/dist/src/server/MCPServer.d.ts +2 -1
  117. package/dist/src/server/MCPServer.domain.d.ts +1 -1
  118. package/dist/src/server/MCPServer.domain.js +81 -16
  119. package/dist/src/server/MCPServer.js +41 -14
  120. package/dist/src/server/MCPServer.resources.d.ts +2 -0
  121. package/dist/src/server/MCPServer.resources.js +91 -0
  122. package/dist/src/server/MCPServer.search.handlers.call.js +2 -1
  123. package/dist/src/server/MCPServer.search.helpers.js +1 -1
  124. package/dist/src/server/MCPServer.transport.js +12 -0
  125. package/dist/src/server/ToolCallContextGuard.js +8 -0
  126. package/dist/src/server/ToolRouter.d.ts +25 -9
  127. package/dist/src/server/ToolRouter.intent.d.ts +26 -0
  128. package/dist/src/server/ToolRouter.intent.js +77 -0
  129. package/dist/src/server/ToolRouter.js +103 -284
  130. package/dist/src/server/ToolRouter.policy.d.ts +22 -0
  131. package/dist/src/server/ToolRouter.policy.js +163 -0
  132. package/dist/src/server/ToolRouter.probe.d.ts +17 -0
  133. package/dist/src/server/ToolRouter.probe.js +103 -0
  134. package/dist/src/server/ToolRouter.renderer.d.ts +9 -0
  135. package/dist/src/server/ToolRouter.renderer.js +52 -0
  136. package/dist/src/server/activation/ActivationController.js +15 -12
  137. package/dist/src/server/activation/CompoundConditionEngine.js +1 -1
  138. package/dist/src/server/activation/PredictiveBooster.js +1 -3
  139. package/dist/src/server/domains/analysis/definitions.js +155 -655
  140. package/dist/src/server/domains/analysis/handlers.impl.js +26 -20
  141. package/dist/src/server/domains/analysis/handlers.web-tools.js +2 -1
  142. package/dist/src/server/domains/analysis/manifest.js +6 -4
  143. package/dist/src/server/domains/antidebug/definitions.js +25 -111
  144. package/dist/src/server/domains/browser/definitions.tools.advanced.js +59 -88
  145. package/dist/src/server/domains/browser/definitions.tools.behavior.js +120 -227
  146. package/dist/src/server/domains/browser/definitions.tools.page-core.js +210 -439
  147. package/dist/src/server/domains/browser/definitions.tools.page-system.js +108 -250
  148. package/dist/src/server/domains/browser/definitions.tools.runtime.js +98 -211
  149. package/dist/src/server/domains/browser/definitions.tools.security.js +194 -339
  150. package/dist/src/server/domains/browser/handlers/camoufox-browser.js +3 -2
  151. package/dist/src/server/domains/browser/handlers/captcha-solver.js +3 -3
  152. package/dist/src/server/domains/browser/handlers/dom-query.js +2 -1
  153. package/dist/src/server/domains/browser/handlers/framework-state.js +27 -9
  154. package/dist/src/server/domains/browser/handlers/indexeddb-dump.js +21 -20
  155. package/dist/src/server/domains/browser/handlers/script-management.js +1 -1
  156. package/dist/src/server/domains/browser/handlers.impl.d.ts +1 -2
  157. package/dist/src/server/domains/browser/handlers.impl.js +2 -3
  158. package/dist/src/server/domains/browser/manifest.js +37 -13
  159. package/dist/src/server/domains/coordination/definitions.js +50 -216
  160. package/dist/src/server/domains/coordination/index.d.ts +2 -1
  161. package/dist/src/server/domains/coordination/index.js +1 -0
  162. package/dist/src/server/domains/debugger/definitions.tools.advanced.js +72 -189
  163. package/dist/src/server/domains/debugger/definitions.tools.core.js +114 -288
  164. package/dist/src/server/domains/debugger/manifest.js +9 -2
  165. package/dist/src/server/domains/encoding/definitions.js +43 -153
  166. package/dist/src/server/domains/encoding/handlers.base.js +2 -2
  167. package/dist/src/server/domains/evidence/definitions.d.ts +2 -0
  168. package/dist/src/server/domains/evidence/definitions.js +42 -0
  169. package/dist/src/server/domains/evidence/handlers.d.ts +582 -0
  170. package/dist/src/server/domains/evidence/handlers.js +60 -0
  171. package/dist/src/server/domains/evidence/index.d.ts +2 -0
  172. package/dist/src/server/domains/evidence/index.js +2 -0
  173. package/dist/src/server/domains/evidence/manifest.d.ts +63 -0
  174. package/dist/src/server/domains/evidence/manifest.js +78 -0
  175. package/dist/src/server/domains/graphql/definitions.js +53 -141
  176. package/dist/src/server/domains/graphql/handlers.impl.core.runtime.replay.js +92 -114
  177. package/dist/src/server/domains/graphql/handlers.impl.core.runtime.shared.js +77 -77
  178. package/dist/src/server/domains/hooks/ai-handlers.d.ts +0 -7
  179. package/dist/src/server/domains/hooks/ai-handlers.js +1 -67
  180. package/dist/src/server/domains/hooks/definitions.js +69 -335
  181. package/dist/src/server/domains/hooks/manifest.d.ts +1 -1
  182. package/dist/src/server/domains/hooks/manifest.js +1 -2
  183. package/dist/src/server/domains/instrumentation/definitions.d.ts +2 -0
  184. package/dist/src/server/domains/instrumentation/definitions.js +99 -0
  185. package/dist/src/server/domains/instrumentation/handlers.d.ts +78 -0
  186. package/dist/src/server/domains/instrumentation/handlers.js +206 -0
  187. package/dist/src/server/domains/instrumentation/index.d.ts +2 -0
  188. package/dist/src/server/domains/instrumentation/index.js +2 -0
  189. package/dist/src/server/domains/instrumentation/manifest.d.ts +63 -0
  190. package/dist/src/server/domains/instrumentation/manifest.js +114 -0
  191. package/dist/src/server/domains/macro/definitions.js +16 -43
  192. package/dist/src/server/domains/maintenance/definitions.js +60 -219
  193. package/dist/src/server/domains/maintenance/handlers.extensions.js +78 -20
  194. package/dist/src/server/domains/memory/definitions.js +387 -559
  195. package/dist/src/server/domains/memory/handlers/hooks.d.ts +55 -0
  196. package/dist/src/server/domains/memory/handlers/hooks.js +115 -0
  197. package/dist/src/server/domains/memory/handlers/integrity.d.ts +77 -0
  198. package/dist/src/server/domains/memory/handlers/integrity.js +180 -0
  199. package/dist/src/server/domains/memory/handlers/pointer-chain.d.ts +29 -0
  200. package/dist/src/server/domains/memory/handlers/pointer-chain.js +82 -0
  201. package/dist/src/server/domains/memory/handlers/readwrite.d.ts +41 -0
  202. package/dist/src/server/domains/memory/handlers/readwrite.js +78 -0
  203. package/dist/src/server/domains/memory/handlers/scan.d.ts +35 -0
  204. package/dist/src/server/domains/memory/handlers/scan.js +97 -0
  205. package/dist/src/server/domains/memory/handlers/session.d.ts +23 -0
  206. package/dist/src/server/domains/memory/handlers/session.js +49 -0
  207. package/dist/src/server/domains/memory/handlers/structure.d.ts +29 -0
  208. package/dist/src/server/domains/memory/handlers/structure.js +74 -0
  209. package/dist/src/server/domains/memory/handlers.impl.d.ts +49 -54
  210. package/dist/src/server/domains/memory/handlers.impl.js +63 -494
  211. package/dist/src/server/domains/memory/manifest.js +236 -64
  212. package/dist/src/server/domains/native-bridge/definitions.js +54 -192
  213. package/dist/src/server/domains/native-bridge/index.d.ts +1 -0
  214. package/dist/src/server/domains/native-bridge/index.js +2 -1
  215. package/dist/src/server/domains/network/auth-extractor.js +1 -1
  216. package/dist/src/server/domains/network/definitions.js +175 -578
  217. package/dist/src/server/domains/network/handlers.base.core.d.ts +64 -0
  218. package/dist/src/server/domains/network/handlers.base.core.js +623 -0
  219. package/dist/src/server/domains/network/handlers.base.d.ts +2 -124
  220. package/dist/src/server/domains/network/handlers.base.js +3 -878
  221. package/dist/src/server/domains/network/handlers.base.performance.d.ts +63 -0
  222. package/dist/src/server/domains/network/handlers.base.performance.js +193 -0
  223. package/dist/src/server/domains/network/handlers.base.types.d.ts +42 -0
  224. package/dist/src/server/domains/network/handlers.base.types.js +89 -0
  225. package/dist/src/server/domains/network/handlers.impl.core.runtime.d.ts +1 -1
  226. package/dist/src/server/domains/network/handlers.impl.core.runtime.intercept.d.ts +21 -0
  227. package/dist/src/server/domains/network/handlers.impl.core.runtime.intercept.js +186 -0
  228. package/dist/src/server/domains/network/handlers.impl.core.runtime.js +1 -1
  229. package/dist/src/server/domains/network/manifest.js +15 -0
  230. package/dist/src/server/domains/network/replay.js +1 -4
  231. package/dist/src/server/domains/platform/definitions.js +121 -112
  232. package/dist/src/server/domains/platform/handlers/bridge-handlers.d.ts +4 -0
  233. package/dist/src/server/domains/platform/handlers/bridge-handlers.js +193 -4
  234. package/dist/src/server/domains/platform/handlers/electron-asar-helpers.js +26 -6
  235. package/dist/src/server/domains/platform/handlers/electron-dual-cdp.d.ts +3 -0
  236. package/dist/src/server/domains/platform/handlers/electron-dual-cdp.js +170 -0
  237. package/dist/src/server/domains/platform/handlers/electron-fuse-handler.d.ts +3 -0
  238. package/dist/src/server/domains/platform/handlers/electron-fuse-handler.js +193 -0
  239. package/dist/src/server/domains/platform/handlers/electron-handlers.d.ts +6 -0
  240. package/dist/src/server/domains/platform/handlers/electron-handlers.js +95 -2
  241. package/dist/src/server/domains/platform/handlers/electron-ipc-sniffer.d.ts +2 -0
  242. package/dist/src/server/domains/platform/handlers/electron-ipc-sniffer.js +370 -0
  243. package/dist/src/server/domains/platform/handlers/electron-userdata-handler.d.ts +2 -0
  244. package/dist/src/server/domains/platform/handlers/electron-userdata-handler.js +78 -0
  245. package/dist/src/server/domains/platform/handlers/miniapp-handlers.js +3 -3
  246. package/dist/src/server/domains/platform/handlers/v8-bytecode-handler.d.ts +2 -0
  247. package/dist/src/server/domains/platform/handlers/v8-bytecode-handler.js +207 -0
  248. package/dist/src/server/domains/platform/handlers.d.ts +48 -0
  249. package/dist/src/server/domains/platform/handlers.js +29 -0
  250. package/dist/src/server/domains/platform/manifest.js +38 -0
  251. package/dist/src/server/domains/process/definitions.js +163 -647
  252. package/dist/src/server/domains/process/handlers.base.d.ts +3 -95
  253. package/dist/src/server/domains/process/handlers.base.js +7 -462
  254. package/dist/src/server/domains/process/handlers.base.process.d.ts +61 -0
  255. package/dist/src/server/domains/process/handlers.base.process.js +417 -0
  256. package/dist/src/server/domains/process/handlers.base.types.d.ts +57 -0
  257. package/dist/src/server/domains/process/handlers.base.types.js +50 -0
  258. package/dist/src/server/domains/process/handlers.impl.core.runtime.inject.js +18 -16
  259. package/dist/src/server/domains/process/manifest.js +6 -1
  260. package/dist/src/server/domains/sandbox/definitions.js +11 -33
  261. package/dist/src/server/domains/sandbox/handlers.js +8 -3
  262. package/dist/src/server/domains/shared/ResponseBuilder.d.ts +209 -0
  263. package/dist/src/server/domains/shared/ResponseBuilder.js +48 -0
  264. package/dist/src/server/domains/shared/modules.d.ts +0 -2
  265. package/dist/src/server/domains/shared/modules.js +0 -1
  266. package/dist/src/server/domains/sourcemap/definitions.js +27 -111
  267. package/dist/src/server/domains/sourcemap/handlers.impl.sourcemap-common.js +7 -2
  268. package/dist/src/server/domains/sourcemap/handlers.impl.sourcemap-main.js +1 -1
  269. package/dist/src/server/domains/sourcemap/handlers.impl.sourcemap-parse-base.js +1 -1
  270. package/dist/src/server/domains/sourcemap/manifest.d.ts +1 -1
  271. package/dist/src/server/domains/sourcemap/manifest.js +1 -1
  272. package/dist/src/server/domains/streaming/definitions.js +36 -148
  273. package/dist/src/server/domains/streaming/handlers.impl.streaming-sse.js +163 -164
  274. package/dist/src/server/domains/streaming/handlers.impl.streaming-ws.js +1 -1
  275. package/dist/src/server/domains/trace/TraceSummarizer.js +8 -5
  276. package/dist/src/server/domains/trace/definitions.tools.js +51 -206
  277. package/dist/src/server/domains/trace/handlers.js +10 -12
  278. package/dist/src/server/domains/trace/index.d.ts +2 -1
  279. package/dist/src/server/domains/trace/index.js +2 -1
  280. package/dist/src/server/domains/trace/manifest.js +15 -3
  281. package/dist/src/server/domains/transform/definitions.js +50 -210
  282. package/dist/src/server/domains/transform/handlers.impl.transform-base.js +108 -108
  283. package/dist/src/server/domains/transform/handlers.impl.transform-crypto.js +18 -19
  284. package/dist/src/server/domains/transform/manifest.d.ts +1 -1
  285. package/dist/src/server/domains/transform/manifest.js +1 -1
  286. package/dist/src/server/domains/wasm/definitions.js +55 -232
  287. package/dist/src/server/domains/wasm/handlers.js +1 -1
  288. package/dist/src/server/domains/workflow/definitions.js +144 -414
  289. package/dist/src/server/domains/workflow/handlers.impl.workflow-account-bundle.js +1 -1
  290. package/dist/src/server/domains/workflow/handlers.impl.workflow-api.js +51 -51
  291. package/dist/src/server/domains/workflow/handlers.impl.workflow-base.d.ts +2 -0
  292. package/dist/src/server/domains/workflow/handlers.impl.workflow-base.js +126 -87
  293. package/dist/src/server/domains/workflow/handlers.impl.workflow-batch.js +5 -5
  294. package/dist/src/server/evidence/ReverseEvidenceGraph.d.ts +20 -0
  295. package/dist/src/server/evidence/ReverseEvidenceGraph.js +208 -0
  296. package/dist/src/server/evidence/index.d.ts +2 -0
  297. package/dist/src/server/evidence/index.js +1 -0
  298. package/dist/src/server/evidence/types.d.ts +22 -0
  299. package/dist/src/server/evidence/types.js +1 -0
  300. package/dist/src/server/extensions/ExtensionManager.d.ts +1 -0
  301. package/dist/src/server/extensions/ExtensionManager.discovery.js +72 -9
  302. package/dist/src/server/extensions/ExtensionManager.integrity.js +1 -1
  303. package/dist/src/server/extensions/ExtensionManager.js +193 -40
  304. package/dist/src/server/extensions/ExtensionManager.roots.d.ts +1 -1
  305. package/dist/src/server/extensions/ExtensionManager.roots.js +4 -4
  306. package/dist/src/server/extensions/plugin-config.js +1 -1
  307. package/dist/src/server/extensions/plugin-env.d.ts +1 -1
  308. package/dist/src/server/extensions/plugin-env.js +10 -4
  309. package/dist/src/server/extensions/types.d.ts +17 -0
  310. package/dist/src/server/extensions/types.js +1 -1
  311. package/dist/src/server/instrumentation/EvidenceGraphBridge.d.ts +13 -0
  312. package/dist/src/server/instrumentation/EvidenceGraphBridge.js +150 -0
  313. package/dist/src/server/instrumentation/InstrumentationSession.d.ts +60 -0
  314. package/dist/src/server/instrumentation/InstrumentationSession.js +269 -0
  315. package/dist/src/server/instrumentation/index.d.ts +2 -0
  316. package/dist/src/server/instrumentation/index.js +2 -0
  317. package/dist/src/server/instrumentation/types.d.ts +62 -0
  318. package/dist/src/server/instrumentation/types.js +7 -0
  319. package/dist/src/server/macros/MacroConfigLoader.d.ts +6 -5
  320. package/dist/src/server/macros/MacroConfigLoader.js +61 -59
  321. package/dist/src/server/macros/MacroRunner.js +6 -2
  322. package/dist/src/server/macros/builtins/index.d.ts +2 -3
  323. package/dist/src/server/macros/builtins/index.js +51 -7
  324. package/dist/src/server/plugins/PluginContract.d.ts +1 -1
  325. package/dist/src/server/registry/contracts.d.ts +1 -1
  326. package/dist/src/server/registry/discovery.js +5 -4
  327. package/dist/src/server/registry/ensure-browser-core.js +0 -3
  328. package/dist/src/server/registry/index.js +4 -4
  329. package/dist/src/server/registry/tool-builder.d.ts +46 -0
  330. package/dist/src/server/registry/tool-builder.js +105 -0
  331. package/dist/src/server/sandbox/QuickJSSandbox.js +16 -5
  332. package/dist/src/server/sandbox/SandboxHelpers.js +250 -250
  333. package/dist/src/server/search/EmbeddingWorker.js +5 -3
  334. package/dist/src/server/search/FeedbackTracker.d.ts +9 -0
  335. package/dist/src/server/search/FeedbackTracker.js +26 -0
  336. package/dist/src/server/search/QueryNormalizer.d.ts +6 -0
  337. package/dist/src/server/search/QueryNormalizer.js +94 -0
  338. package/dist/src/server/search/ToolSearchEngineImpl.d.ts +2 -3
  339. package/dist/src/server/search/ToolSearchEngineImpl.js +38 -88
  340. package/dist/src/server/workflows/WorkflowContract.d.ts +24 -0
  341. package/dist/src/server/workflows/WorkflowContract.js +12 -0
  342. package/dist/src/server/workflows/WorkflowEngine.d.ts +1 -0
  343. package/dist/src/server/workflows/WorkflowEngine.js +136 -3
  344. package/dist/src/types/config.d.ts +0 -14
  345. package/dist/src/types/deobfuscator.d.ts +0 -1
  346. package/dist/src/types/index.d.ts +1 -1
  347. package/dist/src/utils/DetailedDataManager.js +2 -0
  348. package/dist/src/utils/RingBuffer.js +5 -5
  349. package/dist/src/utils/TokenBudgetManager.js +1 -1
  350. package/dist/src/utils/UnifiedCacheManager.js +1 -1
  351. package/dist/src/utils/artifactRetention.js +2 -2
  352. package/dist/src/utils/betterSqlite3.d.ts +11 -0
  353. package/dist/src/utils/betterSqlite3.js +88 -0
  354. package/dist/src/utils/browserExecutable.js +2 -2
  355. package/dist/src/utils/cliFastPath.js +5 -8
  356. package/dist/src/utils/config.js +4 -26
  357. package/dist/src/utils/environmentDoctor.js +138 -11
  358. package/dist/src/utils/outputPaths.js +16 -9
  359. package/dist/src/utils/parallel.js +1 -3
  360. package/package.json +74 -72
  361. package/workflows/.gitkeep +0 -0
  362. package/dist/src/modules/analyzer/AISummarizer.d.ts +0 -39
  363. package/dist/src/modules/analyzer/AISummarizer.js +0 -122
  364. package/dist/src/modules/hook/AIHookGenerator.d.ts +0 -52
  365. package/dist/src/modules/hook/AIHookGenerator.js +0 -360
  366. package/dist/src/modules/hook/AIHookGeneratorTemplates.d.ts +0 -9
  367. package/dist/src/modules/hook/AIHookGeneratorTemplates.js +0 -157
  368. package/dist/src/server/macros/builtins/deobfuscate-ast-flow.d.ts +0 -2
  369. package/dist/src/server/macros/builtins/deobfuscate-ast-flow.js +0 -25
  370. package/dist/src/server/macros/builtins/unpacker-flow.d.ts +0 -2
  371. package/dist/src/server/macros/builtins/unpacker-flow.js +0 -25
  372. package/dist/src/services/LLMService.d.ts +0 -37
  373. package/dist/src/services/LLMService.js +0 -233
  374. package/dist/src/services/prompts/analysis.d.ts +0 -9
  375. package/dist/src/services/prompts/analysis.js +0 -158
  376. package/dist/src/services/prompts/crypto.d.ts +0 -2
  377. package/dist/src/services/prompts/crypto.js +0 -108
  378. package/dist/src/services/prompts/deobfuscation.d.ts +0 -6
  379. package/dist/src/services/prompts/deobfuscation.js +0 -300
  380. package/dist/src/services/prompts/environment.d.ts +0 -16
  381. package/dist/src/services/prompts/environment.js +0 -372
  382. package/dist/src/services/prompts/intelligence.d.ts +0 -4
  383. package/dist/src/services/prompts/intelligence.js +0 -250
  384. package/dist/src/services/prompts/taint.d.ts +0 -2
  385. package/dist/src/services/prompts/taint.js +0 -54
@@ -1,71 +1,73 @@
1
1
  import { readdir, readFile } from 'node:fs/promises';
2
- import { resolve, extname } from 'node:path';
2
+ import { extname, resolve } from 'node:path';
3
3
  import { logger } from '../../utils/logger.js';
4
- export class MacroConfigLoader {
5
- static async loadFromDirectory(dir) {
6
- let files;
4
+ async function loadFromDirectory(dir) {
5
+ let files;
6
+ try {
7
+ files = await readdir(dir);
8
+ }
9
+ catch {
10
+ return [];
11
+ }
12
+ const jsonFiles = files.filter((f) => extname(f) === '.json');
13
+ const macros = [];
14
+ for (const file of jsonFiles) {
15
+ const path = resolve(dir, file);
7
16
  try {
8
- files = await readdir(dir);
9
- }
10
- catch {
11
- return [];
12
- }
13
- const jsonFiles = files.filter((f) => extname(f) === '.json');
14
- const macros = [];
15
- for (const file of jsonFiles) {
16
- const path = resolve(dir, file);
17
- try {
18
- const raw = JSON.parse(await readFile(path, 'utf-8'));
19
- if (MacroConfigLoader.validate(raw)) {
20
- macros.push(MacroConfigLoader.toDefinition(raw));
21
- logger.info(`[macros] Loaded user macro "${raw.id}" from ${file}`);
22
- }
23
- else {
24
- logger.warn(`[macros] Skipping ${file}: invalid macro schema`);
25
- }
17
+ const raw = JSON.parse(await readFile(path, 'utf-8'));
18
+ if (validate(raw)) {
19
+ macros.push(toDefinition(raw));
20
+ logger.info(`[macros] Loaded user macro "${raw.id}" from ${file}`);
26
21
  }
27
- catch (err) {
28
- logger.warn(`[macros] Skipping ${file}: ${err instanceof Error ? err.message : String(err)}`);
22
+ else {
23
+ logger.warn(`[macros] Skipping ${file}: invalid macro schema`);
29
24
  }
30
25
  }
31
- return macros;
26
+ catch (err) {
27
+ logger.warn(`[macros] Skipping ${file}: ${err instanceof Error ? err.message : String(err)}`);
28
+ }
32
29
  }
33
- static validate(raw) {
34
- if (!raw || typeof raw !== 'object')
35
- return false;
36
- const obj = raw;
37
- if (typeof obj.id !== 'string' || !obj.id)
30
+ return macros;
31
+ }
32
+ function validate(raw) {
33
+ if (!raw || typeof raw !== 'object')
34
+ return false;
35
+ const obj = raw;
36
+ if (typeof obj.id !== 'string' || !obj.id)
37
+ return false;
38
+ if (typeof obj.displayName !== 'string' || !obj.displayName)
39
+ return false;
40
+ if (!Array.isArray(obj.steps) || obj.steps.length === 0)
41
+ return false;
42
+ for (const step of obj.steps) {
43
+ if (!step || typeof step !== 'object')
38
44
  return false;
39
- if (typeof obj.displayName !== 'string' || !obj.displayName)
45
+ const s = step;
46
+ if (typeof s.id !== 'string' || !s.id)
40
47
  return false;
41
- if (!Array.isArray(obj.steps) || obj.steps.length === 0)
48
+ if (typeof s.toolName !== 'string' || !s.toolName)
42
49
  return false;
43
- for (const step of obj.steps) {
44
- if (!step || typeof step !== 'object')
45
- return false;
46
- const s = step;
47
- if (typeof s.id !== 'string' || !s.id)
48
- return false;
49
- if (typeof s.toolName !== 'string' || !s.toolName)
50
- return false;
51
- }
52
- return true;
53
- }
54
- static toDefinition(json) {
55
- return {
56
- id: json.id,
57
- displayName: json.displayName,
58
- description: json.description ?? '',
59
- tags: json.tags ?? [],
60
- timeoutMs: json.timeoutMs,
61
- steps: json.steps.map((s) => ({
62
- id: s.id,
63
- toolName: s.toolName,
64
- input: s.input,
65
- inputFrom: s.inputFrom,
66
- timeoutMs: s.timeoutMs,
67
- optional: s.optional,
68
- })),
69
- };
70
50
  }
51
+ return true;
52
+ }
53
+ function toDefinition(json) {
54
+ return {
55
+ id: json.id,
56
+ displayName: json.displayName,
57
+ description: json.description ?? '',
58
+ tags: json.tags ?? [],
59
+ timeoutMs: json.timeoutMs,
60
+ steps: json.steps.map((s) => ({
61
+ id: s.id,
62
+ toolName: s.toolName,
63
+ input: s.input,
64
+ inputFrom: s.inputFrom,
65
+ timeoutMs: s.timeoutMs,
66
+ optional: s.optional,
67
+ })),
68
+ };
71
69
  }
70
+ export const MacroConfigLoader = {
71
+ loadFromDirectory,
72
+ validate,
73
+ };
@@ -13,9 +13,13 @@ export class MacroRunner {
13
13
  .buildGraph(() => {
14
14
  const seq = new SequenceNodeBuilder(`${def.id}-root`);
15
15
  for (const step of def.steps) {
16
- seq.step(new ToolNodeBuilder(step.id, step.toolName)
16
+ const toolBuilder = new ToolNodeBuilder(step.id, step.toolName)
17
17
  .input(step.input ?? {})
18
- .timeout(step.timeoutMs ?? 0));
18
+ .timeout(step.timeoutMs ?? 0);
19
+ if (step.inputFrom) {
20
+ toolBuilder.inputFrom(step.inputFrom);
21
+ }
22
+ seq.step(toolBuilder);
19
23
  }
20
24
  return seq;
21
25
  })
@@ -1,5 +1,4 @@
1
- import { deobfuscateAstFlow } from './deobfuscate-ast-flow.js';
2
- import { unpackerFlow } from './unpacker-flow.js';
3
1
  import type { MacroDefinition } from '../types.js';
2
+ export declare const deobfuscateAstFlow: MacroDefinition;
3
+ export declare const unpackerFlow: MacroDefinition;
4
4
  export declare const BUILTIN_MACROS: MacroDefinition[];
5
- export { deobfuscateAstFlow, unpackerFlow };
@@ -1,7 +1,51 @@
1
- import { deobfuscateAstFlow } from './deobfuscate-ast-flow.js';
2
- import { unpackerFlow } from './unpacker-flow.js';
3
- export const BUILTIN_MACROS = [
4
- deobfuscateAstFlow,
5
- unpackerFlow,
6
- ];
7
- export { deobfuscateAstFlow, unpackerFlow };
1
+ export const deobfuscateAstFlow = {
2
+ id: 'deobfuscate_ast_flow',
3
+ displayName: 'Deobfuscate AST Flow',
4
+ description: 'Chain: deobfuscate → advanced deobfuscation → extract function tree',
5
+ tags: ['analysis', 'deobfuscation', 'ast'],
6
+ timeoutMs: 60_000,
7
+ steps: [
8
+ {
9
+ id: 'deobfuscate',
10
+ toolName: 'deobfuscate',
11
+ input: {},
12
+ },
13
+ {
14
+ id: 'advanced_deobfuscate',
15
+ toolName: 'advanced_deobfuscate',
16
+ inputFrom: { code: 'deobfuscate.code' },
17
+ optional: true,
18
+ },
19
+ {
20
+ id: 'extract_functions',
21
+ toolName: 'extract_function_tree',
22
+ inputFrom: { code: 'deobfuscate.code' },
23
+ },
24
+ ],
25
+ };
26
+ export const unpackerFlow = {
27
+ id: 'unpacker_flow',
28
+ displayName: 'Unpacker Flow',
29
+ description: 'Detect packer type → extract inner code → deobfuscate → beautify output',
30
+ tags: ['analysis', 'unpacking', 'deobfuscation'],
31
+ timeoutMs: 90_000,
32
+ steps: [
33
+ {
34
+ id: 'detect_and_unpack',
35
+ toolName: 'deobfuscate',
36
+ input: { unpack: true },
37
+ },
38
+ {
39
+ id: 'deep_deobfuscate',
40
+ toolName: 'advanced_deobfuscate',
41
+ inputFrom: { code: 'detect_and_unpack.code' },
42
+ optional: true,
43
+ },
44
+ {
45
+ id: 'beautify',
46
+ toolName: 'ast_transform_beautify',
47
+ inputFrom: { code: 'detect_and_unpack.code' },
48
+ },
49
+ ],
50
+ };
51
+ export const BUILTIN_MACROS = [deobfuscateAstFlow, unpackerFlow];
@@ -1 +1 @@
1
- export { type ToolProfileId, type ToolArgs, type ToolResponse, type PluginState, type PluginLifecycleContext, type ExtensionToolHandler, type ExtensionToolDefinition, ExtensionBuilder, createExtension, jsonResponse, errorResponse, } from '../../../packages/extension-sdk/src/plugin.js';
1
+ export { type ToolProfileId, type ToolArgs, type ToolResponse, type PluginState, type PluginLifecycleContext, type ExtensionToolHandler, type ExtensionToolDefinition, type ExtensionWorkflowDefinition, ExtensionBuilder, createExtension, jsonResponse, errorResponse, } from '../../../packages/extension-sdk/src/plugin.js';
@@ -19,7 +19,7 @@ export interface DomainManifest<TDepKey extends string = string, THandler = unkn
19
19
  readonly secondaryDepKeys?: readonly string[];
20
20
  readonly profiles: readonly ToolProfileId[];
21
21
  readonly registrations: readonly ToolRegistration[];
22
- readonly ensure: (ctx: MCPServerContext) => THandler;
22
+ readonly ensure: (ctx: MCPServerContext) => THandler | Promise<THandler>;
23
23
  readonly workflowRule?: {
24
24
  readonly patterns: readonly RegExp[];
25
25
  readonly priority: number;
@@ -1,7 +1,9 @@
1
1
  import { readdir, stat } from 'node:fs/promises';
2
- import { dirname, join, relative, sep } from 'node:path';
2
+ import { join, relative, sep } from 'node:path';
3
3
  import { fileURLToPath } from 'node:url';
4
4
  import { logger } from '../../utils/logger.js';
5
+ const registryDirUrl = new URL('.', import.meta.url);
6
+ const registryDir = fileURLToPath(registryDirUrl);
5
7
  function isDomainManifest(value) {
6
8
  if (!value || typeof value !== 'object')
7
9
  return false;
@@ -26,7 +28,7 @@ function extractManifest(mod) {
26
28
  return null;
27
29
  }
28
30
  async function discoverManifestPaths() {
29
- const domainsDir = fileURLToPath(new URL('../domains/', import.meta.url));
31
+ const domainsDir = fileURLToPath(new URL('../domains/', registryDirUrl));
30
32
  let entries;
31
33
  try {
32
34
  entries = await readdir(domainsDir, { withFileTypes: true });
@@ -52,8 +54,7 @@ async function discoverManifestPaths() {
52
54
  return resolved.filter((value) => value !== null);
53
55
  }
54
56
  function toImportSpecifier(absPath) {
55
- const currentDir = dirname(fileURLToPath(import.meta.url));
56
- const relPath = relative(currentDir, absPath).split(sep).join('/');
57
+ const relPath = relative(registryDir, absPath).split(sep).join('/');
57
58
  if (relPath.startsWith('.')) {
58
59
  return relPath;
59
60
  }
@@ -3,7 +3,6 @@ import { PageController } from '../../modules/collector/PageController.js';
3
3
  import { DOMInspector } from '../../modules/collector/DOMInspector.js';
4
4
  import { ScriptManager } from '../../modules/debugger/ScriptManager.js';
5
5
  import { ConsoleMonitor } from '../../modules/monitor/ConsoleMonitor.js';
6
- import { LLMService } from '../../services/LLMService.js';
7
6
  export function ensureBrowserCore(ctx) {
8
7
  if (!ctx.collector) {
9
8
  ctx.collector = new CodeCollector(ctx.config.puppeteer);
@@ -17,6 +16,4 @@ export function ensureBrowserCore(ctx) {
17
16
  ctx.scriptManager = new ScriptManager(ctx.collector);
18
17
  if (!ctx.consoleMonitor)
19
18
  ctx.consoleMonitor = new ConsoleMonitor(ctx.collector);
20
- if (!ctx.llm)
21
- ctx.llm = new LLMService(ctx.config.llm);
22
19
  }
@@ -1,3 +1,7 @@
1
+ function isSubset(a, b) {
2
+ const bSet = new Set(b);
3
+ return a.every((x) => bSet.has(x));
4
+ }
1
5
  import { discoverDomainManifests } from '../registry/discovery.js';
2
6
  import { logger } from '../../utils/logger.js';
3
7
  let _manifests = null;
@@ -109,10 +113,6 @@ export function buildProfileDomains() {
109
113
  for (const [p, domains] of Object.entries(profiles)) {
110
114
  result[p] = [...domains];
111
115
  }
112
- const isSubset = (a, b) => {
113
- const bSet = new Set(b);
114
- return a.every((x) => bSet.has(x));
115
- };
116
116
  if (!isSubset(result['search'], result['workflow'])) {
117
117
  logger.warn('[registry] Profile hierarchy: search not subset of workflow');
118
118
  }
@@ -0,0 +1,46 @@
1
+ import type { Tool } from '@modelcontextprotocol/sdk/types.js';
2
+ type JsonSchemaType = 'string' | 'number' | 'integer' | 'boolean' | 'object' | 'array';
3
+ interface PropertySchema {
4
+ type?: JsonSchemaType;
5
+ description?: string;
6
+ default?: unknown;
7
+ enum?: readonly string[];
8
+ items?: PropertySchema | Record<string, unknown>;
9
+ properties?: Record<string, PropertySchema>;
10
+ required?: string[];
11
+ [key: string]: unknown;
12
+ }
13
+ interface ParamOpts {
14
+ default?: unknown;
15
+ }
16
+ declare class ToolBuilder {
17
+ private readonly _name;
18
+ private _description;
19
+ private readonly _properties;
20
+ private readonly _required;
21
+ private _readOnlyHint;
22
+ private _destructiveHint;
23
+ private _idempotentHint;
24
+ private _openWorldHint;
25
+ constructor(name: string);
26
+ desc(description: string): this;
27
+ string(name: string, description: string, opts?: ParamOpts): this;
28
+ number(name: string, description: string, opts?: ParamOpts): this;
29
+ integer(name: string, description: string, opts?: ParamOpts): this;
30
+ boolean(name: string, description: string, opts?: ParamOpts): this;
31
+ enum(name: string, values: readonly string[], description: string, opts?: ParamOpts): this;
32
+ array(name: string, items: PropertySchema | Record<string, unknown>, description: string): this;
33
+ object(name: string, props: Record<string, PropertySchema>, description: string, opts?: {
34
+ required?: string[];
35
+ }): this;
36
+ prop(name: string, schema: PropertySchema): this;
37
+ required(...names: string[]): this;
38
+ readOnly(): this;
39
+ destructive(): this;
40
+ idempotent(): this;
41
+ openWorld(): this;
42
+ build(): Tool;
43
+ private defaults;
44
+ }
45
+ export declare function tool(name: string): ToolBuilder;
46
+ export {};
@@ -0,0 +1,105 @@
1
+ class ToolBuilder {
2
+ _name;
3
+ _description = '';
4
+ _properties = {};
5
+ _required = [];
6
+ _readOnlyHint = false;
7
+ _destructiveHint = false;
8
+ _idempotentHint = false;
9
+ _openWorldHint = false;
10
+ constructor(name) {
11
+ this._name = name;
12
+ }
13
+ desc(description) {
14
+ this._description = description;
15
+ return this;
16
+ }
17
+ string(name, description, opts) {
18
+ this._properties[name] = { type: 'string', description, ...this.defaults(opts) };
19
+ return this;
20
+ }
21
+ number(name, description, opts) {
22
+ this._properties[name] = { type: 'number', description, ...this.defaults(opts) };
23
+ return this;
24
+ }
25
+ integer(name, description, opts) {
26
+ this._properties[name] = { type: 'integer', description, ...this.defaults(opts) };
27
+ return this;
28
+ }
29
+ boolean(name, description, opts) {
30
+ this._properties[name] = { type: 'boolean', description, ...this.defaults(opts) };
31
+ return this;
32
+ }
33
+ enum(name, values, description, opts) {
34
+ this._properties[name] = {
35
+ type: 'string',
36
+ enum: values,
37
+ description,
38
+ ...this.defaults(opts),
39
+ };
40
+ return this;
41
+ }
42
+ array(name, items, description) {
43
+ this._properties[name] = { type: 'array', items, description };
44
+ return this;
45
+ }
46
+ object(name, props, description, opts) {
47
+ this._properties[name] = {
48
+ type: 'object',
49
+ properties: props,
50
+ description,
51
+ ...(opts?.required ? { required: opts.required } : {}),
52
+ };
53
+ return this;
54
+ }
55
+ prop(name, schema) {
56
+ this._properties[name] = schema;
57
+ return this;
58
+ }
59
+ required(...names) {
60
+ this._required.push(...names);
61
+ return this;
62
+ }
63
+ readOnly() {
64
+ this._readOnlyHint = true;
65
+ return this;
66
+ }
67
+ destructive() {
68
+ this._destructiveHint = true;
69
+ return this;
70
+ }
71
+ idempotent() {
72
+ this._idempotentHint = true;
73
+ return this;
74
+ }
75
+ openWorld() {
76
+ this._openWorldHint = true;
77
+ return this;
78
+ }
79
+ build() {
80
+ const result = {
81
+ name: this._name,
82
+ description: this._description,
83
+ inputSchema: {
84
+ type: 'object',
85
+ properties: this._properties,
86
+ ...(this._required.length > 0 ? { required: this._required } : {}),
87
+ },
88
+ annotations: {
89
+ readOnlyHint: this._readOnlyHint,
90
+ destructiveHint: this._destructiveHint,
91
+ idempotentHint: this._idempotentHint,
92
+ openWorldHint: this._openWorldHint,
93
+ },
94
+ };
95
+ return result;
96
+ }
97
+ defaults(opts) {
98
+ if (opts?.default === undefined)
99
+ return {};
100
+ return { default: opts.default };
101
+ }
102
+ }
103
+ export function tool(name) {
104
+ return new ToolBuilder(name);
105
+ }
@@ -1,7 +1,8 @@
1
1
  import { getQuickJS } from 'quickjs-emscripten';
2
2
  import { SANDBOX_HELPER_SOURCE } from '../sandbox/SandboxHelpers.js';
3
- const DEFAULT_TIMEOUT_MS = 1_000;
4
- const DEFAULT_MEMORY_LIMIT_BYTES = 8 * 1024 * 1024;
3
+ import { SANDBOX_EXEC_TIMEOUT_MS, SANDBOX_MEMORY_LIMIT_MB } from '../../constants.js';
4
+ const DEFAULT_TIMEOUT_MS = SANDBOX_EXEC_TIMEOUT_MS;
5
+ const DEFAULT_MEMORY_LIMIT_BYTES = SANDBOX_MEMORY_LIMIT_MB * 1024 * 1024;
5
6
  const DEFAULT_MAX_BRIDGE_CALLS = 10;
6
7
  function marshalToQuickJS(ctx, value) {
7
8
  if (value === null || value === undefined)
@@ -143,7 +144,7 @@ export class QuickJSSandbox {
143
144
  let round = 0;
144
145
  while (round <= maxBridgeCalls) {
145
146
  const roundGlobals = {
146
- ...(options.globals ?? {}),
147
+ ...options.globals,
147
148
  __bridgeRound: round,
148
149
  };
149
150
  if (round > 0) {
@@ -178,7 +179,11 @@ export class QuickJSSandbox {
178
179
  catch (err) {
179
180
  const errorMsg = err instanceof Error ? err.message : String(err);
180
181
  roundResults[req.id] = { __error: true, message: errorMsg };
181
- allBridgeCalls.push({ toolName: req.toolName, args: req.args, result: { __error: true, message: errorMsg } });
182
+ allBridgeCalls.push({
183
+ toolName: req.toolName,
184
+ args: req.args,
185
+ result: { __error: true, message: errorMsg },
186
+ });
182
187
  }
183
188
  }
184
189
  bridgeResults = { ...bridgeResults, ...roundResults };
@@ -223,7 +228,13 @@ export class QuickJSSandbox {
223
228
  const errorMsg = context.dump(result.error);
224
229
  result.error.dispose();
225
230
  if (timedOut) {
226
- return { ok: false, error: 'Execution timed out', timedOut: true, durationMs: Date.now() - startTime, logs };
231
+ return {
232
+ ok: false,
233
+ error: 'Execution timed out',
234
+ timedOut: true,
235
+ durationMs: Date.now() - startTime,
236
+ logs,
237
+ };
227
238
  }
228
239
  return {
229
240
  ok: false,